re2c-1.0.1/0000755000175000017500000000000013143420716007346 500000000000000re2c-1.0.1/aclocal.m40000644000175000017500000012425213143420400011122 00000000000000# generated automatically by aclocal 1.15.1 -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # Copyright (C) 2002-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.15' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.15.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.15.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_COND_IF -*- Autoconf -*- # Copyright (C) 2008-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_COND_IF # _AM_COND_ELSE # _AM_COND_ENDIF # -------------- # These macros are only used for tracing. m4_define([_AM_COND_IF]) m4_define([_AM_COND_ELSE]) m4_define([_AM_COND_ENDIF]) # AM_COND_IF(COND, [IF-TRUE], [IF-FALSE]) # --------------------------------------- # If the shell condition COND is true, execute IF-TRUE, otherwise execute # IF-FALSE. Allow automake to learn about conditional instantiating macros # (the AC_CONFIG_FOOS). AC_DEFUN([AM_COND_IF], [m4_ifndef([_AM_COND_VALUE_$1], [m4_fatal([$0: no such condition "$1"])])dnl _AM_COND_IF([$1])dnl if test -z "$$1_TRUE"; then : m4_n([$2])[]dnl m4_ifval([$3], [_AM_COND_ELSE([$1])dnl else $3 ])dnl _AM_COND_ENDIF([$1])dnl fi[]dnl ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each '.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR re2c-1.0.1/examples/0000755000175000017500000000000013140400716011157 500000000000000re2c-1.0.1/examples/push_model/0000755000175000017500000000000013063315631013323 500000000000000re2c-1.0.1/examples/push_model/push.re0000644000175000017500000002247713063315631014566 00000000000000/* * A push-model scanner example for re2c -f * Written Mon Apr 11 2005 by mgix@mgix.com * This file is in the public domain. * */ // ---------------------------------------------------------------------- #include #include #include #include #include #if defined(WIN32) typedef signed char int8_t; typedef signed short int16_t; typedef signed int int32_t; typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t; #else #include #include #ifndef O_BINARY #define O_BINARY 0 #endif #endif // ---------------------------------------------------------------------- #define TOKENS \ \ TOK(kEOF) \ TOK(kEOL) \ TOK(kUnknown) \ TOK(kIdentifier) \ TOK(kDecimalConstant) \ \ TOK(kEqual) \ TOK(kLeftParen) \ TOK(kRightParen) \ TOK(kMinus) \ TOK(kPlus) \ TOK(kStar) \ TOK(kSlash) \ \ TOK(kIf) \ TOK(kFor) \ TOK(kElse) \ TOK(kGoto) \ TOK(kBreak) \ TOK(kWhile) \ TOK(kReturn) \ // ---------------------------------------------------------------------- static const char *tokenNames[] = { #define TOK(x) #x, TOKENS #undef TOK }; // ---------------------------------------------------------------------- class PushScanner { public: enum Token { #define TOK(x) x, TOKENS #undef TOK }; private: bool eof; int32_t state; uint8_t *limit; uint8_t *start; uint8_t *cursor; uint8_t *marker; uint8_t *buffer; uint8_t *bufferEnd; uint8_t yych; uint32_t yyaccept; public: // ---------------------------------------------------------------------- PushScanner() { limit = 0; start = 0; state = -1; cursor = 0; marker = 0; buffer = 0; eof = false; bufferEnd = 0; } // ---------------------------------------------------------------------- ~PushScanner() { } // ---------------------------------------------------------------------- void send( Token token ) { size_t tokenSize = cursor-start; const char *tokenName = tokenNames[token]; printf( "scanner is pushing out a token of type %d (%s)", token, tokenName ); if(token==kEOF) putchar('\n'); else { size_t tokenNameSize = strlen(tokenNames[token]); size_t padSize = 20-(20"); fwrite( start, tokenSize, 1, stdout ); printf("<----\n"); } } // ---------------------------------------------------------------------- uint32_t push( const void *input, ssize_t inputSize ) { printf( "scanner is receiving a new data batch of length %d\n" "scanner continues with saved state = %d\n", inputSize, state ); /* * Data source is signaling end of file when batch size * is less than maxFill. This is slightly annoying because * maxFill is a value that can only be known after re2c does * its thing. Practically though, maxFill is never bigger than * the longest keyword, so given our grammar, 32 is a safe bet. */ uint8_t null[64]; const ssize_t maxFill = 32; if(inputSize #include #include char * tokendup(const char *t, const char *l) { size_t n = l -t + 1; char *r = (char*)malloc(n); memmove(r, t, n-1); r[n] = '\0'; return r; } int scan(char *s, int l) { char *p = s; char *q = 0; char *t; #define YYCTYPE char #define YYCURSOR p #define YYLIMIT (s+l+2) #define YYMARKER q #define YYFILL(n) { printf("OOD\n"); return 2; } for(;;) { t = p; /*!re2c re2c:indent:top = 2; DIGIT = [0-9] ; OCT = "0" DIGIT+ ; INT = "0" | ( [1-9] DIGIT* ) ; OCT { t = tokendup(t, p); printf("Oct: %s\n", t); free(t); continue; } INT { t = tokendup(t, p); printf("Num: %s\n", t); free(t); continue; } "+" { printf("+\n"); continue; } "-" { printf("+\n"); continue; } "\000" { printf("EOF\n"); return 0; } [^] { printf("ERR\n"); return 1; } */ } return 0; } int main(int argc, char **argv) { if (argc > 1) { return scan(argv[1], strlen(argv[1])); } else { fprintf(stderr, "%s \n", argv[0]); return 0; } } re2c-1.0.1/examples/001_upn_calculator/calc_008.b.re0000644000175000017500000000710713063315631016545 00000000000000/* re2c lesson 001_upn_calculator, calc_008, (c) M. Boerger 2006 - 2007 */ /*!ignore:re2c - using -b with signed character input . Since the code is being generated with -b switch re2c requires the internal character variable yych to use an unsigned character type. For that reason the previous lessons had a conversion at the beginning of their scan() function. Other re2c generated code often have the scanners work completely on unsigned input. Thus requesting a conversion. To avoid the conversion on input, re2c allows to do the conversion when reading the internal yych variable. To enable that conversion you need to use the implace configuration 're2c:yych:conversion' and set it to 1. This will change the generated code to insert conversions to YYCTYPE whenever yych is being read. - More inplace configurations for better/nicer code . re2c allows to overwrite the generation of any define, label or variable used in the generated code. For example we overwrite the 'yych' variable name to 'curr' using inplace configuration 're2c:variable:yych = curr;'. . We further more use inplace configurations instead of defines. This allows to use correct conversions to 'unsigned char' instead of having to convert to 'YYCTYPE' when placing 're2c:define:YYCTYPE = "unsigned char";' infront of 're2c:yych:conversion'. Note that we have to use apostrophies for the first setting as it contains a space. . Last but not least we use 're2c:labelprefix = scan' to change the prefix of generated labels. */ #include #include #include #define DEBUG(stmt) stmt int stack[4]; int depth = 0; int push_num(const char *t, const char *l, int radix) { int num = 0; if (depth >= sizeof(stack)) { return 3; } --t; while(++t < l) { num = num * radix + (*t - '0'); } DEBUG(printf("Num: %d\n", num)); stack[depth++] = num; return 0; } int stack_add() { if (depth < 2) return 4; --depth; stack[depth-1] = stack[depth-1] + stack[depth]; DEBUG(printf("+\n")); return 0; } int stack_sub() { if (depth < 2) return 4; --depth; stack[depth-1] = stack[depth-1] - stack[depth]; DEBUG(printf("+\n")); return 0; } int scan(char *p) { char *t; int res = 0; while(!res) { t = p; /*!re2c re2c:define:YYCTYPE = "unsigned char"; re2c:define:YYCURSOR = p; re2c:variable:yych = curr; re2c:indent:top = 2; re2c:yyfill:enable = 0; re2c:yych:conversion = 1; re2c:labelprefix = scan; DIGIT = [0-9] ; OCT = "0" DIGIT+ ; INT = "0" | ( [1-9] DIGIT* ) ; WS = [ \t]+ ; WS { continue; } OCT { res = push_num(t, p, 8); continue; } INT { res = push_num(t, p, 10); continue; } "+" { res = stack_add(); continue; } "-" { res = stack_sub(); continue; } "\000" { res = depth == 1 ? 0 : 2; break; } [^] { res = 1; continue; } */ } return res; } int main(int argc, char **argv) { if (argc > 1) { char *inp; int res = 0, argp = 0, len; while(!res && ++argp < argc) { inp = strdup(argv[argp]); len = strlen(inp); if (inp[0] == '\"' && inp[len-1] == '\"') { inp[len - 1] = '\0'; ++inp; } res = scan(inp); free(inp); } switch(res) { case 0: printf("Result: %d\n", stack[0]); return 0; case 1: fprintf(stderr, "Illegal character in input.\n"); return 1; case 2: fprintf(stderr, "Premature end of input.\n"); return 2; case 3: fprintf(stderr, "Stack overflow.\n"); return 3; case 4: fprintf(stderr, "Stack underflow.\n"); return 4; } } else { fprintf(stderr, "%s \n", argv[0]); return 0; } } re2c-1.0.1/examples/001_upn_calculator/calc_001.re0000644000175000017500000000624613063315631016321 00000000000000/* re2c lesson 001_upn_calculator, calc_001, (c) M. Boerger 2006 - 2007 */ /*!ignore:re2c - basic interface for string reading . We define the macros YYCTYPE, YYCURSOR, YYLIMIT, YYMARKER, YYFILL . YYCTYPE is the type re2c operates on or in other words the type that it generates code for. While it is not a big difference when we were using 'unsigned char' here we would need to run re2c with option -w to fully support types with sieof() > 1. . YYCURSOR is used internally and holds the current scanner position. In expression handlers, the code blocks after re2c expressions, this can be used to identify the end of the token. . YYMARKER is not always being used so we set an initial value to avoid a compiler warning. Here we could also omit it compleley. . YYLIMIT stores the end of the input. Unfortunatley we have to use strlen() in this lesson. In the next example we see one way to get rid of it. . We use a 'for(;;)'-loop around the scanner block. We could have used a 'while(1)'-loop instead but some compilers generate a warning for it. . To make the output more readable we use 're2c:indent:top' scanner configuration that configures re2c to prepend a single tab (the default) to the beginning of each output line. . The following lines are expressions and for each expression we output the token name and continue the scanner loop. . The second last token detects the end of our input, the terminating zero in our input string. In other scanners detecting the end of input may vary. For example binary code may contain \0 as valid input. . The last expression accepts any input character. It tells re2c to accept the opposit of the empty range. This includes numbers and our tokens but as re2c goes from top to botton when evaluating the expressions this is no problem. . The first three rules show that re2c actually prioritizes the expressions from top to bottom. Octal number require a starting "0" and the actual number. Normal numbers start with a digit greater 0. And zero is finally a special case. A single "0" is detected by the last rule of this set. And valid ocal number is already being detected by the first rule. This even includes multi "0" sequences that in octal notation also means zero. Another way would be to only use two rules: "0" [0-9]+ "0" | ( [1-9] [0-9]* ) A full description of re2c rule syntax can be found in the manual. */ #include #include #include int scan(char *s, int l) { char *p = s; char *q = 0; #define YYCTYPE char #define YYCURSOR p #define YYLIMIT (s+l) #define YYMARKER q #define YYFILL(n) for(;;) { /*!re2c re2c:indent:top = 2; "0"[0-9]+ { printf("Oct\n"); continue; } [1-9][0-9]* { printf("Num\n"); continue; } "0" { printf("Num\n"); continue; } "+" { printf("+\n"); continue; } "-" { printf("-\n"); continue; } "\000" { printf("EOF\n"); return 0; } [^] { printf("ERR\n"); return 1; } */ } } int main(int argc, char **argv) { if (argc > 1) { return scan(argv[1], strlen(argv[1])); } else { fprintf(stderr, "%s \n", argv[0]); return 1; } } re2c-1.0.1/examples/001_upn_calculator/calc_007.b.re0000644000175000017500000000453313063315631016544 00000000000000/* re2c lesson 001_upn_calculator, calc_007, (c) M. Boerger 2006 - 2007 */ /*!ignore:re2c - optimizing the generated code by using -b command line switch of re2c . This tells re2c to generate code that uses a decision table. The -b switch also contains the -s behavior. And -b also requires the input to be unsigned chars. */ #include #include #include #define DEBUG(stmt) stmt int stack[4]; int depth = 0; int push_num(const unsigned char *t, const unsigned char *l, int radix) { int num = 0; if (depth >= sizeof(stack)) { return 3; } --t; while(++t < l) { num = num * radix + (*t - (unsigned char)'0'); } DEBUG(printf("Num: %d\n", num)); stack[depth++] = num; return 0; } int stack_add() { if (depth < 2) return 4; --depth; stack[depth-1] = stack[depth-1] + stack[depth]; DEBUG(printf("+\n")); return 0; } int stack_sub() { if (depth < 2) return 4; --depth; stack[depth-1] = stack[depth-1] - stack[depth]; DEBUG(printf("+\n")); return 0; } int scan(char *s) { unsigned char *p = (unsigned char*)s; unsigned char *t; int res = 0; #define YYCTYPE unsigned char #define YYCURSOR p while(!res) { t = p; /*!re2c re2c:indent:top = 2; re2c:yyfill:enable = 0; DIGIT = [0-9] ; OCT = "0" DIGIT+ ; INT = "0" | ( [1-9] DIGIT* ) ; WS = [ \t]+ ; WS { continue; } OCT { res = push_num(t, p, 8); continue; } INT { res = push_num(t, p, 10); continue; } "+" { res = stack_add(); continue; } "-" { res = stack_sub(); continue; } "\000" { res = depth == 1 ? 0 : 2; break; } [^] { res = 1; continue; } */ } return res; } int main(int argc, char **argv) { if (argc > 1) { char *inp; int res = 0, argp = 0, len; while(!res && ++argp < argc) { inp = strdup(argv[argp]); len = strlen(inp); if (inp[0] == '\"' && inp[len-1] == '\"') { inp[len - 1] = '\0'; ++inp; } res = scan(inp); free(inp); } switch(res) { case 0: printf("Result: %d\n", stack[0]); return 0; case 1: fprintf(stderr, "Illegal character in input.\n"); return 1; case 2: fprintf(stderr, "Premature end of input.\n"); return 2; case 3: fprintf(stderr, "Stack overflow.\n"); return 3; case 4: fprintf(stderr, "Stack underflow.\n"); return 4; } } else { fprintf(stderr, "%s \n", argv[0]); return 0; } } re2c-1.0.1/examples/001_upn_calculator/calc_002.re0000644000175000017500000000326713063315631016322 00000000000000/* re2c lesson 001_upn_calculator, calc_002, (c) M. Boerger 2006 - 2007 */ /*!ignore:re2c - making use of YYFILL . Here we modified the scanner to not require strlen() on the call. Instead we compute limit on the fly. That is whenever more input is needed we search for the terminating \0 in the next n chars the scanner needs. . If there is not enough input we quit the scanner. . Note that in lesson_001 YYLIMIT was a character pointer computed only once. Here is of course also of type YYCTYPE but a variable that gets reevaluated by YYFILL(). . To make the code smaller we take advantage of the fact that our loop has no break so far. This allows us to use break here and have the code that is used for YYFILL() not contain the printf in every occurence. That way the generated code gets smaller. */ #include #include #include int fill(char *p, int n, char **l) { while (*++p && n--) ; * l = p; return n <= 0; } int scan(char *s) { char *p = s; char *l = s; char *q = 0; #define YYCTYPE char #define YYCURSOR p #define YYLIMIT l #define YYMARKER q #define YYFILL(n) { if (!fill(p, n, &l)) break; } for(;;) { /*!re2c re2c:indent:top = 2; "0"[0-9]+ { printf("Oct\n"); continue; } [1-9][0-9]* { printf("Num\n"); continue; } "0" { printf("Num\n"); continue; } "+" { printf("+\n"); continue; } "-" { printf("+\n"); continue; } "\000" { printf("EOF\n"); return 0; } [^] { printf("ERR\n"); return 1; } */ } printf("OOD\n"); return 2; } int main(int argc, char **argv) { if (argc > 1) { return scan(argv[1]); } else { fprintf(stderr, "%s \n", argv[0]); return 0; } } re2c-1.0.1/examples/001_upn_calculator/README0000644000175000017500000000701213063315631015357 00000000000000re2c lesson 001_upn_calculator, (c) M. Boerger 2006 This lesson gets you started with re2c. In the end you will have an easy RPN (reverse polish notation) calculator for use at command line. You will learn about the basic interface of re2c when scanning input strings. How to detect the end of the input and use that to stop scanning in order to avoid problems. Once you have successfully installed re2c you can use it to generate *.c files from the *.re files presented in this lesson. Actually the expected *.c files are already present. So you should name them *.cc or something alike or just give them a different name like test.c. To do so you simply change into the directory and execute the following command: re2c calc_001.re > test.c Then use your compiler to compile that code and run it. If you are using gcc you simply do the following: gcc -o test.o test.c ./test.o If you are using windows you might want to read till the end of this lesson. When you want to debug the code it helps to make re2c generate working #line information. To do so you simply specify the output file using the -o switch followed by the output filename: re2c -o test.c calc_001.re The input files *.re each contain basic step by comments that explain what is going on and what you can see in the examples. In order to optimize the generated code we will use the -s command line switch of re2c. This tells re2c to generate code that uses if statements rather then endless switch/case expressions where appropriate. Note that the file name extension is actually '.s.re' to tell the test system to use the -s switch. To invoke re2 you do the following: re2c -s -o test.c calc_006.s.re Finally we use the -b switch to have the code use a decision table. The -b switch also contains the -s behavior. re2c -b -o test.c calc_007.b.re ------------------------------------------------------------------------------- For windows users Lynn Allan provided some additional stuff to get you started in the Microsoft world. This addon resides in the windows subdirectory and gives you something to expereiment with. The code in that directory is based on the first step and has the following changes: * vc6 .dsp/.dsw and vc7/vc8 .sln/.vcproj project files that have "Custom Build Steps" that can tell when main.re changes, and know how to generate main.c from main.re. They assume that you unpacked the zip package and have re2c itself build or installed in Release and Release-2005 directory respectively. If re2c cannot be found you need to modify the custom build step and correct the path to re2c. * BuildAndRun.bat to do command line rec2 and then cl and then run the executable (discontinues with message if errors). * built-in cppunit-like test to confirm it worked as expected. * array of test strings "fed" to scan rather than file contents to facilitate testing and also reduce the newbie learning curve. * HiResTimer output for 10,000 loops and 100,000 loops. While this might be excessive for this lesson, it illustrates how to do it for subsequent lessons and your own stuff using windows. Also it shows that Release build is as fast as strncmp for this test and can probably be made significantly faster. * If you want to build the other steps of this lesson using windows tools simply copy the *.re files into the windows directory as main.re and rebuild. ------------------------------------------------------------------------------- Sidenote: UPN is the german translation of RPN, somehow hardcoded into the authors brain :-) re2c-1.0.1/examples/001_upn_calculator/calc_006.s.re0000644000175000017500000000761313063315631016566 00000000000000/* re2c lesson 001_upn_calculator, calc_006, (c) M. Boerger 2006 - 2007 */ /*!ignore:re2c - avoiding YYFILL() . We use the inplace configuration re2c:yyfill to suppress generation of YYFILL() blocks. This of course means we no longer have to provide the macro. . We also drop the YYMARKER stuff since we know that re2c does not generate it for this example. . Since re2c does no longer check for out of data situations we must do this. For that reason we first reintroduce our zero rule and second we need to ensure that the scanner does not take more than one bytes in one go. In the example suppose "0" is passed. The scanner reads the first "0" and then is in an undecided state. The scanner can earliest decide on the next char what the token is. In case of a zero the input ends and it was a number, 0 to be precise. In case of a digit it is an octal number and the next character needs to be read. In case of any other character the scanner will detect an error with the any rule [^]. Now the above shows that the scanner may read two characters directly. But only if the first is a "0". So we could easily check that if the first char is "0" and the next char is a digit then yet another charcter is present. But we require our inut to be zero terminated. And that means we do not have to check anything for this scanner. However with other rule sets re2c might read more then one character in a row. In those cases it is normally hard to impossible to avoid YYFILL. - optimizing the generated code by using -s command line switch of re2c . This tells re2c to generate code that uses if statements rather then endless switch/case expressions where appropriate. Note that the generated code now requires the input to be unsigned char rather than char due to the way comparisons are generated. */ #include #include #include #define DEBUG(stmt) stmt int stack[4]; int depth = 0; int push_num(const unsigned char *t, const unsigned char *l, int radix) { int num = 0; if (depth >= sizeof(stack)) { return 3; } --t; while(++t < l) { num = num * radix + (*t - (unsigned char)'0'); } DEBUG(printf("Num: %d\n", num)); stack[depth++] = num; return 0; } int stack_add() { if (depth < 2) return 4; --depth; stack[depth-1] = stack[depth-1] + stack[depth]; DEBUG(printf("+\n")); return 0; } int stack_sub() { if (depth < 2) return 4; --depth; stack[depth-1] = stack[depth-1] - stack[depth]; DEBUG(printf("-\n")); return 0; } int scan(char *s) { unsigned char *p = (unsigned char*)s; unsigned char *t; int res = 0; #define YYCTYPE unsigned char #define YYCURSOR p while(!res) { t = p; /*!re2c re2c:indent:top = 2; re2c:yyfill:enable = 0; DIGIT = [0-9] ; OCT = "0" DIGIT+ ; INT = "0" | ( [1-9] DIGIT* ) ; WS = [ \t]+ ; WS { continue; } OCT { res = push_num(t, p, 8); continue; } INT { res = push_num(t, p, 10); continue; } "+" { res = stack_add(); continue; } "-" { res = stack_sub(); continue; } "\000" { res = depth == 1 ? 0 : 2; break; } [^] { res = 1; continue; } */ } return res; } int main(int argc, char **argv) { if (argc > 1) { char *inp; int res = 0, argp = 0, len; while(!res && ++argp < argc) { inp = strdup(argv[argp]); len = strlen(inp); if (inp[0] == '\"' && inp[len-1] == '\"') { inp[len - 1] = '\0'; ++inp; } res = scan(inp); free(inp); } switch(res) { case 0: printf("Result: %d\n", stack[0]); return 0; case 1: fprintf(stderr, "Illegal character in input.\n"); return 1; case 2: fprintf(stderr, "Premature end of input.\n"); return 2; case 3: fprintf(stderr, "Stack overflow.\n"); return 3; case 4: fprintf(stderr, "Stack underflow.\n"); return 4; } } else { fprintf(stderr, "%s \n", argv[0]); return 0; } } re2c-1.0.1/examples/001_upn_calculator/windows/0000755000175000017500000000000013063315631016251 500000000000000re2c-1.0.1/examples/001_upn_calculator/windows/main.b.re0000644000175000017500000002245213063315631017672 00000000000000/* re2c lesson 001_upn_calculator, main.b.re, (c) M. Boerger, L. Allan 2006 */ /*!ignore:re2c - basic interface for string reading . We define the macros YYCTYPE, YYCURSOR, YYLIMIT, YYMARKER, YYFILL . YYCTYPE is the type re2c operates on or in other words the type that it generates code for. While it is not a big difference when we were using 'unsigned char' here we would need to run re2c with option -w to fully support types with sieof() > 1. . YYCURSOR is used internally and holds the current scanner position. In expression handlers, the code blocks after re2c expressions, this can be used to identify the end of the token. . YYMARKER is not always being used so we set an initial value to avoid a compiler warning. . YYLIMIT stores the end of the input. Unfortunatley we have to use strlen() in this lesson. In the next example we see one way to get rid of it. . We use a 'for(;;)'-loop around the scanner block. We could have used a 'while(1)'-loop instead but some compilers generate a warning for it. . To make the output more readable we use 're2c:indent:top' scanner configuration that configures re2c to prepend a single tab (the default) to the beginning of each output line. . The following lines are expressions and for each expression we output the token name and continue the scanner loop. . The second last token detects the end of our input, the terminating zero in our input string. In other scanners detecting the end of input may vary. For example binary code may contain \0 as valid input. . The last expression accepts any input character. It tells re2c to accept the opposit of the empty range. This includes numbers and our tokens but as re2c goes from top to botton when evaluating the expressions this is no problem. . The first three rules show that re2c actually prioritizes the expressions from top to bottom. Octal number require a starting "0" and the actual number. Normal numbers start with a digit greater 0. And zero is finally a special case. A single "0" is detected by the last rule of this set. And valid ocal number is already being detected by the first rule. This even includes multi "0" sequences that in octal notation also means zero. Another way would be to only use two rules: "0" [0-9]+ "0" | ( [1-9] [0-9]* ) A full description of re2c rule syntax can be found in the manual. */ #define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers #if _MSC_VER > 1200 #define WINVER 0x0400 // Change this to the appropriate value to target Windows 98 and Windows 2000 or later. #endif // Prevents warning from vc7.1 complaining about redefinition #include #include #include #include #include #include "HiResTimer.h" static char gTestBuf[1000] = ""; /** * @brief Setup HiResolution timer and confirm it is working ok */ void InitHiResTimerAndVerifyWorking(void) { double elapsed; HrtInit(); HrtSetPriority(ABOVE_NORMAL_PRIORITY_CLASS); HrtStart(); Sleep(100); elapsed = HrtElapsedMillis(); if ((elapsed < 90) || (elapsed > 110)) { printf("HiResTimer misbehaving: %f\n", elapsed); exit(2); } } /** * @brief Scan for numbers in different formats */ int ScanFullSpeed(char *pzStrToScan, size_t lenStrToScan) { unsigned char *pzCurScanPos = (unsigned char*)pzStrToScan; unsigned char *pzBacktrackInfo = 0; #define YYCTYPE unsigned char #define YYCURSOR pzCurScanPos #define YYLIMIT (pzStrToScan+lenStrToScan) #define YYMARKER pzBacktrackInfo #define YYFILL(n) for(;;) { /*!re2c re2c:indent:top = 2; [1-9][0-9]* { continue; } [0][0-9]+ { continue; } "+" { continue; } "-" { continue; } "\000" { return 0; } [^] { return 1; } */ } } /** * @brief Scan for numbers in different formats */ int scan(char *pzStrToScan, size_t lenStrToScan) { unsigned char *pzCurScanPos = (unsigned char*)pzStrToScan; unsigned char *pzBacktrackInfo = 0; #define YYCTYPE unsigned char #define YYCURSOR pzCurScanPos #define YYLIMIT (pzStrToScan+lenStrToScan) #define YYMARKER pzBacktrackInfo #define YYFILL(n) for(;;) { /*!re2c re2c:indent:top = 2; [1-9][0-9]* { printf("Num\n"); strcat(gTestBuf, "Num "); continue; } [0][0-9]+ { printf("Oct\n"); strcat(gTestBuf, "Oct "); continue; } "+" { printf("+\n"); strcat(gTestBuf, "+ "); continue; } "-" { printf("-\n"); strcat(gTestBuf, "- "); continue; } "\000" { printf("EOF\n"); return 0; } [^] { printf("ERR\n"); strcat(gTestBuf, "ERR "); return 1; } */ } } /** * @brief Show high resolution elapsed time for 10,000 and 100,000 loops */ void DoTimingsOfStrnCmp(void) { char testStr[] = "Hello, world"; int totLoops = 10000; int totFoundCount = 0; int foundCount = 0; int loop; int rc; const int progressAnd = 0xFFFFF000; double elapsed; printf("\n\n%d loops with * every %d loops to confirm\n", totLoops, ((~progressAnd) + 1)); HrtStart(); for (loop = 0; loop < totLoops; ++loop) { foundCount = 0; rc = strncmp(testStr, "Hello", 5); if (rc == 0) { foundCount++; totFoundCount++; if ((totFoundCount & progressAnd) == totFoundCount) { printf("*"); } } } elapsed = HrtElapsedMillis(); printf("\nstrncmp Elapsed for %7d loops milliseconds: %7.3f\n", totLoops, elapsed); printf("FoundCount each loop: %d\n", foundCount); printf("TotalFoundCount for all loops: %d\n", totFoundCount); totLoops = 100000; HrtStart(); for (loop = 0; loop < totLoops; ++loop) { foundCount = 0; rc = strncmp(testStr, "Hello", 5); if (rc == 0) { foundCount++; totFoundCount++; if ((totFoundCount & progressAnd) == totFoundCount) { printf("*"); } } } elapsed = HrtElapsedMillis(); printf("\nstrncmp Elapsed for %7d loops milliseconds: %7.3f\n", totLoops, elapsed); printf("FoundCount each loop: %d\n", foundCount); printf("TotalFoundCount for all loops: %d\n", totFoundCount); } /** * @brief Show high resolution elapsed time for 10,000 and 100,000 loops */ void DoTimingsOfRe2c(void) { char* testStrings[] = { "123", "1234", "+123", "01234", "-04321", "abc", "123abc" }; const int testCount = sizeof(testStrings) / sizeof(testStrings[0]); int i; int totLoops = 10000 / testCount; // Doing more than one per loop int totFoundCount = 0; int foundCount = 0; int loop; int rc; const int progressAnd = 0xFFFFF000; double elapsed; printf("\n\n%d loops with * every %d loops to confirm\n", totLoops, ((~progressAnd) + 1)); HrtStart(); for (loop = 0; loop < totLoops; ++loop) { foundCount = 0; strcpy(gTestBuf, ""); for (i = 0; i < testCount; ++i) { char* pzCurStr = testStrings[i]; size_t len = strlen(pzCurStr); // Calc of strlen slows things down ... std::string? rc = ScanFullSpeed(pzCurStr, len); if (rc == 0) { foundCount++; totFoundCount++; if ((totFoundCount & progressAnd) == totFoundCount) { printf("*"); } } } } elapsed = HrtElapsedMillis(); printf("\nRe2c Elapsed for %7d loops milliseconds: %7.3f\n", totLoops, elapsed); printf("FoundCount each loop: %d\n", foundCount); printf("TotalFoundCount for all loops: %d\n", totFoundCount); totLoops = 100000 / testCount; printf("\n\n%d loops with * every %d loops to confirm\n", totLoops, ((~progressAnd) + 1)); HrtStart(); for (loop = 0; loop < totLoops; ++loop) { foundCount = 0; strcpy(gTestBuf, ""); for (i = 0; i < testCount; ++i) { char* pzCurStr = testStrings[i]; size_t len = strlen(pzCurStr); // Calc of strlen slows things down ... std::string? rc = ScanFullSpeed(pzCurStr, len); if (rc == 0) { foundCount++; totFoundCount++; if ((totFoundCount & progressAnd) == totFoundCount) { printf("*"); } } } } elapsed = HrtElapsedMillis(); printf("\nRe2c Elapsed for %7d loops milliseconds: %7.3f\n", totLoops, elapsed); printf("FoundCount each loop: %d\n", foundCount); printf("TotalFoundCount for all loops: %d\n", totFoundCount); } /** * @brief Entry point for console app */ int main(int argc, char **argv) { char testStr_A[] = "123"; char* testStr_B = "456"; char* testStrings[] = { "123", "1234", "+123", "01234", "-04321", "abc", "123abc" }; const int testCount = sizeof(testStrings) / sizeof(testStrings[0]); int i; int rc = scan(testStr_A, 3); printf("rc: %d\n", rc); rc = scan(testStr_B, 3); printf("rc: %d\n", rc); rc = scan("789", 3); printf("rc: %d\n", rc); strcpy(gTestBuf, ""); for (i = 0; i < testCount; ++i) { char* pzCurStr = testStrings[i]; size_t len = strlen(pzCurStr); scan(pzCurStr, len); } printf("%s\n", gTestBuf); rc = strcmp(gTestBuf, "Num Num + Num Oct - Oct ERR Num ERR "); if (rc == 0) { printf("Success\n"); } else { printf("Failure\n"); } assert(0 == rc); // Doesn't work with Release build InitHiResTimerAndVerifyWorking(); DoTimingsOfStrnCmp(); DoTimingsOfRe2c(); return 0; } re2c-1.0.1/examples/001_upn_calculator/windows/HiResTimer.h0000644000175000017500000000211413063315631020353 00000000000000/** * @file HiResTimer.h * @brief * @note */ #ifndef _HI_RES_TIMER_H_ #define _HI_RES_TIMER_H_ #ifdef WIN32 #include // probably already done in stdafx.h static LARGE_INTEGER start; static LARGE_INTEGER stop; static LARGE_INTEGER freq; static _int64 elapsedCounts; static double elapsedMillis; static double elapsedMicros; static HANDLE processHandle; static DWORD prevPriorityClass; void HrtInit() { processHandle = GetCurrentProcess(); prevPriorityClass = GetPriorityClass(processHandle); QueryPerformanceFrequency(&freq); } void HrtStart() { QueryPerformanceCounter(&start); } void HrtSetPriority(DWORD priority) { int flag; prevPriorityClass = GetPriorityClass(processHandle); flag = SetPriorityClass(processHandle, priority); } void HrtResetPriority(void) { int flag = SetPriorityClass(processHandle, prevPriorityClass); } double HrtElapsedMillis() { QueryPerformanceCounter(&stop); elapsedCounts = (stop.QuadPart - start.QuadPart); elapsedMillis = ((elapsedCounts * 1000.0) / freq.QuadPart); return elapsedMillis; } #endif #endifre2c-1.0.1/examples/001_upn_calculator/calc_005.re0000644000175000017500000000563413063315631016325 00000000000000/* re2c lesson 001_upn_calculator, calc_005, (c) M. Boerger 2006 - 2007 */ /*!ignore:re2c - turning this lesson into an easy calculator . We are going to write an UPN calculator so we need an additional rule to ignore white space. . Then we need to store the scanned input somewhere and do our math on it. . Also we need to scan all arguments since the main c code gets the input split up into chunks. . In contrast to what we did before we now add a variable res that holds the scanner state. We initialize that variable to 0 and quit the loop when it is non zero. This will also be our return value so that we can use it in function main to generate error information. . To support operating systems where ' and " get passed in program arguments we check for them being first and last input character. If so we correct input pointer and input length. Since now our scanner might not see a terminating zero we change YYLIMIT again and drop the special zero rule. */ #include #include #include #define DEBUG(stmt) stmt int stack[4]; int depth = 0; int push_num(const char *t, const char *l, int radix) { int num = 0; if (depth >= sizeof(stack)) { return 3; } --t; while(++t < l) { num = num * radix + (*t - '0'); } DEBUG(printf("Num: %d\n", num)); stack[depth++] = num; return 0; } int stack_add() { if (depth < 2) return 4; --depth; stack[depth-1] = stack[depth-1] + stack[depth]; return 0; } int stack_sub() { if (depth < 2) return 4; --depth; stack[depth-1] = stack[depth-1] - stack[depth]; return 0; } int scan(char *s, int l) { char *p = s; char *q = 0; char *t; int res = 0; #define YYCTYPE char #define YYCURSOR p #define YYLIMIT (s+l+1) #define YYMARKER q #define YYFILL(n) { return depth == 1 ? 0 : 2; } while(!res) { t = p; /*!re2c re2c:indent:top = 2; DIGIT = [0-9] ; OCT = "0" DIGIT+ ; INT = "0" | ( [1-9] DIGIT* ) ; WS = [ \t]+ ; WS { continue; } OCT { res = push_num(t, p, 8); continue; } INT { res = push_num(t, p, 10); continue; } "+" { res = stack_add(); continue; } "-" { res = stack_sub(); continue; } [^] { res = 1; continue; } */ } return res; } int main(int argc, char **argv) { if (argc > 1) { char *inp; int res = 0, argp = 0, len; while(!res && ++argp < argc) { inp = argv[argp]; len = strlen(inp); if (inp[0] == '\"' && inp[len-1] == '\"') { ++inp; len -=2; } res = scan(inp, len); } switch(res) { case 0: printf("Result: %d\n", stack[0]); return 0; case 1: fprintf(stderr, "Illegal character in input.\n"); return 1; case 2: fprintf(stderr, "Premature end of input.\n"); return 2; case 3: fprintf(stderr, "Stack overflow.\n"); return 3; case 4: fprintf(stderr, "Stack underflow.\n"); return 4; } } else { fprintf(stderr, "%s \n", argv[0]); return 0; } } re2c-1.0.1/examples/001_upn_calculator/calc_003.re0000644000175000017500000000320613063315631016314 00000000000000/* re2c lesson 001_upn_calculator, calc_003, (c) M. Boerger 2006 - 2007 */ /*!ignore:re2c - making use of YYFILL . Again provide the length of the input to generate the limit only once. Now we can use YYFILL() to detect the end and simply return since YYFILL() is only being used if the next scanner run might use more chars then YYLIMIT allows. . Note that we now use (s+l+2) instead of (s+l) as we did in lesson_001. In the first lesson we did not quit from YYFILL() and used a special rule to detect the end of input. Here we use the fact that we know the exact end of input and that this length does not include the terminating zero. Since YYLIMIT points to the first character behind the used buffer we use "+ 2". If we would use "+1" we could drop the "\000" rule but could no longer distinguish between end of input and out of data. */ #include #include #include int scan(char *s, int l) { char *p = s; char *q = 0; #define YYCTYPE char #define YYCURSOR p #define YYLIMIT (s+l+2) #define YYMARKER q #define YYFILL(n) { printf("OOD\n"); return 2; } for(;;) { /*!re2c re2c:indent:top = 2; "0"[0-9]+ { printf("Oct\n"); continue; } [1-9][0-9]* { printf("Num\n"); continue; } "0" { printf("Num\n"); continue; } "+" { printf("+\n"); continue; } "-" { printf("+\n"); continue; } "\000" { printf("EOF\n"); return 0; } [^] { printf("ERR\n"); return 1; } */ } return 0; } int main(int argc, char **argv) { if (argc > 1) { return scan(argv[1], strlen(argv[1])); } else { fprintf(stderr, "%s \n", argv[0]); return 0; } } re2c-1.0.1/examples/input_custom/0000755000175000017500000000000013063315631013715 500000000000000re2c-1.0.1/examples/input_custom/simple/0000755000175000017500000000000013063315631015206 500000000000000re2c-1.0.1/examples/input_custom/simple/fgetc.re0000644000175000017500000000174613063315631016556 00000000000000#include char peek (FILE * f) { char c = fgetc (f); ungetc (c, f); return c; } bool lex (FILE * f, const long limit) { long marker; long ctxmarker; # define YYCTYPE char # define YYPEEK() peek (f) # define YYSKIP() fgetc (f) # define YYBACKUP() marker = ftell (f) # define YYBACKUPCTX() ctxmarker = ftell (f) # define YYRESTORE() fseek (f, marker, SEEK_SET) # define YYRESTORECTX() fseek (f, ctxmarker, SEEK_SET) # define YYLESSTHAN(n) limit - ftell (f) < n # define YYFILL(n) {} /*!re2c "int buffer " / "[" [0-9]+ "]" { return true; } * { return false; } */ } int main () { const char buffer [] = "int buffer [1024]"; const char fn [] = "input.txt"; FILE * f = fopen (fn, "w"); fwrite (buffer, 1, sizeof (buffer), f); fclose (f); f = fopen (fn, "rb"); int result = !lex (f, sizeof (buffer)); fclose (f); return result; } re2c-1.0.1/examples/input_custom/simple/istringstream.re0000644000175000017500000000142613063315631020354 00000000000000#include bool lex (std::istringstream & is, const std::streampos limit) { std::streampos marker; std::streampos ctxmarker; # define YYCTYPE char # define YYPEEK() is.peek () # define YYSKIP() is.ignore () # define YYBACKUP() marker = is.tellg () # define YYBACKUPCTX() ctxmarker = is.tellg () # define YYRESTORE() is.seekg (marker) # define YYRESTORECTX() is.seekg (ctxmarker) # define YYLESSTHAN(n) limit - is.tellg () < n # define YYFILL(n) {} /*!re2c "int buffer " / "[" [0-9]+ "]" { return true; } * { return false; } */ } int main () { const char buffer [] = "int buffer [1024]"; std::istringstream is (buffer); return !lex (is, sizeof (buffer)); } re2c-1.0.1/examples/input_custom/simple/README0000644000175000017500000000113313063315631016004 00000000000000Build with "--input custom" re2c switch. These are three examples of "--input custom" usage: - input_custom_default.re: implements default re2c input model (pointers to plain buffer) - input_custom_fgetc: implements C-style file input (using ) - input_custom_fgetc: implements std::istringstream input Note that these examples are very simple and don't need to implement YYFILL; the only reason they don't use "re2c:yyfill:enable = 0;" is to keep YYLESSTHAN and YYLIMIT (for the sake of example). In real-life programs one will need to care for correct end-of-input handling. re2c-1.0.1/examples/input_custom/simple/default.re0000644000175000017500000000130113063315631017075 00000000000000bool lex (const char * cursor, const char * const limit) { const char * marker; const char * ctxmarker; # define YYCTYPE char # define YYPEEK() *cursor # define YYSKIP() ++cursor # define YYBACKUP() marker = cursor # define YYBACKUPCTX() ctxmarker = cursor # define YYRESTORE() cursor = marker # define YYRESTORECTX() cursor = ctxmarker # define YYLESSTHAN(n) limit - cursor < n # define YYFILL(n) {} /*!re2c "int buffer " / "[" [0-9]+ "]" { return true; } * { return false; } */ } int main () { char buffer [] = "int buffer [1024]"; return !lex (buffer, buffer + sizeof (buffer)); } re2c-1.0.1/examples/input_custom/fixed.re0000644000175000017500000000222313063315631015263 00000000000000// Build with "--input custom" re2c switch. // // This is an example of handling fixed-length buffer with "--input custom": // on each YYPEEK we check for the end of input, thus YYFILL generation // can be safely suppressed. // // Note that YYLIMIT points not to terminating NULL, but to the previous // character: we emulate the case when input has no terminating NULL. // // For a real-life example see https://github.com/sopyer/mjson // or mjson.re from re2c test collection. bool lex (const char * cursor, const char * const limit) { const char * marker; const char * ctxmarker; # define YYCTYPE char # define YYPEEK() (cursor >= limit ? 0 : *cursor) # define YYSKIP() ++cursor # define YYBACKUP() marker = cursor # define YYBACKUPCTX() ctxmarker = cursor # define YYRESTORE() cursor = marker # define YYRESTORECTX() cursor = ctxmarker /*!re2c re2c:yyfill:enable = 0; "int buffer " / "[" [0-9]+ "]" { return true; } * { return false; } */ } int main () { char buffer [] = "int buffer [1024]"; return !lex (buffer, buffer + sizeof (buffer) - 1); } re2c-1.0.1/examples/iter/0000755000175000017500000000000013136650227012133 500000000000000re2c-1.0.1/examples/iter/iter_vectors.re0000644000175000017500000000213713136647354015125 00000000000000#include #include #include #include typedef std::vector taglist_t; static void lex(const char *s) { #define YYPEEK() *s #define YYSKIP() ++s #define YYBACKUP() marker = s #define YYRESTORE() s = marker #define YYMTAGP(t) t.push_back(s) #define YYMTAGN(t) t.push_back(NULL) const char *marker; /*!re2c re2c:define:YYCTYPE = char; re2c:yyfill:enable = 0; re2c:flags:tags = 1; re2c:flags:input = custom; */ /*!mtags:re2c format = "taglist_t @@;"; */ taglist_t k, v, e; /*!re2c key = [a-z]+; val = [a-z]*; * { printf("error\n"); return; } (#k key "=" #v val ";" #e)* { const size_t n = k.size(); for (size_t i = 0; i < n; ++i) { printf("%.*s = %.*s\n", v[i] - k[i] - 1, k[i], e[i] - v[i] - 1, v[i]); } return; } */ } int main(int argc, char **argv) { for (int i = 1; i < argc; ++i) { lex(argv[i]); } return 0; } re2c-1.0.1/examples/iter/cmd0000644000175000017500000000015013124662517012537 00000000000000./re2c -iT iter_prefix_tree.re -o iter.c -W && g++ iter.c -O2 -Wall -o iter && ./iter "a=b;c=;d=eeeee;" re2c-1.0.1/examples/iter/iter_prefix_tree.re0000644000175000017500000000243113136647425015750 00000000000000#include #include struct taglist_t { int pred; const char *tag; }; typedef std::vector taglistpool_t; static void taglist(int *ptl, const char *t, taglistpool_t *tlp) { taglist_t l = {*ptl, t}; *ptl = (int)tlp->size(); tlp->push_back(l); } #define YYCTYPE char #define YYPEEK() *s #define YYSKIP() ++s #define YYBACKUP() m = s #define YYRESTORE() s = m #define YYMTAGP(tl) taglist(&tl, s, &tlp) #define YYMTAGN(tl) taglist(&tl, NULL, &tlp) static void lex(const char *s) { const char *m; taglistpool_t tlp; /*!mtags:re2c format = "int @@ = -1;"; */ int e, k, v; /*!re2c re2c:yyfill:enable = 0; re2c:flags:tags = 1; re2c:flags:input = custom; key = [a-z]+; val = [a-z]*; * { printf("error\n"); return; } (#k key "=" #v val ";" #e)* { for (; k != -1; k = tlp[k].pred, v = tlp[v].pred, e = tlp[e].pred) { const char *pk = tlp[k].tag, *pv = tlp[v].tag, *pe = tlp[e].tag; printf("%.*s = %.*s\n", pv - pk - 1, pk, pe - pv - 1, pv); } return; } */ } int main(int argc, char **argv) { for (int i = 1; i < argc; ++i) { lex(argv[i]); } return 0; } re2c-1.0.1/examples/iter/iter2_yytaglistpool.re0000644000175000017500000000475613136647537016461 00000000000000#include #include #include #include #define YYCTYPE char #define YYPEEK() *s #define YYSKIP() ++s #define YYBACKUP() marker = s #define YYRESTORE() s = marker #define YYMTAGP(tl) yytaglist(&tl, s, &yytlp) #define YYMTAGN(tl) yytaglist(&tl, NULL, &yytlp) typedef struct yytaglist_t { struct yytaglist_t *list; const YYCTYPE *tag; } yytaglist_t; typedef struct yytaglistpool_t { yytaglist_t *head; yytaglist_t *next; yytaglist_t *last; } yytaglistpool_t; static void yytaglistpool_clear(yytaglistpool_t *tlp) { tlp->next = tlp->head; } static void yytaglistpool_init(yytaglistpool_t *tlp) { static const unsigned size = 1024 * 1024; tlp->head = (yytaglist_t*)malloc(size * sizeof(yytaglist_t)); tlp->next = tlp->head; tlp->last = tlp->head + size; } static void yytaglistpool_free(yytaglistpool_t *tlp) { free(tlp->head); tlp->head = tlp->next = tlp->last = NULL; } static yytaglist_t *yytaglistpool_next(yytaglistpool_t *tlp) { if (tlp->next == tlp->last) { const unsigned size = tlp->last - tlp->head; yytaglist_t *head = (yytaglist_t*)malloc(2 * size * sizeof(yytaglist_t)); memcpy(head, tlp->head, size * sizeof(yytaglist_t)); free(tlp->head); tlp->head = head; tlp->next = head + size; tlp->last = head + size * 2; } return tlp->next++; } static void yytaglist(yytaglist_t **ptl, const YYCTYPE *t, yytaglistpool_t *tlp) { yytaglist_t *tl = yytaglistpool_next(tlp); tl->list = *ptl; tl->tag = t; *ptl = tl; } static void lex(const char *s) { const char *marker; /*!re2c re2c:yyfill:enable = 0; re2c:flags:tags = 1; re2c:flags:input = custom; */ yytaglistpool_t yytlp; yytaglistpool_init(&yytlp); /*!mtags:re2c format = "yytaglist_t *@@ = NULL\n;"; */ yytaglist_t *e, *k, *v; /*!re2c key = [a-z]+; val = [a-z]*; * { printf("error\n"); goto end; } (#k key "=" #v val ";" #e)* { for (; k != NULL; k = k->list, v = v->list, e = e->list) { printf("%.*s = %.*s\n", v->tag - k->tag - 1, k->tag, e->tag - v->tag - 1, v->tag); } goto end; } */ end: yytaglistpool_free(&yytlp); } int main(int argc, char **argv) { for (int i = 1; i < argc; ++i) { lex(argv[i]); } return 0; } re2c-1.0.1/examples/iter/iter2.re0000644000175000017500000000512513136650227013433 00000000000000#include #include #include struct taglist_t { int pred; long tag; }; typedef std::vector taglistpool_t; /*!max:re2c*/ /* at least maximal lexeme length plus YYMAXFILL */ static const size_t SIZE = 4096 * 1024; struct input_t { char buf[SIZE + YYMAXFILL]; char *lim; char *cur; char *mar; char *tok; /*!mtags:re2c format = "int @@;"; */ bool eof; taglistpool_t tlp; input_t() : buf() , lim(buf + SIZE) , cur(lim) , mar(lim) , tok(lim) /*!mtags:re2c format = ", @@(-1)"; */ , eof(false) , tlp() {} bool fill(size_t need) { if (eof) { printf("\nfill: underflow - 1\n"); return false; } const size_t free = tok - buf; if (free < need) { printf("\nfill: underflow - 2\n"); return false; } memmove(buf, tok, lim - tok); lim -= free; cur -= free; mar -= free; tok -= free; lim += fread(lim, 1, free, stdin); if (lim < buf + SIZE) { eof = true; memset(lim, 0, YYMAXFILL); lim += YYMAXFILL; } return true; } }; static void taglist(int *ptl, char *s, input_t *in) { taglist_t l = {*ptl, s ? s - in->tok : 0}; *ptl = (int)in->tlp.size(); in->tlp.push_back(l); } #define YYPEEK() *in.cur #define YYSKIP() ++in.cur #define YYBACKUP() in.mar = in.cur #define YYRESTORE() in.cur = in.mar #define YYMTAGP(tl) taglist(&tl, in.cur, &in) #define YYMTAGN(tl) taglist(&tl, NULL, &in) #define YYLESSTHAN(n) in.lim - in.cur < n static void lex(input_t &in) { in.tok = in.cur; int k, v, e; /*!re2c re2c:define:YYCTYPE = char; re2c:define:YYFILL = "if (!in.fill(@@)) { printf(\"error\\n\"); return; }"; re2c:define:YYFILL:naked = 1; re2c:flags:input = custom; re2c:flags:tags = 1; re2c:tags:expression = "in.@@"; end = "\x00"; key = [a-z]+; val = [a-z]*; * { printf("error\n"); return; } (#k key "=" #v val ";" #e)* end { taglistpool_t &tlp = in.tlp; for (; k != -1; k = tlp[k].pred, v = tlp[v].pred, e = tlp[e].pred) { const char *pk = in.tok + tlp[k].tag, *pv = in.tok + tlp[v].tag, *pe = in.tok + tlp[e].tag; printf("%.*s = %.*s\n", pv - pk - 1, pk, pe - pv - 1, pv); } return; } */ } int main(int argc, char **argv) { input_t in; lex(in); return 0; } re2c-1.0.1/examples/002_strip_comments/0000755000175000017500000000000013063315631014613 500000000000000re2c-1.0.1/examples/002_strip_comments/strip_003.b.re0000644000175000017500000001020013063315631017017 00000000000000/* re2c lesson 002_strip_comments, strip_003.b, (c) M. Boerger 2006 - 2007 */ /*!ignore:re2c - more complexity . Right now we strip out trailing white space and new lines after a comment block. This can be a problem when the comment block was not preceeded by a new line. . The solution is to use trailing contexts. - trailing contexts . Re2c allows to check for a portion of input and only recognize it when it is followed by another portion. This is called a trailing context. . The trailing context is not part of the identified input. That means that it follows exactly at the cursor. A consequence is that the scanner has already read more input and on the next run you need to restore begining of input, in our case s.tok, from the cursor, here s.cur, rather then restoring to the beginning of the buffer. This way the scanner can reuse the portion it has already read. . The position of the trailing context is stored in YYCTXMARKER for which a pointer variable needs to be provided. . As with YYMARKER the corrsponding variable needs to be corrected if we shift in some buffer. . Still this is not all we need to solve the problem. What is left is that the information whether we detected a trailing context was detected has to be stored somewhere. This is done by the new variable nlcomment. - formatting . Until now we only used single line expression code and we always had the opening { on the same line as the rule itself. If we have multiline rule code and care for formatting we can no longer rely on re2c. Now we have to indent the rule code ourself. Also we need to take care of the opening {. If we keep it on the same line as the rule then re2c will indent it correctly and the emitted #line informations will be correct. If we place it on the next line then the #line directive will also point to that line and not to the rule. */ #include #include #include /*!max:re2c */ #define BSIZE 128 #if BSIZE < YYMAXFILL # error BSIZE must be greater YYMAXFILL #endif #define YYCTYPE unsigned char #define YYCURSOR s.cur #define YYLIMIT s.lim #define YYMARKER s.mrk #define YYCTXMARKER s.ctx #define YYFILL(n) { if ((res = fill(&s, n)) >= 0) break; } typedef struct Scanner { FILE *fp; unsigned char *cur, *tok, *lim, *eof, *ctx, *mrk; unsigned char buffer[BSIZE]; } Scanner; int fill(Scanner *s, int len) { if (!len) { s->cur = s->tok = s->lim = s->mrk = s->buffer; s->eof = 0; } if (!s->eof) { int got, cnt = s->tok - s->buffer; if (cnt > 0) { memcpy(s->buffer, s->tok, s->lim - s->tok); s->tok -= cnt; s->cur -= cnt; s->lim -= cnt; s->mrk -= cnt; s->ctx -= cnt; } cnt = BSIZE - cnt; if ((got = fread(s->lim, 1, cnt, s->fp)) != cnt) { s->eof = &s->lim[got]; } s->lim += got; } else if (s->cur + len > s->eof) { return 0; /* not enough input data */ } return -1; } void echo(Scanner *s) { fwrite(s->tok, 1, s->cur - s->tok, stdout); } int scan(FILE *fp) { int res = 0; int nlcomment = 0; Scanner s; if (!fp) { return 1; /* no file was opened */ } s.fp = fp; fill(&s, 0); for(;;) { s.tok = s.cur; /*!re2c re2c:indent:top = 2; NL = "\r"? "\n" ; WS = [\r\n\t ] ; ANY = [^] ; "/" "/" { goto cppcomment; } NL / "/""*" { echo(&s); nlcomment = 1; continue; } "/" "*" { goto comment; } ANY { fputc(*s.tok, stdout); continue; } */ comment: s.tok = s.cur; /*!re2c "*" "/" { goto commentws; } ANY { goto comment; } */ commentws: s.tok = s.cur; /*!re2c NL? "/" "*" { goto comment; } NL { if (!nlcomment) { echo(&s); } nlcomment = 0; continue; } WS { goto commentws; } ANY { echo(&s); nlcomment = 0; continue; } */ cppcomment: s.tok = s.cur; /*!re2c NL { echo(&s); continue; } ANY { goto cppcomment; } */ } if (fp != stdin) { fclose(fp); /* close only if not stdin */ } return res; /* return result */ } int main(int argc, char **argv) { if (argc > 1) { return scan(!strcmp(argv[1], "-") ? stdin : fopen(argv[1], "r")); } else { fprintf(stderr, "%s \n", argv[0]); return 1; } } re2c-1.0.1/examples/002_strip_comments/strip_002.s.re0000644000175000017500000000707113063315631017053 00000000000000/* re2c lesson 002_strip_comments, strip_002.s, (c) M. Boerger 2006 - 2007 */ /*!ignore:re2c - complexity . When a comment is preceeded by a new line and followed by whitespace and a new line then we can drop the trailing whitespace and new line. . Additional to what we strip out already what about two consequtive comment blocks? When two comments are only separated by whitespace we want to drop both. In other words when detecting the end of a comment block we need to check whether it is followed by only whitespace and the a new comment in which case we continure ignoring the input. If it is followed only by white space and a new line we strip out the new white space and new line. In any other case we start outputting all that follows. But we cannot simply use the following two rules: "*" "/" WS* "/" "*" { continue; } "*" "/" WS* NL { continue; } The main problem is that WS* can get bigger then our buffer, so we need a new scanner. . Meanwhile our scanner gets a bit more complex and we have to add two more things. First the scanner code now uses a YYMARKER to store backtracking information. - backtracking information . When the scanner has two rules that can have the same beginning but a different ending then it needs to store the position that identifies the common part. This is called backtracking. As mentioned above re2c expects you to provide compiler define YYMARKER and a pointer variable. . When shifting buffer contents as done in our fill function the marker needs to be corrected, too. */ #include #include #include /*!max:re2c */ #define BSIZE 128 #if BSIZE < YYMAXFILL # error BSIZE must be greater YYMAXFILL #endif #define YYCTYPE unsigned char #define YYCURSOR s.cur #define YYLIMIT s.lim #define YYMARKER s.mrk #define YYFILL(n) { if ((res = fill(&s, n)) >= 0) break; } typedef struct Scanner { FILE *fp; unsigned char *cur, *tok, *lim, *eof, *mrk; unsigned char buffer[BSIZE]; } Scanner; int fill(Scanner *s, int len) { if (!len) { s->cur = s->tok = s->lim = s->mrk = s->buffer; s->eof = 0; } if (!s->eof) { int got, cnt = s->tok - s->buffer; if (cnt > 0) { memcpy(s->buffer, s->tok, s->lim - s->tok); s->tok -= cnt; s->cur -= cnt; s->lim -= cnt; s->mrk -= cnt; } cnt = BSIZE - cnt; if ((got = fread(s->lim, 1, cnt, s->fp)) != cnt) { s->eof = &s->lim[got]; } s->lim += got; } else if (s->cur + len > s->eof) { return 0; /* not enough input data */ } return -1; } void echo(Scanner *s) { fwrite(s->tok, 1, s->cur - s->tok, stdout); } int scan(FILE *fp) { int res = 0; Scanner s; if (!fp) { return 1; /* no file was opened */ } s.fp = fp; fill(&s, 0); for(;;) { s.tok = s.cur; /*!re2c re2c:indent:top = 2; NL = "\r"? "\n" ; WS = [\r\n\t ] ; ANY = [^] ; "/" "/" { goto cppcomment; } "/" "*" { goto comment; } ANY { fputc(*s.tok, stdout); continue; } */ comment: s.tok = s.cur; /*!re2c "*" "/" { goto commentws; } ANY { goto comment; } */ commentws: s.tok = s.cur; /*!re2c NL { echo(&s); continue; } WS { goto commentws; } ANY { echo(&s); continue; } */ cppcomment: s.tok = s.cur; /*!re2c NL { echo(&s); continue; } ANY { goto cppcomment; } */ } if (fp != stdin) { fclose(fp); /* close only if not stdin */ } return res; /* return result */ } int main(int argc, char **argv) { if (argc > 1) { return scan(!strcmp(argv[1], "-") ? stdin : fopen(argv[1], "r")); } else { fprintf(stderr, "%s \n", argv[0]); return 1; } } re2c-1.0.1/examples/002_strip_comments/strip_001.s.re0000644000175000017500000000701413063315631017047 00000000000000/* re2c lesson 002_strip_comments, strip_001.s, (c) M. Boerger 2006 - 2007 */ /*!ignore:re2c - basic interface for file reading . This scanner will read chunks of input from a file. The easiest way would be to read the whole file into a memory buffer and use that a zero terminated string. . Instead we want to read input chunks of a reasonable size as they are neede by the scanner. Thus we basically need YYFILL(n) to call fread(n). . Before we provide a buffer that we constantly reallocate we instead use one buffer that we get from the stack or global memory just once. When we reach the end of the buffer we simply move the beginning of our input that is somewhere in our buffer to the beginning of our buffer and then append the next chunk of input to the correct end inside our buffer. . As re2c scanners might read more than one character we need to ensure our buffer is long enough. We can use re2c to inform about the maximum size by placing a "!max:re2c" comment somewhere. This gets translated to a "#define YYMAXFILL " line where is the maximum length value. This define can be used as precompiler condition. - multiple scanner blocks . We use a main scanner block that outputs every input character unless the input is two /s or a / followed by a *. In the latter two cases we switch to a special c++ comment and a comment block respectively. . Both special blocks simply detect their end ignore any other character. . The c++ block is a bit special. Since the terminating new line needs to be output and that can either be a new line or a carridge return followed by a new line. . In order to ensure that we do not read behind our buffer we reset the token pointer to the cursor on every scanner run. */ #include #include #include /*!max:re2c */ #define BSIZE 128 #if BSIZE < YYMAXFILL # error BSIZE must be greater YYMAXFILL #endif #define YYCTYPE unsigned char #define YYCURSOR s.cur #define YYLIMIT s.lim #define YYFILL(n) { if ((res = fill(&s, n)) >= 0) break; } typedef struct Scanner { FILE *fp; unsigned char *cur, *tok, *lim, *eof; unsigned char buffer[BSIZE]; } Scanner; int fill(Scanner *s, int len) { if (!len) { s->cur = s->tok = s->lim = s->buffer; s->eof = 0; } if (!s->eof) { int got, cnt = s->tok - s->buffer; if (cnt > 0) { memcpy(s->buffer, s->tok, s->lim - s->tok); s->tok -= cnt; s->cur -= cnt; s->lim -= cnt; } cnt = BSIZE - cnt; if ((got = fread(s->lim, 1, cnt, s->fp)) != cnt) { s->eof = &s->lim[got]; } s->lim += got; } else if (s->cur + len > s->eof) { return 0; /* not enough input data */ } return -1; } int scan(FILE *fp) { int res = 0; Scanner s; if (!fp) { return 1; /* no file was opened */ } s.fp = fp; fill(&s, 0); for(;;) { s.tok = s.cur; /*!re2c re2c:indent:top = 2; NL = "\r"? "\n" ; ANY = [^] ; "/" "/" { goto cppcomment; } "/" "*" { goto comment; } ANY { fputc(*s.tok, stdout); continue; } */ comment: s.tok = s.cur; /*!re2c "*" "/" { continue; } ANY { goto comment; } */ cppcomment: s.tok = s.cur; /*!re2c NL { fwrite(s.tok, 1, s.cur - s.tok, stdout); continue; } ANY { goto cppcomment; } */ } if (fp != stdin) { fclose(fp); /* close only if not stdin */ } return res; /* return result */ } int main(int argc, char **argv) { if (argc > 1) { return scan(!strcmp(argv[1], "-") ? stdin : fopen(argv[1], "r")); } else { fprintf(stderr, "%s \n", argv[0]); return 1; } } re2c-1.0.1/examples/002_strip_comments/README0000644000175000017500000000126413063315631015416 00000000000000re2c lesson 002_strip_comments, (c) M. Boerger 2006 In this lesson you will learn how to use multiple scanner blocks and how to read the input from a file instead of a zero terminated string. In the end you will have a scanner that filters comments out of c source files but keeps re2c comments. The first scanner can be generated with: re2c -s -o t.c strip_001.s.re In the second step we will learn about YYMARKER that stores backtracking information. re2c -s -0 t.c strip_002.b.re The third step brings trailing contexts that are stored in YYCTXMARKER. We also change to use -b instead of -s option since the scanner gets more and more complex. re2c -b -0 t.c strip_002.b.re re2c-1.0.1/examples/langs/0000755000175000017500000000000013063315631012270 500000000000000re2c-1.0.1/examples/langs/c.re0000644000175000017500000001244313063315631012766 00000000000000#include #include #include #define ADDEQ 257 #define ANDAND 258 #define ANDEQ 259 #define ARRAY 260 #define ASM 261 #define AUTO 262 #define BREAK 263 #define CASE 264 #define CHAR 265 #define CONST 266 #define CONTINUE 267 #define DECR 268 #define DEFAULT 269 #define DEREF 270 #define DIVEQ 271 #define DO 272 #define DOUBLE 273 #define ELLIPSIS 274 #define ELSE 275 #define ENUM 276 #define EQL 277 #define EXTERN 278 #define FCON 279 #define FLOAT 280 #define FOR 281 #define FUNCTION 282 #define GEQ 283 #define GOTO 284 #define ICON 285 #define ID 286 #define IF 287 #define INCR 288 #define INT 289 #define LEQ 290 #define LONG 291 #define LSHIFT 292 #define LSHIFTEQ 293 #define MODEQ 294 #define MULEQ 295 #define NEQ 296 #define OREQ 297 #define OROR 298 #define POINTER 299 #define REGISTER 300 #define RETURN 301 #define RSHIFT 302 #define RSHIFTEQ 303 #define SCON 304 #define SHORT 305 #define SIGNED 306 #define SIZEOF 307 #define STATIC 308 #define STRUCT 309 #define SUBEQ 310 #define SWITCH 311 #define TYPEDEF 312 #define UNION 313 #define UNSIGNED 314 #define VOID 315 #define VOLATILE 316 #define WHILE 317 #define XOREQ 318 #define EOI 319 typedef unsigned int uint; typedef unsigned char uchar; #define BSIZE 8192 #define YYCTYPE uchar #define YYCURSOR cursor #define YYLIMIT s->lim #define YYMARKER s->ptr #define YYFILL(n) {cursor = fill(s, cursor);} #define RET(i) {s->cur = cursor; return i;} typedef struct Scanner { int fd; uchar *bot, *tok, *ptr, *cur, *pos, *lim, *top, *eof; uint line; } Scanner; uchar *fill(Scanner *s, uchar *cursor){ if(!s->eof) { uint cnt = s->tok - s->bot; if(cnt){ memcpy(s->bot, s->tok, s->lim - s->tok); s->tok = s->bot; s->ptr -= cnt; cursor -= cnt; s->pos -= cnt; s->lim -= cnt; } if((s->top - s->lim) < BSIZE){ uchar *buf = (uchar*) malloc(((s->lim - s->bot) + BSIZE)*sizeof(uchar)); memcpy(buf, s->tok, s->lim - s->tok); s->tok = buf; s->ptr = &buf[s->ptr - s->bot]; cursor = &buf[cursor - s->bot]; s->pos = &buf[s->pos - s->bot]; s->lim = &buf[s->lim - s->bot]; s->top = &s->lim[BSIZE]; free(s->bot); s->bot = buf; } if((cnt = read(s->fd, (char*) s->lim, BSIZE)) != BSIZE){ s->eof = &s->lim[cnt]; *(s->eof)++ = '\n'; } s->lim += cnt; } return cursor; } int scan(Scanner *s){ uchar *cursor = s->cur; std: s->tok = cursor; /*!re2c any = [\000-\377]; O = [0-7]; D = [0-9]; L = [a-zA-Z_]; H = [a-fA-F0-9]; E = [Ee] [+-]? D+; FS = [fFlL]; IS = [uUlL]*; ESC = [\\] ([abfnrtv?'"\\] | "x" H+ | O+); */ /*!re2c "/*" { goto comment; } "auto" { RET(AUTO); } "break" { RET(BREAK); } "case" { RET(CASE); } "char" { RET(CHAR); } "const" { RET(CONST); } "continue" { RET(CONTINUE); } "default" { RET(DEFAULT); } "do" { RET(DO); } "double" { RET(DOUBLE); } "else" { RET(ELSE); } "enum" { RET(ENUM); } "extern" { RET(EXTERN); } "float" { RET(FLOAT); } "for" { RET(FOR); } "goto" { RET(GOTO); } "if" { RET(IF); } "int" { RET(INT); } "long" { RET(LONG); } "register" { RET(REGISTER); } "return" { RET(RETURN); } "short" { RET(SHORT); } "signed" { RET(SIGNED); } "sizeof" { RET(SIZEOF); } "static" { RET(STATIC); } "struct" { RET(STRUCT); } "switch" { RET(SWITCH); } "typedef" { RET(TYPEDEF); } "union" { RET(UNION); } "unsigned" { RET(UNSIGNED); } "void" { RET(VOID); } "volatile" { RET(VOLATILE); } "while" { RET(WHILE); } L (L|D)* { RET(ID); } ("0" [xX] H+ IS?) | ("0" D+ IS?) | (D+ IS?) | (['] (ESC|any\[\n\\'])* [']) { RET(ICON); } (D+ E FS?) | (D* "." D+ E? FS?) | (D+ "." D* E? FS?) { RET(FCON); } (["] (ESC|any\[\n\\"])* ["]) { RET(SCON); } "..." { RET(ELLIPSIS); } ">>=" { RET(RSHIFTEQ); } "<<=" { RET(LSHIFTEQ); } "+=" { RET(ADDEQ); } "-=" { RET(SUBEQ); } "*=" { RET(MULEQ); } "/=" { RET(DIVEQ); } "%=" { RET(MODEQ); } "&=" { RET(ANDEQ); } "^=" { RET(XOREQ); } "|=" { RET(OREQ); } ">>" { RET(RSHIFT); } "<<" { RET(LSHIFT); } "++" { RET(INCR); } "--" { RET(DECR); } "->" { RET(DEREF); } "&&" { RET(ANDAND); } "||" { RET(OROR); } "<=" { RET(LEQ); } ">=" { RET(GEQ); } "==" { RET(EQL); } "!=" { RET(NEQ); } ";" { RET(';'); } "{" { RET('{'); } "}" { RET('}'); } "," { RET(','); } ":" { RET(':'); } "=" { RET('='); } "(" { RET('('); } ")" { RET(')'); } "[" { RET('['); } "]" { RET(']'); } "." { RET('.'); } "&" { RET('&'); } "!" { RET('!'); } "~" { RET('~'); } "-" { RET('-'); } "+" { RET('+'); } "*" { RET('*'); } "/" { RET('/'); } "%" { RET('%'); } "<" { RET('<'); } ">" { RET('>'); } "^" { RET('^'); } "|" { RET('|'); } "?" { RET('?'); } [ \t\v\f]+ { goto std; } "\n" { if(cursor == s->eof) RET(EOI); s->pos = cursor; s->line++; goto std; } any { printf("unexpected character: %c\n", *s->tok); goto std; } */ comment: /*!re2c "*/" { goto std; } "\n" { if(cursor == s->eof) RET(EOI); s->tok = s->pos = cursor; s->line++; goto comment; } any { goto comment; } */ } main(){ Scanner in; int t; memset((char*) &in, 0, sizeof(in)); in.fd = 0; while((t = scan(&in)) != EOI){ /* printf("%d\t%.*s\n", t, in.cur - in.tok, in.tok); printf("%d\n", t); */ } close(in.fd); } re2c-1.0.1/examples/langs/rexx.re0000644000175000017500000001256313063315631013535 00000000000000#include "scanio.h" #include "scanner.h" #define CURSOR ch #define LOADCURSOR ch = *cursor; #define ADVANCE cursor++; #define BACK(n) cursor -= (n); #define CHECK(n) if((ScanCB.lim - cursor) < (n)){cursor = ScanFill(cursor);} #define MARK(n) ScanCB.ptr = cursor; sel = (n); #define REVERT cursor = ScanCB.ptr; #define MARKER sel #define RETURN(i) {ScanCB.cur = cursor; return i;} int ScanToken(){ uchar *cursor = ScanCB.cur; unsigned sel; uchar ch; ScanCB.tok = cursor; ScanCB.eot = NULL; /*!re2c all = [\000-\377]; eof = [\000]; any = all\eof; letter = [a-z]|[A-Z]; digit = [0-9]; symchr = letter|digit|[.!?_]; const = (digit|[.])symchr*([eE][+-]?digit+)?; simple = (symchr\(digit|[.]))(symchr\[.])*; stem = simple [.]; symbol = symchr*; sqstr = ['] ((any\['\n])|(['][']))* [']; dqstr = ["] ((any\["\n])|(["]["]))* ["]; str = sqstr|dqstr; ob = [ \t]*; not = [\\~]; A = [aA]; B = [bB]; C = [cC]; D = [dD]; E = [eE]; F = [fF]; G = [gG]; H = [hH]; I = [iI]; J = [jJ]; K = [kK]; L = [lL]; M = [mM]; N = [nN]; O = [oO]; P = [pP]; Q = [qQ]; R = [rR]; S = [sS]; T = [tT]; U = [uU]; V = [vV]; W = [wW]; X = [xX]; Y = [yY]; Z = [zZ]; */ scan: /*!re2c "\n" { ++(ScanCB.lineNum); ScanCB.linePos = ScanCB.pos + (cursor - ScanCB.mrk); RETURN(SU_EOL); } "|" ob "|" { RETURN(OP_CONCAT); } "+" { RETURN(OP_PLUS); } "-" { RETURN(OP_MINUS); } "*" { RETURN(OP_MULT); } "/" { RETURN(OP_DIV); } "%" { RETURN(OP_IDIV); } "/" ob "/" { RETURN(OP_REMAIN); } "*" ob "*" { RETURN(OP_POWER); } "=" { RETURN(OP_EQUAL); } not ob "=" | "<" ob ">" | ">" ob "<" { RETURN(OP_EQUAL_N); } ">" { RETURN(OP_GT); } "<" { RETURN(OP_LT); } ">" ob "=" | not ob "<" { RETURN(OP_GE); } "<" ob "=" | not ob ">" { RETURN(OP_LE); } "=" ob "=" { RETURN(OP_EQUAL_EQ); } not ob "=" ob "=" { RETURN(OP_EQUAL_EQ_N); } ">" ob ">" { RETURN(OP_GT_STRICT); } "<" ob "<" { RETURN(OP_LT_STRICT); } ">" ob ">" ob "=" | not ob "<" ob "<" { RETURN(OP_GE_STRICT); } "<" ob "<" ob "=" | not ob ">" ob ">" { RETURN(OP_LE_STRICT); } "&" { RETURN(OP_AND); } "|" { RETURN(OP_OR); } "&" ob "&" { RETURN(OP_XOR); } not { RETURN(OP_NOT); } ":" { RETURN(SU_COLON); } "," { RETURN(SU_COMMA); } "(" { RETURN(SU_POPEN); } ")" { RETURN(SU_PCLOSE); } ";" { RETURN(SU_EOC); } A D D R E S S { RETURN(RX_ADDRESS); } A R G { RETURN(RX_ARG); } C A L L { RETURN(RX_CALL); } D O { RETURN(RX_DO); } D R O P { RETURN(RX_DROP); } E L S E { RETURN(RX_ELSE); } E N D { RETURN(RX_END); } E X I T { RETURN(RX_EXIT); } I F { RETURN(RX_IF); } I N T E R P R E T { RETURN(RX_INTERPRET); } I T E R A T E { RETURN(RX_ITERATE); } L E A V E { RETURN(RX_LEAVE); } N O P { RETURN(RX_NOP); } N U M E R I C { RETURN(RX_NUMERIC); } O P T I O N S { RETURN(RX_OPTIONS); } O T H E R W I S E { RETURN(RX_OTHERWISE); } P A R S E { RETURN(RX_PARSE); } P R O C E D U R E { RETURN(RX_PROCEDURE); } P U L L { RETURN(RX_PULL); } P U S H { RETURN(RX_PUSH); } Q U E U E { RETURN(RX_QUEUE); } R E T U R N { RETURN(RX_RETURN); } S A Y { RETURN(RX_SAY); } S E L E C T { RETURN(RX_SELECT); } S I G N A L { RETURN(RX_SIGNAL); } T H E N { RETURN(RX_THEN); } T R A C E { RETURN(RX_TRACE); } W H E N { RETURN(RX_WHEN); } O F F { RETURN(RXS_OFF); } O N { RETURN(RXS_ON); } B Y { RETURN(RXS_BY); } D I G I T S { RETURN(RXS_DIGITS); } E N G I N E E R I N G { RETURN(RXS_ENGINEERING); } E R R O R { RETURN(RXS_ERROR); } E X P O S E { RETURN(RXS_EXPOSE); } F A I L U R E { RETURN(RXS_FAILURE); } F O R { RETURN(RXS_FOR); } F O R E V E R { RETURN(RXS_FOREVER); } F O R M { RETURN(RXS_FORM); } F U Z Z { RETURN(RXS_FUZZ); } H A L T { RETURN(RXS_HALT); } L I N E I N { RETURN(RXS_LINEIN); } N A M E { RETURN(RXS_NAME); } N O T R E A D Y { RETURN(RXS_NOTREADY); } N O V A L U E { RETURN(RXS_NOVALUE); } S C I E N T I F I C { RETURN(RXS_SCIENTIFIC); } S O U R C E { RETURN(RXS_SOURCE); } S Y N T A X { RETURN(RXS_SYNTAX); } T O { RETURN(RXS_TO); } U N T I L { RETURN(RXS_UNTIL); } U P P E R { RETURN(RXS_UPPER); } V A L U E { RETURN(RXS_VALUE); } V A R { RETURN(RXS_VAR); } V E R S I O N { RETURN(RXS_VERSION); } W H I L E { RETURN(RXS_WHILE); } W I T H { RETURN(RXS_WITH); } const { RETURN(SU_CONST); } simple { RETURN(SU_SYMBOL); } stem { RETURN(SU_SYMBOL_STEM); } symbol { RETURN(SU_SYMBOL_COMPOUND); } str { RETURN(SU_LITERAL); } str [bB] / (all\symchr) { RETURN(SU_LITERAL_BIN); } str [xX] / (all\symchr) { RETURN(SU_LITERAL_HEX); } eof { RETURN(SU_EOF); } any { RETURN(SU_ERROR); } */ } bool StripToken(){ uchar *cursor = ScanCB.cur; unsigned depth; uchar ch; bool blanks = FALSE; ScanCB.eot = cursor; strip: /*!re2c "/*" { depth = 1; goto comment; } "\r" { goto strip; } [ \t] { blanks = TRUE; goto strip; } [] / all { RETURN(blanks); } */ comment: /*!re2c "*/" { if(--depth == 0) goto strip; else goto comment; } "\n" { ++(ScanCB.lineNum); ScanCB.linePos = ScanCB.pos + (cursor - ScanCB.mrk); goto comment; } "/*" { ++depth; goto comment; } eof { RETURN(blanks); } any { goto comment; } */ } re2c-1.0.1/examples/langs/modula.re0000644000175000017500000001141113063315631014017 00000000000000#include #include #include typedef unsigned int uint; typedef unsigned char uchar; #define BSIZE 8192 #define YYCTYPE uchar #define YYCURSOR cursor #define YYLIMIT s->lim #define YYMARKER s->ptr #define YYCTXMARKER s->ctx #define YYFILL {cursor = fill(s, cursor);} #define RETURN(i) {s->cur = cursor; return i;} typedef struct Scanner { int fd; uchar *bot, *tok, *ptr, *ctx, *cur, *pos, *lim, *top, *eof; uint line; } Scanner; uchar *fill(Scanner *s, uchar *cursor){ if(!s->eof){ uint cnt = s->tok - s->bot; if(cnt){ memcpy(s->bot, s->tok, s->lim - s->tok); s->tok = s->bot; s->ptr -= cnt; cursor -= cnt; s->pos -= cnt; s->lim -= cnt; } if((s->top - s->lim) < BSIZE){ uchar *buf = (uchar*) malloc(((s->lim - s->bot) + BSIZE)*sizeof(uchar)); memcpy(buf, s->tok, s->lim - s->tok); s->tok = buf; s->ptr = &buf[s->ptr - s->bot]; cursor = &buf[cursor - s->bot]; s->pos = &buf[s->pos - s->bot]; s->lim = &buf[s->lim - s->bot]; s->top = &s->lim[BSIZE]; free(s->bot); s->bot = buf; } if((cnt = read(s->fd, (char*) s->lim, BSIZE)) != BSIZE){ s->eof = &s->lim[cnt]; *(s->eof)++ = '\n'; } s->lim += cnt; } return cursor; } int scan(Scanner *s){ uchar *cursor = s->cur; uint depth; std: s->tok = cursor; /*!re2c any = [\000-\377]; digit = [0-9]; letter = [a-zA-Z]; */ /*!re2c "(*" { depth = 1; goto comment; } digit + {RETURN(1);} digit + / ".." {RETURN(1);} [0-7] + "B" {RETURN(2);} [0-7] + "C" {RETURN(3);} digit [0-9A-F] * "H" {RETURN(4);} digit + "." digit * ("E" ([+-]) ? digit +) ? {RETURN(5);} ['] (any\[\n']) * ['] | ["] (any\[\n"]) * ["] {RETURN(6);} "#" {RETURN(7);} "&" {RETURN(8);} "(" {RETURN(9);} ")" {RETURN(10);} "*" {RETURN(11);} "+" {RETURN(12);} "," {RETURN(13);} "-" {RETURN(14);} "." {RETURN(15);} ".." {RETURN(16);} "/" {RETURN(17);} ":" {RETURN(18);} ":=" {RETURN(19);} ";" {RETURN(20);} "<" {RETURN(21);} "<=" {RETURN(22);} "<>" {RETURN(23);} "=" {RETURN(24);} ">" {RETURN(25);} ">=" {RETURN(26);} "[" {RETURN(27);} "]" {RETURN(28);} "^" {RETURN(29);} "{" {RETURN(30);} "|" {RETURN(31);} "}" {RETURN(32);} "~" {RETURN(33);} "AND" {RETURN(34);} "ARRAY" {RETURN(35);} "BEGIN" {RETURN(36);} "BY" {RETURN(37);} "CASE" {RETURN(38);} "CONST" {RETURN(39);} "DEFINITION" {RETURN(40);} "DIV" {RETURN(41);} "DO" {RETURN(42);} "ELSE" {RETURN(43);} "ELSIF" {RETURN(44);} "END" {RETURN(45);} "EXIT" {RETURN(46);} "EXPORT" {RETURN(47);} "FOR" {RETURN(48);} "FROM" {RETURN(49);} "IF" {RETURN(50);} "IMPLEMENTATION" {RETURN(51);} "IMPORT" {RETURN(52);} "IN" {RETURN(53);} "LOOP" {RETURN(54);} "MOD" {RETURN(55);} "MODULE" {RETURN(56);} "NOT" {RETURN(57);} "OF" {RETURN(58);} "OR" {RETURN(59);} "POINTER" {RETURN(60);} "PROCEDURE" {RETURN(61);} "QUALIFIED" {RETURN(62);} "RECORD" {RETURN(63);} "REPEAT" {RETURN(64);} "RETURN" {RETURN(65);} "SET" {RETURN(66);} "THEN" {RETURN(67);} "TO" {RETURN(68);} "TYPE" {RETURN(69);} "UNTIL" {RETURN(70);} "VAR" {RETURN(71);} "WHILE" {RETURN(72);} "WITH" {RETURN(73);} letter (letter | digit) * {RETURN(74);} [ \t]+ { goto std; } "\n" { if(cursor == s->eof) RETURN(0); s->pos = cursor; s->line++; goto std; } any { printf("unexpected character: %c\n", *s->tok); goto std; } */ comment: /*!re2c "*)" { if(--depth == 0) goto std; else goto comment; } "(*" { ++depth; goto comment; } "\n" { if(cursor == s->eof) RETURN(0); s->tok = s->pos = cursor; s->line++; goto comment; } any { goto comment; } */ } /* void putStr(FILE *o, char *s, uint l){ while(l-- > 0) putc(*s++, o); } */ main(){ Scanner in; memset((char*) &in, 0, sizeof(in)); in.fd = 0; while(scan(&in)){ /* putc('<', stdout); putStr(stdout, (char*) in.tok, in.cur - in.tok); putc('>', stdout); putc('\n', stdout); */ } } re2c-1.0.1/NO_WARRANTY0000644000175000017500000000021613063315631011053 00000000000000re2c is distributed with no warranty whatever. The author and any other contributors take no responsibility for the consequences of its use. re2c-1.0.1/Makefile.am0000644000175000017500000001765713143417170011342 00000000000000# flags # do *not* add CXXFLAGS here, add them in configure.ac AM_CXXFLAGS = $(CXXFLAGSDEFAULT) RE2CFLAGS = -b # binary bin_PROGRAMS = re2c RE2C = re2c$(EXEEXT) # sources SRC_HDR = \ src/code/bitmap.h \ src/code/emit.h \ src/code/go.h \ src/code/input_api.h \ src/code/label.h \ src/code/output.h \ src/code/print.h \ src/conf/msg.h \ src/conf/opt.h \ src/conf/warn.h \ src/adfa/action.h \ src/adfa/adfa.h \ src/adfa/dump.h \ src/dfa/cfg/cfg.h \ src/dfa/closure.h \ src/dfa/dfa.h \ src/dfa/dump.h \ src/dfa/find_state.h \ src/dfa/tagpool.h \ src/dfa/tagtree.h \ src/dfa/tcmd.h \ src/nfa/nfa.h \ src/re/encoding/case.h \ src/re/encoding/enc.h \ src/re/encoding/range_suffix.h \ src/re/encoding/utf8/utf8.h \ src/re/encoding/utf8/utf8_regexp.h \ src/re/encoding/utf8/utf8_range.h \ src/re/encoding/utf16/utf16_range.h \ src/re/encoding/utf16/utf16_regexp.h \ src/re/encoding/utf16/utf16.h \ src/re/empty_class_policy.h \ src/re/re.h \ src/re/rule.h \ src/re/tag.h \ src/compile.h \ src/skeleton/path.h \ src/skeleton/skeleton.h \ src/ast/ast.h \ src/ast/input.h \ src/ast/parser.h \ src/ast/scanner.h \ src/ast/unescape.h \ src/util/allocate.h \ src/util/attribute.h \ src/util/c99_stdint.h \ src/util/counter.h \ src/util/forbid_copy.h \ src/util/free_list.h \ src/util/hash32.h \ src/util/local_increment.h \ src/util/lookup.h \ src/util/range.h \ src/util/s_to_n32_unsafe.h \ src/util/slab_allocator.h \ src/util/smart_ptr.h \ src/util/static_assert.h \ src/util/string_utils.h \ src/util/u32lim.h \ src/util/uniq_vector.h \ src/util/wrap_iter.h SRC = \ src/code/bitmap.cc \ src/code/emit_action.cc \ src/code/emit_dfa.cc \ src/code/label.cc \ src/code/go_construct.cc \ src/code/go_destruct.cc \ src/code/go_emit.cc \ src/code/go_used_labels.cc \ src/code/input_api.cc \ src/code/output.cc \ src/code/print.cc \ src/conf/msg.cc \ src/conf/opt.cc \ src/conf/warn.cc \ src/nfa/dump.cc \ src/nfa/estimate_size.cc \ src/nfa/re_to_nfa.cc \ src/adfa/adfa.cc \ src/adfa/dump.cc \ src/adfa/prepare.cc \ src/dfa/cfg/cfg.cc \ src/dfa/cfg/compact.cc \ src/dfa/cfg/dce.cc \ src/dfa/cfg/dump.cc \ src/dfa/cfg/freeze.cc \ src/dfa/cfg/interfere.cc \ src/dfa/cfg/liveanal.cc \ src/dfa/cfg/normalize.cc \ src/dfa/cfg/optimize.cc \ src/dfa/cfg/rename.cc \ src/dfa/cfg/varalloc.cc \ src/dfa/closure.cc \ src/dfa/dead_rules.cc \ src/dfa/determinization.cc \ src/dfa/dump.cc \ src/dfa/fallback_tags.cc \ src/dfa/fillpoints.cc \ src/dfa/find_state.cc \ src/dfa/minimization.cc \ src/dfa/tagpool.cc \ src/dfa/tagtree.cc \ src/dfa/tcmd.cc \ src/re/encoding/enc.cc \ src/re/encoding/range_suffix.cc \ src/re/encoding/utf8/utf8_regexp.cc \ src/re/encoding/utf8/utf8_range.cc \ src/re/encoding/utf8/utf8.cc \ src/re/encoding/utf16/utf16_regexp.cc \ src/re/encoding/utf16/utf16.cc \ src/re/encoding/utf16/utf16_range.cc \ src/re/ast_to_re.cc \ src/re/default_tags.cc \ src/re/fixed_tags.cc \ src/re/nullable.cc \ src/re/rule.cc \ src/re/split_charset.cc \ src/re/tag.cc \ src/compile.cc \ src/skeleton/control_flow.cc \ src/skeleton/generate_code.cc \ src/skeleton/generate_data.cc \ src/skeleton/maxpath.cc \ src/skeleton/skeleton.cc \ src/main.cc \ src/ast/ast.cc \ src/ast/input.cc \ src/ast/normalize.cc \ src/ast/scanner.cc \ src/ast/unescape.cc \ src/ast/validate.cc \ src/util/s_to_n32_unsafe.cc \ src/util/range.cc re2c_SOURCES = \ $(SRC_HDR) \ $(SRC) # autogenerated sources AUTOGEN_LEX = src/ast/lex.cc AUTOGEN_LEX_CONF = src/ast/lex_conf.cc AUTOGEN_PARSEOPT = src/conf/parse_opts.cc AUTOGEN_PARSER = src/ast/parser.cc AUTOGEN_PARSER_HDR = src/ast/y.tab.h AUTOGEN_HELP = src/conf/help.cc AUTOGEN = \ $(AUTOGEN_LEX) \ $(AUTOGEN_LEX_CONF) \ $(AUTOGEN_PARSER) \ $(AUTOGEN_PARSER_HDR) \ $(AUTOGEN_PARSEOPT)\ $(AUTOGEN_HELP) nodist_re2c_SOURCES = $(AUTOGEN) # bootstrap sources BOOTSTRAP_LEX = bootstrap/src/ast/lex.cc BOOTSTRAP_LEX_CONF = bootstrap/src/ast/lex_conf.cc BOOTSTRAP_PARSEOPT = bootstrap/src/conf/parse_opts.cc BOOTSTRAP_PARSER = bootstrap/src/ast/parser.cc BOOTSTRAP_PARSER_HDR = bootstrap/src/ast/y.tab.h BOOTSTRAP_DOC = bootstrap/doc/re2c.1 BOOTSTRAP_HELP = bootstrap/src/conf/help.cc BOOTSTRAP = \ $(BOOTSTRAP_LEX) \ $(BOOTSTRAP_LEX_CONF) \ $(BOOTSTRAP_DOC) \ $(BOOTSTRAP_HELP) \ $(BOOTSTRAP_PARSER) \ $(BOOTSTRAP_PARSER_HDR) \ $(BOOTSTRAP_PARSEOPT) # custom sources CUSTOM_LEX = src/ast/lex.re CUSTOM_LEX_CONF = src/ast/lex_conf.re CUSTOM_PARSEOPT = src/conf/parse_opts.re CUSTOM_PARSER = src/ast/parser.ypp CUSTOM_HELP = doc/help.rst CUSTOM = \ $(CUSTOM_LEX) \ $(CUSTOM_LEX_CONF) \ $(CUSTOM_PARSER) \ $(CUSTOM_PARSEOPT) \ $(CUSTOM_HELP) # docs SRC_DOC = doc/manpage.rst SRC_DOC_EXT = \ doc/manual/syntax/rules.rst_ \ doc/manual/syntax/interface.rst_ \ doc/manual/syntax/configurations.rst_ \ doc/manual/syntax/regular_expressions.rst_ \ doc/manual/warnings/warnings_list.rst \ doc/manual/warnings/warnings_general.rst \ doc/manual/features/generic_api/generic_api.rst_ \ doc/manual/features/conditions/conditions.rst_ \ doc/manual/features/state/state.rst_ \ doc/manual/features/submatch/submatch.rst_ \ doc/manual/features/encodings/encodings.rst_ \ doc/manual/options/options_list.rst DOC = doc/re2c.1 man_MANS = $(DOC) EXTRA_DIST = \ $(BOOTSTRAP) \ $(CUSTOM) \ $(SRC_DOC_EXT) \ CHANGELOG \ NO_WARRANTY \ README \ autogen.sh \ doc/loplas.ps \ doc/sample.bib \ doc/tdfa/tdfa.pdf \ examples \ test CLEANFILES = \ $(AUTOGEN) \ $(DOC) $(AUTOGEN_PARSER): $(CUSTOM_PARSER) $(AM_V_at)$(MKDIR_P) $(@D) $(AM_V_GEN) if test $(BISON) = "no"; \ then \ cp $(top_srcdir)/$(BOOTSTRAP_PARSER) $@ && \ cp $(top_srcdir)/$(BOOTSTRAP_PARSER_HDR) $(AUTOGEN_PARSER_HDR); \ else \ $(BISON) \ --output=$@ \ --defines=$(AUTOGEN_PARSER_HDR) \ $(top_srcdir)/$(CUSTOM_PARSER); \ fi # lexer depends on bison-generated header # so bison rule must be triggered before lexer rule $(AUTOGEN_LEX): $(AUTOGEN_PARSER) $(BOOTSTRAP_PARSER): $(CUSTOM_PARSER) # target directory exists (as part of source file tree) $(AM_V_GEN) test $(BISON) = "no" || \ $(BISON) \ --output=$(top_srcdir)/$@ \ --defines=$(top_srcdir)/$(BOOTSTRAP_PARSER_HDR) \ --no-lines \ $(top_srcdir)/$(CUSTOM_PARSER); .re.cc: $(AM_V_at)$(MKDIR_P) $(@D) $(AM_V_GEN) if test -x $(RE2C); \ then \ $(top_builddir)/$(RE2C) $(RE2CFLAGS) -o $@ $< && \ cp $@ $(top_srcdir)/bootstrap/$@; \ else \ cp $(top_srcdir)/bootstrap/$@ $@; \ fi # rebuild all re2c sources using newly built re2c .PHONY: bootstrap bootstrap: all rm $(top_builddir)/$(AUTOGEN_LEX) rm $(top_builddir)/$(AUTOGEN_LEX_CONF) rm $(top_builddir)/$(AUTOGEN_PARSEOPT) $(MAKE) all .PHONY: docs if REBUILD_DOCS docs: $(DOC) $(AUTOGEN_HELP) $(DOC): $(SRC_DOC) $(SRC_DOC_EXT) $(AM_V_at)$(MKDIR_P) $(@D) $(RST2MAN) $(top_builddir)/$(SRC_DOC) > $@ cp $@ $(top_srcdir)/$(BOOTSTRAP_DOC) $(AUTOGEN_HELP): $(CUSTOM_HELP) $(AM_V_at)$(MKDIR_P) $(@D) $(RST2MAN) $(top_builddir)/$(CUSTOM_HELP) > $@.1 $(top_srcdir)/genhelp.sh $@.1 $@ cp $@ $(top_srcdir)/$(BOOTSTRAP_HELP) else docs: $(DOC) $(AUTOGEN_HELP) @echo "Reconfigure to rebuild docs: ./configure --enable-docs" $(DOC): $(BOOTSTRAP_DOC) $(AM_V_at)$(MKDIR_P) $(@D) cp $(top_srcdir)/$(BOOTSTRAP_DOC) $@ $(AUTOGEN_HELP): $(BOOTSTRAP_HELP) $(AM_V_at)$(MKDIR_P) $(@D) cp $(top_srcdir)/$(BOOTSTRAP_HELP) $@ endif all-local: docs $(BOOTSTRAP_PARSER) # tests TST_SUITE = run_tests.sh .PHONY: tests tests: all $(TST_SUITE) $(top_builddir)/$(TST_SUITE) .PHONY: vtests vtests: all $(TST_SUITE) $(top_builddir)/$(TST_SUITE) --valgrind .PHONY: wtests wtests: all $(TST_SUITE) $(top_builddir)/$(TST_SUITE) --wine -j1 TST_RANGE = testrange testrange_SOURCES = \ src/test/range/test-impl.h \ src/test/range/test.cc \ src/test/range/test.h \ src/util/range.cc\ src/util/range.h \ src/util/static_assert.h TST_S_TO_N32_UNSAFE = testston32unsafe testston32unsafe_SOURCES = \ src/test/s_to_n32_unsafe/test.cc \ src/util/s_to_n32_unsafe.cc check_PROGRAMS = \ $(TST_RANGE) \ $(TST_S_TO_N32_UNSAFE) TESTS = $(TST_SUITE) $(check_PROGRAMS) re2c-1.0.1/depcomp0000755000175000017500000005601713143420402010644 00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2016-01-11.22; # UTC # Copyright (C) 1999-2017 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: re2c-1.0.1/bootstrap/0000755000175000017500000000000013143420715011362 500000000000000re2c-1.0.1/bootstrap/doc/0000755000175000017500000000000013143420715012127 500000000000000re2c-1.0.1/bootstrap/doc/re2c.10000644000175000017500000014772213143420710012774 00000000000000.\" Man page generated from reStructuredText. . .TH RE2C 1 "" "" "" .SH NAME re2c \- convert regular expressions to C/C++ code . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .SH SYNOPSIS .sp \fBre2c [OPTIONS] FILE\fP .SH DESCRIPTION .sp \fBre2c\fP is a lexer generator for C/C++. It finds regular expression specifications inside of C/C++ comments and replaces them with a hard\-coded DFA. The user must supply some interface code in order to control and customize the generated DFA. .SH OPTIONS .INDENT 0.0 .TP .B \fB\-? \-h \-\-help\fP Show a short help screen: .TP .B \fB\-b \-\-bit\-vectors\fP Implies \fB\-s\fP\&. Use bit vectors as well to try to coax better code out of the compiler. Most useful for specifications with more than a few keywords (e.g., for most programming languages). .TP .B \fB\-c \-\-conditions\fP Used for (f)lex\-like condition support. .TP .B \fB\-d \-\-debug\-output\fP Creates a parser that dumps information about the current position and the state the parser is in. This is useful for debugging parser issues and states. If you use this switch, you need to define a \fBYYDEBUG\fP macro, which will be called like a function with two parameters: \fBvoid YYDEBUG (int state, char current)\fP\&. The first parameter receives the state or \fB\-1\fP and the second parameter receives the input at the current cursor. .TP .B \fB\-D \-\-emit\-dot\fP Emit Graphviz dot data, which can then be processed with e.g., \fBdot \-Tpng input.dot > output.png\fP\&. Please note that scanners with many states may crash dot. .TP .B \fB\-e \-\-ecb\fP Generate a parser that supports EBCDIC. The generated code can deal with any character up to 0xFF. In this mode, \fBre2c\fP assumes an input character size of 1 byte. This switch is incompatible with \fB\-w\fP, \fB\-x\fP, \fB\-u\fP, and \fB\-8\fP\&. .TP .B \fB\-f \-\-storable\-state\fP Generate a scanner with support for storable state. .TP .B \fB\-F \-\-flex\-syntax\fP Partial support for flex syntax. When this flag is active, named definitions must be surrounded by curly braces and can be defined without an equal sign and the terminating semicolon. Instead, names are treated as direct double quoted strings. .TP .B \fB\-g \-\-computed\-gotos\fP Generate a scanner that utilizes GCC\(aqs computed\-goto feature. That is, \fBre2c\fP generates jump tables whenever a decision is of certain complexity (e.g., a lot of if conditions would be otherwise necessary). This is only usable with compilers that support this feature. Note that this implies \fB\-b\fP and that the complexity threshold can be configured using the \fBcgoto:threshold\fP inplace configuration. .TP .B \fB\-i \-\-no\-debug\-info\fP Do not output \fB#line\fP information. This is useful when you want use a CMS tool with \fBre2c\fP\(aqs output. You might want to do this if you do not want to impose re2c as a build requirement for your source. .TP .B \fB\-o OUTPUT \-\-output=OUTPUT\fP Specify the \fBOUTPUT\fP file. .TP .B \fB\-r \-\-reusable\fP Allows reuse of scanner definitions with \fB/*!use:re2c */\fP after \fB/*!rules:re2c */\fP\&. In this mode, no \fB/*!re2c */\fP block and exactly one \fB/*!rules:re2c */\fP must be present. The rules are saved and used by every \fB/*!use:re2c */\fP block that follows. These blocks can contain inplace configurations, especially \fBre2c:flags:e\fP, \fBre2c:flags:w\fP, \fBre2c:flags:x\fP, \fBre2c:flags:u\fP, and \fBre2c:flags:8\fP\&. That way it is possible to create the same scanner multiple times for different character types, different input mechanisms, or different output mechanisms. The \fB/*!use:re2c */\fP blocks can also contain additional rules that will be appended to the set of rules in \fB/*!rules:re2c */\fP\&. .TP .B \fB\-s \-\-nested\-ifs\fP Generate nested ifs for some switches. Many compilers need this assist to generate better code. .TP .B \fB\-t HEADER \-\-type\-header=HEADER\fP Create a \fBHEADER\fP file that contains types for the (f)lex\-like condition support. This can only be activated when \fB\-c\fP is in use. .TP .B \fB\-T \-\-tags\fP Enable submatch extraction with tags. .TP .B \fB\-P \-\-posix\-captures\fP Enable submatch extraction with POSIX\-style capturing groups. .TP .B \fB\-u \-\-unicode\fP Generate a parser that supports UTF\-32. The generated code can deal with any valid Unicode character up to 0x10FFFF. In this mode, \fBre2c\fP assumes an input character size of 4 bytes. This switch is incompatible with \fB\-e\fP, \fB\-w\fP, \fB\-x\fP, and \fB\-8\fP\&. This implies \fB\-s\fP\&. .TP .B \fB\-v \-\-version\fP Show version information. .TP .B \fB\-V \-\-vernum\fP Show the version as a number in the MMmmpp (Majorm, minor, patch) format. .TP .B \fB\-w \-\-wide\-chars\fP Generate a parser that supports UCS\-2. The generated code can deal with any valid Unicode character up to 0xFFFF. In this mode, \fBre2c\fP assumes an input character size of 2 bytes. This switch is incompatible with \fB\-e\fP, \fB\-x\fP, \fB\-u\fP, and \fB\-8\fP\&. This implies \fB\-s\fP\&. .TP .B \fB\-x \-\-utf\-16\fP Generate a parser that supports UTF\-16. The generated code can deal with any valid Unicode character up to 0x10FFFF. In this mode, \fBre2c\fP assumes an input character size of 2 bytes. This switch is incompatible with \fB\-e\fP, \fB\-w\fP, \fB\-u\fP, and \fB\-8\fP\&. This implies \fB\-s\fP\&. .TP .B \fB\-8 \-\-utf\-8\fP Generate a parser that supports UTF\-8. The generated code can deal with any valid Unicode character up to 0x10FFFF. In this mode, \fBre2c\fP assumes an input character size of 1 byte. This switch is incompatible with \fB\-e\fP, \fB\-w\fP, \fB\-x\fP, and \fB\-u\fP\&. .TP .B \fB\-\-case\-insensitive\fP Makes all strings case insensitive. This makes "\-quoted expressions behave as \(aq\-quoted expressions. .TP .B \fB\-\-case\-inverted\fP Invert the meaning of single and double quoted strings. With this switch, single quotes are case sensitive and double quotes are case insensitive. .TP .B \fB\-\-no\-generation\-date\fP Suppress date output in the generated file. .TP .B \fB\-\-no\-lookahead\fP Use TDFA(0) instead of TDFA(1). This option only has effect with \fB\-\-tags\fP or \fB\-\-posix\-captures\fP options. .TP .B \fB\-\-no\-optimize\-tags\fP Suppress optimization of tag variables (mostly used for debugging). .TP .B \fB\-\-no\-version\fP Suppress version output in the generated file. .TP .B \fB\-\-no\-generation\-date\fP Suppress version output in the generated file. .TP .B \fB\-\-encoding\-policy POLICY\fP Specify how \fBre2c\fP must treat Unicode surrogates. \fBPOLICY\fP can be one of the following: \fBfail\fP (abort with an error when a surrogate is encountered), \fBsubstitute\fP (silently replace surrogates with the error code point 0xFFFD), \fBignore\fP (treat surrogates as normal code points). By default, \fBre2c\fP ignores surrogates (for backward compatibility). The Unicode standard says that standalone surrogates are invalid code points, but different libraries and programs treat them differently. .TP .B \fB\-\-input INPUT\fP Specify re2c\(aqs input API. \fBINPUT\fP can be either \fBdefault\fP or \fBcustom\fP\&. .TP .B \fB\-S \-\-skeleton\fP Instead of embedding re2c\-generated code into C/C++ source, generate a self\-contained program for the same DFA. Most useful for correctness and performance testing. .TP .B \fB\-\-empty\-class POLICY\fP What to do if the user uses an empty character class. \fBPOLICY\fP can be one of the following: \fBmatch\-empty\fP (match empty input: pretty illogical, but this is the default for backwards compatibility reasons), \fBmatch\-none\fP (fail to match on any input), \fBerror\fP (compilation error). Note that there are various ways to construct an empty class, e.g., [], [^\ex00\-\exFF], [\ex00\-\exFF][\ex00\-\exFF]. .TP .B \fB\-\-dfa\-minimization \fP The internal algorithm used by re2c to minimize the DFA (defaults to \fBmoore\fP). Both the table filling algorithm and the Moore algorithm should produce the same DFA (up to states relabeling). The table filling algorithm is much simpler and slower; it serves as a reference implementation. .TP .B \fB\-\-eager\-skip\fP This option controls when the generated lexer advances to the next input symbol (that is, increments YYCURSOR or invokes YYSKIP). By default this happens after transition to the next state, but \fB\-\-eager\-skip\fP option allows to override default behavior and advance input position immediately after reading input symbol. This option is implied by \fB\-\-no\-lookahead\fP\&. .TP .B \fB\-\-dump\-nfa\fP Generate .dot representation of NFA and dump it on stderr. .TP .B \fB\-\-dump\-dfa\-raw\fP Generate .dot representation of DFA under construction and dump it on stderr. .TP .B \fB\-\-dump\-dfa\-det\fP Generate .dot representation of DFA immediately after determinization and dump it on stderr. .TP .B \fB\-\-dump\-dfa\-tagopt\fP Generate .dot representation of DFA after tag optimizations and dump it on stderr. .TP .B \fB\-\-dump\-dfa\-min\fP Generate .dot representation of DFA after minimization and dump it on stderr. .TP .B \fB\-\-dump\-adfa\fP Generate .dot representation of DFA after tunneling and dump it on stderr. .TP .B \fB\-1 \-\-single\-pass\fP Deprecated. Does nothing (single pass is the default now). .UNINDENT .INDENT 0.0 .TP .B \fB\-W\fP Turn on all warnings. .TP .B \fB\-Werror\fP Turn warnings into errors. Note that this option alone doesn\(aqt turn on any warnings; it only affects those warnings that have been turned on so far or will be turned on later. .TP .B \fB\-W\fP Turn on a \fBwarning\fP\&. .TP .B \fB\-Wno\-\fP Turn off a \fBwarning\fP\&. .TP .B \fB\-Werror\-\fP Turn on a \fBwarning\fP and treat it as an error (this implies \fB\-W\fP). .TP .B \fB\-Wno\-error\-\fP Don\(aqt treat this particular \fBwarning\fP as an error. This doesn\(aqt turn off the warning itself. .UNINDENT .INDENT 0.0 .TP .B \fB\-Wcondition\-order\fP Warn if the generated program makes implicit assumptions about condition numbering. You should use either the \fB\-t, \-\-type\-header\fP option or the \fB/*!types:re2c*/\fP directive to generate a mapping of condition names to numbers and then use the autogenerated condition names. .TP .B \fB\-Wempty\-character\-class\fP Warn if a regular expression contains an empty character class. Rationally, trying to match an empty character class makes no sense: it should always fail. However, for backwards compatibility reasons, \fBre2c\fP allows empty character classes and treats them as empty strings. Use the \fB\-\-empty\-class\fP option to change the default behavior. .TP .B \fB\-Wmatch\-empty\-string\fP Warn if a regular expression in a rule is nullable (matches an empty string). If the DFA runs in a loop and an empty match is unintentional (the input position in not advanced manually), the lexer may get stuck in an infinite loop. .TP .B \fB\-Wswapped\-range\fP Warn if the lower bound of a range is greater than its upper bound. The default behavior is to silently swap the range bounds. .TP .B \fB\-Wundefined\-control\-flow\fP Warn if some input strings cause undefined control flow in the lexer (the faulty patterns are reported). This is the most dangerous and most common mistake. It can be easily fixed by adding the default rule (\fB*\fP) (this rule has the lowest priority, matches any code unit, and consumes exactly one code unit). .TP .B \fB\-Wunreachable\-rules\fP Warn about rules that are shadowed by other rules and will never match. .TP .B \fB\-Wuseless\-escape\fP Warn if a symbol is escaped when it shouldn\(aqt be. By default, re2c silently ignores such escapes, but this may as well indicate a typo or error in the escape sequence. .TP .B \fB\-Wnondeterministic\-tags\fP Warn if tag has \fBn\fP\-th degree of nondeterminism, where \fBn\fP is greater than 1. .UNINDENT .SH INTERFACE CODE .sp The user must supply interface code either in the form of C/C++ code (macros, functions, variables, etc.) or in the form of \fBINPLACE CONFIGURATIONS\fP\&. Which symbols must be defined and which are optional depends on the particular use case. .INDENT 0.0 .TP .B \fBYYBACKUP ()\fP Backup current input position (used only with generic API). .TP .B \fBYYBACKUPCTX ()\fP Backup current input position for trailing context (used only with generic API). .TP .B \fBYYCONDTYPE\fP In \fB\-c\fP mode, you can use \fB\-t\fP to generate a file that contains the enumeration used as conditions. Each of the values refers to a condition of a rule set. .TP .B \fBYYCTXMARKER\fP l\-value of type \fBYYCTYPE *\fP\&. The generated code saves trailing context backtracking information in \fBYYCTXMARKER\fP\&. The user only needs to define this macro if a scanner specification uses trailing context in one or more of its regular expressions. .TP .B \fBYYCTYPE\fP Type used to hold an input symbol (code unit). Usually \fBchar\fP or \fBunsigned char\fP for ASCII, EBCDIC or UTF\-8, or \fIunsigned short\fP for UTF\-16 or UCS\-2, or \fBunsigned int\fP for UTF\-32. .TP .B \fBYYCURSOR\fP l\-value of type \fBYYCTYPE *\fP that points to the current input symbol. The generated code advances \fBYYCURSOR\fP as symbols are matched. On entry, \fBYYCURSOR\fP is assumed to point to the first character of the current token. On exit, \fBYYCURSOR\fP will point to the first character of the following token. .TP .B \fBYYDEBUG (state, current)\fP This is only needed if the \fB\-d\fP flag was specified. It allows easy debugging of the generated parser by calling a user defined function for every state. The function should have the following signature: \fBvoid YYDEBUG (int state, char current)\fP\&. The first parameter receives the state or \-1 and the second parameter receives the input at the current cursor. .TP .B \fBYYFILL (n)\fP The generated code "calls"" \fBYYFILL (n)\fP when the buffer needs (re)filling: at least \fBn\fP additional characters should be provided. \fBYYFILL (n)\fP should adjust \fBYYCURSOR\fP, \fBYYLIMIT\fP, \fBYYMARKER\fP, and \fBYYCTXMARKER\fP as needed. Note that for typical programming languages \fBn\fP will be the length of the longest keyword plus one. The user can place a comment of the form \fB/*!max:re2c*/\fP to insert a \fBYYMAXFILL\fP define set to the maximum length value. .TP .B \fBYYGETCONDITION ()\fP This define is used to get the condition prior to entering the scanner code when using the \fB\-c\fP switch. The value must be initialized with a value from the \fBYYCONDTYPE\fP enumeration type. .TP .B \fBYYGETSTATE ()\fP The user only needs to define this macro if the \fB\-f\fP flag was specified. In that case, the generated code "calls" \fBYYGETSTATE ()\fP at the very beginning of the scanner in order to obtain the saved state. \fBYYGETSTATE ()\fP must return a signed integer. The value must be either \-1, indicating that the scanner is entered for the first time, or a value previously saved by \fBYYSETSTATE (s)\fP\&. In the second case, the scanner will resume operations right after where the last \fBYYFILL (n)\fP was called. .TP .B \fBYYLESSTHAN (n)\fP Check if less than \fBn\fP input characters are left (used only with generic API). .TP .B \fBYYLIMIT\fP An expression of type \fBYYCTYPE *\fP that marks the end of the buffer \fBYYLIMIT[\-1]\fP is the last character in the buffer). The generated code repeatedly compares \fBYYCURSOR\fP to \fBYYLIMIT\fP to determine when the buffer needs (re)filling. .TP .B \fBYYMARKER\fP An l\-value of type \fBYYCTYPE *\fP\&. The generated code saves backtracking information in \fBYYMARKER\fP\&. Some simple scanners might not use this. .TP .B \fBYYMTAGP (t)\fP Append current input position to the history of tag \fBt\fP\&. .TP .B \fBYYMTAGN (t)\fP Append default value to the history of tag \fBt\fP\&. .TP .B \fBYYMAXFILL\fP This will be automatically defined by \fB/*!max:re2c*/\fP blocks as explained above. .TP .B \fBYYMAXNMATCH\fP This will be automatically defined by \fB/*!maxnmatch:re2c*/\fP\&. .TP .B \fBYYPEEK ()\fP Get current input character (used only with generic API). .TP .B \fBYYRESTORE ()\fP Restore input position (used only with generic API). .TP .B \fBYYRESTORECTX ()\fP Restore input position from the value of trailing context (used only with generic API). .TP .B \fBYYRESTORETAG (t)\fP Restore input position from the value of tag \fBt\fP (used only with generic API). .TP .B \fBYYSETCONDITION (c)\fP This define is used to set the condition in transition rules. This is only being used when \fB\-c\fP is active and transition rules are being used. .TP .B \fBYYSETSTATE (s)\fP The user only needs to define this macro if the \fB\-f\fP flag was specified. In that case, the generated code "calls" \fBYYSETSTATE\fP just before calling \fBYYFILL (n)\fP\&. The parameter to \fBYYSETSTATE\fP is a signed integer that uniquely identifies the specific instance of \fBYYFILL (n)\fP that is about to be called. Should the user wish to save the state of the scanner and have \fBYYFILL (n)\fP return to the caller, all he has to do is store that unique identifier in a variable. Later, when the scanner is called again, it will call \fBYYGETSTATE ()\fP and resume execution right where it left off. The generated code will contain both \fBYYSETSTATE (s)\fP and \fBYYGETSTATE\fP even if \fBYYFILL (n)\fP is disabled. .TP .B \fBYYSKIP ()\fP Advance input position to the next character (used only with generic API). .TP .B \fBYYSTAGP (t)\fP Save current input position to tag \fBt\fP (used only with generic API). .TP .B \fBYYSTAGN (t)\fP Save default value to tag \fBt\fP (used only with generic API). .UNINDENT .SH SYNTAX .sp Code for \fBre2c\fP consists of a set of \fBRULES\fP, \fBNAMED DEFINITIONS\fP, \fBCODE\fP and \fBINPLACE CONFIGURATIONS\fP\&. .SS RULES .sp Each rule consist of a regular expression (see \fBREGULAR EXPRESSIONS\fP) accompanied with a block of C/C++ code which is to be executed when the associated regular expression is matched. You can either start the code with an opening curly brace or the sequence \fB:=\fP\&. If you use an opening curly brace, \fBre2c\fP will count brace depth and stop looking for code automatically. Otherwise, curly braces are not allowed and \fBre2c\fP stops looking for code at the first line that does not begin with whitespace. If two or more rules overlap, the first rule is preferred. .sp There is one special rule that can be used instead of regular expression: the default rule \fB*\fP\&. Note that the default rule \fB*\fP differs from \fB[^]\fP: the default rule has the lowest priority, matches any code unit (either valid or invalid) and always consumes exactly one character. \fB[^]\fP, on the other hand, matches any valid code point (not the same as a code unit) and can consume multiple code units. In fact, when a variable\-length encoding is used, \fB*\fP is the only possible way to match an invalid input character. .sp In general, all rules have the form: .INDENT 0.0 .INDENT 3.5 \fBregular\-expression\-or\-* code\fP .UNINDENT .UNINDENT .sp If \fB\-c\fP is active, then each regular expression is preceded by a list of comma\-separated condition names. Besides the normal naming rules, there are two special cases: \fB<*>\fP (these rules are merged to all conditions) and \fB<>\fP (these rules cannot have an associated regular expression; their code is merged to all actions). Non\-empty rules may furthermore specify the new condition. In that case, \fBre2c\fP will generate the necessary code to change the condition automatically. Rules can use \fB:=>\fP as a shortcut to automatically generate code that not only sets the new condition state but also continues execution with the new state. A shortcut rule should not be used in a loop where there is code between the start of the loop and the \fBre2c\fP block unless \fBre2c:cond:goto\fP is changed to \fBcontinue\fP\&. If some code is needed before all rules (though not before simple jumps), you can insert it with \fB\fP pseudo\-rules. .INDENT 0.0 .INDENT 3.5 \fB regular\-expression\-or\-* code\fP .sp \fB regular\-expression\-or\-* => condition code\fP .sp \fB regular\-expression\-or\-* :=> condition\fP .sp \fB<> code\fP .sp \fB<> => condition code\fP .sp \fB<> :=> condition\fP .sp \fB code\fP .sp \fB code\fP .UNINDENT .UNINDENT .SS NAMED DEFINITIONS .sp Named definitions are of the form: .INDENT 0.0 .INDENT 3.5 \fBname = regular\-expression;\fP .UNINDENT .UNINDENT .sp If \fB\-F\fP is active, then named definitions are also of the form: .INDENT 0.0 .INDENT 3.5 \fBname { regular\-expression }\fP .UNINDENT .UNINDENT .SS INPLACE CONFIGURATIONS .INDENT 0.0 .TP .B \fBre2c:cgoto:threshold = 9;\fP When \fB\-g\fP is active, this value specifies the complexity threshold that triggers the generation of jump tables rather than nested ifs and decision bitfields. The threshold is compared against a calculated estimation of ifs needed where every used bitmap divides the threshold by 2. .TP .B \fBre2c:cond:divider = \(aq/* *********************************** */\(aq;\fP Allows to customize the divider for condition blocks. You can use \fB@@\fP to put the name of the condition or customize the placeholder using \fBre2c:cond:divider@cond\fP\&. .TP .B \fBre2c:cond:divider@cond = @@;\fP Specifies the placeholder that will be replaced with the condition name in \fBre2c:cond:divider\fP\&. .TP .B \fBre2c:condenumprefix = yyc;\fP Allows to specify the prefix used for condition values. That is, the text to be prepended to condition enum values in the generated output file. .TP .B \fBre2c:cond:goto@cond = @@;\fP Specifies the placeholder that will be replaced with the condition label in \fBre2c:cond:goto\fP\&. .TP .B \fBre2c:cond:goto = \(aqgoto @@;\(aq;\fP Allows to customize the condition goto statements used with \fB:=>\fP style rules. You can use \fB@@\fP to put the name of the condition or customize the placeholder using \fBre2c:cond:goto@cond\fP\&. You can also change this to \fBcontinue;\fP, which would allow you to continue with the next loop cycle including any code between your loop start and your re2c block. .TP .B \fBre2c:condprefix = yyc;\fP Allows to specify the prefix used for condition labels. That is, the text to be prepended to condition labels in the generated output file. .TP .B \fBre2c:define:YYBACKUPCTX = \(aqYYBACKUPCTX\(aq;\fP Replaces \fBYYBACKUPCTX\fP identifier with the specified string. .TP .B \fBre2c:define:YYBACKUP = \(aqYYBACKUP\(aq;\fP Replaces \fBYYBACKUP\fP identifier with the specified string. .TP .B \fBre2c:define:YYCONDTYPE = \(aqYYCONDTYPE\(aq;\fP Enumeration used for condition support with \fB\-c\fP mode. .TP .B \fBre2c:define:YYCTXMARKER = \(aqYYCTXMARKER\(aq;\fP Replaces the \fBYYCTXMARKER\fP placeholder with the specified identifier. .TP .B \fBre2c:define:YYCTYPE = \(aqYYCTYPE\(aq;\fP Replaces the \fBYYCTYPE\fP placeholder with the specified type. .TP .B \fBre2c:define:YYCURSOR = \(aqYYCURSOR\(aq;\fP Replaces the \fBYYCURSOR\fP placeholder with the specified identifier. .TP .B \fBre2c:define:YYDEBUG = \(aqYYDEBUG\(aq;\fP Replaces the \fBYYDEBUG\fP placeholder with the specified identifier. .TP .B \fBre2c:define:YYFILL@len = \(aq@@\(aq;\fP Any occurrence of this text inside of a \fBYYFILL\fP call will be replaced with the actual argument. .TP .B \fBre2c:define:YYFILL:naked = 0;\fP Controls the argument in the parentheses after \fBYYFILL\fP and the following semicolon. If zero, both the argument and the semicolon are omitted. If non\-zero, the argument is generated unless \fBre2c:yyfill:parameter\fP is set to zero; the semicolon is generated unconditionally. .TP .B \fBre2c:define:YYFILL = \(aqYYFILL\(aq;\fP Define a substitution for \fBYYFILL\fP\&. Note that by default, \fBre2c\fP generates an argument in parentheses and a semicolon after \fBYYFILL\fP\&. If you need to make \fBYYFILL\fP an arbitrary statement rather than a call, set \fBre2c:define:YYFILL:naked\fP to a non\-zero value and use \fBre2c:define:YYFILL@len\fP to set a placeholder for the formal parameter inside of your \fBYYFILL\fP body. .TP .B \fBre2c:define:YYGETCONDITION:naked = 0;\fP Controls the parentheses after \fBYYGETCONDITION\fP\&. If zero, the parentheses are omitted. If non\-zero, the parentheses are generated. .TP .B \fBre2c:define:YYGETCONDITION = \(aqYYGETCONDITION\(aq;\fP Substitution for \fBYYGETCONDITION\fP\&. Note that by default, \fBre2c\fP generates parentheses after \fBYYGETCONDITION\fP\&. Set \fBre2c:define:YYGETCONDITION:naked\fP to non\-zero to omit the parentheses. .TP .B \fBre2c:define:YYGETSTATE:naked = 0;\fP Controls the parentheses that follow \fBYYGETSTATE\fP\&. If zero, the parentheses are omitted. If non\-zero, they are generated. .TP .B \fBre2c:define:YYGETSTATE = \(aqYYGETSTATE\(aq;\fP Substitution for \fBYYGETSTATE\fP\&. Note that by default, \fBre2c\fP generates parentheses after \fBYYGETSTATE\fP\&. Set \fBre2c:define:YYGETSTATE:naked\fP to non\-zero to omit the parentheses. .TP .B \fBre2c:define:YYLESSTHAN = \(aqYYLESSTHAN\(aq;\fP Replaces \fBYYLESSTHAN\fP identifier with the specified string. .TP .B \fBre2c:define:YYLIMIT = \(aqYYLIMIT\(aq;\fP Replaces the \fBYYLIMIT\fP placeholder with the specified identifier. needed. .TP .B \fBre2c:define:YYMARKER = \(aqYYMARKER\(aq;\fP Replaces the \fBYYMARKER\fP placeholder with the specified identifier. .TP .B \fBre2c:define:YYMTAGN = \(aqYYMTAGN\(aq;\fP Replaces \fBYYMTAGN\fP identifier with the specified string. .TP .B \fBre2c:define:YYMTAGP = \(aqYYMTAGP\(aq;\fP Replaces \fBYYMTAGP\fP identifier with the specified string. .TP .B \fBre2c:define:YYPEEK = \(aqYYPEEK\(aq;\fP Replaces \fBYYPEEK\fP identifier with the specified string. .TP .B \fBre2c:define:YYRESTORECTX = \(aqYYRESTORECTX\(aq;\fP Replaces \fBYYRESTORECTX\fP identifier with the specified string. .TP .B \fBre2c:define:YYRESTORE = \(aqYYRESTORE\(aq;\fP Replaces \fBYYRESTORE\fP identifier with the specified string. .TP .B \fBre2c:define:YYRESTORETAG = \(aqYYRESTORETAG\(aq;\fP Replaces \fBYYRESTORETAG\fP identifier with the specified string. .TP .B \fBre2c:define:YYSETCONDITION@cond = \(aq@@\(aq;\fP Any occurrence of this text inside of \fBYYSETCONDITION\fP will be replaced with the actual argument. .TP .B \fBre2c:define:YYSETCONDITION:naked = 0;\fP Controls the argument in parentheses and the semicolon after \fBYYSETCONDITION\fP\&. If zero, both the argument and the semicolon are omitted. If non\-zero, both the argument and the semicolon are generated. .TP .B \fBre2c:define:YYSETCONDITION = \(aqYYSETCONDITION\(aq;\fP Substitution for \fBYYSETCONDITION\fP\&. Note that by default, \fBre2c\fP generates an argument in parentheses followed by semicolon after \fBYYSETCONDITION\fP\&. If you need to make \fBYYSETCONDITION\fP an arbitrary statement rather than a call, set \fBre2c:define:YYSETCONDITION:naked\fP to non\-zero and use \fBre2c:define:YYSETCONDITION@cond\fP to denote the formal parameter inside of the \fBYYSETCONDITION\fP body. .TP .B \fBre2c:define:YYSETSTATE:naked = 0;\fP Controls the argument in parentheses and the semicolon after \fBYYSETSTATE\fP\&. If zero, both argument and the semicolon are omitted. If non\-zero, both the argument and the semicolon are generated. .TP .B \fBre2c:define:YYSETSTATE@state = \(aq@@\(aq;\fP Any occurrence of this text inside of \fBYYSETSTATE\fP will be replaced with the actual argument. .TP .B \fBre2c:define:YYSETSTATE = \(aqYYSETSTATE\(aq;\fP Substitution for \fBYYSETSTATE\fP\&. Note that by default, \fBre2c\fP generates an argument in parentheses followed by a semicolon after \fBYYSETSTATE\fP\&. If you need to make \fBYYSETSTATE\fP an arbitrary statement rather than a call, set \fBre2c:define:YYSETSTATE:naked\fP to non\-zero and use \fBre2c:define:YYSETSTATE@cond\fP to denote formal parameter inside of your \fBYYSETSTATE\fP body. .TP .B \fBre2c:define:YYSKIP = \(aqYYSKIP\(aq;\fP Replaces \fBYYSKIP\fP identifier with the specified string. .TP .B \fBre2c:define:YYSTAGN = \(aqYYSTAGN\(aq;\fP Replaces \fBYYSTAGN\fP identifier with the specified string. .TP .B \fBre2c:define:YYSTAGP = \(aqYYSTAGP\(aq;\fP Replaces \fBYYSTAGP\fP identifier with the specified string. .TP .B \fBre2c:flags:8\fP or \fBre2c:flags:utf\-8\fP Same as \fB\-8 \-\-utf\-8\fP command\-line option. .TP .B \fBre2c:flags:b\fP or \fBre2c:flags:bit\-vectors\fP Same as \fB\-b \-\-bit\-vectors\fP command\-line option. .TP .B \fBre2c:flags:case\-insensitive = 0;\fP Same as \fB\-\-case\-insensitive\fP command\-line option. .TP .B \fBre2c:flags:case\-inverted = 0;\fP Same as \fB\-\-case\-inverted\fP command\-line option. .TP .B \fBre2c:flags:d\fP or \fBre2c:flags:debug\-output\fP Same as \fB\-d \-\-debug\-output\fP command\-line option. .TP .B \fBre2c:flags:dfa\-minimization = \(aqmoore\(aq;\fP Same as \fB\-\-dfa\-minimization\fP command\-line option. .TP .B \fBre2c:flags:eager\-skip = 0;\fP Same as \fB\-\-eager\-skip\fP command\-line option. .TP .B \fBre2c:flags:e\fP or \fBre2c:flags:ecb\fP Same as \fB\-e \-\-ecb\fP command\-line option. .TP .B \fBre2c:flags:empty\-class = \(aqmatch\-empty\(aq;\fP Same as \fB\-\-empty\-class\fP command\-line option. .TP .B \fBre2c:flags:encoding\-policy = \(aqignore\(aq;\fP Same as \fB\-\-encoding\-policy\fP command\-line option. .TP .B \fBre2c:flags:g\fP or \fBre2c:flags:computed\-gotos\fP Same as \fB\-g \-\-computed\-gotos\fP command\-line option. .TP .B \fBre2c:flags:i\fP or \fBre2c:flags:no\-debug\-info\fP Same as \fB\-i \-\-no\-debug\-info\fP command\-line option. .TP .B \fBre2c:flags:input = \(aqdefault\(aq;\fP Same as \fB\-\-input\fP command\-line option. .TP .B \fBre2c:flags:lookahead = 1;\fP Same as inverted \fB\-\-no\-lookahead\fP command\-line option. .TP .B \fBre2c:flags:optimize\-tags = 1;\fP Same as inverted \fB\-\-no\-optimize\-tags\fP command\-line option. .TP .B \fBre2c:flags:P\fP or \fBre2c:flags:posix\-captures\fP Same as \fB\-P \-\-posix\-captures\fP command\-line option. .TP .B \fBre2c:flags:s\fP or \fBre2c:flags:nested\-ifs\fP Same as \fB\-s \-\-nested\-ifs\fP command\-line option. .TP .B \fBre2c:flags:T\fP or \fBre2c:flags:tags\fP Same as \fB\-T \-\-tags\fP command\-line option. .TP .B \fBre2c:flags:u\fP or \fBre2c:flags:unicode\fP Same as \fB\-u \-\-unicode\fP command\-line option. .TP .B \fBre2c:flags:w\fP or \fBre2c:flags:wide\-chars\fP Same as \fB\-w \-\-wide\-chars\fP command\-line option. .TP .B \fBre2c:flags:x\fP or \fBre2c:flags:utf\-16\fP Same as \fB\-x \-\-utf\-16\fP command\-line option. .TP .B \fBre2c:indent:string = \(aq\et\(aq;\fP Specifies the string to use for indentation. Requires a string that should contain only whitespace unless you need something else for external tools. The easiest way to specify spaces is to enclose them in single or double quotes. If you do not want any indentation at all, you can simply set this to \(aq\(aq. .TP .B \fBre2c:indent:top = 0;\fP Specifies the minimum amount of indentation to use. Requires a numeric value greater than or equal to zero. .TP .B \fBre2c:labelprefix = \(aqyy\(aq;\fP Allows to change the prefix of numbered labels. The default is \fByy\fP\&. Can be set any string that is valid in a label name. .TP .B \fBre2c:label:yyFillLabel = \(aqyyFillLabel\(aq;\fP Overrides the name of the \fByyFillLabel\fP label. .TP .B \fBre2c:label:yyNext = \(aqyyNext\(aq;\fP Overrides the name of the \fByyNext\fP label. .TP .B \fBre2c:startlabel = 0;\fP If set to a non zero integer, then the start label of the next scanner block will be generated even if it isn\(aqt used by the scanner itself. Otherwise, the normal \fByy0\fP\-like start label is only generated if needed. If set to a text value, then a label with that text will be generated regardless of whether the normal start label is used or not. This setting is reset to 0 after a start label has been generated. .TP .B \fBre2c:state:abort = 0;\fP When not zero and the \fB\-f\fP switch is active, then the \fBYYGETSTATE\fP block will contain a default case that aborts and a \-1 case will be used for initialization. .TP .B \fBre2c:state:nextlabel = 0;\fP Used when \fB\-f\fP is active to control whether the \fBYYGETSTATE\fP block is followed by a \fByyNext:\fP label line. Instead of using \fByyNext\fP, you can usually also use configuration \fBstartlabel\fP to force a specific start label or default to \fByy0\fP as a start label. Instead of using a dedicated label, it is often better to separate the \fBYYGETSTATE\fP code from the actual scanner code by placing a \fB/*!getstate:re2c*/\fP comment. .TP .B \fBre2c:tags:expression = \(aq@@\(aq;\fP Allows to customize the way \fBre2c\fP addresses tag variables: by default it emits expressions of the form \fByyt\fP, but this might be inconvenient if tag variables are defined as fields in a struct, or for any other reason require special accessors. For example, setting \fBre2c:tags:expression = p\->@@\fP will result in \fBp\->yyt\fP\&. .TP .B \fBre2c:tags:prefix = \(aqyyt\(aq;\fP Allows to override prefix of tag variables. .TP .B \fBre2c:variable:yyaccept = yyaccept;\fP Overrides the name of the \fByyaccept\fP variable. .TP .B \fBre2c:variable:yybm = \(aqyybm\(aq;\fP Overrides the name of the \fByybm\fP variable. .TP .B \fBre2c:variable:yych = \(aqyych\(aq;\fP Overrides the name of the \fByych\fP variable. .TP .B \fBre2c:variable:yyctable = \(aqyyctable\(aq;\fP When both \fB\-c\fP and \fB\-g\fP are active, \fBre2c\fP will use this variable to generate a static jump table for \fBYYGETCONDITION\fP\&. .TP .B \fBre2c:variable:yystable = \(aqyystable\(aq;\fP Deprecated. .TP .B \fBre2c:variable:yytarget = \(aqyytarget\(aq;\fP Overrides the name of the \fByytarget\fP variable. .TP .B \fBre2c:yybm:hex = 0;\fP If set to zero, a decimal table will be used. Otherwise, a hexadecimal table will be generated. .TP .B \fBre2c:yych:conversion = 0;\fP When this setting is non zero, \fBre2c\fP automatically generates conversion code whenever yych gets read. In this case, the type must be defined using \fBre2c:define:YYCTYPE\fP\&. .TP .B \fBre2c:yych:emit = 1;\fP Set this to zero to suppress the generation of \fIyych\fP\&. .TP .B \fBre2c:yyfill:check = 1;\fP This can be set to 0 to suppress the generations of \fBYYCURSOR\fP and \fBYYLIMIT\fP based precondition checks. This option is useful when \fBYYLIMIT + YYMAXFILL\fP is always accessible. .TP .B \fBre2c:yyfill:enable = 1;\fP Set this to zero to suppress the generation of \fBYYFILL (n)\fP\&. When using this, be sure to verify that the generated scanner does not read beyond the available input, as allowing such behavior might introduce severe security issues to your programs. .TP .B \fBre2c:yyfill:parameter = 1;\fP Controls the argument in the parentheses that follow \fBYYFILL\fP\&. If zero, the argument is omitted. If non\-zero, the argument is generated unless \fBre2c:define:YYFILL:naked\fP is set to non\-zero. .UNINDENT .SS REGULAR EXPRESSIONS .INDENT 0.0 .TP .B \fB"foo"\fP literal string \fB"foo"\fP\&. ANSI\-C escape sequences can be used. .TP .B \fB\(aqfoo\(aq\fP literal string \fB"foo"\fP (case insensitive for characters [a\-zA\-Z]). ANSI\-C escape sequences can be used. .TP .B \fB[xyz]\fP character class; in this case, the regular expression matches \fBx\fP, \fBy\fP, or \fBz\fP\&. .TP .B \fB[abj\-oZ]\fP character class with a range in it; matches \fBa\fP, \fBb\fP, any letter from \fBj\fP through \fBo\fP, or \fBZ\fP\&. .TP .B \fB[^class]\fP inverted character class. .TP .B \fBr \e s\fP match any \fBr\fP which isn\(aqt \fBs\fP\&. \fBr\fP and \fBs\fP must be regular expressions which can be expressed as character classes. .TP .B \fBr*\fP zero or more occurrences of \fBr\fP\&. .TP .B \fBr+\fP one or more occurrences of \fBr\fP\&. .TP .B \fBr?\fP optional \fBr\fP\&. .TP .B \fB(r)\fP \fBr\fP; parentheses are used to override precedence. .TP .B \fBr s\fP \fBr\fP followed by \fBs\fP (concatenation). .TP .B \fBr | s\fP \fBr\fP or \fBs\fP (alternative). .TP .B \fBr\fP / \fBs\fP \fBr\fP but only if it is followed by \fBs\fP\&. Note that \fBs\fP is not part of the matched text. This type of regular expression is called "trailing context". Trailing context can only be at the end of a rule and cannot be part of a named definition. .TP .B \fBr{n}\fP matches \fBr\fP exactly \fBn\fP times. .TP .B \fBr{n,}\fP matches \fBr\fP at least \fBn\fP times. .TP .B \fBr{n,m}\fP matches \fBr\fP at least \fBn\fP times, but not more than \fBm\fP times. .TP .B \fB\&.\fP match any character except newline. .TP .B \fBname\fP matches a named definition as specified by \fBname\fP only if \fB\-F\fP is off. If \fB\-F\fP is active then this behaves like it was enclosed in double quotes and matches the string "name". .TP .B \fB@stag\fP save input position at which \fB@stag\fP matches in a variable named \fBstag\fP .TP .B \fB#mtag\fP save all input positions at which \fB#mtag\fP matches in a variable named \fBmtag\fP (multiple positions are possible if \fB#mtag\fP is enclosed in a repetition subexpression that matches several times) .UNINDENT .sp Character classes and string literals may contain octal or hexadecimal character definitions and the following set of escape sequences: \fB\ea\fP, \fB\eb\fP, \fB\ef\fP, \fB\en\fP, \fB\er\fP, \fB\et\fP, \fB\ev\fP, \fB\e\e\fP\&. An octal character is defined by a backslash followed by its three octal digits (e.g., \fB\e377\fP). Hexadecimal characters from 0 to 0xFF are defined by a backslash, a lower case \fBx\fP and two hexadecimal digits (e.g., \fB\ex12\fP). Hexadecimal characters from 0x100 to 0xFFFF are defined by a backslash, a lower case \fB\eu\(ga\(gaor an upper case \(ga\(ga\eX\fP, and four hexadecimal digits (e.g., \fB\eu1234\fP). Hexadecimal characters from 0x10000 to 0xFFFFffff are defined by a backslash, an upper case \fB\eU\fP, and eight hexadecimal digits (e.g., \fB\eU12345678\fP). .sp The only portable "any" rule is the default rule, \fB*\fP\&. .SH SUBMATCH EXTRACTION .sp \fBre2c\fP supports two kinds of submatch extraction. .sp The first option is \fB\-P \-\-posix\-captures\fP: it enables POSIX\-compliant capturing groups. In this mode parentheses in regular expressions denote the beginning and the end of capturing groups; the whole regular expression is group number zero. The number of groups for the matching rule is stored in a variable \fByynmatch\fP, and submatch results are stored in \fByypmatch\fP array. Both \fByynmatch\fP and \fByypmatch\fP should be defined by the user; note that \fByypmatch\fP size must be at least \fB[yynmatch * 2]\fP\&. \fBre2c\fP provides a directive \fB/*!maxnmatch:re2c*/\fP that defines a constant \fBYYMAXNMATCH\fP: the maximal value of \fByynmatch\fP among all rules. Note that \fBre2c\fP implements POSIX\-compliant disambiguation: each subexpression matches as long as possible, and subexpressions that start earlier in regular expression have priority over those starting later. .sp Second option is \fB\-T \-\-tags\fP\&. With this option one can use standalone tags of the form \fB@stag\fP and \fB#mtag\fP instead of capturing parentheses, where \fBstag\fP and \fBmtag\fP are arbitrary used\-defined names. Tags can be used anywhere inside of a regular expression; semantically they are just position markers. Tags of the form \fB@stag\fP are called \fIs\-tags\fP: they denote a single submatch value (the last input position where this tag matched). Tags of the form \fB#mtag\fP are called \fIm\-tags\fP: they denote multiple submatch values (the whole history of repetitions of this tag). All tags should be defined by the user as variables with the corresponding names. With standalone tags \fBre2c\fP uses leftmost greedy disambiguation: submatch positions correspond to the leftmost matching path through the regular expression. .sp With both \fB\-\-posix\-captures\fP and \fB\-\-tags\fP options \fBre2c\fP generates a number of tag variables that are used by the lexer to track multiple possible versions of each tag (multiple versions are caused by possible ambiguity of submatch). When a rule matches, ambiguity is resolved and all tags of this rule (or capturing parentheses, which are also implemented as tags) are initialized with the values of appropriate tag variables. Note that there is no one\-to\-one correspondence between tag variables and tags: the same tag variable may be reused for different tags, and one tag may require multiple tag variables to hold all its ambiguous versions. The exact number of tag variables is unknown to the user; this number is determined by \fBre2c\fP\&. However, tag variables should be defined by the user, because it might be necessary to update them in \fBYYFILL\fP and store them between invocations of lexer with \fB\-\-storable\-state\fP option. Therefore \fBre2c\fP provides directives \fB/*!stags:re2c ... */\fP and \fB/*!mtags:re2c ... */\fP that can be used to declare, initialize and manipulate tag variables. .sp \fIS\-tags\fP must support the following operations: .INDENT 0.0 .IP \(bu 2 save input position to \fIs\-tag\fP: \fBt = YYCURSOR\fP with default API, or user\-defined operation \fBYYSTAGP (t)\fP with generic API .IP \(bu 2 save default value to \fIs\-tag\fP: \fBt = NULL\fP with default API, or user\-defined operation \fBYYSTAGN (t)\fP with generic API .IP \(bu 2 copy one \fIs\-tag\fP to another: \fBt1 = t2\fP .UNINDENT .sp \fIM\-tags\fP must support the following operations: .INDENT 0.0 .IP \(bu 2 append input position to \fIm\-tag\fP: user\-defined operation \fBYYMTAGP (t)\fP with both default and generic API .IP \(bu 2 append default value to \fIm\-tag\fP: user\-defined operation \fBYYMTAGN (t)\fP with both default and generic API .IP \(bu 2 copy one \fIm\-tag\fP to another: \fBt1 = t2\fP .UNINDENT .sp \fIS\-tags\fP can be implemented as scalar values (pointers or offsets). \fIM\-tags\fP need a more complex representation, as they need to store a sequence of tag values. The most naive and inefficient representation of \fIm\-tag\fP is a list (array, vector) of tag values; a more efficient representation is to store all \fIm\-tags\fP in a prefix\-tree represented as array of nodes \fB(v, p)\fP, where \fBv\fP is tag value and \fBp\fP is a pointer to parent node. .sp For further details see \fBhttp://re2c.org/examples/examples.html\fP page on the website or \fBre2c/examples/\fP subdirectory of \fBre2c\fP distribution. .SH SCANNER WITH STORABLE STATES .sp When the \fB\-f\fP flag is specified, \fBre2c\fP generates a scanner that can store its current state, return to its caller, and later resume operations exactly where it left off. .sp The default mode of operation in \fBre2c\fP is a "pull" model, where the scanner asks for extra input whenever it needs it. However, this mode of operation assumes that the scanner is the "owner" of the parsing loop, and that may not always be convenient. .sp Typically, if there is a preprocessor ahead of the scanner in the stream, or for that matter, any other procedural source of data, the scanner cannot "ask" for more data unless both the scanner and the source live in separate threads. .sp The \fB\-f\fP flag is useful exactly for situations like that: it lets users design scanners that work in a "push" model, i.e., a model where data is fed to the scanner chunk by chunk. When the scanner runs out of data to consume, it stores its state and returns to the caller. When more input data is fed to the scanner, it resumes operations exactly where it left off. .sp Changes needed compared to the "pull" model: .INDENT 0.0 .IP \(bu 2 The user has to supply macros named \fBYYSETSTATE ()\fP and \fBYYGETSTATE (state)\fP\&. .IP \(bu 2 The \fB\-f\fP option inhibits declaration of \fByych\fP and \fByyaccept\fP, so the user has to declare them and save and restore them where required. In the \fBexamples/push_model/push.re\fP example, these are declared as fields of a (C++) class of which the scanner is a method, so they do not need to be saved/restored explicitly. For C, they could, e.g., be made macros that select fields from a structure passed in as a parameter. Alternatively, they could be declared as local variables, saved with \fBYYFILL (n)\fP when it decides to return and restored upon entering the function. Also, it could be more efficient to save the state from \fBYYFILL (n)\fP because \fBYYSETSTATE (state)\fP is called unconditionally. \fBYYFILL (n)\fP however does not get \fBstate\fP as a parameter, so we would have to store state in a local variable by \fBYYSETSTATE (state)\fP\&. .IP \(bu 2 Modify \fBYYFILL (n)\fP to return (from the function calling it) if more input is needed. .IP \(bu 2 Modify the caller to recognize if more input is needed and respond appropriately. .IP \(bu 2 The generated code will contain a switch block that is used to restore the last state by jumping behind the corresponding \fBYYFILL (n)\fP call. This code is automatically generated in the epilogue of the first \fB/*!re2c */\fP block. It is possible to trigger generation of the \fBYYGETSTATE ()\fP block earlier by placing a \fB/*!getstate:re2c*/\fP comment. This is especially useful when the scanner code should be wrapped inside a loop. .UNINDENT .sp Please see \fBexamples/push_model/push.re\fP for an example of a "push" model scanner. The generated code can be tweaked with inplace configurations \fBstate:abort\fP and \fBstate:nextlabel\fP\&. .SH SCANNER WITH CONDITION SUPPORT .sp You can precede regular expressions with a list of condition names when using the \fB\-c\fP switch. \fBre2c\fP will then generate a scanner block for each condition, and each of the generated blocks will have its own precondition. The precondition is given by the interface define \fBYYGETCONDITON()\fP and must be of type \fBYYCONDTYPE\fP\&. .sp There are two special rule types. First, the rules of the condition \fB<*>\fP are merged to all conditions (note that they have a lower priority than other rules of that condition). And second, the empty condition list allows to provide a code block that does not have a scanner part, meaning it does not allow any regular expressions. The condition value referring to this special block is always the one with the enumeration value 0. This way the code of this special rule can be used to initialize a scanner. It is in no way necessary to have these rules: but sometimes it is helpful to have a dedicated uninitialized condition state. .sp Non empty rules allow to specify the new condition, which makes them transition rules. Besides generating calls for the \fBYYSETCONDTITION\fP define, no other special code is generated. .sp There is another kind of special rule that allows to prepend code to any code block of all rules of a certain set of conditions or to all code blocks of all rules. This can be helpful when some operation is common among rules. For instance, this can be used to store the length of the scanned string. These special setup rules start with an exclamation mark followed by either a list of conditions \fB\fP or a star \fB\fP\&. When \fBre2c\fP generates the code for a rule whose state does not have a setup rule and a starred setup rule is present, the starred setup code will be used as setup code. .SH ENCODINGS .sp \fBre2c\fP supports the following encodings: ASCII (default), EBCDIC (\fB\-e\fP), UCS\-2 (\fB\-w\fP), UTF\-16 (\fB\-x\fP), UTF\-32 (\fB\-u\fP) and UTF\-8 (\fB\-8\fP). See also inplace configuration \fBre2c:flags\fP\&. .sp The following concepts should be clarified when talking about encodings. A \fIcode point\fP is an abstract number that represents a single symbol. A \fIcode unit\fP is the smallest unit of memory, which is used in the encoded text (it corresponds to one character in the input stream). One or more code units may be needed to represent a single code point, depending on the encoding. In a \fIfixed\-length\fP encoding, each code point is represented with an equal number of code units. In \fIvariable\-length\fP encodings, different code points can be represented with different number of code units. .INDENT 0.0 .IP \(bu 2 ASCII is a fixed\-length encoding. Its code space includes 0x100 code points, from 0 to 0xFF. A code point is represented with exactly one 1\-byte code unit, which has the same value as the code point. The size of \fBYYCTYPE\fP must be 1 byte. .IP \(bu 2 EBCDIC is a fixed\-length encoding. Its code space includes 0x100 code points, from 0 to 0xFF. A code point is represented with exactly one 1\-byte code unit, which has the same value as the code point. The size of \fBYYCTYPE\fP must be 1 byte. .IP \(bu 2 UCS\-2 is a fixed\-length encoding. Its code space includes 0x10000 code points, from 0 to 0xFFFF. One code point is represented with exactly one 2\-byte code unit, which has the same value as the code point. The size of \fBYYCTYPE\fP must be 2 bytes. .IP \(bu 2 UTF\-16 is a variable\-length encoding. Its code space includes all Unicode code points, from 0 to 0xD7FF and from 0xE000 to 0x10FFFF. One code point is represented with one or two 2\-byte code units. The size of \fBYYCTYPE\fP must be 2 bytes. .IP \(bu 2 UTF\-32 is a fixed\-length encoding. Its code space includes all Unicode code points, from 0 to 0xD7FF and from 0xE000 to 0x10FFFF. One code point is represented with exactly one 4\-byte code unit. The size of \fBYYCTYPE\fP must be 4 bytes. .IP \(bu 2 UTF\-8 is a variable\-length encoding. Its code space includes all Unicode code points, from 0 to 0xD7FF and from 0xE000 to 0x10FFFF. One code point is represented with a sequence of one, two, three, or four 1\-byte code units. The size of \fBYYCTYPE\fP must be 1 byte. .UNINDENT .sp In Unicode, values from range 0xD800 to 0xDFFF (surrogates) are not valid Unicode code points. Any encoded sequence of code units that would map to Unicode code points in the range 0xD800\-0xDFFF, is ill\-formed. The user can control how \fBre2c\fP treats such ill\-formed sequences with the \fB\-\-encoding\-policy \fP switch. .sp For some encodings, there are code units that never occur in a valid encoded stream (e.g., 0xFF byte in UTF\-8). If the generated scanner must check for invalid input, the only correct way to do so is to use the default rule (\fB*\fP). Note that the full range rule (\fB[^]\fP) won\(aqt catch invalid code units when a variable\-length encoding is used (\fB[^]\fP means "any valid code point", whereas the default rule (\fB*\fP) means "any possible code unit"). .SH GENERIC INPUT API .sp \fBre2c\fP usually operates on input with pointer\-like primitives \fBYYCURSOR\fP, \fBYYMARKER\fP, \fBYYCTXMARKER\fP, and \fBYYLIMIT\fP\&. .sp The generic input API (enabled with the \fB\-\-input custom\fP switch) allows customizing input operations. In this mode, \fBre2c\fP will express all operations on input in terms of the following primitives: .INDENT 0.0 .INDENT 3.5 .TS center; |l|l|. _ T{ \fBYYPEEK ()\fP T} T{ get current input character T} _ T{ \fBYYSKIP ()\fP T} T{ advance to next character T} _ T{ \fBYYBACKUP ()\fP T} T{ backup current input position T} _ T{ \fBYYBACKUPCTX ()\fP T} T{ backup current input position for trailing context T} _ T{ \fBYYSTAGP (t)\fP T} T{ save current input position to tag \fBt\fP T} _ T{ \fBYYSTAGN (t)\fP T} T{ save default value to tag \fBt\fP T} _ T{ \fBYYMTAGP (t)\fP T} T{ append input position to the history of tag \fBt\fP T} _ T{ \fBYYMTAGN (t)\fP T} T{ append default value to the history of tag \fBt\fP T} _ T{ \fBYYRESTORE ()\fP T} T{ restore current input position T} _ T{ \fBYYRESTORECTX ()\fP T} T{ restore current input position for trailing context T} _ T{ \fBYYRESTORETAG (t)\fP T} T{ restore current input position from tag \fBt\fP T} _ T{ \fBYYLESSTHAN (n)\fP T} T{ check if less than \fBn\fP input characters are left T} _ .TE .UNINDENT .UNINDENT .sp A couple of useful links that provide some examples: .INDENT 0.0 .IP 1. 3 \fI\%http://skvadrik.github.io/aleph_null/posts/re2c/2015\-01\-13\-input_model.html\fP .IP 2. 3 \fI\%http://skvadrik.github.io/aleph_null/posts/re2c/2015\-01\-15\-input_model_custom.html\fP .UNINDENT .SH SEE ALSO .sp You can find more information about \fBre2c\fP at: \fI\%http://re2c.org\fP\&. See also: flex(1), lex(1), quex (\fI\%http://quex.sourceforge.net\fP). .SH AUTHORS .sp Peter Bumbulis \fI\%peter@csg.uwaterloo.ca\fP .sp Brian Young \fI\%bayoung@acm.org\fP .sp Dan Nuffer \fI\%nuffer@users.sourceforge.net\fP .sp Marcus Boerger \fI\%helly@users.sourceforge.net\fP .sp Hartmut Kaiser \fI\%hkaiser@users.sourceforge.net\fP .sp Emmanuel Mogenet \fI\%mgix@mgix.com\fP .sp Ulya Trofimovich \fI\%skvadrik@gmail.com\fP .SH VERSION INFORMATION .sp This manpage describes \fBre2c\fP version 1.0.1, package date 11 Aug 2017. .\" Generated by docutils manpage writer. . re2c-1.0.1/bootstrap/src/0000755000175000017500000000000013143420715012151 500000000000000re2c-1.0.1/bootstrap/src/conf/0000755000175000017500000000000013143420715013076 500000000000000re2c-1.0.1/bootstrap/src/conf/parse_opts.cc0000644000175000017500000021660413143420710015510 00000000000000/* Generated by re2c 1.0.1 on Fri Aug 11 22:29:44 2017 */ #line 1 "../src/conf/parse_opts.re" #include "src/code/input_api.h" #include "src/conf/msg.h" #include "src/conf/opt.h" #include "src/re/empty_class_policy.h" #include "src/re/encoding/enc.h" namespace re2c { static inline bool next (char * & arg, char ** & argv) { arg = *++argv; return arg != NULL; } parse_opts_t parse_opts(char **argv, conopt_t &globopts, Opt &opts, Warn &warn) { #define YYCTYPE unsigned char char * YYCURSOR; char * YYMARKER; Warn::option_t option; #line 29 "../src/conf/parse_opts.re" opt: if (!next (YYCURSOR, argv)) { goto end; } #line 35 "src/conf/parse_opts.cc" { YYCTYPE yych; unsigned int yyaccept = 0; static const unsigned char yybm[] = { 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; yych = (YYCTYPE)*YYCURSOR; if (yych <= 0x00) goto yy2; if (yych == '-') goto yy6; goto yy4; yy2: ++YYCURSOR; #line 38 "../src/conf/parse_opts.re" { error ("bad option: %s", *argv); return EXIT_FAIL; } #line 84 "src/conf/parse_opts.cc" yy4: yych = (YYCTYPE)*++YYCURSOR; if (yybm[0+yych] & 128) { goto yy4; } goto yy8; yy6: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '-') { if (yych <= 0x00) goto yy10; if (yych >= '-') goto yy12; } else { if (yych == 'W') goto yy14; } #line 61 "../src/conf/parse_opts.re" { goto opt_short; } #line 101 "src/conf/parse_opts.cc" yy8: ++YYCURSOR; #line 59 "../src/conf/parse_opts.re" { if (!opts.source (*argv)) return EXIT_FAIL; goto opt; } #line 106 "src/conf/parse_opts.cc" yy10: ++YYCURSOR; #line 58 "../src/conf/parse_opts.re" { if (!opts.source ("")) return EXIT_FAIL; goto opt; } #line 111 "src/conf/parse_opts.cc" yy12: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy16; #line 62 "../src/conf/parse_opts.re" { goto opt_long; } #line 117 "src/conf/parse_opts.cc" yy14: yyaccept = 0; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= 'e') { if (yych <= 0x00) goto yy18; if (yych >= 'e') goto yy20; } else { if (yych == 'n') goto yy22; } yy15: #line 66 "../src/conf/parse_opts.re" { option = Warn::W; goto opt_warn; } #line 130 "src/conf/parse_opts.cc" yy16: ++YYCURSOR; #line 44 "../src/conf/parse_opts.re" { // all remaining arguments are non-options // so they must be input files // re2c expects exactly one input file for (char * f; next (f, argv);) { if (!opts.source (f)) { return EXIT_FAIL; } } goto end; } #line 147 "src/conf/parse_opts.cc" yy18: ++YYCURSOR; #line 64 "../src/conf/parse_opts.re" { warn.set_all (); goto opt; } #line 152 "src/conf/parse_opts.cc" yy20: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy23; yy21: YYCURSOR = YYMARKER; if (yyaccept == 0) { goto yy15; } else { goto yy27; } yy22: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy24; goto yy21; yy23: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy25; goto yy21; yy24: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy26; goto yy21; yy25: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy28; goto yy21; yy26: yyaccept = 1; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'e') goto yy29; yy27: #line 67 "../src/conf/parse_opts.re" { option = Warn::WNO; goto opt_warn; } #line 186 "src/conf/parse_opts.cc" yy28: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy30; goto yy21; yy29: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy31; goto yy21; yy30: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy32; if (yych == '-') goto yy34; goto yy21; yy31: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy36; goto yy21; yy32: ++YYCURSOR; #line 65 "../src/conf/parse_opts.re" { warn.set_all_error (); goto opt; } #line 208 "src/conf/parse_opts.cc" yy34: ++YYCURSOR; #line 68 "../src/conf/parse_opts.re" { option = Warn::WERROR; goto opt_warn; } #line 213 "src/conf/parse_opts.cc" yy36: yych = (YYCTYPE)*++YYCURSOR; if (yych != 'o') goto yy21; yych = (YYCTYPE)*++YYCURSOR; if (yych != 'r') goto yy21; yych = (YYCTYPE)*++YYCURSOR; if (yych != '-') goto yy21; ++YYCURSOR; #line 69 "../src/conf/parse_opts.re" { option = Warn::WNOERROR; goto opt_warn; } #line 224 "src/conf/parse_opts.cc" } #line 70 "../src/conf/parse_opts.re" opt_warn: #line 231 "src/conf/parse_opts.cc" { YYCTYPE yych; yych = (YYCTYPE)*YYCURSOR; switch (yych) { case 'c': goto yy45; case 'e': goto yy46; case 'm': goto yy47; case 'n': goto yy48; case 's': goto yy49; case 'u': goto yy50; default: goto yy43; } yy43: ++YYCURSOR; yy44: #line 75 "../src/conf/parse_opts.re" { error ("bad warning: %s", *argv); return EXIT_FAIL; } #line 252 "src/conf/parse_opts.cc" yy45: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'o') goto yy51; goto yy44; yy46: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'm') goto yy53; goto yy44; yy47: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'a') goto yy54; goto yy44; yy48: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'o') goto yy55; goto yy44; yy49: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'w') goto yy56; goto yy44; yy50: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'n') goto yy57; if (yych == 's') goto yy58; goto yy44; yy51: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'n') goto yy59; yy52: YYCURSOR = YYMARKER; goto yy44; yy53: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'p') goto yy60; goto yy52; yy54: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy61; goto yy52; yy55: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'n') goto yy62; goto yy52; yy56: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy63; goto yy52; yy57: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'd') goto yy64; if (yych == 'r') goto yy65; goto yy52; yy58: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy66; goto yy52; yy59: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'd') goto yy67; goto yy52; yy60: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy68; goto yy52; yy61: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'c') goto yy69; goto yy52; yy62: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'd') goto yy70; goto yy52; yy63: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'p') goto yy71; goto yy52; yy64: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy72; goto yy52; yy65: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy73; goto yy52; yy66: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'l') goto yy74; goto yy52; yy67: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy75; goto yy52; yy68: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'y') goto yy76; goto yy52; yy69: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'h') goto yy77; goto yy52; yy70: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy78; goto yy52; yy71: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'p') goto yy79; goto yy52; yy72: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'f') goto yy80; goto yy52; yy73: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy81; goto yy52; yy74: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy82; goto yy52; yy75: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy83; goto yy52; yy76: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy84; goto yy52; yy77: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy85; goto yy52; yy78: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy86; goto yy52; yy79: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy87; goto yy52; yy80: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy88; goto yy52; yy81: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'c') goto yy89; goto yy52; yy82: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy90; goto yy52; yy83: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy91; goto yy52; yy84: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'c') goto yy92; goto yy52; yy85: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy93; goto yy52; yy86: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy94; goto yy52; yy87: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'd') goto yy95; goto yy52; yy88: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'n') goto yy96; goto yy52; yy89: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'h') goto yy97; goto yy52; yy90: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy98; goto yy52; yy91: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy99; goto yy52; yy92: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'h') goto yy100; goto yy52; yy93: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'm') goto yy101; goto yy52; yy94: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy102; goto yy52; yy95: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy103; goto yy52; yy96: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy104; goto yy52; yy97: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy105; goto yy52; yy98: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy106; goto yy52; yy99: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'n') goto yy107; goto yy52; yy100: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy108; goto yy52; yy101: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'p') goto yy109; goto yy52; yy102: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'm') goto yy110; goto yy52; yy103: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy111; goto yy52; yy104: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'd') goto yy112; goto yy52; yy105: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'b') goto yy113; goto yy52; yy106: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy114; goto yy52; yy107: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy115; goto yy52; yy108: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy116; goto yy52; yy109: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy117; goto yy52; yy110: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy118; goto yy52; yy111: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy119; goto yy52; yy112: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy120; goto yy52; yy113: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'l') goto yy121; goto yy52; yy114: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy122; goto yy52; yy115: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy123; goto yy52; yy116: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy124; goto yy52; yy117: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'y') goto yy125; goto yy52; yy118: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'n') goto yy126; goto yy52; yy119: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'n') goto yy127; goto yy52; yy120: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'c') goto yy128; goto yy52; yy121: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy129; goto yy52; yy122: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'c') goto yy130; goto yy52; yy123: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy131; goto yy52; yy124: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'c') goto yy132; goto yy52; yy125: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy133; goto yy52; yy126: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy134; goto yy52; yy127: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'g') goto yy135; goto yy52; yy128: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy136; goto yy52; yy129: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy137; goto yy52; yy130: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy138; goto yy52; yy131: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'd') goto yy139; goto yy52; yy132: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy140; goto yy52; yy133: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy141; goto yy52; yy134: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy142; goto yy52; yy135: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy143; goto yy52; yy136: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'n') goto yy144; goto yy52; yy137: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy145; goto yy52; yy138: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'p') goto yy146; goto yy52; yy139: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy147; goto yy52; yy140: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy148; goto yy52; yy141: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy149; goto yy52; yy142: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy150; goto yy52; yy143: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy151; goto yy52; yy144: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy153; goto yy52; yy145: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'u') goto yy154; goto yy52; yy146: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy155; goto yy52; yy147: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy156; goto yy52; yy148: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy157; goto yy52; yy149: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy158; goto yy52; yy150: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy159; goto yy52; yy151: ++YYCURSOR; #line 83 "../src/conf/parse_opts.re" { warn.set (Warn::SWAPPED_RANGE, option); goto opt; } #line 681 "src/conf/parse_opts.cc" yy153: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy160; goto yy52; yy154: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'l') goto yy161; goto yy52; yy155: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy162; goto yy52; yy156: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy164; goto yy52; yy157: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy166; goto yy52; yy158: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy167; goto yy52; yy159: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'c') goto yy168; goto yy52; yy160: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy169; goto yy52; yy161: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy170; goto yy52; yy162: ++YYCURSOR; #line 86 "../src/conf/parse_opts.re" { warn.set (Warn::USELESS_ESCAPE, option); goto opt; } #line 722 "src/conf/parse_opts.cc" yy164: ++YYCURSOR; #line 79 "../src/conf/parse_opts.re" { warn.set (Warn::CONDITION_ORDER, option); goto opt; } #line 727 "src/conf/parse_opts.cc" yy166: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'c') goto yy171; goto yy52; yy167: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'n') goto yy172; goto yy52; yy168: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy173; goto yy52; yy169: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'l') goto yy174; goto yy52; yy170: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy175; goto yy52; yy171: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'l') goto yy176; goto yy52; yy172: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'g') goto yy177; goto yy52; yy173: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy178; goto yy52; yy174: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy179; goto yy52; yy175: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy180; goto yy52; yy176: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy182; goto yy52; yy177: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy183; goto yy52; yy178: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy185; goto yy52; yy179: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'f') goto yy186; goto yy52; yy180: ++YYCURSOR; #line 85 "../src/conf/parse_opts.re" { warn.set (Warn::UNREACHABLE_RULES, option); goto opt; } #line 788 "src/conf/parse_opts.cc" yy182: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy187; goto yy52; yy183: ++YYCURSOR; #line 81 "../src/conf/parse_opts.re" { warn.set (Warn::MATCH_EMPTY_STRING, option); goto opt; } #line 797 "src/conf/parse_opts.cc" yy185: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'g') goto yy188; goto yy52; yy186: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'l') goto yy189; goto yy52; yy187: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy190; goto yy52; yy188: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy191; goto yy52; yy189: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy192; goto yy52; yy190: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy193; goto yy52; yy191: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy195; goto yy52; yy192: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'w') goto yy197; goto yy52; yy193: ++YYCURSOR; #line 80 "../src/conf/parse_opts.re" { warn.set (Warn::EMPTY_CHARACTER_CLASS, option); goto opt; } #line 834 "src/conf/parse_opts.cc" yy195: ++YYCURSOR; #line 82 "../src/conf/parse_opts.re" { warn.set (Warn::NONDETERMINISTIC_TAGS, option); goto opt; } #line 839 "src/conf/parse_opts.cc" yy197: yych = (YYCTYPE)*++YYCURSOR; if (yych >= 0x01) goto yy52; ++YYCURSOR; #line 84 "../src/conf/parse_opts.re" { warn.set (Warn::UNDEFINED_CONTROL_FLOW, option); goto opt; } #line 846 "src/conf/parse_opts.cc" } #line 87 "../src/conf/parse_opts.re" opt_short: #line 853 "src/conf/parse_opts.cc" { YYCTYPE yych; yych = (YYCTYPE)*YYCURSOR; if (yych <= 'a') { if (yych <= 'D') { if (yych <= '7') { if (yych <= 0x00) goto yy202; if (yych == '1') goto yy206; goto yy204; } else { if (yych <= '>') { if (yych <= '8') goto yy208; goto yy204; } else { if (yych <= '?') goto yy210; if (yych <= 'C') goto yy204; goto yy212; } } } else { if (yych <= 'R') { if (yych <= 'F') { if (yych <= 'E') goto yy204; goto yy214; } else { if (yych == 'P') goto yy216; goto yy204; } } else { if (yych <= 'T') { if (yych <= 'S') goto yy218; goto yy220; } else { if (yych == 'V') goto yy222; goto yy204; } } } } else { if (yych <= 'n') { if (yych <= 'e') { if (yych <= 'b') goto yy224; if (yych <= 'c') goto yy226; if (yych <= 'd') goto yy228; goto yy230; } else { if (yych <= 'g') { if (yych <= 'f') goto yy232; goto yy234; } else { if (yych <= 'h') goto yy210; if (yych <= 'i') goto yy236; goto yy204; } } } else { if (yych <= 't') { if (yych <= 'q') { if (yych <= 'o') goto yy238; goto yy204; } else { if (yych <= 'r') goto yy240; if (yych <= 's') goto yy242; goto yy244; } } else { if (yych <= 'v') { if (yych <= 'u') goto yy246; goto yy248; } else { if (yych <= 'w') goto yy250; if (yych <= 'x') goto yy252; goto yy204; } } } } yy202: ++YYCURSOR; #line 96 "../src/conf/parse_opts.re" { goto opt; } #line 935 "src/conf/parse_opts.cc" yy204: ++YYCURSOR; #line 92 "../src/conf/parse_opts.re" { error ("bad short option: %s", *argv); return EXIT_FAIL; } #line 943 "src/conf/parse_opts.cc" yy206: ++YYCURSOR; #line 124 "../src/conf/parse_opts.re" { goto opt_short; } #line 948 "src/conf/parse_opts.cc" yy208: ++YYCURSOR; #line 119 "../src/conf/parse_opts.re" { opts.set_encoding(Enc::UTF8); goto opt_short; } #line 953 "src/conf/parse_opts.cc" yy210: ++YYCURSOR; #line 97 "../src/conf/parse_opts.re" { usage (); return EXIT_OK; } #line 958 "src/conf/parse_opts.cc" yy212: ++YYCURSOR; #line 102 "../src/conf/parse_opts.re" { globopts.target = TARGET_DOT; goto opt_short; } #line 963 "src/conf/parse_opts.cc" yy214: ++YYCURSOR; #line 104 "../src/conf/parse_opts.re" { globopts.FFlag = true; goto opt_short; } #line 968 "src/conf/parse_opts.cc" yy216: ++YYCURSOR; #line 114 "../src/conf/parse_opts.re" { opts.set_posix_captures(true); goto opt_short; } #line 973 "src/conf/parse_opts.cc" yy218: ++YYCURSOR; #line 106 "../src/conf/parse_opts.re" { globopts.target = TARGET_SKELETON; goto opt_short; } #line 978 "src/conf/parse_opts.cc" yy220: ++YYCURSOR; #line 113 "../src/conf/parse_opts.re" { opts.set_tags(true); goto opt_short; } #line 983 "src/conf/parse_opts.cc" yy222: ++YYCURSOR; #line 99 "../src/conf/parse_opts.re" { vernum (); return EXIT_OK; } #line 988 "src/conf/parse_opts.cc" yy224: ++YYCURSOR; #line 108 "../src/conf/parse_opts.re" { opts.set_bFlag(true); goto opt_short; } #line 993 "src/conf/parse_opts.cc" yy226: ++YYCURSOR; #line 101 "../src/conf/parse_opts.re" { globopts.cFlag = true; goto opt_short; } #line 998 "src/conf/parse_opts.cc" yy228: ++YYCURSOR; #line 109 "../src/conf/parse_opts.re" { opts.set_dFlag(true); goto opt_short; } #line 1003 "src/conf/parse_opts.cc" yy230: ++YYCURSOR; #line 115 "../src/conf/parse_opts.re" { opts.set_encoding(Enc::EBCDIC); goto opt_short; } #line 1008 "src/conf/parse_opts.cc" yy232: ++YYCURSOR; #line 103 "../src/conf/parse_opts.re" { globopts.fFlag = true; goto opt_short; } #line 1013 "src/conf/parse_opts.cc" yy234: ++YYCURSOR; #line 110 "../src/conf/parse_opts.re" { opts.set_gFlag(true); goto opt_short; } #line 1018 "src/conf/parse_opts.cc" yy236: ++YYCURSOR; #line 111 "../src/conf/parse_opts.re" { opts.set_iFlag(true); goto opt_short; } #line 1023 "src/conf/parse_opts.cc" yy238: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy254; #line 121 "../src/conf/parse_opts.re" { *argv = YYCURSOR; goto opt_output; } #line 1029 "src/conf/parse_opts.cc" yy240: ++YYCURSOR; #line 105 "../src/conf/parse_opts.re" { globopts.rFlag = true; goto opt_short; } #line 1034 "src/conf/parse_opts.cc" yy242: ++YYCURSOR; #line 112 "../src/conf/parse_opts.re" { opts.set_sFlag(true); goto opt_short; } #line 1039 "src/conf/parse_opts.cc" yy244: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy256; #line 123 "../src/conf/parse_opts.re" { *argv = YYCURSOR; goto opt_header; } #line 1045 "src/conf/parse_opts.cc" yy246: ++YYCURSOR; #line 116 "../src/conf/parse_opts.re" { opts.set_encoding(Enc::UTF32); goto opt_short; } #line 1050 "src/conf/parse_opts.cc" yy248: ++YYCURSOR; #line 98 "../src/conf/parse_opts.re" { version (); return EXIT_OK; } #line 1055 "src/conf/parse_opts.cc" yy250: ++YYCURSOR; #line 117 "../src/conf/parse_opts.re" { opts.set_encoding(Enc::UCS2); goto opt_short; } #line 1060 "src/conf/parse_opts.cc" yy252: ++YYCURSOR; #line 118 "../src/conf/parse_opts.re" { opts.set_encoding(Enc::UTF16); goto opt_short; } #line 1065 "src/conf/parse_opts.cc" yy254: ++YYCURSOR; #line 120 "../src/conf/parse_opts.re" { if (!next (YYCURSOR, argv)) { error_arg ("-o, --output"); return EXIT_FAIL; } goto opt_output; } #line 1070 "src/conf/parse_opts.cc" yy256: ++YYCURSOR; #line 122 "../src/conf/parse_opts.re" { if (!next (YYCURSOR, argv)) { error_arg ("-t, --type-header"); return EXIT_FAIL; } goto opt_header; } #line 1075 "src/conf/parse_opts.cc" } #line 125 "../src/conf/parse_opts.re" opt_long: #line 1082 "src/conf/parse_opts.cc" { YYCTYPE yych; yych = (YYCTYPE)*YYCURSOR; switch (yych) { case 'b': goto yy262; case 'c': goto yy263; case 'd': goto yy264; case 'e': goto yy265; case 'f': goto yy266; case 'h': goto yy267; case 'i': goto yy268; case 'n': goto yy269; case 'o': goto yy270; case 'p': goto yy271; case 'r': goto yy272; case 's': goto yy273; case 't': goto yy274; case 'u': goto yy275; case 'v': goto yy276; case 'w': goto yy277; default: goto yy260; } yy260: ++YYCURSOR; yy261: #line 130 "../src/conf/parse_opts.re" { error ("bad long option: %s", *argv); return EXIT_FAIL; } #line 1113 "src/conf/parse_opts.cc" yy262: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'i') goto yy278; goto yy261; yy263: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'a') goto yy280; if (yych == 'o') goto yy281; goto yy261; yy264: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= 'f') { if (yych <= 'd') goto yy261; if (yych <= 'e') goto yy282; goto yy283; } else { if (yych == 'u') goto yy284; goto yy261; } yy265: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= 'c') { if (yych == 'a') goto yy285; if (yych <= 'b') goto yy261; goto yy286; } else { if (yych <= 'l') goto yy261; if (yych <= 'm') goto yy287; if (yych <= 'n') goto yy288; goto yy261; } yy266: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'l') goto yy289; goto yy261; yy267: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'e') goto yy290; goto yy261; yy268: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'n') goto yy291; goto yy261; yy269: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'e') goto yy292; if (yych == 'o') goto yy293; goto yy261; yy270: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'u') goto yy294; goto yy261; yy271: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'o') goto yy295; goto yy261; yy272: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'e') goto yy296; goto yy261; yy273: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= 'j') { if (yych == 'i') goto yy297; goto yy261; } else { if (yych <= 'k') goto yy298; if (yych == 't') goto yy299; goto yy261; } yy274: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'a') goto yy300; if (yych == 'y') goto yy301; goto yy261; yy275: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'n') goto yy302; if (yych == 't') goto yy303; goto yy261; yy276: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'e') goto yy304; goto yy261; yy277: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'i') goto yy305; goto yy261; yy278: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy306; yy279: YYCURSOR = YYMARKER; goto yy261; yy280: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy307; goto yy279; yy281: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'm') goto yy308; goto yy279; yy282: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'b') goto yy309; goto yy279; yy283: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy310; goto yy279; yy284: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'm') goto yy311; goto yy279; yy285: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'g') goto yy312; goto yy279; yy286: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'b') goto yy313; goto yy279; yy287: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy314; if (yych == 'p') goto yy315; goto yy279; yy288: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'c') goto yy316; goto yy279; yy289: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy317; goto yy279; yy290: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'l') goto yy318; goto yy279; yy291: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'p') goto yy319; goto yy279; yy292: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy320; goto yy279; yy293: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy321; goto yy279; yy294: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy322; goto yy279; yy295: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy323; goto yy279; yy296: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'u') goto yy324; goto yy279; yy297: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'n') goto yy325; goto yy279; yy298: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy326; goto yy279; yy299: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy327; if (yych == 'o') goto yy328; goto yy279; yy300: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'g') goto yy329; goto yy279; yy301: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'p') goto yy330; goto yy279; yy302: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy331; goto yy279; yy303: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'f') goto yy332; goto yy279; yy304: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy333; goto yy279; yy305: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'd') goto yy334; goto yy279; yy306: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy335; goto yy279; yy307: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy336; goto yy279; yy308: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'p') goto yy337; goto yy279; yy309: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'u') goto yy338; goto yy279; yy310: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy339; goto yy279; yy311: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'p') goto yy340; goto yy279; yy312: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy341; goto yy279; yy313: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy342; goto yy279; yy314: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy344; goto yy279; yy315: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy345; goto yy279; yy316: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy346; goto yy279; yy317: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'x') goto yy347; goto yy279; yy318: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'p') goto yy348; goto yy279; yy319: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'u') goto yy349; goto yy279; yy320: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy350; goto yy279; yy321: yych = (YYCTYPE)*++YYCURSOR; switch (yych) { case 'd': goto yy351; case 'g': goto yy352; case 'l': goto yy353; case 'o': goto yy354; case 'v': goto yy355; default: goto yy279; } yy322: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'p') goto yy356; goto yy279; yy323: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy357; goto yy279; yy324: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy358; goto yy279; yy325: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'g') goto yy359; goto yy279; yy326: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'l') goto yy360; goto yy279; yy327: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy361; goto yy279; yy328: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy362; goto yy279; yy329: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy363; goto yy279; yy330: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy364; goto yy279; yy331: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'c') goto yy365; goto yy279; yy332: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy366; goto yy279; yy333: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'n') goto yy367; if (yych == 's') goto yy368; goto yy279; yy334: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy369; goto yy279; yy335: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'v') goto yy370; goto yy279; yy336: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy371; goto yy279; yy337: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'u') goto yy372; goto yy279; yy338: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'g') goto yy373; goto yy279; yy339: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'm') goto yy374; goto yy279; yy340: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy375; goto yy279; yy341: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy376; goto yy279; yy342: ++YYCURSOR; #line 159 "../src/conf/parse_opts.re" { opts.set_encoding(Enc::EBCDIC); goto opt; } #line 1469 "src/conf/parse_opts.cc" yy344: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy377; goto yy279; yy345: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'y') goto yy378; goto yy279; yy346: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'd') goto yy379; goto yy279; yy347: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy380; goto yy279; yy348: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy381; goto yy279; yy349: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy383; goto yy279; yy350: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy384; goto yy279; yy351: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy385; goto yy279; yy352: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy386; goto yy279; yy353: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy387; goto yy279; yy354: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'p') goto yy388; goto yy279; yy355: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy389; goto yy279; yy356: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'u') goto yy390; goto yy279; yy357: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'x') goto yy391; goto yy279; yy358: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy392; goto yy279; yy359: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'l') goto yy393; goto yy279; yy360: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy394; goto yy279; yy361: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy395; goto yy279; yy362: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy396; goto yy279; yy363: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy397; goto yy279; yy364: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy399; goto yy279; yy365: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy400; goto yy279; yy366: yych = (YYCTYPE)*++YYCURSOR; if (yych == '1') goto yy401; if (yych == '8') goto yy402; goto yy279; yy367: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'u') goto yy403; goto yy279; yy368: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy404; goto yy279; yy369: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy405; goto yy279; yy370: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy406; goto yy279; yy371: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy407; goto yy279; yy372: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy408; goto yy279; yy373: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy409; goto yy279; yy374: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy410; goto yy279; yy375: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 'c') { if (yych == 'a') goto yy411; goto yy279; } else { if (yych <= 'd') goto yy412; if (yych == 'n') goto yy413; goto yy279; } yy376: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy414; goto yy279; yy377: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'd') goto yy415; goto yy279; yy378: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy416; goto yy279; yy379: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy417; goto yy279; yy380: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy418; goto yy279; yy381: ++YYCURSOR; #line 134 "../src/conf/parse_opts.re" { usage (); return EXIT_OK; } #line 1629 "src/conf/parse_opts.cc" yy383: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy419; goto yy279; yy384: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'd') goto yy421; goto yy279; yy385: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'b') goto yy422; goto yy279; yy386: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'n') goto yy423; goto yy279; yy387: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy424; goto yy279; yy388: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy425; goto yy279; yy389: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy426; goto yy279; yy390: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy427; goto yy279; yy391: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy428; goto yy279; yy392: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'b') goto yy429; goto yy279; yy393: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy430; goto yy279; yy394: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy431; goto yy279; yy395: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy432; goto yy279; yy396: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'b') goto yy433; goto yy279; yy397: ++YYCURSOR; #line 154 "../src/conf/parse_opts.re" { opts.set_tags (true); goto opt; } #line 1690 "src/conf/parse_opts.cc" yy399: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'h') goto yy434; goto yy279; yy400: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'd') goto yy435; goto yy279; yy401: yych = (YYCTYPE)*++YYCURSOR; if (yych == '6') goto yy436; goto yy279; yy402: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy437; goto yy279; yy403: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'm') goto yy439; goto yy279; yy404: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy440; goto yy279; yy405: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'c') goto yy441; goto yy279; yy406: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'c') goto yy442; goto yy279; yy407: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'n') goto yy443; goto yy279; yy408: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy444; goto yy279; yy409: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy445; goto yy279; yy410: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'n') goto yy446; goto yy279; yy411: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'd') goto yy447; goto yy279; yy412: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'f') goto yy448; goto yy279; yy413: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'f') goto yy449; goto yy279; yy414: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy450; goto yy279; yy415: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy451; goto yy279; yy416: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'c') goto yy452; goto yy279; yy417: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'n') goto yy453; goto yy279; yy418: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'y') goto yy454; goto yy279; yy419: ++YYCURSOR; #line 167 "../src/conf/parse_opts.re" { goto opt_input; } #line 1775 "src/conf/parse_opts.cc" yy421: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy455; goto yy279; yy422: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'u') goto yy456; goto yy279; yy423: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy457; goto yy279; yy424: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'k') goto yy458; goto yy279; yy425: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy459; goto yy279; yy426: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy460; goto yy279; yy427: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy461; goto yy279; yy428: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'c') goto yy463; goto yy279; yy429: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'l') goto yy464; goto yy279; yy430: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy465; goto yy279; yy431: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy466; goto yy279; yy432: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'c') goto yy467; goto yy279; yy433: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'l') goto yy468; goto yy279; yy434: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy469; goto yy279; yy435: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy470; goto yy279; yy436: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy471; goto yy279; yy437: ++YYCURSOR; #line 163 "../src/conf/parse_opts.re" { opts.set_encoding(Enc::UTF8); goto opt; } #line 1844 "src/conf/parse_opts.cc" yy439: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy473; goto yy279; yy440: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'n') goto yy475; goto yy279; yy441: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'h') goto yy476; goto yy279; yy442: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy477; goto yy279; yy443: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy478; if (yych == 'v') goto yy479; goto yy279; yy444: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'd') goto yy480; goto yy279; yy445: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'u') goto yy481; goto yy279; yy446: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy482; goto yy279; yy447: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'f') goto yy483; goto yy279; yy448: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy484; goto yy279; yy449: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy485; goto yy279; yy450: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'k') goto yy486; goto yy279; yy451: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy487; goto yy279; yy452: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'l') goto yy488; goto yy279; yy453: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'g') goto yy489; goto yy279; yy454: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'n') goto yy490; goto yy279; yy455: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy491; goto yy279; yy456: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'g') goto yy492; goto yy279; yy457: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy493; goto yy279; yy458: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy494; goto yy279; yy459: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'm') goto yy495; goto yy279; yy460: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy496; goto yy279; yy461: ++YYCURSOR; #line 164 "../src/conf/parse_opts.re" { if (!next (YYCURSOR, argv)) { error_arg ("-o, --output"); return EXIT_FAIL; } goto opt_output; } #line 1938 "src/conf/parse_opts.cc" yy463: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy497; goto yy279; yy464: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy498; goto yy279; yy465: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'p') goto yy499; goto yy279; yy466: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'n') goto yy500; goto yy279; yy467: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy501; goto yy279; yy468: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy502; goto yy279; yy469: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy503; goto yy279; yy470: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy504; goto yy279; yy471: ++YYCURSOR; #line 162 "../src/conf/parse_opts.re" { opts.set_encoding(Enc::UTF16); goto opt; } #line 1975 "src/conf/parse_opts.cc" yy473: ++YYCURSOR; #line 136 "../src/conf/parse_opts.re" { vernum (); return EXIT_OK; } #line 1980 "src/conf/parse_opts.cc" yy475: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy506; goto yy279; yy476: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy508; goto yy279; yy477: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy509; goto yy279; yy478: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy510; goto yy279; yy479: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy511; goto yy279; yy480: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy512; goto yy279; yy481: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy513; goto yy279; yy482: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'm') goto yy514; goto yy279; yy483: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy515; goto yy279; yy484: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy516; goto yy279; yy485: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy517; goto yy279; yy486: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy519; goto yy279; yy487: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy520; goto yy279; yy488: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy522; goto yy279; yy489: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy523; goto yy279; yy490: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy524; goto yy279; yy491: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'f') goto yy525; goto yy279; yy492: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy526; goto yy279; yy493: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy527; goto yy279; yy494: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'h') goto yy528; goto yy279; yy495: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy529; goto yy279; yy496: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy530; goto yy279; yy497: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'p') goto yy531; goto yy279; yy498: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy532; goto yy279; yy499: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy534; goto yy279; yy500: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy535; goto yy279; yy501: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'n') goto yy537; goto yy279; yy502: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy538; goto yy279; yy503: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'd') goto yy539; goto yy279; yy504: ++YYCURSOR; #line 160 "../src/conf/parse_opts.re" { opts.set_encoding(Enc::UTF32); goto opt; } #line 2101 "src/conf/parse_opts.cc" yy506: ++YYCURSOR; #line 135 "../src/conf/parse_opts.re" { version (); return EXIT_OK; } #line 2106 "src/conf/parse_opts.cc" yy508: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy540; goto yy279; yy509: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy541; goto yy279; yy510: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'n') goto yy542; goto yy279; yy511: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy543; goto yy279; yy512: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'g') goto yy544; goto yy279; yy513: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'p') goto yy545; goto yy279; yy514: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy546; goto yy279; yy515: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy547; goto yy279; yy516: yych = (YYCTYPE)*++YYCURSOR; switch (yych) { case 'd': goto yy549; case 'm': goto yy550; case 'r': goto yy551; case 't': goto yy552; default: goto yy279; } yy517: ++YYCURSOR; #line 172 "../src/conf/parse_opts.re" { globopts.dump_nfa = true; goto opt; } #line 2152 "src/conf/parse_opts.cc" yy519: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'p') goto yy553; goto yy279; yy520: ++YYCURSOR; #line 139 "../src/conf/parse_opts.re" { globopts.target = TARGET_DOT; goto opt; } #line 2161 "src/conf/parse_opts.cc" yy522: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy554; goto yy279; yy523: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'p') goto yy555; goto yy279; yy524: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy556; goto yy279; yy525: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy557; goto yy279; yy526: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy558; goto yy279; yy527: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy559; goto yy279; yy528: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy560; goto yy279; yy529: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'z') goto yy561; goto yy279; yy530: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'n') goto yy562; goto yy279; yy531: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy563; goto yy279; yy532: ++YYCURSOR; #line 142 "../src/conf/parse_opts.re" { globopts.rFlag = true; goto opt; } #line 2206 "src/conf/parse_opts.cc" yy534: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy564; goto yy279; yy535: ++YYCURSOR; #line 145 "../src/conf/parse_opts.re" { globopts.target = TARGET_SKELETON; goto opt; } #line 2215 "src/conf/parse_opts.cc" yy537: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'd') goto yy565; goto yy279; yy538: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy566; goto yy279; yy539: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy567; goto yy279; yy540: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy568; goto yy279; yy541: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy569; goto yy279; yy542: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy570; goto yy279; yy543: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy571; goto yy279; yy544: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy572; goto yy279; yy545: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'u') goto yy573; goto yy279; yy546: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'z') goto yy574; goto yy279; yy547: ++YYCURSOR; #line 177 "../src/conf/parse_opts.re" { globopts.dump_adfa = true; goto opt; } #line 2260 "src/conf/parse_opts.cc" yy549: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy575; goto yy279; yy550: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy576; goto yy279; yy551: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy577; goto yy279; yy552: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy578; goto yy279; yy553: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy579; goto yy279; yy554: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy581; goto yy279; yy555: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy582; goto yy279; yy556: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'x') goto yy583; goto yy279; yy557: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy584; goto yy279; yy558: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'n') goto yy586; goto yy279; yy559: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy587; goto yy279; yy560: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy588; goto yy279; yy561: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy589; goto yy279; yy562: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy590; goto yy279; yy563: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'u') goto yy592; goto yy279; yy564: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy593; goto yy279; yy565: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy594; goto yy279; yy566: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy595; goto yy279; yy567: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy596; goto yy279; yy568: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy597; goto yy279; yy569: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy599; goto yy279; yy570: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy601; goto yy279; yy571: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy602; goto yy279; yy572: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy603; goto yy279; yy573: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy604; goto yy279; yy574: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy605; goto yy279; yy575: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy606; goto yy279; yy576: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'n') goto yy607; goto yy279; yy577: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'w') goto yy608; goto yy279; yy578: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'g') goto yy609; goto yy279; yy579: ++YYCURSOR; #line 158 "../src/conf/parse_opts.re" { opts.set_eager_skip(true); goto opt; } #line 2385 "src/conf/parse_opts.cc" yy581: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy610; goto yy279; yy582: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'l') goto yy612; goto yy279; yy583: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy613; goto yy279; yy584: ++YYCURSOR; #line 151 "../src/conf/parse_opts.re" { opts.set_sFlag (true); goto opt; } #line 2402 "src/conf/parse_opts.cc" yy586: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'f') goto yy615; goto yy279; yy587: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy616; goto yy279; yy588: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'd') goto yy617; goto yy279; yy589: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy618; goto yy279; yy590: ++YYCURSOR; #line 144 "../src/conf/parse_opts.re" { globopts.version = false; goto opt; } #line 2423 "src/conf/parse_opts.cc" yy592: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy619; goto yy279; yy593: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy620; goto yy279; yy594: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy622; goto yy279; yy595: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy623; goto yy279; yy596: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy624; goto yy279; yy597: ++YYCURSOR; #line 161 "../src/conf/parse_opts.re" { opts.set_encoding(Enc::UCS2); goto opt; } #line 2448 "src/conf/parse_opts.cc" yy599: ++YYCURSOR; #line 147 "../src/conf/parse_opts.re" { opts.set_bFlag (true); goto opt; } #line 2453 "src/conf/parse_opts.cc" yy601: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy626; goto yy279; yy602: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'd') goto yy627; goto yy279; yy603: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy628; goto yy279; yy604: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy629; goto yy279; yy605: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy631; goto yy279; yy606: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy632; goto yy279; yy607: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy634; goto yy279; yy608: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy636; goto yy279; yy609: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy638; goto yy279; yy610: ++YYCURSOR; #line 168 "../src/conf/parse_opts.re" { goto opt_empty_class; } #line 2494 "src/conf/parse_opts.cc" yy612: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy639; goto yy279; yy613: ++YYCURSOR; #line 141 "../src/conf/parse_opts.re" { globopts.FFlag = true; goto opt; } #line 2503 "src/conf/parse_opts.cc" yy615: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy640; goto yy279; yy616: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'n') goto yy641; goto yy279; yy617: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy642; goto yy279; yy618: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy644; goto yy279; yy619: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy645; goto yy279; yy620: ++YYCURSOR; #line 170 "../src/conf/parse_opts.re" { goto opt; } #line 2528 "src/conf/parse_opts.cc" yy622: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy646; goto yy279; yy623: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy647; goto yy279; yy624: ++YYCURSOR; #line 165 "../src/conf/parse_opts.re" { if (!next (YYCURSOR, argv)) { error_arg ("-t, --type-header"); return EXIT_FAIL; } goto opt_header; } #line 2541 "src/conf/parse_opts.cc" yy626: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy648; goto yy279; yy627: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy649; goto yy279; yy628: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy651; goto yy279; yy629: ++YYCURSOR; #line 148 "../src/conf/parse_opts.re" { opts.set_dFlag (true); goto opt; } #line 2558 "src/conf/parse_opts.cc" yy631: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy652; goto yy279; yy632: ++YYCURSOR; #line 174 "../src/conf/parse_opts.re" { globopts.dump_dfa_det = true; goto opt; } #line 2567 "src/conf/parse_opts.cc" yy634: ++YYCURSOR; #line 176 "../src/conf/parse_opts.re" { globopts.dump_dfa_min = true; goto opt; } #line 2572 "src/conf/parse_opts.cc" yy636: ++YYCURSOR; #line 173 "../src/conf/parse_opts.re" { globopts.dump_dfa_raw = true; goto opt; } #line 2577 "src/conf/parse_opts.cc" yy638: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'p') goto yy653; goto yy279; yy639: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'c') goto yy654; goto yy279; yy640: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy655; goto yy279; yy641: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy657; goto yy279; yy642: ++YYCURSOR; #line 156 "../src/conf/parse_opts.re" { opts.set_lookahead(false); goto opt; } #line 2598 "src/conf/parse_opts.cc" yy644: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy658; goto yy279; yy645: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy659; goto yy279; yy646: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy660; goto yy279; yy647: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy661; goto yy279; yy648: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'v') goto yy662; goto yy279; yy649: ++YYCURSOR; #line 153 "../src/conf/parse_opts.re" { opts.set_bCaseInverted (true); goto opt; } #line 2623 "src/conf/parse_opts.cc" yy651: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy663; goto yy279; yy652: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy665; goto yy279; yy653: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy666; goto yy279; yy654: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'y') goto yy667; goto yy279; yy655: ++YYCURSOR; #line 150 "../src/conf/parse_opts.re" { opts.set_iFlag (true); goto opt; } #line 2644 "src/conf/parse_opts.cc" yy657: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'd') goto yy668; goto yy279; yy658: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'g') goto yy669; goto yy279; yy659: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy670; goto yy279; yy660: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'n') goto yy672; goto yy279; yy661: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy673; goto yy279; yy662: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy675; goto yy279; yy663: ++YYCURSOR; #line 149 "../src/conf/parse_opts.re" { opts.set_gFlag (true); goto opt; } #line 2673 "src/conf/parse_opts.cc" yy665: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'n') goto yy676; goto yy279; yy666: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy677; goto yy279; yy667: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy679; goto yy279; yy668: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy681; goto yy279; yy669: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy682; goto yy279; yy670: ++YYCURSOR; #line 155 "../src/conf/parse_opts.re" { opts.set_posix_captures(true); goto opt; } #line 2698 "src/conf/parse_opts.cc" yy672: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy683; goto yy279; yy673: ++YYCURSOR; #line 140 "../src/conf/parse_opts.re" { globopts.fFlag = true; goto opt; } #line 2707 "src/conf/parse_opts.cc" yy675: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy684; goto yy279; yy676: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy686; goto yy279; yy677: ++YYCURSOR; #line 175 "../src/conf/parse_opts.re" { globopts.dump_dfa_tagopt = true; goto opt; } #line 2720 "src/conf/parse_opts.cc" yy679: ++YYCURSOR; #line 166 "../src/conf/parse_opts.re" { goto opt_encoding_policy; } #line 2725 "src/conf/parse_opts.cc" yy681: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy688; goto yy279; yy682: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy689; goto yy279; yy683: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy691; goto yy279; yy684: ++YYCURSOR; #line 152 "../src/conf/parse_opts.re" { opts.set_bCaseInsensitive (true); goto opt; } #line 2742 "src/conf/parse_opts.cc" yy686: ++YYCURSOR; #line 169 "../src/conf/parse_opts.re" { goto opt_dfa_minimization; } #line 2747 "src/conf/parse_opts.cc" yy688: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy693; goto yy279; yy689: ++YYCURSOR; #line 157 "../src/conf/parse_opts.re" { opts.set_optimize_tags(false); goto opt; } #line 2756 "src/conf/parse_opts.cc" yy691: ++YYCURSOR; #line 138 "../src/conf/parse_opts.re" { globopts.cFlag = true; goto opt; } #line 2761 "src/conf/parse_opts.cc" yy693: yych = (YYCTYPE)*++YYCURSOR; if (yych >= 0x01) goto yy279; ++YYCURSOR; #line 143 "../src/conf/parse_opts.re" { globopts.bNoGenerationDate = true; goto opt; } #line 2768 "src/conf/parse_opts.cc" } #line 178 "../src/conf/parse_opts.re" opt_output: #line 2775 "src/conf/parse_opts.cc" { YYCTYPE yych; static const unsigned char yybm[] = { 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; yych = (YYCTYPE)*YYCURSOR; if (yych <= 0x00) goto yy698; if (yych != '-') goto yy700; yy698: ++YYCURSOR; #line 183 "../src/conf/parse_opts.re" { error ("bad argument to option -o, --output: %s", *argv); return EXIT_FAIL; } #line 2822 "src/conf/parse_opts.cc" yy700: yych = (YYCTYPE)*++YYCURSOR; if (yybm[0+yych] & 128) { goto yy700; } ++YYCURSOR; #line 187 "../src/conf/parse_opts.re" { globopts.output_file = *argv; goto opt; } #line 2831 "src/conf/parse_opts.cc" } #line 188 "../src/conf/parse_opts.re" opt_header: #line 2838 "src/conf/parse_opts.cc" { YYCTYPE yych; static const unsigned char yybm[] = { 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; yych = (YYCTYPE)*YYCURSOR; if (yych <= 0x00) goto yy706; if (yych != '-') goto yy708; yy706: ++YYCURSOR; #line 193 "../src/conf/parse_opts.re" { error ("bad argument to option -t, --type-header: %s", *argv); return EXIT_FAIL; } #line 2885 "src/conf/parse_opts.cc" yy708: yych = (YYCTYPE)*++YYCURSOR; if (yybm[0+yych] & 128) { goto yy708; } ++YYCURSOR; #line 197 "../src/conf/parse_opts.re" { globopts.header_file = *argv; goto opt; } #line 2894 "src/conf/parse_opts.cc" } #line 198 "../src/conf/parse_opts.re" opt_encoding_policy: if (!next (YYCURSOR, argv)) { error_arg ("--encoding-policy"); return EXIT_FAIL; } #line 2906 "src/conf/parse_opts.cc" { YYCTYPE yych; yych = (YYCTYPE)*YYCURSOR; if (yych <= 'h') { if (yych == 'f') goto yy716; } else { if (yych <= 'i') goto yy717; if (yych == 's') goto yy718; } ++YYCURSOR; yy715: #line 208 "../src/conf/parse_opts.re" { error ("bad argument to option --encoding-policy (expected: ignore | substitute | fail): %s", *argv); return EXIT_FAIL; } #line 2923 "src/conf/parse_opts.cc" yy716: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'a') goto yy719; goto yy715; yy717: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'g') goto yy721; goto yy715; yy718: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'u') goto yy722; goto yy715; yy719: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy723; yy720: YYCURSOR = YYMARKER; goto yy715; yy721: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'n') goto yy724; goto yy720; yy722: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'b') goto yy725; goto yy720; yy723: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'l') goto yy726; goto yy720; yy724: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy727; goto yy720; yy725: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy728; goto yy720; yy726: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy729; goto yy720; yy727: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy731; goto yy720; yy728: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy732; goto yy720; yy729: ++YYCURSOR; #line 214 "../src/conf/parse_opts.re" { opts.set_encoding_policy (Enc::POLICY_FAIL); goto opt; } #line 2978 "src/conf/parse_opts.cc" yy731: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy733; goto yy720; yy732: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy734; goto yy720; yy733: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy735; goto yy720; yy734: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy737; goto yy720; yy735: ++YYCURSOR; #line 212 "../src/conf/parse_opts.re" { opts.set_encoding_policy (Enc::POLICY_IGNORE); goto opt; } #line 2999 "src/conf/parse_opts.cc" yy737: yych = (YYCTYPE)*++YYCURSOR; if (yych != 'u') goto yy720; yych = (YYCTYPE)*++YYCURSOR; if (yych != 't') goto yy720; yych = (YYCTYPE)*++YYCURSOR; if (yych != 'e') goto yy720; yych = (YYCTYPE)*++YYCURSOR; if (yych >= 0x01) goto yy720; ++YYCURSOR; #line 213 "../src/conf/parse_opts.re" { opts.set_encoding_policy (Enc::POLICY_SUBSTITUTE); goto opt; } #line 3012 "src/conf/parse_opts.cc" } #line 215 "../src/conf/parse_opts.re" opt_input: if (!next (YYCURSOR, argv)) { error_arg ("--input"); return EXIT_FAIL; } #line 3024 "src/conf/parse_opts.cc" { YYCTYPE yych; yych = (YYCTYPE)*YYCURSOR; if (yych <= 'b') goto yy745; if (yych <= 'c') goto yy747; if (yych <= 'd') goto yy748; yy745: ++YYCURSOR; yy746: #line 225 "../src/conf/parse_opts.re" { error ("bad argument to option --input (expected: default | custom): %s", *argv); return EXIT_FAIL; } #line 3039 "src/conf/parse_opts.cc" yy747: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'u') goto yy749; goto yy746; yy748: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'e') goto yy751; goto yy746; yy749: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy752; yy750: YYCURSOR = YYMARKER; goto yy746; yy751: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'f') goto yy753; goto yy750; yy752: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy754; goto yy750; yy753: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy755; goto yy750; yy754: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy756; goto yy750; yy755: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'u') goto yy757; goto yy750; yy756: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'm') goto yy758; goto yy750; yy757: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'l') goto yy759; goto yy750; yy758: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy760; goto yy750; yy759: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy762; goto yy750; yy760: ++YYCURSOR; #line 230 "../src/conf/parse_opts.re" { opts.set_input_api(INPUT_CUSTOM); goto opt; } #line 3094 "src/conf/parse_opts.cc" yy762: yych = (YYCTYPE)*++YYCURSOR; if (yych >= 0x01) goto yy750; ++YYCURSOR; #line 229 "../src/conf/parse_opts.re" { opts.set_input_api(INPUT_DEFAULT); goto opt; } #line 3101 "src/conf/parse_opts.cc" } #line 231 "../src/conf/parse_opts.re" opt_empty_class: if (!next (YYCURSOR, argv)) { error_arg ("--empty-class"); return EXIT_FAIL; } #line 3113 "src/conf/parse_opts.cc" { YYCTYPE yych; yych = (YYCTYPE)*YYCURSOR; if (yych == 'e') goto yy769; if (yych == 'm') goto yy770; ++YYCURSOR; yy768: #line 241 "../src/conf/parse_opts.re" { error ("bad argument to option --empty-class (expected: match-empty | match-none | error): %s", *argv); return EXIT_FAIL; } #line 3126 "src/conf/parse_opts.cc" yy769: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'r') goto yy771; goto yy768; yy770: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'a') goto yy773; goto yy768; yy771: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy774; yy772: YYCURSOR = YYMARKER; goto yy768; yy773: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy775; goto yy772; yy774: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy776; goto yy772; yy775: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'c') goto yy777; goto yy772; yy776: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy778; goto yy772; yy777: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'h') goto yy779; goto yy772; yy778: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy780; goto yy772; yy779: yych = (YYCTYPE)*++YYCURSOR; if (yych == '-') goto yy782; goto yy772; yy780: ++YYCURSOR; #line 247 "../src/conf/parse_opts.re" { opts.set_empty_class_policy (EMPTY_CLASS_ERROR); goto opt; } #line 3173 "src/conf/parse_opts.cc" yy782: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy783; if (yych == 'n') goto yy784; goto yy772; yy783: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'm') goto yy785; goto yy772; yy784: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy786; goto yy772; yy785: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'p') goto yy787; goto yy772; yy786: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'n') goto yy788; goto yy772; yy787: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy789; goto yy772; yy788: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy790; goto yy772; yy789: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'y') goto yy791; goto yy772; yy790: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy792; goto yy772; yy791: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy794; goto yy772; yy792: ++YYCURSOR; #line 246 "../src/conf/parse_opts.re" { opts.set_empty_class_policy (EMPTY_CLASS_MATCH_NONE); goto opt; } #line 3219 "src/conf/parse_opts.cc" yy794: ++YYCURSOR; #line 245 "../src/conf/parse_opts.re" { opts.set_empty_class_policy (EMPTY_CLASS_MATCH_EMPTY); goto opt; } #line 3224 "src/conf/parse_opts.cc" } #line 248 "../src/conf/parse_opts.re" opt_dfa_minimization: if (!next (YYCURSOR, argv)) { error_arg ("--minimization"); return EXIT_FAIL; } #line 3236 "src/conf/parse_opts.cc" { YYCTYPE yych; yych = (YYCTYPE)*YYCURSOR; if (yych == 'm') goto yy800; if (yych == 't') goto yy801; ++YYCURSOR; yy799: #line 258 "../src/conf/parse_opts.re" { error ("bad argument to option --dfa-minimization (expected: table | moore): %s", *argv); return EXIT_FAIL; } #line 3249 "src/conf/parse_opts.cc" yy800: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'o') goto yy802; goto yy799; yy801: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'a') goto yy804; goto yy799; yy802: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy805; yy803: YYCURSOR = YYMARKER; goto yy799; yy804: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'b') goto yy806; goto yy803; yy805: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy807; goto yy803; yy806: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'l') goto yy808; goto yy803; yy807: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy809; goto yy803; yy808: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy810; goto yy803; yy809: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy811; goto yy803; yy810: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 0x00) goto yy813; goto yy803; yy811: ++YYCURSOR; #line 263 "../src/conf/parse_opts.re" { opts.set_dfa_minimization (DFA_MINIMIZATION_MOORE); goto opt; } #line 3296 "src/conf/parse_opts.cc" yy813: ++YYCURSOR; #line 262 "../src/conf/parse_opts.re" { opts.set_dfa_minimization (DFA_MINIMIZATION_TABLE); goto opt; } #line 3301 "src/conf/parse_opts.cc" } #line 264 "../src/conf/parse_opts.re" end: if (!opts.source_file) { error ("no source file"); return EXIT_FAIL; } globopts.fix(); return OK; #undef YYCTYPE } } // namespace re2c re2c-1.0.1/bootstrap/src/conf/help.cc0000644000175000017500000003323213143420707014261 00000000000000extern const char *help; const char *help = "\n" " -? -h --help\n" " Show a short help screen:\n" "\n" " -b --bit-vectors\n" " Implies -s. Use bit vectors as well to try to coax better code\n" " out of the compiler. Most useful for specifications with more\n" " than a few keywords (e.g., for most programming languages).\n" "\n" " -c --conditions\n" " Used for (f)lex-like condition support.\n" "\n" " -d --debug-output\n" " Creates a parser that dumps information about the current posiâ€\n" " tion and the state the parser is in. This is useful for debugâ€\n" " ging parser issues and states. If you use this switch, you need\n" " to define a YYDEBUG macro, which will be called like a function\n" " with two parameters: void YYDEBUG (int state, char current).\n" " The first parameter receives the state or -1 and the second\n" " parameter receives the input at the current cursor.\n" "\n" " -D --emit-dot\n" " Emit Graphviz dot data, which can then be processed with e.g.,\n" " dot -Tpng input.dot > output.png. Please note that scanners with\n" " many states may crash dot.\n" "\n" " -e --ecb\n" " Generate a parser that supports EBCDIC. The generated code can\n" " deal with any character up to 0xFF. In this mode, re2c assumes\n" " an input character size of 1 byte. This switch is incompatible\n" " with -w, -x, -u, and -8.\n" "\n" " -f --storable-state\n" " Generate a scanner with support for storable state.\n" "\n" " -F --flex-syntax\n" " Partial support for flex syntax. When this flag is active, named\n" " definitions must be surrounded by curly braces and can be\n" " defined without an equal sign and the terminating semicolon.\n" " Instead, names are treated as direct double quoted strings.\n" "\n" " -g --computed-gotos\n" " Generate a scanner that utilizes GCC's computed-goto feature.\n" " That is, re2c generates jump tables whenever a decision is of\n" " certain complexity (e.g., a lot of if conditions would be otherâ€\n" " wise necessary). This is only usable with compilers that support\n" " this feature. Note that this implies -b and that the complexity\n" " threshold can be configured using the cgoto:threshold inplace\n" " configuration.\n" "\n" " -i --no-debug-info\n" " Do not output #line information. This is useful when you want\n" " use a CMS tool with re2c's output. You might want to do this if\n" " you do not want to impose re2c as a build requirement for your\n" " source.\n" "\n" " -o OUTPUT --output=OUTPUT\n" " Specify the OUTPUT file.\n" "\n" " -r --reusable\n" " Allows reuse of scanner definitions with /*!use:re2c */ after\n" " /*!rules:re2c */. In this mode, no /*!re2c */ block and exactly\n" " one /*!rules:re2c */ must be present. The rules are saved and\n" " used by every /*!use:re2c */ block that follows. These blocks\n" " can contain inplace configurations, especially re2c:flags:e,\n" " re2c:flags:w, re2c:flags:x, re2c:flags:u, and re2c:flags:8.\n" " That way it is possible to create the same scanner multiple\n" " times for different character types, different input mechanisms,\n" " or different output mechanisms. The /*!use:re2c */ blocks can\n" " also contain additional rules that will be appended to the set\n" " of rules in /*!rules:re2c */.\n" "\n" " -s --nested-ifs\n" " Generate nested ifs for some switches. Many compilers need this\n" " assist to generate better code.\n" "\n" " -t HEADER --type-header=HEADER\n" " Create a HEADER file that contains types for the (f)lex-like\n" " condition support. This can only be activated when -c is in use.\n" "\n" " -T --tags\n" " Enable submatch extraction with tags.\n" "\n" " -P --posix-captures\n" " Enable submatch extraction with POSIX-style capturing groups.\n" "\n" " -u --unicode\n" " Generate a parser that supports UTF-32. The generated code can\n" " deal with any valid Unicode character up to 0x10FFFF. In this\n" " mode, re2c assumes an input character size of 4 bytes. This\n" " switch is incompatible with -e, -w, -x, and -8. This implies -s.\n" "\n" " -v --version\n" " Show version information.\n" "\n" " -V --vernum\n" " Show the version as a number in the MMmmpp (Majorm, minor,\n" " patch) format.\n" "\n" " -w --wide-chars\n" " Generate a parser that supports UCS-2. The generated code can\n" " deal with any valid Unicode character up to 0xFFFF. In this\n" " mode, re2c assumes an input character size of 2 bytes. This\n" " switch is incompatible with -e, -x, -u, and -8. This implies -s.\n" "\n" " -x --utf-16\n" " Generate a parser that supports UTF-16. The generated code can\n" " deal with any valid Unicode character up to 0x10FFFF. In this\n" " mode, re2c assumes an input character size of 2 bytes. This\n" " switch is incompatible with -e, -w, -u, and -8. This implies -s.\n" "\n" " -8 --utf-8\n" " Generate a parser that supports UTF-8. The generated code can\n" " deal with any valid Unicode character up to 0x10FFFF. In this\n" " mode, re2c assumes an input character size of 1 byte. This\n" " switch is incompatible with -e, -w, -x, and -u.\n" "\n" " --case-insensitive\n" " Makes all strings case insensitive. This makes \"-quoted expresâ€\n" " sions behave as '-quoted expressions.\n" "\n" " --case-inverted\n" " Invert the meaning of single and double quoted strings. With\n" " this switch, single quotes are case sensitive and double quotes\n" " are case insensitive.\n" "\n" " --no-generation-date\n" " Suppress date output in the generated file.\n" "\n" " --no-lookahead\n" " Use TDFA(0) instead of TDFA(1). This option only has effect\n" " with --tags or --posix-captures options.\n" "\n" " --no-optimize-tags\n" " Suppress optimization of tag variables (mostly used for debugâ€\n" " ging).\n" "\n" " --no-version\n" " Suppress version output in the generated file.\n" "\n" " --no-generation-date\n" " Suppress version output in the generated file.\n" "\n" " --encoding-policy POLICY\n" " Specify how re2c must treat Unicode surrogates. POLICY can be\n" " one of the following: fail (abort with an error when a surrogate\n" " is encountered), substitute (silently replace surrogates with\n" " the error code point 0xFFFD), ignore (treat surrogates as normal\n" " code points). By default, re2c ignores surrogates (for backward\n" " compatibility). The Unicode standard says that standalone surroâ€\n" " gates are invalid code points, but different libraries and proâ€\n" " grams treat them differently.\n" "\n" " --input INPUT\n" " Specify re2c's input API. INPUT can be either default or custom.\n" "\n" " -S --skeleton\n" " Instead of embedding re2c-generated code into C/C++ source, genâ€\n" " erate a self-contained program for the same DFA. Most useful for\n" " correctness and performance testing.\n" "\n" " --empty-class POLICY\n" " What to do if the user uses an empty character class. POLICY can\n" " be one of the following: match-empty (match empty input: pretty\n" " illogical, but this is the default for backwards compatibility\n" " reasons), match-none (fail to match on any input), error (compiâ€\n" " lation error). Note that there are various ways to construct an\n" " empty class, e.g., [], [^\\x00-\\xFF], [\\x00-\\xFF][\\x00-\\xFF].\n" "\n" " --dfa-minimization
\n" " The internal algorithm used by re2c to minimize the DFA\n" " (defaults to moore). Both the table filling algorithm and the\n" " Moore algorithm should produce the same DFA (up to states relaâ€\n" " beling). The table filling algorithm is much simpler and\n" " slower; it serves as a reference implementation.\n" "\n" " --eager-skip\n" " This option controls when the generated lexer advances to the\n" " next input symbol (that is, increments YYCURSOR or invokes\n" " YYSKIP). By default this happens after transition to the next\n" " state, but --eager-skip option allows to override default behavâ€\n" " ior and advance input position immediately after reading input\n" " symbol. This option is implied by --no-lookahead.\n" "\n" " --dump-nfa\n" " Generate .dot representation of NFA and dump it on stderr.\n" "\n" " --dump-dfa-raw\n" " Generate .dot representation of DFA under construction and dump\n" " it on stderr.\n" "\n" " --dump-dfa-det\n" " Generate .dot representation of DFA immediately after deterâ€\n" " minization and dump it on stderr.\n" "\n" " --dump-dfa-tagopt\n" " Generate .dot representation of DFA after tag optimizations and\n" " dump it on stderr.\n" "\n" " --dump-dfa-min\n" " Generate .dot representation of DFA after minimization and dump\n" " it on stderr.\n" "\n" " --dump-adfa\n" " Generate .dot representation of DFA after tunneling and dump it\n" " on stderr.\n" "\n" " -1 --single-pass\n" " Deprecated. Does nothing (single pass is the default now).\n" "\n" " -W Turn on all warnings.\n" "\n" " -Werror\n" " Turn warnings into errors. Note that this option alone doesn't\n" " turn on any warnings; it only affects those warnings that have\n" " been turned on so far or will be turned on later.\n" "\n" " -W\n" " Turn on a warning.\n" "\n" " -Wno-\n" " Turn off a warning.\n" "\n" " -Werror-\n" " Turn on a warning and treat it as an error (this implies\n" " -W).\n" "\n" " -Wno-error-\n" " Don't treat this particular warning as an error. This doesn't\n" " turn off the warning itself.\n" "\n" " -Wcondition-order\n" " Warn if the generated program makes implicit assumptions about\n" " condition numbering. You should use either the -t, --type-header\n" " option or the /*!types:re2c*/ directive to generate a mapping of\n" " condition names to numbers and then use the autogenerated condiâ€\n" " tion names.\n" "\n" " -Wempty-character-class\n" " Warn if a regular expression contains an empty character class.\n" " Rationally, trying to match an empty character class makes no\n" " sense: it should always fail. However, for backwards compatibilâ€\n" " ity reasons, re2c allows empty character classes and treats them\n" " as empty strings. Use the --empty-class option to change the\n" " default behavior.\n" "\n" " -Wmatch-empty-string\n" " Warn if a regular expression in a rule is nullable (matches an\n" " empty string). If the DFA runs in a loop and an empty match is\n" " unintentional (the input position in not advanced manually), the\n" " lexer may get stuck in an infinite loop.\n" "\n" " -Wswapped-range\n" " Warn if the lower bound of a range is greater than its upper\n" " bound. The default behavior is to silently swap the range\n" " bounds.\n" "\n" " -Wundefined-control-flow\n" " Warn if some input strings cause undefined control flow in the\n" " lexer (the faulty patterns are reported). This is the most danâ€\n" " gerous and most common mistake. It can be easily fixed by adding\n" " the default rule (*) (this rule has the lowest priority, matches\n" " any code unit, and consumes exactly one code unit).\n" "\n" " -Wunreachable-rules\n" " Warn about rules that are shadowed by other rules and will never\n" " match.\n" "\n" " -Wuseless-escape\n" " Warn if a symbol is escaped when it shouldn't be. By default,\n" " re2c silently ignores such escapes, but this may as well indiâ€\n" " cate a typo or error in the escape sequence.\n" "\n" " -Wnondeterministic-tags\n" " Warn if tag has n-th degree of nondeterminism, where n is\n" " greater than 1.\n" "\n" ; re2c-1.0.1/bootstrap/src/ast/0000755000175000017500000000000013143420715012740 500000000000000re2c-1.0.1/bootstrap/src/ast/lex.cc0000644000175000017500000017756113143420710013773 00000000000000/* Generated by re2c 1.0.1 on Fri Aug 11 22:29:44 2017 */ #line 1 "../src/ast/lex.re" #include "src/util/c99_stdint.h" #include #include #include #include #include #include "src/conf/msg.h" #include "src/code/output.h" #include "src/re/encoding/enc.h" #include "src/ast/input.h" #include "src/ast/ast.h" #include "src/ast/scanner.h" #include "src/ast/parser.h" // needed by "y.tab.h" #include "src/ast/unescape.h" #include "src/util/range.h" #include "src/util/s_to_n32_unsafe.h" #include "y.tab.h" extern YYSTYPE yylval; #define YYCTYPE unsigned char #define YYCURSOR cur #define YYLIMIT lim #define YYMARKER mar #define YYCTXMARKER ctx #define YYFILL(n) { fill (n); } namespace re2c { // source code is in ASCII: pointers have type 'char *' // but re2c makes an implicit assumption that YYCTYPE is unsigned // when it generates comparisons #line 37 "../src/ast/lex.re" #line 58 "../src/ast/lex.re" Scanner::ParseMode Scanner::echo(OutputFile &out) { if (eof && cur == eof) // Catch EOF { return Stop; } tok = cur; echo: ptr = cur; #line 56 "src/ast/lex.cc" { YYCTYPE yych; unsigned int yyaccept = 0; static const unsigned char yybm[] = { 128, 128, 128, 128, 128, 128, 128, 128, 128, 160, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 160, 128, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; if ((YYLIMIT - YYCURSOR) < 17) YYFILL(17); yych = (YYCTYPE)*YYCURSOR; if (yych <= '\r') { if (yych <= '\t') { if (yych >= 0x01) goto yy4; } else { if (yych <= '\n') goto yy6; if (yych <= '\f') goto yy4; goto yy8; } } else { if (yych <= '%') { if (yych <= '$') goto yy4; goto yy9; } else { if (yych == '/') goto yy10; goto yy4; } } ++YYCURSOR; #line 135 "../src/ast/lex.re" { if (cur != eof) goto echo; out.wraw(tok, ptr); return Stop; } #line 120 "src/ast/lex.cc" yy4: ++YYCURSOR; yy5: #line 152 "../src/ast/lex.re" { goto echo; } #line 126 "src/ast/lex.cc" yy6: yyaccept = 0; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 32) { goto yy11; } if (yych == '#') goto yy14; yy7: #line 146 "../src/ast/lex.re" { cline++; pos = cur; goto echo; } #line 141 "src/ast/lex.cc" yy8: yych = (YYCTYPE)*++YYCURSOR; if (yych == '\n') goto yy6; goto yy5; yy9: yych = (YYCTYPE)*++YYCURSOR; if (yych == '{') goto yy16; goto yy5; yy10: yyaccept = 1; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == '*') goto yy18; goto yy5; yy11: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 32) { goto yy11; } if (yych == '#') goto yy14; yy13: YYCURSOR = YYMARKER; if (yyaccept == 0) { goto yy7; } else { goto yy5; } yy14: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = (YYCTYPE)*YYCURSOR; if (yych <= 0x1F) { if (yych == '\t') goto yy14; goto yy13; } else { if (yych <= ' ') goto yy14; if (yych == 'l') goto yy19; goto yy13; } yy16: ++YYCURSOR; #line 72 "../src/ast/lex.re" { out.wraw(tok, ptr); return Parse; } #line 189 "src/ast/lex.cc" yy18: yych = (YYCTYPE)*++YYCURSOR; if (yych == '!') goto yy20; goto yy13; yy19: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy21; goto yy13; yy20: yych = (YYCTYPE)*++YYCURSOR; switch (yych) { case 'g': goto yy22; case 'i': goto yy23; case 'm': goto yy24; case 'r': goto yy25; case 's': goto yy26; case 't': goto yy27; case 'u': goto yy28; default: goto yy13; } yy21: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'n') goto yy29; goto yy13; yy22: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy30; goto yy13; yy23: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'g') goto yy31; goto yy13; yy24: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy32; if (yych == 't') goto yy33; goto yy13; yy25: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy34; if (yych == 'u') goto yy35; goto yy13; yy26: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy36; goto yy13; yy27: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'y') goto yy37; goto yy13; yy28: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy38; goto yy13; yy29: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy39; goto yy13; yy30: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy40; goto yy13; yy31: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'n') goto yy41; goto yy13; yy32: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'x') goto yy42; goto yy13; yy33: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy43; goto yy13; yy34: yych = (YYCTYPE)*++YYCURSOR; if (yych == '2') goto yy44; goto yy13; yy35: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'l') goto yy45; goto yy13; yy36: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy46; goto yy13; yy37: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'p') goto yy47; goto yy13; yy38: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy48; goto yy13; yy39: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '0') goto yy50; if (yych <= '9') goto yy13; goto yy50; yy40: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy51; goto yy13; yy41: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'o') goto yy52; goto yy13; yy42: yych = (YYCTYPE)*++YYCURSOR; if (yych == ':') goto yy53; if (yych == 'n') goto yy54; goto yy13; yy43: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'g') goto yy55; goto yy13; yy44: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'c') goto yy16; goto yy13; yy45: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy56; goto yy13; yy46: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'g') goto yy57; goto yy13; yy47: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy58; goto yy13; yy48: yych = (YYCTYPE)*++YYCURSOR; if (yych == ':') goto yy59; goto yy13; yy49: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; yy50: if (yych <= 0x1F) { if (yych == '\t') goto yy49; goto yy13; } else { if (yych <= ' ') goto yy49; if (yych <= '0') goto yy13; if (yych <= '9') { YYCTXMARKER = YYCURSOR; goto yy60; } goto yy13; } yy51: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy62; goto yy13; yy52: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy63; goto yy13; yy53: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy64; goto yy13; yy54: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'm') goto yy65; goto yy13; yy55: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy66; goto yy13; yy56: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy67; goto yy13; yy57: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy68; goto yy13; yy58: yych = (YYCTYPE)*++YYCURSOR; if (yych == 's') goto yy69; goto yy13; yy59: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy70; goto yy13; yy60: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 64) { goto yy60; } if (yych <= '\f') { if (yych <= 0x08) goto yy13; if (yych <= '\t') goto yy71; if (yych <= '\n') goto yy73; goto yy13; } else { if (yych <= '\r') goto yy75; if (yych == ' ') goto yy71; goto yy13; } yy62: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy76; goto yy13; yy63: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy77; goto yy13; yy64: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy78; goto yy13; yy65: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy79; goto yy13; yy66: yych = (YYCTYPE)*++YYCURSOR; if (yych == ':') goto yy80; goto yy13; yy67: yych = (YYCTYPE)*++YYCURSOR; if (yych == ':') goto yy81; goto yy13; yy68: yych = (YYCTYPE)*++YYCURSOR; if (yych == ':') goto yy82; goto yy13; yy69: yych = (YYCTYPE)*++YYCURSOR; if (yych == ':') goto yy83; goto yy13; yy70: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy84; goto yy13; yy71: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych <= 0x1F) { if (yych == '\t') goto yy71; goto yy13; } else { if (yych <= ' ') goto yy71; if (yych == '"') goto yy85; goto yy13; } yy73: ++YYCURSOR; YYCURSOR = YYCTXMARKER; #line 141 "../src/ast/lex.re" { set_sourceline(); goto echo; } #line 452 "src/ast/lex.cc" yy75: yych = (YYCTYPE)*++YYCURSOR; if (yych == '\n') goto yy73; goto yy13; yy76: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy87; goto yy13; yy77: yych = (YYCTYPE)*++YYCURSOR; if (yych == ':') goto yy88; goto yy13; yy78: yych = (YYCTYPE)*++YYCURSOR; if (yych == '2') goto yy89; goto yy13; yy79: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy90; goto yy13; yy80: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy91; goto yy13; yy81: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy92; goto yy13; yy82: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy93; goto yy13; yy83: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy94; goto yy13; yy84: yych = (YYCTYPE)*++YYCURSOR; if (yych == '2') goto yy95; goto yy13; yy85: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 128) { goto yy85; } if (yych <= '\n') goto yy13; if (yych <= '"') goto yy96; goto yy97; yy87: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy98; goto yy13; yy88: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy99; goto yy13; yy89: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'c') goto yy100; goto yy13; yy90: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'c') goto yy102; goto yy13; yy91: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy103; goto yy13; yy92: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy104; goto yy13; yy93: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy105; goto yy13; yy94: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy106; goto yy13; yy95: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'c') goto yy107; goto yy13; yy96: yych = (YYCTYPE)*++YYCURSOR; if (yych == '\n') goto yy73; if (yych == '\r') goto yy75; goto yy13; yy97: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych == '\n') goto yy13; goto yy85; yy98: yych = (YYCTYPE)*++YYCURSOR; if (yych == ':') goto yy109; goto yy13; yy99: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy110; goto yy13; yy100: ++YYCURSOR; #line 93 "../src/ast/lex.re" { out.wraw(tok, ptr); out.wdelay_yymaxfill(); lex_end_of_comment(out); goto echo; } #line 567 "src/ast/lex.cc" yy102: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'h') goto yy111; goto yy13; yy103: yych = (YYCTYPE)*++YYCURSOR; if (yych == '2') goto yy112; goto yy13; yy104: yych = (YYCTYPE)*++YYCURSOR; if (yych == '2') goto yy113; goto yy13; yy105: yych = (YYCTYPE)*++YYCURSOR; if (yych == '2') goto yy114; goto yy13; yy106: yych = (YYCTYPE)*++YYCURSOR; if (yych == '2') goto yy115; goto yy13; yy107: ++YYCURSOR; #line 82 "../src/ast/lex.re" { out.wraw(tok, ptr); return Reuse; } #line 595 "src/ast/lex.cc" yy109: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy116; goto yy13; yy110: yych = (YYCTYPE)*++YYCURSOR; if (yych == '2') goto yy117; goto yy13; yy111: yych = (YYCTYPE)*++YYCURSOR; if (yych == ':') goto yy118; goto yy13; yy112: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'c') goto yy119; goto yy13; yy113: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'c') goto yy121; goto yy13; yy114: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'c') goto yy123; goto yy13; yy115: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'c') goto yy125; goto yy13; yy116: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy127; goto yy13; yy117: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'c') goto yy128; goto yy13; yy118: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy130; goto yy13; yy119: ++YYCURSOR; #line 129 "../src/ast/lex.re" { out.wraw(tok, ptr); lex_tags(out, true); goto echo; } #line 644 "src/ast/lex.cc" yy121: ++YYCURSOR; #line 77 "../src/ast/lex.re" { out.wraw(tok, ptr); return Rules; } #line 652 "src/ast/lex.cc" yy123: ++YYCURSOR; #line 123 "../src/ast/lex.re" { out.wraw(tok, ptr); lex_tags(out, false); goto echo; } #line 661 "src/ast/lex.cc" yy125: ++YYCURSOR; #line 114 "../src/ast/lex.re" { out.wraw(tok, ptr); out.wdelay_line_info(); out.wdelay_types(); out.wline_info(cline, get_fname().c_str()); lex_end_of_comment(out); goto echo; } #line 673 "src/ast/lex.cc" yy127: yych = (YYCTYPE)*++YYCURSOR; if (yych == '2') goto yy131; goto yy13; yy128: ++YYCURSOR; #line 87 "../src/ast/lex.re" { out.wraw(tok, ptr); lex_end_of_comment(out); goto echo; } #line 686 "src/ast/lex.cc" yy130: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy132; goto yy13; yy131: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'c') goto yy133; goto yy13; yy132: yych = (YYCTYPE)*++YYCURSOR; if (yych == '2') goto yy135; goto yy13; yy133: ++YYCURSOR; #line 107 "../src/ast/lex.re" { out.wraw(tok, ptr); out.wdelay_state_goto(0); lex_end_of_comment(out); goto echo; } #line 708 "src/ast/lex.cc" yy135: yych = (YYCTYPE)*++YYCURSOR; if (yych != 'c') goto yy13; ++YYCURSOR; #line 100 "../src/ast/lex.re" { out.wraw(tok, ptr); out.wdelay_yymaxnmatch(); lex_end_of_comment(out); goto echo; } #line 720 "src/ast/lex.cc" } #line 153 "../src/ast/lex.re" } void Scanner::lex_end_of_comment(OutputFile &out) { uint32_t ignored = 0; for (;;) { #line 730 "src/ast/lex.cc" { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = (YYCTYPE)*YYCURSOR; if (yych <= '\f') { if (yych <= 0x00) goto yy140; if (yych == '\n') goto yy144; goto yy142; } else { if (yych <= '\r') goto yy146; if (yych == '*') goto yy147; goto yy142; } yy140: ++YYCURSOR; #line 160 "../src/ast/lex.re" { fatal_lc(get_cline(), get_column(), "expected end of block"); } #line 748 "src/ast/lex.cc" yy142: ++YYCURSOR; yy143: #line 162 "../src/ast/lex.re" { continue; } #line 754 "src/ast/lex.cc" yy144: ++YYCURSOR; #line 163 "../src/ast/lex.re" { ++ignored; continue; } #line 759 "src/ast/lex.cc" yy146: yych = (YYCTYPE)*++YYCURSOR; if (yych == '\n') goto yy144; goto yy143; yy147: yych = (YYCTYPE)*++YYCURSOR; if (yych != '/') goto yy143; ++YYCURSOR; #line 164 "../src/ast/lex.re" { if (ignored > 0) { cline += ignored; out.wline_info(cline, get_fname().c_str()); } tok = pos = cur; return; } #line 777 "src/ast/lex.cc" } #line 172 "../src/ast/lex.re" } } void Scanner::lex_tags(OutputFile &out, bool mtags) { std::string fmt, sep; for (;;) { #line 787 "src/ast/lex.cc" { YYCTYPE yych; static const unsigned char yybm[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 128) { goto yy154; } if (yych <= ')') { if (yych <= '\n') { if (yych >= '\t') goto yy157; } else { if (yych == '\r') goto yy159; } } else { if (yych <= 'f') { if (yych <= '*') goto yy160; if (yych >= 'f') goto yy161; } else { if (yych == 's') goto yy162; } } ++YYCURSOR; yy153: #line 179 "../src/ast/lex.re" { fatal_lc(get_cline(), get_column(), "unrecognized configuration"); } #line 847 "src/ast/lex.cc" yy154: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 128) { goto yy154; } #line 184 "../src/ast/lex.re" { continue; } #line 857 "src/ast/lex.cc" yy157: ++YYCURSOR; #line 185 "../src/ast/lex.re" { ++cline; continue; } #line 862 "src/ast/lex.cc" yy159: yych = (YYCTYPE)*++YYCURSOR; if (yych == '\n') goto yy157; goto yy153; yy160: yych = (YYCTYPE)*++YYCURSOR; if (yych == '/') goto yy163; goto yy153; yy161: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'o') goto yy165; goto yy153; yy162: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == 'e') goto yy167; goto yy153; yy163: ++YYCURSOR; #line 186 "../src/ast/lex.re" { out.wdelay_tags(new ConfTags(fmt, sep), mtags); tok = pos = cur; return; } #line 887 "src/ast/lex.cc" yy165: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy168; yy166: YYCURSOR = YYMARKER; goto yy153; yy167: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'p') goto yy169; goto yy166; yy168: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'm') goto yy170; goto yy166; yy169: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy171; goto yy166; yy170: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy172; goto yy166; yy171: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'r') goto yy173; goto yy166; yy172: yych = (YYCTYPE)*++YYCURSOR; if (yych == 't') goto yy174; goto yy166; yy173: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'a') goto yy176; goto yy166; yy174: ++YYCURSOR; #line 181 "../src/ast/lex.re" { fmt = lex_conf_string(); continue; } #line 926 "src/ast/lex.cc" yy176: yych = (YYCTYPE)*++YYCURSOR; if (yych != 't') goto yy166; yych = (YYCTYPE)*++YYCURSOR; if (yych != 'o') goto yy166; yych = (YYCTYPE)*++YYCURSOR; if (yych != 'r') goto yy166; ++YYCURSOR; #line 182 "../src/ast/lex.re" { sep = lex_conf_string(); continue; } #line 937 "src/ast/lex.cc" } #line 191 "../src/ast/lex.re" } } int Scanner::scan(const conopt_t *globopts) { uint32_t depth, code_line; scan: tchar = cur - pos; tok = cur; #line 950 "src/ast/lex.cc" { YYCTYPE yych; unsigned int yyaccept = 0; static const unsigned char yybm[] = { 128, 128, 128, 128, 128, 128, 128, 128, 128, 144, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 144, 128, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 128, 128, 128, 128, 128, 128, 128, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 128, 0, 128, 128, 160, 128, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 16) { goto yy185; } if (yych <= '.') { if (yych <= '#') { if (yych <= '\r') { if (yych <= 0x08) goto yy183; if (yych <= '\n') goto yy188; if (yych >= '\r') goto yy190; } else { if (yych <= 0x1F) goto yy183; if (yych <= '!') goto yy191; if (yych <= '"') goto yy193; goto yy195; } } else { if (yych <= '\'') { if (yych == '%') goto yy196; if (yych >= '\'') goto yy197; } else { if (yych <= '*') { if (yych <= ')') goto yy191; goto yy199; } else { if (yych <= ',') goto yy191; if (yych >= '.') goto yy200; } } } } else { if (yych <= '\\') { if (yych <= '?') { if (yych <= '/') goto yy202; if (yych <= '9') goto yy203; if (yych <= ':') goto yy205; goto yy191; } else { if (yych <= '@') goto yy195; if (yych <= 'Z') goto yy203; if (yych <= '[') goto yy206; goto yy191; } } else { if (yych <= 'q') { if (yych == '_') goto yy203; if (yych >= 'a') goto yy203; } else { if (yych <= 'z') { if (yych <= 'r') goto yy208; goto yy203; } else { if (yych <= '{') goto yy209; if (yych <= '|') goto yy191; } } } } yy183: ++YYCURSOR; yy184: #line 351 "../src/ast/lex.re" { fatal_lc(get_cline(), get_column(), "unexpected character: '%c'", *tok); goto scan; } #line 1055 "src/ast/lex.cc" yy185: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 16) { goto yy185; } #line 330 "../src/ast/lex.re" { goto scan; } #line 1067 "src/ast/lex.cc" yy188: yyaccept = 0; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= 0x1F) { if (yych == '\t') goto yy211; } else { if (yych <= ' ') goto yy211; if (yych == '#') goto yy214; } yy189: #line 339 "../src/ast/lex.re" { if (cur == eof) return 0; pos = cur; cline++; if (lexer_state == LEX_FLEX_NAME) { lexer_state = LEX_NORMAL; return TOKEN_FID_END; } else { goto scan; } } #line 1090 "src/ast/lex.cc" yy190: yych = (YYCTYPE)*++YYCURSOR; if (yych == '\n') goto yy188; goto yy184; yy191: ++YYCURSOR; yy192: #line 243 "../src/ast/lex.re" { return *tok; } #line 1100 "src/ast/lex.cc" yy193: ++YYCURSOR; #line 233 "../src/ast/lex.re" { yylval.regexp = lex_str('"'); return TOKEN_REGEXP; } #line 1105 "src/ast/lex.cc" yy195: yych = (YYCTYPE)*++YYCURSOR; if (yych <= 'Z') { if (yych <= '/') goto yy184; if (yych <= '9') goto yy216; if (yych <= '@') goto yy184; goto yy216; } else { if (yych <= '_') { if (yych <= '^') goto yy184; goto yy216; } else { if (yych <= '`') goto yy184; if (yych <= 'z') goto yy216; goto yy184; } } yy196: yych = (YYCTYPE)*++YYCURSOR; if (yych == '}') goto yy219; goto yy184; yy197: ++YYCURSOR; #line 232 "../src/ast/lex.re" { yylval.regexp = lex_str('\''); return TOKEN_REGEXP; } #line 1131 "src/ast/lex.cc" yy199: yych = (YYCTYPE)*++YYCURSOR; if (yych == '/') goto yy219; goto yy192; yy200: ++YYCURSOR; #line 325 "../src/ast/lex.re" { yylval.regexp = ast_dot(cline, get_column()); return TOKEN_REGEXP; } #line 1143 "src/ast/lex.cc" yy202: yych = (YYCTYPE)*++YYCURSOR; if (yych == '*') goto yy221; if (yych == '/') goto yy223; goto yy192; yy203: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; yy204: if (yybm[0+yych] & 32) { goto yy203; } if (yych <= ' ') { if (yych == '\t') { YYCTXMARKER = YYCURSOR; goto yy227; } if (yych <= 0x1F) goto yy225; YYCTXMARKER = YYCURSOR; goto yy227; } else { if (yych <= ',') { if (yych <= '+') goto yy225; YYCTXMARKER = YYCURSOR; goto yy229; } else { if (yych <= '<') goto yy225; if (yych <= '>') { YYCTXMARKER = YYCURSOR; goto yy229; } goto yy225; } } yy205: yych = (YYCTYPE)*++YYCURSOR; if (yych == '=') goto yy231; goto yy184; yy206: yych = (YYCTYPE)*++YYCURSOR; if (yych == '^') goto yy233; #line 234 "../src/ast/lex.re" { yylval.regexp = lex_cls(false); return TOKEN_REGEXP; } #line 1188 "src/ast/lex.cc" yy208: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy235; goto yy204; yy209: yyaccept = 1; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 64) { goto yy238; } if (yych <= 'Z') { if (yych == ',') goto yy236; if (yych >= 'A') goto yy240; } else { if (yych <= '_') { if (yych >= '_') goto yy240; } else { if (yych <= '`') goto yy210; if (yych <= 'z') goto yy240; } } yy210: #line 201 "../src/ast/lex.re" { depth = 1; code_line = cline; goto code; } #line 1217 "src/ast/lex.cc" yy211: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych <= 0x1F) { if (yych == '\t') goto yy211; } else { if (yych <= ' ') goto yy211; if (yych == '#') goto yy214; } yy213: YYCURSOR = YYMARKER; if (yyaccept <= 1) { if (yyaccept == 0) { goto yy189; } else { goto yy210; } } else { goto yy237; } yy214: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = (YYCTYPE)*YYCURSOR; if (yych <= 0x1F) { if (yych == '\t') goto yy214; goto yy213; } else { if (yych <= ' ') goto yy214; if (yych == 'l') goto yy242; goto yy213; } yy216: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych <= 'Z') { if (yych <= '/') goto yy218; if (yych <= '9') goto yy216; if (yych >= 'A') goto yy216; } else { if (yych <= '_') { if (yych >= '_') goto yy216; } else { if (yych <= '`') goto yy218; if (yych <= 'z') goto yy216; } } yy218: #line 237 "../src/ast/lex.re" { const std::string *name = new std::string(tok + 1, tok_len() - 1); yylval.regexp = ast_tag(cline, get_column(), name, tok[0] == '#'); return TOKEN_REGEXP; } #line 1274 "src/ast/lex.cc" yy219: ++YYCURSOR; #line 227 "../src/ast/lex.re" { tok = cur; return 0; } #line 1282 "src/ast/lex.cc" yy221: ++YYCURSOR; #line 221 "../src/ast/lex.re" { depth = 1; goto comment; } #line 1290 "src/ast/lex.cc" yy223: ++YYCURSOR; #line 218 "../src/ast/lex.re" { goto nextLine; } #line 1297 "src/ast/lex.cc" yy225: ++YYCURSOR; YYCURSOR -= 1; #line 308 "../src/ast/lex.re" { if (!globopts->FFlag) { yylval.str = new std::string (tok, tok_len()); return TOKEN_ID; } else { std::vector *str = new std::vector; for (char *s = tok; s < cur; ++s) { const uint32_t chr = static_cast(*s), col = static_cast(s - tok); str->push_back(ASTChar(chr, col)); } yylval.regexp = ast_str(cline, get_column(), str, false); return TOKEN_REGEXP; } } #line 1318 "src/ast/lex.cc" yy227: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych <= ' ') { if (yych == '\t') goto yy227; if (yych <= 0x1F) goto yy243; goto yy227; } else { if (yych <= ',') { if (yych <= '+') goto yy243; } else { if (yych <= '<') goto yy243; if (yych >= '?') goto yy243; } } yy229: ++YYCURSOR; YYCURSOR = YYCTXMARKER; #line 303 "../src/ast/lex.re" { yylval.str = new std::string (tok, tok_len ()); return TOKEN_ID; } #line 1343 "src/ast/lex.cc" yy231: yych = (YYCTYPE)*++YYCURSOR; if (yych == '>') goto yy245; #line 211 "../src/ast/lex.re" { tok += 2; /* skip ":=" */ depth = 0; code_line = cline; goto code; } #line 1354 "src/ast/lex.cc" yy233: ++YYCURSOR; #line 235 "../src/ast/lex.re" { yylval.regexp = lex_cls(true); return TOKEN_REGEXP; } #line 1359 "src/ast/lex.cc" yy235: yych = (YYCTYPE)*++YYCURSOR; if (yych == '2') goto yy247; goto yy204; yy236: ++YYCURSOR; yy237: #line 276 "../src/ast/lex.re" { fatal_lc(get_cline(), get_column(), "illegal closure form, use '{n}', '{n,}', '{n,m}' where n and m are numbers"); } #line 1371 "src/ast/lex.cc" yy238: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 64) { goto yy238; } if (yych <= '^') { if (yych <= ',') { if (yych <= '+') goto yy213; goto yy248; } else { if (yych <= '@') goto yy213; if (yych >= '[') goto yy213; } } else { if (yych <= 'z') { if (yych == '`') goto yy213; } else { if (yych == '}') goto yy249; goto yy213; } } yy240: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych <= '^') { if (yych <= '9') { if (yych <= '/') goto yy213; goto yy240; } else { if (yych <= '@') goto yy213; if (yych <= 'Z') goto yy240; goto yy213; } } else { if (yych <= 'z') { if (yych == '`') goto yy213; goto yy240; } else { if (yych == '}') goto yy251; goto yy213; } } yy242: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'i') goto yy253; goto yy213; yy243: ++YYCURSOR; YYCURSOR = YYCTXMARKER; #line 290 "../src/ast/lex.re" { yylval.str = new std::string (tok, tok_len ()); if (globopts->FFlag) { lexer_state = LEX_FLEX_NAME; return TOKEN_FID; } else { return TOKEN_ID; } } #line 1437 "src/ast/lex.cc" yy245: ++YYCURSOR; YYCURSOR -= 2; #line 207 "../src/ast/lex.re" { return *tok; } #line 1445 "src/ast/lex.cc" yy247: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'c') goto yy254; goto yy204; yy248: yyaccept = 2; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= '/') goto yy237; if (yych <= '9') goto yy255; if (yych == '}') goto yy257; goto yy237; yy249: ++YYCURSOR; #line 245 "../src/ast/lex.re" { if (!s_to_u32_unsafe (tok + 1, cur - 1, yylval.bounds.min)) { fatal_lc(get_cline(), get_column(), "repetition count overflow"); } yylval.bounds.max = yylval.bounds.min; return TOKEN_CLOSESIZE; } #line 1468 "src/ast/lex.cc" yy251: ++YYCURSOR; #line 280 "../src/ast/lex.re" { if (!globopts->FFlag) { fatal_lc(get_cline(), get_column(), "curly braces for names only allowed with -F switch"); } yylval.str = new std::string (tok + 1, tok_len () - 2); // -2 to omit braces return TOKEN_ID; } #line 1479 "src/ast/lex.cc" yy253: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'n') goto yy259; goto yy213; yy254: yych = (YYCTYPE)*++YYCURSOR; if (yych == ':') goto yy260; goto yy204; yy255: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych <= '/') goto yy213; if (yych <= '9') goto yy255; if (yych == '}') goto yy262; goto yy213; yy257: ++YYCURSOR; #line 267 "../src/ast/lex.re" { if (!s_to_u32_unsafe (tok + 1, cur - 2, yylval.bounds.min)) { fatal_lc(get_cline(), get_column(), "repetition lower bound overflow"); } yylval.bounds.max = std::numeric_limits::max(); return TOKEN_CLOSESIZE; } #line 1507 "src/ast/lex.cc" yy259: yych = (YYCTYPE)*++YYCURSOR; if (yych == 'e') goto yy264; goto yy213; yy260: ++YYCURSOR; #line 288 "../src/ast/lex.re" { return TOKEN_CONF; } #line 1516 "src/ast/lex.cc" yy262: ++YYCURSOR; #line 254 "../src/ast/lex.re" { const char * p = strchr (tok, ','); if (!s_to_u32_unsafe (tok + 1, p, yylval.bounds.min)) { fatal_lc(get_cline(), get_column(), "repetition lower bound overflow"); } if (!s_to_u32_unsafe (p + 1, cur - 1, yylval.bounds.max)) { fatal_lc(get_cline(), get_column(), "repetition upper bound overflow"); } return TOKEN_CLOSESIZE; } #line 1532 "src/ast/lex.cc" yy264: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '0') goto yy266; if (yych <= '9') goto yy213; goto yy266; yy265: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; yy266: if (yych <= 0x1F) { if (yych == '\t') goto yy265; goto yy213; } else { if (yych <= ' ') goto yy265; if (yych <= '0') goto yy213; if (yych >= ':') goto yy213; YYCTXMARKER = YYCURSOR; } yy267: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = (YYCTYPE)*YYCURSOR; if (yych <= '\r') { if (yych <= '\t') { if (yych <= 0x08) goto yy213; } else { if (yych <= '\n') goto yy271; if (yych <= '\f') goto yy213; goto yy273; } } else { if (yych <= ' ') { if (yych <= 0x1F) goto yy213; } else { if (yych <= '/') goto yy213; if (yych <= '9') goto yy267; goto yy213; } } yy269: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych <= 0x1F) { if (yych == '\t') goto yy269; goto yy213; } else { if (yych <= ' ') goto yy269; if (yych == '"') goto yy274; goto yy213; } yy271: ++YYCURSOR; YYCURSOR = YYCTXMARKER; #line 334 "../src/ast/lex.re" { set_sourceline (); return TOKEN_LINE_INFO; } #line 1593 "src/ast/lex.cc" yy273: yych = (YYCTYPE)*++YYCURSOR; if (yych == '\n') goto yy271; goto yy213; yy274: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 128) { goto yy274; } if (yych <= '\n') goto yy213; if (yych >= '#') goto yy277; yych = (YYCTYPE)*++YYCURSOR; if (yych == '\n') goto yy271; if (yych == '\r') goto yy273; goto yy213; yy277: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych == '\n') goto yy213; goto yy274; } #line 355 "../src/ast/lex.re" code: #line 1623 "src/ast/lex.cc" { YYCTYPE yych; unsigned int yyaccept = 0; static const unsigned char yybm[] = { 96, 96, 96, 96, 96, 96, 96, 96, 96, 112, 0, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 112, 96, 64, 96, 96, 96, 96, 32, 96, 96, 96, 96, 96, 96, 96, 96, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 0, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, }; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = (YYCTYPE)*YYCURSOR; if (yych <= '&') { if (yych <= '\n') { if (yych <= 0x00) goto yy280; if (yych <= '\t') goto yy282; goto yy284; } else { if (yych == '"') goto yy286; goto yy282; } } else { if (yych <= '{') { if (yych <= '\'') goto yy287; if (yych <= 'z') goto yy282; goto yy288; } else { if (yych == '}') goto yy290; goto yy282; } } yy280: ++YYCURSOR; #line 418 "../src/ast/lex.re" { if (cur == eof) { if (depth) { fatal_l(get_cline(), "missing '}'"); } return 0; } goto code; } #line 1696 "src/ast/lex.cc" yy282: ++YYCURSOR; yy283: #line 432 "../src/ast/lex.re" { goto code; } #line 1704 "src/ast/lex.cc" yy284: yyaccept = 0; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= '\r') { if (yych <= '\t') { if (yych >= '\t') goto yy292; } else { if (yych <= '\n') goto yy294; if (yych >= '\r') goto yy294; } } else { if (yych <= ' ') { if (yych >= ' ') goto yy292; } else { if (yych == '#') goto yy295; } } yy285: #line 399 "../src/ast/lex.re" { if (depth == 0) { tok += strspn(tok, " \t\r\n"); while (cur > tok && strchr(" \t\r\n", cur[-1])) { --cur; } yylval.code = new Code(get_fname (), code_line, tok, tok_len ()); return TOKEN_CODE; } else if (cur == eof) { fatal_l(get_cline(), "missing '}'"); } pos = cur; cline++; goto code; } #line 1743 "src/ast/lex.cc" yy286: yyaccept = 1; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == '\n') goto yy283; goto yy299; yy287: yyaccept = 1; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == '\n') goto yy283; goto yy304; yy288: ++YYCURSOR; #line 371 "../src/ast/lex.re" { if (depth == 0) { fatal_l(get_cline(), "Curly braces are not allowed after ':='"); } else { ++depth; } goto code; } #line 1768 "src/ast/lex.cc" yy290: ++YYCURSOR; #line 359 "../src/ast/lex.re" { if (depth == 0) { fatal_l(get_cline(), "Curly braces are not allowed after ':='"); } else if (--depth == 0) { yylval.code = new Code(get_fname (), code_line, tok, tok_len ()); return TOKEN_CODE; } goto code; } #line 1784 "src/ast/lex.cc" yy292: yyaccept = 2; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= 0x1F) { if (yych == '\t') goto yy306; } else { if (yych <= ' ') goto yy306; if (yych == '#') goto yy295; } yy293: YYCURSOR -= 1; #line 386 "../src/ast/lex.re" { if (depth == 0) { goto code; } else if (cur == eof) { fatal_l(get_cline(), "missing '}'"); } pos = cur; cline++; goto code; } #line 1810 "src/ast/lex.cc" yy294: ++YYCURSOR; goto yy293; yy295: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 16) { goto yy295; } if (yych == 'l') goto yy308; yy297: YYCURSOR = YYMARKER; if (yyaccept <= 1) { if (yyaccept == 0) { goto yy285; } else { goto yy283; } } else { goto yy293; } yy298: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; yy299: if (yybm[0+yych] & 32) { goto yy298; } if (yych <= '\n') goto yy297; if (yych >= '#') goto yy302; yy300: ++YYCURSOR; #line 429 "../src/ast/lex.re" { goto code; } #line 1849 "src/ast/lex.cc" yy302: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych == '\n') goto yy297; goto yy298; yy303: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; yy304: if (yybm[0+yych] & 64) { goto yy303; } if (yych <= '\n') goto yy297; if (yych <= '\'') goto yy300; ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych == '\n') goto yy297; goto yy303; yy306: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych <= 0x1F) { if (yych == '\t') goto yy306; goto yy297; } else { if (yych <= ' ') goto yy306; if (yych == '#') goto yy295; goto yy297; } yy308: yych = (YYCTYPE)*++YYCURSOR; if (yych != 'i') goto yy297; yych = (YYCTYPE)*++YYCURSOR; if (yych != 'n') goto yy297; yych = (YYCTYPE)*++YYCURSOR; if (yych != 'e') goto yy297; yych = (YYCTYPE)*++YYCURSOR; if (yych <= '0') goto yy313; if (yych <= '9') goto yy297; goto yy313; yy312: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; yy313: if (yych <= 0x1F) { if (yych == '\t') goto yy312; goto yy297; } else { if (yych <= ' ') goto yy312; if (yych <= '0') goto yy297; if (yych >= ':') goto yy297; YYCTXMARKER = YYCURSOR; } yy314: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 128) { goto yy314; } if (yych <= '\f') { if (yych <= 0x08) goto yy297; if (yych <= '\t') goto yy316; if (yych <= '\n') goto yy318; goto yy297; } else { if (yych <= '\r') goto yy320; if (yych != ' ') goto yy297; } yy316: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych <= 0x1F) { if (yych == '\t') goto yy316; goto yy297; } else { if (yych <= ' ') goto yy316; if (yych == '"') goto yy321; goto yy297; } yy318: ++YYCURSOR; YYCURSOR = YYCTXMARKER; #line 382 "../src/ast/lex.re" { set_sourceline (); goto code; } #line 1944 "src/ast/lex.cc" yy320: yych = (YYCTYPE)*++YYCURSOR; if (yych == '\n') goto yy318; goto yy297; yy321: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = (YYCTYPE)*YYCURSOR; if (yych <= '!') { if (yych == '\n') goto yy297; goto yy321; } else { if (yych <= '"') goto yy323; if (yych == '\\') goto yy324; goto yy321; } yy323: yych = (YYCTYPE)*++YYCURSOR; if (yych == '\n') goto yy318; if (yych == '\r') goto yy320; goto yy297; yy324: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych == '\n') goto yy297; goto yy321; } #line 435 "../src/ast/lex.re" comment: #line 1978 "src/ast/lex.cc" { YYCTYPE yych; static const unsigned char yybm[] = { 128, 128, 128, 128, 128, 128, 128, 128, 128, 160, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 160, 128, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = (YYCTYPE)*YYCURSOR; if (yych <= ')') { if (yych == '\n') goto yy329; } else { if (yych <= '*') goto yy331; if (yych == '/') goto yy332; } ++YYCURSOR; yy328: #line 467 "../src/ast/lex.re" { if (cur == eof) { return 0; } goto comment; } #line 2033 "src/ast/lex.cc" yy329: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 32) { goto yy333; } if (yych == '#') goto yy336; yy330: #line 458 "../src/ast/lex.re" { if (cur == eof) { return 0; } tok = pos = cur; cline++; goto comment; } #line 2051 "src/ast/lex.cc" yy331: yych = (YYCTYPE)*++YYCURSOR; if (yych == '/') goto yy338; goto yy328; yy332: yych = (YYCTYPE)*++YYCURSOR; if (yych == '*') goto yy340; goto yy328; yy333: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 32) { goto yy333; } if (yych == '#') goto yy336; yy335: YYCURSOR = YYMARKER; goto yy330; yy336: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = (YYCTYPE)*YYCURSOR; if (yych <= 0x1F) { if (yych == '\t') goto yy336; goto yy335; } else { if (yych <= ' ') goto yy336; if (yych == 'l') goto yy342; goto yy335; } yy338: ++YYCURSOR; #line 439 "../src/ast/lex.re" { if (--depth == 0) { goto scan; } else { goto comment; } } #line 2096 "src/ast/lex.cc" yy340: ++YYCURSOR; #line 449 "../src/ast/lex.re" { ++depth; fatal_lc(get_cline(), get_column(), "ambiguous /* found"); goto comment; } #line 2105 "src/ast/lex.cc" yy342: yych = (YYCTYPE)*++YYCURSOR; if (yych != 'i') goto yy335; yych = (YYCTYPE)*++YYCURSOR; if (yych != 'n') goto yy335; yych = (YYCTYPE)*++YYCURSOR; if (yych != 'e') goto yy335; yych = (YYCTYPE)*++YYCURSOR; if (yych <= '0') goto yy347; if (yych <= '9') goto yy335; goto yy347; yy346: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; yy347: if (yych <= 0x1F) { if (yych == '\t') goto yy346; goto yy335; } else { if (yych <= ' ') goto yy346; if (yych <= '0') goto yy335; if (yych >= ':') goto yy335; YYCTXMARKER = YYCURSOR; } yy348: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 64) { goto yy348; } if (yych <= '\f') { if (yych <= 0x08) goto yy335; if (yych <= '\t') goto yy350; if (yych <= '\n') goto yy352; goto yy335; } else { if (yych <= '\r') goto yy354; if (yych != ' ') goto yy335; } yy350: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych <= 0x1F) { if (yych == '\t') goto yy350; goto yy335; } else { if (yych <= ' ') goto yy350; if (yych == '"') goto yy355; goto yy335; } yy352: ++YYCURSOR; YYCURSOR = YYCTXMARKER; #line 454 "../src/ast/lex.re" { set_sourceline (); goto comment; } #line 2167 "src/ast/lex.cc" yy354: yych = (YYCTYPE)*++YYCURSOR; if (yych == '\n') goto yy352; goto yy335; yy355: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 128) { goto yy355; } if (yych <= '\n') goto yy335; if (yych >= '#') goto yy358; yych = (YYCTYPE)*++YYCURSOR; if (yych == '\n') goto yy352; if (yych == '\r') goto yy354; goto yy335; yy358: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych == '\n') goto yy335; goto yy355; } #line 474 "../src/ast/lex.re" nextLine: #line 2197 "src/ast/lex.cc" { YYCTYPE yych; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych == '\n') goto yy363; ++YYCURSOR; #line 485 "../src/ast/lex.re" { if(cur == eof) { return 0; } goto nextLine; } #line 2210 "src/ast/lex.cc" yy363: ++YYCURSOR; #line 478 "../src/ast/lex.re" { if(cur == eof) { return 0; } tok = pos = cur; cline++; goto scan; } #line 2221 "src/ast/lex.cc" } #line 490 "../src/ast/lex.re" } static void escape (std::string & dest, const std::string & src) { dest = src; size_t l = dest.length(); for (size_t p = 0; p < l; ++p) { if (dest[p] == '\\') { dest.insert(++p, "\\"); ++l; } } } const AST *Scanner::lex_cls(bool neg) { std::vector *cls = new std::vector; uint32_t u, l, c, c0 = get_column(); fst: tok = cur; c = get_column(); #line 2249 "src/ast/lex.cc" { YYCTYPE yych; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych == ']') goto yy368; #line 516 "../src/ast/lex.re" { l = lex_cls_chr(); goto snd; } #line 2257 "src/ast/lex.cc" yy368: ++YYCURSOR; #line 515 "../src/ast/lex.re" { return ast_cls(cline, c0, cls, neg); } #line 2262 "src/ast/lex.cc" } #line 517 "../src/ast/lex.re" snd: #line 2268 "src/ast/lex.cc" { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = (YYCTYPE)*(YYMARKER = YYCURSOR); if (yych == '-') goto yy373; yy372: #line 520 "../src/ast/lex.re" { u = l; goto add; } #line 2277 "src/ast/lex.cc" yy373: yych = (YYCTYPE)*++YYCURSOR; if (yych != ']') goto yy375; YYCURSOR = YYMARKER; goto yy372; yy375: ++YYCURSOR; YYCURSOR -= 1; #line 521 "../src/ast/lex.re" { u = lex_cls_chr(); if (l > u) { warn.swapped_range(cline, l, u); std::swap(l, u); } goto add; } #line 2295 "src/ast/lex.cc" } #line 529 "../src/ast/lex.re" add: cls->push_back(ASTRange(l, u, c)); goto fst; } uint32_t Scanner::lex_cls_chr() { tok = cur; const uint32_t l = get_cline(), c = get_column(); #line 2309 "src/ast/lex.cc" { YYCTYPE yych; unsigned int yyaccept = 0; if ((YYLIMIT - YYCURSOR) < 10) YYFILL(10); yych = (YYCTYPE)*YYCURSOR; if (yych <= '\f') { if (yych == '\n') goto yy381; } else { if (yych <= '\r') goto yy383; if (yych == '\\') goto yy384; } ++YYCURSOR; yy380: #line 546 "../src/ast/lex.re" { return static_cast(tok[0]); } #line 2325 "src/ast/lex.cc" yy381: ++YYCURSOR; #line 541 "../src/ast/lex.re" { fatal_lc(l, c, "newline in character class"); } #line 2330 "src/ast/lex.cc" yy383: yych = (YYCTYPE)*++YYCURSOR; if (yych == '\n') goto yy381; goto yy380; yy384: yych = (YYCTYPE)*++YYCURSOR; if (yych <= ']') { if (yych <= '3') { if (yych <= '\r') { if (yych == '\n') goto yy381; if (yych >= '\r') goto yy387; } else { if (yych == '-') goto yy388; if (yych >= '0') goto yy390; } } else { if (yych <= 'W') { if (yych <= '7') goto yy392; if (yych == 'U') goto yy393; } else { if (yych <= 'X') goto yy395; if (yych <= '[') goto yy385; if (yych <= '\\') goto yy396; goto yy398; } } } else { if (yych <= 'q') { if (yych <= 'e') { if (yych <= '`') goto yy385; if (yych <= 'a') goto yy400; if (yych <= 'b') goto yy402; } else { if (yych <= 'f') goto yy404; if (yych == 'n') goto yy406; } } else { if (yych <= 'u') { if (yych <= 'r') goto yy408; if (yych <= 's') goto yy385; if (yych <= 't') goto yy410; goto yy395; } else { if (yych <= 'v') goto yy412; if (yych == 'x') goto yy414; } } } yy385: ++YYCURSOR; yy386: #line 559 "../src/ast/lex.re" { warn.useless_escape(cline, get_column(), tok[1]); return static_cast(tok[1]); } #line 2387 "src/ast/lex.cc" yy387: yych = (YYCTYPE)*++YYCURSOR; if (yych == '\n') goto yy381; goto yy386; yy388: ++YYCURSOR; #line 557 "../src/ast/lex.re" { return static_cast('-'); } #line 2396 "src/ast/lex.cc" yy390: yyaccept = 0; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= '/') goto yy391; if (yych <= '7') goto yy415; yy391: #line 543 "../src/ast/lex.re" { fatal_lc(l, c, "syntax error in octal escape sequence"); } #line 2405 "src/ast/lex.cc" yy392: ++YYCURSOR; goto yy391; yy393: yyaccept = 1; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= '@') { if (yych <= '/') goto yy394; if (yych <= '9') goto yy417; } else { if (yych <= 'F') goto yy417; if (yych <= '`') goto yy394; if (yych <= 'f') goto yy417; } yy394: #line 542 "../src/ast/lex.re" { fatal_lc(l, c, "syntax error in hexadecimal escape sequence"); } #line 2423 "src/ast/lex.cc" yy395: yyaccept = 1; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= '@') { if (yych <= '/') goto yy394; if (yych <= '9') goto yy418; goto yy394; } else { if (yych <= 'F') goto yy418; if (yych <= '`') goto yy394; if (yych <= 'f') goto yy418; goto yy394; } yy396: ++YYCURSOR; #line 556 "../src/ast/lex.re" { return static_cast('\\'); } #line 2441 "src/ast/lex.cc" yy398: ++YYCURSOR; #line 558 "../src/ast/lex.re" { return static_cast(']'); } #line 2446 "src/ast/lex.cc" yy400: ++YYCURSOR; #line 549 "../src/ast/lex.re" { return static_cast('\a'); } #line 2451 "src/ast/lex.cc" yy402: ++YYCURSOR; #line 550 "../src/ast/lex.re" { return static_cast('\b'); } #line 2456 "src/ast/lex.cc" yy404: ++YYCURSOR; #line 551 "../src/ast/lex.re" { return static_cast('\f'); } #line 2461 "src/ast/lex.cc" yy406: ++YYCURSOR; #line 552 "../src/ast/lex.re" { return static_cast('\n'); } #line 2466 "src/ast/lex.cc" yy408: ++YYCURSOR; #line 553 "../src/ast/lex.re" { return static_cast('\r'); } #line 2471 "src/ast/lex.cc" yy410: ++YYCURSOR; #line 554 "../src/ast/lex.re" { return static_cast('\t'); } #line 2476 "src/ast/lex.cc" yy412: ++YYCURSOR; #line 555 "../src/ast/lex.re" { return static_cast('\v'); } #line 2481 "src/ast/lex.cc" yy414: yyaccept = 1; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= '@') { if (yych <= '/') goto yy394; if (yych <= '9') goto yy419; goto yy394; } else { if (yych <= 'F') goto yy419; if (yych <= '`') goto yy394; if (yych <= 'f') goto yy419; goto yy394; } yy415: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '/') goto yy416; if (yych <= '7') goto yy420; yy416: YYCURSOR = YYMARKER; if (yyaccept == 0) { goto yy391; } else { goto yy394; } yy417: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { if (yych <= '/') goto yy416; if (yych <= '9') goto yy422; goto yy416; } else { if (yych <= 'F') goto yy422; if (yych <= '`') goto yy416; if (yych <= 'f') goto yy422; goto yy416; } yy418: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { if (yych <= '/') goto yy416; if (yych <= '9') goto yy423; goto yy416; } else { if (yych <= 'F') goto yy423; if (yych <= '`') goto yy416; if (yych <= 'f') goto yy423; goto yy416; } yy419: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { if (yych <= '/') goto yy416; if (yych <= '9') goto yy424; goto yy416; } else { if (yych <= 'F') goto yy424; if (yych <= '`') goto yy416; if (yych <= 'f') goto yy424; goto yy416; } yy420: ++YYCURSOR; #line 548 "../src/ast/lex.re" { return unesc_oct(tok, cur); } #line 2546 "src/ast/lex.cc" yy422: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { if (yych <= '/') goto yy416; if (yych <= '9') goto yy426; goto yy416; } else { if (yych <= 'F') goto yy426; if (yych <= '`') goto yy416; if (yych <= 'f') goto yy426; goto yy416; } yy423: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { if (yych <= '/') goto yy416; if (yych <= '9') goto yy419; goto yy416; } else { if (yych <= 'F') goto yy419; if (yych <= '`') goto yy416; if (yych <= 'f') goto yy419; goto yy416; } yy424: ++YYCURSOR; #line 547 "../src/ast/lex.re" { return unesc_hex(tok, cur); } #line 2575 "src/ast/lex.cc" yy426: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { if (yych <= '/') goto yy416; if (yych >= ':') goto yy416; } else { if (yych <= 'F') goto yy427; if (yych <= '`') goto yy416; if (yych >= 'g') goto yy416; } yy427: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { if (yych <= '/') goto yy416; if (yych <= '9') goto yy418; goto yy416; } else { if (yych <= 'F') goto yy418; if (yych <= '`') goto yy416; if (yych <= 'f') goto yy418; goto yy416; } } #line 563 "../src/ast/lex.re" } uint32_t Scanner::lex_str_chr(char quote, bool &end) { end = false; tok = cur; const uint32_t l = get_cline(), c = get_column(); #line 2609 "src/ast/lex.cc" { YYCTYPE yych; unsigned int yyaccept = 0; if ((YYLIMIT - YYCURSOR) < 10) YYFILL(10); yych = (YYCTYPE)*YYCURSOR; if (yych <= '\f') { if (yych == '\n') goto yy432; } else { if (yych <= '\r') goto yy434; if (yych == '\\') goto yy435; } ++YYCURSOR; yy431: #line 578 "../src/ast/lex.re" { end = tok[0] == quote; return static_cast(tok[0]); } #line 2628 "src/ast/lex.cc" yy432: ++YYCURSOR; #line 573 "../src/ast/lex.re" { fatal_lc(l, c, "newline in character string"); } #line 2633 "src/ast/lex.cc" yy434: yych = (YYCTYPE)*++YYCURSOR; if (yych == '\n') goto yy432; goto yy431; yy435: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '`') { if (yych <= '7') { if (yych <= '\f') { if (yych == '\n') goto yy432; } else { if (yych <= '\r') goto yy438; if (yych <= '/') goto yy436; if (yych <= '3') goto yy439; goto yy441; } } else { if (yych <= 'W') { if (yych == 'U') goto yy442; } else { if (yych <= 'X') goto yy444; if (yych == '\\') goto yy445; } } } else { if (yych <= 'q') { if (yych <= 'e') { if (yych <= 'a') goto yy447; if (yych <= 'b') goto yy449; } else { if (yych <= 'f') goto yy451; if (yych == 'n') goto yy453; } } else { if (yych <= 'u') { if (yych <= 'r') goto yy455; if (yych <= 's') goto yy436; if (yych <= 't') goto yy457; goto yy444; } else { if (yych <= 'v') goto yy459; if (yych == 'x') goto yy461; } } } yy436: ++YYCURSOR; yy437: #line 592 "../src/ast/lex.re" { if (tok[1] != quote) { warn.useless_escape(cline, get_column(), tok[1]); } return static_cast(tok[1]); } #line 2689 "src/ast/lex.cc" yy438: yych = (YYCTYPE)*++YYCURSOR; if (yych == '\n') goto yy432; goto yy437; yy439: yyaccept = 0; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= '/') goto yy440; if (yych <= '7') goto yy462; yy440: #line 575 "../src/ast/lex.re" { fatal_lc(l, c, "syntax error in octal escape sequence"); } #line 2702 "src/ast/lex.cc" yy441: ++YYCURSOR; goto yy440; yy442: yyaccept = 1; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= '@') { if (yych <= '/') goto yy443; if (yych <= '9') goto yy464; } else { if (yych <= 'F') goto yy464; if (yych <= '`') goto yy443; if (yych <= 'f') goto yy464; } yy443: #line 574 "../src/ast/lex.re" { fatal_lc(l, c, "syntax error in hexadecimal escape sequence"); } #line 2720 "src/ast/lex.cc" yy444: yyaccept = 1; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= '@') { if (yych <= '/') goto yy443; if (yych <= '9') goto yy465; goto yy443; } else { if (yych <= 'F') goto yy465; if (yych <= '`') goto yy443; if (yych <= 'f') goto yy465; goto yy443; } yy445: ++YYCURSOR; #line 591 "../src/ast/lex.re" { return static_cast('\\'); } #line 2738 "src/ast/lex.cc" yy447: ++YYCURSOR; #line 584 "../src/ast/lex.re" { return static_cast('\a'); } #line 2743 "src/ast/lex.cc" yy449: ++YYCURSOR; #line 585 "../src/ast/lex.re" { return static_cast('\b'); } #line 2748 "src/ast/lex.cc" yy451: ++YYCURSOR; #line 586 "../src/ast/lex.re" { return static_cast('\f'); } #line 2753 "src/ast/lex.cc" yy453: ++YYCURSOR; #line 587 "../src/ast/lex.re" { return static_cast('\n'); } #line 2758 "src/ast/lex.cc" yy455: ++YYCURSOR; #line 588 "../src/ast/lex.re" { return static_cast('\r'); } #line 2763 "src/ast/lex.cc" yy457: ++YYCURSOR; #line 589 "../src/ast/lex.re" { return static_cast('\t'); } #line 2768 "src/ast/lex.cc" yy459: ++YYCURSOR; #line 590 "../src/ast/lex.re" { return static_cast('\v'); } #line 2773 "src/ast/lex.cc" yy461: yyaccept = 1; yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych <= '@') { if (yych <= '/') goto yy443; if (yych <= '9') goto yy466; goto yy443; } else { if (yych <= 'F') goto yy466; if (yych <= '`') goto yy443; if (yych <= 'f') goto yy466; goto yy443; } yy462: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '/') goto yy463; if (yych <= '7') goto yy467; yy463: YYCURSOR = YYMARKER; if (yyaccept == 0) { goto yy440; } else { goto yy443; } yy464: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { if (yych <= '/') goto yy463; if (yych <= '9') goto yy469; goto yy463; } else { if (yych <= 'F') goto yy469; if (yych <= '`') goto yy463; if (yych <= 'f') goto yy469; goto yy463; } yy465: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { if (yych <= '/') goto yy463; if (yych <= '9') goto yy470; goto yy463; } else { if (yych <= 'F') goto yy470; if (yych <= '`') goto yy463; if (yych <= 'f') goto yy470; goto yy463; } yy466: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { if (yych <= '/') goto yy463; if (yych <= '9') goto yy471; goto yy463; } else { if (yych <= 'F') goto yy471; if (yych <= '`') goto yy463; if (yych <= 'f') goto yy471; goto yy463; } yy467: ++YYCURSOR; #line 583 "../src/ast/lex.re" { return unesc_oct(tok, cur); } #line 2838 "src/ast/lex.cc" yy469: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { if (yych <= '/') goto yy463; if (yych <= '9') goto yy473; goto yy463; } else { if (yych <= 'F') goto yy473; if (yych <= '`') goto yy463; if (yych <= 'f') goto yy473; goto yy463; } yy470: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { if (yych <= '/') goto yy463; if (yych <= '9') goto yy466; goto yy463; } else { if (yych <= 'F') goto yy466; if (yych <= '`') goto yy463; if (yych <= 'f') goto yy466; goto yy463; } yy471: ++YYCURSOR; #line 582 "../src/ast/lex.re" { return unesc_hex(tok, cur); } #line 2867 "src/ast/lex.cc" yy473: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { if (yych <= '/') goto yy463; if (yych >= ':') goto yy463; } else { if (yych <= 'F') goto yy474; if (yych <= '`') goto yy463; if (yych >= 'g') goto yy463; } yy474: yych = (YYCTYPE)*++YYCURSOR; if (yych <= '@') { if (yych <= '/') goto yy463; if (yych <= '9') goto yy465; goto yy463; } else { if (yych <= 'F') goto yy465; if (yych <= '`') goto yy463; if (yych <= 'f') goto yy465; goto yy463; } } #line 598 "../src/ast/lex.re" } const AST *Scanner::lex_str(char quote) { const uint32_t column = get_column(); std::vector *str = new std::vector; for (bool end;;) { const uint32_t c = lex_str_chr(quote, end); if (end) return ast_str(cline, column, str, quote == '\''); str->push_back(ASTChar(c, get_column())); } } void Scanner::set_sourceline () { sourceline: tok = cur; #line 2911 "src/ast/lex.cc" { YYCTYPE yych; static const unsigned char yybm[] = { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = (YYCTYPE)*YYCURSOR; if (yych <= '!') { if (yych == '\n') goto yy479; } else { if (yych <= '"') goto yy481; if (yych <= '0') goto yy477; if (yych <= '9') goto yy482; } yy477: ++YYCURSOR; yy478: #line 640 "../src/ast/lex.re" { goto sourceline; } #line 2964 "src/ast/lex.cc" yy479: ++YYCURSOR; #line 628 "../src/ast/lex.re" { if (cur == eof) { --cur; } else { pos = cur; } tok = cur; return; } #line 2980 "src/ast/lex.cc" yy481: yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR); if (yych == '\n') goto yy478; goto yy486; yy482: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yybm[0+yych] & 64) { goto yy482; } #line 617 "../src/ast/lex.re" { if (!s_to_u32_unsafe (tok, cur, cline)) { fatal_lc(get_cline(), get_column(), "line number overflow"); } goto sourceline; } #line 3000 "src/ast/lex.cc" yy485: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; yy486: if (yybm[0+yych] & 128) { goto yy485; } if (yych <= '\n') goto yy487; if (yych <= '"') goto yy488; goto yy490; yy487: YYCURSOR = YYMARKER; goto yy478; yy488: ++YYCURSOR; #line 624 "../src/ast/lex.re" { escape (in.file_name, std::string (tok + 1, tok_len () - 2)); // -2 to omit quotes goto sourceline; } #line 3022 "src/ast/lex.cc" yy490: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = (YYCTYPE)*YYCURSOR; if (yych == '\n') goto yy487; goto yy485; } #line 643 "../src/ast/lex.re" } } // end namespace re2c re2c-1.0.1/bootstrap/src/ast/y.tab.h0000644000175000017500000000461713140054261014052 00000000000000/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison interface for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ #ifndef YY_YY_BOOTSTRAP_SRC_AST_Y_TAB_H_INCLUDED # define YY_YY_BOOTSTRAP_SRC_AST_Y_TAB_H_INCLUDED /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif #if YYDEBUG extern int yydebug; #endif /* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { TOKEN_CLOSESIZE = 258, TOKEN_CODE = 259, TOKEN_CONF = 260, TOKEN_ID = 261, TOKEN_FID = 262, TOKEN_FID_END = 263, TOKEN_LINE_INFO = 264, TOKEN_REGEXP = 265 }; #endif /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { const re2c::AST * regexp; re2c::Code * code; char op; re2c::ASTBounds bounds; std::string * str; re2c::CondList * clist; }; typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif extern YYSTYPE yylval; int yyparse (re2c::context_t &context); #endif /* !YY_YY_BOOTSTRAP_SRC_AST_Y_TAB_H_INCLUDED */ re2c-1.0.1/bootstrap/src/ast/lex_conf.cc0000644000175000017500000025317513143420710014774 00000000000000/* Generated by re2c 1.0.1 on Fri Aug 11 22:29:44 2017 */ #line 1 "../src/ast/lex_conf.re" #include "src/util/c99_stdint.h" #include #include "src/code/output.h" #include "src/conf/msg.h" #include "src/re/encoding/enc.h" #include "src/ast/scanner.h" #include "src/util/s_to_n32_unsafe.h" namespace re2c { // global re2c config (affects the whole file) #line 35 "../src/ast/lex_conf.re" void Scanner::lex_conf(Opt &opts) { tok = cur; const uint32_t l = get_cline(), c = get_column(); #line 25 "src/ast/lex_conf.cc" { unsigned char yych; unsigned int yyaccept = 0; static const unsigned char yybm[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 32, 0, 0, 0, 0, 0, 0, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 0, 0, 0, 0, 32, 0, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; if ((lim - cur) < 28) fill(28); yych = (unsigned char)*cur; if (yych <= 'e') { if (yych <= 'Z') { if (yych <= '/') { if (yych == '-') goto yy3; } else { if (yych <= ':') goto yy3; if (yych >= 'A') goto yy3; } } else { if (yych <= '`') { if (yych == '_') goto yy3; } else { if (yych <= 'b') goto yy3; if (yych <= 'c') goto yy5; if (yych <= 'd') goto yy6; goto yy3; } } } else { if (yych <= 's') { if (yych <= 'i') { if (yych <= 'f') goto yy7; if (yych <= 'h') goto yy3; goto yy8; } else { if (yych == 'l') goto yy9; if (yych <= 'r') goto yy3; goto yy10; } } else { if (yych <= 'v') { if (yych <= 't') goto yy11; if (yych <= 'u') goto yy3; goto yy12; } else { if (yych == 'y') goto yy13; if (yych <= 'z') goto yy3; } } } yy2: #line 161 "../src/ast/lex_conf.re" { fatal_lc(l, c, "unrecognized configuration '%.*s'", static_cast(cur - tok), tok); } #line 111 "src/ast/lex_conf.cc" yy3: ++cur; if (lim <= cur) fill(1); yych = (unsigned char)*cur; yy4: if (yybm[0+yych] & 32) { goto yy3; } goto yy2; yy5: yych = (unsigned char)*++cur; if (yych == 'g') goto yy14; if (yych == 'o') goto yy15; goto yy4; yy6: yych = (unsigned char)*++cur; if (yych == 'e') goto yy16; goto yy4; yy7: yych = (unsigned char)*++cur; if (yych == 'l') goto yy17; goto yy4; yy8: yych = (unsigned char)*++cur; if (yych == 'n') goto yy18; goto yy4; yy9: yych = (unsigned char)*++cur; if (yych == 'a') goto yy19; goto yy4; yy10: yych = (unsigned char)*++cur; if (yych == 't') goto yy20; goto yy4; yy11: yych = (unsigned char)*++cur; if (yych == 'a') goto yy21; goto yy4; yy12: yych = (unsigned char)*++cur; if (yych == 'a') goto yy22; goto yy4; yy13: yych = (unsigned char)*++cur; if (yych == 'y') goto yy23; goto yy4; yy14: yych = (unsigned char)*++cur; if (yych == 'o') goto yy24; goto yy4; yy15: yych = (unsigned char)*++cur; if (yych == 'n') goto yy25; goto yy4; yy16: yych = (unsigned char)*++cur; if (yych == 'f') goto yy26; goto yy4; yy17: yych = (unsigned char)*++cur; if (yych == 'a') goto yy27; goto yy4; yy18: yych = (unsigned char)*++cur; if (yych == 'd') goto yy28; goto yy4; yy19: yych = (unsigned char)*++cur; if (yych == 'b') goto yy29; goto yy4; yy20: yych = (unsigned char)*++cur; if (yych == 'a') goto yy30; goto yy4; yy21: yych = (unsigned char)*++cur; if (yych == 'g') goto yy31; goto yy4; yy22: yych = (unsigned char)*++cur; if (yych == 'r') goto yy32; goto yy4; yy23: yych = (unsigned char)*++cur; if (yych <= 'c') { if (yych <= 'a') goto yy4; if (yych <= 'b') goto yy33; goto yy34; } else { if (yych == 'f') goto yy35; goto yy4; } yy24: yych = (unsigned char)*++cur; if (yych == 't') goto yy36; goto yy4; yy25: yych = (unsigned char)*++cur; if (yych == 'd') goto yy37; goto yy4; yy26: yych = (unsigned char)*++cur; if (yych == 'i') goto yy38; goto yy4; yy27: yych = (unsigned char)*++cur; if (yych == 'g') goto yy39; goto yy4; yy28: yych = (unsigned char)*++cur; if (yych == 'e') goto yy40; goto yy4; yy29: yych = (unsigned char)*++cur; if (yych == 'e') goto yy41; goto yy4; yy30: yych = (unsigned char)*++cur; if (yych == 'r') goto yy42; if (yych == 't') goto yy43; goto yy4; yy31: yych = (unsigned char)*++cur; if (yych == 's') goto yy44; goto yy4; yy32: yych = (unsigned char)*++cur; if (yych == 'i') goto yy45; goto yy4; yy33: yych = (unsigned char)*++cur; if (yych == 'm') goto yy46; goto yy4; yy34: yych = (unsigned char)*++cur; if (yych == 'h') goto yy47; goto yy4; yy35: yych = (unsigned char)*++cur; if (yych == 'i') goto yy48; goto yy4; yy36: yych = (unsigned char)*++cur; if (yych == 'o') goto yy49; goto yy4; yy37: yych = (unsigned char)*++cur; if (yych <= 'd') { if (yych == ':') goto yy50; goto yy4; } else { if (yych <= 'e') goto yy51; if (yych == 'p') goto yy52; goto yy4; } yy38: yych = (unsigned char)*++cur; if (yych == 'n') goto yy53; goto yy4; yy39: yych = (unsigned char)*++cur; if (yych == 's') goto yy54; goto yy4; yy40: yych = (unsigned char)*++cur; if (yych == 'n') goto yy55; goto yy4; yy41: yych = (unsigned char)*++cur; if (yych == 'l') goto yy56; goto yy4; yy42: yych = (unsigned char)*++cur; if (yych == 't') goto yy57; goto yy4; yy43: yych = (unsigned char)*++cur; if (yych == 'e') goto yy58; goto yy4; yy44: yych = (unsigned char)*++cur; if (yych == ':') goto yy59; goto yy4; yy45: yych = (unsigned char)*++cur; if (yych == 'a') goto yy60; goto yy4; yy46: yych = (unsigned char)*++cur; if (yych == ':') goto yy61; goto yy4; yy47: yych = (unsigned char)*++cur; if (yych == ':') goto yy62; goto yy4; yy48: yych = (unsigned char)*++cur; if (yych == 'l') goto yy63; goto yy4; yy49: yych = (unsigned char)*++cur; if (yych == ':') goto yy64; goto yy4; yy50: yych = (unsigned char)*++cur; if (yych == 'd') goto yy65; if (yych == 'g') goto yy66; goto yy4; yy51: yych = (unsigned char)*++cur; if (yych == 'n') goto yy67; goto yy4; yy52: yych = (unsigned char)*++cur; if (yych == 'r') goto yy68; goto yy4; yy53: yych = (unsigned char)*++cur; if (yych == 'e') goto yy69; goto yy4; yy54: yych = (unsigned char)*++cur; if (yych == ':') goto yy70; goto yy4; yy55: yych = (unsigned char)*++cur; if (yych == 't') goto yy71; goto yy4; yy56: yych = (unsigned char)*++cur; if (yych == ':') goto yy72; if (yych == 'p') goto yy73; goto yy4; yy57: yych = (unsigned char)*++cur; if (yych == 'l') goto yy74; goto yy4; yy58: yych = (unsigned char)*++cur; if (yych == ':') goto yy75; goto yy4; yy59: yych = (unsigned char)*++cur; if (yych == 'e') goto yy76; if (yych == 'p') goto yy77; goto yy4; yy60: yych = (unsigned char)*++cur; if (yych == 'b') goto yy78; goto yy4; yy61: yych = (unsigned char)*++cur; if (yych == 'h') goto yy79; goto yy4; yy62: yych = (unsigned char)*++cur; if (yych == 'c') goto yy80; if (yych == 'e') goto yy81; goto yy4; yy63: yych = (unsigned char)*++cur; if (yych == 'l') goto yy82; goto yy4; yy64: yych = (unsigned char)*++cur; if (yych == 't') goto yy83; goto yy4; yy65: yych = (unsigned char)*++cur; if (yych == 'i') goto yy84; goto yy4; yy66: yych = (unsigned char)*++cur; if (yych == 'o') goto yy85; goto yy4; yy67: yych = (unsigned char)*++cur; if (yych == 'u') goto yy86; goto yy4; yy68: yych = (unsigned char)*++cur; if (yych == 'e') goto yy87; goto yy4; yy69: yych = (unsigned char)*++cur; if (yych == ':') goto yy88; goto yy4; yy70: yych = (unsigned char)*++cur; switch (yych) { case '8': goto yy89; case 'P': goto yy91; case 'T': goto yy93; case 'b': goto yy95; case 'c': goto yy97; case 'd': goto yy98; case 'e': goto yy100; case 'g': goto yy102; case 'i': goto yy104; case 'l': goto yy106; case 'n': goto yy107; case 'o': goto yy108; case 'p': goto yy109; case 's': goto yy110; case 't': goto yy112; case 'u': goto yy113; case 'w': goto yy115; case 'x': goto yy117; default: goto yy4; } yy71: yych = (unsigned char)*++cur; if (yych == ':') goto yy119; goto yy4; yy72: yych = (unsigned char)*++cur; if (yych == 'y') goto yy120; goto yy4; yy73: yych = (unsigned char)*++cur; if (yych == 'r') goto yy121; goto yy4; yy74: yych = (unsigned char)*++cur; if (yych == 'a') goto yy122; goto yy4; yy75: yych = (unsigned char)*++cur; if (yych == 'a') goto yy123; if (yych == 'n') goto yy124; goto yy4; yy76: yych = (unsigned char)*++cur; if (yych == 'x') goto yy125; goto yy4; yy77: yych = (unsigned char)*++cur; if (yych == 'r') goto yy126; goto yy4; yy78: yych = (unsigned char)*++cur; if (yych == 'l') goto yy127; goto yy4; yy79: yych = (unsigned char)*++cur; if (yych == 'e') goto yy128; goto yy4; yy80: yych = (unsigned char)*++cur; if (yych == 'o') goto yy129; goto yy4; yy81: yych = (unsigned char)*++cur; if (yych == 'm') goto yy130; goto yy4; yy82: yych = (unsigned char)*++cur; if (yych == ':') goto yy131; goto yy4; yy83: yych = (unsigned char)*++cur; if (yych == 'h') goto yy132; goto yy4; yy84: yych = (unsigned char)*++cur; if (yych == 'v') goto yy133; goto yy4; yy85: yych = (unsigned char)*++cur; if (yych == 't') goto yy134; goto yy4; yy86: yych = (unsigned char)*++cur; if (yych == 'm') goto yy135; goto yy4; yy87: yych = (unsigned char)*++cur; if (yych == 'f') goto yy136; goto yy4; yy88: yych = (unsigned char)*++cur; if (yych == 'Y') goto yy137; goto yy4; yy89: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 59 "../src/ast/lex_conf.re" { lex_conf_enc(Enc::UTF8, opts); return; } #line 502 "src/ast/lex_conf.cc" yy91: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 48 "../src/ast/lex_conf.re" { opts.set_posix_captures(lex_conf_bool()); return; } #line 510 "src/ast/lex_conf.cc" yy93: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 47 "../src/ast/lex_conf.re" { opts.set_tags(lex_conf_bool()); return; } #line 518 "src/ast/lex_conf.cc" yy95: yych = (unsigned char)*++cur; if (yych <= 'Z') { if (yych <= '/') { if (yych == '-') goto yy3; } else { if (yych <= ':') goto yy3; if (yych >= 'A') goto yy3; } } else { if (yych <= '`') { if (yych == '_') goto yy3; } else { if (yych == 'i') goto yy138; if (yych <= 'z') goto yy3; } } yy96: #line 42 "../src/ast/lex_conf.re" { opts.set_bFlag(lex_conf_bool()); return; } #line 539 "src/ast/lex_conf.cc" yy97: yych = (unsigned char)*++cur; if (yych == 'a') goto yy139; if (yych == 'o') goto yy140; goto yy4; yy98: yych = (unsigned char)*++cur; if (yych <= '^') { if (yych <= '/') { if (yych == '-') goto yy3; } else { if (yych <= ':') goto yy3; if (yych <= '@') goto yy99; if (yych <= 'Z') goto yy3; } } else { if (yych <= 'd') { if (yych != '`') goto yy3; } else { if (yych <= 'e') goto yy141; if (yych <= 'f') goto yy142; if (yych <= 'z') goto yy3; } } yy99: #line 43 "../src/ast/lex_conf.re" { opts.set_dFlag(lex_conf_bool()); return; } #line 567 "src/ast/lex_conf.cc" yy100: yych = (unsigned char)*++cur; if (yych <= '_') { if (yych <= ':') { if (yych == '-') goto yy3; if (yych >= '0') goto yy3; } else { if (yych <= '@') goto yy101; if (yych <= 'Z') goto yy3; if (yych >= '_') goto yy3; } } else { if (yych <= 'c') { if (yych <= '`') goto yy101; if (yych <= 'a') goto yy143; if (yych <= 'b') goto yy3; goto yy144; } else { if (yych <= 'm') { if (yych <= 'l') goto yy3; goto yy145; } else { if (yych <= 'n') goto yy146; if (yych <= 'z') goto yy3; } } } yy101: #line 55 "../src/ast/lex_conf.re" { lex_conf_enc(Enc::EBCDIC, opts); return; } #line 598 "src/ast/lex_conf.cc" yy102: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 44 "../src/ast/lex_conf.re" { opts.set_gFlag(lex_conf_bool()); return; } #line 606 "src/ast/lex_conf.cc" yy104: yych = (unsigned char)*++cur; if (yych <= 'Z') { if (yych <= '/') { if (yych == '-') goto yy3; } else { if (yych <= ':') goto yy3; if (yych >= 'A') goto yy3; } } else { if (yych <= '`') { if (yych == '_') goto yy3; } else { if (yych == 'n') goto yy147; if (yych <= 'z') goto yy3; } } yy105: #line 45 "../src/ast/lex_conf.re" { opts.set_iFlag(lex_conf_bool()); return; } #line 627 "src/ast/lex_conf.cc" yy106: yych = (unsigned char)*++cur; if (yych == 'o') goto yy148; goto yy4; yy107: yych = (unsigned char)*++cur; if (yych == 'e') goto yy149; if (yych == 'o') goto yy150; goto yy4; yy108: yych = (unsigned char)*++cur; if (yych == 'p') goto yy151; goto yy4; yy109: yych = (unsigned char)*++cur; if (yych == 'o') goto yy152; goto yy4; yy110: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 46 "../src/ast/lex_conf.re" { opts.set_sFlag(lex_conf_bool()); return; } #line 652 "src/ast/lex_conf.cc" yy112: yych = (unsigned char)*++cur; if (yych == 'a') goto yy153; goto yy4; yy113: yych = (unsigned char)*++cur; if (yych <= '^') { if (yych <= '/') { if (yych == '-') goto yy3; } else { if (yych <= ':') goto yy3; if (yych <= '@') goto yy114; if (yych <= 'Z') goto yy3; } } else { if (yych <= 'n') { if (yych == '`') goto yy114; if (yych <= 'm') goto yy3; goto yy154; } else { if (yych == 't') goto yy155; if (yych <= 'z') goto yy3; } } yy114: #line 56 "../src/ast/lex_conf.re" { lex_conf_enc(Enc::UTF32, opts); return; } #line 680 "src/ast/lex_conf.cc" yy115: yych = (unsigned char)*++cur; if (yych <= 'Z') { if (yych <= '/') { if (yych == '-') goto yy3; } else { if (yych <= ':') goto yy3; if (yych >= 'A') goto yy3; } } else { if (yych <= '`') { if (yych == '_') goto yy3; } else { if (yych == 'i') goto yy156; if (yych <= 'z') goto yy3; } } yy116: #line 57 "../src/ast/lex_conf.re" { lex_conf_enc(Enc::UCS2, opts); return; } #line 701 "src/ast/lex_conf.cc" yy117: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 58 "../src/ast/lex_conf.re" { lex_conf_enc(Enc::UTF16, opts); return; } #line 709 "src/ast/lex_conf.cc" yy119: yych = (unsigned char)*++cur; if (yych <= 'r') goto yy4; if (yych <= 's') goto yy157; if (yych <= 't') goto yy158; goto yy4; yy120: yych = (unsigned char)*++cur; if (yych == 'y') goto yy159; goto yy4; yy121: yych = (unsigned char)*++cur; if (yych == 'e') goto yy160; goto yy4; yy122: yych = (unsigned char)*++cur; if (yych == 'b') goto yy161; goto yy4; yy123: yych = (unsigned char)*++cur; if (yych == 'b') goto yy162; goto yy4; yy124: yych = (unsigned char)*++cur; if (yych == 'e') goto yy163; goto yy4; yy125: yych = (unsigned char)*++cur; if (yych == 'p') goto yy164; goto yy4; yy126: yych = (unsigned char)*++cur; if (yych == 'e') goto yy165; goto yy4; yy127: yych = (unsigned char)*++cur; if (yych == 'e') goto yy166; goto yy4; yy128: yych = (unsigned char)*++cur; if (yych == 'x') goto yy167; goto yy4; yy129: yych = (unsigned char)*++cur; if (yych == 'n') goto yy169; goto yy4; yy130: yych = (unsigned char)*++cur; if (yych == 'i') goto yy170; goto yy4; yy131: yych = (unsigned char)*++cur; if (yych <= 'd') { if (yych == 'c') goto yy171; goto yy4; } else { if (yych <= 'e') goto yy172; if (yych == 'p') goto yy173; goto yy4; } yy132: yych = (unsigned char)*++cur; if (yych == 'r') goto yy174; goto yy4; yy133: yych = (unsigned char)*++cur; if (yych == 'i') goto yy175; goto yy4; yy134: yych = (unsigned char)*++cur; if (yych == 'o') goto yy176; goto yy4; yy135: yych = (unsigned char)*++cur; if (yych == 'p') goto yy178; goto yy4; yy136: yych = (unsigned char)*++cur; if (yych == 'i') goto yy179; goto yy4; yy137: yych = (unsigned char)*++cur; if (yych == 'Y') goto yy180; goto yy4; yy138: yych = (unsigned char)*++cur; if (yych == 't') goto yy181; goto yy4; yy139: yych = (unsigned char)*++cur; if (yych == 's') goto yy182; goto yy4; yy140: yych = (unsigned char)*++cur; if (yych == 'm') goto yy183; goto yy4; yy141: yych = (unsigned char)*++cur; if (yych == 'b') goto yy184; goto yy4; yy142: yych = (unsigned char)*++cur; if (yych == 'a') goto yy185; goto yy4; yy143: yych = (unsigned char)*++cur; if (yych == 'g') goto yy186; goto yy4; yy144: yych = (unsigned char)*++cur; if (yych == 'b') goto yy187; goto yy4; yy145: yych = (unsigned char)*++cur; if (yych == 'p') goto yy188; goto yy4; yy146: yych = (unsigned char)*++cur; if (yych == 'c') goto yy189; goto yy4; yy147: yych = (unsigned char)*++cur; if (yych == 'p') goto yy190; goto yy4; yy148: yych = (unsigned char)*++cur; if (yych == 'o') goto yy191; goto yy4; yy149: yych = (unsigned char)*++cur; if (yych == 's') goto yy192; goto yy4; yy150: yych = (unsigned char)*++cur; if (yych == '-') goto yy193; goto yy4; yy151: yych = (unsigned char)*++cur; if (yych == 't') goto yy194; goto yy4; yy152: yych = (unsigned char)*++cur; if (yych == 's') goto yy195; goto yy4; yy153: yych = (unsigned char)*++cur; if (yych == 'g') goto yy196; goto yy4; yy154: yych = (unsigned char)*++cur; if (yych == 'i') goto yy197; goto yy4; yy155: yych = (unsigned char)*++cur; if (yych == 'f') goto yy198; goto yy4; yy156: yych = (unsigned char)*++cur; if (yych == 'd') goto yy199; goto yy4; yy157: yych = (unsigned char)*++cur; if (yych == 't') goto yy200; goto yy4; yy158: yych = (unsigned char)*++cur; if (yych == 'o') goto yy201; goto yy4; yy159: yych = (unsigned char)*++cur; if (yych == 'F') goto yy202; if (yych == 'N') goto yy203; goto yy4; yy160: yych = (unsigned char)*++cur; if (yych == 'f') goto yy204; goto yy4; yy161: yych = (unsigned char)*++cur; if (yych == 'e') goto yy205; goto yy4; yy162: yych = (unsigned char)*++cur; if (yych == 'o') goto yy206; goto yy4; yy163: yych = (unsigned char)*++cur; if (yych == 'x') goto yy207; goto yy4; yy164: yych = (unsigned char)*++cur; if (yych == 'r') goto yy208; goto yy4; yy165: yych = (unsigned char)*++cur; if (yych == 'f') goto yy209; goto yy4; yy166: yych = (unsigned char)*++cur; if (yych == ':') goto yy210; goto yy4; yy167: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 92 "../src/ast/lex_conf.re" { opts.set_yybmHexTable (lex_conf_bool()); return; } #line 918 "src/ast/lex_conf.cc" yy169: yych = (unsigned char)*++cur; if (yych == 'v') goto yy211; goto yy4; yy170: yych = (unsigned char)*++cur; if (yych == 't') goto yy212; goto yy4; yy171: yych = (unsigned char)*++cur; if (yych == 'h') goto yy214; goto yy4; yy172: yych = (unsigned char)*++cur; if (yych == 'n') goto yy215; goto yy4; yy173: yych = (unsigned char)*++cur; if (yych == 'a') goto yy216; goto yy4; yy174: yych = (unsigned char)*++cur; if (yych == 'e') goto yy217; goto yy4; yy175: yych = (unsigned char)*++cur; if (yych == 'd') goto yy218; goto yy4; yy176: yyaccept = 0; yych = (unsigned char)*(mar = ++cur); if (yybm[0+yych] & 32) { goto yy3; } if (yych == '@') goto yy219; yy177: #line 76 "../src/ast/lex_conf.re" { opts.set_condGoto (lex_conf_string ()); return; } #line 957 "src/ast/lex_conf.cc" yy178: yych = (unsigned char)*++cur; if (yych == 'r') goto yy221; goto yy4; yy179: yych = (unsigned char)*++cur; if (yych == 'x') goto yy222; goto yy4; yy180: yych = (unsigned char)*++cur; switch (yych) { case 'B': goto yy224; case 'C': goto yy225; case 'D': goto yy226; case 'F': goto yy227; case 'G': goto yy228; case 'L': goto yy229; case 'M': goto yy230; case 'P': goto yy231; case 'R': goto yy232; case 'S': goto yy233; default: goto yy4; } yy181: yych = (unsigned char)*++cur; if (yych == '-') goto yy234; goto yy4; yy182: yych = (unsigned char)*++cur; if (yych == 'e') goto yy235; goto yy4; yy183: yych = (unsigned char)*++cur; if (yych == 'p') goto yy236; goto yy4; yy184: yych = (unsigned char)*++cur; if (yych == 'u') goto yy237; goto yy4; yy185: yych = (unsigned char)*++cur; if (yych == '-') goto yy238; goto yy4; yy186: yych = (unsigned char)*++cur; if (yych == 'e') goto yy239; goto yy4; yy187: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } goto yy101; yy188: yych = (unsigned char)*++cur; if (yych == 't') goto yy240; goto yy4; yy189: yych = (unsigned char)*++cur; if (yych == 'o') goto yy241; goto yy4; yy190: yych = (unsigned char)*++cur; if (yych == 'u') goto yy242; goto yy4; yy191: yych = (unsigned char)*++cur; if (yych == 'k') goto yy243; goto yy4; yy192: yych = (unsigned char)*++cur; if (yych == 't') goto yy244; goto yy4; yy193: yych = (unsigned char)*++cur; if (yych == 'd') goto yy245; goto yy4; yy194: yych = (unsigned char)*++cur; if (yych == 'i') goto yy246; goto yy4; yy195: yych = (unsigned char)*++cur; if (yych == 'i') goto yy247; goto yy4; yy196: yych = (unsigned char)*++cur; if (yych == 's') goto yy93; goto yy4; yy197: yych = (unsigned char)*++cur; if (yych == 'c') goto yy248; goto yy4; yy198: yych = (unsigned char)*++cur; if (yych == '-') goto yy249; goto yy4; yy199: yych = (unsigned char)*++cur; if (yych == 'e') goto yy250; goto yy4; yy200: yych = (unsigned char)*++cur; if (yych == 'r') goto yy251; goto yy4; yy201: yych = (unsigned char)*++cur; if (yych == 'p') goto yy252; goto yy4; yy202: yych = (unsigned char)*++cur; if (yych == 'i') goto yy254; goto yy4; yy203: yych = (unsigned char)*++cur; if (yych == 'e') goto yy255; goto yy4; yy204: yych = (unsigned char)*++cur; if (yych == 'i') goto yy256; goto yy4; yy205: yych = (unsigned char)*++cur; if (yych == 'l') goto yy257; goto yy4; yy206: yych = (unsigned char)*++cur; if (yych == 'r') goto yy259; goto yy4; yy207: yych = (unsigned char)*++cur; if (yych == 't') goto yy260; goto yy4; yy208: yych = (unsigned char)*++cur; if (yych == 'e') goto yy261; goto yy4; yy209: yych = (unsigned char)*++cur; if (yych == 'i') goto yy262; goto yy4; yy210: yych = (unsigned char)*++cur; if (yych == 'y') goto yy263; goto yy4; yy211: yych = (unsigned char)*++cur; if (yych == 'e') goto yy264; goto yy4; yy212: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 143 "../src/ast/lex_conf.re" { opts.set_bEmitYYCh (lex_conf_bool()); return; } #line 1114 "src/ast/lex_conf.cc" yy214: yych = (unsigned char)*++cur; if (yych == 'e') goto yy265; goto yy4; yy215: yych = (unsigned char)*++cur; if (yych == 'a') goto yy266; goto yy4; yy216: yych = (unsigned char)*++cur; if (yych == 'r') goto yy267; goto yy4; yy217: yych = (unsigned char)*++cur; if (yych == 's') goto yy268; goto yy4; yy218: yych = (unsigned char)*++cur; if (yych == 'e') goto yy269; goto yy4; yy219: yych = (unsigned char)*++cur; if (yych == 'c') goto yy270; yy220: cur = mar; if (yyaccept <= 2) { if (yyaccept <= 1) { if (yyaccept == 0) { goto yy177; } else { goto yy258; } } else { goto yy328; } } else { if (yyaccept <= 4) { if (yyaccept == 3) { goto yy395; } else { goto yy598; } } else { goto yy675; } } yy221: yych = (unsigned char)*++cur; if (yych == 'e') goto yy271; goto yy4; yy222: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 72 "../src/ast/lex_conf.re" { opts.set_condPrefix (lex_conf_string ()); return; } #line 1172 "src/ast/lex_conf.cc" yy224: yych = (unsigned char)*++cur; if (yych == 'A') goto yy272; goto yy4; yy225: yych = (unsigned char)*++cur; if (yych <= 'S') { if (yych == 'O') goto yy273; goto yy4; } else { if (yych <= 'T') goto yy274; if (yych <= 'U') goto yy275; goto yy4; } yy226: yych = (unsigned char)*++cur; if (yych == 'E') goto yy276; goto yy4; yy227: yych = (unsigned char)*++cur; if (yych == 'I') goto yy277; goto yy4; yy228: yych = (unsigned char)*++cur; if (yych == 'E') goto yy278; goto yy4; yy229: yych = (unsigned char)*++cur; if (yych == 'E') goto yy279; if (yych == 'I') goto yy280; goto yy4; yy230: yych = (unsigned char)*++cur; if (yych == 'A') goto yy281; if (yych == 'T') goto yy282; goto yy4; yy231: yych = (unsigned char)*++cur; if (yych == 'E') goto yy283; goto yy4; yy232: yych = (unsigned char)*++cur; if (yych == 'E') goto yy284; goto yy4; yy233: yych = (unsigned char)*++cur; if (yych <= 'J') { if (yych == 'E') goto yy285; goto yy4; } else { if (yych <= 'K') goto yy286; if (yych == 'T') goto yy287; goto yy4; } yy234: yych = (unsigned char)*++cur; if (yych == 'v') goto yy288; goto yy4; yy235: yych = (unsigned char)*++cur; if (yych == '-') goto yy289; goto yy4; yy236: yych = (unsigned char)*++cur; if (yych == 'u') goto yy290; goto yy4; yy237: yych = (unsigned char)*++cur; if (yych == 'g') goto yy291; goto yy4; yy238: yych = (unsigned char)*++cur; if (yych == 'm') goto yy292; goto yy4; yy239: yych = (unsigned char)*++cur; if (yych == 'r') goto yy293; goto yy4; yy240: yych = (unsigned char)*++cur; if (yych == 'y') goto yy294; goto yy4; yy241: yych = (unsigned char)*++cur; if (yych == 'd') goto yy295; goto yy4; yy242: yych = (unsigned char)*++cur; if (yych == 't') goto yy296; goto yy4; yy243: yych = (unsigned char)*++cur; if (yych == 'a') goto yy298; goto yy4; yy244: yych = (unsigned char)*++cur; if (yych == 'e') goto yy299; goto yy4; yy245: yych = (unsigned char)*++cur; if (yych == 'e') goto yy300; goto yy4; yy246: yych = (unsigned char)*++cur; if (yych == 'm') goto yy301; goto yy4; yy247: yych = (unsigned char)*++cur; if (yych == 'x') goto yy302; goto yy4; yy248: yych = (unsigned char)*++cur; if (yych == 'o') goto yy303; goto yy4; yy249: yych = (unsigned char)*++cur; if (yych == '1') goto yy304; if (yych == '8') goto yy89; goto yy4; yy250: yych = (unsigned char)*++cur; if (yych == '-') goto yy305; goto yy4; yy251: yych = (unsigned char)*++cur; if (yych == 'i') goto yy306; goto yy4; yy252: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 128 "../src/ast/lex_conf.re" { const int32_t n = lex_conf_number (); if (n < 0) { fatal_lc(l, c, "configuration 'indent:top' must be nonnegative"); } opts.set_topIndent (static_cast (n)); return; } #line 1315 "src/ast/lex_conf.cc" yy254: yych = (unsigned char)*++cur; if (yych == 'l') goto yy307; goto yy4; yy255: yych = (unsigned char)*++cur; if (yych == 'x') goto yy308; goto yy4; yy256: yych = (unsigned char)*++cur; if (yych == 'x') goto yy309; goto yy4; yy257: yyaccept = 1; yych = (unsigned char)*(mar = ++cur); if (yybm[0+yych] & 32) { goto yy3; } if (yych <= 0x1F) { if (yych == '\t') { ctx = cur; goto yy311; } } else { if (yych <= ' ') { ctx = cur; goto yy311; } if (yych == '=') { ctx = cur; goto yy313; } } yy258: #line 156 "../src/ast/lex_conf.re" { opts.set_startlabel (lex_conf_string()); return; } #line 1352 "src/ast/lex_conf.cc" yy259: yych = (unsigned char)*++cur; if (yych == 't') goto yy315; goto yy4; yy260: yych = (unsigned char)*++cur; if (yych == 'l') goto yy317; goto yy4; yy261: yych = (unsigned char)*++cur; if (yych == 's') goto yy318; goto yy4; yy262: yych = (unsigned char)*++cur; if (yych == 'x') goto yy319; goto yy4; yy263: yych = (unsigned char)*++cur; if (yych == 'y') goto yy321; goto yy4; yy264: yych = (unsigned char)*++cur; if (yych == 'r') goto yy322; goto yy4; yy265: yych = (unsigned char)*++cur; if (yych == 'c') goto yy323; goto yy4; yy266: yych = (unsigned char)*++cur; if (yych == 'b') goto yy324; goto yy4; yy267: yych = (unsigned char)*++cur; if (yych == 'a') goto yy325; goto yy4; yy268: yych = (unsigned char)*++cur; if (yych == 'h') goto yy326; goto yy4; yy269: yych = (unsigned char)*++cur; if (yych == 'r') goto yy327; goto yy4; yy270: yych = (unsigned char)*++cur; if (yych == 'o') goto yy329; goto yy220; yy271: yych = (unsigned char)*++cur; if (yych == 'f') goto yy330; goto yy4; yy272: yych = (unsigned char)*++cur; if (yych == 'C') goto yy331; goto yy4; yy273: yych = (unsigned char)*++cur; if (yych == 'N') goto yy332; goto yy4; yy274: yych = (unsigned char)*++cur; if (yych <= 'W') goto yy4; if (yych <= 'X') goto yy333; if (yych <= 'Y') goto yy334; goto yy4; yy275: yych = (unsigned char)*++cur; if (yych == 'R') goto yy335; goto yy4; yy276: yych = (unsigned char)*++cur; if (yych == 'B') goto yy336; goto yy4; yy277: yych = (unsigned char)*++cur; if (yych == 'L') goto yy337; goto yy4; yy278: yych = (unsigned char)*++cur; if (yych == 'T') goto yy338; goto yy4; yy279: yych = (unsigned char)*++cur; if (yych == 'S') goto yy339; goto yy4; yy280: yych = (unsigned char)*++cur; if (yych == 'M') goto yy340; goto yy4; yy281: yych = (unsigned char)*++cur; if (yych == 'R') goto yy341; goto yy4; yy282: yych = (unsigned char)*++cur; if (yych == 'A') goto yy342; goto yy4; yy283: yych = (unsigned char)*++cur; if (yych == 'E') goto yy343; goto yy4; yy284: yych = (unsigned char)*++cur; if (yych == 'S') goto yy344; goto yy4; yy285: yych = (unsigned char)*++cur; if (yych == 'T') goto yy345; goto yy4; yy286: yych = (unsigned char)*++cur; if (yych == 'I') goto yy346; goto yy4; yy287: yych = (unsigned char)*++cur; if (yych == 'A') goto yy347; goto yy4; yy288: yych = (unsigned char)*++cur; if (yych == 'e') goto yy348; goto yy4; yy289: yych = (unsigned char)*++cur; if (yych == 'i') goto yy349; goto yy4; yy290: yych = (unsigned char)*++cur; if (yych == 't') goto yy350; goto yy4; yy291: yych = (unsigned char)*++cur; if (yych == '-') goto yy351; goto yy4; yy292: yych = (unsigned char)*++cur; if (yych == 'i') goto yy352; goto yy4; yy293: yych = (unsigned char)*++cur; if (yych == '-') goto yy353; goto yy4; yy294: yych = (unsigned char)*++cur; if (yych == '-') goto yy354; goto yy4; yy295: yych = (unsigned char)*++cur; if (yych == 'i') goto yy355; goto yy4; yy296: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 62 "../src/ast/lex_conf.re" { lex_conf_input(opts); return; } #line 1510 "src/ast/lex_conf.cc" yy298: yych = (unsigned char)*++cur; if (yych == 'h') goto yy356; goto yy4; yy299: yych = (unsigned char)*++cur; if (yych == 'd') goto yy357; goto yy4; yy300: yych = (unsigned char)*++cur; if (yych == 'b') goto yy358; goto yy4; yy301: yych = (unsigned char)*++cur; if (yych == 'i') goto yy359; goto yy4; yy302: yych = (unsigned char)*++cur; if (yych == '-') goto yy360; goto yy4; yy303: yych = (unsigned char)*++cur; if (yych == 'd') goto yy361; goto yy4; yy304: yych = (unsigned char)*++cur; if (yych == '6') goto yy117; goto yy4; yy305: yych = (unsigned char)*++cur; if (yych == 'c') goto yy362; goto yy4; yy306: yych = (unsigned char)*++cur; if (yych == 'n') goto yy363; goto yy4; yy307: yych = (unsigned char)*++cur; if (yych == 'l') goto yy364; goto yy4; yy308: yych = (unsigned char)*++cur; if (yych == 't') goto yy365; goto yy4; yy309: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 152 "../src/ast/lex_conf.re" { opts.set_labelPrefix (lex_conf_string ()); return; } #line 1562 "src/ast/lex_conf.cc" yy311: ++cur; if (lim <= cur) fill(1); yych = (unsigned char)*cur; if (yybm[0+yych] & 64) { goto yy311; } if (yych != '=') goto yy220; yy313: ++cur; if ((lim - cur) < 2) fill(2); yych = (unsigned char)*cur; if (yych <= ',') { if (yych <= '\t') { if (yych <= 0x08) goto yy220; goto yy313; } else { if (yych == ' ') goto yy313; goto yy220; } } else { if (yych <= '/') { if (yych <= '-') goto yy367; goto yy220; } else { if (yych <= '0') goto yy368; if (yych <= '9') goto yy370; goto yy220; } } yy315: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 87 "../src/ast/lex_conf.re" { opts.set_bUseStateAbort (lex_conf_bool()); return; } #line 1600 "src/ast/lex_conf.cc" yy317: yych = (unsigned char)*++cur; if (yych == 'a') goto yy372; goto yy4; yy318: yych = (unsigned char)*++cur; if (yych == 's') goto yy373; goto yy4; yy319: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 123 "../src/ast/lex_conf.re" { opts.set_tags_prefix (lex_conf_string ()); return; } #line 1616 "src/ast/lex_conf.cc" yy321: yych = (unsigned char)*++cur; if (yych <= 'c') { if (yych <= '`') goto yy4; if (yych <= 'a') goto yy374; if (yych <= 'b') goto yy375; goto yy376; } else { if (yych <= 'r') goto yy4; if (yych <= 's') goto yy377; if (yych <= 't') goto yy378; goto yy4; } yy322: yych = (unsigned char)*++cur; if (yych == 's') goto yy379; goto yy4; yy323: yych = (unsigned char)*++cur; if (yych == 'k') goto yy380; goto yy4; yy324: yych = (unsigned char)*++cur; if (yych == 'l') goto yy382; goto yy4; yy325: yych = (unsigned char)*++cur; if (yych == 'm') goto yy383; goto yy4; yy326: yych = (unsigned char)*++cur; if (yych == 'o') goto yy384; goto yy4; yy327: yyaccept = 2; yych = (unsigned char)*(mar = ++cur); if (yybm[0+yych] & 32) { goto yy3; } if (yych == '@') goto yy385; yy328: #line 74 "../src/ast/lex_conf.re" { opts.set_condDivider (lex_conf_string ()); return; } #line 1660 "src/ast/lex_conf.cc" yy329: yych = (unsigned char)*++cur; if (yych == 'n') goto yy386; goto yy220; yy330: yych = (unsigned char)*++cur; if (yych == 'i') goto yy387; goto yy4; yy331: yych = (unsigned char)*++cur; if (yych == 'K') goto yy388; goto yy4; yy332: yych = (unsigned char)*++cur; if (yych == 'D') goto yy389; goto yy4; yy333: yych = (unsigned char)*++cur; if (yych == 'M') goto yy390; goto yy4; yy334: yych = (unsigned char)*++cur; if (yych == 'P') goto yy391; goto yy4; yy335: yych = (unsigned char)*++cur; if (yych == 'S') goto yy392; goto yy4; yy336: yych = (unsigned char)*++cur; if (yych == 'U') goto yy393; goto yy4; yy337: yych = (unsigned char)*++cur; if (yych == 'L') goto yy394; goto yy4; yy338: yych = (unsigned char)*++cur; if (yych == 'C') goto yy396; if (yych == 'S') goto yy397; goto yy4; yy339: yych = (unsigned char)*++cur; if (yych == 'S') goto yy398; goto yy4; yy340: yych = (unsigned char)*++cur; if (yych == 'I') goto yy399; goto yy4; yy341: yych = (unsigned char)*++cur; if (yych == 'K') goto yy400; goto yy4; yy342: yych = (unsigned char)*++cur; if (yych == 'G') goto yy401; goto yy4; yy343: yych = (unsigned char)*++cur; if (yych == 'K') goto yy402; goto yy4; yy344: yych = (unsigned char)*++cur; if (yych == 'T') goto yy404; goto yy4; yy345: yych = (unsigned char)*++cur; if (yych == 'C') goto yy405; if (yych == 'S') goto yy406; goto yy4; yy346: yych = (unsigned char)*++cur; if (yych == 'P') goto yy407; goto yy4; yy347: yych = (unsigned char)*++cur; if (yych == 'G') goto yy409; goto yy4; yy348: yych = (unsigned char)*++cur; if (yych == 'c') goto yy410; goto yy4; yy349: yych = (unsigned char)*++cur; if (yych == 'n') goto yy411; goto yy4; yy350: yych = (unsigned char)*++cur; if (yych == 'e') goto yy412; goto yy4; yy351: yych = (unsigned char)*++cur; if (yych == 'o') goto yy413; goto yy4; yy352: yych = (unsigned char)*++cur; if (yych == 'n') goto yy414; goto yy4; yy353: yych = (unsigned char)*++cur; if (yych == 's') goto yy415; goto yy4; yy354: yych = (unsigned char)*++cur; if (yych == 'c') goto yy416; goto yy4; yy355: yych = (unsigned char)*++cur; if (yych == 'n') goto yy417; goto yy4; yy356: yych = (unsigned char)*++cur; if (yych == 'e') goto yy418; goto yy4; yy357: yych = (unsigned char)*++cur; if (yych == '-') goto yy419; goto yy4; yy358: yych = (unsigned char)*++cur; if (yych == 'u') goto yy420; goto yy4; yy359: yych = (unsigned char)*++cur; if (yych == 'z') goto yy421; goto yy4; yy360: yych = (unsigned char)*++cur; if (yych == 'c') goto yy422; goto yy4; yy361: yych = (unsigned char)*++cur; if (yych == 'e') goto yy423; goto yy4; yy362: yych = (unsigned char)*++cur; if (yych == 'h') goto yy424; goto yy4; yy363: yych = (unsigned char)*++cur; if (yych == 'g') goto yy425; goto yy4; yy364: yych = (unsigned char)*++cur; if (yych == 'L') goto yy427; goto yy4; yy365: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 86 "../src/ast/lex_conf.re" { opts.set_yynext (lex_conf_string ()); return; } #line 1814 "src/ast/lex_conf.cc" yy367: yych = (unsigned char)*++cur; if (yych <= '0') goto yy220; if (yych <= '9') goto yy370; goto yy220; yy368: ++cur; yy369: cur = ctx; #line 155 "../src/ast/lex_conf.re" { opts.set_startlabel_force (lex_conf_bool()); return; } #line 1826 "src/ast/lex_conf.cc" yy370: ++cur; if (lim <= cur) fill(1); yych = (unsigned char)*cur; if (yybm[0+yych] & 128) { goto yy370; } goto yy369; yy372: yych = (unsigned char)*++cur; if (yych == 'b') goto yy428; goto yy4; yy373: yych = (unsigned char)*++cur; if (yych == 'i') goto yy429; goto yy4; yy374: yych = (unsigned char)*++cur; if (yych == 'c') goto yy430; goto yy4; yy375: yych = (unsigned char)*++cur; if (yych == 'm') goto yy431; goto yy4; yy376: yych = (unsigned char)*++cur; if (yych == 'h') goto yy433; if (yych == 't') goto yy435; goto yy4; yy377: yych = (unsigned char)*++cur; if (yych == 't') goto yy436; goto yy4; yy378: yych = (unsigned char)*++cur; if (yych == 'a') goto yy437; goto yy4; yy379: yych = (unsigned char)*++cur; if (yych == 'i') goto yy438; goto yy4; yy380: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 150 "../src/ast/lex_conf.re" { opts.set_fill_check (lex_conf_bool()); return; } #line 1875 "src/ast/lex_conf.cc" yy382: yych = (unsigned char)*++cur; if (yych == 'e') goto yy439; goto yy4; yy383: yych = (unsigned char)*++cur; if (yych == 'e') goto yy441; goto yy4; yy384: yych = (unsigned char)*++cur; if (yych == 'l') goto yy442; goto yy4; yy385: yych = (unsigned char)*++cur; if (yych == 'c') goto yy443; goto yy220; yy386: yych = (unsigned char)*++cur; if (yych == 'd') goto yy444; goto yy220; yy387: yych = (unsigned char)*++cur; if (yych == 'x') goto yy446; goto yy4; yy388: yych = (unsigned char)*++cur; if (yych == 'U') goto yy448; goto yy4; yy389: yych = (unsigned char)*++cur; if (yych == 'T') goto yy449; goto yy4; yy390: yych = (unsigned char)*++cur; if (yych == 'A') goto yy450; goto yy4; yy391: yych = (unsigned char)*++cur; if (yych == 'E') goto yy451; goto yy4; yy392: yych = (unsigned char)*++cur; if (yych == 'O') goto yy453; goto yy4; yy393: yych = (unsigned char)*++cur; if (yych == 'G') goto yy454; goto yy4; yy394: yyaccept = 3; yych = (unsigned char)*(mar = ++cur); if (yych <= '?') { if (yych <= '/') { if (yych == '-') goto yy3; } else { if (yych <= '9') goto yy3; if (yych <= ':') goto yy456; } } else { if (yych <= '^') { if (yych <= '@') goto yy457; if (yych <= 'Z') goto yy3; } else { if (yych == '`') goto yy395; if (yych <= 'z') goto yy3; } } yy395: #line 145 "../src/ast/lex_conf.re" { opts.set_fill (lex_conf_string ()); return; } #line 1946 "src/ast/lex_conf.cc" yy396: yych = (unsigned char)*++cur; if (yych == 'O') goto yy458; goto yy4; yy397: yych = (unsigned char)*++cur; if (yych == 'T') goto yy459; goto yy4; yy398: yych = (unsigned char)*++cur; if (yych == 'T') goto yy460; goto yy4; yy399: yych = (unsigned char)*++cur; if (yych == 'T') goto yy461; goto yy4; yy400: yych = (unsigned char)*++cur; if (yych == 'E') goto yy463; goto yy4; yy401: yych = (unsigned char)*++cur; if (yych == 'N') goto yy464; if (yych == 'P') goto yy466; goto yy4; yy402: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 110 "../src/ast/lex_conf.re" { opts.set_yypeek (lex_conf_string ()); return; } #line 1979 "src/ast/lex_conf.cc" yy404: yych = (unsigned char)*++cur; if (yych == 'O') goto yy468; goto yy4; yy405: yych = (unsigned char)*++cur; if (yych == 'O') goto yy469; goto yy4; yy406: yych = (unsigned char)*++cur; if (yych == 'T') goto yy470; goto yy4; yy407: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 111 "../src/ast/lex_conf.re" { opts.set_yyskip (lex_conf_string ()); return; } #line 1999 "src/ast/lex_conf.cc" yy409: yych = (unsigned char)*++cur; if (yych == 'N') goto yy471; if (yych == 'P') goto yy473; goto yy4; yy410: yych = (unsigned char)*++cur; if (yych == 't') goto yy475; goto yy4; yy411: yych = (unsigned char)*++cur; if (yych == 's') goto yy476; if (yych == 'v') goto yy477; goto yy4; yy412: yych = (unsigned char)*++cur; if (yych == 'd') goto yy478; goto yy4; yy413: yych = (unsigned char)*++cur; if (yych == 'u') goto yy479; goto yy4; yy414: yych = (unsigned char)*++cur; if (yych == 'i') goto yy480; goto yy4; yy415: yych = (unsigned char)*++cur; if (yych == 'k') goto yy481; goto yy4; yy416: yych = (unsigned char)*++cur; if (yych == 'l') goto yy482; goto yy4; yy417: yych = (unsigned char)*++cur; if (yych == 'g') goto yy483; goto yy4; yy418: yych = (unsigned char)*++cur; if (yych == 'a') goto yy484; goto yy4; yy419: yych = (unsigned char)*++cur; if (yych == 'i') goto yy485; goto yy4; yy420: yych = (unsigned char)*++cur; if (yych == 'g') goto yy486; goto yy4; yy421: yych = (unsigned char)*++cur; if (yych == 'e') goto yy487; goto yy4; yy422: yych = (unsigned char)*++cur; if (yych == 'a') goto yy488; goto yy4; yy423: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } goto yy114; yy424: yych = (unsigned char)*++cur; if (yych == 'a') goto yy489; goto yy4; yy425: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 126 "../src/ast/lex_conf.re" { opts.set_indString (lex_conf_string ()); return; } #line 2075 "src/ast/lex_conf.cc" yy427: yych = (unsigned char)*++cur; if (yych == 'a') goto yy490; goto yy4; yy428: yych = (unsigned char)*++cur; if (yych == 'e') goto yy491; goto yy4; yy429: yych = (unsigned char)*++cur; if (yych == 'o') goto yy492; goto yy4; yy430: yych = (unsigned char)*++cur; if (yych == 'c') goto yy493; goto yy4; yy431: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 91 "../src/ast/lex_conf.re" { opts.set_yybm (lex_conf_string ()); return; } #line 2099 "src/ast/lex_conf.cc" yy433: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 141 "../src/ast/lex_conf.re" { opts.set_yych (lex_conf_string ()); return; } #line 2107 "src/ast/lex_conf.cc" yy435: yych = (unsigned char)*++cur; if (yych == 'a') goto yy494; goto yy4; yy436: yych = (unsigned char)*++cur; if (yych == 'a') goto yy495; goto yy4; yy437: yych = (unsigned char)*++cur; if (yych == 'r') goto yy496; goto yy4; yy438: yych = (unsigned char)*++cur; if (yych == 'o') goto yy497; goto yy4; yy439: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 146 "../src/ast/lex_conf.re" { opts.set_fill_use (lex_conf_bool()); return; } #line 2131 "src/ast/lex_conf.cc" yy441: yych = (unsigned char)*++cur; if (yych == 't') goto yy498; goto yy4; yy442: yych = (unsigned char)*++cur; if (yych == 'd') goto yy499; goto yy4; yy443: yych = (unsigned char)*++cur; if (yych == 'o') goto yy501; goto yy220; yy444: ++cur; #line 77 "../src/ast/lex_conf.re" { opts.set_condGotoParam (lex_conf_string ()); return; } #line 2148 "src/ast/lex_conf.cc" yy446: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 73 "../src/ast/lex_conf.re" { opts.set_condEnumPrefix (lex_conf_string ()); return; } #line 2156 "src/ast/lex_conf.cc" yy448: yych = (unsigned char)*++cur; if (yych == 'P') goto yy502; goto yy4; yy449: yych = (unsigned char)*++cur; if (yych == 'Y') goto yy504; goto yy4; yy450: yych = (unsigned char)*++cur; if (yych == 'R') goto yy505; goto yy4; yy451: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 140 "../src/ast/lex_conf.re" { opts.set_yyctype (lex_conf_string ()); return; } #line 2176 "src/ast/lex_conf.cc" yy453: yych = (unsigned char)*++cur; if (yych == 'R') goto yy506; goto yy4; yy454: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 138 "../src/ast/lex_conf.re" { opts.set_yydebug (lex_conf_string ()); return; } #line 2188 "src/ast/lex_conf.cc" yy456: yych = (unsigned char)*++cur; if (yych == 'n') goto yy508; goto yy4; yy457: yych = (unsigned char)*++cur; if (yych == 'l') goto yy509; goto yy220; yy458: yych = (unsigned char)*++cur; if (yych == 'N') goto yy510; goto yy4; yy459: yych = (unsigned char)*++cur; if (yych == 'A') goto yy511; goto yy4; yy460: yych = (unsigned char)*++cur; if (yych == 'H') goto yy512; goto yy4; yy461: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 108 "../src/ast/lex_conf.re" { opts.set_yylimit (lex_conf_string ()); return; } #line 2216 "src/ast/lex_conf.cc" yy463: yych = (unsigned char)*++cur; if (yych == 'R') goto yy513; goto yy4; yy464: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 120 "../src/ast/lex_conf.re" { opts.set_yymtagn (lex_conf_string ()); return; } #line 2228 "src/ast/lex_conf.cc" yy466: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 121 "../src/ast/lex_conf.re" { opts.set_yymtagp (lex_conf_string ()); return; } #line 2236 "src/ast/lex_conf.cc" yy468: yych = (unsigned char)*++cur; if (yych == 'R') goto yy515; goto yy4; yy469: yych = (unsigned char)*++cur; if (yych == 'N') goto yy516; goto yy4; yy470: yych = (unsigned char)*++cur; if (yych == 'A') goto yy517; goto yy4; yy471: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 118 "../src/ast/lex_conf.re" { opts.set_yystagn (lex_conf_string ()); return; } #line 2256 "src/ast/lex_conf.cc" yy473: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 119 "../src/ast/lex_conf.re" { opts.set_yystagp (lex_conf_string ()); return; } #line 2264 "src/ast/lex_conf.cc" yy475: yych = (unsigned char)*++cur; if (yych == 'o') goto yy518; goto yy4; yy476: yych = (unsigned char)*++cur; if (yych == 'e') goto yy519; goto yy4; yy477: yych = (unsigned char)*++cur; if (yych == 'e') goto yy520; goto yy4; yy478: yych = (unsigned char)*++cur; if (yych == '-') goto yy521; goto yy4; yy479: yych = (unsigned char)*++cur; if (yych == 't') goto yy522; goto yy4; yy480: yych = (unsigned char)*++cur; if (yych == 'm') goto yy523; goto yy4; yy481: yych = (unsigned char)*++cur; if (yych == 'i') goto yy524; goto yy4; yy482: yych = (unsigned char)*++cur; if (yych == 'a') goto yy525; goto yy4; yy483: yych = (unsigned char)*++cur; if (yych == '-') goto yy526; goto yy4; yy484: yych = (unsigned char)*++cur; if (yych == 'd') goto yy527; goto yy4; yy485: yych = (unsigned char)*++cur; if (yych == 'f') goto yy529; goto yy4; yy486: yych = (unsigned char)*++cur; if (yych == '-') goto yy530; goto yy4; yy487: yych = (unsigned char)*++cur; if (yych == '-') goto yy531; goto yy4; yy488: yych = (unsigned char)*++cur; if (yych == 'p') goto yy532; goto yy4; yy489: yych = (unsigned char)*++cur; if (yych == 'r') goto yy533; goto yy4; yy490: yych = (unsigned char)*++cur; if (yych == 'b') goto yy534; goto yy4; yy491: yych = (unsigned char)*++cur; if (yych == 'l') goto yy535; goto yy4; yy492: yych = (unsigned char)*++cur; if (yych == 'n') goto yy537; goto yy4; yy493: yych = (unsigned char)*++cur; if (yych == 'e') goto yy539; goto yy4; yy494: yych = (unsigned char)*++cur; if (yych == 'b') goto yy540; goto yy4; yy495: yych = (unsigned char)*++cur; if (yych == 'b') goto yy541; goto yy4; yy496: yych = (unsigned char)*++cur; if (yych == 'g') goto yy542; goto yy4; yy497: yych = (unsigned char)*++cur; if (yych == 'n') goto yy543; goto yy4; yy498: yych = (unsigned char)*++cur; if (yych == 'e') goto yy545; goto yy4; yy499: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 94 "../src/ast/lex_conf.re" { const int32_t n = lex_conf_number (); if (n < 0) { fatal_lc(l, c, "configuration 'cgoto:threshold' must be nonnegative"); } opts.set_cGotoThreshold (static_cast (n)); return; } #line 2376 "src/ast/lex_conf.cc" yy501: yych = (unsigned char)*++cur; if (yych == 'n') goto yy546; goto yy220; yy502: yych = (unsigned char)*++cur; if (yych <= 'B') { if (yych <= '/') { if (yych == '-') goto yy3; } else { if (yych <= ':') goto yy3; if (yych >= 'A') goto yy3; } } else { if (yych <= '^') { if (yych <= 'C') goto yy547; if (yych <= 'Z') goto yy3; } else { if (yych == '`') goto yy503; if (yych <= 'z') goto yy3; } } yy503: #line 112 "../src/ast/lex_conf.re" { opts.set_yybackup (lex_conf_string ()); return; } #line 2402 "src/ast/lex_conf.cc" yy504: yych = (unsigned char)*++cur; if (yych == 'P') goto yy548; goto yy4; yy505: yych = (unsigned char)*++cur; if (yych == 'K') goto yy549; goto yy4; yy506: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 105 "../src/ast/lex_conf.re" { opts.set_yycursor (lex_conf_string ()); return; } #line 2418 "src/ast/lex_conf.cc" yy508: yych = (unsigned char)*++cur; if (yych == 'a') goto yy550; goto yy4; yy509: yych = (unsigned char)*++cur; if (yych == 'e') goto yy551; goto yy220; yy510: yych = (unsigned char)*++cur; if (yych == 'D') goto yy552; goto yy4; yy511: yych = (unsigned char)*++cur; if (yych == 'T') goto yy553; goto yy4; yy512: yych = (unsigned char)*++cur; if (yych == 'A') goto yy554; goto yy4; yy513: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 106 "../src/ast/lex_conf.re" { opts.set_yymarker (lex_conf_string ()); return; } #line 2446 "src/ast/lex_conf.cc" yy515: yych = (unsigned char)*++cur; if (yych == 'E') goto yy555; goto yy4; yy516: yych = (unsigned char)*++cur; if (yych == 'D') goto yy557; goto yy4; yy517: yych = (unsigned char)*++cur; if (yych == 'T') goto yy558; goto yy4; yy518: yych = (unsigned char)*++cur; if (yych == 'r') goto yy559; goto yy4; yy519: yych = (unsigned char)*++cur; if (yych == 'n') goto yy560; goto yy4; yy520: yych = (unsigned char)*++cur; if (yych == 'r') goto yy561; goto yy4; yy521: yych = (unsigned char)*++cur; if (yych == 'g') goto yy562; goto yy4; yy522: yych = (unsigned char)*++cur; if (yych == 'p') goto yy563; goto yy4; yy523: yych = (unsigned char)*++cur; if (yych == 'i') goto yy564; goto yy4; yy524: yych = (unsigned char)*++cur; if (yych == 'p') goto yy565; goto yy4; yy525: yych = (unsigned char)*++cur; if (yych == 's') goto yy567; goto yy4; yy526: yych = (unsigned char)*++cur; if (yych == 'p') goto yy568; goto yy4; yy527: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 51 "../src/ast/lex_conf.re" { opts.set_lookahead(lex_conf_bool()); return; } #line 2502 "src/ast/lex_conf.cc" yy529: yych = (unsigned char)*++cur; if (yych == 's') goto yy110; goto yy4; yy530: yych = (unsigned char)*++cur; if (yych == 'i') goto yy569; goto yy4; yy531: yych = (unsigned char)*++cur; if (yych == 't') goto yy570; goto yy4; yy532: yych = (unsigned char)*++cur; if (yych == 't') goto yy571; goto yy4; yy533: yych = (unsigned char)*++cur; if (yych == 's') goto yy572; goto yy4; yy534: yych = (unsigned char)*++cur; if (yych == 'e') goto yy573; goto yy4; yy535: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 88 "../src/ast/lex_conf.re" { opts.set_bUseStateNext (lex_conf_bool()); return; } #line 2534 "src/ast/lex_conf.cc" yy537: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 124 "../src/ast/lex_conf.re" { opts.set_tags_expression(lex_conf_string ()); return; } #line 2542 "src/ast/lex_conf.cc" yy539: yych = (unsigned char)*++cur; if (yych == 'p') goto yy574; goto yy4; yy540: yych = (unsigned char)*++cur; if (yych == 'l') goto yy575; goto yy4; yy541: yych = (unsigned char)*++cur; if (yych == 'l') goto yy576; goto yy4; yy542: yych = (unsigned char)*++cur; if (yych == 'e') goto yy577; goto yy4; yy543: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 142 "../src/ast/lex_conf.re" { opts.set_yychConversion (lex_conf_bool()); return; } #line 2566 "src/ast/lex_conf.cc" yy545: yych = (unsigned char)*++cur; if (yych == 'r') goto yy578; goto yy4; yy546: yych = (unsigned char)*++cur; if (yych == 'd') goto yy580; goto yy220; yy547: yych = (unsigned char)*++cur; if (yych == 'T') goto yy582; goto yy4; yy548: yych = (unsigned char)*++cur; if (yych == 'E') goto yy583; goto yy4; yy549: yych = (unsigned char)*++cur; if (yych == 'E') goto yy585; goto yy4; yy550: yych = (unsigned char)*++cur; if (yych == 'k') goto yy586; goto yy4; yy551: yych = (unsigned char)*++cur; if (yych == 'n') goto yy587; goto yy220; yy552: yych = (unsigned char)*++cur; if (yych == 'I') goto yy589; goto yy4; yy553: yych = (unsigned char)*++cur; if (yych == 'E') goto yy590; goto yy4; yy554: yych = (unsigned char)*++cur; if (yych == 'N') goto yy592; goto yy4; yy555: yych = (unsigned char)*++cur; if (yych <= 'C') { if (yych <= '/') { if (yych == '-') goto yy3; } else { if (yych <= ':') goto yy3; if (yych <= '@') goto yy556; if (yych <= 'B') goto yy3; goto yy594; } } else { if (yych <= '^') { if (yych == 'T') goto yy595; if (yych <= 'Z') goto yy3; } else { if (yych == '`') goto yy556; if (yych <= 'z') goto yy3; } } yy556: #line 114 "../src/ast/lex_conf.re" { opts.set_yyrestore (lex_conf_string ()); return; } #line 2630 "src/ast/lex_conf.cc" yy557: yych = (unsigned char)*++cur; if (yych == 'I') goto yy596; goto yy4; yy558: yych = (unsigned char)*++cur; if (yych == 'E') goto yy597; goto yy4; yy559: yych = (unsigned char)*++cur; if (yych == 's') goto yy599; goto yy4; yy560: yych = (unsigned char)*++cur; if (yych == 's') goto yy600; goto yy4; yy561: yych = (unsigned char)*++cur; if (yych == 't') goto yy601; goto yy4; yy562: yych = (unsigned char)*++cur; if (yych == 'o') goto yy602; goto yy4; yy563: yych = (unsigned char)*++cur; if (yych == 'u') goto yy603; goto yy4; yy564: yych = (unsigned char)*++cur; if (yych == 'z') goto yy604; goto yy4; yy565: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 53 "../src/ast/lex_conf.re" { opts.set_eager_skip(lex_conf_bool()); return; } #line 2670 "src/ast/lex_conf.cc" yy567: yych = (unsigned char)*++cur; if (yych == 's') goto yy605; goto yy4; yy568: yych = (unsigned char)*++cur; if (yych == 'o') goto yy607; goto yy4; yy569: yych = (unsigned char)*++cur; if (yych == 'n') goto yy608; goto yy4; yy570: yych = (unsigned char)*++cur; if (yych == 'a') goto yy609; goto yy4; yy571: yych = (unsigned char)*++cur; if (yych == 'u') goto yy610; goto yy4; yy572: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } goto yy116; yy573: yych = (unsigned char)*++cur; if (yych == 'l') goto yy611; goto yy4; yy574: yych = (unsigned char)*++cur; if (yych == 't') goto yy613; goto yy4; yy575: yych = (unsigned char)*++cur; if (yych == 'e') goto yy615; goto yy4; yy576: yych = (unsigned char)*++cur; if (yych == 'e') goto yy617; goto yy4; yy577: yych = (unsigned char)*++cur; if (yych == 't') goto yy619; goto yy4; yy578: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 148 "../src/ast/lex_conf.re" { opts.set_fill_arg_use (lex_conf_bool()); return; } #line 2724 "src/ast/lex_conf.cc" yy580: ++cur; #line 75 "../src/ast/lex_conf.re" { opts.set_condDividerParam (lex_conf_string ()); return; } #line 2729 "src/ast/lex_conf.cc" yy582: yych = (unsigned char)*++cur; if (yych == 'X') goto yy621; goto yy4; yy583: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 66 "../src/ast/lex_conf.re" { opts.set_yycondtype (lex_conf_string ()); return; } #line 2741 "src/ast/lex_conf.cc" yy585: yych = (unsigned char)*++cur; if (yych == 'R') goto yy623; goto yy4; yy586: yych = (unsigned char)*++cur; if (yych == 'e') goto yy625; goto yy4; yy587: ++cur; #line 147 "../src/ast/lex_conf.re" { opts.set_fill_arg (lex_conf_string ()); return; } #line 2754 "src/ast/lex_conf.cc" yy589: yych = (unsigned char)*++cur; if (yych == 'T') goto yy626; goto yy4; yy590: yych = (unsigned char)*++cur; if (yych <= '@') { if (yych <= '/') { if (yych == '-') goto yy3; } else { if (yych <= '9') goto yy3; if (yych <= ':') goto yy627; } } else { if (yych <= '_') { if (yych <= 'Z') goto yy3; if (yych >= '_') goto yy3; } else { if (yych <= '`') goto yy591; if (yych <= 'z') goto yy3; } } yy591: #line 80 "../src/ast/lex_conf.re" { opts.set_state_get (lex_conf_string ()); return; } #line 2780 "src/ast/lex_conf.cc" yy592: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 117 "../src/ast/lex_conf.re" { opts.set_yylessthan (lex_conf_string ()); return; } #line 2788 "src/ast/lex_conf.cc" yy594: yych = (unsigned char)*++cur; if (yych == 'T') goto yy628; goto yy4; yy595: yych = (unsigned char)*++cur; if (yych == 'A') goto yy629; goto yy4; yy596: yych = (unsigned char)*++cur; if (yych == 'T') goto yy630; goto yy4; yy597: yyaccept = 4; yych = (unsigned char)*(mar = ++cur); if (yych <= '?') { if (yych <= '/') { if (yych == '-') goto yy3; } else { if (yych <= '9') goto yy3; if (yych <= ':') goto yy631; } } else { if (yych <= '^') { if (yych <= '@') goto yy632; if (yych <= 'Z') goto yy3; } else { if (yych == '`') goto yy598; if (yych <= 'z') goto yy3; } } yy598: #line 82 "../src/ast/lex_conf.re" { opts.set_state_set (lex_conf_string ()); return; } #line 2823 "src/ast/lex_conf.cc" yy599: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } goto yy96; yy600: yych = (unsigned char)*++cur; if (yych == 'i') goto yy633; goto yy4; yy601: yych = (unsigned char)*++cur; if (yych == 'e') goto yy634; goto yy4; yy602: yych = (unsigned char)*++cur; if (yych == 't') goto yy635; goto yy4; yy603: yych = (unsigned char)*++cur; if (yych == 't') goto yy636; goto yy4; yy604: yych = (unsigned char)*++cur; if (yych == 'a') goto yy637; goto yy4; yy605: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 63 "../src/ast/lex_conf.re" { lex_conf_empty_class(opts); return; } #line 2857 "src/ast/lex_conf.cc" yy607: yych = (unsigned char)*++cur; if (yych == 'l') goto yy638; goto yy4; yy608: yych = (unsigned char)*++cur; if (yych == 'f') goto yy639; goto yy4; yy609: yych = (unsigned char)*++cur; if (yych == 'g') goto yy640; goto yy4; yy610: yych = (unsigned char)*++cur; if (yych == 'r') goto yy641; goto yy4; yy611: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 85 "../src/ast/lex_conf.re" { opts.set_yyfilllabel (lex_conf_string ()); return; } #line 2881 "src/ast/lex_conf.cc" yy613: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 89 "../src/ast/lex_conf.re" { opts.set_yyaccept (lex_conf_string ()); return; } #line 2889 "src/ast/lex_conf.cc" yy615: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 78 "../src/ast/lex_conf.re" { opts.set_yyctable (lex_conf_string ()); return; } #line 2897 "src/ast/lex_conf.cc" yy617: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 159 "../src/ast/lex_conf.re" { lex_conf_string (); return; } #line 2905 "src/ast/lex_conf.cc" yy619: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 103 "../src/ast/lex_conf.re" { opts.set_yytarget (lex_conf_string ()); return; } #line 2913 "src/ast/lex_conf.cc" yy621: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 113 "../src/ast/lex_conf.re" { opts.set_yybackupctx (lex_conf_string ()); return; } #line 2921 "src/ast/lex_conf.cc" yy623: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 107 "../src/ast/lex_conf.re" { opts.set_yyctxmarker (lex_conf_string ()); return; } #line 2929 "src/ast/lex_conf.cc" yy625: yych = (unsigned char)*++cur; if (yych == 'd') goto yy642; goto yy4; yy626: yych = (unsigned char)*++cur; if (yych == 'I') goto yy644; goto yy4; yy627: yych = (unsigned char)*++cur; if (yych == 'n') goto yy645; goto yy4; yy628: yych = (unsigned char)*++cur; if (yych == 'X') goto yy646; goto yy4; yy629: yych = (unsigned char)*++cur; if (yych == 'G') goto yy648; goto yy4; yy630: yych = (unsigned char)*++cur; if (yych == 'I') goto yy650; goto yy4; yy631: yych = (unsigned char)*++cur; if (yych == 'n') goto yy651; goto yy4; yy632: yych = (unsigned char)*++cur; if (yych == 's') goto yy652; goto yy220; yy633: yych = (unsigned char)*++cur; if (yych == 't') goto yy653; goto yy4; yy634: yych = (unsigned char)*++cur; if (yych == 'd') goto yy654; goto yy4; yy635: yych = (unsigned char)*++cur; if (yych == 'o') goto yy656; goto yy4; yy636: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } goto yy99; yy637: yych = (unsigned char)*++cur; if (yych == 't') goto yy657; goto yy4; yy638: yych = (unsigned char)*++cur; if (yych == 'i') goto yy658; goto yy4; yy639: yych = (unsigned char)*++cur; if (yych == 'o') goto yy659; goto yy4; yy640: yych = (unsigned char)*++cur; if (yych == 's') goto yy660; goto yy4; yy641: yych = (unsigned char)*++cur; if (yych == 'e') goto yy662; goto yy4; yy642: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 149 "../src/ast/lex_conf.re" { opts.set_fill_naked (lex_conf_bool()); return; } #line 3007 "src/ast/lex_conf.cc" yy644: yych = (unsigned char)*++cur; if (yych == 'O') goto yy663; goto yy4; yy645: yych = (unsigned char)*++cur; if (yych == 'a') goto yy664; goto yy4; yy646: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 115 "../src/ast/lex_conf.re" { opts.set_yyrestorectx (lex_conf_string ()); return; } #line 3023 "src/ast/lex_conf.cc" yy648: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 116 "../src/ast/lex_conf.re" { opts.set_yyrestoretag (lex_conf_string ()); return; } #line 3031 "src/ast/lex_conf.cc" yy650: yych = (unsigned char)*++cur; if (yych == 'O') goto yy665; goto yy4; yy651: yych = (unsigned char)*++cur; if (yych == 'a') goto yy666; goto yy4; yy652: yych = (unsigned char)*++cur; if (yych == 't') goto yy667; goto yy220; yy653: yych = (unsigned char)*++cur; if (yych == 'i') goto yy668; goto yy4; yy654: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 50 "../src/ast/lex_conf.re" { opts.set_bCaseInverted(lex_conf_bool()); return; } #line 3055 "src/ast/lex_conf.cc" yy656: yych = (unsigned char)*++cur; if (yych == 's') goto yy102; goto yy4; yy657: yych = (unsigned char)*++cur; if (yych == 'i') goto yy669; goto yy4; yy658: yych = (unsigned char)*++cur; if (yych == 'c') goto yy670; goto yy4; yy659: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } goto yy105; yy660: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 52 "../src/ast/lex_conf.re" { opts.set_optimize_tags(lex_conf_bool()); return; } #line 3081 "src/ast/lex_conf.cc" yy662: yych = (unsigned char)*++cur; if (yych == 's') goto yy91; goto yy4; yy663: yych = (unsigned char)*++cur; if (yych == 'N') goto yy671; goto yy4; yy664: yych = (unsigned char)*++cur; if (yych == 'k') goto yy673; goto yy4; yy665: yych = (unsigned char)*++cur; if (yych == 'N') goto yy674; goto yy4; yy666: yych = (unsigned char)*++cur; if (yych == 'k') goto yy676; goto yy4; yy667: yych = (unsigned char)*++cur; if (yych == 'a') goto yy677; goto yy220; yy668: yych = (unsigned char)*++cur; if (yych == 'v') goto yy678; goto yy4; yy669: yych = (unsigned char)*++cur; if (yych == 'o') goto yy679; goto yy4; yy670: yych = (unsigned char)*++cur; if (yych == 'y') goto yy680; goto yy4; yy671: yych = (unsigned char)*++cur; if (yych <= '@') { if (yych <= '/') { if (yych == '-') goto yy3; } else { if (yych <= '9') goto yy3; if (yych <= ':') goto yy682; } } else { if (yych <= '_') { if (yych <= 'Z') goto yy3; if (yych >= '_') goto yy3; } else { if (yych <= '`') goto yy672; if (yych <= 'z') goto yy3; } } yy672: #line 67 "../src/ast/lex_conf.re" { opts.set_cond_get (lex_conf_string ()); return; } #line 3139 "src/ast/lex_conf.cc" yy673: yych = (unsigned char)*++cur; if (yych == 'e') goto yy683; goto yy4; yy674: yyaccept = 5; yych = (unsigned char)*(mar = ++cur); if (yych <= '?') { if (yych <= '/') { if (yych == '-') goto yy3; } else { if (yych <= '9') goto yy3; if (yych <= ':') goto yy684; } } else { if (yych <= '^') { if (yych <= '@') goto yy685; if (yych <= 'Z') goto yy3; } else { if (yych == '`') goto yy675; if (yych <= 'z') goto yy3; } } yy675: #line 69 "../src/ast/lex_conf.re" { opts.set_cond_set (lex_conf_string ()); return; } #line 3166 "src/ast/lex_conf.cc" yy676: yych = (unsigned char)*++cur; if (yych == 'e') goto yy686; goto yy4; yy677: yych = (unsigned char)*++cur; if (yych == 't') goto yy687; goto yy220; yy678: yych = (unsigned char)*++cur; if (yych == 'e') goto yy688; goto yy4; yy679: yych = (unsigned char)*++cur; if (yych == 'n') goto yy690; goto yy4; yy680: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 61 "../src/ast/lex_conf.re" { lex_conf_encoding_policy(opts); return; } #line 3190 "src/ast/lex_conf.cc" yy682: yych = (unsigned char)*++cur; if (yych == 'n') goto yy692; goto yy4; yy683: yych = (unsigned char)*++cur; if (yych == 'd') goto yy693; goto yy4; yy684: yych = (unsigned char)*++cur; if (yych == 'n') goto yy695; goto yy4; yy685: yych = (unsigned char)*++cur; if (yych == 'c') goto yy696; goto yy220; yy686: yych = (unsigned char)*++cur; if (yych == 'd') goto yy697; goto yy4; yy687: yych = (unsigned char)*++cur; if (yych == 'e') goto yy699; goto yy220; yy688: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 49 "../src/ast/lex_conf.re" { opts.set_bCaseInsensitive(lex_conf_bool()); return; } #line 3222 "src/ast/lex_conf.cc" yy690: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 64 "../src/ast/lex_conf.re" { lex_conf_dfa_minimization(opts); return; } #line 3230 "src/ast/lex_conf.cc" yy692: yych = (unsigned char)*++cur; if (yych == 'a') goto yy701; goto yy4; yy693: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 81 "../src/ast/lex_conf.re" { opts.set_state_get_naked (lex_conf_bool()); return; } #line 3242 "src/ast/lex_conf.cc" yy695: yych = (unsigned char)*++cur; if (yych == 'a') goto yy702; goto yy4; yy696: yych = (unsigned char)*++cur; if (yych == 'o') goto yy703; goto yy220; yy697: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 83 "../src/ast/lex_conf.re" { opts.set_state_set_naked (lex_conf_bool()); return; } #line 3258 "src/ast/lex_conf.cc" yy699: ++cur; #line 84 "../src/ast/lex_conf.re" { opts.set_state_set_arg (lex_conf_string ()); return; } #line 3263 "src/ast/lex_conf.cc" yy701: yych = (unsigned char)*++cur; if (yych == 'k') goto yy704; goto yy4; yy702: yych = (unsigned char)*++cur; if (yych == 'k') goto yy705; goto yy4; yy703: yych = (unsigned char)*++cur; if (yych == 'n') goto yy706; goto yy220; yy704: yych = (unsigned char)*++cur; if (yych == 'e') goto yy707; goto yy4; yy705: yych = (unsigned char)*++cur; if (yych == 'e') goto yy708; goto yy4; yy706: yych = (unsigned char)*++cur; if (yych == 'd') goto yy709; goto yy220; yy707: yych = (unsigned char)*++cur; if (yych == 'd') goto yy711; goto yy4; yy708: yych = (unsigned char)*++cur; if (yych == 'd') goto yy713; goto yy4; yy709: ++cur; #line 70 "../src/ast/lex_conf.re" { opts.set_cond_set_arg (lex_conf_string ()); return; } #line 3300 "src/ast/lex_conf.cc" yy711: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 68 "../src/ast/lex_conf.re" { opts.set_cond_get_naked (lex_conf_bool()); return; } #line 3308 "src/ast/lex_conf.cc" yy713: yych = (unsigned char)*++cur; if (yybm[0+yych] & 32) { goto yy3; } #line 71 "../src/ast/lex_conf.re" { opts.set_cond_set_naked (lex_conf_bool()); return; } #line 3316 "src/ast/lex_conf.cc" } #line 165 "../src/ast/lex_conf.re" } void Scanner::lex_conf_encoding_policy(Opt &opts) { lex_conf_assign (); #line 3326 "src/ast/lex_conf.cc" { unsigned char yych; if ((lim - cur) < 10) fill(10); yych = (unsigned char)*cur; if (yych <= 'h') { if (yych == 'f') goto yy719; } else { if (yych <= 'i') goto yy720; if (yych == 's') goto yy721; } ++cur; yy718: #line 172 "../src/ast/lex_conf.re" { fatal_lc(get_cline(), get_column(), "bad configuration value (expected: 'ignore', 'substitute', 'fail')"); } #line 3342 "src/ast/lex_conf.cc" yy719: yych = (unsigned char)*(mar = ++cur); if (yych == 'a') goto yy722; goto yy718; yy720: yych = (unsigned char)*(mar = ++cur); if (yych == 'g') goto yy724; goto yy718; yy721: yych = (unsigned char)*(mar = ++cur); if (yych == 'u') goto yy725; goto yy718; yy722: yych = (unsigned char)*++cur; if (yych == 'i') goto yy726; yy723: cur = mar; goto yy718; yy724: yych = (unsigned char)*++cur; if (yych == 'n') goto yy727; goto yy723; yy725: yych = (unsigned char)*++cur; if (yych == 'b') goto yy728; goto yy723; yy726: yych = (unsigned char)*++cur; if (yych == 'l') goto yy729; goto yy723; yy727: yych = (unsigned char)*++cur; if (yych == 'o') goto yy731; goto yy723; yy728: yych = (unsigned char)*++cur; if (yych == 's') goto yy732; goto yy723; yy729: ++cur; #line 176 "../src/ast/lex_conf.re" { opts.set_encoding_policy(Enc::POLICY_FAIL); goto end; } #line 3385 "src/ast/lex_conf.cc" yy731: yych = (unsigned char)*++cur; if (yych == 'r') goto yy733; goto yy723; yy732: yych = (unsigned char)*++cur; if (yych == 't') goto yy734; goto yy723; yy733: yych = (unsigned char)*++cur; if (yych == 'e') goto yy735; goto yy723; yy734: yych = (unsigned char)*++cur; if (yych == 'i') goto yy737; goto yy723; yy735: ++cur; #line 174 "../src/ast/lex_conf.re" { opts.set_encoding_policy(Enc::POLICY_IGNORE); goto end; } #line 3406 "src/ast/lex_conf.cc" yy737: yych = (unsigned char)*++cur; if (yych != 't') goto yy723; yych = (unsigned char)*++cur; if (yych != 'u') goto yy723; yych = (unsigned char)*++cur; if (yych != 't') goto yy723; yych = (unsigned char)*++cur; if (yych != 'e') goto yy723; ++cur; #line 175 "../src/ast/lex_conf.re" { opts.set_encoding_policy(Enc::POLICY_SUBSTITUTE); goto end; } #line 3419 "src/ast/lex_conf.cc" } #line 177 "../src/ast/lex_conf.re" end: lex_conf_semicolon(); } void Scanner::lex_conf_input(Opt &opts) { lex_conf_assign (); #line 3431 "src/ast/lex_conf.cc" { unsigned char yych; if ((lim - cur) < 7) fill(7); yych = (unsigned char)*cur; if (yych <= 'b') goto yy745; if (yych <= 'c') goto yy747; if (yych <= 'd') goto yy748; yy745: ++cur; yy746: #line 186 "../src/ast/lex_conf.re" { fatal_lc(get_cline(), get_column(), "bad configuration value (expected: 'default', 'custom')"); } #line 3445 "src/ast/lex_conf.cc" yy747: yych = (unsigned char)*(mar = ++cur); if (yych == 'u') goto yy749; goto yy746; yy748: yych = (unsigned char)*(mar = ++cur); if (yych == 'e') goto yy751; goto yy746; yy749: yych = (unsigned char)*++cur; if (yych == 's') goto yy752; yy750: cur = mar; goto yy746; yy751: yych = (unsigned char)*++cur; if (yych == 'f') goto yy753; goto yy750; yy752: yych = (unsigned char)*++cur; if (yych == 't') goto yy754; goto yy750; yy753: yych = (unsigned char)*++cur; if (yych == 'a') goto yy755; goto yy750; yy754: yych = (unsigned char)*++cur; if (yych == 'o') goto yy756; goto yy750; yy755: yych = (unsigned char)*++cur; if (yych == 'u') goto yy757; goto yy750; yy756: yych = (unsigned char)*++cur; if (yych == 'm') goto yy758; goto yy750; yy757: yych = (unsigned char)*++cur; if (yych == 'l') goto yy760; goto yy750; yy758: ++cur; #line 189 "../src/ast/lex_conf.re" { opts.set_input_api(INPUT_CUSTOM); goto end; } #line 3492 "src/ast/lex_conf.cc" yy760: yych = (unsigned char)*++cur; if (yych != 't') goto yy750; ++cur; #line 188 "../src/ast/lex_conf.re" { opts.set_input_api(INPUT_DEFAULT); goto end; } #line 3499 "src/ast/lex_conf.cc" } #line 190 "../src/ast/lex_conf.re" end: lex_conf_semicolon(); } void Scanner::lex_conf_empty_class(Opt &opts) { lex_conf_assign (); #line 3511 "src/ast/lex_conf.cc" { unsigned char yych; if ((lim - cur) < 11) fill(11); yych = (unsigned char)*cur; if (yych == 'e') goto yy767; if (yych == 'm') goto yy768; ++cur; yy766: #line 199 "../src/ast/lex_conf.re" { fatal_lc(get_cline(), get_column(), "bad configuration value (expected: 'match-empty', 'match-none', 'error')"); } #line 3523 "src/ast/lex_conf.cc" yy767: yych = (unsigned char)*(mar = ++cur); if (yych == 'r') goto yy769; goto yy766; yy768: yych = (unsigned char)*(mar = ++cur); if (yych == 'a') goto yy771; goto yy766; yy769: yych = (unsigned char)*++cur; if (yych == 'r') goto yy772; yy770: cur = mar; goto yy766; yy771: yych = (unsigned char)*++cur; if (yych == 't') goto yy773; goto yy770; yy772: yych = (unsigned char)*++cur; if (yych == 'o') goto yy774; goto yy770; yy773: yych = (unsigned char)*++cur; if (yych == 'c') goto yy775; goto yy770; yy774: yych = (unsigned char)*++cur; if (yych == 'r') goto yy776; goto yy770; yy775: yych = (unsigned char)*++cur; if (yych == 'h') goto yy778; goto yy770; yy776: ++cur; #line 203 "../src/ast/lex_conf.re" { opts.set_empty_class_policy(EMPTY_CLASS_ERROR); goto end; } #line 3562 "src/ast/lex_conf.cc" yy778: yych = (unsigned char)*++cur; if (yych != '-') goto yy770; yych = (unsigned char)*++cur; if (yych == 'e') goto yy780; if (yych == 'n') goto yy781; goto yy770; yy780: yych = (unsigned char)*++cur; if (yych == 'm') goto yy782; goto yy770; yy781: yych = (unsigned char)*++cur; if (yych == 'o') goto yy783; goto yy770; yy782: yych = (unsigned char)*++cur; if (yych == 'p') goto yy784; goto yy770; yy783: yych = (unsigned char)*++cur; if (yych == 'n') goto yy785; goto yy770; yy784: yych = (unsigned char)*++cur; if (yych == 't') goto yy786; goto yy770; yy785: yych = (unsigned char)*++cur; if (yych == 'e') goto yy787; goto yy770; yy786: yych = (unsigned char)*++cur; if (yych == 'y') goto yy789; goto yy770; yy787: ++cur; #line 202 "../src/ast/lex_conf.re" { opts.set_empty_class_policy(EMPTY_CLASS_MATCH_NONE); goto end; } #line 3602 "src/ast/lex_conf.cc" yy789: ++cur; #line 201 "../src/ast/lex_conf.re" { opts.set_empty_class_policy(EMPTY_CLASS_MATCH_EMPTY); goto end; } #line 3607 "src/ast/lex_conf.cc" } #line 204 "../src/ast/lex_conf.re" end: lex_conf_semicolon(); } void Scanner::lex_conf_dfa_minimization(Opt &opts) { lex_conf_assign (); #line 3619 "src/ast/lex_conf.cc" { unsigned char yych; if ((lim - cur) < 5) fill(5); yych = (unsigned char)*cur; if (yych == 'm') goto yy795; if (yych == 't') goto yy796; ++cur; yy794: #line 213 "../src/ast/lex_conf.re" { fatal_lc(get_cline(), get_column(), "bad configuration value (expected: 'table', 'moore')"); } #line 3631 "src/ast/lex_conf.cc" yy795: yych = (unsigned char)*(mar = ++cur); if (yych == 'o') goto yy797; goto yy794; yy796: yych = (unsigned char)*(mar = ++cur); if (yych == 'a') goto yy799; goto yy794; yy797: yych = (unsigned char)*++cur; if (yych == 'o') goto yy800; yy798: cur = mar; goto yy794; yy799: yych = (unsigned char)*++cur; if (yych == 'b') goto yy801; goto yy798; yy800: yych = (unsigned char)*++cur; if (yych == 'r') goto yy802; goto yy798; yy801: yych = (unsigned char)*++cur; if (yych == 'l') goto yy803; goto yy798; yy802: yych = (unsigned char)*++cur; if (yych == 'e') goto yy804; goto yy798; yy803: yych = (unsigned char)*++cur; if (yych == 'e') goto yy806; goto yy798; yy804: ++cur; #line 216 "../src/ast/lex_conf.re" { opts.set_dfa_minimization(DFA_MINIMIZATION_MOORE); goto end; } #line 3670 "src/ast/lex_conf.cc" yy806: ++cur; #line 215 "../src/ast/lex_conf.re" { opts.set_dfa_minimization(DFA_MINIMIZATION_TABLE); goto end; } #line 3675 "src/ast/lex_conf.cc" } #line 217 "../src/ast/lex_conf.re" end: lex_conf_semicolon(); } void Scanner::lex_conf_enc(Enc::type_t enc, Opt &opts) { if (lex_conf_bool()) { opts.set_encoding(enc); } else { opts.unset_encoding(enc); } } void Scanner::lex_conf_assign () { #line 3695 "src/ast/lex_conf.cc" { unsigned char yych; static const unsigned char yybm[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; if ((lim - cur) < 2) fill(2); yych = (unsigned char)*cur; if (yych <= 0x1F) { if (yych == '\t') goto yy812; } else { if (yych <= ' ') goto yy812; if (yych == '=') goto yy813; } ++cur; yy811: #line 234 "../src/ast/lex_conf.re" { fatal_lc(get_cline(), get_column(), "missing '=' in configuration"); } #line 3744 "src/ast/lex_conf.cc" yy812: yych = (unsigned char)*(mar = ++cur); if (yych <= 0x1F) { if (yych == '\t') goto yy816; goto yy811; } else { if (yych <= ' ') goto yy816; if (yych != '=') goto yy811; } yy813: ++cur; if (lim <= cur) fill(1); yych = (unsigned char)*cur; if (yybm[0+yych] & 128) { goto yy813; } #line 235 "../src/ast/lex_conf.re" { return; } #line 3763 "src/ast/lex_conf.cc" yy816: ++cur; if (lim <= cur) fill(1); yych = (unsigned char)*cur; if (yych <= 0x1F) { if (yych == '\t') goto yy816; } else { if (yych <= ' ') goto yy816; if (yych == '=') goto yy813; } cur = mar; goto yy811; } #line 236 "../src/ast/lex_conf.re" } void Scanner::lex_conf_semicolon () { #line 3784 "src/ast/lex_conf.cc" { unsigned char yych; static const unsigned char yybm[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; if ((lim - cur) < 2) fill(2); yych = (unsigned char)*cur; if (yych <= 0x1F) { if (yych == '\t') goto yy823; } else { if (yych <= ' ') goto yy823; if (yych == ';') goto yy824; } ++cur; yy822: #line 242 "../src/ast/lex_conf.re" { fatal_lc(get_cline(), get_column(), "missing ending ';' in configuration"); } #line 3833 "src/ast/lex_conf.cc" yy823: yych = (unsigned char)*(mar = ++cur); if (yybm[0+yych] & 128) { goto yy826; } if (yych != ';') goto yy822; yy824: ++cur; #line 243 "../src/ast/lex_conf.re" { return; } #line 3844 "src/ast/lex_conf.cc" yy826: ++cur; if (lim <= cur) fill(1); yych = (unsigned char)*cur; if (yybm[0+yych] & 128) { goto yy826; } if (yych == ';') goto yy824; cur = mar; goto yy822; } #line 244 "../src/ast/lex_conf.re" } bool Scanner::lex_conf_bool() { return lex_conf_number() != 0; } int32_t Scanner::lex_conf_number () { lex_conf_assign (); tok = cur; #line 3870 "src/ast/lex_conf.cc" { unsigned char yych; static const unsigned char yybm[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; if ((lim - cur) < 2) fill(2); yych = (unsigned char)*cur; if (yych <= '/') { if (yych == '-') goto yy832; } else { if (yych <= '0') goto yy833; if (yych <= '9') goto yy835; } yy831: yy832: yych = (unsigned char)*++cur; if (yych <= '0') goto yy831; if (yych <= '9') goto yy835; goto yy831; yy833: ++cur; yy834: #line 257 "../src/ast/lex_conf.re" { int32_t n = 0; if (!s_to_i32_unsafe (tok, cur, n)) { fatal_lc(get_cline(), get_column(), "configuration value overflow"); } lex_conf_semicolon (); return n; } #line 3933 "src/ast/lex_conf.cc" yy835: ++cur; if (lim <= cur) fill(1); yych = (unsigned char)*cur; if (yybm[0+yych] & 128) { goto yy835; } goto yy834; } #line 265 "../src/ast/lex_conf.re" } std::string Scanner::lex_conf_string () { lex_conf_assign (); std::string s; tok = cur; #line 3953 "src/ast/lex_conf.cc" { unsigned char yych; static const unsigned char yybm[] = { 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; if (lim <= cur) fill(1); yych = (unsigned char)*cur; if (yych <= '!') { if (yych <= '\n') { if (yych <= 0x08) goto yy840; } else { if (yych != ' ') goto yy840; } } else { if (yych <= '\'') { if (yych <= '"') goto yy843; if (yych <= '&') goto yy840; goto yy843; } else { if (yych != ';') goto yy840; } } #line 293 "../src/ast/lex_conf.re" { goto end; } #line 4009 "src/ast/lex_conf.cc" yy840: ++cur; if (lim <= cur) fill(1); yych = (unsigned char)*cur; if (yybm[0+yych] & 128) { goto yy840; } #line 289 "../src/ast/lex_conf.re" { s = std::string(tok, tok_len()); goto end; } #line 4022 "src/ast/lex_conf.cc" yy843: ++cur; #line 274 "../src/ast/lex_conf.re" { const char quote = tok[0]; for (bool end;;) { const uint32_t c = lex_str_chr(quote, end); if (end) { goto end; } if (c > 0xFF) { fatal_lc(get_cline(), get_column(), "multibyte character in configuration string: 0x%X", c); } else { s += static_cast(c); } } } #line 4041 "src/ast/lex_conf.cc" } #line 294 "../src/ast/lex_conf.re" end: lex_conf_semicolon (); return s; } } // end namespace re2c re2c-1.0.1/bootstrap/src/ast/parser.cc0000644000175000017500000014606613140054261014474 00000000000000/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison implementation for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. There are some unavoidable exceptions within include files to define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ #define YYBISON_VERSION "3.0.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 0 /* Push parsers. */ #define YYPUSH 0 /* Pull parsers. */ #define YYPULL 1 /* Copy the first part of user declarations. */ #include "src/ast/parser.h" #define YYMALLOC malloc #define YYFREE free using namespace re2c; extern "C" { int yylex(context_t &context); void yyerror(context_t &context, const char*); } // extern "C" /* Bison version 1.875 emits a definition that is not working * with several g++ version. Hence we disable it here. */ #if defined(__GNUC__) #define __attribute__(x) #endif static spec_t &find(specs_t &specs, const std::string &name) { for (specs_t::iterator i = specs.begin(); i != specs.end(); ++i) { if (i->name == name) return *i; } specs.push_back(spec_t(name)); return specs.back(); } # ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus # define YY_NULLPTR nullptr # else # define YY_NULLPTR 0 # endif # endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else # define YYERROR_VERBOSE 0 #endif /* In a future release of Bison, this section will be replaced by #include "y.tab.h". */ #ifndef YY_YY_BOOTSTRAP_SRC_AST_Y_TAB_H_INCLUDED # define YY_YY_BOOTSTRAP_SRC_AST_Y_TAB_H_INCLUDED /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif #if YYDEBUG extern int yydebug; #endif /* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { TOKEN_CLOSESIZE = 258, TOKEN_CODE = 259, TOKEN_CONF = 260, TOKEN_ID = 261, TOKEN_FID = 262, TOKEN_FID_END = 263, TOKEN_LINE_INFO = 264, TOKEN_REGEXP = 265 }; #endif /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { const re2c::AST * regexp; re2c::Code * code; char op; re2c::ASTBounds bounds; std::string * str; re2c::CondList * clist; }; typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif extern YYSTYPE yylval; int yyparse (re2c::context_t &context); #endif /* !YY_YY_BOOTSTRAP_SRC_AST_Y_TAB_H_INCLUDED */ /* Copy the second part of user declarations. */ #ifdef short # undef short #endif #ifdef YYTYPE_UINT8 typedef YYTYPE_UINT8 yytype_uint8; #else typedef unsigned char yytype_uint8; #endif #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; #else typedef signed char yytype_int8; #endif #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else typedef unsigned short int yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else typedef short int yytype_int16; #endif #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t # elif ! defined YYSIZE_T # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else # define YYSIZE_T unsigned int # endif #endif #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ # define YY_(Msgid) dgettext ("bison-runtime", Msgid) # endif # endif # ifndef YY_ # define YY_(Msgid) Msgid # endif #endif #ifndef YY_ATTRIBUTE # if (defined __GNUC__ \ && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C # define YY_ATTRIBUTE(Spec) __attribute__(Spec) # else # define YY_ATTRIBUTE(Spec) /* empty */ # endif #endif #ifndef YY_ATTRIBUTE_PURE # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) #endif #ifndef YY_ATTRIBUTE_UNUSED # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) #endif #if !defined _Noreturn \ && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) # if defined _MSC_VER && 1200 <= _MSC_VER # define _Noreturn __declspec (noreturn) # else # define _Noreturn YY_ATTRIBUTE ((__noreturn__)) # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(E) ((void) (E)) #else # define YYUSE(E) /* empty */ #endif #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define YY_INITIAL_VALUE(Value) Value #endif #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define YY_IGNORE_MAYBE_UNINITIALIZED_END #endif #ifndef YY_INITIAL_VALUE # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ # ifdef YYSTACK_USE_ALLOCA # if YYSTACK_USE_ALLOCA # ifdef __GNUC__ # define YYSTACK_ALLOC __builtin_alloca # elif defined __BUILTIN_VA_ARG_INCR # include /* INFRINGES ON USER NAME SPACE */ # elif defined _AIX # define YYSTACK_ALLOC __alloca # elif defined _MSC_VER # include /* INFRINGES ON USER NAME SPACE */ # define alloca _alloca # else # define YYSTACK_ALLOC alloca # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS # include /* INFRINGES ON USER NAME SPACE */ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # endif # endif # endif # ifdef YYSTACK_ALLOC /* Pacify GCC's 'empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely invoke alloca (N) if N exceeds 4096. Use a slightly smaller number to allow for a few compiler-allocated temporary stack slots. */ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else # define YYSTACK_ALLOC YYMALLOC # define YYSTACK_FREE YYFREE # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc # if ! defined malloc && ! defined EXIT_SUCCESS void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free # if ! defined free && ! defined EXIT_SUCCESS void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { yytype_int16 yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (0) #endif #if defined YYCOPY_NEEDED && YYCOPY_NEEDED /* Copy COUNT objects from SRC to DST. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(Dst, Src, Count) \ __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) # else # define YYCOPY(Dst, Src, Count) \ do \ { \ YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ while (0) # endif # endif #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 70 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 26 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 17 /* YYNRULES -- Number of rules. */ #define YYNRULES 44 /* YYNSTATES -- Number of states. */ #define YYNSTATES 71 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 265 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex, without out-of-bounds checking. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 17, 2, 2, 2, 2, 2, 2, 24, 25, 14, 22, 19, 2, 2, 11, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 18, 13, 15, 12, 16, 23, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 21, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 20, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint8 yyrline[] = { 0, 67, 67, 69, 70, 71, 72, 76, 83, 89, 92, 96, 96, 99, 103, 107, 114, 121, 128, 134, 136, 142, 149, 150, 156, 162, 169, 171, 177, 181, 188, 192, 199, 203, 210, 211, 217, 222, 223, 227, 228, 229, 233, 234, 245 }; #endif #if YYDEBUG || YYERROR_VERBOSE || 0 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { "$end", "error", "$undefined", "TOKEN_CLOSESIZE", "TOKEN_CODE", "TOKEN_CONF", "TOKEN_ID", "TOKEN_FID", "TOKEN_FID_END", "TOKEN_LINE_INFO", "TOKEN_REGEXP", "'/'", "'='", "';'", "'*'", "'<'", "'>'", "'!'", "':'", "','", "'|'", "'\\\\'", "'+'", "'?'", "'('", "')'", "$accept", "spec", "def", "name", "enddef", "rule", "ccode", "clist", "conds", "trailexpr", "expr", "diff", "term", "factor", "closes", "close", "primary", YY_NULLPTR }; #endif # ifdef YYPRINT /* YYTOKNUM[NUM] -- (External) token number corresponding to the (internal) symbol number NUM (which must be that of a token). */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 47, 61, 59, 42, 60, 62, 33, 58, 44, 124, 92, 43, 63, 40, 41 }; # endif #define YYPACT_NINF -45 #define yypact_value_is_default(Yystate) \ (!!((Yystate) == (-45))) #define YYTABLE_NINF -1 #define yytable_value_is_error(Yytable_value) \ 0 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int8 yypact[] = { -45, 0, -45, -45, 18, -45, -45, -45, 7, 22, 19, -45, 19, -45, 41, 30, 10, -45, 19, -1, -45, -45, -45, -45, 15, 28, 35, 34, -45, 27, 24, -45, 19, 19, 19, -45, -45, -45, -45, -45, 26, -45, -45, 38, 43, -45, 40, 2, 51, -45, -45, -45, -45, -45, 39, 10, -45, -45, 52, 44, 42, 15, 15, -45, 57, 56, -45, -45, -45, -45, -45 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. Performed when YYTABLE does not specify something else to do. Zero means the default is an error. */ static const yytype_uint8 yydefact[] = { 2, 0, 1, 3, 43, 10, 6, 42, 0, 0, 0, 4, 0, 5, 0, 26, 28, 30, 32, 34, 9, 14, 24, 23, 0, 0, 0, 22, 43, 0, 0, 13, 0, 0, 0, 33, 36, 39, 40, 41, 35, 37, 19, 0, 0, 18, 0, 0, 0, 44, 12, 8, 11, 7, 27, 29, 31, 38, 0, 0, 0, 0, 0, 25, 0, 0, 17, 16, 15, 20, 21 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int8 yypgoto[] = { -45, -45, -45, -45, -45, -45, -44, 45, -45, 16, -9, 31, -14, -45, -45, 25, -45 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int8 yydefgoto[] = { -1, 1, 11, 12, 53, 13, 45, 26, 27, 14, 15, 16, 17, 18, 40, 41, 19 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule whose number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint8 yytable[] = { 2, 29, 36, 30, 35, 3, 4, 5, 28, 6, 7, 21, 7, 37, 8, 9, 61, 67, 68, 42, 56, 38, 39, 54, 10, 28, 10, 43, 22, 7, 20, 34, 50, 44, 22, 51, 23, 52, 24, 25, 37, 32, 23, 10, 33, 31, 66, 33, 38, 39, 33, 47, 49, 48, 58, 59, 60, 63, 64, 33, 65, 69, 70, 62, 55, 57, 0, 0, 0, 0, 46 }; static const yytype_int8 yycheck[] = { 0, 10, 3, 12, 18, 5, 6, 7, 6, 9, 10, 4, 10, 14, 14, 15, 14, 61, 62, 4, 34, 22, 23, 32, 24, 6, 24, 12, 6, 10, 12, 21, 8, 18, 6, 11, 14, 13, 16, 17, 14, 11, 14, 24, 20, 4, 4, 20, 22, 23, 20, 16, 25, 19, 16, 12, 16, 6, 6, 20, 16, 4, 6, 47, 33, 40, -1, -1, -1, -1, 25 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { 0, 27, 0, 5, 6, 7, 9, 10, 14, 15, 24, 28, 29, 31, 35, 36, 37, 38, 39, 42, 12, 4, 6, 14, 16, 17, 33, 34, 6, 36, 36, 4, 11, 20, 21, 38, 3, 14, 22, 23, 40, 41, 4, 12, 18, 32, 33, 16, 19, 25, 8, 11, 13, 30, 36, 37, 38, 41, 16, 12, 16, 14, 35, 6, 6, 16, 4, 32, 32, 4, 6 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { 0, 26, 27, 27, 27, 27, 27, 28, 28, 29, 29, 30, 30, 31, 31, 31, 31, 31, 31, 32, 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 39, 40, 40, 41, 41, 41, 42, 42, 42 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 0, 2, 2, 2, 2, 3, 3, 2, 1, 1, 1, 2, 2, 5, 5, 5, 3, 1, 4, 4, 1, 1, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 1, 2, 2, 1, 2, 1, 1, 1, 1, 1, 3 }; #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYEMPTY (-2) #define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY) \ { \ yychar = (Token); \ yylval = (Value); \ YYPOPSTACK (yylen); \ yystate = *yyssp; \ goto yybackup; \ } \ else \ { \ yyerror (context, YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (0) /* Error token number */ #define YYTERROR 1 #define YYERRCODE 256 /* Enable debugging if requested. */ #if YYDEBUG # ifndef YYFPRINTF # include /* INFRINGES ON USER NAME SPACE */ # define YYFPRINTF fprintf # endif # define YYDPRINTF(Args) \ do { \ if (yydebug) \ YYFPRINTF Args; \ } while (0) /* This macro is provided for backward compatibility. */ #ifndef YY_LOCATION_PRINT # define YY_LOCATION_PRINT(File, Loc) ((void) 0) #endif # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ Type, Value, context); \ YYFPRINTF (stderr, "\n"); \ } \ } while (0) /*----------------------------------------. | Print this symbol's value on YYOUTPUT. | `----------------------------------------*/ static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, re2c::context_t &context) { FILE *yyo = yyoutput; YYUSE (yyo); YYUSE (context); if (!yyvaluep) return; # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # endif YYUSE (yytype); } /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, re2c::context_t &context) { YYFPRINTF (yyoutput, "%s %s (", yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); yy_symbol_value_print (yyoutput, yytype, yyvaluep, context); YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | | TOP (included). | `------------------------------------------------------------------*/ static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) { int yybot = *yybottom; YYFPRINTF (stderr, " %d", yybot); } YYFPRINTF (stderr, "\n"); } # define YY_STACK_PRINT(Bottom, Top) \ do { \ if (yydebug) \ yy_stack_print ((Bottom), (Top)); \ } while (0) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ static void yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, re2c::context_t &context) { unsigned long int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yystos[yyssp[yyi + 1 - yynrhs]], &(yyvsp[(yyi + 1) - (yynrhs)]) , context); YYFPRINTF (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyssp, yyvsp, Rule, context); \ } while (0) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ # define YYDPRINTF(Args) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only if the built-in stack extension method is used). Do not make this value too large; the results are undefined if YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) evaluated with infinite-precision integer arithmetic. */ #ifndef YYMAXDEPTH # define YYMAXDEPTH 10000 #endif #if YYERROR_VERBOSE # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H # define yystrlen strlen # else /* Return the length of YYSTR. */ static YYSIZE_T yystrlen (const char *yystr) { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; } # endif # endif # ifndef yystpcpy # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE # define yystpcpy stpcpy # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ static char * yystpcpy (char *yydest, const char *yysrc) { char *yyd = yydest; const char *yys = yysrc; while ((*yyd++ = *yys++) != '\0') continue; return yyd - 1; } # endif # endif # ifndef yytnamerr /* Copy to YYRES the contents of YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is that double-quoting is unnecessary unless the string contains an apostrophe, a comma, or backslash (other than backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ static YYSIZE_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { YYSIZE_T yyn = 0; char const *yyp = yystr; for (;;) switch (*++yyp) { case '\'': case ',': goto do_not_strip_quotes; case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; /* Fall through. */ default: if (yyres) yyres[yyn] = *yyp; yyn++; break; case '"': if (yyres) yyres[yyn] = '\0'; return yyn; } do_not_strip_quotes: ; } if (! yyres) return yystrlen (yystr); return yystpcpy (yyres, yystr) - yyres; } # endif /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message about the unexpected token YYTOKEN for the state stack whose top is YYSSP. Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is not large enough to hold the message. In that case, also set *YYMSG_ALLOC to the required number of bytes. Return 2 if the required number of bytes is too large to store. */ static int yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yytype_int16 *yyssp, int yytoken) { YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ const char *yyformat = YY_NULLPTR; /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; /* Number of reported tokens (one for the "unexpected", one per "expected"). */ int yycount = 0; /* There are many possibilities here to consider: - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action is an error action. In that case, don't check for expected tokens because there are none. - The only way there can be no lookahead present (in yychar) is if this state is a consistent state with a default action. Thus, detecting the absence of a lookahead is sufficient to determine that there is no unexpected or expected token to report. In that case, just report a simple "syntax error". - Don't assume there isn't a lookahead just because this state is a consistent state with a default action. There might have been a previous inconsistent state, consistent state with a non-default action, or user semantic action that manipulated yychar. - Of course, the expected token list depends on states to have correct lookahead information, and it depends on the parser not to perform extra reductions after fetching a lookahead from the scanner and before detecting a syntax error. Thus, state merging (from LALR or IELR) and default reductions corrupt the expected token list. However, the list is correct for canonical LR with one exception: it will still contain any token that will not be accepted due to an error action in a later state. */ if (yytoken != YYEMPTY) { int yyn = yypact[*yyssp]; yyarg[yycount++] = yytname[yytoken]; if (!yypact_value_is_default (yyn)) { /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. In other words, skip the first -YYN actions for this state because they are default actions. */ int yyxbegin = yyn < 0 ? -yyn : 0; /* Stay within bounds of both yycheck and yytname. */ int yychecklim = YYLAST - yyn + 1; int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; int yyx; for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR && !yytable_value_is_error (yytable[yyx + yyn])) { if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) { yycount = 1; yysize = yysize0; break; } yyarg[yycount++] = yytname[yyx]; { YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; yysize = yysize1; } } } } switch (yycount) { # define YYCASE_(N, S) \ case N: \ yyformat = S; \ break YYCASE_(0, YY_("syntax error")); YYCASE_(1, YY_("syntax error, unexpected %s")); YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); # undef YYCASE_ } { YYSIZE_T yysize1 = yysize + yystrlen (yyformat); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; yysize = yysize1; } if (*yymsg_alloc < yysize) { *yymsg_alloc = 2 * yysize; if (! (yysize <= *yymsg_alloc && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; return 1; } /* Avoid sprintf, as that infringes on the user's name space. Don't have undefined behavior even if the translation produced a string with the wrong number of "%s"s. */ { char *yyp = *yymsg; int yyi = 0; while ((*yyp = *yyformat) != '\0') if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) { yyp += yytnamerr (yyp, yyarg[yyi++]); yyformat += 2; } else { yyp++; yyformat++; } } return 0; } #endif /* YYERROR_VERBOSE */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, re2c::context_t &context) { YYUSE (yyvaluep); YYUSE (context); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YYUSE (yytype); YY_IGNORE_MAYBE_UNINITIALIZED_END } /* The lookahead symbol. */ int yychar; /* The semantic value of the lookahead symbol. */ YYSTYPE yylval; /* Number of syntax errors so far. */ int yynerrs; /*----------. | yyparse. | `----------*/ int yyparse (re2c::context_t &context) { int yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* The stacks and their tools: 'yyss': related to states. 'yyvs': related to semantic values. Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* The state stack. */ yytype_int16 yyssa[YYINITDEPTH]; yytype_int16 *yyss; yytype_int16 *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs; YYSTYPE *yyvsp; YYSIZE_T yystacksize; int yyn; int yyresult; /* Lookahead token as an internal (translated) token number. */ int yytoken = 0; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; #if YYERROR_VERBOSE /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; yyssp = yyss = yyssa; yyvsp = yyvs = yyvsa; yystacksize = YYINITDEPTH; YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ goto yysetstate; /*------------------------------------------------------------. | yynewstate -- Push a new state, which is found in yystate. | `------------------------------------------------------------*/ yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; yysetstate: *yyssp = yystate; if (yyss + yystacksize - 1 <= yyssp) { /* Get the current used size of the three stacks, in elements. */ YYSIZE_T yysize = yyssp - yyss + 1; #ifdef yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ YYSTYPE *yyvs1 = yyvs; yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE goto yyexhaustedlab; # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; { yytype_int16 *yyss1 = yyss; union yyalloc *yyptr = (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); if (yystate == YYFINAL) YYACCEPT; goto yybackup; /*-----------. | yybackup. | `-----------*/ yybackup: /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; if (yypact_value_is_default (yyn)) goto yydefault; /* Not known => get a lookahead token if don't already have one. */ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); yychar = yylex (context); } if (yychar <= YYEOF) { yychar = yytoken = YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } else { yytoken = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to detect an error, take that action. */ yyn += yytoken; if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; yyn = yytable[yyn]; if (yyn <= 0) { if (yytable_value_is_error (yyn)) goto yyerrlab; yyn = -yyn; goto yyreduce; } /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); /* Discard the shifted token. */ yychar = YYEMPTY; yystate = yyn; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END goto yynewstate; /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; goto yyreduce; /*-----------------------------. | yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: '$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison users should not rely upon it. Assigning to YYVAL unconditionally makes the parser a bit smaller, and it avoids a GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; YY_REDUCE_PRINT (yyn); switch (yyn) { case 3: { context.input.lex_conf(context.opts); } break; case 7: { if (!context.symtab.insert(std::make_pair(*(yyvsp[-2].str), (yyvsp[-1].regexp))).second) { fatal_l(context.input.get_cline(), "sym already defined"); } delete (yyvsp[-2].str); } break; case 8: { fatal_l(context.input.get_cline(), "trailing contexts are not allowed in named definitions"); } break; case 9: { (yyval.str) = (yyvsp[-1].str); } break; case 10: { (yyval.str) = (yyvsp[0].str); } break; case 13: { find(context.specs, "").rules.push_back(ASTRule((yyvsp[-1].regexp), (yyvsp[0].code))); } break; case 14: { find(context.specs, "").defs.push_back((yyvsp[0].code)); } break; case 15: { for(CondList::const_iterator i = (yyvsp[-3].clist)->begin(); i != (yyvsp[-3].clist)->end(); ++i) { find(context.specs, *i).rules.push_back(ASTRule((yyvsp[-1].regexp), (yyvsp[0].code))); } delete (yyvsp[-3].clist); } break; case 16: { for(CondList::const_iterator i = (yyvsp[-3].clist)->begin(); i != (yyvsp[-3].clist)->end(); ++i) { find(context.specs, *i).defs.push_back((yyvsp[0].code)); } delete (yyvsp[-3].clist); } break; case 17: { for (CondList::const_iterator i = (yyvsp[-2].clist)->begin(); i != (yyvsp[-2].clist)->end(); ++i) { find(context.specs, *i).setup.push_back((yyvsp[0].code)); } delete (yyvsp[-2].clist); } break; case 18: { const AST *r = ast_nil(context.input.get_cline(), 0); find(context.specs, "0").rules.push_back(ASTRule(r, (yyvsp[0].code))); } break; case 20: { (yyval.code) = (yyvsp[0].code); (yyval.code)->cond = *(yyvsp[-1].str); delete (yyvsp[-1].str); } break; case 21: { (yyval.code) = new Code(context.input.get_fname(), context.input.get_cline()); (yyval.code)->cond = *(yyvsp[0].str); delete (yyvsp[0].str); } break; case 23: { (yyval.clist) = new CondList; (yyval.clist)->insert("*"); } break; case 24: { (yyval.clist) = new CondList; (yyval.clist)->insert(*(yyvsp[0].str)); delete (yyvsp[0].str); } break; case 25: { (yyvsp[-2].clist)->insert(*(yyvsp[0].str)); delete (yyvsp[0].str); (yyval.clist) = (yyvsp[-2].clist); } break; case 26: { (yyval.regexp) = ast_cap((yyvsp[0].regexp)); } break; case 27: { (yyval.regexp) = ast_cat(ast_cap((yyvsp[-2].regexp)), ast_cat(ast_tag(context.input.get_cline(), 0, NULL, false), (yyvsp[0].regexp))); } break; case 28: { (yyval.regexp) = (yyvsp[0].regexp); } break; case 29: { (yyval.regexp) = ast_alt((yyvsp[-2].regexp), (yyvsp[0].regexp)); } break; case 30: { (yyval.regexp) = (yyvsp[0].regexp); } break; case 31: { (yyval.regexp) = ast_diff((yyvsp[-2].regexp), (yyvsp[0].regexp)); } break; case 32: { (yyval.regexp) = (yyvsp[0].regexp); } break; case 33: { (yyval.regexp) = ast_cat((yyvsp[-1].regexp), (yyvsp[0].regexp)); } break; case 35: { switch((yyvsp[0].op)) { case '*': (yyval.regexp) = ast_iter((yyvsp[-1].regexp), 0, AST::MANY); break; case '+': (yyval.regexp) = ast_iter((yyvsp[-1].regexp), 1, AST::MANY); break; case '?': (yyval.regexp) = ast_iter((yyvsp[-1].regexp), 0, 1); break; } } break; case 36: { (yyval.regexp) = ast_iter((yyvsp[-1].regexp), (yyvsp[0].bounds).min, (yyvsp[0].bounds).max); } break; case 38: { (yyval.op) = ((yyvsp[-1].op) == (yyvsp[0].op)) ? (yyvsp[-1].op) : '*'; } break; case 39: { (yyval.op) = '*'; } break; case 40: { (yyval.op) = '+'; } break; case 41: { (yyval.op) = '?'; } break; case 43: { symtab_t::iterator i = context.symtab.find(*(yyvsp[0].str)); if (i == context.symtab.end()) { fatal_l(context.input.get_cline(), "undefined symbol '%s'", (yyvsp[0].str)->c_str()); } (yyval.regexp) = i->second; if (ast_need_wrap((yyval.regexp))) { (yyval.regexp) = ast_ref((yyval.regexp), *(yyvsp[0].str)); } delete (yyvsp[0].str); } break; case 44: { (yyval.regexp) = ast_cap((yyvsp[-1].regexp)); } break; default: break; } /* User semantic actions sometimes alter yychar, and that requires that yytoken be updated with the new translation. We take the approach of translating immediately before every use of yytoken. One alternative is translating here after every semantic action, but that translation would be missed if the semantic action invokes YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an incorrect destructor might then be invoked immediately. In the case of YYERROR or YYBACKUP, subsequent parser actions might lead to an incorrect destructor call or verbose syntax error message before the lookahead is translated. */ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ yyn = yyr1[yyn]; yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) yystate = yytable[yystate]; else yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; /*--------------------------------------. | yyerrlab -- here on detecting error. | `--------------------------------------*/ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; #if ! YYERROR_VERBOSE yyerror (context, YY_("syntax error")); #else # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ yyssp, yytoken) { char const *yymsgp = YY_("syntax error"); int yysyntax_error_status; yysyntax_error_status = YYSYNTAX_ERROR; if (yysyntax_error_status == 0) yymsgp = yymsg; else if (yysyntax_error_status == 1) { if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); if (!yymsg) { yymsg = yymsgbuf; yymsg_alloc = sizeof yymsgbuf; yysyntax_error_status = 2; } else { yysyntax_error_status = YYSYNTAX_ERROR; yymsgp = yymsg; } } yyerror (context, yymsgp); if (yysyntax_error_status == 2) goto yyexhaustedlab; } # undef YYSYNTAX_ERROR #endif } if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an error, discard it. */ if (yychar <= YYEOF) { /* Return failure if at end of input. */ if (yychar == YYEOF) YYABORT; } else { yydestruct ("Error: discarding", yytoken, &yylval, context); yychar = YYEMPTY; } } /* Else will try to reuse lookahead token after shifting the error token. */ goto yyerrlab1; /*---------------------------------------------------. | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: /* Pacify compilers like GCC when the user code never invokes YYERROR and the label yyerrorlab therefore never appears in user code. */ if (/*CONSTCOND*/ 0) goto yyerrorlab; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); yystate = *yyssp; goto yyerrlab1; /*-------------------------------------------------------------. | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) { yyn += YYTERROR; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) { yyn = yytable[yyn]; if (0 < yyn) break; } } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) YYABORT; yydestruct ("Error: popping", yystos[yystate], yyvsp, context); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END /* Shift the error token. */ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); yystate = yyn; goto yynewstate; /*-------------------------------------. | yyacceptlab -- YYACCEPT comes here. | `-------------------------------------*/ yyacceptlab: yyresult = 0; goto yyreturn; /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ yyabortlab: yyresult = 1; goto yyreturn; #if !defined yyoverflow || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: yyerror (context, YY_("memory exhausted")); yyresult = 2; /* Fall through. */ #endif yyreturn: if (yychar != YYEMPTY) { /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = YYTRANSLATE (yychar); yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval, context); } /* Do not reclaim the symbols of the rule whose action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", yystos[*yyssp], yyvsp, context); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif #if YYERROR_VERBOSE if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif return yyresult; } extern "C" { void yyerror(context_t &context, const char* s) { fatal_l(context.input.get_cline(), "%s", s); } int yylex(context_t &context) { return context.input.scan(&context.opts.glob); } } // extern "C" namespace re2c { void parse(Scanner &input, specs_t &specs, symtab_t &symtab, Opt &opts) { context_t context = {input, specs, symtab, opts}; yyparse(context); } } // namespace re2c re2c-1.0.1/configure0000755000175000017500000057642013143420401011202 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for re2c 1.0.1. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: re2c-general@lists.sourceforge.net about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='re2c' PACKAGE_TARNAME='re2c' PACKAGE_VERSION='1.0.1' PACKAGE_STRING='re2c 1.0.1' PACKAGE_BUGREPORT='re2c-general@lists.sourceforge.net' PACKAGE_URL='' ac_unique_file="src/main.cc" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS CXXFLAGSDEFAULT am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE ac_ct_CXX CXXFLAGS CXX am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC BISON RST2MAN REBUILD_DOCS_FALSE REBUILD_DOCS_TRUE PACKAGE_RELEASE PACKAGE_DATE AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_docs enable_dependency_tracking ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CXX CXXFLAGS CCC' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures re2c 1.0.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/re2c] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of re2c 1.0.1:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-docs regenerate manpage --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CXX C++ compiler command CXXFLAGS C++ compiler flags Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF re2c configure 1.0.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_compute_int LINENO EXPR VAR INCLUDES # -------------------------------------------- # Tries to find the compile-time value of EXPR in a program that includes # INCLUDES, setting VAR accordingly. Returns whether the value could be # computed ac_fn_c_compute_int () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= 0)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_lo=0 ac_mid=0 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=$ac_mid; break else as_fn_arith $ac_mid + 1 && ac_lo=$as_val if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) < 0)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=-1 ac_mid=-1 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_lo=$ac_mid; break else as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else ac_lo= ac_hi= fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=$ac_mid else as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in #(( ?*) eval "$3=\$ac_lo"; ac_retval=0 ;; '') ac_retval=1 ;; esac else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 static long int longval () { return $2; } static unsigned long int ulongval () { return $2; } #include #include int main () { FILE *f = fopen ("conftest.val", "w"); if (! f) return 1; if (($2) < 0) { long int i = longval (); if (i != ($2)) return 1; fprintf (f, "%ld", i); } else { unsigned long int i = ulongval (); if (i != ($2)) return 1; fprintf (f, "%lu", i); } /* Do not output a trailing newline, as this causes \r\n confusion on some platforms. */ return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : echo >>conftest.val; read $3 config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by re2c $as_me 1.0.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am__api_version='1.15' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='re2c' VERSION='1.0.1' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=0;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' ac_config_headers="$ac_config_headers config.h" PACKAGE_DATE=`date +'%d %b %Y'` PACKAGE_RELEASE=${PACKAGE_RELEASE:-1} # --enable-docs # Check whether --enable-docs was given. if test "${enable_docs+set}" = set; then : enableval=$enable_docs; fi if test "x$enable_docs" = "xyes"; then REBUILD_DOCS_TRUE= REBUILD_DOCS_FALSE='#' else REBUILD_DOCS_TRUE='#' REBUILD_DOCS_FALSE= fi if test -z "$REBUILD_DOCS_TRUE"; then : for ac_prog in rst2man rst2man.py do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RST2MAN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RST2MAN"; then ac_cv_prog_RST2MAN="$RST2MAN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RST2MAN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RST2MAN=$ac_cv_prog_RST2MAN if test -n "$RST2MAN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RST2MAN" >&5 $as_echo "$RST2MAN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$RST2MAN" && break done test -n "$RST2MAN" || RST2MAN="no" if test "x$RST2MAN" = "xno"; then : as_fn_error $? "need rst2man or rst2man.py for --enable-docs" "$LINENO" 5 fi fi # checks for programs # Extract the first word of "bison", so it can be a program name with args. set dummy bison; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_BISON+:} false; then : $as_echo_n "(cached) " >&6 else case $BISON in [\\/]* | ?:[\\/]*) ac_cv_path_BISON="$BISON" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_BISON="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_BISON" && ac_cv_path_BISON="no" ;; esac fi BISON=$ac_cv_path_BISON if test -n "$BISON"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BISON" >&5 $as_echo "$BISON" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi # used in skeleton tests ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi # checks for C++ compiler flags # TRY_CXXFLAG (flag [implied-flags]) # Iff C++ compiler recognizes 'flag', append 'flag' and 'implied-flags' to CXXFLAGSDEFAULT # (Second param 'implied-flags' is needed for warning suppressions '-Wno-': # GCC warns about unrecognized suppressions options only in presence of other warnings, # which makes it hard to test for them with autoconf.) { $as_echo "$as_me:${as_lineno-$LINENO}: checking C++ compiler flag -std=c++98" >&5 $as_echo_n "checking C++ compiler flag -std=c++98... " >&6; } CXXFLAGS_BACKUP="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -std=c++98" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : TRY_CXXFLAG_RESULT=yes CXXFLAGSDEFAULT="$CXXFLAGSDEFAULT -std=c++98 " else TRY_CXXFLAG_RESULT=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CXXFLAGS="$CXXFLAGS_BACKUP" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TRY_CXXFLAG_RESULT" >&5 $as_echo "$TRY_CXXFLAG_RESULT" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking C++ compiler flag -W" >&5 $as_echo_n "checking C++ compiler flag -W... " >&6; } CXXFLAGS_BACKUP="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -W" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : TRY_CXXFLAG_RESULT=yes CXXFLAGSDEFAULT="$CXXFLAGSDEFAULT -W " else TRY_CXXFLAG_RESULT=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CXXFLAGS="$CXXFLAGS_BACKUP" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TRY_CXXFLAG_RESULT" >&5 $as_echo "$TRY_CXXFLAG_RESULT" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking C++ compiler flag -Wall" >&5 $as_echo_n "checking C++ compiler flag -Wall... " >&6; } CXXFLAGS_BACKUP="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Wall" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : TRY_CXXFLAG_RESULT=yes CXXFLAGSDEFAULT="$CXXFLAGSDEFAULT -Wall " else TRY_CXXFLAG_RESULT=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CXXFLAGS="$CXXFLAGS_BACKUP" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TRY_CXXFLAG_RESULT" >&5 $as_echo "$TRY_CXXFLAG_RESULT" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking C++ compiler flag -Wextra" >&5 $as_echo_n "checking C++ compiler flag -Wextra... " >&6; } CXXFLAGS_BACKUP="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Wextra" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : TRY_CXXFLAG_RESULT=yes CXXFLAGSDEFAULT="$CXXFLAGSDEFAULT -Wextra " else TRY_CXXFLAG_RESULT=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CXXFLAGS="$CXXFLAGS_BACKUP" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TRY_CXXFLAG_RESULT" >&5 $as_echo "$TRY_CXXFLAG_RESULT" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking C++ compiler flag -Weffc++" >&5 $as_echo_n "checking C++ compiler flag -Weffc++... " >&6; } CXXFLAGS_BACKUP="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Weffc++" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : TRY_CXXFLAG_RESULT=yes CXXFLAGSDEFAULT="$CXXFLAGSDEFAULT -Weffc++ " else TRY_CXXFLAG_RESULT=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CXXFLAGS="$CXXFLAGS_BACKUP" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TRY_CXXFLAG_RESULT" >&5 $as_echo "$TRY_CXXFLAG_RESULT" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking C++ compiler flag -pedantic" >&5 $as_echo_n "checking C++ compiler flag -pedantic... " >&6; } CXXFLAGS_BACKUP="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -pedantic" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : TRY_CXXFLAG_RESULT=yes CXXFLAGSDEFAULT="$CXXFLAGSDEFAULT -pedantic " else TRY_CXXFLAG_RESULT=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CXXFLAGS="$CXXFLAGS_BACKUP" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TRY_CXXFLAG_RESULT" >&5 $as_echo "$TRY_CXXFLAG_RESULT" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking C++ compiler flag -Wformat=2" >&5 $as_echo_n "checking C++ compiler flag -Wformat=2... " >&6; } CXXFLAGS_BACKUP="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Wformat=2" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : TRY_CXXFLAG_RESULT=yes CXXFLAGSDEFAULT="$CXXFLAGSDEFAULT -Wformat=2 " else TRY_CXXFLAG_RESULT=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CXXFLAGS="$CXXFLAGS_BACKUP" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TRY_CXXFLAG_RESULT" >&5 $as_echo "$TRY_CXXFLAG_RESULT" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking C++ compiler flag -Wredundant-decls" >&5 $as_echo_n "checking C++ compiler flag -Wredundant-decls... " >&6; } CXXFLAGS_BACKUP="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Wredundant-decls" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : TRY_CXXFLAG_RESULT=yes CXXFLAGSDEFAULT="$CXXFLAGSDEFAULT -Wredundant-decls " else TRY_CXXFLAG_RESULT=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CXXFLAGS="$CXXFLAGS_BACKUP" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TRY_CXXFLAG_RESULT" >&5 $as_echo "$TRY_CXXFLAG_RESULT" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking C++ compiler flag -Wsuggest-attribute=format" >&5 $as_echo_n "checking C++ compiler flag -Wsuggest-attribute=format... " >&6; } CXXFLAGS_BACKUP="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Wsuggest-attribute=format" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : TRY_CXXFLAG_RESULT=yes CXXFLAGSDEFAULT="$CXXFLAGSDEFAULT -Wsuggest-attribute=format " else TRY_CXXFLAG_RESULT=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CXXFLAGS="$CXXFLAGS_BACKUP" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TRY_CXXFLAG_RESULT" >&5 $as_echo "$TRY_CXXFLAG_RESULT" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking C++ compiler flag -Wconversion" >&5 $as_echo_n "checking C++ compiler flag -Wconversion... " >&6; } CXXFLAGS_BACKUP="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Wconversion" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : TRY_CXXFLAG_RESULT=yes CXXFLAGSDEFAULT="$CXXFLAGSDEFAULT -Wconversion " else TRY_CXXFLAG_RESULT=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CXXFLAGS="$CXXFLAGS_BACKUP" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TRY_CXXFLAG_RESULT" >&5 $as_echo "$TRY_CXXFLAG_RESULT" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking C++ compiler flag -Wsign-conversion" >&5 $as_echo_n "checking C++ compiler flag -Wsign-conversion... " >&6; } CXXFLAGS_BACKUP="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Wsign-conversion" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : TRY_CXXFLAG_RESULT=yes CXXFLAGSDEFAULT="$CXXFLAGSDEFAULT -Wsign-conversion " else TRY_CXXFLAG_RESULT=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CXXFLAGS="$CXXFLAGS_BACKUP" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TRY_CXXFLAG_RESULT" >&5 $as_echo "$TRY_CXXFLAG_RESULT" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking C++ compiler flag -O2" >&5 $as_echo_n "checking C++ compiler flag -O2... " >&6; } CXXFLAGS_BACKUP="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -O2" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : TRY_CXXFLAG_RESULT=yes CXXFLAGSDEFAULT="$CXXFLAGSDEFAULT -O2 " else TRY_CXXFLAG_RESULT=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CXXFLAGS="$CXXFLAGS_BACKUP" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TRY_CXXFLAG_RESULT" >&5 $as_echo "$TRY_CXXFLAG_RESULT" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking C++ compiler flag -Weverything" >&5 $as_echo_n "checking C++ compiler flag -Weverything... " >&6; } CXXFLAGS_BACKUP="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Weverything" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : TRY_CXXFLAG_RESULT=yes CXXFLAGSDEFAULT="$CXXFLAGSDEFAULT -Weverything -Wno-unknown-warning-option -Wno-reserved-id-macro -Wno-padded -Wno-old-style-cast -Wno-nested-anon-types -Wno-global-constructors" else TRY_CXXFLAG_RESULT=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CXXFLAGS="$CXXFLAGS_BACKUP" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TRY_CXXFLAG_RESULT" >&5 $as_echo "$TRY_CXXFLAG_RESULT" >&6; } # needed by src/c99_stdint.h # avoid AC_INCLUDES_DEFAULT for ac_header in stdint.h do : ac_fn_c_check_header_compile "$LINENO" "stdint.h" "ac_cv_header_stdint_h" " " if test "x$ac_cv_header_stdint_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STDINT_H 1 _ACEOF fi done # list of possible types to use in typedefs # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of char" >&5 $as_echo_n "checking size of char... " >&6; } if ${ac_cv_sizeof_char+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (char))" "ac_cv_sizeof_char" " "; then : else if test "$ac_cv_type_char" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (char) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_char=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_char" >&5 $as_echo "$ac_cv_sizeof_char" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_CHAR $ac_cv_sizeof_char _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5 $as_echo_n "checking size of short... " >&6; } if ${ac_cv_sizeof_short+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" " "; then : else if test "$ac_cv_type_short" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (short) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_short=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5 $as_echo "$ac_cv_sizeof_short" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_SHORT $ac_cv_sizeof_short _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 $as_echo_n "checking size of int... " >&6; } if ${ac_cv_sizeof_int+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" " "; then : else if test "$ac_cv_type_int" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (int) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_int=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 $as_echo "$ac_cv_sizeof_int" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_INT $ac_cv_sizeof_int _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 $as_echo_n "checking size of long... " >&6; } if ${ac_cv_sizeof_long+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" " "; then : else if test "$ac_cv_type_long" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (long) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_long=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 $as_echo "$ac_cv_sizeof_long" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG $ac_cv_sizeof_long _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5 $as_echo_n "checking size of long long... " >&6; } if ${ac_cv_sizeof_long_long+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" " "; then : else if test "$ac_cv_type_long_long" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (long long) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_long_long=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5 $as_echo "$ac_cv_sizeof_long_long" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of __int64" >&5 $as_echo_n "checking size of __int64... " >&6; } if ${ac_cv_sizeof___int64+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (__int64))" "ac_cv_sizeof___int64" " "; then : else if test "$ac_cv_type___int64" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (__int64) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof___int64=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof___int64" >&5 $as_echo "$ac_cv_sizeof___int64" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF___INT64 $ac_cv_sizeof___int64 _ACEOF # size of pointers # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5 $as_echo_n "checking size of void *... " >&6; } if ${ac_cv_sizeof_void_p+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void *))" "ac_cv_sizeof_void_p" " "; then : else if test "$ac_cv_type_void_p" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (void *) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_void_p=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5 $as_echo "$ac_cv_sizeof_void_p" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_VOID_P $ac_cv_sizeof_void_p _ACEOF # 64-bit integer constant suffix # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of 0l" >&5 $as_echo_n "checking size of 0l... " >&6; } if ${ac_cv_sizeof_0l+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (0l))" "ac_cv_sizeof_0l" " "; then : else if test "$ac_cv_type_0l" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (0l) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_0l=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_0l" >&5 $as_echo "$ac_cv_sizeof_0l" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_0L $ac_cv_sizeof_0l _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of 0ll" >&5 $as_echo_n "checking size of 0ll... " >&6; } if ${ac_cv_sizeof_0ll+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (0ll))" "ac_cv_sizeof_0ll" " "; then : else if test "$ac_cv_type_0ll" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (0ll) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_0ll=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_0ll" >&5 $as_echo "$ac_cv_sizeof_0ll" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_0LL $ac_cv_sizeof_0ll _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of 0i8" >&5 $as_echo_n "checking size of 0i8... " >&6; } if ${ac_cv_sizeof_0i8+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (0i8))" "ac_cv_sizeof_0i8" " "; then : else if test "$ac_cv_type_0i8" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (0i8) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_0i8=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_0i8" >&5 $as_echo "$ac_cv_sizeof_0i8" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_0I8 $ac_cv_sizeof_0i8 _ACEOF ac_config_files="$ac_config_files Makefile doc/manpage.rst doc/help.rst" ac_config_files="$ac_config_files run_tests.sh" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${REBUILD_DOCS_TRUE}" && test -z "${REBUILD_DOCS_FALSE}"; then as_fn_error $? "conditional \"REBUILD_DOCS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by re2c $as_me 1.0.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ re2c config.status 1.0.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "doc/manpage.rst") CONFIG_FILES="$CONFIG_FILES doc/manpage.rst" ;; "doc/help.rst") CONFIG_FILES="$CONFIG_FILES doc/help.rst" ;; "run_tests.sh") CONFIG_FILES="$CONFIG_FILES run_tests.sh" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "run_tests.sh":F) chmod +x run_tests.sh ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi re2c-1.0.1/install-sh0000755000175000017500000003452413143420402011272 00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2016-01-11.22; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: re2c-1.0.1/Makefile.in0000644000175000017500000021733213143420402011333 00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : bin_PROGRAMS = re2c$(EXEEXT) check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = doc/manpage.rst doc/help.rst run_tests.sh CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" am__EXEEXT_1 = testrange$(EXEEXT) am__EXEEXT_2 = testston32unsafe$(EXEEXT) PROGRAMS = $(bin_PROGRAMS) am__objects_1 = am__dirstamp = $(am__leading_dot)dirstamp am__objects_2 = src/code/bitmap.$(OBJEXT) \ src/code/emit_action.$(OBJEXT) src/code/emit_dfa.$(OBJEXT) \ src/code/label.$(OBJEXT) src/code/go_construct.$(OBJEXT) \ src/code/go_destruct.$(OBJEXT) src/code/go_emit.$(OBJEXT) \ src/code/go_used_labels.$(OBJEXT) src/code/input_api.$(OBJEXT) \ src/code/output.$(OBJEXT) src/code/print.$(OBJEXT) \ src/conf/msg.$(OBJEXT) src/conf/opt.$(OBJEXT) \ src/conf/warn.$(OBJEXT) src/nfa/dump.$(OBJEXT) \ src/nfa/estimate_size.$(OBJEXT) src/nfa/re_to_nfa.$(OBJEXT) \ src/adfa/adfa.$(OBJEXT) src/adfa/dump.$(OBJEXT) \ src/adfa/prepare.$(OBJEXT) src/dfa/cfg/cfg.$(OBJEXT) \ src/dfa/cfg/compact.$(OBJEXT) src/dfa/cfg/dce.$(OBJEXT) \ src/dfa/cfg/dump.$(OBJEXT) src/dfa/cfg/freeze.$(OBJEXT) \ src/dfa/cfg/interfere.$(OBJEXT) src/dfa/cfg/liveanal.$(OBJEXT) \ src/dfa/cfg/normalize.$(OBJEXT) src/dfa/cfg/optimize.$(OBJEXT) \ src/dfa/cfg/rename.$(OBJEXT) src/dfa/cfg/varalloc.$(OBJEXT) \ src/dfa/closure.$(OBJEXT) src/dfa/dead_rules.$(OBJEXT) \ src/dfa/determinization.$(OBJEXT) src/dfa/dump.$(OBJEXT) \ src/dfa/fallback_tags.$(OBJEXT) src/dfa/fillpoints.$(OBJEXT) \ src/dfa/find_state.$(OBJEXT) src/dfa/minimization.$(OBJEXT) \ src/dfa/tagpool.$(OBJEXT) src/dfa/tagtree.$(OBJEXT) \ src/dfa/tcmd.$(OBJEXT) src/re/encoding/enc.$(OBJEXT) \ src/re/encoding/range_suffix.$(OBJEXT) \ src/re/encoding/utf8/utf8_regexp.$(OBJEXT) \ src/re/encoding/utf8/utf8_range.$(OBJEXT) \ src/re/encoding/utf8/utf8.$(OBJEXT) \ src/re/encoding/utf16/utf16_regexp.$(OBJEXT) \ src/re/encoding/utf16/utf16.$(OBJEXT) \ src/re/encoding/utf16/utf16_range.$(OBJEXT) \ src/re/ast_to_re.$(OBJEXT) src/re/default_tags.$(OBJEXT) \ src/re/fixed_tags.$(OBJEXT) src/re/nullable.$(OBJEXT) \ src/re/rule.$(OBJEXT) src/re/split_charset.$(OBJEXT) \ src/re/tag.$(OBJEXT) src/compile.$(OBJEXT) \ src/skeleton/control_flow.$(OBJEXT) \ src/skeleton/generate_code.$(OBJEXT) \ src/skeleton/generate_data.$(OBJEXT) \ src/skeleton/maxpath.$(OBJEXT) src/skeleton/skeleton.$(OBJEXT) \ src/main.$(OBJEXT) src/ast/ast.$(OBJEXT) \ src/ast/input.$(OBJEXT) src/ast/normalize.$(OBJEXT) \ src/ast/scanner.$(OBJEXT) src/ast/unescape.$(OBJEXT) \ src/ast/validate.$(OBJEXT) src/util/s_to_n32_unsafe.$(OBJEXT) \ src/util/range.$(OBJEXT) am_re2c_OBJECTS = $(am__objects_1) $(am__objects_2) am__objects_3 = src/ast/lex.$(OBJEXT) am__objects_4 = src/ast/lex_conf.$(OBJEXT) am__objects_5 = src/ast/parser.$(OBJEXT) am__objects_6 = src/conf/parse_opts.$(OBJEXT) am__objects_7 = src/conf/help.$(OBJEXT) am__objects_8 = $(am__objects_3) $(am__objects_4) $(am__objects_5) \ $(am__objects_1) $(am__objects_6) $(am__objects_7) nodist_re2c_OBJECTS = $(am__objects_8) re2c_OBJECTS = $(am_re2c_OBJECTS) $(nodist_re2c_OBJECTS) re2c_LDADD = $(LDADD) am_testrange_OBJECTS = src/test/range/test.$(OBJEXT) \ src/util/range.$(OBJEXT) testrange_OBJECTS = $(am_testrange_OBJECTS) testrange_LDADD = $(LDADD) am_testston32unsafe_OBJECTS = src/test/s_to_n32_unsafe/test.$(OBJEXT) \ src/util/s_to_n32_unsafe.$(OBJEXT) testston32unsafe_OBJECTS = $(am_testston32unsafe_OBJECTS) testston32unsafe_LDADD = $(LDADD) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(re2c_SOURCES) $(nodist_re2c_SOURCES) $(testrange_SOURCES) \ $(testston32unsafe_SOURCES) DIST_SOURCES = $(re2c_SOURCES) $(testrange_SOURCES) \ $(testston32unsafe_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man1dir = $(mandir)/man1 NROFF = nroff MANS = $(man_MANS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ $(LISP)config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope AM_RECURSIVE_TARGETS = cscope check recheck am__tty_colors_dummy = \ mgn= red= grn= lgn= blu= brg= std=; \ am__color_tests=no am__tty_colors = { \ $(am__tty_colors_dummy); \ if test "X$(AM_COLOR_TESTS)" = Xno; then \ am__color_tests=no; \ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ am__color_tests=yes; \ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ am__color_tests=yes; \ fi; \ if test $$am__color_tests = yes; then \ red=''; \ grn=''; \ lgn=''; \ blu=''; \ mgn=''; \ brg=''; \ std=''; \ fi; \ } am__recheck_rx = ^[ ]*:recheck:[ ]* am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* # A command that, given a newline-separated list of test names on the # standard input, print the name of the tests that are to be re-run # upon "make recheck". am__list_recheck_tests = $(AWK) '{ \ recheck = 1; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ { \ if ((getline line2 < ($$0 ".log")) < 0) \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ { \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ { \ break; \ } \ }; \ if (recheck) \ print $$0; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # A command that, given a newline-separated list of test names on the # standard input, create the global log from their .trs and .log files. am__create_global_log = $(AWK) ' \ function fatal(msg) \ { \ print "fatal: making $@: " msg | "cat >&2"; \ exit 1; \ } \ function rst_section(header) \ { \ print header; \ len = length(header); \ for (i = 1; i <= len; i = i + 1) \ printf "="; \ printf "\n\n"; \ } \ { \ copy_in_global_log = 1; \ global_test_result = "RUN"; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".trs"); \ if (line ~ /$(am__global_test_result_rx)/) \ { \ sub("$(am__global_test_result_rx)", "", line); \ sub("[ ]*$$", "", line); \ global_test_result = line; \ } \ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ copy_in_global_log = 0; \ }; \ if (copy_in_global_log) \ { \ rst_section(global_test_result ": " $$0); \ while ((rc = (getline line < ($$0 ".log"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".log"); \ print line; \ }; \ printf "\n"; \ }; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # Restructured Text title. am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } # Solaris 10 'make', and several other traditional 'make' implementations, # pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it # by disabling -e (using the XSI extension "set +e") if it's set. am__sh_e_setup = case $$- in *e*) set +e;; esac # Default flags passed to test drivers. am__common_driver_flags = \ --color-tests "$$am__color_tests" \ --enable-hard-errors "$$am__enable_hard_errors" \ --expect-failure "$$am__expect_failure" # To be inserted before the command running the test. Creates the # directory for the log if needed. Stores in $dir the directory # containing $f, in $tst the test, in $log the log. Executes the # developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and # passes TESTS_ENVIRONMENT. Set up options for the wrapper that # will run the test scripts (or their associated LOG_COMPILER, if # thy have one). am__check_pre = \ $(am__sh_e_setup); \ $(am__vpath_adj_setup) $(am__vpath_adj) \ $(am__tty_colors); \ srcdir=$(srcdir); export srcdir; \ case "$@" in \ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ *) am__odir=.;; \ esac; \ test "x$$am__odir" = x"." || test -d "$$am__odir" \ || $(MKDIR_P) "$$am__odir" || exit $$?; \ if test -f "./$$f"; then dir=./; \ elif test -f "$$f"; then dir=; \ else dir="$(srcdir)/"; fi; \ tst=$$dir$$f; log='$@'; \ if test -n '$(DISABLE_HARD_ERRORS)'; then \ am__enable_hard_errors=no; \ else \ am__enable_hard_errors=yes; \ fi; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ am__expect_failure=yes;; \ *) \ am__expect_failure=no;; \ esac; \ $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) # A shell command to get the names of the tests scripts with any registered # extension removed (i.e., equivalently, the names of the test logs, with # the '.log' extension removed). The result is saved in the shell variable # '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, # we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", # since that might cause problem with VPATH rewrites for suffix-less tests. # See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. am__set_TESTS_bases = \ bases='$(TEST_LOGS)'; \ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ bases=`echo $$bases` RECHECK_LOGS = $(TEST_LOGS) TEST_SUITE_LOG = test-suite.log TEST_EXTENSIONS = @EXEEXT@ .test LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) am__set_b = \ case '$@' in \ */*) \ case '$*' in \ */*) b='$*';; \ *) b=`echo '$@' | sed 's/\.log$$//'`; \ esac;; \ *) \ b='$*';; \ esac am__test_logs1 = $(TESTS:=.log) am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) TEST_LOGS = $(am__test_logs2:.test.log=.log) TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(srcdir)/run_tests.sh.in $(top_srcdir)/doc/help.rst.in \ $(top_srcdir)/doc/manpage.rst.in README compile depcomp \ install-sh missing test-driver DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BISON = @BISON@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CXXFLAGSDEFAULT = @CXXFLAGSDEFAULT@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EXEEXT = @EXEEXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_DATE = @PACKAGE_DATE@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_RELEASE = @PACKAGE_RELEASE@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RST2MAN = @RST2MAN@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # flags # do *not* add CXXFLAGS here, add them in configure.ac AM_CXXFLAGS = $(CXXFLAGSDEFAULT) RE2CFLAGS = -b RE2C = re2c$(EXEEXT) # sources SRC_HDR = \ src/code/bitmap.h \ src/code/emit.h \ src/code/go.h \ src/code/input_api.h \ src/code/label.h \ src/code/output.h \ src/code/print.h \ src/conf/msg.h \ src/conf/opt.h \ src/conf/warn.h \ src/adfa/action.h \ src/adfa/adfa.h \ src/adfa/dump.h \ src/dfa/cfg/cfg.h \ src/dfa/closure.h \ src/dfa/dfa.h \ src/dfa/dump.h \ src/dfa/find_state.h \ src/dfa/tagpool.h \ src/dfa/tagtree.h \ src/dfa/tcmd.h \ src/nfa/nfa.h \ src/re/encoding/case.h \ src/re/encoding/enc.h \ src/re/encoding/range_suffix.h \ src/re/encoding/utf8/utf8.h \ src/re/encoding/utf8/utf8_regexp.h \ src/re/encoding/utf8/utf8_range.h \ src/re/encoding/utf16/utf16_range.h \ src/re/encoding/utf16/utf16_regexp.h \ src/re/encoding/utf16/utf16.h \ src/re/empty_class_policy.h \ src/re/re.h \ src/re/rule.h \ src/re/tag.h \ src/compile.h \ src/skeleton/path.h \ src/skeleton/skeleton.h \ src/ast/ast.h \ src/ast/input.h \ src/ast/parser.h \ src/ast/scanner.h \ src/ast/unescape.h \ src/util/allocate.h \ src/util/attribute.h \ src/util/c99_stdint.h \ src/util/counter.h \ src/util/forbid_copy.h \ src/util/free_list.h \ src/util/hash32.h \ src/util/local_increment.h \ src/util/lookup.h \ src/util/range.h \ src/util/s_to_n32_unsafe.h \ src/util/slab_allocator.h \ src/util/smart_ptr.h \ src/util/static_assert.h \ src/util/string_utils.h \ src/util/u32lim.h \ src/util/uniq_vector.h \ src/util/wrap_iter.h SRC = \ src/code/bitmap.cc \ src/code/emit_action.cc \ src/code/emit_dfa.cc \ src/code/label.cc \ src/code/go_construct.cc \ src/code/go_destruct.cc \ src/code/go_emit.cc \ src/code/go_used_labels.cc \ src/code/input_api.cc \ src/code/output.cc \ src/code/print.cc \ src/conf/msg.cc \ src/conf/opt.cc \ src/conf/warn.cc \ src/nfa/dump.cc \ src/nfa/estimate_size.cc \ src/nfa/re_to_nfa.cc \ src/adfa/adfa.cc \ src/adfa/dump.cc \ src/adfa/prepare.cc \ src/dfa/cfg/cfg.cc \ src/dfa/cfg/compact.cc \ src/dfa/cfg/dce.cc \ src/dfa/cfg/dump.cc \ src/dfa/cfg/freeze.cc \ src/dfa/cfg/interfere.cc \ src/dfa/cfg/liveanal.cc \ src/dfa/cfg/normalize.cc \ src/dfa/cfg/optimize.cc \ src/dfa/cfg/rename.cc \ src/dfa/cfg/varalloc.cc \ src/dfa/closure.cc \ src/dfa/dead_rules.cc \ src/dfa/determinization.cc \ src/dfa/dump.cc \ src/dfa/fallback_tags.cc \ src/dfa/fillpoints.cc \ src/dfa/find_state.cc \ src/dfa/minimization.cc \ src/dfa/tagpool.cc \ src/dfa/tagtree.cc \ src/dfa/tcmd.cc \ src/re/encoding/enc.cc \ src/re/encoding/range_suffix.cc \ src/re/encoding/utf8/utf8_regexp.cc \ src/re/encoding/utf8/utf8_range.cc \ src/re/encoding/utf8/utf8.cc \ src/re/encoding/utf16/utf16_regexp.cc \ src/re/encoding/utf16/utf16.cc \ src/re/encoding/utf16/utf16_range.cc \ src/re/ast_to_re.cc \ src/re/default_tags.cc \ src/re/fixed_tags.cc \ src/re/nullable.cc \ src/re/rule.cc \ src/re/split_charset.cc \ src/re/tag.cc \ src/compile.cc \ src/skeleton/control_flow.cc \ src/skeleton/generate_code.cc \ src/skeleton/generate_data.cc \ src/skeleton/maxpath.cc \ src/skeleton/skeleton.cc \ src/main.cc \ src/ast/ast.cc \ src/ast/input.cc \ src/ast/normalize.cc \ src/ast/scanner.cc \ src/ast/unescape.cc \ src/ast/validate.cc \ src/util/s_to_n32_unsafe.cc \ src/util/range.cc re2c_SOURCES = \ $(SRC_HDR) \ $(SRC) # autogenerated sources AUTOGEN_LEX = src/ast/lex.cc AUTOGEN_LEX_CONF = src/ast/lex_conf.cc AUTOGEN_PARSEOPT = src/conf/parse_opts.cc AUTOGEN_PARSER = src/ast/parser.cc AUTOGEN_PARSER_HDR = src/ast/y.tab.h AUTOGEN_HELP = src/conf/help.cc AUTOGEN = \ $(AUTOGEN_LEX) \ $(AUTOGEN_LEX_CONF) \ $(AUTOGEN_PARSER) \ $(AUTOGEN_PARSER_HDR) \ $(AUTOGEN_PARSEOPT)\ $(AUTOGEN_HELP) nodist_re2c_SOURCES = $(AUTOGEN) # bootstrap sources BOOTSTRAP_LEX = bootstrap/src/ast/lex.cc BOOTSTRAP_LEX_CONF = bootstrap/src/ast/lex_conf.cc BOOTSTRAP_PARSEOPT = bootstrap/src/conf/parse_opts.cc BOOTSTRAP_PARSER = bootstrap/src/ast/parser.cc BOOTSTRAP_PARSER_HDR = bootstrap/src/ast/y.tab.h BOOTSTRAP_DOC = bootstrap/doc/re2c.1 BOOTSTRAP_HELP = bootstrap/src/conf/help.cc BOOTSTRAP = \ $(BOOTSTRAP_LEX) \ $(BOOTSTRAP_LEX_CONF) \ $(BOOTSTRAP_DOC) \ $(BOOTSTRAP_HELP) \ $(BOOTSTRAP_PARSER) \ $(BOOTSTRAP_PARSER_HDR) \ $(BOOTSTRAP_PARSEOPT) # custom sources CUSTOM_LEX = src/ast/lex.re CUSTOM_LEX_CONF = src/ast/lex_conf.re CUSTOM_PARSEOPT = src/conf/parse_opts.re CUSTOM_PARSER = src/ast/parser.ypp CUSTOM_HELP = doc/help.rst CUSTOM = \ $(CUSTOM_LEX) \ $(CUSTOM_LEX_CONF) \ $(CUSTOM_PARSER) \ $(CUSTOM_PARSEOPT) \ $(CUSTOM_HELP) # docs SRC_DOC = doc/manpage.rst SRC_DOC_EXT = \ doc/manual/syntax/rules.rst_ \ doc/manual/syntax/interface.rst_ \ doc/manual/syntax/configurations.rst_ \ doc/manual/syntax/regular_expressions.rst_ \ doc/manual/warnings/warnings_list.rst \ doc/manual/warnings/warnings_general.rst \ doc/manual/features/generic_api/generic_api.rst_ \ doc/manual/features/conditions/conditions.rst_ \ doc/manual/features/state/state.rst_ \ doc/manual/features/submatch/submatch.rst_ \ doc/manual/features/encodings/encodings.rst_ \ doc/manual/options/options_list.rst DOC = doc/re2c.1 man_MANS = $(DOC) EXTRA_DIST = \ $(BOOTSTRAP) \ $(CUSTOM) \ $(SRC_DOC_EXT) \ CHANGELOG \ NO_WARRANTY \ README \ autogen.sh \ doc/loplas.ps \ doc/sample.bib \ doc/tdfa/tdfa.pdf \ examples \ test CLEANFILES = \ $(AUTOGEN) \ $(DOC) # tests TST_SUITE = run_tests.sh TST_RANGE = testrange testrange_SOURCES = \ src/test/range/test-impl.h \ src/test/range/test.cc \ src/test/range/test.h \ src/util/range.cc\ src/util/range.h \ src/util/static_assert.h TST_S_TO_N32_UNSAFE = testston32unsafe testston32unsafe_SOURCES = \ src/test/s_to_n32_unsafe/test.cc \ src/util/s_to_n32_unsafe.cc TESTS = $(TST_SUITE) $(check_PROGRAMS) all: config.h $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .cc .log .o .obj .re .test .test$(EXEEXT) .trs am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @test -f $@ || rm -f stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 doc/manpage.rst: $(top_builddir)/config.status $(top_srcdir)/doc/manpage.rst.in cd $(top_builddir) && $(SHELL) ./config.status $@ doc/help.rst: $(top_builddir)/config.status $(top_srcdir)/doc/help.rst.in cd $(top_builddir) && $(SHELL) ./config.status $@ run_tests.sh: $(top_builddir)/config.status $(srcdir)/run_tests.sh.in cd $(top_builddir) && $(SHELL) ./config.status $@ install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) clean-checkPROGRAMS: -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) src/code/$(am__dirstamp): @$(MKDIR_P) src/code @: > src/code/$(am__dirstamp) src/code/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/code/$(DEPDIR) @: > src/code/$(DEPDIR)/$(am__dirstamp) src/code/bitmap.$(OBJEXT): src/code/$(am__dirstamp) \ src/code/$(DEPDIR)/$(am__dirstamp) src/code/emit_action.$(OBJEXT): src/code/$(am__dirstamp) \ src/code/$(DEPDIR)/$(am__dirstamp) src/code/emit_dfa.$(OBJEXT): src/code/$(am__dirstamp) \ src/code/$(DEPDIR)/$(am__dirstamp) src/code/label.$(OBJEXT): src/code/$(am__dirstamp) \ src/code/$(DEPDIR)/$(am__dirstamp) src/code/go_construct.$(OBJEXT): src/code/$(am__dirstamp) \ src/code/$(DEPDIR)/$(am__dirstamp) src/code/go_destruct.$(OBJEXT): src/code/$(am__dirstamp) \ src/code/$(DEPDIR)/$(am__dirstamp) src/code/go_emit.$(OBJEXT): src/code/$(am__dirstamp) \ src/code/$(DEPDIR)/$(am__dirstamp) src/code/go_used_labels.$(OBJEXT): src/code/$(am__dirstamp) \ src/code/$(DEPDIR)/$(am__dirstamp) src/code/input_api.$(OBJEXT): src/code/$(am__dirstamp) \ src/code/$(DEPDIR)/$(am__dirstamp) src/code/output.$(OBJEXT): src/code/$(am__dirstamp) \ src/code/$(DEPDIR)/$(am__dirstamp) src/code/print.$(OBJEXT): src/code/$(am__dirstamp) \ src/code/$(DEPDIR)/$(am__dirstamp) src/conf/$(am__dirstamp): @$(MKDIR_P) src/conf @: > src/conf/$(am__dirstamp) src/conf/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/conf/$(DEPDIR) @: > src/conf/$(DEPDIR)/$(am__dirstamp) src/conf/msg.$(OBJEXT): src/conf/$(am__dirstamp) \ src/conf/$(DEPDIR)/$(am__dirstamp) src/conf/opt.$(OBJEXT): src/conf/$(am__dirstamp) \ src/conf/$(DEPDIR)/$(am__dirstamp) src/conf/warn.$(OBJEXT): src/conf/$(am__dirstamp) \ src/conf/$(DEPDIR)/$(am__dirstamp) src/nfa/$(am__dirstamp): @$(MKDIR_P) src/nfa @: > src/nfa/$(am__dirstamp) src/nfa/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/nfa/$(DEPDIR) @: > src/nfa/$(DEPDIR)/$(am__dirstamp) src/nfa/dump.$(OBJEXT): src/nfa/$(am__dirstamp) \ src/nfa/$(DEPDIR)/$(am__dirstamp) src/nfa/estimate_size.$(OBJEXT): src/nfa/$(am__dirstamp) \ src/nfa/$(DEPDIR)/$(am__dirstamp) src/nfa/re_to_nfa.$(OBJEXT): src/nfa/$(am__dirstamp) \ src/nfa/$(DEPDIR)/$(am__dirstamp) src/adfa/$(am__dirstamp): @$(MKDIR_P) src/adfa @: > src/adfa/$(am__dirstamp) src/adfa/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/adfa/$(DEPDIR) @: > src/adfa/$(DEPDIR)/$(am__dirstamp) src/adfa/adfa.$(OBJEXT): src/adfa/$(am__dirstamp) \ src/adfa/$(DEPDIR)/$(am__dirstamp) src/adfa/dump.$(OBJEXT): src/adfa/$(am__dirstamp) \ src/adfa/$(DEPDIR)/$(am__dirstamp) src/adfa/prepare.$(OBJEXT): src/adfa/$(am__dirstamp) \ src/adfa/$(DEPDIR)/$(am__dirstamp) src/dfa/cfg/$(am__dirstamp): @$(MKDIR_P) src/dfa/cfg @: > src/dfa/cfg/$(am__dirstamp) src/dfa/cfg/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/dfa/cfg/$(DEPDIR) @: > src/dfa/cfg/$(DEPDIR)/$(am__dirstamp) src/dfa/cfg/cfg.$(OBJEXT): src/dfa/cfg/$(am__dirstamp) \ src/dfa/cfg/$(DEPDIR)/$(am__dirstamp) src/dfa/cfg/compact.$(OBJEXT): src/dfa/cfg/$(am__dirstamp) \ src/dfa/cfg/$(DEPDIR)/$(am__dirstamp) src/dfa/cfg/dce.$(OBJEXT): src/dfa/cfg/$(am__dirstamp) \ src/dfa/cfg/$(DEPDIR)/$(am__dirstamp) src/dfa/cfg/dump.$(OBJEXT): src/dfa/cfg/$(am__dirstamp) \ src/dfa/cfg/$(DEPDIR)/$(am__dirstamp) src/dfa/cfg/freeze.$(OBJEXT): src/dfa/cfg/$(am__dirstamp) \ src/dfa/cfg/$(DEPDIR)/$(am__dirstamp) src/dfa/cfg/interfere.$(OBJEXT): src/dfa/cfg/$(am__dirstamp) \ src/dfa/cfg/$(DEPDIR)/$(am__dirstamp) src/dfa/cfg/liveanal.$(OBJEXT): src/dfa/cfg/$(am__dirstamp) \ src/dfa/cfg/$(DEPDIR)/$(am__dirstamp) src/dfa/cfg/normalize.$(OBJEXT): src/dfa/cfg/$(am__dirstamp) \ src/dfa/cfg/$(DEPDIR)/$(am__dirstamp) src/dfa/cfg/optimize.$(OBJEXT): src/dfa/cfg/$(am__dirstamp) \ src/dfa/cfg/$(DEPDIR)/$(am__dirstamp) src/dfa/cfg/rename.$(OBJEXT): src/dfa/cfg/$(am__dirstamp) \ src/dfa/cfg/$(DEPDIR)/$(am__dirstamp) src/dfa/cfg/varalloc.$(OBJEXT): src/dfa/cfg/$(am__dirstamp) \ src/dfa/cfg/$(DEPDIR)/$(am__dirstamp) src/dfa/$(am__dirstamp): @$(MKDIR_P) src/dfa @: > src/dfa/$(am__dirstamp) src/dfa/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/dfa/$(DEPDIR) @: > src/dfa/$(DEPDIR)/$(am__dirstamp) src/dfa/closure.$(OBJEXT): src/dfa/$(am__dirstamp) \ src/dfa/$(DEPDIR)/$(am__dirstamp) src/dfa/dead_rules.$(OBJEXT): src/dfa/$(am__dirstamp) \ src/dfa/$(DEPDIR)/$(am__dirstamp) src/dfa/determinization.$(OBJEXT): src/dfa/$(am__dirstamp) \ src/dfa/$(DEPDIR)/$(am__dirstamp) src/dfa/dump.$(OBJEXT): src/dfa/$(am__dirstamp) \ src/dfa/$(DEPDIR)/$(am__dirstamp) src/dfa/fallback_tags.$(OBJEXT): src/dfa/$(am__dirstamp) \ src/dfa/$(DEPDIR)/$(am__dirstamp) src/dfa/fillpoints.$(OBJEXT): src/dfa/$(am__dirstamp) \ src/dfa/$(DEPDIR)/$(am__dirstamp) src/dfa/find_state.$(OBJEXT): src/dfa/$(am__dirstamp) \ src/dfa/$(DEPDIR)/$(am__dirstamp) src/dfa/minimization.$(OBJEXT): src/dfa/$(am__dirstamp) \ src/dfa/$(DEPDIR)/$(am__dirstamp) src/dfa/tagpool.$(OBJEXT): src/dfa/$(am__dirstamp) \ src/dfa/$(DEPDIR)/$(am__dirstamp) src/dfa/tagtree.$(OBJEXT): src/dfa/$(am__dirstamp) \ src/dfa/$(DEPDIR)/$(am__dirstamp) src/dfa/tcmd.$(OBJEXT): src/dfa/$(am__dirstamp) \ src/dfa/$(DEPDIR)/$(am__dirstamp) src/re/encoding/$(am__dirstamp): @$(MKDIR_P) src/re/encoding @: > src/re/encoding/$(am__dirstamp) src/re/encoding/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/re/encoding/$(DEPDIR) @: > src/re/encoding/$(DEPDIR)/$(am__dirstamp) src/re/encoding/enc.$(OBJEXT): src/re/encoding/$(am__dirstamp) \ src/re/encoding/$(DEPDIR)/$(am__dirstamp) src/re/encoding/range_suffix.$(OBJEXT): \ src/re/encoding/$(am__dirstamp) \ src/re/encoding/$(DEPDIR)/$(am__dirstamp) src/re/encoding/utf8/$(am__dirstamp): @$(MKDIR_P) src/re/encoding/utf8 @: > src/re/encoding/utf8/$(am__dirstamp) src/re/encoding/utf8/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/re/encoding/utf8/$(DEPDIR) @: > src/re/encoding/utf8/$(DEPDIR)/$(am__dirstamp) src/re/encoding/utf8/utf8_regexp.$(OBJEXT): \ src/re/encoding/utf8/$(am__dirstamp) \ src/re/encoding/utf8/$(DEPDIR)/$(am__dirstamp) src/re/encoding/utf8/utf8_range.$(OBJEXT): \ src/re/encoding/utf8/$(am__dirstamp) \ src/re/encoding/utf8/$(DEPDIR)/$(am__dirstamp) src/re/encoding/utf8/utf8.$(OBJEXT): \ src/re/encoding/utf8/$(am__dirstamp) \ src/re/encoding/utf8/$(DEPDIR)/$(am__dirstamp) src/re/encoding/utf16/$(am__dirstamp): @$(MKDIR_P) src/re/encoding/utf16 @: > src/re/encoding/utf16/$(am__dirstamp) src/re/encoding/utf16/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/re/encoding/utf16/$(DEPDIR) @: > src/re/encoding/utf16/$(DEPDIR)/$(am__dirstamp) src/re/encoding/utf16/utf16_regexp.$(OBJEXT): \ src/re/encoding/utf16/$(am__dirstamp) \ src/re/encoding/utf16/$(DEPDIR)/$(am__dirstamp) src/re/encoding/utf16/utf16.$(OBJEXT): \ src/re/encoding/utf16/$(am__dirstamp) \ src/re/encoding/utf16/$(DEPDIR)/$(am__dirstamp) src/re/encoding/utf16/utf16_range.$(OBJEXT): \ src/re/encoding/utf16/$(am__dirstamp) \ src/re/encoding/utf16/$(DEPDIR)/$(am__dirstamp) src/re/$(am__dirstamp): @$(MKDIR_P) src/re @: > src/re/$(am__dirstamp) src/re/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/re/$(DEPDIR) @: > src/re/$(DEPDIR)/$(am__dirstamp) src/re/ast_to_re.$(OBJEXT): src/re/$(am__dirstamp) \ src/re/$(DEPDIR)/$(am__dirstamp) src/re/default_tags.$(OBJEXT): src/re/$(am__dirstamp) \ src/re/$(DEPDIR)/$(am__dirstamp) src/re/fixed_tags.$(OBJEXT): src/re/$(am__dirstamp) \ src/re/$(DEPDIR)/$(am__dirstamp) src/re/nullable.$(OBJEXT): src/re/$(am__dirstamp) \ src/re/$(DEPDIR)/$(am__dirstamp) src/re/rule.$(OBJEXT): src/re/$(am__dirstamp) \ src/re/$(DEPDIR)/$(am__dirstamp) src/re/split_charset.$(OBJEXT): src/re/$(am__dirstamp) \ src/re/$(DEPDIR)/$(am__dirstamp) src/re/tag.$(OBJEXT): src/re/$(am__dirstamp) \ src/re/$(DEPDIR)/$(am__dirstamp) src/$(am__dirstamp): @$(MKDIR_P) src @: > src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/$(DEPDIR) @: > src/$(DEPDIR)/$(am__dirstamp) src/compile.$(OBJEXT): src/$(am__dirstamp) \ src/$(DEPDIR)/$(am__dirstamp) src/skeleton/$(am__dirstamp): @$(MKDIR_P) src/skeleton @: > src/skeleton/$(am__dirstamp) src/skeleton/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/skeleton/$(DEPDIR) @: > src/skeleton/$(DEPDIR)/$(am__dirstamp) src/skeleton/control_flow.$(OBJEXT): src/skeleton/$(am__dirstamp) \ src/skeleton/$(DEPDIR)/$(am__dirstamp) src/skeleton/generate_code.$(OBJEXT): src/skeleton/$(am__dirstamp) \ src/skeleton/$(DEPDIR)/$(am__dirstamp) src/skeleton/generate_data.$(OBJEXT): src/skeleton/$(am__dirstamp) \ src/skeleton/$(DEPDIR)/$(am__dirstamp) src/skeleton/maxpath.$(OBJEXT): src/skeleton/$(am__dirstamp) \ src/skeleton/$(DEPDIR)/$(am__dirstamp) src/skeleton/skeleton.$(OBJEXT): src/skeleton/$(am__dirstamp) \ src/skeleton/$(DEPDIR)/$(am__dirstamp) src/main.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) src/ast/$(am__dirstamp): @$(MKDIR_P) src/ast @: > src/ast/$(am__dirstamp) src/ast/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/ast/$(DEPDIR) @: > src/ast/$(DEPDIR)/$(am__dirstamp) src/ast/ast.$(OBJEXT): src/ast/$(am__dirstamp) \ src/ast/$(DEPDIR)/$(am__dirstamp) src/ast/input.$(OBJEXT): src/ast/$(am__dirstamp) \ src/ast/$(DEPDIR)/$(am__dirstamp) src/ast/normalize.$(OBJEXT): src/ast/$(am__dirstamp) \ src/ast/$(DEPDIR)/$(am__dirstamp) src/ast/scanner.$(OBJEXT): src/ast/$(am__dirstamp) \ src/ast/$(DEPDIR)/$(am__dirstamp) src/ast/unescape.$(OBJEXT): src/ast/$(am__dirstamp) \ src/ast/$(DEPDIR)/$(am__dirstamp) src/ast/validate.$(OBJEXT): src/ast/$(am__dirstamp) \ src/ast/$(DEPDIR)/$(am__dirstamp) src/util/$(am__dirstamp): @$(MKDIR_P) src/util @: > src/util/$(am__dirstamp) src/util/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/util/$(DEPDIR) @: > src/util/$(DEPDIR)/$(am__dirstamp) src/util/s_to_n32_unsafe.$(OBJEXT): src/util/$(am__dirstamp) \ src/util/$(DEPDIR)/$(am__dirstamp) src/util/range.$(OBJEXT): src/util/$(am__dirstamp) \ src/util/$(DEPDIR)/$(am__dirstamp) src/ast/lex.$(OBJEXT): src/ast/$(am__dirstamp) \ src/ast/$(DEPDIR)/$(am__dirstamp) src/ast/lex_conf.$(OBJEXT): src/ast/$(am__dirstamp) \ src/ast/$(DEPDIR)/$(am__dirstamp) src/ast/parser.$(OBJEXT): src/ast/$(am__dirstamp) \ src/ast/$(DEPDIR)/$(am__dirstamp) src/conf/parse_opts.$(OBJEXT): src/conf/$(am__dirstamp) \ src/conf/$(DEPDIR)/$(am__dirstamp) src/conf/help.$(OBJEXT): src/conf/$(am__dirstamp) \ src/conf/$(DEPDIR)/$(am__dirstamp) re2c$(EXEEXT): $(re2c_OBJECTS) $(re2c_DEPENDENCIES) $(EXTRA_re2c_DEPENDENCIES) @rm -f re2c$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(re2c_OBJECTS) $(re2c_LDADD) $(LIBS) src/test/range/$(am__dirstamp): @$(MKDIR_P) src/test/range @: > src/test/range/$(am__dirstamp) src/test/range/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/test/range/$(DEPDIR) @: > src/test/range/$(DEPDIR)/$(am__dirstamp) src/test/range/test.$(OBJEXT): src/test/range/$(am__dirstamp) \ src/test/range/$(DEPDIR)/$(am__dirstamp) testrange$(EXEEXT): $(testrange_OBJECTS) $(testrange_DEPENDENCIES) $(EXTRA_testrange_DEPENDENCIES) @rm -f testrange$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(testrange_OBJECTS) $(testrange_LDADD) $(LIBS) src/test/s_to_n32_unsafe/$(am__dirstamp): @$(MKDIR_P) src/test/s_to_n32_unsafe @: > src/test/s_to_n32_unsafe/$(am__dirstamp) src/test/s_to_n32_unsafe/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/test/s_to_n32_unsafe/$(DEPDIR) @: > src/test/s_to_n32_unsafe/$(DEPDIR)/$(am__dirstamp) src/test/s_to_n32_unsafe/test.$(OBJEXT): \ src/test/s_to_n32_unsafe/$(am__dirstamp) \ src/test/s_to_n32_unsafe/$(DEPDIR)/$(am__dirstamp) testston32unsafe$(EXEEXT): $(testston32unsafe_OBJECTS) $(testston32unsafe_DEPENDENCIES) $(EXTRA_testston32unsafe_DEPENDENCIES) @rm -f testston32unsafe$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(testston32unsafe_OBJECTS) $(testston32unsafe_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f src/*.$(OBJEXT) -rm -f src/adfa/*.$(OBJEXT) -rm -f src/ast/*.$(OBJEXT) -rm -f src/code/*.$(OBJEXT) -rm -f src/conf/*.$(OBJEXT) -rm -f src/dfa/*.$(OBJEXT) -rm -f src/dfa/cfg/*.$(OBJEXT) -rm -f src/nfa/*.$(OBJEXT) -rm -f src/re/*.$(OBJEXT) -rm -f src/re/encoding/*.$(OBJEXT) -rm -f src/re/encoding/utf16/*.$(OBJEXT) -rm -f src/re/encoding/utf8/*.$(OBJEXT) -rm -f src/skeleton/*.$(OBJEXT) -rm -f src/test/range/*.$(OBJEXT) -rm -f src/test/s_to_n32_unsafe/*.$(OBJEXT) -rm -f src/util/*.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/compile.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/adfa/$(DEPDIR)/adfa.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/adfa/$(DEPDIR)/dump.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/adfa/$(DEPDIR)/prepare.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/ast/$(DEPDIR)/ast.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/ast/$(DEPDIR)/input.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/ast/$(DEPDIR)/lex.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/ast/$(DEPDIR)/lex_conf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/ast/$(DEPDIR)/normalize.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/ast/$(DEPDIR)/parser.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/ast/$(DEPDIR)/scanner.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/ast/$(DEPDIR)/unescape.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/ast/$(DEPDIR)/validate.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/code/$(DEPDIR)/bitmap.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/code/$(DEPDIR)/emit_action.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/code/$(DEPDIR)/emit_dfa.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/code/$(DEPDIR)/go_construct.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/code/$(DEPDIR)/go_destruct.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/code/$(DEPDIR)/go_emit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/code/$(DEPDIR)/go_used_labels.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/code/$(DEPDIR)/input_api.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/code/$(DEPDIR)/label.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/code/$(DEPDIR)/output.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/code/$(DEPDIR)/print.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/conf/$(DEPDIR)/help.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/conf/$(DEPDIR)/msg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/conf/$(DEPDIR)/opt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/conf/$(DEPDIR)/parse_opts.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/conf/$(DEPDIR)/warn.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/dfa/$(DEPDIR)/closure.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/dfa/$(DEPDIR)/dead_rules.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/dfa/$(DEPDIR)/determinization.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/dfa/$(DEPDIR)/dump.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/dfa/$(DEPDIR)/fallback_tags.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/dfa/$(DEPDIR)/fillpoints.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/dfa/$(DEPDIR)/find_state.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/dfa/$(DEPDIR)/minimization.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/dfa/$(DEPDIR)/tagpool.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/dfa/$(DEPDIR)/tagtree.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/dfa/$(DEPDIR)/tcmd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/dfa/cfg/$(DEPDIR)/cfg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/dfa/cfg/$(DEPDIR)/compact.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/dfa/cfg/$(DEPDIR)/dce.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/dfa/cfg/$(DEPDIR)/dump.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/dfa/cfg/$(DEPDIR)/freeze.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/dfa/cfg/$(DEPDIR)/interfere.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/dfa/cfg/$(DEPDIR)/liveanal.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/dfa/cfg/$(DEPDIR)/normalize.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/dfa/cfg/$(DEPDIR)/optimize.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/dfa/cfg/$(DEPDIR)/rename.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/dfa/cfg/$(DEPDIR)/varalloc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/nfa/$(DEPDIR)/dump.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/nfa/$(DEPDIR)/estimate_size.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/nfa/$(DEPDIR)/re_to_nfa.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/re/$(DEPDIR)/ast_to_re.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/re/$(DEPDIR)/default_tags.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/re/$(DEPDIR)/fixed_tags.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/re/$(DEPDIR)/nullable.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/re/$(DEPDIR)/rule.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/re/$(DEPDIR)/split_charset.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/re/$(DEPDIR)/tag.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/re/encoding/$(DEPDIR)/enc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/re/encoding/$(DEPDIR)/range_suffix.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/re/encoding/utf16/$(DEPDIR)/utf16.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/re/encoding/utf16/$(DEPDIR)/utf16_range.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/re/encoding/utf16/$(DEPDIR)/utf16_regexp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/re/encoding/utf8/$(DEPDIR)/utf8.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/re/encoding/utf8/$(DEPDIR)/utf8_range.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/re/encoding/utf8/$(DEPDIR)/utf8_regexp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/skeleton/$(DEPDIR)/control_flow.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/skeleton/$(DEPDIR)/generate_code.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/skeleton/$(DEPDIR)/generate_data.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/skeleton/$(DEPDIR)/maxpath.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/skeleton/$(DEPDIR)/skeleton.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/test/range/$(DEPDIR)/test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/test/s_to_n32_unsafe/$(DEPDIR)/test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/util/$(DEPDIR)/range.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/util/$(DEPDIR)/s_to_n32_unsafe.Po@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` install-man1: $(man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(man_MANS)'; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files # Recover from deleted '.trs' file; this should ensure that # "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create # both 'foo.log' and 'foo.trs'. Break the recipe in two subshells # to avoid problems with "make -n". .log.trs: rm -f $< $@ $(MAKE) $(AM_MAKEFLAGS) $< # Leading 'am--fnord' is there to ensure the list of targets does not # expand to empty, as could happen e.g. with make check TESTS=''. am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) am--force-recheck: @: $(TEST_SUITE_LOG): $(TEST_LOGS) @$(am__set_TESTS_bases); \ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ redo_bases=`for i in $$bases; do \ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ done`; \ if test -n "$$redo_bases"; then \ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ if $(am__make_dryrun); then :; else \ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ fi; \ fi; \ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ st=0; \ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ for i in $$redo_bases; do \ test -f $$i.trs && test -r $$i.trs \ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ test -f $$i.log && test -r $$i.log \ || { echo "$$errmsg $$i.log" >&2; st=1; }; \ done; \ test $$st -eq 0 || exit 1; \ fi @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ ws='[ ]'; \ results=`for b in $$bases; do echo $$b.trs; done`; \ test -n "$$results" || results=/dev/null; \ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ if test `expr $$fail + $$xpass + $$error` -eq 0; then \ success=true; \ else \ success=false; \ fi; \ br='==================='; br=$$br$$br$$br$$br; \ result_count () \ { \ if test x"$$1" = x"--maybe-color"; then \ maybe_colorize=yes; \ elif test x"$$1" = x"--no-color"; then \ maybe_colorize=no; \ else \ echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ shift; \ desc=$$1 count=$$2; \ if test $$maybe_colorize = yes && test $$count -gt 0; then \ color_start=$$3 color_end=$$std; \ else \ color_start= color_end=; \ fi; \ echo "$${color_start}# $$desc $$count$${color_end}"; \ }; \ create_testsuite_report () \ { \ result_count $$1 "TOTAL:" $$all "$$brg"; \ result_count $$1 "PASS: " $$pass "$$grn"; \ result_count $$1 "SKIP: " $$skip "$$blu"; \ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ result_count $$1 "FAIL: " $$fail "$$red"; \ result_count $$1 "XPASS:" $$xpass "$$red"; \ result_count $$1 "ERROR:" $$error "$$mgn"; \ }; \ { \ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ $(am__rst_title); \ create_testsuite_report --no-color; \ echo; \ echo ".. contents:: :depth: 2"; \ echo; \ for b in $$bases; do echo $$b; done \ | $(am__create_global_log); \ } >$(TEST_SUITE_LOG).tmp || exit 1; \ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ if $$success; then \ col="$$grn"; \ else \ col="$$red"; \ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ fi; \ echo "$${col}$$br$${std}"; \ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ echo "$${col}$$br$${std}"; \ create_testsuite_report --maybe-color; \ echo "$$col$$br$$std"; \ if $$success; then :; else \ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ if test -n "$(PACKAGE_BUGREPORT)"; then \ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ fi; \ echo "$$col$$br$$std"; \ fi; \ $$success || exit 1 check-TESTS: @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ log_list=`for i in $$bases; do echo $$i.log; done`; \ trs_list=`for i in $$bases; do echo $$i.trs; done`; \ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ exit $$?; recheck: all $(check_PROGRAMS) @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ bases=`for i in $$bases; do echo $$i; done \ | $(am__list_recheck_tests)` || exit 1; \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ am__force_recheck=am--force-recheck \ TEST_LOGS="$$log_list"; \ exit $$? run_tests.sh.log: run_tests.sh @p='run_tests.sh'; \ b='run_tests.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) testrange.log: testrange$(EXEEXT) @p='testrange$(EXEEXT)'; \ b='testrange'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) testston32unsafe.log: testston32unsafe$(EXEEXT) @p='testston32unsafe$(EXEEXT)'; \ b='testston32unsafe'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) .test.log: @p='$<'; \ $(am__set_b); \ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) @am__EXEEXT_TRUE@.test$(EXEEXT).log: @am__EXEEXT_TRUE@ @p='$<'; \ @am__EXEEXT_TRUE@ $(am__set_b); \ @am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ @am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ @am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ @am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile $(PROGRAMS) $(MANS) config.h all-local installdirs: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -rm -f src/$(DEPDIR)/$(am__dirstamp) -rm -f src/$(am__dirstamp) -rm -f src/adfa/$(DEPDIR)/$(am__dirstamp) -rm -f src/adfa/$(am__dirstamp) -rm -f src/ast/$(DEPDIR)/$(am__dirstamp) -rm -f src/ast/$(am__dirstamp) -rm -f src/code/$(DEPDIR)/$(am__dirstamp) -rm -f src/code/$(am__dirstamp) -rm -f src/conf/$(DEPDIR)/$(am__dirstamp) -rm -f src/conf/$(am__dirstamp) -rm -f src/dfa/$(DEPDIR)/$(am__dirstamp) -rm -f src/dfa/$(am__dirstamp) -rm -f src/dfa/cfg/$(DEPDIR)/$(am__dirstamp) -rm -f src/dfa/cfg/$(am__dirstamp) -rm -f src/nfa/$(DEPDIR)/$(am__dirstamp) -rm -f src/nfa/$(am__dirstamp) -rm -f src/re/$(DEPDIR)/$(am__dirstamp) -rm -f src/re/$(am__dirstamp) -rm -f src/re/encoding/$(DEPDIR)/$(am__dirstamp) -rm -f src/re/encoding/$(am__dirstamp) -rm -f src/re/encoding/utf16/$(DEPDIR)/$(am__dirstamp) -rm -f src/re/encoding/utf16/$(am__dirstamp) -rm -f src/re/encoding/utf8/$(DEPDIR)/$(am__dirstamp) -rm -f src/re/encoding/utf8/$(am__dirstamp) -rm -f src/skeleton/$(DEPDIR)/$(am__dirstamp) -rm -f src/skeleton/$(am__dirstamp) -rm -f src/test/range/$(DEPDIR)/$(am__dirstamp) -rm -f src/test/range/$(am__dirstamp) -rm -f src/test/s_to_n32_unsafe/$(DEPDIR)/$(am__dirstamp) -rm -f src/test/s_to_n32_unsafe/$(am__dirstamp) -rm -f src/util/$(DEPDIR)/$(am__dirstamp) -rm -f src/util/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \ mostlyclean-am distclean: distclean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf src/$(DEPDIR) src/adfa/$(DEPDIR) src/ast/$(DEPDIR) src/code/$(DEPDIR) src/conf/$(DEPDIR) src/dfa/$(DEPDIR) src/dfa/cfg/$(DEPDIR) src/nfa/$(DEPDIR) src/re/$(DEPDIR) src/re/encoding/$(DEPDIR) src/re/encoding/utf16/$(DEPDIR) src/re/encoding/utf8/$(DEPDIR) src/skeleton/$(DEPDIR) src/test/range/$(DEPDIR) src/test/s_to_n32_unsafe/$(DEPDIR) src/util/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-man install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man1 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -rf src/$(DEPDIR) src/adfa/$(DEPDIR) src/ast/$(DEPDIR) src/code/$(DEPDIR) src/conf/$(DEPDIR) src/dfa/$(DEPDIR) src/dfa/cfg/$(DEPDIR) src/nfa/$(DEPDIR) src/re/$(DEPDIR) src/re/encoding/$(DEPDIR) src/re/encoding/utf16/$(DEPDIR) src/re/encoding/utf8/$(DEPDIR) src/skeleton/$(DEPDIR) src/test/range/$(DEPDIR) src/test/s_to_n32_unsafe/$(DEPDIR) src/util/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-man uninstall-man: uninstall-man1 .MAKE: all check-am install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am all-local am--refresh check \ check-TESTS check-am clean clean-binPROGRAMS \ clean-checkPROGRAMS clean-cscope clean-generic cscope \ cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \ distcheck distclean distclean-compile distclean-generic \ distclean-hdr distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am html html-am info info-am \ install install-am install-binPROGRAMS install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-man1 install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am recheck tags tags-am \ uninstall uninstall-am uninstall-binPROGRAMS uninstall-man \ uninstall-man1 .PRECIOUS: Makefile $(AUTOGEN_PARSER): $(CUSTOM_PARSER) $(AM_V_at)$(MKDIR_P) $(@D) $(AM_V_GEN) if test $(BISON) = "no"; \ then \ cp $(top_srcdir)/$(BOOTSTRAP_PARSER) $@ && \ cp $(top_srcdir)/$(BOOTSTRAP_PARSER_HDR) $(AUTOGEN_PARSER_HDR); \ else \ $(BISON) \ --output=$@ \ --defines=$(AUTOGEN_PARSER_HDR) \ $(top_srcdir)/$(CUSTOM_PARSER); \ fi # lexer depends on bison-generated header # so bison rule must be triggered before lexer rule $(AUTOGEN_LEX): $(AUTOGEN_PARSER) $(BOOTSTRAP_PARSER): $(CUSTOM_PARSER) # target directory exists (as part of source file tree) $(AM_V_GEN) test $(BISON) = "no" || \ $(BISON) \ --output=$(top_srcdir)/$@ \ --defines=$(top_srcdir)/$(BOOTSTRAP_PARSER_HDR) \ --no-lines \ $(top_srcdir)/$(CUSTOM_PARSER); .re.cc: $(AM_V_at)$(MKDIR_P) $(@D) $(AM_V_GEN) if test -x $(RE2C); \ then \ $(top_builddir)/$(RE2C) $(RE2CFLAGS) -o $@ $< && \ cp $@ $(top_srcdir)/bootstrap/$@; \ else \ cp $(top_srcdir)/bootstrap/$@ $@; \ fi # rebuild all re2c sources using newly built re2c .PHONY: bootstrap bootstrap: all rm $(top_builddir)/$(AUTOGEN_LEX) rm $(top_builddir)/$(AUTOGEN_LEX_CONF) rm $(top_builddir)/$(AUTOGEN_PARSEOPT) $(MAKE) all .PHONY: docs @REBUILD_DOCS_TRUE@docs: $(DOC) $(AUTOGEN_HELP) @REBUILD_DOCS_TRUE@$(DOC): $(SRC_DOC) $(SRC_DOC_EXT) @REBUILD_DOCS_TRUE@ $(AM_V_at)$(MKDIR_P) $(@D) @REBUILD_DOCS_TRUE@ $(RST2MAN) $(top_builddir)/$(SRC_DOC) > $@ @REBUILD_DOCS_TRUE@ cp $@ $(top_srcdir)/$(BOOTSTRAP_DOC) @REBUILD_DOCS_TRUE@$(AUTOGEN_HELP): $(CUSTOM_HELP) @REBUILD_DOCS_TRUE@ $(AM_V_at)$(MKDIR_P) $(@D) @REBUILD_DOCS_TRUE@ $(RST2MAN) $(top_builddir)/$(CUSTOM_HELP) > $@.1 @REBUILD_DOCS_TRUE@ $(top_srcdir)/genhelp.sh $@.1 $@ @REBUILD_DOCS_TRUE@ cp $@ $(top_srcdir)/$(BOOTSTRAP_HELP) @REBUILD_DOCS_FALSE@docs: $(DOC) $(AUTOGEN_HELP) @REBUILD_DOCS_FALSE@ @echo "Reconfigure to rebuild docs: ./configure --enable-docs" @REBUILD_DOCS_FALSE@$(DOC): $(BOOTSTRAP_DOC) @REBUILD_DOCS_FALSE@ $(AM_V_at)$(MKDIR_P) $(@D) @REBUILD_DOCS_FALSE@ cp $(top_srcdir)/$(BOOTSTRAP_DOC) $@ @REBUILD_DOCS_FALSE@$(AUTOGEN_HELP): $(BOOTSTRAP_HELP) @REBUILD_DOCS_FALSE@ $(AM_V_at)$(MKDIR_P) $(@D) @REBUILD_DOCS_FALSE@ cp $(top_srcdir)/$(BOOTSTRAP_HELP) $@ all-local: docs $(BOOTSTRAP_PARSER) .PHONY: tests tests: all $(TST_SUITE) $(top_builddir)/$(TST_SUITE) .PHONY: vtests vtests: all $(TST_SUITE) $(top_builddir)/$(TST_SUITE) --valgrind .PHONY: wtests wtests: all $(TST_SUITE) $(top_builddir)/$(TST_SUITE) --wine -j1 # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: re2c-1.0.1/config.h.in0000644000175000017500000000257713143420401011313 00000000000000/* config.h.in. Generated from configure.ac by autoheader. */ /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* The size of `0i8', as computed by sizeof. */ #undef SIZEOF_0I8 /* The size of `0l', as computed by sizeof. */ #undef SIZEOF_0L /* The size of `0ll', as computed by sizeof. */ #undef SIZEOF_0LL /* The size of `char', as computed by sizeof. */ #undef SIZEOF_CHAR /* The size of `int', as computed by sizeof. */ #undef SIZEOF_INT /* The size of `long', as computed by sizeof. */ #undef SIZEOF_LONG /* The size of `long long', as computed by sizeof. */ #undef SIZEOF_LONG_LONG /* The size of `short', as computed by sizeof. */ #undef SIZEOF_SHORT /* The size of `void *', as computed by sizeof. */ #undef SIZEOF_VOID_P /* The size of `__int64', as computed by sizeof. */ #undef SIZEOF___INT64 /* Version number of package */ #undef VERSION re2c-1.0.1/missing0000755000175000017500000001533113143420402010660 00000000000000#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2016-01-11.22; # UTC # Copyright (C) 1996-2017 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: re2c-1.0.1/doc/0000755000175000017500000000000013143420716010113 500000000000000re2c-1.0.1/doc/help.rst.in0000644000175000017500000000030613143074550012122 00000000000000.. include:: @top_srcdir@/doc/manual/options/options_list.rst .. include:: @top_srcdir@/doc/manual/warnings/warnings_general.rst .. include:: @top_srcdir@/doc/manual/warnings/warnings_list.rst re2c-1.0.1/doc/manpage.rst.in0000644000175000017500000000705513143075774012623 00000000000000==== re2c ==== ----------------------------------------- convert regular expressions to C/C++ code ----------------------------------------- :Manual section: 1 SYNOPSIS -------- ``re2c [OPTIONS] FILE`` DESCRIPTION ----------- ``re2c`` is a lexer generator for C/C++. It finds regular expression specifications inside of C/C++ comments and replaces them with a hard-coded DFA. The user must supply some interface code in order to control and customize the generated DFA. OPTIONS ------- .. include:: @top_srcdir@/doc/manual/options/options_list.rst .. include:: @top_srcdir@/doc/manual/warnings/warnings_general.rst .. include:: @top_srcdir@/doc/manual/warnings/warnings_list.rst INTERFACE CODE -------------- The user must supply interface code either in the form of C/C++ code (macros, functions, variables, etc.) or in the form of ``INPLACE CONFIGURATIONS``. Which symbols must be defined and which are optional depends on the particular use case. .. include:: @top_srcdir@/doc/manual/syntax/interface.rst_ SYNTAX ------ Code for ``re2c`` consists of a set of ``RULES``, ``NAMED DEFINITIONS``, ``CODE`` and ``INPLACE CONFIGURATIONS``. RULES ~~~~~ Each rule consist of a regular expression (see ``REGULAR EXPRESSIONS``) accompanied with a block of C/C++ code which is to be executed when the associated regular expression is matched. You can either start the code with an opening curly brace or the sequence ``:=``. If you use an opening curly brace, ``re2c`` will count brace depth and stop looking for code automatically. Otherwise, curly braces are not allowed and ``re2c`` stops looking for code at the first line that does not begin with whitespace. If two or more rules overlap, the first rule is preferred. .. include:: @top_srcdir@/doc/manual/syntax/rules.rst_ NAMED DEFINITIONS ~~~~~~~~~~~~~~~~~ Named definitions are of the form: ``name = regular-expression;`` If ``-F`` is active, then named definitions are also of the form: ``name { regular-expression }`` INPLACE CONFIGURATIONS ~~~~~~~~~~~~~~~~~~~~~~ .. include:: @top_srcdir@/doc/manual/syntax/configurations.rst_ REGULAR EXPRESSIONS ~~~~~~~~~~~~~~~~~~~ .. include:: @top_srcdir@/doc/manual/syntax/regular_expressions.rst_ SUBMATCH EXTRACTION ------------------- .. include:: @top_srcdir@/doc/manual/features/submatch/submatch.rst_ SCANNER WITH STORABLE STATES ---------------------------- .. include:: @top_srcdir@/doc/manual/features/state/state.rst_ SCANNER WITH CONDITION SUPPORT ------------------------------ .. include:: @top_srcdir@/doc/manual/features/conditions/conditions.rst_ ENCODINGS --------- .. include:: @top_srcdir@/doc/manual/features/encodings/encodings.rst_ GENERIC INPUT API ----------------- .. include:: @top_srcdir@/doc/manual/features/generic_api/generic_api.rst_ A couple of useful links that provide some examples: 1. http://skvadrik.github.io/aleph_null/posts/re2c/2015-01-13-input_model.html 2. http://skvadrik.github.io/aleph_null/posts/re2c/2015-01-15-input_model_custom.html SEE ALSO -------- You can find more information about ``re2c`` at: http://re2c.org. See also: flex(1), lex(1), quex (http://quex.sourceforge.net). AUTHORS ------- Peter Bumbulis peter@csg.uwaterloo.ca Brian Young bayoung@acm.org Dan Nuffer nuffer@users.sourceforge.net Marcus Boerger helly@users.sourceforge.net Hartmut Kaiser hkaiser@users.sourceforge.net Emmanuel Mogenet mgix@mgix.com Ulya Trofimovich skvadrik@gmail.com VERSION INFORMATION ------------------- This manpage describes ``re2c`` version @PACKAGE_VERSION@, package date @PACKAGE_DATE@. re2c-1.0.1/doc/tdfa/0000755000175000017500000000000013143420716011031 500000000000000re2c-1.0.1/doc/tdfa/tdfa.pdf0000644000175000017500000314076713143314503012400 00000000000000%PDF-1.5 %ÐÔÅØ 3 0 obj << /Length 3762 /Filter /FlateDecode >> stream xÚZY“ܶ~÷¯ØGŽKËð>ä—ȲUQì”Sɺ’*GØ!v†^¹æ±‡}úënp8+(ñËh4ŽFßùöæ«?}ˆó«¸ “8Ï®nî®â8 㪾*ª4Ì£øê¦¹ú%¸Ù•U`Ûì®Ó( ¾³»8˜w×q€ÆˆÆ©íÛin÷@ˆƒÔÓqî¿[æádf#ÓŸÚù(­‡ÝuRÃý.Os´¦Ù}ºù+© ƒ„už'|¦¬ Ë<½ºNª°ªõL?w/»¤ °$­p³«è æ?Qœ =Òiès”%Óüª ë¢`*¯£°(â«ë8 묒§ûGÓŒíýŸÃÃÉ´]¸NÞÃ$4•Ž’†iœÊÌwËa™f9HÅ¥nXn6¤Ê"¿ºN󰢯L»æÑìgE/¶çK"bCDûÄyXÄ¥²áØN´Kšæ.®ì(}û<Û¾ÑÁùˆ[OÓàiG(Ãx/½áN†4 Q¹ËéîÆV@¿,Š> :tQ¬}Ó7‚õÃrßÙ§vÿ»âÒàñr•ŸeèõNX¯aa±ãFB 6‘ŒXÝp-tšUZ²˜ytó݇IfðŽ:±€Û^¾L-{Úœèé.‚ñ–[Zd¡"Y`¡àâÛ¡¿\k´‡¥3£Czí4Òº¢û×­H>tÆa0Ýån33)K²óõ{HdFVy`ºvoä(i• —h`¥Xºó ßÎ>3Ï ó`{;šyu©ùhfi s{j·Ò»FiL™*°Ì Ý¹‰öbE7¾XÆKäçU|Ôeâí¤[™Ùãr—¾u‚¹¥ZUÌÝÑßþÞ]]{z Õ¥Yø±'ËËÍ“^è€ïgr‹!Ó†‘ŒÉéêiг¹%»PÁ‚déX&{ɧ¡·×ÓËæÈC'ûtBö [Á&éZOG”Ú  ÇÒ¹C’¾¤42þ¨D-v’1VBFvŠÏ2££n%¢öâ@uðý³Clù>±|ç¶×ƒc i 8žÜ FÉ×Pm¯áÚ`™'ðÆŒ^ÅÝ m.XÔàM¦¶¡3ƒ9 ¹3ÓÌ‚ 460\¦Åtc:QۡбzßšÉvmo¾nøŒêR˜`uõ£5Óл#TÁ¾&juñ†øÌ󠊈­Ð­„<Î<d›¶7ã‹ôη€I^#ج‰v?d¨`þ`¬ÀÎô‡Å®¥i!æ¤-ÂÜA—ŽÎš ]È/H÷ÖtÖíªä±ŠûÄÕJ•qeMFN”îs´t~+]1q•3_·dá;+ Q×2¸[ºN fœZÂèDH'Á(è2bÍ-ÉêUÁ¼Û>›óW·•‘LÊp’ލp4ídD[º(¾MŸ©sËZÍ5öfÒ[@úvön> lÓ¨wI^¤-E¿ÿôÏÿ–¦Þ=Þµ=yQ²y¤Qº$’\±¾—ó<Ç•=μCWí«Õo1ãÅGØÆ³1^eÁt¤S PÓ'ç’Ì,C«9Ðöén——ͨ+³d# "×Y±í˜Ç.¿Zn½àó±Vã¼2ÂCîÊ–,qWY¯:BGxI쀔i¿L¬"èâš­â¦'±mÈØuà¥s=2'Ùqng~> ˸×!çš ¼ºfùÇ÷ÉûP£¼š¢Ù0ÍŠD¼,¬£’ÂÂ:¬4*üØïR2,#~8GÁ“««š"ĤÀÔH&ëÝ` ÕÌ”ãâ,­Ü¡Ù Ý;×xÿVgÎ2…âÞ‡– Î"9† .dÓM€—‘á¶ ³ƒôÞËg/~¤±ÒýåÛ÷uúIÛ8ö§PÜîÏ}GR ƒ¾ó×jIAQ{;’ìÙé ¶*ÑÚIèCÐbÒà˜xOfÀB)6×¾½TMIHÅp`h÷ËNªú0á³È¹‚²¶ó)2;ÛúBëÛМ†E„P$š]^ÐANV!½@ôØÆ€ƒR Œ 3³ù®!¡Dö+E²ÿ’">sŽ9ïéäö·EUaVŠ0 7ènœf]Ü8-º 6›n|=y/¢­Ñ&ŒpV»eØB¾±@|5€mD ]B?JÀIÀà‘Ùiy~ £®Mþˆ- Ì!ŒC8ŸbÉF`‘`½'³qð"l²Ðhì6·ñ1ôœûžƒj`ÓG(ÌÐ*èŽ<ó2Bó4晥ÕKÈN­Ó0jäæÓ­û6ÄÐ2³\p„‘]s7ÕÁ[•E3C#‰ªÊO\ÔΚÐ[­œ B1’´˜ žäçtÓ:1&ŸüJK,'±¶e¤©všq=Æ¥ø@]“tÄçN}òÊœødL"¿„df˜þš$²a³ÍŒÞC^@k)´–‰KSÐÞ5’•F°W!Ì)·úØ{wl„Zˆ ùÑB´Ž†+;5gÛô¡³çö¹•“¤µcƒïÌÞ¾Ðöä—L#RúA‚å½d1„eÆë—R›y–ƒgˆ¼£9ÉÈlÉê‡x#i; ¸³|Óeæ‚ìuÚÉzC‡Ærý‡ë)['ÏYzR– ¥ˆÙ®2qA¡€¶bV¹*y˜u…£Š{ò¹¾Ak\ødÈTÔ XÄ㱇ÞE†¡[&ICWŠü‰ ‰J8J{Ð.Î.D†˜*úΣÙÈtTœS>Œnm‹×SÂæ'xý m5ÒáH–[J à21‹ÑÉ“u±Ñw-e̬KʰI±– 8Bë) î^ ù©Ö4}:Im„¡ŠaøÉàç!÷B^FÞ³úW®=Kók÷9¯Wø´Ê&ÈêìUäéAèÌï/2ÐX?çd ôòØeúeå%0À‰E‰ò åÈ“ÂøÝd·ÁZ×i{ *}'ÀÕM3ùÆ“\V× «dº8šr×Ä"»õ66çY•pZD®]“™Ê=¡5ú)_œÍ`ƶ_9(5gö¬0މMf±J3Ž@6µD3º3!¤ZKVoŠæJí¬®ˆ*Þaé¥â†šqAà$»-°öÀù¼pÁˆågìubjè!j©gªÀ5ŸéÚ½ËÈ2¤\};“SaËÇ Ò[m߬rÄ—hÏ{2Ør©Žêž‹ìÏQ{­`M‚#uj,ýÆæR_Þ"¨àæíÌ/|SÉ"hØVò:´É´.¡[§Øœ‰@ËÐa^;G® úGX©’^á¬y.HÓ¤w´’¹½p!ܶ‡#»Z &¼qÛï9lbi~ܨ7ú;ÇEò*Ç(Ö'S„þ=G߈âåsgŸ¤±5ÀVç º`?ü?×Î/ uÂ9»wÁ¾<^‹|…ùá\r¦n«ó‡e†Ž5¯ín~®Æâ©FŸÉ ~t3cCûT$œžÐ Þ©Ø4Òe™Ò3’;ò>$„±!©[üc¹DÚDÒ¸ð5çZïËùS„;OØ>JKswX¤ß–VõXMˆŒ Jóæ‹éf´[«Åã$5VSˆ7‰lÙ&S—¥˜ávSJ@ž/7K¶þ$Ší¡”(ÙÆA( Ô¿¤Ä@é°[I Up”>O[ #[Ì’-æe-ô3éf¨Wº_q~DÂam¨›Ãð†?EeݸIùkûìë·@,äaš(Þ]ß‘ñƒzÔ[å«_'ø„ß{¯[@ú°Ê•d’‰OÒ‘LCR,êNRqæ¶ Â}©Å˜ôq@øE ¤„y•;«ÞºrX®ï¹Àzlar~Ù_Ñr_}ôBÓöÃr8Ê”yðÑÇÕ”'Òñõî,ÎÏI×[˜È2à¿`P´Æƒb™Ðbo!íK­™OR¢Ö îf¢ÀåÕšsI8“ÿzdIq~ȳÒߤšÜ’Cut›¥Ÿ$ þ¢o"˜Ulùé©öaøª`È£zó*®ið+«ÈCºœvpåx£îgºIšÈÅZ1öP®±ÚÑœ• ÒÉ•”®gä£ä¼h¡‡4«?(ÆövÐ:Òhµp´ô_*E³ÌfĨ¿×º‰ìÔKo赜‚¸´ø¥æ…äöfG¢eä¸o¤¬+z6Гþy5LÿTúLwûÀvÕ,÷,’E›w‘2 ó¸¢uÄê~}ûõço'I&ÙŠÂÖ*¹–†%8Z+˜òO‘ÂÔÅì\­L3ù‹”Ò®ë<,óÊS\O)Ãpkë«/²±[IÞf\ì`}$ÕiXTg’>§§ ó*ÙÒóùqfQêpnýk¬ã’{çdRcjÀH¸4ÅÏ3~’fÒã4 “¼xåw¶ŠYçB£*&u‘Yj%—zÛ¿èPñ«‡Œ’èÈëÿqÄÚ• Dô)ÿ¿¥—E§­6ɹ«Œ.·¾ÔüõT+ÙY ÎpZ+t,VMý¶@‚r’ÿðMÅ´Ç—™°=ü[=`™†þ8–þ,ÆÐWßß|õ_XÝÍw endstream endobj 16 0 obj << /Length 4971 /Filter /FlateDecode >> stream xÚÅ[[“ܶ±~÷¯ØÊ‹¹±†&H‚«üà8RìãÜJÚTR¥è;ÍÐâk^´ZýúÓ7€œ¬¤8É9/C ‚@£ûë 0¿»ùâë百ªâº(ò«›7W¥Žuš^•i'ÕÕÍîêUthZ{½Ñ©Žþ™èä·ãW_qíÛoùù¥ùWž^¿¾ùŸ«äj£’¸Ö2ļÀñ´Oý¹Ÿ¹=ÿÌ×Ï««¦ž8õªâ*­á™Ç•ÎyÔïºÝõ&˲h:4#–òhÛƒaJiõÝN¨SÏýÌ<õG3õWo¡[Ùƒ¹†Ç»¦¾áŸ0Í8óê?ºä5gÿ™¨ã<)yÔâ]Z–—ì@r¹fbívâ N ™¸ÃCcÛtš– £9Zn†ý˜Û 'ö?PE·óä—§`yš'2Nƒéö¶}€^u5ýg¢Šmc;œÏôÍõ&OŒ­K•7ÙšÉîøü(Mì膹›'.ÞÑúú±™€À ̛ɢó$‰,2<0ódÅF­â,«áe~é’Ï:N3× kÎUéö‡~ÓË7ˆWX¸úý`ŽG÷q\cž(â<Öû[Ù‘y¤iotë¢>üt0ðZ– 6ØÁb1§Ôõ "Ýž‰¤ @\s‹[ffuÓJÇõrM°ù0Nn¸n`Lšè8©‹ÏäL ‹ËtôøFgy])ˆ{=ya÷;6ûM ¾]3`ýÑÏ$ŠH…—ÂP,|Ïm¼¶\»ÇAú¹ÝÉ8wSsl>È}X&e‹Êh×2àk·µ¸¥ `ÑÛx»JÜÆ[s‹²ˆµÕç¨SÇϱ9Þµ2èÖŒv }¶mÞÊ®¤uÅÛЌį,ú¡Ç&…4`xâ¶Ë²ÀTµÁ¦{®“רÁÇ#b Ú3Í´-þhæ>«aaCÔOƒŠ˜³a¥Y B¶ïz8(·=C/t°fÇôûƒí¸Ò;F¨Žóí&ô5øÒ×x°¸ðªÈ£ß¡çe&_ÆÒ®ï¾âáD˜óÅü)HJžE÷ p:~›ŽtŠ(ÖïCß¿w#©ö 7O©h‚Š OLH{ä^ÈQ|îXiTÔÒ”¸ßjÙØi¥iô®h–/ïëi‰2+âoáù ÃG|‡!¼o…x`Y¹:ß‘•ùHN`9“xÏ5ßA–àz ¸µíy=Càè»Ni×ÊYë‘ Æ€ºÒ"ç°" ¥Îç…8ªŽÌ4‰hÈlWlð¹kÀÈ ˜ß6ûÙ¥ˆçB|CÚ¡UÔƒ›Î´\»3bG®¿=HÔk®l[ÓG.“ÂÀó@šå )ýËËÿ´höhdîÛñ ¡[²F£>IÐÌÈ`Ë"Æ;¦Ñ‡+6Ï%}ßz%,¾úãu•G7{ Mëèe’‰t_ùi~ÛÚûfû«ã¼ßÛqr4l¦Y5ˆB& $  îÝî£ÓáÆOCà¨AUyú#W½ºÒŠr@/æ"5žðI¯^ؽ}¿¹ùýók¢øÝkáô1_‚`[å Obǹ ë8š@AYeï*E´3_Ö,-*Ý PzÄë‚ÒÆÃèÔ€¸R ¡¹ƒ÷XxuE¯€÷Iùš;¡$#qìöžX…µc3¶ Ø8› £ô㻨2µr›'TQ% ¯özsã`™ÂllBuÛ5*. Uq˜» ØLËÚ׳;eƒ}D[ɵ€Æ·´±è¢‘~™%PùÍ7ܠߣ|H^¥¦~@ð)ÄÚbá€&XhƒZ;âŠ":õ¹xÒqéL|ñ3‡×MÌ‚íï ƒ¶Fü) âPÆ…i˜ÑÐyIƒ$g9°<ȾRÑZ°œe%&—^>Øàïv–œ”š<˜Ö¾‡½Á<ÛšÉu$ÆÃsgÁ…To>ж gP'â}>æß€ÇµV¬®¤klÝuôóL ü‹ìçc Cû~kï–.AÝ<±Ô)LOT?E™X«>Æ d²’Ä‚7v Š,—i/ð]{¼;˜]º ø5ÁyR¯ü´¬Î]Ô³5óh™ÂÖ äªE–Œ ƒÌ‚•y;7QÐ$­5ú–†Ÿ˜æ4 §†~äVNÜi­À(±€IAQ% zzó3[ 8” ‘ÀqaóçXíçh*aþU†¡Œ®)Ä#­Ô¹è<»žŸ{qOèwÇ4t¿Ð½¦Ê@l-YyX½J T|Ʋ É.ýÿ·d¹Ô€Ï‹¸êªðË2ès#a°»¹Û‡ Hòèµ ‹ƒ4øQw¼¿Uö+çjY®à¶dU¨EÜ>,ƒ@n¹ˆÇ5zT°tQÏO8ÿ¨ÐmÃF²cˆŠ y_Û9Í74˜ý2‚m!Î錸BºJÉ |xåz „Q¨òÄ´™Ý,ï(a¡8æ*Ö(NvuG®¿°àݬ BÉæ1lˆ1Ȱ¨FhDQÓÐÔ8GUCá¥Íš·L¢•ëKk‚¯zgˆ_fk GóV²!Æs(ê¤.…¸äÎ  &3,”reÊ!…¥FÛŽÏ5þ`êƒ$,¡–dàîÍŒáGV¸lGÇ5 U3-ÞîÀ:°ÕÅ.›t—ÙóžAý{nÓä3Eä¸%€x/ž¥ßsH²@mé¡éü±êLʰžŸK©l§ýš„{%8Žé@ÂÜõ´$ÌÀÒ¾'·'“í^ak&¡ýð6„—fèŒ,êÄ%Ÿ<–8è`¿ëŽnJí¤&Ô7=Ê3r™:þŽxlÃY4‰¹)îÅA¶¢5¥èϘvÙyß hÌ (ì³› ô©z\áBв. Cj¯Uípž¼a¨z½à$iôÒEÉ[ñU)î<Øw &F¨òˆ$¸š¸ìÐçË»Fö5-š0G¸Ÿ *°bߣ¸^ô)r0»Ò}´ÛåÝ”÷—Ë•/ƒÜYâT®Ø‡§pÉìG¦×Iæg…Ìq:D¬‹S·]sI_ wÂÞ);"^+JÂ^ ,Z¡ Ði‘µ^-zeüpž*¶‹ÑøŸ˜ ê°pµ¨Ö\E‚8¢ÐЗá|Ñq¢½êʯÄûô5"~%-²8¯®Š¢Š ­\ -óÎEs~ŒÓ¼{àâ;_La‘4®cèJiH¥VyHUê8I”KE•—ÉÊÞ(y£“tÆÒ_R%O?–¥Ò‰bŸ˜ƒÎy¤X$ÀèÍtì ˆ ¶¬EÆa™x¯ó ïýˆïýƒ›äô¤m ޹ö~,|Ð&p· †ÜB¨Â”ÀMý‹˜Ò>Á~$Ps:›d•Æe½˜•å/®5¬ôn xÁN²ÓZ†ƒç³w@§3M„´?ÛáœjÉ 'â÷g;Ñ:Ü1’*@îÐ%£èðšúÝuZDb5sÉ-ØÍ¸.K7ãW°2Ùë¬.¸R`Z¸dýÁ2üþpNÞ=ƒôFry~‹8‡×3õt‚ۜƩò‡|Ì7üq‚“à¹ñëb1…Š•ökAìSk÷o(ÐæqÄöfqv6Ê8`çã¯Ý~ŒvâlßåüË2·ÉÍÁû–t¦¤Ÿy§y¹>óÅ<í¬–d¶­GÿqžÚ¼˜<‰«2?ËíxE$;Yš`_#Oçdz‡j‡¿@Ž<"¡sÑÈA¡µ†b^ÄPšY¶V8Lj£Kj¤ÅÅœr—<ÞM¸m|V:’3;­NS^;æŽÎPSÚJû󢄠5N¶)ÙÎÊÜ‘­G²?OïÝ‘ŽÏã 1´Û nq]yiçc@ÅÊX«½½¥€èσCE?¸—ãeH˜B1Og#èâì,¨Å Œ x9lŠ‚›¯×+@:RʸÈfÇ4W½Š•°"ËË®JvRZÅÚÈ'O7i;Ñ x‘Ê~@Á‰=Iìáy!7…;» (·…%É•aX¢ÆQ^¥…PGŠ¥Ró§í÷³Ï‘±ßüµ™HtŽëà/@PÕ5ôtªŽ«ýeÆÄFòMô òˆšù”ŒñßúÔiBQ”Ë~éo™æ (ÅRysÁ0R%ѱ—4ìFÕ@»:Ï>“êû°#K•K}p’êÊ E³ãôR~²N{äëw‹XWÞôüt9û*®rßþ-F Šv>”B¯6[†Ú€µ \9TYœäþ®ÜWq€]¹_ÎÓÀ¤óâÓ%S“¨À 0—Ⓝ”«A²À 9¸éÙ ÕcQ  >w€ÄŸnb@þΙÔ$‰õy°€’ÁIõåaœ$âXÁýÂ:Kï=€L;°áì AÞ äuO¡o-—×òôÏspAó­´íOotÅðC,$%‡ˆ,Ó Â™3}™J âÕ#GcìSÖÊåXWtÊE@sÍöñ36Î~Aô5ö3%ºFŸÏÓ5â² ÎÜw±A¯T¸{–ɦƒFøÕ£4¤»Kƒ¡ %’]æ´’¬õÊFb¿c™‹'° `d wèÈ¢?;߀+|°‘{&´y3XéÚšn?›=^¿[ŸrÔ«c޼¬W‡”õYB)$ŒteÁ91¥OSÀ %wù„÷€òáVº«{*óñ)é†Ê8ÿ‰êA§ÜtS“Nü3¾gƒ]î›ECXžGw ˆ¤ž-ú×Ü#óég‰s6ÞÓYHÄ«¼”„dôŽ€s\I«'ÂnIÞ¼zù²ª|Wé—EE‰€ 7Ðuršƒh ÖÏå÷§ç`[T²åú–ò‹ ¦9óÃy‘ÇÒ|³üÅ3‚yR¯nmÌq jí CÍI(Äé0—ôìð`Ä¢OޱIÁ%w…¡ïìZPW‡y'B÷MîS€â3ÞÁãÕjž½C]}üVVè‹`îÔRÖqV¦«a²ÀŒ!È\¼†4ôr±£ ¯ã|׿ñê†:„à€]¢Y¬ o—MÇ$ÙéSÕ{ÄÈ(k!ƒˆÃRbH\bÒ™\dxU=Η,dÐ>õÕªÓÏŸ²òŸõ©4h„O¿$ÿL \êA âù«¸,Õ¯YäÙ—Ëõ‡?)q¿v‰ +'+4¼^<Í:ÓÜEûòÇ$ª¨aÐü㉒ g%ç^šJP€s‡÷?.Mêc{üoKùÿ%+§+ø¯ ‹ú¯HKöù)±4.ò, 9u×ç¦ArTvÁ,.”>N9¯««ÍI·_·ç§L^þãn‘æ s9»àrþi”/a×–ˆeÉÏU2°0:?ç1Œ˜üC¬ÎdO-g˜Og^É ÛçqæÁ¢oÀ‰;çÐK²šB|º…”I’´’, uŠÿˆ²[»³\d?eU^Ò9¥|I¼ˆÂIæRISEÿ)ð­ô!nõ¢z¿œ)L%> stream xÚí=–ÝÚágqªø‡@×àªÖ§W-ãä×0)†[Ì(ÚëB›hc¯u/LˆdeF¤vY0‹,»±f½`IDHr!®£~Ç…(PZgˆÎpÍ7÷Æ1½ò ´Œd‡5ñCaGò“$„“Á…E@?퉚Æ4œ¢”sô¹8©J&Û˜a» ¯¶çw '«’v«HEÄããiàe8zÜð?¡Tp›40ë4ó}7šEš]qÙºG/Úý];ßqG Ëb®Íy±J'ô÷‹£N&f™PçÇ™bŽsÃÒa/ aOj‰ öR˜€ðïUPf +ÑÓ—/Ö€¸G<£kj˜ÉÆ Ÿúˆd{˜Ötl d­ÓXhËÈT_úà¦<„Å“8Ñæ9°ø°ÊвõÐQ˜éæzÆò@ö%®NÅæ‡È„þÊÅ=f èm`6,‰ë!ݦ"ã,íyçK`Àî‰þ—À Kž¡¤ÁCŒ™½€¯N#þ¿Î!þÅsMÏÌ•…h7#©Ùx²¹‘Æ"áçä1ËNJ]##yDêâùå ül•±Újdûe!pØ+>!‚ë^„¤(BW§Eè€ækE€‰ó"„ ÏäWﲬ_J„¨K8y8{Ø‘­{.ÕI)¢Ç°ŽJó\)2žŠ‚“C΂»B=c¤Ðþ„£:-¸Ô™I‹³ÔRÖ Ìçeî9|ñŸJ¸Ó‹âÿ°E–„êk%¡ÒÖÊ;£ª8`&MÔÏjq»HKLžô¨ý¹~,š š¥¥™ÈH1hU!&ä@°¹¢“N7ޤ°øÅ4@0¸«y*~X2'‰ŒsÒ¬ )M ¬ôŨ“ ‡zC« õdá(Aà/2ày¡ü §Œ,‡àñ$Xß¡ Éb&z>ªBÒ0I{Z¼б( !\s8 S\–Ð3tOu§,MG¥8›Ñÿfhbèɼ'ö ÂÇ&FÚ|°Ô§*ÐRr#H—àÐâèŸé8“ý–J›zÁ4H4@ßNêTd'w7zD’Xäa¤x¤FrÐMì «âä]Àª"NŒœlÜìôÆE~<³qõàt n\ìÂÄœø"Dü3~øÛ¡ocIK0$§§Ì˜* n¬ÔÎ2‡ë÷žPB!å4ˆ‰t—æ[¾ í$З ` X©/ØêèÖU±äâ¬)¾à‚ÖÅC¤…çxîôQbλ2ÐG3qg,„J'+G'+ºjºâx‡c+ç*‚®ï¾GgKÀCêàÌ=fö¼!/TKn|v‘ÿmþ‘Û„œÒñ#¦&þUeåÌ*ÁÙ£%)ÎQFÝþOùg:3\@Âêx„ˆà:ghŸIbltפ'‘’L#AìÖ¨¨q-mÜØ0» ò5;¸óqÌЊ’°o¾ikjÚQFÛâÊ;øÏ¦xƒ¡YLp½1#ánSЊ/Ádƒ|»Ã2‘6¼†×p,YaPªß-ÝÓΦ`®€ˆPÙ­¬Ú ‹bÑ™tƒ”Å=7ÞàŒ²4ôãº\¢»¦GÔñ:d γØX“f´ ésÉ­žÍ%ɶ ¦®) ÷ö÷·,ùèîßäL}Ät&¢[œþ&_º®þºÜÔý@5ý¸Î».­×Ü"SEUQqœü}ÝPS»¿ÛæÝ°>¤I×äK—4"m¦È²Øuô²C(„•Ñ¸È Ð}.EÑv°I©pE†ÂŒÌâ±Ï„¼m»f¿ìöÈ^ s¢&'¶ÄWÞýÿ~ܵ ¦ªÐP6TXŽO˜]Á¨Èd”†=xª—E?·Ú%ØÀúŒ·mHR™—¥ðÁe¢w ‚ǃ Џ†Ü›‰ÏÔø!:WZ׎]|)ÛΧ—d)àÏ\–!ÒSâ dÿ±¥ñÌ/ ZÚ½g:lï÷†rL’F%X®#ÿ‡›¶æŠ†¾£ô„ÃÁ5‹g$ó(O'äwd†9!^xÆGn¡OìmˆB0œ8}n™Áx$—À¤‡žðtŒBFPSïÅ×)XýÍ,Md[·y ömq¿ßø4¤¾›Í^C'Bãþ1KòÖuÝtË}×¾yÉòü#f Ÿj É)M¡ êövU£^(*öp†È–jê0š8º²XK84`Ôáè¯ØëÕ÷·¯þû!¹bW˜Ü¥5\agÃÿ–ÛWØ@}b6¯£)®î_ýÛ«om:åxºˆ(ÿO àï @0`‚²ò‘«'þ'€P³0`)§ž äÕ×xÑt1þâN%@:Q~%È çÐîÍöz\Æ)gG¨71‹AuÎæZå%¼2 `Ywà¨×1<=+ À:êäü ;?MõÙÙ€?Ø®¯g Œ*b>ˆûK= §Q¹ h·&NÌùЂž…æþs1^6ÛY, TIFNbô%Ãù`XÀ!‰é†˜—8êöÕl;½ÍBÒ=ÛÊKì*9?¦¸PDª*f✑?ï7Dh~."BÓϬºdú AØ”8eeð©éOÆû]0ºÅYúR:Êc6áY>ü·ð'˜„Àd*{˜¥1H *`Ƽi²–+0-@Éͬ–d¬Ö_TmÐ4°˜‰}S°UbèD ¶AÔå˜^Š­öÇo :•›¶yó‰tAß¹ërRq؂ƌJ´·öæšýØ2à¾<µͶávíÞ”«"§wÔ`­(ïÕ{L¦eÿÜN`ûˆ¨­&`hD=‚ÀÔ0Ë-šgyåÒ_%s¶!ôЍ¼W~k;24¯‡¶` ¹Ô±ÔÝ¥ éì`½4sÁ£JŸÚïiåpÄ«AEÛM¨ˆØÇ3S³B†°MÍ0¢×76W«þ”¯­‘‘òèaÖfÐOk§»ÙV78 ££:Trà Ý™ç‹À¡júÚÚ§aMÓ&0U ïc½ t.,ëªæóÙCIB½[8L<žÍL!ZMû†ÈJ)Øžž#þ©ÍÃÞR i±ÐD9èØd­mlšZÛøj°¶C o¹W€±To‘³EwM2nŒõŽ"“¡è;}÷ 9p×§k¥aÚ%A@ÃÚ:p¬É.|•Šð xÍ*Xý"mÙƒ@‚Ï]¶¬QYô/nìU¹ò¦¨›oÆ©vó ‘€eg õ‚žHîà]ñe·)—e·yzƒ Ìy nèa]Lÿ½¢Ç|ßÕ@Ž<è6Á²»…:'%%ÖW4yE"­Åùƒèûš<…{›B¯™{Êéïí¦|X[?–æ`ËÊá`õ{$$lòÝ®©l¼¡­_Ví®lìD÷F­õ‘ÿÈus$êEuGÌVáÅÜÊ¥(»(ÄuB©Éñ‚·»ý2}¹´"Éxø‡²iñ(Š÷n!üÓˆX¶Š®ÃI†âÑ÷¡i¼ûþ5IèžVÖßÐ ­Í"âsC±á°„Ç[39—ŽæûÅæh5ÀÂ÷‰Oô…¬ŒÊ‡ªnl(<áž)vDVë¡°íöXÅÆþƒ¬«%·,á³e9¥Pìö‘ÄLµÙ”GЂÁÆÈñ,qÆ:´Ü‘ø‚¦mY•[Ç0ö•e †.“ ‹\¤£ª?.ÊLÍSfg9®"UÏerf±q;Œ Te0(ÓãRDÔ 0&ØvEî´*«cc‡öA˜&œÂ*=À¾(ýRO«ó– ÛÈêx:Þx^0tdÙ\ki :L# Ðæ¤êcƒÛn^ˆ1MV5¾nмµußÒ™4ØØ­)(™ºà¤+I¥>› I¸E8<ø€ ž1NŒÕûŠŠôUrÀì°©³aªd,ù¿YýŸíV„+Å„Jdu´¯Üéb|Ù®åÊÖSy’mAS Þ»êÚÕ þXÒ}¹­UL±Á}óÕNþÈ ºCP¨<Ñ©ú ò JHh‹-9@ói©É‘¡kP¤@QPÁÒÇhÐ)¾ØP;ªÔ:‰~þãûÿƒ^øØŸL&þ sÉÆi§ø™‚äîw¸A†Òi6¦¶UÓœ¼É°“œ¼p¡'rò³qJ¾;Q÷±Mè`æ»`RP¦ÙÜ2‡–‡ÆúYà>¡¥¶åª W÷M½¥;W~DëzãÞR6í µßíƒGOi‹ü“^ô+†ÊÉcSv½À3 ¯yÀX#zZ?£ÃQÒL”& æT@Wžr_ÀÙô¶bê÷ZC3ªï½ÚÉËé§hä™éÑÈ3ÜIX“Ž­~Ï4e1@û}½ob²d?93?»°™A2Â"<‹h_ö”ὫÑÜ©V®[îESëº×Ô{8÷áÁ•гèS‰¾8f*[ÂV ‘qê£}mþ#Ù’ÁÖRÁÂP²#…lðÞ^ƒ@傾v±€Uo·p—`q…d~8#_c Ê;{É"OB>ƳÙ×®˜h¨O¹¥,yð…J¢º §¥ƒºñ‹pd»ÙPX/Å'D¯Ž¤æð#+¿(+²Sdú N3Fã©:Îh¬–sõéŒfÎñ™Šõs÷r>c îæŒ†œ²Œ†7SFÖ£Œ&b•ñ“‡Õ¤žò<ŸíÎ~<ÇZŠCžCïšPâÅLwÄ… N¹$(‡ÓrÁ— ¦Yv¡ždû _Þ¹õeá¯õÜ„?63dx߆üþœòe¦n#k* ¿ƒ+Øng<“òù*xˆJ„O ¢Ny;²qrv`Ê`ÈÙÁc&²çp")äÅ»£&»–ÍŒÌVÇü2ع¤`¥g²Õ9~nÃe2|Ó’ó`ßîó Z/L Iɨ · —ݽK[6úб€¯mo@÷_«?°Rö'Œ%ñ£wÖY`œ³[(,eØàG+ ë±1 û<-•ĘüMÐi‰¸Æ•¬öÕ*ï5lô]ä>¨¸.Z›^Ûܹ,ñaøPº.¶e׫˜Ò¼¿Y­,J‡éƒî£©²ÉNËí«“«¼‚ÙŨöh;n1¶•XÛæê}ŸM˜‚pÎŒñ)Ô&UWk¦gUC77F~­Œ±É z8¹›âCM×»|‰8ûäÞ»ÖïŠwÅpõOÎ;"03±Oþ+K˜½Í´qž7eñ}O·ßýp ¶^ôÍ =Úâ³v›ò¡¬rª –ÒÅbTôÓ;zvá(j„—ðÏÏ–zö–r¶áÍ>=Ñýì«}·Ž©à6ˆQž‚í7Dð¥\bqú û•][lܪ|ÜÀ`]´ØlŸª'øè °Cà,ÁPJ6 \lCÐA"û.TS’Ú­1kjðàJŽ['#êxdÓùʆXŸäö”î\‚›'‹ÑŽöÕ¸ÆR[º¥âo¿d¸iö›"%ÕjØ†Ú _´í$„ÿ þú¦ endstream endobj 34 0 obj << /Length 5401 /Filter /FlateDecode >> stream xÚí=ÛŽä¶•ïó¿¤:™RÄ;9ƒE€`mÄÁn¼»Ó‹50öƒºJÝ­q]:%µ{úï÷’’H¥ªš®'@cZbQ¼œ;Ï…þóõ›?~§g&3’ÊÙõíLÈL6STdŒóÙõjöq^¬×ÏWšÍß^-cóæ¾t·»õzwEõü©ÚÞaŸ×÷»}s_lW®Çv×MµÛº·MŸ]Ï›«UóÒ½<ÖåêÝÕÏ×ýãw„«ÑV1[PžQ-ÝbJßÍdfÓØgxFˆ_ñOyÎ\¿po„g‚³Ù"èx»Û'¦¥$Óf–GªÁ|&œ/÷ƒäA'O¤ä}bÕ4cRµHb Á³\ÓÙ‚2\N´ý?$ö.3¡Ôkì¼ÒÞI¦(³{—’œ¾œ?%ñN‰ú-ñ®ÎÛ:…eØ: _ È>Oâ¹NÛÄÞt€uA¯Ó÷~0›‰f{ïçy¸zÂ`Ù˜ÖdB{8ý{ùSNø¶r²€ 6'yv¸X£Ã†ý"®ÿç[†Ï­Œùÿ)÷®ø[¾MlB’Œæº ’Úm³ª]nÂ.y&iÛã©\_)Î× €Ú¦¼‚ÇÕá¨À§FwßT°WæÖ ’{0ÀT`F×±)îj‚šÏ«-þeóªqïžtWd^Tû§ªö +;z¹/·¶ûv• HM@¤+é~ÿ7?:hX¬ïp{8@´ï-c‡€Dªù;ü#ÝÕþyŸ˜ÌX‡¬O)¢ÍTÏK׉!ÐCGPŸî$—)ÞMáItDØ!ï@”V+ J0Ù¹ÿ‡Ó+ʧ èÀ>-wÛºZY2µ·Û®Ÿ}KÝkOf+÷30€]L¿ ,ãJ»¡¿¿šÌ%~d5(>uý¸ñÏ €|RžÂìïû¶ãº*˜ÈÜÿÒìR´£DÆY°q¢RØÏÁDð]À8"Gã`ëÆ-=Ç>; ÊÀT $Ëâ<Ï,Ž-,Îsz„ÅuÈâv¸Âýq"Åà|êp> EP’ÈÈ[ ®\—Îüá`z<Ù»ÜínŠf í`{û²~@D¯àF8Bþeì‹ÚYMĉ ûP?ÞlŠf‰“Þ»–j‹a¨ ¦dº',eÙ ˜| YîÓ¢ÍdªÃé‡ÅºØÞ=w8––0SSîöW‚ÎËéÃYn øòŒÝ“†È­Õ£H>¿Ýï6øÄæ?"¨«»MñûÅi§Õñ‚mçÝã~Y~55ÄÊ5_îLN|x{ *ª… ¶×Ížk÷‚´žÚ<°–ýöÛovÈ@ìuû{—Òq”¡—1[ÆJŽ–`‡‰…(û'!ü"TÝ£‚*ZZÀŽoÝïÀ6¥„(òc2 ™˜è±eŒÉ„ɨ˜â±<´åª;¿¬Ý…“]Á†ÜÌ-{#e³¿Km¢éšý!3Õaéã*‘‰ÁX¦•˜czLCýl‡ùÉK'"Q:nœjRZ{Í´g¦³ÖKëågÈÝ3—|{LI÷SF£DsÞ¹}s–Q®^iß,5'¯¸m–%œ²Ý5Xç9y]7 QJEÿ Z¨LÓWÙôè1kŠÞˆØ´Œ—É¥™Æ D}ÖT4Åoƒ™ÎDÄ×Ô`õ*µø±ç:Xص4µv<‘3ù«?ö‡Ë_<‡~ú‚T*¾ˆJÉÔúÿE„g!Xdœ 07y D¾ÊŒõ€€$¥¯A†G¼@ï7I˜&ò% (™‚•'،Ќ ÿ9rWQøÔŠiwr8À–É(ñýª”gL3tG„ãHX|'x¶IâpGÂhß‹’}L²÷MÄÄ{}Ô«„–‚³ èW_9åmø~@š$î„„;xÚ»GôÃã¡Õ°yuëšZ—>ûc.ž4ðÀgG±þ|*üßúyƒŸ8oýn]¿M7ñÐϸýöÕ=àaàƒ–±£Éáô%õôáCrðq¼ÂýŸÐ…-àáÓ®ÚZ ~µöÇwgc188=Ü7öønÁè]sÊá™èi!EL86ŸØR䦂s¾ât~}o 0m„(Äv|«¶¶‹]vKè E–·¸ÞãwùüÞž ÿÉÃË::¸uF¢¯dSÕµ=Ýtd”î¡ÚxÏÆ¾)ZW$¶¯pMëw‰cï€f¶Ö™zKùµLÁY/ö½•5úA¨œÿ­´ûC%UrÐ͵9Oª¸àuµôØöûyv«tÆqgîírgé}…d‚-èŸÅ¿ŽËˆõ7<.›Ç}éÚñ`ŽÞß¹O~]غ,üçÅÚ6»0Xâ$˜ñqé28Ù!è Òi½â¦†ÕZGAˆ`ôÖ¾uà°z´h]5èúiRÞ"©³¼·ó¼;bb:žƒ¬ëÜK΂þF Ü–É@3Š|ÀeÛ‹HA7ûbÛyÀäpÝF9o¨m¹FØÎµ:Wfé^žîÛ#ô²>0G«uH³* Ù¤4 |´ÔÌÿë‡ßÿˆþ ëD,¾¸)Ò»!|áL‚|A¨åàGÀÐfg'„×eñ„í|“ðz·ß=>¸G·På˜ ü]úŠÆ£ÙM­k‡ìºlðKP•9Æ’=©{ucx ¾¹W„äÎ!­Üº%õ½a©ë]ݵ>mPÖWÆÜ%þØrÙ»vG™¨$Ô /ôŠ€„B¨ ya˜ÅˆØ!–3Ðà\ùØk·]–)²BŸ<ã,‚ˆyôu¢&¢ïñ/º—Ë}ézV¾ËvçÞC×04÷¾PÝùB±›u1Ãï^~ ×Q—@àèWUyˆz* Èrß¹š)ki{ÖÀ2«b¿rWå¦@—vÒÀ¢þðÂ’¨iK×nÕaíïè+¬›Våøø×ÚõÜ—²Á<…Ì…›'1U#@sãõ}N½Œ´/ÌIhì`iQÏçßþj-£­ÿ€{ôR2÷ÐxëZQ&lSÝÝ·Ê0á­Í-Î,ëÆ™¶Í¡ìÞwzºß­í#ŸƒøjvÎòËæ±–ÏRÛ¿Fò Íy¯†b. …­ûòi v/>ã‚ø·pÐPpz”BÛ¦øÅ˜Äü6RÈ<' ÛÊϨ‡«¦º€¨D¸<»÷f_Øî¿XjÆþÞ$…'KÊñ6ÛðÊ}¨J¸ V•#÷B‹ TÀ_-“[þ.÷}¹s? 6-~øuãÿ¦/h[¢ÃÈ­U5ëµ—2B ìë†Ç'k®àæØ;P¯ÜûSÕÜ»§ £ÆúÈï›o¯ßüý Jø|FÚm28Á,7o>þœÏVð ¬ÖFnžl¿Mgu®gÞü÷›?c*PðãäQäKb>SˆƒÌi| àÖG \@”`m?`dÉÄ7ÑDÌÍB8­&ìk–)Õ~ðJDM— Ùó,c´ëýcbË,ë.îì¹Ébø#ʇÑ5Ò4ÚææŒ@Ñ Ag,2Ε'÷]o ƒ<áÁ‡'K( >"=7YÎúxHgœh  Ðå™ÊÍKH­Š‚iÄO;'¥BG 8H;ËÞÆðÆ—"´ÙFGüÔÀ‘ Ç5bpŒ¸ÔÏXê¨híå“açÙå'¦éœ4Ó¤–ŸÏs—Àí9 :¾ð£lÀTŠ (ãG+=oͱÃ5pÅ}rØø1é}&_iÙêrf¿5uÄÑ-n2*O“¸òÕXŸL-ý_¬=‚¼Þ_mÁ/àë…õ.1d#@ÍË‹/üXfñXKG¬C29¤¢¬sÊÒÓYŽç L;âäâ*u4hÔƒ^ Fþ•DLç×wb·VÌ# sÑÓ ”ÒÌp°`â2’ð¼}c°>ǰTÂZ Yo0mS‡€\«>Lço2O¡u¡<3+0Y{lúºˆ=:ÌÊ 2O¸62q› )‘-Ûdês¦Ÿr*R;Ò»‰wÞJ¬ÕHdĦ0M¥9Ñúÿ”ÂÑj$-,Z”²_,Žs=˜N\µ呺Œ“‚â³/šTe¢ÏÍ­lì‘"™cµò¾ÖÏ. Z,›jikwmsµòáQlt_¸Ò0ö¹w*¡¬ë6Ú—dá®_á 3lX^BReY°Ô\©Ë :ª3°• ëâc°w(P1L–¡ Ñâ™” À^šOפi®¦Üê Óå€%(1I^äVo‡„$ed) © ´´5@ Íˆ+ÚX%ô“™ì¿ tÇ¡Y•mõEC®:„ØŽ±¼ñW“Ûâ Ц߸·Ý>lÝß•M[2„±J—?W6Àn‚Ò |qj1ÊÔ–(8ïÍ×>u¥mŽxd´‚íâþ ƒ!fÎçßÙ´_ûR~.6ë2-~ÑÀâ±Þ‘¾æü žtã‘>“öSb?¡÷Ä Ä/>IÝ‘$8ãçG¿éëŽGG½ Gsaǵ΅ta‹ÿ7`kŽa=ÁmcPÿÇY~$°ÁtN§œøA,ëÓ¡ærø×(r[›§À*Ðh»]"Þ3A)2¤ò…ÅøCJIT™„¤ò)1Á­åkGJaìaBH!2DÈ!™»ÌWiC¦*c‚Žƒcü½O¿¾°@ŠÊ’( `¬5a/h;3@R­Gm»Dæ:™¨bŽCŸa+/·T“—p[;’ƒÎ˜‹²¿x é?ýÂŽâž™ó-’—­MšÔn><•€•÷rzëFŠèmÄÀ¡QMë„»²•èG±çdzãXÙ-=¢ò$FÜ$l%Ï 5/aÂv$…ª{µúîºB¬Þ”3z¥\hJvþ”'”y_rÕCe†÷ê¨ `²éLžMÞxxççê¿—R·`™PúÔÍñyòÕC ŽÙ ù.°¤v¤3—dciŠ ëÞ öUÇúrRà0}—Ùë¦ÂÔÌ8N!™œžJßS­w™]'ë¢àè%{×ããËœsñ¯Ý*o·ËþŠ›Aè/£½šýT®}©êr· ܇èw‚už#¢1xP‡×;¥XWàz»‹iR"x`“5ÝR³3=5âð¤ 2"â [þ¥A¶~‚8Ά¹ÌôXœí Ôè“I'PÂÖ˜:¤d3ÅNÙ5§ì¥ö†Ã|§ìÍ߯i£)ä/¹ðbj¡R\óÉmV)jÉuÆLåÑ8ù—ònJF“']®£èLfCâŠÖ&¬/-¬¸O¬ pIuXq?šAiù´é†žÊgÓ·Dz4ˆDX-` LŠ©Œld€^,Û²m{Í_*Ls#$˜¹Ü)ÁßÛÂ*ê+©è¼,êg÷„âÿº˜Ò7úâ-j/‰´®RÒԅ⋵µÂOŒ•½M'«ô'‡‹Þ•p<ÐÁ¡ñ+lløK‚½°EuPöîªÁêb㟂àyΰˆ>QTÁƒû%ÞÑ3"âÏJþœ’=ÒðD¾ÒDno:yl8É`¼)©ó7Y±},OUáiû%èÕÇÝ'Ñ0wG ;|yàîöåÁ%fd”úä)¼úCo\·‰DÍ»°tÖVú_¢[àH[æ ׃Ve½ÜW~ d)^ù¹Xvåì]ÑúÃ~w³.7aÉzÞ×è)ÌÏÁ–ò3VááŠñ>Dcæw¾>«­bOÖ&%Vóäfe(»ß݆5–èá_Ú™B)]C2M:ê¬Ów(Ÿ!#·1ª^G¶¼mo«×oÍÉ xpÕ»HHÝm†­ÁˆuÝÝM™m ½éP€‡ dtŸSô•’ŸŸØ!˜[öÒ[Ø‘¿±-Cìö+¬áÅ:c Äm ÜSºŸ ÷q€ÙBƒ%ÄL*rL¹‰XŠrm•¶÷ÕV9ÿËÎó¤ o R´5Ùøe_á›`‚¾Þ>Ú`·ÇuS=¬}Ko-"m½²òµÀÐþt_…Ý\¾öC´õ¼v8_ÆXüâÞw·ÇoÝ(67ÕÝcÕ<'E³<^…á|—‰T3nÔ¨'yµ³æ½=¾|s³FÐ]`æ=§ï>ƒ‰õšÏ©ŒÑ[r#†ªLöìä ·{¬“)»¼/®«ƒ<¾'‰‚Hƒk‚r©LÙxƒ;’È §WNl3tè4ðÀÊd}|ý«Y 'žê^pèåpåôYGx à.i/íUxg0ª7iðË:¾¹üûcåoJp×`cg;¤2HxóÈï’ªÏîDöÄ!­‡ÞA!Ñ+‘e+ñ²fæë²I§fJ5©oU{¨ÿ.…[j/Žñ2(B–}þgòÆ(Lï§—ô‰œF®„öHg./jÀŸF® Åäü·öæ¼Ù©ñH9SÕÚ¬-ÆÆ,Õåm¶°Ò„öÍQ¦ì(Ó&P­‹ºv¿?áÐU“Ü»ß6öþ ü ÿ_ >mkë›Êu™¼¿aÓ]iÏaj¼}¢vý…kÙŸ« f.bX­öN|¶–,Å `Ú‹òíWVÿ2ûÀbmuPÖÚî™D85™ný“'ûÿÄ¡Ö endstream endobj 37 0 obj << /Length 5874 /Filter /FlateDecode >> stream xÚÕ<]oä6’ïó+|O+ÓZñK¤f.wHpd{ÙdÇÀ0Ér·l+én9’zfœ_U,RÕìn›Ûì=Ø")Š,’õ]ÅþêæÕß©âªÊ«’—W7wWªÌËJ\i®r!åÕÍæêCöÍ“ûvl»ýõJ”&ce~ýãÍŸÿøÎÌ>Õ<7òª oÞ]‘u=tgUVÃÙÍß¾¦¯›ÏXä¢Òþ»†zÈj>pn¸ð6íPïnÛûCíÀ‘*{¼V,ë¶íúéªJçBO÷ö¸Zqnr)ôÕŠ±¼RŠ^˜¼Ù0öíz¤òcÝm½¥J×ošÞ­@Χ(òÊ”~Š QƒÁм,'0ðã`@š6ð/‰ Ι†ø"ˆÉšà¸I P)ã߸f¥†ÿÇ€ˆÜh¹8ù02/Eåßÿh‡ùñ5œDÁ²á°¾æ:{À ãÙøP»}¼CTÀBSCì10irø,>†áp;4ð„“íîð)áÚþS;4ÔZïp D‚î0PÓÍ m?PÿÖ}ߺ×c7â)â« U$öŽó*WÕ´,s¼ì•ï#MK½¹œNíóÛëî×S¦sUNxÎc™%ð£Ìõtºo®WJ—YÓŽÎFg¬sÉ&\ùœÂê\)yŒÔ1ʲ¼,¦9SÔ—s6½ïR€0àªZ ±„мÏÇ€(`k³Õ( Õûk–m \€®PnfQKcâ³ÞµûvGÜ€MGµvOÏñQK±Ü|n‡ÑµŸÀ?Vš¼àÂ*…I¹ê܉•¹ •ÂkiÎ ¹œaÐñ æŒòÜa– VªK0V —xèé§™ ž‹²|™J$m~‚L#Fnr&Ør“^tN zÊ‹]ä*ÐçS ¡¹äs„vYŠ˜, :"±]¬0vGWœå Ęíû_(¾Û !²OívK¥¾=Ê\!£R›•Ç~o½L†öÖõšuhTHhÅe.Íõ'x)M•=ö5t]#7&ënÇÈ é _5íêÑÉÛÒ7Ãa‹D…•vO_ÕTq³£7ãBÒKF„±fe>÷k€&úˆ¢¬Ù·­ùõªâ2û’zíº¾¡’ƒÛÊ— 7é±oVѬnS7ß%Cs »ùT|€«±éüÆ-dö±ÞpîäêaOÛ{t®´‰b’&‡¡ÙÐŒ·ÂÍú—úзÀó~¾V Tûöã}J!+:Ú1£(è[ º×£Çe¶æ6×eÖÂ(€û9ékOšq•®áñà>™NÞ[-#-aqv° pRF$­-†M¹VÀÍíÆ`uÚ`ÄÔ²®÷T¸…‡ÉÒG`ö àmŸè]ßÀÙH‡õ–˜ý®ï³„6AãÈQÔšì›ÑåÂÝ|´ÿ{TŠí²ñ“›?a·Žz+pÜŽö¶!É@Ýê¾IÁ²ï`…âYóË¡ýhÏpë¤AÞ¢ºN ûYmv}ØÖ2¥ ¥ðûw«~÷ª>ÔŽLÖœ '¡•[{ý3-žÚFBvMØÏÀ/ÚÑc#6ï7T¸«Û-•,“ÑxvÀyÿy’ºâñ*M«†çÐí*‚ ¯Q÷îNmOÍ5¶=(8ØR€j TsgÉ?ùtrƒå˜f®Œ ¡i2a™V{P"ú'j³ÜbÉð»Ð!ð"ÜÔ1IÍŽø+1eéÎfTíós…·õÝhÏ)°qm·É»9‘ˆ…*ejÔØ+3Öž,üWh±­­Ù¶#ëmhÓ|¬¬r¬ D¡!§ÇÄÀh .?§Âê`æ|‘~0a¥žÁzuÖ ÍTZÇL¡¶˜ËÊYÍ,èW³>oHͰÒ׬˜ÍЇ”,š"ÅöAQó)¬„aˆ|LJÂPå‘|Còò‹±|‰–+=©1ß$7Ø(ólMé&©ëÁê}‡ILÁóð>(Ö²eÕ–&qƧ=ϱþÞ¤ÉH¬Z(>ߤ̤¢b/h<©2ÑQ¬,ɆñŒ˜ðæ ÖP‚­ í™«hÂ9ƒ¾]æX´ç™Ï¥g˜Sjz,úhv7¡6'Y•r°–nÂ×ÎÞ@y›< àW•ÃNˆXÚ¥ý@×â"¥]´)Tã@;3ˆüq, 3Î0ÜÎ2d® ;à¡"’fäôÄۻĪ=‰þ'eñôiSÜCr9 vu¯¾¾yõË+DçâŠ]¡Ä3`;ƒèÌ‹Â\­w¯>üX\mà%ì_.g?Ù®» ƒ·Wï_}ÿê+ô$Ç”í‡bÈ`M„˜×[U°¥vª³]Ev}<`®ƒõ£/!Ë"IÞ¦8„@< }f _žZÒOdäïaÇNL¥"ÎcÀ´Z¦/ÑK‡ÎMë>v}¬˜–0°õÜpsN±óãÛæÔ_gî¬$XF“÷AgÍ@m‘Qd[ö=›Ï5ưèE Di jêOô­Ñ„*?٦€ 0‚P½=ŒdºkÒî±}?Ùð,ÇÚ“ \á1Rò.hgxâ[Pô÷³Eaãc=>Ði' XK9¾/‚7Êdä@¡¦ÇðH ¯m˜[‚-yÌ™`y!:ÐBiTbò{ÑŠ‹ØJÂ&æx‰¤ÞŽ> À-‡Ò:sghv5mzk¶OÔêŒg4“ši'[JdûЊj÷Îæ±Ç0ùÞn­£Pbçíümc}Ï’ÜÀRíVVæœ5øJøëÁ¡ ‘¤òŠÏ|L¤8hÐÄOQΜŽL¦Æ`åY't¤&Û1VJœˆñ¹ÁòJÂpÀþD¡€uðsòÊ+Ï3y5ŸÊÄ+XãÜ¡x7 ííöÉ!š197,6 7;³Ô*K39ÚdYÙȧmwÔç¬Kt3s~¢¿Óª PòªÕÚý06µëÛÝ¥¶ô8mô™½Ü'Ö˜¬&ÖÃî;zn»ý=ù=Möóž|½TsaXzGÄBè›í\/Ô>#ŠœBÚÒä@¥O-êWøT Â/¼OT+S Ô¤Õð%j Ißö£ÕT¡$ÑÂÒ¤•‚LXïܚр-•˜³^–Ðî”–®«ù(PuXsĹyÊP™÷{Î`níŸÚ);°«½„Õb©!â®÷×÷úog_P~T|š>I1»–"î/ey1”-ß%†‹töZ\äþÄ )æƒ÷" ü—<¨©Êi;ˆì –)93çüTT ðA}FÆb…ª(&ÄܸÌ Œ®ÄRb&æ›E<ðÁ5 õ®ù;tGP‚*TøÇ¥þçÒAã‘ÞÝk<:Û/œÿ6™èpfµýë„¶:¯¼Ýu4Qðʹ±`Væ?,H-´ÈIÝvnæÝHëvê„"Ê󢌽¤ÿW3òçÍhj’¿ÕÄâ÷šØÚÉÀ9ÐÇ\]•ˆèÜ!ɯêf!xä \a\~h7Ä­ƒï­/+ü¬§,`ä ñMšç!‹s)‡PÈ‘~Z–¹ZæèLîÁtÈóa¥KJÄVréAÓWOÔ@œg€&Pчnþ ØNÐ~M1gñúge·%¥¿ I~iƹâÀ: 0¶¢=H&Ö‚ù§.&Üñ¼ Ñê_Sb£®(ÔÞ;‘ó#+eyqÝ·ŠydÀ“’¸Ê(3ÛCf±wÌõŽW¶®÷”ðÃdöÔ6Û ÝJ<@ô0ºeÇQYðÐî×)‘Ë”«éÙâòu2Š_‰s™Š&aãb¯¹`*Z€·¾4¥ò¾¼t”«Õ)EÁÖNÙÝÎüÌéš<¨ý¤iº· ³M‹F¨-“{=îû†<¿+)¹ÍaÄVÌtšÀD4E´ËoÚÑ$–6éPÃþ#µ¬këe·/çy9NmÄö¦ï»Þ P»'ÚµIEl …Òï” yÌØ:K‚T˜nÔê85b¿ñ_vôÖPM#¤óóP+ŽÎ «þœ^ãØ 8b ¶ÛÌix:GVÜDØê,lÛq çü8lZ¦—×`Åžsy0C9€X¸µQ“ƵB_в` ¥ov>#ˆ ¨™žujÍ@]÷[›Û(²ms7®ÆnÕƒ2ï­Q‰7I†J–g|ôIrØâò"ƒÉôæë­Lƒ¿} -(N§NÆé4Fç]ö4ý¦¹óêeQ‚ãnë³¼ÐB·¥´‚/Eo ¯.¥,˜¹#`¢çEuô“T%f° ›(Í‚¨ýg÷ !„ Ý•J©– !póâ€èO'²l*ëG*lÒ·»àâݤ›×cÊg)óB-óÜ&»žÉå‰XëÄš“1f)xiö=o&ÁÃWPòœ¡ëDpЯ™÷b€ôîSf)!V‘k*dmíÆLÊúTÀÕp7ÞWh^Á©ìýj[ïÑÝ7T·Æ+n/Pžr—8mî[—®Mí7Caø5UNäÏöͽ˅•º © <58´KøÓlÅŒvšŒ^/rÓ%:òF›ÞíSÞ¼¾ÙÖè8Á ;»YÒ‹A¼êÔw·[Û””Je{õõ~ØNWÞ¦$æQÜ4î[UjÁ~ Ñù(5ÃÌVü†gë­åNX¤y8<¨ LÀ­o]r1Ö}/¿3Êd™U@V©™ÉeÐÜçËeaƒåñðônY×\©ìEPô£{w–ü4¨³cMEØÙLa"Øu,Á9z'/ °ðÕ¨âÝû›àg‹è¯UsÓvhŠ¡79¦¥—…Î>|ÕôLà8Y0àû÷.Þ^§0`§›oß]£jÿåk¡hÇÆ\òùÊM¸È ͞˒2ø¶ªdßR“•§ðüï †` «Š6VÙ;Žðr²½›åøJ µÂº©àyÒò7s¹ÚØ!¡tm6?–§¼g.í¥ ”½"½@šH/€ê,'«N ,iÈ×%ª¬~|ܶvn¨ß>AÔf"ûëµar¿i§o#="¶Èɦ ~¼X²uÉᣱ OŽeg°× ÏÞµý0ZŸ AMà?Q1èv@;’tBúm„ýÀ?«`ÆÞZÄF*T,ueÃ!of“P$ "4ÝÁÐÎ2ÄV²j˜×‡aðø©@*˜ã=“…¿ì…ǾùØ’Wjî>'°„Þ['&’ —Ž—QWTŒñiÍ,L6w 5÷$h‹n™ör°m°Úpi³hàY†,j&CmF o¨îCCË;=Öl–`ÇLP΀U5±}R5±2´F`Д'M.LŸ,Ò¾vù=K÷C^§¯t‡ûº:@V"Ú[‹x&qwʵ¿Ò˜h³˜’tóÐöÖK+L6…x{Ø44f»IâéÎK§„‡óš"[À:©…½[}X»«ÐÞºþD_…p·°iŠF,¿*r.:yû«½Ntø/–þxò á†ÂÊŠ&KÞ¥•…½SŒ™Gtg‹MwªØìNó·M ´4Ý®™KÌâáPºMSÇæ~Kbxö»¯1YSNËgÉ:B±÷86›S¹JÀuïŸ.–tâfCÇnòÖ?¦a0“¼Ù!Áìâ!‹˜ÎI'ˆÅ³o;{#‰²:/s¤¸8+´±ã—×¼ÌnOܸ1š£JBÜJYne‰@û2-¯ hß!±Æªs%³wÙÊbŽ‹ØJ¾¢<áçç,ÄG­+ò]@¾ò=PWùÞ=ßÍIdšÊ´°È†Hß+Àxè¬ÓÛtæå̰‘aöÚ‡ Šœ-tˆc}ÅaŸ ½$غÆ9ÕT J%ÔôÖªƒØðD,ØñÜÁ4åGGÄ {\Kõöñ¡&9–Š(0T" S»2€4¸VØe¡OþúCŒÈçÖ´˜äEš!é"+úO@e˜´¥ÊÉï’©ì·ÉsÈæ`ÚÄ›õ}®JÿFéI{¶ú)°Œ^ì×»´_W©™C„󋮿g/ÏEÌä…% ZE&yÅÉ…æ`—WŽ>CJ;™I‚sHK1ŽØÏE”AžNé”Á¢yÑö$tR3È eGj7@ÅðÎ|7ˆS\=‹™™ýÙ‡m8ÎP)sUFw`f¼<Ž ‹Êe—¨“!¢(G=L9€ð—KDu>—²–ø…Ì)º÷Ô»œÏ¾Ê*Cð‡ãLvi(·  ïŸÉd×V8}ójJó~ò0ñÿgqtAœ£3´øJab)B~d0âÀŠJ›ßN¡yHÓC _‰\ÒÐD¾[rÞH(ÆPlÙ´>êJ®X†}ïfþô¼.õ=`4•Áà1©hîìÊõ³ÒßýÒ# o)ý7èô/ä`¤ ™°xrŽËÍgÔ…‡âIŶW@6!üñùmò2'¯Ä…1XHí­aíÂñ˜ÆÞz=?¦ ?ËóœßöIFXÛ'3å+&ž¡ÂðË*L™kÅ"&}™¿ ?Ÿö95JUªå¥ø®†šÿ3Î5©ùVá×ÀþçÒ%ÄËÙ GÀV9/Å‹Ïx¡>Q(¥“RÂÝÍ>‰&àZ™ ´[CÁÍKp?•I¥—áÃøfj_þ~Ɖ+˜Öùä¥Up¦ i…¼5.þeH‰–ª-F»l#ÅÒLvóÐíßõh¨¤ûr•güå¼Ïëæy.¦.Ø‹z¥¡Ÿé™,jÛD—qBþBûkã¦|ÛÑ»ù@"•˜Ì«ÜøÔBåUÿ‰~90 endstream endobj 45 0 obj << /Length 4677 /Filter /FlateDecode >> stream xÚí=ÙŽG’ïú >²1f:ïC‚°1°û0k¯{1Ø3ݤÔt“2ɶ¬¿ßˆÌ:2«‚¬âÑ’í¨ëHFqGFF}sûâË×~X°ÒNnßLŒe6¨‰“†)­'·‹ÉÓýj³f73íìôõWÓÍöf/§ûû%^¨éÛÕ¯7ÒM—ëôüö¾½ùçí}ùZˆ ²œ9&<]¦&yßžqkê÷›é§¿â˪»Ÿ8·_€•fÞ¸úw·}¸ŽInë÷_ 0[]Oï6Ûír÷îf=mÖ‹þ|2–3\ŒI?]­ßÂo‚šÞþíõbú5ÞÊéjWJç ˜4M¯ë*0«Uýþ'n855æ>²bšY2¦!øô«ô⢀¥eÞËú—¯n`–nØ}ELFf¸¯›¿¡¼¨ßS3)¼¢hÙt ˆ!Þè¡;£ïÉÉXæ”èLæ0¨r™Ôrh0¢3˜ßˆi ÍŒÎ0ÈbhTs?}¿Ü.+z È¥$Ç14ó}Û7üµ0™™²Ôú+Éx°ÝÀ€Ì¿"V@J&ZÒ{M1³0uëC#ýÂX3‚CÌ)’¦¥”šÎ× jPœi-ŽL P ]Óx?[,âB¯— ¼ÕÓyõøÍæá!J²÷»—Dg3gŠÞ\m1_Ñ*;¢Âù(*œ;T Æ•b•f1~«¨í-B”ÕgðLŸnË!j&åÀ¼E1o A0+ кÖzãÑpû€$5"®õŸo†11¸|õ$p«Þ›Ëfj!¦¸@v!1ÞžI0 ûâZ“µªÅ2-ŒÿL0$Á(èuÚ¥šh@E8õqˆ4š×W3{bRÌÿ™dÎ’1û#´"˜·b­èZ‘ƒ´bP¿:­T&’™œò­‰4³&˜cö·ç-kôoÊ­ÏŸÔ•$]²§œ~ Rsq¡ø'Y¢áq÷l÷Iú#LLJÒÎtŒósÌßîÀýˆw#Æ=ÀñOL“âÈÀ?SÜŠCßî0ÑÔQâêc—ç¨N2ïÝsQདk&„JÖµRY+ÇdXE9ô g˜OCOÇ#EýÙ'ç̾ãÔÚ-B§–÷±öHFY¼ Œ<]ͬ K°OŒ ŨsÆ?‚»Ä˜ú0þ–W“¬ÑD—VÔv¨Û•-º’d`V¹¼§¾}*J4¶+vid+†Õ†œe)ZRÔ-FoaVƪҟ¼´Yr)ui÷ ΄”gCüЇ˜š:àñÈmT.½Î<¸åäèý±¾ú,*†Xt±çÎ<8*›)¦ÍxSkÒåÕ‘.¯tù1‘.?Ò©RXÿžPsoD89ÎŒ°gI‚Ë$îIô7ÐU´)oVÇ+w¶»_òƒ2¥¤­,Ñ<.A’ `ÿùQ‹¨‰Eô54g’íPgù2Sלé®ý:24A‘¤h |d\% nPrÆ3ôyây` Ã’cXÔ~  ïõÙÚpt8Y–…&L´Sæ; ¬`ÿèÏ…~ùGC¿ü¨è?ì{ñíí ÄŸˆ F|¸Þ*`6€šÜ=¾øå3ZZ[d—ñ•P<Þx^?ûò?Å䯛ßÿê¬;Ëà~ÓÍä ”%øòÊs€h’Ê\½}ª­[ñòf¦µ™~ý´ß<Î÷óôôi³=¥ îœr@È •Q'Xþ£T^+oÅR?ƒàÇBðÏk•_Í@kocæÉg§çÿ·ÓcÇ:=ú³Óóçqzì(§Gýáž‚ÞÄ—ä>ÞõpÓõP—zpþ 7†ÅX[æÊÆ6ÁøÒÅìÏ ÌÐãûõ…Y¦aRÖO¤á1 ²2˼óº2ËšËd–ñdéÜ,“}³¬;Ëàf3JO$(TcDß,“¤Yön»‰)ª‹§»=iIL+2¤uV„”s—ïpÁ$Fø38#L*1Ö¦r'ïüub¼#ÿepMy ½üEzÀEŸ§X]ÁE!AX]D– ®æÐWv(¡‘u‚3 F°ï/õoÄ\y€<{#!ŽÕÞEo™ú.{óÇ:;!¤³y…¾M΋‘Tødf™Ôä(D%ó¢™ÉW‚”û(@ëYUêq}P¦û¼Žò§’å/Æò?¶Fãkj-ЗVÇòbJj?s—'š'ýY˜{Ç®((U°Êd²®³ö°xÁ™£‹º‹_J É$Hb?ñçp_™hnÀ…Ï×~ ® œœ* »„ã ™ð–Ž{Ì$9<#"¾=ÌI%,bÎ|4ÌyqnPL”†Ú!Ü]ÙN3#±«ÇˆÊ µ¢ÂRZí¿’“k…ªOνìÉQÿK+ ª.LŌ͂yœ“–®µÝàjÞÑÌ3 œÀüU8Q@”)-`åh$b ó|V|:J¤­ 0”¤:Å > ¢äj B+jxþØèŽ¡Í‚Ðú4v»Ê‚Š‘G›²¥Fæèáue½dR;’IÄÁyˆ ÉN1+CíoY)Cåo5—ñ•¬Âà.÷·Tßߪ ÎZ°=wË–´1àÐø¾¯¥*_ë×xFççtði½¸Sh!¦‹Ôl»Lç—ûž…L7oªcD•ŸFyeÒEl`Å‚aŒñÊô±4&p!àj–µ{¯Kðºô)v{Õ˜J\r€yA$;0§åïÔ§Òc|*}’Ou†Z‡›‘/õ©ôŸJ_˧ÊÉ®ö©Üïç’×ó©äGö©N²ÌŸÃ§rgp_ 6LØ÷31˜ø|ŽI9}{¡cbsòT^ûì˜|vLNsL‚–ŸÊ1¹D¹!ÇD^ì˜\¦Nu]>Cžçºˆ‹]—G*§£c:^j14LúH0©aއK™‰3‚M}Wób»W´&ƺëj)%XPbb,¨9ï_K«:娹Œ¯T$ø%Ï-Ýs¶j¸³ pÏÛRZÇÝv£m¬ÉÒs¸tåp}ƒ^Öòd÷*ns ”®ý©ÛXÊ%èé¼ràÚÊ1øÜLï6ëÝ~ûtW‡–8ü- ¹èé},Û€¿Xn÷óUÕøÝvSo;k4:Öá°uyœeUía?ß§úïWéYS5ý§]=çîž~Þ-yZFtŸÞí–q¨»Ê£4<[až„s½Ã÷ßðëí¯7&ŸfØ Fl?óè;VTów,ãcÒOïæk¼Ówóm¼ã °A¶Hø|·Ÿï—»ÊKP;UrâT6i~û{ð¥·Ëeº[¬vÿÞ¬Š¹âü÷©8Ú9ÂuŠî •—”lpmQ•j¼3iE… ¼ºŸçT‚O6Oû·›Xâ'¶ÜÎ×»¸ÕOqYðïîÃc+xؽª ´HæTIòZ#/I«yd•zäTÑ%FœPb–ͼž›B4›/êZ³³\»ìï7O@)ûtßâÂrYâ_£Þ[­ïžÕ¬–¬—ª;Åd6¡×ó‡Š×°GT¯Yx‡Ünï±¢‹Q&µ~DÆt8,|Y/¦ÆÜšOqSdïÔž|H׫õ¢–=x›þ¦ TÄГ¤ŠS{%•ö¢e—éù¼ÉÀ·o°$W| OWwéº-ÃUò71erd¥˜/ȨMPæ’ú‚ÌWÀbÖ•,3\þ‚‚eGj!€*’ÍûMÄ̯«ÍÓîŒI »7ñä2žþW€É»Íã»6ß5kNðJÂàNJT¥3‰ð¨À`R”½øè]7”7GæÂs…ŽI!G¤ü‚{*ÎÉv;š'DÓ1÷ÝžúQYŬ°—äÊ`žÏ N[yª3p&ÚzW‡Æ#ÊQab?(:\€6ÖBM×›}ºxñ–nVû—(WcA¿éÑfýð¡þ€{kDIóÅyÃS=&€o`ÏÔ< ú~Sý½ßì–é²ÑæñqÔæpÕÑæðd½I÷*9´Ùà[墵ʕ –]sj'÷”}W sÆwüþ]òE¢K,£wËô°vcJ½Fm IÇìÐ6­<%æü óÓE:qGBÑ;µž‹³¡ÎÉZÎÔ–÷Au+©šÇí­sí7rs[·ÝÈ•<œ¶‘Û=¬ŽÊ^ÆÀ~5F)I£ äÅÞ¸ø¢&°[»Õxó¼q0ï`MúEÜg!}iðnùÚ²7¡Ñl‡Ðì‡ÐŒÂA—'*éÃ;欮÷VJ„âÖ|áYzÚ­l£ä”L{êó«:¬þK×:Dš•wY5Æ¿ü'Ÿ,à%%«}ò>6}ij’F#J&?¼ø¾&oAai€pÚîÉš”šÌJÙߟ(ëÃUcWªQ« †_[(ŠP»0pìâùÑ,]j_¦Fº™RùíƒF·–Q*—cý…èïŒã GÔÀÙ0”ÀG žO \ç„Ĉ ô܉ʕ€¿ £ý®\ ýfƒÉì·ªîºdÊɾ­|À¨KI ÏbÓ‰bÕùÑ3x§žPšI˜zýƒÂUçLC3àÞ€9ÿ[¾Û7qŸ¢Ådë[­Þ$ØU|„ [›ïK­©=îm+–cAzNkuÙ9ü©ŽxèŠwTp:yÆg$YÌ6:ˆòq`B¸ø}Â}Üld>qÝ.P\€ÿ (S6T7û¡´3D0Ç(;l{`—›˜fw†eàŽ|ÌIØõE^`ª þ_Ëî]“ƒ)“ªÎ!‹˪^S ºÀàAýŒß·À4ƒÃúYk=•Ô.±Ã€l#¿¾­¢:Æñ\áèÜá&˜ÞSÌyñ{EÖÆä²WRKsmˆãiº'i±K?hÕoϲ–žípäó¨~˜8¥î¯ü:˼ê(û<ûAÚcº_C×Fþñ”?³Ñ½kB[‹§¤òw¾aɚ厙$°H?Ìvû-X¸oaxŒÁÓÛúÛJ&€¬Ô½mïü¬<Ûô•jŸ"{—mµ“Ú’fÛèwäÑuÑnßÍ– ÊîñL¶‰v?¯öq6øß‚(æŠçviÉO½à'¥â }XÝ&jùµ]íüi¡ä¬e\9êCõEZáVnº*7\9Ç2!‹]×2—ýåqñ ÂÎ ëÙ™…á‚EˆçJTG>úÌïz͘b† ÕŽ¤¨ÖÉ8±Ô‰á‡Üzã-ÀõLAƒN1¿ðp+Um3t¾A$맦Ú‚Óè Ðôõ^>90iÏ!p”\Á-+ê¼,†jý¯S:ë~¾¡ Ø Ú§·¤q¦Eöé‚^ŒÌ(Å„–±öœåòXŒ¬þ(_"ëlT ¸_%iÇ7õUˆhPÖË/ÀìmÝ~R}Ð÷«ÝòÐ7ðÅLD+<þà2™H»/V²¶BS’À*;FÈ0Fh:>ˆ0ȼŒ`';Ì«I²µÊ|"æuõaÁ‹˜×â]ù)x÷»Ä'$$Xã‘Oô ŸØ|R¸ @"ž%.Ru=Q_¶dwIªú½±©­eÆÿt¶B endstream endobj 39 0 obj << /Type /XObject /Subtype /Image /Width 130 /Height 80 /BitsPerComponent 8 /ColorSpace /DeviceGray /Length 520 /Filter /FlateDecode >> stream xÚí™ËmÃ0 †‰ö^¸@vÈ=Eé$}lÒ]Àää4C€ P ‡¨vlíõ¦Hù¢ÿšˆú@KõK©¢¢¢"·®oÕãÇÕö«¬AW-I ¾çóáÛ°o;]ížáé¨ÔñÙpêL:‘"<ôÁ~ª(b„»‹R—û8Z{ê¶³«­3¬è\2‚ÏÕ^‘›àúZUïê„™!.11lG03lI0l„ÚGÐÎ'Á$7I ô$@|Aj‡…Ð ÖÄ!hæ̀©‰(„õ y3âÎÂz,ku6F#8 úƒHÏßQ=R‚÷Ϩ>1A‚d)¨Áq¹æÈÞð|SlÛLÑ Å>Àß™n€qG¸†©û9ìI`ÏÀ­Û”`Mÿ'˜¸a3€‘AíŒIÈ02€©•QAÁ [vÆh ð}ËfвÀµÁz…|›Q„•$`X€Â]W,_Ás.üG&Oƒ° 4ö[(ÚO è„[Tb?1¨G é”±~b`Ÿp[@ú‰Tí:ÚO$»²`ýDºkÒGJ¾º¦ú‰é×÷D?‘ÔÂÀÐÚ8ù|$£—†òEŠ·±Ÿh¬ÕSUD~"i‡•ïÅ6¾w&S‡—z6vZYÞ¹ŸHŒáݹ¨¨¨¨h ýÆâpJ endstream endobj 40 0 obj << /Type /XObject /Subtype /Image /Width 100 /Height 40 /BitsPerComponent 8 /ColorSpace /DeviceGray /Length 153 /Filter /FlateDecode >> stream xÚí•Á € » tf‡`f`„&¬€>‰PcÚ½7—‹©ÐZÇù„0‚´Ò ËH ´Î ËŒÌ*bƒxElð§È Œ…'âu (o@;—Zå«!oÜÍÆUYÞØžãÃõÊ߀ºó8‡®×8çÏ«Öèî ¼!¿µrÃâ½²xwMö‡É4ÙçŽã˜³c˜„ö endstream endobj 41 0 obj << /Type /XObject /Subtype /Image /Width 230 /Height 70 /BitsPerComponent 8 /ColorSpace /DeviceGray /Length 547 /Filter /FlateDecode >> stream xÚíYKNÃ0µ`‚ĺïÂbÃ-z>7‰ ä]Eb3Tê°”tJB,ÈLf'®Í¼UÔæ=Íó‹'Žm­@  (J…£LÃc9í†<&à“\~Ä>Y¥ÇêsÃ,»ñi"L’]s®¢s $Y?f×Ï5sÎQÿþºÞï×oLRlQÚÛ­µÛ;›F˜`*WÍlýÈla‚¡\¬=\Ú$„3Á³Œ+L8|^F&’È Öcã  ¤~Ȳ§ãÆã2W\ŠKq).Å¥¸—­}¨.•ÚD¼Ž%S#Ø:=Ìžyþ.OÓ!ªtg¦Ã£º4zà„I¯ j˜4e—FtiVEõÅÊxdPÃ$*»,E4¹«†°‹æ3ð0ûÝu¢²e®ò &á¢ùŒ‘0Mg“ªìÎÊ/L0 ÍgŒ†ÙÚ¤*ó;³.*…d2èaæM¢2t~„ôkUaPÎøu"TFu-I>Ø3ðÑ&½æÎ§o—­rS;A?¤ÿåÔü-âßåQ¹y#Œ*DwŒ(ÿîÒZs¶o¡ƒWnš^9âR“&½Ö%×åhŒûw§Ù#W–­LÀ´,µš-ËF›­ …i&ÌËö™Ÿc^µsÊÓñ&ié3¸ô6~P{"*;lï.K_ã·`þJÆûÚç§´‰ÊÈk&ø:våàß$Ë(þ¾\J9ì^ÁbÊ!÷}T@ðñ UZ½ endstream endobj 42 0 obj << /Type /XObject /Subtype /Image /Width 375 /Height 100 /BitsPerComponent 8 /ColorSpace /DeviceGray /Length 1378 /Filter /FlateDecode >> stream xÚí;nÜ0†‰¤6ðÞÁ½ A_!•O’ÇM H¯¸ZÀ5Ï`À=€ +%J\‘g(R+‰ó7YØZz÷Óh83ä0UE"‘H$‰D"‘Hë×ûÃç_ïÄaaý¾{}½ûCbKÌT!Ô¯¿}O³…®qQàÕÍòÌÄ‚ ÞŠFÅß?#¾™8Gƒ·Î’졜w«.°{×Ró3x‡%Þð¹ÏˆŽýâÇ;y^Ôã®sjàKf}b–•Á'Xçä?éHWˆ¼ >Í:'gž€S€en•Á'ZçÌÞÜæVÞaB®\ô ?`dÇ0 «ò»JøƒÂø±Á ÂÅŽ¡ã/\A>aŸ…ÝþÒÁ3Ës`{EØgƒ×<Ó¦6ñаÏ/l¹Y{ìCþ4åhܹùvwÂïÏá‘$a/Íh<Ì(Å„§ùqŸÎR‹W%™pñ"»jûtM†·Œxjð9VÛ½ÈxèÝà9q·Õc¡w‚ÏÎÑð›³eO©eÇQô.ð¹9šÒ¶’êêÞÞæhöz+Žä¸W&Zþd‰$÷Q7IÃ;<ìvÍ@oÏŸ,~.ÿ²A¨ÛS\rƒÞž?™~¹”¾‰¼s±Ýêjqôvo8øÖÍlÛ×h-Ý—®¿ÕlÿŠÞ Þp4­ql»Ñ Ô<ÃQÜgzø±£‘nf7Ö>˜R´¯âØÀ÷ަý·y·}Ü $ýKܯ„6{ ø¾mþ¨6×o; 5ɯ— 4F¢7Á 5ñ¨V’mÇï£!ʤÊÃÀCùSçàå9¢±Œ­<%ÍèüI:øæ‡õoÊ=a_&¢×ó'VðÖÑHèS÷ƒ}¾Ï.Qˆ£5íÛüY9ßÑò¶±­®d×6{½EIcïWs¡+çø#øÒÚl&e×÷8ZCfÛúD‚oWNwhtäedz­ý¸|¸9³¿$øÖ”t‡öG^ÎN¢ï›í›u¯o$øÖ”t‡ö!ŽÅX8|u£o–À"Á·¦¤;´1òòÑ‚â°nT1yj °5Eûƒ±›YBFÛgÙìEQ¨»q‡EÝY8Dªø- Ðä<òU7jè»BA9yD–}W,æ9ž{Ê‘“£o ›‘ïhñ¤€“nääè‹‚—ѱ]híΰ;o[ïCF^zèÉnì6ÁÞqÿ¬yâ‰WÏ÷Ø‘µ3Õ®¯" örüGRY;àY-­†æRò»‚>P/з«mñ=p‚‘¸+¼PÅ¢tØyÿQ£cçÉFN~WÚi5µë…ýÈp†¡×É îJÁðq;>çLw´üf­7î :KÝhMfMªCß#¶&³Ñ äš Ÿ}ðMÖÛ×ãlxèßâêÒz =üƒ¯-uÔGñ ýŸp$‰D"‘H$‰¬ÿÖ   endstream endobj 48 0 obj << /Length 5789 /Filter /FlateDecode >> stream xÚÕ\Y“ã6’~ï_Q;O¬ˆ7ÀvøaçpŒ'b½žíŠO¸=l‰Uŵ$Ê¢äîþ÷›x R®{ª‚ ŽD"‘ùe¸yõû¯¬¸*òÂ)wus{e]î }å•͵1W7««ï³?Uï„4ÛúP7Ûë… 6S*¿þáæ¯¿ÿ*Œ>õ&wÖ_ þèæ›¯®¥”ÙrAiF%µÌ½6]Éo¸„)F%¤Îƒ‘]‰ÃþÚʬܶ«ãSU{Úº¤ÕÝoía_oïbãrÜxÈ…éOÔòàŠ¾éF¬ q,wµPÒç¢W i€>*õbcŠÇÊ>ž6fÜ}g^_/ ÒlUm›CµJTg€,ÁÍú.õ•Ë ¯NäÂ*¬Öø y'°P¹)ìÕbTìâZ‘ýG¢]éò Š Ã(rú©¯oU¹—¨nPýȾLT`Œ}·§ã†~þß +RÓ‘o;P‡Ä Aλ–ÙŠÓ‡ûj_q²†Ü¶/Aü!Ê•EþÀŽ–+*—Ëjw@Yh­³]y¸OôÍùÜ*;4®eŠÌzXaõ61³Ð®Sz¶´¦U8àÛÃAZXVÊg÷üt¸/‰š­È¥é'à&±þaÄá)£Ë…öÓ9@9’b ”CÙ‡æ3Š,£'}–ňæBŸÖ±…‚Usªv®[ó÷À+0¤?4·ü[®×˜Ð½j9ŸHK/Ê}üþ°g¹ë^ÀÁz›ME<%¦ÌÔ ›…ö.«‘ÿ¼G®LHQ`)U ì²;BãºðÙºÜÞË»*Aü«Ð‚ÃÁVzYþ·¶®¼V!«>Ôm…,ú@_µÍ­/b§]\ïµì¸Fè3ÆÃÇç$'VÒ ‹Ó0±tr˜ÒÏ "»9h¤Fº #]t_M¨K(õ0âŸMöõó±#ø\•í'Ρù‚ß¶"Fˆ™<Ϻmöñ‹Ÿ‰dûøÙÍÿü9ÁÐJªÜê~$UjsòÃ"뉮”„™ö W°_÷d '¤ Ý´ªä-Eȵ3’'ÉÛÄh@cFËk;Xýt,×-§‘¾ØÙú3Þ.¦“:ÝØ¤r F§„Hn¾§â÷×Òyøÿ »ÿUó0ª °¬8S ßs%fÓOÍmŠþ è/Ü¿žþØ£ŽþØo¤?æý1q³è¶:Ðâ€ÄR_˜;SQ€„*®–›Wßÿ ®Vð@®‹põJn Y +Ò`}õöÕß^ý1ÑÉ zÐæˆÁ…­Nk.jÐ ÖðÍua²òî® °jü­G bÄ ò=mäïû°X®QHyÊØ\Ö‘®'œø?M¶iZriÂZÖw÷„ô€¢ÌH4¡¬ð}å„B 0º&xQ¡ˆ?`eIüA ‹!äªË¢ûd"Ü‘sÚ{†´±½¢ÈÞs ˆsûìCįŠÀм'ç<Æþ‰Ów%†ð{öó'°5¾Û63¼¥s‘Düuw&bÄåj Ò¥ì&3Ž`Yv–_/ò ‘N¯:“ã…:Àø<Æ¥¼o«C잌à)l•BÌ<¼Èdè6ÓìEc?‰Îø|ÏØþàb“)Q9 êÔ•³–äò糑:åê2LJ›P2e#Mõ#­Àòó®'@4_Ä`‘ΞÇ4ê<`–ëÑуj³;œchtFêLýòÇÄ@ÀÖ5v€‚Sˆ¡a¶,Z`é…žOlœÊ£ ÉÚ£ø /RJ~ð Íx¥ÇpÂÂ)þ=Œ­0UÂM¼IÐ`Bß4†c%´2 ÙÛû¤š*Õ“T1æ °V’lÃóúój¬çð½àr+gz°1­«”t("B|‘ÕAÈ97v¡Ú6;³¥4 ºEm°˜OÒD£)Šö®S…æ s¿HÅ—O—vÍ.ÙT°æéÌ“*î!CÙ;Ùd¿~ž|y$Ry±VØÓ‡hªïÑ£¥Rvå4¢ñ_&‡&5¦áaN·]¥è×*KÈ ]äj@‹*®Šr¿äUqf„NæÆ5ç|dçwB_6å´ŸÇ”›Âä“[^½ …ŸiÐõmÚü¿C• dEÊ YŒ#ºM/fî5]"·ßî¾8­÷@z°ÆCºXT¿pM£ü‘³ßœvÁ*Xê¡a ²&Ý7 ‡_>„?îSÈà¢,·Ixª1áßbÛ¡OÚ'û§Ì®)•‚AûˆÉ¿Œ¦~ãZ×c¤{A)27µþÆXþ²Ù&å¬ÿ!·öÙ Ñy{BÐiž´ÏÅÌãÜ%wëÞƒ˜¾Ç#B…Üä³'ùcJÛHÖ‹\é‹6’Å(wDîŒ$k ¢ÓSœŸÇÏç}†s5ÿËŠE‘Ž`ÑcôAQÓ)†»ä´¹§ßð¶tföŠÜ ;Øo|åƒ9–b®Š<¸¦¾­·€ª¼ëŽõ(o³Mbò›þáwC{¨wëøa‡kù(:pÐ,"Šo†¬†3îjŽ^LF=2Œòšã:cx¦È,=Ž-!1Œ–c†E¶ª‘ÚÕ¾¶Ã—±{ø~Ó…cþݾ‹íÅWÇçVÂ0·±æº\#Ѝ\Œ×r]¼$(¨oÞK|A‡àwuŒHô½öfŽÌ§ LÎ’ÌaÒÑ$›ì/‘ñp„1„ °µx¢Ny šÔ!¦JüÁHRŒ¦Œ±ò˜ßýNC‰“ ÁQ<|G½§ˆâ7Œ‘Ö~ôiãS9¿°oÈ@û›ÝÂ2}«Í±år7‹4·ÄsmÄ@_C‹»ÞsrVfíötðö#“ˆü÷ë  kÕ´\l|z¯èC¦“Q'ÏOú×oC;Ft©åÅ{Š'n+üY%t}PÄté ^ÅxÂU¨~!#ÞË€:ævN˜.œy‘‚ÇáñÛÿ~ûõw,½1òn/Û¨XW·vB¡yq·¯ªU<^1D×U„cîË9º ¯Åâû&bùûˆÔµó„,ðð ûLG;ã3¥SÇ£ýÈ*ù–œcñ\CXÕ§g$'q£¹#Órˆ@I f¥òeZásîs„N¢¢Ncëd5]\”yl¨•Ï®µLTYíú˜Ý´Æ„)>ŠG?cÃç"ZHu&\ÝžYk8ÏšN ±·Èë.W"L:0fEEQ4±`C.OP¿ =,ÝA”ÄSäzŽq>ŽÿU2Âû‡ø¡û’ê.A[› ôã?ŸýMšý…ÓÏ®õ}¢Jt<>«Æû…õ¢=—ýí“ØóRì¯sQ¨ û˜-…ÇšÊM§ œr$fƒÝ[£ÖȇQ“P–޹à¡(Ì+ Í“» Rçʤ¼À^6tòz‰út½êüã©£9#©.GŒ' ÌW©Ã>°ói^9ßÒÉ)Š×§|ëx)±}þƒË­N zjT+óË—žte“ŒÃûQ¡²ã‹N=Ńïñ`s“ дI_LЦŒv•ûÑÕ0/zwÄ™}á"œF_³[¢ß˜ÌÔ±gݯÒyõ¤Îó©O3µ$’—^àµúôÖ‹Ô[¾Èá¼®‹çe•I_4ìš:=ê ¶’îÄ ïJ€7éˤAæ/^ŽPŒOç Ù…R”빯û)ÍÕ 0 ô5.° éÐ(ÛrFanõñP±}¯hø® è ºsšX[¹‰Gìcc“Îb¡G"?óõz|¦Ó7Åà|i~ù¯1T †ÞLmÀx_&Æ ÜÌœYÌVGÅç0*Ø^Ò=¼üÂSeG:¢E ûKÈï̸1 k²òâÕZ iÃàyèÚˆ¿ú‚®éZu‰þN‰ÀIoD Kw&цð¨à²öˆç`?¦ÎS°g>Ù.ÖIGªœœÞˆ§µÇW°§²î›õª?˜<9Ð$s5€&¿`W°/`êªÍe5Øçv[ªƒx‰Þƒ-¦Ígé¾z¡î¿î®¾±£ë7ì¯6gìš_Ì®%ÎätÏ-ºln’®ãÍgœÛÏI‹k/¥áLãsÎÜëU(:AÃú…µkã |Oçæñ¶UøíBäùazy æ”1ÑïþøP}ÄÚ¨;ÏYüféPí7-'ùÒ-Œ9ßÞ­«EÛ÷tK fÝ7{0ÔòÍYC?}èk[ÕÉ“þûjy ”ôù»}¹Ã*¤Êâu¹ü´\³¨;#@e›úc÷] #ÝëÁK1)¾­î’ÐsÙ•ï®Õs1 Èøwn7B»·Ö#ÞX¼¥»ÖŽÝI‚˜u,Àˆ¸Ý:£s iGèpšW.œí¶#”ˆ÷‰oGD½)ïêm‰yáã;© ÏÑïøê$V<¹ºgÜìZ팮iñY²öƒ/Úfý3íAô0vG®žöDí=ÄÍsCØ›ñtwù·pG~_¶õ’“Ã…FôH%ªøPåxžqøþÍ^¨ºá.X^îÒwJ À:ÖRáÍõ¢˜ Qá+f;Lø*#ɤkp‚÷Ë8ؽå+t¸9Yà"1|fitƒµ¼ÑmJWø¸ý‚o·a ÞŒ.oQ· _m;ÈcÅù}ãüXîvë¤Ńzbü4‚¤[—û«mN"â½–£KFã^æråç·GÒ9¡ÐuÌÜßEÒA‘t80°iØñ~Iú‚¼VB7”@zð<Óc7¼¡½ÀDtô¥}ÔõfÇd®mõšïÁl™¤Õ긎~ªúÀ¿‘ì ùå34øŒSµå[Rðv˜·#oV ’'ݪA1-]LKÓE"ŽÏ€(wöÆ@¡s;DC4»ßg¤ð¢¨ãûn=ðцSZ‚5!Y½]b<À›¨ß&÷óHÉA½³Ú¦W~EG¿é—{,Ì¢O5D?U¹&³ -ýsä©Eù5N9^ò‚çлD3—²%]y«†s(n›rßÔ¸k]Ùx/®‰Îï^tsf;ŠsÑôšªMÓ¥–ÍìŒØÇ2^}µªAŠl—1<¤Ý©G/°{©fa»xTˆf†—‰ *kAœƒ²8/І;ðBÕí·uúX×2†„„SÉÕ‰Iä|ÄÂjƒîbLç¹F…Af8‚¯&à}+é˜'Ù ZÑ›N;²òÄe/‡àY±š¢†s7üÀ÷ÅK™hAæÏuɉñÇh‘Ó– ]ŒJMû.òêÿ,]³ endstream endobj 53 0 obj << /Length 4024 /Filter /FlateDecode >> stream xÚík“Û¶ñ»…¦Ÿ¨‰…o ™N'ÉÄiZOÆ×Iglw†'ñ$Ö’(“”Ïίï.=HA¯;}IóI.»‹}a¡o¯ž|ùÌô,±Š©ÞÕMO*¢,ïi& ¢w5ê½J†ål‘UE]Îû®L’ÍGø`“üC“ÏëbÕ_Þøî«AÝTÅ|FOKÿh“f’û¾qñ¾ÏL’Ïûo®þÖK{J‰•ÒO×Tm,é4³É7Óº|ÚÉ’[÷<ÃOV×ËÙêùºÎçÃÐ@<|—/ê&LËþ€é¤\Ô±én‹fXY™¼¦\ÌóqÖì|¯Ÿ²Oð·ù"Bir;)ú4önøº¨ñW$ï–E>­ò ˆ–]OCû¦¬bdsýÆ•ŒŠ:›aûº/³Æú~ Óbø±ox¤†&ϳeU¼íK™ƒp ô´ÕI^û¦§9¸)§@|;ˆ!áùeðk\V@“™o"Îîa8-ëe…À`úa9/‡?xý:•iç¾ñÍFd&NŒâ¦Ä_‘¼‚U¤ô @ _á_>£tK$ás¦ˆe&Hã(‘&ˆŒ#IŽŸ<ùþêÉ»'Ʀ=Ú3†h£zŠbDo8{òêMÚÁ+À…pkz·nà¬Ç‰5ž¦½—Oþùä[Ü ­©-#ZSH êç÷Ógav þ€Ѱe’£¿½¡%œ"bîc¤Rd‰œ-Wcþ  xòu@•Nž¹Y¾Þ…ËIÙÜ”"ývi6´â‚h©ƒRM„¢mrlO©)Q\÷c$ð"Ÿ-/»‘5¥Dˆ5‚£ünýd™G—b5[|¥HjÌj€'u^/”J "Rž@r±ó.Â7bÒm4À-´”`›1Œ"³Lò—ÈtšrÂa•M7ÊÇÀ }…äÈ"¶”*»äA!‰}"„15tYÜE±©‰_wá–Òöº‡årÞÄ×-™9aݺ½l7H¦ÛÓrîÖ´AÿvV¢ Sæ¢xIôC"È3<–cÖ²Ã"Sj¢…Ùðaw‰À.ׄ•1â Eí]¿{²þŒÉíyûg›"îWµö)hÌ&to4Aï„!¼Übg‹¢œÅIÚæ9Õ’0Ã;ö}RLóȘ%R«“ô“!Ì®yåìÁ%[ à#S‚‡Á×\ŽÌÒ’à?G@L!ÕyÒ+ìÄ÷¸3ºå#ÿçâÃ2 ¡³9{¿m1nÀ’ºŒBÜcm¿†n ó8¦X lBg¨+øïÍ­‰pBCÔÅF³T ðöDÛ`·öxˆà„Ja™Á^7{t´íì’“LWÊRÅ€¤DRý8¶J›  ºÖcšI>ɘԀ‰êýGz¶,ÿ)Ò‡`ÍÀé3{ƒ±Ž_%ØY‰‹ˆ#Iºí³^f)÷EXA˜Ÿ£iA‘¥»`ði &jm­!šv8q|+~Z^rl ûI#‹÷Ÿn4êÞD!çíøæs³ðl™Û£Áa.ÔfGœÓa@ÅNe±¬'‘Ø¢$íAdFxÊîàñáÊ¢)¿x€'v¼`=#j‘ƒuK{±)‡°–:/Öʳͧu,€¥çДkT— )‚¢VûY¯³áÛˆ` ßN>,;!Ó€qàW2õIFqR’ñô7x—.í€7 Öä|àÃnÎÑ×¢çæ¸ë&ÊEð;·tÄÑôöÅ4ÍÅ’Ú»|AÇnK݆0&•¦­õÿÈ¿nk˜Aò³øëÅmÀir`¯ƒÕˆe‘ÚÌ‚ÐB2v—´é>‘!RúÎÓ¿§ªµD¥ßé¢Óy2Rœ#¡‡4Á±àd ­K¿œé~Zµq7ÏÐù‚œþ‘…½DV=°6YDµ Øcžª&Ê%L·°ÏmÔ>Ÿ¿ÚvbŒ%_øŸx´¨I*d›¦­Ô,Ý›šÝ³’La‹‚¥”šà†þ‚¥%y YšÜÓ)>Q˜è&¯|gSú.WU‚Ùµs]a‰¯; ý›*ŸÕ¾ûù78ð_Ä÷^MòXÈ[Wqó mX‚e6£<ó WÙ*'€ñ 4/øqÃv•—ÕÆF=Ìæó|äGÌVéðåá£:|ÔL²&^›3Ì리Є¥°W‹ÊaÍÌRãG$ÙðãpZ }ï¸Ê“ú+ ³Pž¡¾G‚vˆ; `»ˆa• ÏØi9.†æ:…Laññc‘OGµÎüÏ´˜çY5h ¬Ê ý4™ÑײÀWß•UjßÄfÅ 5ÄåM²E“;²©öÃ]òµuÃîU)>דr9ùçüƒ/•ʇïp¬uOk±ÁF6]Aš†Õh}˜_€´ÜUÂMóEð^ O$X…ïÖôdž§¿ã0MþZ"=¾¾²¬zºĽÌÖ>Q‡¼£a•ÏÀ¢Цö}Å|»¼Âú+× Ýu9ËoÝò…aI`üÄB‹ÔÉւ9à ¢€¤˜O±6Mk䊗Š|^ûwÅSåÓìêZ úýz z9„MTß,§¸lc6¾åŽÌÔRÞy>«ýãÌí$|ZK"6œ"’bø®-Z`sEò(a½¬ a<+„Ð~ †ðýŽ”—Œ9+G–¼ÊGXšhtò ø´§k~~…0ôãúãØ¤Ž#L¦›¹p#®¾ßüš;Ó^¾˜e+Ù“+e6ºb4x‰uØïå G£Ñ4ªd]±¦«ú@™¼[æË4ð Ú~^UÝøÆ‘ðÛÑZ±®Ê½¯#sä}VSϦÀ‰1=¥ŒK¨8\&Y0nCK*Ãò%›åÅ­Qh3êÜ¿*¯k§}+˜ý½«D¬ýËižüÓ2ô4eTÁ{-< * ƒ$ã grà7lÁ§¾ZÕ~ºæª,žAD§­O(¶¤ÓmëWMÜò¹é9È—«eu5’µ÷q‹˜¡W]2Ñ9`9p¦ÈÆ{ó „'-«|_íåÀ¢wΜ×ÒKŸ´ÉGuÒÆ¸Dš÷”ëûµqô¨î) œ1ì ~öH¸H‚Ÿƒ`=Ì¡Òcpøå!L;.>eôñÍ—@ùÜ?Ò³9vñ#¢öÖu6ïeì‚”ÈÍ·؆€¡éæêÊØN½näÞ¢¼¶æhÕLîÓ”S"„вÏÊ÷|ÍCÊîV@x »Œ¢ôØ6ÕÈrÏÁtÌ ¥YKà „÷93⌉fMÕ'<‡ÛG'vÊ9œP¶“ºs­ ;¥ÖD=Š+¿ÇR“óŒÀ‡hZ{·òä¸8¼‹©«­ÌæÎÑBTo¡ ÜGÜAoÁ¶à ÑN´úãÍÅV¤ c%–ü^­D N9HÀÅßVÁî]g°"©ÏîOR„$˜¸H™Á>sªö’q§O1€Çè]áí¼w~Ù¸d³Æç3…´!…æ;}^{1Éær·ðì¢î²ª›Á0ÃL€{ßÉÐá×åM,״ΩÉTû+­ø°‰Ù±…ê—s˜5«`±ÒòdY/!ÿ¾\%ºÃÐ}‰äÚç5!Úv™c[Él»ëðûüÇg8ô…o…”+>"gr2&ý¢,ùÉ¥ØB>nð<_4^ àÐuF%Üìb㓤˜Û ©¾kœC0•±ÿÕË_ }ƒM©÷e4¹»âë2ß\݌ׅ£IÆ8ãÖnˆ4]efáÅuæëØé2‹6Ü!ÆŽ‡.—¢IÓÝœulV$g1‡d²Ïãw‡7•@¶:V8­ÉÚ༈ï}Ö‘Ð|=cÖ¬}Ðè0êÊ8ömɸvì¾ Ï6FQ@§ºcyﱌµ˜ÇB+J׋ø"¶Ä³˜uߪºðdz7ñ.4sïÖ‰wlŒ14q·N$#¸hM˜8´ÀVmæødî€ ¸nkŸ&µ2qÛi9CÖ\ûsˆÊ¿p W«º‡Pø*¸Q*?z€XàZ+#Z¾•GQQ™ä£q^#‘IPÍLË:¥?âé ‰ðõ„Ž^üL}×öþµn]ê'a#?ñæþñÕ?[þÆEþìÉ…½þ^À¦É´¨w̆úÍkÔšµ š,(ÌÿÈ&A)Ôuq½R½ïûRáùUÂØ¸‰çêC"v½Æ×Ô·“¤'\Sç’ ¡zÌj"îuKEY‰Yºº9&ºôxŒ®![ŽèŒ#èXˆSÁ?¼:ƒÏÑBÇ4ÙèW<Á{ó»î{è»T^æªü*ÿË€à=Ìÿ E„+êØSI¸Jÿ2C‰ÝJBª`Å6߯lŽ´ÛŠ,[.ìDÜ`Žu¾úäÃy~ë(µÈê ÑM†=Öøóœ[öéÝqÊÎͲŽàQw*?_E%ˆÏ¾üÅ‹gÏ^^õµNÀ•ÉwÆÓXLÆN½àn?ùM¼XUÔN¥=Z`©Î(°TŸâ|JE49|FuxÃ,3¶G#L@ÓZ}FYæ©úB@li.V‰±0l¥ÇèîÍû]´ïSFª/SE*î¢õ÷ ‘Ò$¥úÜ´Û'V™!qÑŠÜƱW/~zùâgT‹W1Žs’ ~,»eÁÇ S½mWƒîŒÄšGÿÉBNÛ)ôt¹%÷çKQþáï͵§ÇÉÀ|ÿËOΪ½|g ÛüYÆÞ##`Œ`ÍÄï9nnÓb[EìÈr' ‘—#§ÛjeúN€Crô’’8¨“çÊæÑËß§¹öñŠBµ­¬Þ¬DǤƃOsÜÊÂÜe<§b篮#½C@+ÐxÁÖ²ø Äaâp 9zÖŠ.®9Y¾Ì}Ü‹ÊWÇàHða~ëÚê”xÄ0PD¼½þø÷ ü{ȧ Q/ùç!ôÎŒ{ i]|`.üS½(!!ÿ`˜U:èwÅ!à endstream endobj 58 0 obj << /Length 1961 /Filter /FlateDecode >> stream xÚ½XQ“Û6~ß_¡Gyfň"EŠíÜCr×äÒél¶Ywîf¶û È²­;Yt$9ñþûe[k9ÙÜ5}2 ‚ðáHùÕüêÅkÎÃŒJT0_©bʈ@'‚™4˜/‚û°+òfö0ÿùÅëìD1‰Y’è &ßã4&Ñi‚e:t>Î"¡ÂgW:lgQ¢Ã²ÛÕ0ˆÃÞ‹{»í,­õç65g)?µÉQçê§ùÕÇ+â8àÇb+›«û‡8XÀÚÏĀɂÏNsä‘0¬ƒ»«_¯^!i<6§„tœ12º´m™3‘„ësÿ„L²Á?»ëW¶jV¶aÞ8— RœI%'±ú=æÚ  …öÒí„}Á„Ξâ†ä‰’d&ãƒN22ÓÒψý#d8 “ˆAia'≸LjTò\ÚO8¤Xó£A9…œ«ƒWHÌ“‡›)¦$Х鷑óì ~É 0/žÉA -Ç¡{§Éå|?á³`©0ÏpúàÔÖSaïÙqŠË¡¨Ô±¨²)¨2Î2©¿gÄÛ\fT&ËÌ÷ iDüÿ7.%ŸÕ+Tš0ɳ/õ Îf\»ûJ³P2†:dµZ^ ò’©zÈà€“zjêø´>¯¤ù "='ÊÆÍA§_—Í™R Þd“åñ'Ô´üö.7È/ô#ý$‰#¢”³äIˆ_§C×çý®›‹ÿŠØ¡ d2è¨ó3âaío´œzBJ5hÌßÝÞ½{?Ó:œOà“ -]" h c·»nâêM8ã‰ú„N»‡o(S AL_»"•¢y©ž‘Iù} ñ9,'ì”Å7?ýë³õòîîÜbd4\ÀÚ?\êCŒohÖqÚvQ¶4ì-þêðUsß »t”fAó¼®I³_·e9ÈV¶­úõ¦ósPÆë4 °›mÞ™dNÕâ0l®óü|ªlK¶¡ßO³TÁ+¬²'(ê¼ëJ?±K:dÕæÛu7eö-($I¸ëÊŽš&‘7Ü3x¶®g<ÜÀŒþKªÝ®êK.@ZâzW´Õzû«†Î»ÿû›÷F=°Y¤yvOñÐW›m]n h½¸?MÒð——èÀo×ÇYþÆiæ€O¸4Á>:Žãœì[Üö µKR¦qÛUˆ*Z×¹ Cö³€›„ʼn$OÞ¼{ÏÄ|™°Ã°ì ´œ”˜ rå°Y ̉ѡË.,!ëõ£’}LOUçê’ĪÞÏg™MËõÉ.PÃn}*Èí%r …ûÝjUv=ÄÓùÈ  ênExdË}ÙèÐtd8'Œt¸±]O£jMÙ$“¶n»l â°Å›¬ïhâÙ /XÚºv¨FƒY&Ãw ­¼,ÄGÖ ¢›rå·ä› ›p›H^<uU 8|à°†z¢Ñ¦Ú#QœM—Õjíî\q ž34©üm¢ºjJ ô„u‡¤LÏÕª©ÅÂé•ivj†F‘T׸°®0ϸÑÓ–Óìp‹@ø&,SÙYŒOBxݘÁ±p†_² ñ#VüÞf ©_Üç¹Û%›ªALY¯Ô7mµˆnþ™·ˆ®"nn‡M)¬\)€¦í)Xu™šjwYÜ#ÒëPÆ4âÌ5[øõ]„&kgGŽý8õUÜ·Î¥Bt[ÛªŸ2ë\C ®ûvWô»¶$¢ h„½RH¾9?Š€›¡»<úÑæC.°»_ÛÝ MiàÇv‹ ÆUϾÚä½kRRÇC‘w¤ç˲~lì¦ÊklŠq ‰îI¹Ü©˜ßYa#ª'®;ô¾;Gè«ÅÀSPª:ú]æ]e­*kRx¢>;Á§#=$\Ãî‚”Z $ÉŽ‰Ä¹Oü:?mà¸ç£¿o@‡Ê®®¡GÃ@Xõ¤QMÞqé¼Y¹f¥=MðR<´»(AˆQ’„nØ z×cÝ¢ªíhÅ7-hß×Ôe ·‹Å\Òß%Z†rÐê|Ÿ¤ZÂUgɵFœ­ê©JÃ;÷¢€•¼¦sdxsûoc~˜² ¹Á›Àrdìñ[8 ¶ó¡uYl|«ð­Îß)¸Ÿ¨„¸F%G$’ÑšãÍÐwP<…c`µµíÊ“‚—‡rC+"TpNÕ6ÿ)]¥ÒkÛŠÝùzÏI¾m)ôJëà ò×'„  ÃÂû-*rç ÈðV—ûÊ!ôHÿm!7p úÊY!±áûûÉ×·H2¦¥Â¯ïWLdƽ·ãàdè–x’Ån&ý/H_¼Ý¤Á?,|ÿz86òçF'»ÏõÓ÷,ÞÇ2ðÍ"¹÷uµ"è ‚ô`°LÃW£÷$® h«/Šk’{®QFÄÐܶ†–N¨ ROÝÑÁt)Е#áS@>ùú¥\öÎ; í¬Ý`‹Âmp¹Õ¥÷¦îvEmW¹kUA Nyì˜ bKw!¸ÇÐtÊŒb1ÿ_¦.&ìpìDº„û¯Vk¦´9Ï–ú^ÙÂ+ºA„}áŸöt» 9‘91Î\Æ@4îðqæ_Å*K 2fxFN˜!©‚Êæ* endstream endobj 54 0 obj << /Type /XObject /Subtype /Image /Width 1280 /Height 480 /BitsPerComponent 8 /ColorSpace /DeviceGray /Length 14808 /Filter /FlateDecode >> stream xÚí |eþÿgõ÷],È!÷Ò¿ ¨´”BÓ6¥”¹‘CA@AZ\„”È*ÂÊ‚®ÕUÙÕ‘«È¥å‘B¡´BQ -…rZJ¯´I¾ÿ™iÓ$mÚL’I2Ççýz1}Z’gžÌ÷Of’ÉûJ]ú×Zq%3r%¶5ÿê¶.v–±üå±±€»Hîf¬Ô.â·¼äK˜ 6°¿ÖcM,©Ïý‡1’a‚K­ jÀ½ùW·uE¯tëöVS‚uðÏM Ø`RÑÇr}¦µ¶bD²Úp­Ù“oäLšaëF”à ô¢´¡HèñÔÞ¯ëX>êë‘ñxs[`Ý^[7¬Ñ0šoØVÇË6Ö:å ÿQœéL,Zæßé=¾‘3:,lLBù'Óµ¬tÚÙv­ëÙ+dU)rë–"äž‹X7ò¡ƒüó˜uîÿL9 ‘u{³Öäöÿ°nìÿ!tÈ?¬ù'—‘åVÖÁ?Œ ÿüÃÈòÀ?ŒLõع¨(òÀ?˜(cŠÿÚ»[xnÃçŒíÖmlÑ-£ ïœFµ^TùàLT‚~ïè(?’Ýð·ßl0l|üVev‡P­EþøÀÿñ×ß9Ænø¸E\kÁ¬Ê2Ülà¶’ ÿüƒ‰Ràé³ÜÒXHäw‘kïÄ—¡4}Ò@ä€0QÑ<\5ÿÞÃÅܲèaâ¿$ôðó·l–DŒkM"ÿüƒ‰RàÉt¢ƒ¬&òKç~O¯xýýu@‘ûJ‚üð&JùóL>î-®ñVåû/‡_Cþø•M~·:2\f7ü­Ç7Œ›Úß®,ÃÐÝêÉ?I_þ©§Ö°Ð㾡 ð{ö3¶u}t×®c*Ï¿:DiÍ´É–Åþ€0 ÿüƒ‰ùàLÈ?ÿ`"@þøòÀ?˜õ†‰ùPo˜ÿ0€zÃDø‡ñ‘ÿ6ò Ê°NuèwÏêØbÜFä¨ÉÜ7.óÍ/´]™cìÏLöO‹i1»ÌDþÙûgúÞi#ŽÝ¿ø)b^eX§pÿîʤÞ0Q¿|˜±ï}äP€úã‹z5ÚüÂ7~ÂVúò 俟5é6ï€N.õ†‰’Øøs T<Ô¶Vø òxË¿¬9Õ&z}ã?Htùœ<ÜåÈÿ§œ;‚ø_ìÿyù÷ëÊ·åXo˜èõÏ.ÿÊ©·k>»hǵ2Û9ØÑwo#ÿ€×ü+Û<µÝã¯îòL½sföéò\Vµþ5µÞe¹¿ÿ ¾QW%æŸn÷S̾ö¾ù|1é&¾îX?[Zü‚ü^ó¯løêtÕû§ãdü*THÿ{L?ÃtºÐ½\kê£qÁ+0Qðç_±0ØVËþ®},ˆUiÁÓÝ5KËêè›æ¿àøxÁ¿kEÞ©÷í†Bú7ýuDÑö‘\«q&Qn˜¨(Ö·>'·¼uò§4qî3MöF½7&ͬ­ÿ”!!šÈ£Õ_[g]mK•G÷é]`¢’(ë^vyëdÏ?j–œÐ{¥Þ_0í«íw2£õ}³”mœìšJ”­·Zk}›Öq­ÕW2#WÂDµü"“çµzë/™lý—ØC©aÜÇ7§¸_/ùÒ†Šóq˜ ì¯õØü+©Ïï9F2Lp©ÕÈL ¢JÌ=‰V¶ÉÃÉ¥‹$Pïì&5ÿv± »ð±ôÝ´ÖVìño÷¿4{òœI3`"öÿ0à(%_Ž}Ìö! Ôûv³ŠŸûrüç/ÛXëð¢­#¸V3v§õnS˜ˆüÃx€£ùìª÷ë}øOå›…M»ñ?3ÙÔÓ½:‹mm ÏbwRÓ–dX®uW¸®4„?;1*žhm?˜¨Þ>!×üÃ;.râb©„j½{¨&tò=¾Y8Šÿyj\P`ÏüwŽ£{k§ä?6ÿGËü;½Ç7rF‡…ÉAþ)ã¬À;Øÿî¥`ûôömÏ)¶Þ0Q¶ñÛãŽ\« ëäÂ"ŸèR\o˜(1’'Õt;ÃäÐ{²­2¬“‹׊•]o˜èaì\u|Ƹa%9Ñ¿P¾U†uÒö¯ìàü%ê¨7Lôæ&¯yÕq[J‚üÂýûxH£à·“ÀÍ›ÜöUÇ‘À«þMÞ˜«šzÃD/nrÛWGþoøgdÊÔâL”Ä&·}Õñj%áOžrhüŽúwëë -˜Kjñ&z}“×~Õq{%¹ÿçb¹WÖIÌ¿¸ÆÃ×ýþ¿n+òTÛäµ_uÜNIòC^1 ÿ€¨þ-ìòˆâ_mW¯»$yÁ¯e_eX' ÿ wÆ.uÔ?äp;WŸ®åþv­w¿4GU†uÞ÷/·mý#ßOsÐ?äð&ó*¡Ê°ÎûÜœù]!ê å…ABU¶óU=Ì:(IÊ2x|È? ¸*×òU=Ì:(a2Ö ox)‘®RËWõ0ë t™ØbüW7‘20ù'j¿˜uPä•åòO=¤}*Ùü샒ææWþ†”AþÉš³­¾–lþ9>ë êé)®ÎëÞxøÚL¤ òOΜjõ­tŸu³®zЬEÇô^[¹ôë eÁÉ–Û¤XåÊ~1ë ôÈÝŠ”Aþ)„ògöH²Ê•ýbÖA‰éò㞆ܓ΀À%t¬²ÅW¥0ë ¤ˆêñæ¡2¤ òH³Ê°Î­”Á?˜jBÿó’Ð%ð&éç>û™sÏ7é:7±DŠîáó_à<›.bÿØ%ãß9xý…‰Šãó6iž¬ò¹9ýZ4ž{ÖÉéqüK|ë4V9é¹~Ÿ¤ä姬‰šë$Ïõ/Ç6ïôz9ò&*”5ÿïwOVùų¦VÊ‹°Nòôyá³,yŒùœ é‰LeVÖ¹D©ÜŒüÎP¨Ð*Ã:§¹õõÄVÿDþÁDà¶*ga49Ðø¹5—”îF¼Tec¼/CKÂ:i’õS¹²ýÃÈ€7«¼]{‰¡´)°NRÜÙ´HMÇ™Ú1|®÷N•û\co¬‡uÒáÈ[ÁýSÖÁÝõΙ٧ËsµŽ™e†þ%m¡wüÓð7Ö ÿ¤Ã°¿ÔÉü!¸»Þ?'ãW¡ÕÿŠ™å´÷½ä_ãÞÈ?ïSP ˜‡â‰zßnXÛZ1¡¼({¾±·üœÆÞ8#ùçåWÀï„ùlSÌÃq½7&Íä~b&Bù³`h©×ü;Ûõ4s9l¿»Ÿ¸þKü·é3s~(VÆcñL­¿`Úf"TÆèׯt Ê'#|:}£„ã!9““£¬Çãþzë/™LÎÌDˆ™¸ŒT« ÛlÃ^§P=°Žlî}=Çg"„vjÈAŒGêè׿آcÜøç,·›f"È?™îüMù4þ9Éákd\<•0¡Ì¹³_þMGþyŒswñúë*»‡jB'óó}b&Bs«ëiø§Eþy„Û^jÓá(ò#D7ºÌ“H•‘aÅ£Ã>ù] ùì’Óy±—«ÌxêóbXÇ“W®’Šüö0tù»·«Üûàî·S_RÙCFþ»d{½ÊÈ?·Søv¯†W_@þad@jU~ÝÔÀç¿îBÿÖüÃÈ€š«¬>ëî|{þadUVue‡öl8 þadÀ§oK¬Ê[aˆÌìñæAªGþÚ9Ú|¿Äª¬…ubP9‡Qõ†#ÿ@­üØâ{éTùkœÿ' ¥û挂ÜÈ?P7‡Zì“P•Ïw¿˜Û+ Ö¹FvŸÞo)‡ÝÈ?P'çš‘R•5äSDWÁ:÷þ¶æAmä°‹ñ7IU9Ìø§‹D=aSí™}J#ÿ€\«›=}Tö6䟜]ùHø;waòȵÊ÷Œ…“}žN†uŽófÜw÷¡ò Êj²® ‚!ÿ€Ãœ@þÉýñ%a,…ÊÈ?à(«Ï“^•óõD†°N'?ó—½ÅPùeùã—%XåÁXNÆès°N%9ðùœ`™_¶«¼;ûÄXwGÖ3N—y;¼+¢ÖÈ?ï°òé’¬r ·0t„uµòùFóöá«ØÿΓu[šUîÆ/»ÂºZùç†[Ðùé_įìâB8¬«Né3ðù”íßþÎ?þØ9ÖYqnå³ {m‡GÈ? pÿvuo¸ ÖY±¹ý+[ð½6äò‹¨²\¬«ü”0EþqÐ *ËÁ:ée}Û"ù@Ìø6¨U–u“ó‹ÝQa‘@<Š¢_(“t•ùn9Ør¬Û [‘@TŒ}'è¥]åq®Æ¼‘6X­ÖéO,=M‘À=1H¼ÊazjœH½Tiݵøç›<ýçTXŠü*õÏŸtLŨҺoÇ­¿W@½þíÛÜ–Î/T•uÞ8# þÙÆ3ï?#ÿàŸmŽµë¸—ù¨ÇºômÔ†H¥Þvß.œß©{P|µó’ G­÷Yîï¿¢âα!¡q…È?/p£Dþ9Bò¤zuý·É:FËú€$­+¢í¤ÿâzÒñÏîûÏ}”Эï éég˜Nº—kMc4.xùçy²žÜ¤´ü›1.…b£=1Ò´î Ô””vßþ’»ÜvF[!ý›þ:"hûH®Õ8“(· òÏãd<±R&Ç¿Â;ÕÙî·†uüÅFo’u©ÿð#¤”¢ÂÞÎl^[ÿ)CB4‘ F«¿¶Î&ºÊ'f»t¢ô.È?ïe´ÿP&þiê·nëXòZKƺC[?>í[ÌS.Í×_!ï?_ZR­ÿQú¾É}¯êd×T¢lm¼ÕZ볯ԥq­ÕW2#W"ÿ<Ìå¶ŸÉÅ?¦‚æï:ЯëXÖM#ÉX·û“ß ¤TýByìÌj§ÑÆ*H ›Ï6"Nq¿^ò¥ •"s‡õXKêóÁÉ0Á¥6|gƒn¤ô{oyçpu¿eôîþ_Ƨ/4ëô.DÉþ_]3cg…o!ªüü·Àb_Žÿ\£ãekž@´u×j–Gt·)òþÕšÜ"ÿóž›~íXG´p©;‡ì“ÛrìW¡lòO[û% ü­ªÃ¦ÓÕd²þé^Ŷ6†g±{úiK2,׺+\WÂ_Ó7*žhm?äü«5ÿ¸y™v“Aã@¿v¬#Ãã™^Ê¿rŠ/+ÿR‚¬ûx¹S0w:iÅ ÊGñ?O ì¹@Ç5£{k§ä7ªÞïXæß©b‡1gtXؘäŸç¸%3ÿ6‡œ¾—Ðê!7Îj¨Õζoèëâþ€sœÿpH#LZ$/ÿ¿)"GÏBðäž)pˆZÞ–—´±Ë#!û”`ÝÊ?µ{yãm((/ÿ*’/ ù§v7;(3ÿ”3žÓéðO~õŽäÏ»JAþ)ïZWOÞ84·ûb8ýþZˆ'ßZG8þU›[ž–ßþÖÞÀ=öÊÔºü~¬ã̃0O¾ûž>/ùç>N¥ÈÏ¿#~ ö?uTžÖeùW´“uþi ûÀ{UŽâ2ûL´¼¬+?Šy*âß‹%òxºÊKyXwá£!ºã~ ñ#È?x®Ýä H?…åßV䟼)«}ÏrÇ¿ýäc]dS^þi‘²æÿËÕ¿Ã~‡îôûIâÖO/ï÷4S`þ}íƒÏeÏ[¯ËÕ?ÚÐ @â翤iî7s;.`ªÄü <ßýbn/|ÿCÆÿÜý¶lý“Ãx2ÿ• Ëšò)¢+ƒò¿½òä럄ÇS~ìØ¥ôü 3þé"QOäŸ|ù¬@ÆþIu<é{´Ûœ2Ø¥ðü‹Íž>*{òx³ÊÓ%gÝ€I_ßD•ïß=cádŸ§“‘À‹UÖº{<‚?ã+ÁÇrwOÒ³ !ÿ^È?A·2&/öùÕSŸ™,)5ʻʌ§æeÔBó§^Ûž«T•ùz"ÃäŸ)ê÷¥¼ýë ©ý¿›PJuù7øËÉ}ù'? ûŽ-Gþ¹:ý±%á’jóo!7÷‰±È?Ùq?bªAæþ½njxëó_ÃÇÏ=ÚuÎ÷IµùÈkÐù'7îöœiT€^Ïܯo@%5ç_Å„¾]‘r#÷£üóÎxJö]ƒAÈ?–ˆ_ÙÅ…päPIþϬˆöé}E‚,û;ÿXøcçDäð|•'V}îvn¢ÇÆóΓ3¶á,øWÉ®î w©wÏx±Ê'‡Æ¬M½w/u]Ìà“îOå§Ez”þad2F¯ÿ’çF·hý†»¯¿Æè/ ïs™ì¹Øéüsˆ{Lãgþ²·ê ÿ02¹sþOÿ‚ŽŽg¹ ÿlÒÈwËÙÀ–ûrá×¶_*É?X¼Yïq®Æ¼‘6&Ê„S-7áøÖ‘ê¦§Æ‰Ô &Ê„ï¶+Ë?X¼YoÒ19ò¨Î¿ }›ÛÒù…0 ÿ€êü;Ö®ã^jäãX÷…ó;uНýû§ËýýWTÜ06$4®&Â?Œ(¦Þ}”ЭïUÿóÓÏ0.”ŸÓzê£qÁ+0QŒðù$Pï/‹ÙEFÛÚÖ:"hûH®Õ8“(· LƒÍÏÁ?äJ½3›sË”!!šÈ£ÕZ[g]åÓ±]:Qz˜([ŸÈ? ‘z_ZÂ.OvM%ÊÖÆ[­µ¾Ž¨ô!®µ:âJfäJ˜è:_·NÈ? ‘z—ÇÎä®§qŠûå’/m¨œÈkûk=6ÿJêó!É0Á¥0ÑeÖýéüCþ‰Ô»`à_ùc^Ëù MkmÅÿfµáZ³'ßÈ™4ÃjdšñPaüåwyx'ÑêÂ6䟘d…o!â>ÿíxÙÆZ‡'mÁµšåÝm áÆS錄U®dcx‘!mI†åZw…ëJCøkªFÅ­íáŸöKQu¸çþZw Ö²ð+IŒî­ Ÿr?6ÿGËü;Uœ˜3:,lLòù‡ñÔ&Â?kO'Ã:à:™;ßóôÃþ£ÞEþTÖ©†‚¤õqQÍkâÖ)&¼ÿ'3¾ØüƒuÀô—v,Ùù¡Îã—íÈ‘A½abMÖ¶KWmþåë‰ `pœ»GVMÓü±Õ yëSõr©7L¬Ášÿ÷»zÿa9£ÏÁ:àe©ëç jõ¨fÚª#÷åUo˜X_VÜc^å…ûØÅ‰±°ãÚŽeãÙÃÝ‘‹v\2ʰÞ0±ÙÙÊ{P|ÿƒ[:Â:`ü#ëâ4´ŠŠ[ŸT*Z½õÈ?/cTàc^ånü²+¬µSžºiÑ öǯJ¼%r½Ç^GþïU9âWvq!ÖÛ‡»‰«Æ>Ò~ТM©wÔ»¿ûQ\Ç-lͺÅh8j½KÕL\…±!¡qø&:ò¯Vöwþ±ðÇΉÈ?P ‹SúŠÜWï>UµµßÀæ¬[¶û¯9×Ô9Fã‚W`"ò¯Vvuo¸ GÀŒÍSúÜT寧ÛÉ?›³n1u®Õ<WãL¢Ü&0Ñv™ß¾üSçx@-Ô~JŸ›ê]sˆì]·®ü«{&.îÄÞô.0Ñåcú)õ±I.ÿpý©cï”>7ÕZÈ|!6òoÔ£¾orBÛ™‰kuÄ•ÌÈ•È?[õñl1ޱÿ„Òç¦zk‰œØÿ‹=T6ŸìÎÄeŒd˜àRy«úWcݰA% Ì=‡«ÛÈwËÙÀ–ûª„?¥Ï‡?¥¯Ä;õ®8ó>Ò‰Þ.rsmÙ™‰köä9“0ƒ Ö½P¦àG'¼Êã&\y#m0òOe8|JŸëmî­Àb_Žÿ\ÃÎL\Íòˆî6…‰51ê•üè¸þ³ž'R/äŸz¸{Ä™SúÜYï £°Þ ›Vœ®ŸÉ¦žîÕYdw&®¨x¢µý`¢Ú^eÒ19ƒüS:î3'OésS½ñ¾ -9Xû ,fÝ¢²ÀQüÏSã‚{.ÐqͺgâÊ6&&"ÿj#hßæ¶t~!òOáT~Æáü)}nª÷ví%†Ò¦Hð™ÔÇÚuÜK|`‚w×Åi¸|JŸ›êÝç{c}¸ŸJåæjäŸÚÇ£ÊøÏ8D8¥ÏõÖð7ÖÀDOq½ó"äòOá\IX:²ãÃ]ǽ¿'[ÚõáoÜ&z,þãøù§\î_7#¬QÛgçý÷\™ ê=8½qF Lô ™O| †‡‰üS#æÏ8nȦÞg»žf.‡í‡‰ž!úŸªx˜È?uq»VUSþ{:™Õûd„O§o`¢‡(QÇÃDþ©h§¯âZUnù‡òê ‘"È÷‰-È?€üƒuޥ⥠¹/ïæÊÝ¿¤ˆ†=ÃD€üöÉãvú*.PjP‚çžØ™Ðï$Lt7ÇN ÿ0SÎîôU\±ÅÓg3»³ÞC~fÉÏÂD7s¨ù÷È?ŒGžðW¥¯¸b‹QaþñóOSw˜èæøk±OMù§ø¯°U\•¾H‘þõä—þ0Ñ­ìnv@Uù§ˆ¾ñ Ø>Ñ®J/Åz¿È}öq´?Lt'9­O¨ë ¬²ÖIs§oý¼A-øËô+Ú?î©ÙcG~¢ßäŸ[¹§²Ç+°Ê³ˆÖðX' ®%r;}üTD*ðñülD0ùWEŒé–ZXçmt©ëã¢cwúDžŠHÊþu05´RPƒÁÈ?IìôyôÚÌòo©Ñù<_å€òÏ›p×-hÆ_· T…þ±ìò}Ç¿ndS±ŸW«üMS½ÿ‚§ëØé»©0÷ªupªNŠÏ ¥°ìÉkÈ?û·ÄþŸá.V¥y„ÛéKÕ«Þ¿Š+ßgKpdŠˆ?¿lU>Å„W¹bBÁŰÎX\·à6üãya«'^UjâÛ®«ó‰†óŸ¥†ÅŪ ðÏ̇8ÿÅm|«ÒgòO:È麞¯w =Ltº|µ>ç¨òÞÀ=öÂ:·$ßåþ>±ûÃ~#—&\¶yžß2ã‘À+U>âw `ÿSGa˜äúöýWúu¨ß.2îÓ_Šà_]·Äñ/ðb•£RØÅ™hX' w“6-›Õþ¡öQÓ–mJ*‚vÑZ,‘ÀÓU°XÂ:—roPàCGÎ[—(¿ëµx¯ÞwøåN䟨辇È?÷S~)qݼ‘U¿Ãçb½±ÿ'*¥ƒF០úžåŽûÁ:§tÿ;|.Öïÿ‰OQô eðO‡ýÝ?è÷¬FYÅߣ•;|Å\«7¿ç7þC䟈ñ×wL9üÊî€8ÿÅÑ>D\íä>çÀùü=‚âÑwšAí âügìðyƒßWo#ú—æ+GëÝ &ŠÇ xˆük‡Ï½õØá³Ë™—–zmõ.ÜÒÇÁ•%OªW×/÷÷_QÑslHh\¡ÊòˆZe ת¼Ü’Ÿu•;|*tË!S貉’º #ºôÙ9gêÍ}øQ¿ÏtƸ[kØcú¦Ó…òïéLc4.xE-ù‡OáÜPe ×Ì^ mÉÉ:ës—ïB"{/Iß}˜¾{§ŠœöOëTèÚ^ƒéo#ˆ¶äZ3‰r›¨$ÿ’Ba¥èUÖÙòJhKÖé°Ãç(ÅŸ¾K”Ýý5"C™KþW|þá‚á)CB4‘ F«¿µf÷I¯¶åZíÒ‰Ò»¨"ÿnNiù™jº£Ê5½Ú’´uÖ;|y°Få3•Nþ@ÿ´®:y²k*›ÄÚx«µÖg_³KâZ«#®dF®TAþ•ýã±?çÃN÷æŸÙ+¡-IZW¹Ã×;|Â1^a÷-ú4¹O´6Ñ žÎÏYyˆSÜò’/m¨ìhûk=Ö¿’úü°#&¸Tœ5Jš’I¿BRwU×Ô›Ù+¡-iYg½Ã‡—Ka\ÜZ@ôT»¢¤\±ý«Øÿ+ùÄÏY'},×gZk+öø#‹ŸRnöä9“f¨âø¸}ÿÏì•Ж4¬«¶Ã§‡ÙõVÑÈ!ü»Àîðo>û¯øCÍ:³Nv¼lc­Ãˆ¶ŽàZÍòØW½¦È?䟽™½Úò¶u†óÿ™¥mS߯ÿŒ¿o=S/„³vÐ1¢å‹²Üí_ÑÊOuίac8;BCÚ’ ˵î ו†ìâZQñì#é§äü3îÁY/žÊ?³WB[Þ´î÷s">1úïû³ð±˜`nÝ!z§í¿‰ön¿ãÿî/ùœûy®cÝO×j­v6×LŒî­ ŸrÓù´Ì¿Ó{|#gtXؘçßé°€Û°Ö…üÓ;àšÙ+Á-ïXwmÇ¢Aµ´hÇ-¨ ”›ßŸ#š×ä+ö…#Ãè)ÿ:®¯øôI+Ó=/s'î±Ux7Ç¥*½®,ëî&.Ô’‹>| R0©ËØÃĨ-De®·ç?SRþ%?‡Óô]¬r/þµ¾X ÖåY5¾s#MÜúT ”ŸG±;êûæôR½µÕ~"ÿ¡, »Zåƒ'üs÷k|} ¹èûÁB(Ì$:òäH¢ôÿ¦{³ÖÉÕ~"ÿ€g«¼ôsäŸûº¾_}ø˜C%?í&:þÇ DyçËäXoä±Êe1‡d›e©ëãê<~UÞ²“üÑR¢K½æé ²¬7ò¯’MÏÃf‘ªì™÷ŸEᅵ>M6úŽ”¢Úö)zy›Ó?EÊ( ÿRú›ž »åVeÆÃÓÜ„;±ïÊ[7ßνF4â…'·#ÿò2Œ’¶_ç[Ä¢N-_vCfþadÀKU6Æû2´ä T­»ÎF_ |ÃÞë»O<¯éV¢½ßßCÊ(4ÿJ.Ctñ«¼]{‰¡´)´_ç@ö¶sD¯µÝFtå–,ýÃȲ­ý|è.~•û\co¬—–uUч¯sÔÊéEßýsÐ"ƒŒýÃÈ‘þ¬ßn(ï†*køk$3|Ãìv94tQâ[?#eT’ï<¶ Ó4¸¥Ê!ü{Ka<¦¯s¬KÅùM6ɽDô}»ñìÞÀ–L¥ø‡‘ á'|òç¦*NcoœãîñØùŽ ¾ÎQ7…‰;‰ö5~(ïŠÔßöìBøüùgÉÙ®§™Ëaû½7ó×9JP7Ü]þѯ‘Kùó[”çF¼Zå“>¾ñÒx®mŠÃ×9j{] Ê=€èÎ_¾V´Y”¾—ˆg‚ª\s<ø:G­%é:51’þ«SðOÍù·ã‰!—ð|PZþU}3·TççÏtDÍ»×Á?•çß…þ÷â)áî*'E4ìyØS㹆¯sÔÆú™7‰žŸtWmþadµ`èþAžî®ò¹'væô;éþñT}{ô–ˉkέXuGþadµ žî¯òî$ÚägÝ;œbf„ï£Qó7g 2fÊÓÙãÿ ~ J<\¤Zÿ02àÍ*òËîÙð¾Éfæ÷©D“ŸØKtµ@åþad5ÁþŽöGþ¹™2¢ÝÑ'úþÝdø‡‘ÕÎ>ÿ(Lëë¹*çôØ‘Ÿèwùç6².mo6èüžëð#«“›ƒžÜ‰øòT•™*n oÇ6úZÏg[7àF&€’tùçr_Ø9£Ê!ÿœç@—ÈsÆ+U~a+·Ô"ÿBWF4»ëy¢|v¶!ÿ\c[ûíPÆKUþç¿8Äý“·‰Æ>|”èÐi\žÃ[õf4µþ÷rÿüÍ´,¡HÝÄ2\ùÜkþõÈÐ+àùàÎŧM ø‰è’ÏËùgó¯{L?ÃtºÐ½¦›í‰Qò‘pÍ¿ç¯pËñÈ¿:ùáÕ]D«^> ³¤œ¦¿ŽH Ú>’mð½Aº&âuÔÛþáûu ¿O´©çJ6ÿ>N‡T’Ì¿”!!šÈ£Õ_[g]m[ùK^‹b©šxûÕAPÅËþi-–È¿*tçÎýûá…DåÃ'ÉåߨG}ßäN9Ù5•([oµÖú:¢Ò‡*Y7M¢&Ö·œ† ¼í_ÅE‡wÊüù &7þ½™hs§åD÷‹a’4ë{¨ 5l>ÛˆàgˆºäK*d¸ƒÝzlþ•Ô¯¼iÈQ[Ç;ÞŸ¡øÎyqƒwNVû<~‹èÔØõIõ¾È}iÓÇÒwÓZ[±Ç¿Y•_é¼ø”Qš&nØ M$àÞÿcaC®DD]_qîÈ¥Þ¹MØEÇË6Ö:å k:ÿ–ùwz¯¢u ¯äLL9?¤æ_7uåß¢çŠØÞ8ûJE¯wٙͿ…Òªrá–>ªx>ä²{ |¯­ÙŒo!ÿ¼qб¾åø[ÐCBUæÞ¬©ßçw…?®ÿp›¨_㢗1­4òÏ[ôמ’ª²VéÖ}?hR_Ö»xüóîÈ2 †¤ª\\ñù‡B­Ûy7Ñ•‡#Y·Nbú!¤Œ2F<_åŽë+Þ—ÐÊźòÏå?ó{XùR‘’Y2¦Kz•eõùïë1ed|ù=|¼ü“þÈ2þÖùñC‰WY[í§´IõLMÓ ƒöZ"X—É mšCôÙ^œÓ‚ü“ÅȲšMÿɤ^åäj?ëdƸS¿U3 Úi¹fÝ¥„;DAm~#:}5EþÉgde;t@iUÖÙ˜aÐNËéñì[|žè¥ˆð6ü“ÏÈ 8ÏOÉU®9Ã`Ý-gƳ~ØD.øU„2Ù鿴މ⫠ÿÌ3 ÖÝr`ñPMþ™g¬»eo<Wl"úOŸÿðo.ø§â‘ùäŸy†Áº[uŒçìØ·ˆŽÎÞƒbÁ?9̰ïL¦ ¶ü3Ï0Xw«æxН%wêO”ñïTÔ þÉ|d§ÿÒ&`e! ®ÿ¦kµŒV;›o›g¬»e1ÝÏ;ˆR~Žèþ9íÂ?%Œì5|âÿìS°Ǻ7ƒbÙ£=Šÿ3²<|âÿìS.íϨî©àóßâ$Ôù§„ý€ý?Ñï{©ñ(Ôþ!ÿ€úòo^ëÀ•×Qbø‡ü*Ì¿õçQ_ø‡ü*=þðÖUå_î7Cæ ®ðùT——&ú5ðeê ÿ@uùwc] .Ìÿ@=ùgHýtR0Îo†È? ¾üÖè© kÎ ÿàòȵގÏÄe¬ü†æ‘Û(#üCþ×ÛÁ™¸îý°øÙÆûQ>ø‡ü ¨·c3qÍ{$|ÞvL¾ÿ@õvl&®\LÞÿÜ3\ÿE=îI¨ÖNÍÄeIé]¹vI)I8þCbâîm;í-¶~ñŸM›¾¶ˆÿø­['h±rÙ²¥‹Þ¶˜3{Þ¼9³-ÞxyâäiÓ„-&Ž6`ÈHn1û¯¿öpl&®@¦ÿÃÔoÜø.,e¶oßÌ/Ó,0ÐÎâm¢¢üÿ·½E·zOŽ$l15¢~—iÓ-ºÎ›7ð¡Â‡.[6RØâý—þØwÝ:a‹/7ÍjñÜ&n±µŽ×^ îk!ÿÞ@øL\þ!ÿ€²ê-h&.ÿ@õ®k&.ÿ@Ñõ¶9€È? ÆzÃDø‡ñ䀰 ÿüƒuùà¬È?ÿ`@þøëòÀ?XþÁ:€ü¨2¬È?€*Ã:€ü¨2¬ƒ@•aüÃÈòÀ?Œ ÿüÃÈòÀ?Œ ÿüƒ‰ùàLÈ?ÿ`"@þøLóO‚s5Ö"ÿ0€ý?ÿ`@þøëòÀ?XþÁ:€üðÖ䀰 ÿüƒuùPeXU†uùPeXÿ02€*Ã:ø§°‘1Š BžX7ò¡ƒüCþaÝJY7£á¨õ¿—ûû¯ào¦e }¡ƒü—äIõª»f»…Àº=ÖÿÓÏ0.t¯éf{b:È?Q™1.…©îšÍrëö\ÿ¦¿ŽH Ú>’m$r¿Þ€ÐAþ‰ŠÎ†k6[Ȭ۽ý§ ÑD&­þÚ:›èjÛÊ_òZ#tî2Ðìš­rëvKÿ£õ}³”mœìšJ”­·Zk}öõ¹ô¡Ê_ÖMCè ÿÜf¸Ù5[-äÖ-f·¦ ëÇ*H ›Ï6"Nq¿^ò¥ LÜÁn=Ö¿’ú•÷ 9Z½  |<Ó æñXnÑöÿ¬íÅ65[#³¾¨ùWõà랈£` wóÏñ«“g…o!zÏú¾Ž^÷œ ÖhÍ7®uB‘F”ÛÌÅ^šåÝmêR'Â.ÿn§+FŒíË8±}=y#[>G a«=d·åŸYþ­ùfVƒ²Ø\âR±ˇgšÂ<ËM#ÖÖü銹U12ëÛ‰œ·›Õöì0o~Óx‡¯Nž4ð7ÓcªûjçözfªÀñN†—çÍp±—¨x¢µý\êDØåßítň±}Ç·¯G43od‹1^™m¨öÝ–fU_#ãâ©Õ%þê«Öcùðªf 0Çj"QÕ»yn sËb ˜G!òæ6¯¢Î‰8*6Wqôê䂹³™j÷uøºç㵌ö[W;¡5¯ºØKÎè°°19Îw"üòïuteîÄ…ík9áÛ×#–Umdó{ö YUZC)Q±Ü Uªìª |¯ZåÍ›K4ªÖcùðÌ3PTÇbâaêÝ<7†Å,æ-`ñwsW­Âö³Ã´¸MCð>k:83uĦ€àþ¯ ™söøÄg°‘ág:9]¼Þ¡ƒÓ³¡Ø¼ï‹I(±œIÖ2ïÓ|-£-¶õßÎÈÒ,Eà åå *‡<ãÐÐç‡SûC9óê/o˜õËk·ÂYƒ+B8䇒£EPÎÆ}ûCùåínyHWÙ#ÜD‚Ü⎖y¾Ç‡£4=w±¾1®gÀP¾Ä)CB4‘ F¢±Z¦ü]Mïõ–½üýÛÅp¬±ü?¶ÓÏ#õç¬nG»Bc.0V=Óñ`ÿÐqP8$ºCs×VË0s/[ÂCÃ`´Ç,ï{0²[À[ƒó‰îņ…n¨v_óÚèã9(¿¼Ý¥ÏWVT–1•˜¹œÁl¥T_¶Õãѱ§ˆNvM%ÊÖÆó·‰ù—Áxݲ“=OaüöÖò"ÉÄÞ¡=­n·§ûUºÁÝÖ¢çvûH?Á5C¢;jaæ^6ö¾E¹‘üŸ«î»»3{óÄ?°ñlÌ6ÒyëûZ>Ž”~(¿ÌÝ- )®æ.éÙºØÖîoßEEœâZ—x±˜CÕ; 8È-ô¨Í]ö_уV· >Â6öqÿaÑsÇ­etu3j‡Dw¨Å=ë 3÷Òå4Û8Åÿ¹ê¾‡¹_¹ƒú¢ívg¬ïkù8òZ ü2w—>ý°º»U?ò¹¿å7$òa*°mgƒûܲ Aîò óíáZÜß,zÞÓ†iÒÿ,j‡Dw¨yµü³èåž©ó}šî7yÔ…Âôjùgù8ò›£ürwW§)åjY¿°¦»ûø7CØÃŽŽ—«©hýÚÍ¿š´ç®ùvÏüÂ6~áþfÙ³ñúsQ8$ºCÕͽ„$°]ŒÕ}ä3°Y—M”[-ÿ,×–òËÝ]Zû ·ì³•ò'Ts·ãqî]Ö•áYD†´%6íÜãǾj¦ÔþÞia¾Ýæ Ê áþfÑs£óDi-Q8$ºCo¬³Î0s/‰­wßû>˜ÿsÕ}wú_$Ã/1ˆü·QF¯jùgù8ÖÌEùeL²–ÑÎ¥R?®²¿Et ZÍhwj™ñÄh³‰i£e’cübNp·LŒî­ ŸrÐH‘ì]´ÕOõâ>M‹âÞŽYÌÿo‚åÿaÿ”’Ä.NXÜŽ¶õî´‡Ñþ`Ñ3ù,Œî5hª‡Dw()†[N×r]O·Zí jz–6ó}Þé4†û´ùtPÏAIŒv«Õ}Ík£˜Ó q×y¢Þ'߯KŠ- :¿L¬õ¿ ¥i&8×ë‹'±e2FS¯ýÌ»Ø Rçÿ— ¬æ endstream endobj 55 0 obj << /Type /XObject /Subtype /Image /Width 1280 /Height 480 /BitsPerComponent 8 /ColorSpace /DeviceGray /Length 16327 /Filter /FlateDecode >> stream xÚí |eþÿ³úÿƒ» ÔRÎ ìrU¥´r5´) rˆR+ ‡ËU)(+‚ ‹ +,¨‹°ˆÅÄ ¨€( 徑B¡´ÅÒ mÞMÚdžßLÒ$“6-I:Ifæù¼_0y2<óù~æ“y&3ÏCb%gFÿg_É´œ§PrÔú‘å>>+¸×²~~°0$Ll`Û_ú Þœ8M˜ûUó?«Kî5¾j4ýö±…Y³™Ò!± L—¨¨]u¼¿šô€ ä5±ÅÿŒsÃbÙÎ<ïra0vuÝ)jüÕ¤?€¹3qFmþ—øR€2$†±˜Û*›¬6Uþ—ëBQ‡ê¬èØ èPZM‡£žôž¯f çº'’­Zg¡¿†ìw±ú1¶9‹©œü(v Öÿ¬ªÎŠþíÍ1“,çD)J œÇ‚ÏsoS½É&…MìÛ¬þʲ…Ò7}}6·T0 çúŸUÕ™ýϤ?¨ú„ìf5祴f'ùë3®µ%ÛþÈl]õfõ® Ð$B…r®Ð²^«ª«ENGv«Àž²Jž‡áµHmž—Ïyb—›VÖ:2†ía†².p3Ì [¯UÕY׎jø_ý8z‹0‹§ê‹%Í}õ¯¬þ4oÍbK›ƒ2YK^’Î_klF«/¦M ÕÁ P¡°õZUUýᨆÿÕ“=#”ý&ê‹þ£ô¯çÇõôïµ@ÃãBû*ƒ¦Öÿg¼ÿ,ó麔{íÕ'`¥f€ ašJ¥P©f×¢:Þ_MúÃQ ÿ0T(ÕÁÿà8vQ!üþÿñ‹ áð?øŽ]T(Fÿsâ=‰ð?q­Â¹–¥3œÿèJð?ýA‰þ ?(Q¶ÔÝ©(ü@P¢”)û ¯ïó븟óº¯ïë9„W)TA}{'“Z;…ÿèJ”ƒüü>Ö‚vÇçµßªÓmnŸ[•†=¤ÖNEáúƒeÀGÓ¹é)vÇÏ\Ä•̪JÃÝFµ§ä¬þܧ?øˆg.qS¦„Î)\éjW}Ô×'­5%ñO]†ÿ·éþ„âÏ%¦R7-ý3Ñß$úçWs­¦Dˆ¾&áúƒÅÀß®r˜•‰’t¾Î½¿nøþ½2¤Ôy)ÿèJóæwüÌ…\aaÕõ—£o×’Ý ü¸Mð? ¾+4Dw“Ýñ¹í£uLt‡¼ª4ŒØc=%Áÿ€ûôÿBRò¾Ò¯ó‹ÿcK·Gwï>¦êþ«#$ÙC•`Ñmh ùhÿ÷éþ$ü ßP¢ô¸1þàP"•0~_ËÒÿDÝ' '×P¡¸ÉDûàüJð?ýA‰ôðŸÁÿüJ¤’»Óáþ%Ò‰F®Y†êàˆ ÔE©Œ³ ÕÁÿ¨ƒ²>»áþ%ʔϹ'nê‹TݧØ× vÖb²˜fŸÈÀÿ€Ûôÿ.Üù‹?žÂ›¥y–¡:èJ„þL¥Ê—™Å<ý¥T_´(SNY†êD®?øpåÎÙN¾ÛÀÓŸç­j‹ÿþ\¦?øpåÎOGÊFðôÇûíÃЩx¢–÷Æâ/ÖÞÀÿ@½ôGªëϾ7ð?`óΔ›âÄÃuGþÿ*Ù‰öÿË<ËPô%BÆéœôb籓v׉vgF;øp—þXW‡Ãÿ@úӼ̽j{³ß½ó_-›5`Â;ð?à.ýÍÂê/y üÔ@ÿ‹‚ø·Q±ïUOõ$¤bÁ3í{R ÿîÒ_¥€úûmX!!ç•bÝ P¢Ø9=€‘]–¡:Z˜ú“–rœÿÛ¸òmµ)­÷àüH]ôvñçJeýÎrÆ­§×£ý ¤HLßC×/Ãÿ€=œ·|[Ð}…³ ÕÉ͆0_kñ³kò3£ÿ³¯Ôþ„ÔrýaT6ÃÏo”(!¾f$Vøp)}ß?5¬Í%.Ê÷‰Ó„ù±_õ¹{¯M¿}laÖl¦tÈA(Q¬,ß^c–0ÀÀÿ€Ë(fOÄîuß(µKóפ6•…Ų#œ-xÞ%äÂ`(Q¤\n{‹¿êäËÏnÈ7sgâ î5ñ¥eH c±ÖVÙ„dµ©ò¿\o(Q¬Ü£Åo :™RÆŠøš;ò½AÑë0ý\÷$B²Uë,ÖÚPCˆú1¶9‹©œü(”(Jtù T'Oæ{ÞÓüïMwä[{sÌ$ö%Xÿûaª7ÙdèA±‰}Û€õ¿ò†l¡ôM_ß…Í-#3‚ä¹—’>—ô¯ f$ á3"Í.Ô&ZLús„M)_¶}ñ¸{òÝŒ4æëݸ֖lû7³uÕ›Õ DwR[¯ã{è{Ÿ>.ђÞ™Â­þ¢¿ª^ïMú³—Œ©‹YãvÞ]ùÎó`']nZYëÈB¶‡Uµ²7C‰¢9øù½ŽëôSMÕß=÷£ý \¨?b¡?»9ÿÏ{„ì¸âž|½E˜ÅSÙÂæ ö¬A—¼$¿ÖØ : V_L›ªƒÅ¢?s¯ãù¼?p/7[GËÙo :‘éTÓŸ}\œ\æÞ|ï¡ì7©+Å…öUM9¬ÿØxÿYæÓu)÷Ú«OÀJ5”(ý™{o[j¡¿ÜNkdí7PÈôW?ÿ{åót©æJtã.7÷:g©¿[<ûÓ_̵kÿvê¯ÿ{˜àpÏMÅý}¶Ì³ Õ‰H½ÞÛª¿Ê|¶ýÌH?ßP¢ÈØtŠ‚,CuçLÇV~Uù†ÝKb5»Ûç•LA–¡:)£#äΡµíC.Áÿ@ý¸ë½ÉâýïO !ËP„ùÏÓ÷J?o=ü´,ò %º•JËÁn´ÚNE–¡: ³:‘Ü{I&ù†E„æoèÈ2T'Mò~&³|C‰näó„j3R)É2T'MŽGÜ„ÿØÿôJ³ ÕIÌ4$eò øˆŠtZ³ ÕIþïŸí¹ø>üHø¨WÏ¢ oõY±ìò %º‰¢,¿Zø)ûZld§GÕ2Ì7”è&¾eñ6j,üˆ‘dB4%²Í7”è&**ùïv¶¼ÿ"ä5Ë8ßP¢[¨Ö”8íužª,CuÒ ”³ë: ÐÉ7ßP¢;ØïgÑuFb‹teª“ûÌ)[ÝnÐQ9çJtK£â˜ÅÛY›)Ë2T'2¶êÞ/ï|C‰4`s–/¿÷B ÏÐ9lZø!Ce/÷ñYÁ½–ÍðóÛÕI‹Ÿüó¸‹õÿ“?š±f9þ•¾J|P¸vоök*Û8êàÞ@¦ß>îìv6S:ä T')ÅÑá2P¢Ëyã-±fÙÜ«G¢ ·ãÔ2T¶q^X !;ÂÙ‚ç]B. †ê¤BùÿGÒÞÎqƒþàP2½T6Y6Ö›øR€2$†±˜×*›¬6Uþ—ë ÕI…¸—¶½á±à¾ôÿ“:§$åªzÏuO"$[µÎb] ÙóCõcl!rS9ùQ¨N ¬¬$7^õú´€—]Ë¥ÛoÿÓµL„YNgì«7X÷bª7Ù¤0ÀujÝ€õ¿ò†l¡ôM_ß…Í-?g‚k+k ˆ?ÏP KÉn³“ÿvSÛt‘e™Yç­ KÛWoc¾Êëjɶ3[W½Y=ª;w’õ×tér(Ñ¥äþÄwÐ󢨲¼C•ª ÉSì«·ËM+ëCÈö0CY¸ª9›­*§Ïe D÷qÎó„è²Üÿ»°6Ⱦz7e²—¼$¿®Ø : V_L›ªƒêÄL!k|VÃÿ€YkÙåÕ½â˲R¿°Ò–EyCeÇ…öUM9¬¿lhÚ¨e>]—r¯½ú¬TCubfÚS·6vRî¤Ðe D×ñó_óEŸåýÂ}¡:z`OÍd·z’Ê|C‰®ãnŠø³<<™]8}TG ×Güƒ{¹Ii¾¡D°=Ë—º_PÜ <ÕÑBÊêr1éþ'SîO(—D–Ï7îºÅéñàÞ?1ppØýŒ=tç*tÞå¿[x…ê,Cu¢`Ú¿ÿÞüºó %ºˆ<þGŸøÂÿ€a~ÝJ^{jñ}Êó %ºFnï¾ï˜Cw–¡:w³ïùßÈÄÏ‹©Ï7”è v…[¼óº&ò,OƒêdLå/:ˆZˆLVhýÏðÞå´8'ö,« :Ó?$.%ºÒ-ÞÝ}–ár¥<“Tþ7°Täú«ƒ’y]{ô\WíôU¡ä¨õ3‰Á­’Ó¸=³¬pUEP›8ÝjáWíûljT¶0`A9ɺԖú1ƒ`F}âölÌrGœÿÉú‹˜‚Ï[ ;%ZýÙÂw\‡™éml©#1ˆ¬°r·ÇÿäÓ9„\º$býÙL†gmõc$1SY!jÿ{ÇXÀï¿2ä§?Äþýks“êïKªÕ?êIïù\C‰Ad\ã_üc&}$ ýÁÿ$ÆwÜ,“M¾+#gT—8òHQRà<‚‘ÄFZËã¼wô,v±îDš]¨Íµ$¾æqZ.ù.úµ»S¸±0ƒ¸HøïÍš¿Ý•ˆþ¶ÃÿdÃo'Œo±è¾;c2ß™AÛ©úý·ˆ×¯n~3‚‘ÄÌf v$€þTð?ÙðÊ¢#íV•º7ó?ô†©Â’æ¾ú× Öõ4oÍ"‰A\l±ø¹cB¢ô÷ScÜÿ'.nv«pwæ»ko‹¡Â ÿQú×óãzú÷Z ¿ÒŽ‘ÄÃÚ®"‰Äö,û_í‘’ß'ÞÙñàŠ³+8Üê{hýÿQÊï©Ò˲’4.%ià:ÉsŽh¾ù.%;²È´Ma PÔÓaIÛÐÓ’Ó"“ y )f92{Ú¨ì_áÒ¦€T¼Óbä9 ê‘É„ÐÌeÍ>Éd¹)™Ôø™¨NÂ\ö‹$Ìüd¸ ”è>®˜g×~Y†ê\Fn ƒ|C‰¢á]U9² Õ¹„|þaTð?ºØºˆ÷æÓgîK'ËZö|õT'UþÑ?.%º—¶Ìo6¶¿%¡,ÿÓr„^†ê¤GÙª/··XT ÂÐàtQÄ+_¼&¥,x€œ}ª“g^Ù~­.%º— )gÙŸ›èº@ukq¬à.1§UÂe D7£{ùg gÙð@yw¨NZ„NÈsxð?zˆÕH8ËÁWØÉµ ¨N:ܽ þ^#îá@Y>ØíXɱnqPd8ÓtX«¡ùð?(Q Üæ•ËÆÝ‘^–c{4ò…ê$Â-roaóÑåóý‹È$MŠ×uSY;b,ƒ,CuNäÍ3~œœ"§ö"“4[¿1™)ÔÈ2Tç4´„½/Páô±ÀÕƒÁÿh"íÕ©Ò þGGyå³r¥˜å'¼·]ò÷:Õ‰=ÏnƒÿA‰bâ‹çø·!K2Ëã&d z?y8T'fŽÛÚÖÝcÁÿ€%ßgH?ËZÒ4ŽôêÄÌÔŽûV#¥€á@Yö!EÕ‰f÷÷„h~ÑÊUˆL¢äü ýõ<°µ ¹ú!T'RNûî’õ÷¯k®?C‰BSÙ{±©\ “®þNµë²<Ѫ!Úè‚4ÂH1r±]†ç€I˜Å=7ã,ªž!O{üSš‘‹íú3”è<*O•°þ :q¢¹™·¨Yx²D£Ûõg(QX~Úb*2o ¯”°þNAubäRÛ÷|¦Ý”løb»þ % Jš§¹ÃøÙeRÖŸ ªåì¿óD#á-Ûõg(QX²ÌZt_ÒúSð|ã>T'þãù‡Ô7÷¿idù·óE»{'^{q&T'N½z"ý!2©¡}ù”Œôxì "—;Buî'ïý—ƒÛÅH~;ìÍ÷YøŸdØZ)#ýr“‚ÇIyC¨Îýü¯Åß¾¯”ÁvØ›oüO:h䤿@nݽ‰NéÔx8 œ:¹>5ü¼Kç~vå:±ç£.ÕTX?JÌÅ[{eà[.Æ´ÜÕ¹‰Êf[lÏwЖRœÿI‡+íL¿“>xn™Ú›Ÿ}<àTç^N¯—×öØ{ÿU<üO|¼ÑX*š.ýAu"à›FMreµA¶ç;D>‘%J í«£urÐTçf˜=¿ kÿE ­çëg´¥oä­È4²ÐÙçßèù}PÛx¥ís[´rÛ(»ï¿‡ÿI€Oû™ËçŠä¡¿ãìtªsÙ„Ü®á†Ù{ýçR`Á-ùéo wéåb(Tç.xÏ•é–ÙñýË›Âÿ€«³ìÇ›Bu.¤ÜùüÏuÜz{N¾ žs&ß?5vô÷ß OnšøR€2$†±Xk«l¶¹Ö¦Êÿr½¡D!Éë²JVß¿{üùáþWru~®Ü7Ñö|û_í‘’ßÇç?˜¿/a§çº'’­Zg±Ö†ì Šú1¶9‹©œü(”Xo~>o,•,aûþç"v, a3mÏ·’4.%iÃì^Ceä îùƒ`ý™êM6UÝH¸‰}Û€õ?}F¥oúú.ln™ÂÕwÊ€s-Œ]RV¼8^Ì-±fjÓs&ì±Ie4l¨ý1mSéeï Š†~ ?óõn\kK¶ý›ÙºêÍêPb}©0 ÷ñýðJyéþç*˜}:ü·”Žmµ=ß‘ÙÓFeÿj¯ÿem#„ûý·ËM+kCÈö0CY¸JÌôg`üÏéüò—9ZZ¶Õö|2%“?“`_õñCoT­dsP&ëqÉKÒùk Ò¨bõÅ´©¡:(±~'ãÒe¬?*øŸSÑÆ0„Ñѳ½NÎw×Þ*ýJâBû*ƒ¦Ö7†Mýq.ó骿9°WŸ€•j(±~|6\+{ýÁÿœË€À\ª¶ãɨÅ["[ý)ìû½$abƒºþl|ꈔDô›YÕø=ìmr—²m¶=ßìÉ…îüO¬˜-YòÓ_G»Îÿ¦K´Vo§ŽÈÔ÷fÁ›PÇÞ*¤n«mÏ÷ð?-'LèeøŸ8¹ègìž(¥e‚ìôgŸÿi¬×[ã©#Ò4ƒüfP!ÅJŸ5)ÜnÛóý!7öÂÙ×áâdŒñ×ó»þ'?ý½c,L³³Þ:Ÿ:"í®rýY¨Ž,ð<ÁP¹áv<ÿ¡oduÿ‰»ù[Øã_òÔŸCõÖýÔù28-#ä ¨ŽDgSzØØžo_ý´;üO„0÷Œ%uÿ2ÕŸCõÖýÔaBŠÞ÷P÷ÔQÊço|H£ïÙçà+ìäZüO„,|ÍXºû´nÞr²ÿ=ä©£Ù“îäLœN±êN½Ò"ò_9¶çû`·c%ǺÅÁÿćfÌ]™ëï Óïn—ß°§Þ‡D£È!ƒ D1q»j¬s&h®ÜõÕÕ›"ö{2cùîy`krõC(Q”\dä®?¨®^\{óN¤W‡ó}ª]—}䉯P¢hPÏ*¢HP]=8ùr‹Å~ÉÃ1#|ÃÿÆ»¯2ÐT÷pâ•íüáxÿɋۥÐTgKÛ÷—3+Kq¼Àÿ²Lêö‡«¡3øŸÌ8^Uˆ{ úƒê¬“qæõ+q¸ÀÿäÓk‡¡pÉëôÕY#a¬Ç¼ßp¨ÀÿäH™á%µÕV誳Öì}¡ígQª“8Rà²Cgë-·Ój誳ÂÕg¦W‡ üO†Ìy¿ª°h ôÕYƒéV†þ'Gòƒò*‡þ ºšäeòÇ üÈF®éMòªK¾ŒüÚl”ÿ“)·*¨ÔŸkú_“¸ê.Œò˜s—ÜÍÆQÿ“)÷:ÇP©?×ô¿&éþÿÊCÛ~>¹5.ûÉ"×ð?ë\úØðšL™ÿ¹¦ÿ5i«noù9‡ˆðùÖ‰ùÈ ’]-ó(ÒqUÿkRVÝõ1+p\8'ß³Y«/ĈðÈ ‰¸ªg™Îžw ¹0þW;wôÓÞ ´êÏ5÷HBuÌg𤇫ó=kz\ µ³6óœÄ—”!1ŒÅÜVÙ„dµ©ò¿\oø_m‚7îCÏ8jõ§"8ÿ«ÜdÊrY"Ž WçÛ7µÃÿF=é=ŸKÚ¹îI„d«ÖY,×=gT?Æ"g1•“…ÿÕBä7ú—â¶Û(nð¦tú_骧ûgÞûç:Òñ¿È#EIóØBðyîmª7ÙTÕÙľmÀú_yC.µoúú.ln­½£€’k¾†Bª|t'ÒìŠWmùy†%dÏÔTîÈ÷€K\û÷jKiÍNóõn\®%ÛþÍl]õfõœÿÕ‚ú«b;µþ·oêõ[ãVg·åûhç#Ň;Ÿ°±¶"5;érÓÊr#cXE‡ʺÀÍð?k@fT·Éó³q·³ûò½Ç¯‘ß>k+iî«Í`]OóÖ,¶´9(“õ¸ä%éüåbƒ4ê€X}1mj¨þg…Üç¡?–ŸÓúû¯þ¸øã²[z!†ÿÙÌ4•J¡RÍÖ—+ü Ë×Ó¿× WŒ í« šrXÿS¦©óºe>]—r¯½ú¬TKè›Ø…Ä,’sØö,û_푒߇ºç?t[{þÌ©à©ïq(Pu¾ÿãóï·iן’4.%iÃèR:êo}wèØ6SI!Žø}TÝèõc»LÚõÈ´Ma T©.µå°c„ŒnóƒÿQÉ/íô7úÇz]¥^‘ÙÓFeÿJ—ÿ1WH!GËq Àÿ¨d½þq·Óžg ¿B¦dRãgèRÝ¥þâ €ÿQΤ=Ð]ñœ¬ê äêÆJÈþG'ÅÛ¡?ãavvü…˜¸ìÿ£fÄdèÏL–Ý!ù«Nûßfîn§·e€ÿQ˶ èÏÌð?-'LèeÙ«N7)ŽTþ°ÖÿП‰°“³¯S¡º_ƒCð?š9lxú$ôW…¿þ䨋ŒUgxJý#š½bÔŸV´‘É‘»-ô¿þ³g%ôgÀð@ywÙª.þµþú×^ÃÀ–D¨¿×oÃÿ\H27ùºã诊à+ìäZ³ãqSŸ„LJµ\T@Š2dÞݸ´gW®ûèOËËà®#¦e ¾ìv¬äX·8yª.ü™„~êsˆ^¬ú Ð÷¾£‚ÿ¹€‡¹é¹ vT¿,Çöhä+SÕe3¤”ûÎW¼úûd=üÏEìï®ê7ñôGM<ó=ïÁÄœïŠAGà.¢ú£#žŒ¥Æ{7eÃŒDoWWC­ÿU@”Äsy|ó9å„dF,‚‰>ß*‚ö¯+¸Ýåôg…'¼·]ò÷: ÕÚr™þÇÞóæÃˆD¯?Ã÷!ð?'³âcèÏã&d z?y¸|T½NÍžNÅFhÀÿ,aÞOƒþª¨%MãH™©îååeHÆeÒ±F&—Ö¯~úž² ú«†Ñ(rÈ ¨ÎøëÖ™CHFÌ:oYrþçL~ðáî²\ású«NÏ[Û«J^uï77tb³çé_à?ÒÑßUª‚$Oÿ9“÷’ØÉOm3 ¿œj×ey¢±ÄUwxdów¹!°O¢­ @:úë‹]X$ÂÈdÆ^W ?™ÆóC·µú[Û‡uË…÷H+ßJýÂJøŸÓ(¬zÜ-ú“k<• !º„\×Áz$–ïýÂ}áN;6¿ ýÉ5ÆôÃáùgæÂv$˜ïáÉìÂ部=2œŽæ?•П<ã)^Óõ„±œ³®#Å|_ê~Aq3ð üÀÿì"eV³0CW}rr©æû\pã®[è=2œÌîâŸZ ýÉ.žždVÿ}ŽýÁÿjrÝ“m iÃVB²‹§¼œ›ª×¬†Û@ð?먹¿föWCB0±A]^îã³B¿rK¿G\¢ºÃÏÁm$­¿øà&½ŽJýÈ3=÷ú‚éã­Õküáao FÓoŸqå{9'Ý®Pãóm%«©û^“Ÿþ.ÿuwÁáÎç¤}dˆæ=®ãó(Ùväª,k¬×kœCÈŽp¶ Ldô&gÄóà‹Ž=0ºÞÀQ¸ÛYòú{é ×°xþ'<ë{–²ç ¯ýý ^oâKÊÆb^«lB²ÚªE™â9Úìõ3†RA2!åðéëO?þ4éÿu.ôçœzÏuO"$[µÎb] ÙóCõcUo¢"œO©ñ>—ß=>&@ú륟úÀÿ€tü/ø<7Mõ&›ª†oà» Xÿ+oXµ`ÀIËÏ)ç¡€õÙTäX”º³;Ïc¹ß>N†ÿ LfÍ=Û˜eƒõ6æ«Ü¸®–lû7³µ¡œÒ‰Ru—¦ðÆì[Ò< F#›ïßœçwÄu¾ÿ˜É+ ¿‡2‹µúBŒ}õv¹ie]#ÙJ¶‡Ê~"œê*Qµù„w)c†t“‹þ‚¶ à<ØÆXéAè¯n—TÙWïæ Löä1yI:]±Au€a$u]û ÁTw¾m`´ñ î;o¿ o‘‘þ: *±E&qJ¸ó†¡S ¿ºém—ÿMS©*Õl®ÚW4å°¾‘kêx`™O×¥†Ò¡©®8Á\Θ‡;^䤿µÆBk;ë·ñNü²~~(ô¿oB a& ­„þêÆ/QgßùŸ¿uÿˆ¸C€¼ôǵ¼±¿ýkëø³f3¥CR纗®ò~¯èï!liî¢ë/ÔgÉ ‹÷“?*€¯ÈÏÿz'iì¯ÞÖ;ñ=ïra0…í_B¾ì–ýÙ¼¤ÓÏÿìõسãšFÜ0½KÚK‘Žöìʵ¡çûl‡^çøœÿåzSæ÷ó¸é™L|ÿÚÂ(ýt±¸Îÿ®÷êðï¡í‹^_ÃVdª¿×¶;öýkÓø‘³˜ÊÉÒåýÿýI¼ÿ«âæ;/T‚ÁÌe«¿U^±éNüÒ7}}6¯yvêÒ;n\LÞ<ŠÁkv'²Í5؉Œýïùtm}ÖðÐ;ñÉꔵ]YÞçßèù}"‰GýÝY‹÷E„\CW²Öß«iÜt¼£kxèøºÀÍ4ùßÑ|ˆÏ®,ï|¨è`§“bˆ'kA‹ÁüŽàÒC^C&å®?EýÚ¿»?mj¨Ž"ÿKxê)ƒ%lÏòÀDvr1Ôýñd‡7›yÝbNÉ÷•p¹ëOśڌ­wâ÷ê°RípËH‚dï%êéПíYöãMÝOñš"Þ»ý‘EôwO?Ý-ÂȤ‰îµZèO‚þgɪ-:d‘ýGÎÿàÖ`>y@Ȭ`t lO–\âÚ¿/¸1žƒÕÎôtÛ–!Ôèý¿Æ2¥šüæ‹‹veùhç#Ň;ŸpW<%_?ãó›å¬?úÆ"ÔèOæ7~ü¯þdqƒC|öey_#?wÝÿrïÍ_±x<]ûã=$*ýqÔ’‚žð? ã,×Oñü4Ë“T)H…úó…ÿÕ“›cÈNjþg&ÉÐo# M%ÛúÃÿêÉ€ÿBuÒñ¿”«5Io7 y£OÜ ûÿAí‘!÷É}œJÃÿt{‡xþdù÷2a6 õ§¢üÈ!÷ºíƒî$à¥_vò[_í¥ -O g4ê¯Ìðûü¯~üw)ë÷>d'^ÿ3ßãUüFM¯ÛŸˆ”ÉG{vÜϧ¢þȂߛÚWÆ¢ù+‘ö¯ÅFº¨ÕÆ¿¦ùËLz±ª·ÿ=H·ö—‚ˆëHµú3œÿ•Õþç •«^e§…“q焸ý/éͦ_VŸ›7ÿ R%C´glÕß<öÙ*e”†Ú#£¾ŒÂ1$ú,k!­×¾ò½·²‘*¹qí¿/7}Vasï¥_|£¡÷Ȩ·Ò¡7)d¹X±©úå‰Û¿"K²ãnt„·WxT–Íú+^°žSÆøŸüæñ4WÏ,kÝÏùÈ’¬(›ëßxà²xÆýuÙhèâVÿs€ü?ÉÞéÕ'˯ßv}<éÅ„"IòA¿l`#ÿ¹qöê¿ÿ:JÚkÜÈ'%‹š/‚üê“å>úïë2WÆóYó£È|H ²CDt¡#úSU{…ÿÙJä¿ÔDýtøM°^YйBæxÊ I¹É„;Ñm[†GÝrT Õ^á6Qõ¸ôûʳ`=³üÉzWú߃×û"92¡$n®¿GxT’´\Fþ§ÜÛð¬îù«–+q¡ÿi× Z9P¿là—Åë$ç2r8ÿÛ…q˲k®?sõ'¼¼‰‘©QáMýçÆ•KÒe$î̦ Ü Î"„Ê²Š¸ªý»~U#unGG´î}O0ýÁÿìâ¸ß)Âlnÿ ”(P–_×OCœÏbäDòÇÍõ*<*MÒ.#eÿ{ åzúû=Ðï0Ä(©,(þ‡œHã?F’ú“‡ÿýÒò!ÚÑm¿ÃÐØg9ê@mèâW†?é?7N-‡|KX‰‡ÎsÓ_K¡H³Ì¬óV%‡¡:`•Ô¨ðæ"¢È%ßUbîRtoê”,ïP¥*Hò¨Ô /:¢}‹ð¨ 9å[šJd|g«¡Ggd¹ÿ-vamT,(ãwgÿs+îÕ„¹P¥ðYVêVBuÀ„±; ó-=%æŽKÈ­I^_á®g'd9@¿p_¨àînî] Ó|KO‰÷—”|Ô|.:LrJ–‡'³ §‚ê¯ÿRùæ[bJ܃›&ŒIƒ8“åKÝ/(n„êhÇØ©Ìó--%®ùëi(Ó¹Y>ܸ먎jjô_ ÿ !øÕWY†ÿ‰—ªþK‹èÈ·t”óLÉß}Âÿ€³¨­ÿRøŸûYp@½â©¹Ð¨“³ܤ×Q¨Ž>ªú/M¥+ßÒPbÉ1v²³ãÀË©“³|ù¯» w>ÕQÅÃú/…ÿ¹•¼¶o2Ç÷ „êô,¿t†$¼ÕQƒ.á³ÁMzÍ?¨–p¾JŽZÿ¼ÜÇg…á<*2 ßÌé)ñ ûÿºyqþüõÓð?*(üí£AOtž¾ý¾Äóm½~cÿâ{5š~ú_¦¾Ç0 Þ””Ì\ºN½ôSøŸì¹=Ó¿±rfô]´2uÎ ‹!dG8WjšAH~3I)qç›wpÓ‹ëô7–ûíãä`gÇãÒ1®A5Jޝ ªå°eÇ]qd¹j<‰/(Cb‹¹­² ÉjÕÚ]'äú³Òñ¿D¶ÍÛí[(Öeþ—óü΂¸Îqþ'ãÓ>e#ÿ™ÓÄ©?ëõ¤÷|ÎÌÏuO"$[µÎb­ 5„¨ãJ_§e„|!%.lyãÊÐNÑ­‹ô§0ÿ“!ñ+Ç{s§}åâýþuŒÈ#EIóØB°¾OäTo²©Jțط Xÿ+oÈý Q(z«%£Äø¼É-þ‹n^\¦¿ŽÆ‚ þ'·Ó¾s•ºElLyûÃqRZ³“ÆüïoãZ[²íßLî¯dö¤;9§[ýÊ[ÂŽ¿Å5â×@ºõÑ}Ù]k,´†ÿɇʤ¨ñZ [ç¾ñF]‘oýï]nZYëÈB¶‡q%„Üo.%–÷ÜåºA±Þ ý+rv.øx·ñQIŒDôç¬ëiޚŖ6e¢K^’Î_klFË•®#äëD¯ÄŠ»P®›ô×;I#ýã°hÙÓ¾nM.Úù@Júsˆóãzú÷Z n\h_eДÃz»7ÞÿG–ùt]jø:8&GìJ¼Üõ£ëп©[ôg¸‰>þ'i ã {²{Ú§“šþÛ’ÿy¦Ç¿qÓŸ[²üÚvnª‚ÿI÷´ocD·&ʹ;óá2Œ¬üãTÍçOMÇØFnÊò*Üÿ"]ŠŽ/Ö¬eøÊxdõG{dÿË>9ì ¤ì®,?Ÿ®¥úx,© ³åJ[TGVLH”ìÖ,¿šÆMÇÃÿ$D1{ÚçÁžö×H_GÆÌýÜe<ÿ!-¸ÇÙþâ?sc†LôGsdŸí‚žÝeo ÿ5ñ+Ã=]Õ‹üϹ\ÞVùµ×lˆÚÝY¾§Ÿî†ÿ‰ü´¯êq¶›rÓ¥‘]ñœó\ÿ еH²Œó?ñR¿rüÓ^n}œ þ'(ŒŽYc md×ÿÄÌmýãlîêÅþç.ôÝžÐã‡_QdYæ7~üOt§}ÜãlO \´³@Öú£0²]È[,Y>ÎM zÚ´lÂÄuýÙ4ê ©ø*0 üÏa âDÑ‹üOp´[tèßO|Yöµe¡éã­Õ[sÔæåq7pþçàb|œí>Mú£&²!=zl„ÈE–å’mýmYLc½Þš£Îìî©EûטKŸ jÒmÒ·É ]ú£'²”¡m£0¬¥˜²ÌýøÑ°ÿvÖ[÷¨3C>—Îñ r¾ïÕñ­í÷)Ó=‘U|öê;ËÊ¡tQeYåH½uÆëÓŽ‘åð?›)‹›ëßxà²dJÛtDvLÊgèæE\Y.3üþao½uæ‘¡7r†ÏÿÙFjÔ°Fþsã*hÔ5‘e¤Cè"̲ʱz2êŒW&!i­ª·²1pMîDG´îý@6º}žÝÙnŒî!Æ,۫תå2êL0ÛË÷Àù_Ý”rÞaQi4ë’È2§^‡ÞÅ{þWþUgûê}Ȩ31#Ë™¹Óáu´l ì½ð?«Ü1£ùÂ2H^ŒYæ†.[¥Œ²©#¹i*•B¥Ò÷YQ÷¨3d­Ÿß[%ð¿ZȉŽhÅ6z  ?"Ó7—Ñ‹5Ë¥_|£¡øxpC£×#<*ú£#²§Š‡ìÅšåâåë¹6ØøŸóÑÅë½ÇuÐ%‘•…âQ_1g¹ËFÃÓˆ*øŸ“¹½1¼Ûè-„þhŠl·–gÙU÷+Ð}ïK Ûè}*<*“íáþŽ‚5ÿ‚‰=˪j¯8ÿ-Ûèm2pY¼ú£(²;~üØ(øØ³œPíþ'(©QáMÙFoôGUdížh2dU lú£×ÿŠãævó Ê‚þhŠL÷Ux%Ñ]9Šn ?zýÏØèe ?Š"ÓÞ·àÆ{›Ñ±=ôG³ÿ±Þ';ÌŒ+‡þ¨Š,{×£>ó3 €þ¨õ¿âO·ʆþèŠl[Àº/Æn¸ ãþ¨õ?ê½tú_ÉÏ» 9½_¤Côú÷K¯ÿÜ8tù_vÌ4/ÍÈ7ôG±ÿåEGx{…G݆ì(ó¿ä¿<:ð³$dú£Öÿ*ã—)G£—:ÿc6Œ¯$ºÕ%H5ôG­ÿ¡ÑK¥ÿUn˜ŸEf~§Aš¡?jý/7:¢]ËñÑ÷ 5ºü/gÃè '¢C?è^ÿ«<®® ýºQ综üÚ·7_èZÿãnof½hýPæ÷~û1¸âýQëw£#Útˆˆ¾ÑåeÛgv Pþ€¼BÔú_ÉžwŸmöõMˆKJù^îã³¢^‘$‘¬4^š€_ø¡?Çã‘vÿ§Ú3Ÿ?üÉôæ+±\ï ÔhúísäÈ(¹ðÓ%!ù«HÅ¥SH<üÖó¿Ô(šz®—W¾ÃbÙn_d:B˜™~ì¹°NƒuÈ$ôG³ÿåGG´oAk'~2Èw«lB²ÚØYî®þñʃ~Ý#díFü¾ýÑí•ñ‹ôw¹àÂtóݵ1õcµGV‘sùð ®î†gvoú¸ÇÜ_J¯ã^èzÿÃ].²Èw6å k‹,÷O ;x¬©¯F:ûé=ÐÈ ðú0| ú Â3¡MSxþç&r¢#Zá.Yä»%ÛþÍlmÄÃ剕¶×U~ßHNª‘«ñFÎÄÙ]vÆ Á±xA¸œ*Y÷ Ô!ݹhèþ¤à‚Éž»Óà}èÂO´Ú,×ð?€ó?3wwêÇj;ïƒþà€&ÿ»Så}« úƒÿšüïNôLý½x úƒÿšü/ÞýÁÿ…þw;:¢›ç0xôÿtùß­*ïC¯õÐüÐä¬÷uh¾ÞýÁÿUþÇz_{/xôÿ”ù_êÆï–áQIð>èþhò?ÖûÚqÞ‡ÜAð?@“ÿ¥Fo ïƒþà€6ÿc½¯MK ÔýÁÿeþ—îÑa|Tòý!2@“ÿ±Þלõ¾tä úCd€"ÿÓ&qÞ±1y‚þ Èÿ8ïkÆz_&rýÉ"2THC…BÄ£_Þ”õ¾,©r "‹uÈdOáØE…’ñ?Îûžì‡£þ'@ýJŽZÿ¼ÜÇg…¾PÐof Ì:NÂÄ5tesÉ@¡¢IwvÜÃQ ÿsfý{¯M¿}\iê{ ³àM˜*t˜éã5tekÉÏÕð?g×oœCÈŽp®Ô4ƒüf0Tè0kº²µ„£þçÜú_ P†Ä0s[e’Õ†+µ»NÈõga¨PˆÚ̺²µ„£þç”úG=é=Ÿþô\÷$B²Uë,ÖÚýÎV?Æ•¾ NËùf€ …¨Í¬+[K8ªáBVkX3òHQRà<¶|ž{›êM6) lbß6`õWÞû¢PôVW«È§¨Ù¬+[KPôç,RZ³“Æüõ×Ú’mdr%³'ÝÉ™8 €ÿ™uek g¡ÿ]£ËM+:CÈö0®äñ€ûͱ¯€þgÖ•­%œ@ëzš·f±¥ÍA™„è’—¤óu¤QÄr¥ëùúì0 „ÿ™uek 'p~\Oÿ^ 4\1.´¯2hÊaýÀÆûÿÈ2Ÿ®Kõ…œÑcr°Ã€ÃLS©*ÕlK]Ù\€cTïÜxïÛ׺èX½¶ … ³d^×=×1ÂEÈ«P ™3£ÿ³¯dÚ¡KTfzÁ”–²~~jìYÇà‰§â«À€^–;ƒ?îÃ{ŽvFbªÎ­BÅÒïËÕÖdÂvL•˜õ`.ñ’kZα}d®ÉÊAgÞ(»ÓÂÿ€1DÞ<ÞÊxixϽöW³wr{üÏJ5¶u^A:V¯¥Ba° œä]*\„¼ Ú‘'NæÇ~vFè™™†^0§eÖl¦tÈÁj;Â1x¹f^w£úÎàûî¨ÿ™ª3G«¯jï ËÕÖdÂfÌ•(¬bæí1/çØ>2Õdí 3o”Ýiá}À¢yoe¼4d…»×ÿjöNîÿÙÛz éX½– … ó»2v’ÞF¸y ¸#óšØ¡+0 ½`N‹ç]B. ®¶#ƒ—ëÝ=µ5vo܇©'ëÓ¾:s´qܼћ,W[s ›1WbÍÿÌÛc¹öï#SMÖ:óFÙÞL!šçñ0§aêI÷ú_ÍÞÉò?{»@¯«6Ç;V¯¥BÃÌð4Bc…‚EÈÜ™8ÃÞ]èžÿåzWÛc܃C>¯¹3Ì+O ©GgÄÆê,¢}ТÌrµ5™°s%ÖýÏ;\Í›¢°æUåPZ ° ÑX‰qeæ4°%÷R³wr{v¨±ã}»»@¯+=Žw¬^›ÿ &ó÷%‚Fh¬P°7(:”Ú¡+à½`ìµ|S9ùÑj;¢ÞþçõiGÈrËa^ùè=õð?cuÑFET[mÍA&lÆ\‰Yæ’9þ6:ææMQXóªr$-U°ÑT‰qeæ4°%÷R³wr;0u¼owèu¥ÇñŽÕk©P°0+#gèÐX¡`joŽ™do„®€?ôBUZJßôõ]ؼڎ¨·ÿ=2ôFÎð9–;ôò_¦þg¬Î"Ú€“ÕV[s ›1WbÖƒ¹d€¿ŽùŸySÖ| णi1~€¢¹’ª•™ÓÀ•ÜK½{'O¬ tÁ;VWfÑÐA#4U(àŽÌnfo„®€?ô/-«XÙõ;ÿË$$­•åÎ0­|Ȧú Æc¨ŽmJ'¦Újë1È„eì)­k– X.çˆÿ™6ÅÊAgÞ(ûÓbú/D^%U+3§aÈ&7Û_ý{'7\ë¢ tÁ;VWffÐ6B– ¡¹Bwdž‡½ºþÐ æ´è7[Ùõò¿àdvOzXî Óʽ•J…r‹Ã+1TÇöÃOª¯¶ƒLXÆnþÅ\2`¹œcþ—çQÛAgÞ(»Óbþ€9D~%U+3§+¹×ÿêÓ;¹¹ã}Aº@¼cu… aƽa¬S˜Í µ#Þ"Ìâ©vFè™ñ‡^0†iSCuÕöl½ý/fd93wºåΰ÷ÁÑÕ˜ªãG«kŸQ}µõdÂT‰YûÂe¤_ÚÚ­ (å2{œK›ÜS)^}~Õ(e¯Xvöq½üFèSœøR€2$†!äu•¢òSeß±Z~-Çúù…ž` £kùc+]¤ºl±‰ ðtMaQ39Ýۧ߸'hHp Íùºš‡™kÙÔ/h¿BuŠÿÙÃ!¾~ ‡Rà¿©ÚgÍk#kÞCú¥­]²þ CfÆ+n¦+¶“$o¶ôüBNu> stream xÚÍ<Û’ÛFvïúŠ©¼„Saô ÈÙJ­×òF)ï®cMeSeûCbHT@€@´•ϹtãÆ¦fdÓV¦Ø8ÝèËés?óÕÝ‹/¾QÙБ҉¼¹{¸1I”dêÆJ }s·½ùaen×BH³úºìòí«ûrwÊû²©oºû/¾Io²(Kd‚ïÇ7kxÕ¦†_}Sß®•«®ØÐxx+ɰÇ[™® no‹c¡ëbëoÅŠ“v²½|¼]ÃkMUn>ðؼ㎮oËM;ÂMeÆm☷}™W0,1«¦Ý­kâ”I²ê÷îÖU^Ãj;÷Ü<ø°Ÿ‚Û»òí»v¯|ÿ:âŽ7õlíÄ­Ýæpò ¾l²ù&]rœëwÞÓÉ\/Òº®*oý+MË ²&Œ•½ƒçõ6töâýPUö·k›UUv}Yïð!¡Ó!0¯*×ðÝœ:ó²uͲã×êÆM–×nžã:´2^Ù—°7«Æ›NâU]Ð%C+çŸMs€ *;¾ W»¦-ûýðj¤^Ýí‹Ö½›ûF>ân›ÐÒ‡¼Ä½¥b•m“opø¾è^Ý®3#¥œàB7@Ö«[8­X­ïó÷fÒ˜°I¼»5ˆ¡SÁ½Qh¹·0ߦ?µ…ŸAffµeúM§ô+3MhÄþÝ©Üú±÷Ž °MĈ™PËá½IÀjìP´yßà%! Ͽ߿þ’}¾s]ÇÊ>Õ ÿ¶MUÌ_-{@¼vÿ¯ÛTOŽ¢îà!;¤Qî0÷êø¶‚…kÐHP=÷ñ`=•®ÝE{p#àäÁÛ~_ÊÐò_ÊzxÀ™ÌñwS´=Ñ…L ¢…¡@zù¡€5ºàÕþWN%ÒªLÐjÝ?ŸŠzS¼Ä[’|èÙçndß0`[ ÄAÈ#3·àu8¢1Õñ dy»*z¤df’¢mc[Â{ ø ÆA=Þ¿Z-åêù'g82ð¼CvôûܽSN°¸7€ïŠŽ»š µuKâÖ©±PK·ù—¦-¼ÃÃíKä^C·ˆo%—ˆÉ\&&PKç‡G ^i;‘¡Þçn ,oo[ÿv{ªàØ‚&¾WY "¡¢-Y¬eW_UÃB‡º‘fñeXfWÝépÈIXŒ´F–B ~μZ3 ­‚(•[‰×¢”‚©=ë´=IN¥y¡”N—zÅzXè‰"ž_Ë$ŠDØs-¡!ßý¡é¨­\íZÖP HЫ¿ä=_:÷3{C£jê]Áo ºëÊûÊõ|BèF†ç1cM §ŒPÖÇSÏ0Tí¨µÌ7„óÿñ× `|ަ³)ŒŽLjýéªátHÇ[ xó %kÿÞ\¡íÛæ´Û3ç|ÿÚ1!šž»6MÛ;½u܉aZ:nŒÐáA&0¦ ²ý©F d3^x ÃE(:‡3~*]5Pª'y±z‰= 1ŽyÛ2%Ïæ ¬wä×»(@Qk¦”µH¢LÙg“Ôw{ûæ¿Q—k½z{òÁ§îäLž÷°) dx„—õ¦:mÙNG¢£ â<°í²ïŠêÛí›Sµåöa¤U|d3Q­Š¼­>ÌA ‚¥®ÚÍÒóàÕ¸-”-5@f³áeÄbõ¸/+§ÖÉ|ÂÆ;¤†¦ÊÙ CÈ ú÷¨•ƒª®„nFßÛ“Ó ;Ö­NâÇ€ä¬_nyä-¬[•¤b'Ÿc}·sqªÁò:¶eƒ3”¤³‘lÑfÕò°~ßtwÒ茚,Y 1Ø} DÿúpìY’DÃäútÂFþ¢é%MÏ$yhQRs5CѺÁßa’/Q¡^_»ENÖ€ÍQ ;£ÇÉ^Œ3Xð çf0Dý«M]¹·P¡R£Âó2hË‘5É7¹Þn'}ét¾²– ÊcëD¹ ä oZc{¸-ë!y:gû:0.P+³Ú"D‚8' o¼vÅ¡€åmÙ;†4—Lƒbñ¦²ñêî¯ßÜ ðÆþˆ†zÆ+”pzr-N•WëÐE*ÔÆŽT¹åÜ,hÏÝ<ÐpxÍ Î :ŽîªXý&6豜iNôœm†F%XŠl'þ›{UC.¹ˆ8²úH„d±s÷õpftXý@Ù3§Î <<|€M#ºÔøûРøÂVÕðžèµ¤0c4~{öŽ´uªÅ²@u2FÈ0¥_óïpe/ù±ƒ×†BNÿ‰o± ÊÂñ yÇûÇH'à‘ Ÿ MÚ%B'{B(i-OPŠàc7xÔG°WCÒ¢$nœOXÿ³{äk¾† Ú0àÑÝÝ‚áÝpÿ¶qÖä¾ìPTëtIÜ?œ0Ä àîÁ±Þì-¢T ¯ 48~>•ïò <|(Îu§‘`· ¯ U¤ãlnK"`‚ |„=ôÙªpßà ÛæÀ][¼8âCfp#›È…:;3¼ëy°ø`{¾,¹þ®àet~(r²9 éXZkiÓay:ä(B˪ðòÞ5)2€ PƒMŸeHØ´b] –-ø;c„ÞÜ©5°K§Ïw‡3‰Û!Bx‡ø‚›È i6èXþ{3Ü(Íã´'² Л‡£Í½Ék²ÐjܲL^¼Ï7ÞîÄâÖ¸[$±µàY’Ôgx/P©8i=XÛ÷§žœ¼Ëwìy8«R ÑitN¬Ð¯× *ëD½Ö…p0ð>²ž’‹•…[Lò…#`Ø¥t¡ hïû¢v–Ž!UÒ[ Øühaù’¸é) š(r×ð°g²Æ&ß…H‘îóÊÉ•$3§MéÆ9-XØEÀÀuíøÉïA2Òm"4lŠÑ³µ@](nÈ=Pù‰pOGpbœ3Ìv+º½.˜ÚÀBé)MûUÀð>w&È?1€ùÈh°Üiâé†ÿbç).7¾ãC¬Â…XÅ%²+1¢Lì"#zwj¯[ƒ!üu($`|Œð½ÅCؾ`×n ¥†¢ “H³ví4EÇ :2€†ƒYŽ%FôK^‚èÀ]ÞpnHã>h÷v ‡‚­±q €9Zð tnß;™„m Õ²å&¡1eÀÝ{óÀ@`ÌõÇ%¬G£ÌHÀÛÁÈÀ&§žt‹–é e2c”¡FØ“M/9‘Œ@꽜@ ?qXð—}@kÎÜG´ˆòû* )•=õãçRÆQ&³›„òɘ„0 ¿ÉÑ;oé"Œ? Ö4¶KŠ‹ 2lÇàÓÀYôä,KŽ"<Α6uQÖlˆjÚÔÅsÓY ‡xøxu–Ç®»5‡D‚b•d€L‘™}È ŸX c‹xÙR'$T¼öøÀp Ëb¿7¸}pÃê~ ;.^€¹$Ú‰ô¹ 4RÖ.cKÊ[ %D™D,_JâÔ¿m;÷°“©°ã§X,UnDן¶%žß¿?w=/»žäó¨’¶ÃTF„ –Ãïqh󩇖ÁC'ÙòÔ@IâÄbŒ}¾—DE‰6œ1bÕ³1òUŽtò[`D<#—è`8Õ}ÀÇT*í©íoAüÏ¥™n×™ ºçûÁè¥6ô>xjˆÉŽ“À,"ŽÀÜý¡í0àžr¡äl7°P<Á¬žã”Y²"U‰©¨d…z\ÒçWÌJt޶'‰3+C$6D3BAs²i#BY¿µÐ*ŠcEAc‹+¬=PûÇ=.Ô>ó¤z! æÔ(Iqœñà\¤DBM{Å£ŸÄ?åÓ¢UifÓ×A]Œ¬;4¿‘é~ÓÈ"¢¯±ßûÐ~-ìw~=‡F0Iz&¥aØ‹×w/~~ìßð•âH€¤5ZF"Ñ7›Ã‹~Šo¶Ð FW¤²ô摆n ±)²Puóöžø ‹ÄL<½He"!ì‘ü*ï§µ!vµp©Õ–!ébÔ\%.6ž`5™¸1 t_ú±}ÔÒr¾í™»ègšî:tcÄ»þC¨u“rš\~×~ºò7™aÞF"Æl97±¶ D¢Z¸¡ËQœ‰ÎhîœË€ÑKIBnÜB½‰Kê-Dû:’6¸6ÀÅW3ÁÓSˆ%·EjCüàÔê—á@,p §kÿ+ú_"ÌÉ d€xò8kä<®:ˆAú¤ü…ƒ fƒ8­yu·‰y­ ØÎwîî(€£ã©›ÄIRI68à.óf’`Ì{Œÿe®Æ {Aot½ ”Æ©K]ë#RåÒž©ÿ¼8ŒIÄ”¬øË16hìNyËNyÏÁÓÔ¥WÁŽÂL†¸4×iÑ༬ŸãÝ…jtë½ë1G•0”cÑT‹)…¡øÃ‘’ýÒÚi ;/F¸¿tb¸ú-ØàЄv;ý—P©…Túf=Ä•h˜2*D1þ!)^Aµ0@—©\@-<íxp 1ŒÁ¥lô–¿u.}Ì)ìâ€40næŽ>=yšFÎ%‰).™È1K€É 8('28>™«ô™FšùÙ%_XÎΖ/]À‡²GWd ƤYÄöƒf­ÈäxÓÒ„ füˆs@Â9Y:Ž'á:•e3—‹û™‰cÆqŽW2¸s¨>‚¯ödd0#f1à÷®ä@ŠÉÔ‚H>[}Gñ5¤vˆ'Ú'¸M$"R‰>'õ%·©·ñ§•àX\<¸ƒVË-^Tl[L²6÷ _ò>h»‚6ˆÕTƒs)M'q$Ëe úU$SŸý2¡ø{:Ʊ]•Žoƒôå…æµ§¶+\®²s!uŒwIL2Õëc;nœ€žaî´ˆvx1ZŽå€ð³ÉAWÕ2ž–,2nH©Z/Lƒö‰Ÿq_£tÄä©-Ø^®â«y VРÊ\ù”S‘½¤<8œ gŠ´NAmª}\ÄärÚ!¿ªÖ”qÕÚ -“ ”ñ_>rf8Ä€Ó*ÆêHŠpb=Bl8±5&J®iÀìetûiMÎ cÄp™‰²ãÒÕj1ÁðÂólYÍÕdƒ€åÜ5‚(˜ÜùÔÓÈ%‰¦ AJ•DRª+ Õ’;3É!*ÇÌL’NÐë*´¸ôJÙ37Q†\óŽ¯Ú©Gq=´¡£g9ÉíÔ &I¶R ˆ(_‡8±Gsþñ55мdK£'’¦æ*BCõ,¡+s\­¥Š£$1ÎgþK—²ÝQ¸öºUÇ£­¦çµ²*sU\µ¯ÖëÉ'ÿÙ¤Ž]:Í©ß5¬¶áµ<㠃ݕ¾ì?“®8 [ýÞ⃯¨‚æ¼zÕÜù§3™àpªƒ{Éþý˜( œÞ5hó-õ¤ýWaÚH.¡šT’K²ò|9ÂàebÕ8X'ß:ë*@Fiz•,ªq{}9‚·ª_J°Ë@ÒRH=o2õ´$÷Y%Á[ˆ“·%Fjš ÄÈ(¡ß†$¸M?¯fK?”4³F¦ŸaãòyÉ_U:·Þ{†/¬!ͯ?Ç”:%üèèAÆbsþ=±+C™QaÄy|¶“Ù᮳š%žGãéÒü—k)L$íÒImAnµü! +Q …  p˜úÔÛq-Tè®ì´æ^Ù‰ªì%“Ó‰¬ø ü¡žËØBذ°U”a|~@ÂÕöÜíF ÷müZd"JE¶ü•u aà lB#ä2é)x*³L:#(n`¥ó¨0Ô×J1Z ¸¿û®h¹ÒÞÙüC”¿ÿÅéj—2à‘%ËГ³ ú¨.³Ÿ­C¤ó,­NV_ч›Iêÿ³‚õ1‡$° À²ótÍ8žC@øï'ή©¥ïAõ0‡4á3é»Oˆ`]`UP†Ú&Ÿzõêé "*‘u%òT3¸Ù$½ÂÚ0ÏÑá—5cpò‘‚=&0L "‘ªó¤ ·ò ߀þ¤ñ5K^ÓÑq! íyÊu²X¬B¹5tüí<°8ùÇ$>6ƒMÁ?È®ø[ä]I¡zh?4þ‹B²”}Œ'ðu°ø4Ï>ç#zí>ŸÓ.ÐÆÿîýIxàº^à?]AÛèi¨Þ™ç„BÿääB,Øgšÿ‹(S­¯bþëT/=H®ámÙ+q >Æ0~ù>D¢6’Ò\GSÎi”"»Ù¬­Š²Wi”•Ÿ?Àt‡áLõuŸ*û‘¢AÌÐÛÑ. TA=žÿÑ(6ê‚XH#5Özއ擣j aÁº2žßýðêʇ߄æScZ†„–Zýµ¡8S’]²€Á,HÆb£+“~‚k5=­^žÖ^ù¦®á\ý =û:Û ò- ma«ºÏè“©w…L6¼Óég;W‰gæ˜^|—;:ÀWÂ̯‰ÙëB¬‰IÙkJ@œKº¼)°:p`³Ñ`œKh0ãT} =÷Ï.ÄâÌÕ-~§ólxfZ$r¿ ¦§F[ ý,pœÞ<„e§céyÈ™ðÞ‚åëFé'4™Æ%ø“ç`ÑwFŸá}ŒZ°:D=µõ©¨ù›ÿon˜B]uO‰g1껪*—I\@vE]´§æÔ.ôUÁφ\c<~’‡d}Œîê¥çsSX“ß6yÿ)óáÕíÚbZs’\Ô&â“ 2ü/"2€‹5@š¦N”žÂ÷ÿ·WN endstream endobj 64 0 obj << /Length 5983 /Filter /FlateDecode >> stream xÚí\Y“9r~ׯ ÷‰kqWaäyÙ’-¯cg=Óv„¤‡j²š]#=UÅQbüæºHM¶z×ãˆyè.âHd~™@&êõõ‹?¾•râï”›\ßN¬Kœ×“TÙD3¹^LÞOo®>^ÿçßfƒj>QJM—çUq53>ÞWWr i9ý ¤ôÃì¶*(ã%·1ê+‰´¾keª˜AiaM[åƒÐ.T—øTgÔN’?™ÉÄø0âÕÕÌM‹‡r¾]^Í´›Vð_Lóû»r‡5‰sn2øýÍüpÊR'V†bÅ|»¾ïæþ¹lîðG0˜—Î $dâ­åúïÿ½Ê¥ýø¢õtU¬×9&ÍT% Ú’ ýVLfÊÀ3þÑÛ«LO«íjJÛý’nZ6üš¯ê-§n·«ÕöJeÓÏ5Wiîò¦ýùm³ÞÖám ë²ø•ë,ÊzÖv?s¾Æ–nÊå.oÊíæjf…™–5?¡§E~³*¾¹š¥,=¬vUಷkn……ß6s™J§‹¢æ¬yºü ¸%Òq ì*J?-7óªXL“¯V¿r6 ž0”Üñ[Ý÷˜Ê¦ÛÛSÒ4v+šDëïÎòˆ‚â$6áíƒÔ¦'Цò+Õwù=OáœâóúßÞ^I)§ß…zMÞPkzš×œµ"ÖÓÜñP–séL{3ÝV‹¢ É >(ŠYÔ/TÒpâ>oîBYUô2Y"]±Ú ¾ý§ÿ‰°ÜUD³§)Ç,¯2Á,OE=w+/[–Ì4Xž&ÒŒ¸|ØÛõ’Ǫ) oÇÔfÊâä­äB…E ë¢ áÌϘ.òO¡*’¬Ü,k.„_ʻ̲Di׊ò&o&Ómy±ê¸¯îr¤OÉtæ^1\jA[úWÅí6,Ö[MQ­ËMù%Hfr0 5æˆæÍ]YÇè'—‰øyˆ&>˜•s‰àÒ¤Š›øKM¥H¬tD‰qz@!ì>M¼Øô‰š~i#:€üV@ØZ  î[•"2›d°d38;B¢œÄad­¼|:ìÑÜ`'V¸®Ã}èDMfY"ÒQcÙ¨ŽmgôOÞÒ´h+²é§ cí†éÎâíaÉ n´Rß0õ]cÀ %…¥™·”Ð0¬l¼Ô¯‹‚ê5#Ät³[ßÐïªÈ€M¢ä@KÌÍ,ÀÛ÷K@n KR?#W «ë´c¥2<AŠtÐ ¹“p1I",¼â—“Ö\’×u¹Ü á[³ågæø¶DQøøž»ÃV• ¶$JÄŸ|U~¡ ƒz€ç—¢¢¨ÍM[tó£Ôîž±5oøgéét0L¥cÀÐ@¤¢œ‘Òá¼€·”fœâŸµ¨ž!ªÃ‚¥ÖL_—Í,ÎmEø­mg ‰^kkµ&(j—9Zêªn€—MF:€þ~Û2Öi¾šãdHwØ Ž¬&V§ `’_Êí®æ7$J‹õ¶X·?VN˜sn«|o½d/å‹ BÔº—¹‘„gäFõÒ ÓC1‰0jÍæ«m½«Š$b‹Î¼µàÈD“çI&)°‡”jʆüìÅ›ë?¿@y¸³ÚO@÷T¨É|ýâýG1Y@BŸèýL5×ø ±d5ùñÅ¿xMfüÄ*aôØ”öÆ{[ä ­¿Z¨4„Z¨€ð/f¾Ó[%ú fæÒi1œmâÒ¡áÃb½¾Î«Ø*• ïÇÚX‡E6/4 ad;¨ñr„½ÉDâÌÉåZ&Ž6ƒ±bH,¬NŒË×òN5N@9ú=ÓdĆi" PÁÎNt8&¤9[q…Ñ8AE ×:/ÈWU4»jiÑ UÕx†¦ï¿ð#ÖÁ YSX=òQóÃÙj›HÁÐß‚ÊUw‡Z¯Œlð,Ž' Z9‡Ïò|Rš>Â÷3 2ç`Ã7Ãwf;뀰‘õ(nb[× «BGDÂêmL¬|¦.«Ÿ#äÙ4ÙìÊh3°×BK Ü6Ò¢O¬Ä9-¦‘âV­T*ÖdvªÅÁª%ë2JŸI¨æ¤Û3¡â… `hB+°ý:éÿVFx ¬sà B‡Ç.Dt°µOa—€ÖÍv'`—tÀqò$/É3x©³ï£†¿êÉ+ÿ:¶ò Ötól+oû•'˜û Œˆj™Tvô¨·UiNŠì9´Œ(OØ/¹KfåèLù' ù3‹ä‘ÅY$Ëö2àߎ˜Cë±FPÀn#ìo¤VPÕžJ,o7ýüxW£ L5óOT]§ E<Á°;7°YR|•¥èU"¾ì±ò”¥¸§Çà.P$& Üªhb&lIá-;‚Ç ¢¹’„}ú Ì z“1qÑÀê ’ç³{ã:»§ºIҿ凈fîÀ‹t°¿' ?ÓÎü@qGÁ¬@×ñŽˆÑX KÑŒR=Eð€)Bÿ4Q½MWƨ֟±á6` =ÑYŠËxJ“ ãǼ6Ö]ÔNêáWaUd¸#È ø±‰™ª:Iû=ÁbË¢«q§°4÷¨¡ý:*š¶5Bìñô1ýAq¨ÔqW×áo ·lbÓ‘áù³Þ>i.#Š‚ÍÕ•Èþ°ºMRû5¬~°GÛÛFjÝQúŸ¯fÖµÄÜ&@tïí¹‘ÉŸD¦¨s dç!“y™²2Efmé#”“ÌÙ°%S´™»dKö†à±MÅÓ·¿µM…»Ü´ün*@…#¹-$ÀDjàž[¦èÕÍçM9/ø­x¸_•sô<š4ëÎùŠéŸý©,¼ñIkJçžÑC>< ­éPQGðôèT”‹èT•· glŠyQ×y…Ç›Œ±ò–óÙ+Äé¦*òP}sjú]Ì÷Fžºp‚™‡'ù“øÔÌÄ¢©Ã±&ÙóTãúϽ»^›*Çu²(KH´GêÖŒ@YË*J‰ªÜVèh¤ªVi&&:×dô 3³þñƒN½Ðº@ç,žžók]®ïWEÛé}s7 §Æ¬b=Ø”B‡]yÅGâ/Ù½ÎÔSÁgĘh¡tRBÊùà¢Æ¼¼ªÊ_háêÑlÚ³sxa‡j„t´æÛÝ W˹ÎÁL/|P ‰Ö Žn£§×wÄRPßßWÛîXsÚ’&ÿDƒÚ„ìð,’eÔ!ñþOy%ÍGè ³júc¹™‡ù79º%qÊ|f âcL‡g™/)½à|ì Ÿ‹²¸ã£2„œö’ݾ÷gšî˜ØÕ”£€ô%³4dò˜(Å‘P>rù´Üƒ6ûœ}¹A¯W¾ƒŸ‘„¤ŽôàüiG1Ý$ÀÊùjKÎux}»lú×#®ÉÃëf›pïF ãVŒPè&D;@~íé°‡ûÝþá¤, nZ±±5Ó°«Qáˆå/ßÿøîc&ÙL‚RIý°ÖÌÂÎiØePÔ<[^„ì ?ßÓo?‚ªlúþíUÈC®E¡?b•tºì$#©Á2‡;ÔªÁ«Ë’_¡± òÜUPÒ â8(<ËQ ¡. ?—K€Åm·Gz5Vâ¦cMî>àöXoX§ Oôo×\•4f¼B裂xÓºôóšË‡Ð³ÏE=¯Ê ç(0^õ^6HÿW<ûé EP/˜¥y PôʄĈ {Ü›]ÃÙŒUø„ޱ"´S.Š<Ö}ÐF(B›´ "Éoêíj׫+’7M…Êú)BýfËÏ?í>­ŠÏåü ¾JÝ'‘~Lbröغ ó~¡ÑUüz»£˜JÒR°ÏS{9ey‚‚|µD­r·F¿Ÿ®O,ØîB+¡É(²Ô´ŽZ¸i½*—w´Ä<5äè_J p!‡9·±$ZÐÈç-“ðOpÙî[¼u\Gå›ZŒEŸqµ%·1*Þ@sÌï ˆÆÀXHþ^r@rÌÕÙ5wˆKXÎüç§ÇÂ+îÛðž DxŽÆÚ}ù2#¡a×m–Mx£þSÐø2/;Õß„ÒbY<ÌA˜YQ*³ å+ž€dñR Ô;RÆ&Âà³ N_ä¨e݉åÔ»›uÞtîi xhÈ„ ®låÐ9qèŠj|H§í—ÂÕ,‹ß¨kVrZŒu¨š½B²b>#cm¹„슓^Þ.]½K $CÐÆ]DݾÔÄm@ZñÓÇb91 w0øV%YšÆs b¾tÀ³'E|Óèƒ&g-’á4^ãìx Š¡cìŒûÎRe-œm›»o8çG¦° $Sw9vÁðÍ9´H1`üZµ]ÿŲµ’ld­1úÄX1 &†­E·J(É´ û#;£“Òl@Ü©1ÐK^×»u¨Âö&å¶u[&±F‰ß(ŽáZˆ`ïªxkEXF[,Ò~¶;Þ€Ÿ[jaš†Š?,˜ïêºÛ ÅmNÄþö0rª¢Ï)àQÊGGÁ+1?”ß•EÕn©JØfƒjZ°¯_Öï„î¶`VÞÑ.9[”þUT j­H¸Z:ô^„]i$dDûDôǵU‡¿´œ ™¹ñ l „É~Ô-~¨4©<.]¹„¶Áiœr˜ßÙ8üÊX¨ðm¾Ý!…ÅY)cÂÀd¥cŒê5KnW»Ço·]q²¹J æŠG¼R0(F‚Ê^pœ1vK¨P1³ÒÂt"ê ‰C#ëæü#q±ÜMñ°$˜:L dí§´ÓÅW”E|æó9ç,Cõ-?[5ªi°qú.òjŠøm»#5 Ñ–°O‹Ö„cb`Q¹ÙP--µB¤ž§mݨòBÑî¹]Ä–ùP'ì.ß IJÜd$ïØà¹ í*¦nXWŸq}÷öáS [,è8Ѧ;¸-bÎɬ×ÅaÕ*FTÛ$siÿƒEñâHAw©n£»2ûî‡7h%}úážpêÈá­£³Å}ó86Ì;·7ÙqÜ‹H€ö'Èa§ýðœw.4 ÊN4Æg ,Ížç'FgÕ{ÖȨÉÂNÅd–éÈÉÎÄM L¦Þ ;:3{bf>1ý9ïºl÷64аUtÝT»yC'tød—覶çRñ%òõV(šmfï¢Ê¼¸G3ž¢bóꕾ¡–~‡Ð€/¤bñäpÞ‰üÂŒ„),‚­è i'ä> “p‚ö[´[óh:ç¸w ýº8"aèïèE,8ë,¬½ž BGý¡Ÿ÷Õ÷ÕÜDŽôM¢ÒŽÉŠyÒ’Ô¥ħ²Ã ˆ `Þ$,jÎ%Ä€ç;¦F2à.ώק#‹<'S=æ‹<§ýøHŽ…–úÄùXdépÍy‘ž´æg"LŒÕ`Ýô%s´gÎñ&†Wé(ÌïQ×ÑO‘¸Þ1›YáÎOœ%3@°ƒøÙp×ÀHG 5*T…;¬ö8%oº(…‘¯Xº$•Ý(ßEÜT`òšÃ{7Ú¨áN_ƒUná‚sŠ/ÌENš¤è·´ÓÄì€W:"ðÒy o7P)¢e$zzýXl±á^±ã[ÎÝS¿,®™¤xq=ÔDØs† Cý)¦:Ï~É÷ŽiZ#ß;’¢–ŒWv¤aÑ„ãÇob±3F&¦_ú2Á–Êl¿É`¶Špâ–£UÞ°=Jjèå!Ñ2’’~•úŽÎ®Ý-‚NB¿Ý\ïVl­ã‘•'puÆhŒ’|±Ç¥oa™áÚ Ôè¦x^ÛîøŒÈ½ÓàTb1àRD{Tô\"Ý%¡Æ¯ÎŒë) V”¸UÌ0ò Ô·<&ž‚åìRs¤õW‡[žqUáØ<$¥Ù W9ß³˜%E©7Š{jä%Á ß'0 zæ¹h}B_D:z$"ä4Yõ¹dÕ‰ú,²^®‚^G{¤‹R ¿ç&¬>§Ÿ]=`œÑÏÏ®EìN)n`†62jgØÓ *³µ³Gº_cˆG'šXxÐS€ì2›½æ´“tCíȚƨ:6›­y桨¨A=^à ˜ýSlßàU¶/7À×`´e阯٠êœP;ŒÇö Ü“VCž¢Áq“΃ # š£A‚OGGóó;S²Áª½Øgi³ʽÌožë9ò9gŸ -gñïol}/˜^”}=×t’^'Ú=—Ž~.þrEÅý7¨i.c}ù2…æRíÿX“˜'k’̇„ü®I~×$¿k’ÿ'šz'ÒßE•ì…òãD§m€Dô»4Ž‹a‡|Á_6ãV¯‡§íðvÝf·ñýùlv_ƒ Q<'9ÖgíšcΣå2}Ôsž 5@{¸Sœç?ÀvKr­pÄEï/)413{±@uˆöbéÈÔÆ— eìƒ_Yê†w ñί‘Q=„þs½ï¶Ø;Aø`úÛ¡{&Hÿ)MÉ_±+Ãçëâ_Ó.½7$Ä iŒJÍ#—ÞhÅ]Ò'¶üÓ\a.âŤs'<>з;9¬¬;ƒ­[bUÂqý®ïú¸FŠ ^yŠk|Éé=`â±ñ”—R®(öŽ^ ’c!NôíClµ¢Xsú "gñ‡·u¸º…Yõˆ¡ ÷hæPVøxâjKÁ˜ƒœÀßüû¿=êñoìž ß]°Ò…ÐUTÛtÝDN—¡€c§1µ.òM—IÛÒµ‘°i7êh˜Åmº Gw,"`ÈÔŸ8à÷Q×å—þ™‡w"ÑmÚc|`Ib™µ‚ µ´ia7 ÍÖ)èF$No–*ƒ½(Ãuþpr”6ÑýÉ}ÞQâý„CÃ`k·Ÿd¤—þƒ’ K]·Ã 6åï[‡‡^öï`´Æx‹“o^²ÝÈÓ_çíd,¦Íçt% ÞÃ',›’‡ýñ/ËM{m4”]ÏâwªñÖ(Þ……µùžBhé;‘+º|I‰* ;]†;²™í‡†Æm§:óï :¾+»ÝÌ:¥@w1%lög tVû‰=Ù}ëo²Éw- endstream endobj 69 0 obj << /Length 6566 /Filter /FlateDecode >> stream xÚí=Ù’ÇqïøŠ}sÃÂ4»î*@”C¼Â°¤lâA¢3½» ̱šž!° ¼3³ªÏÉ9v± ’_vúڪ꼯Êþêͳ/¾óW!VÚ«7×WÆæ6¨+'M®´¾z³¸úK¶+ošç3íCV.›M3Ae%þèl[á|>«võ®Þ¤{Íþm¼øñn[5 \Ïa)MöÝs¯³Í6þoõ±\Ý-«ÏgÖøìÍÿ|ËÍ÷Sa ÿm*<´thðñ/¾b:%r£=ŒAÿ[Æ'†°µy®½oÓzð€ÎƒíﹳݎY Ow¼=ÀäAÙö¾‡Io§é0ާpNy|^„\9y¥r+:˜7“0ïl𜌃+«Îñh¾ÙN"Ò6ëE“îoâïŸ~øñõŸãaDÇßéb0ÉÌë\¼fBåÒºEåÿ¾ÅÙþõp]Jå^›ö…Õz³«`V©]öfÖì¶õú&ž%8¨øÃa7¨¼°ç°kGØ}öí›g{†ø(®ÀÒåÂé+ ¿J‡«ùêÙ_þZ\-à&^®‚¿ú@®::X^ýøì¿Ÿ}5åÑn$ïsÑÂÎ( x}aŸ`Æn¤áŒ>ÑN䊠“67Ö}è¤VÀ”â)^¤éèL‘ƒ4yŠÛ‘ŽƒN" z"eàI¢™‚ cq4ä¢\åUäl?¶ô|Q€dÐ.ƒ‹T²}¹ $£ –D.Nóá¶ž?Ù~O7Û·õ.-€´.AÅ åz‘^AÈ\Œ_A#à ÐkÌçûm<ß¡šøPÏQ+g³²‰×?à”Õr‰g®»ºÞ¬gíðŸãàȤ·ôë±tD>ç¤ü·å§Ç7Sn°´mµžWéâuü…©âÁ-­EyTExÞK6×b' °0â[\J·PÞüTÕT;FÎë\€NϽµhdVÕ‰2¤@štã—ØÝVÛ4¥1nî;Îû7ïÞ…Þ‹kÔJhPÃ7å®þAƒP†Ý’†ðYû LþŸÝ¯go£!°ÿHàƒ@#Ï«8 .DîtKã6.¡¹_á(Q‡o–IEÚv*ÛS;èvàÓ^oª¿íÚàŒæ…ß2Rî@ÞÛpô0‡Ç£ý1ÁŸô¹5z½­›Ýf{Ï(à%-Ø3ªÈ®ÁÚ!€yö¶‡ò-M9’ øƒvQ§9褈BC$i¹Ì„kB 8¦Ö9ˆ\é`¸è¥x‘ëžPh&Ž^@ó˜N’ô]NA'óͺó4;âƒ~×U\{ð¹áFkG(ie²Õf[1HP𺶣X°öâ|uÕ0æŽÈ•±LX³ËÍú,LœÄ’µ(²ÍP œÖ"jâ"hÅøÛN\7 XšñºÁ¶Ì€1Yìªív‡†,]|›ÌeeB+°à*(ü­éõî6ÝÖ7‰Å§ôz·­áýwq¿È¢È^#ÏX: Y8HdO"ÕÁR±I áãëôDÚûxÞ’ß‹ÑÛ‚z ‘oéÙ“ô…Ÿ8²k…<þÙÄ ‡ÈQ¤Ðˆ-œ’^ ×z9™8b:J Ëåø Ž„POÑVö}§a¢"ËSª‰Ä­~&@b'Ì—(®ð@|¾[ÞÇ,-Éíâ”»Iwòß.ïYInÀú7g^ÄUø+åt§8ÁkôQ;yÄ8ydx«ª¨!`QB^ ]”x6ÉA¶ó!ñd<ºKÚd¹«‘f#¤ÊµS¶[Ïx´£çr’väT79z :û÷À9˜—¸$m“Vªâ è2`ÓÝv?L^o7«xóM9êXƘpHs‘ý ¢¤W:»Þ,—ä,h^2&°¨r  èZ §€d.ýИ+8o¿™Øänàúð±,,<×!…ëp= žy…ÄËhئ³4º(†ž%H~Òýýÿ®™ñM®åh‚WqHÆhòyÑ;­?;¶êSpPœ«Âž2ê=Pš4c«~´0'r A; *F¤ðëÒ5°¯tÁRbÑÙhGaW¨BuÍævèqú„“Ýmf:)A²êóÓõÚ:=`Æ^=€:L<¨NO2;uHÞEØW̰°¸¢wh›ÄŽ@6F §2‡[›˜LjÖóÛ±>„H©B(°ñ#IÆñÒ€UÍ)JÔR_ ²àw !À4e&•¹ëëîÍtq¥§$üë ^¥ü Vê†Òà×H™ædÞ ˆ¸aîš8°(ÁgId_ˆ5|@Ë3jñ§¢°ÌÛŒ‰40' %(`Ó14Ϩ ¤­`„ÐÁË÷œÚ äÇã½ò;0•,+Bäìz36 æ&l8Òv °øEåŒÂÉÐ×úÇã}} IêŽ÷gào µ–ÝF{ìCôà[s¡Ñi‰‡¿W÷qèòÀë æ€±Á¸÷óÿûs2ö˜‡ÆŒýy@îOAüKf*ŸûÞÉß1ˆI…¿ÜÝCdìrM–|¿Î3ÀÔ£_"Õ6ÝØZÀ<ƒ‡:üŽ\î% ? ÓŠ'›¾oz€·‰¡D.À›S^€~ŸdA´C5®]ø)A_B úÉ(a<ÝÈáí)A|Þ±fîè`È¿¿AÅ|ž6ëh¼þ!þ¬yÀFÌú£Röí¶*ßs`3`èIà„ǹóÇ︭ì³Ä§ÀæÀáMP“m‚h·ßr4­ P‡ž™;Icöö9– ©Im²Œ˜fxA’ÍÀþrî·`‡°ñé)ðËy!&YÁ±EãÒ™ÜXÁ OEßõ9¯}ÏùkHWãÚ+‹§Öž»B’¶íPõï™e{ ªi9Ã$ºcT‡¶}ŒVþž1O<¼]ÇÈòHáDïø±ðѲü_rÑ#Ó³îÙ)*bK0︇ʥWÓËÑ¡nGË6èðqäÍ7û*f(ã‹¿©‚&fªm¹i˜z^.ãÕu US m•…qÙ¢nÊ”­Y}³/g\zKk^`†Ú TžI©²ùfuWnëknðÄfœºãO$âÙžÔºÕÌ0ã£&EÚe`Ø\ÊlU•ë¦M5X?͉bቑ&&ñ ZÏ—›†’çFÚ4…k§À˜<QFïßR„ºÍÆ‘àe÷ñvúç¨X¦)‘$*|R"æ µ*PÕÛx-ÕU)ÌÔëy½¨0¡¦\öõf™Ç=ñÍ ¨K¼¶‰SL¼j/bú ~DZ}í‹îN[Û%2Î# Pžv„­ˆ^–# ²çš.äȼ ðL/ðjŽ]å`Yëô.·)Q ¸_LÜ”woËRø=&0+ˆ7û8?œ"ÊeW8>§:£_SU€mù€LKÑðzݤûÕO…Ðë85fØâå¾ Ï€ñ©Uó"^h –~¤\·+²eIëµaœªƒ;}bN‘Æ ³ &wHjƨ˜%„š]=ß/Ëí nÒ8V© çÂs$$º¾ƒâ!ij<èÖ'ãìþ'%Äð1ÌôÆKÃÔÃSÀÑøÏN· ‚#zS·ƒu¹˜¹ÅÛÒÀª0½<ü:±»E áѼlªøo¯ãÕ²iö«ŠÇJ鋈 ðÒðZŒ)eL` Ó_îË~ÿÆ¢4WƒQŽÁ·3Y¾fá;µèž„(# ÿTD¹à᪅= Wp &´]N‘nÀص¾´8S¥‡šúéŠ\„ évYÒqåžíÊ5"àÝ]O3”@ý}üY1sc™MOc•«Ì™EŽ£ ÁŠÍEz×OÐÚXý zÊ#‚&)Ü ° •¯®82 fí0íÒ?õæÖªÏ{.Í r´÷„/**X°u›xÞ³ÒÜåàÁòdic݇~@¤‚ÍK÷ 2Îøð.°6`uÅÉH…Q` ©ÆG;”—¹ÑgŒ91>V5—懼{ˆÕ¸JýgÓ‘ÖÙÇT¬9T¹ú©ª§ÜÃKPìáÛ#œž’^oY¦žÚïX`1RòÄ%=Z²` ªkxP%ŸcV…ÎX™µXˆâìë€-ÿcÍa|‘ǤâeµDæSiΉŸ_‘g4ÃC™J¸·!qw "5hx7hã.E$§¸ÂŸ„ž÷le»ïÍÑ}¬ãßó$ÒÞª‡×]ø…ϰê@„¬©˜ŠSgyÚÄäCb˜×»ÁÔsqë$Ü–[Ì AEx¥¹»¢âåݸ/Ì@$ÍZøÇg-p àHõÖiõm’kö¶lªEžòHÖƒ‡=ñm1¯_/*Nýj4.Ž6P<ŸÕ»j›RgÎĬ>^¦d^äÒð:%Ýñ:ïôÀëP·ƒñŽì3; ¿è/0¹/ÂéÀXÖr±Œ'†ÅFö‰N<¡—Ń”‚¦kå ç}`rO…'öêiŠŠ«°Ö¹ £þ j_ò–˜ó¿©Z=Æ¢šI¬Ñ#±=Ð|n÷bõ]X>W|ïè•CÞÏB:¨Þ?+·‡X¹?µ%’úOS[ˆìçç¸yw¹O§(l!³¶H«Ý=áÉÖû.ó Êm{%êÔãîÛ.2,GJ'ôX”5p°ÆR2,Äv€ÀâŒm¼O ~Ç] Z.v6mñ…–´ŒêNŶ ø¢NÄJ<À"úÅ-ÜÛKBð´ÙÃûÙânì¤Ì/léÀÀ¿MU"±ØH*à×IH~X8ÆíçE2×îs±ÄÇ_pßæ)žke’1Ÿ«Ž1…×ê2yd.` ó òÈŒs jdD®m¸P;¬¬æýImG*þÌDñu­® .~t5W½Í³ßÙ,aFuI"Õ\ 3ŸH5GÚÆzT¯Á‹ù™²*¦6ÏSgT£¸¸=BàZˆ1KWðú.”úŸJàg¤þ¯Mß_1yª:Cß³"7OFâOÚÇx¯QMWl‡Fä‡ÛjËE qçE¯,žVFŒc÷˜¿ÀïK–ë¤Oðe6g2Ku\8’üOcÍ$ŽÂÙt›£žfgÒ Žv*§©Ý¦ì%ÔNìæ- uY€"%ÃÃ2YÿXHcÕƒ{O¶ªÆFr­I‰'± W{b½5›º…ÄÄlý…ïkÖ発:dƒå¥häVó]<lâ9:õø{d¼P³±q*íá`€k/@Zƒ“{j+f3܉´G7üŸzTÉÅ´Œ•ò\pePc. ˆ¥!sŒj­ÁÇÚ§4ËMÓÄǘð÷¦ZWÛr‰ È\v¬p Þ #†\1Ú1LWØX“rnWx €öƒ6XŸ–´æd!…y#æX… \jp\ 97x‹ÿ€,þ¡nh˜j[yÁ±¦Nƒ5mŸØ!Š[Ç:õÿÒmÿ¯´&î ™Ù̪[ö™`ÇÂ4ì·ª×%õÜÅû)lwM;>Ðm;Ò¸4XêðpQ†9º‘âÀ쥈‰ÙñQPlµÖwí²¿f­Â´êÎTÐŒA û òß1Ã`¨=Q"rBŸ­["aòÅDêѵD†ÅT4‚=oÉÏléÇØEB€|ýžvEK±|F!eê ëôÑ\>n¯MO-îpÖ6²~Ø`Ø@ç&Å´üÓ JÒ°órßT|ö7T'\´Iò·R·¢áù`‡Y¯ŒzÒ•A«¿Ø=Õƒó=Ù õý¾ë ëûiH‡[¡ì±û=ÈHìg¸¨æ ãv2ZǶü(ô£²ºãš›q.ßÍH>.‹{ò½É<Ã÷æÍ3 : '#ÙÖ c¢Ó}Õg§)O ”°ÔDþôFAUÇì´v(€¿ áa†ÚŠuDßÂ-ÀÆ ®c‹Úaóͱˆ²àµ>ýc¹bR!!Ñãë~’¢xÇn¦×#¢¢>(—5›Uj éÃçòÖQ¹Vqœháö‚\Nž¬Ž$2“#ö‹s«å¡ô9â@ž„h¢V˜ßÒO¥e·Åó’ºïyóä?*Þ÷*¶E¥-¤ºÝV½¡ŽÆ:zûM\û逌ÇÎ$¥”p«nwøa™Hêý:šåú3ïÄ/±xa³¦\¥#¦›uÜ• §·›%}{¢pQüàµ]û_´_˜®à~ᔡ’ Ü”nË`búßc*="¼Rá‡N¢ ŠŽ•+ÄŸ»\A}P®‹º†·/ß.«—˜K/Žï±Å¦ØÔZƒ} Çö/5 (BÚ4­¨Ûú;¢@¼ÕÞ(ã)6ÚNh¯?þs ³D—ßí›]á @:Q@ªdÀ'£õ3Íþçþý²úPÏ)üo‡Õ xÚù«ñfü™oöQùÃqì?n³Ulò¿ Éç4+Û >~8wý.ª¶Qo×Ȼ߭²r¿VDß—%™ïêm³ÃOÍYµÌ ,Ô«»e}}ÏédPSÊÅsûpõÃID‚'§ÂÔ-B 7Fd«ò}Zmìˆ$ñg¹ÙÅW (\ØV³¾I³q“Þ ‹ýzQ¶œ¡H·Ð¦qúyß`|‘ñ ‹wå¼êŸ—ÝG&Z˜ÃAÛ0;}û‡¾Jqž¾ewí7رy{P§nBE”¥{pcó…E¼HZÑ~o@LfEú¸@Ñ?ƒ#lcK‘º `“×lwa¿…Ì‘ï¬S¶eäOÔ©ºE¥/^pÉèîQ5“õmF•vGÊ: *ô}LuèÉÙZ‰/%Ø·Ó®ëårµ¡æý Ê%1S î6ñÚ¶ÐÚR®È¾E°¼Ç¯?¬Ã‘ ?'À¬Ó½Íê'd`ë_ñiÌ#…ß É ?%`•ôí¦KÊm ²pÏàÅ\€+]å{V!:e£fn°·îae¯CËl’žóœÚNò2Zî¿$ð0[z¼bw~½öÄz5XŒã¤P—NŸß‰ßØP~Ò—¯$»j»|˜Ø}ïH¬°$A’ü w[0`6û&žu•…ÀDAXlvÃI™û;}²­µ',tŠXÆÄVH|’''ÚÉâ/ë!Êz†^éóÕ "äÖ_ZëþÙ(ˆjÍPÁ¤@ð!<Šß÷˜>æA7’¦2 ƒ‘惖5íoº©­ûx¹§8%-ì:-LÄ´ /' 0¬É¬å;B9ª ¥°Œ І‚¾ÓcúïôlÖËû´†²i³]û€O¿+Bn0G»3cMz+%n×ËOÈÄSUú”ÑuåH‚¯¸ Ò0Ü„ f¢ªTU!,]PËÕã³ õtDüXM[\‡cÿL_Âj#]©'é›`­mBQ®ë®ÙXìö|žf njŸum|èÛ1&}; ží"& \ê:çZ›5Ñ\¸ÞoÛ”µ”›ï©W[> stream xÚÝ][sÜFv~ׯ`å%`EƒEßrœ*)k×z³e;«²Uë}9 {f@3–´¿>çÒ¸NÏM¢´®¼@£hœ>×ïœn¾¹yñ‡oýUžæVÚ«›û+cS›«+'Mª´¾ºY^ý-y,6ËUy½ÐV$ÕµH¶|Z´áˆ‡,iŸ®Ò'å]U¬øÆ]ц_Õ÷Üç®^?MÕÖ›ðÓÕCÝTÛÇuzý÷›?_eW !ÒÜ~ïÍ#ü\)•´ÕúiUý” ].±E?䫚Þ]ÿÒ†ëê—k wÞ>Ví+|Á¾zô­ð:©Se=¿î§LÙÐ+»²iî”Ç^.u:‡¥:ôøñz!ŒN~€§‹äíõο»^8Ÿü•>¦§’©ÈìÕè×?e& ¯㎩w†D}Þ¯°.ù°ÿ@cûŽð0}^|sóâך³+ÑM¢õ&Ê^Ý­_üíïÙÕîS•û«wÔs}e%<ØÁéêêí‹ÿ~ñÙÁd£×9‘Z宬“Dzé}ÝD>@¸T)ÃÀ¶û#שËLwÿëýQ‹L¦ÚZv< [øÔL=!Q÷ ñ EdÈ:ͽèFHþ=÷›AØÔ÷$_Ö‘'-° Ìó„_sG7a&íä„™bã²0mc–yÅC£ƒí®^GxUf©ƒ·Ÿ¿‰0¾Mš²¤Ž±$|KæºÏÚ¼£˜}ˆ²¹ôrÄ•ç°ø>og©ýSä©‹ð˜JMîçÂ1Ÿ+ÈÔA&“õ&6YÆ8&¦9:Y2¿uŠÎÖ›øly-&/8:[æälÙü‚éR—L×Pv6‰ÌYžZ÷fl"4cF¡à€¾Êíùj¨Š©!£i!|X>«Uj?ª…@ûüˆê¥ L´:®‡äLmbzH¥Nú©"Õ£S-ó)7W÷8¤g×QS7×NU„ñuz¬>ì>‘³ …gãð©7¶ëð&:cllj€‘ƒî£NÛÇrÃö¿)·»fV6-ŸL›f^OUè™ÎC»»íd¼‡1n“4Š>N#w’F ™9ðq‡†PσäFy/à´‰Ì'èΉ<_nŸ *„ŽTní¹´0Gháã¤0çëªb_•P öU®Njò"òi蘨"?Þ€àLžDýv¼¼ õ<ã½¹g:ë}êC'ëgÄ?ìm/@;õ6ØmÌiwÞ fÅ|V=N" ÚÁG‚ >2h£I#õ6ÕtÄçêøuµÙ·”©ñîÛ¼éñ¨òTs¼:z;·* ³PÁªØs­JL8F²÷ŬJŒéu*ùVå2ˆc4ø˜X!â"¬@øÅi TÞAP$.2~ý¿ó!Â^ƒúÏR#ƒuù¾|¿} ž§±É»…KðË÷O«º¡ ‡DåÖvÛìî`0á<ëk ª«zØÕ»–›žŠíc8Ý>Û`pWoð…Ûäj!eC†ËÝj[=!~!á¢79UÙrK±Yrçö±Æî︙ÞAí(‚»Í²løÆ]Ù,b/oÕ‡±¬¶U½iIà  ¾sw‡äÝ·`çbÃ=náàˆXØýiUm¹CÅßTó‚>©#Ldðôô—̳õ&€ Oüø†¯Ê¢á+Q>\{•¤6ÊhŠE8í/åz]`D'2Ýg P™ÒöáÅ_Êm\£µ}ʘõñÊ ò¼xŽ$À ?þðöZ ò"’¿bK–ÜüÏ7¡Î)ž´»'†¥ê6ü¸ç…ËS/gQඃœîëÕŠÙ¡Ú<0͆iå.EÓÁSŶj"˜é ¢á,E+Ðz¦Msm²¬Ó~êög¢'ÅËȃ€VNÍtß4HËdÿ·vnÆKÔ„¬D WÈÐx¼ùþÛkÔ¯#z[h]o¾FˆúhÀaMZylÆh`Ãd ¯R…šhm–»»0I7 P50—mŒ|:UÙ€Lì¿Þ¦>s㣟›3çÆ_Bƒ° Ñ Æ t6í‘/Q:ÿ_¢°#Zb;wJ`ê,BvêsÈ3å&- ¾]/0µ‘µ‡A=P<ðõ ™ñªã¨¹sáÓ\øÏˆ…‘·Ê¾“3Æ—&ê‚Îr1‹mà£Aú°>£°U›¨ñÜdï0­#´…L|Tƒ1âC_¯Ü ÔpG1&þA,ñíaôà§ ?uÕi ‹h7¨ Ð:çdµŠÑÞ9€ºp }J7{d¤Ê©™Ú€ Âgƒâk;›™¥ÖÊ©½«¶Á+|¬Ù_TÉSSa¾ òÁûyhÊrÐ݈ÿd.¸™Ô÷@S­{&¤®è7Þ3@\,Á´²{Lm=!XÈ·ê˜#,2ŠL)Ž€€cªáaM¹bôšLï €:–Øm:+¨aÔ^ÍàaÂÛi\Jó'àq@øèò!‘Ы ǶýT¥SxŸ|7|)6ßm¦«6J‚Ô:œã¢1øV‘P0“ˆ ÄæÂJ~ *†à‡tÏ_¨Psji‹é /Ñy '4òPnÉBÜ4J5ÑÑ ±—\ÂWEjºˆGXq˜Ö<µjK’ÅD"ò án$áÜNJJUN#—0“â™mꇩ#NGUëu¹¬ FZ}àw•›»¢i¶„a{3öÛjsWÆá7$ïÐ/³šáº(3¡Y–cfÒÒuj1ïæTgž‹MÌÖØr °#³©$²‰y-~Ào¯Éo¤G£ÛŘøŽG²ÉE¾p³Ù  #»ž’6þ€6¤¬ÿÒ»˜NRBjp×3A Ïä“÷ <<ÍÞœTàÍU¿UÅ*†5çvlb„0CŽùë¸,`ëØœvÇË¢†L͉äÉaHɤ¹ÈO‘“¡ÞEs&JÈsÐ+{ ;Ô¡ìÌYåÏú(1Ó 3ö~âE˜Ü “ü@¥fÑ5pÒ‰]Ž™£|ž”nË-$›òG…M+;ñ¹,V|ò1¨eWñ½%Ÿ´àGbÑ(eÏú²ç€C®ãÔ`ÖÅuç#à ŽëæqòPͪ@ÙN«Y±cM1JmQãÍ€`”>±Ëp£EòŸ`l+ª|ÅçÙBl\>ô #NÁLKË“KŸJ™Ÿ)*ú»©·p Rhîý)>+jgVQ¿–bh*Ó%ŠÞ§Ö”èt}¢“ ‚9щw;XšÐ…6’͵H‚ÿoA1ÍÃuξ E¢„H"ð´uaØŽÓ¦Þr넉ð&púC@Qøº)`ŽãÍ£Ñ.T…`2W…ÌnM"„ÃC´€¶šâß¶[¾Õ9O†‚Ÿ9jLÉÝ´‚ç•´…>ÐÌ_ì¶õºØÖ¡!1ãÎàô¯£~DiÏ߯+å0í¶«eÁD'_­b~«—àæŒú’ ã’›GR8ÄHÂ̪w„âªj!;CÅ<,qd@_|²£áhÅè¨O\{bÉÿ°×À³:Ö«ä͇ð¥·mÙüvm,øc€GQá¦ä¤DèàEÔ™¨Y¸Œç¨áœŸ MeS=Æ¿lêÝCz5ùØ|šNÀjPËÇJa·©~Ý@‹ãX–‹¡Ï99µü0è5(Dsi<©2ÅtzÏDZ¤sçfTfÓ´Å h«ì Ú›]\bûQÕ”!‡ðÊçj^a㞨!ÙþÕ”ñ‘j-¦•÷”¯c;ãMœ•׬³¡ÃˆCpé@rä^†”J+Ë_w¸æ–ö9áM1,¼$P,¬LQ3-ÓvËU`ÊÁy él­&5¶Y*G›ˆd*R,:-¤Lso¦ À{‘|x,Z>abh³·t×0áþ-wD4Ž.OÞNsaôûø¢®å®aËânƒ¾ÕnÅŠ‚Úº5f+6›Ý¦äæÙ 2l «®°#fL¦>O½>¢1h§®•ÙŸp]]âCrSè í ùm¢S³ûk¶ÆÄ.ïVŸù,‰.GÀ4”ìyü)ægBô‘ŸJ™´mùÄW”wÃÖQ±­_¸‡#h x÷ž ¸.É1sgí×ý‰£Åv¸žö9)L—È_VÅdŸV…NJžWóO+ùwi>ýšu˜"N!àøW)gRâÙT'iç€ð?GKb?Q;)ˆ-M€ 쯞ç<ºŠm‘w^}ž<€òƒXhË‹þªÍ²|Ï7Fe¿¢“!ìÚT$+>¯Á×RmIZRPV6V'öAÈó¸ô •Úýs“EîOÁE¡¬×=ßn7ê™Ê·~Ž¢““§Õ£ÁÍo1ud&¢{+Xôó#W¬Œ .3B‚áÑ£èÔr ü®ðzÖæx¸ ï†0 Ë -Y™¦­º¼2§”G ^ƾ+v´EuˆÄÕxƒ‹Žð¬³èèÚ0-ºàAvõÉÎ.Ͳ äòu|7½·êò gO¨Ì¨¯1‚ðÀ# ?PÇÊö1å}BGMÇ8;@÷Àë £}ц»]µ SÆ­ö°†ðw±>ï¨RÑÏ«T¾Œ ü9Æ·VNªågŒ™Ð¢­†ÕÔ:ë0°V)èÎ3‡”Á§[hàAÇP;pþ”ìÅ ËY”}ùðN7HéasYmicL€^¤'¨'"ü“ÕÜX‡£ò5Œkޏb‚`‹6ÔOïº ª¯¦ 6°%h­2<üÁ(nN"á5šËS!v Þ¶<5åo»äØNÞ(õ¼çö u6ÞrဠN‹xìë² ùVvßRP@ZÏë %Óàþ¦¤…^ÐF³mepiË(†Å·æ2­ùó¾¨aiÉ¿‰hÉYæ3º²¼öÿ$Rá^¾_.|žÿ|Ÿ}jÛ¼ ;仹 ž‘ŸˆfÇv•úôК•$¾i¶¹‹;·ª)2õ,øø«»]Èb©±œç¼‡â‘}LtäG³ Ù°Pb…˜»•~(EbçqUtçSQ5ì[r@n¦ŸÃ| |&gš3$Ä‹q­<—íÌ‘Tÿ4¯}$ùiöJý˜1ÔÓ«r[¢;Žn‡†!’ÞC@¢ÓöxÚ¾Ës žx<6府u'AÑó(üÒ–¥Æ›Ó30Ú[ê¼ˆÅæùÑÁÀ`Õd’î›5dWj‰'ƒñÆ+‚“ª•ൃQÉáuX­éº)¢ 72uÙ,\ Ó–‰`¤u&yÊ2ÄíÚ6¾T׿ú2ý tC}ÇyÚ7^â6õD»/ ôPÞo¹ ‰ˆÜ®óä»MHj¦ ø±OM63ÖDãºYÒÞO²Ï´Òª}¦?-葆!¿ñ¬IM/lùv'Ox|&8 ~” Z ›H‹Å7¡+©°€aoß)BžÂÏq°Eê÷Ý>\XœÔE‰°’_‰®$54ÿ$”¼ß>xÆ[íc6¾ú—¾lŠŽ7ÆA” ™ÊÞ$ÐîŒÍ¶ŸüC¸/ÀõG mDò§®^†2Ó/ùg£O8.^øÂŒŽžY Rw[næ"‚UµäËÑÏ_òìdôˆåÿj®I`ž:é Zh[Ví d]º”MS74ÙFôç±du·Â(P†=ÞîÂ+ýv´hka`ð¯as°ìm¸dÄë±E„&ôÌÂ’ÝágA³ãéºl€ÐQØø¿v¿¬ÊwÕÝ?0„ÕŽ%UI“sÀ­M½{âÓ®ŒÚìm§IÈv „®‰œ~Îû×·×&ÀQʨ>zŒV¸yÅd‡¯É*^ ×­Æë :ª.{÷BŸà¿äd@˜ª¸Š®ËÑ»…7NÑ-Ôk8TvPñ8ðYÊyÞ?¨ŒÞЪÀ`óª¡J’Ì­íHS>8 œW÷ÈaüôbEN´lj>–ƒ\`†CÀéº/¼E¾ ,¾_:—þG,w#K4`ò[xB½éK¸Gµ,‹°é}(X`mÁ·Çþ*ÝÀ¥‘HG…/J‚ǸDšÈÂ}'Ç;;¾Ý3¸äräa¬h§G+ß©YOzpÂÈXU›+šî‘;PâZJãæaÈë ý½]EvºT6–òV÷h’exC»Þ̰kº]óqléðº?ßß4vÁ¯Ù[×mmºéÿÏÎj¼Ø,=|øPpŒzÀ…8™ ôñ*0PÝ.Üÿ]*2 endstream endobj 77 0 obj << /Length 6074 /Filter /FlateDecode >> stream xÚÝ\[sãFv~Ÿ_¡GªbÂ}¿xÊIÙÎNÕ¦RÞMFUIÕz0$DÂK2AZ#W~|ÎéÓ¸4ؤ(¼¹¼H  Ù—sëï\€ïïÞ}ýA³_x#ÌÍÝý6…ñòÆ ]H¥nî–7™ýkµÝ–·saüL·½û—¯?¸ñOD¡œ¹aÔù‡fûPîËO› ~!Õ¬ÙªÔlŸÖu{höuÕâ9[ÜÎù¬ÜÑÅ'øçfñg‹f;Ç©næqø9ç…ך&ªåí\¯êÝb_m«Ý­°³C¹¹å³Í>Q³Çú°¦Õr5Z.ç0 ÝzbÒÄ^ìÆÞJ‡½la•‡I å#úÕÃè|ötJé gøÍè'‘X ç\û‚  ˜Mêùç}ÊYsŸ!°„8?x×ÖË –¡´ÁUÁ–²ÒNøè×Þʨî×ßo e{r|•Á°­øüûÓß=µ×]‡òÖl+léY{¨è^sO,åFB¦,mëí-°ÿ¸)u³C{Œ%56Õ!³.Ç Çídg)¯Ìã¯gµ¾ÀêdjÅ #üÍè7¸‚é~y@±ÙÜ:…2Ž»z¬7jµë7ÿHW‡uyˆ„Rfà‘RQVAÃê©$¬ží«ö¸9P›†VÍvM¼µÀ‘×ånUÑu÷3Ød[ýrDÍq³ØYÕ€e'ìy\Cǹbf¶«±agÍOŒË¶:´tYîA«Ø^.Q?±û¡ÉƒH Ç/%Ì­E/•(§£V\’K$¿‘ß5ûPïÛÃW°2(TE2[;õéŽ;.|ýA™ñ¤¼²öŸ2+g •½Ì-кIæë†‘>ØlvÁ^1ƒwëØ è«`¹tAZ~qOý£D3)EÁaé©N5»o`¯RÓV W¿¢‘ §;»ŒÍC¹j©µhö Ma© )ŸFÒÿ°.n`Om7È=ýÿ­Ú79©©Õ>ès‹47’4ZI ä€)ž¨}÷ã‡[Î9ˆA¸\@÷Ãþ¸ ;€wîA3Bä Ýúõ°©bû Æ+®†e”_B«¢÷Û ;Hªúã!žˆèl8“Á³ – j¾¯ÊR|M§!ÞŠÛÎØX°ñ|0TÜž®DLõv|~Ø—pÚÒÐ÷ûf‹­È(¼Uï œ‰á¢=”‡Št{î$è†JÍʧ#ZnãÈr`#ŽhÐwì‚Û Œ¿§f“º (à­XÎøðø©<šmyhvEN:>VÀê%H†v–´q®¥!Å ­]³›gT3SpQa¾'çÈPá¨1Ö [%„û[`*£Màh¢ìD¡@ Á’X`ê÷e‹à%˜9¸ ¢*‚òâÈ¡I&U‰nÜ—‹`,¡;éˆÊŽe…꾫£Ôã÷™mBÂ/;ÒNЋŸhÈ%i…šñÙbAö¯‘Ïøÿ°¯ R†^‡»e§ÅxÙýlj`MÎÓ A;(-æžp^05"ñˆŠ Iɱ™BóÑYÏd}Å^sà®f6Á·Ré™Êá[Y8 kßJÆ‚Œv¶.SŒ‹wâ Àú€P- šì :JBíØ:¶xJË΢Zá ÁôÛ£Z@: cT[ïht ˆ¨û¸¶ŠŽi”‡uKOAê£Y‡û˺‹7€`¬žÊ&výõ–0 ŸÁ´ G3$œ, ~¼^ÖH„jý1ºUvÎLóÇT¬éç#H›Ãžy‘$æ„»BâÝ‹%^r—H<º«ÊxD —Ï™•!m€gäzÆ~ Äñ'ÕçEõ»6» á˜À€¦Oy?·@y¯ÒÝçE€õ€‹Cåþ!“ldRï —QyJR+ð¯:“!%*Ö:© ù#<6À‘Ä’L 9¾° à)àŒ‘v~¸u2ˆ­PªSnl `„ëx‡ÈŽq*³¨{¡ Ý›ø°wð§!–w«Ïåö!„ ¡TgtÀOd Y†.˜ÁÁ^ÍîþýÔਸ਼2‡C™àSÚÀîEWTF”Uá]ïìü|:€(¬é®3k€“T‰kW`ÐRÚ-áu"ÜÁ@P³lé!yq@2 (”O ÛŸÿôñÿIŽ‹„'‰)ÁÂÍ ¨š•¸‚ÿê[Ù‡Ufìþ…á—ÂÄନ`ÛБ Ív¹›ƒóV9 ™{^#ÒÕÎÉ2Ó²›ü[  CÿŒå@ˆŽ„g¨oþ¿ûÃÝ»_Þ!Be70ì–™° €kíÍbûî/e7Kxr c»›ÇÐsµ¹ùøîßÞ}á»ñDq X pIÄ%´³øåv#%3"•@HåÎøî Gf@kO9š™Á!Jy _˃A24ŸH‹7¡I)¡‰ÌÌèYÁí[LH%ó©È´ižÍ>v‡Þ1%Àå£ýª- eO1$Åê]Ž—fyÊEb@_ûˆHjiÌàfžŽª¡9ü*ïÛ‚†e?ñçâ'hv"¿oö1Ö²ˆçnŸf ÝŽ[0)Ó&u!/I]ˆs†XqÝÇÄÒÀ+¼——Ÿsãͪ.(£À¶Á™¦›1â ­`bïÉÊžÛÊÜÿû¨¬¹zKÒ?®ëMDîíXØÛgÂÒàÛ~;#Œ‘žýËz‘‹Btˆ— ºñªi;ÂYˆõ'±ö€ ޝÂуÖc¹¡M!ZhB´Ø;›ÔŠðÿ¾<"<à¡ôDÏ¢3­:ŽþN}Ĉ[ÛÖàWFÔ–GLMo§ž¥7³pþÉ31SÌ7 ³uÏùƒ¥¥mÙÁI7¦PnâjËÜw†T|Ž–þŸANœ¹ëäÜùŠu¨d?L}6¼ ÄÚª\¨ÙéuôÁ…öv‚\…„óĘT~Ìï #ÂÌ_Žû!П‡>Â\=¥JçÁÛl±2¤ A;¼ûb!Â}Ë ƒÅ‚AÊ[ºÛ%f æÚ&‰™]6;î(0Þ zÉ«Ïû d¶ÙeQ1`­!´Z†gÈ4Á³ÐX?vÆ~Îþ€Ý‹¦¹øêd&t¦¹Egm_å=õší¥'£Ò‰« šÝCásáÆ¬¤€îº^(Íö5lüÐ…^B—U VßàéÕù¨ýúí#Úúæ¸YæŽ!·.¤z‚ó¯Îà5Ðr«®ÔL}ñ^¹q¼˜¼4å“%^k˜³y Ö…e¸¯ ë|•åÖCÎ|ÈunžäDÃÀŒæ:ÉÐg%Ã:êSÚj’vb|fÃÕ()Ø! &£}ucû;tya«AÍ'iá*8ëÊ$!â$g ¬ärºñ ,ôìû's’”ƒ;”ða³;<šCO„ Ü:“¯SD™ÿ;'‚Y²QŸÐ I™@ÿÕM«RBdU8Ìqì›ãjŒâYާo”ô/‘s…“öZ–ÍÁ\¬BúWÐçiCI ‘¼I®;xrFbîxEÐ !b|†­ðÙºGc𨃮u)èv=Ž>ñ OÐ[À<¼Ó³;þhûæ!fr{ÌcÅÙòaa=— ó®Kmš]0$`ÿ‡cC8HÚ>÷acžÑŽPKAÕj„ŸƒÐÍ9íB$ƒ$ í»4´&jïI °±.[zK)Bï寷0i W”*²txè`=Á™[tE<›§œÎ,« ¥ô_œuv¬Û,_ÔñfÏ—¡DGx äô:µëÈohÇJ³\¡ª3Øõ-Ô U 9r>áˆÂj_n1¨½ïxÒ÷Ô:ä,©03]¹Y!„^ƒÎh4Zí`Þ–.¢ÒÆD^p”zX¦ ì`¯•ÇÆ±w¨Î@ëœK`­†áÆ‹€K=Ð0$„;c/'¤?›}Gv„$I Þt7”ÚèèAtÒ„ù~Í1iHá ¯pêP§*èb¤­Ø‰6Žm^l¶uH‡evµ-?×Ûú·@꯷õ®¿@~ûGªÕ¥$Y2¼=޹Áå¦ z°c”g'éoÔÌX. m”N¼±Š{ÞÑ%+u|Ò ¿Ì9 <;ÿ|UAç‹MÓ÷Æ0­£Â®0Q¹ïL¼ö`?')#p%ÊÍ{ †ŠXßÕñÙP탧aàZx{Çce»ùss Îeõ’ò°ÑÆ|@ 1!ë ­&°uLÒ~ä’ÀÅj_Åt±ö]’XûÈ8hDûš»ê=îÓÍǺ­&÷UÖ~ÆâU8ÃBžVó´ÀU3ªXÕ¼3¤X‰TýZ„Wdʱcg«ðî™qTòe_‚LJ—Ðÿi¿¬ö-ý:(6öú]Ô õ" «Ð"y]€n·ãµÃZ÷Ëz‡e x‘)fjsªðèGÕ¿CÙº@yƒP ÎàjWÅ¢hªËô³®Ê®ÀÉÀƒnu$«b/÷‰ËÊÎNû†#9– Ö¿…ýZI9vxÊ;Ãå:>=ÒJ1<ªã+ŒÅPPºG6YË…°xf›µ} ¸2CA¶£`—du°5±´Èñqb:·kpìFUWÊËÎfb³éhºÅbH âðÖ †x»‡òS|À¯Q}f¯à¸Ø—«® ¦¥]U° u¢”E0êœM0àÇ1ù ›PPá#ŠD—ò²¬Pj‚ciëÇï«Sùs=„_V‹}` ´aXQçU íþ4]e{–î"XÛàì.†µ(±Å9pâJ@ý·r>Ôyb,ͬ>$tµ9V-]¯ËqAS¸ÂsÙôÌ8bçd÷^GÂ4,¥¥ê²P9È`T¶MŽ9¨Y&Ú!C-VìsŸc±w<3ŸŒÑ‹Á/™*)ìO#žuvðÜÆá÷”dn2#úàD]3¢ÉŒø93"¸á<Ä'CºKkêKNÈÚ“d•% –ä`Õ·é*S£d˜B0Ÿ,`X…㽃ù-φ´37øÒŒL—˜–H|½ÁÊÍ|aàÿ…ú]|PôQ…@R!)%@#,6ð¶.îèL˜z –CNâì€E¾Í,ÜhX…ë9¼´p€#ç뺒Eó\ds¬Q„~ÌÔ‰rS¸~å˦/ÕÄš™ ðÞ_O™:G=¼m”£Œc…6$ ð.RFƒë/ЦÊéP¦þ"Úìr´‘0žO‰3MI°“´Ñw¹×.ð}²L|R±Æ“ ù7´´ðÏtWßeÔ†]†ßn3 .ØÍQ§Ÿ˜ÊÙÆ¤–²;ES¶)ìR[ üå—¸&ØN™Ø“KJJA“vըÛ! £ðW¾ÄÀ猧.L¨+%%.xÈË!ûr•ÐIeKF^8Jñ´¤äûl•®>sZLÿB¥¶ý,K=ý.;_/¢*¡ôeÉÂKhI†¯¾?3£"Ä™D‚‚vXÌÆy§©‚xè!EÓW §© `'/¾ýÝÈÙdÏJ'ükNægeù¹”ÇÉKÆx=…æøV…g(À°EýŬ‡¬Š2.^Á~È!&ý7CLz@LA†‰q©[ÞÓ£mö‡\õ>+ØPt†¨â%v¯Ž¤Èñ ‘âö÷“zG&†=9°¡2ŽŠôbmš„5†ãË—CàTö^)Qï¿%äro¸#ðRoóÚóäåu8 …”Ñ$ÒÏò/gÖüJ£¡­0¤O’:q8çXiÎ&Ü1¥ƒ€ß”¾ZŸ+' ¨ y´×,W0 `©,y'DD2<Ñ…ó£c<«7c(Âräw.H°a ÈïU‚óXUbͧåIºýͰj>XÿÕ .x,ɉ£7~Ý"a3N½å ‰î‹§ô¨0=¥K˜4ýÂX¼h/ AM¨kuº z¼BÜÏCït0—Ž%QýLÒdÁS0NšMJÞÚ:ù‹Ö){¨­~O딫›—¤”¼‹¯Ð[2(ZtµÖ‡ã~—;ötÁ½zË#ûËbQæÍcQöo,Š¿2å/Å¢àGrk¬ …u]åG•ÿÚÆ ÑÏø¬&N±“d-&¿ê˜òÚ61BŠéŠSÆ \̃­ËÝ2¾Ã½»yx% cç!ºLïOÃ.ÝäMÉIH]ш„ ¶K$œ ©Ã`ʼ&¤þÍíÜ2~®ô«ªù¥’Ð>©læsa }*Ò³p¦§Ù³ðR±òÃwVÉbáóì,t–‡XG…ü0bÈc+ͺú*'¥É²ôs hê5ä£Aûˆ<ÕÈÄiB£Oɇ·”Äôu„Žb(/böˆI†ºÏ‰YEŽÇ„@,^Ã1¥iùð… ¡Oâá“E¹Y`FŠD4|Æ “"ˆU&r”ê¾Vp)[ .Å$ KDhü6ƒú’À“ Ÿa(côïx*O-‰5o ,svÓÙé1ƒ-:¼Øtu\ËL£ ùÀ¼Ðª°öb|ÛÜZ]âKŒË ¬ôƒ5zü!«g݇kBÁJ©¾v6ý–X¿|²Z(,±ÕÓŠÆ:[è*|Âø!™QÓ ‚J íä[ Œõ÷ú“í|¤ ëiùá ¤"’&#w÷já¬ÉÓþGú·ËŸJf0a»ÝYµÿPôo9²i8žÔıÉ3ݺ—Píçì›Üâªá™kMªÒÿÏN×—¤Éàt ‚•QØ3ÞgrÉÀ(‘kV8e¾ÄõC©‘?xÈÆF³U†ÃI¾"Ÿúç,óZÝßMõˆéãëÊ#uN¢Wülôê¨nÁäNÙ$"ã@ÞÀ” Òad.ôûçÓ¢øPà†~-þßD/Ëx{\Gk<}ôï?”õù:Ôç0^ó9‹¹4Dd”Jc”Ú)*ÔNŸy4¡î±óÑ2ž)÷ã÷Wã7(Œ:ÿ¦6¸"r@¡Íç|Q–—>‚ìÁW£%æÂÔ£7Uç;5ª"Eœy#«Ì­|ö»DTÅqa‘¦`÷²bÑ&]"}ý+~¸£+@…{£bU¸šDÖ8È9ù]øyb8OÁ9«Ùxÿ£ÿÃN endstream endobj 80 0 obj << /Length 5508 /Filter /FlateDecode >> stream xÚÍ\[“Ü6v~ׯ˜äe{ªÔ  iW*å›ÊÞ¤ÖkiR»)ÛœnN7c6ÙæÅšqþ|Î ¼5zFŠœª}5‚¸œëw}y÷ê_Þ¨è& 2«íÍÝÃMl›™›D› ‹oîö7?n~ ½ýùîÏÐ2¼±A–˜[&Ae7[D®á_o·*Ž6ßßnÚ¼»ÝBù»Ûm’nþΟ§³qŒThof_ÿÆ!þÉPjÖ˜‡ ¹]óø9Œc“Íãe¯: l¹–Лòôf‚4‰]›Ï/;‰‚H§³>Â+}Œã4O°b»‘i=]ö¨2X€šOËMíÕ7w¯~}…¯Â5? BÝìN¯~ü9¼Ùû?ß„ÉÒ›÷Ôòt£Â$È®¢ºy÷ê‡W_"#ãpN3X“Ü$ÐÐ&)üдžµ¨$Ðv\pï#HŽû×Ëi«P‘µ0d¤é³ÓNƒÕœdrýÌçìã`d©š8Hdÿ ·[Ð@Ù ¹´o<=m ÈÈáV)wË-¿à†ÉBØ£D³°G×çeenfm>ã©ÑuO_xt žÄñ¢ÿZšE‹þãEÿ?…‘O8a-a2I›J<,‹t m™ÖÏñ AºbÚr´¦\îèŠF=–]¶թO@ùuj>FÅ=zªÂ@ÁxÒB¿$'Á6Aœ¥`-¢™¬EQ´É=¼QЙͦήrÆÎ,™wQ±^Æ·°4HAXŸ_XòÂÂP&c”ȾXá/}²ÇɇȾÎ^þ/ýŸFêC„9À§Iƒô§ Ü6ùTéOŒ¥®èêC¥_€ô6×ù—‹®2°“ŸªÉǹKR€{Ÿ€EIÒS€'¯„‰ú# }Y¢À†ÉR>Êø/,ß~¬|æžá€XzIá@$ˆ[ XdÕÿA}?yö÷žá Aj¼ÔZ¸fœ}hb¢=°øÃñIéÃ'qô<ÁÚØ ‹|ŸÄI³gŠë ´>u4¿†Pô ¡Ô>„Vc› Q€6A³¥\–W¸1jÓ^¾ÝÒÃ|.š3ß^9\Pø9uüÒ;˜Dõb jü…æ³Fý±¨Áö³i‹~hkŸß FúÓiâ˜FKx)쑆Ýpï >Ä=O>i,¾ô]×h”¼H£­tl,[­(s•<&T6jÇHb˜nò ~³MW\²yªBë£Ñª×àÒ’ÍCÞráý-¸¶‚ËÇ~›Õôm‘÷Åžòªâ ¸Â¡mV`lÉTˆí‚@ðöµoHj h˜q’•®jJÑí¡@Ažøm]ÒnžÌFãÕþÉæ·m¹Gº)iQɸ¨(KP4wž õWÍØ€nøeÙËoÇ¿C Ó>‘ÒÀ“äL¿o‡i˜7þ©òö€“ÐyAUh¹ÈHáÃÒ0ç`à·¬•K»áÒ)ˆXo£ÎN@iRR|rJJe ZI¶‘ŸÈž7üôö›Ï¹P%[B|ø|hAxË_n‘ñmé“áš"Ë(ÙüûðKU¼/w¿ã#L¤àÈèàû²G+hãÍ=Rkxv`yùÆ-¥¯ª¼³X¢Íƾº¼˜Ïð6ŒÆöôñmüû -TÜ;Å6ΩAe× íNÊ»†æ²/ØŽËX˜uTM^Øâ×(Æ"ãR óñÝÝ×on•R›/¶÷yG>*'>·׬ ÔïEç¸ÿ(]ûý|Ž2e½w®¹û ­ah”ë{`ZN®“f‘ ý):°±VÎ:¥Î:!°‹c~}©½8‡Ll’ú¢=•uùûø1²ùä4Êd¡ ¨Ï 1‰tÞî;î`„PfØPÒ®ðÉûLпIì "`•ˆ=”þRñð ̪žø#g¸ÙûÒuºä¾C@€oÑ~xÙq,ò=A´h­¹ {|ЖÀa¨X2CM¦k0C]—·OüH‚ ¿¨m‚Õ†a¾=Já ‹'¦”B(!Ët ‘Ü äꈘ™ZZõüÆ' Ô/ðÕÕxLÁÐËæ ý‘`=¾Äo¬-ÖDäŠ=×°ãPÂQª©M ¶é$ÎO¶Ü^›‰>0Ádˆ¹«ŠùDšîÖ$›oFЃmWNkÀhW{îa@¬é…ï(.\+õH1¡Î>o 6%4"KJÍkÑ´5$n†s8FPëÜÜðÛªóú§•±Ñ1º(£Éµ{.âäšö¾ìe*ø6? lGzóNf­#™ W½ŽsÑÑsÐð”?–§òw†…QÄú©¹+ÀÇräN!'ãrÇšl"=E·ä°†ø¨nØnº´sШ£Àª1©ño—°cèt±‡¦_CXkW†®ñ}Ù¯1€Ò4û(60S‚-±F;ËUeç™ XèÀšì…©Œïe”ªxèÓCÇ牄c9’c­‹œäB° 8tí=8 ­1gªC¦|¦åK¦|¦ˆš—OULYЙwhýކ˜T q¡ „%{@@¯0:Â'ôÎ'é=’KŠEZc›l¾oÑ÷•S}Çm‘ɧU‚€¡ÔI|–{UXzX\P #TG|ì÷« ˆ@·‚¡—ëÊNÞåCÇíìˆH°¾wý¸` +ï+¯úä÷cW k%{oG/%Œ¤©æ(E‡«Î¤Åóφš-»k‹`ÇlN_I4HRÂnþv 6‡Bèýž‹»ÂÍ|Y6˜Xû0´a‡!ò²ê^sÌFj™)Ðv´íbÆ}„˜y°8„ØÁ Í"%I¤JOܘð0T¨I`ä¥çä›Ð¼=ºhÈK†ÒA[Ì[E€×JdùXÉ‚Å'6àýÛoôW\sÎ;’,çhãª[ü£VH‚?†À*']ðºø¾ ÿm4‘—~|ƒ¬`ÇšŸÉj›ÍWüîz@}Ò(ÃÂõÀϧòpd$A£;¦A¯PôÇ­ì” ˜&0æ¼âŽ+(¿.5Á/AùŽRFOí Æ«8Èã^<‹§@°c¼Î® ¦8D=@Ëy@E ,­Ša#gŒaEAª”Ë)CçÀô¯WpÖ“iÞj¤Z¾û倵!œ´:%º*ÄšQ(Pœ±&´êJJ •CRfBÀØüœ—{®­Ê¾¯¤6ïA ¯*!»N[P& 9Ib˜Žë`¡‚ŠÙä±)‹^˜ÎCÈ©¾+Ø:‚ØuÅM‚‘)`€IÉ5âǼ}Ù)óеKTIƒôþôÛ½  £:ŒñB±Ï&‘Wä4›qX×Tå®t.îÔ´â÷vUÓq +áäŽgT°:`UËîȬË$á‡é¸á#1lqn‰Ù.Æ:š¶(¾‡‹À7Øq3FÁÈ"0†¬ö„$†çUðkÊWaõ*@>XÜ#zxIÙŸ$S`$@ð0€8‚‘s±åÙ8²0ïLdÉz ‹ÊˆE±ÊâMWô\[Q’Ÿê¤ &„É-åm¨MQú#RóšpäãRº<Ó^ÞΫ~ã;†2§|ÌR𙏠Èqø‚£Ôºé $¢t½‰Ü.F³ŸEÕM¦VÇ´¡J3Àü.&w-%wIw.³{¨gˆ¶)®:ž¸æH ]t n/TÑ/4`rog°9»ò\‰·Ë»Ñ;rö°9¡¬:ÿv·2xvt<ŸÔÞ‚%* þ­wôãw…ÆØ™+´VoÈfRÛäN² µëMnÞ#gØ&žÅû0˜} ]{I=PÓÞÄ+G% ü¸¨*)–ÒÍOàh)/?ýóõ=á8Aô6ÒÃè(–3|âžf->:IÇ[¤çÂð‘ nk+pnò îËŒC";re"aìæ»®`Sè;Y†¢ç" fxíX$žº@¢tðOÚü—§< 5ŽÂ n˜™:.gÙŽlÜfdŸDÜ0l‚,‹/½’‰fèúÁÆDZYËbíN¼Eédæ ÌReμŠÖ÷¾µÆxñC=O1ð±#"ô]‹€&f:–è'X4u‘&x¦§‰4id&¹8ÀƒÍC^ˆŒèqǵL¹p”÷ˆ>ži†Š©=»ÖHdzµR¿2¼šýX¤Ï ¬m:g°i½s½Óš†ÓÖ"¢â¾7!IÎã/%b ª›‹½ *ÁQÄ£d8ð#û osi5åðÄN7·ð‰öB oìÖe_|ÆÛe?¾öhíýxŠ„¬p˜LV!L§¤Ž¬uckÂfá¸%‰‰ òTtñ¹ÿÈÍ ˆI-gãS—Þ‡ŠC9ÛoµldšïŽt^•’ò Ø‚¬éuKJjˆçʦc‰æì90­¨lAMÞÉñ3~tôæJÔXí ×”É3Åkì£ðŸ Z<ÑpyÔ=žßyýâ4’„ ÉÍ—Ò}ÎYAXêõQ%Ž\úfufcÚÄ£É*º„¦‘ÃðfÜõÿÌsp•wày{ñëe/°BmA°VÑx!æî6Y?ˆ$$úzJ(3äǪ7xŒIŽ_Üâ.F¢‹ÒéêlKÍ99 kh%!|9ݘÓn‘@—’)ÈÝ1'§Ètœ©èGñ÷œ±TšŽNvO§{Ù¦òi°ß˜.-ú[\ÃÉ«ó1§‹ÞkÒÉé]½ýBœ&¸tÞX§_þiKY7†)ù)büIÂÀ¦‹³¤—ò¹²iºi 5Ì%=½zèšÔ…^L‹ýÏhõÆs‹/BÌ(¯µO *Y©ñË‹“½° 8¢œéìl/DŽž“½ ï™ò-|%%!^M¼ YÞ2B 4¿¼zÈ“ú˜5òÑ' ¢éRËG‘ç’: ÔàJt7>j¼p/¨á#F¦ånÓL Þz5Š´p^Ë‚œÚH/¹EÖƒ\ãDOÁí%ÀÙ˜xíl¢Ÿf«›©}÷3;»Ì::ÁèZ›òé Þ‡û‘‡žhš×²9{éUbºê.ÏÈö®WM¶q”3 re§Výc~¦gS7‹…-úyë»õB/éŠ}ëX2y¶‹l~ylšÇÊ&Ì–ì.O™™ý±$÷€/Õx"1ôà„-þ:ÃÛÆxãñãEf­…ˆñÌ ÍÆ|H FO}ˆ eQ`R»Ö]íŸéüŠì‹"ä÷S&Ôï³Oæ}ü¼7/ñ^}ïSEpôe½xØòwë³ ™DûYÞ#Ï/ì¶éZ_³âý¢¯ïÿÑÙÆ*k_PÙ8ˆðt¥1ÿFW±»èû¿>ª§U endstream endobj 83 0 obj << /Length 6126 /Filter /FlateDecode >> stream xÚÍ\Is䯕¾ëW0t1Á‚‘ €:|Õê9<¶Câ„åt@W$¦« €ê&ýëçm‰PYìnis!r«\_¾÷½%ùçÛ/þø¦¼ªÒÊiwu{wUªÔ]:OµW·»«Ÿ’v¸Þc’ñ¡¹þåö/|c«Y{]¤ªÈ¯2nÛ_ç*iðÏ};ŒM¿Ì‹¤=¶c[ïÛKóñ —:£üïïNÇíØvGlwµQºL e0‘ÚL¦óá¡éýDÜ|"eZf•ïèÏç#QÊ×Ï ›¼½Þè"éào™tû¦>rñЌܓ²óIWi©¦¾îÎDziUNõ™ô V ¦U¿Šu`uéëUd ‹îã3˜êSÙ/3_Cª*çüœeæ¼Ê³T}µÑ*Õ…Àßi“𾯓‚}Ì+À‘Ñ·oèà¯7 hA%Tk’NŒªëaà-Þ¶õØì¸öC;>põØ×Ç¡ÝÐég0¼J«Üñ¨4ÖÍõÆš f«ì±ÞCFÁ#ô4`:Kêãn*ìÇY½üPê³ä¡¾†Ó~ëà"l×õ‡ÈùéäžÐ©IqåÒª0¥Y•C+øØÅ¹Í·4OóÂ]ÍÚü)2PrîÂ•ŠŽd#é(‰Ùb>ÒÛXGºˆNyÑ‘˜wôœ®+øã|NzWÙ¬{U¤y^-ú?ƶÄêEÿpX&³ó‹¾˜ŽY›érý]U™¸0³6ttåˆÓ”sN3p¹’ugœÝ5ÇnÜ#4*-m¹$ÁöxáÇ8;5ñãí©g–|ÄÛ`uòˆ¹nh=“]1cKä)?ÆÛaøYªKãÛìš»ú´—Îß×ûS„ÅçHôEàE›BUÉ›ëÒ&«ó¤yª{¸¥çÇ„ÇkVÿ7×Ï¥ÆÙåõÛ¨*Ã=7¥J|˜üY˜ÿ|FE–šê󮧊чv ú;xÚQ̼¿Î]‚»úeloÊ,ueþ‘™ü–=9ªJàÏIšy¿‰Äu†Ç¼"q<„m÷ˆlú92)ùÖ}â¬òf•if”ùtçc!QæÓN=¿¸×O–&_2@šnÚzyÊŸµ¼¨Ä©CÆOWç¿whäªù@Jñâü¥‚$žgý(øe1"jŽxÆ£p;U¥ª¬–¤À?òœ‹±[윱Øß½˜"-kqzÚmóeÊst@Lµ…ËÃMn_¿¹V€¾–æJ¸Æ„Rdº°5ɾcˆùnà<£þ™sC{h÷uÏ?F^€…€‹H/:œ$™bw“:5º Ì ùÐø0¶[dÙ% £ÙëŠ(®°XÒ0jg¸;m©mÏå?gyöú‡náÙA r"3õÞÈ-70!ç–Ðn× Û¾e±ˆ˜Ðf(xéÎSúëý©ç”Ü“+•Á¾›+ ¢®òV[¡žTeŒê¾iz8e±‘Xßq{äïO_ãhß(õ 'çòä»ã®iv7,œDïž3“jm–ÛΔqí%ºMÞµÇJôÒà‘з>Ý¡kÉ€Ätäø3P8€÷sÑi9¡ÓUSèàq#€Ç}»eHþ‹c<¼xÐ ”œÜaLÝ¡ðźï¿å‚ÇZ»Â Ž‹q“°ÙOÿÑ×*ÿ% ýŸÝ´ ý…´Ð%n`‹c¨S‡š¯z»¸ˆ41¤ïèÛ4Ä Šd„5äÊÍo6î‚îÑ Ñ[€³­l2Ö÷œ˜$()Y°²Ý7\‡Ä)ê·H&½¥f§ Šï”oÅ ?¹“‘„ÞŸêû¡Î’>ÔRkÇï¡Ãó¡’ƒ0º~”ºáÛÆs•_ôÕ6ÐEíŸ÷Í0œßM“´KÜià9íH ˽ ×Kv[Ëêå‚riwÜ?Çø*ÓÜLbòн'β‹ðàÈåŒ=ˆ7†8qº¢å•µ/ôk‹r¡ø®ÙN~ưðÚv{Ö$17>´’ê9ö§-Y!° •VK†þ½ ©ÁVQÉŠUq!ýį?²È]3á­Š ~? ³Y¯&©¬Hªå4ìÚ‚ªtÅ`|‚™1°–8¿Ùî»áDçtÇ5õ‡}ÙçGê•à&Ó 2f'6LÅÍ„ðóÜL#¶G¾Æ‡I‡]LΤ¥™,¶ ùëW¤4š"çMk¯i¿hd$Óó‘«2-‚N lù¾Ûx•¶» U—K¥ÔÐóùm¬Éý…Bý݉I'/N1æ*,”K!D"§G-ªò@’Œp¡që1¿˜è¡~Gd÷!SÀ:ùhsÛA°Ôiä:`V,¾ ͇ ‚©á<‰ù,ó³W _Émsk’©né=á LŸíÊwÔ¥·±Bäqž®±b‹ézZÏÙ8ç%rÅ:Þô¨‘g1žªÎ‹º,…0±:N˜hZ f㦆d„ dx§pZp½òbuWº²j œybD6·|ÑŸší §!_„ÑÓm®ïpƒÎ…^ž–AéiG8€ ŽÇ¶ÍÈHŒé-m¼T?{Í :*V„&³Q„ˆ§ãïœC¬¯;¨úÐ¥‹ï¨"­1²£8™k xÉæ­`LáÉ[Ȳ*-2½œùÅM…3ÇÆ“ µÄä ïn•Â…»‹×*7$¯é 2 ÀhLܬí¢âD8ÏØ N1Íx ÍÓã¾kGß6FœàåY¶Ò8@D}W?°ÖA@™¶ux>àøbw$³¹¨˜ª$[úž‰rAVL ¾ã†l/á~î^Pcé#ÚédШRº”P°ûÁÞ𠑪ÎÔݽC®¯d¦¦Ð,7;â¸QÁãš`Où”qëñaàaà´§£.”X/ŠÉý0™iÕJž,u9£ÍœQr‘»ÖÂ'¡`/Æáw„}šzÇ嫃D6k³ä–!(þ®Y †Ò'®™ EA%¢Š=s4Ã}3ˆÖƒc®[z}à( -“ –ã"š4„&ѱÉ‚¡}-c›ð¯¦™†qbøGÕE¹lNƒ#)iL|ÝüØø V‹É‚.K«Ê.mHïy»£ö]N­QƒÅþkþ€(8yS¹Š"P—uÞ7}³zŒ¦Bчéf’ƒ$ÇIÉè¸`®·Š¦mf¶ηÇE¸Çzgï…Ñã&a|Þ±”=ç·ÈúkT0°†Ñ¦w'¼XŠj ~·Óv ܨî£]ä®Êµ{Ú/®]Üc6nŸ«pe\EHrJ±,ÑU\æ©= ††Úœ±aä=«FdέªómÄÂù6bÞókÎ1+âIÓD–:'JÜ¢¨Ufx¼ˆYùò<5ìvh øøëН9~Ý1Xü‘-Q6UÕÌ/[–:ùz»î ŒÁKò*U®Jórµ˜ófé`8÷ªiü•dwF‹N/!8ãCGº P§ØU’T‚l+æ¡V¬AÌ-½‰‰öWYÎ /€Ë@nI€äÂú—‘šHÀÈÖâD®K**Ùê\Fz?HgȤ¢Ú…ªÊÔ“zÑ› ¹Ýë˜-vã[¯¬<“Ÿ¾éŸTö‹ð®6ãëkÅèâôŠí:%l3¶+æËû°žN•N´3©-¯hp.W—ŽèËÊðô@^½£(´¢#bÍ9ÿ…YäoE(ZˆÍwÍgÎù<.àî÷í;/+\ ä¯'ät€ñà^ÃÎŽy2S¹|Á€b„Œ œr×÷°ªv½Ð¬±˜tfH)//²™y2Á¹‡¹öˆ²Äm½ÅŠs„}Jl$Øôä,«øgàˆ˜ÂÆ'Ú5÷}Ópšn{†¶sò 5!øê0¹rZÂõ²²‹ "nHͬʘmÇø‚Å©ÊÅ {4¤&B`†7³À,úу8xlS¹`陀"T×}¤õäzKJ@ô]“‹yú ÉiQd*’×K¦Ö(®"K=6䈞,Š00åš ä §g*Ré£Ë Qñ1 =PÝ"Ì?ˆÐ`Ʊ6p!àøPÐ=…ÜJPФ•\Ó¿Ö§¾eý§o÷:ïî³.rŸPæzf›p ¦N;ÏzUG×j ÌŒŠv7ðæ®Õ Õýý‰Vyû¤Î¹—I%rSèÜ7Õ¿=þ©Ð†êm·kìÛùY+¼Ú£7aƒ0Ô7í=ëФxņäVØþû`÷°×ù8ÅpêYŽAFaûÆó˜ü½Ès˜—»¤fÆs:¶bÈü(8 PÚ‹ÓÉ£wDyC3Ja퉅Ùûè–½‹#&óhªI›Ìt¿b·ˆ0òí=R‡Ïtò}Š`[“  ƒG»æ¥ð= Ð9X÷ÅéfÁ9ÙÊjþl™cAêöo!ܲå±úd:µaï#XkÈœEבk¶ò3?ߎ±f„ëêjÁ8u%$ ˜+RbuL̹b$Ú'S©‘{]lc0²![ÎoŠNÐ*K^á‚r)‹.Äh”Qnɱ#Ý>ņ-«Õ°b«ÂÄífŠÑ=µ æÌe˜Q ¼Ê}®Ž{žB @á…xÁ¢4K®%3ìê|ö[ôÞ°ÝìÐco V²±jOÊ•%Æ{êwÔG¨/ÇÀ9ýÂîæ© ˆ¯ŽË„è­poLyw;;¬+׆,Ùsq‘‹Vz%×-4D7p’Њ25Þ¼JEs›Ð£2ùi6Þsn)ȼ‹ìžl&¸¿Ò15Ÿ%ÆÈõ^rßyáw]_+]µ0ŸAt‹˜•/äõ‰iÝd¥·¢•vì¸+/ؽᆭ~“gVœ›Ôxë°¢ö-fîÐÝZ j@ÜIPW'_¢l[%w8{K˜¹ .*À•þ qñŠƒ©Ÿ£>^늵Ø(ŠËb÷ïxŽÝçbÅÃòJ ö^ý.Ó\­Ø¤gbè`0.N|çÚáٵ3Ad¬&I]pH~ •Â÷1!†Ç賆ÈhbÕÂÙ(XÂr?X̳¡S§^`2xì<¬›:œ¬Æ±>mbÚ¾°ßEZ÷$A]{H›§É…íÒbe2¦€Fv ”û}£Zû9mѧ/>]qéj1P+´b+<]*9÷R˜àù]³ª¡>Ð4ÝŒCaîà]˜ Zb7v.í8GŽ_lO£ýØ>ÉáI¹Ø«–|öªUoòP&bêWFì«Þ— ž<Õ÷7leG¿Šú¸Ý]G”Uy/ó@›oW ”ý'F I]= §ƒOùÛ%DUÊc–´‹Ñ¥ÜTž8ªcæáNÈéHÄÄœ.¸¶æÀ©;Pާ°&\:{.°Mÿ,~è³÷E«C}s"ý’¬×bâØ ¯D `g5àÌ%C¾5D¹ÅŸ>ŽíA”˜(Üõ-°eÒ1ñ޳æÐÑ õoí%ÖÝÉ:oXµþš¸bÀ" &ÁD4x5öôŽ äÜÙÓ½ˆ­ÊD O?h#¬%SCãÃ\¦ b¬™` ¶b‹>†A­˜)^Õå~o-…»¯ÛL¡Ö¦4ç3÷¾àz1`ašU QÔüXæa¸ÊfeDÖ&ù/ï»›ÿ¶æ,p–¸Ãc?†”1™x×ÏEÊ´¡?F̰À¼§eS%ß)ü6Oh® Ìñ Ôù>þ³õ¦yx´"ð–àÞ;ÁýB“a¤mnW†õ™oˉo ¾¬ˆi¶°‰ßp #†jí€n8%ö\þ™u1ñ’¸RØ>Už¹k¢9œqr„ŸäÌyd3|gLqÌ™ñ{ÃX0<£|t¶LAg{™–@ä,ƒõ¨¿CÓß{ÞZáäö,êT\%Íw"õ€1óN‰¨ï¼Ø¬cÏ•q©Ê*Í–ÏÇÚqhöw<2iYˆM8»oîÆÍCƒ´ ’Yµ ƒ‚þ~±b—^»¤L¾‚ ´›ÔW®ÌÏSòYlÄ (ôG€A— §· aÇ!-ãÄ>"¾¢˜²•§:üÇ‚ßνÊåûãdE-áØldq‰üÈ!0En’×Í&üs„|owf4/ÉhîíãUéŸsPìþŸ¥²ÿøûßý(¿>FxÔ‡ŽlaYž 3j÷ÌiûvÛ²÷G‹× +ùÁ•®Ù, 5£€TÝã¦üÆ‚*8ªòrWÃÏt54ÜÍ#UMâÃâ`펋0úæ8rn[ï·ÂîëÊ|Œ·£^À'ƒ¯¶§a ,¼[S §`&—Çg+hì¥ÒSXèxf¥ITÅâ¹Àȹ»C*f'îujè,6þF:ŽLöyêö=n šu#3þ’‡~‡TdÉc/‘xw³÷] (…MúmXÅ{ŽÏ¼Ž’˜E›r±?$ú—á'±ò€!Ž'’ƒïOP—e¿ …§ OÕ°FĤÿ ƒœîü?† uK‰q’tƒþm Œ¨*3Ç„QÕ%.’v ¨cŒ½Êž½Z Õº‹£N›¥ª˜z;FÝù8üÌÀþÄžp)êEUby¨’ÓñàR´µ™b„Xk~æcŠÅ[XÈNÿ¢Ò­|½¥€ØšK¾­'I}á÷œäG÷ðñÒqˆ‚̈çAŠ(R:ÄÍìd0¥"ÿ˜&àfÁÍü,õÆ»\¿p^>5‘uƒ¼â,À:.¼Ô­J$I¾Yšç+;§\0¤ŒözÓLªeá"Ì¡¤ c~§R¸ êSp#Du¢àÈVÇš_ì\ÔÆˆ²  Îo jL€Wûèq—s•nœxKŽ˜=y¼‰[½³|:òw,˜Ñ³ð/{.åE KÂK–v £ cF¨Oô' ¡Ë¾¡;¸ÁÚÂÍ6ÓÒÎ$7æ¼äÆtÜÏþIrTÃÅÿER¨ææR,ñýÿ6QÞgƒGrš¹ ?Õ‚§ÊÚ–¨d Á»ˆíÀfZðÃù¿’ÉÃR>ƒ~¸O>Òà%ƒ’­’o€•ΕVM`m™ž]3á¥Ö¤F­bÁp;{=žú#Åü›äMÛôE®'´âë9W‹¦«™©ÍNO Ê„l­§Ù³1Ñnð0 –¢«´,KÑÖ}ñííÿ ÒB<> endstream endobj 86 0 obj << /Length 4448 /Filter /FlateDecode >> stream xÚí]Is7¾ûWð0)cÂØv*U“TF‡TMªœè;K E¶$Ú)“-[ʯŸt7»~½Ñ”äI|—&ððð–ï-€¾;}öℱIBÍõäô|¢4щ˜.H¢&§‹É¯G‹4K7ÇSn®—«åŸÇS)fÙr½:þýô‡'¶ökÉžÐüg¿QEó'˜¬="ˆ5ª|æÇæŒ#“òoާŒ1?Öo”êb¼:Á ^òÝ€_ÃóÚO­(ß¼òõщ_Cñáû|(3Ñ$1º‘¤ ÂL¦ŒÈrå™Oi&µg¢›ëQDQS1…2X à3&ZÈ›Z¢LRc²ëÙ¿OŸ½Æàc:aÕ&RBµœÌ¯Ÿýú;,à»&”ˆÄN>ú'¯{Š0îöìjòó³WϾs¡éÄW(ó[ʈ¶š«D>ë‹¯Ž§J°#‡l9»Zþ™‹ƒÿì«9ÉŠÖh¦ÀVUðì*Í0hÂY¹07ô:—ºE“‚Î-"i,’4Y>“!ƒ•Ø€‘^Ö ‘£È2¦J’„kÑ£Ö’/%½@È îåC­! Æ&+\¦¶DZ6zÏÎaRja¹n±],)²O½ØúXŠX¶[À?{å^‰ò·Èœ½›áÁNu4BÈïD&íh~_Ïî:ÄJ!ddG9B^È¢Z¡j”½ÂUúÑ‹R¸ÌПÀÈ´æt8Cæ‡i+|»Z¤¿Q&WiaY{7Õœ(«T D*ÔàåoæWëíí&ÍßÌV‹üÅ&½˜ºÇòwç·«yÓ6ÚvÓ8D%^5}—ïuî»äß%'³SשÐGë›mñq]¼Ü7…Å÷$tá ¡6vQѾ%­‰Ñë¶Mï|ÝøÎé‘czN0"ôœÐD @ 2B Á´ ÑRÄŽøkd¤)ÀC™ ·ð¼I—[,`õv8ƒ'DÊAð8ÖÄ'š Uÿ¼ô³ÅƒnÚ%D±¾M X{’WcD(g&33@ÎÀ¨hΛ$…¦‡%šÖæÍ¤n³=¯0èe•®LjsýîU¹C|ý|˜G›,»6ù¢Gäž#‹Õ £;Ý:A¸Kö-VW{‰Y}KjÇz“ÎæÇ‚]"ú›ŒÅuTQ€ð:ÙEA´aˆ`@>bÀK4ÆazˆÜm 6¡©J¥ŽlG¡v·X»G`UT{—£A-xZB3®Çº–ý“/c˜x‡®¬ß[&gƃAÒ#‡l¶Üw³CÔa%¨ /P‡ QÇõlYˆ«õúfx˜õñry•¢\™Ý&¥wËm¶±ÑõlóîØ™âEþÉ6›e)æ"!B¨@ã/¬„eW^”#Èɯla;jËå5\É”Ið¿"”]¿Ä:1WÅá {ÞÝ\­w`婢€ëÛìb½\]äï²Ílµ]:¸·=h,ü(¸†{k¼a¬·÷×Ç@Ý™§q}…é½p&+™@íZ„7'Mˆ¬™ 2#.“RѱܤL­iF¸¯qr¨…R‹MšÍ Ž1Q3.\,D3¸w†[ÎÕ*Ò_ƒ³F¿ ⨂sˆ¡æ¢®}¥UÆ©FÇ$oÜdP€:Ðú¾÷;Ì–½šºØ$QÑ5²àÍȳá5ØŒOPV…˜Ø‘9eôK€Z÷y¦èI‚ºÙæ¾x±.Ùeàr í˜ÝÜÌή k˜ûÿÝWðÕ›·<Çö9%ÄŠ¢ªÐò ¢bðì‰Sž-HBy®bªÛA%á@¨øç.Œr>ÜîÜùÐK 7€Ú)Ñ ÚB‹¡´`Èzlçr¾Ae_*Ã{q=»AV³Âqr¯­`¸µ qsÍ¢hŸ^—åœmAVOd7cì…Æ23aðH4ø¡J\¥©Z¢EbÁXA$–]¦+éˆâÀ†¡–‚ƒMöËÝ´ëÆH M‚ÄÞ„¯6˜@"UÒ£^Í Zs BrîRzµÅP¸$VîTl¶Xàµ-aXÄ (¶°bÇÁlå4@Б‹2žÆ¹GPbZ$Ïy{³(L•é<,ô­ÒXðg먬_ j€È´"Çk¾OQá Z(²Xô—ÌÇ_4óA±BRÜì#“SѱÜ‚rŠi‘0/ñÿža`'5w‘š‚AMhœ”–ŘL”dùgÚUŽ9TõȯmÛVT©ý ÿPÏů‹¿wˆyܘVoФ ËÚYíYUß#Còb|0'xš‚U¢Ø†‡@% †›ÕáEy´lºHQe²Û½¨é¢z* W{çO²Ù®–LÙ¨~mº¡r0¿O[ò%\ÇÖQƒ*s¶‡Ãæ 3Ž‚Ê1`0È`}x†@:Œ6ªÂÖÒW C'g>uVüò¶~fõ¡©ë£´*X|' ‡ÎïŠÑ™0dh/ÅAtá•§dƒ…ê'¬t‰ +ÅÙ¶† ,U¾ÌòeíÁR6ˆYÔ¾é¨4q‡æ)ó@å6iv»Y¡í,Ämýqõ¤/Ö¬Ú9Uϯ¼ê3'ØÎnÄ–2!w˽&àpV™Š}{~:žš¸ÒÇÌVo¿M¬¤`²j>¯lIãÍz·þJI@&S@- -œ¦€ £Ú Fé_kG ç®ý/éêt`……ý€˜ý€œZ"Ë"Éöã2«{¹8ío+Ó|‡æR(S±ÿ¼›è8O;ÛbÅ(—ËV5n–í !Ý UÕ±¦U!±‘Z¡CM5(³ï(N·ÒB¶3ð­ ‚Wi7ß‹¦¶ß#=.†²Üghr7qùsÀ*šaKm7 íêª5´”#yA¿¯«".í "[ ÜâÚì!>c)ûÂÒ2¹…²HäÉH…|RvD9 —`X!.-¡Ì“v¨ÁÜ,9Z¯ßÁòøÑì2• ]A¦aÿ"œ0õ0÷3 3ÃZÏ­&Ö÷•¶µž ·ù¬¥÷|¾^m³Íí<ëjƬ'(×›…ËDùÉ€­tŸ‚° °,àÅÆfXwvãq^Ã[òàó«¢é[,*QBëJ¬İ&µí© 3¦¢ÐÅÚ®Ô…«“é®ÖÃ)«ÄŒ #ôÃý[?,5äš¿Oí¿o_\éx—E*¹4Çf¾¹°ÿ$ÊÔRb™xˆîˆ²Õ4OܽBJPÎÎP1F._cÝ‹IÒgç:!"*Ö¼ACIÍÙcè|™ ÌÕc+ñÇ<îœ3­`C©Ž…®Þ£õ§`UjAäã$??Í‚€TÉþÀ»÷2—íLˆbünÞ£‰™$eÍk·Ö´éí£Â7*àÇ&Îó¿§ßŸ|ëG¡Ï _}ssu¿ën|çqKá°oÒÍldI±7]¿ZgmÕ‹ cî‘Ë‘2³t\SÍ4udb \¦âà6fO¯Ý¢s÷u¿Ž ΃™æ‚?²¹h·pRyàZãT7\B—n0ˆ¨né´*«j]¥‹å6[®Jd»Sƒ¢¨µ¼¸Ì¦—;ˆ»].Ò‡i7EûCÀka?íX€²¾f±oq¿k¶¹¸-ÙÒQzÓ’pÁ>sqŠ«1¶Bö»ZµkÖ“fož=quÉtwãúZS”ë»Dí‹•fÞ4}ùö`¥´2¨|ûꨴïFëeÀ€–µ`ô@1‡dIñÒ«kqR¦Þ¸Ô¥€sñªÍ)Ûéšuaü‰jdÃÚü:³uo‰¹a@cw`Šã¾®¥Á†îœÀz¾ËYlÒ ðé¦0ð¾ÅÔ½ð3ì‹‘f#dO`7Öx…¿Š´{mBƒagŽ¡d±µ3.78V_ú3XÂ%MFU=×hïOZûÄBÓ'‰@{DsAjAŒŠc’¸I÷®çðG=Ôo»OŽkŸÑ܉ŸrÎPÃf9Ø#5ºê€;%÷Þ©ŽŽ¾w"ý¥Ì7ƒ -IõŒc¤½å!® U¹—Â~ÁF!l¤`£èΑ/ØèóÀF^»pƒñrR]šÑÒdžê"”‡°À‡ÀvãÛ3Æ]Èæ¹”–ö8­Ö­ÔÔõñ“7X.¤þ «C=ä°U¢¶dì®IáL„]XøA-^ãÄ„} *Á“aÛa*¶9./VÓ¨ºuerÌÕ!m·Ù⃰¤§ÙƱÝêYwm7ì §… q;Ê:;9uåE¹oÇà¨&ÜXÐv5üòVUiÞÛPgQ@RÞQgzf1è‹j¨Áýø9¹Ä7à j†îa:š!LyÀ¹­í®ì…®:ÊùàX+löØâçЬ|X Ò~ÝØy_Ô£!§¿yñkŸˆú¿#Z™Ñ儼¸ \ ¥à_Äðo$†ûš™ràÝàÅ4çò¼èªy9Av Ÿ//˦0xUäT·ÅMÙå,+_ùÚ¼‡ q w¾ÞlÒíÍzµX®ŽÝ- ~Üùzu¾tooƒ¬ìåìC1_úþ¶<±vúãÉ·~ø(Ûã)Þ>ÇšÖvE¿¶J9Lÿ’ûg‘ÑÝz Z–ŨgË·iíTÜYš}LÓšÂB³USŒ?£ÎÍU Y* z¶ûÕÐàRUy†—-gÖÔðcoÿèCŒ-íF¦:ãïWUì@4WèìôÙö±kK<©±‰'Ûšwª.Û€-´DÔ#×µ=’]™Ékü Ž9xY°¥E÷:<¨7 ýŒê5»Ã,°NFõböJXÃgêÇó™…ôno‹KLŠbÅ,C/ÀTî,~ØNª…Ú@rë¨:‚Xì5z?x¤RÒ–.Yøêhîj‡U¶éCû8¶:C3¨¥ B³¾%‰ªò;DZ”!ȶö°6›o»l~pÈì=š-¨¢ùoÐ}© lëþªŽlq±z^&_õŸLîÏi TR¥Gì:J¥jêxâÎØá:Þîg÷v\¶ÃqM¿D¨°y‚ƒwóïc( øW+Ø ÐÐnÒy³¹ÁL!d+gh½4üÈAQŸ9¥z9˜ÕÇYI‡=è d=ÇpÇAÅ*” ”ã¯y¿FµAÉË—»†©È…ý\*Ø]mÚÖg„ŸÚ{Þ"§ºA3Ç®±‰zŒÜµÁ=6-¨Ì Ó8ïHøKˆ$äc'gJÂÎP›˜ƒ ®ñbfRŧô\‚>dIgx-ÀÚŠƒ® /ªxñcÝ &Ë@š8®@¾Ý1?~xs¿‡j¨qªÁŸP5Îú JÉ¿hGw'É eЍýOêS9Ãкå„ÇÍ“ ×t#ý«ÍÏ;š)L½Ã÷ežšiÙÌàÖÌÏÎ.ðîú‡ê;j­ÇÖ{Ô]µ{BÐ!à@í¡_ûÄ¢}6†]åý+"ˆÑü¥2µë+§ÚUÈóÕWÅw\yêï pGC§ÂúºR~Ìò·=ºŸ›—îßÈ©£ïÝÿ–óÿV®Ö¯8»ºXo–Ùå5)’’,rœ`>9¶ŽŠâÎI$1©êÿ'íÓoåÖ„Á·õ“¹1=;øÁ`dú’—éÝlž¹3t.p›a¼ÐNÚXè›»¶²ºÑx³¾.’eÀM!âôv ‰’HÛ}.:,’Kªˆå|¢÷º7¤$VuÜ"Ý5„^ƒ6ðR“}»BNÆâ,Íɸ@Èð+ÐŒ¡(±6 "gùl‘ÿïÄå;¼}§Ê|´0^>ÏõARã³}á-³wóô&ËU\E-ó:—Ïßn–ü?®ò;·x{»Í®!fªòŒô}»/ç³Íæ¾xn³¾-E!ʘ A[}ì7³m9Ä%|í/%/¨_æ3#/–ÛÙµË)Ÿ!¨©ûÍfíù3O &ŹêsW-¡ÚßD“‚›9qÛ÷?û!x¸ endstream endobj 92 0 obj << /Length 3188 /Filter /FlateDecode >> stream xÚËŽÛÈñî¯6‡PÀˆf7ß»ÈÁOÀ9x‘õܲ9ôˆ=cŠÔ²){g‘O½š¢¤Û`ØbUw½«¨×÷/^¾¯Vu\ºXÝ?®ò".êtUêd€ò|䊎\ñ‘U\Vƺ̽`·‚«âò,ØíìÁΪHE&ÀxÇ ³-¡NG|æ ž?´ÿ…wàò1Ë´2Ñúò÷ûvDÈê ¯Kb8ÏIô›¶7 ¹Ljä ¯Yˆü‹×‡ °ó+Ñ4ŸáàyŠ”,J/›ë0K«$VIù –*ë¼ö –:&Ò ö…I䉎ÞãAª4BÉINØ‚V+¶Që8- ¹H±´¤dÕ…çýÆMt`[VfÍõ|¹Ë3:>{Påæ´%Ñàßzâ}Ó¢“2®ÀÙÈ…áZå-S²89ƒlŽfÚóU4Ü¡ªª+¡´Ó~@ƒIë4ê’ípt¨-,ÿÑ>hE¸ß_P›ŠvÞ²Îø^°Åê1œúÆ6~EncT¨¶´ºfÃóþãûµR*z…Ó*rHž\ÌÁô ’Æ"HToQV3ÊÐØY®È Ñõ$‡Û÷;fêµ¾q™|Ëw«¬Sy€ ³ÊLáì2qfºãÞˆ³œæ#Ü’U ˜A1£né–q‘Îf2!kF±L_iÆÙf]–.õ°ŽÓt¡†IzKs#@•Çu¦ô#Ýù+˜!X[g§¿;¦‘³–×H~88‹gkfæüg_¢#Øû·¢¿'y’À?Åë¨!±.Áƒcàz~~8ðO[qëQÖà8xhÿ4‡cg†Ù4Þ¡ÍWlóóf8ž!È®;z7¼€¦È#d=ëÏív:–Ý‹¾0†¤ÝO*aÐà±|nûÆ…NÀwÁ¶;ž/ÜÌÚžŸK ÒèÌ~h‚” €Cµ|¡å@0؇£ÙNqèï¯Ñ#!đ۳Š8ž²=Ãà8²sÚZ'[|â: ˆ¿)rx¥,9m¢ 𽺇ð=HåD1•7 ¹?ØòGëyjäåÉ"i¼7w¼L§ÃÁœôñôäP^ºR(¯y{6̿̌£HÓ°ÅÄÁ̱¡ˆöæìyÅ4M‹\1ÏùþhJQÃÐ)|û¼ÎÇÞT²æ(€Yý ǃGŠæ°ò"¸²xºÐ„ørÉ!²AC¦Sª™}<Oï6&"vü*éú „ÒNì`AΨ¢‡Ñ~iÉ"Ÿ~~Žr܇A¤äW:û8Ô$œíFk›'3W†®ÝÊ_˜Ð m¿mAE ‰Bg<Џ®+¦KfB3IŠKÔS]çä H !yëaŒîTè%Û•ªŒ R®  –iÅU|Vçi.ªP]§‹lµ€ùG°<ŒósCà‡HéP+ΊzIë!„I—EèИŠX¥KDÀ6U”ü(üL°«d^•qž×øƒ ÒôwÃyFJ~zœxøŒ\JçI~æÕ†>@"9·ò°Q$ë·>Ë@kÈ-ÂõÉÙ)@n£²„T†gé­„œ"SŸ7*–Œìÿ&UB!ùéÚµ1ÞliŒy\h=¿lGç3b)¸¯pè$Nõ ó·ïá  ¢k©6pt š[BøTüð5þF™xpÁË»žìž²:ÀÖœS‚Wª—×Kªü ¶§q\çNú‰ËÛ#Îu#Ìã*ÍoXpÏ–Îûh 1`ä_Lw²/V2¿òª)aè|+/'yuWÈ^Žœé9Á™ö­¬8+%-%J¨apš†í­´!ð©uôÛ;ý&XÖr©|eD…¢D¼o;u²7a’cyznz—˜”¸œÍr;žºnv¤‘/¸úÚA/ËÏGM¹%w¨éÉ-$œŠ#G¯-0ÂSH¦Å¯c;ù{AÔâ—¾PÃÓšzr‹²š4OÎr'<Ø· °TYênyéùÀä™ÚÖr¶¡ã²¨né×Ê_øó:Ïç./»ª†YÏ)37ýÎÓ‡C¨:­²X•ߨ“+'ú:¿D¡CñúV-2;T‹Ù7{0Ôp”´$߇RìÑI/€®”[ß’Àשˉ+ÚçÍrÓ¼¨®3.Ì¡ø—ÔS…'ôùTÎ,¤—Y—WgÂjOÔeÐÐø§-䇋Ÿj˜y x8¯#¨å§(úÈõO$ø$»åoFä£EMŸÜéyÖgœQ¿öì®u–Qµº§u)Q»òYÍÿª8Í endstream endobj 88 0 obj << /Type /XObject /Subtype /Image /Width 1041 /Height 687 /BitsPerComponent 8 /ColorSpace /DeviceGray /Length 26942 /Filter /FlateDecode >> stream xÚì\ÇÇß^¤X±¢Ø5V¬±+þí]Œ½K4±Æ‚±a4‰X‰ÑŒ [;v±k¬XA¥)ŽÛÿU¸ãÚîÝîqå}?‰ìíîíνyû›²3óHAAAAAAAAAAAAAAAA€"‚X­Èþ/Ü@Äšõ@ò/(|D“¨¶‚´G1ÖÓ«¶b)U<¶ìC@L±”B=(žÚÖD1°1Áj+º$ ‚È«­è’ÅWEÃ&b ÄxZŒ“AL^PÅ °¶Š‚€ ‚ bäF„üíïÿÛö ¯ÑbÕ¼Þ7ûk;W*öåú¬MU:þÞå  A¬äà‰U€×tjÐã Éç„k¿­ œæ‹® Δ/õ-…›·—ŽêêéÙªç”5—ÒŠÌ¢…˜&e{O>÷ëeW2Šìhj (ûíù|ÙçÐ,­…ÁÕƒ*·nŸo}}Û©"pMÞúJñŒ8XŽfb–›cììúïNÑp4êצà¾"Nº 0í…‰¤mC\Á­ÿJ…jÁÛƒsÛÛC­i¡…õVOâ$šŠ9Ò›@³ÍŸµžólNÞÀÓâjB3€íh3ÄdõâÛõ\©z$çâ‚&PÆç†ìã&(ùÍEÄÛ‡ƒ ¸üJõ„WÓœìÆÞÒ}¡ì=‰¶Ûä_\à‡)î8Qxƒ“Øž@˜!j¶«mÿÝ_4¹²4Ú éóNµzh1ÝäïêÌ%jù%)ñb<ßã·$Š—{ú¿Îþ$>p+&ÊwÝç¤|çñ÷ÐäìJT_™ ã¬[ì'<mxsx#Ðh: óä=ü:·pGÂsÊ•Þ\ø9Ú‡W=0Æ_Œä4ñ࿳´ý–:‘Ó|}Dzáñôˆ?<9“>£é-Äož7»€ïW?,zBÆo¹}NæS¸Tê†Fn½î‘§ˆõ -Š¿q…7çw<."¸Dç'*;?ÏåN’IÄ«ܺ»4/ÞN\à,\ ~…}*/|„{ݼBã#ë™ý¹%[ (|^;T‚OH[]ÎaõAq[CÂËp¯É¿¿Ð•S¿Wá zÕã”Z”ކ&fª}ÚC‡‹ŸâÔù¶uöæÓ»dâÁïk‡/RâIÆUn¦vLÂÛ&•ߣùµ—ñ›g©ù&º}*ƒ7‡´üGx´!×Õ8e¤ßº\ÑÕ¿ˆ_¾[éZÉêÔ…•˜©áÈyþÏd~PyWz€øŠ®¬«€(ñ4Û³ž†÷”Éu[` QÛ70ÌæO5¥Ð­ê5žK”vZ”HWdIª­üVâªïN›!j¾ÿqÍ.ë¶|¾gg­›û lf'Ӽ⠞T x6¶6¢Íš?9Dk:õ¹ý*ô}D K^T»?¡yMñc|¬¶o½+>Z ø’¾sî÷$yŠë«vØ¢pï´U[~ÿ‰Æc‚ÆžëqÍŒÏî„Øò»ßì‰C:¶tøYó™?•LBçGTø›{BÑ„jÝÉ'=¡O4½ ntSzǵóuÉ šNëüÆšMße¨–ƒûx ¾Á&-ý4iöèýHQKÍ×xì±Û¥Õt¯<¢g«º ™ Øö­£±±š]s˜›>‰sX[Qï¸Åà;üO«y‡vG÷GŠâW^ó8#rÔWÏôŸ£ôùmÄÓûÂqÍç%"­×ô·Aë{ÏùßÁ}µ¶£þÕÑý‘¢Ôž§åà xhð VÕ¢)Âj‹­×ô‡!WÛáà ¾¶£{øèþH^¶&°ÂƒïÐb¦¶£Ó[Y¯í÷+¯EYtEuooƒïû•?j½?‚ä%ÐÚuÕašÁw(»AÛÑõåQ ŸV`UÑE0‹”RJ^2Äp§$ö+_^ùû …Ò4‚à¿ÅA† ` Ñ£”b³Ú ºªÍÖÜdÐ(I{G8w£á¶GA@ô(¥PŠMÔ4þÚšCÔ¸}ˆI BNèìߢ °)E;3CgT>b²~KK  † ‚¦žî¸ú•¨õÀPA(ÚG‚ ùyíTÞ†°‘LLp¿®ÇÕóc/¢  ‚ÚžnÁE .8ó²(¥ŠÜAcõÉ“ öäBµ3´fšæÇ„nšÓ¿¾@IÄð&ƒRÇVÿàÉe@\Nñªè9YYE”n`UNùi±`ð¹»/> ÔüvÕÝ® Ä™ùâéÌÛ÷Ó?ÇïÆi^:Iðáñ‰¿—ŒéRÛÀ¥ù°Å;®Çëj2àÀ$„¦ 4"¾¤˜"fÐoÅfE]ûmW„"+Èg|•(_§uŸŽŠ¯|UßÈñÎ[c'²>¯kÌ¥- ¼:Ö¯ŒH¸5ê5zÚâ5ÿ q:xï_+}¿ý¦sƒrâê„sƒ^>ËwÝ,XÈBÇ+ߟ'àz«ÖÎë~c}×í¹ô$‘ÔPJ)íðräJ«­U§œxFuEÄG‡Wût©*rÑJ'ªt*Zq“Ap¼WqEU­ƒÂÚO#Éwý€®|tXæËë×/×·C#wù%xejxz ž²ôÏà+‘*³Rt ë÷4üå§\|(¬™„n²iˆ¼² zŒ_Í*Š+ vnuZýÏ{˜ˆ‰Þ»4ó(%.ù8å¿ê1iÙöЧ Ý:&Øüþâ£u­åõÚKºÀÙdí¹ZNûIþ&O&€sV¿[-Ò:±Ì}‰äOÚÛ'¨ ÖÍ—µd¥§ŸŽ)¸¾¢‚]xÀoPXåxprçús'yöòêìÕÃ{ø”þï;¯n=ÐjÚ§àÖ—QϬE2vyqÊ8ÛHW¤ö+§e1ô‘ å[×ë€}¸^w‹ B4,œz.üòöIDLJ>>VË£¶ÒRjn"Wë"[Å>ŽôÑÓ_t,ÒÑCäï#­¢Œ^óqæ÷;üXT™"Ä­€¤Òš«ÿ…“³Ü¦º~Öù¦¶ÆYV Űù©¯#"^£&X%Ï—7€ªâþkø™$» Ñræ>¾¬Ûër =×ëøÛAKC7Í~sa(°d³Ç®¨ 6%ä þ’ìÚÌÕT‚Ç»÷Tjæùë·PM¬Ó8M‡F»Y[ò:âÉ›/µÛºˆ]Óܦ_?+®ü)ú¼‹¡ñ\A£Aå‰ô[‚/±¤–8Ð~Në K4Áb˨¬à>\WI˜ŠËvOr<¯^š×bfÔÓܹjŸðü¹<5ý‚”˜ðÈ·¨ VÇõm‰RÎ Èüú\‚³Sâ-:j,—³QX÷7¼¥~/¨üí_h:UbMÑ2Ê"5!lF)®W°¬Ÿ¤3s‡óÔ˜ÿº{­ Ýz—Í@5/7ãûÛjèëÍMŒiB>+–OrPž½wˆÄ-·Á?"Ý}ß^Ó"(¡¼_• =£9g·¨«!¼@ríV9¤j½ÕÂʨwþµ ¾¼üãm‚P˜É,üÙ¦É>å 9Â#‰žÌ­~µ²Ë¯o•w½ùŹЖ7ž¹‰/ß½Wˆ_4¯òNŽ®ïP8¨Â¡þ˜Sø®Â\È îcc×'H6~ Ó ì jŒ8ÓÔÖŽ:Ždæ¹|_¥±ÚÕÖcWý ®¡’m9õV…¦‚ŒÄVåZÒ@žcsÅ0z áa&“¾¸§nÏÂô¬Ë)½TǸÓì„çáQï•…**R¹ƒòl=¢ß¶Â0óÛ–¶%êŸÃGÍÈ$Þ>\˜—©EìÌ íÀõ *|ǵ –Ræ+·=ªGw•oôšÔRo£6X:;âD¡ANFd›’핚 ²ÇÓy[ѳ>n™¯hwÚÚGL§;çÄ2…@»ã—¤ÒöËNˆ WÚœþD!G³a°J³æù@˜#ÀgÔxäïêÌQŠ‚µütU.¡£8m’J”Rrº-yC½Rð’øk³Ë–ÝÆ\º?ûpš„+4LÓ¯kÊòE›|®ZoFTxoœ“²AœÇß3Ûi*˜!E†ˆ¼ (ÈBÁ»}ê¾²×n¾º4^ß”'èá× nÂsʕެ͋¯Í(+Rƒ"5ó õ‹ ËßãÅUvö:?%3šôœ•oà2Aç ïâ2**^©È W ™:‘Ó|}„Â8êôˆ?<9“>ëNö¥ ·½jSÁ|5A>D$#<‘äIBË0‰(â4>­FÈÏÎûolž)~|Ð *ϸfIïò…Ÿß<‰ˆIY AÔ}#ùi¿:hl =·_E¥(ö!P¶½%5T$Ç„Kˆ'G·Óvâ×cñqeŸ]ü'š³ªñ€Âúr@[¢ôèPË}šŸ›š÷Tä’1ù$™èø³æ“*™Ä  P³½å5ŠˆrÊ‹pq !<"î+?m'.m€+ûtªåà>žô­bbá::ÄRÛp‚”˜ˆ'ÏÄNOnrH×|fš} n= ,l/j*ð,±©PPÎļ”ʘ•[µ»ÕWÖIâh¦ì¸Eyh²Å"ø uÉÓª»ëÖª‚ ÛöÝTüÈ—’ªA„X"ž¾XP$f$.­otnëXÈd¶ÒÐdË$W@¦½–SQÍ´/¼R¢ €ZAÔꀀªí›µ¯Ö%X´ûEE<Ù="úSz¶Ø.EbFâÒúÆç°ö¥ÎúÙØôÝméSÔ^ED†rPûÒl|Ýz P¶uá‹Py}5Û(=ã¾¥»Ÿ$s¢DŠþ"EHª‹Æ(Æ¥H@•¢+j{wH¶xÄË›°‘Q¯Þ¾ÿÔšÕ0÷Ë8.ˆ£d{oëpAA´¸’Ÿ‹‚`b‚ úXƒSƽ‰R‘ñÒ>Ó¢ñ€ÙjkŒø¼ÁwÐö…Õ„7Ò— ±PLOÔD ¶|—|/qȘ4RM S†Û±I-y~Œÿ÷îؘ͛˜W/_>ŠŠŒTl®CA@A0 ’$ýÜáQ‰ùÊ‚Ìwl¥wOøâAõ±º¢4›‚T $ÏuNN¦ˆ4ŸS%·øéþ˜ÿ>Nò„‹ñ˜˜—"¢Š>åRžDF>‹Šzñò嫘Ñé¢oÅÇ'|üø!))5õ­´?7"¾ ‚É B§ü1))%õKZFfVN®À²& Š|=OR„}IKKM}#ódºŽžnƒh)ýCÈþÑÖ8!½·E©òü¥*1úñªà/ .ÿ,RΓp͈îȧòĈ/õFúˆÇ})„H(’ÄOyªH=2En#òŽ“!•ö!˜¾ ü¡è ‘‘QQb•}ó6.î½8û?‰%C”ûé™™Ù99‚âT‚â,+33]R˜‰\󣸢**ÇÞ¾yóZR†©aR%ÿ Ð".ØBÅÿôñ|¢¡ŽÚÙªī§/ .Qxý¤R%|N“<×™™b³æ‰ÌËüPÕ$±Ù#ðµ£I B‘Òjk¾ WT’fˆ›‚âL샲§ë…¤P‰P-Aä凨‚óZ\€¼‹“Ô¥Î÷©ÐãD|ISËgùñ”$és-~>ˆ/#¾ž¸`Š~)i‡JÊ5õ%Z¤$%’rL” ¹†I‹°Ï“a¤ð­T^g‚ö@¦†;¥¿ø’|Þ¨pìTóId÷§‰Òbp`’Y¥¤ê±˜äx^½O6¯•d•9Í+T﫼³h{Ö9߀øz‰B°×­KÚ_aÿñÈÎPÓ{Ý½Ö +µÈ.›j^Æ÷·Ýƒ¶7‚Óc8Nsl0þ ¾_0&ŸmšìSÑ-¼1’èiµeyµ²Ë¯o•w½ùŹÊu´=bD ä96PÙ»ChxØš ’¾¸§nÏBƒô¬Ë)½4mX ·ÌQè”ÓÖ>²vƒäœX6®Ð ã—ÌEÛ#‚ ‚ ‚ ‚ ‚ ‚ ‚ bDÖ‡)^óm‚ ÖÊ—ÖE¦ä=€FAkeÕú¢{:E¡UÄJñH–üY2nxßéž­? UÄ:ù\AúWÜnøû?Éæ®h±Nn´—üöÍØ»$Û‰•Ñ,bÜ’ Â_‹ÒIá™ TB³ ˆu’â&ù3D¼þÚ1© ÜèŽfA+¥š¤Sqì;’¼V[*[qíp±VüÿÿÛ³W_߽̓ÄÛ]ž£UÄJInVd`Òã¡h±ZÖÝWþ¼:m‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ æ  ‘ë ‚ õA Ú (‚(j‚  ‚ (‚  ‚‚€`Ö#T]BŠ!—ˆöö>"ÛÜãí/Ûœæí«z1±ÌG Œƒ‚`¶õ¤Ùí‹60­ö RŒøz¢ °1q²c] 9z!,:±bRŽ,T› ¸yÿõX4+x¬D+¢ –Àe_ó¸õ†øí¿ùô}fNrRô#Ìí]€2}V\ÈÐøµgÄÂø´®T¸?QõÈ—뾩 6í—^ÊRÛÀ°­¢ðq¾?@A@̰ol|îh9áÝ® Õ¡D—å×rTæ‚çe4¡%¨CPh¼n¦q<3ÆØÜïG4ß–®ó´×ÛÇTû.?].RS8ÀèüÍhõ°"Øñllžǩžübëw°m¿øœ¢~l#€Ç«RÚ`½1ã’>‡×ä¨ÖW^M¨ ¼Æÿº#-¹…àó|´>óP¨hv„*8xͨ„¸»æëñ½wûætr^í?n>ÿäCö:q…€ïðK†–:üEA@S$nŒŒ×ûÛùO÷û mÈk!éŽâ•Ù¬I ú«ÇÇbuÐäøòäÚ±í»‚ƒO‡¤õ=|Ýlœ-[3Ôà‹äÅE\=:øâç©òZ€JÃT·PL‰¬s ûV+»½D½mz/=«ñôé(…П;(•™Kí´×øÐ8àÓɧÝ S°}h2|ZßÃê ÿ5$â½ä%Rjä… Öæ‚[¿µwêê‡.å6ç~Äñ'f_ô±ÛÄÌ•²§6àæû¼ ¤5 5‚€˜ùg¼mœ¼·¼U=’vyÍàràÔ{ÍQ¸Q<‚…h< !ÃËõ3WŠm&j+Ø»"T¨:¢ ˜¹[< ÝÍãP„‡–‡’½üoä*í5[ßDûYiÊ>`æJ\ãµ'SþQÚd 54ÁääàŸê6>Ïtžöä¯aÀ¡ÛŠ« 3`Ïð€]•sÇŸ˜e±¹†.Õ°îê8u™¯ê²· †/ц0lj6ß¾¦xnÔ?£ª€]›»¢doªqøœÉïµ>óŽ?yŠ™Ä> ùW˜ºTZÓ|‰Ãbi}ãUÐ÷-lÀ¾ùøå‡®>‰ÿGüR‚g·,MKÀÀñ'ø&Ê ¶¢<‡:ú”¿Ùwþ™åU^2ôD6þ¤t &AP;þÁ´H(=€¼iWâçý¿žó>üòlB¯ñ'Ød0-†Wýb ÁÌ.FBJ×}dà%¹âÕµøDË€DZãO“âœ2‘”`u°øØÀnؾ Ïiƒ~â5öðu³Ù’ßh‰‚`íøk ­Þy¥f…I?¡ ˜-ÁœÇ,^ÖVl2‹¸› ¼Â^[°vªàŽ?1Û ÂWÃØ¼˜kì±®<©Qä" 0 …Š ¬!:ŸÆ°æÂ]¸ÏÞÅiŒ?¡~ßD±Éwí5 èÚ§Ád€j*WÕú†'½?W27ñFA`“>£R¸€ãê— rQKia@øb£ÇsK1®™Á&Íç«äÒú InåÀã /ú}Í+çfv±ï¼Qû z+5v&›%•cå²Gm¸6Ð*D¨Ñ»”{&«ƒÅB„Ž.ý«nøºÙ,±ÙÍTQ“œý<,ìFè©Pó$áà¹P7Hsiª­ #³—Ÿ£½~€‚`UäÀQ¾ºcÅìñ:5vw‚6E8øÑTûTl†`“¡xXÔ@G{› VÅgÐo&|Ê¥u>+‹žw»š­{Ÿºpõæ¡¡wÂîEG¿NNIINN^(áCpœý>” ¡yŠkë#†’Lõ!äd¢9Ížx ÒQpÿïjå:û¬=ö8Qý9B_q{¨"~ù(Ðêk¨ÅCÃEŒ Âü’³^¢AÍœ×p›Öù1›ú;kŸŸOÆi;+w|ð<”¯Ý±€T…ç¿„ž@ô UÕ ­òv¢g“g@#x×ý…uÁ±ß†Çù:ÎKï.j-ô -êªí…˜íÅÂ8ɘ ýDZ;0C£ê½$hŽ šõ§È³Èˆ¢* k‚ûœ b&y‚Ïs´­9ð\çÀe:J-œ/* ¸3b4>ÞJŸ€Ô-jfÜã›(¹ ”VÏú¼¥-Tž{‹Ú ×M¥ü>¢e̓»3ŠÔ«ÝþÞ‚#ŽõÚ3”ÂøÐØŽ,z  ‹ëðŽB1âëbë’Gù¢ùhWsá"0¶ZÒçøWÑ‘a AþêS¢­£ã?·áµ®jà1/¢V@²‘ÒƒíCãr² ùz|ØÑ?æèÝ®Q5W€ª4ÇŸ  ˜ ÷á…öÂþ߆DSÆ+ò±:h\vÚê÷=Á“½¾ÝkÚ‰üòžýÇN_´*pßé[aa¢·€ë°0Açø­‡PЇpˆÔ&Áu9}î3=(ÆeCú߉Ý2¹E à7½"èâ‹,åc›Ž«_ µñ'Tê(ÆDÛkÇÜ ZoÃÇŸâ˜væWzç96­Øwšµý¾Ú×Mþ¢J@¦æþù.  2Þø¼„0 Gr«ØŒfâå! ‚ ãGgAŸßÛñ8Í\ÐÔí üAÔZh¬ÔÀÔ2þDõ¨œƒ‚`db5,¹›\ÍÖç-#·ìð€æ²Ïwüå ÅuôšcnŸ%_Q=3ukW®Ëص¼PŒèpmjÖ|P?—álcÞ”ŒÞˆú:zˆ1¡!¥Ór²³t(KëI{8ýo£EÍœTu³#½Áë1£·Á`¯&Êb*‚P•Ó6@瀅ܷÆI3v<³H.ºë·ù%†oƒáàMUé<å½³â`äbMlv)N÷/Y%°ø†â)Æe‘Ah 3L*Í8xM\”¦¿ ·”s]“]ŒÉAõ7² 4ÖÚªÃñ ÁÖD¥ß>DµãÍLÂê ¡­S1û/wþ„z__7›%µVnïtôd!ŠÏ´#Ød0Y~ª«Q+ÛŒ~aÀ¥QÌ’& K â‡aÂüZCýþ´•åf¿g¤ Ð5îD¿ãK´™%ÛLánfå(&Ìjwµµƒ€rN?2µ¦+ñ¶è4U¦CJCkXë*ªîËö°ñ‰7a1ˆÁ|cã¥g–¸ŠÆ°>6”-ºG\›ïóŽ¡Ë³~wÌ7öè/õ¹…ØËö0ú³ èRdGh3Ž÷ ÓN3¾‰b“o‰ÿ½Ä[κýÙôØRRéã½¶Ä€pSO3 ›Œé-ú'­Ú@æFŸ²ï°ô\šú€ÎèψqÙê¨ðáó nœždåøtý3µt„ìÀ6`ÓlÒo΢ÏýVA璆׎ý¹XùÇIZ,”¼ÁÚ-0ú³Y1ø›Z“Ií‚$uAÈ]_ÖaöÃ\’œÌLHÓîý¹¸ùÃMüïï\&ÖFÍÓøÌ3ýa“~í9QšAM_Gæ„Ô¶›'™³€ïŒïLž•⸠yþ \ê ¿…ïñdwÿÂèÏ&G;·Ášêl k_Q¢zÃb$[OKÑõ=Z×äYÚ$S* fbøAæ.QëûßiŒþlÒ¸ÃU†!Ã϶î9éfVàûc h3`N+’UAÛøöˆ¶Òñ'•Fÿó”J AÏ`¯8xMl+ª¶ë¥ê $AȪäú§¼9D iÍ)]È8®Mè´à…»JKÇŸpÁeh[‚€°È+˜ÎÈuN5âù¬¨ñÉf®¾ µbuиôžYm¤Öú½ç1õ{‚òø£?›ßÃCÃ/" i ^ŠAc³ô¾ ‚qi>oIÉ8­íêÏcþƒ-ßí(QÅñ'ýÙĔ弌bòúÄ-ÃZN҉ɄíCãR~©ÝoÚÏ ú<湃}ë©Nâñ'ÕoS‚ÑŸMŒCD}Ã.y|¤ã$­8¦ÝtI†Ž5r˜„üíUl&ÝäX0)]©BÃøŒþÌ4ùǃip Yõ mJ}oÀýã¶ t Úlþ¢ý,© `°WSä*º‹Pz/5åM‘ŒwÝ Àw9І--Ö¨\à:ð÷èyï´3€]Ï¿ãtž)m2`8xSd¯#i¸ ¼ ½žHÞˆñh×bâ.­UêÕTÝûÕàë¨Iæïe >ÁŸ1˜&¦°±KõnÍá®Á‚P²¦ìÅeZM° `=òóaKî­{оit ·+”÷|‹ög'Oÿ f‡òªB:§…5Ð93]xÈÃáWùKæ¡Ð$Š}á›(¶¡Ks½µ–?ûT/ÿ0ŒÿiyJ”ÿä(0t’ãÅVÄð‚¢!Þnq.‰‚`¶‚púzäQþzf¨¯'‡ë隃†·AˆáV3èŠÂ/ð SØ‘ga“AHtÀßJ±ÓàÎÊ®vPoFÈ4ºå‚°-hÀõ>¬«Cô¾¢ù8­ñ'ˆ~˜á7•´¥0I!î4(ç‹æ·,Aøƒã¦wm/~gOžóä'4›(Ótn¸;—!AXÊórÔõõ|‘”‚²}°ÓÀá®-'H¯ %žœÓ˜°é³/“Úý0Ø+‹\q„ ¿}aB6í´¶ÅRCýú”†’^þa8Ù!®¢}OÚ2Ÿu#`DM€ú3O¤é¾ÝÅ:_Þ»[‡×/ÝÉ À¡ùè•G^²ÿ3vóѵ$DŠªà¾?“MêSëÓSò×Ùñ=¨,a“ûüÄÊ¡u¹P²íwa¹˜Y&Gnrrrl žxÆ94ÜsKƒ ¨_µÎceÞ«‹›¾mfà<94ìêÉ}«—ÌšèÝ­eE®èôòMúLY{:ÆXéÛC˜›R2gÀ»~[ãé×úô„¼}µ£½ ûå™ 3zÖyš{¿%_¢x›çwü+Ûº°V²ÑNú¬s$cÓ¡“LT PÛ‡@ÜîêþU›îÞ“ç¬Ûý57*>þsçK–«í{MH¯ÖG_Þmè+*:ßQ×^|óäæ¹ýëŽíþU‘{”i=fž0œ®b:Ô+ÑM¶õi_ð3ÉFT¨©*ð‰þ»¥Î£må{%A=rÆš#¡ÂDDEÇá #“áó8©Æó Ü´j}ôÁ•Ï— %êöôööþŸ—ŒŽžžõ=<Ê:ËŠ‰òzMXºñØÝdÌ“àÃö‰òáê_¹ ¾g*ÏÎç©RP´®I"ˆ¹ðO àIª~œé´j}ô¡¬si·ºyK™è#eª¯ïÿõ›ƒÏ܈ˆÅž^Sãh‰7µÏèÍQÆ/© ½‰‚`Ædõ›!j/8V—ÄÆå4»—V­O¯>ÄœÈÑÞ—û©9Ðh¯ô$…( «Ö¡C˜ ¡Ñù=7òº‰ô€ï°!Ÿ¦È[Š œ|†® Løb•Ób<€èY0ÀPᕚ&'Yd:; ‚ ýFòç;Qµz½¥]ë³Ap[® Äð 4¥¹ý´…Ÿ ^1©˜øØÿ¡µg¸òBõë¸UÏèQë³ApÚŠ \P\¢ö¦÷™R§™ BL¥êÏ­;»ï~SQ1’Í)pg¤ëSë³A8ö5€ ¿2OAÈ_aí¯´~l¾C¡«(ÜZGè—§–"ˆ”ÏŸ­PåQ`µ]· I„<çäxÑšáf¹:.'ê§(EâÃÆ˜— ̬ÒÚÚ3<"…á2ÉŒM‹¾wõtð–À5þþK|}gN'cV$qñÀýŽ&ã)–)ÀJ).\*JÁ¨pê" »£GžÐÉ ¥äÚê–4]/íCtØÕ³ÁÛ6¬ð_êëÛZd[â7:.¢ÑÚEÓ b§lP~ê^Ô㉠µÆŸ•Sÿ$2ÜöŠ4¡¬Ä\Øî?{tÆ•ldÕÅ’®•=<ê{z¶îØYèÔY"\BQ4GP£ âx —ïÒLæzøD×PŠ"¤nA5gÑÈ Û¿eþ«efGÛ¶röèžÍªØÉ\Å¡LczžžÕ$Aö€g·–Ž‹h²ö®¸NÚ3EçƒF½m“5V"X\þà[…Ž©Yè‹1Æ@ô‘Ußv«)ÊJ{÷V}Æÿ¸n÷©Ëa/ß]ã:€4åíöÕôcé4zŽ?µó¡›ÜÃ|®¨ª˜EAäÕG5瀾‚úôo™+Ÿ®ü=ÿ›ÖD†³¯ÞºÏ¸ù¿ºý>U^ï*Ö®£obá€u .¢©ÉpZ’Eubh.Gnìƒ šW¢ йÀy¨$Ñc%ŸàpíœÊ×nÒ}äÌ›]yBme óêfN¹ºñÛ6%¨ÒqüŠ=7tu!ð¥¡ñ F*‚½<DÃéàCÿõÂ%ž8ôs)¿¤»TDžÂ#¬o‚z=°HEˆ?»Î§C§¦f®;|/QÝ9÷JñDùRÆ/UAª q‘pImóŸ¡^¨.âë9JZ5\h½“V=V.;¸O{àViÒªŽ«øRåÛŒòÛù_¢…ä° "ȧ>Ξ£®éÖºœoDYß(t! Èí«’…©Zz{ËG¸­ô%¯‘z{o”?üEŽû‹ç¦7’VL¹v³(ˆ¼¾‚иN£Ö=&þö>Ÿ®X˜ Ä…øõñpõí­¥?ô²ÁZA¹Š Eƒ\DØ›Gð¹Þ¤|îwƈå7h§>o÷‚-ò Ì­ç‰Ez@µÓLbA ñaç€?&å}?0½w][€ªýýŽÆšw'…,ìì%».>Nñ‡¤w5g¼ÓÙ8R¬¦ëx*d‚0„AÐ"òši„¯J;Ùs$µ½Í'\ÉÖÞ>¤ß¿eɨ=³Û•^ƒ‘kBuö|·Q{RÀ ‹Ù¿÷ÿv©mÁà—½k,“m¾z¤½`N;%Óñ|§† ³¢rzŠô€ë(PꑦDÅ*cÚڲβíü7gVz×$ tïU7óÌ2“ÓB}=9à!ªPŸZ“é •×§SiÉvPh5eT7Ú ¿b¦j“A›ÈS©;hj2cNί¥»v.vü®æilêÓ¿eâÄ\ÐÕøžS6ßÉ¢rþ>.Ñý*³."íì¥îMÜùZsýåëŸFÏó¹$ÛœðQþÈ*ö"ôãÏé÷ìÂJ Õ$*·!ÓrF+:îç+ÞåÁ¡ÛŠÿÌk Ü/'æzr9f¥9Nøó°ýÌÿÐÇÍ9Î+¯—`x§¢f‘×) »!jš­ûÙWÛÇVçÁ›ßô“?ükn’z-ÀÛ ¸õE…õ•šfzlÄ$¦?9+7e+od[<½Ë6ß¾T× ˆ¾¶¾²·† ]>S¦MÑ¢,:ȧ”òÔ÷­ò¯‡ŒšËy×—¶æ ¦2·^b¡Ž¢ì^ÍkGÍ"¯zT Šo‡sŠjÏ×÷²‡sÎé¿ ø·Lׂ´+k¿©àñÍÚ+–·¼³p"p'¬Èeà\†¨2}Õ4ž®éÌã¶_ýJÔå— 0ž)^ý=ÈÜ'ïO0ûÒr†Ó4¯þiKo{¨=íH|ñ?m:¹|Ôl3DÇ·’þú*ù>1 •µih¥ùBÂÝî6>Qì<-,‚`‘[’i ù‡½Æ÷3qÇPxžÓ÷2:bm!½Pt׮߿׿ÑP$g•zoŠ‚°—§»û5ÖßêûdÐõz0´áNfm8¥tr“/€¼'µº†È}tzZSM¼†@¦—ùYëWâB|ÛÚB…>þ×˜Š«BKxiØ"ç`ÇáØìýv%ßÛqAáH¢ÐL¶¥p\;é° ‡rK·ÝI¥å~ͧ¤MŸàÜb„ÜŸøí°Ý3È}Æ]1iZ#_˸üKŸÒ`ßeùUQH7Aˆó¯ÌiøÅÍteow°Rç-º®Ä|â˜öÚu$µ{¥uá”›y§¸!¢y Ö{ŒY öJSþd)¶cy5ùp(5Á„O·Œ®%ºü¤$ WKÇš‚ ä‡zóÜ|_“FÁ´ƒ½2Áj7ʧƮ¨5—hÖ¿×_Øá:Û6QìÛ‚¥pðŸé¼)ÁVhGb—êÝò\6PNY\°Ou(ÑÖ7T6 ­Fo¨!$­ªNt9`´7 섃/‚Þ+ÛÒsu!.#ètɆýP šú?WÐsK‚؇÷‹)Ͱ ¹¦bO¯&[tCët‰(ð=%¢»üC± Bä{§™OMѰ'Ÿ¢*[lT/Ë«}0?½jpþ¥Éeà«%êb;»n’þMYýžQA¸R¹ê&•Ù4Ûùwud«hp“qq]Ú¿>z«¸ùÐù§+Ô^ÿÞÉ`K„¡}ˆþ&:^‚‰ ‹'rSyÚó§WjÓBŠ Y,“ {|UÒvÖ{Æ!Ë—Û?‰4gA óÞÓ¹v/–Am§ò®^>%5žçŒ ½§R¿¤²!q¿Ö ºÈ'Ió!ƒzÀŒ 4Ÿ§ÇÏÞYЄ°éôk˜Ú sžO3‚p³®s µ6¸A³ö ×Td¾ÉÀªØ˜ÿa ws&f×Ô†¨5vs¸ÖU4î:A‰ï„¼c}y¥gÒcˆÐ›ÁB±Ép°}ºF=(&Aè3ZO} ö© %Ûú†$©s®¼– ¿/¥p2E&á;nÏ·Ô+Zúç¶µFN‚³†\3íšà‹—Ш‘Ja;ó­²)9ƒ[äߘ[ãõ¯C# òVræEÙÞùšzŠ©É0©›þ?GøpýˆêÀi8ùÏ Ê㛸ò€/«%ÈîK-œŒÒƒ÷cÉŠ;h5¼À¤áü¿BSÒ~»—RêÈ{°}fGgàÖ¾r˜º—믪ˆœ;Ꙃ©9ƒ:[$šR j-Ñgv¾>ÂNÎÜ Ði# ÂÜ–þ¤Gæu* P¦Ów?’×"ˈÃGH$Az_Šád ÌôýClÊÿš¡O–›*Ë8­rLM*ÿFÿJGÊ«¼gF\ܧW¼n©·o`h”RÿRlu¾xyë^aòü¥è El!ß>­9—Ûb™aë™´¶²-#‚°¤!?äÃù?|Ú–/n_¯Û€Y+VúâUCy¢†ƒâ}u†“9Ì—OÏ/ü3»5Ÿëµ=Û’òZÄÃÕ&WCh¸˜ö…®r¾Õð8÷ÅÙMs5q/ãZ­Mÿq³ú#h[hè…“¥$Î@ô¾¥X£!+59!:ìôÎßgö®c%ZO;”Ìè#gª‚ ßʶŒÂ/5™û9é‘g·.›Ð´i-wWyüp¨¶RSf¨ 'ãëÙZ²úp©V3×G&_Òéub18Å¢‹Å(_Ϥ}¡üc:»—îŸÜá?kdÏ6õ*Øñd£`¤úzÒp†»ð»Ì컲_õ˜¾;ž¹'ŽûϦ‹Ð]Ù6çh*ã‚°¶ Þ'˜Ò@ª-vÞ—B8_ÏCó~ð;µg .”¹ÿ3kÚÞ*.}A¡×‰ýp%ˆáñÅ&mg°\æå'''w×8—E3=i8Ã]¸<ÛwÖ\ßy³¿Ý£‘À¥ùäÿ¥GÈä¯ÀnÔù|SpMDÙØ=)PqƒÂÁÿZƒ™´Z¨ðáKOñ‚ä\{Ÿ ÷¥N¦°J™qmUG®Íÿvd²¢"[Чe7 ø¤«× XÈìÜ– zÅ«ƒc€ ˜¡ÝtöÝö¼£$i£ÀLz²ŠØ"÷åÙMâîKNí¡ëî X×’Ì/r‘r3ÁEŽ]Ôï{w+8ù\SvÃÂÁû5`&×'µ+Ü~^“#rÏmŠ÷¥NF¹·?qç@—éáì´ ¿ Ud9üÁÇó´ä¶Ú¶­Ák*¦-ª0Káãsg šÞ£(ò$³áàÛOc]¶q9Àã ¾®˜¿”œA½8FZÒ§8÷^}+]=±‘'väféºÝ5ÇsæégÜ„öb­­ûÛ‡Bƒž©n–ö:¹”˜|_ù¾ÔÂɨ¤&9°xéž¼¢O.ËÇ‚/Y °ÚM †ƒÏSj ]ãë䥥¯•ò—š3h±stàè*ààåFg¨¢>VQÔØ!¸¼žÁ9´\„îÐeáV}çK >Ñ9(]£ Ð ?ëk†z F¦ìàB“-éE‘b85ò$ íÏ­´ü Éç%Ôl Î:õA&«õg%Ò¾)Sé Òøáà;~G9©qí«ÑŸU˜ã DûÃå⇢3è°óÓ¿—†²C7>fsürB3Ideáü;­&ƒ×T<è é¡!ìÇï¡PCPÔ¬3¡j–IŸÒ…é.Ÿr_·#j@}}%f^N÷}YŒ¥ðí™5£{7©ZRÞûM¸¡ô~œù£\¢õ¸Ÿv^û–#Ž×Ùå¹n‘g8|ç©”Óº¤N8ýxÝyê}룺…7ÿþÚ^NàÒë—«Y gÌç›gŽkY«´ìíðø3)ÕÇüZóúï‹¿Vd¯r:Ñl2¸ÌàVl½ôÒÒâR”r})# ¤äìÍu¼%ÎP~ºøç·íD-š ]§-\³uOÉûq§5Y¾Å$dÆÉzÔ±•Dó5ù~ÿQycúáàit*æ2°$ ¤þ9¬ðŽð?õ–‰ɺ·s~/wÇ–3æü²i_?iaäë»F„„eTažé^õ>9´r£Nƒ¾–8Ïuý ZIôX™Ÿ,_ñî’‚n±uöÀ€®^.öA\cý³g ¢É¬½Ïõ©!&?½¶cñð¥Juœú×é€ÊœâÞoId<Ùä& Mw`9²ð¹'p¨‹¼¾‚P˵§ÊÞ¦ ŒZ¢±µ¦bÌÞ½ª¸vôY¹ïö½"³dÄÞ:¸jr窰m2reÈ+éE¶ˆsÐéAAW2Ë.Zž8FíÌscVIc—?+-uãTò.MA(Üu¬¼½¼"×{¬.AM­Rã ‚ˆÌSÓ›ñÁ¶ÑÙëÞŒÓ. ÉÑ÷.ܲfÑw#º7÷ mý~?üª09·7øÄ¨85 Yím[ƹQMœ@‚•gïÕG(†ƒ?ø¯¼ÂUШ¯½Â"Ašå—ÿôéä.î(®Ô¼ï¸ÙË×ï:qýIœ¦÷Ö™ /Ã.Ûõ—ÿ‚ïÇôm]ÝAܯÚÅgÕ¡g o/v¢Æy³KFt‘¼ZßLmÚ¿ÈžeÅSE& uõHk Ofhë¨é†Æ«QAR£»³ãÇ!­*ˆ T~•¦ÝGÌøiCàÞà3¡bnÿãg_Ÿá½;4­î"-oÜw0qѺÝgªè‡`°¨Õ>àYìäùs9Àåü¨½92$¼”ßjn–õVþÝrA¦ó//ïþ}Ψžmê–·•8[OOÏŽ^^ÿóööâååéYã´+Wê!¶e<šuì3z¶ÿ¶ã7_© •ß-ÒƒšGŠÇ-„?üyWî!‰áòI=“~(’œW.áýRÉ`Ô4KÃYëgz6Žy¶Ç\Û½ÖwBÿvuË»òääíË×òì:pÌ´Wm {™¨­!ÐòZñËù¤‘Ø/ûnKPÌSÍ"O2ž|1¹œ¬½íª;šLx«ëæ$JÍ€¸ˆëÇw®ÿÕ××wšÏDñ:1>>¾¾+ýÿÜâÊýèDí“Ís \`^1ùÅÇÖeäý;ë4yê[QC©S˜^Óð`–Ú¤£‚p¼O¶±A™Ôd1´²Îœ69 OÙBÙoOd}4Š<3áàIù mwéJ`¤Í×Qæ*¶äx%Wk°{¹CÇ^ˆÐ \ Ð(TOƒ©0ó9Á:ô@÷<òx·ádñ ‚ÜkËo…ýtWh”‡@m>à°Î/cÐPf%/~M&Mœs ר`@2á¼.=Ð)/ûi‹Qä1‚ÆJ°ý=IÓ‡MG5² ¤¶b}Að á +‹Y·¶i9¦º$žªð<Ð"@­É •´¢ôGA0¦‹¾›F5ÝŸ´œ¡d" ‚q!Í}€º€šj§eiÁ<¦³½Á“›LGž€æù ÑB)„ÞÒºÓŽ˜¥ Á³ ƒåTúÓZ,üÏâÉmë\dõË€m it߇où™OÄeZÎ0!Ë„á®é7`˜èTÜâÈzå©! ¨ëYœ‚`uÁ^[µMÝ?Ï<¶²-Ëו†3x™Ô#(Íæ‚½š¨ ¬ô0$ùéúÞ×ÄJji“ápð¦/‡kŸzV^˜Õ[uMÆÂÁ³ÁzÑ>ר»Æ­ HÀç¾ý-D¬ bª6¶9÷ç™± ˜ùÇé„? ö¥ê¨¾$` Û(L ‚QC¹ýQ¡ÈŽø€ kæ øòK*óMQè`ä`¯+‹¬¨™ã\r ‚5ÓäG¶ï€‚`¨¬¨y“ݱº(¦N¥ßQ¬˜²Î°”؇€ˆ±ÛRãýoå  XÒ5?vâMGA@DdÂq—¿é~)Å·^ ‚E ]QS8åß$DÄ{¸6xÝ/M+û·€¾ èa“ìË©ã:þaÔ[2a‘HÐ#”nRŠ}z„ƒ/~EYpÞ±‡cÃZ»½ˆ?mV#ú‡ƒ79n_0ù$^ö¥ÞCtÞ°=ÃÁ›©6{-Xb·¼"½»B ›÷¶p³#VYŠ!þk `òIülH xî)øR\‚ )¼ ±¼TŠ)gtþE=æ#f‡®Rø4¼_»5„ü¿8Piü®wÚAc8x“WU~ɧ1€g;ï#¥s÷r©ûT´Ï*§ýتû7>óVl=z;òÝgJ50MAȼcÒ½è Öph 0¿uloÖSùa¤x‰y®HFÆR©!€9 y1ßôÓXNóÃv•†Ã_¥)_5˵î!*ç×G°µ‘-}êX^“a¾c™$B…W@T}D÷KÏ^+~šô?#¤óte©/ð ¢/½&Ã1®ëï˜Ï3Jb‘$è^Çceuê—¥CïîwNœ‚•¿§Ö‡PЩøpˆ,ÌBJ$‹#Œm£ØRˆT»û»Îì'3çþß®’`côŸI'BÖ]¸·'P®x×¢0Ãõ%H¶æ<Ï~‰®U"—|ÅJ ²öv&lÄañ8S„4¡pOÞ'ÌJ­$'S%öc©jj÷ÏjËr÷O­Ï›râšü’»I_z‚ ÐdèMtÜôäT8|?í­ÌùždÔsíW{ú¯I¸;µ¤¸Pàøu¼vÔ~e…ËÅeÁWÌ"£í%²ß$V÷™«W¿S»^K6Ó—õ—wäÂ}OÅ‘©¯wº^;j /8`R¶^0#Eð;ÊÊ?ðàB{­gÎüšœÐC{ûÑí6Iý£1ÔóKÒD¡ÖIÚÃÁ§ *ŸQ,æô€±f‘ÏnÒ¦yiýåkQ“wÒÃnªø‘öç‹°BRëÀ$Úáà‹•mˆ{æ#ßÛ@…á¥ÄÖÌ}úRë™S:“c´w4‡œ¡«ï–œxƒìÈî8ñWõºœÿ¼˜ìço&ê_[RCGCÏ[Vð:]5wÖ÷~ “ÆÍüET4|ýJ5uV3MXnw½kF5„ÃÔÉlQï³î3}¼È‹ê×ÒÔ{A½œÖuHò wŒDJp.k´ Bw.À4uÇ[s‡è¸Âv{O–ÂÙ/_S6kî<øþ’)AäcÆÓ%…-ÈØrƒt÷ÂH'·¨ò[»nz×BKŠW™lKpGHsÎ|!'ÂÌò¹7p:•Zœº¹5µÕ½«½£óÍó `'R‹ð'ÎPYyôÆš>Õ+Õ ÂÌÁÙÅÙu 0KEh^¢BÚ9Nç‰ßuR¿ÿ›±‡õ¼u´¸ó缨ВE¦3AXR¦²™õcæðÖû;Šêc/—ºû*´b)_áT¹ÅBÂrÇð7È·ÛòVä‘ ÂçÅfð„%;ÌR~„¡ÔNœ¦Ôç˜ÿØð™ ƒë‹·Ar/0AXûë[3Ëæi„gTœY¤ æØ•ò>B( éJïîXH÷¯ú毆>„›7‹Íào«Ìyj–‚p&loíà¯9"ÖlÅE—#JÂO†ÞùG<œñ .(°5ƒ«Üh[DÅço !lNÌ'+­}¹0&ò×;Íu(D–íì‚í«cÊkn:,m@†Éû¨3ÜBò©%î9¸<«°–h  <ÙÄno:Ùla- UÏ…‹;꺟×çM}OUFçrá¤% Bî¥y¯H3gŽº.¡k9²Í0Ÿ‡â¿kª’ýí0§{_6Ýe  ìæÇ±j©VÝÿ1Û\þ ÔòÑŠ5zíÖ—éDew)ÿ„´(Aص/Yd 3/h¹|~ÿy//É»ö¿K‘Œ'Ûj£Ò<10”[¶ËVŒ!0óJ ˜`p‹vµÓvõv¾¯EðÍ1”[úKëi…þËûø“]iT_|ìõ ïߎ÷øÃr/a…Á—¸ WÀ&—Ð6°ÁŒ‚½^ÓÅ 'O\P`p<à'n°Yüì¤K“ˆˆâ£×[Î 1Jº³f°=hdÆW3Ò­Ï¢á/`pÁݶ_LøÇ ü‰£ÜŠð¥þ &/·‡øÓHyÙª;C„bä­0ët•lâ`<ƒ£Á=LùÇÎ×”e6ÙÕfðjm+áOª³±ŽNVEdÝQŽÉ¶tvÉ&øÓäïé_< BQÖ–æºÌÂ]†¯ÙÍhA(O÷æ«Öíí§0x±S„éõËkÊí‡Ï½æ2}¥ëj¦®õºR׳4ÂÉN.÷ФLmÇàžkj:?,>W¶±æà[ÌfmPŸ¡ ½¯Ù4Õ¼~º¼ÂxaÒ†÷èR6¸2x1w?VÒ˜Nû+»*À-Ì\JÜfÖ–þÔ V¼Yýðñõzaî«pb»Öcaþñàೡ"ÂDÜŽÖö†gn#ªÍƒ(ù’œwW‡¦aæR£þD¥J‹rp5-¤6¯þNï$Ü?}ï­±ÆÄÊgOOÿñ$f¾ ¶»»Ö/å¨wÚ½á‚ÞZÎ=¡öfTè]1Gi³…C*I@ár‡@ªnið£ VØFì%*5ë9nÞÚ'ndïÇ•„+˜åÚh7‰±K}=žÆÉ› ´€ün›´…šJú]ÛJ±áÓä_>~/3”6¹Õ¦’Eü¢1”têAºWÙ'$á_æ \ɆÕw‘ÔVí^Þ"_,bóõtÌrm¸–cêJ‰ÜƒtNŸË‘¬ ΣêS»O“Ošø­Ü׸d¿AÚÌ4õ ±U¹%a²X.P~؆gT¿¶´¤Ön‹|¹°¸8ŒÇl¦˜à±Õî3Óóˆ×i‡ºz-V™ê 1ï"§Az CbëW3T“½ùbg(7í_Z¯„Ò+úk>¸¹¾­¼-„>(#èQêg†.Õæ¯LO>pìÃÿ(¯q¼ºMUy/Ŧãјy pR<ùä?Î^5z@I­ áJ¹†ï MÇçj<ñúÑh^(¦hã"iî7[e›gïHÅ ¦Ïw ™¹NoÝoT ×Ow‚V²êfr²<ƒ]•¹Ý¸ânÙæ?3ËÆ cipÇ)åÞkխа‘?,ll¶yØû~ÖãËÁ åëÈ¥4ë¿sÕ ®ÂF®ó»í½È’ÞP’¼5K¦äÓämÂrÐA¶õòÇu˜Kl1U²Êîç:m²µêfAHÄYÎÈxå¿àìÎZíââ£ãD¹›Ýì-_]qB£¾˜•L‘ï1‰ËëN¥ÿ¥‹<à*”M‘¡¡ò±¯±°3ؼ‘và=ušTôÉWzp¨œ;SQm†ð9=I2q®|•ÇSå<äS©×xyô¼¡¾ÔÍûf üi¯«Ï…¸ò2èÓϼÀsÀá¬gµt(澦ìÚ&}f* ŸÝ§8à$z½¿¼jø‡|.Ó–à˜[ì’Qf™= u¿x"{éGx ”¦0!FÐr7æ»üMÐVæOÓøÎ3˜„G6ðf„ àW&E—èT„{Ä)ýZ#J'P—¡˜M,³…³€V_ÀóïÜþav‘’ :BkàTæ£$—£°jŽAèÛ\Ï›gwøŽÂYAc0›Ø&ˆ7€òkºÜSý8ŒOÌÑc~T‚ãÌ<ÆH [y ÔƒÓúGÊ`.˜×*Ö|Hå¼¼s“J±o©“ô™ÆÄ{‰™ÇÁ „üÖíó ÒƒìZÞÅviÿw‘/Š“ó5|èTbUžŽs¾]š¯Ž1¥tG 0Æ¿ñ¿÷m–¢älÇ7Å¥êS‡™­y¿Ø5Ñ91vÃÿl¹V›Ï Qôº¼öënàœ1@ŽAÅ”Ù:<1¯©’ØT9 ãóÎÄ`õs‹„w–4’Cv&šÓÏCÑ—eßè­áÎSŠ)¯5$óš2þ¿Eö„4à¸Tô}ÃÇ'T„ªßŸ5³‘ãè#z“öU]M¼ºZ\‘å;f{^+&[‡4è°SE#‚ÛûìÓɲ9wÏiÊáµ[a~‚ÐG à}íú-TáÖÎ8«•eF©Ïll2ΣEõ€¨Ònˆ÷¯z|°i2#ä‹é':F‹ Ðç]Fú(Â>ÇöFr–©µ2)æ5æ¶á$„¬áííí³d_D®Y$ø’Í:z€>¢“Øî÷é~'}:1ÃXþòÎy‘æ¼.Ò®Á̶:„3lÞj×ôš$z• 7e@¸«²ó~ã¥ïr¢jf«ï<Ƽ¶Fnk¨ è‹`.1=“ºœlÅõùX, UXÜK¥Ã‡œ è#ú3áºR€K­kÔ¾—ôÑó!ÚA,вÊñ»ßõæLOÑý­/k+óG=Bë!ˆ…Ѱèb;Ê–ý[Ǽ•gs]gÅ¢í,‚œã,ë-öà] j¼”Ùü{5KBÖ®DÕ_’‹/Áß¿Ã\cÜÒ«,ëýæÒs•YžŽàÖþKíÜxáÝé®üA§ò‹1qá5œ.b1È$O ûA‰71S™æùD{û1ÇŠ¬súåäô*PkUqÇøÍ\ž‚Ä /1¢›Ô¿Zql;ÏÛ{çmŽèCä…ß¶ä–Ü·ôß ´Xª _Í™ëO_u>]„AvŒk, ®¦íO°’GAi‡Ù?úêAÁO6×—ö9m`8ºÓF}uãhpð™ÇM0m~ó¢YËmÅ¿`‚ [`®¿=ò6Í/äŸÉ@1[*WÍgI”sØÊ²[yÖpÁæÌÑ£ÔÖuygë²èƒµ»ÈÓ\sMyÞ3Z§§¾£ú,ìj]‚ ºªˆùÿðaœÒÔÖ˜¿ä¼!w¬ÚE^óÿ Ï)½ùXÊéy’êb² ¥Žh5‚`A?´û¨ë°¶Ç‘NÐ Ç©X)ÉãËA+ J¯ýCõÔ˜<ÝçàÚ•fE"šÑD¬®5DJWÝšKW¬*¦:‚Xs¡âk­'\°ƒÊ›s( ÆTG3'÷º¿|}- ‹‘^u¨ðw… ‚ÅÆT·L^v»ˆF@4’T¢Õ6µœ9§|@¦A°Ü˜êJD'8V@4ñeÛ4ùê¼/¼V\¹û¾ €[Ê?“Z Am31Aîä¡  ̇:ºù(ìeÌ•’âyœ²êk –SA¬›„ò…&„´) ùC”¾CM0¦ºYqí‡p4B‰Ì÷/Ãnm/) ªÛæ%AÀÊæÅáêðHËá­­Ï뾎E±¸‰ô€Ãµ÷y¤=Ë1¦º¹’SÛÀÕ§¥ Ë}ºz€cQ,–`[®¨rÐ00]§3XSLu m+Î?ž¢º÷‘ƒ^P‹bé—À±›t«‹ÖÀ½úÄF5»oÛ7ý#À±(–Þ‡0 îÆÏhkáSªl#ô?…9P7Jp€gëûY‡ àX‹g§íèÿÐ ÖHKpWøtžÏà9ûgS«!¨mF –ÐbÈDX)¯nÊ6Z¸7ëöMCÉ›gŽû~!UAÀ±(b‰œ\½`ò ÊÀ“6|) ŽEA‹åOW$<Âyú j‚€ïžÄRÉ+§Êåõ Ö4ëÇ¢ ˆµð¼®¨r-6%k>Ç¢ ˆ•âàæ¥ý$‹‚ VÁ9ÂaâU\“A1)!øêAAAAAAAAAAAAAAAAAAAAAAAAKe}Iju¼àóš'hkõ)ó«e¡X-_Zç‹þÝU( Q¬Ö¤ŒÍB?°ZV­'•ì…V±V?PôëÄCõyWȺ CG¼ìÙúZÅZý€ 8|â ©  X#Ÿ+Hþìê|‘$ßuû$Þ¾ÑÍb­~pbV)ø¹qúµr£½T|Åÿ^öÿ›XÍb­~04Oô fúµrK&{%ÅÄD‰#TB³X«Œ”ü;0 ýÀZIq“ Â|ñ¿WÖJ ‹îhkõÅúURMÚ©X3”$c»§ˆ··ÎG«X«œ˜‘KæùVÊB?°ZüÿëAó#‹†#ÙÓå9ZÅJý€$õ2ìøØÏЬ•äfùÊ;E£  X-ëî+^6A?@?@AAAAAAAAAAAAAAAAAAAAAAALPÞ)*‡L ¡˜[,dº9%]À6Vç&`zæóõc“Ît3“1t¶m¬N@~LÊÐXÈts«Ö  °lcШÊG±ªk‘™Ž­DƒA¥B è Ø‡€)·zA(ØtL¸•ú˜|s ÁêM‰.`4iê‚€Î`õ¶D0¾ €©6Ьޘèì›X> ”v™`(˜B¬Ò”è‚ ‚ ‚ ‚ ¦Jö£ ‡OÝŽÅtY0oœ¹cn©Î||åTð¹;Q™˜FãårO¾´+·üÐ=¹˜.K$j~m©)+¿n6‰~¿mhuŽì-¯áØ_0ÀëQ·ï÷>IÌûsuuo~•?ó1]–FòTNÕ…§ß¦g½ýï—6Ðí™Y$úê`n‰î?ŠˆÿB&¿~ìÛÕÖ~ÄCÌK¶ÙïTk¿ ðã›96ß`º,‹Èn» åôRs§Ã¦ŸæØAÐæ_åvBr`sÎʬ²¦g+ïyP¿Ê+L—E5J·ý¨ø9g 爩§ù”ssª{…ÿºW¸‰Ê"Ûˆ•})žÕâ1]–ך­ŠöÈMµ¿oÚiþ‡;>[ýékw³”5žÚûªÙ›T} ¦Ër˜^ZEG[˜tÌQîRM‡ò§Ùa5º6WÛy‘8ˆé²^p·«îŒào5á$¿qúVóÁü¾nŸ0WÙá\Q`xL—¥0µ†@ÍÞñL8É}ëfi9ú¹âw˜«ì0´†÷á¦Ë2ÈqY«n÷0ÝŠ÷Õz|;ïæ+|¶ÓXol>Óeœ&Ô󬹨d“üM íÇó=æa¾²Á)"Au竉¢—TÆtY ëÝ6^ÜA3±…©¦8»äß½«û\ôïb7f, ,®£fç{N!Iî²ýC>_ƒé2wþ7¦èž0Gôïò*âí +M/Å¡ðVã± Ûæy$ÂMm§ÂÜe¸©>HÝÞÖ°$7–·å\ëaºÌ?Ý#¬@Õ‹6Úô3½¯­¨å`OXA’[Ä•…¥…˜½ŒÒj¶º½ÿ!¹°Iž·‡Ó˜.s§Ä•]ó¡äkr|w’ âp#L/Å>]´Ü Ü;䢯HòqØ‚¹Ë, üÔ6Ó¨•1®;¹› =1]æN>RÙw U^ï1ä*¦™`’¿¢åà{‘dìKž(-±‚À0µ~V»»%Á›ø¿ ¿À{Žé2w²á˜êÎjÀ]à9w%M0ÉFh;Úx³¾žñ'80w¦Ñ"µ»xöxó0]f»Ouç>vå9ÀýÝ“ä¾\A…gAä\ ÈÑb©”‡r+ÔEZ»@…Ò#›Ìô˜+g“LŽï‡:“™<_¿ïûûæ—äŸôŸwä¯D»µ†Ò*δ‡¿Ð.NYÕ¬ºL@¯A¾œ.NMÇýIŸŠ’ì¼£CDí]QYåù‚Í‘:6ºðè2ãýÓY—“úTœú‘Üêâ ‹!gQYåÉf·^Ñš%nt™‚ l !— qÃô*¹{_¹µw*Ùf¡°jÐìåÀßÏ·Søeè2—i‡„“Wô*yE¥\¹Õýì¶z·QX5˜ø|üC3 ËÌ]ÿCÓu«øz•%r«?a˜}(«*œlÿ_žÏýxbÒSe Ÿq ˜ç[ÆÞ‚.“0s_˜2íùr+O^w“OˆÖñ“O^™æ~ÿ~ñ+Êd»ì‚ëÛk¶ÁV¯)y?[ÉGcÿ44,4¾S·2b(nEáÉï*¦·âOïVE—5¹³ šê¶/·²c#.bä!§BåU/›{ÚÒý­Êe?Þ²*Óá°¸bW.úç’›[DĽæôâó${‹³ÖK:ÔeÑÃÀFaÉ_z[yðï5«:”)¯jÙÌDVžð’}|y[fžàåë>¹þ)ÃxæÅoœ~l‰ ­ÂrIwº¬Éî*îô·2ýif¦"åU+›W½¹¿lç¼JqŸª¯ç%? 0Ã>LjôQ?(wX£/]ãX¥Gz9‰y_òª•Í[ q[ÊÞX=±ý ôÔMmÍ“Ìdg`2‰Ï^?PS—ŸÓ—£¸tûÂÙ|!r‹„ìõá“ФÊP1òvsJ±3lnÐúšº¬Æ„ÈýRVf¶ùý ÊÙLgçKF`rÈiôOÏËùgÈNI×#"o©¨©Ëjä„M”¶r#û¥rý@Ùlöh--ûDƒ¡èª4„®]¥]wî±}¤~ ¢.ËñAhšŒ—­ŸQ°(™Íì¹2²'UÎCC(´©é_{>¸€›%㺳Õ(íúÁ壚è²E)žƒ,;ÉYùúÔR0›ižs7m°‘‘B{ÐÜwTtÜ(ôÅògÞ\¤µriéý»'.ô¼OåÞ˜Ní¾(R]—%8ÏUŸ™]öéCå¬|—nV¤¼Šf³^ØÈò‰ñæ×’“í¬ôê¬ çêÓisɇ Úæé²PS/ןk­®Â‰âçÔåô–¥©.#²+œ¸¤S%ê•+ñ:ù‰4ål]bº—>ÁmB§\bf£Ì qµ%1ÔlëJîÚîã¹—ïϵÒPWñ"¶ê”Ÿýu9É·!´Bå¾#‰eúrïwÇÊ•x=éèÎϬ¦B4[: 4ßÄšúŸoÏïõB¦f¿íf¢MˆKõ©9>ùub7¼U,Cœ=Ééߨ,Ԕə:qÔluwCð/±®£«lLíÙ¿ú6¿˜º!?ag8î¨f¿¯`+ÎC>梾ÿEˆ„'lN÷Ñe† T²šp$l[1³sÔøüb4mc.y5ÿ˜º!ˆ'vdïíp”޲¦8J¯ç9ÇKO+³>Õáp|ÚÜ5&Äٺݥ!4vhÆJñe4‰ýÙè!ïS 5wº;¥2Ýè8X²tÙá¸P²øµìú¢Í‚•TgŸdl•#GÊ7„¥½°Uøo}SÆÍ& dÇLݶ»6ÏzD©%_´£Ø’¥KD¯•,.Pf}÷±ØˆÅ™kåBMÒŒPï[,ÚÜY¨AT:éC•>¢`ÑÇ%‹ƒeןs{ȸßzÈ7ýëÍ(ë6„,±—soh9xãšq—š¿¥¯S†â7]`£^°ì‚bYH«êª±­_-#2ðWâÝÑlÛ;Þº ÏÆRóëšý:qĉìL÷T *<+ììÔøý[G,Û”ÊÂçâpŒ-|ÌEC *òßE Ñä˜'ÓîvÙÑÜ ?·vw¡f¿ìp$+Deìy^_—ù]! wû]v´RCP& ï² ËÔ^$6]väV¢ñ·‹H $û{†’Š…†PÔ¸+¨¢V¬!¦ùú³þc§Èß Ë”d‡QhÚ„Ö×fh«‘t÷ fŠÐF±4EÔî€òA²wŽÁÚß„.“ò2g«Ú;¾ Ç40Ô$æ_Q2%3Äd¢†Ú1ÏN6ñáËÜÏÐeRΰ‚»Ò`§³6×ä(ö.(¡†ä†±qÉÐeZú> W”ÁÆê× bGØ… jÉ«œkŽªo¡Ë´¤º÷´Ó &» –ØØÆxZ“¦ü(˜Ù¡ËÄ´½ ýÅh²вÙÕ¨Ÿ¶ wÅ{ ËÄlœäFNöõÊ‚îêx‡Æd]8ºÌLQátü”ñtçÈ>åÓšö,»ºLÍR›­§1OgÃsP=­ÙD5î@—©É«BŒ¨ûiƒâi@Ùbt™œéRöñêøógRÐ]>CÊ í¦ˆ‘·ƒä&°Éå+È‚ºLRg’ܦôc#"4Ó;Øuò^´˜.“ÔÙo“Ò¡ˆ@°\§ÀJ›®ízÕeŽ:“ëŸÎmD‚{îu·Ó0’,…t™£Îe?z¶¾éžçg$çºÚgjzÕež¾/»ÓÕƒˆ@p]¿çó4¯E²˜.óÔ™îe‡Lˆ&ú¤ít¯ÿ›yu™¨Ît/ž¢iíœø\Ò‘p]æäÎܺÌÔ÷¥‚.lD‚êzàtHœ©©oº^u™©Î’÷!èÃFD ¨¦ûßëA’ª½Fw,¥ËTu–jú°0Ø¡§¾º0î[µ¼ˆÐ‚w2¼?Ïûž ÈU¹žPäýʼn>09@¬Êœw|¿éx® ÈE©Ÿãz;ŸüÌ“ý_¾(.®z ®X6›ú ìóv!X•ÿE»Þ²{]–œârjØbÕ8FæóüÆ—xäÀª¤þÙõ6÷øzá7ñõZ l±jzˆ¯Ã³«rØ„äå_]« [¬šƒ¦EºA¬Ê¯ºÞföØY$«æàÙäÀâÔu &e%^æù¼ ÛÄåU¯Ã«æ cÄMžÏÿ$9°,³—¸ÞNýµoŸþ;\‹¿‡+–ÍÁ±A’†}XŒX–œV>7¤d€)Èr`Yõþ<÷$> stream xÚíVK£8¾çWpt¤‰ÛÆÆ˜ÝÓ<º¥Y­öÉa¥é9xÀé œ¢ž–öÇoá2 „ÌŽ´çUû«wÕWðˆÁGšS'‘”ŒòTGE³ù²¡’ ®=`öê¯8çÂÿKE<Þ½otôÎm~‡jwAïn¦øM¾¹{HX”ÑLÅ*Ê÷‡K ÆcMãXDy} ÷_Ms¬ív'´ 1Ý~̺{à|&¥U23oBDŠf©Ð#"¡±R‘ Š'zdL NÏIšhpu†ã7ÌIšiþ­])JôšY»¤sí‘%l8Œ©‚äÜ/’œz[âѧm¬É žþlN[Nºêó6Iˆé*D Ÿ ƒ“¯8Ö¦jQâPõxiê'×Uá{Ü'<ÚAÉ(SP?Îi–$̹X‘¿ÇGJò_¶Ðäõ+<QŸV¨ÂµýЊ¡r-^¸=>ówA~d£ W¤½¢bmî6<õðr‚§Wß´{¥ˆ_)²+Ek8¦Š…)ÌQÒOä`‰ÁGEðJÛxPڧΆ2{ïà¬umiÛ5U[õÍ[$Ib¼Û».˜Xù*Ú–ÿ&À0¯ù­kަ >ÌBÏÐøöȸ|:M0ßãQJåU›ì;× ât%c½÷ ©<ú.´¶$½i‚Js\c_*ø{:"`jcƒÈ $!Mƒñ¥åÐÆxTVরm‹Yy§4[i ®8ã”gÿ×÷‰+¡‚gË<åç`Ïý0ÎçÁ›æùzn¿ŽU£'V£'aEíÀ È” n#oûWaž«4® 6Ývžúñ´ú)ìL-9Ûá˜OÁ¿‰æ.Š‹úÔ%Oë7°,Z;†7­Áµ2pê‡\p‰Õt¶p]¹È¥ ûS]Ÿ÷òທù:œy a{›:ä¼&¿CYc*˜¼ªëÕ*‚M2ù>ß=˃À°:Ä7 tÉBP}Q1TEY/rø\,…ñՔ×%~ŒesþnLž® endstream endobj 89 0 obj << /Type /XObject /Subtype /Image /Width 1113 /Height 732 /BitsPerComponent 8 /ColorSpace /DeviceGray /Length 31875 /Filter /FlateDecode >> stream xÚì] `Õ}Iš¶Ð²ï ,EA@AEPED”â ¢ _Å\PT\ª¸ n ‚"¸ÕÛ׺#(Š"Ì$i¶&ÝÒtI÷=Ëü™$M³Ì$³fë=ÿKÓÌt&yïÌy÷Þwß}¤BÈûy_€@]ñþ×ùוN=]€9aÀß¶GÐò5b[‹ ,€Ä=€9aÀ[]¦À¨ OÓÁ €°˜ãÌq@ü¡ß¿='çù·0C[`þð®³Óê“•ubw„.ÜœWpÜÒûh$ÀÕ¹«OD)§ß²ûx“û÷ò/,ŽäÓúÅá;Ç1¨o ´ QQüÉ#ËÏŸ:uÆ‚›·üÔ|Йç‚5o/P*Î~ô—¦ ÷-ŸÞ2 Xû½ÓûûýhJ+´ ñà8ôìåÃbܵ6Ü}ýyC‘bÒM; üÏ(EC3‰‹ß¯KO_¼·†á¨ö©Óшͥž×Ý íH0Øv-íƒ/~ÚÏL)þäÞYÝјÛò:íñ©²¯ ©ÄCÃŽÓД7êž“Oÿ”%ßPf˄ކ6$šw_¬L_ð¢:ôHÛ÷Ÿ†ú¯9äýõuÔÃÍÅU‡?Ëõáç‚Ð në™~ý‘/ÔúÞ¹²™»Äk ¤<âÿ>þeç ¾ÂÁOÄ´wõI[¼·žñ¸áéIhÒ+î9ŠÚTtJ´Xd8÷Ì‘£ŒÙd 8C¿J™õ¼åå4ÿQžü‘M‰C«:Þú{eÏÀôZõ7´; ^ÐþÉù²QO—G8ë2ºßp”|‘-O¹-"ŽLU.ûÌÜÞùFùÁ{ö{£ówãš”Q;쮨¿V~Z–)çxüÒÚÕòiÛðÆÎãøKSå7ÖAÓ¢ë÷]“ííÏþ|BÓóC ¿r²¸Tí+“_ü7ñ5B²m~žÒþM+;o°rÓmÐè$r»ÍQ…¼Yw¯âF¯Ô\£·ÇÁñ¢Ø9”]"¿ß}ñC> ™ s½?xB4>@jh+zœqYçs?{šð±ÿ Ï̸‡}’çÓeK±)tüýƒ}äã/î¼ÁŧÈû>Ô Ÿ+»ƒV5ög^M©Aíú´“ßwr»dÕ'·ŽFr%©,²O ¢ô„)´9-ŧ`æH ×£Ê)¹ÍAÍ Ù•>YÙ:8c'ºöMTôIEòþž¿úyhŸœ ~—<ÝgX—O=Òí†#ß+Ÿ œ»õÉáhý÷îSeHá ¥ÈºiZ§žÂ0?]=î °’ÆN®J}™fTücÔhçøÖ~=ªâ*VÇÜæ¸reÒ¿›º”æï+.OÝÓµ[Þ9u£—³5õŸ ©wUs¼âº¦¤¤¦¥’/Oz,ÃÈtª®û3À}€„XÝãGÚ÷˧DÉÁǦo°q»¢nDz¾HéžëPÜJ_+6ЦáºîKù¦K·ü¥Šñ˜còe[u<®ÙT–ÿgÞÇo½°é®ÕKÏžñó™õ°ù’a»âK†#å#çªh¡‘Û_0·ù®¹Ç L§^ß«¨+7ýÜea~˜R!ø¯g„‰c5tßìH…ª¾ë’íí=ã ×+æ^³`Ƹ!™2¯°¤-:™Ñ™o=éª.Üô6ùgáLÌ·ßá°ͻl>Ð 6 bÎw#–ŸšÏ-a]1~è›v<ˆ¾`>gŸLÝu›þ0 ;Ï6u½à;Œx6ÜÑœQ@€T{_˜ƒ‡Ð¿‚oðàð0Úä¹±ë6ýg¨=ÜáË®|å{Ꮎ§ú$B ç긆l|‡3îwôö]·í?ò¯ìuýÞÉÎ|ôx æûbâ'6D8û6ÁwðJ¸£Û°ø?û º> @:ä"W¸Qs©prË‚GÍ@rË@Xèu%@X7î(,¡[@°’iÔsœé»þîk{Ûû×ôBŠW»B ,€x5EÄFغlÛ#:aù÷©3å2„F,ê¸B€8–¶¼»F¯a‰fÛ7ç­‚”2$—Ýį´M°°@ð_æxé›—vChÌQÁÂ3¬ÝÐó¥ÊRÝ FüÆãêÎÂv Qİ8=4Q¦P ù}-‚]!˜™`/,Seîäeù?N+˦¼×ïY<>¡AÓÍ`-bæçþš½8÷¦þˆ7SNäYäf&|¨Ü˜³#÷»¿ô•ŽÐïŽB]¡ó'P”T„ŒÉ³þóØ›_üUÊ\JÎQvüËí_7wlB½§]µñ߬‘ç ˆ‘°L’É”îaS¶Ž»—ß‚ï{níù ,>¨‡t¬Ìì6èä3žë?Õ2O,ͶoI'[?å|ÓOoÝ?ïÜS¨Êµ²Á“.^qÛÆ-oæ~’Gâ›Ü÷_{zÃÚ+çLH™7½&\¼æñ=¿û éÈ> ¼~à->z@WuµâÀ|éõ^|ï'U+a™—©ð˜ãÃoßúe>ÛÊ@UÇ>{vÍÜá$Õ‡»’´ü¬Š/*ü+g‡MNœuA”\ŠdHÑ‘¥Øløí“m­\4{ÒˆÞ—Hé?zê¼+n~äåÜ_Ô!«¾"$'žWªÁ •íðP„£üï²ã”.ZµqeWèŠÇ•ä )C§Ÿ=¡žN½ðº [?üUK·¿Rõó‡Û^9o\wòNœsÓ3Ÿk""¦•ébc¦å©áHéé‡Q¸ ¬kÈsÔýƒÈ³éôÁU]]UÝþfÓ#.§h²h0c•ž €`h×uWtˆ 9|FZ§%#ÍþEDÝ?o¿òÈê…S†RFLúà“g\˜}Õ«³—Ì’Õ—‰åƒN½èÆGßÎÓø…y#,„{ ÓWt­‰æyžÂ‘/cï sÚAtÌý³ú&’ËïV…]:âa÷†bh @ Ô¿:Æ;jÊ/°tùOn卵Ð98:ËŽ~õî¶Í÷Þ˜}żysæ]”}õÍ÷çlÿð{ÌJW÷ydø¥û'Qc¦®¼«hKÓžyòþ½R=;lfŽk'v¼úídÔãu7\¶Ÿù`gÉ W}± 7Õ8áÉı™žQóÞ*EØbC;©Ë‘-äÉ»ņ."yÝdQw‰1Óu`M/奟';åÝØú1›,eÓöxê(~­såXFO³e´ÿ¶OÎZ3Ž›A[ {|NÍ7 'bîÒ0g~¨ô†ϺCÛ3º¿Ñ9f«ÉÜì…›OB“^/'ˆ¥©Höšû­7L…uÄ‚÷5‡_Á­Âž+™­è´o‚£ÆŒ«Šê]ð€øPmËéhðí¿}KÙ+/“¿ïIÁÏuLºÜ7¾mR"~%R«z<Î|pSO_z·¶$í˜Ù’»PÑg{›¥£2$Ûî}ûÆÌïéueÚq*]£¸—V)œ÷¦ÐÄm5&L] Úàˆ²m3e}oøÎA8Ç+dòwÝ ;ã\F;áùT¿:ñØôt~“9ÝõL‡´Ý¶™I©-GÖõUÌËõÆ‘.B2ßJåö«•[išÿ·cô"ÝzOêšImëâ4†˜z{•‘Ô–xVlQ½{aJ÷ìýnzïB2åçž·ÿéÎTÌ)/å©€AÎÀï¾­gŒcاzìŒ6"ÔO²1³$g Ÿcíøõ°LæWÁõDêinç:t­lx;süzBï§Šß*z²×‰afºÛ« X¾%$!ÒÜWö¯VŒÏèLÊÉÝ×"ÇÉðÏÔyåÈ ·ÃŽ%q†æÜ…©é w{óOš£tŸ%ü±ü6Z›e_æµâ<ß–'ÓîòQ8yxf3&=îçy1[¶3Ðj[’’9Í{Û!hâgb~„Æ}åãtÞ`Á8y¿G"äQ·–ë0­%Pð´êÀ@ð·§ÈÎÙ´+ׇ]Ì”ÿ.‡ñæ1…¦ÓÀ¼ ¸ãåμ÷ìU=r`ÿFiPuø³Î¦þ™ÝÎÞ-ûWd(æíîœÛ|eú•ºý¤ûìÐÙÌÚ»ä7‹5þ˜Nü^èÆä{M2aìñRv‹Zñ/;ä+¼5žÚ>Àò>æ½vŸUñÖúk:ŸûÛž;&öçnûòÑ•7XõèWl|ÚÖr-ò_‹©üzÄqº"Ä]Ó-A÷„ Àf^‡–¯{œüE0k7w?öœÎ=s仡1›"‡Ž¼=å3·ú;ÚeÝú÷èô”¥Ÿø±Ízà®v‰÷¹ëÖȧlÅü÷†ã/ž®¸¹>ÜÃP¡ µÇ]Úàˆÿ^Ù3°Az­ú;NÚ>ÈJ@¥0Ü×…Ž¥éÒýÉûéKáu¥SOÂëÊ»ŠèŒýÉ'š@DÆ‘©ÊeŸ™ý üà=û½îi8°n©*AÇãƒ6ït¾7OøÐœüXµ¨ýè ½oÐû†ˆ;‹Pc¦Ö`‚˜°€M kW˧mÃýÖ4â/M•ßXùó„_É ¼íC] ÄÕ–Ž£& Ã;Æ‚»º1|·_ÒïEX~NÝ@ ú´Së@ DEn·9¡{ýÖÝ«¸±QU£ñ›ØíZý§Ÿ™ÿ‹YüOߦúÊÏeQ±s•=öx›Ÿßƒù™ã‡|êb½?xB;]AAž¿hmOã%,üRþ q÷˜ŒÿC0¿åEp… ]iº”)ÈV4x h¨º"»ƒÖÝŸy5]à›²HUÑ&Ř٩-%æó±KO˜RB÷ŧ`á$,Èý?±Ú>ñ] m©/Vå›kœm8†a”ûg?åræ³O›£$œ°<ا’ñØ^Å? "úAݘ–ª~¯|"TUÆ¢ëþN^û¥üÛIn—xžåÖ©§Ô0X_ãÎh‹¬+¾‰ ÔñÚ>Y\ ë·–JËÕSÊB>ñ_ɤÙheßp2iÍÛ>9aøpú âõìÔ9Œñö­©ùþ¿š·NA'¬;L¹ ®º"nª&[ œtô‹Ü_í© F'O×ý6¶ó¬Û>™\ 8ªM˜VbÅ9áN<ûzÁÂò_yI˜£/ö†úT¢aRÅÜå“/ëô¶Î”õ[‘—|YÙÎÚB5^Xk×Ô69 ¢*ó æ“ëaQXص}ò¹@Aâ^£Ç(‹ÃKOÝîÄG&°Ð•à&?pþå¦ñᮀ!‚X˜»,ÌÁS<³ÉU»çÉú¬ØŸ¬ë„5&\•O‘Ûè$^Ïhd>³¡ûŽÈºÂZXX´=é¥$£ ä¯LÅj¬Pxzg¸swf† ±0Ì ý”&»¬3·jÕ‚p7h@_ƒ ˆ›•Ç `bl‹\álÃ¥]bÔtëJ©7 VöQƒ(Ä2aÏÑYMÞí mû`aémßPŸxÅÌpçžu½àÛí—‡9úBo(Õ/~BáϺ­ ´Cáe¾•Û^ wî¶A‚nµX¾ô0´=#¾–é˜jeÿ|ƒ¶¾O…ñ‡O_ ‚ Lè·p¡‡!Ïu6¨òLIx1ýŽpçÞ>CЭ03´}ØÇ/a>xé©"lÁýPf1ߣ8 ‚ Ɔ)~NDǺBx$ ôuxÚ^B|‡Þg|ìÑ"Ü aØL±»ÂA7ƒˆ‡MÃlzpíÄ®× ¸l?óÁ}25´½”¸'ýú¿¤¯å¿¤ÞG zò¤zñ`ëǼòêE[=ïì¼ZAÝÏOÊÚîÙUëÐùÐ,@Írÿp}vÕ•×/Ùã~]u4 ‚?<ÂòÚC„ë=¯° ƒfBP3Øýc)Uó¿a94šÂHwðöú‚80Ö#,;×C«AÈy‰ú·pÁÅ‹6¼?m7õz®ZBõ” ¹ãË Q€@¼øOàïÏâÐ& JÀ  €ØºÂD·W@X€è~ €­«ŒþêØã*cïaàF@X‚]e,à= üh @°«Œ¼‡# aæ‡_`b,€˜Â‚ ,€È¬ñIX°PÆo€ aÁ"½ , Ö®2Qlm5eEÆ|œˆÔº‚bkm‹ ð‡³ºHƒá†BKeM- [yi¡Çp}iM;4àW}‘ 7W4(®–Ú2#Žå—Ô9¡7c¥JƒT;˜Ž6–0ÜTÕ  –šmåÅEEE– ðÂQ©Q•Epwì5EjLkiÚ‚à¨6©0µÞ\TThÔ’¾³Áæ-€DµZeµ³–Ëô˜ºXðCk1®*ªníôk,z7U¶BÓtqbàë³Û*˜ª°Æípó¡ÓU‡Œ4yÛæm×õ‚¬¸¡™ÛŸØm&rDª¶Cãuy¸*Tº:†CMV¦)©méšæŠNUÅ£ë5…*ÜXÑ ص٣WU„cOk…SyÛõP£2òMQqÖ•h ˜ÛÕÙqž°½Š4oaêb†¬³Ò…ærrD2Û }®K²§+cÅ÷”_ CPWA›^]/ø"í63Ž*`  «ÁaRÕq‚ô˜ºì–®€fASÃ="é«À“îJh×k8ÊD{¥35BË%;êTfóQšJT*+HK×±vµz£RCVÙÛɼT\Ÿ×Y¡QWÝEì­žß(Ò WUAó%1jñ2ѯé,Ç ŽÛ%t%_Ï×:u•a…`Ù&¯½‚Y¥¸l‹N]›ôpèõ´¡1_ ¡þ$EƒöŠÇh)ÁÊ¡y“.“Faê0ª› “-ªbÉ®m;vˆ7”ªN; Uáò,Eæt[QQ‡\STdr–DÁ’Í/°•ëðB—¤Ä­-ØÝu•à Ñ–f f£$‡)_ÒèY£ªÈÂ’´hU‰áF—¨¢›ÑÂ"=ÊñfioЀ—¾F[,žŽK¸ F1Ì]Wqt•ø$½vã’'Ôãa’vXgJÇUÔ¡,æ hÕdqt&éoR‡{ç†Ì|„%>Ñ‚WŠED³Úc9[°Ÿ d5@'(¬ªhä°Ucža¨ë\7¤Iˆ×‰¤²¸gj¬ÀIp´â¶¨Üdž¹G6W>¦·i’u˜ˆ(®B7TƒaZïhW¡û…Y¥ùü*ÍRaùm@šdñ£µ¢&@¹Šðjê§ÇÕÍк‰Œ,j±xæÎ”3a˜ ÖÊ' ªq‘ýh+Vê Ìh Çë¡ysÍf•±• ÚT$i`Q’,%b_²¶/¨lµRÊÒé£c0þ]wK4-Î=¦/o.'IƒUi’5¸øSuÎÚb5–ïæDY8&øý†ñàˆ£6Ã’FsToçj(ÍÇÔ¤®`˜EBÒ¢eïKD“|7G°B'óƒù½âÁH_ÍXô£^Ò˜¥# :hÂ$Y”ì¨P{ÍXÌà`z:Í\Œa‰7”è¢}G»U…ó" !þP¬—†!àQj-WÌï'¸Bñ‡Êݶ•ò& KÜÁ)AQI‡—!¸Öd©ªoq¶4D°j1‚€8\¼Á¦ŠªjÛ‹=ÆŠJg.«ªoåFX4w¨ÁÅï’&­±¸¼¦Éwaÿ$JÚ8\¤Ø? 0EõvÍ:³¥²®Å¤I˜£ùÈ,–¸C;Æ' ÒÜž'KVZx¬ZŒÁªÅ€#ñˆ*5l~  MB£³Gx0×–è W¿·€#qOH‚é_ Mb¢ÔiàÁ߯¶«˜²5|ü À 5ÒÀƒ¼‡ARR×@Æ+¨ÜP°c ,à=,¾†%˜e” V-?ÏZ@P•XáùáXÁâ:% ø­L; S2ÎP¦'Ø F€°t-¸Tüf 1 €„©8„…9ñƒ:,º›ªƒ°$ Œ–øø , ‰* ´€ùœv°sµÖWW”•’°”ÛjZ]Ѐ]eQôcµ˜Áç€aû¯Z1Ÿ3Æç¸£Ø(\x-ÛS[lÅ:œ*£b0‘0ê4îB<…Öš–¨’ÐU=éúÚŽ@±£¶¶c§è–Z_8ŸÏq˜e”íìê•:ëŠÕ˜Êl­mñŸ”q´Ô–éqLm*opD‹4€„ô¤Ûëjm¶šúÆø²rAX$B#›•B Å*¼ ²…®æªb-†­. ‚@ˆÿWÚ šb+Ò»+MªÕîÚù&KMkœ|þ$O_ˆujñˆÆJ¥3Ú"$öÚR-iÒTIýØ'·°ÐˆïLUM¤rÉMÉ‹²êf»{ØqÚ[ê*J ”•[Éa/«°W…ò)ʨVEŒ2•ÊÂrxi«.RcZKGÃ…i’z5*]±8Ï€¿ ÄYmÀte4–¬«ÙV¤ÁÔ…Õ,{ró)Ê?]è°ª4•\¢'®F«SVsÙÊHãçû$˜®ábÿ«/Âk©2ᘡœÞp©)wGDäS´Q¦h‚«J­©äî‚¶ÛÌ*Lomb6\[@X"øÄXX³l¬. {Ô‘ g]‰Ó”Ô…²¬SÛ\à ‰Å§¨£œ9£¿A‡[yF¶\ -ièÚâ!…XQøÏì„%¾M'ÓR!¢N‹—±³u›Ë ^Pœ´PaÚZ`D¢ £¹à(Á ÅI[«HÃEk©£a—SH ˜X|°#"ì ›óÚ 9u°£¶4ÓÙ +µMfp"1…ÅRÀ0àh4ÂWR¸­ Ó—Ö[Ä=µ<¤è3‹vDv{éÓ ê4Zλ7Wà˜¡¬®“ Ã1sû¶€B/ñÓ"¥&Z ·+)ÕÙQ_fÀ1]qec@j'Ycui KÜoJk±PìáåC;ëJɇâЇ%IðR¿ˆf#‡p##ÉkÞÆ™ÅÒ¬S׋ygC¹YãfL]GÞ¥GY‚8¢“&áXZl Þw€¤‹±´h5õB¸b5i¨$ºbK…-ß³Áw…ÓGˆ0á5¹šÌyQ1M¯¤[DfÃMÈx{ÕLEk*©¨®khи³0ÕU.N¤BOqšY¡ZU`öØ*ŠÍFšò…(iÑ4wð£{vvua‰)¬!µ]%X¹t#œ;ï2_…ùÀ‘4@„8ƒ'n*1‹h+;jq®`ºfFÛÞßk„Kü dºÙQ ®ÄzQó" K|A´Û]V%š5d¥ìÓXš;Ë—2q$î£Q] A rv½¦%÷­ÇݤQ•6q#M×p…Zm%Æ|5 }‘µ.® †¨× Yyl«Éä:Ü)qG‡}YŒ‰ûåšQôO[j*Ë­å•5M1 LWåzmT,‚ ?Žc›H‚6«SX*m$¬…:²™¬-qûaó«»U4]i¤,¦ï0‘#X,Þ1©²Çð|A—OÝùE•M±)SaS„@ ùíQ¸©£€Z<_Þ¤¡y ÌX~™?u¥ZR‚ãÔnÑûo±P+žTÑ/©§åÂâE]¦.®é(pÒÞPaÖPYÍÍ1ø$Å 5ѰWZó1¼¸HCƒVP:Ä4«T¥q\2•ú}x•xõ“*iF8ZÓÕï®.,õ:ÌR[ ­¦XƒiŠk¢ìz²âQÉ ®¥‹€4¤ÁhÁ «Î*-^‡QqgiJ§¶J ÇÒ 2aE NZ*M8¦³ÔG1>ÙŠu~–z¬º'–^P¾:L¸j [i©(’ Á¾ŽÅØ©1X£CT1JÙo(Óc¸‘Cí¾ AÄðËɶ«K {b—/ŒðdÖëǤ@hõéŠ.8Ÿ²sV±«OÀVO–ô» /h/:jK 8¦*(«m›D!Äð«Ò_¨…¤ÖØÁaRÙ"ŸU§ÃKX„×ÙT¢å…Åð¾ „Îü"„%VhÒèXh]ͶOýûf1IZ%Á—ˆP‡5&@ &뢱Vm>;fÔhñÈË£',õ˜w4ªT%dÇ$ŸªñBNF³‰ª¯)i”PXtÞü}—®F˜Ø}-µ‘-Á]UU¹3^„¥Å£s¨­`uÆ ¼á´T0m…C*a1•tˆ^B<±É),*3‡ÇY¡VW8ãCXÞÈŠU-i¢ ”/ ƒ2ÌÆó/[,jUYçˆæ47ˆ',¥žº ®üÒXµ ¦YUÈm¢–*r(-V]cL„ÅëJ;T•À‘X=?B–Q8+ó;Kˆºôþ+H KE~¬]ä.OšVµ™s)-êr¿.kUù—抢°ÊÜôQKø÷­'“bÿæÄF¥À$ªèyeGª® Ó¶ˆ$,µ¸û¢ZKÌZÆCäH28tF>O¥£\­*íœ|nÄ1UU „ųy³.Zö®û7'4ê1Á¶"9Hi½FO†áUâ‹'hрź‘9#É`Êçi,:mZ¬ c™a#9alº°”Q}±kW%FòY{ ®÷Lƒ &’°”º2èÉXÀ&zRk›¹ÃdáH"bÔaN>¦,‚~Vñò?jU¸‡ŵÎ(ºBD©±ƒÝ·cb°ä‹œ#â*W¹+Qc*SE£K¨+ÔŠµX¸›²„E F´„UG¡›:«{Š)ŠÁ[¦®ÃaY|,P©7´UïÞ.¿ØæIZ¼uá5FÎʇÀbHd½šÊ?°u-šÂÒˆYtѱq¿ÊÍó¾ªÎÍÕx_ÏÍmrÜ”°äqjÄ]÷Y‹áz‹ß6ëB……ô9‡Xè®{R$œ*‘ŠO·cê’:?ò¦ 0X±ÿmxhøãÀ ¬ÖÅ ·q³ÐTï«#åx_n@È(à¸a\ÂÎ[T©Ä]÷él å8‘ˆNXŠ øäMŠ,,ìI‘D°‰F  žw°¡Ëlò¾Ås?:þä«+Yñ%.mÜ¿1QÙ£—¸à#'Ñ£B»b.,lQÛ˜<Âb(––⃎?f6±[D€°ˆ‹fLâÊ÷Sú©uB:·E@¡h‘¬f_T…¥„åêPˆÊ‰ŠRÄ7,,vŒÏ³ Â"eÚ¸à„Pa)g™¬ „1{7€’EDÔ•ßA°°1N¤I&WHg N– –†—Æl˜J‚ü ©—Q絩Èq¾@W%M»tÕË£*,V–Ë(¹ÑåŸVàHXsWjOH¸°¸pM”Hã6¾¤Ë+‹nŒEÍ.ÍIXÚ3>ù¼a —¼2›`aiÇ¢œ9iϰHC™âƒB…¥PÏ"VÄÙÆý5ußÕŸ!vË(°h‘ˆŽ­X´w:@‘¦ª«sCSžÿzLÑn6aRTè?ÒɺÝka¯N]jÖ©†•1€ÅTXš1ðscu5‡,»¿û Yú=¥]š4t!"`†èm±JPË›¥Ù\U3()S–kÃsu¨+ ‹…M\f±è£3ñÙ³âÏÏ_ºïšyÓÆÉôŠJë3pô´ –ÝüÀ³o~úãÑÂ0 <šÁ]ž4 ¡ã|0ælô6…'a°j¹×~pUiü’÷eî·yyyGŽQV‡Z=æ‘J„”²‹ÿ7Æ ßO^IÔôS ]$,B‰Q‡•çsºcóoÞqþ@RHM½tÍúÍ[wæææ~ž—÷ßÜ=;^ÍYÓÒ¹§ìéšîÃϸøº»ŸÞù߃ÚJ{ôIߨÌK!º]èʹD‹Jþ÷Üí‹&@¡Hï—5ùì ²Wݶáém;IB}ä‹Þ$IH–,<ÌÄŸ™Ë7³7Q…EÃ.’SòÔà ë:ñÕ_l8;eN_ýBž!\aG¥ö÷/ÞÞrïÊ…gfy,šŒ¡ãÏZpÕÍr¶ðq^Þ__ô¡H“•4†ìdÙʳØŽ˜ 7¹“ …tÂR¥fõ©ê¾Ù8·/BCf^ûÀ+ý𯱼ºÑU]]]i4ýž÷ñ;¯æ<°nuöE³¦d Ì@ O÷Ë ònfiÎêꤡZ]D´ÄNXÌÅ}ôÿÀBÙÉ9<7–9Øí†£€ I6\iWX¨M2M´ x [1t“øev_ýo—§F .*%0}}¬„¥¸®„3w*:ÿ;þw‚Âÿá +—à¢-˜¡ALa¡ŒòòÐudö=ÐyŸJ± „€ý\ÙÇõY†aºÚØ åï—ùÊÎÇɯø+º!1ëûäKRå©à õâ K+ÖZ6¦}çI)׃ç_2ØD®UA*Kç€Ýz,ªDÀ`±²üÚü„è†M_P³_÷íjk¬)/+-¦òîK,åU5m®0Ê‚Å;ÖD8ñ€É϶Ý')Wháé—•,Vtp‚fãÆ_x ‹;ZÔ¹@Þ¼Íÿ+aº!A]!¬6â)κ’|LUPVÛ´^ÇÞ\WUVd¤¶=T“$²5´:†'ŠD\ID_š²šÚ×÷ë'£»­+‰×Ma‰˜âd¯,Àñk=Ý2.{K}UY¡ACY1ڂⲪº†æÖ¶*Ïblòm C„å„8–yÒË ;ÖŠäöó¥ø­u< ·«$,uNh,Va†òfWX‰4† ”-¬Ò™Š­¶ºÆæ6{¥gKøŽ$¢ê ¾Â1åKdÙ¦¨6'Ò$Í"ÄŠðžfC!®.®‹45âlm¨©(54š€a¾Mì0:ã•¿®Ðò§…Z)TéY‡ØºJvw«­5o¹X,Ž -f°±]Xìhm¨./5ëÕþÂ9’ˆVX¨­›;œäƒFþåFꚤ cqÙ´XA §¹3G[ksæv†pÜÌìûçÞ‰$,î•¶žuˆ5³z~%-G$Ù¿9ñ€×„1u­*µ…ÇÞ¦„«½­¹‘'‰h…¥ªóä™Àz;õ²:"&ÂÂI* ³¬äã¥<†}îiÔÖ6‚ 'Ds…\Ë]”?]=í\šÖòYµ£Ð4ŸSì¿oã‰æà­Ý¢ÒTðOâK"Zaq/‹jèäZMX1Ÿ¨ì’ùv¿G=jÂR@…ú­:â–LiŸnËîXUfÌÎÞç}¹7Ûuãuü¿-‰È }KƒNe²l§j;iÊÛyˆ–µTvSÖöW÷»cÖRìI‘$¨ÃhlCgnàµÕw³ÃÍ 6#'0þ˦iùSb"¨µO;e ', :ËH›¼ÖnŠ„lØ’á¦z/Ñ£‰J»uáÇ-t€°D 4å@›uj?WÔœPTØЧ˂ó¾ÁsÙ4-ÜëA_¦=’€Ý ÂB·±Z¥ktÑBŸ±ÂD´ÄðÐÔŸ}j}´h²L7·„”stUà&¾ދŀ&hùãYOyÖøöD|B“O¦Ò‡ØŒ• \¸)„D´ÄðL^mQ$B¾dÒ$È…zjÓ«DÛø/ºÂâ¶xwË?%ÑBað†=µjæŠ@Ñ µ/LY°R=i„ÅT¤Amh‹ ' ¥‘W«$œP„¹@¸ÃZ~¶FfýéAX¨ÝVŽü3Fy"]”43†•x±+Fœ,,”ÅûlF1Ö‰¬Å>ªñï!‚°ú§OÙ®Æ |í_Ó i„÷[9V3NmyË —ò !ÊÞ &þH¯tèó[¤&(?bTh‰åcì……Ìœ@üðÿUpÍÈ.Jš¿ø[%f‹'„ ‹©äÅŒr†*„´D­_²‚Ãß&Å=D–<_ñ¾;EŽi¬a”œûŸFE:nYW¢-,ýèÛ º*„LDSg²‚Ó •f:NaiÂnÍrX£ ´ <”ዯ+šðòXrB¸°T½pª|‚=¬ĉ%[æ¼UCcô„«ªŽX¼™,LmëÜV£DÝFÄ«°8÷|Ž”>¼6²Œ:{˜w_m¿å''Ò$çÖ>Ñ®½¨–N²½›iùÓpþ,ŠEŠ„pêÀßû£”K?n‰|ÖÕBÁ矔 …žœ¾¶®Ä$º‡N81ˆGÒ©í? ¶Ââÿ’ûÿQ*êÇ!kÒ$§AT×±ÿG¡Vô™Â–Z©@û¨+Þv3Ñ*ž°e³’u¿.ÏÁÒ¡wµPÈ9Ag%júBGžV\*ã”#‰èÃÇ® 4ÎI ìño9t ^ÿKÃ59…¥Å;=[‡5$úWy©›;”\!LXÇ&™¥ ^k·µB4Æ,£«…hÎAI!,F¯`4Äó–jô!õ£wE "D¢á$C©hغ¿ v¤Ix"0Z³NMI•KܶJ•ZLa!ˆú*µÁ÷Ð ù£Ãn^ùœu…ˆbûlÃãzqöýÃ4þchdaA‚í‰Ýé)$iRÑI›´IãaIañZ³*G¢ƒì]÷ WÖ&¦°Ôj?è¥p÷½ =“Éâ),‰ OÉd§¦,ž?¤óÄ{ܶЋ¡|Œ/xŠÞÔWŸ÷Há@ßë¤Y„èMdq¨Ëþ‹<>°Ä6úÏ!_üÝÖ5g Ouÿœ²Yäkî˜Êh×2‹"’WX< ?+Töxþ? ¿=cM˜è­X°xç‘+§Ÿ”ÑIšÙ&#-îD¹:á bü:ï~ez¢ï*øjË 3z!4༛ŸÛóÍÑ?“¾]¤ ÈÎf+,ˆHbai¤~:ã|TZ9Í»©w©tnF›î›Wî^|jw„ÒÇ_r㻾üaX*%-çcEšdªN¿+?ñ °#è¯Tlâ}‘ö¿ß¸ù r¸:oÝö_ª¼£ò%’ÉN¦Ês{Ê—"«±”\$j§JØâÛnêù¡q÷eµ TÛµ_<·vîHÒYî7ýª‡výì]k×|69ÉGæ²! JJ]qî«ÇÚþ{Üy’Ëî™ÙнesþÚ±fj*Êœ¹îÍCþIqõ§+PÊ Ž ‡ŠÆÉ¢uµPÈ9IÅ"*laˆï¸ÿ^e¹wöªsO˜¢^¿û’1¤~ 9ïÆ§s$R:+²GN++ÒI˜çní6ÂlJø¯aôxÇ^Âasoi5åÏ×oœ¢D=fÝùnÈàÛ|BÝŸn&´Ð•“jŠë8çòŽÙ+'&ÊÞÕGrsVLíAy=Ùv ¹¦k9é;ßnëÚÔp` N¼Z’Kÿ“+BëYî“t”Jô”"d‰Òýf¦£3×íÆéÛ ùMV&˜‹‰2iwWÿG 1 ä_ø6ü¸ÆÄnÌÛºf^Bʬyëvä«{šƒuyn¨«jqiœä±H*̹עó ߊJu«WÿÓ—BÊ©·¾›Ï˜tü Z”…>HØYF‹ÐJûÑÇ $Ɔ¡öŽÙ+Jy)¿ïºɸT„†Í½å¥ÿ#<.;Ð8Ø‹—šo.–h«¤¬§%úÈ¡µstòÏ ßÀTPñ ÆÝëf*Ñ…›òÂÛñø¡¨ôAÂæEÙT-˜´~"'…£±ß“„·l)A”é9ß¾4oÇ:ÊHIÍZHïöÐàð;¼êê$Ú±´ ¿"á…åÖQT_z¦ðÓŠµy›ö% •u»ãg비–F¬BíŠgay©{U§w\³ÿ¬µGr7eOíŽPŸ©+rrq+ªÔb(þ…¥,c+Ñ901nïhÇw¬/CC²·h%"ÀŽY,ŠG1–æÿqÿô$Ý6³šýô)2¤t)µ0ÂðD^ÇQËꚈΩ£_¨(m7Ôsæ†ýüËoBiʨU‘›ÅNX6gzÜbOÒd„°~+NM÷dˆl¤p"M2¹Bí˜.ühÿÂò¯â/ÍÝS|­A«Íª¿Ý¼hJ™òŸÝù.Qï ô‘'›Qì,–ÒÌ'=/¼•0¬r¾~aíœ!¥Ž¿üwþ¨‘”¬]¸1¼÷ÂÒ|úÙ^ÁðÌ7ûå+´üþÒò±24"{˯M"Þ÷Öìû½¯ ;f– 9ž0aΈº3aq\0Ú;Ä”yj±è‚TÚuÿåãStîM[¾ÔÛ%#+r$°ˆå!ñVc,„eUŸiôLž njæ't~Ö劾ø„Å',8‹“8 Ëg/ØÄ–ûÓtˆ§P¢É—$ÜÞ‘“âžîÉ“|¶¿ ‹3ˆE‹Í(ãvuÔ…e‹ü뎗Âäç½}ǹ=QúYw¼§oER1§È²¥®üKayGövÇË:Ï~%„Ãøí+w\|R ’ Ÿ÷ŸmßšœÐ‡¡ÓˆF‹r„&ïnàÚÓ\øã|H¶Õ÷Ke~ݯÛn˜¢DÝÎXóúßÒ”ÏBw?‚PNÇ'B¾p>ŸãÕË«”=z6i,Ü:yW Bw4ñ!‘?1\ÏÊ7ú~iÂÚæï_¿e.•åÖwÆòÇ?:Õ…ìI‘<¨Å# :\hñuw$—õÝX2Øp©=ÍEX óÒvzjýŸX|¢ õ=ÿÞ—¿•°@ÈW¹i•Õ¹¹š|<×Îçsyõééõœ¸hÝ ÿªñÆÄjΠŠòÉNÜaït™ L ‹±ØÞ½,eävëVã-õäa™hôä©Q5b¼åMî~pé$’BÝÆÍ[µiçך:ö¶²žB‘h8WutPÍ»—¦Œ~ËŸžŠ íXs×–£’U1A[èî§·rõ\ºî9¯’g]²þíÃA1vÛiJ’cvSl“\X(Y¼My†ß–sÚJ°HãJ'—+tTòTæs*«åƒå맯§@i¯xàíßCV•#I„Æívp%‘1Œ7)ÏòË©**ò„„¢/,qCéâ7ô¹Fù•\F—€D£'iìª8–lÿcëU#qéÆõôÝdAÊÊéû]ÜI@Œcg¤ïòýâ)N W(Aû[¸°¨m–Û«6ÿüø…™¨ÿâþ`êžÂ‘Ïußf/†ÚÓ|¬KçãŠUæ¸g±P=æÝˆŠ°X ¼MÎ¥ŸÞ33õ»dó÷aÔH;¡û >$ $†ãÙºéòl¼Û‚µBGKXȇE-Çæ¼ûg¦¢á×n·…‚åtÆ7‘î'ÛúuÆ/a Ü1ºpÁ[N2–_Éù"ˆÅ›(i„…|^½õ@#úÏØËW GŠIk߉°ÄÜ4Íý…'‰‚‰ñQÚJ§OÝÂÃí(ó†y¯ñ.,x a _ËÑqø©¹éèä5{"ÕôÑ,ý!òý$âp¿óê=žµ[Xj™+sëÀ1²Ó6°³¸HøTb|NðI1™eCXH£<òr,ç?[/ë‡z]¼ùûzb~ýaÞ$ !Æÿº]åé¾R·°438ýA¶ø?êœx×ø9O²ìIƒâ²¿… V×±·7-Œ;²û¢Ù;ÌbÝO a!þtfM§+Äœ Ç1Õ·èB*•â²7 #]$|*1 9E«Ï%–¢HICœ"Py9ÚE$-kb|Ûm™½Ób0eýŸyø¨ó0%^é†Pú¼gþt°$ÿûRfJFYXœX=ã £}sù ¨ç¢—pBzNBwÂt*…ÅS)Ìbd¶F9òäí2¤P Qwý¯™ù"R‰Í9(Ââ]XÌÅD˜ùæúï½°pŶcNqIËyÝWP7/v •šˆ£M ° >«NŠ"$S¢î½ð“i¢B„( ¹¥t\ø«WAó6²G‡……ЛZMþ[îGʼn±P"u‰;“8¥žÿB5ãEÂÍŸ#çDs&îmWXL¥LS¸¦½·žF òò×îk*TXˆ¼´ÿø(A;â ®A‡¸w×çÔvßH–‚z,Ú‘4þQþK,……ÊCtÚl]ÒõXðôÁöèqB¨°º¡gÖyK<…›¨àÎ’÷3•^§ûÖ ‰-,¿d¢!Ï׋),F á Ù_°é÷³‡"医>±Hå¿s!Æç);¶„aqPÓê÷¨óë«úuò/iþÂ4¾×¢ºB[Є‡;ƒ„E‚*&ÌÂÒ9è8Ô»o?3õYôü_ŽèrB°°Ú¡SËq7ÉÃÍrqjºªoŸº~F„äÔŠ…þŸùîËEX7ÂBü;¡îëKùAXʧΪz~ùê·ðé_DJE.,ÄÛ²g¼k…ôVVÂÂa‰¶cïm¸¤§‡4½>dCi8Ñzik÷½áóÆÐDÔ*&LÂÒätJ¿{nåÔn(mú­ïàÎèsB¸°ÆÑc¿¡²öÚÂxfßtޝ²Óúœû«“ÈÁG![UCðDÄ‘°¦Q ¤T\{œ;Ñè;“² =ö¡õ§×n=0B/z × b‘ÂBl“å¸Wð;ñºð¤ yÔ9÷Õ?+ú#åÄk¦R´lA;a!ˆÃJ‘)ç½ZØßâV1¡ï£ößþþß««.ž”РywíüKĉþ¬k$Zô´˜aù…å´>TþtM¸ýLØ6þa²ÙïPbÿ"I‘”òÂ^„9•±8'Ѝšª¤êÌØïâH4ú\_Tüçö‡o[8¡;B½Ïºñ¹oJD÷߯¯Èn¦r@˜â̈Y^¹õ•ó‹9hòËÇÛ‰Ãd3+3v±! ’M·ËHÃI¦@'®Ëûƒ¡¿W1¡¸á¬®®.6øêƒ9Þ¶äì‘éäEûœºø7¬û[Í–lÑÓb†;–\¨|ÒA™U…e.’cß|ù yÖfæÉIÑ¿©!ÂE˜R‰QÈ91–v²÷ ÏHq—:™ø7¢QÂBþy…Ñh8òãþ÷¶ç<¸îªsOéE ˃f.߸ó‡Ri>ólQˆñŠâúvràѬ„ñt…Úw“-p@UÃRüÜBV¤!$Mûz€'B˜‚æøú[äb$7d] ï3jòì+ïÈٵ㈠î'JŒÏ§ÍT©JdÉæåó÷ycLºžHqÊŸ Øß¿ãÝl‰ø¡çÜ/Îñv=õ ljhäA)}²&Ÿ³äÖGÛ}ÐP”õúÊßê1³aÿzß3Þâü¨µ¼:Byƒg~ÕqR¤¿óu%¥Ÿl¹eþ0Ï×SœüŽ„ÂrÕ9gfeÊP깿ûF`wà–eZ6GädK…—™ü+q|JÊÕB¶û¨Úu¾¼ÿ}¾êEõc‘bC[ê qJ· ¼¯*?Ìõd jóHxÔE)[¼—£°\uÎŒÑ=e(eÚ¾r_`–ЉJ[¯/Gb˜‹ð }Þ•r bÍ–!é·vd‘n@hš6Æýÿãã³å'ž»j1•.¡L{¦ÝçúŠ]l ÃMn}¼LvYÇĉ{Ág‰IН–5Q"]ÇàJ·cõ¤››3 ã~½ÚþÇ3³i—Ö¹RÍ9MWKOÑR ÊÞ^Ý‘“D?oéXK)ék47¢yÉãØ;UŽÎò}ZjFÈ&iq"1œ*Ñ´FvŽdø÷šŒ÷ø&×÷É”9Žë ñЙW“D.@:eh¾‰ $¦3Q·Ï½µàÓ"IêL´g…ˆJµ‹ZRöòIò™Ïpºdõ¡7ï™Ý ¸î〉Û˜—£QA4aÙ×möïaƒy—(\Ö“ ø ÕÊ—Èz[…ʪ‘´Bµ³BäG´“¶ùž‰©«¤(ZŠ?6{Ù7Ã'ómÑÕW¢”þ»‰ˆýD‚x'Ýá&G3µà³\—¢§BEfÒq~y}_4vÕN#TÅ¡=›–Ÿ5¡Œ)«vjb䋯§¶ð)•ÓH»xÒûíw¢ùwæO™²óÝ5@ uµt…@E3å£éìTpuOˆŸ®ýß·W ACÖýÐ…¼K…0 ÿ 0Pç#¹|]}„þXÅ$°~릸œr•ÝUž¤q“£-,MTþJ·¢™=oãyÝÑÀ˶|KŸmé0ÿôæýÙ§÷D(mÜ%wlûŸ)‘K¸`YYÞ¦,äµàN´€Î4 NïŽ'Pé!ROXZ©RÈ n?yßeú¢—E°[ÚðOŸºîôT”>çÉÃâ}ÁÂòRÏþÅ•nEhâa±Íâ}ô•<ãbRSÜéüÉ!,FÒ‘´kü2)Úþ²Áõœ¾ê‰7?ûUe5Fõ/¿²éÆóG+Êœ|ùúß›BïslAY¬83­ûmz¾$ìLMfÿáTÀ«Ma1“ßÚ‘ï`l».퉆\»“÷SVþó÷\réRŽœïžãíñEšOŸñ¯» e¼ì ¢,,ĆŒžW;=´¨Ô&°Ôä́˨ Ö Ûw^8¦gçT©lÀø¹«ŸxïP™X‚sbgnå×ðƒ:óCÙ˜“ÊeH[TaiÄ—IÛ)Ž#9 { Á sp*(çÙH~µÿYö†ÝGâŸ4c––Šéf±ì£æÑóÓoñxÈá„%†°Ø5ńˬf¢J{öóGŽÁÊø¯{;Ö“BÓ|½å¿oãц°Eˆ‹N7Ñæ®¤\”.?f paqjÍ„«H4ÕÜòëÓ‹ú¡ô3Ön?qU“ÝðÝ뤑’‚d#/\÷Ú÷Å:‚0—ˆciú¬ýÎN{?. "ÖžáOµZW¡UU&ìŒq"Ö¼ut'éL?ßQŸ®s;°±4 Gƒn÷ X¨“F!ĨÑh+´xEÂ#YjÞ^¼˜ÈŸtr%a°Š!,DýrR2—ç6…ÜSˆˆµ§ùãªÓã ^ÒN ,ÑâÉþŽòä……a……ëRáÚe$‰z-ß߯–D~4 &†7äã%m@ϵ_–¨ŒÉ n¼–Ùª?–5­>ìnv\Üâw»ËQ ê~Õ§Mœj„Öžöã«Ñ¢ÆÔ˜ÆÚFt4| ¢…’Gƒ›ïV~¡³2D°ÃŽJo¦S$ʼv_3ùó#á‰ÁUX¸¬ª4u“ªŠ‰lOȽЪjÃàsþhIXót…{ílêÅ»ë:7±ã²N›E‰X’?ö–¦ºªRS>ŽaX¾¥!:¶®oº9–ømäPq¦¾¸-”<ĨM†2×é¯ÕÑv Šô3 ¦q! ˆ±¸‰QR ‰*1D# GWèç¬âT!O¾k"°mb Ñ~R¸ë? Œ‘¬¬X^ÂbÄ<ÐJëíQk­¸HÛµÈ'äY3ƒ´t+RöŠ-,DÛž¢1lHäïjùˆ“Ĩ³ÇE+IHšâÔÅ )Õ^'U“e¡õŠn?J›<8ô¦D. “T/ܲèôÞ¿PöxMÜWíé SkË«lu­Îäáˆ5s# y>“$MñŠ•òÇ]¡|A?a){î¶Ë§•³'QàÞͱ!F¬Hó777ëb‰„%#4%àƒ*±&ÿßé½ö ûŠåï­†zŸ»|ý¶ç ª‚ïšJ‚°°ª=¯©õ‰nD£!O¥l;©(†’—SÙDùD­ß¯?M¦œœ}ç‹Ï¦¤P$º‘‰ÂL7xÇo؃&ר}L­¥hm]®ãäüóÑéråìÍP“„•YJ$“þ‡ï~ˆÁŠP{š=ÄM/ïÊD£KTu;U°88lÐû‚?Žuçå™hܺ¯¨ CÕè’D§ýÎ’D ,q',öÁD)Ueÿ°/ñÈ[u©ÞX1°fŸwIVÓîÂ2.¿ûѹRÂjO³æÐôòŠj&ÿP´˜T ‹kñ¹¤©JÕ°©½Y6ï7!^ÙWL—w»ø5ïÄuó ’D½¶:Y‘(Q„%椉ª°T-¸˜hÇݶJíÝÝoá,ûþé…}QÆÜ§:×)Øç#YÊúzæA.ªn«àôò¥)swTÐ’€99X²ŠëÛ߉3a©{¸‡Ã¡öPæ·YhÎ~>™Díøû·M’£SÖî÷Íu9!™âÎZ$Š aù ¯…A9D#;§â]Xtös•æ{coÖ{{*.Ú¹š@Ùßû_^õÙ}²të_þ±w×*„ÎS…³ž£),‚ÓˉŠÉg¾j¡ásÐIÓçÏËždü–¼J Ó׳ª;’d¾PÞomë™ð6óž½mU9qú]Ÿ¨÷mÍÂx‘HåùO@´…¥«ÉØ¡òÛj¥è™É(uÖÃ?„õ¨›±ÿ¾pûâiC¨]à†ŸsíCï .tñ,ú O‰&,BÌΖ©|‹^ËvœIîFé߈sWÈ¥/lMÛb P¿†oÖOWÈNºtÃ<.Óò×_½o µWbú)‹Ö=³çuº•ˆga᱕ê”÷Vrc7iY >ˆß`' æ-â=Æ –#1ë*}àÐYüîêÑ(möÝo ‰NU~óÊYCɇiÈ9×Ü»õÓßKø=¶©‰ˆ±° a1ã§ËIÙT akr«¹‘FÚ”þ¨ KÞFœ~MhÎsÝ_99JPêÛ§[XûOYöÀ[?¹„Ý/vÂÂ;½œ šÖ¸“µd)hÒŸ‘8"ån™bëŠPa±aÍÄÚ±4uµŠÞ]=-“”s³×¬êõ×rr6Üuͬ“º!¤3ÿ?ÏïÚ¥#‘H‚„v¢}KšÒ³{“ü N¤÷áŸ;k¿3ÂÒˆW¹ŠVœÆp¶Cwèë÷_Û¾#÷ã_ -âYÌ„…ohíá=Ϭ[ÒÛ»wà€ë¦Fâß:çÂu…ÍM" K3^î*yAQÏàBš¾yníÒySG÷í—5zꙋo{r÷÷vÉI1wi_o™{çHYŸ’æ‹4”µ£%°¿%¨bÜGª"{êÉj'¸°·ÎKU*‡ÏÌé|”6D∜äËÿÈ·U§.ø¸5XX¹J?©+j“ݤR£Ÿ¥þ†‰',G^26Ž–UÆ’4¿õD¨Ï¦ŠÐDÔ*&A}T£*´©u-&ôK² ‹€ôr{Þš!hðÊ­.ªn4Å‹ô¾õd 3‡H*Ž4²£Äûº”¡Ìµé,ñ²Y§2Wk´ÍÄÐg@XM•f¢S—múè¯ÓH_HÙïsÑHc|/ÏáZϵ¹ÕCä(%e¹*¨¿Å­bÐGm…˜I‹[Hl°dÅœ£¾ÅªH°wS4õ©<¥Ÿ”2”2òË Å¢1)ŠNÇ`Å~÷Ý—AJäˆÇÍ;¢ù¿ö'O{fÒ㥤guÙå’ ËĘƒ_'–?2XqùonR-}E•h¤yU!G“V*÷rýD–ñ”ÀÉæì÷ïo‘«˜trÃÕX„«Tx±Û.¾zžTœˆþ¦ð" iÿšAh¼o ˆø·;JéþlŒŠzPtš0ô¼Öìg3ÖSs\J4yG ¢ò#O1®VáEnß=g°Ôu rbC >ÂbºµÛ€=y ¯{ͱPæ®#qÙWÜÿ²ælÊ-KAvÿîÛ Nä*&$7œmMµÅ:ªV…¾ÂK{'µx¿í‚TŹÏù•/„d×–Åèãxè´ &"ùÙÿZ®w—#P(¯Øÿ¢!ò´w¸SÇ’¼Â©ØŠ”ۼ忑óªZ?Ñ7î4¡Ëù”Ñá(#´Òûòí ãs=ßÃ3õ€Îca¡òÜ]¬B¥-®é̾.“})QÿÌ–ªbZ,ÿóïök‡¢žÙ{êVŽFîõ”ƒ¡¾‡Nã6~Ú*ÎmÚ þðñ´Žz9s8ºBòàäqÜ"qÓÌŽ51XÁ™·PvÒŽŽv± @C¿õúõåR.x5·# ü@îgÄÍÍí¨haÊ <þUúo’¹'¾íaSãUÅ„äFEEM}[p±ŠÓn•Ê=¾F¢›‹Eޱ>¸{Vw”yÁ“ƒgD߸+µ=f~=tšz²R¤‰;÷–‰$Z›µBúGFÊæékç4ÙÚzqïàº$E¦L3øç?\ïær¹šU°žW¦û£ƒ$*µÓÍQºoãü¾(eòMo§MNÉ aqÓI‘Mt¤”5]óø!î¦ØÞûßò¾4þ¡«j:—Ê$–ýBЬï¤KìHÇý"ÄcON— ½ÏósûÊE&A´¾°x-^wá2Ž×k»RŽdò>›*}×– Š S™¤ò…â\Xj¾}bñ0$;yùÖƒÍDlÁTꔢÓ#i¾òƒe—Œ~Ôû²àXøò9åG¾öj¢³çD¿Õ‹m H]Q Þá`A4è ÑÞÇ–ön×çñ×–Ÿˆ¯þÆ!Ö#$-¶s¬v\é}«ÕÿÚâW1aì£ÙÙáCYI(,–ÜuSåhÈÂMû+9üÕñ¼ˆNËÅtñÑ{ê1¿šÓQçÚxßšŸ¼/oF¨‚Æèj¿TŽRz¾ÐÊŠh‡˜:ó² º¤°´ý½ó¶sz u^GH¯Ø@ç¢8®D(mC ¢1uæ§ò¢.&,u¿¾´ê4%ê6}íöqMšsS®=ÊÚ’ ê{?Î^I"aqü¹eaÔãÂÇ~ltßøØž3\«‘â& ?¢1uf[ßœ0®ðr q%,Õ¶®/G½f®Û}¤Óg’xSxz-áàfI!þ j ã%‰°ØÿxæâhÀ[ÿæíû¬ÚQhš¯·ü·â-r\z|,[ªãK4ÆÎ¼sx;£…˧h| KëßïÜ{á`„†/Þ´Ï̃4ÈÆ>s 1–òO$wŒ¥í·§ô@ƒ²_Áv{gQž=¢1v¦Y¹›ÑÂåS4Þ„ÅeÜ·yÙ))(mÊu[¾·ÅE?~”:¿.!„…ØÜÃ"†°˜šãPXê¾Ù8»|åk* °«²Ú,\^å@1[¼‹«0oÛMgö@²¬Å?RÛã¨ëþ¼Î‘ÂÒ”µD a–q}žƒæ~ˆãÅ#€`Ë—öƒu§+ИUoë@G$–¢nÏÓw¿r ')~ÒÂD¢Wé¯=¼ç¡ìÉÝê7çö7þhèŠý-’Uùƒì]„åxÙwþ|?&Q˜WüqjöÞ}nO”2eÝÇeI@ŠŸ÷ů°3Ía„…k9Т©u_¾ßÁžD… ‹½èÀÞ§oœ=¡´ —ß¿ë`‘Dˆ‰°ww?&BŒ¥>›ZH9ê1½ÿýó ž Âò§þŸÜ§n8§RN¹ñµÃ-IBŠ;ûZâWXZO™ç¤íÜŽq[9ÐÖ5ÔìÁ¨X’Èï Oa±—a_¼vÿµç §–~š{ó‹_DÒ!ª[¬v¶í¹#hó¸.ôÜ¡¤öÆDcsÊü6±Ct×$ø€ ãÃrô«·_9“m£.¸eÇ‘¶d"EcÖK1&Z8òü™öHè/`Sø½é$‰RјMf$ò?ÈZXªKGìßµåÞU‹ÎÛ›ºRŸÉ‹n{öƒƒ%ÎD¢Åï\&¨¢º)|'lOePüsUFX¦Ï{ŸÙ=¸N{ÃÔã¹¹;HlÍyxÃÖdSµU©%œÝOšë‹_æ'•¤t< â_Rð¦ðØ.ÿPLa!°,/‰æ² ò±÷¬F|c‡[rrÛ°aÚ5k–gg_:oÚ„¬¾Ý¼Ãeƈ3,¿sóöOÁ3Žraæ‹ñÿ!ËÆP »‚ ÿnïÖ‡®ðÔ »m¤t²¡}úôœuêÔ9ó²×lxz{î¯ùõ V®Zê×A.÷r ^Gèç_Û|Ç¥îµþ¬HäÃqƒBZNÈÊ;u*I“y—dg_»æ¾Gr¶ïÎÍûíocYâûÉ-ÜÁþdS7©ª˜Èö„½qÕÌÞóþŠÚ]ÔÒ ¤:é¤ï+Ü"_ü' õ¹ôÙCv7Uâ¤Ü€ûÑrB@ˆDàÏ ¢,,Qß 1¯¤Íá»Ñôê‚n² k÷˜:ìŸH.›ô[%¢°ô|SÌ«¹â\Xˆúõ©'¼Èz5”æ¹yiò©ýæ77·‘iîtøÝÖNV"øsô .êQWÄâŸq™Oq¯¡iÿù¾ ¨Ç;ý³nEH>ô=;%¦°¸öˆy¹Ççañ-,Q|gFÿÇX8Döïƒú]½;°öÀVjY~=—ûñA L¢â“YŒº{a!ZžÈñ §šYMŸ\Ó¹ëû@+ù~„zæ´ð!QW%ñí„mq.,QùHß´e_‡Í²}putÊúÁ'm—É×Z¹Þ„…-ô.q2ÆPÌ……•në6è)¶Õékö,鮘ýBÈj‹'ò¾j~$ê²ÂB8þ%â^X¢a×,Ù°û~¤×À–_6ÎP¤Ì}Á@slðÅj>÷aa‰?¶2ê Ÿà­Q|ò”?Ы×},Ò¬o\”ªœ¿£œÆIº¼/‰º®°ÐcÜ-5q%,Ôà¸ñd”¹hëOKMÛŽpßÙ©(kí§ [ÝØyß„…8ï„(½°DíS'¢¯†«/à:ºyº¼ÛeïÖˆMZ Ahüãp ~{ãLXH˜¶_Þ¡aç-½eãæ îºföX%RN¼Ù»û~À¾Â‚øèŠTÂBÎïWd¤]ü"}8ÑøæÕƒÐЛö5ý¿½;“¹þã8þk×.%K"*GI¤”ÒA‰E±”¤DÿÒIè_*…íPþ¥CJ¬Ô–$’lÊQh­s‘3+!aÓb»;¿ÿœ»3³óûíof~3ûۙ׳kf~»;?ŸïÛçwÌïGˆÆ? çyœNl½Gˆv›õÖXìöŸ2$¹Ã…ÍÚ´iÛm苳6†ùýÈOP+,ê+üúhD‹MîG=’D½>ã¾Þ^¶{(ãó‘k‹Ä.ÖXÃô¾CÚ0ôCgí…Ñ<:Ï{¼µ¾ŠIøþ¡ÓX|ÿ]­Óã\m‹‹ïõmqùÆ"4¯ÏxÌâŒq7Ÿcqg6¿¼S§vmέ!„©e¿7. cˆªHc9ùFÄNg;ÒÄ,Ì ¿õoͯbBc‰kr½áüýsƒ¼!Öê3…8uÐrŸÆ¢x¥“ŠnXVc™©_|jРÇGŒ›òÃΓáQÕh,Ö‡kl‹ÀÛüg’ýê%»j™„QÜœ]v»ͯbñÆÒ,l÷n¾RßÉYd^Ößßßøtp?xðû¥Nš¿~À£±UËG<<Á…èʪÐXö×ÿ2«E=O;+±e×GzÚÏç´$¼^Tzƒ:­¯bñl¬M —,G'Ì[BÖ©Á^Ù¿ø9ƒA,†ŽŸ—* šW©¬Æ²6ª‚át<2oSôëÔÿöm_Ç9ž¦ ¦Énú†x±[6¦gì(¦±Ä²/«Û/ub4$öŸ©&håû2w—ÐXª˜¥Žë#ÙOéìÆÆÒÄöÕ.472-3f7…ôêç7žr×ùÂì,bAóܲ‡§F»GGöªÍF(ÛCÏMBÌâ¬GÓWÓXÔ\ÅÄ–¢œÝ?}…1aàÆü­ô±óÖ½ègu_h;[¹Ÿ?p2²¹98Fí©l »œ½VêÕð¢w^%LöX­I+T5–²·E9»2¦<ÒZœ>ü¯þ#µó619’éªõض ¦k'î’”> ñ*&ectpr Ñã÷Øh,¥Éí—ÒÎs¦F68égæªûÎEý&8çmkmû£ãGU4©ü§B;ÇÖKxúD´5–ÄdsbÍÏ"šŽâñ¶­ ÄäO]'^)wW1ñ#ë¼æÕÆ—ÄJc*þý«`â0÷Iû"·ˆ¢ùŠ·Ä{ø’n>¯ì8Ý,,¦¨ šðÞ*œ÷æiM—Dac gLlJ¦FøÚ©“Ä™þP¶íÚY¯ýUL¼Çè䄸Ž)µï²ÇÁ®ꡱ(œþJ` Ö»¯âYrÖ•ã¥Êg}âîû9Îr¯P |bŽ÷·ý^ß`2$ïT4¯z½s_7ÓkQÕX“ʕë}ïψÒ¿ö¼Fþï:*„ªý:U¡±øüM¼îqJb}ÝÌêï¶uq=œ(Är™ïÚ{–2ƒ šÏ`¦˜”DOc WLì §/×GD"w®Ð‘ëNYà·Êþ‹ªvcÑfÛÙ}(ö¶Í'%½qŸ•³gñ&™#Æ6¥4ßÁœ_­_q6Íw±ä42‹µÆ"Üm™æ¯ŽB“¾¢ƒÆRÁúV€©¢WÛô“ª²E­fY%‹ô}B‡AŸEÛ˜øîéØ#Å\c‘¬# ¯+U2”+ê ±” ŒÏ…@ÿRí.“¢G¨g7/J¸KÝ:‹ÐycÑ:&Q1Þ¡ŽÑÿŒ#Ô4uÕMîôyŸ÷“Ýñì^ဋÿ=ýBŠi!_6aqB«ªQ¨Ð­~ßWUˆBl,Ñ“_ešù¡b¹JzåïÄ©Ã6ú¾ŸŸ£Bº¤¢êü…¦ýáq±×X¤EñÿQ5 Tú˜¥þcËJ¤àBTc SL ­±ÝX¤9 ·ó_êÀ¯|¸ñlÛ@\üîQÏ÷ü® .ÒgÇ/¡±øÏlóóšïcù6Iˆ¤Á‹Š¤ B¤£Ë&i÷FŒ7ieÝÖ»K+„Gn0 ƒÉÒ#ݪ ÿ§Ïê¶±>dXGcñž)†­‹t “ý”¹Sú}“/"ý4k»s¶êl¼×…íÔ=ñªÿwüý’Ó¾ò³Í蕊G Bĉz#²U-l„þKFÒì¨\cY§Ex&^Ѻ±HÖ÷ã̶Þbˆ¿å“ÜÀB¤£5–»ô6Þ%óÂu±/rdÞ2ÿAqÏ!Mf¾8g×pçÙ³fcׯáÛJM¾çoד¹_® óˆäFe_ 0hrá™lxªDãÆbëyç:3dˆëÞ8°M!`¤¥-“PÉæ7¬3± „Ÿ?šùÙØû¯îžX¶€3‰Ôe"¨·3’»ºïÉy^é¹ò;ﱊ¡Œ´™ñÉ'´l,G~žõÚ°›œ!2ˆk ‘W0Z•c[·?2P•ãèð„sÞ:Ä®ùpèÕ§Û–.M:™6ý«ổ£½­\±Då~·?²º×(²nmý©ëá·ï’AŒ%I-”.ÂÈ1%c¯5 SƒvÝ-ö˙ϘXˆ|6…Ü oíÓŽ5ûѰ‰y YDý9¤Fõ òø‰¼_&ÝßÚ"ª·{xÒ‚íîÇßYŒÂh¸ Mªè“BüaoJ?YÓäNU Cf\¢AÏù´OmQÿ¾Ô­E’õ>“­­˜G0D㫺guÕ!†.2þýߥ†êÝ^ûEÅ6Ñɵ lmIžž¹Åë0˜…ƒÑp^šã3|…c›üœ>«ic‘$÷mör«µzƒ¡ ¯¢—.XÒo(^›rÙÜñUתϳ¶…“è¸%à²óö¨ºHÙû^·º"®ÝcS3d¯^ù×¢×ú]'j\ûägåoß¼À" fºVtq=–ÓFº¯p°ÿH€ï“=ÉJ$Tù½›hóY'%æ-{Ó©¢Î½Ÿ—Þrõ=Û¶ôÙó‚Q Á(É^ä¾ÐÄâ”ï4¼XëþØØòkçŒ!—' cÓ›¿’úÓú?œGÏäì]=ÿ£çコ®õ:?=}“ß}oõÞ/=5Mo÷zT4:È÷[¯»0Ÿ8¨”‘lª7tI@Û'w/›>&¹…E4ìóN–ÇOÎ3Šøçó¥07o5ÙÚU¢#‹|;ß1û¥~[J?âqHl~ó7Òÿ–ïÕñußö8c_oåàü—ÝñUõ ØÆSÖ„H/\(jßþÚ¯ó\œ½dú¸Gº_q¦Qˆ¸óîõénïé+ãEϽÁ…(èãXJ?Kff¨-&÷ôT²Pa9¸uÅ·iiiŸ¤ÍM_¹«ÂÕÅâo¼zµ~ï„x îŠj6ÃI@`¶L¼ãtQ½Ó óvøë.GV§|ã¹¶¥U|ã«ïzbbÚÊýþ65»¶ø)Ø…Œ£—Y…Z„‹ Bxé·±äÎú%ã¦æòÁ½Ml«"-{Œzã£Ù‹33W¤§1ù¹][×´­ùžÓá±3W*o”" ޼ÍwV´a5,ÐX‚÷Êóø@Zk¹«SG÷lÕ ºûhÉÚ-oì7òýE;N†9DZã>‘À+%hZ5`¤Â¥èЮ]{sr""-ƒQ²ù3Æ÷éùì̯ê! ÏIˆ››Ê` ô”‰>a:›²[Xò“ŸUí…'ÙÏ\õ¡#׆íúÝÂ1»§÷/»;äÑ¿*¢naž›U9Œ‚·¼ ¥¡ï.]ë.êë¬õL÷(~ëOQ$ÈúST¯_îp† ã$*ër¾Ý£;Æ~ǦK†P#ÈÛóîÌrK«+Ä*—e_û\ÿ««9U:qÁ·Tjd–Ë°Ò â8=aŒ÷Þ ·Ãb˜@Y Rã¸ûJ÷†^ §¿}WNžâp„—T³Åyã©)aêÈ‚8t8ëñEIai¾jÀk­öÓ\iàÅ/d•´²-xÚ¦ zÒf¢ÞçpÃèfÂ~pKà WeÛ|ºÎn¶á? D³Nö €7Ífxô#S$ÐýLî- ¶èXj¯gÀ*ÙÑUo³T²âÉÓìWD³ÔÍb|tã)‹å!ýÌMÞå~N:Ëﺠž±ÆÏŒX¥²Öâ'½5–¯¯vݪïn”¦›A9ÃöÏu“nf'Kø.tJæu08šŠ%Þžî Y¥Z&„©¥®>Ú=1¹‘û®BÄogˆôá'û?Ù›t3;+øì+hîXS©}á­ƒÇ|0oíW¨\ÛÖÓu´‘<ª¦m†+´5›ß<^‘ Îñ¦C(i•2'î3í2¤fÜ‚jÛ¨z,5Ÿ4ÅWä‚3ºÖ>JZµ¬³j!÷¥ eîàc}ÅûIùωÔ|œxø'JÓ’ø¸þBáÝOø¸ª3$ÈGŒxç‹ B!Ûw”–MŠK$DÇ )Á„‚Æ‹Q¨õö'ÔªLUî÷8±”:#P¿qK‰*mjµ)a~‡¿Ú5à 'hqÒ“¡JÛî5–ÉçrŸ4¨ä¢Þ, ì%ˆ2¸“òa+ebʼj㹺5Tâ>P©x| Tª,¯3Eë•OZUÔ:¾_ͺPtÉ}ܼ\Ûß8«Á\ÊŠÀä=aUˆ.»µýuYæ|‡=VóMVYÉFýÉï³Jãßø÷ª­ŽR¨³§½xŸ*@6×Ì éçÙFŽ! ÿ¢PgÉ-É!üôòžçSCfiòë!ú…Ò†\5“½o±çÀâ’~:÷Ô¶s¨aìXÄá ')[,úPœ½.„ÿ“ Æ’sM=U~gɺٔ+¦mÄ)a%œF“r¿˜®ò;;‰&œ4»¢Mj“Û»ÎCÔ+¶¥^ÿàîòÊ^ê~qÙºŠ»_E•‹#kïW7S¯ØöÃ׻O•ï×ɽ˜ùEˆJoÅ«__íz¸&ÃÏ‡Ñ¿Žºk/UB9£u=:±r?值Î"ÑõèXrò®‡_Ôm¥¬Â]î#þ''sˆ.JMÊ”¤ÙW–]È‹cê¡”§áòÉ ä¶µŸÒ5£¬±lèNQ §ûòÉ L˜$y7©Ã6ªù¬x4²9Mr囉ôê³ÃñÊÔ'¨ ä³"}sÇÝV8 YÿÖwü1£ã’ô玻>­¸²@>+ó+’ŠÇ^œOV oÅ5ÎÆ2ÂþuÉxû×à ) ä³ÒË~ëâsóÉ ä­r5–O‹¤ް4 ,ÏÊ=ޝwä“Èû§ž³± ·]úšcÁÔ…²@>+žk,d29wÞž›.I{ºüc)Н(²B á7A’¿Ï‰ø4€¬ø¾Hà7,å¶u¼û 7C>+ä…E(¶ YñŸr5Âë%‰Æ‚À²B€H+Ùµ"ý‹ù?g¢ ÐBÞ‚G[Ws} ÞþÊ.J’ÐìQÛÐúÉý#§äø¾-éã{ah?ÓJ]@2´Â—Ï|iŸ×KÅßõ1]¶œÒ ’ ýyyõq…å_Îêbš@qHÉ@P¶žyÁÿSÞ4ßÏJ/É ÂþÆmÊM[7š‘ ’ÀunvX~âdžÙTˆd jºi•ÒäþgçQ#’A2˜â¦ƒ§8eE"$ùÒ´SùžnÌ^:’A2˜»oŸÖ}²íË&±Œ*‘ ’@X“&ÊOì·ÙöµöÇöÇ ÿ¥X$ƒd@=âù‰ÓÅE'¥Å·¶ííGÄbŠE2HÔI Ÿ(1‰g¥õâ7éxWÑ‘Z‘ ’•¾% S¯ÆU_òö](,Û©É P)Õ¢4õU‹©ÑËõןac(É PkŽ(P˜ºUsbíD³±q¥"$jý"ö*Mnl¿¶Qˆt*E2HTÛ/~PšüTœ0aéM¡HÉ@ÎT¼°ÆRÇå÷Q'’A2€;nQšZ\Ó–ÓÛ”‰d bj|®Òä¾a¾¨˜2‘ ’@4ÏTšœf†UT‰d æÎ«•¦þkC©É ºvtúȾɥ¿¼\ç/¾6OiÞ®¯s”q#$#Ü„í'÷SÕþ¼¯ZµKn/¢‹sÞ+Vñ†å )à7¯xÞâ[tì\ªmCq¶cÞ¶m`ÌÃN“dK’¡“¾âùÈ=jL©Þô#Ÿ¿i˜å’ î+çùÂûµ@Þ¼¢yK<û¥•Y^æô5·æžw¡]2‚ˆ%ÉÐWcq ã?už6ŒösôóÖKO_©ü~åã#ó çmК¬r浨³’?í’!‘Œ(é+®ÿUxYfûñ[kïPÞð*ßWyó çmB–?×%í`ÌÃM»dK’¡³¾"¤Àvs,4¼#3%ïò–…ê{YiSÑpKz¡at–™­Z2êá¥]2‚ˆ%ÉÐÛ–ÿmžßSvZvBJñ’Ö¥°Yç,9ßWKaÔÃJ»dH$# úŠ×¿óŠM‹Ï–Ÿø\­oꎌæûþ§Å}/Ÿ¬‡Nã´ø°Ò.AÄ’d误6‚{(LÜoúªâw½´o”OOÖŠó†iœ M ɈlcQµ5²f¿Ç“"Ë ¥_Ü~HdKv–×¼SˆOÖ¥CxmùT_³d’QÕWX„¨x/Ù•–~KŸìŠgUÜ/{ié†4l,ÃE‡ï¬eó6S)>Ýnfäµ5»úÚ%CM,IFU·¿¥W~ã¤L±Ó'ÞÃyYdç­°·ÞÌsÏÛ¯¼ïø<І± kõIòO{aͧ9>”[-vù¬oxågD¤‡¨d˜ÆÚc;çí;¯ôøÆçR†Rëê?æY}’ý ^»íÁÚý¶d£0“ž?ìŸò»×FD¾÷¿i0³¥ïßøˆ,âþôxVŸdD=ëMfƒÅ²V»ß÷¸Á¶jk¤ßôi†É(„ÅpsºW|Dñ‰Dz<ªO2¢^–}ï—¹SÚ×óciiî%Ðoii9®‡éꦯN³içØÁf1v¨ >ç§EÔû—„Ù>oâ|ï^âbz¾s=ÏMKsIJ%-í×ÃEißeÛ«? ´ú$#ê}çh5DS×óBŒt=|Eˆ5®‡—ª›ÞÞ¹×Þhÿb[qQŽOMQ‰ÞO‰vé©.š¹žoâY×ׄXïzx±h6Ê»ú;IF´;àhÔÏh÷ s®t¶þVcô·Â[<ؾf4œþ ñ‰|z<ªO2¢ßdÛÖåŹšýºì¦çƪwÑô°­K™Å…Ÿœ\M|"žWõ[Ú«O2bÀï3Ðîºãë…9þ!û=³õö¡¢”ÓÖhky·,‘Ê}¨H|ŸWõ"Ü’BÔzþã±w|Êñøìka[(õÝìš7Ï}ÿNÄ'rÕ'ÄWqÞ‡îó?׋­JßûDÛÈÎÛ–z¢Ö˜¿KçmžÒÛý®d,µõ›wõIqu‡eZ?$~TúÞääÈÎÛÈó?È÷˜·©Jñé’ÌXjkÔùïç“ h¢ökJS›Ž®ÌyKzJ)>gfôHÉЩJÛÊ¥ÇÀTμµTHϬÊ7’A2 à±@~âm­+yÞÞ•O‡‹<’A2t+¹Ù1¹Is”7³#0o~•KÏ[•=o$ƒd@ÁgÜ&sŒÃ¦SVö¼Õí°ÁzæÔÈБ ’¡c+«ÝqÜïëg\WXùóÖ)Ã_zfÖ¹–{< ’¡kËë´ZVîÅ‚WªÝ~LóV»Ù'å³fXümÇ7’A2ôí÷› ]¦o÷¸gÂáŒÿžS}\‰.æ­‹¡ý+ó=n¦¹|Öà‰ú˜7’A2 hA·xïÓÒÏzúOÝÌÛí>óÖP?óF2Hå®›[vUv”0o ¢CÖj’5G @2@|@2 _ì÷|îüÈöÅú|õÉ€º&fº—KO‰yÔ$øQœ¶ÍŸ·EcNÉ€&Z‹³Øã3Ë Þ£ ÐDª0\|¬É¸t³8-j€d@'ë óõgõJ4šŸ£ ÐÈ«faÂ,,Q häh‚F‹°   ÐÌãûµ ›©H4³×¶¾+Ì](H4Ô˾`âw ÐR¦mSºeÉ€¦®2S©H45WÔ=I@2 ©’ÖoS  *<É ðÈ€ÞQNþÓR6ü ’ùôø‚ÿøï‡ $þ""ügA>=ä‡d ¨Û8®h;YÈf $ƒd@>=žÐB)>lJ“ ’ñQ½!íõø ’€Òãû¢Pûc $ƒôxn{–(…­o ’A|dS ü½*HÉ PŸžò=•?ªôãDÏÝx‘d h¶‚Ìb $ æLÊô~þêfj²‚Ðä¶-ñ~aCwв‚ÐL˜äûJ‡mTd!i’ãøc÷€>·ô|dýáÔ'¨ ²2·Gïî/Kdòþ­ïøãÈmûmÛfÙ¯¸²@>+iJÒì¡Y¼×8þHùÅþ5;ÏþõpCÊù¬t-²|€¬@Þ*gX+{épÊù¬\ØÛîÆÕdòþ©çøãåU ¦.”òY¹¿ˆ¬ B;ätÙ'I'F,°?ž:œª@>+™—¤ÂGÈ ŒËñÇowÝÙ½çBÇÃë·S(deÝ=½úöÿÈJV  çRŸƒž6ö¢( +ÑĵÞÏS6Q€ðù??OLo endstream endobj 93 0 obj << /Type /XObject /Subtype /Image /Width 1001 /Height 628 /BitsPerComponent 8 /ColorSpace /DeviceGray /Length 18034 /Filter /FlateDecode >> stream xÚí`eÇŸËhKÙ›ÊÊPAYAñCÀ* ,‘"*CA뤀 UP‹ŠR¥‚¢UQ+àʨ µ€(S6¤l eh)”îÜ—ÙfÜ]Ö%½$ÿŸÒ\î.—Üó>ÿ{÷ó²,€ORœ÷tTOÇý^ ›àgäO¯+kÿp¥Ð¾CVoÆ Øbó-uã/Xîº0»nÓ`ü‡‚FdÙî½:ø©ô;ÿÁUÌX?`z ÿAMË·`!ü€î“„ŽNì à4üLèè‚Æ°~ó‹ù;"²8ú  à¹ÐÉø¯Rè àgB'³¿:þš£CèˆÐQtÀÿ…nÕ¡à‡B·6„€ ÝZ×:þ'tYCèøÐÉ„€¿¡\&tt™Àh9Gèh|8,€SrqÿºÎ 1ò!X _¤ìüî5ß~8éÉ^mêè*äòÐ|þsóC;:“ AHð-û´NÞŠ ™¡áy¯æ{ü—Š«µò.eL®Ð—Úîl›ñž×9Y)±’óŸnAL°A™ŠþšøÐ“|—:^m.[šØ°AB™Ð—ï3à¡“þ?k®¬Ší¤/·7Êd‹ºßžÍ}¥ìv=tq#³c]ÿuì»^ÔyEAšLÿ[WÔ¿lL ‘l³vûRóNœQÏvj‘aØ::Ð\]¸<ÒQ}¿’äïêß¹³É2›‘š%;¦W¼Kn›ÏWt'èé =u =^BÊûŒuïÜhY×µ™óÍï"!Ïì3% µš&qÄ‹Õ tªFçB¿ò‚¢Ëf]48¦ÎÅŠûÇ×& êŒ?`õ¹ÌùÝ;¨©¼¥s^¡'Ô¾%Q—‘?JÌ:‹‡×ª*X{˜kõ–½÷ÉÆd@èHKèLÕ—Èóƒhªó×OnY=®ˆçK!t¼­s³þs³»þÇDØ–Qçb¾¡ ¾F•å· Í)q~ Ós»éÍЧ]»Ê…1L¿C0&ÒäF\µ6ªÊfó™k\¾Ò=ÑWaP¤GyR“ºñE"^,¡F@bèÈ\µx|û:˜)q,Š"SE¾æÉ(ÂV¤CVŒ¢½'rß v&°¼FÅñžÀ ðº2žËvuX·ÀÈT-º2g<ú ¼XÞÁb€ŒçÊ <X^Àj€Œçà›À ð4¢±ÿV€{€Œ=ø&°<†'ÈØ­ªsM`x O ±ƒõV€çðà{`+Þ*A{t€Œ=0/àù2vÀV<Íùh™ÈØXð¬ÂªµÄ¸L`À“eæx©toYM`ýÝnˆ#­NÞ cË ¬5ŸEà>U1@ÆæX£Ÿ‘F¸I ±GåÖŸ©F:’ w¨Â2ö0M`Í¢{ˆ.5õɨ ^žs€KLU:@ÆE³k¶ØªaÙAŒì}'ï €áèPyÍîÃ*Ñ»)uXnuN•±Ç¥Wëþo/›$#Ùvgî €A3SÙUuÓrßÎ1̃™fï%1@Æ»ï•={LAòf9ßBɨ …å¶»w¶j}´-™2öYËšÕ®)'å(ï €ÀaBÍMœû¯tk“¥ßÔaŠ7µ&%9r__Êù–@¼Ò²¿îEbdxsóc?¼ÒYAJ¥nuåj'íßDV½i¼Ç¶3¿êȨ}áFZ‘Ê.vî €€"®qÿÁÑwNStÞè7²&>fD¦AZ•ËCBºOø¾ð °h7Uààvzkq¹•PÔ|?kâ°ˆZÂ÷…þtPœ¦mBõÞ°¹fïÊ6ùå}à÷üM‚á˜z¿R±™¿ 9³Ãï €@EfÝãÆ–,³Ã#¢Œ—ãj‘ì+½/Ý­Y®¸/‚_Èf—ùž(ƒ ŽUÈ)d­ïÞYÝf„\èd#ˆ-)jmõÝû"B:7*ª8éR)›õÝû"Bº@wø dº!¥ŠàOU*ÕŠÕ*_a =¿ t€¢»ù›~Œùx3ESò t„nÙ7pb°¶àN2å/>^RЄÎ/ô(6'¡‘Œ!F¶BÀgH2.vþ²¿gq‚l$¡Dá×mtíqok t|„+«ÝІ<óÖÓ–ÝPÖu[“ ¶ Ð~jl© ݶÖ¡¿çxL¨Ü$vQ‰Ð¹Ãž0mí{BNøÎX÷vîëeøð{ò>oKúø $B‚aÐ#b+·ÏM­¿Ógnñ?áûºg߉¬r8ðwöÒëœy=K¾Bà´‚ê‹}ô¯Ù¹¯e—¾XG~̉÷:P‹]–>‹eû8ógåU_½I»÷U~í„:-Gw~ÉÙ¹]¨ÉÄ­êòó…Ú÷Kü+©•uî³÷éÈ}åŸK=z¥>üŒ½˜zãÿ*cËÛËÙº]åÝïç]Âèã ß ŒìØ}_>’z®Žüˆì¤AŠÐ¨äbÝö·Ä(Wvï å ¢øÐ‡o×ÁûÒ\?©>u sÀ?¸©2(é†ñ] ùÓth¹ìμoU§|ºëð}Ý<Ÿzôr |H‰¬ÿVTÎÑÚ|Ú¡Ï&©.Lª\ q&Õ0 ©ökhoÛ€Î9Sd/øxõÕñû*½zL}&ΤRñ\ÒWf9G«mÜ5;Ÿ)KSKÖ+Á¼ù<£Z½ƒæ§ì¿[1â·ÓfyÚå-S6üÖçÍåÄ}iòΨO\Å‚Ë@ ì‰PŽ\‘næ¸W¶½Ö¨¾P$·ò-1 µ*ϰܻ±½U#[ù²H¹åä¶w³ýáÁèÌ}éºÖ‹àe ªQUë{ØfgîëògKxUÞ„ÚÇ¥9tñì]fU‚ÒýÆhÎÜWºÖtÎLâ,Z&×x‚Ë7Sãµ*?»9Eþ¹ÔcWP‚UXn¯6‰çÈå,[•·£[cöÂjÎÃÕµ®A.¼UÝŒèË›Ñ$3›žÐ•šÅlsºˆ¡kÝÜ|O¡£x‡%ÊÃüuËNÃ*¶Ï'ôbêIÊݪk=WfeÐË_M}2ª‚—ç`-7 ýF üYaè=ËJŠdêŽIÆðm÷)½z,5=ßôî„úŒ¹Ò•×ì>¬Rè½›R‡å°pŸk2Ái—5¾±â D(ÁçœQ›f­_W«ÏW˜©ìªºiyòÎ1̃™°p;"¦X q"•à/»Ö5GÕêKÆ%£‚rTÙw¶j}nb'4Ò  ÁKóa&Ñ)»zL}:O[)JU§^1ìšPsç©WºµÉ‚Á€{Ø vØ;6òP >7M}<³ô°Z­ÖëøKùž3¯´ìs1…nsQM=I‘¶4U«ôëÚ¬½Þ4Þó¶3¿ÂXB÷áü9µŽÔ<6®±À,·ÑwÂTB÷UnfU§”~£ÝT·úÓÈutÝKåö+ÇÔfܱM¨>6¢ Ý6[‡Ð=Å s•«SŒ‹ÛûX ˆ+tK yÍü›7 ‹‹KÊÊtcãTd1Öºd5é t7^7ÑS¬ùK_:JVÀ“uô€,º“•¼½$ô= (dÔê"Þt@É ˆˆe‘Ѧ1nÄ7çsË!tÑGkíêãþ,ƒÐÇù›þ·(M}øìõ2×¹ù@o Õ$Èe¤ Zc’Ë tàYÎÐV!W ›Ç–]OOMMË*ñgWIŽ®es#ÝJuÁÔ0æ]x”v¯ ÜFúðÍe×ÏV§eAè"“¿¥…!̶Œ tàQâåò|ꮊ¼=ÿÒQõñ‹9å~ªs¶²ÜNÖzAÚ¶•ŸÇ½04¢U5ÆåúÝ tàQ®ÕçÏÒ·1æQ)4—O©SÏdú£ÎÍrvò„Î ÏîXøîËÃ{µ­®Sw½ö÷?ùôìïÖþ×]AÄ0wmF÷ð0_É“yŽ\¾u õ®ÒìsGÔGÎ^+òK¡›ÚåĺzñÅÔ”¤„Ø1‘íÃíeCÂ"EÇ%¨¶¤šføkÆiósEÃÄ2ëñ Š DçÙ¸uÞ­-ç²L…™é‡ÕGÏfÝÔø‘ÎÍ´å®Î³S·¨´ê&3ª{L¬NÝU¤É2RÅêØ 2ì ø)p“’'” ýg[om{’ï#š‚«éGÔ‡O_ÎÚfꎋ֪[^©î¤”ÔëBš©-¶?qN¿i/¤W,L ÜE3+¨óÏ–A 5ÛŸbÚYf±(û µúÄ…k…¢gí©Ó»7®\×LÙò¡/¯IÑp7Ó êî®Ðõ’…µ¯U÷EÇ ò9QWSçæ5¹`Îê‹á¦À}Ž?ª¨ÑÍ<Ìpݵ‘–æfœ>¬>œ–‘#bØô‘t뤅•+›-›3ªzÍøbé¨;9Q¯n]8Õ5¨;yÏEg;$6ÊšýRùDè7BàÔŸ•Wá¤@ ®~3Ílá€Wæt¢@P˜}ñdªúhúå\Qĸ®æm¿[g‰7Þí~©*Õ}qVÝ1Q½Ú×0¨»W”AÝnT]Ò¿4ï¿X¢Hå=³¬ãpx(å™çO¤ªœ¾tÝÍ’üòñ\Ï‹“·5?SêNŠ×©»–NÝ!áZuÇ%jÕ퉅,Ê»ßÏûÐø8Ÿ”*ûE×/¥V§ž8ŸUàêÈšÍA<íNÙïÌõÂ=Ô=&²}£ºEkÕ½%ÍÓc€÷…ò—HQ|ß’S{áõK§¨Õ'Îeæ;’õ•Xœ”˾Á¹&ÑžúÍEVÞzu'¨¶¤y³a`¹ìÎ<}U§°â(¥yWÎP«¤]̲#÷ ‡3Íüxz]þˆ–Ê÷‰ú³ ê6ëð6 gÉ«"›ýÚ[m³3gŠì¬y¤­öüÌ Ú¢¼úè™KÙ|5вcê}{ÅuãÊ ]Æ‹¡nÓpËï ØkÿÝŠ¿6«#\Þ2¥aÃoáHÀ7äžuQ'w]îÎUu/Ò3õM­–]¸Òü:.½5uxG„UtxëÕ}Qb¦*_)' n{Kå_¢8ïêùSZI;£-Ì[6l奪SÊËqí…®¡¦ÃΩ۬Ã;ÈÙá,UDö®•#þI‡ãŸ”{îÕ iGÔêÃ'Ï]¾~ÓTšÏR«SÕgtêf Ð§óicꎉêäÞp€›”d_>{"U[y?}ñJ^‘†½¨ÝNM½Æ5KËrúæ/Üê®ÎR³b8‹¾Ã#ñ¨j4Åy™Oë–+9–fX™èd¡Ð‰Wè•޵͇³lIC5Ò£¼073Ý´Ù¢(ëüÜRèKuÞzu‡yw8 À]®Öë<5U½6ʺÜn)t‹ø iÅ0¾Biº^åêÔÓY%–Ew›ˆJôÆŽ³…°¾GÎaÊ]Ê×õzYÝvážÆ8€ÄkègÕº¬ÜT·:Y¯ã ¡à“¿`¾æ“kÝkŸBB‡ÐðÜ >bNjH”dÙy£ŸÔÁü€âzáÑ4]&ÀBø3êòG0_"ßàä7}ŒoæøÙÆ/À>øÿMå>Ý©cÌ€Ÿ°D1Ž+2Üñv-W ÿa}í6«­‹ïùqÕzdÀ4øçG1-&.0[d1þñÐZsZ?ãÈ[=Ì—Mn5à+=œbÁË÷s¥¿#¯§Õ¸ÙƒÃ`üXïésVÀÏ7Œ’}ûé''ö,~VÀ¿È 3¼êÊï_nÓonfÀ¿Øþ?ý‹fŨÇÇ=ºD¿Õ fÀ¿Øiú¢7XÍ2£Ð›Â,ø×›è_FèÖd]múöþ0 ~FK}cܸ ,»¥Aè‹§Á*øñŸêþžøðàØ»%é¶û€Uð3²»Z ˜94FÀÏòýœTØÀoÈV©Ž7©T7Œ›kU)n?à %öÍ6n¾A”fÜ §wŽ/íÃà÷ÄFÀ@ènˆc›l|YçÄ¡s2¾¸¨ôWV®H+?·ºqYt‚ðÙ0,Ò*·“­Îõ[duBÀêèfsgëè?Å]€!ð!¡ë‚п•Ɇo†)¾ÐMâ6àœÐÙÁDá ùÖ—lÍ#»»Ðê€ÈB'{û„ÙÕ€ad¡“Ž[_…_º«Ç‹Ë­þϽp§’HÉܯ*å‘­Õ;®}²*bØœƒ3¸¤rSAX7…Îæi¯¤`Åeò¿-kÄ©óŠs¸Zý!tª‚+û×-]øîäþˆŒìDŒA¥ÕsìÖº9JõÖ\š¥±09Þ#g÷²™OÞ×*X+keãÛï½wè¸èèñŒ¶ðN2¦Å·¼:·(*¸ t€wФ-Ÿ>0Œ(è¶Ágÿ°éXžé@ÆZ˙ےJ+Ì_ƒ€Y!ÞFÕ:UJ鮇Ö'yû§æ­?Uju,ýV%)¨CR9[92ޝ¹ë(±:UÏùÄ¡5¨á°O¶p=Ú˜äÔë/Ã㤞Žrr@è¡à}RßîD¡ƒÖðßW¨çF+Qs”ÏÍûƉ7«'L“õ&N„òþÌ©YwRÓWÖòŸq¤3| %.VÕ׆,:B¬y(¯nÆ­ÝDñ¶ÇßR¤ŠdêI.<éXÌQXJlw‡­º!ƒk‘ÊþÊщu•®-“L!3%€òs^¡»(ÀM0ýØ?Ñü1€i=;CB¿(pFÆÙ ËC¡Q(þúê·º\R¿) †ÀZÏ6kÙMå§¢.£èÐ$4 Hj¿*€Šîœ#ˆDÚ¹ÍlMþ C'Ÿwùãxò‹)tŽnHˆ@QB£Z3®¢.' ¡s+rCèGýÓ-åªð èËn]Â$tϬ¿ Bw)Æ—-ßȨûò2¸y £QµSF»éÑTtçtaoPm°œDjŒK&jŸmóuv~ð+RºÊ¢NÀ ~ÍŽ:2’‡N9cUx *ÀO\ 3L-ÒµÒ¢¢Lëµ,‹ªèÄy%*Ö­ã*$’ûœj©ú50E¨â¡û-飘ûÅk¨ñˆÐJJ.wTè"†Ð]I%¶Ò6+±[ Kmù7⪵•|~ ¡;Láå{R~û.!~Fì«ÑÑG ‰ŒŒˆhÞ²y]-5H߯­sÖ2DˆizS|žò¤&uã‹$ÿ33λW$̘0äÞ65 yr[»DÜùXÔèèèi±qññsµôÒ‡÷S2ƒöòéœ3D„îë¤tTF_…|—’c«>šÐ·.†_“Ž>5yÖâäö§eó `Ž×=”ŠÑ‡+ÌðýBMÝ8E‘©b^O~/’¾ò¡í”Ä´ˆ|~VÒß§ìË4“µÙ¹<4F׉jºpÐ/ÝÈŠQtý[ÜKBèÞáÊoS#둬Ýã3Úçðp¢¢Ç´•ó¦ŸÎ7NjáúEйPœPû–D±J¡uÖó¤%={;É;>ýé¿yN}.?’¨C’ehO¡ _.ã$‡‡ÆæÁ >Æ”˜–¤ˆˆQ]sþ³C˜‡6‚Æ®û˜¨t˜Á·Ø÷Ao…¼Ç;[\ì#Ù’ çÆ0=·{ôœ^6Ø!5î6j•x –ŽÖÕâB<=@Æée“íP'¬)ß<±µ}c·Î E³¸a½„Ïëܹe“íÀ#ãŽÆ…SûØ-UúЛâkœì+¹&Þå&·òú)gÊìÝβÉ:—"¨Åô#Uý3 t#¡Z§]b^/ýi9éFO+ZöŸüÙú“%östr­ŽE÷òµCµÆÿí‘0ÙN…ó@·©OQ8F>KìR{ú‹J¥>»Ò¾Ô0Ä…±7ùqŽpñý[™~?ÞôÐÕ3ÎÉèQç\öÒ«!JãÀ‹· ESÝ»£Ýq\øÌ»ºIÎ$W|ÏÚ:‹ÝòÛSDâMO~…¡è¾—ÈTû~ƒè”q³5u5n™>ÂÕ;Û^ôÀe·NmO5›ku®¨µ¹"fO÷AèŽpjr­ê/€+ÜèÒö‚øW-3ø¶W7d5‘‘²¥yq£tηl2°$e°ìÖ9ÙÞù®¥æ~Þ0=g¢¢VÙ¾&ªÁi1‡­}™¢$ŽY0²Îäîa5ñBŽ3Kù·øÍìxËíË~ÉFÃÆn“Ÿp«bÔ^)þ2t¯ù[å Ä¿hV§Vgu¹Pw¢8OÎ €PRWãê9.Í߆3¾AN«Jäjw"ÖovçVú pŸ“r‰ÇïÀïGÆ¥¿Òè=ÉV tßà™ÆW8tN:¯X¨×î5oÞ×\¯ó˵êmg!t÷85AÙrÑMo~#Ìø!›™ß¸òs®EyÉôbOéeÃëz€R: »GZ´¢U‚—#ñBèþÇͶC9Ëíd«s³€aÂJ×LÝʱ6Γ:FžXêío=…öt¿#®&÷‚çd«s‡ëè±Êu¨Ë‰Á¡1òIXãˆðì™Ç:"tgVçÏüÀ »/Ö^_màõåˆb:BæþÊU•§XÏõu´/:Ç|;Bÿ”ùØ^ÁB·ÏöALgU‡Á²Éžc:yŒ³¶ß¶’6±‚B'{ûløˆf!ÝfË º7¹ª£C ýÂhe·ðXWWKjA˧Xq…^þóÑ]vö¦¾›ªüW`ž¡ßýÕ:—„KfÎ.Ž=0ø{¤¡›\Ëôñn¸ò1ãg~·ñd‘=¡[رšªÏ}§|±¸ßq u³ÿ„n²¨FË_½ü•šgõA¨^ç¯~ºj_¦#9zÀ-›lU˜q·™Â‹BÏ¿íAQkEqA}®@¨î‘7Jþv¡÷¿öÂÔêŒ~mô  íßÁúÀŽÝc|×XQwª/^ú˜†bNBרZ‡Æ£3ÈMNÜÖhCÕ|sîÜÆ2¹>“’UÿRï+ö„P•t®±¢nYÀ{BÿT¶^¼«|y›ü™óª›¨›Ü}±Ê¾<ç1½Î• î†ÐmËíä¦ÎÏÍ»P%BÿI6G´2ûck†<‹øFî§Qý>Uµ¶åµ¤GCeÁÚ,]Ùæ¬)Ü3Я@Œ×k+oçjè;ƒåCÿÒx]èß½&Îu¯|;¼ݽસ¿v̺Ôù©nVÍ7—¼ª ø_0‘¢ç5óz)_Я.Õ;eƒõ‰ZÄgZ ÝéAI$øÖJè¥o0ÓEhˆ+ß;«‡,dࢳbõŠlUàé<·C×UôÍÖø<—e‡+I>´‚Bw½ö’~;‘\9z»¹Ð”DÖ¥ ú¿C’ܾñ´Ä¨úÔpŒ*×FÝШ à©<²E-‡z¥c˜.FÕF"f|)-,tb]o¦È,ÓÖ¨M|¶IèÎJ"«§ŽÍ¤ñ ¡—üÚŸyø¤[÷\º÷ó1M©æ ù‡<5J37ðéýà*Š—ݹ®HVÒqÚºKÍe±ú>Lyµç˜×ÑíJ²<µâ®IãZ¡çŸW§|0´ü7*À¥GU¯ßJµœµ1ùWñ©»•G×(¸¯™>:È|’}íÒÖÀz-cEh¦(¹°gÍ·qo¿=2ª¦n5B­Öip„ýZ7‘ýúGýC'iý""ºEFý|쬄oTl=–í@Î|}ÿÊÆt &ù]Ï.N-÷Œ=¯n T߬qÕÝúâ’þŽé^/רö§kWÀXþl1uyüs}[è´]=üž>‘ãº0ƒ§LŠà“ªPÑÝ!¡o~ó­™/Š+6öµèè'÷hVËø¬ªÕüÎûyòÅ7â?NüAµ~Þƒi:Žîù'å×ïçM}ú‘Îu´'5{èõï÷¸Ñ0œ¹g«i<õ¿)¦•[3U*µqóy¢kê“k»8z‰ÜËÑ5O‡îÐo,kìjÍBç|€îXøl·’ßÚ/ú#Õ–ÆfÖxƒÌc.Uv¯‘` §ú.(tž8`9ïIYþÍÇïL7¬oDx‹º!VÓ[«µè6pÌ´/Öu±A6ëoSœâÉD&wnJ÷·¶™&¼íM9« L·øÏÕiäfÑ}ºÒ4lʬ&æ\(©µXjÑŠÂ qýªS½~S¾?`¹¤Á;:™‡Äd°fÝk¬ãB'Ö¡s{M›—ë8˜–‘ín)ýQœqóÂÉó¦«ådçÁ!*iºöuý çŽÐ¿b¾åØ‹ànp&1ª…E%ì±IQÍ"EèÛ†B«Y÷GzrJ"ësܺ¨hþ¸ˆÔ·Ã‚ 7ƺ!ô5Š÷Y^¡ŸŽŠ2MWYfégšqËì80rü½;©æ£_ãÂ+D¡±¦•óŒÝk\£bø%‘í9Rºß³Ï©ˆ^jŽ+\®ó&[BO 8 ¡;ÉźP“—7ò-@ö,Õþ°²ëÕÀ@ Ú9ЫÇF·¸QB_ò¦ŠEÉŠAòúÏo0èãsòÍÞùÐsŸt§Z¹ÒwãVÎèªÐ _ŠÃ…eý)rÓ|Rè7ï;¡;’¾m†¸¡rW”¿Ã¼¢BEaëãÊ&ï89áÃo„žõ ÚgʽÈ@î ýµÚ¼˹ P1Ð$ßC]]‚:z•èÜR°›Bß ûÆû·ü{‹¦;ð"Pº¤3Ø•ñœz ݵڮ{B¿6Âë7|` ÉDº»OqR[Ù =.}B÷5»'ô›½Âs¼\ÔÜ4DÖýo$»ûä%Ü4渋†Ð«NçŽ }íwb ½bioqðÖô¿•h…sŸœwëÔŠÍpùã±áZzm6„n¯†îh–>“jL>&ŠÐo õâ|½«ŸoN·¼ºßÕÏÿ0ÞR‘›¿_¯ÎÌën\`¡Ç–^«™å5+”ù¦ÎVz‚Œ¨SR‰•Њþe!ôôn ·{ë>Ó…PûØ-nt?ß7>2ר̸œ¸å¸oêÜáZzr5’1 Þ9o.tÇ¢™ ½dNõÞjp=yr;ªõ›+Ï>67ȼIXwGƒmŽòã½öobë2Ÿº“‘Ý¢$ búªÊLBw0úW…Ð3>hYmV±7DþjW9s×Ô¿ET ‘ke>·aÍéîúŒ­ë!Gz¯ŽþÞ>˜¡;9\&³§n¹2….~¯yÝnô¯Ø͵S»ž|²þkg<}w—VOщ|âoèKOæj¼!†9Ñê.}ö¿ýdT_Cð/¢ê-góý9¢ÅFôÔ}H\½~xx›ˆž‘ƒ¢ÆE¿ööÜÄ_ÖoSŸ/&æåµï¹…dcVd!ÁD£ !¬zL†(—‚Ð¥Ê÷47®Yþ{ŸÈ!Q1º,]&kþmeŽî@ô¯ØˆßÞþèƒÏÄÇÏŠ=6ê‘Èž[ÖÕ¯qHŠFwôòô«|½jë1{òv/1¬9QøÈ9î¢Ï\gj­›>÷/$º§d¡K ÍÜ?2nî™4Ǭé,çnm%]Æ4K,­ì^s$úúæ]8²ó¾3úámõ¡ü”aw=ðÄÄ÷ý¶ù€y}ñÙm¿&¼Ø¯)QPûþåÚcâ%ùíÆ€æ¾f£Œ;÷ޏ® ªÌ!tips¯©9±óýrÝE©•y›$] WE÷ë–Ð-)ºpàÏ¥ oE»ïözú¼^^¿M·£¢cgù½JõGÊß{ölHѲjÉçñ±/>õH§Æº ÂMz?7÷÷“n4»]â*lþÌ–€¯›ÏkTcš˜ëŽAèà}9®ßN Ý¡2”rͺ×8„nýË•ô-½rlçú}0õÙÇè^7ØbxDPƒðˆ¾CÆN_°rÇù$gÈMh"fn¡W%åGJ1nîûõ˜`®x©ÑI¦Ê¬±{ͱè_â¤ovöå´´+ÙZ°Tšç¹W§–È2‡Ð«Ž|¹r’cgf´ ˆ5•oÝŽ0#~™ àáLLµFq×E¿¬„„Nfy’ye§Çyf²/%céÁoM€9:äèp‹5Mü@è+“1Ï…õEËO,fíò²É¢ Ìj™œÇx¸õ#_JÈ·(ô°›—ð¡§ÄBÒ\ìbîLò̃®.›ì¡óĈüöjßû@ ™¢7=äv:úCÑp°ñ~º÷wO•t\]6Yt¡ ÌÞþö7%Ÿ‚š>Á‘â] B÷KþîMnïrÛ›÷;3iËE{B·³l²èB·Ò¹y…ÁÍå;¥ÀGI§ t À¥1Ôk“˜Ìy%Ȱjxÿ‰óWºáHŽN^º“Uté’•ôÌ.O\B÷;4 j¶ùSì‹^™^]nú •<3ØsE÷ÕÕ,Eç>£ô´e)ff7†ôÞ ¡$ù°â-O PÈ]_n˜Ó ëãÐ]jŒÛ›ô…)Gûø¹_ŠÒ¹U[¿oýs¹Œ:沦-¥j<Ò‰ˆ^C¥&ô X­Å¦:ݤ¥‡ÿ”ýu+é”.{ôf¬ç„nVtÿêžz¥ »ÁÝ7tž¡+()‡ jèáÑc½Šè5Tb…ÔΓ lK–† òH`Þü_F×§fúÙͯ•Ûé^#וfUG/rLç¶ö®®gâ}Öë{«á‹nÀyyÙH{a æ1¯y$@Ò‰¦Š>óŽOSL¶ˆ0÷l²KB7qhTfBÓì ÖOð~Ìã?<Þ©H? ¥åÖ'fKYt9c=Xm$_»ì»Œg–ªZ_ûž“,{XNòµm¬áú»L½s¢~϶ºWlö}òYžó:w¯7QW*}DÁ(ƒjz| ^ø]N8ØíhŒsÊiöЫó<àÞf<ó$N’?]¤›ä/S44Ìí÷úX÷3‹ÄýžÈvžÏªöÒQ…N–5w²ô¢O†>ŸºùÇÓBG«;ëe§õT¢i&ÊðÈ×ý(S÷òÑmgÙªzg_XpL„ï9ÉÛ$!ê¡*u¨YÀüÅM¥ëY«Ð!tÇ-F¹Ü¡"§³Ëïþ¦xM÷’Û€úä°U-ô÷7üÚ¸¹çŸã"«ãg%#cÂfgÚ3£•õĺÇÐýEèoÈ—ñ;(ç˜pLJ¬ž×zÀ ]óº,IÈOÈU¿<×¼O‘ÁU›˜42´ÏNãæCTÛ¸•qßǦAt´iaЯcgš>½”e—F Œ¼‹ô#}êà Ð- ¹!tBŽèB/}V¹Ì¡<ÁÙåw³n¿ë:ëBçâøNSKvAì+K›¿GFš‚¿ÑÇô ˆŒœÏ²IQODG?Dº,]N’4#+¦Ðþ-¨óú€x‰)»l[IÕýúƒÕ“Y'…î»Ü¼·Õ%NGðƒ%™8Im¨«¤S÷dýÊ2‰®söå•B:wJè…U,tÎ_.YªI‚Ä„¾Ÿ©óÊŽ*úŽÖM÷8ךã Áo<Ð{ÅQXd‘‹]µÚ½G²L²™/Â÷—¿8†ï;‰uRèZ¾w†Ãg„;[H4¡óÇørvȤ¦ÏR+¬ÿ^“è–ØVB2­#Ó+IXèyo(d°Ž ݹåwsÿ×p?럨ÿãÚ»¡)˜!»*¹›MñP›t¦g Y5ºð±µ1½¾Ï·òáè_$®Ð‰Û}?${ê.mÁé¾(ËLèB¦å|WÞÁ'ôœ„&õ>×°N Ý¡9'™=Âû©ÎÙçûq=§ƒˆyXj³'ˆ#›tL+—î!’Þh¾€ƒX!âåè¼ubýAèlá+Ä#—õM*0 ]È´Ü F6çЯÿúLõ“í®‚lž˜í²ó©Í[ôW³Ÿ¶Ý·V¡Œ–^TyŽÊ–£CJcµÎ¨ F±Ç„nYùKè¼1¾ˆõ¡³ìâ ý’ÔLõñËÌê蜦%þHVçµÐßyñ¹'z·’Ë»%äzè>=rÍouÎnÜa»ïÏØ ’ù}ÞìЩjÂ! ð€„Lû9:±ž:q×Ü}›Ô¤Of¼p') 2íS)trÌ 6¥kÞ:º²"D@æúŒzýÓ•».‰9ôÔ@ùû}]úßü7ƒß>ÇnÿÙm3•ŸÙ»aù+ŒÒ0,À¸>:ÙyzT}Zí°tñuîr¼©pþ}CíÃ!M;öí¦º¢öüíB'Vl¡³ÅÙÙWÒÒÔÿ®úöã/íÖDû•¡G¾µtw·“ùZHÑW¦ÌY÷V¯`¢È>Wž‘­týÓ7ÿ]°ŸeéUG¦þ%oø•ÝÝ\ƒ±¾Y`š´ûÐÄwuNn‡–-¨¯ióì-Úg¨Rs½²{XÇ…N¬cB·¦(íŸÅ±ÞDòöOÍÝàV¡[ýbÆ âz8½äÅÛÒʼñ/P±Cpãy¸•êý •ûž“×4sôa-j|XàPcgѽøõ®Ïº*t²ßìà\2UÕʺÐ\©­ 8Úu¯9^²qph%ÿà‡²“˧?Ftë°™«Ï»RÞÛû^Gº-A̰FWF4"™n]¥â ÄKò7L]†Å…îz«G_aíu¯¿ÐÍ[ œÕ9wAÝI¡§ï¨bÃlæ‘\iÃÈè!µ~Û¬{å3­°ÐÉi¡ÈX÷aTk†?—|É ‘LZ—Â^ú[ÜZôgÆä–Qäqq€s¾­ØcXª˜Ýë]T1F¡´®¶}ÉR6þ¼…ÏðGÿ⺉/VUÅp¦ÙáŽW˜·ïüÔS³Gš©àUÖnß´ÅeÇ?]õ»ýèI£?ðÒ(‹?ªk³ˆÄ'A¤ø^)ï©­^IEèÆlìàªO¦Œ}¤gÛzuëÖ!YÝVï8.î»MiÅ^H®•¤ah*2&ËcSÅÐ9ÙTÍíÜ&…ù ÐÓ§>ò›qóE¢Lû8­a=&ô´4 }i²gJ#FVkjš=O¨ºø^zÕ’5D[aL´l¸§æd1jèüÝ<©¼äG¯¸ŸÛs¤Ä£>ãÄÈ8M}lÜ<ùÅòK¸ÛK]´5?%ÓWUæDÑÎÕJúùY÷—Cèn‘T”û¬œÄT"ûfìÜ<—uίtÿT]>ãÔØSé"¹>­0nÎ;±B§Ùîþô‘º‚Ô(.ÓQ¡»ßëå“ó!t÷8Ýn噿䡦ù®ëœ£Ÿ B÷žÐÍ(74>4Ðô gÜüsH”in *ÁÔÆX¢Rí6n¦©T¦¦¢µñÆ`W§¿=î±`còívLè®Ç÷Êv¡" ¡[Qò†,ÆÞ9EíýÑ ¡wîî˜ýPè”nùÓÔMõï“Q¦øcßjÜÊ!2 ¼û†ÈbbD󎆣=î0¢š~ ¯Rùr®CBw&îOѼÁÏB]d¶ÚAŸûç‚#:ç?T-¾ÏHwI&SBóu»j&êt® ‰¹`ÿ©ïl|/Í£Tþ›Ø=ס{{I&ÿ"¶~ß T,|w‘ÅɵUtEµ˜ »}â{Ö¸ìR;&ÓõX‹,úû?6U˜Üç’æCñ¾ÆuݰÊÚ³rn±qä@†U«;/-…¡%@#Ÿ$ÆuÔÍïȃ5}‹¢ÞDuãr¬ÄåM&ì:„.U’gÿ'XúJŸV#‡Hû9ºd™ßD&Ô úKP«ã0'å"„â^îK0ôíém*ƒÐ%ˆi©‰r®î³S_!Cça/E—‹¥s‡–Sô`@ŸÜ1=‹ïXÁ¿zÕr@Þq•q3;u ìaÍĽŠKójÄ–¶Ë¯ºñ¥ÞCç¬Í8sž“ ´þ©z#ý6ÎféÍÉD²ç3,…îáe“p™%ú÷æ¹)tr*ç{Rpe¦›%`¤óôµY«FÍ286×Lèî.› ¡ñ•>>¯²ûu·tλ¤šã{|dFñÜE¦Õ$ÊŸë^‹/fEZ6BžãÓ Rè"²Ý•éŽÎÍŠï\~¬Nòå`@ƒêôÒ½ìOÞvüò`ÝCR¾‚WèN-› ¡2;˜’+HÖö’(B·òbÇ÷øLŒ}Küƒ>õJ§»°›£»¾šê)‡à¥ÀmÞ ¦š¦ÌªCtkº›:·~'úÇvºyþ@J7’éWª5®î¡ßJÝà¥Àm^R>Û¬4^ ;)­ŸV&mËå ÑÉ\. z,y§+BçXv¶„>»<Û´ÜÉ ¬7\æemI“­ÒfQ n/©_v¾Ë )nos%1r¦gb¾#qŽ,›Ì5hȼŽ>½ãïðWà"ÏPS Û€n³TRã„ó›uH—°Ý¾ÐÊœ:&¢S w¯9¼l2G·…¹Ð?–k·%´H5B¥0£è-–])Ë’Þ/û^ÂËF…Í8bz+0`FÔe“sìëœãY¡–DÇXV³AK8á[žýÇÌd’ËSx äè@K¿.°ÛHAè<±ì Ew ã§MÆâ¹ÒøE7oBèÎ ÝJçœ3ý!tÀ²‡›´VKàgäÌlü„.(ô’ak…„ŽÆ8 Èå‘RX'/üÍ˺ Ð ŸTªœÐyeÅ u |qTˆ—‹îš9éötÎQtçí€×8qƇ|•×ÑKç•¡¾ s`ÆO;¼þ•;ÐëºËB7_dÒ§âo‚ª¤ ðzyýMe>l±ýä1æJûÎÝXÝT9;Vzç{òÿŠËò ƒ•ÿî¡¥×TË…Ö ¼úìI©éÜgg#6<Û¥@­÷ÁÈ®³§­â/iÝü• tŸchµ~◨ϭ5Mºv&v‹²ey’й¥¸¡tŸãÜâéÆ-ÇÂßBaY±ÿ“ø3ýµxë¤cB·j„Ð}˜ÿêöXåÎçÿÑõ¨qó‚í‹Îq½-ö5/v&æžïòÉÑ9‹óÀ—¸ôù$Ó"DßNç`yþÆ«£?7n®1í ¬è9 þ9fÜÚú瑊_…c‰˜qÿjœ:Üú q­MÆúá¯7ÿŠÚmÜ_·Žq«¸çà¯`//ó$)ŠÅºV¢BFAÔ$ö´ãB‹ |”ÒÏãWV }—qsUâ0M’µÇ¸qýÎß¹y­­ ”ºX·LÄŽ g²,ÀS\{kì÷ÆÍŸ†>sÖù äœ=øSýr¦æ_BJ'Ö&¸ t€·YùÔ€óÆÍÛkõ2n]ˆ~ÙŒàŸø¯7_‹šbظ\ÝК®uK=NgéÄ; à}Ö~e ®{<²—©h?'<ÜÔ?÷\”±KU³æÏÇvèÊî2¦ý{µt‡¤Æ9]LkYÓÄ2˜¿å| 9É'Ãø/[Õþ¸†À¹Ò–Bbs`üš‡ƒ_Ë„ðsR1¹ßdÁ–ý­Çïïç†M"Ñ LkYˆDòz–kÿ.©úÁa0J`$ºq…Hô@࣬¥ÐÙ>Ça•€Ht3¡#Ñýžðl½Ð“çùäIýžÅ¯Â*‘èlò£OLØn:ÝÏÉ Ó¿,黉e/<¨ñ¿ý˜% }ÍäR¶lV§B$z°ý¡ÇêþnŽ×ýÍj³D¢,Õþ)kSˆDv…þ£þI?AŸæMa–€Hô§ô-D¢×›„>M÷÷Ÿyúç}˜% Ý[”±oÍ/ô ¡öï¥Á8€ƒc¯Ô¢Û_ø,åÄ•<6ûô¾”y·¤úOÂ0Rfç#²°©)7mößL™ÔXöèX‘1šiýqºÕÎ3ñ­ä2`É–ÙÇ2½ã+u•þÖy&Fæ,­Ýry9Çþ²%-¬‚y¤É¦ú­~ÈÕe¾mñþ ãªWŽVtaq s /ø‹–²Î‹ý¥q³«Hq2½X%…ðC—çd²¹Ž d4®Í©¯v«û…Ú–¹Õû䲯‘ŒFß@â¹ÌT&z¯­qoß`‡ûþDv3nqýEWxö—µ/XiqKƒ“péÊ:ÝŒ;ÈöB®°3ô¶°g‹µj.~kØ¿ôqFYg5ÒÎu>P|ÄiÜ]÷×;é¶?‘}‹ë/:ý n¦sÃ?³ú”€Ð g8x² ,—­x®Îïjn~®6½õ»„´s?˜<ÆÝsWûb‘|Ê|ÃÃþ¢EÐ_⬙ÙmŒc>ÙOÜ!›§æcFÐË $ë·{ˆ×¸†Ì_è÷v— ¿‡Î+šDøFùJWäÙ„{$‚7ÝÔÛŽƒXÝáû ?ù­ûB"‘„Nð‰éܬøn[ºâi/!Å®ÍáO8õôP«<ø €q7ÉWˆW„¿HTèœf"Ûý¢Å®[¬šø«|·@Âm¤MP«Sì5oÒ(UÎ0®ºëKâ Ý3þRº±þâ’έTÏõô5;Æ:z²£üHí“*›æÝ"äŠêêßA»NÑC9öPÅ›³´LȸCÝ —_á äY9"o2'þâƒÄ3T/îšñMl‹„Òz…ÅûfX×9.u ê‘llÁÜC넌;>Â'nie…Ĥsû‹ÚòŽà/’âkÉCbÒ8ެ“Î^L`S3êE Ýþ½¾Ì´›Ö w|W߸¥Í5H&±‹;c°ºÿûKѼÁÏò•›,'3p«u‘ÍC: „.nÚEɈ‘Ջ˲º­q}Eèlj)©‡ªÌ6c4¡k(¥Òg†„ﬣЅüé”T ¡‹žvš)º™@ åè£þ"töâíJ"9Ó"¡ÀÚ_Mèºú)¨~5¾/W©všZdTª ÆÍmR8~}¹J¥š)Sêb0-‚Ð i©2­E—¯R™ò÷£*•iÎ~ŠcÇwk«ºGߦ”õ±#ô;T>ÀO?hÿ|QC¡ )!«ÝëÁ:ºßûËz}ÒÖ'¥ñ} ‘i±Ò¥D¦ªÃ¤pÜ0óÔ„¼]À Ýv5¨µñý)¢7›í5nvuìx/ƒYu!•´uu;BoD¾€ÒâÝ­-ô ÝOù†ÏüÞ…ŒNîòИ‘£‹žvÙ=ôW¤»fúKÑݪ¿%Åèñ[èì"¹Œ:åùÈÕ¼£S9Ó4þ:ãÄO»ôÖÚòSKÇ1Úü¦‹®Ýk¢§Ý¡F2R¿p‚õ›î5vC2¦ùg7XB÷!n ÐVWÀµ3` ç,›kÕËÔo[ ÝvÀŒo]«ýá’JmýÅXm‡¿H’kübEЃ· i ›ƒ9Å %µýÆ4+íý.dܱ=|¢ü7Šdø?‡Í2[HcQ]¡t;¨øsŠûú¬«œÁŸI‹…¬Û?ÊîèH½˜4ø‹Ï³‘fL«U´&rƒz¯ ɢŠø ð%õ' $Ü3á0ãÏv0îO}ððàq¦4ÚÉ›n›k΂Üa}Á¯Š>à/ÀkdÕÍ›p4G€÷ˆjùŸq?õÍ ð_e)3‹'Ý^—¯‡yÜã\£>¹»²Æ³ðàM¦+ÞæL·É2,—ç6;B"wqwYƒÞÅðàM4ï1ƒÿ¶Fü€â3ØÆ}¶Ôo—dcܽ“‚çÃ_€—InQ}ÄWUv‡nX44¤âBŠÂéþL¯ט-Ë´å§ç›†Î.‡¿¯ss~Ë©‰LÏ/J`‘X7$ØÒºÍ¦^€¿€ª!cëòŠX¿nÇš˜¢’·ue$‡ 'Ëá/þAÁž"Ác¨3à/@ì¦4Ác„φ¿$„ž&çeÝJÊÇïÑ•./¾\ƒˆÊG›u‡«ý£‰ÛUFvp÷ã:çŽ:H8qºÇ”£¿N¿Ã_@Õñ (Õ'\qšsˆË&ªsÜ ôϨU9üT'­Ñ&\ùc¤¼sˆLgjž¡úO } UÉ#ļ­M¸—d4Æ›¥ÄtÊŸ¢ :7á/ *ù‡ˆ&І˜C0†Ø”4!E¿æ#CeŠwà/ Š‹—r}Å0…øÌUÖ¼ R^†¿€ªågíÃY—rÁâ“SH¦$åø ¨bJoÑ¥›ì¬¶á ¦(õ1—Ã_@Uó‰®,&K‚!<Áyqýá/ ÊÉ«¡M¸†Å0„G©ËÒ7Á_@Õ3UIŠx˜Á3ìÑæ~íá/@ÅËjÙ0ƒ‡¸W&[ Rà Š<ÅjjTRà@CL;ôå?ƒ¿$Ùy`aø‹¤SƒˆO§Ê“‘r.–øýÞ,Ìy[dþ"uwäJâ:Ynç Kö….e óû‹íÂ_$–pÄLü醔sÙ°$£û‚…yý……¿øH5Ь@:"á\3,±ö….e “ã5pø‹tÓ­²ªE¬ ÐQérÕ°Ž ]šº-bá/>àÄ]³ó0GÂ9iXG….Q ÜüÅÝ‘«•Kn`ÇBdV†÷1 ÛùYð_qGK}“ýœ ç¼a+ª«äk¶ã/|B‡¿H&áÈ^…ÌÒC‘nîÖ¶{ÙW,l§Ò‘¼;r wàK8Îv%à a…­'m ù ¿ÿÀ_|¹DŠ4, à!ì±|?÷0l‚DþF^ÏrˇÁ(Htào|´ÀzOŸã° øáÙú—3ž|xÄijºÍůÂ*‘è«{|Øûe,=È Ó¿\|I»ÝS­ÛÞþ̉®z±˜e{™E¢Ûÿ§™³M÷7ý¦îoV3˜% }P©îïóHô`§!Í'äWîÊj ³D¢ßù¸Žw#Ñ€ëMô/ì4{Þ÷‡Y"ÑŸ.E¢-õí2ý/²lAì:Ýöâi°J@$úžn°lñ’kHô@ þSýËÑQÇøC¿Ù﬉¾ÿ©‘£ŸùVƒD²»Z84FA¢¿cþ>Ë÷sRa$:@Jüu„ž endstream endobj 102 0 obj << /Length 805 /Filter /FlateDecode >> stream xÚ•VK›0¾çWpµxmÌóØÕf¥­ªJ­¸u{ à«€S ›mÕß1cçEV»+83ß¼¾a…‡9ŒÆ$ŠB‡¥”Ð0qÊvñ{A€r>!NŽ“* 3´ä³Ò›‡–QçN-¾ÁÃŒcßzöO\ßæ‹›ûˆ:Éâ vòµ„¡)ÄSB³ÀÉ+燻|.Úm#<Ÿ§Ü ‰÷3ÿ|sŸžXÅ”Äa q&ø#(Cc'¨”¤QdA'&YÂS­H''1‹óáJ$ÐB ' àJ¤d)³‘VóH! ’øÝ‘ .6÷ÅIš„¯ø‚Î|M$‚„r)>c$ƒ÷¿b æó vÿéWâæ_ï=Ƙûé#Š5j5C•ªÆ~WŽRu¨Pk|çwÆ^Rm89J'Gå<Üux2Á+ O¿÷»p$fŽæp¤*#)?§é‹üåAúz,yè.=æÂ˜z>s·plŒx ƹ;ÖrÀ“Ðg€ÌÁC­´Çý`mŠs2 Bt•+„nwMƒµõ|__hR Lvƒ¬„¬Ñ¤S @mü]tVè .tVOS±ÆMëÁ®Ô¢z¢‡Æ.øÙk­êSTÓ¡q­0;5Öb”earLåï{9Be()Õ„«ŒM0¦ºæu{ ö°%t¦–•ÜlD²C]ù¤ó·Åؼ€˜­LlŒÏJ>RÆE/ºRwNà‚’“4>/Ý7¢}Är€ÛݨÚb,LqE·&ݽkTåß—xä_cè‡aä>¬¯ì›€†„Æé+» 7Nô–-a@š±y4–žoZoï ´˜š¨hõy׌òØÓñ|–õ,ìkYê^Ö§mçncî¦iZ¼í X¥q¸V=ö0à:åÀ4ѬÈCì=vÇü&ãÖnœ’ÎNä|^ÌôJ]Ói½°`àúbÕˆ©µ¡{«FSûXl{!ŽwuâJlzqq•;ÕUhje'‡ö¼JÆøz³óI½¾fO/ËÊÞS#ïMÇ8@è1ï K”Ñ„À—Ýñã þ Ø(ÕºÅ2_üè' endstream endobj 94 0 obj << /Type /XObject /Subtype /Image /Width 949 /Height 1321 /BitsPerComponent 8 /ColorSpace /DeviceGray /Length 43179 /Filter /FlateDecode >> stream xÚì|ÇÇßžDˆ@BpMp—àN î·‚((ô-¥§x€+vP$H J°  Np— q»ýß]î’“Ý»½ÛÝÓ÷ý´do÷vvföýnfvgÞ#IAAAAAAAAAAAAAûáÍÚÉ}ƒr=ÿº•§KÁµy£s¯Ôwòº·xW;æNW¡GÝn¹&߬TÙeÉtAïG*$•¡X³Ü+u«ë.êvï,b§Hg‰kK’5÷]@´~o±tµ5 †Tû>@0è‚æ®dI-ñl)Þ]ÄIïí´½lh¿6³ÐWú4úW5ùò¦§ ¤‘¢­<ˆþØ—‚³ דG]¿f5lÞ$ËOÖ“H˜ü^Õät52ÍD´Wᢞ£Ê2¨# ½VB¾5«ÑѤáœÓ“Š´Èæ—LÌâ$]Poiò2IíÃübúruž¬#Fg±Ñž‚wú’i6†ñ¥·o½NgŸ.†EûÉ5ïŒ×9ŸFµÐw¥7pÚpaK‹XM÷ØpïRR!žÖø70ˆùSîÄÄs>j§¥[„Ü1mÖÓ“ë§õªë-ëWûu¾óvÚb¥}ჳº—‚S>s$WU“øÇɆƒ‚Êg´Å¥û Êq}ŠU¾ïá_´Ëdcr¿¥ÉiéA÷AÔ§+’ÙAEà\{Ђ£¯ÐBk"þèœî%ÊÍÚuG£Y™/ë{®Ê”mí½¾ºõa~µw11q_T8L—‚©-ލ¦\õé¦ï«é°‡ú@Ê•“Ú(Øé×ã_ÐV+àkd¨¿Štš¡; xDÿìÝéçÓËñe|Aégjþ ¸K—ªI÷x#÷Óäºú¾û.ë;üáäâ^%APuÄNíGÌ{*¼@+BÌFÒþq5‚šãöQ¿ë8)†ÚªÕl…{ô%äö‡‰Yà+] Öy$ë9ºKo0…—{&×UCö%ª«]Xî=šb:Føô}³®³«\°´Ü ý•;›ÿ›@=—Ý!~gjŽùJW—·"}Ó'z¶f–Ê—?Ô¸vZ›;ÆíU>iÖ¬ù|8#6sŸ¾O \;¯Óû>Rº/AíÓQ,í73«÷09Ï|¥KAך™´Çnж1OèÍú.yõæ?Ïþt›€zjM/_¾¡{„±OßÏë› òÞ“dTêYu›Óšü"'Ó¨ò•.w–ÒÊhRß8×ÇÉû¿÷´X¯hb;¢öªÇi|ù†Fì†>}3ôru Üo¼Ÿß«yè¤GŠ~c‘o¾Ò¥`¶ø8Í‘QnÆ÷aÓöº8)%£„½³ß`ñå±Ïv–‘OßWa¥À©i?û»c(ÛÄ}îýX9èç+]Š÷ý”íì(Á“üügO(¿ôscF*vðå±KøôÍú§«°àÔ8“/±;O³]» ÁrÊ_éê’,˜¨û®õfS·=&'3Òݽ¦|=Ât’?ßЈ]bاïç…¾D‹¬fÓ^«' üû‘ZÏúÍÙ  üÉ:ó|¥KÁzŸ‚?œU{þ–þhwOQ}VÏw¿Ì)Ö9,äÍ74bŸòéâár‡Å¢#ämõÖ¡æâ· ?Çs{¾Ò¥ ~VyÍ+ [o“õŸUiRÞ¼««“P‘yb=_¾¡»Ä€Oß’Ý¥~fssy;g0ã/íÉ]d~ú wbâ)] žü›{¥½—²’< ðt Õ¸”2pƒœŸAž|C#v‰!Ÿ¾u$™¬Ò?íÑ)žkpš@D8wØôÕˆ!r1­E÷œù†F“}ú2ã°k/{ù2{`*ˆÛ…3ž†µ+|‡dodäùèkqq¯ã#8ó 8Aš“µÖéóéË„çþö¿¦´—SNƒ) ØjJ Z>œµ×þ¡"ê¢Õ\+ª}اAýlv€HézÍã.Ç£Š))h­9&9÷ÂX= ÷£ÑRx†a!Zé âG‡¨ïºB¢u‚é P¸™­CkV¯@þD›ÚO´Ú1*|'VÔÿ-7¢%Q´/ZÐö½¯W´`œO_=<¯ïuÂA*<³ˆÖ>*ïwŸ;Ñb÷Ø5«dQoÌMÑê §Lí©Bo;L•ωg‘oj{çJ´,üh!¶ÛÎIãÿ?aÁöè¯z»ÇÀ^´? û$:NÇ»@0I~m%˜žÁ‰hDÑ:dçhbÇ>* ëû4^°ÿn:_¢}ÐÐe™CUúhh'ÿ³ÖµñSD $ŠÖA´@cI‹|äoÅÂm'Ôî¢}6ëî±4ܽV¬cÕú}¢²âolYlE $ŠÖa5Ki'ù÷‚B"{6€vœºQ©w,Óºd^N|cšˆ¦:œƒývù³ÿ¦‡95ºÅN´!N¦d¢e;‚hiÇ´Ù\QX)Ûj|ún»¾{Þ°f… ¹¾¡Ð ƒs%¾L׿æxõÕ]µu£®óc×ðáÜórì“OYhÜŽ Yú°¨·µvyا†|úÊÄ꤈¤% J­7Ø€&/ôñZåàæ•¹ÌÇ{¡1‹$nL÷7àÃùÇÏObQ·Ì—=?–„ü½GÉç¸û\4èÓ·¨Pó±â6ƒ}´„åÅܦÆcþ1O©eÌÖüd]þ©”m؇sæ§'±·ž}•bí:Òks›‹…=f]ÈL¯,QÕç†}ú¾ñÏ^ÄRë´!Í>œ7Ϙ×XÉr^Žvó÷Àз>lPJŒ’2óáœùéqÌíç¨[Gâ£$¸8 W}“{ äëE}Á»÷–GôŠ]ÐXPjÞG¬eŸ”4]öœöøýM#ª Å-²£0õáœþ!N¦Û¬^G +:,@,ô=«Å9„foôé+*ﯸ»¨• ¶º!JË%crôªÁ•À{Ð~|Ä©)¶ýý<¡ü°?.k¹‰~uruH›‚àÜhâ¾WqFøpNÿð0æî«$¬_ûæ$¸ Q Añ ˆ6¨¶ ûôýC(7YýéÄâÕ]ÜË7é<9tRð€®µ}ò¶švC±RrìÇÆy@P¤~·Á£CCCÇôi[§´›¬¾ê ZtNÓ?Q>œSßÞ—é6ë×^î£Ã Dâ5FB[ ]Ã>}OxˆªüÒ§Çÿ˜Ò+  ®Ý€Î}§¬8pGYú:9÷ÿ^2¡O‡fþþþM»}7iî')ßuéÃ9õí½˜ûoS±z­Õœ–ýûÈȳßl Ê~Á‡½…+ª'ÅÀ§ï_€Cx;øÄhÎɯîÈt›f;2º6ü½¥¥@ÓýW¹™Œõdœ õ'\¢©ÓÒ¨aŸ¾Aɼ%|b‚ç$™n~ÐRuâý4íˆ/û´S¢ýÅßîy¢vßž›X0ÿZ&§Æ…yÊšØÆ2£ñé«><ûþ‡Ââ÷GÚÎÒ„ç·bâ4t›qëv GvÄ—}Ú-×–º“X¿L5àÝ092ÔÜ–ë˜Ê§¯†yüoêŠoLñá,ýúüVìcµéRocn%±·#¾ìÓ®5KŒ£|0áÞGª¯‰íä~!‘ihÿÕFkLs̺›ÀÎŽø²O;ﻎ£9r\ü+õÄÈR?(ü9±¢>Í1>&6ö‹ÉvÄ—}ÚÿO§KÚ—íK(b´Ç- pø‡F¦£ù:,òéR/eº½ûÉ$;âË>-búE™™5´VÓiÌOD™ô÷bî¼JJˆ‘ñÁX;âË>…o¾Õsp‡(7ˆ„öüDÄÑI“O—Š•©övÄ—}:õÆOr_Ÿ½A1?AÈ”¸¯Ú_öéX\4°(z ÝüDÉúx/&6[µ×íˆ!Ò;Ï’²OÇÀû‘nÝéæ'"ŽNê«X¥bcdÒÕÿÒ´[æé¾‹‰‰ûÂÔ>û8bÍpôÕ]àÖqù4PD›ŒG*½ÞyðøÅ›Èâš‡ÙøSŽ—ýÜý˜¥kŸºÞÓ{¤¡Ø.­pyBEúÓço>|JLÍ$©ÅÅB´d‚¬ ½õ*Ä( E‹•‚°µ#`¹ ù¶¼ãû<£ü¡hó ³X‡I»«PmÌÃÊְhqÌ€p`GÚ¢½ØX?ÃQ´(ZÄ"¢þ™1ñ²ÿ?ÝS*÷La­Ñ•¢EÌoGY½ãÛo2pL‹¢ElÁŽ2Ê[Ù»²H|eze§=?¿Õÿ†v¨6Íá[´iwe’ûJ‘.¾òQ ©¾Ê¬3mP@/ù” ¹ûÿj‡Ñ<ƒv¤;I'Ðq¥Ü‰‰y’DmŸÚ“+R´§@ï:‰Æ. ò¨%ö<‹Æ‰P³Z¿5Ã8%éí[¯Ó™Ú§éÚá?}Xdr!E ;Bà9õš&BIâÚÚ`ÀŽ‘Z–ö¹Ð!+¼ü$=ÏÁ'¾byÀX§ŸŸ q"TÜ õvŠ4dG|Ù§CVùÌ‚zðô«F’o«ÉÛÚ*ÞDýE/ÐBM’67‡2óß3°#¾ìÓù˜Ÿþ§ì!_ü¹‘„å’ ÊWÄÿçkh§HQÃ<ÅÝŽd1³#¾ìÓY+Œ 9ò¦T{ÅßäöB¬$ÉÔÁE¡ÔXté†Èy5¯"T[ü–¹ñeŸŽÈPwêXvoê”S†^Hï#€|Ÿ#ÿ‹Ó«A¾Þ›ß¢Í:6_·ty¾lœñeŸHzñR /•ÿ•*—³ú]: DZGÜ’oœþ?žÁ“ŽJ²¤§«S§)FÛ_öé€Huª¹C3©4ªÑ^ýw, DjU”°¤äí¹ß9©ûûº [¯ÿhšñeŸȽî"÷:Ý‚rhVªiñ—ZçüÞ>” ÞöíØqø¼³>A³•oM·#¾ìÓy·~JßÜJ³P÷ý׿î:»R"l$‚J#%8Äuý µXò‚ñeŸsþ™ROHT¹éÖ…“5µ*äë½5«ÂNør`b#Èßqöñ¯Xv(ØëK»zA™ñ'ð]Ÿ‘v~i¯’ ¬¼&*kÃnÞü½{~ðîþûm¬ ;ååß“šåAÙÀÙ8UÙöG>§ôð|]–\ÃðMöΣ½³ºûàÕ>¶r|ûù[MÙýëÃI‰Ù»`x«Ròuô^•š÷7wã¾ÈË·ŸÄÇÇãï·ÕÿøÖ—LêÓ¤´€wýaÿ¼ÄzqpRŸDí_3kT·F~y±R\‹ùwö×ùh¯ˆ&iñq7ÏGFFJká`ddtìË´MAAAAAAM–Ek~^p ëA¬™¯ ´¦Øß膕‚ Ö̼eÚ{Z ±fü²<ü4¸Oç¥Ù{þøkA¬—/E²ÿÊûÈkÎ)6£Zaµ ˆõÕTñGº§w¯AÝ·(¶?ÇjAëåB¶hWMO$¥[•¢-†Õ‚ Ö˧Š?ò æû³EÕ«A¬˜ÒŠQƒ^äÙòÙ¢ýc Ö ‚X1a¿Ëÿ}Ú¾CçÐmu6É·¿¹µ‚ VL|m­É7¿ÅJA«fÉUÍÏóc±NAAAAAAAAAAAAAAAAAAAAAa` ˆmiE‹ 6Ö΢hÄÆúÆ(ZÁ1­Õð‡ AÑÚZQµŠÖÖÊ‹ªEP´Xj±aó˜«Üœ §Üôã£fDËx³á8Õx‰äŽró¦D’¨Ü<$‰4þ8jAÔ,‚ fÄ–9t5‹ 6…ß\k×,/Ãx±%âmK´b|N6êë焽oóÐ=³ï‚è!ýú_sÇvoPÌËSÑwtñ*\¾Q—ï¦-ÞýÞЩÒa@Æ8^7A,ÇíÕÁuœÁ¹t“^‡¯—HŽDH6‡/Ÿ=®_ÛšE ÷*FÏ—\|K¯Ú¢Ûu-‚˜ƒäÈЊàÑ8$ül*åñ´¸³’°à?€³_@p˜$:‘â[?ˆˆö—4öÑ>ìÑû ÈfŸ±DByA´ÉØßÅ•¨==*“A÷9îÄúi½êæ”lñݯ›OÝOQ?&›Z\PSmRúTÉçœøó»–LÔ:  ÛÀ1?†ýyüQw©‡ªOǬ£Üº Ææ8‚hòpZQA«õ¯Œ;éóÕÝóG´)ë,iZ†L]¼å赇ïâ³Â…l[Ÿ7¬Lƒ‡¸Wí뽡Ed¿7Eý‚†÷騴†¯€¸Lë‘á—RЛàŸoˆbÓãL>ýÍ•ý˦ hW³˜½]Bñ¯L¶)4ÂË$Ј˜4ÅÆ“t(¤<ª Yxäqºæ‘w·Ïù¾‰ˆªö_r1M±nÕ‡ö29IêSlôñHÉ –‹VLtP‰VgtªêúRŒh5DË¥f“v}ëFÔ˜rô3ýW²îïœÚ6?äi>ýÐ'4 ÄZ‰¬9Mq—³HÖû$¼B)߯ÅèT݇œ®jyÐì¥aÂoV¿fðMéíõƒ+€°öÄ_Lg½A›BxåR}¢óeNS”†„¬¥­.oe³_Õ4iT›+ZÎ4›úGM¨²ô­g¼ý{lBXoÊáã®tâЪù8\Ðü ·I&ÉZY÷qÊ—ô¢ÕðÖJ#Z®4ûñ×ÂNÏÞ[ÉÈJ j8íh¢¾ožûE‹˜ 馂…7I¹MóUm€&‘Ô#XŠ1-•8AG³l&W|úÉÃkêKSÏ~½=¸<ˆ… ãîxÎùŠÖ„˜ƒ«õEã¿ph×ï£)vk?mÊU%ÕÔŠì=êó.Lmâ¯^Þ¿%°+Ô‹¿‚+‚êcv<¡<üž3¿ðvŸpÞ5¢$s®¸É :Ü\´9À™áfm*æ9ó3{¿wB]êôË?uŽm @èµ(YóGŠn¢—¡9`:Gp '’ÍÓâ™YV™3.ÃüWW8âwYK:»¨Wi€2=fìŒÕx•»]@€È+,Ùàix‰¢E(‘xWºj­yãlÂqü0"à&çÙ{{`V`Eˆ«öúiݱ{Ê T;dª¡wXŠayš6= qt¾ÁIv_Êm… ïà+íÔk[§u­â.ëÌiÐ!xòÌym³À…ÃÓi$ÈdŠ¡ã–_áÃö_ÊQ‚á¼OjúpeïÒqmêVñsSNà„ntsÀ !ÔÍÛä­ý—òì3ãÕî—•OÜ$„Ný®Ñöv Ï ,„P²Z4 Õl³ÜC”Ú=Ìx±c"1” û 1¹ÂØ9`X¡d 1ÛŒW³˜hC´ù.¶D@—ï3¸éEkxŠ¡b—ðWs^.ûýªIq{4Žû=0òÂM;˜­Œ©ƒe=ãjáÊÔÙ €R˜Œæ€¡f­H<ÉãKÖ.WvÅwÅ‹pÚlš­îct|b)sÀ0Â5¢ËSïR³_Ô¸Ö0[ñ’¿Û”Ì:°ÊçˆѸŠ^ÏZ Ôå—µ6t[E‹ÐêvÛ1 :/_¢-eWŸ 82±¢5ŽQÐ,ßñx·» ¥–côqï6bì\0û5-Óµkßï6b}ÆJýÍQ‹¢îhÔÕ†3oŒø“óÿJZV´‡iÞA«¼Þ˜tq<.Ãæ¸Ì—$‹‹v£“%=Ë»Çe ¶òÓwЕ›&Gñe)æBi­;Qw_dâtº^£uE˜æ1Iý1´ô¦Þ¯qÍBæÂY„ˆÕYøg*3¦Ò/èX¸<¯Po e+£=&™¦¢pŠ6!­AÚ‡8šûûWPNœ1AS•[ƒ‚ö±9Ž8Lj‡fL%ZP2Í|»<'Þc¨>àZ³äˆŠRú„@»š‡L/6ŠᜠըÌhZ`á²Hú¿ì° ›Òõ¨qÔ<£óà¹Äðo€¦S&õÌ §&Äj¨2Qo;¦«^¦»ÃI Tà¢ì‰«÷H DÍ3>«]?2Ó¬vó‹+Ðëâ%qÄ,¢Myv5*2âBê²c mG—¯¨yµîk£h`‡8‰‘›Ìùãëþ÷]ûj>P rA€ï\=ªÕÓw6¹¡½QÌ5ˇhqr“k0ê.š Ú´ó+F¶,à^¥Í +ö_Ž{Ÿ´È–l”ÆûUã£æ™ ¡!ÕÐ,бbZ}LJh_í™ØØ¼[|D=4U˜B²-äË”A¥)…iÐc’ÚC ç}ʳÊf)J $wq1¨4ÂÞË)¬X5yHD›=ÓŸV«ý†e†\²í/k_ŠBA†<&åf‚錨ßÝé¢×é–Vmò«ÉYh^¼…“œ¦÷eó·ù ÂG©BäM—) å%VÉë*‡©h«›¿r[ÔØÎët7㘜ƒ§Ü%–ÑËÕ¹íï)JÇÑåKÅꊖa÷ø´9½«8åE—|¥jÙ Ž®õ|%÷ŠÖ1ÙìœÉUR×Gå4[KëÑô‚ ;Û¨·,fö­k‰Ú½êà¦kP—cõÝè#Ê1ù¹<7édHšA¥¹z[í÷,æ{—õ¹î#_!ˆEýcjÖðãj|[Œ#›s‘ÊÇ9Å…]K­·˜óòZÈkÄ›jby,ŸúRZÕiÍ•¤-ƼDr bŸÆ»©^“Ys)3}'ð™¼4^Á£¸lÞÅ+ù,ûÿU ‘â=WµmªÖ”nâ&ÉH´jÀái6šm ogzúÌülôi‡Ìéwa/q«¤’ŸDí_7oÚ¨¾šøWôóñ=ødÿQħ% £ÂGUÐJКÞAÕ=Ƙ—ˆŠê3Ø?Ù¥ÈbS|R˜õÉg@{ÖI|¹²{Á¨v•<åôô­Õ¢Ûàq¡¿„­ ß)‘q$RÎùhç#UDDF•Ô‡ìÙÖ]ÿR̈¢¯ê™ò¬-ZÙ"åYyMJ]äí³4ŤS³EË>W$ƒkÝ'²i[/ý9©]IY[Y¼éÀYáûÏ?3¦À™Ã7]‚ï(§1R P´cJ.d1”Ûæë:í³‰'gwÙ‡ºôf0[cLç&eÅþ9¢–\jõŸq×”€Û©= òÏüHæ¸P’nâ&I5{2÷[óɦÐr“O½ÚDôØÊøÕÓ”_¦Ì‹óÚy€kãñÛî›ü*ûC]ÙX¶ÚV­Eÿt7)gOj‹VýÐ!ôÇèä35ˆÜÇaÝ ¶QÆåy>{JìÂNžP¨÷ª«¬¦!>.DËŽJ~.€X .›L:-s…WÑ-R)£‘ÓŽSŒñŸž+n±¾pב÷9S,ŠQ"ØaÊYWꈧ|µ•"F‚Ó'?mìî5~ŒâdÎxÎ Aùr»ÇI:˜0}5)TØ8ÖvÊØµsÅvtrî°úÚbÕ¢Ýcô9ûJx¯“ÚNŸ w2úÞ×Mœœ;mþŒFX9ÄN#OxýßÚR C‹¤þRVä7§N›>¡A Öø/ã¾/ñ)}Ħ ˜Zðƒß¹;Ó*‡½ã9'èná†<Œùöã6D°@â lûŸN¯õ!q}(>Í tб yxO›îQî_sfŽÅÌêôÓ{øú(O羑fqæ$혠)ÊO‚‚TÏ·ª‡ú0á8â`ø¬düÕØâÐT³f.ÏFÖIœ‡sôS$PŽ÷n±:(Z„=E–0übz˜s­+fÎ\ÄCÖIÕ¡=t?$¯sï“R´ÄÆ(=a‹UÕmq¦ífòˆôhGAéùïÌž¡PõÅur:ÎÆæ8âXTšÉä[_ÇZ?²Åâ-E9y8eSUh,ɰ@†LZvÈfY"bÔ™ÂàKKz…sÒüŸdÖÒÅ»SõþŸLÌç:ô&Þ{ÄFaànæõâ¦ù@õqyKT ÿ¥›ã©;Áéö@q‰°x盥Ý_nÊïËv:…jÂ~ê?‘ªU/aÎp—÷Â¥ÑéG¼• O·HUÇKÑÞèÑË@ãø($Ý%ŽWƒº{³ž¨†”¿ìzAqÂúS¬=÷½gñM–аƒ“+nÐIßÑô0ç—Ø^âP/½I$VÐÝ{ÚûÂÕÐJøUGá”$‹U5Šá†áßè9x®Šk˜Þó$¨&ž¾^9I2Á¥û‰… ÍÐA’üeþ³`Uc÷á†qè,DÐâ¾Y3^ÙSÍ– ?Å;j Χ#ìëæá"xÇd2Ý ú¬ðüE·ÛtÑN‚z»šÖ_´ÚÞnº›qLfT£Þ­¡(ä Ë´?Z6¨r«–ê݆fyYI•ÓÆõPóÆH}E‹Èù¥ÕÞO!Â&¬g¼«ò£%KvŽ« ›ë1{ô ¿M¡>’Îq±þ€zØ=F”Ì+MÑ3ÞTÈ{)ûV²©ïsK–¬s=µ¾qÛ°ïmnùº.½š©«>cÃX¢{r$—¥Etvý[S<ž ¿+7-ú†#Vëp830ïKäáU/ByÚÌý/^´ê¡.)ÅŠ. Vç×Úñ|Ñ*Æ Ö»rn_aŒÛ9NŸÌ9QVè’ƒSãÿݤkiUfŠ-F¸DtYé£ñ1)̽¬ÄÊ+Ì]“·™0ɹ3'QsÒæ8‹•˜Ú(–²ëÀEO#\"š,)ªþiIÏùivQ®ÕrÚ«®SMÕ,[¡dÝÛ9µFvŒZbÄY¡.I –‡d¾Úƒ¨çÝ¡¿8 Œ&rF´ñ%Ú²˜ÕÅF'‘íÜAT¥-Äù3 u‰¢E ókùœÍ¯2Gì¥Xmêå¬ÿíUôƒE4{¸.4\s)%+@Ö=&º¼×Óëõ½á1Ä̪Êô‰D0g+\¿·l©ÎÀ‰ÜíaKhöj+è¢X'1Kb×pMÒ„º¤œ@Aá2‡1èÚÍ!™V;ûï×Vn›9Kôo"Ú²¥jÖZµõ$ïx hV4ÛÙl$‚l<õèËΈrL&4Tüyë_øw‰¶èmÙB„óÊ-i›Ê)f×lÖ&Ÿ"áÙÏÁ^çÁÌL69@Ñ"Úô뢰­òe¹œ ‘jÙÞqfÍnªÍõ‚sf×ìÉjNª8  ¡,«iørÑ%@pùCÕ öffX5gñ•×$zÑ3}ŸžØ h•Žz%16m ᘪ3H2©^){ Éï3QµÙÍ×Ìëί|+¨£¶šèõE´0„k²òl$¥½ò?°§2-¨rÁø—à´Y»å[AÍ]²á—ÇpžüUtžŠtKü‡rë}Á1f¼î͉Eˆ€£z¾€>¢N8H|üG¸‚áÏ6ŠÔ¦¶jcÏRæ Ë™Z J„êw΃¢E8aZ…;y3Ò,i#3r$ÄYåÖFYzÏv„Ô êΈ2Ô/–•.µU£_Õ ›©ªHc&G¬Ïƒ¸á;ª–M•oœÆP³ U»ó£r…qT¬o5ý³~)¡r›úÜkß÷&ãòjƒ¨NÈN¦ï¸ÓÄçI`s±6.CNŒ;€ªsïT¿ÐKæya$Új“¥åWѺi¶7Ã}”/¯2šUæõmË—È™ò‚GÀ̈Oh¤v °mGâ§Hg­HpŒãR¤;mc&ZŽ:wšéœ"T$'»^çívÆm ñ€ß€¥ÑYhÛv«Ykm-Áo\ÿòHcâ-'ÚÏ¥»*·öx¹•ñGíè yšM‹À^vÞÎZ©h# ”cÍšØBr”Nß‚Ê`W=Gp~Ï,êS ä·K/¦£QÛߨ:E›ìéo)Íò"ÚMÄ?Ùw ´æÔGFì¦ÆN·qˆä54Ži-'Ú Øf1Íò!Ú«y”óoÄÙôÅÌØ £ë9ƒgËÉ’ÇhÈ(ZËŠ6«ÑˈQ¹I³çÕy¶'ƒ_Ñ~ðm•}… EjròD7þìÒàÆn ®< <Ÿ8¡hõ ­ÔûœD›Ò(›bÎ:Ø E—&ð(ÚÄ~Ùφv¸¶e«ÙÏg׌jî P¤õ^1÷63cs-m•×&ò,Úµ~f^õº‚€ßÝã&›_î\Œ”¬_<뇡A­ZùË(\XöOSÙ§ŽAAA}ƒƒƒG„ʘ¶|IxxøB$Ce6抌.—¦h«¹¾U<@\y ü V‡……ý:Ivý¾AAÝšû—+æ¥ìó€³—ŸÛ¾cg-ÛúïíÏhmˆ‰H_]ü{å/ãúµ«[ºžHaYD¶µPŠ–26“°Mꚸ ‹A v÷ëðëC¶yÍzzrý´ÞMËæQ\Ú£X¥úAßËä<1TÉ(Ù‡þ2Ñv ËÅß¿–ŸŸ_óB^2Tºq+=7gô`t¹ÔkÃo®²¢/u|ýü*Ë.,»~ç  oƒƒG†þº8|çãÑwžÆg¢¹™íQŽiï »7xðó,ñËå­ÿмŒ³Ìê|*4î2dòü[${#›g€)õçùlÑR¬g5¶Iý'O¡³ìÓ§†@žj]ÆÌÞpøæ“x£†€ÒÉŠb ¼g¾§ïŽ ÝˆZ³fMœ¡p–K¸`.ç~¾œ]Ü¢€SÅN#æl>§6ñN:K¶Ü¦ =` ‡mRßÏZ´wLjá„oÇÐçLœË—$uù¡JxŠÞQF…£BÑÚ¥hy\%c*ñ‡îáG€W‹á‹=Ð}—žù@fÛ•6eæ\×´°Mê»Ùä?íÜüÎùATãûÕ—X”úc}ÄD§S:bcŽ EkÍšµÑfŬR‰€²³#žÒ|%½—¬YçTýº¦‡mb™ÿ´Ó?5s…B=–œKbYòÇe\‚ïêÝZ I–á¨ìK´GoÚ—fIÓf¿Z“h¿ž ëä nC$oõɤ@ýíëš¶Iý)€Iù]ÒÑ|ÿÉÅÓæ› è‚ÜgµJ±ÛpTv%ÚO…FØ™hI“š[kí«í#+PnÀÊk†^ŽƒÖÿ±½.°Ïž¡EÁ»çê‡ÝÄ5M$êÓĦ[.»íÒ‚íP³Æ«ÖDûlóÐò j0%‚Ñl[WY^Ø‹öáÒÖ΂¿^2þíHV4³§ì&ˆ ì^´äc»Ô¬Í‰öÁ†A¾àÔdúÑó]—jaD:Ñ?V‚|ßn2mnr¦p_¢¥,>ˆ²jÑ2}uí…•ˆ6#z递 òøbÙ±´édž_ J?eúò°b‹x-Ÿé ü4´ D5õ»fqѾÛ?¥‰ ì:ÿ¿TËŽ¥J爂Py:»ˆÐ^BÑ"Æò¦šüé«TËX¹]Ú¦„ÿ– ª‚*Ã6Þ·ðXÚ¸t—Tª¿™Ë6ŠQçk  üúTucåtiYÎëSA^­fâÊ…µ¹D›¼¨ û3FfDÑÚ6© ;ãô¥rZ/¯™ïI’û¥mÔ½á‹;ë_;@ñŽ3ö<æ²,fí¡Rn!fu4ˆ¢Õ$b—MeWÚNDˆÅW9MrŠba›¸ÿmZÑ¿´M×èSŸ]<ðÇ챪¸K·Ÿ´þ<÷ ½x ¢âã·ÐÇ̾Ay b«<ñfSùQ¬DõS#•HÎ+7ŸI$Ï•›QŒ_•ÏïoªXÚ&&:oáliÛ¿¡Óg, _6kRð·í›ÖôË'?Ó½\ã~Ó×È—û/~p)ËVºÄ?æ¾ë<à²UÖWO²©üþ£T#C€ÞÊÍí»•›=ÿ&ûÉ’ {Qj Ζ¶-V¤êâ]¢bÝ€žƒÇþ¶v_Ô£$;0˜MÎmß“ˆ…Lj¶•Ý×òEß⩜¦ù©‘=¶ ¶çÔÈ­Â9 »«&6N—¶=Bt}c6ÑòúôX:J,á8ǃÛ1­ <=”¦Ù¸ _èKMcåviÛI¿bíB´ãÄ{¸Îñ¬jv"Z@ÑšÎàžÂÎè ®’ùÔÞeˆöGáv{Õ:äî1dÊ)Yö!Z0SK‹ne|Ó4"‹•Ñ3ZÚ–9J¼ËæE;›XGû›¥ùžZÍË 7 Õ‹ÌÔ=ŽÍ{5ËÑ3ZÚ&'Üb¸™Îéf›:JâS´óˆÕz : eûŽ Z3iSË7NC•šÍè¥ã…Û I^ë)— ­¢ý‰øÉjze®š ­É+©9[ª ¢ý†Bš­Mi¥xË¿ôázÆš5fL‹¢E¬X´ÒáNGô…t&13i¥ÒÌ’ÿ´!N& :¿>&šò´ö™(ZÄÒ¢%³úä9«ç^«z–FµR‘âö[¾j_—}HH­ü?­ïqØHÍÒÌ+cʱÞj×¼m­ÅþD Lક’‘xëÔÖ%u@¬Ÿ–êdãBB^†Tý|—RúÍøã´™œÙ'Þ9½mÉäÅ x9çŽ5”ñiõ­s’Y¨K±ÁE‰^¾eý¶ëúÛÊ¿".<³¯›ŠÚ± }ÊŸà$¡ôK¿÷)U]ÖõUˆVì¶ ŠþA”Q!!eÝãäÇWÿ ÿ¡uqp¯Ò¼J€"ã×ÿÂW¥$ß>´rR ~yËZ´N§¡cç†o’üD(Ö9;O|£Þ=úÑ,ƒ¨y™ñOïFmšÚ­8è»/^É;Y+#km##÷Iևϛ:Ởþe 8ÉUœ¯R³^–¸•Œ¦ëÀ¼èß>f™Æ—f4wï³Ïļ•~­%Ó¬H0âž§ÇÆ…„TKçîÜj‚ÞwŸY0¤®;@©v“ÿ<ûŒ³¥‘ ·#7þ2¢S ™8ò× œ¼òà×9§ÏºÉ4+v‘»£-¨¿Þ6&Ôå͹ ¡ŽÄ@I’Gí[=kT·ºò i4 ìð3´_GmlËŠú^3õäOÿ.RCåÿq;Û¾ÓZ‰@-n‹øY…„Ô|eYK¦èÚ?:Ö¿–‹LI¾ÍzŒ˜±tKDdô­GŒÇ©ñÏã®\ˆ< _4kRp¯V5ŠÉ’×ò-L[qCǯÁ¿®¹†ª==ֳΙò•¡P—Wˆj2½ _oì]<¶] ¯f£Ö\ÏDv<Ò·T‡Ús 1—t;rÃÏCÛûÊÚ¤VwçºCÌìJ€ ìau±± ©õž9k¶°OÎòEéËÿ¶þ6ºWËêEU£NWñrþÍÛ –1)44tZXXØÌÐбÁÁ}ƒ‚Ú4÷¯äç“7wؘ·x¥zÁÓo>tƒÖßÔ!'xüòISlôå"M uy«¾Ë<©17!þôÊá=Áý›ŸÅ£;Ü©Ã| ü †â ¤Üùgý/cƒšVð”·JZ úõ€fMú=€gX¥Ø jÞq¯žYTmç£ØË‘ûw„/þ5tÔ ¶­üeT÷óó«äïß8  sLÊ#Cg†­—ìü/úþãøDFyŠCÞ™9>Üy u™9OüÑÍfVLø  @T{( ÙÁȈœÞÌ .9öD÷×>íÁ±ðÐ^õ Ëý®–oÒsÌ/ëÜ \=D>ÑŠ‘e3 uyÖu´9ëæªÈ{A¢±™X.ŠtåéaÒj·÷Bkέæßò\ÿ¢3:+#íܼÎdMhõÀIs~ÿsW¤dgøªÙ£»Ö+*”õ"kv¿tß5ýݰèü@ŸØX7³P—»ápÚ9À—­ÉÄfR¹¨Ò9ã1ÜÔÌ¿ÙÜ·y’Ï!î=ï@”‰ò!jÃÔuÊv“;ùô*P¾iß–ìŠføfô±±™U:ýJ&ðPöºL¾Åë*Ÿ}49˜u•£©‡Gfðeâ»&«&+^ʽظJç­÷Ï<¹NˆÅEKNw¹Ë*Õûsjϰyê'g .ì^W)Í(˜Â}ŽcX^´™5[³MøáÜZPf6¾ÄE¬L´/Å›-U.žÁŸ%ö±OûvhAAÀ¦$4BÄŠDKvoo§¢%{×à"õ´¿;‰¼Cî¢"ÆÀïzàõ®–jGÊsU¬Ôé_n¦ƒ“¯ÂÊmf¡%"Œáw=ðKâ°…Êu•£bí¢{Ö¬g· ²Q&Œ‹EQ—ö A#ì¼™”»µÜ5çìæÎ%#ï¢Ý!|Ç]5Ýåî>Šu/ùaÁNhqk‚ºÑk–r7Waøî“Iná\VÔç%e=Y°^]7-aÍl?:Ñê÷CãÀ9kég–Œ…>žm8¨DԇƬ^Ýb,„v 37´9é8oÆXh·8q>ñèl'¢Æ&\ćX–³ð’¶EÝ€Ÿ†œ]ù%­F´Ïá÷õu9PPn}:Ú bAâà2h)ûÈDŶђ¥ù˜¤IÞê䋲E,H¦Ñ¥÷M$OÍ Úþmù©³§!Î¥Âqþ0ŠGÕÞ˜zj±Ko[ ÝcZ÷V)ÚE…ùªp™lK%Û­GÐJ zC#“ÏuÙDêiLúmˆö¼å­ÊŸ%ÛCâih¥ˆî`ú3—ü«IZaj»oR{"e ¢} Çy¬ô'Á¢ †/€f‘¢•"꜖)©€©F¼Öp“‰O ¦‰MoÀ?Ñõ‰?o8¯õþ · .ßÔ,¢I;¹ Ï2ñd· œäáCÝÞ&‰–>4Ãh€úD[å<×|l\FDŒ&Aî´„M;[¼•“Lt-e`éûƒÍ7ÒuEË04žžCúDÛö;Þ+ÿ\3¸‰6ˆÉšì~dS“N–ÂnnFx†ž_¯#@\}Øê ÉDkl4@}¢ý¾ª?²† è1Z!b••£¿¿L99"Ì”ÍKMäa.AP¶ß¢“Ÿô´´FFÔ'Ú™•ÍQ°Ì?K晃³Š#¸‘ãåß”Ÿ_À|o”È] eÝù¢}| Åò¡ê#SFÍ žOsÁµæ)XêÜ<ORIêôZ(¢ÃXL„¾üœEšE´d¦Dñ§ùs×çaÁùŸ-Âíh[OôèeÊYÒF´#WÅÊaìŽÅÆ•h•t`Ì€™“ÄSÜËþÍ8¦…ðE³Ñ|_AZ¿Y–±bãJ´}z§Y’bt®~%”V¥ZÂ+æû ;WHK‰vXcDK·ä({ ¶µç¡Y! ˜Ý€üÐÆ” ‰Vóí‹oh«õ§[_nbùÒ'Ú ŒÐ¬¾––Þ=».Á%RÐ ìuÏ’¶®hüËŸL¡Äˆo¯q)a´ÛÇãpº_ÎQ(b‹ž‹ÿTÝÍ’:îÙ)¼´æ­Ç<4HÄ01]?’OÛ¿2ú¼wpÒˆo_\žjô:7·\­¼ +c”hõ…0b(ÚÄ!OÈŸò}@‹Dxã6ð<ñîÀr!Y¬º¼±šÕxÌ ñõ D“ …&¢e!¼qµÎ¦ÇAŸ^ÜrñªÎÂ/nFuŽs†¯šŽ mê`ù¢©åÎOд¾Ø †ý¤¤nª.1ù&X®p҉ˈ,#DKó ʨtßáhZ_lÈcø;÷\™ì~áDY²x‘o„f)^Æšò JƧ§h[Oü^„Á—>›žþŒâuÓ ,rÝôRãжÆ|m¾ÙˆoÿRAŸé±ÏMËoXÈÝË2—WhŠSÒÆK˜{b=º#ñ³Ê-b™—`Ùhqyæ£Î³¯Õ?&žŒ¦ˆlaCT‹å+nhkÚ>±ïöŽ7:±Z Ö¬Ëõm™‚]æ©ýËù*iFXXäöm1@V¡Ù&œÈk¦´d×¹†²,}¥å]kžÚO™£5-¥8ŽjƒŒ6eel­h7Ÿ·÷æ0OÅ~euú7 tÞÈ*s»®Èe•ÓcºC7%UâDåÌ2^"¹cüqÄÆûÇÚ¯$7oO2xRƒñšŸ‹šŸá.KwYº0í+wæÌ¦‹œ•·/¿•žIÕ!ÝoÝ¡P€8å¦ÔQu°ÂŒ?ŽØE†gÞÖü1Û¸UFö‰Ë¬weâ&Ä äWYt‘ëóYé# Ñÿ(lÝEDŒå­a÷ •gÊÿýÁÃ% iÁîü_œå“¾ÍM¤pY^k¸ç¯ô>3k¶ADLFÒýG]ç€ñ뮓eçÈ7ÿ^s5‹ë–›Áîü•b@ÀpSW¨†Ö¶\­Ÿ#vdÿ]Žqà£9ܳºjfPUÄö«à±‚,¹€Ï–ž8Ä.ˆÁ‡T51döÒ"ÜëýÜë}qx~ÅOåf˜ÓyôÍ1’¡K•[Yò—%òx­=–#ä²Îq¥ÊOUp3-öõ.!÷cßÈÌm[b…oäKœ²êBsÕLÐËø aKi>,L¬Î2.±âu$yw¦¯È¤ÐWà>gÅyet/÷jž‘ŠL ÂS-BÉëÎÆö"³Ç´ádÆFõ§W@ïFYƒåܳð–ç¯òÙ%X'QTø•e }Ù½*®×ˆ­_èS+ƒWoO±Lo3rÅzÔýa@{EdtÈ_Úß°O»z ¶)=Œ?çñòà\VÄÃ% >§}Ói–æ ¨Y$»!êÆ[Ò©®²Nc¼ú’Þë¦LÉ Æ÷##¼›Ÿå²&>ýê-$s»š~¢‘Ÿ¦³tÐ=(ZDÉØ&¼%ý/Ç®^>9•\güY“à(Ãoþ¯£*·³Ã^Nv)ýª‹ «R†ºÎ¨r•Ku([´Lã !vͼR¼%=‹ë¤oO1%HN™™z¿» 5î»”‡Z¸?T6š:ÉZ· ]'.QêR·¹ºÐ$9­,ö‘[ÅY|%Ýà{Þr}Í_‡[é;º ’Ïú•æ'¿¶£î¾’í2ûU åÀhÇ´@ ±%ë4ðå€ì`/o%¬ å7Ü-C{Wz“ªgdÏNÆñëL=N³~éE êN–Q´ŽÆrÑeÆß} ÿñ”‹Î ¼•0áŒê!®wˆÞEûI·wÀ¥ì͟ʸ«Ö M^pÒB÷Fù~•úiÐtIÐé9Ç£ï ûBÚšùÒiÞ5<å"Ð,±•ïtk¼C¹êUT5ÕÑ߯Ÿr뀷rP»oΩVstBÎçþKñ´Iµ'÷Έ²7ŒYÐÞˆ§ÙižËÍ\êÓá‹U-é²0Õ²ù„Ø'Áulþ†êv‰Q´ŽLps~ÒÝ#xn%% ÑVT³ $YKVð¢äV³˜|í«ë:î¯Ý¼5ÕÄ·eÖ’|Uƒè…¡ÂÀo8¿òy8mU51¶DšU‰Ö´¸=”LJäoáS®“ìØÈºŠøTü‡UuM‹Û£q¼q Z®“^b“¯±–ó,['åœ3¢(·5 ½[d|SŠX‹Ü>0³h†¦›U·•µñcþ) ~•´5KÒ®KgÇ_A9nÙÆMUn= ÚgüqÄ>¹bÈóçW¯ÙŒ4ËTµ¿‹­ï½è §;KT?Q <(ZÄldøÕ4äÁüùÚ#˽Ÿg¦5•¿y„üßÌšM2  tZÕ~ôЄ˜•¸Z?øFbÉÜi6­a­tk*~ñìhE±®?1.¨5·¸ò±É—üMœåJ³äëê·WúñX%8n¤hCY-b¥´«˜À‘f×»¬´ŒEŸ2+ ˜:˜gN®@¸âyÁ^Ühö€èÖZÆÏÕ+¾gRBZ—(ZÄìè›tB¸” ÍË3ÌzËÿ¶\ÝcE $·¢å*Îav ΕÐõñ7±Þ˜ÙÞ¶ ÙîßÎ2­¸îlõÕ`Acɱh±ÅFŒúqîKèYö#ìr”í GgYu\+Të•™/)ÝõE‹˜Ž^o©Y]³J=¡¯pµ×ÀãŠÅn˜÷Š ÞÂN‡²Œé·èu‰ÝcDÌ~y¶±8ý_?ŸHë/䇯^ó^ñA9€¡O?&0ê_>!ª@ü`ª—·w#]_[éHV#_)Ãaà³^ÿs‘ ãLÆšÕêUëHÏÑÙš§å[SRL^¯èk-n‰yšŸ,mÞÕ¾™¡@€HÖÜ>¦×,óP—(Z‡$º?¡9tÍ×g»ñöù…òÌH°Úâ¶ ÖÚñ¶1ȼî·9 åÑi‰–’ŒÜá)]×—6Ô¥ú¼JÄÑ8Q+–îPR¨ £q¾½¿†åwyiťݡ³kW‰|ËÌñnJúêÒÞ=ó~QÄŠPðÐ1÷’Ñ¡.ÕçU"ˆÇK{¯bnÐï¦yzýïƒÍ2qªSÕÃ<¦ÿöÔšI}š”v’©¬y© þ-**D+‚›Õ^Õê’Äî1B×ÛýA\㳯Æs+ðÛ›,å½îðÍÒ}~`þw ½òúw¶åLœ"æ×ÝBb¹dëŸÐx¿jl¨K-"ïÚRï¾Ûºv*=ÖYPr±í¾.ü¯¡ è&—}áû;CÛ(0fåqñ¢lɪޯ¥0 †ºT;ë!.ƒwP’Š÷{L}äp¢c”Þs_üVšïΰåâK÷Ô z\ã$©÷g´òQÕKþý¬sð¦7!„ÆÿjªÐ”P—€¡.é®réŽjµVÓõ|ß­o'ÌrÓö+`o-¢õ!)«42o¬Xˆ ƒV]¤öës=@½V×ÀP—H.ézz·ÿ ÊãÖóO÷¶æ6ºv•¤ÚEH·&*.75ÆBÂñŸÛz‚gëŸ}¤ýÎõ¼Pÿ8KÅâ8aʧ5í\Õ/?uWV#éѹõ< pÿ]ö4ñ5f¨›KßãF¿z¶}lm”î·ò†þSW4=Æ2ƒøj¡â+Ý’µÄ}SZɺwàîåå.ûãVwÈ*Û A7h·Ò¯m…Fb¬ÛÔ Ëú”Qq’—h:ˆ¥˜å3O£Õ××þþçÁKϳl²tÍ ‡ð»÷k ð \÷ØàxâÆúþbÈ×~öI\fƒX¶¥ óûj¿¥û5€É·î/mŸŠ."D˜bÙŠ–BS”-­ö£*í]ú÷ÐwŽ.Áûˆ8Ÿ©&ùÈB³†F°¤^¿ILöЋ6ï"â˜Ä0’…f5ÞýÐxCÒêúÒJ”ò;`RÞ ¼SÒ}[Å,‚X¯ŸW t¿1Z¦½àæ{À$ÍÊÍ/_Üèþ ჉ihÁðT 0HÓE ô=x&½|îÙ✅æ…ðÂÛªjcÚâ£ÙÜÆ™ 5Ʊ &Â3‰-‹¨â¿gÙ¢f ½eÊéAç~‡ßmÚÂ?ª‡Ë }Ü·Þ\¦¯ÌЭîPôÍß2_s‹ f"fyÈ{åæ²W­-w÷\gê4´ºO†kU‹ØþÎm”[ÉVãÉfE¡$*Áiui%ª¥p-bod©^\HÀç°udIú‚¤­–„u؃ vÅ»C++7Ç÷œjYÒû0ب¼œ½ ­±6*·>ÍÞtëC“)‚¦8Û±^î”w™£Ü¼q$mUÎ~ ºfE¬U4 •«á+ÏÓ°^Äú‰QMÊÈm•[_žñ&_éë ]ÿõšb»<9§ f½`¯róé«LN/ò¦t¥VTæùNÂ'xç;à󹿟+7Û‚»r+óâ.ü¿h~ÍŠJµé=ÞnÄÎx|ærë%ÀXåæÝýÿÙôÝþ‡wq²]x¨ÜœpE¹¹ì·m¶W”*µP´ˆ£‘úBõž¨gÙ&Ê­¸æÝUákŒ¸¯AKªß¼ƒ"ãÙ¨Þ*ÑN†œÇ;kÃÒ4ÜfÉTÚÏ£Uþ Yö ï‚P÷ÏvU”;¯–Ê­ó¾Õ·+7Ï…KR¾Äõe3U/ªÖöë¤üMVi6Æóy?]TnŽÏ ñÛóvoðêªÜôýiåæ™ðpÕä#U‹ ?DFª–\’lPuϧ«Ü³ÀFåæ‚.S±Â„óæX1ÂÜ®z:}=¨õ?ÊÍ//Õ¨8/¨X§Ü .Ÿ•›-B•[/¶íz޵РçS¼êåRz|<6Ÿ‚ b4¸¸Al‹¬V‹3°Ä†ÈøÙi Ö‚Ø÷a ‚ ‚ ˆŽa ˆM1 Úãò±)Î,Ç:@AA-¾v=Ž•€ ¶ÄãV°kAlŠK°A„ž®MÀJ@[b§‹Ç¬±%>þž‚•€ ‚ ü5ø8NLF[â¸?Da- ˆMq[Z±M¾J>c% ˆ-qB(ÞŽµ€ ¶Ä‡¿ž`% ˆm²æb&ýÁkX?bm$ƒþ´­Ÿb!ˆµsƒþØLpÃÎb­üÐpB²Ö.iO€zw°jÄ:98¢™N ¯„J„H†‚ÄÊyÑþÇhÕ°6Ÿ„•£±NĪyØ·R¸üïÑè¯ä !€H8cQ#ˆ ðÙ x«RËêÌZR¬Tᕌ{ûç}ç rÕŠˆ}úƒl ÉU‹ |ó¸%¡P£¬“|Ôp£I«I@Ñ"ˆY†»ŠeŠƒk‡ð'l4›sU‹ |r·¼_,¨3ë|¦Þî.u3 êÿ hÄ ,t(¼û“¾FÔ4K'Z Q´b²ª¶_v—¾Ã«Óó¥jjA£ÅEÑ"ˆå V*PŠVýÁ2ŠA,-Zõ––Z´$¶´bEªÕ³j+€êë‚XP´¹ÿRM­@Ñ"ˆuŽj™5‹ Ö-jÔ(‚Ø–jQ³‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ˆ±,š$ÿ® çó‚[X'bÍ|m%ûwK®hotÃJAkfÞ2RS´d‹{X+bÅøÅ+D±ä»oû>Pìù㬱^¾QüÙÒò$I¾hý^¾Õ «A¬—¨¦Ù¢ •ÿûo˜üßűZÄz¹ í6E³û½B´Å°ZÄzùT8[´Säÿž^¨h|Ûbµ ˆS:ûATÙH’|Úö“|û)X+bÅ„ý.×l½ÓûôèûX±ç›ûX+bÅÄ×ÎÒÜqó[¬±j–\ÕüˆBAAAá’¬;§öüså-V„‚÷q7£OEî–Œ<ƒ•‚X!)[Ûyd?G­8æ¦C×Äó=³†Tt DEkõœ¾íj  b5l/!î²æê»ô¯N­Bt{ì Õó[×" (ßæûYŽGß{ŸI&Æ¿»ujë’ÐÀ*NàÜô§ã(\Ä*šÙ‚¡¯s>I#ªyíwÀZ¸>£" œwê+ÝÒïlþ® är,M±0i­½ŽhŠx˜`—£U‘¦Pr¹,ƒß{º¸.”\žŒVƒX”ï=¯iïçüŸCUÁ?u¡ýi)Ã/ßëZxUÚ b9" Bg_VÇ ©ŽSñ½¡[´1'¼™(nz-±~(ö>sŸã05[¦øa£ÀµÝþAÛA,ÄÑ#ªÝ3 §9H\ÉßÄ„÷°CÄ[ÐxËÐ2ˆr÷sÑvÇ(ÿ³Â­“L9O:E|­±¯{©´éãå—¶¬ôÅÄ3»}‡öƒX€]Âí]/º}ý;/¿ÔÊ¿SxÉÔS?™„öƒX€)5tv½´—éu—@þüøÎ4;/ÝoM?w‘ûG4 Äüô¤0Úæ°ˆ$7¸Ê¶.å+oßímDš~òW§mh@ˆù©7QwßZF‘¿ù‘äÉr£Š8¢u(2Oü24(‡Ó·'Z®¥i—F~Þ<­nv†Ï9+%ÝeÝYj½jIÆÜŸ·®ÐFög¨Çm´c+G7ÈpÎ~­ ä/* åZçEçêNn#ß1Èæ6P…d4>7ä‹A..µºäf§•/”Zóè"u ›eíoX>ªæŸ€$­ûSJ7j“C‹ â<¹÷gŒX<•Lìï²Eaýš¥´ª\•c£‹­è:õ¾æ®«Šå“R€¶ôdÒˆÜëÜÊü©5à vœ¸V·u”µ¨/(¬ù¸^ ©º³ãØ .ߌÑà¿…ò*ïOœˆíw«úAQبh!7@80m*Žçmö„b9šøMÀPn@íãÜ“‰é¯cïÖ.pžƒ*ËÍ&èìÑÜ6&ËœS¨I|îýñ¬s4F‡K}”÷§·àgúOQ¶ Yj™€Ú#£»æÞ—ÚeÚ "\ïÜPnHͬ0“ÀÑVÊý‰ó?à¬æ4Ph`Áòíâ~WT÷Ç­ãÕ*~TÜŸ«„¼??& 5aš%s†_”#1†÷µDÝ ÎYâKŒÆ´ª SäFK$ C+iŽ$×­’ƱfI,SäÜ2¼oã¼4ûþox-†šQòûÓJ,Ÿ–] B“^£ÿ·,¥aí¢¥4-cEêM; _Ú¢¾ÔÑRö‘T@ZúY|O\çsVq`¸[oYÑ’™Ó‰rç1¡ùÎÐh6æfÝzÒÁôÐG”MhVǶŒm¼Ë2úƒ7ÛÜŸÐüŸW*÷šÕ?·$‡ŠØ,w™CËß‚þ"…Z@P6xŽkmD³Úï~Œ”É:};›ö5¢§I‘ m}sø^±]Ĥá,[hÉÄPa³_œÏÓ‹6Æ¿‰¬k,çÆ?ýŠº° Ñ‚IÝã´“ê‘{uÑw¥%˜‹–¢¯©§ŸÃÃ;j2ô{Éo<Š“zÓ“e°|÷8ëDîÐýBŠ-õh6fŠ<;.ˆJGMØNC ¦Ì ¸D_šëZ¸þD}—:t3£rÝhì3:7äH¢í‰œOႾì îÀªÞd™´üƒ¨8Q¹9ï{2ê Ò'Ú•-EA8[„'ä™òC™¹Z&«)pxÄwnR{TW†3†‡zä”:Žp"œÁ%ø®òƒßxu‘Êî†h·óëàWˆú]Ï6йZÑÐÉeˆã=7ßËÆe禸žv3êï÷'*/Ý£Û¾ê¢åÿ9ì0ÃýA¶> ;ãsÚeoˆ ~„TS´ºÙËf1Š0Y"r ¾§}=)I"Zòv1ˆ¡Æ¦ Mтڿ(Z+CÚNDˆÅWù7•Ët¥—&[ƒhÉ?YvˆöQ×Ó‘ä(¢%_U‘ÝQ|i¢FK‹¢µ^äCuHTO÷JÎ(·^K$ªQÌeßÛ#‘H–¹(&Òò{ÿ¢_´Ë%<³JþOʲ#†jZF¨-Ú ûgçzÙ?k=þ'…ùFéÑ,ŠÖŠÆœŠ§œ…Tk]òB[åÖ€uÊÍ¡&Ÿ.Ò˜D¬_´¼ã¤ùQ¿hó ÎþCdÿé¤G³(Zëáµ\Vâ©|^b¿“¼i‰ú·†îqÆ`…³E¢øD¢u”î1yÊMažEÇëÑ,ŠÖŠX%@ >§¸l " a¾Ð—Vñ *±²¼\FÑfgIJÊ_ÌiŽiµ4‹¢µ&m=žÉcò³d~Š—£–åC¾­)± [ÅõT´Ë Y·£ØRù϶Î+­C’9\Öóª/ÉþUðÓ;¹Â¢}ä 9“ 4ŸëxÓq ÑJÿ'+u5ùû-Ñ*+Eëx¤va¯hÕ§ ³õ}7 žñkùÁç7Õ´½ëpWßwhà÷'kÏfÿ¼û®ô}Óÿâÿþ ÖÀ¥ü“Ô–p}3Bßw%¢ ¾³3¦êÆÜ òï᤾ï9Àý‰ó¡pØ%=;º Ô©ý­>Ñ.âÿþ ÖLjzúŽN-oæìä_¨ïh™és_.O*Uf? GT×'ÚïË¡; Ç=ž—¤¾ÓÌœ¡úF­—àŠcܔؙå¡dÈÙìûsˆ^³7‹OC v@2K ¦?¸IxÇÌÙ9‡év®é7$ëì¸P&Tå+³d7zÑÎ1ûýA¬‰à Ý¡÷EF™=;AåèíÕ?àµ2NŒ.§_Ó¸?›è4{¦à(´_Ǥ[Aš5™iMý>š=7Ï u¦yCë9Tï™Zî‹©Â/èú§ÜÌ÷p¹P>)"¸T=«µ»kþ#Ôš½êïûÍ×1I¬UòÕþø€¼·,ó.Ý)½eœ/Ô<-¹b¯_vÝ¢ô®}§ÓøÃ¡õÃ`wQ^¬nç,lºà>Åý©Yôo*Ížkèy ­×QùØÂãwÝ7GÊ–¸f‘ìœõ©¦ÛaOýÍ¥Kù>Ä}»ÍØ~-EKHF<0´‡±f9ŠBÖ˜píþšæþ4w›z]G³kJ¿†¶ë¸¤Mw)7ûê§Ü)wÖ5‡À×ÊΣvDÛÍ÷Õ¼¥~¸ôS)·¹Y²­ÍÊ¥/„‚âã4úÚªbÔÒ²-'Q’"CJB’½÷§ÔIT®`£#fÕµÜýA¬ƒ‡!…4—‡¹ö:eÁìî꬙“_(H[d¯[9K´{H§%’:üeoH Ÿo:ã`Ý($gÎßnÎk)Ô›y1Ëàý)hM÷±2ïË]‡q#ÉÂÙùzmnvŽ?È1êNrÃæï»“¦§¤n&õ†@Pó=,D›(obó…¿´Åûƒ ÌùM¾fèöš¾— ú»¾ ·÷Ë|ÜËÊ¡yƹ_š‹õglbÄöɨ"bù|át¢¥¿4/©÷; 7D+½¾¨£;¸õ=ÞMÄ18Oñwbˆ õ=ý¢&Ýc}q°í1V´÷×ù@þž«îâDˆQbáh’#NYá(ñÍ™ ‚°úèmÏ9LÕqœÈ"vÆî?Ô><þíÿíxGÇß=‰b Á)ÜŠwk)®–b_PZÜÒJ X€¶i!Hb%ÐbESœR$xpÜCÐ$Äî¾»ä.9Ù=ݻۻüÏ“ËÞîììÎìüodgÞ·:ü|ÍSáÜÞËfu+ATöÓŸ¿å9jˆ¸Wg·tgj}{Èñ£<÷ýôyy†Šu™¾—çes‡B•Ÿa}”Ÿ;â™ççÝŽ¯ËRî¶Ó%:èÞžX:¢¥QÁO&m³Å öï4C]Óvë‡\ƒ[‹{@Òc·Ú·©œzyãÄÎþ y×8ï›]:¥³›têóÕ7¡‹×íˆ<u&&æi|÷bb¢¢þ‹ÜþGøO?éÛ¾A…J?¾”«|ãÃ~X±çò[G&£‹””.0}“ðDAÎáÍc[–LÖ§c³šþ¾ngìŒÏZuê?zÚ/ë÷œŠˆˆã™¦v~Às9–wñcnDEˆÌâߨ¨›1wâ…jÌ¥Ž²ÚwÇâyœ†Í ÍJ‡"pÒK2ÄÀ}NÄB±¸r'"!E.àLLoŠ<|B<„˜¢!-)­‘ë~×Þ¥¿'+ÖCY—€jàE³dJuHÆ‚ @-ü‰–´¥d‚fYÃÔ,W¥°D³¦ˆÖxeL†4 ÑÀ§f3ÿÔ}Q’³uII«¿ÊÖm%½¶°æˆžDKúM_bÕ–Ñ=d°- ÑÀWE«?2lšF 7™9‡š!Z¬Ó¬Fû5»yÌ)Q…›(Z9jZl!Zö.(WšMÄ}ïiàU³,“+ôvÝ£Õà–C´8ß/e!ÈdA”ö÷¹—‘'™7õÓµw\è‚L@ÈÌ^ »§ùuä Æ?>ãßí½Ûõ~W¹¹b ráòºHÆ¿)¶ë_Rno…l@¸o’ñoοÊÏ;‰ÊϸâÈ„ˉLÑ|›½+®²áò²pÆ¿'4*ß6ÈL©Œ¨ÇmÊå Á»”Û+& W0¡ó3þ]ý´[—{26[Þ@® `âkéL®¸Ø™€ ™wVûûœhä hBÈœK³-NVÏælÑ~´€óµ)‡§ý€>­Ó¥ª9L´kŸ¨6‡~£Úº¸Õ–Çñ³ Ú,Zh yŒô€B‹ä .²™@³ä NSŒ®ê? š §Š6Ç74@`q³ßneëÚ“a[ð0™CL‡3Èœˆ#žDÍO"p<éO.FFD, ÿ-bóÁ‹“¹ÂýëÍH¨ÍI½®¡ù}Ft&°Ù¥•ãÛ–gÈ+ŸO®L¡å.]·mÿI¿l;ý(];ø™¼b’Póÿ4Ôǵ!U:r®~òõý«ç|÷UPЧƒÆL·bóñ§ç#!’RýÆ•iôýU›phfÏÊŠx”ªÞ¬uëŽÕ«TTù3•«z·q«.¤òq…øˆˆ«ªÍ‹ïT›;#"mzäΫG¹Ûÿ•Æ$ñ摵sG~Ö¬’R¾”«Z@½Öj*jZ…–©e‡ð²Ib%SªbtN„Ô“Pñ.ÿ8£Uµ¦Ýٿ웞äQgHøÅt ÔVñÞ¶¢<ýw›\¹$ß?µã·àÑA}ª)êY"ꪞ^ïTÝôeéÑj‰ÖžšM?<´•òÇ=ΩWhœ›òµŸy$ åŽÄ¥U¨åf‹ÊæN/eE+eZD<ËhœKïTÓ †¾j­ÓìΫœtwR1ª6#ÚxÀ´s z%÷fSŽ&ÛëÞ¬åb$Ês }uQ·@ _Ü„1"3>Á1êQÄ!MÕf‹ÖÂzÖ‚Q‘Å…¿½lFOuÿäÝfö©4Ûß›õ D»>[*I‡Y8—)ése%Û4"Eù…[´Z¦§8DkiÛØ\a¤ýQ‹ZfÞ°9Ü\úi!Ê×yþ%™ÁNÆé-°9Ñ™^7-<÷yC¢\A—Tßâ3Ç.‰M˜Ù{uÅIV›×M__NÜ3ÊÂnô‚.>T°×/ќ½%*¿I†æ1°)ï'»Õ=méÉÉ%©þýްîhS¶*Ù¦Vdî±Ó\ý5DýnZAZÔœöyȯ˼3ìMåõ"*!C¹¶ãXe¯Ð4‹Ï–…_²þì8d|½-µ>g}4iÑá~äÝhÄêXýƒ«EDþ’lDÊ8¦Ý‡Þ=m¶¾%­uŒ¯Èd—¿¨"¢zÌÚ«]±þ!bDTk»v˃«alb'fvmbêæZéè{°_±ÜTØ/œç‰oöÏì\Š(wýÁó#of½Ú(bHBµ·›Ò¢06±-þô©r)Ç$öQWf`¼Mb~}<|x‹üD¢âûL Ûr8êÖ<†!Sã#Æ%HÐ,0£i<„¾Î9}ÖùøÿcÓ <;µiî°UÜ) µNâ );!Z ÛÁk믓ؤ!Ìðû\êÝÓ˜³2çuJD’¸z&Lì$,VZ<¨Q$Š÷H…jnæVͼvü’…2"e5[0øŽæ½™=±“,]¬¸6åÛ¹S¼Ú=þc¨a·K…jÞ²c­Þ[)YIÛˆ4{3wb§ÅsN0#Ê%yVá×r[ˆ¶†ËŽ ª­ØÀ@u}³.Ðljö¬_“7öËÚ»ÕZÿ¹OõïÍ܉-Ð ¡ÿ#›DlQ;n„sù>N°_ÖþëKnŸ–±÷RÙú´lÂԘ؉N-È$°Ð­“Ö§%Z½·ãå:U]ÈÒ†!K&vÂjÈf‰È–3ʃ5íÕÎj8S¨-s’Ò¬ôs§{@*Ð!Úë{[FoG;HÙÇ9‘ç²ó)¢Ú¤×m˜šc{L´ÖùêYhè°B|!Ǥ5¹J[\]kØGwM*·¦óª½ÒÍe©é÷LŠÅ|W—úëÙL¾¿Z_Y¤YÌ"‚b|e9Ï¢•ËBEÊEßL½ð·´Æ]‹vuIZaÈœ¦À#f§…¹ÑQs„ Šì®B³RÏà×ZÓypuIr+D›ä¶NmcˆXI®K0UXæ{ͳbŽp>þ¡g–Ÿüt¸[¹µ)º{÷6ÙcåM™Ræ,)—­ƒ”Ë*0$ò™þÂ4ešÈŠ9bÀùXåiñ©É3rYœâL‰­:ÙQWޝ'!’xŒ¸c@~–{Í#ÝÓa½Ñ¥™]ÒÒ3Töšžà\‰õû…W!Æ^‹:¹/BÍÎÈÈÈ£¢¢.ÇÄÄÄÅÇkwbÚ(ß[K™v§²«C¾¼æ‘öéèÓº:ãêXvÞËLÛX'K«L´Ñê8žÚºðÛ¾­j–ÊGÆÉëãSÚß¿V™€€ú­›)Ýæ)eÛ&)»yÏ×<Ò;¢ui´³è´%Š˜(ÙˆJ¤V(þÆæ™ýëù(tW°z‡ÁßÎ^u1æN||ÖÀùëøøø»ŠZö‚¢¶UTºÃׄ†Î þß„àáAÝI¢méYZ­Y®¾©É¸X„®/ZL®p!zô²à¤”q7SÍJ H´ñd¡ë“{~Û:‰J·ùë?1–yº]F©Y‰´O´êÞØåg×®¥ÇrgMk™ì‚7qCgOqÓy·y¹îJÊ5þ®µŠ…hšêÍ ~±t)çuÕõ/Ý7)œìè ¼’¶ËžñuÝ“K¬m^ÃkРâæ„Þ™·Ñ¹‹‹6vŠ?Uÿù Š*efšV*”ìÄi=EFÐd‘bß (” `Ê›^Ó&õ‡:uZÏÑ Ã^…•£›SQ*€ ©bòú‡u|#;­Ñ† W\ù2W®/£m|çÚŽ‹‘(ë.CoM xöƒòö.lïyŽï:ç>x¢‹¨Ü¼WöHlDë¨3δp½ÚØÝÝ\PK~ã‹¥Ó\‡Žv «Óì“,ÿÞðãѺ GšJÊÙ¿«0„ßøîÓqÖýéÛëR£ívKVSG¸ºDóØ…hfŠs›¤Þ’Eö¿µ”Çøð)«Ë¼ôõD/ÎCkæ?¬í{ÀÒúŽô=ùÈþ¬*î{Ãî·¨^Ò°.0ËðÀ`›®Aã«|Î}PîšK¤5‰ÐÝY›éàˆ)^-°œÀÆB¬ólûÊEë¹RûûѦÔú Êp2ú±\‘:†“fß[Z׫…bÖ¶u©µ=œŽ¡Í Žkí±ÒŠØßžR[UÞãï¿Iµ9) z$zTðïj RÛJÚ~šFªKÌÉÞ~,©}Ï8!cë:U¢Ô9+"—y“Ú<øÍÐÐëêš4x¤Ú®Rã€ñª­u[±yb+MÉÚ¼ñaî%éŽÉrL®Ö1©šƒK¦»GÛ÷ªkȽÑÄ¿ãYÕGf šrùfÒ›ït¼Ržp×Lì—-äòhŸì|UÙÚŠ&-ã?hå5ƒ¢µÜÕ%ÈYl'hb°¸Í]MìVrYÃFf¿:¶ºù.DªtO+"¯–!‘‰œ5­¥®.Ac7½Ñú~¤|¾pË_‡Ly èÄl#ßĘ=ݘxh–^kIž.ERÊ•iW˜.3\]šÁ»ÛHóõÌ› ¦Ë#Ë#ÛÄìtbûwH)÷¹%šµ^µï¿a2\]J$sýyvui˜åBDF½zÄßïk"ë(ð÷Ÿ½»,q¿mÙ©Öˆöyø šÒÌ×8’ÒQ|»º„hskܲ6Ó¾uxlUdi ÂNlÏå‚ì®Ù+}} 5»~^1ôÅ»,ª|¹ºDó8DZ"·zëå'žË\<±Ý‰oØY³ŠªnLWüž5•’Ô{½¶ ùpu r¿ª§1Þ¬P씫'¶_ûj6yvîÖeŒV'"Q“ûVÜ;¤ Ô„© \*\÷‘Ë'¶‡ U[é%²¢ç”ÌÃ>†Ä³Ò­Q,D ÔL©”ñ/ʯÙ×Ol®"öÔìþÔAåñë‰ûך;G›d3$Ê´ï'‰®ŸÖg4À"½%“ôßNõ.»Kµ-kFýߢ¬žè¬|oy¿Dƒ„Öïh¯½.õ~Q¡¼3³Þ€¿oº% ðFõoäòW•ª[¿>`}Ãt'5½=´Ï•^Í*ì>:… ئ {­’§w(ÂÃìÃ/š =­;o{Ø«þ_î¼Á^xÃÜ °ŠX:!ÿVzD·§ñEÝ­ÓøÊÊàŸ„žÖ‹´¶}³8rli XðÚPvV±AúîOF{N…ÖœÉ9 ȼêèzê¿sŽfІØV°Çæ´÷¦*. ç_-p«ºþÓtéñjëV  ŽC´Vò,°Ziû²þyïázšÍÖ©ö¬9Òžk§©Dë­_› ,C¶[Îð|û„FîT¸{¸ «C Z`%ß‘C`+OFø7g3†Bl-Yò–ÿ49ÂÀ°~ôŽ[7?Û˜†z1"@Dþ}ãaâQˆè,²ðžCš*¬â9G Š<2¢Y­…×ÄÏu ÚA¥>ÌûeR£Â ’4`DÄsˆC¨š%Ž®Ÿ³Šv|^éQ¿M”jrrÑÞ”Ž!~½mÝÿ3¸‰'ì<÷x2”!äzÖÅDû&ó«QÍjõrU´²V6lË[ì¯"gt.B¢*_üv ª|ÛXLj³‹vó©qͺ„h—Š¿ó²ˆ)5zuPeé²ý$á\}ZuÃÑ¢ÕBíIQ©÷FӨݨàLí¡ì…ªŸN´Ñyå±zvAâéß¾®ëFù>ž´í1¤à´¢µ°òˆhx¹?bë·«~ŠHkŸ±ÄV›œµÙÀí‹ha‰öqÉzþV¸*I¿õ×ÔåÅäUÄšë"vRÑ«’9¹;=Vx¢½íÃüÃ_ôå§em>ªBTo»L8¢}Z³tùÊÏ,‹èÙùƒêz“¨l·M7Ò¡ç-ÉÍí/¦ÍŽta‰öˆ'³œÇè7^ÌÞ~Ùˆª´*Yãº^ŽÙÄs¦hO–.”«¶¹KRb"ÃòåkvT ën>ƒ­­É£Qо¯#ZÎi¬[/Ú”±"Ñ:›eÓû@‰D¾!q:×5× †åæ²Eûb´Ä—ajÛ8ùÁÙ]«g nUJ¬Pk­Ààðȇ*~‡ is«ßÛ3¹"xXH,éyDS´dQYµôU“¦xd‹0OÛ0«dc3ì…Jû\Õ¼®Ùî¦,7× mÚ¡@7 µ=a äëÇ1QGöDü:åëM*ú(oÛ£T‹A3ÿ8%ÀÁá½ô2´#I½DDn䯭e…Õb÷Ùâ¹7Î$Cx]õþ.>æjTTÔÑH;¶(g:7Ìø“2Öd]—Ãö M<×øÏú¬I­²ùyîÝü»psBC§õ ìÖºI€áÜê9žù+5 6uñ–c×ß °uå3™aˆ±çàó\¢5¥Ë­mÜ•K×õ%Ê=,ÞÚä¤Ý>ñËÔ៵üÐßÇ[{ŽséÌn0j®-›{›y®ñŸÅ¨îÂ'›üý+´hݺ}```аàYó—Gì>óø5Ê'ÈæÅÕ#ý2©wPïÀvyÕ帣J´dA9¶¸Ùxš~Έ֣tÿ³VýøÜÚ6¼]7ET~•št2)4|eÄÎÈÓbbbîÇ+Ȩ©Þ¶P:ÁP•Õÿq6mè¹Æ1kVs*¡ŽX|¸ÿ„<;¶vú ÖeÝ2š^åk¶îد`f‹Ñ}ôÈ9G‰4^Ž-îê¦CßÏ[{Ôšy²é×Öm‘¨PþSÖœÆòq©²mÜb»Á(Ûy®hí‰5h¶"¯¯`žý³àËf~Šl™V§ý¾ïÂ#Õ‚°Y’õñH«Okn9¶xxÆÊ÷¥‰ÿ|×$7Iküõ„ñ×׊‹I"ùâ²îuíæ¹¢µ«hÚÇó=Ó»–PÔ¬M‡Ì¼§ý&^6FÑÉ’xŽx"—­ñrlñ茢M>:µ™;•Å]Oo˜’½}ʇÈ{ÄÍëûH”­<×@´­)Üþ}PE¢]gìa³>„Hœû‡—š×³Ü“=E{ëç6ÞTrÀïF\ZŒ¯›µ¹ÇƒJü’ s]²¯çˆ¢526½¸wqroüíN® +iˆò…¼Ò¹ž%åØÂu÷–‰6ýø7UÈçÓe·ŒR%k³Eý?Ó­ý± g,G¶&-¢åE´² ?wÎO¹ÛL;œd Ôgä÷s‚•׳²›-žÄÈE©tÐvÓ†®’Òøû± ˆ–•ót¢µZ´w–Vòw•f$`¿…IÖ]ì,Úw:{Š̺l}æZRÓZï¹Æ%E»Æ-¢µJ´o"ƒȳuhTº]®gu96C³ Šöb÷IV­OÛâÉásC0¸k R¬œo‰¥ÊÐŒ%kâ|ÁÕ¢å\µ&7"Zb¯g ZUŠöu|ü“˜˜«'##–ÿ¾X«`y—š•Õmå\µÆÖ6tÌØé ÑÖ×,ÜÅ*×ï4dÊ’í'äë{ ½Å?X›Ô½½9ÜötÄ/³ÆÕÒߥ^Ù"ÚKvºFD¨­O‰Pû¼N‰ˆP›$ŠÕ>žáöq¼¢S«l!—_¥Ù<æõ5 ZZV‚þ2¨oÓâ"·&óŸÙÁ¬í!‡,þ‚kžå«&¾{mÙ—^è€Î@!—ëÓ6ik“heí%ŒÔÍ‚ñǼ$JÉ*mår‹Ö”šÖ f Õ´™ÿ_þÞIRf¹í«×`h¶5WŸöiÍ"7f#\nô8uèQÛDüþçÎC¢Í?mXDRq÷“™Í½j}˜ŠkÕšiž-4¢bK\±¹h…4z|·Bé[rˆ˜Å†ÄÞÁ´3›sÕëÒ4®Uk¤wºÜèäŠ u<~ËA¢ù úc9D ÌjSO *úÒºÌ&>E”ö-3"=§ˆön©€—rˆ˜ÅBª‘fUfÏ¢•Ë7ºHÏ¢}R±ZKgC׿Mv†r€huÚjš 8‚`•<;iuf[½jMOD{DKrˆÖ4å€k3Yfìyšú$øHˆKÚF¤jŠÖ|—­ì—$ݲ®I¶h¯„rõڌ֡ ÍcRÆ2¢Œ% y‡®W‰–øruiÊbK…hY¸ô勉·_A´9‹å’)†ž§9£Q÷jf®dÊ?â|–hùruIlU~M›ðäæþ…CÊQÁ‰,·±ø»7>¥Å»Ë×Í«±pKA¦ZË\²ºº4e±¥B´Rõ*=Qþ² GÏÛtÂ$×îlÉwhãvA–°;w£»†ž§‰Q wOîÝ8/w¦ŸcµZöÂj‘«KÒ Ã&Ú1W—æ¯?`\ض‹om‘_)§æVòCÅoSÑÒ¢•zÏ=®Ñ<æÃÕ¥i=MÿYiÏ.žX3¾£/œ2²[½¢Šš¿P‹¡‹¿s–²÷›¯2h ÑU|6Zsþ«Ãó‡´(.R”Æ7w†Si©ä«‘ÜQ¹º$¹I¢ÝÑþ£–Í*ø¸@©ÂŠ)ÜzäÒã<.¬~½{R3Oòm7íÈ¥§²7Êv…Dôå3­>-®.M[l™Ý§M?>Ü«P¸¢—“»ççÁ|I\m`ø%™½%Þ@–‘Ä||Í¢3S£æ÷ò'ÊßT 0<eÛ…9VÃíæú´yµkR oòiÿÃŽ,‘çòˆIL-ÎʵüÓòáê’ôÂ{O{÷+÷¦Êf¿,öïоµ<‰ŠÔï¼pà Ík%\‰\RÄ»”â§©ÕØÍÙKüÒ:3$*»Këºü¸º4q±¥ÎèñÑR4{ñiQ³ÛxQùñÇÒQº]•´ß*2mטl«ðÕö±ŠZ§ÿÒhÍFØù<Œ˜ËØVû§åÇÕ%ÉÍ­\~¡ŠÏY黹uÞÈ.5 (ïäU¨L@‹Ž½ƒ‚§‡­ˆø;òpÔÙ˜˜çñ¯ãããccb¢£¢Ží\ÿë¬à ^ŸÔ¯TÔKÞ³|ÑNÓwÜÓº”l QžÐd¶ëš Ï^óW¬¨ã…4ùÐørTpà?‚ÓíÝÉW 9>HßÚVêÑ1ìœÑ'üðÏѵÄLÕa›tÏ\ÍOT!BõÅv®. „ÑOb§¼'tBÈž_=¶uÕ¢YÁ_õíÚ: BÑ<ì6ÓÄùýZuûbô”°U;.°N„œ@’Ñ/9®kbJùvuù¨Tý~ìåYµ©Øø‹‚*jÇE…¶Cp<ñâ·N>”¯cè>.¿ÑïÏëù‰?¾ù¹þA…fKnÈ’¼\]’9¢•'w(hÔdEbüÓ˜›QQû#ÿŽŒŒ<u1&æ¾ñQçKÔñ&÷uMJ-ÿ®.‰³…»:©,Јrê_2æµ¾=?¿{Q¢¢mG†m=ÿDí0OeﲉÝÊKȯô8üÚZ¢ñÂ×V®. †ÑÏÛòml4ˆzÛàuí‚þŒ¨ ~ìÏFv¤¯GÞ¯>,•”ÙŒ§{g÷®§|cBžEüýýKd´!sUí1yãugÅk™/ÈÒ¼ÿD›r]Ljö¥Ï4®À/ëP£íŽ| tª½×NhËÆ$^9¼uUXhhèÜ¥‘ç_˜y¶PÁVÁ«õ¯wns&ÑÊ¿/ÈZÙŽfð‡ã¥Îu[úª4Bí ñŸ–Ç'+DÝœJ´wƒ•Ù©@qµ­v®mS/B ­™âù¸³ùñ¤¨;óÇŸÊJ´ò&Ÿ>çJ_Q]»ŽÜNÉ-~5@´æ‰g­4ÎÌXN4ñÜlfËÏ!ÞÆh®þ„4V‘^ ¤†í÷Hþ^|bpÑ Å-ÈÉfÞúÕ UÌ;#}‡\ùDlbñLz’ŒO[8֌ڳíÓ¿üËï€ó!\ †˜tÃ:[œXáˆ6Í{¹ ÷»¯®hHœ ~Z¾’bêyIWÔ®×â;?¨q ¤²DËíÎ×|¯y–ŠVî¶Æ’¸•ËŽÞ)°Xe5+R:É÷»Y‹º:’û ð¹%ì#Zî»ÈšåmžeE–,ncÜûÃ9˜Ÿô™¤4Ûï§ô·‘Çw¦Q kgšWPO¸xžÃxբޭå^ó,mîåFw¼²W¨I.“ÀB; Gz‘Œ¦qQ…jÿø>OYçî«g'Æ?QפCÛ Rm]2õ¼±(ùmú¯áëw:—l¤¦µÔkž¢õ¶x^fJ¨[Cà û®¯y ôØ“Q¾%5½DÒò¸o¼ˆ~Pù–è†jsØ?›%ÿ¢}SB=L&Í[¬JöãMòåc†×<E;"HÿÕ³×JËÓu±Ž4LÀ\zHIé"‡¦2¤49‘x帺§u+ò`’EQþâÇû]¦íê.ÕãÀ³×có~uJ._""qßt¹P¼æebÉ4FýXÂò¡ÂèÉã$ç­ó^.¿CJ·‹Ýã)ÖŸ‹ñ}Ÿ)uk$Éåï “¸wš\.¯yJh/I|Ѓ:À‰,0A £”Ci‘ü΂åãBå¨ÏB¢î©rKEk=«|¬¬«gEøPüÅ=”IàfùóaR1¥UߤBÔ5U.0ÑN '«–´n*:œÕ=Ž(ëôÄò¸â#"Ô“/FD¨ß#팈´éqàÌ(Ës„?åRºø £nêi•Âí"tÈš8÷ùKÃàlJx‘\ÁO¬ˆ"Rßá7”•Cþ`ÓãÀ%ø¡ÏV®ülÓ-kÕ pDû¨¶ *×ý¿›ž·à ›ŠçtÀÄt¼Ù3ÌÄ ïæ•bÚì0ÇV×°-xÐkƒQØG ¯–tç”äõæÎÓig]™êœ(¹lGÓ-Ó¤oûˆ)=õŽÉáÙ×úÚ‡øD*Zä3¶Ÿ‹ózs³ ÙÆ #¯|6v«j¡gök£ ŠZ¬æ²%òòëÓmŽfB>c›W”×›ëØCÈYOûØöžQ÷I—õøî…¥q§EöõôèÎj;õE ¦Ãy”ÜÌщ|ΉâyÁ@¡9Bκ$Ú¦¿ó.ÑpžZß+Ú¹¹µ™w™åÓöÊ.à…Õî|Æv›Ž:µnƒÿUmM©­ž –¶÷z ox¹¦‡ÿbímýwŠ“˜ùTg”™Ó¦³M,A—a%ñÛbAÏ5x+O_Õæ¯ãÙ¨÷ößÔFR*Òí§#š#†÷JHHÊô¸©©>#™o%ä Ñc]CˆiŒS¯È9"òhb—+&™Ý¹Ñm'¬:z?=Kµ$÷‰f•œ§k<ÆÖpˆ“@UÕ›5¾¶ã<ˆ{»f÷©áNäV®Yï  SGŠ”V³¤’a¸ä§m‹ÅÎA´ £z’¿ÈR=Wðzs ª?·âfÔfˆ·ìËrÅÓt˜½óWöàèšúvm]§R–eYïW*²š{f×,– ËðÒGrœ\  ¼Þ\UµÔ©gtç<,³#:öqXF'öΰ*+¥úëT2$6iW;ØjKÐÀeH—là/²•)¼Þ\7’Ô²pñ[l§…,‹ÔµvT>?¨%%3¹‚.ª'W¶MrÑZÚ³Åä Çò¢Õþ"+1›¿¸†Õã7¡ 5S·fbØáÎÔòzdÇü’2­7g¸(à-qµŽ!Z§§ôDþâjòq5øŠßt–U¶'ë›ñéì`?ƒöMWz:ÆeåE5[ X}kªÜ– Yei¥%h,p0£y¤íÛŽ·¨Ò¼—ñ›Nß ×E-L“¼®æ,ƒCWÉ!¦Å'“¸Ë®trY‚6 Z D9)|VÓKñÕ%ây¦ž$ÓáX;Þü^=§HG<¯sŸZ ¤ Ôlcxs µÒƒ_¯r¯35«¨¦R ¼8ÃÔŸ±|%ó)á -Ðà6ç+ª/šò{k±Ê¹þÕ†z_úžJ>01ÊÊb'}Lh¦¶o_Q•›Èï­"O÷xQЍ¯¡‰ÂW™Ü_èêŽ'œŸNÝyŠèŸó4”ìV4Œ_{.•§,ò£/YŽ¿5?ÊÌ3Ï­*—깚…Öà@Ô ñ'Ë·Ãn?p*–%ù<‹~HjàoáXÒ"f‘Ó¥v nÇ«‚—K`žÕ(nI#7},3Ó S;ùÉ~û”ª‡¿á¬Ò Ôö\9›ôhä0^5ö3\ëM÷õN”Æ­YÝÉyÌ$»-ÒKêC$íi ÿlú!“öÂÌjŽ!¡£t®™V,–.pØ™’øyç¬ÍnŸØÍôŒl&CªüË+i–ÅQT›CÍ‘¶5gšêO™ÎÎ5­u`žf©b‡ìvá]ÞRbÄŠêVfHkšûÌquIºa0ÝRàÜÆ_\ÿ•òYjje{;È­¬³Y\º{]ãK|ÑW¯íuåëþÒ §yeBŸk´bõµg‰«Ký‰âP¬ÀÙ+ZÌ_doÇH7%`ì iée)Nžuk ÛjóæË£“K=eBw+ÇòޏÊÙµÌÕ%i‡a-Á ‹É­ùôr®žhÀ}cb¾–Y‘âüY÷¼/u¾e£¸ßž^=±o37…PóúW©ÝŒQŠ–]¡9#ŠW—:«°ØE‹QÂ"-•ߪa})¯± …8ÐU\veªkd^d%ïx6ý*jù¸¶¥r¯ÚþË¿ŽUzKIé¢Ô¬¸PX’œ[´¹º$9D äï.ê>è"ÇÁ§?W¡Æ©.“Ø”yùŠ…óÖhHŽZ2¸¦”¼jõ™¹å†Æ„ìäN ÍŠ}C•3M¨{•i¾«K’ëw’Ñ<Ή²]ZŽê†ëûz{¶¼ƒ4oÐ×Jì³ane×óðÒöѦQuÝ(wÓÑë®éÆö¾­B²~ó“´UÈ‹«K’›$Zìã)ª²3K¸i1[F×{vZ“èz‰í'ªô›5.ÿd—~íSšÄ5†­¹Â¦þäöD>¡Öeñ¸4 [—%ò­Ö60°K“Êî$ª>|K‚‹¦õÊiñ¹/,k_ÿ7·“/åþxÊ>.ÓvÉ­ÉçÇ+K|„Ââ‰M–Ú¼ØûËÄŸ~=yÕÉ×ΟI‰Õpº7*G?sçq¾Û?¥¥7êvÆÐ‚â[eg[;ÖeʼDÌ]t:fJþB&%ßîco—Ô r!×Lêñ¶qõ¥TºßòkÈV`a·jhrÁ [=>5º(UÐØ`rÂÑŸz–$QÕ¯Ö?@–kTûy`=éÇV ¯“w²O0I»±yJ÷òb*Ôqzä+äáÖòþeˆ|õý~ñºmû£nÄœ?¹+bÑ7}š”’’¨\÷ÍVÙž„¹lAü¡_·¯ì#¥,üjtüzÖÚÓ֟ð¶$éyÌÙ¨k1ñ<ö=ü«ª—)¬Õtéñº¢´ÁqˆVȼÁp”À t€h€‘5î—Š\À™Øã=™€Sqæ!ò€›´ 7 8þß!p*Æ”GàTÜ‹Aòä_äNÅ4ñ¤ä‚Ip™-Õ1¡ï­Ã ÿÌEöK½÷ȳ4ËmÇ…c·½åz¨Ë<.×&Y`Žh‰ËÈ!·”í,ÚØâái iÿÐAšTÛŠ'm_âq i³”äZN¥ÙpVW=Z`Î\Bè0ïW]Ñê[!fuÀaÚ¬d€t0ŸgÞÝŽ"~\鈎ô™ñ&X@ò†f‹ ß0_ÚëRo?/ÿ2«Ù½Ù^W’õøþ0òðÄÞDä­øodÃûÈÀ7÷ÅÞaȱ¢öPÌúüóx1ŒšðÛ^4¹ìƒ=ÚÉj«†º»Í2êÏûúóï¯ñ[Õ¦˜ÂìTC¯³È>š•µ#lЊïV#^x¬´6ŽÓc[]Gv&}ë©ö­~mižéCÒõ `=©sN[ņZÿƒhyòÞvše‘¥Y¢%}§Žkœô¬Ð¥‚žž-“m¯YFý³ú¯¬Fý­Øä‹êµa“w£´A»b‚m+Z]‰šWÝÚN´OL 4_B§PF€`¹1vsœ­5k¶Q›‰6½R³³\µëŠàªÍè—`(—ÃÕÄ›l¥Y‹úÛ®¦=Ñ ¯Îõ‚œtßêÓQ€sðFýúvû üˆ–½5è¿ û´2mƒ<Ó ÐSà´”¥Úüh–ô=EšgÔ߯QÏCúmPmþ³p'¦fçEv+Jµu}Ùq׳÷èß¿Õ[•ÚmHŠÁ®Ä†\´×E’’xSÝimCy5ö/ÞÆƒ®TéÞQ7ûô˜åŒ P¿gÝL´Qµyë^ªF€Ô žà9—dZª­§޽ö½¾U;º Èõ‰jëÁ¶Ó°×r,ûÄ´LµyG8þhÒŸ¨MØ}ïIU›ó–™a K†G \–Ô{ñª­$R75OßvÀÕ[¶«¶Î‹h†jóßU– Olµ1¸:«bßõWm^ ÿã1ÿ—zõä…jëŸ/{ÝUmV§êª­×zhåöw*ë‰ !‹9uUµ¹ÚGtPµÙ7 “j+añ2õ¼Ág7b’T›oâÕmÚôÇ1êY”w"·«7göU[6¼C4Nµ¹¶e÷›j%ó;Ë0ÏäxV§Úzâ“{”j3Œè˜j³U×ÙDÇÕ=ÑQíƒT[I{Þ³Ûm?ÇŒc´ºQQêîï©È#ª­÷û£Ô¢|ï诟ßW˜€3qgfd`Ö}¾ eœ‰mM%˜ä€sñY€s] ÎÜp*n ¯¿î8){.¦ sîò ÁPŠ ÓÎýûwÈ)Bê9µÛègœ¶jž–¢áéÈ+Få;Éqè†/Q­ÿE‹·ÿ.R/ÜrPg=â…\Œ˜ºßf;Í#“„Ü€_ŠP =¥ I݃ßÓ›¥Y–àP-<óð†jc{¹ÖÇã×EFÇm)´(.¼^fJ¥É©I‚h°1W¦ º¸ÏC¡Ww±²1uOY£Y¹P\àâÄEï I2[¾¢{œÍ]öj”4? ZìÄrw¥f%Œ×ç;Y+U ¿FÄ%Z’C´Ø‰7ŸCRÆ­Ýêw\-a2è”ä:îÉ ZlÉé’Ä0&ê¾g§V-ZÍeˆ²PBîÝ"Øm]±Ö´ì¢•£¦ÀNÔí´{ê1i÷i‰M‘DlÁt>Ù¦V@´Oµæf¶¨¡QœKµÐ,bA”zkB©$ÅçÜËȄ̛úéYÛý•¢½Ð™€™½@®-ZyóëÈŒ|Æ¿í]?xp­$žë@•gÜ6Dv8(_Þ‰èâ§èç•lœ¨»«JUWzñSg¯ á^Ï,ÿw |ú{¡·ïžÏx×Ià©RÅÿ’™Ø¹.êüEœ´ƒeïÉWIàF·Ož›úH¡ZP(€°éÔ€mozÅ!.’¾ýn£ÒÍ [ñCÔµ@Ð<G°î_àýÚ%Òw5Ïç2óθ[¸3Š2‹ò$²î!úË’'kTÇì—ÎG™?Q.€€ 줷ëo”Ÿ5ºBòv2gÌ?©Ÿ: .¥fèíZL«•jn§Ü^áÜÉëø±']£ý(@°¤ˆ7ëí{*ö¸*—·ë¯Ø e&9uòÝV[rZí¯P2€`¹M'õw¶  ‰òßÈeÈǹ‡£NÒ-KNÖ%–hby»Œ˜!ò"óRû-sîäí%‹~tBÉ‚å,ÝÐß'&Ú ^ÙNÌTqò™­”jÉi¿DÉ‚å*]dÙû±˜q§‚¢ƒNž¼]ôÊ’Óæ”DÉ‚åaÙ»JD’’Ôég<`MžQúµAÉ‚%EºžeïK)C$½åôéËfVðÄÆ]üÊÁ(@¸”›Ê¶·ƒÒöŒÄŠnïzf_GŸé( .]º±^¥%ŸWΟ¼ƒtÞœàÍ)Jñ9¦´ —Ù¬o7Þº‰–º@òdúšú¾ˆ®ËåO¼B¹æ_ºÆ¶»«D\9ÍÒ·‰1£©;è¡\Þ­@"Ê0iæ°íŽ W™ÛæC“_ÕÊJ½•‹W¢X}^ýþmŸÀ,†Ì8ê¸NÔ(…ho„ì™u7½F-º#Oðìè"Y}ÓsŒ©y˜ˆ‘M­Fùz<èïáQ³SvÁiUšJ.1Ú%ímVgÄØê“_£YwÓ­¡ÓüÄá§æ¦JëfHµ‡¸ÂØÏËä&f™vÞ»Wnñqõ‹S uÞp#¯I¢U( @eÞe~Ó˜)­cLÚ’ CaÌp½šð9uدý‹‘º«%óUйšÕûÍ aìéö;÷ì˼JLûï’[úHjdäý[OÅ]‰?‹‰:¸}Ý)”SÍxfâ{ý½×jøÏ°&Œ‹6+ i7ij:~»Xvÿ‘»Åk³5›}SÄ©Yõ1²_]›Þ=×þ¬¼:sI•ý”y¿R¤á-¤ *Èb†dëþwíóß4¨ ’¯ÇHcÃ$Q$5(Ã~Õ E>±`®=¼A¹öÝÙMµiýÝÿRåýìKlœjæ«È…FâL½2äõÅ¿(¨ ‹=Ì/GëTI6©O›ÕÀ¤¬ž£ºµivŸv°ï5Ž#§½¾³J³ÊºTÿuÂØ«®$]š‘÷/±U­rrl¦_.)U‡9F Ar…œÇîxÎ1C´¬Eß\Ñžmä<ö‹ÛuË4›õ«ÂvöˆR"›Ä HL.ÿñ%.özÌù^ªTlÁà›(¥@‹Uî|[Möyo²$ØË¾¹¢íÐÄ@£²jk4«Ó˵ðyãoßêsÜörŠöÒ—ùŠXÚkLº]>înàà#ñ_¦¶=5;ˆ–7_¸m0ptaî+4«Ñ¿Î¾A’;J´òÛM~Ä­ÙKÄLõ_âQ@AF£÷’Æ—TéCa}eºhɲæñQÍ—M›Å†dù0cÉ‹¹šÕÞ 9G»À.¢½¬•÷³ ˆöR­/PVŠ`j¾;kÎÍ]:a(ì€vœ’P×V¤µ‹=ŒMÈü¼FÝÎúöc ƒ·žk¥šÕ¿A¹%7È+£™–{5ò~!Ñvn‹² T$÷"*¦š‚¥mP·TO¨móÛ‰.LLÛãê”Zr¹réP'Ïû÷DÓÔy¿KS¤Š¼×í(«@Mú("QþéîŠOSŒŽF´tl‡‚s·1Tk:Ëõtg)ùÏrú¼JÄøÍŒÏÌûÝššUýe‹¶ŠªËóþÇŽƒ/š4ŒaH"ísEG´úíD{ˆV__B"¦DX‚îõô&)9¿h•æÖ‰$鈖4>!Úœ‚ì #•ž5-ð±ˆHÊ´‚håﻊõØ{Ä­ëéÏQrÑÊW©òþ˜vM Ñæ@”}"’´ŽØ­úþ&"B=L|%"â¥js_Äî; ’$c²M#¢­ak–(þ֗͘e+‘|XÍ`ŸÖ@„s³]ùÑÄy_EO´hç0vg „zSyÕ÷ëDj·7Ó(Ë0Qu*ÿiqË hK­ñÌü'Μd[İh}ȹ©¡ýu·ÍB´9€ÇUç7¦N¢œ×*b BóX[ZšQ÷Ôë`X´®Ðb¹žë‰6®¶2ï;•³½òh++ªÙ>™ê´E«7¹Â¢Ý¬¨f‹‡½Ó¿ž¾ýçí2Šj¶ÏUÞïÖšZAÚÓ+ ZÅÕÂä3å™êËyºf(ì˜ú6¿0†êlV/e™ø¡Á°üèäy]|§=ÏÜNY@; McìWe¨ø®‚z‚ç†çàÚúndź×è—ç76M²ÑÉó~\¥åªÅŽ'†Ñ C¢mˆ² XÉo°ò*3Ѿw³Ÿ ¬î•Ÿ¡s®‘é÷BËSÅ[¾ã ‰¶ÄD”NÀÊ C½ÖStƾw“âg¨×:¾Œ+¸´y¹º5㤉TÅ€f7Ø;ïÓð/íâ>ر†½ogtî—VOòNwúì~¿½¯—GàöUÞ/æmóê(œ€«ÛZžÓjسóB\þ‘œÇz—Hpî¬N?2ÄGüÑê쟥ÀR'¹4;ßþyœ§U¨#ÇÛÝè<ƒì;k™•G~ï6x&énëÛ×]¦¯ÿRÉvËâÓŽ(F•Cnkå}ÁæØ5»%× MÀÉ]ß±î/Ô,Ù·ód1ëþY¢ŸåýòÔ Ûw]³z>@äŒËpì0dæÂJÅU(ö²~Þ·>ŦÙu~M“Q27GýªÑï|Íôèäk»²˜¾õöÞé"Y”á:O"!òªþÅœ¿cÓuÔÆêð€L•¨Þþ|¤D~YˆªO»Êš÷ù˯֓왑îaé$ö¦Íï74¬¥Æú¾¤÷,GïÜ^2wо‡ÙÅi÷wö÷¬ÑÅk+Íl¾J܈Ü+׫aE‹EË—Ï×|–jÎà´ØÛ†i4óo × G7 )æ5 †S1vuv×^4öÁøŽ»›Äyµ´ï†i°8s¼õ®z!ŸX!ÚJC9õ¦Uåf[xc5ì¦Õ•eq=`OWwp7 5lc}W'¼/îȼNÄ›sÛ²×jÿsÓÑ¿ômʺ›ÍÇŸeퟗ±Z¾Ò˜%ûïª$YeGd^ukhÓ£¦0¹{¬yáty¯¤Õ’TâÊ2àMF4+'3ÉVˆöùº¾©è]ïñĸ &¦Y˜Wõ³ÆëGÒh­Î»«D›ÚZ"‰’ái dœ„Üß_©ï>áÑr!­„s%¢½ó[/_*ô×k<(Ô$ÑayÚœÜE§höWuý èOœ`yõJ†ö˜+Ú‡kú“ÇG?]ÆC@‹ÝD!ŠÏF¸•].˜Ï"†V$iãï$á G/Ê\š;È­ø¼WŽ¿ŸûŒ¨Æˆëïy‡g+ÏóITò¸?Â;W#ר¦œ ëYœ$µFoç¡{é1ž-pUVÐõæëðªT9äš#îâUdHkOÊÓ:dûK~"t ±°"›­ñåðЂTuì>{v&ïšÑßDUýv•Ç÷:-È9¤EŽ©B^ŸÌ»d‡¹D±Nj_”¨d—©»^òéìCÊÏn¿)ƒBNႜÁýå¾äÓ~æáD›u¥.ÓÒ‡D?›ù‚ߨ;xE©kÚq´äœ ÷ì‚^ÅÈ­þÐ¥§ym+§ÞØ>g`£üD¹.ú×kæP¾ë™¢]D¥1õä0n¯ùºa.’Të;{ËUkßâ¾8¿}Qp÷*nDÅ[µ(òžíîº}ðX)Ú -Á39ôë·)Á¤\‡Ña›O>2s°(ñÖÁÕ? þ¤²7ùÕì1qíé7¶¾ãµÄTë?+RBùñü@Ž%áÜÆz×+¹ù7ê<ð»ŸßuôLÌS–æíëøÛ—ÿݵaqè„ÿu¬ïŸK¡Ur-û‡,ß{Å^ J)L’–ôôI&ãÁOrìáßgŒüüãêÅÔkÍóúøõWSÐG¢Ú-Îï_û“¾£g®Ø~Êþ³æJ”z%$}‚'@6oÝŒ:¸3"<<ü§P5 Â×Eì‰<}ùc2½ò$II:O 'at†õ++„pî‹•öêÚ #pz*«ZxÀyˆRtj+#p"ŠDk‘ 8Û¨` r'"½Æ"dàâ!À éhIiŒ\÷»ö.ý=Y±°ʺT /š%SªC2ÄP‚hàO´¤-%4ËÆ f¹*u€%š5E´Æ+c2¤Yˆ>5›ù§î‹’œ­KJZýU¶n+éµ…5@´ð$ZÒoú«¶Œî!ƒmiˆ¾*Zý‘aÓ4j¸ÉÌ9Ô Ñ`f5Ú¯ÙÍcN‰ê(ÜDÑÊQÓ` ѲwA¹šÐlú#îCxO ¯še™\¡·Ãè­·¢Àù~ , €%,ˆÒþ>÷2ò!ó¦~ºöŽ ])™Ù t÷4¿Ž\@ÀøÇgüÛÖ½W—ii›+Æ W.¯‹dü‹š,—ÿùuÆöñVÈ„Ëñ&ÿ:¤*?‡ÿûM¦Üly¹€€‰¯¥3¹âbOd ‚fÞYíïs¢‘'€5ün"r¦ endstream endobj 106 0 obj << /Length 1018 /Filter /FlateDecode >> stream xÚ­VËŽÛ6Ýû+´”1G”øR @‚Ì é¢A í’,h‰¶‰èáJTÒ)úñ½|ɲ­Î"( X6yŸ‡÷ G |p”cÄR¥8A§QÕnþÜ ‚yžYƒÅO»…NœgJYX~üÐb½ï7¿ÃûÀ;y·ý®Ü<>Ó$*PÁR•‡(e Ê(Žp‘#JyTÖѧøé/Ñž¹ÝeyS´ýRþúø .nàŇ<Ö^x‹,b¨àYn,(J‹2Ä0uFŸ“$svù"A4v 3¼’ "Oo’ñ×r­$âˆW‰l[€N‘"œÃƨ s­4ð…‚”Åÿ˜Ëßž·ãøíƒ[6Vû;«ªïF=L•V}ç6úƒ{–ソqLŒ£ ”Û@Õ}ºusnÍë`Î9ûϼ7ðM yèÞÜAƒÂop*Oj§,‹å<2‰kÙÚb„–~[¸ÇYèSßôGU‰Æ™Vb”nïÐîÇ~»Lz}rõJ{9Ã"]8â:3a'Ý·B‹7Û!4î s Ù5„ÄñÐ*ó×TˆãÖ9Ôò8HŸð8ô[HôÝÇlT'ÅмØ^ Jæ™`®×ïj®èäûìŒÿÔšoW´ô-„úyvëZ™c‘«óí5*ƒ§F?¸˜†{¤IøÌ·î~¼ ”%8ìߦ]Å5`çþÁôœµPÝJzL3„g~\cWÎYØ7s³$úJ ø\,b`W٨ÑXtõJ` ú°ÿ¡:òzuù}qU¶ãé´„0 0±kŽôþ,€ —³Pݨj¹¦¡éÝ9í°pv'ÈÐù@m?„W9ÃÔŠÎ9¬ë™I_¸¸'ˆ_€†h&ÊÏ÷Xa‹dÁ. ù•/ø<ô{±o€›/n¡_ ‡à”-ŒYÁ€~706JëÆ·W«Ï Îä »JzJ}Ü›ßT?@a¸¶nT¥üãéîqªŒ‹gÃW£e×÷Vi> stream xÚìÝ`Õðße´¥e´ì=‚ì)…?" U™JQP@‹”PTŠ\EÊ⊠) ˆìJ˦”U(PÂî #ÿ»$m3/—½¾Ÿÿ_šæÒ¼Ë»»oÞ»õÔjð]D¤ûAº‡–C÷_éo…Ú墶Ûž!!–ß´0õä§S½O2´‰^C}°»ñm©ÝÂÛ¼¯91¡²dÐ&®¡ÑŽh1ê ÀOeíûMYbûYÓœ}«|ÈK{­¿QîŠnL— Ô߈Iš¬ÿ|êï¥lHE—Àg.ë!"bo¼âôH©ì‹ßîøÒ&«oHI\3«ø©ƒ/—7, Âȃ¨wŸ”)òÛ¹¥O\Ý5¡j¥…¥¿§ÅHÄçÛðާ_µ•IIÚC{ôäÖhQûù©÷J§ßK)zå6ªÀ÷(Ëô8jòäí‰âWtrv¨¸é²ß4åQ®%!š¢yƒæ5V¿ heõgQù>Ì8³qXön3¿59¸ÉÊBÛÞ2ë—7’HÊFó«ZQ»Ùs3.¶­}Õàc]’2ã,LÙ*¡.L¨¡°m/å¿ã[2$Öí®`ÊÏlfáp¬ªi‡<,_RÙÃb‡#.èP‹ wU6¾ãX‰6,$AÁAìÇ> K³ôÒS¡Ÿa ø’eÒ£§´wÊŽ÷¼åÄþ¤Ÿ˜ûîèÁÝþ6Ãò+?*w‹À‡<>„gâ*É5‡ ø6ìžå‰wCã±|Ç Ño|…²?8\“ÏóMÒ ËÀwì#Þ›[DNv¸„z³ù¦*`øŽßèßä/8\‚tßÔR,ß±Úpä½!4¢£.V¾½a «1r€Ï&†Éæëìİ–Xà;‰aºõê'FÁ®H ‰qcåÐ $þ‰€Ä(Ý vcèãßO;‰¢†ûî•ï'Abøpbq; ::;il ’2$b^½oW ú‰aÚÐ@bøx¯Dÿ™îÕ‚˜ ÍE"õþ±ãÝ Ïÿo’j+ð9Ë7Ìx 41"†Ë 1ÕßlÓ…é…éIßNÐ<„¨À‡¥sñP·ß°é¿x“£«†½’ž-¸ëÖ¥ÜÕëamº¾ñÑ÷ëdX¾WÁ•#¿7uÄãÙBÂÛ?ÿá’2M÷|öJp€W»6³šf¤((HsoOƒ›cï˜?'DÊvJz¦oûaJT·fÜÝ:™ê­û ëÃ9ß+IbmR®üf–|Ìs=ZTå$Zô‰ùxÙžëÅoÁ¬6|£=ŸïºŠ›x³üŸ¥ íÙ—âêÄ{uj×·ÔêKý‰!ñ[ºg²ÏüóËü^î÷XëzáÅwù•TnõìkÓ(w»cüU¾â+`~÷Œã)g®?ÀRðbGºhî’%m~€øöhÕøœû‘Xmf˜Ûð‹Tª,Õ]þ¢þ7ŽoêÛÕêû—§¤eåc©x§ã±MÙ†ûÿ*u㉓߈ôo¾Y4#¨íªlƒ¿)Úý"ÓÛyü];üÓ‹†O]˜Y¡ÏÝYgRN\6¹ö-ÓxD¤ü Û‡•VHXóó½¨îmâúÏ’ú~‡j¥Hë?ùÝ «#°Ia/Ì^¡,±`\=zî<ߟì[YÔ%.ÓàÉuâï _ur¤lûÑ%«A­~sæœßû°¢¨iïÒz7UšfåZØÜ«§RN^6L²“Ç ÷¢þÑŒy4öÇÒ ùqZ¦ù3D¼¿:§îÕ%çКޭР»>‹-œBõÆ-(-`ÅìçÃÊ)òœW‚}u.“6Ãxì¢ÄFå7YúƒÂc«QsE†ñó9GL^zí‡ÉCK7è·>ÿÏÙ3Ÿ÷ûô—K 9}ƒÓ‚}u.s¶v3sÃæ¾,^f¾ *¯IÍcOùø§æN=uµä‹ðLJjÉþ‚Á!«ÌýÉÊÁ…6%iþç̺7_ _`ØõYl(@½T<Ê\sât“:éÎùöո̭æí, x<1èoÓ¸ˆmD äÇýâ“ëŸE~?%%µxî»evšÿƒ!FI3›Šÿ鷺·gs³ï³ØPÀö ¹ù ª¶-o;£;ë\fTK–:ƒj6Ï*šQ±;ýç³ëE~>55U»fn¦Ÿ,½~9% Ù‰!´=oKÝ›6éI@ö~ÁÜ­9ØÒñê ÕcÔN(ÁÞ:I­²8íjø‡z+@\ª9v§¿ÏÀE~âÜͼԔ”n~³g,¿z@‹|'&†àº7-‰Jú;|EØÿY ~?âºÅiËŇÿö׸ÆË‘<0³’®‹z=¾ Sqx¢^ÒÅE~ôÂi.2ØÕÃsºÈIf“õÀœÂê^XÃÞ,û?‹Àò"{„Õ½]cÓ*ˆ$Ïî/~ÓÕjs9æÐgÙS¨uB¾ùy4>åuµ¨:UŒÍ2;æGÊO%†éR„%r2õ(©i×ïå˜YËɹ#'-“„Õœ$隺ÿVÄÐCÛ²7ø,ä¤ôK©J S{þ]3óHÎH uv_6õ‚ßs&==ýÂ…‹W2¹dá²åÆ Õ­[š€¹{/›•›§Ir¦¨@³áçåqξ ;Gš­ŸÛüÙùÊdçL\¤§Ÿa4Ž­£ÇŽÐÌåYn.ÙôcãïêµkW¸¼˜¢mcdVÔO “.í•8ik°Ø+!k=R{%ƒ÷»âX z%>–—HaAÁn#¾¯Ù‚oÜÈÒ}{_¼páœf»e“E³á;šÂ/õ˜YüÆný\H±mŸ3šœâ"€Ë€â¬ºÁÅÀ-6^²³s4Å¡úÍTm^¨É¥GWù÷|:ek(Þó™£6Ý'ã”Ä(ÞóyÑ5GW±çÓOÃöþAA>×PÈÉÖ¤Œ¶¥ qÂâé·ïj6|® ”——_àŠ^Ð Mp]5wtU힣«¦ GŽ®>náèª3ƒçèªGW‘Q ×ÙÀ8žUh~-wÏ\¦ƒMÛ×`sgp9«‡eù .Óp—ÿÁY¸¬k))'²Š.vŸY-Ä4 sÆYâ–§rÎ8KÜ2g%nùp–¸WK¥T¾ÉMáJUÊÉ›¥±|¯ÚÒ¡¢ ®DsEÝ^‰æ‚ÏâÌ+ÑÌ'†Á•hX?½Mn…8ž©D¿@<¸£ÿÛð.|¯}ä%_ª{—–DÑEž©sÃó°~ú—ÛñÞ±äAÀUÈF†ç¦Ç'™Í¾T÷.ÿ,y?µ<±èáÑX?ýÏAÑJ‹Ó®V˜x’ß|å‰ý[øRÝ»þ³|qÍâ´eâÃX?ýÐ+5,5, Ö¹€²…,®£ËèOߪ{—–»µžµt¢Ëùj¯aýôG·[´U™Ÿ21øŸ€¬‘ !;ÌOØ2Ù×êÞåŸeGÐ$óTmZßÁúé—Òë45×ÛÍ.Y˜R88d¹Ùoå!…¾V÷®ÿ,Ë$/™»›çÉÆuÏaýôS—;„~d|Ô»pmÃð?µB 'Ò€“ÆOžèO“ }¯î]ÿY6Uxhñ›Ý-Óñ ÖO¿•7»\ès ½‘pç¿]‡yáb×ÈÖLç©z£/šúÓòO߬{—–‹Ï3ußž¯7R³â¹Ðòs`ýôgªø^ ¤T¢ZǩǻB 6½Ô¢li…”m1rs¯Ö½ë?˱;V+-@Úà©…*¬Ÿà\ó“ ŸsuÜédtÚôQ)`ÁgóŸé~µæÉ´'IO}ù…~º›Î-Z³n×Ðþäº&ßio¼½»'ªÌÚÝUó£è·çŸ{iÐ2Íã¬Ú¨0k¯61¾ùàžºh….1j¡ZÀ¬›Õ5?swÁ^§MŒÝ½P-`^}͞ϗ.©Õ;kcÑdÔ ˜§˜Çý{¾wŸ~ò•í¸ÇŸB­€yªvFgp‚JK¾ñÕ{ÿ>o÷ÜÁ5©LÏ™»óQ™þíÁšÁ!ÁV:|øãì¢a5©lŸ9ÉØ à·NÉ«‰z|¯rÒ»ø6º UŒþá"*Àÿä¯îÁÔžvÞ©ïYtdîSe¨ÅøÍÙ¨_’5«¶¸ÿzWô!rþ˜Ð’Êôú"• à'ŽÇ„V˜pÖuïiÑs•¨öhå T5€Ï;ø¬¨ñ×w]\HÁÞ»HÄbwc_(€/ÛÞ‹ÚýRè–¢nþS"/LG­ø¦Ýè±ÍníÅõ £Æo®½ƒºð5ûž¤î»½ÔܿދIýx:(>äH?zd«‡Ê¾þÓ¨:ñìwg±|Â¥Qâv<:Çæ=F½±7Øðv÷åjÇ{¾WŸ¬ˆ’ˆ#åIyX$^«è‡ªá³s¼df²V®KáÏüpËÀ+è&›åUst|þÓe˜î ¸FÀû, }8Ùûæ*{í3Aµ¿Bfx—‚±Ì/½sEÆÛ!u¾/Â"ðù/”Yå½swé-IÔy,$oQ88ìO¯žÁýÍ*$`1x‰ !;¼|sÆ3ïàdP¯°„Yáý3¹ªÌÓ»Á–þÆr99€>/{Íwför³‡4'fäʘ™%OʰOÀ]òj÷¥Ù½ÚºŽ¦E±ƒ¡!9H w[&õ­±†T]*ïç~Ž ¦s–½pDA>6Ã÷û”YÄþÈŠ`¤uaù¸Õ9&Ñ×f¹à}fÐiµúG†$åþÂp§ùøÞL'V¢Fã6GJI$þAïibYú¢p‚§¢}q®ó·Ë[“Ö¤BžP Ò0Á¢p\v™Å>:ç…³%šÄõ¿g¹A%?K¦IÂR°»}Ïøæ}4ó—ȱ®•Ñ&ÇBbh'k'•LÅ9Ÿö{Ó'·Ÿ¼ïêCı¡ÒtXqb˜îÆ ÓGH ûµÇFÕ¹¶CpãASíàšHo­Ñ¶(Lf½û¿¬ƒ—ùà\ÿðŒü‡í¥¿kÏù$3}3‰v;HþpÀ=–õ£;áYè•ÀI^ÔŸ>™¸tÇJJŽš€uBÕU @ \ñ/¨èýpŸwí_æÙ½që鎳?îgô¾½8ç|90<»E}YÝÙÂè/<@Ä_naxvƒzëQg2 ÷|BÜç¦KâÙÄxê%'ÃG䦈Ā@ jô±s?„it¸åói¯D“Q{ÝËõÇ`mõ È—®ô‹ÄÐ2;ƪÙ1Xö8Mœú!ˆ/C\ #5ÃÕ6Ò-g~R{01’‰Š÷fLÑï‰DšN@bØ%®šS?„GC0ÜQ|7.<|Iå›:óCÚ'çcØ)jT~h$€}Š*-ð¢=ºŠ^ €K¥]þñAp€ü,¾ç«­£\$€»½×ÜWç<¾ìø X~8Š.îÞ¢T*7î;ïÉa’;:v˾|UzJòÖ¤õÊÕññs¬ér­OØÇ߯Ç/Tþ’´=95-Såô»ßéFâ¡ÿa=‚@‹CóG´¦bÒ&&ÿ°?מwJ/C6`L&É%ÚVàÍÓ{7,›úÆsO=ú°¬rHé{‡GÔ”qÚDj<$“5ˆˆˆ(Wú‚Ðê"{ñÖ{Šo—'n;˜v=ÏÁZÌ}†}מ[ žã9V;ƒoÊKY"ž|é΋*ö×{gw¯œöÜá$}øÕïØhR¸j&}ýïËÜPÊõÔ-K?{ç…ÇšUÕ s\³U÷gF½ýžâë„_“öM»¦ºÇ× ¹’–’¼-éçç͘óüÓµ•U”ê2¤fóÎ}†¾ñþì…ʤý§®ÙÜÔ*ÄZ$䛄ƒåßà[ö¿^‰é<ó`‘ñó…'VŒïVޤmG}µëž-‰‘fCá¦{ôåÙ /þ³bÖ:ÕáZCÁuðæô+ÿ8xî®ãµsíLò_k—ÄMçåÝÛÖ×&HX­f¢žñ¦\ñÕ’_Ø(:¯*²ò> †HÄÔŠ»ÇæÏ*ð…æÅŠŽÔrÖy‹Ó O¬œøx81õž|û›?/¹!12ƒ›¾êÞÑß}0¼k= Û_ªßõ…wf/MJÍrqÍÜL?¼mÍâ/?šÄ¶BºEʪ†êúaÕFv=:fòÅœø…JåÏII[““¦¥U±>ák&qùi×,¶0 ú"º¸Ï'ø€Üµ$Ñ[]ÚÅÈNDåÿ÷²bË—&ÆG•³ æpï‚W«Ên`Zõ}C±òŸ‹ž,­P•ž²'Iùã¼™ò7cž~¢gd[YýÝ"n°‹&ìViDXî£?Ä9Ÿàýë•wQøË¯n§W]?üÎVÃþ¢Ÿœ–7"¦•þr*îÉ ïùú—ëSnyq5æ«T×ÓÒN%'ïù3))é=b[BìÍõJà+n?G/fØþgW~×’* ݨ÷e?–z_tRbŒ­r[÷(eÂCñÜ’SE¾U«?KÅl׉é‘XdðÙ0R3øº”†Õÿ°÷oÏÆuajL9Wüëƒ.WèŒÄøS´DóSõu’½·Ó÷ÆkŽc’H‡5þlH ðq;ÂËtäïOO«)îÿ‡®Y¨ËiÇãd•hîlj±a!ÑIE¾W©…o1UgÝÐþ¦½,ôJ0¶;ø’¿Cç:ø”ݨñÚ#‡Ci¢ÀÁÄH©÷È}už²;5ýê¶/VjÎ ¢Ö+ŒOâ ‹c»#1ÀW)ÿl¾3z6¯—Šþƒëü†Ðâ ^bðÍHfcyùÇnœœTUÜï"߬ÕOÄwbÝ?”Õ [žsÞéþâGIöò¬_NI$ÓòŠƒxr‚Ì%ƶž¢¡3»05åé>[­·/bÕ¿ô|kÎ{³ãŸ¬Çˆ¸­Å÷jƒxZdÒÆ¸ý÷Ûõ©JUªóÆ–,/“Èlrò;fïÿi®,½i!1JÎt$Ã^IËJå5Y¡ÏÇÉEX6^çf-§ßHóp+Ía"1Õ¯K â9ÓQ?1Ú4iÝmÔç;®øBÁ\àµÆU¿éÜ7| Hˆ‚)¸‡"Y·ƒHÍs¦£ù=ŸH /”Qækç¾áÞ&lo„iùÞ6ÍÞTýýÖÏ[òçÄØ`Ëhg¸ ¼Õ˜º¹N}¿ïETiøŠ’^í'ð'¤?8÷ w|þ¯þK½£«ÎtôÿÄÀHÍàÛÞ¯áÚ›xêÁe»Ò)j8Ñåe&›ÌñßÊ GAÀÇã:ìò2 ×Û0ìªògUÀT>€Ï­´¯¶´:OÚ[_;pçÚNŒo[ÿƒ5ü'1r¿0;KÆCté]djû±¯í•áx§.p¦EL¿j®`¾yÂ6®JŒ6m‹åLÆ2^*½bvŽŒƒ &Ù:Ã|–ø•ÖD’a)¦Kܽ…àÒ¯9¹Ì†öþ,Ó-·Ãóæ#Œ,41Èž£;}]ÉÇ’2=·§ƒÙ;… 0Àµl:ËÇtËÝE»¬´{Š×îÒT³}¥ì+ÑòGr£0,.ÛrÓRÿÉö-[w$Æ Hµ°Ä G¾üÚÕ¢iÚ[ªGÈ3,÷EK*·4š‘àm‰±—Ù`%1È´ÄдTi‡÷%­W.ŠŸ«P¼/Ÿ32:ºoTTT$§‘ŒU5"¢I‡Ñõ=ÃJ¶pWuýhÆ•hàm‰Ñ¥›š?1Hĸ}ñèž?”ßÇ)ÞŸóRtïž‘­dÕJ2€Mˆ2YëÈÈžQOFG¿3AÎúXÁŠ‹_Èþ÷¦v¨'zhIÉg#Þ ÇÞ pžÓ÷œ–߉’&†ÚÆ^É“½’|41r¯œØŸôËqOŒ‰~ªs˺áº`¯%{øQ}£G‘OU,ˆ_õkÒÎä“gU÷¼åžòb3£cbQÉg#5XK¯§¥&³Ò2²­¿¸E¥/î;'1Ž”‰µÅ;âÈà9µðÄX-¡æKò|"1²3Rw&&ÄÅŽÞ7ªKóÚÆCHDæ]ú+KHÜ™œšáÀ Öë‚D$azïáëF°0-©ÍxÐ)<»aÎè§ZVÖ;c¢LÍGžŸòí¦c–£ãX%ŠPd;!1®5êáºkÐþ #ª›¥_.ïqd½).NŒÜÌ{7¯úN!íù§:6®*ÕÌTh­ö166nɺ¿ÿKW9sèÆ…"‡ŒM7›ÈFOE3€ž«k'w %ªÙsäÔ¯×mKNMcþg}—ã´áZµŸ¿ÓìùÒ)•ˆ*ÏËq41.µjxÅ…Ÿïpö›5øõSÆåš¯„\ÖÆ¸-íàß›VÇ+¦° ñH³e4«¨¢¬ÝãÏŒšðÉW+6î>ž™ëºzP0›…õjoÛ„D-^ù~Ï-ó/¸ùïÚÙ#;”#ªÑó­oþ4Þ°O°£¸¢¶Qœ|g‘¹ÄØZ£Ù—~Èô†ì×wÓ;É \âß]âPbÜTO;´s“òû¸ò׆ŠêЬn„HûuÎDhbüGóÖíøïüm·-êÅôйXãÁ—så®Ç–vÆ NÈŠï!.?xQ†-så¯oÞŠªÅu¶›?óÉÒ RÓöVäºß¢êßåiƒxZdÜÆ(:úMQSkw¾Ïn¨—Ø õ»îHJÚ¬T*ÅÇ/P(Säò±11¯D³¢4ќЊ;AÖ@sþAD3í¶«ù†g¨{qbXÛÝ`ØwÙ,™µëcB"ªÉEFFE=ýrÌXù‡ŠÙññ«•›’v'ŸÌ¸å7+ËŒŒàŠÖ÷–†Fÿšm×çœHZûòã‰J7F†©5ÂBbè}ë%ÆÊšÕÊ‹ÙæI›žÚ=ªGd©&Ü&_ƒÝÞCÌo§¡•ÙW´‰Œ|„ýËÁlbŒŒá¼Í€ O¡ñM]­`4ÃÎb¸ü²ZÄ(aÓ]ûÐ+ `×_¤!—õf«ƒÅló¢¡âzÉ÷ÏåÓJŒ{½ØLkŸ£W.Y蕟·äÿc»X‘Z¿Îzg½Wá{ ‰‚_Ú­ßrõºÄPu$ê¨,0,—,Ží®6Üóéï‰ñVôÝïg¢£×ê.×Qq ¶™€¶%ü‘«Îz¯»}‰šs˨¯K–¿¾=’Q¢g÷•þ†‘šú&H àó»t˜óNâYöÊ~½_õÎà2ÿõ­F²ûãÀYƒß‚í î̳x ¯‰rðŽ:nÊ$†žd¢âO8…JjFF‘¦Ó!èÂAÇ>G¥,¹¯Î¥²ørù Ê$Ó進[wpå€H a¤fð.£#Ò½f­Bb˜¼ÊZZç=kô…áÞÄØ`K÷ù @·kð¢ï!$†i—c»ƒ7SÕÅ7Sñ‘ÄX`Ã8LÕüx?x-S#1Ôéelê‘Y濉±GA€Ïc¸ú~*ïÛ6òy,&ŸŸDû\]Ä5¥-6y¦nˆ¶Áý~”ïõN,À† ß ‡lÚÍ\Éž]o”•Y"ó¸É›ê<@}lHŒ0Ú±%”jÌÌ^¬ƒwƒ£«ƒ#Uߨ¦ö~GÓ7ˆ-…–Œ®³gMq[¯„J o=VâúíóH-"ÉàíVkc»{G Ñ`ÓškfäÙ2³­Ì’ab=óë®=Ÿ¤öÇÄp‡ëED 7økÓLbàŽ:è’x21ú5À?K†·˜!»fØM‰Aj$†½r‡3š;¦ Þe¹6ÍÞUç|úØ~ ãWæOþY¢ÒuÅþ¹ußÑU$†½Š¦hn‘,¡‡—Y®MR›¬HŒ€JŒëÕ^Q I ;±H /r÷zZʤDeü<Å”wbžÕ±MÃêÁ¥»‘ÂbÖXI ýÇè•Rb ª{›–ÈôI$†$ÆëiGö'­[§ã¢á­eUÊ•CxuYÛNQƒ^ˆÿÞÔùñ Ê© wëwIð„Ì’ÏÆ›Øÿ€‰1Cº–ÌÝ”‰ám‰Q¨ºx*yû&墯ï¿ó\ÿ¨­d•Ë–œQSÙ9êÙc&~¨øêå†?“¦©LÆ£ÙÆ†4dì½Ï†Äð‡Äø¦êŒ,'%Æ/¢¯Ôƒlì•\¬øê ïOŒÇ»&úVbeC¿¨Èæ J;å«Éî5xxÌäiŠo~TnÚ–|"]%ðVŒÛˈHRF~ƒ¿6õG£B`x*.l<Ú~­5¿yƉñ“ôm+³DOÙ°QŽ!¦Ï6w'†­U¹>˜dñ9ÆåZ|ƒ·wybd«2Rw&%&ÄÇÅÊÇîÛ%²y¦d€ÆÍ#»ô>VŸ˜´35C•ï@i‚HTîã›VkS÷Îßò%wz‰í5J Aæëo¹…sÄ\x=Étv~Z­Ì×/—gƒöÌÕÿ”'Šˆ½f–‡arÎØî&rTiG““Ö+¹Ý cc¢ûöŒlV?"¨¸ÝP¡º¬]—¨ècäÍŽ_þkÒžÓ®9HçD)Uˆ½‰mËOå=Ç”Ú$譹†M×KŒ3Ívé\.1"¦J¬Ê8©ÈÚÆèÎkWÕqC(--—„ͤ]‰qëJÚÁ]I?/‹ÿlº|̈è'lX3¢dOdD͆‘>ý› sâWü–´÷¿´ë÷ÜS ‡$çÜÆ忊&²+˜˜©w¿xÍ8lzÉ–{h¸´ÅAÏåº`1±]ã±ç Ãú×·[¯v¿Ü\Ê ÓÜ#Ñò(ŠfÏ[âOŒ»ª³Ç“ÿÜ ü~â=í®È–²J¡ÅÑQ¿Ydϧ£_+Ÿ¯LLâöDæxr…º½"[•¿Ê¿Í}|ÊuhQøôk–Ãì°éòÈ¢ë'v/~¹!µ[þÀ峺W3R³”é³§41ÈâLz&1Ô7;kŽ)R‹„=ÖÇv7-[•‘–š¼3Q™Àv(bÇÆ îÕ¥¹¬F„˜,ïnHËÈõ¯wíó9§¶-ûhü+ÑQšÈd•#"$¥ç×T3¸h+¬¾.1 ›.ìDî¢;²§ýÑ/Ò¤ƒdyc<@ëÜ4“´?DÚ9í^’–kRÜUYñÛˆ"ªËZE>þdô‹1ïÈ?¿Xù{Ò¾Ó®Ý ˆuç|zÔÕ?ç¿Ñ¯m®éZ³iÇ'¢_ð±BñU|ür½‹Áaÿ{—¤\Ç„š,ѵ1„ ›.ü5vη?)]nõ¯ì??hƒN&g­W¢ÿøRºÇZšX“2ý–'† ³d³6lù+9%-SUØ«,ÃCòöÄ¿ý8•º“/Xw0“÷ʼnÜ.)uL,2ØAÖß(³•”ÛÛRKqÓúžOý_ÜÚ+)šÌ…šD:ìXéÑUµ°Äðßu÷ùôvw’b£ÊP¹ÈáŠDAËbCRɰ#¥K× #­¾” µV ùjµ÷&FÞs"bD±×ÕGWÍ$†ñyKH ðŒk+_o%¢¦£Ÿü'ÓÙ®s…¯,]aæ»11öW$Óo§~¹¤¶8“dÐ+q[bÜéÎvIÿ«W®Ðó–üy«zKs%šŒÚ—ìY"Eñ¤?k{l¾nV¸oúÿDÒG&¬½fÃŒ!ÒW5\s ›î¾ÄØJ\Kß0©ÈâLª ö|º+12[‘¦ggO¹þÿ=lvŒU³c°‚[d)cjRµáÊ[6þÝÔu}¡k®ÛãbPeý«_¼tôn’Û[.FjÆHÍî”>ç±´ÇgGìIšTû×\·%F៹v—ë¾Ä8|Éþrý=1’‰Š?áýžH¤étpµ3ŠöTq䯷òfÞ™Ž”‹QMyñe_¸£Ž‹ëÂTž˜ç¬÷Cb@b`l÷€m]|ÜšªŽIræh2H ÿO R#1QÞê(¦Æ9yð)$†ß'†ÛÇvk z%žW¨”‰¢”ùN_$FôJ0¶{àù½QÐk<¾t‘¼åì(ŠH osõzᬋ–îP.½à©ÄÙ0“³<”ŸÙiܸŒÊíX Ú¡4ƒ¶jFuÑÞø]BO4°v'H×ï‹ ÌÄ(x¾ì.þdøœ= ‰Ä0i5¤ŸHÞ¶Iùã7Š©“b† Žê)«Y2d+…U’µlÕ/úÕ·åŸÎÿiMÒžÃi™ªõ m^ôÚ+èÞ±8ºêü5(÷™Ð¿¬ì ƒçÈž½H ûçòèu_O ]³¡t8g¶ÕR:hL Yó.Q}‡ÇŒUÄ%(w&§¦eXÙjš¦GÒ›kë®Dã½w,Ãé‰q¿W…VvÁsd×î$†~óͶÆr§àWûHbä¨ÒR$­[?w¦üÍQÑOu‹lT;BT2ÄRíF‘ÝžŠõ¦|æÜøUë’öI»nÛpÎEïpc¶ úϸ>ÍT1Ú¥µ¶ø”óãfK‡UÉÌn$öcøBb\¬øê ´1l’Ñœ˜¦w&!Õà²Ä0“ µJºâˆ:#»÷Žý–üÓ/ãWsC¶žU9aXÆ¢·ˆ˜>‡6.«šL7ežsãh‹)jA‰AjÛ£U³9—Mʵöíêè~m[¿½ ǰ+à6“ÄtÚ±¯]Uu"†Z,Í3(—øÆD#'&F¶*C;l«þžÈ ý1[º*<\8œD/ž@Øþó0Q„<Í(1ø62Ÿù_–évÙÚߘÙï,d“ÜN¢¨•ÙæÊ%k비Mg?S«•ùå ;íØW»ç‘HT16K­7ÂOb]mŒ\ÕÙcÉ[W.œ§˜2.fH¿¨ö-dË”Fƒ¬ydT¿è˜qrż…Êõ[“¥«òܺâÿ-}ù 6{Ü–Ûûóøoùjµµ1²Œ¿Žô× -mƒ§Xû*%kÏYržÍ5&täŽ"ãrÉêzîÎcç‹EŒˆ©«*-WàiÇn½?FÁë\ƒ_ÂíÐÐpdZæÎt4›Ùªóg’÷$%*Å+>’¿öRô]#–v)¨BuÙãž3yšâ»å–Ég2T^±âßöooNÁ0$f*ÊϪK× žV‚™Ä¸ö}[êuÒzãÛîÄPç¾MܽÕå§ Ö\²¾ž»õl›uÜà°’2cÏYEÑìL:=1n«8iœ“É[“8[¸ ‚Ñ̃”éo}¤f2Øñ{üWŠXùë¯FŒêÙ¨ADÙÒ+Â"ê7‰ì¡ÙÝ0snüOk¹]‘Y~ºUü\?s’1=”{-$FÉjN†½’|UÚ%“ºˆC†°C€Ôv'†Z½L3“Rjw½$1LºN?£wo¸f.™>{äVÇv'Óý÷U%2ÓJœÑlñÛÙí} »¹/Šÿ\¡P¼/—Ë_‰Ý+*ªkdddC™¬FDD8ï¥@2Ý¡ÍÕëÔÝZb»*‹¨Âv'ºE ~!f¬üÅw?(×%íI>sNu? 6˜@NŒ-ŸÄÊ_ÝB{²¬ˆzèƒ,n‹†‰Áý\ùáçÆÍX±ûŠëfórêÎuoÏdX}k½Ã3zå亓t ò~‘æÑÜL u‚‹ ˆˆ¨%“ÉZ²ñXTÔ“lbŒŒ‰yƒÍ Å\6NV±±ò»¦A±]ÛºÐæÎUMÝËU«ou•hN\jµr¯ÕÄÐßýëÏw¶Û`Ëhgw%Ú•Ÿ>+>¨1¢Q³ÈîO´#í*Ôc©nä^þ=¥‰ñɤ÷gÌQLÕ¿³ŒÝœÃ:Œœ³Ù¹wöÌ?ñóôÁM[kš½º3z+/´ºçÓpÜÕ#J·Xý+ûÏÍÁ0ù¸HµðñÒ¼Ç/I¥ö'—8Îmñ—Ùí=Ç)‹¿¥”k¬uJä;ºjîLGŒíhŠïê½Y\çWýçU–p«PÇ¿ öc€ÄÐóô¿¾Uƒ¨BçWã¶:ÞÞÈI];ëŇƒIÜè™Ý™z9÷KMß;læ}aÇJ<Ò+ÉlÅnŒb¦–âféÑUµ€Ñ{>OÕ“DòòQƒrÍ&\b`¤f}Ï×ý_ñÆm8 Àa¶ïÍ~åü¥V;’:7þþöÍ•‰Ê·ê÷öçK7ìK·í<¼ÂÌ”m+çOݽ6Û¢¨×grÂÁâcª‹Ø'¤’˜«%å’…^ y.1ÒêKÙšl•¯68ºj}ctcb$Wd;6c/é—köÌ3g:ú¯DFíÕÅ5CŠâ½úc°¶÷ûœ(:sG÷HñÙF³¯Ø_Ž‘PÏÝúk.ïÙõ$ %wõÏø÷_ìRKs‘ $¢^óQ_Œ‘ôyüR¥r]qÿz?Ûôf[âߣxÿW£ût‹lX£¼¦I_­eÔ˜Ù¿ÉÖÇÅ ID#Îë—K‚Îèucbì¯H"¦ßNýrnŒîKŒ­e¨öü’C©Œ¬)Gkù_q Q§mFkÅmÑÆ=awÓ÷mü)~ÎôI1/ôïÙ¤N„ÔtO^ÙJ²ÖDE¿ü¦|ÖüE¿ì8zÍÜI~?‹ˆzükÏšë¾ÄØJÒaÇì*×}‰Ñ=RY`o¹H ?Vܰ8óÝžlÞî¥'ö¸u ÊV©®¤¥NKKS©TÇW\#¦Èíö•ë¶Ä¸TyF–åbL4ð¨7k7úÒ¯ŸÞëýkPnpãuö–ë¶Ä(ü3×îr‘àQŠù×t¼Àîr1Š"̺·nü–ÀXƒH pÜ ¦Õ*$‰üŠO®(Ê ”5‰Ä{mîW>#ÐÖ $†³8eD+?vCé—Ø¥­HÒÛ¸|à×7.1Ü5Š¢C‰á¦QâœQ3ý×ß”éûâk±ˆZßVç¸äͽvä^©‰ák˜lŸÿ WÄÜõXOtjä’wO/cK#•Y†^¡pà×è•ð»¤ôýϰI³èjþ­(`Wsõc6­æ<3“ lšÉröï¶&áH{i!™»¯îúo¿ÍÅ]Qw\óî·FØÒ”²ß#«¹Z6Ô†¦ôOí.³a&gÙ¿ƒüeL´’k‘ɹÑ芞–0Ò j]Ó¥<@}lHŒ°YYÍ1¶»á¶äG‰aáöò GäÎ0&õdÅÖV#»ZsnZƒ6c»;k{ò¢Ä ËáŒîƒ°Ê'¯]ƒ| Äpcb†Áˆ6H W³˜H$ÃÓ‰á%»1î;‹À@b 1¼41¬4‹Ýûk”ÛxÄ@b›ûc®&†I`í†sb\—_õËtØqÏjÐ#+ÕÃ3wÔ±u÷hªôÉu“r-¾ƒ›Æ+± äÖÀHÛ¿HíÏrë´:λ–{ë±Wó/¨ëúBw'†­3éwí+šD$vÔ°\þá¤K~qYbO»õü-yÇ~>ºÛ¹ÿÍåýZ´Z×E²¼²_k¨` QݸûÆå úfôøI@"¹óÚÕÏn”Çmzå’•5ÇßG85u¥:`<(²[s·Ê=ÿW‘Qbð|»zjT½éD¢ ^1(WØ7£gG0·7ÉÌLºõj÷ebI¨EÂˉa°Ú¿ãfP­oÕ‹lmÍ©CTO‘i¦Ažk¥š±XÄ~5J†)-Wà7£ÇG82@¡{ï±5TÂ0S)ö† ­ü=1Ô Ô \ÖcDbñ Í…Fk.Y]ÍÝ»%‹5C=&YEÑì7£gGQ4=qÔìL:˜·5:¤%''ÿ”´Y©T®Š×˜£àL—s&Æhq§÷·¤ ÍPR!ïØØ+y+ºxŒâKòØÝº‡7Ω°ÉùœygìþÓ|¹f”æªòsúk.Y_ÍžÙšÑǯi‡"?¨7íoÍ Å[a·‚w5c»‹©É™µ±Ýõ¿½v¤fý™,©ùûøó¥Þã6ù·ÙÍýEvsïÕ)22²‰L&«QÎìµ°å#85eœÆ‘=£8C¹Äh«©J’LŒÒ6å›ÑtOlºP÷pQºî᧭Ķèî6‘(ìÿë…‡roÉȽd}5/NŒ|U©´Rÿr[ünv{ÿÝ–é¶îûn»ê‰ŽîÕ“]‘›ÉdõØ•[Êw-¸Ìà·°ú³,†ù^‰œÜ#Dw×í~C¯W²Nû¥ÈJ4ç¶øÎìöÞ—Ý܇³Õ7Ž­ÆéluÎ_ÈÖ¤mleŸJK»Ä.«Ë{O6ÖQEa½«½Ð {’Š+÷iö¬îÑ¿òúAÜ àÈ(X²Í濹•¼=C½+^;I÷#¢î6öJdB·& » Ta×ý&ìªß‰]õŸ‰Ž~‘]ó'Éå±ìŠÏÆÉ2vÅÿMÓ H: i]×ÄÎEMÝáN;ù”ÛQøôk%k®Šî½ÏçÞp®!eúì‘GÚ0“nݱ.H̶)eq9ÆÙ%{{¡'Þ~a³îáûzå!ËC妢­Áú+©ø`ûä}uÿþRQ|[¸‘cŠw€}«!kù¿æšÄP÷¥6îùÜ iKoN*ñOr‰ÿ¸-þ·½;ãcMä"Ñc-9ºªö¶ÄXÇíl‘”{Žï誇c!w¤¤Ûæ"ýr-y­¿ÝÎ^èoï Õ+ê1<Á{¶”Q¬ªÔM÷h;ÑWº‡“kÈŠOô›8)¾x·AÚmkò\m)—ÿôÞc%yCn·çšB½r-\²dôÍèÎÄX(bDLÏo”KfÒ‰¡`HüÌ>»ö¸:¼¼sÞè;£ø ~~âMo)7TH MËBu¥xù¤¥ j ¦×’²yÑ!Qmp|ÞÉ­T÷Ó<ÁvHzï2(×ìY#¦ßŒnL [ªæ4‡ÒrΤûc2…N¼PÚ“÷Ø{?V¥âob£õ-§ª1bj¿E "—¶Rmw­5¿yƾ5×}#5¡âS)m.×}‰ñé·í.×¹Ë;»xh®&a°ú“U‰š+½` âñMUý+6¼41.V|õ„½åô˜hÿ°¸øË+ö§ l‘ÞU¨U¢w­AÎ-c¢y{b”ú«‘d56I/·àá5E^»!1+1ÔêyºÏuy§@b 1¼cy/ãÝ£ÜËÎ÷‡±­#1þ¹¼wPegŸz~½Ü§ØÖ‘H {–·÷³{÷ϸÿtÿKwÎ[ΩzÛ:‰a;g·+ÕwÎ]ĦP‰Ñئ Ä:zf&ß·í2¶óXù47þùE÷è^*.°÷’ÄpÏ(ŠŽ9dÓUè)ž™Ék6Íä&¬{6Ù@¡«P ^Àm#58âÁáE§uÏå :@¨¶’(TtfÕ"Ý£"T¦¬ǫ̃æÔ§ŽYyÉÍ;ê?–¢¦ÀÀKSÿ2ûü¨:ÉÑ}Q=N¥èìã» F4~Îì„cAÒŠ3±€œ©°)}þCß¯çØ¾|ý§g ÎÆ"p¢­ÄÈòýåÃŒ£°Kú­ö$ŠÄIâN4LJ¢…þòaŠŽ-1øýDI÷b!8ËÝ"¦Ê}¿û\—ŽXuJ­ž+"‘h.3€“ü(â¯ùÌï>וبpªõâwõ¤l"¹‡ à]¸Ä rþ8(@Þ?3žÓÒ×ä–4€œe4bKÞóÏws£¦:,ËÀqÓ¥$â†È ¾ì‡.{vy‰ö†$A$¹… ਢº$í]îµrbñ¿ûlù «q£÷²™ÞmBÂ1,l‡ýML½›u??NâÓ~öÑvɸÆEía³·\ÁrpŽ‘tHÝæõ±*4ÄÏ>Úò'&/ÿ§ç¿XÆÎëè‡Q‚ZÝý µúD5æ` ÖÙ< p-§q쿃^`ÿ9]ë5FÉåˆ 3¦tÀþ»îWîñõëœú? ‰¼M ƒ”@dð¹»ù~€~r*銔öFüÎÐ^´1,÷TÀ@aÙï‘ü)¥VûíuZÿœ±51Ì=€ÀÐrš‰a®±¢Ë8aÝRYE`¤ »…%†îÌ-Ò;j‚Ä‹‘!x¸FJÁ^˜€:¡&5A€Pÿ Àð¤莿|•í!ŒÓ B¥F¡ T¨ßiÁ£ @¨ u£@¨6#P ÔŠ‰¨!¾ª‡:¡b›£@¨eï¢|˽¸á'uPü#*„z«% Ô훨^ã7 ¼Ž‹n8…ïÓ¿2÷>¦o\úŒå!•Ï‹Á’ðÎÀ°f"„lë/2RÅV4x€Eà͉aÖž!›âÁ\B‘åVF– €\zɶqxÃø)ãgL 2W¸Õ…ªƒl9+ƒ ;¥;"Èds/y¶ø5æ÷Y¾™t=ôŸA\xÚ¶®·íÚ‹a¦ý`å!Í "¾g¾¹ÃøaÇA¬Gñ>ƒÄðÙÀ0=Ìj> Œ¢Ãì‹ôz%H K ;{Bz.Ä÷ŒÙÄøg|!– €W71Ìö7¬fßÉYúOY|Æ\b­Ø/‹„ù§_6*ÀÍTÑQ ÐõVe @ Ì諨õé¨HYöá;¨fפ/+Ñ-Å졆ëPÙþ£À¥ï^t5 àO&?<Ãùý“ŒE·Q³þh÷kMœ>žúTf'jÀ¿Ý?ç¬wº¸ §–ø»ß©ªC{)è‰Jœ6ÆßsOè¦\þgEÅw÷=è T"@ jCM‹óÀÊ+·É‚–£¾ÛÕuÕþ^÷p½\^|¤k­>ºGé3—¦£¾@ëúÒ/öêÎŒÌÔ=œ÷%ÎËÛÌOV«í¸¾ä÷9GQ'`ÁNÜ8¥ËJ㿨°à³ùjÃÄPw?‰Zód*Mb$~9jÈÐÓšgG­€Y·kh~,ëñ—Z}é‰ëÜãݸõ˜·»«61äÜ¿ÛÜ¿YµQ-`Ö^]b¬Ô48Fk£ª̺Y]›“¹w|®ivôBµ€yõµ{>JR«Ï÷Ò n¼h2jÌSÌã£ýš^xfhºæ™ÇO¡VÀƒÄð¥Ä0évÆ‚ù00г/Òë• 1ü-1ììqé¹ß3H ˆ Ã@ñSj[ƒ÷ä,ý§,>ƒÄ/S˜¶;éçßÿI¹Žª^ÙǶ Ñs¡Úý?MC•€啘¶ï» *¼—q,I1¤ÓeEêLåÍ ­ùI†ÁS›†ŠÛïDÕ€±KÂfå™>ÒKü* ¨Ùì´ù)q’—Ñ3}—tºeiÚæ PA çÉÆY–'.f~E @‰¥â½|“GÖÍF€NAÃÞéWÊÍB%€Î/â3ü/˜Ô;?@ç…ž–§ ü†ý'•þF-€FQÅ/-O|6è(ûo¥ÅÜãÍ·QYï<í²–Í7oW¾…õœ€Øÿkÿ*Ø¥—BBî_ºvöl@õ¾+P ÉcRÛZ¸Sʶóƒ;és—mS¥[Ÿ·àæ=ž,Ñ©6ÕÕÌÛÉÿ°®ƒsÃh-ü§ß‡5üÑè{+uœôa+cpé@†ÏÙP¸sÊÖÿÕÝeë×<9-2¾­ûÉžk†IÚb\4pzbèÖbü…7‰ùÀÌ)Ç'ÚUÙÃ_žibÍ…;©l2˜äe[Ÿ·˜ƒ)&Ö7¯¼k:¸$0tÿ`¦…}ó÷ž®tš¿dÅ›ÐÂU6Nòú²­ÏÛg)æìïVñ4Öupj`Ú¶.õfæk S²;´ÈR_¸äæ²K÷bx lµÍe[Ÿ·RÌKnÕ<k;8s/†m^“Á§+3Û¦-ÇÖÂW¶Úƒe“íIimÞ?™bÉ!³±¶ƒ3Ã`¶nIð9˧Eä (´xk±ùx…óʶýƒ;ñsÛ^éÖæ-苉‘òZ8®s§†m+ï“ÏòL¼,þÍz©dí9w•mÓw^ÙÎOŒ'ž°)ñ΀-‰!¨cpð²Þ/ùÒe|oÜå ç&Ƶ}®)›ÁQß°}Ü6wœövçJµ]fìÔlªwÿ€Û·Z‹eŸGáÄÈ}VÄÍ[Ë„8VŽ;»b«óî}¤ªˆ$Á¯qCýºý(cv†Ý.º¬/49ºêúİX¶É‰WîO U'›á}¶«Ž•z%àiÛËEÄ^×<69'‚\»åÜìÌv úì1-[ÿ:6?,ÛšŒælcØQݼmJ1<… {>Áƒ~“R£Нü—Nð½v|''oM(tÂùÀ+ÛšcÕ)búµ’y[Ïw–øˆŽX‡Áí¾±ô†Ù×é/¾×FG;·ìoë~~;˶æ½& sôæm_bôŠÆ: žSés¾© ?@ÙîWq"_bÔýk-xÎ+|=öý%çr lw.“<ñ“gç Ý.Úhyb¿¶(Û#Ëä[ˉѽ VZð¤èÆw-MZÃßÙGÙ.›·úû,Æ€Ï_~R›_Q\VüÚR+\büÄÐw¨ à·œ˜6we³’$žÚ~ª“äñ:CBE’i¨ °fŽ„ÄÜïÒLÔXs« ‘HJÒѨ °î])wÃ>æ(j¬»ÈvJHÒ B á I&5G5€0E¢å¨fU}€Za Û~…J€@FV~€Àˆ"ퟴÌDéD@@†ù­ß|báC°Ä ó›¿åÀ@dpÃüÖÏû;¡¿û‚ø;2;1ïÆ0xˆÄ@`˜’„þF`Tµ<û> Ãüa ;2¦çk™ž¿Ur\Uï(*¬÷bÐÄp³ùɆ¿Ï9Š: ît*4|⿨°à³ùÆÏt?‰Zód*ÍôÑCû ~û<÷pÑxÔ ˜u»†æÇ~—ÙÇR¸Ç»{¢ZÀ¬Ý]5?fïâþ=—Íý›UÕfíÕ&Æè»¥OeÕBµ€Y7«k~ÌÜ«×ìè…jóêkö|^é•¡Vß—oä/šŒZóó4?Ž?ÿÌÀÁ›5?…ZóTíŒÎà:2•–|yÈð÷Ù©¨B¨H ÞÂ@b€ð. l $ 1‰H ð«¸ÐBE@€¸{lkÂl…B.—O˜þå¢_’þ½:S—ÿ¨órDR_&‹ŒŒl߬fYîÐj¹VýÆÆmÍB€VáþûÖ$’EÇ.üýÈu½ ªãÄ¿7´s¢Z}¦¬JGUº¬•ëPíçfo½É×ÙüÙЖªñÌ»rQe*ó‹GÄÒîŸôâì¿?P•‚¶ ©xò~ë'­0ê—Û6ýÑ©„Q ¨LÏ™»óQäÐØÊ¢'WdÛó§é‹†Õ¤ðgâÓQ‹¡pmj<ó¢ïp|þÓaÔdìï÷P™~.÷û¦¢þ;›?'·e‚ÿìpªÀo©>­<ú˜“ÞìÊÒ«Rõ+®¢^ü2/äåÂå—ùŽEgubž´%µ à_²gW¬<ûŽóß÷îú±Í($ê³C…¨cQ¨l*¿éªwÏTÆÔ¦ÊÑ8‚à’ZKc.»¶ˆ´øèò$‹QÞDmø¶C™!§ÜPNÎÖ)‘"I—“qÀgÝŸ$yô€ÛJ»¾ú•ZTçý3¨wŸt¦UøwnþÎÿwJmɈ“¨zß³%"ò¼ûK-XÞTüâyÔ>€Yô¢gΕ(ü©Iù…ØŸà[!ã±Ó$r&‹Ÿ¼„Eà;‡½âɯù½MjìÃBðYõz<ðè Ügr2Ñ,ÝÃ)Diº‡2Štdú‘,x» ©íé»úLdæXžªR*ëQ*‹/žß Lrdº< À«™?ÉL2 1Üíå(oŸC$€÷h3ÉGfÔB¯„î“´ÜWfÕÌ \ºc%%GMÀµNP2*Ú@·P м*ûÙq€­ÆvFbx˜í„{zxà.&\‰^>”ͧayx¸…áC‰Qî¯oTá>Ÿàï]ßIŒäŒ1;‰à­_¹NuˆNy}£J{%šZ}€¨ønarý±UÛ«™€Än “ã3*—Œ½ €Ä°Á5}ã»&-Ò±ªÃ&otõœLT¼7cŠ~#Ò‘éËǪ H ›ôz9À>°>œÁ^¾t%åCŸ 1@ <éÊN °ÍaJõþFUñÑUð°Å!ùÞ?“8ƒ ÀK¼ÓÁçªðÀuÅçêû2oàŒL—wmR&(Þ~ô¦Ìpvè"oœ­ûOh0n&þìÜ¢×Ú—áöÿköVï>fîYv½Szrf™qY˜ çîö¥’~MøJ1K.=fx4gPTÔÑÑÃbb&ÈßS(æÅǯúmkò©+œ†ýàyvv»ýaðÿþUð$耗80±9…vyçÇíçïp½ðÌ”_Ät«JÔ ú³­*›ßŒ(]£šÉþ€7Û ˜¡Üs»Ö.úlâÈ~›TÒm¶!•d²‡#‹zZ“Ñ£cFGG÷ŠêÙZ&«®{•8¢Aë.½‡ÄLœùõŠ»]±á –¢ I¨YÂþàÛŒ_ƒÈoèŠ|Ò”OØšk2áê†û×"’=;sS¦M‰áª>¼éÄSy>מŸçMñdËÊÜÆ_¶þÿz{ç“o”›ÿù/MõÀZIyYi‡vüþSügŒ98êªHµAS£Ù#}†¾&ÿô«„ß’¬´BܸîLMÅ-!­R[O 2}Îà·Û;4¨ÊØ}–§_ùýãAõˆ*uõÙÚ¼,1vÒAÓAúö„FE5b{WLµÖ}FNýjíî ¹—}÷bÊ߉Kç}ôîË|¨š®ç%âZ!Qƒ£_‰™(ÿD± ~©21iGò§N§e¨f1Ü`ÍârS¯ZlaðíNf^CH ð¤Q»%Ö7§¬¤¯Þ|¢.CÒ&ƒ¦,;í=‰ñ¼á±ÕôUŸ~HÂ6?1úã„íé\Xsùª´wnX?{긘ç¢{EuŒlÂög‚Íí~ »e±ïÁ7Š"Y îó nu¡?õÜ!üå÷ý4mHë ªöÌ·F£©/NôHb¯(y|ýkuHÒvè'«÷^ñdf«.§Ûµ'y[ÒdbÃK³3Ãz¯ÄÎÄp§Åe›üiû_åü3»µyNï¹Whp¦£_«BÝ<­ìS†i»ó¾Õn‚XDÄôH,2˜oÁ#5“‰ÞäÁ(f’½ÝûœM¯Wf[^òç9í¨l|‘»c‰h»æçá·#$ý]ñ®êcØöEȫnjç[hb‰ÞäÞSe œõƒ¥Uägu¿]¬LÔ3ݽ‰±7lûoab5Ž=ïeµ›ÿ*SsŽîD8í•hd¡WB㿃‡åô¬rÀÑ÷Èø¨¶¨ÏoÚÝ‹»¥$ V¸11vWî—¯¾:«®hà¶"¯‹ãÞD”Æ×È‘ c»“ÉkàAEφÿ댯Òßz‰ªŽ×\o¾”;ÖØ>U/1ø. 'G£ð›~÷¶=þ®7^À+ynV2ð#3¥;œôN>–QŸ×æn<3NÌvÜ%å'ñä9˜E<"1ù!ŠŒ÷ÎjßÍÄ*þä džÛ+M{¬*w‘;/RÜdŸ61ˆ§eAµ1nÿõZmªRZO;èËñHÖepƒüvÝœÝõ¿¹»ƒ&1H$zÓBbX9ÃQPb´¬T^SJÕgãp99ÎùwõI‚;û-FŠ4W—Š©Öx]bMg8 KŒ6MZ÷xeîîX†H p›+¡Î¾'T¾B*殓ê®HÖíÇ RÛt†ãÿÛ»ø&Ê>àÿË(¥Ì™BDP¶ÁXADÀ‚œPDĨˆð: b__ËF@0ŠÈ¤ *Ê,CʆÊÞP(£h{ï]š¤—Ë%¹»¬ß÷óѦIè“{îy~yn>>íÇl•€zUÉ•÷nkÄ.¨îÛE׿:îÇ|†cD'ÆÒÝhtÎCŒ òþÁÙ:*óôTû­mA$Rõš¼pÕÖå;üêptUòŽÑ‘˜©ÂPn§Êàp—ëKžÎpŒ’­’MD&ëSFǹU›±¼ ¨™úãê$F÷ e²Â 1„d%'ÛfF›“œl;'ôdc@¯›ÑžAaûéW$†Û5_¤øÕ^Š$ÎÇÅ}TéfÔ'†ã>—kÐÃë~ÝHŒpF­¬A¥KùÄpº¬Åùù}ÍKPà>ŸááÓȶӟўävb9¿„ÛP€Ò#ŒðicêDýÃ횎×ÀP(nˆ”M’ðIŒ;†(^D&†Ã¦ Ô ðAÊßj+)f¬Ì닜GJ­Ê7 ‹@x&ƃò÷Ä,X¬Ð´«æ²å]_Ī“ašÕ†+¿@á—¬Ü[%ÿk6ë:z„b¤“´ë®:øê[%öËZÈé99Wåî*TqÔy¡’Å>úCЉŠõ¯2ç\ËêÙLââ²@8KœeO4 Ò÷ÜéÞJHt‡Š¯pGðŒ /Å,b4(4†íÖsÏÆN‘˜HŒ]x!=óøJ·t ÑÍ#_ÛÎùŒBŠ­u÷ž;ª¼Ô{* 1uýešæ´\Ï5ëx¯d$„\bäÕÄ"1ÔRø¡åVÉšxãqÏkcø7HÅV CÉÄ{‰!“˧³6ÿ¹Ì<#m‚écãД”îÉ%%%%&&65 Õ«'Äsëöj)û³<Í®Ð@Ê$Æ¥[Þe‘þ¸vbçšE³ÓLǤôèØ&±nµò¶Ë±ñ·îHLLJêšüRJJÊÛF£Ñd2›ÆP4åÕ™aÿÜ䡞q*ˆÙw%(‰ñZB¶B‰Ñ®}zd%Fá¹ý–Ïýï'ƒ_~ê¡FÕâ,áohÔ<©[¯×ŒŸŒO3/Y±ÿøE±¿±¡¼Ž¸Ìhnηnb‘`i`'·mH_l6/IÿmÛáË^ßÞ0aìUõãGš+5.|=øó½Žêϸ扑{|Çsꈽ’êWÑ ªÔoÕ±×€©3­ÉòõnÊ‹Khùƒ%kùÇÖû|z˜‰Öñ?ˆp7÷ý4êùû«ëNƒ(Y¿ÃëcÌÏxüW»*RyÓU•cOù~ÊÕÃo¥ˆFœs,WóxËÕËXÏ…­Õì±çÞ9ñ»_7º¬Hm̦۾ÎE7"Wçöˆ'CÿEg%¼÷äÊ/û>\‘¨ì}/™~ÜX<àØ[™ë`\f\³'‰ä˜Û:2¯å)\+ç[ð_Ùzj8s½\Ø=Âz:§”ÞC‚‰q5ÛêDVVÖ?+ÓÓ—™ç¥}ei|#å™ä¤6‰ UâmÛŠ1•ê$&u{yЈñSLÏØF…kÄŽ-.P¥)â®}¡ïúâçJë’Æïñéý#m`»š QÉ;ÛõùøÛëÿÉZ—À7hÍ­ß\/J YP cŒ‚íZ1÷¬ò–‚\ÿ;Æõ¿í\ÿû#=}¹Ùlžš–6Ñd2½k4HIéÌI²¸?‘×ÈÀ«oqWQ×,šÝZÛç¹ÝIÂ{ £ ž¯¢aâ+îJ|0©KrJ?ãpÓ„´9æ_Weì9Éßõ8ç3Ôí}=iõÕi?ÃæÀo3F¾üÈ1ºâÆ0Õ^ð^¾’¥$ÆwU+—Õ’îÖ»“¬Ú$«Çwù*\îqññ¹w4IL¼Ÿû—Os‰ñr ïM#ï=“Å×ü‰i³øËXÚÆ’žyr¶×­ÿc)_Òüt«ß¹|ÛÉåÜ™ìì QÙ‘¡í¯§4u>;ðŸ)¼|doÆœò–ÜÐS[bO_ÉÒã6Cý{}&¥Ø`£Ý0¾Ççúû ®.äúߟ\ÿÛÁõ¿ãÜxÃ÷…²œ­ÓõÜ%eϧÇS™¼%!„Ó½(qf¾Llkn£„Ñ껥Z·JÈ·¯dŸöc(/ÿU†[œò–Ãþ$±‘œ¸k_4š™Pk™llzÕ1³,É·¯äKŒ+í¹ü«vÍ¡\ò°UBƒ",106Š>ùý4e;Wð.Cš/­sÜ ëÄÈnN–³¡Ê%æv'·÷DdbHNþÙúÔlÇ™m×ûø÷:„ ËcçÉ÷Ç:5üŸý”B‡£«’¿’C,1’4Ý6¨Qn¸W#1¢Eî•e¼iÿìÒ)¿:œÁ%õ+9ÔcӿꔋÑ=„Ç&I·rÿÈú÷œ~Sñ\*åC@‘íÓ¿Kö2Pb ¯oOAï EJþ¥à_GbDEbd›í÷ÕÙn6Û®`YjNäuœ’~d¾g‘žáyå(#,ÿZx®u$†ž‰û|† Â¶”½2‰üÄ eÇKw£Eéšµa:²Dbø°I¢hbàO9WáÍpÝ ^bLThΦÊaº‰EÞ¬œƒÄðÍÁ’JM ÉÌ ÏÄÀVIôØ£Ÿ¬tï+7±ña¬ÀH ˆO4ÎWºˆ3f¥, N]|!Y!Ý7†Ib¼×nA>:Oˆ¬¡-Šu°L÷ÂVÑ¯Š··H —‹ÂOK÷cÉ6Q…£T¸ìÇXUš*tBz)NöáwíÔUl ßÜ­¬üÆ^šØ*qüø.Ä…Öõ,Š+‘½Ãî¬A¤íú[¡·vàÜîÑsŸÏŽ+¶ßY`ä×úÝ / {>>¾sb?ˆ³Ä9çZiHGµLçÄÛI€‰5ç|rü[ÅÄÈ®8Dé¥ Ä ·qóK„ÄðCÞ Œå.kOÿí¹8Þʉ¡Ôv£Š‰‘Rù¢ÒKÆÄÑU—›l:ÑIÉr#91¸k¹U²ŽšÎòÜNˆu«qÛÄøMúh‘•Ž—£01rÏdeü¾xnÚgÃßêܾeãÎâ5Å»“J¥,ð’7"$F$ÆEC6ʃܟDb¸¹zú@ÆêÅߥ}öÁ W“ÛµlT;^[” ºøÚ[¶Kî=hø´´´ïÌ#þvñºoŸ²nÑÄ@d„wbt¬z*ÊCè.£QŸ×NïËHŸ?-õ£!}’ÛÝߨVq<·jŸÜû­ácÒæ.ù=#ëŒË‹kâ¸wêcœtøÜH 5ãëÛÆç!1ÞYË*“Gúì éÄ _·JÚ>¸¨ B#ç莵˿OóÁ›/vi›x{¥˜¢|(]õ®æ&÷yëÃ1ió–ü±9ëŒ×i¯W—Ô®¤ñ¼x;qœÁ !ÒB}9þ}¬Ž}DíÄ®™®ÈÒ𣗾ÄtX2‰aÿøäô”/Y¸¸Ò®¹–ë±Nü>ýAþuŸ{|ÇšôE3SG èÕ1©Uý*Ö¹Zc«ÔOlÕ±×€©3Í‹Öì8îûT­‹cHSöã‹^Ûúö|Ê)û~âºØ:—V#ûTèŽ=÷Zí4—h$÷Ù}wÓ±\ñ^Dž$õ¶ÜüU–(~ħr=OÙ´-Ò ‡¹„yÒ¸ßz59é¾;«–*ªô•nO|¤Ë‹>“f^¾vçQ®=4k©üˆ‹è»A’û$C:z`q¡C«‘*t‡ÄØÜ ÜŠ.Ñt £a*ÈvM*òaÈõ=¼Ä`wUÑðS(î,.Wd•ãâ‘ë~5Oú|Ä[½“m^¿z9k*Ç×lز}rÊÛ¥NŸŸž±ÿô5ù«c³¶âø«è¸Á“ß—álß–zÕÖj˜ ÝÞs×$k[Px‰–ÐrKTrÀ!§Ä _ˆÜÞCÁK öD}=?Ms›EžgQ ø|%±Ä(È>¼sÝ óäñ#÷In×¢A [>”¯ÙàþöÉ}†Œ?żbý®£9jÔFμkªÔ:îóé‘Ér{myãqO‰ðTèÆÄ‚³{þžÜ«&=´°@ñZo™©YÏmm¯uòeHà=¼Ä`/´´K¤3×y›ÛÝïó•¸u9ûDÖÞŒŒ•é æ¦ûÈØ·W×¤æ ¶ùéËըߢ]rïÁ#?Ÿl^±nçÑß0ˆöĸ°û¯…S?{û•äNIÍ 5ãy%\.®*UËš²O…nLlAê°6o¦èG§DOÛb DÞß³‰ª´@wýÐ-Uk{bÈžò+1 ·×‰¯Q/±m§)ƒ‡›¾ùv~úúG¢nÇAô\‰æâäªÉïuo–`9ŒUë¾Ç“{¥ 6Ž›Æ›nž<Çl6¿Ãè-ß`ugXÇòO…nLœ?bì7sÍŠû~>÷¿)ñüW2iKzÝ*ñ;1¶˜Õñ3ÿ¿-¨g:Ͳ%†ìgF/]šþGÆ–¬¬³Ù×XˆJçðD¢2Mº ùï²Žå ¿keœŽÏ‹æ‹ öc¼‰¡âbŸjÄ% –©fº eϧHßM ·J ß±œÖ¤ï¹«øè*+b„g#Ç}>åQ°åóŽñ¤¹óÙ±+Ïx|i5¤×͉‘UKOzj4ó&Ëú•ĆXb\ï¡!F?â,ëttUàcr¾#zfNè’@»MXsÙû›Ç2Üèý£Nµ/ÿTè*&ÆÆÒ0Ö8–K¬/ DRZÅĸԚÛ$©;%Ï¡\%ÎW מ÷ÆÛ!“­µ9έڌ äõ(p-}@5*dÊtH¢«~ôîÒjdŸ ]½ÄXGüèݹ\òaȽ51N5"Ë£Òå†ûwµ"s¯F¼SS:Ç1÷}’!ùΩÿ¥¦ónªÐjTKŒ£1?9§B¹ê%ÆÃºç·ªQ.fjv}ý`¤ÇÅ¿£[hJvœt—sf½:­FµÄ(X•§J¹ê%ÆÖcê”Ή‘Adûôï:nq$òúì¶ÇÆ7§Š¯þ|5D[M°Î†Á,Š¡˜Û=ÔœŸÙQ[®×¢¡ÛjQœ„Ä)—§>ª-õìÏy!ÝjÑ›„›S„’Ìþec»Ì»ê­‰µ‰¡ôÜî¶£« Åîd¦Žél|Ï 1¢x«s»‡Šì>ÚÆ‹ âö‘²•õ³("1üõs•*³d¾rÜðœB—SuVbZ ÑAJ ÌÔ ~ºÞ^Ì–û>¤Ø5ÛƒSK[ 2çЃ“gPóþ8ѲÌ|ÔBôu ƒ%•Š@fV˜$Æ 1Ïþ%TˆèAܨæªSw—Ö¤Ô7ybpêéwÅè¿ï!Ðé ›h¢BÛY•Ãen÷s­ˆîüú’@$x¾sˆR°X©»©üàa»cO'”XC#…ú×’÷c]æÿMoñ -P’ßû1;=g‰sä/iJ¾¶Ý½Ùx¾¡?mG¹}o[•»eÛXÁwVmv.¼ZäÚ' ’0ìTy­ûÝs<=‰ÁKeŠ¡&i¹"‰á0´ñ¯ÎL µ×â¶„6—ÙÈL œÏ˜l?(üƒEbÈàþ¾qMéYÆ~Þb]Áû|ª¼÷ÜòH.™‰A÷½"ÇÛK#ºãâ±Ý{V¥ÿhîO–ÖtL‡kÞ#gQTw-¹­ùe¥šdœÁEë;€ýHŒ0NŒÜìã;Ö,2óó0¦ôêØª¾¡ Çç––›\Ý,^OÖöv§IÙw½†Ybœ¨ÓÄÛiA‰áóÄÆHŒ0MŒ‹GwoLŸ?ó+“ñõº$5«W­¬µ«ÇÝr{bëNϦ?Nb^±6óÔùì›ì,# zl½¤{ÓFóãHÝ;Oû²/ lCà ":cçÙˆLŒ\ûðÁig~çVIü<Φԙ‹Ödì8.xQöpË\ ó§©Z¯D½7m'Æ¿†úÇ}Ù¶‰AÞž ×ÄðyŒÜ¢DŸÝaŸWOîÙ˜þÔñ#ùiœï­W%ηÔILêúÒÀác'™]›y0[Úí& ßäó¢Ûv׊¨ëhc쪖xVz¯“àJa„%ÆÑ„>{B}Œá›ãõ‰iã~g`’{»GÎuápæ_¿ÌM3½ß¿WçÖ÷*芢lõú÷·ONúñ„?­Ì8pÆÏ{º¼BÄtÝņ‘íU{ÿQ„ÄX’ð@+kb4­6|¿[yâ_ƒ$áIò31ì%û=myA_b:¬v+WöSˆU¼v5»1ÔàÛëNå’Øœh¤nbäÏâ¶0f¦šø-ŒV‰õ«è\60¸í‹ô5;Žß§>òŸ%í ûذ’ד¨Ê°]®­Gl´I'Æ•ÁÌ+Ò«J/lý­Ä4Ÿœ#Tž‡½Hä}*tþ©âÕî#¹Ò}wÓ©\ùO!Vój÷¼§5¤Ñ$Œ8Ç:Ìp$’¤èã‘k5Oú|Ä[½“mQ¿zñ<ï -ó¼ÿgüsúúÝÇ/+UÆôùW•qAºœíz.÷¥žrl=$Òu)àÄ(øþ¶ø¾ì¥8õ‘&æÙ®åyè`­‘ÜÞCAK vº†Ñ0•Fd—«À)ĪÞ#¿,QÇïаÎpä¾~=ÃQ01nfÚ•‘¾pnÚ¸ƒ-ùP£8Xòa$—+Öï<š£^m°*Í +s›Ý\ƒË -Ó"í2[¼=v] tŒq|bMÏS¬ü‰ÁÞ42 é©Ò€œZ ·GòŒ.ï¡ %»°„–ë_%ò<‹bÀLöÄÈÉæÏâíͰX™Î[Á_`tÑÙÌ“Þgjöó G~¦æ)i_˜>6¾“’òl—¤ûâKXãA[ƒûÛ%÷DÅ<ïr·Ù‹OjøéÃ51Ý­÷^ú™¤µxó|Ö†©ƒïcJ÷Ý+5.|Ý?7Vg9¦qêY{b”ÉH…Új`û1d²¾¼e‰˜ëŒ^çv÷³ƒÙãj¶Ý©,»–ÿ;×ßpÝ}jZZÚ8“Éô¾Ñhì—’òrrrrû¤¤o7ªÄÇ—½´ÈPôCc¹"Z{KŒæ]5”ޝb¸#1±mRç)ƒ‡›¾™5?}}fVv•äÝ*É=º-½YÑZÔZ×" l¾8¿1·ùÃÔL‰[š=ÿÖØ·Èí—÷­_>÷õ¢3n*UËëV‰ß‰a$uÄZïöPô£S¢§`ÛD %¤¸øøøjƒ¡!—%%µããå””×¹üøÄdÏÅÉ<.V–X¿.Šrç´%ˆ®pöâƒ:Ë K¾[ï51ü=Ã1\ï~·twˆ@Ë¥OZGk–ì¿ï[ëì¹¾õ3ikñã¡ï:fôŸh^ë•Ú¾™¶VžMÆ+›¦íP+†¼ ZKÿÒVš$aϧÈ.7ÑÄØnVÅ÷ó¹ÿM‰·ì­×–2Ld•é`›h‹¥¼Ó‹m̰ÛÍ÷ø\—e›ûdC=?l±Hìèj g8bnwE<^®ÿc뢿÷žêd ÃONû1HæÄpø%o÷/_ô¾¯4Q­'Œ³·ú?T<¹fº±cm†bï~~ô[ç°£,éWÆt•õ'1ˆ•”*®¤S¸¦eø¨íGWY™;˜š{>÷ÕÐ’N÷ÒN§rƒ¢81Bt¦æÏ¿±MTZð,¿{­¼é:«Vb)üwѨgǶƃ½>LûéÏ]g¤ÝMüÒ¾¿Nùd`×&¥¸‘{ÓçF-Øo;¿î ~›¿„1Û^yØ*! ‰AÁOŒ¬Zzî ¹ÑÌ›¬ÓÑUy;˜Š‰‘‘ÀmØ 8æX®àÈ(À3Ã}«d‘ÉÖÚçVmÆòºô ÛN†ïf9­‡|ég®Å;ÌŸ½Þ¡~ѱ®rUïHlóDw~g•iBZÚ4~´<#-í “iø”g:=’xgÍx­ån¶uîúÝ)«:eÌ—\^hûw,<žqëÞTI¨Í316&†é´Æ±\:˜z‰±²$UÿòŠòåâ.þòY_ý•-®Ï â6Húžt^‹>ô3¹ÖâÛ3ONýÔØï…nIÍ ·ÄÇ[î«ÁÐྤ.=SŒK›·lëQÁ ™© 1]÷)ÝjÔKŒ•q¤ï¹KñrÕKŒÖ‰æ|5ÊEbÈG`ØÿQÛÌHX‹ÓJÚ¢|yª%ÆÑ˜ŠŸœS¡\̉n›oÜîñhf:Ý÷wD¬Å˺f«Õ(OµÄ(X•§J¹H p5¾áp·ß½úg¤¬ÅÃꔇY‘¯ ×"‰>ÚûU¯E$|óS#'z×"‰¾Y·¼ Š×"#ÔCõÙ´"ÊÒ=rü•¬9éù¡ÚzTOŒàÏ¢(sb„Þ,ŠQÆÎHr«ÓÿþW«¡Æ9ÿ~ZHb„Û칞`¦ffjFbM©éÿ“üéÓúG4Õ¸ØÁ’J ™YØNŒ<Ü×[%X(ÃÀp™¥²šÎ¹9ü?-ý!Åšcçàt°‰Š-P¿çʦȟáÈvS6—å¹¹Éü‘i¹Òûî²oœñÿo\|A©¡o÷¾7Â@®—5<§Ð·³ÿû1jcFƒB 4ÚïžK‘?'šýâg’7ÿCBá:Fóû˜&—Y‹JŒR£}o„\‘‚ÇJë`!8Éáá’í° –Íß¹ïŽ µ™Ö" ,Bê ~÷Ü;æ] º'Ï‹áêܵ°\‹î9A‘‘,#ÜÃ%0œfÎÀÄx#þõK‘‘²U‚ÄßĈÄÝnN˜Ú„qbP`k‰ÄP40‚³ß” Ä ‰i‰1~Z^8%†[`¸T Vb|@C ."}ͰM ɳpœßa‰òwÔñù¬„W©ÂÇgÝÊõø'‚=_‰çh …C|¦‡Å?+JÓ«yn¿UN½:‰!0#ºÔF3ŽZRʉákˆ¼»ö%Ò÷Üé\®øÔÓA܇E"+NÑó·6Ùà¿­;œ°>üúÓI*Žc ·x|ér"UŸ[>Û–å÷%ª™zÕµ<Ù¿Á‚~g`bå] 5¯]ýŒág„\íP.yÙšÙ~îÕÖúè’yÁAëÃ%ý_¶ Ê6tÆÇ:2`©ëñ“‹‰š¬rj=âmOÊ^ ÆZA¤)7ü”Syòƒwö¡Ãz.ªW»ÏÒjHG fÞðœNϯoò°LŒçŠkCSæ[×çN×a4Ô.Ó­õ§1šÇÀpÇc-N×p_aºžÛ‹ËSà,è3É=é º÷ÇX§ã‚©0⼤ٴ¢'1 Cõƒ¶1þ±o#«¡'óôAçÖãqqï‰AïRe-.*¡ågõl¾¨Ðã,ŠƒwE÷G^ #';ûdVVVFFÆŸééËÍfó¼4‹±&ÞH#ïí”"üå )Æ2“lì ·JÞHfkÜïšl÷Ê¿’Ï‚ÿn£‡mWå§ÏÕ ¸àÐzH¸Y’ç“Y\ÞCŠ%F®e¢ðƒü Â{,“ ÿÁO.üGú|³ù-ËÜîZª7à enwÿ#Dgjöwl35ON³ûÒTì=¾Ë¿Éu÷ç¹îÞ!))©Ebbb=ƒÁP)>¾Œàµ°eãyU ¼º‰$ñžã£©e‘Nbbø·ç³ò@ëãM ¶=†C‹gœùí¡ÒWä…KbœX±˜ÿÑ!¶Zã6Í,s»ëÊ}±Ö>{®”YŒÝÇ^÷cõv‹³l,ýžû†âû<ÿ 5‘k¨rí´Ÿ¥™vJJz81ñn®ù%ÄõAõ~+Uk´§ÏðV‰‘Ôk½³HÑNÃÏ­’…d{ή¶Á®>ßã[rý½#×Ý{qÉ1[3#¹5ôeZÚ$.h–¦§¯æVß¾¬¬cÜJõZÚºrÜ*d4 Ò¶JX9•ìKÿÁvÔ²aìCÖGûßýbG{aá{Ìœ0jì˜9~Øk ÉÚ[{Ý*ñ?1 ÒúIùøøŠ\C½‹k§'%uJN~>%¥×H¹6úuZÚl®.à‡ékù˜ÙlI¾©f_¾˜]ÀŽæ»£)?òŒ½ÕȽ£PÝû|®/ϯ=Óa1Q¡Ru?ÆÂ-×Ö ©×$Ìñë÷YRƳ7lÜ´ª­Ëþ4á'Õï-sÒ0-7P¦ÆX†L©Wæxßó)ÒbÅc)?ôý1ÝnM†Ý>k·¿``åðŒå«ýè*Ή±ß1£+9àØÑÕ0JŒIü‘’‡—:–ëqŽ_¿Ïzðs xPe½í„žÕÿª•×Ã0/®½Á |­¦ÍÌ«RŽ•°R¶W‚rtõz†ÛF¾oACyvºð ¦fbLÒ0¦Ê¸§rIæR11L i»nP¼\¿Ûš­ûž#z{:=9Ј^Üûõ¹âµH¬Ç‘¢×Ä  %Æ•G¹ ’Çÿv*OðÌ’À¾ÁTL ÷ -§.—«À©—ïPÜÛGT(7ð¶vzƒíÌÔÿ%>s!áhq¢ªÆ}Îk‘<ŽÝ[,¹7Ý $ÆÙ&TâõÊ—§ÞLÍ}Évz¤¢åª—£>ÏQ¥\9×ýŸC:Ÿ´>\±=yÁneÊ¿±.ÜÖ¢ ¯+}|NòTKŒ£ }ö¨Q.æD“¦°,=‚À`óÿ¾ÎkÑiªSæD‹ÒÄ`ó¶Ù.Ïú{ðÔÓÿ¹©×Ø€Y‘hk^-l·.п1OóH ´5 lÇa»öšê߈¸IŸˆØHAb 1ÐÖ|1¬ÝKþýÃó‘1Õ#‰¡^[‹”9~‹üôà ,6ê 1j‰´9~×¥4Û‰ÄßĨ«Øb̓³jÞWî’·Ã,Èêå«£'1‚<‹¢l¶(vzfpVÍÅhº¸¼n>wÇsѲ¬ÁŸ© ØîÝóÛçk®£6@š‰·Ð¿¨Ê~Û?Å÷ |f êD“ƒÊØrârì4Ôˆ)ÈüÆvZxf³³n/ÿUoê |ê ·»šŸ¯35 •öFÐÒLï|¯û“‹ˆúÜÀšÃê‘Ëuv]ñýDŸ&zèV5@ànV$&"7ógPé•öôˆgô·f`el)‘®eD.Ù®oŠæ æo£ÿ?Sœk PÝùiÔ"údöÄRÝò¸žæý¬o€€ä”à硹+’»ÒÑI=*Q ?ÿ汋X㘢 Þ5ì øq›àÓ…?”%~Aõ†=Xåh©!ž4Õ#äæÿ F={ðEÞz÷Ò;±Îüö/?ÕéH›ËSí ÷çŽõÓñã .)îî>DZÒüö‘ž)ýx³$•ωˆåùÝíjÖKoñ{j(®é«ã–Á Da-b~Ø ï ¢"t—–kúÊØe˜­@ cS«²ùÏQì TˆzÎg¿-Á²ù/ÐkÑ\äó Ñ'¯l•³,»„®²lAŸØ›Œâ'ì3¦#2lv—â¯(ÙÕô(÷ÿÂhÞÔ'Ÿ„Äpa¹•DŽ&=Ê«\û/`“í@öM‘â­$@ä{sŠc Á-ˆ8÷—+1S"J¾2%†Ð#ÁÄl8¥±NGV :Ȱ+!‡£&H Wùò>¾½2i3*$*¼u*¤š»uÑçìÔH3uRUþuRX…:SWÏ @ª{_G€TŸ—9J‰.}t• lùBÔHõbGÔHÕíÔHµê ää =‡J‰.WéJ©¦Þ–‹J‰ pÏ;wù¨êt<¦Q©¦•¸ŒJ‰f B¨ì@¿›òü!rž%Ýù±gÜÿf[U;K½!W`x!É"@Dæ6y²&†[`x{†DÓ‡0Ê)… †ëS®Ïè#l˜DrÞà(ÞAn‘`Öö÷}ŽÏ ."81„Æ^žh 1"90œ?"%2<$Ƽ¨u€H ÷ìÂaà¾%Æ–£PíÁsrd;@ÉÏ-)[.‰ѻ ®)¢•1þß^‡œ69¼ A%nÿÊëžÏ›°Ê‚i~+Ü-$+@†B^-nx•2Ng†ôÇ33¯äa%„Œ!¥¾ åwõG¬"€rc`Ó›¨ü5Ž*€h±ï±í¨lœH³=¶É¬€Ð•{ÇàPšÆy.vÇ„´©å†¢@ª#Ù¨'Wg @¢¥UKïG-„•i‹ ƒUtƧQÿáå¦*¤ÚŒ«¿ tmze.* ìU§˜Úú PÙáîdì©RÐNÔ5@øËÿ©í$e @€4G6øj "}¹Uös4®Õ{s* ­LýQ QaÆyþÐξ·¯@uDúÏdeÝ}Ãpå@ô0µ¸Ë÷´èÃ!¨9€èd›Ö0óþî+Eßxjû9ë£Nõº£Þ¢ÛÞ]–Y~’”l»å߸Og[}O4µnf§$ÛFwÖhbü¶ëªÂÇ—¶GïÔâ/‹‹]€'—ZØ¿È'Æ?O¡RÀƒÏ¾dƒm½µ ٖ‹º<ûêڢĘ:µ‚rªX~,t“Íÿ¤‰%1Ö>‚jAk´üè~“û_~Kbœ«ŽjAë‹ãyËÿ»%F5T ºp«Ûcm{T «eÙó¹dÀ ö¦±ZÑžÏwP+ Ì4Áòcá“O?³øÅ.{¸‡m÷¡V@Xö=ÎOlÇLàÑ[œ³uÁBΩˆØ»žqÿWŽÏj Rƒ„B€DÞ%ôŒh „éC(1Hì]Bψ% üsÓM’®O¹>#’$ôï |CÃõY·%¬;"È-ìÏÚÞã¾ïÃñÄ@'†ÐøÁË3â $@Ä%†Ç­ ñã R"‰i‰á¶Ùá ÂaàH €hK _·8¤l¹ 1"$.ì».žb}M …=ŸN ²Ö¦ÿ°ä¯Ì³¨ •ûË€¦±Ö#,TýÉQY¨ð਱ÓtÈô G² ®ß•nê^™i5§õî®WõããNOå/{NÛl ª\»·ÔèëîOg¶×~†Êg{ªÞµ_ø•TÝKØ2G'j·¸èéµå1ÃPAà ]Ýsž_œÎÌG €Ý·Úõb/¿\3uVù·§ˆ¾~²ÌhTXý¨= þ†¡µ±ó¬ž}ÄókO}Íýoý‰Z‹Â„/<¿Ø-f'÷ÿ ÓùÇËsPYQï0ýíùÅo©ñ 6‡–²lþ›´ •õÒIäÐêy-}Àn£Ý앎Ôu?PÈ«-I³þg&÷xCÒïC]Àl½Ø«cõÚZŸVÙVYC#QUÀ. <‘W÷éâ*Äé4µóPUÀþMGÅ^®Íß^GC”Žš–=A+Å^~;†"}TðªŠÞãË=ü⎣ž€×¥ƒØ«ùå¸ÀÐ~…j‹©%.‰½ÜSOºÆù¨&°8­›#ö²™!f=j ¬º> öjŽŽú£Ž Ø.~û^Ïd»¾Ÿ®)DÙÁ²ê¡\±ÏÖ¶âE´W®c/ÆÆÞýdqë|¤6Ýö×mer~lŠÇí%5ÊvüIá±Ü>[‰úmÚÙµ¨N5-Ÿmï?h°\“KÝ>Íå{kÇ@ýÝ^æà"êDTô©_¶­Óª]¶ã¯$[dLŽ«ùñºL' zêšb^4¾¡Ì0SŽ÷ÜSiø7­Pbí%R»l VÙäôɵNR6gºY\¿â:´W²O=웿òD…ý¢CsòίªR6Ù»¯Úe“óK$Ï:ù,SÈÆ‡ö£ÅBP-gþëá•Ü{\—´=OnvR»lòy?†leïÅm?ÆrfX¦°ŒFõ¯£ÍB]¯÷´Çוã[bøØkå+›‚X¶ïËíõ³Õm—éɯ±cÐh!ˆf”8äùÅãó$ôr’T.Û÷ãÁ\n¯Ÿ-æW‰‘ùZy\çAÔ®›È‹'´?yï9ÄúÛsd.Û§ïù`.·7>ê902ýl²;”éðËMý,±÷¶z]zÏ‘²epfƒ2e³A,Û÷-"¯ëd´HbdÞó:Ú0¨ÉH­—ÙÏl®“_ŠóÁšP‰ñJ"Ú0¨ª`‘¦Â'–›Üo¢,—>ëÔuŒ²·Î1 iK¹—ͺž/©bÙ*,··u2Ðq,sW8%Æ=h ‡¼qúl—öÖT†!¾ç.—žã¾÷Nž3K«!½¶Û÷^«xbx*[•åöe, $È4è~LÇèõ[¤wÒ3§¡ç¬ŒÓé¨ù¢.e+ŸÊfC!1×É2‘À@b€<,[¼º$ó2ëï—ÌfÛø]f³uó]a^vÈÌy•ë7\û¤z^£YVSæqÿÊ•Ë÷Ûš.½Ö51Ô,Ûu«¤žYU“ùÿ½b_'ΉAH PÀ2˲RT×úû^¢¬?&Úf}Ø„ê¾ONˆ&F5RÒ6ÑÄP³l—ÂåHUqοb«”wÒòõ®´7ç÷eøi/˜J}‚°=oâ;£-ÿ¢—1F¤•-}`Ï'¨àkn;¸É%IoÍë¦á‡æ fÞP?†¥cèè¶Ô«›TïµËv="‰a]' ùu‚Ä5ü;g¥´{Lg·Ðžé°š ÂQÆÜ'®_´Z\àvtUùÄðX¶Û‰Wê'†uüκ+!l•@°¯Ï}™õÜiyìvN)Ûs.´ä6 :¬s/ÛñZ²,Û·u²,Óù.ìù„ Ú}+Å[õÐùl—¶.,¾ÁËÊý(;º× @ØÉ<‰:© £Q€Ä9}ÆOFÀvÆý¯pÄFÔˆé—ac¼M‹Q æ7*¿·(1¾¢Ú¸¬Ä5¥'ùĘËÐ7¨ 7›˜&— £ÓuT>µânÜJº¶5ºÇit¢2À›±:ÒòS¾ëO¡.À›‹%‰4zÒ¿ŠªïÞÒó7ìcv¢&À»£ÜF éÚ£"@Šîü ó €$Dšú¨¦¥F3µÒ,¤[n @š‚¦_¡ š‘—ß :b€È¹÷Sá€(~‘•!Üû…ƒœ@”% wÏȈâ!†pïý‰€ÀpÜ}Ab‰Ñ’wc8=Db 0„Ÿ$©ÿ ¢#0\ªzH ‘}‰!|˜ÄÃŽ @”†ûùZîçoÙ«:îE%€÷­ 1‚åË çßÇîD€—Z8?ñÏS¨ðà³/]Ÿi½µ ٖ »õxêã|ËéƒQ+ (§Šå‡¹ßu–ßßòxí#¨´öAËŽ7ùÿ÷=Éÿÿ\uT Z_” {ðÝdIŒj¨táVË—n: ;Ú£Z@X-˞ό׮°ìõYçùÇSßA­€0ÓË­Ïwïùò´BþaÛ}¨–}Ë\Û»£RÀ“/¶8ÿ>fê@9ÿƒE“Z endstream endobj 109 0 obj << /Length 1421 /Filter /FlateDecode >> stream xÚWK“›F¾ï¯àˆ*f à›{+Î!qbRç0B#‰„‡Â YoÊ?>ÝÓ‹kWRªCÓóuÏ×/`Q ?e*Q¥ˆ¸ÌÆxTµwÝ%’©,ó ‹¥ÄX™ÓN–óIüò] [ßôw?Ãàu@^/ ¿Ýܽ¼ÏÒ¨LJÅU´ÙG,+•ªˆ‹,aYmvÑoñÛOº=5fµ…ˆU²ú}óÃËûb±K¥‰’˜ñêìcš¥ÿH“±¥<É›TuÐ ,áJM Ü€àI®fcZ_»ÃÒ$|ÒG˜Ä¿%"•”¹(¼&`‰H$Še“r*®e’Ñz¡Æ_BÄU? ÆžVk^Ä}·«»É]W¿ÿéû_IôË[•gt‹2aàÁ“«©þ¬5zû͵"Èæsù8€W%OJqe,)³läϼ\ÅŸñ’Ç›ïWŒ±øõ £ÖöJ«ê;놱rußу~O×Í›°7¦¸Ñ¨º6w[=÷ê»I='uõ¬Ý vd®€®Õ‰*žpÉÏyÚkKá1sŽCØFk‚xÀ]mu»3Ûú0jï%ƒ ¬¥Ìâ×]@ÑCóHý »º­ÿY­Y úpëÏênÊ þ­ó0ÔŽ¬ÊxɲÈ#ñå’’\$"Ë¿VSù×j*ÿo5õLIA}Ëò””šTóWÈ(Ð7lkG.!€ÐyBä©;JMJCÀÚ~ ù7ÆÉìHÔ.,ötmz*ØS¨bhÀ­†d1· ¢£°Š¸vÁP£­ ‘þ˜2aM0â“›R¥X¤Ê™“[mgç£VÂ\™•Ÿ¼ '•±Ô€»ž–pÁÎóY‡qB®²5Õh65.$è)éOY¡¯ÎÝkKô¸ãì@ð»D f7v;Ýá6Gæ=Ûͤ`ÇÆÍ€zt}«³UÝ4Ú]´ÁrèEÀgÞ= ¼Ÿ¸e²Ó ÝXö•ç‚ag,ι°ãlú£—^…j6ÔµM·³ËH€Õé' %‰ÛÏb© x¿û†”«~$:–ä/Àêî4¥!t9`f¢l3uÊeAºG=%3&ÅtÞ9 & +>xšÈòâÜ "ãÌÐÖ]m[Ÿ3Ì#ó,Þ÷Ãs­œäºÛÑ‚i›cΧXÒç02܆Ož¹º"Ñã³V.ðŽ:”7ªGô´ø,€FÈË‹Qȉ=:öÖ«“ߊ;OøK·Ÿ¯ªeÊõ0žgŸx‘(A.Ý£¥¡oÁnÊ0E¬¡eBïøÜŽðIÅæ»ASUxŸ^(Þ÷Mã;߃/:¿¥ïÖÞ‡ôœª-ô Çfœ‹ø¾¬ƒ¶ ²ü&ÿYI<àõ`:3è›!ÞN¥ äÀÁÏ6¯I‡¼ÌS$¶ñçy$·éXF@©NQ_¥ƒoŒ–„z:«¥-8%Q~0îÌxC퓇‡÷ eÕa?Òð}%«+g*–d;ÿŽ!Ï ÚÐ%}ÃXÀÍÝíÆÁ}âK–† ‚+;ÖNo› ÷i„ ùx}¨Ñ®ZS;ƒƒ¡ÄolÀÜÓuz-¹îÃ871™•TIR¥q ¤ç½%ñº1†´C¬T¹HÒ ”„1D%È•HàK¾"ò<ЯO§¦Æ¡Ä z¡á…ôE?6 Ý@£µ œcRaŸD]àÓ—-N)ãp`R,mõ5ÒM€? ýö& @8†‚ oSN÷- ÁR‹ÁWeü}à5è5bÀLþ žötµèÔ¸bÓ0õÂ'L ý O(„zSàØh[?xŠðVˆt &veèŽZ_15 ³´ZDăéŽT—¹(†…yèkðòÌTU]SË‚o’LFkøªcá s|t÷vs÷/šE¬ñ endstream endobj 103 0 obj << /Type /XObject /Subtype /Image /Width 1197 /Height 1172 /BitsPerComponent 8 /ColorSpace /DeviceGray /Length 47335 /Filter /FlateDecode >> stream xÚì|ÔäÇŸ[ÝÊÞ£ {Ie‰2 "²¥,Ù£øW¬¨@•aAT*¢P *hYB”%hA!kK --¥›î=/ÿ»ë]{#ÉåîrIÚ>ß–\’{“<Éû»çyó¾ïC‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ¼’òíªÙ^U¼¹åšAáq’ĵÿäj±Ú zE³ ",dý‚ õ×]Ÿ+ýMƒ ˆ€(i·£Âxõõ q‹]/®O}®S:ZA¡°[ršbKjû—Ð<‚„ô†«)·]ýŒBDø5Ë¥Þ8§'AaÐyÍÆ«€ý­àš­ŠŸ£‰AÝæ¡ËÑD‚`P¬ÝÓ¼ÐD‚#`¨Uz+¼LŠT~*Aƒ"ÂXažXž/†b… 7b„ybz…Z… {Üÿ-•R¬€@±BD ¬h6q“V±ôÄ sŪRÞµ AÖQ·4 R,}±2j%gÖÀŽb… ˆ-(ùÂU¦Ô‘òOS ì‹•q0ˆ Â+¤2 èm /Vß;›b… Oäþ1G#UCMˆU—`7tã?e¦µ Å AVIýva tt‘Hì÷‡Rº'Ï"’ö/h ®ã·E’ Uµo†b… [dþòV‘¤ç»Ç’ψdî÷ˆG÷_õ?‘ßLií—ÏA"bkòC|‡ÈÀÝ;8Kù!­‘D“³ "Crœæ;Î{´‹å¡þžR‰‡ïå 4%‚ ¶¢ð²¿§J¨´“ªKd»ÔK#§Ñ|ï°LoN†§‡æ7‡¦se EaÒˇÛC§¥?¥T¯Û Ðêzåâ~iåWË{O5\¥¸ã?B&úY8AI òjͽcõÖF;ÂøLÍrEÿaåTßþÂŽ4WþIïÐÞûd1ÚA(y¯;8½òµ±à ”TÏbuÛ‰j‚½é§TeW„úyˆœ<ž ™±Šøã¡Û»z?\×ýtT¼œÔ·úÕå5Ý!Rƒ¼\¡»_A ¹½¡ŸÈeòî8†»ÿì4Tn´2ûñëe¦¾YxrQcè¹þ6šAs)¿ìÓšÌ5«Aé¿ÒiÇéôM¹üN“&{}·â²o'hëR†¦G„1¹‡¦×ƒ>ëo*Ìü^ÅAO èÑec&ó¯‡ùy@£¹ØàŽ #rLvzn³ìÛ™ÿ®â’Ù…Üÿ´¿¨þüßJñ6 BKvð\gÉ€O!>`¨‘÷ùr¼‚P)ÕãííÆíå¿cy|ÀQ£¹! ¼%‚Q2×ÙÞ3 M §ÐZû\F½BD«o6û>[PçtomGè¸û_!¢å±gèæ#À3»ù^øM&Þ"Aˆ¼ïCó·„zz—½]ìÇãëA©ãÜZVÏaöYa¿y+ ö5ô¾…7 Aê,J€Îþi5àLãý;AwÿT¼eR õvµ÷ª1Ý—ºÚM>½¯¤ŽQ²ßzÔ¬–ëü}£Äm6%ãÍCºCÆæ–²YWjà‰Gû6‘ŒÇ΢RGˆöq®ç󸆞|±º-ï"‚Ôz.{I:øgÕä+ˆðqqðúï$‚ÔfÇúÁ Çk|¬œÀÞà˜÷Aj+§ú‰½þ­—rq†]Ãñ–"H­ ‡‚g-êZ™òQ3»yÿámEÚÆ?/¸ÐÚuI%A½`H0v½BÚDÂk¢QWkße)~IÔcÎÛŽ µ…Ò€zm‚jéµÉçJ;ì,Â{Œ µnN~µ¸:Çù86ñËÂÛŒ 5¾.ͬå“W×kè_€·Aj2Û]º^¬ý—™µÞ¥ÅNœô Aj.†K}ëFƒÎS_‡vUoÿŽ‚‹’“~ ¼ªXàwªDgc©¿}ß[6(W ñîI¯?5Ë·`>" òÖ¸‰»«•qÝÄ ×V C¹ÓËùËr”+XÂ'€W|eô[O| [ºù'è¯JØìÖêRe}ýÌþ…”+hþÔ¾øœ}±·(‚…}vÓHæJI›j·_ “ù•Û \SàÚñ”òßm úŸ¿I|I§¡S¬’ž%ö¹öºc‹rMš@³È1ñ^m_K#äN8ÎAAœë"ªMóëÇ»²Ø&åšÔ*ÍÿÕŸxˆÛ6 V¸l2>$"¼ºP¾ +î4“§rAO£€'Óä,M.8‰O ‚ðOœ¢Þø«(‚Ÿr-«°5ý›A²öcvgXißÛ‚Ä-ò4Ówn/«>B³þkÃY¹ ¶*—QQvfnwçêC9wŸ÷G¬aM[š¼ Šöëx*W‚YZ7Ú½½#¸Šƒ[f:»ú›ê×EÙ6VrÿÄÖeCªÖJß­t7»8ÏÚr°ú;Þn3¬Ÿ…ÞòrAÿÄÁF62þù`p¨ß»‰^ðÛ[}¨½uÿ+b9ýߦÛúÖ@3ê\ ›åª* Ybõ›k—S†ú˜¿É©’iQ$Hªà±ò $)«ºÄ&z8lØGLqò™zg­¼–—kpâ¦_DXf#­}‰§¦üxõ¡áÊSà=ì‚XLÚ7óÛ›1/)A›Ïn¹Lýû$‹È„‡]ÚÄZnîóè `g§+ißrâQëndÝÍŠH¬ë‰aE¹ú~`ÂV–ÙHÿ£C•Os8L¶þô ¬sˆ…ˆŽèy3±Ðó’*båòY ’r+K&Ì.× ±ºhçK¾!³oÏKÄJíó„TJ–¶ewïG1}ÌJ»¿­°¿åj•æ?¶mdpF‡zÇñ2ù†K+±Î!G¨ƒ ¥¨˜ó"NñD.»ÿ´Â¸\£R•kF˜×rUY|soSa ý”’µ´ÿ‹Z$P‰ô”ÖVŒ ²¼Üj­bö"Âb‘5UÑêüDµé„`¥CX+0[TªI•+å*,©Ô \ãBL–«ãŠ19…5nO)·ܦ?U ¦¾ê¿†°¦\0SÖ-·‘¹bUÖm*õÆI=ð "±"Òå*¹’ÇX+V&¹©ó¡ÄÍŸÆá{v‘õáæš—›Ÿ4²x. ËË3¯À ažX=¤Þ%:‹µ1ha`暊•þÎGºe3&Cõç±¼R®bꉕáÛ#ëÅjŽx~\Õ‡âš]¿jPl­X×ÛF³5^|Ê«°¼\0Wn-·fŠÕÜè¶>?k(¢¯UÕ0íkfbõœ1azŸŽë5Ü{l{ŽɰüÕPN?.MÖ|ðëN·«™´Èè_yÞë¿+ÑmóOÊa¥\0¼ÙÆ Rô†n?ËmÄ@¬þ]¡ëèv÷£;Ô‡=°Š"ºè,Ѿf6+°.\SÄ«e+,2ÝáÝïþp­|óX¯mï¡ç¾µþ ³Å+«€Ãúlõò—éö̃ߨ/ŸÊÍë ]¨ò6Î@ÝÆ.d~Þä‘éV— ¦¯€(ê¿­šßÕbî‘(úŸ^w«žõÚeÝ¡ö¸`EH^3—åÛN¬*©=¬‡Y ’6+÷Œ…‰a—OøùÌõ?¤{‹Ê˜-ºï5×Ç/ èäå°DºéгzK@ZÏ¿P¹èåe ?úÞ¤ñOdhè—Nbãèß”ž+#åÊwÆö5t‚Í)—LF4ðM$/ è=l3ù×  gP)YYì7 µS«ŒË×ÁÑý…9«Ž\Ž)bY¬Ê¨¼ªÇ…F,Ihüm&â¥×àœÙK mè_l V&C]fŽW–nÿf4ÅùZ*V„"Ae¥'EÆå™ÉJ±"Ч)/ÁÎ;’¤,`W¬ˆ¨Ö µü"Dz{Ôu±"RÖ4Éd"¥¸ºƒ ÖĪ$RY ‹Yúu-O ýóçï·®[>w‹½Úè„”aãÖïŽýz­µjô¯¸Ý¡i¶+¢Ü[i#™èå²óµFTÒä÷”þgt®¡Çf’ ãJÕheш“†eËžA$÷Týt8ú<&xÕB0zÍ\ø]WV†ÿ–®´ƒ23<‘pùý§UC¿dÙ*—T¼Z5ÒŒÚSý/ª7ÆbEþê™  wÐ! Ó*³E%³òeDdz0‹9ª%©2D{Õ@ÐÙ+eÐ)Q+ã¸k(Vˆ…ZEÖ¼þç+"õ¨7Ù3m¶ÐÖVwæ‡Nx˜¥óò©=kåR‰WF̯ Ôš+É^0lRÒ7Ê‹^f3e¶êoc62¬ÚbϘGª?‘šw§w†Ñ{lm½¬`ê"ÕßæšKpNßf5ÈšC­˜®ü3Q,V¤øÅ 1C¬€ÎÕ(úe¶“jJ©GúÚyð¦µôDlU®—©¢@©hDÐT/Ú:ϾXŠ kbe ‚(VHÐ*ê×ÌEA³]ÅCÇ©\’‘ùÄngš—çyNßZz&¶*·š@‰X¢uð‹# —¬~HZ®iÂÀ(£0Ðà£ÍÂ@Ã@Dð(}*W§aÛ‹ÛŠA<­„ Ò]?¢ÞÛ¯^¦¥²U¹Z ^9{_£ªÔ,ˆm»5bEÑÀnìÛ®ÀvDØJurn=ñUÇ›Ï$ òV÷Môw¢Èåø¹å³U¹•<é ¢ É*5‡ìv]0>‹]X+š® v]@j‚RDª3€fHqÿ®nNfçV${·U¹•èúqÖJ„¡R) ¸j°â¿EõA‹î°q¶*×€’†ŸRoT<»Øú#,èG;I^©ÐÊåÃFUü&z@½1Jt+&ÂP©(žåð3Õ9Þ΄³ö;k«rõYë–F¹m¿ä?ëpK|ˆr[jýõ‚+—UQÖ} õƉ=1b…RÕxòZ½J5Öãf¯³q„%-¨¢¨ŠÉm „W.6ªâ ”àýpk'Rg•JÅ%»Uä2ûôf¥,§G_Šž+í¯°\>lTÍ{—(ÎÁa5ÖOîHß5º½¬º¦Yÿµá¶:TØšþͪ$k?fw*Õ/¶t>Ù,âQÛ²ôî1¶MW²–˜¢¹Òƒ‚,—U{…ÓžÃtLrÊÅ›]œgm9XÝ ³ãív0ã1ƒoš“ÅAMÜth÷öŽê#Ü2ÓÙÕ¿•Šœ³õ;0¬y~ŽYéÓõŸÒóHêï´Ñ°WTůüneÙ¶*—ké_ÀJ˜e¸2r"¬F­âŒDç 3O*N>SÏtv!³²8¨øÍµË)Ã7Eù›œú'¡R‘ód¦¨í[ÛuÄ݆S½ÏYyŸvÒYÕÔ]²ÅÕi†¿ÎÕö·Úˆf=±ºt[•Ë­ ù³‡èùõ{«µgý`QOl¯âŽG­»Å¹[ $û™ˆã,JöI‘9Q»´‰E¥¢ bÝ@ݰ¹ÃØo3Y)÷;é¢ÊúœøRÝ&€ë#X9€­ÊåÐFÆ”ŸßÃ¥úP.=žÃ÷€Ü‘ݽ_ù–•v3t¬È³8qÑΗâ¹îÛ3•ŠK~"?´RÃXÔ‚*OdÅ”Öù&µŠä/y-§QuŒoîJÅ!ųìö£F¨ø0å¶ÔëØ«5nO)·ÜF¥âŒŒÝþB+ 5´C#JLis±*qó§ Kž]„JÅžéV@j\БùDiÃ]ÅCw$á-±-¹¯JýÑ HMÄpr°.Ñ¥¡©§ M$-ËhšÞn¨T¶'ª{“ h¤ˆ•Ñ<ø¶›ÜßèPÖ§MBLrªÇc´R Äʸ•Üfi“Œ…besþbï4‚bEEBJô¬8'u¬ýwh¤6…zbe»T߬¤–B˜óg‹ö7Ð Hm+µ‚p#VèYqK™Ÿxj&š©=bÅYˆmVÜ3Øé[´‚bE6° E Kïp4RÛÄ ».Ô:R&Š}ŠÑ H­+°I§Ð$Ò²ÈØs^=õÃç+Œëצþ/xsXâp£Nÿ ÅÃm˜PÔ:1nÓ¶±T%–;{@ýUéxsX!a’èùh¤æat›»n°J¬ÌÈ\O¤™+V ý÷cÔŠ †î!h¤6P\?€fk¼ø4{‡:)¦Kðeƒ;MU3v‹$Þwð¾°ÄƒRt«Z‚~´“ﱘ#¤¤á§4À³‹‰‡-”j%6kqf8vÈ÷³ï{Í€Ôn‰)“b©õ׳y¨µni”ÛöKþ#ˆ¸vJµ-m ý¾À ¬´lø5¦^AjKZPEg“Û°y¤¼V¯Reƒ|ÜìuÕ?‰d ó­¸°¸¾cw¿(¼7Öðߋ⹩h¤6‘Ó£/Å0Œ•öWØ=Ô%»Uä2ûôÎU/¤õTªU Y]4WzíCí—Î'{ÍÕ¹mœV¶úI¡²»DéËšA÷µ×15·ù<]aßñí€Ô:’ú;m4ìmUñkÇ¿³¨³õ;0TŸÒAÿNõ>×­Y#á1ž2éÿûx—’î×ÐÅ7í€ÔV2_ê ƒ*š \o³æ¢ˆu›UIÖaì·MfEcáª~P³oz}èºüW¬¦I|×¥ÑFœ A8rôVß3\Uz~u?±ôùÿÆè†Ž{Kí[~‘‡v@~yzdipÿUhÚ‚TãzºìÆqJ"îzµ¸xú… û`@ܺæ’Éà@ŠðÀ¹î õð ~‚ÆÐ:;_5[†@Á‘ìÓOMÇ~p4¦ÎÛ"ëÀ+2çY§°5A„Jî__Ìé.#Þ;p¯®¶ÔT„~ü‚T6îFÅ"t ®~³¸Ÿˆ;¼ôÖ×ÄÕ©&›’¿~­)´Xx8©)ÕöÞÏŸ.ÜÀ¡÷”·>þáÌÝäÚ­ZOþÞûæ;¨ïéÿ6©#HÍ#ýÚÌxñ'Õd£-Ÿ?ÛÛwÓWG‚k ?ìô_÷Þâ—:Û8zkß}*©ÙäÝ¿tè«Us'òèÜÒÍ­>Ôœ»÷8fÁÆýWñ.#‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚Ävƒô4Ÿ‡£M¹ƒ RkÜŒFADx|¶ÝpÍpÌûŠ ˆðp¯Ìû°~Á¬ •kö¼‹VADhä´¨üW îþG½xušA¡qõEõ?Šã3gÌŸ²_½œÞÍ‚ ˆÐ¸^)V;׿Šƒ±j…fADhd5Wÿ3M5iÕ‰J±ºúšAÁÑ^ÝÀ>? .w®«=«Ñ*‚ÿmª¿_7Á÷ÐsAªå‘Ð*‚ŽÌ~BïMG£ "@¾º­ÿyKÚAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA©Ë€úƒÕ+ Ú5‚ 6Ö*ÒÕ`´Õ÷Ù:”‚ ˆ@Å (*=˜–vµŠÌY3vÞèÜ@T+©[ŽcÏŠe±b"¦´n Š‚Ôb­RþÕ¸&:ž i›•‘÷Ãrh™‹ôE R{ÄŠÜ}Ó~”Ò°jÚL+A¬wh€AT–‡A2l{ý‰·X‘œí>(VR{µªº¶W…x4b¥š¥ Ñý$ÐÝï6Í™J"V@»Š‚Ôb±"„¤-ñæ)C¹¿T ƒfÞ'Kè a  X!HÔ*ŠþF+¬i²RsÓ]ª*ÆœgÞG±BD ”Ç_ÞÝÄ*¹I~%“=÷ Ì[ƒZ… ˆćÄe}eöõUb%½Nî£v Š‚ –s`;AüxèŸÄ„æÊ8PÚh¿‚°6¢4Ù"‚0ãè;oh–rÿN«\(è'©hN:Aá0ÎãMƒ5e/‰AäqMƒ ïÄmzõOÊo¸”£‘áŸë¦üEµí3ÍIC!Âa»Ö˜Þ)TÜã*š A>™äêYar§¼c" Åš…t”!AËÓ1No£<‹¾ŒV@D¨”œÏE# "xNºÂi´‚ ‚'ö›Gµü 1‘"‚ÔdauåJ…’HAKØÓF”P‡ÄJ‰±ˆkëÊðc¡$Rd³4P©¥ZÅa"Å>¼gúl0O5‚˜ `ߊ2% bUÌSÔi¼e“³ë¢Vq“H±’Ûí•P'¿‡&φ^Ä0õ+R·yœZ'ý*®)V’ã ’ŠúoOF±BÄL±â(‘¢† {©*ßh@@*¹Xažj!¥à»QEu\«8K¤¨ [¨Ó)ŠÅ’¯)KÃ<Õbćö¯¥ ¸!fýì±½›K@MQ$î~‹Zú0õ+‚’žŠ6°-‘gÓ,ýÛcì‚5‡<”rÒFß•(V‚‡Î0@ïóû"¥TI}r(âRÌS z”ìEÊ–œÕö¦fñ‘~‡íJ©‚qdãÃ1O5‚ó_»chü$iÎ/þ,žt½"y\#ÿ6·A# V=A#°ŽblŒ‰]NH YM… /þT™fáË‘ô{Þ°wú¤ † ü>Èþ"Ó}o½—ŒCFk Ú€mn¼„™§„eÃÔ ´;å¿€ 6ãÜE´KŒl1€ ˆðÉF "Xr?è‡V@’‹6`ƒâÎK0FÛQñMƒ9hAb´OZÁr²¾{­€ œ¸Vhk¸á8åZAá{¦ùhA¬Q—Q¤>w€_Ð  ùÓ ,%~å=4‚pCÅ„&Ñ ‚ß±šv`.Šs8‰ ‚ Â'¢ìE+ "x ^¿‹F@A„-äuôº±—?‚Ô0­ª›b6w)Þ{©Y~U+E—>¿âÍG^Øø…1`Ýô¬ž`*?á‡ÜzûV‚ œñw‹,+”ࣂ $"¾ª_jÍ×åå嬆I‚ ³§›ûŠ¢œ§‰ñ±ÑQš÷ò°ˆ¨‡1q )é9%Ö*Š‚ ääšáFe$<ŠTªSä£Ç ÉiÙJòòòr³2ÒR’žÄ>¼¯®ÈG iY…åÌKMÈT X!Â¥9ÉÂåáŸæQzOŠÒÂì´Äب0¹üþ£„§¹Œü¬8yd†Å AëQä'?‡=LÈ,bä)JòÒ)­°S2 èÇ*Ëåi‚«ßËñÎ#50\’Múkèö©¹”e>—?Hγ`*ߊ¬”ø‡J7+":>%3ŸJ³OTÍ^¹ªãÞñdýåIúÏËÈ62« â“X U`¨UU ;ÓíSc•*=Z—aÝä(¥yɆËåá•~V>Il˜¤´°°”r‘ÓËÜx—*õ"$7G¬*ºLÅz€Ô¿Ê@¬@g ü&ÐÙJµO þ²ãŸ䲕¡4?3E­YòûãS3s Š«­dõKۤ2]a UF«ä d™yVqà R#b@0v¬´ëÁ(H4+ã}˜DL§‚mŽycŽó"Âb³ØÏãRV˜“žòäуpuXwÿAôãÇñO+»A(å*9š&3±J®£`d¢Yb… 5F¯ô :Ü£j³2þkÿíhtÔ‹©´3=Jþði™Mm\QZ”Ÿ‘š”!S«•üq4u Ç@¾ät,+ ºÝ•Ð>•{>b¦X©›¡l)V7!ÆÖ×äëa´jìˤ{–$…‡'qiï4cõ¤ˆ. d _Tb%'¬+£6L’_.úÆLª}„-±*Qªb•n”d¿‚ø°¨4N_Û+ž¨Øå‘ª£Ò4°3qµ(ÅŠlò-¦beÔ†Iÿr™jÌ$ßAØ+ jµXÑFž"ãüQ·“¢”E«œª¸|#1%Vta¡Õ]ôî¯q&yàô™„…™bXQ6;u]¨1be,U‘a EÛº$J.H)ÕÒ¨ÍÔg[‰Y³€n›A˜ø«ðA(•¶ÕT¯±âyÓibµæ™„X>Tuà˜âyL¶Ñp9]‡OªÈ®j ÅŒËLÅJ1à8C±bò+VýŠ!ÿ¤æM¬ÒÃso‡’”"˼ë¡:ÖE¸C!V@ˆ•MÛ„^uY,$±ªxöTf‚X™bºYÅ ©;<é2ïhÁˆUELDÌ"ÌY¨Ä „†HMçi_±×úbeØG·×¡Î:ÃZaÜÇxtµžX]›¥?A¨"ö~± ¬"@±2nì¾+6oÌD›P’©†éîù#¥ ƒA'uÄ Èh£·’Æ}*ŒªŠÑ&]±:h÷JžÞþ á°!Îg… 6A‘píøö÷çŽܳ›HgdK}·Ý¢â÷àà#þ|—-˜æÙ¿K çJý’5tïÙßsÒ,ï÷Öùïú1øÐÐÐû#ÄÊ-bxfß5+ÄÊØ³‚\¬rÓÈ&† fŠ+a3Ü»ºuJ3€¶/½ûÝå8Ós=•gÆü÷÷éCþ~«¼_›â9 —{CG·J UþN#V`üÑd+©X­ˆ#õ>ŒmQ¬„-î}ú¢4›¼õŸ\kJQdÆÇÄD_¤Ö*™xêæb¥3¨šÊ³¢«{gΓ¶L¥„—Ƽ5:}|qÂPáXOž)>÷f{h¶0è!;Åå½$QzUgŸ8º6+Ò7H&»ùзYéQþT8&ÎçÒàwÕßfŸtEÌ™ÏéàRÝhißfÐÔ ¿<Â*ƒðBEÈ\è»îkóÑ%ö”‚:¨¼>Å*!Rw·ŠlÉ1³öÏ:³v˜@kÏåŸí9q%2FEXÈþ­ïLë$†úÃüþ)C›"ÜæÛîˆg±Ä;MA$žt±òM×0¡U´ß¢èº ç.†eáí­æO1s?³ä·{Š¡ë¢ïoäzÎWw-nõ§î~‚fE8‹Mvz@»u‘¬–ù»¸®®jï¦êJ6Y™êJÚ!‘J¬à Ö…i?¹”=S]¡×Ê_Óèw‹Ü>ÞYߎ;¾üM£‹Oµwœ~ ó"6&t®´…Ÿ Z õ{aò'V©x“Ít´Ž·sô:nNŸÿ¬ï†‰ÝrÑvˆÍ¨8Üž?ÂA)ob¥ˆLÁÛlÞ¯—·«dH ùa]Œo}Wï(´b©:Ô]<ó_NÅ›XåÊKðF3's[/è`¡£õYÉôp4"¾Tw{Ept0ÞÄê1I_ ê~ &ñ¥MNUù>ÇÁeñ5+ (û©—xÎC¬[«”ïï"™ÉÙáø«ò0ã—_”‰§t³SS&žªþZ-Kãqœ3bgÚ¹~\XW.¶"â)X3_‹dåoù+c©ú¦•ݼ»69úégœ¾Âþ¸ˆÅäÍY¼t’Ìžçesv5+¬ŒF¬€‘|Õj±:çîà“`«Ã—l Ç:‡XFD·¦§ù9òMgk­êj\5£Éë 0ˆëh³äÕØ0PŸü…0ݦ&ÜîÞì2Ö:Ä®¸=ŸÀÓ¡yy˜/'ÞF“xЦÃ'“äT>åü_+„)V1=°ñäN¶û ëb>:M.âëØ¼ˆU¬Zxó{B‡À"ŠÕÍûÙ¾ó¦âÉ>¬yˆ¹„ºÎä¯ï bU Ä,y#ø&ñ-V¢!o4Šó¼/ùëbI-Æò8¤—±ŠŽ†å‹&Hí^¨w–LRS“ Y$(׌]ԵȵgÚéiSB‹a½^æ| kbeCºð9™#b•V,Û—/ÈD/‡TŸ%“ÔÔdi§ ª5$cõ,ròå$ݽ‹vãêq(ólŸõ1ƒÃø<<÷bU. ‰¬üÕÉ wPyåY2ÉöJšvš XC2v‘6ä\ïÊÝÌS©Í_Ãú‡0'Ân+¯Çç\¬Ê£Ù,§MaÂÝë!§‚÷~ö‰ï ï9^^^ã=5 ÷Pá©ÃË“=Çxy5Vg{•ˆÚÍc,V@&PTžõóõØ÷ÒpÒt\weÛ9¼ù¿Ái¬c&õá¸q=õŽ‚O±*‰dyþÓÒØ+GVÎÑ»µvä‹[ûNƒ='(Åj¦·–U¾¾¾oyëð¿åÞÊê«ÅJ méÄŠN¼Œ»RPBãÀÂדÈâÒçqÚ·|zÇ"¬‚C®‹ÎRo¤ 0hFŸ˜àCh8÷ÐS2±ƒJÀ4Yík©»7ÇÏß»Í ±"Œë4~Õ\tú fûV÷(%N .Óö$ꈘuGÛxLþe±*J¹þÔÚöª²»{ßä²Ó7(µ®¬ìaJ§Ìie¼ÎYš)VäN”Åbõ]Ç`Šã.¬…#¦ ¥‹©æ¢3X0[­Ê¿°—©Z•ÅÐeõ!m’SSC„ÉkP~t‚ž¢ÌôäÇ÷å‘©ÖµÏe^ó¢#8zsïÝRŒŸÔ •¡'©ÌRSÓέE£`ôa`yoΟÀE½°"LH”ÑÐsÌâA?±¦Qj8uúxÓýhÎC/}|Jøýèø§V‰û_W'Lßs—­öùô6ðÜÑjõ¤êJPGdÒ®G:v‘B¬N‹¸O˜u®b=D°¾I1çbUzáó¥Ã[€ú%˜Tì{E-V@0+Æ ì üæä…øzˆ¤>Áil?û=½j*€±ãGñð vY…õ1¢Ýû±2o.:Zîù4i×j„÷Ö¥ªßyI¯Ûš6+Ú1%ŒÖPN†`¥ ”þõ~‰¸ßªsü‡ÇŠ—áá!\Õ+"bšëp‡‰X#_‹LJC—Um¸ÎbÙù•Rw]07,dØuÁ<’÷N«Ïüïçtþ¼õic>ƈ^šÞåÙÙZß¿(;[Û,7;ϦÛ²ê‚C±* ì,ÿ‡úm\z[ ˆGV¶Y0+`©²%V××{ˆÆnæ74ãðX½ÿÇÇCXÑüSê…r¹6ôN‘W¥ÐŽ’GÛt;"@:~@§TÍEGIN@+»¹š â¥/€ØõûÊNÌÅÊ8T¤mi¶J¬Ê/û´‚öÞÁ¹| ‡ÇŠ€¿˜|—ª§°Å©çÄšˆ˜B7¸:T„‹«OÕD¹Þ/k?ð–>žFWϬ'òØ$çönð.V¶`Ò±ƒ¦§pÕ*óz ï¬ábŠ­¹yJŠ‚A÷íÕì€&Ç«>M¬2¾Ù^:j÷ù x«n+ùU”=…õÖ˜¡V7!ë"b‚ѳ88Hù_o4²›qQwÕ\ï,B˜b•±g¬ÌqÊ>^Rœó-V·á£6k5æ÷.±ßOº>‰iÖ²RP„H¡ã¶>DÆÑ¥Í ÏæÚßU¡ˆUVÐx;‡ñA|ÍD¸8d ññßoÇl$’e‰`éèÿ6éê¨4îBJ4 ƒ9 6Ͷ”îýÉàO¢L‚«’àqv“ò87{Z0‡·Ç)Ú­&x«Å£Q¬zVØnTVÁkž—A—×e1h±€X=YÕT2þ¿Y$x«KpÏ<±b¯§ðDZ2"ôt{Ï6ÑåeO{pŸÈ,“Ä*u…C› |ßžÃ@ï Ï“ížÂqHZ†µ¡#~g½Ì²POháÈ|¦ÞŪb›k‹èÈo{Ûg¼‰Õu Iã(¯„vzÑÈ6"5‚ÝÎìÎ([rÑo˜¸/ÜgÞ[~ÒÇW9H¶¾@÷ƒ_±úÞ>•‘RQ÷¶\¬ÒàOS»Èé×Èw©R/¹œL±þ×(ÆOf±°˜@¯ú*ÊüLÇÙó¼lÎêûö¿'ŒûÁ¯XyÌáñÒíMåff UF«ä d‘šA¡Ów,•”qdI[h0uwLÍ3BÅ*Ñr¡ ãU¬.Â?<^zku‚¥„ûb?IJMÏÌÉ/*)§ÚL¬’ë(Y€ˆbU£8)Jd¡”òPO™ÄÃ7Äâ*ëhûæäIÇ.žAѱΉÕóÃù¼ô~¾ª¿ù±ar¹vQå¿¥©‘ò0Mû¹<‰N›È•Xɉ:'V&'•µdº_÷^œ51ç;Zuýù!¾ÝÀÙÓ?ÔZCò÷60oX“;Š•’ì3x½ô¹ã«oJ|˜Z¯Â’ô:…ÊÍÖ*j±"y™XMmìJ‘·­zâoóST©Äj3gáG;ËÀUü»é©xÀúËltáM¬ †7Ôï+b5»Y²Y_ψ¼òëwþúþo©×ä—½¼æ{{¯ÞðíÉ›‰–>>/h—¹Õb¥Ô*³ÄŠ.,4«ëB­+ŠdQ¥¨âP¬}gZXTj°w hê˜ÄÒ©ñ%V%¯4¸mÖ¯Iž+°Ü‰¦=K«²½2™Zß";Ä29Áò'Wî3É£¹Tu>õÜ{zŒðôšµÀËëOÏÝê«òJ7¸Àÿ„ùƒ¸ÖkÆR”&ß—?ŠWùU*ñ¬È,§mb¢Gf‰U-ÈL•Ëžs.V§à–Åäž~¯8ŒÞÊæË~žÄªtbý›Ln4ÝìM`…­dëîXò³´*Û+Ù×V¬v‹?¥?Ѥ«?YâÙQ m3dæÊmÿ¸“hüB¥0úòÑm>cÚ4¿éo³Ò^Þ®òžDÜO-!h´J7l3¡54G)‚¾:ÔfE™¼ÛÚ6+ÎÄjðxs‹(Y3X =Vœe9ƒ.?bU2Íõ£M3{X4{S5Ó:øüV`t–Ve{%û:ÐyVËE›(N0-ôèçoŒëæ ëè¹ä“ƒWž0™/ç–é­Áaø'ÌÝÔ­ VD¶V!¶+°.6àL¬‰Íš#´rûÜ@LIÇ‹XŽ«÷7³ûL={XåD«Øë¢üm“Ø*×;K«²½’}hÂÀŠCÖßV‘|ïôîuóFvVŠ”¸ÍÐy~?^zlvnؘ½óšAëe¿3kÅ:,QÍN“¨Jp­ˆB­âN«(Rx J¬’›2ϼ[péO'h·`Ÿæ“áC¬òF¹]3÷^IC•µmVÉA"4œ”A—‘ÙŒl¯@Ù4al‘‚ ¾m%s "?)òFHð÷Ÿ¿;gt¯fªì³õ{Žóþ(èüCk:ÌVü»Á/ý“Ál´¿Ažò$äª.0Yr9j•M´Êj±z§Ë׹܋UɈNÌf˜{¸ÿM)´|í{ê b•ìÑ2œ°R¬€ Øh`?P_¦j­–‰Äó< Ë¥+Š]€ñêƒÊ•‘›F¬¬ËöÊÌŽj±rrr”(ÛgvÀ¡ÓßÍTØæþF¬j.uœ>Ž”C‘¦j“Ï”ã´Â6Ò*’ß73Ø“ú*ŸÓ¡ÇÊÄÊ‚·×4W·º&§m¯)xÂÁgõ]´ãŸ"Û›ófuúxÆfâ˜x÷•½\2-Çì» t¿U–‰Uî÷ Ÿu‚Ò±ÃkéT]Ì w](xüãQR‡IWlz‡ËN¾"nçO—'ö1ÜPD©Gå§£À—¢ébˆû&è‹•o¯é*nuE(û®‘;yσœ»¿~å3±§=@Û1+¾ µÙøÞÔæbeâ%Çâ4b•³µy“-øib[¬—æ;Û¿ºê»¿£;«z´õTôëv²Ê+IauúxÓŠ ³w_-µ&nÔe´÷æÃÿóvãS¶õ†çöh#áC"|XLð/VÄ?-_°y¥â×>â™÷ɶtYõÀxå#¹\ë[¥ÈåÚ(1J®•“B[lÇ0PËí[i– ÆÏRþóôèo!!›EªwÇRÇÕ)•ž°_q•gÖã{GÞ)u^%C¤®u­|_.}á‚N×°à’ ‚aòw_DvÔ•=+ž“:oшöRvyõÃ#á¥\_vâ·/Kë-ú·ÚÉ´‡ž·¨„K±""ܦÛ>?·âhÉ’{ƒçaú ¸<Üý´fq¿ÿ^ãí§dª°ÈÉ7CÛfeÙÛkÚŠ[õp¦íê&Yø”w›$WŸ›xFñM3ÄŠ¼-ÇänUWŸõE{×/DiØ‘õ¯v‘‚]Ï›~娚$ÏCä4é'X;¯…ý—å„@ÄŠ¸`·•ƒ#Whï´Ö¨×ËãÊQ(ø#xÓvÍÒ×?½O³ã!‰H$qóS·Pu]°ºâê<œÚ4?Å«iò6;M®§ŠW)tØÍ „™ÍÉEì¦hýâÿ~0Ñ]ùCáÒcÌlŸ¾9r3:Ýu¦ "$pŘ6 îõÆiýVÁâµ1&„K±"6¸&rqìâÏÝšî2pâæõGÅàžtí`¨Nß`ô…]"µüFÓ\`†X™Wqõ{ÍmTðg"¹{»%' ˆÄßU=Ø~Ö*ÓüN¡—›¾¨+ÅB¾[¿xÒ®EšnÜ}†MZ°bö “ß{’g•Fý¸Ñû•žª·¬õÌ÷?›m‰€p)V…8J‘±Âî½6ª‚÷Z¡tpÍ®ðŸ6:göí"hPÕÜË\¬Ì¬¸çné‚ ¾lô¤Ù°|åãÙR,±?A< · o4…üæd>ºuþØ÷[×¾ùڸ绷¨œ^Úä™þc¦{ûnÞõÓÙë‘)&Ú óânž=°mý3F¨5ʱËÈyëvº›n¹€p)VÄq,W?XÏ9úë8±O¶IJQ=¸@ñð×óšÅ›;ÿ0oXÕÐýˆŽlp6ëÂoÞ<ùVeƒ»«Ü_»UNûÍýØÀ¿%ß0ùVQòý«¿üæ“•K¦yztl¤@çÖ½ß󞯾æ]É»¾«½{MöêÑý¹ƒz˜_‹žÃ¦.[¿ëÔt6„K±*k¹Ž³ÇÀß~r•ƒ[þ'æ¡+Éd· íºä{\õ ä0}¼šø¶ƒr™ˆìˆU ÏIYqÊöoêkÒÏ¢X‘²CœŠ"ÚYYÍî‹ThËœV+P€Ì²»ºërÇ&}8?²?× ªQÍe™+ X«câ<ˆÕ¯â+šmçV¬£{iÔiœ:…üB˜Sjó8C(w ΪC‡ö_Þ j?QmžMäN¬ü:‰døÅŠ„Îq+VÉ?‹ÎT.]UþMu†a¹(VfP5‹¥ìÅ8î<”ãN€Jb»¶¤h£™Ó×ÒÔ.S§¯ã)}|ëO­*j©X xS±Ê”g¬Yž×RÕOx+@_Máå¿ðPùøÖ0wc§D ={uä¾ã ûln‡W¨Èçð%Wmr]6F¬¦N±J«j«X\f‘RUbö÷rÂR‰‹Ú±ÿY+]ú„‹fÂï‚«_D–èvÂÀÓ‡rŒÏÒÒl¯ôˆ D±J­LhúICíÄ;Wž‡¶o_zIR§ó4K3“®©Iv©&^°…¯,€üúA×l5F¬ˆòÛ9,øÇæF ¹`Ä*n±sÿ-gÈÆîÍ0+&$Kd4*P¬JbÂ*¯=A|²jeèÚn Sg69Lw±Æ†¢i@Õ¹x 0Z-*êß1б®%¡_b¥|tvõ…ÛÖh!dý£y«2»ƒ|‹ä ¬–ƒ’ˆ•‰¤‘$£6i£VÊçaØÜÔŸŠ´ð‡Z‡jÀÝ-_Û@$  ¾X­"(Å të*ãoÕǪêW,‹ø+•jü¯t^}Õ†í?I‚+¢Û:v«\Í"‰Åƒ·=1K¬ŒWÚ¤Z)Ÿ‡~œ¼ «H¿žZõ,|Ò´ê™+=Ð 4YÚÀ—¹XånºÌ¿US‘›¡U5´Íªêº²²#´XvÖVYõÝÔÿ ‚XMñâ_¬ˆb_‘XéFH ³_”N›•¹ZEíëTi_)N¨ó&Ûר’¤ˆðdIKäÚ1>Ù[š©¼*ÙÙ)ÿqɦ+ ñš©ü Î²RKš¬ÎI¶›!V@XžSœ±R0Dääéo“€ðó¶êÁÀà2#±2|ÌXlW&½zß>+‚8å¬ö$D"˜àaª*2¨­ä$‰X¥È#"îGE=ˆŽŽ‰{’”šž•[P¬–6®OŠÜXyÔSýù•ZUöyÛ鬶D£>“|¶¾ò¤ìÌ}³ÅŠf_šüI Smï…ÔdµúÔá¡YZe–o¹yu”ÀÄJIܮɮÐiùé|¶ÏâÃêòÆ4ö{ª/VLÛj,iW&½ú½Ž¼¤ïœÌ&íÀ»Ó‡´UJ•X5ºK´àm‚þ¹b¸†Aj¥Eв322ÒÒÒRR’žÄÅ<¸¦ê(þÀé‹”ŒÜ"›5”¤DÊcs fVÿ³ÿO÷_Š)1¨ `¾AÌ}Q¨û·¦õ`7 ž¹ˆ›-V_‹EC‰•e^óì6&)õóK=|‚3Ù´ä;ša/%ó$öKä:beÓveÒ«¿ù{¦Šÿôí'–öŸìóÙîRUR²~ÿꥹÙ^ ë».T”åe>†=#”ªuÿQBZ6ÛšUžùH™Rb¼á{§ê8ƒ-±2åtÕ±"Ìô8Í Ï(]_ï»úbe™—AúŠ,¿Éû—v‰ÇŠã¬õä_6R ø‰ì”Ñ`¹9bEúT2iW&½ú§À—ßäUܽƒÕCÈß(ݪúz ìæ'd©ŸÕcÕ$ìŹOc£”¾Vd\JV;Ó Td? {œKZØò©ß+Ã@š¶&³b=:CÖš0Ð · ]ÞZ2´¿Èð·Ä\/ƒâȺߋԓ¾bpóô;™Ì‚åæ½Rµø£DüH¡µ¦V¬lØ®L~õ¾æááI9þnpš°K;ðôCåÝ¿•­s–e{%µiXÝ‚êĊ✴ø‡aò°SsŠ­’¬²Ì¸ð°Ø,ª™ÀLDÝŒ ô=H©â•ÚÖ'´ÐF|ú0e ;{ß1G¬¶è°áÜf_Ø2½#@ËQo~sÞrÉ*ÌŒ=,äèÁÀ/wú¯ñõ ªáâ q\Q)V@Ø®]Ù×ã€×ooï7}}}×ùïÞÿKÈ͈ø¬Á>Ü>@y7¿[ð ˆ{ûœ­N•ú­ÒÃ#«ï‘¹PÏj˜7ZQœò8J.‹~ò4Ï’L¤ŠüÔyx\&]΂q³„MVt·Qj³Rouârô? +˼ ÒæC­XÝ;óW´Yo3þø|ñónõ{OX¾åð?‘éôñQ¡!Ç~Üþ‰¯÷¬W†öuo\¯jú©[Ë‘î==<ÚUö§‘:¬Ð mÔ®¬«W<==_ðððèÙÁÍN{*mz ~Ék¾÷Û¾üƒ‚ ¹ó$3“Åôy¹17Îü°aÑèö"p¾î7=18-†fA¦„K±úÎ…"ˆ+ÌLŽ”Ë#%fä37NE~Zl¸<*!ÇÄýƨ/¬>±UۯѣS+7‘¦ö8·ßLXîei¨¨­®¾ªÚÙå¿Vpò…Ýkæ¼ÐF•œXÒ´û`ÏÉÓ½—ûVò–·÷"¯WFztmW%ÎÍ;{xNÿÖÿ]{‚O‡ü{çÅY™Ú§6Fõ $õýÒoš!V¶+VÍÒÌGòëÌjô…ß;‹½Æ{ñèîÞÂÍAN;·Öîƒ<'y-}Ów£àÁgχ†Å¤3˜v·0=æÎÕ³ÖÿÏkx¯–jc8v½èÓ_:·ì6B+¿n´?Bù‰1JÉŠIxšSL/@eyO”1dd|F‰éÓ9É(0ìò”bÏ|Wz-÷ýø‹•"UÅ•É|’,~ÿAÞŠUí\(μÔ¾Õzÿl}ƒiÙ“;!?íØðŽ÷ìWÕÞŠŠ!žžc¼æ-óݸ%ðÀñëw‘øýC߬ª¦ ¥Êз±_Ž^×[µ+“WÍcâBÖ•Ì'1Ñ¡¡WBB~Þ¸õSßÞ³¦y¾èÑ¥½›c•Š9»¹wó>F5ýêeh¹Â×Gùw±êãØQ]Ú¸‰5b×¢×ðiÿ[°ÿì¿qTC¦/-Œc \ŠÕ’Ñ "¼Œ$•—%x—˜–™“_TRu«Ë‹ r3Ÿ&ÇG+%í~lr6C_>K|åEŒ‡özzÕL©UvÒ¥ 潬¥{ k´ºêá¼1C<:ž¯+¯šÙí¢“ªÓvúQÖéj:̵¬]™¼j>„«f5Ý¥ÅÈCCÎïÙå¿Á÷õEJqš¦J ?Ðc°êŸiÊÏó½}?ÚxøäùШ'¹ì —b5v!ã¯(7#åÉ£¨p¹!áQÑ“Í •tÅ„Ì6bÆ«ûÌþNÁù-Úª«ßwé~©JªÔS´èt]0ßËÿKçá¼Þ­éUž ×{må¿§”±QŸ MÁ×pBÑ(@P•Χùi1e%…yÙòŠJ-rÜ EY± {ÆŽ0û;÷ å^Ò ò† ‘.Ó8;:BÍö2w Í›àò?†{¦ràÙOÑØËU+y+bìk(V4ØÍϵÿ`OҌӳ‚ö×#ù>}ùˆýkƒù$ò=î¸dNUßn†Û”Mj”À‹ÙÚlUÿóî\Ý £ü‰Õ‡P¬ôɇÓü\{4IŽ6LÁ.Ÿc(Ýö™v}èß…$¸IÇrp{ôoA~—Q|˜«ñ7$+ù«S¢§Bz˜>þ>Üåéâ[’<ùî½¼~Õú;º©ßß×*œ— ¶×^±* Ý«mI0ô-ÍÒ­Ž vjMö×ÉZÃÉo‰Á-µÛʇ¹ìö J¬rHχ7.zqyÉHçéâ§¿b¼Îß‹±ª|¼|‹Ö[Úhé+œÍº°¡Oeœ”XžÓ D—ï]ø:òŽúåhþšgb•ß”‡wÅIpYXbµ­^‰€nþàò<’ë{ðuñaýHB´uâ}¨zRÜÁæÛ!‰ñ¹KçWGÞ"£XÅ *-³¯{0gP䑜÷2oWß™ü-\fpð}Íâ½à`í kg‚Clº”X4äþUË5Ò¤nžª&AôüŸÄŠÿ·Ã^çíêWvÆêbEñp¾å®àúꎋÈ&wuä+è!ˆ-õ L4í,<¬fr€Xµ·üù³Ö7à*ÖÿEg›U׆‡º8o”i"4{§Ùí5U¤É8 K“!ñ/Vå²Ck•Õ&ð˜¯ú{áÇê5gîóðHÔ²É÷lÈm›EBÆ9zÌçúêÖôœÁçw«0á/Š•q:`)›<ÿb–m`ÁŽ©Ê¿_Áç¶3„r¦|Ñ ˜ã#Î{EpF¸/>j"¶C­2LCl¥“ç_¬.ƒ…#Ø0@AKÕœEÍ`Šbø3*:Åñ=—Ï ³;3l‹1\°2ëšÅê ÌòÎNÖÛ`TÕ=ñ€" žÇñ[&@Évò·L¬€¨}bµ¥­å%Zoƒò¾ƒJ¢¤MµZ!HUÈm—È 8+@+|âΨæŠÔöŠúÏœs‚«wò)VDTýåÊ¿?Š@䋵Ñ#VtŽÓãý‰´BÙàg‹TBòtNÖyVòÆÐòãD#±655“¹ëÉÅjÆ^ÅŠ8êÑûó¤ògÄ ZKWºYa˜î8ý¼9=ܶ†‚´Btƒ×üˆ‘Ð@4"¸LO@¬MMMÖ˜‰ÕÐ7ø+"bYɸ×D`è[Xe’©+Q¬jŸ4åtðè’á,ôüû¬žWˆle ¬š6™üWÝÚ6«ü©ªä‰Í7>©kSS“u#†žÕ3›,U*r÷ÅŠŽ¼"‰R­VÑž¿Y!8÷á"—‡ëÌRK„¾`õÄöˆ×òu þ"¥!U»WÌÅÊx•q òôb岇ÿ‡òï9öRUÎ Ñ; šó7Ç ƒ B§;—i>Á_ìôTù$`õÔ~”¼ÎÛô ?;¨’½J¡é‡okÄʺÔÔÆÙÜü¾÷‚ƒO†„„\ŒÉÈ©\™ ¿ñü@>ý¢h¹Íù›•«ÛdÎ:¤°¾ ‡†îteIn«²ûbñ˜ËóÜNôœüï±€wæLx®§{C;ФœàQÕšbyjj ‘ŒÅÊW/Ib‹žÃ¦.[›N_{Ìß¼R7§«SÒÙÛ«suƒ‹÷/”çoV®nñ¦«ø&R˜„s9EʤI,tBù ‹í¯±zr]ݾãd`wúÅoŒìd¯t[ œ¶bµŸÿŽFê”±0üŠnhqjjšteFa`^fffBÌÐ?ÏØöá›3Fv{•puí½ùð f|žU¯UÏa^Þ¾þGÿ¼õ(K›˜ŽìüÙÊÕm ö`*ƒfsv¨b×],•ôµ:—sƒHVO/ÿ]é‹ÿÚÔ¥¡»—l Ð`ÈÒMAc4nfɉ*x^¿ÝšÔÔw]8**Ï|eÿG ‡·Sž”kßy[CÒø|:u†Û˜LDga®n«šÃ·Ž™\ê°”­^Vï«[5¤mYž4ûöó"¯(Û\»"ê€Ï`p´äËßõÃÍ’ñ•Tý©SM¬NMm±X6¨VÖèoWnÐr¬ï¡pþg¶U®n¤æãòÆŒgë¤_ƒd ë•˲5~í!õ~̶‰K®l~Ù ìú¿ñc¸qaÑhÁà úbUjjkÄ곆k2/xq—!¾'³…,VôA±ª¼ÛÊ‚©,éP!>ÁÖ9?J±ê+‰†³ý ¯ü‡vvK¢Ù+¯à¼ß'h9sÇur+Žxî$é±ÞïG.··w¾Ö¤Þ9–‚ád‡@ ~å,«]X{ñØ ¤Hœl àÅúËÌÒ=¤sî°QRÙ? ·÷ù{Rï3úÿÎOk é±þG“h<é¤ï¸{çb¥Axb™»¹®•E=ê¢íXëo¨cö¨Dá{x›}ƒ”è #~±Nw¾|ÅÚ,Ø÷„~¿¯Ïš.ÅjÞgßë Ž/}†ÕáƒÇÎYß‚`š©ÝÊØ:ã€wˆo\‹”ç> ä60‰âWÄ>~bé×No½v=`E@¸«éÓL1aÏô†ÐzÉé"¬:ç|î`v­2_¬BXì}$qD¢XÝÔóØFFy°¢±dìOæ'fŠ ZØ\Æmý¯‚-áR¬&Îaæ{^ÛÐ_äâu0 +Â-e}<Íî i®Xe·ÆÞ /åß6)Tòó+§©‡r̸ï綇a/—²) \ŠÕæ3¹>ùf´L6zgÖ„KnÈüm-V¯5c±sá6PuÞä »yZà™lèÇ7M÷2Ê<·iB3pµñ’5Ñïb5ܬ,Šù'çÖ °áe8;bÈW’Ó¶«Ï%lÎò÷óîL“qhA p¹îä# q,¾¼iVg´Ÿ¾õŸÒTMH5ÂܧE'æÔûÆV=P¬#–8ýmŽR™;wÑÏ’/j°qòÝó»ˆÀeÀ¬Õ_¿x/&#SIlØ_‡¶­[:®£$_Y*•#­!›ÀØs©ù']ôË,Ɉ]6IØ@ëôûÄh% žÓ,Ý´ÅvÈ,lÊ_u²áÜ ¿ÊÞªñʹö튉Ï6Ò­íÒ½<ç~|TÎ^>³´`!{úÒ"‹Î»ðØ géK{Ù¸u;8X›ßæ^p°öuÇ™`mþ™L›lG„MÙÙ—¶*;ÈîuEm±SiêýÐ !JBÃÓjác0n¾¥ß,:9×Yâ”Ãþ9e¢`!±ÎfÉ$›´”V¼/z߆ZõöOd‘©3¬ørAðx;‡ñAy,ŸS(€¶åê}ÝPÎæÛAs±cƒ¯ØÏÐû¢ý6<é’¡õÏá­cE/Y÷ý¬ ñ2ÇñAhIͼïØövÝàŠÝõzügÓ“.ž ïk¼7Ðê"Rwןw¦‰Ø”Ä7­Ib¯¼kÒ•8*£ñQ6Jy8Dä<ÞíWRMv@+;/–æËÌð»‡&­IìhÊRAq_ “8Nü!ÝÊb–ÿƒ°ëB¡xOO}Öú&ñÒm ZFsÖ,މØs„Ó¾ï ùe„5e`§P„ŹѢß[×Ö^q £Ýû\¾®ÈÀg=¡Àê´ÎyÁ³B»eÇ-ž Å 1ɽöÍ6ZÑ“ádoÉüXn˜fûx߬%~g¹Äòk~Ųá›o•£u‘¼¶±tò‹f Sœ{^45œãóÍzÃ5ïšÕ¸Ú Ðô`ïVàâéRhr×ó Ö¤á]@Ì¥øÐpQÛfÏU¼·¼ô/çûo™õ<ûžšî}3«Ø¿ðÁú19…£ÀþÃ_f™é³l0JqÔ`¢V6ÝmNkÐÓOšÛÍ»ƒ–«©,nÃ}1z=ØM‰}XhF×+„sÖ‹<“Ð æÒ~Ï'°G"VzV½U“bUd&ÚL}¶\¬p 3Â9gæbtj6+ÛWðzÓVHdsnèë }‡O&±v EÚF¤è,G/šÐÄGÜ u–»7ÐŒ6•ǃÿO4êdÞ¤îâÝ³Ñ 9(39Œ–ß»YeÅc¤Žsý#´SŠ[™ÊòF ×`$_€cï±1»ìbLøU†bE¾Õ A¬©ˆƒ6㔢&(í´ÀD †Êd(V€£ïÄJ®.jŽó^™â ÄDž ^ ¨û XÀ™û<\þ½|A€“›¤b°G©0Ä ç`G‚¸;Ü?­@NŒË‡ŒÄ É—5b5;Xë[Ý ÖN?t&XëûdÛ`;Š"0Âæ6=V `‡ô±f¾– ð×ú;ÚvwxN³tÓÛ1 D„íh®à £XyÔ3éB+At)o6|/ZAŸ¤öC¨ÒVõü£56«//m^æƒ^^)šÅå^¾6ÝŽ B¤dßüÏÐ D4œ&a/(VB•|4B%—ì߯§"XƒC!Z¡’`ÙBlÌCÁ’ MS^ZçmâꉳÙ#ˆà¹îøÂ¹ºnƒ› Hå÷ °S(‚˜$mï’KuÞ:¶þÅ Aj ó¦}ÅÓ‘©&[¡™[œÝO9¯Jýùlf_þ Å9Ø‘KÀ¤)|jA2ß8Ù¢þgkÔJ±Y:%©i\|némŽÅŠdÚMÐõš 3 É‚Uý3/¶lsž»Kþó|‰ , {øeŽ+cÏ ô“o2X°J­²f‰|йºæw¡É‡ñ$¦0ðɲ”R†Ë)Mq<RG;ÒÖùõ â8’1-$¢MéíuíÅUÆ …¿D#‚Ëé »¡ä1²‘¡P¬:Bà’嚥ü›Šµ"Ñçþds^ÌHÉ;\uí?( ´ú4Å­¢—Éì„b…Ô9~…ú¶xg”•6¼±ÍôŠ=nNqdÏëeRéÔ…9be¼ èÞšâ¤ËH]$÷ÒîhÍâ/¿F±VÕ-ò4WœxVJ’gÀXŽæNè-U^¨Úù?­ò‚€QFeê”ò$’Žb…Ôeƈڳ-Vô S܉A\ì#[aËùëËoÞôÁ»ÞóƉÄ*]så<ž@ª- ä‹J¬€Ö.8ùRÈÓúXwÝÇœfE«ŒßréGä/ɬÏ6JBù®¦®ë³X·YÊÕ-ݳ©HyÂÎÓ=xŽ/R¹V"që=•=ØiBa†kŒZÞIßjÀìH"þ“…¿k=’ÓQµe®•üÍ ÝüÒØ*-ýò·ïNìé ë4fѺíG/?¨lÄÏ&UIU«€b±‚±XÑ‹8ŠRWy dÚ7ñå5þb²74v|ÝꆹԀeÚ¸<7kí÷âôÍ’÷‚ D¢V*£iRq™…Më‘Yb…a RgÉ Óº2÷-5þj ¾é(ù“¥½D C÷¾ëÙ  É°e¿?&Û#³ŸRªÚ•Æm&´Æ8²3 c;‚P×óCŸj²Ž-ý$­¦^FùéIÒFËΛé&–Gõ{µ³=~B=óLf_€68æA„¡Qµ£J‚Žß­q§Ÿèÿ,4[t8ÙÞ ç¶Ìëç’g¦~x4’^ã2»A§Cø| ˆyFjkêÍäšsÚ>"•ô{ë` ÍÛƒ"ù/[_êÐbÌ{?Üd2atäˆ#(U"Tе½—Žì×,fÕ€Ï>æÓ_.ýn ºx/&³D³:ëiø…_®œ;¼µ ÕÐe_ÿ•7Aj—j=øKëZ‡ÚµÂÎ`QxíÛ·GwvP·eËÜZºÕ«lÖ–µê?áõϹ‡é7¤–#ÿõGÍRÔ_¯Yp€”|?4ä—»¿ ü>8øóò4¼ƒRç(8xQ³ø™c»pm¨U7ZvpZc©‘Düø™¶y««øEmW‹C-L 5Ó,]Ðæ³_ «e”Ü{yýªõwtS¿¿¯YŠö²Áv+±M˜xíäCÍâRmϧíß׊Dbþ^<ˆ‚ ¶¦,%LÛé©«ëDÍÒu/ï[hAÏM¯QÚì4³›vÕ¶Ë_¸n‚ BåÂןicG€yšÅ«ÿ{ÿ!šAa¢x­òà̈~ÚñãöÑ,•¹ƒVBD ü¸C³”â&~K³¸¯ï‹÷4‹¹‚FBD`hgG¸±Æ'V³8Úi–’zôß­Y¼x0Ãà+‚ üR­YÈܰZÛ·üK7ÉmÍb?è«õÌ{ŸÕ,ƆþWŒ–CDPadðÍRÂè‘ZÏë#m9¤…§v»—÷ Íâ­}ÁZ |“ÍÒ™TdÞÇû ˆ9äÇDj§»9òÕ÷š¥øW=µ“ál¶ƒÍbwè©Y spó×,îöðx¤Y\áõ®öû^^G5‹'¼½“4‹sLÏSü®Ek™ô6‘ƒìt¨3ùtèS‚ÿ³•™§óÙV²HÂzçkKàZUúž4£d½Næk­ÊÛó3)×ȵ蕲R -]pHÁSÞQ5—äe¹øCg£wdhØh%‹2šÓÙ_¬¨Ì±ü «øþ@§£b–€~q , F¬nK x±â®•‰ÂƒË|ú]ÌõÂ%Ñ!'«‚ƒ9Zwt–£€ä¼#ˆ•âÔ=ç±%¼VqØÊÄ]wŸ9wK>-®ÏyÒŠ?¼Mµ…ôר¹FsCZí›´Ò;ª-çÂëgG>CÃFŠX5­ð^”SØ”{‘dl„úCpÝÒ¤õ¹Qˆ3ÜÑ~’޽ª¹£VÚ%Š´?Ö ÁÀE\#bzíd·¥òí€-]¹XDÌ«‡‹_G?]·LK­|ç;ÅòVÞÑãìL[¬êÍÇ ÀÉݶÄP»-yú¶$]é‡-Ë/9‹N¸lÝð•’„Z­ÏÕ+ýš›“ˆ•"¦”¤Ôv}ž~ƒX™È£>b¥ôWŸs_Ç–¤ç¨Â–å–ÂW$ŒTzÞ§Jë$!å YmNº‹ˆ•âNk)‘˜©’¡[À V¦’÷¦HYá{ÝÒ­RC¬@1ªIÊdšAWûdÿ¨—2d²Hõb„¥Û·n’Éd?W«Î&öìÔŽ[¬ÆÊ„ÏÖuÊ~òVê/1âŠ]žáŒYÕ#¬V´mQÔ_*nÑ„K« Vå—½EoH}¢+ê-¨zé2ÑÿÔ‹³-Þî^Ü%*þÓ€[¬* -þÃÿ©Ç`'ÀE¥2oCU¸´ bU~¹£r ¤ŸÙå\g}T\¼:ÖEªŠ“•‹Ì'>Ž»5P«€eœþ£qõ¹ÝJZôÐypKþ¶åŠUbµ{h3…y*k÷À(W °+þrSÝ‘GÐ-c]Š XáÍ–½ÿbU"xït¹Z[©UR¦ß ½–U9Ä ¨‰Ût ßçY/fDLõû W麠X%RÞQ%*¥7&VA[æŽj­¬ÝJ•ÿK>HÄ[§Ë‰Ê"{NSM]üi+.­‚X›³Œ!jš]´¬-VzBD¬B”×Ýz}qN»5°˜2k¼‰©P®“J!U,ì÷ ª6']‘â_›Û–+`[ §ã¦ù4³-çÎõ;Á¼CÌ€ÿJî¨9ç‘§›Š‹¥J2)/ƒ>?‹©ÍÆÜ«+V¤FùmYk1ìlÉݪoG”©?UåÚ7_²Õ îèF•2ÃÙ«|¸Ê×%Éæ)Å­]u§îÁ¤ú´zåOY`ªènÜ–[a/`?WZ¥stÁ ïèŽ&SÞщʹچ*ôÞžw  Ù‚;ˆ$/þïD>O[`7r«qÅ>m\è|wTu*G{ËWyGG|¤$íU˜ôóë#È{ÐÒ‹xTñK‹ûzPóÉ;šbKìÆ´Z†;K$WþÊï¨Æ)ƒåëßJEw”ÐFBÌ/ª*_>¤ U¶2¢œ—»¨Ð1OSµ‘kn™lKìEjÕ)·©ïŒQÔ*c °þõŠï(s ˜*«gõ*8¿d`eª9ò‡kåU¨~S›¼úÎ/0Ë–Ø‹Ì϶,ïuÒ;úÊ@ùú¤äŽ g3ôZéWò×xS̀Ы]…^êe–Ü¥ìó…j¶í¤«±ëç Áa9æÛ{1Còëúù¢%N{G³XË×Ô²w´¥íÐúVÞ‰¯ý=©þk®ZE«ô³™êé~2fý϶Kn]pé»ÑuÈëå¯çZjKìCávA[PžÈø@ÕU;êyÕ í¤²íwâ;'·,™6º[¥j‘GÓtÓAy²%Ó‘æß¹¼ÿ×o§ŽzÑW•NÛ³Y÷×?Y*;s¯Ø€ò@z…ç²ÔÞ@F oG°4ù¾ŸçMÔ±¶*Y´¨f›Þ¯O¿îoeðøòý›—Žì\ûÕ”1½ZÕ`”ßw«Óyðä¯×ïÌ(—¶À•yŸ^É+*`OzÒLÇ^JJä¿[VÌš0èy_¯âžS> Ûuøz`àÇÁÁ_†„¬ ]2/8ø£ÀÀ1ý_lÓÀ»x·ŠM»yoöJÙWÒ`K\–h†Æ* XÁp’ÞÌUe%]9¹ok肌èïßÑϯ‰¯o5Ÿ¾¾Mýüžó÷4nòÌ…¡²N]½ý¶ \П˜YÊ6IDoÀ°%Âå?eEêz‡!æ2Œ[ `Ú§Š—ô†)`K„Ì¥# *aûa Ø!“W[U¾D-9¶@Ø,QÕ]DëaØaó°¢²€UCÀ–œO¥$ `K„N‚˜<ÒaØÁ3š‚`Øás±:¦5-€P ¶„-Ë•U`Õ:+¨Î5%%ƒm“Þ®œ'%زœÛöòźšøü>³0…ñrŸ”`ËòmKx¼øìå„L(_f¸[–'[ÀÓàí  €Á–Ø­|)ÿU8ÊÄGXã,:ûèÒÙ™³€qîC°e9¶%† {„Œýö,`úÛX qîC°e9¶%ʇ¡z…ÑÆ]àˆGÕ…\¦€Á–ؼ|•¾Ù%ÕŽV¶ê‚[`ϦàQu!c5½Bb¬.ņ`ËòkK8~ºY{ê­0fÑŠ ; ç‚-Ë­-°{©uøQ`KØ×dE¸öçE‘° @x<ìR ½âÒ <¬Ð]Ó3 Vßô¢?7ÞÓoć·T‹k?‚UBãA­¢?io+—»ÈUË'zÃ,¡q¢[ÑŸ…ÇUÿÞ|¬ú7µ.̧ŠÅêÌÒU©u`€Ð¸ÿtÑŸ¯O•q¶úÂ,ÁѰ(À~§o’B‘¼Gµ¼v:¬!Ë‹þ\5lȈ}E‹/EÃ*Á‘ÞA§Sèå×`€Yz^ûóÂØ$ £·ÊP1Ú[HWôv)³Ô `)]FïÊ5&VìȈ÷Tfˆ®â½p¹% î ›Ãc:!"ª4ápWõxˆ˜‘} V¸ˆVw]ˆÓù±€ÃÕ‰¡êÓÎ@¬ÆÄÊ<5°– ¤ø‹ˆ¤T;è¼!±ÒX±\ç>+\Ô±âíYYC þ'+¥FB-Bn<8+âÜb€+hU©[R& ųÒÙÇ:"wbªÒ³RÂ4CÁ-PÜŽA¬pm±bo\#ã~”Å"0­NE*AÜp‡b0X‰ãSöY ½™4ø°zqݧ?í:¿ŽQUŸZ–kÀñã¡¥œk U¸„V•jBIC¬ÊVM„CûÕKÇ»Ž:ZvË?ePŽ k$Þ$hH]Ø7œpgÄôêuÎ+´Î}œ[«x9*l@«ÀÅîª/'³ïr΋¨ý<€#‘µ ˆàÞ#º Õ -€¥`ÁÐ@Þû6÷üæ1,p}‡­æ½ïdØ `OR·E Á³SÒñ_X T 5ãùrÁÁòyõÊù°@ð¬[|®Vµîwî Œ<9uh¬>¿\@Ý \bÑ |¢ÚÑW°@ð<ž¼?VÐÆÁ‰Ì”Ü|owž± ´Îmœ]«XWÛ'‘™Bq«U™v[eÓ” òv ; +phc™)©½•šÒdÎM.±âsåÈi œã¢— V¦9VvMd¦PäÏ`F"òßôØÐ &”nÂÜu,‡&2+âïJR"±ÈmÄÎ|ˆÀPiv\"³®·,J¼(¥ZXÅ 9­ëR6`3¬ÀG«ìžÈ¬”Tùå¿s^j_¿¢*C¬*ó¢t¹ÁS §5pMb%¯ž€øh•™•’‘®^˜MtYùç›÷f,^÷’ê¨fÌ =DšXàš$Á<ÅÊ>‰Ì4$T¤Ô‹Qû#rÔ‹+URE=Ïsúr+Ê·VÙ0‘Y ¿¼þ²z)÷§=ú-?3$bÚ4x•Èi \}ÀÂᎦÆ÷y¿iÝÔUjU£m…’ŠœÖÀÕ(ìIoÁ BálZÊg¿?Däòĸh7að3æÔs8q‡Õ ©ßLç±ÿ¯¯0ý=ÀÞô£J¦Ív~ö=X `/2ÒÔ G=„50ÄÙ!é0‚#¹ÞR4VÀ(Û˜®Ñ°‚#Éúì¯X£<Ú8‚+K†eà Á3·ê ŸÇH?îm… ìÏ*ÿ>0&±©JƒÇ°‚Ý>r#Œ€Ilþ=z”!ïïq a€àÉñ~3¯œ€ ˜ÓA¨ÊnÄÆÁ˜Mf‡¥0‚]HíÅÁ ˜Í ±0‚](œ¸+VÀlž‚ (®]€ ‚'çf,¬>Ÿï,€°5rÝe¹\β «Ur]­*Q)¹jÅ͘kñ(ߘ_¥#Vò2KrøV\Ä>ƒ~ X‹9=ŒÕåúŽ•f½5A.Þn¹b€•È«ó™Ñz Î‚¼´n¥âä!¢êXôwŒö]׫¢PÄ 4X›þ V¤äÀ8N¬ä ˆ/ý¯ÒJXˆ«€b¿ªV0fÜÀþJUŒV› µ;…¦Ä T“î'¯ ®IÔukUt @)V)¿ÀdˆÀuÄêŒ2ž%¶¡ é_+k‰ÕnQOÌ®€8M‚hÎs ±Êù½o6"¬_ÊËÉzx?­ˆû2çäY\F³X‘üÇ÷ïÆÇ\)îÊp¥ˆˆâW¯ßHHNô„·jå$dA¬Ö§ðqjü5¹<"úæ´ŒGÙ¹%ãs óŸä<ÊHMN¼©Üu#)5“ÇN¹Wå± V« UæØù•›wñœòg¤$Æ*=¯ˆë·’ï?æœ%W)}1]E¬à-ÀÑäÝ”G'Ý7a`n~Vzò­heñJlÂ]ƒš•%_PV¬JúÊ— ¿†mrRÖéJ­ÛpÀ-V¿ÖLÁ›¬i/S1Ú»”|&ØK-()±òˆ©fÍÌ[ø$3õöÍ"ÍŠQjVVžž ª¶EDß/Ôñ¬äܺ#W°¨Öû’ÜŽbuÕóc¼+ÀjZElºEºrF:ªU®)H“_M|`áìqJÍJ+Ö¬ˆk±ñwR3ekócTáùˆki…eÅŠ‡V±d°ÐýšÜžžUÎ’<¼.Àj~›X‘¾ëEêMW«‚]2³-Ý”ûÉLˆŒ¸õÐzý†rÝ¿wûVÌÕ¢j]dTtÜ­ø„xyQcbĵôR±âW¡3&VrûV°bŒ9V%žéìÏ“ $xé^óã~Uw¯ÉcÓl3yx^NÖƒô”„Äøø›qruχÈk)†koFåK®÷=¹bœ?feH«,Y¥X›Àw¾îšM’;l;f'F\I¶ÃL—ù±E~•üZJ>W5и|•N²\f» ÄŠX}wËß6P¾Åª4fUnÄjÎ ¶úßMyTª=Ò<‰R²äq…œv^®–NÅ¥ Ñ!b¥*%Ò}Û!ÄŠS«tý\]¬zîSaZ´üF¦].'3R¡ôàŠ§©3E¬ØEˆçnv+ýP)é½gæEHA9+R@¬ S˜v-2ÑN™Ò•nÕõ4§îgÅZÇ3O« Vú¡RÒ{ÏÌŒ‚r-V屨CvLD’½ÚàïÉ#’²K?ª=+¶Ê›®£¥_Å“;²Sèן˜} «ü4×U*MPR+“Cž÷¹–XÝŒµ_þ¨ÚmN;Ü&¯Î ˆ<ƒ+‘â:bU˜q×q׿´b×2–X‘bÈ͆ä6醋ˆUá­HG&rÕY E VÀÎ/pk"ѨËÚbÅ2âc¢á5ìo±Î°FâQï`«ÜÀ퉑YŽ4ey+K#¤˜Hf1I©ËÎ2bEEFû{ïyã8 =ÃêWV¬z{m×Úv7±“œ¸¤Xé‡JËüРS(°/9ƒÄDbj»¾@-V£ ¯Q(X»ßhûMú]t¨ô×ZÿëeÅjÇU­MòtÇ“ï`…ñ‡6,œ:º‡Ÿo ¯²ƒê*øÔòmí×ÝHÀ;ŸÏ_ú“ì°‡‡Ç\ë."•\5ßp’·XñòµX{ßèj•B¿S§¶X¤³kRÞ•$[b_îìœ=¢'‘{ƒç‡|<庲ó¬]2+xR਀>þ~|úTRI˜O±’1Åÿôä+ãñ(½Zq†£Á³jHXoþVTƒÍ±€?uaÑкÄ4þÙºc¼[ïsÓ“£c£ÃOu-Ò*©hèF“Äʘ4‘‘ÃYbµ;ì Û½\cmnW®8áŒ~VµÞ-g«,y^ rfZj8iQ¿)~Iª| e‰ sÒ¬\g«„ëx'lÆÕYM¨éìË<÷ŽœÑ€éV³".5ûÑ&³69©XD¦â­° Ù2¦NÐQSħ lÓl\] PDuøÓF'«ûÈÏiÎOªìðé/Û…ñnµVäÀ~åœø@É3ëmÃtR±ºq˼ƒaª.òš/2s2ÃÛSÝëÿˆÚòLÚ” ÖçÛîøÎ)VyfN cíôQÝŸ!v°Þ5ÿuÕÀÍd|ÛP4ø±§Ä÷Ýo@Ó`y%oe•š«lÚQÛ9Å*åŠYeÊêÙ£|ÇÈ„Í`?½WªÆ×¬·ì]1ðŠ…ö¸(épŶ\r°4(ö§8K+^Þj²ˆUt’yZeu±š/ð7(XO¬v1q,û Ô¶JcóµW˜€[(¹åŽëäÅÖ'¹á!ôŠ ó«ÞE?–?6óv!VùÿéíôDÖ…üÖ[«Åb§¯çtk/_äÎuk3°’mî7!VúRõ}é˜3V<çãyžÍNà%-G\ië¹Ô­óoœ×ô RÁ•{+k‰Õ>_÷ D+Ÿ5þq0º–”~¯ô¼}ßg©ŸÀÅÊKOÒÍïd±ÒæÑ[ôš ¦+üѳ7zí––3í4Y“3¶F›ï X*V‡§D¹’XŶªºÃ6'¾Ð ñ ”ãòÀ|f½Nå„bõPnfü–m’ù¯3àˆËˆÕ…§;جåînû±(É®ÏZf¥ÝÎå„bëÈŸìSÞDmJZΜK¬’ÒÞ(¯ÚÛ†é¬Ó:6LFYvuþ•̲ßÉœO¬î›ÝoÁ*DÔ$†©»ë`¿oM¼Ãrãù»Øa~„´j¡H».‹= ½Þd,pË«QþWµœq²€E¬Hç¨Ö ›|¡lb•a­ìOw¬ Ú¾Šòš*5qè¤9ßý, ;q)6Çüq©ÏI‹«rÎj  òY¬®‘^±ÇëüƒôÊ´«’Qõsm1`{k T&xv!:\W¹cåq²:bE6›|¡zb•qÏrgžXýþ󕉼ڿüý.¹É³ZÄ5’#®œXrmÎgmH¬r}íò>Ûë<À|és_ë%$co$•Q žÓ5eMf’ŠDC"ˈ+^†ˆÍ¸P-±*|pKcaSxÎÉe£›Š¨r·V2wÉÙ*$¢F«—¹6ç³6$V?¹Ý´Ï ½ÆíJµk’W7X§Þg̱*2a¾¦Ý5TFBõ?úM“䔇/ÀÃ×â—¹J2A¬¦ÝKŠÇY¬M–}ØÙªö›³=Î’Ãð$ê,Ë×Ráæ³6 VùìåðdW›‡bíšü)Š3úŽñ€ÄŽÄ×9zNoõ1Gq㫨+×â’î[0½÷-[ä¹¶ô푈GŸÓ¯¢ 6Ÿµ±ú›‰²×+ýi}$érM^îoü7Ó°<ðÒ€Äã_¬¥|¹EEAâYNjĊxU\,[`7ƒ¢´Á’.Á{¬2²ä¿/¬xm¶Ç€X èm·+¸@gP®]‘xf‡‚ΩU†ƒº0'«oª=±ß%Liͱ1;#CÓ‹æa†æ'%?##GxÛ6]ßT˜*Vü«G‡Š-,îRé%Óð¢eÄʲ1×=X_îý2¼"=;û¬ß4'«¶íx ‡ˆ#R˜,—kt3J£^z,—§o;Ð'‰vi—sM¥Š8ý>öÜ-¨Ë6u#Vrm5:T¼Ì_¬, sÏ`UA¸»ª§¸BßUñ¶bÎ)VWè°/!ï©Õ(ڮǕl”;þ‹§Å׸ÞÏ‘8X3“fd6LÊ/‰½FnËâµ D¬f×Ê·ç5ôzEÛõ<ØG- Ô ¾Qºâuz±´áÚµÄ*mý©û€õ™B¼6áˆU‹©Æ¾f¸ë¯e>m‹¢íräV^eýƒžnÈôܪUïZ_¦ç‹ ‰Uz±R=âµ I¬ÎÓIcZ¥_¤2aQSÇLÉÄØV?‰wš8÷1å©.ÿRŒu˜öqSjÌ9bÕUÄJ©TnvV*%Í„ž!–:ë_ôg ùUºbEz­Î&Œ™Š£cl«;Oè:9ê¤ÃçM­x°Bù²^Ôê“ÓFös ±ÊÝöªÔ}Èoí~mçeBG®ÿf4˜n´¨;9©^“ÆLUúbåjt˜l­#ÝX3º&UÊ#u‰ ˆUʵDý7>tĵ9£XýG—ÞX0­ ²†vŸ£p»):ÌäÁÉãå³üZ|œ^¬έTsæM]›3V[)ì,VCG¢t»¿ºYÞˆu1¤§TÔiæ!þ] œ]¬¶=íýõ#ÇÓˆ~€=ˇGNJC£¼Ì«;Þ&/†sMÑ:ýï± *b'FY8¸4kû;µ©ÆØM¦ÍOçŒéãK¹7œy'MØñ4¡‰Õš wy‹•~£ Ybõ]c{ȹ×Èõv‘³}I±²yÞË-©C®ä!êò¥éÃK2Þ¸V¼fxÔ~xƒúû…OžXùU˜/V&ÏñQÄ_”m±Vi¯’³}MÏÊ^¢ëæ~5n™¿ÄÝYRy3ÙVwÿ{޽ç«é¸Q¥ÒåUf¨”9³§'Õȧ‚¨k×ãn%ÞII»ÿ0+'¯€³öfd›XÉQ ´S[šõµ‚ð9~T%`½¹³hÞðzˆ˜ùÕÀ¥¯å+ V¦‰Uמö¿ˆëT4_aj”*Q”ºÅQ{3*_r½ïÉ4fåŒU›ü§çš~£¹ûŸ¦ÆýkA™=K+Þø^Ó€ |/ vø›ætbµ9eÿ‹x@{‹²5J%—Gfrh“qùRØõ|-g+g ï%S'šÍÞ1Þ‡:~a©­œ´5ð+f¡be¢Xe4rH/÷ %´ëòH•™Y¶S¨ÜT­Ò¯²´!Z [v uÆøúó&àñÎqO‰üæD—K[©ø†Y%Øk®X©é\3O—´å§ÆÈ‹µJaŠX±‹ÏÝ VV~É*¬áÿí¬ã*Š_X–X^…]U¤oÍ:ÙìÚ„™"V[¬VŠð /$œØ±nñç†ù?ï×Ú·¡OmßÖ~Ýý¦~ûÛÑ8sf1jþeñßÌ[‘ ו5ÁˆLÍ@fÖꛜ—ñô¿¬€-2;aœR—ï@©»ëTP*Õòk+…*­ô7æi•…buoúö‡ì×&бZbµÚˆÕ múfâ@¿ZªÌG^õÛû ü8xvȂХ!³ƒ'ŽèZWB$j>*dŠifëôiq™ˆK/ÈQiÕ#íú›Ña©âÉ]¦S¨óÀ»ž+x}ïÒb¥ÈœÌHTÑs)yo4_+¨däTHìçïQAÂ[Í–¾õ*«{ÙÖhÕcÔ‡óBÿ:•daòŸô߆{¸õ— ·NyAéRE¨Ü°Çð«.0Þ“O:m¼éÛÑ༵ib+Fôìô°l›z¡ú­WÖmϲžX=z]¼LáP±zre*IŠ­ó¼Z¬„›"V%Vžb¢ÊmÇ.—í;që¾UŸÎÃ_û‰«M‹äÞiVå[^ô[{#uÀ]•ˆjGë‹•ñÄú’XŠ  Ê\mÍe àñ§Û±ŽpKÜ1ëÕ$éòé®t›W™‰OÙ6¿=ËzbÖ´šEC—-¼¶˜%šˆIíYy|_`¨ë‚B()bÕ1«üëÛ¿ö—¸+,`·M{–õÄJ¡¸Ô¥ÒÎ⥂˜í_l¥¼÷gzþðßo I³žÃp÷üŽEït©L^½æÓ.yd+œ\¬_yÚ2uÙµáÌ‹:3üåT]Pn¥êdÒ›êönFD}Ї]› V\sãbÅ5>g[³ÖK~oŒhn¡ÝŒw¢q³÷÷æüÆH´ºÔV<ú–™×žeU±R×£‰»òXuý'¯:›gµ9Xå4eÓ“žê)úXk¬ëí6•[±ŠÿhŸnÄ"£-Q»ƒê†ÄŠW?m2¡A™£ç'w[³ÎK¾Êíu{Í&ùÔ' ÅÃŒØ}—Ž­ж­Þwgï)”{îÀï?-š1qô+]š×t+È×jѵߘI3þ( ;u16Y¿©*;=1öü¾M+f0ò¥¶u*(¿S­Ý€‰_­?õØŒks±RüÉØ8º¬Jã2ýO ® QÞ4ªÀp‡¶L?ª»¹Ä;q¾ñn¼^³O2³ù‹ª}LâªgÒV½›óé'û(Q~tçúås§¾9¤gû†Þšä>¾jšùÖóñR¯•>ݪǰ÷f.á­QÎ.Vùõ?³uœf ø§Ò’ˆž-gZµ¶–áru¨æ²2=Ìœp&£Oõg­µèt箊ñ¨}TE•°+RL £ÔVIÞ³Ì8Hú­¨ð÷É~Y¢æ‹Å¡?Ëv†¿nAç[ß1϶1˜U¬sjÚú·±p³H³¿ÁíIù«°y|'tÆ9šŽWÀòþkäË@/r}®JŠ:^w£çî9­­{ 'Abw¡ç1£Á¬×MGmn›e¢Ï‹²äYt^\F¬§**Ð÷«ØÄÊ„a=º¼ÙBuŽm4"Ûym•óô ¼â–R߬ivL›6x=³ºèïÍE¾×šò`Õ„¯z˜Ü"íœóŠr³P¯h|Ô=•þot\Þ]éº"/na3ÛêUÓÃ0Dè *V²_øØÞæh•‰sœÏ‘ªÆGe«†v}—}—šd “4´˜€€¿„·T›šY>ÄJ±ƒefq2¦U&Ŭ–>•嶺Éü#˜kk#p­z†=f¥øá)sü*Ū0 Z’z"«¯jæ—±J7#2笹ð~Í6]¬8ºzéñü[.a«ï û9 ˆ`buîš®U&gÉj2L‘%WMïEÿ¹b½/gñÀ —ËaÌJÅZÑ,bÅ©U\c©Ë’&ÖŸêý‚àCÄ´H÷š¿¬Y±²L¬âé˜ÍcVJ3^¿Q´ÔrJ‘¯•éRZUøŠ„‘J„>÷À±r¾ôñjµO*`+ÃÝáM«í"ýVú‚]o|—mÓ›(5‚NA¬,«B_ì!VŠñµÃ‹g\™WMø«ÒW+yÑdÏVºgþ12ÞzØóµ3.ýO÷¡M+Sª³š+\B¬5–B¬,+EÝoí"VñîêfÇUfÌÌ’ÍÎSÿ1jŽEžûyŠòÉÑšÏD”è¦ () ‹• ö,Cœ±¨è7†Ÿ1õìf^vW«V³í!VÑo×R ø¸šjÎ Ä,t±º£š“JÚ[T'Îücßðzùc~5xñw_ò˜c£¦ùº!.ߛӘŸVé:¤fæ`wE±z!ÈbUxóê-÷ïÕÕ§_W­yŽèÓâ:1¦´³9–†U®‹¨ÝÃØ¯-˜‡à,­xÕ¦&ÇKžûe?›ô/N§½."V{>³…êu©57»+ŠUß·MVªbLùJBäcÅ»mÔö‰T}¾Î1$ã:3ñÅm:`áNÛ¨æj/êsÒú'=OQ.b«Ût˜Wô+sr°»¢X½ò¶ÍÏ]‘©Pœ M|v¾hN¢Bñ–”Äþ®Õ(X‰¦G¯œ]¬Š£=©eÈ=+Ÿt'=r[ù¬2-fU¦ÂŒ1e4õ´þµ 8E¬Å*/îJÑûÖ²¤WÜò§˜. {IŸM1lžó¦‘‰F$cÓ6‘åOàs¦Öýò'VJ¹zÓË}Àškžô—±U—Í«¢7Û"±ú”¡ú_Dꊕ±Ók×C ¯QX=E¬ãÄêÁը⨠ª–¸Ù;Þ¬BR±R­ÆqZGÊ72͈ºN6LcI83vu9ô¬T<üy‡¸Ç2ëÍ@ûE—±Õ[þ&‰•‘d­¦ðGEåËÜ"ä&±BŠXƒbå?Á¦íI¼ 5Â’3 ¶eqI±R=÷}“Rµ1›¬ÀñZÑŸŸ9¿­v0Í+¾ã( ’D ©’w Í(³2U«´"hÜU"[ˆU›Ù¶z^…nÈ£î—iÌn¦^¸òŽ´X¨*¨þã+a(2ìtq£ŸbV¥œŸÒÔàœŽaÔé¸kŠ•ŠÈE½¤âç‚÷[˜õåbÏÿej¹.GÏVlSÑ[/DlIL6[EÑ9ãJ¥ß¥–¬Ñ)ôQÜGTTèDäÕÐpúxiJ#hÚ¿úV«dù•+W¢¢¢cbân%&§¤?ÈÌVÅÙ(ßLîÝ«ò›µú [ª?ƒŠSUÖé2ö³ïv^¸—.{d‚X0¯Úµñì-&‰Õå0 ´[¿ÖD/]vU±RUõÿ˜Ôœ*ô˜wø‘ù'íôI±g0‚È'8AÛV|Ã.æ…ˆ-ê‘Éf«<éoxjwvÌèæëYÒ³W⳺ìµÙ&C¥Åb•‘–––’’’œœ#&ꊪ¯TDTœ÷‚ÔÙVþðfÄÕdÝyR²ÝוÚi/ûóÌmL d®í Š•á4ŸÜa±2èŸòàt­ñz?¬S•¿tïÝáöœƒU8_3¼®_q³úç$®_$ƒ¶Ü2ÏlÍÕôò'+ šdÜy½WƸV™"¶¨G&«­šÏ±¯NåŸ[1²1-†ÍÿùïÓ?Š”>‚DúÙ…)beV†JTósÝO‰g¾»ªT­kq‰)r¬”.;ùšüFËÁzŽgÛݱ2è¿ó yñ‹YÚH¬¾î¥ç—2$­ü€Û[ ŽaÀÜ»ÉÞ§#avgÂøÍA~ªê?}óU“ûŸÕ)þ»ŒQ‹Ú­Ï3E¬xùZÜÑM³zd²ÚjÐ(»éTaì³ü+’Oÿ/÷‡!Nº‹H UhØMOk‚ÿeõ˜U2ý«(Ìyp/éÆ5¥£u=>å…²ïFË£’sX·Íi¶¶¸Èbâ° W×®œÄö®–aÑ*MWï‚ѪVšÊ!O8 qM°Âi,“½nG¢žÏŽ,³”ÜZŸ±áhÿ–BŸÒÞ¿«:»ˆ˜:!é[™"æ’hÓ¦ŠÕ§íí SO¢öý0¹ÛS$j6nµ¼¤Êt¹’HÄt8VöÚÌKKìA%Ãå ³ï'ߌ’Ë#cïeš5¦ðÑí(ùÕÛCª{8gú3ÇveÖ˜’æ“ÌLói%x¿ úsaçñ¨äª1Ð"ß? ŠñˆøÌ•¹™Ã[0´Éòa9á›fŽhíF$mÔ}ä‡ó~Üv$üZ\ºÎ “ž~766"<üPØ~™LúvèÒ³ƒƒƒ'>[#{N-¶)Ì ë{aØœfØ'¼XÌGÁ*¾î¶"4t«l{XØñððë±wÓ­3KGfbä‰=›W‡|öþhÿVÕ•òîüÞ'´‡DW%¦Þ6«=GcH¬ëêGÁãôÛ7”5Ã+qIiLè*SøøÞHyt2WÂÅ4f—¨(rÍ©CžEm46öˆVñöŒÍ|G†cV»ÃŽß±üæ múfÒЛW. ûVô)‚m≊>µ|}ÛúûùùukY,V÷©„9Mnš×8\$V#ü‹éíWDëÚTÕÇ[ûîžòièë×Ñ¿OÀ¨ÀIÁ_„, ýE¶3,ìtxøåØØØ´ôôÇŠŒôRb/…ÿ¶]¶.tqÈÌàIo }ÉÏ·ª¤è@â*¾^:aöÊ?ÃÓô‡u¨RH¶ÂÙÅjCÖ@Uþ£´¤Ø+rùµ·ÓŒzYÊjdr\¤üJ¼Ñ©Ç›}*Ãã„‹a©¨¿™˜zöLhiçá-+®»¯ªxõ[bµx…éwb/ž Û%[ZÌFÕìÿ„ —ÇÆ&§§>¤}¥µ€šRUW!ï9©–„9MŒn’ÂL±bYyŠÂ9ééñ±1*ÏñwÙ¡!óƒ? |;`ˆw¿Ö¾µ}ÜùLÖSѧ¾o{¿—ú~?8dõæ=Ç#¹Ù>+™’fMÙAbõ/Ç—r3ï%ª$+òúÍÛ÷îgåê6æçdeܽ!ˆNLÏæqoøC¡´=¬A*©‹Ü†ïD^ÖÃŒ´”ä$5wSïgfçšÖÛáÉ¡P¥ü ”*j»¬xîAK¼âã‹ka¼ Œõ%/XéÕû¾]LAWŠ6Љ:ïT¿nÎÚö«ú+ ÄÊoº=¯"¯ÒjP“3–¨ÖÌ+š†¼^ó‘)m¡ 3ÛB˾äêZ’ɇ?g¨xª€ÕŒèµ ][9›X…Ñmˆ•ùbUs¹]/ãå×õ×¹Â´Ææp¹ö»ÿ•qL¬^¯5°Ðçü—ŠgÇú,è†ÂimUB†è/ˆ•ÙbõDô‡]/c^]ýu.0Â8[<&^e‡sþMY.`«ÒŠÌD!\›“¦¿A§íj§Ãt‹åÍëW&u»Æw‰ Ø®^Ü ”í«2Ìò¼j_ÖMáJb5·v¡ã¯-Dè *V²^÷QJ´«»mÔ_)12º]±*!¯ýÛŸseM—«ó%›ÀŒ®ûž°ë{0º‹ˆ•b±ù9ç¶p)±R4˜ãøkë.ø ±ƒY¯ûëÆv6ÔÌF¢ATòþùRÇ’w’B„·b¥¡s›Ÿsêó®%V“Z àÚÆë¢j *uìµð£a[¿›;yôKm««ÎâÓq䌵ÿ&ØoºÕ‡>•ë·ó=iæ·ë¶ÿ{9á‘:a[£7•ìgDô`gá¦h»­=Û^™«:e¥5Ͼ–Ë]ZÍ'$ËúÞ”üçÉ=ªUîüö‚ߎūo*J•ÎÚM2!Q;f%È|Ö¬Ål7ݹöϪ‡´ñ"ro3vÉá G¼íe†ÛðKdzh}#B¬Øðd«Z`£ivº…ZE¿kâwímº³*Ö^jM¹º¶!è/rïüÞ²ý ÚªKTRU´²L×aæ³f-f¿–ÌÆçØúÏ_©Aä;âë=w÷Þ›n;¶¾63"`c³ä‡ÕÉX‡9Ã`?EØç TñCÌ»/yšW‡Ö8Ò“‹‡Ô ·ŽïÿtA¿^.¯JbÉ{ñÅÊt 5VésL>kV±Ò?)lÙ¸– ùŽ ½)H±âÌ÷i¤à€…¼Fu“˜ Ë«£Û€ítIDR¦vU Q¨ýÍ—òùS•§ÅYvŒGa³º{P!‹O2FòZ’h‡âZr;æ æÉºQý9¦»W»>é$¡g7r'Ô»?K«“„sŠÕD®tYaÓš’ÏÈ_ï¡4n~ÊÙ+߆Û1ŒÇ¬Ñ^{]ÿ·DgÏ«&GßÕÈQÙg®~Z“é´È„ðK– gÅL«I[ï˜z*ç«·úùVô’Þn⮋o¢< º¼P`šXZšÓº¿Ý®*uU(Íñ$ÑaVÌÝóVj;ýñÚLÖÉ£ê‘Ä/èsNäœb5z(*ñïã}˜Î‹n Hƒ\”¬f+N­22iÇg•âìvùÃh§BqÃ;ÁávÌýgJsòè>c§A÷ ñà·¯·“w¿/™Ý‡Õ9Åjèh^ß}¢”|¦ÓBè0Äg^—õÅÊpãbuHldž¹öBʸ÷ó;Ï0äÓíÍyþ¹˜”žžþPQ˜zýô¾ßVLÔʃèéW>—ÅXÍsN±êÿ߯ç ªI~ËlÒ s°;?yÝ›Ü5A¬ŒVcªØoH…b¼L`æÌ8òÝû}šºiåA×è4ú‹Ÿ$[~tç«ãLqQÿãé6X– ±úÜmÒA=ŸœþÄB ֙ƸìwŸñË‚Mé׎………í•ÉÂÎÅYqpI3Á'¨dë¥0xŒiw™¹¡¯¸ò[‡¬ì3ÇàTˆ')LF˜ó­«sSË;Ö½–Ó“Ú·Bˆ5æ-8Tµc’£îAÖ OY Œ`æêŠ^Í´f4¨lU¬cI4‹B„· `¾û³Ï™þäsñÈǼ¥µù2Ê‚CÄ$;‹ÁÐuwæT­0îŠÉo’¬¹4è¡0î cb £ÀØGÖ˜°¾àÈOSûÿ3÷7B]ŽÌ•Eƒÿ1)X½ûYÑXÁ¼ë×ÇS×è¼u”hb]ªûþ³º·C¬\‚?»S£¯oó}~ž,ÐågLˆg(,²™?­v¬Âssý¯¡kùäŠÌGq9àÊ´ª’¿ñ6“¹ÜW4ä4 8©µÄª‡K\Ý߃OøÍX‡ÑIõ~ÈñËÁá¦W%ÇîàÔ«‚ÃoVòúà:ŒŒÐí=«¿Ÿ‡f½ ¥“¶quB¾^‹j,×éùÇ™ ¢ì:݃‘áMHápR¾ë*òè·*š}kÎÁOëSÇåi½þÇx„BaJG[5+lŽ¿”j ˜³Ó‹u«‘÷œ >²b,#}ÿ7Ã2$jøò¤e{b´†æ¤µ—I<‚’M+ýUÄ5ë$¡(¨áá>÷ªŸo[?¿—Æ~´ì@šS\ur>žœ0(¨´ÊöµþK¿Ï»›ò‡Tôt›>ã>Z¼aߥ¤ô|EºŸR­Hê1ý®¦ÆÆtâ†"ÃNÄ —aà{)ã¬lŬwv©ïNTU©K^I¢Ò'i…ÅÚÄC¾ ‰) VÀj\¿ 8˜U^öïCq5,l›líó$Rj#òœZ¦S(™¬U†ÅŠØ5K@§ÐrËnãjw,ñtÀ1'Î.r«¨É²Ì³&ˆ•Áj!ñÞbÌ gíxÁÁ´šæÓföWºUÉpÕäGÅ™YkmÆ>—YG<1‹À@fÆÜš¹8ë­ÄP­¡íÄÑáÓ`Í®Ìt váf.làÄ¿Ûÿ¤§«Ó÷o ÎH—š3aÇЯ¯ÝOYPÙ{z,œÔ³š3 Fp ‰¸&hÑOT©?ÏôªV$†1L%Ï÷m­ÒË®?0”O6nCÞhû²A|Ű_¥+VúCñ#ð@9å-q}LoW Ú4\$]­Ò+»pó©éÆÄJ§:he±ZYâ[í–…•ø[²«F&”í+ÀJÁ©E0‚}øIô·Xé7 Z³8„J|+_ÒÈA8Ñ|õâg‚ÙŽj 0Â]Ù=Á¦ôot×4±*;Ñu4ì‹þ€lɽ&XzŒ” ¼#½5–u eac@I^æÉŸ©—bþÞv8ÈØŶÄÖèïØé[!VÀÕxmöqÁwŸˆþmXœñ¾ãa›ð‡t¦¾ÀšhJTÔUxVåÀS½ XŸ·©J¬`MÎÖèt×!çE§PàâÖ©PõR!2{Y‡ë란XA¬€íˆözáwXÁ<& ±å:ÆyÚÙ0;°Œ´5ïBá×â€û0¶çnSv·ˆCµëÛ|Ú‹ÂÐË04(ïl æÄWo‹žá&“:TüͧxÒ€:mÈÖ¿}9GÙ²”rdÀá›ÝFV ”ó ûïwJ­R8|ºàŸ*¶:iÛ3ÜëJä(7ª+z«Y’WÞ@"ÁZ óGkÄ*ÃIj†eJ¡Óǽ,žjÛùðrÆI™n²'¦k•Þ*Ž È@ÚSLÊ Ê«_tǪ¤,9vº`YÕ:ëm+ñˉŸàXSÄJqÍVCÜùä1)3^ð§õRæ¶Á)±FŠ+ë‘ü–¨×%›ža·§„TîU/YžÆ "^éßɠȯ3˜ëÁqVL!+ÁÌuú9Ñ8tÖÌM ÿ{]pðÔÀ×ÛT?Ñ€¢y8‰=èd\¾ ‰)8ÅʬŸL¾ìFÎÅDõÒ—C>T¦M2â&ØŸ‚ÍMÝ&Z-qrZø¶ï÷m]C¥O^Ïøuñø,©\+ ½´¡¨» _õb+¶ÆDý%“¬ŒìÀü<òuP¦ð¸¦z'cuG÷cÉè –ºRWÿrÔ³ÞJª^÷ñ_¬øýhtqìþ‚·R«¤Ôå°z¸ ?±2X-$>ûçÄ D¢©‚+Mœ·±-½ðk¶y_~ry뜀Vn$j-F«—"‚—EÃü@ÂÈ¡gki¯øp¦Zæ«~eR·k|—Ø€€íêÅMBÙ±.ÍÜ5oxö˯o€=ôŽÝ@ùàá;ƒ–«m÷R„f-šü‚åÔÌ÷5šNÔJ½”µ÷L*Lªný±M½A4[½øÏÌÅi0 @ <¸¡‰¬j[ÿ¦z±Wûw4ž×¥[Ù0@ |?c‰zé‘fqëÇsÂ4aòøÚ)ͬÌ˺´Ô¤y¯^qˆzéÖëc`%€@Ùþó.õÒ¿U=ת?¬ÕX3³ÍªÐ#0@ \¢éÑÈg°zi§—f8Цàyy꟤LW´jÉ8/ kW_U/Îðk¦™©XLÃ5 ÷¼ÿ!®…†jºÝǦ:áìƒ5®}—¢0ü?¹zñbPà9õâ{>UÔKDšI¼þnéw@½¸úÓÏ4ßÿMvRãÌÄÆÚK×îDifÍ ]º[½øg#Í4‰Kæ¢î @¹³0˜EÎŽT/Îöë¬^ÊchŒ¦nI¤¡2„$ší5|5ɃöúùV/. ¥Ù°B½x$ @3/ûlÿW5bäïÿµzQæãµC½8˜*h¶ûÔÒÿò‚ÐD<0€QÒÂÃ53{“ý®^Ê_¢i8\"v Æ”Š•f ÒÑR±Z8QóýÀÀŸÔ‹1¡k5bs>öà$¬×,Mo¨šaeQ$l»”,W‰Õ¥!0 @x,X¡Ð+EÏ(X 8|Ó‹þì:úÅbµö#X 4Ô*úó÷Ô%ø?[™éqÊ®WÀß`ö|òZö*µJ—ºTßø“ÀQüäÕx]†öªˆ)Ògc=Ò-z%…Žˆ •UöM¶'ëuê±æ’¼,èÌLʵ£V™j0;efæè¯½Ö¡úIn7A§ìQ™%bqHap“íIéèóƒ\ŸE^=ØÏ¯2Ñ`öxòçô²«eµ“(@ˆ|-ÙĺþQÿª×9«4¤S¿¡Òÿ‰¥bÃ±Éædw©¿[ÎÆÕûæÙ­HúŽU“žüV£œéQå:Êû˜ï lyü\«'¼B0%®ŒC£3¼wÉÙÙâ1Ã~õ@*­’CžüLF oÓò JOš0¸í¦ÇB“Ëž ÅêŒh±Ü3Ý¢%VEêî0±zÒ¬A£üã¾E_*p4àÏöÉáQöH·.¨0±r”Xõ÷3X,å—šŽ··X‘þJXå· [å}ï” 0ú çØx[ü§ñ²G ¡‹UšÛBÃÅR>£b–}ÅŠ‚«—_æ0Ê!Î'€}¸)/ó!Oú+×¾/L2¡ìqVí,V'ÒÊ|ø]|–£\¤C+²£U®Äj=ùùF‘w˜„’N0õÜ[ÒKùqö‹|³ŸÁ‚§éçIZ뫺“cJ>,®ÍU,å^?ÛE©ô Fvî:R4ø¸¢ôÉoâ2ÊàWQR€Ãy2’¨á²ÇÅÂ)F§Dií;½£“ÞdLb^ ÓÈs+í‚HÚ놔“'ŸÙ›¨íú<͓ߣeÒ¶ÊÛ~()ÀñL%Uý*Uµ|–buÜ-µ vÚW6©1ä÷{>‹XéKy½ùååÉç 'bê®È,~ò{uô[Ë,ow@A¶{œp™ß®Ë†$Ò±WtÄJ?Öë¼b¥t#$$fê†dèŠÉË­X) ?QzPbÏ x±"=blø¾"a¤ÒóüvþU,"’*+J®+VŠ'Ê{d”%3AK¬H^ŽÅJõ;¥”+©dømÏ bìˆ*ê@Ù^õç‡2™¦ÙïŠLv_½¸_¶÷¦LÉ;$Q½´Ô܈X5—9'•ÿoiÁÙDÒº)g̪ÞÛ²rÄ@©ŒB~zb…j °{‹›¼¨™úsÑêÅ/‰.ªÛQ³¤E §X=EÎI½â?bÕ? Uå«§©|иø£þg/—U VÀvÜ)r•>ã·sþ{ª7VÄTŸàºÕ@EÒ3Ò"¢ópîÖ@­j`Æé?ó\ù5É&.2JÃuÄJÇ(+`CV‰EÔî!¿7v¸Hõ¶ZŸëÂ1«ˆ§•Z%?e¬ëB±XÞügÙû/V%ò¸áÂ/Iz‰ªößyg¡NÌJÇ&+`Sâ6ÈçùÆŠHÊô;¬pá® Šÿ*ŠHìùi‚Âh?«zA[æŽj]AYˆ•ÿK>HtáWäVSå“:¯`뺱«µT–ɱ‘EËÚb¥×)ÔyÅj»QâvíÖÀbʬñ&¦‚¨h¥TêÒR¥t6•ŽcÐ-ÕbÖb­® zFXpõiò™›¢þp‘®qíûQ'½ÉÕÊ*ñMðifsÎá6O7K•dR‚K?ùc•¨ÎU àöê[?÷¦ÖŸŸTßÛ»­8Œ²Ù5žb]_³‡ëäcš!™ÅZ,§Š–”î´¥íÐúVÞ‰¯ý=©þk®ZE«ì‘ùáîO;Š¤Ý¿>[`èÉûŸa3ʦjÝ‘‰ ’£ÕÚÑ[™óû L×¹ÇÂyÌÀÃú§zK¾+»×éêuõÊõ“#ÿëåIÕ‡|{ÒÂLóöÍÈœ¹7¸³„Z~ð׬£U›­×3ʹ)f¢Ta÷ ÓwCt™ÜK©gf5ðšïZ-b;ë{øñàåÒîUV vo¦šI\ÆúÝܓߩAž=gí3?Ù¼é)¬Í&uçô.j1qk²Ñ'ß—y᛿ˤ?ºù½:žó P&€`Ù3¸‚Î+ŸºÜ¸“ÇKŸÕ¾G¦Ë¦8K×Ö¾ÙŒD­ß]anY6-…µ™?<[2L«÷7ßáùäé<ùºŸ&¢<AóðÂŽÒ Ú\wÍßÖ;Ƕ•Üãï'RL?@òöéÝ=©rŸY»S­ VÜ)¬M&ûø’×j“Û Ów¦áÉyç¾׌¨Ù¸åÇ™'V¼RX›DáÕõ“:J©ZÿoŽdã J¹÷÷}ª¸õø'ø'4)…5obŸÙÇ›*t™²é:ž €8Y°¿IÚ¼¹ò¯À»I)¬yeãÇ/y“¸Å¸•§Ñ×ÀMÌÖéJÁ` žµ-š+Þcj kn’,|Þ‹¤Ï¾óÝñGxžÜØñU@s1yuš°òð]W@?±GU¢ª=>XsþÀtr#Ö¨Iäí0GþØÚ‡ÏŽ…ú×"ªì7.dg,ì €Ë“žcã'\Ô§CÒæC‚׈±Ü÷y|-lÝÜ7»V'’6í7å»l4›©üÞ †Î¼ó¶Äó›glïE$®×íÙëß05¿WþË6-üpP¥H‘g‹W&/ßsݦ9Â|çãÍ Š•š”3²…“^máA$ªÑ²ûðI³WüvàRlB:ËØ»GwcÏÙ+ûiÙÜÉ=ZV/Ê%]ï…ÑÓWî¼jK…X 2>PõíŽz^UãIúÀŽÝ'ïœÜºrίõlý´DÝ*(ñ©æÛ¤ƒ¯ŠÚ>J4£]*×nÑ}øs¾Ûöß•;]Ü‚Uÿ[§ü§pμ%€ô Ïe©=«ŒÞŽéëz-üdØÙo¡ß‡|üMˆ’Å¡J¶ì:~ýöG\ÑÏpgõ íÂ[€xŸ^É+«'= Ô"ï¨b±úŽah ‚ 𡱅J±*NÒÛ0‡šöTïŽJ¬63´Ö@ô'f–R¬&‰è CÃFbÚeúΓ÷cXað½Cï0Ä\†14ä>M’—ê½æ)’̆1L•§8U¼¤7LQÊ" )Í"!i2l€PØ¢tªTjµ¦(%CÕLJÒw` C^m•V‰ZÂe˜&-šç9–@8,QÕEëaˆ²$¨Œ"é C€ÿ·w÷¬QaÀ‡ …`Q´K±+QÄÆ" \-´R,ý6Q 1ØÆF+Á"_"¾¡…~lbŒgv#1û’ÙÃÂ<œ¿_±»77Ìž¹á¸#…í+u9î·UªzÅ£•a†PnlM[¦ÄPÕ_yÚÜ/ˆ¶äÙ6/†š#cc¥±œMׄP7›v|—ÄòjÜÏl6,| 6C 4ŠP`ä ©ø/ÎZs­!­Ê¶¬TÛ[®Ù›&¡„ "”eksæc½½.Ýæoš„-0Y¥ ª-u×ekYþå€)?„PÌVx°¢\ÿ§º Äœ«VŽ¿÷EÖm«´nÏÔú4«'Õ:gë2Û' ÅdRhß;I] Öeó½–ºLÙ>I(&+h_ ¤lå8ÙZþAêR(u®úSk«™L]®_ñŒb] âNVƒ!V<©kÓ¨­®%T¶% %R(d®Úàˉ†ÎÝ™Êfr×€Ù–$”@¡ÀˆÏ€›>ŠP€‘3ݯ¾¾ûN&@< ‡—« ¯'„Äs{ºÞrì½T€pöÍ—§Ù3“·~”—3×¥DóuWyzreq0xzµ¼ž;! š¹£åéôRq¼ô±8~Ú# šg«“ÕÉÂÉçådµ[,@4_v–§ Kë¶N‰go¹ÁÞ¿üm0X|ô¹¸ž¹) œ©ûåéå¹Þù‹—Ç?HgþPíK¡ozBº÷¢úúÎ[™À¿ò ÂÓé] endstream endobj 116 0 obj << /Length 4311 /Filter /FlateDecode >> stream xÚåZYãÆ~ß_1È…ŒhöÅc $°/²‘ Þòç#Q³©ÔÎN~}êj’’Zk;6‡`€Q߬®®ã«êþúý«/Þ˜âAÙØØT?¼ß=¸4N óiMöáýöáïQ¶Z+¥]ôöxjªcÕ®ŒŠÆr¬»võ÷úâMþPÄEªSœŸ<¬µŽuÁ3ß¶«µUI4êKð£¢jC“©áy¥ó¨âò¶6çFªhèŽÒ|êK˜°)UeÝȨñPŽH~X©¸pŽ¿<ºs³]­MžEO«µÎðXËôÅ–«u‹µ±ãZ¹Ùtgná†çÃ4Ðo;ëv/«ªÐ×Küdu8ø£ß )¢²Ùw}=Žñj¹"zŽS߈ʎ´Å朙Sâ¿×í¸cÛ Ø¼mW*Úã¼!D ³ÞF8ªÂQ@€/öØe¢}ÕV}Ù<âŠ<°ëeRµ©†¡ìëæ…F"æð«aüêÎÀª<`@N½\’2!}õC¢>dŒ‰¾ÿVƒ%{É\’¬˜E …“¶¢½p±Ö²Þ÷Õ¾Æ (5™ƒÕÏCH•ǹ‰Ž÷°—ª¨äBËVXŒÍ'>ºa¨Ÿà!‹^nA¡5š¦£ñ›r”Á½P<‹í¹gÙITôþoV Dø+¬&Ѧk‡±?ox÷ti+ÚWåе%„cŸ‘/8à‡Ä%°ýmˆíO^~t}WV.…Ý×0Iq3‰üâ¶ð÷TopÒi¥#ÇgûaäÖ~â>ÖÚNšËˆÝ¾„6O‚ÚÔ:øÕ¼26ìë³Všh!¨^?-”ëv#£d¸Žè¼ÎGä‚(wÏ#P?húHCš±\‡Hi«î< Hë.Ô…-׿óƒ*³››úXÕök ;¶Ö2ª©Ùªø%É,Q™±¬É…0U»ÙJ¡­1½ô1w±…ms>Õ• /[)lÊ– ¢™\!µØÆ!þ¶Ná°,c`¡Ä00 Ê€®xkˆ} Ÿp.û8™ ôW„?‹6È>R€i… XüÌKM‚ a‡vÆØ$ªÊ žækàÀÆnF®u¬’`¡ØmPÛ.4o,÷Ò-ÀD,€=;{²™]µCkãi.Úì»#WXè °”ѲŒ‚¢¦ºˆÞŽÜÖWˆœ¬RËÀ’«Ç® ÂiÑú7ím½ëëªÝ¢¡è—ç±;–#n«Ï‡Úo«‡raüÓ 8k‘7aØëF6ž© aÏtôŒ®:êv[ Û¡4¹Dèiê]Wìݹ<úÈ~¯ú×Y&Â~@ÒлdÄOkÑ-k³¨©Èéc O¨úŠÞ¦â~èû/à!`ϵ˜èXlQ{uÑàBé<¨D#P„ÇÉ-ÜC*……I¥p‰cÕïQ¥È ’ çUð샬 “¯AÀÍïûòÈ}*1°¬VÝ”=WÀ“3³Å›)£ãLðæ1:KÐ>£ÉNîÉ?h•à½ö-8ÔñÖ!®ý:ÀÄX§£¿¿{÷Õ?ð¬È>wçýý;Û P}8Fp*0ø5÷O@Zo2ÜD╯y‚X ÝÔ³}Oøøÿî«5ájƒl7ŒüJìhì0ŠBLA¤þØ¡Z0,Þ=A™È[‘ƒÅÕ7÷Õ{]ä»:ÙmµtÉÜIöúÀ-1vm:1Ÿ®©ÇáŽ+Ü›–åL)¡aü=÷\@‡Ž!ÿjUUⱡ_$I¦×ò+~„¡ òücíuyrÚÆ*5×Gs €H VåÉn`ßFãÄÇÖ'Pô<.µüŠò-!k Ë%¹¹v ÿí¥¡­]YhoÄfzí-½.NÁÿZôÚ½Àe ÏçéÇÛ£Èb—fËO â¥FŒ‹GqX˜qØFZÂù™täRÍ0m¹87æqêï!@QZ.‘¢`µªÄ;›;Âa&Ï…9ÜE¿»Ý¢Ö±š½ ¢;Ê7aTÖó×8EÆVd­¬ŠµÊ¯t™bëDù]‹ ª ÿB³ï®ÛʼnC"Ý$1àÌÿÌ„%Äþ2eµ?E¢íO”èÏ‚¯KœƒÙùVKj관 Üy>ñ¯Ï‚]IPg¹ú5 KÒ½ÜGþH]ß×SÊ“¬£tò=Æà­ `ëz«’!ƈ"²ö‘<&Ž‚ +º $Àü$€˜¨ó÷Ž„8GL„õ5‡›|Yr/Âؠ­>\º`;7ÕC€Û…3·tP?Ç*üÂbæ×BÏ”uÂÊ”pÅÊÕ•6`£IãÂ+—Ç)È|šÂ¯Sü™¦k÷¸A·1¤Ù”ºu1ÑVÀüá±”Ǭ´´ð¡P_EÃuÔÃLu‰K¼Í2v'ü.„{þ»Ë‹¢i“u»è]\`•ñæ O~ûÒßÖÑŠ_9( ‚a²b“½¡´>2ꌼPIrš w´P%iŒ’>¯‡é/ÖÃü§êazWS赬†2(¾wXÀ‘ØÀ®üaåÓYåË£Jtè¨ìý£Z¬{÷¨¬ÎxßžT:)õÿtR˜±q’A”<*Rɮ̡†É˜ÖjsŸ—«)!”ïœã ü•¸‹wã ?;y„òi`"X ¥ç"‘­†cÏ®^Ÿíøj ì,c“,òoÄqH;[,¾ø0ˆÏ<„2çé|A—j´ÞØB±@:Å)Å„÷2£!T› \Dæéµ ½Î,Ü<à‹¢Nný¢"ÇãLrƒøÝÕ•¢ŠÌ—ø˜«ë7l©ñ6&xsÁH=I¢]YK‰.0sÉcf„zÅ…,³9œ| Eù:5K&Ðò7ÈOÞ‹}‡D~ äês=˜KÒZ+sªÜ‹*øÙ%¸T µN"'–k|.^Ö±vj)×Mj›bJŽSÀ”Dß4UÙãÃKq‚ž äâ ³ò:ˆ?lzuÅ*„c$‰Æ ˜?®ߨpІä©'°¾Ì)Æ¿ÆË ž/Îál´¾zIeÞ'£ô›t l±C. ÆüxËMl"=R0îvÒ"u§¢æiÿË͹âÃZµ‚Òݤo§  ¾o:þÜçcü-¿åk*l¢as®PàKvÔÍØ¼oÊÓÀ­—gì$YÍ"…-ÓåÜ~º‹ã=½fàJ¾Ý™(\¾ÍÉ=ÙT’¦)þ£‰£B…ÕZÞùœÛ Þ ‘ˆ>)”Íâ>TžOëU*–¼:ádz 8Ç¿KAPòð €…;dKÁj‘µ£§Âø*#•·‘:µ‹þŽ.ã µIgÑHÃý¼ 1ر|@Õ2üŒ/3s7½ò”p¹õÏ6Ý"Þ„ŠÏŽ8°“o[n›ß!S˜âe%#ó“ )a®LoØèÍægßPÙug²žÔîÓ š²ùx¥L¯kø}Û¶:‡õôÔ•ºÁMW°Ùýg,ýêe`­çû'#ïS¡m²É1׿¯x¡æGI6ö€Å¸± X ̤vv$l ت€ªK÷åkl±*šŸg^áF Vuò>_ò“0±nW{°¸B¥iûÖoŸ_%Íù ìXh.ùs—/çÆGfÀtgVú¼Ø•t@ËeÔxñ=v˜Ô¨¦<›bWã·èÆü¬ýiJ—î$:Öß¡c ôÕ©¬{z €M’Ê)yš<œí>p_rZº{o‚Ò-¯!ÎyÑÛ°ÅÛwK.,“×ȪI[ù‰§2eúq¡C£¹†#ÿÔ²ü|.Á‡#<Àw6,¶ð~8pƳýl$›;@ùÎÇFºÈS ަ"GG„”o¢#w?:š¾ Ž ^‡š‡ܹ G*ù¥q,0ÏZóK£#ý«å“îGGPÂ,îb<†ÝMH+ljãtÊ]¿¶õq•Êhw <±-„¿Úx øé}A# endstream endobj 110 0 obj << /Type /XObject /Subtype /Image /Width 511 /Height 148 /BitsPerComponent 8 /ColorSpace /DeviceGray /Length 3420 /Filter /FlateDecode >> stream xÚí TTÕÇ¿y:¼D^*/•AM½*‘ ´šÄërÔT\j^M+´òŠZÉõ¬2¡4•kRÒ´ÔÀk%æMQ3151Q¼*м™{açœy03Ìãû­žsö¦½ùþß~ï}Ž\Ž ‚ ‚ ?­ž+V÷îî*´‰ÝPÿ‘ x¾Cþ—‡ñüíb;,»¢úèþfß{Ñ2öÀQ×Ñ×5ŸV½ÎJBÛØ>ç§ÕQlb¥£ulGþÑõ4AÿæEûØ8 îw邚DŽ6£lš Á'ô؇ÐB6Í6A%Chø4´M3eªoÑêßÛÍqš²ŸhÏ ØÀp³¥ygŸ ‹~×{!ué®ÐKÓ‹Uÿ¡DĈ$ZnbXÜá÷ZŸOèI³¦_.¼OŸ º€©ÿ8+Α-iß×÷@XûuÕˆ>¨~¥"Úõw-I5JÓÄ= §(]À‚կɊsæ„¥uÚk †wtƸ|Ü ñK?ô÷?¯Kz襾úÌ]mVœ ;,­\9RÌPÖ»î]Á€5ù”ü¥h[Lº­s¢¤ ¸áM¨€ј;Ï•Ðþ–Úã]ï©•Ô«ñ½@‡)ÿÕ7)tKÓ>Þ §ÜÔ-òå#{d]¨6,Å‚t±;¸D£ t5M¹Dœø‡ù®“.P™ÿ]‡æ\A?2H{oBûË]–>ᤠäÖëù›Ù/óU[!Ÿ·o˜1ãíß¿[GâîÃéJKÖ…ù°¹aûF|¤CU^($´/ìj,&]ÀY/¸Í OùÏ9™‚“_/ðsXÓh.¯ý¬'üº•Ï–¥ƒ!J¦ÏX hv½–I*î-àôœ—¶G‘›Ýf»óÿU©EûÐ/>×Bª!Â<\`£Tåö„{ðN™:ùo ^|d–ÌVŽã½uOýáɧøÚÆZTžÔqô˜Ïóö‘¨Çë6{2h?úÄçZÖ\áš/‘ˆàïPº;%ˆÉ“Qéõ÷Z3ä³b˜wU•ðk-sÙ­…\T£3ñ“ã8ª‚~'¬õK®¥ ?KÓ^áq~à˜£êŘ¡˜~*õŠº £ä€ËÓg±þ9š^ÆfÖWŒ5?hW¿ct¬ÿ‹Ü¦6PÔŽóÖÌçõ´0ðˆË±ä~2• | 0¬}#ÙDáY á¨É³·Öé7º ·þÔ©íÕº^¹ oÛß4rT ]õD´êƒia,÷¸¬Ë’.àßâmµyÓßY\·Ö ¦S°UFKäPSç¬Ì™þEVµÓô“_Se}åßΣoâO±tÜÜ$´ï—U/·èŽm.Pâlv Ù`ÍB¯¾l7HMœ«U½ú»9·uè†È?tCàÄ1íc‰ˆã(Ϊ³¶‰‰¢­¯xƒCÔÚ“u[‰q-K\%—»-a_Öw…‰s4h1C`ëÇÚå×lï ¯üep’!ô;69ü¯ˆ¸"‰µ¾€áÒÓ|À1ÊÀ ºr2˜ä;Éèé»R©HW³²™â¾4SwùÁ Ê¿yñ¥Æ[âÈÔƒ'2û@"â D’¿äVÍ•m1-%„ë”ÙLòÏ 5zÚ»ØÜYŠm«Ep)îÂúQ[•GÔq˜ä|6(æ7Ö d̺ç~·ØL+מàÑJ²ð“Ç ¾ï»Í^JòÏiüÄ÷I‡fµ3µÓlê&„˜Üub‡øRêôÔœF8\òÐ굗צöh9nÂæ8*Ëßæ†Ê_£c¼cNÀÁ’: ù5ÎJ˜A~yÓ<ÎÔ|ŠôÔ§ 5_Ê`}4~îÀá;`RRviž†üÊêë#ÿo!,絺E•õâ÷ÄûªòkVÓæ_.O#ê@„îmTKOc¦ÐäŸà¾(Cú¸­öýžA}=ä¯öæõÉçºE.’mW0ïK_.ágo oÚ;!jƒcʯu‰J—¾J§9uXy.M]~0Tþ-]‰q|Ûý-±xw{__,nŸb\"Žÿ–ürA$´ô=¸,-ò›š1ä~-‡/YlA sÛ¯"ÿÍëú©¯ÃUÇÆLg7ŒVù·Ê/´ù]7ÞBõ+ûÚ—¨”Ư`ž“[yÆêúUû’•¿Ä†*jùkÏlŒ $÷‚°çÝѯæ=Ô×y‰ª”e%Š|Öó¿ø$ÛUǶÑ2»~ÄXTËÀ¯¯øõá\àñÈsäEƒÛ~¦%*Ðk–Ò@ªNo™ÿŒp‡L_¤2îïLÏŸ(¶6ðSÌw aV'º~ KT4SÙF£¾pß*q\ÃßÜ.%ô’Âa™ê¼j×Ïö·–iÍ®y_Âpd£ÏÈ —Ÿi‰J®ë«ô¦~ò>púOXùmqûÜv)d2Múƾ`t{ïbófw~Ò×Xè5éëµq=‡K6|ðxqÕñûÉϸDe ù닾Y=e(Øýc—ïÊW›kä%1É?b¡Ñ ®Ï’Ï‹3M.¿K>UDfõ#[þÔ_R§ oQbV¹¡òuM`ÌÊ¿,'=A"ðŽŽOÏ¥\£Œ‰fPÿ瀉Í?xC`M÷OÌ;%VL›u²ËäòJ1ùr.²Î*?¼æ}ü'¬>ô§£~íKTÊO:%séÑ­ïŒæ¸‡N_õÕ¹Ç ƒþôòÏw3õfÏÕ½V vsÊÍ+¿|Ø\¦ùÒÈV‹u㲃Ú-z÷ǤIn¯o=]Ùå3ºU¿Ÿ¾tâP¢¼»>9õýgîio>O«þ‚õ¦ÎpÃ:AMàtsÛo;—þpýIÖÁÖ‹|!À›Ê!?oš7ª;°ƯØs¾Úüª7ß:³w}|ì¢öp!^ñùIݧ$ްWШŸ7ä ÓïeKr¢=ϾØù¦¹ ÙJ»ÕsPLûå£i Ùgi¾–µnÊ<`ùG-H=|Õ;@«/çd$ÎzŽ< Åö {%aSöEý¤“8É”êÿáqÕôB}”ÍÜù§¬=æ/H—Ü&S W3ÖGÉ·wó¤þÖr]ÑæŽîEt‚c§~sæ–Ñ4–_üA’²hêè`¢°;ûÏ5_¿Ö‰rº”5Gª©þÁ`/³´«Ö›*¦å]ó1ÛcN1(ßå¦²ëµ ¦ˆéÿòðlæûSžñan0zÆòOæ–^T—þrè‹õËæÄ†{’ýCA¿Q®ú,ëÜ]cüÉ;œýVVÿ4nH‰y þè%n¼ÆŸq|d·/º¦ûtη÷u¥j7º ¸dÈœRɉI EÃÜ[ºýÝ…O›þæ²” é™ûrNH/ß© iëE6×%ÅÅÅù¿ædïÝ‘ž²&!~öĨ@ÏÖYþ#ÆN_ý龟 »6Û£ Ôú}f¶³+M½x¢µÊG<—CL—•½ÿ×snªÒÏfõè–й~µe²Ÿ÷oK^2'6/Íiá@«—í#¯OK¥ÒË%ÕrAAA1[ÐvŒ-œcB à|EKéßÔqØOÿÜñô!ñã/íaglѵ­•ÿ'Çh;£Æ&7‘ò{ÀÛh»c%² “ïôÎu´†Ýq‡¬õÂ÷CxœÉh ;äU°øÀY´…RÈj9ÀÆyMa—ŒkÝ„t-a—k}A ~ÈÅNÎàlE;Ø)»ˆÖ¿{ÚÁN©÷ÞJ4ƒÝòðÊÑ vËC§WÑv .õ"‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ˆuZî+ÕTý;2š_-SRÌóuAÄlêSKI-?ÈMýuAĬòÓ|+Ž^}Ôßöšsm-;ÐúbêS~>˜J~lümL~›~•K”ßfÕ§ø¾¬n¿†X©ú”Ÿf*ò(¿-È´ÃAæîªoêkNòhNú(†|ÊÝC4¢}ŽP}AAAAAAAAAAA+âÿ9МJ endstream endobj 111 0 obj << /Type /XObject /Subtype /Image /Width 502 /Height 148 /BitsPerComponent 8 /ColorSpace /DeviceGray /Length 3382 /Filter /FlateDecode >> stream xÚí |uÇßäì]z­ÔbSˆÚXúQ®P9*‚kÀ¥”®f¥ PËe .¬E ݈H (A´ (YÐZ<¶Ô-%UÝjÊ%TŽ–Bi›é•kfš„LÈñ¾ŸOû™É̼LÞï¼ÿ5c0 ‚ ‚ ˆOq4/s²¢“)Yù5è¯g߃™ôD—ê #†nñjR!eo³ÙG×?IÌnB×x/g#?£ùøýàÑ9ÞJãøÿÒ¨ŒsÝã¥<~„áÈ€…è奈÷ã±µ¢ŸÑA^IÊCÌÇš¦£ƒ¼‘ó¢­,G×7 ‹¼m|6]kaºÈ YËz8h#ºÈ Q%˜í€Ù~œ]äªËÌDïøëBòºÈÛU“ÿ¨ºÏäuTÝ=0«h¡m,+_£NàÕ±„¿ù¢Ók )ƒ!££2ö‘W>9Á¬º¹ÛT§MŠÈˆn‚!KCç>7™ix–O 16§ø$ê×Û“×Qu´gݘ8Àß"€ÈqKv='cUÎÕQtnEËRÕÞz}ßÝA]LIߟU9Écÿ¢ß<Ñ Àìa»£¹–wí©fPký,éÃã'Îÿ¼Þ†ª•âVt+uíSýÒç9£ƒÈê]à·iÑ Öso[yI§’™J׈™ýæŠnÙ„³]õZmFR/è›V0ŒÌë‚~?ÖE°Þ,h|?£UJÁ?I¥»†²»Rtsõ*á¯}»êñ(}~×iƒá*ÅL# î½À6ú¨0¦e,ÊÕå-¨:÷}4íÌ>bl,39þ‚.Gî¡òÝ•¶ý3á„@˜Gm5E²Eéóâ[Mw«5ŠˆLQ—·Ò袻ÕEJ)’4MU—V­ÉÀ“T¶ogG_b¼ôtèrksEè¥Ðüb™òÐÓnB}i™9“TÅçÌ>ÏxìBÇö¹ˆLÆë§ÆÒN¹h.W§C´BóºØÍ¨-V%‰ :E]j‚ý$®3îm!62˜XÉßÍhþz¹Z.‰R{]í4WiÒâ@ UýB{üù¸Lw hO{÷öïiЩ’„<©RûúüærI—“ !òœâ ÌùÔ<÷·.%ÒNYT3QoÃ÷]¦šó|šóW…º6CÆ#ã¶<æÖ=Å}‚•{jyóñOÓýØìÍyÄ©œ"ã6?ˆ"ã¶«7beÿ‡ÚN¶}ëPÚ©Ö¤õ†`¹UsqvÜF5ÆùR²1î.½EôT8v?µ¥&)ï›Ó¨/MUªN ƒ ²1^çfI‘¬mB¨æü1».kXuy-ä»2P¸¼yB_±ñËÃïÍüÞÍìRƒ(BÒ±yîZv5ç·õŠ1A“ßÞ{HßIåÞ‚Iþ}u®ºá–·zŠ&¼º¹«¨ÑÌ—Â(}w—Gv­ý™—Ö‡Œ˜3ŠŽ¹yaÔ Ë‘ )åiË¢Y›µ“¾Ò[¢ÍÏsͽ^#̶êoÚŸ(ÚÐèÀ]3,Q< "›ó<²9_lÕÙ?xŤœZ ÈÑÓ‘Íû»+n³nPôºŒú±œ=§'vMÂ$ëAálqǼ ³&ÆÉx¤«Oo‘«§go— Ú½#ocRXG¼ÇZ¼vÛaDñ¤Ö¥Vy;ÈÕ¥Æ^€B€Û;"ýs=ÒôL<SÏùÝ-<ÈthnàqÇëu‡í² ¢xdiAÆæü? ½rÏêùoFÕK‚—q}cµA¹ŒÇ®ÆOuXu‡ìv7ˆâ‘Êkáp Ùö œ ¡"+÷¦ˆl=33%\WiK¢Xº·¶òO9ªºÝvmDñÔž¥+ÆBïô¢ãÞø‹†ÁÕµÆY\qgËÁÆÐÕŽªn—]‡Q<‡¦âÅÃÅÐO Æ^Æ"º¾RðÓ¿û+&­ØÉvîøé¶«žóöUìÞà ŠGqE7ª­³J À¦º>z¥Ó¿{ O0£«Ïø0T²;{skÝrù@*„/ûÝ.»ÎDñ*ÆBÇJ ˆ2Ѹã#“Onã`]íGd)3¸¸=`8ÕZšJ³Ö›¹öšE^Ó~2ÐÙµ,T n7ˆÂ9Gž „mk®xÀïÑË*;¬º­“;ö¤E׬Աz\‡=ª Ë~M›š,TCè˜%ºKŸ¡fŸZ|CDUm©¸ªº‹Mt{T?(#‚lìõÒ÷žsÞ\ëæö©n(äó@‹®[¥&KÕû2‰Ûš}`Z<„Ë\ÿ]G:·RÝLt;Toˆ&o£m'ÿ*¡ Ÿr›SU7‹©› z«÷YصTÝh·æ­IÁñ.q<Ø~ªÛG3гTUýë¶i@qŠŒŽý“ Eç3·+‹|^Pdl§ž‚?„mÑ$ÑêÑ ›Aý»³Ý.߯›z½]õú]òlé\"ºÕYz]±¸Ái%|»êQ½µB=L"ò–6¹&§[ªN?~ä ÑO͹ËIÑ\Coªp-rÇÞÚ—sãRà fÉ“ª\U¼ƒ¥èt s,ú…ò¢ y$9Kuáûy¡6žÍm4w·U4gå̱U¨P¼²Ùe0l˜-–äLõú² Ï'÷ª|soæ]–z;à ¶öu¸¾åf©úüXª°áøžÉ/¿Wvñ¦ªÎufo<øÞ‚ ÈÒ_ßýM½nÑG£×ÇpðTS—÷ÒXÇÆ*Ù±dêA1¼ûTý L¦PitÕ®QØv¢ìuåE*…”IJŽ¶Ê¤T[ÍÚ#°Ñé?~ O8óÆ{d­™fgì¦P2õÛ †¦#Ÿ®ž3¶?¹–øäK…ûOr«:M(o–(¡zc¥vyêý!=§çnÿÑ*\ÝÆ/c}/O+·gôeÜtÛíÚ3úÒf÷L*øùSG­N£RÈ‚Dy•õ[\£ºUçŒì Ñrež®ša ü¼h‹ê ‚¸ž$(ÍdK²!orjwG¤b,f·þVR´xæˆ82ë‹$+sßý¦Ös ¬ŸAÓ's}4­ÇKÞYôd"™½C˜þê6}71Öø„CŒ¢ì7ƒëgiKïýVþiní^xŠ€é'J5×êÏ' £…Ø$EÖª­¥¿¸ãÐ\ã‘ÏÖd=*õðøØÜ~yʦ«ð^gT}¡ø(×7]ËÒwߟʹÝ=10›ÕÐõš’Í+2& ¦º# ×})Ï,-Üó£tÜ_®Ú™?ʃÑä]EžúòƯkíºüo¡Å ¢¿ï÷÷wŸÈ8]'+è÷vëç\¶­pâ»VÏŸ6¬Ÿ?éhqŒl\ú «6í®8áÚ9•õ‡÷mRgLLˆ M›0)+oG…C3¾‡Äì¢}[Ï1.èÂhÃð$®µÄû.±k÷<¯ß½iÕ¼ôq²˜¶ÕTaw<ô§g¯Õî);z†£$Pw¤tGþ¢ôÑR²ÞQŸ¤ÉóòwV]¾!“g{¬¡]0Ò%½uƒ¢èŸµ, rÝÒ®Þ¿£`ÉsЇïŒlÎn•ûçY/ª5|ñý‘Óà_9}´\·}ýòÌÔуnm[ˆ8î/9šÎZxze:<¼¾ÒLòе‰¼9.zCð¥ñ‚ «%y% âB7µËÄ¿V|ùqaÞâ왓F&HˆŽdw‡lØhÅT¥r®j¡Z½FóVç²»OtºÝm›5M:W5Où´â ùðI„°ýâþC'üuÑ[¾8XËA)òÕè‘0:¹ù=!¼e.««Z6ô¦,7]…øÂü“ÛÚµµ8VYò¹¶P³b©jöSŠ ry¢lDrKXX —ÄËî—'+¦(g¿¨.xwgIEuçìÿÞÌœÜ5h9%{klVÿîÄþ&+Ž#²ËÜÚ®“ ¹º:7[ ‚ ‚ ‚¸)‡$ørßÃr–!âÝ´|Eý¯ê¢kñ~j€L¯êIz³øøÔyáaXÝQÂ/ƒÇÑ>§@|ئúf¾Cwø­}AXBª¾“‰è Ÿa=A¬‡­~|„ÎðÃ/ŸˆmFgøK ð× +|ˆßE퓵êѾÄ3Ô$=á"t„Oq”š×)<‰Žð-Æ A˜Žnð1Jȼ~ÝàkÜ £Ð >ÇVøàsà+‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ÐÝì#ž%¥åFhß Æƒ(»7ˆn°å}‘&o%TÝãUz ™EGÙ½¦ªî®ÖÆ$€x´è¬o†º*]èѪÛ\­›m¢êÞ&ºå‡`ëeˆg‰ÎúfX°!@> stream xÚí XSWÇÏËFDQ@”bj­š©ÔRÅ%ÅRuŒZ+޶4-Ú¡j­q©fl-´®´jMÕª·Æ­JkGQ«H]JZª#.u¯‚â ˜IB€$o! Iäü¾O¿äÞÞ͹ÿÜ{î¹ËÓhAAiü”ÿ8'IRM⌠Ð&ˆOC»Wk$òZGžWò_h¤ u”çÔ³¦I…ËZ7W¢eJ~hÖã"9õÁx" mƒè8é=ò1eÆ"­ƒh4÷BÅOh²>ææ }Ìï]ÖÓžÑOÑ@nOÿ úÌÓ¬h!·ç+~1Cn÷‘h!·gxSnzZÈí‰þ)w'`”Õí‰X`üLrsà<šÈÝK ÿª9h"”ˆ©BL5‚AL[”bD°£A˜%bꮢDÜ‘Âìë 1UJÄ-YàÙ~è´U®QHÄL!Z‰œB‹¹O·w€9xêÊà ÑJ‰¹å6Ý *A“7@öDG_{,€‰LuzVÈzxAÓ>3vغN%Ò0ù©'põáÎeºîü©Ñ”«R! ‚$Ù¥¨7¡hÓ?š €ã³¿÷{L*9e†WÅÙòxàŠRçQ!S³ºs8=bn›3š÷º2];5Òäm"%† Añ©Y,uGÐÞõŽuþ཭ﴆˆ1›îúÀyù¶F³øƒk>”v?;CÒ8B©Bý›‘† +j¡ 3Þƒ%’eWh_¿ÍÖ°í‹ò°1ôŸP°ó©3®*Sb< ™8UU„q}…XT ²dQà'ɬ †h²µÝÌ|ƒ»Á:H÷¡[Aãþä“ÜŒÄp` µƒâ ”Hƒ Só!ñ¡,«z¥{™¸ë«Þ jIã€>î.(¬íÖWU©bOh#SÝ¢.*ÄåR–-W|æeãÄ4hž]ýæAç6§)‡=âf¿Ytÿ2uf¢ÐŠ›ûI¨WÈ …Ä)Yf[©®yFo¿+ìÙôó2Òg¿ozÒŠRÜÍJ÷¯˜å ¬’¢òÜTÑDœq‰b\3÷ži2ƒßnî‰;5 %ù_ÅÂÐëÖ¥\­H±´ƒbyv VŒ‹+ä/ebsHU–FCÏ¥´<‡ÿdcîeËã[èclj¬UHy®<†à‹å¿[ל٧¬FuúaÝŠ¥óô1¶‡XGõ¬ó‰·ÛJi „K•÷ê¿l²3$­tƒâLuݶ}Ÿø®F½Yg+°ÚmG-s81ò\*ÒU•,†>âTU¡aÇk<Ó>0xÒŸNü÷×&´õ¨¹¹_§ŽÖ§=/Ì &ªKÃj»èŠå_E%m -•w]O¹º›°rá‰Õ-À91Ñ]¾ë—¼jmJñœ[W|Ù’—0mM#¶|ŠúäYÓýƒ¡µ'·ÿ–Ä,L¹Ìn)ÍØX]š Ÿõã}TlÉG 2Ä\¶(5×…÷ñ_S¥Š›€·vPlÍ“ƒ~QkóÌ91‘?À9iq?îÄÛæ‰‡^ä­ª­û7WI 5)VÄŽŽ+Ì£—ùGÔæu>ÌJ …E‘ÆåÑ/œfºv\,}TÄÐT)EC•B+‘ÞüYuügEoù…M3s “ü [|ºÂžAlj$‘·ºØÿÞ[µwŽVUþ\Ͷ3›G¸d"Çÿb$ž)—¨ïg&¬p/ŒßõÈ ô¡)_Þ¼r£ Ác‰„b«D,]¾²ß Ø T<&I„u‚D4ïk»\öˆ÷3É †åk܃}Q„n>¯¦¦“$b¬k$rJDxϳìÒ¼V\`±üR M%Bîœ!&Cg ˆV–›Ý‘%Ÿ$Ô8ù£¿®ýàGOÚP ÿïaPˆy¤m‘X_[vñ®›ãð¥›]A"[·iÂ2>™¶iv•õÜ€†©£µÛÔ¤u´e ßùêt•o.°U"õW¸$ÅðþšD²¡j #‘T­â,IÙ¢{O¯JWˆCÔ"‘vGÓS÷ß3úú‹Á苘JäÊEëB_‘k_C?INqܲö›&KÔŽÛ«£©”ˆÀ=$r÷‡ù - Úº6„<3 Tw S¬˜š¬÷·ÛË]}ØZ×Ñ(QGC-‘Ò£‹#tëXÒ›Öõ2`®êËR¬˜š´•'jeªDÈ ·Ûˆæ×¿±šYØW»¦»ª‡×2è “ŒïÄ®VÞôúÕf_ÌûŠiGó®¥S“¶ yÏlž-i¯ýª†ÏÛfÒŠ@]F4ÚXcôšW‚®ÜzØUÜU¦‰#°"Å©8¿S>ª3XmÏܘ§Ÿ¿Î…Ýy¦±3SwÕuÔPBgäpmX$KïAÁK¶lM±jÚÑ’ûJ¤T­”'м‚Ä)™ÙFO%¸ë™ð¯÷·{¬cqÇÖ=o/¬ À,þ”ÍÑuJ<ð0û@¡M¡ØPL;šÈö©ÉÚŽ ßg$÷n À™¶æ(i]v97I"ÇÙ½R¬™Æ0Úá±bï¶°ÇBtžHúÏé#Â…º-Lªu–ˆÆÖVìÓpxøŠåJuÍeqb…ìgosp ?`È,ñù¹aE5d3äng]ÕhŠ%º£0umßÝs·4gg틊¬v´$Åv‰ÜÉU.Hê¢ý"íO]ýs-+²¼½ôy××ÑSÞsfv6°½»½cCæ^•óà°"«æòníM®ýÆŽ_q¤XãêT\>ðõÌ7ºúkîgúHªÎ–Y4ø}öUZ…ìåêèB_e˜×)‰xÓÙ6\É¡?Êã±½òÅ À?sŠþ»DÚ͈ð„éOºâæÙ'çZóñ˜Þ<­kÞ!aâ’=g­Z,·5F!Ç;<çøU»i^´§gLð¾âôŸ™(švysû¸ª—÷FÙ‡zz^5øs\ Bû$§ï>Wæ ʸ|xóçSF½ª;":ª¯tþºCWm«$öJ…‹õ?焯Ñ'„f®c)±ÑùVýÃwuå–ô 6ìJÔ›Ùço[˜Ô£•¶—z}Búæ£×œ¿1ïÑ¥œ]_ÏI~M¤ vŽ¿pÓÑëuû›Sˆ·rÉ Ùà”µE©îS1H«_Þ~¯¸;É×»ùš¬ôVÇ1.¹›³þ_Ã_ fi¥ÞcÔ´¥ß)¸ïÈàÎü#;‹dcâ_ ÷ÒKҮǛ“3þsø’½V_¯ö™}ÄT [GrDœS)÷rRHg¸èⱦ~Zç_Z®6oHJû¶ûÖª»ppmÚ¸øŽ~újkÓuàÙgßì9u¥ÎW~ëìÑ=ß.7iì ØŽ!zU?¤KÿÄIòÕ;~v„¯ŽõäEõŠ«&:žùÒi›+VµâÆÏ3Þö=9 âêm}háûœIéFÛ¾iî!«›ÕKþÌÙµfá¤Ñý»„èO@ðí;hì‡ó–~»çØÙ‹Eµ­u|Rt^},kË7ËÓ>Jú{ïÎa>zMp"£û?sÑêí~½ìð§´¯›>ªf†ü݇ڇ>X?(Òèðÿ.sêÓÍ»´ »ÑáìÐ^éöÜŒy÷Ì¡m«ÍÿF¿èÈŽá&>þ¡¨§X<ÈPIÚÚè+î-=/øVìÁ÷x1nø{Ó>Y¹eÿÉ‹.pº â”nö⩜¬Ê•ËäË’¥ï2D/‘Œ•J§ÈfÈå˿ٚ•óÛÅ¢r´‚ ‚ ‚ H݈]Ž6@q—=‰ˆ œÔ¯=Š]RóALèú‚.¢ù‰ö¿}ÜUh„ÄrèQZÙÑœöjrí(ñƒa:‰øÃ$4BÁ,ÐJC°àf°/¢5 nò€øTð/—= Pò6Ÿ ƒ¶@(ùÐoXe¿Œ¦@hè§?¶£%öWF…=ChéÄ`¯@; ´¬Óz#>Ð-O‚€; Í€0°¸ø¨y„‰»^o£Fp‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ b+µ?¼ i¼õNªmŠGÐ[ôdY¤±*„ª k4%â~óʦjZjž=l÷gÃ"®¯꺦”hP"n递ž4M®`|…¸‡D,¿ DÜqkÁÃÇQ"n­rG”B–ˆ†±î1.âÆŽˆ‰—JBéÒ¢DKXAAAAAAAAAAAAÆÇÿºË endstream endobj 119 0 obj << /Length 4956 /Filter /FlateDecode >> stream xÚ½[[ãFv~Ÿ_ÑêM‹&Y²fNì¼ v7; 8€m”ÄVsG"e’òôø×çܪHJ¥i;0 4«ŠÅºžó«²»þ²;cëÔµ&q¥¾Ûßüü&ÑŠø~*Ñ “æü™.}ãWß3{÷M÷æ¿á/“A×2êz6ì¿?¾ùê}yçgs{÷øtW˜DùÕEbº{ÜÝý°zßìÏ}}¿VJ­²ìíýZk³züæý}–e«¯LMšÁ¿Œ;ËfÀ7‰Ö¸|»â.ó%˜$·Ö¿Ï"ChX}æ;l¶×#”‰) ß–F]Š;›¸B•ØE%eaà¿Í wû—ëa ¤ÌÝzÖéS3>óî6Õö>/WÏ'üÎTÃyAgØ3Ò»¯÷Í0ÖýpW&Y–ß­ó4)²‚ûü¥ñdS³Ÿ«KJ¾©«·µ8Ûùˆÿ7÷kø_÷ܧ{â'-¨ Q=LÎÕíý:[Uí}¶j»‘–“.[¿lëz # €B|ÖBfÅžÕ~‚00s×>_|~¨Æz¹ücšé–v•a„7±U´°\1ÖØá3÷sãtìëz÷€mvµã—5Á3צ ¡¨•ÇäùéÍs5Ä»ÉK ¥š Û®Å1÷g8ľ›®åv& ,…)±òø—0e^Ê–aŹ“cãøÜ,g·<{˜ÊÏ£Š‚V ‹g‘­^ªíÈ.KÄ.þÒ¹vš]YW•ÀMzõõÀ-Ÿð´¢×PúºÚá*‡ŽFÚÒ¡åeºÚ5p.cl¦ˆºFî>T¦ág„ Ø\ó5>s3¬Œ&¥ƒ‰,‡Ž nËÌ77ï[‘¤©pˆ„¡¤›ûüé¹&ä‚–ú0H©iùs¦Sh8õݾ¯Ž±¹?Ý õ) Ð2÷W‡¡ãÒywÍxž!áxΧ„ÑE¹;;G|™Ô \Þ7/­®ñ(%èP®äþßLÁÇŠ¶êÉù„×÷Ú2© ¬ CáNh;ÂY4 ½â6ùû·\¨øÔ€SêSDX ‹mðóÏQ’º¤Ûçm@%ð‚àžL0Á‘ %K¡æl¬V`DE¤VÒ"3ÕCöÁ…&ÊÊõÏg‚Ü1¦¨Tn¶]ß×4:ŸZ×îšvÏxfšzÒ¬óO;(õÒF €¶Óá]ÂБslI0Ðl±¼Ü°¦ÎóÕw-wcŠÇNÛjO=%b™(‘:ö‚ˆ2$Ö•Ó¡ÂSœ¥èµ%"x‡—ãfØÕPñMs¢!?|6Ô€Q»0!Zíæ´Ì–“8F¹7ÙjwMá¹JRë|WXk§IñÛ~`ñµÎÊ2ÉU±NØ5ž¤r«÷÷¥ZuõKu<~Už µDí1¥HÔ´^QP25SXCAÖµ~S©ºÞ5„Õûee&ÊLlyŸ¿6À6²Zç¾¾Ú")”^,—É*›ÃmèG”Â"mHn|-F% jAm >G…$ÂsCÒ;¶N=7C!'ù®ðúû`µæ~´iÉ«I爓–D2Øi$Šé¬ÆtñȲÎx@v{(Ö…I(1&Bá¼i~>7cw–DOºôÄo_"ó2Ú°X&îQw„I •ÿö×ßý7ýýÛ.È!m+3Ð ã3¿þÃS+š^UÜ~ˆëwt¼zíþQmkþ”[p‡°o ƒÓ8åÕ a:X"3^%|ç¹G§sîq*É]6S¾ÓêO¨‚ció§IŸ“ÞÚµX1]0hK}Íø ZCµ¬žnÈyýK9ЛZ©{ç6ÉÒßÈÞæK c“\/¬Í³šØ¬°¿R_°ù—æKƒäö¤ÙbV˳"·hØD x*ÏM£Ž1šùÓ‚ý•é%lf¨~åtâ¹SKa#¡0<Òdšá.ç͆?a•êvþZÿQ•è`·kP›}ò3Ò—ú¹eÅ—v¥] P·€=a¶ýZ÷ÝbX… .ÓñsѰ8Ê8,q p¨Û=P×-~5ïX|ΤïYÆÔ$öÄ›N» è5£ˆW+ 냨ùXÃKÀ'Höv€û…¤ò[ÝÃç㱆Á·Ü‡öËCÀ™ú%ôŽ!uvÅP± ÷!íuX"õ ÁøÂ h‚#Ý`-5̈׈jüÆbèw¨†¡F¨1 „'¨1åÌPÆqG~!& •[¶O¨qf¡ü`³X Æ«†íÓ:¶@A‘ÊŸ0é éêCÓnk¶FflÊá` ¯m¬Ê:Ô©gÇêÔ®AáGM¦È·³@¶a xúFiicθe=¥‡ˆah6‡š›èàIæ×ŽË|³PÀEä„ã-1ÀFFdž8X\Ð/túý€ìAïŸøI8‹ óóv$çVÅ:ðCðÝ >}­æ™K”ªÞ®øžÖþşƪݢÊXGTÆ")'gŸB:#(­kØüÔwG.‡ã»¶pFnm»vn}ñ%p'/§»Ö¥ †ê(Öà†|m@`xé/áÒ7`ÊVDmX#qŸëj€݉¥9ðçˆÜœà,Ñ Ù8ëå5•8¦+¬ÖcÏ#y‡Æpfôò>[ÉWÈøaŽÈ*XîÚ ÔM–fMf(Ú)ÒTñi‹à9Ê€ªŸ¤›ùPòÛ²oûåÞXò¦Ú°"_؉j.>Õu³AžäPiîbK í­4XëOÒB&.æÜ-#{ã×üŸjÅàþûçZÝilŽÍ¯labýÔäjëPíXÊ“I©%`N{Í´ß+˜RÌç^õÈÔL¾C?öžaiºhd²Š]8Íþìõ”L{‡É¡Ù~‚°)؇è]þ‚ÿΕâÍÀ’2P ´íÊ™³×¡XÇc8\;3É4®Æ–¥Ü-3ÿð\ïÞ¡ÂT }f, ±âÞsv¾ 4?Ž.„ Ul$Xš{–QíÆƃˆkDŒŒëƒ8Uñ®ôwâºc¯¯€InÁ .ï,Eoäzù@Uá!Å€¼TEðQÂQ1’ƒ¸Þö×N:·Üù‡ÿªÎiöÓ· M½J¨›¾L›¨Rº}hÐl|Í™™%J è÷R%¨˜=¬µbwrãË8úÙ½'¶DgÁH÷Í b§×D,½wú.\šAÂ=É;#{tI*»ªqöe…çNo“g⑘ùGÄ-Žúà? ÒȬ ¹wDõþ‚äþYËgË…KÜÎãº(9,€ºpÓ6 3CZ6vXzè“'~Šï‹¢4 [‹‘†"†ˆùº¤ªÖ"Ÿ•¶9ðë„Waßã°n[gèIÝÎAA¬ d³t'–`3« 8Lh×ja †rð›½ãÕ“l(Ï$Y©¯Ô¸#k9»ÔòcÓ¾bµjßõ@Ò§Ú›Q©ŠÁ݈¤ÿ’ÖDKGAo™ßa‘©­ K 'Ï)“ŠÏáG†ãb¥:ÈåŠkä‰êˆƒ(‘=!Þª%HÑùÑq5Mb²Ü›«¬äFB{¹2`öžN¤Ç`åDö7(#‰p“}õ½ “1ÈM#rq 6èóŒ³8‡Ç$ªX~p´…·vIêÜE4Q笳!ê‹ãF|µiþáGÖ§(Hƒ-f,vœT±JÚ n Y÷‘¸ocÚçº" 6]~]OÖjƸAÖÇÈ õñÄzê[æI ´©ž}W‘£&›GÄ Xßëq¿'±›.g*R&ñÖ'hÕèm¹ƒK¨¿Œ\‚)OÜ ]; Ø ¨‰%#€Š§—†ÃDré9”¨Sœb=(;à]…a×ýqáÿCë8·rÍèB£u¶‘…f¾–ÿÀPß»ÑîV¶‚ÉB2Â/±d…l‘js ‚ïo¼C%Æ•×é ·Çx'–±ôÍï­Ó$KÕ+;±¿a'æ•,/f»ÑKõX«òKQ ¸*V{Œ¥xÌtþ?ì܉! ±k.Ã-°ô\}Ât¢]8ÊIn0P9•¤:¿Ì6@§‰ ™6XÎøAJ)7`¬¨CµE=kìÇŠãU¥êã½Ä\i $ø¸¹,ºÞÅN‰uhª;ÅdJý’yyÇÎêÈed*)2á½ð~[nÔÆ”Jy÷¯1’J“ÎfÈŠè nZÅÿƶ<Ã߲å§½6Æ Ìx2ò?`#¿‹ oAÆâöbáf¯@FñGû;Ð8Úº+úòÚ-ª¾µWN Æœ.BÕlŸ´yºMµiÁ7…d›'çí–£^ÃJÀ¿õ+a_ÌA3™ƒ·ùœòàëCƒÃR"›L>=ž×¹}œè0°sû,ÕÑl Ýk61‡i¸ö2ÁX“(­®9uɈé$xIÿÀ¡+Oeåæh ›T\}Øsi8cKMîú­ø¡ €¸º× ^0¼`)'>¯“&htgK[\oÚ;Þ°¡­aœ¡ê?¿‹ƒÉl'“98I¹™³}  îêIx8À‚ò’QÖ¦S¿ù宎 dAØvûfql\ø%˜-»FiÌyq!1 &9†Òt<±0<¥:=¹3«cÝïÉ9N©X—ÐÝå;3ù°òÜáL;îBñ,le¦ƒ’p¢6ø÷’WÈíÜÂ2ºÁ·…Šú‘i‹\PEÉBEÈ’»^/׊,Â!ÅçCRÚŸ.\™váGäX+%Dý'÷¶:T’ÂZ*£°'mO‰ò¬5õ«žðGÑBØŠjmX)/²«(9Æ <¼þ%l¤Ã…gÅïÔ÷¦XT”B1@…DQæpÓE ' ‰ê-;ìwô…¾¡Á¬Øaö"JÒE“šÅjœ“Õ@Áº1ÅTçˆo-¿˜%}9·ôS‹„cÁ¤ì8<ìV¾…wȪMIuuB‘X:ÔÕ‡‡ÃÕú.V{ ±8¤<(¿H >ʰ4"óqî¹¹½tÓø!'¢I‹¹ãVR«ídZ‘ì’8ÒbE°¢tlwÍ–réðW_Ÿ‚&^!raEK)8úù‰$5Q" ü¹®ãstøgòc£ô´¦¯oü-@ 0H!s$ þúIr »3›®äþ`Åšó }¢d .nç…Çë‰êyAb•$± ‘X’º¢0AnB%éuŠóæ$ %±y|×ò$þ¾æ¢/ô;c|ó£|ÝÉàÇú¥DD‘O¼·–™Pøè.al~¥™Kí/¢ýÏ|J™ºÎx¨¼T„n¹`”#U|ðz2fV®þJ¹FoJ-÷!¡¶©Ùéã2ᬈrsE¤ðb4BMÈb#:Sz.É[á_Úm0¡Ý'D4­\zÝÛçÅ¡äL¼G=ÉÀª…“RóØ¾ÑøîÍ·oþR– endstream endobj 113 0 obj << /Type /XObject /Subtype /Image /Width 502 /Height 148 /BitsPerComponent 8 /ColorSpace /DeviceGray /Length 3373 /Filter /FlateDecode >> stream xÚí |uÇßäè}ÐCh¥›rhEÔÆŠÐr…ÊQX.¥v5+(=Pˆ€Z.kpa-RèFDZÑ¢EÉ‚Öâ±¥n)©‚ìV‹P.¡r´JÛìLÏ$st2iš¼ïGûÉdf^†÷ûïŽÑˆ ‚ ‚ nÅñì´)Ê6¦¦çT¢K\žChü“íªOD ÿÝâÒÔ&Aâþ³¯n~6’˜S®q]ÎÇ…~Æðõûþ#.£s\•º!Ñÿeæ&ºÇEy&øË™C>‹Ð=®I±èÖsë<~F¹$‰°Ÿk˜‚rE.zlç8»Ö¿]ä‚ìséZÐE.ȪHÎÓ~›ÐE.ˆ:ÖìÌŽ£4è"WT]n&zëÿíÈ^G¹ºê`òUw›¼Žª;f-0U½¦ß€TǾëE7•«^“oè ‚NYäc¯~rŠ]us üT‡P.û‰Þ!0V½`r:ÏíµÏ‰IBÆfœfRÝâ~kò:ª.€öFàr0˜ü× GÇ„@踥{ž—s*g…ê(ºD7/UÁ*ϸ— ¨›)éûs*'{âã?Pô®ÝÄ­Àãnßõ•´¤šA±œõ³¬H·àóU;*ÕE¢óSýÊ癣ýÈê]âµyñ ÎkïXuE¯–¹Z_‡™½ëE7É—ÀßóUºÔø^Ð79w™×%ý~4®ẼAÒ<ø~N§ŠïxµþÊîHѹ²3ðsüoWOÏ¡/ì9k4~B¥˜édÁ½¸æ@ÿ¥éE ¾ MI#ª.|MK†öª×ô6Ç_Òg*¼!P‘©¿Ö||.˜H³©Oõ¡\Qúüè&Óà ­2B5%M z£èÎDE¾*†Y²¶¼]«¦ÉÊZ>g„_a½õlà º9­²ôRj±Lèi'¡¦(›Ìœ¾ñê‚ fßçóZÊqd puË„¾ž?|Ú÷Nf—D‘’ŽÍvÖj´½9ÿ;ß;vEøMygÿCeûs'y÷Õ;êßîé1áµ-íE.wA Œ2tvd—îÏìä>dÄœšÂÉ £Z}¦BJ)ÏXÍþجõ¸„˜ô•Áýhq¶cžõòi­¿é`œÇÆNDaìša9ˆÒ ª!²9/"›ó´Îþ Ä«&åÔBI¦‰ Ñßñ˜ÕƒÂ1eÔ—‰Ü9±k&ÑQº ç Zçe˜51NÀcí}z›‰,3óE{ÐîyËÂzâ=Îâ„°ÛÛ Jwj]êTw‚BSÔÑ pgk¤¡G²Ç#jº¾‡ÙNÍó=i{½n³]ŽA”îYZE€_Gs~ŒHìÓR¹§÷ü7«ê…þË…~°*¿,Ös×£§Ù¬ºMv;Dé–Êk•ÁpÙö œâ¡&+÷ú ;³dBWiKÃ8º·¶‹ÏتºÕvù ¢tמ¥C+ÇøBï”ü“ ÑøËÆÁ>Õu³¸âîtŽ“uklUÝ*»6¢tê – ÷„~)€4úèú Ñ e’ìþû;_5ÉhµÄn®kÇÏà¯zæ;×m°{‹ƒ(ÝŠkúQÍUå.Õ á«ìþÛ[E’™í}ÆG¡ŒëÚ9ÃØ[ë–s“ xùïVÙµÏ J÷¡t,´®Ä€0[¿2ùæÖÕ~D–2ƒ Z†CPa¡¥Ù¥ k½Ùk¯Ùdá5ý'#“]ËrAëtƒ(‚sìIBÚ¼æJâ½hùÛfÕùNî8à bˆÉ¿AS‡¶fØÕÆåH‰Ç¿fLMª{Bà˜¥ú+F·¡r¦˜Z|C„Uo-½®¾‡KtkT?,'üxözzIA$ μh®}†¹uªóÄ"ÂÀü›´Ôd©z¿#&q[ƒÌB‹†àai¾kMç4ÕÍD·BõÚp21‰6ñ»øWUØH¼T;쪺±À“z¢·æ€…]KÕ;ìV¾=É?Ú!Žg^oäªáìÇ ³¡8KÕÁVÕ¿nž¥Lm=>­T¶í¡¸S©l[äó¢2u'µ þ6G“D'ª‡+y3‚úsw‹]±W'õz‹ê5{ReäÕ1ÿqˆè´uRôOŒZÐb·¾EuY·Q½©T3L ä3,«wLN§mwcùTÐy7„}83÷;Esµ½©Â5ßKxº+çE%Ì’Ç–;ªxKÑ™TõK%ù©Š0ˆ·—êÆ#Šy^-l4w/-š£¹rlkU깪ÁaÛjYÆ=0ìNMñÆzU½µ?íK½máF¾}Žo¹YúrA¤7U؈Àó¾)¯¼W|¹KU:§×~oá™|ä)oìý¡^·è£1"ØÕÔá½4ô~<µüDµQŒèõÄR/’+ÕZ}…cT絆]¨.ÉW+cÄ ‘%fêÊMJµUáœ=²>›ìþß*’κõY:Ó­ì‘ÝH¦>b§ÑXìÓ5sÇö'‚âžz9ïàiaUgåöÀ¸Åì]¦[‘ô`@Á)Y;¤…«;ÄÅ¢ï`·rkF_ÆÍàoךїf»ç’ÈÀÏ«#uTéµj¥ÜÀC¦H¦²~£cT·kNoËÞ®Peë+XÊ/z¬äP}¡ŸÐ“cÒ¸’lÀ[‚ÚÝ*‹™ÄM¿æ/™5"ŠÌúžTYÛ¾©²Çk÷À°–¦“…ï.~*ŽÌÞÍxm‡¡“k|ìVÑ÷›)tˆ³,Œ£÷~»ø¬°v/=MÀÃÌ¥*Iõg’ÑBd¼2}õö¢_œqh®îØgkÓñðøÄ¼~y†×]‡Do°ª¾Èó¸Ð]ÅÑw_$¸Ý}0‡ÓÐÍÊÂ-+S' ¦º# ×‰Ï.ËÛ÷£tÜ_-ß³`êÃáäS…žöʦ¯«¬ºýo,¢¿ïõ²ðOŸåË:]'Ýï”ðvkæú\å×F8õÝGkLÖÏ›t´g„|\Ê‹«7ï-=åØ9•5GlÖ¤NŒ ¡¶¦”ž½«Ô¦_uC"ö0о£çtaÔŠ`Ù‰kñ¾CìZý¼hØ»yõü”qòˆæÕTAw=ò§ç–¬Óí+>~N $P}¬hWÎâ”Ñ1d½ }â§ÌÏÙ]~õ–Lžë±–AtÏH‡ô^T cZ|Ö¸ÈrJ»f\þùà®Ü¥Ï+½;´%ó¹=fÈØ?Ï~I£ýà‹ïµyÿÚÙã%úV¤%t{óØBÈÀqÉÔî.µ×ÂÓk3àÑ ef’—®‹ÍuЂ¯Œ—¤Ò–äÆzæ9©]6þøµôËó²—dÌš42VD´&ƒ ¨»äÃF+§©TóÔ‹4šµÚ·Û–Ý}¢×ïmþ°E«Õæj²ÔóUÏ(ŸT •…H[nè?tÂ_¿¹õ‹ÃU”"_ ±£ÚPÜ Qì°ºªqc/iâ ÓUˆ/Þ ?9­]¾åÀ‰²ÂÏuyÚ•ËÔsžVNP(âäƒd²Û‚ÀqPPP°,Zþ "A9U5ç%Mî¶Ý…¥Õ‚W°ÿ{+mJû åÔŒõŽÝجfÛÄþ&+ŽCb3ŠÚ® ¹êj'[ ‚ ‚ ‚8)Gd¸¹ûa9Ëqm¿¢þ–÷?Õþq}*L/j'½ÙbÜuÞMxÖ´–ðËa2ºÃMøˆ›UßBÀwè7¡©/H IÕw‹!½á6l Ÿ °Ý‹€ÐnC]0ˆ=ÀCLD6 3܇¥‚ÄkÑnÄï-“µjÐîijÔ$=ébt„[qœš×)=Žp/ÆKAš‚np3 ɼ~ÝànܣРnÇvøàvà+‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚0"À‹I®”’Ï›ay½ éF¢óy3lûÈPu—P×›a;^;XÆ»„è|Þ Ûñ2TÝEâ3o†ÎOH·UgÄŽª»HSŒÇ›aQu—kóx3,ªî¢ª9åÄöºkUêüÞ KøPu÷*PtAAAAAAAAAAA\›ÿPÍUå endstream endobj 122 0 obj << /Length 4428 /Filter /FlateDecode >> stream xÚ}ZY“ÛHr~Ÿ_¡?€"÷!?ÍÊÒÎxÞñLGØÚq(’°@€F’zÂ?Þùef`wµ^ȺPGV_fÖ_~øËǤzE‡*Ëâ7Ç7Y~È«äMg‡$Mß<´o>¿™¾ž»/»$ ÌnŸYðÅvû, ƒúÑŽý2»æ]žu¿»ûãá_ÿò±|Sª<Î1qøfU‡¸(eΟ»}šfÁ|Þñ¬(wÃu™µhñŸµTí«;º<.éUÈ7îãÖÐ~ÓÁ´w„Þ.ÇÑéb¥8‚#â(¥ˆ†|DG:NDìVDaðӈƯ¸V#w5½•ëmÆË•–nuZºýQ§uT{ëÛNjń‘Ï5겂´X¬W€=Ò ílÝ~ÙeYPËÇõɰTäUð±›ìLKÊ|sk<ÈãÙÇb¾&â…(°*›é™è1g3HÇ|6OÂëM­M7¶¦Êd®“±Ê¼L‹B¯É³d´±CLAßfc±ã*!èz#] O!ä)yÊ0 &Ç€t_>›$(‹àwC2ÖêŒL¯À a6|³Þÿ4×½ HÍ,Cß}ÖÛÀà×. …”@Ûé†q–ÂÜùY‘Å_èÔõ4wÍÒדԅš_ºi.7µ€ñCëäÀ‰‰®ý(´º_ÚW7ù¿˜zÍ–‘ƒd ø[NJmÖqb±¶,—znÐ|–ñtçKÏt¤n>ýCøz#ÆIÚ¾NÝìe¿‘¸)ÉKÐölÌ,EH%þ¯µS¸à´ >ÈžôCVÜ<ƒíZ£³ÌãDB ÷RÒ<ûà[‹«Šøb°lŽPM8X\•ÎJ éqc؆wöB Í$›¹#®¯sË´»ÛûöÑÖ,>q2iðoê>KÍ­,µ‰U¸5f DLPÚ*cÔþÏbgæ(ÚõÁ'ÿîTª7–Å“¾üíCüžJ)$+%ŸœRs­ÿ­9ÖÄ!RqJÂ{ð™<ÊäêéŸ4›nµKPv]õõ:µcJ´¸² FJm7™fÖñƒWAǼ¹™ß¸ÊƒãÈJ*¸»\{#× þKRÍ6º'%"Â0¢ÐdåkÖ˜h##¡–É{ó+©’ä^Ÿ:Ê$)³"ú¿ž‰Oô’´‡úpù±Ô÷‹LÂC+¸úå:w—îO7;™ˆkG× ¬ÕwƒyHU Î:ÀÑJ!Q‚¬Å$Ňù¸‹¢(øQª¤ F-,”†Ê¨èºNݨ±úÀ<|è'©—ÉÏ-g¬•C®7§°h*ôPršƒnòbe|=Ôý“í´NÃÀÅÏ”“Q΂E€B-X» 5«Ýœ ]ƒuYhÏu뀭ÛJÏ£;}±ù¼Ø|žÓ‰êÙ·…fœ&©F-ÉE#ῇ3•WÕ¬¨%#<øûâT«E°ª.‰/X/ɧÓgݰG°,‡)Ù˜aÏÛÛ÷ÒÆÉ…ž[§Ñ6™SgU'P,Gí›åä[Ð&]õQœ’R!ûÂZ1TÈD¥Ôɵ‰Zo9f)w·«>Á'GÚå£Üègé¹mÑgøp$QuÛZ‘2÷õr•žð”‡['ˆ (N ´†»ÞÃ=œÙ”¥!»ø'•Öw|IIåv(ú†[î8þŸñ‰ƒü1S…î⇠`ZaæviÀÈX“/tÇ…¶º<ú-WÕövQ‘¦BC4Q~ÇhG /“3³F!æVêYœî¿IqÉÉʼU»JpÆ¡ŒI*ÔzDyÿ½ s0€/HÍ÷ý3¡áµÑ¹Ÿ¤Üгìóq4P%Eyé>Åk“yÖwgIŠ2XQÉ‘|Ÿ¡1Òzc_©µRPåÑë·îtT¯Ø¯îYXü¦¤ ÑՖů€z®ÉÈ ' ­oÞ‰¯â}²ôËкº;E¸¹sôŒW¯2uBÝTá¶êǤãYw;Ý<5½6òÙ©iZi˜™¨SˆÚ¡mArwôƒYç—þÎ{óf—ÓYöAþ/£ew›–'š€)²øžãƒ^kþwÙøå›µ¬|øÜµRîul€_áú×ö>ð1{‘ÉgD›GÄ´^÷d€Z¥b϶ÒDÈç4yUw•Ðpˆpq>kÁ jÑZ7§Z ô<)Öƒd÷W1Îüé(>å:…£½ÏÃÞÜ©+E¬Ê†úòL¯ `$œ:J³èw)  ©eëfQ&óZÉÁšf¹áö4eMVË¿ê¬NЗ¸^ÁiªbCŒýUë CèãgîõØñ¢ÛkݼîÍæ¿i F‡Î.8{âz 8€ {o#ª­HÉ` 5Sµzlƒ¦-îî†ÕPjÌËR"UŠ‘ño¾yEµnf(™ŒlÖÍýÍèÚÇ©%}7ißm9Ô¶Ë‘å¤ Í·Æ\gé~ àpuŠï…qž|i µ¹v{@M©7J­nÒIµçÉF+¢öÌ@¿óí`Åd̈ ¥‘Ó—ÔÚvâu­júÉä¤ÔgO½k|•‹™N¦õ‚-hIlITa¾¶ÎSÍþ¨€ “=‘ôrOúÜŸ—$9'dõpzúÅU¤¬SÁlH°³x/ŽÛÛ½ÿ@àJ«j[ ÷©Æ; óXç±zt™æ[MÛ`·šÚ7ÜŽª»8f ’´ÑÙ¸(8¸»˜"óÐÍ|añ|¾ÅÉ ?É…ªsh‰‹–î ÿVl²º©/º¥Ío£Î#¨¦šbäè)6ÊÔp¿¹d+ êJ3SCGÌÖôG!2ÿ–or¶ë]|ìSH<;#4)ÏÄu»©Á ‘žìÞ¿ËÔsËBŽcquÓK¹^æñRû]8¶vQ|úÛ4–Õ¨”Êph®²RgÅLÿäŠ÷‡ cX#ŸnµuYØÊï¡/R‡KÁ=$Oäåw|CϪ¨Cm)`_»¯`¹®id\©‘ô—¦I!ã–͉\Òûo‚>ÊHpuɼeÕ:£úÌ¿ÅH‰0"ôYÛ®Ñ6†ße謔óé[5MàAvÀ/k¸ë­ø‰O\™uÀ¢ñðÎOFn ÉÕ•Gs§3²ÃÚèG£ß}o%RP¸°iXj(QZš…DÕv§º.mê…ñí-¦PýÂ*ö‡Ý_:l©ób©°a!To¶ ÷Þ©ˆ˜a„Ñ RʇPxŸºt.ª+Êv¦ [ã7¤Ó|ß䇰TÖ¡å¢(&«¿«h-»Æù g0@ˆå Ògg8Ýö•¨1d%2ë{¹>ç;ù"@iõr(‘žÈB»‡2Lõ>œŸŽ»DµŽ×%¹íô>ÑÁCº£—€ÇÍC¢Eæe±†Á+Â[„Ñ´ó\tx-Ù1‰C»¦n\èLÜ#`ì‡Oq)­‰ùÅÉ“0 "«-ëm*J€f5j‘5ŠŠNÃÎ •ìB ¨×Iòo¾³.÷¡évBÃÕOjŸ‚þ õ“c%åÉ9u¿ç-Sß*Š„ q‹c¾êJ¤$êÏHÄJ3{…$¤&d?ÇE;ïtn# ‰ZÓÈ1ƒ(¼Íì¢ÔÞëvhD4ìÓ«J×ÄO\® l5Çn/÷¡Ô8—8úýå÷ŸÿKššú ÈJYí%‰F^Y)=ƒ˜3½r&W=Œ‹^ÚuôÈÅ£‘/^‡—«ËÝ|?lPVÁß+RüÃ-–²g¥LmŸ>"Ü$~M˜üH+ü,‹xþeå¼9žåta¹%ðЯÇôÞŠÅ‹¼Õ4J¢ª5š—º<£àïËçÞßþ§t}¢zÈÆþ–ÈRæü¶‹Q¡>['«}øñh¾ªcªÂXºÐ J7F-èCÓ¯¿Ðœt{æ6bUd„ù6#õ£@;C2Rƒ§¯¥‹Ò¤ÐÄ,y§›"ï>ÙÄ~—F‰ó䇔UÆffÒY„" Ò[\ GÀ™–#Ž.ן†-燲XsòÿýRW‡<,\¿&DžÏDÁúàŸ^Αâd“ö°Û*ø?¨\'T'Šª•šÓ`p¨FiRúU‚4 Ο×î…¨ß}¢4z®”œ4êµë}ЦH¦`}ÔAË#5¡×$&ÐÅO5›ñ{µ9G¤›X«T¹&ØH`ˆçÉ]B­ÐJÝå–DYâ/ ÈúEöbÎ`ùÞtÄau(Ãõ¡ÆqùóOq î‰¿wãîãMÖç©{\˜ó*[à>iHòB;i€†˜O/¬(¾tŽ(自۽NÀ˜3 è‚ç/¸aVN*ÍßVŽëÑbÇeâ`•WT,¼ƒ\¨ïQc“˜d>ÑTÔðSm%@hÔ³ü,rŠÏïBÖTJ÷8qØ•OïŠ"(Å”&dM 2»; 8™‘9ˆªärµ£7ÊöÛIä¸)¥r>5\ÈsËeyÈÓØ]rÃ/w"Cp‚ïýNuˆ¶…[‹L‹(`;¤y(õ rÚ»Ô¨<ÃIŠCQ>%wZ&yÄgJªP²Ed/w‘ÝèkÈ yy´(ÉáíåЕÏ4òã$ú¦ó½ÏJã¹¥î ¶UEð×'ÙÍš3¥mìõEqH’èù³8d©³iÒ±“Š¡Ç¿¤!ku˜­v:œ-O=¬CE’Æþù¬Eéy"9_3“p¿8{|‘’xv9QöÝÚ%…np»ã!îB!eýY¬³‰Âéún~5êß6.$Ð _¼£Bã$ÿbçêᤈRV¥‚s0³\ N Mi¼JˆÞ¸»8~ašV©d¾Q˜פMZGù7ŽAUIð.áƒ>’@õŸh¢'©.~x,u€Q‚AÞ¼©AÓÑÔ@xü ¡T¯’@YE}ú„¢Ò(=¿î0f‘{ß1u ƒÑàC h¯×Ç3ü–Š´Ñ¯ÓzQ–·ÞØo¬ºù£zãYž {ñùjP…‡·ãE22• uD¬4©;>ûÞ|­¹É9¢°†ËXsñæýJÂÀünp6¾I¹ÆUTn ñzà2Ñ8dꞢXëà[¬í« åa«ÍÑ@°läÐÖ-<.'ë…ÿéÞ¨¥¢)ËD#·“f¦¶ê” R5"ü,-ÌíÁ um~½bciZ½gTpc²Bါ˜Î R£äÁœáDt‹/½”8 þõ5÷ñ#Wëc¶Íiâ¼T¡Œs5ë/qc•Št5Tû½ýlz3ƒ@¦T¼=1½ cO\ÁXOšUïgᡈŠç=Κ Ôáâ–I„XBÜ»‡V­‹¹RÇed.iñ¾/M²ÛSX|Ϥ‰ 69£ÖÁbN3µø1‰Î–TTíÍ7y´ÀI^núÛß^§º>ÍÕN´b£·~~àC’ž½ß&hg"H¡R¯¥Êqfl 3r醔“„Šãü{ Å/C[d-éí_¿ï$=$E´1ó™ùÛ–ƒÙEäC%ä.l”dÅ=+5ÌQ éïÔC‚ŸPHºÇ£õ)s}•ˆ'Ã-µ«ŠÜÊ|®´ª\µj²§ñòÌ$OæôBfÔ/lsb—ö£‚` 2ôjÚ¨ Nÿd¬à]ªË#Q–ñæ}%*k 1¸(KI/‘àò%q†¾><üðÿär§ endstream endobj 126 0 obj << /Length 4755 /Filter /FlateDecode >> stream xÚ[YsÜF’~÷¯àÛ‚³l÷a?LHÉÖØ»vÈœˆà𛡢¨ðßü2³t³ÚžÝYYÕudeå­·wß|û>»ÊÝ< ’«»Ç«8q“<¼JƒØ £èênwuï}u½ ãØ™†j(qÆN0Ÿ¯ƒÔ©úúñÚw^¤køtdNÕTc× f{½Á¨§ƒ?×]/¿•îØ)šFÆÕíq÷zûžó¡Ý\?ÜýýÊ»Úø¾›Ç±ì…FÐà t†±¯Ûý Ù!ûª­úbämbP'ßñ© T½TvØçgÞìõÆw°« ÐÝPÿÝßÞ_û¾ï¼±mcì‹v¨Çºki±G;hw"çP´˜òEZË$<êXŒOúƒz±W·e3íè2Xzm«ñö£(qÊ‚î`J %Vz’žÇ¢n¦¾¢i}¢`šEÎߊ±>¥J Šã§Ot[ÅñH×Bgo­Köõþ ³cÝ$wŠÇ±êfë#¡§$ŒýTêì4€I®cÏw ø…ç1ÄA£;Z¯x¬õWÞípC‰C¶¸ô(ôq{4ÕÞõ8TÍ#`Ï©Á=NMó"`wäùÀh2ÙÇ“eY–뇺†9Cq¨…Õ”Ed_AÏàènjvÒÜ E¥±bEÌV·‚n»þP4¶s:þùÎÜa”xÎ_Â63ó´°•†®yeÔyì»}_t¨¼ˆî§8Û¦l÷(Ⱦ¾/ë 0G†a¸\WFôÌû®¤£nå«ÔUÞÂ(¾}t•æ8Ò\xÐ5K™›å,yÛ°Ô¶neñ8uïL˜¤Îs=> ô8}ýZ±,¡-ÖU³_êÈR‡ù³H)â A{´›·X—ô»ØsÆjy+h„Ôx7z*ÜŸ:¤_# â-ù9ÆÅ¾Ê/ŠwxìšF6‡Ul’®ïô…öc] ßaÌ·ïýh%¬ýÈÍIHoüÄÍCeãz~*C×bPH+(­û¾*Ƕˆb±Ø"ˆ<çã»àV1«{¥¥7a¾ÐýÝtFC]~„<Ùê^‹èQL{Å0ÓDú€¨ŠÏ¸úplªCÕâ¦FÃN„—Y"Âí;«Ò†ò˜·~ËÌR=C‡ÛCÇ¿¦z¬Y·³ðïQb;Äü‹!=žeE9Oä'³ˆ•)Êr"Â¥!u5…HNB tˆJ‹sñ—M\u½/Ä®5ïQ×Jð 9 4žŠ^Ѭ¥éMODæ—Q¿®‡Êµ0ÔFøD*ý?0ÍYµ% ga§(\i ]RMúEAp2ÀÇbµ„¾Êy¨:ç3_“2Å4vVsI–‘T¦f|ﮦý‡Øj3 Q‰Ö3h§MO?€r´ÉfÃlD¨´°ÞéÌuY4‚’mÀމˆ?™7µÒk# ð´'ëåëFƒLX ßS ±œ^é4¡‚ÈÂÁŠØ¤Ž®gªÊã,'« — ” ´¡øž¬ b`<àŸªFÅÕN`>ütÑ56y1+½f3èïK\YT*gÓkûSNMþ_œ)§Ò÷#Xà±ä_DÒYX=Õ¾ú²YÛ<„,Ì5X•ùÇwxߤ§ë- ’i<÷õH€Þ¬ZBÔñÓô©©žëò«tÁâ;äfZ×Vù÷ë/¿}øØ dìNÛµM «-µH‰CAߟêA ŽŒDÅÛ% ó¦ékj„©°%:Ï Â0[Ê Å\'<±¨•× ßÆ¤8 y‹^ŠÍ½Uv‡cÑ›Á«s£©/ж„š©§Úœ ÎD¸Az¥Ë‰Ø¤åç%7üëz'¶~úØ“cTbô—Ýt„-{¯Ü¡nñDÚÕCÙWÇ¢-ëjå& Ó|8xƒ n«g+›ºw{Pí®a=%ò ád:2æT&{,¦ð½ÎÃFµœ z¹OŸÇŠÜ²ð)ÿ¹çT_ÈORÏmVÖÙ«GåJïÛnÔßñJ>|ÙƒãeÁ¼WE<7cÍÔ2N3ÿ MÖÆ4phŒ_ÃþA¼RÞrè«Þ âöFFÆžº¹|4Å÷!ɨE²¹œz¬_0βîcu&Ï HRÞGð}ÐB³µys=[“_jº^¿èXÒbÒÓÀØ“¶çyVSƒ¬^&Y¢ü’Å,á#V?B³˜}M¶sT)Gf–>%nËòÈh)+çˆp0~YM¿`»0ûØ\&`;5Ÿc5ZtÁj¸FÆ|Šy̶ÚZ|…&v@¢¯ÝÀl0û(kKè}ÝÃÈ.! „hdŒ9¤AçÙï+¹îÓK$˜.‘UTäò„ÑRà ó¯ø ÈòûvùûŸ¯uÜÆLp*tøs¾|_"'h µ-»Hs7Hr³‰bûzßs£Ä7#ÈXKSߢ"i‘¾§®@”ãâå"6Yî¦áé&KqFÈ “E„À cÌlÓ…jÊ$! *;œ Hòoi¥ >Ô¾'k9i@'õâsr¯IýúìQâú~¸þM Áä'‘˜ j³f«7°ãýzyæúIffÜÚL²ÔæûeúòJéég›gé©”*ŒôRÇו$±ó{AÀ 9$í,‘ùù¸¾VSa¬Ú!ü£¡oÿ;ËaÎ(ÿÇ,l1è’ÀM“ÈÖF.rv³™þM`sˆc7Éç1{Ë%®ç¸±,’¸^–Ÿ3Æö÷åø“ÔÍóù®^->µTSöƒ8YBP"ÂDpÆ¡ãÖJœð8#O¸Ó*P.ÜFñW=‚¹>Î_~/.œ'ÍÜláy1¾ߨu/ “Ìwýå*Šâ‚0YhE¦gÿ¡%`¸;ňèÌea{ĈÀ¼cû¥ÀˆÀ—¤€¦nܶèõ^ƒÔ¥·÷êñÃ|›¿^6±Xš)# B»(ˆ27HBÛDA‰‚PDŸ@Í/äxªõ•#çÃ8"¢_µÛ^X˜_ÄiªJ“Õ‘pÑ–'3ű0iis¨Òá÷ooóPãu–‡€€Tz(XÓî+LÑô¤$_¤AS·uúeæšE10Õ—énù—¢?Õ*Гp*Æà—?9ŽiÁ‹4i_ƒ™ƒE'ãÄÌÃïjí{,dU,Û˜³Ž¸~ROÝÆÒ8t#²MÂ!ùF…|z¤CU pxŸpï“›ç3+·êG{ΞU!âƒ|—lj;æ’˪çK’´Ô³D¤J3A+ß#GÓÊ >ç³”','m;XðbN“Е<©e‡+ ðk,¹ßLlh§²3¬zag…モ(Ð?>~€^àÀüœÅK\éÇ»»_×ÝtªÜ3a@ g¶³pº(±$05)‰æ¤ ÓÔ#É“qÿöÎ÷dÌ=½ÄpÜ?þFà@?y ðF¸¬ž’ÀÔ‰$²ñ;g,‘E E7íŸ$KÊ*ž¾Åî€Àºûj?5E/x°IÉ© àÊ®c/„µ&Dm ­1€¤©Ò:}õÀÐÝoÈYû\ãþ²É~<ˆM™Ÿé“è’€urlEÏ2¸­æÂú'j¿h©KLòµÝv3‚¥qÆlxáþã{Lz %ƤxÞnÒ ôøAäλbV”YnØGÆCâüىț–<4G2å$s <É}Ç,Š7‹iMÌö¬¬r(,W&Øâº |o/ÒXÒº ?s1+É"Ô3‰£È¹{ªÌI¾$\­e˶ë¨ÕüDÁä[HðÊÿAš8Ç×Íœ!ÙIçîlÜv]óBMzÿVª³]H–´H@‡jÿ^Þ(h–œ ­*wŠoåý$_=ø²ýÄdQæüúÇÕ8ŽDŠx–òTq‚.Žc.CŸXiU/™ø¶¤£"õ 1ËËØ ÅM,44mF_žÞÅ&ü:ÁªÛ˜ÏÕs­Ø´j`…y¬E)Å0õšâŸ)P=ZÏÎÑøš&ãb=-ÒˆãÕ&Â8W;Òäá1®(ÙŽ¦:ñ¬lu}Ôôõ2þüôÊûsEK!µ5(ˆ^H—#£–d‘ó¦u§uV+õC­˜ˆL}çªt ðîR¿ei5ë·€sqa çÁÈ-­Â#¼1Y6ÛBDáúªìömM!œ‡(¬wç‚E¼fk­M!ù8”4Šbõ ™LzDÅ‹ô‹´Ìg›E~T0gyš~j8p‘"p¸Ì”Ç¥š ˆÒUHX‘V„}$U/7Í”¾iÊö V•’ý“²€måKf‚•×Ö¶é€Åv€¢Oº‘Š…‰÷?ÜòÂ^<PÈÂdÓ§®ïúž±ÝýmS´ûéYïѲpäz.~q˜’×Í õr²Ò/ž‹ÄŽÀsNèþWýArþƒ”Hb\ÌžGôPO ÿ¢ E’šâ´=ÆçüÖæ—À[ô\âèu´‹œh6«0û c%­™¼$Ç™’óJ–-Õ/b Ôû¶ëÕ¨G“ñMm†° á‰Üé§V·‚ŸúJÿFʘä$Û $.v•är‰‚¥äåF &ª-:í»Q:ð6¶t\ä¦IjFtG½ Zä3ÊX0[­zÝøQâ‘V†S ü#fh%&h íÇn¾DmëÇ?Ëntæ%:«DŒº§¦/â|‘Œ™ƒŸ©|z½Ñ(̾ª‰K\ÌOÜÌl9ÑÔ¿Dõ(r3o>ÛfÓvSA¼15ˆg!ÌÌÍÂ×—úZ»q<ö\h Œ©x¦KÝ$ />ƒ6Z"‚¢õb/ˆ9M·o<k e_o—Ò« y„‹Odú:j ë¾á’wblå4–3? õgç·‘‹ Cß$ÚlÙd#øƒ”pV:åmg~U‡ò=Ø‹eMÖ•aìÏe¾žþ ßoþK‘Ï4& ~ÌÏþîFìEù„ªĉ\t8É ½¿øs(ßR-6LQÈ& ‡/e D}¢Þf¥4‹½"%Ü:‘M‘"ªM‹>IcÐzHKð”Ï‘tÚR$,8býa3a'ù¢fM™)Ý>Y‹þµnj±ù?dO‡åwõWövÒÅ‘¾£2$`_>¿Ë'‡C¾³øs=LEÃ%ù6ß 5!Ì™©£aÍcÓÃR>¾Ä»Ïãa®¶}˜óE¤êÖ†Yr©£Â82GÁ°1œK5ÉFÌœcòä6oì¥ÀKi®©ˆgE5‰Ñ¾«‘­ìú«J$µœÍ¹¾ Êo·tŒKñÖ4s£8>O-“ð‰I¯’·åzž–Ò“ª§ÎoÞÝ}ó¿­¬ endstream endobj 129 0 obj << /Length 3008 /Filter /FlateDecode >> stream xÚµ\[o,· ~÷¯ØÇ1P«"©kßz;hS h÷)Ƀí8 ør²v¤ùó¥®;»3;¶VS8–×Z‰Ô'ò#9œü|ÉÿÁÆJaœÛXÒ¤ÛÜ>]|÷ƒÜÜñß¾ÚHAÞm~‰3Ÿ6*LEÍãÇÍ·__üώçõ¾ÏL¤Nš®5Œ7ÂhìÂÄ[Ä Jä‹™àÂùµo:+·Z¾Òïëî”À¾ûhY£y%+\¹Ž×ùt ÃeÊyË,&±‚ P¨C”fç ÁóyäØO –<ÒÖ †øÎ;òŽ#7y)¶T6{3@áL3¶6ÏðìËl­…£ ›Õ›‚dQ°ç[$«…§ŒàŒú%¨DPX!²"†"C¤u…Ègˆ(:D #¶ð!›Þ …öyh¬²ÀiyÀšu›dx¾ëºÂް;w›oph—þA)a¤>Üù7Æ ãªàì$âB€Œ [‹çî!oP‡ª ²ØÆ.ÀÒ¬Ú,,àú†ÙR€ï$eXíN‚¸„Q>Þ“=ÃÄPèêóÂA6ï>£û8ÕÉ4Dñç NŒ,{âs˜¦_„êÅÆ2Ì1×#¦Aéü|‚a1S‰&ìº'*¾Ëh¡ é sNãܬÝ#ai¢A-Ï š~ *D#æˆÆÂˆhBbŸXxö<#¡òŒ’yLfu®z‰gšU›â#½°vždÔ‡y¦ãÊ3ãgxiÄ3–@ÿHL3VçDEïYÆŽ†…eç*Vf!+l×km;IFZNåúHF{¾–ÔG2ÚÄ@‡ð&$óÛóËÕËκ95¿âãÞn^OŸm»@³:áòïŸ §ËÒ®Á;Ú¥ŸÍ¼³‚@!Á¤CPj6Ôì×ø²90.Nß1Ú‹f J<£ƒgY(ÇŰ:ŽÑÍÅ1 ÜGÔ.ÿ¢9ð h7ë8EÊ‚à#[)ËÞ@úvúYAÎVøBªC@fƒ§35DGÉhà›cköw…UŒÝg:¶z5_ȸ”Åx"¦¥§1jÖn#)?æšüáòJ)5|óéíðç+‹!" ¹}yúò¸½y¾ä þ–ª»¾þWúã—›ÝëýN„Øð‰˜x#¯²Fû}^ÞnÓ‚ ÄR"{²¸¥H•Ê%o”ë‹7ϹB©Ó_¶o?¥ÑOÛ×·—ݯaU‘DþçËóÝýÛýîiû¼}}Jßÿñe—¦O½FV4²ÏŒ.õh»û‡Ý}–—÷‚§¿ÄùAqÅÙ¬>Ôz¿«|¤Ô…FëíKÌ®ét¦ÚÑ í j§9©?”v¯:Ø¥h‡; Ó»n-g›|OY}«–U[!9™aŽ´†bÔά÷záО±ÆŒCáä‹'-I€ukÕàÓ·r Þæ¼Õài¾¯Œi®Á“âÈ»´`â¬0dú0i^c&—Œ+JðáüsM=ŒS >8çq ž->LH¿‘Wõ+¶|AÒR¾iÇyŒŽT‘í3DZžR}kX=ü UxÅQ€³f± _ޝuÏY©¥ïSÜ0§öÝG¾ØÏòJ¬RK„šM¢_PN8¯eˆŽ­,Ó·Šô|»µÈ™sHïÂ'ÁyƒT,'¢NŸg¾Û¦TÙ÷uŽbŒÌæE"¡Óø6ë5E‡õòÖ@‡mlKTšÑé¡¢3–!f *èÐ}½/SQx’£TJtÐ0 / Ó¬×΋$v]\ÏèÈ€3‡­€ïWD2&ýƒæ°ÜéÃCE$&t>BžY4*„è1B¢R^ ¡R˜ U÷ …‡$§!iVkv¿Øz±8œ#õ­È)ËEwÅ÷ùPѽœcëæ³â+×w¡’Œ« °Ÿ<ƒXúE¨®k,à ±À±€?¶“±@©ÁÛ‘áj„pÉu5ë5A‡ç ²«‹ ³Î –D¨èŒe˜ ú“è /^ÌVbÁâºÔ¾¸Áðë‚ï¹N»ZSpœ ÖàâTAÊóÊ ^9ØyÂ+P‚H¡ú8ˆÄAâ£*¯ìxÀþ!»Ö. Ò¬Õ,"}´B¡ûh…,³©ñkÔÙÉja´9·Î^ζY Øóõe€¤½°°×PŒ ÏàšD(Þì@b¨‡³_c›¦!>E ƃ”Gã±”GãqáT)áÚšÅ`êˆY Û- ܬØe…]à\Ô9\Ó-Ag,BxR©Æa ªcó›H!1‡)T}lÌØƒÕ0Fß–‡#ÈÂ’gkUkm Åú¦…#T–&< ˜­©c.5 ÛÛï%¨Ró;U@g÷¤Ù±œ, C¢Šð³ÐɦÒ4T èÌ:©ÚÌRú‘ë¹<:* “Ÿ–˜ùû©ÄÌÓç 輫ÛËq¼E-óB8¿IÐØ"{ã¤nöÊï׶郥í¹Zuˆð͇+n¹»&ô³±͸߼†ev<³’ÈÉ–:g™Zµdc'^Šôÿ¥V=×/~¢V­áŒZµT×L GVõaÒ¼ÆL¿8ÇfŠ1á;äÌ©vq‚Ò.ÊÑ£ZµÅ}»¸šm_®Sçãì8‹ÑqÊå%Þ7“P qØ·†â³E»B¡5ÅÃY,TçókÞtVn³Owb®ê»ŽÖ1ë…@€i ò²AôK*è@„øü54ˆamáƒ8ŠH>w"ÙÒ+ÎaE°Àb·„ñ¡ëH5‹å²Ô™œ˜åÀB/ Ü¬Ü! O~ „8–@©["½ Q¿¢± (+F¦`ú¸[¬bä F­˜ý [ÃH`­,H%¨@¤cR{¢få¦ cºšL8bPl§VàšÅ3.ýû†ž %ÕÁÆ¥‡¼‹Ù‘Lì± H”*k‹eÌŽ¬•); 1!²­@éßgéJ¦Â}»€H³Z³ˆ„+ßåy eû¨¼vš5JÎ/¥úXÍ:dûî³ ôq 8ÃÚÐ  ¼Z·sÌ 6aŽcŒ>æ˜ú>¤Z´-/»ÿå’Ÿ âRk^´›€ßA û4ÆÍªMñá´PJ·>üSû3f*@cæ&T¥ÛÄ©¾ö’tF†±!-pß‘ìÊ8ìÄ}›¸\B¨Y·)B†„Ôk #>Ò%žaéß·Ìxã‚‘™` ¼S4jC…`Tzå(!¹&$/ì§(€ziWjN÷Ñ άߩ½»†rÂJ»F隃c^]ºÎgÛ,ЬNZv2AzÆaÅÊ©41N¿ÀÙŒB<ÁÄg;ÁÐE“ ÅP,ýáѵÅþðL0!PKq0CÅ®äœØÔʨÝ3 „Êhi·¡Qèfý¦ ñQ‘_…v ¡îÚé¡ÒÎX†ðlí˜v¨¼¤Šgs¶ÐŽ.Å—eJb£j­÷o$…ÝF‰[€¨Y¹Yˆàúlqê`8wÚo»ƸÙJ6u‡óædwø¿¿ùû\m›\|¤²ÔŽò¸Ç:Ü‘›ÇÇqƒx¸1]ß1ƒýHçwú¨öm«–i.¼Ý{¤ïB3·ÊãL3·œm=Ÿ´ŒcÙ™wÜ\iÿ÷)̪tû?Èx™# endstream endobj 136 0 obj << /Length 1291 /Filter /FlateDecode >> stream xÚ­XÝÛ6 Ï_áGXT‘õ±·5Ý í€a]³§¶¹‹›È×%)Š­ÿüh[ò9gŸ¯>®Š,Q$$¢î'Hþ‰ÕÂ[›XE¤Kî¶“Ÿe²âoï)”wÉ·rå6Ñ…ԆǛäÃäýä¾%QxR}2x5ðj‰´B)ó¯“W7.ñÂ4ÉâKJ šEA:Y¬’é1[ç§sv–2J™R±”ù:%©¥LÇFùšfʹòê%äC CBšpK6\­zZ˜á†µá±À7ôkð ±D+ýp¢¹‚ 5`áÀ'3ná…|àÒüý?E¦W endstream endobj 130 0 obj << /Type /XObject /Subtype /Image /Width 1280 /Height 480 /BitsPerComponent 8 /ColorSpace /DeviceGray /Length 35777 /Filter /FlateDecode >> stream xÚì} xçyÿ¶}š´ÿÔqÛ@lÇŽã$>¨ãØ`¯˜4ƹ\š´19Ü”Æ~lš¦IÇihÝ6IÄÀÜ÷}Ÿâ  !ˆ=´»ºV«cW«½wæ?ß73»3{ÌÎì~³;»zßçAZ-{|3ó›÷{ÏßË0 Dd<œ@È0•‡à€6ê~ñàƒ8¥ ÃT@ÿ€€€þI'uO~îÛÑ£’9†’’’ÿ=jüÖ¸ñ/î¢U|Þ¶‰ÏMyý]&y¢ê$ãÿsèíû>ý„!úÌПIÐ ‚åÀ=†Ï|ãJ\ä$2å—ø÷mN”Ü_¹Ønô†Oy„çb@@´@aüûÞüþuϘþÃ?bèáý„ŽÃ¿‡Ä^0¡mÚ¤öÓÆ!fú 1'ñ§GÄ@@´@aüçÝfggœþ‹¡Ëí- Ó5ù‚¡d;Êÿ–4^`œ£D+¹>ΠdJÄßüÍÁit‚ Cÿ‰/¼Ó§Ð "#†ñHУK?ý÷”ç·<1v çðRäø¼ýF#ÿø¥|ŒãÕàÜ€þ@† þÑÇ+½ì˽pn@ ÃqÛ`xà¤Øñ÷ý¿¾ÿwþüÑ?ùΠसåÝ÷Õ ¿Ç_èÝw"”‚ /ü ü!¹yOþܯ¾O§ôR •‚UÐ"°Ê|.Òùé·Z'nc˜à¤þ€¿¢^d›‰a?ÿ7É·^xµ5~ pÒ€?À_Ñ-òâcÇ<õA€}ôVI‰¡¤ä—ì£Gž.aðøüþ`‘pÒàTÂz€?8ip*a=€?Àœ48•pÒ€?"À\oÀàÖ×ðøƒõ€þ@2”ñ Ÿƒë øüÁz´“úá_e£G—ã?¼‹o}Hásp½€?XºõáâÙsýž0n'ÜÁÏ””üì(yÜp&öâo7¢Ÿ&ÏD.W³uý‰Ž>ðøü)þ¸% ÿ®Üw"ºè—ÐÿþŸŸE_{éüëõ] ³s ~øõ&}Ÿ7àðøü)ųòëü£:f*û3ôú¥Aᵿ^ŒÝmgG2¼àW ¾¢¶Ä°üʼn%ª'_~òÉWNIÿ_xŽ}ÝÞgž›¸‘}ªSùÜþ—ïçê-1üý׿~üSûbÏqæCɃ‰5~kÜøwIÈObŸâzw¸1ð“Û&>7ñ°¡„µ*êžýÜ·G_mÌD€?À_ãï1n‰ K5}FŒFf×vfå ᵯ\Å¿>`ÿ_à‡_WvÞíe6>…\—/_f½–‡ŠÿSôœáùÆõâú¸óÆ?4˜,†íÌÕû%§•ýÝõÀ.zœ]œ½dIò³OÛi¦å6ôhã³Æù"~þ¾#LøG÷þ€¿a‹?éµdÏÿcxÒLüܯ"Œ÷Û Gºð¯O°øó}?ì™ä㢌ÑGè×П±?ž<Žþ<ö5ñÿŠž3\BAÇRà ³*Y³™ñ>==xþ"ÆÐýq+à½}ß§ŸÀ<ÖÀþ¸ˆ>¼=ÈØ¶þ€?ÀÿûÊñþkú„Äü Fpøû,ëX9âÍÊ¿ýøöeÜŸÿ§è9ú7Þ' t"þDvAô´F¦üÿ¾-)ý­ð)o~ÿºçþ¿¿Â_¸Çð™o\üþ€?þ÷Ìiü#úë}½}¿•úßcíýí¯sþÇ+êð÷d ÞkLjÿSôœ¡šýq×V}¢Wþ>x=‚ ?6%ûbáSnco'~Ï8ä¬ìãÞNwþõÀàðøã~Ÿºß&z&ðô3ütˆûó7Uø×¾‰ÿ¸}øá¢_«Ã߇Øý®1.þ{Î𜑱>v=û‹“–ª´ø[õ¬—ûcãD+»7h‘|±ð)£w0–gð{ªïÞï:ô4~x{ Ã4*òë øüþdd;ª¶b·'\õÜKçùú+´M1cî-a–Ü5–{é…IÜojô#<Çú¤ßPË~^#úøs\®íåZéÿÇž3\yñ‰gà'/½ðµñßÙH3ëp}XÊ¿Me ìB ß>ÇÊŸE ü¬~åÙñv\:ýBø”†±OM¾`(ÙÎ>upì§ž»‚ßqÛï_yfòÀàð7œ÷_åòZ\¹Uã· ód]1l®7àðø#$ç,ýû‡õx²"þæoþðøüþô$;Pþ¬Ió¯ÿ‰/¼Óøüþ@ €?Ààðøüþ €?Ààðøüå^€ðøüå_8þñK?ýÿ7ðþp½ êùÇß~£Q8(àüþ…Œ?ÕüãÑAÿ8àðø+ü)áTqò+ÿðøü2þ2àTqòþ€¿á?F=ÿ¸è Š“ðøü Oü)àTqòþ€¿á‰?üãbÿ£(ùÇ€?Àß°ÄŸþqÑAÿ8àðø+`ü©æ WlqV?ðþ€¿‚Þ• ðþ€¿áŠ?àüþÃÚ ðþ€?À\oÀàÖ×ðøƒõ€þ@°Ààðøüþ@ „ãGgÊF.ÇdøÑ=hüþúÞÏTó£3&ÏáOY~tÀàð§{{^%?:óú.†Ù9?”ãGüþ…?%üèwÛÆv/~(Çnèzã©'¿ÝøüiwþB€¡l$~ôOÆÿø¡?ºák5¬/óàEÐ €?dÀÐ"tI•ò£‚ÅŸï“ø¡?ºa7ú¹çyÉÿ¨Ð€?À_j w Æ>@Aü)àGÿ,ëXïá¶¢!Ã~ŧÁþüi"v#«ÿL>€9ü)àGÿÞ.†Ùþ:çÈð£0õäñ§ŠZßAÿþò&>¤ÿŒmÀ)ü)áGß71à·?”ãG7<\‡æÖ³þ [ 4 ðG^<¿}䉱K0¸ ã‘pûí ãD½é?c7`(sQÍÎ0ÔèG>â¥æG?Wb¸4iô““Î1EŒ?ºÅŸ= ü——>ð1ŽW?’~'ý7ZÅ/¢Û‘þ3Œr"Zó£þ:±ÿa 2¤e¥—ýa¹Wú{džãã/Hÿ™9­ùÑ nö?,üi"m#¤ßùÍŠ„õàQv Ñþ<&Œ?Ó\Ày¡ò!þÎïÿõý¿ó£G£þøàïJv[C7V€½peyÀŸŸÛ.¸2€?Òz÷œÚ}·Æ}uN‚ÿé«­¯Ir>†ÿwá¯õY¸4Å;™šÔ¼âï(§ÿ—ðGVܯ¾skoâ‚ÇQV†1ß-ÕÇ~Â_dá`ÿÍþÂvN: ø#)Ö‰Ûæ#á/'ê džofÝ·ž>Œ¿.¸6€¿|àîä`”¡þÈÉ…W[ù¯k31Làçÿ†žÜõ=ýÞÛñëé€ à/øëá  ¨8Ää‘§K0/"Ã\|c옧>àg=ùäÏ=ñë Yp.Wð—ü1ýœlƒ2,À_>Öãáö_ˆÀh,ÿø¥Ÿ~‚ÿøÇùõ¸q Úh†B@À_>ðçÀðsBÔŸ?Õüão¿Ñ(€øÇ…õxÍ&èDüå´ÃÊP39*ùÇ"ÿ¸°¿…óûR€¿Üã/€ Ád‰?%üã"ÿxt=!n 'ð§@š~õõ‘#^ùu±õ p5(•’ÿ¸Ë?N iç`„¡òrá»__ØØ?иhÒ·/ZW…5ˆÊø*åôLøÇÕýQ0øcº‹S€íà…þdå‡W¢ ü‡¤ð†"øSÀ?.:éÊ?®þ@! à/_ñfcÏ ÞGVøSÀ?.ö?†;ÿ}Üz¸(ŒÑâTþr?'Æ^* ü)áôáΟ°_•€¿ôb¡I®‡¶aìyQjD5ÿø[¸bë—ø™ç'‹?,PøS"ô’û ̇lj®‡+‚1CôE+)"þq-ðǰóa,+àOFv– LóÏÈ®ÇÅåß(Iñk‚?,abþÒÉ íìG…'^OÔà¹èX ð—VÆãOx=ì|˜ ýøË þxßš›É“1)eþ¨gI¯ÇÇÁ%à//øã…£ä…ɘ€¿TòZ3ûQ–IÄ×ÓËÅ^àBþò‚?^ ð'+Wo0˜&%¾šÇ倿¼àO¾&cþ’Kýó·=²IƒõÍPøËþ±`,à/§ëqÃDtÀŸÖä a45à/§ëé†úÓüËðâO*0ð—üqE0F/€€œ(a'Ï R Hÿ1˜Œ ø“•·4Y›ˆ¨#}áeÙÉ B;€ ð'#%Ú¬&¢ktáåØÉÞPü÷%Z¯§&cþr?n"ºPCøÂ˱“'¼AÏü÷¹Ò0ð—äC¢¢ÑzB¸Æ».á /ÇN.º¸Üï$üãj*þD"b-àO5ß=P£þäØÉÞ _þqíñ'(ü娽ÒàÂ˱“'¼A¿üã9ÕL&cþ$ò ávù7˜ˆ®þdÙÉÞ _þñàO,a Äüi¹-$u;`":AQÀN.•‚à¿ÏÕzh(üåýr€âsƒ o=0ð—D¶k¹ž;þòˆ?‰„X0Ÿð“-×ÑùÄŸT„B@hËü±²î6í미‰è6ˆ:þò‚?©ÀdLÀ_LÆ´ŽËIïýIC¿Ò”ƒõÀDtbø“åÿõbüën;ÃØîÅü ð—L 0™„èa„¿ß#v®sÿ”‹õÀDôŒå1î?Æ(àå*þõÉÃøÿ?lüºäÃ(õRøKr«ÃdÌ+ÅeIRT¼øCD®LäáœàÏ E0ÙŸà´üã#9î,þ|ŸÄûG=þ‚™­&cƉ—†wü}ÿ|<7û/LD'¤ÿäøÇGpøû,ëXïÁF;þh›!³¹P( pTMI[U‹Ï_c\Ÿ˜ýÇMD7Á ®lõŸÿ8ï|oÃló?^Ñoü… þœFƒ±+3&cF£NcTœÃG=é9ùhuŽÖã3ÂDtúO–ü7Uø×¾‰ÿ¸}øá¢_9þXXXXeFiå‚B@l ÷›"é&øcö=ñ©1ûr¶˜ˆž™lGÕVvEüã&ñnÆèG>âMj(rüÙ±þc­–Œò|! iX¶ š'‡&øËízèv˜ˆ®µ¼WMÒøm¦ÈñîâôŸÑš‘“1ýí‚ö³z„ˆ€ ð§Áz`"ºærþÇÒ¿X_üøsøÖ³ûi!•iÉ v5¬&c"¢^:“UcDìºî‹!…¿3÷=|¹ý¶Ô/D¿k% ÙY0¥Íß´1Œó3¯'Ñ5Ž7j6é›—þ‘þ+E…g^¡7ƒ4ˆ@ˆ5 Æ4xm‚ö³§°wÃÜ+ÚBE?µßÕ†{™ï»Á07Ë|=˜ˆžR†’L%SÏ¿3› ŸÿYþö° p1êÛp&`F%¦¡aRì´_[j/,Ì kð³šò!ú5çysÛ‹³²XO `M!ƒ¦$ôCêùw¢K¢gþ]rø«+¥¨Y­ŒÍcá¢+‘>Õì°˜ŒvF½rõ>!ζEŠgT}WèÝwð £_4ž–ä† ‚(Œ>Xa"z*õ—„~(þ]Ñe#É¿«ò:çý7EýñùíTY]¸ÓØÁ>ç0ÚT‡Xh>%Ú^´å ô@”è +oäB„öHñâ¯D þܯ¾Ïí‹¿|³«ó§og£a"zRáÉHâ«Ã3àß]’8þ]]í¿$ñçXÄúÀåì¿wˆ ²˜Ô‡òмpÈ ü¥/n pª²£xñÇkÓ?îKÿ]Ö‰ÛçßîdaÕwGVëáæv€ÊK¿€Íþ”A)ÿ®è’¤àßUóGaàÏ»ž]ï,ößÒaâªÑÌ ™ÅIˆ#:hSÄAâç ]¬ø;ôâE÷Þ§¯ÿÝô´ø»ðj«ðÇËKfñ׳[Og¦Yºâ•¾ÿšKVÿ)àß]’ü»Eˆ¿ÈavÁH ¶´VÌw+ÚɘñD Ägâã¡EŠ¿ ÈÕ:8‘iz0Å Þ©Ÿ_²yºç€îúÁ„ ÿØ™Ýz`"z¼8Å”n9ý§€Wì¼2|ðw©ŒuYø:ë¼ %j£,B!`qÑ´ÅN£DJΧŊ?¬ ÿJU’K|ˆK¯CŒ4ðäp&m>WË¿+º$zæß%Ž?ë\öž©Ä…iÞž6«v‹q2¦§- Ñrk¸Xñ‡r{Ÿf"ãs¿gªY+ÃRÑÑ3Ü#“˜!B5ÿnÌlÒ7ÿ.yüõ}Ì*ÀÍœ[á³ò¦tD%¯ _ü[<“1E §jÝz4¶qÑÓ†ñE‰¿­ã\»>{8/ë¡m0=z.ºE•·Ù±oÿ®ø leಆÙyC#?¹Km?\„…ÖY 0Ô ü ¨? —º®˜ÂâÞøØ_;’§õpE00=VvƾdǾQXü»à®aàœ¶³µÅÇ Ù 3ˆ ku7~MÆŒôÉ(‘~U…Àÿ¬rg‰èt‡4Þ$°oèwL€¾ñ×<“¢Ê‘¼³ qC¬*íi>zh-ôY ny¢%ÒkÔÛØžâм§7 úÍ9[± V`ßЭi¬süÙç!:,ößÌËQ”±Öµ:P(,hB¬ôDJÄ©7F|bø;8æS_;˜·õÀDô˜²“l¯¢æóâÖáϽ’U~+f#VTš íþ*ûá 2¦ˆá4;º9‡ÎÎ)üÕ>tÌ}ô˧ó¶n"ºu8ODrÒr÷•žŠHáïÄC5ƒÇ:•×õt]¯¥â]Ú"?ekȤªEP ;yÑâÏ6‡¢Ê{â”áý¬\p¼”¢Ê¸*\ßY5Ç—ÿ¶Š‹#:0v­HW”P€øcö?ù©'æw=üÐÂá7ÝgN7dpPe~Zvò"ÆßàFêÜYqÿa*jç`VTV58¯P Ú k2f¦D D(Jþô°ža:§Y’µ+Tö^¦e'/jü]s±znW\,Á„Š­F¬¨¨ŒeHè†èS¥ a2¦ˆè@ƒje¾(!eUÖðÆ_ÆÒ7'¢óέ5¤Äùr©¸ rìäÅ¿ž¥¬Ü§ÙúØ'©íÇ(jÞ`#Ýô2…€zïTôkPç`; ø#¹ž½õæÀM1)ëðè5ª(JËNÎpÄ’ê~þ‚‡X8> âß‚šá.,öAdÍ9_«\EÄdL:FtУ•3%_•U ø{+ßúëP7 £"˜A“Rz§ŠÖ£´ìäE?+òWKí4ŽÆ‚£óê0¶EPlAÅp˜Œ#: ø‰O®*«@ñW’w{Ô3ÌŠ`ø¸ž¢î‡r:À´ìäÅ?ÏFÖî²KÿûJ9û$Jt,0£¿¼¬­Èî@&åÅÐE™^ cD6m»t媲™ŠcXMDçÕ_»²{©Kqå}Zvr}Æ_Èâï\ù¹›ñiLs0â[DQ5Ü&Ë7µ+7õ\HŒè@yäÆQðø3›&œõ' «‰èýêÈ…ùÖ#K:¯F;ù°À_¯›õJi%1!Ì&Û| ³¢2ÑÉfF³ò¨³@ˆÐž"½äˆ”ÄnRÄB êÈþã‹`†ÅDô>µÜêBë‘~,}ã/xùÀ­UÜΪ¾*êY„GÇù…Ù.Řヶf}•ªÒ. A¢%âÎûx¨âÓ¼QÔYüê'“ìVìä[ôC¨wüÝœÃúÀqiDSiD¹™8O G•«3=’a8U'Æð¬›’çZ*(ª´îV%UÉ+Fo›Ð^¨ÔkÔÝdÌ`'q¢.Œ« ñ§³õðÑu]ÑDý©û©3>Týã>WÎúÀ’4H÷BÖø;гâVÔ®vp¨û÷Ãék2fX0a¦¾Ü.HUY*è?EÂMD·sŒtЛª^¾òð— ]KÏÞ¤Ú$¾â:V®ånZnŸõ ñh¡Sá‰ÕQ! ˆá´;çŽAO^ñ‹Rÿñç´ˆ'¢ÇzS#ºâC-üý¬\*™¾Þ‡aP§¥oñqlKÓ j›BfOÝLÆjËE½sJéΧ,NýÇOD÷0E*tG6qc¡òôŸâõÜœÃúÀç%izD‹ƒa¶QÔ:Þ{ëSéBêb2¦¶DJ¤Ë˜¿áeÅ©ÿŠ|"ºà:e¨öš2Èœ oü n`}`élLSDMÁó9ç8$¨¥ýpB!`þ¸àC=š(Öêù R¤ú¯¨'¢ ¡óÌót|å½³x®·æë¡C¨ä¹Fb¾!B˜ÁÓˆõ<¯Ð„bè°ª ‘¯è—vD¡¾6Å‘ÐhYjðGl=E;=Õ 75âÖ Sá¯k)UÞyJœñmD„0.ó\ö×~Þñ°«ÛYò:S3¢ƒw÷Ù•ú_#~ðGLKpE0~¦ØDô–Éà2ê£H²ð<ÈúÀ¥'E•C˜f~»{ E]›T¨ô`@YI?¸*ƒD~¶«w¶5?Ùóã|j¥{4¿§ç~$HÑê?Æ[œÑCmdH÷uA•XXø£‘Ç»GüÌeL>|\dÒYÑ®ë7)ì‡ËÓdLÑÉMöt ÙðQÕÚ£ð¨Òü©§n‚ü$ak!5BÂiÔC޼Àð7¸‘õ‰Ó 6äüVswy€»{é!ž†Ã¢È®Šäa2¦ˆèÀIðkƒ½®–Ù-§VêÒæ©.¿ˆõ_1ND÷[È¥Êy ½(þè³çoJgƒ¸V° p3~bÛjWÜîâPr; ÔrFˆ%":è$r£ùª¬V¿šÚzÛÔùüÎnþHíFæb+‚ñ›I&ʺóXwUÀø[‹°D!Ì’^†©£¨9&ɹ5ÛݾœNÆÔ†èÀÕ©Æ nЉtq䦅>p^êò‹YÿñYÎâ)‚ñ™‰Þ&ù¬»*`ü²>pµ8 RË*ÀJ s¡Œ¢JOÓqê@Qb#‡“1EDĒδ?–ó0­BlÚ…¼ÙAÖ°UX`Që¿"›ˆÎz#g%uWÁb¹Þ9ZφVélDSVLjXQ&Ü©¦E‘¿¶&­Ã±a'y†SÙÍy˜ºE™9šwÂÌÊ‚P<•làðÑ cÞ´Â[ÄJПê®BEr½s¶ž]¬¢[)Ò˜æ`ăYQ{ÚmæGÑ(ÉÕç¤PDt@Šá4â²c9ë@\—VEs“ûÆ$¢øûþZg÷ƒ»¿‹¡Fù 75æ€-Ï|¨Š?úlyyç¡Ý±ÈÁ Œ¾vˆ®-¥ŽÆ\ÍvÌÂæS4$¨ýdÌ!k4ðG(æáw˜c9‹#‰¡áâíM›¢˜uΓˆâïÃØµ:³Šf"º[²|Ó,þºYxQ¬$¼—U€‹ÌÍ-âSÙ?ÀêV똘ua ±bDÄNûŒâœGòux¥«Œë:׌øDñ:ñ_Ò™þãC\?]Ý 7’Ÿ²ƒbÀêýø8;o˜F ŠÝìÃ@gú‹Ö²8ÑoP”ó0;R»Ó‘n5¥ö®Üvfwü)–‰èýj')—€%Ÿt€…Œ¿sXxMìN5"B˜Züðüì(c~P DP`ÿh6“î7%:X±œ‡Ý-¯±qv•„”CÝø##Å0½O;õ-;ÈqAãÏÝÂúÀ³¯ÆÔ×bVîfor{9EU :Á'DݺÓÛuMÆôe8õv™b9sOòôXD{¬ 7¢𔨀½¹ìÌ,~ýÇ÷9ô2…+ zSåÉpJ7è?Õëi`Ý_4™àÛÀ*À.¦kû{½PË\O¶n &cŠN 4û„û}ŽrƒÉA9TSA-™{4R’¨FÁÓÎÌa ÿ"V•à õ&üí£~âËzŠãzçt=]KÊ:ÅÒ ‘Cˆ¿ƒñ‰XQ‘6°…øi·0â“1CÝÑ Ý‰ Ô!Éy$—Á#3Ùã§fIòŽ\)ŒÕ¯ô+rÒ™Icø;Q—÷CODÏpЛúA>lä‚Ç_ÐÈúÀ¥µQ³¦¡Œ¢f63ÌÄŠuÃ]\ ÚkM[‹Jv2f¤ ÑA¨¯_”óHeúyŽÍÁÚ•ÒúÄ Ž’Txî:3Éàï“¿A§âÆ?NЧ=PÈÑ3ô¦FòƇZø»5‡õ‡¢¾mÛÄM3æ¹ÔjÑ–;hvqõø½éŒ°ÁB@79¢ÚÓÉBÎÃÒ›âó:¶—bÕ·êÖfôk³è„0@WZEœ»ÎL2ø›øËÿb˜c«i¬'á¢äwȲîÕ_4ðžóST øso`}àX¤ÿcÔçgÜ[%g3,˜òi+‰MÆ$HtÀ1[ 9NOò¥…›Wp†ßêVö¯‹HÎs‹÷£Âr{~À—ö ¾‰ü¸tã¼úYOü–Z¨ѳô¦Fò4‡º(ðG··¢Ä¯p³¶±-.Y_B˜Á”ÎÌ&3SÄpší¶æé0Šr})ËXj9í·„/þqT²,ì-É®4’«Öt2ø[Á„^ûòú­OýÇ#¯à&¢ –@.hêy¡,üu.¡¨ª¡v±˜ÃÿÚËEµXPHͧ+„ëÍz2f„$ÑA,ça’QÉÕåHû-oÙƒkØ¿Ëëã|`T ãM·¦µ¦“Á_ {@ÏïÆ¿õ©ÿøªž©Â°=—¥P2ÄúÃÁe‡cik3)ªìû`h!E­Š™_ýB1t:W$ËɘĈhw»3–ó°ö§PᦽËpܯUò-ÈÜ#:ZÙ„KaÚÒYnñÉàÏ ˆnõÏC‘_²c•BbЛÉÇêâÁ_ß-öN_#ĺ8B&€˜b¢¬¨¬&± nd:…/̱"¢ƒ¬®f ÇËy˜ºRmîs) §=ÖZâÿϵ ™€FÑNááîFS:§FhMë%q¿õ§ÿø‰è…T# zËÙ„!ë–Ë0iáϽùÀ7ø¿WaB†©G¬¨§¢‘ÚÉs’{Ó\W—p0©7þ DÜvc,ç‘ÀlÛ®2¾Ü%Qû!Dÿu,‰7–®%šoM×”›ƒ þŽÆýNç,,œ0î)îᯠ9Ò¼GÑÁŠê/‡þhøP‹ ôÙŠŽÃÑ4Hh"„éaõÃéýïkC°%]/D†…€áÑA_6ñn§YœóHmF^¡í×–âGpTP䆇Íʆð °Ö;þTâä;oAÛ”œé?~"zÞ'Þ* (µåŒ]´å眵¸ðç5!þS!Ê\Ç ­§*Å؈‹6´Éïm™LÆŒ»3÷u"aqÎC>mh笿2c&®¡—Ì5ƒ„ìÊ2áÚÉþöŽ^™9;ýWPÑ–¼ÌæÈùÖ"Ã_ðò/ð†Ý-ž†®1Æ¿p¯q–½³ÕOÆ$Btàs˜b9³#%­{CŒcŽûm”÷«\h0@éE‘šv*k‰öiÍÍA?ŽDmú±‚—³BxtóE&wú¯&¢ólè–œW,æšµèðwcë¯áokÇ"ž‹¸eB°®äÛaUŠˆ2#f«XÎÃîJ„Ðååuj'¥@û!ÙŠ`­Hq-ÑioF¯ÆÜDðWÿíI‹¯º\W«&½V¯àå£þøàïb¿îûãà4hY¢W0Ñ zSeÁhsÑ1þ¬'dCÎO}àEAVsIaïÂe¢PžÐ a’縉Œ)":ȘáÔÛmŠæ<R1[!ƒîø!ìGmQÔXz¡T4 /·ëHÊûÀm¹9Ù[—~ýÊȯüæ‚¢ÿé«­¯ý½ë«´tÞ뛆_¡LD÷æOýåz «¾ðGd=t]9ë×p8ŽFD0Ø>Ú̪ś¢ûŸï©H£=”NƤcD™3œFûåP΃N€¥*µ:¨Ä&Zq/j·¤mÆÙõj:%ñ—QV†1ß‘ ÒÐm« Z~ó "•\IS!LD×`Л*ß;|¨ä*öâÔº:?f}àEv^5#BÔ|±¢9|&¾"+¨ÀJÓ˜#:È4ð7å<,òêÆWÁó»lQ1Y͆¢Jw‰·Z†+…±Èæ4áæÈ'þžof]Ñ;Ñ"ž?Þ0~Sô?zSªêª†& «&¢óƒÞly+UÌåB]áØzh«ÊxcÏ:—#„áXQ׉"s¨Öƒsr[‚ɘ1¢[fþ¡¾6c,瑊٠éì´TûBNû© ˵¢fÅCI¬;Ù À€†M ùÀß®ïùè÷ÞN²€þ[› UyÎÔ§™íÑ•'ž'ÕêÏžÇJíN!Ôþ®çz%ëïãnY†cEý˜;­h“éd]¹Båt“1EDéÌlÍy¤d¶bżµ”ºÂض`í·S=>:fÆ5ƒÓ>ä}à>íȉò¿»èÉ'ÎmƒSK %[D±Ý€ªå÷ig¡qÑMúˆ®Ù 7U:8gSõ…?‚ëqoꨦf7s°Þ*œ)¥Z“ûw]2 @(L:!Ò›ÑÀlÅõy¤b¶BGÑ€ô8UÅk¿ŒÙ|KÑ{ÅÍ ^þÛe}`íȉtÆ?NÎ#yƒvtw>}Áôk8Q½Ö¾X¼ˆç/ 6”ˬѬÌ9¨?Â\— ¿øD°E¦d%õdLÚeÉŽè€6‹s2Ò6ë½9Yh?$û1= è8 ª¬{´"'Òþ7–r3dú5ª}ëÕóDô~-½©‘¾1Ïóü™Î%¬¼…Kƒ4#B˜h°_[õ 5ËŽH:03;†Ó 3Ëy˜:åµ ÊyT V>ªlO6ŽA jY;µ4äœÝ5ƒêtÏ&öͽ™ž&2C³]¿E0NcGQ&u9<¤ot·žàÖ.ã¸Úçq„0X¶V\[€‚ êI¿3¶‰ÕD 3 ¢z°ÝËy´õ§ö¿ XëX¸${íÇðÍ sÍbÕjÁ;-Ý!£5"'Ò#þügÙ-¢¬šÝÓ4)€ b‹ß¬Ã‰èϹT'=9áCÕþú +ˆžü!ä.žÁ݈f#¾ϲ‰õÇ’žœ(¡0쌒’ªÏ8z.瑚٠m„Õ³©+Ès_‰´_ùV ¦Ä©­9܉2ɹ~@F‚èsÿµ¡Írs«F& [§Ñs0èMäd—îð÷ÔÄ¢X[OUy×â4&„©BIS' ñ¬§3Ã9e¨=õý-Œ)b8UMt@ ÌVØ ”1ýhnŠÑrƼ k¿ƒd"VdÎG—i>éf¥ñÛ·„êÔÿ@ù¸Ùhljvg÷éëÈs5éHù‚r1„Kwø‹TÝ5ƒä-F×±>0OŠ… aPþ7ž)J3Š vÈÙr!2 †²!:ˆ˜¢9ùîÎ*\æüq5Q퇖šAÊ®&ºeFsʈ‹@N,jü gÍ™s^Ù¸PÕ×_‡Ñu§þ¢Ã—4%aÐ!þìß}¬Žh¼…ÍŽáÈ"„)Å~¹€’kŠð•¾©£>ÑB@_Ô~³ªŒOD\vQÎÃ6 _g€r¥ÛN¯$¬ý¶ÐdjW¼ ,ˉÃó¡í‹Òoü¹ >¢M ’›ˆÞÖ®Ñ=aèu‰¿Í£¦‘D]p?U5´üR51Bû‚8NdFhÏ”ÙòÃQ‚žè`@]Çç0áœ.39d,{ú—ó¨<~k¿ŠjÒ ÃT|3Èo–¦ô5`gÓþL†ðÚP%àfT M>ß§³"˜ˆÕ»,›Öt€úÜû§Ý³ä§^G>ðZtq1!Ìäã O°½‚‚Y—²Žîi?“SU•hd€»š\Î#5³²Î/Æ9ÆÓ²"Cíº‘îf™âJ ?çÔ§.…áÙÙì‘"ÅßÐ<ÃìkÑ¿\Ë9¬xŒÄ-ŽVSlh]‘ô¿ãjG¨WÿãäÓm$/ð”òEöV/ˆ…ÝnI®™@â’šî¥Ç˜Yà/Ô ú±Ú×+Ôí9Ts ÝŠî@jVµê*¨ŽÔ~&Íq3È,qº)ÒÅß©¸gxv6r P_ø»Vf`aUvAD¯¸Àγ™t0„£­&}ÁƒÞHº«&‘9OÄw܉¿øfŒ¨$xÐt]Y•wÙ¤v0!L3ÿüYjƒ~nÃiKýÕ|! MMô:"ÉyÈ÷íönÀ995¡–¥i¿¡Ë[v™Q‰_ûœ«i^ºÕBWG¤>0.…I%ÍÎF–¬We7 NÉXʘ•Å ±„U•Ž&¢k0çÒýÆè&BÁ+‹¦t€:ßx=Ï(w\Σl§•ÎLû]M•zPŠÇÔêäŽ2]‘…j'>·çbÈõ$_*ÏÎÖ¥/üí,1˜æŸXOS5Od õ-Cá5Ù¨pfwŒUÑ…AoÕß•‘$£÷>-G0è›íõ/#x°×+-CiâPY†c: ¬¨¬«Š*@›kM¡}”oEC|Q ÎyÈ1[±z}=—óp¹#M¸îo¶*íç8µ¬%K.[{ž‹V÷S‡;gK·W#xƒäøh¸-ùr‡HÒS’Âß íìG…'’XOÏrÉ ÑÚ!æ^ ß³ë×ÅDtM½Eu•ñ›ª¼½Ž`Ð!þ$²ûsS Vdº»Y‘bq„0Vô\×böaq€;ç½YYÝþh‘4Êyå>Ë[·Ëy°ê—Ó~sjU@²c5·œ=M•m³ûµ±µ9‰J!¥Í |4•L’ž’þÆãOd=ÜuŠ]z<Æ™¼$µÕ€’ù ‹ÆƒÞèÿM ©!ªñ'Éô{6<Þ:öfß;àçaʱ½åÛB­Iðg…Þ^[¦À ½âœG›¼é0¸&¦6Ø`ÂM‹Õj?ÇáÔñÄê2Ðg1ºW³O·¦I^:*ã›A"ݲŒnrô”¤ð7Ô³äÖ38w]4à‡ç¨n5‡Q—I0ÿÑùAo¶XTÞ{…€ÝbÔŠ6[gø‹“P§l%wÀU¬¼ØÎ:y1B˜sIBÛ.³²á)‚*½c,çÑ™.ȃsóN2áK Ôi¿ð­ýǯ¡¾æÁÙ»Z’ 8RSz¸³ü¸|¼2Œ›AŽKg’+sÃ#)ü½ÖÌ~”e±õÐYG!ZÔ‡˜g×ûpÕJ'9Ÿˆžó!»1¯ƒô 7cbÄfíÈÓ¤Le ¶ áÏe¸çã|©•ä@èe}à²Sì-Ž+6ÅÍ-©Î ò½ê©zéÁ¾“å<ÚúdÃæC\΃Zu5,h¿¹Jµ_Ðî`-“¹¾rjÎþ`ªeÚ¼*ªÂÍ ’J €•9'Aö“bÄ'…¿+7LŽ’Ó§QTà°p騸ʯ«…œ 8”ß"âƒÞÖŒ8™øä¡M>Y+>TÝá¯þùGýÝ›/Œ»Jî˜[XoOïÜ! ±—-‰ é÷cxøpùž ýê4‹r]ò¦_ç^Îïog¢Ú¯NÙn¹º}f…yf¶ÙÂ#/JöÜL<±"x©øEVýƒÆîd‡ßKÄê¯êŸ¿í‘M$ïÈFÏ Vœ0¦• NzòÉ8ŇՈu—¹§=|Y³Å:µáCÕ!þv>¼/ѤZ5ò=rD`®õ¬ŒÒ Ô³¹ «|*â”lÀ†­8Ú®Âç4Šs²;{äÚ!çÁ~ý|Nû)ÚŒ=—6¡ûóæžÅÇÓÏê©/g}à½ònVè ª·9/Ás€+…±´Ã£Žùw}h{\½‚8¸ó–\bH½Ð¶œ°'G*áAo¾4MËb‡& äzÄ_(™ÁÑ9õ‹Gˆ} í:Šü½s½B „a®ÍŠgEE#‘oÒ§ðþQÎÃÔ-ïÅúOc…G­öÅ´ßç2òo_ÉÚÈÕ€UÏø«~üÙøÒ¡ õŠXò͵ùÀ͘f×lO¦Â]iÈê]’œ‡¼´ï.§¨Q+”Ó~‹.¥qChË¡ùó|h qÏñ«Þ*‘šRÖNSÎs¡ýÅæ+G‘Ôã#°!“Â_IçSÿÑFÿ5¢‚ÌVþL ‹Š¦ÚEíùŸˆNvÐÛ­™Š^F}>ëÉ>ä xu¿ð’{~•p²_~⩃§ë– -§öøM(µW{¾3~9ç&Û£ÃQÎÃîNSh܄ɜ©…\:ůLû…oàê\6ÏÞ}=›½Ï<ŸõÓ”âf…ñGnOŸü†L ŒwÊë^mì¿ShO¨æï9/šœ²ÄɇÏ,$2·½û© ÙAoëFÌWöÂU£®gû]< Mwü“áÏ“XPD¯5X½@ø4"÷aª”‚ã]XÞÞ;¸~/º[âìy»L±œGZf+>çA­kÁ—Ï[;SÐËk¿`èÈ,ÖlÛMQs[ÜÙî{C^Öž-ÂðZÔîZ/YƒÝ„KaLÄ7drøc"<ûmîI) nŸÝ(Lÿsd+ÒöÜNDï&©þòˆâ·ºìWÒ¼¿8éšúàaRXìG>ði¼«/çc;ã{!°kB[{Eýpá~«1–óg¶bøRÀÔÌýœ'Ék¿›äÞækÚ6³±š}Ù^Sµ•ˆ³ržõ¡oåu+2·ˆCŒ´/…銤ØÃyÆŸÁ`f Œ?×þ]UmäoF»Øqa\T[ö·"?=7E0d½Ý|èg¹eð"LÀ[ø‹¯#Þwÿb5ó-+YxíÚÕçrÕ^ýˆFjY<>‚AÃãÔ×eå<úÓ„ÀB+ð.ÙSçU¬ý< 7P¾qkUUCnRNWë/‘ÿ<·9Ó$}’ ¶ùÉnÈ…RÕ0SŠîFAÀýfbfT'¢ ƒÞMvïÈõâ x»hM¯·¾ðwdÜ™8Gî½»ªˆ}çäи.³–Qy#§­’°¢âpgða&`QÎ#m2ÖU3'ÚçWÏi¿e2Ú/ØÅº¡k»QEb„ld(àg}àrùF¥Ð´¾cIœ4c‚ÌȵÓEŒ?F ÃâÒ‹f,svòæŸ;름œMDÏÙœË`]£ùÆ^’|¨…¿Èªû¦ÜŠÛ¿öüMR˜¨+c}à&T†WÍ!±¢V&„û…ZÄ"ä<äIM‘Xw”án‚ãp“ìîÁßÎd7ª±Câg8¡`ý}®ü†-±«dGAÒÝ!fÝù¨BÝ›Åt¬KNTN$ç\&»Ê^¾²ÆÆ}ÑØuˆ7ÛÉÏ8q¡,@üõþûÿ'Ù?.?5ñ:™£c}à²å¨–D'cEU (ªªÞŸ^û ^õ°ÿ…f–/©ñ1¹–ÀÖ.—o§nENûbÉùöZ¢Ipq("£Ôbâ߸}c Ø[áÂ& Ñ™Z3W0<Óš&y/¿ÆƒÞ¼¶¤å°± °=Äýš. ½ ñwkÊ")«îšAèÂv!¿Ñ+Ïâ« È4+~ÿQRsl6F ~^û%Ö›Ô¯)¥zQÑÍ5sžF@ÐèÛ÷ÊG¼0O«¤$ÌoõR8£ ÙøËºÜé¿e\)`•ŠÏic7¹>¾G0ó™ÑÚMD÷‘ô– ÿ=gvJŠ"è>¡MŠx{3_ÊJ/XüIÅü¯œ%s®u¬<=µ¼‘´K:RNL[J¥9†éÙSе_[ÜK{N¯hGMÇuukÎåšüRlµ­d}à˲¥€¾%(|ŒIbìIKaz2ÉVýŸhW`¯êzî–¾Ènoo{ÌÿP?„þn¿Û•1£²Ÿ¨b=mh\3Ç}ÚƒÀÂnst¿)»Þ, &¢ó¥IYSæyÞŒ/úóØE9˜²®Æ³ ‘=°Œ/ G„à€U²åø`kvþx¶|¨ºÃ{å¯)¶ŠmÓFVмߌ•dÒL7†Và ¬¼‰b äI4Zëq®ÄñqƒH£9vâØ"Ò~!«k6EUø+©Ê½>šÑ‘œ=ÒYNí— Ž×£<õ¶øUãºgÑ !$È5þÞø‘mÒoš_ËiüÅ»Ú$œ4C“êp& R`™%=* ¥[©AoÓâŠþb}â©=ø³jüìéaÏIp†BB"Dаdyv‹ fÅ>¤Oüý×(ÅŒ²Lýóƒ±ñ™ ×È„LP«çì! s«2+*rgÍ¢.b7¯ýD¡ìæ¥ÜÌò&s„Ñ›lF®ì+¬¨Ômž´òK(ïrÒq!Å‘vRø›fþ¦šy&§úÕz1€ƒ€¨ne<‘ë3õerSòщ‘Šj4è-Œ€À×¼XúbªÞu9=åñ‰iBQô‚5ã²$Ñ–ÙûjÙñ¡êMÆS7D–©ºã="%žô™²ÝæÒ! 3Œ•n݈-‰ö+Ýíf÷^ÙÒ‡Þ~åÈ¢£6šÑ¡XîæEÙR@”¢Ê¤Åà‚»gê;¾Ç^©$…¿ÑLÀÐÉLʱþãä<¶ñ]+…Aª[WÌgÏ$ Z£Í ·`IÈy­®Øg{1½GéN! Ô¿ ôŸ©´ íEƒTQ®‹¦ùþ,S&•M\'M‘ÓBvЛ qº¢9£]¤Ë‚u˜Öw£¨£ˆëÚ#ìváМä*yö!G®®wnð·s©Ê³{¸ûsÓˆXØÁ}\kŽPweæÚ8Ï•U‰¥Û%(¯ývò×ÙÕT šY¾º÷Œ“Ñ· «u™ìr‚Jh‰tãR–ªbÒ¤ðw澇2·ß–ýG£ÙY±ÀA@.vã 2¸Ï;‰14óLTYˆ‡fˆ“Cí±œ‡G…È%\±Ú*}³}1b¿Œæ%Û0T&§¬ô3Ï>äÌÍõÎ!þæ)åݵ f[õO¿g ‘£º6{÷9v+ü®h }×¹tÏ©‘¨Z›Dû9NÕ5#wÙÚóŒî%|”õëeKq3È<)Òpï«›=%ÂP3Dgõtëq!³x®Çbp7ÝkJ1/@Áu 5ÌœK˸oÆ(oÝ'–i· =G-M¤vó£ÜxY”F-ÒÛËþ@Gh‰¥9gLÍÊtgN¨ëú«YŸS^FÐ<ùË›cÕ>2ÙJb9.Þ>(¾—/[}gñ}ádÚ ûûªXUá+§Ê6|Laˆñ$믑»cq3È,)Êým˜úÔa|!1iáï˜Á¢þM|) ‚Hÿ2!Èø…ŽXõ5¾^"Ñ zÛ&l<Àչ잽«%˜¯Ù³¨"“d }¶Œºyþ€Ü²»‘§SŸoãfØ á.>&ÝU`ø»Qf æûÖ]U½sz·Î6È:֜ɕú­¡©·]% LD'5èí(¿ˆ"÷ãrF›[¬Ó¸Ú¡¢&毻kÐñöUP›ùàš0FQ;£–@´L<ÆÿŸ_²e³ÌÞ 3Ëúï?ºy+Ê,¸k‰R˜€÷! ã^KQ+Cɵ_0p’5û®T³ÛáO8_g±ù¤¿þ§Wž¸”É{;ΰ>ðR¹ÝØlœÒsÒ'ygË<(Q€ŽÃ߀aæ¹zŠZÔ¨Þ‹†CŒ³£Ú‰‚R‘6ÕQÀ¬'¢GÚ$[‰r?Vƒ tHjݘݨì`LW÷(§PÀÅýf]ä5eê)]‹I…¸^qTçÈ¿bkv½ ŽÌøP ¢ÿÒ3~KF ¢Ž)__öÖ;‹ŽwƒäùÔÂè?¯~KÍg¼³9zgî¾o*‰ª×Ú-¨ûaWÒ e^…µßÞ³WÑ õ5jñ±ö¼?ßî©·¿¼Šßõ»¦>x,“išEÝ8/»_@О+5j\&‰KãVÔ›üu¾óÂcßE¦ˆç·<1v ·ÿîÿ«ð,¥fŸT¸œK•!¶š#¸PÐ|›˜Ù•Áíœa1‘Ao±Š¦(·©Iz3 ±0ÇÀ.ZÎùlíh#˜) 7æ Ñ)±p$=`FÁ7*“$`,¨ï=×)þRHõEÅ!‹'Ÿ=½)§ß½ŠÀ’é öW'FdZ9í·ku)…g–/ 9ò¦üÂÕSÿz|¥øû÷Ü—+Xï9Ö^ —AwT&6ƒl›CÑÂ|àïTC¯}Ž}ðÒ>ÆñêG ë Zo¢£8«Ò{lCê`“‡VðYrŸíWerÑ3£w½e£þBÿùM ©Þ¡èVfé“f½.!›€Z%Θãœßæ¨{®-£–GßäAM–3ëExõð¥0F+~?¡÷<¨wý—IeÃÝ'cgõ}¯GK6O~µÀ¢Ûq}Óܸ²üÖ•¸âe.ªs¡(羺Þü)¿Úé#ÇWÆ;(ÓîٙɧCÉàfÒzéyïæ§sññ>!¨|ù=Ÿf¬D&®åÞ$ë‰üöwÔ^3U¾_Ýõ@'eª ½…A ·µÓBß—YM?\æÑI̹´Œÿ{!ƒ“óô¹a·÷>-‰–BÑx¥5¥;%I/Ç1"ëÑ]²]².áÜðc2Ïea ªí=×1þ’FÙ¬Ô¶òR3cV:õŠ@&"°we™Ôä¡[±Q8]TÛæÒuõùcó‹ÔNõ茤܉'¿<%“Xã\Ö^ëJ&Œg„p›¬¸ƆïôÞôA¨üàîúé;Q£mDÒõliìEõLÛœªK#'P`e{Q[ÈfÞ|ó¶eÎëͰ¯•Ÿs™Õ ·-#+hÜχHÚãlI"¤\ÔsøÊÌŽäM¾a4ð&aRšóÄMw”IFžûqÁ@ÞíWǪ[ü%•kwTdòu­/=y‘„’ÁÆ¿© ÚEûnV-68=yS~ÌÕ<:ãfʽà½Ïflè*§*åKY˜—JCB—¼4a¥çL[•ü­0|Ap¸èŸ|˜j=‡RTÇv‘;§ÈpšO-Àû`UMUñ6ný7³{ÅòpïÏ©-‚!1èíä—.ÄÈýX.§K<Ç•`ÏëÙSµ(µ©ê(/=Ľ6Tƒ6Q„‰8ù¸1&šüÍ,n$õt€zÆ_²[.3†AzÕÈéô¦ø V dÑ-KqÜ÷n¿êϧòûÒ£3Zd_ÒðÄ«™tÃ\aíÝJŸÌ~B³fƧXøâµ.´U ùÁ_Øôoò‡ðî;’›Å`ˆMr=zﺓ=èvµ« émÂ-(8KØ@XÐ…£]Š ¾&˜‰úËrЛ—oBÆW/Þœ8®„«ê?Úþ¨ÊÔ“TIÒBÞê3£¨áÇâ×:„~b€ ýôé,úõ·^Н³^ñ—Bþu¥rû¶Eàkéšú`5»õ$âü­ì¡›`ÓoÑujöî[ùÓ}LóŒ‡ïŸ^›™uô/f}àånþ&Ô ²BzGûøýÜŠnÁTU ùÅÃØ?Ãy_¯¾O§ÖÇ>¦W)µÒU¾üšÚ¸T'{ô­¢ àO‡Y± 8¨¾„È ·p0šó0š{ãî6oM9nòŒ&ÿ#ø^˜wVÆpoű/¿A ]³N|Tž6ìèÓ6SO„þݸl¢Tut€ºÆ_r9ýwÊ·ãš¾%˜FûîŸB`È$ú_Ëfqž/µ0l çOùY*Çß;½VÙ•nzzB3’ýMåÔÌ™Wt!8K¤ Úb<—éªHáo¢Ê×÷܉݉‰ÛF6ÿÖ0Õx •®mªºÒî9U|pKìØùÉñJ?ª[m›0è-õê1!&KbŸÒ/|É‹ø<Æ i¬ÚkÈDœÛ+Ú57Š{ºMqàXº²‚@HçVÿi…¿T·þ)¥qÕg§ñ¨¡÷H”ÂÖñº¯zuu[©Lm•ãïœZ­|‘ª»2É]g¡Zé‘ÙÚ]ó›AhGŒ"‰ïÃJ•ú$…¿?ÿ¾òA'Úú¿ÿ…}páÕÖø%įgè?þÀ0'ÙýîÊÉçUh•õ¬ƒÈžß&Œî»|<ÔhQÔ‹¨œˆ. zË<‡pf ;šó0Úãðæ8®ÖÑìê®PÐ0èÝþOø8' Ï•\1::>Ïž]Ã<ï~tçVÿi…¿RûùJ¥ßÖûËÜ6Œù;sö‡z í^sŽä1ßÁ8W½ü™©»S£¼3YÑ·éå¯fê]AÝ<¿P.|ˆªº¨MÒç<æ(ùª„eY¤ð÷­ããßV:7wÿ·Ç?÷&Êl?òt +éñ7ä­]î­d/ºò1¸ehóC׈['™!!Û©Ð>á&¢·)ܸøAo™C ÿnä~!ëéŠW»4Çqõ±àQul+­Racû€À‹*ÅDo<+Bf·^öäTÿiŠ¿dÀ`Mi¥5“1Mª¼‹@)Œ{ãÁö<*¿¾U“;e|ÛwøW_¹cg#þŸd+¥WÌ`6@ø:ë—ʹÙõâ1"—¸ä˲ÈÅ_è­cþÀ‚*K¶dëé¹{){³³vîï’cJÓ±¨'r»Ý^«¹I3ÎûTÁd=çòÆÓãêx”d·2/—p\Y0Ý‘ši;Ü/sñxzÞRÉÑýæL %ïwÄ7…€¿T*ðþW¥_ÿêy¦€e`ÕäOO^%c{®»m‡gùóbÿû¶JíÂ×GשÿNó\ÖvË|'n‰J÷˜¸R˜®ˆ#>ÉøsèÍ;çø àïê<ìû->u‰õj•v”GP¥ÇBö˜»I‚€ ÏlàS„^åѳô¶mÄooñúÇ™°¶öuŽ«[¸í©t[·Ú/é(­àjœý»%¼¨Ü^Ûm¡´–f\RÁ‡ZøK!]‹U}4o³m5}°@•Çl Ÿ>ì“Ü*Ǿò‚”Êd÷½ÓÔýàêÆùÊ2W~?{¯—×Ç=É3kó eYaMñWóâäseOj…¿Sa&B%}G¯ïV˜³Ì/Ã2/*ÿXâßänÄòlQBQ<ôÖ‘™ú õv2ïçkgú>#ãê¦;Ê ¡ˆ"«¸؂҈k¤ZÊgçÃÖ'~’ys@1ùMÁà/…,_ 4(=ðÙæ4`ï´/,@åçß=õöñU)x”Ç~ûFrïuá½RöO{à°zÛÞÈúÀÔ!@¶"pI|Ĉkn2õ¥.Ë"–;ôÜKÈ´íÓ‘o>…TPëšr7ënQFª1Ä{‡88; ÷ ûñåt+0=Ê&¢g5ç2à0 98r?βÄeEúÚU>óPFÔ‚]xŠ`->ðÔD2;Ž¥ÓeAqcÚÚôÂ72±ó¡ÄAâú&_øK%—¿¡X— ¼wǸrüKS…¥üµÓþf|ªÓðœW?ýÌN§Âvüž§ƒuâ*]2… 9D3MÉô{WúR©&…¿?wŒÈ¦|;Íì³#¿¯÷¨IñGº˜æ gSs¦–‚[Ü¡„H,›AoÞÎhÎÃÜžT8®¸‹ï?»ÇõL•S¤}ÜÇî1æE•†Ž#Èùf5ñï>™ù §B:À‚ÁŸœr8®ð…moÜÍÕÍxß»«Šf E"µÓGŒ©”ˆøÞVUõÞ5bweì$Õ£ÃÕ¬\z*µâÄÍ •æ8ÕkÁéË %Y]*)ü=CKô“vø«ü)w§5ô#mßjL_QÙB£ó­ÌÕ™¬¥#ڲ‚]—N£ÈNDÏTý{LhñMc'œM ÷Ãb^)å¸r±¼¢…\ÜÈJÍÇ[» EN*â‡Õ;£œa™9ÁŠøP ©¤ï*ˆŽßz§Æ7œæft*&ê‘ûd˜ 2(³¬{êÙf©¬¾ÜÑÅÚëdNâ?/–µ»p) ¿£;µÀß8|“–h¿Áw…§¿n.µlpæìš´™T Xfg]24p·è~DQQŠv9ä½¼°LL†ƒÞ|]œíynäooÙ“A®o®ä þ¸hÉÞuF‚#ãrþê$¼¨h‹AO?C{Œ=™œJøP rr¥\¡¶¿9rÑ7ížízT~m)˜ ,Kþ~ræŸY!…ï­ŸU=!Ô½ùÀ2ŒxÈÜ"UÏè@z¢|J’ºTRøûßå9Ä_ˆwYC[#ÿПV÷˜çáÔɲt–‹^êDñVƒµÉ#wˆ« Ob{ ƒÞÔ©¿¡v!çá¾àN¶—öŠ þn­¥n’ rñr{ ¸>ÕyQãµ+Ýob½…ßÿBõðAÃZÓò¡$þR‰ñõß+}iã¤/c^øe ÐVì•ã;ñš ½ûШ©kº~]uÇ{jc ô™²çåJ‡ÝPq5îYQ$äñœT“;üM\[JQëÊö¦«(òbÕŒ *™9éÞÀµ+ôÈš€Î ŽŒ½£óÇS¤L†0Ç7Ô’¾†*öVitÿÜ:Ž,<N‹Êíì·žxý¦Ñhˤ±,=jAâOÆÄa5›ÂÅaŽAÁ;##j<­¤wÕä;§îN² ç\&^³ÓñÇT· xYêh×ÛgW‡ÚÅ ÐM¤Ø•}ÂåX±%}c³o.ëó·(¸?#k÷.±'¯L’· 5Br& mKʤÁ ·ˆÀm•ŒÜK nV”ã*|§@Ê„4»eq4lBÖà²ÄºÜ©©äåf”9Ë` ÁTu§…?9›÷éñ*Ã¥WžžÐ¢å׿jò§§$0Ø—w‘ýšåâÃÝÔ‚Å_êýíŒêwTé¡fhsfƒ¡ÿ>úÎÜ$ûMóïú…(×7íAÕCâ/Wܨ§v¤¶x¬IšA¼–˜þ‹æ«?À?_ÌþzJþ!öGûÖš«ì¯OcŸïC–Tý b†Y!h…ø†l“G’‰èª½ºM¸Þ&ÌþÚ~_264ºjSË¢[änª²VÓ¹^\þüRÅ—l6%¼„·>¸’fŽLê—çC-XüÉÊßP\ÛašÅª¾öïýí&ŸâKÁlð›çÿXOÞ;wLU%r|öÝ7Uíœmƒu㦶K}K’4ƒ„Ñmnê”ܳF_¢|=´ÔÜ;YFQ‡Z—5Ë^-®Ð ÅçJÞΙ€Ù7wÅ'„AoJÕ“·#ÚçÑÓ^~÷Þ$/á†ZbŽ«ÁcxÿrœË…i`¤–!F°$¼¨œ³ ½ªkaøºS‡¶ú/÷ø““ÁÿV¬ÎL¯}a{µwnš+_Çì߯–K#ÑAm¿òÒÄ÷ÅwßtÕiðÐaä_MmðÀs¾ânè>ú“æ4þÂoмµþCˆóo±Y>ÂÔKèRY|0ØÎµ¸S³óÑ£õ†UƒÞèA›(ça+y9IÁ®ç¸Bý·Ë©µ9;ë…ìù8JÁ‹ŠÄÍ‘rc2ÕíÕ&Ûº8õÖ*e ÃÇÆç2è0¡®k”ó0ZÝÉ?Ù‹9®JyŽ+dnjcr+W*)j~Ô„Ìè ‰'0ôè¯2dEèKY$Yøø“•Ÿ÷µ Ð&v½Ç´œo2…PN{ ÏQà¸êfhé.ÝÑ™{,nŸÃe’ò¢²ÒùÄ?·ò'H¥kÎ_y4Ó7ùß¼ìUc*×GPG„_ûK}uÆCŸŸ.*?¸5oòíOÿgwî1®õ¯1õÕZòœÊJÈP?ëW¤v”†æ g&®„ëûç ©ë=ž¹mˆ1OÎþ,’à)}kµO47§¾ m¥ˆHenBé7å˜;¹V‘vŃÞ<öXeMeVúkMQn¨åj+iZºŽÓéL^„³ÏÚ¢i„{×õÒwù0æà´)”ž•BÅ?Y©ý®Â!U‘‰cŽ1ÿÅ£Ú^es哟‹kîýÏŸmîÍä˜þ»knìέºk†ÊÌó¥ Ö>›rÏ­ÁÜÁñÑÜÈFêzO ?w“ažÊþ–ŽŠcß¾µ–ªšEmIPìAÁ¶ZD°²Vj”ù¦ý–x·¨ˆ<ý ·(µ©ÑÂáíôç?ˆM”ã*tÑ3ä½´…ÚÂêÁv4jsQÂé üàUÌŠ€ÌS»ª1™ÝÉé‹òÀÌÙJZ›œ|Ù}ßT픑µrüÓ¢Ê/¤þkâQÊæWWiÄ÷,c}à…©o›¸$w~Á6 ¸¾këûöyÃß…„ä¢Íx µôûR1¦\EA®Í(Ò¶ np6YC%ЗŒî uj[Šš'ϲ:•cÏJ¡S>µ.ÅkNJX¼õÏñ°a÷$å—7H}†"Y‚‡˜ &o£!ШéytìPÛAÒ½*zGíþœJ^X÷ºëõÔœÔi†Š$Í ¸3ÉÀˆŸœË'þ"I²«þ#T…géÂú¤W'9úQËÙº„tÇw`´'š€rý¬Hr?'"QN¹í»–qWγøïCB´×¾su`lØxz2H$‡O°+;€a^Ôä}æQÒˆd{DŠ dK¤$«oòŠ¿´2÷˵Ê`ë‹O^$ô½ÞÝS>=y· ·-ý¾æ”Ó¨@þ™W»˜ž6¨x×gž:U×Ó8¤î;‡†K}ºQ8{vW¢4¨&.–“’<ãÏ>!ÁZñžð¡”Ö„9]e-š\ïñÑ7êý‹“>}sÕ†vØ–Äý®ÈÊY¯Šiv/¶oÒ^?og4çaì+ÒÈÿÚ#ŽS¬Å….g°Ž^_~°?ããt^ö¢Ï²£y/W몯§Ôom[J©†Zª|—Ê8ã R|Ô^s Å*7I?ß?ewxÑ튒Í>éê"Ä_z)»ã²â×6Œù¦ê9¹ÌÕ÷î~tö9ÎÜ6ñÏkGªàÙÂÞl×þël:³nqM)6]䩉7TÙ>‡nÔSegR)ÍÐ:L€¬Åõ^>Ñ“ÿq4Y¹©¿yr®M xê]AQ[êXå8ëzÂ{P¢…ôÚåL@zÐ.ÊyH_9ù‘SÀs\=3碜_éNOÍ\ŠºŽL׺3kOÓt™ºNúÛp©A]AL3ªÉžwéA#˜æJ½¨Heш§¢1™^Éê"Å_A ¥WBõœÜ«3¾øè ÁÊñk—í5îd=˜×)}ùù;>RúR÷ñG©RyðÁù‰¼Ï"9OoYtóg8ùýÝImŽm¥×«Qä-~¿9ºÀËÜBლ${‡ß±r&`l°@B½ËÅØîËs\í=Æâ;2öïý×7Í¢.c?éÈ¥Y›Î(sŸ#Ík©Y¬œuHUúoiØ#ì—Ö •L¾Ð}&1¥ZZ›ȦZ¤øK/gïߢð•]S&|µ^ñŽ5ãáû§×ú¾÷¬–4 ‘«ì>öÀêìJÛiöT–(»òüãBŸ¼ñ¥gTµD¹Ö²>ðÞ”O¼“/u¿Þ%Œ¾öß멜ÆÒrW.]»v-½(ˆ¶97]BÃ[Ò‹‡ìz>ç!ô¹¥0|ðPËÒ-û+pË[F´öŽšµå'Σ™Vjî¶k!5áǵTåÛÖ¬fG½µ`>l3âEý8E­hˆ?EÊ9nÑêbÅ_z9­”¬Õ3ãŽoœ®ÄS°pcË—þݧŸqZ+§7Ȣ瑇2L˼w·ÂÁ[>?…O~ЫFªjˆ£kY8q’kªhæké1Ò×»VôS'ø[ýqRí0phæBo%µ¨!ñ µ U•pii§àÜ&ò²{LBÎÃhuÉÍã9®Œè;¨ªËª«ûý׫WhF„ ¬ö<tª?#þ†©Ã-(ú¨æMx³¤]^ÄÊZ^—â½8Uäc-ÆîôG6ãC-bü)÷O)zYûÏî›¶ ØV9þΩÕèò,Ú֯ݒ~Û((¹Æ.í‚’]Ûûa4QÑñ½¿UUØFŒ"Sþw²?–‡òq½sŠ¿Æ§RTOylçP¥œ7¾;l3P³C®>kòR__ïÉŒIÈýD( sWk¬ ³–=ù×T–a 4í?؆Ԧ® 7gÎeíGé’Ã×·Õ-ábE=Œõ„ô$=`FÌØ´ÕhîOûÑ1>ÔaÓÿ–|‹~Lá•lzuñçå&d8«ÆßñÃ.i»Úeÿ¿½+kêÊúùuæ›™Î÷µÎÔµÚêXµU[µu©Ž»¨Ój—é8£Ý¦µvÑö猵í¢ÓÖ— ‹¨(â® ¢  ¸ **»HØÃ {òîwïËByÉ drþ¿É#/ïåæÜÎ=÷ÜsÏ™qO°»›M1y’£¶iÄà•ŽxÊÑx|š5ð> Šõ¯éëú©4nÝQ¦Q©ÙT@²…3LB6ɬ:if³©dvöÊö5¦N¡úÍû‡éêrgjãÅu,KrëJ#™·ªH– yjqw‹a¶¥Suaö Euôª`Õw¸®™Ä+Xd³+øߤãÉòã Ûmc½1ªwë?‚ ŽË»²õY¢A-î¿äãÅý¦žvY#3> G(5Y᜻ ±µêX¨RãÊ' ¿UŒçÀ1lÓf)Y$á_w~ zÿb§ßeñbdʈNJ¬1ΘP@âèì,9¹ˆ©àC‹« –³RlZô°6ݸ1j…Q¹–îgB^B¨XGxe¦Û¤|’“ŠªI¸ZâœR˜´XJ¾d݉3œ³83ncßTu缨U“V›æîà{~n‰aµ¨ó¢ûsÝ%›=Õ§óÔ¤™d68tüñž¨wMûjöE t9 È¹wM¹‰ÛO\Îñ#ÊŠH“¼rì¿7&²+’îóû/éPÖ¢‚º;{(ß–¾ñæb½ãÏL©=ɤ«« Ã¥´…É}l\ó–6t62u?‰1:o˜WþÌãÀ>4u™&Ú¢ˆâ¹™^îÔŠ\‰áud.­æš¯»Fü–ûª*:åEmš»¬]Ê˸fE0Taõªý¿,’¨f¦*  ì÷•Å(gÊ–·ZÌJœmvBW—ǸâÞ:lxÄrØ•´a ŸÚ`ÿsdŸ¨æ<žŸdsW#Rü‚ŠTxÅþs¶’2tAºÌx[Í”]Ã*øÑWVº†6–À¬®/ÕMQ³5îÆÎ3,…Ö3¾Ìv_ß8޾…úÆ%ŠÀ×ä\Ø~:Ó1\šf . ¸ÈÑn¨'“ßd¤<Ó±<œâ ³;èê‡!*OÙ÷ùg-cvr{ãG¿zÔ´Æ£ˆ]ú`ÿ®ZêPåbkà©ï\úµ· æ  Ž‹×¥Ž[ìHÙ™B2>ÆFC YŽ ®rFÏÛ£ã¯Êe7µ+Ã(êtÑž*T{YŒòýX"iÓœ·Yó–·² 0z¥ØÂü ΓT«~9i?ºìÂ>~)Nw-Ú}V¬qýªãý ð]Qr2?èLÿPbgèó¢²þîT•¦I6'Á4ó>^™º¯óÓÔö¿ßX0õ/iSVþæÁ‡ÿzÔ%5‹dxZýÐ<7|mlÌÊ·ØÝ 7ægƒÆÿ~CE‚ÉRßI6 PK|9¾ÞUÕÆÉòÈâ ¸l1¯¨ÝEÒX1Md"³}ÕU¶ýü¦W¨¸ãR ‹p'.ä©Wp‡âï»%ë–ݧá ÔZ¢™ v¤pú¨æZ½# Ìv¢þV‘~×t›í2™L>T^‡|¨}‘q‚[Ê»˜þýâ.þsÀœ{n»(™‹ÏÃ-ì9>œº_¶¯&MŒ¬I HŒM§ð¥Q—ØœEØäÅ9ÇÀèéüÛÆ>OÐÅâ@k”"X©À¼Y"4¯Ù¦Ÿ¡¨åNfÝî¾3º6ótz¯ð”\p¦í^·—Úb†p*»S¬ðÇYÁÙ»œ¾£ˆÉ‹zšµ‰tC ) €Õ`™-½JÒò.¥ÙgõßÙqÜ¢éS£¦ù•»¦ ŸÊÇÓ^¥»¿zÌ®Q5êŸît zF|ϰQ»q?Å£ œø=Âz*ÿÔŸM´!µÆsaMXá…´wÂqf$ÐZñjãâ/eÓ§z›P—Íä¸âSû™/´åé׋Ȝ’$ð V¦v{JX¿òüX’ƒ§ûìêkªpSw*ü9fËoÀFíi!“Õ¢ÀˆƒÉ&}_…›jDXÿ•©¼€œ€e¦½ÇIºD­¸†Ð¹l­'¾ùÍ·qþÚ³æ:òµHê6OÇ‹C= .ãŸmó†.Ä6ÐÞÖ†#Sþ«¯tköb­°¬‰E›J—=ÍØçú¢– lêªÒ;¬P‚™~ªÓ×+º»m©.ŒFªcˆáå·OZÄa³XÀ…á©Äö QrHÌ$&Š}Ûm’•o¶ËH5úhnBl”ÉT—ñDjïà7äüÁŸZ„‡ü}5žýî†Ù¡ÂË™EER$Ø13kk 42–mæi×ðïC[©Ôä)¹Iø‡}Kÿ¯2F¯½b¬õ‰’m¾1š ú+=hÒ~‡l¬pÉK”‡”Ÿšx ¥á±YgŒëÞìdp¾òGËl×ñl=%‹:l?[¾2ž|±ˆìm–yQóGP–CJ“±BH)ûR°Ê›øÇYîýÆÛ/¥/ì¥(I*P¾'þ®3\.ÛÇ^²>7º¥Bôê(;3uΡ’$6­Ün”b)YJ|ü¿,?\c,ßæ†þîüãŠ%…[>GŠç‘'fèIÃOÆâ˶N—¼1RŸ5"bÈò‘¹J¸Šveß}¶ùÊØ›=ž-¶æ—ÚìÝÛÛ)ßóŒlö H¬Û¶RÎ7ç—#Ô|F_ÔRAï=É’o”Î;³‹’Âo+Šåï¿Xï—‹ìž©'f±êà¿ÓHmg©AuÆ—´ìåŸ(¶c‰ª/ñè åá¢M‹à³?èh]0Yˆ5®íïÞÂ?.(x¿ÕåŸ?!ã¡OQOƒ|ÿnÛoHüVÿ\»bT"÷Ûâ9ðñVö÷«$lö+=žßÍÚ4áêIéÈùEb)jKPîV' ›br\QÑDÔV½u7£ƒJH&•¬Ë”ïÑûRgØ}øƒv-àZ‰è»:ÔsÑè_Æ¥dRóÊa$¾†‰zT©uUOcÇ÷ þÕÚÉ=!j#~°óLô É|ÂÍ ¨Í2,ztZóU “óH¢x’À/²þF•Sø§Käã^vL–n‰ÄJÞÖ’&•“j©§+oÙYf“(AÌvyQ0dȯV#à×¾•ãÁ×É÷ ~ß1ú>êhú¥MB1n«c(,ÚØÙ)ÐYýýâ{¾ör¯à_ò{5µªOñMG¨ƒ…4*'‘ÐÔ6ÛIŠ­CtÁ.ƒö J³œÔ¶àÁ'²ŒäUh9“]çœoÑB#Õ¼Ÿº¨G¿ïwÁ¶ ê(E‰NQþ 6cgòÈQ)´5Ý–Ç6îšé\&ÓùÇŠï8ÍLËØT„ÐΈ6Ô[P~!9ë¼âÖ¯ëD¾þQîåñäåxì×5ý]ý\lóű9½ƒµö·Ôg‹‰.“u•»X#öÒ?&äê‹ZQÁ7Í;­Y,ÙCQê™~ûÎçJöÞ}¸[ã¸LвomX’”¦vzŠ­lùM$· ÿQƒíÞå–T+“`c0`%þq7‚N9ã.MgòúùëÔëpdh8««)°ÿâþ»5y‘˜óýHã2¥Óû›g·f¼ÿ+ã¡:xÎÌižàŸd­=UÔrÑŠ¬¡‚3[õ¡€gئ™7F" cŒÄtmÑívmѬˆÝImW`Ó¯Üqðr±ÓÆò¼°2ÎéþPžö%¢/°®À¨²ö’ÚéTP’ ˜C6ù¥’dkAÆ ÃÌÁÇ;¿O]¥×²:ÞÊ?Π~èÎ.ðJ¬õþûâeÔK‘­51ËÌ¢bùpòVSƒ9ÿ²$¡x¼»ÊÙý=ÊxàÃåÝŸ.¿cüTzÉò{ž¥+ß±o#%W’ìUQ²,&Áë3~ð1&Ç• ©]“èèëQÛ|UÄuذokX²ÜiºOU‹§1뜗Œ²a®-Ÿ™¸$…©Åž-¿5Š:BëRÌë Þy|›5iŠ ¡0æB¼•œQJ¶¥uâí„z;^Ãfà&@¹Ó¹oˆSWeâ_jíÜþ6ÕåF®jÿÔ³Sµ›¨¹ì£ÌØNQ÷Ïœ %ÑzAVSOTEñûÐϨþÄ©Çý[Èþ9ñ * ¢¶Ù™;*ã~ïôŒl¸Ù—}X7Î’lù·°ÜÍžî%Ÿ¤‰¨ ^‚PƒÃ¾ìɯ­%k,)Q3ÕßʤÀ?‡ºè¸ããgú£Ç_•F½:¤µ¹+Æ¡"Á…xÂr´­Í³ýmüÔ…~žô¿(ž±¿ëZ“ÕâKQ[«n ðÀÑyáX_Ô’,ê’påý+GjÈz@~©^UëDþ5¬C¨IâAÄÅâYašõ]¬$»Tn¥Ÿµé5½°Ó,/jýóû­ ³Õ #¬Pÿ¸CᢟªB)*DAö»ÆZŽ3†W?¦µ\“°‘›I$O²øvƒªË!%`ιT‘ϰæ nL $µÓ©ì©¢+ù” ŽèŒe¬19u†…Ã$Ø«ùǵ̎ ¶íw¯ÑH-A} :¬ÍïZÏÓ4õ,"â8 ÖI2IÂÏžÀ¿Ý«þË:‹3><ŸµÌñ®)SVµyœ'qËÿØ”à{˜¨½ÃÆô¦òÔŽY“ÓÄÅï}Ž®'yV‘ŒPVpE§×ed!„ª ³–-_—ÑlQ.qP$Û8^WªA¨Y(ä‰Ú€Žá’qmép?ÊN½¾‰¢·?g;%[?4’«"Çs`ßžÖßžiO-Wã­UvÀ¨úƒ±"¬;¿þje,Bâ`qèŒìw¶ZYwÔ„‡“J%~mÖÇÚ ã‡q c]SÆ×–2õ$À?G yñi º1ç}„$õÈ{±+ÌŠ;4EŽ®=¹¸‚ã-Z²(ŠwB‰€qk¸9O©ú¼Ðüü¢—˜.ÒÁï÷¨Y3¢ó,VS@j§[Ï–/Ò§ˆùZ2f#»m\ÏÔ¿¶ÿÃ=„ª/öžL®Á¹V²8½÷‡H²!.„ã|¬ù0Å;Ú³ÖË=Æ¿Æ÷vs5œS÷ÆÝwɰ±á‰rcéôžƒü:„~ ïàðSgïgj§Ÿ”vÊ–Ÿ`0·“SÉRöµkº±ë¿Jà k¿ßᕤI>9èöÔ—8ë’xRükwp{›+t_óñûEÝí¡L;´¤¡ŽóŠ_R;q¯Ãp›»M¯ù‰öv%©«y%*à kPíÿ°ãKÚ݃ƒ‘&ó†8ðÿ™¡`è)Ï|0‹³z8Û¤Cfu.2Ž’ÚéTq‡ G2CñôŸÃH;ì‰O½µCáß1[þý`êx”ey8àÀhôµò*Ò½ªö·çÛ“ìΈ4åù}•¦j{ Ûj·"TiîÓkNºy kº ‹lùÊ‹­(›¬`–74À?€ ±`M'7tÕÒ‰7@ÿ9 ÙÔ¿¸ë£ð¤±dή^ȶ½¿ ±ø_x”¢R³(ÿ„kõL^Ô{ÉŸº ü¸囕ÙŸ¿n²¦­·õ·çÛ£½î¦ÏY0PÕ[é¦lFèëõfë!µç™Úé©Å–Ùòïé3g«Qâ àÀ¥È`nþ½;ìPÃÊQ—@ÿu¾y®½ÿÍo°îHSôjºe[†PŠiÅ\—µ—´î¥‚’ÍÑ#õË ¡5èÎð]À?€K‘ƒ´Ý{•1}úõ¸á+Aÿ9ŒÇ]—JCŽoýÕ†ê>Á8zÑ#fÚN|S_;=Á”-_—ªÏ+H¡…£7ÿ®Æ7cRÚÙyp’® úÏq%å²;÷;Ø—ø†ÕŸx†©Ü‡,-˜ÔN§v›–}ë [¥µÔžþ\Žkxfeýœ2ö- è?ÇñÕ¿eN¾c?¡ÊƾÆ8õ¥}‰õÞgº¸†¤J<-6eËÏö§H]ø€<àÀ-ÐŒ{Þܳ._?0ôŸÃ¨{×™N@m!B9Ÿ¥öYÎ]ú…ñ°11"•†á昶t’9ìŒ øpt×1 Û³åKO=»Pú¯ hu–°aÀ }žt­{)C?ȘÚéñJ*CH¡€ràÀMHüƒil¸úû,E‚¶pü±+Ý¿ÉÞÅR„ª½sm'‹:™M«ãýHítê˜a‘[yŒ)‘¬Sÿ¡kúŸ]ÚçÎ*ýç0’s»w}6€~ŒPxï6ÿQÈlhVÔÞ`j§§0;@ö1Ë ‡Ï NþÜ„MöçøLÞ>ð{5è¿.ÌwýÚG§z%ïdƒÿNB`J£¤vº ‰¨Ã³ŒÜzl`$ðà&HuH»—Iq•†J_|&ôŸÃ(™ô¯®\vcY³ÃÍ;!9ƒPe` jQ$µÓSH¶ü’]ŒÜ?r7ðà64üušñ0bH§"ÁÀ?»PW8zEÙU„n†Öx9ñJ?Z…\[@J†ø‰dê$>S3ovðàÆ0B©áLðAÍŠÑW@ÿua>·Ü‘ú‚·mÒ°ãÑ#HV@QX ¾+:FÊÃQçµÀ?€;qmAóÜ8mðÊÐŽB´€ãP³j‚Ñ: œ B!Bû÷_ÛÔNߥi*!‚C$À?€»±)^§Û3hÜãçAÿ9 !{ÙZêK -žuBì[™HsÉ—¢ ø¹$)‚à:ðàf˜ÓˆPóÚß |£ôŸã˜ýºØä[üFpŒO?“´›ÔN§®0ôµÿnǽ× ^zoè!Уf«öT(PËî"Ô´‘ÔN?Ä,ƒP—w£Ùï{ü˜öÔârÐ]@aKÇWd1gºu“jq@ËŽ¯’N•Š#m9¤þ<€ÖE‚aÓˆBóå!åN¯¦¨#$3>Pü¸åsÐÝiÏ€þsÉf>Àšç§—ºMaB±¿Þ¼üxÊ ù©ôŸãÈ8’Ökî²xÔE\ØBQ$74¯øðòøÛìôŸÃÈœp¡·7·…ºñ¹*¢ÿüEÀ?€gÐ:™Çëa&LoàŸJ ÔqÊ$5€âHO!ôÀs ÓyùÀ?ô7ðøíÿÀ?høþÿÀ?ðøþ€À?ðüþ€àðüÿ€àøüÿÀ?àøþÿÀ?ô7ðü@ÿ€Ðô7ðøíÿÀ?høþÿÀ?ðøþ€À?ðüþ€àŸ—ð] üƒF‚(AhÐJà4DÙ5´­ž9{M øüþy_#?ú7Moø„üþÿ¼¯‘¿!Tÿ øüþy_#‡!T4„üþÿ¼¯‘Ûæ•ŠæûƒÐ€À?àŸ÷5’žÏãMWZ´à]þ¼–k?¨©~ÿSÿ^‡M5ö9€ïß÷ ´{Èüxªÿ6gβjø¸³@ Dѵ¨þüO—ŠñÏcöø¨íë''OÝC3§ãÇûz¦acÙO}9j¯‡JQþù”)ô¯™e€WÏ™9 „üþuOˆ…><‰?ä¾ÊðPûQyž;Ý6»"¿6÷ùéyHãÿð«ÊgLyîëÙø(5ÑGÉÓ˜s/á‡6(dÑæÿ9*Õìó]úêŽ7Õ8‡"ÜŠMh~µË ­d¹uEŠ_¬¥e /3×´g€§—,¿ç®–ºVˆÀ?àŸ'ùg¸†§ÿk⵿ˆTËìtEüÌöÏ{Ï~'GÚ`ãç×=Œ.’£¿Ãåø¡ì1òÿ1~«;_Ï¡¦º›Æûð,ådíö¥8¨¡[/3ÿ·g€?;UëÆ–ÿ€ÞÌ?Tò‡NWÔþ¯ñ(­@hýæÌæ‘®yÿsÃ[›ËM yZPùc.ã_Ǧ¦O?{y?rÄŒÖ5øðÞ|.èíYÓâÈxvÆì¹Ç-EwçÕ™³æÇÐÎêU½œØøÇAŠ„’Ì+íàú9ÿ—ÂÞR× øüëü›hzj?ÒŸ-Õá eÑû‹y·OÈgÎ(˜Ç¼'d†·†˜LYú½Íäé×*leÿ¦»üãÜÔá—öÂá•”ñ¢Q.y‘7¯I燛Ÿ½ùL.B>{œÓ«F9Yç')®þ‚ÖüóÌ+íà‡ü0μf8Ьþ\Gž…ù§øuW%æpSÇE«Qy”¥è©ˆ_œ—r&šŸ—E…#œÒ«&9™5×Q)Ê>ž4é[}ÚÏö ð,ºWý—uNäŸÍ–ºVˆÀ?àŸGùgqÛNÊ{à7O|§ëpEþB²9ž¾cñŽ CÂâ1´eÑ7ú£GñüC<¬»ã/禞Æ{äåÛD×>c‘’¦=d~ö¡î–ø¥†pç,åd}üå*E´ýæ©=ü1B¥C»É?Î-u­À¿Ì?ëW$f:˘Á›W1ÿëÊ žÓúço°xîI„˜õ·×cŠ~Ã5ü³v ]uaݳ¬¢#.òK³ÌÏŽ+éf¯'  ·”‹ÿ…£usôîö ðóòªà®–ºVˆÀ?à_¯ãz-Þâ¬rÚÆf¤Nÿ“/þ"•ˆÞô‘^p#EÌsæ¢{Æ7ÇÍU)gƹý ÊÂ*ºÙB$žxÉüìñ¹xhÓåm.ëj¯þçM9R½û¥¥œØüÏœ¤XúÑ‹z£¢=|Ìë z}wkqn©k…üþyŽfAM(šÄÞTWGLlP‡}­“„òød3gcô¯ª6Ϙ4~ÙM|ÿÚ¬ÙH™õv3zrºaéQãŸÜÒ5y9ÞTl o|qÆb"›0&°H@–ŽV ¾€·‹ëöüÉ3Î᳟0g?!W\|ñùYs?¼Òå8õ† “gý¨1—[ü')N›13ÐPõÑ,ü®)SVµu“[êZ!ÿ€žäŸWƒ"!‚è@ˆ :DBô"œ"KDwA DàÿQ0‘Ž endstream endobj 131 0 obj << /Type /XObject /Subtype /Image /Width 1280 /Height 480 /BitsPerComponent 8 /ColorSpace /DeviceGray /Length 40278 /Filter /FlateDecode >> stream xÚ콘ŵ6<÷þÏgßûûòù^VadL¶À€,(-ñZ`’1Ø 0`6Áe¢j“²V9g”s–V9k%­ÂJÚI;gãl˜<Ý_êÜiâÖyifgg§kªß:uR½‡e©P¡B… *T¨P¡B… *T¨P¡B… *T¨P¡B… *T¨P¡B… *T¨P¡B… *T¨P¡B… *T¨P¡B… *T¨P¡B… *T¨P¡B… *T¨P¡B… *T¨P¡B… *T¨P¡B… *T¨P¡B… íd*Tº©ÜD§€ Å*ÊåßèP¡B¥›ŠŽN*T2Cæö8ìÇð,/OP]º¼¼¼ëþžþmÿCÖ0Ò?®NÒžîrGß/o zF…J"ñ·7O·þÞƒ—PüQ‘&×lg½/õ6Ýðcýµkð“£·ŸaÙê¼iJì¿¿Ä»íß¼âgT¨$ºûYÛET$ÉÍ+ݬey0þŒ¬=w<¹ÿ8ü¯ï1.ìY¸þë»þ/zF…J‚ñ§+Ãÿ¼âŠ$ÙÔK÷“GOãõ=û>y¼Llj,û÷V~Ô)¼xF…J‚ñ§³áÿÚ/£ø£"M˜Ú­õ Á߈g|ì(Øœ ò?ïÍÜc¿=äÓ}âgT¨$ºmø¿í(þ¨H’ŸgÙ³=ƒñ7÷>;÷Ã’ÁUx3>û•IÆÞ¹†eÏOeÙõ}.²¾#ì?£B%ÁøÓ Ô³U·m§ø£"I.ûüá{ÃpaæåéòòH”äÿü*OÆm{ø¾ƒ_Û%#Ì–ýú®O.Á±mЯnùC9ùÿ3*T‹?Ý©!wÞ»)uT¨PéBËO©P¡Bõ*T¨t'YÙbêéR¡B… *T¨P¡B… *T¨P¡B… *T¨P¡B… *T¨P¡B… *T¨P¡B… *T¨P¡B… *T¨P¡B… *T¨P¡B… *T¨P¡B… *TÒ[:?¹åλ§q úô)ä_þ'–íÞà»´¡•„IÙ+?ž øcÒD*T Œp°Ö¡Ð}Ý4È帙¼jy–GÝë2̈¿Ði¢’ y{ØiAÁùñ'Âd‰T¨$@æØñ¦«áé3kXvõ³œÚÛÏ£îÌ,Ûô:MT$®@ ?þD˜ ‘ •D‰9þ¿ªo·u‡ ¼æË^¸Î•ĉ àø `2€D*T$ÌË_ÁÃñ^ìüxöüFuãî7š‡Œ¦SD%ñú/€¿&H¤B%1âþŽ€ñçø!~Rv# Ž¢Óå:ƒÐJ¥;H ôŸLŠHñGñ—iú)—j»ûU½ð“ß,öƒòýWëë^y;ZÓßž #ÌŒ ×òã/€IéÜÑ&Bª¯`Y’k{z Ë®|.ž;`€nÀRxíòV–mù);:ÂÄ_Ë¿&EH¤sGG˜96ô’p¹ ƒ]Îþ‚ðà4–ò;:ÂÄ_Ë?&YjÿÑ&RnÉÍÃÂ]õ¹…+ºb_ÌÓå-ƒ'uÏô‡::wt„ ’·0øòòÞŸ“~$Ò¹£#¤#£#¤ø£sGGHGFGHñGGHGHGFGHñGGHGHçŽ ÅŠ?Š?*T(þ(þ¨PüQ¡ø£øK± ø½Ë‰“£/‘?Ýë Ç’qÕ›$¾Fïrì‘1td!£"e´y:ö<꿚eWòòþ‹egçÝ®;xó§áÿÝëɧ6®K£OÉ ü9uMTÿ…JÇþºf·¨À_~ýšÿ½e“ÝëCåé=[:z—yi5èô]TÿÅÂ;ç!þÙAöEü¿çIæá½M!"ºÍIJ¸ÄÞ<ݬ!ƒóT÷<Ø·ïÃû‚/¼†ß·þÞƒ—à—ê•Ooø-ž«9O÷»»Æ?7àž ×8ó!ïºÿ„g§ÛÀ5A>^àSlÃõï·˜¼¸bðÀÁ[uyت8˜Ûgà°ûß­W"™‚¿z½^§7z(þ(þ¨þËmÜÀnhø‰ìš•ìœÙÂ{>CDt›§’öÕ‡7³Kî×寓Øk¹i³ø—¢×t÷7²¶!‹Bf‹ª3˜t+Ù3½ƒ&?Ö_»BC·ãÁUçM‹<çL5Þ¿ ž-¹ÏÊ6 !¯_³õ¾Ô»{௠ôŸ¾š¡ø£ø£ú/òÀÈcçÿÏòT™äµ}¬ý á=läAD·ÙÚ#ÂÇù9ýÏà¡ëÿÃÿõÝ?î¼Kü[Ñkº2êܬ?sý{И¬=w<¹ÿ8ÁPïð]o_óï$?Üvÿwœ<½y¥›µ,ï&ø«ý§o¢ø£ø£ú/þNõᅥ$^àßÃáOD·Ù–#ý ð߈/Óþ#ñ/E¯éàídŸe+uaž’h2}Ïr(—E¤¿>åÕç*:/ßý¹yº©—î'žê&øó™Aÿé;)þ(þ¨þ‹Ž¿¢7øgøéS€Þ†O‚ýÝ&{úayøë[JöÚ~â_Š^ÓmÃÿm'µU?h–†¿Ïøáç͆H>å2¼dšÈßôge÷çLíÖúuü9‰þKÓ ÅÕi¿}½-¢W\OÂÿÞ\~Ñüc*yѽNþHþ6Ý„÷»Ó!ñ—Àkºz¶ê¶íðê'ç§ÆÅßÜûìÜKWáÍøìW¦  ŸÒgkº—üͶ«6Ú¶ä’§?>ϲg{v—»Ìý—Ž!@Š¿î¿ôÖJ¨¶ÂÛ©¿øÀ¾þ ¶)¶ßÕyøÿ¼+îæÞzìî1@÷úÈ WØ‹?ï4|üa.×öàÞàß^Ór罛ȋe¿¾kÀ“Kv!©+€üÛ‹¬T÷”ÿ5,ÿçWá綇ï0øµ]ÁË[ø”wßóØ1]ÞJüÒæ»4ðù‹Ë>øÞǶwüÕØLñGñGõŸ"y<¤Üêô™9E9Ýð.ë|f}º†)þ¨þË9ò§àŸ_8šSäsžýÍKÝNCº†)þ¨þëö² ògå ¿Ì€üâ–Öt RüQýG%$½ñ—ž!@*TÿQ¡øKüÈø`½OtdTºþ2>H…ê?*JGFC€tdTº-þêhâŽ,ƒ„òk92¤ø£#S&ÿxÙ+?à¦ü㈿ RüQý§õ¨dó¿=ì´ðU(ÿx&â/­B€Tÿ¥xT2ùÇ]¢¯BùÇ3餸£ú/ð'…\ôU²“\ú™‰¿t Rüu?ü¥“(à}•ìäÏzüq!@“‡ââZ¦rùÇÅ¡¤¬äÏ~üq!À†ââê?ñ£þqÑWÉNþñn€¿4 RüQý—ø“À?.ö?²’¼àÏË…íTÿ¥ð‹¾ åÏTü9Ò'Hñ×ðשkMËqÉæ‹TlqV?åÏØý7]B€Ý­z]&3sBùdzGÿ±µD¶PüQü%^¬z¬ÿ Ž ×”<‹ô_:…)þ2cˆlAŸ>…ÄÇýä–;ïžÆ›ÀЇÒúOor³T¢ åOªþB€^Š<Š?ù":†¸iË5â§Œp°Ö¡\o>˳AC©ý§¯òQ˜e·dRþ­… Ò›Fñ'_DÇŸYò«ŸÅOæ€3aºš¼øúþ ¡0Õº4*9¥Bõ›‘!@*éƒ?áZWUcsïjáU3 n^2/Ñz+½Eé22¯)ãB€TÒOÿýÛ‚Îÿ ½—¿‚‡ç7†Eg$`k¥÷ˆâ/]FæÐÓ ÅŸÚkýë?ǹçžáï@Œ¯ì&LÿåVØ*Ÿ 7)q§‹x*ÝW Rý§úZWbÿ·ªyÚ>ôSáûÍâ°¡èØv¶Œ¯‚¡’5ö Rü©¿ÖÓkXvå3ð¬jð –Ôå °4äÝÍœ»A«`$?º¿)?úäët?ÿ5€À3MVP%V¬‘Ñ ÅŸÚkmìrö^ÄcC/±!繃ßÝ@ÀF«`ḏl~ô@9Rl~ô,Ò“@M–¸+öÈhâO‰ˆ!¢>·¨Ý’›'d_Ä¿^:2¦ZO«`äÞO™üèr¤ØüèY¨ÿ5YâJ¬8#£!@Š¿¤¡Ô[E«`ÔàO ?º¨)?º®~Ø=}Ÿ(Ïüé¢<7çH Rü% ¥nZ#Kð£‹Ê‘bñ£ëî*žÌudz@ÿ=÷ß½?s†]Ÿ¯ÄŠ;2¤øKÞ.m'§.õZro©T~tQ9R,~tÝZøÝýA¿‘'i‚¿á¥íg}z}¾+üÛ…ý= f>þ2§þŠVÁ¨ÁŸ~tQ9R,~t]yÇÿÍŽý÷b¯ë •XRFÆ…k)Ô(þ’¥¡U0*ð'=PŽ“]G¨'wÝ“økúIðõý•X’FFC€IÓ´ F9þ¤ð£ûË‘bó£ën>}K3fž‰7ß º~p%VÜ‘Ñ Å_òôSC«`$‹l~ô@9R,~ôÃyº²Gúô}ä0›ñø;>ìî~÷Œp±âš,q%–”‘ÙiP þPüi12¾ ¦¢K[I4?z¶à/‚Рq;(þ´_C.ÚJ¢ùѳXÿÑ`|qõ'ÅŸ#sÐ*˜ì”ŒÕ4Wý™Ò¥chூ¡p£ú/MFFC€±ÅÍmÕ ÅŸ#£U0Tÿ¥×Èh0–x¸vyz}=ÅŸ&#ã«`è~Kõ_šŒŒ†c¨¿*½ ­ZŒŒVÁPý—^#£!ÀèScѤ“âO‹‘Ñ*ªÿÒkd4E|œú3µ’£‹âO‹‘Ñ*ªÿÒkd4Yýq´&µ7{)þ´­‚ÑV8þq? |wá¿×pdµ”-\øH•jÿêb­(þdŽŒVÁÄ5Ùüãøî¯áÈh0þîËÍÕé×äü­²è—çêrûSüi22ZÖdò»DSMùÇ厌†CgÑá Ña#…ÃßNü¤·Qüi22Z#KÿIáM5å—=²f žµ¢ÿ ]þÐú]Y¿òê‘óðG'>2Z[ð‹¦:cùÇ“†¿p¡!À üY‰¶»©+€¿vòŠÎ½ø;öÔC%§[ÛNO~ä‰c‰­‚‘:qRùÇES­„\Þ¿p@Ò H‰·KR”~ü5þÎìÄß §ü ü…„ãVÁÈÑøÇES¡üãIÅ_˜Ð`p4ë¿ö üñÁÚ¬Å_rã/´ F†þ“À?.ö?(ÿ¸‚‘q!À:ŠºGæ5§ãŠÕ ýÉGÝ—¼‘Ñ*ªÿR‰¿PéÞ!@G\õDzÎt\±Záïñ³ø£L$qd´ †ê¿Tâ/TºsÐÉycµ±ãñ\„0vKÌLÅß©ÛOè ƒv$sd´ †ê¿Tâ/DºqÐe”–ŽLC6TÍꯎÞÙ-K“;2ZCõ_*ñ"Ý6(tºôÅ}g}Ú•mdrý=­‚¡ú/FÖMC€¼ú³ÄWB_+ÅŸ&#ã«`êY*‰Ê?.Aºeoô+Í ãld}ÅŸ&#ã·Z#W¤°ã')Y¥ÿºcoô+5 Å'Š÷e'þÞJöÈì´ &–}\çŒ9½1Ùñ)þ(ƒnäýš=Rÿ o‰™•øË“vÍ ðÌßú©ó“[î¼{#d´ &ºu\£SJ\vü°?Èþû¼T¬»……N—2Š0š8{±ãÏÍ@ë§F8XëÐQ FÖB«`¢¹¦Xs\vü°?HgþûtÑÝ,hô+C¸–˜:&{ð§ó‹¼kZ?ÍÎtµ’‘Ñ*˜(ްxcÜ„Xìø¢›Ë=Fà—û_zà/‘+ƒ¶u ˆ‰ýÊPš$b¨kÊü]§Ðþ ynÎQ22¦–VÁDµ‹£—eÅeÇûƒôå—‰¿„ެ…Î’“ý]ÉÙ}ÂÝ=ñ§{î¿{æ »>óòWŠFF¹`"@³Aï—ȧ’â²ã‡ýAúò§“þë>!@AýɽCÖ:g þþ&<‘–^Ú~fÐ'¡×÷ ÇÑ©‘¶ŸÐ*ñ–P£I}´“?ì4å×Ôc•‰¿¯Œ¦nä¶XC—‚?m#]’L¥©ÃŸ¦úO\ìrýö¡Ÿ2JGƵSÅÇoU¼â³G#e“ÀŽ,ÁŸ#ë&!@ŽÐTß©è·åêrsïx¨Ûâ¯é'Áׯ¼‚eG)­‚ r/8{Xߌ1ƒð,Û´L¬[„õj*où=¢>Ëð·RÊ›Ìlë¾ù^Ðõ ½:Y#£U0ῆŽÀξÆH ð—ø‘uƒ W磷)ŽÐT¥GÌ*õWLJÝÝïžP2hýtK.œQ®ÿø`„™VÁ‰_#o~Øôiȶú?Þ»Éö`‹êmÕ•'·´ÂßÂËR[ÅWÁTw÷*!ñ[åjgzŽ7[ðѽËÚ ×èWÝAçô`CÕ 1ýÎßy±éÞc©å‚!³Àäëk¼¡ÆHšG³Á’Ý!@Þ§Pé¼¶Dj‰™©øÀ^ÖÅKáÈ( v*8."½5È ¶*©Ò§øSõ×ÙŒÙèW†4¤Ë¦þ1?»È²÷¤rd|Œí¶"$~Cö¾PÕ”ŽÙ¡,Â_°dooô«žÄ”o‰Ù ø^ýÖsÕ«R‹¿î^”ø ZL’¢¬ÆŸˆk(ÀDĺKõ¿GÑem0^£_â5¥œ/Q+üÙ˜ÎW/»µ,µ#ã«`\l·>ÑaŠtây:Ò$"øq ®Î<9ìRðÚT;², Ú%tº”ë²ue>þÒcdݸ †©Mü­æ*©-jrô%òPЧO!yò±ìÀŸˆk(põõw‡€¦]7Båuø /«`Æk¬:‚ví1,–lÅ_GÖ}«`„Äom”åÆe‡t÷¶q$þû'NÃÿ›¹\7ó“Oeþ8®¡ÀÕS6²>Hå5²0(­Ñoô»Š¿¦åpîÞÁ™Ž¿6¼}úv¦|d¾nZ9ñôŽt¨N`ŠË?^ö0yxf Ë®~–<}¨ôRÝãL=Cǘ]!@é~¥é?ÀŸÏúoyc’ñ§5cîçÀÎuø©_ݱ Æ-ñ¬$ ú›8ÞÝÛX ü÷Ÿ!?taÕùäé釂>É—Äé?Yø â☈zV±¬ñ*1Žtnü+•Õ³+(£Ño¹»áAøóè6ÔLÆ_?â}Þœ–A÷«‚iŽžø Ÿ_n—ÿ¾·…üãÏñCò´µGvà/˜kˆc"ºÿ,~v¹h³˜­[âaOõØ nXÙ”Õè7î²ÁY°Œ¿;Èÿ·§ƒgÔͪ`|\u³Þ¿ºÏFôÇ…—ÿ>‡Ãß•Øÿ¨âÈÛr²®!Ñš§ÌÇoÞtéÐ÷^öPŽ:¾Í, z«4©¡ Òþ86T£;“ñwÿ9ü_Åà´ˆ u«*˜x‰ßЭAÇs!Äå¿çý§×°ìÊg8ðpúÆÿdà/À5`"bÙÉ}û¾)æˆ8¨Ch™—Ý‘sDÑdL‡SþZàÌ¢M }þãñר?šõ“ ÆßŽ_îéÜóËmi1²îT?ñâéøà@\þûL%»œý9/pòGÝ Ø^ÀàæêŠú³$¨ Ño|ý'à[°f0þØ wþ¨ß†4Y÷©‚é2Ê£âXÙ_—›{@o8ŸÿþØ#¼›Ñç>Vöȉn…¿=X®ô±+®¬Põ9Yäýx“Ú ÒJ@[uXÿ…U°`oí9 ƒñ—V#ë.U0<›A¹_½d ?RMrú ¶{áo7V€«|ìœkŒªTGuæ$ðUâ(„øÂŠ?mFÖ=ª`ø &9°”Î…päOÁ?¿p´»á¯”S€ãoPe½e~Pi£_ •âOý|fsŒŒÄo„HNšp!¤7þ@®fØ/okVÅªÌ Ö'a1µ¦† U+üý¸÷ŠSýznOŸ‘e}ŒGNâW,|!ƒ%-ÖcšãoV€ëöã{TõOiÌìp´ŠF¿²¯’줥Vøö’呜}3ñ7ÈËþÏ6ö^íÖ¢SɯÝU0< ¥2îH>Ú\—S“¶øF¶+À óêÃjâwî 6é“Ô¨ÍkNªVøëútuì#Ú Ì¡»KeÕ|6WÁð‰_£BŸ„§1jHýI[üùG¶+ÀM¬÷Ù§Ô„¦27¨¶Ñ¯T’ß©P+üݽ}ùÕìùÏ5—gî«*›Öz²µ †Q’ø žÅ·1kôŸÖø ŒŒYàvÖõ¿/©Ñ^™TßèWö.‘Ô˜½Vø;pÍÍ›Ù_¦Ù¸N úò×*·‚,­‚Q˜øµ˜ÎÇ¿[öÊøŸÓšWkü‰FƬ# °kð_ÕlY™Ԣѯlc“Ùgþ4—Ý:„¾z\eÄ$+«`<ÜIL}|{DÌ¿››{wß©ú¶8üÏo;-@$«øŸåŒŒY‹àÖv—FüŒ jÓè72þ"ó/'üª Å«ËGè›?ªä¬€îÌÂ_^FfƒÐwï¨Û0³­ F]â7˜ת/ýoì’ÅæA$„7ëñ'ïr¬÷³U?Ÿ¡Šì2h^$‰ÿ9„|šÐ3³ðdzéçü©EÑY'"4êcu“UU0Bâ×ìT}Ãá±¾ü?5&ÿ³"QøwåüYø+Àeø+`/öZ¢ü3+¨i£ßÈø‹È?ηÄtgþ¶ 9Þ¾>÷tÅÿ¾«åDµMÅ PeQCUÁøjÕ'~ÅøcvÜ úÏä‰Áÿ,‚HþÝ,Æ_¨<Èžî±^…C™A!@‡11‡„"ð?³ÁüãÜ_•Yøúeó`¶ü:M'ªs6ù7êî3[ª`Üœ)«nKÂ_á „¿ÊÿYì<Üíð'ÞGã/qˆ=”³KùgfNЙ õ‘ÿ9˜œYåeþˆ‚þ/¡U‰fåZ cW—É’*‡I‹t\0ÿ®©Š0â.„ÈüÏ"ˆ¤3ÿn¢ð'Þ~a$gwª`ÄϘ ÚF¿Rñ‘œ Y½1:£ðG Öç²¾Ì µùêb&YQÃgã ªOÿ®gU®.7w*T\Eä~‹Tl½O^IgþÝ„á/Tž`·ôP>TßéR*þ"ò“YZ3¸=ƒð·¼ÿ Ûš+·&bd;1êŠÔ‘ï4f~L«º¿ñ  !£øwˆ?Ñ\-$ pÅ•çUú"iÔ_ÊÖ‹.ÿÀfGæà]rÛõßž˜‘Ĩ+T•×Ëø*†'!2koÃFåBÈ,þÝâO4Wó0ËT1âg@P›F¿ªwûUO³¡v_þçò¬UAÆgÉè*!ñ[H¦” !ÃøÇsÊ?ÃN¸¾VñN–ö!@ž×ìIå ¸ýÞÂPü\*B¨À jOËä*M¿1|2ƒ¶§<³Xÿ±Î9Xže¿¾Mq*ÝC€Z5úUéð$‰ U3ümî÷£»6K[nŸÜrçÝÓÈRÖ á`Q2¨ÿ=QGV3Ãîœ*7/s«`´IüÆöd’¥êFÆ+@ŒøéԬѯZ5lNʦ¬þöÞ´³}Çû¥¼õÖ:tTðÕ™'‡]Š5²Æ„Ð5#ÌØ*˜-¿ñÃ-XÚ“ÿåR€?‰H´‘uÍ„­˜y«¿br¶Æt!ŸôµkÜéR®ÁÒ‘ø{ÈjN>,å­s@™®¾úú»½±GÖa‡JÕ/òŒ«‚á( UÜÍIiq“ø“¨¤tÑb­]3*¸Äüù!¥:‚÷íÚÓl oô+ß`qfþúŠþ—"æœà«ÿ¦8ÞÈ  zÞ̪‚a¸¶Xúªû#Ö„wxM/üÅ“.½Îl¡ /y¯˜Ÿ¦ßNœ„F¿²wþÄ®×áyù+rõçþ»÷gDÁ÷üîºË‡;bŽÌ '0—«Ëf`Œ—sGô5 WÚõ©ÙøÓTÿyMp,¦) R:§cXéúÍ‹JwãŽ4 Ö§WŒˆN “ø{àøR j<Ã9Z«á¥íg‘§ÿ>ôRÝãAç[t‚ô×&¬ç©¸9|L]ƨ¿'~#lÉŠ{‡ßÝdâ/®Ô’cúê(³Ñ> =O1#¾5-C€ ©Š‚ÄX‰C>g÷M¥»nÚ'íÍíC? ,苽ˆýWŲƫâl/V€3TÄM2¬ FHü&e¼|âª^£²“ÈüÅ—NbÿEO:Ù°,2Ùîþ»Ò•mIÃ`c²:]Æ?þ<+átfî€ôÇ»±ïúJ¬?¨¼‚eýTâMÀÈÞ?»<îÈŽaX¢¢$£ª`ÚùÄo’V _÷J}Ff'±ãg2þ$픵:},Í6¡bsëß)µìÓ/Ø”.êO„?‡Ü†®ôÇŸ í>ôa³e]o¾/®yÚÁ|üvü‘Å plµŠ]ÏÓ˦¿$%ñ´æÍþøhvò:²RG{«$ °ªá¦b…Ÿv!À$6ú• À_;è¿åƲ·äæ‘P,{|ØÝýîÁí“ûö}S\QeÕE††iÆ]¥ò«gJL²¿AF‰I }‹ÆN>»é?g+îˆ}m™ˆÐ˜šªk§+üü4 &¢Ñ¯g¿S ,8üñ •Ý ]z]Uä,|ÝwœRåHññžøÎhÒ¿bq \QÙÉEo&¤’²þË,ýÝL^p,wËfP€µ—”2â§W0~Ûç¡ù.j)€?²'gþÞÒêƒ|fˆ?7F4[¾!LäŠ «L¨‚q™ùèS’G)p!Dg'ïøÃFŸO}§1ÆhiÆñ­?ÝS!#~:…ÛõÚŸ63áéA‹ÜÊõ‡?Ÿ…¤¢š2yZ}•«?ˆ\‚Úñ%þ2Ûk† ¨‚±õ)¢$à›~Eg'ïøc} tK9ðqÛem$;Ü °áPŽÂcIélOÀóÄv~©G±þãñç6žƒÁ½ßð×fàê"— v}Ž¿Í:Ÿá«`šÒVý ‰ßT¤â¸E©k‹ÊNžÎñíôß ¤C%°EòzS¤­¸aB㬻r+ÞåÓ"¨}£_Öµ/ÑQOâÿ–yÂÂ?â”Tñ~‚Þ¨zœ bCMWüÙè]î7FôašÊúkè W¡ðiY“ÊÄo# æqôÿð•‚Îï&rÄ °í“;EcRÔ¾ÑïÙb¼*Ÿך0#¡\Míç&ˆ 5mñÇè ~hµÃÇ„ˆ`ÖçBœ¡LáÒ° ¦Yãįu¡Ò“Ò|‹/iZ&}õß.TRCžðyùª0]e)øweŒøIêtq ˜5nôë+…²—ûƒyZ(¾Û¡ö£¹Ù7yº þê¦ái;‡]¾+Ü)¬ºt¤Ò¦éVÃ{z‹F·Ø·¯6©[Õ¾di™$JÙ+?àmŠ@'®Îáý¾ÛidÍx“-<Ϻx:2CØ!YcBSm ñ­ '¹‹s“µkôÛµ¯Ç ÍS0Ø@F{U;Ö‰ˆX¥óþëÞŒHé™»&ZýÁ¥ë!ѾUᔤWŒø­ÕHå4ÍEjâ.„lÓo;Í_UÔ‰ëõfÄ_"ŽÌ0ÏãZˆ…zùJ_:+P€mÏ=©dëJYPóF¿–‰x¦Þü$\2“ð/Ô’÷ñl¨ ™Ž?#«ä7Tb®Ò¼ŠŸ8W+ÜÀÒ© FãÄ/s´´BåJdLFÖàÏ忪¨×ÿ˜&Êð‘Ù`'™IHhm†(“¢ÇS=­e¨"F|.¶Ÿô OxkÖ,ËU†çýfeDU;YÕ™}þCÌÚs4dBÿéMÇXw5¡âh×[B\ŒSWÁÌ.RmLHLA‘ç mâ׎HÑÁ¶i*º†:x.„¬óƒ¯ÊuâºæË^¸-Ê{¼›ñ4âtkP ã`"(À¦ûßV2œöT„µnôëÙˆ'éÛG£PÓygàßVy ‘]?Y#«@hIÛÚÉSq4ÃäP²;+óÒ¦ Ʀmâ÷<œ]˜‰=…®Ù*º†ò\ÍÉÒD)Ñ|'®q÷ÍCFGYyÑráýMz½Ò¶¡¤X `Êïþ›’ñ¤ ¨u£_b$üjTÝäxBåE:4wØ2@ÿ)3þ"<ãÂ/!&àþœ%ø “•­Ò4©‚á©ÇMÚ€±kž‚Rp.P íH'fšé?¡3D§Ë šþà3ÅÖÀïºÚ¸XTh¤+ÀYuw~«D%=¨u£_3]½46Æ;Üp$ø¤& Eƒ–˜ÚŸOF½;óñÌmv 5¡&à¶œµyãj”YíiPãÓ6ñ[Pœb`ÕøkæTlúD¯Ëë?'®÷_­¯{%nÿ…#¬6G"Å: Ðrs‘‚%;¨u£_8ñ6êñC!k+øG'¶óϪ¼PÆ-13!þÇš }4Íɺøiˆ ¸©ÇÖb„Fë]&õU0M¿NˆUÁnáß>V«h›œp.„Ôê¿@'®Ë[Y¶å§qFV™_p”›S+ØÝ;‡µÀlýµÓŒ(É!@m;]ºVaˆ}ù\° ækmÜ圅à9•¶‚EÛ tFè?Ö¹!`Ùe„ZÀà¹ôªƒã*T6µ©®‚Ñ6ñk,y|Õ_Û—0O¤mò"…¦ES‚¹Rªÿ¸Ø±ÒšòPì‘1MZC&ÒmÑG"è>à¼s½+RRC€Úª¿fí ÿ4xûnÇŽ• ¿d¯÷)À‚K*­“¦öJfè?–-ŸÅ™|œ 5@â=çš“%ŠóK©­‚á¹'µÉê{JóÉ¡î§×÷½—8ö»ð‹sìj–J¸R€¿·ò€Tî}V܉‹­{~Р?ÔÅYû<è?M¦”áC¶!Ù¡SxþçŸè¹NGšÄ ¶~/A î°à¾]¾šÁgÖ›ÆJ× è¯îr\Ø`ÏXü)·ÏV±L‹ì+6C‹hëÙûüLŧ SYÃ÷Ñf+®e¼Ð"anÅÌÈëÚ*ïŸ`.„ŒÁç÷nÅ9šãú³›"QWÄoXp g§?€[×IàœhÒ2ªËìÅßø»§ A_¥–ß bÖ6ø'©s:¶õê®È¥înˆ¿Óh-DùRqpÜ &Èt®WCª`RÀÂÖ¨aâ×wN.ãwõŽ?ޞƄ^ä|ô l—LVV[˜X.„ÌÂw¼ÿ{^ÖqçñÝA¤XÇ@îÉQpÚ+Y!@MýÚ¡øbÄëöp‡Š$*;Bã¤íS*2k±h´!MÔÏ`Š¿6li—p“GT–ØüúVëJô+ÙRU£iâ·JýÆlçú¼ÈaneÏÝäg¬'(‹.ñ³SåMž–ISüX§•ø;öAH)ŒIŽ>ŠoÃ’Í9Çå_19!À-;]ÖÃéƒ7C>v!6êñ™Ö[m}ã -êLÎZí–«¦øû©îî‰ÄŸ JÌó¡°­#<üÙÍ蟧$0š*D¯Ó`'cŽÂᣪç^>CøÍÎ+ˆ½RY„ÐXet0Þr!dþˆ8E(q 攘ít=[q¥ülS•Ž»HmÔß ªQωÃî •ȶ^C–¦—§¯ øÐ7¾°VÕeùƒËÍé†?ÏînH,þ.ÀqßÙMD°¨ð£{Û!1C‰aŸŠ*§)³¡T/$çÝøOr¼~³èÔïéŸM†‡*l<}z¹2 ~16vªDŒÃ ç]c}É$„µìtéÝ'Þ^…Uœ5d áïQå7‰;x‚é€ÿ`:ãÍmÔ*‚™iñ—Ž¥pžåb‚øK3˜7tÏGh¢¢+éU0BâW‹Óå@04Wuů^ ª2Üø1ñUÆ+¦ƒ¸˜$ÝåôÅŸàÅC«8gH±DÕ>|7¾Ÿx}Bí”À`‡†ê¯}>œxûWÀ+ðZHN6·Š¾‚ÌAhdaç—jÓìÅ©só»´bCÍ<ü-šF6HHóá~²™??ä¼nž’ðB²«`x?ĨÆí\Nλ @\p¹ÿ’“s:êû½OšJ0îN)³U ŠM¥-þÚt±ì·-PÏáú=<Ñi=ø×+G+`ÄoH,å„–~-X‹¡W7ùö5ôQÜÒv#˜j^“ÀÝÇÓÕ}ÉVj62pÿµ ``G«pÝûü“n¸yJJŒ’Z#ôT4kø=1‚Cáx÷F¿Šc̆6‚¸ŽGŸ€°¨M9Œ=A\i‹?ŸîŠ1~»Ïd1˜‹'¯¨Ù<»¡íã§wÈθû´´£4++@hÔñ›éˆôñ˜ˆú‰;4Í¥K±¡f¨ÿç‹L@¼¬Ý"Øýøï#LBÛ8“Ï]Í;cÿrøUïß'ûà 4&$¨a£_ÏzüýþõžÈ[ÂQ–hùGþœ¯‡žQߪâzãÙPëÓýø)œ´•Ñ2M¯çŽX“‰¨æn…ëÿäkªŒm;yU0ž*½VH4ÀÑèÉþ‚ªU=9ß×ÛTíwZ›@£3õ¨€ :˜Äp!¤3þ\Ÿ]c‰6MGH(…ašÉÎÀXiP€«_ЩlšÔ°Ño 6øût¿Òvy SPqï3êƒJ6 gÔWª,@mØPµÁßÿ“zგ¶2ÀÁ(<Äø#‚ Ø•÷W¶*á¶É¿Í|;„„WÁ‰_õrC­¶aÏÇ??Äi?‘ØÚÍ$Æ8öZ8·@è`Ö)²q[Á…Þø3Æ4ÕV2öÎÞ¤AàÖ¬SÀˆŸ¨ ŸÃÒ‚:¥âw¯>–·Ñ®?Tƒ7‹eÿªÏr6~nJ6Ȧ-Sþ©ÊÖà·÷Î4Àßà÷ÿŲ“îÞÆ$oeœÿcÞnœ‚åÍ™€¶{þƺ I¼Ê«tFÛ«þ„įúb›j°t'ø”›ï} åi$°°¾&Hn̼Ð)J Ï…`O?ý—üUü#—”¬ær$놓»×$(È7úÕ"¼dWß½Æ+z¦ÕÈ-·¡!U oì+YùŒè–¸y¢#NëAË”Uª’)Kâ/¾?å/y^Ó…Ñod-p}L8ÂÆB4^kß‘Ü"_,?·Ð•hº'VÃÄ/OvàŸõµ9ˆñk?î[{ÇÚÚc«Šƪ=BÚâOòÈÚ7 óÁG5ŒbøëWå*å„„µkôëvÝÏ¿ä?¨“ó™ è%tOµÌû&DHÕ.4²p1\Ç€U‘!4«gCÕ³YÏã7vÁ£VÂÌ×-ŠãÚÃy×dÒùeÎû“Ö_ŽbÀÞœ.…Ê)U0Œ•÷IU_Â:K|ÞõŒì} `—°±aTÔÚñô$! ƒ™«DY$€ !]ñ'YãéXa¨ùhª5ؾñö*Æue3â' ¨]£_{¢wx¶§Ðœ;¼o‡ä嚤¾ [¶^#8kÐ1àCU„¨êÙPµÁ_^_÷¯%ÉI¤CÅñDÕÓy„˜€„h…ÂËú›Š8Ê“)ò3L ®‚¿Õjè;çÝ–ú³–5“X0Bšù+@õ)žŸ NÊœï=’80Jé`´çBHWü‰G¶#§ ºÙt aÎ0Ô‹=<–,é†;¿IyO¸ip„û\1B£Þà lþ½¶5H‘áyY–ˆdZ8½ÒóØùû5«À¢¶žQüiϦï-Åú¯yiÆÍ:Ä4° è Öl,U×NeÙÓpâ_~z<¡U0n­¿­Ç-:êÿy{¯‘>X´HбE4þÈø^¯²³µ·¿ ¿!t0J2g|Ó0í¸ÒÁüã÷6F}_Ðßmá'Änâ±gÀZ{saŠC€š5úõAVû›¿“¯8âÐ`h †Ã©¾ÐçÈZ°ÚÆž[N’é㎹ԸÙrŒÃww©Qì&•{Íöß GMð7cЧ¨øH|Ma-šÛŒ¡ÖÅsHð^téêxg.Bh´Qá–R—ˆ3H­¿eÅÀôàß¼#¯Ù‹µVÛÄ´Ÿ÷øTÁsãwêoëàg \u¶@á9A~)Y|i¥ÿ‚?1(Š®ˆîZúã¹|6ËWÏ-GÆJ” ³(£e3âkԬѯ}1œx›Ï9é@zC`UÊñ|{Ã$nÌÐíKƒ¬áÈ`{ ˜£—«YR*[bjƒ¿!qVï+?àžt~rËwO#š¦sxÿïvÌ< ÏNe¼@™w6´¹0X‹?\Ñ Ïx âŸW*IÀ$>ñkP›øµ öú5tÃC,V?:yíç; ”Øk¹éНŒíÎg‡Àõ Œ’–Qs!¤JFV>!Æ”`%Wà?sÙn¬%q#1ߘ5pîj¹ŒøZ†…F¿ª#Îu¨·ÉR³[¸xS}X½ó¹ûÞ,@!g¯Zýy¡lê_Paå*¬ŒáQ`+ð°¡ùÁuÍà¯|óJ°ßJ¾”ÂYÎ_?QñkCøµ’¿?ùÙæÊÿ$ûªæøÿ¼/Üþž®9xzÊã´†ô@[†Ù°ô… \3ôEß§8z6ÈÝÚ´b×á¹F›ÄoåDqs_ ¸‡× ¤n¦VÑ=‹Æp±â:ré ì!OíìÄM`ŸV2hwN&5ø“XŠ8²˜Hò­Œr§YtÔÁ» ¡å2âkÔªÑ/iýôÁ&âß »mC–¡"uByØ öƒQ¸#è턤 ÂM@%ñÞ›ÊÊüVÑ”:ü}â‘)gl¶3Syü¨Ü«2/ãî7š‡ŒŽðßÁ¢…;‹çĉÕë'5Šb 8±mÊ9Ÿ÷Z!7ñ¥yŒF‰_¾¹o ’³ãÊ¿TñÄÁ~íWCtsC¾ƒ¤HÚgrý0½ Ägñõó®ØA&8>rTÁ0:µãBH þ$ÈZÝηÿåObDÑv¢"a;ñ ׯçÉeÄ×&¨Q§Ë* »Nœ z½&’y° ìŒôºB‡e!Û¨5¶Þ6àßýíIåZ ªFþGÙG÷ÈyøÇd_Õ3ü²l™!:]®3â{w½ƒ=µ8eB]•¢ØXn½ay‰À™¿P®)W§m–S£Ä/iî;!P2ïü&g¶^o‡ °_ûY—£b¿ç>ï†óxB¢üÝÜoí aI,½"òŠé`lšµÐI þâKÒ¡éáßÏúäåQw(„Ù$(MÞL"¥0pgÊeÄ×"hÕFý²«ÏܬFC<s¨gΔ€qز, Ä+ТPUîóñH‚ÓZQάaWn㦴ÿ4FÉÐO¹YyÿÕúºWÞz¿¦‹ÙùB§ÏK85|“è°ñ&Ñt¹] ª}µ­‚iç¿ê¸S‚›ûb©âþ»ÀFŒ¿­×~Íkóy~lNå¬a›ÇCg[0X6_• t¾Â¦¡ª¹Q±§¥´¯C³;÷‡G+f]QmW$¬(s„¼w ècÝ‹€¥çgòñ5jÓè×úéóy„ß”3¬Þö‹÷†Ç©´8inne€<âåª^9jjõ_Õà,Kò¿—cgªå§ÑFÖ\ü—¢Ñ{ãÅÎ<3ÐXžàK0õ‚^£G¡ÚW&׎WÃ*˜M¿µAÍ}YWýªŸýéùà@?²gÉ_+ª?Ыˆí„…c/™ú=¿ø ^Çî¥ é`š4j[œÆùqÖµâ4»ß<=ª#åÎc…ö¶L wÄjvp p¬LF|Õ!ÀfM(ˈZÿ8Çïl¢1t!z'|I ˆß7ëxþ8(D©¾¹E9‚Ui° ¥úïØÐKÂNcÙ)Es è^â5÷ªãgx|+-=º¼Å3ò{ŸiV#$~«T…²¹æ¾ßöж/rfp»^›ÿ®—AtpDU޼&è´ª¾³Y†üñ>AKržÙñ¾¿sbä®R xVŽìÕn3”Y†÷ªõŘ­… 8}íê$ÜlnÒ ê&yç‘T†µiô[ ný?lí¦èAßʯ‘Ä@Š~Ô·!5š\‡ÌJˆýü‚âEV£ 5ø{+/O——÷>~vKn2„ºç úC]Œ‘µ,@èäÉݱM@fRÍ*ŒþIæÔˆµg±Ì¶óUÁxùÄoªÄoã1Ù³…µýîW¥!Ú¯Ì)h Ôt}Ðsaà{À~P=YT¡Ëw¬(ðq83ñÑÅ jcë5©ªMëú—ÅhV×2YÇdjKV„ø$F. â„ê¿n—w"]UP›N—@võ-² $súp3¢¼W4SJSs|˜™Á{¦|ÉJðQ&õ:®x™™#Ó0d4þ‚çîØÊ¶ÑhFì:'œ7* 0¸ #ýßoˆlíxáe¹øQY£Mâ7¨¹¯kžƒ¿x£Q¬ý\¨ „»o|6lÍ:Wíëv3) ûs.p5íTF£ Bzã¯u‰u*< '>`Á OBkìpÎE(Ä}²bqjB€mze!Hù|«àNéM¶p›Àµ?&mŽZ€«(D‡v‚ Ø uâ3¯Øª8HiP4UU §¯Ç:c/¸³cÞάþìŽ;×ûLä™H3ºÔWÁØzõ}ƒ‚šû:aA}ûÓïYÆl´Ÿçð8‘÷±µ÷ƈú þëàW'ÓdÀ~óÅõ{ë<Œü5¦ Bºã¯ NZð}űfl¯¿G ˆj°c>ÿýòWµ’ &~¦@f¶R¨x æwö˪üM’ãÀ^¨ö+8¬E±CÒÈW ]¡ø0p§"s%³êïO|‡öŸœ;’g[èÇ6 .ö£{N׸َYòIñUWÁ‰_U 8qs_¢ýNí³ËÁqH’•xz€Š^|QÕŸoÁÁ~&¥ õÿì±Áئ”F .„´Ç_ó|ìO ?ƒéxõúýQÿöB„m“iñ7¾øæ²öÓ6…mÎøMuù»³@võÙEXo ÅÂFÞ`„9°É¢±¿4¡%¡ß§c¨ b<‹¯œ®t´Ü<›¼Y¬ÿ؆/n)Dù;bBˆ›ÛF;1sðªöëWnhãZÿÈKuª­‚¿j’|s_rWI'iýºÞO œ>cÊaF“ËcrÑ3 ÷à:´HFÿt©¾Ú©†§ŠH=ÿd"ñÇjXÐüp ~õ•ŸE ~B¶w–Cq˜ù4l×L¬_–LjߠȌӢÑ/!»új—@vê«ÃPìØ‚ÞüZQ°p|gDS÷$š¿¿®@é€ë 1ãÎ_®ü¡Ñmqk]S'7¶ò÷ÏëkÜ$Õ¹DV¼žª*ƒ‘&‰_ÒÜwºÀ§ ’¢ËÇéÍ0ŒÄM<o×s½z‡äò¾ï;ø ~2 /¯KÊè`ø¦*Ê$3î¹xÖö´…}ɆßÞÅòñÀ‘†±þBuâ‡Üdít¼=÷ŠœéâC€òÒpZ4úí%þéF=_ôæW2'€‡C =1ÔeÔ¸²ÏÇ áÄ·Ä´fµþc«¿@'Nåo‹£T6ùºõú‹=tAo°1pzl®¬’5þ¬¿’*oµú፹¯£Ö ÞÐÙß_¿ÅÜ.È 4î0g_x+–]<ú*ì«´Ar¢Ño&`ý¾:ç[Œp“2:Õ\?ß™]% Ã#Ñ{l,é¿OF³ŽŽULC¨ð™÷dM±ü ~-°¯~|2j…t÷@K¶=[燬*O-™žü ý^TrWÀ†š‰ümx±N‰t¸‡fZù(à…þ÷"°A¤º¬z(ÅU0.þ¼UIsß3Ñ~¤––ÙqãSüÚ¯ŠôNðæLZ÷w—‹éYmÊYNM>^þŠX6K{ÿï™uãÑÁðK­1«õËZ­ü,“Ò¤n2BË÷ÞãäJaÎNÁÓ<ô«„†4ú²«ï¾â#—ájX[Д‹*.ðzbÄf¬˜ŠàöGŸP1’φš‘üCËÀ>Ó•í\ægˆgõyO_‚á8^ýä£OvŒøUQ~À5÷]íä´';÷§ù~íW·êØÆ+À¯ öq:(^,ý¡_¾ä!¯£‚rÙ£TÉ…1øÛ[€Pi­Œ½ÓþýäUL2Ág°]Uð ,»zy!@ ýÿ}äBž¤4Ò:³àí`¿šÊˆ‹âÓÒ~ð<Þ6 Îÿ>Oaä²]nÿ² å_;3öøi49¶¿v» c8KÇn>“û"”eÏC Ë"gŠª`4Hü’æ¾ãñk¯ú˜¿{ó)Ô@ˆöøß}¤ç|ÉkOp³šVCùO9܆ӓÑÁð…m ¸Ëi…¿ú™Øs2R¤#²È„œ;㛕ã}¦hÀÔ„…5hôkƒLìgzâûX¢SëV« äÅ¢OlþÇ϶ëõÀñY/{ÜÖ4á_K8þ<;±Œ–‡);ÛË7Œü)°S ¤ ¸Ó —ð\t»F|©!@õ~pâíŸë±ó g!F‚.h5ÇM³#…°l0=‡‹/_^­äp9φjK.þ˜i½uìW»’©ÿXÏ¿>†A¼{½ì' £þ†OÉÔœ…SØ[e¬YU0ê¿\s߃]°V\Ä´œ½ç).ÃàØOŒÊ‹þ305ïÊôŒ¿z`u²˜O®ðâ}ùr¼2áÒ+d¯žz¹açŒÅŸŠ‚LJOùÊ¢|Ìi(„ÙÐ%-½Ù׌Wxá¯öÈØÍ’B€^‹Ú3Ù5•q¬Ípï¥ÐÆÕi7ÉÜ ]XÀXY|túO攤ո’ƒ=©ø[§×±g_KªþcÙã«QqËòu1 (–A È›®ù–àƒ˜9+e€DFŒúÄ/×Ü·ºZ¨¬óÕt®îÉù¾®cƒ13Ó®ø§\­ÓñÔ`0e¡Øtr æ™Yô“YØÎ\ª„†ïA£à¨tÆá²ò;Í«¤;ûä í¢ÀûU® ã*¸MÛ‰¤ ÐéRyÜå"œµUßÔß744tLX2Ͱ<¶ø§qµÉ˜­ð÷ëüQÞÁIÖø†:ƒÐ„˜uHmpÛÆPà¥^ãÈÜ\FEN¹S*¡ Ʀ6ñ µ=¨`§Ÿo«"Ïǽ‰Ò󅢯q¢A\¼?W~Å Ë|~-Páx¶„PBìËAøp@}–\:Å\ˆ?ó²®Éh¼ôšßÑ{ÍÃT—E(ÿö³š†Õ6úõ´€qûõÜHüΜ™Ÿ_¸Ó¥¹úÛõBCj·¬ã ü½éÊlÓÊÿÄFé) ­ð7€|Ô€¤ë?–…*¹±,×~ :þ°½8ÒÐZ }š)CI5I3pxÖA“bÒ,®¹¯Þ/'[ußoÁ˜ô×M;€fÅåc”z–píh+Æ, Âù¹Ÿ}‚m\YM‘{àT)BFâï,°l7I7v…°¶µèõ'ÀÒº]#~Ü ÊF¿¾– 8Ò1r·^o G爞hfµß7£¿Cßj °ìú‘Œ¥F¶9+ƒ U+üõ'u_ ô[9± yEìý¸v*B\±ù©ž+ÌÄ€U>¹E.üb¯oOöfQášûnóúx'Ú‚=îu9ˆ()'hÆ’SAP‰±…xô5·AÂùؤÖËÔd|âQ.SIfâÏX‚vVM¼þ‹‚…ß84ÈqP€}¥—¢Æ ªìtÙn:=Þ¾¶×E¨wn_›_Ï&N&}Mƒƒ3õîã[ên£Ro]iÈïÆÍÉÃßãgñG™I…þcËï…ù[Ë2wmZÏ?;”³Ã ¹}/› ý®òyõX…Eª¿zÂepØÍS—Wc¬{Föh–  Ǽ‰€_i <ß2p˜Û¦8î¤Lž/<“yê*CñçÜÝ5¡õa¦Ö‰>¿ºèl EÆ[«(ÀQ}¥“NÄ êOY“»E¿³gÆß?ïA<Ò©÷W'Nn~j¡ƒ¯\/ZÒV×ï)rrUæòg`:’†¿S·ŸÐíH‰þc­¯üï1P‘Éu4‘¾èNbÏíÅ7|´t$nŒÚÄ/×Ü÷û p ¯Q_ 1aË€Çðz2’ø¦ëˆ;!à3ä£yþ œó™-25cŽ×Ê»ž".„ãÏ]2¨ÿ=ÜÓu²FÖe¤–0eçxÿêMQð3!ÔYEàwƒ¤û 1C€jýºëô—€fíëU‘ÌÑJ8ˆ„^žÆ$Nÿ±çWä‡ß´€¬8“÷àY¬õåöp’ʆªYýÕÑû/»e)›ýDzs†!ë*´2^‚vuÑ –Ý}Ñ¡‹ó<Á…Ò›²ºbWÁt©LüZ O8vÜ5¬wlÈ;zô±–…hRÈþ×úq§3ÜÌõT^é!ÿÊô¾qwuþPBŇò Y%\©Åóä0Á‰µ<+Oÿ±ŽuhGUþ¦°¶ëçS"¾¿Òú;3ê³êàYþîÁÉÛLŒ UM·³þ T¾ÿóX~géîñéïLlb¥&ü,—OÏ” åž‚ã2MÀiûŒ=ÿz ?­€ÜhìµWç—:ÙM=N°v0ÖÊÆË"Åï2ÄÀßnÁ P1qÍ}žÛ˜Þ‘×ìeë þ‚»¿¯ìõv‡3¼7‡;3|¸P|yÝ%›ñ(ÞŠNÊÝt ²w€ÔâoýÝþ€ÂëûurGV >pIXÓÆ¶(.‚쨅¢×Ifù›ÏK5n¢‡•7úeð ´‚Ø2ªŽ¨ˆãÝqè$&97¤3¨œÁ€9­ªò•[@`EæG5HŠGg‹þÃÕ„æu®‹+”¼¯dW\yŽëBjñ÷›báÙÅ!¬lýÇ:Ö`Ø|AjIˆZüL¹˜žðñ¾|üb½Ä¸n´ òF¿UX¯”á½÷»ùQ'…›íIºÌ´V<›@3³ÅükJ¡‘…ÌϪ–ŽÉýDz¦é«ÑØXqÞ N¶¸çþLÏ5A;?:K^âѪ`T&~¹æ¾ ψµ»ëjìûBAVþú *øšœ/œZÍqÓ¯'kƉò2‘}yÅV¶ë¸Žâo+ümrbjñ×ó»ë.NÖýóè? çÞnÉŸ"¹o÷¡TœF°`oäSÍv9ójÔ´(môë„B‘Ö5ú‹@üÓÀéëHÚí¸DÛSÅE xaÌê²þ«ÇÆVÐh²†Âì[“‚¿ÿ\ò£tº”ê?–S­è\,“×õìÌÞ&®ùü D^"Ùc‹\ãQ—øm²ƒÑe^ƒHû1¨',:Æ U¡>½YÃIv¿Åw[85U9ß•³”õ5€µ¼Qfè¥Yf>µøû÷¡—êÿ?)»ƒ Ó‚ĶŸÀØéðï¾H04O s1G°÷Ï?Tê›lŠ´éÈ>+æ!AÃS`ü¾ì[ò‘…Mªí v@¡XŸÇ+zž«k܈U/§Âƒ UÚÝ•.×];ÿŸ—ZýDzÅ_¢¹Sc5úµ¯B winÒ·©Ñt©]£x£:¸ÈÃiâir•I ×€¦7‚u)h?¶ñч¶ez®>Á˜ÆÌ©nÁ„(¿¦+ßùPV— ‡V&Bjñ×[nÆ«À^Ì*²ÿ°œ‹ùHXqˆ{ÀÑ FÂì<˜–?-ây[i!@›²¼ÓBÔÃ>(Cœ®»Ç¼é璪ͿzN«.ÍÒi¬ç»|k®Øl'¾—o¤#þ±t­ð—WwϾÔë?ÇÇÏ/[‹ÐÒX®ÀY´¯n%,fø{¡®ø¬D—-B õWÆÊÔ@Ñ}á†J¬ÿ¼þÛ¾çÚ£ÑI6éRYÀwf 7~Œ×0œ\V —t—»^Ö)„Ôâïþ³x×¹†‘;`€nÀRE#ëX¶Í’Ÿ¿+ÔHö~“³8š[*V+Ð|ï³÷¥æÍÃB€ ýò4© ôN¶€K‚æ=u×ùä°}èãøÊùâ€Â)8ßåf]9‰ï£,ÃɊφªþXû³ÏØS®ÿ°ëvÓ×xÂÆUFëÿy¿c¶cC/«“f†UÁðÞ‡QQåUÇn0þ&ÇSàò̘ÇàÕ’Ù¿lK0ú:Æ#´„ß`›î{ÙÃz!b¿ ôR Á\ý§kžv0¿y(2Fæ>ïÃ^>þËç#û¤ÛÚ&šÏ X~úYòRˆ ÒF¿ läýù6< ROº{LËùÊÃ&Y¼ï-ØBNw "Töt¯où£Œ•V¯€vøc}#îûUêõkûó§ùs:',Ž­,Êúrgó5êwa8úˆQZt5¸ †Q•øí„ƒù«/a:à06¼þ/€ßŒ–µÒžkJên²ÚÁÞÏSÊv>ú„e ÄÜ‹$¸$Õ»çO_JãBH1þ&÷íËS—¾˜§Ë[¦td¶¥™v—†~cûˆˆjÉÉþùíÁ ðà øURÒ õâ³]ŠýºëÄ9<'ÞFGR'ËPña·§À!ÆgÒŽÀîâe ¿xK/×ÓâOmYŽ?ÎȲsÿOè? £šÆµPˆµF!¶ÿÍo9èw™b{«hŸDŠçvQŒŠÄ/ÓÞZÍ}KŽi?öèm£`ó=<–¶7~¶6qˆÛz=ÇDâÛ ¤œmâúã½XáBÆ|F@Ò*5øÌ³Ð%•#Õø+ÛUfJ Öæ÷ "³ Òœ.`ð¼IHƒˆC€J:]úš ¤Nõ.ŒúQa|þÉ-kÛÙC.6…¬ ¯†fs+}lÝí¾¤çÏH¾%¦-ÑøÓ^ÔŒŒ)Å€Ú_#$ìÃfÔ›Ü~ëk86úîI<º¨‚ñð4Uu²¿ŒÍ\±Œ?ï&Ö~ÌØ+–ïD“ÊB>°õgoÙ9ÙósøóÑf8‚¼‹Ë?~YÅ1OÁ3éÀN°Ä1\¾äé¿ÔãòhSÜpã³àpàçóøçí%¾Ö „òÕÓfä´§ˆÎ¾ ¥ lY¶:=¦?BÛýûínè…ãc[>‰3ÿ|ÍRWœ#6jvê?ìøÏœÝ5±øh `T@‚ës~^:¡-!´Së’bãU0Bâ·IöÓï'ÆŸÁP'òœ/yö.=k?nM^Jðlº:Ÿwï—¡I~°Œ½ö¨ Ñogß›¦s1ì¾!£u•bG> &ßM@Ðl¿u°ë¶ë7ÉA«¾Jj…—Ö?>[õë-Y§1 ÑŽßðÞïxUã3Á„osM¢€|L5ÏujS ý.Âys´ÊÁŠTiúäT9Õw}'Ø&"Çl~},{'%üéfC³¤Å&™ !›ð×z¬& › Ã¹ft,\ô3Ôy¼»ˆó&âîÁ\Ô¥Av£_§ÐJU_u°SB‚Ö¤»GþÁæ‹)Ÿü’\3PÁö70¾Î ëyepµ‡çc—X1› 5mñÇèT9œÐïeû*Çø˜#³»þ÷O¼´$^¥¤K¾ FY⎤Ù+.º©!òé”M¸=8VoäLƒm=°c|©¡ñ'ùï+)F/™ !»öß3x¢JºBIa˜’+"œŸõ…X$§°¾Jƒ³O„?9~[ÌMÁƒ²’îóë×÷úÕÿåÏO‡"gQ +ß„ñþ­5¤# Qš È$Ô%Ú}T«î9•ŸpþÞ7gtMDóbQæ²]yey 6/D¥g]Àð‹oòU0P\$Û`s*×Bša8gÜ@ìÁÂí¡ÊÔ;Öª|ªËÿiû8 Ê=âÊé,kµu¹°x$-8‰\i‹?e#kž‡ »‹Âö\à‡¢¥ØµÕ¿ÛžÄxw#±Uâný|àOã6Ó‰ÿqÞo¿¿ µòLp:ùŒíkwj6‡*œ™ï¯XÛ0¡ýþ€n;~D¿¨zìè¥9#±ØPµÅ_ž–ø;£ö<_^ }>FÛcÍ’ížh+ç„2[¿¼^Š Ø%ì¾²I™6¨ ¹®vñî pÀݵ.Ì“>y׃JÏ yöME£Ýv… ¹™•d­¼~$ËÖŽÃ#>_%TH4.„4ÆŸ2ÃE_[ÆeŒoÆWý"ÎÙ„æùß …nÃwêÉQ—Kš%g‘Š¿v³ÞÁU Ö6Á1ÛÑá7fUá.×¶kÞÒì¼oõÚÑ]ÊÿúÀ•ÝDñ+fð‡á'“zr×__’†Á†šÖøc TV¼k8PˆöTÎeC¾Ch¨Úu §õRLÀvù…L› ¶,ÒÜ7Ô*mÏ5>ÌVr|š3[YÀyr±Ú…œœµLwG3(!º·öŽá>¶:6žƒ#Spª«A 5ªM B¶é?–mšƒÐ¤®òÐûÙWƒ¤ñx£ðÓQüÓ;ûÈS/ª\'«á”"ÖpçjªºÌÀú6?èZHv;¶–oÓhú¼np§ö×+ï œÄ0a¸¹c€§a~²(g?ÛÆÀFiug]Q‰›´À߀›ü牵şçƒÛTwšo\ß5 îþ9v¨A.ä]–Óxów\R=}“ÌÄ/Ñ~zý8T[(:ß ‡çí¯=ÞWÐqËïþõy ²«l7»y áû’!Ÿå5¿úJ€q¶~ÚÁ¶a£5ÿ¤»Œ 'CK|ÅÜ,“3­ñ§L|û õ{Ð"iEºG1àòý·*}‡ÃٸƸi”Øè×]ï§ô2ó±§±;hï]‹–i¿kß=þ hóU³ÑJÕöä^nf}#‚¹ÚÞcë®æ7W¯°5ª†õ÷‰Ø[4ø =VÖfÈžo ç-÷†‹@||HoÆú2ž‰S/'ñË´r1ÛmÔE8J‹Q{þÖ#y Š"õ;&9@ZWxY8Ù²Ö&£^Ôõú¯sä"öyKÈ–éüýÛ1“Å:ù£SR¢ÏMñ¹Ò WÖj£¥Õ‘TC&l™p‡ãÞkäí•Ø½œ‰g ¡Þ™O]áûK%ÅÌ Þƒ@L]©¥öë¸öñ›À¥£RV壂ýd·õ.ãùŠ_¹„´P©#˰U‚ 5ýñ÷Î~µŸÔ4í6înžýÏ+¿%VÁÚ²›Þ.Cœ( #£ÓŸ±: ‘—‚RÿH\ûîbƼ˧k…¼j8.>Ë–?ç·xL“&wÍš.ÇŒwåÁ]PÀ½oö«gpX´4`×é­qóú¸Y©ÿXïžìo ß·…Óìuaÿc¹ÿ'8êð÷6¡L%f‰G«ÄF¿UBª¤ÞÍ6ße‰X!]"Ý=Ö´³æÍsjV‰«ÔÉÍ^®§ÍÚ†EªÂX(”]LÆìý?…’í³?ƒWO­—‹hVÇŸ¾d­>±ñ—…rÿ@Bÿ™Õ}Բ϶\ýÏÖ¬¢G/þÍ”oÈùedÂLÚðÞú|üþSJ¸†ü÷Àsî,šùÑMÚT½xÏ.ÍŸÚYá§€óå°îÄþö!³µÇ<4ô‹‹¬ **·0¬]XQq£¤|S²vJŠñ—0Ë´n†~/FĶªG8¥S:U˜ÚƒçøýÎF)ñ})Öã'è¨Æ îÒî$Y@vV±Ž~­É¬Ù¼v¾°eÑ^u[tÌA…û7.œµm_ä?–P˜`¼ácóİ0Äç>äKÖZŠ?¹"©ÿŒê k}ê^¼ËÔ^Œz*îšïÞ6 ì.bР¾á¤¯Õ„'ݥן›Ï5÷ èe`{œ¾ëŽa¡j„™-¿× cÞfߺfõzc°ÕP޵îÚÜèƒ-nÛRͬ^ÇY/Ô¤®õ±L³Ab) Ï…=N•µõ÷L'Üá/×<¡Ú%¨*8ëõ‘³‹?Z¤®é¤³¶ž/z1ãûÏì…Ð_ð±øj„ÆgØÃ·hB®a^UpiBÅÇĬ†|Ÿ¡]áG–ÿ|$Ãìƒz1—qCEð2ÔßñŽÏbÑëã7IwFìÞ“ýg^.R©çöU\jD3£6Q9Ùsþÿȸáý$´wêM@_‹‘Sõä¼Ûä ªôMhrùÊcÖÞU!÷:ñ¶k\ò—Dè'Û:¯¤kÖX¥Ln¾h4°#¬¾b3G³ +3WµÛõžðQË4ÒVÿµê¦ªü„šihb×âÐ.3éŠEß^9—w—á¬×Çn/1 jŽy‹Ö."ÉVÙ—â. -Þ°ÙÎ:?íù½úsÛÀv]b|8Ä•¶ÎG«­…[vm¨¿÷¶jZÌÍ9€ÇÖA/`çߊ qóM‘‚1™ÑÆøÛZ•W2«‚‚‚cÑÞp(g'ÛPˆæ­ã†0Ãü‹zÕ& Ñ~ÄêvnGc0ù$°f;Ñõî¡$CÞâË å±É8NÌ»M,×Wlb‚î”Õæ$ØB€í{†ÚÁ+ê:´lÃß tmÅ)ÅïˆvJ!í¿|Õ‘°•ûZºƒ^ˆˆÁÖ±hœ> ?ó‘¬}5ÊŠèx~g0 [ ÐëkV@5Õ/ò×8¬J=ËxÛ®±K@ÿyÃ7DæD6)&é•}²ý¹þ ¬}½à$9ç`9rçÓAu«“ÆÄ§poŽÀ†ªþ~Ü{Å©~=·Ëü+9ýgìªÇx|4ʯ9På·ûsvCòhˆÙx×âgs*ôÑëÆåh?¼é˜!ÊÛ1°”¼¯æÂÚdš„âžx|}øyi­ð7ì%Ë#ÿ8û¸Ì¿’Óæƒ'¬jÙ¶x— åïŒb]mË9|l• iwÁš?GŠéÔŸÁÒ $Þ.mt¬æ5x9g ·tuϱ´´œ‹Õl÷} Ô¸+cß|çú’®Ù{e˜€5%þðTÞ•cu}ó» 9¥0¸jn!¯mŽ$à«ïëcÞÝÔà/žþû´‡JÃȽM윳ªKÒ|Ãùs#pé[†e|¼×f‘뻫õAǵ}¤‘ _0Çü¨°Q›™r—Í@ÍÔScuæ:?qeSá˜2uW2åÏÀJ k; Ì·kÆQÅÁ«®Ö#%cM€þäeÿg{¯\ûOFÿ×È*õÃôBÛò(¿ÜÔãD=lØaWêÍÉðlaóÔi–ôÁŸñ‘‰ Pt0†ÕB—:XÏǽªú2¶òF(§é˜6ÿ„„â;ÖçI_HUw¼ê7\ÊG#R Ó<à%7[Å]|MÈSÖÇž#GqjñOÿiÐkÏdÜÐø§ ÂÜŠ.H¯Onô+@D|h£ÄèVüøô‰©ì¦à~¢ñ~Û¬ VZÖ¬É<µv¢·_Z{ãvvAêb•šK9'â}øÞð*-"å•èZâS1Màý¶cG+vš…gCmÓ}X—®Ž}Dæ_Éí?Ó¤–tó‹ P~õÖ푳E+®<çÁÈ›K¬$`}WiÄ ^ÞYÁ3o³ÑÄpg” Àµ– 7ñnÃú´ªÿoUUw—/ÊGm³ðŠ©–¨Ól‹À–^jÓù»~þªæÙÜ…®¡u‘ñ ܯœ‚³Eß2 9úOþâê?,“^Wi&7»¦-t‡òýêï¡/1{ðÝä_$¡@O0®¯•†ö5¹øÃ‡†&µ ·\ÀJ\ÓT—_|« _ñ“U‘̹ª+À³q,<&-·ëÙ³²¥ÍPXÓSÑÎKŸ\Ã)@‚ÀU=÷ñ¿ç‹Æc·ñiaCÕ ®¹y3ûãËäþ™Üþ3UûÀ¥×þr¥Ó­&è‹Î-äZŽô¤ð¬P8$Õä´Æ+†–ÍS‡‹æCÏÆƒ•zõŒ¼&äXKýs7HÕí¾Sx?/-CùËäfÔ¼‡`UIwæ¿f‚óÍ_ÔÎŒ¼ÅÌÑÁxP×ΖF·=£q!¤ô™·ª>ÊY·?Rþ}QÎ7¡ÆŠG0f88…„׸¨•´®vòf¬*»ªù}Î5K…Fþ÷\â܈Kóôj¾UËö1cPþ÷rœ28U>Á¥¨æ‹Û°Ëëk뉼Ƣ=øýÉ.d|bš€\Ħʧ1þ´—h#³ªÃ"k{õ¡ò±ù–­“#žÏ{WiS[°´ƒm‚ôa¿ "Åô6û™ÙÚ8—Fà®íEfñê†ÖçôøXÚþÞytö¶3pˆÉqDAi"¸÷k›Jº »!"ÀŽïu’£ƒ* ;M»d­9úµDáBÈ ü]¸ê uV‰çkU“!äUËoNEDèT܇„™\tK¨µŒépñ6ˆ3ÍþÇ^E5/Ë÷ãÎrÅX5Eµz4;qh»¼ sl4:{h’"†é1WÁ1¦‹c'ŠšñåÇ/s¤çl~{¶êþ~¸Ô•#džþ+ÍY¤ò“ÛØŽÓUùm‰'®/ºk*^ê¸3ÿÛØ¡Ž%¾ÆqÚÏÐäaÏC–m&DÊœ»!r!œ+ÛÑkdô~ÛW’V÷ÔZ°/3Þ9zâN¥ÉðʹØž¥,¤µÒØÛ½Ë{îa[ Œ`6Q{ÌbIž Áž‘úmS¹é²Žµã;ç¡ÍRBµÞ¹íax¾'îX’ÝDò› ±Ó ^«|~K\Å™•¤»GàœSƒòoã:> Ä»átEõ¶ý­Ø'Z¥¤¨qÝ!°qþ³û ã ŽÏýLpSøS31?ÛW%îÙ“ç, >ýž½©öH&àgÐÝ[ K}£ËQ¶õ>ÞŒÃËë…*ûZ^ûyÙ®„ìk×@!šÇ]Î;òÊ0’µCR*ž-›ÆŒqâqÕ[Õ„m€!¡HYêÅRBºÒì¸b·5øwy…“˜Ñ[Äq‹ÓèÌHý–ˇT}^'p»L–°ì[¡Py Þ(|+ümÕ½À5Ñ' Ò"¨?«M@v…ømŠ´øÊ߬¾¥ys5”Ìl_nPö÷flºëTrédï³ÂSciÝX!§mºñcA¹5ð… Ñ'ÚmÅb2óü¥u:£öã;Wæ[¶£"Þ SSK}jwGOÔnävUGTÒo“Êõ¼öcIsß)DW׃ö›ÅW?[þu‚ñ¶îs~Ïm]xÚ©ò«/BkšVI÷ž=/ÍKr¬óØ•St0Aú-z‹¸È\¤ÿæ÷Sכʾ›=ÍÛâ‡ñìpü¨¤Cj¹¸b„ËoF;éð½Ôúñá„óÚc¸‚'©:] ú Sù=še+@cv(W¤Ž¨üZ¨àı_«uN@óÁ¶DÎ4ÜùWŸ?Üu¶XìDv-[fê?Ã=#TþÖ£¼9N ÷#™7Æœà~,d èg‡B„r–觪7$s\ÐP¬ëíÞ¡-‡ôãP!Ü¢ùü&#pT…:„ßòvc[@9žƒÒƒMþ{a-.%ökícw*%;mÚ2U¯Dù+TÏ®gwÛ±^9½Ía OZ‰¿b ‰¸8ŸyPT÷·‰z0Óêge.ÿPã[*É¡+r98ѼM ë-î}þI7·Opþ"V‰Èg7BòœL£?çË•çxHôpµƒ½8- 󣃃”Nû_{Åk¶e7Ç›x *\qAËÙ5MÂ>ð©ÞPóƒ¿ 1Q|Ç}Òî[ÏÓÁófÂÏîˆv߈KÌ…aøcªÝ™±heóìÐgóÕï‡ìÂms¸Œ‹g1ÉÀ XÐûK«D·¢É_Ôë Ì,'Þ¸}Õ>ÁCƲ°Ç?•™nÌ%+ìwk,»Ú4™_ë¼SÇPþVÅÁœZè"6¹¡©5êŸïñÛD>¡b#š È»"õ™¬ÿìïýAíôuÎÚfÐTam"Ýÿ.°ª-k ­ëXp[:©…nTÆf²ìk€0`üÖlÏHt„êðµïaoý5ŽMÜØ~hÆŒvaë9»ÆÓëØ‚}àÂCÝiÏ;o¿° }ÿÂým:á¦ð'1«M"…s!d þ.NVãw¬í˜òC+šß7ä/ÿ?0~ŽÚ+¼XÖÈŒ±™‚ö^áFÀa:²i·¯ñÝ{Ÿ¹õ¸2Ç÷È´Ö„ÐLíT3ž‰¢‘ù¡&ƒÕD ˜F\|æ£>k²]X¨Q¶+?j&óOºU_ãø öÒD4¹ka¨må ôEwNF“A¨¼gq žo»P嵟‚7hY‡Ž;¢Ñ{üÚ{eðI‚7®iü¹Ï;B³nIIiS"&¸Jr*¥®åàØ?”MúôV G#ÒÍL œÄ„rçˆ-â.&ƒõß…¼©3|€„¹"4ê1â_Êè?(§AÀûlÂz~¢ƒjñYÙ»%zÞÅ$Œ-ÈZEöVãiX“ÛÌšNñÿkï;࣪Òöç¿ûÿÊ¿ì~¿Ý%YAAׂ¬‚¢HWźë꺢kW°¬.¸òaC9I&•4’Jj ¡„@!éô>)“If2ýžïœ;}2Iî½s§eÎóÓ0ÉÌ-sÎsßó¾ç¼çy%G@ðð4Öy¬ w}FÓ¶4¨Ö£88N÷ÕÁí¦É µ~6z<·A©ó™G<[wÄ·È~G(³%¹õV …ë¢ëPާl2à énú‘EWIE-j¢õaØ<¨3˜} xf¶BZm2ÇtÚ¡?/i¶¼Æ¥‰|º¶Ì ІŽ *å ïéœtQ5çq«ç×Ò:±æÎeX©´Y"Na¥…à‰ü£Fí{%)àØ`ðE#ÏY’eXòxçUã¨Ø§W‡QêZWŸôbéoWà32T÷ȶ«%ê“A€4„æÉxoäêÊèi)e{Øàêµô¬~€jý²†{g›éË`JºŒãÍçG§†ÚäáúãG_ááJ*4wñ67ñØõ"³C ñhû762ã‚îS Rk•'^üa¨ÀùXB<ݪÓD. Øhýtú`yǼÂ\ÚA±ùÜÞnæ%V[Ñޏod¼T3/ýeƤ¼·o¯Ï)X`”ƒ1<€FåC+pz-±GÛ?X±Ó¾ 7^EטÖi¶Z‘Â;nбæûN³‰7Êô*t® …iƉ™±ºö=BnèL£˜ÓJßé@p¹ø§u:¬[wK ØîÅK68žéûuV Çç¸Ùg°ètmgdÑ$tRnÿ´÷‡ØùÔwÿ³¶-€ÐjK/æ^#Ç‹… ¤ÿq'ξ×|MJðŒZ|†?°Np–¼ü ùVóŠñ'‘5uÇÒÚ±bŒüB3ZY‘‰bà`¦º¨UóÍ–Š¨ÿðhf-b™É k5 c|§FÏ¿×áŒ=‚¼ÅG÷ZïCÜ3ËJ ¯gÑgbÍ÷¦J"Ú÷°Yê³toÚð¾Üt•Î-ÌÒϱœ¾5ž}xP[g7"F/;²¡Õ¥À8‡Ç£ØÜ£˜K7\›iù=õC…­" X"§QÐ(âåK¬tÿ×ø©½âúþ¼°+Nžé³ÐÎé¹KhüD|5Ôà„èdCCÊ ÖoИyŽ£ÿ}Bã¦%#nÌßÌIUl·¤,nd8÷²(aÚM­³žó:ï3ûpÒôt³ßÚeVϰ=Ø$c —N×QVÛŽL¿`ÎV,;üÌF|ØÂØ|•Ú…¯›xÔ:¶ö©ºêp˜æª>èjHq ,,år¨8€o¨[ÊÁ¦&ôÐVâ±z-v ðOrÝ®+áè!bŒë¿fåÜ oŽŒà8°grÆÑNÛˆÁùQl]Ïj¡ €þ`_•«†buž’$(Ž•ëY·Òð¬f¢0ôU¶Ü;fá†Îwil’8Äþý¯e9<;”œNt±Ô¾‹Ê¿˜Ù‘Œbà “…Ëž~ÕìÑ Â<ÒÅë¬_ðå1ëKû§í6Î0Ÿ=Vo·a‘}P{:ðD“{ä`ÞÀë‘ÌFþ–7Ì# MNÄQŸ³¼øxt̃¬/‡`‹šSj:EPÐEM þQ\æ|%ÍPZrÈJ9»rñsIåÃ8ö@ÿÙŒrªðjm´åTâõûþÄB¨ªëÄ ¾ÂÙÎ.Wr°W|¹¸ŒµŠAŒÎ ¹ÝzO¿ØPITíû·Â@㟻Ôþ^hçe/Ì{o¸™Öx4>¬§g˜Oð(+äûÕ¼´…º)Á cæÝå›ï2MæV>ºÒ2=dðb¨ÌF]}Qª„x3ÓEU}pŸÅ2·æN?DáRcIc¿VèÃⱉø´‚ÀL Á£ù—´ØŽ•—®³(¶ÊŠWc™ ­Et9‰ àØýlZZì ‡&¦ÎSƒé»™ßAÓ>²«AxÌÕ$¼†œÜ’*Nó—T=;¥«£˜8ÛjZ¯˜7Z×hàËþñï1s»³»odøÝûÔ]{@fop±á™:6Ërgéá„ó~œ³"ÂscYSÿk¦YÄËB«ò ˜°)ݱ…èNÐàV ‡ÑgÃgZ­vTÌ =n%c€ kþ ZI'âbÔ|å_¹ÿú¹ßErƒF¬hTp‡¥#T¯Àu­ãCÎàÄÖÏ/ËÔöë;r#ù—«p£¨á9Õ9å3«Ð’#†ƒA:—HºdðÓ1*ÝǺ̎¼­Ñº”(_öïo]nÀ?ÎÅØye4¾j d(®=`è=\Ýb¼Åkž»å—èâ¾Wl±ã3BÌ~Ë7ßÖŸôzºZPp_^Ëhëݹ™V ]õ-x3ÒÛ ñzÉ!³q£M¼åß»ÿ¶,ªå|¹ŽPRReeجŸo°´ü²íáº)pÀ<ÜelÊd X.<Éë†KEè3}¸ŸÓ±8Žˆd7˜èX¤ÅS » r}ŽY·_Ÿµ( _öo)íߌº–:T?˜ÌÃå‡qUƒaw4®‹n=ÚbgÛ¦‚¨bómãsue§ aªŠsëÝSyBž–:ÈLµÁª{ñsZ%Úf ·!¦ÙdGM#.ä_÷ÆÇ¾ˆÃIéÖ{-‰¡ìå_²Bê’`ŽOà͆æ©Þ%xF#¢Š‹ß\‘,Ç»'JÛy|5¤X 8}ë¥I,œGj‘Ÿî²xª¡P_ñ¬8ëÏá"éx%n Gëý[F7¾î`ÿÆ_gÝùþ'DûõŒ6ÔE7>̺17ØæsëÒlZ€a 6ª¢ƒ`ß t[h°äúQNãöý4Ô.[1­1¿±ÓØAÔ•ü»T©+Ћ'¾–CѺ<ð¯1œ3ûz¢Q ,ž,‰k'¡š  ‡"!ÍðT—yä«Èö•\ù |3–7ýÒwö–Œ‘ ¼Ìü¶:|›nº`À HåàQ¶fn€õç´"¬]'olláÓþíˆwû‡÷†ÝQUm]¯4¡>mEWÝl¸Ær0Ñ6ë·¤OO¢Ï4«¬HöëÄâR÷tkˆQ[^ÉIµø'Ý"e¨ÍpÔP"®ƒÿøƒ;ÿú~‰~Ðs–-¿å «¶qþÊ,p£lŒ/”ǘ›Nz³k°~„Áò Á‚ìõŸ0´íéxÇg¢¬—Oö ó(Í| P—q:OGƒ$Ì'‡Gž{œö±^6(¹BñJçÂ-cmºŒ#ÎHÕðÇ?ÕóÜÉþÉ>¶÷úG|Â5èQ®¯ÐåæÑuÑÍQd3ï_½eŽq úàL?½ïÓ,‚¦YÕÁ'[ÝUpÌlŒÌOG^F&µ÷'Ö€"´ ÛijÃ-zñØÑQ~íWþQ=om4ºíÓyáŸ=êÐ]8ÞeµÀÛãëÛlþ Ó•|ƒiV¶â¾»Ì:´!Óv1bX7Üã‡ý# y­,ÓðœÍ”÷Ø{§½‰àZ¹sUíç÷ÒŸU¡öñÃóSç‘}xôM›ªôIù-RÞø'ÐÁ]ìŸa$²uK×´‹öfˆtn¸®.údh[ö¬Á½k]÷{]æàPnÈl@½’¡QCÏÎ$ˆcôÉ÷Y"áÃå¶ä` }"¢µŸµ­" Ÿö+ÿó _Ô›ßóÄ¿‘Û¹ª8cà«–¹4Z¡¹ªöçeÅ>/íäyÃêÒøœ¦™%‘óÈ592}¯~çÌâ˜VVT BØÝ”íAÈ™ð¦ÍûKlì.Õ»€^ÿhRðP9’*Êì  «Õê¢;cñÄn~û™PºxLIu£“'ýZ·$é^$ÎÈç|’l¼¡žAÀN}?Çr&ôê,!ýlæwDŸ~ôm»ž}Óèi‹•Ç ÜÉ'ÿ¾õá\w¨!f5Ol¶i-"áu–Ä¢*Q`˜Þ ’ëyed’Ï^A7—aT7>çr1€Å1Éô—´µX_K¹cŠÛ¿žéQ|œï¬Wi ê™—&°9³¿1 >†d8ój8Pæüd—ãÿ0$l_宬@] eeLtQYUGo\µ“6€gÇ{ÈŒõ©][ëB'¤¾{½(^×`M9»ùg‡‘<ãzòÐ&œúo gYºp­Ç3›qºŒ’Ï mêð&fŸ•,Lb}þæh L-dš £üç GãŠÝô\$â ð¶:ŸinRñkÿŽ»ÿ×ÈÃIÔµ@PS×m^}Œµ³ôûm¤%PQz\¾Š¨vL6äägZúã³Vi9ÁyøÈA1pD û»—~KÀãµ–¡Dœkùwêùå+ÞÆ»wîyÄAÀ7ÿâÞ产‚ÂqCú˜ácÔÌ$¶Ç›OßeLê¨S#q¸†ylôU^ÇãîÛžgñéK[Ø_A[T @Ã>ÔŽ9XE… í_<.‡ûf\±ub)Ïõ·|ÝÎþaØ]FòÉ/äƒýBàAcª‹nÑšUú:3ï_Õ%Xˆb$,«:èQ~j-´u}>w'Ûð 9ûìØ‘'?¢•ÂŽŽûX޶ñ_ÚÝø7üE*×Ce©(>žm5ßý€m=ÉžNBµ¡Ü]ô\L…„ÏÀ·Ùã ¶eïã¼Ù$ÃT˜Ã>X“[@p'„m~ ²føœu¨•9ø ÷Ë1 _³ó âõ÷ÃÚ@BGzMuÑ-#©Ù[t‘Üà†¿‚ÈÑàTáôL¿„»m.y r?åÍ0sÐEU¼ü"Þ gKÆ`«š§>ÿ(®â€Ue•ì¶š¹Š·¹À{xæ¿&öé4Ù¨/ ®eõóÊ·×~WÇá¨ài¬·ISWŽF2T…)š„ŸÄpd»aÖ†(¤òlàæ«—¬YTß¿´Ø-ý?ùYû¯é;Ôâ$P]ä—Ûg¬‹nÖ=!³Îè,ÍÞÿÀ+s­Š.$4Šžƒq;Z?ãš #-D1°ÑCÜlñÈmx°W&Lá[ÙKM}þ5ÿöK®‡fbM¹¥ݼr•õ|„ì•{Š&:òFìe\È÷ ŠÏÀ· µÝÜFø^µlCŠ¡êZœëÃÌlý'>ýÀ.d{`NL‘^ŸëÀ^^!ƒÍϸ¥ýÃ8fç>Óö5'/4  ¶îÞVoö=µK©4h”mÈyΞôƒ°ø¡Mº°oläÎt!Þ‰4ùT{ç ËÚÓ`^]!žmïwB/»1ÿF¸[åŠàÀã±–rWZÿÍÖ£oäD}£j Æ5̃ßä5É«-ÀêðE—ØR†Fƒa6ѶY¾°>(Á)¼»Äwø9®—£n­‡ða–Gñ­¿1¾ÿüÎÝvŽ}ô½IRp œ³À¢Ä2¼zûf¤ZOUãuâ Q‹ÓãÞnd|NO2¢ª¸Ÿ¾/”•3ÐE­ýÝg˹ ³‹o Á¯ÆñV†ÿœ5þR.q;p¸¾ EoyÜÕ šŽDa>“ýº'¥´S¶÷H:û'3 /$³˜Ìé A†¯Rù~ ‰‚]¿ßL9ª—7ulx¥#•-ÿ ¿1êù9MipÕU±l·Eì{öwç㚃~)•ΗsV?y£‹Šåº!FS.FQÖ¤&TòÌ‹„étŸÓô^­ó·2Üøç´ø#e×ôw\\jß·,v¥v/jüº¬˜ë¼’R5oƒŠ—…³-u=tç<²hŒNìû¢«´&àøopÙjõ²„’¾ý‹ûJ¸8üêoL€]<œD& DÍ“Ætü¡?/©»¾$uá ³Úaèl´¢á0Ÿ!“ßç|™Î¼ÏtR¾ª?± A g%a‰°Oê`+ÃΙœÕ¡%ÉÂþTÛ;%ÙµÁìàú3¸˜ŸÆo8¢’7±mùû ÙFJª\4$1L…)Ñ¥‰Gg£ÚÖ>/wp/³ ø×ß ·Ø]eMº¹–ƒ’7õy…ÅwþóÜ ÖB}t[v· ÚoçoX.îp•§Òrº¨VZØUsükp"LH«“¬ŒûÚ¿¯ï¯âv`/§·Þ<þuÌž›6îs5Š+f&‹‚Ï òú%¶¾\ͧ5e/YÛ³_”˜©ÂHæm£`;rWvëÝ’¿S¯®’8°—‹ØÛ$GèoŒûõ_ÞrŽ©¼vÆà.ØýJýûÁÎwö9ÿ í-@ãËefÕ;¹N&5cåÍ$¶nçÂÍxE¼ÐV¦ˆÇsñÏ¿C\w‹(-²ì¸´YOÎɦŻSDxs°’G½!UJ°HüÁSl³qn0ÇEË^…ÍBdé'_@즇DŽëe_ö3KÑß?ÄÙy‚üyï C ./Éýö‰ôâBúº7û¡ÓQñ+.J›­ßq¾àÐ>ÛY5¸üõ\¸Ûr»cz×—Çs9Ä3m ãd¨k!ýi Ñ2|éýaœ,ÉÞÜŸ|´™×{¯{"Ã-¢ c-B3t앆f0ù¯=Ò ›‹ƒÍ¥Kp‚»[ÐËåK~Α͎ÒßÇh,±×yÿöA(=ÖcJ•/.>ãlÛ'‰Õ@JÌõèŽ ÔÚ|ÿÒrFº¨æ#™lÝ:¬ì®Aµã¬ wþ9Õþ5®ÞÊí@e#žùg°ˆºyÈoà!u|JÚg¿,v ››YNQVöœ@ß°’Ak|÷82ÜþÈY¡ãì2ì: o¯à¿—W’q¥¿1^‹èSYì]c½º àïV¶CW`éËö8œëçºNӇף&è-4ÿS¿¹´W‰ÏÝwFí(+ÃNµÜÕ¡©+Bäõ›D¸@!õgkâJT¼Þõ¦GÊ·5?óÛÖÀ©á…- Œ2Ž|k‘L >úqž°…¼÷²Žyl3=ª¿1.v¾ÉKÕ]Mè‘jÈ9Ëó ´ïºšÃœź¨Õ“ù‡§›—¤¶Þ}S§Õ+r•áÆ?Ø?äÏ å4÷èKÂkÛ—t® ¿L>PkÞv<©‘ÿÇR’¦9:^&d¨ SáÀ>]y¤,°KzÂ'‹ï^^M/3±Õ)t´þ†mH7ð3O®†Tt:"ž¾ÌÇir:¹>!(žTõúœÌÂ]³¯¢  °Ä1V†ÿ\bÿ`ÍÀ•.ËÆy䩾&¬x,Ë•ðz·Ù?õ:ƒÖê;ße7¨«†på»}ÌL}92€tAv] ò»¦æ¹—ã7Cψ? ŽÝùðCu°ö±µN5}êc_ñv®ÀéM”IP 4Y•‰îGß4ÿõØÌÜT`qªÂ½ìiüËæ$Œ%J@1ðn[zFò¢¨`\È7®Ç›ÙºÒyä–ìe{DO—kÏ3ŠôKó’M¶bi¿½ìŽõ&Â¥vžáœÏ[>»´Ð™¯IáïduœÄº¨×&A–[¾r|ŸÒÀÝô²§ñïŸf.‡ióû2H±öðDª(œRÚÆßj)¨ÙÞàT~Ã})¬"wmQ¢,D5NúÁÎG›°Ä!£”†ìÜ¡åþÅsÆ_x°ÐÞ3ÔÜêDjä¼XËû9sÕ«í‰-­`«‹Z~kTmÿŠÑËÇ?®ÜQàüsHÕ%áæ ôŸ÷7ÿt:.=tåPŒÍZÀð¤ a³h5âÆ¡gÂ|?Äc/ç›ýôþáø&ô€ÝRÞÏyùή‘øh0~ì”íšîÜ‚å`‚GÑ˞ȿÄ×¹ìÒäù%ÈÂVðGE—ñÎËáÄr×âdž¸ê –#÷OËN3¸2äׇNº³5kú~¼Cÿ¸>`“âÙèk¼jÿÑØÇß'Ù#L_Ý_9èÌv$5Ü C1ðEV³M=‹ß.ö JŒHÞî´^v_þlá¶ßÙw #tö[ïia¼Äø§ñ¹Ç·ô¡\Øî×§íbÇá]ÈñÈòò vº¨E3cpo^¥ŒðψoV¸†oêcJ<æžh|MÖ¿ìðë>™2¡;üìæj¼üöòAåŸê­*7érßß÷¹äºí™œÅɤÉ,r&ªç~»_?Møg ‚»]÷§|[¡ÛBôVŸoºÒ@à•‰¸¨þpŽ>\ÔËnË¿ØG´®ÿÎEÕȹðú™ÜÚ@›ïØŸ>™.ª™}íºÿ“œ‹¥%ü³ÎBœç^ä^Æy¸Â&¬È€8Ù„êÁ?àÍÒÄþY=Ä®ÿÊ¡wdºôú£¾\'B;ª*ˆš0cø¡õ¦œñcë!Óþ™¡ùÉ8õzïKƒ€—îb“ßÝà×yÚ?g"›©JBÜ+á·—‹Wýòá ο§]×ÉÕ{‘ýqµ ÖrÅÉÆ)Íʉ¾€üE&yÅKHÇQ3áŸdvÕ©gƒrÀ[K‡ƒ]YSmKbVÔD‹'ªøUòÙËwdåÞuͳùWöœËazoýÁMÈÄ1¯ A1ð„º¨Ô·š¢ùp ÎàÈ ÿ,G‰ùÁ”3.sßžbýh„½ÏB0Qœ@¬,{‚ÝíŠDd«xìåçð„bÉSžÏ?XÀ–õ¸Eø­3R;nãh’†P 4¡sÚ“f¿€yÈ$Èÿ,Pû½£¯Ðöu9ô4ˆ¿`Uçº"¬= „NP I‘€ ú/Ò?y>ÿ^zwÄÙ—|ç³w¢wùôë$Œ26Ÿq³SÀï&áßœwh>ÊöOÚ 'BÃb?”jÀo‚ZØÏ   ·^~˜þ¹Àóù7²UâÄ«‰~ÚíŽLûœc¤žØÀþ 溨©>É‚2¿±Ø9ÍAÒ”’ ï¡Ç¢cñë,>Ýbd±EãZ@Y 2€7ùêå×ðÜsÁÚ©Á¿N§mÏ}¯Ì™ve1GÙUŠýr˜N-åM'ü³ G¥äÕ­¿=Ú6ÅkUçÛ²Q<2nl5€¯^î~(c(û®Ò©Á¿m Õ®5jw&ÇéñFW$È&Ná6Õ..ãKcJñÆ×x‚÷­CÏÇÓß1íÕ$àmF}ã­¨KU|¤Û Œ˜"üKqB L}’çÖDûòmn =‚bà uQescøíå)Ç?º¿âY|Û -ô|´n`1bj …Ñ£QÑÍãÀp æa”™oxá;uø×àH0ý‘nO´‘\ .‰P ŽL° róÞ÷U|öòTäŸ<t/\§*™ È»Î#2žçÝÁpA˜Èþû‰2¼(š:ü;ä“ã 3+ ÌÈôŒ¡x˜[tÚcà ágŸä±—§"ÿhtÌÝÄËDF^‚N!œŸËb£BEç[ÇI…ô¹ë—t5ÿª‡rÚú'^ö¢ÅÝÁÍÑä x"]TÍçQîãe¹¯ÿ'³» ÛàKá”Ã脌'ÏeQ²hphÈ}{Ù]ï¬î(Ï'DƒÍPŠÒƒˆ–VÃñ@i ;b'˜Aì üc;æ‰eÔ„À©ˆÞ9qŒ?+/@d %ö%J~Ãëù^›æ\æV$Ož @¼ì:åþ½ìîwvì®åÝÀoJà”ÅPæŸUžóÙ­‰½„,ÇOþ öõ@xQê<+œÏíÀò°¾ŒIuQ ÿa€µ*‚Fan œÚHªcúÉ®#²àŸ«"üc‰úÏGù8Mü¯’<•d\÷"¨n¢°#¤‡Ø?û±cË<ùK·~§>¦3Oßkà×9@øÇƒÛbw™ÆŸAOæÙð.NÙÐÚ|猿›Fñ8á3g³!§ÂþRè A±-Ó…ÁdÕî—9JìK7ÆÎã»ý®§Ó¬k5Çú8{úN€èñuQ\:%PòÖ¿{9ò±e»õ“ÑÄŒ‰š‡îS@ïÁÁ{Ë>VÊbk ö%Zçš ¬Ø/5ßîå± ¸¦IQ(öorÏ^þh}¹áúÔ ëÜ<2jYûÉäªêA9½ §˜WAVd 6¶•ûÇî!Žâš†úìÚæ)j¼Ám6½&ÅÀibwìe¥éú™K4nÿÒ˜\zÇ-ç¡B½é.Ž›‘§;ý¯RÄþqxXXA“zŠýAn ß¹(9Ü—1®.ªÀMXöt »óOçÀÜ!wçP'2}}*è}¾‚ñc¬ˆG>`±lÝŸy,‹+^~zбLËF}Èýˆrnmÿfþ4Ú&¹ÛÛ?XÿíxïÔþz;ô^¨˜O3uÅÐ’›§&önlc/Ÿû|j²Ló(· »=±(>ÐâÆöïg뺟ýÒâhÊðƒœ1kÁCJO(déX¼îË0F[˜Õõøò÷ì]w&!(ÿ­™š+þ7ÍBUvß ›º¨nãÿµAØ|‹ûûþÓ¬Ó~W½Ú ½š½Ì3u³P@­uu/{Tþjáû>œôñ/þ{Áç7Í‘0D¹+Zwµ«ªP5Í3쟅:´òàYÏ)déøñù†6°,4å†U‘üVL^­#\80Å9¶ö N¢¤GP ¼çº›Ú¿ô?É©-yˆýC8ôW},ÿäH`^ÙÁ”Ž7zü8LòØ¢hÜ5ÝŽ¼c²9®j_G108"uŸ^Þàë+ðõÕÍÕF-^ü¡ÔsìŸlÛHem%Ï„ ó´Ú"ˆ$ùl±þ›ªN(²kû¦Ã[XVËÉTâÔƒ‹ ϰ2·ïéª=Þ•éÌ £·¯gÖ,Êl¿›$ÿ€5lf˜n›#ö&Ž}3¯Ëaš¿xY´¹.*±¼ûƧ˜~räpBf³ÅS= a|½wq,›c Ü‚càØ·î]bÿ<þqZèeOÌ?€0ÜÇÌŸ»Ç+)v•Sµ m*ŠÏK(âÿ8×|Ë<¢—=2ÿÀ,¡ÂÊï¤ØÉ™YœŽ+Š“E%Iˆý#p,FÜ¿—=5ÿ¤T;ïYëÅüêá(³$îÏ ¤†Ø?‡¢`Z¸{÷²ç@XxÇeH]örŠþÈi?H¾?çúÄþ8½ÕÜËnÏ?9!l[Ê鸎¨8Y4ÖE%ü#p$TÏ&öÀa ¸í†Š!û_"ü#p,2_ÐûGà@”­nârXMŠ{ÿŽÊ>bÿmà·œŽ“$¡XPNøGà`û\%öÀ‘q‰¥§€Tþ8µrbÿˆÞ[ös9¬'V¨%ü#p<ŠW—ûGà(”r[V  ÿœÍî@bÿ‰ê)ÕË„S'G ÿå}¯QS¨— ÿ¦´½SAøGà Œ¦ÿÀ­Ñb]Âð€OdHˆý#pgl­ƒðÀAøxÞÈée¿© éöRÂ?G¡Žøno÷k ÿ„èËS¡— ÿ¦.Z–¿CøGà ¤Înš½Lø7…AõC¨"ü#pdS¡— ÿ¦8ùr”ðÀ1~«"öÀѳ]CøGàt®»Dì»ã"ᣠÑûGàÖ8/þ8‰Ë<¸— ÿ¼„Žzžð€Ø?Â?ïÛ ÿˆý#üóNú&ü# ½Løç(Ï'ü# ½Løç½1ð)Â?Ò˄މŽ{7þ^&üóNÈ«ÿH/þyo ¼CLøG@z™ðÏ;]À%ü# ½Løç¥"ü# ½Løçµ Ö_$ü# ½Løç8±DAøG@z™ðÏk¡%ü# ½Løç¥xi›Šð€ô2áŸW¢û­Â?ÒË„^‹~5áéeç¹CŽØº´™ðÜ!¹CÒv^y‡TL?á¹Cr‡&H7-[±YJÚÎkî°µ‰ððÜ¡ï}AQ_@ÚÎkîðˆO6áá¹C~Õ aÿ¯IÛyÏV÷þþ‘;ÔaN„u IÛyÕ¶ì'ü#ü#wˆºª¹uui;¯ºÃª…BÂ?Â?r‡R«‚G,v‡ ¼„„ðó·{ºßúþx¦‰!ü iÂ?ïÃb Œ~’´á÷¡û¯=öj7iÂ?‡b9iÒ|¤Ió9Ý_øbz!ðEXñ3ôJºõžEKb(úmÿ œSwÿÖ§óç ܱùF7.^œ û›™ô»*ò±e“æ#ü#üã¥ùj}¾"úQ…ù‚)#€¦W—ñ¿+ ¤ÌŽÈG[ùè#UP÷.ÂÿGUìXºø¡­+ЫK…:€_зuúèÇ_Ë¡hÝNú÷Ç”Êgœp›lÀÿZÑ-|¿C?[M ß§ïð}È¥ù>ùœ’=}ž>Æ$ýN½°¾Á)·é¬æ#ü#üs%ÿôG tÿ›þ˜þ•ëwŒ9âÔ2Ó•Ÿ@ƒÅƒÛG¡&Òp'}¿D?èêMF?öŽ¢-¿Å¿ÿ9´¿8å6Ê?ÃI– dëÜ ›oz/„7ÖÒ¿›¤ß3—hœu›„„„ô»M·9¢÷ÿ^Â×!ܲ™~ç1ú'ÕóÖFýGÅ3F¦:þyK„í¿uÊm>²`Åúÿ¯èÑÂ_ÁK…½²üá“xÌ\ºbeŠe–?·lùêtŠ—ŽÕ5ÐxücÐ|˜¢¹ô_LÒïOòü˜Œ›Îj>Â?Â?·àßBã?¦Wºwkæ[¡¨{k4ïúûªéwäôÏÁ<™þ£»N-õæ÷øŸÿP"gû?íáãÛœsjÞ˜kÑD‚¦ÁqX‰ÿ(XÕ%«“Ìß½v%„¾1MÒï?[×Ðýì—|ñoÂÛtVóþþ¹”Ó±‚Ÿýç¼íZ«#ªŸ–A‹ä÷åŸèÐ×)¬ÿÞ^÷•îÕ,´Í¶güe|›§g ~½¶ÌªM‹ßÖ/Ìßý…]þ·sçß,ÈöøË´ùà®'èLÒï3Û l¾Åþ1¾Mg5ááŸóÏö>6¾K{ÃßHÿ®mÑO NÓý»M?#ܶò„ôúÛŸÒ!<þgþùgëªëì—ŽÛ€xzüÜrówïn²§cñ$ lcÙ@ãÌ¿0l>ícº“ôûª*û§9å6Õ|„„Ç?øü)‹wo‚ªÂÇÐWê„ÔwïéÚïöVúßâu †Ÿ\©T,;é”Ûü¯«fŽÛ€+aÛÂsæï¦¬D£›¶êûNíø¯—F¡òïŸZ6ÐxóÏŒš¯ù½5:Â$ýžþ'9µÅ®"@ŒoÓYÍGøGøç:þ™%6Áã8 §ÿÕðŠN²ZÕÇy;y°jšo ýnºî¯Êï—>°àÕkèÕ©ç—¯x[Bÿ1Gç>Ã{ñõÕ/â@°àžì[ým"xÛš¥Ïà:H§ùã¤×¡ x5ZÙêEKO£w7ÐïnÀGd¯ytùÊws¹-À©¾¾oÑòjó/ÿŠQó=¼tYˆ¾Ü£™ô{ÔâÅJíáÃÛtVóþþ¹’^ iÒ|¤Ió‘$ ÍG4Ÿ!/Uv ÍG4Sñ?šQ¡Ä endstream endobj 139 0 obj << /Length 1757 /Filter /FlateDecode >> stream xÚ­WKsÜ6 ¾ûW許ñ¥GrJ6q'=tÚtoM´–ÞÕD­±__<¨µl+mÚñè  >€"HàIã´PÑy¬d”ÍÅ_±Ê £I`AÒ”yB#íÿÀ}õ±Eð¾»ø >á÷M‚HäY\déÿÝS&O÷Œ¼±‘J“X‰‚ïv¯®ò ˆ‹T¦Áî&@­¹*¥eœHìöÁáUu˜z·‰”R¡P¯7‘Ö&ü4µÌ«ÆÏÝt=:üi»½dÖ¶¶íÁӻ햧m»gίÛm¼ùs÷3œV‰Xè4ˆdçB²Þw®-72í¿ðÒÞ S=¼|8v8}ËSãq#BÇôMW× Ž’pðNFÍ®gž¿\Ö¶?ÌÌÅ¡qj<Ú–' RÖÎÊ~‚ã‡ÉωIÆc7Ž8NØ&œðwÒCø5³Ún´×õ=¼SÇu¯º6o@TšðzªB‡î+9­, YIl>s\£!·ÇŠÃÔËPªÁz;ˆË½_ZvjHŒO l*Ov'H­ê›«®0‡@×Âÿ ÁFbðàh_ݬñ†ƒ#ÇàP™~¸ #çÓe*¼®ZÛWn`1>ÑpesÌ¡ ¼ã™¡±5DÙåšVðJ kLú™H—]9ÌWÖµû oפ(¢E®°ð6+1ÙO­Çé䑨ãì'óìׯ¤ÄY‰4.TúÃéÿéƒDWå> 3 hÎfÃ=¡_ º9 i3,aG)ÀàtÞ/º~®Ij=K1sQáPZÌt]Z—Œ›ª„~ìùª9ÙïÚ$!Y¤ F#d0€’Û‘¿Œea5.ŪZf’Ÿq³níÂÍçЀ.ñãö¸FË”§wT%çgP}&Ì9.¿‹KÖ禭6’·4"ìé^övSÉׂ³Íð§8¿gÚ7P¬ˆs€´ã*f3ÞÐ_IB[#‡ ÊØ ‹Ý‚ä–,ê-o÷>ýß`^‹‡õuÍâ€àìG¯Ùѵq²È9…‘œC D³ÿþx0µ–ÊEI9ÆÓ0ë·•_Ìü’©ã¶ß×n&ã2i2ù¨|Báä¹|± ¡.-:y,\ …Ýû«O¾Å:!Ó7Q¦uˆ' +À.“è8ä6† RìHËêlò¨N­8þ‘®uAú¤iæ‹>tG‹4Ãá²èÃmÂÿ£ð…1D :Œx ἆçkXcò¹ ¾0Ôx.䟑™Êÿ ¸®¬D`%Õé5=§¾;ô–Jª,|I–Œøç³q‚ÃB§æG”d8m~åm5™‚ðâ %Së<Ð’á/pì 's¾`ЭńVŽPN\ŠD3_ ¦2NRb~å–æèìÞs[¦ëÆŽ¾Þ¯8Íݽõ˜“KÈcÌbg¨¦{æ`^æR„d› ßF×vðpEó½+;Àúh-Èqß7œt … aç±*'¸E¸l£æÆföÄc’ x¸ô‹gxôd¿íEÆ™k<àÖŽ)ÇÙÄ܈-ÙöGb=?¿žßë Í/Ж8H°¦j«¡A4†ñý`1É}oÐh2gè˜q¬°?EUÍd.½Àpw«wj›SíPsƽxË‚%ôQ;éY7ü‡\E"Ã×ÔÚ¾‚æÙyˆÛ‰s;…¹Ú`r5¥TÓKnÂ4L0 Í€¢FÕ ‰oD´@X`Ë+Î5à_‘ýGg¡ž:ÃîpŠœÄg ëh=8PAEU´5ðe;'Fü»;WN¾O„!>±ñÊe8 “‡fƒï#wϳ÷‘®ÆÕF›ß,à1ŽE¥Ï%™ ÒS‰©]¸w&¼ð¡ÏTðä$oJx 'YOÐ8ó»p-:°m×–õ4›ž9,‘2Öiñp‹™€¡™`ùw"€,mͳƒWc03¸ÁGXKF×õ‡{U32â¿o÷Lú½ë©£Uü"±#|,8å—Ãâ­cjÑ4ãëŠþåÓEʇB ŽLÀô#O̵Ç@ °ÌjfÙÁËtQæKoÙD¾ë/ba ë—Eœç9ë—Î]|Ø]ü 2ºÁ½ endstream endobj 132 0 obj << /Type /XObject /Subtype /Image /Width 1280 /Height 480 /BitsPerComponent 8 /ColorSpace /DeviceGray /Length 27043 /Filter /FlateDecode >> stream xÚì} |Tå¹þÜ{ÿWk•VZE´V[½½V©µŠK%–Ríu©Z¥›EkÚz+íµZºØkµ·õdž°„„5I –@€ ÙÈ:3ÉÌdf2“d–̾}ÿï;çÌäL2Ë™}{ŸßÃ9³~9ç™ç|ï÷}ïó"@¤˜§¬d(îSHmÖýîî»pJüñ/p éÄ:Ð?Щ¬BxC! ¸“ìfeÑÌ˼úðšïÏ´´gÞü…•®>ðÀ‚'dGèÔ¯=ô×´ˆ»Ä‚u\†±ú§{ûÉys÷à†,AÑÂYÞì¦Þ.Ù]hPPŽ:1=›èDH–µ‰ÿ§•>®B£ ɹ¿·î_Ü= ¬óbûy.™ uÏ`y{ •>êÅNÀ/‘ïYÿ¡§.“cáSÞ!LÛsãþ¼¹L}è49ÎñÚbÁ:/†±OߺãS <ÿÍ‹K×t&Ò{øß þŸvƒoôä ×ÜMî±`ÃØ÷ýôû=†ÞIý£7“ì\3柉_…úió*ñ¦š¼}î: qr÷€X°Î‹aìçÍ!4:Eÿ&Ù 0xs¢»Ð7KHrv}4ÈûÓên;¢«}Œ¼ýðœ>ä¼ôÌIî Öy1Œý¼9Ñà×§èß$;­ßxxþK¥.´++K••Cfâ– A– ^Æ„yúñù ~~*„©¸šG®¢fXÝ“_½÷‡Þ{@,XçaدéÏû5ÞkyäÑç›Yådþ7«½o.rÙ Ä =³à€€ „ÓÒõìëpÀN@bþ5wýfNØ  ­o^ãÞµmxrÞ£pFÀ?@†à­·»K¥¸^úq?œð1°N–©?üˆÎøÈ(¸ù÷ì 8à 3ù7ûŸwßô¶ÎøÈ<þýësýŠÞóz©þ2Œ³%‰oóõLÊH8´3 üƒv&ÿžêBhô&8]ÐNàð/óøWù]³kù[pº À?à_†4ô×YY‚¬¬wèý=ô+œ.h'ðø …Ó'ZüþÁé‚ § øüƒÓ'NðøHgÿpåÀ?høþÿÀ?@˜˜Ïó1¸òÀ?à´"vhzþ/gΜ\zçµæx|ë=<ƒ+üþA+Bk)½Œ6K€šÉÿOΫ@è<ýHVÖ mËz@p~òÅ/¶“íÑ'­Ö'jÈÞ•—cÖ®I¢Oþÿ€iÊ?¦±îmwœö4ÿ›dóáßîymëÓô¯T"T±˜ÞýVGrŸAðøüþñå*þ»×ˆ–à­ý%×7'ܯ}¯€þï6BÒÛéÝõïòøŠ†,AÑÂY4UÏ,zè¡§Ïz?ï~ ¿îðןXPŠRÐV>w’gIßc,KðêÃk¾?ÿÑêÉǘîCÖÝב½öïÌ›¿°ÒÅýàÉOѽýä¼¹{è,xbÁ1AîU4>6ç‰Úója8þÿ€)Ì¿û™ÆÞïn´è3\6¢ÊrT¼ÍýÚ§;éÿ®µ"dù½Ûþ-~§ãí1TJ ôýÏ+8j¹§†û$ç1ÁSj¤[¸{Êdw¢AA9ê¼Óëãÿ•_¬$CCàÆÉ²6ù¾.™ uÏ {¥«ÐèBúñ;Ž#Çëwÿ€À¿ŒåŸ÷µDÈðIÄÚgÒ½ëD¦Ý/¼EGÿw æŸùZzWs‹óx0zöÈÆÛ‡N‘ÓsŸå<&h%ƒ:÷ûárà=ë¿zµYŒL­%;O]¦9tç”°ÿߺãSÒ÷·àÍez÷Ëå6$Ýüþÿ€ìÿms¹÷_Ñ¿&ö²/˜ÅðïVH>Gïjgñÿ²¹žŽeô×sŸä<& _ §ï“×tþqúžì\ÌX Ìðiëþ”Ÿ~¿ÇÐK?wýôîÑÏ >óí6àðøücÿÏ[ÊîÑõ$þD¨WýGïøã»¸¿_þ <ÿª§ïµs¹OrÔáÍqzmÕ5cüø÷—Wœècr3ùúb÷§ÌÀ?™Qú=óH°RͼÝ%?öÞ\àðøücþ?{§”óˆõ%²u&xBˆ$÷'>ˆyÒ]”%›˜ƒÒ|3îúhÐë‹ÝŸ2ç ü:ýžºÛŽèj£w?ÝP×ì´¼òÀ?àðÊÉj+|{¢×_=ñÍKìú+r›BsoÏÂÛ¬›a^Úü ó?5çÞ™½gZx|Cþ¼vòñ™¹¶E ÞÏO>&h[øà×Ò¶~ãáù/•ºÐ.z}X™[‚¸¡‚—=aüûW³ØÉ¸º§Ÿ¿àç§¼&à<ŸÒòÈ£Ï7 ²ÊñC5\ÿDýŽï?ýõçÿ€À¿L¾ÿòÇ S–[µ¿˜š§­gVš_yàðøu\zÃûøµ¦í ©í?*ÿh@20ð/J˜,óTLV÷ Þ´M9Xë޾Øe É…äNîyaÿñP7)Å?w20ð øU­š¼’õXKf!A6\D#;ù´7¤¼ÿx¨ü#p'ÃJSà_¿Ëõ“x´ÂT†pUwÀ…l¸.F wòioHyÿñùG‡ì:Pø­ï²¿ýç”>®ï*MM¹XkÆÀ–!!LÓ…w1º“O{CTýÇý^ñäâ9!ìË8pøþéŸû“WoÍ(ð›h)/À¸- ÷ .tðp'÷F:øûå_àV¸K£m€Ñø.É‚qçß,‚ÛûíÞU` \²áR< J4ÿ‚´’Qü®æçú§~±àü—–ø]ëבGJƒŒnÝÙprX«ü ‡AÞ ÉÀÀ¿1YæéÞÇH¾Ëþ—}Áod¯,ĸEèÓ!øÿ‚`J£ÿbÛŠšÛ—ù/+]³5Ð'@6ð/–­€ÒèÀ¿·BóÚ¿å?y”Ç„l8à_ [¡cW@ªð/V­Ø7ë÷Wå1Mƒ ü‹Y+ 4:ð/Ö­?ûõ>?/áQ²á€1l…;†˜±j…«ð¦|ñkçJR3ûÜÙpBȆþE¿l2°n¯À¿˜µ¢ûágüÀdÊcú Ö²M¨„‰:à_Ô[a…d`à_¬[a§fíç4¼G»³áÀ³-R4½Nÿ—3gN.½óZs¦ëŸ'ÿb׊K_^ì/“£—.ÈŽ ²ágz\–€—ÿø‹íd{ôI«õ‰²wååŒ×?Oit`þÅ®æå~óáx”ÇtgÃÂBçÙí6Ô¼õiú¿W*ªXLï~«#Cøîd`HµþŰÇïXê§ÿÆ£<¦Ûz«æ_@ÿñ÷ èÿn“!$eÌB׿ ú‡\ †\*¸»ÿb× íÒ»ü¼¸5)(¼µI!Î'îgNõýˆ‡ÿøÓô×Z²|‚Þmÿ–ׇQ¡# ô¹FØ)6@à_ ù·ör?sº å1!.è©ê?~ ãøy ¾æké]Í-  ü‹ÿF¾óÕ¶1pvÀò˜Z°…æÁ¿@þã³þÝŠãÉç˜s: ôù!B20ð/ü+¹™òs$å1wOøH3dÃç_ ÿq6þøn%Bå¯0ñÇÓ™3þ ü‹G+ÄYóýTÀ¤Ëc®øLȆ Ê¿€þã(¤ÿ«^`µÌ«¦w7¾úÇ’ñh…+ÿæB?O5f“ò˜Æ`\j!Tn˜‚r²ÚJÆË¼ù6̘s/ë•üL èŸçþ ¥ÑñhEçƒÏÊ}?¼<¦;N#Õaà…)Ë­Ú_DÈ?¿ã+PøVØ>¸õ ïg˜ò˜=Þ ÙpàÒÞǯ5þq¹5ÉÀÀ¿x´¢ñK‹ýäÑå1ëLÃA6\’#uõÏSsÖXÿbÛ ã²/œòý ]³8Ðß8dÃÿbÓ w2°.#ð/¶­ð[„.¹êj ñ„l8à_lZÉÀÀ¿8µBóÚ}—}?Óš¤<&dÃÿbÔ ;¼¢† ü‹q+öÝâ§8HÐò˜žl8T€Ñm”FþÅ«ŠçëõùSóJ€·ê ø›V@ità_œZá¿8S3@ Ùp¡ƒñßm}óöüŸ}b ’qj…ð‰§}¡ËcnC6}žCöß}ëÇíî‹þϾ¡e˜%þźvjÖvßOÔ)éb]‹2z².tÿ]+çâ€ÿ³oè!ø¯V´}uñ¨ï8XyÌ È† ×sqÀÿÙ ü‹W+ÌËo;ä{ †”ÇÜ <&dÃ…á¿Ë¹8SüwAÿ<0A20ð/n­8ûK}:ÿÑå1sÄÀžl¸‰Œ¾OþÏ×sqüøï†r¦úçI6‚ÆÿbÎ?ÝÒ»Îø|¢wþC¸ ³Î½Bµ ø‡xùïr.Žÿ]Ð? [=ƒï¬À¿øñ¯úvßÅAtÛƒ”Ç4°Ùpòôž­sºxñ‡ÿ.7þxøçîÒè°Æ>ýþ…ÛŠ‘ï÷¹àÙYO.éɆKÛ±—ilX$VÛ‚óÿ.çâ€ÿsÀ[Ž Ö„¨À¿Z±o¶ïâ ýùXKýû]9Ùú…"MZj߸œæÊ}œƒýwM¯Øz‡~üŸ ;º< "çÀ¿èµbð©y>‹ƒÐå1׊ý¿Ñ].ÍJXcívk;Ñ­d©øï†z 8šþ㛟â LyÌ1°;Nš6+V]Ü[ûØNîHøk}2Çw´Ïëo±qäQ¦sÿüòoÉúÑ©(ÌÝB2pÆ¿ÁÁ1rx¥¡ŠÅÑkEíç—úÇ3îä^=à÷m[èT+àeÓ MÓ>…ƇõƒS'|‰xÔüóÃ?{= ¶ýúÆ%í$ƒþü®ÛdIob+4?¾ÏgÜÓ”¸ÕVì»e¹¯é†À1pjÕ†sxjŸüdáŽSîþ‡cœ)K4NàŸOþYˆƒ$UcØ·è¶" ƒ­CPôÏïw]ƒùg¾Öë7ÂþlÅóöøŠEö“ò˜=þ»SÒ±…ÆÚ'¶¸O®1Oï¹*Nmd³·»Ê„ö.Ã0G1ÕÉ02ù>ÿîù 1P“ ËKo\ÒÑ7Ù¡4z²ë^”ù÷é;´Í}œÿnÅñ‡äsQVaWáÍ>óáš—Çt©’?Îa•M×¾q“¨]ݰ‰òºŠ&“©9aðp%|ÜÉ“ìþþËÉm£ÎF" ƒÝ¥Ñ5 4a ù÷ã×¥Ïü¡ë^ßõÝJ„Ê_‰z+„O~Ë×*Vy&u‘ÿ¬ôä® ç0ŽM×>Ù˜/íC#§ Ñ˯è;Q’ãÖÀ5åM rp—J‚, êNž¦üë&Éã[”ø¼WE»K£C2pØ´H)þ=é@3ëÐ×y}Wõ«e^uô[a§|æÃY*1§Wvú}[ÒfÃ9Müµ÷ü63j·êP¿ƒíËV¹5pÅÎz±Ý(ç›Ô<]ù7Qæñº¼tfa°K‘–IæñªH%þÍAV=ãÿ\#jνǤíø,¤<¦Ç:‰Æ«}iŸP6fô={á¿ý^;§¢©bµ[sŠë:eÜ%úÀ.ÜÉÓ—­¤ŽÌv:^¡î? v¬(AäE*ñï‘ãûoGÝï'¸¤8H•/}\Ó5–Tµá¸&V“b5jð3s«nØÂŠ_Y‡O×tÔlô TnŸ\58fpA¹“#ÆX2´MjðOCüƒòiÙ¢Ã`u˜ŸÊ&Ë!8¼ ’Jü;Ç—kЧg$Zÿ:w÷dûÑÀå1“&Χ™DíOû¶i'£ky~ÄÏýv×{4pÍ®šæÀ™qAÝÉÓ™®F2gVÊú¯·à0øJx ÉÀé_*ñ/9z¡º¥_<í/>èw°;nÈ’@í³øÖ>¿?¾âÇÂ"®ß™ëÖÀU%ÕûýfÆu'Ooþ©¶‘3Ôê>¢î˜[VìN¶ƒ¢…qA2—‘áÈç}%1ð&¥ß·ÄfÃùÑ>½ÿ_Wüø¯èóšÉÛRq¾Ïgf\Pwòä¼òQkm!I•¹# g¸að”Fû‚d2ÿ"ƒê¥¯´úˆƒ”ÇL\6œE;ÝÈE2¢ p©ua‰Ÿû×ÌÉ.Ü_ß=%3އ;yÚóo˜,¤\3n…Y7 ðð/Rì›Mùˆƒ”ÇLH6œ5 ‰UôÅÏ£öœI‘ì ûNv$&3.yùÇX"TL²E“ga°™uC€dàä ´#ŧþŽ7’äW0øÇû}ÄŒtyL™¿7Ùeñ͆ócàPÓ¢"~î謻®È3)²z×ñ>+ðñz–ANÇ9œ0Ø:ÉÀi®M/>SЩÓu>óBSâZá Wál‹¡uËcÆ1ηŸ6pœä¿Ü²Ž(ETÆ«G·x2Eòwœ–8žq Æ;x׺tæâÆÐ>’Ó]ÿ0-Þ{ú–YOÿ¡9™¢ ®¹ßžþh_àò˜qɆãoàcñc»5£ÍÕÛ<Ã+ö4ˆíÀ?=dœ´À+­’ƒCšÏp'Ciô´Õ¿¤l…º­Ü‡ŒYï·Þe(¶æ¼M¬¼¡w‹_öÎÖŒ¥›Í5»Vr2EºÍÀ?Ò=>@NG½wRMÕ¢[?P…rƒ†Òè  hÅÅ{| R3†Ùp¾´O\ûˆøe³â×+SÚ,¿½nÏZϤȖšð±DØ:2åÁe!…Áîd`5è_<[aZþ…Ó,›l8ß~㦠q¶©£,æâÇܳüÎúý…û¬Vu¦óO·Çט±6¤0Ø]’AÿâÛŠc¾ŠƒJ–ÇtgÃÉ£´ƧßðXpí#â—ñcà6Ë¿ÚP19)²¶¬QêÌhþµ’Ü¡S#‰ÐÂ`5$ƒþ%¢Ú¥÷NŸt5,i‹^6\H&VþÅ/^«'&Íò{/V{&EV–ÆhR$5øÇX"L§QƒùzrB20è_bZá³8]s»¿)¹èdÃE }Èœñcn ³üËõå«c:)’"üsÒ–{§³A›ÿ¾a°–µ™„d`пø¶Bù‚â AÊcFš ç2 ‡`b•$âÇÀË,_>ÜzhCÌ&ER†ª"®%”0x¹ŒÏ·@20è_‚ZQâ«8Hàò˜&6”…~¿öià'UóÓ>/ñ›HЙj–ïeŸÍI‘Ôá“wÐWjß0Ø¥ÑAÿÓ Ñ‚E’iÊIl±¿\ð²áü™Xñ÷Æâ—›hñc¬SÍòýõ;¹“" W†ñOFæÅ×öùŒmù…Áf(ú—˜V8|1‘j«®ú“26Žw¯ ü¦ÆI#~4l£¢©fùVqCi^4'ERŠ6’=ɵDà†ÁuÏóƒÝ¥Ñ < qnEÇ×^¶1å1ýýŠÝÙpJ½7‹F¢‰•ñ£¶4&Kª¨S'N3Ë'öYù““"õýæÌៈ¶Dòý$ ƒÏ“СDºL2Xÿyù­•ÓTò˜ÛÆý‰’;.ð/¿ &VS~ÝñkH®š±&%' ö˜å»ÔQšI5þù°D𠃿, †d`п„µâüL/”ÇìòG× ÙpaøM¿þC+’Sü˜æqkÆqÌò'ºk¶LÖU:Ö¤Hêñ¯›,Ú¬ð×c®{~và0Ø)ƒd`пµBï«8Hàò˜²á|›XéB™ß³sÄo>m+SÓ_LãΆQM×>…6T—®ø¦],*nìkN(ÄI‘”埚äìh·¯+ü²ß0˜%”ÜÒCÿ¾1Œ?ʱ 5ô¹ oÊŸ{.iš6Ïá6/ 5†I]ñ›i|þ~C˜I]þùµDàë!8ôo>ýQóSDÿºúð3ÓŠƒô*i—…iäâ­ý‡V¥°ø±÷wI Ÿó5mRÄ‘vüS‘aUgàõá0¸ÎçM’ÓHÿæÑõxÊè²S³vN•Ù <¦'Ž6/]û8âWP§HiÖXÕÜ%þN…פȊõý–ôâ["8H~¸fÅ]îô¡r¦´M6\ØT“"õŽ£Å¿ºðG >“:úG™:ó¸<&²ÈÆŒa [»ÄnñÛX'M}гfùÞ™q>ÿî)“"ÝÆtâc‰ÐìdU}ëÖäÓv'§Sitqåß_ýÒ'~ãÉe·¦Àôv´ø×ö@‹@ôä‰TÒ?dZþ¹êiá é¯ì÷ÃHËPxÚ‡\Òº5i$~!„Ál¨ÃߤHªóɇ;4ˆí[~óô0Ø œ¥Ñ­%ËŸ¿yæüe%ͤ›o¨[>÷æÅ…’ Ñ?ÔôÔŒ{÷&¼!¢îŽ¥S¹§Û°s×Ò}Éü× 2»>ŠƒÐå1ýÆÀ ~ÞÇ,_(V›Ìœ>)’ü³Åóþ}t9̪{þ–åÞBé`gÕÆSôúÛH§o–§Óçãon¦]?÷ƒæd]è]þ½œz*¼ï–¿M¼ î¥QJœ¢£lõŒ§â;ᡈ_Håm–ü{í’s{=…ÖW&RŸ´%Â>W¸où,ï0Ø]=õŒ7ä/™{ý}‹?¨ ö‡™Px(õ¯úÎ`¤`/Tþ_tOyHOÊ}­EÜó[›€žßÄ…Moã37òî—ÞßÛŸR;SÍòyœϤˆ€Ò¥ÿ e´%ŸNŽ~Jœ‚ÉÀ¶Î}=Kb¬ãofù|zC‚Ž4áŸvWK.ú—öùÉ0x4J£Û •n½‘tú"X¯“t¡p´”ç{åd›Å/Zx{ÞË I¤È™?­8Hò˜z~ëñ[ž½êÓri¾ÿ4msɲE³f|M4N¢/³üÌ់.¥°“§­¾ð¾É08ÉK£Ów×îz>œNŸÏPxé­I G‹kÞã/¿x×åúË/“Iÿêxð•©™úËc¿Õ‡Ä±Žg†Ý.?ZNö›-±j’o³üLáŸz›ŸÁ~Âàų—³!;všl¥ÑíÂ*?;gT+61¡ðò†Ä÷x£Å¿‡ù ÅL|ÕG?“\ú‡lÜZ1U`HyÌþŽôŠºõnñëé•o(\6ÿú[- YÊb>,è×,?øçl$·Ì}¼;Ù“aðDÒ%kܾ}±¹‘“Pø¦Å…ƒé¡¯ŠÉv ¯×ÞÑ‹PïýI¦ÿÒ’)ã}LyÌn~7ÿ†‚8ˆ; GnÈT³ÆrX0€Y~úóO¾‰¬èåýz?XHºVîd`KâŽÉN_¬WQ)÷-½ ‡Â ¬­+/!þXý”xháʤÓ?d\ö…ú©10Ó© Úµˆ‡øqÂÝèÜc7,È,?ÍùÇZ"ð÷4p±a0› ,Nh2°–Ÿ¼5v>è¤CẅþѺòYœmÐK¾P xÌ’|ú‡PÍíS‹ƒ.ÉŠ_!#~ù1? aå t¸}¯Ø 6ËOkþ ’…kC™8X~ƒ­‰M®ú`ñ}8$ˆ}§/©Báh]ù1Î6Þù©Rñæ[>îÞ‚„ë æµ9SŠƒ.cñó¬_ɯ‹iµ° 1ËöO"þ±%‚CÊÓÎy°Ð=}ïÒè:f4™,žJà|DœCáD*ÎMÜíøl2öÿ¯â yþÊcª6ÅLüHNùÜëïŠg(íaA¯Ì¸aƒ+–÷ߤâßOKï0ø³o72§*~5 éNß§H§o"~{ …£{åsx½jÑ&„ ¾•¤ú‡äÏ~}Jqe¡¯ò˜ñ[u¨?ª ·È Ì¢ÏÆ(Üåñõì°à²ÂÈ#!§–Ž;2…ÆrbvÚÚ)/Ú¯Òèz|•çßèNßt˜˜PXœšúÇoüEñƒ'Ÿü¡"YõÏGqkÕÔò˜±?N¸;’à“€»ŸÑ ☮üë&>’[”¡½i¢àžûþщO”*–]~v"-Öc*…Ÿ‹W(œþ%Gˆ¼?3%“Š.év¹T7lŽºøÑá.³Ü*yîÇÜaÁð‘¶ÑKÓ–eT6j®ªgo|ãŒP¨Œ‰’NYt&{Ý9a> Ǽ:T4®üü{B[ôúGŠƒìð~ÄSÓ#~+Ê:¢rut„”7ÏŒ0±2†à *Ãû„fùiÌ?Úa{¨±ìè©_Î\¸} ÚÉÀÃo JPxÆó1…±þ ùõ¡K_žRÄVMbàZÖÆ}eU䣴$»h±/ßÜd„fR¦Ã4)9s! SFðO³3K„Éw ;þñŸwÿ5j‘…µ_¸›R¢Ó7#L(»!Ð??0/¿í°÷#=lý"*/òž=¼–lá.ßv‡7,hóe–ŸÖüsÑ%‚KCÌô'ÉÀ{Ÿ½ñÍh\-¶Ó7‚RÂÂçc G÷ÊïJýCèøÔâ cE$ì­ì¨ç§Ÿœ^5¦(!ía zgÆ1fùiÎ?UH–,èdàú_~湺°GmÞňRt(¼(_ýOÎðúoÄKïjðþá«è±G"îpW‘œ´NNVóÞ½3ã éÏ?ºš UÚò:#}’®®˜sO~èc l§‡/}lú¼6Ó„fT©Šzw ‡Â·G?Žî•w%ÿ"ÃþÙË£âÈA'™]—|«­"ÉÍ iXpJf\úóo8DKzð…uC8±ø3ËÄ¡uú˜bDq_8ê´štãj…lrŒCƒŽgôCá¨^ù½IÈ¿Èn:/~µ-Â^æä-3ãa¦‘@„4,èšàÔŒ¨­éο-Ðdit£ä—õÉbDòtö†‡8½úI(cáæÅ„ÂTW’éßdsõ¥tÓ?_ÅAx‚SŽCŽ2! ZTîŒ JÙIÍ?1±DØRz¿Í“ l.¹?PN1¢(töô¯Îž(b3ø¨bBáh šÿ½Ÿ~ú‡ÄYóC‰óWŽ#ÀsXЇõϘþüc-B‰Ûì\É‚hð3ň¢æK´³ç°´c#r‰HÈòXM¿ ß…P8ºú÷pêrM/8Ü}c¬Km$=ø Ò™qáPF𯇔.¥ ŒWitÑò›UMvª£SŒˆg;¬FݸJ!ó<ÑÐðȨV3ë>`”Bá(êŸk¬ba:êB><„ ±G& ذ mL,j3ƒÆt‰àâk ÆdéºÃ`N1¢X& »;{Rž=‘D>2¦5˜Ýý1—nršk8†CáÏG GçÊÿ |t̓­ÉË¿ˆà£8ˆWn9ŽL@ÀaA§@æÌþÑ–[CX‰<¥4ºëø‹7-š=ó¿Ý»é]zdoT|dU½A™B=®3Y}\D—^D®ö¼gfÌûàœ=‘W^ÀwÇ_Zìcå½âà®#,Ç‘ ð7,˜IüÓí ÕajitQµ$& â°u¤³Ç7Æ• +¹=ËUÀØ.ö7×½÷µ_Þ0°+¯HþE6Ø°ì §ü„».à‡é™ſVb#´=„`m,–•]¶:{B±ÿÎ^â0ÌPò?xÃ]$¦å82ÜaÁ ãc‰ÐÄÿ ZF<¤ÑóDŽQgÏ qT@Ϭ°5Å”'%ô.þJá»Oßzã‚· Îé "دî}ÿåÿø¤À–YüsÒ–{ù–è™ ˆ¡HÏÛÙ–„ÔÙ3Z"žå( 49öæȬp3è_ô±óGTlF`¢<rzÛ®Z:üŒ™Ç?UQh–†HJ£Ó½quH½Q îìEuL'Î ˆzßÒ;n]²o,U”'Uô/àÖlµŠMê­Ôê]šÞÁäVÁ ä“w÷”¨»4zƒ-.›ÙRgO*RgÏß}Ngä ƒþ¥ÌÖø·%)£¨; ´Ìk(jõÄ™–¡dUÁŒäŸŒÔZÛÇ÷åždà Áu2töx(`¼ÖJð…AÿÒ{r¨ÞÃø§U/é¶KVRëŒÄ±ÐFúÖ}µ-CÉ׿ÌäŸ­Ž ÅÁÆ–FŸÜÙ…ÖÙ‹wjf"0h( ú—PœÙÚzÿ¦÷ž”ºïçÚa}uÉÊm#¤­ŽŒ:Y×ì®mu%S™‘LåŸh=±Dà{C²K&“½;{ YH=½É–ÀÕZ¦„(  Ïô ƒþ¥>"ÑEb²)¡²w´øŠ'.T—TŠð+v “BÆãÔêݧmC&¸ò‰lEh–îd`“Lãªù¯Ù£4ô¡¬Ù‹WP×y{35ßW( ú—âpŽW¬¢¶«ðo)ßÞæZv M½Í›.TŸoÇ/+ïÛÝŠZsT×’pÌ`þuK„Í<n;‡C0]!=:מ|KóM“ˆDßæáPøÎÙ‹KÆ€é]óžÍøW”=Qr¸×F¬:ô³èÄŽ|jµP4(>U:6¦7š­î‚Vx¡·m%EkÁïªê&ƒPŠÚDª`&óϰ?Kw2p‘½‘±Œì…³ÜÓà!m¼š …-À¿”‡ò¼•^çRBœPŽ0ãß}Ù"u„_+è*íKzèTu„¬£ãZ,‡ê>egñ ê|~ödÞT÷ì9Ö¢reì•OT+:Vò·Dp©töF“³³ç¯ÈQ@]Ü[CáEŸÂ¡°+úWþ"è_|àpžÞ@Q=»‰€]ÀýºÖ“û{ ¡Ö3ÅÙ‹Zñ~/«…Ùä™Ü¼Â’Ýkêé%B#¢æò­y—á\¬Ç›Ók÷“L)¬<)Ç?ÝîJNïìi –”tØ5+Ø$§’… åQ¾òY 1†Ën6¨.í]ÙKd«üDIîç‰ûNï$=½‹„N¥¹%GN¶Ò'ì>T¾cm6…ƒarÀŠa.9Ø]{®é\+î\:²gó`~âÙœ¯¡Öì*$ñRÁŒçm‰°ƒ_Ò¾†uœÒ$Ï„F4pP“žk÷êç>õˆ JŽuíü±`ý‹ œV“™¬vÔž+'ë\z¨•{Î1ü)a•í9èw ¦Ô ˆõèl¾@ö¯¬`^µ–t²o¡•±¿iXÞvdÏ•ÍøFR°¶u~¦ùÂÙ®ü¥NG,Ù­+ŸºüS“þ:?K[:•S°pP›˜ØÝZ­+¿`¯ú±¬ðT\P`ýë¾XHQ%ð¦ÄÖ×t¬tÃIÂÒ¤ò·¾LLx‰K¡é)ZÍxǨQ Kˆj¬£'«÷W’·\bõo#9h#!òêMÛ+ÛÏVw—äQ”˜ "^ÚJ”°áØù ½â!é°R5Н°Ýb‹®ÿB·DHX'çtÇÓ¡Ö•g˜×Ö{ zL«7˜­Àtöôt-U9&W Ö­ßL¦ms{¶>s|™û ÊÈ3v¼* ¹ìøi³vË¡L2ØÝÚ\¿놼búý¬’ƒ–E ÖäR=dl^L2µšKŠö×u÷ GY;&,‡rå¦ï„Ñi$ø—ðû¯ŠÜjVuf Õ­# VÀh]ù…ôF{Xï‘*`4ðHdŠõ8–CWøõ¬S.;©¸€O£eRòˆ{<žúdü.»kmΖc½Bá V²Š –°§ýl½VEäðJiñZòaÛÉ7s‹á@õžÂ¤k™}•Hmçšüu–ÞnwÛHhÍÄÉt¸oªÑM˜B—Ãdà_âã¶D° e¬€ÑºòEËP¸ñ‡K¸Upðø¥|ðÑäþ]‹È"6ZÉ™²§£:m„žZªCÄÁų²œ¡°s`{EKp×ok>µ,è—’jb•—¤Qsϳ Ûºµcê‘3¬þí" h ÜXÑC1ž ùE}Ç/vÓ©X“ó‘S1–CüŒA5¦Ñ°:S€I1þÂX"ôgb¸ÃQ@qÜ0jõ„óVG_¶€‹/Âúçœ<ÌßK 9Äqâ¬éMÑîžA7¦’KÄø¶Çý«EtX8Ùn;\H]$C䇙•-T>ýî³±rt1«„m Göž3è5c§ÝÝÌêC-dŠôRrOÒæ%Õ­R©§¸ÿ§öLUF­\©fäЙ”üK ýcóáY3S=”9SRÿ²PØ÷_k EëµÇ{¶þ-{œm {BöÉ®1·[$v †hP:¬Äb ÀrèH9tÙL¤â‚„«í¤£;™ÄŽHOåÀáñAR6qÇeªøœ2›>Iy;ãhº¯j:Q¹sc.uÊb2èjY1ÜAúžGHŸðÈÆ]5—HC'š¼‰ë=u{|(ã˜DFË¡Þ`§‡7’€(Iæß襛‡2Q‘M ŒÖ•oàlC£Tp¢lS.U4‚oƒ-Ì"µ‚2)VFîH˜mrŤe ãO'rhK&9¤MxñÿƒÜŽÝäV‚I£J Ëéýš‘¶|ŠÚFº~”–ØíoÍÞz¤U™ˆAb#-¹­[WÓצ¶ª(ïà~w`¼¹iõ¶•¾~÷_€;¦“+ MNòM—ÉALîH0ÿ’EÿåP(–i;GG)§ ÎGÐ —FE¶]ìïjÛÅÚwTžºLÒdÜižÊˆŸq(U£ã:ZÑÙÛ1åðhZÇNˆŸšŒ±º„ A)ÙcjnÝ—»È3úFWTK|ld×H».’›Œ¥ÒÝ´#íž!‚jÑXØ{y“9î&æoó«ŒúÄ$ÿ’´%ÂÊLõ( (n ˜tëï-ƒ—kw¯¥¨£4èÖúÝ ¸ÿc‘ ²çGŽi²¨wH@™´Ó‹ØˆƶJ¹wöT´ ïÔŽŒ+ Oö&~ÆÂÍÞ9¾«‚Dº–|z˪ÒÓ£IGV³²¿¥¡rÛÚ]]§(ÖW–Ry…;­ïUÊ¥Cb¯¿Ú<]Âh–ÍJqýs["8A㤀I:þl–‘Î :ëîdiíe±Æj6èdíø0+‡øfiôü¦BPFvM¯Fg$Ub¢ÐÙ3“‘½a_;OçGÉ þ´ªq½Ñ:õ›]—OäyzÀº‹Ûë:Ç’œ´®ñ¾Êƒ›²ÙFŸóL_&O6î¯=×Ú3¤ÖŒª°z+} £¹ÉǿĶD(E €j{ é}ç]²†ß‹mžœ÷(ŸVhºN—oΡ(:¯ý<ÝÚ~D8ùÓ³[͸ƒaeÖôŠè¬~ƒç’2ÒkzU£zâ«B°LFöð«GÄÓ;vLˆ7  ‘‘½ ß,FÔxµ[>¶§V…M×x¯üØÖ<ª·Â_(=~e/{ÐE^3Ø7¬·Û,Æ Ý8–C«CIÌ¿D@»+K„ôƒc,® Õùí#ü~+/ý¸?„V8Õ=ôâÖ*ö·D‹aßùõÔ(ÁiÇçËF±9â¤Þ£>#\eœ*“¦i2IË¡_ Ÿkz]˜œ£î‘½©;•×|§ÙS[,çvÈ/.¤ dû˜¿0¯¸AlIEòºÆ-mUÛòºH>C å ØkF %b˜½®äݵ§OªË!0›“qGYj´Sƒ@E#¶Ñ?_ãõªÃ8Âi…ôâ‘í«03È™*ËÙ\~Z€æ¸;M±©Gä2 (t]šªŒ~•ÑèIqÀa¨M£Ó«ÒÁi;5w½Û¸ûâ aý³L/¯%ݞ˨ÄÉŠZ·§+Õ™ïr ÏWéˆö]%Ëz‹VPkKGe›Y1”“í\¹¥ôðéËKÊð/~Po ­DpÚ)à¸8^ Í+o8ð ^¯{vEø­˜¼L›¼³¿%úF~õŠŒG/Âi1±r¨eYi¨ÃPF-'ßd‚i¸ŸfÀ=Ýô‘=_L?ºmú¨Â‰3i4÷7Þ{¾ÊFâù‰õL9b*o3Ü¢èL¶g(P¥ÿâ$§sð¹ÙoH½‹nÓ)E]Í Ç.M¤†FsþãÚo ðzíìÞ}ÓÛ\Á² >,®»ÒÕî<¹v:¦#cbµvwíåPR"œv²¦Ë!¾P:ÏÉå*£ÿ>ã÷e*"“¢¡a%Ùã;th•\8¸÷öl}ÕÕbzÀ'ow“6ýnå®ñÞ Ž¢\w9b"‡—Ÿ¸"sæ³úgJ<ÿ®äóÞ„OΚžT’¼Ê=Eëó<+²÷´™£¤€B¥-éõ/+„×þësýŠÞã<`&çïì|GþmÊ®Ótl¹’=çôTiÇ@8vŠN-‡ø×¨— ‰§¦ø3’§™>š(–*TÄ#/᳏çKóÈ:—•ÔÊ S:/{u‹,•E¹“刳¯yç‹_xôÛßMþ gm_óá;o^—<{¬%‚9)¯§}B-íïh¬;T¶sË*ÊrË:"Y²êÔÄP¹Š „²ò~¶!ñmþTXzߌ÷=ý^(·ŠóUÛÈ'×ÉŠa^Q幞ˆxLË!¾x¥œ•CnŠ¿HIyŒìMƒ¦ëÄNš… EjIhØß.t  €So:_Y´ƒSŽ˜Ú ¨O<ÿ¼ü‡ðÅ ¢Ñq±ÜHàJ¼Á dí«8Y$O7"îº|öXUiц<¿’Gå­/ÚSy¬áB)sƒ_yHèLRŒnÿ/”ðS]Þ ºÎš*f¯ç›¯¿¿¡ê*†Vxñ ÙÑ»o>ôyïRDå´9lb%:ª"#{áV\lØ·š uI·ä$ñ{Ûñ­§å(³`é=_Y'$‰ÄrÿnN8ÿœB·þ‰¦¦e‹ØsYwÇ ¶DpÂÒ~¸½¼u$oÝ–e‡ê;ú¥êÉQ?SëNÖ¯ã8: ¨°$±þý(„_qåwÍ®åoñj…¾®ø£_=ÿKæ@^Ù|z@_»‡¾V[È© ¹q߉+²Ð"ì^ ר?FÉ5ž£²wõgèJäë9×Ú›K ÊÎ?»Gÿ|»lp•QDÖE‘5ñÉ0*o”¤ˆäM…®ióò uÒð‰¢Œ¥FKÿ¾N“ç`öƇú•!ôV\yá¡[®ù"ÈØ"k;ÙHw¹ÜIúäÀ:8ÿß¹KÕVS”Cûrg½ü½‡·¯ N“‡=šÊp8Ç’„óÏ:(øÉ˜ä&–ûPFñL®Âטø`ÇæFf$µ^²ë1—¼¦ú ’Gå󑼩P7°óü[ÆÃþ ÅR£¥óèëŸóVX„}ÌÎÞ;æÿUç¿zø É¡(º“1Dg\ˆcbEï.fj¦–H_ªßy”¤4oÒ¯«°#@ÒðÏf1MèˆË®U"æ“Kn󡌃’áükÕM˜¢(w“‰ò-ÊÔ‘¼©ê%­[Ã|Zq“! (·$%ÿþ¯(>úǹk7ìÉûíVæ qEéÙ!ß#}ÎÑžóU-d¯…½ª´Õ1r0‹è´®v-ÀA| ‡;ˆióK.µ%SóÛS„›Ù¨×ê±þI‡&-7xºlØÜ^lR%¾"Um" ”'HYÒœ†HÕ?É›&_âCL7 {gk˜êåÒ ÅF£Å?Û3õ(qþ¿ûÞ¼Û¯ù%ŒŸã®Ìš³ÓŒæl*¯ïTDpÙ1Ü|hEí¥»ÿµ¾¼qÈâ´]K­°àïÏéÕK!þ¹Är÷\,ÃRÖ€hjÆdpe)ÉŠ6­>,'¶V¢ÛÇâ!y±Ò´÷W09Nye¶ˆpØ”tüKÿ »VêãkfÏýÎoÎøz‰a°¥vO/Ù«c/>½üÂÅUVÊ®M}¾‰š:ÊWÈdoßÑí&¼äãß ç}¬šŸ0‘êÝÃ’Á@“>,7<Ê(V£“qR/Šßúþ–!I^Ck,%oZÓ:ʘ51«…7ëçÒK¢¯€éè?î’_ªXs‘Ùßü«¿—ïžÞc>½‘¹äà8µfwm³8¢ ¬ú¾zzÍŽÖ¿Ü’cÌmNsIK²SÚꨵG• wIÉ?çJ•³£^rÇÄi³/Ióˆ{‘(Ÿ\ò)Ê(ÂÏØˆ›!À°¡‹.\ªó/y 5Dò²“Kò¦ýFšØ51ë›öR@cRñïGôvaRèMëÿòú7îÙÃ\íâHÉ9ÈxíºW¦Ðbhƒåtq"ú¦T´éPó0äØ:¶PÔRQ²vLæ±KRþÉØú3+"&2îEZÔÄ÷UĤ‚뽓$ƒ+#>°(I1ì©ëkT\Kž’—WxÉ›ŠÑ†M욘úÑdP@AZý ‚à/÷^ÿ©9Ï\šöxÙ Ž1É^:{„çôˆ“æÕz®M=ûF»°f½Îe§jç…1º$柵_PDdd­-§ÅÑX2ï²[ñÇXFU¬QïèË ?Ê82EÍrRü•¬¯±Ñùp»Ê¶øO8£rÖnÙU^súRÇÀðxÒ¨ _ËN_ 'â2DUö+Ðtaö~¶èÿ-8̆ZáÅ£;òiÊl`©¤äˆ™OŒwÕmÏ£%“,ÒZ¹ëTgÑÜÙr•^çBåío‘Kþ™ûŽÑCƽ•»óÌ`tW'9ɬ‡e|”SЧä’ò5#’ø•¼£I.ySoâjFijw_ c裀RCšð/þ¨Ýöá/žeSëÊ«ZYYt¸Çi2mܰ÷D«ÔÇ`kûÞüI—÷Žš6Õd€aÔïΡ֘s)jqЗZüc'ÆrÏÄîÛN,†Úqõ(k¸.ã”q¬"Û+°mêN¢À6ÔsЈ º²KÃ0I0Ê¢¥€øüõùnúÄ0Vì–á¶“eëÉ®%ÜšI³Iéq‹“¬Jž˜òAŠ3[éu.”´æ”†üRƒ‚oþßžfz°nëäM>óUêÄKܪ׌©”d}ÍÔÚñS”ñÂɳ—ÚºéÄÔ‡¥}¯Û$a ä a®êSÉÑ s«rwÜùÄŸOÆÔìb–µ´ò­*©>º5›‘¼nŠZ]vVèÕ3tˆjô:—ªìzH•+ïœÚüÇÅÏ1V¹±çØŠöe=Håí>+‰¯9.B† õSjÇr;ƒF¹Æ’òW?“„è( èßtXE »r–ѽrçè_óÖ­ËÛEö•l—o'}ö¯Nq©7[N¯¢¨v>å5i ªüëõɯ¾üÞnzŸÉÜÊÛ“°rl6ã(ˆ&¸…e Œ2Š•º”_ñ˜$¬yMŒ) úο{õñÛo"‘ìUf¼bÓ±é¯Ò7ïɹ@ŠuV÷Â_ŠóOßRF­¢o„µ™ß&=Ï8’è¬E»Ù0&sûºç†TÖTç@ø& ^ èJþ%¡ Ò[C÷³Ï<0kæLæ±q:á(.“u.oßCýù$m´¥½‹àAöþv×—æÎûûË»sŸ|‰9˜XDð2{°˜àMæÀ°”àwl?éï—/_þ7ö‚ãÝ¿0¹%¸Ë9™h‚¥ ˜íÁî;“"Kn’œ—_|æÕ?R9tW,wEéyYÂ3·µDƵ¦!U¦õÆÏ(WÔ±kb¶4†;qP¢s¥ÿ’ÎQåŠÚ¬ÇýÂm£"6$vº]’˜ƒ¾æææ+ìï6Ÿf-muõnÅ"¨ð¡e–B²ö5{¹ñîÿ-gË >äjæÿ¸ÕtÞ§o]ô>è_Zá¡í{ÄL,¼·)ñÍuq— Š]ÄÁ_$3¥ôt[Ø& fù¤Oè ú>W+W­%ë\¨±ºÖ‰dk¤f§{„Ř¼ç0uø×Ë–,Ȧ/}Âû[V­BìIaSéR|J$\“®j]éÊ¿$ƒîr™…,â”íÍ?Ô“ÔC~WüäÝ/þ©ô/ÒVè;PÔq²Û±2÷Wï­=қб7—y|X$ô*æ:„MåñgKGYN& fE¸ úF,HÝ¢*ŠÚØ?‘üC/ŽÞm`è$³]M5þé:è!újòýç{/²'8qH.¨‚›2b©&R¸ž–Ç$auMÂá*`2ðÏÕ-¹Äb¼Q(J¼×"F£Ef³Ù‚7É5Ã%¯Û@¯s¡ŽˆÏ«R]›¯ûêþQ> úY+v±k¡ØäÆÜúäOþ¾g$QÍ7¨Ý³Áî*…ÒÑžÑ6†a’ÀQÀAþp“"ÿœP+ltiØÀ›•ùùëmùùù›ì[l›Š‹wÚ‹‹‹wÙKKKËì¥*Ù+**9jjjêð¦þŒ£¾¾þŒ³±±ñÞ4·;[[[ÛÝÝݽd3ÈH®”‘\…š‘\‰–\³ï‘KwU+½ÎEœ»·%%—8›[vþñ…M ¶BÛ~˜$ŠÓéã•û/¶Úò§ÅL êLDµ-»~„øâ~ŸgBT¤C© uý:÷š oQ†®€ÉÀ? Ö¿•V’ÒÆB† ,!¿-ÄMNþz+–Ü 6,¹[ûr)jçEåu¦üª+ŒwýÙŠZè_˜­Ð¶ÓcN2o¹jÓû“{ã–ëîé÷ŠøÿV­š[³Ž$'*´©JT—´n5;!Ì{«€ãÎT៭BPzÀ†ûp¬¤7‡7…EV,7E"—c’Àëà( xÌ úà ·×ÉÅÍÆÌ¹òAI´>Ê]W밯дä¯?zì¦ÏÇë¯ÂZ1µÜ7ãxxÜ= ¼|lß–U±:7çß?qÓ]±ê^¶ï£E3^g!T“›ZÄS“‚vÁILÂ:¼q6·!\1Þ¨5øŽk@“!¿öàuw¿š)úgü!õ-‹°FìoŽì£4-•k=ö¢Ëj_Æü7ðåç~»æÈ@Œÿ2‹FÎ(Îã%(VhC^!mQ³oÉ[öæ«‹aƒ„W-þéoßg- ¦Í³ØZ¢ú—xL6ó2I°óTÀ¤àŸIðÌ‹Exc˜»oîºo>‹o”3ñF/˜áÞ»ã«x8 Я£ßaZü:Ù¼¹»t¾RËÿ—,¨YI6ðE(,Âçb_9ÞÔÑ{oš[Y¥åÕ5†->5°÷(³c(»jOoýcZ!oGHõò+I¾‹‰t5ì‹£-khá;HQk+Z|/a³wV¬xëéï±úÃìI—‰d‰`Žsíí.©¢ûRÝþm¬Ì¼z×M×^óÙ>æ 0뾺‹!™s_ùMYtÆÌ9& <Η}tRG©ÿ2R5D:†ÂVÃìu§°Âí;H6XᬅÛÈZšUX —@6˱0.ý-ÖI¢Ž´X}›ÕΉ»ÀÝê™w’ÍgñÝKðiöPOžÐß5¿dn~ñ¢Ý°Ë«õÃͤsfÅÄßýÒu_ýAaÚëßd­G¯Ý÷` ˆ–G’뻆uÏ ºÜ¼þºÙóßø¨.fŸw:]"oû@‰ÚÀùÃäüõw?[ÜÏ|ûž‡}÷ Æ ]ª"šÁv4å½0óÞÑÑriÛ$¡ÉŠŠü) ŒÿMÑX&øvúÐXü[0¾ÿ{ÌnÊù:éh^’¢L€¹eÇv6¾§¿þMB™e¿áÚï#4XØú/ÿòAfýSí 8¹.;½õÏlŠâÐé˜,ÉtM¨†„Ç+··2ö¿xü+wÞtÝ9æYêÝWnÞ7£óël½µ±2·IB.“„à ú¬¸cX¼ ÷ÈzS÷ñŸãã„5ŸŸñèÏV´¤Ù•Ü ‹ ¡ÎŸÿBÇø‡ÉgC™ÂU5—¯ÞJ‡åR몮ð˜£óg_÷•÷EéO»°oÓŠÞéež¼nÖ¾2ïc¸oGåÉ‹¢¸®þû›%ƒH(& \TÛAÿbÓÙ“ ÿ§uÍz÷>ÜC–â§­jÏ.ÛÂ’+M®|·€ßø›¡¥ ¡óÞÅJø¾Èz~ÙE¯þ³˜5¼¾èÊ ÌÞ±üÂO“²Ÿ—É_òÒ7ç~‰-`÷çÅ¿x烄» {Ÿß»’ÿu„ØÑ[ýj Ý[¦í©Õ!Ξun_]TV=Ï5bcbh‰›¾­ø'_¼eñæˆ>Ã%­[ÃË$ÁŸ‚þÅ;D–aý{ BU3¾ÐÙ%%øæ})rЇ*?þÑ×®kNÉ+/@Ö‰–c¥5ýø—´[Š7E*,„U¦ËâPƒû¡Ã}}ü…b„¶üþ B~D´fÇ>0á9•ƒýcìãè£/ÙNEhõ» ‡6Ià( PiýK<ð}V\\‹Ð‘‡þ€Ðy«êÙÕ™Ú’[ö·²n{ê\yw+lòöúÖ®ŠªêÆ?¨}dÎb·úpc_8]õ39m½~]5B‹åÓ.½üBÙJÖ>p_Á‘΄ZIºÌãl–Ȥ} X©‹«‡tóªËáO“§fº‚þ% FÏbé;ñƒµ­™õB žFH›²!rÙ_^þÒu˜RåÊ{·Â¡ê–öåQ'šñOªºoÊ…[ž´…1IjÀç èuÜ+~íÑ&„¹Ašs˜^GÛR…G»Út™ÆdBéTû@KÜ4ðÊ[sn|>§/ì÷›;JÝ& ý.^ ¨°‚þ%iˆ¬Æ¿”¿DhÃŒåXJ–Tá~âű”û;ÌlÑO[vµ8¥ôUN|dGþ…zü£ª¿€7µ­Ù˺´Òð²!F.à›Ù»s[úÝO†’zî £+§Ú& ²¬Õ£Œ}`}ôUû—ˆäýº¦âà& Níd´¯°$Šï @ÿøâjñÜ…˜‹;†ùïBèÒ.aŠýºß?sûŒÇÞM&ý NUk]i™°h>Ž7çÎRÔšËCMâðs ¶Ž"ôô'z¢V W§ì|é ·}àæš®„VRu0>ú\ûÀèšÆðAEC˜÷uC¡Û$aŒŸ&„ÒÅ a@y÷£öþ`?Bÿ3k fɇ¸31š!²æ\³3vR•ø+:ÿ¬ŠŽú‘#9ÕS‰]WjñæbË¡ÆÞŒM±¤lú¡/ÜÏÈžý ô\H/ýã­½jHäÅbJ {ÙŵÙÌXøa}xK²y˜$¸4“ (HDÅä_œý‹0DÆÝº¿6 ôç­]r÷/¦‚-Cë‚ÏÌZøveb¯|¸üs¨{ §·­ ¤¤üÛ)ÚytËÁÓcúH²',}8Àüõ·ŒÍÁrœµ<˜àËä2ã.˜ÒË>0ž>úúêå‡k}ç’²ÓëþM\ž> €Ž‚㋾…ô/š¸\Œƒ©çâÍ»×aaÜ…cåH²¾‘[µƒíêrå#åŸÖqåèÎ| I?PlÇ›Á½ÔƽªA©)ÒËX…ƒ?y;ä‡D®Ööz¥Æ¥nýsÛJTBöq=ÖÃL:M]Ž:÷Äý®ÂR„dïo@h`i6~ìH”¬­µaô…íîÂ!~M\º!Vÿ„êxŸÖý‹Udwv¡‚àîà¯fBèeÁ„–Ü^ƒÐ{sO ô·ï\DhãR6ïø°¡c…"„ÎUáw 4ã›­RoÅÜzý ˜õŒÿ¤­Ç÷ZIOc‚TÂTQÔjÕŦȫN:$§Wæa•½a)ÝÕcŠÉI`4ŒŒòšqè­-ÇüPV` £¶#4ô{ ã‹ÿâ˜8ûÄëBᑇ~„†Ýø¤P¸_ð ÔpiæÓµÜót,z›~BÂ¥«ñÛþ¾ý”öoþßé®D>,]pÃã<úú IŠ ß& Œ „¢x3°õk®iüs,ú˜X…»Ré^S(FèÀÿv!´ai+BÙÏŸCè¹õýòóÕ½(À½È×n®cûßo_b_Wòç>„jÉ{ÏíÊÙO+&ÉsohfyïÙ}øSºÈç)„ø“-‰½ò1àŸsTd9T¼r­‰¬Áµ“~‡mõæòÓŽˆÆ \C ;i«»‰A|ÿ©}ý‡¸§µè „:îz÷¾f~¡K,d-·½„OîÜ%äÙ·ðnñ?p§iùZ"‚%© ñÕ¯ÆÂhlÆÐ"ÄbigÎÌ2iŸÊØŠù”Æ"Y8snFtüe†CMPÖ5nd’àÒ âÞýC‚ÇæÏÌß ú—NŠ9Ž£´AZ1 ÑŽ!TFaý+XŠƒ«.n!8ŽÊz×I•Fè{3a›€+;þ-M5»ö¨ÉÏMOìé¬x§ÌÙ* Ï>xfg1Ù±åRÙEÇÛŽt’ UF²¹â=ÛÅøècÈû@!SZØÅãýᆃžÊ'`í§Xv ÄüçÀ& sB~/ÐÿÅ$%)štåcÉ?»ôʉ3üƒÛ® ‹Y4ä§g>zQ®`Ñ ÃÚRt¡:Ýù¶~™&ó[tiá1®} Y%mà±BzbG Ÿo¦#öHÎí…œçn¬ õºM¨â&JåY’%È*ý¤1ÿlʮɖ\ª|ÒSA½­ê¼ÈÞ”ÀØéôp>Ýl!ókΫ úNáˆ>޹ºü]*¡·} ŒŸiÌVŸ¯=©»¿ƒþP¢x—ØIä¿àÊǬÎ1õðá’•µ­”ÇS!gSy«QFçÍ&ªß±êÙë`;ƒ´þõ2Vð›i[À ‰:Kfl:%›Hë±äkc:kCÎÿ|1 aç=ÿùó!ˆù6IýÀ•u+lc͵»›ÎâŸÇSaCƒªe(Ì4ũ겒 yÔ1rЭ¸ÞIº8k·î¡vÍ1 ‘™ÒÂSíùM{Kq«}ðw‘5ÀÕ±öÕY÷…O{L& ‡€þàÊǧÙ•“¢úlŠ¢=NO…ãýG.„›ðk£;\ª=[×â=E.±bXK®à¾Î†’²ênwØm¸Lã$´ôèŸÇé¼³DöàˆøÙµ‘5­¦Ä{µ‘§pk’ú€+ÏVØ•]£¶æR“ž E•gGÌ ”QM/îܹ™Îý¢‹žgÅŽŒ›¨U›v–×6D=“×ÉøèØYû@ïÒÂ0Q±7ígU‘6¢îs?ÞÔË󵓄õc ¸ò h…kÜÜY]²J¼—òx*äî—(ä‘g£:ô#B:ùìâ†<úwNh:ÍŠ!]î‘«ŽŸ»%+};c#áÚÊlÈ"J$2™\>F QŽk´:½Á€ÿB—ÍæpzúlòõXOþ5¢ê8[_¿ãVÞ}IÙ1vB¸D0¿è_‚à’]®Ý=¶ÿ=ž ëÅ-ƒÑò±jdýmtÆñlæO{®ž`Å.Æt±¤ìð©KÂÈ”ÀªUŒM±4{†‘ϬJüN¹\©TywóøÄÑ BƒÁd²Xl6gè eĽ!œxÑaº£,È–À¯ú—HXdm§,Û±@q<޹0]g£ZÒ}¹AAv«Xýk#5ìÝÿj9PÛÐ|uHæÌ‰VÄQ9“Gòäü†ÿt¿P¸¥°Õ-“îþ£rw qÿQ§›0M¤i ¿}9¿•‡zÒ& ‚Uàô/ñ°\uUmÍ¥hO=í©P²µò¬Iý -"w^ª¯¦ë’`õ¯‹bZÉA[ݹ+!.´¦}ô °b¹«ùÈ郜§v …Ûʇ‚k¦X<$Q‘låˆZ=6¦Ñàn³Ãh•üâË3Ÿàsãiþ@ÿ’.­ãBõö L9b2~gZ“]°ßÒ=3›:=‘ϯ*&{Yý£+qdè¢\Ý—ø.´vÒÂfn0¬ ùà·÷Bèè¹Ð”•É‹kÛÈÁD*–c}Ô"dÓ°ýG³ Ÿf¶ÿüÀ•O>þ9[jkérÄnO…õŽºËB™mX¡whôæØè¡‡Èµå;7Ó=Cv©%"eìÒ9ú@Ôd¡5íãr:l6‹ÅD"V›V3>6ªV)•¬X‰˜Y63ÂM¦ó:Àbø½››…ƒ]a («Œ=ß|·¬×Ÿfâþ£@: ü€þ%%,Ãí-£…Ùt9bÆSa«Š»ÉÞ1ºº `Ÿ¦¸xÏQ튊z}M]}“±±ñR¹µ»[d‹åj; ]æ0XúqˆLZÓ(lq!Š^6·›bZÓ29,o¸ë#îO:L&ƒA§ÓhÆpøjV*år™T2$V3bØýÀgú…ý—üÊd@5{ :ç†ùïû•IP ü€þ%1ªáÑÊ¢<ºñ6¥×¦hroÄ}ÈìùØlUçç¯.-,.®Ô”–<©;RSÓ8QßÐØnjmm[zÅâa;î]êFóôÕˆ—“…Ö9½´f +†´xù²Ðš~f<йÈ.§ÝfµL˜Œ½Ÿ{YG$cjõˆR!ÇHÃÛ$9'znŠƒ+›?ö+“áðú—ôp™µì=6ZR\\5R°.¿TNÖ¯ “ÜϦXáµçkCkçäž×fEþ.uAAaÕhIii­¶¢âèyÝÉúºË†ÆæÖò²M눡€P1êЬgÅŽ$·Rd¡õz5Íùúús¸7J÷=º{ÄrzàM§Ñ™Í!ÄðZ„.ÜðW»áÄúHìø† ºÿ8†¿Ô¤ÓýGÒÔy‹áî·wtN‘IPü€þ¥$œV§I£™°)ƒrK_w·ÐÐÚÔØ©«¯?Ѩ9ZQqZ]ZZR­*,(Ø/ÏÏ£vȈ)Ù0{Ã~6%“{þ4¶˜Þ ¸µ3—öiÊ__pÀmZ}¸ÉÒ%rÐË×ú=Ø”¿®  `S1íô_QŠùŠC5F@±|6¶´ÒÚÓ(o{ð F@'°~ »]¤ÿh6a}4#d;÷?^ÿèoOÉpR/±ú§þ@ÿ2N³Ù8aW(Æ,bqÏéJkk·¾±¡¾e¼¦¦úÌèÒÒã#ÅÅ…ŠÕùù´e×NZ;wLîy6›é=6·ŒíE²¨>ÝÔo]ÅÐ*·Ú×=£²&øuß.ïg6mÀú¹¥¸˜v•©8ˆõóh # °|^hmm¥× â¿úàß*5c]´Ú;ðú˜›Ùj'Q¥U.+ŒÝÝ­ýXNÚµõu5ÕN¨v•ä—9Ü%qoЉµC)®,Ñ9Ñ+”ª4XhôØÞ¸·»»»³•žF¹ÔXQ[CwÒï/--ÝS\LG½E«sW毠¨®€ZB8ÈfõøýΩմœ­k—l\yˆøVuëV"Œ‰0装qåÆ’Óªº³—‡L#:þKuz¶Êzë2ÖOµ‚P,ŸÝ8´§;vD?OÖÔÔÐjZŽõsgqq1ýùòóó°þåÿ €¸À¢–ôJ'—]ìÂÁhÍ,}GÚÈlI‡[+‰0V ‹öT´Ž6u ÇmÁçˆOý]‹E0ß ü€þÿR.£I×ß~q@t`疳ĸµŽxc#~Ö5­aÌY{J\~´~@Û/ó+†®íËœÈþû}À?èð/õz†ãÃeÓ™ÚîέëóNëÖz2‹r‚ãñ&"Œ—‰¯uëêM;š%'¯(ŒÓMVÔ¯Ímþ@ÿ€©Û54+Å]JQ]ÕÞ¶ +)êÜ,} ¤| #ŒÄÔú"Ùk/Ùw¨GÞruPow¯c‘/{ !ÉN1ðúüKy8&,c=-ç¥eÛ [ˆsëÅSĺ•ÔP¡…ñl±µ>O­ØÐÜUy¬A:*Th¯,þ„NèÐ?à_úô £Rô©#âÆÍk²[j‰£õ1bÞJ ©\<éÆóg×mݵ÷Õ.u´\5ÿ À¿4ìtŒu×–ï8–KQí¤¤TYr=)Œë–PTv]ýÎýÕ’¡¶>©Áîþ@ÿ€é«Î¢ìjnP]*ݶ¡¯KßURWª‹xýÿíG$D&êØZC­*ìi9tüœJ9¤špÿpåé»^5d8wü²®p5°KßÏÞ$½Ãƒ^ÂØ üÀ•þ¥5œN¤·MwîÐþO¾…UO\JL­‰ÕÿðWø—)p]u™Ff¿|åÒimý®-kÀ?\yà_FA¡á;~üÀ•þe&úêjù:ðWø—™0ŸþàÊÿ€Ð ðüþ€àðüÿ€àøüÿÀ¿0aøã½>²ÉüÿÇ¿oþÅŒTÏ} üÿÇ¿bâG8x;ðüdÿh Íþ€€ŒäŸë'ÿÀ?@&òÏþöo¼j× Ü€ ’)¼KèþÿxÅõÏý)]ørÿþxå%  óoà óø×ü\ÿÔ/þÿ€€Œàß½eaÿÀ?@ÆÉÚ ðüþ€àðüÿ€àøüÿÀ?àøþÿÀ?ðøþ€À?ðüþ€àðüÿ€à®<ðø­ÿÀ?àøþÿÀ?ðøþ€À?ðüþ€àðüÿ€àøüÿÀ?àøþÿÀ?ðøþàÊÿ€Ð ðüþ€àðüÿ€àøüÿÀ?àøþÿÀ?ðøþ€À?ðüþ€àðüÿRœÿ¿½s‹‰£ŠÃø/­—Úˆ¤ÖÖ€–DK(Zh Û½RPl@­m1–„ª ô&´McÓ*X!jÚÔxIªòR¼ôAQ’ÆâýÂCÕÚÚmER`)JK«å²ËeþžsfÙaÙf—Ýe1óýÎü™3g÷ã›f˜t" Cat" C'ÁÞää}° :‘?äO‡B-.—ùØÈò§?¡këˆ>~vA'ò‡üéOè¼.¢³·Â.èDþ?ý á"r΄]Љü!úz5Ëßà  W? ³üÝÂ~ÿèœODäD“5uDµká@þ€þ¨·ºœÆzø? C^JNz.ä€)Á à%<ƒ—¤»tEÊêNVH6†9†U}»“R—ÕÈ¢Ûgó©äNÿ]Û¥ilæ@iZÚAe]_™Ñ¼µO”C,Ætx‰ü!“ôòW›dëéaç…GF"oõ=_Z3ö˪ß°uÖåvRz׳µÎjCÚÒÝfV}ÛLò;¼ïcMvù õä‰?^òÅ<‚W áËŸƒ)©¤JÖ:¼vÑ!tMÆÌm;äþÜÏĘ’§e¹|#¯ä‡ [§Pl$¼Dþ¿hæÏ½¥¤|x’w%¹ «}F4½ï’ÍKö Ðȱw½pkŽðjÝû¬y{€5bî^ßYÌ'ñu¥6ù{-Ik×Do ™sÎý´R|~£ƒèb,¯/™Z±Èò§¿üQÛm>#Î_7V5Óz¢][EE´ò¹¢R÷¦—nðü˜ŸÃ[ßYÌÿñj›3’Í…³y%ŽÖDÚ¤ü¥¯=bJ¯ç‡¿Ã³õÖ³MYur8w©b—¿ü`&Ï_O‚XßBԒ«Üýùfñ/6^"Èß´È_Šgá­”ÞÓ‰ãF8[ŠòH½Ï=ƒ¢=(-èwoú–çV~¼Š/|g1ŸdþVßD#&h\‘Ú:¤Z:ÉWJ™¨7ë=uïÑ»OuÙj·KÇìš8™Y¶M~â ±æÕÌvGÖ˼šûBb\Ù`˜ów9±‘ðùCþ¢š?Õ„Ò’Ïù£DÃÿ~m}Þ½¡gÄ5ù=ž±¼¸¶_õŠ#mÅîÒø».+åKßỸ´*hµ k‡èìZÏh„U.~i\:ÆšŸSÔ½™?òöLBØv©Ç.•ä`Íì߸xñs7)ßÉY’”áäUL^k÷;Û¿ËŠ„—ÈòÕüi^ÌgJ13ì7âTn?iwÐlÑ«,»Ã}æùOÞ3Jê,æÁ«mœ/Å®<>Î3ïo,½\Ý,uï¬pü+‡yv®ÒÚ5ññ7P3éõl±ØQ|®»h‹8þvµÏ =‹„—Èò7ó7ñˆ¯žòôŠóߪMâóÑ÷%Ó8eYá¾ÜiýHÜ uóàÕ’üǧ;—øõŒ_%o2©{¶…á’¿HBŽx­]~®¿hæ¨E¹¶w‰è/q(δ]Œ›B±‘ðùCþþwù£U š^gzÅß4Ô¼b“ÿ;É•%Šc·;Äò‡¼Ö±CÅ›?@®Ç¶kíòwý9 3ÛKr”‹{jˆÞ¼—Wukå][BÏ_Àb#á%ò‡üE/ª'š¨–?qÓÅ׎Uâ¡ q·óù3:_’=ÎvLôÖ)k]U†ÅÉGYÕ°Êd.î+?WN˜))Ãfsß° móàÕ²SàŠÃýÜ”wÅE{ù=£õ$±ÒjæÓñ¬TC#ëÝ,z7óGr–›¬O~Ò ¸¡òE©¦êaµ]þž¿ ÈÌtƒñ§ÒÛ½Îb)èåii›úBÏ_€b#á%ò‡üE3zG‚ðžÁKxà%<ƒ—:â#~oèø/ἢǩHñg endstream endobj 133 0 obj << /Type /XObject /Subtype /Image /Width 1280 /Height 480 /BitsPerComponent 8 /ColorSpace /DeviceGray /Length 29360 /Filter /FlateDecode >> stream xÚì} xG™vÃî&aYNBn0§cB'qð¥Ä8É’ƒ„xõÂv9âýa“üY²,)Ýò)Oɧ,ùdË–-²e[¶%ylÖÙ3ºoi4ÒHš»þªîžSsOÏLÏÌ÷>I«{¬é.u½ýöWõU½…1¢`1ÜP§ø*ÜPOø˜ÄÏê¡#ñó€z@hÐÏPŽ&0ÿòÔºï-~¦”Ô}gÑâåÅæ€ÎwvùãOþùµq‡= DÔ«L`Ž>»dY>PàKXØeÌ!Ü@˜YýXÆ= ›9ß±GÈwË?f´ßBG=æ¹a¬^¾¨Ž„ØHötÇø¹ZzÌ>ìô †™µ7û|Ož£Û‡= tÔcädsýQ Àšg“Û#ÿŠáÈù>©±|bÛBG=FM6ŸêüÀ-£îIø5Eàç[pžnÍ&û= tÔcÊÉæÔb ÀnwƒkèÏ¥‹Š0¾Ä}’ðOïHxŒ¹dûå×ëèÖf·yý»!+×Ç$tÐ?àð/Fõ/¢åÿ³ú[tó—ÿù¹õwå/r?ìì6_¨—ö}câ´¾£Hÿ€ ÒáÎ}Aث«ÈÖð†ù[“–ß}7‡ûag·¹ñ.Q™Àl_¾,£êùO>ùâÇ·|F~ïè³K–å“ú9+Ÿ‡é¿ÒØ€`4ù—§Ö}oñ3¥¶Ïøð!ዟ {ußY´xy±Ùþͳ¨ß^ºhÁ>îÃ˖,;É$¨¢jáü%?ú´õ·Ù@úüþE1勸¨¥¨Š;ìÙˆ‹áÜ–ß}±ûag·Y÷‚o7áíQœÿ mº|å:iµ|Õa­ »Ï˜ç†±zù^§ûf±ÙQt0‡pÃ÷•üøB1ízŒ®'a³ë»oî1ã¦Oѽüoá‘åÜçÂÆ? úüþÅ3ûŸšÄ‚}&÷Ù;&<ýºåïQs?ìì6U÷¸8ՃѺGLýÙcä´SçQ7üÃF²§û¸C™•xzázºó\-Ç¡‡J üœúÕC·?Ácn,âÙã܇òçŸZüF¾ïáÆ‡¥ÐüÛ*Ì‚2ßµ~FðßH’qå/~sñ²ŸŸuHÀYÏríég^­a‘Êžþä’Ü7>õ§Ÿ}õèðÏÿþYÎ*½üà_Œ¿‰½á5§áVu¯GçÍj¾;Æë;FçDˆæ>®­Ù1ªþÅ5¯þÄñø‡ÕQx³LÚÆ— úüóù¶ Y»Ûú&ÍÀ?`bhp˜æÏêC~™Å·ÌýÍèÀWþÙ'”Ã3À?`"ô/N0éœsí7ÿ€‰Ð¿8ÀŒ‚½Ñ…MSÀ?`"ô/Ö¡ïàåc“ºÛ./úýÖIÆ.NíTÜ‘vXi'=j3ð˜ý‹U˜{y¥kMÞ\Å5yÍš>Q“! oÿq`]„0HUnAWgB(­¤“ou’ϬÉ•ø/LäýÇåoÝ"ƒÿ8è_,óo”“¸¹ƒkÍWø¼ÇôÀ\»dH¿Æ ü‹V&úï?þ«ÕYþ¨°ú« øßcà_Àü›àõm$¡õ5yœ¦)¹vL†tºK†€ÿ}ìùßëìþ¨ðù›ISD98-ù»ú3ü›æG¼¨v"”Þ‹ñHn¬àm¸“!½.“!àƒþ÷vTØüÇM72ß~ôƒWžz²‡ÜÜ÷пXæß´–—ü¡äVÎÿþ™Œ÷?¢ ˜üî÷8T³¦Y¸páC·Ñß;¶âéoÿ¢Ž‰øÛýQáò7’ÖSqžÉfËè›0‡ØôøÇ;¹J:IóvæüïG|À‚@f¬óÊçdä÷Šæ•±lõâà_Ô1Ñ_ÿq»?*Lþãz: ‹a[–mþ87ü>¤þã À?¦‡oÖ^$bwN8 çKS>§€ÉùM&ŽOÿ¶“–Ð_¯x€Î þE¯þùà?n÷G…Ç\ËÁg¸ÿ¸ÿÉvLèq…ÿ8èði§UÜÕH”î_[ê£ë8 ÜP1ÎñÏ8ÞÍ~RàŸc2$^ù½úçƒÿ¸}û#,þã|?3£™°Ó?ÚãLÞ¿!ñý‹{þüC-ä¦HEhïßÏê©ÄÆG-AàÿÂñOûåó®’!ñÊ¿¨Õ?_üÇíþ¨pøkxÅSRþÆ»­úǼÊÿñ˜Ò?‰ðoœ}DƲåë²Úªu½þÂXå&N×U¨xþ5÷±m'~{Þ23DÏü‹"&úí?þKnÄßê ƒÿøâ…ÌÂ…¿go,³øß¿Ò‘¹ÿŒàïç/ÿñ¨Ö?)òoŠe<ûè‚•i¥þ³ÛõÌÊ¢dª€ý¼ÉÈñoÑ¢ïïmgíg†€ÿ=øßw³óÉnƒí#ó”½Q 3Àÿøçá¶iyz oG(cÐã&ªø 0«l˜ÿ`Ú'›,ð¿N„ß\°ï59~lR÷Ø;RrCb|øßÿ<Þ6?òe`?B) o_!A` '¹rþM“!g†€ÿ=À%fû›ûy ¸7ÝhG`N1â?ÎÍ[ÂÃÅ)óç§ëD⟉ׯþR"ju¾|o²*›SÀ̲!!~ô83üï>Fj¼û;ä&º›´ow⩾ù!\Øñ¥:Ý’2`({ë>Gí¢¯ß±|¸gšp´ÉÒÆ­Þ†QhHŒzPHu/ëuflÖ7ª¿ÏÍ©ZYŒqQ"°N óöÎr¢fÇüøÚdUŽ =†z‡öIØl²@ÿb:¾†U{þ5ÎŽÍöªõÛ"!šë[u÷×Þ߃q÷ƒÀ:Qn)O£Ï˜ü ƒ@“! à'}° ÷_qèoéŒèÊ a­oY÷ãV¹]·ëD€FèKÉDh‡Îÿo[ƒÀ¡ ã” 1Äÿ@ÿB†)þÕ©ô-­áhKÎö¨MqQß‹øª[È“:s«C)—ÓÞ^º<ëú6"´q" 3t—¥ A  ŸŽÉ¿F*øÅ;‰Ö800 LðDìðýlPu±­ sÌ×wëWø¿ñ>ÒþízX4 |›£o á†=ÉŒ|§€eÝüaM†„¯æ­6ÜšßÏ{âéÍ<a$‚ˆ½0l—-Yí©•Ü×~ÿå/ÿžhçˆÎƒ?zö™(çÆú+ÿóÍbŒ­Ö ÿí݇PjG 'àýùqÊÒãýòÿr@h¾ÌN†D=ÿl6Üßz½B'áÃHq0"4cþú£ßÐô+ØO77?µƒžàÄ«Æp3%Œõmú¿ .]¦Ó.*Ö aäKÏ¢\ Ö;é·??'ÏïæƒÀ4Á/V2d:Úùg³áÎ¥I¸.ÿ#Äàá ÐWbÂø£Ç_–±¬ìeîKÊÜ/Nõúwæ[–=4ÞGÐê<í:ÏÙºb'ýôç·ˆ@Y:'[ª„! F‡šNÆåüs¸V'7¥F"ˆÖ½%ƒfüóÅý~åhÇÅ{¹süå0?zæÉ×룘R/EtŸi®¬&’U†ÝéŸOü³ˆ€Vžâ°hM†Ø‚@æÊÊÑÍ?»k™ú!ý#‚†Q˜Ù;ÂàN*Áežª m™/Ö‚þ&ù†éM"Y…vM†Àøgº7Ë2ø•3«„Ѷdóè^VylnóÏv-ÃÛ¿áF\ÀH„`aÚªÙ·ÙWt¾¸©!ò»f<°|•)¡Û#Ϲ¨+_!Ùz¶ù‹!0#mÖ<½ë›éÿ¸]Õ=$Üá’¯ò~æ›évË7Çbð/¢ú7ñÊ`$‚(Ð £ž'ÜñÏtk%èÆît?5„§ÛñÛ!þ`=?H¯c=B9ìAÿüáŸÅŸ¿¿<‹“@™%äܘëôŠ×ÿ‰K†Duü×µì æLØa$B˜æi¨˜rË?üÑí*¡n…“E‚Ý«á¬'Ï>ú0ò­Ž®Í­ÅžôÏOþ þüaÑ$[O QÅ좗Üû˜¸3C" 5¯´Y`$BPиœôá¯?º]%d¿ë4úTX5„;Ýת躇 q3ï¢Ñµ ¡´ìIÿüçŸÎ˧cæ«Çìѹ{Ŷš·ÙpÏ[˜`Y‘F"µ02À¡ÿÅotûJàýÑgM !Ÿ]I`ä/Íò¥+1©<À:¿0Àóî BÉ-Îÿ&ÿ°c˜œßdø÷Øs‡ìg†èb¯æ‰>Ã…Õ½Ÿpï6‹пè?ܾƒ®t^Ô‰¼úóÏ f†ôŒ›b¬æ‰¾ÂÕ½?ðänÖô;X$Œc¸¾u~`‚oЕÎÏw&üù˧sÄœržú‡]0î­îÅ‚S;ØýÔп8‚à4$OF¨(,žö˧ ¢è83$˜dè_T›սXÐŽØ77:F´±YßÀ:Ÿ¡ã;FšÒÚ®f3CX¶/àW3è_4«{ÑÍ WÏý‹%æñîá­Ym™ ãuÇ*Ös¸¾Â2Òßq-‡@“! Q½oV÷¢q~ÜqõL1ÛÁ ÑÕîà_¼ iŽŽ‡÷Ò–åÓIhyë‚O†€þEü°º­Õèê™ 1>'¦Ü‰Pzoø¯nY>}}ù°ËÖIÉп¨ƒÅê>Ì+…fõLпh¿Ø›ò‰ÂÚ"R€Y˧;géüå%è_´Á«{Ñ?Ž«gŠ2ô/Š0ÎGYLjþ\‹X!f-ŸNG«œ ý‹Júkuï¼ÿ¸uaìÝÿ^ôÕ3Aÿ¢¨áÁ×úY">çE9¡ÿüsõ._Í~$C@ÿ¢ vV÷®ïŸßþã¶… ðõïúP3Ž/Û`§†€þE „ÅÞ¨ái‰û;rþ9ƒ–œ’!>.iúMp°ºwwÿüô×ÙÝôê}©'‹„ VÏý‹‹½Õ§"´×ˆ#É?wA ã”%ß’! QG«{_øç‹ÿ¸ÝM߸އš±÷¿mõLпhá?ò¥)¡­Ziþq˜µ|zÉпè“Õ½Kà?nwÓë^ðP3Nþ÷Ž UwŽDóøS`×–ÿêmۄе$øÇaÖòéþ&C@ÿ¢§"¼ÚÆ|¼…¾úÛÝtÕ=.NçÅÿÞ²<ƒ½Ã¸ûпèï¶ÑNW:”ÿ>!,Ÿþ—7?oùM“Úž™Ê(à0Ñ;t³­î½óÏÿq»›Îû»9­+ÿ{ãxwp  QÞkM±¡¥”øÇÁ²ræÖ*ë°|Ÿ“! Q—V÷žnaÇ}ZŸüÇíÛ/z8­ÿ{ç©!Ú(¬o`g‹½‘©÷ùfúê$ÿ¸¾¹óòé¾&C@ÿ¢®­îÝßB}9åCÖ†_”6õë=ûÛÝt;ÿñÙ§uëŒEè_@Xìž^òýfúê4ÿ‚@ëòé¾%C@ÿ¢.­î]‚÷Wò%y|ôîýGn‡Úÿ¸ma'ÿqxñ¿xjèŸô¡çüK„JÇ}äŸþ÷¢ð·;Þ“! ÑÓýâ³Õ½®Œò`×¶4dôÅçûì›§^ýÇýS;ØÇ©! ’‡°Ø[m B&QÏ,*ÿø в|ú´íÍÜãà`©ý‹: {™ôá„nmúÊéë¯[^Q´5ÙA³rT5õsJêƒÿ¸_À"ôOê{«#Ê’+òœs±ùÇN˧cÏÉÐ?éP°ºï÷­M©¯ zW8i÷WµU•åopPÁ”œü²j¥Jlûh·«g‚þE+ø)G7×#”­‰ŠÏZ>ÝS2ôOêðÓêÞü9c¦¿©²(7ÝAS·UÈ»Euµ×uù1 ôOâåýž·RDK™g/ŸN“!öÎ]–èŸÔ{_ü²ºŸüͤR^Q˜ã¶M,üX=ôOÚà{kßCĤ#šÊ=\Á›*Ônºgød蟴áŸÕ=üeÊ}‘U®M¼ÞU›X”6»¯«g‚þIÓ¼b&ìhŒ²¢;,ŸniKÍJ†€þI~Yݼalûf‘ú'e‹½QÃÓ«QXüÙ˧ÏJ†0&i˜èðúUúauï{ð®6±óê™:пèê{áç NDé_0{åLlž´ËÑ1Ê!­” L´—%ÁêÞ—‚¿‰`È"~›ØëÔÐ?éÂÌ7¯b0Gí_1{ùtûdãÝO˜!øcuß³9ààϧ6qê¿[ÞÐð/Ï«g‚þIü¸+9aBž>Òe±÷¿#´$Cˆþ¤tω¶—ýþ|p'wÙ&Þ]VÕ4ìw—‰‡Õ3Aÿ$ ~©…=åL‰}n_ÜñŬ£1khkÊpɆí—ÔM&Z^­îƒ þ¼º“Ûµ‰wg:·‰Ëå~¶‰§\O ý“vë£Y†ÐÚ±Ýrø'Z۬˧۞(í0ÃJjP·˜(¼œ¼[Ý;<òžÜÉÚÄõßÎÿàd03·¨¢¾ßç6±S;¸ÒfåÑoZºˆwOJ™??ôÏ3øÅÞZóJë Ù+ÇgþaWþ÷þº|z…MЙI)õlš:PûfuDð‡}p'Ÿõ…§*LªÒWöä»lûÄ"íàð)ù kv_ªÓ-)ýó-7ò }? ˜ZBrûÉ¿Ùþ÷þr`ÖòéÒªùQÒ0û|µº4øÃ>¸“[q–ÿ¸q¸ÉU›øµgH›˜ûe·›Ù«g†GŸ¶t¤®,Ƹ(ôÏ­øüh ©Ùšv9Æ?Û¿ø»± …åÓ%UóÍÇ(FMqÎ>˨gïªxÚ׫;ù¬/8û“6qEQnš¿mbÓ„½U Ó7¦Ú~9ݲw?iÐu?ú硎øI—ÔC·"D—ž"ziÕü—&-£qs<³Ïg«û€ƒ?ìƒ;ù¬/¸ö7©”òòüäO›X?f‹ÎøÔÆ÷þí‹w½Íý·}ÖÞf÷O“ Ž Áw>_ ì*Õ“(ÿ‚mùtIÕ¼¦‹m꜈_öi|õܳÅSðg4xåŸGwòY_ðè?î¦Mì6O<3¤´è_˜z|?þJ[ÿkœ¿ú-äŠ3·Úɱ’Ùð«„ÅøÅÞªSÚc Õ5D柿øØWWýr”Ù=(¡og¬S¦â”|¾ZÝóÁß~wÆì”¶Nvx˜DaššúöÞÑ)­Vo=§îäŽðÁÜ]›8‹kÏúsøiH Û¦ûzoÆÊûéÞ}¤ýÛõ€­ ½¤ñJ7Pq¼‘…ÐÖ™]"Tüó+Π˧3ÉjIÝ{fÌÚ?Þ§Gòùjußë1øÓ—òIÚ\–5c¥à¿—¨Ž®¬¾Ñ¬ì M›1•J=¡ÑLÏÐ{-ZGœË6ñ†ü²ª6GÃUƒª‹aÇÃtcŸkÄxä.º÷&yÜ­´¿ãô­;×}.öºÀ{Þèe¥óXhç+‹˜Ò*CZRVÔÇù†ãdSPÁ– ¢C$ã›ÂÁ.zÐ&äQ1:P|ütå•k7é&÷]©ìêêéé#Ã#£c*µšh#½œÁ€:¸6q†ãDºœÂ ¹Ò6È‹6†éο9c^ó+ºWºL§]Tj˹VGOü±ÍeÏ=~-[ʈý¿–“Xyhð2`uM ÛÓ!‘’V÷žƒ?z ÷£¼†–†k7XiëíÉݼÈP=¸aUFrÐ(ìæ~m羃GOœ½xÊ$¶¥h- eg ;08¶{ƒ &gïg®I —Ãhéu0â8‡©Ëjxz-þ^©úŸNw[mãâf0ŒV÷žƒ?Ó™Ý,ÙÙ«PMOk&Õ$¦1 ôõõôÐðÍhóã#¡Ü‰#÷íܺ©”T ªtT;(cƆ͹{ ‹/Ò}‹u9µ½šÜËdWÕÆ¡áÑþþ¦ªCÛmæ2 ’Bâú\â= "Œ|¡†§•qñK×ÿyÂ:WªKUa±º÷œðÒó7¸ ¡Sì49›»a%f“Q¯Ómœ¢‰ŠÑ‘á¡þ¾Þ~ŒG.œ>^|`oî)–Är•‚>Q1¼$¢WQJÖ¦­yû*èÁ„¼±Í9Îä•ÑáÀä|Ðt¥¼hÏ&ò—0™Ò`Îò¾ï4È Õð´$>þ` ûß›UÖUtzfb¿&,“><Û×÷m¥ÁßuwÚVI‡žlg;í4 Ú¨×ÎÌÐéïµN;|u`ã3‚þ¥Êx^8(¦ÉNÚºìm§éÁÐÅêMüà¢Óöq¦Ñõb¸…¹(Ö™G,¯âx:?øàJ*B{ã¤' |ú'ëË®Íó‡qÔ6&ÖYé“Õ½©Š¦òÝ#y´SíH;Û#îjóôh/ÛXs¡ƒ•Âè¾3Ã#öÊØ…ñ9~˜ÍúrzÐqêüåÚzÚV&zÛŒ_{eì””ÿ•Fhp(Æqœb’7<Í@h[¼Œ= ÿ~õ£:˵lþ^8 ÃÖ‡e0¦ßH>YÝn÷˜ö¢CM6Õ² UhÛp†Éáî¶znÚÚ¥Íë¸Än­‰ÔN¹ †çFUŸR'èçæ’²3•Wä ­ô@g³”–ÿŸÑ²f]_|¦Aø‘/ Ú¨Ž—¿9lüÓÙ®eóßðÁ‰CÛ©àq&}ðÁßn÷– PòáV¶G¤P¹úÇŽ!úÝ8èÔƒütÅÚüÜ:®ŽÄSë“ÂA¥ŠüâõƒGNœ½pUÞÞÑ+5ÿÓ¸Nƒè¹HóòŠ’By|å_”´mײùoøäÄ1mõÍìPÅhç´/V÷\ð—^åæ˜ÇÈwGs¯xþ˜ÎmœñÉüõ:Çýúw}‹"ƸÎÚúc‡ölÛ˜ŽšèA‰ œ{e©pp=Üüóá)°¦A†ã. bäF¾´ïD(E²ûþI_ÿlþ³œ8\—Gc]I¶3s_¬î½ê“,ÇÝç%øclnC^ýÇå/:ëø…Ìwùñ­•åG wmYOÇRヂþ5KPÿâ7 bæÇžŠiå}3ÿ¤¨6ÿ g'Á q–‡Ym Ó3s̺<„ýÛ/3ÜH5ׯC'èB/²ÿ<ú¿›ã¬ãïˆò÷vݸrîÄþí7IÇqžÓñ™´žV…ô>Gž×?›ÿ†“ÆL¯›øg4V},“><ØàÏÑàoŸ»RCGë§5vxïµ”¯„G±þã/68ë¸î‡“!ÿYþùøÄe„{O“::«Ä7ÿ,ײùo89q`]&ƒrë]Ç0v©àš©îƒÕýÐ=77Ò¬ð9V¡ñ§¼úߣv ֱꞸÐ?ŒÕq—™àþÞ‹ä5[h Ï­ŽCþY®eóßprâÀ͈!¥ÜrÃõ‹7}t¤÷Sïçið·×]ð§?Jçƒìlô5íëÀ?Oþãw«‚u<~wœè_Ü¥A¦8Á¯IG(WèqÄ¿_r©Ÿßñ%·úo89qàa&•[¡®Êõ„«/‚26RÁÞ­îhÏ_ºûU¯ŒEäŸËYÅè¬û¡íïy€ÛSü£R©HûO%¿×5C6j ›ƒ¤ÿ@¿w‘~6ðö*•û¾Ç}væ{Í]š¦¦&¿7×Û'är¹Ë$ôÏ0«æÑxJƒè8ÖÑ•ÎC>ÕÔAÿ<ùß í_»&bÝ‹ÑÝÿçSy4•YT3Ê]gzc+,XÝ+ÝNï3U¥zJûjI<ž½½~vðgº<@mOóÝn¾L69K,{Üg ›}¯YÓ¸ßÛO6ÿµßã©‚ÙH‚ç™ÖÙo&KDóògäÚ MÙ­ÅáÔ?þ÷ïÉœ‹8ûÝ8Ð?rª¹ê’ û\vw©cÇaB˜ô¡óØó—æ¶ç¯“¥• V1æüÊ-h—Â…Üì&›w¨·Ë;TõÞ-³ìqÿúë•ôð)Ëá{Ö¯!eLëßh*ƒ g½Mã& Â/öÖº0-äk¢ÀŸüïk^rn"¾t-.ôÔHSoËÙæò±·ù"ôFµ/‚Ê‹Õ=üír÷NÖžN;ÆN’uÖÜhݽ{§sssOôºÞäŸÈÏ÷²yû¢ãgþøâPQQ‘ß›ãÕ#eee.7RàŸr=CÕ³Þ2q’át¾}‰8š%U®×œ†ûÕ½ŽãDÿº 9ÜVï*eç‹Å©àa/“>†r=½ä‘rM9[1ã?ÿ|ñßµ«’h÷ßõ¹|d‡SÄ–‰…u¸øÅÞ*ÈZÖû ü ª<¼8Yµs3$*,ò=YÝ{ þ¨ÆoC©¥íNÁßH>B5×v øtýüwíªÄÉ7võOȃ¤”;æA¬iΨžv΋9÷´\&”ÛÆNsà_ðå*ãR!ë+Ih“ºE¾eÒǰßÁŸYEƒ6÷†Ó„ê(ùÚf“ÿ7ØWÿ]»*qã¿ëÏA´èy¥¹ÈƒÄL„_ì®t¾u&2·øpy4•™®-%n‘ïÁêÞì¥ç¯ù+mêt þ7æMf¦”kåŸþ»vUâÆ7&õÏMÄ4hqŠê4¿Ø[Ãz¢ðjAýþV?/.¥È9ã)e_V÷c»=§Ó“¯*ˆ¢ë~𗮢Û<8ÿ|ðßµo¼Oúç&2¡Œ4§â-2C âHêð/Ðòë·¹N…ØYäI*<#XÝÏžEe–§{ þÚiÓxS»SÚ[{zð°«û~ðÏÿ]»*‰]ÿ]7¥˜áó Ž/YCoÔ§A¸1í¹$€PDìVÿ‚- Ùî Â/öFg•Ö…ûÒÀ?1Ë3À[fW9ª€-òÝZÝóÁßv·íªŽè`«cÏßTý” iš'ŽüwÝ—‚σllqŒ £: 2­°¬t~QÒåŒkÿg1^žÎ[N:M³È¬î» ®ƒ¿ ÷M©ÒLYWåüiËÓF ÑÆ›¡-sùïz*…*vÄšé‰>×(~±·Säo:º‹Œé€a)ÏtÕ~^œc÷™E~ä9êÎêÞKð§£î¨éû›ƒ¿æuå«*bbeF& JÁåA2׉Ú4¿Ø[i8„°ÿ’ÈkæÅêã—nª qÁ¿úw^¸çîß½‰òÉ…Ž«WI'ìÖêÞsðgVÕÑ¡2æÇào ®™ú!ÆÈº´ÒàŸ—RÌ”¡Yykd ªÒ fnË5òÚݲΓáÜÁCä~•QvŸ*ÈØ|¨»ã;2¥5˜c”5ß}aSj¼.û¥×k"QsÛ..’[ïp‡%b‘ïÖêž þ¶¹›¹¡ë<”\¥ 2§µ'ểä4Uþ¦f#ÿ˜ÅÜnÊüù©þ•¢{ˬûRyùÛݾ9 ÙAM"є­¹…eÍÂbtT ‡È[Æ-dbêyÐUošmI‹|‹Õý”?ÁQM:n[}Ú×Ü0µ–HbŽ-„Qÿ¾÷™‡ÿÈÝÐ[i§êm”ÂE$šÒ Z¥e¥óË¡¹Àd#§n)'Gì”ËDnŒVÕßz£êÔ‘›ìžÚh•¿cŠe÷bFú¶ÂS;òT\klgÙAr2úÜt-% 7S¨´‰±çÁÜ–7{^œ½/BXóñ®­îÇ=jRÕ=©ÇÛ탿Þèêut@còFþ½]1Ѱ”›\z Ñ¿™[Ja·“tÍʃ˜UŠ(Iƒð#_èJçe!ºBÅ1çeßp{'LzBzµ²þÊ™Òy—Î]ÔZ°†ŽaÛ,ì96Ü?U}æBmC;—8䦬(»z‰Ž“s›EÐBŸkÜG|úáƒ7Ü{J σ0/n›ÜN`"c‘ïÚꞺ¹þô=ì(©âj¹ÃZ;u´å5ѦrûâN.1ýó­Ðí}¤ýÛõ@`¥àó Ù¬}Xe™o)í4¿ØÛ"8…!y4Ú\Ûëð€o·Á¤Ÿ!±ˆ¢ö̱<ÙÚôZ9ædZ¢ÁoEè¯ÿõ„Þù&óÔÂÅ ÿX]Ÿ¼ps€K#ª-Z8©“ ÿ~ôãî—Þk|MåäçÅ­¯´“›E¾2\©`a€„C Ã[ð§j̽  ÅÖÚ=LæÚ}“™(íbCW¯îäRÓ?ßø7Bý6ñ›ÅZh)fçALÃÑá"€"3¹¡(¥q 9‡K?Vb>L´P31Ð}aû†ôÌõtǽdó¿_ '¼=uÓ¾ ýK´_ÿÕ7žk¢#b»[,2‰Æ-Z8mˆ$ÿ–ñœrü¬Tžu…`hGÓ0[ä»¶ºçƒ?w é{+2PæÍ.îގеšCãao–zr'—šþyå_§‚´þã?éné2vQi२Ÿ•‰‚4Ȱu¥óPŒƒÐtœ«%Í®“'z‚Ž-u=õ/?¸-­]Mᇨ íÝûh5zóD[Æ(mÃÖ…%­tPŨµk‹(£ª«w€ÓB)Ìü›uL?~I:ýAZÞ"0õˆÍlÙΡ;äËÝ»´º÷ü5Ó¼GòYÖ®tšQ:S}g$ºå<¹“KMÿ¼ò¯öGO/xæ}¾Á„æÏû(˜Rðy\»·˜äÓ Üô&òH¬ Að7ØžÖ7æÝ“Ú‰†Ê O|ƒÜéUMô~ÿ’>WPš¥—0¹Zif¬ß²³ øDKWŶõó«ÈÃF´pŒj¡Ñzþ=}êÀƒ¸éOÒÑ?:/n+wŸòm©ðYä»´º÷üõpãwÖ_±ëù3UgîœÈH¯2FBÿ<¹“cÞXÒ¿dùçw)fçA¤á{k%ÏCZø'Ÿêh¥sð XM(øwÛ}|¡ëÐŽ¬ã¿'×øíeÓX³ÆHcÝc¹Ù&ts–n&¬Ÿ±Vþ¹ÒB±øw顯•áOJJúGÐÆõÕ 6‹À0Yä[¬îí_¶ãû<XGSs¨ eØVEZ:Ý£®-ü­*¯îäRÓ¿àøç)fçA¬ié¥A´ ËJç-â¿é‡Ø ´ë/µURþ±·Ï[üêc'Ö"tæ*¹Ü^.ÛRoÕ¿6ä€)º9N7íVþñÕ3‰±zØÆÚøg áæÅeW[Å.¾«{µïÁ©‹¾µ(«²Ë?L– DhKg¤ªÁ“;¹Ôô/ü¬Û甑nÄÀõû.¡XHÍpNªh]«1<üÓ wŸ9œ{­‚6H7´ƒsÔ?­uoõM3%¤‚¸iS±®¤aÂ[®­°ö݇Ü"ß2éCãsð7®ÁØ|eo“-x0]É@{Ç×]6Eª<º“K·¾ÃWŠúµNyKD1.©gÊÄE¦4:#ú©ÍØHûÙ“K'ÂÍ?ÝP{mßµÜuèÚIR€+´Õ[YJCŒí›Ê®«»ý“±¬ñû™y,«Åº«5 m|MMǾþÑyqk,Ck‘ïÂêž þ¶ºOû^½ÈÎÐY¿¶¯ŒsýݱOóÁô[ò »mV¶4ˆ„ß2÷YV:/ûm?Ý9¦ÙB^ìWãŸ^×_{¶¨óm ÓÅ`¯ ›«gPʺCû·älÌÚÕÝaÄJA ·²¬÷rCC6m;L”1ô¦B6óóâ,½¿¡´ÈŸmuï-øk/NÎhtô2Q”:V€¶vâXÝ¥ò z»@^hYMKæsã°®¦¡ùejaÙê 9c©%ðgê‡Û'äE;׳túC å×x„®x2{oioÓÁÂÝ›×&£=¬ [º sYÖ( ÿ~buê¯ÿ‰DŸsÛN~^\“ 3!³ÈŸmuÏ}nƒ¿k´ûx¯ý²Àt~pÁØÕ¨]`,Ìõ4ÿ/…¡’æArlë¨I. ¿‘I‚"ùšébkËét’Ii%|Tìµ UéÒx¢sJºŒsë!ò–j©:z¦zrÆ„;÷m]GSÈù,k…Õ¯¿”Ó V7È^z­Z σkóâd‹ÀÐXäϲºWç{žíË–ÒºØVoKû*®ß$Ÿ‰ê¶ÃZßAó/˜R8çAÌ#’JƒPö&QƒuâÚ¦™GÙÖh;B™ i2Ë0bh¬(Ù¥¢úà²é¡ƒk;òS6íl¬ëìÄF±ôFþî‹÷Üýâ{5ÒxÜR•·\_)|â§‚-V÷¶Ižƒ?lh õ“ZfKûª¡ôñ½Ûºq\@ü ®ÎyM‡tÒ 3ôßB8–Þ+êyuÝ쵄¸2ÙˆÄfUÈõ'vm@“4Q3F;†ˆl£ÞC»Tjâ£ÿÏ o˜Q.¤=´}¢ú"˜„Ó š} þȯ ­Ch³ÜÚX2²iF*š¾á¨ïð”BȃXǺû¥’ÑÓNžö%‹kiT´¥Ë2Ù¨±"7båõsGŒ´¯IK'Çjè˜íq&ÞžÁ"0¥HÉÄ´È7ö8YÝ{ëù£™Ãš”£Öà¯]v¹¡R Ž0±QŠÎÍŽykd*²Ï<×IG ‹½t¸’_sìrô1Î8Öi>wdwŽ–ß þiÞ^´d5ÿˆû¿AZý6‹@Ñ,ò-V÷“¾IÚá˜ìaÌ_;M¾uÓüM¦fLïÁñƒÑ¿YyI¤AÌÜp:(优gUbL™¤guE1óÌc7.G„¿xÇl~ÿßé^ +ш!²Ÿgo‘İg«û¦,ÏÁßÍ]é &˜ P­†|#K‰ã LÌ”b”˃Y>k¤;r+•rË“Ðy%b6©I#gf|;BÙ#À¿@0§ÓâÄØJ4¢Pƒ·ÜTÅy ˆa‘/XÝ+„`’¶:’Ëônƒ¿ k‰³¶±³mÙ¨æZòñiW`b¨Nyˆ§A8¾Lx¾WÄnH®e¯9îÛ$'è3±¥QhìµÐa0N;þb\ÿœò aMƒLÑ Õ¦!´C”‹™Yö\Fªü<5þÅpy„yqÛä-ò§lV÷^‚?Œ' ¨Þ•ñïä¡=iª|´'ÖøúgŸÆ [Ó ªPÿ1Übo äÚÙ¢Øhଟّ‡dCÀ?è0Gýó0ÄÏ‹[_9ã‹E¾Õ=üe» þ Ô|²1eßzO.RãÜ‘FïÿBÄ:‡ø«¿Ö@BÁ3ñÝô•ÿBƺöl»üqQÜ̉ާ1Þ"pí±&ž¶7÷z›ðA¿PÄróFzFŠçEüŸac]Ä’QNŠræQËJç5AFÏôc\uŠ´}ó&€>aaƒNRåÞ"0ýP=]T•îoRºþêèë©'iÏŸæ(Ú;ž&k±“,ÿÂÇ:=Ÿ¡Í[D—*n±·cäÔgƒ:ZÁ¶—^eÙ ¬\{@½î¸øçø‘§=’)O( ½ÂÍ‹KÙwyÇàOsÁ’µRbÓ^Ÿ›Ý1Ϥhæ_8Y'äA¦íÒ AÛs‹½U$“G0¹Z þê¶¢ -ÝÚËä\'¾âÿ¢Û„˜Ö?ŒMõÛ÷Áù_Aä/ù(þÒ7V€Ð!5DœïX.–2~jäXg¶åAÄJƒp‹½]!‘åž`^³zrîÅ}FKÛ¾z€>cH«2R¿aÜÜr>ƉNžB›nšøÿcÛyþu' ÿ||©N·¤,‚¬³åALƒb¤A¸ÅÞäm .h¤ÀÉçF¶’¶ïn ðÏw<Õa”TyBˆÁ#)ÜuæúÈË\O^ì§&èÂH´ÃFüIƒ¿¸(\le1ÆE‰e];]l!­ÒHß—A§A¸ÅÞÖ·Òù¹¾’¦²¾vò㈠øçþ…k®ŠýÃx\ë6øc/lk¡óÛÌwnMß‹Š&0@ ük]n¹Øý¤a×ý`dY§¯Hò †Þ`Ó t(MË„2 ûY¥Oá;ªÓ‘ 0­øçßyâ¥ýë$øk.@è·>Iø}h¸¤Á¿ï³\ìVÆÚÛ"ͺAK$Ø4µ¡l''K|pý$9ׇqýF¥¶ð z]öðÏ?$ØmãTÿ4Jö25;XÛeÂÆËµ7È ù H„òÇÍ–‹ÝBôoæÖˆ³Î– * ¢¦ß¤ãó¯ZÚ Ùz[ÂP7,Cèbÿ4ðÏOŒÚmãSÿtlëAê¾O…±r ʘØU2‰RáßËû¬»´»p=2‘ʃXÓ =~O·àVà:JNSð{›µÙëšÙa¢ÉtXE<ð.25î­2§CÔö»ŽP£„Œ+&<1CGGŸ…ÉnRzß1 /fs oc|h¥$ÞºÖiûvÿ‚ì… ,Õ?Dø¸ù‘œš©ê¤+†äå­ }J{/˜ðÀfêð|^ƒãߪ&¡ÛCóç}$™^—Á<>H„[ìMžŽÐ¶ÀŒ´LÓäÿ3tÈóò§NæÌÀ¿ˆéŸÑª NÙ¬V8eäݧoKM ýlû‰–R =¯ c¶ÃÒnÑÅ¿ˆöñyõõœå<¿ÎŒ¯ä¦^ú ëÚØÀ¿éN…O‘«§TšpCÉø:TiþùÅ_iü‹ÞªDV¬ò×Á)£¥E•=ýC¼#Yk$ø»±°äj¸˜†®_ͬ…u}£ŒîŸ¤NSh憎iºØ[sio ¤»ôë½7!Y?6•“¶ogð/¨7oñŸað*s£ž:LõÐ|ªuÍ NYOÊHŦ¯43aCü±'i¢z ëè¿uÚ) ˆ2þE< Ø&äA4þ¤Aèboí;Hô¦ ä’3|´©Â¸ÁÀVÝfþETÿ°1Ü‚C›ˆ†èŽ—Ÿ9_US×DÞQ3VÉóA•]=ý#‚†øö™:؆\:gò¤Au`·:í€Å@ÿiúpyÍ~¤A4–•Ι«AW·d/oib;h¸Ð{B½Öÿ‚Äž ¿?ÃëÊà(!8­¤ÍÉëÛ• øXyEUµ—²ÀYµ³•QÙÕ+ˆ¡>b8ZA—ˆËé0W’ °¡æ4}£‘R&äA¦T ßÒ Zú{ÅÔ¢9€‹éºIèX’ŒvõÒ–¶<]ê¨þEÓ™í›è‘ô`Bпõô`J8Èœ¡K“®ÍÞ’»§ èøù‡ö†ÁBÓ2ò1cÃ1µM‰"†¤í`®$Á_©¾u´g€žE'ÿ$Q 3upAëë-iÖcÄÐ!¬t~e´êŸke$b8 ˆa cõèBÖ„4Ú=ÚÆ P¾*-¯ä,Jù'‘(`’[Nuï°inäËEºÒ¹ÿÜ%ß0u–Rÿ…üIò?OÚ¾ÛÇÁC¶?dåѵ7Ô^:s¼ˆ³môo+×rˆM·óû[‡HÅ6—”>¹¶®y[ÐÔÒ±âJݽ„Æ)­b8¡d››»È7:3L-Í›û¡éµü“L+Hȃ¨-iwãZ¸ÅÞjÒÊõ»ÓάR’ïÐ ÃitÆp×zÒö=ªþ‡‡éææÁžFżçÛÈ49ÒÃÞ”WÕrý&¸•‰P.=Äp é&á`ã vî£ˆç® ‹%ðžC®”ÑN ÝÍÆ£Áߥu{ÙQŒ›7«òQò‰вèåŸtzø<ȶN/i!a¥ól¿ÇÙÓUGz̸<0t¶ôM¦NÿÄ9Ïâàϳúnä÷+Í85Ö§ìäú5 wo£ˆ»éA· ¹D 5 –0‘Ôú¸|í¦-y{ ‹NQelkVµt©ŒD ûÈkØ`/†$øk¡kmÉGèÀÈžP²h柔zÁø¢iŠs<òHá®­0?oi3Ó޾ᒠ(sr×ihúÆÿ¸Rt'Ý“%¡°|äP“±XÒ›¹.¼dª ý„ª=Üç›ôxl+iûvÒ-ÏÕ¥Ož‘PÉÔ-uÕçO–^"b8¬¡–E—Àâ4Fø'”¢æ¹yG¤skø<ȺsŽi:6º: ¡<¿†ìM*Ùn3—ÌçšU½¤í‹Ê¿Ó?CSVn(+6E?}{¯Ý¡Û±¢¢¢2|›ª²”k5hc#°'Æôãò¯¯P"dâ×ûRg—¥ÿÈË7Ç—!ã7ã“éÜYó…ä*etÝHNÿtˆA::úù[áD6Yš+: OìéÖËî]%¡yŒ|äH›% BGa5m@h­?+ÅÑŽØ–Ázn¼ –ÎUWNù"Å?ý¦¥‹žáöRæÏOõ¬}NŠú—¯êĤþ…=õæÚrš±È¹*L×T°l뢈=~4£i‹ùæÎl‡ xã´í›ò1þ™ßø‘`4{|©N·¤Ì®®äŒ¼Î$—ÛošùÏÙ7œ>sÚ«ªª®†oSQÑ Ä‰Yýø+éA™t2Ô_íò lû.¼µúkÐàï"Q¼³Bo_SF•2å,LVÿŽ>ma×ÊbŒ‹½•çôÏ\€šþ…¯ÕË)•Ì-âó YÂ`@:í²ÖŸ`£‡mÙOô,x–Èg@ë¬ÿÄÂËé–½ûIßý ×ò˜ >Ÿ¨€ºþ…¯%_ZqC27‰ÏƒäÑþJ[ÿkïÒ½[誹·:”‡q³’WoÒÝY¨¯˜á#ÊŠ¡| ÆÖܹF2ÎÚ4’íÏJçÜG$Ô;ƒ²nòŸ4¤‘¶o7týE:þëÂXy?Ý»´»ð±<ßÚüó£«$”éÙÆ{þú½™GùþÂil<Á§³MÓ¤í›Ùœ‹4ÿžkÄxä.º÷f1ƇVú\žò¯ë:Tð/|¥¸"¡9H¦ªt„6ø8ðŠ[D¤îP;kõwÑì&mß­£@¹òïŠO¿UüæŒyͯè^é2vQ©ïå1Hkt* *ùçW)J¾¸¢^*7k¼ Ã7£]>ø;•ŽŽYå²w#JV¶Â ýò/Á·_Ë~òÉÿà»ÑüyùU::ìFAñϯRèe÷%IÆÞÛ×Ù½tÈ35i³ s6l@(¹ø*þÕ=ýw¢ôf{?C—”:e1Á?Ïß]sçQ4]¬'¢­¨¤›…Æ’ñøeEòZB:þ-Û?Äû׿ò\Y² jø'ÿ¼•¢cÕçdÑb–¢ëé$E-¡¹’“‚GÌDiûÖÃø±òg^M˜ÊS2w¸WÿDãŸ÷R\^üTt¼sU n¹šJ„Ö[R½æ-D Ëk¡äßrnJM]¸Ê£Ëº+ijø'ÿ|(…¹ Þ¹tuK‚)lÊ-¶,W}E‘œ]¡åßöÕ8lí_#«?‹` ;ðOþùT ]Ög“$¾Ø ·º¥¼í4cK¦×p„´}k»€i¡åŸX£ùý8CsâCy0–ø'ÿ|üM„Hx{Cõ‡9–r¤Û.0ØGWöž…š 8ÌñÅ©Ç^„*þÍ?ŸKÑüúò%ûÎí'òW¿ ¡›; âš"ÿp }¼ñ¯Òn¾ò˜òîcп ùçG)*<+Õw®AÉžN§F1ÖIUÉÉW¿ÄeËoïx4½?®øÇãRØËCaÀ‹ô/8þùS sÁ^m“Ü}œè"AÞ òœRi©sœnwILå¯Þ»FQ“ô™ySñÆ¿„”§Œa@ÿ‚䟥Þà#iúb|ÕnÈ3Æ£õ¤í»[Þ’ô¡‡ȸ>Ò™‚WïLª4Ç ÿ"ÿ°¢ö¹¯%‰oý Kþà ‰ >˜TÒA/lÞeòŒq[frGUx—¸4—'Þ‘dgÛƒ¾òµ”qÁ?îÍ»j]„ÊS>_Bn½Iò¯ÿ7Ï?ú]~ˆÓª[”BBƒøÕ-Y¶ÃˆU¶Îð+$ÜÖÄǸì‘'eÎsókVvEž&öùÇõßÙò\^¼àHJ\êŸ/üÛÁÌåFdø¼ê–w G4b1biûÊÂ4>§çƒ{Vø<ÙcTöÄçÖHc±×ߪ”ÈóÆ0ñ©¾ñ¯çºu^uË\)N=þì…Ü9ó0íù›Àx?J©°%z²Z;Ÿ{SyâI~zâ4¬¹{l"öøg”LyÀ&õÏ7þ »\uKÉ2]=}ýÃ$›˜ÔLku“1©àó‰l¸o·º%Ë* X×kÇ~ÒöEau<€¾°@À c9i—cŒ?è“Nyh“”%¾ôÏ;ÿÎõbó_~A÷œWÝbY†AGEL!ì² ""½}Cãªñ :‚Í`t++tfXí•Í#´ˆ-¬rÊ1"#mßÌpôÕ$ÍYu-Ð/É?¸¦5¦ø÷,Çi‰”§ü±g/¶Ä“þyçß±×/ù?UÜqÕ-“UÿDXX«þÙ°œL’p«“ŠôV©i ¨7#z“îFá[\MÏWÖ'_s˜ù©ÙÐ:uè§Ã«eßø* n%ÍÆ5÷,Èþ-âx •òPc%¨Küè_ü3Zõ¯ƒ;`­&ëÒþ`–Lvu“@ñ‹_ÜA¥gF«7†ºýiì CžIKw“}îaJA>9r®MºCŒ<®±|ÕœÄCŒðï¯Û%¥ä]ˆî^Æ0q£AðO¯°è_9° ['iñÚ8(£K™Ü9ïÉK–(öÒÅèØ¸zrŠŠâÝ2Ñ {-!”Ùh÷¹<½óbrUˆëK[°â5Ý"L%[üÀê1Á?ýKÒÒ?ÞÊŒý ŽŒA¯žšÔaèëéêT²ä!×YUÎAÝÊd[Æý‰mneÒ¨èèê¡=Š#cD5Ó3:½Éÿ0Ê<¦ ]§S‰üåÛ½àÇiÛ7Äs@ÛÖܽ¢@Ôíæ/ÈŽ~þEÒÿÅ-j扉 ý Š5LCS»²×Q<ˆ4™g¦5jÕèðÐ(î!7â ŒŽ2IZÿ~õ!š´(”=$€Eêåq“Ž.pDd¯¡´j»Ï ¤í»=¤ ÞØ/§]5çÕC”ó/K¬ýËŒaâDÿ‚áŸ1tµ\ÄyÂQFÖ¦œ¹ÜSŹª+òM|®rbÆ`¢")ãØèð`? I0¦µ Ñ2Å÷ïüs«7™ôM*i Ø?@Dפž Ãq¬"·À«ÐcÍZ»!Ïwmì¼ˆŽ„RD8c¿Í(Ï[qÿjyTóïÜv¹Ôôëe÷¬™‰yý †3‚þeÒ-B¶pÁQ‰î¥emÜÊÉdQiÙéŠKU×i¤¨ëìêïRŽ“¯ôžY>wU©^rf«°õ:ɤÃ2‰õ½Ü¨n_{·\BÚ¾!Pâlì'>š?øü#h(zù'Ýò€1L<è_0ÐdJŠ òóöÓ yœ•à”p°–LÛÌØË¤£fîÌÏþÕî>qNOb9UÍõ --íäÑž¶jYŸý³Lθ•I5ü]Ⱥ8êÔm8@Ú¾ëûBvÆeóçe…Ü»ÀT™tÇ«ú8ä_¨ËÓšø90†ýóµÚ™qU?—ãÔU]¬8]VZÄy«h6d¥Q•Ûȵ…É[O&í4öbè  SÙÙÛ·ïÙs HC.Ò{òlŅʪ˵ýä\+£“Lš:iðW@¤Ùñu>žKÚ¾;C6§Ì­±ŸøPç­¸3©ôOtT-z Œa@ÿD(…~f‚K2è›nȯTUTp´šÌÝ‘³)+mâäH¼÷éð+µpà ™4ÓHÓC(-sÝFÙ–=cD [-=Y^Q9@Úëšš9ýãeòÊzú}‡D"‹´}¯…h ƒc?ñщæ>‚â!/4¼*Q¯ÞaìQ¶75È«Ï$Ý“e˜$íê¹›sò¸žAòrèJ8ȶ×LN@­šIÂ<]ÝKÎÈØ2HÛ¹tÈ3*rÿÆSJm ÍmñÅØ/íàO¯(ÐÅÿÂPžitWÒ0è è_øJQóÜ׿¡›U¤]­T4q^ SgH»ú`þîÃô`D¼Íô`ÔþÀ¢™2zpÖyÈ3Öw^@{CQzŸýB𬬸#©2Žø–ò ƒ1 è_xKQþõ×}nW«†ú¹†ß mW—•áÄ0›´« ¶qº°ísâ7º•´}+C±¼PzpqØ“vèF_zõÇ ÿÂTž¦W¿Æ0 a,…Avïªà³¦™)>½ÁV;ÆIYD«CÐ ÀØ/ás8–Pgâëy(ÿÆó×0ô/l¥˜üàÎ5¡ÉÍš+». 4ñe*Pc?ñ†%ÔãLÿ°)ï¾Äпð•¢;éAYÒ³ÚBÒö=!zª4(c¿P´ÃC»„:wσ†¼Áô/Œ¥¨NxDôyè†Í¤í{Z䓊`ì‚vp(—PgâðyÑ úç¢ÏCo"m_T!nÓ°qõ‰’\¨<„K¨3qù£kîü`ô/|¥¸ºtþ± OÒ¶^}ð‚h*Jc?ñÑŸ%îêL(…ç¡üÑårP£øÔ?³ŠQ›U*ºéï4÷»ßtvš”J¥ÛÒÔÔÔÔêasC^g”˹Muú½ÿuÞvÈm®V«ªªÜo°6è1Ê‘6ö AðÌê‘àß÷Y.{+ivjo“Äó@a:AâQÿ"UŠð@•†±_þ,º„º>Jj^þ¸ÙrÙ[ˆþÍÜêP Â_®Ð9µfó.rõ,!ïÊ„ƒ’1ö.¡šyŸõ²÷‘öo×’‰”ßpGL,”©o/ßòÇ÷ÏDAR‡‰óRT-z:L+Rc¿ZÃh õÔ<³pñbf1·Øô›ÅZ)¡ç¡jÑg¢¹!Ð}>ᅳðЭ_Xþ³ÿùÓÂÛ_Δzc'Þõ› ¾ðj[ȯ¢–}ã+’3öŸþþ/¡ÎD”p¥ËtÚE¥’zJ¾¸¢>új~¬¦­N\ðÉ9 ×ÈÊY¡—|²|õîI”õ€þI¹º¬»’†Bz…›R5ö Ðû¹„zDj~U“PÈí¡ùó>’Øó 'tŒ–êžaËekÜ>gÁ«I¨ ÆÅ\&V–8gnR‰T@ÿFÖ܃BVA7ö~-¡ÎÀó0 £¡¤£H¤æuï¾Ûæ® ºçyP˜±­øô T#ÅôCsâC¡qâˆc¿P´ƒ}]BôÏZBEÇ ƒS¶²%­˜Ëé^^9ës!5åkÜ(ëý“h)Î<ùŒèNQcì'>|]BôÏ Ÿx¦RJ÷…vðÝû{¡ƒ/ ,u_^âs“ & ¾¥X êÄÑ.æ ûÑÃQdì'>º|YBôÏÝ»³àó‰0†!º—µfVb#`Цð'|Pc‚ú–^)¦‘ˆ‰(4öÞ—Pýs j 3©‹{Olþw‘¦ðgeñUßšßÏ{âéÍ|\‡\cxõg‘¾öÑjì‚çÈËê ЛtwV˜ûŽuœî-žëSb#ˆ¶QAÒ}¤)<?õý­÷gðÐ+Ü`i¸¹FSâ— ‚íyŽjc?ñáq uÐ?h|9LÆ0úÞšÀ7ð¹¦ðšrC|Ôw.í ëà¼6¤â:ä§_x!˜€'úýBÐv»„:蟔ý[×Cy~1A5…ïJ”)㥾;ï¦[鸹~1ÑóLý Œà wK¨ƒþyƒAv諭螘‰À1Pôi «â ¾Í?ýþë›×R`–ä1eì'>\.¡úçÔF´Îä&6+{•6…õ±]߆·Ã…×’rr jIîg"$öŒýBѶ,¡.¹—°þ‰²ru˜cš4…?µ5Æn}O¼ò¾ý#1×!׸ùêWüèyŽQc¿´ƒ–Pýó W–GšÂc1Yß]ËbÌå%ç:äå={Ñ·ßäŒý4 n¾Áa uÐ?_Q2w…_/X§ÄF´tJ³²ÄϦ°.Öê»æ•6Ëå$è:ä:¨Ë»?чÙkt¸ËE ð¶%ÔAÿ|oÁúf #™ÄFÀ0TrMᚘªïy øËIÐuÈ54^‡àOÄ…±_æ~ uÐ??@}ŠÜöJK2±0† ’º/1o4>ê[º¬ëyëÞMî_¡ò¤;¾Wb3{øÏ ~Á…O‘ÔA5…禰6öë[ʬ“kÞ×/ܼgþß ×ÿ/#1£;Fê·ìôã ùΖhJlÞµu èŸw”>²üÚ¬[ÿë³/—ÀHçX«yÉë6m½ÿ‡y빇oýüó?ûp×…Þ˜÷Ùÿó‡>÷³}Ã1\ßg]›UéðAù«w¬f1ô/˜üß?m;­ˆ+SÝæõßùô‚ßŸÖÆh}Kžut÷µå Þý@ÿáµ¼]ô¦0èŸè±xQc¿ë@GÐ?@ø#ßò5Ü(뎵úŽ ÖÕ>ÿµ0öýDü‚rb¹èƒþùâ¯ýÓªKÀ@Ð?€$šÂ¦X©ïhaF:ƒþ¤ ï¢ßõ ¬ýƒòü„° œôúLŒC.ú•¦¨®o`è”ýŽè­o`è”8ú ’îdA9Ð?Ô<01ÐÀ/(§¾úÖþAyAƒsÑU¦ˆ²úÖþAy¢`Пå@ÿPóÀăࢯ’úÖþAy¢7…½ºèƒþ æ‰± aA¹QÐ?è01Ž›Â:Ð?è01a¨ùÀ]Sô5LŒy $=|o¢¬ôzLŒÓ¦°ó‚r ¨y`bü4…]ôAÿPóÀÄxÂdIÒçïI”õ€þ æ‰qÚþÌÜÕå3 ¨y`b<6…+ÿß³Ÿb´À:Ô<01.¡‚ø5LþA)PóÀDà°Ã5¯ùý¼'žÞÌ€H™??˜üƒRâ¥æ¿õþ zå#º{|©N·¤ ˜üƒRâ¤æs§É¦ãAº»²ã¢D`"ðJˆ§šï¼›nïïÁ¸ûA`"ðJˆ£š7ÿôCúãVÆÚÛ€‰À?( ~jÞðöo¸³o!ú7s«Cy,€ª‰mÞIªžm aÄÄ+àÓ¿÷‘öo×ÀDà”/5ßµì Æ\þ÷ÍbŒ­&ÿBù[·XvaÔ r5_óJ›åÂ¥ËtÚE¥ÀDà_Èñ«ÕY®£®¬ùy ø £ùó>‚71ð/ôÐÙ®5kÔ•Žyçÿ%Ëò¡6€P@¬Ö·åZ³F]i™”ÿ~7éçüÁØ­sæ>ºð á_ö=SÓÚõüýĆþyu53ÊÖUã÷Õ‰/?·àK ÊøR⿽ýûuüqx jÏ-´SÀ?Ð?€$õ/ÐQW3Ç ¶¬ýÛßøƒÞ»>ÁÌy`)0rv,—Ç[å —Ÿ(È—â.~wÅó _Íýã'¿´èõÍæDÇÙþþ…úZbº2uwð{#k’~øÝßå:¿þÌŠ7W½/hfMs÷XTÖŒjl€ßéÙ,ChÍ.þàôs??çÓ³+^Lü^RÐ}°üL͵Ë×5m‹*ùÝŸ{ú•·þpâ?Ð?€ô/Ä£®tõ—ËìÜÏ(|å9ÌüAßoÖ|´n[™Tî½~¬ƒ•×Ôñm\óˤï'óÇæ|ŒùÌœ_ðÕ¿HzoÍGU¬ecã~6†»®Ýþ·þ`ßK«~—’WzúˆŒþ…ÔÕŒ&®Gk~ó³wùùgøò‚ç-ÈÊòª:VŠkל+?\ 4Rë˜øíÏ ÔsšûØ‚5üAó_Ñ&Ù¾J‹2šCu+úËv¦¿ûc!š,~û¶”T‚ÞX0Í|;ñ§IæŒWälߘ Dô/xü2!IHø·/QWc=-5§/Ñ×Ê ¿>÷[üAÓ?Lzï/yüÁ³i'ùŸy²,´›?¨Y¼à‘¹÷½ÉT-X¶âõÄ¡‘º» ´üR«Tjÿúº?ýüµg³ùƒŠ Î7Ç*ÿ|ƒ‘)-Øž“ÅL>ýøÜ{çÜ!|'ñ¿^#T£±žRƒx€þÅäS :´K†þ,¨Â¥9Ì'îœûcþ }¸æÿ& sW.=8ç™[¾#v‰«’V¯ÙÎŒVÖ4²}QF…£¿^¹ô«Ÿ^+DÇgÍqWóÊ£+.ؼ!¡‚çϽëvæsB€ÿƒ¤ß®A]ŒcÓ * ±Ôë25̲üžbÍŸQ†ìˆÐ¨îÓÄ,/²ŸŸ÷ßßWÈôôêã^ÿÜ÷ªLï–¥´æ¿…î…‡çÜÆÜ>_x‘&½÷'´^h˜Æ 7 Q¨ñ cŸÐ¸ïþ¸ë‘¡«Àúç jÿsB–üáš_ÿAh;Ìù»¿›sÿ2!€\ó!’í(Žò€þ‰ mÿ(Æ"ÃýüÞÿôåÅoü² ô/€ÊXo— èOï%ýDȃµ0·ÍyøËÂè­áÒe» .‹Aÿ¾blã¦ìS%¤c¼ážÿÁ8ãÃøÂºâ_l²õÂáMüþžyõ­?fõ‚þ‡é1ek£ k~›ôƒù7þ áö»æÎ_ð–ð/ëe‡Ë¯ÛAÿâSjŒÛ·Á;ùâGgæ}ŒËÿýÆÊ³Ö_!°3¿9ˆñ?¸ãª=ŠP”£÷Ê‘íÿûŸJþà?Wý.5ï˜&ªk^båQ³ 5W„{ýë¤Ä×Wü„?jÎsç¾Î(””ô»5BÖZUp¢üLM#<# 1#‘•ÎÝg1®x^î'Þ&{oí&Ô?Þîí«ú®AŒ|Ÿ¨ãÿ{œlªO †¨Œ•;Óßùñ·1DÝVRÕaŒ¶š&NŒ°¬0ýil—L–†vðlâ‹+ž[ðCþ †ùÄœ9Çò/‰II¿æÏ”–—ßüÿí tEÇ{ãÅê";Àº*‹Hx.òB¸$æ$%"˜§°€7\®•Õ J6Ê|hP<—;re‚†Sá0 †œ&ÜÉÌ|ûUw'™!&$“Igþ¿÷¨©žêž_ýë_UÝ==ªº\öÒ ü¯©RBtñÛìW#x5»ÎAûFÅeÅÝùw7ŒGy¥ò?¢Yv8âÀ[tVÌêÓᜲ±rýÞ_¯Ãÿœ³´6¦g+Ù«ClìRõ¾Ö½~HHålòÈ]’›N7XÙ8ª×‡Gª7è^ZnàE·:­0–Àÿ :a&Êݼ›èøßÙðâïÖíãÁ:ã¿I }Ñ•?4)¦g<Ï _8Â!³Ü¡ÿµ7Âü;·l¡~ÏdŸõ…𿦢>£Qýž|þfƒaEì&uΡ×?¢^¨9¤»O’Z=­l$‡ ÒëG«_ؼ»Ê`8¤ŽÜF£fî}…ÿ9•üï÷ð€M´ëþA<‡Î#Ê^¹Ÿ­åTƒãkØ 'µçéàœ‰)Dç÷à¬Õõ‰; »•©-oAИdUoËKØf0¬ŒSg“‘‘£ôú©ÊÆa®¥$«µ`ÙêÍGàP `÷^¢ô ï°JZû% œEtásvŸŠgWm×^¿ÿ Ñüw.9r¯¸ >õÁ$™Ñš'ê)ÅÌùQãG…NS6~ö¨˜¦®ÀË‹ÑÞÍ_uEx6—=uÑÉG|‰Nþ‹(çc^x–^i²ß¬7¼{‰È§Å¢EåY\¨å«>cÞísjzmIšF;Cþï ± Õ/Ä|ßâž¶î^Ó• [÷ÌÌwUçiNþWvôgqÏðR÷áù¿wo.ZÏçµuö¸˜ýùãIW‰:¶c;ütU© ´|¡äɉ{-I®ýí’ëRK»;>ªÖjºw#º&µáý:ð6–¨$j.Ϩ–oày×Á$a ZøjfYîÙÊÇ¿ìëÑþAõ‘!GÞŒYòõÆãð?MPž|„(oö»<ÍëÜ›(«ûH¢«óVsó¦åSs "ÛD4sT‘{7NVÅ›šmË›¥ô[L¼ì˜´5¦î¸V)ìuåë7ñ`µà}6ƈql¯}ƒYŽºvœ´éÉ>ü<[dd[ä{_±&ãw‹ÿÌù&-¸”oO3l®²±Å+dø¸)kUÇ,h–Σ-ÿ3Ÿå¡©`n4Ïë<½ˆ.uy†U÷îç¬ÄÓ¹ÍûœNî1îæá3“ÙcÏãcýÛ„±\ÉàÁkÇvÇØÏX±oNc;|zÑ÷î,[·'xœî"~dç5.?¬S¼6ŽH<ÅÇ6™Ç{'|»b±úUéU¸é:vQ6Ò7ïIJ5ššA{Ku8Ub=&Ÿ%2%&U%?rã%ìªL6mdG2T%±_X'e Y'¥Q³«’7y¨Œœ\™ŒåÅE±¾2)èÃCj~Ç~¼ùÖGü'#—ÄrŠ{UɳA<µðã°˜öfÀÿ´†‰W'¦£<”Ö±²çñ|+ÿÅHä¼ú]|ðQ¢qçJÈ.ÏžS°l%÷„ƒâ)_N[Ù˜Œ©IêÓ˜~ èÞQ7AÙØ=mÎâëNk²½ %Û³wÝêT‰õyÜÿ¼ª’!Ü–!C+“aÜn%úª¤ÚÒDbmx³míp™Y~-N©*óÏ)lVaû¾ã>âÇåòÐé¼yªþ×\0§erwIØÎ=ïîyã¹/…ðòB‡®D™­8¹èÆ-ÿäÍã]Š ?pJâÃÌ|cÓ‰…³¦Œ [¦l|ѫ߰1Õ_|(06õö6K¶'RLž)Œ[Ëk’.½‰²_úð"ü¯y“Ç“ÀÒÄDnùµkxë­÷ØõÜüÝy]ñ;wNt}‰²z=ËŽ2šKG¾-ýÅûå-øŠÉÀ«Úâ„}ü)'²ÄØ 6©ÌKܹñë%»”¥”Zµïª~íïôƉg/—iiý ´ÆÕ/yæ|ìO¾l‡Ó¸gT”Ãÿ\tiÌå0ñ¤js«y„4.ˆ?ØÍsGý$¢ó!cÙ"»¥ê¼ˆR¤nl›î¼yÎë9¶Ògx—K‘3Å<·»»VØæVžhþÄZž*Ûæígšy™'Ô+>ß öroóecó”YMãþ{¨®Yž`bý.ü„h×½zöümð?p{ŠT_+Iü…76ÇåÇ~#ž˜¸ˆSü4ÕyývG_^w§‰_ì9«ëÌêÒõ›Ù;ƒ^»Læ_]([.>`Ñõm?©Zž¡^Ü9´xæÀñF˜Gt&j)Ñçg>;ÿ «0ã5a›âtåîýìu¶Í¼O?ã¹cÔD9‘3x(Îë¯ál–¼‰NI]XŠ:øhÌ•ñ¢ÄW>$ZóD Ëoãoð?àLÛ„ÿgPúk*ÑÎa‹áí ÕA¨€ÿèõð?ý¡>þ ?(Àÿô%ø€þ DÿДàúƒü@P"€ÿèJð?ýA‰þ ?(ÀÿZ^ƒJ”дð?TE§E-á¨(z‡¼ïá±þÕÁÿ\°¢ñeeþÛÐiáPüÏõ*:<Žh“þÕÁÿ\¯¢fû :-üªƒÿ¹^Eï+#*mN ÿƒêà®WÑ{Y‰%÷ÙÔ¸Pp1ýUó¯D²ÚPp9Ââˆ6 GT\-e¥¾[ÕdG—ùˆ€êp<~‚ˆ˜!–Ž%gb°çóYœ‘‚7ÎNïÒ³Ïr‹\\ãyæFçÚ‹¦vê$5Ñ(OìÕëKå½ÂI¾þ“ ålù²ß¾¢T§5á5eñ9 –¿IA¹¹œ$ åñHTÛ/^½?°X±—ß |Ê;™”RæüniŒO¯ÞÓý9·ïYV‰Œ\™ø§90£„rCå¯1Õ|ž¹«ZF†™\‹94‡ÓÌê8Q¤\ÉHº“(NyÝR4d‡|LÄ¿-–¯Šœå¹Ñ)USGQCªÓˆð´%>gë¯Æ1’ò¯úEª~“ÊFÇÔ8b«oõßÀ…×ìb2-«üû—ä$Aä^\ËÉWÅœdÈOñ­ùÞÎ(>t‰èè`y[—It¥µÈ}×ÇÔˆ5uD5¤:O[âs¶þêÒ¶”öx#.=P™;@cˆ¢&Ë%rj¹8n¢ºkÞŸ‹« ÿ!‘Ö|ž¹C«zÀÛÃt+‘“m¢«AÒˆÞK^ðë»EŒ‚ßùø~cºÏúúõ³4T«*qªM‚vDQH0·ƒüÎcgˆÎxŠÜ^µ×ÔAÔê4"gëÏî¶½ù{þYU*Ï„£ÇËÛæ õäi[åu¦zR8+p=‘|%®^Ï3¯{UÉrá‡7¼j 8Y¾ÝϺôÉ´z¶ª8OB™ÙÆ©–S0vFÑ œÞh›Gd”Gã~ÉDWÚ6VMD ©N#ÂÓ–øœ­¿z*‘†mµ)-í;3ŸÊ/äÿÈy²Ì‰Pb×1S~M M©Ü¹^Ï3¯{U[&J~¸ÖÐù§R–çvëÒoyt3'GgÜi«¾=¢˜Ê^šj§ÚNAÛÅôˆAÊÜ"d9ѧE..¬ÄõZ=õgwMD ©N#ÂÓ–øœ­¿J¬îm¢ âÞ›lñneN¾=è† ûânÝ”Ü6(I.SÞ-‹öéá1ò0ç¶óó¿&¿¹S™:Sï  õÒM=žg^÷ªòLxæ ŸgDlVË7½/.!‰žçpïßÓ'žK'鴀 ƒžò üÇ®;¾W>£kO¿˜ ë8Õv –]Qìëãûa©Ršób@ÀÈ9ûI¯^ã ë©?;kêˆ jHušž¶Äç\ýÚ.ADÌK„ ˆˆbÙLÙ(.DDÄ ±œÀÿ‹‡ð endstream endobj 142 0 obj << /Length 3177 /Filter /FlateDecode >> stream xÚ•ZÛŽÜ6}ÏWÌÛª·¢û%ˆ;ñ"@žÉbÇšnN·Öj©!J™™ìÏoª¢F=CÙ—Y¤x)Vž*õ››o¾}W]Õa]$ÅÕÍÝU^„E^•I¦Yvu³¿úœ›Ñì7Û¤Š‚i§mOçÎHy4»áзS;ô¯HRÇAÓ»îGí3l’*ø?f<šF›÷æŒB`ú½Ý|ºùÇUtµã°Îs™xè7Û”ÆÛ›©éÚ?L!’áÏ$°óí&N›-M:í0þQ:üåQ«OM–Gye×Xc¥¡ô©õó8l}ëU#æoºÍ6+sÖ?±ExŽù„ß[ÙÕ( X+÷l ¥¥Åáf[uðkÏ/yØ™³l][¯:xª<Žx TŠj’Fæmó0[yUƒw táHp5ýN§!=sË–†¹ßò"§c×Ûøè¿Ûl˨b•fEAKœYÍ([ZÈá(•½9ŒÆÈ¬’õ ëÕüdÆSÛ·–¶‘RÇ»a”¯…Ý0Òêõ€ú}Û´+%6FF233Ú§Öó2ßÉLG6ñ/¥i@v>6»©ÝáÜ!Ø ¬Ò3mIÜ"M364i²íýØN“é]wÍ„nº$ ëXf»ùñÝ&Žãà{Xk » }¤ùå*²´`EÃnèmK›hn»Gí:ŒFú˜ß£¸Øµ†ípÙD ò©õbâH'N¢õÄäÊY–¸sŸŽÒÔF²:x‰:;ÚEQK•¡oâ·j4c{Ò•B±IÓñع›,*d¼´Œ¤ î¥FÛ˜¤“Oc7bà­Œ±"ÃüÁ·Šÿ¦’ yÀ3 Ô|ŒÙÏgi¡Cv Gí z$õi r;êÏ‚à4ØI$6Ccè!ûXv 3jÕh쉔ø@å¶í›ñQ:Øöϯp,}fÅX˜•ç®9“驆¦„=Ÿ»N>9v3}Ÿ°Äëž'‡,Æ’½¤y¥Þ–“ÒÈAà¤t°TâÂØ\ÑÎ ÈuiôlÎ玌經Þ<Ä Ï»¹ë¤D‡BÍŒ¢À”þà72ç ;R[’•¼Ó$«ô:"ÁÁôäD¼=ÈiXËÈ€¶‹KI^¾o¦Æ7±Æy7Í#ß/Ôo¶¼ï½Ôx;ô<Kœ²HD7T{ž;Z‘ÔŸõ}qų# nqFwlžM7ó¨Smz)?Gˆ4ξÇWÔ –ú¶ú¾"«µ-ÙÜ\_5¿¤,Éʰë^*zJeæ£cµSÝ¥¬Rùöêuh¼w‡ èA/ÚùØòÁ¾µÍÉk–¸u¨,‘=Ð)’yµÆ¾Æ•#— ·5t«ïHõ#^tænÿE3îª=]ʧå™ìŸ¿^¿ÿ·¸ª*K&bE}û.­¯âŒ¸T‘€^Ñ»iÖ™^Ñ.ã$Þmê,˜a:4€ûM _ù,c¬ 4‡UâTÏôƒ^Ö5×9¶†Ã4d†âÔhØ’ÿcv“HTQêiVŠwóHV>Ê@æÁφºa\,EÑ/#/°ÝJ1¦Toí8¹¼D[+C)"Å+ õM‹Þ»[5-š¾À$½<§#¦Céܸ Vnµ(üx}}#¥¯ èñ·?Mœz6ÚÇŸ~þp}ŸÜL1£¯â‰?Hu O:éýd‹kíÖe%øùo ÑP¼Ò̉H¿á OŽotV˜èTpReàà!"ôž0°Q,‡øà]ÆE%…I8JRë½Oâ5E 6¹ÂOi'¾Ïì¿eƆÙËó9s³¯á;­*1‹ª\ùªÈ[ÇoaG«èÉH9ET’oUY0¸wz;5Äu_ùf›HcpÀ¸•Xm$d§§ÞGla£%E½,½?¶;°–£t³óá@.¨#‰»ñØ“oîcÃÌ´ìpâóMhggA?g$2!IÜEîz,,ÆcƲ—òÉÕ^£N\]y&Õ©±;¢wÅ'' ¬¼,þZ:¿.•Í“ Á¾OFŠWÈXˆ©4™¡BK…dQ¢a JUÂ+!›Ðú9¢ØK•aÞR/õÒƒ_5,”U×L—ÉÉ@à1C”_r*©®ã¥Ük¬¸ÎKPIÎîF€‘9 ˽ô{4‡ÖNâJi P¬v¢Wi@Qål‘¯¥x;OÒÆ,‘ ,Fj«õPm8Ù±ùø~7ÊÌPV'ˆ-!ÅÀ/K¹pβÁ!!}"œàSòØŸY¥gÉ~j2hãl—*%œ7Kå~ƒ ™‰Ó޳R[îšÝBZHÊaR¤ñ&NŠ4̪«¬ÊÃ8OŸ’ Y^Þâ)è‚炜 wÔd[šêòú0CëÌù´Ú1Fô+ŸÝ‡£çÄÇ»¬4ðr’ óÑ(+WŒB‰Ô8w{¿}Á á¶…h—3ïüÏ4‡îùs–­éE6ô*²_Ð’2TQN’m˜ª£ª8ˆ¢žÑÞjÀÈR9æ’öÉ«bªšÕ+®WYXå1-BBÜ [Rj»7/‰íÖõ¾X0¹ýpB¸EŒó‚¦AÆOÏoÌ.ª•€qƒ•gÓ//fµì&ι Õ«6—ó€'>¢ 5U‰`t†@•X^ƒüsôÃ$/?ù!Ä!›?ßt(¦Wº™ÖIª!-õžDAr‚hb%É/p¾¢è8^KZ…Q\ºcñy˜»VÑ'Æ[e¬Hà°/‡'Ì-ëøitêš9I…Q¹¬"F¶M’2¤ì+ù*Ï”iædyÿdžÀ`ÅÈ¡\ÕèíV“k$YbWTØŸçûIBz`‡I#‡Ï5Ýœ•J«üšTF´Àg,ÿ"ï4ÇCÖEjHZ$¿˜؇nÝÐ0¥B+-GT°Älæ>à¥É3E4Ï×1 .ƒEH$K“I¨^"T’G¢5OÊ3—Ê» Ïk·Écd•~¹çÅá_œa•†y™ºc|‰õ g…‚ïàÛ ß®ŽÕ'Mò éè—$™+Ë$hs\t¦nFmSsg±× ëL¹Z–®Gr¹vÔþJ®]²„¹vß™¾‡ÉU—F]­M¸ª_" ˜*'ôZAŸ51‘»iÜÌÆö¼¤é›îÑÂhÕühò<„X§L?¼M~x¥Ý­ˆZÍ¡€nŽ¡‡Çy`’®Ù±Ñíqî+r™ *ìÓŒ8øÜKÔЙýÁˆˆÓ(ЙKœ"R"]zÓ ýàÜðtn;3~1ùS‡U¡ï~¿C’K¡/jO¤M¼iŸ,LˆÌjÚ‡=f<ÍLŽ. U¾rPXlAáEBOß# 3ÌÚY/„íÝYãP¯•^B¿£Q‰{²köV€2ü™M¡Â7˜ÎéZBv«M²z—0þ,s6OÉá­ÚawÆ]]Î[wüIÁ}J Š–['¹m»…¸£…ýø8„$ M÷Yªû%\A'§°Û}‘Ã$|êjƽ?ò²Ê#o烆®œ™aŠºÄÀ -îp\úObÎ%à%y¨qž`iÛ"‚÷ÚîO.H<ù 7Ù0P`ÂÂqI¥ "²à½È×¹~Ñ,,5ö¦Š?ÖP­qðÅ}Köì'ÀÊÃ$ÖÏÊßãîJªÔ}Þ©dZÌü¡nÒÏÈ‚¢Ó½p4ôÓîìE^ˆ=8H»Ó,Ê’lôæÐWÙʨ þÕ5{‚)† Î¥Ž„÷šŒànŠ.eð¶kûÆß¹Ô¬õ+Éoºå «•ÌÍ ¹iÿÇOý¬Å$ƒÆa7#]ÑL3Ì›Ñýý‹úVÌô‘Áûîqv$`a·=»f”5²uŸ±éµ7þ±ÄufÛ6úêz’O„x¿õÊTF»øº||sýÛ§Ësw¸' !Z——|=Ç„y¤_~"¥7™æ! 9hT´|Ý"™bÃÀÿH€àþ¨ï«úÌ迦N ÞøìÇaÛ< ­å„¥’‹W9:΃ï˜@2gˆë0Î3$äSâ¬jL)ÔoÞÞ|ó?HÌÍ[ endstream endobj 145 0 obj << /Length 3442 /Filter /FlateDecode >> stream xÚµYKsÛF¾çWè´V™æ—o­H²%G«‡³Uq9"ƒkXVTµ¿}û1AJv{!™Æ`¦_Ý8½ÿéøg• í+É£û§£0ò£TÅ2„!}t¿8úÍ»5OÆšrnêÉï÷NŽR?d„òÁÑT ?‘,ùÛÉD&ÞLˆß'S‘¦w ÿ^6™†¡÷‡1ß'S­Rï¤h-_eå‚/nð¹ ¾ãOUà›ŽD˜øAI? ¿ák 5ÍM…/‚Þ¾›[Âû4 ÉI/þd‡‰w×X“­órÉoklVÖ‹vnlÍOm¶P,+›7«u>çØNì› „žgM^•,X=ñ| ‹fºÉj·T‘×ÍÔí0ˆ}ª™ á§aěܨj2…#‚6kÚR —6[×°]­µwY²¢u:д_D1hœÖMGÞìžÇó]žß\|æ›ÏU»…7f/D~ˆn•wü~:eU´á­Ñb†‡uäæ7ÙƒKí…iú‰Àç ¶÷µ“œ”Ï.#ílj†³Ã»eèÜãt–*p šMnƒšÒ;m×8ðØ‚qD8瀩U™ üÀ³ wüL^SÂ^¢8ònÏäì=OŸðߺ²†— ¯sƒ Ó5tž•%ï@xK—YSYDûZF¾ ”¯Uà]‘®›†½I¦^U²T Á¤´³¿ÓÁEñ –t™­Ù1UóRY¹l¾Ã„µ@6~©³v£_ƒ0¸úl~WâÐÌR`üî›Yâcbªñ™÷qðšèwlTˆUÕ.ôƒ0Þ7ÜÝÚMKáš"³mg%/z×dó—‡2wñRç jüe’hÏ9õÃíÕ{§Ø`¸Ó@ùîÝzÕ4›÷ÇÇuë?¾,V¾”½º=ƒ¢e,Ýž£nÏ÷"èœmVd-Z'ˆ¼S›=Zö-¸s±÷1ûFÈóÈãçüw¿ªÖµ!‹ï÷²5áŒî¹~¥¶Ì؃óe[u/Ûdè%߬³fŽ+"!4EêÆÂ˜{¦%\ÀƒéÔE´ë?Ö,[0(<ÍüØXÄ‘ª$èPá[Ð ˆÞ.È8á~¤·à]¨PÀ©PyÍÊð€ÍЇò²!°eF×9\âaÀ{ à“â“òê—õ†6Pçóü²’§n@ ó|S0r!‚òÆw4ÐGĆãgÞÁÇo<ñt¬9ê ¥šü»Ù>&G"ð+ÁÙ"ïÑ ¥V¯2Ô#X¨ ƒÎ=¥ìPû!eæAŠy2tr³g@l¡w¥esç+ch$dà§Ju;û5ð˜ t¤vÞ´–á·"I­f!V ^Ü|•7¬«€{–%(1â…Ísƒ¦Ç{Û;NçŽ(ôcãž®)QÒØ÷¬h9q(XÅÌ«÷¢YëÈjÏè7+@~ 4ü±Î »ß¡¦„÷+bLVcP5øRFˆ’!ÑøeÉ‹Ü5>\Um^»…îX᜞$z ž•˼4ÆRèâ)gN6›"7 ·0ªhnhEH\f“ÙfmJ\¸¡Ó»l€œ|gV­7-åBô· O±µàb°…ÞÇ‚´SZ».f…"*öÑ0bkð- ©¤u,pÚ(î‘â~Çlj&LhÆý¼D±W•ùÑLŸ(´L‰WôÙl$¼ànjk}°<¤“ ÐØé—I¢À€E¶Ü²‹>I%)0«}v1;¿M#<®HO€ËS˜Þüΰ2öÛ,–‘ûÔß(;½ãÉ“raÍ3_;ùóªX<2Ö[ރ쌩vW­³úO¾Íæß|æ€w«Ê6¦nXrÀªf©m$¾çÓÞ¯Le_Ü$¬ýêCd‘[‚õ;w" µ«FwtA6nTáË-s¼†ýÈEŒšŒ×ÿ * à¡à¿»¨+ä’˜…髈Ü"êó4˜ êÝ<=»põB$½O}ã\Ò6` ß¹\«•¸h—€Àaàý³eý†iÚá)-Œ¼Œ*åòå ¥ˆFÁ0%™¦"Ë À-á ¾™CµæëÆ#5y .YðæVYM|Ân…-Å!—#?!D^³qê|¹)(|!Á•Åï“È“}ãèô/T¯‘Þæ¨Ž¯ ü6û…áK)‰nÞ3™Ëx¯ß9ß=A¥U¼°À“­Ø[M‡bœQàâêjŽé}¹þ~˜~¸e|ŽÎñ•~Q|_û•]y)ÐØ­Ïw(„~˜œ²².½EƗռŠwÊÊ®ÍxdéÀ—Pá¹·\–Í–Z9¸d¢;¡í©xdË éd¯/ïyÄôœA•uÚ4‹_r˜–qÚ‰´ mñƒh±ˆ…ònÛš½òÜFRª¡âﳺLÝ¥±8’»æŠðÈs^,ÜRo˜U%‚T~næ+^­É¢GIô ÄR?U,÷o} ü`;jëù1ðbبûëò„‚È ¥Ü¬U³.F*&`TRîL[CbTÉç°Bã=…Š¡B¹^]n°¸yÒ&>q&ñBCå»ä‘ÆfŒ!à»Þ (òÁê{z\‚‹µ¤ÈeU- z‘Çy]·¦>:;¾òÓD Ï/b<Ü…N¡ó3¥AÑ€˜ï¼0%â³Þ`¾ £Hp‰š”ÈÆ,øWãz+øa(Ì“;áÅÍ/w€°—¶ÿb‘[43OBýY.2» ÅÕ›þJ_D;0Rƒ¢žÍ£ŸY`Àß  Ü;× ¤¯uºK× ÀGƒ$ˆU$ãc§íççg"ÄàB>|[–nð†xY?#a ï[M'SÈgPg tãû­€ ‰ÓƒJ?To¸Äô¾áÎg3¬%–º³™{Šã.Î??tзÞä…±K- 3ïi‘ÙE/nïîR°0¼Ó?¾JSñ+  i—˜ ´ ¼s ¤O¼Õªx‡PG΢=@Ç?YìÂ`k-/i6ð ›ã™{ÕðÝmVSáÝ"SpK}ò×TP³(îî¤Þ 0$n(?íªbí¤³~ÂLߤ`YÝpÓÀû•]ŽÇ1éÝÓqWX kŒÚ4ö>!×0T-—æ&OL¤¤T×ôº*غ›ÆÆ#Žîô(i âÿÙºooK ·ïÁBc),Œ!.ôÿ¥« ê7í‰~•i¼%='„¬'û™ ˜<Á T‡=5×@s¿ð_GÍ—<Ä6vOÎá˜9Þ÷Ì¢–ƒ ¼2­uúÃÛ|]Ù®ùlÖd0W´‘u{¹øäEO×­³rJ.[Y÷jÎî`qHðÿ5Ï£ò‘+zKÏëASÐõ5†ážæ‰ï)R<нÃ&°sJÞýðµ™)“¡½sSलÂþ2Nò(GJìDOIo2ëúÞ:ž@=%¸ºô@L>`ül§¥Póà?º9 •ƒaŠAÐqZ§½bi©ÄÉF’°f½¥q»RSËT‚½’=Á}§ï—Ÿœ–ÇZ(•>"ª«äJD "ÍèkÂÛ†F8VÓ÷‘a«$íŒô±ª ® ¼Æk¦eT„Jï¬ëØ8?VÙ®ÅÍTî+÷p“=fº°nën¶æîø(l¨7Õ“Õ»ê©yÎl_ø ×dÜmΉ®k Ñ®Ô*°Øéè$8鈇˜âÒ¡Ã.7]Wá¡ÛöÛ„"H  r6iò—Í’‹‡”xqªBW`*ìûøüáÌ6·pRÇåù,PŽbsLYó·|ž ˆSžT![Ñß” )¨ÿRñ5y1Æ5\¡¥kp›9Ùµp+û‚NÂÝ 4¦ßiß.µÝ·ª+£=£m'C_G{eÊÉb‘×U9ý•º6uaœÛ_UårÝ5žnÚÇ"ÇN×˾³Ïe9wÔÓŠëêj×'Nìáî„©U Ôuè;5ç =ØéTúq¤½C…‡«žúâwËÎe¸…£wÊ,E]‘?‰ã½ý”Y¡)F£ˆ‡­Ü§ïÚ8ã}šØO¶5ëÙ°ån[®²o¹†û-W×›kVYsÐÕÇôå¨Pìn›Aãn$ËHûQ$öln6hOÖÐ9û¸ØNº¯ÁÀ³ä~åŠ.Üî³YGd:ž2€Wø Øä­Á*ÔÕP݇X§Ô ¦ƒ.D»šÇr' Æß¥ºÛN '~øy·Ä68· ˆ&s¯¦^w’Ve>ÇŽJYÃÆ¬ð;HóîMâx{òùkå¿ýBü$ºófVßIî(¶#sã:Üìo¡ø+äB]FºTÀWX—xÕë2 ’.“^—ÊÑüß×%ŽåN†uéHoèt©:†[]Òp¯Ë>Ü/T|Ï•ÃÝ ‡h~æƒ~ÏP>á{U„Í’]E_Ïg™mV„˜#b‚Uûôµ”f ÝÞÝmÚE>Ên¡ÆND2òˆ§^µØšÊ[ˆ˜Ëe­ü uTô¥ö§³ûŸþÀ›— endstream endobj 149 0 obj << /Length 3442 /Filter /FlateDecode >> stream xÚ­ZmoÛ8þÞ_a܇;XÓâ‹Þ ,mšl³—vs±{]`·([±u‘%Ÿ$§I÷Ïß3Ê/ŠÝë‹ ERÔóÌÌ3C¿ž¾_ăD$¡ Ó»AŠ0уHB3˜Î¿y¿ý£úš˜OÑŒ¤òÞdhxmVGÚO< f¥ŽŒo¼WÜ5«Vë"k³2kîi—YUg+~¸«ºW‹ sЖ¾—‹ì¶J/m\G9ß¾Ë ž’òCuÇël±)R·`ö0T±—•Cym#†Ÿ¦?/L²·?úÂWŸwvYB–U:¢‰ƒ‘‘¾Ð¾Œ¤Ið”6¯J,ÄN 4fÃ@zØâÒ¶t©d?¶–‰26Ý·~ÀËZ{Rú¿û¯ðŸ|©ÃðøvÈx2IŒ`Q¤Q"ÁŸDDRwZØÜûi!ˆ´wFß]B€:Çy™(ò0\d_òÙWè"Ž|ï¦;…^ö¸®¡ ˆÙŒo‡#Rµ)çÙœG›u:Ëx•u]­y¼I ·Ò‡›«—î(ý½íéH ?»ý-Ûvýr<þ’ßçb™6÷YQˆª^ŒyCZi¡£Ã£Í!Á£X/×oó¶È~tÞö5ËùÙŠø™¤#ÁþZó|þ£”& žŸ;NUHµð¯@¶„ª#Øn˜œÚÚ¨[â@^ÚaC[ÌnEZÏ–ùCfwˆç±òeäÇø—¨@†ãíÔþiô÷lOÇwß ù;Ö9¨X £“•ïGeZ+!±»ç8KŽãL„3<Ôh$G{F B] %Éž=ŽB ”?Ž6eÞ¶YÓ¾Ä'¾G´NèQgÃMvÔgMu‘’eþÍM¸þerù+7kúKRàã9Bý4Œµç8¡Qá,BuVgõJ‰È„‡ª—éì>]dÊ[sߨÊ0"Xyk»IÛìvÊORÈcÑ"Ñú¹F’­F´Mgùÿ½¢ýM?@'Ê(ß»JWäàní!Ïá ¼)5>m¾JÛ †1ùâ9ÄØ£Ó¦ äÏèo»$wk½yJŽÀïw©ÍÖ¡Òœù Ïh­e^.¸g–º!Ç Ñä¸mý&5îÒ¦ý oÔÐözg~Bs*>¦z™"]ÝÎS>i€Æ)ÀíÜꪬæ¬24G´?¯ä¾{€|æü9!Rœ­û"õ½Bç÷bÑÛç¡»¡ŠÇÆ®ÿDGß°öbûºgíWéÆ÷mlŒ÷¯¼ ­iC ÛÔùý0€þêœÂ{¨½÷C {EVi¤÷%o—<¹M &¶]§e“SDlH£h+y̓³ÊB‘ϸn:bC,Vl+ž6y¨Wy™7m>ã®tÓV8†Ô=ÙXŒ7Ò5^_ùÌñ`…!åK'Ó¾X„ísˆBÓPå${ÈJ«4<\–ñU™nüiµ¶ë7ùfÅ]Lj Ð+ÂÔ ¸Æ†›2–È8¢¯j߻ǻ ÂB ÇTÃ0Ÿø™ø³JŒ7=´Ð]–UaA¼x:vR]j/tqðÄùI-õ€ƒ—¤d£O)90b·Ô3ïô¸hÝé-ëQé@Ä¡ééQëDIJLß_ÿšXz£ ÆwPAZdeʇò¦ÐV„UÆI›Ý¥eE#` ¤È´(ª¶ÍËn†µmzïuê¦ýº/²)!&+ž’,/Χ/þó‚bŽ?`Î1h€) DDƒÙêÅoŸüÁƒ ƒB'ñà‹º ˆ‰ÁƒÉ‹¾xÝO×ð hÅ.`!»Ã+–©YV5Ñl’ÙS?²¨ª†ç^5DÉ1ª‡<ûâ¶TB~{vŠ–”=Íd GvÅh4Õ*ãD8µ³²:︇õ0˜ü" 5»Œ§c>[ǽor×ggDz(DÓ…4&‰h\cƒémá>zÆgHÌò"«¿ @…Ï¿Áõl&ŠÍ|.Šv#šl|Ä ¨CÁYÔƒ™¥¬3Þ’3äKÖR˸cC—3Þ/îÐJîÿ©®6ëcf®|…8¾õYöC#)`u14hXÜ‹TpÛ}†>!/ÓÎùAú>’ÓQïn²@hübc•O?qä!ö¿vn2P"HzNþ$Úú“ÜÆ"Ž.1 ›Ní2.“~6sùÉz°f9œ§á7·4“/›fãfGÇbR Ì.nlé &ç–“ìhí^†Nƒ*@ e~7çŠàÈØCó%säw`¤où1­[ä#ß €ãëp»ÜÜ pöñ¢ªÖªãQË}"e£°CÈ}fc|µ_:9³G[¿AsaÃOÙÅ![‚i+·?ÎÌȬþÇvÀ2U,{Ûð3¢­Ïwh‚¾²NÕ4°œ>©æþ!#tØÏ9¬I®‘½Ó2pœT¼è)ü‚œÕð‡Ÿ(ìÀts!GÞk%ÐÑU–QÊÇySÑì'¾È³‚¨–ë’ô_¥uí¦¼K­7´î)ñ%Eeb…<~“5Õ¦¶•<]Îë´æ@Ú¢^ª}¸¹´Õ#îù)ƒXùìdZ5yrøñ(g𽫇%Ì\Ì8/yÉD’PÁüýÖÄ‘óÓ=UõŽür7 zy>Å{$ì½DF€Jía@…!f ¾ ‡ Ìûž»­ª¢yÖÞÙ4iÙ®Šq}7#=û2–ЪˆÂôÝx‡ˆHiß!b«v!;µó4~&7Yä”Ó#4ëxŸôî©‘ Ê–ïíS)Ûì±åÉÓa /ƒ$ꎔN=×uE™‹¢l¾ .e÷í” vzEÇÔéÂä²ßÁ5¥dߴȃO\My‘­¸7Õ¦D¶w< ÆÏ¡C¾z:ötÈk[ªiqCOôtˆêv¸9 0óàyEÁÞùhB°*hHÕß šØ€ E}7biëôK—nΖ\« ’ÃZ­LlÕÌVÕ¡£‘Uª}Wy¯ÈÈCßy[W'PqRA+íª5˜uP­Á`ìƒuå4ë-©€0Wîó§jfG°àŽî;«cíü.ý^²®bθg~“I[¨`{D6ßgJŒ9k¾^o¸é® Œw^üÛ^#Ðp•ƒ«Vå˜,B™bÌ×iÍÙ¥rä–ÊU}$/ #á'ûÅ$ •ÛúFUl,!†ÖWk*ª”‹K“÷å½&³LÉÉrI„¢ñÂ28bFdAYýCÇT|.}¨™Äñ·xôdòÊÐÊ«Êò@þ” ø"EÑõƦEÆp4±$ÖúÁ®ô‘Ú²ŒŠœ~¹°‰0Ú¯½E ÆOŽ,»³ÉduĘ4øj°‡€‘Vro§ðÖª7rªVàÓ…MŸDÁçÝVÕ½Xñ€h^ÖyÚq$PgcË«{‡wW#÷¤Lil_;š_&ˆU&ì— ǶúrÙ±­ÄØû›j³(,ŒœÿL–¹¥^ª»QBŸu mµ^òãǼýºH­yûßF‰EðÃ\<þf=à;vÚQ|OQêTâ ©äéäb+Å) àÿuÔÏ.”1ÈYâ>nè(êJÚKÜnÿCñdËJ4ˆÙabû+K1r>Q[úA˜À «úžg[Ý ÃY1ZÍ&· ’áSßÎÎñÄÕ jíªAüÂmgŒ-³šëš6*5÷Od!Ê÷~ªŠ¹ó:õÂõݤó¯ù½8Y„ÿîóoNdw3’&m Åç}Ÿþ\ÛžºùŒŸÓÄý»õo>?’Ò6Ѥ éÙëz3˸¤ý1/@½VÌ >’*Ò¶©ìŒoø€I`ÖUYÙÛ¹'î±jÂ_ÒjÉjÑrÿ2«Íª²iëMw•ÚÚNÊyöVGGÑàƒ‚úÛ’Ôy^ΗՃ­Ú@u{e_·ñ@Ȥg>¨ÝlkÁ®üò&[“‡Më–#ü¾ó~> stream xÚöP\ÛÖ £Á‚CãîîÁàîÐ@c»K€ànAÁÝ%¸‚»» î#÷žs¿ÿ¯z¯ºª{éc®9×n*2e5&Qs°)P lïÂÄÆÌÊWÓfc°²r0³²²#RQ©ƒ\lÿ‘#RiœA`{þYˆ;M\Þd&.o†Š`{€œ«-€ÀÆÍÏÆÃÏÊ `geåû!؉ aâ2(2äÀö@gD*q°ƒ§ÈÒÊå-Ï´ft6>>Æ?Ý¢v@'™‰=@ÑÄÅ h÷–ÑÌÄ 6]<ÿ'­ •‹‹? ‹»»;³‰33ØÉR˜Žàr±¨Nn@sÀ”J&vÀ¿©1#RÔ­@Î)ÔÀ.î&N@À›Àd´w~sqµ7:Þ²Ôd€ö+üeÀø»96f¶ÿ†ûÛû@ û?MÌÌÀv&öž {K€Èø(¥ÀìâáÂ0±7ÿÃÐÄÖüæoâf²51}3ø³t€”¨ ÀäáßüœÍœ@.ÎÌÎ Û?8²üæ­Í’öæâ`;; ½‹3âõI€œ€fo}÷dùûpmìÁîöÞÿA {s‹?h˜»:°h؃]²Û¼‰ÿ‘Y]\¬¬¬<ܼ #èafÅòGuOàŸJ¶?Äo|½À‹7@_ðíÑÛÙÄ pqrúzÿ[ñ¿‘ `2s˜-AöˆÿD-þÂoçïòè±¾€õÏŸ Þ&ÌloëùùŸGÌ¢¢"©+!Îð7åÿ*ÅÄÀo&.n;+€›Àóöàû¿q”M@×ñ/_Y{ 0€ï¯rßúôŸ’ÝþžÚ¿„𿱔Ào“ Ðþ3èú¬\¬fo_lÿŸÇýO—ÿSþG”ÿ×Aÿ¿I¹ÚÚþ©§ýËàÿGob²õüÛâmr]]Þ¶@ü¶ öÿ×T ø×êŠmÍÿ¯NÖÅämDí-mÿÛF³Èh® r1³úk\þ’kü±h¶ { 2ØôÇÕ`bceý?º·í2³y»>œßfòOðmyþ7¥¤½Øü-c;a''OÄ·C~C\o¶·u4zü9Åf{°Ë› àœ/Àì„øÇ‰¾9‹Ä¢¿€Eò¿ˆ‡À¢ðzÓ}ü/âe°(ÿƒ8,êÿE|<“Ð[ÓÐ[³ÿ¢?³˜ÿ ²X€ÿ…o„Xþjö?ì‹àô=ÇÐí_þЃ]þåÿV¨Õ¿ €ô/øVªí¿à[­vÿÀ·¥b±ÿ'öIû·#ú—þ­xð!ç›3øÔoÅ8ü£~ãæð6þà±g{+î_µ²½çüO¾?Ð ø¯ ÞÌßn‰ÞbþÓ«·]cq±rþ«o\ÜÁÿrxãàú/øFßí_ðû¿zýæýO2Î7[/ Ó_Áþg"Í\œÞîå?qýþó%zÍçÀf!Öµ!íwÕ¢„îL»cBÓT»ZitLÞ‹Nß]Pá’骾­;݈&õ ¯lKÒ^X"}öþÕRÖš¨Òöèód¯:¹Û†¸0ñ~`¼à—h]?1“ú‡=ŸgGÍ@èÈN9ª\GW^Tå|¬;÷>iºþÒå‘Os»*{UÜòHO¥SLÑQúE3Ty¦Y³xäï\˜ˆáé1Ï=Ðf®o¦1sÆ_Iåâ}£9 ½u7Øcîg½VËÕÙ»ð)ñuñˆ¡¯1G&©½ÅRäp罋¿E­ ÍgóDÄþX éK˜•×Ä'÷SÆs )aÊ PèÄ¢ìÊq7Ët²Õ4WPÓÖÁ{‡RK[$VR eüïŸ)ˆÕ´!;w“tŸjtÒû$Äâñ³EïÙ‘Üamudùq?Ý¿c)3™”V€M¶€X£XRúø~jT-ÏWRuÈ9º¾À[¯ÿ5ùÛ-“5´u˜Ï7;ý5þ>$^\å±GSåúƒÄ³“çÂÎ8«!½†jìkœà t£¾ðí öŽÄFž‹FYv\1Ô“²,Þri묳ØvÎDPZ*æÚÇdD“ý"¨ÓÏY'¥"Ë*§˜Çœ'@ÕH™h$ƒéÏÌéþF£D"_wxO³ùÁ‡üM®‰ºzvé†,?L¦Wöüç8Sál¯8$̾ßuQô£&ÕÊ-wW0á³ÄT†ïv´ÚT ÈË}ßeíV9Izfà\ã¨Jþ(S [©ù£<) ï>ù9ü$z‰ŒèOÇœˆ0yYö×,\—ã”!wúÉÝp[.¤N$))1­¶P5²—~¨vú†cÂw3£Æ„Q¼üÚq­¿m5ÊàšCdó¯DôÜË ¶F̨u÷‹ð'Kr:Öª‘Íe€RßRiÞ7Ó;ï LMª›ó͈™lD¢….éÅŒ˜ÄS¦XÖ²µ=Y Áé$ñ"𜘨ŽbÐf<)àZcPü$³s_co£h³ÿé´Iéù:©Žy¢—”h0á]¦]düúÀÙÏ,ìŽÕX¾³ì£|Ç.vd¹Rï~ijÓ%U„¨T^da-c.BgKÎÀ}\FÜc µë}A¿vz’Š?‰„Ũ¦²ƒÊþ­-ÿ±œš¦Ø¾_߸Ö@%2$˜ÿukµ¥‡ÛßžÕ”ï“Aûùã/–¥âB}Jn=†@ ÉÏÍQŠyiQÆk™%ž6ª¶Jñô¯é7?ÜyqÐ}£žHæþrΞºòîs',mòU†M€q-žÄú Kí¨dZÌ¡„˜X›4t‡*TãÃC±Þ‡0¼­Ù}™@¿#,£›’Ÿ õ/8ðXfT]h~´ØdKˆrnóΨh¾iƒ|Žsî{Þ۹ܟ0+ÇœÇ1CÒî¨U˜z‚öi"¨?§+R×òÔc´`¤¸è®?Âè;ûûp%+5s‘×ÑwT¡u/ VG%KÄDÕ1¶)\ZX3$Åw|ïü yó+g(‹ÜƒµçÖŠºlÝUïÃ’ïæÁ"ù\0â¹l¼$=#ÀºsÏ`¯ß¹ÛÅ£§á,ÁF²[Ç6¿ê›¯y3Pi¿nðZ<.Îÿ›i‰üöû kû*YrOlí0Bä‰FŸ;êö¼ðÞkáPV{Ïâ1:6–GuÔ/Ó×ÂoŸ&k~ÓÏ4[œ³¼º’ŸvEÍPüÛP¤I¦‘óÍlKÎÆI¼ÔÄešÌ¡k¢‹¹a²RF\ú»Hõ¡V &´sØZÎ@·I0С›ƒqZ¼†å¥9k^ßà‘ÉÉm3†ì‹k÷§ék¤ÃpBlÝjœŠ©Ë‘š«‚*̇ÖõËßOEŒÔ`†A‘ŒoÛäÈõ³Ú§ômIbÅ—“ÝŠ?éyŒŒzTÚ÷ˆ;R4P¨ƒZ™Ñ¯@wZó, ]ú`y㥡ì¼>ôÅgÂWßCK±ÎøZ´òÄߣ„çdªÊ»=ÞŸ•,ÛÙó°¥?0…Ýîæ>â”è¡'@A–Ÿô£ô"ï»Xó Ásô+®zny} ÙcÜÑ=oú°÷ Š­,¾Ü™øUxv¼ì®)5«/jeSNk¬„Ý@ÿ Cú*æìŒþ]çq„’,Š['”WÛkçü­] Àž—ŽX"ëhÝÔ`p1îUðlTƒÖr÷zá~¶Àø#{jdËsÞ²—),ë6ÒÏk&ç•6íª¼­< W$ ¤ðwá5@€agHÝ—,¥©|¢mÕV˜YÆUzbRakŒ T3vD_Ú°êÅ€íô”Õ¤ö`MyúuÏ¥&e‡^¾^wÔshš…†>çKdtm6¾Ê;ë–Ë„‡ºøÏï,ÛÂH-S×Ák+(dTÄØ]íV…%m+´3Yö냖ùœºÎšàü"FÀfýFú÷xzá cFú"1Z.?„²´D#7ï©UØ­öTædÒUÞ”`gJÆè;ýÐbCîžžL'N`AxnÏE,Ò‰|>×ïø°dx5.'btt\L ¹âå4œ›ÞB뜔Èi$2yâãAÞ.hîšð®*ÊÄ,Ó%«72frZ²]Œ¥?ks„ ÊÄËÞ!Zl]øœç‚ £ i9…Èoo*‡þ ÐÚçK4è´oÍeØÇ]ª¤ªY'‡¶_ÁÄÙøg_Ku¼9^¥3ìúÃeÎ?…d&—s 9r[Б\ËEL_ O´øÖàéëWX’ÚkB ¼!wOOì<ï£O~ïm;GL^/ˆaÓ!:0N—ç[6ÐŒ&ÛûÇf…¥Æ"ûR?»%¨„ Y£å¼`@%[“3,þ(—·‰FQáÂø2,\jýóIòÓ…©:Ý)ZZ.yô§:á÷ÃU·ÇºMJ\fΣDúÓÎ"ˈ »ðqˆzÓþ-}'„h>TÑ²Þ ]Á{7†ÒáwU â;mÉc ÅÄ˼P±Ø)D÷ž‘ÌâS‹9ÔAÅɾ‹ú²»áN¤YÃør–„ÈY]›ü{Ë"x%À8ÚÌßÝÌ)ÇÄ\ÑÚªÈÆ,Ëß‹½áøŒ+y7pÐb#·ú–¤0%¨‚F|Œf_˜‡ÊsÜLŽ6ÔvSx4¨Fl ·ÅÄŒO]l |${vÑôÃeTQFÉ¥ÒN´Ñ«Ã|V<ÇÏ\ývU0¬Êl:Ý85ᦠr!q1åµZDzx/Š“ü{8°b 1fuž â™N”i}Óˆ}‘f™/ãµ@e8&S!„BîÁE"De~#_t¡9˧§ gJè£Âk¨CˆE~á_ÌXreÆËHbF¨Äì™x&ßg«e°Ÿ=¢¿è—L;’t†Ï¶³ìaÄ´ré#+ Ï¢ƒ›» ›Ô‘¯À—äIE$Õ µ£_,ðž7~¦ŒËÎ1ߤ¦`%ß%¹¸êÕO«ŒŽ/¯¤îl è(Ù"ŒÕ©ªPŠô ¿ðÒgQB«"=rúŠEY©îáD2=«üõNàaßóÊ@ï4t¥Ü¡¢%ù%×ï…Q‡e™¸3»x£|VÚl¶üXÛØ8]î^r8çòê d¸µ,¥¥ G–TÛ,KùvÁ/¢‰ ðõÞäwÐŽaa?ç3Î7ñt5ñÇoK&8€>C°çs´anÙ5ÖzjÄ5üþ`U~§  ûV±HÒôò‹õ‡re"››÷þœ_¥^Ž?9ûÒk?÷.ȳ.J¿4s0ð÷Kçìú°×ÆÑøÕºe—=+,ˆ*’GiìœÒË/ΰ§û3”°B¯‚Ò6ß­gįºnüOÇð“yºwã¤OtÌ"£ss|íYUœª7ì¥g1“Ú--#(ðî$hFª^„ðº#®tŽ›Þ€¬Ôkx«mµãõÌ}eœ ‰áþwt¼ðÓÇ}ð‰Ts©=»q*‚3ྋ‰H¿9‹L!Ç/ß›°åúÊÊ%Èt—;få%‡¦Ìºohwóµñãð˜³H'd[P8dÞ‡B„–ÈÅ^÷@+óÜ%$Sü$‰Ueh6ÓØ,#VWß„¤Í¦#m|’”74_¦ªï"ÿý¢É,ß_šCíÃãæ>+ýŒ¿ùM¹¡1©”×±ðbk7ÅíÈ®/ûÉ#5ªub´ó¸€<üƒ ]b.¤ÏO)ÌÌ&OÉîœ|½½¤Þúýð(†1˜Ê™kHU„šê=®g7nx©¶Vª¢æbµ¯xÉè=éèÏ,Ë΃ jÆú sg—‚ú,}ÇËõÚù8"Ü àñÓÞMi£—µ€Ü§9»óD⛚¶c%[2ÚéŬ”3ÕljÙöl¦0ÈÛåK :šc·'ÎÏãeÝ’ršþcz|v…PáÇNq¨NPdÑÀãÑczéÓà¥à´‘ôÃòxk­oG™uS ï¦á’æ‡ë†[Å4¥iý7@;¸z;²EZ¢‚š¶3…ª¹oDª°-!0¢(QÔ‡¥K~aæ²*9+p]/BŒÆ+^º~fŠäž³4r{€BTØJV5äûÉÒÕË“qh_Œ¹ÇD‚PP¹ÝÅô¾íNs&1Þ˜ è3Á‰æˆ¦uÓ@p(¢ aù¬Ön¯ J®jœq° yåÙÒ=é-Y’ÎúŠ—xÊÔÈ‚ l=ëIf}ÏZnò…ø?–+<´µ( dÁ¡<‘H1]7+³›HÅrf[üC j$Ámïh©&Eë0äÇ?œ ¨S«–· ¾Ø\žô¨Õ+œy¯½XßýLSo<Ûüi™…wbi*ëÆÍ´„ë^ñ$Þ^“ÿʈׯæR“A¡ÏAÃÕ£Fž/ÇÛ»2ëGÎŇý- ˜iÞBŠÓ[»¾5 ºHsÈ@ÄûÁÓSEí—ë0ÆYÒ¸¶×K¶Ýá"‡ÇüUHž,ºÂÙ5r"Á<²nQÈ O¼F[äÒ¶=8yDÓ_ËÜsu™K-®nòÀfåë¯É;$µÖ6+µUù–hºfØ’€ù‡R‚ˆäÛfÓMçsÂêoÈ_ü²ÞõÆÔ5‡—ÙäZÈü´øJ5Ë"ha¾’Û‰QúŠÓ¨Y0ÿ×y÷ {TÒ%´–dÀáÑy„ ˘¥xÇOG©0œµ¼èt}±ê…£ýf]˜«Åiªj-ãòãü¿l8¿^b¯¨Á§ø. p¦, 7¥Ô4 ¡Æ"cÁWèõ¯ä\D#ò÷.L± ˆn:´æè5?Æ’(V¸,Í1ª[Á4䲆~®° ÄÄqN}uiófp •±8º …-"vàK¯ìÜ=¡Êk7: }XáÁ›ró'ƒ€ô«Å³ |ÎUMq1±À…ýGQ6g£’r|Z}öámÝ]æéDi‘ÛÕ-ÂÀ# AVT½kc#ï! džCÊ/†„#câ@õÝ*š‡"òÕ¦ó»>—9¬ñÒîfudýÓ„ÇF4qœ$ ‰WÖU(¸¯È³*OzB^/Ã…Êyôò⎠6¹IÁÛãØ"û6-ÕH(tŠ'ÒDª$ÕƒZ²(¤äª:<çEZ/m+SÓGsÕ¿"ÎÒ·Y>ŒÕͪ¯*©Š\áF,Ÿš´É•yxúµðâÿpuhÈ÷Aiá:«Æ¥Ô£s~V2Ì¢ˆ©šØ8Ô(Sœ¡å@!I7•ìTù%ƒ¹ûÝ…¹Ç‚{Ÿàx.¯W{dy0‡~7ÏcÛ<ç#h>θɉEß <¡Æ?B#x+ôAþFt—=³éÛNö!rª¥±ŒÝÇÅ´²Ò\ST>xå¸Ü¸æGRpÏ`ò$bòÐRÈÄGlÐò€lqo¶ª†Z±ç{ö£mûh²ÄDªÊ«µß‘Fƒ±™Ô›Ú‚ŽÓ¤¾±ÏÏ.CÊbõ‘éqƒÆ³<…7…ýLPJߘå§ È.ø]y÷ÀLõ)C#«óÓQæ¸Ûè(‹k™Mx/Ð% dÏ&YÉÝÕ{pP;™~À”"[8¤øÛ Ò;£ ÈÕ៴çé° ˜¥7sDýèK¸ê×ÛˆiÀÐd"¯lÅËèf.A^‰—žó“†Ñße—´%ó^}—'*Ë?ŒFmd™?O%¿€ee»ÿ‹†½*—†o®Fž-{)¹RY¤©”›tðÏ[R6†š%£÷ÑOɓɿóÙÎJ\?Á²b{‰Â;\aÜÁs&u¥§=âÖ…9OBˆ°º¹á… ¯†Ó{Y¿ëÝç@O) ÒH¦÷5ýp°ÀüÓsMˆÉ©BþÐ,8jŒ+ØBîl£?{ &OúQ…ÜK·ºç,‘v}S¸i»Ê5Ò‰Á¶°.*l@K¸lìÅÞÅ1ŸågÊÞ03²ÕRëH-`E A<q®ëƒHhhP‘º–þ M;›G´®’Ù«­¹0"“U쯚Þ±(¯Qó4Á_'Ù¹oø¥¤UËGúrôéŸ;D ñ£“ÔêC ¤Šw~BJò¶6Ë¥ô,¶«7¡.4dv" {ì@|ÑsÿüûËCHaܧBtqŸÓJ½òåã€$GoL˜¶CÚ -±14/˸ôÇ‚WÍÈï÷‰Cٷ݈‹Ä 2Þã©k¿ˆ¤[¥Æ“z/)g~:õݺ̀P‡Æ8ñ`²¢»¡QÍú¡®.5Y–ºK_ 'sþ`ÁÕþ5”’ºì3Bß“W"ð 4œêt}ï½€[Ajs8„ãæØ1–-:ó‰%ÁÁoÝzX™€Çr6±…6gE&­õ€Ýû5Èù€l;’ xª/?BÍ n½é$ŒE¤;^'Luj5G àoh/qø ½Ï⇼–?UÂe^—O#~*MŒÙ›Xúy\Õyƒ /^¤Eý~¹žÈj,Úÿó™ö1«°i³R1úÓ¯ÚT‰ę–*ÔwçIX´ØAÍ{‡4ÃK-O—«9ÇY2°éÐpd#ìÐ"|œàxÍ Kå"ϵ.7¨ý©ÉþM¶]ÝzŒTSÁÈÜ i¯´0Âô ø'Ý€¶ü” 2ç„ûÎé‰ò€s¥.f£úgÔë/–èy]»m¬û¬ Ÿá[fª4äâRHŠgþâ1{u=‚¾9_xÙeee½¬4Ý?Ù³ÙTOyB~T²?¶Í`mÛ>˜"KУ¦m7§ê…Ÿ  ñµd¨¸ÍÞà˜ ûNÔ–KlšÑð1=1Ni¥ÓrLÍÐâ<õ …º[rµuP°“º…Èp,CÁ V1Ðȇ›Ë˜-8¬n,ŸMïòºä;Òµ¾<ÉÞœ®/ðûÉÇì,Õò^ZÀ¬YåÔ1•dˆ»í¨"¬³æ„Å1û<~ú˜¥šÐÚèó2 §Žž %M@šæºÇj·ØêÔn­î½Ñ¯nãjq»z¾¡NYëô•!uaPð{Ñ‚‰»šÛ íŸW'Ú£c©ínƒž”åpéñ$ŠÌ7ùºø42ª9Dã¢Úò!ô°ûaÎ!D·h# ŠmV'ŸçµQKŸšï.œW4:¸>Œú+± @sl%¨Ký"•<=î ¹¬^JGgÎåâ奵Ыâ®AWž3QÆüÃ/ €.õ/šµ‰b‰\ ªÌº8BÆ*QjeÒ–°×’1}¨Jq ùOD#!Õ}^ƒŸXØC³}©duvúíµ6e“‹+TFlùC¦'2Š ð¤w–®ø4ÕÆ,ô=1q%±8Dùá©YqN¹‚aM5{ã7ÙL]~/eto¯Íï§c}‹Ä–àpz“*è9Jé-#£2«;º61â ïÕ "âUI@¯-ÿ&Ç•!Ô4:¬@*Qf„ é{ æwL)lüƒ£êñf>!e6;³?…]EMíߥ݊<ÄÔ÷Ô²ù ÔÐø âtQ¦úa"¦ åþ|1¹¢‡åiyjjŠ\Þü$.aÄ“mOÕOû£Ãˆ©mV”¯º eýJz8¥‘¹j Ó7³F9¼lnž­ ¯ÿš÷ái ßÊ™ur\;3µ˜¥£ïIẬøÔ1ŒO@X9“‹•èù>4ß•óšàŒ]ýS‹ñF™é¶ãÚ¼Ð.þl1D(‰í/¯ÕdŽ‚X|eÞ8ÿìô˜vrÕ"«ðá$£®„³.`nSDʯ¤Að¨,'Ý4>µ‡­+kð946åËè1•¡îÊ“HgÜ»fY€»"/' ž¢‡» 1w}} 2ç% su‘­ ͦÂ6.Î~ôÝúJaÅÍÐŒÑÔ‹îó¡,lÚîûÙMïÀY¦ZŒY²ñcn¬é¡ 6`—ŠýVF2A4"ËØ)eiVAi–û 1,<Ø™kògN«mUK…x‚Ï} ú§<›‚@iV¦òÔZiµg™ç¡­ßE»ðö“SóL9ZyD+4#¯!p ï m@íßYEíÃD“òûJ¥uqŒS<…Ïõ8$ ›e«ýµÜ«Ífv?ÁVbq?SöM¬»üQ(¸Þ;Q)-z°¯°Ç §©“%«DœŸ6c¤UØþ ÆUE®ÍE&3#òkíÑz_a ME Ó×g6¾„Ð:éü¬äårjKÞãìgÖÏ…m½«Áo”é̓РñC”%òF !¶¹¸üÒ×Φ-©.‹-.`Ûl2è¶}ÈásÌäͧª’wÎ4Q”ûü(½¯Z+ç&¨R• ¬fÏç»Þåòy¢˜gÎzvƒæèD3?{Ÿè?¢£ŸYÔv~ù°쇫º€jºu ”ÐëuLM~Äù[÷Ì5h{mïÑHÓrÔЮSÝ yÅda÷*ÇSÒËc4ñ¾eï©" pi«•bˆŒ±oâäKÚÿ¨P'©©¤Ì¥a¾n©Šw%j¿â˜)‰½ôªgÄÿm¾”´ÿ ãÊÃQ¢´ÃS¡šPØÙ)¦Íög;šMÐãÅUó÷wj""T|좀Q¥F¬G\R”§…¸‘܈}×Ö¶M’Œ$ì6£7’)oÝ„fhú«o{t¹m•Ð ‹â‡ íÍæ7£Ð—Þqsvñ~÷ÿäIáÔ ö>Tê<еfÜiÅ2Iôc4œ•ˆŒ_qjKSPv_Î aéJ„ÈR'r¿Olƒ§OMd[•³|®#-Øœó+Fbn£$Ýð°¿5àÌ22g¤DÄHŸo¡-|BJ6x% ˜CYLÊ[LÜÁ‰¸©_Yص)}fXRÿ&þûá£.ÿÅ»¬»IÓüúyë½q'ño!üy£‚Â@Y½ˆ¡ˆûj×ñ9I¾ª2ìú= NäìE6 '„ðÐýÙÓÙ«l‹œ½&E*ð\`wmv‡ï±ègг¾ÂÊ„m¯Î¨:×™>®Ó[fYü4òêféMŽ„” F¶dë¼Ð[î%#Zä›Ä{1ƒ×p%©å؈»g Q òË@Äñ³6qX|FÁ#?²«+ݱ€úþê³FpºMŒñhz…ë?$¦6«Ž[#Sbâ/DÅýrÊ]5¼ìc¿n÷Ã!}tÉÒ‰ŠçócàÜ%;ÁûW M˜J–¥ö¼+5r©9ø:`úߘá¼ÖmpY“öªwÐIKÛæP-æW±èÓ¢ht"öh{]­û7³Af”ÚïêÝ-@™ÄëÝOC|Ï•¥ØÛëÜìñ~ð<3õùuו¢W“#;<¢¾ÉC6!ËX ñÁ»âòœÇü›òóƒ9?jcH×N^çÇttd ‘E%û`ãÙ9BG0¥)"Ê#ä€Ih½P4)t½ÎwU:ß-?ê¸:ø b+‘ûо¸M9–.N"IÒˆNBab XšZiÇZRɧcñ­™^A;”¶g|³'òÝK6C·¯-#Á?àëJ÷õ^èkga#«§P£êÞÞ\>ËhäÖBº{M¸š!CQ¼ãaAtA›”C—MP^†\'ø‘âE˺\y†‡"ØÅÓ:GÄÕ9 ûe†WW¨…àˆ‚¯ŒÀT†Ê^u?i¶¶;Pgë ñ©è&x•ä|Ž­5·@2ªúX.#ª3\ µÿûeu$´òxÿ\ yÍÖ…>ºå¥ò €S{-‹æ¿ Ê[¿cïßßÉI«l}'Qs±~<0Èò‹«^æ}‰jalHÛ—›TR”uή(¸LÑûLµw*BýDƒa rãÄê‰t®’Òõµ”ª±¸.kôgeÝœKb:›ÌV±¿¸Þ¡^ƒÂ€³ŽßIxÛ-YÐz,õ‚Çn¨-ꜰ›µyNý´ªi¡p?ó¶ˆlöþœoõBíÒ°Ô Óo8·#ÐeÑ”úv³td zXcò+?’ÐÜÏ(}ÿkº+©ýñ6ï½ôƒë^餯j€=²˜ìy‘=º}ú¡j2:¤ãG¢ææÍt:üAšÝ²VÔ´{’Ä‚ßXJÁiüL²= #´©l\õN¨’>…„¶u>?è*\]âSµH¯(owLj w›b =GU,F-\Al³ŠTÐÑÀÇå,-)¦÷Þd$ÄÖ(Ö€Ù†Bl ©mc–ŽPÀö1Lú‘à×Ft£ÖAò¨±ßëÁ]¹çz¥êÖmòƧi2{Òf­¨ë‰ÌŠÅ9æßü;(erèT8è²!£÷@‚Šsðlô›ÏÑAÁ6Ó¢eäß»¿µÛë’øå(ÁæHV¾{ž±û©ÀtåÐ,ÝÑ)†ÌñAO½î̺N‚…ÇÌ …„“|欠S~!Q:¹ å„màÝŠuÙº™µUõ,&¯zyÒì(ásÜÊÇ2—"ö¸ÔÛØCõüBЮß^ŠÎH¶¿È=Çšæ…6‡¨óuo0v(smQüWèÞA#W$ª!úªSUÙ¹„‡Šíï—ÃpEv)ïû¸o›È¯”8FÙÉ ($d0ïø% ÑfÃ@utK[ÞE¡G›Fnx¬äUAõ€ÆaF@®…Âýœ.,Љ„AãÖ×dgLÕ11±Ä:4Cù?:pv¿à'CKgWó]êÒ”lŽ•Ä}š‡¦m`a(üú@ðÁµ|ϲÓ…ŠF_“\”fãÖ¦9§‚"÷.(¤J«Ó¨ÓâìãÇkþí#%žƒEe¨cù¤ݖù3ŠËüÑJ¨íï­-J¢ŽÊJèSUÊ…Õi‚VŒúA™¥â0Šñ¹/Ý€[Ü–T¸"ƒ„—2°p£Ž$^ åÍAf½•‚ÝnÌªŠ²„ííý+ÛÜQ\­˜`“UNù Øî^j-%ß(”[8våáñÆ‹Dîˆò)Ã#úþÛb±ž 4KÇð‚’­q«ÔŸ»Ý½ZrC=Å•êR·ÛK;7úÕ)GÔÚNþûć kÞy×D÷L“/:@Ž.P,ýò /Ôó »i¡EÈpÛQ‹•¥/o©ÛæR ŠED—÷ÊDAÒ8:¹²0 ÞZTqKs0‹…7O=‹}=ØEe(?xOÕl£ #݇±Ó<¹&1YµDÕáe±É²¾ÁC­uYNEgCI}v³¸×Õ!, í­Œ´kåe`ØÆÓÞ΋­Ms¯£$Ã?;¼·aÆ5ÏrÐ)UD1«J`'»78H*>cÙúr†Ácu‚ÔcMX+Ä¡×ÆÌ¤´¬=˜¨Ék)úaGË +°.:¢êì,3tUOX)Aê‡y*¨Fóng‚½y‰ÌTÎØ^wUd=ãÌš|j<ßÑB.,0òpµ7{¡ôòËùÏTí¢]Ô5EÖÉ« ÕWzÝ„[Ü.9Šy­·#×áä«’†Œ‘Éÿè|îïäÊ$y·xý\ñ,•_ÿ¸T»<ͺfÄñÐÿ= ü~1c€IO¹ŸÔºRøºÍ* ,‰Y5? ÞZWÏᄞ¥Édï&Ž¬Ê€쵄¤u Å ®ˆÙîZ톭ηH"`^jg›Ï¡˜½•ïÞïÝø¡PsÍT#/jŠa‚Õ`ç=¯ÃG'¥¶ÙÄørê">ÆŒ7\À•Ù,?¸mßW“#” ùê’û±À»Ov Õìž|Ò¦Ä _™¹ÁzÌŸL†ÆÉ:‡²;æôÅeÓ ê».ØôÍ|m£òÞ%¼p<ÜÂhW¢Epn^\ec! Œ‹†È"D‰g¬ß5Çðv'áÝ:õ­?’Æ—W‡©³$¹Öí©ºn¥’á5‚§o\ý8äuûﯤ¥e¦ÓÊ]Hª,a$7H¢ÌØWØ Pn Í<Ú{#¤±0¨E“’ŘžáÚI’YY4*u‚7›>5ñDS¶1ï9W-âm$dê —¾ÎcZ ¤PY¦!ÍÔfî}MùNÚŽê`òi™&-96¢dÛ¹Rg¾Qn5²¢H_xv8d¦öÙGÇ™0–É0÷Ó÷£XóªfM^,½–¥S(þ07Voöh}Ú:´<ƒåj(Ûȋʠ5õ1…ÖŽCgQuþ` <¥ýÌ_í‚,"SŸ U‰°Å†b=U6~7\ñ 6Ä÷žu+oû‡ÛbŸ˜4‘ø*J™tŦ¢–nG«`ÁmùÆ¿g '6 0CG¤¤sKjÒÔ 8/ÐZ°‰bï 0ßï%Eìyfí#ÙÃ=è3‡<­È ©2•aÜ¿ý¥)9Júä1)'õ!¢ªõr{N…÷·Æ@Iã'7«úôŽÂ•– ú1JªóÔ_ßzù3¾Ÿ6C§ QHhº§KVR®ürN—ŸM=Œ%¦ÆN±1kÐ"Næ?ùqhµ„_³t-6~V°Å6Hc<Ýåíe†éu´=-ˆe<覛± 'ö†ÐD¼0ò]b„\Ĺ~Aç³c.hWÚ”w ¶¥fÿ"3…~w–«±Ú¢¦oTRË{–èDa¥VKÞìP¹q\l¹NHST¦­nYH¥hókó¶õëöÌš`/NYàÍS@û¹®ú+mX^‡ÑQþ[SÁVóíˆ~ )“,‡%i —ä#FDUo¡Âc¯:Aò>ªæUöAk§¸ÝÒȘ¦«õXupWw°¦9m ö¯X"¸ÿ•ˆ Uz˜óûSIc›™ÖA”7Þ*òRéœ?ѶÔn¨*Æ^ý¨pxt¹ß§¦hLáê+IàïIˆÂxCü"£I¾J¢*asÎؼ‘Û.|«ÐK…ymq<óžooÿ—Ý…àºá™ü6h¢ì{®ìyÐñ圆'÷ÖUQ©(¼±ùy§˜÷Ìg9݈°k鼜 ùluþ[õõqÕÌæhMp ruIœr± ÈvYÌü@ù´4S »S¨r͈ï²7 "¶0VûIá¤Y â/*ä§t»þ>:_²d›…›,Ñ @U¹Ÿä«ÖrUrà [3[W$ù㫳¹Ò&V4iÍÄcöL=‡§Ó©U£Q©µ*+A?G/?/`ü–`°á?¥Ež„qÙÀ1t•pPJ)ÍO—4¢§Çã6[_³4€UíqÜ úPS§XnÍÒÁº.ýL]Ån6šZ,ôÛ·¯/PcÉC´¨­GJÑKÂ쇿¢¦øƒB ‘ 5LF §;f™ÂÉ–C=%Þ¾]Ò¦²˜ýýÀ4„Oø|ø¾8¸¨ä ;×ÚŽüo3¯ àé>K%<%Ä#},>ee¦ßh俥?ó¨S_©FBžJ›Ë8!nî¤ Å6I¾G…é éf‚–^}†FR|=Ã"D1 ,¾ÁˆBŸ.ý\ùð+§=Ý?à"8þ>%“XƒI2«ƒ•ëA©±Š^¤£eÈ £¬å¸cR,'3¡qûŽZ¼5ÖƒëVþqïµáp×]^ÎØsðÞ ä”ÉÚ‹v µ÷ÎI¤«U; Ì{?5É­i{D‘9¬¦\)oš=«'ãm1yÂi.`ï‰fÁc†õ-|ø þ#ÒKcÆçßþ*¾xz’¾˜wø§º+îêtÍù´ˆ£ùfl܆åòsSB¯CI‡¼³‚mL¿›ë²6G?²M©vÙ`}ÜÓ…¥Hu!˜ê»K7|dì!#jmÃÎ’LÓ_ôŽáfñã£ÈJoIÁÑYIRÀVˆ€Yöó' ¨„Ï«Àkézâ¹h¿=ã(Ó¸F%K( s3…ûäô-†1OlL\‚B>[ß×uk ¶Ü¶Êwñ‡ ³¨~”ëßy¬—ù˜¶†â]«PS¯'êÙ«7õ .Âpyì#yÇ·ñ#‘ñ¶ïŸª[ŒPÅÂõh1xaÍѯ:v§™ÄŽjr¿PÈS} °VF¤å ÝB@B¿F¿.DfBY·à,0u¥·lzÏÚd#4¢šÄiR‚—Ëá뛹-úÎ^0sÅfC­ry¹f^~E•r‡¸;l¶°LÚ ‘Ï£Òøý­©'*±$3Í º`@Òcû|-’©F:CfÖØÊˆ|–¸ÚY¸^¥©ëc±«HÇ|­eŠç½ƒj¹Ó9t³³i¸i2væÐÜ ÷1žä`–:ˆÍJïÞ£0Jg%ËÔÄ›RjÓ0ÊŸ:ú ¸Q³¾ÑF®tlv5lßïuüb“ómQ¤sÇS"y’½¿/ ±% ÖøÔ,%¹…«Ç4Ëщn:a÷¡»ZÁ:Ÿš;ÇSÿÅvq§;)LM|TCàÁ‡Ì–Ë»N‘¢®Ñ[œ•ðÌE¿ä”Ÿ×œ]c6³öÅB•MÍàû!’p-ÖsÁâXÿéA€&ÂíW9[3Â:£Å³ÚüT.Ÿ£Pð »”û »žlÚ…æÇq©/c¿g©ª{Jï½ùU†—{¹yLLsdo{ÉgÏXœx¾¨]»…Ôèæ„Éã·H—¶K2d f¦]#ŠÅÊ)Î B‚fßÊzU•Æ7>©j"è¡HeÓ)2f/ô—·‘.X`šã«úiߌ„ÎS&¡8R| mAg=IÚH[x7ozhrb µi…Ζޘ¡÷:—ð]9áãës{¡ºs™t?sø{¸l¨²h"Åôc‘8Óf´/b÷òøò~W&]x*¸.ʳäÉRPÌ £õ±%ãØÉ—ˆi‡G%ˆº%º'™d>¬íÈÞÇ& ÅeôjSdÆoð+ǦK$Rƒ›€ËˆtæEšDâæ1 µB’M °ÀV «àÎ*-Ü|ð£Q¸³û˜yNÒ1–Þ¶ ÎÑ‹/Q;*µ­ÚCaìNðDf¯Û™R¯ƒ!Do ñ)Ž`Í×âÚ[,ÁÏ.!Háô>¼~n‡ô ´ºÖ*¤%èeg/Wr•…—(V[SIÎjæQ¦íj9NcZç?6OŽ7è+ý"ßoT©îiD¹l<ÒÃ4èá†5–Á:­á ?¤ðqÁÞ]fÙáÕ˜›¤1Ü ×ÉFñËÆNF5.W1[+åÛV™´ÀUÉo?çÑÍâI´ªºÂ1ò¦EúÊSf^.kñ¢ž³HÎ$•¡¾?c,õ ý÷ùÃõ;N*ò̳øzäYZažF$%ÑÍÄê½_[íQsdܶ ½9蜥<@ÀaÉ)Î{3hf%8¨§\V§ù1š"Žäq%—M¹ââFJé ÷瀯êΔ~؆¿%DZZ‰í»ÉñÍ–EBn¼NôØÜ£×…Jÿò!Zx;3¸ÒB:£/nr$«iùÝÊÔÍGH¬Õsdf}sÀnjüu2‹â°ª©J™°Î¡‰L&ô’<™ù²y4}ŽFI„€Þ½M%gŽˆª=!á!*‚{ò·A´O£'¤Ñ‘¡5²Ø£õðòd;Ãh\“…Û³ab¿8Kü8EgÕqÈ5ºƒºöy!‚ ù©ÞX $OªýB—´àج`õ‘ÄMçDÆÞò6Ø`ÕŠz ¤P«·ºO£ƒPc2nY¦N{¥$› ÒËhamª2ÊYJVϪüZ½¼¡ó©G{F=òË@ËÑ*vù3W÷0×:mÌ4IiјN#¦Ý÷Ÿ”œ„Rï̓˔bÞc]]F¨=_0))渜ÄömGË—ùʤG÷UŠTÕ4ñfÂ|kx$ ke½Üãfx ߚ²crÐRÈtH0²^ù©­>F4¬–ÍTßap’ßuçòáF5Fž U£CB«ªÛrN¬=h%f]—¯T Y‡ÛFV£HöÇ¢ß#Í›|t[!¾:‘ÆOÏÍót8Ã+ƒãv›5œ6h÷"¶•J_]ȱñ¨,¡ Ýh ÚMšJÝ)Ö:7s®yåDÒxåsÙ¢=ø±— +X4s1Q^ókTQ“>p<#·»I?"!£÷nCÕÀ6]ÏùE³û\${Âik[Lç m;r5Á!)“·—.Þfñ’€ÑX¶©b™;ÍZ¿/߉”æ³`Õ–_pŠqÌ’|<ÈþcYH\ š—»G¤? ƒâ‚-àÊ!R¨Êš²ÿwOúi endstream endobj 178 0 obj << /Length1 2116 /Length2 14493 /Length3 0 /Length 15768 /Filter /FlateDecode >> stream xÚ÷PÛëö ãPÜ]‚»;ÅÝÝŠÜÝÝ¥‡bŵE‹SÜÝŠkqŠ]öÙçœîóÿ¾™{'3IžåÏz×z 5¹ª³˜¹ƒ)HÚÁÞ•™…M ¡$®ËÎ`cãdacã@¤¦Ö»Ú‚þ#G¤Ö9»€ìþa!á º¾É$®o†Jöy7[;'€G€W€ ÀÁÆÆÿCg€$ÐlPbÈ;؃\©%½œÁ–V®oyþó@gF`çççeú—;@Ìä 6Ú”€®V »·Œf@[€†ƒäêõ?!è­\]XY=<}\€î €«³ÈÏ矊ÿEˆììs°™+Àd ¶GüýM ²ø¿¿3Ø Ïö6~ì¶¿^ÿýfø6aæö¶^ÌÿuĬŠÊÚºjŒÿ¦ü_¥¸¸ƒ'À‡™›ÀÌÁÍ`gçäðr³üþ7Ž*üï:ØþøÊÙ[8øÿ.÷­Oÿ)Ùýß3@÷ï¡üo,e‡·Éèþ º7›ÙÛûÿçqÿ—Ëÿ¿)ÿ+Êÿë ÿߊ¤Ýlmÿ¥§ûÛàÿG´ÛzýÛâmrÝ\ß¶@Éámìÿ¯©èïÕw°5ÿ¿:9WàÛ.ˆÙ[Úþ·`i°'È\ìjfõ÷¸ü-×úkÑlÁö Uð_W €™íÿèÞ¶ËÌæíúpy›É©@oËó¿)¥ìÍÌÿÚ2nÐÙè…Èö6JÜÜö·u4yþkЬ,ö®o.€7r~ gÄ¿N”‡À*ö—èoÄ`ÿƒx߆êâ°JþAüV©ÿ"^6«ôÄ `•ûƒÞb*þAo~*ÿE|o~ª€Uýz‹¢ñqX5ÿ ·Ztÿ‹øßêþAo:Ó?è-ŸÙÑ_f5ÿd°‚þ ßÈú÷áþ1x+ÉâÁ[I`÷xü¥vpsþ‡Ã›‰å?à[ÙVÿ…\oͶòr´z»TÿX¼ÉÀÿ€o\lþßÈØþ¾±±ûÙߨü Åýæjÿ64ÿпÑsø“ýÍÙáÔoÕ;þQ¿±w|[H‡ô‡ý­üc«ÕåO¾¿Èýd¸ßÌ]Þî­?o1ÿtómûY]­œAÿèßW‡8¼qpû|£ïþøÆÀãäxóþG2Ž·ð^ÿ€oì¼ÿ°{‹ä rþ;Õÿl™›³óÛsä_wÜÛzýÿë¡y‚Ì—æÌÞ‡Z m»¯#ò`Þš¡ÞÕI§göYrnwû ŸB_“¼á|+–2ô}uGŠîFt™ìÙçø{=|DK²Zë£ï“q’úÔn+ââ$nÿÄ—c±º>’wÄÌš¢{¾ÏN¾ÚA6Ðß!;å©óœÜøPU °î=ze<ëúÊWFÃçwÕöjxžÊ§™ã´b ‚Jf©óMsæð)à\™I0/<Ñfong0s'^Éä“ýNâ8‹|ô69âæ¼×*59\º¨ôðI o0G§h|ÄRåñ|J‹äÃcŠ-HŒæ›„ÛÑ€N\_É;—ËG&¶Fðƒ$ÊÑv¦ÂÌÔ¶©Å‡m5r;ð1óêxK¦ŸÙ ]Ô:öŸq½cªf³CDúm\OU9"2z>Ú’†ÞЉÀuD¤.ð,ô÷ñûOÓÖ| MZä0ÍwÕïöz¢œv@ñÞÿò›˜±Gø¬­ùáTXs‚xˆ8ÌnEžûÎäô³Î`5æ«0$QYÜ”‚õè× ùNoÔ×åÏÇf!"ËF‚{¢ÈP› Nš»n¡‹æåú ©øLkùn{˜…ÇhJ‚ZýOÇ}9⦘"£•JÁ¡ßxkJÀ/©Q´„Í–×%wª$ãõSeÓ‘H‡æ5âæ}§äÊ'ÏÂd<"•Ъ+&@”’’çì9œ:É…]Q,£“Wò,¸< Õ³$‚éšJC' Â¡Îøt•ÊÁ8ŸS‘·C(³„›ô¬»o­ †Óµ^ÕS%þì™Ü6ØÒQf‘(¢Óž68WÞÛ#ÎkÿÑ̉ ;+&rikŒîÒ]¦®ÚtWŽÔïe¡áUº5ßiº‰1ÖcÂïFâß«º=˜X«ìæ$}W€ó‡Êäh…ì!³H\q”²|^9í¹ gØùÝ<×ïYê†( Ùü½°zzY$v¾fx¡_ƒ†‚å ì•!Âýí3>íž"ßæ°<[("g9Ã,Îä´©ô¾ú#,¯ÆgUu¡AB¿‡ ¥¦]Þ# Jë¶ø‚òÄZd¦“"™>ðLPÊ2ü[½ŸÎ­4´e«¦wiº3ó‰Êñ+™|’‚dõŠ¿.V Ä«wéW–½šhÈxì Ã׆×Ï~Gg×ÀÜÁ°±ÓµÉUŒMµôI[R¹&µ»:cVgY!Õ±¡ù¬ ¹1ß_Óí®èb^帎'©’ü!ˆØ˜EÃËõ%d6öpuº³žI¨…q¤\[Ïl³³v„`€Ï¦ÉêÄöζg_Ì!q˜¹ÛÜt«Ü5€2Û)p‘_¢ŸA5–k.0 6Ùϰ~–xTâøi2Êí\­˜p%Pˆÿ³îËàïͪŽ1ÿͳ<Ì%“w¥›QXäüÆÂªG5~Ò_Ên«„a÷Ò±RÓáw¸’ÛHø¼APZŒòø§°6È‚ÂL²þÕFƒZÂ5þ˜ëþô0üx©2¹ÌØÆ¡Œ³pi÷m‰v™à½‡ñvç¯)e'×}Âzg£ë"ñc|Ûªzv‰p”v IÕë©ÌÒHž¢¤OüÅîBVR]ƺtý^‰áÊ÷éðtü„%ûxæÜó‚ëº\å°­ÜXä ȺYpµR¤ò·ñM苳†ºùØø-©¤õÕYOK¶ ͳ£Dˆ˜…‰‡xoSš[ëõ>Hø× ØÞ<ÜTFc¶šg°` ú °$gÂ@l_õ‹ËGUg¼€ççÔöt¤¨ÅÙÎËT74n£ðB¿'ƒ‚ôrbÜÚ«ø…2-_Ÿ v ÷nÏýΚÕyrn9;DDž«ÖbžQÅQ×8ÒÕÀªŸ ®G%h•'±î‘ÞNöë‘KU 듇•ig€ì'XÊ/4¸A­ÈîÄû.E瞊dæ Z_*Ë+¬×Ñ[Uçá•ù]kP)ÐXv¯!ÙÎ*¹dqIÛÖ¸¯ï”ÕT‚À’3/ÁæF¬UpGrÒNS¾»Â$6õ΃™‚‘«Žj½Hxúû—t!Êj¨ƒT›TT+Œñ³|û§$S’ñˆÂ+=ó„‹2«ˆÔÄo1 ½ÂžÊ§eëŽ; .ÐÅ9ße—TЬ„¯rgâ®gŽóJs» –åß_È3Ø!Ž“Ë<òàÿ°!ÀŠŸ· â§€SF˜HNwë·_¬x<|ÄÐÌ…Ö«Ýý²FÑT!$Š6¦¢}]ÄÒN,ú¯«ØÉƒªâJ’5ì¾ôíøSÆc0„’|n0_ã<ȳ‡FÒíä u‹ö¼H/HT¿Û(°Œ6° o‹Êî[¸» º·ž‘‘âÜ>›ò‘ºSæ-ù JÛ¸iÀ˜ÿÙ“ñšü»g‰`9Aî_E°HšÈÞ.%õ§~nŠ&©J‹å¼Ÿ:f Ïîö[/†¯ñy©b|./¿øæ¹›Ð“þ`‘ '&æÌ_ÚKQ J!À.ôKBca:’mæÂ­„ £e½,Ç¥Bp(3MTõ£â«i‚oå-¥#,O§Bª"™ªîȆ·)jq®^¸ÙôßkÐ)=5žâ¢‚… ÚZuÐö&€Ny¶^+±†¹ôÚî{醬^ñÝ+VÓÆW¸…vó›ìé ò:ÿT0ó'ú‡ÎG·¯ˆ]nŒØ¶õæ7?¹›½ËÌ]"’qï5åáô`+ÝÇ ŸÂöbEt¢”ïc”pZPj•aÁçgŠWÒ³¬%"H…£ŸÐÇGcäy«(ÛâG®†7ÞÁíxY°•ëŸÔY3œ¹¾ã*ý.MŃÈZö<qÓÆ^Ôëu©Ž‘:BÆ/,4;׈ ª&C‡ÐÆ“i™¡‰ú'Ìp0ÊcVï8eüŠ4! öi3—óì»(„¡¦óæi󘳚a×W¥ï;<”T4k$]äÓGÔˆZêw‡øÀ¿{ j×\ïhºæ¨Ö&HªVvÙ˜Ž¼D è Y¶Š½\¡"^`ÚºÎÝ‹ ¼r8TH[¦Í™¨AEË4WpŒ‹£—jñÒÊ¥klôØŸö¢|6Ï|…ú1rŽNí2¼áŸe zˆºŸ1¤‹?_Fؽr´|™ÂZ]õ ËÛÝ‘ÉÿŒ úM ?ß¶òwŸ pï`©C¦eZ;Ú¢õZ£-µã¸hTRÐäûY<³ÈÙá{æ«c\8? *R /òÝ–òB£í¹GúsMšW„ôQzèºcO=)ö÷ä^?9†õzû=c«ˆ /ë†Ì ù¦ES”³ 9œ¯¹O£VCw.Œ˜ãÑ¿û\²>÷k|ÃË9 aº–z!¿þšu~ùN])ÍIðd‰^”[´CS ä·¸R:È™+i3hegëìf.¼ñëýø»‘qÇY¢ƒ´ñT†™ÍrÖlÌ=™½IÁo÷œ9zŽÌ”•Œ?©(OQx¦|^Ξ*ö·« ¤Ýo´NtH:mÏ©=aõ-ëgÑOìyü‹0%fqV)>~4²±•øvî…Ö²JMüBF?Imߨ3'­Â ­„žáU0„=»ï¥çÔ~Z¶L–+ ¢*ΕÑÌbð )ï3|,ßO¥¿&çBBºrée¥jCÌÚíFiÏ@$-«<&Vß´Ñ[B€_¾#^R3CÉkõçé[ÔjêòⲆ™EàÆ!hÁD2ÝYñžó)pM¿ó>àØ­Û²~±sv¿ÉR½Ž§Dþ˜‡`èyÙºc|×Z<¢ØÓÜ›‹äU^žR{=Á6¥.Êêcq¬&ñ˯Â|¸ apáÖqǹ«õ9w*ñ¦5ÖBµÐ¡é4°Si†Ñˆ–)õŒÇ˜uEÇÇjqlè|ˆ5j*óhÔz¿NÃoúåT>ÂiÊ%’4@&ö“ÒOkNúO*èA‹áüVeƒM†“WÅõ§öçߦé)ZwïÞ6z¥@í oÐåÞ'²‚Vž*£/~+£Žc‡Ýžw‡c_µtÙäâ©ã ’½MÂ=&¹jP¾~î¶.ØVá")mÇ^ê0]{Ýýò=Ò5_úÒër¯n÷æ͹ϕ‡š>£^´üǧfDÆï[¢Hç;vöLÖJöRrÈvH¥ê2$5Z0UõPkø~dÞ+‡á•¾æ( G ö~'/ïÃS ”lj>ß§]c¹µéòTü‘&²KÅjZ°Cm¦^¾eßFòs™™ÏÍM¶ªŒæf¬™s”ÉÞˆLFsÆ ú¢lDSâ&ç{óÊø:ÏVÖ@$€™hާQUñƒ§ZËãF…Bjá1€dòâòXH:¡G°Ÿ,mJŸ"Ì“ cç)ãFÏÇ'8®çzŒ%ù”od€¶Qï]}÷˜1ÚÒÅ¿5 Ñtç@Ag¶âX+Ï;üò¶ fX9'¼à–I0 :¿Û‡²n|Ú¯Ú2Û) ï‚edµÏ›òdžö»cÞËCêP†ÍÖÁÁÒ1kuN˜Ä: ‹Â‹ ø¡Ídi@õ¾¸Ò•XS½‹[‰¯[ò$ yR1×åƒO”d=%Ò}ˆ¤°ÌÀú}•}ºùp.íØ˜‚r*­cò.2p†ôvÕX’}Þõiø (%…ºÊEÑY,¨4TéËÈK½Ø’±hÃÊ!×hE[Uâm*8*ž‚yë;ðþÃvRu§m—´Ïb9Îmö^?"-“pˆí1q¡ž““h­ n>¶DLí*Á²ï¥ÁÁ7}Ž2ŸûæÑÝ=Ÿkã:âè·á¶ÍiÓI_•ªÜ K̦©W gas=¤¯,JD·¸¸™›½âM‹·²ÏTòØÕÌFòBé¼Ïo¾X÷Àç lð™lãYÏ_à’}¨-šµqþå/ !_dw=û+Ó½*ªÆ”é‡~¦gypÐÖ ú‡0ѦôMgbE¼¦.Úßdœ#&Eb¼ þºŒÆ{éê”2?Å´{] £%×ÍQ:êÉßͳn3¹mÀ®x_›þÄ« N¯%:®pþ0uZüM9º6·‘újŠÀârPK—Æj,’'qQ¥cÿê÷æ¬Î8ÇW£eüûDHTo™šÓ'X9oz¼âùÙË¢ÝXã•bIø‘ÅÒä–PœGfñyðX<…ôiÐ\÷,±û&þ»®”Ä×ìÓ°°=f«ñA®­­ZÏ3Ø¡44裴`]"!çlÆ“ôËÚ¶25‘Ç8þZHLOTU¬@-êèW&±xé×&9ߢÄ\ÿ¹å¬ …2°g á̻ۮ¡€4Ãù{©ÎßîÔQ½¹( iǹUöë±KêrÔò“^Éne9 ŒáK·!^ y#Žý( Ç7ËB_§Üv5œs%hX#»µWròṤ5•éÀ|*ÂઓÇ!.ý´fv±ëà;¡Ô>™9}ôi,T‹ú/Ñ@^]ýA()ó×Éø 1ÇÛù¬¿Â[éê_;¡‡g^ùË­š'÷H¶ íÛ§©‘üWG<ӷݼ€Ê”¿ÔÌðø&í¨Rõ‹ƒTµ¼x„Giéw+™ïŸ«ud¼¬[ÔGÁO6x¬­QŽ Ò(µ¼ÏbhâIºyÚ6Rú1íõ(cþýF‘¸„‡ü5©ÂºãfS掽c7.©¢¿Ž$£¯Ë°¹Ž Oõ7/vxÓ lx].X™¢o”½g¼SûœsÌθèèI\ö(ãb©òWK˜Dp)[d8ïYü!$æ GV‚õŠ'ßz˜z^µã†?…þÐaµKù1ÜÙO”&µÙÆîzŽ‹-çnˆÈ£4wÁhÄs·8qgõ¹¯ƒ¼^#@nSQ³¹/ø7‡W0³|ùl KL¤¡iµ»óûö-î¨ë¯Û-Þ ‰D-‡*?³¾Û¡·Msæ:Ñ1ªp •^džf,\Ógb?F¹ ¤Æp§Ã@¢Ñ+šÚe*éÛâ4Ž} ëþÄí€!ƒ+ìõcÝ[ÑŃòx°Ýa¥ªöƒE¢ûÔ¨árÙg¤-fW~Ü¥®>7¬ùÎÌl¨6ˆ=Þ˜ˆ¢ÃïhÙch§˜Gó\Y Q4xdRh”Ë«E›#å!ä÷`ÀÉ~4²5sA£î‹Jý¾ûuÏwŠìW‰Y¯v(¼^•˜rPÉ´7³$Nâ1õõÒ«ž6”ájLQp>•nuªRŒE¸k&þÇ*†:õø€0b7‹– \9|«è€Ð§ç ~šŸÉ¿°7Ò+,¨²  +aÛO¥;{´áÿÚþz÷ÐêC}qâfLŽîømFŸ±¡ ‡»Ðß„ó˜]Øqãx\eýhî 9>p”A³h¸Ù‰ ¯?øR»¦(:ÐIC)ÍÞygÄŸÕ(˜ ê1bÌg.±mjÏ7ÏÎrÇ:þ)^ŸÈá¸EªO‡{…o½ì¯Iÿ¶<r± yábƒÃª F»®2YXpø\ˆ9•¤h4ŠÊÀGR ™\Ö XîCÉïÀ«]ɹèÛ^ßDzÉG’y?M¬{ö.©Vªèáî(K}Às{°Ä†{‚‹ÝtM3$žÛG!ù ÀÊå‘võ ž³jÇ+â…ůœÕ)EÅ=1ÇÂ-c¿ö˜Ñ¾FÿÚ}ÞÖ_.”ý¾(0/$SòóáæB/¦È2õ°WÌýupªe×f½¾þ"<è‚ë–¯¹‚*¦4‘vÁÀ6Óª´V~­ONV€«ÃÂåtΙ÷–´y1*•ÂP+êbò¹ááâ;¾5âS¹Ó͵®ÒwFý­X?Á´èE¥ ¡Ã®Šå!‡]$ÖÒVÌ„ÞÕŸ„Z³hð|П҂áätÎÓ{‡º€YÛ ¨õ}OuN'<Õà÷\K‰7Uü‚Ê£rõƒn„ þïüž™’1,ÌÚ?× 5L½¬¦ýºÝ %_Á«–ïê½°L¥¼ãÖ•«…¤¾.Ð;‹Ç§¯a¢‡Æ¹Øä-†ÍμA0¶-\ûÆ™´èQs ¼Ó]qhjÛñ‡z—œ¯™äµBY KŸƒ|®þäW\Q»ðµ­Šn3†+Ç4%ë-h‰÷­ð¢Ùú§fÂí~½Nä$umÇAŸÿÃblà‚M›,– ÉCŽïY•aBÕðîK©^6ç·ichõŒ:±ÕÐlÿàù_'½¼AEäüý§áŽci/$MXêxÿ ߎ–¥2+ŽJØ òäï*³!ù›Ìq‚ ¦æ‘4CCEG N6hƒÉWÙ†*&7ú×?AÕºSÔ•oTwˆ-þ`j_ÆH<×ÍŠýâüçÿ½Bâ‡8œÁ\½Ý×ü_î}G\ô«ô'œˆ “‹—y/ cÚÌÌÚîÉKã¯g¢2qsö |k›kóÌš¡ÊÅ—†˜û)lfŠŽZNnóQ¾U©ß\E NwItú{zÉp4(Ó¡ÅÊØ»±$¶ŠFÑN÷ÛŠÃÓÿä…Æ~jÕÍÀÊi´f)ýŠÌÒQô } ]8ßvh»3.Ñ1€Þ.‡Þ¯ Ï«PnN”`G¶¿åók¡Ê&õÐdŒ9aKP1Â|¢6õ…:¥×ø§ŒVóƒØTJb2Vñ …µŸß§ÏAÔHMøŸ¯ånÅ<~|äë®CîB¼rü$ù¹Cì© Õ†°ý®Â1DŽêÄL'»‡ žÞ‡W 8[l5úZñûYŸÛª–Ñ$?ÚÕÂsã—Ìä;¸a'½Ð²(Ž\\“ÚŒ(r̶’ð˜ÎŒÝtÎ{ävK»vì)‰¶U²™Õ²ŒU^=onaÀuP{1…£¬fDé¿0e”‚øH†±¬èJm^å[’‰ªŸ¶F€–‡ÅðõÊAEßxwÇ=#H*‘b¶tì)P¢¸¿ð…Wì@4¼dçÓ·ØÆ3¤‰‡z;Š ¶–õŸ‡‰8nq5ô®”Ê:ú:Æ> G1clmI@¥¢(Ý¥}pêi¥B°‘áÿæá¿’‚Œ/¡vÃÛÙ ¯ l˜ÚLãínjw %ïcF͵òÙú¸Ý«´ÆPEÀÄÍ3Y,Œì›Nº*…£3ÞÍ!$Ž>ºnè´nƒïÙjm84KÐDw…ÑP§§4÷ÔL/DÇ#³H¹‰˜[ýÉí<}Ýts[•ÌÖBzñÄ ®®ä%¾ÙÚ_N1qÕ´-5u0Pé¨Ð£'­8å¨!•÷óÍÄîh„¥#+£j畾–ÔïÇqßÅUu²'o/¹7=¨«\ÛdqtÜô¢¯æO‘5ìËéPzŽ’G}ê©Ô×)¦]á÷ÄSkÒã«uªN8^ùU0át÷Ó™–ƒÀ÷ƒÅ…ø);Ü™w”9߯–Ö™Y¼J>å&nÄ)æzHdêH˜Ôä àëOÁbÔšT³Täñµj%eë@ÓâßÍŠéæo°CríM6µ,WGTœ™ÙS`|7gÙs’áÛ`[‚¦Ã]Õ‹Ô,˜å(kíºrÛðÓ(^›Õ—v£ï”WËP°Ã—Ûz2Û<$åV=_@x°Üj ¤‡x6%·s¸aR¢·³‘à;­X“"ñùO¢õè"cÈa{pÁê`5«þÕÅ@¨A‘¤ãÚÆl‰!°§ß^"s5ß­¢ZÓ,Âï´¶ŽÍ(ó_]£ ˜ìÐaè¢(pÕä’w7AïÌ»¢™9Ô´n=¿§Ã0žÛèf|òîy2î2§p)ÊÑgS=xØŸg kúé]Y' za9õSÌqhæ™QOj}+yeÂ_Ç=aò•GT&Müë9e)Œ¹åbC­ÏiФ2²¯ý¬Až‡×Oœ<#é.°$…Y4ó\É#™äºZýÏ*¤l#(¬V…ü­85‰.ÐõݾÝèaäŠQ)ô“¨öÃD]PÅQH!$³Ë•ö³ˆ ÈÉû© ³¤oŽÂ¦,îÝÆDÇ È‚Uœ!òñàbkHL­«&Y ¿~#©Ö²PY\7—JE>²«oìn™FÐ3὆e#=IÚ4²é!O „DnïuôTDôBî³Äé\’?YM} ñ‡Ñ I¿lîébÒ^Ϥ¼( ½;{­< u,ûΔ*ˆÅ´Q“üƒy”XD¨}*ůÀî¾1RoOhaè@jÚ¬ WÉcO%9Æ×›ÞtùÝPõËY0ôÓªcª}ˆò9yCßÝÃK9îéî–«è'úO½"Ý‹1tá6W˜Àa¯S×vÓŽáè6ÕÒ…ö/òÂQ_™ÂY’,÷KH X•í?:Ù¶ÑöL¶“Um‰Sö—ûÿ°a­Âžmœ®M@34”àµ'+"8ø›÷¸Ä/­ºj­.… rö“‚ý÷KK·}Rñ0Jj6UhIs"l® (- òOWà¡@&+Æ? \yéí:ÁRH½áÂ" Ü03!ÑWÖúwldvštÛ\1+ß__€´ÕOˆñDŸ¿K,Ú¶Ê5 |õ‡”ÅiRˆrVˆÃ˜öØÅÆ¿Ùmï‘XÊqz¤sBpè ÜQnUeŸ1ß•GÑN¡«™86rÕ°R)ë̈ùVÞ„ í:}3ðÜlÛµxûKõ1Ò>åBF{õ¹‰,ÿ8Éß8§¦šìvÓ¥$š‹5ú€Š6:g•“z=g‹Ÿ„íñø kçÊûýĦ_lcåèð,Á„_ãµ–`­HƒÑ?Gƒ<²ÎòËŠÞícaWZÒ*ìÚg’X\Ÿ0fep8®º=vü8¯y€äêiIR¸ØªäíŠ<' äù’&ç¼=nëþÌIwC³&mu)W£nöÚ¬;Õ¥Ó"+ ß²ø^y÷gv 3ç1D×0´çó•ÁÝÇ¢` ùþ‹îèCÅ«!Xßz”ã6Þ⌸ÍÚÈÞ'¼GÆ«£ÃK[oÒ‰n´Ršg¼ÈõÝÈù+„¬tUY5m„:"Ðé["Þ%›®µÛÅ—‘ÁKÙ”1À#U&ûÙ•EÓàÓÖ”ÂvÍ(/nw €/…ý­ÆO¯Cðð¿ÐdÏzP㿲ûI:5üb´8àkâ>Lržœ€-vò]SÔî aŸ³‘ žñr9Îèã^¨:,†éûYÐÝÀ |UïOÞ·ˆpì'ËÐÒ ÇGH˜Ê´Û‘gÒU=”9õà¢ï3чwk´Ê^”B º¡[ÕìüâS§;ß°âcR VF‹ù¯üù —Ìu/Õí¦¼qÁµé³Å ?Ùuøn^‹j#úÊ>Ä8µÃá¼Ë•V<ý GÇë/Í`¦cÆÇ /Ónäw£iÔ®¾BÏAVS>R³Dß‚|Ll¦u/Ĥr=–\ËÆÎ;µ“´ZêLxÂégÙ¡Ûµ<·náXŠyxÚÖ“VÙ Ñ;Õ!¾d˜ ]›6A pÚ8FT~Áž’™#dκ‡ÂV¯¥W7|µÂ6Ä…úó‰Á\PtöŒªÑù98î€ ”x*H>2 –Ì@8HžP1¥´LIå=³÷S¾Lm|ÙÚVŽnï½ [ùõ€Ý™3¶7r•g¥RzŒñ‘ë°v©ÌÜÕŠ=HiZùÊšéÐËŸÜQ“ê(x*ó½×Ñ%ÑÐXööŽs@±¤dÜ[NVoðü›y„tÉkS¢î¨9Ì -Fm£dBÔšVüYÓ3Wg–$®‹Êë&VF¥ñÃPœ¸ 5ª6£4ÚO÷¿úŒoç­ìÿ6DËu»‘¡i…N$ÙÁNÅ$ÔÍ¿l¬ñöBþ.¨ûŽ=ô±}4ýÝâ#ζ'£¨ªsüöú%*¸è*áQ5ßgÙ(kÒåyÈ›{×¼Ü?g”âƒ-³Œ ŠF¸¿8€y<³Î<»çèÑœ·p×6:Ö¥Íçi$Ôäâ'M”ö¼ÏOä´>Et”ÄÜ…^sÑjú¾áâaw—pMú>tLFçè]Ü^Ï`ù43ÇjafanÑ^—ŠYß’.cùo¼JáÕBó*uúYÙœuírc”‘)m[#eJ§‰ÓŒÆ¹Ÿˆ¤GŒ§å’/Iƒ0)25)60„]f­{æ§O^úÖG„{†¸¡™²ƒà~G×åç¨f¦,rÚâÊšhÝ‚2ÐKdÅ೉ä`ÆçÑ›fƒ¬×ãlß ðIf@‘—’Ô6ý†|(Óö’í#²“¿òU»&-ˆ—ê¡áA)êÌHÓê‚G,nd÷p…ü!Èèì^Î1CìpÜéÆwbØŸöÓÒÚúéäµQÝ,Ä~dtgæ©|Ë—ÅŸ?Šo6¹ëy2B÷|d=ºù£Ùæ²Bö7¾†YJýwwd¥í¯‰>&¥báíü| íöa*HLé,¦ŸRð³?¿X±] rÌá¢ÏPd^߀®<<—HóÜoëE'§×0Ùf0úÄà$:dÃw 9ŠÀŽ:Ìœy™zÉÑ1 ¡•z߯[9zS’°ü/NÞ‹W1Ô6ÇÈ¢;P‹5’’Ÿ¥ßñÆšRpÈ­]¿nf´»îºjÜ”©ÂÚ†¸´¾ªgZuNôøSãÁç19\/ ^Ãïq†„®uËU¶ÁØaå°B÷³±ÒLR=u²;›vI‡”þ,^³-½púôYhüW¡¯Æw‡1h$!•úèBƒ5¯–rØLRUŠi+ý÷‘Ö鬚esF‹=&It\ÂV¿±"wêó£@³H»ük4?øÕäÄ(PÈdÒ­“áǧËaŒ58 /ÎRÚ€/R6y¢ê½’X$Œ¦ ?[Æ•v|mA|˜%ìdjì'Œ ƒ¾ÞÄ7 ¤‡|í¿¬Övƒžt)Øã  «Ñ7× ±qªøZ$L’ý€Td RG‹ŸVÙ'µx"ž}åšäûPù¶T^}C ÅÈ + 70±“A:‹ ·‚ôfñ8â”i6cŠxªúæé´ÑtQîfJeÆ;åå§#L¤)®%ŠèKÿãý„ì §QÖyë*SØ.%’‚Žít,ôJ¥þ\XŒ"Ãn¶®;? gl‚›ÒÏO`ÔPrG@vyÅ¢n€OL®ÂÔÿŠ^@«Ämm9»xÞt¿í÷·3ê‹;qUƒa‚”# ËñN²4Î vSŒÐ_+Á“ŠŽ0ƒ˜Ós䯴ޡlÝœpG¥Ÿ#(‹’.¸-æUù© gC²SA÷¢éÒæ¬‡§æbš"ˆÜy~ŽW÷ëØîU8Žú«VˆV×Âõ±&µœïÚŸ‡¶-±‚GãgÊæÂå¯t¤ük•Ó´;‡³H–•ÏišÅŠWõ9{kß¡ GF}¦-&G¢À°ïü!ï{´«Õ€±ìÒœìáÔ¸í I^j·ß؊ļ‚ÉM5œßrÁ;5¡§*†¸²02Zžî9N{ª;2Zå«&–¹Ü9Å 4ª½Ûek:ã£Ãe²Î›ÕÏ•P Q¬G=>”µkøpÉÍ’8º5ü‰XCkwé>nÝÇÃ,NÇDûSH’èv©-Ë~—•6*y2ûçhEŒ‚éŸu«¬n%×Y8˜eD—ŽÐ*?'[,:xY¾HbôotZÿPñ…œ—ʘðˆ¤îóƒÝ>è°Æ sŠ;Öâ”_cÜe``©FcGNžg5å;œäBA¥çô¹¿6c ×Ó鯀\?ܾýîUüÜbÏDâ€ìkZºÖ.ƽ+™0cóÿˉh¡ŒÌã%1I­Éâb"¼ø .Z¢È2¢—ÛEÇp`æý>-x ]ùCRe/áÁï´oÇ:»l®:èûfŒè\z¥WjùŽðg¯z¬)ü n¡âºÓ]&X#=ÍŽüŒÀßSäߟœ]œ„o¯dIÉ• =eÁàÂÃáwG§o1jHo…B¾FXByî4·‹ Q<\vÊ·³9ÐnÂ?0ØuHoBÛP·#Æ‘S„ÅEªcA ÝâŽ*½ÛýFúûªDNÇ?›êƒ/Êxxœî~©GAFET>“Gó“ÄÏ÷|ð¥mzhÏsªßÂ8ÊÉ©ÛëîV»ô*’ÚðÐ÷W¨èsW3ÍŒ–=yæ‘Ók¹q{]ú*.¬¢c›ÂqB°Á3(]غ'ߊÌ=;{ ¦º·o0œ­ÇÒé„KúÞÁÛn›î-}m “'¡²wFˆ¼Y™'¥•+Òí„>v`£Ù ­{J%˜¿4r¬ˆ–‹ 1Üñ1p‹Øe¸Æ,leÜ^pN_묓$œ† )‚Lµ£Å…î-Ù|UK¤ÎZ¨ý)„eójb‡|l&Y±ƒîZp±«[h:}²+Æ=?Ú>s•7X¬ÖÆÙüî"b=`/GÕ=²òtiøûÔI|Ãýè³Í\¬]l¨Ð±vŒ;p4ÈçUÎüûõR*ïuC=££äË}ÒvD@êŒU˜ŒïîØÛ/;ù¾h0^¼ íuÇ~ù{g…cô:Z˜Z†1÷ë-MÎJ]avc¶á q( `¦ ¤}áóúcR\ É×ÅbK¤ ‚éªF†³óe¡*ñ4Õe²'‚bUW™GœOOš¯ Þ0;aÉwR–¬KtE˜wD|Fv²¥!­•ÛŒ=žÉ¶–ѨkªKœ‹Âqø08{M;ŒÝ#´š©Ïº‹\ÑŠH:Ô¬¾lga›©AcõŸÌ Žî4JCUK1‡ ¿Ъîp5õòœ¤ÇTÅU¬ñ熸ÕKbw†Ôâײï@ù5œo]˜FêîSÍo‹jp—íeמ ´²mî&^.úö4u&|}°|$FßOšN÷“žãl•ЯßöŽ'yÓœ íæ°¦\în$Ÿµe‰Åé·kâÔ4ù؃]ÙÌÝÂÅ¡ˆ?»Œd- ƒépÓ]}-C67<óÖûLƒˆ‹öÄsÅz´¡‹¦‰Ì×ö+81Õ½Ë †ËÛ/Œ90:SÈ;ÐpŽ__Ln‘…׫}wïż)¦=¡$“\”.(­s'JÚ£§›°ÇãEê9§ad–›O=ãÂTI"î”ÒùÞ¢ÍXŒ–É“`ÓÀçàpO7RðW‹{˜¾ÛVÔvùÕ»p*×ZS|ã'˜ò3ÇŽÓƒñö¢U(bî£? ·#ÌŒ˜Ü׺rEœâµÀ}~Só÷QB~%}¦BèØ{›4ô%ŽiT¶ÝØ>Pû†ÃŽØje0ÃçÌøÆËvVÏi'N#XSêÅk8Øì$Þ‚þ¬xŽ:JcºÙŒ‡MÑñÞ ?¦^ÕgÁÉ&´îoXß½íÝÂï°»t hy$eT*q£ÇKÚDý aývÔ_>ŸÕyrµI!ö=?b–Ït¾Ãk–»¡(‘ÖaÜrR‡5_âÙIÌ?—B¬§ ây&8¨…«ÂϽ·ô4´ $臲r–ø°–ÛJLæÓW øƒ£6Ù÷mì=Plܽ ÊW_¦’°‘0œ½UiAE8²„Wä#P–óµô¨ã2=»u+‹×Oüê'#mZRÎEÙÒ×ô0T?fG«í„³äš6i¹v2uéº;äZHa¦DMm»æ4…‰¨ØÞr¹áÏY—OáHÎbÐAI§­wYÓ«åÌ­NÛ–ÝGq·$c-ÌèSU[DN8Ê‹D˜} ˜knT Bÿ¶F¯bZ7,sdØÞD¶'–'Œ»*Ñq~[Huƒ}–{f&ñ(Ñ\âïe¾âìCC«»Ew÷:ÝŽ»ÒÕõg«j‡#a[ÂÚ_FÁTÀ>DÒºû…ûk¹ã7Åry¶ã³aˆXgí^Fg_«&¢÷Œ<|r-õûPnÁp°?ßoD]Kn}†D÷ID& Aoú®|† ‹¹I«•½:?&$ŸAú€'ônÁÙ%-É?``ƃ14/Óhè)¥2)^»|›»3!8¶é‚i $ª»œ ÖN°OocÝáögÊPqø^…—>™?Ľôª“­já‰ýò Ù4 äƒãÎÃH1¦‹d¾ÍùP­Ñˆ7êþ 3“×h—(Óìeƒ ¿‚@ˆ©vÑá¾ÕüD-5‘6åäx€€e%_†Ï ë(,þqûeFÉÃ…›W–Ï·0ã&\bÃxÎïPr¶Aœ-ʉÙE8¢ƒ¨’6UŒåš¶~;Ð(Ü9ë%ªr!d½„€"ÛM7D<É€kÛíÅ rYº¤Ÿ‹Fc:ùHmJ&£ƒ5&‚öpß"ßïÕç‰,øJÓ%f½¨=ºà¸QÕÀ"WDÃÝî€g¬~ Q8΄uzÌÀ”Êkí‹ì3#:•éÄN&]ODòóßêRpžÇV¦*AF‰kV ~ªÀ¸ÅΫÊÔüš5ir<9z¥`Äö‚s­so²ß0‡S¯"CƒÑ]õ‹—H†aáú¦‚ò}kÇαV”)¢fÄ@`˜ÿâ^Ö rÍ«j—@ ã+jVχ¤€A@Å0{ü¨Ê, qcyÄ=`ÿ„r†SEü‘HÀßKÎá•yxr®iaæÓm-~r¾´`jÍRÂüô-n䊻M›S$NÕû4×õ ŠÖ k¿àKûoyFbÑC° } \nRi.%ežá üÑÄï¿ð‘è­÷HkF»´Oß«¸äx€F?sº&BÝCj.gµ‹Q'˜i|e¯9Æêz}Ëløñz£0ב^óÏ[÷°µÍoÁ Ÿ\—n[[_ÝÇG›Þ L™¾0>ÝAˆ¤¼È\ÜäÙ»¹ fIœláM;¢Æa%y;¥!ÖZBÊBa4v¨×¹}î{ó\öÀ6®ã—ù®ß j¹J)g2%råæm4«`¾S%Eà©L@°4O¥Dè~È-iðçRøRY½2óžo¼ *Ô'zÅ Ðq“‰?Š;s8ö‘ñÌÄ5?ðÓÌçË*Ú’~Ô>K; ê y宋²TK ïu9¤Å½êcLQŸé¥$,+% ’ Š™'@é(·ö 6£$zg*jšÑK'æàrµÀ-¢Üä@Ó Ï„y³ž÷%Ò®¿+Œy:ééûh—GG`Ä#“e¤Î…§Ýf¸Í@E•ýû²Å&£v°‘eúù“·S I¨mJQźÈÚ®ˆ$«1Ý Wõtuz41å@ó'´9ú|Ÿwï•hº²K6ùG‰mHöÀ±Ú¶J—VÓ ïb“‹£ ¹DšV'FŸ¢pgßÐP¹l´¼þÒ½ô6Ó.œ¤Á–Î îÄjK}8ý„l½%Zyž%þ)í&sAÞ®moEcÏTŽy¤5á× ÈÍÀ– š0½#ÃÐ+ãÁƒáª„ŒéÓSh¤Eu³¨ýPjÖt;ØoˆûYå]¹Ÿ€ó·s @Gfih8_âNÂê¶L‹¼ÏÉqqjöªS•Ì•ÒrúxGLŠ¿~NE_8Š€óYM5u°”{Sœ_%š˜@fœ››Z:ªÛ‡Ù9¤=^>Ò8ûÃÇu¨€Êé˜$ü3–ÎÂGç•«ûÝáXŒègªwLéOúƒQèž‹x+ou%ŸÞ„ ~u@±ÉH®YÈqÒWĨªs ß¿Ò}£!TÖÑÓ1õyø8&+Æ(\„(C@g%°ýš¿Ä¿Jvúý¶)ò‡Æç|Ü+NóÆA„„m*”eùù>¡Rñªð®S‹6ypÕ²oºðAkIIñ7}¦™Ô27õ_[ ¿KY+GËκ{cŒãŽX¿gf–Uªf£ŠªÎ>`2½É-j6©E 8΋øÂ™wª¼£ØZ~Ÿ Žæµè#‰•úË–s8=T“ í‡ÈQƒ¶S£ÕüoìMæþ ¯žPþ¤T%¬>+Œ^ÅC>7pŸÇó³+|Bó©>É›£ü0ØDu!õ’¥±î÷Ô¯ü”B¾¶ŽrÒð“ƒpmº¬L“ÔäúÙGÂ8„‹,;…žR!._-*ÄíÝ’r¥[`åFñ¸›14XºiþIì“Ñf¯N‹Pt%ð¨Þ…5%™3»+ÍÚ%E<±> stream xÚw4œ]×6Ñ‚D¯ÑF”eFï½E] 3Æ £w¢·Ñ;ÑE'z z¢†D ¢¾Iò¼ïó>ïÿ¯õ}ë^kîsívöÞçÚgÝÃÆ¬­Ç#AZA•‘W>^8@ASÞH  ð‚@üllú0W8ô/1Û(ʆDˆÿ‡ vEËÁ®h;M$ æð ø„ÅùDÄA ?$ö/C$J v‡Aš¼5$êBÀ¦€tòBÁlí\ÑÛük à°æð‰‰‰pÿvÈ9BQ0k0  vµƒ:¢w´ÃzHkÔÕë!8$í\]Ä@^°£ /e+ÍÉ ð€¹Út¡.P”;øU0@ ìýS/@ßæòG®‡´qõ£ ´³†"\Ðn@oÐSÕ|Ì` Bsúõü{eަ‰€{ýmþû|J†54¸þTüo¼<ÒàÃ#$ àáøøÄ„"è…ß?Ãhƒa¥úÛWaƒˆýÉݦeìþ8þNÀ?ci!Ѭ…8þ&¹Hdþáû?Sý·Ëÿá¿¢üo$ÿï„”ÝàðßjŽßúÿG v„Á½þ2@“ÖÍ=šHô þÛÔúghå‘pÈëT]Áè1CØÂÿÝD˜‹2Ì ц¹ZÛýáʹÁ¯ƒÃPm¤ ì×¥àáþK‡,kôÅá‚&äo=7ÿÜR a„ü0~!a…{ „>|èI„@=SäE ]Ñ.tq~$Šà×y €r¿D¿‘˜þ‰€V#1Ðú߈ODýDÇqù( ºþ†ÿÈÖÚ …Bëo6¡Kùþ}7@¡žPk‚¹¤µDˆý›·gÕrt<_F¥&Ù¾¦ròøÌ¡ÚÜ.ˆð^rVe<[BȽ|×M²°¦Äq,û‰é§Ïvs^xK¢Në¥ïÕÓºã_Z fǨú?lËÕö1àÓóèËnøþtö}ä€ÕŒÙ¡Æ–ãì&J¤G~æÑ«âYÛW:?6óEg£JXðªt‚'Ö Æ,¨xŠ-×*sšæ>®+Ãí‡dûžÄSÇ'“dÙn˜Ô^pøíÄ ú˜,ó??Ÿö^,×çwé¤e¥5¡aÀ:&g÷‘ÿš¬Fýѧ¤(N-,ºÈ†Áb¦Qºì,XÃÜ1'YúþÃÊ{šoOƒJ‰×ÆÃâ¬uVÙäß}ƒëe·ÓåÔŠOüä{šOà¢Ó¾ù“Ê;ºxOHº"ªP†êÕ¼éÆDœ¨ò{¿V L_õn¿•M, ZìÊ0áäUÝ} >GŠØÚ‰À±ü¨“*JÈ{çÝÆWËE¦P"¤ÿºr‹óëtŒ8̉Ho5:!ÒåÖ¹{ DªC%ªž«ŸÛÚ—3F¤ûÓzuîÞ¬¥¤9$3 šƒgoMä:iŠEš…ÃM³ÎšvkMˆ8Ýú“ôÍ@uР³€¯V4ª5rS@k|’Uµò™ˆ³Ì/«S*§¶:;# ãôªzŠrå=/¶ÅîÚEìaË,a‘&‘QP[ ©Q-z{à'?_ì§·OvR“e20ö²Ì){`¸È¶ VRqU“õœ,Œ‘G&?|ëË×…ˆ³í2ù;Î…(U½§¼G$'HoØ “îÛ·4I<º¬­Pˆ;pî™Êtï 0©|,žKÀ®Ô`ò@ ë Ò9ƒ‚|2²ýkï1[<ÔvûÃÖ—böáNR=$–(êž„hE–!œÉý~1ʲ­À³èÆaQã|\*ä“TY¥ÿ“Ö{FõùC–XîÄz7Ï<$Dé’/h<*==å®°ðïq.3cZaLª2탳‹*ùUJXn“˜|*ãdxUKܘøÈ„ô{+Ñ (°CõÎX„€Ýil+ž=Ð;¤ehÁý”‘1ë-ӭ«¬ÿÍf9‘˜‡Õy§ÆëÈ:];,b+u<úØœ8š"PöÑóIR”jÚ†„q€bº Û"x–ÓÜÙÇ·O:ø>y±_SJi}WRÂæE¶"¿¶}&:g‰{Ñ QÏÇ(ÿmâßÒ¾l-§~•¥üÒ™ [#ûäCq¸Eǹ5ÆÂ,ɉ¼¸¿ˆ&‘ç°ƒ¦#Ÿ¿Úqê†ã“øšA¨"ÞiÛ¤¾äP5H¨"Ô’q*H»ÿÕ×{® l‡Jå|ãÈ,@Hùì;Q§ŒrѨ:Ñpe=`Èò´ ʈOé‘”ôÒ¸rÚ[]È`#âÒæõFŸ-v‘R¿·§À¥§-uÿN§j%còOlÍZFéYIoäöÎr›e ut¾’Ýíl7º¹aEÝ…ˆÜŠ4(rÌóÀTæêà'*¬¥›OõîýÈy¹Fº\M“Çh{bUt*'žð™SPô$çƒ÷ó÷ÒªÙ Žâ«ÙF ¸sáÊÍC-±KEDQØÏŽlØdò‚>ßšô–q† È”®dñ°ó=Q¯ƒÓ¥«oqŒïQíL^ Eã8uEpoઽYŽZD [F5:%3îN¥ LwŒB>ÆlN/âÅ^5Y@>?˜“(-+ºu Ëœ!ieaÚQ>(²n¸adè¾bå‹¶&Š£únœ¢~X\!Y66O,%å«Wχ^®d’r’z <Á_˜Æ86Ÿ†X?ê®×¨ê뙨äa÷B "?]-;¿}L·D;òZ4üü‰è1søÔëò93EZÜ2&(ÕÄ|M=MŠwkpBB¿¿´umŽÑèÕ .Ù‘c)F§=UøÂ|!‚ôãxs™ýy2;oB‡r¬/†¶¹Ec”ˆ2Rç(Ò]à³x0ÿ­ ò­ETê#½h"Jæ½,Æ ¡¾FÕ¬ôúÌ=w„åœM`\Ðʾ'ùDsçAÆ®ð8Ÿ ^:rÿ!´JÁ,<è`b_‡tËa ôýÊùÓ¦ô!Sû'ìBn% ¢Óú^ð×3Z:îµ» ‰•1±k„yár¹vI×ýO¯VéKãêtᶘC'Æ·ìbÓ¨Á“ýñ)ä5moaläøÔW'œùÍŽ–º£gŠ[“áä%ÚÃI^ß«"•í¤X­µîY´Søž]Ä;*¸®lí«”ÂÓõólM¨äÎc¹{œº‘§ yÉZte>ÈÊ>KRz°±JÞ%6‡‡KÈe!ÆöÆäƒ1׋5C‰×@µûnoG÷Ó%޾d cMô)Úªzн¾O‡òx×GmG^¦KS9E•׸ä¯n—©»e1´Û#(Ø>²â)¢™M1“ðÜaFcl÷kÿqtGjöú>S?Ûœûcç9}®dJì­w8’ÄŒë¸Õ©síˆÚÑlÜÖc®8m2G,·=¯íi²h<,kù„‰ßûºª¦”ö‹ÂíPMB»5QF§šÜø¬CƒÛ÷=Èy qn=§ÊÈX lM›…&=a‘”m;pÃb©üâÅ'¹RzñÇ¥c8áã`põ+Ée"a/»SÖV›î}·7…YÎÁ'AlOgQ„f3}ƒ¥WNË,¥îgš™ÕÓ¥Ú‰OüÄów©ûlïÝ¡{ýÒ^w΄Û3£¡w 5ª,ª#É¡|dù¹ËoÀ°cÙjT@Ì ¤¸¦ŽjŸÐÑwö„Ö¶ÙŒÜ_§-{€ÐˆQ€⪠‰±{E͇@©/,Òß?^¿®§›ºlUm™e7-ݳÐ.i<.£R_Ž»žR)€ü¨•å*y•3s•Kþ#¦&<Þ4CÔ©þÄñhœÅ=(ÅÒŒ­Q~€w|½n)Ìó6¬’+ÖZeèúqÉgÁGšèvÚKNÖ«oÙÒæK_}ÞVáŸ=US;3õͯþþO¤¶9Vª éx×È.Q<Á·ÜÇ œíL\?ŒùšÙê!BæuwåJu9–¦x±"/8Ú·ñÒ¥GÒï6¹ ³awpžš‚¢Ø§’zçu¯q°…Òë›75«Öê“ÍþxžÌ#>t¦ÃªÔyÜýõÃÖԷ鬀1Z‘íŸT.s{ÄÝÆ˜u„ÓDšd"9•>ÿ8$âNŨÿbâ4.×Ѷf[ô´c¢$ÿ‰ÏäÉÄf^ú®|¸š>Õ¨>ñþìó–omÄí–´¯C ½#.ßF¡JLæ‚êËoºûdõúŽ)p53’á Â«ÄB ª­xM9EqïDòî'WüO»+”*HûÉ…&ðU¼5¨¬a± oWŠ7UvXÂ}IíÀ‰¬@â¾Yߊ•¸¯O¹V“dGþ=ûôú©”ÝU͵÷Tß1£ÑŸäÑ>58àõ÷'öŒÕ—ùªm“A_È1ôéj¼â'™ù+±*Íõãµ%HTnG÷¸¼W¸cöQ„™ª×ô¨µiãt¹dx“3g<|[z×Ða4ÏVÃeù.Ð &“é-Àƒ±ßci%z[›èñKø0d›qØu¼7µ¨íPö²(?_êQðQ‰ÉÙ‰q;é-cõ!6ÃËÆ¥‚k¸öª%îùvÒ™–Ût|P¾»®K»¬-í3ƒ~*šo•LìœHìYvÈô.:ÎeŸ’ ³_^„öÞ÷¸{N™MÈ' t“±–D´í¿°j‘|X.”Øo¶åº¥­p¢¿>6„äÒðŒTMJ>=§¿Æ`hšÇ3ˆ¾]B†ŸÓdß 3lâÅ˲ì. _¥Î3§³2†Ó<8Ÿ,N›½´Ü½´‚º"Éð‰w™ò1O%À?ì],È»ŸŸ%wâ8ùŠíoÞ£ÛÈIÏXaBzÒI´÷æµ$p¦ö†d¿jM§wOóÉ›J¨ÒÊ %«Ÿ}Ÿ{Yz4(êM0«(×Ò&=ä¶îÌϪ>:Äù¹¥GîXþÞu'†’€Ìd¬†ü«zÍY±eªàD­áœÆ]§—I~5¤ßÌqxFÞÙP,îL½¯S£˜ð€Æ;˜“ªk)¹<,ÈE M4~Q§Âb×C£5ç·YËH»HËÜôM+¡À4Ť@{ôÞ—µ»y•Þ(EŸ¡Í>• ³ôÖǯ¨Í ÄSvµ†iâÉØÅQônÕeUŒ£!›óEðÄzåCšòB™S7. 8q$ªµ­µ.Hª'¯l‘ñ#[¹UßV¹.(•–û;t§Dàûpn,–UÁ*ÉÇ휟¼¸GI¦¥$°‡ƒíJZ#>0kSºCDÒóØûÖ9-{’àáFƒÝGë-¡g3ªo©ˆù²&z:GG ×dáÖºP¶?»©91p!Ûe„šœK|7Û3ŽšxÈ8Tw Ù»SgúhtmÇFÅ óri øäu V®—K…'ž©psw±`×pã475U^/¸Ku†G1{D*ƒcw-BÉɤÃÚȳìŒ_J#øáüeÇÜÄó}†ÿɽÁæ+9Šv6‡­èæÐb3ôö'Î &'ª‡éŠO¿ÔHªEשUS½=Q°Šm~0ß .qœìܺ¦ÿl™k¬´7"QÐ Ð+ó$<Ÿ×çÈ0õÍ{2Ñ2¾CM›¾|ããÏfÝzÔª‡ñ,’÷K´dTÓÔÌ.ÍBZøaæ6¶Ù1ŶkŋȻvçõϘ•Ô©*ÈB*í£}s¸ö‹F«§WžŸª™l¦JŸùìbZ0¸1)'ÚsÐtil bxóLàˆQ޳eí Ãþ2⬰ð8LþåT¹Á–E°áZ÷×ÙðÜã4Iþf…]LxÀãç=è´ '^1D,Šö/ï> Óq*´øª×ˆšÄ=Û‡> L1((§ê|^<Éé8ŽuyŠZ²Å´ŒÞp+¹~™Å»ÆÙi|'€€‚:t"¢slï»\ž>†±ZC—úX 9©9ªö4¹ ‹ôËÀÕKŸÂ9#ÄH{±õqß|[áLâî9õ÷Ô(*³¾šqòùýg“R8ÃâNâ›õB<ƒ¢¹cóÐýÇü=°Ÿ7]î*¦Cv2øóŒ+¸jæ2cÁç£=›qs,u¼ðGƒv‰7¯oõj‚çïp‘YôÆ8¯”MŽy/T€XÅ€c£qÍ„œ¡OLˆGòÕZ—’³ìÄÁyyÒl¥ë [ëˆLr¤ø9 ã鯧dJ{8%ôdf‚4¼mqBÁ¿½>ÔûúšfUAæÊöbX]Èâ:ê_“+OSµ6¸¾·Ç\žé—8¹•|o‹±"+ÙI•ä­Êý]ƒÉáÃíÎÙz5ÙÊÏÓ7n-caß^¬[fcG(-¹­pJ醥öý…ÁWGÑWECr񴌱 \ø’ eGrHŒ±rp.Úñà†ë†^š.ï4I› 75±/ï`÷9]0) «äöç×.DÚ,°kU~–šÉÔëçÑ9Eiß19‰ nçözÓð}³:/#~<€SÈ vÒª‹rÍïþ~šM™’!¤×Þ5ûéA‰h8þuKØ”¯ÙáUp]Pšq¼Öø 4$yªbfBh'°¼q<šB (h}¨ÀB§ö¼L5c§¿5{]ÃÕè>6nôÓÇL˜³‡³å¤nu`£sz©MÖÁTù~¬N(|Ç®Æò¼ÚÀÔ˜‘l½O­ïa‹ ¾Æiû£¬_¬¶ð¸ÝCšYZApMÆ‘¸ÍëÌ84@4»Ù©îÛD&z¤ËÇ|,ÝËx40X3"ŽÉ¾‘°‹‡ßШ~^äPþyù­3þ•]ö óPh¦Buz}í3Á!ÉÙ®ˆåž ˆóËðÔ(•}ÜDBO·GÓ%˜éð5ý¶t´ä-‹Í,^±¹œ „Pft,CÜð!—1†½Î1]+œàã'á£2í¨Wl4Éy!yžïÆ“Úö€lê4pªìá~-e)ç{F…¯áâ+}Š §=Û¼Õ‚oˆÃ/:=:x¬™1¦=5cV^¤š³s(T\Q3ÙGKäÜÔ³»š“öõDØ;ÓÎ_š(¤†‘v“ŠH÷Ðí&s(Q›Ó“èÜUª›QÄ“(¦Œ»ÏN>MS– eþ€¢ã0¤í8+ž¥äg~Ybýì1†.wDZaöÏ/PùIF•Ô˜Ù¶»Íx˜)dM/oüäç䲕ž™Pâ‡Óöó ;;ˆ§N:”ÚúJ¡’P‚<ÔU”cKó÷Þ€<þŽÄ춦Fìn–:‰Éë7 ½t—Â5‚D¬øtqäõFRÃ>?c@§žðÇþ˜3…‘ŸJµœ’$ eMúËÀ5ØðU§·“/ÝʤIªˆ›[é˜Ö% kL0Åe™ôv8fÆ='†EÈR‡È2-‡â°j~ãV ñ&qaª.E`ÃÕJ+¬àɉmìgis ÙÈd\ò‘óÉí¼ eºA!ó£o8Z,|Êf4ºr¤ÝIâö–gMÁ³EM¬„x;l3 8ýQ»pMN©N¯‘ŠC*í Û‰Í/\Ò³¯î¯ HZñ±ø2ŒèÊœºYÝ!fM¬?©Òê4ÉhKú¡ð`ýZ»qG¹ëÎÀé‹]ò®Ê»ïÝî#K¢½Ò^F=³['L#] ˆóW+¦7(–}‹™œí1sƒ9ˆEÍ“WŒùˆdÿ™¥w@.ysõaøzŸ‡NÔ¤:ÑwI²5­öòî7¼\äð]vú†S19` ÒC£¨³·‹r³6¼KÕ\~˜ï;O¿\Qº!*²¡©|á·¼Uò=;W3@ŽV¼†m<`È…L€£0³ÃÝê¨ß$ç@ùûÝa@VËÌ^©t4uÙØ*/¹¯b<¹}y ³àÜP£Ä¨°y$½ÿÌß=)¾Òw‘k…ºÏz™;™cUæó""ÞIXÍ\èá3Z¾©iz¾i÷ºçÇ.~¶x÷ÏNY6-,¶¾…ãï›a¶ü‹çvŒßFnGêMùòd÷ÐI¿qShö¦«ÐÂØ:Ù¨¸Ht`Ø®?K{Æ8fO¿ðc@¥Í@v&À"Æ“]ÜtDÊÓ”Rá ¾ãRm\!_M½Oö‘Ó¸fÇáì¥òv<âÛö…òqUn´/cIòj_¾Ì<ëM¡Bt¹8Ë`_rQ›žâLÞNO‰(”…?äeÜåƒç:¸^yàJ¢Öî€EÕßõw5|’5òý–«z¿ü ²–N:ñÈâxêusG!Ð0Î( d2¶s…§z,oõé¤^²y×FÝ?,ìduФ+úx‹–ÈnOéêÙî56ç>Ì÷Ÿý(Äñ0ñ¾ä=© #kÒ…îæc‘Ÿ‚Çb=´Jä*[ãªÿ8%Î endstream endobj 182 0 obj << /Length1 1839 /Length2 8483 /Length3 0 /Length 9605 /Filter /FlateDecode >> stream xÚwT”]¸5ÝÝ 1€twwIwç 1ÃÐÝRÒ (Ý!- (HKJ()¨4Â~~yÿµî]³ÖÌ{öÞOó<ç]ÃD¯£Ï%gµ)C!p.>n^q€‚¦’ /€—W€›——‹‰É wý‰c1`ž`(Dü ¿Çð{¡&Pórð ø„ÅùDÄyyü¼¼b ¡0q€"ÐlÐä¨A! O,&¨» ìè¿óç#€ÕŽ À'&&ÂùË ç‚퀀&îr»htèCíÀ ¸ß¿\°J:Ááîâ<<>>>Ü@7On(ÌQšà†;ô@ž ˜7Èð³d€Ð ô»4n,&€ØóBê÷Â@€{Àl‚xÞ›xAìA0À}t€¾ª@ÛùC¬ñ‡€ð{s|Ü|¹ûmýÓòËhgusBüÀG€ØÐVÖà†ûÂ9@ˆýO!ÐÕzoô‚]¶÷‚_©Êrºà}…¿ëó´ƒÝážÜž`ן5òüts¿ÍJ{¨›÷Äú™Ÿ"²»ßw?žß‡ëú@þ\9€!ö?˰÷rç1„€=¼@ªŠ¿5÷Öߘ#âã€< _;'žŸ üÜA¿H¾Ÿð} AîPw€Ã}  °èþ+Àè Àa^  €ÿ^aññìÁvp€-È ÁúÛû= røc}þ0°/Àœ÷¾ýø¼??=YÞw˜=âê÷·ü×óè*˜è(pü.ù/R^ê àâpñ‹ óø…""ü€ ;Ò‚'òcUˆ öG¾÷õgÎÞ¿›€õ÷„°þíK zߺ ëßnÁ+ÄkwÿÅ÷î÷_&ÿ¿6ÿéåíôÿf¤ìåêú‹gýCð?x ØÕï·â¾u½à÷c  ½È¥Æ ?fWdörû/« ÞƒÄÑõ¯{*ƒ}Aö:`¸ÓónøsÖ\ÁÔüóvpññòþ‡»0;—ûÄó¾-Q ûùùwH%ˆÔþç ñ €0Ðëþ˜ïWB€¾û‰´ùþjd7 ¿7Ü—p€Â°~ž©0?€Ç´ÝËî‰_ÿŸ ìn?'® ø?hÿМòß¼à?x/÷ÿ ý‹ü·© ïoò§<ØÑñ/Fô„-øoœ_øßÄߌпLþŽ!üÏn÷×ô_ÿtwÿ û ÿJõŸ±Åî#8á>`{Ð_ؽs÷ûkòß<ù~ãÿÉ轅§—›Û¯7 äû­ºŸy8ØÕô¯b÷¨ä^lötwúýíIà7ñ——uŠì>>ü×4ß·ÑŸë_÷óýéƒì°ç v‘ÎM‘Ý r|¸¶'¤Þ3mç°q,Âz¼®ðÐ3ÙêóÃ×`gr™£Ë›J¬§²Kt?ö;ZÐc:ëv]ÞX§éMmwa-L’ ¿+Û—k¢Á¤æ2Ý üáhæ‚ÜØ§ÆTìá%ЧSJ|áóJÅ·y¨êÃÛè¹mÝzau웪i®$ÃD‹°ç3L%¶³ hp. v¢c_ü™Ó³÷DEïîèÔÒ8°‚’ÊÌÖù“/gýWj ø=_R>¤4£ A>%z;Å ÿ9K|> ¢|õé }²ƒûŠŒù™AÜÅ+ŸEˆLGÀ÷uÜœ»N~T>ó@Ê›1ŽûÖŠq¬"öô«OÑþƒÓM{utjähf SƒFï\·Q@7š’H§JðZ G¸€ùPyT®H¢ÀP™8³—V‰¥ü¦ˆ»lâÖûz€•èc,’ˆ‚*ž²6ª‹›Ò3—°ÇþÕOØEÊM¼¼}r_á&>_Œ¾pdžK¨1¼9"áP¬5–+Z_›i¦=¤Ù™Õ)ð•xÊd + ”-[GD¿K.",QAϬ[=Üv¸RŒÜ]¸ ðÎPÖü^zrñ±!/¸æjúžO®wÍÇ‘™˜[R¾ÖýÛWûª8nj&.T˜.(É$³»CB|¤Š…I±«ÃæoŒ¡î®›V¬‡_$H§}Â7$h›,`V¹‡šæ"Ñ>ù”ŒÌoÈ>F¶Ë®dQ%:̸ê#*õkkb[µñR}J(—9…î=`B?…dm§02ÝP°ièÔ×ñ“ž°}n}@a™ 1✹:'¦Žèq6Ÿ!}Ô4Ól¥™îl+Z>®² ?5“ßÎe½ø Þ(wÈçêk5×ÁT)cë½B±Æú’´î¯7Õ»Ã2Fç,'g¡Œ6÷ýªÿù£¨Ê¿‡Ù¥a¨8-¹y}ÇEòÐO?mHGøKSíôà‹kMå{s-}õ~ºÎvc`ðT‘¦KU#¨¨ÍƒºácÅ[ßyéó3/¼ žÔ:æ]ñ‰})WËYÚƒ'SPñöö–˜½2¥Ç µàÏÍS䬲Þý8Ã1ÏæÁßVÒ—x}¢·›$‘Ç0,Ì:TÙ¬þ@F~\ZÂщ­wGØñS ¢[I·òR2\–|ç8º€•˜Nr 16)ïA G4[ЬÎð›~æÊF{Ú,7»›5ÆMU<§¦¶ÏƒÛÊg Õk®XýfšÂEœH:ÈÖ§·åvt±~ÞI‚¼u×û–ÞÚ12'+ fDïâÆ´UêX-Ä–}F¯£têÝS¾Ý¢vÚìõ€kPX·øßh¡R"ú;”—~­O”ëK3—I ¹» Êy/¢õmˆ ~ÊVfU­¤Êjµœ®iŽ¿˜îy±oàPaÞ»ß÷àÿÊn@ñ26Œ@aŽ¿®Ïô›ÝG…¡²Ôò¡ÚZ¤K‡íä—Þo µGŽòŽ‹V‘Ú$eÆ5ØQ½ê+ŽŸšÁ^ÇŸƒ¤œ]juD¥Îg^Õ<£;÷¨à[Ðç~3WÊ‘ÒÍû:.Drãü¹eÛ[ïº97t³ó£òâQœ¼zºk©c#'S|f½Û€ZzþËÝŸYöµ`Â4£)¶IÅ.eÖK•S›» ·dEä/+©Æ7öY^ÊÆRò “n´àkª¯¤†ZŸ][/¾R®ôÉ!Û"ŽÅóšUÈl••àÚÏm÷ ñ«eÕmI_DôÞcÄM¨×ˆ$n ä̧¤bL-÷H¼nø|PËa.˜*ÿ:³ÃC0XB¤¸Y „e,ƒ¤ÞÅ:­1úm QlÙ¥µ'â¡ïj˜÷¸RX#xyÛ+Ž\hÐIÌÊ겖})WX¤|£ûC}­Äcyâ='"ýQãs™”ô´Y»¬'Ôh¯.6 œ7£­±NñþŠ)=“2`Öo%Iò†A«nÏ|ùvðK¾9.dÎ3 T¸aÉ¥¸Íõ5'ßÎl¥0ô°p³@ÕRq!g¸ºŠ¥4%2mâË™¢JŒ>Ú+݇ӡf#ûÐ…%ï>]4£3(îö9Îò‘¬“AgPx8D¿Õ…mH/›ô„#Q™äsÔ½›Ük¨=›Žêëíw ¯6!Ôì_>À+ g%z G öM|õù»]G•Í#»´-o†|ŽIdúÇÍddW &—ϸŒá‰¹Þ ˜á/˜>hV È¥ ÏEk„D½fêÌ´L¢P¼n²‘Ø‘VÝïnÞy:¼íØFŸ_¢ þ¼0˜u˜q$w¥ð‡ ûeѯ”Î[‹PÉú%PX¯Ç9TËnä=ñ^øXkö£Þ[K¾É2¢œä˜ÛïøÔX`ðS( 6ñõCb‰»ó¦7–ÕÉ6Åô`¾“€›¦F³È~à7„šH#}Nïzáå¡Ü#@·‡›L$‹ÒSÓÙ Bú>e͸0`İIôU>~…Wšƒ  ÐŒfÉŽ®Ëµôù´Zxš§ WU˜ÉâlY"u}­.‹úæHInPª¬qBü¦ö pxšÃÈdÔ|ó™-ç p‘½#ž"}\X,Û,¾Ár¬¬«;6"°Þ†vì YÜûDùs©ÏÂŒŸmx’†.ŽvŽg‹kYÛ»Qyˆ°_Ö/¤2!\ `ÙÉ8y‡8?õúò¢optÂzÌ7OýG%ÍN¡ÉÜpÛy‡Nªcݶõà±Ò¦é½Ø@ y°:»Óqð> ^u€õ4³íb¡L’z †þðÐA/õñÈ««¦%¬x´’Â>16#]ò‹Žï°IWãýP²îNc^JÔ¡ ×…Í2’´ÈÛÖGw «f/3º‚[¾|ök~L¾ˆñðF¼&Ù§Ì‹› ‹ß‘ ñIþhÎJ|È KQÝŠšÂ­\Ÿ'MLܶD£Y¢hèçDVþv.Þð¨d!}ÎÕW9ë‘~È)˜úuUüKJñLÓÍï?";¿ª4#ú"Ä›!èó™o½jÃ4a¨ Œ4X#m½·ï{ÑHêÐ, Ÿ?¬«÷Ö@1À~FI”ÙgA¸šJéǃ°»ümÏÈcjìof÷1X(ˆþó²ÎŽf­VL ¥ôªäYl#÷'©ûnß¾sman¼)ÎŒIz°E®Ó2“X+–:K֨˻™LKÄÉSÊÑh¼<éjÛSVDä G)Z0&Ji”(Cj i!ahÝ¿­‘2t€íl ]Œr¤)}C;z7Í^xÑ×팙ë˜&Qæ`õsX'>r2SDÀA8¶ëÈêä=f8ÜéÂñzZ`ϙ橳TáÀæx$ޤ¢­îš‰ºµó²S¿Ôê8ãt:“NoÖ!õ íViÀ"¯î®ŒØÀà]i˜ýFB|û‹¹î‰Þûm±jûÞèKŸ—™c–ŸÀ>Äs”E¨ùtz~42ÚçhÙ/µ¾y)S#þ´A>0ûf/ëËÌh¸O·œ—×kéƒ!EK‘λýÑcûƒ€Ç—µÓ”›ÆpÒ¯šîÄÑÅà¥0Vâ’s Nr\w3KÑö¾ÁÒŽZ;Wk%ªƒ…›—/&BU\Îϼoìh#Ú«Í•²4!bÏOžƒEèÞèu—ßG†N«Î×í5Åh_¾‡P±wé4Zz©“‘ò×ãm×"«wå;}QðA8g²|zNÚΨQdQ—ç9ãò~v>x9þdxÃcÎPkëû÷æeR‡v‰Z03 31‚IÜwß*…SãÞzFÊ]ã2¢ú¸nÝNÐQrn·‹|ëƒü^ç¥Ù¾E’<)mu”Sx¬-ŸRéiq$©½ñOÕ@<Ò"¸µÝ P*~ÊCÁ 3´‡eicÝHVi @Õ¡E´Øøî““ÏF!Æ$VLHþ-Ï>R_8d†Ò$I&(:‘c³PcÔ´B핟,ßåØg<:À>«S€aÕÍ$¨‰Ò­úS™Ç~+‡&~††á‘•Ì€3N¾QPøY?ÖŽ+–v‹«-«²©è¸ áÕZã¡`÷.H¡É²B²±)ÄV6àíh™"·~,t"ô噯Óáálž•O}ƒCÄÚê@re1(#ß' ͱZD°Ë_ ·âS›n½œ´Òó¦µìÊ ¶k]ÌM«N-úóµ>óµ*Бۘ½[ ®Ù¹(T/ Cõ‚§ëߥ٘E¬«èÙÐd: <êÜ(˜g™©ëáÚT-‡¹p´W¯Rn¬:ntˆ,C×»ié yÅ¥ª9N¢ N‡î®? ¸dHü„¤…q‚¾¢öei{÷ä*ò÷õI:¨ù™±wc·j~7Gꈩó„a‹†=Glëc¯Œî7寂ÝtKh=UN4'l'ÙöôLù7^I×ùñÛÇI¡¼ˆ˜ ì2ÄÏð+²ÔqJ&ך›¬žâ#~ë:øefJìxÔÔ ™Ü¢7ò‘'h¯뻵ÉèÂÄVWï>Ì‹EnÍÝ DÌñ†ÊÆ]Ú#`üÕD¥[ØþKìy¯A:nß Y57›8æ#<ãôä*ß ã¢tôð‹uLÔ€³U×΋9¤ âGªmöT\{ëvFÆ09£*äyj¯€¿„2 ¸QE€ò<(•Ç7k}R±ˆÚDO­½¥Ë’0Ö¨1q&›ƒS¹ÀMoè;ù5¤ç,e(5Q®è±Ó¨þl-¹ÐKl÷eÜ#oBQR| ÐZŸ@¸¡aÛÃ-Ð}ri·u‹Ê´äkY='RWÛÿ 瘼gxØ–£ç]„ûÁlI|6iÐ5-¹÷Ì*ì2ïO€Gÿ†vc˜ø iöÙ‘ Û“v{º&º¦ý«q‚ŽôÛ9œ}>ÁÓ“ë¸vO`/Ê\õ~MëÈ)öd£-Ý5Y^ ?¾V$Z0µÒ`ú)æ'–à”0$³gç´X˜EIg‡EbŠò)1J;‘ çÕ]Ñér~¯jQv–EÛUk§ß,=YÊgV÷‘Y5ž·aó ,:{ÇøwŠŸ¦žÝÛmϨ‹ßÉ~ 2Glvª`z††¸ÔÚñV»½Jœ“¾=ý‡!I”ÂCö%'s•°&DÁ¤ÏÚÑß{9Êüg 3LJëéqŠ3Žšh0õ™’–¦Ž*ÆÙW×rš¯¢ÝÔÔÕÅ(—ì—…Å:¾1± Ÿlìë/£„ŠÄdZEÖßu;1y‹²ÀÉÐW iåIÊ[Êu‡2™#®”ï܇fÊ?ÌpŠ'lïg·í+w¼S. Ëyü’K·Lɸ{RQ©ÉJȳ‘ÛM‘@7r%¾¦QüúáJGŒ}·Ö8#¤0ï 5tµÎж/ßÂR©ÂÛ=pPFÃÚT–¬]W6s QNŠ‹÷ÍgóçÛ¸$µ¼õAÇä. :¶ eÈo`Rǰ E Šõ+ž[Ò¨}ÚB",q‡;Ŧ)d伎ÉKÇzUK5£Bú·ÍàE cüJ‚¹&K$Õ¤‹¶ýªÔÈ{RÛŸ‡4n(Soذ5-{ß³s®Qæ6–}ÊM4bãKù•c8ü1¿‡™8Šófã³]¸±&EOƒz•İhýð3¹|Ïf ¨GEg²‘3ª.€ \'à–Žðrú픂…dP*Q‰‘}ËØÈ§§Xu]GWtŸ"ôûædé™õ0ά …­æa™ø:d;w¬wŠ[Ǧɘw|Š…ÿ[4ïÎÜ2„÷µ+·%(ÁõÉdxÈ!Íå Í}iv¶ÞÛÊk.zãOÚf'¶9ksm\6˜rT½l7‹[½¥/ {ÊUTÜqqø²L{Ãé3ýä«ëcW2íݼ:Ëþ€ çT¬—Ù™±ÖqîÛ{RfÚy#¬_8ª~Øì?ÂÄê ÎÍŸ¢±wÂxÔ7Wmiô¯ev&ò Ÿ¿”pR‘uÂØ|‡®‚e È`mÅ=ð/.R¿@©ŸKúÜOX%`FŸ@#ý=Yãyšñ<Où¹D]¸O)ïê–]_óg¹¬†Œåðƒñe B»°.% ÄfŽ$lAß ï J%ÖòÓ¦9)îaN´X™ÅAÛ@ñNÕ RqG‚”wÈ×W–]EeG[)WÊ××ÚÔ;˜>cþ)’ê‡ÏL¬°&ƒñ>2§˜>ºä¡¦­¦¿¿öR~wPµ9€ø ¿)Äœn|ˆ [5é| ’³mr€¼çKî]ÔåUã˜Á€G«~üÁݳGÏkßõ/sÏ]º§ö¶Ý!ž½ãyüj ‡ŸlÍŧp¢Ð0¨¬”à=4Ñ: IK0µOÖ+}«hݽ,¾s~_QßñFcôIïò<9ÑÕ>á{ÿÇ/ 4Oà*G¶B:7>œÜ=)ŒŽ]hÕQ‰·“Êâ‹/ˆ{ËË©µ·SÅ”^;ÄŒÄ>reÙɦ“)ú¤Z\Tš¶>c3YtɉüðSÞ[JWiÒdêŠs×<·EI¢-݈;èiª· ™*7~Æ’G±vE[hBôÇÊú³êO<—ƒ«¹ð1—Z<ÈŠ !cáüÜ« ¬Ë3aÜ=á•=ñ³I~+YE”–õI"–^ÌéxÒY)îs§Èe•s%zÙk™ÈîµR¤s+S¼í½Ê´.zñE–ø²œJÇ…ÔÌ~Ç“D«´¶q[Uµ‡?¨Ý[©Éww»¶j°­:·¥Y›¥[ˆ_8k®%û†ÀÆ×Héè"æÀåÚ¸¯—Ë$Ç2’¡Õ gŒeÑ)äšT­ZQQ‚p.eÿ¨¼Á¶ÝÇI×Ä1MN}CàËש/Q[Âm.¥2úÅ‹”Šï:Û«E@:QäV™ÏtÓžç{…MbíFí{R9ªR]´HŠ®±!ÆÈp’Û¤pi8tFÉ”ñΰ‹ß=þ0¯~R×Í †Ø Mº ‰¬˜x"…l¡ÄX‘ ϨD»É*RªÂ…æfŽ–—¢ÀéòNãM]L­)ƒð9ŸTmŒï*°ohw¥WbÙ×ZË@CºÞûL34VëƒÇ½æ» q¼6 ÚŠW4döÉ‚ XÇšœŠpTyÎf€˜ëû¾øXÒu‚¬|,Ù³ÞöSí ÂÙýYãe3¢ÿû'o†ÅqN²`,``!\„(K0š @žÜ͘N¼Ë¹Ú¡šßL poÀšéŽà–I%õ8ú^™7ÑÅÀïÜÒæŸ¬g£N˱,Ͱ8.ɵå”"éí"RÆ9ú8]Ho?°ÿsÉŸÚŒ”“lº>"s]¡Ùt,²Õ¨—Fš¥æÜ±‰UÄ^>m–_/¡¬5jëß…Z›SªN*§œ„.q9G»àè ëu¤Y„Ò}>"¬q èQ¸â:x öÞoÁbnžß¬ðî‚-¾Õ“}<„$²¡¢‹ѨÑ8&ë¢.îC/Ÿ(ˆA¦”ÙwVß³\s>‹î;W™qö]•Ä y©WÞ:9s˜‡c¤¢$m˜¾¨ qϪÄ>óØpᡆž$w4N}­Ü¹l<6‘Ïv,û’wh9‚Éó݆}Z7Y*ðn×D™›;e†·ì‘^·%æTþÌû÷[g*Ë1oÈŸ ,'1Ž?ñ^ŽÆNbªtôµ‹Ü|%ÚÏkY GLÍúv{­²ÏwAáÑrí~€Ë§](ا""³—)ú·»Áh͇oäwÒO_GTL>ÏŽ­•k¿±\@Z›ïwÑ5̶šOÍñ7r6Á|‘_aÁ#ã$̱žÁØôzt„R4])²ì¸ËÅ‘¯î¯Ìo‘µÂú¼:Ój¶¶ÿ-Ãw06Ÿ…HJ9rQUÖk8ýÎlŽ9¾5Ê…ãuò9½Mž0«Xfóôåå&»€Å'’|L¬\.‚ £ Mµ¡yHuaƒO—\òEsJŃËCDjK×ÃñÅ,j´ÌŠÃþlŽþ1N(ŠÑ^Ø+-,5>_eÏ(jù$SÇ'ÓKÛ€ÜzoÅR;Ô¼ >  Å~>¯x[Ô§„*ÿîœÅqÂ’A¹;%Šõ<ú‘GA ]_qþÅ;Ùij·FDãWùò°—³Ý"Šh&­7ü§õ¢ëóiAÔá‡ãa§› £«7Í62} _ꉽ̅}‡1.ÄÛ?¥ÑÚ’f¹­Ñä¬l¹'†«»ø¿WûÔ%4%]ÞçMÄøµ…àã3_ü<ðuGNn®£^|Ïš-"Ž€£˜YmY<×]GE­Â!N¨¨e€x¸áàVÎÄ-Û¤Pñ†4R#cÒ€ t®dë´ZÆ¥\År>àmBÀ š¼ä ÀxÈú[NRt›§®•u(•JC*¯Õ&E¹m?G&—åc_‰ÅŒ|õ¬¤ÇŸº.±ãߘ}Ç=O2Uåxå÷âá5ÝCBÂëÒR;I¬ÛÓZÓcZ¶K×8ýÞ ÏflñÓzWÕHf ¡Çj‹žË=D¼B4pYË/búù¢¨À÷ÛJÕQ_Ž=HB¼+:+é¤ÏD¯¶˜Û*™»²/ÚÝn hu Š’‚Î%%µè^$çúnˆ¥=O+}}nš&™:[ …á}ÔÆ”»&Ìp¦6ˆŽBæ‰zxâap·"¡ËÈ÷˜]É’:Ú²Ô|7K¼L ®ìV}¯œÑæ\–;†çC’ŒY&÷m·«MÅm(&r´-¼q)Žu€%{‰ŸþjwÈ7h™•F«! ¡úd¹Ûž…U«Q—ü††¹ÕÏ)ÌJï¶#Ã7€ª3Ý=ðñ×ðö5V9ý WÌ<â@Y¨£±I^õœÚÙ#¤ –Ã8ÅÖå³À$¥¦^3álÖýö‘è«ÒomöÄã_d”MBœ'ëX(ª¤Ž^Æ«èE›H°cRôôS)uŒ†•Ù¶¨Ž†±÷Ç(N¿D›oÝD˜QLP¡{áâ™ÝÙgx†™ñº k`>¸1ÞnõË·ŽDâ‘’gì¤å«Q~ðÙаëÓ¹FA~>˜Ž8¤k¾—ðC^Éë®æ:B•öÑÈÊõ1wùØ„g,zôW?/àIJˆ7 ¥ìK}׉a¹¼©5EþˆBÝn{µG¡ŸGµ€ DÈ%½F Å2Â5õ½¨Æ~2×mÝÔÙRäŽ?bZó@V³;”ÙUÿþ4Æ@ñ¯B§ù î³Cõ9nÌÃ'Ò„OE:]îN?@V¾ï›)K`FD½æôˆçDÒ³ÏGŒ%÷q[Qñæ@Û´ü^sטœäþŠçœ '²+“פQ‘–²´•í!c§«´œýíG¡Ólƒéèú€œ—»Á¥_Ȫm•ú$Û…”dú{)œô!{ºÏo´…/§Z~"AÛøºëÂ=F y™ÏÈÖK¤`µ×Èô½¾ÛÓ—âG”âI<ŸzÖÒT/uxª1îvÇx’Âþýë5‡œ¥?µì gF]ê{(|SÂRì³¼ÉJ‰¯?í´±MÊV…½cbÁ‚±˜¼8>‘Î…DË«. ”÷ ÉîÛï˜ñ=Õ$OŸy ÖŒnYšƒâú4ê0%eÙÑÔCgÑö¸ZJõí IChm¤:l¼î:ÓU~dß.êxo‹7ðt³k•ÙYÁüv3SÉÅ׿CUz:é¦hiÒ׸mÅdsæ0É=ª6 ¾ŠgÕN¥K©l q?æwÎWÅlûîz¹Üˆ=ÄžøbU¿êöÔ39Åt—âÖµ‰öYn&†Ë0,”¾ä ÔÓ¼Ò:”n;Oɇؿm±—Њrœîžò¯ÖŽZ\O³OQz›ÏJ´÷ sucgP¾0²¬¾XPÑ–fà @´æÒÄ)©˜RrKø0ézeÎ×d²¤Ad¡°äww±<(šyHyîl[`“žæ3O¢¿p= ?¬{(æ—_’Tž—Íï-Tg Âdâ_QIÜÉR6ůìL¦ã[î~EªRÓóðÆ*aÚ9Ã5ª(ë¸6 )tßÉÑp×ô†Fcÿò-žq£<#ï+Alüý¥Ü» kîëN¥Ž°2Þ´ Ò´©|·æCÌÝcgàÇ©Ò'»¦L؃5N 49‡Ê#ñ<_§Àþ4†µ·##oÛ#D(XSŠ]¶^ÁÏÖ¡)°§ s<í^rDwHÿÞàÔ· endstream endobj 184 0 obj << /Length1 1373 /Length2 5872 /Length3 0 /Length 6812 /Filter /FlateDecode >> stream xÚtT”íÚ.!5€J7Ò0ÒHJJI7 0Ä Cw#¡‚ !) ’Ò"’’‚H#Â?ÆÞûÿö9k³f­wÞ羯;Ÿëz¹9ô …”`h{¸… ƒd€*:ªf’@HLps!±.ð¿f· ãD£dþ@‡`q¶»,§ƒFµ<]€`1 XB,)EA éÑà]ˆÔj¡Qp· Ú̓tpÄâÊüëÈ å‚¥¥%‡•\á$‚ê@°ŽpW\E(Ähˆ†"áXߤà•sÄbÝdDD¼½½…!®ÂhŒƒ<Ÿ ЉuÀ=à/8 øk` .Äþg2a7ÐÈéñÇnˆF`½!8gpABá(\„' ÇqņšÚ@=78êXû@øw7@°0øßéþFÿJ„Dý†@¡hW7ʉr".p žš¶0Ö+„ `¿€4.âAº@ìq€ßC€jJ÷Ü€Çó€bnXa¤Ë¯E~¥ÁmYSA»ºÂQXÀ¯þî"1p(ní¾"nÖ…öFùÿ= (â×0O7cÒÝ®y÷/güÇæÇÅAÒ¢’b@¸;îuù•ÞÈ× þÛ þeÆMèï†v"pCÀ‘8îàïñ‚±Ox ÿÿvüóƒ0$ ´‡; Q€ÿdÇ™áˆ?gÜåc>@KŽ{` è×ïßoÖ8zÁÐ(ßÿÀ߯ˆ†‰¦¦’ºÀŸ‰ÿíSVFûý…À¢@!Qiq0Ž­¢’@II0ðŸyô!È¿}€þ¬‰B ÒÚÅíé_-{ýeï_uðÿ™K£-Èû–[ÄAPÜüÿÍõß!ÿ7ŠÿÊòÿbù7¤æéâòÛÍûÛÿ¸!®Hß¿k=±8è q:@ý7ÔþGµ:pÒÓõ¿½šXN J(—¯顆ôÃô‘X¨ãºü±ÿ’™ ×G{ }W€B`è¿|8mAqß'»à8éü³¤* ІýÒ˜¨¸‚Á@| •DÅÅþ`œapŸß,Š£ÐX\7^ Æ~Ý(Ç*,Ò÷FÂà¿|€ä‡zb08ýf®ø¿Î¿ ‡ûÀ¡€“h¨l„Óëˆæ¯”X¼…V‡DoSvïÇ’š~VeòZ¿¦"wr –7­Ô6¾w²HýU´ø²ÎÙŒäl³'Cÿ±¦™a¿"0B}çô«‡¶§èÚ½ÖV ;1Ì~§Þ ÇûPqŒAÐ}ou"kC]îV}Åq¹ã Ï›-a ‚¡„8F))1 ‚ˆ·JYo+”«”ÆÆ[4¹<ö‡¾%³©mœd¼ë_îž)ÄG.e°lnRºÝ;ÌÚ”OÿÒ!Á|Ïn8Æý¹C• °X¦i‡Ö­÷Ìuò1èUlÂ6³ýV”›pG%^±_É–W3z_ú±ÂfPÃû%¦&ÊâZQ;ktsqû:Ì¢¥ô£AAÌG»(û¡QÆÈn¯|÷Š­L@Þ­ØÄ’”+ûn€±1`+u0É/²&혈‰`ãÒžúÝLJÕÑ4€©áç}‘¯Ñi)/Èí?'sßj½n"úžÙmn2!ßÙGަ2sÓ÷Éø££» wEK{÷ûÕVŒšÚdÚøÏ5ÅRŸDGÝáþÐ:&ë”ç·^Oœÿfg¥Üãhó-ñ^•ÕÁÁJ7”ŸûçáCÁñvŽ­ê '¡¥MÃw—Ÿ/«2˜ÍübD†Ôa3ö¬ßlnRÞ2’þ;Ñ9?ï=÷¶NÆ ²TOü¢>è¨ð=MiâÔ£”oàVÃqùÀQGk¬ÑAaI&9U©(,URõ*¡z9ÿµ~E"ªçn¼¼0ï¸i_ÅTÃ1‰æˆÞN"ìE¦ud QÓ•iS‰:¾ÆrÏÈ’š¯­HSô¬Ã§rÎäãK×NŠ›ºx>gªjˆGVê½Ì@ÖÎz©—H=7]z:äu=#Ä^9/Ú¼„¡”èëìMÖB¾Éç{> #Z’ b+ëÉw´k&XÆq(h ´ŒœFvÏì‰Ñ —¦½ÞÑáCv¡1“§·…Ú¨ajp»áên–7P)ñÓfló9S§·CT G@°¤¶¸pcoˬŒªªvÞä&ÿËÒjÚ[k¯AAn¦tá.¾×ý·?ƒŽ¤íŸù„P ߬þxÛ[¯÷ÕKë‘mã`rWd³5}«Äð‡JÊâBßá¡.cŒÆï‘éŽøItQߢ~¿ŸÀ€O“>¬7+:›ÉÜs.ÅÙáž`¤™¥ÜΓ3Ûe߉¤‘{6¹GIóI¤ôÌq´P½$¢á¹½Õƒ`°W®Ë4A Ìd ¨¾w0–Ogâ7Ïøc¥åmQµé^óî«a›¬7?¤ŒäÃP‡ò6/SW1³²Px÷: zuÕÉåm\£á³Os3Íö“éú޲ºŸóðU‰ª™ÄÙ{JI†“ä8Æ+\CØûMeðí¹9’dm'/ëw_rü¤ŽEhs&Y½¯öQhð·éµ^-¹‘lbü5œ ÛlÑØþÔ£Dóú’]F ¨›»|ê¦rejÝ$Ÿ%¿äØ¢#ç3Óìñ»ròŽ[£eÄù_F&ßÖuGjÎŒV°*íHãRšx¿ÕB÷&mº¾ a©±0,ýPû¡ó #HΜá:o?ÊÚmöí‹øL|O® 3¹N«Ç-æ;BëDEc¡€Œ¶ë†¯°$oÃ…­ÎÜ:jª €ï:A}ˆ8›/dïœ*v÷²îÖN”ÿrõ€^â£ÙÚ:ý\»Eô æ¸×| »bS$“Ù+Þb‘Ò%YEž€©ú‘•(û$`¼µ_3ã²Éà*ÃCkQ¾’¦9Ž7ËaY/xÍÙËEVÖã%ª¬=kÝÀ˜Œ9áñ˜AÛoøö•·÷o©Šˆ=)lårÞ™èë3ž… ç Z2v³‹§Åü>g,íP°îmâCP8«×¸¡#¹r(̶38M®.ßz0–^ÔY%/¿×t?gÁ+ur„V{½éÃ\¢¹WwÔtöý E ¨+þŠ|eG–Ðgg›˜Rœœ:³óI¯Mõäôk£ì³ñ €cêJsQë'<§J€È¢å×WÁ²jz›X7T"§ÛýâÓ¥BYÅËÊô•ƒp¼ƒ‚ü–'~þCÇ'Áˆ+›fÇJãµbüÆËëEyðVÒñí½Ñ(Š…‡kéÅ lÃÄ«\<…¦@Ö¯Â}¾‘0~÷í+é—7¸c"xh¶æ7õMuâíÑRÆ+ÂŒ-x^Ô˜‡—££ÝÎíPѯ™’´Ÿ+ØñVó'ýøñg?INî‘(f›W˜§*ïQÙ…j!Wö“½åúZ 7{©!¤?¬:A«ûoý4žk[<½x´´²'§¢^¤ÓôYÀŠY*¥YÚ¬‹Æb¸sô"«õÞoꎿóˆ‡Î ›Š"»¶?ézõ~5u±Í‡™"Þ³p«W޾Ùù´’Óc“+áÎâw6»oešçn!Ù?zDõ03>‹òR©ŒÓ‡û­¨]©šOذS _Ö"Ñãh+»ðëÎ}ß™¯*Ì'•¯”…µHBo~ÜL!­(§ ÷£µ[ã¸.‡ðW ÂÖÉ_!áÆj²:º'N]İ󃟻o‡4V…TʯGèÒ½7&{'Ö}£çѢ䵮i=ìK±€„]q ˆð Á­{úâlZŠdá‰i:«û]íwo›úÏ}³{M›ÜóNa ˜Š T׺ô©Ëú¢ÁÓbÁñà#^Æ´ÎPTBÁâÃGÝ×bâÊI.øWj»ÍSu›ðqÓP/}qî› ØÊ0Bœ« oË×Y\bz^ù7aÚ-.¥UKs&ÇÕ+–<oKÏÈ/Ú¡™Ü[E –‚6®ú,§>2Œ ÈBHߘz©Ðf¶'ìÙ£ìƒP·W=ö6•=‹Ì@ ¶‘1¼PÖvv¾WëO" up8ÄwÙ(»ÕÌòñªN„?œëû¶V¯›soä·$· ÁƒoHÊðxêh£Qõº×F2†ÀñO× Mç»Ë.HŠ?^šÌQ”¤ëz H_Î\»-Iç«~w´ãba²8”²£-–³Ü¯où*Z¯Ã6%à%Ôâ‚ÕO¹`-\±Î"D鯧–“EEH>Ü'u•Å^áñº<çÝüË^ó¶Èí¬I†F…Ê5.Wh>&HÿTÛÔªTशt³î Ÿ!êsrŒŸn>Ô–T¼eL 2<‘ì—»>ߢ¥PrJÌp.Ã~/N¶âè4×ô’{À,%âè ×t´ ƒ}¯´ÛJš ì©òû¤–/¾„¥ÿ·ÛY £¾æxv<:µ?y ÉËI+¿õéДé+ÝìF$†q"Xã9¯(ÀÓ.ÌŠn%´t©¾ÿJn],ª²Õ…'q…bOÁ‘OêÖˆ2ä:"ü{j2C#(¦v{½NGî]¡ßï-xK‚‹®.ð,ÔTnì´Š\–”XÿÉÕr» Žÿª¦¸^¢½*è5”käyÿ ºAæÓþ½@¶ZÕšþbÞþþAprkåCð<9ìŒ>.üæAŸ&ñ lSˆ¾5õÛÞÚ½züÖ‹'ç_ž4j ¦pö(d>Ký¾b¯œ3<Ôs>%07«>œ=ÿiÇJ¶Qƒ€ê^"†ŠÆ,TúÜ0"¦}æPY¤[¢jH]½N½ÉÞ¹H¯ÀÝ0züÄ!"Ö°né÷4>ˆì[päK;½»EAè$tIѵ¥!áuäçYðXÑ>œ,îÒ§ÚýÉ3K} Ó¶ÎJyUsk“˜úÓ£™[y*ÒPJ°á¦!ŒèqÕœk;ÒŽ¯ £üh´‹qJ†(–~»õ •5ùjë5Í #gŸÝL'ûld©0¯  }y§,‹U8~„ »ÀͽµôPž>ø¥¼Í†ŸàŒ¿MÒ Ô“¹,®¨‹ªm8Ê홉ÕH6šSù9<|¢';â¾j-uÂEë[_§ƒÖÆP†øßA´½yÉÅTûñ.ÿ(œû„?î*õié)æ‘GŸ©‚¯ë}Óô´è,L\=h0xº£>Üc‡•±RãÇ®XÛ{øñ´öȬCL•jJ3äo3 ~Š{.ÜÑb7Ú?-OÖˆ¡Ã—*6_ª£GÕÓŒ ûŸW …^kþqJš½ü¨¾•‚í¢Ë+Òò©~"5Õ3fÀ:»$Ì`åßgçùéÒ’.†åFmÑ!÷FƒX{Ì£óHÉ« *,JWëFíæEÜð~ÆÏçjåÎ/_“Wí·è9µ¦½e®X˜Y¨!1…3OŒx”èL˜¤Åñ•þHO=h_$)ÕÚ37ÙëÏ”ªÙj·ÿ$†ÝÔÒÓ+ÐèÔô(Ðp¾Ë´/¸ß~•u§¥­ËÁÔ¼­$—sp JØIK7¯¼7|'ÔpuÏú+  SbK">¡á±vv4G×½)²¿Ü7àlÂúÉsÍáspÊÏܸÉíë<·]žŒ¤¬*žT¶Úêi.4H2e‹ø?¶¹âç+à 2úP"XrßÜ8¥–ÔZÜû15Öv\cø¬d…'‡™ÅÏŸ©á«}í‹1¨³¾=iPw(Þ4”[ÕÑù£pÐeEs¬œ#‚Ò(¼>Π”kLð{Xñ–Èó/Êx[Ë¡·TÓ‰¥Ú«3ÞŸëygmÝN›žéÌZDF›Û-4ðç­ÍÜu øëž5²´ùÍ5ÊÍû†¯©Œ(F¥™çG±äܵnì_põ|5$q¨·Á¤*ld_kA5Ñô”ÊV,Ö$¯f›é9q Ëmƒ ÎGlô¯Gj7w—®^¥,AGi¥=4m¿ÕJ×`jÁ{±9¢¡MÖ«¸=$ ÓëÌ_ë‹p7‹‚$î3UΕ3dËx0p“x±ósêÈ ³§ûnL-;IëjZ¥w‹'8N|º&d•{òY›Ý~œ®]°ÒAÅ#E×{ÞSZ^ÁÁÀ¬:Å#Ëv ¦F¯Deõó0@,º.ë¬Åc/¿KžpæÙ‡}PLå¼Ï’âí6ä”I—<áh>®–å9*!ª±)t¿&7Ì»s|Ú.®ÞF—ºnû2dCÎrÖ –&àRfÄéÏŽ”xeë…1Ñ›¥Ï‹"ÅŒ N]Ï +u _pÉðiÊ}¥;ú­{ÌXTaßAe›ö~híM7@ ¹&É=˰“w1‚-cÇJé;ú7Hô‘rǦFø«É)¿ÚÅ`‡ôb’ô»Ÿº <únäÏo2"dçîQžY}®ûœâµ(%ÍéòÛ…önMŠYMåÌüÉ݈.ñª<$”Ó|{*yB‘éÖRšÖž²îU)N[M°Ù˜%§ëº‹0¨ƒÞÑG\z”Íš%J±]<qu y:+«Z^©½Ùe¥Pn˜Üñª*ºx󨧕¤µh÷G?[MÑêú«¶¦îk¥.ëW^³œd¬{Ž‹÷# %®ÒŸÄ®í ¶Û[9ÄðCH•Í®§_!ž!® ¤7Ê5‚¤Å„Åä”  è2Çr ›Æ/vÍ m°)à\Q>¥É«þ Å?vV áS¯ž'–ûéóßï/I3œ2X…ñßXwÑýÆ0ýȞƩ7º„–Àû­§í»"BFVÐ£Ø ÛV×Î;„"_‚ïïV{"—ó{<šdºWòš–ziÜJ÷2ø}¿>{-ý&W‰úý(Û&o¹©Dâ–ÆHŠŠô¤+†( Sóšú@ý„[&z_ sñFnž·ÌAݦ£«¦:¨ÒGƒØ&äÞòü8Cû¢ù©yäÝþdÎõ)\´ ˆ:Iö´™§ T IfýŸÑ_bÖÅγx–Œ"á’GA9>?¤ÕZ’&‰û’Oh=;é)ÈRG<€´.–Љ-)R:¬É ]óü¬â €Z¼i§%âRé±eGÆNÁwÃÉ?pã½^lé–e PJôS[2¿ýÝ”dÚU£/]k©({ƒ/è’–;«ÈÞ²•JO¡sï,]ŽwôBÃ{Õrñ|ÎlÓÕ€Ù‰ M‰í‚3+Xì—{'‡¢ñLþ÷•ø¼™µ6±$f‹ébžñÔbF™îâ‰öìA_O“ä6DÏÚ$™ì•#Cs2˜_h›ëI¬Ÿ‰\ç!°“¹1<¾÷– ¦µ&±˜½ŸnOÊ!^ŸëH]ðÉ倎o úfaCŸ4iŽhþ õé¥äÒ=r)å¾·]ð{…ç(ÐGìÃôµž1^€{u† ƒ ¹R¶æ}›l´*ÁÒäN ¥œY ¿Giô~±.D€ŒãjË¢œ«zƒW‚¯HZ¾¨†“¼QøÍª>ôRó …¡U¯²¦Q]üĸ×>õGø—ÚÜdMÎ^.\åÈã-»Ûî[À}¼Q zEãô~Lu†—ßÞzæ»ð]xÌǽÛìŠßÀKìÓÊLx*!>»tìüKƒôdïsñ›‚âtVUTóT¤>pbž²xdªT¬ÜéøàÛGqf9~6n#Ç!Tæz%®2¯CE¥)$A?‘¢¹ކÝÌ¢Ö’Þ¾•¡ùˆ0òfpøÃÃ…7Pþ&e*|ârº95S,J'pØÀÜ3Ã^Ÿ°.¬Üëé:TÁÖAÇYÜÝ…þDû™µ8§:üâyaÃÂ7õùñóéÚ¯ƒ1‚9ן¿L_qpîµ&P•¢©S LÏ™¶ƒÄèŠØ¹][ZÞEŸbûÉxE,»WdU ð¬!‰• ³#ÊÓzA‚f•¸X<<=úïîo=0·+^·Ó²U®\dw,wßÛ ‘¢àíÞ~ÏÒÊßÕª­süòýÎz¦}kJ¡Î=¦4ˆ¿=ú^¦æjÔ8]Ïâ=áÀ¶/–Ô>‘hÐâΦ@µ[ÆsZrm ßðt­9ibÕE2kœ4rè‰K°´]°¨µÝrŠb­È¿H/¨,æÑ•ò¾¦ÃM" *ãˆí㌠¬+Ý) ^J†úÐË›S<´«v¥8®ê†'ìïì”pÚ{,"Ý廘-P}lÅ™bkñð‘ÞUÝÓè³Bºfà®-ƒ“ºËœÚ‹¹—§D•9<„ËZ2P§R±Â0„(@7©VFLE屬Þõ>/N¹`úžj%é;­ãѤ1ÆÚÓSþ¦Ø7ßoj¯¡<Ÿ3¾¸=›cb9°( œgi¿YÌ…ý^ö¼)ü&°wòýX;tô¼Òÿs™œ\¦×Öñ\ýý€ßäa´Ü)ù Þ^jÏHþ'<é ñ]–/#u!W£»[o ;ýÜOpܼ©ïÕ™WcI*Í&í®³Û—¸ïMÒ›l½`–ôN”E)Ýåã`€qI.¡¢kü€o!±I> stream xÚŒ÷P› Ú S\‹Sœ ÅÝÝÝŠCpwwwwwww)îR\‹§¥@qNºïî¶ûýÿÌ9“™ä¹n÷$äÄŠ*tB&vF@q;[g:&zFn€ˆœœ#€‘‘…ž‘‘žœ\ÕÂÙø:<¹:ÐÑÉÂΖû/ G ¡3ˆ&jè ”³³H»X˜XLìÜLÜŒŒfFF®ÿÚ9rD ]-Lrôi;[ <¹ˆ½‡£…™¹3ÈÏ”ÆT&..Ú©„l€ŽƆ¶9Cgs  È£±¡5@ÅÎØèìñ?&(yÍí¹ÜÜÜè mœèíÍø©hnÎæe ÐÑhø2@ÞÐøïÔèáɪæNÿ0TìLÝ ÁÚÂhëRq±5:@Þ*R²{ í?²ÿÐþ]=ÓÍý[û·! Û)ÛÙØÚzXØšL-¬qYzgwgZ€¡­ÉoACk';¾¡«¡…µ¡Hà_¡Ä…”†  ÿŸ“±£…½³½“…õï~›•YÌÖDÄÎÆhëìÿ;>Q G 1¨î ÿn®•­›­×©…­‰éï4L\ìÔl-\€R¢ÿ–‘àÿÐÌ€Î6FNN6Ðt76gøí@ÕÃø/&Óo2(/{;{€)(  …)ôïådè 8;º}¼þfü/‚gb˜X;Œ€f¶ð¬ƒÈ@Ó0¨ÿŽî€OŒ ñc0þ~ý÷I4a&v¶ÖÄÿÕb5Y1 9š§ü_¦°°;À‹Ž…@ÇÌÆ`bdåp€|þ׎¢¡Å¿ãøKWÊÖÔðÛØïxA…úOÌ®ÿÊoàÉÛF ü3é:ŒlŒÆ 7¦ÿÏóþ/•ÿcþÛÊÿë¤ÿ߈Ä]¬­ÿŧüGàÿ‡ohcaíño Ðèº8ƒÖ@δ ¶ÿWTøÏîÊM,\lþ/WÊÙ´B¶f ‘¦cb¥gdý‡ná$ná4Q´p66ÿglþ¡«ý^8k [ ¢“ÅïÒbdü?<Ж[Έh6ÿa:VÎù_ü ¥úß8ÄlíL~o3;ÀÐÑÑÐÔ|bx1ÖÔèþ¯é0ÐÛÚ9ƒT œ}¦vŽð¿ÍÎ`úMú±„ÿ ƒÈÄ `ý/â`0ˆÿAÌÉ?dSæÙ”ýƒ@6åþ Mù?ˆ À ð_Ä ò ø1”þ ?å?ˆÀ ò±Tÿ Í?äA뿈 äAûEfø_Z^Ck{ó?.%£?|PF@ç¿Ø ÓÆÿE, ucs‹ÿb¶ß\Ð!û˨ù & (j µóß À?TT =è<ÚÙ2ý!‚bþ(,Ó¿ ¨2fàodøwì q³ßßd %ø£ Åü/rü'&P"vÿãÔ_Ë¿ ($«¿ ¨jÖür¶þ=Þÿ­HÙúŸÛÿ—ȇÍ_)ÙþAe±û ‚R°ÿSg;{б±ûSY5{s‹?Ec%dÿWF¿Ëâð¥ÿ§Ì ÍÿöÒþ?3([' ³¿K ÏÉÚÐé¯ 2lü•Þ惡üA!»þAáºý5f äÝÿ‚ ëAPòž ÈçÆá®„±‹£#èŒü뼃NÈ𿾰@w 1üÚ²1O°ecp÷}½žÝá /ÔUú½&3ÝL±¬ó°Ø‚þ^¢JNöºL¥øÚg&q=Ë>ya‡ûÜ핟^MDͬwtDâÇfDFñËowï–’¼~á“,#·ƒh¤ r—9ƒ)D¡ôà ˜˜ «#{lZMr£À(çé–ïí¯/Ï–ÅÂçR?ÿªìÜa4¦zÈvƒý1ï«M\Ð~´NDš|&‰ oï|¢[ÊîèÄØ&êg‚¨i×ÀÃïd¡Î¨bõ@Œ+›êÔÇ4¨p„Ì:góŽ2dIƒùgºy·*é&Wp§¿&* ’«Ez­Ú{†–o£0%Zw^ž¬¯…?{{…)Öê¢lcТ=w›6½3‹ ¯˜Æ›3¢E<Ýlöî¼ëÜ÷teGmìJ|j<»mØ.vWPc£í¸D¹§}‘Á1Øô$5ûŸÃo «ÁãMÀÊåó«o°¦GìºÁXà]Ë¢Ï<_ÎÀ3òðöÍžP•Š˜<ê }f죅Ãàük´o?ø;Óü¥Ym„§^”YZ—;¨1Ƽzi ±:иP÷B,\gå’‘Í}èÐ7(c‘1”Æ‚N㢻…vo:ò¢¨ð–.»Ëù`é¹*¾eŸÝ°˜ááþÌæ{Oô©WŸèÍèÍNó»0¾zñÎãHà$Lëµ ÑøAkNÖà®áõ‰¶¸“BUpr1ù• óu‡[´|WÍ¢$ÿ­¨ÏíwØœ„a­”÷ÝÍ L–ÚµAfåï¡û˜Œz;²¥+ ½ zÍcÊŒü¨Ü´‚®Œ?Q0Z&oÔãð¸7ƒGO7ÇQi )¤€òóA³¥[85]Ö>-ëÃãY³zªŸü<¶Uþ¹ÛG ¬k¢÷ôNMHѰ o㚢ŠÍÈU‰Ýqb™‹³Ê§Õ‹6JÌüî9Ùkˆ0ª/ ½Š…¶ù42óÈtE3¿Žºøù\£¥‘yÂÞ.[ô)»*¢×ÂtE²éñ‘®ªØÝ€e¦òX¤/ÍÂÁÖ) 3eËšóÀSs3Ѿñ&/+G’Xý×f€I+q«? ka‘j ò7íþ£+©±Lõæ2ç,&Œftš'’àC±ÒâŽÛ0¿¡Ãˆû!SŒÔcÇŒ Eˆpî˯¾ðSÓŽVÞï–2ϱ‹dVíÖwÛäú76dº(\ûtŸƒò?XÊNúán>¤«Î*2yÍ ãbØæGÄ~É_÷2Rí™ê6…ýz‘_ã!»pFÞß?¡™Ãµ?Qºûøë²e‡_ }ý Y5uÌîRÙ-sq>Œ0 ØqÏp ÑyL€?€åñtÑþÞ'8?Ìùh]³0¨“„ÃÿÚÁ9x×ôѧíh>™ª>”REyQ3Åão¶S3³eŠ‚^÷^P' y?bœZNgÈ®ÿR C~u]…ˆÝÎ!ã yµOýÆ“o^æX¬ü‘h‘0zn¢¥ßJ7&ï?CœZ˜hÍëí öµÀÚ#Z°ðà7wŸžGon!æIjdŒOŽôááoøŸÇŸUíæùŠ©ñÑÛÇ'=Šý×HíÑ¡É2Ôfð KýýsØ”˜µY¸±sÚðÆxµ$潘îߌեpê!Ø)õåHî#œCLüýƒ¶*åÏB™u- ÷îX¾ñ]L;ft¹zlÔ™ëQHʬ5xëܬjE¸¡·àʱÐR·|Žteó¡¯,á*ýPŸGÂnØÝŒú¨u’éÁ^Áì#Äx©¯^5Ó ³1ÅPÆÞï;Áxm%œ>òj}Éï–¸­yÊûUR+¦~ÒÝ­ÝÇÿ@œŽ,‹$˃˜²ÅÓJTIÙÈ™§iôý‰eqûç+„yœ;ÖšEhÖ‡Œ›¦Í7K!ê,³…0¥Ê†F8ÊÒo<“õJHjDÁ"öFÇÓ‚<÷C"`\À ñO”Qð…Ï!ñ¥3Ø1Ž`‘éÝú7µ!0¨ ¦ °Ûsàûåyå.Œ[¿b¬k)êØnÇÊZ¾¬Â4ÐíÈj©kW³jæ~šbt™²Äâ[²jôo$Öî—ïm½/MPK«¿ËÚÈ…Y?ªJâÙ.¼zd}ªŒ¼=;…AnfGÚ…°Íxëêt3Žð<;¶äk)Rp“%¾¨1 ¶„Ò3póŒÎK½;÷L&+íõW[e‡°^1ewwØÍ'€ó€otói””dh¢&Ü0J±Jª{Öjð°sŸkµ¬½Ls/jTéI‡Ðñh¡²ý Й«~(ÝŠCøMC4†ge’ÿ ËssÊ4½Á-mÅTŠzë“)¸Ë"y÷ŠZ”$‡ÊÚVJ¨>:mâhÂÜ3é!xI*|G¥»ø%¶»"?Ul#Yþ6+´sì_|Jn… ¯XlÏá¤xÜ)+´…júX²Š -£äEjTäî¾X\}AZçOy:2û+üñð õŠ%©ÆPŽè)çqÙõ¢÷u.q›xäÎÄTdû+îɺl¾¼‰Rª´YkgêÖå*6–²Ã1ú¯"éO؉¾¦Ë(\´©UìM_?è3=-úººÎ*ðUh¡˜â‚`~. - ïxXSî˾ë˜uîÊ'‚¸R‹G»E콊3R‰š1Ûù´Èž`T Ý0ʨ»¬ètŸPzd«ß˰|)Áœ2,@6ê"ÛtÄýˆY”25pÊ6¿q}9{Ãb3¦rv¾"Ú ih­;&èë#½ã6l=áO±OtÕ/mç·ïƒÊ<{Rãk¡OwÈJ„+dÁ"ã¿q· cÝ–·W(ü%ðrf˜\Øu àoR¼3;“(°XóvÊ(O¾ 7¾Ð¡Zuwu䎤Z•ìÝl³@U;ï(ZdY“1’»[¿ˆdpûs|ÓŸ¡ëò±ò•üvQ=ˆ4)Á÷Y¯Ê|õ”ʪ.«ÃŽÓh1á^ÐIïý»Ä}B(,ò¶Â¯ÐLí¨K˺}q ÕÍî9$Z2ë \åúG'Ó俢âUc+&»š#?ذ©£Hÿ±Ó0£«(Z‘Z‡ŸC¡/šègREY#KéŽ=:­ƒão_Ÿ”v®‰{Ž&ìÎg—jë²M¿ˆÌ`B7T,wh@ÝÙ‡.ý´‚. šÊ'B¡\Ó•;ÀYAE†CÁ¸ÛŒ× ¨™ÿ¢Ò`½5;çÁ‡S®çÉ&€ãIö8i|±Í8i¥i×#ôܼÌÑ !¤'ÜJz:éÕ*ª»cJBÌ|‰âX3(P„¾[‹g’³/ÈEœn§#(›d¨š¦«ìŒpŽìÙW÷—zà—O(Ø<îaH’]—ªÑ×­>¶ƒº¶¾çæä^þªsw–¡’Ýq}ç2‚𬓸9ïyòpÆ¢)¾#±ÁºÎdú+f½]Ǧîñ¹Ñk/CNí‚úINÝ ài¹ûâá}ÁÈ ‰bƒUiÖ—QÛæ:Fïî 9‹3ÛÈ(·¯ÇôÔXÐë2›—n¯öŠ@‘T½¹öEµßZ¾¢‚Ťç=nN ,¶±Ñ—;q÷êŽâñH2׆ô4 X÷57c ¼‚)–üº!ÂmœÒ93Å®2à2Œ&ñ†¦$m¾X=1zí@ŸÌ'ÛeÍä£ÇM@쟗pJ£FØÏtŸ´Éýà^Ly´}$3Vñ?Ãc#®LÌídL‰üº.BœÚê{ ·HÊɃèWpÝüöÓ ’ Oï´žÏLä{aBsÀ–ÀÃñÙŠ' OŒ¾nR·£/Ð ™TÁàüŒ0ôó˜]¤‚CÂ,¶#ýaùA˜‹ìæÇè6Yu{Âí㘹#ò-q°šçxò½ÿ‚Æ0}¹‰ï/‰WF±ô½8°âmA¦ƒÖ’w‹úHõJÄ„©öºªä”eûofÅòïÜAæÊ·>Âhÿ†…˜ÏEì§ÒIr,å™(/O“eý牶Ç5©Ãf' ‚ÂÖ'¡f³P‰¤iy•ÑHãæ¥çÎG4úЭ}Ž/"±z"Âù{QÇõ|[Žñó©×ÙÖ5”̺[}ò@¼™ãdÆ&‚s²{¦Ô_?ôbÒ¯ßc`¢(úª¼ñÉl½ ˆ=ÉàeeQ4ÑüŒ(rÔ!c†#û´Íà¾lÏÒ vöUK­ Ú!ª…Ü ßPñK¡&IsdtØ.žÚÞ ÿI¬äÎÚªÌHÐV‰æçrB´mnb³ÇlhVðZ«a×±ÌɪŒºji'î^tnнw¯ÛDNî<–˜1BRÞPõŸÔíID™ô¨Á÷ñdM*e÷«íÄ“xˆÏîplóôëæå¤°¢’8§ykŒcàÆ-¾XÒ%ˆû¡íW%ÜX#cæ2[ͯâ<¼Zoys!ϾCÞ×Um;pK¨è7ª Ž}/¥DuWBŸN»G‹šŸ¬«É­=o3 }¾%‰*ŠÈ³Êè´n] ˆ‘þP¶]ø•BrºgEº•w“(¨’ÿè-@õv#©‰áC›¼àª& ÊKå?™z¥[œõR|™Òõ=±úëö‰ÄÜ(ê@X[¦*Ù±”ÜÝžGX&'+ƒw}[iŸ;î8T‚3ú §Õ¡Eá14¯ÑCJv^Ç;øý<ìpB>¤,H‰ ??ONG{ŠÐF²«ÛƒiÁ}Ø–Òô(C9ÿðÁÔ¤@ï§ô£º¯„ˆÎ²aœó ŒiáÞ³‹§½ „T;s‡(â)Îp© yàE|î%ÃPQëH«¥úGÃ|oI(/4iu \‡¡B>SØ:{zÈ´|îúÑUjP]qý;ì °a–Âëûœ!ÁßE¡ºbÀð?ÅÞxˆ&¯õÁØh”ê“&E¾¥z»Q¡Jì"× YzŽ8õÐÑKç¨Ú“°Œ Ryö\`}] d€†ïOµc¸‹sžÇEpGHùyK3…EÍÑz%9«¯Ä{ƒÍäê¤àߤú®iÃê [š‰¦ÓcªdlC‰•†=Ç¡ƒ‡òï(áž;ß ]¶k8ä³Ä,†O½VÇ¥§qÆÒMÝ,•øõåÊjÙÌÔ} ³¨Šw¯Ž3| È}Lâª>bº?ºY vÊTÈñ)äÚ=bŠ´DŠ“áŒöÛKchà„Ü0eŠàõðk²áŠÄج5Ãx¡Y_ïå&ôquUÃ3|?¦»Ö< (yÀ[î†Ìåï%û ¤{ÓÕË¢@ß4«B¢æ]zúŽ¡¢‚g¿áÉ>â†r,•ÔHÐh÷Oæ G7ìDöòµÃRSL¨rTqúú…Å“¦/ìŽôY§ ra¶5÷´›K?µ•äãRZƼRcñy;GãÑ/$1¢ 3Z·]Õ7O;ñªwºU2-$ÿ* ¢&ŠÇ ºN£+Úhz@õó´c +Ù¬j2©†@óKzš Â\…)+¾÷“í `lÞ¢û²¿®b ‚ÈáTÍ,Æ*ã5*A°·wnlÛ^¨wVÕP0Å_øÎJ¯àNæžèþ õGì½f;N~õ¤§Œ†þ%cqÀ²Ýg©FÐ÷©I îQhnškÈ4™¦î¾çeUH·oNaªÕ½æìŽë§×²IÜZ‘Ÿ»3ûf•Å-²&üÑaà20YH‚O,_t.Uä¹9 а>šAž”îÀª lS,)‘Ï?­ÛE·ù§óG²#íõ¥J‡SH„¯ªÕtc›f ™Üó¶Ê(§â1`oKWõJ ´ï&ŽÞäâ3ÊÝÚ‘šÛÏ«ž¾>|G§œOÉ_B=ó·P~>ÆÌnÞ}|Õé-EÏæ2` ¤Xôk9ÊàGEš’Òhë å3Ì/Ö$6ì”&½² íà@ ¹:»pX6 jieq¹r¤Ý!ÿ×/Sfû±§öý¦ë;ද`½l#LÈ&ÕÅ 2ŸÏÐ>ÉÂ{´;À5 ÷·’ ~Ä Ÿ`?!Ö8Û…Ÿ‰Ãl‘ê¸b¿§}’R ‹yñÈZ »Lz'™joÑqô¦nlž«‹mM±±S >´ÅÝ1ˆ¢P|BF: K,Ê]… BNƒaˆ½Ÿ%çžô26J¢/›ö(€?h‚FýȶÌxŬËáNyÞÉjP«ÈÙMOéÊFë4iÄ{Û¤+«ÊxE}ß*s‘²BÓ&Ȥ§[·«\Œ;~Á©ÅA†L-ñ·ž@¹™×ñÅQ¦Á$s²K-ÉX7 Ý}õx8Í?6Dßð¶ÍK¢âgJ-¨'¬(‚Ñð6wek$ÁTt&ýxzØÛAÿN¢PìVEzVc2eªWIRûë¼cÈÃ×}âq»‹v¬ób’¼ Íñ…!ºûkª|H2=­÷{ ÞqåŠ!H¶7>T³Ói[CNOêjæYà+{ñ&ŒîR a¶ýOcŠ”èwRÒ¶|= …2ž˜óo3FðSÍ,ËŸ½Ô'”)ÌìÞ·IV¦ól¼Ì­Žûj+Õ«¿“™1€€8íHænPH4(ØÓ²Ð[P÷¸fBp#q¶|ËáŽ`©vÇY‡¨,²Ø'P,”â§É5ó¼ÕK ÛÓ¤š²¡ÅïÖþåzh ø¸D6Ý¡bظ'Ö%,å I²p« gtW~NÝ~¢Ê%Z¦ýÞɘê7ÿy.@b®Øw\Üé‹[ì*’¤Íæ{Œ2éj#™‚‚²ö°õ=•ó‘›ΙQ8¢šJ@;˜JvN^½úGIôñÊ^߉{¼˜W(râ;ä°j„š°ô¡AšN¬"ÕU§¤ Õ7[žù›¾«·O5ÂÏš¤´feúd“ß¡¢µVR%=¿v}uÍ1ÃáUù¼&4ÃU"‰žþŸq³æ1У>>ª ©€†"ø,FñŽ ¨œ–¸ûT7ÎIUœÇ€—w0çdLFŽAMœNˆÝ]0ͳi<’Làa¯±ï#!ÖýÌÊËÚ (aôø„wKÇ?≱¥ d™rúua%jJöBœú ©„ÎÄØ´š•¹hŸ!¾°SHB¤ñö4Ò–|Vøz(/Öž5ÔxœDÌ™x¸éÞÜÁæ®±JÁâE¨´Dª¼^}õðV w:´óÙö!…MVlÚ÷—#ï ó\-÷vaóm,iÓ¶\o‹ÁýÆ›TŽ4–-í7Ù{‹°e¡¤³›ê";Ñ> °­f³%…Ä>6PcîÛ›g˜«aÇ%å©hõ,•UXÂÉ>kÒàÒ/Ì_ ã«äåÕ‰r|wífé«ÔyÉyûØø=Ç· Õ¶¹ìâCVeõæ<èT!´>³zÍUî`Ôu[ÓÖÑ1+(^>Ug9ŸÃŠ©åc7ø^+Ó~àIß8lPØâÅ®ä 9Òàº^Ó?ö›¡†¹si© ddªfúà»?ÊfèÅ —^f͆£¯uXnj~øãçk‚!Ö‡‡F¡o¥ÐƒÊ@Á#°h‹¦,\ÞT³9ƒseœ*Íœ…þ›q×y6æÏ QžÖ&Òì'™}aØL ƒŠÌç5*þ÷ýî ^Ån[4,3B.6ó–ñpò¶Ž”;3O]iRX‰iü­m}3cü´«[@£ôc˜Bfr2DY’¶Pcreè·øA`E¬ªŸßŽ€] / X‘ Ñ ´²·–Õ[ç/ß'¬à õHÁ;Ö&ZbòV…îjXú\Rr•¾.ÛE±”Ð"èäãNÜÚ·êasÂ×|Ã¥c´uâ½1/ùÅÕè¡ú‚á)‚òG$°mrªƒ˜F‰±$VrFúˆÒB?pqõ+ÉáÒWÖ­wµ¼Ð2;Í»]x„(E9{\fàŒ‚’"kÚÉ/ô=ÄÎl”Ïê‚!éÏpxã‘ý€Ä¡\ž"ŒÁåáì÷ Z`ë¥æö‹lPrØ¥hEÉŽÖ@F«¦|³ð›ëˆ*›Õ"ÂÛ#5U“~}Û +'ýþŽí%sïH5ó Ç7nðÕöÜKAEROªËËEê„Ù¼Zj*^ÑŸy&&3`VÐ7b õ°ë><å ¼~à€ ö0¹xüµœ¯ΛF7v˜’d# :‡ÉÌí0³£„sOåþyXÖPSÁFÆ$Ó“2ÜO6ØÆµ°5âF:]Œ$™[9.{†Tnñ¦¾E‹Óº¦A»Bª¿RXt¾/@™Ž™¢KÆï£|—éYGddX˜ïÿÖEÐ÷²S3ÊÚ&RaTÕµrœfuÔ¡F»6Ƕö½ä˜yu¿¢:Ûù#;Òxó‰+Û  ôŒº¹Ö䟒 }ç7¼]}“ÜoÌGøi ~ƒSÁThÑSÁZ®Â#yí3ÅÏøÏ*o¢d}dù•balP£“çÔVðÊÎï²2{gàýzk±Èضi>ñ¡À¨Ý­Ü¿Þ2±…Ž‹O£á?'?»>'¦}¹wÌ.*ìŒ3üŠðóÝÕ·U}W«š?iéÇì¢ çÔóo·EKŸvˆÆ³­T“⿽ :¤R‘†pk:¾6ÊŠÀ‡Æ¬ôÕjRâ]~\Éø­ölo7ñ.ìÍ;Âq›1Ù—8ߣÇqÓë–ì—ð>>ƒ³öÀTŠŒEÍù¼z±.›HãïˆïIËWRÃåèTè¦Á›Ü¢S]ôkYv8Û¾Þ£cä„B'(?–VûŸ(“}‹ŒP¡}µã‘ÍPÄxv¯¯Ü# þjy{w/dê–‚Ÿ"Û‰Mvm*Dvl2¶‡!Ìÿ=L¬åž–Îæ€h>žøø…aA8 œ¶½fí­õâPC–„ߥ¿aýXßÇ·e§f¼®¥©†efbõH6»dn‡’ŠºäNFöÒ4ŽòÉØ¥öC•àe‘€ÕÇè'òL.Üo „㉯PlälЩ–t£¬g”±´†JÐH# !v‰eÖ%ݬÈûÏv`O[7S\c`½ýr!ÒÞ}¯´Ã DÄ_ØbÖMùwÜñ^ý~b"’6›ZAE¬9Ü%Ê]ÓÈ.Å)hßE1Ö˜b®£Š?!(ÛC¡w4ñá1â ›[r››ÉÂúêõ†}¸*µÒÁùȽïñxàÏÈ:«uS9õÍ›ÍòÓdTÙ¹¾ 1˜ikŠÁ/Ù¸ÜPÕ&rx“~2œ t ¥ðµ0A’7„ï˜~¨5@¯®V¦ìy¯ÆùtÇ êqÁ±3:,Ž™ ¬×hÌÉg€$ÖüµÖÚØ ïË:í3(zOi8‚Qö!’ªzž'ï©u7öT@¡04nJÃ^èÙŠašú`9IYد]ViúT(D^â»ßåão¯Ì6 ,}{Ç+û5r]†Fcá LJFÒ0ãð¾ïISB;è‡óéÀ’üð¶;’~”zé<«÷Õ±µ]œ;;j W³Ì–·bF‘Osÿåå&94XÑ9sS>ÿç/DÖhaiV›³æ±7¾·«%3àÓ<±9jÍéßM|6µ_Q]Q¼¨”×í¥xuál͹~qC“‰òÃk«9Jæpæú}ÉXÉ濫íå|_u”Xhƒ¶ÇQ¬+>:&>§¨nU;ëäD£n”Ðý–'.&0ö¬ÍaãØ9 A3泿~Óg« Mì;õ˜)ܹ£š…æñY/C_³½Yß VLÀ#%{ÙA¹DýÆ,÷6K}†É*ÚÏŠÑN‘†Fÿ{°I”BxX`ä=åe°IÊ«>2Û ç°Z$k .‰']¬6„‚û(dTÚ]:޹q…‡µÖ"çÍMÎå{¯·7Ì÷ìu_Œ®Œº©)Oô·6­z°y{”5 ¨‡úúÁѯÄI*¾D*Þ tÄgªÆÊã}Ch–*ßs‚[©µë®OVcºª<%®2¨£¡5¬9¿3®¬œm!É{ÅbNß^ì}çIÜrùÁî8¦Ë]aÛ?@Ù@…çnn1Ë£Ò5‡éŒ1͛ү-‘¶~8D A\®âÅ¥¥¯v†©Ò]dF³±úTSÓ*ë¦;YŰƒíÓû¬]šfU (Ü ïÑÏ6·3ÜÜ0«ZouÕmÉ{‡ÃËÈ…cÄ™‚õˆÌuãxQr†Õ‰cp“Û;þÎS«ZŠ-nûeK Šæ=÷ò ea,]}ôÆn"Qëu‹•]G .—Öat›—¤½y ™ki7ùá¤ÑhàðN+ô’ö^.zÿ‘(“ëmM{2ï޾Gh†¿†ņ_ú¦ú.(—B]ÍâëÑðÀUè?šÕ‹ï ÖÈÖ¸ýÕüƒä%LYÏÇ27t‹õäÒ¡Œ„.ûË`3ÒŽV°Œ.gÆ%Ä–I…OjnÎR<†+äNÎh׫_žê ¹šcÂÖÜ£[áG6‰ôî$ÖôÔ­Ñú©HÑó§6£k6†Md3û‡Gu-JH,'·t‚ï:eJŽüýrŽÇß%x 72D‘Ë6Ój¯¯y#»­AÞíºÝ“r”°ö.ùM€œ‚|°*yÕÎhB:¤c—%;0hŹzËõ4w³ÆÑ!ò¿#DTø»êòŸ{Šd:=h cè‹5©Ä%rô¨—Æ×aÏJo7ÕV׫9ùx¢.¶Cñ8ª¶mè,ÌÇ¡òÁ†Ý,'Þ4ü‡n—EÌ(’MjEÚýO?£Í° Ø:8Ds›ÆÀl~ÎG”Ñ¥«ihLoÂØ v8‰ë<ë®™¥ô|’±v?Þ×ù_‘”7ÓWW•Ͳg%ßhøn æ\?5h4¸£n†ôÙÑó©¬bsĉV€Á×BV è*·ûžÅV-¨e‡|ðfrÆ€kcÑS6»Ö´ Ä®8¿MXàG_¢b"vF¥[ ÌP$Â4»Q«¢ÏkBŸDŠæ‰œïãÍø°þ#ååºHJ›Á~'àP³<ÿÝ\ªmÀëθiaOê$U\¹-½õ2* µÂâ|dñ}‚Ý1 W^îœM¾"¥çº°îÜ2ßx ™Ž»ú# 4õåà\hcÊ‹xð’ŽÑg)Òsø!•㫹˨ÚöÙö÷g³ÁlÇ­ÖK½¡Mõó„2}Û/$ӿ컘$ñ?¿§ø…ëW®HDÔ]ÓèzB¢V4(܃‹–çåÐC&ÝLÐR¤»¢ë§—n®ÕŸ5ÚÞeîZÅXïÈ%À£ã ~¶¡$÷¸Ì>yZÝ7óÂÒªŽkšt‘þíUüø×Ä2aW·ìqÍg²ßÈÛ´©Ð õy"lW°µÌÈ(mø3[³ý@¦ŠÉX-QíY$'xn{n‡¤ÁbÔ»n6gôÓýª iZIµ1Ó Ó¯rb'ÃF FDJȳ“, 6*mç9Ÿ´›£ç²9'ƒ¿l©–¾qNÖÌ0G{ÕoI3”‰*…é䵋 „Ô6£?‰î¶±áæŸÞBëÑ*:õµvokñ’Ó%±†Ò¶°;‘f&]ôé ¦q;@?™ôÃâõü|¥¬q¾ÁsáÄb û3{í yÙo;ÑjæÌYGÍލ;à·Æ'©#g¡u™£•±‡T›­]­–E×Ĉ§¾m„Q¦çÄd”¯‘söªËºÊ?›`èoÆ ¼)‰Ç\UÌXè ›Â'Žàë²Ð*?„Ì 'ùåvá»›$Â*E·íÙÁ^¿ºa'˜H~®µëßC°—«¾,ïbKÎb]á½äÝQ‘øKUÇÇ<6ÞÙ4`ìêYHrs‹`tê=ÀsßVN£á·” FHÎÓ»-Tá"D!œ1DæCŽ÷ÃËëå«KÍyR×[o)%$È ˆ!Ib•ÎàN5Ñ耷`ÚÍ,» T-Õèc¦Ñ}i˜—9NÇ7ªåganžFùRm㽦èC¥®Ð¸Ã±Ì~.Ãî8 %8;úëš ÑûJaˆ™1ÈÒTÈ ûë÷Xš¨z¯7 Ùâ/äÃ8+_M"B¥%ÖàgKв߭éuqS„¹•^=×N"T‚Ó)iÔ*¡QœÁFÛæ®¨îìhâÁ#”l«¹g:Í ·üˆDÚÚiŽ+Ï”öß㓸êÉËS=•œ0™W¤R.@¬é:Wß:Z_s8ùj¦‹Ê?(úa&4ŠöX Æ%Fz ç^ˆÞjˆéÊ—¬,ý˜j³JûÎà_óíÅ0 ­‹¤ñÙ5¢µnñ°`¢ ½ýÒ¨ØÁCÆdXc®Ÿž­ ,Ô–Ç!ˆ0˜܆hžZ΄–yI•à b;»; æÝ¢Ǽ«ˆÍæ_xðØÉÒÄgZÇðƒŸ’¾}#® Èy.±Ôê&—üÂO+áãszìëoï+Ýy·».”y[ØC_ƒ1îòáEë[|X—^Œåä²Bmv¼ÔCýú/%0ƒèž7üš2£6×kcÐb%;½›á†h(i;ZÊÞïŽë-ë)°àÓ<_a>šôˆŽg6ò)è9ļë–UP{¿ièÒÐ}Íïâo¼}–6þ,5Œ66ê%vþ•N°WÔÄòï1}¤š)ª€-XÂàKèÒÍê¦9¡ %K 5‰«›ÝJáJ¿íûÌÕ}ÒJ_Ïùö‘¶0²\7î­ WòFÿ¼ßXŽ}:rOe+ ‘ÁÒ_0`b<¶¦G¤hR÷Ö-+_RëÌxCÈê–YñòÒKæ„Lgrògeç–T÷âA])¢cPƒK~N®Vj/††¶Óñ“26í”ধJØV`]Qx5’æ¼ÕF±ÁYKÕP²~ä°åÞ²Ù‹SÌúµ¶±¯‰ˆgNkÊššyŸbµüûvVç={F„)8®+ëµq¤V,EçŠdãZJº® ôhâµ6nõ·[¤0SéáŸwQ% …p&‡(¯\”5]Ô ÌŸ:òá3©Â‘¨:öòv2\Öf[sØq|ˆP´¶tÔå¸ú(orŸÙõË:P°ëgÓ¨œDôúQôR6&]"!Iµ¡èÇÌÕ¾õ]“ ê"TAáØŠý £cmg»?ž'¡´žˆL•ʯh!˜ûšÀºK¤³ñë£|t?›s†ºõˆ±ž¾/yy©b;³J8ŸcÂ{ý‰Œ ?Œ˜i·‘¶Ë`ó¾Î4Ž&ÿEmá]÷\góClé¶®×[BWlï†ýµ Š˜Ç[ Ä•-Š_‰‡o䘡–@^¤£®¯ðšÅÛXÝs¥’”‘ç“XŽþ·&ÚØÉ‹lÙàjÝB¸µ¸‚ܬ¾–ÄN¾ˆpy¦€ÁÃÝx–Ë÷FdŒ¶Eü}yð¶”&ÅRétö¬5ŸßÑ[Xü42ù$X_â1 ñ“¾’[Ù³³³‘·èƤL‰ó®<ækçe]\dÂ>ÌþXиÊZM|=ÿéšÌ¤!æ×*2Ë–9z”:,…šÊÁ¡¾aq!Þ(z>R‰¶w¤˜ iÔ‚1œÞžœDHY…ôÞwžHEw;{5p”a øxµ•­8`Á¤’u&6ÒïÑ×5n@H¯ˆ'ë(ÿÊ~ï5yˆ­¾=§=BÜþ=Ť• *µ®ž€¼Åï&öMJ†-Awæõ sÄOð=âH{ýiÅq÷g™¦ ‚÷¾:áƒO¯xwŒ·Ø]T‹A"Ìâ×Dµ¢lßþó8 8°nhèåÄ™B5[øŸÅ÷©iæ`%ëSo¹ý¡f8 AÞü.i¬œØí ÔB “: !”S£0Üxl•¸Ò[*À\‚Û¬—2ÒëǾÖùÒRËÍö] z×·«"n]…r`N1Ò§÷ùí ð!‰Œƒ™tFÊAÂv‡H<1µùrNfvß0Ø‚LG=iR( †kØ ] òÕÍŽ¶ò¯} k'ÔÝ$Úµ)B–a_ueèʼnǭ|îƒQŸÐ›{ÏH’_x¿%nX-³/ÿ‚aiNnð†ÕNCl°ŠØ.“ï7%J%‹ŸäÂß^º•™^bjÛaÛ TvòjKÁ½y Içü>U4W1±sY aÞ|±…›ÉékeOK‰ßtߺ÷¬Ž¯s;#´b÷`N•5 ä½Éì ¶=I>ÄdW—Ã}ʈr>J{½'M¼(ÿR‹0ï ‰‰8ä‚E.dŒ+–¾ì¼eD>ëA4g\V÷ŽRgÜÔלÒê¨+HÄØÂdcÌq­™ŽÏÐǺÏÚÎ#:zUº‘U£Œçæã®ƒ½hÓeÊœcFMDíQQ–ˆڹ ùÁ£ŠV¿ÕYCÞ\5+Çp½æQ9F}q¼à8‡Ã–·0`FIðú¦žçäN;çšx^41á Gþ×` ˆðry[¤|‚rJƒyGtR‡Ó·A€(ûµ:_ƒy0™’¢[‹E} %™#4L¢ðñ¹Í—ƒwH­Äfð±ÂÔ1–£„âI07,FwAøç ž€ ”Éš-dÎÖ‡1Þ`ïø‹¾õ¦ ‡è±:©¹±›gtè ½´éÏWK³vùÚó"eÒê¤KÌ¿.{` Æ7 ‚ó€¾ éØ&0rŒÌ{ôrΠžçÕrçóÞ=ôL´Dq˜á2pˆ~ߎóÕÁö(ÛgY —"§øÑ½VyL¥ 5¿ ‚ÏŸB<îƒh]¹Ð2ÈÑ%¥)m¹³‘§kÉWÜIï6Ñòòš¦e2·]“ñð9ìU‹–ÐÛ’ãæ§ÄÄzÙ4ü®»±É¨\UÓô„ÌWÃ<™C¹¼mreUÁ¾y!/fPXí²ÝˆÎW30Ü Ç7xg>¹Ûtßê-´÷‹ ‘y´o£a×A½æÍ(XàÕÖúúé²”ö³;ë9U㺯‹ªm‰œ‚ç#ËÓ~þp@XÄ7×0õPʪBƒá}Ô&Oã>[z¬ôÇŸœ¤;(cÿ0gMÎOüŽ·ù`Û]ìûžIoÀvI£8‰¨B—•àwлܕq—.):7Í’B4¯¸`8̦n‚4‘ÔüqíO¥-{–•c,=y]ºc.—÷ã.¦ûØÈÜMûé¦4Æ$â^‰ôA^€ l…À9L\g÷jº÷Dj³…+çÂ0(\,4Ùë3! zH‡ ]ŽMú].m¬DЫû;Ô„ïJ—XŽz—À‹ Ã4v¹´ö_ƒdpsWÄÊ>EJ¢ZS.co85f¨PÚ­½ÿ‡g„ýë‡?‹…¼IçÛ¹4ä‰ä[CÛW7%§Iu©áYHEO |Ÿ6Öumœ‰£æf 0[u†úŠÉ—ÑCÑ £##pŒÈV" Єz–®>’0Ù€¦MZ¶Z„]ˆ|u¡LC[ŸK[‘ôœa;ØRø2>õÉ«ë ‰¦½ƒºýçuzÐÃH“ ùw¹K?Íìzb)ü¸ìG櫇—ë xÚOZ!’½çF²r^F¡ñð^°­ï°ÅoQ2£Ô,•Z©È!u ¯([¼>IA©Êå'Ú;l@ÒGþJ±¤ÏÃôšy—Ea§ -|VVM×5@‰þQ$?g}.ÊÄ]íטHVèa§»é'¡®Ð~SUµõôþ^6~×pºÒ@qµ; ¦iº÷ …—<ð½èxq¦|…Š22V†LªÚÜâ!ßWD›iu !1¯r@}è§ÄÊ‘Q¨p2˜¯æ¦kŸüGW µ’ª‰Û¿¼Õ÷.OE¯ Óºü>¦ÀùØ|^¹‘S ‚­Д]V[fÛ ,†Å8%ãIó¨õÍ*æY¿Àh!£ÎÒOí“Ét'M–›Œ²ž8ÑRÇÒîŽFîÞ DVÈ?¿jܾͰÄïÙî^XZÿž¢Ûôßó½gg=; “×~Íhé©g)'a.Ô@ù,up³U ©^¾DBÆ€Y<á×èíúݰ¹÷|zÜu!U |C‚ã¯ñÅÂáøaMrZŽ+|K¾VzÖO³í^V1vrÁ'PË1Êyµª³q~«{µÊ²^bŠ?Ê!&Û‘,@ræU°k(ÚôµÉÔkòM†õúÓû×É•‚Ä O11²çh–t@ZšB½Ö)u‚"k$|‡É ЮO™í·Ò]ì t®óù4öq§¥8Üs o‚VBɲ]ŒD¹Ë2ßÖHlVo>Vé§T]1މ‘`›ô'Øw?4-úÑ"Fq sçê‰×Ð?ÞÇ9EUÂð {øôŸÃpw­¼@8bU­‰Ö5´WÆf(6áñ&w•+£È–Äroð§îB8Àß!MØí¡80ЧO¯2ò¨½÷«>'!i©+³EÝ6À‚m;jœØÄŒQ ¼tXIÐ\„„v¥³ƒ„ŽŽ¸4 vÉS M"«ÓFß–e«¯´‚øœø”žØeËdWåsÝCù¹G^˜‡`®P:J9C%¨:O1xÈY6+”x9?y@ã÷Uésè×Q,”–P¡ Œë÷°¢_Š\Ã6d:”ïã¬Á@8ZÞ]Ó–Md¶H_š$`$µõeÃå%­u&Yˆì^—R}šz^ @RV³.3oì÷'ŸÖíCÍ/¼úŒcS(–›!g2b¬V¾XÅ:þ×gÊR¸Í/lZËNújcÕÙõ\"µ’ä,Vè]5êRAŽÑäkãÀ×{t¹agÑ;Jo¶ÂF"ƒÇ×p³ºXÖË­y4öæ¢!þ Óº!ØÞ©ëªitÌtlì;¡Ùo),¼q5IÍðï3ÆlÅMÇ—Ø×ø<ßA7ø¡°ÙöîüT4*: ýé0•&P ùÙÕïOÇ›öMdÆ÷Ô¦DÀÉØY€¦ܰ‚BùXgão#^9où_¬XXÎs)¦ÊÕ~’Ñ,L¨hnWá]¬Ä,y:rù]lk¢?¸®YQ?z@>ï$5ß~ö7u†m€ ;ÑŽ–2miCJÈgHy ÿG™Wð”Ô ±¢Sdâó}6¥åš¨ ÌÈ‹ ÿ˜ ªC3s¶Dœ$1bXûê&ƯÏ]a°Wv t3æÙ_Š ¯ûgÞ*× ;ç$´¶íeKñÕ&˜ùØ2]crmÛY.}†ê®·>J½6cî,²)ûŒ ¾O¥•ã ðú±¿xQSEóiFI -:¢&jv ˆÍ½ÎvÒ0C’–§_Ù^Sœ6MÐ\„ØT÷®¿0GœÍ„\G¾GKê rîzÜêÌÈ™y‚Ó߃…^¡ËiHÞ 2À¦·ÉÛ‹ÙímŸÒóýS®n¬B°QÖ<Õê¤{ûh [ópæ“^²Ž­¥j-óuîzîPŸÎRù2mûÝ’É×TcpÌëñÈh€•8eí[ó•.… ¶ àÊ„éÁý”+röü'ùûTëš‹ˆáµx}ÞH3O‡¾“†§œåjRÖÅ¢.ÂÝí¤¦>Ÿ1WÁv­ë̦Ž?ždl*³EÇEƒ©­WQ“–å£èb÷3½ \îô\‰ sŽè6ÁÚSk¨ú5¦¾7¥_ll¾4NaØÍ,`ÑŠ„7%“tÕ¾ ŽÒ”=yþ<HqYŽpæù³öfþAˆ‹ÅK —Ÿºîf †„¨Í÷ÂÑÇ#GF@«–pBª½!|œW¸ÖÓ¸Áå«uEhç;}„•6É T‚‘ò ìÛCwdOÊÅ„,7öîùͱ¹À:zÕØ÷vÎyñyLù粬‘ë7ü,ëݬ_Ÿ‘Æåí?È_^<Üà<š…؆Õ¸€—~Ú:KÜvj©±’ J—2›–R¶lØì®/PjŃáÏΪ¥×üÜÖÁ;m£@S´[iÔ§:êwÙáxª©ƒKmêâÒïFõÿ2Íñm8¹öåʈ"†¯åŒ¹ð1V©7 ÛŽfò4ÛqÁ—Ü /½tàâOWç5²šMtónwO͹º'ÿ¼›ž;wÄÞ·¯´ “æÆ1v%&"kOfÍ”TÄú³µí Ç µžÜÌ[ð\†RÊ9)zøŒ¥$þÒŸ¿ŸÏ„§ìÕkr áè UâSdDY‡ Dm/犟ÚçÁS•UþΠ6ÒD õW[^¦R†‚Zú°HhšæÍÞbô)çÛ!dØ!¼,Šßï€q̨oáR·ÇçÚ¥¶†:K6úWzË\0©çž…3({[íÏÐı7ŽðKcËAýJNŒ¥¿øîÂîí¿K¨ÁnŠù˜»î /DÿE'9f^ì¶Âã­¦à$sºÚ]%$ڟܧ1#dÙ»ÂLimD ®øO .X5€µÉÿ¶ô‘ÿFÏ`ˆÁ“c—Û+½«yÂj×L¼<®œh+1׎I„†=$È0$›N‚­Õ¿¤ÌÞ©çúI;¨ˆá ò“ÎÎÁÉÈ:K]ZfÊç¶´K˜öæ¥xÔŠ#J+6Lj¾¢C–ç'Àe‚Ê·ø„b›8= ïm±-†!ˆj,nõJ!ÜéCøc”ëÚÈÄÈ-œˆq,÷íÄs:'¢ › ¤Â“ìë($}’yöTîb•„“gÝå·EŒÊ~3AIψ\6LM•3w©Ûz™òéc‹ÃkØ’¼šn±Åç§$Ð;W“ûþVsªt䉻TÁ6 /èÿ¡m$$®E‹x’Ìóg<I0º„ÅÁ¨úðÚÎ*e¬ÿ‚øˆ.èeVö÷»îb àÒ“î2î„¶wtãu  ¦HžÅûÙQ&YöqahéØþ;Y?G¾“&ÆK-ìåçí­,ÑòÇW1TWr,Äø²bö+™k!UDÒ=MßàxâRâFËz gó¤ë¾}²"M‡¹H*vÒ§eCl?ÂÎý…w&|>¤¶D†M(èÀY4A©g®L¨—¦A|®ã«1кPŸEv7®È'øÒœŸËc?ÕOÄ•<~z¹t$zFÓô‹hÈ EIBš¼Å¡¡C<Ÿ¹Dq®s †¾1ŠòKcÉ 3À¢ÎýPŠ1'®.ɽ·ž©B¾áª-°¢k)+Ú}æ[oáU*UÍ{ /‰d‰~Ïãõ9ý”¯°,'¨?Öïí"/ÕŸW’`3vD¯†+´¤ò1jž]“í[Æ/=M‘¬äfÍ1WXƒºåKIA#­èŸº`I¼!yeÁΗiØÚ[Cl¡sÖàÞa‹èÏ‚²“èZ£ïúJjžk€m'þG²”¯ÌöC¦%†©A«ÇAM»§Ö›Jv„>›T€;‘“™‘ªü¤ˆ² ÚéßUèý¹Ä¶rT/NBbú–•ÑÑAT6ÏVÀ!,œçßÀ;³s"Ìkœ_$ØP˰ÃK¥Ñ$m„ù%2@šñãÐgÌf àÄ<=Ê4g·ŠÝ¾5he„>uvæ4$'EgÞ„ƒ› ôÁÐBg!fœé]çDz„7›B †o#{­¼rÒ·›»Æ†Èt€E‘aë:zÅh|nÊ*‹Òÿ!HãôÍÖæTУ­~í·¯È¸ÄÞ\µq“šš5€cÿ 9š[8 ÓáÑqñ«@H½©† õÃŽàïNZ‰HÐæDqI¿]RßšR‹k@€ÚK·¸@è2[®Û•ÁXlU#ü›tÄYŽÞÄOmcgØßÖs,¤Óˆ™LÎÐÐeþ# ‚OšèL t{šÀˆ†ÕÛ¾-Ñg‰?3@]×–¾£5¬¿˜g{˃ï%¶É¸°Œö“gjÅ,_Šßn®°†N¶ ÇÏ:㮹W*e&ãÕ ?Iæ›®j»õ €j§™öh¸ à7êEˆœKaÚÛz6 ÌXõé¤ç¼s’¿ûéCÜ”œ/™¥·ï½{ç¹?<¸ir„±UòµR=÷ ŒŽDËË5¢æ+È7wkdî°?eñÂõâkèD‰<èHºpµP¯,¢Å“vS“a<òz´î0°H8:_·^$©8‡ÌvKÞG%¯Úâ¥J#â¿èfº“žÀ@³1ÍÞ– vŒv»ªäêü†Æ­7yµÞxÃÑç=R|°gnÀßh%48y¹‡aÿî&ê480Æ2rwŠ¢QA[³ÈÆÛ«vŒ,óãê¶b±°gJÚrP%ü¦i” Ôì%A?˜3jÀˆ`<ÁÏõ9z¶ÝïóËT%Ù¹î‘íôù^ä™AÏð`:öm{‘‹ê®±Þ{<É}×JIZre°W¼WóQÏ•…ÂÎçÅ›àzÀ_ÿ/µr¼ëXTp=ËÑCšG+£cžS¡ˆ@gLÞ„g]i?>¼bE¹•mÀ«d@§boåï›[,q’Æàj¼ö–Ž•<¡Ÿßha“÷.F¿‡¿ÍHÌ6W}®¡jU®‘ÈŠ½ƒ_êhþtZBceê׈1EÁ9ˆ¹ôeH£7F'«ä’cïPÉ3œPƒÙ‰h ù6`½»HŸŒî;‰m&Å™p"')yOmah0€ŒQ‰Si䟼¬xñ,žŽJö*,sóƒú¤hñ”óD‡ß3•”rw6ÅŠÁ öà”ž‹Ö²¢¸I›¡-ó#6L=t´$8ˆ>„‹aŽÂ)O!*0kšé'Äw0OÜi«ó“ù*#M )#OO܇ëþ<÷t°rë“çb áGx;/Ϻ¥T ð –êKË ð°"¤Tu_$KþPK¯å—À¬ϱ”kŸ¶Š·æ±+hÙ™–|äBð‘¶ÅØ‘¸éû j@,ÑÿdäØ*ç$¦¾é‚þ®ŽiÌO»Ó·tCxj±¦¶Lá1劰í‰Â©Q .z9ĵgú2¥8h@vkâ­¤©þªQ÷”P’qéG8hAÕ|>V_BèÇŸèÁ鋬 Ga†Mk¿Íùé.R›ÐGí50âúS„Òu›[1D[Bû9‡Âà $)w阸ܡþÐü?ݽÖì¯ÝkÇùçAQ’&˜p%;¤»óƒNåÔ+ÄMwºBeÇÁnsÊ·sMt˜ .GɵR/$ ø@í5M$:©[Ú&©-úÝu!6:Û5/?2m×ägX&L¾çÎwò'[_;Û•ÇÏ ”j"õX·;Øá3@N;PÆ0XÙÒðF“ó°0~ÓQ<[ I®V3Á¹ò·™¼ŠZº¡p[»žëðx(6Ž_¤ú\‹Þ±RÕåJ&è 5¡y¶"Â+ì“=FHA£}ÜR<Å7^ªÙp–t¬¶¼”Ynör0.Ä#Þ~¬ÂÙ°:à¿dT=±™5ðì]·ÇW½Ê#Èìå@¢5l"PÄ“ïrÀÍтͭrt¢µ+íáOêûõYé+\+O²î`¹ÍqåvvduIÍ`¦vý˜ì 4â!Ô$¶¹À擲vyµUœÑbÊí —pÎ%ÍÂò;Fˆ*¤`‚Ê ç©:Iv*¶›ú¹rbnp¢° q¨ÐÆí°àòº™…¨–]tSœyŸ„Ì6¢1q|í£³úýv‚ÐÑ¡úwéå¨OÚBU„ öåÞΗªù©VÖ ÙwØ– ©ÌbسÄýYÇcM›….Žïš—Ä­H¨ºðýÔ¤âwTm‡Q *F $ùLLáØå:ßëÂä ˆ$Ê¡s5éúe@¾˜ÃÀ¼öLsÕ·‘¼ø:G¨}ˆ põÒ²Ø]:+›!RMÓœÁç;ç¤ÄÌ*Ѫå2Öãî°JxMf3¯h•#è²ùÊmŠÃ 9{Æ,C.èMÓؽ2v̄ɵ-DĤöx‘o)èÏ¡èjHÈ´¾t!X/ùH¡ó¯G ‚ ‡ApÅò‹Ïd^¡ÃöUHs·p°2äâïß¡¤]ëJ–W»*·/ñË@ò„`”)”ÄÌ{*/œ•SíáË/>5‹8ó®,g!ìåÏÞ3¶)a/•;ÜczÜûØå ðøž× ]!Ï*ŸBM ºCf˜n!«Ö/‰t”ž½øq?©"v³‚EÜÝß@1[±-×¢at˜/G…-çï]r¶ðÎXB½?Ãôýø—Núü¤äŠ“Ü¿ÕÒCűs= 1ë53b£¶óC}–ú"&h½PךaTÎtúž·z4DÙ@Ó?„úÞÕ!a%x!÷ û’³È^…>úõlúyá=Ñ-EüT òǺÔR—ÛJ8š6ú;- 9Lºünrk’Ôó€¤ÅvûUNþ(x‡5Ef ЪBÖ‹`“h¡žŠI˜˜ý$ªÀ¸¶ #5éË…¿A”Wª­1Äâi®ìáþCåä`Ó‹HçeÂIñjÉî9š´Kî­nnqß––Î<Ôw ä}G ks¹*rO”·ï„oÛ.ƒ(t .3ˆ–MÈ»K¬ÅŸô:’êóÎJéè}Wž„x¹´k·®=W”¹àc¡wšjfd/‰³Âš„’Ž©›8ÓbN½ Å“´„O0k$P1ã€àAu³gãBu²Ø6Äwo¹7¨ÄÞ|Én/ÔXj}[Y¬/`S[EÊ »üÚó+Åŵ4óÖ¿jNè2-Ýl¸Í›ƒ_ï‘mrîBêy¸†ë*”A1í‘ùÚ×âQ$ÁçÔ¥l—NaðÕOäŒ*E»è#$¡VkXP?&çõ}Æg“î·æõ÷ endstream endobj 188 0 obj << /Length1 1400 /Length2 5965 /Length3 0 /Length 6918 /Filter /FlateDecode >> stream xÚUXÓí»E$”ŽQJÃè’é–FÇ6¶!l°éin$¤i$DAB:Dº‘ÎŒïÿï;çºÎ¹v]Ûïyžû©÷½ïß8Yõø!([¨ ‰å I”ut4€Â!!!!aNNcÖú—Ÿ„ó>A Òÿ ¡Œ†‚°8Ÿ ‹ê MP—JH „…„¤þ¢ÐÒ+Ðh¢P §2ÊÉ€Á±¸>=¸ÀÜ ””߯t€¢#ƒuÄuƒF(0ŠõøG .Y8ë$-(èææ&rÄ Ð09n>€ B1P´+ø¹2@äý³š 'ÀŽÀü¡ì°n 4€s8 ÀP$—â‚„@Ñ\w€‘†6@Ï Šü Öþ àü9PøŸr²B %ƒÀ`”£é@Âv(@OM[ëŽå€Ÿ@…˹‚ [à×è €š¢„ÛðÏ~0á„Å`?wüYw̪Hˆ2ÊÑŠÄbH~Χ‚@CÁ¸s÷üs¹(7¤×_– ±û¹ÄÅIЉpvj¨üÁà\$û`P,@LHRBDRu@ÝÁpÁŸ Œ=œ ¿‚ÀŸnÜ>^N('€n ¨ÂŠû!ñ€\¡,Úêãõßÿ´H€@Æl¡0’äïê87Ôî·»4Â`)„£ ôóóŸ'kà (¤ƒÇßð_W,hªej~Ϙ÷ÏÊÿ *)¡Ü^ü"@¿°˜($,À=øü³Ž>ñg¡¿s5v(\Æïyqõ×Ì®HÀõG!Ü€ÓEᨠpýÍt+!1!0î øÿæû¯”ÿæ?«üŸLÿ÷Dj.¿â\¿ÿ#rD8xüAà¨ë‚ÅÉ@…òßPSèoíê@!ÇG5° œ‘0¥ù¢B¢¿ýŒÂ ÑG`Áðß´ùí7ù)8ªÂ ~¾bpYBBÿŠáT~„{`pÜüap’ÃþºÈŸ6'ªΡŠ£ ?Õ',&¡Ñ Üåã,1€'SÔý»‚H—Àíì°C¡I~^4P u©…þŒü£:ØƵÿE \ë¿ì_B‡BÝ¡`’ñX&Ⱦ*¨é{…"ƒÿbŸì•íäïfÂü}y6DØÕÁ_cÒÓ&´ŠÕÆßÕlìßè*9ϘÝ÷Z¨fyå!úŸEmÆbûläâþç8¯#F¶‘uxÙ¦‰JÌÒ…è<}¦òVby¬Ãˆó†÷ªö±8·Û7‹Ô$4ƒ›t[Z+ŠÒ´©¥îoÌbëm»ÅhïdÎ9FÎ?µ OÒ}Φ%ÛrLëVN>ÛÕÓ=EñŽém„¿¦kÀâG–BU¦›QEôjùý©²³ÌB×õç”^¶êTÊÔF:Ù¬†´$ÝÊ9ñõÛ´VgìWÍìÓÂáq$ë´7šsž/çÃQ~IÇ"bm’I™ŸÙBaO¼ ²Ój†~-õ£¡=ƒ4GãWf{®µö7r¥±{ÃK‹ö|P4аO~ ¶à0Í‚ŽPe¿£äq ];ªW&ɺgtäí%·K› Çãd8Z_W´3¬,45WoŒ¶¡øÃ>ã¤g•ˆ™t7÷0µ`JªiìÿDþ£ÝFóÊ2ÞËD„ÕrhLä;.»é©©*o)R@%ÂÃ)®8Yÿ ¼ÅÉ]f¡>H“:û¤B9îݺýµ>zbŸ“ }ªãÚ¤?ïé0×<*ŠIR²@WÇŠT²Ä“\BePÉÅÃ>Ñ >"Òm»§o¹ Ôkꔌe,½ê·h8àvÁ+n[·ÝÆØQ±ëÛû>£×²”ÿ=g­õ]xaó'-ÖŠ‚7¢ˆ¶d£/¦}ÕgΊ!U}"¡qT4*›D…ƒð3•od;úþ»bNx!Ò23ïÃ[ú-uÐ`3NuÎ "}Ï$”XN†×ž67×ìœë{yT1¨×ÕP«? ¹iüìc±é¾»;»·ße‡}˘ÔH’[—º- ®3É«H݇ëtò º&Ó ÓÚ6t-¤³…—Uié}gؼ%V‚®¶lYwÀ÷ÌÐ"Ï´å”.Š8•NUÄaéSfŸ¯ÂóyŒzaöcÃS1YïÒu¡2UsÅ”4ɾxúªBŠãf¸Ÿ¥nÝ\:zlMÙT{|/'hEogaLMt­„³~¯€ðû‚+HÝ„‚’#«Ú"£vxW 4¹x¯díí¼,àÇn烥ZWJཅjã½8x* ™uQ³‘Ó×ÀÄ9ôHÁ7üˆ(¾÷ùá°*ÞÊþ¤\Zyë„Çq£ÜÀucôå"7n=Ìà°ê Íéé¬<¨ÑÜ ö¹Ø»á?èd½e gÞnh1P¨l 㯴z耟+½<Ïa[ðíɳ7¾¾å[é úfÁyARSEº®J±è¢ öŒriQ]5›vUó1ªÏ˜A„ÍBÔ°I³udÁ–ßç§ì4„kjŒœ;£ùV5Gw—µÙ,¬ªPÙžiå‰eÎp &g€‹„RWèäáY—Z²0oHÙê³QO›YÏ–Ïß1Q˜!ìTzô®Ô²ù‹çÉ+(ºdvÕ@Á𭃋-¾Áõ~ ò» ï¯z ^r¹µ@:a@tØgM¦ìÐKÂ6âS–+¡5¼ö•b9ì›Ê1c’¢§IwH:ÂLÚã²ñûäI‰6ÝòoË6¯QcÒ»±S†MU•ƒHÏNÍÄÆtò\µ3ÌJÕd§P+~YU³{r2Jþ´—þ:‡ëQ1á«Z>[¼‡ñA‹îEY5¼=Š#äésyx„cãñöº?œÈÔØ Ûë?j õЭ€ ·îQƒ&<Øí$}°©ÆÍúѦ¾8|¸RßxW[ÀKJê{ß½ºeê>Ðd«é<ñƒò¹nWXÈ»Ÿ\¢’ZéýñK{¨’<€dp‡dÏŒK r-þ²qS0Ûõ^Ɉª|¹S¥lé–”½µ¢Áwú«Ûû|p>‹Ú¶7‹X,Bè. RÚ¬¥„ÍÖZ+ñüÃàìDøö€ÊÉøb¥{.òÓØÊ–“UMpƒŒo²Æº2dåͬŠå Ä”=ãYŒËݵêÚ¼â>L›²j#ó\ÏcQýF&å#¸½DÚö7DÇW¸¼[{§¤nØÃBýf`4ŸöñF)ÚïÜ~`û°ã“ù¨×†ÅDÞŠ'a‹¿ô)ÂÔ‚£²ñ{'o²ï‘9 Œ&ìäRæí]/äytw>¯‹}D8¡ÏoŽ÷ú•ØoÓª²<”´¿Ý6³Ël‘(ohþž<õB<ýà {EÔî·U¾]A¹<õQRë# ±Ê°™‡ƒ³äV”‡R+ұūm{Û{ù)ú†÷£b9Ð+Û'•s““‹§ö¶M6ºv³/O¹Ð‘[™:g‘ãKyu…óO• ¿ü/.Åa¬5n§ôhòn\Xûß«8OëzÁ#PÝl×7ùa½uF‰!;ì™Ú&§ïÕ0‰Æèá× N ·—³G„ð¦JÒžcãà„ÐÖ„4L¨ÛAt¥U­£ˆqyöPöºÍËb&»—U=1T‘“†÷§Â,ýj­­_¹ßç )úHÚF°Éò„4pZzW]<Ù wöÜ­uØTxè†Å]’j¨W*8m¦(§ÐóìÈP·&—þðf¾7CìŒðµ£KÚ¡yÅÚnz ´n­uÁ©ßL3ƒVS…DI¢ÉIù\}ȯ[|à wÖ‘ÏðìÊ2õxâ3øDŒ¦P¾nŸ^ZeÇÇËøœðƒßÇ©å<ž9²‹Y´Ù!×¥Ù[”0Û¸ÍÃGâ…Ó¯pˆêƒ·*N5ÜçÒ©ág‘šþ Ünön")o¾ÿÐ=*‰$ó¥ØÈŸ—(qð|»s•ð˜‹!øõM"õ¥«{žQ|ÃQ@Õò‹·LÜ{*£ ÷xX£ñCoQ͹hÚ ìWýèêk·nÁÝYÏÊž¸?–ÿÁ¦¯~S/OÕÛÃó™V¿RÆi"Á&GR”ÑØ¬WÁÆ^‡TÈmŠâÙðB9qº¬#î‹U}û“ÉŒõmBÃp¥zî%ö1Ɖþ·d¨‘°»6?¾0¥ï‚€¤Û7 Ô—Ò’KÉ îl‘M?Ѥ@B0µÉd0Û—ô/zÜí)äv°‚ôßÄeÂß›ã…g;šð÷r]p¸PøLM’œñV§Úœ¡3w°+$ˆéòp§FãÒá^F¤Q9óz¼¥/—äü£ÛÉ *|G„ÇÛ´@ÿ@„ BŽèa&*ÙyuŠãE4gÉ›òȰsòRFØš$x¾˜VÙ•ô`ãʰ²¤Ub… @½0©¼¦Í»B8]VÍùÉTDú-¼‡·HXoj]|ݦlgUïp¿hãcåõþª7Ñ1s³èšãàcL[™ø&ž\´­íf†Ãþà˜VuíL·Èö\s1ikÿ&Inõ ¹6Ù+¡îëã¦ü£¡ë윥Z«etå%Ä…Ww\· »•¼¼Þâê;}%ÕQ~ÔNzbÒ²+»ãšómû²ÇÉöiTƆçÈ‹«·ù™y“'9o|VGpgmN²ç౜P¦ƒ¥¡³ìÚq¦!DÌûQ{‚å‡nÛÏo? žO=é¤ñ ‹2À0ÈŽ[©«< 5[5é0¿´×ôxC-ývš©W·²,¤l½bô QÿªáÌRC³(•=V‡WÓö CóºDÿ,lX Æa´`çà’¤r¥¿øÕŽ@ Ùp Þó1¿°Æ'`ü›xnGÒû——Z«Ô÷Jó9‡›ù™eD ÖLú¯K7ÍSòë[iï¯Â,ÞV‘ù:´÷RéR¼ŒÆûÁÄÄÎj×¼OH9‹÷m´h³éòäv±$‰å§OD¡ TƒOé¸¬í ¦ó)Ú7è/þª´ ïƒ/ÉKصÆ-[Ewî&Pà]pòR¦g•ÏÞ|‹:®}ïEæ}ÎlføpOpåšdFW5oâððÄlam÷Ú$ŸYÎÂõ²ú?úò^[¨Ê”ŸÐ×ð*öM×Ï¥ôb»^”²†ã¦6} Í„©ÐûnÌø>Ôc&€§mµÐT1ÕDÈPÅÖz©€æO¦t B+F}¹7’—¸æ3y° -æÑ§íxwbZÚró‹ùL_µ,˜Æ_±ˆ|­6ßHwà@Qxã×¶Gå-èÛTFL˜Yñ*ÝÉBºu²ù(ÈòûÓ"|ùÖŠ_¸‡¼RLÜé‚p+N©ç¶fƒ7†š}¶–LßèðO¾Ñ\}îUn­ø1/Ä-3g@Ö¯$iN|™b¼âlHa}«@L$6Ñæb©˜A9{aº‘`¹¢1èϦ˜¿ªt·» á4ÿ½H³nÃýåÈ"ß•gQ@ÀgÂg°‹TÐ Óõöºn…§t¦d¹²å„|S¦<ô³¨¥V™QÕŠè>12¦mt%þãÄJvÏÍ%¢¯6aC¡6²Ò&úÔíÇÖòTÎGlñ¬U Ÿì¾Ñç6M˜ŽMÁ“_M¯6ÛLB¿ÉOz™BxÉ\_²Ñò`åìÎ΄†NP^xÁœãòeNš7ñËl*çì>Ÿóz¬2½Êsaº[›u¾2}éðn‹™OÉ‘v8äÉìˆW²W«³\gý'ƒ’¥vNkËu>G+ÌR†K §³ ûˆx"Gg.-39{‹6[p›é‰‡]™ö +O‘hÝjíW³áÇÁƒàèJ‘$[Ön˳1³‹Í̬ø€6¦-Ú&x1^„¶/Üù¹x:ï±Þ?šò‡Ô²ÖúÉ@D³ &,8ýz^Äßýv /šž”Ðͨ랾¸õ}K&k‹ë4†º‘Zvü‚•,‹ $Q¡¡¼öè±e/Ò$…ôVg6G U Cíýj·´Å\°Ѳ!¸W÷àAî]šûÞÏr8ªt¥‡(×w^ë…—/Ÿ…’¹6=7ꙡóbÜŸäGŽrG¶Ôç$,$vz¿IœØ{ ;GUÀ“À–ÐäúVæ±ÅTám}â´RV#ÆÀ¨=¡ÁЄ¾ÄÞœiŸ>Ú‘ÿƱç,Ééâ}T¿ð+c#édqmȬZìyô£†O3Ùšì´[;VOð½gŽûx‚jÞ—eß-„NŸ@ÚBWTu2øÒFòh˜i¹ý7¥ žnó΢—‰`Ù³c);žîpW©+\tê~Ôz%lÍ’'„¥NÇ9E'‰Ž—ÏúBKW%ej¾ä;[Ì C.‚)^]‚y×ìîŸÈtEÒo­¦«ëàµõmë¼¼/†ŽÎÒ°»°q…²Ôö—éêùÀ&cl÷ƒ80X xÁ†û‡#‡{®‡W_ºÏM$x‰y×ÞwïÚÛèVå8ÒORc1òÕ"T|ИdÓ„ÜÇkå:Aëh«´/¹ºâ-u*n>èºuyí‰v +”ö]‘ùyŸÈ"gþ±i§1e)ŠÊþ.^æzH½ZüL(ºü{ÞSçg³ˆT§],lq¤EI0™Ýr·¥›?H‡ß`à¾[V+m•¨bñGž“¨|2¶ ·°“^êU«åòX®"©|ƒF%ºþ°ÏrYCóÓ”ñá\Ÿ9ÅFv<›·}¦yét¶Yg™GµfÕ„OžhÎñ-A ‡ø˜Â)5H—«³ïޤû„Êë­’v-Ÿ×?Hoù†ƒ u½§&Óë';¬ôìý@á)˜ËÉÓ¢#xDT•¿\®7ûׯ‹»¤ù¡²¹­ÒªŸîð`ÞGó:x±ií^”wIòO»×¶‹jä«„â! iz¨Ëña³¥.ôµ§èeŒ¼éÓzïÇ›K ˜D5Qß[à÷æÿÈ8“/ endstream endobj 190 0 obj << /Length1 1385 /Length2 6193 /Length3 0 /Length 7144 /Filter /FlateDecode >> stream xÚTTTm·&¥KòƒH×Ðtw· 0À3ÄR‚tIJ"Ò"‚”J#)ÒÝ¥4Âãÿ¿ûý÷®uΜ½÷³÷»÷»Ÿç01hëqÉØÂ­!Šp‚‹—$Èih¨ ?7ćËĤE8Cþ¸q™ !îP8Lì¿äÜ!`Ò'F qp êé ðò¼Bb¼Âb À‰þ wäÁ^P[@ƒP…à ¸LrpWw¨½yÌ¿^V6€WTT˜óW: ãq‡Ú€a€áqAžhvôà6PÂç%X%W1ooon°‹7ÜÝ^Šð†"]ˆÄÝ b üл@~OÆËè;@=~ûõàvo°;@:œ¡6˜2Ãf q‡z*ꀖ+ö¬þÀ ü¹€—›÷ßåþdÿ,…ýJÛØÀ]\Á0(̰ƒ:C-EunÄc'†Ùþ‚=àÈ|°ê ¶F~uet0rÀ?ãyظC]ÜPçŸ#òü,ƒ¼e˜­ÜÅCxàþìOê±A^»ÏïÍ:ÁàÞ0¿?†fk÷s[OWÔÍ¢"ÿ‚táþí³‡ Aˆ0¿€¸Ç6Ì@Hîñ Ÿ¿¿Y ée ‡9ûü ÿµ_]CmScŽßÿ;&+  øñ \|‚ $]DaäKÀ?«hƒ¡ºýª³ƒ¼ ßÝ"¯é_{ý!ëq°ÿ,¦ G²°þMrs ÈùàýSýWÊÿÆðŸUþ/’ÿgCŠžÎο¬¿âÿ# v:ûü Ië‰@ @Ž”ì?¡FߢՀØB=]þ3ª‚#… ³G’™‹W€$ðÛõP„>†ØjC6¿)óÛoðSjÎPDîýùmAf@ÿCêËÆ ùýð@òòwìâ×Ú¤œþÙ‡ÌnûSw|‚BØÝ샋\=Òüx‘µ…<þÅl€‡G SäÌ€Ü÷çšyA‚ô§÷um<ÝÝ‘ÿ¢òÐÙ¿Ä <†ØàNOÀmÄC«C›Ï+eh¼¹Ö%0ÒÏù¸ó-± #–’ô²^Ψ½UœîàU´tü¨)ëvþj~ò›ßj }­À)½â¦=½uÂÄí)êX²ßÙ½ûDïQrŒReéÄŠÜ;Q´icˆ?á<´µïÔc"òg©nŸJöf&{£(¬Ö¬ùáSå›—ê÷D w—u Ö=úk‚ß©X²—]âCVbÍ£Ò43î«I|¸ÀMò® ^ìîí™%é myªê¼vø A¢ ÞsO^«Âp6—ð:»Èk'㮟µ©ôŽmgÉ[êyµæ±ÃêñŽ»[Ç«zªìÝu¥¤'9q½IÒ‰•ßÍ'J#`ódy?>„õc0 \ ˆ“¬k =ÑñÁký:»&ppÖ:æ™sZ2y¼/öÖpnlþNThh\}°–Ò «KI<Ö‹š7üùy'OH¢ÓÜÂ1£G# »[eØî3%c+·F’+FŽ’Iy‡`æÓ»ÛϬùŠžt‰.io'“âNÃöyQøêÊÄÕÜH\Î_k± äû ˜õ®ÖÁªÆ™›Ð}Îbt˜ÿo¶r%&2Z®ÉDírÒ=B°®Ý›e"óVTÅ|=05éGÕ#LtÆÓÁ†'W8yÇϸ™ñJÚ+!»Té"ídaå}oð*«üЋ*¡w xŒŽÖ°PÅCMØèØ<òq5­¨?æØ wKٹƓÄ_IM­»0éS¢Söå†31Úþ 3hGú“Éw…ÁJ%´ãn¥­‰£Äw}ÕÒüa+΃’¹¡¦”Š/¨¶³žf ?«ÉxÒ+É<ÈÈËr!åÕz«øÌ&а¦­¥w͇f :S7ÉÔû~­.Üö,ê+—MÞo8øôèMüÀ©þ .M³lf\ì4‘!Å…=gê¡ÉŠžšø1u\\ gýSñSìy"_»n+ç>T¥WR"ù¼$¯;cÍØÞ7STª38cÑUÎ|Ï\ ‘!2ø!]¦>61ýÅR¼§åŠßCf“ˆP!Ü*XÉ‹åNfÅÀÝA…þÏéë©á½ ö9@µý3›Zol5úPi_àè Öím·ˆ/F,ͦk~ÿ§ûõ T˛׬8ÖóÖ /(ÏWÖ† c¨´†šùh(")“ŒC™ö¿ßp«ûSÛlùÜ…³ý`Âñ‰¹cy6‘Ž0Á“!4|èKB ˜0ÐÙÔF*¯}ÞªP®.’O×¢~DÁª`”Y=ëN"#ôl,LäÝ•®©Ôe¤70Ñm¢¸ïiŠàãˆju´kª»2r™Œ²eJy;_9‡ï~-¨ûò~Í>îé;œL©ó¼öѪ- nÇ«·$yÚA9VïÎ6¶’-CñåTP¯–gÚ†6¨À‚oé18¹Žêç;ÄÐ<(H›él¿lÛÏ›ò4²pãV Bµ/d24[Ba`ˆDí©bʢз°ëC㲯܌àñ°‹š'¿å­*%ÈCÉ>ñР±ö–N+žÓ¨ya¥ðËá…O…ÜØD‡ÕS¼ (¿ÜãDµ«º,øœyŸ,ü~ź%¹Ý.J+ÖÔj^­‘GÊ«§ZI»:¯: k·;A('õf]Lr¦âQ‡Û…Gï#¼ƒî„q¾–pÁÌ-cóIJ÷ –Õë&H™Ê@qKÃÛ¥Ü+¡Uú}BG”Û*;‘i©ï!stó‹%…ñ/–^ÊMèÂZÖ¦&NóT½Õ|}’:&ýqLSGz®œšD‹/½}ý‹ÏD‰qf9„Œç0ž¾eì1Ú>?½Y¯ñ:ºdYlœó˜xçÞÒTø® ˜»_o­>EggÆ­¯l;̪4vó$:'lôä¾j b3&EÐݾIµ¡~B`ëýœÃ@çøáŒ¹ÒPˆ6–h¢çfêåŸ+ ØœGòî\j½W õoˆ0è31:^|}b-¤ðõ]§¡z` IŒeÝœHê õºŸêj5êFÇnˆíÞ‰LÑ`|ˆ:§+N^Áºx£ß·úYê°mW¼‘ˆ¶–‡=¬|•MŠ)×É'w®§]6’Ûªö‰×Ðu[½™ÉÝ'0À£4Y2­nOÓíÁÆ ÚÊ’è' j;ˆù8m…šË|³çArP[(«fàáá“cÖ«ÿ˜¤ÿ5JCMVú='öLw†«…¨.3Ö§È$&ÿŠ î“q´nHäÐ6•~ì&Þ’¸¦g6w(H×2€xÙ¦¡:š»;9ÑCšf耫Ž^Ãì2Eµ*W¶ÉKŽŽ¢y÷òZ“ M~uÝztíNØ…¥DBfŒÝ2ÐpDq%›ø Gb–Wo\öЭ×ô\`––Ê#Þb‚ÝÀc3tév„cŠ88š.?0˜ªÕ”;­¯ ') ¯Ÿ#ˆ;ÿõ䎑µ?©¥øÌ Ï´)ªÜÎ~8_ôˆé0}Öºp:1qnªK•tåžžQ²³ÈÎExYxêÛ–mñlaïíwH‡hº„S¨HöY¡œ¼õ‡úÊ€jàÒ±B|ƒwŸÞ®±Ì‹ÐÞôr;UÌ>ãE·Ý­å¬8ã(–¸ãǃ6Üë/Pî?«øØ—Q=f³˜Õ.9.r9ÎW ‹dzo1šl[‚¾«N0bÑêÓÿWÍ2ßJĦQwß”€}bÊ_D}ªK^5c¼ÞðÒÃåxƒ=Ǥ"ín&üÌÄå´Tkº')€0ÙäÌÓêÓtþ ö[—¥s¶Cå5/ÛéŽÒ-:ÅÐbÆçb*¶%†FÄbú˜cCÃ;…¡¤Èq$Rí}üj½(ë¬ô÷Ñ:èo:Ì[7Ë + øöѲÈ‚/)–Àé2yUjb42à¤je£å1Ç–¬jÛÙœ°ªèªÞ ¯‡Èwž”.,N 7½w}q;~Ñ^ý"ÖP1~œë|ߪ+ÙTò>]y·›¦8ˆÔ­{îu¥Ø Æx¥ÆÑÜN´{‘.'÷ ¦=¾ájÊâ57x‚–{úúï2™^Oå¼ï5lÓ²~gIÑŽJ ùL‡ä)ž·÷)<"rü/YïË}¿Á¥B/b˜ïòÌœpZ•—Õ6Î~¹·a7Õ í_÷>}‹©Æ¥o—ÕcdV• ›ñÊW˜².#`¯±¼ÿŽJ2 ëfæ~o1íJEæ¡kÃ'Ðþe,®AHì[LòDóôõÀ×)Mé©d•³ÅÖܚ܄»¦0ÃJX§ Úêöy6Þžò\%œ@ÏUqÐ_¸¶Ž»óÛu­bÇKq4Ô¦Ea²» ™«$ÄÎÒÎü¥vE6¹296ÉNN4q;’ÊZ+öu{ý¾å¸\ÎûÑÂWUþü.¨i¹Ö0—aùŒ=ÆäüæÍ(}4Š©Ù´x¶ÊЬdÿ ‡=†Õ)Ë=7£–¶C³6Dö¸õ5«;ØQw¸ÎKáq}¨Ø«6Ç€åŠøŒ¶D³4=5.lD±‘˜7­@¶_ÁæÙskšÓ2%š~'\'§ÀIΊ˜úGº7¦ÛòIE²süàGߤ…'¬êI?c?vI¸I¬Ë¬oÌ’Ç>\iѨ[×nVàð—Ñ utÔþ42/ެÚýJrçŽë jvù˜«î§Á¶_ÄûêÊZ¯©/Lì1+}Î{…»¥OŽ™èî?÷èLç)ÎwB”Âî¶PþÕS•æñ™BocBÌŽ”}¿¾þG‰5*„ðÛÜHÃ!fÌ£*Sû5ìó&º2†DãIª” ¹Üލ__²Z)¤îÜ¡ƒU/µ‡k=}uV¦ÃÀÆ¥¢Ìƒáh0àîvƒ~È]é`;=µ{¿0–ûUùí¡äžmèT»L8ÝyÝ ³ÓA®ü%1:З>·Å„­¡†Ί/?%'Î]kç Ðòr€º8D¹âÀÊÍ®V}›_ødšrÑ8;w–4)ÿ:c]¯H¹u8þSÊ”fÄQ땟]à2:3§µïÁÍhRµxm‡1¦vogf©Ë¬¢5}`¸ÖBvàBŠ¢)xôQ0Ý+•;OR/«Kt“âŸM¾Å¢o÷-Ô½ QÅYkI»\“"ºôèd¤â›®e?næÛÖÓUMõ‹óO6·W*uï_n]Ã/äi§[ÖŸy—¹ë|rjÊ`@ÇxÉÒ{xìtÀjX˜Àh±ßÅØ¯“q<ϾoÈ~L49ÅF—i¥z ôŽí•¬èÆ8&ø5‚u$Nç¢ .õöXýqUI¬YÂýÖKô•‡ñÒ™©ß‚}³JÎ,ñ8;ꎔۧD‚6t%Åä úkºˆ±ÁÉïyàµðgêë’ätýHx¸ò§²(éÁ­æà€SH¬Ëp_BKÉ EuÆU ^¾1l˜¸IÕðC•%÷ù…¸Y-+>JƇõZ%Xmã2 hõŽèß§†d§•ÏE 4HT¢QoÑOmYrŸ¿~Ž#vbØ`“­-M.[éÀp›µT¤p“ÑÙ;`G¬—H&{MÞ«ÇïIýq¹‹r4>g–Ÿãæ»êtÖæ^ò®þ3yHaÊI^R¸¯ÑI&‚îzdö¦¯Ó‚®à˜× õóÂÖÞð¶¢5ñm1æ›s³ñ˜ô4ÛÆ Ã{æ™Ø.²ýë|33d>2‰~‰¢‹•s;¡Š¨=û¦‚ üö•!,ÐÚÆƒZ‚j¾˜æÄ€ô.z»gã’WÏ\GÍŽªÔœÓbRt0šF‡MRì ^eT£þð*[+K2¥”ÎWà-g¹…TuÀøÕ±*ÑÐú_z”Ç—÷U>M­«´O—Ý’òsç®~š’—ê9d©»wÔUXÏ5VÚØO±ÊVœwrü’‚Wˆï¼õ³Xßýsâ÷.lÐ"e"e¸õ¹rÌ~·:'õ‘xGçãÍÐ‡ÂæØº¸IЉúª½Õ£"ÇÉúÍXß ‡8“øÄ·Hì–‹mÕöQví£vG,WŒ!™¤ä«:8ªëÕÚ*”øÆåKà‰9èGÍãÓÅ—VA?üƒ½¸µQWˆts)ëé4¸4yÄ ‹o9ô_¹8̽µë°f_ìvµHsÕÑ4ô4 *M~~Å2ÀÉ“¦E?‹‘Gw"]S pöÞ;(´f]RÆÅ‘s–oáÿ«ÿ<²\1É¢éù˜N¼u =ƒ`®†ECõÎFUù#]“©ø‰KÿøÏjÝÛf*”Ê¡h^(»SjôÐû½|¦Èƽ×;æ3Ÿ?Þöñ°#q=§íy¦?g–Ä÷Pñœ¡ÈˆøÉ«Sv¥~íËœº¸qÁöÅ%,A¾×–£¢=“xâé¶AÑŒoS¶~äKêw9Ú?zX,xï †‹ƒ(Æ¡§óÍ"¦cî:ÏüøåøÊg3]_rÉi%‘ .¾¡ÎW™0»A¢Ê¨Š©àð ñ>Ù†ð³f25´ù÷Ï €Âš;<ø²òÛÍÚIü w´hÑ|cJÛçÈa†ªÏ¹h"Ž:Šœ4PË}8{WP2õjhÇ•à-â·i&ŠR'qÄõmQÌØ?F’¦àbç…EÇ¡0|™ó¤'ßd‰§Æ2Ù´ˆÆ–Ohª<lCß ‰Ä“ÚJò¦ â`E*µ”coÀ >J‰y´3âHö“ÅI µÍÓ1Ö0•Þ ÁÞ­ä9›ÃØ%ÆÌ}=‹[‹8•ú¦²Ézš=e̓Ÿ©Ùsþ|áŠ]:ˆø^€þüÙu…ñuÌ®«Ä¨Õ(^àØíUÕ‚-èææ8G¤Ÿ ´¢UP8w}/v¬ä³ ÑÙ‰²Æ‚ÝТ=+ª¦ –µ1ï(ÉÐ##,µ­RÏ”Ÿv/DϒJS8H®Ã: Qš8lpKò†Ø+~àq¸k‡$Ÿ’ß!;ª£·âæƒb‚M>óú·p-®?oUv½ùÊú%r?Ú+¨’¶”˜ðä±®A]Ÿ*¯CAàë1öBÊ‘(¾õ.`Uü]…蕺 |Mf¤7¶ª=™Nèm˜ÝÃÍ:Æ¥m„Á«ª£3×eìŒç¨ÏÓQC¼ëïO,?{‰8Ëþ•Tæ#SNq€µÆHr·Q8Œ€}ïyú¤S³$tÄ4ì…[à« jÇÛªIìCŠnT¶HbŸŸe|e%4os<¼öj¦¡R|0/ÁîgfÝáúaøŽC’#òí쯩n¥;ªÝ‚rEÜy³õ· •ÐrÎ °ìmxÉi FÂÖË™^½n]<ž$<“d1dN¤ýdòÝî¾Ô”Æ6ˆÚÛ˜¯uæé…¬Ö4Ö™€À‘µ©Â‚„è@Fñ_H諸éÑ¢_-=SK Sà›"Àµ½r+vÓÃh²5;JÇŠ»$l1¶ñ"/m@Fîîåõ4¬µ¼¤qq-Hƒ¾3ÍìVˆà)Í™¶ç…Ooìܾ®yŸ¬øÛnÔ¥·¸Jý«8$KmÝë_*Ž2š%¶*‡éûãQLôá¿-¤,“—þÊð¶È핹•.Žº“·‰YYŽÄònëþsÙÈŒHÿÞ/ ©U¤¤æq}L¨ æÍÅ2Rz±Ë-“,Æ{<¸f»dœúRÔ6õ_§¸Uò˜ˆÈÌÛè_âß½z´¸¤¸1”1ûŸ)Їö]y§Èå®~÷•%ß…²çÒ]ß{¶½IŒçúÕ¿_šÜ^5Ìuóö¦õø›±¯U •1Í hóRÚh> stream xÚ¶Pœ[Ó®[àƒ» îîî\ÜàÁ=¸Kpww îž@p—@p9dïý½;ï÷ÿUçÔT1ÏÕ«»×Ýku?™Š:“¨¹ƒ)HÊÁÞ• ÈÌÊWT”å°²²3³²²!QQi€]mAÿ˜‘¨´@Î.`{¾?ÄA&®¯6 ×W?E{€œ›-Èrñ¹ùXYl¬¬¼ÿãèàÌ0q›™rö $*qG/g°¥•ëë6ÿó 5£yy¹ÿ ˆÚœÁf&öEW+ÝëŽf&¶u30ÈÕë¿RÐ X¹º:ò±°xxx0›Ø¹0;8[ Ñ1<À®V5 ÈÙdø]0@ÉÄôweÌHT +°Ëßvu WgàÕ` 6Ù»¼F¸Ù›ƒœ¯›ÔeÊŽ û¿þv`üs6 3ð?éþ‰þlÿW°‰™™ƒ£‰½ØÞ`¶”¥˜]=]&öæ¿Ml]^ãMÜMÀ¶&¦¯)7H‰ªL^ ü§<3g°£« ³ Øöw‰,¿Ó¼ž²¤½¹¸ƒÈÞÕé·> °3ÈìõؽXþ¾Y{{ŸÀlonñ»s7GM{°“HVâ—WÒ¿6K+€“•‡›‡ r€<ͬX~§×ðrýµüm~­ÀÏÇÑÁ`ñZÈlzýBòq1q\Ý@~>.ü7!s°™+Àd ¶Gú7û«dñ7¿^¾3Ø ÇúÚ{@ëïÏž ^ÛËÜÁÞÖë_÷¿î—E\VFRJ›áïŠÿ³&&æà ða˜Ø8Y@ 7Àýúà÷ßYTLÀÿ¨`ý7TÖÞÂdý[íë1ýb÷€öŸá üw2%‡×®hÿmr}VNV³×?ÀÿçVÿ+äÿ¯Ãgù¿5ùÿ$åfkû×2í_ëÿŸe;°­×?¯Mëæú:Нc`ÿ¿]µA­"Èìf÷¿We]M^AÔÞòµ™™€̬ÛÁ.R`O¹ ØÕÌêï–ùÛ®ù{ÔlÁö ðïwËk+ëÿZ{/3›×÷‡Ëk_þ½dâò:l®]ão½ŽÓë´7s0ÿ=wlœ\gg/¤×«%N€ðu@ÍAžu6€…ÙÞÁõ5ðZ³ÀÂÁé÷5s³Xd›þ&^‹òˆ‡À¢ò/½zªÿK‰À¢óâå°˜üK¯k¦ÿÒëfÿ!Îßô:Ùÿzÿ>ó?`ý‹œ¯äøúvp°þáÃ`±ø_…Zþ¯J­þÀ×à? Àbý¾J·ù_µÛþ¯ríþÅ×qa±ÿ_¥:ü¯ªÿÀWÎà« —?ðU†ëø*Ãí_d{ÝÈó|ÝÈë/ü¯V0ssv~í•¿&øµOþ‡ÿzƒ@ž 3¤å3þëÚöÛjQB¦ س´[6¦‰BC×É£‰êÙY+ò¥RËý@)Cë.%1§Ûœï‹—>Ûu¤õ^×L¤Rû–¤¦ñ /×sI>7Dä hÍyÚ)b$|EÎ*ÄQo»…Í-Ô©Ð|ijû–’<¨±Š¥¸åBÛ•:»«‹³pˆxµŽ7Õ\[L‡5v8¯ðh>mÚÅoEëG¤*eË tÞ!%zT½Ý^Cï'î‰ ”sÚ9§üàŠ.É?L$Á_¥µ–úø©Èý(ÃÇTSL†No†.©8~'s@ûÆ?¬jÄn7f×­€¿7Àú¨ô1Kô[H=1šc–±êØàÎi]ÍeàšÜéËt \{\%û¹HÉqáO™vV¢*Ûþ2T€æ&‘ ú½=ï*q‘Ô[“-–¬|q¤ ig¬…xòó1:×Úõ‰™ùG½Ò÷Q}–Iߪgî>G¦Z½{Ö0Ç®÷£Ç‹{´™-¦ ˜5 c ÍWT\j-ä3ŠÁjaáåUÍVk"}c{aQPÃten„ŠXþ´^!©9@øÔo4ûÞâiöý½õ VÅ]JnÄ{ãVZ›‘}Z„Œx]™Æý’†ðNŸƒ¡n—¹¥âÂO¼ußo&SUi>RõF¿™,iˆ ©ÀØvÊÑÀFœSø%–@Z ¾Ð¶Å>ëàg,TèW1àÌ ¢E’T}¿Ëaå‡ù”ì÷èp“ª¨òÑÌöcc ¬÷F$ ¦t¡J™^ þ(çø„©4ä#ûaÐÒÃ9UÓGæÀÕ®”]‹b¨ÁòEYÐÅ¢TըʛCüÍËKõÓƒÖ}$š]¼ù(ßÍò‘)Yt(åÿl§- *åEØ…~¤3Õö&wy|wÉ[5ÌO}£ ߈M@ õ¼;éNtûÈb”Äåó@ľPr2ú­)â:3MŸq¢OØ8JðI׋>ÀÅŒHßRöŸ0|›ZÕ}”«NÙ*Ÿ\Ìšz²ÃŠ>QI—Y)ûžz³9#V]Øžë3»·L›ÌI|ÁÙÒLjµ4¼LIr\BHóâí²e¬@®“‰Î®\׃dS ¸5!=8­ˆF4•Ö J.âHœ|–¶ï~Åž°¤„a`Ãć`%Ë?<ñô{.‘¯ jæ=#2d%¯ðUt„øçëa C<¢gù~µãXWdYY°4I8>Cq°ÊBJçÓv«ÿºFþR^‹Fg–7£Ú~óX2çÑ‘Gj‰ˆâ¯ƒ_’RÁâ’©U„±“~§ó«êeîô¼Ç-®WÂ1œ•£m@žošŒÌ2SzŒ”}b¡b:Í!Z‡xB­kɤ½nloÍÒOz€V(º…®×ÿÚMÖ…¦À܉*ùd”/ž3ìlv)K¾BÁéhûµ}»'ŒBû±'ìèéjq 2_‹“ Ë錕AüÝS¸bŸù$uµ‡…Cðvû:#ÏôFåü†Ù[i­¤TàEoã,¡í0Õ7p‡Î}h­'™åÕt£u=bS¸}8MnéÝúø%Õ^mb~ácx¿¨Ñó¨k~ïÓ3BHÞ[mRÂ6¥Þ7kÍv8/ŸÍ`]6çÃ1G)õî*‹"d¨›ü9ZÔ¢ªbNSŽP~¶V?Ê "\¼^t$hql'lÃYcˆyX­zO#¦µ ˜õTGý•Ï/1±÷¡Sç\Ãó6Í0h³’51Ú?VŽ ŠZžÇWöwöéÐ:CÖèÂÕfb«å?rÓ~µžAãs(yÄâµÿàvå`òü¨,ïËLÐ+'“J5žÎÅl}*†)}:ϲµ<¥~^ö¨þr:çûS\›.?:5èsàýÏðñE®tw¿+¬/lbáB¨PÅ3c—NåTï·**<Ç9ŒGDú&òl«º’Õ–”à³qñ÷údžpz¨˜¾$}Hm»ÖÊžqF*ÉÓ¦7‡±/qÍš¯ø±K€'a Ü †Îì8r~Æ[-´G©©H·ŸbF/Qlm‡DH®¢Œ•SO/‰W²ÊÿñX…2h¾<”•z=¬#ÎÁB‰GJznƒ×<É+Å9ÑOE(ºÓ½ô=¬ËŸ»¨õëÆ\S#êŽHÞ²0×—7 s±E±eï».Q· 9PÚqÓ&ÈC(ÒìÉ:~}Õp’í§¤¯áAå~r¾%m!hÂá Õ*iöS|´c8">TȃvhŠÀ~QgrÄì*Ê)Ê9bìØÙƒ‡Ú¦N/ œ¨žß ¼4q–]„D±Ö•™¡L›#ÄÈ̱û:äå¡óÈêÕîôóß2]óádò‡–@©"¡y´…+PYW ü°€ž±s%`L[ä': Rù"=6Ç!Êú=‚]ö]º&&ôü­ð±ôš9®;ô m7‘éœsX@í}½a f$ïm3(Hñ˜.œây#®£w{îç!C™Ë._énk†¦&.tÇP(sKb¤ïª¨a«=N($§}]Âh¿KˆŒÉºî`<’'ë̤|áLèÀ1µ<„=æ¨QÓÈSuÉJìv;nqo“àI¿©Ò²z<_³6¬@ß_$ŸÃ}"Ž'rA1-÷L#ö‹½ƒËµ-/jÖx£éц^ØPÝT°*'óó>:áç¶gF:ž| ÒÙ¡‘ä½z#ñ&X|¥8¾™]Ý÷Tæ±k´ë·Vv²0uÁ\g—•·¼cjÕ³ÂYÇóîNno°|E›[¼[‡”v%ª±8± ±Š®Çe[‚ ¤s3öV@_ñúê7‚SªÓ&ñ²Á/‘A|Ÿ‰¯:V½¹ #9»>îF— Œ—N5 \BÙ |ZTC>ç;iKÚ7‘³l È^G·›&4Ï“QA˜k´3 þ¢uó¤ºuĆ,[1ö;¿uÍj_]Ðà¡;O)ƒ¬ºvÊHê¹.~oFµ}Äúîx‰¢Í4=êÞ±Æß’=ÄšD)•„&K ‹?E#{e³?‰08‡iZç‹ë“ÿ‚Yth'Ä ’0âh¾é “ÊÒ‡_Ç «¼R»$ƒÐ›Zßbo ;9¿þäèøwÅWÓÕM]0À[2ÁŒ.ã.×ÐGØýð£MÔD‡ëœÔíOÐ4œù*„ÄÐýYŽDÊ< o’ª³.²ŒxlOpxßRR1j¢ÆíE5ÑQ+Ç‘š[×i]ÕAöôé±A+&N‘ÍÀ¤?îÐC AZñø#àÉ·Æb™eS*ιôá#šš–ûc‚áÕ%Ìy%"äõ˜o ÓGÇ%Oé“§3è2´˜lxaø½(Ë.ï%ÛÚ⤰ÛóCÆÜ‰:Šæ/-¢âRé)ºv9¡†oŽE¢™1¿,¹,´ÆŸ Z--Ê¡çÎÌŠ¿•~ªvÃk=˜Wʼnñk¯ÔvYÆÙBé«Þ¤Ž¨ ”Õ D—;é^¢íÇP3Õ‚(µr'm¨pkû×pNRÜm)®i¸.2ßDÕñÜ&E¡È¬wŠ-qgTƒÃÑÙAº+ž£cÛ;á,^øçH‡B·N†;Ɖ?ïk{!ÐwßÓÔeûA_²?Ãôüœ£ÝÝ–-¬’¾ï=ðžS³õ¸u«4á¡pU©vÊ;ƒF- *¤| ù=9+A]9kJ;ÿP$¡¢+ª¡pÛ Øx"5P6ŸÒLi(%à'Ç|;%B<Âá¶¾ìü¸%ÁN eƒÏÈzþ»'³AÖd&¯ ?ò®Šˆ(უÊ7Uçñ^pyúð’“Ø{RêÏÁXá•O9õ›T4´õýhZ9Q߆VÄ?ygÇÎh[¾awùØäî;\À×ó’…Ü. cy†L§nJ6|lx[¡×Ù·™˜sÝ,'D½A!tˆ§n–±y…O2âçÏ)¸c'¡™Òn5w ïT¤³<_B S¹F bb±E÷u=‚mN{6ëxÀõOú¡ldÕ½nUycó35¬«}-¸1ì«xC-àjà CmCÃÚq–ÖzŒwVí®î`ÃK=²Ä~]‡UÉɶ¤3Äãü8î`Àµ¤—Ä…J.Ó± ANX2‡3frÑÞªO0>€ÑŸ‰¢|>=é Û”ªŸŸN·¨ák^°Xí_+¢¥ƒ¨«J'WÙ 2ÁpbH4TiâÚv#-í÷Û€ Qᓦ…µ^‘¡—ó3!7V[™3úÔàŠúu UâŠ(ë ‘â:©}­ãí6SÙs%ºÚÂ÷£É|ïÕ1›u'¸9E:-W@§áÎá J­¾­|ܧ¨Š Wn ƒí£üR O¥dQ- k×0ÕÑê8tež9“óðŒ ”R1<É…–Ð#³JXµØ·™lîJƒ¶Rß35Iiš·½|wG$! ®1—Ù ‰kt¥r{ ]"Q"’©Ú¯¾îx¯J trA†ΖM;Þøøª[ß§¶õH‚ÉQù«@ìtkhè7¿ô)y¢—aUjMäÂíáa8ä–y~¯Âä‚§þi·”BšÕÇ«½h…³;ËJ¥•ì¶Ï¸ö°xØ0_:äñ®);Ëºø0ÃQ¥ kè`7ÕÑ1x†ÛGÞQ”Ô‹ZÑÕ Tê/àFáïêP'®¤¨»·^?SʧªFnÒv ükàŸ8xc(;æc°e$¾²êzYÑÑŽìñ_èñ§§µTO?Ρïy1Jn\ÜmÌk= L ËùG Žß \Âßo+3­1€©má\IÀ®q”KµÏ¡ˆ„xy8sŒá~»µ÷z“Û”^ÄCŸVJ¢èha=Xåmô?­M/v¸VDäºf&Åi'Ë⢘T±€1êѶòë ô•˜›Á†H›ô}þ/SZ®É¡páe3£ ëü{$ƒÕ­y+A¦ü ÚG£!ÃÒhR>cŸqá//b]šð‹ðÔy­p;kW×sψ˼2ýNšl?ï˜ €©f_ÚÍÏ%ßâ‹ït«ÝrºËïJÞƒµ¾“Ý7ïݵÔ×ð;%£%’ !ìºÆ?*Sqk{']¦žX¿¯é=Ó´ÔujÙ9Ù‹‹Uï!J©_?×ǰ˜ß+·}Ö‘U8c#â­¢ŒÈ&æûv^Á¿å—0Ž·A’äD‘ªî$³¶ÍD÷•\¼(u«ï”_!<Ã?&|„äáa`fÇ}jk5\Bg>☺Á5ÎÂßý(îø~:bŽ rî¶|•½Ú‡ò+¦fëû‡âtðÎ<3Åø‡³¡‰FjA»xÄIÚ›UFؽóèiÁñÞâ² ñlÃüMk”‡Ý ©MËÚ‹fÝ‘;ÛЂ;‹ÇºãÀŸ_çGÆ“m~m™iì ¤R=µ}ì´s0Œf—I„²äeŸ MÎEÖ>Ô›ŽHùeƨD¨Ò«ÑS.Ι•?ö¬,£ ÷ʆ-!3Å÷gœ\ªL‘ú’÷,~J–kñJÞd6TLCº3^­ºš‰ûÎ6-¬#pj‹²°ñrU¨<6uÑ©AËc 5*”Á¾fˆ%‰ÇCN/nB¢ÂVˆúî{OâdëñùÓ‡~œŸnLŒTãSŸ`ql ÉUè믻ÉÊË?Ÿ@d­"¢#?ÉdÄŽ¶\ªò|Í!ÆBÞg]8m’øÜÜ”ç€g|¤½Z ? ѹy‹RV_þµÄ¤æ$·ýRÝo²ø9Lã­Ø›)|‚pg3 ÏꢈáKlïµ<:'),|ÛÀã—Iÿ-´/R¥6û VêÇ]`ãº\ïÏ’på{µúò˘¦Ïíå¬_Чø~¡âýäCíÌÀYCj±oå5êÚ]P¸Q´D*¯5)C‰– ]øˆÇEm^”F8pOK”ÆqÎñZmÌ”n£É#ƒx‹¨édWEËs£?#ÙÑ ëqp85ù;½#qÙaU1bIX.:^!wKj9 mì(䉮TMÌ/í~ŠL‰ 7å¢UŠ}ñ3×¢_þ  ¢§â,Ã*`dÞÙó*ÕJt°¸5cæ/ì™:mŽ|CdrÇUåH5¼ço[œû²ŠHïFާ8fuǕƸýø…0‹kàûgU!k‹+5ô¢_=§ {'E+¨õ˜s>.¨¤PEÖq´=»%eI¸lTg¬AÌø Æu>JA0t×ø s7KÌÆ}œ¸$1šMÜ{S²:”02‘az^À}á2c*ç½|•Oˆ·swòž^-õ°d€Ç8Và‡¥èÚéPÅ×Už6#-î¤rœý!ÅÕÅʹc…)“L’Qt çÏÑúÎg,ž ðsFŠLýŸÒ•cK@N¤°5A &Խʠ>:¶eé~؃f}{ DpÁ͸€Ñª7A¸Y“Ëf\XrÆ3yöô—~~ìkÌ$_öçR•fë€úÝ Ïé£lý:Ö‘‚( ÍL¬²ª £«‚nèX ª,,‡Ûóœ©ñb䘀  §oWÑeC,ÝÌN¯˜¸öÚ´\Ò*»º¥¼Õ«HÁÐIò‘¸bŸ ËWº?jF}žó[g¬¿g¥?`‡‘å ò?òº´(UÁk/ðchä)’ @1Ë(iJ¥-%…]L†÷÷‡'¯±*¥+0°Ø¶`l©ŽW8uê`-"Õžez\Mjyô?ž—ªJàeö½áyOû‘üùÝÌ“f66gO†<9ä §„Æó%85ÍÀ™ìƒ­£õ¹@•¿žª…§øV{²ß›Ë,ªYÛ€ä¯mN£ÍËÏÓÇöyo“;›»L~ ˜wõN;QÂ㣵6[áë Ħ¥q'û"ÜCà4ÇRéæï/üø|ä…|©ü8 … 5ñ3Èt¦ x² mÀëWð{áÿæÛ5Î\Y¼†(fEÁçö‰‘;d’O0öÞ )ðªB߇w«+lv™œÞÞñ  Û¤[Š+ÌÅ!Í.=O&寑LÚbQdæÃóâ$‰(Zwèvû²ÏT¬T_ÙKâ·úk¹ë54bޝ|š"B¨UªZŸOYo2Kìb¸¡¼aSV ™0Áÿtem¦žfNQ\ç gpBÞs~ä—ØØ—ËwzF‚ƒÕàÅŠrÔåwšvt÷\"aÀøÙ¾µ‘j(Éw¢h§£ÎM4¡I]I„¹P” }ÌÕ`µ}Ûkq×A b7PçÒ«îCú3ëTYî„‹œçîíÛ¨ÊÌ(ajµ«ÞwE›hŒ˜ò@î(6WÈù9;ú½m;b` úŒ >PßîR·¾á]H×ÿf‰uɽš*~&´€›!DõáÊè‰D|ÚÙRMÃ\¬ˆ÷L¦ÓÛÔÒ]MtJ×\*¯ÖM›1ÓõHc!'²¶8Ù·“…Åu6Î/b±Øjeϸ=ÔUŒUTœ‡TÇäû"A §r5ñv(Úé>ɳu *L'6-­ÙÂè9Y9ê§'“Žä¡ì2pðoÔ•PZTUÝ>U?…™¾Qs‚p‰™bi¡Ü*~-¡€yê¢iùKn°äÉý¸æ¸|qmÓõœ[LH'e`%uU¨ì=~„™ýhÅwm ¬ë¢g=$®€ÞVtæ ­w9˜‚)æl`*ÔÉ“Ôýâ6ç"+‘åc³Óÿq¶Îôn?E0®¡¤ã|ô½ç´Ü¾Ý‰ögO·šú+¢€¦p–D&Ä\#ï~S_,/–È‹ÕPM¦(šŠWpýåfÍ%:p{®©&£/VÆÅ›û'Å{Ñ:ôo“±jÙÌØâð—ü¶†O ΚGž˜3‰NÍUŒYÑv™µhѲT7¡ â×òp;dWQÅÑ»„ÁÄ÷¦¡Q`ìþR#WNQ[¾¾8­UÅóI š“»xj+|­IÈKŠïaBa1t‡ 0Ÿ=’+f>A4ËMžÚ”²3wön²ñ %}È8ö#Kö×’ëÏÅIûØÄ–Ž£±6, £ŠÉÙ~¯C2C°A¾o·Nõ=/áí­k5˪¿H÷}jæAŸ5#‡ÏÞ`BCÖ:sì>t"ô ç6GãEƒ"ì(UXa„†Á_âoŽ#pöpd–K5yãê‡5èbwœ¡ô-@®éZð.ûYjÏú¾Þªq¹%oÍZGgÍùÞ^ìI©×‚+vŇ@ùјŸË_ž†¥û/$Íýl°ðžb—}fº&?…32»NMìé%ÔÙÕ!l»@†B&ûHȬ…izAoå™ÊêÒ+ªj/`D`D'ï+ .c–ËªÑæ"ÃàFœT»\g¸·ÞC¬l ›_6¢Ã»ë.±'u‹‰c£b q§(R Ÿ{¨O¡^BaùQP¤[žMúùÐ+?ÓËOåÀBs@ì–m1+nN0>gìϽÏêKV8âþÙДFyuE¶°÷n’«5DzJž^Ì#…þlwC_"—&#Aº¤¤êGPEo=T=ÉØügë¬y#éõNž²z^ÂçiôÝüvlõˆæò‚ןáʺL½šq4™h¾rûH¬5É º%¼n—+†çœ\Øã£ú·/.•ƒÀØóÞ_Y¦¹þ÷*dºš[vê†29¼H»ð—^0r’Ƭø™YÔ|ù«©‡i/[6± k³òݯÿÈï|ƒ·>Ñ]¡^ͽùÞò ¾%𭤇ûØFØ~JÄͱ!äºÍ¥–¨á””?û¦¬˜jàL?Ôqgü™GEÜbÂ¥:¶¬sQvö#ûqÓqL%<Ó—ûÒ_NO`Ÿ’~]IÍY=„OD"ü䟴ç)EÖ;“¢xŸ `¤aO1ʽ¢ÕÛ[µ½ë F|b7Ú]ßâCýŠu—J„.­rÑ}Rx$%±Ž&T?bÙo)ö%ŽB[”™ÝfÑùÚfO!ä(}Ð’1ßÅöml´hGu£‡âȉžyÑÓ6ÃÃ>E|ûâ0&suÁ“’ÃAÜÐz{„K¼Q?˜Ë·D\ðæšÙz#S0_.jWgJ‡ddsiïNÚmƒÄ ›¼çÅ» ·EV½—°CΉä4„‰E#4xíFhærÞS_5ö¾L-ö"Ø8Ä;˪mÀçbs&õ=¥·8&ø&6O&gêŽêMe»»¿{E^‹œ–ÜdusíO¦ZƒÙ¬¡{HÄ(²¦·Ÿ&nêéÛð0½Ì˜ô*bµmb¹&¬Ú;Î~Ûû>I¾*éOc˜Ün/?cb¯‡·ªR®á·ŸB‹y𡾷{á÷|›Üê{—BÀÕ•àé^“½ÃHžÅUuPÞ—Ñ||ˆZ»nö¶§(–,:ÑÄ/hŸ×Æk3œöŠ“éò¸KI!÷"3®Ô~Ý-ïÑ÷«_–VËyøåg¹_áiØAªb}~aRÚšÑpÍ>ºö\7†íx$CïbÆ<±ê÷Ë/©é:lyéHeƈюpvWL@±»-Ùm®Õ@‘@*Ôb WÒ¥ÃÜ{/1~gK¶wÑjáåcŸði «Úcó-Ê?+L1.³7 µÑ}EÏRáB…Ñ2nM7nv"F etŠ Õîæxm”1/Zó–ô­ÈDP®9Š„‹lgkaªá!XE'"±‰„M:‹> ž%yˆ ¡Îj»Ê•¹Z NîÍžÊ8§«ûOÝaEmfö޽õÁ¾ÛuŽ  ˆlZ…°bÜT±ZÞSoˆ–{g(îÍ6ž°%€ó¶Œé0õõàúŒÉ]Q˜õúa,Äxö9ù ŃÇú@ÏE?îa^o‹èʽw5.ƒÞm1þÜòÕ ôŒöë—,®ä?×j¡cr[Œ¦û‰gG¨JNa£ŸLæàÚî™ϳò¨Ú*‡îê]ˆ©"·{±4zÌ'ï ²w¹0ã "_ ŸŸ(œŸË g¨‘éé5ò“š¨e¨p(¶“ÿªÅHÏ&›Hš{]ËVE’ƒ$Òí ¡¯ìlÞƒÔôŸ'ʨfk)a„K]”óXJܘUBº~ב,êå„ñ Ç»ÛМ£Ãcý! ˆÉߨª‹íOÞù6"ˆ"YhI¯¢/SrB‹Ù5‘¨.°/šoá,솫¦ì»q Á4ŸÅXˆ%˜]ƒl´­Í<ëC¸ÙKÛOƒ•^¼r°ÕåŒ&ô”o )ÁîQ¿C%ý/ÀOÛ$!pºd¯ò¨§ú./ë£ ÂûOÈåqÁToó}‹4?eðÖøX)ž£)ÄÕ¬onY3Á ÈÆ„÷¤¡WD$©û+vj¡"û¿~Ý<Ž~ «Ëk6X¸§³ÝkEc)Žöös×M·|‘t%ç[äÆtz÷û¹‘êÅPþÜ #T×\ÓÆ{{üôoÏÓoxž§SræÕÔ' uäònTÄ"-xS|(ÅQõ-QKú8LÙ1¶ÙÀÙWÓ,„Èb‚h—ׇ¶J+A>ŠôN§‚õ…\[)Îòç³ÿ¥ †N)[-¸1:MŽ¥5-zñ¬±;2)vØÎR­}$§¼EÈ„r‚)‚r ¥ä€™ëòé–ž›B¿U[oQÏ>Œu;Í…q_p#=[ÕÜ⼂ƒÈXQYôíÌW–ÂvS^l¥¨Ý±«ûøD/‘çœÏ ÿ`=<°þZ=E¢Q•‰;Óv~AÂŒdÊ3ÐB3 õ c{uè™dnASSM~Igì.Mì£PŽEü8¸òR-]ôwÂÏ9Žv'T1¡-}]mòˆ¢èyúƒ2™|Â8z`‰ƒM?”+pÖ7"¿êÇ 95=lßƒÕæv1§PÿR!Øš‹ÛßÏ(k¢NÆéä6á;J‘ ZçˆÌVO×öêÝlùúøÇ­ƒ¶N‹ñ~™ØxÅòIT_®Ú43„†`l f ^&õU±XMäÉEpBº³‰Ò;cµDu µå}´Ú5:wÈ$[ †ûôšôÆÃ/¦¶g]Ì¡Cô»#C½¸ëbíj‘ÙÓu „Ú\f˜Ïs±l«}dÑ}O•É‘£%ߥ­GqQŽøâ‘?QF†×¥¨½CÊF‹,î#p‡ Â5Ùj€‚9ž/aY‚°ó‹ÒHâå 4ÇÔ÷ •fmí5 «È{“ÅS#4uÍbwÅæ¦žlÄvZÆ­'áð]D3i®¶åÍ5]¾î›œ}”$w)³ÆxpfÖÜÞ>U£¢’¾mÁ=¶ Á»úBÛŸë“íüûñ™Úd¦¶Þ±N‚¯¦iw¦Ð!7Ȱ‹ñZz;píèæg¡‹ï_Éõa’r•Bo.>õrHì’·ÎFKךõ-Wœèö`U¤÷ìC&ÆðOIåškܪ%L"·Žø˜]AãL­ô šYh¥ûÆ+kRYXX†ù.Ì·$ôÔÛëñËh~ˆú „Ó‡ê¬Fhþ:e2š¿·Pa§ÚÄ×…KéŠÖøæxtì¦^P[,/ÊéÐÁ<áÑ€§W¢®irA܈g¶Û¢˜‚y`[ÅÛKÅ‘4º2j«\îÕR6Ä·žýcê}µÅ9ð$!ópðžÛóa©Òæ·O°~K$ÌoŠÎO ÇvÓR×t8Y(4³·o6öeŒðR*rCjù&NUÅÞßñãXÔÝw}?4™MO9`voô.Ìg $—}(W”õw7醠aÁ3ø~C»õ€˜HþÙCMçJœW3oïu+šà¶‰" ozY‰‰ Wé–ÁN”z+9Ÿ ú4”ú¤¬Í¯û¢7èŸkàÚÅPôE®ž_¨6–C)dÛh‡¯zØåt~Ë&,~cƒNäø™…7Pèë ^–x ä–BMµóøöÜØ( njÒ´s(¼7Gý­lV.œ?µú¾”ó¾Ür‡ã–#àl°F@í´k'£,Šú ‘…; Ün7¯¨ØÆ >t²jÀû¾©\0Äú† ù©Rî`$Euã<0FlŽ~ªZJî‰4Pï$ÄÛ¿¡O§uO¦ÑzáãÞ]±æöÒöf1Ç$”d{AB™³ ÷@Ý"(¦æª®¨å@Ú)}îÊɧ‘ß\xæ@ ¡#NŠÉrÒr¨–ÛòŽ˜ÁžT ”2ƒ«ú—æ:ècEs×è‰:e…ó jú£…ªæ&=³àÓ`éM=÷IÂÛ¢•óÎn*!zNϱ7ÎêÉ=a”S”¹Îõq!SFQj™ ã¥øG³òvyqâÚ¾ÁŒ¨†º#Ãíp¹ösþY,¢í^ž2èsNß}WX]Øl$ú~‰_–÷º²ÐŸ=ÁcìWâKÞ¼NU|ùE}ôåýݯRgÄŸc°fÒ9 ß%Ö¼+r Ùd|ºHõ‹ÇÑ!±1@Zdç¯mÓ÷y¦ç§#Žeð5Ž.¦ûÐ@É.aÁ™{¢ô¾áã®Un%ÂÓEÊŠÎÛ-=oMJqJ:°` )¢+û½-lxø-2€ïäØX(³«æg>{·h}ž¦–â*j4‚|ßÞŠL÷]Ü`-¶Ì&cmºëïÚþCÃùN˽ý3Чa¶õo…íÌ¢rßâÛj([“h0&Œyu¸)f­^|À%…ö’ ¤dNWÛ<¥( p—Öò+“〄î¦b Ÿ ÌZ‘>ï³8íø[½rhk¡Q2™òB½ƒ°ßÝ×NÅ k­½µßCQk'¼7%ë½éá ?ʆÑÊK¸Mz|/…uÁtÒkÂR<ùF\l¨»« ÑóÆ¢X`Ö|™Ûç¢ u ¹Ùó.Ý„kçvle¬ðb¾G­•>qø3 ãfRìŽ\S^ɶ‹éòTwD—lF´ýøþ‘®Ø¹ËcºPÁS®|(81‚ñï–hl·—g€Fo”A•]86Ê^{´‹]‘óáÀnMX'¼i™Œïµ¹-ª[ï]”õæ1 DÛéZœ…ûS»Í«-+cDì¿ g#9>Ém\"„ëº|ظyY<í„¶ÍyÒR”¥q¬œ·Äкk²“T*¶ÆÇ@•#Zƒ— lZº¾öMº+Kã.VÚI:ßZî4x;´ ñy£^ŠZGeIç€ .†½ÂxÖeû)°gXá°ä0o‚)ñECQš˜¿L¤ºß þš¹ë|»Àm²ôy&í)H‹Æ«¢œÉsððìK1„ÇÙΆ:Òqñv̧ËhÅ©»1ö "X+ 1‹Ò§¤©ÄZ{ötÓ‰Á©†Fù¶(·g9I»­bt)žae/%—ْݪÔH[ƒIñ÷_GŒÇrq BðŠUlÂÊÉ ò²S×jçý½î½]¤WÓ‘« ¼ÑÞE¯jóÛXéYSsûtW)f®›ù™ÞYW˜¼—M|ÍB&¥Ò·.)l´]¨+:*LTÓ[Ãq@jQƒêHÙ°¥o–NFD笱¶Èß³>RE2ßÐx!UÏ»¶.¦Sq_ Reå£)?ú Ð7òz“Y>?¿ÂK-yЕfåN§W>ƒöÞLk_ "`νJI)†™Iy.ÞÍ¥§Ò/Ñ´AÒ{_Ñ£¾Ü;qbËü*›,âRî[]±ï#@“÷ÀÃs0b{±øÊVAhØž£ŽýUÍØ×Áó}›Kq¿›ô{’ ¦¢ã:»=R˜h,;GÑLº²Ž³ñ$§þçÙ øºÌóãØ…›ÐøÝUÒq»É—ñU50ûî$П`M?}4Ö„^7[*­üÉ`a>ÀŠ Q˜Ã¨ Ãþ 葚ž®ë56V„e~”ŠwÆ5ó{Ç(¥¼«®öËÞô½„Cà›4Æ%‚”5áQ%µäûkËvQ“t„·Th¥k–üüÜÈ~ EïHÜä:¢.èGÏ÷=jdÔÎR -òmµ}:‹aPŒ:®K:~íÔÑÈ…it4ØDÐ$[¯íPMÚtÀSˆW¬X̹ï yà âÂíö0ztŽäׯw"†ª?À$1~öolžèº."Yûºv×;øèñ2øc*ƒ•v®¨¹‚ég’D&vðY]AâKC Ê{ËÆ¡¯`“ôª¹ мl=ÍÑŽ‚"2TlÃàãÚ®g¬Ä«ÇçÕÞ™²ƒüØ_Jq££ˆº¢VÊd8×-ôòR0ýÀn¸%隷²(Î^Aí¥ä©òo#‰–ŒõtÎW‚Îg^ÂUí` -Òï_(Bûφ/H8ñ%9Õ"oæNƒL !Sa-8ëÂú§¥}—,vøm¢n»/­Rcž14'™Qjç)Mc˜’©ž—­Ku>ô•}ý9!®ˆ™Ú’Y*i}q õw36;&…XULP¦ |~l¿*ì!ûÑú¦©ng sÛtÍ÷º+ØT÷™:ƒ;qGò›44E“ü –Ÿ|Š©ƒX[¨"ž…&ز€DfÙ6g9‡W_ØZ)a}ÀZ´¼ÌKJAþãRÐ\ò'Õ¬+„âO+.âExÔ:M2F ðVýÿö´A endstream endobj 194 0 obj << /Length1 2821 /Length2 24140 /Length3 0 /Length 25705 /Filter /FlateDecode >> stream xÚŒ·T” ¸.L§t÷ÐÝÝÝÝ C7Cw JwHƒ¢Hw#)Ý]ÒÝpǽ÷ÙºÏÿ¯uïb-˜çÍç­ï¨ÉÕ4™Å-Í2ÎN fv6€¤²;€“…‰šZËäüGŒD­ts·uvøÃ@Ò hˤÌ@`;eg'€‚‡€ÀÎ#ÀÎ+ÀÆà`cãÿCg7€”™§­%@™ àìtG¢–tvñq³µ¶ÓüÏG=€ŸŸ—é/w€¸#ÐÍÖÂÌ  l²:‚3Z˜94-l Ÿÿ„ ²\XY½¼¼XÌÝYœÝ¬Eè™^¶ €Ðèæ ´ü* bæü»2$j€–­ûßrMg+—™8ØZÜÁN–@789@S^  êtúÛXéo&À?½°³°ÿîï_lþr6³°pvt1sò±u²XÙ:ª2J, oÀÌÉò—¡™ƒ»3ØßÌÓÌÖÁÌlðs3€Œ¸:À \à?å¹[¸Ùº€ÜYÜm~•Èú+ ¸ËÒN–’ÎŽŽ@';Ò/~R¶n@ pÛ}Xÿž¬½“³—“ß?ÀÊÖÉÒêW–.¬ÚN¶®@y©LÀ"¤ß2k ÀÍÆÆÆËÏ º€Þ6¬¿Âkù¸ÿR²ÿƒ+ðsqvX‹ØZÁüÜÍ<›0ÀïOÅ;;ÀÒÖ0ZÛ:!ýŽ­þÆàá»Ùz ØÀ»Ç`ûõóï'#ðzY:;9øü6ÿk¾¬º² 2ŒWü¯NBÂÙàÇÌÅ`æàf°ÿZ2^ð‡€ÿ†Q3³ý‡Æ¾òNVÎþ¿Ù‚Ûô?Œ=ÿYºŽƒðßX*Îà­è~/¹!7›øûÿóªÿåòÿ·á¿¢üß–ü’ñppøKM÷—þÿ£6s´uðùǼ´ ð(;ƒÏÀé›êÿ>Ze ¥­‡ãÿÖʃÌÀ‡ îdíðomÝel½–j¶ ›¿·åo¹ö¯+s°uª9»Ûþz¬˜Á£ù_:ðiY؃îà•üK_ÎSJ;Y8[þ:1n€™››™xÈ`Ä ðcߢ%Ðû¯%°²89ƒÀ.py+g7¤_åá°Šÿýx¬¿/€Uò7â°Jý‹ØÁè2û­æ°Jÿ‹xÙ¬2¿ØZö7â°ÊýFœVù߈ ÀªðÉ)þF`rJ¿˜œòo&§ò¹¨þ‹øÀ\ÔþEàj¶¿u`f꿘™Æof¦ù»>0°µvü]0˜ªÖoŽ«ý­u~#0UÝßLUï_ÄÖýŽÉ&nf^¿ßz°µùo¦kîffa¿«¬@¿åœÿÊÿ¾·à€ÿ"p',ÌÜÀ»öo7Àá-œþpqý’8þQ诵dµü‚Iü&Þ:Vàr²s€C-ÍÜmþ‚—÷Oϯ8®à“ÿ ç/#o 3Ç?²gbõ‚}¬þ€\¿ íiÀø7äæü=“eÿ%øû—¹³‡ÛÙÀÖ¿!¸;Önf`gü]xê6>.6@§?,À²?±ûc÷ÏÛþÎàðëÚÁqÖ?fvu?þЃ»áü› ØÙù58¶³»ÃÆð«A.¿=Àñ]À¯§ÿ,û?Òÿ®¸ðÛù÷*p»åâàáþG|°Äõ÷„! û_·W’ã—д4wøO^N®ßŠÿ¦æäÿGó_1û¯ñÿ1Tµ¬[¯Yï/½å‹Ã‘3Ûê;5<ŠÈå?˜ã´c CJ¦¨óͳ§ñ)à@Ì$ ˜§ÞhSWד˜¹c/d ‰ŒH‡qœÅ~¯×8âï¦}—+µ8Ü;¨^ã“@_aOÐøIì¥(àÍú•/õÍy7 “å¢0¥.1£³ìqdÖØj¼uªïþì9<߯¾•÷NKÔ‡µ•ü¹¬ÛÄB§¦Ùä-è3§=d¯ÍJb¹åZ§ÓÊ.•xÿÇ—ÀоÍApC§ßÃW×åÁ¡>æ›ÈÔ¦ÛÁú¡ÍÎÝÑ^Qbk/viƒ˜¥EL’TØrÐT‡.PiÁóß#¬Y„_è™Ä=!ûFÛk>ØnÈaâcî<ÿ³ø€ªºS•¶µ)ŒY/L£°—0•óöÔÓÓ"NiÓ¬HºüLéÎèü•w´ê‚µÀº©°rÖÓµ*\©22¥¤ î¹³~ªb.yÙîíÙêÁÃP»;þB–c*íæîBuò­Ã·Ì#{u!a=ü×–{ׯ8ûÎ:w§U^o$ã×µxÃó£Û4‚s;ÜUÓeÅßB}¼ÙœîF4§<Ò’ð$w¬‡¦«%|¿9ÒññÑ‹©\^Šš¶x^¹Wq_(ÊÞhNª¸›àS°nôU}0Gm«ê-Ä«,ôåxê¬EhJ“ÖÁz³gB "M­ÛJß5ˆîÙ#›äß'6©üª K¸z‚ܱéЉ4ä³›Á«Ât±1ÏV1 +Ú^â_ˆ?gNõW†a$(á[9Ù°EFåEe´Y+JÅŒØ/3É9v¾Ùb÷dï„«Ý kW°¯„"*„ ;ô!©V¥DßhÿDßyäùûÃ[6_Ý©¿‚(#†`˶†zæ}ùì’Þgƒœ ŒËÍâ zòX«½P‹=Œ·›BӴصïRÎ4°Ô8¥óÉÙ>cÐb¬=‹£* Õ°ÀÎ÷ÔJ*ŒB(€Ê!hºýxáx>#Q†èŒwwLÏÈM%_¼e-B•™µö¢á~ÿÎëLó •ÍKˆ³ºÐèîh*2ò„ià7¡lRv¶2„ô¡æ}Ç“¯õwsY+ƒ6§+yá«UûÁuuŸ>eŠ˜Š^ð¦à"› çÁ|h»àóVâbŸ&¹ÝÊA, ¡ò¤76¸)z°ïs>dhKBÀÚfà~•UÕNL\ûà“Î<ZR®ºž65íp©ry’dšÜÈ7|:ùRóˆÓ·cñ–m•¤â\YáN9WŸ­rø§Ï*þûÃÛn”[®ë`'ð ôûl­úŠ,KŠø?é;™ðd‡ýÌÞH¾–ÍiE"%ñY¤CQ¤ìæPe›ÔI­æ‘W£¢rxØ¿¯l`NÆ[3èÀ?˜Ž ¾½í'D Pž¥á ¶~o^ãu£0LÎäá¨\Éуï»â‘”ž5ÅÃÑÌ𥷠¥bâ…¿}´tU´§Pñ=®=þ÷±›uÃSë\PhÙfüXÏ僜ÖWkòN Už¥Š¡dCfÑè‚êõ̘X±.‡7ÙŸ+¹’åêM"çƒÀ-vÖØ a±Ï—÷GälIúùξwTGwã7ýÁÔ=Uíƒ8^ë+ëFÎåÝ«€j“'Qy›ïh{ùŽÇ2pxuì¨s)–e><7¡ +”Òp|%'nÍs/š2æƒÉO59²¾·¥ü?ñ…h“¶è†ŸZämTî¿Îøm©bPÓØ¡•<-¦q`më>vÐ P(þtì«×ެÂ/ªr\2§f›Oƒe¸7Í8€ïÉO^MfµºêÎvh¥V“æÈ Õ§×”PbÝ*Ç=æÆ*—Ì/\½Év¬öûÞLGÙ4§ë$—Dð" "œÏOcÎ9 £³G nËD÷Ê\ü9HÑßYÙkf2Ucõ™8±ÅgKyï…'¸"ï³që(‡ AL•ý Ÿ5BæŒìý7NRÊôM 4eåÙqÙÞ×OËÐŽ•/M¾c±2Apˆ˜åw] "Õ@˜9‰wºÄ»:ô 0Kš‹¶Lù'!+%'˜¸ ¸Å­Í2qýÐå­jÙ,{­J0ÁÞ·0ñM FõtÞ`àõ_\ªçÕ h©½\y†åÝ!‡˜’\žÃÜ‚l’ï’=pÏÂcMün€ê73 &bVx<œ„r«jfž¾Ú#8&ŸrG°û^W°“2”oõÇaÖ¼Sfì7w Žô[.F ©RçÄÝÓÑœËoy3‰Š‚Y­Ê¢š³fËÔÂÇW1CvØa+l(¼&F!³v¯(s«•oþ–ئï@ç`]Ý™½`þ£*n™¼a¯|:eú»áúÓ—:;Þ§á@@ÿ†«NqCÉp1 ÉÝØþ¨ÀÝ2>Ó Õ7±¾ªp·H`†X)Ç—À(ã´Ü 9¦¸ <ÌSEªí­²,/?•¼’í3M²øœ5Ѻ“d”â;Õºs!EÄíµ‘"Õxqqü!ÏÈä •4»u·úÛ³_içG!tÆ·Ãh: ØBÏ8¬¶ˆ¶ó?<Ís»$‘øú{|Å劧s9!‘|XÎ ò¼7–AìâUåÙ¯\ÄÇX ¸ 5ç8̽Þ3Z@eEÇ*@B|b©áÚeä^ŠtrÒÀ­ AF^Ã"/oLý Y$ãenéê‘¥½dLâ\“¥ÆÙº›õÓý`:RñWõXÇì¦K|,ŒÇ›ó÷"‚§LA¾ƒ_'¨‘œ›kV󼡨ÒÜC1f0uÙe¼ÇާöRWÖÏŽ‰quÞ:>Wu ÙF”¾ø©%.žç(Ù$‘‰é×s½¥,nüÑT8N ú’U’ì÷= rK1Ê›R>ˆq{•¨©·ŠŸ ó& ;~N%;„ÈÜÓÁ!ÏŪ\Ä|„\[/¶|®ìz8‚LªB\eh‰êû˜ÿa³+«Ú½ã#¿Pì;IiÓý›µÖÁjõäQ™bgµÖž Œ° ªò„VŠ NΖ5þYþÃ×qîüQ´¦›U¤(‡n ºw*ï‹Ü'¯úßד‰ÁY…½Ê2&Ñ]Ž áàòÂ,sðEÞ¡šâÐ=ÁªõZŽè;Tå7)ܦPý˜‹54¢ÛÍ ƒi´ÌúÑÔ§è_õbé»Z>Ï¿*~{3§¥v‰4*©-]pxñ{:©Ö1&K[['ùZ]lM~~ D]¸õ’’ÕaPJÏÛCÓö˜g3ê”ýê3Á¾>íÔ¢Y×7­î3Z=· ©ÕtV'§Ð Jù¸Èt)bHµ»yßÇ3ªêTHüeêVOí3ÍWºœ~â™*Õ!,šiçC6öú=¾ÁôÜ8QZ]jÚ)àJ¾dO£ Ârs9vÿ€ÝÕwqîôzš!½Y¸ìfÈýêÔ9Û\Ì/Ñg\R’ì­ž‹nÐëo‡'¤;lxNÈkæ.Öîji–T̆×5£S™4JB.í0˜ hX¯ü3¿òíݳ ö¤|c´í÷õ)õ #[7©•ð­ŠÊ¼äõœjA€ƒúyÑr5Õ­iVHÎG0]䈔²…oí5O„pË»-ƒ¨/æ£ix‘ •^uçà,1³_™ŒH–’íIÎv·W#ó>ôÕòêýq™ôª™Á›P«[5o®`¹ˆ<ÿŸðº_eIg°Ñõ±(8%.¹ç/wn×å )&+ ànÙSFÓ,¸UnùË]D8xš%ž.êÜY¡c¾YÓ]–yã¨3¡‚D ª7øF’eÝ{BÈ4¨øx°iÞÜ;úTÓÛÖÄxîÛu]ë–¾UêÑ0&Ñ0sh?ðþb’7«Ÿ-PË­\R³ºs¼ˆ}ß\…VGTúÀjW±Ö;ŸO°búþø@ŠF—8x |kF]¯‘ Nnµdm$_TÕ‚40Í2¯O|&6ç„Sá–‚nryè´Ò…€Ò¦ú¸ WeVBqJy›* k²‚kl±hT˜ƒÛ÷N0ΔôÓøQ©¢DÔÊ)°ç[çYMb’Èû=‡vu—ÄHŠ‚ IúŽÈoÙwuÅç¬q‚ðš´¯Œ¯¶@0 ŸíÄ~b{W| “¦c“mÂYTw…Š/ëo¯EÛxšƒ.˜#”àJä4·årP’dOÖëp¦"¹&Îö¸þ(Ýz;îË.©ÉØA\¨ÆÞH „ÒäAæ¬PHQ^ ÿà@w6YG…@ÚTßfutQáVä…Ô}ÆøÓw/έ˜ÅÈ¥T­½nœ¬áòˆÓhïíÙí¾,…ÃÖLOÑÿpøâŽ| RaJ»t2—@‘zÏ¢Xº¦áô!SXb~XÞˆ(XŽý@y1Ù„aƒ:l ©dS®Ï¼¨éöìcÆ PVÓ—-›$凉#6‚)›ÀÓ‡À}!Æœ´¼:AGˆt›•(‚œÝV?(%gU€¾éŽã†ê½”‚´ÃÒ%²0>SS“?fŸZ½àÐ#H“RC)´»ñé˜@o5±%ã›iZß_/Z°)o!¦)G“"ôÛ’t ôt‚àà ɖ %6ÜÔù\ÎÙ{aV%NîãÓ²)p6ɈcA^è} ›j>¦ü<½ÎjÀ¹š’yðýcÿ&…lY FÕ.­•²ûü™ž®öSÀãu]}ƒ~O]œ1rðÔ,µÝH?¹\ÛÉ[U¹„Á‘x2“»oo÷¢jGσ7<óQkCŒ–(‘¨æáËÑi%mDC¸Ó…Â5ñŸHš¾ê<K®ÂÏFÌ0«üÌŒ.d¹ïଠùU™îüœD} å¢é츓¾ŸÝ¢)§¿”'Iµi­¼CÞSÐÚgòí¯ùW“j]C‡~ï à¤kÒN„G]ÌöŒ‘CælTí¡M³ë37]nï_Uñyø,Q¹§,_|ð@² °pífäîô $Z6šÎ¾'ºí8DÕfª‚låÑïØ È絩Fô,ÒU›UCöIdtÚž]ÇápE*=öÖz˜eÞ¬Ÿõø†åDdʽ6¤~§}ä9×AŠ2î»iŒ¿ö]"·:XEk£á§0~µÞÁšh‹#¶BÒ-.ó$gø ‰í欜ØRBˆÕXØ“}ƒËAæÕ“'mp¿# &íˆæf—Tóð¼ƒÏ#>o2nÁ+ý«É/U½ŽûuÆßjd=¸Md3áoëæÙ?> Xc§Ÿ×â†7N‘Ö¸¢?³W9½1y pcܱ*·æ·¡"¹/í…4;Q¾33þÑ(«x-È]WäÕÐ ³%ïæz"^Êi%ºªaëQܵ¼Õ}Þ:qrøSß }ŸDêêZà]Ü‚%)¼F1ô2 Y„ñꀹ< ›~£É¬¼h°ÉfcŒß`ªÄãAsŸ_1‰ £GK±ÌLjËËz0ù›j˜Á”÷["×þ°Byº”—;tn¥’rù‹ºÒªD_© ,í±®¯fý8ÆÖ§Ê×£'»=cE½YìíçuAóÀ¢~HS[1(B˜ÊC2œ™¥7{_3úŒxˆŽYs|&LÍNó1? ÄԌƠ›þh–Î)ìò"ì„=4#%z•ï»c{®dއ`7ôiwPì¡0f; 7ÈmçD÷,|ú¶S”{|›ªjƒèë2ß‹·†0ߊ4ìò‘¹0+MÐ >@Ÿ(šŠL¿–Rw™¦/·º—‹6y~oî36|ŒfH™yRZ/U1·Š`\li[ Ïq¦@Œ›/ÑFlñ¸°þi=b¶ŸàñU&o"]¨KïÞg¹¡¼rêž¡jÀúú…KTè+«T.c¤ sö<øsÜU è\›•¦}tøê¦8)iœW侯è"]Î)!ª©´Jœ—bßO*RCˆ•ô¤ÜÛyç¾ý1øÁž_^ï2ɪ°,kzãeìékþ£žôaI úËÏuòŽñn …EM^ÔŽ}Òâ=Ø»Ešóâ{ ¯+vÞ´76#`.` _¥¨äoSñxÖjjécDS.âW+¥¾p–ïŠfBŒÑ^ÞtßÉàYêÈ*Í01îâºãTÊ>­³6”¹~톼†´‰íE«¼»{MZé.U{ÅyÄÌÈÌÝSž±£Òµ1ÝRny#ò2[0ø¸\;Ò‘R˜öOmjÒC ˜(‘t‹ÀëÓØC¶Â‚J+Lz¯ C1Ù¢x=I9š¨•W*sso¸Køtc<• MB,˜ŽØáÿS eØŠ"ç1Åó¢Þû4žF›­Î9`.èMÙOÆyA¦9,PngŽq´HÝRH„gÊW}9Î"qÓY é"ð6úÔ×"B¿q’ÛYgì}Íí܆n°›?.#ˆÎ¤BSJ‹e[cøYE½Sþ\njärœ¬CTKàHlNæoWå^S¯s™í³P%}³Íšî \H+—U£ŒT½Í»E–¹/ZPôÆš°̤N^OLÈo^«4HãŒKB^ÖÜ ë#ÇiÀë|»¦®O9[~"}›=?ë¯s›¾Ã“ 4ÉôîŒ ƒÖÎñK«—T×.+†¦=ƒÎ#lH–¾»t-ò(0¨cò5(2ý‘ŸAž-w²ÎÂoá„S{Á·ïlÐcK&Ë zx¾(âJmµtˆ^:á Zè£vqÖ½}õ©5VÌw×)5K;ÊâÆš%œ76ð®ýÈÅY-îÎ(ÌbIHŠÐ²¼ï6)ªüÕÇ£ vÊï·¯Ï}Ýý#B {”¦¿jbÅ [•O;¶”t‰sž¼›9ÕDæè&Hœ1øbY?—ü¨e¸ô—´Šø×âp?øñÍî;¨ÍŽ}¢/S|×í9§ºc¢ú™`XÁ³‹I‘ÌñükÄØ•„„,¤´ÇLõð¯K+BÚzÄ0¡ ‹¢Œ×ÔkŸTš—$4¹ù#oÃ:¿@Æ•çPtÏôd}±ÞÓÚoYÞ26/ÓíE€[¤«e ÄzÁUÞîÑãÄÄ&oFc«»Uuëû GÒ๥ Š[ÊK™²¾ @b¶@òø~w8G~ŠÉRä"d Qd&˜]Ö-ÖÜV{;R-^.KÖƒÛ³t÷eüǰô Çܸœo'^ é‘þ–î s­Ì ¦´râ¬QÆ€DôF.&„ѵzãÎFà´ñ:éæþðá§ Â~Ê…~?Ë.^á$¶÷¶?ÉœøÝ’G´ýœ|¿ðh]«™lá†D×iZÔµ\Ô‹U4 JbnT‹žtUyÊY,ûÖ«ÅÈwgS÷Ä «ñv‘«—$ë©AKÃ3ͬ°;šŒ º( Xù”ƒWö£r”æ“lHd²wÈÒ‚ñå¤é0*©?dZp:.·,oïlz¥æ| %ëå8Õ6¶‘†ƒ·˜†Qm p%iP¿õæBØæú??_÷¿‚Vâ)¹˜ßRV¿Y'­y³Q>#grœ¥Ðœ"¹G’KE,gwRpz\7= êõ†áÖÖº©ŸŽ±ªûv%õü0?‰²_7?_RÍëÖÑxaÐ…Ö‡ˆÅ&¶,B *Ô_ù´‰)8q3µgçÑ,ùN‡›rQn®ïâÊF¶–%$\NÝãDù)_E£|ÐËnN©Ã1ôH›™ÅÀž0[çè!ÒÔ„ª‡ è÷ O™(AGÉH4bx÷Ó—ƒ«Ìâæº_‰‹êŒcQæ3\ŗМéFé/=je…I÷ü+¶M£âÜGÉTÔ"·$ñQ$“×dॕþ¹šð{à;ú0«ey"çÏÞ}3 ·¥ÕcWkؤƒö‹õ7˜£É•ñí»ŸŒnÕ‘_ L­úGh©AŸqô¿&fŠ;»!ˆ^ó‹›_¾"ΞnsY=8)ˆÂÖ’iD§ã¢È3³ ‹=ð͈[ù²ÊÙ–D¿~=YÊ&#áô Äž)²„¾”Û6en*äˆc_ÏIÖ­25DÉrÅì»$Îá"£Á% ¹1De]z{ê†PÂŒÌxoe§áì[¯®*÷ê'š<¥<ß›´Ó§Âä–—¼û†ü}®ð>™úÛsùpn€g¬<ù5f9µÃ‚Ë[#鲉ú8‚›p›}%á&½6fwœ9‘® o„Ïêù·) ZÇôDÖ_øtò#·¨ ÐkMò*m9væc_áV¾z<ãÈiú"ƒ ACéMAh•UÀD¹2­•Áå˜=>„O‚½½|ÙÆÔ@î”J‰žÃOá¶ô÷Gä¬dõNžæÃYÊË›{‡:Ætl~oÍ1U«*=Dý'a˜gúÍB>þãWVß§bðëÑB¿¶Ô`Ö•¡­lЍ®F4<1+§Ôsãö¾Ì á†·¥È.Jí¸µÿè1™(„óPOJ“y-Eng3˜ónê¬)óhàë¢q{ÙË\ìëÑvÙ*¦‡ä·H†õ’ŠCjÁ …EÙ¤ÞüŽHîzFHˇªºkz«Ü´©¹÷1o'®T;Ëv²ñ©_¶u–å„ï ·J-+3^¾e®c7Zx'Ò§]ŸÆ’X G+`\Ñ@Ä,˜R1¾-ªÒö{ÝØ§%¡6_ÛÓîïÔ[¬ #±½äãIÿÞ,¡|Ý‘O0;ùñà¼ö ×›·0à¼Ùö~ФM€°A–éutnN̓°ÙÀSw1ç–ªøhˆrîä'JÊÈ;›@žžWõ˜ÉßUŒa†¤Åg2®h7@xúÖBnY¶A*Ê^í’¦¨Ùȱ¸½0fÓ}¼”A\¤c¤[¢}Š„Öá°‹ºëÎZ­÷[Í×¶û‰„Èiñâ ‹†ã*ºzÒ™åfrپƜrê4qb„é/yœO!.bQœ²$¬D¼ë]7¾ÉÍ„¡ËÝ×®Ìx{¦Åü9 ¨U6ˆáócMãŒØÌ2 :Ö]º#ß“‘ÊòëO.8ç£8senåû‹‰ÆÞÚÐ{ÍÙOè®[êÿðÚg¹ß†Ö'd·\l­ø]­úhkúæv÷…ŒOþz̧âìnêö²©£3™ž~‡›Jol:$þ´rAD²g“JqëÒùçt²È^Ž­9ŽÎ¡p(ÄV|Lno¡M¿1¿ºÿœ0»’œÝ_4‹P ÿ’Ϻ«8ÁQ0aÃÍå+a=l$œ3">w…”Œc\lÙ^’(* k‹,W÷ýÑ´óÇc²ÖãÛÿw­”_têó墿uþ°çàáÕ>Åã%4³^03ˆ˜{!ìâàòSàÓ¸¤×nrZ$…›ÈA• Và?8}Ó;;oÎy išP¯ßM5Ñ;Њ¥šÑÞß_Ô®|=³–ãM ÊrýÁ·ŽeïSOÚrÖ¸s*]¬óÐ^ýyj~]éKB_F ·¤&‹¯íF !]1Lí%f‘V!­§N8üqã›BZÙ§W=èN»Í«û:©vü;×Hrç6P3^WÃg£Çº†¯„¹À*Q ,Ô™$xÕŒd æ]ò7©ºÇ}Ú¢©Æp ôf\Áà΢ë 5»>$úù0¶Œ'Sô´±(Óê%4?$š ì·„¢;tËý0«Â<4}kË`‘C6cõªdÛ$È{ø6s˜YÐhÕE§]Câ —Ä‹âËa•©^`Î;íÉ.ûU_´[D®_`<—óv—dËù±0ªXïS{±Ž–HŸ8]£Éy4|ùùìMIBÄg—E±cÂG´‡9_uuYÎÌ b ­FGÿKŽÞËX)æ íëêðÍyÉùá³Ò¦3j™õÚëw“9 fôí•®EPy’Û^¦4â\›Zƒ°YÆý2âáqr%û1ÞwFÄ"êm”·?ûbÈg‰j«¶0|æâ4#‘êt?:–ø¡¶0a¨X2Œé4¿YtóD“)K’>ÉX*gäÃÛ#iF—¾ÆÛœ…E°•p“˜ ‹£wý „Âg¬{ŽU3_ŒU›d •?¼žpÌ99¡&Ý-–qJ1²žé+^üÊìHV~Ú$½ÖôøùµçkÓY5 S±n"!ïÇ«/†–ذƒuV§ 0Ùw-˜è5¶'ôæB!ë~B£ûKÂ9dkͦ¢çi6*ÞùS@í‹ s.m¯¹J±›&ØÔxã»q„%ÓËó.ÉÔŠ.~#Ú0°zþf^l4µVÌ/Ü›5œÖ=uagWŸ¸J XmR“+×@ 5@q\çãülsœ<”Ü jýWϹd”‰˜ìƒÞ‹ßÒТ:1ö}aöë·­¯Ùî¢ΕÆnñû±Ù\Ó¢qåîÛˆé¦'nƒ5b1lyv¾§šM=qc÷#–X²j·¹*§@å<•U cM‡xÎ=öO£ò%‡e%¤åâ7þÝ Ãà Š’"·vFô}Õœ”²°®tnÓD­ßQ«ëN\2¹"4EµGB_«™€ÞÒÀŽõë…ºCRn§Ø á›C–ÝiúkÆöPõmn¥Ã'j—ŸEÎþ4 —„¦D?žç”»éÓlêÐ9†&î‡{?˜T+c¥¸–åCøa êÚº÷{Dœ‘|ó„o¾ðÇ™Á>3.ŒÎ|Û°ÔKØt Ôö„ëƒû®\þó úö½vºøó$¨QÝfÖÛ¼uZ“õ{æj™Ë²o2•ýÁ4R` \qòµxˆÛöBlëcVc»àg¼±ê´Ë|«gÙ‡ØU®¶eáªUSÒ ú¤h×Ðá}Š}´h-Êêf5ÑL_áN×bܶ ’—ÉQx¸! ÐTnŘ`ò ÛwÜHl‹ÌA"Ûiæqç—½å%Wðú+qÓ–®í ¨Ö=r]´.ÉÙyžcùWªhÑ©Åá¥ÍÌ m^ÞÉö~™û{^Z_ËÌÉÖ¡é%;Ó§(îŠÙ4íLÑñ˜v ‰‰Ro ³å=‹ôm1òw0YBW-‰N³ú~¤©c˜+!]T˧=¾_·dõÄQy Ó9Ì‚.®UÍxøRÀW¿Ð¬¤ÂÀ«ó+Û.,ÞÕ)o7Ò¡ Ž:íѲ©O‘[mÕè¨ éP„v%=0 ùËÕ©jY@ž³s­ÖâÁ¡GRÓL½›F!Ý({¾Õ1çôCæqІ¡æšØOêâׯ$§·‡Úµ^ûŽSlMþ¤¯7“j [A¡‰&®íõcŒÈ÷J—Õi;K•=¾EPÎÑ©PÆ.BÈ…Í•Ío²´­@źpL´2l‚ÿ“±]ìý¸kF½úYÏ›ôtë1Á^Ø‹lÇŸD‰(·j¯G¿ËG}¤(ÿÊ—.&Ò@ü¨Ðrݧ¶ý&XóšñÑ!ЭžG<ï@•—FÛ;úç(¬ŠÄ+ºiµœ‡;Z8iýÚÕë*wZÚj¿±ßI$!½ú ý3üÙšˆí›ò”|®¦)gˆí±yÌKA}m uÅHYR‚(lŠ6uu%g®xá×÷&pï£Â=% ¯šR¤V7ä­bQ©uÊËÔ Æ\fTÙaÈ{¯OvþÕeÖ[YQ í(ðƒD|î:ê«o ö;»®Ñ©]G¨ñ§£xBƒ þñ©§ûèËftJíÙ‰a'@|ß•o¿`䕆†q(‡t‘Ìw¿W´Ž!".Ū ’ßU)µc&Ññ¿¢—9ªsš|o;œl8,ªK¾ÛÈÓc)Ú‰j vWyÙ •‘ÞqI8õ¬ºð¼z}Õ_Ë€.æ¸\%ÂRSÉ©'€EÃ-uIȨF2™j.5Ðn8ñ8ƒÿA½M…Þ˜sYëÙÊrÒ ¿®w±U­{¶%ˆíÄ9Ü€ª&|SpJÙ÷Ó8-Õ“‡a±LÔ@Õµ0¼?(í‘KR®‰ «Hpfm½Ûˆ§ðl·O¸þ± >mUÖ*Ý”‡¤u8„"×…-žL9j òðûõ*+¬e¤”ç>Qß®exæsJ²Ïò¸P½”éàà{H‹É·i!–ß+²UdéÞSÄQ¦Àœh(ACµ%ë(|aåk]ƒÄ)À»?SeÆ ‹Ë®›4}"*X†dÊŒyÍK{ô!éPú.²ô¥"™ì;´vmD¤Û†Ö¸¥cõ‡n±Aû¾Ã|y¬ÞkZºøÜ÷7ü"Íì1±³‰Ö,,nfõ‹fnÝÛî.”b‰]I°#WP“út/õ¢î~a¯Šûš@é¯K¸®…¶C_fñ)*¢:DJÚzÍ/3Ä€?i-3 H2Ÿ§ñt;ÇdÕr="”¨T;°½JT=¾gň{ژɎg$<@ ~ ·UJ¾½\Ò¤WhGøÃæÄÎDUµ¸Ì92B½kîE Òm§‚Ó?ô¸«7$& ×qaT`*Õ)Dl–Ãòª ö^fùDyV4€})¥ð9™Î-Í<_?§;øsRY^tôÒQR³`*ÐYš=’îÌšãX—3xÔ‹CŒ9f1žnÆ  Ù¿—9S³%)é'“I°òÚø>ŸÔ8NA†ÌÍePF³üf²©îÜ;ti³d‹´¼Üc‰:žµ jU\‰hjHºËk¾‰åä£Ôx0Ý3+Õ3h‡4¹‘<&–+KrŽeÙ’vL¶«fP¼bGµâ•„Ì}€] ’À²nr_äí"„':† Ä„EÉ{lQx6MæiŸîPZ툰‰;è`p‚BøÿÔò^±åšÝ‰€Ýˆ§ÞWùRâÆš1äVm¸þÝ×GyVÝû84.þÇû ûŽ’å¬JÙ¶’ö<Ð1sàr¹Ûwaçд¦OÑe«»e8°™Ó28²¤Á_ðêÆí3’0 ª‡Ê¨)gÛ¥]^IÀèsŠ(¾ñNåk⿪£`m4𽨽{ËÄ€r•,²îæ¦Ï@û´tÂîT¿DŒuúf›Ê-çrù®¶„&ó»QV‡~OžËÌW ãÈÒ¯¹‚´0¯hçËOç¶qQ½9'ˆb=×4)u\®ì½‡6wC.«×tJq\ˆÔs¶U|ukùÚmö†d-²ÚQŸ»Üjå) ’Ù»?½‘‘Ç-"kÅsHeI«;-åþ‚“@ ±Y£Dp‘:éí7ñöE7Y£‹i£l®{› o]¦¾bMåAâð˜Ö=ÝÖkP„°$Ü^£¤*Þ#þ'VHË3œ†¥p[ÅK éI7þjVõÔ{ù!ÌvrØçÝS Oß“3xÏšÆÍÅÏ)ï™kxçãû—7Èñ+òcñ»â¼y%eFáãSLâWk5‘TñÍc«¢½Ï) *¥Ye‡v¾j+[8áÑœX^H;ºÁ|ÂY2äú¦´û¹”¹‡¹™_#®Û,½k&ûÔ†SðüPÙµîÝöÉñòŒ€Šb:јi¨£JΘn ô¨Ëòìh–£‘†Íƒ®‡ÚêýÖÌ#i¤ùHµðÁÔ J†i˜d-9=«¼rôË«¾‘³5ú®U}6©(—4M=”tšxuá쪲{ßÛ>²+*craã‹;U'9K: @ÈnÎvjÙQ½-òäû9O Ûñưëâ-k´¤­â€óÖ]£š*·šD-ŒÙqlAcÙÛt¼õ;œˆjÿ{Üþé7òò $-ÚÑsu#0[¼J@ ÐŒ\â2'i8 kìÀÙò]Z£J~sÆ—HÑɽ³7ò+§.îP—ÌÅZÂ'vÁ© TnGJ¥°Uiii˜lã/wŠ»J£½y«ñŸ¢{žPŸ|EJ¤-¢à®—ÜÁß`áãœ+Ñ‚&Öã¹Aºl»Ì‘aªËÁ‡Ôù¸=Ýöç‚›Z,õŽìJ_ºLCÑ8­%*û™nhG؇q¢1*úªm¬›‹ó¹"ŸÛɈüœuS ´—‡ƒ…ô™´‰1èZ›®B¥µ˜Çˆ˜¥•Y¾”/oÛµ§ùÕøTmž‰o½l€'“Lòç¤Y—9dñ/¦˜âKms&¦kÈíwL‰ˆèŸºÒ¢I-î )Ñ(hNc˜#Ô#Þ¦ Ü p]E4E«2 ú¡ãÙ$ cŸVŽ>ÂØMs¸«Ö|"—^m!˜ð¢,@ÁT%Á¦î|Gõ2ØÉFßÚÖ¤H *ÒÁ’üþ³õ]°F¼Ò‚E[A×û—C‰JûF´`³‚úIÇr«qvÀ¸}«Â‹„¢â@Çe“ÚOƒ â Õ‚ÊÚe ‹ñâ÷D”’Ôx¹ògÃÕæÐÓÙãB• ìgr sçzÔ_½ÎÖ#º±YùMfq¥Ÿ² ­¹[…¿[– %SpÉ€L·+ƒQ‹¡òJä2aªÍM4ë¶|Ûc0áö>4¨˜ü\ÏÓ-è|‰p«ãÂÚƒ#ïí2냷:ꇹÎR_ÑË6±˜ Zt#–‚„6F?å›ÒÓÈºÚ ºœ=ã· ;Ý!¹ø‚{²fŽ8 c›{¢ÆlQÊudÕh¡y[šíß¿OçtPˆÊÈÖL ëò.G4•Þ3W‹GÔ$ßMé?\üVÂħ'ÄLÔ;Á•[ÃmÕq‹P±ÆæÛH1n7åó‘Vˆ£’ÇÌŸºÞÅÔsPxw'`Æ)¯3,Ç"4V;DèLQœ^Î{ÀXvƒ¼ ãá3k ‡Òü‚ENn]µÁ¨KwÅþ{å§HtöûdûØ·[ Æ”Si|ýKêgnµPD<¶=ºZþt-£V ±èÆÈQ¾F·W‹îèWç‘×-~Ÿ"•/îgT&Œ~v"‘™ÒÖý Å´Ÿ [º»[/wa§zäE|fòÿ²…MÕ,d$Yuñs ìÀº»ÃµÝEX­ÑD¼)ïzž€=ãñ¡˜¿Ìi†bóô¥ÃQö“ùV‘ì8ö'GîEºðŸ˜Pô„øË¦‰-×ûs*^,JæÃ’å~sr‹’ƒ”:ß] P<TüoxΣß3„oŸÏU¹ä=%ÔÒËó_—ø¸§ Äݼ6®Ëo†¤\§ûû:'}¨¤_½ê,Ó¡Ïdþ€è‘07ãÌ+ bÑ8ìAn±()Šè’ŽÔõq”¬”žX·µVžeŠ|rÅy¹;FZiž¿Ú ðXmëbæLçŽ_vÉJõªc0¿@‘™ ÆpÖ¸¥!±W|8æÍdÎ {-èÛefj4l.ï£cê-8ÒZU×=„…->¹c wî©Cðx¨[ÁjèÞí“4)jfFC&!•„üIì1±Ü/lXÿa#)Tã•AôÄ”i¢¢ÍTñ” ÜŠð¦æZË—é®úM´0‰Ê B¬K댉]£;[^,ª!9ɆÃa‘ƒu÷°¹ÌM¤ÚPTãgå„ÂÛˆüQôG=å•f0i_ö¬4ÚZ"Çe<£¥š1üøGå±7¥ ìÛûªrù.yH„TG¥‚ý8Ë7±° Èï T¯;èÜšã _ù“׳¼á¿LXãS£ S ~bè´.¶uË…ŽéËÀ‰2U¦U˜ñ—Á9óvŸ‹ö6»ÐûöHmJÆ,k æßì¦úT˜I?Ï©U_‰¦‘ö;?|À.L÷Å£sÎa]ì§žœîbPO‘Í×WÏËŽ˜Ì…VANÒú˜_нM½4U/²m÷I“ Í6õSäÖœn( 4‰«iŸË›-%]µBxÂêüYõ(Χìñ;F ÞzÌ͘9R8ïÎ$tõ![qߌ¼ù‘ÏfHƯÛà0§Å¿dͰj9^»t>³EÓààQ¦äAÈÏ}X©ß…\Ý/Å"°IF =­~)ƒx5¸xz€¼4P0Q/ó¸µy­ó¼Ä]Ã)¦´Æ‰šÒ†“Œ Ũ‘ A"sÃ\È·HwŒb*¶ëà yþàw>t‹o¿±ëÙÄñdòæ(2‰@Èr¾ÙÈ¿¢2”ùÎûtúÄ@¾âÝ‚ÓƱd#*Õu'€uŽ#ñ€[YÅs ^Ü‘¯i· ¦ÕNÔÞ¬$5†]ÞTŠ0%`\¾2«)!û‹v] ~í7‘¬º /[@Ceói¡plÓWííjVØ•5c~!n'€‰œÈ¦²C$qLW7ÁhÊ|ôäÌB%)æ!¼RîmÞl×¥l¾¤ÏOJèÓ¾i¦BÊ|4ÍÆßõÍg$…h!>ŽÜ;ÕW#öd¹CböóœŠVVèF•, AmÐŽŒÉ7JÄÖ üëC«–p)?, ]_ã¤$ÚmjÔ“Ã „·Ü ·ïˆ“Ñb‹+¸ƒ˜[™A9éÄ Nw©3!$ëEW,˜¡U“¡èŒ¡t–ô£Gèë ·÷ì9÷ýSg+'V×·>:52²¡4+‡ÜL¤ü¢!J*ýÖoísÔ¯æ\UšJ2DõÈ«–UË3·{Eñ<zá˜ìÏF ûÝ.p[‘¡ÿ_cF$À#éWÌ@ø«0YÂy(Wº¾ÄÕª”¥”Ø6 ¦Õ¸·ª'™'úã½RÛ í"´„¸ª|™„°´‰ 78oñ'ÂÉÀï±çÊôûT­Ñú©)g~M`Øœ€èXñ·ž ±š2‹éð5Gò¿c’ê±Ú:•ÓŪeújöxªÎ÷±‚ûÐÐ uAKü­>0§ù{꯳#^{ص6Þ×iVl‡ßÇ»ÙZ8ŒÅZI¶wY¬ùh'^g£Ï`DbÈ>@âÙ‚½ C»„¡ƒvØ~X‚Ž‘|Â<̵JD1åȈŬ[Õ¤ÆögMåXé­æq؉š[I¦ì¡Wö&¬Uç¬Ñ“Ð9.ö§«÷¡KF· ^Àú7Û“2g³LLµ}—Ïz1j8ËéÓn·ž]†fªÅ©cc‰ËkpÔYx#П‘Ü$XH3LPL÷F¸Ãc{2”²¸‚—¼8×Ëéô`ÊHw÷.¶’d8uvÂ|’Šu¯¦ý–VÏ „$ˆO¡† 0>'Ó|µš–'ùšûEkLÜ!ijә,•:å*l­n¢¸A¨plŽ|ˆÕ‚V~¥æ¹Åãr3j¦t¾’I¶ÞïàíJÿÇjׇ[DÆÀò¬„Â.âÌ©ƒ['Ñaù,m™tpì†ë»Õ¢ÇcÙIqœ‘ÛŽŒ§—r®GÛ®ÓêùÖnƒ™ „½k¼/JŒìÆ¿íÀšÖu‚™ ˆË à|TÇk)þòzG™X5çæY×üé¯E “ B#  âMºya%?yV¨í ϯpPPôŒ*²ðÑ‹îMëg¤`±€i/èR18Qã²vz±ËUMK#è ¹—þùrÓáD­h/'c'áZ%=¤+oÎ3àåk÷ËØ_›­R Ý:u–jϼ+©L;¤klé–ïZÆùâ)уþ"Î + ¦T“³5|Ìæ?åTb³:‘ÇvŠ -}^8¬è}s 0.ÈÔ^æ¬(¥zºÁÕû² GÈÄÌã¹(Cd"ËäÖ_Öi‹L©!Áªüd»æíüŒ\¼¶'Bt”²:é¯rÌ?ÙRŤG×”ÓÊÚ‘Éa£Tê5¶%›kv¿‹³2ö&µ}ÂU¹E€ôÑa›vÕ ¾v„8\ïÎÛ93\Ѫ-Àq‘cxNö#’ÎÌ„b8«§JÒ™C02¡Z*«« )ÈÀÍú`ÝUˆ³û„Ú° œ@÷Æ.#>ηûÍ›î:JU=ÔÑT‡ïî;ÀÓÏ® ³n ÜŒì”!ÐF–5uóü_d&Ï àl›ç`äFáÖ¡<#ûAÒ‘™ù¥ S¶Ÿ°Te`+[àÿÔ&œÈPZ ØÐ’i“:!wâý›+³„ âåèí1UðÐ益}ÝŒ/{6— TÎYàozKkÆRm Ø*£|Ñ›¹ëëE½¨g2µŒ„~ÏÆa'#ª) rãT«”+jž3^þY•Žý5ßC´@¸zÚþ±'{±•%¢ÊùÀÜGOãcSØã~ÞÕ^}¢ž>‡ÙÖ¤žlc9…U®8 ì8BÒªŠF»ç×nñP„¶ý§*+¶xübÿ3{AížBJc¹@L9!¿?&gŸ¹uá9.ͬš‹Cë¤Þ`^zE£­º+¨Z€ñƒnçàu ˜ÁÐO ¥vÇ“ËÁÿ©–­)UßTŽníV€f¯DÃê]¶¥%³ö"ÈÊÌ¿R(oØë¾Ùúÿ{ýÉåKÞÆÌQÏQÞà°¿þ-é…õ!jµ?/ó+Z ÓolrI÷(rVãz«ù¢Ì#¶€¨‚èd~›1v=f­$x ZzA0L4˜`¶A¥»o·LëÏý4±:¯¨k™bçÿú: †…2÷š™Ã÷0€$I/ŠÑN0' *²†¬V„/ÔbLäßî¥]Dw=YkÉT›_è‹;³èÇ)[w2À@‘@šàÑ`Ü5Ã`¸È/ŠRÆÀIã²…!/(µ0rx3k±ªNŒMĹ½ÐËØl´mhP¸¸?Q yÿI韤«µÎÓc³оˆ9Ò—¦œÊV’ìº.¯Û´w tЩ·šÙ6&$aaâƒYW== ï-U~ ß4'¼óÙÁ`~Jô¤?ÓÄò°Ôç–Ö‹*¬f¬ @SàlHGLp]ÖÌ"ræ=˜AØ_=\É •¶Sþ˜ÊÁYDR°9B€#€˜þƒõL¥ȧY²þt“*@Ç2]q¨º ­lÈŒÒk»@Ñ­Ë2.QËu'‘î;¶˜)›<ˆó9vèî9%Ü]\ƒ}`ëOèQMW3»'þý‚FKuW†}øDÜD+I5v²Ÿ.Ì]\P/‡P²Š|%E0¬póèaÏð9ñų@r®nvÖVÊ©¸s1*Åuï¢Â#ôÅ¥„ÝœÍÙcçFäS+j­¥G&WÇ ;‘Rt3!‰£©ZÓ6„Q3Rxä{†vÛ_Þ?¥¥t„N 0Lýþêeo³Þ©ìw4ÞÑÏâ僳a€úpÜàà÷õ_TÑ3›®ï­…3þ(ñü©šÙUùðiT³ØG*Û!›nš¥gRd3 }8juÇ`WQ¨ oäßüÿlÞ«½ëd%4h.º•¬*:3§ª‰M½`º&âú>‡*¯ßÞ¬WÒ´º²Ø Ü•*°ˆÀá:ÈHW’éŃíÃ<¿^Ù|•èèŠU|îÄp”¬Œàω%Å^Ù[vß7‹¾œÎö÷­i7=Þ2KVmvT¤ä²¯·Æ«MMK—.N-j© aEËL‚C‘­¿&ð¿õ`Z9'-~‹W…ïîQ]]”óíü YnÚ°·¥Y ½·¥‡þ‰à?Ž+VNù¸­‹/«l’â•¥G$pŤ–D?ž«»JgbʦðjÁåêPÁ‘Â/ L%ëÚnZ—~o}ßÝ<§<$^‡L+ï{îïaŽÝʲïZ³³x;ó)µ~†7Ǫøü=|’çŦ`¹wˆ“ð-dzÔs›½Ôüf“G£:Òó} ¸Õ-¬p×È—¹¹EË·TØ}š©«'bO€ µp 9Ù%î‡DãŽOeÖ9’ @Vi †HŽÏùÍíHK_<÷Ó4wzlÆ/BÌ;!”CaBÊEïÖ£.¥Lœ·Å‚y€Î›a%`ÉšY‘C„Åjò8fmJ¨mo¾j#͉šï @Ö × ½F§(°6?¢1-Ñy K´51ŽÒ˜U'(0©PôI*ߢԉoò2ïks °H² ²Ý5_3?¨6¦ªLdöIyÁ«þoÜ©%±Ê—ÑDÝH-ÃkHã¶®nï<%€îðÕ¼±Ÿ‘X‡[~w‡)S¢3IŒÉäïöhÚjoÙÉ•]|!I»ÍjSEuþÂþƒ.ðvhO¦õ3\F!I‰ áºÕè˜×T¿ÏÜ’¾©3¨^5'¯3ò¿aS¹ÁO‘w™jœÇ!è&5¥%•swH._%‘fü~nÄÄ+_ºï‚âªl6+/›IHΡ ã`­ÎŸ½n:ZÖÀ9úC§lEɾA|„Tdž#/™ôG…ý ‰“bµ²"YX´©†7g™oMG¸±2üæ¶|Ð^Úx·ü[u^Ü´€—¨Öåáóa²¯Àvýl&1$np!mÁÒ¹A¹'pZgp@?nå†Þû£:• è³)½jœU+õW¼‚lsX¤¬ûá±Ï-CÒOôê*ðnáZÁîf5鎫 Ò/¼¤&n&Ù3ºH|™g5Ö©HeÒ.=ŽÉü¶¶Áó•wÍ*¸ŸpZ¶ÆkòÌîN`®|Üv¤àsmýÜéôÐ>DÍ™LîöÜß¶X žÏ#ºùÍÝÞ[tvƒv;¹i¢x±è„Xª€âx¨‚E¤‚GS0×­OPéeA_põÔЬ½Û}¦\w ¹Ä•Àk$´HÍa„ÿÍÎl³¶‡á]CÀHŠH¡©ª‰ D/1˜«†_ˆïM#æù½&ÒÞn³pó­g¶t3™ïUô>…¤ˆ$cz0ê9{þ°Òô¹íø{; Ðmô½2æå·¶wòsƒ‡33–¦!!D”aé¼Íãs{gß¡™º*`"‰œÀ-$9+6 ƒ™[T>¨*RÛ‘ vÑ Q–ÞZîù,X¢ÈÄVâèb[Šb¬Z§LòáZ%w¨§ž<—Œxüb­§~ ÃæÓ ¤0Ë]G$H›øFžYå’ØÇJj¨¸L# ù5ÈíŠíŽòK¼S%VLN\餠¹'Ø!€|^À(v±oP±ðˆ¶˜ovvCl™ç-d»Ô½_¶uÏ¿¨ª}‡®í ْ鬆uéIX—wÌí³ x=æÙªÁoWõ~ÐïJÔŒgh(Å™Ý_ÿJ×—‚ënÕIÕÃÀ· Þ¶´ßÅ@ÍñÂadFÊ€H)/ÜÐÓÇúÂQ̳v9Žæ 4t4ã{ŽÉ!" ˜¼t CµÎ,cæ3™`_ÖÈ”ËöβD{äŠ]üfq€¸—‘oxá`ÑÉ®EaB‚7زm×!¬h©iù]¤¥}¯26Ž,¶XÆ®"[øãu#‰Z&Ï¥Ÿý¬ j¿ÄKeS}ôl]’)!Lâ+ ííÿ:m¢Ÿô¡ İûïÍÕÙw÷Š1Hëûœé*™‘-A—¬‰axº—Gìõ_NDÂÏ*—nH6š/ívü‡üíÐôU,ìö<„ø¬PXU{)ÑÁÓ‚›…Ô#š¹…Fæ3¡hs j™ÆL'ò7¬mnÈÿ#› ¤Â“ìë(2¥ã=C ÒnäÂe…†©Ïjƒ°¾±’F“› LçôŽJc:…-“k0zl-Ö˜)ÜŠ*½üXKý×XýŽš«/3ƒpê}|­üÌ7¤W¬Üíg•…·, Ñ®?ß§<ˆ¯l‹3‰Ld¼S‰xÁhg{“ *šsdà`%qš”××sQ »’Å9=\õïÏ!_†ESßj24TxýPžµ.X€)Gv½ìpé|šb”V6ªR}n)ý~±Ó+ËOçKPB¾þ¨À´¹öªëtßõ"ìn (¦²nÉÛÓçÚûI)9á·ò\º×8ê9§S¹~\ô ‰Jøñ^6.g7— J¿¬JÀZ3ý©}YÑÃRTzÕXÊÛxçZ:v¶’t›—ñ¾I¼¡Ï“GjÒ\wTsuÓ\[áÖ(Ôµ“²ÁÁ¸·“™,= ¼—èù`§5‰oó nÉ®9Öp¼Ô\k¨#Bô‰ƒÃ®inK;I ;Ïo;´3 ítÊóÞôâQvªêËÄsÏ*h«ìd’‡×yÙò†‚ Kp”«»ÞÉL„)m¸ûãÏòÞ °°.Hà x{ù¬  SI_,vScêJþcÕÈÈgj cóÒäpårgm—ašpµ¥ô¹p¥”öz bÑÒÞc¨‰¶V«6{¬»ÌÁ!pªzƒê EáAMˆbb,] oµm•Á]°“Üp¢ >1 ¡€’\›‘kúYZG*̓©îÄN0 ´Y~„­~@h©å¬Á?„s­ë²ëPsΙŸé§Yxª!€½@àáÊôY.‡ ‘X·¶eºCrÿ„Po|"Ét$§:›¥Ö>‹äE[™¹ÎÒ-§2ùàÃmÈÞeŽx@ i>ؽÀ<Ú]¤”/Õc½<±šÈJê“x/üÅï’/ùªäiEýìGá÷Ke‘?½@cO™÷° ú‡¤¤µg‡ñeûÛGulÜ6yU!ê_4ߊDïˆï¸z”„6=Ó‰Á½³÷átÙLõTT‘9qFËo¯úÈ*v2 2‘"±¼r?ÁÁ§#X/ºÉ¢Å2.êEì>—mÜÙè,á§S‹»8Â{¹¬Ê1="[4„ºú”Hk­IÁ§2a_t&ÿ À:ç&i™ñÉe²Wg€z%§^po³‘…·$ywJÓñGtÜ&„ÂuqT#æ¡Éõ9:ÞÝexR“´Ž0Ûjâ 4rλ›¿QØ0ñš{Éê}¬".‚Ÿ—h± ¸>"”"Õ¡AÍEWŠõ´QLfÙ,'"Lvä 5’×~4‘êFx`,µÚ@p¯_=jœÈ4uÒZåÆùPËܧêÅðü[ ø(dññqø·íî>æÕë13dKåê^dφdöÊöB×ÚáKëëbP¸Š¸~%—ë3½g­iÿ[ºÃ¹ZM¢}ì¡í$’Ä-#ÅñÔ~‘¯¢‘N]‘ÎþJ3"\ØãL9ñ-E€AÁSë°>²3À 7±Á¦Ïà(cwòÊ̲¼Ÿ ¼ç˜„ߤl‘\?¤ýiÏ—Âë¡ö»‹/~k^ÃãNÚaÊL¹©äƒ¸<:÷R 6|ö‰Z“mïäÞ—ÚsžÉ;ÙiC¥–Jí‘Ø!«;Éú¿>S…ÂJÌO¤5‡u4دkÒ¦ g „¼ÌÉ5Ï!¾Œ\í¬Œ÷Äþë 4A¿™‡²w¿3ßGjå5 ÝuG7g)…“,Îpf›‡®÷k!Ù>l\qü¦x—ý½ìIùwŽßú:Èy³*Ä1Z“®¯gðÃX„»•I]‹æŒ`³ô2ÊCÞóy  0?§.ÀJºëÂ&È©Õk e½´¹1¼´ÓØ/kE‚¾ý×<ÃUz1Õ•ÃXpÙ¿à7#¬Fp¹…T„Ö=©Õzü¤åp'[Å–9œø ±ô×Iž ’<ÂÌä¼íO’€‰n]·§·<:qЄz0 gg²7x¤G¥hÖÛ lUÕãsö[ÔÔñË<ÔzŽ^à^ÇáÖ ÒH‚±ÒäܲÜg"Z¼i¿âƒü•sf3‰K ñLMdäûUí&ÂCv€Ç~›,«÷O%Å‚"ý¸£|Áñˆ±s—Ðy-b5D¢XGH~kµ8¿ýpõèÏõg¯_­ÿ&ž’}W.ðT¼×ÐXó|y—ÐG+[|Õ^ƒŠ¹—_UIç"2˜¡B·…N©«ua’á$azpŽõ¶dU&Wð¯=•>nå‰yY}Wæ•û°›çv”2";e4º’éi-ÓF·A©‘‘µI@ØyåkwrߙڰÌaûqÆ“¾C:(ž^Ãa“Êd 0GþÜÄœŽœƒ„Öµj ’zšUðág‡’ …pt»NÉF®„À\.·Î06Ýø¿Ü5‘¢—.H÷,f¶ñc’©½ûn’ ,•,rMC>Ð]Q°´»q\9ù1CÒàÝ@ú5´ÈdÅP†‡42òtÃn)n$’0ž˜Ÿ‡9ëÉŽÑ!òtòǘ(•‚ ´Ý",áV¨]Î °5ÿ,­mé%¾w¼쨟[s³áÃ@;^²x)ˆÉFÿÕÐí Ûûü8¾3ÖV·|Öç €éSIxã¸Ù’+¹rGصñ‘|' »\þaÊ“*+¨É!ã»%Ä•ÿb•#™Ý;¬ë¿´3O[L<Ÿ•Z@¡4ýiÅû8@+³ëLÓòb}¬ø[fԌƌ‹ëIq ìa¹¸뱞,Zãs.L©ƒÆ"oÏÊú¯ÿO+£y|Ù¹ŸÕ@b“$˜}è„¢4× œ6£þj¹ 6Eüp<Ø9b¬`¥×6½™ÄÚTZÒÕŠûâ &B }îkÔ«9`Ý.xͯÿÛG¿QqÀnè'jéÏO£óZŽU-UÚêh=6@Ë(ßE¼„-3èÓý'ó5Žjd?Í;9Ø4ðx}·ZV¨°þ3„!ñIžvK\kÁy„¥qýÙµ7v3^f,öwœ=pν¼Žšþf-"Ä&_Ì‚·Êi*䜒(³qÿ †ªË¢´!ÀýRÒ¯¹ªB·Cë´f,¸)ÍÕªé‚CÅR –øm9X½Y`j„’9rœBïôâùR*§v㤧þÚA7ÛTjúM –çeË)™LzUxo>§ó³²Â  e‰-û¤™t9ùÝ“+’ìÂú])©ÂdULY•ÍŠgÞC5/Dqfß*”|¥!µ.Ílh:‚ùx‘vo^6j3@)#$˜Q8ì¯LÏMAé©J&DXšLKÚlS­z… b«’ ¹Ÿ €Œ5¨=jåÄB˜ü]>hLÈ|_â8 èÚE§Q³HÜ´!ÁËígí ÀÛê˜yª.³qm“vhM84mUÞÏBškRË+ÉÚ& ßï™=Ú€GRû‹ÂŠü¾qÝpEG F³‰ÕÔÉYâW•m˰¡ºT¼ƒÎÎN iŽÛËàºùøâ8Z$ã î5Ø€ïµ`\Í”-až扺7k\êÕÀP.ÒT*a¡=·¥¡Ã˜Üò)s‚´ ®bVóÇžÐd­nšò¬˜õ]Ìç)lµÊÂáëD[Zv1œëê`2íÆÓô<˜D½7glÔ|ÚÛU]ƒdÛÒœˆ’‡”m î¢dÝvìé>Ì¡{ë[.›ä³&ÂfYÞwâá’ÃÙ„@ü qÔrº(Ü4;£Ðܺ?lJ)8H‰ºJ 8Vù…ÉâþÁÁù/‘‚.·ÁýX¢þî"CmüƒEeϸd{êQÛÇö%R‘Yß®QqŠA}ª—ßÐåYï3ûJª,ýáB@ébÈᘢ§ˆúíFê8õ eÐõo¡vå[d©ÓSðÝÙpªÑ9W}ÍYM‰lRÏñžQ%ò‹ßÝWað´×–Ý“¹þY Õq¤ö\á²è¢f¼QLâ¿åæ¶8x} NÃóëÇ +  l›9é°Dyáëk©±ç|-i-¤Â@ÿ“=†¡åóP¸ï… >M @¿iOùAiúâÒs¾üeì¥÷÷µ—VÁ0š‰õ„&8仨°i |†—Mà³9¡"á£G©mûCUW &Äb¿ ¬6Ÿoé¡Ãð»n/H3*è*ieéòøÜuÖlȱ²AEó·‘Ûdöxô>³µÖ´ã~Û$î+>fŒŠÕ³®¨ˆ'oÃPΙ’mqtI];þN»BãbMg)ÍáO_µÉ´§ª)FýÒâ’ó@'# ~JÖÃGgwu—©.Q~ðöÊ}¨¼î³ LíÕ 6/?/%ÞIžÉÚC™æz4už.ÿ0:Ȱ‘¾ÞÛy>5 t‘Þ™M(êÜØVR Ô QO7Žyóg/ÿ¯¢oIÿ*_ë—–€LŽã›Á­E"Së_w²ÄVH™U`õ:òX—æ°®#Eî YRÛLÝÉ—ýx#™ ¤öÖ|ŒI¹-p}ÇïDÆbV4dÊ äµd±;›õebb¯é¢»¶Ö.+_JeV¾ó†V‹œ¸*Dçwh„I0ÿa.ÔYÁ• Ëç"Dè£l¬/æ<–ªxl†B™^™Q¡à»÷{ÏÀÞkÆQ‰V=¦ejâ´÷UéåЫŸ‡ÞÉî+SÜHL@é0愈üœŠ¦åjVñs¢°· krY±ˆƒÙç&´k€,ØHÃí‹ !j»!Î\th q2÷ 0,#q­–ñ*¿É½YOyàÿôö%ïN^÷¶OÜåŠj{ó©RlÀž~n>1l臎õ-™³>ƒ4o«5ê\Ì]48õ¬vŒ6Á!Âݶ1 Yz½ÐÞøsãi½0Îú1wT:,S‡Ä÷ý;„þNÞƒÚ`g©%=Ýpˆ¨ê„c¹±lª‰v#ŽÐÄѧWFèòº½ËZŒÓï|:[3NÔ>p–ª¸SÛ‰ïöÔ‘¼Ÿ¤Izt¿ó”¦5ú,‹xˆãD@ëßL¶®Q+ëÞz·Õ n5—a¼E6#ýÿü`>¿FЍ|#»‘÷̤ÜÝÏé‚QÜ…Ê}ØÑ´ÑÛ´ï¶"tÎt€|¯Ñ3 ³u—&ì2yùØ2:_9w@faC¸®r4#Ô ’Ãk²cËSìžeRŠ•úó‹aÅ ^²Y#â8Z¹W˜®(aUñÔVK1²íLù)Q4–+v±Äž\³çM¢pCÅ@žX¬ÍmÄ>÷ž…ÿ?0¶ìQÀïÇE˜Æ×8’¶ÄVAÖ*É&^éácܯÆ;ÙãˆUWÉç2;¢&­µ±æ²b³¿nö‰VªXÖa†ký׈acá@áŽt‘†qk®‘ž°iXŒ¤kóüº2öÎÔG×öK Ù¼ïôq\HÅYY‰þÏugtÈ¢ Φï仫,߬JLÉÙ•Ú3½[ý©²ºs¦ðë0<*7/ÌÿËüM«_ðÁ·‚²<;ç¬ù¬¯ Ý¿O £Æ!ùóµ¥äîûßFÏE0ÖZr¾ý+Õì!yž`õšÜiB‰BO„Ýç|‘îÁœg íR†·î+äÐbaä‘›QŸÒT2£²åΠɰû1)¯bÙ­(?¬ù7ñ›ÚSG—ÙÕ2:¾Â±½—¯Äù˜JhbzO«_ÁTb:Ç.A°xnPbPCd].êŠSª6o²3ZèÚŽCÞ×`Ø©mÊvV’M››#Û'~ú½SIõD´& ET¦÷ ‚›åêÉÙ³ït3×ê^‹…ÄAcKW©H£­Üo#(e§H^™u ‚EºGæ£B«qß(}v§¥ËÁ^ÊrIÎ&tWĽÿ+àäÎY#+5jvó6íݳ0=XçsÄ5Ƈ¹$lÐúRe( +±~[öýÆ%¢š/|¦ñÔ™H»š@¥O§òáÿ4o‘Hòž8$zkui¹Ü ¶Y²YŒ&¼ÝÖùH7’3Q&‘ø¼´ž-Á –}ÛM Y(ßÌ›(ïjZESî ?(ßDLõëzOÛm™aÍj­zÎ]úÀ‡Qg:ÔgÈ£ÞE¬±Ž+˜pUnù¹éÈ4‰RïÐ.aæfÉA¦0z£µþ½ &Ú;œi†¦Õ‹Q%µ1­%+wêD ÌœJíñ« >Ce•€& ^¬Ùyú(û„^JÏM!ÿäÄ µ¢"C,#iQÅ3 ¢—LjÒpW½dçi¤‘ÅšvTwL,.Ë%#üpãÌIZ·ýQ ïßߎõñ,Å7m"}“YúªÖ ´LêN‡;^$¿UZÀ<í Ž.yºõXè#" iuõnÑxáŽå„²y˜g endstream endobj 12 0 obj << /Type /ObjStm /N 100 /First 874 /Length 5058 /Filter /FlateDecode >> stream xÚí\[s7²~ׯ˜ÇsêT4¸_ªR[ßmìÄvÛ›”h‰–˜•DE¢gýv™EŽD‰L^NªÌ ¦Ñ@Ýh40c™F5ºÉD|cŒn´k¬¶ñKtq¾±¶‰Ù6Ö4)Ñ]h´ò¡±¾ÑÚ¥=çmiœ¥ÖÖ5.6:º_$>omj¼nŒ²Š$6F[ÝÐ#cŒm‚jŒtŸ©¿`÷õh(Á4&ÒXBjL¢îµËÔ44Dª¤&ÖPãHC±94Ó“ibjlŒnŠ6“ I7N‘b$ÂéH÷4D|“©Þ‘¦‚ó:4$ÊEM 0Š”RÄm¦ ^Y»Gê“6¤‡V!Å´"ýlfžØxâ&hˆ'0&šA´Ä¬‰'£IiB@CK‚FÕË’i|Á±h@G£MjB ~´¡V» àCdT ìn2ƒ¤GÅÀ;Mø¦Ú@&©=MfŠ„ Û¨‰„3+µ žybŽlW’• dsÃZx šzdž'(Mˆ{š ™lâG‘@åNIVæšø²ôˆì”³&7ãåYÙ—K$‰Ç@P’Žä6š´¡'½+§°G¾DºÆ?°ª&s[¬¥.¨DõÎp»LÃÓ‘Çb3—X;œú!7Õ‘û ,<†8¼ÞÓ1òyŽÆÝM³L!ñ#p€hÊŠŸP R(ó=•<ëÆ#ËÑÀßé—ɘô„¼žj÷¾ür¯}óÇÅ´i_Nާ{íãùùbz¾¸j,MÁ×{íëéÕüúòpzEó/¦G³É£ùçægEA“Ggóaš_R;Òlÿø$?#iÍ—_6í3Åñ.Òä+Eö™®HÖîŠd¹®H–*EBF•"yÆpê§}y9?üaºh~&ž÷-cc»ŽhŽÛ­|Ǻ›¨Y³jR5€5R5" KŽ8R l…ÚÖSÈÆüV0ÔÊŒ@²‰Ž#PÑêc×ùàZH*§z :ÎßDÇÙ?ÅI*F4ÑvÌw–£Êûï?þ2=”1œÑÔ)œQf¥º²¥Ô¥+súr;rÄD`=º Á´‚`ØA¯îç_µÕþ527ðµ*"Q¢âòMðèS~eIöz+D6ð©õ^òPVLê·3éÈzSz½yW]›Òb×¹0å'~.ôоy+}×gC›xð H ·Í,ÂÊÌŸaé ÒƒJóœZó@{š53=ÓÆfGËAÈ+xÄ?{ê.­ji[ öÕª¸IŽAÛ7µ£hW¢YÜ,šEw7$cnQA5’`×á}ë€Wr¤è·Òqƒ5lLßS/é;â%wÍ¢“Ô :i+tÆ`™,c02?ªà; ðPÕWœ?íÌùÇÆ¿„Níw'4RÕwe§™Üv¦¾{=¨t ªIkãÙÝ›‚†ªžÍMÕ³ÚYœ1c=‘Çv#IÃRF°äæËùRlRÚEŽ”WBdÞ,DætwˆËá{WõJMê·84áí.tÔjÅøÐvWZŽ8Doø5û8Õd·ÍVÒ”ûëì7¸×h¬›œw£q^Õ8þÙ¶¼;¯[£2dïÆ×—êí¬¬×f7(­z†ÞÎ3îšÙã'Éc¹½àU‹ÜÚÄi ߃ì,³Íf!QûPŸÚþ½ÁꑹÞôÌÜØ{í[vy©Íªkš¸£a?tLvJëv8¦®Ë/é†À/êôNÙ®Bkã_ë74åw±¦?¦¥Fv7SÖ­NY§v¦éX$ëãÞCýlõ(^oz_Nœ·Š4µ ¬Âª¹¸ [FÈŸ½Õû¶ù›þ¿¡ö~.ì§l{»ø>)\möûŽ®1ÆýÔxï÷CÙ7Ma?–r]´Þ×ð µ)íçÆ+Uî…/;·ï»öR?´ä‘¸D}¹lY‚Éû¦”¥^jêzé“D’²û¾pÖrœ7\¶<ëƒhª3KÍŠÑM‰t.ÔþüÕ£ߎd$Nê!²>¥&D–cQ©É>íó7<‘À.¤¡Â$×åšÓiË*ƒžê©õŽêkiÛÐzlB‹2J3 R#ÊG‚Wwj‹1 |jkÙ(Âi“iü>ÒÃ:†@Ž×d‚/ž"J9in#I/¥_Pھ饊àr¯D­ÐªrEi.¬ÊKÖGý’WÅÞ'ðˆéÄ—*~áqÚÁ€¹7cýT’2(|“@¤«#¿¡ÑÕ<{ ÅøV©O–å‚ÖõÖ¢³ØËŒš#FÃ4ÚÀ†õO…V2kù®êÇŸU‘"å3;‰ÐºUÀ\¥IñØV)å´<ˆrç*4züJô¹•&D¢Mhá/²û>УÐ,i»É7v[ª´—Ëmw $Š‘:FµkAa¹»[.yM+¥T'nµfÉ—j¨h«´½IŠØúR/Bù#·êÇÎáz–“„pLŠÜ61%9W™ë…Ÿ?²óÙ@:ãl°SB Y´Eœ¢‘?Oj¦!ez–iÒÖY^V¢×ûòq =\{±–ŒPOS´–™2\êërЊÐs II"m\“­ƒc&,ÌlÈ”¤^Lð@ÆhrXöÈcsWÓ÷$÷ð`àÉóˆë‹tPáÉ6õ¥<ð9zZzd$ë ’¶¡õ¸„B DPNZªå<#ej£,¢*ãó—BFàKR‘d9ø¤ìJ Ê)`A N©ï¤’[)^¤/æ–RÍåKŠk HK¤¼ntc¿ÒºE­ãŒW¨Ôˆv즺Ӌ²Yrî²¥Bö‹—iñt’~¡eVŒXçU¸0KB¤‹)”E€£·a·-yq$‡.S’h^2òP•ojÅÌ‹P±M)›ˆýFgM©­mTèkÄ¥eÏ-.²î΃Â6õSÁ å~jªÍå°­J›Pä(¾ü6o¶Põµ]7R¥›luš¹–Õ`20çHrËa¶¤ù ÂU« {=ȲùÎY‚Hó@±LJÊ5æyFª ©#h9”qq&ù¸_1‹QØð±‡†Œ\»–DF¦FÈëY Ï`¿¦1“teËÂo‘ÊÜ•Ù×9ìO’™ce%^3¿Xþ°vÖÒù>#i,›—:3&³t3”j®Úñ}•ÚàY5¼‡„:,ÔZ†N¶¶¢‚ªLõ²øÈ ¾21*=)øñ3íL uh[¤Kþ^½.ŽGMß½ï2ŽAÑ›¥ +֨ʕõP»dS3ÈHõÙoÏ-» +y‹¤zZ<©:û|‚ƒ¿&žÁ`Ÿ¸-9…:œþó^ËêòÆÃÈq¬ËH.3Žƒ™7ᜉÃ:ïm$y%„0©ùüƒS)…óC9“'ÈÌÀ mFnáK9YΦØÔ|ŠÀÛ&>lÙù?KQhH±5÷S£QkäÎÊxjsÂÉWI:œÅŽ-œôGmf*5‹3Úõ¼òÜy‡sxÑ5pá™ $åBa7Ïÿ >òY"§BMò­+?F#-ˆÜ+ö Rã`,ûx®ÉFv6X)¹Z„ é´.ל§BK'õS¸G-mZM¨ôåp:%TjDõ(y„(M¹yÀ³ÙÁ’’ÍóáO âÖœsd¦“#íD²PÁ„ÚéÂÊ aß,U¯aX-/D‚‹ÝPâ¹RÙ;êÚœéáNý°Nyî”Aªé:SõOD)^ªãÕä°UôçÐÁó³Áɼqå|Kξi+„ cDYkçºÂT6Á*õÛaì ¼¼‰å¼'«„C%œt4]:l“58BÄ‘£”½„H”K ÅSDÓ2ͳZÊNN¦Ci#µ¥%êÎæ¥&ã§´¬ø…Ç¥„mÛŠ6ûæïÔkG)•wl)Þ8ãX‚I~oŽD[ÒêùïXßóÉJaW©I‰#pΚ¤²cׂ{J‡ÅÊ$´ÈžÉ;þx×è6¡ÝhøWÆLygãJ kÉoí»•4ºî½ŸÎÉ2iÁÅIÃ[ ´4HhøC{y•ÜÉ“–E6¶&Œ}‘Í\–ß«Ðßxì\…—KËs ¥ÚŒ\;˜Öë€|Èz´è¹äYgì§PžÉp¥ Êû³w8­Â 1É{jþ œÖDìÙ𪬷’#p&ˆçQ^c¢u)'¼Ó o¥cùœ¢“—±O­kø pƒ{Žu«åºF$;ÊK¸®l"¾g©xJ[©Gr,51¤Çh[Ë¿"áƒâ\^—襧ÐèCõ}Æödzux9»XÌ/å³¶ï&gôäÕ«§?=yü_}÷‚ôyq0æ’Ö”©¦ð7Æn›jö¶©ö|Q*šQ¥ºö¬ý¦ý–Ø‹ö;±W}ûWûÍÇÉéÅ ÏÊÓÅ„¦æáɬ=œ“P|;šžRE¹‹«Ùéü\·Ìò‰BÜñ„Ž/§“ÅTVŽÙœý‚€w:½ºjO#D¿ùô.Nfº½˜µ¿R¸<™sœ“¨«ÓÉÕ Áåз˜,ä^ Ê»oßýë›7b‘ÅêÎ &ìÈ Á¤CqY§{…ó×o_þtð:ùµ*ÙX4².ïH£<>ofKªä{…ðÇß<}öªŒÍÿnaâ#†¨’ô¨*˜õòÞM‚Êý?auŸ?ï\‹y.yí2÷Їï¾þçëGÏ×cáéÎ[ÕV¶í#bÈw'ˆœ}Maä ýçR(y9+ÑäLâ7ííÛöœ^/¦Uhú÷tѯuT–uŽž\ÎÏ æSÐl<žq@˜žËå×ëÉi;ý|x:9ãd‹ÿ͆ìõ´Ë¼Ž/'t_å_¿¬ËÀæl.†e°Zû@uz}EQê×ë鯆T˜/¦GOÁÞÝH ÜIQrº³™(5dw]xÛ0ÇËýÊó_i.Ö endstream endobj 196 0 obj << /Length1 1680 /Length2 9743 /Length3 0 /Length 10828 /Filter /FlateDecode >> stream xÚ¸eT›ë-ŒS¤¸ Å¡@pww—B±B€@H ¸»w×âî^ŠC ¥¸/ ×B¹tï}öÞç|ß÷ŽŒ‘¼sÉ|×zÖ\Ï0Ðjê°KYÁ^ƒäaPv. 0@FM›‹òpܘ º`è/3&ƒ>î †A…ÿ Y¸<Úd-\ãÔ`P€²+ÀÅàâæÜ@ Ðapa€¬…Ø  ÆP†AAΘ 20GO8ØÆÖåñ5ÿy0[²¸„„^ü‘rÁÁ–P€š…‹-Èáñ–€Ì rñü/ fQ[GaNNwww gÜFœåÀìb Ð9ƒàn +Àï†ê ?;ãÀdèÚ‚ÿ´ëÀ¬]Ü-à À£¶A3\¡V 8àñå%U€†#úg°êŸ/ €‹ƒëoº¿²¡$[XZÂ- ž`¨ À 4äU9\<\^, V¿- ΰÇ| 7 0ÄâõcÀ•[䥴 þÕž³%ìèâÌá †ün‘ó7Íã)ËA­d` ¨‹3æïúdÁpåã±{rþ9Y{(Ìêý°C­¬7aåêÈ©;¹‚”dÿ y4aþc³¹ø€@ €/äyXÚrþ¦×õtýáäúm~ìÀ×Ûæ°~lä ¶=þ`z;[¸.pW¯÷¿ÿ0¹¸V`KÀk Šùû£dý'~>ì0>j üýùûÉäQ^V0(ÄóŸð?æË©n(£©¦ÄögÇû¤¥aov^;7@HP Àøþ7‹¦ø¯*€ÿ¤*A­a¡?‹}<¥ÿìö×ü™ÿÚ Às©ÃE 0ÿ£ñW@> åã×ÿ³ÒÿHùÿøo–ÿ›Æÿ· yWä7óþÿÛ ñü+àQ³®.úWƒ=nôC @î¬È ìêð¿^%‹Ç=‚Ú@þ>F°³<Ød¥ v±´ýS,Úõ~/ iœÁ¿o;ø?¾ÇͲ´¼9œù‡ ô¸8ÿýJ9¨%Ìê÷†qóñ,àp OLࣸùøÞ\«hòøCÃN(Ìå1ðØž/ÀÇü=Q~>§ÔoÓHÀ©ûzôéý„œÿ !§åßèQnœÖà Àió/øHkû/øÈûï`A'ä_ð‘Ùáø¸+œ°¿!ï£óñ*ý—û‘þ/øHíü7äû@n÷×?üN—€Èö/÷c“®ÿ‚¥¹ý«ËÇZ<ÿ©åÑé‚ÿ™ý_C±t…ï¥?ÖæqbÿÁÜ Èsqf)b×Òu]'EáξýIlšaÛ …Ý{Þíz‹ƒžÂR›´¿”JíÃû²%Ç|!¹Dsï½ßÞ„Þ‘¤ÕùÓçÎ,A{r»sá3ÉÐÄÛ}©ÆA* Jv]ÉŸ{'ý@{ävÄe†|'WAÍBÂk÷ÆÁŠå±°¹m­Z~¬»Š)ö½èW¥3 ¯sfÉž£¹°S=a%8öÀ¹¸œ&È›x QN`Ãô=ˆá)ö6Z玽™õZ©Òåv~ÿŒþ™òÁØ$£·ônª2é¼wYñ|,m–¤{|Ã!™ ²Ëìµ­®} ß;5ed˜f~FƉL¤ô&z­C1Ñ¡”67çø‹òš‡Ò©@ûkç‰à ˆ@#Ÿ6–Ðvïm^£×.:3qƒ!k¸¶-qJ# ´Ÿ/œ 1¯‘'¢hÛfø.†tõÕ°åʇ¢æ6!s9ªöî€M›ì÷À½]ÚÑ/#J3'Ê^Sn{[¬¢ãsË,ØPÏ賕Ã3SÄ†ææ ±ÝºŽ”Ô>ËÏkt¸5X¤q)Þ¿º¥œÝ(•Ç’û)½2Üx­³Š(“J/²_ìÕó(†Œï‚Ø1ù¸M;Oïªí”qØÕQFĔʾžUÞ H˜2é¢ô åÁ:VD¿AûņF™L1@²RD»WáPo=à@‚R£¶X5ÉmC¨±»ÌAª; DvÛâ>‘äÏ"ÑŽ\,ód-?Uÿ5‘€é¦}Vnù…²H•åSLõ÷ɬgOc(ß—¼]_ôÉJœé§ŽÐ{û`9^³V¸‹3Z™ñßH⟲ÍäG5Æà^\kþœOMc´î¦wž¹ éÒôa`ÑnÃq8̡" cì²ÀüVEr®ÛïœbFU4Ö˜êë¿Hîã­TÃ?Дû!M:-NÀNéŠ=4<`$;ü¾Ñ‚(ò®”û!]R€Kòø;/s"e‡âÀ8yî”-“cÕÔ›GŠÛ¸¡oXƒÄ›1|…9|Y*á´ Ó–¸æ‚é¼xVÆvÞÇø¦GÌÝ™:?ÎÔ7Ë^òDÇl,v›FbjŠ6æ»ÔÂî$$Ù1¹zXŬïüU‚žßêå®O²$ZÓ$fþš+j/؉^+’R!0¬È™TÔÊ›¦½¤HÖÉ÷®z:mn[¯™xþ…<¥Ï8ë—àèdª( šmÇH²`uìÏÆ´ŒÕ¨„ñ”Ûƒôþ>³W HâºÝöuOö஡u/%Õ Q­®Ÿ Ì$Èqµ©ÎÝxl¨~‰taY£µ}|€aŒ“·sßc'émœ]¸¾çßL—™{Ã@>øR÷‚IûÛÿÌóÅÜžU»…¹¦Ü$·—ŸO{ݸ—Y®ú@J™–ÇYÄ*UøýKÑ6ªÑ¯Š9ç&õÉh‡&ËÏ'Ë7âØá}Ó§ÙâZ=áŒí©Ã5Ûûcí^Ðtœžˆ0{™²:k'öÅ”û`~§H:kº#Ç¥Ä(NmëB÷I‚G˜»ØeñdÑ“‘B>ƒÖ]ôÒ‰æç°®SžCmÇ›¬|C$S ½}X#á6@øRý›rÚÐV-á ?c>ýAÖÏxQ,O‚ïtޏWuÈPòàs»:ݯ)Xád»Œ•øá‚Û3y^õƒ9 °¡÷c3ÏMI«o´ñÞz„ûÑšâ¾s—³˜·®Ÿú1Ú vxÈŽáå¥à|]£þpÀDžq‰¬²ÜdzÝrºWX©a;¡,5œ‘ÙØ%nZJ ä–7ïÉJΤäàÒ6]#l¥Nw”T”¬:M±c¡í‘ßOzgEÛ­…˜œå‘ÙÌz’ØóUh'ŸT§fPÖŠÐ~¡Ÿ<ñ5}Ý­þÉpX…©K*¯¯-(aUQ=> X­TüB£Ÿi½øÙÆ>¤°‘&, 3ä!L]ã;Ù‡Æ ÝÜ'úÛìÌ­´ÊÍ­Fï< ×0ºËhMj½æ¿HÎs´”ßcóF"L°Ç%ɪ6ñ™Á·÷ªl‚Jk9©áßJƒðvmÆk5’Þxª¬¾÷¤¾÷ÈŸ‘º·ÜLÿÐ1QPx÷Òj…9„U8÷ceQX(¥v«ù:$:Œú6!|¯Ö%Ñ„®¹8rbÃ8: *K«ÆÝM}ÍgE8ɪ!‡Áÿ´^O×ööÙ Ä­G¨“ÂŒñfæÙ½£LVæÐ>Ûs›Z,Æl×’æOý7‰Ž†],eÌ;fó7Y± 5‚|U/¥˜™ö#¸”3±X°Ék “§Å>@%äcc7,œð £^ÕÞ|gbùhÆ»HõÎWåeA-[³Õœ¸©åªþþ! œÑË‹‘{"Âg,UàKd?@ƒ¦±z:Š_B”æûź3’æ±í–¤é•û‰$«ù Þ‘¢'RºX>0mƒ.¾·ÀzY!N|]PhO·^ã.ÑëØ¿Ñô0žÔ¿áÒœCBµüžÖŒ Ð5=`oð.¾³ÂNÜz‘4%yj¶ВÐ%³ŒëÕ~Å÷FÙjèÕô¨œDS¾`œ \Ú£ ©{E>TÿåëçB.UéºÊ :å¯ ˆÍÇïÏ~õŸ´Q9’’‰ÇDŸ C• ðTŒTeŸ[¥œ[ï(q•QJÌØ¹ô3 s2G+å*ä-¡£!|hæFyžþT4˜­ ¡~ ¸ÎöÈ]° ü(Ñä_Û)Ô³íÕ¯ôŽ¥d¨ŽRPï1Tw”ŠLåEÓs6y-b“€Hî*ü-úŠ“¸j©fÌ‘Ðb!õ ®ðÖg.›áäÓ‘¯æ húïSNåäò%Z,ñÈp殉°e–Ó†3ØÍ‡éQj«ÕÜÖпS}'ñi etˆþ„]ÃoH;`Cµš7NrÇÿe±ZŒMƒÍÀh®JÍB’aÜ8[¢+Hõ”ÃO{q‘¨Ã=Ôâ•zL1»Ï«é­du¿ÍáÝ`OõÛ ´®%}48¾É ¹¿ÖAêp”F÷Šß˜Ëi¢mÎä¶9Fz;wGÄ_†·¾<þÝžNÓ~ºœ`@Î…ã/õ| jX8vÂÕŒØÉ MT¡êÕa'Q—*ß"µá;40õcFõlxXÊ•ó§®ë]r$ÅóUÏ;ŸSŠ•ý’œ˜ÙS™YLÓCO6Š´ŠðÜıEž¨gð}¢œ.!÷ˆƒ6X£¤ÎcAÞ¤¥¶ÞLÞEíŒÒÉf4 öÖ§˜C¨A[6{xZ³>PÚÌ™–a`‰øt›+i/Ï3A°‘‚»cM¿c«¶ô|±´½ÿ40(ÕTÞ—œ†N[“b'¶-€íîÈ/•Ü¡ßÏî89;ñ‰¼¥þ€&RåxýÓËÂË¡Øs£ ¨<ªȈ9Ÿ!FôìîAœUk¸îFK€V—´• Ê©E°}Èi…ÔMIfœ ¡í *%½ßV˜À*öB¸­µÓüXûÂÎà[`2‰öR«@“ÓÓƒÎk;fXT&Oí—ãgBðÄ}ò0Æž¹ë€ m=y£%JÙž^ÆÆ?ßå2Ü6ük+ñ¨ò'pÆRožÒØt¼CGE„èÝÁÜŠï£òØðŸk1x‰ Зé! ºŠ¶+ók+¤]~hú2îæ°úµ‘”á⦿3¯qŠÈ¤JLSÆ7äî‹÷—áûû "BÆý!$¬=P½‚À|"j±Rêut7P˺—³#á#ê'ͳµ£¬\­Î¦wl’üg‘˜¹x(qð…‚]|ø‹Ÿ}JæØ¢“Ô›ÒemqÊŽ55Sß[“0+Ui×6f÷ô‘AFÀ¬‚2+îÑÌ; Ñ®ŒÇ¬§¬ "©.™½O”~e];ðuå&˜{µîmx^ 0‰Æ@YHè59Î[,ðæPðcëaH@}øH!Ÿ½ß¬ð¯îYwÇç•"v'uR(·ÕŸÌu´_µ¼DÁ©ç˜rW_'½—©O°ßö$¬ô[uU¤ÛcÄ™Ph¸á®q*‘RcÙˆì&լɽÊóPa$Åë¸+B}eë‡è·ûçž_-¬ß”eKñHÈ]ÆrhãåIã ®¡n¦¡ZNèùhœ–±µëQÑ7Á'ÅÃ#ãk( ñ÷MßøÌÇRŠ^¬opΛÂEø$È…>,ãŠke«Ï+у«Ö®²lÒÂżæÍpG2€3ŠãâÌ›\ º§‹½|²tÇš¶ô•Ô¶j­Y׊BøûˆÑÇ,¿Õ,™Š¦ekó»±»×°n«á.ÄEÜœ¥ré–`ƒÃ%¾)K[‡æ?ËÙ§Ò.AB{U¤kâµÅbȨ°ôëÂ|Ç>;ÿ=´{œHòšÙ÷ ‹ì.r‡D7MK--;D³º>ÈüÈq&¢ÀÜ+ÚûSVv„vä1[f"æGRÑ¢.ó‰Bꙋ½ck%Eªüçœ~±#gnÝØæ é¥ÿ[.åOå¬1óu=åªÆ­1ά–6’ ~öÖne2‚+† Cž>Òu4’Œ3ÅB. É 8¶Vr·¤i©V6 4¼u|ÿ´•ÄJò‹¶IDZC¨£ÝGQðŠûŽÌ«ñ4«õË¥MWuiE\¦ÄÆãXÒA}ƒ âhZCþP¦aç§¿¯óµçxNæ!ó²¯Wäa7ðýWçÅôˆ´+WÔÈsÒouÎÃE O=#^½%•9UFÈg d\{ï É@²•?Öƒžù Eª§÷óØ©€£LU~‘j)A±²t;ðâÿ"KÛï¦Èá_$8¶ÃMs“…P¡önk[“Œ·ÁÚ„!NÃ%Ð?®}{‹ bÝ%e¾Y@ >:—ºÑLãÛ"a6ÑÚ°õ€Z~f@Äø­Œ•îæÓ|@]fôÜO¶RúÑxî°YF¹tŽ—Ê‘9¥‰ÌÞ°‰%Ûn@àdtGH*kð‡›æšm5 `{WØUÁü«ñ‘_h°!šå³Ø3‡}ÌòźÆ]ghE‹s!GLƒðØ¥w‹­ŸÄØò9ö\Ìš§^0”ôi²,}.Í…³Nãoð„:ÎÓçcQêyS±G·”MIGRœò¢ÃÈ–ò3 1-Ì5Æ|œ¶"­ÒQ V7>ñì‘#O÷wÐo|ç<ó™RÓ¾me7¦X¯Å.áßQ»õÌë·ñ; ¸z p­0®‡œ2úÐfmÈ3 r¸îI­m½s!lÑþŽçVK†¢8YCW¢Â\¬vê×ÜjH ê§Û‘¬ ùùë5°ö²¡‡`»ÔnšT‡ å•6qZ¾gšÜôn`VrF_0…ÝĮّfR)¼¶eñÜD×g`Ò˜áµn ¥óM¬.> ù J¸BuyŸ„iNv2â‘»{ÙåÚ¶àB½&—AÚ9ëtЇ¯D«uH¿ÃÈÜûÜ5\YÕ‡¯qì<,£r2ô‹fz…ªûœë¸GßNàóœ~:=÷ŸÍ:/ æÔÉDc!•dÄíŽJx50iò>çµÁZm¡új±ã"±Eÿ`¢u\$nÚ9)'ƒÝ䈾+>©;£Âßž9ÐÂC+úаK´9–cÐLL"èMà £·Ð*Òªåò‹b+Ǹ&Êh­‚ßn(³Éç%²/ÍÈŽŒ(±hbá)ìëö­l5=[VbY&‘Z“|O×fÙEûhÚùzæu ìƒ7[Þƒ¿_‹v0xWðw\àREÄß· f9í13´`•tûSsVÆè‰–´=§ûLhοå heà]›„WªZ­Œ¨$=I¡âCÞ˜F=™Íe¿K<è98ÑæÁ‘Òˆd Cö·ù̲¬\"BØÃLJ£V¾ŸÙÙDnÿ€Ïpô^ÿš !ªÿ%óÎà6²°Â5V[&hXÊ…ã*ÃEÒ‡”ƒâ™6O©ã}ó*ø™cõ5À=êéÜ׌2E`žì©ü’»kŸe×8°Ø.' ò+½³/ ÃK?[G×”>ÔØ£ˆaW¨¶ddV1…õa>4[•€hÌäsá)¸ÉqÌéª!öÈSn~á´î fÙG!°ìN?ç0–ËdÜ Žf4°îب9-$€5¿úñöy`z~(ÿ˜Ù —R†K‹<»†Ï}fÌ&\h”ª#‰d­{dyBqÀŠ%qµ•ž;+FR#-êS åÓ7–Rˆí2(ð„KÞÛ «Š(&ï#:¹~.Ž/ìöË\ÍuC"V²‘Gê¿;¨dš¢ÇèÐÊS¸CØTQͺ± ž"&rTùõªùCÄúnç#Ôx*ÇtžÅÑ-±ÀÎëL=YZc¾w›^‘¾-D9}Š="öCAC‘ÎmA&q•IqF,Û“!ï5âp¡;¼%·>%Ã>Cò““¥)$°Ð¤B:Ø+Ë•«O´Û¡âA"Œ˜Zù€[¥ÁjÍŽX'r%/aÙ¹Òï w|_R £s‰S9ÆÖËùÀ©Ì¬è5Uq§uSBúùUóBe©ÄÐÞ¦ùåÛ ó1`€N-¡Q¨¤)ë´›ƒ÷Ý)‰ŒGbò¤*qÙR:£#îÞ Î°=Ú•óÓ¸Ò“ç»PžIfMœ§8,‹'4ÃÍ\Õ½É3=Ã(Ñ^§{$¦CR(xYöº…ûÂQ§7Ò¨ºëÊœH +³NÙŠù´L×éÂ⠌·àÞ+|aÃ׉åd~”!Šgõ¼ºc¢ýV3Ùa!7¢½Iì Mˆ1Š4E9³vô×aiЍ#,nÈN3oŒëTÒrSÍúEe<â%š&ÔF© 3QmU¦è|4—þÜe¥Ñi6!hzÙãâï}Ö‡wt·Ã—íNîïó¬P^Ú7l·òa#ƒ†C8’[WZ»Ã’:~«MSØÀ$üY”ûg@NI{âtk_6‡ÀÌD¼Ë1aï$Ê"ÀåYn-þ{Æ’“Í÷©ÊÜß—í\"QÎ’i¥$κÆìxBð-wÊ-jÙèFêýí,@ÅǺ¶j=cQ½s)ÐE%Ê¡'ÞÏúÐýÁE w)¼a»¯êE}±+ëÐY¸*ƒjV°–¢ç>[Ô&Ú²ô¨XÚM-­!ÚÍ¥4š&>ˆËçà¾ÌJ‰€tãUþÔ™Ê÷±Oʸ|«ê²õQW×…Wå¹}½“~Nå<µéDÃê'm ¡:G6ñ\Þó‰°Õm;ßl}¬ÑK@)7 (ùWâʨ‚‹c@ì¨ „û›õÃ<ߟŠS×5©¤îïôaJ»(›K µ¿Ã­yoǺlÒêÁ£¬»õ£8γGKµàÏ2I¼– Z`s¥šéüpc0HFä¸Ào1¬Í/²Ây|~p;ƒ‡š11ÿänU]Æ# ]oZ&P;çs›Þ '‡îÏÑ÷gü‡Ù7½3¡ºKô Ad5`ám$÷öÆjNÏd.L%‚}l˜íÉ!‘è¡kµ³ô¨ì†Y&“=ža´A8!›'¸fîxHŽ«èÇÀ¤wPP©Iðx4ùÔþ¹ šÁ^h¾yï\ÊC)<ółĖ¾áè†ýõqU;öê'‹­öÊ™Oõe_ÁÔ}¢rqœ¹œjž"Ä¥5å#ÆÖ˜ïªèžu4(ÝΧÙáà#~= _ µhO<âe–2{÷•7ãaá~°øYÒž\Y:Oð°é÷£x¬³¯—á­Ë+ƒ‰šÅ^s’æy+U¬Â…W3柳…J°û÷M9 a¼OVé^}™B<_§†¦6½yž³¡“Ð~F1tÀDz¡¤³¡¿è¬=¶>Zñ«V©tÀT¥*!šïY®xÁõA’îSùçQ /œðQî?f›mA-àðËßz8IHV| uïh˜ŒUϹê¥É§˜úfnéãÓð©Ñø·ÁÓŸÑÙŸœð6›v7e¥5¯^Œ Š~ç‹õ{$ë‚ýkLB …T¨Ø´ì*üyý ¹›;˜6å6F=ìÊøSÈD¶ïö¢~xs»Eg kIsedY?àÎhåj~<‰ÿ#®‰0þD¥%ãž{ñ«ÊéæUMƒu+`Ê[_ϯ©/¸üü‡ƒ±É­nÂùÉçZÅ·eZDÙ,f ¹ü›ƒy—©òæ¹ä7tµ¬Í³µ“x€oÓd%†i’«á¢'‰̦¦Â¡Ö³q,ùêŽßg-R×ê‚( Ë<Îøý¥¹Åd 5¹½î‹BW'=O6V‡îçæÖœ+åPûJc5S.=·o®‹[˜ÚbÛkÚ Å9îºÖùA®CÝ*ÀYÛû¢p fé ZeòçØ-ØØbâ‰ß4"rËù²ŽžËa•Ìa4ØöggÁ®ç5ÆSˆBöî\`)9ÄïíÍ©a7g·Ä"F‡Öbp¢?SæÜõÀýÍÏ•;ÛâÖ{ÃråýQŒ„é3–eÑ©IJTü÷wêŒ/q¦°*=ã´FÛù FâcË?„Wl·$Þwöc?ÝÖŸE |Ö?2{‹Ï‹Õ+(¿ ’^Ðê'A‡è¥%a †¾2¹!ô*gßKO—[°ênÔýNBÖ÷¶<’œ²ÂñÈ6~wSથ‰¸ýôc]k› Š·ŒÏI©ôà©üi½]ÏU ñ,ǯ$ÇÐQ‡ñƱÌYt{T³7‰ÙóŒWµÍI“dE.5gœiŠÚo*;åSt_©Më*$*Ò«tƒ“ãÔì%X¡÷Ÿ½å»¿aµ ù–^PÏ@»Âè_´}ÔŠ=’?‘D‚ ~àéÝ*gxâÃÈ­éZ¡ËLC!Ø+beæ×nk½Aìt°Eª0ýÓ ~ŽæÈÙ"™tJz]62Å(îŒï¡ÕÕH-ñ¾›`ôY¼ãæíK|™1Õ®‰”¡zwóYß?¾ pkìµÞQl”…úä;i•Ë;» N«\c—¨3ð Íá4]íîÁջϓ}…äÏc>XÀìwíi‘æïÅ_ ʲfõÔáBà#7‰Ž…!¯^ÔÙ¾áWlüWSa² ÇñÛ—è»UÃï286 7nCgÛlb¼âQ–ÍÈÌquÙÁ>~g†b÷í–§ÖU¦âm]$=b÷u… qoYˆL¶{ïP*âAââ×ADûµ+¤,ª°Ÿ.&2øz(+Z¤0ÑÌ ˜¾÷â<6æ <…ʇ ¬ÔB›=$ogˆGL4"šÊNBBÖúƒÐä•#Ñs–š)2?Rj+˜nÆ Õ×B}¤€uýX«ï¨Œ­Ã$òŸ/›`5Çzrå#‰MǺÃ.JRÕÒõc‘”r¡ytÖ+û%Ät<'¤­e¿´WTaÜRw¾'p…íT.c½Ê8^Þ`ŒNø…^· °øÉI؆$>×¹íõù™JgF!×å&‚—K½ä ñ˜–Bî>‰h+/?aê®EE)ô ÕVÞwØ®e†¾0ãÀ0Ùû™K£Ìéí F?•Êpó´?¶Ø<ŸCX@M®êŒîý–Ý)ƒ“ÁIV)ivõPlxŽZºãåÈrqʼn¾uÀ™A›ºÿz§öÛˆ¥Ê´Fóë›3‹™¨ßÔ8ºÝ²ïªX—°?~}ÂÏz\õzD@£žI”ðx¡¹Í)ïU5Õ/˜ç›V\ß7ê)ÂÍ7ëÇŸåõ`á3¯qKü‹æýb”‚êR&1Ú×q;¯³ŽŽIk –£ÐE”ÍG@Ôj¹fèËhUMQꑸ0ñÝÄ5#>Xáµ`¸)éÈOÚ=9¥s7‘uUz'ÀÿʸÐÏ«"!¥áI€¦ëu:ÊËzŸæ2_í jÈÔÛeëb„!¾+5šè¥¶n?§~de$Ih´Û[*íåQ3ÿÈsWãI‚’Ò~-Ì÷L$´ú¹÷¡YÒXéb"z§_;0zø* fPíoèÙ—(Å~x,M|Éòžõ¹gâçYmÉlõ.¢VR¥5UgI k‰þ°¶;K•ïš„Øjnî瘓U’ÀQMÊvv.såýžE'CtÄf·!³ˆ ª½C4?$i¿dª7O ùŒÂc·Mnßv–(ÝF£ë¨ë2X‘^hí.·”ÒtüäV;,AÒI¥h`0ÞÞc¥äÇÉ0Ú.$¯ •'“íD3ñŸï''ܘ}Ï¥®î^E¿¤ä Ñf.p¶1S ò/Ýo@ çÜÝ^‰øÞ$½V)#;r^ètÉ&x…Lîºöä SeÊçñw-EÛš´e‹]¼Å¼õ]¤‚> ŸQt·ÆÇª¾¾öùà§ <‹¼…p¡ÔÑ}Ÿ'DFì˜ú²³­øÙÊzæ. ^ç“ ÒM2eœÇ0 fÑg*‚ݚ›2ózdôÅò—«“’= Å-Á#y×s«v~§_@Á> ;+˜ZþýºÙrcŸDh8î¦e Åâä*ù˜‘[ÜGxU'Ñ¿4Þä%ÞŒë1Gß©÷qKBœ«Ë¿Å~#¡eC\¯zÖºi0áÝî—fïh#äžSÜy”„Ãqò•XåÈÆŠ¥aÙ®Õ’t¥0å†òË"¥ô=ïPÕýàÓ ZHýlHŒ‘Þ‚9úÑ{^ÙjÆ:•ëM‡çï:¬D–>¼!ùâ!O–þ‚²þœƒí³*ÃözpÌ!ˆÃs›¨ˆâgßW&žZ› oþ¨D¢Oóöì·Ý8¦ ðõ|?•ëêì Ý£ØÊîº÷æè»ƒ?Trc-Ùx+ 1»ñÖëÅk¥Í4¸:¼ÑžšdUÆR©|¢ºžUØnf¦yÙ¬òð¶S]D}7¿„º&†rf60øZé\‘…ë”è¯ýƨÇxS¾Ïî}É¥á ú?«+êH endstream endobj 199 0 obj << /Length1 1656 /Length2 9702 /Length3 0 /Length 10766 /Filter /FlateDecode >> stream xÚ¶P\Ù.Lp NpiÜiÜÝÝÝ­Æww ÜÝ !Á‚; î.! ®á‘™¹3sïÿW½W]uú|Ë×ÚßÚu¨ÉU5˜Å,!æ iˆ£3 +?@BIÀÊÊÁÂÊÊŽLM­ v³ý%F¦Ö¹¸‚!Žüÿ2p™¹½È$ÍÜ^ì” Žyw{€›Ÿ‡Ÿ•ÀÎÊÊ÷Cˆ ?@ÒÌl PbÈCA®ÈÔ'o°µÛKšÿ¼è,èl||.Èò²°þ¯éíúCÉö[üÒ¿¯Ä `õÒÈlzùCöu5óÜ\ÜAþ¾ÿVü7BfcX‚-Üæ k°#ò?Ñ_Ä «?ñËỀ½¬/Üc°þþýýfôB/Kˆ£½÷?æœ/P^UR[Y—ñÏŽÿÖ‰‹C¼¾Ìfv.V'€‡“àÿßQTÍÀUÁú«œ£À÷g±/SúOÁ?Ý_»AøïXÊÒ‚tÿpÜ•‹ÕâåÁöÿÌô?\þÿþ;Êÿãÿ[´»½ýjº?ôÿµ™ØÞû/ƒκ»½ð_ ò²Žÿkªúsg•@–`w‡ÿÕʹ™½ì˜£µýßc»Jƒ½@–ª`7 ›?Éò§\ë÷’ÙƒAªWðï[ÀÌÆÊú?º—Ͳ°{¹9\_ù‡ ô²8ÿRÊÑbù{ÃØ¹¸f..fÞȬ/Dbçâø²½¬¢%Èë€,Ž·ÀK{þ+ˆ òïåæÅ~‹þD¼ ä߈‡”þq€Š#^NPóoÄÇšýƒø@‹¿Ñﮀ–ÿ‚l è_´þ|‰kó/øRø_ð%Ý¿àK"‡ ÛK"ÇÁ—DÁ—È.ÿ‚/‘]ÿ_ºsû|Iäþ/ø’Èóø_÷pwqy¹~þX—“ùþ㮼@ÈKó 0Ûaí·Ĉ<™÷&„f¨÷t2è™}—\:ÜïÑRéërB6\®ÅR¿ôb¬îHÑ]‰.“=ùþøÜ€ÙúN­íÁïÑ$I}j¯ yñ+îàdɱO$HÄÌš¢û~OÎ~ÚÁv0Ÿ_uÉS8»ó¢©aßzöËx}¨Z‹˜ßSÛ¯ãV@y¬šfŽ×Š3 .Ÿ¥.4Ïç€wc&AdÀ:óBŸ½ºžÁÊŸ|&“ObDö?Šç(õÕßd{7ç³V£ÉîÚM@E Os…56Eã+~&·à[Q‹ÑÂ2Ê^ô$Ÿkt¼(ONg¼Ôçk;¡Ðƒ yt½CãŠèÝ¿ ò‡G<ó‘n—h@ŒÝ× ×“ñêjuP#†¤|Ád±€ÆÐ¿îò»s?–Ÿ*Ï›¡Ž±v®ŽyûÆ%™Ž_[?¯*ÑŸÉÝKc±¤§ó̺Hj Ú¥·Q\SípCuF$Uf¹¨nE5“§}-»g?]Ø4Öñ¼½+^Í!Dð6n^ZSiûaR»´BIz‹rwaÊ[_¦#Åâg¹æÝ­ôk;g¾\Y,¼#Tܤ+ßÚ' ˜oÔ­ðm„zøñNZ/ÍŽÎÜágðÁ5ƒ×¶Ítûgd#‰œgšêH²`ž$ïü™‡6ÞGÖÐÔû'9R–ÇðGÈ×µ(­FJÒ}ML‡C­:q¡?™4?Í‘™!š®³ŒhZÁqßcÒYÞË©óA‰ ÒWÍ?ÿb #îÖˆ{wÔÀ˜om6±¬~BñNðÌA&(—>xfë:aM¯‰ö€W˜ÄEÊúè|ºáä[öH´ªë7ëúºöœÁ“e/)„Ì”Ënÿ"*ëDQ«ÏÊŽ‹hÙÛfeø€ÏLz½9ìÁPÔíÆ=TrÛþõÃZï8EÐí·ûÖßH;Th ®“±-Áç1B>•Fdµ0ksöI†ƒ(O¥ï’|cd†oFbîÐ…<–˜…¿ òá` =bˆ¶ ÄZ`dÉnà¾íhBâD.ø¹è >[ •E-¿ÊbÇUî‰4»’²´:Œ)rÅÏ“\GÄÆ˜döõ6NUkÅIÙq F' òL”A“ Ü|Íßq‹ìGÈßm¼úæJÚÇDγ`dÑ*Hôa3(°ö‘Z0=A§NºÃ(BîÃäåÑ7æTì„«'ùdŠ,>– ŸÒÈ4t}¡‡8vÜÕû-az«ò4G#Ë©„hñåO„à_Žù)󨲶)qnîÄbÊaþovÃ+‹ðK^µaùò¦›QOÖ˜(|0YâC4ƒ+–È1Ú1Žï¶+z«õÉO貤b’0´æîãsJްØA€¶ÇŸØ2v”hJL‚É^& ú(ÙÌ‘ýSÔÏM6Žpšø«›Ž]–h^‡“¡’ä "Ú¤™Á³]zU=³þ„à Y6Q"ia” MZ£úæ“iÖ´ÑååF>õyì×Û& =±Is2b×'hèIÅ¥_ÚR+<Ëuô4{×Cw‚NÜÈÏýf'l†˜¦žùÐum¼¹ª-8¨K1m²Ž‰Öyl™T¼f"›¯V34Ý£Z–;úÔÔRýi/tå´J¡œð*Pƒ’çS{*Ÿ§[!m×N«“DJ‡Á)ŽU«ƒsG:‘‘–íθ p̳q5ËxÛèîÞaCÙ5£ïF‚˜HÃã*ä>œÔõJÛ ¼¾Q'áš_–­90ôK<†ÀÞ!ÜRô í1 †êä°*ŒJFhfV£|Z“ù:z±ª9zš¾kw ϳÐ7Ë\Xö«æW£ŠU¶8}=ŒÖ”„•/Ë'T9Vßõí!™Ù²“ð”¤Flñú›˜ñpqlu'J›¶5xL´Ã®m“È«.¥Ëë%?-ɘõÌê¹X†ñc†¥³žiU/‡Î¼.¤‡o¶by'º#šox:ÔÃÄî8¯=ouÙƒotF´cë­¡Æ76’àÃó†ž.P™¦@…ÁA1['éÜŽ˜\§B)¶Ûϰë!æmÚW0£³`õ­ÓÆÁ_Å£c»0q|Ï”´Dð†åÍ•yhË(N‡5Iò\\Õà­}`xƒ­edk£&%è‚ß.Í<,7„³0Ê n Ž Gó¶Iʯ/é›/~ ”™õÂS¡i; ÿ2 7¸#´‰9ø¸ vˆêÐB ZÑ6–vX*> # ¾¿¿…+ϲc¹>}Ø“,£c­À_ãÕ šâ°8o{^ãý8Ú°‡hGÑ{k-=_ÐfƒíéÓÁÜòœjH SÌ´ ¥¥ÞµÍñPp¥OûÝ6^msà0âY_éSŽ%²ùXfG_ý«÷wÑ®šz6rÅ›¤áF–k½‚ï_sâ`a×~½ªºJˆúUüù:Ïý³î„:äbÖ´áÛzî{í»9ÂRS*l °O“9ÏRÞ­í79x¦h*ðä€óaj§·“eyfŒ½„^T§¶˜VY«z'œZ`$æb99œ‘UHоŠ^5}É ØZȾa^c êânȳ=G/7Ù^MgÖ›á DȆb?°e+˜þT”0ì€HØ*دd¶æL'n:à9HÏ©^š*&.}ƒ­ ÆdnøI=q*_/1Û·v.ç¯Ø­aÐY{o£µq𮂓N±Ÿä$å°66;Ÿ¥¼†‡5ß>ÝV{2ªuú#HîÉk¤G™'°oE;Ãë;úZKJbø|ð°Ëš2z½-ÄV,ª©µ1“l òeRðNÕß`'{¦8°nËðsƒ'¨¼?õ“cJ³`Kk‹]v&ptXó•^hêRíªi8Ê­ÚT–=aN&O)· »’B •ß×Zæ¶ñ¥ªa¨õzˆ/&Ò˜ÜÖ Žq·¹‹¶U°>¯“Píò"kïe”ºPŸÜW®*ƒÏZGì»7qÀ»$Ýô˜ˆï™rjï2±˜‹Œ¿±tÓ·¿2´VÍ)©IiþéMÔˆ‡ÔÄð:JÄ Óº‹ú뻕XŠèsÀrÀëû‰•ZEìŒ þ×r‹ŽS)ø½t¡od?(ýgÆÍ÷c»  ¢,Ê›­J>µ ¬¼—;ü;"l½1¡Þ$½‚fï†iQ带–Çãz·¨†C‡^qP¬}æ×Àc’-W^û&À^¤²³4ÉÙv>^ôãÖî3ßøL%¾ÇŠV¤ªVÈñ*^úÝ/o–½hŒY+Bíâ9Bø–M¶rd˜à¢%ê-Ò|$§(,_V'dË9*Ñ,Š·ü * ¬ßåAËïšCz{”sÕˆì6«#tóƒì[¯õ¼Er7+F—:•ªq<˜w–ëä@¥ÓÌD0ÁÍé"" Ú¯ãí«e (rÇ%¨º +à«ÜàŽèÕ¦K±“§¹š"Ö5«/º­&ïZ.³,Æ$#ùäÚ`ÅgŠn €I7¶X*"TäÙìÆºnXg_¦_kyöÅ(Þõ¸’_=¢Zyɩں‹¬Ø§c÷Þ,ë›{ ³ByË é¬¢«·Ä£ÎraÄÞ„š\ÏÍwn³§ =…ž-cqÊÍÞ½ª€Æô a ¿jË5¢ùD–¢P31Ý­g¹J ,›Ò„äšá!L7Y«…C]ˆÅHœÒ³×k0Ð5Ê+™È¼ç¨Å&Ó”¯ˆò3fr¸RzõIYäpè ­…‰ L“Áœê…§¦À¸í¸nTØšA—ì$ôMócl+|¸µý,îV«AT¿9˜ v œ‚ÑÊÞš|ü¶Î©­¹Ù©qµ&sÖ4;‰t©ö‡ì”ÂÎV‹8ÖEr­#<ŸRÿÌ~ÖI©%Ò|?·ñ‘9îè@÷C…7ßeΫ©‡hx¢5R “å5€¾|æ::¨@ZñÕõ·˜\ýø4wÊy×G7…¾bF˜áô»Azécz~8Ò‡´<Ñ¥ ¯a©Ô_<íÆI¾}DS¹•R™bû¾¶ þQ¬A¸.YýMQhVÀ0_GB„„F›Rw}ëÕ7¾°e´88yYœtœá)AB-N[ËÚöO–¼_$‰÷ U·À=ÍÕÛüéªMéÃÊ…<é7ÐìÖÕUµê¹êíÓ[Éú¯âNÃDæff· }!Ó[¤Û¿ù?¯:DÒ -f„u?|Jîd"’×cá¡Ä„4` ^/ +,‹šÇfÂ#5ú©å—y),^Šq¬!ê¹"´Geû¼®uBËêý+hW®¯Ð>ÞִЈM×K³ y¬íÆþ±öÕ³¾0øw„NYˆnü•gŽ/TÛÌ¥Y™^Y¨»*¸&€ë0U1‘ʯçŽãa;Í[hãr¸#¡pîÑCÿ” |kôë­WrøßÑ­â¾_èN±o¿:ó5Ù5l~<ÑYzÖ3ˆ¨YDTK¶™Ñ^l÷¼Ö@Âc½TΩ˜‚—iü¼©ð:˜NŠ$¶ÑRZPpP)iëàʯ…GÓ}ÄÊ\§"ÆÒb§üy 8¦üx%æUµ…%edö¦nMF¢ ×¾8…Gí3“=«’vä#r´ê()&ÝBãSÆ=Žë ùðÕëíîP5Å‹18ËÉÏ€<‘CU¸Õd¯h-ÄP¸FHÃ[%¨×éP¹?è?ý´Å(a‘~Ƚº`¢¼œ‹QTß–•G"Û&±¬5ž†ÝÏ£8õe'xml{UkÄ;x¢OØWìÐ2ÍaØ46BRú…½›ŒôoÁ0Š˜L›M•¯ÑÇíBÅ”z‘êƒ`Õì0Ã_ò)¦yÜ{›ß,:z-ïqÅx”ìþ4Me2çõù­†pp—Ês ]*¾*Go Í^jðÇmQfzÀ¶MÇx|ÛiæLA ët¢pW Cp´ñ a\ea›Ë™žJP íÜæ ç¦aíŒk\_TqÑVàNœezÈr³´³8V3fì>ŒÿD´6½´u­>™°Ù%¢VTQsKD$P×C¹ÎXqll€%Î-Ùt'¶†Wå4TOQ¢,¦ئü>‹ýCåì8¤X¼²OŸ°õm–ñÐe·Šé˜T|9érºÃJªIZ1˜¼‘@å<,õzpþ)Þ\Àl†öŠ?î#o§ã¨C,Nlk3×çï;‡”Èë¤W«6Ipæ™]v?X²w}ä žBimÆf.>M%¦hi¤OÜÕÜIijާýݸ&½)ƒŒÄŸ„nÔŸðÚó71>^$³Å,€jkÌß‡Îøç§8¶IG$ȹ>í »×Ô^)ÂX;ŽêÌ«Jà®){lä–Ø»y¿çÇW~• jgŸîX>lˆ©àu^¸xÁæuSwãˆÜêc蟷“P¤b°Ûp.=2?÷Y‡¾—³IP$(à`m@v"0B‰ Y«’É‚žu7Š1@òÍ`ôÆ%AaVÀ›ÍºÌsÁ`ðø—=/IÓg5O« §´骕–»*J:ùxQZÿ¯½B'â¤ä¦?é‹;­žƒU€‡2è tÛ膎ü_AßóJg–Oj› M8Âf¢ƒ%²ë&м÷bEÈ5(Ѧš‘‚4ôøãŠÀ?Jdm'µãH é>žßÙKG’1öjÛñ?Ž3ódµ¤ôèåAůM>Fe7ßš:lUx™9eî^•K¡|× (ƒ[ Ä©tcá(‘•̱5ÂÄNnb¥ñyYn×âhØ,D"(³ñÈcVÅ…àë/ n/á=-DòÀÉð:Þ7H:§lÿ€T*Æ®šU;’7ǘÈzo¬™=ÓøºÏÖêü+h]ꪼƒ–íD‘`UÔœmŸ"Võ‘ùz&zj úµ¥lc™ò 7‰]’)ŠUS²L„!š¶åX—¿ê‚-+SÉa?àšï[‚ÐK ¥\¾IÛ€Jú?ÔÈÒJK.Æ l¦™Ö+“mC±$ô~‡“’wËR‘Úˆ®ebP'´Ò´aa?‚„¹>u½ê™±2~_NŸû`èþê>äkäþ­·]àéíÐ9M¾BÕìÏ` ´8Îþ·ˆ“-WÃkBÆõªãÎuÁÒD£Ë XÊB·wv$~†dVüGÀ†Å #Æ«š©yßwcb»HJ©èL£x:)3Ý”P*£ˆ×tD¹ZX7½¡21S&ÒÖ<»vÍQÎ"-PF5— Œ ˆsãúg‚îÍ%4z¥GöCÙšqÝŦ”Q¯¹’x‹F½ØÕo–§Ž÷®$ø“m×ù‡‡ íóc:Åþ Ìúð~¯ö0æŽÆÙi¬èHBQ—ö–4‰©Z5NK 3dƒ—ˆÇƒØscv}c’Qcª•Å׉¨n—Oð~Ô{ã²Fís²ÛQõ;׺µ‰„3¹ÕOûQÛ( ¤_qnþ@z>C"Þð—$òÙZèdà µ]ƒöÛP·:ÁÌXÍM›VT°£Ñb!õøØŸ$_.ÄÇ+)1A|ý1TÚ) Ýáu¬ë/ÒH«0:~a˜™b ô®‚Ö·¯É óÅ÷e½%ÓºÀSþTCÜÌQYú6Gë}€W)…n*çE©- ôre&pO;½·=% J³bVuY8É꽕E§‹z'cnòRYzàã¢Éâò;)ò•Ûh¨ä4ªð›oF0†Y7U\ Ô?êKX¬ïN´=[}‘í\0F¾…œÓìÞ¯]ÕÚœ^ÝL&½™g¯GÕSËJÀh’ë vAƒùÕ ÈLiY+šn¿òË™ûIÏ%MñÎn¦Ðm—U‚`¸8œ ´Ì›ÉÇF¤±5wÝ·Srm›ðtÚ¡žîÛqŒÒÿ}%öc¯t© ÁÒÄeC“ËÑ+[Y Ø5†4cË·*L6A¸¼˜#ˆ_kî¹>S-¿¶…)^¬®Ük“LÏî>–¿¡=åÁ c1.8“˜g™ùÜv1DûSáð3ÃiŒžF¸¼‘†\O Lߊ{Ëë51#ErþäC‡™Î•ìq=Ñ7rBbå,>¬¬?uÙ\q¶öhû†`w!V•M£Éè›S1fùA‡2B¿\­î-*’ä7nk{~R‹©‡ÅÆóQªJÃËg´V ‘ÝÅ‹< ë^êànWá.ÜÜLJε{ô¦ÿÖ’? j&l‰*¾é3ˆqÍ÷Øç¨”U*råº*ò[ƒ¹"Ò#yÛêùq«Ñ5„ÐqéDwêÝÿÄ™ E¨mnö©ØÕ[^Û‰­Ú«RªÕ`“ ŸN)sZ*ÐΫxÃçµt汋KY1ÙÆé˜€FL!ÁyÝB7^Ðmõ#Ö"‘<•¥w«-Õ}4Ñèº`y:Çèt᤾HéÇŲ—,†µSw8«, }ᄲöç±@e‡VÆW6îµ?T‚Õm”Å ^÷¨iÝOê^ÍlnïêŸâ]ÃÌݸ”íħÎ=€`yé‚ÀŽ«þS·¸læÁGPŒÚV˜dG|Aã b@J L'ŠFmÒd¡®u;QÍ‚¦;³ü¢'àg¢Êo¼‰:”ÀØÊ8ÒnëÍ5é¡ôû|\}ˆG¬rèÃØ«»¹”l¸ «B-ðs8m¤ê˯;us©q£ðç<*Óó}îÒ‘«xcÜ­ˆäõ®°GÞs QÛˆ7afšF o,ûå±^+„R·‹¿ÛR^áß2I€†J¸¡èG`¢¯×•[£Iº·³8ß/Àçé.LEyÏç£íy¢;Áµßvk¥öQyê2EÄ£u”ËÍDÝßb¦Xß}i­LÑ1†qçö¿ÿŒ-ÕØß®Ì¤“ù>¬© tª)*—¦ƒÊ7·È=Îï¥vL"ÊýžeQ{×ùZ{ÊjÞè4ÑÆÝ.AU‚öbÜÝ÷å@‹Ð¶xöÛ8Âí{wÙ›µ™(’¯¬÷ÁqPpï(@M¿ªsÝÇ€¶ÑÐq»ñï(09Û°¿ÓI1Ã`­eÔ-Çs¼&׈¬ÉÔIG?wF΋ø²}aËofë%y >•pJÙüþx÷»o‡Ô¸[áTmæCYôfZöµôý×SLŒ¨;‹¼*ó’Ð@FXïÐŽCͦ}ë1Hà¢aßêzû€÷Úî[´‹ïyˆÍWk4BÅú©.áNk!=Z=ñx½$E>æ¡é›…Z¾‰˜E:özüÚà&Í>äsDƒÀ§Aeyslk¤ÚÊðå3>T‚‘ºí¢ÐbØteÓÑcdîn Ͻ®¥î×HŒ8äšnmŠ~Qu¡"ïœ`t|goÑìx»û>õ>Iëç¼a­&œ]}$žFV;ù~>Ï”’·DÀù "ʳ¯íÅHŽôË cŸËéÑËS)¨{hͽÉðC£¸lY }ƒd[Q.ÒÖf§(Ô/T]QIc‡ïð †í6XšË Ió&–»>uf>žVñ?˜6f(ïâªÁÁ@bØÚ˜‡øÎï28s žã¥†CÂÅå 9CjÌ&ôÂ¥åÆþ}rʹÎî,[&ù^}Ÿ.¶ ¶‰ÊÀá ôJ-‚€ˆ™ï?—Öé2ù %D.=›4V“”æp¬¾UK•ßVsàÆíšøjúzÞÕf<š¾yÛíÞ¦o£"ÞKðòuÖŠÁÝIë¦(*²·ª=†l u„¾|ÎùŽÙˆYV›àŽï9}×_œq«ªˆÀ±.²bµÄ Ë$gXóÇD×pÙl³r?ôŒcjV_ÿ¾KLõ™áI/ø|ÊÝk>g˜]驱1'²Ï¿ÃJ$>wùYÞNì~=ìò \eÁÖÚ¥ŽûLwéͰn/ÕvVòÏ@6œzyéë^ô²%RñQjwÿì_¡3¯^+ú5Vù¶–{EKÅ!2nDv(äü¨Ýç&(PId¥ÕO@Èw×AR»fQiÇ”?‚æü–Šßq~tw§šôäé·^¢À¥?°«ü&v<ŒÄL^ø\ö»0|pŒ0%£¼%¸ÝÒ’RiG¸¸‰šßÿñcLKé^K6|Ýt¬,•¡ŒèæÙ§ í b“Ç*ÓCûä£ÐDSâþ¡ ÷« ÎŒ7¶(7Ü"¸©€¢¯MÔ¿¼_ߣçP7ÂÑD„š«9#Û“nÙí¡ºµpùÈGX“zT2É­u çš6 : |-í,0ÃÄB§“Üù®oF¿!¦’;›ö½UÃ+Šn¬ÊŸ{'!6“™Ûï\³îO åÂ[˜#zÁçñn¢G…¦›ÄÃÄ› ¡¶zëmRÅJd¶|ÝÁÍÁcªî¯ ÏLYëùÓÂëÍÏÖû‡®“ÅYñ]°ø31•Ëg‹Mf…Ó_Ý"’î%myêª9}§1ꦻÉÙ¨¨ìètƒ¿œ¬4wðäê…Ÿí§±4÷?L×|H]ƒk:_¬fñ">„<ó.ˆ„Ò`aë°¯¯¿µ™ˆ0°¢EÒªá("-‡_Ç~Jôr_ªÊ}?mëwûÁOq¿é”O¸/u¥=¬ÜÃ.‘×`KÌD?´\š{/äí N‡Ê¡RÕðëp3­frµ„ÈŒ‘Õ‹ü\¦$r&¥Ï·ú8à–»×P uÕyÿŒö‹@“óÀÓCéÞþö^má¢ÍÆ&Ò¸jLðð¦{*¿š¾œÒ.I9eMÙÏÊž €7zRß­Û²L4] ².gPOÏŽÆ5Ùx¤NIX"~ËmÂ&6d_e$æ´BI?ö(vw<~4ßx8%O¤¹lé·Œ,Ä=áîÞª¡ß¨·nQ!«:þÈÚàL`/ïX&@Ç{|9¹‹÷V?¹…¶@µµ0D^e«€Gf ³^æ½,܃ÝÈHgYðvæ2b5š/ܲ+Ô׆Öa…zÇõf»Ò&×Ï‹[6QÆ;S·u|mîü××àãw£E\yÖ@ÿ=—<…¬+WÉ[âÝ4¸ÈÐË–”œºÓ¼’ºq1¥Õç ²Ûåw­ƒ”5FƒGÝ@\<éj.êÖ"åÆH7çfº–»„ âYr3‰h4Ÿ²"~l7-”ó¾ãø‘‰èƨã!цϟ¨˜‚í,¿”û™Ò·RdÁÉ÷…ìr£W+ÊÝZr­­Û´ŒÅâ;,øž…Vî¢Öd‰ ᦋÝb¨ Ø uÙ_î+r=T7Øcëúžw¼¿Tçg {kÖˆfÁµÈ倉x“1»Tí,7±¿OwêP3­¥H4¾E¯ðÇ{ÔLm…3·ÝƒGu4àÎ0E,QúÇUqžÊ°/9i‰Í.ÉãéR …„V_*±ª¤DBLø±}ÙùRm¨™99Ñ9Ø5{ëe> ÷:`¾·P)JpHŽ»ätJ^ø „0yò”‘–šùÿ 6¸`¬þ *?éûÝ„+)p:Å£‰OMÄb‰&´*)æ,Ü•üRÒI™o3-]KŒÓºYàý–!gMd€È>œ̫¾Õ;µ@㪮úžÑÙp­ÅlÒv’¹HM Nrë«§ w_µ.!cèNŒ’âŒÒù!*ŠýHóŒT@êıDÜ^‰Æƒsˆj•žSäLíéó›ãäåy¶ûë™ÈŒä#oêu=~º¾”]4®ÛƒGžZæ›á£cðÒú»r«V„3¤Q•K%§àúôƒ«TúÏ.™üF¸ _ §Þì/ÂW :¡ß§&¬õ æýÔ’åD¾Ì;¼óùƽ¦Mš}£šö¥—?){ƒQó9-3)á—‰Õø-ãÚ™+¼µE› ÀÝ©"ÜXé%Оí€áÄᤥý˜E(MD;l÷*49Ж¸Èé¶¿ËIáÀÄ–d¢À½VqÑù!ÿ‚…Eà*­% ˜ÑIÂÜŒ@ŠÌƒ’ÌËT×/œ& 'A} F.±µlöûöé&Ïl.³ÖÚ6£<£2$¤¼§-©HqJÕƒb@JøAìàf~]œ¾ú¹¶XÝmÛÓk†µš •~–“ݰƯEŸcÌnÌ»Bm¡ %Ñmp¾èŸΞÖôØú Æú‚F—ªù„N‹©¡ÑXbuгK"hç®<åÑî¡{PÃ9uhþبeöl¸wŠN&nØgeZÐèªÕ+( هμáßùÛ*§žL¨ñ4õóH£j> stream xÚVTZ·¦[º@Jjè$¤C:¤`ˆ`†I%éé’”n¤Sî¤DiÞ¨÷ÿï»ÿ{k½·f­™sö·÷>{Ÿý}g ³¶¯œ-̬ƒ"xø€’€Çšº" Pˆ$`cÓ‡ œÁ¬l†`w8•üoøcw0²)€(7M æá ˆJ ˆIA Pâ_Ž0wI€Èb Ðä¨Á `8Ûc˜«;ÄÞ:å_K§ @@BBŒçw8@Îì±Aš „Øu¢ È ³€>ÿHÁ)å€@¸Jòó{yyñ\à|0wûG\</  †ƒÝ=Á¶€_힀\À¿ã#`è;@àÌz0;„È @œ!6`(ൻPgôT5Z®`èg?<€¿® À'ðïtEÿJþÙØÀ\\APÔ`q´”4øÞjûËä ‡¡âAž ˆ3Èåð»p@INBõ÷Wwpwˆ+·8ÿêÿWÔ%+BmÃ\\ÀPœàW} w° êÖ}øÕ ó‚úýYÛA ¶v¿Z°õpå7€BÜ<Àª y LÛìÁ€€Ý`oþ_Éõ}\Á¿A_fTý~®0W€ªpÄŒú!ðƒƒ<Á„»8Àï¿ÿÜl!6€5Ø%ø;;Ê ¶û³GMÞâ 0¢ˆ'þúü{eŽâ–- êìó·ûïáòkk>æþÝð¿!yy˜7ÀWࢸ ˆ¡ÿÌ¢ ‚üUðïXU¨ ñ§XÔ-ý«`Ï¿¦Ïù—0¸ÿÌõ†b,Àù7ÁÍ€"@Ô—Àÿ›æ¿Cþ7vÿÊòü?ëQòpvþrþ‚ÿ r8ûü…£øê@q_†Rô?]Àäª ¶…x¸ü'ªŠ¡4 µwþ÷%BàJo°­6aãð‡*ì¿æ ‚µapȯ€ð?0”ªlœPÅÇß%š©µÙþR— ˆ(äîò!@µø  dh öþÍ`?†@…Píì`î¿æ),àG=K¿ŒÿHlãáÕïÁ£Ný×þ·†Á`o° ÁÜ4Ìæa˜cuXËE¥ƒïæ¨ôg¶M£4.^¿9÷V$1n2WEfÈŠû™\ò@éâ†"ç©ìü½k¿½Æ¸áM‰:ÍWþ?-ãuÇ7› f?Q÷ŽåíÉÕô0âßåÕ—Ýò¿vó7 vÂlDoWcËvó'ÖΡ¸ðêVö®é)Y~1½©³U!ªNø³d‚7Æ Ú,¸p’íõ›)Z/#ÞòÞ$“§gŸÉߎÝÞS‹ç&ØÊ÷3Y|u9å»T¦/ï »OgBˈyJ><Îî'¿¢F3ãW”¿Ø;ëÝ(•ïížÔE^R¾mÁ×Ý—ÐúUžÃsm_²“a ½_«Šë)-ÝY´¨*š-_R ª„œÀŒÛmvòóÔfºÓÌ| §Yù{¥m˜lqº=qÑü¯¾Ç¹ð¿x›#·yU"4µ@»ë_^è’ïýÆ7à Bwúmöä ߥ3v×ÖJŸ£íö—à ë¶–LIžŽzór+ÜR’®jr 5¿ª¶°bë¥I²¶z‚¿J§ÖÞ!æH¡|1¥£i{U'2âp}ú˜÷s/ ï€cì©Z¦aüLMBÿ±¡1¬èpÑâÛ¤} ‰Ï[û ÌTܱ¨Ç ±fë5¡BãQ$#§Ü«¸³Ü˜C­Êw„ î½æ-¸‰-ioé!rážÓÙì8ë]n¥Ë-º=Ø xØ5³²L¾¬ú¨bEüh{ŸóÍY‹€ûõæ_Íx:‡ë<·ò¿QŒMGïz´l6{ð¤]’XÏ‘º÷i40Ô’@Ú¾fQÍ?%‘ÜÓwèÖµ“¡ô ÈŸ\ÎËRRÿúI*Ú¢FŒþåÅ,œßxfYô_%¼Êìâ”@Ûò(‹DÿÁ¦5PYfþi3³…e®ë1ü2ºÒÔEy}q(•lÂìš`Ø+‚X›IKòþˆ%[tàNðvMÌÎÒÍCf†K+v®¾äÀ^n߀ËÉÃò …P.:ɶ&ܨOsD¨ §¹êž:Ó•&©mÞ‡'H§B®—m²íÕ‡vz1"¯Ÿ¡ß‰<;Ø|¸³À…¯}>#0RÖjªÚ–RíýLãÚËLŸšj_bGŸõó ’&ˆîî 1­;(… ½.ÓzµS…éºø²ØFOäeÍ‘=Cnò¦rûy éó‰ÛY”ÜÁ 7Üv üQ(¸ª«á6œH×ɵw®{dnߨP+vUbõ''…ïÒ>¯ÓJ% ïM\u+î2ü†iÃA±ËãÁvÜ ÷í…'ÑRl'ñµ·¾žyÛ>-«Æ3Ö–1N„F0Sï0cQÇäLRO ¦!^‡˜±‹‘…òyu4'¢—p?ä‘ΠÛíLŸ‹ ÔÔœÎÅÁtÉòΈóËõ 3ó&Š$HWc|¡…ðëjwË›. ÃÎ; Õ„‘ú8~¶;ŽèY S ß|$†5?‚[ɾjæx°!8h†µ´çÚX Z¢ŒÁľ´‚ñi\ƨޓ1:eðn:É<-SìþÚ(G0û…­r£ûúHp|[,ðØ’ÈPÕõË=Ç• !þ×Y jÕZ}®  7xCóÔT{ØE*É ¾­7ãÐ\ªëDB\sS¯’yr=4è‹Ø¶é å"ÂX‘ÕU Ý@–ä÷`ZZ Kð~º8wº‹êu¦4xLSMƒ¯æ ªšç§4¢ùì'ÅY¾˜aÒ¡ÑÇbÉ< žä…®^Q4‰R˜_Â|ñ©¨Î3œ%Mèîí•õR›×9Vl(Qê/íi—Åë°ªk"Åo~’¨~:A>ñŠ¿,{F#~ÿ#k­þ•Q£H4iQ )s“;Âå’H¹&b$zþ4zZì6ËNZç„ûècÿŒ÷Ĥ6™äOŸÌãò=½p`«»T'‡ S¶H~«Žã,»Û½®ÑR]@ÿø¨ ÝÚ?«@FÖtpþ~¸ÉiBšx]e#æä´hÔ†‹€hB*žû­5Mâžð5×7u7‚g—–,'l±dœËµPruê×ʰ£ŸvR"G`tÃ2+F­¦Ïˆœ ­NöÊò[Ïo\7L>‡OQÕ½ 6´@7+t9´¼D3¬9§nRããÁÞ¥®-1¯¥8‡Çç´\Ñ1” ’®½æ!~È?ÿmdŒÕk!wïÎ%¥Y ñîJŸpo"%‡Îþˆ€Kß÷;®>aw2¹’:+,N-òJëwú*¨Ã–u¿ R#^Í••—oßáøx*Ýo•IË‹àïHp|äkÊì•gÍfÀ–U‚ÞVƾˆ4Ïöׯá®Ðú)…úytÁ-B®ö`¿›Kãx6•©¼ !å¡u„P7ÕÔ–ê]É0aÿ¡v<ÎTútØÕû¾“Z£º‹B—'‹éG¦qRR1F5f‡³D`ÒÁô×䙾¤žokC<'ž…·Û“Çí¦ý!AÙ90âÒê:à_YÈÚ+ünñ}3Œd5u;=ʱž9D=T«¤¢K1 lŸW¦KìëkZßD[î%–>æT™ædܬ¯vúŒOh¿àJuƒ¢!*¼{5çЂf¡ÒÓkòެÞ:½ŒiŽy¡Å„žåádï9ë©ñýƲA ŠÜ”ÊÕEΖ–å¸'J" V “(Ú’µ› ôM¸÷öÌù•çoÑÍ48Z{|pÕl3}ým¥Šúu­¾mgåù¾Ð¿·Œï ú(\Ÿó:&Eኅä6š¸+š&5â¶ëiÞê{¯ÐæI‘ªâDiRf§²@i”³VO»~×I|ìj)PÙ¸ K)žà1E†áé«å.(Ÿ‡¦>‘8«?þàhLˆœ#5溊È[•ÓØI°©‹ú6…T’–N~câ3ª*zPT$„8çû13[¾{¡bGáû£E#ÐK9Dõ²èv BÃÓU ïÆvù*ÇUà¬;‹Y~m±V­rUNY1Ñ>x¿`;"£ŽˆŠD~WÈ%èÖÕ稀±×Ú‰Ù+ùä#‘vÄ΢fIÛ§ªSÏ¢zЬÎ+†§ã0Œ8·e-ßþNûÓÄÍ2M÷º³Í«ÑùNÊ‚ôºÙ/·ý-õTÒ2é\¾)„ó>w{îR6š;&¨#xWpwëá"Ç̉Õg‚¤3ï|mî44/Èž?ëŸZ¢y°° \å1K8£`“}å§O³HVÙ iš2Öʵ’-xæÒ ”æÿÃÞ£#8ë*ªázÚdòÌûn|3Hi@€ÝM†×½ž±öa†xQã|~7GÚ²iÓnmAÆŽy_çŸÂ4-ÀŹÓ]FÌEðHçû"+ÔP›öCŽÒ¹«f÷XÜüåiî¢(¶‡¿?þ:ËÑŠ|Ýæuôµ+ˆ¯i¹K¯­&ÒÀlªÇ‘£PÆê Ý®lAý€9È^—§€‡ès)ûùËDò&‡8§¤C_Ñ5®l"Ü`¬†`)½º€GÙó÷ô ›î1ÚÇ2&¦Ýzm3°x9`iy¿cô3×0•‰áéÒë)ÇØ7™.'æW»æÄ”êÛÛW«Á‹4šØÌK+S5¢88 öþ¢ bI(–)9z#·{n»&¨ovl?E…kOÿu§€0EæÀ…ÇIægpÊéÍàÝš$KJ|`Ö9ìЭVD,2,¥0öi§f6©’v„Ͷ®Ž¯&É}’-K9®`fÕÝ)ùÂaí.eÃvM—ª£H~¶U\"ä©‘Éú›UÞA» ø[ À¡ýE\Óñ}¯l;}¹Â¥ ò=º›ù|¼™‰…ÂPmVí$îUKÀÁ¼3§©7Ú¡Î]&Éî)ÌùECÃNéŠ^* çˆu¢šV’(|«ç¹7þ¼d$Ú\pq¼F²pú§8ʲQ»o.·IéÖK[ÄÝR{s§žR»]Êèñ·AeèÌÑx<ײïuæØI =ÍÌ[ú¢ñùNšxÁåaÆ9zõùçb¼NÍ.5¤ØDê·ôœb9’ïj^D¯êÂ.ÖäpŸš¼Á©õªòÊÚhr }t'C:d?Eä#üåx és¡2^'ŽìÔЖd#‰ÕQ§âlny$'Äø#öÜè—¢„ÔÕÕ¡‰ùV`ºÏ.§@êéùOÚ \}Ô¡ïáqêBò¦§‡w6«¿)hhf¯õ2»Aæ}ßÛr¯¶¿¢1wÊÒ&Üü~þ㞤9Ÿ¹þn(M¼ÐI©o˜ýâ͵X\µá9š±_—ÄþlçCœïó™:w‡“iFOÚTY¤TË/ËpÙDÉ„˜%¯E¾ÿ–\ýÕo°ï)ßU®Aº´å‹mÜÉj¡êª7±ÍØQ^s‘AÀÆ~Ë|íÔ„ÜæK 8†g¢BYíãWÛÄëÖïçLßú>H:_¿1`ëX9ŽÍ£h_étq²I}£ BvCu…ݯ£ ‹ªJ˜écÏ‹/héÉTBêý{l/)Ý«¼COA -í)lj|gxk±ßö²k:7çTý¤}ˆfy?þ-„ÉùiM\IØÜ½{þ6ÊsE÷ïèšÓlsØã+geÞ´$‹4Í.ž'é>*íˆý²4мÃM§H½˜¼Ÿ&rÈ–ŸÐ0Ç/=Œ®ØQ¡ Æ;Éxµ\Ô Þ[WÏØ,O4eù¸½£¨ó3ø:½/ÿ|%«ÀôQW⫲铓–ãuסMA6iì—eŽ/ö‘© ÷'ÖÑúãl3S¼ñ·>žSªíI&ö½ð|Mn/Wªš‘aKùàvãPwó\;ßá‹]ÿ ÎA´ÃkGU©Ý?M¼‡Òñ¾4€ç$ªn ¯7®ÃL† [1‘`<ïÁ‹¶ÝãÑÖ×’‚šZ™âyNpüÂÛ]œ+çl‹ØMîl¢ÑJš¤®TT„¾¼ÜBäT—‡>>…Y-Ûïtuåíš“?Æï–;]Ç«hSšÔÕßÍí–æÖxE{§wTµ¥é·éÔ\¶§’²ã;F•·®¹ò¼?Pqˤ;Ìá²:²6m "ê×鿆úè‰ak[…¦±5÷õ&ư3)8øIédÈ`âæ¾©ëL·Ód™)òV5Ìs-èA ’×c9­eð6ŸeS–DøQsú>š‹ ÚQMv{7®~xØcŽÍþr[„áø]Ågqã´)]£Êûo7¦DîAe]„w·´ÀdI{Õim‹ƒ~ןq*ƒCê.í„vÐLN‚ºº¯¦½~xAÒYËÄXÒ ¯ì=fo}þÚd™©ã‚¬ÑRGø<í®ßƒþB›dLÞ®IàW™ˆÍ}»Œÿá·¹-ñO÷0jž‡üxD¸ƒ¾ëáHª—Y¡ß?õĹ,›‡,{ú á X ×yêe~R!‡Wù)ü¸éÞQÞj]©ye²ó°I×%óâDƒ"q°DjCÇ–vÓ²²ýa^x+Žnö'm¿OÁô”ÐìÈWSYJó~Öú­Ã-v8/Ö¿eoÉ){:õgè/Àe·œ¨&Ý ùV¥'Uüzv­Oü)8W Žew)74ñ«×“=:”Æ+ ïòQÓSÇfà_ô'N!,†¯–(ã\r›±:=&ÎÕXC¾ÉŸ­îÑh‹IR_}òP\Ñ©Yò/š0{Ò $B+—Ïá-î“sUî>Þdsÿ’<~jàü…ó,º¯›¾Jurçù„в’á—áN®ˆÅb4“¹,x’HØL)NÎM›ãÓ$!‡bu«’HùŽr$Ëü<…ê~wE™Éi#å·æ3ƒyd‰v·Çæ$|DSvœy?(¢-Çé´m= ;^ì ¾øŒ3iµ¢"}ï ðÉxb/‹øqkvè©|(Vønz™ø°´laÀÄݨP¸i¶R¤¾n¼ÒRúQ\œ-UWÅdZîÛ‘«¡ˆ²£¬k cŽ'†‡'¸l¥Í§*‡ã^ñ³ryÛæ¦­«6~l˜¤0cIù=×å?ç%Cã|ñ¢îð$\e,âF‚)ñH‡{Žñ­&hÈ6ïœaK^qQ§”ìØÅ?GÄé"ä›êí^Æé(>™²ŸRî†$9[k'7ˆÞFŸ  "´J¢îçÒÐfži¯µŽõÜ›·k?K)ö6ܨÇÐRò³ey0,Rï8[Òø¥ßR‘OÃØ¨TWiûóêtQ|ò4Ê4ÛÉ¥ÜZàÀ#¹ÝÔÞàÿyòo³ endstream endobj 203 0 obj << /Length1 1357 /Length2 5945 /Length3 0 /Length 6875 /Filter /FlateDecode >> stream xÚWTl¿§S@$T1:6º»»QBcÀ66ºCB@B–‘ ƒé–4èP@âN}¿ï½ïwï9÷ž³=Ï¿ã÷{ÎÝØLHÅéÓD"ÐB`a,@ÍÀT‰ ƒ@¢@ 9íû#¥ZÂP^p$Bö¿éÕP0'S‡ qfH@×Û €%eÁR² @’ù—!% P‡øÀÂ]$æETCz`Qpg4.Ë¿Ž^(,##%øÛ âCÁ¡À‚v¹ã2B!n3$Ccÿ‚WÞöñõõ†¸{ #QΊ|‚_8Ú` ó‚¡|`Ž€_í !î°ß Sæ.p¯?b3¤Ú‚‚p78†ðÂ9x#a(.7ÀLG`äCü1Öÿc øk4°0øßáþòþŽøí B‘îŽp8ÁÝ`#M}a4-€ Bܼ8ˆîqÀü.ÐT1@pýýÕ÷@{ {ÁÝ~u(ò+ nÈG5¤»; ö¢øUŸ:ƒâ¦Žù½VWÒáÿçìG8:ýjÁÑÛCÄ÷ô†é¨ÿeQü-s†¡ HJZóÀ0P‘_Áͱ°ßJð/1®þ@¤À ×,îÃýPø{A|`4Êèÿßÿ¼Q€ÁG8 p€9ÃGljaNî¸Í£à€ <0ôëóï“[ŽH„öoóß˱Ò1UWÓøÝð¿UªªH À_H•À`1€îøÏ(Æø_U€þöÕA8!2ŠÅMé_ûüµ}Þ¿ˆÁøg,C$±0ïß·I€ ¸/ðÿæ¿]þ7tÿŠòü?ëÑôvsû­åý¥þZˆ;Ü û—‡Wo4ûHÿijûCW˜#ÜÛý?µ:hŽ*g·î¥ ÇÀáh¨Ë¨ü‘[ü"˜3FzÁ=(!0ô:« ®¸Gà ‡Çß*Ž4ÿL©€"±KTBA¡ X ÜŠq7 €?GCGæ7‚"Â$çÀµpB¢(~íS\ ‚{–~ )þêBáhõ{ñ¸¬ÿºÿæ0 †A)f&‘P¹ˆûõmǵ*7|…–Æ€ËVù„ügP¯¼O©IÓøj²ÃQßUÒú^_û¢Á{¤ü‘íܳ¥4ºõ‘ÉËŸgöɦ#Ë/)¦‡»‡Š6Už¿»E~SÈ\y%àÜ3À2Ô•°¿C˜ïé-Mm\HwìûV óü]ù쇨Ée“•I=ʳòQ¡‹xÛÐÒq`CÎ Zèÿµ= ÍøÑ÷±kyC—lºÉ[ bÅþÖK¢‰'~󕿢^Ì\ÌÖL·®}áöW]K×½>åÿ¬xõ!c‚ñÕÀ'÷T°Û¯ß²¡é1jýÛ]nà,/3“!½N\üb«vŠ{){ ‰xÎÞœî"Fç›T‹ƒ— Q üÒÈMªž¨r¬„}ÅþæãÝÍÅ•‘†A¡ Ej±R´œi¼ü²œÛ¾ìòãb#³´«…ŸÌø”ÞÈ´å-Î|ZÊ8¬½–wÏ6rSè"šøgɱ/ëÌ$§ïu=Ù¬‘Jé©]ë*Rì¦îY¦Xô\Ú˜}Ð’Jã™TEO^éNk­n'õ¾µÅÈUHË~Þö³Y?]-V+ûH?÷ð<5+*ÉEúÔùÉ–¨ I ìú›¢«+§j"—ùùy X~Ž÷%»]yô6Amo^ô^gH¢¾·ØÀ<ÍÒKFõAb2~š µž2 ÖW#™Ë^ã#úáÌ®LîÚW4=gÍÞ[s­îUdέ4‹~À¸}¬6ŠöžÂ´§8k­‰à“Ènq"‚÷¸tû4LVv±g« áâ—ãŠeXž¯¬bÃ/ïÃç…gÏÆXzJnõË=ø28à¢ô^ÉqÓ,—æ5Ö¼C0E¯nLÁ*\D9#ØMB­Ó£‡çÖ–ÁŸÅD}_©z–¤-µ ‘ºw”ž°bo-¿O眳oÝq¾90p­¡ü1Œd1//8x"/Ì3-F$ˆä>xžüFŸ¯³`¯^UHê!5Ò}RÑ@ºA®Ux v›žðV#kR´%­+½ó´HDåᆩò(ÛL€Û¾žZ¨HÛ_X­^«=Qy5\g­BSVÖ{Åx:z½à‡QÈUð+Û^4ÍFa V¿‡V¼1œa†’%?ñOiÈMv\«u3Ö@î‚`%Jç;x\Z°Nu^´W? K‡ÕJTwBá´Z\ýΠ]=s· B³)åE;æK§Ï3V£«³R&µ,7S—*EWƒúóìˆ×­“îÅÓî<Šâ_!’¢\ãÈ¥É'{ø1º2ýÃ÷¨¹€ ôÁ¹…ÿ„ð{{ŒN‡q~Ué;–{/’ˈº Ù‡I1u}ºí».»·òÜT. ]•5Í”ýHÀÎ9¹vƒÎzœ¾/ò‚êéå[þhÍÄ"”/»I:®ºòà³Ê]H"¦;ám¿vX›=âýL^hf\ ó.Ûå\pœ:ë½VΩÊ+£zmLR1¢íN9Uj¹Ópƒ;Ø[),üú„x,wºÝæêÇÇ5Ž—š!sît¤Í×jh\šóÇê󺘹|‹mktI¥:Íò5J;oÇ^"šú-“c³J£5“yZïmÄÃãߨñÍn>$IÜ—OxÁ·ô¸LRz¢\Gß"nór“$·÷4B‰0$Éßo5 —ÓÔ!,*h2UË\Õ;"p:ºßv´“1ç7Hú²©`d˜u½¹uæò%ÞK`‰ÿ³…Pv Û"íÛsÞ›] ê6Ž|Êg @"tÈQ:ç³™”Xƒ™ … C®gL`“ ×*—Š•·×nÖ¿â³î…îÎ1LµÅ)&¥ IvÞ%øà[Äów"Ö®¡ò`Çv’rx±ŸLš=ó˜®÷1Ä#ëÍÀJ§}fåFG3ÒÛo»«K÷4Ç Ökûž»ÄùZyÛw}™|mÃØ˜¢ÐH‘hÙcwóNE³¨°¢ªõÝß=ÓÔ–à˜ÂÎìq9aA¬¾}Äe#Èl-â}ºDëƒH1ðt‡{fE1ýÊÄ㣜SZ†ÚNÖÛì6_Âf¦ó‰ïôù9} üdzšD.ÎÇHÄGKâͰíseQƒË¢"³Ý6î…•Üf|.˨¨êŠäK®ÉâÒ•¸¤*cW¥wØ—ØËñÈV:yâïó {ý)ž jZ\€½ëéÍÊŽ3]uÄMA}*`é0¡€ÅXð=¿ªºûx€†¤ôÙ’3kÛ«…Â=¨Ý²+ùA_{¼:29^8l\·3Åfffr£zÕAW]ô³Ì&ø6*ý$ V>gÐ]pð´­¥_tãæOî/*Æuuì0°V~jéeÊ·÷V÷¾×ŸŒ¿!ï×+ðì%e Nλ”½ùîÚýpfSÍI#;TâTÓîÁp6ápóƒ#ÙuR’aÞŽ î‹ÕNãÚbU™j—˜xŠ“… ò‡@¦O?eòHñi‡ŒÈô¶Æ¶õ™Ïùܤ׌§WMŒ<Œ¿)(ÙJÀ! ÞÝ|€rÑ—·#U\Ñ}­ûBfuy¶#i‡!XôÇ}yv7ÑŠ§¯¿ntH°t§Õu:_Zâ§ô__æ'§_È–ÖÉÕ‚Úfo±å”F%š§oü`˜ÿI'“sS}”w½J0&³[ðØ 6Å™ã»m--5Ï^?X‹LöJiar@§^ R-4,2f;îÚÓ¾íÜ;@Ê©ú8ÈÀš,}U”ÿœ—Ú’ºuxæ\«­n¢ ¸ª ä—T:Œî>O†¿m´s<¤  —åͪm¶.ì–À›”wlrlêH)æŽbÑi£K k ûU{†^Ñt{Âje„÷c%ýQAu+ úñã˜fµ0DÕ¿˜,&öëŒÖK Âè0XºRø’ÖÉ´’æ»L‰÷Ÿ•ß±lç,8ùÜÚœÕbpV¸gWrÌßS8õTæ m ú„I‚åþñ3ÆŒÉ5˜UXš6?*à'QPBÜyΔ;Â[E:õ¶ŸW1«Ä(TÔ—r]^²@ͳ/«´øÝ°6½qÊðV'óåÆt½€¹k'òºLõãYYšÅ>+Û“Ÿ$á«Ø †Ô•î×Îßðœì”îKò]vcž”cgÙ JÆ9 ŽÉŠæÄeÅìh&´ÑW½'4îíToã©®a‚}ñÎ×ôEeq7PßÍ:Ë £3,9²Z«›Í-RéU¥rà&x­ÜÇ34ò8ÊëuxTk”½\+ifeýÏ#^û²óæÙí6áY¾0FV›r%"‡ ô;aý’€Îqã÷îÀ×"1Þ5KœR*oø#Ìm§¬1›ÚT(d RtövÞÈÛ~ˆÈ‰Ïþ«Pu1W‹´C›ÎÑ)ÁÍŠúÉ7¬LL‚ý„dF”ÛâÀÅh.b:mž³wuj$´"×.ã’‰®ÄŸvMú(´ì®Ge³©Å”ggcïIÞ¡6æo^9|HøµÐ)M ¤÷GŠCSÁ+­FfûªìŽ*¤d’›UvV@çNè²yþ·ì…¼Æ2G¢KEƒÑ®–»†÷ƒw¨»l '”Óòù­_|¿µ"Çéâ2§'µÊ)*W£6ßXö³N”ÊWíÚÚÄdŽ1¶n›¬z…n¯ ç€CðëXëˆK~)†vñ±ÞW¹Ü¸ÄáTl¿OHšŒ¤Ÿ9{òÛ ‘g'/¤Û)¼Æ…XÓ®Úp ³§÷¨iäÙNèÙý™äh• wÁÚÂÂWxÕž{«Ô¾ö$bv[3‡zÛ¤S§ÝŸTx¨‘E²?‘Ç,z¬&ì?h®¬epD™ì´Ž2Ò‹Èu%ç'}L> Tûý'T98à’ñ®c7üS§—à¦Q`+¾Ä§nª0vy”ý£Ú}7µ‘™'«4!,}Ä S†4œ%=I‰ÏÅ©S} öÁ«±ö_j·ª@{pã‹´´Ýø°¶Êýè¤fçâvkpÌCÙÈ 8oŠ[üƒ/ ®žÕšÊ=áN0Í×ìéY9¾É;q¶=ÁMÉëÞèªþŒJ$|æ.{Ù¡>5^}l G¾7c.Û“Ï}ÙA ÅCjÃb6ía°ô9þÜ}“Ss£i* “ðK¶ÜTìo±çOÅŽJžÅèÅp‰*VªàËŒù{‚kG>(1ó[‰æcþ‹—¯ÄŒÚgÏwsìå7#ÆÔ·ÈK/ñ\XbëÅXéÞ‡ÑÉZ† oìùj³ÈÖŽ rµ‘‰ªó†6—(TTíTŒ±ê!+s\¹rz¯•vðËÅ<pZiRr“г”ýàýù|–‰P<:°Ðe­Ôw½ó€º”mè [/`™²¼’ïñ#(Î=ëÐ/ùÅ–o=“ìå4c¶ìëxâ¡Ûžz¥ ýˆîÌ©ö:d÷Ld‚N‚ãqÅN†qp8¿5z¢SM!R-ŸY¯a\ÎÏ6µÈ½âç²ò”¦)K½M7fžA8éûûp(3‹zõþgŠˆ–KkøÕÁº‹Þ¹dýÌ·‘g5ï†Õ">&˜ó r„«l¼šþ¶â×Z @SZnÛ²Úå=MËÁo/Vz™cps sõˆ„õØ{ùƒ‘wdµL,óÇü¯ëëgß.Ö¤G6ôƒxîÏ~Ÿ-ܹè&z¢Xäav|Õ’óQ—·¬â+§{CÔöª9HD*»¯a{åVDMâéÊAé#ÞC©ŸƒÊO•"-%â&X‡6oLWWP¨ÆGJ¶¾ÿ¾¼ófß3øíÝ*‰Tk@JpN5åúÝϲ„†ït‰è;_‚¤T†,–¢’'J5ÄóûüTªÖ¨­¢>|Þ›Ôžñ°nýá¡Ð矇 ~#Üé¿ÊÉS~ôÜÛ€v-ѼnéÛ›´wD6aÎ:þoõU SºƒÉo¶¢D4•¨Tší¼s&}úºB+Š<ç%وɉ¨š1x@š–P†¯lª@‘‹gF!tâ¶³Ek5QªÈîæ_²4+)>#ÀË9ŸÝSLéçyGêXÀ´f$q¯æ»Ú«,¾hñ06÷#Ñu5°J§çùX„¨–C¦€fÆîÒæ§4Dtõ³Îf¼›ß[\ŽG&N›ÄsæÑw`²Çé7œÌ;MÜÊ«àŒÊ3Š3Žò”SÈ!ËV¤ #7íP§[šðÙu<Ú«Ñ/-LÒžuU\Açji±_¥!³¸þ6°òÅÔà„t¹d_ÜÎñp:aÜžmx…V5µƒòâ9…€—/çyi cLVUMxÐÂ]n•“dk1“º¤&7Aþ½„¨ —äÜ{­±‚Ûá3aOš˜òyÓÏ`¾@˜Ø`7E±BÜ\QÃÜ“Ûú¡œêã9±¦|5­ŽõjÚ“·Uä)êX¤Ž"êW¶îö4ͰÝú/Cÿ9¦ endstream endobj 205 0 obj << /Length1 1481 /Length2 7185 /Length3 0 /Length 8191 /Filter /FlateDecode >> stream xÚvTìû6%1Zº'¡ô6”.éî°Áˆ ÆèEJARZ¥A¤$”N %¥$å?õ}ïÿý}ß9ßwvÎö<×Ï}=÷u?g<7ô„P05#Ë•u %`°¨0,àá1F`ÜaP) í@!eþ—] ƒb°˜ ƒuÓA!š>î@ˆ("!‘”ƒ"`°ôߎ(´ Pê‹pê5QH˜7€Gå€F8»`°§ü½ò:ò!ÒÒ’‚¿ÃŠ04Šê@1.0쉎Pw ÊÃü+ï ÆSòóó†zx £ÐÎr|‚@?Æhó†¡}aNÀ_tºPØob ± Âûl„‚cü h ¸#aHol€Ò †bÏihõVLíë š]Qå=R˜æ¸ Úl¨&zИbÐt|a—løqµ 09Bÿ~øÅ¦bU7 «±ÂZð¥W°i„~n«&O®—…~>͉_—ºUwÙ̇è‰Uƒµ×Z¤eŸ„š$XGñä9<gä$ıó_ßó§;:½ž3|Å¡™,Ùz(Zd¹(òètµ†0Ì1˜èË“U³ngTKòNòå8sÅ[‡v„” Ìû¤¥Ò€qv¯¯QŒO-/ù”Æ·¾ÿøY¸>™éÎj ýdR›'Â-¹ÞÞuw|ï‹}[fM»j¹ Šxç[Ù©«’.<¾}¦­>J¿Ï8a’°±èÔŽ{÷+Õ+ò>'ÚèIÑGÄÇéJL–Fð1²ìÿŽÅ¢Æ¥…º§w~æ$@&Y>-ç™/¹¥J2Œjd6Èñ°\l„Œ†&oͬg\ñ•†Òqkð ]y->Ö×àªÒ¹ž2¼aêï6DÑáß½¥0ÿnl&‹ÆrASÂ%|÷Õò´¬‹âtåÂÐBªV®$”Äoã<-Öb}ÉqH™·Û‘×ÍNéÛ¸vä¨ÿZ)0¨›9Ž#»pRë‰û6§þìVP'äs›‚ÓJh€9º%U¥BÏ2©DµOx8iVv3…—Ƕ¤$bÚVÏÀWßÂüüÛ§îž/¼ {Û»LðF&¢k×Y ‰€íçc댵=A¸Ç_ hi?îg$ÔšÔaóxÃ1Xø¦0kïb’DÀöký„¯bÕ;Ju৺?G™/ëÖ¶y†¿"^ßYuÎ ¢Þ³q9ÿi厲ÖMñQOwoøåÚ~M!;¥ì*œô}‹øQLP¨ ÖñýÝhS±<È0ve+]þ‘J•Ì«=­ƒúùÃrVâ*¡¼ÜbÕí ÷ÑìÓ‡ôIùü¢¨wKO#-ÆÀAºÂg—5áÝrÃ11·ds#êz44ÏY;p›”9½=‘‘•¹"‘’ Ñ3YÕ‹i׊M<±£1KÝ~Îë#­P~¿ˆFùŸ¸‡ô/6v¸Òªs£ ¤Ë˜oª ¯ñ=Ó  •Œ ™µ­ñðaQÛÉšì9‹Ë{ò²Ò?ÔC¢ƒðŽ©­–;>ÇP ibÀŠœª…R”êT'ykÝ_ºêºZ”b\›)ÖßÅu=µO²¶¥d¾zv.Ph“Í í6¿¥¯ìúdZH&¶àfr8/«ý<4’út—‚2çó&ëÝ5çÏð ÊNÙ2ê€Ý«ÌêÀ‡,›ѯ?I3LBFPçy $Vês6þ½âÒoŸÕ† <‹¡‡Dç¹'¡œý­Ài§nj;›ì°Ô |ãT»˜ø+³ÝÐ^r‘ÄÍ6s!æ]ôJ웡Ô¹/å”b7‰Õ»åÑ…ÖÁ™%½Ú|0¿Ž"ÆäÙΧJè1¥$Çõ™ì\Ñûí¾€ÌôÅÕ/eÀA>LÚöÎüEv¢× /Q3[%œÒ[Ïçx/i- qz]à ³.ÃD£%yŸë§8Ó]d—x[é–Ý•µ©1‰ˆddõÊx¿ìTsýtnÏS¾Í” ïײÖ‘‘©­>Ôî¶ê.º½“„ 盋¼¬éIÞäþMgt)S¬oÎtDܺÎÿ¸ö~YQ·Äªü—ÕMd«bnCPVve‡`S$&(Sõ8fKxÂÐßCWŒ©Ñma—Ç&³Á]¬sJU†ßš3³¶d­ŠÇT…\màU/gy^nb¶æH˜PÛ”r§Ü âŸP»ô×uFÇmíe+•Œrá´ÌG ê§Œª£Í;¸¤±6áÝgë¦ß*ÆSÊç]%M¡vо¶ƒ#N¡ ®íÑm†µb¡ˆ3:À±Ì:«ƒ^úŒÕw>껯Þ)šãM«n6=éº*þaâœsÇ­Æ«G›©³J©|m¢Ÿßõåh#µ Å„FÂ-2îk- Ó2ÂÂÑ ¯tž2Ow R8ˆ…ÜþuÕGÓ‘=½™B+guï™Ë“‡¾þ6xOÄɶ×ù9Ñ;'iu­ ·­¥vÅ}BwV­d8Ô•Ãeߪ pêRFF™Ã6X>õ`JWÄ( oçxÌÈV–™vÑÜ%4ËÕYÝ>ÇËõôÈs6¶˜8I®×~naêµ25ÏÞM.Â4¿Vëo A×4X„æT3§kšGÆyèz£N9Žî«ë,„ŽÉ>ÒØUvÇùr¨MmìÙcñÞSs嘌)ÆÎqÞà¹ÌÎŽkÊו’™ñ3àPyvn,ÕÆ€µ¸Œ´¹ÉG kžaæ‚3—Í.ž™WMÖ®e}IòJSø³öäèh®2þóÝÎìXâÍ·®\=Ë=½ÖA)ƒOÂR×ËRmFš)õNŠ˜güTa=‰MÏ΃¯ƒ/4l,^®gkjP-kN¦šÜ Á»ñìÍÑ ¤üßJ˜[2üöè/©¨É´r(‡oìçS€+66EOð½| Ò…Õ*ìØÌÓòÔBŽãÅÍ”lñ¨BÌäÆFEõR½ÖŠ‹Ã¼*£ X8³÷¢5úBûf9¸‹å¼×ˆæ· ¯+-JN{KÄÏJ7¨ê‚4šMâÉÑ|¸¶ù5¢\=·Å¡("Û¦t*¿Sð®Ó0†ºÐîl×'Z{þÃKX5ˆD}N7–¸7sø 5w‚ùËnû‰Ïˆ76}U§= ݼ™¢íd9r(mvI-¼)Vü(Jx§É–g¿p„­Š~@e*x×R¾jûžä½Gf=ÜWdüä*wôW ®6§±‹¤š-4'©¹s„ß˱}§UaΑ׷»ÚÅŒ ò´âR“´ãn9–ÅÕ±á͓̲.<È÷`¤5"”£mzž0ÉœüˆìvØÐ²•!u:?>ÕþP£ €ªBž¸°î½ë6˜Sð¥™ËIÿÂghNÉÅV_tš/]è(öÝ<–ó-—Ã2¥¾vP¶#N´Z¸î+œ%Wâ[™ïr âÆ’1 Ǭ§",Ÿ§‘¡;ÂÛåQÀ{­,©ÁevÝì4{Œ Iõ?݆y_©]y+RüÙ¬8¢§œÂÎ8¡_E”&_ÞLßôž—zG"0´2Mž–ŠxZ?õUE²¡^å¢é´â€kõõÑLJõ\G< ö,E–}ˆWµŽèšª8˜d“Lë·#m2øAeØK>̈PA)=Î’ ÎÍErã‹8Йvf¶˜qîÖÐîùì=³Ýj°©–áŠ~Õú`ï%À_’vµÎH•¾I¼² U/{rdפ_FõÊ‹¬ŠÊÌšòg?Ý÷Uޝ8¼"ýœ~Ì#:Ü•šŽžÁ%CAß×’ñ”ª8‘Ýk–â´²ÌGr™§éD{ÝY´'\tM.F× «¶äDºæ £ˆõÆåÝ)9½æy)?ª|Ó‹~päãv„/fÂ1Ó“ÍUJ†Sh¯ÛsÖ-'Фj²S^}9¥tgY¶ÜySK:ƒ6ߨ¾ñ`,…×^sàÕg&iá=†%"W¢¢ïîÈtíªögðÓaúð²HÆW¡ƒe>Mqšo\ýT†!Ò{½Z¶f’ÚW¸¼5ŸZÝînH¡»Ã¶”A ô=„vÄ÷Ë¿~\¹ACÖ|/âÜél¬ûäðýZ­OIíù²©ʸÁ®\•;º8øñº¶¥òf„Ã7ŠEª¡Ä$F¾b.ŸŸ°‚¹E¢ þ;ùT„Ý!,„Wì!±ñwÂ,«ë /ORm$kÓW÷/S×Z)d©$b7CÙ¹ì_ tìë5¿ÏÔ¾@ïÔbN„t—,¡â%4ñØ­ eK‘tÑÏXäMn·îrͼ÷LJë)ÑKþ|“ìÔž´µÐñÖÛm#.-¸ ‡ƒéFhZü9:9 ‰åŒN ¯ò[»üŸ ãhÔ½™hн«´¥ÒZÙîö ¿cá‘ïîÃ%¡4¶˜HÛHåüüΟ˜o±S GÒ|k»aÂTúÖžÕö^‹ý`QtÜ·í$ávTPÚ c(gÆ&bìÇ”ãüæ ã]7祧ßgdAK*ä(‡ î›Þ¶üvN7ª@ñ.3Ösô»Ü 7-]t#ˆnUÕrU+ªK(É×rt÷€®_ÁloÐÞ,¿8ˆµ+ÝN§˜RlÆm¿[Ô¾cF¹¤êR«²ßlL­ðN{ÒP°?”®ÃBKgŠˆ&§¿ÌŸvõ[\° SŸO Н‘~À,å{ No¹¬û˜”8bhã:…@ÝJâÞ¤¬¢‚iCoÔ'ׯXPï:1ôLÑ—âŠqX*– ªtd½)^üÅã]yeÅ=‡:ó[؉åÂðQiíõ¼kîP}5{•G61D!ÙtË–?’ßò½L”òŒ,²z@á÷µ~Ÿ·œ³Éêf¹O¾L?þsô3Ÿ¡A’8Ù§%5œhe%¤·ó8Ëñ½½¬AçÑ“aäÛÒ2ÕÀé;o‡Ê¡¤S–Y®¿Åþǹ ~>6RKIÚØ‰–mx‰zSò’aÿôÅ8E|lÐ.%Éb³l~·”G¬R@gæ.>Æo›8’Ð?NÌrê~Ð5ýªTpiëï˜,Š ( zê0| î,yVNÔ |q-Z±¦§ºŽïÒ@bòÑ•¤ð.î@Wiâ íHƒ‰‹‡y.|aºCC%3ô+eZr¤àL‘Ý 9¿½^1±Œø;ÒX­ìg+!ÉÁ'«–ºM&=?mÞàZ 7øÔL©\™–­Ñ h]C±ü gÄ-skAh=ÁþÒY1ÛãÒ/–ˆöƒ úI5×´@pj„Œ‚àDù ¸´g‰‡T’D •ÉP/£3Þ7ª§ÂëêNùñáÌŠšët›mFò™÷iM±ô]àïO ´¥ÜFje-H×kG´Ó$TðÓ–Û7 =„… ¼ÁoßOÏÜe¬píù0swÿÀ cðcçýȾz›fÜikµeS1c~—ƒŠ«(Sq—J4,»;'µ\¦Öò‹í‚òøiž²®pë,²”ýôXvâ&ªJ)á¾N €­M¸KB¡³1ä¼,;~¢1Ö_3¬Í³W{[3ÃÄ2í?ؼÞN Nñ^‰š´ò%’f_ÞÏqj– –TktS^-â@&5Å2×aYêobϘ£¼"+ÒÂ9–p|#YÚ²u{†7‚¬›yðßEÔí¶ä:i¸Í¤•öëoÁƒÈ s9ìo-uߣI «‘9E!†ÍIy"¥@òµ¯ v#Y ŸŸ­w¬ QŽ«¹¹® oÎz Ý8³|/v=‰$„¾\qˆO_´s´èøUlj¢l;GkþâµmUé’¨Ã.³w™ŽSí·ï¦wJ¼~¿™c‘ÅÕžŒHêGÝ›û^Ôƒ³bO’¸ó%¦¾UïïÖ60#™ÔѤò‰å¥}_ä–½ƒönÖU”*›R“}9ËõÅÿúÝ»*< ¾–¡fzåM‰E»EñuIÕîFdIàå¬8É8›jÐ/aY1é›O‚&Ç~Šjs0K&®;g=ï©J·iH`o %õ†Ãúdog:5v9Ê} ¿Sq%E›wŸ< jò=@:fÀúþÂé–Jtƒí«ˆö<äÃ=ëûÜ8T•Ê-j»î:¸…9–óö4f^ãTJÕÃ}ÉÊ…¦†ñx¦³ õ"F•ŒM0Ü-±`hóÔ 1,ô½õðlÑd.鳸 Í÷&›Ëé ¨á72°ÐnTÒ·³Š¼kF t½ËÀ¾´ßka e¡.y´eåÿa?D€à¹HöÍEÖËe2ù÷_ŸìYõð´íjQÈàòñ¹#¶â@%x̓?¤ÌóUÇ}Ýä &øa®jxŒ\7wÑ™"O˜ÍÞ‰³»&ê:cÉK4éò*õ$³7ºQLœ)ÁH¨Ó„¶ŠÁÎÿÞâ•ý5.Š…ÕÖ¤ !œÄ;&ó%&…Þ°0~ŽÔ­Î3EB0 ‹J±’z^¼G7E?PnˆtûÉÂs 6crȉä|â.ûÞ«|°ÚÓjÚ†‹½^|Û¡ñUc÷ ñ`ßkô ¼ëk¿ƒs•’[Lbô \·'-„îe¸ùäí‡Rg&ñ-?XA‹øf2øéϨ~Æ[J7Ö\õ|»eŸV-JWó`ÛxO <:ÒYön½õ ßN°;hÉGYè ÿT AÎ~ÑR+9JûTйÈîî“âøžÙUigô]Å9)Uj<| J&ųîvƒw•ÞWxs ÿg÷ÒC JnFmÝ×ö ¹òN ›UÍ c\ªÆEvç¢Ë™) цÇÏ«ç…lŽù!Z:üŸóÏÔ1”R¢ sw8Š!+'šsæÑöw*pr®%•«Ð²WP0°`Rˆìvâµ6$™k¦̺idÊT Ê,¡‰LøÌê H>%ɽÖ¤Õ¯w›\Æ&hºQÐ/SƒO† Zy®®‰î ñºœŒ+žQúÙQ5 ¤tssöÓúâð½ˆi}¾’‹µÒºªÊìøSW"³s%ÊɆR’ÅJk/Í¥ó"ÖVÍÅoÚ9 äe…}peèlÁðúé¸\~tIT"òõ'Ùçëžú™q:ަ8Nôë-Ÿ¿É.HŠt?*z篕z¯^ÁDp3ùx÷çPݧ^èå‹Ûx ùö3·êš‘ú°©Då ñ›îÉAC^º£Áï|³µv¤"jÛn5ì,ŽÕõ—Û>b0È\(¦ý¡Juÿ[Zxξ¤—nõËØq~¾!B}tëÙâ¢7‡x[×[·5ÉØÃ’üó‡)¿¢Â2Ž{À¦i…!#½ø@<6¹L¸@Í…Ö“Èp­ûqDZE4ß•CëLH*ûT@â¢{Ž®OÐÊÏÆ^ˆž$´Ða–ºXhæYw\4š €:µIf׬2ŠºèËoŒrö’m}Iù&ø  ¯tŒí±¶k+üýNBƒ²îÊjޱ<ÿ¤iSÛ*H\ØãÉ/`°ñö‚, nh²Œ?V~rMf¢\œ16 Š¢dL0¡«I]ðšPkNÐB>3×Àc¶lÏ*ñl8ÛïB§Ô$^$Ôΰåwg“ =Ö“AÏhè•e"𗋆×óËZe‚3Çâ9¤—±T^Q•d(wˆû ³SVÕVglq:ÓøÇñ OÖ“R·³ Õ[n¯ËÕÄõ‡£¶o‰úÇhœšá.ÞgàüîçCgkÉS|ƒï÷®Wó…tVŠÒ'ë²?Xv™t¾Ù×ú‹ŒM¾«?ܧó¼}âÚϵcÅ.vTÇðÊê'¥@ù”4gÏLþN<QÖ±G]è äÁ¸Çs³êkµåƒk 4ƒ75|Œpû…–Ç©hr·ºR„ œ­(Ø©2ÆÀRInQA>¾Àåk8³Õ~–_® Ó‚ö/š»¶vrBn…>›':=Ÿv¡V”‘…cìî E]ñï·{Ëá×刻kr†ÒµDˆ™r'ú*?¬q[y#gÞI¤õ}‚ä)ñ3HµS¼N½ZR$¤Èy]|¦D80¢ ¯QŽYà`¾í~\Ÿ:eÆ7·#^[BŠñ&–:‚… ßCˆ˜‚b“‹ýNÉþëy‰o²çþ‘9Àí endstream endobj 207 0 obj << /Length1 2004 /Length2 13322 /Length3 0 /Length 14549 /Filter /FlateDecode >> stream xÚ¶PX×-Š»»Ó¸Kã.ÁÝ î»»w îN ÁÝÝ%¸ @î\fæûgæûß«º·ºŠ>kûÞgíÓP‘)«1‰š9˜€$ì]™€Ì¬|1U++;3++•º•«-è/)•&ÈÙÅÊÁžï_z1g±ë»LÜØõÝLÁÁ ëf ²€\|@n>VV++ïÿ:8óÄÝ­Ì ÌY{ •˜ƒ£—³•…¥ë{–ÿ9hMé@^^nÆ?Ý¢v g+Sc{€‚±«%Èî=£©±-@ÍÁÔ äêõ_!h,]]ùXX<<<˜í\˜œ-„èV®–U ÈÙdø£]€¢±èÏÆ˜¨ê–V.‰ÕÌ]=ŒA€w­•)ÈÞåÝÁÍÞ ä xÏ P“‘(9‚ìÿ2–ÿË€ðŸÑ€ÌÀ¿ÃýÇû@Vö:›š:Ø9Û{YÙ[Ì­lA%IyfWOWF€±½Ù†Æ¶.ïþÆîÆV¶Æ&ïn U¿÷÷Ÿî\L­]]˜]¬lÿèå0ïC–°7s°³Ù»º üQŸ¸•3Èô}ê^,^«½ƒ‡½Ï_gs+{3ó?Z0ssdѰ·rrɈÿÇâ]„ðÌä àdeeåæ@N§©%ËÁÕ½A*ÿ¿×ïçãèà0oägezÿBðq1v\Ý@~>ÿVü7BfV¦®…•=Â?ÑßÅ ó¿ðûÍ;[ytY߉°þñùû¤ÿÎ-3{[¯Ìÿ¼\M1EYy†?þ[õჃ'À‡‰ ÀÄÆÉ ²r³¸ß~ÿEÙØê?U°þã+coîàý«Ø÷)ýOÁîÿ¹}Úÿ,à¿c):¼3 ý‡àz¬œ¬¦ï€ÿÏ4ÿÓåÿÝDù¿ü×#éfkû§–öõÿGklgeëõý;_Ý\ß¹¯àð¾öÿÛô#è¯uU™Y¹Ùýo­Œ«ñûˆÚ[Øþ=D+I+O™²•«©å_TùK®ñÇ‚ÙZÙƒ”\¬þxPL@VÖÿ¥{ß*S›÷GÃåª@ïKóß)%ìMÌþØ.6N.€±³³±Âû¿#N€ð} Í@ž2ÀÂlïàúîxoÏ`îàŒðÇ}rqXDÿý…x,âÿ ^‹Äßè4,’ÿ w?¹€EþoÄón©üb°¨þƒ8,êÿ nËÇ¿ï;2þ½×bò¾#gcSÐûólîúœýoù_<û[ñ^¼é߈ó=˜©ƒíû”ÿGÂÁñ‡ÄÎŒŸÅì_ð=%è_ð½óà»Òü_õ½‹Á÷è–ÿäz–¥—£%Èþ_ï2«Á÷Þmþßëµý|oÆî_¹ß ý'绫ý;Yþ¥/Îá_ð½rÇŠy¿+Ç÷µsø§Uö÷ðNnï¬ÿ¯ï]8ÿ ¾—ìò/øèã÷Åfqµtý»Œ÷ÂÜþß{rÿ|Oêñd{÷÷úþ¿MÝœß_÷?ߟwòÿþó§ò™"¬,9˜ò‡XׇtÜ׊z0L ÎS|L§còYqît{DM¡«Éþ´å|+š2Ú‡¶¾'A{#²Júâó³µ6¼-Y¥ýÉ÷Ù0Quö áû ÎÐtñOцAbx"&u‘Cß'_Í ÈVðnYª|'7åBÌ{)φÁе‰°¥•Ã.9ÄçŠ9¦X½ ²ª“œEå%[Îi‹8“;vŸ¶G´ÞŠª÷ÎÇ—ÔTÓ|´øx,X2Ñ1[mÒIvedI09ë²[ž2—Ü­&.ŒJIVoJ¶Üõ(†W³ é.\ü‡)}Êi9i-Õ~®žŒ=2î²QìÚ`¹§c•ú0—O‚ëgþM¤Ø?r¤wmù¥áù&h=•Y”GŸ>¿Ég^OƪÝËи˜l¶-û¤Âø*wC:¦à(š*a·|­,»¹©ûP«9´×ON§n™X:m †Žê ‘ŠG«ºç•ÂØãBÇ ½Í¿gÖG+üCH:»“<|‚J1¶Ÿ‡ÆäjN 3V§?¥'ÙdØlÙÀꔲºå¢í:ÁŠÀ tûÙ%¿y`s'X’ΖÏä­†}_ !™XÁý²œJJñ¢ky—q®´“Åßh&òŽ<ëR-A‰g5Á ä/#õÉt¿Óœ{!°tâ’my’ qµÈO€òúcùK¿È<µ'61ÎV%BöŠ…q#'Ñ–|àð¢?” Rëµ<ž©Å½òn݉{"oäx–÷#6Ú§Š{ôïK„R˼Éyp ~x×÷§“MøÊ 9äÝ$ƒÖ–0ž…ðv:…êžÐ˜°=8»-¨Ørþ‰©‰DI¨Õ~Jf@}µ)¬$vÊÁ擵 mtÄé~ ‘YÊ¥£Gl3õ¶@‹Ø‰]É›©ãL”_›…ŽÈiš`Í~—1>MeºèØDœV²JÚB“‹œZQ:]D”§·›@Τ_ÜàÛþ­x°G:¹`D_VS¦ÏJQ‹™4BÅ{gí„!اO¿„ÐÀ>àGtµî–cj¢M3¨®H½8æz‰ãIO»{ú8b˜Êã@Þ=:Žúº6æ0°#á[$-hÕÀ£vá tP§mÂü" ˜Eg·ª¤º´nâÅ­PO!í‘•¿®¨uô©i­‰CëÚü¼‰·Ö=wÍîí¿Â¬Ó0ÀN¼5g‹jÉÿÍ}wIèy¦vÔßi××ycd]b:jÓHéÆ×£Zµe%ñC£ ­}±` -Oà´c·i‘Ù@›º.}-Œ(Áa“×E¨ùa¼¿½+±í¡†ÇºË_f~íX,Ê¡}þ¹2.SÉž‡ðRÕ‚"•_¼#uœ0w-‘V–!xüÊwe¶N*;¹ìhñ,û'Ö¶ ïjýR0ÖÈ«ý¥œe„—‘Ʉݣ•÷cÂ=7„_ÎòÉýì§÷âNQ+QKÉëäü ¯uÇÇ×å§–¸È߆Ï)lå?Œ¹æ\Ê“ÂàÁ,(e(&¬–c(7ô¶E¯)<8?—롎;ÚFäGhÛÝŠÍtÏÇÏlmz¡ÉlUO÷Ý/£9b =C1:Ž I( `4u=Á$Kë¼äÞÉÕ<9ëyÜt$¸QÖgJ" ¶A íƒ%a¥,䌄‰…™w¦S1-¯5w7¨ uìF©@BL¡ºŠ\´†‹97>ãmŸ{î'‹Ï†¦ÓbÞ‚üjNøðà$¦Á„%C»n,pѯzWˆMnYÉCgjÔ•Àõåaô»°D'²îg«`æ&“oâRB*Ió<åÛº¢#çüÝFIôƒÛ ggW ƒcñÎ0VˆÌ7“dF³8܃åÊPê®k3J‡Ea”t ʬ ±e® ÑýÌnûò·»¤qÐß;Ú3†«»4À.9VëVR3ê󭘄’§lØ#‚µ¤]iˆ%¾Öh'dÑâLx4OSð0qôêqªÏžl?rt¨iýù8HxÕä`kÌV³êÕ÷n ]¤x`– ½Èú§¨ù.ï·.Íg“ë‚x õ§5³zk<²cÍŽ¶ô}Pýs”Žû‚#H³t. J˜Abãìã T1̃ûÛšm#¦ÿñùÐJD­.§³|¸Ÿœú…»µØÒA¥‰ÂŸEîÎYoø-ü€¦ÒO,«©ÃÉ«¨$Õ¾³^vwL“LŒã¿³ÍC%o=?>¢ÄvVv~‹utiÑ"‹årbŠQ@¥9Ç|)Œ_Ý"1^µ¹xŽ~“Q+JƒÊȾÇÐ|#78³æ>`Ï–sׄÉÈ …*T78—»e*´Žù=ú+s>‰y‡ß̇nqÇîƒ%.GÕQ¼›<"}}åÄߣ]r ¿1•˧:2&„’ÝQ­¬IGjŽ[ë ì}ü¦[%ƒ`]‰º£{¬x¨AZÖÀ,iLæòµ'eú·3sÛë}ϤDü‚CîÞÁ]| —á…3ö£a¸7€c{‹Uÿ 9­hR+#T¬ts|ó¤ž ?z¨ÍÐåÓM¼Êà‘Fxo þÅä„sÛûxSTÛA‹‰ ×ù0Ÿ¼¢"áfNåÙwDkGþ‘ÖÄÙIÛ ß \ªRšØbxe ¯Ø‘;?¹°š¯NqEEÛ ¼ã,lqQ;åwÐ/Z_ì™>ûµ"–‘ñ;ãd͇*‡Uwr ¶8²ªÓ2bKNáø«‚ ºÃ¨ jÙÊsÒ2,ôÀ…qÆíá5k5}lê1੤ÓÌýÈ ýÚ¨V&}\¼U…mø¥š¹âgÌ4'"øH‘ám3¨{{[âŸr¹ñëBð·ÁLø%×5uíxT\ÞÌ7-?K ’m¯!·Ègt"/],%¢¦mô3˜`_D{õ8ˆùç}aH9ÞÎ ž¡8oªö{äkzWÉ49™»rüœÁåvžˆqJœ>í«e@ÒÓ¨> æ¢òuºJ‚ú)i2áã® ½dJ& þÞ#æ§×Ék ÙìÍB“rˆÝ!HÄ-‹3ŠRž¦¯ÒNÎP߯¦µ¯?%N&w4¿Fr:²™€…ʈѧ²Á*÷íPm{×–¦ d{5¹q˜Pô¨³»˜‡sjè*›S‰í4œÑ +{[ðÙÆmäƒW=CEí ô©¼ñO“1ù8ÀçƒÈŒÌßÁ7CˆMHkõéTbÑ—­ÍíaãÇ-ƒÐ\«3ø§ôÖcnyøN}"êë_ eQ%‚Ùt?~oóä^o'æí½%¤‘ Ü̽›9x¢^O­Óøfín ¥ —§S°0l]^Ù;6>Iʼ©KoÇK…%Ýfºgw¥üür H5Ïl|è.Yí¥ðáÁž¬SÍÍÆËœ³nMÜa©l†ƒ`ônk ,DÅ™z©¼m¤g¾¹Mϔ݆z¾cE6?‰Ãn ùJ÷{nòˆ¥ï”>q6&çþÖ¯lÓHl+ÉÈÍâÒ<k5Êâ^žÅå>~¯!‘‡ýN·Ïq‡Šh3´=dÙ—V)‹déÔ}X ä‡Z”«D‡€AÍœ·æƒÀ>Úp¸q½=õbmRXî†ü–íÔ~ÅVám…¼¤3äcšÚ1Ã&¦Luj(;1=wÇâû Φš Ã%|dô7f7QÅqܾxޝ³®"ÏG%n™…‡FÚ[ 8#íc¢o;WöEN;U=ñ_¥&~sO3VÙÕCìI”´pñ ¥Ì?—sK‡ˆ¦-âu‚f¯«}öf¾æÇ kÎ+1:*ߪ'oÚNå!š[äò˼vnõ¦’g¬}˜_š÷š©G’?UBØ`ä0-]êõ=F ðKD‰@>|üQ‹Õ4é‰m"wÎö|ÑõdppnðñJCT“û«§Š?›â\Bvœ…\•­ É:ks¥qÁ^Bu!S†ÛÌ·-…áýA31mS,§ÍQ¬Ú ßd~ÇXÆ F® lËT9Ͳ@£5ã$m² /ÇeúwÃB/abº$Ôæ Ä«øifs3$=¡<^¹OÃñì‡oØì¬ùM6Ò—7væç äÖ¹ô ÆÎn<ÎÕ7M-ýI¶dí_+ìG…f¢UœÞâ´l%ÍŽ ‰é™h÷2ÿð¤ÃµX*qÍ]Ø vÀÀ'—¸p™\·ó°á/i¥hQ„“šj;¤º…L›\*ÿüítmzsp-èµÛ€»yS‰1äÑ)f }vXQU—;á”ìU1ÏBm¶G§ðê¥ü:éëÈúA ±z@;AÔd“I$A 5ÓðBÕRG‹d.ë9±g@‚˜ÕH“ÒPqÑŒ¬ hd›Œ3éÀ.<ׯ@Y Ói)¸~Ñ! žŸµ5ë‡×àgÙó-¸ž×œîT7ÄÀÙ & 4̪ f–šò·ÔÃyi¼°‘m'Z^]p ?µ¯{˜ ^ì}O®Þm.ŠšœDŠ¼Ã…ÍóKÄÀ¬b.a,µˆ8ÚœZf ï ¨hü¦1õwmØÈìt4NZSŠivVÀ†Ug.â°=ÒuxxWç991ýÍk9¤7­"mîTÿSd†Ñy&-:L{ÅœuªXT^l4³|K#'ËÄõÉ9ÜÂ4í£S×k °®Œ©€“ÙÎ|‘¶Çù-Zfcã:6p(˜A¤b?ØÈ¯tΞÁf þt^. y†á٥ͅö \¢:eȦ|æ_Ku@ãP?Áì3¤š„L?G%^Ï8ÕÐ¥q²±¢<ÔNXj óY’o¢a#Áœ ^׿—QðÇñçå¶dB.cêéh\œcs×WwrIež_¾XI ÞþŠA]k ‚"pÐï<̯aï„8Ÿv^Ãc¸ˆ·*DW3ed£iâ}˜Dmë)-ùÙQT«´p’𙱏±3T.‰™UÜèÌ£ÌF/ø»? èó¢6íä#«GÔ¶ÍúuEouœ\ùÐ_'ä5‘Á*Œr#ó—öpm - ÈŒ'ÆdØ1 yŠ\A̯ŻÌév³uDÂÇ(Å‹­˜¤¦3Y´g2ŒÆÜW®Ú£»ùmçäÅ|½ˆ9·¶íÀúüYü›à¨!d.œ_äJë:=0Š]x—÷˨3çÜEM²€š×7=Q]ÈS+å®!e.ï¸fµü9éAGVÑ[Ŭמ_}Ôoðç)¦FÖbVTƈj„ n²¥{b—¥-\vF—œ®³ øGL½xB²¦îÚ»Ž×ëx•à7l|%Ûªˆˆƒ“b¥‘Ì™ ºï6 kVQnÛ_hÜ>,K!ˆ3D)ɰöÙëÊKý½¶…Õ×ÑäjG·l±ráî ¢ü2›s+‚M!ý ©r¿å5øà•Sã9ùÔij áÄàq&W$…ý—lf˜êôB@¯­¹/òÙnÆÎÊ0:}èl ¨£îj݆êÎ#AN¡}½±’º°ð…oD‘[l£ä¿$)Š7岫åß$è?Û}!Z÷@,Ü0e­µdÌ 0o÷¤ze Ù’çäÈOñz:îVƒ‹¥ˆK»Rsi‰ e˜½¶® êÙYzZ>êwv:È“­Í êN¨ÿT‹Ú´2v‡{'}šö5Èh]Í7冯›Œ[÷vI‡:ùƒ»o0‡ÿd Äg\ÛýÛÒ­‡¼H\}Qöj¨Ô~g’òYœÎ@?­£œvaþiéáš-be%z *ÃùI¨ ¯HLf@°<øbÌo3è†rJO-ÝVNB¤jŒ f°X…|vóêŒJSüêKdUt\[vØÜa«×Y?+N™µóÒæ”ÚÞúõÝg3x²²Ï¬üññ©,ºàÑWBN»fqú9JB=0‚ÞLt•o•MfÄ÷¥m}íáäëáïIÆKHÏeéùÛÒ¾¡Ì…$cµîüþ5uàö´Ç¥ñT:øp.õõC—}s|ŸœÂDdγñSL&èúy:7p>(ñg¿¦°¥ƒ*§WˆðF†{þ@‹Î«Mã9CW:ç¾ ŸcîöàÅ1œS»†‘×$Û6\Á«?>µÈd£¢+pLþë½ äT-âEüêÃÏÞnm† ¹¡µ¬ ø(ÉþA×Pï–foU›À€}oÆ\Û~^ö>êFDƒ8¤J¬Ø7¯§ê–*=„‚ðFw†"w­̶Ÿnbl2_óQNaüó® ,‚3’\ïÉiT:ÊnóÉUUzŽËÔœ€ž‘¥Œ?Žæ£ºRŸºô=©I'SÐlòÒÛ8%žËiž½ã$íÒ3ô«#/ÖíÔû}¦?Yft¢Ói‡Hj0^ܳ]•zHø lf ñð³8ð/z•ßü ‘*êòlùw£ï66^Ç#F ×^2"™QqdæÍòa×e\EËèÁS {Ùù™,†A% ZŠWašSòÇ=ê2ÂÚ#‡Ùøn6\¤CÎÛåmÆŸÃáq\Ð~(Ö¼ ?ºýàð·ä6¶–zûâ¾”V<^´˜QûbÂóÝ—û¸?àèÄ3c\ôrø›‹È™ów›8jJûƒ…©pBûê•n£'¬èé39qEóÐ|Òšý.Ö¡@Švj®ä›Þ­¯ó¯7“Û{ZR_•4ÞÔj4ƒy¿äÒdRKÆP\hLïˆhÆ\wö:C=€é6]Ë2Ç´*&'Юs»Á|ˆMvboíˆs懶?O4¯‘úâïˆÑ(™¼LË^a:RV4¿ìòE°E£û9¸àa;‡‚^pJØO‚"Úr(TKîê+¾‰äÀîàô‹£#Ö»*˜J[6Ok¿Î0Q$è>3Áò 6ÙCIŒäûèâWç?_Š®qu¼ì[*[x6äU¸…²ÆÇèi>z×ã¯Àz­„(Rš –þÒà)oj>Pð“WÙš†Û¸<ý6“]‚Çæd‚–]X£N½ÆÐVH û[ëm{´ze@Ë{ å#òÃÀ…UÁ›ÚÖ¯Uye³(#.ok¸Èèåü§Ì¤R~ìÆêÞ”†a½DÊ3Sd*ðtLeº’—.ˆö|Ç´J܆¬ÌàtK[]d¦ˆËÁ"§§ÇiWÒ—Ï­¡ †9|`¤)º$[‡7‚¥ÑŠ—œæ×磵G$áD¼­F•O¯…¿¦Õ¹!-v¥?‘¸¬NŸ‚«Ö©¼ÜsÚ!?Q4—îãW>kD&{¨ÝÅõMÑdÏÄWòa‘ =9ˆ]ZT6Ô©À–êè³9‰i=¢wØ\NKÂcÂË„ðG· l ðÌnLsqùÐÇÕÅðƒ"êxÔ^¿éÎñÄ­¸í6á ò†Õ[Ýê<¢‚ž‡ &0©à€Ï"_v ¾å˺ÔÈ÷W®‡kžÄöߟ䴊m6pÁÛŒe§È¢RýÐV¤ÐÓ£P¼µf'jÒ?ÅÌüòÛ®†D¸ì•޲YQk…có… ?ç÷hš£UŒ-Pº­5ƒÉx—ìÝâcìäÐãÑʾ" =Fæ÷ïl`ÑF`ÓP<Ë’'‰0Š…©šô”Yq±Þ›¹Zfëz5±&Œg‚¬Æ7íBÈLs¨ì>G,z<Ë(w×o.¤\ùOOÛbõóNŽe:d­ðæ\ÎÓ²ðùl®#ÍK/¾æÕÞÀ@÷,©ÆdR8$²î"¯•=í(t¤b¸7nÿ\ž_íiî0ý¸c,%¨"©Ë•heày?NòFëtÏyŸt¨,K^l˜­q­c?ÝdjàO®]ÓC-¦à)@’—šÉU`ßœúŠ–Ýqš­g1*9¸Þ|ÇÖ?ãˆ%[Úï·§Æ´Úùû²I¾›.ñlý~ÜÀR*K¹Š¦ÑÉ~rî–˜xÉÏ75YøD·EÍJ€h}6Ø¢—Eø½¶lc´Ø\œ¿õ BAÉë †3nò¹…Çq¨(ýƒ²92Á¢ühÍóÓ#ƒ°ô5}€¼^ã¦_*Ï-êâP‹1À .~âλjpÊ/›Íc‘ÆÉÈxýíž›žpæŠ"Ð)¡Ò Á>qJ®‘lÏ3œ "ÌÓ¢¤!q¬ízéYð,"3®ž+>¸-G6“D!â4ì-ëÌ%‚¶Â+X–ÿÃÏôc … AŸH¼]œŠ|«›òh?ÊÀW¾·é>; M°x*:ôŽÏ2k92º¹0 0¯ôߎ/§™fƱ$L• B*ñý(èmÊ`ijUºæuÎ)vW !NYÄÁžSÀ׌x‹hìaïè Z"gùÖý"s–ª#uëªëò·]“#ߘșà6XQq +#1Õ‰xü6‡5c¤@6­[žÌÖÇ×îeêÁ åÓymÌl\k7‘^p.•‡>»ò`²Õ ¡©dÁÏŒ”j ³½gÅ‘¼J¼hÔËz? òe*PZPvP®´y¾ÏÀ ³âäÝ¡;ŸŠÍ ¬ÐÖö?RšÇó¡¢–Šø6 %¡pS¯5nwvNù„ö³aà¦`å¯sˆ“x$IH [Àè)GÀâµZwYB2Ô’ΙƒBOl‰'"NB½€Iöã[îd?ÀÌ_©šéž¿Ùf‰Õ‘Ò1¦¡ò¡ˆ|¿¹i6¬ëuXåj·ì¿‘s‡mˆsÂ ±L¹œ(‹åD5·Â]ŒV¡å<ç¾{Jϻꪥñµñ)„èʶ]v½kê.².8sK£hŒ 7ÿ™‚2î;mŠéþ‚.…«|øŒaÒš 1ž¬sB ¶€iW¬Äó¾û ÷÷ïýB¹m!bøÌÞâ« y[“roÏÕ~é/¦Îû¤•YÅùªdª~f!.l¥µ»B~¨2V Û¯jAþ²„«Å˜ÜìÛöÂ-c/ô½ù8ðªs%‚’›71ÕΩÇ÷”ÐPe$|®*]NÚ›67w<’ÞåóïšrE­’C¼š™# [ÁNŠïõE¯Ÿ^Ÿ ÝîÌHÇG,"h]~^*õ˜Ë –ÌåÏŸ¨]0±«ïëhikA*äå|PÍ™ª”|Š…ìQ1µ8¸z•­ €OùÄ©üÆqdÑI‡4Į﷔*ŸÇ¶³ü´M9bk¯­Q[a+¯££í[*\XÅ„æ«2q*n‹³óJT¾-Ýõ3K¼Áþ«Ûë7ù´"…c =¤ÕÑzNåM«ô¶Ûï³/×ÛâuõJ¾þ­ßZCC-è´V§Ó8¿%ðž<9Å¿Ì4ö9:•OwÔ…Ó>[‡³ÖÎ~œUbné[&™Ùpì#Ú@áJ-%·×f²›d¨›s{)µèއ-<ëC\à•™ö\ÒlÊ£jW“m2¹fõ±ˆBÁÜÁ³&ì=n%³>&äˆAYa0Ë€ãã°Ý·%"áø õ{§‰né¡V›`äs»(,φí’¯8åݤlÂîb‘ÛÇh ²C¸ÚGXooyHmTå}r¹ uÔ?It ¸zNÇ\«ÑohLkS?qrÿš¥7Yjêà”ƒ§$LF¡M'ˆø˜JÃïce­' ªÒ+oÈçgúÁÕ kñ£‹æ1“šû×H¢}”ðÕ1¾qæ)¢7iÝ—ÇG¨Õã1þÚnÆX-!Ý;,ð©Ï»!º9…¨È¤Wå¯Â©F. ߺºº¶ÓM6-u>kŒÃ@÷¿o”ÑÃÈqÆO]˜Øl7…¤éÊpR1­1/uIé¼dx»ÎØ—Ï!²òì}ÓÆ½¬ZÉ Ïü¿çpaÄ3Ò~"ò-5r^¯8 †‡íz6ø0Æ”gÀK×:ÇÊ¡ÂaÏ{ZrØóTcÁÚIêÐ[çƒù—Û”$"ÀíÚ4N~g6Y÷x5'ÿú4c’uÿ«qE¾'¬ÇçGQB‰ÖWmdW·sFøMlE/ºr´÷‡õ9ZëÛHJ¶¤ÃOsc>Q%M|•2{ëpt¿Ó×z›Æg©Éó7g²J|0 „/¬@Á@ëW+’Ô™×(†k ‡N#I ‹Ø&›j>_G^xÄç×BEîI•AÅ©x’™¨1_~nxa¡7æ9f÷Í>G… d1ª¤(n~Ó:ƒ‚Ç)š\F§RŸ< RÑ6Ìå·éûµxê? z‚yäÉÅdã²x·òYøµ|l6à´âD¥ÄDgÅ<ÄôÇÚå­òwÞ(Ÿe_×6åÔÉ*+ÜNÉ÷Oé]–;mÛià …ò*н¨w2®Ú2%뤰l¾ß„µ 2ÐÑ¢<Ù:lu;ç%œx»qÕ4wÁ‚:ÉÕÂxi|¿.qtò™ýÄê7–Òt«B7y6ì+Øñ¬Ý$zjËÓ¥5ÀÑš¾Ãµýkº%'ôˆŠScÎóÕóH=éòÌ…LºšKPD–~_缩”fãcÒ™^# ¯U-™ +\Ë4ü$àÕ…ͬw…£“QNÊs>ÌØÐ$©ºhA=õ}HØŠÌ’¼û§®WGÁú"æÀù-üC;S‚rtcm®;¹ÊC¿òÆ>$Æ'Ÿ5|GžB¨½‚£»ns².).y^ˆm;ýëÛðì9ãˆfÃÛ¡Šª>DâØ¶\‡Ýk?zÈ•i¦€2ïÝeob—ünðù…¯É-2D¨¢ h‘\öYg¬·Ï{JGø£èv01:×ßÒ£¯eÌäXÀ[f8œ†•ôÌ¡^Žlä$¾ºäQéð ì‹LÀ®|俣:Í“ŽÐ<×ë7gÄžâ™|¹"p«»tØÚÕ½qzî­0[)õCGb¦®š¾—Éɶ¸_ä߯m 6a§¤î[û;žë†H”{Õ÷ÙNìfœ½²Á±5¿÷­/EÊ:·Ÿ³ ÂÚÇ\vBà^mžæ6ŹG6 ƾðD^Îèsg*³½ 8䎽&Â#ßÕƒ9Khìè;¨hÁñ[œ’Ñ]5L×Üß~tsà gZ7IDP’Õ²åÄæVPdcn ±gðNS‘ÞC$²ÀÂx·øwõÄqxŒ'Vˆwà‡hŽ·Á‚¸½ªŒðOI¿Ÿ'V,¤Œjdz³@ݯùk¯;Z>$©Š=`+I™tb¶~5E¶¿ÆB¡ç’~ÿ¿IËÃ!Ë…Õ}ƒ¶T’†“ÒnŒ®:7ÕXú¬Ìb¶¸üÞð[´Lyk²ÈLûC¿Ç!Åœ“ž‰~"Èâh憜Ò)c¼´½'…vh¦ûKþ2”tJ'5e¥øû`¢©z«áø¡cy8þ”yž3Á5`v–Éñùq¦D„}QÀc‰…ÛW$ùН;Ò§À’?WجˆúP¤º`D«:Òõ õ6È-8ë {!pÌš!Öõ<‘µ›XˆÈ²Zåf&¹Šü@¬õžZ¹A:Ì*¥xÊÎÂèlm6w® / —§c[NZÇô+pL´ÖzÞát¯LV3Üy±Ù-Jì!^Áç³Oª1®{•ǼÔ NFž> ˆõ»•EŸmYè ¸ Iz£»3ÕÅÂÚ!y¸€wˆ cH5Ž»1æ`Éu:Ê/äÃWu.56Q/øòÀs hͪþn^£o³R:—¾ï²Ýʉ å1g§·Y¿O«ˆ\g—æÊOo j‰©nÍÇ ˜ž¥à¶š? ªB™C»yEµ|ìTb+¢1¾¤Î¼‹sf$v´¹˜»wütD|\~«FÐ!Lˆˆð}iÖį)OQš&…¸lµôÛ¯Ä=pŒÞ¡h²Ÿ²'{žYƒžo;Yr`V\×@±}ƒL4‡žJÇ0¿ÅºŽˆ­•Îùh5²3ùì÷C-^wQ)$\ÊgxP”ÔTeüFƒ+}%×UWðöݳEõœH¨uŠy|m-ƒ <ïiyc æ’¿‚`[Ìl›éËbeÏY‘Ša@DXU͹s—î7~ÁÚíÌLÙ·µ¡~´ŸfùÂÍ|F<ý¥ÐMãïe"Θu>W™`'Ýÿg‹GàadðBþ!‰ªð:Ûœbµc§ uÕ/v‰—09®ôaÌ“UÍÐø8dw–U f fª@G*Ì/p¦–ŠÓ}oèÝi:ÿAØîpH`l\:G D›ÇÎÅ Å“&ç0l”¡‘"íÑo] Ð7Úbr1bµÕö ‹Út§bÙ Âå0Ôµýþ¡×)l¤»‡TèÃpÃÚP7¡ìaÅñòü”m:,ëKUñfÑ:;ZýÙ|Ÿ@¶{ÝUbh#‰æ`^0ôP=`Å>îM«IcÞlìŸ Us–ÒÆ üRëúpM-‰Òð÷©çâLae¶¤1ü$‡ù¾•óK÷H|LLȶ™8®Š^B’³³å©XÃ&g ^5~ÈuzÚd»Þ6 3¢'3ÂãV½\žíijÝàÜ'YlC})ý÷9t–’.L3«´š:Wùžó‚%gtÄ«T;7Uxy*µS 3¾&X`(-yÌt¬d1|g(ènè]ÄIÞdÛRÿ­˜ÔS 9Õ7Y6½|¯G<ˆe,Ó–¨8dÖæ”$ù Aüˆ&ì|Ú¼ oWOvŠ_Gòqs¯qï´ßè¹O³Ÿ“2Dui¡å†=@Æœ\ Û{Öß‘7Š\PŽK-ÄÅ·V[°‰Å¿N¹”ù”hMœnÿûEôÍŒŠ›•؉$W1=gµ®¥½çV2oXu«¯Êp¦o+bŽ3®¼®$áKuœlWªD`^5:8’zÜ¡è— ôyûúÖ*Çç&ô’S9<ߺ8˜O+³³\DGìËy^­Jåf›‰5J³Ó†§diR T®ç¨bg‡aRHQsPxqìáUaàv<¸pô¥œ«$®TÉøŒ£Ï»„´lv>DHGaSð‘ËE:=ó¶Þ8~•ÆJœ!ñïGŒæW²6°Ã¹³-æ ^Žà`iXœË€[b2CI¢•;O†Ñ–úêZ2^‰ð/wÇ%©_]û"pk~Ó(Í‘©€ÑþÁZT}¦é,~=/Ù//ÊÄBpÑ™à›ÓAþèñ””‘Áú` ·Á®ÜRyÿõP$;Åz=î¬kz…ÊNëJð®²MnjöŽì9<Ö˜±4_‚NT»óô{RZ ²©ÍŒÔb¸\ˆDø4”oöµ€m™ýäΡ¾ÝÏD»ÔëaKéSÔ+hlKbV'ZMЇܾ~hÍÏó@}o¢Ï3hÂM÷$çõsÕ±*FÃÇ·WezÓ’hÅu'Ëú óFu:øÜöÄx“F]n{†íUêÕ`¬Ó7Y½®sÈÜûºªÖ޽Û'ƒÆéä#1ÄÛrRãiêý¯ø»ãç*&}àÝKñ:<Æ/ îÆç'"îw±ôª¾_}T,é óÔx?48]zƒ#~¥w½¿ë/Îr)N#wÙn©%*ñûœ;¡7ŒâªxEŸx…W¹À¥1¿ÝþwÌãå…=EÏÙ€³%\mÎÉDó_°—î¾R)¨ðinO%R+-kƒy •^J :£Ä·ƒÎÀ—†ŸF)åÂ1"6«ÖUð–ŸÉUÕ¦zÇZø…7/ =¯!~û?˜°_ì< B´h†=˜¤¦.’èfxއÔ=0¿™2%Õ±ÞŒDf>ô°OÎð¦ªÁ|þ½J¡ßçSÚ¼/EÙ[¿ôш@à¤R“2KOŽÿêO'!6à¬Fç%ÈôALìü¦Vp5Þ‡8¦˜´ç§Ùàô…‘e¯¢nb*U«´•ÝŽÊèsè.Ÿ“‰TʧìAÛ4‰y íÖ ’ƒ‹€ /ïèOY°®Ò—†Ÿ~£Ëö ÿ¨y+ 6ÀS˳Ά/þ5h¿r¸‘×\â8·¢ôO'<’5Åhpɧwªr±òÀ&ϼÄLî£.µZV׳p‹s÷4GO­!£ïÕ1òÜþ°ò:èÍ«/ñËa® Þr ‚ò§¤Ç!R²ö'×Ú¹ÝÇ™ ˜JDÅÃ/… Qµqfß¹fÎ;•Ú¢eËËyxý­óas) 3¼K)˲u¸æ4ûô@àiÇ^Œó{©9ÉXyIOúfFˆ}{ˆ©—•Õ³_BÞ•õXžn·ÔÈ`Ø"bµ}Èäƒx …¬-Dx*_6˜÷Û…`ø5¡Yæ259~?i‚r©_lrý{‚jUÀ(U† †Óy2ÐÍ |\Kw½"S‰Ž·ç¶8QŒ5èðJ.§¢“9Ü F7’áêêV¨­Eië_dN•°nÂÐìq‘ê&Ó M¦‘ZD·£l\øì÷jmÉïÎC‹Ÿ”Y3à Îá©0.¶Æ&ž™XŸo¾!ö[¢!ð´Ðë3…ÔÜÌÌ J"cIçQâD¤ÛÖâ<éêEÜŸÊ-2ØÞ1xãnW¥uO|º?Ö(²°m¤¨(ÚÎWÝíV5Äÿ8ó‚ú(y˼ƒóÙæ3ïnl›ˆŠþ/ ¿u¹œy# ™c,ë¥=0j”®æ‘‘°¥e Uí×v”Á\ƒ¤tI¾/ËÆ¼E=ޏ†|úw.¡BI·Þ_$Hán.òÌ0ÕKmÞDfg…—ªg`"°)zÃ2Ù5V×(ö[x·¦6f#ŸÐBÝ4xív7–1*zåªBq?çŸ]kŽuxX6y}ôWidènî0:1»¯6ú"±‰YæŽzôÉ^¢¹Ÿ#‹?­ƒÒƒQMñZ×>í ÐL 1²IDí@‹Œ¸ÏDª€!ˆ¦.»U¿øƒ xh­üÀ0;Âvª ãWPMãã‹?Uom¹À’:h±ôä¨ .«VÇ>¥Ô@ À‚Í eÏïg> T¢ì¥’6CûÄVÆ6Ê*Ûà tæNúrÄ™%ö­Ä1àV†qAR–ÏwÒÊvCa_¾ž€l}‰ÜS›KÎÑZàкD]{Ïâró–Š¢|õ£kú[ð¢mIyaSk%<è+Û‚÷„ý”AâÏSýzÁõËízŽÒw¥y7(N^X÷ظ¶£Q»nÓ>A"‚hÉÛ©.¡À€#Ît÷ëyqv(ŠÜ 4&i&’6b-‚U9­„¸t\c¡~Ï:”¾1ƒÊo{¯Peµ]àòM)•É“ƒÄ;Ÿ*Fõ| ¦ˆ&3ÛýljY>$ÁYÇú‘6‹ ›Å»ò­þ„÷¢ÎÀÓÜwý?¡Œl· endstream endobj 209 0 obj << /Length1 2164 /Length2 16319 /Length3 0 /Length 17619 /Filter /FlateDecode >> stream xÚŒµP[¶-心 ðß±ämß' ü3à:ŒlŒÆï?LÿÏcþ·Ëÿßtÿåÿ2àÿ»qg+«¿µ”©ÿ?ZCk•û¿õïóêìô>ûr¶ï`ó¿M5€ÿZW9  ÈÙúk¥œ ßw@ÈÆÌê?M9ŠƒÜ€&Š 'cóÊ¿äj-˜È¨hëúëAÐ112þ/ÝûV[¾?Žïóø· ø¾4ÿRÌÆØÖä¯íbfc:8ºÃ½_ñ;bx2½¯¡ Ðíï 0ÐÛØ:½»ÞéyLmàþºOv6ƒÐ_¢!ƒÈÄ `ýƒ¸ bÿAŒñ?ˆÀ õ½Ç”ùƒØ ²Ð{…ÿ Î÷(Š3€Aùz©ò±Tÿ ÷ʾüq½Wmø½ëŒþ ¦wä`hl |ÖMþÈYþ#ÿ×|þGñ^ ñë{Ú÷ÌúOø¿.‰Áäð=ððƒéøînj úƒÿÒþ2¾Waöønnþ'÷{ÍÝíÌߟÞ?ï²ú¿3·ü|§nõøNÅúdz/ü¡ÞŸ Û?ÉÞmß?OÿP¿—j÷Gýîk÷þ°ù¯&²2ý[úß-d}¿q»÷ŶýG›þê„Ã?à;Çÿ@¶÷äŽ@k±­•íŸ Ùþ²ºü“>Ó{ä?yÞw‚ÁÉÕöê÷v8ÿ¾·Ãåð=‹ë?®âÝÛíð‹û?à;}?ŒÞ#yþ•ê¿öÏØÙá¿ÓßïãûrþþûSºáVmy‚,ê‚Új„ð\éö'ùæÈö5¾RÑy®8t8?!Â$SUgl9Ü %ô"¯ï‰QÞ ®¾xž|o€ mMTj{öú­¯<³ß·<98Ux"T?@‹O§*xàõbï¥îo ñ¬Kš,×Þ™Q1íÁµ_­~ |mѦ®Ó!Ó2gTƒ”#mšûj]ÆW:™~ä&‚(ðÑ~$Ö–5£ë;+`T·éG¢9Õ²X ;M…7ÚïÔ{L-RñW¹fëß D‰µŸ²Ã]'6¾pw#°äåJ»žOžÆ•’Á´Øy6ÅÑøõ"…û‹ÞÒEdl\Cƒ­6ºÄlMCë6UãNá·Ïº.‘ ±ÛpßÐrøŒƒó/éù¢(ñ‰Uö“Gé,,ûðü…—Âz3¦ˆ¼ÌñFñ?ðU*¡=0³ ù¾[nvìŽt*V[\öú'¬c;m{k£®’`¤jÛÄïë#éÃÜ^æ£ iœ® ß|vœF™$töY_‚d㔊0ÓxÆ/ºa#‘R7üò*z^±¤Êj®}ú54‚À"2‘¡–Ò†-ê:öxq”È×—<‘PQÀᜤÂüvãÒ¶1éÿ Á'ìÀÝénLÆ„xtß”H+k*X€þ¸ih¨èlüVÕº1_øÅê@ò&3wLLM;HK< ®Ì@éÆÊ`skýÁ̈#.•Zä F7(íó†évkvÊ"óå¬òS¬gÏŠoEý}bzò§ Ž#Ò׆ý˯ ‚rÏå:cДx²èá»e1é=Èr peä¥'ô+œõ^Ô`oÉïÏÅú­ˆ‡Ì.•AÁaÐÖ¾žè¼ W röEðŠ4×Oûê&µ–I­À@œÒ ß çÄÄCj0<þFöi“·ølG’'L“ï½´ê×öü€A1X[W¬¬¢—[„9§8Ö˜f*~{TCÙé“U‡Ýp‡H‚ø½»,(h½b­+¨|Y˜rF ŸF°%ç`oâ¡w8ÝÎWnÏ}w¡¤-ÖÜá£ÞÅs%hz:Çoý­ü{Ž/?)Ãf;PD´ë IÎÍøt`\MÎÞ EÀøF)w¨)»¹&GR‚“ŸÃKòJ Ós\¼ø9ˆ³ç=Ÿô ‚Ò¬yVYã ±!Ý*‰º6>Ê #ˆt·Ç9#†¢`ˈÇ("ۦ̴?zðZªZuE àdîè=o¤-­ñ7ßÜ{ú½Üd”T0lÁÇÏTë›$eÍõDdð¬Ež§–‡‚¡¢™©4f DÙ®ƒ]ê:D`”(æ¼Ôfpÿ¢¿<(É› æé¦`t=¨%°U+ç;+äž…\ +ÃÛ˜÷øLÈŽŸ… i¶ŽJ®´W£%¥ÝÈ«‘l ÐDÚ—oëƒfMôCqlòäT”/ðz21Õåu}ˆøàÇínÏ*æ÷ÚñRV ùCg-­&,$Ye;¥Ó«öó‡*¼Q žýã] åzãD0Î~ì38²ÑN°aÛGÑñr¹—=òUg3õíÒ‚>ÇêêBv:ßüc°Àêl|èkÓç­´”öÜë‘m,eWiØ)e»»šË}JŸs€%7|^X´Ò± ¹¦n—{sb'!/ÕÈn[l…æ¥LÈØäË+XÖ· Y4S}™™¦Ó³å—iz0«èhï³^wâUëªn"}’Õ7£Ù{;6yíWjewÇÔ$Òn#†ÓzA€fšÐ¨Ì$š§iéÊ–ÏWŽª9Â{ØÇ;ü™T=e”Ë`ãØèJ°áÝzìß%„§š¨D°M3­Â»ÍZø¦ Ž>D½Ô÷ûVµÂ Ù‘ ‰åŸÄ4µÆ¦Ø’@¯Éªœø{]hÉÈ=Ù—‰¥ˆùÕ¬f‹m2¼Ï³rv‡öÊ Ža–œ?Z@å­»g#IêédgÄ øGs Õö…€ÅDunʼ¢šë7Ôh̯ÛLô®Sj”ƒÒÁZpYs cõ7;³¾W0Ñîͬc–Cïz¤gŸìtªôšX5>à¬qꇒ(µ°˜rW­è/Ð ngrÁÏ"OMTÇôæLÒ()ÉoqÊ…â2ýhföú~sÆq vC†Àš ÞÛMûvˆˆ^KÄlC(çq­‚pü↗Ëeê³(匉9×íçH[™Öi?®/@=ôyßXÌÏýbçÝüáIMÐÖ ¥9ì1þlÙ·Ò̌ϿOáÂG®K!½( R™ù·ñˆ¨£ýýñ(p#È#òäý°9ðÁçóíøQ>]i8 u1ÁtŒ|€—÷”]ᦩáï{)º¦è›HI¹máV‹»ƒ¡:1¿ã-ÙpZ]ö/²`BPÊ®¢cñNK. \W…CWq¦Óņ¤¾@5ð¤mô¥Tošnû™K¸UL»êÒÐÕDHD3¿¨¥[|CyJüÅ&ÔKV˜T¢9t-Ï'êþÅ@Ë:‚wéûØïÕ¶ÛˆŸÕÆËÜl#ªÿÝ…3rÊ^øqJMz¬[­.u¯ÈH¡™oÖr˜&?¸ç­£ïÛ5îíßÑÖfYÉ©–÷Ø–‰ÔìÒ½F¬ëó¤ëÞË?1VJY3áåÒ›‚ÕmÄxYƒÙÄÚä\ðž=;~ƒüv_Øa_Øâ¬‘3µâÀ`!;uÙE'T³Y) 4™n?y[ó Þ1@ydxûä§û¶:./«$•AŸÔSg“eÃXlÿ„òó­Ïͤ4dƸo‘6žv6€tÏ,<Îá•K ¡Ÿö/§Î?ñq†Ž^.ÊfÅ%^–öcê"ÉpÊÔ¸Šœ·úýf±ü£\ùíܸaEÇó’ÌÏ]$pÿGÈ­âk%Áˆ¦7GTEFIÿÍvLŸ¼3ÆÛŸ:VŠƒÙn‰–nS¸Eج/ ®o_Ìm¿u¤ãN±*ÎÕyÌk1M¯|9Û›¼3úÕ¸Ö õÉG |c¡›7ꑬ §•?ÐG< fòBív¬« Xc¤WÙÚáa(vÜ\ņ¥Xþtx-ÈdÌ¥¾b-ñ@|[1ÑC ›ÜZv¢£SpÒcÉÄÉ‘гkîAz.SBÖ[uã¸e èÐešnÏà†1-´¯âYÉ~± ¹êër"T øûÒPºó #ñçÄ9›9úÜd.©&òêɩʶ¿Äx ÀQåÙW­¨Š!Dºy=JnÀ-“f€|¿ÜDÕ>/Þ`f‹ù¸RÒZûÜnŽúÙ¢[T©ñ¬TÕë®ßÅŽ#“Ë4¨/ˆ!éiàæÿ9ÖíºN߬ÎLg@ªÙ)üŒ0£6&2ŒÍºŸ,ˆïÅxÚÉàË¢ òpýøãÊÞ{4¥Hþöà±äu»þ,_J(qÿ‰"æ‹8Ô â$giÔ‰m”®ÀÂoßò(à¾kj¥55¿vÿƒ×aCÍY1½‡ÔJ0¸weg%ºÊ¥Xá„´Ï´¨/¢²Q°¬‘o#õEXMr=l³Ê Aª­0U]z"Q‚Jàñ|ñäë–-‚ ×cUx‰¹çOñhK.a8Y¦ªû“Jw[J%l‰xRÆ´¥]–J’cpZébN/Ÿ3â¨ó©³ï C} u¶f”ýmn‡»"[f§ImЬފŸðHä¶VíØŒ £÷ÝŸšÉ|5ùŸ&ÕÛämù-GÝX n ~´Èæãq;zí¯¼ÉíeAÚ§‚^!’¸vªk[6•ÖÅ ¦üx;Êì¹Nr`ŠædH1ÉÔÖd2ãU{\J7?R{õ¾Ùshi‚У“³¤‰˜Üø`´WoçcµïÊFØUËeˆ¬Úñ1Vp‘ªð[ßgÔ\¢Nd} .Ø…:lÃO:¾o$|Übá眡D•µoüCöß%«–|)Xxz‡NãâƲ•ä(mâøáˆËFápÞZ P…R#mQÜŒFÎÅ>Ý̦g(PJÇl´ÜÔ9ÀH$ ™Ñ®OÀ\T¸¦štÓ)Hš; NH&*.>pL¬… ‰.˜ÓÒ’dâ‚¥´ìTŒ,ýú·v…-eœEX< ŸÈ*`Ïÿ#’è×>G…ˆòBwˆÝgÊk õZ)ÈÑFs–‰À’j$¦dýÀ켸Ѕ®¹ ›a¥pG#—68'¼°™¾ö~R~÷3¾º]¯Ÿ¢]„ë’Âß^[Ç?710ôþØØ€2›±^|„PéÇTÀCë±á˜Øü¥¶¡–xlº²‘¿Ô.†ˆ4íöRi]ÔÖײ:¯ŸU"Z¨lx‚¿ô°eƒÓ3I½À÷¾[í²•¼Åü’ðkèpû¶xÉé˜`â'æ òcûÖ¯Xg ÿÛäWêfÏÄÔK'·æa$#ŒÅžY+ðDrõÅ"Ñ€RñQÔ¥GÝ5&?Uš›vfÁæù^÷+‰ ¢a‰YÄoRT¶IRs˜À)žEBk?5·2*¯´}åb;SXjMñ±dI4´nGD\º@8Bꀟ|´I¤¬P'ûˆ–AF–ø.aÒªbŒ[_ôÍTˆ7U7ºÄ:ç'L7>ÿnøª™ ¯‚yfÀ•‰œºZ_èùÉîíÁ˜w`´tY@tÆþF·úñ.}v¿ 3ýMxHB³Ž“¸Ø·Ôi–KìA›juv@ø‡·­áÎq°éáÇêHQòT}<ÞWÊO·oò)²­dsúLÏ]ª;Uì\îvâ-WýüÛÈ:["n>²òmT³çêP±›I·õçŸ7ˆŸkòÒoÂçp„:ÉeH¾Ãý®é¯Gî·òÄ,‰ñy4†šçRÄİÚáej®¬½K¡)”“;;ÙõËÕØ·¬à&¼ ;=¨¶ß@sûgD7,ºï®ãÕë†77üЫ!ohå«¥„†WÔaˆèÊè4&‡Ý´®É¹C»ê%Ö¹ ±>í×B3¯óT§^R?Ü3‹|›Óñ±àòãÞ„È¢Óm,€C›xcXDñt‘Êñ"ùd.æËµ¼©„Aû$î÷ÆÒä'–;΋ǎ¾¯fËP¸bÚ„ÊX®¨<óT…XOªâš[þ“=ŒÎ´ðX²a0ª©›c1¿bî úˆ¬Øí ¦(┥ÉYÃgKö'C=D)ï9·qGÉb- €èÓï”F’ò\§Ç…¨R&o¢™íGäb³‰Ã¤1íîñ¶êQÛAã±½²Kn\'L”ðAžnzŠ‚o—Îçg¿l˜©PãŸJ~I¹7ê’G”¡@]›ké+”îª+‘dKóôWà”€± Û³/Ë|ñW2-‡ý=&‡\Ê[ûôõ÷’b‹Ét¿ù²t~G@,´„%=¼*¨i+Z ÀÙ_Ι1í[ rŸrV‘L]ás¾±’W‹r7›(ƒu‹ó*1éÛ…ZÔò ‡’o‹¬ÆË ½~£ dÜ߯ŽÅ1ã1xˆ¶n„ŽÇyíñ Ó0ÆÊ!âG\êDGA±‰Zioj´ ·eZñKï;_RÆ*¯—nO§„öÉ=Ÿeòª‰×LŸn5–-·±;õS^w}V²>ò¦²6‡mCk8Bkí519lo€Ù$€Re*eŸû†£,7tu×Ovž¸2$y·]Æÿޮœbá™b1Û¹q¤­>ØÇÎêIëY;5QrD8h· #ø¬¯Bè –PS|É﹌wA(Z„.Ã1@‡ïF!wFoD„_†(iª)+4ãóbøs‹ñtÞ4=†ÙæÖØ–6²Êlƒ­Úa„$¤åÎë(Ⱥš‘mflÖVúÆ®_2êR¤¡ÙÖÙþ”µðU‘És„M®úɲ'ŸèÂR Ø>>jŠ`|ô»æ 6´¶÷E\¶JÿN‰Ä¼Ýpñ?P¢™šŽÐæãZ#)+Z-1¥BM%(ÏÎF%2¸F›ízûÐ8›ÎÊ×1ÏN,çá“­»&$M¥+›˜ íàE-e“R#¢÷S‰Hªµ SI=!³æ"-b?J«î7ªqóêBœrHáÏäGá¨Ô.Dq£Kñ…êäxÎ_,H›/9©R B²½¨ÛxêÞ€Œ [ú£'•³;ÜýÈXM)ç_îØ_+Ðà?3etw]OÇrJ@U™Tÿ´+½‘'•6+‡z²‘uüá)l¯9ªk“Ühúª)¼êpqt{êÄ»f«³S‰‚þÖ#R_—kÏ ÁÅå4†ÖUžóô©…mpWhUY¤? ÙV%1ø-MÝ@]Z¥à0±Ä ÏDW×.aˆL,þŨ†ù뀂8 /`@1Ö}H•Jó¥a€ú› ÜçEµmZ 3yãÑÏ‚aa ÜYu?jõb¸åйË^ƒsf샨Ež4¿ê#ûÎñ~2â¹jŸÅ|œ.Ñ% (öÃ#‘áˆ$Ìš?~:V¶ˆÏ´dÊàß'ÇÔ«Û8ÄQö˜á3E ?J¡z0³ÚH¤p 5V4á­Þ+Ò›¡#BêËsYØ·^†—&Н¥æ­ªeP©îç“çòþB ½¦Ì²ó$ÄL#hrB¼ëòAœVì6Aûœ)orNK^>@`¯÷'¡96FT!ê…ÌO~¶ÙHz6J™'Œ9~˜@Ö6÷ÁRŒM¨¬˜iá…3mM–ö¤[Ø :ƒß(QÉáIñ—ñDE%t^e·Êêrì°&¤(Ñ÷ß\«€¸9­•ѧ”dôôwWŸœºá °/‡}òïbm˜öÍH63k@å¬m?›Gëè› 5à¯+!Ø®½® ÎÔòCˆ–ÜŒ#²ÒÞÔ æ{¸*${í9k˜G §PX.ó'¯®–|2nòéýUÒ¡i†±É‘:"âuúgt»³Œ4¶òˆòå7‹ìV0 ûÎLcÛ­b7lÚæàÄD£ì`E¸/k® Pöç)!Còüøˆ¾;ž¥ÑˆÉéù9ÞZDm¹™§YÉéo/K»*Bk«Åb0½ÁKB‰•pø@„C 8µ|†eûcÿIÔŸ+Øõ‘øè›åÔöÀãô Ê%»[ýB2¥’ ZqCÓ+!ƒp>eþæÀKNîï¤ÅÈz‘f ÏšUËþ3ãðvèANÓ´@NªT6»÷ë¶~·ÙýšÃšˆZFŒ:o(7hÿ¾vʰ~œzØû£„cçPÞç{yz¤„@ƒó)d+Í÷€\õOi¡¿ñÄ9†Ú˜Ü™Ã¨‰”¨™;Ûu©?Ƚbnd–U~7^Àè9àn¾åtÈMêïç˜C·»à<,~íõ‚“¸®%Õ«a¿fSU5'êV0‹B̵çacÌ(¢nwí$‰|±.î óKÎu¦feNØqûÊ_¢´ã¹¬{Q²²Ö˜-ãïmÊ|éj$÷=NMû ª/8 Þ͆ÄËõ±€´H!&(aÃÓVf)ðÀ€–/¾”ç4þ êÐV\ƒp$ƒÙ‰wÓ^e£2HR"‹Üt4€66Z#×{®ÜLè€m¶¡“Çìj¤•å¿J“Ì÷é?5lßGβŸÛÿØämÞz Ÿ:?ĘÉ1Ã)©FÑí’ˆ&Úûqq¾üzãBXÜ_]Ñ"¢´KèÀbb»ÙçÄY¤=}›¸E:}[ÕÕ–ò‘4xë0 VW¼W…ŒúÞOkê'¥=ªZ¥Fê<¹]B7ùºPõÁùå·S¤5Ü1EÄ¥‡0xNªŒÓóä(˳›od qf_s Ñí9®² U5È"Ÿ&0tâEª~ð­Õ¬lŽnÅ™òÂøýtüD” ÿÔÖ6#¯iÊœs=HYPým`MwÀЮ&§ãÆ4â,†¶2¦óó”oÑ‹óg;LöË€-¥Ý âG{†ô0E]â.:’9ÿç‹mkbóø‘Ê,p‘}i&\Í臥9¯q¿ÓS„Û:°×kH«Å8\%Ê n!‰ýú¬SÓÃ'/‹è׫$Vý+–XÝý’e[rÎÚœ±•o|ã_möÈn¿¥r¬Ô:²û”• ñ|1Ô‹÷2[ ,Hg“(­ïtPÀIÉÄ=í¼: }a \`ÉÛ@Ó?õ+sMäÞ"à~“¹;óMæޮϜl]úUçCOåä•´Ë×_hdÄÝâ{í- ­܉o›ß¡Cc­zéÏ%™U¢)²© ×½wìEË“ù»üÒ.öÆcé¶…•Œ‚ZbÇN`IZ:‚¦_žœ|ŽJã{•aãTÝ F›îŠô>‚£³«ÿpH‘…Õ߸ª`¡Žv:Þv4$Ÿ?fþ.2¢öÇfª¼>fƒàÕbèí·PÏÄ)î’s/Þ@7ÇÃ@Ë»H«îznȉy'„zêøx w³>–è.ö 7d8N›(¡r9ÐòÐÒŽ|éå3y4p1ÑP¿ïS¬ Œ§ÈÚ|Ç— o†Ûó˜ðÈgî 8õ ’ :PÈuܸ­>3E?3ö¿†©–}×JJ–Å•¦•GéŠkzž>Ù‡ Êä[6T”€7í ­9ÿæ«4%úé"ÏáQižrßìÒŠX¾¯ ý5+´-ÇÐwÔcø—g/À]ݘÌ¥)ŒÍýôô ¦šê J :±Yàº\Œc!"¼Fî(ÛÅ|!¨Ïs¹Å·¬‹;†É¼j£—Ÿœ·NEu`ÕôâšM+ÆO([—ñ|‡™ÿ[ކ]ˆ¿ |á%^nƒÃ1ÞXgÌ•-m ÚVgFKKçìõ1ÁÚº¨nùJãgŒÛÆÞ#E‡‹áϼtî47²‡{xmïZîaÆì(” ±‘¤«rÛ™Sùâô›ô6dÁSδv¶‘Ž_.²¹MK Õs?%A¹Ø…´ «Öÿ:ÐÅ=mB*ÕìØuÞQS™ØÃC)ØFK xg7÷§áÍÔŽDOáB®y™®è”Éž}yÅfnmÛ™ûhIÀrË«<Ù T¤—sÖ`BWÛAÿÍð–E‚yPÐü,s¤fŒÝV7;ª¥š¼Z5Œ÷•(¡Ák7”eD¦=ÅÑÍJTÈ'5›(ݸ0¶W—Œ6l¸O¸w9ݨèì?H³<+êÂ5.ÔW§BÉ'V`Î#|p!$#y¾¿|™}ð=l‘IJ9K¶bÛcÛ}fÕ…Ù‰¨É4;Q‡ 40º dí@C*éíG°¯#cB´eìwŠh‹õ¼!⃖žRìÒU¨EÁ®WÑEwÖ§x5–/-ØÆ–ì°;…ÅEz[æÝVÁÑJ‡‰X~$-N$¼gjÙBãåä#\×?»hÔ6~W¸Ü‚uÌüT—ܶ-œZ^Æ#‘íüsú"lõz«‚(c~iŽågôý<™Z;ÉÐŪ6VûÜÖ,…ãøs¢xÐðHYy#i÷½ºJV"9C/Öº¾¬ZyÔn îõ#‚U$L/„˜F_ŽöÍš»ÖêèÀ«¢uåë¨Í÷b-œJ äÈàú>Mø|^ùºuòrä·–ËÿÆ”ÎÀïFYšQ[bçŸ\ñ¨ÊQ«Këb—¥1ée4é iû¡fèãfÚÚd–ËîÖF=&9`È_Ó‚vî¹‰ì¸ ®¶ô››ó 9ÐÃj¿Ú¥°ˆù%«ØM€µ?çªáýÌÅàGí¿=i…º6Òøè·Eîá|q4ÓƒGñ)v‚ýSäþшfåH†J¥˜ìúUW³wèÆ)e¸wH¿bFõE žÔ¦V¯[_ÿšÖ®9Œ&(öÎéþõxôµY£–ÑórŠГ;.–^<ß®Í ‰òçqÍ P´*eTˆå@z£Þc„lÑá::¿AÏáÒc[!TšiR‘8f²[¸v GgRîF¥ìQa÷‚:Ë£‰NóœJ‡-ŠL‰VQäŠAëã)» 5‡•™»jî—!õ%ŠTá‹ÒxøºÜïÝEL!ö|2ãmb«ÄMÔK€ò£'f¥]Í}pt²¼£Äår‚†fÒz`RhêçàõÚĘÑ‘©¹'(Ë2æn=ö`€ 8­4ܨ¤4%™t¼ª>—›™5³¢ èÜ’R)³4³êE_›øñdFDÜãJü±Í×~6>¨w€!JlÄâhË‹0Œo½¨«yù…ÂÀ Å…[ŸÉ=(‰T«ÏQ6܈šUcKYQ?Ð é}´]’ip³J±"ñüÏL£0gé~'\é´Æ/ˆï]LxIçQ¶òö[î:óï‚ùÃZ •2>ÁªÕ›%§ä‚EÎm“fÿò/–(ž.K—IN…šFÚ£¿–ñyGñ÷ ÖA°?"=F*%8Â4m¸¶È¥iCмÈM~ùLâeBŠ×-;äLËÜۄ͛ۖ ¥°SCìÈuÊë1‡~ª~2©u0v{Þän‹ RÓGUùIØÇŸ¦p© _úxe>.½†#_-Àˆ=äyêøCDéEˆðJnëz½> f%°lþ‹azƒ¨ô¡ L/o¶Ÿ¨’ðU`.Ùˆâ&õ<Ç }ä«ù|‚¼rü“ ÖÓxX¶ˆˆ†‹àykGleT¬ØB0“{V„Ž9Æ.mû_Jðp¨sð®{ÝO©CC&2Òø¬6­²˜|þn>5µŠ¾¢úß F¨_娙¸`îÂFkq9Ìu„žóÔÊqYò›l%½±úW/Ê>ioÆ×í"tÈ`ˆ=ýµóY—iø%yu©òÜO<¯_½i(­r èKŒŽø>åpP*dñÙbt»vÝHµ ÔR¢ÆŒ°F"˜l~Ô›wx¶²Qió¿J½ä¤ý¸“‚I~^ždºí¹ÕÔ~°ÐåFøí"Ɖ’EÅã½´nýûÒÃ¥j Õ]Ð?õÆó3û«‡i+¤ë§ xò ü…À¤S ÀgVï„’?¼Me_<~eËè-ºAjÊšöf›Ÿ„º¿Dn!òŠñwñ3Z2U"„ ­ŸbYy—ͬH2³R#X?î¢Ó©há“êÐ8ùPì#¼ˆóþ¾ÈD7LýLã!qñÖü´ØÍÝv“Žì¹(‡9¿¼/yòJóX©:#¶`±<ÓÞü8* ñ q–9,T5°M:•e$‡ì÷Ý à¤gCEÇ>JÎÜ8uu*Û+ÓB•ÖáR"¢0`?„CÁ÷iÕÐÊc·%Ê:‚ËÉâìéÆÙö¬™ÖªDÒ¼0ØJÔ¿¢çTÜŽ•6n×6 ¬íyÄ-F,ÊÄá­‰3É8gÕ_~‹]gæcåï[Hõê‚øEH†ß]•˜;¯»Ã3^]9ÿ°äS¯¥u!ß>FTˆÕ£½Ï õ²%õõ‚–TÒµ&øÝ™‰VUÝ~Ïo!Lô¼Ü?gJŸ¶žÈvð­Ù¤UôÁvÒùeå k›Y`6Ê_&‡‚Ñÿ’qàAdß×PDåìOóG+"²Š¢ž!=³˜Tñ‘×Tϰà7ì1òŽýÌÄ>ñ3"…äC}“ö–§ÌÄþ%ÚO®=òm.R Ll#œ5ë}íôo¼S Ö ©í×®E>ªC¼¨Æ:|;ª½É]¦‰ÙACFÊ®÷ÞÂ8ô'.› I›}ÛYáú3P&Ü_Tw"c1E¸Ž"q¿d¤XB; É6V•øL V8Ýî^á=l|µÜKš=iàÚÅÒß°’Àriz™jeŒJÑš½Ø·M"ûßÄtùË‹ñÂg°®Çîqâg‚kÂ9^$Ó‘ m`sæÕH L%i—(¿”ÇìîÞàëP½ÑŪKûÿ‰9g **“Ãpž žS¡¸ { ^Lg+‰.qz¿ãø¶rj²} cT Ùv™jjXBMóua,Mß¼µ÷Yp„¾êz”Hó->ßjVàìŠÚ”k0j¿ñhZA…þõ#:6 Ðn/‰âeÓ@ba±ÁZ«^.šïoÓÑaˆa£ð¾¯;L¦7UœáQø@È‘Dƒ!iùEûü×5³&>2ÂQQÄV,ƒiÖ–ÍEÊÚ%×nþün‘PCoáÄÀ$âþ&Œ‡3DK`QÁQ¢øz¼J %‰þ›ü•Óš|ñ©‡n-­ )Ìô·µÊWè)}­ñ[€c 8’´^ÁHÙïsÔúB™Ã¤¸“HzqýR$°ñ± #±q®6¬’êã'8{FL›Ï"Úƒ _¨hsikËk¤™qKy!Ûw ]ûd~óa¦5¬‘n vý˜Â)ÛtÜÀ-¦,IC †÷Œˆûbmgš~,JgÎ,e]‘¯’ãÊÜ!»T&£*¡ÁÍØ±ç¹W\¡SÀùXf9´­¶E\ö¯ë$ñlÈËòo}¼T¤È+­_{×ò8MHO2?gi%ó¾ñIë·“æ&.Ãó3òÄÄéiä…êIy?é“èk3úò;#þQÁYXä¨e:3ß9ðq¦ƒ®®E%Y²Q¯8à„†ƒ¤~“9ÕÖ#¡â8ñùÀ“`¨‚3ÛxÖâÙòlä›qÁ6ÒmàO_èHçbCtGŒS&™¼°{ß=‰`…ÚÕb_>°Þgý8#Õ9¼Æ”~8hÄŒÕï yç?õ ]9¯ÜUT¸û2]âp™öÌ2L †íϺ³öðüÄMéàTD²[Ňq®(ÁƒÏ`ZŒx¿¸cÇ÷Y“‡¨ÙSJ™] Š~ýyˆZüd»þ¤œ~8Ѥֹ_Kaáy©ˆZ JðE´½U=ɲB¾U `k<‘ Îߨ%Ç›w2ux,a5/à›`ŸYcRáé”ÎÊ«Þ)ÙPWЋe_þy`ÖÜDt,)sÙ šL³Øè-دojÝPZßÓ© ·Q?b´‹­HÓFÅòGï—]8ú>íGâf5»aµñ[¿ˆ Pb]ÿçÀ­Cˆg)ã'X {r^iŸÖS ç©Ûù«CÛ7œ9±—Ÿ…sk¤Ùç†.BWD ü–,¬2—ÇàÚ—JÝKéLgAV£LVlÐK·ßß.~ì{ üBu€+À=ìF– ²¸’>rÕ³”7áâºÃÆ5…TGS(?­QÖ¾  ‹-FòËâF}r-Þ)iîÿŒ×Ž”;äxcï"ï €ÇWB·Éwz7З]^ÉÿïûØÂUʘ§õj Ö”áí±ÈGµƒ#ƒ†ìÄìˆÇŽ@«uÆåÀeÖæûáÃÎW¤è[Zn ï+CÍ7nLÔG.Ò‹hÐ1¬léí€fÕÍë3.ÄJv:ì¹ÂõWqÑ™p¦íäˆ-ÇŸ MûáOÈ?Í$d|úœÁRw‰Hˆ,{Í”ÀÝo‹®"Ïë¢û=J[Ú¹6j;6¥1áß¾="2q ³ý8bØ0±Áã0TßÕ~¹ààµPÊViµ_=NêN(QìÑÓè.±‹o@"ÿ½X1Å7joì4oëÁ>Vä.¼xÿe~ù1]™wœ}#ë<žØ€^:VyÌ/âtÅs‚‹T0DÑ@[06ÄÙˆs†µC{Éi%Ú§¾` -(å  hJq8`W1ß½ ÔJÓB­k÷àÉ,{–pKŸþj&‹o»6¬ÈÀ‚ˆ-jòlƒðõsϵ ÍËö‡Ðˆfö„jmß”¸^Ë'¿TCeÉäXLmtƈE:¢Â.R& ãœ&ä•S< Ãb©é$¥vöõèuI xø6IÅÄz‰02:›DÛƒ‚ÌÖ^åeù«øÓ49œj’!@`~Kâh×åËO˜˜q¨À•ËÔÃ4ør6·Âººmë* 2,^pj¡~oC¡]‹¢!’À™“PøËj4»|Ý‚×æb?åó·»)«‹çöf$y…†ÜËc:_Œ›ßä]ÔE2BàXÝ)E¥%5¾¹ˆj§’¶ñ ÚdÖ¥4íûƒCA’g‰üžZíóÃI«òX¨_*;oh‚áp†“ §OÙ¾‘›ë_¶…)¶+mˆ¤kºà€zrÒXç{›»?c&Øö‰úzU*¡ ›©­Ýt)7å+¹¯ø)³†«}"áÔÇL¤_Ü\Õ©&·5c–ƨ–Q¥ŠH,VŠ=%jBÛ7¾Ò~B„ïKhÉ2ݱþ<è+ejÔ×àB­ ÿ±:­3eC|çyñÍ ¸iR±¯%¾°í^Ï}¸Þ‘XKG¸‘cQó´âe?^†êý ¢„òP !)‹T9ž;zŽoúñà H]}·Å@ÝsJÓ\_“‚éEÆRym}îŽa¢"V + JLÊB7¬õˆ5‘ÀH÷ âŒçÁ¿w}üì$ó‡òk½p—D|¡‚ Ž'j2N¨ˆÖeÑÀð.m DjŠÈy‹÷È’ÉùuŒðö” ŽlwªÄPÓ—€3‚–• ݃dëqÙš<.H“Õ"RA€æC¼f?Ü8z¦Üó¼%Ö£Y=•@^&|54ŸÅ…‰àHËt×*ù¹¤Î?Cí{-B]‚þú£³¯¬Ö ÞLbÈÆbЬSB÷aa?MªišîsH¤Cì~¹:­ûXÒù± é64dþXŸa¯men†r·öJ1‹î®PÅ·W™7ÅØÐoºVDå—¯ÁÃ]ýlUбÝw©4†E°€8Œ!ù¦*?SìÄ8”Ü–Ž@Ï’Þý,OãloåãÝæŸÌ ©Uͬ(ŒéTz*­Kü}E´˜wTïj£[½†Y‘'ÛàùÕƒ+ÙÉ5\‘à—ù‰r§öX©§Kàïôð¯dj‹~— 1¦õ¹z“u9<‡R2@dšhÁxm`ºÂ*>ñ^nŠz<¤Í­EZEQ؃÷¹çów"µøÌŸ#žõS%@÷ᱨ‡ÚSOܹÚ~mÕ ×l¾öعrc‘‚Àå²i”VkÌÉàÄš•ņ£ùuÁã×E&#ÐG~îf[W2Z4¼w=»J'ç!IóÃP§VšÉºF>_ª•´ã3§«^u©ÃWgåuc0k>³æ©Q7ÖBƒJI’…pŽ}æšo™¥ × ”WKûó84h̆íkíÓ-¾<0½ÂN‰'ó~J(Þö0Zî¡5CÚ‹÷¤#2àfšÁ=k‰=1€Ü„T"Ž8K~WBä vzÿëÈrA0Y†´êˆÃP_6kÉÊñçÅ^úœ©ØÎ‡k‡œ Ù•ÐTÐ/Åô>gí–J?LIJÅ´N“$Î <ºGȉ€ƒÏð\R?ì!Âò+ñjï Oa 0ææóZ˨~{]œüb^ƒˆó9ƒ¨Çsoåâ% ½9е ¼<Ê'V-×¥²öä8…ÏþYº)÷öö³Ðxê§(iÖÍÐv÷`|þ×Ü`ïKî–æ5·×ýÞ ìð2&°µóÛ’3có¹€,ãnf?Ä$9¾ùÌ^O$íI ~o[ƒÐ¦+iÝBºJyš2Ÿìqt 7N.AþÆ/Lö:$ ìäþ]ÊGÙ§×LMýiª[)÷ùuÑñçá~’ZÔ6T84wø˜”̓¶mþ†oðw¼aýÓûä•69÷ᕟUÀyÝIr4)‚æžË­Å:Özºˆœ{½ûîJCíØK%qÀD¬i±¾™¼-¾Í[0Ö•g§ŠúšÓš?l‘ âôû„ÆÌQãR~ä—ðÑ"ÿý¥ÁÒ‘QÂú&/p´æüðQd,ORI™Æ8UCjþ‹EÕ„mõªrN Tÿ2LoÑÆµýã—Òà´½ôZåp=»|Z\gLÈâQ¸ðËñlïu Ƙ ½â©L6î†æ¯°jV±í¾º“Q&"jdt¾Ûâo¨3åDz ¯4ûÓB¼té.Z0 *ø¢ßücÃ~´*>ÍâœÀÝ¥ûGê ŠÓÁQ[`÷¤F½óõñ©€¿ôcä8$òýY@„ÒoػΠ®“"³ä1õVGð_oúŸ e™“;ʪ|¨¢6pÈ•`÷"˜§.Åèr}Éû‡Ž¸¼â/q¶àx‚ ó¾ëcãùd8#øÞÉóaëÈÿPåýâ÷khZÅni9ÝïJ¾ò×anïýnojÕÞb¾‹×ýÇOZe‡=I±aŸÕˆ(¾P’"P×>«˜ ·wŽó„›6РE79İXëïQs"O™H _X¨ŠYÎö«mà3KwÉ È^$o„.”ÆP®Ð“!TÕ+ïªo…%glqT…–lÖͬªO é  ‘Þ•Sùl;}®7Òl&®0HÕŽ©SDV‚Á™…ØØB¨h-O2ïõpÀÁîŠsÇ®˜ÀUШ|÷êÂxñ‚dó{ Š‘w±3EöÍ?á6Uv•û¶³£ø˜ýŠ Ï£ÁiTAn6j9õÓUUòì±êàêUü(²ª•ÏyÞjÝÍFh½ ¦2$¯Á°gÀæMCCín|ª=* Ü™È/ÜHÓ@Z_󑾇*ñÒÅQë\Î.ÀPGñÊœê݆¶Z©¯«Ô½o§Š®l³éàØü9¥ÔÆÔ>ž&ÂÍJø¬ÏŸÂI¼‰ì)Œ*˜’PÏDËAÕîÛ M [›Ùø ‚ þδuy«±Ô+PEv ‹–’Zf=ôÅþ<=ªùÈ/vŽÅ'VN¦u\™^üM®è·2`R÷r1$_“ß+*}xæRÍ"Eùä¾Ïø×épÜñÅ–fÖ˜bBøÔú.¡Àá²|V–ð“­­í×ËG,ÉÙ”:³E¤mìÒ& ¡xC¯Í=;\“ņR·³£õ/]\¡ÇBºÓMÞë$âpdìî|G_.h¼o>ËLœx rŽ·«ð"3Øpöîÿ wüÇX«Î:‹»¬³wÒ]~•wGͳ¸hbc†Âe, §·NðJ¬…¶T ½ÎðS‡$¤|®F€©Sí³&r<ïz´;á¨% ÏÖ‘‡ŽÁ7äb”Þ¨csÈêüÁÚ ÃJ¦&gbúàœZÉmµaT!¹Z¤…  G¨³{R€Ì¢ªlÛi[àP=–ðkD…¯/4â/À÷/ÍÀåï([¿Ë'ýËÖÇõi{&j¨«uj7³º<ÙUWVoH~²‰ö³‚â„å ³¼ïò)ûÅOè"&ˆ#lࣙkñÖ¥´ýÁk`ãû‘(r\†è,k‰yWH×2*"…jN–Ý<«)†Pl2ÌÎ×¹ÍM5EÌE»»#]ȸÄqœàæk ÐG£HÖÞ#q³‚wiÀ¼}„¼:lëêË-/\l®š®É=U­jàéâGzº8SÿŸQ®üÓö…!å&`[yʯ1¶wë‰ ­m|ó6kÏXHx¥ +ö`ÁjŠÏ†—“ ZSû!jAbMH“ôõš´qÏ*}:)”h FYDî¶nµºmÏâÈZÜÈ/t/â^*ÊQåpϧ®ÝúöøÈL7½¤¤7êŸ3¼Aa¦ù›þ*½¸tåÒØDÜlI¹B•»z­,½+[*»ÛÃõ«Ú-7É>•ÊÂz}kß««<Á²&¾[l^F[†ÇEx« N#K¦X4`›Ùñûgáà.;$Œ Ír1¥Ç½HÈdC,}겉^vöKFÆÏÞ_ñ¢^¶SbKO¹‘äß[wú&MÔGL2°•Éûd=˜{Oí¸Œ€ð\Ê_$»êi¸µx¦B;¢ ²_aïÛG®ÏSF¯Wê¢áÈÁ SqB4´ž©æÚº(È_ç0þÀÞÜàseèÿCUõ!˜ýÿÝÃÛ[”Hô±Ì¸üÏ‘æTp #Ī#töã#ƒ“B‡ÍØ1ERhøzdý®E.Úhw]Ù2Ö̶þ2kUˆÏ´FfÓàaÌz ë`Âv.ö4**ú¼”So+¬M@±•;0óYí Ã4°Fú”Îdx½8 D4€…æ0$_ÛE!¦¶—/q gª×\ÏŒáAÑvzà'|l2RùWbaQ,ã–¦’¿:ùpž~öTE ¦¼š¼ŒiNðÞõXª¹EBy¸Étä÷xP•èЮÚñsepé\ !ÍoKûNðSÊ.kGÿ1êÏ“ZР¯°î31Éå'+4>k'Å£çS:Ís”avä>rçšxH¥ŒÌ5oAWÎ5[ºžÅ:–ztJšSQ·Ý¨ŸŽ8ƒâ‘Rv¨Ó‚‘AÎrð©bLYj4"q|ªtÕü´¢H¯V.Úê_—J›û[×’·ñ&Ê¿l±imÕ䩯„N%Z¹#ü`íÊl`ÍÓ4 ªnE^â~˜Ñ:™: C§‚ ˆuäw|˜†Þ NÑ{þúµ$C‚ÇÔ—å³Þ‰³õ­:ŽÌJ†EkXºj¾³„}î³ø6¶dûÙs5º›ÃäÖ J¸hIÕ†2½CI endstream endobj 211 0 obj << /Length1 2280 /Length2 12877 /Length3 0 /Length 14263 /Filter /FlateDecode >> stream xÚ¸TZ6Œtw‡ ]ÒÝÝÝÒ9ÀPC Ò)Ý%%ÒÒ- ¤t‰t Ò)ßxË{ßÿ_ëûkÁìg÷>Ï>gtTÚ¬’Ö`K ØÂÊÉÆ!VÕ6àäppp³qpp¡ÒÑé€ ŽÀ¿qT:= ›;ì,ô/ i7 ŠÉX@ †ª`g€’‡#€“ÀÉ'ÄÉ/ÄÁàâàüÛì&±ðYTÙJ`g ;*4ØÅÇ dkæùû#€ÑŠ À)(Èÿâw€¤Ð deá Pµ€Ø ­,Ú`+âóŸŒ"vˆ‹;»——›…“;ØÍVŒéÀ ±hÝnž@kÀ¯–jNÀ¿ZcC¥èØÜÿThƒm ^n@pYÝ¡.ÎÖ@74;@[Q îtþÓXåOƒ€¿†àdãü'Ü_Þ¿œÿp¶°²;¹X8û€œm6 G @]N… â y°p¶þeháè†ú[xZ€-,¡”n“ÔX@;ü«?w+7 ÄÍäø«Gö_a c–u¶–;9!ꓹ­ s÷aÿëpœÁ^Î~K6 gk›_mX{¸°ë:ƒ\=€Š2Ù@!Ôߘ-àåäããå]@o+;ö_ t|\€(ÿ€¡=ø¹€]6Ð6€  ôªŸ»…'qóøý[ñ_ •“` ²‚,¶ gÔßÑ¡0ÐæOzþn o€”~œŽ_?ÿ|22ÌììèóÛü#fWÕQ©ÄòWËÿ(¥¤ÀÞ?V.A« €“““ÀÏÏ øo Ð_uüËWÑÙ ü³\èœþ.Ùó/0þµ L€ÿÆRC™ 0þ&º1/‡ôçÿ3Ýÿpùÿcù¯(ÿW¢ÿoErŽŽèÿ4øÿè-œ@Ž>Y@™ën*º ÎÿkªüsuUÖ §ÿÕ*B, Û él e4+'ÏŸ8È]ä ´ÖA¬ìþdÍŸ¸î¯}s95Àî _7 Ô‹ƒãtÐ%³r€Þ"îPjþ¡Bwè¿ye­ÀÖ¿–‹—`áæfრ=k¨Ä ðã„n¥5Ðû2ØÙœÁ¨ ÚcÀì†úë`ùøìR¿ ?$~»Üo‰À®ø[â°+ÿ– ~*¿%»Ú?’ÔOû·Ä`×ù-A-_þ#qC£@k{Y‚¡§ú7ÊÃójméø_çoÅŸôú'ïßèfÿF¹þB6ÿ²åþ ýŸg…~þƒBîPF€Ü ,ý]'´pK ·ÐT–nVÀÿ¤âäàþ þo.Nh¹–Pfÿm ½=vÛÿ‰Áùâ¢@ƒ[ܬV¿öí·Jvh!¿nÉߘ srø¸ÿ;)?tõyZ8¡‹ûñ/ÜmÝ‚®æß8´Û_Ð êö/4:ÈzÛ‚  ü5´ G(yÿk*³#Øö×ÊÿzþyÿÁ¿ç àröpÿ x8B@.Ž¿óðB#:mÿx§Ý-ÜÿuNvèèÁÖÐgêWÍ¿Óñqÿ¡‚>sÐ;ÎÃñ_GÉ Íé}T€ÖÀßi9¡´uÚ8½Ý=,ÿ=Anhãî èbñ?„æöpþµ×ÿÄ€Þ¿Bkÿûu±þåüŸõ¶òpsƒ–þÇ= -õoù‡ôZ¡.έ„ÃìÂ:nê$ɼX·?#®otE' FñBèç üìT²å§]¥Ì­kˆÇ24*"¦æüɘ¿ßŒ{÷毥+äC`d7¥NY GnÏ{mÏ­Á¤¶üÑ›8'IšXæFðF )úsáü}Ü»ïvŠ»Üw N€Ò+lªt2Hœd^×!ìk*Ú È¨1v<®›Q¦‡Ž¢îÄ#ìkPüµTG,ɭϦQ|ÖèêêÇÜ¡Á î³"åþZ¾š<|_%ª¼±äa‚¤\¥÷î0ôR¼WÒi‰Ô$%Nôkpæük÷3ECíIÃÜͶjÒÁhê¯>µx4‚yçDóúÖÎÈͶrtnÙ1ˆ[“£í^ÔeÐJÑÕZÃ\fžÔr;æ÷Ã> 6v-?©Î€Ëʯ T`—Zb‘^…r›îLߘÇe'qr™¤‰: }+ŧáøÜeÌFéA$ €GJ‡§¡§Fe¿á1Fó‚íòí ¨ê%eŠóÅ^ëǎѾÈS0íw ‚éàÄ—Ù‡Iïy¯¾àè1ËòAê•çÁÝfL y 3Zùyðí]ò†‚ “Ô zÜX…:8ó:*»0™j(Bá’A3ؘxß+(Þ-Uó}* iMâxµåŸ[Ë—ú©h†WþÊ8ß&î>þr÷¢ù$ÿ¥dc”¡ctj÷tà¦ÙÛO†Cñä™=“Gý i»Þ ÍwWð§x–£òBÃÔa%ŽU- ¼¤W‡¢u†,T:.Z‘Ýú>Ù´\Ü¢s] ól»˜î5«¸ÜWºJÉp±Â¹7kTƒèýàÑ£ôe0.p1,&›C¸æœÙ`ìlZP·Å•—‹h_·Æà4ÞÉ»œ^õ“¯â}¨'gWöµº†+ ‘¸÷Ôà^ùÊþRï£$¸»þû«Ã]}W2™Õ6Ä(žõ²óˆVœ"ƒ„ÙOE/5dOU¹6͸ÚÐjÚ*À i~¨œDÞÓ$ø# Ý$þí`Œ›«;}5J ­lÙÔ³Ò㬶„Ø‹{úÔÍLGJ¹'Bã@X-;ÎwÏåò,”ÖL°D:bHߘJK–û‘ÃÈ=mfÁ¡,6Ĺª‡Ç”׎âäVÌkQÔßkLµªwL*"¶°¿€Ê”+ÕG¦ã©Ñbfîw‰/µp~šAfô…³º?ýÈö`¤©„0*ÛAÓ-Èõóß¼¼Ô °àÞ–+w„Kë:ð†¯&C*ž†$+èK–÷Õ|n¤ZÒ[›ü‰!ýa?Tܘ±ìù!ï(Y¼¯1•R85·^tlEìEØÐfYU—1uÕmKZ6Ñ”Ö1‚§–tÚB |®¦Œ* 挄ً¼a±\¬N\Â8KÇ]IÅ SØÊÆ,¯Ål¼RkÅ_F«kîPïûÄç1#ÁGÚ£ºŠ6~ÊãŸÝIÃÑ¿6¨í(kßê̆ßͼ“0±z.RïLÊïÊJ²óL9êÇA]”èøg•Äœ. ¹|ÅñŪXöõÑŽì—,fL~dW8£%*Ä£ë»÷ã {3ÆàöÓyÚ÷ô±Ûçg&8Ži [ïÝÛèÃÂzÙ¿}3eʦÒÙ²À8‡Ý¨þ¾8Ù¸AÜ©M](œ°—öàa £*É{–Å'%г\ä鼜¥³‰\“•P?ÑA>u]gÂŽø™50À/jjhD"&å5y6óÙc…•Ÿ‹óÈòfÓÌ×Y¿J µŠ˜;:÷ÛÊýÓ<LÛü†Z1aÈÖvµÞÒÖøph·EE¶ÉÅžøì tØã3KH¡cJ¦6_Ò“z”gŸY¢Öþ§FÁDm€)œÆ1•¦Ë5Jo"Ùu›ßuG¯pI£aú^÷ЖçÂsAtœxÂf…daR™‘ùM@Š=É1gî¤Ð©V˜IõjŽ¥¯¼´85]ˆ?pµÄ‹j¯>ý3_ÜX‰–ÆíÎû6¡§Î/L#ñ²4 {%Ö ÕýÛÝd¬m-è¹`ØÉt?â"»ÉbVˆÐÆÂk HŠT0&z.ã¬ÆÎ›'Àø‹°Õ19* %_>(¯\œ·ä1e^"¹æ±Ì/[ø¤ ~n/ÉÏy†Šg¦ú)öÑœU¢‰Wñ‘Œá"w¢~òª¢]>RŒe-¾Zÿ’1Ô 4|àÚAM¿Ù çXnAdO* 1}ß¡q¹i]ë˜qiv”k›VòáñÈ)¬&vkßÑß)<óñ¨‚‡DsûAMX¡Ï<ÿ”„%OJÜ–W‰ÅùÏRe›­â¿4,Â%«γ×\QBÂá€Ù‹ÒMûžjßw©åùÐK0¾#åç™4sJ%öĦ²øïÖ1nµéÍþX‘/¯väQ¶!ÓÇ÷]sË7;½—§öc¨ä‹x© (eì&îO«8!ñe_ilYôVé7 óo‹–yö|ˆ‡ëvƒCöØ¥%†ÔPû®õ\rx#²9ªñãÉB«äVj[o'ı«~\á±ÐF'ØÛ}\µˆ"\#𹩬H(µ)í‚ñrXŠ$~~£ÀÉÄ\ž¢Ž›ì? ¡å XøÜTÕ¯'êÆÅö=ßôï.³~²÷ÑÉŽ îoÖsÞÉØ q-ûd+=J’tžt²Ðó!û™ /Bû¶N”ôZ ûäÕ‡¤ÁÌ„20óq†`ìÛĬâëB°}­î±òž·}á6”ˆŸoX,9ëæ~ ÷+æ8ʨœhÂq_·h°:ƒ/:Î:D& :׬Gœì7˜±ùüÁ±Ì²¼4Ö‘?ŠÁñé~&Ò•b´?áäP|m©&£˜ß‚?ÀÌ ØÇ|aU»>þ\ò¹|&0¨ì¥i»ç’ËÌiЇÂ6õf¼ï°]E/úÕÅǧ‡' |G‹q :ü#6êRóÄö ³wšïAä¤[.=WƒñÏG‘Ü“ay}Ø^†&À‘O~Çôc‡¼H§ð¦ôÊšS9¿È¡ªêSŒýj`U2™3‡/Q¥ü;Š J×è÷ ‡úšût¾a3ÄJ m /‹I‹ú¸!Š>]oÙàgh¢RhŠ)Behd¿„$»¸ÔÊ1W•_Ö¯ezž¸©ÏX;ó;£ãLÃÙ†2×’½ºìÚîÈbþ¼¦Baû9Ž _0™Þ"Ù^˜… #…irI2Ù¶¿N™ù ø¥rì²^ ƒï¢áù'IŠ%&çïWh³:©8ýY‰Ë*ãë˜J‡'gû¦2 òG£ÒS!w‘7+­\}T?ð×t#ïüs`ÒioyõÂm¦tc\5‚®¦ýEŸb³¡ßgúxÕý5ú÷ܳ”=ØÚNaF¥`±u‘ zQ÷¢WÔ߾ЋGz$„?çr=ù$½¶9c;mŸ]®œŒl¤mŒ£(¢•»ñ!–šÜ ˆnGJÒ©TÜšsr9û® n’¨«ÿ–üdvz 9È]öM“`¿[ê¹ÞÅ+ÚSAÙ¢„‰ö¢¨¯MÄU{oü¼jͰx¹¯Kä¾ÛÎt7ò¼‘ÊÚÛÊ9’,¯ÂÝètm˜8â\ïY›âiFŠyYœ8ùó† ñ”êósÚƒù|›änÅeFI«½žæ_Ñ;šëïãˆ.º½¯åiŸòÉÂJ&Ø ÛÆÑ>¥¾/'Z™è’ûœ•jUWŸ"J\ÓkCEôŒ’y¬³’ ‘}× q ZKà£Äââël_ «ÖN‰~5zE§Œ¼Õ·b/©>:¥ŒJŒ;bê?QOëI+ìݼøâ@4›„ âs“«æa‘ŠtPRÞ9ÈV:t Qk*ˆräjÀnuT4‰d"R½Á lÑ.Úy2H_tn& ‰CDÌJ˜¥/g6§Nbx°’€ÁúFü@ÿ~Ä_d}|°8ãºëùéqîÓÁb%KªfMP‹Há+§#w‘,Ýý`A*³.Ø2ÍŽ¥Ë-†Rµù¦“ „L1LØÁòÏ=ö&M¸ÎçÜ/Å” }ÅeŽƒDÕnŸuZ:cPÄù¹Y0ŠQ/ 0ï½îùìPîÃ}þs³:VØìÃHñúÖvcR„ÞI–Hph]à'›L0ZÒÿÚ+x‘d# ‡–@oc׎’{åë@ëà@kÂsXKjeÓZxW‹Ý. ¯Ÿ.q6v~Ïýæ*Ã…ÒQ³¶ Es'+Þr£œ€ÝåüYóy¹NŠk—Ü”¼ÙÏYIœänçC<Í/HOENÊñ~ô¾Â"³ÝyˆÁNg›F þO„M‡¹o00>º¾ Òyæ|!›u8cG¯àr"aÊ›°¹h«=NÛøVtãCøYkN·äWI†]FÕ¡ù<—ƒÞ}Ý»íÂfWªŠ¥zÖíõ‰ìú‰djÉV]™é×ù\ñk n+&lîJÒt̃YòY:fÕò~Ò¬ý’h:óÜ8è¾T^Ö÷ËUYãŸOˆ«P=3¹Ò'ÆÇñ¤L ÇÎDxùM!LŠ2%ºì%^›Æ†¢°x>•Nq€ í½;áÜ•®ÉÖ»ÐdÑ©—1?Ñ“y›zb‚Ü‚T!b>¢µÌ›Á–Òp]¯L1:!ƒd’nõ…Ž -7ƒ¥içÏŒ/®òGÈU‚aC 5Rèù!,Ø+y_ae[ž¥ó©¸çÂï=˜¨÷…ïV´ÓÒû<;ÇN.¥_5Šw+…¶³'ËQóé²Õqˆí"Â^°¬(k΄qPÎTM‰ÿpß_;õ+™lÌWR}òzàS_e x9 äÅ9-Òû6VÑÈRSò¾º¦ç‚?¦Q×=$ûÝ\ÅÏîöè@ ’N~¬4›í7]ÄlÞO´ ‘±ôþu ÍÝ1ȯÒVå+·ò20 kU=·×í‰ e¡›ëŒEÎ?ŽsLÆM5a?釫/$‘F9a²Å¾¯9EÑ2ê"šÌ«‰ØÓì ÿdÙèà¬Á[Àì Ä: 7V |c5Ç(´L¨¿ ØÄ3Ìây®e _1¸WÜW±‹…'›«S ˜e°¸¢¦Rö7×TøZôqóÌC&"7%3àœ>èq@@íq®¬}×’ÔSÊŠ%P¶›E}„·4ŠÞQðâe›†Ø¤³íТܮx$u!Q[W}ÜjÓžKÚɨäk•:¿X°ƒþCIQE'ìØËZ†Ð†ï¥„¹X}"ºe ójË*`kûe÷yLnìH1ô,2ÒéS†—iÖ‚,²üõ§j[ˆÈYÖ±~ƒ&g±NmoØ#IІ~`çµÏÇ”X“z’¼6€@4H¿úIévÁ»ØÏ¢Ê’ÐxÃ/'&ž°×ÀüvVCÓk›"ó&v|pQã{ü…°”©f‚zE ÷m7³wc¨‡s;íûuÅ!̃§|3uDàOó/¨”™´=ëæ!¬‚šì%ÛªÀ <ñ…Þá‘ƒéºægϱì¶àLbJ-O»Q÷̸۪D¦n>§±ÀcAÈû*ëŒ&rë£H” V¨KÓ©&)†¬íc@J›<C#fIÛØ-7§úÏTõäF9xŸÆY·¹ôÅlÒ*Þ°'oZ.¸!‘-UO í+#Jûý©Ëšv.¾'ΡæÌ¨ÄØåÃÆà42-€yùÖ¦ÐÐ")$ü¨ö÷¿p¯u÷>.QÈ‘SÆÙÜŠ\@ø|lW†ÖfÈ7IãôbmÊN›Uß7n\‰˜á}Ýõ¨hùÖŠ—Úö›F ÇJ¡hÚuÞu­0¯~³ÉhYŽ*å5îèÉ1jÓí©[[ן‚õ6²CŒÂ.Ô¢?Gm¬æÙräÝg¥Çƒ7cPÔošãŽ"—¹$gúµ®—+òI§+?Jñ{Õ½qÂGªZÕþBûNóþù”´ÊEÑyR+¡w¦Ê×®RŠp¹ÖµzŒWÔa[²)bŸ#ü[„Íá±Ñ=ïén(—juŒŽ­æMNB€°1Ôòº¤öqëUˆa>1§OïY!kÍ$BC3ükê”Ê·–,»½ê& ޵Þ_ø¼Î6ù^6HcwË(?WG"é´Éa´•ð2±)ÕËë3:|uË)w»ÿÜK’Û³eø›zŽçt-y ×3OtTß»mÖµ»1ŽÅU|Kš«œgF9¾>ɳ´ð@Îêe‡YÞ k-É#sÆÁp ¿DQ}±îÓ¨-±»¤Ú]‰Á§6Ý;ä?þ¥Ð¯ SÑgÖXv¡wì ÚÅ­ÜAý½¢D¾§€;-Ó±4¢}½3@G|Ì´Çî¢5|³¶ØSIMÌÕìš) Læ½aX¬s/3Tðݦ§`ý 'l‹ÍGV‹‘@$Ñ¢†×ŸžÞ?¹kƒ|Á¬|Æm++³“n•i‚Iú\ˆ»>úÅ€‹JÝ'2âjÑ“^ÃÌR®ž}-r)U[L¶á¢¤˜”s¯vŠ(—†•€WƒzjælÉs9õáü׉ÍNJ~ð°‹»SÝahínJö5Äm<ÎÜæç¼ñžÄr{µ9´ù­³™þ&O…Û‡:Xé°‰ (pç“È mÇø‘.£ ɹ2+7ÕÍ<µQJz›žù'Ù°bë NHà8û„dÎÉûή†U]ÞàNÞÎ!‡…tÉä ¸ØÓôÂ]_B¸n³©ô@¡„üi3îǸOйê0{k=qÆñûh^qI?ušÂOp7_ÓÝ×_qtá7—Ug[µTãÈ(¤¾K]%ZRŽõÛÿ>ªcb&ßšãŠî™ïÎnŽHЪÂt§ D:B¦õ~}·‹7‰›TæØJg)—ÉŸñ#ÀVG{»_Ávö]ÍÏ}õk…W§ØY[Q¦–Û=mÀ>U³·]}ErÛ¢6™á¡$q:çú±þõ$mÙè(QkÿC”=§ÐÏï)ßÙ½ªÂ“ÜáÅÝbv_ý€yo¨ãèosluÞø&\Š {,_ã*CJÖ%¬E¿%!Zû~ŽŒ«¯U™.¯ÛOùÚOeëz„gE“ŒË‡vå™ ;I ñ®J.H«ÝÅÒ`òøcIH\>B%S7OéaêÍ«Äìý‡Zü0ku[ƒ:öa²ʼnH÷£ÏB¶ R}3VŽLy¨cšË`-贈зˆÖ¨(#nߪplú÷ïƒÎR7¹Ëøó•óS3'^bØÊgt myE¿¼—ƒûùÀµ¤I\^»C²OjXSˆI'ÚÉÇîAKÊššêîjWuª”?θÿÜ*fÉÔ u†9~9-ª±#/Ý_勲ÌIѤä ˶© ,ÊÊÆÎqÝx/ut1™VÅ„ëè¿©ôx!øVÑ4$î™<%¦çg¥4H¢J^;Ÿá;©ÎfÅUªŒc«'¹Äò¸ù½ ÑaÓÈùÐ3äHKz¦Ë€üΰ4XäÖCú¶ålæpŸ"Ý+SF£\Û^“Õiu«\€¯bƒÖÍšÁJŒÅ5Øä¬Ù¢õb¶þkˆªµÁ–œd;6-Õ®ê#”ñd™qK Õ"bmÇù±™ÅèZÛ·àG—¦…ƒ–0eä,ÕÉ£ó‚¬ù!±ßܯHmY¹4hZ@U07_Å'ãUk~V®ÄxòñÔ_-J³Óü#§ÎÓÑš|œñ(rÒàvOcˆµOG‘5Þ<¸?çítõáäóƒæŸB™›Útý‚l–vàââ<óx ¹wÑ ÿ…¬_=o}ô+Úé耰ìÙƒØ6oÃ!83§Li¾1#,_RÇOåò6d÷YÈ©û©µè.vy¶ÚØ·ª•Ïq¨ÃØÓôM:–½u¾—Ï/)Ò6¿[];mqÅ鋘[fT~ ŸÖÝíí$ðuÎÈ?²ì(bü$®¿óº'6xSŸK‡^—Ãõ{s ÏD`Š:„ÉГª8#ýg=™ääÈýü»cŸÑÐkµÍ“¤¬É9A?EHÒ7Õ_¾B"HÛ€l°±‹ù½¼î ƒÒײ1> xZÅŸg‡2¹àáà“݃Û)!~ò8ÓhMÞ=-$oŠÓ¦… ©[qb”‰nñ·ÈëâmüŽ^íÐì/ ý M×Ätâõü¤q ФI™W ËFÔ=´¨|±Añf%¢ä6™Þ—ØCŸèœøÚóš´¥ÔŸ~Œ ;Gµ«NhFÑIÄsÁÙ®29OÃÔ]XǃD$¨äxã{h™Ì‚!gÌRtOW"w›úâÆÏö_ØzsÒÀxWNÖeÁjfAúECh¤±Œ§‰¢ÑNÛÔ ¡8,–ñ#ŽuDšx¸âøW¡\ž–Ô°>þorðÒÊÍøšÏ)äWùù“±à¸RȹôÄÛmäë¹Ú࿾êƒãËÀ“BR'P¨Ÿ‘ÔQnéj×ò–Þle78—-jÓÉI,~ÛhW§‰˜®ÉgïqLþÞÑÛû 9Ûmtä¸v¾æNÎjÿ­—lŸÂâØ‡UÌqNsÚó;Ú+÷û¢±½Ø.£,RþV‡5²ìŸ³Õ óÒëÇZåY=~Éë¹rjð ‡|쪰¯e‘ܸ¹iHãJVùqŠØ²®¦Ì—Ò…¶é¶ŒkªÂO³cÒÝÒ®×.2bñŸ@< ËLï²—©‘v˜m(_WÃyë’ÈÆ„ÞÒß+ÖhN>KÁBO/V¯,T·WÍpî/pëgêþˆ`ÀG£oêškî,”i[ò^ÚäÌ~´}PkµìlÏ«]àËBéq)Uhb˜·džˆÕ­¡¯¸WDÔŸ zÚjó¹ÇùU•Üx'EÆXÖø gX{Å®÷ÚPá“¢µk{¨*-íûf}Þ›Ìi¤Llåš®e”}ÂÆ$cÅ_Îóºv¾âQÑ’Ž®y•…Ef8úSÖ¦`òÞêbC‹+\ zC©eÁO]VŒ¹,¸˜»{8-†N[â+4´‡ÖYÙXG\Ì®½ÙÎÔ"· ‚›o_WÎÜɇDµN8Í/‘ñ,X`|ã³&Fò:„DùÝ©4Í16Þð¾’ÞÆT”eÊõ €;ž ¼^š‹+P zEY^ô¾"o*{·ݺ[âTE°î-îiJ['‰\ïþó¤hÒÔ¤ÊPÁçˆOj´Ú…ÌÙ±’[Žkî*7’"{ü±‡\°Â;2H¨Ç§³gî¼…}— ê=—G` ¼uðëy#óòQ‡ñ “µL # üTõd„®Å>F=µ@0’?6æìó4SëPE›Õ÷Î*‹XžoüãI뼤EÎM^zˆŠ–$]—TèÚ¿SÚK>Ý5âž)Kd)§³hHö1ê ÛìzÉÇWHâsؘÍy2»âŸZSþvëóÍMàÙ°8†$ÝȤH©¾±ÌZ~ êˆéƒ!³<"·s#z¡ñ}÷36æxN\Ú•’hF×ãí«,g¤‘Îõ åÀÞÜíHƒD€§'›Žvñ ‚››|jG;ÐÊX,;õ׺ñ¡H?³Y¬ã&­¾­i|·Ä¾m›ñŒ^ ]ó¯—žå3al’•§ú÷c‘ (Îëî(ÉßßËLÌ&ôOå†-´á.®(3êëžWÚþØ>ÍËŠ kφ|ÎÑûSOwÎæÿ»îIþ@Àçûr„v30Ž7bÏþzRZ¡ÂBwg6ø©€>:ÛfíuÉüÎGÒtŽzêã-g6ÚŠ¢D®YSÉ7¢|Ö!Æpô"­¯,Ößùm¸éD‹Æ9^$nr ƆñeÝs–¨J‚Bj¾Og†Ãç#Ö,ðãDçÂL ¼Øæ;E_óÀ`QU=úptò!ˆÈÅ{UŠ—¶ÑYF_7éR$‹ª;¬Î>ðM~ºO—ò 2Í$‡9»g‡ë[J“Ó¾¢ÚâØ¯h©Žes-¹y¸ò“ôÙ?æ™($I¡ð‰³\[4P&Œ´E¤\´$×ÂUóvS{b\O¸ç®¢ÀÐiW±œ_,ó¼3ƒåyœê'gy¾ûPÔãñ€ÑNþdZBOC0¿¯ÌétÚ©*ÄfÛ5õèýΉ¨ÅG63I}ŽU÷c×ï:^6rŸä» “2W®†> zÐ 'Kf×´/ëë2‰t’D5ؾ£@÷d)Ø6ï±o_Ö!ãq¶6&n0´¨Ý®ÛŽGMƒ²‡Ÿ\Úõ½ŒÆ=?[:(‹ŠŒQg=°\ì¥FO¼8×$@a¬A»ôdÑjé÷ÑÐM´pÿü∸’|Kƒ±Ì?Rê,Žœö‹eŸºòƒòá¹m£7îµ}äkœ·ÊõÏ¥z–c:#³uçaUÌæ(ù¼²}®L^)Q߸)æj ð3Äõ °jÕÿâFF+ó¡áì’×3n~E[ò)1SOq' !~þ}é'€ØÐ3#’eX>ò£Á•ü¼êå77¸ø¨XeÏŸè1÷m!)Ã;hŒÊ^ö ‘ßm®Ü³ë|}åŒÚ‘Õ¾å|Í«Ù(²ìT2Í©†tOh Xª¾ÐÌ)Ù7öë;ÔRÞêl T=¥Ø5:?Ñ8zŠï7Ù.É®pDˆy”¢&ŶËëeUÑôoÂ&|æ´“…¡B/‚IŒ³”V…m7¾ÇGFŸÈŠS»¸êð1.øœ±šWÄ{î`FÔüƒxzøržéزaî¢ëÁ{q'xt^VåŠv’ª~žƒZ†àP)[jÀg”¦g­ØÌß^¬Àé-’ØJà¥?/£cŸZõ½µÓßcöØkGrh£yÉÅ4zMÝçéó½F9?ÀC]¢F&Ʊ?eSMw¾™ðö“#Õâx°{®9ЯÚD6¼:°‡hýE¶ ‡F\|i„4€†Öì·ä‰T$Ä™©Ž´LÅÔ¾í¦”ÌÖL­Ž™|¬«r1káù±€l§"#1½­¥/÷E´”gc=™VL ¥h§~°¤˜M¬rúû;Æ’ÄÛú¢Tÿ Çp3"îK/™Gú6í*­‡uôW‘i²Ï×{Ñ›£ ÉÖòӘɉŒcŒ:ýŸ”ó<)½ŸÝlò`è«zˆìäLš@u0a‹ž.E§xŨÒG!èÒØ¶q5ldü™H®üI—(±‘ª¹N5äíOü?ø§É$QȘJÐ5yÊI³–›1øÞšP˜‚‚Bó©À·5RÒk¡n!O:ƒ¢Ì=PÆ[&[ùõ'fø¡Aû³ÖÆM¦Ÿ´}YïD¥tÈÙ¯§äÇ$VÒ`%fº‹×òTHmØ‚4Jo4ùßRã¤ó>zµÌcbE:Ã8üü&î²êbÓý€Ý;’U/Ù”§]6¶Ô…AF/C'<ù,ŸÅ1Y€öø¬¡œ°·bb†«ÏÉó¸åa{ÙÅ&ÚhV;Š8´,./úÈîëþe“ÝÃᮆÁ"ø²|º€^HWK0|‚ƒÛWýøÐñÞ˜„(¹ 0´¯J.t7Hd»'pòMÐXÏ À­÷þ¤/ KüîmÂÔ,jÖMP‚áfû³.•Cžý)R>Oe´‘H¹B’’ r©ÙðræRN5žÛKzܱ`šâ§„ÕÛ(Ò_]`è†Èµ"ù@̃Æe‰x‹ùªê’&ïÊ=´Š8ãÆAŽä+S’„Ê m„&iûŠ…Ee-ë̃u%|¥iË ’HQöN‰ö¹nø°"LQ"__¹9ÅöÀÁŸ)Ç—EE³í™6:j” ¸Þ.½8ñEn9@NDWü"‚A-¸ËFå' òcvžÔÌïÕðc v›ŸRUŽtÄ<Ä—Ùלå2aûX¡‡÷Úʲ‡ŒŽÜaþ9 +]—œºzák­Eú>ŸÕnîØ´ôéªç…vÏÜÄ 1^AZUßÑ Ú™JoùœÞ5h Ϩ=\ À?Òmèô®j¢¶ŒRñŸÙ$¶­[©¡pš}©üIÈ›[w„Ó¿n%4Û®gПYrÔTí…´Á$ós=QźÀ'4÷ëOy_ák¾Ë‡ÀPÖx¡€“Ͻ·QŽckcI‚ú§2{ä_…¼f ç)dŒé‚ì×Y°ŒßÀ‡æÜr÷If’W:ð½5ÌzßxHžLþj’H( I(¸—KÉ®×ýAΐ¸g“*lËೆ»Lð”.m·‰àír$J‹ÎÍÚ÷G2'w.Ô1Ê;³VKnæÌõ.<ù½jŽ vß³¸Háj˜›s ª§·¶ŸI’@#çˆ"[©ÜÓ6x#q2â\ÅmÌ_°Üi jËñV#eq¬8—óÎlÕÜìçƒb˜%²©}ø‡wÜFjŽTâBŽÎ÷ùD¾æÃž·¯&nõ)—¢™ EX¡ýc’9tgJOÍ[(´)•Jç~G-ƒÚ-ÑÌT8û¼ì>ç’—°ªšŸ½çs))]¾ ¨®F³1t/IY’’]œ¢Lf,:f!ÏÞÁ“TùÉ:|§*´ ûLF½ûfõg `)et[g°¾ÀX‰æãyU1µTvD‰BQz#‰µ¶mrºÕÄlx‹8ºÑžØÇ3>Ôø@ú½i[ŒàVN~ðÀ£…’°«?{+‹‚žM­!hÞÒ²›!ÈîI'seæb¨¦!Lâñɾq>××]«W˜ä¿}jj¸N"{®‡©o})¤X Ï"ôúé­”ãúåã45z} Ç”q•ÂëHOê› 0MU¼ÉÞœ¦µëÕT,dOUü‚Ä$Ö¸Àà xYÈ‹…œ®›ƒw?¯õ@ý¥¯¿x°#Ñ@Z_ËGn{Ìœô}Jwßÿl¾]pŒý:OäPåð¡­1™áätÂÀKYÆàGP=â”ì˜BSÏNg828-Ó¬ÒÑîùœ¹‘(%ŒB ^U—*7 eê<ùâ¶ÐæÇ®¥3oº½%Q~â8=h ¾«pˆx&z ¯T-H;iEн]7õ§V¤¥Ô½ IsåÇ£—€Y³† SXÛ0d!Ê9…Z­å½µÁÈúµäüÌŠI NÔ˜ý%>Ú‚E› ÕÈÏs* !E ; éfB¡·l!”5ó뜷z-X÷*Dd˜ÖçWÈrq){X½5 è…”&LOÃúå YhÑ-^T„<—2-gÄRJ–¢taðÈPÀ´Úݪ|ßB9¿¡xGä¼q'r" ?üm{Dl{ù•½:"ÞT«üa`•xòdzqK•q{d«öd<•Œf¸ð ßÒÍìƒNÌà ¸´L~Ç!˜2ä4N°Ýí䛿·6/(ÁBFLY²÷YûüüG?|AêJûSS§²À;>#ó$Òè/þûÅ/†P<¬!µ_Üó!¦#sÅÌ«{,Eª%Vµ¢ì*™ý0›™=”‹§çÂKdËùóK*"íHB,w•²r+)às¡Ô]}Þ®çƒ,!„ñ?+Œ)ª”Ƥ-)ÔpHUoÉŽEs³êÿ9jÁ" endstream endobj 213 0 obj << /Length1 1489 /Length2 6896 /Length3 0 /Length 7910 /Filter /FlateDecode >> stream xÚtT”kÛ.]ÒH HÃÐ !Ý´à0 0Ä Cw#%!H#R" )!Ý ‚tJ· ‚ÿ¨{ûßß9k³f­wÞçºû~®ëegÕÑ畵FXA•p/ˆ_ ¯©o" àçäãç bg7€¡¡ÁDì†P¤+ —ø_òH(…ÆÀ(´Ÿ&Pss€  ¨??@€Ÿ_üoGR v‡Y4ùj8Ô•ˆ]áì…„ÙÚ¡Ðeþ~pB¸ qqѿòNP$ †4Á(;¨º"ìÐG@`P”׿RpJÚ¡PÎ@ ‡‡ØÉ•´•æzð€¡ìzPW(Òj ø50@ ìý3;ÀÀæú×GØ <ÀH( 8 P¸+: n EÐÅúªmg(ü³Æ‡€¿vñþ“î¯è_‰`ðßÁ`áä †{Á඘# ­¤Á‡òD=€áÖ¿ÁŽ®t<Ø s[¡~w(ÉêÀèÿÏ‚„9£\ù\aŽ¿FþJƒÞ²"ÜZáä…£\‰~õ§CB!èµ{ÿܬá÷ùë`ƒ[ÛüÂÚÍøsqƒª*ü傆ˆþÁl¡(€0¿¸ˆˆê€zB쀿Òx9CA¿`ô~>Îg€ z¨ÌŠþ#òq»C(¤ÔÏçþ}"Ö0 `µ…Á‰þÉŽ†¡6ÎèËGÂ<fühîü¿~ÿy{‚¦—5îèõûïûËšªëðü™ø?699„'À‡$ à@臨˜ÀïßitÀ°¿Úàÿ'Vnƒˆÿ齦¿;vÿ‹œ‰ƒ ðï\Z4k¡ÎHnÎ/ÌA?@ÿßTÿòcø¯,ÿ/’ÿwCJnŽŽ¿Íœ¿íÿ‡ìsôúËMZ7Zš´ àÿíjý#ZM¨5ÌÍé¿­ª(0Z²p[4™yAB|üBp˜«Ìj­CAìþPæþø—Ôap¨ÂöëÛ‚Žâçÿ/Z_ô÷ÃÍËß&(Z>ÿ®«‡ ¬éL@XF"Á^Düh:  |@hAZC=3äƒ#PèzF?€ IôëZEÅ@­_Ðï“ vEoæê€¾»ÿàèê@¨#ô—âþƒ ‰€08Z]0ôý ¢ýœ`p7×2¢g´:¡ÖÐ@´¾Ð ½ó_È¿æ¸!‘è*¿i‡öïóïê …ÍL! Cí«B›¾WÈ2xð~Æ[ZiyoÒ)Œâ˜~åc§Ÿ®<î"÷ÔºìÎàKÏÅácS¾ ÜßG<ÍÛ3ƒSTrPŠÝkrG¼¹ý_Ûm¡ÌÖzÛQÑ—ÏÖÈt™n?5Ã1»Ÿd4õ3L´CpóÝFþU‹ë¦©ø.À PøŒ5…+›Ý²‹mÂʶ‚01'‹£@š¥º¨>½ÂІÅË5ÅÐ]x­™Å¥ ,,ôeöt¿ᩬ'Ž€÷Ä #qû¼È«ùPO?­ùÊÞìÝÙ¡ˆ»Ù¦EøqßÉ]¬‹kŽ;¤žmñ^ÚMÆÔáÃt09›àeóY‘o,…ÐKÏå³¥fâ›AŒ·DE¡äÅœ…±©/À ûzCspg»Ïé¦t6ÞÞ'2Qê ·¨fè.Ù"M.jÕÀ(—“!²Ö‡á81Ã'|_A6Ç­çBI²Õ¨äÈ'<î Õ¿’¹"óS8¦q‡ö™J¾LI.\~»&Z§ õñ5û‚v^úVµÇtW ß›¿ ÇKÊK­VêšÚâ¡ÄúTLͼt†i üù˜ÒNs¿;–¦ëÝR‡V¥i qæôn?þà„ßð‰›T”ÀEØõ6öá­#œlrÎ^ªp1A LII`hWZ‡ KöÅU³D-Nõ®üL %qw ¼[¼!‹£-‡^nL¢ßƒ˜È ¯!Ê(nŸ¾·ø_QXTcÙ~5Ýjü•…ïLÆfl›ýkhbýû’Éý#…|–:™ÉUÒZá÷ ˆžáø?n\9u£Öñ=ëŒmDá³ËÊÁ£,ÃÎTÃÈPhάJl&Ê)k©oÑÌOò|MôŠd¶1V[cQÔß0ß5'§QPùª¢?6¦Ü/pq “öÛg…ÛÏú÷s¾mâ¢ÎnÖƒzßî΄mwµí±N‹‹(Þ—ÜfNÞép"àà:ˆSk!Ö÷ b©ÙÛ/]þÀX²œ]=‚34ZþÒ°aG-å‹Ëƒ¸Çe¦¡ fjŸšuÕéc²¹5^Š•¯†UOäÑ=â­Hé£þq=;g‹ïÛW¡TùÔ`å‹Ãa2åóÔ¬ñŒÆéØžˆ£²{Q,CÌYýÛžVÝOCL‚–ôgÃ>Ù“4=ëàs÷ưøÊ0¶¬>Š >®þ}ù+?pt÷]ogqHßÛH×2)Sb%OP9&Øæƒð|çctr~H¤¯ŒÔ'Ö1}£¿¤3&y §Q…ú+ÂÇëÁØzUúyÒíZñÔw‰ŒoŠÇ·^§naLÄ,ÐP–¹æàˆÛ!\³’ Á÷V€©`dÓ½lñ×É´ØìDP—¶{ÜLS¬× B%úi_î–Rzêkž*Z3ä·óDN7‘¾¨·¦ç‹åGfhÞ‘›µÓõþØ‚õPôlcÃx„nû½•ò³Þ@¨âÒóìÈíÉ"NÌý2èÔãPab÷’ñcx˜@z¤y'uE«”È‘qÈíJ¼Ò>{À¬5ËVFu©ë裥Cz|?¿7Q.Š4·‡’K½¬òÃÁFˬ°Ko×õo=rÀr.ÚëFƾ@šLNh¯úëÑò¡«Ôa¦c¯Ÿ!Û–`†Wþ¬má§ ã¼ ìæ j¡…©Q¤ò†YôìáÚW£ãIbzLAkÉN²w y0Z”¹exEÁH+°8'*a¨0î€4§0=@Ì™ƒh(0Û¤E ,­pªñÝšvÐ-]K4 GŸ½÷¹¯ÐµðÓ’ñ"æ–ê§—«¼·´¦‰þYìŠ$ ?†eÉ(a®²³rì匕§„% ÚˆåL9^n[‡üÔÔËàÝ~À_¬tÇb¢ÎĸoòMÙcl×í Ï’;öÆj¹Ú÷G™”¬‰‹ô•ùC¹¼™î!²šxîQ×M‰óÂö”º–/‡øÍWÆO‹pz^F35Uåsù¼t±r³¾@dÜàÛŠPŽÓ¬t‡q™ŒH‹|dÝ5&Yâk8àô ×ªÔ d. u;~«´¤Ã9$á#}É£Ó©;rˆp)Å&gCáyvùJ£ôÖΤÇdÅðÈš¯Ü.ÄB‰~ùi†C€+6,PÆe\LfêS‹]ÓÉ”ë5E^ñnçM‰;¿LÊ+)|‰ m„8búFjyfkLí1GÛ3óVwNy´Joj?½{¿;ò®ó…TέXʵõ/oÖW¹˜ÄÒŒ[‡oPÙasÞƒÃÇq´xýÔwÜÈåER­’«VX‡Úî€Ï1q#œ?Е“´.¿¼ÅÄZõ$ê,µøÖà°ãÒñøåÀzÁhî~}k—K}Edy´ò›à4åa2\IÙ†³ÝiÕ-§E£ªµà׿!wzw™dsß]ocÿhSh¼ ü}<ø-Ãgɶ{r»l.:S8(Rfpj‹^Íä%\6[†à9°~MÌ ŽŠè£÷ëèK ·„Cï·;•$4"Ò6FÕu}áì0‘fÆ›l‡¦À„u–‘ϯӥhŠ TÇÎ4ÿ™¥Þ³ÛBY˜Üd<×Lº²º;ü ؾs)q okŸ¨Ò¯Ï•l~Š&^Ìä&|Ñm‰£·ô,Ï„«FK¸5BdoÂr¯¥Ð&»4iF笯šßå#4t-/ ìÊo;/Û¢Ñv{AC&#y&¦óñ±ü¦uËÁ§¢Ë®x…Ô˜> *á©ÈÙDbËgŒžšïÂzZ»cÆ7]ZÄeÙI”+c$“ò© Ì¥j7Œ•Û·ˆ·4l—µ†µ¯4w̪›²èWm™y$ýºdÖì} ®fj{³0¶ÕX¼°ëîYm‹N+HüÜÈ&’*¥äo+cI-öíÒçôÌÍî³'û¸Pªo`+>³ÜÂFÄ)ÞŠ,¬Ý¾~‚]W̬û2ê¦vX”¸6Êv×Àg\8ÆÙÿ¹J™jÎc2’òD@»Dð„®`ËæN¢1Ýû÷šgKK?ðµó1KÉãÞTߊXŒÑ™ÃM* ŽVÁ´zx_˜éÓÑYù‡ ÊýIbáYÍë{K±Ê?êcêÛu¬¤æU%–Ü£]x࣌¦y¿TÏÖ®}}«ù ‡9°é•±åY•êXU¶szp[.ø I¸Ü.{Ïgñ7?òžì˜².Rž}p¿ x•MŽS¤-D§ã„o5Žõ‘†}®°Û‹‰ÐµæåªKƒÊ‹²3ìè܇!ö/ÜÇîôûœï-ùÌmñF8ð¨h“âV,] ÞDhI( ÐzÅH¿s)åÄ]X<§ÂÃgâthÁ•ûzeQ‡Ðÿ¶¿8dô¯d”X ®:ÙÂÞgw Ô¬ Yö‰«uùŒq‡1´ôSÀ¦ð#¨G] £ÌSÓyÆŒ¶o}ÕÃõ –”¶Þðe/¥¹½ÐÑ[’#-à4É]¡±}ð®£G½fíj]‡5SVÚ€Eï×'(–Ê«¶T¬-LpØçGŽï޲š~îsè •æ¥‘bÀ¥ÚO©¶Á«'Ë­ó¨ŽÕ­õÙQí>×À\ç”;ÎhRÞû«+6ï–a©­ñïý,@–f^GTK~§T$&ì–Ðr£9P ÜP]:ãoI® ú¹-ÏÒ“¹î=ÛÛºU2%:z3ÛÉᆭGoö´¡†9æçùl7W,O£„ïåób8cP Š ŠÁ5ÎkTäïF䫟ṳ̂öt{Æ©Ôéc¯¬ha¤ýV4ˆ3ßÖ/^s|f’Æ·ªœûû…µ ÕH¥ÙNT§Å(Iät$ÙzpÆ‹–¶+dî¾Ab%¬BÒä h1Ëðt¸–Q!´x—§¯ãPÕ3âòóZRâ³–NíÃ%6ì8Ùpc5!ƒM“Œ·w9øC˜L|¾¹ Ãí›ËÇägï!9ZéWI‹Â>h vUKš43Otšæ¼õD˜‹g0%ïxõöe 0rúlöÄ¥¡û ÄH°“öNJ‚ŒéœCóŽ…šl }6 y#Ûý“ïüv!3·eFØíÒoš«%~z%jÃv ªïé”n»38dQðzäîJÌLÆ:–RÏz}¶pþ:7É×cþ“w£Ryø˜Ø¡•[Ølëk6Õ‡™VJ­ü|nÓ*u‡ŸØß ¸À…¹ƒ:ÖË‹êEH&"“h:ÝA^\D³£ìcMXû(ð7_GÇeôÓ3ùËœëM]q:²+? éü`\¿˜Ã Ï Ì¦ê « p\ÿgì±4þ=Cm‰è:‹{µÜö(âVQ‡1„”pÃà]*©©‹"ÌóÕÁ·¾Ý#¡]duýÓ¡r]¾Ç~tc¼ K"é<-, ÝQ›ßlà¡ÍÚ¥ vŒ7ÍÕÿZ0[-*+Ôn¤“é\‘™­9RüX¯­"¥ ?Ðf/ާ19¡%ô%¹µ—»Ñc¤$xЋtØcÚæNQÕH8× ±Ÿ<õ]6›†ñZ¯Nf‹Iv¶K¿Ó“¼Q0l.Zh„¾@ ¢(£ÁÄñu†›™/)?޽y˼dYâ¬HI³*\Œ´½G$'\]bAGˆÌÖyò@ÂÙVN®}.[©­vŸ¥ïcïsžÈ(úÔ–rž]ÏGRܯ‰zjpÙºº2ðòMÞÝNÂ>ÙGt`±@}6ýÍÞµÇùMìD»Ï`¬ëm—y:!†^/M©¨È·q]§(ÝÈõVÚ¢ü®/f8)™Pñèv eR"a–[ó`ºêrߨв[ŸìjiÃæ|fÞ©‘~­âý\½÷4ɳÒPág)VÚSçÃ[Œ<__I»*Wéíµyµ„K/p1 +•”[Ö²š“[÷®‹’£¸Ôç~tåE˜÷:¬óU쟑¬09æWëCÖ|‘×ÏÍž §üÐåˆ(f¿î3~‡*Ë6C¦«3ê5X ÕÎtëßòÉKbeùÈ.H±@ÃGâ·D4Í+7À:Ô¹˜v³öâGlö*ˆ9 ÓÿSHƒ¤¦èûÀ™ð>Çû“£ò‚®ë®C~Ù~Í]‚C\^p¼çoÅ„)±K×ý» DÈÞÝvü–9A*€¨m`Íá)'ê±t‰á ï¬Ó&³ÍînÛÖ‰¨!¼fd Îa–3,Íl_¶O¤!½L „‰Òï 3‹Re åÖ»’Mç$½jj·#’)¤“¯í†ê'›Ü¾íª«uì7Z|ÖŸÒ‡ÜjU?õ°¤´£=­V8 BU€ª™²oû¹`G÷~Ô?¾õûiâÎçƒ`³4xÒ±)7•yïû˜Ô³`uœf¢%àà£ZÙ¾ÕXÊ<‹rÑÛYzGÓ!$‚ÚSDzkrõŽc>®Žw)GŽA碀µ‡qzËèú/ÅM¼n¸V©’nFà':Ì ¢)G±Ü°–.©í:¬y%±=îª\ªev)Í2'¬ð6³¢áÜ'X¢u*Á!Àí‰>¼Fè‹2`r$!Iq ‰e.„R”ž¦Vh[¨6 ±ù<õ5BãÖ¹|Ò½1»t"¹¯·»K¬Ó£Ÿ}¿×ødaô|ÎÕE,´ì·ìfÉèm:A#?†fÏññŽ–~yâXÕÓÚR&–{#”ŽAMu-9¢†µË«\4ÖõÈ› õ¸id°ôèÌ"É~´Œ&7=©©©™‡ßõBn·oÙŽ@gVò:J­&Øú¹Š(²K t›Å沘õ裿~íS°–7Ï ªQêÞQñ.¦Ê?X&Î[Ã8³‰¬d×QÓ%/ aLzÎÚk:‡ùì‚„žŸ¾Û{^Ö’þBèñãv?=‘¹ì½\ëÉÍJóu é|ˆDgS‚þé$A©çöõ1ÎþvÌ[ÊïX’™H÷Y8‚çUg"m×rÔK–x\¬×»VJõž˜Ðï-5Y¼Î»c{E¾¼ÀÂê¢ÉïÆõt¯JmÅÔ•©,ø«Yƒ¦§Þ…F!?¹…žxv0íu½ÝÄl¯&Üt:ny}@nÙç6 §nº¹¿•vÔ0ò(`ÔÑrÉú¢¼ë&pJxýâàÆùáB¼w±jµ]A¾Ôžj›Zõ-&¢…¯z?3Û27Œqiyjh0²Þ±Ç’+uMéN½K‰ðÆú$°hWm«¢O|*LNüƒo(¤/D6‰oõ¨¿<Òµ;s$.úÜ}“TÈœeVÔØN÷l+‡ÏÂâGÍÈçZTRÀ´l1•©,}#s^y}0h¤6´vf =½5–2ŽãÃ}² ïñ¤÷>xãÞ–B[9²ñZ¨Ïk®¥ \>¹ñ|zÐê ô|k&»ßÝEÝr5«íB’w¹lΡÞ'x#0ïa ïnva±ÍlÖ+ë;°³Õ†‚¦pm×/Ö0>®ÏŒ˜†§¤Ä ~¯Î忤×Þx }lxùž&ʈúyÖ6+þû}\|óFÒÒNæ üB¼m)gNÛÛuÃ0Œ9윗_Å‚«oÎ÷›ßëÝŠ¥‘ÆCè’†]òöíî¢N¾›}.¸El²¹¶øÁçvsؤXÒ4‘*;²É½¤4Ñ?ïÂ\€¸ÅpzÍi6úŸ¼âš²@==E9)i†'7žó·Ðª‰ðtœ¤O.j0…޲mv™LÏ+¶~àóz-ÑÄ5w1ôp%€Wôpý½Û¶d•WŽÔWnâ£ÏMã³÷ dH:ÊéÎøýä‰r `ŒI ä¸Vü¦ …™‰> %ƒ-t 6yÒ+ âàlÜô§±pc¹1‚Iæýhãr”¨ƒÒ¾‡ó<¦ƒjHÚB÷Žýd||@Š;!¨?JñÜŸ~Y§d¨…dÌ÷g…ïsõ+¶j‡¨=5ì{„iðª%³¬§;D³?“ø™èœÌs¼8›ß¬aŸ%œPwÀÝü4±ìQFý¡ƒc~gè½’Ñ!t“)ËJ.ÿK9SœÃ+K¬Ô«fÓ¤Õ™åÜP·©Å[x8ìŸ6çäÒ× <£Šw ['ìv1÷BAžßG}i:ÓÔjÍ^ºïëòõ^Œƒ0™‡¨Ýqß“+Ű²,l"ISï–å(Ï5|y¼q#rø+dRŠ âFïÙT& "E hevr°/ÿŽüQÝUQ'|'0XaP9¿ÜʬýÇ2£lAdáÓéÁE9æï%Æx“ Ñ.}好ÂÉtÄŸ=ºØˆ6ÌV¥4R¢ÌÚ¨8ôwYƒ.î,-ë¼,Ÿó¾E÷ ŸçA˜8Ó”[æ‰#CÆŽôýôše9ÆÄŠã -N燶^W#jë:5M{9BÄ&l‹t¦ÞRöM± E~0-£^õŠ¡›Í€·É(¾Û7C§X/SK³Ûwäb{iô|®˜Kuôõf¿‘¯… ¶-b&ÅþêQE `¢öfsl-q½‡ÙãšJPÐà¦rU›:{óI'”· se^³&Q¾ð0¸Ó…£»Xktô»Q¤Ý¾ò9OÁéF(U’“dêÑ¢ŒØöHᤪ´ÃœâXÁ`‘kõîÇK‘Ëpæ<÷½{3~ØÐ~õÑWl».¹¼¾%§ÐFñ™ÝÀàçàvÀ“Sªr]yTŠ˜ðu¨ p™Љë™-X¥ò€Ú©ö&çV²Ô|Þª£ì,!›o¹J,Qâô¬)@qLš2ËmX'ñó…ï‰Ûb–vÃ;ö]Üz8J¼¤ý¾Tbõ“ªû‡PÐvìeIló\,ë·\ö.Z{á«úÐë–|ÏÙm¨¾öI[>ëµH2BÐPëævhÞ` ‹K•× 5žÃÂg艻<, ð1Ã0ûHÁÓØ~”L}‘¥•Œ}ÉÍ”šö;O{Tžb/uÈd •1]Ef&ƒW±»è%Ã'¤ö™˜¡-JÄõðdä6³|Õ ƒÉ£¡Ó÷ Z/1§¤ã{i)7â×äu2%Rÿ¶Wë endstream endobj 215 0 obj << /Length1 2415 /Length2 21599 /Length3 0 /Length 22992 /Filter /FlateDecode >> stream xÚŒ÷PœmÖŠ"Á!¸hÜÝÝÝ‚Kãîîn‚ î—àîî×`ÁÝOg¾™Iæ¿·êœêªîwmßëÙûy«É‰•Té…Míöv.ôÌ L<Qy5if&+ <9¹š¥‹ ð?rxr  “³¥½Ï_¢N@#LÌÈd(ooqµ0³˜9x˜9y˜˜,LLÜÿ1´w∹Yšä2öv@gxrQ{O'Ks Pžÿ<¨L¨ÌÜÜœtÿrÛ,MŒìòF.@[PF#€ª½‰%ÐÅóBPñY¸¸8ð02º»»3Ù:3Ø;™ PÓÜ-],*@g “Ðð»e€‚‘-ðß­1À“Ô,,ÿQ¨Ú›¹¸9 ¥ ÐÎäâjg t€²T¥åŠ@»Œåþ1 ü›3óÃýÛûw K»9™˜ØÛ:ÙyZÚ™Ì,m€E 9:€‘éoC#g{¿‘›‘¥‘1Èà_¥$„•F ÿÝŸ³‰“¥ƒ‹3ƒ³¥Íï‡Ñ,ng*jok ´sq†ÿ]Ÿ˜¥ÐÄ»'ã¿×ÚÎÞÝÎû?ÈÌÒÎÔìw¦®Œêv–Ž®@i±Û€Dðdæ@; èz˜X0þN æéü—’ù·Ôƒ¯·ƒ½À ÔÐ×Ò ú÷v6r\œ\¾Þ+þÁ33L-M\Æ@sK;ø?ÑAb Ù?tþN–&Ðø1˜~þû¤š0S{;Ï?æÿ:bFa - e Ú·ü_¥ˆˆ½À›ž•@ÏÂÎ`ffap‚|ÿ7Ž’‘å¿ëøËWÚÎÌÀýO¹ žþS²Û¿g€êß B øßX ö É¨þ º.;“ è‹ùÿó¸ÿËåÿß”ÿŽòÿ:èÿ·" W›é©þ1øÿÑÙZÚxþÛ4¹®. -·í‚Ýÿ5Õþ³ºò@SKWÛÿ«•v1mƒ°9h¢é™Ù˜Øþ‘[:KXzM•,]L,þ™šäê¿÷ÍÆÒ¨dïlùû†y11ýhÉL¬A·ˆ3h4ÿ¥‚vèóŠÛ™Ø›þ^6v€‘““‘'<è¬AˆàÍ ÚJS Ç¿†ÀÈ`gïr€zô˜Ù;Áÿ>XvÐüüýƒ8Œ"'€Qôâ0ŠýAÜFñÿ"N&£ÄÄ `”üƒXŒR+€Qúb0ÊüA Zdÿ P-r¨ù?T‹ÂªEñ¿ˆ T‹ÒÊ®ò²«þA ìj(»úʧùòiýqƒtFÿE¬ ‘­h3~_pÿµIÿ P…&ÿEì ‰½ èÈÿ#acû-±µýõ÷,0šþAœÿDqóÏ4þ15jö‚ÌÍþ‚l¿¡åüÛø/¢ÅÌæ¯X lþy[ü©Ä“…§ƒÐî/ ì¯pL ‚¬ÿ‚ ~ÿŽ"Ãö¯JAþ ÅrµMþ_zP+ö²ƒœíÿG jÅáÌôj³³šý!‡ùßR§ÿጠÄ"èÜ,íÿâù7ŽÎ ÜÑÕÞhjló?YÙþ(þ7(óo®þ‚ jœÿ´÷ÝþæŽTÅwÐEÉèbáüë¬A-¹¸Ûÿå¢Èõ/b×í/"Èý¯ƒy{üAá=ÿ‚ þ¼þðŠätú'ÕÿÜ2&®N ö\þõ:]AÿÁÿz¿@ø ö&¼!Vµ!m÷ÕÂøîô{,lH—Q×°š»â¸nûÊA¢|W¬ùÑKÂ]s?£6ÑŽYJÞš¬µ°˜¬õ7|Ò¢y°~Ô·A™ïÐùL¡ñ?;˹²ü”íìühÈjgjŽuö]eÈýZh–›Îñbo>óP’â{åÝ7‹3ÊÆ_ ˆ±Ñ08\\¬ˆ!í™í•"5³sÒdΗB'Ÿ?H>¤õ²°o,—Ñ[n¥á!9È^g |9èáÀ“5œÌ’ïöˆã<ÅS]·…R;© ’òfIïN]J]îÆJ«˜—Ü„ìO…ÝŒ'9ß„Îö0¦ÜÖç¥é+i‰ú‘¬VèÅÊNYÖS^.‰Î/‡Ð·'1ý+¤–!UÖG®fx:Q_Í99k6­n4½QIõÊ{‘yÚn4:Ø)Î’N¤ýÃŽ¿J0Ø×X«Eƒµ I—õ‚¶^d)rb䨋'ÂcÒ ŽÉÓ1InË\ÌÔ±'Æ6JÆæ!´DÆc°šSÜÁ^ÓÇûæ«>ÍÑhɈ¾øžÈ¯5Fˆnr$Fª)ô%Å8yæûá¾.—­[B޸ɥSÚ³7Y†‘ÒðÁ>+yΨӖf³/Í;£ázo!u|8^Ï5¿,ß2Rl²Î5SßB?¨×Œ™%D!”ûNæ:Æê›Ð… U${GÔrôømFɨvÖ–õÕ¹Ý%Õ][Ö‘]Ô*ÆÀç¥eküPN<[;€e»,¯`å(s-/0ôE«uõ˯mÛ&ü¶“ŸÂ}Ó¹×[C:.Ï_cÆ`Œv9;T¾ƒçߊ$I8‹Øt\úk70wŽD–(mù1», `$¦«PGÓqp®œ³rB‰ÁÛ'Ɇ‚†Ëô‘Šlâp^Ë F3Æ9öXéÝë»J8 ­Wu^¼B†~#"N­Ávo?ù4¯}©„Nµ-ää«¢dÁì¾§[éÐúðórß*‹ž¤]°|Q>§av0(:öé„•ï‘UnÎ)xò¸å·v¦öDÍP¢”=HLøb>/oø)X|‹"g:3\û¶·Içxz±l‡È›Àxq«ÕS’)Ö†èþÑ´Ú’õ¬G#:í' -ûü{†$•»Ó8Ã%IrLÉ%yngŠÆANGrXþÅÆkòÏ/ÙȰ^‰ù2¬ÂäÇBñÖ9q3D›W3¦Œåz_ͯúƒXFo‹øtŸ"É7>ÛMjRc°»JcmP̬›æKØiV·¹”ë¥>èAu±²Ý@_–~…ÒxÑ0­ê xSZÙ€t@‘dørh±©å,)LR·C¾œ00žJ2mqÚÊ÷Ö§ÁɉViAš“LŠŸ£69•ë‚øNNœÐ‹8z¿¬˜Ú3‘AŸvú(ûmNß\ÁFƒçâ(D aõ‘ªã‘hÚŠŒ!þ!]t{X`æÞÔiµK;׫‡5i\ OŸ„ˆêi­Ì3±T°¬jåѹ,ÌY,Ç¥’F–àþ~îÙѤ0¯X£ðKÓ±ïú`ŸÒʨ4嫊¸ÅjË ä!Ak¸±Ãi¾¯ekgŒ£eA¢@ËãÍû”NØÚeaÅI›Ï!,倪ÒÏЈ:­ø£éÎ]Döyˆp`-Ob.—O‡F»²&üSy| ´s3ÊÿÐ3;i…Öúacv™Oÿ(1á³èÕ 3_â„)$#W3²¼rT1Ó÷ZKõSgM5DauŒ†Q d¼ê¾K%1}rÍÚÅ ¨™RmZ±aÔ6„¡4§fÇ);äÑ­²@ÎÖNr’l'Nnöp×Ì;õZ€›dÔ5˜{•UnØãN~!ŠÐãBÈ«ÈVÙo¿Vº®¿Ð´¨ï[o÷Ò“@Á”^ÊíôZ©;ø)7áC"*^íî+ò3³¿½ð°’©’•ÂáÊ-”M™ÇuPö‹{û5­èœŸ[çí‚‹=Ø×º žT£::$Ï "]\m®Óv9€ó^m÷ùäd–¶éhzp[BC¿Ýˆ ´ÕbÂ.¿@—ÿá´mdø¯\öç84¼Ä÷3Wt£d,Œ$'`ÈWfþÅÙ¹DäÔ*ä#Æk\?¬Js‚9`‰lÏ03aGÅ•éE‰ÆSd›æÞÄ¿]6èVñ«°bc>š k¯LÄs·ÊG(×BO$3jÌ›ÖmU‚îõоŠì¯B`V=hâRK_œ­Hß8d ߣ[Ð4—zé4¡ª{Pñ/o ªQÕ­K4Y$)öb]¬‹h-4øÈJ Ô̋厗]_Þ]›xq žé×Ïz>×PñVä²Ô¬ž]Ñ/Ýûq~Ãî×C¹ ?rúVL¡œ¼È¤Ó‘1-,¯÷Õl^ë§`£‡a´eó}ÚÏs;udzÀ¼Uò‘ï/TÓ]j‚ ¸Áiã HFÌrïêÝÇ,ÂB×¥¾•¿Þ‘ŠÆÒšóãaÃTš­Që}®— ó ÇfH»ŠcÛ Jà›#̲§u;s—%|ªOp=%©íÔD¶ûp–}%·ÛÕÑÎõÙ‚çØêƒ%\¦Øž A8—5Ãý©ÍIU²*jbicùýj:/e‹’Ü–ÝÝlÍÜ=¼nŸèóRÀ&O~òVL&¥ý¬sg(æ;8pgT¬8‰ˆú$99^˺œú¾°( ù¾)=ÙŽ¨¥4Àí›À'bS4ø³C#- Ä˜ßæÙd§Ó05¯ osútĦ KÃÑŒ§óì%0/†’iL·äM¾Ý…‡àS yׯÀÀ­mБSëVm) †‹‹–,¾« ¤QÔÊqÐhIa¿ÈøÞ»¸1%[”¬>‹H Íîk§Î7cî‘ïë *¥N!­°äL²x›gƒ ;mq¿Œ¹úÔòÒD½£è”0]O¸Þ‘“Àw d0£÷-µ ^ëɪ£J¯x5—dÿØ5{تuÞÇë¤,M“°t—¤`1.ÄãÓú„|3%5q× é67t‰  •Êv‰ƒß?G±Eâ¢çÖ¡Îz9ì˜ÛÜ´Þü˜hLÈòàÞl+eÉìëøÒZn Ä‚å³fÄõ«pØ/bt̺Vië–Íþ¡Èàx?åÁ6?ÿ*f,ÜUZ¡[Æ\BøU,ÊUùðÆÊ8×½:»N³Áìû#„îiêÃk 4¿íÈÖãHÏÛËwæ¹Xã&$±"îlßQ ÃpÈ…ÎoLw&ûM»vy*«Á]Ò·õž–ª‚c^ìŽÀÏuª¦Ž—oÀk˨7$å, ޏ­‚4{—gv –‹‹ã<¬¶¦š“d¯òÊô®Ãü5?#áå-䨃¸Ö¼)€Ò¬Wбν5Òe1S6ïãü“ËÝ Ô4D)Ø õ¶ö:¯/ý^ÑS±P0?‹ªÈ™‰“ Às«ëÂ4I\'ŸI¶×F*NÌ%;NÏÏÕèB¢áTúYMH.[o*úLEaÑã².hgÞóÈæ"uO$óÅwgbf÷Ä›ü>щ¥Ê‹ð;<ÏŸ©:át¢zýJ$QcÝ­üÓF>[—+!˜ì0žãÔñC/ _ÝÆ詃æ4v'{}FT;£#Ó(æFµ?]ù¸Ñpýé åÛ?:ûvÇFS±KÈü¨²ãXåÉ´Ik“‰Û­Sï‚,8Ÿb•–ˆ9p„ì= 7Qa‹²d*ö\On®ca..û#dæÑû‚÷ÕeC‘‘¹ª#ŠCˆÂn‚‚Ñ©I9­ó;Í ÖÎü6nÆë“ùà\Ã>µC½ºíäÞç3%u^Ò0˜™7Õï55ÚU-Õ…cÏ4òi×ÀfɆÄ|Ûn$ož²€üfr>ÈÚêM{”è,}qÃÛ¦²¦ÃUi·D´]üSγ3TÙ¶:ZçÖ\1¯ç‹~¨’ׯ#6ÚîCÿŽŽÈ=a;‡G5Æ…ß)´Þâæ† ×rWÔâè„Ô‚CyÝË^ïJçp³O«Ë¼†Úf‹7±&¼€ów°kÖ‰&ü^ƒç7F»R†ó†dØ)·l}¨Èð“Ñ›hR?$õ3)]`5ß4_¦Gž÷'\ ØiŒû!ap¸Ÿ¶‡!cë)æª|—›H³h`Wá8Ãø÷Ã}D µX2æF5±ºˆÝ…Sá[ SªÉó ©N…ÄV¶[+q™á–7 –\} 쩱È26líwÊvê" l|ˆ%Kû1µ¸tR#§ª€ÄÞ#Á¿N9@LºÈô^ÿ˜±ïC?EëÏã›uÂêæÑ+gï‘.gÀÌøÃùÎ…6ëXäØô;!;æ‹í ôc¹61XC»ÎË¿lßñy6y›î=«5…çRy¼8;¬¾šnÅÝS®™@/ú„Ï#k}]lK?*v/¥tð Jìlg,q«¼‚éûm>¾Âœ¶=••å8Ïд^ŠVÀrõ¦ ‘:î¥z=ù “þúÎæÃf‚Ú-¨%´Uífÿ+­×†f6gb öXÅþ ’ë!¶êYÅò¥¾gùb£6t6’ÃOÂ(QmŸ8Z¸ÛQfø]Õò.Ý~\[~î n™ÏþîÀ6æf¯4–Ê,示_û·ƒn(•3Ê!ÃKˆUñ W©<©3¹IÓ7¨e€Z{¢=°×¾åôÒéÊ¿ÅöÐþ£}4˜¤/«YïärBtMº¸Ú㺂×Nšþø ”v„9™Àª Jðñ½H¨—j¸åÑjj¨çM0”º"ÜǾIÁ,[Èé ¹ÁÓ·ýÅ h%Ûª@ÔF賕2!;:Oÿ¶¬qçbðž~…Œ†,ìÃ`Y-#ÒGxØ8HWwªÆç%@gx?zmýÎXáÁâö{Öå0ô{:‰u»+O=3)ƒ}^…÷žRê‰PŒk¤$Ô„óo.ß¡ÏJGJ»ˆ'3,Ý#=¾&á~ðö?Bô½^C5ö‰žêÀù†€ÒÔšÆ[³“̉nÝý9©`7ëMöX•ù²ýË®Œwƒ×šf—sþhÒ¤©X5¬–Ô#Z¦®éJV¢U‡?5«Ç*¹Ý ¥ ¬Ó_V±ø±ÊVCwMšÝÁSÑ]`Ê\H{…}7™oº‡ûeûûbÓg¦áúºwÖ\BïŸ#«†Co«éÞ;¦÷|^…;Žl>dS)s…½ìÚñtAžòÒs¨h*N")ŒKaìKœ®šc\µYÕ±Y£ÈÜÇÀC‹Tñû¤é.Bœx÷d§7ÀE+Íî®­'冾ZÛΫN2ø…è:x3F§{ ­ùœí2#lrf ºï†ßûcÖ/uŽOö´räãkü/Õ÷€¯­unÃÁ¨®¾åŽÎÕA]%tÊÛÕU‚*’¶F™P÷«–›x{_==Ÿƒ=¦ÌÔ±åâ?i¢*ß!‡©¯ÒsTW4·ÐJcÕ $»œkšáºœ6Ù +ŒµÈm]ï4C¾|œ×ž–[Q¼(*¸ó”©PþLMÐ¥ÉFƧ5ØfA) §HXýn ÷}æ)Ñ[–°ôtOWÂ'NÀYu²9ºÝO;GÂãT¨ˆrx ޳:}«æÃe˜YcÁ ZéŠDÅP6{ÄõëmE™’ó»‚Ûº×ýX§Ô¹Y1ÈHž°A.BëæWÁpµ´w§tÊEÚûpÒÍO‡!u"â‡P2Nmá°FªUxçü%¸M†Hï‹ÊMLRq[Ò:Lå Œ™RF;Q£Ó×-ú?.ž×ªcÈhæ$Ë$>ýÀÝñæ¥ÚH›hÙPé2—Â9òÒ(¶óÄmS¯ìpßÅ2¨Hî¼ ‡kËBÀû YÒ4?øÀËò¦ÖÀ”N*‘ =â럈0óâ‘äÇ…oÒæx«î–£|ß¿í°"uä1²¬|Šp¦¦ÖG/Y}wky[š²ÉŒ©Ò¿t šÄéO¨$ø”ðý€Èœhº–͆±»_K’vÊGÚÌ8Ä;×bQ<7"H=XÇŽ.ÇK°J4‡»Md\c˜„F!¨ðã\ÓàpªyRÕ:a½àóJ¸óõ*ÀèMT!ý}^Ó‚|YÁª\Õ >™”ôõ~Ã%%§†‘ê¾â­à9:µ•JÃml`k­ÈÃï±ýüö~’ê jNÌ»o¹7Gl÷«?ªÀ{©Ù#‰“¾e1LÑóõK¢CçÏÓç;!É8µ“UѸ„9’’d?Ê[à§ØŠßI:h}˹ÝÉ1àmÅÛuý€Íèb@щÐV[©»”š“%ùÖ“ñùÕ¬ÌßXOÀÇðí™ }lXÂy_ò®Qly.Ë{×k*«ÏáÓ<>Ϲ?;ö´½‰>žCL;Ñjôív¦•â¡ñ¶Ã‡·wVQÁ¬š?»T°ß= \¿Šç¼75{?¬KímØÚ f† Þ¿æHeóî+Lè×ÉH—`ÌSÁº£A‘ξÜB˜gëÖÇÇxR ù´bÂ>g€ sÚĶ K ¯Þ÷dif½iƒ!¿-,ä|\zˆúÊqA݉x²½\¶ØÁïnÃ;ø÷ \KÁi@izW !9Lüª¶´‰/Æ+=YO%ï¹RÃrÎ¥õ^™sÐ ¿ u9h6£Æ>óOœµVØ{EÙΪOÞy? -…9àíôçAËÿ ˜áM£÷wóçHÅ¥vÃN?ɧ>$€¬OWßD»í‡ ζôF¾,XK_:˜På¢êBÏïŒRVŸð/Ž—®·VÈ¢KŸÇ\Óú¾5BŠª2xQþ90v¸!øöåXç%ņ s+wcT¯.×(6T½5"¹d鬿1ÔCh;&φ²ÄçÐhs­¼KºŒP6—Ôïµâ.Õ±~׿(œÕ “&]*»zNÒvòžœzpó±@{öòžÏ\PžÔ+¥]p#»•">8³· Ó-}ºC阾‰°åŒÙ&1æ©/Í;ü¹þÌÙzìƒÅÚS¹›„ÉϼZéžd'6LïöaIC¼]•ú {‰;R)³>T˜ ˜|œfË"X¾:œ¾7}…Êw‡ áÇ0ËᢡS‹*ç¯oœÆø$°ߘŠÔ÷ íÄ£IXÕ匦 Ôîì´Æ‚÷:©Í` ᇢâ\!òÆàÓïõ"ƒÙ™tt™‚=‘ŽÁ‹ÿ‰™/‹à ð ͨI˜gý’gk„¤Zi…­³Â™WBXÔ`nw@ÝmÝ÷*jð%|Cý>6/5(7\×&Î¥zȉ»Z“¥y__:],­ÆO-}w(·žLzV0×L<…Zd½}‰Q&ìœIjsí“è˜zGCæ,‚SâKpã®G§XBÌ8Ÿ¼ÛœìC.Ê{jîý³IùDÅ‘=${é9}8¾AØ2X’+æ±qY¤Å—É"1þ(K_á&;°ÉIʯ«.CÝr…·Ž;Eˆ­.¶ýð±/ì¹’!fÑKA½U*³¾_öt¦°³mŸW¼ÚÌ Ä»"…ùÄ~›ËKYüÏô"ˆVh [=Òmg9vÉ”[t£®µËZ—#_0¯aݳ¯y‚|€ÁÖö…ñ¨$¼hŠœÖG¸FY¬ha½æä˜ìš¢`!lqˆäeÕd(Q„*0Þ£àýŽYûÏee‡õYå’A-ë®ûø=àqrûÜÞ" W;‘ý8ó“žf–Ší4Kø·þ¶ÕÁq0Ñ5Ô݆æá/èØ{¶Át„±%av*&˜K¼Œ]í(LóH6YÃtÒ&µ/ËMt0œûay˪Ìu¾!³GÜVïÊ~¢øGÁð9Ýì¶~3¼¤.€úô±m )k|tpð‘רX{¦Ý·ùqÃ’ãÐ×<Òxw”­4™îªœâ¡ã ™av$OWUp#F¿— “u×háÆ”4Ͳ=>£\&óÝÞFãP,HW™/ùÈŽ5…–×Ë~9ÝÂ᪽ˆyå¯ö!f³ãûAz2øû¿¶ãYœŽ¦”W9íéX-¯ŒÑ!¥>ZÄÖÂxÉËÈ1‹{>ñœMM–&ÖCL¯Jí}ݲ@jD]+0ìþpÞyÕ#ÜfB…q·4Ï8çŒù•+¸8ã'xŒ:ß`UG%ª›fºpÇ1¯×Ö-ÿd¢eRH쥄*nDÚˆ”^e®&½VV°U5`ÅDµ§ùt®#ÄFÓ6#äÃ$¹ê¹dBœà nVç)÷ާñ8L<„WY‹8Ú;Û€˜š$)Š( ö#´g)lDr/òcHpEý*X2)ë¾¥~,/¢ÀŒºìòç Nºaêzt‹eƒQñçÓ×8ZuÕM¶‚Ü&aOta¢fÄ=‰éVj‡°rÆyIÞWÃ’Ò¶­ïªÊ¨'¾ã`u[SnA䇕ûY|ÆÍV>3d^i-T…¦NÒ&Æ”¨€N†Ñ`RäIÔ³PDô×:ÿs$< k¯‘Ø7劉ɛˆááÌ8'0“M”ß;" ÚGbãbÒëeÄ4örÖmÀ@öúUü–wg›È èœÙP­ld5:-šˆž*HHÁêpóVt¨“ÜNÁvðŒ&œhNûÞø\ó뺼+:ð'2:‚©è]¦èr€@å[Ñ’x¬ì&¢…¥9@ öS¡Õ϶—Õ€«ìÈ{ô~äd5d§â2•èêœᡆ3 %VMÏãÂ:ÈeE­¼âJO›ãá™Ö/’bW_;ÖÔšûY#ÕD:ÐÐ7¦"<ó07s¯¯#`£Rû!Úbœz¸ÐZcš)¥©}h½¿&/CÑ4©#7d£¨žãݼ°†'d¨OO›UÍ´a¢¾Ð|¾6c ˆ=ØàðŠvûŸ fÔ'kä…„°yb€_‹·€©ÂlB?±`ªuY“‘ô}¥ d:Ì„Â|ëSB9=Þ¢¥/$×gÀ¾^<¡ðZôÇ?›ô^e«3^ÍÞQ¡Šp©'q7­ˆX±| dà1Òyµ$åµßm¥ë¡öGâj ܱfÏ>"ì„Cc¢"Ê…$XuìéÌ.›µØ•ŠïÄÔ•,löù’ý '0¥=Ô¶7{Wx[š $üo·“_RaC”Ÿ¸¥nz ùT‹Þ)‹ )¹­ö1¶‰,.Ib½Äâd£«á|”Â@£R¨í„…£P ©™á,!}ØæX±FÚØ¦£¯S²¤ÃŽmSÙ1Á>Ѳ+¢õ ðz¾^ Ž8Ç °ªD—4M)ôÞ`6 [ Ê].=Cé35øðqa2övDÝxÑ+—½Ö^~¿vÏfà@çŽÐ·0yÔ;@µéXd¥læµ>‡¼ü;O˜¾ ÛIã¯ßîRÜÎ1.,dco…*t¢4ž±Ômá€CÜØvÙÞÜ¿~¿eï#r÷R:5Ø8ÎÉúþi‹‡ DjÔV°M9hÀ$ÁÚT¯`j²à #A/þDÐ2¥¶q!icÛ•'c±¸²ñ …X—å{Uß7w_ì•tÔŠî û`sÕ7š”­B ~éáÊÓ`jaá›îµgàïU4#â€Ê€ª§À±M8±&ï´êqv‚üI8û‹ýR=¢¶Kj#Ù@ï¢gñ&‹*2Ýdò¡ö"hžÙxvO?íHxŽÞ0´íõÜ|w¯·ú´ûÛçCsk\°Ý|@­å<yûø©Ðcs²ç…|"Úno:c=) µqý§u+{®ús5O ¢þzFÄ T®ŒVlxrzb}KaÅ·NudÊ"–t÷É'Ú„M†ò©ct0’ô¬Y+7¿–ÉaWŒøT‘MsWˉ#Ò ´&zk"Ù`Ɔ ¦üT ó…a1gß§ûã–ÌŠœ'!› Aæä¸Þ¦O¶ÃRJˆ~8òü÷UJ™7™ý#¿Ú©±…4®È*8™Ã\¿À.w{y0¼‚ÊYSr\¦O1yÝ=û˜w±Ù&O>àßh¾E%î3˜Ð›Gi 8Ú.ïî_ø'>‘VNzW<³x}ý2p";Î7’,&>ryŽÑÖ™0Šyü+¤™]bº‰9* 2D4ƒ‹¹‹Ž;oꈊÜâþ{þlÕ§æ%ŠqjM—;X#ªý¼=íçEþæeÕŒ¡›c÷çÑM¥Áš_z[Qæ7_ c¨Áž¿6¾âS_~˜ï¸øR穚‹cn(•‰ñI~>,%FÌ0-øV_Ýw´õëq_ŽJ_4é |Äì‹NåziT§¹Ïb©‘þ׺pÕ8_neÁ¾;ª 1xôŒPÁŠ¥uïùNa3¦ƒÃ‚ÂUð$J‹%ÖÝ `u‚ì™h¼yü3•c:Ï ¬­¥ÁÄÕÅ[©´Ñ÷/?ëgtч¹HŽåÛ$$!±jâ©HÚù¡m®êl åö¢m¨?90föÕÖ¬dõ·[]½C„^8¡ØŽŒ#”]ñå¨38Ý:¥’T )ðû{¤Ù€ëˆ]Kógs‘‚þ-ytˆGùÖsÀUi™.#Ê_Aã9’ΣÖpn•“d!„‘³tF˜¿Uƒ×êŠö0P\’À©ÓÔ]K^i×Ù¸·/͇¹‡’]ÃuŒÔD¿¹(â~s1ïÞ<›>99Vƾ0x9'³êa¯Ã„}žµÁªÜ2Õ* qCwÜËU5ö9‹ð©õg1ë·˜fŠèÕÕÑ%öÉØW‰ÂcGdŒí´ú¸Xs%²b”`M{±[PhuP°±Îýæ‚÷üKdºÂõº†á~GÜÖSâô¼º·NR~ÿ{·†’­`]Sê ßÍbuûS³õì­Ä¡‰šh;ùËÒ‘}ŽQű‘ÅŽ«w²Øßܽ‚¡`n=#¦ô³n¾ ûZŸ`…QåðWþ,p“•ìÖ9gÀ—Ü.¡Å†ìrŸ,¥Ð+Ó%Qb>zRRFIÔòMÅeCç{`a?3ÒÙ÷ÖíHõ‰Ü¥ ¯ 7°e¡`·áÓ‹ü¡¡í1$”ø gìà±Kìðg·9öö(/zíøÑ/ecÔCüË-ê’¾Q’ UD‚ªv®U­ÙÔJîÄþÆE"äQdd‘`´ù1ôIåªSˆïøOªÇÒw©cnÞž® .+éó;´áW×nάrSM!¸î²ß.Âe‘|fK ¢Ô\¬."é]½×†“!­ø…0¢hM%C›Xå<™t’dÚ»Þœ"S×H;›&ÙÕô~®’kM)7~—Bò+YË ÅÔL³·Ö;™Î4ò‰Ÿi)U[ý¸>¹ÌIÅRMEŠgão,xóµCŠS-";N¶2_By‡B~äŒëÜè¥TqßfE3¼Û!ÿò&ž¹“Úk«VmÜ‚q<꽋{¥Ëß#þUz¿ia,³£SëIfµ¢ “¶¾+BI¸U #†XÆ1ûÆ–3Šî9všÈ1û®_·GjT)zà[©1ðÔX}úšW§? ô[Ù"ÉÖ@‡.}Åí\ɈçúÙóúgíWþ’E^#ínºqUÀ‰´uý'gg6ÒUKïø|'PN¹ñפKî~ì<ëz§îþ›ñžVôª©ýà&¬eY›èèiù–ž ¯EêIÄ}‘¢ÿ“;¨'7³ØÎK’›U©a½åšû13û3°ÉCK#¸”Ôtaò²¶4)6ÇÜ¥bÉí 72D®zãØp ùnk_‘%õKÏ¢X/†h%ÙuÀ˜Ûí¤ˆÑòÆh-£Nà´?÷Æ Â;Aw ièÍBic¹é,rå»Ð‹PˆFä4£ã{ø®ù‚ü…·b²îÖ)¤ß”è¿X¶Ab9°xŽ¡~eÀ ¢:ýéSjj•-[ŒÅ!?3£zLËs‡Àåú4ZÍøYe¹tûI¦æ`U4´šT³IºJ‹ìTJ²É#ð¶/·!Ã÷HÈ”jç©ðÞÛ­†)µE.ŸÉbã~7¬j›j+L]¯íh@Ïj£ùµ™ÇY¤úé<¦è. ¶ÈE zI†Ðýj0ã¥Çœ_"»kU|¢‡oÐ.?#ÜþlƒœÅÖtÈZm3¥S!™z]Tž;1ÀÆ/o³ò}un¿Ÿ94hÄ’|‘´ Pm2~gp;˜»@!”/Ý7þQ{§â¦‚ÉμAœ;òAlHÙ2;Jf‚.¢ÚÌ‚_ËÑN‰ßüœ”æE{:èJ8%øjjì¥À¨¯2ßtïÅü³,BÇ×+–ȃ¹˜°É˧À¹:ް"ÐC|T{Lå‘1LùAìˆóAQüš‘Z¬à½= ½^t€NA™ÙýqäÎ¥Â<7Ú·eêUÉÛÀÏÞN*¨!e4‡:T0î;¢é43HìÏÖ<¼º!?õI‰ôöß³{9¯NÈ2e¸dliµp|lm§âÏꄟ—*yï<á¹³4s›å·ªõh3!S_N¡~í’™æÕº¡˜”24þ ÄÅœb=™yŽaßÃIøø~,Çú¹í%ZM~‡ñ„úîU½Ú°OuGdRùžs…F¾¯CÞ™Xòp)oÊ3Uæï^ý eÒˆ7y‚Ƽ5043†Ó¨´–Ô:A wç@uNʉ¡¥—Œ“»[k €¼;1 sÀ.)AE9¤}˜þ82yìkÈls*îZP?ej"Ÿy7q†0mµ=ËŠ9‚£×‚Uü/A%ݘþ¨]Š>]šK¶°uÝýpÚ$r9ºôÖT%=Ç¢¸ä`Czh9>B–ãúQkc‘áÈ1üÝÝÂ<»n…‡lâ.}žÎéÚuý§ –ã{µZŽ*?}ê"Áw&¾hF,ŒrG[Uþ';¡pà/E¾òø’Ô4Œ>kV^3a²XðØæQM†—×72kq—ñYª§e?ªcÛ+™Çâ?K§„6Æã è\®…1›ˆäoßä}å,þõÖGÄψ‚kA‰bYócIÃU™(p>HýÆàËæ²õ䯀ÕÓÞˆmk§ƒ>?ié×øý¢¢ŸY&R®|>.%×ðÄøö¸€žµÆÜ9íÉ "~@é¢Ç9 T| ¥«Â‹mËÒ¶üþ¨ºOo‚^)…›?DZýÕ=ÿ,“EvN]×ÓN0'Jh{LµØ3·§î`†`}ãÂ.¥SîœoÁñÐJ˵‚á´Çfðøã- 3G2ñå:K^ ÿ‹çâÁµàwô=ˆ´<~A€þ”B¤´‹uýŠÂEȇèc îµtmDÝöîc‘ÜÏâ‹C•*×D:ìã§9T~Ëh`¶Ð ´¤ q™À§×Ï\3f+‰¯ý &ªñSkš‰s8´$ 3m A‘9hã¿¶3paW»”±(lêÖ$ÐIÅzí…“’õÄ¡¿hMG|Õdf¼ÒåÊ)kç ÜyGlŠÿ`‘y>•X7M4é„K†›µÙÂ4Ùs”mˆR_TÆgê þàÉÛ7$ƒÕBY©œ§ÅÀCªôuH¸Bº+ù©?² IÝ ËlŠÃ¯æz©|S¡3¦v\X¥ß³†V½*Ñ‘¬XVA$²îcìë3¸º@p±kè+§%Œ³–Ä7L(*ΔЛ†Ôíé̹ƒTMÓkò(‡8¼…ïñr«–uf̳v|±Nc»_Ýu)Œ0PÍdù§ é8.-~…YxšˆE✌9»?«ûáˆ=\kƪLí¼­.–mùˆœtÓ¦>V]| jµ%S«½i¥U䦵M‹b(TDßjSß½=qu 2LhÆø¢Ú÷vý}Aì2/)‚®éÀšR´üã`ÊB¤Óo°È qólÌÑP€¨ƒ£;¢¿ç{xÉÝ»ÓÔ|H”Vcc‚NÔ`d40N\§@b¦žÈþ,"_²z;ëö/øOê"ˆ'†‰ºÁŠdÜ£1<,¯ ¹NøH:Zù; ù•öf‘x8§ÂݹûâP_$Á|8¸m£6”Ùµ“n×Bî,É¿¤…›^iOÁ ¾{:há ÍèÔ>}oÉÚs0Fh”Mÿ>9¹^Ùo&Ù{ÝêðKRQi_ýÐ<Îo‰õ§ùg?©a¥ºAÆ^¯º}üÿ'"ÝçáÈì¶„¯GT5„çˆ7—‘ƒ¶7šþ¾g !ÙVbêÁ»ºxR²&õÅÒ‚Ö'\Û8:nès-<âVeÔ~®kCTCÒ£"û´.7Át4èZ諎gÆ¿•€@0ñ·Ðn¿fûÆéLƺ/fŒƒÐUINé¬XÎø2bìdU€NìiŸ\Tý9ðåP, lÑã§FF ’Cc¦As‹³göq’À̆5Áí ߦß~ A("’|Ê–²FcOï0ß#Ô)W&¯¯R`˜•²¤:æ@âO¾qWÝG¿›ÃÉñ3çkùvt_ŒiµÍ’* Ø H¯2 ÀK³çòÑ^íb0e.’ù¤ƒf YÚm§±Ô@ÖðŽäD~»9ÍÎF#wx8ör³ðóðƒÉT¸S׊Óã–{wÎìÞ ñjð *Àyhÿ~u>k©"ïuƒÚf}­©Û µN9wtOÕ áæ¡ £íÅî¹pOoèÊ“ë# Î Ÿ í Öš! ìâϨgJÛÄq¿hüÿ,ߨÆ yIÈAEKiHo‹é=¿Õßé—­Ò|w8tß×ð3Þ¸3¬XOŽþ¾‡PÜú5ôkÙÔ‰#×î*“ñŒ|ŽQ%FŸÐ¸à°¡ÛÁ׃F|À¼-ð›Ûáâ/m:¼øé—8„{U ‚Üàyš«£0”vZ¼£ôCl|Ó^®#†€öXœDjÙÓÐ’Å`À)™S0¸9¶¢Î8Yp#¨}–yz|ÿ*}û€ŽêouÀÍ:J8¾z— “êc6d@ãtatS­m‰3š´3£aÔ‹¢÷cÖÒ+ô¾KŠ7Ír´°òL¤‡èΰSºû&£°[âê<¢Åé]¨6öìÞ=ÐOì6çݶ‰V¸ìB"žÝQ4a‡åº&(9ÀÙâ²dΙ•íÒ[ê)¢JôG¯h2¯¿|7ƒ»Å!·ÆJŠ ÄË+yñ9¦W'üo6 pǶ¤Ô;À‰¼È¸w`B;Ÿó•å^f~ Q#rÝ^TŠE¶¨ŽPœo/ˆÏ%šz}[寳BOó,OÒ²l(›ëò´áö™ó[ïzö÷&”íHªª»;âÒ×k!xv÷D¡õ˜;%åé|Ac®u–7qIû,©'úSñDý+Ðc6º<¶Dráp»˜·ˆ"ªÝ_{lX°óoºÐܬÀ#qÔfåMv~ÔïÊkô3ÿ/_,ˆã²½œŽG毗¢tR– { ÚéxS ‰ù¡¥]а+±µÁ]SÊ(t+ô÷W 5Ù ws34uWEè[×¾«“nRc"u)ò™2Šù4z©Ñrb5c{\rLzUÆ1»;Cy±h~&½ÑÒçú“íÂí‘5Z“õ™#Pj€õN*¥ñúÀ¸½ìÔOÖ/; ùÒ§ããßnîw&P*Ï«qk}03áò’ËoEY¼-‚ñQi†M§ñ$Õá5ÿn=aÍYÓèŒr^¥ w¾P^ûhæ«êŒâF‰ÐeE!.™Z ÐÌIˆL†»%èçØC-¿+ÄЃn04ïù*¶2%.ÂÂÊ«”Ñf-ó©Ê@À™²ÖwmðõÒ./¶ÔϘ‚Qšú§ |A´ØÿEàÙA?Åž=@ù—É¢†5'âä“DA7¤ á™r¿~j4½ð”š6 nÖyC!(¦WøÄ1D2ÛÿÃf‹ß7ìÚÔÌ¥÷Á3)²¾úæ±â¾BÞ£´Ò,5Rç { Xâ#çŸn‘ ‹JØ]p•AѦV DµLuY¦Ÿ!f„¤olR"µïe—‰¡¤ãªdÃÄ«­f|'[”£w‰}3<ûyRXñ&¬ ~×R…bá”’}ÌzPý¦;Ønž–P$•TC9Ö ’^>–0Ñç5¸Â]‡ê­iH9DJ'ëE}4—+æ­3+à¤ð )N~_ÏÎÓø-ÞaQZ?H=²`æDá@­Pp³Égï81eÛWèiL^Ðh¿_Í47§pÛP0;Pn’ÌùlÆôøvûZa;éÅÜ]ít:~ÔâÕâ8bçûÉXÿÆQ°ð\Ë/•}m/âÈ2ûÉõÃ=÷Õ „ADyÔLÉÔ¥LGÈk›:kç´w7©y÷g$²œ;œþŸ®ú À YxhÙ(ß9ÍQíöØ-¶ýiZÛ ØÁÒò^«r†âF}Û^ã÷±_ï|}U›"A¥m"ã2ŠaÂP‰T>­ì¡V. })Æ:úT˜îدv£Ú#wä¶B,ØysOÔüïáÈIΆ@†ªÓ¾zΦÙP¹UwsŠË0±c+@tóâ—¢Ù¾NØÞµNFíܧÇz¾N¯¾ẻ GɼÔä™b÷Çë äÊk눩´yQ ™‡a>ßCÀ[¾î#a”•nêóIs$%È7°5´Êt³3v†´êm}&NHæeŒ¨|®-;Œž²ƒ‘_¥ÕIÕݦò[m!¶2ø¹ÒV-ânFÕ:9Â"ªáa‰ÛÿtñDôãƒZVseÉ׺±§ÇIˆêôoBrxÁä]ÛýF¬íJWpÉ–¶ÝÊÂM7©QéÄžÞ×ÿä˜.øÙ2&íõË…÷¬‹ÌÆÒ·…”DMnM"¡–aäÆà–S¤!ˆ÷ºRJÕúù”+ðÇðòY沋áïq®2øŸyÒÀ9ÊJÄ• ºV¥ CnmRgíÏwŒ–|D¾¸„|/„Tj3Öû¥÷õ&‰÷ Tîo@% ÍQíª$ô [ÙjóÙ·û@+ZBEÓHQ¾}‹h²jÌ÷&®äÓ­]¨©ó.i³Éù‡ôjŽÓ€^s¼/QšçxT{7B2¹|Dô´Ö_ž^14ùˆ[ÿ“œßOß,†‚ ˆd•!7ͳr)«mª… ~¦cöŒê%ÀoE ŠÇH.‡›¶ –Sa#ÛÁ…/„HÉ"n²-ÿ W;YŸY_õêÌÁÖ÷mµœ‚&‚i‡ðC…ëEË©•gŸ¼©f gv »[¼ÛÑcAp|'¸ÒºÃ%Æh'vž®Ô‰=ŠÌŠ^2ëö%#ËŸDÀ´¹ÐÜÑ ö‰ö{Qi÷Pý|ñà4ŽnÓÎ'I%ß‘çWÍd .,^©â0Øœæ C€¤ñ‹ŸªvbÙØM®ùú0ó$¹µ×È$½mî°¥ Úk):ðqƒõÂsÎ]_ÚÌJ0Y-á–³F:8ê— ÜB®W/ˆŠ³¾¬ô,_7?zÎùGQ¤˜”ÃŽ°J°ôί I´hÂ'í5éL À%6dõS¦*3í~@å»a-¡tâùã’Œͧ ò±9HõhÎscAA{¾¦Nèè¤PL6•_éû´òÁße£ÜéµÁÖ¨g0c &øn]9¹!™ÿF©×›܈ʧ|Ü¡Ò*ýÉ”ò+Ñ#(½XRšê7ùÁc]@ô>ÖA8Áþ„p-:†éÎÎõjäã#Òv}ÛÑG¢xÓ^>Úìl§ÿ‚ëTLmÏGJIcÑe¤,_˳‚†D6œçjoÒ½R8§DçÞEv¬7=—yúù3;ž–éï_sBÚ£x–Wå§Þfp¶ ›là·àáÚ˜A›Zã Ô:ãÆê ³IHŽûRMÌí<5¸­À™ZG•àï{øu:ï£f(…É]&w¨™ñƒ2(ê1g›°6Ç æò—<œÑn¶ © lPžk"_föî¡kÃ(¢óÀ1yøzq¡aƒõ/ήàã=Ù0¿á”äp2€$±û .föžJŠ”õ!ÂÌ;ƒ7§]¯F“Ù/ÿV'f15ÜÆVËâ¶*^ùY$ûn¦EC5ºc…åŒêë¬à†Q÷0TGì¦I÷5>ˆf°äåd•ÓÊëeÝ\¹D¬÷fœ¬¦ÿÔ4¦¢ê¡r ň*µ¢ÓRÄ/<`mÆ#’%-­L¹“駪o^ÜŒ€¾g0—ž‹UÌÐ-âì+j‚ÍÊìû]ФÊ$)Zâñ `$0hü)ò›Dæu2 "{Êÿ¿Ô}Î?¨•™øg÷X^q<¬UôÕ#f(‘t]rΑ êÙ, ”‰«Õ»Åüè?ö•Áðš…˜úñ¿Óÿú°ZS|ne¬~?þnå7xÂu‚%¢[8vlÏ¿¥²TŸÂCî2ýýÁ {ÔYÀ%Ƶ‘,ä"¾‹kA€]ÁÃ…›1^G«©¦ŠÅ,«Óqò6ã¶{¬kÛfoV4AÊì±!–kh|4øüÉÀa¶±—’óòÎrä¯l€ppœœÉÝ‹Œ¾™€yýÃÖ95+>À²˜Ü$ „+98mº°}´òŠ@ó×úöÇãœ芯ÎYX÷Óâèfþ™ îTƒ%?jDy±ø†ÒUâ^çÚ§Ëðéæ2ÁU;ñ " º2™]9ynT„HÉ”ÍAÔ:·B¼nZ p±-,‘ÍÛ`«-”Ÿ×ÙõåØúj;Çýf@Nåeî½a’ñ¼xNGåS´ÚS!h}`˱˜R…ç:|ó¦)¡îµOMû¶¿œ2mºÉÿýBñùÄ@u‰P~GÊ6ìÌMÛ*Œ<±ëW¯î(âØ€œ´5»ˆ‹®5ºý³vOi"å¤Úg#ε*¬)QðÃÝT¢]UɃ(ôqqÝs¼æå)=×ÊUðV“;ê¦Nó@i¥±%þJ¾€µFD܉¿XÀž®ê™}1Zµ¦¢1G-Ÿ¢­t›ÑS´[ëÀÉ)dA_Ë‹ý$^¿Þ‰6lõ2/pÐ6h œ<˜{lî¼;!UXc,´è&¬p†+­ÔðªäûåÓÐȺºƒýë°³|¤“ä¢u‚4z”¿ýš¸g„ücŽÚô¸³dvY<ާèSÞƒ&!\Såhð®ß˜¼ˆE˜lÝ׊$òE¦çûpuy :☕>¾Ä®ofèÃ?÷¬àÒu²Y¦qb€êbðǽu˜b ïÙ…P„û({ÉDàß|ü«A(*Pƒä#ë[¿¦ÛOÊã'=›bˆ®ìô:C7ó|öÒ¦¹?ë2ô…rŒÁl[ä .$0:¿eG]½ò·—Cïpgé¾ÓU””^ÕÁ7 Ô¿zWn$÷§¸µ•"O–Ï£{è+ÃÀò­`«->ríú#{ù™…d^·÷îW*£ZWs¦ˆ Uxž±„U 5uóÄ[ž<”Y@¼õ‚’TËð‡ïànÍ\hºAךNµ°Yh%¯{§#PEYSºúܲ¯¾ÄÐßÒž&T%Zñ6«WXÈŠµk¦Îuìtø¥Ç8² 8mî€ÙÌÓM‡ä†7„³™÷¹{çyKkóFޏ±åbéОöÐ9‚ÄEZÌA8ASXÄúvGØ€;X/ ÝgµÅ‚1eꪵ$©Ewï2øÖVT÷G,v„[QæË€x--ó„—r#ž!ö½šyœ¹ì¥ÂüÄØO;’ú,˜a"]°Øqà©K…;Ó8À°÷6‹»Œ6¤Ë;£;R /³t•†›PFÄpýBF`’KúD$àð{‚¢$ÝSNKÑŽÚ†™¢)åÈdö!TÿÄaøqºÅH%>#’Ê3È%, –#wr+"91¹G®b4ØþŒrPŸ}’$=ô@1 h×#dPfI0ptøZÿž I}WÅÍ+×è;Õç¿SÏp©!®À½hÚpÖðäDYÞQ/%ŧ`V“ëYU^GŠ—ÔKÆÉ¼à/Ê\—¨Ç}Aº¨µ·ýØä"Ž¼ç¶€?‘ª Mì‘-‚ñ¹Å’8Ñs‰#ËÆM=\3t oª=¥œ—ª£>¢Q/³›¤ÅùÃ'­ºUVæsO)ALNÍ`Éò–Î Q0z¹úpE·8¬T €zOO$ÈÈB51´3V§BšY  Â(9€°¥Ç"àÕ츷ãÆWu¯*ûpÈÊ,U}ÒåºQƒËò½ë\!jßÞ¸ò Üo¬ãªüX—MøqîJ–VoÁÜ€ØS‰˜úôY)öûßo?|Éw®Êóa·nù|½~З!¿UÙ—€®mÓ:—î÷#ÏÛÅò Lè2W•…>±Ž‰«âÓsK½ü¾ë)»ݘÁФˉÜë_mÀÉÕªJR«¨e*yz, ‡óóSLµáÇÅzhviÝß„ ';eÃoNß dÓ`h-ÝÌôä”Oþv'= ”Èú{Äøº‚eysv ‘Kžï½ƒæ«°@Í})é÷hq-cå3Ö ®*†Ue!±å`ÑTU`Á/GüÏ›ºZ ¶K»—Sk^œ9®Ê¦Õ}pÂÉ+“í[/¶—åeubWqëãÜÿL9yê$.Ü)ºLÃÆ% %ŽÖœ}ðŒ{µR€qy­6™…Röòò¡ÄÀÞ~1ÊÄÇ®Ô1ªb»·‚ÒIÏ[,Ç«Pq(>#JzX朗5BíB]N:bÕâ„ùplÍ£› s ºÑIÿÜ´C¿èšpñ?ÃÄx »h`t®ŒÈÙmk³ð5å‚uÖ8õf¸|yoåóÑ þ ¾Ã>á߬øk—Ùx_È¥VÊfúfúÏŽ^¢J[7b³•ïd©„XÕ«j •Ïl¸yšË ÀNfݘ䋛ɜ|åâÔ³…ça¿Æ÷Ž¥±gJã‹Úöíí©j¸Ñ ex5‹öJ— endstream endobj 217 0 obj << /Length1 1444 /Length2 7121 /Length3 0 /Length 8100 /Filter /FlateDecode >> stream xÚtTÔÝÖ¾4" Ò1”43CJIÇÒÃ0À30 % "Ý -JJ7RÒ ©ˆ ˆtŠò¡¾÷¾÷½ÿÿZß·f­ßœçÙqö>çÙ‡‹M×@PÁeWE!1‚`!@IÛr‰@ÂD\\†Œ+ü/šˆËŽöD Rÿá „†C1ל2sí§B4¼\`X\ ,!„A É9¢ÐRe¨7 -Ð@!ážD\J(w?4ÂÑ s½Í¿–/,))!ð; àG#`P$@Šq‚»] P0ã÷<2NŒ»èãã#uóB¡ïñ |'€>ÜŽö†Û~5 ¸uƒÿéLˆˆ `è„ðüà0>P4pM¸"`p¤çu„ÒŽ\o0€htÜáÈ?ÎZ ,þwº¿¢%B Ca0”›;é‡@:®p€Žª–Æ#€"í9B]=Q×ñPo(Âjwíð»r(@UA½nð¯öá °]k ýúý{eu-/{ÒÕïo÷ß÷ ÔW2T5ÐáÿÓñ¿mŠŠ(_€¿ ˆ@PX ƒ%A‰ëEà?ÓèB•ú;‚t@$ÿT{}LÿªØû/ðü5¼€溺V-Àó·È-Ab Øõü–úïÿŸÂeùßDþß©z¹ºþ6óü¶ÿ?f¨ÂÕï/‡kÑza®@u=Èÿv5ÿZm¸=ÂËí¿­ ôzŽ×b‹ DÿðOU„/Ü^9ý‘ÌÞèר¹"p]”'â×Ûrý—íz¾`.×ï‡çµ.›à×ãóÏ}U0”ý¯9@Ñh¨ÑõM_#1€?øz í᾿• !Q˜ëÀušè×µþÚhÿ‹û ‚@ø@1ñPtû^«ˆú(b~ÔóB£¯Gõ·’®ëÿþý.Àá¾pÑâ &î\Þ~^£Àè#¸1.,J2psBh²®Bゥ¦$sñEäiì‚B÷›O±(w„˯š\Li@.Ö+™±R4‹ íxv&)e¿íxjy Òìê2·AÚ;Ò4ëùœÈÏðÒ xmÌæl©ÉÜi~ñõ¹Ówã®1öx|,ÝÝ»"ÄØá 9/kfÞtB8=åÇ÷ž0«n]dö‹­ ,U `!V3··IÜ5Or¶ïe|îgдÌp­÷ªÐ}Oâ ;iå±ó5iÖ×OÒzlß¶í´A»˜DÔ³'¯ Ë LmÕ'©aÔ,„p÷og.³ÝÌÔ²)¦>àfÖ&½Mwûõø =·[GÎ¥¾ãÞÓŒ(k™c3Â*4SIaïÓI_ô³†âæxòújÜ@zR»q‡õ$ê¶rzzKû¡ñóe¡ª¥hg:¿ l*ÕŠ‚wõéwµ'Åë¾R9òôèÔe=´žë×Åϧ꜆°ÝRavo<(=¶Ö_Á¶äÊÅbünj`EŒÒÌŽ(0E¹ZƉ6 ÙëË^Þ¯{ëö…Ž0ø-6š¤á…'Ëü­N"š6Ú¬8M¹äçå Éð‹oM߯ž[çîû‘€Úº]Îæ<4ý .تcüDQ…œ¨vãE&]UùcZxù5GÜ‘3ï„fLgÆ<}‰ÂÆ©d‹’otTkò¢Ý¾‹…C4ÌïkKC”;Œw’HÏ8ÙLŸ*SA¦¶›Þà7c5ms©²h÷ "v=x‰£q|ë: &vkͦ«¼ ¶DüÈÞ‹|i†{ñ[ÇCª¨<èž´éɪÚ7,;ꌹçªúpwÛgž”Rfö™úŽð½s ¢‹¹k)‹'ï,ÍŸ×FãVîÉ?ᢠ®äÒ”•°!G34Jyk&SKÌþ…K*Ü9òZ…kÆFÛŒ(d-ëBŽ…0‘;ËdrÙ¾XµëB¸ÁGÚÓ’Àզ̙'ڙƮC)¡~àó0¤}Ý‘-Ì$üòåðdÇ,Úr¤qóãszèÀËœg,f’BÓ»µ‰2€-w%‡‹Ÿ±$EãOiï]5¤Vº?îr-|ï_øè•Þ©eAÿA5JÉ€=ÓÀxE‰¬Â©Þ뢜iø}…O&$'BLÚ7ñYm˜÷åËü=Jm ºã#BÃ[…¢›Ú'<†Ï@™l8a·<Éaêy{CôÔô‰ÂDAUgÈ@fÁýФ*㻑ÒáEÎ7|˜ûv‹äõL$p Û\j:†å—TSÖŸ&VæEFtÔÀ}6þ$Ϭ¼¥˜COžãíØº2tëR5I`†y=M²…Œ ¤§Õ”ö›ªö÷êzƒ„žéúˆÎyÐ.Ò·O”¾x¥T˜ó¾Ém~.#½.b“dˆ£’š“ºe£tÅ[ðBºk¨V;Fl^ì`ô‘ñyW²§ý|¤­jŒÞÛúJÛ“æöSâöj«ì¬°×Óhµ«È*Rb N}ëÜwàQ ú`ßÉ&$oóQ}0Z6©8ãGžcA?-ÙŒ;4í¤™ºj5²bjîzáïÞÚ]œ ©6DIÞà1wó3ÝÃVy~ùGUß²45fÅ I6X©õµšßVÆ|ñÌ ¶RÑJáØ»“ð®øªûƒ‡RÓ0Áh.ŒJ4n¨€v¤@{ÚìSÛá•)î&NY±³òó¼c}­.WÅ\¨wÁ´]ôR`NàyŠÚó ½`Yë×2Ë11÷”¶5|S¬²fNò`ÏlY'ó‡j~䟫æo ßD¦¼ÌéÌKêiPh*{ÉpÈdFÏ;Åä<³"­sìïß¿üb8оÍÌæÊg–ß²7 Ó7WÅf­á”_:ÄÏ ùÂÂýi9äIK!M’ÝÜÿþJìžE)Ô`á¨,§²Ô¤¼Ê9ïÐÈU²T.pöho£ý”À(ù-æeÈéö^Ì6¡þîÓËÃóË êsòÌËÊ‹»\3ìÉnôÂ%RfÉCªv8¯UçJ—(_Ü%LÔq ‡)[ÒhMÎ+joARªð;ÉÕÇ›¦™1ñšÉòÔ,–µ*|õŸðÒcfŸGÜÊAdê0Ûö:§s'7 ñk³ú?º¿} ¸â:Y4 ¡™¿‹_@,E4ìþŠ/#dÔnú3û¼éÞ9zŒ|—ß.Cß‘É.ªqJ•C‹ž|¤;›8hq‹«SXe4 Æ”æy\PÔîL@ GU·ªNÒ(>o¤ïxõÚÒV²Ñ¥Ž«äkÊqd#PŸxðÖl eC¬IÒà†´ýƒÙ½§.£fg˼[+‘%‚&uçÖ{¯¾„Äïg…Í‘ðÀ‹4Œ™äÜ»¹lö®’:9'J¨I•©‚%7‡|?ùYfì>3«9°›ê.()±Xžk}_×Gàÿ­*%üåÑãõšÔ_èh¹'”`íÃ,۱й•Qíñ°Þ¯}ìÜV‘¥5›\@@#;)—­ w#wvÆ¢ïľ(±ÎÚœ<ˆL5Ë\8!2ßfiãB´?%|#a`¿ÈÓi“øøáû#C&‹˜zoÁÙ&¤œÂуU˰ƒ…ü~Ýx’˜[Sß}ý*WÅ©VUa¼^QÞéo¿”™ï”µç*MÇ”È9ñÄ1b9~ ºs ‘¥ïŒ*W %rË›&ú õlv©Å–;³{p£ËyñE$¿!ºbR»g@Š*¾1qžù’—ää›ô,Q¤×jÒÓ·µ æ)çÞŸ ~оLdï½Â“„N«šŽHpw¾±øðä‰únÝâÄÎ}Ùb5†™V]» —fÖŸ „ 6•8# oŽe'÷Gµˆ(î|Æ¢DN G[¡ïDE˜„0YèÕ“üáÊËêî¯M•„‚JðÁ!aÓÁñ! &©öÛ·Éfü…¼ÎI¥S`/+ì.*wˆZHÛÙ6ͦˆl‘7ÿLèyè—ySô¨Ú8}ØÇ[о;¹ûrs•˜ÆGn‰wDh7ñQ? ÉrT¢z/ß~V÷\jãP‰l ϳ¶Œ\™®r]*°ò¬ÂRÜØïòWÇ(çu²Ó9>ššœ·ecgév«Ì?™p[?PNC~ß{§¿Èf¬Õ»ð#IÑj÷øÕç­7&œ:2wN;ŒîjÞÏ;}â¦Cúþýð…a…­Þ{Ü1L“a`µïç²:(Ž&q3§6EçT”ä ¹¤ȦQóËKþ6ƹíaN‹œ3Oî3j}n¡ä­×<ËMwÀ&hžPïŸvteAÒˆ#íÇHCˆYjûR6Чù¶n­ºüEdœa†ÀO´ßÇfVûjùö¶ÆifqùíÑ‘vÙg‚QÔÝÝÍ`ïFKUvµÜ°c¬ ÍâÉ;t¥qu? d¾€ó'ÓDågu?˜2Ø®¶fyžYÔÍ!­)AAú$Á8B6„ÄßéIÙÒ&úû»m:Å/Þd_äbøë»’‘1«Ò¼³'„NèÓE ‹’FÃY![÷ÞÔ×€ð°lF– !žžÂ>¬…“»¹’müª]a• ˆ©¤.uÈno·¹¨š =ñœä!5VÄAŽH|S ©a `z¶¯!ùäd掀e¶o¾Nk/¬Vy{Gô´O÷apOœ,ÿoüîwd€I½ê&UJ¢HiZBU¦¨ò\¤ô¸²ºƒŸgº«ò"í#»Æ)»¤“pÐäÆ_K®à¢)™¿Êˆ°é´ :YÝ5ºwS#[yÕÙÃßßQ`ÿñD±fiÍ>ßÙðÌÅ —ÎñF\|ÌxA†`X©'¥QŸ'#D'[5 ñèªû±äç0­¤ü“£Ûot"®D`kÔ–é¯,H6Œ¾rKõÜlÀ¿¤ÔÓSm¥aâ&xTÖßaÕÙÄãË^è×,Ï8Ë’hs n»ŠÒ%ÉÒîéTvïY™‚Uñ+ô&é~ýÙ|QÍ‹§ö‡‘¿ÙqÄÃO¯ËRîO´~gØ Õº­²|ïžÕîÞZݹÀC™×Q%OD[¾ùý¤Èz×±)Û’öòM­»ýW×îìú‡GÃX²°nm•šøÛ¦øm€ÊBz8ƒàªø%¨Ú|^ m· ©' Ÿ1¡´¦ÑËHiÕÞHQçrÊê×~b=«ðŒ²"nœ6·mó Óæ(ˆh\Ú26Ü`a{©&™SgÛýÜH’®:ÈGRê„< Ê®–YÃZöQ̤e(씦ÔDÕMñ½Q ²ÊÕßÅ©@ï@w'øbGàÛŒ–íçAbã‘kŒ†ædW.­,Ù[ÕAîµušAPé&aQ>CÅ)l£‰2T~Eÿûá°Á<ÔX®äk5åvÅ…hñòvç웉!m£'üJÛ[zί¾vâqßÙ¶2½ùü[ñÖ kõþC¶uÀ½Y vf>³JS‘Wt¨Ø>ù6zZëâ®É÷Ñ%·Ö32Ú$s£º ý¤Ì-qußlüà(ÚJ¼cþuÈ\˜eþŽó…:aF.«¦%…+Ky%ËanmÅ=ÝýbÜÔ”Çe¢½%à#‹]g !·¥$í xø¸Çò;צüåF¡°î¼½·Vë ÜÊÕ7_ì\[©‰¡ÎWpyÇ–/…U·_>Õ/†n‰#ÿ†& Ì’Mv' 01Ì96‚Αã°_YTJ’¡ÔŒ&3Ž$¸îÕDc+ÅõJ Á=Sø¥6Ñ¡OìàŠÙ¹Ÿu7ËñAÂáz¶©L4ëúlqèCäF…7ý#—û¦I¾Á·Š˜=ŠZàÙØ-Ëu?ßÈö0äœú‹žÂß!r9y]Þ¸Þe—õ|="I¡ã› óÒ`¹Hè»5 †‹sëîä]ƺøâ ™K6…€ÊŸÓ€3cì<Ü_d Œ™ú6ÌHïb˜¶bª!ÄNÙV³ÁÞC¾ÞxVƒ¹ÙÕWÆ ßãG Pª š÷š¢Ô/öÚ¦_}¾åTC?><(!}B–G¥Þ;+˜^ØÛ^EÙTŽ,ázF}»ŒöÙ"Ïè»_9gÂ>¶Ob…SÞ¾¼E{g–”í:…­|ó}Çx^Ú”+2½%á¶,òN<¶äe~¶Â¾Ýío™÷mnÈ*¯“µŒ¤•dzSÊ]º…¾}CšßúÈgÒœ5<ú9Ç<Ãè‰_™@ yïCji¢²K¬ù§šÏ’=™ÉRÌoü!¼°@){ßóÁ–Η¾¤U¬[ö§ #Tì¼ ’M>ø¢Ø™_)Þ½xUPr_1ã ÌŸ‰9&fOŽ.'ؼ%MÌGw˜B…;W z ì)‚›O4×èOZʾz—«'>S§uñ±’³{;Ë}b?n½õy[…Œ«ŠÛ‰÷l²íꊠœ«W¢ÝÊn¥ÇÝaÚU&bõ5w7Ú4T½ØmƆµL~ W?¡ ®eX8 ÅãYdh2'˜ÁæcÓ®K*ƒÃ±dè#BÚ4îg{l8ºœKÎÊ*WNÆŠ¥ÿ|ºérÕš7†sK@Úô¬æ©Z1}Þ‚”zÐèÖ,ò‡ ¾ØZ?þT.-ñ{Ž[pü•7u†4-8JtÔF™œýaÔq%¨V…wÙÙÃðñµ ¥¹Eü½ïÈ·{¼¥ÀR|žÃø®æoZ%nBf3½Äƒlè v©3Dfî/ŽÎ¢×n Èœ&£Ê¸Y~iüà ìöØÀ¸¨.ÁÑÕFP9gÊž?ÇGKÆ) …hb­þÌ+uR㈜¦8dU˜w`·æ »z褈C—_&úxŒîçJ/®>¤;»íÇc~m÷¢ÝÄÀÚ¼¨±œ@€¢€akÈq~©šâž£ ™ùÿ“îÁ¸œ¨²åŠgFã Ðg‹#ðP§Bõ±® ›D'šp†6Y­2(BȽ¶]üCÊögHQR#oòkDý¾­‚hg.›V¦º»¢Zu?a}¡LPM[ÝÊLk½u77QÜÙÔøËö×A›eR>:åÇcÁëßGwÞµµ•à^0þʲJœ;h‹¼èy‰©© d‚©š:[ ÛŽð¶ä¸èÚQ:§„Áp)¤œàW¯Ó=l`Nøk½¯owÑÛ¶¨uk{žC‘£jâA•`¢¯&µRWwÆõt¬^(i`·ö/¸Œ9~ÆT ¾mœZæ&>UÂ`åD¿Ôô–#Ö .øXùª/‚b?ˆ'·sAÔ±¬ä&3OðIbr0x¡YKbfõœ¾>Ø~bs÷GK .Éôã$ê™s’ƒ>b’s®Ëî];uæði,èÏ~Þhi<ß’’‡Ãµ‡÷(÷ëë¾-"ë'Ê“¾ÛÌÒ­W5ŽqØWŠÔô݇ô­f„~r*$|`ñ6‘;‰×ðÉÀVŒ>7 ¸ýô•&ãéosLÂ=7–(Œí—ÒåíÑûøbUÔ‘ë¼$(òâØþúwg.¦dBÞó=‡>ÏRÁIÀÏ7 ˆ"ßÞžÐ_¿!@[••ÿZòJu7²†ß–äXìvu…î*}{+€­‚=èU¾Îò€r¯¥ªá¦ ¢n~ÃU@è@źÓ4îv¬ƒ§¥mÚXÿ ½ù²EOú¾´¼ÒôÈ!8›¢ut•( å—=z°RIý¦I`Ê–6Ò;ª3åʳf˜ ƒ{…]Â)¤níñžà ›ßk§‘Ò„ wykì:^Ü âRl‘ϧI¿Ž¿ŠãÇ„@]ߟEúno>V«:~ð†àkÓ;èœ)në()Íqù1´·ÏÓÃYHql»é~ðãÞ pJ¡Ý—4';êˆJKŽX¿$~“C<Ÿ§¯8+R ;}ÜÅ[zîè{>k«õ³656Û|¡L¯êâÌ’~\èQXÀ.º–móì…¡~ªšèSn•Öq¯”ðN~Üï¼¢Ñå/ÄLR>n+äé)Tœy ¾ÿÐòþ80ô–/O{û2Ú§Ú‡€å-*{¸=3Áø¼f|š¸ˆÍ+>q¬W>ÝáFñþa}Õà°YGVËZѨÊL€iàGÛ-¥ø‚3ŽïâΉ’¬•öF«¤dp/)OeÛš!ïMµ'+´Ø±ÍןˆG Í\ù`ñߤøH壸dòÄ•˜ˆÍ'-¹Å74™$Òø/Ù³ ”¹o>e¾ Nhƒyºi8¥uî¿ZimÝŒ¦œÁ Ûéº #¬ ±Rÿìn8ž¼÷üÞ}]i‚]Ùc}½XϾúã)ÑcadÊ«Ö~Ñ,ö¬÷²îvë¬Æ}ád¿l¿™ôÜ©ÿ^ýÄvòЯAÕ‚ˆ@ÆQˆ¹}0aJDÃxa!äêË¢V6\r3?€¯»íF“ÅSÎEòXÕçDá“Ò¡Ê)E^$uRá7SÙ¨ðYóÏ{¸âÄÌ{ uíZiË“C~ŠÂ2DÖòNÚ^ä¼â\óñ6P3߉†5¾4ä¨X4 d¬´ÉMæzE0@„ec/T„§qðã©YÌ!Óõö¥cŶ:ƒ#ïµ rÍCßèÛœ,K,­oåc“[ŽCÌ?î"·^}[*ö¾ª°ÄÛk@Þ|‹ ›â«­îÏ'öfh¼{E9C‡k®yÁ•¶Ö]€³ï j!h®æ´ã­è×}Y@XëáýšiúÓñÎ}ÃשŒ—yc:g$"s©„÷ô÷Yˤ=bÖkM!‹$Tz2‡EÙFçKŸ³xR¨wût#¡[âYßheJýȽº –sÙ÷e‘Ô%ckð¾RÞGûFó.Ó9½Ýi ß’¡=gpîÖÞ÷‹öOh^Ëã . ‰6ò5 ³)º\?žl‡aX3¯F o¸-I¹²|¡žPÙ«`¾Ö½ôr-ÙØ“ÌW’rŸôX;‘ò©¬q’×½@nõ¥KOW*%œÃâF«~úA‡rÞ8nì¾0¶?§§ú™v9)¸üƽ!Í<<.»a¿‚ùËÌRª—ù¾Ë±™ØÀ ´Ã±a]œÒøâ™“âÌù™Õu5lø]OIôŽön Öç£îûï6jœÑ¥q±ZùnM^'ýŽÆNæ°7<«·ŸÑy¤‡Ð”XÜm½±@—¦ÁTyv:F3T ªK™Ç}xcVéó£ ÛÏâ/átï¢ß'f$è© SÕ­ù½náÓŸ9± ÞZ+¯¨®“'®³yù‹(þ I³½ëïØ )¼“7-ôE\?älKEó¿g²äGù¿\²0ä3è ×Ó°Ðy€9ì4 ‰H*‹Y)¦¦ج¨FYØhG. ˜¾´0æï±}ìkôýÄ¡çQåµQ,ÒÕ“µEê[K¦;SÙLüÍKa¾óòÃ*þ/¶@ÛӢËÐç›®EÀ¼É-š®»!W0Ôt ‹•itë&:uf>Œ¶êÒÚÅHÝøU\ endstream endobj 219 0 obj << /Length1 2266 /Length2 15404 /Length3 0 /Length 16771 /Filter /FlateDecode >> stream xÚùPœÙÖ ã·àÖ¸»»»»i qw îÜÝ=‚“àîîî,¸^fΜ™9ßÿWÝ[]ÕÝË×zö³ö[]MA¢¬Æ bjo ’´·sa`adæˆ)¨«³0˜™Ù™™Yá)(Ô-]l@ÿÕÃSh‚œœ-ííxÿå!溼ëÄ.ïŽ övYW €…“—…‹—™ÀÊÌÌó_G{'^€8ÐÍÒ Àµ·9ÃSˆÙ;x:Yš[¸¼×ùïWµ €…‡‡‹þÏp€ˆ-ÈÉÒhPºX€lß+šmjö&– ÏÿIAÍoáââÀËÄäîîδuf´w2¤¡¸[ºXTAÎ '7)à‘Š@[Ð_£1ÂSÔ-,ÿcP³7sq:ï Kó{ˆ«)È ð^ &#PrÙýÇYþ?ô€¿À°0²üî¯è?YÚý 41±·uÚyZÚ™Ì,m@%IyFzÐÎôG ³ý{<Ð hi4~wø³u @RD|Ÿð¯ùœMœ,\œ-mþ˜‘é4ï0KØ™ŠÙÛÚ‚ì\œáÿèOÜÒ dòŽ»'Ó_‡kmgïnçý_ÉÌÒÎÔì1L]˜4ì,]A2âù¼«àÿÑ™ƒ\ÌÌÌÜl¬#äabÁôGuOПF–?Ôï3øz;Ø;ÌÞÇùZšÞ?à½n €‹“+È×û߆ÿ•àYX¦–&.c¹¥ü?ÙßÕ ³ÿÈïçïdéÐc~§ €ù×ßßôßfjogãùûŸG̤¤¤ ®­K÷×ÈEEí=Þ ìV66€“‡àû¿Y”–uñ¯H;3{Ïš}Gé¿ »ýÅê¿Öƒð¿¹íßy PÿCóOÌÌ&ïo,ÿŸÉþgÈÿ?Žÿ‘åÿ•æÿ·#IW›?íÔÿqøÿ±m-m<ÿòxç­«Ëû(Ø¿o‚ÝÿuÕýgq@¦–®¶ÿ×*ã|ß;s›¿´t–´ô™*[º˜XüÉÿ¨5þØ3K;²½³å7 €…™ùÿØÞ—ËÄúýöp~§äŸ&ÐûîüoE ;{Ó?–Œ•ƒtrzÂ3¿3‰•ƒàÍò¾¦ ?I `b´³wy¼Oç 0³w‚ÿãH99L¢¨þ”¸xÞYô·ÄÍ `Rý[âá0ÿ–ظß%[‡w&ü±Îû°¿kM,-M,L\mÿÖ³°rþep±´1ý­ggýCý¶¥³õ?IÞSÿ+ô=§1Ðéó{&KïÎ&ö6ïðý“ý­í?½þ+Ó?M²½÷bjocó¯œ,ï«ÅôO[ïH2ýç˜ÿ«áüÃîèúÎÏBÞ{7û'„í]²tûWŽ?Ìö®ÿ®ñîbþ/ñ½O‹ºæx—<,@vÿòx×YþK|?ë‰ï“ÿ»wXþøûÀôO*Ž÷P»w>ýËþ>ý?Õ߃íÿÇüÞ½Ã?æ÷dï ;Ù?˜°³ü¥uú¨ØßÁ{ç…¥ý?ˆ³¿Oî`ãêüœïŠ÷ëÖùOÞÿSô‘áÅò>þ?!H ·áÃñîîü~Iþ]å}Hg ³Å¿R¼÷òOgïד‹…è_‡ô>˜‹»ý¿Þs¸þCµ÷š>MìþÎ;ônÿßÑsÿaß“züK|¯êù/ñY¯z~ÏärúOÿ³Ø&®Nïкüy÷¾oýå?¥ È~iÞÞ„/ت.øÇ}­¾;ÃÞ¸À ÅžV ƒ÷’ÓO×GdØdšš¬À §[‘ä¡nÔÕ êáeâï“–zذÖD•¶'ŸgÃxÕ©½6øÅI¬þ‰¢‘ï}„p êÂû>/Ž>šÖ-à²yŽ®ÜÈÊ÷î½Rßû*VFCç÷Tök8åž+¦b4¢?”ÎRägÏá¸0~ E¿ð@™½¹AÏx#–§ƒ÷=a+öÖÝdýò0çµV¥Îê܉KŽ«‹Cyƒ>:Eé-z˜"‹½à]V½!°ÃLö1ÚGì3ÒAò‹WO^›ÙÆi‰Gj”Ü·í;S€v"\Öžš‘mà ò™»»¤TRsI¯Áþ`Ü]¸©‚[,¬¢§÷þÖÔÎÉÜɯº =¯a=³m8ømÌÕ&Ñ5ñ—0Gß 0×ûÜ>EV™åäß¼{¬&Nf<ö=Ô~öWJœ¹"ÃÃ%§£ be4rQ Åß|Ã`ÿWÃÓf ÷©‹FowYRc…Ññrÿ•ýWþ¨n·Ü“—»;Aƒ§MÒD‰ ‡1z±•Iü/]Ì*äôHúD®Ü¢ù¡ ¹o¼÷d²+¦_…§Ú$OÁÇÂîº +òŸLÑÈÌéêOšO"¡fu³Ã€~ÍM©Z‘Š7#¥9t˜–wøuëú‹‹òÃúÁ±ð%ÆŠõFÆ)óbdºÙçîn‘¢waRPp,¬ÍšÂõª³(°DŸ‡†¯j$»…ÌUÓåÊ¿ëGŒÅñ«Í(6w¾¡ÄV ÜTlëô$.é×’}NÕéÒ]ôö¬‰® û6 E)®?s–I‰Þ°×:ÇGÊCТìûàÛ¿ÑÑ3¼™·b4|É[‘&nX³Û18¾ïwšQhš¡õ°mžÃÚ×ùšúqTðt‰Ñi£*ÎÁÌ›Y¼Ó‡S¸ò ÷(›Oÿ˜©¦ÝÂgb’ñ¾TUj}¨VnÒ6ËæÖ`•RkÕ;jmÀ›¨©àâÅV²oí¼’0»>µy.}ˆ-NRî³ Vh1—0–:—Ȫ“’2r$#ß—µ¸héa:ËPío9|¾u ÷9÷­út´o$\+‰r ´9¬Ä‰Êü(ÙÊT`=—çq9¨üŒag6—NŸc¿pÕ;Er×ùÙ“’‘³—ÍúCÏerzh8e¹0º>KÈâ:=²Ù8kë•v‰‚ÜÞ´¿Ø(’ ‚’Á€J˜wYNó¥ÜGc꼿ü$Ú æ¡C¼¡ÈåuÖ4µ»4O *3‹cì÷?:üÆ¢3+®.ŠKá·T¬mŒA4\ð©ðu&°IÇp<ÕIÉ£owq-,I.ÓMkÂHSþØ,¸=…u’ªB) ÙÉÙWÝ%ŽXÁ°Y$OÑ´,æîw¬ùìL%y¹Íl•۟j¹¼V€^ÇS,G4MŒ›é¿¢$<u¨Z+îŽ9Â%Müì¬ÚY·ÎÁÌ›|<ŒsgAŒy¾=dó7ΕÑËŠìòl®ãý2º‹d6Ÿ_¾z•¸w|YòTff~JÑáÿÄoyI¬DDMå];W7‚ì^ùª¶¯ʤâ»™ÂßþÎ:1Þ¹ïKt'Yí/:Wf?Óÿ Ã*¨+õL·$ádé*9®:\É{J2-¢¸•©5ðt?ÁDZ–U¤l+2;H—§¹0ìµ6\˜i‚E†cÄf Ž Ÿ«ìO‰W[»Óu\¯§ªšY!V,ePÃñÂCv-òk‹Nh@ô„ü`u€æX8¡Ž·”Z‹jŸ2 ìU´Oª—Á)aT=?4yKÇÒ %X”Þ:²ì€Õo¼R‚4Óõ²mIgó±Üè\mÊÀˆ¬ž:¹z† Æ6ý‘AŽ En{‰J0-KbSY‘žWáÐ;RMŠUY˜óSî¦ÃÅœ–v •ÿÊáŸ$££EZô~îÕ“M °¢Ì}tIñ«†ÃX©Quõõv†Ï7˜]òæÓÆî$Û©ˆ£?œ{†Õ§“ÀªÅ;!‡xµIôý,ûóÝÛÞ‹Ê¡`£©öº6- `ºÕÕce*í¤#@6»h?Ç®¾Üõ䡯ÝÎï¤ùß.¬¨ÊˆÂ7© *uXZöo+#ò4:¦ªÊ˜N•¡Õá)Œ(O ¼ƒ©qäúxÅN-Çäx :<¤û0ܶ%žgÙ= 9ˆÂ÷bó–ZŸ#3zé¯sJM·m8¨ŒGŒ×éS¤oJ‰µ‡Ü}[pŠŠvwº½RWÐ°Ž®cDMßæ’ Ú¯»ÌŸŽfM™ !aí}¦íý™‚¾ÕÚŽ2Üúèp?ÒÏrVçkâ/vJrî-‚7鬰Ch$@CÌiñÅEõA¿ÊBC/3˜^.¥~ZfépËU×~^±Š#Ñ„údÍ!pÜO™©“jI´äþ;tÄ» ';ÔM¬&Jäµ# õm=æÈH2h[V‰¤³òÕ«? §P‚‘†»P$Ëň.uÜþxé8éÃ×j$ÿ ¯Fû$>¯~Õ@Ú¯c¦qP°4Œ.2Žñ ¯áD´ÌyŽgþ­ßük‚14àúØú‰c7¹Pzýy”\õØ|b.8œ˜!·8ô/¾>-rÃn$k¥8ŠË÷ýüñÅ{õ—QÝÇÄAS÷$|Ÿ…`$)Ù7/¦¦¬Ciªv]òàˆ%°ôE…ñ"Í/±ýº¨£á_À‹>ðsmx×È;¬£õÜiÒP` oZ¯²Ÿ¦«Û=‹Ùù² 6é¾9 Öz·9awiè¾ñHTäÎÏJ}ÝrgçYÜ4²Çulc ,Úú|„챫â“eÆC¼P%Ô©}Éè:(êa&e,ñÌè®Å÷’nOß ‡],*om-×à ËcöÁÜü™ÜæÈ§’ò¾ÿ4²Â ¶p–ü6‚°ÃlµQð”KãÔäÈo¬§¶Œª âc˜]³"Êdú8KtÆA‰Özå+lÙÒ›æ*byš¢+ ÏÛ2 ;Z”§ õT÷ëÆRYRwg$iµ×ð6²½R·a’O•‰î+—hÑ~p“®¿ñZûæ0°䑲‡o,w H:Ž™ þ6«Ór~–5q¤^b.Zo…±ãñ"y,[#DŠ®ç ß° =ì0n½Ø•7Þ™PvªÁí?1—è•°Þ.*ôÝÿ"û™—H.ŠïëÍc¾ÖŨvRð ùb/¶ñÃN½¤i†è8Ѽ¬*58§ƒ:í/v’¬˜)O0#*…†jH„ê5¿†0*•EÈúÍâýÕIÍ¢I¡„@w©¯Ú¥” ªí½'úe¬òþÇ¡½`œPˆ—B4Ü”£˜L¢@T³ Û”DìVæð† Ô&þ¾(Hmfp¯Ÿ,äœä˜M¾OZü,V{–Û\œ/äíìß@àµõßåò{ônãùê®*‡ö-¼kW—¾„ õ#eÔ;jÃ#cÌŒ‰5_XÖiLŸ°¢‚È~ËÀŒñµù+ëc£ÿj¸lÁRïxM~>Ln•¤O"ÊÌN ¸Ý1Í|^àöY]‘šÈY_;ÿÄ×*o׿c¾QãA¬=ó1…Dˆws ­%eË…Œ¨gKˆ¢eê.Ù<8R­¤ç•‘  ñ oXФ>ŠŸ"BZ1<†|î=U æt»ñr-Š6‚‹êƒ³ô¨7é_3rZA§tê< @B–9=†AÅ]n1Dû€Ä¢v¬f } †³§C~bDSÔ]}3Õ‹³À ‰uÖ‘Œ¦p¯Š®?))óUÝÚã"ÓÊÜ8G:Ñô#5/|×öyecô$D*E‘ƒcGŵ –_• Á‘—ý²·A˜‰¾Sæ6§ýצІ–›üÁõ*éDõU±—‰@²ߤãv€>÷ùGÏæ&Ñp{y'$o³ÎÆ*r*€ä}Ÿ/íMÅm2úcÅ£‹©sV¦¸¢—Ic[FéS ‡Ôç1¿Åîæà˜5ŠpÖ´’÷€-Â3çëî¹/óÂß‘™©& FRjŽR­ Ÿ¡/& ,;eÊ;+:Ý ”Hƒáîúž>ð¬ç®q—uÊžº¸ÜKŸµiY¦c´ÑB ZÔס‹q¼Vˆ/¢mÊþÜŠßéµÚʿ/6)šªSŠŸ+®ß:²aëš:Îùä«t„+Á¨nÜ ‹6×ò9Í-R³ þ 7¦Ÿ]õˆ4–«¨n²áøb ©Ü>T6õ‹Vef‹–.õCðñ¤´<Üð~Ø8—©ROáþp°£VT(0þ ·fµ;‡×›Öˆ–T†(ÍóhaÛŠGQætZ?GŒÅÜ çÄȇ]y"ãYÌ.ús%;*nÌ¡çÁŠê¯$Øx³¡T|„¯!,X€°Ð¬a?*Üß@Ý~€ÍAÙLÕ-×iþ¸±¿ú´p © ~’»Ã¸U&f✅6ËÝw>ª›²IèzƒGþ êóß~]RÁ nTÃ8à¸>±!œi*M¥:©7‘%g­¡›“¦Ò VAèð83˜”ƒÜÀ ‹  s¦t¶üZÅ©_ý3¬BWæbgU*?’9ÀûêÈÀÊé>ô…Ó·Ï܉¤«*Ã*[[òßi©ƒï%Å!mž…»Œ+…'(÷gØŒÆÞª{Ó~bVG#¢]ÞËSÌC¬‚fNJuÀ}ûõ*QŸ¤]ÿ iyýA< ¨³' @wúÁ¾8'Œû`Ú^‘Ú•tàVÃññ;Äqk³WÜL•®ÉD@Ùâ͹rE;ž›ð5cvÒÖ6Ê?c…O¢ºFþ¸W?KÚ§Z-±»ö[X€ìf°¶£ôâ~„°¾tï ¶³­¥Âæù¦ÿ!}0xWv¬Æ‰Œõ¹*:ëê a÷ÿ ª£nŽš³ óÍK=_˜6ž[9a†™9kž[Ò6ûz¡]bHç’Ä’ÏJ#2ì½Qv¾c´P›_Yæ¥L«2Ržª¶ ºgJK|`£ø {1ÖÃj(¬ü#„ûOWþRHæ ¶bÃÛH¦Ã ?•Ëëï®f×Ûð—T2pŠPmÛBCŽV—é4ðÃ_N2fêèróEЦ' ¶ÛÊ9)¥'“Äxæm }z¸œêÐK=Pð†]É:½6ò¯SWšKt÷Öÿ\ã¡|cà/·½>‹‹Ýµ©ó¨">’HzßœDþQȬ‰‹(u9cí%A{d×þ0ü€í9‹j›N=äÃuó9×ãžG²=af8üÑ~ô<-Érçƒ<¢ .aBO`›«¥É¾óØ®¬¿;¼‰®Oc×Ghr±A½)"ËÈÐEÂ4éØSÝf{?›H¼—ä–û­ì¢ôpšìViÎÍç·Y¥ÆzhJB=—}|˜¹ªîa-Õ…B¤9Z{>þ|s_e8Ïb ’´!¨>™FÊ=\;û²Fãz«ˆÐ¸ãÉ»Àjo~Á´dsVEgƒPÏtäˆ7ö!ú|ò˜ÀÄúÔÉ…k,⛎W,¯=«ÄyðÄ„JaÄK<1{ù¢¾£>¾Œ¨ó’ÛùmTÁÈÓWê¸$ {XˆÆ$azýwJÆ×– ·èðÏ/6àCŒ«ˆö7DX s®ánðrMÁjBc̺ü„?® rì% ¶æÏ“øµÃM 9$ƒÏ›Mþtp$Èí›ü¶R-n1žæÌ<‚¥õ¤D,G%¿>UƒÆ«d՜цDeÔ›¢çfݮЗ@‡ ùÄpªmÖn6ä>Õ–w§ÌŽ?áU<À¦œìw¤U¿§»y]dö]€Â—.ÙcÊFAåÆwi­B•šT5@ L"ÄnÚ­1,¸|ð¶ÏQ {bb×_“n˜§I2ð3ÇÕľîCtO{#>éÍ>Íð“0”°×rÈ'­+ ¡É0¾bÍ%Éœ±„™’e¡ËòœQ¦ËÄB†}Lô™Ùh4¡mE§+«Æ\•Ô²3 UðPÕqM7V†l ¬vË8024W°æÐµïµ_û¸KP–û=hÚ,/ò3öÆ/©nÁÙçņ“±pú\Ô¼ª´së!} nŒ&!È´ÜE#`¸"“‘L)ÊÁøö+«%dÙ£Ë5“^¯ðŽŸXɘ>ЉsgNû)X«™â‡XT$˜Öm„Êi„ŽQÙ‘¬¡hÍ&‘Eé¬ãå7" ßãÕÄ~mo‡¼Â]ÕÀùA¦qGR‰‚n*ÐÛØ^.SfßnJ#ؾß}ΜðŠ-¡k.Æ'^µÝ‘Pí¢’ê±e\íqÞ^f^óS/슾强ù`TŒžá†nƒá©U(Á×Â×$Ž¢š2*Enw…p X: ^·høÈaÒ`Èæ™Šór¿­D`‰ß„â£ï¶ˆw߯ûA1Wççå¤ÆÎ›–Ž‚ô½xºvÄ=e™lûÝÑ ÉQêâoæý‹öO%˜?䧪Mo¹ ¯«UÐ5¹TÛ²¼&Vl%f¬ðŠ ¼lbbq|J¨Ãn¤ü~XƒßE„x:fÀ 38ƒÞFÚ"o)}å÷í\³KüpŠÙWr5õF7é CŒËÈ]n+ãXŽ}‡æfºL¦žk¼w+ùù3ÝNïV›7°F½æ¯ÃøÆÀ.S' ×ÀxF`ÖqH³Œ]Ó‡ÓÈ=&+æó5OúZ)8ÝóÓ³‚…k;Ì9h7~ÄÊE¢ MZ´„ºbCý™‘J9Çjþp'Ìßü瀱حãó­0{jÁß8Æ“ï|¹"?Ìöc-1teÒb7ˈ}õfl ‰LÛÐíû¾ û×I)žZêž]:çñDZ<–;Æhâ/ŠwuÄDTîòÝHHà{ôèuV¤ÉG`Znß=ÆÍÜ2[Š(éçB¥a¿†¡N5þÒ 4 ùÕ‹I™X®ÜéÑ\O)ƒŽ“‘þvRk)@2’šwèŨç È ?~œ‡šÒ¯Ï?±qûê©|½ôl=£Gè‚Öê5å¾Ë7efRÌ“Rs¤¨Æ}Šî<—­S%ËnéÜrAEîD—é’ñ¶ÏEL³aK%¯5ª2‹´#Ï•HSýÝüÖ¿) táwüX|#)cxç73@8ªDæ í6ÿ2ø$ÙÖiý655ÊæØN1Ãì Zwz¼BkØû,®"‰Û”×’cš¨ù£V‰äý‡’þذû}j2m11C’ÝxçK,½¬¶Iy ú³PÔ£¢¼"­^@µâo )üCYøb„É.:S’–%*‰8™ÎŒ]ª¹ÍõåöŸ 0ÀýëÐiÅ(œµÂz„T?S™BéDT F’e~WÓí`Æþiç Vædyð€SõÞÍ^ºzfó“EÉ€ re*„&ÃC”Ü 9nùÐF ¯vm&*± zJ´¨„W¡¬¼PØ?8ë5øº8`Žh!&†{ÓâÔ p/$hu•“0oùÓEžœ7IñÔë%!üdˆ{ÜÌWCÓý¬'Ø»]ÝàËÜ ì†.³Màl |ô}Í6vY$™Ø.yü†DC`Õ`/4´–Ù³j gަuj+Ù}Jù`U¢rÊ #†·´:!ŽÞ·Æáf:ûjW#˜ùóï‘NlhS#•!6Ö©Ö –‰ñssƒãÛ©el`1´9R+öŒ‡‰Ì\‰|5úÔÒàvç³æ53DQñbg䙯åLx]ÜðóÛœŸˆ_‚Ù)éŸsøÁ~^}ˆLä:UÜǀܺ踭y npû¨’jéåÛOÝê”ôãZqK°9Sð‹ú¨e¶*b¯ÂjœY£ °‡R_Ä1Ñ{€è²Œ°uÔžÿׂ+‹Ek¾ÎˆŸ7ß3»¨‰ÓÏ¡ ¸5­ÒºV©C 0—jºÄà"FäEš¯"É 2Ù*…f ì|Oï\Ä]…H:»Žz®f§ÔBEÙ¶VÒGl_Å;ÇÜjm<8;µÉ+9s£ç{„¾Ü-= 1‘½'to×(œ®§?^'ÁŠè%Ý£a¬LÆ}­ƒsÇï~c—rû~^y–ó ïv·@oôÆ_f£ÈípÖ§T»ã@ È®4M¸¯@k28ìlÓâ̳fI•WOJ²}[!úèoÖáao Z¿±ˆa§oÄ €ÒCJX›DÉÓ•–ÏÁJm¼– ›9¶¬šZå{1Þ»ý+?*üÑK½þx”Äž§Ø)-p~åwÜ I9kGÑ£ÅU³\B²{{qÂK®ô6+ã³´;œî¶zϱ(—^³¦º7„àýjJç«á~V—Ü™%‚× çI œì'*b€:lPvv‚kxŸ»­î7è¹Ø%D}†Aß4eã&Wtoì^7u¦7§eÙÆlÊ†Ž˜¸ZicŸŒLÂð'a#Å‹ˆhÕÖ¤EM†1!gy{¸F~èÓƒî¿t»ú,içŠèLËD¬~«˜%2éç½²Q €²<'â·¯„Ô¤¹!KºËRg`TüA°†0`¦”ï>¸k“Ç@ì—”e0ó}ª;Ù$ÕeIw€CáQ*g“ôl¬ÛÈ3‡P’<&N,#ƒm´UU}$/a…iKÕ…´ò÷fÅ1y¢îLÌGû£Éóx+ƒžà‘­kFçLӡ͘Pí¿“™e÷ªEË^bĨw’MMÝÙˆ°í Ë¾¶èÐJß<$]™o Ð×Lç‘&`iö.¡€ekm'ŸñP‹ –i˜c&5—Ê NI]ÞÓ"Ü_».sØÉ"– ð¥½sÔ]wãõ"‡÷%hòŒåkµ~ÖkçŠV®œóOâÝò{Ç7§Å3ªóhÁ°~[‰]g/tÁÎäÆ _©¨"·~QMn“+ºg6̺†êñ§ðˆ+i\kÓ…‚ _MÄ9äX ±fzU•,µ× ÿiPóÅX¼ã·<´«`³SE¶x‘ë^!.·’}¹_dÞú$~Vkz6h i¥ý¬ôm¹ÄO¼›[“¥õ Š#€Þ„ãs0oñté*„xem:æóî2¨ø ŸÇyKµúíÖ›J?ô Þ”˜ÊL˜ºaP]`D@°Õƒî»Ÿ¿òÃ÷Œ‚X79&ç¸qLˇÄh¨Z‹§´V>¥‚üd}NŽ;òÆ" àØ ƒô5R»¦\¸œX vjËù|«UðG9³;¦eòtñh(‘^ó­}¸6hȵ\¥È gNSï>ùÆë¢èó\’Gé™N¸p¼O+qëîö,ð°&c3yþkQ2×tÛH§Ÿf-ÍuÊx sx¡SÄçÉÕm‡ÞLö#«Ñ•-舯Y´L‰!­Ñ_„c4ìt^ÄçòÁ€0œó o ̌ӣ‚4}N×â.#Îþ‡Á–MÎÄ­ñGßeŸ”³ÉÌB/^6SGkÖÉ?ìd³]‹ìSßM_Yr¡¸¸E"+Vb2?Q\¶í*‚gôÙÅôe<Þ¦«bY(ybªi•`\A-wm¿ò—Ð4z©9µÙcþõÏÍ•ã a|:¸\V"]ÑÐ ¦—Ñ8_ rØæ$³å飒WêOªd/_Ú‹®fƒèçÜ>§bÒ[òugö €$üàÚõ„ÈqÜ[ÁdÆû×¬Ü r'v¶JR£ðÐ(_Ql~ß²õ’%|pÊãáÙôòD0“Õv ·j6ûöC7fžÛ~>ÛA)56Üe«ð‘‚YÅÄ—˜i¿%ƒÖr©±Å=ð+@6Îrqx÷ruKÅ­ÉJ#v:m³‘àÜë&6c*ôøçPTR~%Wî22ˆúG©Þ/‡¨¦£G¾‹á:w%´Œ§õe®&°vô|;C™H@Ÿñëó[´:¿Èº‚ß¿R|‰Û”Ö„)t×?§TR|¨ý3 $lcÑ›–dùòƒ¹^s¤òÕ„qœü€´)èâ¹áÕZ#{ácRžLZèáñ$[\UšÂ !Žû8¾å&¦r—ðð†—A´[Û/Gdq²¦]xIëO—02è¸åZQ˜ÇêÞC;Ê +é|ŸGÑ[ßD¦< LŒ>ý4}pÞs5Pä?øìïÅ}ªÏ$ÿæƒXÆ–@²l’J–ºÜa*¿¤v5}"GfÆäÁℬ֌2ßä‰üþ<Éÿƒ¶ÛÞý7ß÷‰ô!QÞK³€íç;ŠÙïx½1ØX1üöŠj°ÎÀõLäûe!¥½Ø§£‘éZÃiu)Ö_ã—no9Á±ÕºE™-o»“Q ÆjŠÜ©Îh#Nz[Û3Ábzí,¦Ævî¤gS]¯+À¢¼‘'©síÕ¬v!=1S¼ZñaE¾´e…Âæóƒèô MUãNÔŸL NÊÛ¸1ÎJ¦ e°>©\måÙ¡fÀ 8ncÇìÇ'µõ¦„ÙýÊþ¬+8yÅت²ºÑ=Â,×IÌà굺:nê´<€´ãÞf gçåE(Ÿki­Y^YnŒ2þ™;p7û…бڲü+ýáÇ^`Lð9¼WóòX@´Ž ’»Õì¡cØÝ+!ÏJÎ@IV5cUÀWpöYO…ÉÊCþV'$pF؇Ÿá ÷ñÉ{¸®Yk¾>“ç>2Ã*ƒ,’"AŸŒÍž<ðœDÙo¢9?VhHyÇpQ¼…é©ÅmˆOÙ&Wvü-By‡‹&?ŸÈ8EœvP´ðœ4 uÙ8“RB°€ãg»ú×ا¼‰¢ª$“cd#´9ñ¸féjBç@h`» ñ,XH>…0‡j³ [«U/ã¦W†ƒÌ‹YòQ,Fˆ9ܬöŠ!:àBÃñ‰C+jYú%6ˆ–š5ëñˈ_zy"gw¦Šƒ•u§cì¡% Çɘ€+RC+_í8Nßòé:O•zÕЀœztÝ”Χà¼úaò¤wÂ4M8rE—®yfÁ̵Q¾ ¬|˜6TGÒE=±ûŸ–2ì0‹… ñ«œµhÜ{`?×tùšLô[ðp(©ù‡øß¶µÙKýN½IIÏ«»\å]DQ3DÛ÷£}ê‚©u]‚9â‡xÊã”e2Œr ‰œñ†«‚0uâŽÁÓI d²iTLÛÂâ‘­Ï? a—u}â¥HÍŒ-u€íñnw, .7ã—Ï,f­és|<^¬ðS+b`ºÕèà¹JõG(þ"#’‡{˜DñpKªŒgÒŒ;æ%e5–Œ‹zhç"òš1 ¾„øa«GHhDšÄ£-ÕÒž+jÍgöz÷)¼ôžÃÆ•ª0K|¹XѨý€C:ÊPí¨›²Í*‰9¤io@è…skÁÓzË´fäþæð±tUL›¿Þ§¡ÆIw8[:Ò,úÑÝŒæv^¹V€Ë]ÓªKa=!T¬.‘?ƒÌÀ·-FCmº?°Äï~€TOÀíwNH\1 “ŠŸíðŒ(‹R¦gUt 7_1ZÜX»ðƨY ±,v;«ÅérC°‰ã‚l¡“;1Bˆfu ‰A? usÌJƒ|fóð*Öø…‹o°Úkaÿ2TCãW\Ø- BÄãÊÝfèþ eäTòÞ†Ô‰„q"j\wÄo•hç àOu7š<ÍS‡B;G×yÝMRÙdü>a±ÖNAþ -/ g›’…@ ³![ óvÓùÑ–ÓuV4‹bÉÚ Uöá¥íujSÜ÷Óv©+Ž¢"E£ «)¾À§ëÕssÞkû˜KŠo`.—g #î‡íì¢ûkïðm¯“>§˜ü†Ú &×ü Ä`_ ã‚)~ûÚ7L§dÞb{†ÈG’6»âv.–òyêÐ$v ð%¤»7Ù­ÍJ‘e¯(g2ÑRÄBð!ýÒ­²hE!MA9"ê\d Eó;F‘þ™Ò9ªÅ$uk¹ÒÄ«üMеÇp“d\+iòa[é<Û$¹ë7r¯œ¥ûÕÚíV»‚Bà—IˆŽÇï6iœ`=Æ~š›¶i{¿IDÆæ)Ö,ó è=†°ÖÕúáý ˜TL`žó/ÜëOu‰lJ£ÁY'¼Jò÷%q¼D{Ôç¦ã@AÄÍóS O:¹…«.ÝtºÉdw¡°üM7.Ø£›bÌ+®â¦¼æ¸d­Îî}–ed™ñùÞ§¼‰‰³árνù1ÑÙÍ™¿Us¯ ¹ÄŸŠÅñä |8„¼ 4éÄ@͹Gž7 *lÆ¡Ïg¿¦É-ù¬Þ\x…ªXwVújÈ®x]Š[„aŒá±K‘/q,PNt-• …]w"+r 2û!˜…¯<È1ƒ½#ŸLXG X£ƒ³{õød6Dò'wVÞ\Ýc/K,}¦`Ÿw8¯erKmwwÿþ¤uÂÊ/Üýˆ,S}s=â~Y#áb…\ã–c‹Ñ~ ˆcýÔ£ºü€`Ñ®) Îç‹–llÝÏík,£^#9by¿»›ÈÛ‘›ÒÓ¯y„=ÅJiº,bG×¾º°ÓòI6z±,¡ÍVX'ª]°,%+¦ô•‡{o~Yß*wUIÁ3+Éò ¯“bÌ^F\b²©©ùô¼ÅÙ¤™“¨ôÓš‹ˆÝVèKöï¥Ï”üÚ¶pDÐW–7[ií„'yà ºÅüÍ·ÇÖÍt¿¡¹àöà_&z8™TØáJE˜í8¼ðxnÎ+·üM dŽïÑîæð0úÙºž?Ã\°¼L.QÖ«wˆL3L×®‡/ùÂBB±¥“GCCb³ x—…4î*k%Rã§}îï§!/¢Çh7ô:o¥¢0¦w"EùŶeü\{јñ‚×ìðû‡fZƒêÏ;ʨWžt#)|1¸r-‚oo¾2®ù*`Á¯eÒ&1ur»k¼cC…ÅëùìwÙ‚}šêp?1>£Ä™Ÿºa¶Ç~:·ŠEê‰ m;øÔH‹NkËÎ0ºb<Ôrð£ä¢=*´ àZ‚h€ømò¶vÅ\U’ÆH²ŠzÜ]׆ã„Í*©²ù¶ð ¤˜›Ýž_AfSw¹ëAÐòÑNæ¡ P ²â{q4ŒȋԶ°ÊÍC-aÌš8¶ro\{qĉ¨H9¡I #¨e?h°OŬBø•Ù.…µÔÅÑ!TÈz‘€0ËŸÛPÝ=eDÙ‘G«m©nÕpHƒÜ´ûáI¹¬°.[·W§ÎŒ–ãz+yƒÇ£· ëüîszIJ/Aá@¥éÂ¥ñ0JŒÌJ¹„Ñ~˜ 8–sóžÎÃPól’¥ŠÝ JlÁø¯ C¡þ³ŸÃXéý*ª#2cTtm›eHîæÁîÉDìPçA‰²»UE«P9Ìürí"_iÕîn‡ÏM‰Ç^¶. ÞB ·­~û'QâÓðIE‰€M_‡ MŸ}¹æüŠ$,”=Aµ)&Ã$Aƒ©¶ 5€Ÿüx@¢¹¶{Ãñ–& ¢Þ·k|*ÁúœœRKÑ× ßÎhfŠ€ÀKkKÐÚ(t»IÄÎ|®„D‚‘&Ÿ¡·Zæo´Ç"¥"ÜEæeU°+)]ö~ —'‹œ¿–04U›{Ò·úìš±¦_›òô‡ÐŒ- [¿~÷Ó.e#«Ÿ =s&5D›xÒCö¦Õ¹ŸYN" c™©]ùH¯Æ_Ì{ìF]ˆ/ïv+¤Ç'ž<ð=WÕÜ¿ Ÿ®Î¿®Dc*SŤn !0t#n áÖ‚7{­´K ˆõóAÚ€êÁT,›wǽ  Ý6”«¯¸½µÓ6´È øs`WÞ¹Ö…ùè)yß@E ^¢7æ/Š"Þ ÝdƾŒ'ï†,O'œ( qb[ B¥åJªœmŸO«orŸG«Dóª›Ël$Ì–×d~t–|$•¨ÙsÀwµI·éÛ_fÀ!ÉÆ¹^ÀBFÜ+×Õß)˜æêræBÛÄ”Þ)Z¡“©PÂÊ-ƒó\’HçåO{Ü«ÍlÄ-Ð@MDÈh¦ZÅz=AP£»R¸‹iÕµ†|2ò\jÆ)©=fŽÒœß ½˜—Æã¦¡Â(Fó#rÚÁ#Ö˜›h£ŠýìO#^ŽMf¬i¨b ó¿:f_r›­…¯&¸‰Ü@;¢Ëë#ºçäU^_1«gÛÊ$tØ ª+áɶûd v1¸¾Mu/­:öBu`0†Tr‰}…ßÅWˆ-Êš…NÚ.‡vil Î¾ ‹„Îi^ †i 5˜îU\®+!Áò©Â¬Ñý§iI©à…Øpf’­ý|>x,üž¢ÌÕÅ•:û–go‰ K óó¬~‰fTl,'ŽkäâÛØ#­<¿7>m¥†\ÑôfØîtûËQYHƒ˜øFš@‘N8…DZHï®!ž‚È‹›F—V\,u¤–L›¡ä _üVxU‰²žÆMþ‡‹V°Ú­9A8ýÓ.¶ÝéÁd¾oŽž`áX™@„nO:¥‡û¯‚…Ü÷“`ñ•7ìŸÙ£ïmçûäŠhrŸJ¦&ö»{3ò­ƒÜÓ÷Iâá[’óýG‹;}¬ Òà2µï ýŽbD¾ð&Çÿ;~4¼/ ?¦<û’*LU¶¦4RüãaWí n+>ŸMÃ8!†÷qqE|Ž-ê…†‹Î6zH®R*ž£¶é‘Ò7¾äúV›'«>íKŸï8BDo¸·[AZÑ/¯û_¥{˜ê;a´§ášêÉlè7j²ÒQ"ÉT²gð"BrL)š¯§:°Ì®ñ2HW\vo½I»°ÑÃmªÄFØ»¼É÷­ø¶1 Dúåà›†6ÍiˆŒ²kà¡3B®o‰Jø~hˆ¼¹Sq*Ò\TƵTÁÚz„²`CÞ5$eëÞ¢SÁÇì‘ÌŒ“"¾³ÅÀÕFSGØúÖ£µÛ¢7!ͽ'¼ycÅôD+©Óˆ¸}å^fωb‡]›íùc¹( èüS¿:)c}ú‹ÿjïË'˜Od:;k“%‡±—è‹MÉaãk¤dlm ä¯dõõ=ŠÕI®a‘155PMýüÚßÅ*'*w 2IãCοïÒ|}Ne^bz~µ€‡Ö™ÌÎuêÎBð ût„N~•Tvİ̈±A«…¿£Îr* S4üéRÇ[VÒz“ µ‰±òÓK›MÑŒa¶¦€ t1Ý!‘œµ O¿õëΫsë£Ê0µâ qþA³ÒTüÈ«ø³iò«Õ ΆJ ÔÛæ× xZ4ñ€]ÑOsðRšQY“†pp/oíyâE“7®ß¶²nL·ä8GÎâÓã@“&ß|àF-9ö·?ñ¬ot€Siþþ8µøØT$b™_ÁkdQìý1tµòÉPJ3gÅJ<åWV\5š–‘ELÄYkÃt2;Doh¬/j®M‡ÎzFÀ¤ª‰Ú°L#¹÷+$m–«Ÿ[&Áƒ²¨è)÷VI×c/×^Âz£ç¥Ì®®æÊ õÂÖxÇË_‰1É—¶ó0ÕDŸýû¦¥Ä£Î¡K.à!C]…âÐÕ¯_a¡ì•Sl>EâskÚ.8èÄE”Á<@š5šh¤ÉMRhm³t›CÙ(œUä}9£Âb)Šìâ¿£ÒWÑ~² U]¶ÿAà°ž¡É§mJ¸C§}–£}Ëv:%=þ¸O•ühœ2ü¨ŸÞ¹—ífXþ“¦¿B$°à…Å?<ù#g¬ˆ‡9J^U{«ðˆ¢Êo½þ‡Ý‘ÅØªíÜQCO×aOwäÌ»°QR^Œ›!qŽi9¢ø®æ>FÖ‚Â/jÙ‰”þWxmÌ ¸©ÈbbŠ>’Õ>Ðõ.Øê0|ûø¸&0ÏN»ß„6dÃ5x¥q¹ár§ñ:GŒ§µòsƒ®÷‹ÌÙʰ3¦¦Ç„|¢BÂ>÷ÄpëféÅ,Р™[Ð¥ý¾ÞüÑQi38}.õÑ˯¤GŒ0N¨ÉÏM8K§ìú&v&ƒ&ÁÔãŒ.êSI=Æ_JV+•ãlÅt‚êÏ,k¿(þ2FÐ*hZO7;ãvg*˜òÜÏ ‹cƒ»r ½D‚e¯ ^@<ô¯Z(ŒÉWÕN÷ÝåYÓI¦Pu[k5áxÒ׸‚Úb«l*kNw‡8âl0{¹Kt¬3Õu—ÃfýÍqŧdj$Å…l[A/zˆº<4ã â±Jú'=f¡íóÅßµ’«‰/KW–ˆapçg¨E ˜Ée6‰÷üA Ù:*ºº°nëàô­z©Å åâ>†ê ‡óêÒ¯I–¼.¸êöÀ‰êÕ¶‚¤¼[÷ç1#)J1èb`-{°?:íz‰i˜äÆbï2—òN:ê™/ffz“kæŸ ÑÏËÕ7pc fS HÁwö‚ eÎ §¯7eÉ’ìðÛƳ•ªxö„Cblªs}•‚…à~âT“iB?²!CæinUwÈl]å­tµÞ‹˜ú‡h=E1òKð>j pŠ2ÅͶdëXYAƾH£„‹£*!/‰—aÍü¿tUó“zñÚLNÉ8"‰ÅK‘¿þÔ÷93Œ}rD ½ÍlÔ‘„Ï@GÅ«’¨›(«7;9©xÎyÉÁé ökñ‡î èšWUý ØÒ¿º<æO2”ç–Âoۉ뙴3$ƒBHû«N û”áLŠxw}HÆ,PËôä’° Ê´ÙÐ5î£p#‹>¬WÿÂo ^â “ãÀk,ð3@Ä ç%-%°’¸›€4ÇÝÁµzëÅFÿsæ’ŽxtâWÞ‡F¦· ‘¶\¶….ßõÍ ‚‘…C'¿¡ÌNL>úä¿Ffïrê Õ’œËÕ·|©—›c ñoÈ…Ÿ™^‡ 4PñóËoXPÅÑ[4Ãs©$ÿÊløëÎ/Iê­±Š\Ùf¨’Öfjr®L¥Ä^Lh{m*…ZAñ`4BšMSØ_G1‘‘ä9ÅÀy%ñ†¾Ø¸Á3Oúä­f†¶¹dê‘*ziÂOŒû­ŸÅ¤ÇÃ"Q MÛÏ’•h¦¶ã5òÃêi¢H6k@ÒéåRàÌ]f!²±ÜÈ!ìW.o×±²´0]>J‰%B͈ò‡#ßUín]+‰ÞýÆtÌÐ…¾.&±Þ‹YWÚµn(ã·•ü âù¢ LMTŠOK#ö†Â\\{Ù(^K×ßÑb|ñÚI3«%3]ÙƒŒ®Ð8Ba:4a¬óÕ'Cn&ž¿;âØ±X™ è46î Å1(üS›Qƒ-(e,ŠÓÜGT©4þàCýÉ $_Ô˜ø}ö Í Žï•Ø4¬a”éè¦j祈û,Lï‹}X/x.÷Fg‘©¼ÅOqUM'ØBû¶ÕÒ¯ü¥‹F‘vº¶ùM†ßJÄW4@íÆ ûš;ˆU+&I˜‹ÒçNúYYòr®¾i¹½¼Ú‚+еP`O†©žy«G³xå—©)jÍ ÿy£Y¶êUG!_ÏA)7†e)˜ýúšvÇËb¥½ P·1»|wïj<žªÉÀùøñsimÍv0½„õç„x€Õ¹³‘Ñ‘&VÛÃXCê™XèAq‡£ÔxÓ —´–¬¤v]ÈÀn‹ÖF2â&¯¾Y4HEˆ­=›Lp{83ÇÀ¨°"rÇêQñþñ6ÁjÜÛ@Ú€U=Se‰¡µäBZÏ:³[ò%#…Å"¿¦¾µb‚õ%V}2§Ó8¿û7 ·G3áñg¡šóþÌJáÖÁ³ hxë4[Wç'ãìËÍëLBÐo5ˆ"£OŽ/Ö®1Ä4~‹F;ÌQÉ’äy]œ×<×Ï\³{#³Ð~iU'hkÕ”ül¸¨w)äI†ë-eçR'5ƒ—ÁrÆ^• Ñ ø®Öå3yš¬<ŽpF=Kv65r¸A5ñsÝCeƒCT‘ºÐ?rF!fæqV¥e¾A–Og-Œ«—¦!~èP'ž:£--8é64¦²ˆ$[ìrYô|±Üš „Ñ’•RÎz2‘à=(‡éñÜ¡ ÏÿÚӻǵäÛ¶Õ#Zܨ=±YOsõ™¹Œ—èi3ks& B U#+ΖˆžÙ¨L³-`½'›¨lƒãh…t’ëpþzl~x†IÜ×ú´–Ù’!èÍíA¯K{²/óÜMÔî"úÓÆýê×N£|×y À‰€Ízv¿ü×…Î7|ÊIŸ²oœû͉½¼¾ ­ŒŸ²1&Z=wž-P«YT²`“Íñ2< ®Ç[ãDµ'·èxÎÕ乆uuÝõù)㆘û2óË5IïqÀ™¶ß±ºõsŠZ(,.oMC²~÷¼JßmiIƒ‚â$á‹ ú@‹‰†~ìËPæ7‹Î›ßg·#=aâ‹öÝeØ›u-ðˆ œ°îò´ÍÈ}‘sV2°>¦È“÷P´žpß§¡*×ݺñÞGüÞㆠ0z°Nî.#wb„uåâ¨ÛÕO†;üåçøS5ѵ/ÜXtRÄÇ$],ÎTh³µš’Jã)-v unòÊÛƒ¸Z•µ#~î2<=zðIÆ2z}†ê`Ì ³3_ ŒÑ!±ñ¾‰£Y i¥ ò2ñ}ʃÛõ‡s Á÷.§¢­ZhÖ1ÎÝÙ¹¹¶`Ëÿ÷¾ìùI>¸îrLÃMA‡†'oäùX ç†&ÇdÉÏV¿Wôüƒö‘Ï;4ˆ4¶Ô>ËgΧø©ÅŽ›çÚÔõE{f•s¹Nö§ƒ·oýìj¿ÔtªX…§³ÁâBðùô±~A`Ìÿøù‹ÿ ÿíJPxñÀ)OÃðøí¹üÄĘÇh¶;Ú_W—ö8ZW9%yôÉÛš§ÁGÓ#kæëî'rcöö7Ž£@Þ8ŽÃJj¼šž%šýfí<²hiŠÿHƒÏÕ endstream endobj 221 0 obj << /Length1 1941 /Length2 6492 /Length3 0 /Length 7654 /Filter /FlateDecode >> stream xÚvT”[Û¶€RÒJ(HçÐ-5ÒÝJÃ#Ì 0Cw©€” H)H#-RÒ!JK”.é¾QÏ{ô¼ÿ¿Ö÷­Ykæ¹î¸ö}í}ßû6f]>[” L…Äð òƒ¤%-CC æ„ˆÙØ á'Øßfb6c˜+ŽBJý ä ƒ`°60ƒÓB!u7'@P“—!Hò?(W) q‡ÛZü€: C³)¡œ½\áöì2ÿy8¡\€ ¤¤8ïÏt@s…C!H@ ‚q€!°+B!N€ ‡a¼þEÁ)ã€Á8K xxxðCh~”«ý.^ÀŽqôah˜«;Ìø!І `¿”ñ³†pô/»Êãq…Xƒ C¢±nH[˜+€]0PÓtœaÈ_Áš¿x¿÷äü‡îïìDpäÏdŠB8C^p¤=`w‚:ÊšüO /AÚþ„8¡QØ|ˆ;î±Áü¬(+è¬À¿å¡¡®pg š wú!Qà v—ï"m•P ‰Aÿ¨ w…A±Ûî%ðëd‘(¤ÏßÀŽ´µû!ÂÖÍYÀ wqƒ©ÿÁšˆÛìa@Iƒ˜ ó„:ü 7ôr†ýt þ0cøù8£œ;¬˜Ü†ý!öACÜaÆÕ æçó§ã߈XP°…C1€ ÌŽ$þÍŽ5Ãì~aìá»Â=3¶÷ÐÏ?OØö²E!¼~‡ÿ<_-C í»<¿ÿãSTDy>|¢Ÿ° *" ˆIJ~ÿ&Ñ…Àÿ.ô;S i‡$ՊݤÿÔëþ÷ñsþ=\À¿¹´QØž…œ¿[Ü$ ‚b¿ÿÏþ3åÿ×ß?Xþ·ÿݜœ~º9úÿ7wòú;Û²nlûk¡°C€üïPد‘Õ‚ÙÂÝÿíUÃ@°c €´wúgáhe¸'ÌVŽ:ülŒ_f£#æGÂtQhø;àþˇ+¨#öÞ@cûñ§ †›¯x EÙþ˜/!Q1âê ñ"aÛHHTðÄ¢-ÌógüH›`Õùv(Wâ*& (ü0ýB€ø$”#¬Oû$!þƒ$ÅÈ?HD‹ÐØ-„£‡`Óm~#I@ú;K†½)¿)~l…€íP€ý±+Øý…û? –Îá79V¡ƒ—³öûµÁÿ€b€Àƒ? Vã[¹Ó[:â7Äú3v°P@l¡Î¿KÁÆ:cïZ¤ÌóÛ*ø·õפüÎŪrùbU¹þ±п9°%£ h‡?°¢þdÃF¸ý±¢Üÿ€XQ¿¡¶PÏ? ¶B¯? V”÷辰LÞ0×_¢ÿÕ›P7W¬*ÌÏËÛ¸ÿÁ?_0˜' J<1Š‚J‡>(m8*U ÷à[!íØ‰Ø#4ùz÷†û’^°’Ìñ®pfä¸BóðbäñÕšPÞEµ£) ÈÑrÖ7)RŠf¢¢áŠÍ^ßA*Ù“5´¦›Ð¢FSÓ}ka¤­=ÍV~—Çžü-¯ËöÂHꊊ {Mña‘ÃGÕ:? î@T$„„0 nh£Bjc±b™ÂÐð;5VôŽüÀÆ3å•ã¤ö^!ÑùŽÏ¼8ð¿’èWWI5öRWï¼Xn»©a= ±}m½Kw˼×ÄiƒîÓ}Š{|‹÷rxpØÛy“H &C¸³„|±äSBDJV$£šQÂTž‰¶@È ëÓ²Ï"‡y„.ßFLèä›kmßõEé¤G·ÿ•£â«±qðZÅâ¹5Ñ'D›Òäæ\ )çåÛSkg 'xûí ·Œê•–Ò—ðâ9ÐØSwó§)Ós_Už†›—°GÜ7牡—ÞǤDö@fOÔѦ‡O*t¡¸§2÷JðN#s2#Û‚ÍåÀÈ¢]÷ú‹„Pø©`]K)¡Êèe òÍMÞvQúÄ÷aN¡s¥Ï)öÇ({¹êY>ÀJÝ›b¶Û)ssÝ'úTßä‘ëVƒ+TMÕNÞ2|ò÷Ý‘nD ·F$ô“âm¤ÂÞ(Ëv›NܸdqÚ.½²6¤ªvÕªB_kڔȌgŽÒ—÷‚ãÙàeJk–sÅݪrÀ,rö¤¿z¦ß¤q˜¾úq¿K«™Ì“s"š¨Ï}’?ögKt ³_Ê-)•{^CÑ8AÚe·ö¸vC÷ìKÛ&=˜L€òÁ82ËFË/×|]^x;ltSž+CrÀÄo½á–z4©íÒ«YØG>ó~­88óÅäfá} ïZêXçöÕH.éy›®µúý}vÍšM?íÔÑrº•OpÖÙr)³ ´y¬˜ þ¾ÊÍø—R’áËelwýå£"G+¿uãâ œ‡šÁïit¸˜E?tÝ2m\É? û÷w~Iê˜ôŽn þvçùB}è;óÓT•'ÊæPNx iŽÇ\c¶Å)ÝÀªyW Õu(î6Hâ墅BdƒÃY¡u.ú¦®$É8-ЪLÍ—¯CâR=->àæìl=œV~8V¿!bå¬ô»B‚g¼®œµä¦%][nV›ÏÅ)ÆŒg }š’“®¨ØšBŒšž—,*ìR=Ž-[”9s½²(Zp`Þ9ú]¡2–l`é|Ú{»(üõûiæú2%kеÍÿÒÍ®wF³ øƒÉ£ è™öÁצÙÛuq§A‘é¯ô®EJ;IÅ–WÃY&ÚZ“=nz‰ïJTò¦tª£n׈Êy\naqå %¥ÚýÏ Z…ö´ |ÇŒ’ËõU\©H²vâ³N¿W]•íÞ6Ô™»wwãwy åfS¾ó}u”êŠZÍùÓ šjë§\L­<‰]”ËÌ|Už-Üýz _Œ´&m£Ðåð1͸{.¯Î1?Z9l!ý‹>š†êý^YöAËͲ>i+òÛ’êþ’ªbç™›GøŸ'™{»­þÈú¡ÃÁëä||‡Ä%ŸNÓx1Í‚È[+ÙN—ËÔSº†ED”Íñ½ßp}47În<|Ç",•ɘÿ!NÄÇUØáüä¬ÏÃmRª$(H8,÷ å1¡8Ø)”zVÐ'P2ztÝd1mË¢¥J]óµƒÏ{©vúæ7SCãëÆF ÞÈÇÚc=*Ì–6¡b¢©¬wÙYPß78¶.оøxpšû÷c;Ëý™IÀüMœÕÃ3l53ÎÑ#ùŸ—1^¨•˜Òê‰5 ¦ ã˜(Ò’†¤¹2šrOøÄw½wÀ=nKIеӅKÜ/˜HY“¯ã÷,©ôYw\÷Wt7;¿tß ¤^W`Oâ±Lö!ÝþÜL–6ÙÞ4k¥’ÃL:…Úƒ»ðuJÜëi‰öV•6o†³ß…zê¦Á´îjí ‚hÀÛÄ”èÕ]kŸYõœÍÍ¥Š“ÇuɳÕ7V©:zu‘Á}Ó꬇ãß5h?Ú[P9Ú½N¦h³6 Î;ÌWâ’ñc‘ûtlc(NWcjè|ª+Ì㆒=„XàÌñÞ»©W6CßUç.F÷L˜2í}g¾]Þ£A’ûýµj2£déõ²¢ï;ñް,¼¹D'“»ä”ò´3^’™üÝ•Úæäëm Ôi——‘”¡Ô~ Œ¦V;fážöW” _š¾^ž+±RP6.Èå¾ô–m£ é*üŠõŒE;ä…ÅÕwÖ¥pÎu¡ N3êVC³’;ïny ZáƒG˜’ŒÔô2®ßZ&¯îHQÒñ¶&¼ùŽÂ§Þ½³]âûJcð ’¯Ž4®Èò8~¯œ½%Á5É2'¸6Ck¯_3Ka*i|ÆØpI¹$2Ф%s' äL ‹^×ï»°Ý{WJ«¹’ sª[â…¸ÜÚ·LéMØ“VwÄ#ÊtÇÓ\x N!î`ßÖ2I¦/f:…ñrÙ¤ò]ë`•“~ªÊŽðÉ/i³jðMˆaòçn¤Ž˜fG¿K¾a‰ðgòŽkó^b÷)ôÐÚd×- ñ€ˆò‡y³Ksñ§WwEåÒBLФGãÛLƒ¬ï½2 mù®@úpHLiÍ,å.×_e¤8£Nx~-3XÅ_OŸ,¯áè™Ê÷õçþn‡l¬2½ü3Y±Ù>AÄð§Y‰†ËîuɱÛú£·KT!LµdšQÅEóFG—v?a’j"¬/*5SL7b¥)¦ŒãÌ&®­óÍÏ¿¼ÄL”{sþ…w©m=d¾zJå³à`Éá2÷¨œ,¡lïcC§‡;µ½Ÿ ›Û£ÌMÈ”K{¶ÔÌ=‘Mˆè¬.Ë··dfËðéâOü§ç/å,}[•ŽÉ/GG-Ï®ìt0>½ümì–Ÿ„{•¥ùÖΑCJw£f¬°_{èåûŸÉâjüvWå%*,gî92B­tæ-B7å-«© úb,p9‚çØ¦ËÛ²<åº-ÚX$#Þ¹¼û\:áLš’så@í]}̆rNkhx/c*1¯Õ0ÌyܦR?3ðò)„ lâ˜dôDhÕr-º4þ(ì;M¬ÌäO r|ýÉUú0ÝåA ž•üº'‹ð蹫H"á=ÙVK¦ÜKIpbޝ,вû pÍLÍ•±Ç2‹ªóx¥Œ\Ϧ¹ÖA¤[ÚG.æ¾è”žvºu©¡R„Å‹ÎV5 _ˆ…ì‹ß[ %AŸ8Ü=~¦;º×-_×z$çI¾Ð")5#½'Z­Œ#ÿg)ÍB¡Uúe-ò^KôÕ{‹Ù\±Ó§Õ‘«Â~·†…ñÎËÀÅDh¯Se }ï/¶×«rÍ¡dó/Û·câ±NPsi2h~Ú¬F ‡°.‡Ú?{ÂZÍ,B½n]_»Å†<<#áÈ?å²,Kô©kçš›jÞìßê¸z²'¥9øvÛi¤D£Ö–tq©œ>˸w®±ßõIûH–ÎÕhÜw^^rÔsXck1BáA|óòfðòp„ë_=Z(+RõëJÊjÛÃ)2{°b¼©Uå&u²/ú˜òê¾üpòªmjƾ“ÒSW\Xôç±hÅãáäùµ{9gäÔyRÏWãÖÔÈ)÷| šõ±¿“Ì~’š~Îê1ÜÓùÀ@ÜyªÄF¯Q¢}¿ê=:ÁRÅ®šÇ×Ï«B;a÷ºÍJ7ÐV¼S¨?Í®”Îõ˜:ß•7ñ>aÒí„~ò.¶%Õ½¼ÛõsýH.]h~Ñ{´¸+î–^Öøj@‘2'XÍc…¼ÙâR%²Ú6®è>Öñ¹g§EÀ¯wó×ÇZÒŒ=5ToÉÜû€á»ÈJ b·á%ënÑÉ&{k4j¯ée[ ¦@Òo^3+vݨa9F£3;õ¶otÝÍ[D.?ÛáI0ɬ3÷è‡Nç|sy:Ço«¯¹” éîaÊfɪC rêôcŠÓùr£çyÞ|ï&Þÿüô›­m±s3¢¿j±4¨Ç•fÁ_Öes»ƒ,Iv’ëó‚ÈÜ»Êw²¶Ðñvb÷«b· ÚÊH¦UðG€¼ Bd1u쥇|<‚Љze˜Ä4º1Jéþ{Pëén“Sîãðs¡R­å#$2“Úq_–ä =~1½¦³bÑÇ%rbØñ¤`µÕZUÍ6͘Ó[Ûö~àѾîA `6bý"rÍŽ\)€õ㲦ØGôk\Ÿâƒ6æ^#2y/0émŸMy‡ÇqPC“^ÏF›gÖ‡ ý7Ïund³¤ÙXP®Dõî÷¹*]’ô#ä¾a½šQO²Ùvè©1NµcfÕðF(¢`ã¡ôì$YçÞsk{Ù¢ä)ŒõÃÐ,Þò#ÚDOjz”¥{£ƒ‘6ð’±€¬Gm¬¼kÞ0fÇ`~Ê¥cÒgüƒÜ óJ[ýÍ3‡[-þ,‘®­‡_çs‘‘LvL­á¶‹½+kõÙ"¦.Ž+ÉdÆ›QÑ=¯²ÊØ“ ¯­Þ(‚½ÁP– \3ô)úíp…~/-tâ§V<#Iâ†&û›_O@›pØP믞¼ùR® 7i¬{˜4Ùµº¼ÏâÞªsøN8ÄƒÉ BT„š2af ç~˜VÑô±3ö{ò¦•T‡a§%ݵ¦â }{§)ÏGšmf}¬º/Í\)µ*¯_õ cý*~ÊXÜ)Ú=µS„U "É=R†òïÓÂb2yÚ ;TwýÉö{Ë®¯vlø%’¥¸#³ßèÒ©p¡£G×l‰‡¨Ýy¢R¶ÝxÓÖöe‚xGÂ2A;šK4™õëÛJ:Ê¢þŠ\•׎8*]ÒÝPë}9¦S˜¿¤oÕ3)94KeoZ«ö(Èón«½Í'‚0~çbFjMφ‚;žæÇپâU]¦EËŽˆœ}Í¡µèì÷ëB¶`AsP æÈ¿ò6n3éZÆš`jÓ{þÕtB¥+I žEG}‘ˆ3}¦áZw•6òmMÒØçàh± oº„_ï×Eƒ>6­;_5®°oÂÅj„EóìR­[Á‘œוÝ=Ö;¡Ô•dd*µløAüõ}×ï§îħ‡¹H1â8uD6öÇ:SÉø<¯¯‘O„4Q_iß^)CteV—Ö:Þ|bY$l°¤`¯\qyïË2IƆ°ïà%sÜ®ŸÖ›pÌr”î¦÷¬޵ûä[Þ—)[©±\z3ëèy⊼{ÀóIQsƆÄEvS‘º°n/é§[û´Šáxù·—è[ƒOßN®lvC¼Åmê9ð¦M„pÆm‚oºuèAæ¶—àâšIÞA K qU‰¥•ÎÂS}„Åv·U5/}ª·*É’…ÓÑ'f¨à#â4ú÷Ù©šd>Q&w¾]ß;´,½2výNS¼°»Ãê‰Þ_.ü ¸}Ø oq` Èr2Éñ‚XÏ õkùì\áEñå{A²ßi’QÞMʽ1/–é(—¼op=ô¨€4GXǨŒ÷IyØ`¸ìM…qóÁêã‰ð=F¨E†åãyRRæþ°ÍÛöŸ±>{‚ú£ I§ÖÏЃ¼kíK]¯`sÂn䤻)êÔóå˼åé<*-l{jä\–/êSÝ¿ƒC,Û_8åŽÞu7ûœÖ—ÜúŠˆžÍVK«÷ÉŽÍý]£/¾ONÆu‘a5[”îà ½::ÁŸeV]¨î7hÍu_í÷M"•jw0ï×R§_![wZ¡À‹­$/*‡T¢Œº‰Z”G2o,c˜ðlhzòˆ•^dÓˆ”7îõž¾$Qò™¨ÃÝtñÀTXèwØG"b•K\›-ϲhxiÌT0‚UjebV3él'„y¶ùì;&îZUwÕ3²[^' 33ñFÒH!V°ð¡>‡ùŠîƃrã(RI]÷Ó‹<ÓÀ§ðúãq\On†\õ>‘Õe*vxðVßáç˱Љ{S½RD¹Ïû‚§rª®ä_+ÌÛVd­Ô~g¬ª´ÓÞ>¿Ôý|¥&ÌÀñRañ¨˜’¢m™Žò$ØsÝTü½ÞÑÔÇÞ¤Öå [z0˜ÊÓ¤m¡,<‚{§?&¸E~'al#«gLÅq‰yã)yƒzRÐM/xÉ7hOóÚ7¼„6¿fàqCË1^ÛjŠ‘xÖ½,ŠG§‹QOÍp@…ßë>3á•ÇiÑŠ›>› ½Ûù4j,*Üô¦Ú&TÌ%¼ÖJðù"È|/)7ŒüuN¢]$BqÞQ)Ph»zú¢Í¹‘…˜íPÂc÷ÎE¬Ä7úÒª9Ç'ö¦•ô! o[pÎƒí‡ O¾Ð¶€_ê8•å?/Ì<©§Å&{æPîíªTŸÇ@:™@÷úÛäÑ©¸§¤}Õ­}ú"laÂéN³©˜™“ȳDâö¾Gûõ'é¸ôà¥ü…~þñ“€”²þ°€öÖ\¤…w+>òêÈŠ~uàœÏýÕê8pqžuxyî<'&)‰‹f¬ |‘’“";Ä É/Ê!—4â 0´>$õiÂex6–øø¾ŸíÜììÉ4aræÝЫ,äËШæeÝXôýëêoYp¹(5m¹ŸÕ³˜¼Ï^䪔–ô=JQ’qÇY¼§T¦éðô~&¹ÿ¦¼³q°bB·!Mº Õè2€›´ßŠì–Æqˆw4,Õã }[s7t'!n¦°ž,ý2ÇüW6žXRN‡øÔ7ª+7á1±sæÈŽG|q$¬U3¸ËAm%RÉ6Ü)›&¹¹ÛÞ@ä°ˆK__¨q(xñWûUeƒºÜ­²~ ™1´¡íU…}í èrj…­ÅÅí4ªRšÒEnU>»º,b—\ËÝ·þ¸ƒI×oÑúk‚ÞŠ´…C ²tdÛQ±y02è5«·©°Ók¡ò0Úwh+TÜG w¥`ùW÷ëIpwÞ¦†iGŸ-~âÑ&øV YGeÞ‡aÍJ ‘êužöT,$‰½ÐÑþÚW›ZYÛ}{#iž®€8¹—ßµ½Èœ£¼û"ˆžªu’Yy\$ÞQé?ÿ¸’ڢDž/¤(ªÏpÁxoÁœF45âE ¼«‘ö§qß’zóx1ú`öÛÛ8B{ÎŽ{M4RbW g[E‹ãñ¹]{ðÙâ½N=åâLK(½i‡ ‚<ôégé²ë1ñáŠM·FrWü¦ùïƒø¶V·¼ ÇÆñ‰Þ2§sOæŸÝÓŒRýœÂwùQg»oHÒ‡êñùˆéZ’×=¾tÇÓ MÁÏH6‡#¯õ¼©–ߪWj-¼Sëã!àwï1ŸK€M¨—õìܘØëûcZî?„³Ã»^<ÖïÛQRv“+÷ !xöÉmdJâ—~ô¹Ž‹²“ÑM•©SëÅÉBƒ3¡ÀMΆS2¿ÛÔ=S¶-fÕ`N=d,蘯,¡Ë’'8›¨ýá|å[ù3†/=„oB³ÈOüÎb¶8}«ƒ,Hâ1»hצèùOò ìܞ؆8WþŒ£Å˜!êŸIù^½£js Æcv;òëÜüKÅŸ­Ç+³¾7 +ܳ¢Ý;f3h53ö˜K‘ÌåAkMXn·‘°4Úã•8ú¤M­uŸ÷53A·=GªºBË3cññ‘‡P£ôµ„D“'¤ ‚Þ£»~¯TÃ/v’mä’ëüàAè•åø@î›U0ÑýÝ‘=Ñ U½$ C-Cµ´Ò\Îìã 5Yì«æêÿ÷d endstream endobj 223 0 obj << /Length1 1778 /Length2 9602 /Length3 0 /Length 10735 /Filter /FlateDecode >> stream xÚ´PØ-Š»“ ‚»;ÁÝ584Ð@ãÒ¸[pwww·àÜ58Á%„`ä‘™¹3sïÿUïUWu÷Úvö:{íCE®¢Î$jfo’²·ƒ0±1³òÄ54ø¬¬̬¬ì(TT`ˆ è/3 •ÈÉloÇÿ¯q'òb“B^âíír.667??++€••ï?öNü  +Ø  È ³·9£P‰Û;x8-,!/Çüç/€Ö”ÀÆÇÇÃøG:@Ôä6ÚKíˉ¦@€º½)ñø¯´‚–ˆ? ‹››3ÐÖ™ÙÞÉâ#À ±¨œAN® 3ÀoÂ% -èOfÌ(T K°óŸvu{sˆÐ x1Ø€MAvÎ/.vf 'ÀËáuY€²ÈîÏ`…?Ý €™íïreÿ.¶û#hjjoë´óÛYÌÁ6 €²”3ÄÂÚ™ýÚ8Û¿ä]` ÉKÀR¢ªà Á¿è9›: ÎÌÎ`›ßY~—y¹eI;3q{[[Äåw`'é˵{°ü9Yk;{7;¯¿€9ØÎÌü7 3M;°£ HVâ¯Ê?6 ÀÅÊÊÊËÁ9@,¿Ëkx8€þpþa~aàãå`ï0!ò›ƒ^~P¼œ® ÄÉäãõoÇ#66€Ø0Y€íPþ©þb™ÿ‰_†ïvè±¾h Àúûó÷?ƒy™ÙÛÙxüþÇ|YÄ´5Ô¥þdü·OLÌÞàÅÄ `bçàpq²¸ùx>ÿ]Dþ« Ö2eíÌí|öúrIÿé×õ¯ñÓþµt€ÿ®¥dÿ¢Y€ö‰ë³r±š¾|±ý? ý”ÿ?}ÿ®ò“øÿ6$åbcó‡›öÿÿÇ ´Ûxüð"YÈ‹üí_–ÀîC߃þ\YEØÅö½²àˈÚYØü}`g)°;ÈL 1µüCš5¯˜ ؤbï þý¦˜ØXYÿÇ÷²W¦Ö/ï†ó‹ÿp^Öæ¿O”´3µ7û½_ì\Ü “Ð…õEFì\\/¶—E4¹ÿ¡` ³=ä%ðÂÎ`nï„ò{ |<àoÓèE,@çò`gë¿Üœ/FÈßðE9,&ÿ >‹éßè7³A6 èŸB¿‘£Ëˈÿ à°Xü ¾eù/È`ÿ ¾ôjý/øÒÈ¿K½tbû|Ù0ûÁfÿð|iÓáåѳ³™ÿÃŒ“í/럒ýÛÌýb~¹ûˆq¾´í`ãâü·ãåpGûß7÷ïT6¶BNÿ‚/„þIâzIrÙ‚Mím^ÆÿOÐ /×Á—(·?à ÞÔÅé¥SÈ›ù¢Šÿà?^YÈdŠòyÉÞT ت!øã](±Óþ”Ð<Õþû4:&¯ÏN].ˆÉtµY[N·¢É£ýXë»’´7"«dO^§íMˆ¡‰ª?½âÕf÷;QVfð>MŠ6‘ ¿aÒ9ð~rôÖ °†m‡î‘£ÊstáÅP)À½s”voªX›ø°´¯zPË-úX1Ç­¥Pº@•o’½H@a"A¢Ç¹pÇ\¸¹ÇÉþE&Ï€âsÍQ쥻Ís¿è¹Q¥ÁîÜKHI¨K@{ƒ31Kí%v”"‡¿ìUVµ%´œÃJÇ µb×Wp!ffxËRLÎÎ$½Ìà{Yb2 ÅÓPº£¶ z6ƒr†¹IÛ¡²çj½àPjû99§RoÊw®É˜¤sZÈú^¡¡çö°~ŒAY´ÏL°]%ÛÂñëI 9X?Çr˽H@Œá±Y»z=—ÎϾ!ågu7Pö»1tq‰è7æqܾ{£!À\`¥YvºÁç³rçTXòµåTžû†Çís€i™b¦&€Þ¶8§o.¾€“О²†L³)HÒ4I’¾úÑV%þæõ¢sU§fá<ßôÝíjñÛ4ƒ^rôTu`jig^å1ÅÈ-Ù'¯¤– ú»t%,¢–yÄœõýÛ.=¾qâDòbŠ"k£Èù”Pj³ó&ø‹i³CWHh£.1îeóZŠ–g ”*0ik__Í}öèÄàʪzÅØcO1ÃCvØAðU²(X®^ú×üq©iç÷ŠIÞh'Jc©Þ=¤ÍR–úì§Ûë¯C6îú üùÅn®`÷eõ)}S…â šNü§Ã‚Z bÒð>¿ºÉé!ß;Iiè«WímR§‡3R˜òØÓ³ ï"+& eöÊãÝUŠ¹Ã½Ÿúýº?þôáœi¸¼ÞÜqwõƒÕu5JÐúwô†-,&K«¶´¸Þ$þ¥†“ Ó¡ùwâ{ß Rk8V¿ ÃB݃©²&ê(‹¨ï'n¶ì?àzcÄ¢²d'üá1Âù}c«¤0¶Ã]7  .d%…¦égåf˜«uÝ>Ì™žÃq`/ñŸéÔ/1³aYÉ‹:G ´_ vÆü0žR3\ð WåDòè ‹ÙÁØGk¦ö"t‰½PµB™!,vµiPÉÿÖV^W0Ñ׋2:’ö°qCq7p-êÀŽ@(¤~èÁ¶ç3o]«~thêÚœõ@´U]p#áYÅKÁ®éOöj"âˆA¹T ó;’„V§{ðœî ~ŒÍV£Ù×èB ï ™™ñ2 pÊb¹09‹ð4w™ð¸iÛü„HÀd$ÿd¹ê›pÆ»/¬j›¯~¤MõLN‰4÷$ûT⺡ëòq J÷€Bk@Sr4÷Á­úî‰éú ”H§Â.à¯å3°÷(ˆªv‚5ÑS¯’ò«¤[@û£8€ÔuJ’ÙËpnZÓkîåùŽËdh•]ðEïÛ«UB"‹ð˜:¾H¬pŽj´•Oøå}D ÷aáȦThõm+ékµrâBåžð'I_ñ±çô ×ôô¤±òwZCe¶é¿jøðû/²…Þ;”„1ìÚ,ÅöÙ-‡’qX䕽åùÄ?¦@Ð'Ò¬â;Çtæ"2_/ñMKŸØY½||¦Ž‰¸åt¶±Þ]öŠõY@(ÇF noÀ?OqVö=@ü¸™ÙöÓfclçu…l²!ÿØkeïfÃ/³J؇.WDYn&Æg³|\ïŠî6‘ÌääBÐê/X¿^_iÇ•\Œ’8ÜæÂéMA®6¶qIáG]ŽÈ ©VJ.IhnPX5üòÑàd½ÉB¸­„ò `&Ü"VG»Š{VÑ:LJx>Þ¤=u#L¯áݯò{=”¼*ǼÉí¶‘iú˜Nw™zÈ«\c^T`«mÇÑHš6¾•Š®’Ó?¯ŒhSc$ûéîE”ÆE2\eþF²;l³¦[‚²}è¹Äg7î‘/B:4ÈÜ…0 ïqF…Á=½ÆdÌsX¦,q§~ò&ý6XÆ)ãˉs%ÇS&¸!X9Ó_ùJ¼~Tå`:+ ÏÇÅó¨ß;û‡Å6´^6?QÞ‘ËôU>áõ¶Þ€Ä‘¾@PûfÝØhž5–4|TÖÒ`¦NÉÀc—à;¶ÓúøËáõ5 J·…_DñúÛEi9Ó(d©ì[Rûh¤Ñ´’)ÜŸó;¥ˆãt§±O’#w8¦jf©P‡W÷¹ŒFRX™…öÞ¸.{zU_^Ý.¨Ê2™¾¦t®MÙ†Sûý³+q|’ùØõô²Ý@0;ãVvÚO½S‹)I<ÂRcØ] %ù „ò4°¨wúè<™Wí\1‡h‘•ã 3`Ó&ºÎ°ÐºFῲUŒvuBa`íi PÄu'«ŸXÉßQŸ¼`ùmyåBÞ·WÑٱʠ€c_¿6ä²ò/¯šéLHû$ݬҺ±dÈ©§˜¢ÿµ-` »ú¦:,þÐÄ;°¨?nxw¦ØÞr1 u`Å×âi1œ>ÒÉÒñ…S Ÿl/£(¢ ¨xm #I”ççk8uŸ8Z‚åCïþ6·.ljwM€H£«mst€ b{Bk4"’x ¨öiw¨.Œd^tºqÞ;ɱm.‹à‰Ÿ‹ìûP—t³óeô®¼áÅ‘ßÈõfú±tù¸Xz†ƒa".4®àcÚ'5‰<ï‚7Ô ?a6‚GS….Ì0º„6"à8†­$ö¹¤T_­³¡|:Þ!¨ ÛH”^Jûó!²M÷ýê]bG©Œ;#ƒø¶[ãŽK­»4vAæÀµ”“qö-+ëøšX’½7W š—óu±ŽyÚo5kF: ¾’‘•¼‹éä|æÅ/Ãô>Àÿ­þ¦ã´)ÝÚ± »_¡ûÙ»?”N’’»ìkq郒0 X·W^÷¤°Èõ´°¾v5. 9rZëñËc÷¿Uh}µ-±ò-ÃØºÕ5¬âýù¬zŽôj„Ü6N€úµÿÖ óäx_X^zãÛâgŽŠê>ÏÄdž2púÎS Šù—H›7LÏ™n­7ýåA€v%¥¤$tã±;ïX¥‰¿kçy•Ų֓y ³Ý¢ª=—Ñ©|\'aã*¶û7‡rà8Ý>hͨÚoÙOLŠpÅ_šM.f`XŸ˜=l)t{rG(ƒ0 %„>ÚÛ•à,ÿ´k2FYLAkÙZ©àëFÒóÆ x¥ßákÿÞ`/m<ÏGÈA@EF™[«9pªKûã¡ ¥z±ðÛCðÓ†úµeí§Ô*'˜•&µtœ/¸ïÅiγ,0ÄT>ÖƒÂÀh¯õ$Ç#g\À®]"î}î©S0aó†Å¡˜Œúc¬¿6ï÷¨.”¬„¿o-‹¢«E‹øy—É÷ªÜcqв„a]ú×3½ß™ÊNÎþš1wŽc˜ºñJwO–‰¯pi(:O¥Ö—0 œ˜ {¡³ûʼn¬CY±žkËéW%y¨l®ÅäÎŒ¿;£O0ã5¼¯R2v’]¤­Ú¤÷óy!ÐO6”Ôè8ÛË®]Ì:ï|pòêM4ʨ{¥²ó¬ }‡-Ÿ;CD“Ë´Þ¤A)9ô„Â2ûR Žø]ïAr¿*x2q¨ýÄŒ8øÜª;©—šŸH=·;j)ñüûNTuKZ\À¯OÑf Œž Úeo¿õ²Ï{ï7CÃúÔ¾Õ™$úPÃÊf 5…4ÄnZvW”Óhœ‘÷!Q|PŽ-‡%wV¡öý3zšŽ©õhCQQø < òÍ€i)ï*´‚¸wYýEÕGJ2>æ¨øËfáÌ+‚ èNPxà ƒà"Æ€Ê\Àí7YNFŸ·yP’+¡é·Tï&ž‚.Vq|ûÔ‘‹Èýèýú˜¯ŠÐÓ\Ó û3<~\‘àë*·ö“Õ«ÁÝUê´„â~E8»IQÏR_¨àẔax‡1óª¾Í“»v_³F§ã[9MuÙ½Qâ7¡ºGC~kvÀI<Ç\ƒ« ŒþsPllª5yƇšC»ì‡ö‰È Õ€xz(|\×YŸ.OÛ핌K–O7eµU¹„MF˜áW¾=Ç3ÒæPøÒgñ‰œIŒÅÕ‘'B%\?ï¨òWÛ ö$³e"ÌíF×üÝ#?©½iº|ÈU`!£ið 1gµî~Áÿ˜î* Ž« %ÎIûì‡õc:5䣸þ C«4¤L†¿¨ewi."|r¼\VRÁõ.y”&².š@eFTÑ©þ4;Oª,PÖÙ%¦–õ†®ºÜ¾êXë¤nàBýù@p00M8¤JÊåâÉ&?HE¢6ê mg!ïUãzc]9D|>³ç»n7n‚ÞË+²ÙY¡sÛºØF»BTã~ñ9™2LF­­sÉÔYÍC_I|ÉúÍ=‘nBò"Þã&`¤`ã4Ð3o´aFÞ>Ò>(š5‰±À‹[tvÛÖˆ¦®,/Ñh{¢“‘©&ü©¡µLp´¡ûösýXnÎ"Z©Ékš†ÿ¹Ó׸e¶GòƉ™®%Ù¦é6?yÄݨŸT8Lµúý,{b­MÙî):IÄÁ¬w€ò² “TÊá¬sÊ›µl‰×I‚ õ»?•·%àÛ2 $úkúàÉ„àXöÓG z1núäϱ†oªëŠŒ—¶G¥‚,TÆdQ¾¼†·ûé¨RÛÙÑZiD›f±"M,Om;Øióì?~¬6‚®°G]6æ,õä,bŠæAb³þf†éœçV¦ïŽ®››À Û„~졟ž¡ÖC\°5wv1m5!²@ê¿–rµ~ÐßÜD WV{1ù6r”¸HÓêµnÄõ•·±šÝ×;ÿ~žè©ÙäǢ͆¦ž¿ç(ÔölIÍãrU '}­Uv„$j´ÐÇ1¨øxÿeÇ·ß0$rÃÚ#M-8<òsa9ÙgŽàâÎr³y rï5x´Èôó\Ýilò;Ì`¨–ëx{î°.º-/U±¤*m½·›âƒ²VAÏ «„0%ØÜMml†¢SB¨%ãУxŠx,=ýŸÛPA{¢Ú@"op\JšŒ]5™u;#Q+ê¼0j¼\´‘‡!v?¼éä7‚Ñ…ü'ûE€Í5A$Ó [r®ªrd-ãUAK†äƒ0±qóO¿É|ÚhKA®o!{Bh?*¢U6óŠ‹N½[û3™«RD((+1dYl®¦ÇÖ£?|Јm‰ò8ôýkÞ›TV·”_(òŽ(_î×§£qª'ô« ç?z~‹I°ySj@eR çðd‘½NÆ#DL×ùR§·­>«”ß½òì;¬lXšvµ€NãjQùèj<j‹‰2¦gÙVö”úÎ ¯¾‡?ˆD̦~­$~¶Miz°rG…Ž9ñꆒ¬¿„Q#_=bZ\yãQ+”+”|7¬óãRlŒáåž…ž¼JyÆÿV÷ÜÍ6Za“…ê>Ðbè­ú3'¿Na:Ì´‡špFÆ.n yºlì~ÄÛD0@°Þëó#Sö®Cqú©`8ùýâ=&“nÕé£Ùf…‡y~™­ëB¦ùYŽ„Øx;À¾i…Ð )â½LNÝ×mØ |%ãu1s¦ž¸^µßbT»Ê%C‹q&¢‚Ê(®œ$Na*¸ˆ‚Óu½½¸ÿs¹«ÿ@§îð 9<ÊþâÄùÏ-‘;…ˆðW^~®[ñ ˆ‘SJô:x‰ã Ž`ƒ;¤sCº]Òˆ¦’b[-6"¡«°Pù“fÜôôZ_/p3ÄkÎnU˜æC({ƒcó^WæöŒSØ9$~«qôGÒ-ÓG©õ꜈"„0)BTdpXóORŠGþFôÀ>ì”(Râö˜Á>"®Å޽ù®äþ(òΪðB³RtvŒÈÝ©L ðC™ Å´€£ùûKŠ˜TC¤š]VJl ûàoµÀ÷Wù®'¶Ì“bk½,¦"9^ü=fþ¢­®Ów*>âˆôÔˆÖîc×ùÖþÜëæ0ÜGƒ`¨:Ñ µÙg¢, òB&´lk[«¡K-ÝìåªP£ñÊ%>¸ ´øY0c¸Tˆ?ò„1q;§?,çhÁ’sS H€]Bҗ爓“)¡ncÏ\Q1áÇ•>¼EdI þêQªF>WèFõµ7û«°]lÇäBɾg¸v~Óm“úÓ庰©{©~·–˜RÀs™ÅÒ}.nnÙBÎDêR8q 1n3S7`CÏX¦uui||üpnP›î.f¾4Ap·H)•^0œýC9¦_9elIÙ'šÁó¡e@TEã·JNmþ”.‘ÒïÛˆó±Æo¿ð:™æ,äÖ*,ç5û>¯¹Š4#Âz³­ª‚²‰Ü¦ãå +Ü ÜÉ1£O¡OwÕMHýçûòãÐiüyD(tç}Þ:tåöí§;¶ñ]󭚥\…Ù¡ÓÛe®_º¿O¾ÓazE‹ms˜çX»™‡_ôʲ]ŸšŸ =ÙŒüJS—[à›Þw©p/¾\Åòϧá£C2g×…Æ…üÒïlMY`Ûy#ÇóSáJù"¶Ù»›¦œŸ8Z0õŒgGÌœã*))è2 ÄÓTW¡AèüƯՊRF‘‘È}“$Ò|]Ñ$!Ô好˔§‹Ê-ZUªÝ€óqÚ%Íë6ßìÅŽ|µÚA¬Úv_[ ¥9JgîFö^ˆŸ $õlVÞ¨9ƒóöHÒ?“áJòRö}—Ï$pü ¶¸FÅ€[á:{0üC ZR\æ³t2ã#ýdÒ˜àc¤|.º¸}||Ðn˜„mZifÉ—R¹GéT±À, “…¬û ܈á&VÍwóбðoÁÎ+Œl"ê°³1!"·iv¶Rû «áÜ«ð*8TÆXÊ[8¼&îæúj‰%€¯“¯3Û6ßØÍš+ÒZKC®y·ÛŠg[q>›ÌSuÙÔýl‡¶L (eg}ƒÿJ&zz<§wI@ÐÛ*éÐì(Ù/5yÎS‚Šò YoJ!¢Zþ×:9dáÓAFÅò¨õEÞ±0Ó#ŠãµËP˜ÀgQF¤‹":@ýÔB$ áäŠYºûg°wk_ø¾ñ±ûë²ÑòD¼–&sáxÉriÑbZxZ©[‘ÔXùþÓ¾Ì8Õµ•Œ ,1K«2ê¡åÌ›.1¬+%IüÀnëÄ8ؽ!ž‚Ò‚š3Qz\52ŠÞé|;!*ÐD÷Ë—-æX(Ëž4”lK0 OÏ_µÝ]»0-žMGÏzî˜iÛ”è=#ÅêRM‚K•WóÂoõ^94C›ãÐH³2`:4H ŠžŸ–É‘tƒ²wñÞ„Îö ž`&û€æ”3ÌKø2§ŠM–©\‡,mÔpˆ^…¾ñ-z”LÚÈY¯Ý,KÆd¤Nw*êŒ:×8óLìP¢¯ù4MK'”Ô­Š'»íº-Gþ8ŒœÁô\m7’F«[3Ñ´2F‚4›?•·.osÒX_–Q¡&½s ãr×¹üaÊx3ŽA¼g…Ó7'âîŸÿ¬ß^¢4·26Ü ˆtÍ,8ò>‰l]o Ë^½º?vÃ<+U hᣢ˄~Âr§þõ@œ;Ôn/‰·ðNS¢—" :b†No¦ÏÔ7übÑVø-sþ¼$%þÍÐÇú€pŒ3'ó8Aœ·SÐÍ¥ ýiɾ¢Ss€Û/mËÔû—®úr&é ©(‰«Ø?XO (úªÄ!V¦zC£»ðŠ?#7cüu1üFÐt àéüèàåq¢yÞlÀØo”¯…ç®ëŸNKld_ÖÖ7W{++õÝ, ŸªßÆïÔûä«WëN<Ë¥¼Ò»Iì­ÃE}ÿkõ¹ +w¾·¦&ЖqÛ²ðEpõª=¾=|Ó„Îüσ2e2ü8óVš¼ T¦Daé¯>­µHŒdï2Š™’e©t_ °I#äëú¨–WÇ ï¿èx=ÙÃK®õý ¶á³¦ÔŒZ$þ qЇÁÓªâ£\K *· †Ô#û¡_†Â`5*¬pö#—PWùáZ…Å’S˜:ø½ØöÚûà HˆóþÛŒ@¢ w\êè”"Ž8§ˆ#F,šŽo1­á1^«¯iBÛGãfç´í §óœ$dˆ¹ÈÎ;¥‘¨å5ÏÞ)ñŸîÙG| ï<¤Å&Áδètv‹Wà7?3Û¡Íq.Ü:•q ƒVÕ/‚挓{·ì¯£ÈY“^ƒ€e+KŸ›Âq8oÃ?JÀýXCñ®–‡¡¬ßE¹Œù‹Û¢ö+¼mÍÑûл¨^½Â°É[;VÒV²¼Âó¼ËÁ°Ëþg:z¨Æ¥ •±IùᣓÃu=8º¨ÖÔÌþ²ÅŠ_ʺUµzç7Jizý`K*Ûn²0ê*9™°}³)ÉôDKN²« ç;ã¶;Ò¢Ë@IS°åŽd¨(f¼%·wßϸ|>À~sÛSPv„c3ËÕI²žN¾iÜ"Übü#Ì(ÐI8“ilœøÐA„ñ ´L, ,pFïøéP[FçÃÆþ©×Æ¿ÛT SÚ·ÈxøÔBþ¡Ýfî†RóTáÖ[Õõü=3g… ¬“º8±‰§O˜Zg2ïx/}Ç´ðsNó¡ò¾Q”;)Ä‚fw"Œ®¨V—Öɺ¾tñ‹ÂÒâYEI“jæA§rÓ0ì¡à]Õµ It¿~ïm¤paWŒ·=ÂR-ýŽ:Ò­QºEó¼Cm퉛3²œÈÍô(¬zÃS’SDê{å&º,>¢­•ʈ¿!?ƒÙËw@9!—Z`• k¸[G­>†VM~H¦ròf7í[a q4™§xÍ”ÊèðÞäˆqñ=Ñ{ÁïìÆUpªq;‹ªGð ÍM‘Îò” U9º„ô!Ò-Œ‰xùY‚šþ¹êàŽÉRã1;¿q¶»R¼RM±t‡¼!ÖjÚ“E+!t£¦éå öJ]™®U”‹ù1ñ†šôÛɸbÌØL›%l0M•M ¨±!n2ŸÒĦVzä̺ ¤ËÁÍSè|ÏJ»çbN#jõý ¯lûô4 ³”.<É7¤'IÛg¤^R¦øRìsHŽ˜‡øÞuª[÷òBS·Š‘N£Œ€xâ:Ó* ëÐ"„¨3›uÌÿð‡Iëi¢!$÷•Ÿ%ãU8¥åÚn€2ÑÍL„æH•) ?næ°ƒ¥<<ïóCAï-‰àéœ4¿ùÃ%TºW-¶~-Ÿ¢;QÅá9)6Ê^a[g’(²?Îù‰ElvÇñdɦBJ|™Ã»á «9¬òê’Óoe8¥—Þ“úWï…¹o}w4—)7'Ân,€s‰È/¸ØQ§ÐH獵øåÖè€Æ÷?ÛTDå­IÄþQJ:ºÁѵÝÒ–Cú_*•Ñe!é7hÔ|¸ÓyøÕ5¦üì]@Ñ)rÃèÓÉ&î#‹Ŧ=¹ÚXÐY9+Ÿw 'íNO1}±¾@ÿ[Ë“%gšþ½†x¿ê쵋mÝ¡) õ¹üO÷N"ˆEfôx)s|Ôî„帚ôL­+¦ŠdãÍø_ËV§ÁF#KO„:¶õÁÉN íš³uÓX½©Þ¨|ZÝ“}¶$H+1×Ù-Úꎯöó0|Í ‚oMŠÁ”NLw57ÓŒùÀwбÙ~8–€ý<ܦ‡ÙDã u5b1²[éûÔz™ÚLÃlaÔVj’Ï‹Õ{~ …ÑmÐcD’óñ.§d/W{ÊBzÖÛ®ToqÑ:JDÍç–ð| ™*Ö}î3ž\A¨¬Ñ–ZÎõV++s% 'çݤa¶Ñ‰˜EóA匙WäS·ô.KŠ3¾‰$¬Æ[v¥¿ú’ý7û¡ÇÒVQÖ¬¾`}ÿ0M…Ñçˆðè®,Ÿû%ÿSœæ«k¾±bÂׯÅÆfÈçh?µÝÂpak9.ŸÞßòM›»èx&²ø8eBÛ¸ñêÕâñUßT¹NŸY'qÜ)®´&yR1ùd[½b)¤)¢}tw;*Žœ¢U·ï&¬Æô„?¯’MßdÏÃõ%Có»óëæÝtó¢´õÈ6{V!1XRkëå„EC#”§sfUb‹ý¹æpAx3«ýB¦æ~—´ØêIu}o¦oIiõÝ 3’¨kZnÍÌÀ) ';!Ï›j_sÝBåÖ˜a04•BCšm™0'ψxãÔ„fÞ“!NvÍ–àíSÁpky€¤“5†‹NEû8'æÌ%WZ©ýŠÌ¦´Å^³´Ãnü©·8Âçî'ên§±¸¹<"^Ž4@(ƒÿÔÈ¢TdyT$·¸½³—õm÷Ýæµ™Ñü+#UÜ×ÔÉ›eo–›†Ì¤Ž#.€ÝM×ÎqJxà `æNÊÃcjÙ¯\–„hÓÐ.FM"(íy¢äAø+ïŒz‰¾y¯õ´h¯2“þbÛ½{k?$)cÍ烟’C¯>¿'{¤^£„5ܼU3·ÍçU©ÉàöÎqÍ8gy@÷¹¸8ír°ÕBÛÏìKc3Š'L(¬(ŽW®5®¦Ö aäÃ$[’œw¨ éË¡Ð$å•ú“é/s”ª­.Íövcš…âyhB!›½Fɪó.&Yîr}f’ÁÝñàj¬‡®Ÿ#Ú{FÒep°ôsN_ׯ>"ï½/I½ êñ±T:Ïp§3Ô´—ãÁ@X=•¡°âNgK?¹Û²Ç*úÁc¾æcŒŒ¦Âõnmš~g‹‡·Û±ûâ[Ý2ñ}‹±_Ýà÷.·9¾¹C,¼ª" Bw:ó1áÇtN¯(¡ æ–Ÿ/ÓM4Ï$¦ô³ëPßÓéáhI¾ÓþH’TÄØ·²®¤G…ÕÎÒ?¦Ðò¹ôû¼"¹_ˆ€‡©S÷ßMÎ!­ÇÐKÉtw¢t[ ʤ¨sÍWˆoP£Ö±Â~ºlÔâçªbé’È&1:߈F¬mÌÀÙ*ñ®Î'¬]»NGnš=R|"Æö¤©ªÍèéñXB¸òZîF¢PýÛY~¦Oï"‰8««Î‹ÞLô¹Lµ}bÑdÍHcíþnló`õ . ÈùDŽ„ 4TõIurkl5ZðHã¾x°07’…©Ž;1:Û{îNM15 ü°óšC8Ì÷Pòà3Å~¤0YfaÛ™SZÖûj*ñ4vHÙ*®elQD ¶z /bƒüçÇ¥Èä?ìÿQ«ìÞ endstream endobj 225 0 obj << /Length1 1309 /Length2 6209 /Length3 0 /Length 7110 /Filter /FlateDecode >> stream xÚvT”íÖ6!Ý!!5tC‡ˆÒH!Jˆ3À3034¨ÀÐ ’ÒÒH*ÒÝ HKˆ‚ )úúžsÞóÿk}ßšµfžûÚ×Þ÷Žk?kx9 E•¡H˜‚zÆÊzâ $ $HyyMàgØß8)ï= G"þƒ¡Š‚A0W˜ó‹ˆD´Ýâ’qqY ÉÿMD¢j8 h#04)¯*ÒÕ·wÀ(þõ°ˆËËËŠüv(»ÀPp[ Á8À\®n´…8Œ‘¶pÆû!0W11OOO Ä D¢ì•EžpŒÀ††¡<`PÀ¯’úØŸÒ€¤¼8ú/ƒ1Òã AÁW€3܆@_¹¸# 0àêv€ñ]]€+ ñY÷/‚àOsâ@ñ…ûãý+ñÛbk‹tq… ¼á{€Ü0ÐÐb¼0"ú‹qF#¯ü!¸3ÄæŠð;u@C €\Uø§>´- îŠAÑpç_5Šý sÕfuTéâC`Ф¿òSƒ£`¶W}÷û3\'Òáû÷ÉŽ€Úý*êî*fŠ€»¹Ãîªýá\A¤ÿÆìa€4HR\^NsÀ¼lÄ~]`âí ûmü _ÕàïëŠtØ]•ó‡ÛÁ®~H}уr‡ùûþ§áŸ'Rqqn‹ØÀìáÒG¿‚av¯æ‚{,@Wò€~}þõdu¥0(áìýoúï‹™èiÝ3¼'ü§äUT^_9€¨”Ì•\%%ÅâWºøÿ3Œ!þ'ÿp½‹°CdÿÊöªMgìñGöCðÏXúÈ+áÂÿÖ¹%Hd{õ%þVûo—ÿŸÈEù_uþßi¸;;ÿ¶ üEøì¸³÷_ uwgê¿ f°¿öU…»»ü·õ.rµÊ{絎ր{Á †pŒ­Ã_*ùîÄÿO_u„-úkK$¤e âM º’‚„´4ÀWüj 0¯ß*ˆHÌ• ÀÕã°C¢HD †vsÿµÅW0é?BÛº£PW ò{zW÷þ}þ½0˜Ì–tfi{ó™cÕ³æãJeOѵÁ[c¼kfÏE}gP-î§”DI‚OQGÊI=ï¨çWÔïÌr\øn7Ö…¾I7ù[Ǭ5‘N3t ½ÜV®~ÏFÂ*jrgÝïÂÍï^~#n›6o¶›»¥a.ݱg§¦Wõûâ¹þÉ5ðz…ŒÙyñ¨h”i¤ePá8oŽÍ‹ &.BŒ(±íW/ªñã1Ú¬¡Kí8aRÿ(É|_ó%‰è“ Ÿ…R t;3³9þ!mÿŸ¯Êf²6ã”oQþ|×´WÚ±™|æ5 o&Õ£lóijOЇMD8,ÉÜ/z"ro£vø).…j@]²ûáXŸwz;cá4£=÷”Öj‚˜LF;¯£´bÊY 3]ÜuÔOQZ‡ɸ†ŽyŸÃ¦U7ó¦Uñô<@c³¢>±qì Ú™,g€¸žm^@÷ƒÛ²•Ùž³OºSšŽî½H5“ëÑñw!\V¶ìûŸSÇFBF9®ß £Z00yI>RFô™$ª.€WÝ–¨Ræ¨À/³V­´YÌI;xÕ[Ã,…ì-I–l+Йý<Ò =ÁU`˜dûדƒ 4Yô«ñÇùøIßÄ¿3>'ö{ÖÖRnÐp#ÙçËk‹ÞžíOrŽ}PsÍÄ»;¤7Åð虘nðt\‚¬Ú•9¨ë¿7ËöBf9èo±P&ɬ½MBK>¹Ò¨Î8Eð¼P šQ)Å0/cóíùw>|î64„Ë;ZâæP5ŠûÀb!Ó±ÂA>xZká¸i® eüœ5ÆQPé)´R °:;ðSSòXMúÖ†nðeElùÑk¶ó“•¾`b"ùhLTƒCˆ”ü&ÿæSôŽºÚ‚rãçBÖÞÔ.c½KQæcÚoiëïV™§Z ûâüPR7à›Äa|HN0!ÊqT‰<”Ýæ¦²µ˜íÆ&埼næ»´?·Lî â¬&¹UgÍ~jîøE.UâS×¼L^‚)Ê{ª!Þ¨û¹Ù.•kœÆ,+¾,r±œ³$†ä‘Nº0Òß7Ïm’2´ “º&wq­ ŽOWj¹^*¹Ù›ÉIÈA#¼Áe(JêxCLJ©ËðF\ÌH=+Ô¸²b'G¼ƒ¹FøéíF»€‰1ÕH¢-GNê‰q O¿ýA]aަΥE\ºÞŸÁÍ5ìŠ0ÀæÉ}†Kéh¡5 1Ô ‰Žð· kŽë!O¿¹Þp ©}˜÷Èafàç¡ vÊŸôÑsC¸]Iw«Ù±·ï­»ï>Á>¾!ФœÕ±Ž|ï3c¡´#²þÃxí Äü gÁÀ@æîŠÝqÌí5I¡Ò`=î¥]|VóÏS\‰RïèǹàÊ%€¹£%ÑÏMTî'¢ïÙÛVŽjH9Öq=ŒI€¶€7õ{›ÞÕ Œ3ÄÆ„©Ù8 ƒoå˜gü÷,*OÛ¨§©,›Íˆß±.«aqÌS}}Ì¡ûÃàFœçªbT¨_€`Ðs©´Éjøõ7Øæ·šÒ)¡šcŠÉa÷’u,*µmÕ^“Xˆ§ÿåÔþ °•Ç7R#Q‡R8{V懦™F·" «Ùý½ÍÓ@C‹“h”\i—$]{Œ¶žÍmcAbçw{e>k Ájɾ4êª ïÈ;Zæ mìGP•Ƥ–S°”qR×kEVû‰èÛŸ>ót±gto⮑_ÁÐQ¬†*x¹ÁÇÇ–r&4zªÔÅxÁD)¢ñ¾gªë¶Sn˜?“.üù'Ü‘|?p—MvI³:"cb@0ß?^e5¥^“HBß3Æ‚4Gj,C~œeÉtNÂÑÁ~²”–]<ã>½Û%œ½’öè‚.81îÿê<ŒJ;2å,"ŸçÙD"§P‘N_“uékHuE¥áeQmÛdÂuTÂ)nÀð¡u’RÇ#ó›ßÁ!FÅçQŒxŽ ûDU¬7h*åÚÃ(ìRÊÑ´¨³×Ǥû2³ß¦Kz6ÌÁï^,kåõ9†JTgßrÝÖœN?þÔ³ŸƒHM­È‘Ñä›Ûû>z]§(†µsv¡ˆ`·Í›ÄÚ฼Šù¤ ã=Ï·’+ª„Þ·:°V^òáqM7Ý‹)X/} ×(*ŒÏt~Žƒ&±× +ÃJ¶7u?=·Öjhâ ”eO, Ö`6µ¬ß®h-Fs‡“^…ñ–±a.ׇ•v UL`¾r£€çÀ"þ«ñ—,BË—ö—/Šé&÷ú¤´§̧•+–iÊD6¢Jq¾i¥˜Y;ºÊiêûïƒ'#„eõâÄΠÄ^Qµö…Rsóör`›bXoGå©áã‹k§+xEæ) ]agmYL}|Âf&._|4ÔÆs<¢7nо’ŽÓùˆõ›%%.÷ïÍU)Œôçë1³›×ÃgýêC‘ÁŒ¿½Jq7÷‡Ð&_ó)qˆ•k}âîµçjÌ»ïŽ_}¼qæE|‹énè˜åí§¼û­³}Å쨇>úàÍÅ·r_¦+Bø†.ûšK vç‹WqP[ 4´ú“P’½cmƒŒvö7Ô:»Hs¾øBžœÇ±ð¬ÖÞõ•‰²|Ýk9š¶ì¦½ßE=‚SkïO€[ÁN) ›Xáá4d^çœóy¿ã”˜#P¿dé€4½ÃÓsOÁIéËÆZÔmCá[’t°ñ|M±-A0)2¤wâÐ[¹!ö–’=°±üû…&¢PHôU´‘ikí Tûº–öÆIµS&'IÕ€Að5Vz-‘é¥ácŽ.¼´œt ‡0í5e›O¥â4êòO Ú|LùDoá™ù±ø^þn“æ{xµe(Õ+^­´ì°­Ž­Çî-Où­}Òße5ÄÓn©ÞL´s îä°ÏΤË:ÅÁÙ¶ÃÖ®-:E)݆“,PÊñ2ò½ Jø”KÐéPPœ¾t42~±ê’¿XK‘§²ê&º1˜ØLAø3ÃÎŒá‘ÖÍ‹Y’I!sÝñ,ŒåûNö&KŒfz¡õĽ¬zby;1#sLÊ{fÕqÁþšgã'âö{¡zêf‡»pž‰ð”1ò¼LÄ‚B¥hsKakÚS[agüœ•¶~¨Z2;nž*Ëc‹=žpþhᜠTŽÞ [¿˜µ÷s®}"¨÷ŒLcÂðÎT%kÐŒ\ymØ+Öšmpc]@§XDŠ63ñ ”ê+åíÊ ³¥Þ„Š1B*¦ÒãjÞ^ô‹¥å΃oǽhÝ…æ»`!)h *¹]Uiš {²×× ?ok=-)Ò=Ü”J_¬6Ø¿¯Ú>Ÿ‹¹Æ¨64PÅ?Éd¤¹¼^s-žöå Ü[ vœÞ@ð2 <åÖþ¯µVc5nƸ•ÕdÆi’tÁ³/µ6 þ+ÿ®·Ïž¬ $D¶Jo„*¥*hèä³C(µY½Èʱ8N)Ó~©t„Ô}ý=ŒyEÃØ©½Š¾ 'ù+ƒtõšjC‘«T…ìÜkba‰;2…ï娓¹5ËŠÓöY›+sn”1Ë` MtÑSÔ/—š%ìèÙ‡ÞëÆÏ’ñ³¨~‚éàgk·ªW9Ÿõ;FHJE‘YI¾ÝZÀ*SÎõkŽÂ]ž• Ø'£ËÚO¥x¶^ÖN¾bŒ¾Å£à÷Q»¦Êr1¨)¯?JùÐýž$¾.Í6ÃÛ’ø}‚kƒŠÀünƆôÐ'cên¶>;¡e¾òê yõ"%oâϧCC›”@‡ VÇKЇÕá¼›Ò_³ñ"·€üºÏ ú+}ü7>ž‚‚5!"Ù|f†kï Œ÷X¾{'⇇3ºm‡sÍùJ2 ÉÐ6`/×ù`åϦhûxÇÚ£°uÛ{RÊ‘€ŸÚ~WKV¨ímQžš ­˜¨öÞ`úå«Àâìip±ƒ(ÿ¦lSgÔÃl’{SëÙ!ÔSg·S–Äs[mQìÝB?U,Cï«âæ/ ¢¡&ÕÈGœ¶çÕè½®LµJ‰«OBu§£ý,O2;2$NñUùTSè¯"ð¦Ö#Åúðù>ÌtŽ?9!Z:ø´˜ÒÒf0)²&å8úͤuBœê)m,üx?ÓJ‰'Íúåàx1ýÈ Ñ€cwÓëæ’U¶y!†"”sB'÷çŽ>­ê>§‘ë§Ö×~¦Rk+µ™'z#Ï9nBë6d5W½–ÂHÐGÕ¯kÂÅÂÿœr®bvnüÉ÷ò Gæ0¡ã(—›‹'dŠQ‚Âq)wº¤û­ý”%•n‘ n ‘Dmäwàg/ÜÏñk³.f6»7ë_ñdϺ@‹þ5­ÍÞë› æÍ\%ÎÛBÇÊÚz<›{sáÎ)N¼,HL¿, ‚©ê£ºËسŠÜ!M½nÌMÝÀ°Väu‹_çÕXO]è„TüDÛL™Ü¼,àÍ)ýô+KÝēؖ†6XvûøÃr|îr]c\…/<¥¨ûï…Õ­ÐL&¦UßÂxhÆ'*—«Ñôi:%&r#?§årk=†ÌWj…æJQ$VIëU ¿æ Ñ96 Öoúkp™ñ©q‹WiÀ}›ó »ê`©îöq¼HBèšþuЛ%©s¯#ú!¬rÏ{lê‘CL›‡‰eÑŽÇ@Ájœgj«NŸ>¶d6KѺ!‡7ý¹”jTjRj˾,ýgxVA[&õ‰+Óƒµ©ƒB'w‰vËöV;¹ Šzœ<šˆFºë^IòC]é²S'ð±oNXúÕº m·?bé¬Õy÷íäíÅNn¶ò¶Ì©×[qÝýg¾Æ0Þâ¶é²:›“ò¼æúÞÄCàP±²Ç@3‹Rd:Œ¼ƒk¾Eº.€§†wk’Ïêp÷{d,¬0ýL3$5¦AØx{(+RVâåú^IZçȘÆÏ7ægd_Å,»vR•Œ×p¦¥ðiXßô¡•ãveéG'NåR¨þøFmÙ/™¨†/²¦r·”N3·ñ¾2­6ÈU'3Ö£o›eÏš*…±¸¤¯õAI{±GMdâfû;«·We˜Fn!¹± >^”/p™ã½êØžŸB2»u?B›_£¹’šž4„%p> Ÿß3ˆó2ËL}ȯcSóÔ÷|HNY=—ö@äAuáJ­cf>â‡]56&ßîÔ2+=Q¶ô×rV3Øe?þ±=*x ÐþhŽús‘ŽJèǯ2°ÎeçqÆ^·=QŒ¨1á[²ºÈàF¥šÙý˜ñ¹Ûúáv‘Šƒæä2žzå·´ž9&éïÞÈí†ÝYî¡j Öqò„Á=§ˆ¬ ¯=¶1Ãëæ×å‘p¨ë4îÊ;à‡æ"i‹’$Ù°ÉìÖpÐgƒç¢Ž‚z¹’1wïÛ»”²ÕfŽ#Y6mž>`Ñôsóì«akÈÎ…¸G+ðá˜o…¸ÕCUµ@Wtßtñ†e°sOO]OE°NÞ5›Ë³ú¦Iò¬ˆig ­Ž‹~U2å´“tCLç‚lá‰{Ûµî3"RÒÁÐë•‹¨RÔŽ£Sw%p2Ûˆ ;[Lr¼ût'R/Ü!B)‚-ÚR”ç/ãzûµüµúX/m²1…-ýÝ Ä›}•mâGB. )ü5æÈ®N†4óM"áùÅmnO¨âœ†¥"¤—qÁÍ»<Œ[’àî\ÃÔÙL^¼¡’!cö7J&–˜|¼yáÍû¾N矶Ó_¤1MéÃaƒíÆ9U¶’{¢æÅB/È2ªÔsƒÞ«­ûÒªsoúîã³¾~cp‘@Oì¤Þ êËw~>.ö(ÛŽ³Íg©Ì ÏX °”³‹Çߣi¤+Z–æx½Ñ}õÖ;v*ïÞªcJD$¿ÞÍ©ævâgX¨6ž.|0»ß˜$Û Çç¡Ñ®ªC耤2B9:¡>kÀr1Yv­É½²ú"AF”m‡ÏsŒ Y~ŸEZõax뇘hfVXÆŒ¨{G1Z#ŸígïýÉ•´XÁyäMõã>±  Û>®ray­Į Y´tÿZyGeËd„T lQI°ÀÀ›Òƒû“{É2ž:¹L”´;SYçœà!áE墨åˆi/¥ú9KTÅÝBìyFDtA~8z6¿ï¨—;*ždÐx»>¶«ak¹±6Cðéé©qN²S93]p”Ó~´ȲáÇeÉ|÷ð3ì«J}·9’†[S/¡Ý’¨Á!«{/uµÉãQ_Ïp4ƒ¯D•ÝË(†pß멲²­”ÈZz ™Qä[ÎÁ‘¾.ѨÏ`?RgÁ»áŒÝ;—Á¸7-Mh¯ýxÎsïÑXzp»Æ6õžÒ*r–'€óê/s.¢no0ò‘¦"÷‹7®Ôc=u?Òi»p,ÒÍ%O·“ípŠêóœ‰L¿¬’62ñö?g7B²*&Tåfû«à[ƒ[Ao/›Lck~œ%¾p#4ú¦…p_ý|KFÛFeÍ#‘œùR.(? ¬.pµ›)êI¬æ-}à7"Ê£2)™ÑÞ–H×P~š`rŸC½¤-ƒbû¿üü@üÄO2`EÒ1þç© NáõÝmü'I][ïLë_µì‰[pJ-K,皣íZßž]ÚÑàdëå„|>¶ ]õÍN–S଄ûlì[zM¨y5½² Ñšô»NŸyãË%ýýI¼›ã$­âo“‚DúÀ›Í±‹¡õH*Cƒ†ZûO®°ð¢Ù"/AËb™qËŽ•N¦Ì rÊŸ$¢ +ã?¿êƈ»Åš?÷g¤JœõùF2uÄ#—2w\ëaóÐ+`*o õqÂÿÅÁ  endstream endobj 227 0 obj << /Length1 1396 /Length2 3547 /Length3 0 /Length 4473 /Filter /FlateDecode >> stream xÚS 8”í×/K1ÙR©eJ²ÌÛØ2dìÛ (bÌ<f33ö¬)¡$ûVJ%ÊVÉY*^©”-û’%ɾÿ¡ÞÞ·ÿ÷]×÷]s]ÏÜçœß9÷ùÝçw bV²(<ÅDSÈ Y¸L 0µÒ1…à !ƒ)@ Pkƒþí‡@O‚4:BVûB—bLß ,cH!F^DŽàÊjp5 P€Á)45àÖ›€Lå# ¤C ºªàêÆP~)ÜQŽDªÈl¥(H#à°dÀËpIÌqX"`EÁ@†ß%¤4Ü ªš¼¼–D—£Ð\µŽÊ>†€é ÍÄ›”3, üEM¬ÝôŸ+Š ÃK¦ƒHÀd:3Å‹ŒióvÀÊÐ0§‚äŸ`“Ÿà×ãp9øïr¿²7 È[ÉXŽB¢bÉ~²+àB ‚€9ÚDŽá˰dü&K¤S˜ùXo,ˆuf¶ZÇh”%€e2üÅŽ£¨ º@Üä(¿Y†ùÌzd¼.…DÉ :d³¿ˆc¾»Ÿü¯áz)>䀿-ï²IïE•·!<½@ÿ0LäŸ+È”`8RU=Ðç&¿yµÜ Â7ÝLT paÒ . ó@Çzƒƒæü;ð§Ã<ÇœAWòOu¦tùi3çO#øg`LùÁØæï÷É©0<…Lôû¾5by[S[ }óc¿(ÿêèP|Y%%@VQ©S„"@2Ö±À~õñ¯\C² PùÙ.óþnÙû—¤~-ÈQàÏZf¦rA@ê¡ÛÔ`8æþÿ–ûVÊÿ¦òÍ*ÿ§Ðÿ»#´‘¸—ú øq,‰@ôû‰Ðó"‚´ÿœ.¬)ˆ'x‘þ;jÈÀ2wEv%þ~>MðñÎí§L¶ü Sýæê‘qüæš(()X ë1µ ÀXœ¹OxÐwK†€¼™Â`¦T/F àB¡A6G¢¬ Èëlº¶, þÇRäÍ~[ªp@Þò·¥ŒäA•áGgŠú·Sg^úè æn˜ãØ ýÑ0΋Fcƶ4Ádó·½µä è â )8õp÷¢ðŠå‡(!Ù‘Eî†Ù¨yŽSÃz½?[†éj¬Ì!nGw ž·F¯ôóO*än<ö°€yœí;—­&ÐYRÁîâ<$s®•_su’nâ¥0j\]}Ú AÆ» L?Á¼ô™×~t¿ŒçÌȇŒq}ÃO –¸Mï3ñ­°¯zußXF'¶Æþµ³M0"°Ã‘úÄôä Öhœ»:*P²4—iéO’?W‡Ûë›S×õñã˯gN%ëòä(‡ÃA]犡7ieúG¼øìášÎ¥›Ž¼*ƒÄÇ®Üò /@h/°/Ó‹}ð³§ Ïd~16çRTþBT u ɉì¶£ÝäRŸ5Ê„Z_KâÈôûlhZaœñÃ{¦¥mƒâŸºÑ¨üzº5¢|£á•Úò:"†ª`.”µ;#‘3z~(3¿Ó½#U½ôÔq¹›ª”¤ýÂ<¯n¥"g‘*£öJBn2€Û·oœõ­cGR¢%gÙÿ†"•©ëi<½F<µ¾4K?Ô´Û쯥§Vƒðd'.Éƹžæv,‡z“®Ó/v gf­›‡WF¬Ç–Y9?8&ñ™5¾ÍoãÃëùvÖ8ŠÐM¦[bÚÇsv±ƒa¯Ì‰üÓÆzÄÇ%C¯W\Å¥MÍøÌ[K/ê@ µÆÙɘä/’†ÐPˆòéë1b?ÄL£ß@0ß’®‰®,Æ·ÙÕ8è•Ü<̉TO„Ü[<æp_Ö1R«ŸÕd0d?þüÊ®O íºè¢–*Rr‚Þ eŸ·GÏ‘}`ö/Ò+Ôsr9SN®²ií=~ëNé7®oªöýð%ì'îò0YðZýYÄþÛ9gLLÚÖJ³+U•ã„…|Ošzè~]bµ91é}0ºRr·ƒ;»®ÊRW—'Ôxé;¿¥ÇË3/Ó$j› ‚¬hGz3W°úKPâ@Õýºè/9ìÙå¤.¬0A®PUœ¾i™|HZu;æõšU·zÜP¤W8Îâ0ýªý¸Œw_×Yí>‰KÎÃg iâ¼êqâѬ„=n™Q1Ê€ó»ñOHÅxéýÛð0‹Iëqì3]¶™ÛÇ-ô³õ>w¯í¡_ë— 1­M«Ëf‡ä£ÔöˆŠ$­Î±óî5ÎÄ:ÎRY…„]v9Ì“ý5´•&ZÞª^MÏ»š½ÛKe®PèÀËvršd"SGN¾[9ØY·íz®Ûmðf|ÖûeÖìGi Ü -\åûVÞÜýœî÷ãÏY  °:ø€ Â4®Ì¹ú4’/o±wÈÇŠOS‰;/bLƒZ›¬ær:Ÿþ¡VyÖX¯sÄ>íJöÔÞ¾›ï/LwÖ{ËFÜh¦‘ª!ý¢wì‰OãÂÄÆ#ï–4¡/\wºòœ<«¦[=°yìJ³ã9ñXÀº:³Ë è>¸C£[C-ïr…TÃöž¸vZ/©¿ý-—— st)øÎ¶OŽ6\õÈ Õ¥8¨êj]ÀÛ?vRè_"={_"Ë AÄM¾ïW~ʶ(`Á!ËzÅA¾´‘]³ûØBO³¨Åü]Þ™ýž“eNn<Öúm€a²±­íâÝP®EÞQÊbBËÉ@¨kþ¼w)Æù°÷ ­suÒtÿuçÞtÑõråÎoB8ݱJì„`ßÉa[À'F`Ä *ÙÉèâ“é"C6ÓN­Kš¥+Óù1*çsusÊî-——vÊvÜbÿQŸ†¿ªÔUa¯¼Û6ÓŠˆ¨D|ÃÊ.ZŠå¡ÙM®â¢šø¡§šy»¦†y²¶K6Ôåcb’r/­¯lì,¨âDo;úØJ˜¨] §fŸtMeÕˆH›õÏx·A¾ªe?}ÑWŸÁ{–(Æìf#¼ÊRouúê:Ù2öúB›6ìòn'ŠàáØHïtcñ²cã¢%§œF}]yu}îûWƒ%wµØNªŸÞtÙŽøåJ™¦–‚óP®8ßû¬ÇS†¯-Ã='“®£¥wmóã0@KÛ ¼³æ<&c“[Y˜Ÿg³=¤.$Dx’}tÂ~þq˜´¼ÐðD¶³n'^Ep Œ‹bâ üE¦¾ña½ìQ6B|BÏø¾_·s^sŽ,,l Ÿ]Ì?g9è¨ !9àƒÖ˜¾9kn8¸\™>Ó)Õ=m·ŠŠ{Û=Þ«Š™½z¥ ³ªk ß÷XÏŸŒ´üÈu£´Ò—óÂêíÑÕçÂVNFއu º]“K F2Ú•Ïsõì››µODU> endobj 198 0 obj << /Type /ObjStm /N 50 /First 407 /Length 2245 /Filter /FlateDecode >> stream xÚ­ZYsâ¸}çWèñÞšJÉ’,Y®ššª@öÈB€î©yp@$¾m0±M–ùõ÷“eˆm0‰Ý©êŽ%/::çÛ$%Äu…¨ÿ9‡+E¶+àj#áºpÈ…{Ô’ˆ [›„""<"6¢6gЀǎ%[”HÄ“ˆR 1ÆáJs\ݰ‘M`PJ²¡ ‰l¡Ç°-m¹0‡ qË…!$âðQ˱g°á¾í8ðâBOR î0îKî ‘»’!Ž9à ”Áè2o¹HÌ>„Çð¡pA É"ðØ•æ„bÁ`9Ã?‡q­r4wé G‡_†)lŒWÂk I  IaÇF’YÉ\Ž| m×FZPÉ¡AabRh1aFÒ±YëÏ?[xð¾TŸ„‹äHÅ“È_&aÔJû=oOzãÎu÷üN÷–P¸x1²Í ívø†þ>ê”kd˜·þiáÃx¢ Є;ÞòLùOЕ¬…5ˆ~v@ôÃóÄ üÉáâ1PÈjá»D͇ c ³olF`ˆ'/ºS ú>Ä|=<Á3?â'ìãÏqˆÃ…ÂŽq¬^Ô'8y ñ ¿àwü¯ŠÂÿšùžøCÀñ,tÛúë¯/Ñ¿¸>öÆ)}§‚>Óô-äÚŒà~™>¯ ÏYž¾U¤„Oðˆ %˜b•ið 4X€ Zx¿ »u_÷G÷ÃŽ&ÌwóçOù‘±ßÞÖ—ì-ÝJ{ƒYóT(øw *£óۣΕ¦"vS¡k*Äeß⺒} «CåøtÜoÿÐT*¼RSFEç•o âT[åΜ{X=¯¼ ¼e°ŠñóJʼnBð=EJ¥X=jñ:œ»ÃNï"5Ÿ¬ˆ<‘q¶ q g±'óác¾K¿k| !8‚ |À‘7ù¥’@Í’u;ÒßC|NÂ䘄sKÇê ÏfiÀ>½/Ÿ Ké¸ ÒÈ]ø bˆ—x©"?œ‚–a¢Ì0&¤¦:¡½â÷¢¤NIûíQ»××’º’ºkIAÜo‘ÔÞ#i'õ<•µŸ {ÒŽ?—6/ª¿®[šºz‘Z¤¥-3L&¶)sߘ«\@^ñ›.";|¹VVíÎNÇ üÝbUD0Hï ÁD—|þ!=Ø¡†ôÄ^‹o[•â·7²÷Ö’GQøú&O¦5} £™é…¯ ÓJ%M[¹Ç«%öbí¿ñ¯¹#ƒüã¿xZLVo> .2Òc¤<@7éÉ_Ìü…Ÿ¼ã@ű¹„þÄ ¼ÅtÝ #<÷Ãæ« ñ—Á;^¨GO'³8ðâ§ÌQ´Ü0ìTw—j1õ'«˜-#5QSãHÍõ¯ôäbîÃSƒ¸Z輘þŒŸõõEE±܉Ԫlãß—7ƒÔ*êáàM°(#zeæHúÞT]zE‹¯mµQßÈ»‘jùób5$µªááp<¼9úƒóªhb|SíßId9þBîIeíM2;ÅgYiluA™´v5C§6o¾Ôø°£L¤¦Xd©mì-Ÿ§¸gSQ ŠÓÖ ³Éz›Ú½7÷‘Zuü¶38¹ë§Ö’Ÿ˵¾ÉXNõJL‹ì§»†¤Èª^)íw㟚ՠÊõ¾vœ9ÀCäHR ¥»R°‹­Ú¹{²y|,ïY^<ñ}@WsÓNü`ª6aªË+$¯²÷MÃ@ç´µšô~ ÏÂUô›~X\(~8^ì¿a“j‹.¸ZLÎ$ŒÔ^o¬Y‰û—½ãÔnÞ¨‘QÄa?'\÷·ÍöÉ¢òR„ÞÏå,S\ß$ÿ_niS¡õ³6“soÓZE§s5ܦÊU¬Eæð6ÕG¿¯\õÚ1§——¤’¥©3õ×õžØœ |É# ËíÅàKq'Mi­*5èž ¯‡tï»B¢[0ØI3(Ô–Åòyæã<·•¶*äÚ³Ú‹A˜¨Xqi­>OûÀ¥]Åå€CÜØ°£¦ÌfÈ¥¹$n‹Rwk’¬¼tíᛕàÌ÷±,²¬Èé³zHÒ®¾ bµ½Xé'ßÜÿ<Ò' íqʵ "ŽŸøQœèY!}0våm:ðÍÈŸ&O1"®ß¹ê Ç7žî€wËð6/ÀÓxØ׆?¾õ¯®Rxw]’2º( ‘C§ ´ïŒ×ZûãÚKV†· Üù:w룟 ÏÏOStg8ß2¼Eòðº·'õáï¯.G]€ïžï$¿íx¤Êò¢ß.G?Î~‡ãÉ-Ç#Óçµoàö·ÃëŸçãoƒ»d[ûº•‡oàxó³ã“Q ¿Ãô.ÛÏæ,/Ýèôâ¶}’ž2ï0¼»íxp;ÞÀëK'üeðÏÒ]ŽºÓÀî¥ö"ºþÑþ|ãæÐy}ôâiwœn¥Z7nç°9k`ôÂñtÛþ:¶lå çÉel±%zZã»5 ]<Ö-CËOr\>Å6ÈqÅÐ8±>qõ|imߡ€exº·¸åK«hàê¥3£2¸½Ü‘9ìÙµ|`S5*›hP[Š'eômŸ³*•ç àËG%|ºåvLØç /›¸]aÇ[FßNrV•öÜj²œ-ìËè[nÇÜÊüÞ Ù”÷`eø-Çc9ô|¢kîå=S{ËíD\æ3ÝŽp¿öU Û¢p¥·‹-èGz?¥ÉŸ{éOcôwj\dÎëÙò!ÆÌ%åŽìÔÿ4ÜN02Ë-dÒ12Ëd*2þÚht³}@Ž™¦Ùö inš¥82«ÂF£›¿Ðköìʳ«4×L2Bš 4;ÓÐll–õYÖ·?¥A+1Œùô_Ë|6£›ŒmL4#³hÓ7b&ɲÅŽ;ìÕÃÇ–y3xçÿ†H|Î endstream endobj 232 0 obj << /Type /XRef /Index [0 233] /Size 233 /W [1 3 1] /Root 230 0 R /Info 231 0 R /ID [ ] /Length 674 /Filter /FlateDecode >> stream xÚ%ÔKHTQðóŸ™;÷1ÇG¦æ+›&3ã;­´ÒÒJ{jjVf¾!lQ‹‚‚fÑ`µˆ\µ(‚¢M/´Va-JhRHCA!$-¢ZÕý³ùñÿÎýΙsÎ¥”úçQJƒ((•¦Ü4›OòH)É A²Œä’bØ‹¿¥9ʹ^âJK—±,²†¬&餄H˜ÍñA…^ËŒ²œ¬$«H[Lâ‡j8É>m ª}A¦E ÎNº?wÜåü”Ë…qé êX¾”)DCÅoÈ´lRƱ4’ uó’;wú²Ë÷L™Á£êt¨‡×¤äÖtPuUJPg­5²^YÁ1!èOȃL–¼0œy'cå,yÅ:˜h”õxh]Ük“’Ç×…Àóäîy‰:¼ï•J€Ÿo<£Sò”÷¬CÀ¢íŽ%¼eåA1)‚gpF¦UÀ»P!øVu ¼áTߨK‹0¼óŸ¤”ˉÂ7òEÁ¨u/Çh¾îÒs9Õ.-¤FhHÊ*R cà¶”5¤F¬R>¼’e-Y cBÞ¹^Gê`Ü}ì.ú´@Áß2áòuNÁì J˲Æä )H=ü yzÙóUò¼d3Ì·Mò‘²¡-¤ fÒ²•4“²l';H+i#;É.²›ì!{É>ÒN:È~ÒIºH79@zÈArˆ&½0—’—}Vô¤>XcÏ$…5þKR?¬G?$ Àš3% ÂΔ4»î£¤aØÉ¯Ïìx–¤QØ#r|ý$¨à„—¤œîÓ’ endstream endobj startxref 835157 %%EOF re2c-1.0.1/doc/help.rst0000644000175000017500000000026113143420641011511 00000000000000.. include:: ../../doc/manual/options/options_list.rst .. include:: ../../doc/manual/warnings/warnings_general.rst .. include:: ../../doc/manual/warnings/warnings_list.rst re2c-1.0.1/doc/sample.bib0000644000175000017500000000462613063315631012002 00000000000000@Article{Bumbulis94, author = {Peter Bumbulis and Donald D. Cowan}, title = {RE2C -- A More Versatile Scanner Generator}, journal = "ACM Letters on Programming Languages and Systems", volume = 2, number = "1--4", year = 1994, abstract = { It is usually claimed that lexical analysis routines are still coded by hand, despite the widespread availability of scanner generators, for efficiency reasons. While efficiency is a consideration, there exist freely available scanner generators such as GLA \cite{Gray88} that can generate scanners that are faster than most hand-coded ones. However, most generated scanners are tailored for a particular environment, and retargetting these scanners to other environments, if possible, is usually complex enough to make a hand-coded scanner more appealing. In this paper we describe RE2C, a scanner generator that not only generates scanners which are faster (and usually smaller) than those produced by any other scanner generator known to the authors, including GLA, but also adapt easily to any environment. } } @Article{Gray88, author = {Robert W. Gray}, title = {{$\gamma$-GLA} - {A} Generator for Lexical Analyzers That Programmers Can Use}, journal = {USENIX Conference Proceedings}, year = {1988}, month = {June}, pages = {147-160}, abstract = {Writing an efficient lexical analyzer for even a simple language is not a trivial task, and should not be done by hand. We describe GLA, a tool that generates very efficient scanners. These scanners do not use the conventional transition matrix, but instead use a few 128 element vectors. Scanning time is only slightly greater than the absolute minimum --- the time it takes to look at each character in a file. The GLA language allows simple, concise specification of scanners. Augmenting regular expressions with auxiliary scanners easily handles nasty problems such as C comments and C literal constants. We formalize the connection between token scanning and token processing by associating a processor with appropriate patterns. A library of canned descriptions simplifies the specification of commonly used language pieces --- such as, C\_IDENTIFIERS, C\_STRINGS, PASCAL\_COMMENTS, etc. Finally, carefully tuned lexical analysis support modules are provided for error handling, input buffering, storing identifiers in hash tables and manipulating denotations.} } re2c-1.0.1/doc/manual/0000755000175000017500000000000013143420715011367 500000000000000re2c-1.0.1/doc/manual/syntax/0000755000175000017500000000000013143420716012716 500000000000000re2c-1.0.1/doc/manual/syntax/rules.rst_0000644000175000017500000000351513143075774014677 00000000000000 There is one special rule that can be used instead of regular expression: the default rule ``*``. Note that the default rule ``*`` differs from ``[^]``: the default rule has the lowest priority, matches any code unit (either valid or invalid) and always consumes exactly one character. ``[^]``, on the other hand, matches any valid code point (not the same as a code unit) and can consume multiple code units. In fact, when a variable-length encoding is used, ``*`` is the only possible way to match an invalid input character. In general, all rules have the form: ``regular-expression-or-* code`` If ``-c`` is active, then each regular expression is preceded by a list of comma-separated condition names. Besides the normal naming rules, there are two special cases: ``<*>`` (these rules are merged to all conditions) and ``<>`` (these rules cannot have an associated regular expression; their code is merged to all actions). Non-empty rules may furthermore specify the new condition. In that case, ``re2c`` will generate the necessary code to change the condition automatically. Rules can use ``:=>`` as a shortcut to automatically generate code that not only sets the new condition state but also continues execution with the new state. A shortcut rule should not be used in a loop where there is code between the start of the loop and the ``re2c`` block unless ``re2c:cond:goto`` is changed to ``continue``. If some code is needed before all rules (though not before simple jumps), you can insert it with ```` pseudo-rules. `` regular-expression-or-* code`` `` regular-expression-or-* => condition code`` `` regular-expression-or-* :=> condition`` ``<> code`` ``<> => condition code`` ``<> :=> condition`` `` code`` `` code`` re2c-1.0.1/doc/manual/syntax/interface.rst_0000644000175000017500000001240313143075774015501 00000000000000 ``YYBACKUP ()`` Backup current input position (used only with generic API). ``YYBACKUPCTX ()`` Backup current input position for trailing context (used only with generic API). ``YYCONDTYPE`` In ``-c`` mode, you can use ``-t`` to generate a file that contains the enumeration used as conditions. Each of the values refers to a condition of a rule set. ``YYCTXMARKER`` l-value of type ``YYCTYPE *``. The generated code saves trailing context backtracking information in ``YYCTXMARKER``. The user only needs to define this macro if a scanner specification uses trailing context in one or more of its regular expressions. ``YYCTYPE`` Type used to hold an input symbol (code unit). Usually ``char`` or ``unsigned char`` for ASCII, EBCDIC or UTF-8, or *unsigned short* for UTF-16 or UCS-2, or ``unsigned int`` for UTF-32. ``YYCURSOR`` l-value of type ``YYCTYPE *`` that points to the current input symbol. The generated code advances ``YYCURSOR`` as symbols are matched. On entry, ``YYCURSOR`` is assumed to point to the first character of the current token. On exit, ``YYCURSOR`` will point to the first character of the following token. ``YYDEBUG (state, current)`` This is only needed if the ``-d`` flag was specified. It allows easy debugging of the generated parser by calling a user defined function for every state. The function should have the following signature: ``void YYDEBUG (int state, char current)``. The first parameter receives the state or -1 and the second parameter receives the input at the current cursor. ``YYFILL (n)`` The generated code "calls"" ``YYFILL (n)`` when the buffer needs (re)filling: at least ``n`` additional characters should be provided. ``YYFILL (n)`` should adjust ``YYCURSOR``, ``YYLIMIT``, ``YYMARKER``, and ``YYCTXMARKER`` as needed. Note that for typical programming languages ``n`` will be the length of the longest keyword plus one. The user can place a comment of the form ``/*!max:re2c*/`` to insert a ``YYMAXFILL`` define set to the maximum length value. ``YYGETCONDITION ()`` This define is used to get the condition prior to entering the scanner code when using the ``-c`` switch. The value must be initialized with a value from the ``YYCONDTYPE`` enumeration type. ``YYGETSTATE ()`` The user only needs to define this macro if the ``-f`` flag was specified. In that case, the generated code "calls" ``YYGETSTATE ()`` at the very beginning of the scanner in order to obtain the saved state. ``YYGETSTATE ()`` must return a signed integer. The value must be either -1, indicating that the scanner is entered for the first time, or a value previously saved by ``YYSETSTATE (s)``. In the second case, the scanner will resume operations right after where the last ``YYFILL (n)`` was called. ``YYLESSTHAN (n)`` Check if less than ``n`` input characters are left (used only with generic API). ``YYLIMIT`` An expression of type ``YYCTYPE *`` that marks the end of the buffer ``YYLIMIT[-1]`` is the last character in the buffer). The generated code repeatedly compares ``YYCURSOR`` to ``YYLIMIT`` to determine when the buffer needs (re)filling. ``YYMARKER`` An l-value of type ``YYCTYPE *``. The generated code saves backtracking information in ``YYMARKER``. Some simple scanners might not use this. ``YYMTAGP (t)`` Append current input position to the history of tag ``t``. ``YYMTAGN (t)`` Append default value to the history of tag ``t``. ``YYMAXFILL`` This will be automatically defined by ``/*!max:re2c*/`` blocks as explained above. ``YYMAXNMATCH`` This will be automatically defined by ``/*!maxnmatch:re2c*/``. ``YYPEEK ()`` Get current input character (used only with generic API). ``YYRESTORE ()`` Restore input position (used only with generic API). ``YYRESTORECTX ()`` Restore input position from the value of trailing context (used only with generic API). ``YYRESTORETAG (t)`` Restore input position from the value of tag ``t`` (used only with generic API). ``YYSETCONDITION (c)`` This define is used to set the condition in transition rules. This is only being used when ``-c`` is active and transition rules are being used. ``YYSETSTATE (s)`` The user only needs to define this macro if the ``-f`` flag was specified. In that case, the generated code "calls" ``YYSETSTATE`` just before calling ``YYFILL (n)``. The parameter to ``YYSETSTATE`` is a signed integer that uniquely identifies the specific instance of ``YYFILL (n)`` that is about to be called. Should the user wish to save the state of the scanner and have ``YYFILL (n)`` return to the caller, all he has to do is store that unique identifier in a variable. Later, when the scanner is called again, it will call ``YYGETSTATE ()`` and resume execution right where it left off. The generated code will contain both ``YYSETSTATE (s)`` and ``YYGETSTATE`` even if ``YYFILL (n)`` is disabled. ``YYSKIP ()`` Advance input position to the next character (used only with generic API). ``YYSTAGP (t)`` Save current input position to tag ``t`` (used only with generic API). ``YYSTAGN (t)`` Save default value to tag ``t`` (used only with generic API). re2c-1.0.1/doc/manual/syntax/configurations.rst_0000644000175000017500000003222613143075774016600 00000000000000``re2c:cgoto:threshold = 9;`` When ``-g`` is active, this value specifies the complexity threshold that triggers the generation of jump tables rather than nested ifs and decision bitfields. The threshold is compared against a calculated estimation of ifs needed where every used bitmap divides the threshold by 2. ``re2c:cond:divider = '/* *********************************** */';`` Allows to customize the divider for condition blocks. You can use ``@@`` to put the name of the condition or customize the placeholder using ``re2c:cond:divider@cond``. ``re2c:cond:divider@cond = @@;`` Specifies the placeholder that will be replaced with the condition name in ``re2c:cond:divider``. ``re2c:condenumprefix = yyc;`` Allows to specify the prefix used for condition values. That is, the text to be prepended to condition enum values in the generated output file. ``re2c:cond:goto@cond = @@;`` Specifies the placeholder that will be replaced with the condition label in ``re2c:cond:goto``. ``re2c:cond:goto = 'goto @@;';`` Allows to customize the condition goto statements used with ``:=>`` style rules. You can use ``@@`` to put the name of the condition or customize the placeholder using ``re2c:cond:goto@cond``. You can also change this to ``continue;``, which would allow you to continue with the next loop cycle including any code between your loop start and your re2c block. ``re2c:condprefix = yyc;`` Allows to specify the prefix used for condition labels. That is, the text to be prepended to condition labels in the generated output file. ``re2c:define:YYBACKUPCTX = 'YYBACKUPCTX';`` Replaces ``YYBACKUPCTX`` identifier with the specified string. ``re2c:define:YYBACKUP = 'YYBACKUP';`` Replaces ``YYBACKUP`` identifier with the specified string. ``re2c:define:YYCONDTYPE = 'YYCONDTYPE';`` Enumeration used for condition support with ``-c`` mode. ``re2c:define:YYCTXMARKER = 'YYCTXMARKER';`` Replaces the ``YYCTXMARKER`` placeholder with the specified identifier. ``re2c:define:YYCTYPE = 'YYCTYPE';`` Replaces the ``YYCTYPE`` placeholder with the specified type. ``re2c:define:YYCURSOR = 'YYCURSOR';`` Replaces the ``YYCURSOR`` placeholder with the specified identifier. ``re2c:define:YYDEBUG = 'YYDEBUG';`` Replaces the ``YYDEBUG`` placeholder with the specified identifier. ``re2c:define:YYFILL@len = '@@';`` Any occurrence of this text inside of a ``YYFILL`` call will be replaced with the actual argument. ``re2c:define:YYFILL:naked = 0;`` Controls the argument in the parentheses after ``YYFILL`` and the following semicolon. If zero, both the argument and the semicolon are omitted. If non-zero, the argument is generated unless ``re2c:yyfill:parameter`` is set to zero; the semicolon is generated unconditionally. ``re2c:define:YYFILL = 'YYFILL';`` Define a substitution for ``YYFILL``. Note that by default, ``re2c`` generates an argument in parentheses and a semicolon after ``YYFILL``. If you need to make ``YYFILL`` an arbitrary statement rather than a call, set ``re2c:define:YYFILL:naked`` to a non-zero value and use ``re2c:define:YYFILL@len`` to set a placeholder for the formal parameter inside of your ``YYFILL`` body. ``re2c:define:YYGETCONDITION:naked = 0;`` Controls the parentheses after ``YYGETCONDITION``. If zero, the parentheses are omitted. If non-zero, the parentheses are generated. ``re2c:define:YYGETCONDITION = 'YYGETCONDITION';`` Substitution for ``YYGETCONDITION``. Note that by default, ``re2c`` generates parentheses after ``YYGETCONDITION``. Set ``re2c:define:YYGETCONDITION:naked`` to non-zero to omit the parentheses. ``re2c:define:YYGETSTATE:naked = 0;`` Controls the parentheses that follow ``YYGETSTATE``. If zero, the parentheses are omitted. If non-zero, they are generated. ``re2c:define:YYGETSTATE = 'YYGETSTATE';`` Substitution for ``YYGETSTATE``. Note that by default, ``re2c`` generates parentheses after ``YYGETSTATE``. Set ``re2c:define:YYGETSTATE:naked`` to non-zero to omit the parentheses. ``re2c:define:YYLESSTHAN = 'YYLESSTHAN';`` Replaces ``YYLESSTHAN`` identifier with the specified string. ``re2c:define:YYLIMIT = 'YYLIMIT';`` Replaces the ``YYLIMIT`` placeholder with the specified identifier. needed. ``re2c:define:YYMARKER = 'YYMARKER';`` Replaces the ``YYMARKER`` placeholder with the specified identifier. ``re2c:define:YYMTAGN = 'YYMTAGN';`` Replaces ``YYMTAGN`` identifier with the specified string. ``re2c:define:YYMTAGP = 'YYMTAGP';`` Replaces ``YYMTAGP`` identifier with the specified string. ``re2c:define:YYPEEK = 'YYPEEK';`` Replaces ``YYPEEK`` identifier with the specified string. ``re2c:define:YYRESTORECTX = 'YYRESTORECTX';`` Replaces ``YYRESTORECTX`` identifier with the specified string. ``re2c:define:YYRESTORE = 'YYRESTORE';`` Replaces ``YYRESTORE`` identifier with the specified string. ``re2c:define:YYRESTORETAG = 'YYRESTORETAG';`` Replaces ``YYRESTORETAG`` identifier with the specified string. ``re2c:define:YYSETCONDITION@cond = '@@';`` Any occurrence of this text inside of ``YYSETCONDITION`` will be replaced with the actual argument. ``re2c:define:YYSETCONDITION:naked = 0;`` Controls the argument in parentheses and the semicolon after ``YYSETCONDITION``. If zero, both the argument and the semicolon are omitted. If non-zero, both the argument and the semicolon are generated. ``re2c:define:YYSETCONDITION = 'YYSETCONDITION';`` Substitution for ``YYSETCONDITION``. Note that by default, ``re2c`` generates an argument in parentheses followed by semicolon after ``YYSETCONDITION``. If you need to make ``YYSETCONDITION`` an arbitrary statement rather than a call, set ``re2c:define:YYSETCONDITION:naked`` to non-zero and use ``re2c:define:YYSETCONDITION@cond`` to denote the formal parameter inside of the ``YYSETCONDITION`` body. ``re2c:define:YYSETSTATE:naked = 0;`` Controls the argument in parentheses and the semicolon after ``YYSETSTATE``. If zero, both argument and the semicolon are omitted. If non-zero, both the argument and the semicolon are generated. ``re2c:define:YYSETSTATE@state = '@@';`` Any occurrence of this text inside of ``YYSETSTATE`` will be replaced with the actual argument. ``re2c:define:YYSETSTATE = 'YYSETSTATE';`` Substitution for ``YYSETSTATE``. Note that by default, ``re2c`` generates an argument in parentheses followed by a semicolon after ``YYSETSTATE``. If you need to make ``YYSETSTATE`` an arbitrary statement rather than a call, set ``re2c:define:YYSETSTATE:naked`` to non-zero and use ``re2c:define:YYSETSTATE@cond`` to denote formal parameter inside of your ``YYSETSTATE`` body. ``re2c:define:YYSKIP = 'YYSKIP';`` Replaces ``YYSKIP`` identifier with the specified string. ``re2c:define:YYSTAGN = 'YYSTAGN';`` Replaces ``YYSTAGN`` identifier with the specified string. ``re2c:define:YYSTAGP = 'YYSTAGP';`` Replaces ``YYSTAGP`` identifier with the specified string. ``re2c:flags:8`` or ``re2c:flags:utf-8`` Same as ``-8 --utf-8`` command-line option. ``re2c:flags:b`` or ``re2c:flags:bit-vectors`` Same as ``-b --bit-vectors`` command-line option. ``re2c:flags:case-insensitive = 0;`` Same as ``--case-insensitive`` command-line option. ``re2c:flags:case-inverted = 0;`` Same as ``--case-inverted`` command-line option. ``re2c:flags:d`` or ``re2c:flags:debug-output`` Same as ``-d --debug-output`` command-line option. ``re2c:flags:dfa-minimization = 'moore';`` Same as ``--dfa-minimization`` command-line option. ``re2c:flags:eager-skip = 0;`` Same as ``--eager-skip`` command-line option. ``re2c:flags:e`` or ``re2c:flags:ecb`` Same as ``-e --ecb`` command-line option. ``re2c:flags:empty-class = 'match-empty';`` Same as ``--empty-class`` command-line option. ``re2c:flags:encoding-policy = 'ignore';`` Same as ``--encoding-policy`` command-line option. ``re2c:flags:g`` or ``re2c:flags:computed-gotos`` Same as ``-g --computed-gotos`` command-line option. ``re2c:flags:i`` or ``re2c:flags:no-debug-info`` Same as ``-i --no-debug-info`` command-line option. ``re2c:flags:input = 'default';`` Same as ``--input`` command-line option. ``re2c:flags:lookahead = 1;`` Same as inverted ``--no-lookahead`` command-line option. ``re2c:flags:optimize-tags = 1;`` Same as inverted ``--no-optimize-tags`` command-line option. ``re2c:flags:P`` or ``re2c:flags:posix-captures`` Same as ``-P --posix-captures`` command-line option. ``re2c:flags:s`` or ``re2c:flags:nested-ifs`` Same as ``-s --nested-ifs`` command-line option. ``re2c:flags:T`` or ``re2c:flags:tags`` Same as ``-T --tags`` command-line option. ``re2c:flags:u`` or ``re2c:flags:unicode`` Same as ``-u --unicode`` command-line option. ``re2c:flags:w`` or ``re2c:flags:wide-chars`` Same as ``-w --wide-chars`` command-line option. ``re2c:flags:x`` or ``re2c:flags:utf-16`` Same as ``-x --utf-16`` command-line option. ``re2c:indent:string = '\t';`` Specifies the string to use for indentation. Requires a string that should contain only whitespace unless you need something else for external tools. The easiest way to specify spaces is to enclose them in single or double quotes. If you do not want any indentation at all, you can simply set this to ''. ``re2c:indent:top = 0;`` Specifies the minimum amount of indentation to use. Requires a numeric value greater than or equal to zero. ``re2c:labelprefix = 'yy';`` Allows to change the prefix of numbered labels. The default is ``yy``. Can be set any string that is valid in a label name. ``re2c:label:yyFillLabel = 'yyFillLabel';`` Overrides the name of the ``yyFillLabel`` label. ``re2c:label:yyNext = 'yyNext';`` Overrides the name of the ``yyNext`` label. ``re2c:startlabel = 0;`` If set to a non zero integer, then the start label of the next scanner block will be generated even if it isn't used by the scanner itself. Otherwise, the normal ``yy0``-like start label is only generated if needed. If set to a text value, then a label with that text will be generated regardless of whether the normal start label is used or not. This setting is reset to 0 after a start label has been generated. ``re2c:state:abort = 0;`` When not zero and the ``-f`` switch is active, then the ``YYGETSTATE`` block will contain a default case that aborts and a -1 case will be used for initialization. ``re2c:state:nextlabel = 0;`` Used when ``-f`` is active to control whether the ``YYGETSTATE`` block is followed by a ``yyNext:`` label line. Instead of using ``yyNext``, you can usually also use configuration ``startlabel`` to force a specific start label or default to ``yy0`` as a start label. Instead of using a dedicated label, it is often better to separate the ``YYGETSTATE`` code from the actual scanner code by placing a ``/*!getstate:re2c*/`` comment. ``re2c:tags:expression = '@@';`` Allows to customize the way ``re2c`` addresses tag variables: by default it emits expressions of the form ``yyt``, but this might be inconvenient if tag variables are defined as fields in a struct, or for any other reason require special accessors. For example, setting ``re2c:tags:expression = p->@@`` will result in ``p->yyt``. ``re2c:tags:prefix = 'yyt';`` Allows to override prefix of tag variables. ``re2c:variable:yyaccept = yyaccept;`` Overrides the name of the ``yyaccept`` variable. ``re2c:variable:yybm = 'yybm';`` Overrides the name of the ``yybm`` variable. ``re2c:variable:yych = 'yych';`` Overrides the name of the ``yych`` variable. ``re2c:variable:yyctable = 'yyctable';`` When both ``-c`` and ``-g`` are active, ``re2c`` will use this variable to generate a static jump table for ``YYGETCONDITION``. ``re2c:variable:yystable = 'yystable';`` Deprecated. ``re2c:variable:yytarget = 'yytarget';`` Overrides the name of the ``yytarget`` variable. ``re2c:yybm:hex = 0;`` If set to zero, a decimal table will be used. Otherwise, a hexadecimal table will be generated. ``re2c:yych:conversion = 0;`` When this setting is non zero, ``re2c`` automatically generates conversion code whenever yych gets read. In this case, the type must be defined using ``re2c:define:YYCTYPE``. ``re2c:yych:emit = 1;`` Set this to zero to suppress the generation of *yych*. ``re2c:yyfill:check = 1;`` This can be set to 0 to suppress the generations of ``YYCURSOR`` and ``YYLIMIT`` based precondition checks. This option is useful when ``YYLIMIT + YYMAXFILL`` is always accessible. ``re2c:yyfill:enable = 1;`` Set this to zero to suppress the generation of ``YYFILL (n)``. When using this, be sure to verify that the generated scanner does not read beyond the available input, as allowing such behavior might introduce severe security issues to your programs. ``re2c:yyfill:parameter = 1;`` Controls the argument in the parentheses that follow ``YYFILL``. If zero, the argument is omitted. If non-zero, the argument is generated unless ``re2c:define:YYFILL:naked`` is set to non-zero. re2c-1.0.1/doc/manual/syntax/regular_expressions.rst_0000644000175000017500000000524113143075774017646 00000000000000 ``"foo"`` literal string ``"foo"``. ANSI-C escape sequences can be used. ``'foo'`` literal string ``"foo"`` (case insensitive for characters [a-zA-Z]). ANSI-C escape sequences can be used. ``[xyz]`` character class; in this case, the regular expression matches ``x``, ``y``, or ``z``. ``[abj-oZ]`` character class with a range in it; matches ``a``, ``b``, any letter from ``j`` through ``o``, or ``Z``. ``[^class]`` inverted character class. ``r \ s`` match any ``r`` which isn't ``s``. ``r`` and ``s`` must be regular expressions which can be expressed as character classes. ``r*`` zero or more occurrences of ``r``. ``r+`` one or more occurrences of ``r``. ``r?`` optional ``r``. ``(r)`` ``r``; parentheses are used to override precedence. ``r s`` ``r`` followed by ``s`` (concatenation). ``r | s`` ``r`` or ``s`` (alternative). ``r`` / ``s`` ``r`` but only if it is followed by ``s``. Note that ``s`` is not part of the matched text. This type of regular expression is called "trailing context". Trailing context can only be at the end of a rule and cannot be part of a named definition. ``r{n}`` matches ``r`` exactly ``n`` times. ``r{n,}`` matches ``r`` at least ``n`` times. ``r{n,m}`` matches ``r`` at least ``n`` times, but not more than ``m`` times. ``.`` match any character except newline. ``name`` matches a named definition as specified by ``name`` only if ``-F`` is off. If ``-F`` is active then this behaves like it was enclosed in double quotes and matches the string "name". ``@stag`` save input position at which ``@stag`` matches in a variable named ``stag`` ``#mtag`` save all input positions at which ``#mtag`` matches in a variable named ``mtag`` (multiple positions are possible if ``#mtag`` is enclosed in a repetition subexpression that matches several times) Character classes and string literals may contain octal or hexadecimal character definitions and the following set of escape sequences: ``\a``, ``\b``, ``\f``, ``\n``, ``\r``, ``\t``, ``\v``, ``\\``. An octal character is defined by a backslash followed by its three octal digits (e.g., ``\377``). Hexadecimal characters from 0 to 0xFF are defined by a backslash, a lower case ``x`` and two hexadecimal digits (e.g., ``\x12``). Hexadecimal characters from 0x100 to 0xFFFF are defined by a backslash, a lower case ``\u``or an upper case ``\X``, and four hexadecimal digits (e.g., ``\u1234``). Hexadecimal characters from 0x10000 to 0xFFFFffff are defined by a backslash, an upper case ``\U``, and eight hexadecimal digits (e.g., ``\U12345678``). The only portable "any" rule is the default rule, ``*``. re2c-1.0.1/doc/manual/warnings/0000755000175000017500000000000013143420716013220 500000000000000re2c-1.0.1/doc/manual/warnings/warnings_list.rst0000644000175000017500000000357613143051143016562 00000000000000``-Wcondition-order`` Warn if the generated program makes implicit assumptions about condition numbering. You should use either the ``-t, --type-header`` option or the ``/*!types:re2c*/`` directive to generate a mapping of condition names to numbers and then use the autogenerated condition names. ``-Wempty-character-class`` Warn if a regular expression contains an empty character class. Rationally, trying to match an empty character class makes no sense: it should always fail. However, for backwards compatibility reasons, ``re2c`` allows empty character classes and treats them as empty strings. Use the ``--empty-class`` option to change the default behavior. ``-Wmatch-empty-string`` Warn if a regular expression in a rule is nullable (matches an empty string). If the DFA runs in a loop and an empty match is unintentional (the input position in not advanced manually), the lexer may get stuck in an infinite loop. ``-Wswapped-range`` Warn if the lower bound of a range is greater than its upper bound. The default behavior is to silently swap the range bounds. ``-Wundefined-control-flow`` Warn if some input strings cause undefined control flow in the lexer (the faulty patterns are reported). This is the most dangerous and most common mistake. It can be easily fixed by adding the default rule (``*``) (this rule has the lowest priority, matches any code unit, and consumes exactly one code unit). ``-Wunreachable-rules`` Warn about rules that are shadowed by other rules and will never match. ``-Wuseless-escape`` Warn if a symbol is escaped when it shouldn't be. By default, re2c silently ignores such escapes, but this may as well indicate a typo or error in the escape sequence. ``-Wnondeterministic-tags`` Warn if tag has ``n``-th degree of nondeterminism, where ``n`` is greater than 1. re2c-1.0.1/doc/manual/warnings/warnings_general.rst0000644000175000017500000000106313137447263017230 00000000000000 ``-W`` Turn on all warnings. ``-Werror`` Turn warnings into errors. Note that this option alone doesn't turn on any warnings; it only affects those warnings that have been turned on so far or will be turned on later. ``-W`` Turn on a ``warning``. ``-Wno-`` Turn off a ``warning``. ``-Werror-`` Turn on a ``warning`` and treat it as an error (this implies ``-W``). ``-Wno-error-`` Don't treat this particular ``warning`` as an error. This doesn't turn off the warning itself. re2c-1.0.1/doc/manual/features/0000755000175000017500000000000013143420715013205 500000000000000re2c-1.0.1/doc/manual/features/submatch/0000755000175000017500000000000013143420716015014 500000000000000re2c-1.0.1/doc/manual/features/submatch/submatch.rst_0000644000175000017500000001001213143075774017437 00000000000000``re2c`` supports two kinds of submatch extraction. The first option is ``-P --posix-captures``: it enables POSIX-compliant capturing groups. In this mode parentheses in regular expressions denote the beginning and the end of capturing groups; the whole regular expression is group number zero. The number of groups for the matching rule is stored in a variable ``yynmatch``, and submatch results are stored in ``yypmatch`` array. Both ``yynmatch`` and ``yypmatch`` should be defined by the user; note that ``yypmatch`` size must be at least ``[yynmatch * 2]``. ``re2c`` provides a directive ``/*!maxnmatch:re2c*/`` that defines a constant ``YYMAXNMATCH``: the maximal value of ``yynmatch`` among all rules. Note that ``re2c`` implements POSIX-compliant disambiguation: each subexpression matches as long as possible, and subexpressions that start earlier in regular expression have priority over those starting later. Second option is ``-T --tags``. With this option one can use standalone tags of the form ``@stag`` and ``#mtag`` instead of capturing parentheses, where ``stag`` and ``mtag`` are arbitrary used-defined names. Tags can be used anywhere inside of a regular expression; semantically they are just position markers. Tags of the form ``@stag`` are called *s-tags*: they denote a single submatch value (the last input position where this tag matched). Tags of the form ``#mtag`` are called *m-tags*: they denote multiple submatch values (the whole history of repetitions of this tag). All tags should be defined by the user as variables with the corresponding names. With standalone tags ``re2c`` uses leftmost greedy disambiguation: submatch positions correspond to the leftmost matching path through the regular expression. With both ``--posix-captures`` and ``--tags`` options ``re2c`` generates a number of tag variables that are used by the lexer to track multiple possible versions of each tag (multiple versions are caused by possible ambiguity of submatch). When a rule matches, ambiguity is resolved and all tags of this rule (or capturing parentheses, which are also implemented as tags) are initialized with the values of appropriate tag variables. Note that there is no one-to-one correspondence between tag variables and tags: the same tag variable may be reused for different tags, and one tag may require multiple tag variables to hold all its ambiguous versions. The exact number of tag variables is unknown to the user; this number is determined by ``re2c``. However, tag variables should be defined by the user, because it might be necessary to update them in ``YYFILL`` and store them between invocations of lexer with ``--storable-state`` option. Therefore ``re2c`` provides directives ``/*!stags:re2c ... */`` and ``/*!mtags:re2c ... */`` that can be used to declare, initialize and manipulate tag variables. *S-tags* must support the following operations: * save input position to *s-tag*: ``t = YYCURSOR`` with default API, or user-defined operation ``YYSTAGP (t)`` with generic API * save default value to *s-tag*: ``t = NULL`` with default API, or user-defined operation ``YYSTAGN (t)`` with generic API * copy one *s-tag* to another: ``t1 = t2`` *M-tags* must support the following operations: * append input position to *m-tag*: user-defined operation ``YYMTAGP (t)`` with both default and generic API * append default value to *m-tag*: user-defined operation ``YYMTAGN (t)`` with both default and generic API * copy one *m-tag* to another: ``t1 = t2`` *S-tags* can be implemented as scalar values (pointers or offsets). *M-tags* need a more complex representation, as they need to store a sequence of tag values. The most naive and inefficient representation of *m-tag* is a list (array, vector) of tag values; a more efficient representation is to store all *m-tags* in a prefix-tree represented as array of nodes ``(v, p)``, where ``v`` is tag value and ``p`` is a pointer to parent node. For further details see ``http://re2c.org/examples/examples.html`` page on the website or ``re2c/examples/`` subdirectory of ``re2c`` distribution. re2c-1.0.1/doc/manual/features/generic_api/0000755000175000017500000000000013143420716015453 500000000000000re2c-1.0.1/doc/manual/features/generic_api/generic_api.rst_0000644000175000017500000000477613143075774020561 00000000000000 ``re2c`` usually operates on input with pointer-like primitives ``YYCURSOR``, ``YYMARKER``, ``YYCTXMARKER``, and ``YYLIMIT``. The generic input API (enabled with the ``--input custom`` switch) allows customizing input operations. In this mode, ``re2c`` will express all operations on input in terms of the following primitives: +----------------------+-----------------------------------------------------------+ | ``YYPEEK ()`` | get current input character | +----------------------+-----------------------------------------------------------+ | ``YYSKIP ()`` | advance to next character | +----------------------+-----------------------------------------------------------+ | ``YYBACKUP ()`` | backup current input position | +----------------------+-----------------------------------------------------------+ | ``YYBACKUPCTX ()`` | backup current input position for trailing context | +----------------------+-----------------------------------------------------------+ | ``YYSTAGP (t)`` | save current input position to tag ``t`` | +----------------------+-----------------------------------------------------------+ | ``YYSTAGN (t)`` | save default value to tag ``t`` | +----------------------+-----------------------------------------------------------+ | ``YYMTAGP (t)`` | append input position to the history of tag ``t`` | +----------------------+-----------------------------------------------------------+ | ``YYMTAGN (t)`` | append default value to the history of tag ``t`` | +----------------------+-----------------------------------------------------------+ | ``YYRESTORE ()`` | restore current input position | +----------------------+-----------------------------------------------------------+ | ``YYRESTORECTX ()`` | restore current input position for trailing context | +----------------------+-----------------------------------------------------------+ | ``YYRESTORETAG (t)`` | restore current input position from tag ``t`` | +----------------------+-----------------------------------------------------------+ | ``YYLESSTHAN (n)`` | check if less than ``n`` input characters are left | +----------------------+-----------------------------------------------------------+ re2c-1.0.1/doc/manual/features/conditions/0000755000175000017500000000000013143420716015357 500000000000000re2c-1.0.1/doc/manual/features/conditions/conditions.rst_0000644000175000017500000000335213143075774020356 00000000000000You can precede regular expressions with a list of condition names when using the ``-c`` switch. ``re2c`` will then generate a scanner block for each condition, and each of the generated blocks will have its own precondition. The precondition is given by the interface define ``YYGETCONDITON()`` and must be of type ``YYCONDTYPE``. There are two special rule types. First, the rules of the condition ``<*>`` are merged to all conditions (note that they have a lower priority than other rules of that condition). And second, the empty condition list allows to provide a code block that does not have a scanner part, meaning it does not allow any regular expressions. The condition value referring to this special block is always the one with the enumeration value 0. This way the code of this special rule can be used to initialize a scanner. It is in no way necessary to have these rules: but sometimes it is helpful to have a dedicated uninitialized condition state. Non empty rules allow to specify the new condition, which makes them transition rules. Besides generating calls for the ``YYSETCONDTITION`` define, no other special code is generated. There is another kind of special rule that allows to prepend code to any code block of all rules of a certain set of conditions or to all code blocks of all rules. This can be helpful when some operation is common among rules. For instance, this can be used to store the length of the scanned string. These special setup rules start with an exclamation mark followed by either a list of conditions ```` or a star ````. When ``re2c`` generates the code for a rule whose state does not have a setup rule and a starred setup rule is present, the starred setup code will be used as setup code. re2c-1.0.1/doc/manual/features/state/0000755000175000017500000000000013143420716014326 500000000000000re2c-1.0.1/doc/manual/features/state/state.rst_0000644000175000017500000000544213143075774016276 00000000000000When the ``-f`` flag is specified, ``re2c`` generates a scanner that can store its current state, return to its caller, and later resume operations exactly where it left off. The default mode of operation in ``re2c`` is a "pull" model, where the scanner asks for extra input whenever it needs it. However, this mode of operation assumes that the scanner is the "owner" of the parsing loop, and that may not always be convenient. Typically, if there is a preprocessor ahead of the scanner in the stream, or for that matter, any other procedural source of data, the scanner cannot "ask" for more data unless both the scanner and the source live in separate threads. The ``-f`` flag is useful exactly for situations like that: it lets users design scanners that work in a "push" model, i.e., a model where data is fed to the scanner chunk by chunk. When the scanner runs out of data to consume, it stores its state and returns to the caller. When more input data is fed to the scanner, it resumes operations exactly where it left off. Changes needed compared to the "pull" model: * The user has to supply macros named ``YYSETSTATE ()`` and ``YYGETSTATE (state)``. * The ``-f`` option inhibits declaration of ``yych`` and ``yyaccept``, so the user has to declare them and save and restore them where required. In the ``examples/push_model/push.re`` example, these are declared as fields of a (C++) class of which the scanner is a method, so they do not need to be saved/restored explicitly. For C, they could, e.g., be made macros that select fields from a structure passed in as a parameter. Alternatively, they could be declared as local variables, saved with ``YYFILL (n)`` when it decides to return and restored upon entering the function. Also, it could be more efficient to save the state from ``YYFILL (n)`` because ``YYSETSTATE (state)`` is called unconditionally. ``YYFILL (n)`` however does not get ``state`` as a parameter, so we would have to store state in a local variable by ``YYSETSTATE (state)``. * Modify ``YYFILL (n)`` to return (from the function calling it) if more input is needed. * Modify the caller to recognize if more input is needed and respond appropriately. * The generated code will contain a switch block that is used to restore the last state by jumping behind the corresponding ``YYFILL (n)`` call. This code is automatically generated in the epilogue of the first ``/*!re2c */`` block. It is possible to trigger generation of the ``YYGETSTATE ()`` block earlier by placing a ``/*!getstate:re2c*/`` comment. This is especially useful when the scanner code should be wrapped inside a loop. Please see ``examples/push_model/push.re`` for an example of a "push" model scanner. The generated code can be tweaked with inplace configurations ``state:abort`` and ``state:nextlabel``. re2c-1.0.1/doc/manual/features/encodings/0000755000175000017500000000000013143420716015157 500000000000000re2c-1.0.1/doc/manual/features/encodings/encodings.rst_0000644000175000017500000000600613143075774017755 00000000000000``re2c`` supports the following encodings: ASCII (default), EBCDIC (``-e``), UCS-2 (``-w``), UTF-16 (``-x``), UTF-32 (``-u``) and UTF-8 (``-8``). See also inplace configuration ``re2c:flags``. The following concepts should be clarified when talking about encodings. A *code point* is an abstract number that represents a single symbol. A *code unit* is the smallest unit of memory, which is used in the encoded text (it corresponds to one character in the input stream). One or more code units may be needed to represent a single code point, depending on the encoding. In a *fixed-length* encoding, each code point is represented with an equal number of code units. In *variable-length* encodings, different code points can be represented with different number of code units. * ASCII is a fixed-length encoding. Its code space includes 0x100 code points, from 0 to 0xFF. A code point is represented with exactly one 1-byte code unit, which has the same value as the code point. The size of ``YYCTYPE`` must be 1 byte. * EBCDIC is a fixed-length encoding. Its code space includes 0x100 code points, from 0 to 0xFF. A code point is represented with exactly one 1-byte code unit, which has the same value as the code point. The size of ``YYCTYPE`` must be 1 byte. * UCS-2 is a fixed-length encoding. Its code space includes 0x10000 code points, from 0 to 0xFFFF. One code point is represented with exactly one 2-byte code unit, which has the same value as the code point. The size of ``YYCTYPE`` must be 2 bytes. * UTF-16 is a variable-length encoding. Its code space includes all Unicode code points, from 0 to 0xD7FF and from 0xE000 to 0x10FFFF. One code point is represented with one or two 2-byte code units. The size of ``YYCTYPE`` must be 2 bytes. * UTF-32 is a fixed-length encoding. Its code space includes all Unicode code points, from 0 to 0xD7FF and from 0xE000 to 0x10FFFF. One code point is represented with exactly one 4-byte code unit. The size of ``YYCTYPE`` must be 4 bytes. * UTF-8 is a variable-length encoding. Its code space includes all Unicode code points, from 0 to 0xD7FF and from 0xE000 to 0x10FFFF. One code point is represented with a sequence of one, two, three, or four 1-byte code units. The size of ``YYCTYPE`` must be 1 byte. In Unicode, values from range 0xD800 to 0xDFFF (surrogates) are not valid Unicode code points. Any encoded sequence of code units that would map to Unicode code points in the range 0xD800-0xDFFF, is ill-formed. The user can control how ``re2c`` treats such ill-formed sequences with the ``--encoding-policy `` switch. For some encodings, there are code units that never occur in a valid encoded stream (e.g., 0xFF byte in UTF-8). If the generated scanner must check for invalid input, the only correct way to do so is to use the default rule (``*``). Note that the full range rule (``[^]``) won't catch invalid code units when a variable-length encoding is used (``[^]`` means "any valid code point", whereas the default rule (``*``) means "any possible code unit"). re2c-1.0.1/doc/manual/options/0000755000175000017500000000000013143420716013063 500000000000000re2c-1.0.1/doc/manual/options/options_list.rst0000644000175000017500000002045113143051143016257 00000000000000``-? -h --help`` Show a short help screen: ``-b --bit-vectors`` Implies ``-s``. Use bit vectors as well to try to coax better code out of the compiler. Most useful for specifications with more than a few keywords (e.g., for most programming languages). ``-c --conditions`` Used for (f)lex-like condition support. ``-d --debug-output`` Creates a parser that dumps information about the current position and the state the parser is in. This is useful for debugging parser issues and states. If you use this switch, you need to define a ``YYDEBUG`` macro, which will be called like a function with two parameters: ``void YYDEBUG (int state, char current)``. The first parameter receives the state or ``-1`` and the second parameter receives the input at the current cursor. ``-D --emit-dot`` Emit Graphviz dot data, which can then be processed with e.g., ``dot -Tpng input.dot > output.png``. Please note that scanners with many states may crash dot. ``-e --ecb`` Generate a parser that supports EBCDIC. The generated code can deal with any character up to 0xFF. In this mode, ``re2c`` assumes an input character size of 1 byte. This switch is incompatible with ``-w``, ``-x``, ``-u``, and ``-8``. ``-f --storable-state`` Generate a scanner with support for storable state. ``-F --flex-syntax`` Partial support for flex syntax. When this flag is active, named definitions must be surrounded by curly braces and can be defined without an equal sign and the terminating semicolon. Instead, names are treated as direct double quoted strings. ``-g --computed-gotos`` Generate a scanner that utilizes GCC's computed-goto feature. That is, ``re2c`` generates jump tables whenever a decision is of certain complexity (e.g., a lot of if conditions would be otherwise necessary). This is only usable with compilers that support this feature. Note that this implies ``-b`` and that the complexity threshold can be configured using the ``cgoto:threshold`` inplace configuration. ``-i --no-debug-info`` Do not output ``#line`` information. This is useful when you want use a CMS tool with ``re2c``'s output. You might want to do this if you do not want to impose re2c as a build requirement for your source. ``-o OUTPUT --output=OUTPUT`` Specify the ``OUTPUT`` file. ``-r --reusable`` Allows reuse of scanner definitions with ``/*!use:re2c */`` after ``/*!rules:re2c */``. In this mode, no ``/*!re2c */`` block and exactly one ``/*!rules:re2c */`` must be present. The rules are saved and used by every ``/*!use:re2c */`` block that follows. These blocks can contain inplace configurations, especially ``re2c:flags:e``, ``re2c:flags:w``, ``re2c:flags:x``, ``re2c:flags:u``, and ``re2c:flags:8``. That way it is possible to create the same scanner multiple times for different character types, different input mechanisms, or different output mechanisms. The ``/*!use:re2c */`` blocks can also contain additional rules that will be appended to the set of rules in ``/*!rules:re2c */``. ``-s --nested-ifs`` Generate nested ifs for some switches. Many compilers need this assist to generate better code. ``-t HEADER --type-header=HEADER`` Create a ``HEADER`` file that contains types for the (f)lex-like condition support. This can only be activated when ``-c`` is in use. ``-T --tags`` Enable submatch extraction with tags. ``-P --posix-captures`` Enable submatch extraction with POSIX-style capturing groups. ``-u --unicode`` Generate a parser that supports UTF-32. The generated code can deal with any valid Unicode character up to 0x10FFFF. In this mode, ``re2c`` assumes an input character size of 4 bytes. This switch is incompatible with ``-e``, ``-w``, ``-x``, and ``-8``. This implies ``-s``. ``-v --version`` Show version information. ``-V --vernum`` Show the version as a number in the MMmmpp (Majorm, minor, patch) format. ``-w --wide-chars`` Generate a parser that supports UCS-2. The generated code can deal with any valid Unicode character up to 0xFFFF. In this mode, ``re2c`` assumes an input character size of 2 bytes. This switch is incompatible with ``-e``, ``-x``, ``-u``, and ``-8``. This implies ``-s``. ``-x --utf-16`` Generate a parser that supports UTF-16. The generated code can deal with any valid Unicode character up to 0x10FFFF. In this mode, ``re2c`` assumes an input character size of 2 bytes. This switch is incompatible with ``-e``, ``-w``, ``-u``, and ``-8``. This implies ``-s``. ``-8 --utf-8`` Generate a parser that supports UTF-8. The generated code can deal with any valid Unicode character up to 0x10FFFF. In this mode, ``re2c`` assumes an input character size of 1 byte. This switch is incompatible with ``-e``, ``-w``, ``-x``, and ``-u``. ``--case-insensitive`` Makes all strings case insensitive. This makes "-quoted expressions behave as '-quoted expressions. ``--case-inverted`` Invert the meaning of single and double quoted strings. With this switch, single quotes are case sensitive and double quotes are case insensitive. ``--no-generation-date`` Suppress date output in the generated file. ``--no-lookahead`` Use TDFA(0) instead of TDFA(1). This option only has effect with ``--tags`` or ``--posix-captures`` options. ``--no-optimize-tags`` Suppress optimization of tag variables (mostly used for debugging). ``--no-version`` Suppress version output in the generated file. ``--no-generation-date`` Suppress version output in the generated file. ``--encoding-policy POLICY`` Specify how ``re2c`` must treat Unicode surrogates. ``POLICY`` can be one of the following: ``fail`` (abort with an error when a surrogate is encountered), ``substitute`` (silently replace surrogates with the error code point 0xFFFD), ``ignore`` (treat surrogates as normal code points). By default, ``re2c`` ignores surrogates (for backward compatibility). The Unicode standard says that standalone surrogates are invalid code points, but different libraries and programs treat them differently. ``--input INPUT`` Specify re2c's input API. ``INPUT`` can be either ``default`` or ``custom``. ``-S --skeleton`` Instead of embedding re2c-generated code into C/C++ source, generate a self-contained program for the same DFA. Most useful for correctness and performance testing. ``--empty-class POLICY`` What to do if the user uses an empty character class. ``POLICY`` can be one of the following: ``match-empty`` (match empty input: pretty illogical, but this is the default for backwards compatibility reasons), ``match-none`` (fail to match on any input), ``error`` (compilation error). Note that there are various ways to construct an empty class, e.g., [], [^\\x00-\\xFF], [\\x00-\\xFF][\\x00-\\xFF]. ``--dfa-minimization
`` The internal algorithm used by re2c to minimize the DFA (defaults to ``moore``). Both the table filling algorithm and the Moore algorithm should produce the same DFA (up to states relabeling). The table filling algorithm is much simpler and slower; it serves as a reference implementation. ``--eager-skip`` This option controls when the generated lexer advances to the next input symbol (that is, increments YYCURSOR or invokes YYSKIP). By default this happens after transition to the next state, but ``--eager-skip`` option allows to override default behavior and advance input position immediately after reading input symbol. This option is implied by ``--no-lookahead``. ``--dump-nfa`` Generate .dot representation of NFA and dump it on stderr. ``--dump-dfa-raw`` Generate .dot representation of DFA under construction and dump it on stderr. ``--dump-dfa-det`` Generate .dot representation of DFA immediately after determinization and dump it on stderr. ``--dump-dfa-tagopt`` Generate .dot representation of DFA after tag optimizations and dump it on stderr. ``--dump-dfa-min`` Generate .dot representation of DFA after minimization and dump it on stderr. ``--dump-adfa`` Generate .dot representation of DFA after tunneling and dump it on stderr. ``-1 --single-pass`` Deprecated. Does nothing (single pass is the default now). re2c-1.0.1/doc/loplas.ps0000644000175000017500000056321213063315631011702 00000000000000%!PS-Adobe-2.0 %%Creator: dvipsk 5.526a Copyright 1986, 1993 Radical Eye Software %%Title: paper.dvi %%Pages: 16 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%EndComments %DVIPSCommandLine: dvips -o paper.ps paper %DVIPSParameters: dpi=300, compressed, comments removed %DVIPSSource: TeX output 1994.04.15:2115 %%BeginProcSet: texc.pro /TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR matrix currentmatrix dup dup 4 get round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@landscape{/isls true N}B /@manualfeed{ statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{ pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get} B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]/id ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N /cp 0 N{ rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp add /cp X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add /gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1 adv} B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2 idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg} {adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{ adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]dup{bind pop}forall N /D{/cc X dup type /stringtype ne{] }if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{ cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V {}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false} ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail} B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{ 3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{ 3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end %%EndProcSet %%BeginProcSet: special.pro TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B /@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{ /CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{ 10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale true def end /@MacSetUp{userdict /md known{userdict /md get type /dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{} N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{itransform lineto} }{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{ itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{ closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}N /txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp {pop pop showpage pm restore}N end}if}if}N /normalscale{Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale}if 0 setgray} N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict maxlength dict begin /magscale false def normalscale currentpoint TR /psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts /psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx psf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR /showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{ psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict begin /SpecialSave save N gsave normalscale currentpoint TR @SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial {CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR }{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath }N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{ end}repeat grestore SpecialSave restore end}N /@defspecial{SDict begin} N /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{ /SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet TeXDict begin 40258431 52099146 1000 300 300 (paper.dvi) @start /Fa 43 122 df<126012F0A212701210A31220A312401280040C7B830D>44 D<126012F0A2126004047B830D>46 D<1303A3497EA2497E130BA2EB11E0A3EB20F0A249 7E1478A2497EA33801FFFEEB001E0002131F80A248EB0780A2120C001E14C039FF803FFC 1E1D7E9C22>65 DI<90380FE0209038 7018603801C00439030003E000061301000E13004814605A15201278127000F01400A800 70142012781238A26C14407E000614806CEB01003801C00638007018EB0FE01B1E7D9C21 >II II<90381FC04090387030C03801C00C38030003000E1301120C001C 13005A15401278127000F01400A6EC7FF8EC07C00070130312781238A27E120C120E0003 13053801C008390070304090381FC0001D1E7D9C23>I<39FFF0FFF0390F000F00AC90B5 FCEB000FAD39FFF0FFF01C1C7D9B22>I<380FFF8038007C00133CB3127012F8A21338EA 7078EA4070EA30E0EA0F80111D7D9B18>74 D<39FFF00FF8390F0007C0EC030014025C5C 5C1460148049C7FC13021307497E1317EB23C0EB43E01381EB00F08014788080141F80EC 078015C015E039FFF03FFC1E1C7D9B23>IIII80 D82 D<3803E080EA0C19EA1005EA3003EA600112E01300A36C13007E127EEA7FE0EA3FFC6CB4 FC00071380EA007FEB07C0EB03E0130113007EA36C13C0A238E0018038D00300EACE06EA 81F8131E7D9C19>I<007FB512C038700F010060130000401440A200C014201280A30000 1400B1497E3803FFFC1B1C7D9B21>I<39FFF01FF0390F000380EC0100B3A26C13021380 00035BEA01C03800E018EB7060EB0F801C1D7D9B22>I<39FFE003FC001FC712F06C1440 A26C6C1380A27F0003EB0100A23801E002A2EBF00600001304A2EB7808A2EB7C18EB3C10 A26D5AA2EB1F60EB0F40A26D5AA36DC7FCA21E1D7E9B22>I<3BFFE07FF03FC03B1F000F 800F00ED00066CEC8004A213800007496C5A1413A23A03C033E0101421A23A01E061F020 1440A2D800F06D5AEC8078A20178EB7C80903879003CA2013D013FC7FC013E7FA2011E13 1E011C130EA2010C130C010813042A1D7E9B2E>I<13201370A313B8A3EA011CA3EA020E A2487EA2EA07FF38080380A3381801C0EA380338FE0FF815157F9419>97 DIIII103 D<38FF8FF8381C01C0A9EA1FFFEA1C01A938FF8FF815157F9419>II<38FF83F8381C01E01480140013025B5B5B1330137013B8EA1D 1C121EEA1C0E7F14801303EB01C014E014F038FF83FC16157F941A>107 DI<00FEEB0FE0001E1400 00171317A338138027A23811C047A33810E087A2EB7107A3133AA2131CA2123839FE083F E01B157F941F>I<38FC03F8381E00E014401217EA138013C01211EA10E01370A2133813 1CA2130E130714C0130313011300123800FE134015157F9419>III114 DI<387FFFF03860703000401310A20080 1308A300001300ADEA07FF15157F9419>I<38FF83F8381C00E01440AE000C13C0000E13 8038060100EA0386EA00FC15157F9419>I<38FF01F8383C00F0001C1340A2001E13C000 0E1380A238070100A21383EA0382A2EA01C4A213E4EA00E8A21370A3132015157F9419> I<38FF87F0381E0380000E1300EA0F026C5AEA038413C8EA01D0EA00F0A21370137813BC EA011C7FEA020F487EEB0380000C13C0123C38FE07F815157F9419>120 D<38FF80FE381E0078000E1320000F13407E3803808013C100011300EA00E2A21374137C 1338A848B4FC1715809419>I E /Fb 7 118 df101 D<123E120CA41218A41230A41260 A412C012C8A312D0126007177D9609>108 D<3830783C38498CC6384E0502EA4C06389C 0E06EA180CA348485A15801418A23960300900140E190E7D8D1D>I111 D114 DI117 D E /Fc 1 59 df<126012F0A2126004047D830A>58 D E /Fd 1 111 df110 D E /Fe 22 121 df45 D<12E0A303037D820A>I<130813181330A31360A313C0A3EA0180A3EA0300A21206A35A A35AA35AA35AA35AA20D217E9812>I<1202120E12FEA2120EB0EAFFE0A20B167D9512> 49 D90 D97 D<12E0A8EAE7C0EAFFE0 EAF870EAE038A2131CA51338A2EAF0F0EAFFE0EAE7800E177E9612>II101 DII<12E0A31200A612E0AF03187E9708>105 D<12E0B3A503177E9608>108 D<38E7E1F838EFF3FC38F87E1E38F03C0EEAE038AB170F 7E8E1C>IIII114 D<121FEA7FC012E01300A27E127FEA3F80EA0FC0EA 01E0128012C0EAE1C0127FEA1F000B0F7F8E0E>I<1238A4EAFFC0A2EA3800AA1340EA1F C013000A137F920D>II120 D E /Ff 34 121 df<3801F1C0120312071301120EA7EAFFF1A2EA0E01B012 1D809C16>13 D45 D<12E0A303037C820C>I<130113031306A3 130CA31318A31330A31360A213C0A3EA0180A3EA0300A31206A25AA35AA35AA35AA35AA2 10297E9E15>II<5A1207123FB4FC12C71207B3A3EAFFF8 A20D1C7C9B15>II I<133C137C135C13DC1201139C1203A2EA071CA2120EA2121C123C12381278127012F0B5 12C0A238001C00A7121B7F9A15>II55 D57 D69 D<387FFFF0A2380001E0130314C013071480EB0F005B131E133E133C5B13F85B12015B48 5A12075B120F90C7FC121E123E123C127C1278B512F0A2141D7E9C19>90 D97 D<12E0ABEAE3E0EAEFF0EAFFF8EAF87CEAF01CEAE01E13 0EA6131C12F0EAF87CEAFFF8EAEFF0EAE3C00F1D7D9C15>II<130EABEA0F 8EEA1FEEEA3FFEEA7C3EEA700EA212E0A612F0EA701EEA7C3EEA3FFEEA1FEEEA0F8E0F1D 7E9C15>II<13FC12011203EA0700120EA7EAFFE0A2EA0E 00B00E1D809C0D>I<3803C3C0EA0FFF5A381C3800487EA56C5AEA1FF85BEA3BC00038C7 FCA2EA1FFC13FF481380EA700738E001C0A3EAF003387C0F80383FFF006C5AEA07F8121B 7F9115>I<12F0A41200A71270B2041D7E9C0A>105 D<12E0AB133C137813F0EAE1E0EAE3 C0EAE780EAEF00B4FC138012FBEAF9C0EAF1E012E013F013781338133C131E0F1D7D9C14 >107 D<12E0B3AB031D7D9C0A>I<38E3F03F39EFF8FF80D8FFFD13C039F81F81E038F00F 00EAE00EAD1B127D9122>II< EA03F0EA0FFC487EEA3C0F38780780EA700338E001C0A5EAF00300701380EA7807383C0F 00EA1FFE6C5AEA03F012127F9115>II114 DI<121CA6EA FFE0A2EA1C00AC1320EA1FF0120FEA07C00C187F970F>II<39E03E0380A3D870371300EB7707A213733838E38EA33818E18C 381CC1CC001D13DCA2380D80D8000F13F8A20007137019127F911C>119 D<3870038038780700EA3C0EEA1C1C120E6C5AEA03F06C5A5B7F487EEA0738EA0E18131C 487E487E3870038000F013C01212809113>I E /Fg 72 126 df<126012F0AA12701200 A4126012F0A212600414799312>33 DII37 D<1207EA1F80EA19C01239A3EA3B9E133EEA3E38EA1C70A2EA1E E0123E1267EAE7C0EAE3C413CE12E7EA7EFCEA3C380F147F9312>I<126012F012F81278 1218A31230A2126012C01280050C799312>II<128012C012601230121812 1C120C120EA21207A7120EA2120C121C12181230126012C0128008197C9612>I<1207A3 EAE738EAFFF8EA7FF0EA1FC0A2EA7FF0EAFFF8EAE738EA0700A30D0E7E9012>II<126012F012F8127812181230A212E012C0050979 8312>II<126012F0A212600404798312>I<13181338A21370A2 13E0A2EA01C0A3EA0380A2EA0700A2120EA25AA35AA25AA25AA25A0D1A7E9612>II<1206A2120E121E12FE12EE120EACEAFFE0A20B147D9312>III<12E0EAFFFEA2 EAE0181338EA007013E013C01201EA0380A2EA0700A4120EA512040F157F9412>55 DII<126012F0A212601200A6126012F0A21260040E798D12>I<126012F0A2126012 00A6126012F0A212701230A2126012C012800413798D12>I<13381378EA01F0EA03E0EA 0F80EA1F00123C12F85A7E123C121FEA0F80EA03E0EA01F0EA007813380D117E9212>I< EAFFFEA2127FC7FCA3EA7FFE12FFA20F097F8E12>I<124012E07E127C7EEA0F80EA07C0 EA01E0EA00F8137813F8EA01E0EA07C0EA0F80EA3E005A12F05A12400D137E9312>I65 DII69 DI73 D75 DII79 D I82 DII<38FE3F80A238380E00AE6C5A6C5AEA07F06C5A111480 9312>I89 DII<12C07E A21270A27EA27EA37EA27EA2EA0380A2EA01C0A3EA00E0A21370A21338A213180D1A7E96 12>II97 D<12F8A21238A4EA3BE0 EA3FF0EA3C38EA381C130C130EA4130C131CEA3C38EA3FF0EA1BC00F147F9312>II< 13F8A21338A4EA07B8EA1FF8EA3878EA7038126012E0A41260EA70781238EA1FFEEA0FBE 0F147F9312>II<137E13FFEA01C7EA03821380A2EA7FFE12FFEA0380AA EA3FF8A21014809312>II<12F8A212 38A4EA39E0EA3FF0EA3E38123C1238A8EAFE3EA20F147F9312>I<1206120FA21206C7FC A3127FA21207AAEAFFF0A20C157D9412>I<12F8A21238A4EA3BFCA2EA38F0EA39E0EA3B C0EA3F80A213C0EA3DE0123813701338EAFC7EA20F147F9312>107 DIIIII114 DI<1206120EA3EA7FF812FFEA0E00A7131CA3EA07F8EA01E00E127F 9112>IIIIIII<13F81201EA0380EA0700A8120E12FCA2120E7EA8EA0380EA01F812000D1A7E96 12>I<127812FC120E7EA8EA0380EA01F8A2EA0380EA0700A8120E12FC12780D1A7E9612> 125 D E /Fh 37 123 df<90383FE3F83901F03F1C3903C03E3E0007137CEA0F80151C15 00A5B612C0A2390F807C00AE397FE1FFC0A21F1D809C1C>11 D<127812FCA4127806067D 850D>46 D<1360EA01E0120F12FF12F31203B3A2387FFF80A2111B7D9A18>49 DI< EA03F8EA1FFEEA3C1FEB0F80387C07C0127E127C123838000F80A2EB1E005BEA03F8EA00 1EEB0F80EB07C0A214E01230127812FCA214C038780F80EB1F00EA1FFEEA07F8131B7E9A 18>II66 D<90381FE0209038FFF8E03803F80F3807C003380F 800148C7FC123E1560127E127C00FC1400A8007C1460127E123E15C07E390F8001803907 C003003803F80E3800FFFCEB1FE01B1C7D9B22>I69 D77 D79 D82 D<3807F820381FFEE0EA3C07EA 7801EA700012F01460A26C130012FEEAFFE0EA7FFE6C7E1480000F13C06C13E0EA007FEB 03F01301130012C0A214E07E38F001C0EAFC0338EFFF00EA83FC141C7D9B1B>I<007FB5 12E0A238781F81007013800060146000E0147000C01430A400001400B03807FFFEA21C1C 7E9B21>I97 DIIII<137F3801 E3803803C7C0EA0787120FEB8380EB8000A5EAFFF8A2EA0F80AEEA7FF8A2121D809C0F> I<3803F8F0380E0F38121E381C0730003C1380A4001C1300EA1E0FEA0E0EEA1BF80010C7 FC1218A2EA1FFF14C06C13E04813F0387801F838F00078A300701370007813F0381E03C0 3807FF00151B7F9118>II<121E123FA4121EC7FCA6B4FCA2121FAEEAFFE0A20B1E7F9D0E>I107 DI<39FF0FC0 7E903831E18F3A1F40F20780D980FC13C0A2EB00F8AB3AFFE7FF3FF8A225127F9128>I< 38FF0FC0EB31E0381F40F0EB80F8A21300AB38FFE7FFA218127F911B>II<38FF3F80EBE1E0381F80F0EB0078147C143C143EA6143C147C 1478EB80F0EBC1E0EB3F0090C7FCA6EAFFE0A2171A7F911B>I114 DI<1203A45AA25AA2EA3FFC12FFEA1F00A9130CA4EA0F08EA0798EA03F00E1A7F9913>I< 38FF07F8A2EA1F00AC1301120F380786FFEA01F818127F911B>I<39FF8FF8FEA2391F03 E030A201831370000FEBF0601386D807C613C0EBCEF8EBEC790003EB7D80EBF83D0001EB 3F00A2497E0000131EEBE00EA21F127F9122>119 D<38FFC7FCA2381F8180EA0F833807 C700EA03EEEA01FC5B1200137C13FEEA01DFEA039F38070F80380607C0380C03E038FF07 FCA216127F9119>I<38FFC1FCA2381F0060EB80E0000F13C013C03807C180A23803E300 A2EA01F713F6EA00FE5BA21378A21330A21370EA706012F85BEAF9800073C7FC123E161A 7F9119>I<383FFF80383C1F00EA303F133E485A13FC5BEA01F01203485AEBC180EA0F81 121F1303003E1300EA7E07EA7C0FB5FC11127F9115>I E /Fi 55 124 df<1218123CA31204A21208A21210122012401280060C779C0D>39 D43 D<12181238127812381208A21210A212201240A21280050C7D 830D>II<1230127812F0126005047C830D>I<14031407140E14 0C141C141814381430147014E014C013011480130314005B1306130E5B13181338133013 70136013E05B1201485A90C7FC5A1206120E120C121C121812385A126012E05AA218297F 9E15>I<133C13C6EA0183EA030312061480120E120C121C1400485AA4EA700EA4485AA3 5BA21330485A12E0EA60C0EA7180001EC7FC111D7B9B15>I<13021306130C131C137CEA 039CEA0038A41370A413E0A4EA01C0A4EA0380A41207EAFFF00F1C7C9B15>I<133C13C3 38010180120214C0EA0441A21208A338108380A238110700EA0E06C65A5B5B13C048C7FC 12061208485A13021220EA4006EA7E0CEAC7F81283EA80E0121D7C9B15>I<133EEBC180 EA0101380200C05A1340EA0841A3EB8380EA070338000700130EEA01F8EA0038130CA213 0EA41270485A12805B1330EA4060EA21C0001FC7FC121D7C9B15>III<130FEB308013C0EA01831203 90C7FC1206120E120C121C13F0EA3B18EA3C0C12381278EA700EA3EA601C12E0A35BA25B EA60605BEA2180001EC7FC111D7B9B15>I<131E1361EB8180EA0180380300C0A2380601 80A3380703001386EA03CC13F01201EA0378EA063CEA081EEA180E1230EA6006A3485AA2 5BEA60105BEA30C0000FC7FC121D7C9B15>56 D<133C13C6EA0183EA03031206120E000C 1380121C1400A2485AA35B130EEA181EA2EA0C6CEA079CEA001C1318133813305BEAE0C0 A2EA81800086C7FC127C111D7B9B15>I<1206120FA212061200AA1230127812F0126008 127C910D>I<1418A21438A21478A214B8130114381302143CEB041CA213081318131013 20A2EB7FFCEB401C1380120113001202A2487F120C001C131EB4EBFFC01A1D7E9C1F>65 D<903803F02090381E0C6090383002E09038E003C03801C001EA038048C7FC000E148012 1E121C123C15005AA35AA41404A35C12705C6C5B00185B6C485AD80706C7FCEA01F81B1E 7A9C1E>67 D<48B512E038003C00013813601540A35BA214201500495AA214C013FF3801 C080A43803810113801402A248485AA2140C5C000E1378B55A1B1C7D9B1C>69 D<48B512C038003C01EB38001580A35BA214201500495AA214C013FF3801C080A4D80381 C7FC1380A348C8FCA45AEAFFF01A1C7D9B1B>I<903803F02090381E0C6090383002E090 38E003C03801C001EA038048C7FC000E1480121E121C123C15005AA35AA2903801FFC090 38001E00141CA400705BA27E001813786C139038070710D801F8C7FC1B1E7A9C20>I<38 01FFC038003C001338A45BA45BA4485AA4485AA448C7FCA45AEAFFE0121C7E9B10>73 D<3801FFE038003C001338A45BA45BA4485AA438038008A31410EA07001430146014E038 0E03C0B5FC151C7D9B1A>76 DI<3901FC03FE39001C0070013C13 60012E1340A301471380A3EB43809038838100A2138114C1380101C2A2EB00E2A2000213 E41474A3481338A3000C1318001C1310EAFF801F1C7D9B1F>II<3801FF FC38003C079038380380EC01C0A3EB7003A31580EBE0071500140E14383801FFE001C0C7 FCA3485AA448C8FCA45AEAFFE01A1C7D9B1C>I<3801FFF838003C0EEB3807EC0380A3EB 7007A3EC0F00EBE00E5C1470EBFFC0EA01C014601470A2EA0380A4380700F01540A21580 48137839FFE07900C7121E1A1D7D9B1E>82 DI<001FB512C0381C070138300E 0000201480126012405B1280A2000014005BA45BA45BA4485AA41203EA7FFE1A1C799B1E >I<397FF0FF80390F001C00000E13181410A3485BA4485BA4485BA44848C7FCA31302A2 5BA2EA6008EA3030EA1040EA0F80191D779B1F>I<3901FF81FE39001E00F0011C136001 1E1380EB0E011500EB0F026D5A5C1490EB03A014C01301A28013021304497EEB10701320 EB60381340EB803C3801001C12020006131E121E39FF80FFC01F1C7E9B1F>88 D97 D<123F1207A2120EA45AA4EA39C0EA3E60EA3830A2EA7038A4EAE0 70A3136013E0EAC0C012C1EA6180EA6300123C0D1D7B9C13>IIIII<13F3EA018FEA030FEA0607EA0E0E120C121CA2EA381CA413381230A2EA1878 13F0EA0F701200A213E0A2EAC0C012E1EAC300127E101A7D9113>III108 D<393C1E078039266318C0394683A0E0384703C0008E13 80A2120EA2391C0701C0A3EC0380D8380E1388A2EC0708151039701C032039300C01C01D 127C9122>IIIIIII<13C01201A3EA0380A4EAFFE0EA0700A3120EA45AA4EA3840A313 80EA1900120E0B1A7D990E>II<381E0183382703871247148338870701A2 120EA2381C0E02A31404EA180C131C1408001C1310380C26303807C3C018127C911C> 119 DI I123 D E /Fj 38 123 df<90380FF83F90397FFDFFC03A01F81F E3E03903E03F87EA07C0D80F801307ED03C06EC7FCA6B612FCA2260F801FC7FCB2397FF0 FFF0A223237FA221>11 D<1238127C12FE12FFA2127F123B1203A212071206A2120C121C 12181270122008117CA210>39 D<1238127C12FEA3127C123807077C8610>46 D<13181378EA01F812FFA21201B3A7387FFFE0A213207C9F1C>49 DI<13FE3807FFC0380F07E0381E03F0123FEB81F8A3EA1F 0314F0120014E0EB07C0EB1F803801FE007F380007C0EB01F014F8EB00FCA2003C13FE12 7EB4FCA314FCEA7E01007813F8381E07F0380FFFC03801FE0017207E9F1C>I<14E01301 1303A21307130F131FA21337137713E7EA01C71387EA03071207120E120C121812381270 12E0B512FEA2380007E0A7EBFFFEA217207E9F1C>I<00101320381E01E0381FFFC01480 14005B13F8EA1BC00018C7FCA4EA19FCEA1FFF381E0FC0381807E01303000013F0A214F8 A21238127C12FEA200FC13F0A2387007E0003013C0381C1F80380FFF00EA03F815207D9F 1C>I<1470A214F8A3497EA2497EA3EB06FF80010E7FEB0C3FA201187F141F01387FEB30 0FA201607F140701E07F90B5FCA239018001FCA200038090C7FCA20006147FA23AFFE00F FFF8A225227EA12A>65 DIIIIII76 D79 DI82 D<007FB61280A2397E03F80F0078140700701403006014 0100E015C0A200C01400A400001500B3A20003B512F8A222227EA127>84 D87 D97 D99 DI<13FE3807FF80380F 87C0381E01E0003E13F0EA7C0014F812FCA2B5FCA200FCC7FCA3127CA2127E003E13186C 1330380FC0703803FFC0C6130015167E951A>I<3803FC1E380FFF7F381F0F8F383E07CF 383C03C0007C13E0A5003C13C0EA3E07381F0F80EBFF00EA13FC0030C7FCA21238383FFF 806C13F06C13F84813FCEA380048133E00F0131EA40078133C007C137C383F01F8380FFF E00001130018217E951C>103 DI<121C123E127FA3123E121CC7FCA7B4FCA2121FB2 EAFFE0A20B247EA310>I<3AFF07F007F090391FFC1FFC3A1F303E303E01401340496C48 7EA201001300AE3BFFE0FFE0FFE0A22B167E9530>109 D<38FF07E0EB1FF8381F307CEB 403CEB803EA21300AE39FFE1FFC0A21A167E951F>I<13FE3807FFC0380F83E0381E00F0 003E13F848137CA300FC137EA7007C137CA26C13F8381F01F0380F83E03807FFC03800FE 0017167E951C>I<38FF0FE0EB3FF8381FF07CEB803E497E1580A2EC0FC0A8EC1F80A290 38803F00EBC03EEBE0FCEB3FF8EB0FC090C8FCA8EAFFE0A21A207E951F>I114 DI<487EA412 03A21207A2120F123FB5FCA2EA0F80ABEB8180A5EB8300EA07C3EA03FEEA00F811207F9F 16>I<38FF01FEA2381F003EAF147E14FE380F81BE3907FF3FC0EA01FC1A167E951F>I<39 FFE01FE0A2390F800600A2EBC00E0007130CEBE01C00031318A26C6C5AA26C6C5AA2EB7C C0A2137F6D5AA26DC7FCA2130EA21B167F951E>I<387FFFF0A2387C03E0387007C0EA60 0F38E01F8000C01300133E137EC65A5B485A00031330EA07E013C0380F8070121F383F00 60003E13E0EA7C03B5FCA214167E9519>122 D E /Fk 4 122 df15 D<133C13E0EA01C013801203AD13005A121C12F0121C12077E1380AD120113C0EA00E013 3C0E297D9E15>102 D<12F0121C12077E1380AD120113C0EA00E0133C13E0EA01C01380 1203AD13005A121C12F00E297D9E15>I<12021207A61202A3EA7270EAFFF8EA7270EA02 00A21207B11202A60D267E9C12>121 D E /Fl 12 114 df<38078010EA1FC0383FE020 EA7FF03860304038C01080128038000900A2130AA3130CA21308A31318A35BA45BA21340 141B7F9115>13 D<126012F0A2126004047C830C>58 D<126012F0A212701210A41220A2 12401280040C7C830C>I<140CA2141CA2143C147C145C149C148EEB010EA213021304A2 1308A213101320EB3FFEEB4007A21380EA0100A21202A21206121E39FF807FF01C1D7F9C 1F>65 D<3801FFE038003C001338A45BA45BA4485AA438038002A31404EA0700140C1418 1438000E13F0B5FC171C7E9B1C>76 D<3801FFFE39003C03C090383800E015F01570A249 13F0A3EC01E001E013C0EC0780EC1E00EBFFF03801C03080141CA2EA0380A43807003C15 08A2151048131E39FFE00E20C7EA07C01D1D7E9B20>82 DI97 D<123F1207A2120EA45AA4EA39E0EA3A30EA3C1812381270131CA3EAE038A31330 1370136013C01261EA2300121E0E1D7E9C12>II110 D113 D E /Fm 77 125 df<126012F0AF12601200A4126012F0A212600419779816>33 DII<13C01201A3EA07F0EA1F FC48B4FCEA7DCF38F1C78012E1A338F1C300EA79C0127FEA1FF0EA07FCEA01FE13CFEBC7 80EAF1C3A3EAE1C712F13879DF00EA3FFE6C5AEA07E0EA01C0A2120011207E9C16>I38 D<1218123C123E121E120EA3121E121C123C127812F01260070D799816>I<13E01201EA 07C013005A121E5A123812781270A312F05AA77E1270A312781238123C7E7E7E13C0EA01 E012000B217A9C16>I<12E07E127C121C121E7EEA0780120313C01201A313E01200A712 0113C0A3120313801207EA0F00121E121C127C12F05A0B217C9C16>III<1238127C127EA2123E120E121E 123C127C12F81260070B798416>II<127012F8A3127005057884 16>IIIIII<137C13FC13DC1201EA039CA2EA071C120F120E121E123C1238 127812F0B512E0A338001C00A53801FFC0A313197F9816>II<13F8EA03FEEA0FFFEA1F0F123E123CEA78060070C7FC12F0EAF3F8EA EFFE12FFEAF80F38F00780A2EAE00312F0A21270EA7807EB0F006C5AEA1FFEEA0FF8EA03 E011197E9816>I<12E0B51280A338E00F00131EEA001C5B137813705BA2485AA3485AA4 48C7FCA7111A7E9916>III<127012F8A312701200A8127012F8A312700512789116>I<1238 127CA312381200A81238127CA3123C121C123C123812F812F012600618799116>III<12C012F012FC123EEA0F806C7EEA01F06C7E133EEB1F801307131FEB3E 0013F8485AEA07C0485A003EC7FC12FC12F012C011157E9616>II<13E0487EA213B0A2EA03B8A31318EA071CA5EA0E0EA2EA0FFEA2 487EEA1C07A3387F1FC000FF13E0007F13C013197F9816>65 D<3801F180EA07FF5AEA1F 0FEA3C0712781303127000F0C7FC5AA77E387003801278A2EA3C07381F0F00EA0FFE6C5A EA01F011197E9816>67 DI<387FFFC0B5FC7EEA1C 01A490C7FCA2131CA2EA1FFCA3EA1C1CA290C7FC14E0A5EA7FFFB5FC7E13197F9816>I< B512E0A3EA1C00A41400A2131CA2EA1FFCA3EA1C1CA290C7FCA6B47E7F5B13197F9816> I<387F1FC038FFBFE0387F1FC0381C0700A7EA1FFFA3EA1C07A9387F1FC038FFBFE0387F 1FC013197F9816>72 DI<387F0FE038FF8F F0387F0FE0381C0780EB0F00130E5B133C5B5B5BEA1DF0121F7F1338EA1E1C121C7FA27F A2EB0380387F07E038FF8FF0387F07E01419809816>75 DI<38FC07E0EAFE0FA2383A0B80EA3B1BA513BBEA39B3A413F3 EA38E3A21303A538FE0FE0A313197F9816>I<387E1FC038FF3FE0387F1FC0381D070013 87A313C7A2121CA213E7A31367A21377A21337A31317EA7F1FEAFF9FEA7F0F13197F9816 >III82 DI<387FFFE0B5FC A2EAE0E0A400001300AFEA07FC487E6C5A13197F9816>I<387F07F038FF8FF8387F07F0 381C01C0B0380E0380A23807070013FF6C5AEA00F81519809816>I<387F1F80133F131F 380E1E00131CEA073C1338EA03B813F012015B120012017F120313B81207131CA2EA0E0E A2487E387F1FC000FF13E0007F13C013197F9816>88 D<38FE0FE0EAFF1FEAFE0F381C07 00A2EA0E0EA26C5AA3EA03B8A2EA01F0A26C5AA8EA03F8487E6C5A13197F9816>I91 D<12C07EA21270A27EA27EA27EA27EA26C7E A26C7EA26C7EA21370A27FA27FA27FA27FA2EB0380A2130111207E9C16>II<120C121E123C1278127012F012E0A312F012F81278 1230070D789B16>96 DI<127E12FE127E120EA4 133EEBFF80000F13C0EB83E01301380E00F0A21470A414F0000F13E01301EB83C013FF00 0E1300EA063C1419809816>II<133F5B7F1307A4EA03C7EA0FF7 EA3FFFEA3C1F487E487EA212E0A412F05BEA781FEA7C3F383FFFE0381FF7F03807C7E014 197F9816>II<131FEB7F8013FFEA01E7EBC30013C0 A2EA7FFFB5FCA2EA01C0ACEA3FFE487E6C5A11197F9816>I<3803E3C0380FFFE05A381E 3CC0383C1E00EA380EA3EA3C1E6C5AEA1FFC5BEA3BE00038C7FCA2EA1FFC13FF4813C0EA 780338F001E0EAE000A3EAF001387C07C0383FFF80380FFE00EA03F8131C7F9116>I<12 7E12FE127E120EA4133C13FF000F138013871303A2120EA9387FC7F038FFE7F8387FC7F0 1519809816>II108 D<38F9C38038FFEFC0EBFFE0EA3E 7CEA3C78EA3870AA38FE7CF8A2EB3C781512809116>IIIII<38FF0FC0EB3FE0137F3807F040EBE0005B5BA290C7 FCA7EAFFFCA313127F9116>II<12035AA4EA 7FFFB5FCA20007C7FCA75BEB0380A2130713873803FF005BEA00F811177F9616>I<387E 1F80EAFE3FEA7E1FEA0E03AA1307EA0F0FEBFFF06C13F83803E3F01512809116>I<38FF 1FE013BF131F38380380A413E33819F300A213B3EA1DB7A4EA0F1EA313127F9116>119 D<387F1FC0133F131F380F1C00EA073CEA03B813F012016C5A12017FEA03B8EA073C131C EA0E0E387F1FC038FF3FE0387F1FC013127F9116>I<387F1FC038FF9FE0387F1FC0381C 0700120E130EA212075BA2EA039CA21398EA01B8A2EA00F0A35BA3485A1279127BEA7F80 6CC7FC123C131B7F9116>I<383FFFC05AA238700780EB0F00131EC65A5B485A485AEA07 8048C7FC381E01C0123C1278B5FCA312127F9116>I<12E0B3AE0320779C16>124 D E /Fn 10 58 df<121FEA3180EA60C0EA4040EAC060A8EA4040EA60C0EA3180EA1F00 0B107F8F0F>48 D<120C123C12CC120CACEAFF8009107E8F0F>I<121FEA6180EA40C0EA 806012C01200A213C0EA0180EA030012065AEA10201220EA7FC012FF0B107F8F0F>I<12 1FEA2180EA60C0A2120013801201EA0F00EA00801340136012C0A2EA8040EA6080EA1F00 0B107F8F0F>I<1203A25A5A120B121312331223124312C3EAFFE0EA0300A4EA1FE00B10 7F8F0F>III<1240EA7FE013C0EA8080A2EA010012025AA2 120C1208A21218A50B117E900F>I<121FEA3180EA60C0A3EA7180EA3F00120FEA3380EA 61C0EAC060A3EA4040EA6080EA1F000B107F8F0F>I<121FEA3180EA60C0EAC0401360A3 EA40E01221EA1E6012001340EA60C01380EA4300123E0B107F8F0F>I E /Fo 66 124 df11 D<13FCEA0782EA0E07121C130290C7FCA4B5FCEA1C07AC38FF1FE013 17809614>I<13FFEA0707120E121CA6B5FCEA1C07AC38FFBFE01317809614>I<12011202 1204120C1218A21230A212701260A312E0AA1260A312701230A21218A2120C1204120212 0108227D980E>40 D<12801240122012301218A2120CA2120E1206A31207AA1206A3120E 120CA21218A2123012201240128008227E980E>I<126012F0A212701210A21220A21240 A2040A7D830A>44 DI<126012F0A2126004047D830A>I<130813 181330A31360A313C0A3EA0180A3EA0300A21206A35AA35AA35AA35AA35AA20D217E9812 >I<12035AB4FC1207B1EA7FF00C157E9412>49 DII<1330A2137013F01201 1370120212041208121812101220124012C0EAFFFEEA0070A5EA03FE0F157F9412>II I<1240EA7FFE13FC13F8EAC008EA80101320EA00401380A2EA0100A25A12021206A2120E A512040F167E9512>I57 D61 D<13101338A3135CA3138EA3EA0107A200 031380EA0203A23807FFC0EA0401A2380800E0A21218003813F038FE03FE17177F961A> 65 DIIIIII73 D<38FF80FE381C0078146014401480EB0100130613085B13381378139C EA1D0E121EEA1C07EB0380EB01C0A2EB00E014701478147C38FF80FF18177F961B>75 DI<00FEEB03F800 1E14C000171305A338138009A23811C011A33810E021A2EB7041A3EB3881A2EB1D01A213 0EA2123839FE040FF81D177F9620>I<00FC13FE001E1338001F13101217EA1380EA11C0 A2EA10E013701338A2131C130E130F1307EB0390EB01D0A2EB00F014701430123800FE13 1017177F961A>I<13FCEA0303380E01C0381C00E0481370003013300070133800601318 00E0131CA700701338A200301330003813706C13E0380E01C038030300EA00FC16177E96 1B>II82 DI<387FFFF83860381800401308A200801304A300001300 AF3807FFC016177F9619>I<38FF80FE383C0038001C1310A26C1320A26C1340A3380380 80A213C100011300A2EA00E2A213F61374A21338A3131017177F961A>86 D<38FF83FC381F01E0380E00807EEB8100EA0382EA01C213E4EA00E81378A21338137C13 5E138EEA0187EB0780EA0203380601C0000413E0EA0C00001C13F038FF03FE17177F961A >88 D<12FCA212C0B3AB12FCA206217D980A>91 D<12FCA2120CB3AB12FCA2062180980A >93 D97 D<12FC121CA813F8EA1F06EA1C031480130114C0A4148013031400 EA1B0EEA10F81217809614>II<137E130EA8EA07CEEA1C3EEA300E1270126012E0A412 601270EA301EEA182E3807CFC012177F9614>IIII<12FC121CA8137CEA1D8EEA1E07121CAA38FF9FE01317809614>I<121812 3CA212181200A5127C121CAC12FF081780960A>I<1203EA0780A2EA0300C7FCA5EA1F80 1203AF1243EAE30012E7127C091D82960B>I<12FC121CA8EB3F80EB1C00131813205B13 C0EA1FE0EA1CF0137013787F7FA238FF3FC01217809613>I<12FC121CB3A3EAFF800917 80960A>I<38FC7C1F391D8E6380391E0781C0001C1301AA39FF9FE7F81D0E808D1E>IIIII< EAFCF0EA1D38121EEA1C101300A9EAFF800D0E808D0E>II<1208A31218 A21238EAFF80EA3800A71340A4EA1C80EA0F000A147F930E>III<38FCFE7C383838381410381C3C20A2134C380E4E40A2138638 078780A2130300031300A2160E7F8D19>IIIII E /Fp 1 4 df<120CA2EACCC012EDEA 7F80EA0C00EA7F80EAEDC012CCEA0C00A20A0B7D8B10>3 D E /Fq 10 58 df<120FEA30C0EA6060A2EA4020EAC030A9EA4020EA6060A2EA30C0EA0F000C13 7E9211>48 D<120C121C12EC120CAFEAFFC00A137D9211>I<121FEA60C01360EAF07013 301260EA0070A2136013C012011380EA02005AEA08101210EA2020EA7FE012FF0C137E92 11>II<136013E0A2EA016012021206120C1208121012 20126012C0EAFFFCEA0060A5EA03FC0E137F9211>III<1240EA7FFC13F8EA401012801320EA00401380EA0100 A25A12021206A2120EA512040E147E9311>II< 120FEA3080EA6040EA4060EAC0201330A31240EA6070EA30B0EA0F30120013201360EAE0 401380EA4100123E0C137E9211>I E /Fr 76 124 df11 D<137E3801C180EA0301380703C0120EEB018090C7FCA5B512C0EA0E01B0387F87F8151D 809C17>II< 90383F07E03901C09C18380380F0D80701133C000E13E00100131892C7FCA5B612FC390E 00E01CB03A7FC7FCFF80211D809C23>I34 D<126012F012F812681208A31210A212201240 1280050C7C9C0C>39 D<13401380EA0100120212065AA25AA25AA212701260A312E0AC12 60A312701230A27EA27EA27E12027EEA008013400A2A7D9E10>I<7E12407E7E12187EA2 7EA27EA213801201A313C0AC1380A312031300A21206A25AA25A12105A5A5A0A2A7E9E10 >I<1306ADB612E0A2D80006C7FCAD1B1C7E9720>43 D<126012F0A212701210A41220A2 12401280040C7C830C>II<126012F0A2126004047C830C>I48 D<12035A123F12C71207B3A4EA0F80EAFFF80D1C7C9B 15>III<13 0CA2131C133CA2135C13DC139CEA011C120312021204120C1208121012301220124012C0 B512C038001C00A73801FFC0121C7F9B15>II<13F0EA030CEA0604EA0C0EEA181E1230130CEA7000A21260EAE3 E0EAE430EAE818EAF00C130EEAE0061307A51260A2EA7006EA300E130CEA1818EA0C30EA 03E0101D7E9B15>I<1240387FFF801400A2EA4002485AA25B485AA25B1360134013C0A2 12015BA21203A41207A66CC7FC111D7E9B15>III<126012F0A212601200AA126012F0 A2126004127C910C>I<126012F0A212601200AA126012F0A212701210A41220A2124012 80041A7C910C>I<1306A3130FA3EB1780A3EB23C0A3EB41E0A3EB80F0A200017FEB0078 EBFFF83803007C0002133CA20006133E0004131EA2000C131F121E39FF80FFF01C1D7F9C 1F>65 DI<90381F8080EBE061380180 1938070007000E13035A14015A00781300A2127000F01400A8007014801278A212386CEB 0100A26C13026C5B380180083800E030EB1FC0191E7E9C1E>IIII<90381F 8080EBE0613801801938070007000E13035A14015A00781300A2127000F01400A6ECFFF0 EC0F80007013071278A212387EA27E6C130B380180113800E06090381F80001C1E7E9C21 >I<39FFF3FFC0390F003C00ACEBFFFCEB003CAD39FFF3FFC01A1C7E9B1F>III76 DII< EB3F80EBE0E03803803848487E000E7F487F003C148000381303007814C0A20070130100 F014E0A8007014C000781303A200381480003C1307001C14006C130E6C5B6C6C5A3800E0 E0EB3F801B1E7E9C20>II82 D<3807E080EA1C19EA3005EA7003EA600112E01300A36C13007E127CEA7FC0EA 3FF8EA1FFEEA07FFC61380130FEB07C0130313011280A300C01380A238E00300EAD002EA CC0CEA83F8121E7E9C17>I<007FB512C038700F010060130000401440A200C014201280 A300001400B1497E3803FFFC1B1C7F9B1E>I<39FFF07FC0390F000E001404B3A26C5B13 8000035B12016C6C5AEB70C0011FC7FC1A1D7E9B1F>I<39FFE00FF0391F0003C06CEB01 8015006D5A00071302A26C6C5AA36C6C5AA213F000005BA2EBF830EB7820A26D5AA36D5A A2131F6DC7FCA21306A31C1D7F9B1F>I<3AFFE0FFE0FF3A1F001F003C001E011E13186C 011F1310A3D807801420EC2780A2D803C01440EC43C0A213E00001903881E080A33A00F1 00F100A3017913FA017A137AA2013E137C013C133CA301181318A3281D7F9B2B>I<397F F0FFC0390FC03E0038078018EA03C0EBE01000015BEBF06000001340EB7880137D013DC7 FC7F131F7F80A2EB13C0EB23E01321EB41F0EBC0F8EB80783801007C48133C00027F0006 131F001FEB3F8039FFC0FFF01C1C7F9B1F>I<12FEA212C0B3B312FEA207297C9E0C>91 D I<12FEA21206B3B312FEA20729809E0C>I97 D<12FC121CAA137CEA1D86EA1E03381C018014C0130014E0A614C013011480381E0300EA 1906EA10F8131D7F9C17>II<133F1307AAEA03E7EA0C17EA180F487E12 70126012E0A61260127012306C5AEA0C373807C7E0131D7E9C17>II<13F8EA018CEA071E1206EA0E0C1300A6EAFFE0EA0E00B0EA7FE00F1D809C 0D>II<12FC121CAA137C1387EA1D03001E1380121CAD38FF9FF0141D 7F9C17>I<1218123CA21218C7FCA712FC121CB0EAFF80091D7F9C0C>I<13C0EA01E0A2EA 00C01300A7EA0FE01200B3A21260EAF0C012F1EA6180EA3E000B25839C0D>I<12FC121C AAEB3FC0EB0F00130C13085B5B5B13E0121DEA1E70EA1C781338133C131C7F130F148038 FF9FE0131D7F9C16>I<12FC121CB3A9EAFF80091D7F9C0C>I<39FC7E07E0391C83883839 1D019018001EEBE01C001C13C0AD3AFF8FF8FF8021127F9124>IIIIIII<1204A4120CA212 1C123CEAFFE0EA1C00A91310A5120CEA0E20EA03C00C1A7F9910>I<38FC1F80EA1C03AD 1307120CEA0E1B3803E3F014127F9117>I<38FF07E0383C0380381C0100A2EA0E02A26C 5AA3EA0388A213D8EA01D0A2EA00E0A3134013127F9116>I<39FF3FCFE0393C0F038038 1C07011500130B000E1382A21311000713C4A213203803A0E8A2EBC06800011370A2EB80 30000013201B127F911E>I<387F8FF0380F03801400EA0702EA0384EA01C813D8EA00F0 1370137813F8139CEA010E1202EA060738040380381E07C038FF0FF81512809116>I<38 FF07E0383C0380381C0100A2EA0E02A26C5AA3EA0388A213D8EA01D0A2EA00E0A31340A2 5BA212F000F1C7FC12F31266123C131A7F9116>I II E /Fs 40 122 df<49B4FC011F13C090387F81E0EBFC013901 F807F01203EA07F0A4EC01C091C8FCA3EC3FF8B6FCA33807F003B3A33A7FFF3FFF80A321 2A7FA925>12 D<130E131E137EEA07FE12FFA212F81200B3AB387FFFFEA317277BA622> 49 DII<140E141E143E147E14 FEA213011303EB077E130EA2131C1338137013E0A2EA01C0EA0380EA0700120EA25A5A5A 5AB612F8A3C7EAFE00A890387FFFF8A31D277EA622>I<00181303381F801FEBFFFE5C5C 5C14C091C7FC001CC8FCA7EB7FC0381DFFF8381F80FC381E003F1208C7EA1F8015C0A215 E0A21218127C12FEA315C05A0078EB3F80A26CEB7F00381F01FE6CB45A000313F0C61380 1B277DA622>II<1238123E003FB512F0A34814E015C0158015003870000EA25C485B5C5CEA 00015C495A130791C7FC5B5B131E133EA2137E137CA213FCA41201A76C5A13701C297CA8 22>I65 D<91387FE003903907FFFC07 011FEBFF0F90397FF00F9F9039FF0001FFD801FC7F4848147F4848143F4848141F485A16 0F485A1607127FA290C9FC5AA97E7F1607123FA26C7E160E6C7E6C6C141C6C6C143C6C6C 14786CB4EB01F090397FF007C0011FB512800107EBFE009038007FF028297CA831>67 DIII<91387FE003903907FFFC07011FEBFF0F90397FF00F9F9039FF0001FF D801FC7F484880484880484880485A82485A82127FA290CAFC5AA892B512F87E7F030013 00123FA26C7EA26C7E6C7E6C7E6C7E6CB45B90387FF007011FB5129F0107EBFE0F903900 7FF0032D297CA835>I73 D82 D<01FF13C0000313E1000F13F9381F80FF383F003F 003E130F481307A200FC1303A214017EA26C90C7FC13C0EA7FFCEBFFE06C13F86C13FE80 000714806C14C0C6FC010F13E0EB007FEC1FF0140F140700E01303A46C14E0A26C13076C 14C0B4EB0F80EBE01F00E3B5120000E113FC38C01FF01C297CA825>I87 D<3803FF80000F13F0381F01FC383F80FE147F801580EA1F00C7FCA4EB3FFF3801FC3FEA 0FE0EA1F80EA3F00127E5AA4145F007E13DF393F839FFC381FFE0F3803F8031E1B7E9A21 >97 DIIIII<90387F80F03901FFE3 F83907C0FE1C390F807C7C381F003E151048EB3F00A66C133EA26C6C5A6C6C5A3805FFE0 380C7F8048C8FC121CA2121E381FFFF814FF6C14C06C14E06C14F0120F383E000748EB01 F8481300A4007CEB01F0A2003FEB07E0390FC01F806CB5120038007FF01E287E9A22>I< EAFFE0A3120FAC147E9038E1FF809038E30FC001E413E0EBE80701F813F013F0A213E0B0 39FFFE3FFFA3202A7DA925>I<1207EA0F80EA1FC0EA3FE0A3EA1FC0EA0F80EA0700C7FC A7EAFFE0A3120FB3A3EAFFFEA30F2B7EAA12>I107 DI<26FFC07FEB1FC0903AC1FFC07FF0903AC307E0C1F8D80FC49038F101FC9039 C803F20001D801FE7F01D05BA201E05BB03CFFFE3FFF8FFFE0A3331B7D9A38>I<38FFC0 7E9038C1FF809038C30FC0D80FC413E0EBC80701D813F013D0A213E0B039FFFE3FFFA320 1B7D9A25>II<38FFE1FE9038E7FF809038FE0FE0390FF803F09038F001F8 01E013FC140015FEA2157FA8157E15FEA215FC140101F013F89038F803F09038FC0FE090 38EFFF809038E1FC0001E0C7FCA9EAFFFEA320277E9A25>I<38FFC3E0EBC7F8EBCC7C38 0FD8FE13D0A213F0EBE07C1400B0B5FCA3171B7E9A1B>114 D<3803FE30380FFFF0EA3E 03EA7800127000F01370A27E00FE1300EAFFE06CB4FC14C06C13E06C13F0000713F8C6FC EB07FC130000E0137C143C7E14387E6C137038FF01E038E7FFC000C11300161B7E9A1B> I<1370A413F0A312011203A21207381FFFE0B5FCA23807F000AD1470A7000313E03801F8 C0EA00FFEB3F0014267FA51A>I<39FFE07FF0A3000F1307B2140FA2000713173903F067 FF3801FFC738007F87201B7D9A25>I<3BFFFC7FFC1FFCA33B0FE00FE001C02607F007EB 0380A201F8EBF0070003160015F82601FC0F130EA29039FE1FFC1E0000011C131C15FE90 39FF387E3C017F1438EC787F6D486C5AA29138E01FF0011F5CA26D486C5AA36D486C5AA2 2E1B7F9A31>119 D<39FFFC1FFEA33907F00780D803F813006C6C5AEBFE1E00005BEB7F 78EB3FF85C6D5A130F6D7E80130F497EEB3DFEEB38FFEB787F9038F03F80D801E013C039 03C01FE0EB800F39FFF03FFFA3201B7F9A23>I<39FFFE07FFA33907F000E0A2EBF80100 0314C0A23901FC0380A2EBFE07000014006D5AEB7F0EA2EB3F9CA214FC6D5AA26D5AA213 075CA26D5AA25CA21307003890C7FC127CEAFE0EA25B5BEA7C70EA3FE0EA0F8020277F9A 23>I E /Ft 14 123 df97 D99 D II<13F338038B8038060700120E120C121CEA380EA4EA301CA3EA183C5BEA 07B8EA0038A25B1260EAE0E0EAC1C0007FC7FC11177E8F12>103 D<1203120712061200A61238124C124E128E129CA2121C1238A212701272A212E212E412 64123808197C980C>105 D<121F1207A3120EA4121CA41238A41270A412E4A412E81230 081A7D990A>108 D110 DII115 D<1206120EA45AA2EAFFC0EA1C005AA45AA412E1A312 E212E412380A177C960D>II122 D E /Fu 54 124 df<13FCEA0182EA0703EA0607EA0E0290C7FCA5B5FCEA0E07AE387F0F E0131A809915>12 D<90387E1F803901C17040390703C0600006EB80E0000E14401500A5 B612E0380E0380AE397F8FE3FC1E1A809920>14 D<1380EA010012025A120C120812185A A35AA412E0AA1260A47EA37E1208120C12047E7EEA008009267D9B0F>40 D<7E12407E7E12181208120C7EA37EA41380AA1300A41206A35A1208121812105A5A5A09 267E9B0F>I<126012F0A212701210A31220A212401280040B7D830B>44 DI<126012F0A2126004047D830B>I50 DI<1330A2137013F0A2EA0170120312021204120C12081210123012 20124012C0B5FCEA0070A6EA07FF10187F9713>I<1240EA7FFE13FCA2EA4008EA8010A2 1320EA0040A213801201A213005AA45AA612020F197E9813>55 D<126012F0A212601200 A8126012F0A2126004107D8F0B>58 D<126012F0A212601200A8126012F0A212701210A3 1220A21240128004177D8F0B>I<130CA3131EA2133F1327A2EB4380A3EB81C0A348C67E A213FF38020070A20006137800041338A2487FA2001C131EB4EBFFC01A1A7F991D>65 D67 DII71 D<38FFE7FF380E0070AB380FFFF0380E0070AC38FFE7FF181A7E991D>II<39FFE07F80390E001E00141814105C5C5C49C7FC13025B5B 131C132E134E1387380F0380120E6D7E6D7EA21470A28080143E39FFE0FF80191A7E991E >75 DI80 D82 DI<007FB5FC38701C0700401301A200C01480008013 00A300001400B13803FFE0191A7F991C>I<3AFF83FF0FF03A3C007801C0001CEC0080A2 6CEC0100A2149C6C1402A2EB010EA2D803815BEB8207A2D801C25B9038C40388A2D800E4 1390A29038E801D0017813E0A2EB7000A201305B01201340241A7F9927>87 D<12FEA212C0B3AF12FEA207257D9B0B>91 D<12FEA21206B3AF12FEA20725809B0B>93 D97 D<12FC121CA913F8EA1F0EEA1E07381C0380130114C0A6EB038014 00EA1E07EA1B0CEA10F0121A7F9915>II<137E130EA9EA03CEEA0C3EEA380E12301270 12E0A612601270EA381EEA1C2E3807CFC0121A7F9915>IIII<12FC121CA913F8EA1D0CEA1E0EA2121CAB38FF9F C0121A7F9915>I<1218123CA21218C7FCA612FC121CAEEAFF80091A80990A>II<12FC121C A9EB3F80EB1E00131813105B5BEA1DC0EA1FE0121C1370137813387F131E131F38FF3FC0 121A7F9914>I<12FC121CB3A6EAFF80091A80990A>I<38FC7C1F391D8E6380391E0781C0 A2001C1301AB39FF9FE7F81D107F8F20>IIII114 DI<1204A3120CA2121C123CEAFFC0EA 1C00A81320A5EA0E40EA03800B177F960F>II<38FF1F80383C0600EA1C04A2EA1E0CEA0E08A26C5AA21390EA03A0A2EA01 C0A36C5A11107F8F14>I<39FF3F9F80393C0E070000381306381C16041317001E130C38 0E23081488000F13983807419014D03803C1E01380A200015BEB004019107F8F1C>I<38 FF3F80383C1C00EA1C18EA0E106C5A13606C5A12017F1203EA0270487E1208EA181CEA38 1E38FC3FC012107F8F14>I<38FF1F80383C0600EA1C04A2EA1E0CEA0E08A26C5AA21390 EA03A0A2EA01C0A36C5AA248C7FCA212E112E212E4127811177F8F14>I123 D E /Fv 16 118 df<1303497EA3497EA2EB1BE0A3EB31F0A2EB60F8A2EBE0 FCEBC07CA248487EEBFFFE487FEB001FA20006EB0F80A2000E14C039FFC07FFCA21E1A7F 9921>65 D76 D80 D97 D<12FEA2121EA7137F381FC3C0EB00E0001E13F01478 A2147CA51478A214F0001F13E0381D83C038187F00161A7F9919>II< EA03F0EA0E1C487EEA3C071278148012F8A2B5FC00F8C7FCA21278A2383C0180381C0300 EA0E06EA03FC11117F9014>101 D<3807E3C0381C3CE0EA381C38781EC01400A4EA381C 6C5AEA27E00020C7FCA21230EA3FFE381FFF8014C0EA700338E000E0A4387001C0383C07 803807FC0013197F9016>103 D<123C127EA4123CC7FCA4127EA2121EADEAFF80A2091B 7F9A0D>105 D<39FE1F01F0903863C63C391E81C81C391F01F01EA2001E13E0AA3AFFCF FCFFC0A222117F9025>109 DII114 DI<1206A4120EA2121EEA3FF0 12FFEA1E00A81318A5EA0F30EA03E00D187F9711>I<38FE0FE0A2EA1E01AB1303A2380F 05FCEA03F916117F9019>I E /Fw 1 4 df<1202A3EAC218EAF278EA3AE0EA0F80A2EA3A E0EAF278EAC218EA0200A30D0E7E8E12>3 D E /Fx 34 122 df<127012F812FCA21274 1204A41208A21210A212201240060F7C840E>44 D<127012F8A3127005057C840E>46 D<13801203120F12F31203B3A9EA07C0EAFFFE0F217CA018>49 D<13021306130EA2131E A2132E134EA2138EA2EA010E1202A21204A212081210A21220A212401280B512F838000E 00A7131F3801FFF015217FA018>52 D<00101380381E0700EA1FFF5B13F8EA13E00010C7 FCA613F8EA130EEA1407381803801210380001C0A214E0A4127012F0A200E013C01280EA 4003148038200700EA1006EA0C1CEA03F013227EA018>I57 D<497EA3497EA3EB05E0A2EB0DF01308A2497E1478A2497EA3497EA3497EA290B5FC3901 000780A24814C000021303A24814E01401A2000CEB00F0A2003EEB01F839FF800FFF2023 7EA225>65 DI<903807E0109038381830EBE0063901C00170390380 00F048C7FC000E1470121E001C1430123CA2007C14101278A200F81400A812781510127C 123CA2001C1420121E000E14407E6C6C13803901C001003800E002EB381CEB07E01C247D A223>II<9038 07F00890383C0C18EBE0023901C001B839038000F848C71278481438121E15185AA2007C 14081278A200F81400A7EC1FFF0078EB00F81578127C123CA27EA27E7E6C6C13B86C7E39 00E0031890383C0C08903807F00020247DA226>71 D80 D<3803F020380C0C60EA1802383001E0EA70000060136012E0A21420A36C1300A212 78127FEA3FF0EA1FFE6C7E0003138038003FC0EB07E01301EB00F0A214707EA46C1360A2 6C13C07E38C8018038C60700EA81FC14247DA21B>83 D<39FFFC07FF390FC000F86C4813 701520B3A5000314407FA2000114806C7E9038600100EB3006EB1C08EB03F020237EA125 >85 D<3BFFF03FFC03FE3B1F8007E000F86C486C4813701720A26C6C6C6C1340A32703C0 02F01380A33B01E004780100A33A00F0083C02A39039F8183E06903978101E04A2137C90 393C200F08A390391E400790A390390F8003E0A36D486C5AA36D5C010213002F237FA132 >87 D97 D<120E12FE121E120EAB131FEB 61C0EB8060380F0030000E1338143C141C141EA7141C143C1438000F1370380C8060EB41 C038083F0017237FA21B>II<14E0130F130113 00ABEA01F8EA0704EA0C02EA1C01EA38001278127012F0A7127012781238EA1801EA0C02 38070CF03801F0FE17237EA21B>II<133C13C6EA018F1203130FEA0700A9EAFFF8EA0700B21380EA7FF8102380A20F>I< 121C123EA3121CC7FCA8120E12FE121E120EB1EAFFC00A227FA10E>105 D<120E12FE121E120EB3ADEAFFE00B237FA20E>108 D<390E1FC07F3AFE60E183803A1E 807201C03A0F003C00E0A2000E1338AF3AFFE3FF8FFE27157F942A>I<380E1F8038FE60 C0381E80E0380F0070A2120EAF38FFE7FF18157F941B>III< EA0E3CEAFE46EA1E8FEA0F0F13061300120EAD120FEAFFF010157F9413>114 DI<1202A41206A3120E121E12 3EEAFFF8EA0E00AB1304A6EA07081203EA01F00E1F7F9E13>I<000E137038FE07F0EA1E 00000E1370AD14F0A238060170380382783800FC7F18157F941B>I<38FFC1FE381E0078 000E13301420A26C1340A238038080A33801C100A2EA00E2A31374A21338A3131017157F 941A>I<39FF8FF8FF391E01E03C001CEBC018120EECE010A239070260201470A2390384 30401438A23901C81880141CA23900F00D00140FA2EB6006A320157F9423>I<38FFC1FE 381E0078000E13301420A26C1340A238038080A33801C100A2EA00E2A31374A21338A313 10A25BA35B12F05B12F10043C7FC123C171F7F941A>121 D E /Fy 20 124 df50 D<1403A34A7EA24A7EA3EC17E01413A2EC23F01421A2EC40F8A3EC807CA2 0101137EEC003EA20102133F81A2496D7EA3496D7EA2011880011FB5FCA29039200003F0 1501A249801500A249147CA348C87EA248153F825AD81F80EC3F80D8FFE0903803FFFCA2 2E327EB132>65 D<91383FE001903901FFF803903807F01E90391F800307013EC7128701 78144F49142F4848141F4848140F485A000F150790C8FC481503121E123E003C1501127C A30078150012F8AB1278127C1601A2123C123E121E001F15027E6D1406000715046C6C14 086C7E6C6C141001781420013E14C090391F800380903907F00F00903801FFFC9038003F E028337CB130>67 D69 D71 D77 D82 D<90387F80203801FFE03907C07860380F001C001EEB 06E048130300381301007813001270156012F0A21520A37E1500127C127E7E13C0EA1FF8 6CB47E6C13F86C7FC613FF010F1380010013C0EC1FE01407EC03F01401140015F8A26C14 78A57E15706C14F015E07E6CEB01C000ECEB038000C7EB070038C1F01E38807FFCEB0FF0 1D337CB125>I86 D<13FE380303C0380C00E00010137080003C133C003E13 1C141EA21208C7FCA3EB0FFEEBFC1EEA03E0EA0F80EA1F00123E123C127C481404A3143E A21278007C135E6CEB8F08390F0307F03903FC03E01E1F7D9E21>97 D99 D101 D<120FEA1F80A4EA0F00C7FCABEA078012FFA2120F1207B3A6 EA0FC0EAFFF8A20D307EAF12>105 D108 D<380780FE39FF83078090388C03C0390F9001E0EA07A06E7E13C0A2 5BB3A2486C487E3AFFFC1FFF80A2211F7E9E25>110 D I<380783E038FF8C18EB907C120FEA07A0EBC0381400A35BB3487EEAFFFEA2161F7E9E19 >114 D<3801FC10380E0330381800F048137048133012E01410A37E6C1300127EEA3FF0 6CB4FC6C13C0000313E038003FF0EB01F813006C133CA2141C7EA27E14186C1338143000 CC136038C301C03880FE00161F7E9E1A>I<1340A513C0A31201A212031207120F381FFF E0B5FC3803C000B01410A80001132013E000001340EB78C0EB1F00142C7FAB19>I123 D E end %%EndProlog %%BeginSetup %%Feature: *Resolution 300dpi TeXDict begin %%EndSetup %%Page: 1 1 1 0 bop 284 369 a Fy(RE2C)21 b({)h(A)f(More)h(V)-6 b(ersatile)23 b(Scanner)e(Generator)472 490 y Fx(P)o(eter)15 b(Bum)o(bulis)209 b(Donald)17 b(D.)f(Co)o(w)o(an)272 548 y(Computer)g(Science)e (Departmen)o(t)h(and)i(Computer)e(Systems)g(Group)692 606 y(Univ)o(ersit)o(y)e(of)k(W)l(aterlo)q(o)1175 588 y Fw(\003)782 704 y Fx(April)e(15,)i(1994)849 895 y Fv(Abstract)120 960 y Fu(It)f(is)g(usually)j(claimed)f(that)e(lexical)j(analysis)f (routines)g(are)e(still)i(co)q(ded)f(b)o(y)f(hand,)i(despite)g(the)e (widespread)62 1005 y(a)o(v)n(ailabil)q(i)q(t)o(y)h(of)d(scanner)i (generators,)f(for)f(e\016ciency)i(reasons.)23 b(While)16 b(e\016ciency)g(is)f(a)f(consideration)q(,)j(there)e(exist)62 1051 y(freely)k(a)o(v)n(ailable)j(scanner)d(generators)g(suc)o(h)g(as)g (GLA)f([7])g(that)g(can)h(generate)g(scanners)h(that)e(are)h(faster)f (than)62 1097 y(most)g(hand-co)q(ded)h(ones.)30 b(Ho)o(w)o(ev)o(er,)18 b(most)g(generated)g(scanners)g(are)g(tailored)h(for)e(a)g(particular)j (en)o(vironmen)o(t,)62 1142 y(and)c(retargetting)h(these)e(scanners)i (to)e(other)h(en)o(vironmen)o(ts,)h(if)f(p)q(ossible,)h(is)f(usually)i (complex)f(enough)f(to)f(mak)o(e)62 1188 y(a)h(hand-co)q(ded)h(scanner) f(more)g(app)q(ealing.)26 b(In)16 b(this)g(pap)q(er)g(w)o(e)f(describ)q (e)i(RE2C,)e(a)g(scanner)i(generator)f(that)f(not)62 1234 y(only)e(generates)f(scanners)h(whic)o(h)f(are)g(faster)f(\(and)h (usually)i(smaller\))f(than)f(those)g(pro)q(duced)h(b)o(y)f(an)o(y)g (other)g(scanner)62 1279 y(generator)i(kno)o(wn)g(to)f(the)g(authors,)g (includin)q(g)j(GLA,)c(but)i(also)g(adapt)f(easily)i(to)e(an)o(y)h(en)o (vironmen)o(t.)62 1371 y(Categories)19 b(and)f(Sub)r(ject)g (Descriptors:)27 b(D.3.2)17 b([)p Fv(Programming)j(Languages)p Fu(]:)25 b(Language)19 b(Classi\014cations)i({)62 1416 y Ft(sp)n(e)n(cialize)n(d)11 b(applic)n(atio)o(n)g(languages)o Fu(;)f(D.3.4)j([)p Fv(Programming)h(Languages)p Fu(]:)j(Pro)q(cessors) 62 1508 y(General)e(T)m(erms:)h(Algorithms,)e(Languages,)h(P)o (erformance)62 1599 y(Additional)h(Key)d(W)m(ords)h(and)g(Phrases:)j (Lexical)e(analysis,)g(scanner)f(generator)-42 1736 y Fs(1)67 b(In)n(tro)r(duction)-42 1827 y Fr(Lexical)14 b(analysis)g(routines)h(are)g(still)f(often)g(co)q(ded)i(b)o(y)e(hand)g (despite)i(the)f(widespread)g(a)o(v)n(ailabilit)o(y)c(of)j(scanner)i (gener-)-42 1877 y(ators.)k(F)m(or)14 b(example,)e(while)i(most)f(Unix) h(systems)g(ha)o(v)o(e)g(a)g(scanner)i(generator)f(installed)f(\(t)o (ypically)f(LEX)h([15)o(])g(or)g(\015ex)-42 1927 y([16]\),)d(few)i (Unix)f(applications)f(use)i(a)f(mec)o(hanically)e(generated)k (scanner.)19 b(One)13 b(commonly)c(cited)k(reason)g(for)e(not)i(using) -42 1977 y(LEX-generated)k(scanners)f(is)f(p)q(erformance:)20 b(they)15 b(can)g(b)q(e)g(10)g(times)f(slo)o(w)o(er)g(than)h(equiv)n (alen)o(t)f(hand-co)q(ded)i(scanners)-42 2026 y([13].)h(As)d(a)g (result,)g(there)h(has)f(b)q(een)h(considerable)f(researc)o(h)i(in)o (to)d(impro)o(ving)e(the)j(p)q(erformance)g(of)f(mec)o(hanically)e (gen-)-42 2076 y(erated)17 b(scanners)f([16)o(,)f(7,)f(9].)21 b(GLA)15 b([7)o(],)g(one)g(suc)o(h)h(scanner)g(generator,)g(can)f(pro)q (duce)h(scanners)h(that)e(are)h(faster)f(than)-42 2126 y(most)h(hand-co)q(ded)h(scanners.)29 b(Ho)o(w)o(ev)o(er,)17 b(the)h(use)f(of)f(hand-co)q(ded)i(scanners)g(is)f(still)f(prev)n(alen) o(t.)27 b(One)17 b(p)q(ossibilit)o(y)f(is)-42 2176 y(that)e(this)g(is)g (due)h(to)e(the)i(di\016cult)o(y)e(of)g(adapting)g(the)h(generated)i (scanners)f(to)f(sp)q(eci\014c)h(applications.)21 2226 y(Most)g(scanner)g(generators)h(are)f(tailored)f(to)g(a)h(particular)f (en)o(vironmen)o(t.)19 b(In)14 b(fact,)g(the)i(trend)f(in)f(recen)o(t)i (y)o(ears)f(has)-42 2276 y(b)q(een)i(to)e(in)o(tegrate)g(scanner)i (generators)f(with)f(compiler)f(to)q(olkits.)21 b(F)m(or)15 b(example,)f(GLA)h(is)g(part)g(of)g(the)g(Eli)g(compiler)-42 2325 y(construction)k(system)f([8)o(],)g(and)g(Rex)f([9])g(is)h(part)g (of)f(the)h(GMD)f(T)m(o)q(olb)q(o)o(x)g(for)g(Compiler)f(Construction) 1688 2310 y Fq(1)1707 2325 y Fr(.)30 b(Scanners)p -42 2362 780 2 v 4 2389 a Fp(\003)22 2401 y Fo(P)o(ermission)9 b(to)j(cop)o(y)e(without)h(fee)g(all)g(or)g(part)g(of)g(this)g (material)e(is)j(gran)o(ted)d(pro)o(vided)h(that)g(the)h(copies)f(are)h (not)g(made)f(or)i(distributed)-42 2440 y(for)g(direct)e(commercial)f (adv)n(an)o(tage,)g(the)i(A)o(CM)j(cop)o(yrigh)o(t)9 b(notice)i(and)g(the)g(title)g(of)h(the)f(publication)e(and)i(its)g (date)g(app)q(ear,)f(and)h(notice)g(is)-42 2480 y(giv)o(en)g(that)g (cop)o(ying)f(is)i(b)o(y)f(p)q(ermission)e(of)j(the)f(Asso)q(ciation)f (for)h(Computing)f(Mac)o(hinery)m(.)15 b(T)m(o)d(cop)o(y)f(otherwise,)f (or)i(to)f(republish,)f(requires)-42 2519 y(a)k(fee)f(and/or)f(sp)q (eci\014c)g(p)q(ermission.)19 b(Cop)o(yrigh)o(t)12 b(1994)h(b)o(y)g (the)g(Asso)q(ciation)f(for)h(Computing)e(Mac)o(hinery)m(,)h(Inc.)22 b(T)m(o)14 b(app)q(ear)e(in)h(LOPLAS)-42 2558 y(2\(1{4\).)5 2586 y Fn(1)22 2598 y Fo(Also)f(kno)o(wn)e(as)i(Co)q(c)o(ktail)e (\(Compiler-Compi)o(ler-)o(T)m(o)q(olb)q(o)n(x)f(Karlsruhe\).)923 2748 y Fr(1)p eop %%Page: 2 2 2 1 bop -42 195 a Fr(generated)21 b(b)o(y)d(these)i(to)q(ols)f(assume)f (the)i(existence)g(of)e(a)h(library)f(of)g(supp)q(ort)h(mo)q(dules)f (for)h(error)g(handling,)g(input)-42 245 y(bu\013ering,)c(sym)o(b)q(ol) d(table)i(managemen)o(t,)d(and)j(similar)e(functions.)18 b(While)c(these)h(supp)q(ort)g(mo)q(dules)e(simplify)f(the)i(task)-42 295 y(of)c(implemen)o(ting)c(a)k(compiler)f(or)h(in)o(terpreter,)i (they)e(mak)o(e)f(adaptation)g(to)h(other)g(purp)q(oses)i(more)d (di\016cult.)16 b(Adaptation)-42 345 y(to)e(other)h(en)o(vironmen)o(ts) e(is)h(also)f(made)g(more)g(di\016cult)g(b)q(ecause)j(often)e (assumptions)f(are)i(made)d(ab)q(out)i(the)h(input)f(and)-42 394 y(restrictions)j(are)e(placed)g(on)g(tok)o(ens)g(in)g(order)g(to)g (ac)o(hiev)o(e)g(b)q(etter)i(p)q(erformance.)k(RE2C)14 b(go)q(es)i(to)f(the)g(other)h(extreme:)-42 444 y(it)e(concen)o(trates) i(solely)d(on)h(generating)g(co)q(de)h(for)e(matc)o(hing)f(regular)i (expressions.)21 494 y(RE2C)f(is)h(successful)h(at)f(its)g(task:)k(not) 13 b(only)g(do)q(es)i(it)e(pro)q(duce)i(scanners)h(whic)o(h)e(are)g (faster)g(than)g(those)g(created)i(b)o(y)-42 544 y(other)g(scanner)h (generators)f(but,)f(surprisingly)m(,)f(they)i(are)g(usually)e(smaller) f(as)j(w)o(ell.)21 b(F)m(urther,)15 b(RE2C)g(do)q(es)h(not)f(mak)o(e) -42 594 y(an)o(y)i(assumptions)e(ab)q(out)h(the)h(input)g(or)f(place)h (an)o(y)f(restrictions)i(on)e(tok)o(ens.)26 b(T)m(o)16 b(a)g(large)g(degree,)i(the)g(p)q(erformance)-42 643 y(and)d(\015exibilit)o(y)d(of)i(RE2C-generated)h(scanners)h(is)f(due)f (to)h(a)f(no)o(v)o(el)f(metho)q(d)h(for)g(determining)f(when)i(to)f (re\014ll)g(a)g(bu\013er)-42 693 y(whic)o(h)g(a)o(v)o(oids)f(the)i (complications)c(in)o(tro)q(duced)k(b)o(y)f(the)g(sen)o(tinel)h(metho)q (d)e([1)o(].)21 743 y(The)e(follo)o(wing)d(sections)j(of)f(this)h(pap)q (er)g(describ)q(e)i(RE2C)d(scanner)i(sp)q(eci\014cations,)f(discuss)h (ho)o(w)e(these)i(sp)q(eci\014cations)-42 793 y(are)21 b(con)o(v)o(erted)g(in)o(to)f(scanners,)j(and)d(giv)o(e)f(p)q (erformance)h(results)h(ac)o(hiev)o(ed)g(b)o(y)f(our)g(implemen)o (tatio)o(n)d(\(including)j(a)-42 843 y(comparison)13 b(with)g(GLA\).)-42 980 y Fs(2)67 b(Scanner)24 b(Sp)r(eci\014cations) -42 1071 y Fr(An)14 b(RE2C)g(source)h(\014le)f(consists)h(of)e(C[14)o (])g(or)h(C++[4])842 1056 y Fq(2)874 1071 y Fr(co)q(de)g(in)o(terlea)o (v)o(ed)g(with)g(commen)o(ts)e(of)h(the)i(form)d Fm(/*!re2c)20 b Fl(:)7 b(:)g(:)-42 1121 y Fm(*/)15 b Fr(con)o(taining)f(scanner)i(sp) q(eci\014cations.)23 b(These)16 b(sp)q(eci\014cations)g(are)g(replaced) g(with)e(generated)j(co)q(de)e(that)g(is)g(in)o(v)o(ok)o(ed)-42 1170 y(simply)d(b)o(y)i(\\falling)d(in)o(to")i(the)i(commen)o(ts)d(as)i (illustrated)g(in)f(Figure)h(1)g(and)f(in)h(App)q(endix)g(A)1481 1155 y Fq(3)1500 1170 y Fr(.)469 1254 y Fm(#define)20 b(YYCURSOR)42 b(p)469 1304 y(unsigned)20 b(char)h(*scan)p 887 1304 14 2 v 14 w(uint\(unsigned)e(char)i(*p\))p Fk(f)469 1353 y Fm(/*!re2c)556 1403 y([0-9]+)195 b Fk(f)p Fm(return)20 b(p;)p Fk(g)556 1453 y Fm([\\)o(000-\\)o(377])87 b Fk(f)p Fm(return)20 b(NULL;)p Fk(g)469 1503 y Fm(*/)469 1553 y Fk(g)681 1634 y Fr(Figure)14 b(1:)k(A)c(simple)f(scanner.)21 1733 y(A)i(scanner)h(sp)q(eci\014cation)f(tak)o(es)g(the)g(form)e(of)h (a)h(list)f(of)g(rules,)h(eac)o(h)g(rule)g(consisting)g(of)f(a)g (regular)h(expression)h([10)o(])-42 1783 y(and)g(an)g(action)f (expressed)k(in)c(executable)i(co)q(de.)25 b(Figure)16 b(2)g(illustrates)g(a)g(trivial)e(RE2C)h(scanner)j(sp)q(eci\014cation)e (that)-42 1833 y(will)c(b)q(e)h(used)h(as)f(an)f(example)g(throughout)g (this)h(pap)q(er.)36 b(Eac)o(h)14 b(call)d(to)i(the)g(co)q(de)h (generated)g(from)d(a)h(sp)q(eci\014cation)i(will)416 1926 y Fm("print")201 b Fk(f)22 b Fm(return)e(PRINT;)49 b(/*)21 b(rule)g(5)h(*/)f Fk(g)416 1975 y Fm([a-z])o(+)224 b Fk(f)22 b Fm(return)e(ID;)115 b(/*)21 b(rule)g(4)h(*/)f Fk(g)416 2025 y Fm([0-9])o(+)224 b Fk(f)22 b Fm(return)e(DEC;)93 b(/*)21 b(rule)g(3)h(*/)f Fk(g)416 2075 y Fm("0x")g([0-9a-f])n(+)50 b Fk(f)22 b Fm(return)e(HEX;)93 b(/*)21 b(rule)g(2)h(*/)f Fk(g)416 2125 y Fm([\\000-\\)o(377])114 b Fk(f)22 b Fm(return)e(ERR;)93 b(/*)21 b(rule)g(1)h(*/)f Fk(g)108 2214 y Fr(Figure)15 b(2:)20 b(Sample)13 b(sp)q(eci\014cation.)22 b Fm([)p Fl(a)p Fm(-)p Fl(b)p Fm(])14 b Fr(matc)o(hes)h(an)o(y)f(c)o(haracter)i (b)q(et)o(w)o(een)g Fl(a)f Fr(and)g Fl(b)p Fr(,)f(inclusiv)o(ely)m(.) 108 2264 y(The)i(last)f(rule,)g(for)g(example,)e(will)h(matc)o(h)g(an)o (y)g(eigh)o(t)h(bit)g(c)o(haracter.)23 b(Rules)15 b(are)g(listed)h(in)e (order)i(of)108 2314 y(precedence)q(.)-42 2414 y(\014rst)d(determine)g (the)f(longest)h(p)q(ossible)f(pre\014x)h(of)f(the)h(remaining)d(input) i(that)g(matc)o(hes)g(one)g(of)g(the)h(regular)f(expressions)-42 2463 y(and)i(will)f(then)h(execute)i(the)e(action)g(in)f(the)i(\014rst) g(applicable)e(rule.)p -42 2498 780 2 v 5 2525 a Fn(2)22 2537 y Fo(Retargetting)8 b(RE2C)k(to)f(a)h(di\013eren)o(t)d(language)g (is)i(straigh)o(tforw)o(ard.)5 2564 y Fn(3)22 2576 y Fo(RE2C-generated)e(scanners)g(require)h(no)h(additional)d(supp)q(ort)i (co)q(de.)923 2748 y Fr(2)p eop %%Page: 3 3 3 2 bop 138 1062 a @beginspecial 53 @llx 268 @lly 435 @urx 486 @ury 3820 @rwi @setspecial %%BeginDocument: scanner.eps /AutoFlatness false def % -------------- POSTSCRIPT PROLOG FOR CORELDRAW 3.X ------ % Copyright 1992 Corel Corporation. All rights reserved. /wCorelDict 300 dict def wCorelDict begin/bd{bind def}bind def /ld{load def}bd/xd{exch def}bd/_ null def /$c 0 def/$m 0 def/$y 0 def/$k 0 def/$t 1 def /$n _ def/$o 0 def/$fil 0 def/$bkg false def /$C 0 def/$M 0 def/$Y 0 def/$K 0 def/$T 1 def /$N _ def/$O 0 def/$PF false def/$ctm matrix currentmatrix def /$ptm matrix def/$ttm matrix def/$stm matrix def /$fst 128 def/$pad 0 def/$rox 0 def/$roy 0 def currentscreen/@dsp xd/$dsp/@dsp def/$dsa xd /$dsf xd/$sdf false def/$SDF false def/$Scra 0.0 def /$sv 0 def/@cp/closepath ld/@gs/gsave ld/@gr/grestore ld /@np/newpath ld/@sv{/$sv save def}bd/@rs{$sv restore}bd /@ss{exch $Scra add exch load setscreen}bd AutoFlatness{/$cpx ([Error: PathTooComplex; OffendingCommand: AnyPaintingOperator]\n) def /@err1{$cpx print flush newpath}bd/@ifl{dup currentflat exch sub 10 gt {@err1 exit}{currentflat 2 add setflat}ifelse}bd /@fill/fill ld/fill{currentflat{{@fill}stopped{@ifl}{exit}ifelse }bind loop setflat}bd/@eofill/eofill ld/eofill{currentflat{{@eofill} stopped{@ifl}{exit}ifelse}bind loop setflat}bd /@clip/clip ld/clip{currentflat{{@clip}stopped{initclip @ifl}{exit }ifelse}bind loop setflat}bd/@eoclip/eoclip ld /eoclip{currentflat{{@eoclip}stopped{initclip @ifl}{exit}ifelse }bind loop setflat}bd/@stroke/stroke ld/stroke{currentflat{{@stroke} stopped{@ifl}{exit}ifelse}bind loop setflat}bd}if /InRange{3 -1 roll 2 copy le{pop}{exch pop}ifelse 2 copy ge{pop}{exch pop}ifelse}bd/wDstChck{2 1 roll dup 3 -1 roll eq{1 add}if}bd/@dot{dup mul exch dup mul add 1 exch sub 2 div}bd /@lin{exch pop abs 1 exch sub}bd/@MN{2 copy le{pop}{exch pop}ifelse}bd /setcmykcolor where{pop}{/setcmykcolor{4 1 roll 3{3 index add 1 @MN 1 exch sub 3 1 roll}repeat setrgbcolor pop}bd}ifelse/setoverprint{/$op xd}bd /currentoverprint{$op}bd/setsepcolor{1 exch sub setgray}bd /checksepcolor{1 exch sub dup setgray 1 eq exch 1 eq and not}bd /setprocesscolor{ColorSeparationMode 0 eq{setcmykcolor}{ 0 4 $ink sub index exch pop 5 1 roll 4{pop}repeat setsepcolor}ifelse}bd/findcmykcustomcolor{5 array astore}bd /setcustomcolor where{pop}{/setcustomcolor{ColorSeparationMode 0 eq{ exch aload pop pop 4{4 index mul 4 1 roll}repeat 5 -1 roll pop setcmykcolor}{exch aload pop CurrentInkName eq{4 index}{0}ifelse 6 1 roll 5{pop}repeat setsepcolor}ifelse}bd}ifelse/colorimage where{pop}{ /colorimage{pop pop pop pop pop{currentfile $dat readhexstring pop pop} repeat pop}bd}ifelse/@tc{dup 1 ge{pop}{4{dup 6 -1 roll mul exch}repeat pop}ifelse}bd/@scc{1 eq setoverprint dup _ eq{pop setprocesscolor pop}{findcmykcustomcolor exch setcustomcolor}ifelse ColorSeparationMode 0 eq{true}{ currentgray 1 eq currentoverprint and not}ifelse}bd /@sft{/$tx $tllx $pxf add dup $tllx gt{$pwid sub}if def /$ty $tury $pyf sub dup $tury lt{$phei add}if def}bd /@stb{pathbbox/$ury xd/$urx xd/$lly xd/$llx xd}bd /@ep{{cvx exec}forall}bd/@tp{@sv/$in true def 2 copy dup $lly le{/$in false def}if $phei sub $ury ge{/$in false def}if dup $urx ge{/$in false def}if $pwid add $llx le{/$in false def}if $in{@np 2 copy m $pwid 0 rl 0 $phei neg rl $pwid neg 0 rl 0 $phei rl clip @np $pn cvlit load aload pop 7 -1 roll 5 index sub 7 -1 roll 3 index sub translate /$ctm matrix currentmatrix def @ep pop pop pop pop}{pop pop}ifelse @rs}bd/@th{@sft 0 1 $tly 1 sub{dup $psx mul $tx add{ dup $llx gt{$pwid sub}{exit}ifelse}loop exch $phei mul $ty exch sub 0 1 $tlx 1 sub{$pwid mul 3 copy 3 -1 roll add exch @tp pop}for pop pop}for}bd/@tv{@sft 0 1 $tlx 1 sub{dup $pwid mul $tx add exch $psy mul $ty exch sub{dup $ury lt{$phei add}{exit}ifelse}loop 0 1 $tly 1 sub{$phei mul 3 copy sub @tp pop}for pop pop}for}bd/@pf{@gs $ctm setmatrix $pm concat @stb eoclip Bburx Bbury $pm itransform/$tury xd/$turx xd Bbllx Bblly $pm itransform/$tlly xd/$tllx xd /$wid $turx $tllx sub def/$hei $tury $tlly sub def @gs $vectpat{1 0 0 0 0 _ $o @scc{eofill}if}{$t $c $m $y $k $n $o @scc{ $tllx $tlly translate $wid $hei scale <00> 8 1 false [ 8 0 0 1 0 0 ]{}imagemask /$bkg true def}if}ifelse @gr $wid 0 gt $hei 0 gt and{ $pn cvlit load aload pop/$pd xd 3 -1 roll sub/$phei xd exch sub/$pwid xd/$tlx $wid $pwid div ceiling 1 add def /$tly $hei $phei div ceiling 1 add def $psx 0 eq{@tv}{@th}ifelse}if @gr @np/$bkg false def}bd/@dlt{ColorSeparationMode 0 eq{ /$dc $toc $tot mul $frc $frt mul dup/$c xd sub $fst 1 sub div def /$dm $tom $tot mul $frm $frt mul dup/$m xd sub $fst 1 sub div def /$dy $toy $tot mul $fry $frt mul dup/$y xd sub $fst 1 sub div def /$dk $tok $tot mul $frk $frt mul dup/$k xd sub $fst 1 sub div def true}{$frt $frc $frm $fry $frk $frn $o @scc dup{/$frk 1 currentgray sub def}{/$frk 0 def}ifelse $tot $toc $tom $toy $tok $ton $o @scc dup{/$tok 1 currentgray sub def}{ /$tok 0 def}ifelse or dup{/$c 0 def/$m 0 def/$y 0 def/$k $frk def /$dc 0 def/$dm 0 def/$dy 0 def/$dk $tok $frk sub $fst 1 sub div def}if }ifelse}bd/@ftl{1 index 4 index sub dup $pad mul dup/$pdw xd 2 mul sub $fst div/$wid xd 2 index sub/$hei xd pop translate $c $m $y $k 4 copy ColorSeparationMode 0 ne {1 exch sub setgray pop pop pop}{setcmykcolor}ifelse 0 0 moveto 0 $hei lineto $pdw $hei lineto $pdw 0 lineto 0 0 lineto fill $pdw 0 translate $fst{4 copy ColorSeparationMode 0 ne {1 exch sub setgray pop pop pop}{setcmykcolor}ifelse 0 0 moveto 0 $hei lineto $wid $hei lineto $wid 0 lineto 0 0 lineto fill $wid 0 translate $dk add 4 1 roll $dy add 4 1 roll $dm add 4 1 roll $dc add 4 1 roll}repeat $dk sub 4 1 roll $dy sub 4 1 roll $dm sub 4 1 roll $dc sub 4 1 roll ColorSeparationMode 0 ne{1 exch sub setgray pop pop pop} {setcmykcolor}ifelse 0 0 moveto 0 $hei lineto $pdw $hei lineto $pdw 0 lineto 0 0 lineto fill }bd/@ftr{1 index 4 index sub dup $rox mul/$row xd 2 div 1 index 4 index sub dup $roy mul/$roh xd 2 div 2 copy dup mul exch dup mul add sqrt $row dup mul $roh dup mul add sqrt add dup/$hei xd $fst div/$wid xd 4 index add $roh add exch 5 index add $row add exch translate pop pop pop pop currentflat dup 5 mul setflat $c $m $y $k 4 copy ColorSeparationMode 0 ne {1 exch sub setgray pop pop pop}{setcmykcolor}ifelse $wid 0 moveto 0 0 $hei 0 360 arc fill 1.0 $pad 2 mul sub dup scale $fst{4 copy ColorSeparationMode 0 ne{1 exch sub setgray pop pop pop} {setcmykcolor}ifelse $wid 0 moveto 0 0 $hei 0 360 arc fill /$hei $hei $wid sub def $dk add 4 1 roll $dy add 4 1 roll $dm add 4 1 roll $dc add 4 1 roll}repeat pop pop pop pop setflat}bd/@ff{@gs @dlt{$ctm setmatrix eoclip newpath Bbllx Bblly moveto Bbllx Bbury lineto Bburx Bbury lineto Bburx Bblly lineto $fan rotate pathbbox newpath $fty 1 eq{@ftr}{@ftl}ifelse}if @gr @np}bd/@Pf{@sv ColorSeparationMode 0 eq $ink 3 eq or{0 J 0 j [] 0 d $t $c $m $y $k $n $o @scc pop $ctm setmatrix 72 1000 div dup matrix scale dup concat dup Bburx exch Bbury exch itransform ceiling cvi/Bbury xd ceiling cvi/Bburx xd Bbllx exch Bblly exch itransform floor cvi/Bblly xd floor cvi/Bbllx xd $Prm aload pop $Psn load exec}{1 setgray eofill}ifelse @rs @np}bd/g{1 exch sub/$k xd/$c 0 def/$m 0 def/$y 0 def/$t 1 def/$n _ def/$fil 0 def }bd/G{1 exch sub/$K xd/$C 0 def/$M 0 def/$Y 0 def/$T 1 def/$N _ def}bd /k{/$k xd/$y xd/$m xd/$c xd/$t 1 def/$n _ def/$fil 0 def}bd /K{/$K xd/$Y xd/$M xd/$C xd/$T 1 def/$N _ def}bd /x{/$t xd/$n xd/$k xd/$y xd/$m xd/$c xd/$fil 0 def}bd /X{/$T xd/$N xd/$K xd/$Y xd/$M xd/$C xd}bd /d/setdash ld/i{dup 0 ne{setflat}{pop}ifelse}bd /j/setlinejoin ld/J/setlinecap ld/M/setmiterlimit ld /w/setlinewidth ld/O{/$o xd}bd/R{/$O xd}bd /c/curveto ld/C/c ld/v{4 -2 roll 2 copy 6 -2 roll curveto}bd /V/v ld/y{2 copy curveto}bd/Y/y ld/l/lineto ld /L/l ld/rl/rlineto ld/m/moveto ld/n/newpath ld /N/newpath ld/F{matrix currentmatrix $sdf{$scf $sca $scp @ss}if $fil 1 eq{@pf}{$fil 2 eq{@ff}{$fil 3 eq{@Pf}{$t $c $m $y $k $n $o @scc {eofill}{@np}ifelse}ifelse}ifelse}ifelse $sdf{$dsf $dsa $dsp @ss}if setmatrix}bd/f{@cp F}bd/S{matrix currentmatrix $ctm setmatrix $SDF{$SCF $SCA $SCP @ss}if $T $C $M $Y $K $N $O @scc{ matrix currentmatrix $ptm concat stroke setmatrix}{@np}ifelse $SDF{$dsf $dsa $dsp @ss}if setmatrix}bd/s{@cp S}bd/B{@gs F @gr S}bd/b{@cp B}bd/W{eoclip}bd /p{/$pm xd 7{pop}repeat/$pyf xd/$pxf xd/$pn xd /$fil 1 def}bd/P{11{pop}repeat}bd/u{}bd/U{}bd /A{pop}bd/q/@gs ld/Q/@gr ld/E{5 array astore exch cvlit exch def}bd/`{}bd/~{}bd/@{}bd/&{}bd /CorelDrawReencodeVect [ 16#82/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl 16#88/circumflex/perthousand/Scaron/guilsinglleft/OE 16#91/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash 16#98/tilde/trademark/scaron/guilsinglright/oe 16#9F/Ydieresis 16#A1/exclamdown/cent/sterling/currency/yen/brokenbar/section 16#a8/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/minus/registered/macron 16#b0/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered 16#b8/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown 16#c0/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla 16#c8/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis 16#d0/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply 16#d8/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls 16#e0/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla 16#e8/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis 16#f0/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide 16#f8/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis ] def/@cc{currentfile $dat readhexstring pop}bd /@sm{/$ctm $ctm currentmatrix def}bd/@E{/Bbury xd/Bburx xd /Bblly xd/Bbllx xd}bd/@c{@cp}bd/@p{/$fil 1 def 1 eq/$vectpat xd/$pm xd/$psy xd/$psx xd/$pyf xd/$pxf xd /$pn xd}bd/@P{/$fil 3 def/$Psn xd array astore /$Prm xd}bd/@k{/$fil 2 def/$roy xd/$rox xd/$pad xd /$fty xd/$fan xd $fty 1 eq{/$fan 0 def}if/$tok xd/$toy xd/$tom xd/$toc xd /$frk xd/$fry xd/$frm xd/$frc xd/$frn _ def/$frt 1 def/$ton _ def/$tot 1 def }bd/@x{/$fil 2 def/$roy xd/$rox xd/$pad xd /$fty xd/$fan xd/$tot xd/$ton xd/$tok xd/$toy xd/$tom xd/$toc xd /$frt xd/$frn xd/$frk xd/$fry xd/$frm xd/$frc xd}bd /@ii{concat 3 index 3 index m 3 index 1 index l 2 copy l 1 index 3 index l 3 index 3 index l clip pop pop pop pop}bd/@i{@sm @gs @ii 6 index 1 ne{/$frg true def pop pop}{1 eq{$T $C $M $Y $K $N $O @scc/$frg xd}{/$frg false def }ifelse 1 eq{@gs $ctm setmatrix $t $c $m $y $k $n $o @scc{eofill}if @gr}if}ifelse/$frg $frg $bkg or def @np/$ury xd/$urx xd/$lly xd/$llx xd /$bts xd/$hei xd/$wid xd/$dat $wid $bts mul 8 div ceiling cvi string def $frg{$SDF{$SCF $SCA $SCP @ss}if $llx $lly translate $urx $llx sub $ury $lly sub scale $wid $hei abs $bts 1 eq{false}{$bts}ifelse [ $wid 0 0 $hei neg 0 $hei 0 gt{$hei}{0}ifelse]/@cc load $bts 1 eq{imagemask}{image}ifelse $SDF{$dsf $dsa $dsp @ss}if}{$hei abs{@cc pop}repeat}ifelse @gr $ctm setmatrix}def/@M{@sv}bd/@N{/@cc{}def 1 eq{12 -1 roll neg 12 1 roll @I}{13 -1 roll neg 13 1 roll @i}ifelse @rs}bd/@I{@sm @gs @ii @np/$ury xd/$urx xd/$lly xd/$llx xd /$ncl xd/$bts xd/$hei xd/$wid xd/$dat $wid $bts mul $ncl mul 8 div ceiling cvi string def $llx $lly translate $urx $llx sub $ury $lly sub scale $wid $hei abs $bts [ $wid 0 0 $hei neg 0 $hei 0 gt{$hei}{0}ifelse] /@cc load false $ncl colorimage @gr $ctm setmatrix}bd /z{exch findfont exch scalefont setfont}bd /ZB{9 dict dup begin 4 1 roll/FontType 3 def /FontMatrix xd/FontBBox xd/Encoding 256 array def 0 1 255{Encoding exch/.notdef put}for/CharStrings 256 dict def CharStrings/.notdef{}put/Metrics 256 dict def Metrics/.notdef 3 -1 roll put/BuildChar{exch dup/$char exch/Encoding get 3 index get def dup/Metrics get $char get aload pop setcachedevice begin Encoding exch get CharStrings exch get end exec}def end definefont pop}bd/ZBAddChar{findfont begin dup 4 1 roll dup 6 1 roll Encoding 3 1 roll put CharStrings 3 1 roll put Metrics 3 1 roll put end}bd/Z{findfont dup maxlength 2 add dict exch dup{1 index/FID ne{3 index 3 1 roll put}{pop pop}ifelse}forall pop dup dup/Encoding get 256 array copy dup/$fe xd /Encoding exch put dup/Fontname 3 index put 3 -1 roll dup length 0 ne{0 exch{dup type 0 type eq{exch pop}{ $fe exch 2 index exch put 1 add}ifelse}forall pop}if dup 256 dict dup/$met xd/Metrics exch put dup/FontMatrix get 0 get 1000 mul 1 exch div 3 index length 256 eq{0 1 255{dup $fe exch get dup/.notdef eq{pop pop}{5 index 3 -1 roll get 2 index mul $met 3 1 roll put}ifelse}for}if pop definefont pop pop}bd/@ftx{{currentpoint 3 -1 roll (0) dup 3 -1 roll 0 exch put dup @gs true charpath $ctm setmatrix @@txt @gr @np stringwidth pop 3 -1 roll add exch moveto }forall}bd/@ft{matrix currentmatrix exch $sdf{$scf $sca $scp @ss}if $fil 1 eq{/@@txt/@pf ld @ftx}{$fil 2 eq{/@@txt/@ff ld @ftx}{$fil 3 eq {/@@txt/@Pf ld @ftx}{$t $c $m $y $k $n $o @scc{show}{pop}ifelse}ifelse }ifelse}ifelse $sdf{$dsf $dsa $dsp @ss}if setmatrix}bd /@st{matrix currentmatrix exch $SDF{$SCF $SCA $SCP @ss}if $T $C $M $Y $K $N $O @scc{{currentpoint 3 -1 roll (0) dup 3 -1 roll 0 exch put dup @gs true charpath $ctm setmatrix $ptm concat stroke @gr @np stringwidth pop 3 -1 roll add exch moveto }forall}{pop}ifelse $SDF{$dsf $dsa $dsp @ss}if setmatrix}bd/@te{@ft}bd/@tr{@st}bd/@ta{dup @gs @ft @gr @st}bd/@t@a{dup @gs @st @gr @ft}bd /@tm{/$textsave save def @sm concat}bd/e{/t{@te}def}bd /r{/t{@tr}def}bd/o{/t{pop}def}bd/a{/t{@ta}def}bd /@a{/t{@t@a}def}bd/t{@te}def/T{@np $ctm setmatrix /$ttm matrix def $textsave restore}bd/@t{/$stm $stm currentmatrix def 3 1 roll moveto $ttm concat t $stm setmatrix}def /@n{/$ttm exch matrix rotate def}bd/@s{}bd /@l{}bd/@B{@gs S @gr F}bd/@b{@cp @B}bd/@w{matrix rotate/$ptm xd matrix scale $ptm dup concatmatrix/$ptm xd 1 eq{$ptm exch dup concatmatrix/$ptm xd}if 1 w}bd/@g{1 eq dup/$sdf xd{/$scp xd/$sca xd /$scf xd}if}bd/@G{1 eq dup/$SDF xd{/$SCP xd /$SCA xd/$SCF xd}if}bd/@D{3 copy @ss/$dsp xd /$dsa xd/$dsf xd}bd/@j{@sv @np}bind def/@J{@rs}bind def /@sep{/ColorSeparationMode where{pop}{/ColorSeparationMode 0 def /CurrentInkName (Composite) def}ifelse ColorSeparationMode 0 eq{ /CurrentInkName (Composite) def}if/CurrentInkName where{pop}{ /CurrentInkName (Composite) def}ifelse CurrentInkName (Composite) eq {/$ink -1 def}{CurrentInkName (Cyan) eq{/$ink 0 def}{ CurrentInkName (Magenta) eq{/$ink 1 def}{CurrentInkName (Yellow) eq {/$ink 2 def}{CurrentInkName (Black) eq{/$ink 3 def}{/$ink 4 def }ifelse}ifelse}ifelse}ifelse}ifelse}bd @sep /@whi{@gs -72000 dup moveto -72000 72000 lineto 72000 dup lineto 72000 -72000 lineto closepath 1 setgray fill @gr}bd/@neg{ [{1 exch sub}/exec cvx currenttransfer/exec cvx] cvx settransfer @whi}bd/@reg{[] 0 d 0 setgray .3 setlinewidth 2 copy 5.4 0 360 arc closepath 2 copy moveto 9 0 rlineto 2 copy moveto -9 0 rlineto 2 copy moveto 0 9 rlineto moveto 0 -9 rlineto stroke}bd/leftbracket{(\050)}def /rightbracket{(\051)}def 11.4737 setmiterlimit 1.00 setflat /$fst 128 def [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 229 229 291 457 457 732 543 182 275 275 322 480 229 275 229 229 457 457 457 457 457 457 457 457 457 457 229 229 480 480 480 457 836 543 543 592 592 543 504 639 592 229 408 543 457 686 592 639 543 639 592 543 504 592 543 771 543 543 504 229 229 229 387 457 275 457 457 408 457 457 229 457 457 182 182 408 182 686 457 457 457 457 275 408 229 457 408 592 408 408 408 275 213 275 480 750 750 750 750 457 275 818 457 457 275 818 750 275 818 750 750 750 750 182 182 275 275 229 457 818 275 818 750 275 771 750 750 750 750 275 457 457 457 457 148 457 275 605 299 457 480 750 605 750 750 750 750 750 275 750 441 750 275 750 299 457 750 750 750 504 543 543 543 543 543 543 818 592 543 543 543 543 229 229 229 229 750 592 639 639 639 639 639 750 639 592 592 592 592 543 750 504 457 457 457 457 457 457 732 408 457 457 457 457 229 229 229 229 750 457 457 457 457 457 457 750 504 457 457 457 457 408 750 408 ] CorelDrawReencodeVect /_Helvetica-Narrow /Helvetica-Narrow Z [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 ] CorelDrawReencodeVect /_Courier /Courier Z @sv /$ctm matrix currentmatrix def @sv 106.13 392.62 110.02 399.38 @E [0.07199 0.00000 0.00000 0.07199 106 392] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Helvetica-Narrow 125.00 z 0 0 (0) @t T 160.70 392.69 163.30 399.31 @E [0.07199 0.00000 0.00000 0.07199 160 392] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Helvetica-Narrow 125.00 z 0 0 (1) @t T 214.06 392.69 217.94 399.24 @E [0.07199 0.00000 0.00000 0.07199 214 392] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Helvetica-Narrow 125.00 z 0 0 (2) @t T 268.06 392.54 271.94 399.24 @E [0.07199 0.00000 0.00000 0.07199 268 392] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Helvetica-Narrow 125.00 z 0 0 (3) @t T 321.98 392.47 325.94 399.10 @E [0.07199 0.00000 0.00000 0.07199 322 392] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Helvetica-Narrow 125.00 z 0 0 (4) @t T 375.98 392.40 379.94 399.10 @E [0.07199 0.00000 0.00000 0.07199 376 392] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Helvetica-Narrow 125.00 z 0 0 (5) @t T 159.98 446.69 163.94 453.38 @E [0.07199 0.00000 0.00000 0.07199 160 446] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Helvetica-Narrow 125.00 z 0 0 (6) @t T 106.06 338.83 110.09 345.38 @E [0.07199 0.00000 0.00000 0.07199 106 338] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Helvetica-Narrow 125.00 z 0 0 (7) @t T 159.98 338.62 163.94 345.46 @E [0.07199 0.00000 0.00000 0.07199 160 338] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Helvetica-Narrow 125.00 z 0 0 (8) @t T 106.13 284.62 110.02 291.46 @E [0.07199 0.00000 0.00000 0.07199 106 284] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Helvetica-Narrow 125.00 z 0 0 (9) @t T 157.97 284.69 166.10 291.53 @E [0.07199 0.00000 0.00000 0.07199 158 285] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Helvetica-Narrow 125.00 z 0 0 (10) @t T 104.54 446.69 111.53 453.31 @E [0.07199 0.00000 0.00000 0.07199 104 446] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Helvetica-Narrow 125.00 z 0 0 (11) @t T 112.54 440.93 114.55 445.97 @E [0.07199 0.00000 0.00000 0.07199 112 440] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Helvetica-Narrow 97.00 z 0 0 (1) @t T 166.46 278.93 169.49 283.97 @E [0.07199 0.00000 0.00000 0.07199 166 278] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Helvetica-Narrow 97.00 z 0 0 (2) @t T 112.46 332.86 115.49 337.90 @E [0.07199 0.00000 0.00000 0.07199 112 332] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Helvetica-Narrow 97.00 z 0 0 (3) @t T 166.46 332.86 169.49 337.90 @E [0.07199 0.00000 0.00000 0.07199 166 332] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Helvetica-Narrow 97.00 z 0 0 (3) @t T 328.46 386.93 331.56 391.97 @E [0.07199 0.00000 0.00000 0.07199 328 386] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Helvetica-Narrow 97.00 z 0 0 (4) @t T 274.46 386.93 277.56 391.97 @E [0.07199 0.00000 0.00000 0.07199 274 386] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Helvetica-Narrow 97.00 z 0 0 (4) @t T 220.46 386.93 223.56 391.97 @E [0.07199 0.00000 0.00000 0.07199 220 386] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Helvetica-Narrow 97.00 z 0 0 (4) @t T 166.46 386.93 169.56 391.97 @E [0.07199 0.00000 0.00000 0.07199 166 386] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Helvetica-Narrow 97.00 z 0 0 (4) @t T 166.46 440.93 169.56 445.97 @E [0.07199 0.00000 0.00000 0.07199 166 440] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Helvetica-Narrow 97.00 z 0 0 (4) @t T 382.46 386.78 385.56 391.90 @E [0.07199 0.00000 0.00000 0.07199 382 386] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Helvetica-Narrow 97.00 z 0 0 (5) @t T 94.54 382.54 121.61 409.46 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 108.07 409.46 m 115.49 409.46 121.61 403.42 121.61 396.00 c 121.61 388.58 115.49 382.54 108.07 382.54 c 100.66 382.54 94.54 388.58 94.54 396.00 c 94.54 403.42 100.66 409.46 108.07 409.46 c @c S 94.54 274.54 121.61 301.46 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 108.07 301.46 m 115.49 301.46 121.61 295.42 121.61 288.00 c 121.61 280.58 115.49 274.54 108.07 274.54 c 100.66 274.54 94.54 280.58 94.54 288.00 c 94.54 295.42 100.66 301.46 108.07 301.46 c @c S 94.54 328.61 121.61 355.54 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 108.07 355.54 m 115.49 355.54 121.61 349.49 121.61 342.07 c 121.61 334.66 115.49 328.61 108.07 328.61 c 100.66 328.61 94.54 334.66 94.54 342.07 c 94.54 349.49 100.66 355.54 108.07 355.54 c @c S 95.83 329.98 120.17 354.31 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 108.00 354.31 m 114.62 354.31 120.17 348.91 120.17 342.14 c 120.17 335.45 114.62 329.98 108.00 329.98 c 101.30 329.98 95.83 335.45 95.83 342.14 c 95.83 348.91 101.30 354.31 108.00 354.31 c @c S 148.46 328.54 175.54 355.46 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 162.00 355.46 m 169.42 355.46 175.54 349.42 175.54 342.00 c 175.54 334.58 169.42 328.54 162.00 328.54 c 154.58 328.54 148.46 334.58 148.46 342.00 c 148.46 349.42 154.58 355.46 162.00 355.46 c @c S 149.76 329.90 174.10 354.24 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 161.93 354.24 m 168.55 354.24 174.10 348.84 174.10 342.07 c 174.10 335.38 168.55 329.90 161.93 329.90 c 155.23 329.90 149.76 335.38 149.76 342.07 c 149.76 348.84 155.23 354.24 161.93 354.24 c @c S 148.46 436.54 175.54 463.46 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 162.00 463.46 m 169.42 463.46 175.54 457.42 175.54 450.00 c 175.54 442.58 169.42 436.54 162.00 436.54 c 154.58 436.54 148.46 442.58 148.46 450.00 c 148.46 457.42 154.58 463.46 162.00 463.46 c @c S 149.76 437.90 174.10 462.24 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 161.93 462.24 m 168.55 462.24 174.10 456.84 174.10 450.07 c 174.10 443.38 168.55 437.90 161.93 437.90 c 155.23 437.90 149.76 443.38 149.76 450.07 c 149.76 456.84 155.23 462.24 161.93 462.24 c @c S 94.54 436.54 121.61 463.46 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 108.07 463.46 m 115.49 463.46 121.61 457.42 121.61 450.00 c 121.61 442.58 115.49 436.54 108.07 436.54 c 100.66 436.54 94.54 442.58 94.54 450.00 c 94.54 457.42 100.66 463.46 108.07 463.46 c @c S 95.83 437.90 120.17 462.24 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 108.00 462.24 m 114.62 462.24 120.17 456.84 120.17 450.07 c 120.17 443.38 114.62 437.90 108.00 437.90 c 101.30 437.90 95.83 443.38 95.83 450.07 c 95.83 456.84 101.30 462.24 108.00 462.24 c @c S 148.46 382.54 175.54 409.46 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 162.00 409.46 m 169.42 409.46 175.54 403.42 175.54 396.00 c 175.54 388.58 169.42 382.54 162.00 382.54 c 154.58 382.54 148.46 388.58 148.46 396.00 c 148.46 403.42 154.58 409.46 162.00 409.46 c @c S 149.76 383.90 174.10 408.24 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 161.93 408.24 m 168.55 408.24 174.10 402.84 174.10 396.07 c 174.10 389.38 168.55 383.90 161.93 383.90 c 155.23 383.90 149.76 389.38 149.76 396.07 c 149.76 402.84 155.23 408.24 161.93 408.24 c @c S 148.54 274.61 175.61 301.54 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 162.07 301.54 m 169.49 301.54 175.61 295.49 175.61 288.07 c 175.61 280.66 169.49 274.61 162.07 274.61 c 154.66 274.61 148.54 280.66 148.54 288.07 c 148.54 295.49 154.66 301.54 162.07 301.54 c @c S 149.83 275.98 174.17 300.31 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 162.00 300.31 m 168.62 300.31 174.17 294.91 174.17 288.14 c 174.17 281.45 168.62 275.98 162.00 275.98 c 155.30 275.98 149.83 281.45 149.83 288.14 c 149.83 294.91 155.30 300.31 162.00 300.31 c @c S 202.46 382.46 229.54 409.39 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 216.00 409.39 m 223.42 409.39 229.54 403.34 229.54 395.93 c 229.54 388.51 223.42 382.46 216.00 382.46 c 208.58 382.46 202.46 388.51 202.46 395.93 c 202.46 403.34 208.58 409.39 216.00 409.39 c @c S 203.76 383.83 228.10 408.17 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 215.93 408.17 m 222.55 408.17 228.10 402.77 228.10 396.00 c 228.10 389.30 222.55 383.83 215.93 383.83 c 209.23 383.83 203.76 389.30 203.76 396.00 c 203.76 402.77 209.23 408.17 215.93 408.17 c @c S 256.46 382.39 283.54 409.32 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 270.00 409.32 m 277.42 409.32 283.54 403.27 283.54 395.86 c 283.54 388.44 277.42 382.39 270.00 382.39 c 262.58 382.39 256.46 388.44 256.46 395.86 c 256.46 403.27 262.58 409.32 270.00 409.32 c @c S 257.76 383.76 282.10 408.10 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 269.93 408.10 m 276.55 408.10 282.10 402.70 282.10 395.93 c 282.10 389.23 276.55 383.76 269.93 383.76 c 263.23 383.76 257.76 389.23 257.76 395.93 c 257.76 402.70 263.23 408.10 269.93 408.10 c @c S 310.46 382.32 337.54 409.25 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 324.00 409.25 m 331.42 409.25 337.54 403.20 337.54 395.78 c 337.54 388.37 331.42 382.32 324.00 382.32 c 316.58 382.32 310.46 388.37 310.46 395.78 c 310.46 403.20 316.58 409.25 324.00 409.25 c @c S 311.76 383.69 336.10 408.02 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 323.93 408.02 m 330.55 408.02 336.10 402.62 336.10 395.86 c 336.10 389.16 330.55 383.69 323.93 383.69 c 317.23 383.69 311.76 389.16 311.76 395.86 c 311.76 402.62 317.23 408.02 323.93 408.02 c @c S 364.46 382.25 391.54 409.18 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 378.00 409.18 m 385.42 409.18 391.54 403.13 391.54 395.71 c 391.54 388.30 385.42 382.25 378.00 382.25 c 370.58 382.25 364.46 388.30 364.46 395.71 c 364.46 403.13 370.58 409.18 378.00 409.18 c @c S 365.76 383.62 390.10 407.95 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 377.93 407.95 m 384.55 407.95 390.10 402.55 390.10 395.78 c 390.10 389.09 384.55 383.62 377.93 383.62 c 371.23 383.62 365.76 389.09 365.76 395.78 c 365.76 402.55 371.23 407.95 377.93 407.95 c @c S 121.54 395.86 148.54 396.14 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 121.54 396.00 m 147.17 396.00 L S @j 0.00 0.00 0.00 1.00 K 0.00 0.00 0.00 1.00 k 0 @g 0 @G [] 0 d 0 J 0 j 0 R 0 O 0 1.01 1.01 0 @w 144.00 398.52 m 147.96 396.00 L 144.00 393.48 L S @J 175.54 395.86 202.54 396.14 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 175.54 396.00 m 201.17 396.00 L S @j 0.00 0.00 0.00 1.00 K 0.00 0.00 0.00 1.00 k 0 @g 0 @G [] 0 d 0 J 0 j 0 R 0 O 0 1.01 1.01 0 @w 198.00 398.52 m 201.96 396.00 L 198.00 393.48 L S @J 229.54 395.86 256.54 396.14 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 229.54 396.00 m 255.17 396.00 L S @j 0.00 0.00 0.00 1.00 K 0.00 0.00 0.00 1.00 k 0 @g 0 @G [] 0 d 0 J 0 j 0 R 0 O 0 1.01 1.01 0 @w 252.00 398.52 m 255.96 396.00 L 252.00 393.48 L S @J 283.54 395.86 310.54 396.14 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 283.54 396.00 m 309.17 396.00 L S @j 0.00 0.00 0.00 1.00 K 0.00 0.00 0.00 1.00 k 0 @g 0 @G [] 0 d 0 J 0 j 0 R 0 O 0 1.01 1.01 0 @w 306.00 398.52 m 309.96 396.00 L 306.00 393.48 L S @J 337.54 395.86 364.54 396.14 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 337.54 396.00 m 363.17 396.00 L S @j 0.00 0.00 0.00 1.00 K 0.00 0.00 0.00 1.00 k 0 @g 0 @G [] 0 d 0 J 0 j 0 R 0 O 0 1.01 1.01 0 @w 360.00 398.52 m 363.96 396.00 L 360.00 393.48 L S @J 125.57 268.56 143.86 284.98 @E [0.07198 0.00000 0.00000 0.07199 125 278] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Courier 125.00 z 0 0 (\133) @t 60 0 (0) @t 120 0 (-) @t 180 0 (9) @t 0 -125 (a) @t 60 -125 (-) @t 120 -125 (f) @t 180 -125 (\135) @t T 121.54 287.86 148.54 288.14 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 121.54 288.00 m 147.17 288.00 L S @j 0.00 0.00 0.00 1.00 K 0.00 0.00 0.00 1.00 k 0 @g 0 @G [] 0 d 0 J 0 j 0 R 0 O 0 1.01 1.01 0 @w 144.00 290.52 m 147.96 288.00 L 144.00 285.48 L S @J 121.54 341.86 148.54 342.14 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 121.54 342.00 m 147.17 342.00 L S @j 0.00 0.00 0.00 1.00 K 0.00 0.00 0.00 1.00 k 0 @g 0 @G [] 0 d 0 J 0 j 0 R 0 O 0 1.01 1.01 0 @w 144.00 344.52 m 147.96 342.00 L 144.00 339.48 L S @J 107.86 301.54 108.14 328.54 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 108.00 328.54 m 108.00 302.90 L S @j 0.00 0.00 0.00 1.00 K 0.00 0.00 0.00 1.00 k 0 @g 0 @G [] 0 d 0 J 0 j 0 R 0 O 0 1.01 1.01 0 @w 110.52 306.14 m 108.00 302.18 L 105.48 306.14 L S @J 107.86 355.54 108.14 382.54 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 108.00 382.54 m 108.00 356.90 L S @j 0.00 0.00 0.00 1.00 K 0.00 0.00 0.00 1.00 k 0 @g 0 @G [] 0 d 0 J 0 j 0 R 0 O 0 1.01 1.01 0 @w 110.52 360.14 m 108.00 356.18 L 105.48 360.14 L S @J 107.86 409.54 108.14 436.54 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 108.00 409.54 m 108.00 435.17 L S @j 0.00 0.00 0.00 1.00 K 0.00 0.00 0.00 1.00 k 0 @g 0 @G [] 0 d 0 J 0 j 0 R 0 O 0 1.01 1.01 0 @w 105.41 432.00 m 108.00 435.96 L 110.59 432.00 L S @J 117.00 405.00 153.00 441.00 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 117.00 405.00 m 152.06 440.06 L S @j 0.00 0.00 0.00 1.00 K 0.00 0.00 0.00 1.00 k 0 @g 0 @G [] 0 d 0 J 0 j 0 R 0 O 0 1.01 1.01 0 @w 147.96 439.63 m 152.64 440.64 L 151.70 436.03 L S @J 117.00 351.00 153.00 387.00 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 117.00 387.00 m 152.06 351.94 L S @j 0.00 0.00 0.00 1.00 K 0.00 0.00 0.00 1.00 k 0 @g 0 @G [] 0 d 0 J 0 j 0 R 0 O 0 1.01 1.01 0 @w 151.63 356.04 m 152.64 351.43 L 148.03 352.44 L S @J 166.39 341.93 196.63 377.14 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 173.38 346.82 m 177.48 347.47 182.59 350.42 186.77 354.60 c 193.75 361.58 196.63 370.22 193.18 373.68 c 189.72 377.14 181.08 374.33 174.10 367.34 c 169.92 363.17 166.90 358.06 166.39 353.95 C S @j 0.00 0.00 0.00 1.00 K 0.00 0.00 0.00 1.00 k 0 @g 0 @G [] 0 d 0 J 0 j 0 R 0 O 0 1.01 1.01 0 @w 169.34 356.90 m 166.39 353.30 L 164.30 357.62 L S @J 166.39 450.72 196.63 485.93 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 173.38 455.62 m 177.48 456.26 182.59 459.22 186.77 463.39 c 193.75 470.38 196.63 479.02 193.18 482.47 c 189.72 485.93 181.08 483.12 174.10 476.14 c 169.92 471.96 166.90 466.85 166.39 462.74 C S @j 0.00 0.00 0.00 1.00 K 0.00 0.00 0.00 1.00 k 0 @g 0 @G [] 0 d 0 J 0 j 0 R 0 O 0 1.01 1.01 0 @w 169.34 465.70 m 166.39 462.10 L 164.30 466.42 L S @J 166.39 287.93 196.63 323.14 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 173.38 292.82 m 177.48 293.47 182.59 296.42 186.77 300.60 c 193.75 307.58 196.63 316.22 193.18 319.68 c 189.72 323.14 181.08 320.33 174.10 313.34 c 169.92 309.17 166.90 304.06 166.39 299.95 C S @j 0.00 0.00 0.00 1.00 K 0.00 0.00 0.00 1.00 k 0 @g 0 @G [] 0 d 0 J 0 j 0 R 0 O 0 1.01 1.01 0 @w 169.34 302.90 m 166.39 299.30 L 164.30 303.62 L S @J 166.61 396.00 198.00 450.00 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 182.30 396.00 m 190.94 396.00 198.00 408.17 198.00 423.00 c 198.00 437.83 190.94 450.00 182.30 450.00 C S @j 0.00 0.00 0.00 1.00 K 0.00 0.00 0.00 1.00 k 0 @g 0 @G [] 0 d 0 J 0 j 0 R 0 O 0 1.01 1.01 0 @w 185.54 447.41 m 181.58 450.00 L 185.54 452.59 L S @J 220.61 396.00 252.00 450.00 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 236.30 396.00 m 244.94 396.00 252.00 408.17 252.00 423.00 c 252.00 437.83 244.94 450.00 236.30 450.00 C S @j 0.00 0.00 0.00 1.00 K 0.00 0.00 0.00 1.00 k 0 @g 0 @G [] 0 d 0 J 0 j 0 R 0 O 0 1.01 1.01 0 @w 239.54 447.41 m 235.58 450.00 L 239.54 452.59 L S @J 274.61 396.00 306.00 450.00 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 290.30 396.00 m 298.94 396.00 306.00 408.17 306.00 423.00 c 306.00 437.83 298.94 450.00 290.30 450.00 C S @j 0.00 0.00 0.00 1.00 K 0.00 0.00 0.00 1.00 k 0 @g 0 @G [] 0 d 0 J 0 j 0 R 0 O 0 1.01 1.01 0 @w 293.54 447.41 m 289.58 450.00 L 293.54 452.59 L S @J 328.61 396.00 360.00 450.00 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 344.30 396.00 m 352.94 396.00 360.00 408.17 360.00 423.00 c 360.00 437.83 352.94 450.00 344.30 450.00 C S @j 0.00 0.00 0.00 1.00 K 0.00 0.00 0.00 1.00 k 0 @g 0 @G [] 0 d 0 J 0 j 0 R 0 O 0 1.01 1.01 0 @w 347.54 447.41 m 343.58 450.00 L 347.54 452.59 L S @J 382.54 396.00 413.93 450.00 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 398.23 396.00 m 406.87 396.00 413.93 408.17 413.93 423.00 c 413.93 437.83 406.87 450.00 398.23 450.00 C S @j 0.00 0.00 0.00 1.00 K 0.00 0.00 0.00 1.00 k 0 @g 0 @G [] 0 d 0 J 0 j 0 R 0 O 0 1.01 1.01 0 @w 401.47 447.41 m 397.51 450.00 L 401.47 452.59 L S @J 391.54 395.86 398.23 396.14 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 391.54 396.00 m 398.23 396.00 L S 175.54 449.86 398.23 450.14 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 398.23 450.00 m 175.54 450.00 L S 139.46 385.27 144.43 391.03 @E [0.07199 0.00000 0.00000 0.07199 139 386] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Courier 125.00 z 0 0 (p) @t T 188.93 386.93 193.90 390.96 @E [0.07199 0.00000 0.00000 0.07199 188 386] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Courier 125.00 z 0 0 (r) @t T 242.93 386.93 247.61 392.76 @E [0.07199 0.00000 0.00000 0.07199 242 386] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Courier 125.00 z 0 0 (i) @t T 296.93 386.93 301.97 391.03 @E [0.07199 0.00000 0.00000 0.07199 296 386] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Courier 125.00 z 0 0 (n) @t T 350.93 386.86 355.82 392.18 @E [0.07199 0.00000 0.00000 0.07199 350 386] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Courier 125.00 z 0 0 (t) @t T 98.93 364.39 103.46 370.22 @E [0.07199 0.00000 0.00000 0.07199 98 364] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Courier 125.00 z 0 0 (0) @t T 98.93 310.46 103.97 314.42 @E [0.07199 0.00000 0.00000 0.07199 98 310] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Courier 125.00 z 0 0 (x) @t T 125.50 331.78 146.66 338.76 @E [0.07199 0.00000 0.00000 0.07199 125 332] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Courier 125.00 z 0 0 (\133) @t 60 0 (0) @t 120 0 (-) @t 180 0 (9) @t 240 0 (\135) @t T 134.50 367.78 155.66 374.76 @E [0.07199 0.00000 0.00000 0.07199 134 368] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Courier 125.00 z 0 0 (\133) @t 60 0 (1) @t 120 0 (-) @t 180 0 (9) @t 240 0 (\135) @t T 134.28 416.74 166.46 424.73 @E [0.07199 0.00000 0.00000 0.07199 134 418] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Courier 125.00 z 0 0 (\133) @t 60 0 (a) @t 120 0 (-) @t 180 0 (z) @t 240 0 (\135) @t 300 0 (\134) @t 360 0 (p) @t T 197.28 417.31 229.46 424.73 @E [0.07199 0.00000 0.00000 0.07199 197 418] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Courier 125.00 z 0 0 (\133) @t 60 0 (a) @t 120 0 (-) @t 180 0 (z) @t 240 0 (\135) @t 300 0 (\134) @t 360 0 (r) @t T 251.28 417.31 283.18 424.73 @E [0.07199 0.00000 0.00000 0.07199 251 418] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Courier 125.00 z 0 0 (\133) @t 60 0 (a) @t 120 0 (-) @t 180 0 (z) @t 240 0 (\135) @t 300 0 (\134) @t 360 0 (i) @t T 305.28 417.31 337.54 424.73 @E [0.07199 0.00000 0.00000 0.07199 305 418] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Courier 125.00 z 0 0 (\133) @t 60 0 (a) @t 120 0 (-) @t 180 0 (z) @t 240 0 (\135) @t 300 0 (\134) @t 360 0 (n) @t T 359.28 417.31 391.39 424.73 @E [0.07199 0.00000 0.00000 0.07199 359 418] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Courier 125.00 z 0 0 (\133) @t 60 0 (a) @t 120 0 (-) @t 180 0 (z) @t 240 0 (\135) @t 300 0 (\134) @t 360 0 (t) @t T 413.50 417.31 434.66 424.15 @E [0.07199 0.00000 0.00000 0.07199 413 418] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Courier 125.00 z 0 0 (\133) @t 60 0 (a) @t 120 0 (-) @t 180 0 (z) @t 240 0 (\135) @t T 193.03 475.78 214.20 482.62 @E [0.07199 0.00000 0.00000 0.07199 193 476] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Courier 125.00 z 0 0 (\133) @t 60 0 (a) @t 120 0 (-) @t 180 0 (z) @t 240 0 (\135) @t T 193.03 367.78 214.20 374.76 @E [0.07199 0.00000 0.00000 0.07199 193 368] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Courier 125.00 z 0 0 (\133) @t 60 0 (0) @t 120 0 (-) @t 180 0 (9) @t 240 0 (\135) @t T 192.74 313.78 227.45 320.76 @E [0.07199 0.00000 0.00000 0.07199 193 314] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Courier 125.00 z 0 0 (\133) @t 60 0 (0) @t 120 0 (-) @t 180 0 (9) @t 240 0 (a) @t 300 0 (-) @t 360 0 (f) @t 420 0 (\135) @t T 52.70 412.56 107.21 429.41 @E [0.07199 0.00000 0.00000 0.07199 53 422] @tm 0 O 0 @g 0.00 0.00 0.00 1.00 k e /_Courier 125.00 z 0 0 (\133) @t 60 0 (\134) @t 120 0 (0) @t 180 0 (0) @t 240 0 (0) @t 300 0 (-) @t 360 0 (\134) @t 420 0 (3) @t 480 0 (7) @t 540 0 (7) @t 600 0 (\135) @t 660 0 (\134) @t 0 -125 (\133) @t 60 -125 (0) @t 120 -125 (-) @t 180 -125 (9) @t 240 -125 (a) @t 300 -125 (-) @t 360 -125 (z) @t 420 -125 (\135) @t T 54.00 391.54 94.54 401.83 @E 0 J 0 j [] 0 d 0 R 0 @G 0.00 0.00 0.00 1.00 K 0 0.22 0.22 0.00 @w 54.00 396.65 m 55.51 398.16 56.52 401.83 58.54 401.18 c 62.50 399.89 63.29 392.18 67.54 392.18 c 71.71 392.18 72.29 401.18 76.54 401.18 c 80.71 401.18 81.50 393.55 85.54 392.18 c 87.48 391.54 88.27 396.58 90.00 396.65 C 93.17 396.65 L S @j 0.00 0.00 0.00 1.00 K 0.00 0.00 0.00 1.00 k 0 @g 0 @G [] 0 d 0 J 0 j 0 R 0 O 0 1.01 1.01 0 @w 90.00 399.17 m 93.96 396.65 L 90.00 394.13 L S @J @rs @rs end %%EndDocument @endspecial 108 1136 a Fr(Figure)21 b(3:)32 b(A)20 b(DF)-5 b(A)21 b(for)f(the)i(sample)d(sp)q(eci\014cation)j(in)e(Figure)g(2.)39 b(State)21 b(0)f(is)h(the)g(start)g(state.)108 1186 y(Accepting)d (states)g(are)g(lab)q(eled)e(with)h(the)g(n)o(um)o(b)q(er)f(of)g(the)i (rule)f(that)g(they)g(matc)o(h.)26 b(F)m(or)16 b(example,)108 1236 y(state)i(10)d(accepts)j(rule)f(2.)25 b(T)m(ransitions)16 b(di\013ering)g(only)g(b)o(y)g(lab)q(el)f(are)i(represen)o(ted)i(with)d (the)h(same)108 1286 y(arc.)i(F)m(or)12 b(example,)f(state)j(0)e(has)h (transitions)g(to)f(state)i(6)e(on)h(all)e(of)i(the)g(follo)o(wing)d(c) o(haracters:)19 b Fm(a)p Fr(,)13 b Fl(:)7 b(:)g(:)n Fr(,)108 1336 y Fm(o)p Fr(,)14 b Fm(q)p Fr(,)f Fl(:)7 b(:)g(:)12 b Fm(z)p Fr(.)21 1469 y(RE2C)i(is)g(di\013eren)o(t)h(from)e(most)g (other)i(scanner)h(generators)f(in)f(that)h(the)g(user)g(m)o(ust)f(pro) o(vide)g(the)h(input)f(bu\013ering)-42 1519 y(mec)o(hanism)i(for)h(the) i(scanner;)h(the)f(generated)g(co)q(de)g(simply)c(assumes)j(that)g(the) g(user)h(has)f(de\014ned)h(three)g(p)q(oin)o(ters:)-42 1569 y Fm(YYCURSOR)p Fr(,)9 b Fm(YYLIMIT)g Fr(and)h Fm(YYMARKER)p Fr(,)e(and)i(a)h(routine)f Fm(YYFILL\()p Fl(n)p Fm(\))p Fr(.)15 b(Before)d(executing)f(the)g(generated)h(co)q(de,)f Fm(YYCURSOR)-42 1619 y Fr(and)h Fm(YYLIMIT)d Fr(m)o(ust)h(b)q(e)i(set)g (to)g(p)q(oin)o(t)e(to)h(the)h(\014rst)g(and)f(one)h(past)f(the)h(last) f(c)o(haracter)i(in)e(the)g(bu\013er,)i(resp)q(ectiv)o(ely)m(.)18 b(After)-42 1669 y(a)f(tok)o(en)g(is)f(recognized,)i(and)f(b)q(efore)g (an)o(y)f(action)g(is)h(executed,)i Fm(YYCURSOR)c Fr(is)h(set)i(to)e(p) q(oin)o(t)g(to)h(just)g(past)g(the)g(tok)o(en.)-42 1718 y Fm(YYFILL)d Fr(will)g(b)q(e)i(called)f(as)g(the)h(bu\013er)h(needs)f (\014lling;)e(at)h(least)h Fl(n)f Fr(additional)e(input)i(c)o (haracters)i(should)e(b)q(e)h(pro)o(vided.)-42 1768 y(When)g Fm(YYFILL)d Fr(is)i(called,)f Fm(YYCURSOR)f Fr(will)h(p)q(oin)o(t)g(to) h(the)g(next)h(c)o(haracter)g(to)f(b)q(e)g(scanned)h(and)f Fm(YYMARKER)p Fr(,)d(if)i(set,)i(will)-42 1818 y(p)q(oin)o(t)f(to)f(a)g (p)q(ossible)h(bac)o(ktrac)o(king)g(p)q(oin)o(t)f(in)g(the)h(bu\013er.) 21 b Fm(YYFILL)14 b Fr(m)o(ust)f(up)q(date)j Fm(YYLIMIT)p Fr(,)c(and)j(p)q(ossibly)f Fm(YYCURSOR)-42 1868 y Fr(and)f Fm(YYMARKER)f Fr(b)q(efore)h(returning.)18 b(T)o(ypically)12 b Fm(YYCURSOR)p Fr(,)f Fm(YYLIMIT)p Fr(,)g Fm(YYMARKER)p Fr(,)f(and)j Fm(YYFILL\()p Fl(n)p Fm(\))e Fr(will)h(b)q(e)h(de\014ned)h (as)-42 1918 y(macros.)-42 2034 y Fj(2.1)56 b(Things)19 b(That)g(RE2C)f(Do)r(esn't)g(Pro)n(vide)-42 2111 y Fr(RE2C)11 b(do)q(esn't)h(pro)o(vide)f(man)o(y)e(things)j(a)o(v)n(ailable)d(in)h (more)h(con)o(v)o(en)o(tional)f(scanner)j(generators)f(including)e (default)h(rules,)-42 2160 y(end-of-input)17 b(pseudo-tok)o(ens,)i(and) e(bu\013er)i(managemen)o(t)14 b(routines.)29 b(All)17 b(of)f(these)j(m)o(ust)d(b)q(e)i(supplied)g(b)o(y)f(the)h(user.)-42 2210 y(Rather)10 b(than)g(b)q(eing)f(a)g(handicap,)h(this)g(allo)o(ws)e (RE2C-generated)i(scanners)h(to)f(b)q(e)g(tailored)f(to)g(almost)f(an)o (y)h(en)o(vironmen)o(t.)-42 2260 y(F)m(or)k(example,)f(the)i(scanner)h (de\014ned)f(in)f(Figure)h(1)f(compiles)f(in)o(to)h(32)g(b)o(ytes)h(of) e(i486)h(co)q(de)h(\(using)f(W)m(atcom)e(C)j(9.5\);)e(the)-42 2310 y(same)g(size)h(as)f(an)g(equiv)n(alen)o(t)g(hand-co)q(ded)h (routine.)k(Most)c(other)g(scanner)g(generators)h(cannot)e(pro)q(duce)h (scanners)h(that)-42 2360 y(are)k(comp)q(etitiv)o(e)e(with)g(hand-co)q (ded)i(analyzers)f(in)f(this)h(case.)28 b(F)m(urther,)18 b(it)f(is)g(not)f(o)o(v)o(erly)h(di\016cult)f(to)h(implem)o(en)o(t)e(a) -42 2409 y(more)c(traditional)f(scanner)j(using)f(RE2C.)e(F)m(or)h (example,)g(App)q(endix)h(A)f(con)o(tains)h(the)g(supp)q(ort)h(co)q(de) f(for)f(the)i(C)e(scanner)-42 2459 y(b)q(enc)o(hmark)o(ed)j(in)f(T)m (able)g(1.)k(Note)d(that)g(this)f(co)q(de)h(allo)o(ws)f(for)g (arbitrarily)f(long)h(con)o(tiguous)g(tok)o(ens)h(and)f(pro)o(vides)h (line)-42 2509 y(and)g(column)e(n)o(um)o(b)q(er)i(information.)923 2748 y(3)p eop %%Page: 4 4 4 3 bop -42 195 a Fs(3)67 b(Generating)23 b(Directly)h(Executable)g (Scanners)-42 286 y Fr(As)14 b(demonstrated)g(b)o(y)f(GLA)g([7)o(])g (generating)h(directly)g(executable)g(co)q(de)g(instead)g(of)f(tables)h (can)f(result)i(in)e(m)o(uc)o(h)f(faster)-42 336 y(scanners.)20 b(Ho)o(w)o(ev)o(er,)13 b(to)g(ac)o(hiev)o(e)h(this)f(sp)q(eed,)h (GLA-generated)h(scanners)f(mak)o(e)e(some)g(assumptions)h(ab)q(out)g (the)h(input)-42 386 y(and)i(place)g(certain)g(restrictions)g(on)g(tok) o(ens)680 371 y Fq(4)699 386 y Fr(.)23 b(In)15 b(this)h(section)g(w)o (e)g(will)e(sho)o(w)h(ho)o(w)g(to)h(generate)g(directly)g(executable) -42 435 y(scanners)22 b(whic)o(h)d(not)g(only)g(a)o(v)o(oid)f(suc)o(h)i (restrictions,)h(but)f(are)g(also)e(faster)i(and)f(usually)g(smaller.) 33 b(The)19 b(approac)o(h)-42 485 y(presen)o(ted)f(here)f(has)f(the)g (added)g(b)q(ene\014t)h(that)f(ev)o(en)g(faster)h(scanners)g(can)f(b)q (e)g(easily)f(b)q(e)i(created,)g(at)e(the)i(exp)q(ense)g(of)-42 535 y(increased)f(co)q(de)e(size,)h(b)o(y)e(using)h(a)f(tec)o(hnique)i (akin)e(to)h(lo)q(op)f(unrolling.)-42 651 y Fj(3.1)56 b(Constructing)19 b(a)g(DF)-6 b(A)-42 728 y Fr(The)15 b(\014rst)g(step)g(in)f(generating)h(a)f(directly)g(executable)h (scanner)h(is)e(to)g(construct)i(a)e(DF)-5 b(A)15 b(that)f(recognizes)i (the)e(regular)-42 778 y(expressions)g(in)e(the)h(sp)q(eci\014cation.) 18 b(Figure)12 b(3)g(presen)o(ts)i(a)e(DF)-5 b(A)13 b(that)f (recognizes)h(the)g(regular)f(expressions)i(in)e(Figure)g(2.)-42 828 y(One)18 b(p)q(ossible)f(algorithm)e(for)h(constructing)i(suc)o(h)g (a)e(DF)-5 b(A)18 b(can)f(b)q(e)g(found)g(in)f([1].)26 b(Giv)o(en)16 b(suc)o(h)i(a)f(DF)-5 b(A,)16 b(the)i(task)f(of)p -42 864 780 2 v 5 891 a Fn(4)22 903 y Fo(These)11 b(assumptions)e(and)h (restrictions)f(are)i(discussed)e(in)j(more)e(detail)g(in)h(Sections)e (3.3.1)i(and)f(5.1.)923 2748 y Fr(4)p eop %%Page: 5 5 5 4 bop -42 195 a Fr(scanning)14 b(the)h(input)f(can)g(b)q(e)g (expressed)i(as)e(follo)o(ws:)125 278 y(Starting)i(from)g(the)i(start)g (state,)g(mo)o(v)o(e)e(from)f(state)j(to)f(state)h(along)e(transitions) i(lab)q(eled)f(with)g(con-)62 328 y(secutiv)o(e)f(c)o(haracters)h(from) c(the)i(input.)21 b(When)15 b(no)f(further)i(transitions)f(can)g(b)q(e) g(made,)e(bac)o(ktrac)o(k)i(to)g(the)62 378 y(last)h(accepting)g (state,)h(sa)o(y)f Fl(q)q Fr(.)24 b(The)16 b(path)g(to)f Fl(q)i Fr(sp)q(ells)g(the)f(next)g(tok)o(en)g(and)g(the)g(rule)h(asso)q (ciated)f(with)g Fl(q)62 428 y Fr(determines)e(the)h(co)q(de)g(to)e(b)q (e)i(executed.)-42 511 y(As)d(a)e(result,)h(the)h(problem)d(of)h (generating)h(scanners)h(essen)o(tially)f(reduces)h(to)f(the)g(problem) e(of)h(generating)h(an)f(executable)-42 560 y(represen)o(tation)16 b(for)d(a)h(DF)-5 b(A.)-42 677 y Fj(3.2)56 b(Generating)18 b(Co)r(de)-42 753 y Fr(If)g(w)o(e)g(assume)g(that)g(the)h(input)f(is)g (en)o(tirely)g(con)o(tained)g(in)g(a)f(single)h(bu\013er)h(then)g (generating)f(co)q(de)h(for)f(the)g(DF)-5 b(A)19 b(is)-42 803 y(relativ)o(ely)13 b(straigh)o(tforw)o(ard,)f(as)h(is)g (illustrated)g(b)o(y)f(the)i(co)q(de)g(templates)e(in)h(Figure)g(4.)35 b(Note)14 b(that)f(the)g(only)g(di\013erence)p 575 863 717 2 v 575 912 2 50 v 856 897 a Fi(Pr)n(olo)n(gue)p 1290 912 V 575 914 717 2 v 575 964 2 50 v 720 949 a Fm(int)21 b(yyaccept;)p 1290 964 V 575 1014 V 720 999 a(goto)g(M)p Fi(start)p Fm(;)p 1290 1014 V 575 1063 V 720 1049 a(fin:)g(YYCURSOR)f (=)i(YYMARKER;)p 1290 1063 V 575 1113 V 720 1098 a(switch\(yyaccept\))p Fk(f)p 1290 1113 V 575 1163 V 807 1148 a Fl(:)7 b(:)g(:)p 1290 1163 V 575 1213 V 602 1198 a Fm(A)p Fl(n)p Fm(:)93 b(case)21 b Fl(n)p Fm(:)43 b Fi(action)p Fr(\()p Fl(n)p Fr(\))p Fm(;)p 1290 1213 V 575 1263 V 807 1248 a Fl(:)7 b(:)g(:)p 1290 1263 V 575 1313 V 720 1298 a Fk(g)p 1290 1313 V 575 1362 V 720 1347 a Fi(c)n(o)n(de)15 b(for)g(states)p 1290 1362 V 575 1364 717 2 v 204 1370 720 2 v 204 1420 2 50 v 346 1405 a(Co)n(de)g(for)f(ac)n(c)n(epting)h(state)p 921 1420 V 204 1421 720 2 v 204 1471 2 50 v 230 1456 a Fm(L)p Fl(q)q Fm(:)50 b(++YYCURSOR;)p 921 1471 V 204 1521 V 344 1506 a(yyaccept)20 b(=)h Fi(rule)p Fr(\()p Fl(q)q Fr(\))p Fm(;)p 921 1521 V 204 1571 V 344 1556 a(YYMARKER)f(=)h(YYCURSOR;)p 921 1571 V 204 1621 V 230 1606 a(M)p Fl(q)q Fm(:)50 b(switch\(*YYCURSO)o(R\))p Fk(f)p 921 1621 V 204 1670 V 431 1655 a Fl(:)7 b(:)g(:)p 921 1670 V 204 1720 V 387 1705 a Fm(case)21 b Fl(c)p Fm(:)43 b(goto)21 b(L)p Fi(goto)q Fr(\()p Fl(q)q(;)7 b(c)p Fr(\))p Fm(;)p 921 1720 V 204 1770 V 431 1755 a Fl(:)g(:)g(:)p 921 1770 V 204 1820 V 387 1805 a Fm(default:)42 b(goto)21 b(fin;)p 921 1820 V 204 1870 V 344 1855 a Fk(g)p 921 1870 V 204 1871 720 2 v 944 1370 V 944 1420 2 50 v 1045 1405 a Fi(Co)n(de)15 b(for)g(non-ac)n(c)n(epting)h(state)p 1662 1420 V 944 1421 720 2 v 944 1471 2 50 v 971 1456 a Fm(L)p Fl(q)q Fm(:)49 b(++YYCURSOR;)p 1662 1471 V 944 1521 V 1662 1521 V 944 1571 V 1662 1571 V 944 1621 V 971 1606 a(M)p Fl(q)q Fm(:)g(switch\(*YYCURSOR\))p Fk(f)p 1662 1621 V 944 1670 V 1172 1655 a Fl(:)7 b(:)g(:)p 1662 1670 V 944 1720 V 1128 1705 a Fm(case)21 b Fl(c)p Fm(:)43 b(goto)21 b(L)p Fi(goto)p Fr(\()p Fl(q)q(;)7 b(c)p Fr(\))p Fm(;)p 1662 1720 V 944 1770 V 1172 1755 a Fl(:)g(:)g(:)p 1662 1770 V 944 1820 V 1128 1805 a Fm(default:)42 b(goto)21 b(fin;)p 1662 1820 V 944 1870 V 1084 1855 a Fk(g)p 1662 1870 V 944 1871 720 2 v 108 1946 a Fr(Figure)g(4:)30 b(Directly)20 b(executable)h(scanner.)38 b(The)20 b(co)q(de)h (generated)g(for)f(a)g(scanner)h(consists)g(of)f(a)108 1996 y(prologue)12 b(follo)o(w)o(ed)f(b)o(y)h(co)q(de)i(for)e(eac)o(h)h (state.)18 b Fi(start)11 b Fr(is)i(the)g(start)g(state.)18 b Fi(action)p Fr(\()p Fl(n)p Fr(\))13 b(denotes)h(the)f(co)q(de)108 2045 y(asso)q(ciated)h(with)e(rule)h Fl(n)p Fr(,)f Fi(goto)p Fr(\()p Fl(q)q(;)7 b(c)p Fr(\))12 b(denotes)i(the)f(state)g(reac)o(hed) h(from)d(state)i Fl(q)h Fr(along)d(the)i(transition)108 2095 y(lab)q(eled)18 b(with)e Fl(c)h Fr(and)g Fi(rule)p Fr(\()p Fl(q)q Fr(\))g(denotes)i(the)e(rule)h(asso)q(ciated)g(with)e (state)i Fl(q)q Fr(.)28 b Fm(yyaccept)16 b Fr(is)h(used)h(to)108 2145 y(sa)o(v)o(e)d(bac)o(ktrac)o(king)e(information.)i(The)g Fm(M)p Fr(-lab)q(els)e(will)f(b)q(e)j(used)g(in)e(section)i(3.4.2.)-42 2245 y(b)q(et)o(w)o(een)j(the)f(templates)f(for)g(accepting)g(and)h (non-accepting)f(states)i(is)e(that)g(the)h(accepting)g(states)g(ha)o (v)o(e)f(additional)-42 2294 y(co)q(de)e(to)f(sa)o(v)o(e)g(bac)o(ktrac) o(king)f(information.)j(Figure)e(5)g(sho)o(ws)g(co)q(de)h(that)f(migh)o (t)d(b)q(e)k(generated)g(for)f(state)g(1)g(in)f(Figure)h(3.)-42 2460 y Fj(3.3)56 b(Bu\013ering)-42 2537 y Fr(Complications)13 b(arise)i(when)g(the)g(input)g(is)g(not)f(con)o(tained)h(in)g(a)f (single)g(bu\013er:)21 b(additional)13 b(co)q(de)j(is)e(needed)j(for)d (\014lling)-42 2587 y(the)h(bu\013er)g(as)f(necessary)m(.)923 2748 y(5)p eop %%Page: 6 6 6 5 bop 647 188 a Fm(L1:)49 b(++YYCURSOR;)762 238 y(yyaccept)20 b(=)i(4;)762 288 y(YYMARKER)e(=)i(YYCURSOR;)647 338 y(M1:)49 b(switch\(*YYCURSOR\))p Fk(f)806 388 y Fm(case)21 b('a':)43 b(goto)21 b(L6;)849 438 y Fl(:)7 b(:)g(:)806 487 y Fm(case)21 b('q':)43 b(goto)21 b(L6;)806 537 y(case)g('r':)43 b(goto)21 b(L2;)806 587 y(case)g('s':)43 b(goto)21 b(L6;)849 637 y Fl(:)7 b(:)g(:)806 687 y Fm(case)21 b('z':)43 b(goto)21 b(L6;)806 736 y(default:)42 b(goto)21 b(fin;)762 786 y Fk(g)690 876 y Fr(Figure)14 b(5:)k(Co)q(de)c(for)g(state)g(1.)505 968 y Fm(L6:)50 b(++YYCURSOR;)621 1018 y(if\(YYLIMIT)19 b(==)j(YYCURSOR\))e(YYFILL\(1\);)621 1068 y(yyaccept)g(=)h(4;)621 1118 y(YYMARKER)f(=)h(YYCURSOR;)505 1168 y(M6:)50 b(switch\(*YYCURSO)o (R\))p Fk(f)708 1217 y Fl(:)7 b(:)g(:)621 1267 y Fk(g)690 1357 y Fr(Figure)14 b(6:)k(Co)q(de)c(for)g(state)g(6.)-42 1489 y Fh(3.3.1)48 b(The)16 b(Sen)o(tinel)c(Metho)q(d)-42 1566 y Fr(Most)20 b(scanner)g(generators)g(use)g(the)g(sen)o(tinel)f (metho)q(d)g([1)o(])f(to)h(determine)g(when)h(the)f(bu\013er)i(needs)f (\014lling.)32 b(In)19 b(the)-42 1616 y(simplest)d(case,)h(a)f(sym)o(b) q(ol)f(that)h(do)q(es)i(not)e(app)q(ear)h(in)f(v)n(alid)f(input)h(is)g (c)o(hosen)h(as)g(the)g(sen)o(tinel)g(c)o(haracter.)26 b(An)17 b(extra)-42 1666 y(state)12 b(is)f(added)g(to)g(the)h(DF)-5 b(A)11 b(and)g(transitions)f(to)h(this)g(state)h(on)f(the)g(sen)o (tinel)h(sym)o(b)q(ol)d(are)i(added)g(to)g(the)h(original)d(states.)-42 1715 y(When)16 b(the)g(DF)-5 b(A)16 b(arriv)o(es)f(in)g(this)h(new)f (state)i(it)e(is)g(time)f(to)h(re\014ll)g(the)h(bu\013er.)23 b(After)16 b(the)g(bu\013er)h(is)e(re\014lled,)g(scanning)-42 1765 y(m)o(ust)h(b)q(e)g(restarted)i(in)e(the)h(previous)f(state.)26 b(Unfortunately)m(,)16 b(this)g(is)g(not)g(p)q(ossible)g(with)g(the)h (approac)o(h)f(outlined)g(in)-42 1815 y(Figure)j(4:)26 b(the)19 b(necessary)h(information)15 b(is)j(simply)e(not)i(a)o(v)n (ailable.)28 b(Co)q(de)19 b(could)f(b)q(e)g(added)h(to)f(eac)o(h)g (state)h(to)f(sa)o(v)o(e)-42 1865 y(the)e(necessary)g(information)c (but)j(this)g(w)o(ould)e(result)j(in)e(slo)o(w)o(er)h(and)f(larger)h (scanners.)22 b(GLA)14 b(solv)o(es)h(this)f(problem)g(b)o(y)-42 1915 y(ensuring)i(that)g(the)f(sen)o(tinel)h(only)f(gets)g(inserted)i (b)q(et)o(w)o(een)g(tok)o(ens:)k(if)14 b(this)i(is)f(the)h(case,)g(the) g(scanner)g(can)g(alw)o(a)o(ys)e(b)q(e)-42 1964 y(restarted)k(from)c (the)j(start)f(state.)25 b(T)m(o)15 b(ensure)i(that)f(the)h(sen)o (tinel)f(only)f(gets)i(inserted)g(b)q(et)o(w)o(een)g(tok)o(ens,)f(GLA)g (allo)o(ws)-42 2014 y(newline)g(\(ASCI)q(I)g(LF\))g(c)o(haracters)h(to) f(app)q(ear)g(only)f(at)g(the)h(end)g(of)f(a)h(tok)o(en)g(and)f (disallo)o(ws)f(the)i(bu\013ering)g(of)f(partial)-42 2064 y(lines)39 2049 y Fq(5)58 2064 y Fr(.)-42 2172 y Fh(3.3.2)48 b(Bu\013ering)-42 2249 y Fr(RE2C-generated)17 b(scanners)h(c)o(hec)o(k)f(if)e(the)i(bu\013er)g(needs)g(\014lling)e (simply)f(b)o(y)i(comparing)e Fm(YYCURSOR)g Fr(and)i Fm(YYLIMIT)p Fr(.)e(A)-42 2298 y(metho)q(d)d(inspired)g(b)o(y)g(the)h (mec)o(hanism)d(used)j(to)f(guard)g(against)g(stac)o(k)g(o)o(v)o (er\015o)o(w)g(in)g([17)o(])1365 2283 y Fq(6)1394 2298 y Fr(is)g(used)i(to)e(reduce)h(the)g(amoun)o(t)-42 2348 y(of)i(c)o(hec)o(king.)21 2398 y(Chec)o(ks)j(are)g(only)f(inserted)h (in)f(certain)h(k)o(ey)f(states.)27 b(These)18 b(c)o(hec)o(ks)g(simply) c(ensure)k(that)e(there)i(is)e(enough)h(input)-42 2448 y(in)g(the)g(bu\013er)h(for)f(the)h(scan)f(to)g(pro)q(ceed)h(un)o(til)e (the)i(next)f(k)o(ey)g(state.)28 b(F)m(or)17 b(example,)f(in)g(the)i (DF)-5 b(A)17 b(of)f(Figure)h(3)g(it)g(is)-42 2498 y(su\016cien)o(t)e (to)e(c)o(hec)o(k)i(that)f(there)h(are)g(at)e(least)h(6)g(c)o (haracters)h(in)f(the)g(bu\013er)h(when)f(it)g(starts,)g(and)g(that)g (there)h(is)f(at)f(least)-42 2547 y(one)i(c)o(haracter)g(in)e(the)i (bu\013er)g(when)f(the)h(DF)-5 b(A)14 b(is)g(in)f(states)j(6,)d(8,)g (or)h(10.)k(No)13 b(other)i(c)o(hec)o(ks)g(are)g(required.)k(The)14 b(c)o(hec)o(ks)-42 2597 y(inserted)i(in)d(k)o(ey)h(states)h(are)f(of)g (the)g(form)923 2748 y(6)p eop %%Page: 7 7 7 6 bop 62 195 a Fm(if\(\(YYLIMIT)20 b(-)h(YYCURSOR\))f(<)i Fl(n)p Fm(\))f(YYFILL\()p Fl(n)p Fm(\);)-42 278 y Fr(where)c Fl(n)f Fr(is)f(the)i(maxim)n(um)11 b(n)o(um)o(b)q(er)k(of)g(c)o (haracters)i(that)f(can)g(b)q(e)g(consumed)g(b)q(efore)g(another)g(k)o (ey)g(state)g(is)g(reac)o(hed.)-42 328 y(F)m(or)e(example,)e(Figure)i (6)g(sho)o(ws)g(the)g(co)q(de)h(generated)g(for)f(state)h(6)e(in)h (Figure)g(3.)21 378 y(A)h(set)g(of)f(k)o(ey)h(states)h(can)f(b)q(e)g (determined)g(b)o(y)f(disco)o(v)o(ering)h(the)g(strongly-connected)h (comp)q(onen)o(ts)e(\(SCCs\))i(of)e(the)-42 428 y(DF)-5 b(A.)12 b(An)h(SCC)f(is)f(a)h(maxima)o(l)d(subset)k(of)f(states)h(suc)o (h)g(that)f(there)h(exists)g(a)f(path)g(from)e(an)o(y)i(state)g(in)g (the)h(subset)g(to)f(an)o(y)-42 477 y(other.)24 b(The)16 b(set)g(of)f(k)o(ey)h(states)g(consists)h(of)e(all)f(of)h(the)h(states) h(in)e(non-trivial)f(SCCs,)h(together)i(with)e(the)h(start)g(state.)-42 527 y(Note)d(that)f(for)g(eac)o(h)g(SCC)g Fl(S)r Fr(,)h(w)o(e)f (actually)g(only)f(ha)o(v)o(e)h(to)g(include)g(a)f(subset)j(of)d (states)j(of)d Fl(S)k Fr(suc)o(h)e(that)f(when)g(the)h(subset)-42 577 y(is)f(remo)o(v)o(ed,)f Fl(S)k Fr(b)q(ecomes)d(acyclic.)17 b(Indeed,)c([17)o(])e(describ)q(es)j(a)e(simple)e(heuristic)j(for)e(c)o (ho)q(osing)h(suc)o(h)g(a)g(subset.)18 b(Ho)o(w)o(ev)o(er,)-42 627 y(since)c(in)f(practice)h(most)d(of)i(the)g(\(non-trivial\))f(SCCs) h(encoun)o(tered)i(will)c(consist)j(of)e(a)h(single)g(state)g(the)h (curren)o(t)g(v)o(ersion)-42 677 y(of)f(RE2C)g(simply)e(includes)j(all) d(states)k(in)e(non-trivial)e(SCCs)943 662 y Fq(7)962 677 y Fr(.)18 b(An)13 b(algorithm)e(giv)o(en)h(in)h([3)o(])g(w)o(as)g (used)h(to)f(compute)g(the)-42 726 y(SCCs.)-42 843 y Fj(3.4)56 b(Optimizations)-42 919 y Fr(Ev)o(en)17 b(go)q(o)q(d)f (optimizing)e(C)i(compilers)f(can)i(b)q(e)g(coaxed)f(in)o(to)g (generating)g(m)o(uc)o(h)f(smaller)g(and)h(sligh)o(tly)f(faster)i(co)q (de)g(if)-42 969 y(some)c(transformations)g(are)h(\014rst)h(applied)e (to)h(the)g(generated)i(co)q(de.)-42 1077 y Fh(3.4.1)48 b(Eliminatin)o(g)13 b(Bac)o(ktrac)o(king)-42 1154 y Fr(Consider)19 b(state)g(1)f(in)g(the)h(DF)-5 b(A)18 b(in)g(Figure)g(3.)31 b(Note)19 b(that)f(since)h(all)e(of)h(the)h(transitions)f(from)e(state) j(1)f(reac)o(h)h(only)-42 1203 y(accepting)f(states,)h(bac)o(ktrac)o (king)f(information)c(do)q(es)k(not)f(need)i(to)e(b)q(e)h(sa)o(v)o(ed)g (if)e(the)i(co)q(de)g(for)f(the)h Fm(default)e Fr(case)j(is)-42 1253 y(c)o(hanged)h(to)e(go)g(directly)h(to)g(the)g(co)q(de)h(asso)q (ciated)f(with)f(state)i(1.)32 b(The)19 b(result)h(of)e(this)h (optimization)d(is)i(sho)o(wn)h(in)-42 1303 y(Figure)d(7.)48 b(More)17 b(generally)m(,)e(this)h(optimization)d(can)j(b)q(e)g (applied)f(to)h(all)f(accepting)h(states)h(whic)o(h)f(ha)o(v)o(e)g (transitions)647 1396 y Fm(L1:)49 b(++YYCURSOR;)647 1446 y(M1:)g(switch\(*YYCURSOR\))p Fk(f)806 1495 y Fm(case)21 b('a':)43 b(goto)21 b(L6;)849 1545 y Fl(:)7 b(:)g(:)806 1595 y Fm(case)21 b('q':)43 b(goto)21 b(L6;)806 1645 y(case)g('r':)43 b(goto)21 b(L2;)806 1695 y(case)g('s':)43 b(goto)21 b(L6;)849 1744 y Fl(:)7 b(:)g(:)806 1794 y Fm(case)21 b('z':)43 b(goto)21 b(L6;)806 1844 y(default:)42 b(goto)21 b(A4;)762 1894 y Fk(g)419 1983 y Fr(Figure)14 b(7:)k(Co)q(de)c(for)g(state)g(1)g(with)g(bac)o(ktrac)o(king)f (eliminated.)-42 2083 y(only)h(to)f(accepting)i(states.)-42 2191 y Fh(3.4.2)48 b(Optimizing)12 b Fm(switch)p Fh(es)-42 2268 y Fr(Most)21 b(C)g(compilers)f(will)f(generate)j(either)f(a)g (jump)e(table)h(or)h(a)g(set)g(of)f Fm(if)g Fr(statemen)o(ts)h(for)g(a) f Fm(switch)g Fr(statemen)o(t)-42 2317 y(dep)q(ending)e(on)e(the)i (distribution)e(of)g(the)i Fm(case)e Fr(lab)q(els.)26 b(In)17 b(man)o(y)e(compilers)h(the)h(decision)g(as)g(to)g(whic)o(h)g (metho)q(d)f(to)-42 2367 y(use)j(is)f(biased)f(to)o(w)o(ards)h (generating)g(jump)e(tables)i(since)g(in)g(most)e(cases)j(this)f (results)h(in)e(faster)h(alb)q(eit)f(larger)h(co)q(de.)-42 2417 y(Ho)o(w)o(ev)o(er,)c(exp)q(erience)h(with)e(directly)h (executable)h(scanners)g(has)e(sho)o(wn,)g(that)g(replacing)h(man)o(y)d (of)i(these)h(jump)e(tables)p -42 2452 780 2 v 5 2478 a Fn(5)22 2490 y Fo(If)f(the)g(input)f(con)o(tains)g(no)h(newlines,)f (a)h(GLA)h(scanner)e(will)h(attempt)f(to)h(bu\013er)f(the)g(en)o(tire)g (input)h(stream.)5 2518 y Fn(6)22 2530 y Fo(The)h(problem)d(of)i (detecting)e(stac)o(k)h(o)o(v)o(er\015o)o(w)g(in)i(LR)f(parsers)f(is)i (probably)d(b)q(est)i(left)f(to)h(hardw)o(are)f(mec)o(hanisms)f([12)o (].)5 2558 y Fn(7)22 2569 y Fo(It)i(should)f(b)q(e)h(noted)f(that)g (\014nding)f(the)i(minimal)e(set)i(of)g(states)f(to)h(remo)o(v)o(e)f (from)g(an)h(SCC)h(in)f(order)f(to)h(render)f(it)h(acyclic)e(is)j (equiv)n(alen)o(t)-42 2609 y(to)g(the)e(FEEDBA)o(CK)j(VER)m(TEX)h(SET)d (problem)f(whic)o(h)h(is)g(NP-complete)e([6].)923 2748 y Fr(7)p eop %%Page: 8 8 8 7 bop -42 195 a Fr(with)12 b Fm(if)g Fr(statemen)o(ts)g(results)h(in) f(scanners)i(whic)o(h)d(are)i(m)o(uc)o(h)e(smaller,)f(and)i (surprisingly)m(,)f(in)h(some)f(cases)i(sligh)o(tly)e(faster)-42 245 y(as)h(w)o(ell)78 230 y Fq(8)96 245 y Fr(.)17 b(As)c(a)e(result,)h (the)h(capabilit)o(y)d(of)h(replacing)g(a)h Fm(switch)e Fr(statemen)o(t)i(with)f Fm(if)g Fr(statemen)o(ts)h(w)o(as)g(added)g (to)f(RE2C.)21 295 y(RE2C)j(bases)j(its)e(decision)g(on)g(whether)i(to) e(generate)i(a)d Fm(switch)g Fr(statemen)o(t)i(or)f(to)g(replace)h(it)f (with)g Fm(if)p Fr(s)g(solely)g(on)-42 345 y(the)j(densit)o(y)162 329 y Fq(9)198 345 y Fr(of)f(the)g Fm(switch)f Fr(statemen)o(t.)27 b(It)18 b(is)e(surprising)i(that)f(suc)o(h)h(a)e(simple)g(heuristic)i (w)o(orks)f(w)o(ell.)27 b(F)m(or)16 b(more)-42 394 y(esoteric)h (applications)e(in)g(whic)o(h)h(the)g(input)f(alphab)q(et)h(is)f(not)h (a)f(simple)f(in)o(terv)n(al)h(RE2C)g(has)g(the)i(adv)n(an)o(tage)d(in) h(that)-42 444 y(there)f(is)e(no)g(pro)o(vision)f(for)h(don't)f(care)i (en)o(tries)g(in)f(a)g Fm(switch)f Fr(statemen)o(t:)17 b(if)11 b(no)h Fm(case)f Fr(matc)o(hes)h(none)g(of)f(the)i(statemen)o (ts)-42 494 y(in)i(the)g Fm(switch)e Fr(m)o(ust)g(b)q(e)i(executed.)22 b(Ho)o(w)o(ev)o(er,)15 b(for)f(the)h(examples)f(in)g(T)m(able)f(1)h (this)h(is)f(not)h(so:)k(RE2C)14 b(simply)f(do)q(es)i(a)-42 544 y(b)q(etter)j(job)d(of)g(generating)g(co)q(de)i(for)e Fm(switch)f Fr(statemen)o(ts)i(than)g(the)g(compiler.)21 b([18)o(],)15 b([11)o(],)g(and)h([2)o(])f(also)g(address)i(the)-42 594 y(problem)c(of)g(generating)h(go)q(o)q(d)g(co)q(de)h(for)e Fm(switch)g Fr(statemen)o(ts.)-42 702 y Fh(Replacing)18 b Fm(switch)p Fh(es)g(with)g Fm(if)p Fh(s)41 b Fr(When)17 b(replacing)g(a)f Fm(switch)g Fr(statemen)o(t)h(with)g Fm(if)f Fr(statemen)o(ts,)i(it)f(is)f(useful)i(to)-42 751 y(sort)g(the)f Fm(case)p Fr(s)f(b)o(y)h(lab)q(el)f(and)g(then)h (group)g(them)f(according)h(to)f(rule)h(in)o(to)f(subranges,)i(as)f (illustrated)f(in)g(Figure)h(8.)-42 801 y(RE2C)c(replaces)h(a)f Fm(switch)f Fr(with)g(either)i(a)f(linear)f(or)h(binary)g(searc)o(h,)h (dep)q(ending)f(on)g(the)h(n)o(um)o(b)q(er)e(of)g(subranges)i(in)f(the) 467 894 y Fm(switch\(*YYCURSOR\))p Fk(f)511 944 y Fm(case)21 b('\\)o(000':)49 b Fl(:)7 b(:)g(:)20 b Fm(case)h('/':)115 b(goto)21 b(L11;)576 994 y(case)g('0':)431 b(goto)21 b(L7;)576 1043 y(case)g('1':)49 b Fl(:)7 b(:)g(:)20 b Fm(case)h('9':)115 b(goto)21 b(L8;)576 1093 y(case)g(':':)49 b Fl(:)7 b(:)g(:)20 b Fm(case)h('`':)115 b(goto)21 b(L11;)576 1143 y(case)g('a':)49 b Fl(:)7 b(:)g(:)20 b Fm(case)h('o':)115 b(goto)21 b(L6;)576 1193 y(case)g('p':)431 b(goto)21 b(L1;)576 1243 y(case)g('r':)49 b Fl(:)7 b(:)g(:)20 b Fm(case)h('z':)115 b(goto)21 b(L6;)577 1292 y(case)g(')p Fk(f)p Fm(':)49 b Fl(:)7 b(:)g(:)20 b Fm(case)h('\\377':)49 b(goto)21 b(L11;)467 1342 y Fk(g)672 1432 y Fr(Figure)14 b(8:)j Fm(switch)c Fr(for)g(state)i(0.)-42 1531 y Fm(switch)p Fr(.)i(If)d(there)h(are)f(only)f(a)h(few)g(subranges)h(a)e(linear)h (searc)o(h)h(is)f(generated;)g(otherwise,)h(a)e(binary)h(searc)o(h)h (is)f(used.)21 1581 y(Figure)f(9)f(and)g(Figure)h(10)f(sho)o(w)h (linear)f(and)h(binary)f(searc)o(hes,)i(resp)q(ectiv)o(ely)m(,)g(that)f (could)f(b)q(e)h(used)h(to)e(replace)52 b(the)607 1674 y Fm(if\(*YYCURSOR)19 b(<=)i('/'\))g(goto)g(L11;)607 1724 y(if\(*YYCURSOR)e(<=)i('0'\))g(goto)g(L7;)607 1773 y(if\(*YYCURSOR)e(<=)i('9'\))g(goto)g(L8;)607 1823 y(if\(*YYCURSOR)e (<=)i('`'\))g(goto)g(L11;)607 1873 y(if\(*YYCURSOR)e(==)i('p'\))g(goto) g(L1;)607 1923 y(if\(*YYCURSOR)e(<=)i('z'\))g(goto)g(L6;)607 1973 y(goto)g(L11;)477 2062 y Fr(Figure)14 b(9:)k(Linear)c(lo)q(okup)f (co)q(de)h(sequence)i(for)e(state)h(0.)p -42 2147 780 2 v 5 2173 a Fn(8)22 2185 y Fo(See)c(T)m(able)g(1)g(for)g(examples.)5 2213 y Fn(9)22 2225 y Fo(The)h(n)o(um)o(b)q(er)d(of)i(distinct)f (subranges)f(divided)g(b)o(y)i(the)g(total)f(n)o(um)o(b)q(er)g(of)h Fg(case)p Fo(s.)923 2748 y Fr(8)p eop %%Page: 9 9 9 8 bop 563 188 a Fm(if\(*YYCURSOR)19 b(<=)j('`'\))p Fk(f)650 238 y Fm(if\(*YYCURSOR)d(<=)j('/'\))f(goto)g(L11;)650 288 y(if\(*YYCURSOR)e(<=)j('0'\))f(goto)g(L7;)650 338 y(if\(*YYCURSOR)e(<=)j('9'\))f(goto)g(L8;)650 388 y(goto)g(L11;)563 438 y Fk(g)h Fm(else)f Fk(f)650 487 y Fm(if\(*YYCURSOR)e(==)j('p'\))f (goto)g(L1;)650 537 y(if\(*YYCURSOR)e(<=)j('z'\))f(goto)g(L6;)650 587 y(goto)g(L11;)563 637 y Fk(g)463 726 y Fr(Figure)14 b(10:)k(Binary)13 b(lo)q(okup)h(co)q(de)g(sequence)i(for)e(state)g(0.) -42 826 y Fm(switch)e Fr(in)g(Figure)h(8.)k(Note)d(in)e(particular)g (the)i(comparison)d(for)i(the)g(\\)p Fm(p)p Fr(")f(in)g(Figure)h(9.)k (This)c(optimization)d(eliminates)-42 876 y(a)k(comparison)f(eac)o(h)i (time)d(it)i(is)g(applied.)k(Also)c(note)h(that)f(no)g(comparisons)f (are)i(required)g(at)f(the)g(top)g(and)g(b)q(ottom)f(of)-42 925 y(the)i(range.)-42 1033 y Fh(Simplifyi)o(ng)j Fm(switch)p Fh(es)40 b Fr(As)19 b(a)f(general)g(rule,)i(b)q(etter)g(replacemen)o(t) e(co)q(de)h(can)g(b)q(e)g(generated)h(for)e(a)g Fm(switch)f Fr(if)h(it)-42 1083 y(con)o(tains)g(few)o(er)g(subranges.)31 b(One)18 b(w)o(a)o(y)f(of)g(reducing)h(the)g(n)o(um)o(b)q(er)f(of)g (subranges)i(in)e(a)g Fm(switch)p Fr(,)g(at)g(the)i(exp)q(ense)g(of)-42 1133 y(some)c(sp)q(eed,)j(is)d(to)h(lo)q(cate)g(a)f Fi(b)n(ase)h Fm(switch)f Fr(whic)o(h)g(is)h(v)o(ery)g(similar)d(and)j(then)g (replace)h(the)f(co)q(de)h(for)e(all)f(cases)k(whic)o(h)-42 1183 y(app)q(ear)d(iden)o(tically)d(in)i(the)g(base)h Fm(switch)d Fr(with)i(a)f Fm(goto)g Fr(to)h(\(the)h(co)q(de)f (generated)i(for\))d(the)i(base)f Fm(switch)p Fr(.)j(RE2C)c(uses)-42 1233 y(this)18 b(optimization)d(to)i(go)q(o)q(d)g(adv)n(an)o(tage)g (when)h(generating)g(co)q(de)g(in)f(the)h(transitions)g(of)f(states)i (used)f(for)f(matc)o(hing)-42 1282 y(k)o(eyw)o(ords.)i(F)m(or)12 b(example,)f(note)j(that)f(the)g Fm(switch)p Fr(es)f(for)h(states)h(1)f (through)g(4)f(di\013er)h(from)f(the)h Fm(switch)f Fr(of)g(state)i(6)e (only)-42 1332 y(on)i(\\)p Fm(r)p Fr(",)f(\\)p Fm(i)p Fr(",)g(\\)p Fm(n)p Fr(",)f(and)i(\\)p Fm(t)p Fr(",)f(resp)q(ectiv)o (ely)m(.)19 b(Figure)14 b(11)f(sho)o(ws)h(the)h(co)q(de)g(generated)g (for)e(these)j(states.)37 b(Another)15 b(w)o(a)o(y)560 1425 y Fm(L1:)49 b(++YYCURSOR;)560 1475 y(M1:)g(if\(*YYCURSOR)19 b(!=)j('r'\))f(goto)g(M6;)560 1525 y(L2:)49 b(++YYCURSOR;)560 1574 y(M2:)g(if\(*YYCURSOR)19 b(!=)j('i'\))f(goto)g(M6;)560 1624 y(L3:)49 b(++YYCURSOR;)560 1674 y(M3:)g(if\(*YYCURSOR)19 b(!=)j('n'\))f(goto)g(M6;)560 1724 y(L4:)49 b(++YYCURSOR;)560 1774 y(M4:)g(if\(*YYCURSOR)19 b(!=)j('t'\))f(goto)g(M6;)675 1824 y(goto)g(L5;)444 1913 y Fr(Figure)14 b(11:)j(Co)q(de)d(for)g (states)h(1{4)e(after)h(all)f(optimizations.)-42 2013 y(of)h(implemen)o(ting)d(this)j(optimization)e(is)i(to)g(construct)i(a) e(tunnel)g(automaton)f([9)o(])h(from)e(the)j(DF)-5 b(A,)14 b(and)g(then)h(generate)-42 2062 y(co)q(de)g(from)d(the)j(tunnel)f (automaton.)-42 2170 y Fh(Common)i(Sub)q(expression)d(Eliminatio)o(n)38 b Fr(Man)o(y)14 b(compilers)g(will)f(miss)g(the)i(fact)f(that)h Fm(*YYCURSOR)d Fr(in)i(Figures)h(9)-42 2220 y(and)e(10)f(should)h(b)q (e)g(loaded)f(in)o(to)g(a)h(register.)19 b(Most)13 b(can)f(b)q(e)i (coaxed)f(to)f(do)h(so)g(b)o(y)f(\014rst)i(assigning)e Fm(*YYCURSOR)e Fr(to)j(a)f(lo)q(cal)-42 2270 y(v)n(ariable.)-42 2407 y Fs(4)67 b(Exp)r(erimen)n(tal)25 b(Results)-42 2498 y Fr(T)m(able)16 b(1)h(compares)f(t)o(w)o(o)g(RE2C-generated)h(C)g (scanners)h(with)e(the)i(\(hand-co)q(ded\))f(lcc)g(scanner)h([5)o(])e (and)h(comparable)-42 2548 y(GLA-)f(and)g(\015ex-generated)i(scanners)f (on)f(a)g(v)n(ariet)o(y)g(of)f(platforms.)48 b(It)16 b(rep)q(orts)i(the)e(times)f(in)h(seconds)i(required)f(b)o(y)-42 2598 y(the)e(v)n(arious)e(scanners)i(to)e(scan)h(ab)q(out)g(170,000)e (lines)h(of)g(C)h(source.)19 b(The)14 b(5,607,820)d(b)o(yte)j(source)g (\014le)g(used)h(essen)o(tially)923 2748 y(9)p eop %%Page: 10 10 10 9 bop 707 452 a Fr(time)438 b(space)328 502 y(program)p 516 517 2 50 v 82 w(user)83 b(sys)76 b(total)p 975 517 V 82 w(text)j(data)d(bss)f(total)p 292 519 1284 2 v 860 554 a Fi(R4000)16 b(/)f(gc)n(c2.3.3)h(-O)p 292 570 V 317 605 a Fr(\015ex)e(-Cem)p 516 620 2 50 v 71 w(10.36)p 683 620 V 50 w(0.87)p 808 620 V 71 w(11.23)p 975 620 V 71 w(5200)p 1130 620 V 71 w(4192)p 1285 620 V 92 w(48)p 1420 620 V 72 w(9440)357 655 y(\015ex)h(-Cf)p 516 670 V 92 w(5.44)p 683 670 V 50 w(0.72)p 808 670 V 92 w(6.16)p 975 670 V 71 w(4688)p 1130 670 V 51 w(64384)p 1285 670 V 91 w(48)p 1420 670 V 51 w(69120)443 705 y(lcc)p 516 720 V 93 w(3.19)p 683 720 V 50 w(0.67)p 808 720 V 92 w(3.86)p 975 720 V 71 w(7328)p 1130 720 V 71 w(1216)p 1285 720 V 51 w(8256)p 1420 720 V 50 w(16800)438 754 y(gla)p 516 769 V 92 w(2.89)p 683 769 V 50 w(0.63)p 808 769 V 92 w(3.52)p 975 769 V 50 w(11552)p 1130 769 V 71 w(3056)p 1285 769 V 72 w(144)p 1420 769 V 50 w(14752)417 804 y(re2c)p 516 819 V 94 w(2.54)p 683 819 V 50 w(0.68)p 808 819 V 92 w(3.22)p 975 819 V 50 w(13264)p 1130 819 V 92 w(512)p 1285 819 V 113 w(0)p 1420 819 V 51 w(13776)373 854 y(re2c)g(-s)p 516 869 V 93 w(2.38)p 683 869 V 50 w(0.67)p 808 869 V 92 w(3.05)p 975 869 V 50 w(11056)p 1130 869 V 71 w(4528)p 1285 869 V 113 w(0)p 1420 869 V 51 w(15584)p 292 871 1284 2 v 737 906 a Fi(R4000)h(/)f(c)n(c2.11.2)g (-O)g(-Olimit)e(5000)p 292 922 V 317 957 a Fr(\015ex)h(-Cem)p 516 972 2 50 v 92 w(9.97)p 683 972 V 50 w(0.89)p 808 972 V 71 w(10.86)p 975 972 V 71 w(4704)p 1130 972 V 71 w(4240)p 1285 972 V 92 w(32)p 1420 972 V 72 w(8976)357 1007 y(\015ex)h(-Cf)p 516 1022 V 92 w(6.19)p 683 1022 V 50 w(0.72)p 808 1022 V 92 w(6.91)p 975 1022 V 71 w(4256)p 1130 1022 V 51 w(64432)p 1285 1022 V 91 w(32)p 1420 1022 V 51 w(68720)443 1057 y(lcc)p 516 1072 V 93 w(2.74)p 683 1072 V 50 w(0.72)p 808 1072 V 92 w(3.46)p 975 1072 V 71 w(9664)p 1130 1072 V 92 w(864)p 1285 1072 V 51 w(8256)p 1420 1072 V 50 w(18784)438 1106 y(gla)p 516 1121 V 92 w(2.46)p 683 1121 V 50 w(0.69)p 808 1121 V 92 w(3.15)p 975 1121 V 50 w(19232)p 1130 1121 V 71 w(2992)p 1285 1121 V 72 w(128)p 1420 1121 V 50 w(22352)417 1156 y(re2c)p 516 1171 V 94 w(2.97)p 683 1171 V 50 w(0.63)p 808 1171 V 92 w(3.60)p 975 1171 V 50 w(15088)p 1130 1171 V 92 w(528)p 1285 1171 V 113 w(0)p 1420 1171 V 51 w(15616)373 1206 y(re2c)g(-s)p 516 1221 V 93 w(2.94)p 683 1221 V 50 w(0.61)p 808 1221 V 92 w(3.55)p 975 1221 V 50 w(16080)p 1130 1221 V 51 w(11808)p 1285 1221 V 112 w(0)p 1420 1221 V 51 w(27888)p 292 1223 1284 2 v 849 1258 a Fi(SP)m(AR)o(C)g(/)g(gc)n (c2.3.3)g(-O)p 292 1274 V 317 1309 a Fr(\015ex)f(-Cem)p 516 1324 2 50 v 71 w(16.03)p 683 1324 V 50 w(2.78)p 808 1324 V 71 w(18.81)p 975 1324 V 71 w(8992)p 1130 1324 V 113 w(24)p 1285 1324 V 92 w(48)p 1420 1324 V 72 w(9064)357 1359 y(\015ex)h(-Cf)p 516 1374 V 92 w(7.84)p 683 1374 V 50 w(2.69)p 808 1374 V 71 w(10.53)p 975 1374 V 71 w(6560)p 1130 1374 V 51 w(62232)p 1285 1374 V 91 w(48)p 1420 1374 V 51 w(68840)443 1409 y(lcc)p 516 1424 V 93 w(4.46)p 683 1424 V 50 w(2.01)p 808 1424 V 92 w(6.47)p 975 1424 V 71 w(7800)p 1130 1424 V 92 w(384)p 1285 1424 V 51 w(8256)p 1420 1424 V 50 w(16440)438 1459 y(gla)p 516 1473 V 92 w(4.08)p 683 1473 V 50 w(1.56)p 808 1473 V 92 w(5.64)p 975 1473 V 50 w(10864)p 1130 1473 V 71 w(2168)p 1285 1473 V 72 w(136)p 1420 1473 V 50 w(13168)417 1508 y(re2c)p 516 1523 V 94 w(3.67)p 683 1523 V 50 w(1.76)p 808 1523 V 92 w(5.43)p 975 1523 V 50 w(13552)p 1130 1523 V 134 w(0)p 1285 1523 V 113 w(0)p 1420 1523 V 51 w(13552)373 1558 y(re2c)g(-s)p 516 1573 V 93 w(3.48)p 683 1573 V 50 w(1.70)p 808 1573 V 92 w(5.18)p 975 1573 V 50 w(15464)p 1130 1573 V 134 w(0)p 1285 1573 V 113 w(0)p 1420 1573 V 51 w(15464)p 292 1575 1284 2 v 880 1610 a Fi(i486)g(/)g(gc)n(c2.4.5)g (-O)p 292 1626 V 317 1661 a Fr(\015ex)f(-Cem)p 516 1676 2 50 v 71 w(21.86)p 683 1676 V 50 w(1.26)p 808 1676 V 71 w(23.12)p 975 1676 V 71 w(8536)p 1130 1676 V 113 w(20)p 1285 1676 V 92 w(24)p 1420 1676 V 72 w(8580)357 1711 y(\015ex)h(-Cf)p 516 1726 V 92 w(9.12)p 683 1726 V 50 w(1.18)p 808 1726 V 71 w(10.30)p 975 1726 V 71 w(6200)p 1130 1726 V 51 w(62228)p 1285 1726 V 91 w(24)p 1420 1726 V 51 w(68452)443 1761 y(lcc)p 516 1776 V 93 w(5.45)p 683 1776 V 50 w(1.22)p 808 1776 V 92 w(6.67)p 975 1776 V 71 w(5924)p 1130 1776 V 92 w(384)p 1285 1776 V 51 w(8240)p 1420 1776 V 50 w(14548)438 1811 y(gla)p 516 1825 V 92 w(5.11)p 683 1825 V 50 w(1.18)p 808 1825 V 92 w(6.29)p 975 1825 V 50 w(15496)p 1130 1825 V 71 w(2144)p 1285 1825 V 72 w(108)p 1420 1825 V 50 w(17748)417 1860 y(re2c)p 516 1875 V 94 w(4.73)p 683 1875 V 50 w(1.13)p 808 1875 V 92 w(5.86)p 975 1875 V 71 w(9800)p 1130 1875 V 134 w(0)p 1285 1875 V 113 w(0)p 1420 1875 V 72 w(9800)373 1910 y(re2c)g(-s)p 516 1925 V 93 w(4.85)p 683 1925 V 50 w(1.17)p 808 1925 V 92 w(6.02)p 975 1925 V 50 w(12968)p 1130 1925 V 134 w(0)p 1285 1925 V 113 w(0)p 1420 1925 V 51 w(12968)p 292 1927 1284 2 v 871 1962 a Fi(68020)h(/)f(gc)n(c1.40)h (-O)p 292 1978 V 317 2013 a Fr(\015ex)e(-Cem)p 516 2028 2 50 v 50 w(117.37)p 683 2028 V 50 w(5.89)p 808 2028 V 51 w(123.26)p 975 2028 V 70 w(7700)p 1130 2028 V 113 w(20)p 1285 2028 V 92 w(22)p 1420 2028 V 72 w(7742)357 2063 y(\015ex)h(-Cf)p 516 2078 V 71 w(50.93)p 683 2078 V 50 w(5.27)p 808 2078 V 71 w(56.20)p 975 2078 V 71 w(5388)p 1130 2078 V 51 w(62228)p 1285 2078 V 91 w(22)p 1420 2078 V 51 w(67638)443 2113 y(lcc)p 516 2128 V 72 w(33.28)p 683 2128 V 50 w(6.28)p 808 2128 V 71 w(39.56)p 975 2128 V 71 w(4956)p 1130 2128 V 92 w(384)p 1285 2128 V 51 w(8236)p 1420 2128 V 50 w(13576)438 2163 y(gla)p 516 2177 V 71 w(33.80)p 683 2177 V 50 w(4.20)p 808 2177 V 71 w(38.00)p 975 2177 V 50 w(13904)p 1130 2177 V 71 w(2144)p 1285 2177 V 72 w(106)p 1420 2177 V 50 w(16154)417 2212 y(re2c)p 516 2227 V 73 w(28.92)p 683 2227 V 50 w(2.91)p 808 2227 V 71 w(31.83)p 975 2227 V 71 w(8556)p 1130 2227 V 134 w(0)p 1285 2227 V 113 w(0)p 1420 2227 V 72 w(8556)373 2262 y(re2c)g(-s)p 516 2277 V 72 w(30.72)p 683 2277 V 50 w(3.19)p 808 2277 V 71 w(33.91)p 975 2277 V 71 w(9856)p 1130 2277 V 134 w(0)p 1285 2277 V 113 w(0)p 1420 2277 V 72 w(9856)513 2352 y(T)m(able)e(1:)18 b(Comparison)12 b(of)h(generated)j(C)d(scanners.)913 2748 y(10)p eop %%Page: 11 11 11 10 bop -42 195 a Fr(consists)15 b(of)d(10)h(copies)h(of)e(the)i (source)h(to)e(James)f(Clark's)h(SGML)f(parser,)i(sgmls)1263 180 y Fq(10)1297 195 y Fr(.)k(The)c(times)e(rep)q(orted)i(are)g(a)o(v)o (erages)-42 245 y(for)j(10)g(trials;)h(the)g(sizes)g(rep)q(orted)h (include)e(ev)o(erything)h(but)g(C)f(library)f(co)q(de)1251 230 y Fq(11)1287 245 y Fr(.)28 b(\015ex)18 b(pro)o(vides)f(a)g(n)o(um)o (b)q(er)g(of)g(table)-42 295 y(compression)e(options)g(including)f Fm(-Cem)g Fr(for)h(tables)g(optimized)f(for)h(space,)h(and)f Fm(-Cf)f Fr(for)h(tables)g(optimized)f(for)g(sp)q(eed.)-42 345 y(By)f(default,)e(RE2C)h(will)f(use)h(a)g(heuristic)h(to)f(decide)h (if)e(a)h Fm(switch)f Fr(should)h(b)q(e)g(replaced)h(with)f Fm(if)p Fr(s:)17 b(the)c Fm(-s)e Fr(option)h(forces)-42 394 y(RE2C)i(to)g(alw)o(a)o(ys)e(generate)k Fm(switch)p Fr(es.)21 444 y(T)m(o)21 b(mak)o(e)g(comparisons)g(more)g(meaningful,)h (all)e(seman)o(tic)i(pro)q(cessing)h(co)q(de)g(w)o(as)f(remo)o(v)o(ed)g (from)e(the)j(GLA-)-42 494 y(generated)d(and)f(lcc)f(scanners,)j(and)d (co)q(de)i(to)e(pro)o(vide)g(line)g(and)g(column)f(n)o(um)o(b)q(er)h (information)d(w)o(as)k(added)g(to)f(the)-42 544 y(RE2C)c(sp)q (eci\014cation.)19 b(The)14 b(remaining)e(di\013erences)k(of)d(note)h (b)q(et)o(w)o(een)i(the)e(scanners)i(include:)21 627 y Fk(\017)k Fr(The)15 b(\015ex-generated)g(scanners)h(do)d(not)h(pro)o (vide)g(line)f(or)h(column)e(n)o(um)o(b)q(er)i(information.)21 710 y Fk(\017)20 b Fr(The)15 b(GLA-generated)f(scanner)i(assumes)d (7-bit)h(input.)21 793 y(As)e(a)g(general)g(rule,)h(the)f (RE2C-generated)h(scanners)h(w)o(ere)f(the)f(fastest,)h(follo)o(w)o(ed) e(b)o(y)h(the)g(GLA-generated)h(scanner)-42 843 y(and)j(then)g(the)g (lcc)g(scanner.)24 b(The)15 b(\015ex-generated)i(scanners)h(w)o(ere)e (signi\014can)o(tly)e(slo)o(w)o(er.)23 b(Only)15 b(the)h (space-optimized)-42 892 y(\015ex)i(scanner)h(w)o(as)e(smaller)f(than)h (the)h(default)f(RE2C)g(scanner,)i(and)e(only)g(b)o(y)g(a)g(narro)o(w)g (margin.)26 b(There)19 b(are)e(some)-42 942 y(arc)o(hitectures,)j (notably)d(the)g(IBM)h(370,)f(on)g(whic)o(h)g(table)g(driv)o(en)g (scanners)i(will)d(probably)h(pro)q(duce)h(b)q(etter)h(results:)-42 992 y(IBM)c(370)e(compilers)g(t)o(ypically)f(generate)j(p)q(o)q(or)f (co)q(de)h(for)f(large)f(routines.)21 1042 y(The)22 b(v)n(arious)f (scanners)j(and)d(input)h(\014les)g(used)h(for)e(the)i(tests)g(are)f(a) o(v)n(ailable)e(for)h(anon)o(ymous)f(ftp)i(from)e Ff(csg.-)-42 1092 y(u)o(w)o(aterlo)q(o.ca)10 b Fr(in)f Ff(/pub/p)q (eter/re2c/sampler.ta)o(r.Z)p Fr(.)i(\015ex)f(is)f(a)o(v)n(ailable)e (for)i(anon)o(ymous)e(ftp)i(from)f Ff(ftp.uu.net)i Fr(as)f Ff(/pack)o(ages/-)-42 1142 y(gnu/\015ex-2.3.7.ta)o(r.Z)p Fr(,)14 b(GLA)h(is)g(a)o(v)n(ailable)e(for)i(anon)o(ymous)f(ftp)h(from) f Ff(ftp.cs.colo)o(rado.edu)i Fr(as)f(part)g(of)g(the)h(Eli)f(pac)o(k)n (age)-42 1191 y Ff(/pub/cs/distribs/eli/Eli3.4.2.ta)o(r.Z)p Fr(,)i(and)h(the)g(lcc)h(fron)o(t)e(end)i(is)f(a)o(v)n(ailable)e(for)h (anon)o(ymous)g(ftp)g(from)g Ff(p)o(rinceton.edu)-42 1241 y Fr(as)f Ff(/pub/lcc/lccfe-1.9.ta)o(r.Z)p Fr(.)g(An)f(alpha)g(v)o (ersion)g(of)g(RE2C)g(will)f(so)q(on)i(b)q(e)g(made)e(a)o(v)n(ailable)f (for)i(anon)o(ymous)f(ftp)h(from)-42 1291 y Ff(csg.u)o(w)o(aterlo)q (o.ca)g Fr(as)f Ff(/pub/p)q(eter/re2c/re2c-0.5.ta)o(r.Z)p Fr(.)-42 1428 y Fs(5)67 b(Related)23 b(W)-6 b(ork)-42 1519 y Fr(The)18 b(k)o(ey)g(to)f(the)h(p)q(erformance)f(and)g (\015exibilit)o(y)e(of)i(an)g(RE2C-generated)h(scanner)h(is)e(the)h (approac)o(h)f(used)h(to)f(deter-)-42 1569 y(mine)e(when)i(the)g (bu\013er)g(needs)g(\014lling.)23 b(In)o(terestingly)m(,)16 b(the)h(lcc)g(scanner)g([5)o(])f(uses)h(a)f(similar)e(approac)o(h)i (\(with)g(certain)-42 1619 y(concessions)g(to)e(k)o(eep)g(the)h(b)q(o)q (okk)o(eeping)e(manageable.\))-42 1735 y Fj(5.1)56 b(Comparison)18 b(With)g(GLA)-42 1812 y Fr(It)h(is)f(natural)f(to)h(compare)f(RE2C)h (to)g(GLA)f([7])g(as)h(it)g(also)f(generates)j(directly)f(executable)g (scanners.)32 b(RE2C)18 b(and)-42 1861 y(GLA)d(ha)o(v)o(e)g(man)o(y)e (di\013erences)k(simply)c(b)q(ecause)j(they)g(are)f(targeted)h(for)e (di\013eren)o(t)i(t)o(yp)q(es)g(of)e(users:)22 b(GLA)14 b(is)h(in)o(tended)-42 1911 y(for)g(p)q(eople)h(who)f(simply)e(wish)i (to)f(lev)o(erage)i(their)f(e\013orts)i(with)d(existing)h(to)q(ols)g (and)g(libraries;)g(RE2C)f(is)h(in)o(tended)h(for)-42 1961 y(p)q(eople)d(that)g(ha)o(v)o(e)f(more)g(sp)q(ecialized)h(needs)h (and)e(are)h(willing)d(to)j(pro)o(vide)f(their)h(o)o(wn)f(supp)q(ort)h (routines.)18 b(F)m(or)12 b(example,)-42 2011 y(GLA)h(pro)o(vides)h(a)f (go)q(o)q(d)f(bu\013ering)i(mec)o(hanism,)c(RE2C)j(users)i(m)o(ust)d (supply)h(their)h(o)o(wn.)j(These)d(di\013erences,)i(ho)o(w)o(ev)o(er,) -42 2061 y(are)f(not)f(unique)f(to)h(GLA)g(and)f(ha)o(v)o(e)h(b)q(een)h (addressed)h(for)d(the)i(most)e(part)h(in)f(previous)h(sections.)21 2111 y(Of)j(more)f(in)o(terest)i(is)f(the)h(di\013erences)i(in)c(the)i (co)q(de)g(that)f(RE2C)g(and)g(GLA)g(generate.)29 b(Scanners)18 b(generated)h(b)o(y)-42 2160 y(RE2C)14 b(and)g(GLA)f(di\013er)h (primarily)e(in)h(t)o(w)o(o)h(asp)q(ects:)19 b(ho)o(w)14 b(they)g(determine)g(when)h(the)f(bu\013er)h(needs)g(\014lling,)d(and)i (ho)o(w)-42 2210 y(they)h(generate)g(co)q(de)g(for)e Fm(switch)p Fr(es.)21 2260 y(GLA)d(uses)i(the)f(ASCI)q(I)g(NUL)f(c)o (haracter)i(as)f(the)g(sen)o(tinel)g(to)f(determine)h(when)g(the)g (bu\013er)g(needs)h(\014lling.)j(T)m(o)10 b(impro)o(v)o(e)-42 2310 y(the)j(sp)q(eed)h(and)e(reduce)i(the)f(size)g(of)e(the)i (generated)g(scanners)h(GLA)e(bu\013ers)i(only)d(complete)h(lines)g (and)g(restricts)i(tok)o(ens)-42 2360 y(to)d(those)g(that)f(do)g(not)g (con)o(tain)g(newline)g(\(ASCI)q(I)h(LF\))f(c)o(haracters)1013 2345 y Fq(12)1050 2360 y Fr(.)17 b(If)10 b(a)g(tok)o(en)g(with)g(an)g (em)o(b)q(edded)h(newline)f(c)o(haracter)-42 2409 y(\(suc)o(h)k(as)f(a) f(commen)o(t\))f(is)h(required)i(it)e(m)o(ust)f(b)q(e)j(recognized)g (with)e(an)g(auxiliary)f(scanner)j(written)f(in)f(C.)g(This)h(co)q(de)g (has)-42 2459 y(to)h(p)q(erform)f(the)i(bu\013ering-related)f(b)q(o)q (okk)o(eeping)g(that)g(is)g(done)g(automatically)d(b)o(y)i (GLA-generated)i(co)q(de.)p -42 2494 780 2 v -11 2521 a Fn(10)22 2532 y Fo(Av)n(ailable)10 b(for)h(anon)o(ymous)d(ftp)j(from) f Fe(ftp.uu.net)i Fo(as)f Fe(/pub/text-p)o(ro)q(cessing/sg)o(ml/sgmls-) o(1.1.)o(ta)o(r.Z)o Fo(.)-11 2560 y Fn(11)22 2572 y Fo(The)h (GLA-generated)c(scanner)i(sizes)h(also)f(do)h(not)g(include)f(the)g (size)h(of)g(an)g(error)g(rep)q(orting)e(mo)q(dule)g Fg(err.o)p Fo(.)-11 2600 y Fn(12)22 2612 y Fo(This)j(is)f(discussed)f (in)h(more)f(detail)g(in)h(Section)f(3.3.1.)913 2748 y Fr(11)p eop %%Page: 12 12 12 11 bop 21 195 a Fr(The)20 b(mec)o(hanism)e(RE2C)h(uses)i(to)f (re\014ll)g(the)g(bu\013er)h(eliminates)d(these)k(restrictions)f(and)e (y)o(et)i(allo)o(ws)d(RE2C)i(to)-42 245 y(generate)15 b(faster)f(and)g(smaller)e(scanners.)19 b(RE2C)13 b(also)g(allo)o(ws)g (b)q(oth)g(auxiliary)f(and)h(primary)f(scanners)j(to)f(b)q(e)g(sp)q (eci\014ed)-42 295 y(using)g(regular)g(expressions.)20 b(F)m(or)13 b(example,)f(App)q(endix)i(A)g(con)o(tains)g(an)g (auxiliary)e(scanner)j(for)f(commen)o(ts.)21 345 y(Lik)o(e)i(RE2C,)g (GLA)h(usually)f(replaces)i Fm(switch)p Fr(es)e(with)h Fm(if)p Fr(s.)27 b(Unlik)o(e)16 b(RE2C,)g(GLA)g(do)q(es)i(not)f(use)g (a)g Fm(case)p Fr(-based)-42 394 y(heuristic)f(to)f(decide)h(whic)o(h)f Fm(switch)p Fr(es)g(to)g(replace:)21 b(rather,)16 b(it)f(alw)o(a)o(ys)f (generates)j(a)e Fm(switch)e Fr(for)i(the)h(start)g(state)g(and)-42 444 y(uses)g Fm(if)p Fr(s)d(for)h(the)g(rest.)20 b(GLA)13 b(replaces)i Fm(switch)p Fr(es)f(with)f(co)q(de)i(sequences)h(of)e(the) g(form:)138 518 y Fm(if\(*YYCURSOR)20 b Fi(in)i Fl(S)505 524 y Fq(1)524 518 y Fm(\))f(goto)g(L)698 524 y Fq(1)717 518 y Fm(;)226 562 y(.)226 579 y(.)226 595 y(.)138 645 y(if\(*YYCURSOR)f Fi(in)i Fl(S)505 651 y Fd(n)528 645 y Fm(\))f(goto)g(L)702 651 y Fd(n)725 645 y Fm(;)-42 737 y Fr(Bit)12 b(v)o(ectors)h(are)f(used)h(for)e(all)f(mem)o(b)q (ership)g(tests)k(in)o(v)o(olving)9 b(sets)k(with)e(more)g(than)g(one)h (elemen)o(t.)17 b(As)12 b(an)g(optimization,)-42 787 y(if)k(a)f(state)i(has)f(a)g(transition)g(to)g(itself)f(the)i(test)g (as)f(to)g(whether)h(to)f(remain)f(in)g(the)i(same)e(state)i(or)f(not)g (is)g(p)q(erformed)-42 837 y(\014rst.)25 b(F)m(or)16 b(example,)e(Figure)i(12)f(sho)o(ws)i(the)f(GLA-generated)h(co)q(de)f (for)g(state)g(8)g(in)f(Figure)h(2)1506 822 y Fq(13)1541 837 y Fr(.)73 b(Note)16 b(the)g(use)h(of)291 926 y Fm(static)j (unsigned)g(char)h(yytable[])f(=)i Fk(f)291 976 y Fm(0x00,)e(0x00,)h (0x00,)g(0x00,)g(/*)65 b(0.)g(1.)g(2.)f(3.)22 b(*/)291 1025 y Fl(:)7 b(:)g(:)291 1075 y Fm(0x00,)20 b(0x00,)h(0x00,)g(0x00,)g (/*)43 b(,)g(-)h(.)f(/)22 b(*/)291 1125 y(0x01,)e(0x01,)h(0x01,)g (0x01,)g(/*)43 b(0)g(1)h(2)f(3)22 b(*/)291 1175 y(0x01,)e(0x01,)h (0x01,)g(0x01,)g(/*)43 b(4)g(5)h(6)f(7)22 b(*/)291 1225 y(0x01,)e(0x01,)h(0x00,)g(0x00,)g(/*)43 b(8)g(9)h(:)f(;)22 b(*/)291 1275 y(0x00,)e(0x00,)h(0x00,)g(0x00,)g(/*)43 b(<)g(=)h(>)f(?)22 b(*/)291 1324 y Fl(:)7 b(:)g(:)291 1374 y Fm(0x00,)20 b(0x00,)h(0x00,)g(0x00)g Fk(g)p Fm(;)g(/*)43 b(|)h Fk(g)108 b Fm(127.)21 b(*/)378 1419 y(.)378 1435 y(.)378 1452 y(.)291 1502 y(L8:)g(if\(yytable[\(*YYC)o(URSOR)o(++\)+0)o (])e(&)j(1<<0\))e(goto)h(L8;--YYCURSOR;)291 1552 y(goto)g(A3;)527 1631 y Fr(Figure)14 b(12:)j(GLA)d(co)q(de)h(for)e(state)i(8)e(in)h (Figure)g(2.)-42 1731 y(128)i(elemen)o(t)f(en)o(tries)i(for)e(the)i (bit)f(v)o(ectors)h(to)e(reduce)j(the)e(scanner)i(size:)k(A)16 b(GLA-generated)h(scanner)g(will)e(crash)h(or)-42 1781 y(otherwise)f(b)q(eha)o(v)o(e)g(unpredictably)f(if)f(a)h(non-ASCI)q(I)f (c)o(haracter)j(app)q(ears)e(in)g(the)g(source)1395 1766 y Fq(14)1432 1781 y Fr(.)21 1831 y(In)k(some)g(sense)j(the)e(results)h (of)e(Section)h(4)f(are)i(a)e(bit)g(misleading:)26 b(the)19 b(GLA)f(sp)q(eci\014cation)i(that)e(w)o(as)h(used)h(to)-42 1880 y(obtain)15 b(the)g(\014gures)h(in)e(T)m(able)g(1)h(is)g(not)f(a)h (t)o(ypical)f(GLA)g(sp)q(eci\014cation.)22 b(Usually)14 b(scanners)j(implem)o(en)o(ted)c(using)i(GLA)-42 1930 y(will)h(handle)i(k)o(eyw)o(ords)f(as)h(iden)o(ti\014ers)g(as)g(GLA)f (has)g(b)q(een)i(optimized)d(for)h(this)g([7)o(].)29 b(T)m(able)16 b(2)h(presen)o(ts)j(a)d(more)f(fair)-42 1980 y(comparison:)h(the)e(k)o(eyw)o(ord)f(matc)o(hing)e(rules)j(w)o (ere)g(remo)o(v)o(ed)e(from)f(b)q(oth)j(the)f(GLA)g(and)g(RE2C)f(sp)q (eci\014cations.)39 b(The)-42 2030 y(RE2C-generated)18 b(scanners)g(w)o(ere)f(still)e(faster)i(and)g(smaller)d(except)k(on)e (the)h(MIPS)g(R4000,)e(where)i(the)g(cc-compiled)-42 2080 y(GLA)d(scanner)h(w)o(as)f(sligh)o(tly)f(faster.)21 2130 y(Note)k(ho)o(w)o(ev)o(er,)g(that)g(the)g(RE2C)g(sp)q (eci\014cation)g(can)g(b)q(e)g(substan)o(tially)f(sp)q(ed)i(up)f(b)o(y) f(using)h(a)f(tec)o(hnique)i(akin)e(to)-42 2179 y(lo)q(op)e(unrolling.) i(Replacing)d(the)i(original)d(k)o(eyw)o(ord)h(matc)o(hing)f(rule)j(in) e(the)i(RE2C)e(sp)q(eci\014cation)1548 2164 y Fq(15)138 2252 y Fm(L)22 b(I*)435 b Fk(f)22 b Fm(RET\(ID\);)e Fk(g)-42 2345 y Fr(with)14 b(the)h(follo)o(wing)c(rules)p -42 2380 780 2 v -11 2407 a Fn(13)22 2419 y Fo(Actually)m(,)f(GLA)i(w)o (ould)f(generate)e(a)i Fg(while)f Fo(statemen)o(t.)j(Most)e(compilers)e (will)j(generate)d(the)i(same)f(ob)r(ject)g(co)q(de)g(for)h(b)q(oth.) -11 2446 y Fn(14)22 2458 y Fo(No)h(c)o(hec)o(ks)e(are)h(made)f(to)h (ensure)f(that)g(only)h(7-bit)f(c)o(haracters)f(app)q(ear)h(in)h(the)g (input.)-11 2486 y Fn(15)22 2498 y Fg(L)e Fo(=)i Fg([a-zA-Z)p 215 2498 11 2 v 10 w(])g Fo(and)g Fg(I)e Fo(=)i Fg([a-zA-Z)p 514 2498 V 10 w(0-9])n Fo(.)913 2748 y Fr(12)p eop %%Page: 13 13 13 12 bop 727 776 a Fr(time)387 b(space)380 826 y(program)p 557 841 2 50 v 61 w(user)72 b(sys)65 b(total)p 974 841 V 62 w(text)58 b(data)e(bss)64 b(total)p 355 842 1158 2 v 850 877 a Fi(R4000)16 b(/)f(gc)n(c2.3.3)g(-O)p 355 894 V 479 929 a Fr(gla)p 557 944 2 50 v 71 w(2.63)p 703 944 V 51 w(0.58)p 828 944 V 71 w(3.21)p 974 944 V 50 w(5040)p 1109 944 V 50 w(2496)p 1243 944 V 51 w(144)p 1357 944 V 71 w(7680)458 979 y(re2c)p 557 994 V 73 w(2.50)p 703 994 V 51 w(0.65)p 828 994 V 71 w(3.15)p 974 994 V 50 w(6448)p 1109 994 V 71 w(512)p 1243 994 V 92 w(0)p 1357 994 V 72 w(6960)414 1028 y(re2c)g(-s)p 557 1043 V 72 w(2.49)p 703 1043 V 51 w(0.67)p 828 1043 V 71 w(3.16)p 974 1043 V 50 w(4976)p 1109 1043 V 50 w(4224)p 1243 1043 V 92 w(0)p 1357 1043 V 72 w(9200)382 1078 y(re2c)g(-s)f Fk(y)p 557 1093 V 72 w Fr(2.08)p 703 1093 V 51 w(0.59)p 828 1093 V 71 w(2.67)p 974 1093 V 50 w(5792)p 1109 1093 V 50 w(4224)p 1243 1093 V 92 w(0)p 1357 1093 V 52 w(10016)p 355 1095 1158 2 v 726 1130 a Fi(R4000)i(/)f(c)n(c2.11.2)g(-O)g(-Olimit) e(5000)p 355 1146 V 479 1181 a Fr(gla)p 557 1196 2 50 v 71 w(2.43)p 703 1196 V 51 w(0.64)p 828 1196 V 71 w(3.07)p 974 1196 V 50 w(6512)p 1109 1196 V 50 w(2416)p 1243 1196 V 51 w(128)p 1357 1196 V 71 w(9056)458 1231 y(re2c)p 557 1246 V 73 w(2.93)p 703 1246 V 51 w(0.67)p 828 1246 V 71 w(3.60)p 974 1246 V 50 w(8048)p 1109 1246 V 71 w(528)p 1243 1246 V 92 w(0)p 1357 1246 V 72 w(8576)414 1281 y(re2c)i(-s)p 557 1296 V 72 w(3.04)p 703 1296 V 51 w(0.64)p 828 1296 V 71 w(3.68)p 974 1296 V 50 w(9952)p 1109 1296 V 50 w(2208)p 1243 1296 V 92 w(0)p 1357 1296 V 52 w(12160)p 355 1297 1158 2 v 838 1332 a Fi(SP)m(AR)o(C)g(/)g(gc)n(c2.3.3)g(-O)p 355 1349 V 479 1384 a Fr(gla)p 557 1399 2 50 v 71 w(4.08)p 703 1399 V 51 w(1.65)p 828 1399 V 71 w(5.73)p 974 1399 V 50 w(5472)p 1109 1399 V 50 w(1656)p 1243 1399 V 51 w(136)p 1357 1399 V 71 w(7264)458 1434 y(re2c)p 557 1449 V 73 w(3.77)p 703 1449 V 51 w(1.67)p 828 1449 V 71 w(5.44)p 974 1449 V 50 w(7008)p 1109 1449 V 113 w(0)p 1243 1449 V 92 w(0)p 1357 1449 V 72 w(7008)414 1483 y(re2c)g(-s)p 557 1498 V 72 w(3.66)p 703 1498 V 51 w(2.37)p 828 1498 V 71 w(6.03)p 974 1498 V 50 w(9112)p 1109 1498 V 113 w(0)p 1243 1498 V 92 w(0)p 1357 1498 V 72 w(9112)p 355 1500 1158 2 v 869 1535 a Fi(i486)g(/)g(gc)n(c2.4.5)g(-O)p 355 1551 V 479 1586 a Fr(gla)p 557 1601 2 50 v 71 w(5.04)p 703 1601 V 51 w(1.15)p 828 1601 V 71 w(6.19)p 974 1601 V 50 w(5368)p 1109 1601 V 50 w(1632)p 1243 1601 V 51 w(108)p 1357 1601 V 71 w(7108)458 1636 y(re2c)p 557 1651 V 73 w(4.75)p 703 1651 V 51 w(1.17)p 828 1651 V 71 w(5.92)p 974 1651 V 50 w(5448)p 1109 1651 V 113 w(0)p 1243 1651 V 92 w(0)p 1357 1651 V 72 w(5448)414 1686 y(re2c)g(-s)p 557 1701 V 72 w(5.06)p 703 1701 V 51 w(1.13)p 828 1701 V 71 w(6.19)p 974 1701 V 50 w(8248)p 1109 1701 V 113 w(0)p 1243 1701 V 92 w(0)p 1357 1701 V 72 w(8248)p 355 1703 1158 2 v 860 1737 a Fi(68020)h(/)f(gc)n(c1.40)h(-O)p 355 1754 V 479 1789 a Fr(gla)p 557 1804 2 50 v 51 w(32.69)p 703 1804 V 50 w(3.37)p 828 1804 V 50 w(36.06)p 974 1804 V 50 w(4772)p 1109 1804 V 50 w(1632)p 1243 1804 V 51 w(106)p 1357 1804 V 71 w(6510)458 1839 y(re2c)p 557 1854 V 53 w(29.86)p 703 1854 V 50 w(3.74)p 828 1854 V 50 w(33.60)p 974 1854 V 50 w(4468)p 1109 1854 V 113 w(0)p 1243 1854 V 92 w(0)p 1357 1854 V 72 w(4468)414 1889 y(re2c)f(-s)p 557 1904 V 52 w(28.77)p 703 1904 V 50 w(3.55)p 828 1904 V 50 w(32.32)p 974 1904 V 50 w(5616)p 1109 1904 V 113 w(0)p 1243 1904 V 92 w(0)p 1357 1904 V 72 w(5616)108 1978 y(T)m(able)i(2:)24 b(Scanner)18 b(p)q(erformance)f(with)g(k)o(eyw) o(ords)g(treated)h(as)f(iden)o(ti\014ers.)29 b Fk(y)17 b Fr(uses)h(an)f(\\unrolled")108 2028 y(sp)q(eci\014cation.)913 2748 y(13)p eop %%Page: 14 14 14 13 bop 138 185 a Fm(L)501 b Fk(f)22 b Fm(RET\(ID\);)e Fk(g)138 235 y Fm(L)i(I)457 b Fk(f)22 b Fm(RET\(ID\);)e Fk(g)138 284 y Fm(L)i(I)g(I)413 b Fk(f)22 b Fm(RET\(ID\);)e Fk(g)138 334 y Fm(L)i(I)g(I)f(I)370 b Fk(f)22 b Fm(RET\(ID\);)e Fk(g)138 384 y Fm(L)i(I)g(I)f(I)h(I)326 b Fk(f)22 b Fm(RET\(ID\);)e Fk(g)138 434 y Fm(L)i(I)g(I)f(I)h(I)f(I)283 b Fk(f)22 b Fm(RET\(ID\);)e Fk(g)138 484 y Fm(L)i(I)g(I)f(I)h(I)f(I)h(I)239 b Fk(f)22 b Fm(RET\(ID\);)e Fk(g)138 533 y Fm(L)i(I)g(I)f(I)h(I)f(I)h (I)f(I)196 b Fk(f)22 b Fm(RET\(ID\);)e Fk(g)138 583 y Fm(L)i(I*)435 b Fk(f)22 b Fm(RET\(ID\);)e Fk(g)-42 677 y Fr(reduces)f(the)e(n)o(um)o(b)q(er)f(of)g(end-of-bu\013er)h(c)o(hec)o (ks)h(and)e(results)i(in)e(a)g(signi\014can)o(t)g(sp)q(eed)i(impro)o(v) o(emen)o(t)13 b(o)o(v)o(er)k(the)g(GLA-)-42 726 y(generated)f(scanner.) -42 864 y Fs(6)67 b(Summary)24 b(and)f(F)-6 b(urther)25 b(W)-6 b(ork)-42 955 y Fr(This)16 b(pap)q(er)h(has)f(describ)q(ed)h (RE2C,)e(a)h(to)q(ol)f(for)g(creating)h(lexical)f(analyzers.)24 b(Unlik)o(e)16 b(other)g(suc)o(h)h(to)q(ols,)e(RE2C)g(con-)-42 1004 y(cen)o(trates)i(solely)d(on)g(generating)g(e\016cien)o(t)h(co)q (de)g(for)f(matc)o(hing)f(regular)h(expressions.)21 b(Not)14 b(only)g(do)q(es)h(this)g(singleness)-42 1054 y(of)h(purp)q(ose)i(mak)o (e)c(RE2C)i(more)g(suitable)g(for)g(a)g(wider)g(v)n(ariet)o(y)g(of)g (applications,)f(it)h(allo)o(ws)f(it)h(to)g(generate)i(scanners)-42 1104 y(whic)o(h)c(approac)o(h)g(hand-crafted)h(scanners)g(in)f(terms)g (of)f(size)i(and)e(sp)q(eed.)20 b(Compared)13 b(to)h(scanners)i (generated)f(b)o(y)f(\015ex,)-42 1154 y(and)g(GLA,)f(RE2C-generated)i (scanners)g(are)g(faster)f(and)g(in)f(man)o(y)f(cases)k(smaller)c(as)i (w)o(ell.)21 1204 y(While)g(RE2C-generated)h(scanners)h(p)q(erform)e(w) o(ell,)g(there)i(is)e(still)g(ro)q(om)f(for)h(impro)o(v)o(emen)o(t.)k (Near)d(term)f(impro)o(v)o(e-)-42 1254 y(men)o(ts)g(include)g(using)f (GLA's)h(bit)f(v)o(ectors)i(to)f(simplify)d(some)i Fm(switch)p Fr(es)h(and)f(adding)g(a)h(state)h(unrolling)d(op)q(erator.)21 1303 y(In)i(the)g(longer)g(term,)f(inline)g(actions)h(will)e(b)q(e)i (added)h(to)e(RE2C.)g(F)m(or)h(example,)e(a)h(sp)q(eci\014cation)i(lik) o(e)138 1386 y Fm(D)22 b Fk(f)p Fm(c)f(=)h($)p Fk(g)f Fm(\(D)h Fk(f)p Fm(c)f(=)h(10*c)e(+)i($)p Fk(g)p Fm(\)*)-42 1469 y Fr(migh)o(t)15 b(b)q(e)i(used)g(to)f(obtain)g(the)h(v)n(alue)f (of)g(a)g(previously)g(scanned)i(in)o(teger.)26 b(T)o(ypically)m(,)14 b(these)k(sorts)g(of)d(sp)q(eci\014cations)-42 1519 y(w)o(ould)f(b)q(e) g(used)h(as)f(an)f(action)h(in)f(some)g(other)i(sp)q(eci\014cation.)-42 1656 y Fs(7)67 b(Ac)n(kno)n(wledgmen)n(ts)-42 1747 y Fr(The)15 b(authors)f(thank)g(the)g(referees)j(for)c(their)h(man)o(y)e (v)n(aluable)h(commen)o(ts)f(and)i(suggestions.)913 2748 y(14)p eop %%Page: 15 15 15 14 bop -42 195 a Fs(A)68 b(C)22 b(Scanner)-42 276 y Fg(#define)16 b(BSIZE)192 b(8192)-42 315 y(#define)16 b(RET\(i\))174 b({s->cur)15 b(=)i(cursor;)e(return)h(i;})-42 394 y(#define)g(YYCTYPE)156 b(uchar)-42 433 y(#define)16 b(YYCURSOR)138 b(cursor)-42 473 y(#define)16 b(YYLIMIT)156 b(s->lim)-42 512 y(#define)16 b(YYMARKER)138 b(s->ptr)-42 552 y(#define)16 b(YYFILL\(n\))120 b({cursor)15 b(=)i(fill\(s,)e (cursor\);})-42 631 y(typedef)h(struct)f(Scanner)g({)29 670 y(int)299 b(fd;)29 709 y(uint)281 b(line;)29 749 y(uchar)263 b(*bot,)16 b(*tok,)g(*ptr,)f(*cur,)h(*pos,)g(*lim,)g(*top,) g(*eof;)-42 788 y(})i(Scanner;)-42 867 y(uchar)e(*fill\(Scann)o(er)e (*s,)j(uchar)f(*cursor\){)29 907 y(if\(!s->eof)o(\){)100 946 y(uint)g(cnt)g(=)i(s->tok)d(-)i(s->bot;)100 985 y(if\(cnt\){)d(/*)j (move)g(partial)e(token)h(to)g(bottom)g(*/)170 1025 y(memcpy\(s->b)o (ot,)e(s->tok,)h(s->lim)g(-)j(s->tok\);)d(s->tok)g(=)i(s->bot;)170 1064 y(s->ptr)f(-=)h(cnt;)f(cursor)f(-=)i(cnt;)f(s->pos)g(-=)h(cnt;)f (s->lim)g(-=)h(cnt;)100 1104 y(})100 1143 y(if\(\(s->to)o(p)e(-)i (s->lim\))e(<)i(BSIZE\){)f(/*)g(buffer)g(needs)g(to)h(be)g(expanded)d (*/)170 1183 y(uchar)i(*buf)g(=)i(\(uchar*\))c(malloc\(\(\(s-)o(>li)o (m)h(-)i(s->bot\))e(+)i(BSIZE\)*size)o(of\()o(uch)o(ar\))o(\);)170 1222 y(memcpy\(buf,)d(s->tok,)h(s->lim)h(-)h(s->tok\);)e(s->tok)g(=)i (buf;)170 1262 y(s->ptr)f(=)h(&buf[s->pt)o(r)e(-)i(s->bot];)e(cursor)g (=)j(&buf[curs)o(or)c(-)k(s->bot];)170 1301 y(s->pos)e(=)h(&buf[s->po)o (s)e(-)i(s->bot];)e(s->lim)g(=)j(&buf[s->l)o(im)c(-)k(s->bot];)170 1340 y(s->top)e(=)h(&s->lim[BS)o(IZE)o(];)170 1380 y(free\(s->bot)o (\);)d(s->bot)i(=)h(buf;)100 1419 y(})100 1459 y(if\(\(cnt)e(=)i (read\(s->fd)o(,)e(\(char*\))g(s->lim,)g(BSIZE\)\))g(!=)i(BSIZE\){)e (/*)i(EOF)g(*/)170 1498 y(s->eof)f(=)h(&s->lim[cn)o(t];)d(*\(s->eof\)+) o(+)h(=)i('\\n';)100 1538 y(})100 1577 y(s->lim)e(+=)i(cnt;)29 1616 y(})29 1656 y(return)f(cursor;)-42 1695 y(})-42 1774 y(int)h(scan\(Scann)o(er)d(*s\){)100 1814 y(uchar)h(*cursor)h(=)h (s->cur;)-42 1853 y(std:)70 b(s->tok)15 b(=)i(cursor;)-42 1892 y(/*!re2c)100 1932 y("/*")157 b({)17 b(goto)f(comment;)f(})-42 2013 y Fc(:)6 b(:)g(:)11 b Fb(mor)n(e)j(rules)e Fc(:)6 b(:)g(:)100 2086 y Fg([)17 b(\\t\\v\\f]+)50 b({)17 b(goto)f(std;)h(}) 100 2125 y("\\n")157 b({)17 b(if\(cursor)e(==)i(s->eof\))e(RET\(EOI\);) f(s->pos)i(=)h(cursor;)e(s->line++;)364 2164 y(goto)h(std;)h(})100 2204 y([\\000-\\37)o(7])32 b({)17 b(printf\("une)o(xpe)o(cte)o(d)d (character:)h('\045c'\\n",)f(*s->tok\);)364 2243 y(goto)i(std;)h(})-42 2283 y(*/)-42 2322 y(comment:)-42 2362 y(/*!re2c)100 2401 y("*/")157 b({)17 b(goto)f(std;)h(})100 2440 y("\\n")157 b({)17 b(if\(cursor)e(==)i(s->eof\))e(RET\(EOI\);)f(s->tok)i(=)h (s->pos)e(=)j(cursor;)d(s->line++;)364 2480 y(goto)h(comment;)f(})100 2519 y([\\000-\\37)o(7])32 b({)17 b(goto)f(comment;)f(})-42 2559 y(*/)-42 2598 y(})913 2748 y Fr(15)p eop %%Page: 16 16 16 15 bop -42 195 a Fs(References)-21 286 y Fr([1])20 b Fa(Aho,)d(A.)g(V.,)f(Sethi,)h(R.,)h(and)f(Ullman,)h(J.)e(D.)21 b Fi(Compilers:)e(principles,)c(te)n(chniques,)h(and)g(to)n(ols)p Fr(.)k(Addison-)44 336 y(W)m(esley)m(,)13 b(1988.)k(Reprin)o(ted)d (with)f(corrections.)-21 419 y([2])20 b Fa(Bernstein,)c(R.)f(L.)k Fr(Pro)q(ducing)13 b(go)q(o)q(d)g(co)q(de)i(for)e(the)h(case)g (statemen)o(t.)j Fi(Softwar)n(e{Pr)n(actic)n(e)d(and)h(Exp)n(erienc)n (e)g(15)p Fr(,)44 469 y(10)e(\(Octob)q(er)j(1985\),)c(1021{1024.)-21 552 y([3])20 b Fa(DeRemer,)e(F.,)f(and)g(Pennello,)i(T.)h Fr(E\016cien)o(t)15 b(computation)e(of)h Fl(LALR)p Fr(\(1\))h(lo)q (ok-ahead)f(sets.)21 b Fi(A)o(CM)15 b(T)m(r)n(ans-)44 602 y(actions)g(on)g(Pr)n(o)n(gr)n(amming)g(L)n(anguages)h(and)f (Systems)g(4)p Fr(,)f(4)g(\(Octob)q(er)h(1982\),)e(615{649.)-21 685 y([4])20 b Fa(Ellis,)c(M.,)g(and)g(Str)o(oustr)o(up,)h(B.)i Fi(The)c(A)o(nnotate)n(d)h(C++)e(R)n(efer)n(enc)n(e)h(Manual)p Fr(.)j(Addison-W)m(esley)m(,)13 b(1990.)-21 768 y([5])20 b Fa(Fraser,)c(C.)f(W.,)h(and)g(Hanson,)h(D.)f(R.)i Fr(A)c (retargetable)g(compiler)e(for)h(ANSI)h(C.)j Fi(SIGPLAN)e(Notic)n(es)f (26)p Fr(,)g(10)44 817 y(\(Octob)q(er)h(1991\),)e(29{43.)-21 900 y([6])20 b Fa(Garey,)g(M.)d(R.,)i(and)g(Johnson,)h(D.)e(S.)25 b Fi(Computers)16 b(and)h(Intr)n(actability:)k(A)c(Guide)g(to)f(the)h (The)n(ory)f(of)h(NP-)44 950 y(Completeness)p Fr(.)h(W.)13 b(H.)g(F)m(reeman)g(and)h(Compan)o(y)m(,)d(1991.)-21 1033 y([7])20 b Fa(Gra)m(y,)14 b(R.)e(W.)g Fl(\015)r Fr(-GLA)e(-)g(A)g(generator)g(for)g(lexical)f(analyzers)h(that)g (programmers)e(can)i(use.)i Fi(USENIX)g(Confer)n(enc)n(e)44 1083 y(Pr)n(o)n(c)n(e)n(e)n(dings)17 b Fr(\(June)e(1988\),)d(147{160.) -21 1166 y([8])20 b Fa(Gra)m(y,)c(R.)f(W.,)g(Heuring,)g(V.)f(P.,)h (Levi,)h(S.)f(P.,)g(Slo)o(ane,)i(A.)d(M.,)h(and)g(W)-5 b(aite,)15 b(W.)g(M.)h Fr(Eli:)h(A)c(complete,)44 1216 y(\015exible)h(compiler)e(construction)j(system.)j Fi(Communic)n (ations)d(of)g(the)g(A)o(CM)f(35)p Fr(,)g(2)g(\(F)m(ebruary)g(1992\),)f (121{131.)-21 1299 y([9])20 b Fa(Gr)o(osch,)e(J.)i Fr(E\016cien)o(t)15 b(generation)g(of)f(lexical)f(analysers.)21 b Fi(Softwar)n(e{Pr)n (actic)n(e)15 b(and)h(Exp)n(erienc)n(e)g(19)p Fr(,)f(11)f(\(1989\),)44 1349 y(1089{1103.)-42 1432 y([10])20 b Fa(Harrison,)c(M.)g(A.)j Fi(Intr)n(o)n(duction)c(to)g(F)m(ormal)f(L)n(anguage)i(The)n(ory)p Fr(.)i(Addison-W)m(esley)m(,)13 b(1978.)-42 1515 y([11])20 b Fa(Hennessy,)15 b(J.)e(L.,)i(and)f(Mendelsohn,)i(N.)f Fr(Compilation)8 b(of)j(the)h(Pascal)g(case)g(statemen)o(t.)i Fi(Softwar)n(e{Pr)n(actic)n(e)44 1565 y(and)h(Exp)n(erienc)n(e)h(12)p Fr(,)d(9)h(\(Septem)o(b)q(er)h(1982\),)d(879{882.)-42 1648 y([12])20 b Fa(Horspool,)c(R.)g(N.,)f(and)g(Whitney,)h(M.)h Fr(Ev)o(en)d(faster)g(LR)e(parsing.)k Fi(Softwar)n(e{Pr)n(actic)n(e)d (and)i(Exp)n(erienc)n(e)g(20)p Fr(,)44 1697 y(6)e(\(1990\),)g(515{535.) -42 1780 y([13])20 b Fa(Ja)o(cobson,)d(V.)i Fr(T)m(uning)14 b(UNIX)g(Lex)h(or)f(it's)f(NOT)i(true)g(what)f(they)h(sa)o(y)f(ab)q (out)g(Lex.)19 b(In)14 b Fi(USENIX)i(Confer)n(enc)n(e)44 1830 y(Pr)n(o)n(c)n(e)n(e)n(dings)h Fr(\(W)m(ashington,)12 b(DC,)h(Win)o(ter)h(1987\),)f(pp.)g(163{164.)j(Abstract)f(only)m(.)-42 1913 y([14])20 b Fa(Kernighan,)h(B.)e(W.,)h(and)g(Ritchie,)f(D.)h(M.)28 b Fi(The)18 b(C)f(Pr)n(o)n(gr)n(amming)g(L)n(anguage,)i(2nd)g(Ed.)28 b Fr(Pren)o(tice-Hall,)44 1963 y(Inc.,)13 b(1988.)-42 2046 y([15])20 b Fa(Lesk,)25 b(M.)e(E.)38 b Fr(LEX)20 b({)g(a)g(lexical)g(analyzer)g(generator.)38 b(Computing)18 b(Science)k(T)m(ec)o(hnical)e(Rep)q(ort)h(39,)g(Bell)44 2096 y(T)m(elephone)14 b(Lab)q(oratories,)g(Murra)o(y)g(Hill,)e(NJ,)h (1975.)-42 2179 y([16])20 b Fa(P)l(axson,)e(V.)h Fr(\015ex)14 b({)g(man)e(pages,)i(1988.)j(In)d Ff(\015ex-2.3.7.ta)o(r.Z)p Fr(.)e(Av)n(ailable)g(for)i(anon)o(ymous)e(ftp)i(from)e Ff(ftp.uu.net)j Fr(in)44 2229 y Ff(/pack)o(ages/gnu)p Fr(.)-42 2312 y([17])20 b Fa(Pennello,)k(T.)d(J.)33 b Fr(V)m(ery)19 b(fast)g(LR)f(parsing.)33 b(In)19 b Fi(Pr)n(o)n(c)n(e)n (e)n(dings)g(of)g(the)h(A)o(CM)f(SIGPLAN'86)h(Symp)n(osium)g(on)44 2362 y(Compiler)14 b(Construction)j Fr(\(July)c(1986\),)g(A)o(CM.)-42 2445 y([18])20 b Fa(Sale,)g(A.)25 b Fr(The)17 b(implemen)o(tatio)o(n)c (of)j(case)h(statemen)o(ts)g(in)e(Pascal.)25 b Fi(Softwar)n(e{Pr)n (actic)n(e)16 b(and)i(Exp)n(erienc)n(e)f(11)p Fr(,)g(9)44 2494 y(\(Septem)o(b)q(er)d(1981\),)f(929{942.)913 2748 y(16)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF re2c-1.0.1/test-driver0000755000175000017500000001104113143420402011451 00000000000000#! /bin/sh # test-driver - basic testsuite driver script. scriptversion=2016-01-11.22; # UTC # Copyright (C) 2011-2017 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . # Make unconditional expansion of undefined variables an error. This # helps a lot in preventing typo-related bugs. set -u usage_error () { echo "$0: $*" >&2 print_usage >&2 exit 2 } print_usage () { cat <$log_file 2>&1 estatus=$? if test $enable_hard_errors = no && test $estatus -eq 99; then tweaked_estatus=1 else tweaked_estatus=$estatus fi case $tweaked_estatus:$expect_failure in 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; 0:*) col=$grn res=PASS recheck=no gcopy=no;; 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; *:*) col=$red res=FAIL recheck=yes gcopy=yes;; esac # Report the test outcome and exit status in the logs, so that one can # know whether the test passed or failed simply by looking at the '.log' # file, without the need of also peaking into the corresponding '.trs' # file (automake bug#11814). echo "$res $test_name (exit status: $estatus)" >>$log_file # Report outcome to console. echo "${col}${res}${std}: $test_name" # Register the test result, and other relevant metadata. echo ":test-result: $res" > $trs_file echo ":global-test-result: $res" >> $trs_file echo ":recheck: $recheck" >> $trs_file echo ":copy-in-global-log: $gcopy" >> $trs_file # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: re2c-1.0.1/compile0000755000175000017500000001632613143420402010644 00000000000000#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2016-01-11.22; # UTC # Copyright (C) 1999-2017 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: re2c-1.0.1/README0000644000175000017500000001303713063315631010152 00000000000000re2c -------------------------------------------------------------------------------- DESCRIPTION -------------------------------------------------------------------------------- re2c is a tool for generating C-based recognizers from regular expressions. re2c-based scanners are efficient: for programming languages, given similar specifications, a re2c-based scanner is typically almost twice as fast as a flex-based scanner with little or no increase in size (possibly a decrease on cisc architectures). Indeed, re2c-based scanners are quite competitive with hand-crafted ones. Unlike flex, re2c does not generate complete scanners: the user must supply some interface code. While this code is not bulky (about 50-100 lines for a flex-like scanner; see the man page and examples in the distribution) careful coding is required for efficiency (and correctness). One advantage of this arrangement is that the generated code is not tied to any particular input model. -------------------------------------------------------------------------------- DOWNLOAD -------------------------------------------------------------------------------- The re2c distribution can be found at: https://sourceforge.net/projects/re2c/ Download the latest tarball: https://sourceforge.net/projects/re2c/files/latest/download Clone git repo: git clone git://git.code.sf.net/p/re2c/code-git -------------------------------------------------------------------------------- BUILD -------------------------------------------------------------------------------- Contents: 1. simple build 2. bootstrap 3. out-of-source build 4. testing 5. rebuild documentation 6. build for windows with mingw 7. build from git 1. Simplest possible build: $ ./configure [--prefix=] $ make $ make install This will build re2c and install it (binary and man page) to (defaults to /usr/local). 2. Bootstrap and rebuild: $ ./configure [--prefix=] $ make bootstrap $ make install Usual bootstrap procedure: re2c uses re2c to compile its lexer. 1. build lexer (if make finds re2c binary in build directory, it will build lexer from source, otherwize it will use prebuilt lexer) 2. build re2c 3. build lexer from source using re2c binary in build directory 4. rebuild re2c 3. Out-of-source build: $ mkdir $ cd $ /configure [--prefix=] $ make $ make install 4. Testing: $ make check This will redirect test script output to file. If you want to see progress: $ make tests Testing under valgrind (takes a long time): $ make vtests 5. Rebuild documentation (requires rst2man.py): $ ./configure --enable-docs [--prefix=] $ make docs $ make install 6. Build for windows using mingw: $ ../configure --host i686-w64-mingw32 [--prefix=] $ make This will result into an executable re2c.exe, which can be tested with wine: $ make wtests 7. If you want to build from git, you'll first need to generate autotools files: $ ./autogen.sh -------------------------------------------------------------------------------- INFO -------------------------------------------------------------------------------- $ man re2c re2c home page: re2c.org re2c manual: re2c.org/manual.html Ulya Trofimovich's blog on re2c: skvadrik.github.io/aleph_null/re2c.html Original paper on re2c: "RE2C: a More Versatile Parser Generator" (1994, Peter Bumbulis and Donald D. Cowan). Examples can be found in 'examples' directory. -------------------------------------------------------------------------------- MAILING LISTS -------------------------------------------------------------------------------- re2c-general: re2c-general@lists.sourceforge.net re2c-devel: re2c-devel@lists.sourceforge.net You are welcome to ask for help or share your thoughts and ideas about re2c :) -------------------------------------------------------------------------------- BUGS -------------------------------------------------------------------------------- Please report any bugs and send feature requests to: https://sourceforge.net/p/re2c/_list/tickets -------------------------------------------------------------------------------- AUTHORS -------------------------------------------------------------------------------- Originally written by Peter Bumbulis (peter@csg.uwaterloo.ca) Currently maintained by: Ulya Trofimovich Dan Nuffer Marcus Boerger Hartmut Kaiser -------------------------------------------------------------------------------- LICENSE -------------------------------------------------------------------------------- re2c is distributed with no warranty whatever. The code is certain to contain errors. Neither the author nor any contributor takes responsibility for any consequences of its use. re2c is in the public domain. The data structures and algorithms used in re2c are all either taken from documents available to the general public or are inventions of the authors. Programs generated by re2c may be distributed freely. re2c itself may be distributed freely, in source or binary, unchanged or modified. Distributors may charge whatever fees they can obtain for re2c. If you do make use of re2c, or incorporate it into a larger project an acknowledgement somewhere (documentation, research report, etc.) would be appreciated. -------------------------------------------------------------------------------- re2c-1.0.1/autogen.sh0000755000175000017500000000005713063315631011271 00000000000000#!/bin/sh git clean -fXd autoreconf -i -W all re2c-1.0.1/CHANGELOG0000644000175000017500000004531113143331501010475 00000000000000Version 1.0 (2017-08-11) ------------------------ - Added options: '-P --posix-captures' (POSIX-compliant capturing groups) '-T --tags' (standalone tags with leftmost greedy disambiguation) '--no-lookahead' '--no-optimize-tags' '--eager-skip' '--dump-nfa' '--dump-dfa-raw' '--dump-dfa-det' '--dump-dfa-tagopt' '--dump-dfa-min' '--dump-adfa' - Added new syntax: '@' '#' - Added new directives: '/*!stags:re2c ... */' '/*!mtags:re2c ... */' '/*!maxnmatch:re2c ... */' - Added new API: 'YYSTAGN (t)' 'YYSTAGP (t)' 'YYMTAGN (t)' 'YYMTAGP (t)' 'YYRESTORETAG (t)' 'YYMAXNMATCH' 'yynmatch' 'yypmatch' - Added inplace confgurations: 're2c:define:YYSTAGN' 're2c:define:YYSTAGP' 're2c:define:YYMTAGN' 're2c:define:YYMTAGP' 're2c:define:YYRESTORETAG' 're2c:flags:8' or 're2c:flags:utf-8'' 're2c:flags:b' or 're2c:flags:bit-vectors' 're2c:flags:case-insensitive' 're2c:flags:case-inverted' 're2c:flags:d' or 're2c:flags:debug-output' 're2c:flags:dfa-minimization' 're2c:flags:eager-skip' 're2c:flags:e' or 're2c:flags:ecb' 're2c:flags:empty-class' 're2c:flags:encoding-policy' 're2c:flags:g' or 're2c:flags:computed-gotos' 're2c:flags:i' or 're2c:flags:no-debug-info' 're2c:flags:input' 're2c:flags:lookahead' 're2c:flags:optimize-tags' 're2c:flags:P' or 're2c:flags:posix-captures' 're2c:flags:s' or 're2c:flags:nested-ifs' 're2c:flags:T' or 're2c:flags:tags' 're2c:flags:u' or 're2c:flags:unicode' 're2c:flags:w' or 're2c:flags:wide-chars' 're2c:flags:x' or 're2c:flags:utf-16' 're2c:tags:expression' 're2c:tags:prefix' - Added warning '-Wnondeterministic-tags' - Added fuzz-testing scripts - Added paper "Tagged Deterministic Finite Automata with Lookahead" - Fixed bugs: #121 "trailing contexts are fundamentally broken" #135 "In installation 'make check' give syntax error" #137 "run_tests.sh fail when running configure script with absolute path" #138 "website improvement" #141 "Tests under Windows" #142 "segvault with null terminated input" #145 "Values for enum YYCONDTYPE are not generated when default rules with conditions are used" #147 "Please add symbol name to "can't find symbol" error message" #152 "Line number in #line directive after enum YYCONDTYPE is 0-based" #156 "Build with Visual Studio 14 2015: symbol name conflict" #158 "Inconsistent forward declaration of struct/class vs definition" #160 "Open text files with "wb" causes issues on Windows" #162 "Reading files with "rb" causes issues in Windows" #165 "Trailing context consumed if initial expression matches it" #176 "re2c help message is too wide for most terminals" #184 "Small documentation issue" #186 "Difference operator sometimes doesn't work with utf-8" - Merged pull requests: #131 "Use bash-specific '[[' builtin" #136 "Added basic support for travis-ci.org integration" #171 "Typo fix" #172 "Grammar fixes in the docs" #173 "Grammar fixes in the manpage" #174 "more documentation fixes" #175 "more manpage fixes" #177 "sync --help output w/ manpage" #178 "Moves rts used in the manpage to master" #179 "compose manpage out of rsts from gh-pages-gen" #189 "Typo fix and small grammatical change" #191 "Makefile.am: create target directory before writing into it" Version 0.16 (2016-01-21) ------------------------- - Fixed bug #127 "code generation error with wide chars and bitmaps (omitted 'goto' statement)" - Added DFA minimization and option '--dfa-minimization
' - Fixed bug #128 "very slow DFA construction (resulting in a very large DFA)" - Fixed bug #132 "test failure on big endian archs with 0.15.3" Version 0.15.3 (2015-12-02) --------------------------- - Fixed bugs and applied patches: #122 "clang does not compile re2c 0.15.x" (reported and fixed by Oleksii Taran). #124 "Get rid of UINT32_MAX and friends" (patch by Sergei Trofimovich, fixes FreeBSD builds). #125 "[OS X] git reports changes not staged for commit in newly cloned repository" (by Oleksii Taran, this fix also applies to Windows). - Added option --no-version that allows to omit version information. - Reduced memory and time consumed with -Wundefined-control-flow. - Improved coverage of input data generated with -S --skeleton. Version 0.15.2 (2015-11-23) --------------------------- - Fixed build system: lexer depends on bison-generated parser (Gentoo bug: https://bugs.gentoo.org/show_bug.cgi?id=566620) Version 0.15.1 (2015-11-22) --------------------------- - Fixed test failures caused by locale-sensitive 'sort'. Version 0.15 (2015-11-22) ------------------------- - Updated website http://re2c.org: added examples updated docs added news added web feed (Atom 1.0) - Added options: -S, --skeleton --empty-class - Added warnings: -W -Werror -W -Wno- -Werror- -Wno-error- - Added individual warnings: -Wundefined-control-flow -Wunreachable-rules -Wcondition-order -Wuseless-escape -Wempty-character-class -Wswapped-range -Wmatch-empty-string - Fixed options: -- (interpret remaining arguments as non-options) - Deprecated options: -1 --single-pass (single pass is by default now) - Reduced size of the generated .dot files. - Fixed bugs: #27 re2c crashes reading files containing %{ %} (patch by Rui) #51 default rule doesn't work in reuse mode #52 eliminate multiple passes #59 bogus yyaccept in -c mode #60 redundant use of YYMARKER #61 empty character class [] matches empty string #115 flex-style named definitions cause ambiguity in re2c grammar #119 -f with -b/-g generates incorrect dispatch on fill labels #116 empty string with non-empty trailing context consumes code units - Added test options: -j, -j (run tests in N threads, defaults to the number of CPUs) --wine (test windows builds using wine) --skeleton (generate skeleton programs, compile and execute them) --keep-tmp-files (don't delete intermediate files for successful tests) - Updated build system: support out of source builds support `make distcheck` added `make bootstrap` (rebuild re2c after building with precomplied .re files) added `make tests` (run tests with -j) added `make vtests` (run tests with --valgrind -j) added `make wtests` (run tests with --wine -j 1) added Autoconf tests for CXXFLAGS. By default try the following options: -W -Wall -Wextra -Weffc++ -pedantic -Wformat=2 -Wredundant-decls -Wsuggest-attribute=format -Wconversion -Wsign-conversion -O2 -Weverything), respect user-defined CXXFLAGS support Mingw builds: `configure -host i686-w64-mingw32` structured source files removed old MSVC files - Moved development to github (https://github.com/skvadrik/re2c), keep a mirror on sourceforge. Version 0.14.3 (2015-05-20) ----------------------------- - applied patch '#27 re2c crashes reading files containing %{ %}' by Rui - dropped distfiles for MSVC (they are broken anyway) Version 0.14.2 (2015-03-25) ----------------------------- - fixed #57 Wrong result only if another rule is present Version 0.14.1 (2015-02-27) ----------------------------- - fixed #55 re2c-0.14: re2c -V outputs null byte Version 0.14 (2015-02-23) ----------------------------- - Added generic input API 21 (#21 Support to configure how re2c code interfaced with the symbol buffer?) - fixed #46 re2c generates an infinite loop, depends on existence of previous parser - fixed #47 Dot output label escaped characters Version 0.13.7.5 (2014-08-22) ----------------------------- - Fixed Gentoo bug: https://bugs.gentoo.org/show_bug.cgi?id=518904 (PHP lexer) Version 0.13.7.4 (2014-07-29) ----------------------------- - Enabled 'make docs' only if configured with '--enable-docs' - Disallowed to use yacc/byacc instead of bison to build parser - Removed non-portable sed feature in script that runs tests Version 0.13.7.3 (2014-07-28) ----------------------------- - Fixed CXX warning - Got rid of asciidoc build-time dependency Version 0.13.7.2 (2014-07-27) ----------------------------- - Included man page into dist, respect users CXXFLAGS. Version 0.13.7.1 (2014-07-26) ----------------------------- - Added missing files to tarball Version 0.13.7 (2014-07-25) --------------------------- - Added UTF-8 support - Added UTF-16 support - Added default rule - Added option to control ill-formed Unicode Version 0.13.6 (2013-07-04) --------------------------- - Fixed #2535084 uint problem with Sun C 5.8 - #3308400: allow Yacc-style %{code brackets}% - #2506253: allow C++ // comments - Fixed inplace configuration in -e mode. - Applied #2482572 Typos in error messages. - Applied #2482561 Error in manual section on -r mode. - Fixed #2478216 Wrong start_label in -c mode. - Fixed #2186718 Unescaped backslash in file name of #line directive. - Fixed #2102138 Duplicate case labels on EBCDIC. - Fixed #2088583 Compile problem on AIX. - Fixed #2038610 Ebcdic problem. - improve dot support: make char intervals (e.g. [A-Z]) instead of one edge per char Version 0.13.5 (2008-05-25) --------------------------- - Fixed #1952896 Segfault in re2c::Scanner::scan. - Fixed #1952842 Regression. Version 0.13.4 (2008-04-05) --------------------------- - Added transparent handling of #line directives in input files. - Added re2c:yyfill:check inplace configuration. - Added re2c:define:YYSETSTATE:naked inplace configuration. - Added re2c:flags:w and re2c:flags:u inplace configurations. - Added the ability to add rules in 'use:re2c' blocks. - Changed -r flag to accept only 'rules:re2c' and 'use:re2c' blocks. Version 0.13.3 (2008-03-14) --------------------------- - Added -r flag to allow reuse of scanner definitions. - Added -F flag to support flex syntax in rules. - Fixed SEGV in scanner that occurs with very large blocks. - Fixed issue with unused yybm. - Partial support for flex syntax. - Changed to allow /* comments with -c switch. - Added flag -D/--emit-dot. Version 0.13.2 (2008-02-14) --------------------------- - Added flag --case-inverted. - Added flag --case-insensitive. - Added support for '' to enable rule setup. - Added support for '=>' style rules. - Added support for ':=' style rules. - Added support for ':=>' style rules. - Added re2c:cond:divider and re2c:con:goto inplace configuration. - Fixed code generation to emit space after 'if'. Version 0.13.1 (2007-08-24) --------------------------- - Added custom build rules for Visual Studio 2005 (re2c.rules). (William Swanson) - Fixed issue with some compilers. - Fixed #1776177 Build on AIX. - Fixed #1743180 fwrite with 0 length crashes on OS X. Version 0.13.0 (2007-06-24) --------------------------- - Added -c and -t to generate scanners with (f)lex-like condition support. - Fixed issue with short form of switches and parameter if not first switch. - Fixed #1708378 segfault in actions.cc. Version 0.12.3 (2007-08-24) --------------------------- - Fixed issue with some compilers. - Fixed #1776177 Build on AIX. - Fixed #1743180 fwrite with 0 length crashes on OS X. Version 0.12.2 (2007-06-26) --------------------------- - Fixed #1743180 fwrite with 0 length crashes on OS X. Version 0.12.1 (2007-05-23) --------------------------- - Fixed #1711240 problem with '"' and 7F on EBCDIC plattforms. Version 0.12.0 (2007-05-01) --------------------------- - Re-release of 0.11.3 as new stable branch. - Fixed issue with short form of switches and parameter if not first switch. - Fixed #1708378 segfault in actions.cc. Version 0.11.3 (2007-04-01) --------------------------- - Added support for underscores in named definitions. - Added new option --no-generation-date. - Fixed issue with long form of switches. Version 0.11.2 (2007-03-01) --------------------------- - Added inplace configuration 're2c:yyfill:parameter'. - Added inplace configuration 're2c:yych:conversion'. - Fixed -u switch code generation. - Added ability to avoid defines and overwrite variable and label names. Version 0.11.1 (2007-02-20) --------------------------- - Applied #1647875 add const to yybm vector. Version 0.11.0 (2007-01-01) --------------------------- - Added -u switch to support unicode. Version 0.10.8 (2007-04-01) --------------------------- - Fixed issue with long form of switches. Version 0.10.7 (2007-02-20) --------------------------- - Applied #1647875 add const to yybm vector. Version 0.10.6 (2006-08-05) --------------------------- - Fixed #1529351 Segv bug on unterminated code blocks. - Fixed #1528269 Invalid code generation. Version 0.10.5 (2006-06-11) --------------------------- - Fixed long form of -1 switch to --single-pass as noted in man page and help. - Added MSVC 2003 project files and renamed old 2002 ones. Version 0.10.4 (2006-06-01) --------------------------- - Fix whitespace in generated code. Version 0.10.3 (2006-05-14) --------------------------- - Fixed issue with -wb and -ws. - Added -g switch to support gcc's computed goto's. - Changed to use nested if's instead of "switch(yyaccept)" in -s mode. Version 0.10.2 (2006-05-01) --------------------------- - Changed to generate YYMARKER only when needed or in single pass mode. - Added -1 switch to force single pass generation and make two pass the default. - Fixed -i switch. - Added configuration 'yyfill:enable' to allow suppression of YYFILL() blocks. - Added tutorial like lessons to re2c. - Added /*!ignore:re2c */ to support documenting of re2c source. - Fixed issue with multiline re2c comments (/*!max:re2c ... */ and alike). - Fixed generation of YYDEBUG() when using -d switch. - Added /*!getstate:re2c */ which triggers generation of the YYGETSTATE() block. - Added configuration 'state:abort'. - Changed to not generate yyNext unless configuration 'state:nextlabel' is used. - Changed to not generate yyaccept code unless needed. - Changed to use if- instead of switch-expression when yyaccpt has only one case. - Added docu, examples and tests to .src.zip package (0.10.1 zip was repackaged). - Fixed #1479044 incorrect code generated when using -b. - Fixed #1472770 re2c creates an infinite loop. - Fixed #1454253 Piece of code saving a backtracking point not generated. - Fixed #1463639 Missing forward declaration. - Implemented #1187127 savable state support for multiple re2c blocks. Version 0.10.1 (2006-02-28) --------------------------- - Added support for Solaris and native SUN compiler. - Applied #1438160 expose YYCTXMARKER. Version 0.10.0 (2006-02-18) --------------------------- - Added make target zip to create windows source packages as zip files. - Added re2c:startlabel configuration. - Fixed code generation to not generate unreachable code for initial state. - Added support for c/c++ compatible \u and \U unicode notation. - Added ability to control indendation. - Made scanner error out in case an ambiguous /* is found. - Fixed indendation of generated code. - Added support for DOS line endings. - Added experimental unicode support. - Added config_w32.h to build out of the box on windows (using msvc 2002+). - Added Microsoft Visual C .NET 2005 build files. - Applied #1411087 variable length trailing context. - Applied #1408326 do not generate goto next state. - Applied #1408282 CharSet initialization fix. - Applied #1408278 readsome with MSVC. - Applied #1307467 Unicode patch for 0.9.7. Version 0.9.12 (2005-12-28) --------------------------- - Fixed bug #1390174 re2c cannot accept {0,}. Version 0.9.11 (2005-12-18) --------------------------- - Fixed #1313083 -e (EBCDIC cross compile) broken. - Fixed #1297658 underestimation of n in YYFILL(n). - Applied #1339483 Avoid rebuilds of re2c when running subtargets. - Implemented #1335305 symbol table reimplementation, just slightly modifed. Version 0.9.10 (2005-09-04) --------------------------- - Added -i switch to avoid generating #line information. - Fixed bug #1251653 re2c generate some invalid #line on WIN32. Version 0.9.9 (2005-07-21) -------------------------- - Implemented #1232777 negated char classes '[^...]' and the dot operator '.'. - Added hexadecimal character definitions. - Added consistency check for octal character definitions. Version 0.9.8 (2005-06-26) -------------------------- - Fixed code generation for -b switch. - Added Microsoft Visual C .NET build files. Version 0.9.7 (2005-04-30) -------------------------- - Applied #1181535 storable state patch. - Added -d flag which outputs a debugable parser. - Fixed generation of '#line' directives (according to ISO-C99). - Fixed bug #1187785 Re2c fails to generate valid code. - Fixed bug #1187452 unused variable `yyaccept'. Version 0.9.6 (2005-04-14) -------------------------- - Fixed build with gcc >= 3.4. Version 0.9.5 (2005-04-08) -------------------------- - Added /*!max:re2c */ which emits a '#define YYMAXFILL \n' line This allows to define buffers of the minimum required length. Occurence must follow '/*re2c */ and cannot preceed it. - Changed re2c to two pass generation to output warning free code. - Fixed bug #1163046 re2c hangs when processing valid re-file. - Fixed bug #1022799 re2c scanner has buffering bug. Version 0.9.4 (2005-03-12) -------------------------- - Added --vernum support. - Fixed bug #1054496 incorrect code generated with -b option. - Fixed bug #1012748 re2c does not emit last line if '\n' missing. - Fixed bug #999104 --output=output option does not work as documented. - Fixed bug #999103 Invalid options prefixed with two dashes cause program crash. Version 0.9.3 (2004-05-26) -------------------------- - Fixes one small possible bug in the generated output. ych instead of yych is output in certain circumstances Version 0.9.2 (2004-05-26) -------------------------- - Added -o option to specify the output file which also will set the #line directives to something useful. - Print version to cout instead cerr. - Added -h and -- style options. - Moved development to http://sourceforge.net/projects/re2c . - Fixed bug #960144 minor cosmetic problem. - Fixed bug #953181 cannot compile with. - Fixed bug #939277 Windows support. - Fixed bug #914462 automake build patch - Fixed bug #891940 braced quantifiers: {\d+(,|,\d+)?} style. - Fixed bug #869298 Add case insensitive string literals. - Fixed bug #869297 Input buffer overrun. Version 0.9.1 (2003-12-13) -------------------------- - Removed rcs comments in source files. Version 0.9 ----------- - Redistribution based on version 0.5. - Added parentheses to assignment expressions in 'if' statements. - Rearranged class members to match initialization order. - Substr fix. - Use array delete [] when necessary. - Other minor fixes for subduing compiler warnings. re2c-1.0.1/run_tests.sh.in0000644000175000017500000001340313137634173012265 00000000000000#!/usr/bin/env bash # somewhat portable way to detect CPU count detect_cpu_count () { if [ "$CPUS" = "" ]; then # Windows standard environment variable CPUS="$NUMBER_OF_PROCESSORS" fi if [ "$CPUS" = "" ]; then # Linux CPUS=`getconf _NPROCESSORS_ONLN 2>/dev/null` fi if [ "$CPUS" = "" ]; then # FreeBSD CPUS=`getconf NPROCESSORS_ONLN 2>/dev/null` fi if [ "$CPUS" = "" ]; then # nothing helped CPUS="1" fi } lc_run() { LANG=C LC_ALL=C "$@" } valgrind="" skeleton=0 keep_tmp_files=0 wine="" re2c="./re2c" threads=`detect_cpu_count; echo $CPUS` tests=() for arg in $* do case $arg in "--valgrind" ) valgrind=`which valgrind` ;; "--skeleton" ) skeleton=1 ;; "--keep-tmp-files" ) keep_tmp_files=1 ;; "--wine" ) wine=`which wine` re2c="${re2c}.exe" ;; "-j"* ) number=${arg#-j} number_pattern='^[0-9]+$' if [[ $number =~ $number_pattern ]] then threads=$number fi ;; * ) tests[${#tests[@]}]="$arg" ;; # array is continuous (old bash lacks +=) esac done echo "Running in ${threads} thread(s)" test_blddir="test_"`date +%y%m%d%H%M%S` rm -rf $test_blddir && mkdir $test_blddir # preserve directory structure unless given explicit args if [ ${#tests[@]} -eq 0 ]; then cp -R "@top_srcdir@/test"/* $test_blddir else for f in ${tests[@]}; do cp $f ${f%.re}.c $test_blddir; done fi chmod -R u+w $test_blddir find $test_blddir -type f ! -name '*.re' -a ! -name '*.c' -exec rm {} \; tests=(`find $test_blddir -name '*.re' | sort`) tests_per_thread=$((${#tests[@]} / threads + 1)) packs=() for ((i = 0; i < threads; i++)) do j=$((i * tests_per_thread)) packs[$i]=${tests[@]:j:tests_per_thread} done if test ! -x "${re2c}" then echo "Cannot find re2c executable (${re2c})." exit 1 fi if test -n "${valgrind}" then valgrind_options=( "-q" "--track-origins=yes" "--num-callers=50" "--leak-check=full" "--show-reachable=yes" "--malloc-fill=0xa1" "--free-fill=0xa1" ) valgrind="${valgrind} ${valgrind_options[@]}" echo $valgrind fi diff_prog="diff" if test -n "${wine}" then # ignore whitespace at the end of line diff_prog="${diff_prog} -b" fi run_pack() { local log="$1" shift 1 local errcnt=0 for x in $* do cd $test_blddir # remove prefix local outx=${x:$((${#test_blddir} + 1))} local outc="${outx%.re}.c" # filename (dot short* (long arg?)*)? ext # must keep to POSIX standard: no syntactic sugar like +,?, etc. # if you change this regexp, try it with 'sed --posix' local switches=`basename "$x" | lc_run sed \ -e 's/^[^.]*\.re$//g' \ -e 's/^[^.]*\.\(.*\)\.re$/\1/g' \ -e 's/^\([^-]\)/-\1/' \ -e 's/--\([^ (-]*\)/ --\1/g' \ -e 's/(\([^)]*\))/ \1/g'` # check that flags do not contain uppercase letters: # file extensions are case-insensitive on some platforms printf "%s" "$switches" | lc_run grep -q "[A-Z]" \ && { echo "bad file extension: '$outx' (uppercase letters are not allowed)"; exit 1; } local switches="$switches -o $outc --no-version --no-generation-date" # enable warnings globally local switches="$switches -W" if [ $skeleton -eq 1 ] then rm -f "$outc" local switches="$switches --skeleton -Werror-undefined-control-flow" ${valgrind} ${wine} ../${re2c} $switches "../$x" 2>"$outc.stderr" local status=$(echo $?) [ $status -eq 0 ] && { @CC@ -Wall -Wextra -o "$outc.out" "$outc" 2>>"$outc.stderr" || status=2; } [ $status -eq 0 ] && { ./"$outc.out" 2>>"$outc.stderr" || status=3; } case $status in 0 ) local msg="OK" ;; 1 ) local msg="OK (expected re2c error)" ;; 2 ) local msg="FAIL (compilation error)" ;; 3 ) local msg="FAIL (runtime error)" ;; * ) local msg="FAIL (unknown error)" ;; esac printf "%-25s $outx\n" "$msg" if [ $status -le 1 ]; then [ $keep_tmp_files -eq 0 ] && rm -f "$outx" "$outc"{,.line*.{input,keys},.stderr,.out} else local errcnt=$(($errcnt + 1)) fi else local c="${outx%.re}.c.orig" mv "$outc" "$c" # create sandbox tmpdir="tmp_$log" \ && mkdir "$tmpdir" \ && cd "$tmpdir" \ && mkdir -p `dirname "$outx"` \ && cp "../../$x" "$outx" # run re2c $valgrind $wine ../../$re2c $switches "$outx" 2>"$outc.stderr" 1>&2 # on windows output contains CR LF, cut CR to match test results for f in "$outc" "$outc.stderr"; do [ -f "$f" ] \ && cat "$f" | lc_run tr -d '\r' > "$f".mod \ && mv "$f".mod "$f" done # paste all files dropped by re2c into output file rm "$outx" && find . -type f \ | lc_run sort \ | xargs cat \ >> "../$outc" # cleanup sandbox cd .. \ && rm -rf "$tmpdir" # compare results local status="" [ -z $status ] && status=`[ -f "$c" ] || echo "MISSING"` [ -z $status ] && status=`$diff_prog "$c" "$outc" > "$outc.diff" || echo "FAIL"` [ -z $status ] && status="OK" if [ $status = "OK" ] then rm "$outc" "$outc.diff" "$c" "$outx" else local errcnt=$(($errcnt + 1)) fi printf "%-10s $outx\n" "$status" fi cd .. done echo $errcnt > $log } cleanup() { rm -f ${logs[@]} kill ${wait_pids[@]} wait ${wait_pids[@]} printf "\nEh...\n" exit 1 } logs=() wait_pids=() trap cleanup INT for ((i = 0; i < ${#packs[@]}; i++)) do logs[$i]=`date +%y%m%d%H%M%S`_$i run_pack ${logs[i]} ${packs[i]} & wait_pids[${#wait_pids[@]}]=$! # array is continuous (old bash lacks +=) done wait ${wait_pids[@]} errors=0 for ((i = 0; i < ${#logs[@]}; i++)) do error=`cat ${logs[i]}` errors=$((errors + error)) rm -f ${logs[i]} done # remove empty directories for d in `find $test_blddir -depth -type d` do entries=`ls -A "$d"` if [ -z "$entries" ] then rmdir "$d" fi done if [ $errors -eq 0 ] then echo "All ${#tests[@]} tests passed successfully." exit 0 else echo "Error: $errors out ${#tests[@]} tests failed." exit 1 fi re2c-1.0.1/src/0000755000175000017500000000000013143420715010134 500000000000000re2c-1.0.1/src/conf/0000755000175000017500000000000013143420716011062 500000000000000re2c-1.0.1/src/conf/msg.h0000644000175000017500000000167413142625563011757 00000000000000#ifndef _RE2C_CONF_MSG_ #define _RE2C_CONF_MSG_ #include "src/util/c99_stdint.h" #include #include "src/util/attribute.h" namespace re2c { void error(const char *fmt, ...) RE2C_GXX_ATTRIBUTE ((format (printf, 1, 2))); void fatal(const char *fmt, ...) RE2C_GXX_ATTRIBUTE ((format (printf, 1, 2), noreturn)); void fatal_l(uint32_t line, const char *fmt, ...) RE2C_GXX_ATTRIBUTE ((format (printf, 2, 3), noreturn)); void fatal_lc(uint32_t line, uint32_t column, const char *fmt, ...) RE2C_GXX_ATTRIBUTE ((format (printf, 3, 4), noreturn)); void error_arg(const char *option); void warning_start (uint32_t line, bool error); void warning_end (const char * type, bool error); void warning (const char * type, uint32_t line, bool error, const char * fmt, ...) RE2C_GXX_ATTRIBUTE ((format (printf, 4, 5))); void usage (); void vernum (); void version (); std::string incond (const std::string & cond); } // namespace re2c #endif // _RE2C_CONF_MSG_ re2c-1.0.1/src/conf/opt.cc0000644000175000017500000001771313137577041012133 00000000000000#include "src/conf/msg.h" #include "src/conf/opt.h" namespace re2c { void conopt_t::fix() { if (target == TARGET_SKELETON) { fFlag = false; header_file = ""; } if (!cFlag) { header_file = ""; } } void mutopt_t::fix(const conopt_t *globopts) { // some options either make no sense or must have fixed value // with current target: reset them to default switch (globopts->target) { case TARGET_DOT: // default code generation options sFlag = Opt::baseopt.sFlag; bFlag = Opt::baseopt.bFlag; gFlag = Opt::baseopt.gFlag; cGotoThreshold = Opt::baseopt.cGotoThreshold; // default environment-insensitive formatting yybmHexTable = Opt::baseopt.yybmHexTable; // fallthrough case TARGET_SKELETON: // default line information iFlag = Opt::baseopt.iFlag; // default environment-sensitive formatting topIndent = Opt::baseopt.topIndent; indString = Opt::baseopt.indString; condDivider = Opt::baseopt.condDivider; condDividerParam = Opt::baseopt.condDividerParam; // default environment bindings yycondtype = Opt::baseopt.yycondtype; cond_get = Opt::baseopt.cond_get; cond_get_naked = Opt::baseopt.cond_get_naked; cond_set = Opt::baseopt.cond_set; cond_set_arg = Opt::baseopt.cond_set_arg; cond_set_naked = Opt::baseopt.cond_set_naked; yyctable = Opt::baseopt.yyctable; condPrefix = Opt::baseopt.condPrefix; condEnumPrefix = Opt::baseopt.condEnumPrefix; condGoto = Opt::baseopt.condGoto; condGotoParam = Opt::baseopt.condGotoParam; state_get = Opt::baseopt.state_get; state_get_naked = Opt::baseopt.state_get_naked; state_set = Opt::baseopt.state_set; state_set_arg = Opt::baseopt.state_set_arg; state_set_naked = Opt::baseopt.state_set_naked; tags_prefix = Opt::baseopt.tags_prefix; tags_expression = Opt::baseopt.tags_expression; optimize_tags = Opt::baseopt.optimize_tags; yyfilllabel = Opt::baseopt.yyfilllabel; yynext = Opt::baseopt.yynext; yyaccept = Opt::baseopt.yyaccept; bUseStateAbort = Opt::baseopt.bUseStateAbort; bUseStateNext = Opt::baseopt.bUseStateNext; yybm = Opt::baseopt.yybm; yytarget = Opt::baseopt.yytarget; input_api = Opt::baseopt.input_api; yycursor = Opt::baseopt.yycursor; yymarker = Opt::baseopt.yymarker; yyctxmarker = Opt::baseopt.yyctxmarker; yylimit = Opt::baseopt.yylimit; yypeek = Opt::baseopt.yypeek; yyskip = Opt::baseopt.yyskip; yybackup = Opt::baseopt.yybackup; yybackupctx = Opt::baseopt.yybackupctx; yyrestore = Opt::baseopt.yyrestore; yyrestorectx = Opt::baseopt.yyrestorectx; yyrestoretag = Opt::baseopt.yyrestoretag; yystagn = Opt::baseopt.yystagn; yystagp = Opt::baseopt.yystagp; yymtagn = Opt::baseopt.yymtagn; yymtagp = Opt::baseopt.yymtagp; yylessthan = Opt::baseopt.yylessthan; dFlag = Opt::baseopt.dFlag; yydebug = Opt::baseopt.yydebug; yyctype = Opt::baseopt.yyctype; yych = Opt::baseopt.yych; bEmitYYCh = Opt::baseopt.bEmitYYCh; yychConversion = Opt::baseopt.yychConversion; fill = Opt::baseopt.fill; fill_use = Opt::baseopt.fill_use; fill_check = Opt::baseopt.fill_check; fill_arg = Opt::baseopt.fill_arg; fill_arg_use = Opt::baseopt.fill_arg_use; fill_naked = Opt::baseopt.fill_naked; labelPrefix = Opt::baseopt.labelPrefix; startlabel = Opt::baseopt.startlabel; startlabel_force = Opt::baseopt.startlabel_force; break; case TARGET_CODE: break; } if (bCaseInsensitive) { bCaseInverted = Opt::baseopt.bCaseInverted; } // respect hierarchy if (!globopts->cFlag) { yycondtype = Opt::baseopt.yycondtype; cond_get = Opt::baseopt.cond_get; cond_get_naked = Opt::baseopt.cond_get_naked; cond_set = Opt::baseopt.cond_set; cond_set_arg = Opt::baseopt.cond_set_arg; cond_set_naked = Opt::baseopt.cond_set_naked; yyctable = Opt::baseopt.yyctable; condPrefix = Opt::baseopt.condPrefix; condEnumPrefix = Opt::baseopt.condEnumPrefix; condDivider = Opt::baseopt.condDivider; condDividerParam = Opt::baseopt.condDividerParam; condGoto = Opt::baseopt.condGoto; condGotoParam = Opt::baseopt.condGotoParam; } if (!globopts->fFlag) { state_get = Opt::baseopt.state_get; state_get_naked = Opt::baseopt.state_get_naked; state_set = Opt::baseopt.state_set; state_set_arg = Opt::baseopt.state_set_arg; state_set_naked = Opt::baseopt.state_set_naked; yyfilllabel = Opt::baseopt.yyfilllabel; yynext = Opt::baseopt.yynext; yyaccept = Opt::baseopt.yyaccept; bUseStateAbort = Opt::baseopt.bUseStateAbort; bUseStateNext = Opt::baseopt.bUseStateNext; } if (posix_captures) { tags = true; } if (!tags) { tags_prefix = Opt::baseopt.tags_prefix; tags_expression = Opt::baseopt.tags_expression; lookahead = Opt::baseopt.lookahead; optimize_tags = Opt::baseopt.optimize_tags; } if (!bFlag) { yybmHexTable = Opt::baseopt.yybmHexTable; yybm = Opt::baseopt.yybm; } if (!gFlag) { cGotoThreshold = Opt::baseopt.cGotoThreshold; yytarget = Opt::baseopt.yytarget; } if (input_api != INPUT_DEFAULT) { yycursor = Opt::baseopt.yycursor; yymarker = Opt::baseopt.yymarker; yyctxmarker = Opt::baseopt.yyctxmarker; yylimit = Opt::baseopt.yylimit; } if (input_api != INPUT_CUSTOM) { yypeek = Opt::baseopt.yypeek; yyskip = Opt::baseopt.yyskip; yybackup = Opt::baseopt.yybackup; yybackupctx = Opt::baseopt.yybackupctx; yyrestore = Opt::baseopt.yyrestore; yyrestorectx = Opt::baseopt.yyrestorectx; yyrestoretag = Opt::baseopt.yyrestoretag; yystagn = Opt::baseopt.yystagn; yystagp = Opt::baseopt.yystagp; yymtagn = Opt::baseopt.yymtagn; yymtagp = Opt::baseopt.yymtagp; } if (!dFlag) { yydebug = Opt::baseopt.yydebug; } if (!fill_use) { fill = Opt::baseopt.fill; fill_check = Opt::baseopt.fill_check; fill_arg = Opt::baseopt.fill_arg; fill_arg_use = Opt::baseopt.fill_arg_use; fill_naked = Opt::baseopt.fill_naked; } // force individual options switch (globopts->target) { case TARGET_DOT: iFlag = true; break; case TARGET_SKELETON: iFlag = true; input_api = INPUT_CUSTOM; indString = " "; topIndent = 2; break; case TARGET_CODE: break; } switch (encoding.type()) { case Enc::UCS2: case Enc::UTF16: case Enc::UTF32: sFlag = true; break; case Enc::ASCII: case Enc::EBCDIC: case Enc::UTF8: break; } if (bFlag) { sFlag = true; } if (gFlag) { bFlag = true; sFlag = true; } if (!lookahead) { eager_skip = true; } } const mutopt_t Opt::baseopt; bool Opt::source (const char *s) { if (source_file) { error ("multiple source files: %s, %s", source_file, s); return false; } else { source_file = s; return true; } } void Opt::reset_startlabel() { set_startlabel(Opt::baseopt.startlabel); set_startlabel_force(Opt::baseopt.startlabel_force); } void Opt::reset_mapCodeName () { // historically arranged set of names // no actual reason why these particular options should be reset set_cond_get(Opt::baseopt.cond_get); set_cond_set(Opt::baseopt.cond_set); set_fill(Opt::baseopt.fill); set_state_get(Opt::baseopt.state_get); set_state_set(Opt::baseopt.state_set); set_yybackup(Opt::baseopt.yybackup); set_yybackupctx(Opt::baseopt.yybackupctx); set_yycondtype(Opt::baseopt.yycondtype); set_yyctxmarker(Opt::baseopt.yyctxmarker); set_yyctype(Opt::baseopt.yyctype); set_yycursor(Opt::baseopt.yycursor); set_yydebug(Opt::baseopt.yydebug); set_yylessthan(Opt::baseopt.yylessthan); set_yylimit(Opt::baseopt.yylimit); set_yymarker(Opt::baseopt.yymarker); set_yypeek(Opt::baseopt.yypeek); set_yyrestore(Opt::baseopt.yyrestore); set_yyrestorectx(Opt::baseopt.yyrestorectx); set_yyrestoretag(Opt::baseopt.yyrestoretag); set_yystagn(Opt::baseopt.yystagn); set_yystagp(Opt::baseopt.yystagp); set_yymtagn(Opt::baseopt.yymtagn); set_yymtagp(Opt::baseopt.yymtagp); set_yyskip(Opt::baseopt.yyskip); set_yyfilllabel(Opt::baseopt.yyfilllabel); set_yynext(Opt::baseopt.yynext); set_yyaccept(Opt::baseopt.yyaccept); set_yybm(Opt::baseopt.yybm); set_yych(Opt::baseopt.yych); set_yyctable(Opt::baseopt.yyctable); set_yytarget(Opt::baseopt.yytarget); } } // namespace re2c re2c-1.0.1/src/conf/warn.h0000644000175000017500000000341613142625651012132 00000000000000#ifndef _RE2C_CONF_WARN_ #define _RE2C_CONF_WARN_ #include #include "src/util/c99_stdint.h" #include #include #include "src/re/rule.h" namespace re2c { class path_t; struct Rule; struct Skeleton; #define RE2C_WARNING_TYPES \ W (CONDITION_ORDER, "condition-order"), \ W (EMPTY_CHARACTER_CLASS, "empty-character-class"), \ W (MATCH_EMPTY_STRING, "match-empty-string"), \ W (NONDETERMINISTIC_TAGS, "nondeterministic-tags"), \ W (SWAPPED_RANGE, "swapped-range"), \ W (UNDEFINED_CONTROL_FLOW, "undefined-control-flow"), \ W (UNREACHABLE_RULES, "unreachable-rules"), \ W (USELESS_ESCAPE, "useless-escape"), class Warn { public: enum type_t { #define W(x, y) x RE2C_WARNING_TYPES #undef W TYPES // count }; enum option_t { W, WNO, WERROR, WNOERROR }; private: static const uint32_t SILENT; static const uint32_t WARNING; static const uint32_t ERROR; static const char * names [TYPES]; uint32_t mask[TYPES]; bool error_accuml; public: Warn (); bool error () const; void set (type_t t, option_t o); void set_all (); void set_all_error (); void fail (type_t t, uint32_t line, const char * s) const; void condition_order (uint32_t line); void empty_class (uint32_t line); void match_empty_string (uint32_t line, const std::string &cond); void nondeterministic_tags(uint32_t line, const std::string &cond, const std::string *tagname, size_t nver); void swapped_range (uint32_t line, uint32_t l, uint32_t u); void undefined_control_flow (const Skeleton &skel, std::vector & paths, bool overflow); void unreachable_rule (const std::string & cond, const Rule &rule); void useless_escape (uint32_t line, uint32_t col, char c); }; } // namespace re2c #endif // _RE2C_CONF_WARN_ re2c-1.0.1/src/conf/opt.h0000644000175000017500000002077613142625614011774 00000000000000#ifndef _RE2C_CONF_OPT_ #define _RE2C_CONF_OPT_ #include #include "src/util/c99_stdint.h" #include #include "src/code/input_api.h" #include "src/conf/warn.h" #include "src/dfa/dfa.h" #include "src/re/empty_class_policy.h" #include "src/re/encoding/enc.h" #include "src/util/forbid_copy.h" namespace re2c { class Warn; enum target_t { TARGET_CODE, TARGET_DOT, TARGET_SKELETON }; /* note [constant and mutable options] * * Some options are immutable (target, output files; global switches like * conditions, reuse mode, storable states; support of flex syntax, etc.). * These options are passed as command-line arguments and never change. * It is safe to read them from any program point after parsing command-line * arguments. * * Other options are configurable; they have block scope (may be specified * anywhere inside of the block and still affect the whole block). * Reading mutable options of yet unparsed block is not allowed because * they may affect the way RE2C parses current block (RE2C would be tempted * to base decisions on the latest option value, which may not be the final * one). */ #define RE2C_CONSTOPTS \ CONSTOPT1 (target_t, target, TARGET_CODE) \ CONSTOPT (std::string, output_file, "") \ CONSTOPT (std::string, header_file, "") \ CONSTOPT (bool, bNoGenerationDate, false) \ CONSTOPT (bool, version, true) \ CONSTOPT (bool, cFlag, false) \ CONSTOPT (bool, fFlag, false) \ CONSTOPT (bool, rFlag, false) \ CONSTOPT (bool, FFlag, false) \ /* debug */ \ CONSTOPT (bool, dump_nfa, false) \ CONSTOPT (bool, dump_dfa_raw, false) \ CONSTOPT (bool, dump_dfa_det, false) \ CONSTOPT (bool, dump_dfa_tagopt, false) \ CONSTOPT (bool, dump_dfa_min, false) \ CONSTOPT (bool, dump_adfa, false) #define RE2C_MUTOPTS \ /* regular expressions */ \ MUTOPT1 (Enc, encoding, Enc ()) \ MUTOPT (bool, bCaseInsensitive, false) \ MUTOPT (bool, bCaseInverted, false) \ MUTOPT (empty_class_policy_t, empty_class_policy, EMPTY_CLASS_MATCH_EMPTY) \ /* conditions */ \ MUTOPT (std::string, yycondtype, "YYCONDTYPE") \ MUTOPT (std::string, cond_get, "YYGETCONDITION") \ MUTOPT (bool, cond_get_naked, false) \ MUTOPT (std::string, cond_set, "YYSETCONDITION" ) \ MUTOPT (std::string, cond_set_arg, "@@" ) \ MUTOPT (bool, cond_set_naked, false ) \ MUTOPT (std::string, yyctable, "yyctable") \ MUTOPT (std::string, condPrefix, "yyc_") \ MUTOPT (std::string, condEnumPrefix, "yyc") \ MUTOPT (std::string, condDivider, "/* *********************************** */") \ MUTOPT (std::string, condDividerParam, "@@") \ MUTOPT (std::string, condGoto, "goto @@;") \ MUTOPT (std::string, condGotoParam, "@@") \ /* states */ \ MUTOPT (std::string, state_get, "YYGETSTATE") \ MUTOPT (bool, state_get_naked, false) \ MUTOPT (std::string, state_set, "YYSETSTATE") \ MUTOPT (std::string, state_set_arg, "@@") \ MUTOPT (bool, state_set_naked, false) \ MUTOPT (std::string, yyfilllabel, "yyFillLabel") \ MUTOPT (std::string, yynext, "yyNext") \ MUTOPT (std::string, yyaccept, "yyaccept") \ MUTOPT (bool, bUseStateAbort, false) \ MUTOPT (bool, bUseStateNext, false) \ /* tags */ \ MUTOPT (bool, tags, false) \ MUTOPT (std::string, tags_prefix, "yyt") \ MUTOPT (std::string, tags_expression, "@@") \ MUTOPT (bool, posix_captures, false) \ MUTOPT (bool, optimize_tags, true) \ /* code generation */ \ MUTOPT (bool, sFlag, false) \ MUTOPT (bool, bFlag, false) \ MUTOPT (std::string, yybm, "yybm") \ MUTOPT (bool, yybmHexTable, false) \ MUTOPT (bool, gFlag, false) \ MUTOPT (std::string, yytarget, "yytarget") \ MUTOPT (uint32_t, cGotoThreshold, 9) \ /* formatting */ \ MUTOPT (uint32_t, topIndent, 0) \ MUTOPT (std::string, indString, "\t") \ /* input API */ \ MUTOPT (input_api_t, input_api, INPUT_DEFAULT) \ MUTOPT (std::string, yycursor, "YYCURSOR") \ MUTOPT (std::string, yymarker, "YYMARKER") \ MUTOPT (std::string, yyctxmarker, "YYCTXMARKER") \ MUTOPT (std::string, yylimit, "YYLIMIT") \ MUTOPT (std::string, yypeek, "YYPEEK") \ MUTOPT (std::string, yyskip, "YYSKIP") \ MUTOPT (std::string, yybackup, "YYBACKUP") \ MUTOPT (std::string, yybackupctx, "YYBACKUPCTX") \ MUTOPT (std::string, yyrestore, "YYRESTORE") \ MUTOPT (std::string, yyrestorectx, "YYRESTORECTX") \ MUTOPT (std::string, yyrestoretag, "YYRESTORETAG") \ MUTOPT (std::string, yylessthan, "YYLESSTHAN") \ MUTOPT (std::string, yystagn, "YYSTAGN") \ MUTOPT (std::string, yystagp, "YYSTAGP") \ MUTOPT (std::string, yymtagn, "YYMTAGN") \ MUTOPT (std::string, yymtagp, "YYMTAGP") \ /* #line directives */ \ MUTOPT (bool, iFlag, false) \ /* debug */ \ MUTOPT (bool, dFlag, false) \ MUTOPT (std::string, yydebug, "YYDEBUG") \ /* yych */ \ MUTOPT (std::string, yyctype, "YYCTYPE") \ MUTOPT (std::string, yych, "yych") \ MUTOPT (bool, bEmitYYCh, true) \ MUTOPT (bool, yychConversion, false) \ /* YYFILL */ \ MUTOPT (std::string, fill, "YYFILL") \ MUTOPT (bool, fill_use, true) \ MUTOPT (bool, fill_check, true) \ MUTOPT (std::string, fill_arg, "@@") \ MUTOPT (bool, fill_arg_use, true) \ MUTOPT (bool, fill_naked, false) \ /* labels */ \ MUTOPT (std::string, labelPrefix, "yy") \ MUTOPT (std::string, startlabel, "") \ MUTOPT (bool, startlabel_force, false) \ /* internals */ \ MUTOPT (dfa_minimization_t, dfa_minimization, DFA_MINIMIZATION_MOORE) \ MUTOPT (bool, lookahead, true) \ MUTOPT (bool, eager_skip, false) struct conopt_t { # define CONSTOPT1 CONSTOPT # define CONSTOPT(type, name, value) type name; RE2C_CONSTOPTS # undef CONSTOPT1 # undef CONSTOPT conopt_t() # define CONSTOPT1(type, name, value) : name(value) # define CONSTOPT(type, name, value) , name(value) RE2C_CONSTOPTS # undef CONSTOPT1 # undef CONSTOPT {} void fix(); FORBID_COPY(conopt_t); }; struct mutopt_t { # define MUTOPT1 MUTOPT # define MUTOPT(type, name, value) type name; RE2C_MUTOPTS # undef MUTOPT1 # undef MUTOPT mutopt_t() # define MUTOPT1(type, name, value) : name(value) # define MUTOPT(type, name, value) , name(value) RE2C_MUTOPTS # undef MUTOPT1 # undef MUTOPT {} void fix(const conopt_t *globopts); FORBID_COPY(mutopt_t); }; struct opt_t { # define CONSTOPT1 CONSTOPT # define CONSTOPT(type, name, value) type name; RE2C_CONSTOPTS # undef CONSTOPT1 # undef CONSTOPT # define MUTOPT1 MUTOPT # define MUTOPT(type, name, value) type name; RE2C_MUTOPTS # undef MUTOPT1 # undef MUTOPT opt_t(const conopt_t &con, const mutopt_t &mut) # define CONSTOPT1(type, name, value) : name(con.name) # define CONSTOPT(type, name, value) , name(con.name) RE2C_CONSTOPTS # undef CONSTOPT1 # undef CONSTOPT # define MUTOPT1 MUTOPT # define MUTOPT(type, name, value) , name(mut.name) RE2C_MUTOPTS # undef MUTOPT1 # undef MUTOPT {} FORBID_COPY(opt_t); }; // see note [constant and mutable options] struct Opt { static const mutopt_t baseopt; const char *source_file; const conopt_t &glob; private: mutopt_t user; mutopt_t real; bool diverge; void sync() { if (!diverge) return; # define MUTOPT1 MUTOPT # define MUTOPT(type, name, value) real.name = user.name; RE2C_MUTOPTS # undef MUTOPT1 # undef MUTOPT real.fix(&glob); diverge = false; } public: explicit Opt(const conopt_t &globopts) : source_file(NULL) , glob(globopts) , user() , real() , diverge(true) {} const opt_t *snapshot() { sync(); return new opt_t(glob, real); } void restore(const opt_t *opts) { # define MUTOPT1 MUTOPT # define MUTOPT(type, name, value) user.name = opts->name; RE2C_MUTOPTS # undef MUTOPT1 # undef MUTOPT diverge = true; sync(); } bool source (const char *s); // RE2C allows to set configurations anywhere inside of a block // (in the beginning, intermixed with rules, in the end): they will // affect the whole block anyway. Thus one is not allowed to read // configurations until the whole block has been parsed. Immutable // options, on the contrary, are accessible for reading all the time // (the parser itself depends on them). void set_encoding(Enc::type_t t) { user.encoding.set(t); } void unset_encoding(Enc::type_t t) { user.encoding.unset(t); } void set_encoding_policy(Enc::policy_t p) { user.encoding.setPolicy(p); } #define MUTOPT1 MUTOPT #define MUTOPT(type, name, value) void set_##name (const type &arg) { user.name = arg; diverge = true; } RE2C_MUTOPTS #undef MUTOPT1 #undef MUTOPT // bad temporary hacks, should be fixed by proper scoping of config (parts). void reset_startlabel(); void reset_mapCodeName (); FORBID_COPY (Opt); }; enum parse_opts_t { OK, EXIT_OK, EXIT_FAIL }; parse_opts_t parse_opts(char **argv, conopt_t &globopts, Opt &opts, Warn &warn); } // namespace re2c #endif // _RE2C_CONF_OPT_ re2c-1.0.1/src/conf/msg.cc0000644000175000017500000000452613137447263012117 00000000000000#include #include #include #include #include "config.h" #include "src/conf/msg.h" extern const char *help; // autogenerated namespace re2c { void error (const char * fmt, ...) { fprintf (stderr, "re2c: error: "); va_list args; va_start (args, fmt); vfprintf (stderr, fmt, args); va_end (args); fprintf (stderr, "\n"); } void fatal(const char *fmt, ...) { fprintf (stderr, "re2c: error: "); va_list args; va_start (args, fmt); vfprintf (stderr, fmt, args); va_end (args); fprintf (stderr, "\n"); exit(1); } void fatal_l(uint32_t line, const char *fmt, ...) { fprintf (stderr, "re2c: error: line %u: ", line); va_list args; va_start (args, fmt); vfprintf (stderr, fmt, args); va_end (args); fprintf (stderr, "\n"); exit(1); } void fatal_lc(uint32_t line, uint32_t column, const char *fmt, ...) { fprintf (stderr, "re2c: error: line %u, column %u: ", line, column); va_list args; va_start (args, fmt); vfprintf (stderr, fmt, args); va_end (args); fprintf (stderr, "\n"); exit(1); } void error_arg (const char * option) { error ("expected argument to option %s", option); } void warning_start (uint32_t line, bool error) { const char * msg = error ? "error" : "warning"; fprintf (stderr, "re2c: %s: line %u: ", msg, line); } void warning_end (const char * type, bool error) { if (type != NULL) { const char * prefix = error ? "error-" : ""; fprintf (stderr, " [-W%s%s]", prefix, type); } fprintf (stderr, "\n"); } void warning (const char * type, uint32_t line, bool error, const char * fmt, ...) { warning_start (line, error); va_list args; va_start (args, fmt); vfprintf (stderr, fmt, args); va_end (args); warning_end (type, error); } void usage() { fprintf(stdout, "%s", help); } void vernum () { std::string vernum (PACKAGE_VERSION); if (vernum[1] == '.') { vernum.insert(0, "0"); } vernum.erase(2, 1); if (vernum[3] == '.') { vernum.insert(2, "0"); } vernum.erase(4, 1); if (vernum.length() < 6 || vernum[5] < '0' || vernum[5] > '9') { vernum.insert(4, "0"); } vernum.resize(6, '0'); printf ("%s\n", vernum.c_str ()); } void version () { printf ("re2c %s\n", PACKAGE_VERSION); } std::string incond (const std::string & cond) { std::string s; if (!cond.empty ()) { s += "in condition '"; s += cond; s += "' "; } return s; } } // namespace re2c re2c-1.0.1/src/conf/warn.cc0000644000175000017500000001211513142627556012272 00000000000000#include #include #include #include #include "src/conf/msg.h" #include "src/conf/warn.h" #include "src/skeleton/path.h" #include "src/re/rule.h" #include "src/skeleton/skeleton.h" namespace re2c { const uint32_t Warn::SILENT = 0; const uint32_t Warn::WARNING = 1u << 0; const uint32_t Warn::ERROR = 1u << 1; const char * Warn::names [TYPES] = { #define W(x, y) y RE2C_WARNING_TYPES #undef W }; Warn::Warn () : mask () , error_accuml (false) { for (uint32_t i = 0; i < TYPES; ++i) { mask[i] = SILENT; } } bool Warn::error () const { return error_accuml; } void Warn::set (type_t t, option_t o) { switch (o) { case W: mask[t] |= WARNING; break; case WNO: mask[t] &= ~WARNING; break; case WERROR: // unlike -Werror, -Werror- implies -W mask[t] |= (WARNING | ERROR); break; case WNOERROR: mask[t] &= ~ERROR; break; } } void Warn::set_all () { for (uint32_t i = 0; i < TYPES; ++i) { mask[i] |= WARNING; } } // -Werror doesn't set any warnings: it only guarantees that if a warning // has been set by now or will be set later then it will result into error. void Warn::set_all_error () { for (uint32_t i = 0; i < TYPES; ++i) { mask[i] |= ERROR; } } void Warn::fail (type_t t, uint32_t line, const char * s) const { if (mask[t] & WARNING) { // -Werror has no effect warning (names[t], line, false, "%s", s); } } void Warn::condition_order (uint32_t line) { if (mask[CONDITION_ORDER] & WARNING) { const bool e = mask[CONDITION_ORDER] & ERROR; error_accuml |= e; warning (names[CONDITION_ORDER], line, e, "looks like you use hardcoded numbers instead of autogenerated condition names: " "better add '/*!types:re2c*/' directive or '-t, --type-header' option " "and don't rely on fixed condition order."); } } void Warn::empty_class (uint32_t line) { if (mask[EMPTY_CHARACTER_CLASS] & WARNING) { const bool e = mask[EMPTY_CHARACTER_CLASS] & ERROR; error_accuml |= e; warning (names[EMPTY_CHARACTER_CLASS], line, e, "empty character class"); } } void Warn::match_empty_string (uint32_t line, const std::string &cond) { if (mask[MATCH_EMPTY_STRING] & WARNING) { const bool e = mask[MATCH_EMPTY_STRING] & ERROR; error_accuml |= e; warning (names[MATCH_EMPTY_STRING], line, e, "rule %smatches empty string", incond(cond).c_str()); } } void Warn::nondeterministic_tags(uint32_t line, const std::string &cond, const std::string *tagname, size_t nver) { if (mask[NONDETERMINISTIC_TAGS] & WARNING) { bool e = mask[NONDETERMINISTIC_TAGS] & ERROR; error_accuml |= e; warning_start(line, e); if (tagname == NULL) { fprintf(stderr, "trailing context"); } else { fprintf(stderr, "tag '%s'", tagname->c_str()); } fprintf(stderr, " %shas %u%s degree of nondeterminism", incond(cond).c_str(), static_cast(nver), nver == 2 ? "nd" : nver == 3 ? "rd" : "th"); warning_end(names[NONDETERMINISTIC_TAGS], e); } } void Warn::swapped_range (uint32_t line, uint32_t l, uint32_t u) { if (mask[SWAPPED_RANGE] & WARNING) { const bool e = mask[SWAPPED_RANGE] & ERROR; error_accuml |= e; warning (names[SWAPPED_RANGE], line, e, "range lower bound (0x%X) is greater than upper bound (0x%X), swapping", l, u); } } void Warn::undefined_control_flow (const Skeleton &skel, std::vector & paths, bool overflow) { if (mask[UNDEFINED_CONTROL_FLOW] & WARNING) { const bool e = mask[UNDEFINED_CONTROL_FLOW] & ERROR; error_accuml |= e; // report shorter patterns first std::sort (paths.begin (), paths.end ()); warning_start (skel.line, e); fprintf (stderr, "control flow %sis undefined for strings that match ", incond (skel.cond).c_str ()); const size_t count = paths.size (); if (count == 1) { fprint_default_path (stderr, skel, paths[0]); } else { for (size_t i = 0; i < count; ++i) { fprintf (stderr, "\n\t"); fprint_default_path (stderr, skel, paths[i]); } fprintf (stderr, "\n"); } if (overflow) { fprintf (stderr, " ... and a few more"); } fprintf (stderr, ", use default rule '*'"); warning_end (names[UNDEFINED_CONTROL_FLOW], e); } } void Warn::unreachable_rule(const std::string &cond, const Rule &rule) { if (mask[UNREACHABLE_RULES] & WARNING) { const bool e = mask[UNREACHABLE_RULES] & ERROR; error_accuml |= e; warning_start(rule.code->fline, e); fprintf(stderr, "unreachable rule %s", incond(cond).c_str()); const size_t shadows = rule.shadow.size(); if (shadows > 0) { const char * pl = shadows > 1 ? "s" : ""; std::set::const_iterator i = rule.shadow.begin(); fprintf (stderr, "(shadowed by rule%s at line%s %u", pl, pl, *i); for (++i; i != rule.shadow.end(); ++i) { fprintf(stderr, ", %u", *i); } fprintf(stderr, ")"); } warning_end(names[UNREACHABLE_RULES], e); } } void Warn::useless_escape (uint32_t line, uint32_t col, char c) { if (mask[USELESS_ESCAPE] & WARNING) { const bool e = mask[USELESS_ESCAPE] & ERROR; error_accuml |= e; warning (names[USELESS_ESCAPE], line, e, "column %u: escape has no effect: '\\%c'", col, c); } } } // namespace re2c re2c-1.0.1/src/conf/parse_opts.re0000644000175000017500000002255313142640072013516 00000000000000#include "src/code/input_api.h" #include "src/conf/msg.h" #include "src/conf/opt.h" #include "src/re/empty_class_policy.h" #include "src/re/encoding/enc.h" namespace re2c { static inline bool next (char * & arg, char ** & argv) { arg = *++argv; return arg != NULL; } parse_opts_t parse_opts(char **argv, conopt_t &globopts, Opt &opts, Warn &warn) { #define YYCTYPE unsigned char char * YYCURSOR; char * YYMARKER; Warn::option_t option; /*!re2c re2c:yyfill:enable = 0; re2c:yych:conversion = 1; end = "\x00"; filename = [^\x00-] [^\x00]*; */ opt: if (!next (YYCURSOR, argv)) { goto end; } /*!re2c * { error ("bad option: %s", *argv); return EXIT_FAIL; } "--" end { // all remaining arguments are non-options // so they must be input files // re2c expects exactly one input file for (char * f; next (f, argv);) { if (!opts.source (f)) { return EXIT_FAIL; } } goto end; } "-" end { if (!opts.source ("")) return EXIT_FAIL; goto opt; } filename end { if (!opts.source (*argv)) return EXIT_FAIL; goto opt; } "-" { goto opt_short; } "--" { goto opt_long; } "-W" end { warn.set_all (); goto opt; } "-Werror" end { warn.set_all_error (); goto opt; } "-W" { option = Warn::W; goto opt_warn; } "-Wno-" { option = Warn::WNO; goto opt_warn; } "-Werror-" { option = Warn::WERROR; goto opt_warn; } "-Wno-error-" { option = Warn::WNOERROR; goto opt_warn; } */ opt_warn: /*!re2c * { error ("bad warning: %s", *argv); return EXIT_FAIL; } "condition-order" end { warn.set (Warn::CONDITION_ORDER, option); goto opt; } "empty-character-class" end { warn.set (Warn::EMPTY_CHARACTER_CLASS, option); goto opt; } "match-empty-string" end { warn.set (Warn::MATCH_EMPTY_STRING, option); goto opt; } "nondeterministic-tags" end { warn.set (Warn::NONDETERMINISTIC_TAGS, option); goto opt; } "swapped-range" end { warn.set (Warn::SWAPPED_RANGE, option); goto opt; } "undefined-control-flow" end { warn.set (Warn::UNDEFINED_CONTROL_FLOW, option); goto opt; } "unreachable-rules" end { warn.set (Warn::UNREACHABLE_RULES, option); goto opt; } "useless-escape" end { warn.set (Warn::USELESS_ESCAPE, option); goto opt; } */ opt_short: /*!re2c * { error ("bad short option: %s", *argv); return EXIT_FAIL; } end { goto opt; } [?h] { usage (); return EXIT_OK; } "v" { version (); return EXIT_OK; } "V" { vernum (); return EXIT_OK; } "c" { globopts.cFlag = true; goto opt_short; } "D" { globopts.target = TARGET_DOT; goto opt_short; } "f" { globopts.fFlag = true; goto opt_short; } "F" { globopts.FFlag = true; goto opt_short; } "r" { globopts.rFlag = true; goto opt_short; } "S" { globopts.target = TARGET_SKELETON; goto opt_short; } "b" { opts.set_bFlag(true); goto opt_short; } "d" { opts.set_dFlag(true); goto opt_short; } "g" { opts.set_gFlag(true); goto opt_short; } "i" { opts.set_iFlag(true); goto opt_short; } "s" { opts.set_sFlag(true); goto opt_short; } "T" { opts.set_tags(true); goto opt_short; } "P" { opts.set_posix_captures(true); goto opt_short; } "e" { opts.set_encoding(Enc::EBCDIC); goto opt_short; } "u" { opts.set_encoding(Enc::UTF32); goto opt_short; } "w" { opts.set_encoding(Enc::UCS2); goto opt_short; } "x" { opts.set_encoding(Enc::UTF16); goto opt_short; } "8" { opts.set_encoding(Enc::UTF8); goto opt_short; } "o" end { if (!next (YYCURSOR, argv)) { error_arg ("-o, --output"); return EXIT_FAIL; } goto opt_output; } "o" { *argv = YYCURSOR; goto opt_output; } "t" end { if (!next (YYCURSOR, argv)) { error_arg ("-t, --type-header"); return EXIT_FAIL; } goto opt_header; } "t" { *argv = YYCURSOR; goto opt_header; } "1" { goto opt_short; } // deprecated */ opt_long: /*!re2c * { error ("bad long option: %s", *argv); return EXIT_FAIL; } "help" end { usage (); return EXIT_OK; } "version" end { version (); return EXIT_OK; } "vernum" end { vernum (); return EXIT_OK; } "start-conditions" end { globopts.cFlag = true; goto opt; } "emit-dot" end { globopts.target = TARGET_DOT; goto opt; } "storable-state" end { globopts.fFlag = true; goto opt; } "flex-syntax" end { globopts.FFlag = true; goto opt; } "reusable" end { globopts.rFlag = true; goto opt; } "no-generation-date" end { globopts.bNoGenerationDate = true; goto opt; } "no-version" end { globopts.version = false; goto opt; } "skeleton" end { globopts.target = TARGET_SKELETON; goto opt; } "bit-vectors" end { opts.set_bFlag (true); goto opt; } "debug-output" end { opts.set_dFlag (true); goto opt; } "computed-gotos" end { opts.set_gFlag (true); goto opt; } "no-debug-info" end { opts.set_iFlag (true); goto opt; } "nested-ifs" end { opts.set_sFlag (true); goto opt; } "case-insensitive" end { opts.set_bCaseInsensitive (true); goto opt; } "case-inverted" end { opts.set_bCaseInverted (true); goto opt; } "tags" end { opts.set_tags (true); goto opt; } "posix-captures" end { opts.set_posix_captures(true); goto opt; } "no-lookahead" end { opts.set_lookahead(false); goto opt; } "no-optimize-tags" end { opts.set_optimize_tags(false); goto opt; } "eager-skip" end { opts.set_eager_skip(true); goto opt; } "ecb" end { opts.set_encoding(Enc::EBCDIC); goto opt; } "unicode" end { opts.set_encoding(Enc::UTF32); goto opt; } "wide-chars" end { opts.set_encoding(Enc::UCS2); goto opt; } "utf-16" end { opts.set_encoding(Enc::UTF16); goto opt; } "utf-8" end { opts.set_encoding(Enc::UTF8); goto opt; } "output" end { if (!next (YYCURSOR, argv)) { error_arg ("-o, --output"); return EXIT_FAIL; } goto opt_output; } "type-header" end { if (!next (YYCURSOR, argv)) { error_arg ("-t, --type-header"); return EXIT_FAIL; } goto opt_header; } "encoding-policy" end { goto opt_encoding_policy; } "input" end { goto opt_input; } "empty-class" end { goto opt_empty_class; } "dfa-minimization" end { goto opt_dfa_minimization; } "single-pass" end { goto opt; } // deprecated "dump-nfa" end { globopts.dump_nfa = true; goto opt; } "dump-dfa-raw" end { globopts.dump_dfa_raw = true; goto opt; } "dump-dfa-det" end { globopts.dump_dfa_det = true; goto opt; } "dump-dfa-tagopt" end { globopts.dump_dfa_tagopt = true; goto opt; } "dump-dfa-min" end { globopts.dump_dfa_min = true; goto opt; } "dump-adfa" end { globopts.dump_adfa = true; goto opt; } */ opt_output: /*!re2c * { error ("bad argument to option -o, --output: %s", *argv); return EXIT_FAIL; } filename end { globopts.output_file = *argv; goto opt; } */ opt_header: /*!re2c * { error ("bad argument to option -t, --type-header: %s", *argv); return EXIT_FAIL; } filename end { globopts.header_file = *argv; goto opt; } */ opt_encoding_policy: if (!next (YYCURSOR, argv)) { error_arg ("--encoding-policy"); return EXIT_FAIL; } /*!re2c * { error ("bad argument to option --encoding-policy (expected: ignore | substitute | fail): %s", *argv); return EXIT_FAIL; } "ignore" end { opts.set_encoding_policy (Enc::POLICY_IGNORE); goto opt; } "substitute" end { opts.set_encoding_policy (Enc::POLICY_SUBSTITUTE); goto opt; } "fail" end { opts.set_encoding_policy (Enc::POLICY_FAIL); goto opt; } */ opt_input: if (!next (YYCURSOR, argv)) { error_arg ("--input"); return EXIT_FAIL; } /*!re2c * { error ("bad argument to option --input (expected: default | custom): %s", *argv); return EXIT_FAIL; } "default" end { opts.set_input_api(INPUT_DEFAULT); goto opt; } "custom" end { opts.set_input_api(INPUT_CUSTOM); goto opt; } */ opt_empty_class: if (!next (YYCURSOR, argv)) { error_arg ("--empty-class"); return EXIT_FAIL; } /*!re2c * { error ("bad argument to option --empty-class (expected: match-empty | match-none | error): %s", *argv); return EXIT_FAIL; } "match-empty" end { opts.set_empty_class_policy (EMPTY_CLASS_MATCH_EMPTY); goto opt; } "match-none" end { opts.set_empty_class_policy (EMPTY_CLASS_MATCH_NONE); goto opt; } "error" end { opts.set_empty_class_policy (EMPTY_CLASS_ERROR); goto opt; } */ opt_dfa_minimization: if (!next (YYCURSOR, argv)) { error_arg ("--minimization"); return EXIT_FAIL; } /*!re2c * { error ("bad argument to option --dfa-minimization (expected: table | moore): %s", *argv); return EXIT_FAIL; } "table" end { opts.set_dfa_minimization (DFA_MINIMIZATION_TABLE); goto opt; } "moore" end { opts.set_dfa_minimization (DFA_MINIMIZATION_MOORE); goto opt; } */ end: if (!opts.source_file) { error ("no source file"); return EXIT_FAIL; } globopts.fix(); return OK; #undef YYCTYPE } } // namespace re2c re2c-1.0.1/src/re/0000755000175000017500000000000013143420715010542 500000000000000re2c-1.0.1/src/re/fixed_tags.cc0000644000175000017500000000442613142624070013113 00000000000000#include #include #include "src/code/input_api.h" #include "src/conf/opt.h" #include "src/re/re.h" #include "src/re/tag.h" namespace re2c { /* note [fixed and variable tags] * * If distance between two tags is constant (equal for all strings that * match the given regexp), then lexer only needs to track one of them: * the second tag equals the first tag plus static offset. * * However, this optimization is applied only to tags in top-level * concatenation, because other tags may be uninitialized and we don't * want to mess with conditional calculation of fixed tags. * * Furthermore, fixed tags are fobidden with generic API because it cannot * express fixed offsets. * * Tags with history also cannot be fixed. * * Another special case is fictive tags (those that exist only to impose * hierarchical laws of POSIX disambiguation). We treat them as fixed * in order to suppress code generation. */ static void find_fixed_tags(RE *re, std::vector &tags, size_t &dist, size_t &base, bool toplevel) { switch (re->type) { case RE::NIL: break; case RE::SYM: if (dist != Tag::VARDIST) ++dist; break; case RE::ALT: { size_t d1 = dist, d2 = dist; find_fixed_tags(re->alt.re1, tags, d1, base, false); find_fixed_tags(re->alt.re2, tags, d2, base, false); dist = (d1 == d2) ? d1 : Tag::VARDIST; break; } case RE::CAT: find_fixed_tags(re->cat.re2, tags, dist, base, toplevel); find_fixed_tags(re->cat.re1, tags, dist, base, toplevel); break; case RE::ITER: find_fixed_tags(re->iter.re, tags, dist, base, false); dist = Tag::VARDIST; break; case RE::TAG: { // see note [fixed and variable tags] Tag &tag = tags[re->tag.idx]; if (fictive(tag)) { tag.base = tag.dist = 0; } else if (toplevel && dist != Tag::VARDIST && !history(tag)) { tag.base = base; tag.dist = dist; } else if (toplevel) { base = re->tag.idx; dist = 0; } if (trailing(tag)) dist = 0; break; } } } void find_fixed_tags(RESpec &spec) { const bool generic = spec.opts->input_api == INPUT_CUSTOM; std::vector::iterator i = spec.res.begin(), e = spec.res.end(); for (; i != e; ++i) { size_t base = Tag::RIGHTMOST, dist = 0; find_fixed_tags(*i, spec.tags, dist, base, !generic); } } } // namespace re2c re2c-1.0.1/src/re/rule.h0000644000175000017500000000263513143415521011607 00000000000000#ifndef _RE2C_RE_RULE_ #define _RE2C_RE_RULE_ #include #include "src/util/c99_stdint.h" #include #include #include "src/re/tag.h" #include "src/util/free_list.h" namespace re2c { struct Code { static free_list flist; std::string fname; uint32_t fline; bool autogen; const std::string text; std::string cond; Code(const std::string &file, uint32_t line) : fname(file) , fline(line) , autogen(true) , text("") , cond("") { flist.insert(this); } Code(const std::string &file, uint32_t line, const char *s, size_t slen) : fname(file) , fline(line) , autogen(false) , text(s, slen) , cond("") { flist.insert(this); } ~Code() { flist.erase(this); } }; struct Rule { static const size_t NONE; const Code *code; std::set shadow; // tags size_t ltag; // first size_t htag; // next to last size_t ttag; // trailing context size_t ncap; // number of POSIX captures Rule(): code(NULL), shadow(), ltag(0), htag(0), ttag(0), ncap(0) {} // copy ctor and assignment are required for containers on macOS Rule(const Rule &r) : code(r.code) , shadow(r.shadow) , ltag(r.ltag) , htag(r.htag) , ttag(r.ttag) , ncap(r.ncap) {} Rule& operator= (const Rule &r) { code = r.code; shadow = r.shadow; ltag = r.ltag; htag = r.htag; ttag = r.ttag; ncap = r.ncap; return *this; } }; } // namespace re2c #endif // _RE2C_RE_RULE_ re2c-1.0.1/src/re/re.h0000644000175000017500000000463713143415033011250 00000000000000#ifndef _RE2C_RE_RE_ #define _RE2C_RE_RE_ #include "src/util/c99_stdint.h" #include "src/conf/opt.h" #include "src/ast/ast.h" #include "src/re/rule.h" #include "src/util/forbid_copy.h" #include "src/util/range.h" #include "src/util/slab_allocator.h" namespace re2c { struct RE { typedef slab_allocator_t<~0u, 4096, sizeof(void*)> alc_t; enum type_t {NIL, SYM, ALT, CAT, ITER, TAG} type; union { const Range *sym; struct { RE *re1; RE *re2; } alt; struct { RE *re1; RE *re2; } cat; struct { RE *re; uint32_t min; uint32_t max; } iter; struct { size_t idx; bool bottom; } tag; }; }; struct RESpec { RE::alc_t alc; std::vector res; std::vector &charset; std::vector &tags; std::valarray &rules; const opt_t *opts; Warn &warn; explicit RESpec(const std::vector &ast, const opt_t *o, Warn &w); FORBID_COPY(RESpec); }; void split_charset(RESpec &spec); void find_fixed_tags(RESpec &spec); void insert_default_tags(RESpec &spec); void warn_nullable(const RESpec &spec, const std::string &cond); inline RE *re_nil(RE::alc_t &alc) { RE *x = alc.alloct(1); x->type = RE::NIL; return x; } inline RE *re_sym(RE::alc_t &alc, const Range *r) { RE *x = alc.alloct(1); x->type = RE::SYM; x->sym = r; return x; } inline RE *re_alt(RE::alc_t &alc, RE *x, RE *y) { if (!x) return y; if (!y) return x; if (x->type == RE::SYM && y->type == RE::SYM) { return re_sym(alc, Range::add(x->sym, y->sym)); } RE *z = alc.alloct(1); z->type = RE::ALT; z->alt.re1 = x; z->alt.re2 = y; return z; } inline RE *re_cat(RE::alc_t &alc, RE *x, RE *y) { if (!x) return y; if (!y) return x; RE *z = alc.alloct(1); z->type = RE::CAT; z->cat.re1 = x; z->cat.re2 = y; return z; } inline RE *re_iter(RE::alc_t &alc, RE *x, uint32_t n, uint32_t m) { RE *y = alc.alloct(1); y->type = RE::ITER; y->iter.re = x; y->iter.min = n; y->iter.max = m; return y; } inline RE *re_tag(RE::alc_t &alc, size_t i, bool b) { RE *x = alc.alloct(1); x->type = RE::TAG; x->tag.idx = i; x->tag.bottom = b; return x; } RE *re_schar(RE::alc_t &alc, uint32_t line, uint32_t column, uint32_t c, const opt_t *opts); RE *re_ichar(RE::alc_t &alc, uint32_t line, uint32_t column, uint32_t c, const opt_t *opts); RE *re_class(RE::alc_t &alc, uint32_t line, uint32_t column, const Range *r, const opt_t *opts, Warn &warn); } // namespace re2c #endif // _RE2C_RE_RE_ re2c-1.0.1/src/re/default_tags.cc0000644000175000017500000000265213142624070013437 00000000000000#include #include #include "src/re/re.h" namespace re2c { // Fictive tags do not really need default counterparts: // maximization can work without them based on version numbers. // For now it does not seem like a useful optimization, but some day // in future it might change. static void insert_default_tags(RESpec &spec, RE *re, size_t *&tidx) { RE::alc_t &alc = spec.alc; switch (re->type) { case RE::NIL: break; case RE::SYM: break; case RE::ALT: { size_t *i = tidx; RE *x = re_nil(alc), *y = re_nil(alc); insert_default_tags(spec, re->alt.re1, tidx); for (; i < tidx; ++i) { x = re_cat(alc, x, re_tag(alc, *i, true)); } insert_default_tags(spec, re->alt.re2, tidx); for (; i < tidx; ++i) { y = re_cat(alc, y, re_tag(alc, *i, true)); } re->alt.re1 = re_cat(alc, re->alt.re1, y); re->alt.re2 = re_cat(alc, re->alt.re2, x); break; } case RE::CAT: insert_default_tags(spec, re->cat.re1, tidx); insert_default_tags(spec, re->cat.re2, tidx); break; case RE::ITER: insert_default_tags(spec, re->iter.re, tidx); break; case RE::TAG: *tidx++ = re->tag.idx; break; } } void insert_default_tags(RESpec &spec) { size_t *tidx0 = new size_t[spec.tags.size()], *tidx = tidx0; std::vector::iterator i = spec.res.begin(), e = spec.res.end(); for (; i != e; ++i) { insert_default_tags(spec, *i, tidx); } delete[] tidx0; } } // namespace re2c re2c-1.0.1/src/re/rule.cc0000644000175000017500000000026113137447264011752 00000000000000#include #include "src/re/rule.h" namespace re2c { free_list Code::flist; const size_t Rule::NONE = std::numeric_limits::max(); } // namespace re2c re2c-1.0.1/src/re/encoding/0000755000175000017500000000000013143420715012330 500000000000000re2c-1.0.1/src/re/encoding/enc.cc0000644000175000017500000001531313142624070013326 00000000000000#include "src/re/encoding/enc.h" #include #include "src/util/range.h" namespace re2c { const uint32_t Enc::SURR_MIN = 0xD800; const uint32_t Enc::SURR_MAX = 0xDFFF; const uint32_t Enc::UNICODE_ERROR = 0xFFFD; const uint32_t Enc::asc2ebc[256] = { /* Based on ISO 8859/1 and Code Page 37 */ 0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, 0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, 0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, 0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, 0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, 0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xba, 0xe0, 0xbb, 0xb0, 0x6d, 0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07, 0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, 0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, 0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, 0x41, 0xaa, 0x4a, 0xb1, 0x9f, 0xb2, 0x6a, 0xb5, 0xbd, 0xb4, 0x9a, 0x8a, 0x5f, 0xca, 0xaf, 0xbc, 0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3, 0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, 0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68, 0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, 0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf, 0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xad, 0x8e, 0x59, 0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48, 0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, 0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1, 0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0xae, 0xdf }; const uint32_t Enc::ebc2asc[256] = { /* Based on ISO 8859/1 and Code Page 37 */ 0x00, 0x01, 0x02, 0x03, 0x9c, 0x09, 0x86, 0x7f, 0x97, 0x8d, 0x8e, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x9d, 0x85, 0x08, 0x87, 0x18, 0x19, 0x92, 0x8f, 0x1c, 0x1d, 0x1e, 0x1f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x0a, 0x17, 0x1b, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x05, 0x06, 0x07, 0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04, 0x98, 0x99, 0x9a, 0x9b, 0x14, 0x15, 0x9e, 0x1a, 0x20, 0xa0, 0xe2, 0xe4, 0xe0, 0xe1, 0xe3, 0xe5, 0xe7, 0xf1, 0xa2, 0x2e, 0x3c, 0x28, 0x2b, 0x7c, 0x26, 0xe9, 0xea, 0xeb, 0xe8, 0xed, 0xee, 0xef, 0xec, 0xdf, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0xac, 0x2d, 0x2f, 0xc2, 0xc4, 0xc0, 0xc1, 0xc3, 0xc5, 0xc7, 0xd1, 0xa6, 0x2c, 0x25, 0x5f, 0x3e, 0x3f, 0xf8, 0xc9, 0xca, 0xcb, 0xc8, 0xcd, 0xce, 0xcf, 0xcc, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22, 0xd8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0xab, 0xbb, 0xf0, 0xfd, 0xde, 0xb1, 0xb0, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0xaa, 0xba, 0xe6, 0xb8, 0xc6, 0xa4, 0xb5, 0x7e, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0xa1, 0xbf, 0xd0, 0xdd, 0xfe, 0xae, 0x5e, 0xa3, 0xa5, 0xb7, 0xa9, 0xa7, 0xb6, 0xbc, 0xbd, 0xbe, 0x5b, 0x5d, 0xaf, 0xa8, 0xb4, 0xd7, 0x7b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0xad, 0xf4, 0xf6, 0xf2, 0xf3, 0xf5, 0x7d, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0xb9, 0xfb, 0xfc, 0xf9, 0xfa, 0xff, 0x5c, 0xf7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0xb2, 0xd4, 0xd6, 0xd2, 0xd3, 0xd5, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0xb3, 0xdb, 0xdc, 0xd9, 0xda, 0x9f }; /* * Returns code point representation for current * encoding with regard to current policy. * * Since code point is exacly specified by user, * it is assumed that user considers it to be valid. * We must check it. * * Returns false if this code point exceeds maximum * or is forbidden by current policy, otherwise * returns true. Overwrites code point. */ bool Enc::encode(uint32_t & c) const { if (c >= nCodePoints ()) { return false; } switch (type_) { case ASCII: return true; case EBCDIC: c = asc2ebc[c]; return true; case UCS2: case UTF16: case UTF32: case UTF8: if (c < SURR_MIN || c > SURR_MAX) return true; else { switch (policy_) { case POLICY_FAIL: return false; case POLICY_SUBSTITUTE: c = UNICODE_ERROR; return true; case POLICY_IGNORE: return true; } } } return false; // to silence gcc warning } /* * Returns original representation of code point. * Assumes code point is valid (hence 'unsafe'). */ uint32_t Enc::decodeUnsafe(uint32_t c) const { switch (type_) { case EBCDIC: c = ebc2asc[c & 0xFF]; break; case ASCII: case UCS2: case UTF16: case UTF32: case UTF8: break; } return c; } /* * Returns [l - h] range representation for current * encoding with regard to current policy. * * Since range borders are exacly specified by user, * it is assumed that user considers that all code * points from this range are valid. re2c must check it. * * Returns NULL if range contains code points that * exceed maximum or are forbidden by current policy, * otherwise returns pointer to newly constructed range. */ Range * Enc::encodeRange(uint32_t l, uint32_t h) const { if (l >= nCodePoints () || h >= nCodePoints ()) { return NULL; } Range * r = NULL; switch (type_) { case ASCII: r = Range::ran (l, h + 1); break; case EBCDIC: { const uint32_t el = asc2ebc[l]; r = Range::sym (el); for (uint32_t c = l + 1; c <= h; ++c) { const uint32_t ec = asc2ebc[c]; r = Range::add (r, Range::sym (ec)); } break; } case UCS2: case UTF16: case UTF32: case UTF8: r = Range::ran (l, h + 1); if (l <= SURR_MAX && h >= SURR_MIN) { switch (policy_) { case POLICY_FAIL: r = NULL; break; case POLICY_SUBSTITUTE: { Range * surrs = Range::ran (SURR_MIN, SURR_MAX + 1); Range * error = Range::sym (UNICODE_ERROR); r = Range::sub (r, surrs); r = Range::add (r, error); break; } case POLICY_IGNORE: break; } } break; } return r; } /* * Returns full range representation for current encoding * with regard to current policy. * * Since range is defined declaratively, re2c does * all the necessary corrections 'for free'. * * Always succeeds, returns pointer to newly constructed * range. */ Range * Enc::fullRange() const { Range * r = Range::ran (0, nCodePoints()); if (policy_ != POLICY_IGNORE) { Range * surrs = Range::ran (SURR_MIN, SURR_MAX + 1); r = Range::sub (r, surrs); } return r; } } // namespace re2c re2c-1.0.1/src/re/encoding/enc.h0000644000175000017500000001035713142626570013202 00000000000000#ifndef _RE2C_RE_ENCODING_ENC_ #define _RE2C_RE_ENCODING_ENC_ #include "src/util/c99_stdint.h" namespace re2c { class Range; /* * note [encodings] * * Each encoding defines two concepts: * * 1) Code point -- abstract number, which represents single encoding symbol. * E.g., Unicode defines code points in the range [0 - 0x10FFFF] , so each * Unicode encoding must be capable of representing 0x110000 code points. * * 2) Code unit -- the smallest unit of memory, which is used in the encoded * text. One or more code units can be needed to represent a single code * point, depending on the encoding. For each encoding, all code points * either are represented with equal number of code units (fixed-length * encodings), or with variable number of code units (variable-length * encodings). * * +----------+------------------+-----------------------+-----------------+----------------+ * | encoding | code point range | code point size | code unit range | code unit size | * +----------+------------------+-----------------------+-----------------+----------------+ * | ASCII | 0 - 0xFF | fixed, 1 byte | 0 - 0xFF | 1 byte | * | EBCDIC | 0 - 0xFF | fixed, 1 byte | 0 - 0xFF | 1 byte | * | UCS2 | 0 - 0xFFFF | fixed, 2 bytes | 0 - 0xFFFF | 2 bytes | * | UTF16 | 0 - 0x10FFFF | variable, 2 - 4 bytes | 0 - 0xFFFF | 2 bytes | * | UTF32 | 0 - 0x10FFFF | fixed, 4 bytes | 0 - 0x10FFFF | 4 bytes | * | UTF8 | 0 - 0x10FFFF | variable, 1 - 4 bytes | 0 - 0xFF | 1 byte | * +----------+------------------+-----------------------+-----------------+----------------+ */ class Enc { public: // Supported encodings. enum type_t { ASCII , EBCDIC , UCS2 , UTF16 , UTF32 , UTF8 }; // What to do with invalid code points enum policy_t { POLICY_FAIL , POLICY_SUBSTITUTE , POLICY_IGNORE }; private: static const uint32_t asc2ebc[256]; static const uint32_t ebc2asc[256]; static const uint32_t SURR_MIN; static const uint32_t SURR_MAX; static const uint32_t UNICODE_ERROR; type_t type_; policy_t policy_; public: Enc() : type_ (ASCII) , policy_ (POLICY_IGNORE) { } static const char * name (type_t t); bool operator != (const Enc & e) const { return type_ != e.type_; } inline uint32_t nCodePoints() const; inline uint32_t nCodeUnits() const; inline uint32_t szCodePoint() const; inline uint32_t szCodeUnit() const; inline void set(type_t t); inline void unset(type_t); inline type_t type () const; inline void setPolicy(policy_t t); bool encode(uint32_t & c) const; uint32_t decodeUnsafe(uint32_t c) const; Range * encodeRange(uint32_t l, uint32_t h) const; Range * fullRange() const; }; inline const char * Enc::name (type_t t) { switch (t) { case ASCII: return "ASCII"; case EBCDIC: return "EBCDIC"; case UTF8: return "UTF8"; case UCS2: return "USC2"; case UTF16: return "UTF16"; case UTF32: return "UTF32"; } return ""; /* error */ } inline uint32_t Enc::nCodePoints() const { switch (type_) { case ASCII: case EBCDIC: return 0x100; case UCS2: return 0x10000; case UTF16: case UTF32: case UTF8: return 0x110000; } return 0; /* error */ } inline uint32_t Enc::nCodeUnits() const { switch (type_) { case ASCII: case EBCDIC: case UTF8: return 0x100; case UCS2: case UTF16: return 0x10000; case UTF32: return 0x110000; } return 0; /* error */ } // returns *maximal* code point size for encoding inline uint32_t Enc::szCodePoint() const { switch (type_) { case ASCII: case EBCDIC: return 1; case UCS2: return 2; case UTF16: case UTF32: case UTF8: return 4; } return 0; /* error */ } inline uint32_t Enc::szCodeUnit() const { switch (type_) { case ASCII: case EBCDIC: case UTF8: return 1; case UCS2: case UTF16: return 2; case UTF32: return 4; } return 0; /* error */ } inline void Enc::set(type_t t) { type_ = t; } inline void Enc::unset(type_t t) { if (type_ == t) type_ = ASCII; } inline Enc::type_t Enc::type () const { return type_; } inline void Enc::setPolicy(policy_t t) { policy_ = t; } } // namespace re2c #endif // _RE2C_RE_ENCODING_ENC_ re2c-1.0.1/src/re/encoding/range_suffix.h0000644000175000017500000000123113142626614015103 00000000000000#ifndef _RE2C_RE_ENCODING_RANGE_SUFFIX_ #define _RE2C_RE_ENCODING_RANGE_SUFFIX_ #include // NULL #include "src/util/c99_stdint.h" #include "src/re/re.h" #include "src/util/forbid_copy.h" #include "src/util/free_list.h" namespace re2c { struct RangeSuffix { static free_list freeList; uint32_t l; uint32_t h; RangeSuffix * next; RangeSuffix * child; RangeSuffix (uint32_t lo, uint32_t hi) : l (lo) , h (hi) , next (NULL) , child (NULL) { freeList.insert(this); } FORBID_COPY (RangeSuffix); }; RE *to_regexp(RE::alc_t &alc, RangeSuffix *p); } // namespace re2c #endif // _RE2C_RE_ENCODING_RANGE_SUFFIX_ re2c-1.0.1/src/re/encoding/case.h0000644000175000017500000000103013137447264013341 00000000000000#ifndef _RE2C_RE_ENCODING_CASE_ #define _RE2C_RE_ENCODING_CASE_ #include "src/util/c99_stdint.h" namespace re2c { // TODO: support non-ASCII encodings bool is_alpha (uint32_t c); uint32_t to_lower_unsafe (uint32_t c); uint32_t to_upper_unsafe (uint32_t c); inline bool is_alpha (uint32_t c) { return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'); } inline uint32_t to_lower_unsafe (uint32_t c) { return c | 0x20u; } inline uint32_t to_upper_unsafe (uint32_t c) { return c & ~0x20u; } } #endif // _RE2C_RE_ENCODING_CASE_ re2c-1.0.1/src/re/encoding/range_suffix.cc0000644000175000017500000000123113137447264015247 00000000000000#include "src/re/encoding/range_suffix.h" #include "src/util/range.h" namespace re2c { static RE *emit(RE::alc_t &alc, RangeSuffix *p, RE *re); free_list RangeSuffix::freeList; RE *to_regexp(RE::alc_t &alc, RangeSuffix *p) { return p ? emit(alc, p, NULL) : re_sym(alc, NULL); } /* * Build regexp from suffix tree. */ RE *emit(RE::alc_t &alc, RangeSuffix *p, RE *re) { if (p == NULL) { return re; } else { RE *regexp = NULL; for (; p != NULL; p = p->next) { RE *re1 = re_cat(alc, re_sym(alc, Range::ran(p->l, p->h + 1)), re); regexp = re_alt(alc, regexp, emit(alc, p->child, re1)); } return regexp; } } } // namespace re2c re2c-1.0.1/src/re/encoding/utf8/0000755000175000017500000000000013143420715013216 500000000000000re2c-1.0.1/src/re/encoding/utf8/utf8_regexp.cc0000644000175000017500000000200313142626552015706 00000000000000#include #include "src/util/c99_stdint.h" #include "src/re/encoding/range_suffix.h" #include "src/re/encoding/utf8/utf8_range.h" #include "src/re/encoding/utf8/utf8_regexp.h" #include "src/util/range.h" namespace re2c { RE *UTF8Symbol(RE::alc_t &alc, utf8::rune r) { uint32_t chars[utf8::MAX_RUNE_LENGTH]; const uint32_t chars_count = utf8::rune_to_bytes(chars, r); RE *re = re_sym(alc, Range::sym(chars[0])); for (uint32_t i = 1; i < chars_count; ++i) { re = re_cat(alc, re, re_sym(alc, Range::sym(chars[i]))); } return re; } /* * Split Unicode character class {[l1, h1), ..., [lN, hN)} into * ranges [l1, h1-1], ..., [lN, hN-1] and return alternation of * them. We store partially built range in suffix tree, which * allows to eliminate common suffixes while building. */ RE *UTF8Range(RE::alc_t &alc, const Range *r) { RangeSuffix * root = NULL; for (; r != NULL; r = r->next ()) UTF8splitByRuneLength(root, r->lower (), r->upper () - 1); return to_regexp(alc, root); } } // namespace re2c re2c-1.0.1/src/re/encoding/utf8/utf8_range.cc0000644000175000017500000000622013142624070015506 00000000000000#include "src/re/encoding/utf8/utf8_range.h" #include #include "src/re/encoding/range_suffix.h" namespace re2c { /* * Now that we have catenation of byte ranges [l1-h1]...[lN-hN], * we want to add it to existing range, merging suffixes on the fly. */ void UTF8addContinuous(RangeSuffix * & root, utf8::rune l, utf8::rune h, uint32_t n) { uint32_t lcs[utf8::MAX_RUNE_LENGTH]; uint32_t hcs[utf8::MAX_RUNE_LENGTH]; utf8::rune_to_bytes(lcs, l); utf8::rune_to_bytes(hcs, h); RangeSuffix ** p = &root; for (uint32_t i = 1; i <= n; ++i) { const uint32_t lc = lcs[n - i]; const uint32_t hc = hcs[n - i]; for (;;) { if (*p == NULL) { *p = new RangeSuffix(lc, hc); p = &(*p)->child; break; } else if ((*p)->l == lc && (*p)->h == hc) { p = &(*p)->child; break; } else p = &(*p)->next; } } } /* * Split range into sub-ranges that agree on leading bytes. * * We have two Unicode runes of equal length, L and H, which * map to UTF-8 sequences 'L_1 ... L_n' and 'H_1 ... H_n'. * We want to represent Unicode range [L - H] as a catenation * of byte ranges [L_1 - H_1], ..., [L_n - H_n]. * * This is only possible if for all i > 1: * if L_i /= H_i, then L_(i+1) == 0x80 and H_(i+1) == 0xbf. * This condition ensures that: * 1) all possible UTF-8 sequences between L and H are allowed * 2) no byte ranges [b1 - b2] appear, such that b1 > b2 * * E.g.: * [\U000e0031-\U000e0043] => [f3-f3],[a0-a0],[80-81],[b1-83]. * The last byte range, [b1-83], is incorrect: its lower bound * is greater than its upper bound. To fix this, we must split * the original range into two sub-ranges: * [\U000e0031-\U000e003f] => [f3-f3],[a0-a0],[80-80],[b1-bf] * [\U000e0040-\U000e0043] => [f3-f3],[a0-a0],[81-81],[80-83] * * This function finds all such 'points of discontinuity' * and represents original range as alternation of continuous * sub-ranges. */ void UTF8splitByContinuity(RangeSuffix * & root, utf8::rune l, utf8::rune h, uint32_t n) { for (uint32_t i = 1; i < n; ++i) { uint32_t m = (1u << (6u * i)) - 1u; // last i bytes of a UTF-8 sequence if ((l & ~m) != (h & ~m)) { if ((l & m) != 0) { UTF8splitByContinuity(root, l, l | m, n); UTF8splitByContinuity(root, (l | m) + 1, h, n); return; } if ((h & m) != m) { UTF8splitByContinuity(root, l, (h & ~m) - 1, n); UTF8splitByContinuity(root, h & ~m, h, n); return; } } } UTF8addContinuous(root, l, h, n); } /* * Split range into sub-ranges, so that all runes in the same * sub-range have equal length of UTF-8 sequence. E.g., full * Unicode range [0-0x10FFFF] gets split into sub-ranges: * [0 - 0x7F] (1-byte UTF-8 sequences) * [0x80 - 0x7FF] (2-byte UTF-8 sequences) * [0x800 - 0xFFFF] (3-byte UTF-8 sequences) * [0x10000 - 0x10FFFF] (4-byte UTF-8 sequences) */ void UTF8splitByRuneLength(RangeSuffix * & root, utf8::rune l, utf8::rune h) { const uint32_t nh = utf8::rune_length(h); for (uint32_t nl = utf8::rune_length(l); nl < nh; ++nl) { utf8::rune r = utf8::max_rune(nl); UTF8splitByContinuity(root, l, r, nl); l = r + 1; } UTF8splitByContinuity(root, l, h, nh); } } // namespace re2c re2c-1.0.1/src/re/encoding/utf8/utf8.cc0000644000175000017500000000434313137447264014352 00000000000000#include "src/re/encoding/utf8/utf8.h" namespace re2c { const uint32_t utf8::ERROR = 0xFFFDu; const utf8::rune utf8::MAX_1BYTE_RUNE = 0x7Fu; const utf8::rune utf8::MAX_2BYTE_RUNE = 0x7FFu; const utf8::rune utf8::MAX_3BYTE_RUNE = 0xFFFFu; const utf8::rune utf8::MAX_4BYTE_RUNE = 0x10FFFFu; const utf8::rune utf8::MAX_RUNE = utf8::MAX_4BYTE_RUNE; const uint32_t utf8::PREFIX_1BYTE = 0u; // 0000 0000 const uint32_t utf8::INFIX = 0x80u; // 1000 0000 const uint32_t utf8::PREFIX_2BYTE = 0xC0u; // 1100 0000 const uint32_t utf8::PREFIX_3BYTE = 0xE0u; // 1110 0000 const uint32_t utf8::PREFIX_4BYTE = 0xF0u; // 1111 0000 const uint32_t utf8::SHIFT = 6u; const uint32_t utf8::MASK = 0x3Fu; // 0011 1111 uint32_t utf8::rune_to_bytes(uint32_t *str, rune c) { // one byte sequence: 0-0x7F => 0xxxxxxx if (c <= MAX_1BYTE_RUNE) { str[0] = PREFIX_1BYTE | c; return 1; } // two byte sequence: 0x80-0x7FF => 110xxxxx 10xxxxxx if (c <= MAX_2BYTE_RUNE) { str[0] = PREFIX_2BYTE | (c >> 1*SHIFT); str[1] = INFIX | (c & MASK); return 2; } // If the Rune is out of range, convert it to the error rune. // Do this test here because the error rune encodes to three bytes. // Doing it earlier would duplicate work, since an out of range // Rune wouldn't have fit in one or two bytes. if (c > MAX_RUNE) c = ERROR; // three byte sequence: 0x800 - 0xFFFF => 1110xxxx 10xxxxxx 10xxxxxx if (c <= MAX_3BYTE_RUNE) { str[0] = PREFIX_3BYTE | (c >> 2*SHIFT); str[1] = INFIX | ((c >> 1*SHIFT) & MASK); str[2] = INFIX | (c & MASK); return 3; } // four byte sequence (21-bit value): // 0x10000 - 0x1FFFFF => 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx str[0] = PREFIX_4BYTE | (c >> 3*SHIFT); str[1] = INFIX | ((c >> 2*SHIFT) & MASK); str[2] = INFIX | ((c >> 1*SHIFT) & MASK); str[3] = INFIX | (c & MASK); return 4; } uint32_t utf8::rune_length(rune r) { if (r <= MAX_2BYTE_RUNE) return r <= MAX_1BYTE_RUNE ? 1 : 2; else return r <= MAX_3BYTE_RUNE ? 3 : 4; } utf8::rune utf8::max_rune(uint32_t i) { switch (i) { case 1: return MAX_1BYTE_RUNE; case 2: return MAX_2BYTE_RUNE; case 3: return MAX_3BYTE_RUNE; case 4: return MAX_4BYTE_RUNE; default: return ERROR; } } } // namespace re2c re2c-1.0.1/src/re/encoding/utf8/utf8.h0000644000175000017500000000217613142626515014210 00000000000000#ifndef _RE2C_RE_ENCODING_UTF8_UTF8_ #define _RE2C_RE_ENCODING_UTF8_UTF8_ #include "src/util/c99_stdint.h" namespace re2c { class utf8 { public: typedef uint32_t rune; // maximum characters per rune // enum instead of static const member because of [-Wvla] enum { MAX_RUNE_LENGTH = 4u }; // decoding error static const uint32_t ERROR; // maximal runes for each rune length static const rune MAX_1BYTE_RUNE; static const rune MAX_2BYTE_RUNE; static const rune MAX_3BYTE_RUNE; static const rune MAX_4BYTE_RUNE; static const rune MAX_RUNE; static const uint32_t PREFIX_1BYTE; static const uint32_t INFIX; static const uint32_t PREFIX_2BYTE; static const uint32_t PREFIX_3BYTE; static const uint32_t PREFIX_4BYTE; static const uint32_t SHIFT; static const uint32_t MASK; // UTF-8 bytestring for given Unicode rune static uint32_t rune_to_bytes(uint32_t * s, rune r); // length of UTF-8 bytestring for given Unicode rune static uint32_t rune_length(rune r); // maximal Unicode rune with given length of UTF-8 bytestring static rune max_rune(uint32_t i); }; } // namespace re2c #endif // _RE2C_RE_ENCODING_UTF8_UTF8_ re2c-1.0.1/src/re/encoding/utf8/utf8_regexp.h0000644000175000017500000000051213137447264015560 00000000000000#ifndef _RE2C_RE_ENCODING_UTF8_REGEXP_ #define _RE2C_RE_ENCODING_UTF8_REGEXP_ #include "src/re/re.h" #include "src/re/encoding/utf8/utf8.h" namespace re2c { class Range; RE *UTF8Symbol(RE::alc_t &alc, utf8::rune r); RE *UTF8Range(RE::alc_t &alc, const Range *r); } // namespace re2c #endif // _RE2C_RE_ENCODING_UTF8_REGEXP_ re2c-1.0.1/src/re/encoding/utf8/utf8_range.h0000644000175000017500000000077213142626531015362 00000000000000#ifndef _RE2C_RE_ENCODING_UTF8_RANGE_ #define _RE2C_RE_ENCODING_UTF8_RANGE_ #include "src/util/c99_stdint.h" #include "src/re/encoding/utf8/utf8.h" namespace re2c { struct RangeSuffix; void UTF8addContinuous(RangeSuffix * & root, utf8::rune l, utf8::rune h, uint32_t n); void UTF8splitByContinuity(RangeSuffix * & root, utf8::rune l, utf8::rune h, uint32_t n); void UTF8splitByRuneLength(RangeSuffix * & root, utf8::rune l, utf8::rune h); } // namespace re2c #endif // _RE2C_RE_ENCODING_UTF8_RANGE_ re2c-1.0.1/src/re/encoding/utf16/0000755000175000017500000000000013143420715013275 500000000000000re2c-1.0.1/src/re/encoding/utf16/utf16_regexp.cc0000644000175000017500000000200313142626506016043 00000000000000#include #include "src/util/c99_stdint.h" #include "src/re/encoding/range_suffix.h" #include "src/re/encoding/utf16/utf16_range.h" #include "src/re/encoding/utf16/utf16_regexp.h" #include "src/util/range.h" namespace re2c { RE *UTF16Symbol(RE::alc_t &alc, utf16::rune r) { if (r <= utf16::MAX_1WORD_RUNE) { return re_sym(alc, Range::sym(r)); } else { const uint32_t ld = utf16::lead_surr(r); const uint32_t tr = utf16::trail_surr(r); return re_cat(alc, re_sym(alc, Range::sym(ld)), re_sym(alc, Range::sym(tr))); } } /* * Split Unicode character class {[l1, h1), ..., [lN, hN)} into * ranges [l1, h1-1], ..., [lN, hN-1] and return alternation of * them. We store partially built range in suffix tree, which * allows to eliminate common suffixes while building. */ RE *UTF16Range(RE::alc_t &alc, const Range *r) { RangeSuffix * root = NULL; for (; r != NULL; r = r->next ()) UTF16splitByRuneLength(root, r->lower (), r->upper () - 1); return to_regexp(alc, root); } } // namespace re2c re2c-1.0.1/src/re/encoding/utf16/utf16_range.h0000644000175000017500000000116513142626470015517 00000000000000#ifndef _RE2C_RE_ENCODING_UTF16_RANGE_ #define _RE2C_RE_ENCODING_UTF16_RANGE_ #include "src/util/c99_stdint.h" #include "src/re/encoding/utf16/utf16.h" namespace re2c { struct RangeSuffix; void UTF16addContinuous1(RangeSuffix * & root, uint32_t l, uint32_t h); void UTF16addContinuous2(RangeSuffix * & root, uint32_t l_ld, uint32_t h_ld, uint32_t l_tr, uint32_t h_tr); void UTF16splitByContinuity(RangeSuffix * & root, uint32_t l_ld, uint32_t h_ld, uint32_t l_tr, uint32_t h_tr); void UTF16splitByRuneLength(RangeSuffix * & root, utf16::rune l, utf16::rune h); } // namespace re2c #endif // _RE2C_RE_ENCODING_UTF16_RANGE_ re2c-1.0.1/src/re/encoding/utf16/utf16.cc0000644000175000017500000000042013137447264014500 00000000000000#include "src/re/encoding/utf16/utf16.h" namespace re2c { const uint32_t utf16::MAX_1WORD_RUNE = 0xFFFFu; const uint32_t utf16::MIN_LEAD_SURR = 0xD800u; const uint32_t utf16::MIN_TRAIL_SURR = 0xDC00u; const uint32_t utf16::MAX_TRAIL_SURR = 0xDFFFu; } // namespace re2c re2c-1.0.1/src/re/encoding/utf16/utf16_range.cc0000644000175000017500000000727513142624070015657 00000000000000#include "src/re/encoding/utf16/utf16_range.h" #include #include "src/re/encoding/range_suffix.h" namespace re2c { /* * Add word range [w1-w2]. */ void UTF16addContinuous1(RangeSuffix * & root, uint32_t l, uint32_t h) { RangeSuffix ** p = &root; for (;;) { if (*p == NULL) { *p = new RangeSuffix(l, h); break; } else if ((*p)->l == l && (*p)->h == h) { break; } else p = &(*p)->next; } } /* * Now that we have catenation of word ranges [l1-h1],[l2-h2], * we want to add it to existing range, merging suffixes on the fly. */ void UTF16addContinuous2(RangeSuffix * & root, uint32_t l_ld, uint32_t h_ld, uint32_t l_tr, uint32_t h_tr) { RangeSuffix ** p = &root; for (;;) { if (*p == NULL) { *p = new RangeSuffix(l_tr, h_tr); p = &(*p)->child; break; } else if ((*p)->l == l_tr && (*p)->h == h_tr) { p = &(*p)->child; break; } else p = &(*p)->next; } for (;;) { if (*p == NULL) { *p = new RangeSuffix(l_ld, h_ld); break; } else if ((*p)->l == l_ld && (*p)->h == h_ld) { break; } else p = &(*p)->next; } } /* * Split range into sub-ranges that agree on leading surrogates. * * We have two Unicode runes, L and H, both map to UTF-16 * surrogate pairs 'L1 L2' and 'H1 H2'. * We want to represent Unicode range [L - H] as a catenation * of word ranges [L1 - H1],[L2 - H2]. * * This is only possible if the following condition holds: * if L1 /= H1, then L2 == 0xdc00 and H2 == 0xdfff. * This condition ensures that: * 1) all possible UTF-16 sequences between L and H are allowed * 2) no word ranges [w1 - w2] appear, such that w1 > w2 * * E.g.: * [\U00010001-\U00010400] => [d800-d801],[dc01-dc00]. * The last word range, [dc01-dc00], is incorrect: its lower bound * is greater than its upper bound. To fix this, we must split * the original range into two sub-ranges: * [\U00010001-\U000103ff] => [d800-d800],[dc01-dfff] * [\U00010400-\U00010400] => [d801-d801],[dc00-dc00] * * This function finds all such 'points of discontinuity' * and represents original range as alternation of continuous * sub-ranges. */ void UTF16splitByContinuity(RangeSuffix * & root, uint32_t l_ld, uint32_t h_ld, uint32_t l_tr, uint32_t h_tr) { if (l_ld != h_ld) { if (l_tr > utf16::MIN_TRAIL_SURR) { UTF16splitByContinuity(root, l_ld, l_ld, l_tr, utf16::MAX_TRAIL_SURR); UTF16splitByContinuity(root, l_ld + 1, h_ld, utf16::MIN_TRAIL_SURR, h_tr); return; } if (h_tr < utf16::MAX_TRAIL_SURR) { UTF16splitByContinuity(root, l_ld, h_ld - 1, l_tr, utf16::MAX_TRAIL_SURR); UTF16splitByContinuity(root, h_ld, h_ld, utf16::MIN_TRAIL_SURR, h_tr); return; } } UTF16addContinuous2(root, l_ld, h_ld, l_tr, h_tr); } /* * Split range into sub-ranges, so that all runes in the same * sub-range have equal length of UTF-16 sequence. E.g., full * Unicode range [0-0x10FFFF] gets split into sub-ranges: * [0 - 0xFFFF] (2-byte UTF-16 sequences) * [0x10000 - 0x10FFFF] (4-byte UTF-16 sequences) */ void UTF16splitByRuneLength(RangeSuffix * & root, utf16::rune l, utf16::rune h) { if (l <= utf16::MAX_1WORD_RUNE) { if (h <= utf16::MAX_1WORD_RUNE) { UTF16addContinuous1(root, l, h); } else { UTF16addContinuous1(root, l, utf16::MAX_1WORD_RUNE); const uint32_t h_ld = utf16::lead_surr(h); const uint32_t h_tr = utf16::trail_surr(h); UTF16splitByContinuity(root, utf16::MIN_LEAD_SURR, h_ld, utf16::MIN_TRAIL_SURR, h_tr); } } else { const uint32_t l_ld = utf16::lead_surr(l); const uint32_t l_tr = utf16::trail_surr(l); const uint32_t h_ld = utf16::lead_surr(h); const uint32_t h_tr = utf16::trail_surr(h); UTF16splitByContinuity(root, l_ld, h_ld, l_tr, h_tr); } } } // namespace re2c re2c-1.0.1/src/re/encoding/utf16/utf16_regexp.h0000644000175000017500000000052213137447264015717 00000000000000#ifndef _RE2C_RE_ENCODING_UTF16_REGEXP_ #define _RE2C_RE_ENCODING_UTF16_REGEXP_ #include "src/re/re.h" #include "src/re/encoding/utf16/utf16.h" namespace re2c { class Range; RE *UTF16Symbol(RE::alc_t &alc, utf16::rune r); RE *UTF16Range(RE::alc_t &alc, const Range *r); } // namespace re2c #endif // _RE2C_RE_ENCODING_UTF16_REGEXP_ re2c-1.0.1/src/re/encoding/utf16/utf16.h0000644000175000017500000000140213142626447014341 00000000000000#ifndef _RE2C_RE_ENCODING_UTF16_UTF16_ #define _RE2C_RE_ENCODING_UTF16_UTF16_ #include "src/util/c99_stdint.h" namespace re2c { class utf16 { public: typedef uint32_t rune; static const uint32_t MAX_1WORD_RUNE; static const uint32_t MIN_LEAD_SURR; static const uint32_t MIN_TRAIL_SURR; static const uint32_t MAX_TRAIL_SURR; /* leading surrogate of UTF-16 symbol */ static inline uint32_t lead_surr(rune r); /* trailing surrogate of UTF-16 symbol */ static inline uint32_t trail_surr(rune r); }; inline uint32_t utf16::lead_surr(rune r) { return ((r - 0x10000u) / 0x400u) + MIN_LEAD_SURR; } inline uint32_t utf16::trail_surr(rune r) { return ((r - 0x10000u) % 0x400u) + MIN_TRAIL_SURR; } } // namespace re2c #endif // _RE2C_RE_ENCODING_UTF16_UTF16_ re2c-1.0.1/src/re/ast_to_re.cc0000644000175000017500000002477513143415045012767 00000000000000#include #include "src/util/c99_stdint.h" #include #include #include #include #include #include #include "src/ast/ast.h" #include "src/conf/msg.h" #include "src/conf/opt.h" #include "src/conf/warn.h" #include "src/re/empty_class_policy.h" #include "src/re/encoding/case.h" #include "src/re/encoding/enc.h" #include "src/re/encoding/utf16/utf16_regexp.h" #include "src/re/encoding/utf8/utf8_regexp.h" #include "src/re/re.h" #include "src/re/rule.h" #include "src/re/tag.h" #include "src/util/range.h" namespace re2c { /* note [default regexp] * * Create a byte range that includes all possible input characters. * This may include characters, which do not map to any valid symbol * in current encoding. For encodings, which directly map symbols to * input characters (ASCII, EBCDIC, UTF-32), it equals [^]. For other * encodings (UTF-16, UTF-8), [^] and this range are different. * * Also note that default range doesn't respect encoding policy * (the way invalid code points are treated). */ /* note [POSIX subexpression hierarchy] * * POSIX treats subexpressions with and without captures as equal, * therefore we have to insert missing captures in subexpressions * that influence disambiguation of existing captures. Such cases are: * left alternative in union (unless it is already a capture) and first * operand in concatenation (unless it is a capture or the length of * strings accepted by it is fixed). Of course, this insertion only * applies to subexpressions that have nested captures. */ static bool has_tags(const AST *ast) { switch (ast->type) { case AST::NIL: case AST::STR: case AST::CLS: case AST::DOT: case AST::DEFAULT: case AST::DIFF: return false; case AST::TAG: case AST::CAP: return true; case AST::ALT: return has_tags(ast->alt.ast1) || has_tags(ast->alt.ast2); case AST::CAT: return has_tags(ast->cat.ast1) || has_tags(ast->cat.ast2); case AST::REF: return has_tags(ast->ref.ast); case AST::ITER: return has_tags(ast->iter.ast); } return false; /* unreachable */ } static size_t fixlen(const AST *ast) { switch (ast->type) { case AST::NIL: case AST::TAG: return 0; case AST::CLS: case AST::DOT: case AST::DEFAULT: case AST::DIFF: return 1; case AST::STR: return ast->str.chars->size(); case AST::ALT: { const size_t l1 = fixlen(ast->alt.ast1), l2 = fixlen(ast->alt.ast2); return l1 == l2 ? l1 : Tag::VARDIST; } case AST::CAT: { const size_t l1 = fixlen(ast->cat.ast1), l2 = fixlen(ast->cat.ast2); return l1 == Tag::VARDIST || l2 == Tag::VARDIST ? Tag::VARDIST : l1 + l2; } case AST::REF: return fixlen(ast->ref.ast); case AST::ITER: { const size_t l = fixlen(ast->iter.ast); const uint32_t m = ast->iter.min, n = ast->iter.max; return l == Tag::VARDIST || m != n ? Tag::VARDIST : l * (n - m); } case AST::CAP: return fixlen(ast->cap); } return Tag::VARDIST; /* unreachable */ } static RE *ast_to_re(RESpec &spec, const AST *ast, size_t &ncap) { RE::alc_t &alc = spec.alc; std::vector &tags = spec.tags; const opt_t *opts = spec.opts; Warn &warn = spec.warn; switch (ast->type) { case AST::NIL: return re_nil(alc); case AST::STR: { const bool icase = opts->bCaseInsensitive || (ast->str.icase != opts->bCaseInverted); RE *x = NULL; std::vector::const_iterator i = ast->str.chars->begin(), e = ast->str.chars->end(); for (; i != e; ++i) { x = re_cat(alc, x, icase ? re_ichar(alc, ast->line, i->column, i->chr, opts) : re_schar(alc, ast->line, i->column, i->chr, opts)); } return x ? x : re_nil(alc); } case AST::CLS: { Range *r = NULL; std::vector::const_iterator i = ast->cls.ranges->begin(), e = ast->cls.ranges->end(); for (; i != e; ++i) { Range *s = opts->encoding.encodeRange(i->lower, i->upper); if (!s) fatal_lc(ast->line, i->column, "bad code point range: '0x%X - 0x%X'", i->lower, i->upper); r = Range::add(r, s); } if (ast->cls.negated) { r = Range::sub(opts->encoding.fullRange(), r); } return re_class(alc, ast->line, ast->column, r, opts, warn); } case AST::DOT: { uint32_t c = '\n'; if (!opts->encoding.encode(c)) { fatal_lc(ast->line, ast->column, "bad code point: '0x%X'", c); } return re_class(alc, ast->line, ast->column, Range::sub(opts->encoding.fullRange(), Range::sym(c)), opts, warn); } case AST::DEFAULT: // see note [default regexp] return re_sym(alc, Range::ran(0, opts->encoding.nCodeUnits())); case AST::ALT: { RE *t1 = NULL, *t2 = NULL, *x, *y; if (opts->posix_captures && has_tags(ast) && ast->alt.ast1->type != AST::CAP) { // see note [POSIX subexpression hierarchy] t1 = re_tag(alc, tags.size(), false); tags.push_back(Tag(Tag::FICTIVE, false)); t2 = re_tag(alc, tags.size(), false); tags.push_back(Tag(Tag::FICTIVE, false)); } x = ast_to_re(spec, ast->alt.ast1, ncap); x = re_cat(alc, t1, re_cat(alc, x, t2)); y = ast_to_re(spec, ast->alt.ast2, ncap); return re_alt(alc, x, y); } case AST::DIFF: { RE *x = ast_to_re(spec, ast->diff.ast1, ncap); RE *y = ast_to_re(spec, ast->diff.ast2, ncap); if (x->type != RE::SYM || y->type != RE::SYM) { fatal_lc(ast->line, ast->column, "can only difference char sets"); } return re_class(alc, ast->line, ast->column, Range::sub(x->sym, y->sym), opts, warn); } case AST::CAT: { RE *t1 = NULL, *t2 = NULL, *x, *y; const AST *a1 = ast->alt.ast1; if (opts->posix_captures && has_tags(ast) && a1->type != AST::CAP && fixlen(a1) == Tag::VARDIST) { // see note [POSIX subexpression hierarchy] t1 = re_tag(alc, tags.size(), false); tags.push_back(Tag(Tag::FICTIVE, false)); t2 = re_tag(alc, tags.size(), false); tags.push_back(Tag(Tag::FICTIVE, false)); } x = ast_to_re(spec, ast->cat.ast1, ncap); x = re_cat(alc, t1, re_cat(alc, x, t2)); y = ast_to_re(spec, ast->cat.ast2, ncap); return re_cat(alc, x, y); } case AST::TAG: { if (ast->tag.name && !opts->tags) { fatal_lc(ast->line, ast->column, "tags are only allowed with '-T, --tags' option"); } if (opts->posix_captures) { fatal_lc(ast->line, ast->column, "simple tags are not allowed with '--posix-captures' option"); } RE *t = re_tag(alc, tags.size(), false); tags.push_back(Tag(ast->tag.name, ast->tag.history)); return t; } case AST::CAP: { if (!opts->posix_captures) { return ast_to_re(spec, ast->cap, ncap); } const AST *x = ast->cap; if (x->type == AST::REF) x = x->ref.ast; RE *t1 = re_tag(alc, tags.size(), false); tags.push_back(Tag(2 * ncap, false)); RE *t2 = re_tag(alc, tags.size(), false); tags.push_back(Tag(2 * ncap + 1, false)); ++ncap; return re_cat(alc, t1, re_cat(alc, ast_to_re(spec, x, ncap), t2)); } case AST::REF: if (!opts->posix_captures) { return ast_to_re(spec, ast->ref.ast, ncap); } fatal_l(ast->line, "implicit grouping is forbidden with '--posix-captures'" " option, please wrap '%s' in capturing parenthesis", ast->ref.name->c_str()); return NULL; case AST::ITER: { const uint32_t n = ast->iter.min, n1 = std::max(n, 1u), m = std::max(n, ast->iter.max); const AST *x = ast->iter.ast; RE *t1 = NULL, *t2 = NULL; if (opts->posix_captures && x->type == AST::CAP) { x = x->cap; if (x->type == AST::REF) x = x->ref.ast; t1 = re_tag(alc, tags.size(), false); tags.push_back(Tag(2 * ncap, m > 1)); t2 = re_tag(alc, tags.size(), false); tags.push_back(Tag(2 * ncap + 1, false)); ++ncap; } RE *y = NULL; if (m == 0) { y = re_cat(alc, t1, t2); } else if (m == 1) { y = ast_to_re(spec, x, ncap); y = re_cat(alc, t1, re_cat(alc, y, t2)); } else { y = ast_to_re(spec, x, ncap); y = re_cat(alc, t1, y); y = re_iter(alc, y, n1, m); y = re_cat(alc, y, t2); } if (n == 0) { y = re_alt(alc, y, re_nil(alc)); } return y; } } return NULL; /* unreachable */ } RE *re_schar(RE::alc_t &alc, uint32_t line, uint32_t column, uint32_t c, const opt_t *opts) { if (!opts->encoding.encode(c)) { fatal_lc(line, column, "bad code point: '0x%X'", c); } switch (opts->encoding.type()) { case Enc::UTF16: return UTF16Symbol(alc, c); case Enc::UTF8: return UTF8Symbol(alc, c); case Enc::ASCII: case Enc::EBCDIC: case Enc::UTF32: case Enc::UCS2: return re_sym(alc, Range::sym(c)); } return NULL; /* unreachable */ } RE *re_ichar(RE::alc_t &alc, uint32_t line, uint32_t column, uint32_t c, const opt_t *opts) { if (is_alpha(c)) { return re_alt(alc, re_schar(alc, line, column, to_lower_unsafe(c), opts), re_schar(alc, line, column, to_upper_unsafe(c), opts)); } else { return re_schar(alc, line, column, c, opts); } } RE *re_class(RE::alc_t &alc, uint32_t line, uint32_t column, const Range *r, const opt_t *opts, Warn &warn) { if (!r) { switch (opts->empty_class_policy) { case EMPTY_CLASS_MATCH_EMPTY: warn.empty_class(line); return re_nil(alc); case EMPTY_CLASS_MATCH_NONE: warn.empty_class(line); break; case EMPTY_CLASS_ERROR: fatal_lc(line, column, "empty character class"); } } switch (opts->encoding.type()) { case Enc::UTF16: return UTF16Range(alc, r); case Enc::UTF8: return UTF8Range(alc, r); case Enc::ASCII: case Enc::EBCDIC: case Enc::UTF32: case Enc::UCS2: return re_sym(alc, r); } return NULL; /* unreachable */ } static void assert_tags_used_once(const Rule &rule, const std::vector &tags) { std::set names; const std::string *name = NULL; for (size_t t = rule.ltag; t < rule.htag; ++t) { name = tags[t].name; if (name && !names.insert(*name).second) { fatal_l(rule.code->fline, "tag '%s' is used multiple times in the same rule", name->c_str()); } } } static void init_rule(Rule &rule, const Code *code, const std::vector &tags, size_t ltag, size_t ncap) { rule.code = code; rule.ltag = ltag; rule.htag = tags.size(); for (rule.ttag = ltag; rule.ttag < rule.htag && !trailing(tags[rule.ttag]); ++rule.ttag); rule.ncap = ncap; assert_tags_used_once(rule, tags); } RESpec::RESpec(const std::vector &ast, const opt_t *o, Warn &w) : alc() , res() , charset(*new std::vector) , tags(*new std::vector) , rules(*new std::valarray(ast.size())) , opts(o) , warn(w) { for (size_t i = 0; i < ast.size(); ++i) { size_t ltag = tags.size(), ncap = 0; res.push_back(ast_to_re(*this, ast[i].ast, ncap)); init_rule(rules[i], ast[i].code, tags, ltag, ncap); } } } // namespace re2c re2c-1.0.1/src/re/tag.h0000644000175000017500000000265413142626731011422 00000000000000#ifndef _RE2C_RE_TAG_ #define _RE2C_RE_TAG_ #include #include "src/util/c99_stdint.h" #include #include #include namespace re2c { typedef int32_t tagver_t; static const tagver_t TAGVER_BOTTOM = std::numeric_limits::min(); // default value, lowest priority static const tagver_t TAGVER_ZERO = 0; // absense of tag static const tagver_t TAGVER_CURSOR = std::numeric_limits::max(); // current position, highest priority struct Tag { static const size_t RIGHTMOST; static const size_t VARDIST; static const size_t FICTIVE; const std::string *name; size_t ncap; size_t base; size_t dist; bool history; bool orbit; Tag(const std::string *n, bool h) : name(n) , ncap(Tag::RIGHTMOST) , base(Tag::RIGHTMOST) , dist(Tag::VARDIST) , history(h) , orbit(false) {} Tag(size_t c, bool o) : name(NULL) , ncap(c) , base(Tag::RIGHTMOST) , dist(Tag::VARDIST) , history(false) , orbit(o) {} }; inline bool fixed(const Tag &tag) { return tag.dist != Tag::VARDIST; } inline bool fictive(const Tag &tag) { return tag.ncap == Tag::FICTIVE; } inline bool capture(const Tag &tag) { return tag.ncap != Tag::RIGHTMOST; } inline bool orbit(const Tag &tag) { return tag.orbit; } inline bool trailing(const Tag &tag) { return !capture(tag) && tag.name == NULL; } inline bool history(const Tag &tag) { return tag.history; } } // namespace re2c #endif // _RE2C_RE_TAG_ re2c-1.0.1/src/re/nullable.cc0000644000175000017500000000231113142624070012563 00000000000000#include #include #include #include #include "src/conf/warn.h" #include "src/re/re.h" #include "src/re/rule.h" #include "src/re/tag.h" namespace re2c { static bool nullable(const RESpec &spec, const RE *re, bool &trail) { if (trail) return true; switch (re->type) { case RE::NIL: return true; case RE::SYM: return false; case RE::ITER: return nullable(spec, re->iter.re, trail); case RE::TAG: trail |= trailing(spec.tags[re->tag.idx]); return true; case RE::ALT: return nullable(spec, re->alt.re1, trail) || nullable(spec, re->alt.re2, trail); case RE::CAT: return nullable(spec, re->cat.re1, trail) && nullable(spec, re->cat.re2, trail); } return false; /* unreachable */ } /* * warn about rules that match empty string * (including rules with nonempty trailing context) * false positives on partially self-shadowed rules like [^]? */ void warn_nullable(const RESpec &spec, const std::string &cond) { const size_t nre = spec.res.size(); for (size_t i = 0; i < nre; ++i) { bool trail = false; if (nullable(spec, spec.res[i], trail)) { spec.warn.match_empty_string(spec.rules[i].code->fline, cond); } } } } // namespace re2c re2c-1.0.1/src/re/split_charset.cc0000644000175000017500000000266413142626713013652 00000000000000#include "src/util/c99_stdint.h" #include #include #include #include "src/conf/opt.h" #include "src/re/encoding/enc.h" #include "src/re/re.h" #include "src/util/range.h" namespace re2c { /* The original set of code units (charset) might be very large. * A common trick it is to split charset into disjoint character ranges * and choose a representative of each range (we choose lower bound). * The set of all representatives is the new (compacted) charset. * Don't forget to include zero and upper bound, even if they * do not explicitely apper in ranges. */ void split_charset(RESpec &spec) { std::set cs; std::stack todo; std::vector::const_iterator i = spec.res.begin(), e = spec.res.end(); for (; i != e; ++i) todo.push(*i); while (!todo.empty()) { const RE *re = todo.top(); todo.pop(); switch (re->type) { case RE::NIL: break; case RE::TAG: break; case RE::SYM: for (const Range *r = re->sym; r; r = r->next()) { cs.insert(r->lower()); cs.insert(r->upper()); } break; case RE::ALT: todo.push(re->alt.re2); todo.push(re->alt.re1); break; case RE::CAT: todo.push(re->cat.re2); todo.push(re->cat.re1); break; case RE::ITER: todo.push(re->iter.re); break; } } cs.insert(0); cs.insert(spec.opts->encoding.nCodeUnits()); spec.charset.insert(spec.charset.end(), cs.begin(), cs.end()); } } // namespace re2c re2c-1.0.1/src/re/tag.cc0000644000175000017500000000040513137447264011556 00000000000000#include #include "src/re/tag.h" namespace re2c { const size_t Tag::RIGHTMOST = std::numeric_limits::max(); const size_t Tag::VARDIST = std::numeric_limits::max(); const size_t Tag::FICTIVE = Tag::RIGHTMOST - 1; } // namespace re2c re2c-1.0.1/src/re/empty_class_policy.h0000644000175000017500000000051213137447264014546 00000000000000#ifndef _RE2C_RE_EMPTY_CLASS_POLICY_ #define _RE2C_RE_EMPTY_CLASS_POLICY_ namespace re2c { enum empty_class_policy_t { EMPTY_CLASS_MATCH_EMPTY, // match on empty input EMPTY_CLASS_MATCH_NONE, // fail to match on any input EMPTY_CLASS_ERROR // compilation error }; } // namespace re2c #endif // _RE2C_RE_EMPTY_CLASS_POLICY_ re2c-1.0.1/src/dfa/0000755000175000017500000000000013143420715010666 500000000000000re2c-1.0.1/src/dfa/dump.h0000644000175000017500000000172113142626211011723 00000000000000#ifndef _RE2C_DFA_DUMP_ #define _RE2C_DFA_DUMP_ #include #include "src/util/c99_stdint.h" #include "src/dfa/closure.h" #include "src/dfa/dfa.h" #include "src/util/forbid_copy.h" namespace re2c { struct Tagpool; struct dfa_t; struct nfa_state_t; struct nfa_t; struct tcmd_t; struct dump_dfa_t { const bool debug; const dfa_t &dfa; const Tagpool &tagpool; uint32_t uniqidx; const nfa_state_t *base; closure_t *shadow; dump_dfa_t(const dfa_t &d, const Tagpool &pool, const nfa_t &n); ~dump_dfa_t(); void closure_tags(cclositer_t c); void closure(const closure_t &clos, uint32_t state, bool isnew); void state0(const closure_t &clos); void state(const closure_t &clos, size_t state, size_t symbol, bool isnew); void final(size_t state, const nfa_state_t *port); uint32_t index(const nfa_state_t *s) const; FORBID_COPY(dump_dfa_t); }; void dump_dfa(const dfa_t &dfa); void dump_tcmd(const tcmd_t *p); } // namespace re2c #endif // _RE2C_DFA_DUMP_ re2c-1.0.1/src/dfa/closure.h0000644000175000017500000000306113142626075012441 00000000000000#ifndef _RE2C_DFA_CLOSURE_ #define _RE2C_DFA_CLOSURE_ #include #include #include #include "src/dfa/dfa.h" #include "src/dfa/tagtree.h" #include "src/nfa/nfa.h" #include "src/re/tag.h" namespace re2c { struct Tagpool; struct dfa_t; struct tcmd_t; struct clos_t { nfa_state_t *origin; // for debug only nfa_state_t *state; size_t order; // vector of orders size_t tvers; // vector of tag versions (including lookahead tags) hidx_t ttran; // history of transition tags hidx_t tlook; // history of lookahead tags static inline bool fin(const clos_t &c) { return c.state->type == nfa_state_t::FIN; } static inline bool ran(const clos_t &c) { return c.state->type == nfa_state_t::RAN; } }; typedef std::vector closure_t; typedef closure_t::iterator clositer_t; typedef closure_t::const_iterator cclositer_t; typedef closure_t::reverse_iterator rclositer_t; typedef closure_t::const_reverse_iterator rcclositer_t; struct newver_t { size_t tag; tagver_t base; hidx_t history; }; struct newver_cmp_t { tagtree_t &history; bool operator()(const newver_t &x, const newver_t &y) const { if (x.tag < y.tag) return true; if (x.tag > y.tag) return false; if (x.base < y.base) return true; if (x.base > y.base) return false; return history.compare_plain(x.history, y.history, x.tag) < 0; } }; typedef std::map newvers_t; tcmd_t *closure(dfa_t &dfa, closure_t &clos1, closure_t &clos2, Tagpool &tagpool, newvers_t &newvers, closure_t *shadow); } // namespace re2c #endif // _RE2C_DFA_CLOSURE_ re2c-1.0.1/src/dfa/dfa.h0000644000175000017500000000321213137447263011521 00000000000000#ifndef _RE2C_DFA_DFA_ #define _RE2C_DFA_DFA_ #include "src/util/c99_stdint.h" #include #include #include #include "src/conf/warn.h" #include "src/dfa/tcmd.h" #include "src/re/rule.h" #include "src/re/tag.h" #include "src/util/forbid_copy.h" namespace re2c { struct nfa_t; struct opt_t; struct Tagpool; struct dfa_state_t { size_t *arcs; tcmd_t **tcmd; tcid_t *tcid; size_t rule; bool fallthru; bool fallback; explicit dfa_state_t(size_t nchars) : arcs(new size_t[nchars]) , tcmd(new tcmd_t*[nchars + 2]()) // +2 for final and fallback epsilon-transitions , tcid(NULL) , rule(Rule::NONE) , fallthru(false) , fallback(false) {} ~dfa_state_t() { delete[] arcs; delete[] tcmd; delete[] tcid; } FORBID_COPY(dfa_state_t); }; struct dfa_t { static const size_t NIL; std::vector states; const size_t nchars; std::vector &charset; std::valarray &rules; std::vector &tags; std::set &mtagvers; tagver_t *finvers; tcpool_t &tcpool; tagver_t maxtagver; tcmd_t *tcmd0; tcid_t tcid0; dfa_t(const nfa_t &nfa, const opt_t *opts, const std::string &cond, Warn &warn); ~dfa_t(); FORBID_COPY(dfa_t); }; enum dfa_minimization_t { DFA_MINIMIZATION_TABLE, DFA_MINIMIZATION_MOORE }; void minimization(dfa_t &dfa, dfa_minimization_t type); void fillpoints(const dfa_t &dfa, std::vector &fill); void cutoff_dead_rules(dfa_t &dfa, size_t defrule, const std::string &cond, Warn &warn); void insert_fallback_tags(dfa_t &dfa); void compact_and_optimize_tags(dfa_t &dfa, bool optimize); void freeze_tags(dfa_t &dfa); } // namespace re2c #endif // _RE2C_DFA_DFA_ re2c-1.0.1/src/dfa/dead_rules.cc0000644000175000017500000001430013142626115013223 00000000000000#include #include #include #include #include #include "src/conf/warn.h" #include "src/dfa/dfa.h" #include "src/re/rule.h" #include "src/util/forbid_copy.h" namespace re2c { struct tcmd_t; /* note [unreachable rules] * * DFA may contain useless final states. Such states may * appear as a result of: * - (part of) one rule being shadowed by another rule, * e.g. rule [ab] partially shadows [ac] and completely * shadows [a] * * - infinite rules that greedily eat all input characters * and never stop (they either fail on YYFILL or crash), * e.g. [^]* * * - rules that contain never-matching link, e.g. '[]' * with option '--empty-class match-none' * * Useless final states should be eliminated so that they * don't interfere with further analyses and optimizations. * If all final states of a rule are useless, then the whole * rule is unreachable and should be reported. * * In order to find out if a given final state is useless, * we have to find out if all outgoing paths from this state * match longer rules (otherwise, some paths go to default * state and fallback to this state). We do this by finding * all states that have transitions to default state and back * propagation of "none-rule" from these states. As the back * propagation meets the first final state on its way, it * substitutes "none-rule" with the corresponding rule, * which is further propagated back to the start state of DFA. */ // reversed DFA struct rdfa_t { struct arc_t { size_t dest; arc_t *next; }; struct state_t { arc_t *arcs; size_t rule; bool fallthru; }; size_t nstates; size_t nrules; state_t *states; arc_t *arcs; explicit rdfa_t(const dfa_t &dfa) : nstates(dfa.states.size()) , nrules(dfa.rules.size()) , states(new state_t[nstates]()) , arcs(new arc_t[nstates * dfa.nchars]) { // init states for (size_t i = 0; i < nstates; ++i) { state_t &s = states[i]; s.arcs = NULL; const size_t r = dfa.states[i]->rule; s.rule = r == Rule::NONE ? nrules : r; s.fallthru = false; } // init arcs arc_t *a = arcs; for (size_t i = 0; i < nstates; ++i) { dfa_state_t *s = dfa.states[i]; for (size_t c = 0; c < dfa.nchars; ++c) { const size_t j = s->arcs[c]; if (j != dfa_t::NIL) { a->dest = i; a->next = states[j].arcs; states[j].arcs = a++; } else { states[i].fallthru = true; } } } } ~rdfa_t() { delete[] states; delete[] arcs; } FORBID_COPY(rdfa_t); }; static void backprop(const rdfa_t &rdfa, bool *live, size_t rule, size_t state) { // "none-rule" is unreachable from final states: // be careful to mask it before propagating const rdfa_t::state_t &s = rdfa.states[state]; if (rule == rdfa.nrules) { rule = s.rule; } // if the rule has already been set, than either it's a loop // or another branch of back propagation has already been here, // in both cases we should stop: there's nothing new to propagate bool &l = live[rule * rdfa.nstates + state]; if (l) return; l = true; for (const rdfa_t::arc_t *a = s.arcs; a; a = a->next) { backprop(rdfa, live, rule, a->dest); } } static void liveness_analyses(const rdfa_t &rdfa, bool *live) { for (size_t i = 0; i < rdfa.nstates; ++i) { const rdfa_t::state_t &s = rdfa.states[i]; if (s.fallthru) { backprop(rdfa, live, s.rule, i); } } } static void warn_dead_rules(const dfa_t &dfa, size_t defrule, const std::string &cond, const bool *live, Warn &warn) { const size_t nstates = dfa.states.size(); const size_t nrules = dfa.rules.size(); for (size_t i = 0; i < nstates; ++i) { const size_t r = dfa.states[i]->rule; if (r != Rule::NONE && !live[r * nstates + i]) { // skip last rule (it's the NONE-rule) for (size_t j = 0; j < nrules; ++j) { if (live[j * nstates + i]) { dfa.rules[r].shadow.insert(dfa.rules[j].code->fline); } } } } for (size_t i = 0; i < nrules; ++i) { // default rule '*' should not be reported if (i != defrule && !live[i * nstates]) { warn.unreachable_rule(cond, dfa.rules[i]); } } } static void remove_dead_final_states(dfa_t &dfa, const bool *fallthru) { const size_t nstates = dfa.states.size(), nsym = dfa.nchars; for (size_t i = 0; i < nstates; ++i) { dfa_state_t *s = dfa.states[i]; if (s->rule == Rule::NONE) continue; // final state is useful iff there is at least one // non-accepting path from this state bool shadowed = true; for (size_t c = 0; c < nsym; ++c) { const size_t j = s->arcs[c]; if (j == dfa_t::NIL || fallthru[j]) { shadowed = false; break; } } if (shadowed) { s->rule = Rule::NONE; s->tcmd[nsym] = NULL; } } } /* note [fallback states] * * Find states that are accepting, but may be shadowed * by other accepting states: when the short rule matches, * lexer must try to match longer rules; if this attempt is * unsuccessful it must fallback to the short match. * * In order to find fallback states we need to know if * "none-rule" is reachable from the given state, the information * we have after rule liveness analyses. Fallback states are * needed at different points in time (both before and after * certain transformations on DFA). Fortunately, fallback states * are not affected by these transformations, so we can calculate * them here and save for future use. */ static void find_fallback_states(dfa_t &dfa, const bool *fallthru) { const size_t nstate = dfa.states.size(), nsym = dfa.nchars; for (size_t i = 0; i < nstate; ++i) { dfa_state_t *s = dfa.states[i]; s->fallthru = fallthru[i]; if (s->rule != Rule::NONE) { for (size_t c = 0; c < nsym; ++c) { const size_t j = s->arcs[c]; if (j != dfa_t::NIL && fallthru[j]) { s->fallback = true; break; } } } } } void cutoff_dead_rules(dfa_t &dfa, size_t defrule, const std::string &cond, Warn &warn) { const rdfa_t rdfa(dfa); const size_t ns = rdfa.nstates, nl = (rdfa.nrules + 1) * ns; bool *live = new bool[nl], *fallthru = live + nl - ns; memset(live, 0, nl * sizeof(bool)); liveness_analyses(rdfa, live); warn_dead_rules(dfa, defrule, cond, live, warn); remove_dead_final_states(dfa, fallthru); find_fallback_states(dfa, fallthru); delete[] live; } } // namespace re2c re2c-1.0.1/src/dfa/tagpool.cc0000644000175000017500000000277713142626307012603 00000000000000#include "src/util/c99_stdint.h" #include // malloc #include // memcpy, memcmp #include #include "src/dfa/tagpool.h" #include "src/util/hash32.h" namespace re2c { struct eqtag_t { size_t ntags; explicit eqtag_t(size_t n): ntags(n) {} inline tagver_t operator()(const tagver_t *x, const tagver_t *y) const { return memcmp(x, y, ntags * sizeof(tagver_t)) == 0; } }; Tagpool::Tagpool(const opt_t *o, size_t n) : lookup() , opts(o) , ntags(n) , buffer(new tagver_t[n]) , maxclos(0) , orders(NULL) , closes(NULL) , history() , astack() , bstack() , cstack() {} Tagpool::~Tagpool() { delete[] buffer; const size_t n = lookup.size(); for (size_t i = 0; i < n; ++i) { free(const_cast(lookup[i])); } delete[] orders; delete[] closes; } size_t Tagpool::insert_const(tagver_t ver) { std::fill(buffer, buffer + ntags, ver); return insert(buffer); } size_t Tagpool::insert_succ(tagver_t fst) { for (size_t i = 0; i < ntags; ++i) { buffer[i] = fst++; } return insert(buffer); } size_t Tagpool::insert(const tagver_t *tags) { const size_t size = ntags * sizeof(tagver_t); const uint32_t hash = hash32(0, tags, size); eqtag_t eq(ntags); const size_t idx = lookup.find_with(hash, tags, eq); if (idx != taglookup_t::NIL) { return idx; } tagver_t *copy = static_cast(malloc(size)); memcpy(copy, tags, size); return lookup.push(hash, copy); } const tagver_t *Tagpool::operator[](size_t idx) const { return lookup[idx]; } } // namespace re2c re2c-1.0.1/src/dfa/find_state.cc0000644000175000017500000002745213142624070013246 00000000000000#include #include #include #include #include #include "src/dfa/dfa.h" #include "src/dfa/dump.h" #include "src/dfa/find_state.h" #include "src/dfa/tagpool.h" #include "src/dfa/tcmd.h" #include "src/nfa/nfa.h" #include "src/re/rule.h" #include "src/util/hash32.h" namespace re2c { kernel_t::kernel_t(size_t n) : size(n) , state(new nfa_state_t*[size]) , tvers(new size_t[size]) , tlook(new hidx_t[size]) , order(new size_t[size]) {} kernel_t *kernel_t::copy(const kernel_t &k) { const size_t n = k.size; kernel_t *kcopy = new kernel_t(n); memcpy(kcopy->state, k.state, n * sizeof(void*)); memcpy(kcopy->tvers, k.tvers, n * sizeof(size_t)); memcpy(kcopy->tlook, k.tlook, n * sizeof(hidx_t)); memcpy(kcopy->order, k.order, n * sizeof(size_t)); return kcopy; } kernel_t::~kernel_t() { delete[] state; delete[] tvers; delete[] tlook; delete[] order; } static bool equal_lookahead_tags(const kernel_t *x, const kernel_t *y, Tagpool &tagpool, const std::vector &tags) { if (memcmp(x->tlook, y->tlook, x->size * sizeof(hidx_t)) == 0) { return true; } tagtree_t &h = tagpool.history; for (size_t i = 0; i < x->size; ++i) { const hidx_t xl = x->tlook[i], yl = y->tlook[i]; for (size_t t = 0; t < tagpool.ntags; ++t) { if (history(tags[t])) { // compare subhistories if (h.compare_plain(xl, yl, t) != 0) return false; } else { // compare only the last tags if (h.last(xl, t) != h.last(yl, t)) return false; } } } return true; } struct kernel_eq_t { Tagpool &tagpool; const std::vector &tags; bool operator()(const kernel_t *x, const kernel_t *y) const { return x->size == y->size && memcmp(x->state, y->state, x->size * sizeof(void*)) == 0 && memcmp(x->tvers, y->tvers, x->size * sizeof(size_t)) == 0 && memcmp(x->order, y->order, x->size * sizeof(size_t)) == 0 && equal_lookahead_tags(x, y, tagpool, tags); } }; /* note [mapping ignores items with lookahead tags] * * Consider two items X and Y being mapped. * * If tag T belongs to lookahead tags of item X, then all * outgoing transitions from item X update T. Which means * that it doesn't matter what particular version T has in X: * whatever version it has, it will be overwritten by any * outgoing transition. * * Note that lookahead tags are identical for both items * X and Y, because we only try to map DFA states with * identical lookahead tags. */ /* note [save(X), copy(Y,X) optimization] * * save(X) command followed by a copy(Y,X) command can be optimized to * save(Y). This helps reduce the number commands and versions (new version * X is gone), but what is more important, it allows to put copy commands * in front of save commands. This order is necessary when it comes to * fallback commands. * * Note that in case of injective mapping there may be more than one copy * command matching the same save command: save(X), copy(Y,X), copy(Z,X). * In this case save command must be replicated for each copy command: * save(Y), save(Z). * * For each save(X) command there must be at least one copy(Y,X) command * (exactly one case of bijective mapping). This is because X version in * save(X) command must be a new version which cannot occur in the older * DFA state. Thus all save commands are transformed (maybe replicated) by * copy commands, and some copy commands are erased by save commands. * * This optimization is applied after checking priority violation, so it * cannot affect the check. */ bool kernels_t::operator()(const kernel_t *k1, const kernel_t *k2) { // check that kernel sizes, NFA states and orders coincide const bool compatible = k1->size == k2->size && memcmp(k1->state, k2->state, k1->size * sizeof(void*)) == 0 && memcmp(k1->order, k2->order, k1->size * sizeof(size_t)) == 0 && equal_lookahead_tags(k1, k2, tagpool, tags); if (!compatible) return false; // map tag versions of one kernel to that of another // and check that lookahead versions (if any) coincide const size_t ntag = tagpool.ntags; std::fill(x2y - max, x2y + max, TAGVER_ZERO); std::fill(y2x - max, y2x + max, TAGVER_ZERO); for (size_t i = 0; i < k1->size; ++i) { const tagver_t *xv = tagpool[k1->tvers[i]], *yv = tagpool[k2->tvers[i]]; const hidx_t xl = k1->tlook[i]; for (size_t t = 0; t < ntag; ++t) { // see note [mapping ignores items with lookahead tags] if (tagpool.history.last(xl, t) != TAGVER_ZERO && !history(tags[t])) continue; const tagver_t x = xv[t], y = yv[t]; tagver_t &x0 = y2x[y], &y0 = x2y[x]; if (y0 == TAGVER_ZERO && x0 == TAGVER_ZERO) { x0 = x; y0 = y; x2t[x] = t; } else if (y != y0 || x != x0) { return false; } } } // we have bijective mapping; now try to create list of commands tcmd_t *a, **pa, *copy = NULL; // backup 'save' commands: if topsort finds cycles, this mapping // will be rejected and we'll have to revert all changes size_t nact = 0; for (a = *pacts; a; a = a->next) { actnext[nact] = a; actlhs[nact] = a->lhs; ++nact; } // fix LHS of 'save' commands to reuse old version // see note [save(X), copy(Y,X) optimization] for (a = *pacts; a; a = a->next) { const tagver_t y = a->lhs * (a->history[0] == TAGVER_BOTTOM ? -1 : 1), x = y2x[y]; a->lhs = abs(x); y2x[y] = x2y[x] = TAGVER_ZERO; } // create 'copy' commands for (tagver_t x = -max; x < max; ++x) { const tagver_t y = x2y[x], ax = abs(x), ay = abs(y); if (y != TAGVER_ZERO && x != y && !fixed(tags[x2t[x]])) { assert(ax != ay); copy = tcpool.make_copy(copy, ax, ay); } } // join 'copy' and 'save' commands for (pa = © (a = *pa); pa = &a->next); *pa = *pacts; *pacts = copy; // see note [topological ordering of copy commands] const bool nontrivial_cycles = tcmd_t::topsort(pacts, indeg); // in case of cycles restore 'save' commands and fail if (nontrivial_cycles) { pa = pacts; for (size_t i = 0; i < nact; ++i) { *pa = a = actnext[i]; a->lhs = actlhs[i]; pa = &a->next; } *pa = NULL; } return !nontrivial_cycles; } kernels_t::kernels_t(Tagpool &tagp, tcpool_t &tcp, const std::vector &ts) : lookup() , tagpool(tagp) , tcpool(tcp) , tags(ts) , maxsize(0) // usually ranges from one to some twenty , buffer(new kernel_t(maxsize)) , cap(0) , max(0) , mem(NULL) , x2y(NULL) , y2x(NULL) , x2t(NULL) , indeg(NULL) , pacts(NULL) , actnext(NULL) , actlhs(NULL) {} kernels_t::~kernels_t() { delete buffer; delete[] mem; const size_t n = lookup.size(); for (size_t i = 0; i < n; ++i) { delete lookup[i]; } } void kernels_t::init(tagver_t v, size_t nkern) { if (maxsize < nkern) { maxsize = nkern * 2; // in advance delete buffer; buffer = new kernel_t(maxsize); } // +1 to ensure max tag version is not forgotten in loops max = v + 1; if (cap < max) { cap = max * 2; // in advance const size_t n = static_cast(cap), m = 2 * n + 1, sz_x2y = 2 * m * sizeof(tagver_t), sz_x2t = m * sizeof(size_t), sz_actnext = n * sizeof(tcmd_t*), sz_actlhs = n * sizeof(tagver_t), sz_indeg = n * sizeof(uint32_t); delete[] mem; mem = new char[sz_x2y + sz_x2t + sz_actnext + sz_actlhs + sz_indeg]; // point to the center (zero index) of each buffer // indexes in range [-N .. N] must be valid, where N is capacity x2y = reinterpret_cast(mem) + cap; y2x = x2y + m; x2t = reinterpret_cast(mem + sz_x2y) + cap; actnext = reinterpret_cast(mem + sz_x2y + sz_x2t); actlhs = reinterpret_cast(mem + sz_x2y + sz_x2t + sz_actnext); indeg = reinterpret_cast(mem + sz_x2y + sz_x2t + sz_actnext + sz_actlhs); } } size_t kernels_t::size() const { return lookup.size(); } const kernel_t *kernels_t::operator[](size_t idx) const { return lookup[idx]; } /* note [bijective mappings] * * Suppose we have just constructed a new DFA state Y and want to map it * to an existing DFA state X. States must have identical sets of NFA * substates and identical sets of lookahead tags for each substate. * Furtermore, there must be bijective mapping between versions of X and Y * and this mapping must preserve version order (respect priorities). * * Bijective mappings have a nice property: there is only one possible state * X to which Y can be mapped. Indeed, if there was another state Z that * can be bijectively mapped to Y preserving priorities, then Z itself can * be mapped to X: both (1) and (2) are symmetrical in case of bijection * and the relation is transitive. So the existence of Z is a contradiction. * * In principle, non-bijective mappings are also possible if the new state * is less versatile than the old one (surjection from X to Y). However, * non-bijective mappings lack the 'unique counterpart' property and need * more complex analysis (and are not so useful after all), so we drop them. */ kernels_t::result_t kernels_t::insert(const closure_t &clos, tcmd_t *acts, tagver_t maxver) { const size_t nkern = clos.size(); size_t x = dfa_t::NIL; // empty closure corresponds to default state if (nkern == 0) return result_t(x, NULL, false); // resize buffer if closure is too large init(maxver, nkern); // copy closure to buffer kernel and find its normal form buffer->size = nkern; for (size_t i = 0; i < nkern; ++i) { const clos_t &c = clos[i]; buffer->state[i] = c.state; buffer->tvers[i] = c.tvers; buffer->tlook[i] = c.tlook; buffer->order[i] = c.order; } // get kernel hash uint32_t hash = static_cast(nkern); // seed hash = hash32(hash, buffer->state, nkern * sizeof(void*)); hash = hash32(hash, buffer->order, nkern * sizeof(size_t)); // try to find identical kernel kernel_eq_t eq = {tagpool, tags}; x = lookup.find_with(hash, buffer, eq); if (x != index_t::NIL) return result_t(x, acts, false); // else try to find mappable kernel // see note [bijective mappings] this->pacts = &acts; x = lookup.find_with(hash, buffer, *this); if (x != index_t::NIL) return result_t(x, acts, false); // otherwise add new kernel x = lookup.push(hash, kernel_t::copy(*buffer)); return result_t(x, acts, true); } static tcmd_t *finalizer(const clos_t &clos, size_t ridx, dfa_t &dfa, const Tagpool &tagpool, const std::vector &tags) { tcpool_t &tcpool = dfa.tcpool; const Rule &rule = dfa.rules[ridx]; const tagver_t *vers = tagpool[clos.tvers]; const tagtree_t &hist = tagpool.history; const hidx_t look = clos.tlook; tcmd_t *copy = NULL, *save = NULL, **p; for (size_t t = rule.ltag; t < rule.htag; ++t) { const Tag &tag = tags[t]; if (fixed(tag)) continue; const tagver_t v = abs(vers[t]), l = hist.last(look, t); tagver_t &f = dfa.finvers[t]; if (l == TAGVER_ZERO) { copy = tcpool.make_copy(copy, f, v); } else if (history(tag)) { save = tcpool.make_add(save, f, v, hist, look, t); } else { save = tcpool.make_set(save, f, l); } } // join 'copy' and 'save' commands for (p = © *p; p = &(*p)->next); *p = save; return copy; } void find_state(dfa_t &dfa, size_t state, size_t symbol, kernels_t &kernels, const closure_t &closure, tcmd_t *acts, dump_dfa_t &dump) { const kernels_t::result_t result = kernels.insert(closure, acts, dfa.maxtagver); if (result.isnew) { // create new DFA state dfa_state_t *t = new dfa_state_t(dfa.nchars); dfa.states.push_back(t); // check if the new state is final // see note [at most one final item per closure] cclositer_t c1 = closure.begin(), c2 = closure.end(), c = std::find_if(c1, c2, clos_t::fin); if (c != c2) { t->rule = c->state->rule; t->tcmd[dfa.nchars] = finalizer(*c, t->rule, dfa, kernels.tagpool, kernels.tags); dump.final(result.state, c->state); } } if (state == dfa_t::NIL) { // initial state dfa.tcmd0 = result.cmd; dump.state0(closure); } else { dfa_state_t *s = dfa.states[state]; s->arcs[symbol] = result.state; s->tcmd[symbol] = result.cmd; dump.state(closure, state, symbol, result.isnew); } } } // namespace re2c re2c-1.0.1/src/dfa/tagtree.cc0000644000175000017500000001001713142624070012546 00000000000000#include #include #include "src/dfa/tagtree.h" namespace re2c { static const tagver_t DELIM = TAGVER_CURSOR - 1; tagtree_t::tagtree_t(): nodes(), path1(), path2() {} tagver_t tagtree_t::elem(hidx_t i) const { return nodes[i].elem; } hidx_t tagtree_t::pred(hidx_t i) const { return nodes[i].pred; } size_t tagtree_t::tag(hidx_t i) const { return nodes[i].tag; } hidx_t tagtree_t::push(hidx_t i, size_t t, tagver_t v) { node_t x = {i, v, t}; nodes.push_back(x); return static_cast(nodes.size() - 1); } // cut out subhistory of this tag (just skip all other tags) static void subhistory(const tagtree_t &history, std::vector &path, hidx_t idx, size_t tag) { path.clear(); for (hidx_t i = idx; i != HROOT; i = history.pred(i)) { if (history.tag(i) == tag) { path.push_back(history.elem(i)); } } } static int32_t compare_reversed( const std::vector &h1, const std::vector &h2) { std::vector::const_reverse_iterator i1 = h1.rbegin(), e1 = h1.rend(), i2 = h2.rbegin(), e2 = h2.rend(); for (;;) { if (i1 == e1 && i2 == e2) break; if (i1 == e1) return -1; if (i2 == e2) return 1; if (*i1 > *i2) return -1; if (*i1 < *i2) return 1; ++i1; ++i2; } return 0; } int32_t tagtree_t::compare_plain(hidx_t x, hidx_t y, size_t t) { subhistory(*this, path1, x, t); subhistory(*this, path2, y, t); return compare_reversed(path1, path2); } static size_t boundary_tag(size_t tag) { // for start tags, return itself; for end tags, return start tag // (start tags have even numbers, end tags have odd numbers) return tag & ~1u; } // returns all subhistories of the given tag as one list (individual // subhistories are separated by delimiter) static int32_t subhistory_list(const tagtree_t &history, std::vector &path, hidx_t idx, size_t tag) { path.clear(); int32_t nsub = 0; hidx_t i = idx; const size_t bound = boundary_tag(tag); path.push_back(DELIM); for (;;) { for (; i != HROOT && history.tag(i) >= bound; i = history.pred(i)) { if (history.tag(i) == tag) { path.push_back(history.elem(i)); } } if (i == HROOT) break; ++nsub; path.push_back(DELIM); for (; i != HROOT && history.tag(i) != tag; i = history.pred(i)); } return nsub; } // Lookahead may consist of multiple subhistories (each containing either // a single bottom value, or one or more cursor values (exactly one for // non-orbit subhistories). Because of the shortest-path algorithm earlier // subhistories do not necessarily coincide, so comparing only the last // pair of subhistories is not enough. See note [POSIX orbit tags]. int32_t tagtree_t::compare_histories(hidx_t x, hidx_t y, tagver_t ox, tagver_t oy, size_t t) { const int32_t n1 = subhistory_list(*this, path1, x, t), n2 = subhistory_list(*this, path2, y, t); assert(n1 == n2); path1.push_back(ox); path2.push_back(oy); std::vector::const_reverse_iterator i1 = path1.rbegin(), e1 = path1.rend(), i2 = path2.rbegin(), e2 = path2.rend(); for (;;) { if (i1 == e1 && i2 == e2) return 0; assert(i1 != e1 && i2 != e2); const tagver_t v1 = *i1++, v2 = *i2++; if (v1 == DELIM && v2 == DELIM) continue; if (v1 == DELIM) return -1; if (v2 == DELIM) return 1; if (v1 > v2) return -1; if (v1 < v2) return 1; } } static void last_subhistory(const tagtree_t &history, std::vector &path, hidx_t idx, tagver_t order, size_t tag) { path.clear(); hidx_t i = idx; const size_t bound = boundary_tag(tag); for (; i != HROOT && history.tag(i) >= bound; i = history.pred(i)) { if (history.tag(i) == tag) { path.push_back(history.elem(i)); } } if (i == HROOT) path.push_back(order); } int32_t tagtree_t::compare_last_subhistories(hidx_t x, hidx_t y, tagver_t ox, tagver_t oy, size_t t) { last_subhistory(*this, path1, x, ox, t); last_subhistory(*this, path2, y, oy, t); return compare_reversed(path1, path2); } tagver_t tagtree_t::last(hidx_t i, size_t t) const { for (; i != HROOT; i = pred(i)) { if (tag(i) == t) return elem(i); } return TAGVER_ZERO; } } // namespace re2c re2c-1.0.1/src/dfa/dump.cc0000644000175000017500000002032713142624070012065 00000000000000#include #include #include #include #include #include "src/conf/opt.h" #include "src/dfa/dfa.h" #include "src/dfa/dump.h" #include "src/dfa/tagpool.h" #include "src/dfa/tagtree.h" #include "src/dfa/tcmd.h" #include "src/nfa/nfa.h" #include "src/re/rule.h" #include "src/re/tag.h" namespace re2c { static void dump_tcmd_or_tcid(tcmd_t *const *tcmd, const tcid_t *tcid, size_t sym, const tcpool_t &tcpool); static const char *tagname(const Tag &t); static void dump_tags(const Tagpool &tagpool, hidx_t ttran, size_t tvers); dump_dfa_t::dump_dfa_t(const dfa_t &d, const Tagpool &pool, const nfa_t &n) : debug(pool.opts->dump_dfa_raw) , dfa(d) , tagpool(pool) , uniqidx(0) , base(n.states) , shadow(NULL) { if (!debug) return; shadow = new closure_t; fprintf(stderr, "digraph DFA {\n" " rankdir=LR\n" " node[shape=plaintext fontname=fixed]\n" " edge[arrowhead=vee fontname=fixed]\n\n"); } dump_dfa_t::~dump_dfa_t() { if (!debug) return; delete shadow; fprintf(stderr, "}\n"); } uint32_t dump_dfa_t::index(const nfa_state_t *s) const { return static_cast(s - base); } static void dump_history(const dfa_t &dfa, const tagtree_t &h, hidx_t i) { if (i == HROOT) { fprintf(stderr, " /"); return; } dump_history(dfa, h, h.pred(i)); const Tag &t = dfa.tags[h.tag(i)]; const tagver_t v = h.elem(i); if (capture(t)) { fprintf(stderr, "%u", (uint32_t)t.ncap); } else if (!trailing(t)) { fprintf(stderr, "%s", t.name->c_str()); } fprintf(stderr, v == TAGVER_BOTTOM ? "↓" : "↑"); fprintf(stderr, " "); } void dump_dfa_t::closure_tags(cclositer_t c) { if (!debug) return; if (c->tvers == ZERO_TAGS) return; const hidx_t l = c->tlook; const tagver_t *vers = tagpool[c->tvers]; // const tagver_t *ords = tagpool[c->order]; const size_t ntag = tagpool.ntags; for (size_t t = 0; t < ntag; ++t) { fprintf(stderr, " %s%d", tagname(dfa.tags[t]), abs(vers[t])); // if (tagpool.opts->posix_captures) { // fprintf(stderr, "[%d]", ords[t]); // } } if (l != HROOT) { dump_history(dfa, tagpool.history, l); } } void dump_dfa_t::closure(const closure_t &clos, uint32_t state, bool isnew) { if (!debug) return; cclositer_t c1 = clos.begin(), c2 = clos.end(), c, s1 = shadow->begin(), s2 = shadow->end(), s; const char *style = isnew ? "" : " STYLE=\"dotted\"", *color = " COLOR=\"lightgray\""; fprintf(stderr, " %s%u [label=<", isnew ? "" : "i", state); for (s = s1; s != s2; ++s) { fprintf(stderr, ""); } if (!shadow->empty()) { fprintf(stderr, ""); } for (c = c1; c != c2; ++c) { fprintf(stderr, ""); } fprintf(stderr, "
%u", index(s->state), (int)(s - s1), color, style, color, index(s->state)); closure_tags(s); fprintf(stderr, "
%u", index(c->state), style, index(c->state)); closure_tags(c); fprintf(stderr, "
>]\n"); } void dump_dfa_t::state0(const closure_t &clos) { if (!debug) return; closure(clos, 0, true); fprintf(stderr, " void [shape=point]\n"); for (cclositer_t c = shadow->begin(); c != shadow->end(); ++c) { fprintf(stderr, " void -> 0:_%u_%d:w [style=dotted color=lightgray fontcolor=lightgray label=\"", index(c->state), (int)(c - shadow->begin())); dump_tags(tagpool, c->ttran, c->tvers); fprintf(stderr, "\"]\n"); } for (cclositer_t c = clos.begin(); c != clos.end(); ++c) { fprintf(stderr, " void -> 0:%u:w [style=dotted label=\"", index(c->state)); dump_tags(tagpool, c->ttran, c->tvers); fprintf(stderr, "\"]\n"); } } void dump_dfa_t::state(const closure_t &clos, size_t state, size_t symbol, bool isnew) { if (!debug) return; const dfa_state_t *s = dfa.states[state]; const size_t state2 = s->arcs[symbol]; if (state2 == dfa_t::NIL) return; const tcmd_t *cmd = s->tcmd[symbol]; const uint32_t a = static_cast(symbol), x = static_cast(state), y = static_cast(state2), z = isnew ? y : ++uniqidx; const char *prefix = isnew ? "" : "i"; closure(clos, z, isnew); if (!isnew) { fprintf(stderr, " i%u [style=dotted]\n" " i%u:s -> %u:s [style=dotted label=\"", z, z, y); dump_tcmd(cmd); fprintf(stderr, "\"]\n"); } for (cclositer_t b = shadow->begin(), c = b; c != shadow->end(); ++c) { fprintf(stderr, " %u:%u:e -> %s%u:_%u_%d:w [color=lightgray fontcolor=lightgray label=\"%u", x, index(c->origin), prefix, z, index(c->state), (int)(c - b), a); dump_tags(tagpool, c->ttran, c->tvers); fprintf(stderr, "\"]\n"); } for (cclositer_t c = clos.begin(); c != clos.end(); ++c) { fprintf(stderr, " %u:%u:e -> %s%u:%u:w [label=\"%u", x, index(c->origin), prefix, z, index(c->state), a); dump_tags(tagpool, c->ttran, c->tvers); fprintf(stderr, "\"]\n"); } } void dump_dfa_t::final(size_t state, const nfa_state_t *port) { if (!debug) return; const dfa_state_t *s = dfa.states[state]; const Rule &r = dfa.rules[s->rule]; const tcmd_t *cmd = s->tcmd[dfa.nchars]; const uint32_t x = static_cast(state); fprintf(stderr, " r%u [shape=none label=\"(", x); for (size_t t = r.ltag; t < r.htag; ++t) { if (t > r.ltag) fprintf(stderr, " "); fprintf(stderr, "%s%d", tagname(dfa.tags[t]), abs(dfa.finvers[t])); } fprintf(stderr, ")\"]\n"); fprintf(stderr, " %u:%u:e -> r%u [style=dotted label=\"", x, index(port), x); dump_tcmd(cmd); fprintf(stderr, "\"]\n"); } void dump_dfa(const dfa_t &dfa) { const size_t nstate = dfa.states.size(), nsym = dfa.nchars; fprintf(stderr, "digraph DFA {\n" " rankdir=LR\n" " node[shape=Mrecord fontname=fixed]\n" " edge[arrowhead=vee fontname=fixed]\n\n"); // initializer fprintf(stderr, " n [shape=point]" " n -> n0 [style=dotted label=\""); dump_tcmd_or_tcid(dfa.tcmd0 ? &dfa.tcmd0 : NULL, &dfa.tcid0, 0, dfa.tcpool); fprintf(stderr, "\"]\n"); for (uint32_t i = 0; i < nstate; ++i) { const dfa_state_t *s = dfa.states[i]; // state fprintf(stderr, " n%u [height=0.2 width=0.2 label=\"%u\"]\n", i, i); // finalizer if (s->rule != Rule::NONE) { const Rule &r = dfa.rules[s->rule]; fprintf(stderr, "subgraph { rank=same" " n%u [style=filled fillcolor=lightgray]" " dr%u [shape=none label=\"", i, i); dump_tcmd_or_tcid(s->tcmd, s->tcid, nsym, dfa.tcpool); fprintf(stderr, "("); for (size_t t = r.ltag; t < r.htag; ++t) { if (t > r.ltag) fprintf(stderr, " "); fprintf(stderr, "%d", dfa.finvers[t]); } fprintf(stderr, ")"); fprintf(stderr, "\"]" " n%u:s -> dr%u:n [style=dotted minlen=0]}\n", i, i); } // transitions for (uint32_t c = 0; c < nsym; ++c) { const size_t j = s->arcs[c]; if (j != dfa_t::NIL) { fprintf(stderr, " n%u -> n%u [label=\"%u", i, static_cast(j), c); dump_tcmd_or_tcid(s->tcmd, s->tcid, c, dfa.tcpool); fprintf(stderr, "\"]\n"); } } } fprintf(stderr, "}\n"); } void dump_tcmd_or_tcid(tcmd_t *const *tcmd, const tcid_t *tcid, size_t sym, const tcpool_t &tcpool) { const tcmd_t *cmd = tcmd ? tcmd[sym] : tcpool[tcid[sym]]; dump_tcmd(cmd); } void dump_tcmd(const tcmd_t *p) { if (!p) return; fprintf(stderr, "/"); for (; p; p = p->next) { const tagver_t l = p->lhs, r = p->rhs, *h = p->history; if (tcmd_t::iscopy(p)) { fprintf(stderr, "%d=%d ", l, r); } else { fprintf(stderr, "%d", l); if (r != TAGVER_ZERO) { fprintf(stderr, "=%d", r); } for (; *h != TAGVER_ZERO; ++h) { fprintf(stderr, "%s", *h == TAGVER_BOTTOM ? "↓" : "↑"); } fprintf(stderr, " "); } } } const char *tagname(const Tag &t) { return t.name ? t.name->c_str() : ""; } void dump_tags(const Tagpool &tagpool, hidx_t ttran, size_t tvers) { if (ttran == HROOT) return; const tagver_t *vers = tagpool[tvers]; const tagtree_t &h = tagpool.history; fprintf(stderr, "/"); for (size_t i = 0; i < tagpool.ntags; ++i) { if (h.last(ttran, i) == TAGVER_ZERO) continue; fprintf(stderr, "%d", abs(vers[i])); for (hidx_t t = ttran; t != HROOT; t = h.pred(t)) { if (h.tag(t) != i) continue; if (h.elem(t) < TAGVER_ZERO) { fprintf(stderr, "↓"); } else if (t > TAGVER_ZERO) { fprintf(stderr, "↑"); } } fprintf(stderr, " "); } } } // namespace re2c re2c-1.0.1/src/dfa/fallback_tags.cc0000644000175000017500000000720413142624070013674 00000000000000#include #include #include #include "src/dfa/dfa.h" #include "src/dfa/tcmd.h" #include "src/re/tag.h" namespace re2c { static void find_overwritten_tags(const dfa_t &dfa, size_t state, bool *been, bool *owrt); /* note [fallback tags] * * We need to backup tags in fallback states, because they may be * overwritten on some non-accepting path from fallback state. * Two different things may cause overwrites: * * (1) self-overlapping rules: if DFA has tagged cycles, new iteration * may overwrite tags from previous iteration and then fail * * (2) overlapping rules: intially all rules have different tags, but * optiizations may merge them; then shorter rule's tags may be * overwritten by an unsuccessful attempt to match longer rule * * In case (2) we can prevent merging by propagating tag liveness on * all non-accepting paths from fallback state. * * Case (1) is not so easy: overwrites are already embedded in DFA. * We have to create backup copies for all potentially overwritten * tags. If tag is overwritten on just one path, it should be backed * up on all non-accepting paths from fallback state (because paths * may join later along the way and they need common tag version). * However, redundant backups cause artificial interference, so we * only create backup if the origin is overwritten on some path. */ void find_overwritten_tags(const dfa_t &dfa, size_t state, bool *been, bool *owrt) { if (been[state]) return; been[state] = true; const dfa_state_t *s = dfa.states[state]; for (size_t c = 0; c < dfa.nchars; ++c) { for (const tcmd_t *p = s->tcmd[c]; p; p = p->next) { owrt[p->lhs] = true; } size_t dest = s->arcs[c]; if (dest != dfa_t::NIL && dfa.states[dest]->fallthru) { find_overwritten_tags(dfa, dest, been, owrt); } } } // overwritten tags need 'copy' on all outgoing non-accepting paths // ('copy' commands must go first, before potential overwrites) static void backup(dfa_t &dfa, dfa_state_t *s, tagver_t l, tagver_t r) { for (size_t c = 0; c < dfa.nchars; ++c) { size_t i = s->arcs[c]; if (i != dfa_t::NIL && dfa.states[i]->fallthru) { tcmd_t *&p = s->tcmd[c]; p = dfa.tcpool.make_copy(p, l, r); } } } // WARNING: this function assumes that falthrough and fallback // attributes of DFA states have already been calculated, see // note [fallback states] void insert_fallback_tags(dfa_t &dfa) { tcpool_t &pool = dfa.tcpool; const size_t nstates = dfa.states.size(), nsym = dfa.nchars, nver = static_cast(dfa.maxtagver) + 1; bool *been = new bool[nstates]; bool *owrt = new bool[nver]; for (size_t i = 0; i < nstates; ++i) { dfa_state_t *s = dfa.states[i]; if (!s->fallback) continue; std::fill(been, been + nstates, false); std::fill(owrt, owrt + nver, false); find_overwritten_tags(dfa, i, been, owrt); tcmd_t *p = s->tcmd[nsym], *save = NULL, **ps = &save, **pc = &s->tcmd[nsym + 1]; for (; p; p = p->next) { const tagver_t l = p->lhs, r = p->rhs, *h = p->history; // 'copy' commands if (tcmd_t::iscopy(p)) { if (!owrt[r]) { *pc = pool.make_copy(NULL, l, r); pc = &(*pc)->next; } else { backup(dfa, s, l, r); } // 'save without history' commands } else if (tcmd_t::isset(p)) { *ps = pool.make_set(*ps, l, h[0]); ps = &(*ps)->next; // 'save with history' commands } else { if (!owrt[r]) { *ps = pool.copy_add(NULL, l, r, h); } else { *ps = pool.copy_add(NULL, l, l, h); backup(dfa, s, l, r); } ps = &(*ps)->next; } } // join 'copy' (fallback) and 'save' commands *pc = save; } delete[] been; delete[] owrt; } } // namespace re2c re2c-1.0.1/src/dfa/minimization.cc0000644000175000017500000001421413142624070013625 00000000000000#include #include #include #include #include "src/dfa/dfa.h" #include "src/dfa/tcmd.h" namespace re2c { /* * note [DFA minimization: table filling algorithm] * * This algorithm is simple and slow; it's a reference implementation. * * The algorithm constructs (strictly lower triangular) boolean matrix * indexed by DFA states. Each matrix cell (S1,S2) indicates if states * S1 and S2 are distinguishable. Initialy states are distinguished * according to their rule and tag set. One step of the algorithm * updates the matrix as follows: each pair of states S1 and S2 is * marked as distinguishable iff exist transitions from S1 and S2 on * the same symbol that go to distinguishable states. The algorithm * loops until the matrix stops changing. */ static void minimization_table( size_t *part, const std::vector &states, size_t nchars) { const size_t count = states.size(); bool **tbl = new bool*[count]; tbl[0] = new bool[count * (count - 1) / 2]; for (size_t i = 0; i < count - 1; ++i) { tbl[i + 1] = tbl[i] + i; } // see note [distinguish states by tags] for (size_t i = 0; i < count; ++i) { dfa_state_t *s1 = states[i]; for (size_t j = 0; j < i; ++j) { dfa_state_t *s2 = states[j]; tbl[i][j] = s1->rule != s2->rule || s1->tcid[nchars] != s2->tcid[nchars]; } } for (bool loop = true; loop;) { loop = false; for (size_t i = 0; i < count; ++i) { for (size_t j = 0; j < i; ++j) { if (!tbl[i][j]) { for (size_t k = 0; k < nchars; ++k) { size_t oi = states[i]->arcs[k]; size_t oj = states[j]->arcs[k]; if (oi < oj) { std::swap(oi, oj); } if (states[i]->tcid[k] != states[j]->tcid[k] || (oi != oj && (oi == dfa_t::NIL || oj == dfa_t::NIL || tbl[oi][oj]))) { tbl[i][j] = true; loop = true; break; } } } } } } // Equivalence relation defined by the matrix is transitive // by construction. Thus we can simply find the first state // which is not distinguishable from current and choose it as a // representative: all other states with the same representative // have to be equivalent to current state due to transitivity. // // The only requirement is to deterministically choose the // representative: e.g. always choose the one with the lowest // index. // // Note that transitivity is crucial: without it the problem // would be equivalent to the clique cover problem. for (size_t i = 0; i < count; ++i) { part[i] = i; for (size_t j = 0; j < i; ++j) { if (!tbl[i][j]) { part[i] = j; break; } } } delete[] tbl[0]; delete[] tbl; } /* * note [DFA minimization: Moore algorithm] * * The algorithm maintains partition of DFA states. * Initial partition is coarse: states are distinguished according * to their rule and tag set. Partition is gradually refined: each * set of states is split into minimal number of subsets such that * for all states in a subset transitions on the same symbol go to * the same set of states. * The algorithm loops until partition stops changing. */ static void minimization_moore( size_t *part, const std::vector &states, size_t nchars) { const size_t count = states.size(); size_t *next = new size_t[count]; // see note [distinguish states by tags] std::map, size_t> init; for (size_t i = 0; i < count; ++i) { dfa_state_t *s = states[i]; std::pair key(s->rule, s->tcid[nchars]); if (init.insert(std::make_pair(key, i)).second) { part[i] = i; next[i] = dfa_t::NIL; } else { const size_t j = init[key]; part[i] = j; next[i] = next[j]; next[j] = i; } } size_t *out = new size_t[nchars * count]; size_t *diff = new size_t[count]; for (bool loop = true; loop;) { loop = false; for (size_t i = 0; i < count; ++i) { if (i != part[i] || next[i] == dfa_t::NIL) { continue; } for (size_t j = i; j != dfa_t::NIL; j = next[j]) { size_t *o = &out[j * nchars]; size_t *a = states[j]->arcs; for (size_t c = 0; c < nchars; ++c) { o[c] = a[c] == dfa_t::NIL ? dfa_t::NIL : part[a[c]]; } } size_t diff_count = 0; for (size_t j = i; j != dfa_t::NIL;) { const size_t j_next = next[j]; size_t n = 0; for (; n < diff_count; ++n) { size_t k = diff[n]; if (memcmp(&out[j * nchars], &out[k * nchars], nchars * sizeof(size_t)) == 0 && memcmp(states[j]->tcid, states[k]->tcid, nchars * sizeof(tcid_t)) == 0 ) { part[j] = k; next[j] = next[k]; next[k] = j; break; } } if (n == diff_count) { diff[diff_count++] = j; part[j] = j; next[j] = dfa_t::NIL; } j = j_next; } loop |= diff_count > 1; } } delete[] out; delete[] diff; delete[] next; } /* note [distinguish states by tags] * * Final states may have 'rule' tags: tags that must be set when lexer * takes epsilon-transition to the binded action. Final states with * the same rule but different sets on 'rule' tags cannot be merged. * * Compare the following two cases: * "ac" | "bc" * "ac" @p | "bc" * Tail "c" can be deduplicated in the 1st case, but not in the 2nd. */ void minimization(dfa_t &dfa, dfa_minimization_t type) { const size_t count = dfa.states.size(); size_t *part = new size_t[count]; switch (type) { case DFA_MINIMIZATION_TABLE: minimization_table(part, dfa.states, dfa.nchars); break; case DFA_MINIMIZATION_MOORE: minimization_moore(part, dfa.states, dfa.nchars); break; } size_t *compact = new size_t[count]; for (size_t i = 0, j = 0; i < count; ++i) { if (i == part[i]) { compact[i] = j++; } } size_t new_count = 0; for (size_t i = 0; i < count; ++i) { dfa_state_t *s = dfa.states[i]; if (i == part[i]) { size_t *arcs = s->arcs; for (size_t c = 0; c < dfa.nchars; ++c) { if (arcs[c] != dfa_t::NIL) { arcs[c] = compact[part[arcs[c]]]; } } dfa.states[new_count++] = s; } else { delete s; } } dfa.states.resize(new_count); delete[] compact; delete[] part; } } // namespace re2c re2c-1.0.1/src/dfa/fillpoints.cc0000644000175000017500000000706013142624070013302 00000000000000#include #include #include #include #include "src/dfa/dfa.h" namespace re2c { static const size_t SCC_INF = std::numeric_limits::max(); static const size_t SCC_UND = SCC_INF - 1; static bool loopback(size_t node, size_t narcs, const size_t *arcs) { for (size_t i = 0; i < narcs; ++i) { if (arcs[i] == node) { return true; } } return false; } /* * node [finding strongly connected components of DFA] * * A slight modification of Tarjan's algorithm. * * The algorithm walks graph in deep-first order. It maintains a stack * of nodes that have already been visited but haven't been assigned to * SCC yet. For each node the algorithm calculates 'lowlink': index of * the highest ancestor node reachable in one step from a descendant of * the node. Lowlink is used to determine when a set of nodes should be * popped off the stack into a new SCC. * * We use lowlink to hold different kinds of information: * - values in range [0 .. stack size] mean that this node is on stack * (link to a node with the smallest index reachable from this one) * - SCC_UND means that this node has not been visited yet * - SCC_INF means that this node has already been popped off stack * * We use stack size (rather than topological sort index) as unique index * of a node on stack. This is safe because indices of nodes on stack are * still unique and less than indices of nodes that have been popped off * stack (SCC_INF). * */ static void scc( const dfa_t &dfa, std::stack &stack, std::vector &lowlink, std::vector &trivial, size_t i) { const size_t link = stack.size(); lowlink[i] = link; stack.push(i); const size_t *arcs = dfa.states[i]->arcs; for (size_t c = 0; c < dfa.nchars; ++c) { const size_t j = arcs[c]; if (j != dfa_t::NIL) { if (lowlink[j] == SCC_UND) { scc(dfa, stack, lowlink, trivial, j); } if (lowlink[j] < lowlink[i]) { lowlink[i] = lowlink[j]; } } } if (lowlink[i] == link) { // SCC is non-trivial (has loops) iff it either: // - consists of multiple nodes (they all must be interconnected) // - consists of single node which loops back to itself trivial[i] = i == stack.top() && !loopback(i, dfa.nchars, arcs); size_t j; do { j = stack.top(); stack.pop(); lowlink[j] = SCC_INF; } while (j != i); } } static void calc_fill( const dfa_t &dfa, const std::vector &trivial, std::vector &fill, size_t i) { if (fill[i] == SCC_UND) { fill[i] = 0; const size_t *arcs = dfa.states[i]->arcs; for (size_t c = 0; c < dfa.nchars; ++c) { const size_t j = arcs[c]; if (j != dfa_t::NIL) { calc_fill(dfa, trivial, fill, j); size_t max = 1; if (trivial[j]) { max += fill[j]; } if (max > fill[i]) { fill[i] = max; } } } } } void fillpoints(const dfa_t &dfa, std::vector &fill) { const size_t size = dfa.states.size(); // find DFA states that belong to non-trivial SCC std::stack stack; std::vector lowlink(size, SCC_UND); std::vector trivial(size, false); scc(dfa, stack, lowlink, trivial, 0); // for each DFA state, calculate YYFILL argument: // maximal path length to the next YYFILL state fill.resize(size, SCC_UND); calc_fill(dfa, trivial, fill, 0); // The following states must trigger YYFILL: // - inital state // - all states in non-trivial SCCs // for other states, reset YYFILL argument to zero for (size_t i = 1; i < size; ++i) { if (trivial[i]) { fill[i] = 0; } } } } // namespace re2c re2c-1.0.1/src/dfa/closure.cc0000644000175000017500000004024413142626044012577 00000000000000#include #include "src/util/c99_stdint.h" #include #include #include #include #include #include #include #include "src/conf/opt.h" #include "src/dfa/closure.h" #include "src/dfa/dfa.h" #include "src/dfa/tagpool.h" #include "src/dfa/tcmd.h" #include "src/nfa/nfa.h" #include "src/re/rule.h" namespace re2c { static void closure_posix(const closure_t &init, closure_t &done, closure_t *shadow, Tagpool &tagpool, const std::vector &tags); static void closure_leftmost(const closure_t &init, closure_t &done, closure_t *shadow, Tagpool &tagpool); static int32_t compare_posix(const clos_t &c1, const clos_t &c2, Tagpool &tagpool, const std::vector &tags); static void prune(closure_t &clos, std::valarray &rules); static void lower_lookahead_to_transition(closure_t &clos); static tcmd_t *generate_versions(dfa_t &dfa, closure_t &clos, Tagpool &tagpool, newvers_t &newvers); static void orders(closure_t &clos, Tagpool &tagpool, const std::vector &tags); static bool cmpby_rule_state(const clos_t &x, const clos_t &y); tcmd_t *closure(dfa_t &dfa, closure_t &clos1, closure_t &clos2, Tagpool &tagpool, newvers_t &newvers, closure_t *shadow) { // build tagged epsilon-closure of the given set of NFA states if (tagpool.opts->posix_captures) { closure_posix(clos1, clos2, shadow, tagpool, dfa.tags); prune(clos2, dfa.rules); orders(clos2, tagpool, dfa.tags); std::sort(clos2.begin(), clos2.end(), cmpby_rule_state); } else { closure_leftmost(clos1, clos2, shadow, tagpool); prune(clos2, dfa.rules); } // see note [the difference between TDFA(0) and TDFA(1)] if (!tagpool.opts->lookahead) { lower_lookahead_to_transition(clos2); if (shadow) lower_lookahead_to_transition(*shadow); } // merge tags from different rules, find nondeterministic tags tcmd_t *cmd = generate_versions(dfa, clos2, tagpool, newvers); if (shadow) generate_versions(dfa, *shadow, tagpool, newvers); return cmd; } bool cmpby_rule_state(const clos_t &x, const clos_t &y) { const nfa_state_t *sx = x.state, *sy = y.state; const size_t rx = sx->rule, ry = sy->rule; if (rx < ry) return true; if (rx > ry) return false; if (sx < sy) return true; if (sx > sy) return false; // all items in closute have different states return false; } // Skip non-orbit start tags: their position is fixed on some higher-priority // tag (except the very first tag, but in RE2C match is always anchored). // We cannot skip orbit start tag because the corresponding orbit end tag is // hoisted out of loop (by construction) and is, in fact, non-orbit; but we can // skip orbit end tag instead. // Skipping non-orbit start tags allows us to compare all subhistories in the // same way (incrementally). Subhistories of non-orbit start tags cannot be // compared incrementally, because default value may be added on a later step // than non-default value. static bool redundant(size_t t, const std::vector &tags) { return (t % 2 == 0) != orbit(tags[t]); } /* note [epsilon-closures in tagged NFA] * * The closure includes all NFA states that are reachable by epsilon-paths * from the given set of states and either are final or have non-epsilon * transitions. Note that by construction NFA states cannot have both * epsilon and non-epsilon transitions. * * Each closure state might be reachable by multiple epsilon-paths with * different tags: this means that the regular expression is ambiguous * and can be parsed in different ways. Which parse to choose depends on the * disambiguation policy. RE2C supports two policies: leftmost greedy and * POSIX. * * We use Goldber-Radzik algorithm to find the "shortest path". * Both disambiguation policies forbid epsilon-cycles with negative weight. */ static void enqueue(clos_t x, std::stack &bstack, closure_t &done, closure_t *shadow, Tagpool &tagpool, const std::vector &tags) { nfa_state_t *n = x.state; uint32_t &i = n->clos; if (i == NOCLOS) { i = static_cast(done.size()); done.push_back(x); } else { const int32_t cmp = compare_posix(x, done[i], tagpool, tags); if (cmp < 0) std::swap(x, done[i]); if (shadow && cmp != 0) shadow->push_back(x); if (cmp >= 0) return; } if (n->status != GOR_TOPSORT) { bstack.push(n); n->status = GOR_NEWPASS; } } static void scan(nfa_state_t *n, std::stack &bstack, closure_t &done, closure_t *shadow, Tagpool &tagpool, const std::vector &tags) { tagtree_t &history = tagpool.history; clos_t x = done[n->clos]; switch (n->type) { case nfa_state_t::NIL: x.state = n->nil.out; enqueue(x, bstack, done, shadow, tagpool, tags); break; case nfa_state_t::ALT: x.state = n->alt.out2; enqueue(x, bstack, done, shadow, tagpool, tags); x.state = n->alt.out1; enqueue(x, bstack, done, shadow, tagpool, tags); break; case nfa_state_t::TAG: x.state = n->tag.out; x.tlook = history.push(x.tlook, n->tag.info, n->tag.bottom ? TAGVER_BOTTOM : TAGVER_CURSOR); enqueue(x, bstack, done, shadow, tagpool, tags); break; case nfa_state_t::RAN: case nfa_state_t::FIN: break; } } void closure_posix(const closure_t &init, closure_t &done, closure_t *shadow, Tagpool &tagpool, const std::vector &tags) { std::stack &astack = tagpool.astack, &bstack = tagpool.bstack; // enqueue all initial states done.clear(); if (shadow) shadow->clear(); for (cclositer_t c = init.begin(); c != init.end(); ++c) { enqueue(*c, bstack, done, shadow, tagpool, tags); } // Gordberg-Radzik 'shortest path' algorithm. // Papers: 1993, "A heuristic improvement of the Bellman-Ford // algorithm" by Goldberg, Radzik and 1996, Shortest paths algorithms: // Theory andexperimental evaluation" by Cherkassky, Goldberg, Radzik. // Complexity for digraph G=(V,E) is O(|V|*|E|). for (; !bstack.empty(); ) { // 1st step: find admissible subgraph reachable from B-stack // and topologically sort it (this can be done by a single // depth-first search that scans each state and pushes traversed // states to A-stack in postorder) for (; !bstack.empty(); ) { nfa_state_t *n = bstack.top(); if (n->status == GOR_NEWPASS) { n->status = GOR_TOPSORT; scan(n, bstack, done, shadow, tagpool, tags); } else if (n->status == GOR_TOPSORT) { bstack.pop(); astack.push(n); } else { // GOR_OFFSTACK bstack.pop(); } } // 2nd step: scan topologically ordered states from A-stack // and push head states of relaxed transitions to B-stack for (; !astack.empty(); ) { nfa_state_t *n = astack.top(); astack.pop(); scan(n, bstack, done, shadow, tagpool, tags); n->status = GOR_OFFSTACK; } } // reset associated closure items and check status // (do this before removing any states from closure) for (clositer_t i = done.begin(); i != done.end(); ++i) { i->state->clos = NOCLOS; assert(i->state->status == GOR_OFFSTACK); } } /* note [at most one final item per closure] * * By construction NFA has exactly one final state per rule. Thus closure * has at most one final item per rule (in other words, all final items * in closure belong to different rules). The rule with the highest priority * shadowes all other rules. Final items that correspond to shadowed rules * are useless and should be removed as early as possible. * * If we let such items remain in closure, they may prevent the new DFA * state from being merged with other states. This won't affect the final * program: meaningless finalizing tags will be removed by dead code * elimination and subsequent minimization will merge equivalent final * states. However, it's better not to add useless final items at all. * * Note that the first final item reached by the epsilon-closure it the one * with the highest priority (see note [closure items are sorted by rule]). */ int32_t compare_posix(const clos_t &c1, const clos_t &c2, Tagpool &tagpool, const std::vector &tags) { if (tagpool.ntags == 0 || (c1.order == c2.order && c1.tlook == c2.tlook)) return 0; tagtree_t &h = tagpool.history; for (size_t t = 0; t < tagpool.ntags; ++t) { if (redundant(t, tags)) continue; const hidx_t i1 = c1.tlook, i2 = c2.tlook; const tagver_t o1 = tagpool[c1.order][t], o2 = tagpool[c2.order][t]; const int32_t cmp = h.compare_histories(i1, i2, o1, o2, t); if (cmp != 0) return cmp; } return 0; } void closure_leftmost(const closure_t &init, closure_t &done, closure_t *shadow, Tagpool &tagpool) { std::stack &todo = tagpool.cstack; // enqueue all initial states done.clear(); if (shadow) shadow->clear(); for (rcclositer_t c = init.rbegin(); c != init.rend(); ++c) { todo.push(*c); } // DFS; linear complexity for (; !todo.empty(); ) { clos_t x = todo.top(); todo.pop(); nfa_state_t *n = x.state; if (n->clos == NOCLOS) { n->clos = static_cast(done.size()); done.push_back(x); } else { if (shadow) shadow->push_back(x); continue; } switch (n->type) { case nfa_state_t::NIL: x.state = n->nil.out; todo.push(x); break; case nfa_state_t::ALT: x.state = n->alt.out2; todo.push(x); x.state = n->alt.out1; todo.push(x); break; case nfa_state_t::TAG: x.state = n->tag.out; x.tlook = tagpool.history.push(x.tlook, n->tag.info, n->tag.bottom ? TAGVER_BOTTOM : TAGVER_CURSOR); todo.push(x); break; case nfa_state_t::RAN: case nfa_state_t::FIN: break; } } // reset associated closure items // (do this before removing any states from closure) for (clositer_t i = done.begin(); i != done.end(); ++i) { i->state->clos = NOCLOS; } } void prune(closure_t &clos, std::valarray &rules) { clositer_t b = clos.begin(), e = clos.end(), i, j; // drop "inner" states (non-final without outgoing non-epsilon transitions) j = std::stable_partition(b, e, clos_t::ran); e = std::stable_partition(j, e, clos_t::fin); size_t n = static_cast(e - b); // drop all final states except one; mark dropped rules as shadowed // see note [at most one final item per closure] if (j != e) { std::sort(j, e, cmpby_rule_state); const uint32_t l = rules[j->state->rule].code->fline; for (i = j; ++i < e;) { rules[i->state->rule].shadow.insert(l); } n = static_cast(j - b) + 1; } clos.resize(n); } /* note [the difference between TDFA(0) and TDFA(1)] * * TDFA(0) performs epsilon-closure after transition on symbol, * while TDFA(1) performs it before the transition and uses the lookahead * symbol to filter the closure. * * TDFA(0) is one step ahead of TDFA(1): it consumes a symol, then builds * epsilon-closure, eagerly applies all tags reachable by it and goes to * the next state. * * TDFA(1) is more lazy: it builds epsilon-closure, then filters it with * respect to the current symbol (uses only those states which have outgoing * transitions on this symbol), then applies corresponding tags (probably * not all tags applied by TDFA(0)) and then consumes the symbol and goes * to the next state. * * Thus in general TDFA(1) raises less conflicts than TDFA(0). */ void lower_lookahead_to_transition(closure_t &clos) { for (clositer_t c = clos.begin(); c != clos.end(); ++c) { c->ttran = c->tlook; c->tlook = HROOT; } } tcmd_t *generate_versions(dfa_t &dfa, closure_t &clos, Tagpool &tagpool, newvers_t &newvers) { tcmd_t *cmd = NULL; const size_t ntag = tagpool.ntags; tagver_t *vers = tagpool.buffer, &maxver = dfa.maxtagver; tagtree_t &tagtree = tagpool.history; const std::vector &tags = dfa.tags; clositer_t b = clos.begin(), e = clos.end(), c; newver_cmp_t cmp = {tagtree}; newvers_t newacts(cmp); // for each tag, if there is at least one tagged transition, // allocate new version (negative for bottom and positive for // normal transition, however absolute value should be unique // among all versions of all tags) for (c = b; c != e; ++c) { const hidx_t l = c->tlook, h = c->ttran; if (h == HROOT) continue; const tagver_t *vs = tagpool[c->tvers]; for (size_t t = 0; t < ntag; ++t) { const Tag &tag = tags[t]; const tagver_t h0 = tagtree.last(h, t), l0 = tagtree.last(l, t); if (h0 == TAGVER_ZERO) continue; const tagver_t v = history(tag) ? vs[t] : TAGVER_ZERO; newver_t x = {t, v, h}; const tagver_t n = (maxver + 1) * (h0 == TAGVER_BOTTOM ? -1 : 1), m = newvers.insert(std::make_pair(x, n)).first->second; if (n == m) ++maxver; if (!fixed(tag) && (l0 == TAGVER_ZERO || history(tag))) { newacts.insert(std::make_pair(x, m)); } } } // actions for (newvers_t::iterator i = newacts.begin(); i != newacts.end(); ++i) { const tagver_t m = i->second, v = i->first.base; const hidx_t h = i->first.history; const size_t t = i->first.tag; if (history(tags[t])) { cmd = dfa.tcpool.make_add(cmd, abs(m), abs(v), tagtree, h, t); } else { cmd = dfa.tcpool.make_set(cmd, abs(m), tagtree.last(h, t)); } } // mark tags with history for (newvers_t::iterator j = newvers.begin(); j != newvers.end(); ++j) { if (history(tags[j->first.tag])) dfa.mtagvers.insert(abs(j->second)); } // update tag versions in closure for (c = b; c != e; ++c) { const hidx_t h = c->ttran; if (h == HROOT) continue; const tagver_t *vs = tagpool[c->tvers]; for (size_t t = 0; t < ntag; ++t) { const tagver_t v0 = vs[t], h0 = tagtree.last(h, t), v = history(tags[t]) ? v0 : TAGVER_ZERO; if (h0 == TAGVER_ZERO) { vers[t] = v0; } else { newver_t x = {t, v, h}; vers[t] = newvers[x]; } } c->tvers = tagpool.insert(vers); } return cmd; } /* note [POSIX orbit tags] * * POSIX disambiguation rules demand that earlier subexpressions match * the longest possible prefix of the input string (without violating the * whole match). To accommodate these rules, we resolve conflicts on orbit * tags by comparison of tag subhistories on conflicting NFA paths. * * If one subhistory is a proper prefix of another subhistory, it is less; * otherwise for the first pair of different offsets, if one offset is greater * than the other, then the corresponding subhistory is less. * * It is possible to pre-compare two NFA paths corresponding to the same * input string prefix and ending in the same NFA state; if paths are not * equal, the result of this comparison will hold for any common suffix. * * It is also possible to pre-compare NFA paths that correspond to the same * input prefix, but end in different NFA states. Such comparison is incorrect * unless subhistories start at the same offset; but if it is incorrect, we * will never use its result (tags with higher priority will also disagree). * * Therefore instead of keeping the whole history of offsets we calculate * the relative order of any pair of subhistories on each step. * * This part of the algorithm was invented by Christopher Kuklewicz. */ struct cmp_posix_t { Tagpool &tagpool; size_t tag; bool operator()(cclositer_t x, cclositer_t y) { const hidx_t i1 = x->tlook, i2 = y->tlook; const tagver_t o1 = tagpool[x->order][tag], o2 = tagpool[y->order][tag]; // comparison result is inverted, because orders are used as offsets return tagpool.history.compare_last_subhistories(i1, i2, o1, o2, tag) > 0; } }; void orders(closure_t &clos, Tagpool &tagpool, const std::vector &tags) { clositer_t b = clos.begin(), e = clos.end(), c; const size_t ntag = tagpool.ntags, nclos = clos.size(); size_t &maxclos = tagpool.maxclos; tagver_t *&os = tagpool.orders, *o, *os0; cclositer_t *&ps = tagpool.closes, *pe, *p; if (ntag == 0) return; // reallocate buffers if necessary if (maxclos < nclos) { maxclos = nclos * 2; // in advance delete[] os; delete[] ps; os = new tagver_t[(ntag + 1) * maxclos]; ps = new cclositer_t[maxclos]; } os0 = os + ntag * maxclos; pe = ps; for (c = b; c != e; ++c) *pe++ = c; memset(os, 0, ntag * nclos * sizeof(tagver_t)); //some tags are skipped for (size_t t = 0; t < ntag; ++t) { if (redundant(t, tags)) continue; cmp_posix_t cmp = {tagpool, t}; std::sort(ps, pe, cmp); tagver_t m = 0; o = os0; for (p = ps; p < pe; ++m) { *o++ = m; for (; ++p < pe && !cmp(p[-1], p[0]);) *o++ = m; } o = os; for (c = b; c != e; ++c, o += ntag) { o[t] = os0[std::find(ps, pe, c) - ps]; } } o = os; for (c = b; c != e; ++c, o += ntag) { c->order = tagpool.insert(o); } } } // namespace re2c re2c-1.0.1/src/dfa/tagtree.h0000644000175000017500000000214313142626352012416 00000000000000#ifndef _RE2C_DFA_TAGTREE_ #define _RE2C_DFA_TAGTREE_ #include #include "src/util/c99_stdint.h" #include #include #include "src/re/tag.h" #include "src/util/forbid_copy.h" namespace re2c { typedef uint32_t hidx_t; static const hidx_t HROOT = ~0u; struct tagtree_t { // the whole tree of tags found by the epsilon-closure // (a bunch of separate subtrees for each tag with common root) struct node_t { hidx_t pred; tagver_t elem; size_t tag; }; std::vector nodes; // reconstruct paths for comparison std::vector path1; std::vector path2; tagtree_t(); hidx_t pred(hidx_t i) const; tagver_t elem(hidx_t i) const; size_t tag(hidx_t i) const; hidx_t push(hidx_t i, size_t t, tagver_t v); int32_t compare_plain(hidx_t x, hidx_t y, size_t t); int32_t compare_histories(hidx_t x, hidx_t y, tagver_t ox, tagver_t oy, size_t t); int32_t compare_last_subhistories(hidx_t x, hidx_t y, tagver_t ox, tagver_t oy, size_t t); tagver_t last(hidx_t i, size_t t) const; FORBID_COPY(tagtree_t); }; } // namespace re2c #endif // _RE2C_DFA_TAGTREE_ re2c-1.0.1/src/dfa/tagpool.h0000644000175000017500000000166713142626331012437 00000000000000#ifndef _RE2C_DFA_TAGPOOL_ #define _RE2C_DFA_TAGPOOL_ #include #include #include "src/dfa/closure.h" #include "src/dfa/tagtree.h" #include "src/re/tag.h" #include "src/util/forbid_copy.h" #include "src/util/lookup.h" namespace re2c { struct nfa_state_t; struct opt_t; static const size_t ZERO_TAGS = 0; struct Tagpool { private: typedef lookup_t taglookup_t; taglookup_t lookup; public: const opt_t *opts; const size_t ntags; tagver_t *buffer; size_t maxclos; tagver_t *orders; cclositer_t *closes; tagtree_t history; std::stack astack; std::stack bstack; std::stack cstack; Tagpool(const opt_t *o, size_t n); ~Tagpool(); size_t insert_const(tagver_t ver); size_t insert_succ(tagver_t fst); size_t insert(const tagver_t *tags); const tagver_t *operator[](size_t idx) const; FORBID_COPY(Tagpool); }; } // namespace re2c #endif // _RE2C_DFA_TAGPOOL_ re2c-1.0.1/src/dfa/find_state.h0000644000175000017500000000350713142626264013112 00000000000000#ifndef _RE2C_DFA_FIND_STATE_ #define _RE2C_DFA_FIND_STATE_ #include #include "src/util/c99_stdint.h" #include #include "src/dfa/closure.h" #include "src/dfa/dump.h" #include "src/dfa/tagtree.h" #include "src/re/tag.h" #include "src/util/forbid_copy.h" #include "src/util/lookup.h" namespace re2c { class tcpool_t; struct Tagpool; struct dfa_t; struct dump_dfa_t; struct nfa_state_t; struct tcmd_t; struct kernel_t { size_t size; nfa_state_t **state; size_t *tvers; // tag versions hidx_t *tlook; // lookahead tags size_t *order; // see note [orbit order of closure items] explicit kernel_t(size_t n); ~kernel_t(); static kernel_t *copy(const kernel_t &k); FORBID_COPY(kernel_t); }; struct kernels_t { struct result_t { size_t state; tcmd_t *cmd; bool isnew; result_t(size_t s, tcmd_t *p, bool n) : state(s) , cmd(p) , isnew(n) {} }; private: typedef lookup_t index_t; index_t lookup; public: Tagpool &tagpool; tcpool_t &tcpool; const std::vector &tags; private: size_t maxsize; kernel_t *buffer; tagver_t cap; // capacity (greater or equal to max) tagver_t max; // maximal tag version char *mem; tagver_t *x2y; tagver_t *y2x; size_t *x2t; uint32_t *indeg; tcmd_t **pacts; tcmd_t **actnext; tagver_t *actlhs; public: kernels_t(Tagpool &tagp, tcpool_t &tcp, const std::vector &ts); ~kernels_t(); void init(tagver_t v, size_t nkern); size_t size() const; const kernel_t* operator[](size_t idx) const; result_t insert(const closure_t &clos, tcmd_t *acts, tagver_t maxver); bool operator()(const kernel_t *k1, const kernel_t *k2); FORBID_COPY(kernels_t); }; void find_state(dfa_t &dfa, size_t state, size_t symbol, kernels_t &kernels, const closure_t &closure, tcmd_t *acts, dump_dfa_t &dump); } // namespace re2c #endif // _RE2C_DFA_FIND_STATE_ re2c-1.0.1/src/dfa/determinization.cc0000644000175000017500000001230613142626142014325 00000000000000#include #include "src/util/c99_stdint.h" #include #include #include #include #include #include #include #include "src/conf/opt.h" #include "src/conf/warn.h" #include "src/dfa/closure.h" #include "src/dfa/dfa.h" #include "src/dfa/dump.h" #include "src/dfa/find_state.h" #include "src/dfa/tagpool.h" #include "src/dfa/tagtree.h" #include "src/dfa/tcmd.h" #include "src/nfa/nfa.h" #include "src/re/rule.h" #include "src/re/tag.h" #include "src/util/range.h" namespace re2c { static nfa_state_t *transition(nfa_state_t *state, uint32_t symbol); static void reach(const kernel_t *kernel, closure_t &clos, uint32_t symbol); static void warn_nondeterministic_tags(const kernels_t &kernels, const Tagpool &tagpool, const std::vector &tags, const std::valarray &rules, const std::string &cond, Warn &warn); const size_t dfa_t::NIL = std::numeric_limits::max(); nfa_state_t *transition(nfa_state_t *state, uint32_t symbol) { if (state->type != nfa_state_t::RAN) { return NULL; } for (const Range *r = state->ran.ran; r; r = r->next()) { if ((r->lower() <= symbol) && (symbol < r->upper())) { return state->ran.out; } } return NULL; } void reach(const kernel_t *kernel, closure_t &clos, uint32_t symbol) { clos.clear(); for (size_t i = 0; i < kernel->size; ++i) { nfa_state_t *s1 = kernel->state[i], *s2 = transition(s1, symbol); if (s2) { clos_t c = {s1, s2, kernel->order[i], kernel->tvers[i], kernel->tlook[i], HROOT}; clos.push_back(c); } } } dfa_t::dfa_t(const nfa_t &nfa, const opt_t *opts, const std::string &cond, Warn &warn) : states() , nchars(nfa.charset.size() - 1) // (n + 1) bounds for n ranges , charset(nfa.charset) , rules(nfa.rules) , tags(nfa.tags) , mtagvers(*new std::set) , finvers(NULL) , tcpool(*new tcpool_t) , maxtagver(0) , tcmd0(NULL) , tcid0(TCID0) { const size_t ntag = tags.size(); Tagpool tagpool(opts, ntag); kernels_t kernels(tagpool, tcpool, tags); closure_t clos1, clos2; newver_cmp_t newvers_cmp = {tagpool.history}; newvers_t newvers(newvers_cmp); tcmd_t *acts; dump_dfa_t dump(*this, tagpool, nfa); // all-zero tag configuration must have static number zero assert(ZERO_TAGS == tagpool.insert_const(TAGVER_ZERO)); // initial tag versions: [1 .. N] const size_t INITIAL_TAGS = tagpool.insert_succ(1); // other versions: [ .. -(N + 1)] and [N + 1 .. ] maxtagver = static_cast(ntag); // final/fallback versions will be assigned on the go finvers = new tagver_t[ntag]; for (size_t i = 0; i < ntag; ++i) { finvers[i] = fixed(tags[i]) ? TAGVER_ZERO : ++maxtagver; } // mark tags with history (initial and final) for (size_t i = 0; i < ntag; ++i) { if (history(tags[i])) { tagver_t v = static_cast(i) + 1, f = finvers[i]; if (f != TAGVER_ZERO) mtagvers.insert(f); mtagvers.insert(v); } } // iterate while new kernels are added: for each alphabet symbol, // build tagged epsilon-closure of all reachable NFA states, // then find identical or mappable DFA state or add a new one clos_t c0 = {NULL, nfa.root, ZERO_TAGS, INITIAL_TAGS, HROOT, HROOT}; clos1.push_back(c0); acts = closure(*this, clos1, clos2, tagpool, newvers, dump.shadow); find_state(*this, dfa_t::NIL, 0/* any */, kernels, clos2, acts, dump); for (size_t i = 0; i < kernels.size(); ++i) { newvers.clear(); for (size_t c = 0; c < nchars; ++c) { reach(kernels[i], clos1, charset[c]); acts = closure(*this, clos1, clos2, tagpool, newvers, dump.shadow); find_state(*this, i, c, kernels, clos2, acts, dump); } } if (!opts->posix_captures) { warn_nondeterministic_tags(kernels, tagpool, tags, rules, cond, warn); } } /* * For each tag, find maximal number of parallel versions of this tag * used in each kernel (degree of non-determinism) and warn about tags with * maximum degree two or more. * * WARNING: this function assumes that kernel items are grouped by rule */ void warn_nondeterministic_tags(const kernels_t &kernels, const Tagpool &tagpool, const std::vector &tags, const std::valarray &rules, const std::string &cond, Warn &warn) { const size_t ntag = tagpool.ntags, nkrn = kernels.size(); std::vector maxv(ntag, 0); std::set uniq; for (size_t i = 0; i < nkrn; ++i) { const kernel_t *k = kernels[i]; nfa_state_t **s = k->state; const size_t n = k->size, *v = k->tvers; for (size_t u = 0; u < n;) { const size_t r = s[u]->rule; const Rule &rule = rules[r]; const size_t l = u; for (; ++u < n && s[u]->rule == r;); for (size_t t = rule.ltag; t < rule.htag; ++t) { uniq.clear(); for (size_t m = l; m < u; ++m) { uniq.insert(tagpool[v[m]][t]); } maxv[t] = std::max(maxv[t], uniq.size()); } } } const size_t nrule = rules.size(); for (size_t r = 0; r < nrule; ++r) { const Rule &rule = rules[r]; for (size_t t = rule.ltag; t < rule.htag; ++t) { const size_t m = maxv[t]; if (m > 1) { const uint32_t line = rule.code->fline; warn.nondeterministic_tags(line, cond, tags[t].name, m); } } } } dfa_t::~dfa_t() { std::vector::iterator i = states.begin(), e = states.end(); for (; i != e; ++i) { delete *i; } } } // namespace re2c re2c-1.0.1/src/dfa/tcmd.cc0000644000175000017500000001235313140446037012052 00000000000000#include #include #include "src/dfa/tcmd.h" #include "src/util/hash32.h" namespace re2c { static uint32_t hash_tcmd(const tcmd_t *tcmd); bool tcmd_t::equal(const tcmd_t &x, const tcmd_t &y) { return x.lhs == y.lhs && x.rhs == y.rhs && equal_history(x.history, y.history); } bool tcmd_t::equal_history(const tagver_t *h, const tagver_t *g) { for (;;) { if (*h != *g) return false; if (*h == TAGVER_ZERO) return true; ++h; ++g; } } /* note [topological ordering of copy commands] * * The order in which copy commands are executed is important: * 'x = y; y = z;' is not the same as 'y = z; x = y;' (the latter * overwrites 'y' before its precious value is copied to 'x'). * * To avoid overwrites, commands should be topologically sorted. * The algorithm detects cycles and terminates; non-trivial cycles * (induced by 2 or more nodes) are reported. We don't care about * trivial cycles (loopbacks), because they can be implemented without * temporary variable. Non-trivial cycles need a new temporary variable * local to the given basic block, which makes liveness analysis more * complex (so we simply forbid such mappings). * * For the purpose of topsort, we treat commands as arcs of directed * acyclic graph: command 'x = y' yields arc X -> Y. Topsort works * by iteratively removing arcs X -> Y such that X has zero in-degree * (they correspond to commands with no dependencies). * Commands in the order of removal are topologically sorted. * * The algorithm iterates graph and removes arcs with zero in-degree * until either the graph is empty or all remaining arcs belong to * cycles. * * The algorithm starts and ends with all-zero in-degree buffer. */ bool tcmd_t::iscopy(const tcmd_t *x) { return x->rhs != TAGVER_ZERO && x->history[0] == TAGVER_ZERO; } bool tcmd_t::isset(const tcmd_t *x) { if (x->rhs == TAGVER_ZERO) { assert(x->history[0] != TAGVER_ZERO); return true; } return false; } bool tcmd_t::isadd(const tcmd_t *x) { return x->rhs != TAGVER_ZERO && x->history[0] != TAGVER_ZERO; } bool tcmd_t::topsort(tcmd_t **phead, uint32_t *indeg) { tcmd_t *x0 = *phead, *x, *y0 = NULL, **py; bool nontrivial_cycles = false; // initialize in-degree for (x = x0; x; x = x->next) { indeg[x->lhs] = indeg[x->rhs] = 0; } for (x = x0; x; x = x->next) { ++indeg[x->rhs]; } for (py = &y0;;) { // reached end of list if (!x0) break; tcmd_t **px = &x0, **py1 = py; for (x = x0; x; x = x->next) { if (indeg[x->lhs] == 0) { --indeg[x->rhs]; *py = x; py = &x->next; } else { *px = x; px = &x->next; } } *px = NULL; // only cycles left if (py == py1) { // look for cycles of length 2 or more for (x = x0; x && x->lhs == x->rhs; x = x->next); nontrivial_cycles = x != NULL; break; } } *py = x0; *phead = y0; return nontrivial_cycles; } tcpool_t::tcpool_t() : alc() , index() { // empty command must have static number zero assert(TCID0 == insert(NULL)); } tcmd_t *tcpool_t::make_copy(tcmd_t *next, tagver_t lhs, tagver_t rhs) { tcmd_t *p = alc.alloct(1); p->next = next; p->lhs = lhs; p->rhs = rhs; p->history[0] = TAGVER_ZERO; return p; } tcmd_t *tcpool_t::make_set(tcmd_t *next, tagver_t lhs, tagver_t set) { const size_t size = sizeof(tcmd_t) + sizeof(tagver_t); tcmd_t *p = static_cast(alc.alloc(size)); p->next = next; p->lhs = lhs; p->rhs = TAGVER_ZERO; p->history[0] = set; p->history[1] = TAGVER_ZERO; return p; } tcmd_t *tcpool_t::make_add(tcmd_t *next, tagver_t lhs, tagver_t rhs, const tagtree_t &history, hidx_t hidx, size_t tag) { size_t hlen = 0; for (hidx_t i = hidx; i != HROOT; i = history.pred(i)) { if (history.tag(i) == tag) ++hlen; } const size_t size = sizeof(tcmd_t) + hlen * sizeof(tagver_t); tcmd_t *p = static_cast(alc.alloc(size)); p->next = next; p->lhs = lhs; p->rhs = rhs; tagver_t *h = p->history; for (hidx_t i = hidx; i != HROOT; i = history.pred(i)) { if (history.tag(i) == tag) { *h++ = history.elem(i); } } *h++ = TAGVER_ZERO; return p; } tcmd_t *tcpool_t::copy_add(tcmd_t *next, tagver_t lhs, tagver_t rhs, const tagver_t *history) { size_t hlen = 0; for (const tagver_t *h = history; *h != TAGVER_ZERO; ++h) ++hlen; const size_t size = sizeof(tcmd_t) + hlen * sizeof(tagver_t); tcmd_t *p = static_cast(alc.alloc(size)); p->next = next; p->lhs = lhs; p->rhs = rhs; memcpy(p->history, history, (hlen + 1) * sizeof(tagver_t)); return p; } uint32_t hash_tcmd(const tcmd_t *tcmd) { uint32_t h = 0; for (const tcmd_t *p = tcmd; p; p = p->next) { h = hash32(h, &p->lhs, sizeof(p->lhs)); h = hash32(h, &p->rhs, sizeof(p->rhs)); h = hash32(h, &p->history[0], sizeof(p->history[0])); } return h; } struct tcmd_eq_t { bool operator()(const tcmd_t *x, const tcmd_t *y) const { for (;;) { if (!x && !y) return true; if (!x || !y) return false; if (!tcmd_t::equal(*x, *y)) return false; x = x->next; y = y->next; } } }; tcid_t tcpool_t::insert(const tcmd_t *tcmd) { const uint32_t h = hash_tcmd(tcmd); tcmd_eq_t eq; size_t id = index.find_with(h, tcmd, eq); if (id == index_t::NIL) { id = index.push(h, tcmd); } return static_cast(id); } const tcmd_t *tcpool_t::operator[](tcid_t id) const { return index[id]; } } // namespace re2c re2c-1.0.1/src/dfa/cfg/0000755000175000017500000000000013143420715011425 500000000000000re2c-1.0.1/src/dfa/cfg/varalloc.cc0000644000175000017500000000624513142624070013465 00000000000000#include #include #include "src/dfa/cfg/cfg.h" #include "src/dfa/dfa.h" #include "src/dfa/tcmd.h" #include "src/re/tag.h" namespace re2c { /* We have a binary relation on the set of all tags * and must construct set decomposition into subsets such that * all tags in the same subset are equivalent. * * This problem is isomorphic to partitioning graph into cliques * (aka finding the 'clique cover' of a graph). * * Finding minimal clique cover in arbitrary graph is NP-complete. * We build just some cover (not necessarily minimal). * The algorithm takes quadratic (in the number of tags) time. */ tagver_t cfg_t::variable_allocation(const cfg_t &cfg, const bool *interf, tagver_t *ver2new) { const tagver_t END = std::numeric_limits::max(), nver = cfg.dfa.maxtagver + 1; tagver_t *next = new tagver_t[nver]; // list of class members tagver_t *repr = new tagver_t[nver]; // maps tag to class representative tagver_t rx, ry, x, y, z; std::fill(next, next + nver, END); std::fill(repr, repr + nver, END); // copy coalescing: for each command X = Y, try to merge X and Y const cfg_bb_t *b = cfg.bblocks, *e = b + cfg.nbbfall; for (; b < e; ++b) { for (const tcmd_t *p = b->cmd; p; p = p->next) { x = p->lhs; y = p->rhs; if (y == TAGVER_ZERO || y == x) continue; rx = repr[x]; ry = repr[y]; if (rx != END) { if (ry != END) continue; for (z = rx; z != END; z = next[z]) { if (interf[z * nver + y]) break; } if (z == END) { repr[y] = rx; next[y] = next[rx]; next[rx] = y; } } else if (ry != END) { for (z = ry; z != END; z = next[z]) { if (interf[z * nver + x]) break; } if (z == END) { repr[x] = ry; next[x] = next[ry]; next[ry] = x; } } else if (!interf[x * nver + y]) { repr[x] = repr[y] = x; next[x] = y; } } } // try to merge equivalence classes left after copy coalescing for (rx = 0; rx < nver; ++rx) { if (rx != repr[rx]) continue; for (ry = rx + 1; ry < nver; ++ry) { if (ry != repr[ry]) continue; for (x = rx; x != END; x = next[x]) { for (y = ry; y != END; y = next[y]) { if (interf[x * nver + y]) break; } if (y != END) break; } if (x == END) { for (y = ry;; y = next[y]) { repr[y] = rx; if (next[y] == END) { next[y] = next[rx]; next[rx] = ry; break; } } } } } // push each remaining tag to any non-interfering class for (x = 0; x < nver; ++x) { if (repr[x] != END) continue; // try all existing classes for (rx = 0; rx < nver; ++rx) { if (rx != repr[rx]) continue; // check interference with class members for (y = rx; y != END; y = next[y]) { if (interf[x * nver + y]) break; } // no interference; add to class if (y == END) { repr[x] = rx; next[x] = next[rx]; next[rx] = x; break; } } // make new equivalence class if (rx == nver) { repr[x] = x; } } tagver_t maxver = 0; for (rx = 0; rx < nver; ++rx) { if (repr[rx] != rx) continue; ++maxver; for (x = rx; x != END; x = next[x]) { ver2new[x] = maxver; } } delete[] next; delete[] repr; return maxver; } } // namespace re2c re2c-1.0.1/src/dfa/cfg/liveanal.cc0000644000175000017500000001061213142624070013446 00000000000000#include #include #include #include "src/dfa/cfg/cfg.h" #include "src/dfa/dfa.h" #include "src/dfa/tcmd.h" #include "src/re/rule.h" #include "src/re/tag.h" namespace re2c { // calculates deep-first search postorder of transition nodes, // skips final and fallback nodes (they have no successors anyway) static cfg_ix_t *postorder(const cfg_t &cfg, bool *done, cfg_ix_t *ord, cfg_ix_t i) { if (i >= cfg.nbbarc || done[i]) return ord; done[i] = true; const cfg_bb_t *b = cfg.bblocks + i; for (cfg_ix_t *j = b->succb; j < b->succe; ++j) { ord = postorder(cfg, done, ord, *j); } *ord = i; return ++ord; } void cfg_t::live_through_bblock(const tcmd_t *cmd, bool *live) { if (!cmd) return; live_through_bblock(cmd->next, live); const tagver_t l = cmd->lhs, r = cmd->rhs; if (live[l]) { // first reset, than set: LHS might be equal to history live[l] = false; if (r != TAGVER_ZERO) { live[r] = true; } } } void cfg_t::liveness_analysis(const cfg_t &cfg, bool *live) { const std::vector &tags = cfg.dfa.tags; const size_t nver = static_cast(cfg.dfa.maxtagver) + 1; const cfg_ix_t narc = cfg.nbbarc, nfin = cfg.nbbfin; const tagver_t *fins = cfg.dfa.finvers; bool *buf1 = new bool[nver]; bool *buf2 = new bool[nver]; bool *done = new bool[narc]; cfg_ix_t *pord = new cfg_ix_t[narc]; /* note [control flow equations for tag liveness] * * Liveness in bblock B is given by control flow equations: * live-out(B) = union of live-in(C), for all successors C * live-in(B) = live-out(B) except defined(B) * Equations are solved by iteration until fix point. * * Live set can only grow on each iteration, it never shrinks. * Initially all final tag versions used in rules are alive; * we pre-calculate them and then only update table by adding * new versions. */ memset(live, 0, nfin * nver * sizeof(bool)); for (cfg_ix_t i = narc; i < nfin; ++i) { const cfg_bb_t *b = cfg.bblocks + i; const Rule *r = b->rule; bool *l = &live[i * nver]; // all final bblocks have USE tags, but no successors assert(r && b->succb == b->succe); for (size_t t = r->ltag; t < r->htag; ++t) { l[fins[t]] = !fixed(tags[t]); } } memset(done, 0, narc * sizeof(bool)); postorder(cfg, done, pord, 0); for (bool loop = true; loop;) { loop = false; // iterate nodes in postorder for (cfg_ix_t a = 0; a < narc; ++a) { const cfg_ix_t i = pord[a]; const cfg_bb_t *b = cfg.bblocks + i; bool *old = &live[i * nver]; // transition bblocks have no USE tags assert(!b->rule); memcpy(buf1, old, nver * sizeof(bool)); for (cfg_ix_t *j = b->succb; j < b->succe; ++j) { const bool *l = &live[*j * nver]; const tcmd_t *cmd = cfg.bblocks[*j].cmd; memcpy(buf2, l, nver * sizeof(bool)); cfg_t::live_through_bblock(cmd, buf2); for (size_t v = 0; v < nver; ++v) { buf1[v] |= buf2[v]; } } if (memcmp(old, buf1, nver * sizeof(bool)) != 0) { memcpy(old, buf1, nver * sizeof(bool)); loop = true; } } } /* note [fallback tag liveness] * * Liveness of fallback tag is propagated forward from fallback * state (see note [fallback states]) and until there remain * any fallthrough paths from current state. * * Fallback version of tag is either backup copy of tag's final * version, or (if there's no backup) the final version itself. * Absence of backup means that final version is not overwritten, * but still we should prevent it from merging with other tags * (otherwise it may become overwritten). */ for (cfg_ix_t i = nfin; i < cfg.nbbfall; ++i) { const cfg_bb_t *b = cfg.bblocks + i; const Rule *r = b->rule; // all fallback bblocks have USE tags assert(r); memset(buf1, 0, nver * sizeof(bool)); for (size_t t = r->ltag; t < r->htag; ++t) { buf1[fins[t]] = !fixed(tags[t]); } // need two passes: same version may occur as both LHS and RHS // not the same as backward propagation of liveness through bblock for (const tcmd_t *p = b->cmd; p; p = p->next) { buf1[p->lhs] = false; } for (const tcmd_t *p = b->cmd; p; p = p->next) { const tagver_t v = p->rhs; if (v != TAGVER_ZERO) { buf1[v] = true; } } for (cfg_ix_t *j = b->succb; j < b->succe; ++j) { bool *liv = &live[*j * nver]; for (size_t v = 0; v < nver; ++v) { liv[v] |= buf1[v]; } } } delete[] buf1; delete[] buf2; delete[] done; delete[] pord; } } // namespace re2c re2c-1.0.1/src/dfa/cfg/cfg.cc0000644000175000017500000001161013142625674012424 00000000000000#include #include #include #include #include #include "src/dfa/cfg/cfg.h" #include "src/dfa/dfa.h" #include "src/util/allocate.h" namespace re2c { struct Rule; struct tcmd_t; static void map_arcs_to_bblocks(const dfa_t &dfa, cfg_ix_t *arc2bb, cfg_ix_t &nbbarc, cfg_ix_t &nbbfin, cfg_ix_t &nbbfall); static cfg_bb_t *create_bblocks(dfa_t &dfa, const cfg_ix_t *arc2bb, cfg_ix_t nbbfin, cfg_ix_t nbbfall); static void successors(const dfa_t &dfa, const cfg_ix_t *arc2bb, bool *been, cfg_ix_t *&succ, size_t x); static void fallback(const dfa_t &dfa, const cfg_ix_t *arc2bb, bool *been, cfg_ix_t *&succ, size_t x); cfg_t::cfg_t(dfa_t &a) : dfa(a) , bblocks(NULL) , nbbarc(0) , nbbfin(0) , nbbfall(0) { const size_t nstate = dfa.states.size(), nsym = dfa.nchars; cfg_ix_t *arc2bb = new cfg_ix_t[nstate * (nsym + 2)]; map_arcs_to_bblocks(dfa, arc2bb, nbbarc, nbbfin, nbbfall); bblocks = create_bblocks(dfa, arc2bb, nbbfin, nbbfall); delete[] arc2bb; } void map_arcs_to_bblocks(const dfa_t &dfa, cfg_ix_t *arc2bb, cfg_ix_t &nbbarc, cfg_ix_t &nbbfin, cfg_ix_t &nbbfall) { const size_t nstate = dfa.states.size(), nsym = dfa.nchars; // root bblock for initial tagged epsilon-transition cfg_ix_t nbb = 1; // bblocks for tagged transitions for (size_t i = 0; i < nstate; ++i) { tcmd_t **c = dfa.states[i]->tcmd, **f = c + nsym; for (; c < f; ++c) { *arc2bb++ = *c == NULL ? 0 : nbb++; } } nbbarc = nbb; // bblock for final tagged epsilon-transition for (size_t i = 0; i < nstate; ++i) { tcmd_t *f = dfa.states[i]->tcmd[nsym]; *arc2bb++ = f == NULL ? 0 : nbb++; } nbbfin = nbb; // bblock for fallback tagged epsilon-transition for (size_t i = 0; i < nstate; ++i) { const dfa_state_t *s = dfa.states[i]; // (check final tags: fallback tags may be empty) *arc2bb++ = s->fallback && s->tcmd[nsym] ? nbb++ : 0; } nbbfall = nbb; } cfg_bb_t *create_bblocks(dfa_t &dfa, const cfg_ix_t *arc2bb, cfg_ix_t nbbfin, cfg_ix_t nbbfall) { const size_t nstate = dfa.states.size(), nsym = dfa.nchars; const cfg_ix_t *a2b = arc2bb; cfg_ix_t *succb = new cfg_ix_t[nbbfin], *succe; bool *been = new bool[nstate]; cfg_bb_t *bblocks = allocate(nbbfall), *b = bblocks; // root bblock std::fill(been, been + nstate, false); successors(dfa, arc2bb, been, succe = succb, 0); new(b++) cfg_bb_t(succb, succe, dfa.tcmd0, NULL); // transition bblocks for (size_t i = 0; i < nstate; ++i) { const dfa_state_t *s = dfa.states[i]; for (size_t c = 0; c < nsym; ++c) { if (*a2b++ != 0) { std::fill(been, been + nstate, false); successors(dfa, arc2bb, been, succe = succb, s->arcs[c]); new(b++) cfg_bb_t(succb, succe, s->tcmd[c], NULL); } } } // final bblocks for (size_t i = 0; i < nstate; ++i) { if (*a2b++ != 0) { const dfa_state_t *s = dfa.states[i]; new(b++) cfg_bb_t(NULL, NULL, s->tcmd[nsym], &dfa.rules[s->rule]); } } // fallback bblocks for (size_t i = 0; i < nstate; ++i) { if (*a2b++ != 0) { const dfa_state_t *s = dfa.states[i]; std::fill(been, been + nstate, false); fallback(dfa, arc2bb, been, succe = succb, i); new(b++) cfg_bb_t(succb, succe, s->tcmd[nsym + 1], &dfa.rules[s->rule]); } } delete[] succb; delete[] been; return bblocks; } cfg_bb_t::cfg_bb_t(const cfg_ix_t *sb, const cfg_ix_t *se, tcmd_t *&c, const Rule *r) : succb(NULL) , succe(NULL) , cmd(c) , rule(r) { const size_t n = static_cast(se - sb); succb = new cfg_ix_t[n]; if (n > 0) memcpy(succb, sb, n * sizeof(cfg_ix_t)); succe = succb + n; } // find immediate successors of the given bblock void successors(const dfa_t &dfa, const cfg_ix_t *arc2bb, bool *been, cfg_ix_t *&succ, size_t x) { if (x == dfa_t::NIL || been[x]) return; been[x] = true; const size_t nstate = dfa.states.size(), nsym = dfa.nchars, *a = dfa.states[x]->arcs; const cfg_ix_t *a2b = &arc2bb[x * nsym]; for (size_t c = 0; c < nsym; ++c) { const cfg_ix_t b = a2b[c]; if (b != 0) { *succ++ = b; } else { successors(dfa, arc2bb, been, succ, a[c]); } } const cfg_ix_t f = arc2bb[nstate * nsym + x]; if (f != 0) { *succ++ = f; } } // find all bblocks reachable from this one by following // non-accepting DFA paths: this is the set of bblocks affected // by liveness of fallback tags void fallback(const dfa_t &dfa, const cfg_ix_t *arc2bb, bool *been, cfg_ix_t *&succ, size_t x) { if (x == dfa_t::NIL || been[x]) return; been[x] = true; const size_t nsym = dfa.nchars, *a = dfa.states[x]->arcs; const cfg_ix_t *a2b = &arc2bb[x * nsym]; for (size_t c = 0; c < nsym; ++c) { const size_t y = a[c]; if (y != dfa_t::NIL && dfa.states[y]->fallthru) { const cfg_ix_t b = a2b[c]; if (b != 0) { *succ++ = b; } fallback(dfa, arc2bb, been, succ, y); } } } cfg_t::~cfg_t() { cfg_bb_t *b = bblocks, *e = b + nbbfall; for (; b < e; ++b) { delete[] b->succb; } operator delete(bblocks); } } // namespace re2c re2c-1.0.1/src/dfa/cfg/cfg.h0000644000175000017500000000252413142625721012263 00000000000000#ifndef _RE2C_DFA_CFG_CFG_ #define _RE2C_DFA_CFG_CFG_ #include "src/util/c99_stdint.h" #include "src/dfa/dfa.h" #include "src/re/tag.h" #include "src/util/forbid_copy.h" namespace re2c { struct Rule; struct dfa_t; struct tcmd_t; typedef uint32_t cfg_ix_t; // basic block struct cfg_bb_t { cfg_ix_t *succb; cfg_ix_t *succe; tcmd_t *&cmd; const Rule *rule; cfg_bb_t(const cfg_ix_t *sb, const cfg_ix_t *se, tcmd_t *&c, const Rule *r); FORBID_COPY(cfg_bb_t); }; // control flow graph struct cfg_t { dfa_t &dfa; cfg_bb_t *bblocks; cfg_ix_t nbbarc; cfg_ix_t nbbfin; cfg_ix_t nbbfall; explicit cfg_t(dfa_t &a); ~cfg_t(); static tagver_t compact(const cfg_t &cfg, tagver_t *ver2new); static void liveness_analysis(const cfg_t &cfg, bool *live); static void live_through_bblock(const tcmd_t *cmd, bool *live); static void dead_code_elimination(cfg_t &cfg, const bool *live); static void interference(const cfg_t &cfg, const bool *live, bool *interf); static tagver_t variable_allocation(const cfg_t &cfg, const bool *interf, tagver_t *ver2new); static void renaming(cfg_t &cfg, const tagver_t *ver2new, tagver_t maxver); static void normalization(cfg_t &cfg); FORBID_COPY(cfg_t); }; void dump_cfg(const cfg_t &cfg, const bool *live); void dump_interf(const cfg_t &cfg, const bool *interf); } // namespace re2c #endif // _RE2C_DFA_CFG_CFG_ re2c-1.0.1/src/dfa/cfg/rename.cc0000644000175000017500000000225413142624070013125 00000000000000#include #include #include #include "src/dfa/cfg/cfg.h" #include "src/dfa/dfa.h" #include "src/dfa/tcmd.h" #include "src/re/tag.h" namespace re2c { void cfg_t::renaming(cfg_t &cfg, const tagver_t *ver2new, tagver_t maxver) { tagver_t &oldmax = cfg.dfa.maxtagver; if (oldmax == maxver) return; oldmax = maxver; cfg_bb_t *b = cfg.bblocks, *be = b + cfg.nbbfall; for (; b < be; ++b) { for (tcmd_t *p, **pp = &b->cmd; (p = *pp);) { tagver_t &l = p->lhs, &r = p->rhs, h = p->history[0]; l = ver2new[l]; if (r != TAGVER_ZERO) { r = ver2new[r]; } if (l == r && h == TAGVER_ZERO) { *pp = p->next; } else { pp = &p->next; } } } // final tag versions tagver_t *fins = cfg.dfa.finvers; const std::vector &tags = cfg.dfa.tags; for (size_t t = 0; t < tags.size(); ++t) { tagver_t &f = fins[t]; if (f != TAGVER_ZERO) { // fixed tag or unreachable rule f = ver2new[f]; } } // versions of tags with history std::set newmt, &oldmt = cfg.dfa.mtagvers; for (std::set::iterator i = oldmt.begin(); i != oldmt.end(); ++i) { newmt.insert(ver2new[*i]); } oldmt.swap(newmt); } } // namespace re2c re2c-1.0.1/src/dfa/cfg/dump.cc0000644000175000017500000000372713142624070012631 00000000000000#include #include "src/dfa/cfg/cfg.h" #include "src/dfa/dfa.h" #include "src/dfa/tcmd.h" #include "src/re/rule.h" #include "src/re/tag.h" namespace re2c { void dump_cfg(const cfg_t &cfg, const bool *live) { const tagver_t nver = cfg.dfa.maxtagver + 1; fprintf(stderr, "digraph CFG {\n" " rankdir=LR\n" " node[shape=Mrecord fontname=Terminus height=0.2 width=0.2]\n" " edge[arrowhead=vee fontname=Terminus]\n\n"); for (cfg_ix_t i = 0; i < cfg.nbbfall; ++i, live += nver) { const cfg_bb_t *b = cfg.bblocks + i; fprintf(stderr, " n%u [label=\"%u\\n", i, i); for (const tcmd_t *p = b->cmd; p; p = p->next) { const tagver_t l = p->lhs, r = p->rhs, *h = p->history; if (tcmd_t::iscopy(p)) { fprintf(stderr, "%d=%d ", l, r); } else { fprintf(stderr, "%d", l); if (r != TAGVER_ZERO) { fprintf(stderr, "=%d", r); } for (; *h != TAGVER_ZERO; ++h) { fprintf(stderr, "%s ", *h == TAGVER_BOTTOM ? "↓" : "↑"); } } } fprintf(stderr, "/"); if (b->rule) { for (size_t t = b->rule->ltag; t < b->rule->htag; ++t) { const tagver_t v = cfg.dfa.finvers[t]; if (v != TAGVER_ZERO) { fprintf(stderr, "%i ", v); } } } if (i < cfg.nbbfin) { fprintf(stderr, "\\nneed:"); for (tagver_t v = 0; v < nver; ++v) { if (live[v]) { fprintf(stderr, " %i", v); } } } fprintf(stderr, "\"]\n"); const char *style = b->rule ? "dotted" : "solid"; for (cfg_ix_t *j = b->succb; j < b->succe; ++j) { fprintf(stderr, " n%u -> n%u [style=%s]\n", i, *j, style); } } fprintf(stderr, "}\n"); } void dump_interf(const cfg_t &cfg, const bool *interf) { const tagver_t nver = cfg.dfa.maxtagver + 1; for (tagver_t y = 1; y < nver; ++y) { fprintf(stderr, "%2d ", y); } fprintf(stderr, "\n"); for (tagver_t x = 1; x < nver; ++x) { for (tagver_t y = 1; y < nver; ++y) { fprintf(stderr, "%2c ", interf[x * nver + y] ? '*' : '.'); } fprintf(stderr, "\n"); } } } // namespace re2c re2c-1.0.1/src/dfa/cfg/compact.cc0000644000175000017500000000201613142624070013300 00000000000000#include #include #include #include "src/dfa/cfg/cfg.h" #include "src/dfa/dfa.h" #include "src/dfa/tcmd.h" #include "src/re/tag.h" namespace re2c { tagver_t cfg_t::compact(const cfg_t &cfg, tagver_t *ver2new) { const std::vector &tags = cfg.dfa.tags; const size_t nver = static_cast(cfg.dfa.maxtagver) + 1, ntag = tags.size(); const tagver_t *fins = cfg.dfa.finvers; bool *used = new bool[nver]; std::fill(used, used + nver, false); for (size_t t = 0; t < ntag; ++t) { const tagver_t f = fins[t]; used[f] = f != TAGVER_ZERO; // fixed tag or unreachable rule } for (size_t i = 0; i < cfg.nbbfall; ++i) { const cfg_bb_t &b = cfg.bblocks[i]; for (const tcmd_t *p = b.cmd; p; p = p->next) { const tagver_t r = p->rhs; if (r != TAGVER_ZERO) { used[r] = true; } used[p->lhs] = true; } } tagver_t maxver = 0; for (size_t v = 0; v < nver; ++v) { ver2new[v] = used[v] ? ++maxver : TAGVER_ZERO; } delete[] used; return maxver; } } // namespace re2c re2c-1.0.1/src/dfa/cfg/freeze.cc0000644000175000017500000000242113142624070013132 00000000000000#include #include #include "src/dfa/dfa.h" #include "src/dfa/tcmd.h" namespace re2c { /* note [tag freezing] * * Comparison of tag commands should be very fast (constant time): * many optimizations rely on this (like tunnelling, hoisting and * especially Moore's minimization, which compares whole classes * of tagged transition at once). So we bring each command to some * 'normal form' and insert it into common index. * * After that commands can be addressed and compared by index. * They also become immutable, because different commands may * share representation in memory. */ void freeze_tags(dfa_t &dfa) { tcpool_t &pool = dfa.tcpool; const size_t nstate = dfa.states.size(), nsym = dfa.nchars; dfa.tcid0 = pool.insert(dfa.tcmd0); dfa.tcmd0 = NULL; for (size_t i = 0; i < nstate; ++i) { dfa_state_t *s = dfa.states[i]; tcmd_t **cmd = s->tcmd, **const fin = cmd + nsym, **const fall = fin + 1; tcid_t *id = s->tcid = new tcid_t[nsym + 2]; // transition commands for(; cmd < fin; ++cmd) { *id++ = pool.insert(*cmd); } // final epsilon-transition command *id++ = pool.insert(*fin); // fallback epsilon-transition command *id++ = pool.insert(*fall); delete[] s->tcmd; s->tcmd = NULL; } } } // namespace re2c re2c-1.0.1/src/dfa/cfg/normalize.cc0000644000175000017500000000540613142625774013674 00000000000000#include #include "src/util/c99_stdint.h" #include #include #include "src/dfa/cfg/cfg.h" #include "src/dfa/dfa.h" #include "src/dfa/tcmd.h" #include "src/re/tag.h" namespace re2c { template void normalize(cmd_t *cmd); /* note [tag normalization] * * After optimizations different commands may become equal * up to reordering and removing duplicates. Such commands * should be recognized as equal by further optimizations * like minimization, hoisting, tunnelling, etc. * For that reason all commands are normalized. */ static tcmd_t **normalize(tcmd_t **ps, tcmd_t *e); void cfg_t::normalization(cfg_t &cfg) { const size_t nver = static_cast(cfg.dfa.maxtagver) + 1; uint32_t *indeg = new uint32_t[nver]; memset(indeg, 0, nver * sizeof(uint32_t)); cfg_bb_t *b = cfg.bblocks, *e = b + cfg.nbbfall; for (; b < e; ++b) { // We cannot normalize the list of commands as a whole: the // relative order of some commands might be significant. // Therefore we split the list in continuous sublists of // 'copy', 'save without history' and 'save with history' // commands and normalize each sublist in a proper way. tcmd_t **px, *x; for (px = &b->cmd; (x = *px);) { if (tcmd_t::iscopy(x)) { for (x = *px; x && tcmd_t::iscopy(x); x = x->next); *normalize(px, x) = NULL; // topsort expects NULL terminator tcmd_t::topsort(px, indeg); for (; *px; px = &(*px)->next); // find tail *px = x; // restore tail } else if (tcmd_t::isset(x)) { for (x = *px; x && tcmd_t::isset(x); x = x->next); px = normalize(px, x); } else { for (; (x = *px) && tcmd_t::isadd(x); px = &x->next); // don't normalize, histories may have complex dependencies } } } delete[] indeg; } static void swap(tcmd_t &x, tcmd_t &y) { assert(!tcmd_t::isadd(&x) && !tcmd_t::isadd(&y)); std::swap(x.lhs, y.lhs); std::swap(x.rhs, y.rhs); std::swap(x.history[0], y.history[0]); } static bool less(const tcmd_t &x, const tcmd_t &y) { assert(!tcmd_t::isadd(&x) && !tcmd_t::isadd(&y)); tagver_t u, v; u = x.lhs; v = y.lhs; if (u < v) return true; if (u > v) return false; u = x.rhs; v = y.rhs; if (u < v) return true; if (u > v) return false; u = x.history[0]; v = y.history[0]; if (u < v) return true; if (u > v) return false; return false; } tcmd_t **normalize(tcmd_t **ps, tcmd_t *e) { // sort lexicographically for (tcmd_t *p = *ps; p != e; p = p->next) { for (tcmd_t *q = p->next; q != e; q = q->next) { if (less(*q, *p)) { swap(*p, *q); } } } // delete duplicates for (tcmd_t *p = *ps; p != e;) { tcmd_t *q = p->next; if (q != e && tcmd_t::equal(*p, *q)) { p->next = q->next; } else { p = q; } } for (; *ps != e; ps = &(*ps)->next); return ps; } } // namespace re2c re2c-1.0.1/src/dfa/cfg/optimize.cc0000644000175000017500000000204513142626012013512 00000000000000#include #include "src/util/c99_stdint.h" #include "src/dfa/cfg/cfg.h" #include "src/dfa/dfa.h" #include "src/re/tag.h" namespace re2c { void compact_and_optimize_tags(dfa_t &dfa, bool optimize) { tagver_t maxver = dfa.maxtagver; if (maxver > 0) { cfg_t cfg(dfa); size_t nver = static_cast(maxver) + 1; tagver_t *ver2new = new tagver_t[nver]; maxver = cfg_t::compact(cfg, ver2new); cfg_t::renaming(cfg, ver2new, maxver); if (optimize && maxver > 0) { nver = static_cast(maxver) + 1; bool *live = new bool[cfg.nbbfin * nver]; bool *interf = new bool[nver * nver]; static const uint32_t NPASS = 2; for (uint32_t n = 0; n < NPASS; ++n) { cfg_t::liveness_analysis(cfg, live); cfg_t::dead_code_elimination(cfg, live); cfg_t::interference(cfg, live, interf); maxver = cfg_t::variable_allocation(cfg, interf, ver2new); cfg_t::renaming(cfg, ver2new, maxver); cfg_t::normalization(cfg); } delete[] live; delete[] interf; } delete[] ver2new; } } } // namespace re2c re2c-1.0.1/src/dfa/cfg/interfere.cc0000644000175000017500000000552513142624070013645 00000000000000#include #include #include #include "src/dfa/cfg/cfg.h" #include "src/dfa/dfa.h" #include "src/dfa/tcmd.h" #include "src/re/tag.h" namespace re2c { typedef std::vector vals_t; static void interfere(const tcmd_t *cmd, const bool *live, bool *interf, bool *buf, vals_t *vals, size_t nver); void cfg_t::interference(const cfg_t &cfg, const bool *live, bool *interf) { const tagver_t maxver = cfg.dfa.maxtagver + 1; const size_t nver = static_cast(maxver); bool *buf = new bool[nver]; vals_t *vals = new vals_t[nver](); const cfg_bb_t *b = cfg.bblocks, *e = b + cfg.nbbfin; memset(interf, 0, nver * nver * sizeof(bool)); for (; b < e; ++b, live += nver) { interfere(b->cmd, live, interf, buf, vals, nver); } // versions of tags with/without history interfere std::set &mt = cfg.dfa.mtagvers; for (std::set::iterator i = mt.begin(); i != mt.end(); ++i) { for (tagver_t u = *i, v = 0; v < maxver; ++v) { if (mt.find(v) == mt.end()) { interf[v * maxver + u] = interf[u * maxver + v] = true; } } } delete[] buf; delete[] vals; } void interfere(const tcmd_t *cmd, const bool *live, bool *interf, bool *buf, vals_t *vals, size_t nver) { // initialize value of RHS for all commands in this basic block for (const tcmd_t *p = cmd; p; p = p->next) { const tagver_t r = p->rhs; if (r != TAGVER_ZERO) { vals[r].clear(); vals[r].push_back(r); } } // find interference list for LHS of each command for (const tcmd_t *p = cmd; p; p = p->next) { const tagver_t l = p->lhs, r = p->rhs, *h = p->history; vals_t &vl = vals[l], &vr = vals[r]; // alive after this command memcpy(buf, live, nver * sizeof(bool)); cfg_t::live_through_bblock(p->next, buf); // if copy command, exclude RHS if (tcmd_t::iscopy(p)) buf[r] = false; // update value of current command's LHS if (tcmd_t::iscopy(p)) { vl = vr; } else if (tcmd_t::isset(p)) { vl.clear(); vl.push_back(*h); } else { if (l != r) vl = vr; for (; *++h != TAGVER_ZERO;); // history is reversed for (; h-- != p->history;) { vl.push_back(*h); } } // Exclude from interference list all LHS from preceding commands // which value is equal to current LHS value. Subsequent commands // are ignored: if subsequent command that sets LHS to the same value // precedes any use of it, liveness propagation through basic block // would mark this LHS as dead and not interfering anyway; otherwise // (if use precedes setting to the same value), then it indeed // interferes with current LHS. for (const tcmd_t *q = cmd; q != p; q = q->next) { if (vals[q->lhs] == vl) { buf[q->lhs] = false; } } const size_t u = static_cast(l); for (size_t v = 0; v < nver; ++v) { if (!buf[v]) continue; interf[u * nver + v] = interf[v * nver + u] = true; } } } } // namespace re2c re2c-1.0.1/src/dfa/cfg/dce.cc0000644000175000017500000000120613142624070012405 00000000000000#include "src/dfa/cfg/cfg.h" #include "src/dfa/dfa.h" #include "src/dfa/tcmd.h" #include "src/re/tag.h" namespace re2c { void cfg_t::dead_code_elimination(cfg_t &cfg, const bool *live) { const tagver_t nver = cfg.dfa.maxtagver + 1; // final and fallback tags can't be dead by construction cfg_bb_t *b = cfg.bblocks, *e = b + cfg.nbbarc; // ignore possible local liveness inside of bblock: // by construction we have no versions local to bblock for (; b < e; ++b, live += nver) { for (tcmd_t *p, **pp = &b->cmd; (p = *pp);) { if (!live[p->lhs]) { *pp = p->next; } else { pp = &p->next; } } } } } // namespace re2c re2c-1.0.1/src/dfa/tcmd.h0000644000175000017500000000255413142626366011725 00000000000000#ifndef _RE2C_DFA_TCMD_ #define _RE2C_DFA_TCMD_ #include #include "src/util/c99_stdint.h" #include "src/dfa/tagtree.h" #include "src/re/tag.h" #include "src/util/forbid_copy.h" #include "src/util/lookup.h" #include "src/util/slab_allocator.h" namespace re2c { struct tcmd_t { tcmd_t *next; tagver_t lhs; // left hand side tagver_t rhs; // right hand side tagver_t history[1]; static bool equal(const tcmd_t &x, const tcmd_t &y); static bool equal_history(const tagver_t *h, const tagver_t *g); static bool topsort(tcmd_t **phead, uint32_t *indeg); static bool iscopy(const tcmd_t *x); static bool isset(const tcmd_t *x); static bool isadd(const tcmd_t *x); FORBID_COPY(tcmd_t); }; typedef uint32_t tcid_t; static const tcid_t TCID0 = 0; class tcpool_t { typedef slab_allocator_t<~0u, 4096, sizeof(void*)> alc_t; typedef lookup_t index_t; alc_t alc; index_t index; public: tcpool_t(); tcmd_t *make_copy(tcmd_t *next, tagver_t lhs, tagver_t rhs); tcmd_t *make_set(tcmd_t *next, tagver_t lhs, tagver_t set); tcmd_t *make_add(tcmd_t *next, tagver_t lhs, tagver_t rhs, const tagtree_t &history, hidx_t hidx, size_t tag); tcmd_t *copy_add(tcmd_t *next, tagver_t lhs, tagver_t rhs, const tagver_t *history); tcid_t insert(const tcmd_t *tcmd); const tcmd_t *operator[](tcid_t id) const; }; } // namespace re2c #endif // _RE2C_DFA_TCMD_ re2c-1.0.1/src/skeleton/0000755000175000017500000000000013143420715011760 500000000000000re2c-1.0.1/src/skeleton/control_flow.cc0000644000175000017500000000525613142626751014735 00000000000000#include "src/util/c99_stdint.h" #include #include #include #include #include #include "src/conf/warn.h" #include "src/re/rule.h" #include "src/skeleton/path.h" #include "src/skeleton/skeleton.h" #include "src/util/u32lim.h" namespace re2c { // See note [counting skeleton edges]. // Type for counting arcs in paths that cause undefined behaviour. // These paths are stored on heap, so the limit should be low. // Most real-world cases have only a few short paths. // We don't need all paths anyway, just some examples. typedef u32lim_t<1024> ucf_size_t; // ~1Kb // UCF stands for 'undefined control flow' struct ucf_t { std::valarray loops; std::vector paths; path_t prefix; ucf_size_t size; explicit ucf_t(size_t nnodes): loops(nnodes), paths(), prefix(0), size(ucf_size_t::from32(0u)) {} }; // We don't need all patterns that cause undefined behaviour. // We only need some examples, the shorter the better. static void naked_paths( const Skeleton &skel, ucf_t &ucf, size_t i) { const Node &node = skel.nodes[i]; bool &loop = ucf.loops[i]; path_t &prefix = ucf.prefix; ucf_size_t &size = ucf.size; if (node.rule != Rule::NONE) { return; } else if (node.end()) { ucf.paths.push_back(prefix); size = size + ucf_size_t::from64(prefix.len()); } else if (!loop) { loop = true; Node::arcs_t::const_iterator arc = node.arcs.begin(), end = node.arcs.end(); for (; arc != end && !size.overflow(); ++arc) { const size_t j = arc->first; prefix.push(j); naked_paths(skel, ucf, j); prefix.pop(); } } } void warn_undefined_control_flow(const Skeleton &skel, Warn &warn) { ucf_t ucf(skel.nodes_count); naked_paths(skel, ucf, 0); if (!ucf.paths.empty()) { warn.undefined_control_flow(skel, ucf.paths, ucf.size.overflow()); } else if (ucf.size.overflow()) { warn.fail(Warn::UNDEFINED_CONTROL_FLOW, skel.line, "DFA is too large to check undefined control flow"); } } static void fprint_default_arc(FILE *f, const Node::arc_t &arc) { const size_t ranges = arc.size(); if (ranges == 1 && arc[0].lower == arc[0].upper) { fprintf(f, "\\x%X", arc[0].lower); } else { fprintf(f, "["); for (size_t i = 0; i < ranges; ++i) { const uint32_t l = arc[i].lower, u = arc[i].upper; fprintf(f, "\\x%X", l); if (l != u) { fprintf(f, "-\\x%X", u); } } fprintf(f, "]"); } } void fprint_default_path( FILE *f, const Skeleton &skel, const path_t &p) { fprintf(f, "'"); const size_t len = p.len(); for (size_t i = 0; i < len; ++i) { if (i > 0) { fprintf(f, " "); } const Node::arc_t &arc = p.arc(skel, i); fprint_default_arc(stderr, arc); } fprintf(f, "'"); } } // namespace re2c re2c-1.0.1/src/skeleton/generate_data.cc0000644000175000017500000002703313142627010014773 00000000000000#include #include #include "src/util/c99_stdint.h" #include #include #include #include #include #include #include #include "src/conf/msg.h" #include "src/conf/opt.h" #include "src/dfa/tcmd.h" #include "src/re/encoding/enc.h" #include "src/re/rule.h" #include "src/re/tag.h" #include "src/skeleton/path.h" #include "src/skeleton/skeleton.h" #include "src/util/forbid_copy.h" #include "src/util/u32lim.h" #include "src/util/wrap_iter.h" namespace re2c { /* * note [counting skeleton edges] * * To avoid any possible overflows all size calculations are wrapped in * a special truncated unsigned 32-bit integer type that checks overflow * on each binary operation or conversion from another type. * * Two things contribute to size calculation: path length and the number * of outgoing arcs in each node. Some considerations on why these values * will not overflow before they are converted to truncated type: * * - Maximal number of outgoing arcs in each node cannot exceed 32 bits: * it is bounded by the number of code units in current encoding, and * re2c doesn't support any encoding with more than 2^32 code units. * Conversion is safe. * * - Maximal path length cannot exceed 32 bits: we estimate it right * after skeleton construction and check for overflow. If path length * does overflow, an error is reported and re2c aborts. */ // See note [counting skeleton edges]. // Type for calculating the size of path cover. // Paths are dumped to file as soon as generated and don't eat // heap space. The total size of path cover (measured in edges) // is O(N^2) where N is the number of edges in skeleton. typedef u32lim_t<1024 * 1024 * 1024> cover_size_t; // ~1Gb struct cover_t { FILE *input; FILE *keys; std::vector loops; std::vector suffixes; path_t prefix; cover_size_t size; cover_t(FILE *fi, FILE *fk, size_t nnodes): input(fi), keys(fk), loops(nnodes), suffixes(nnodes), prefix(0), size(cover_size_t::from32(0u)) {} FORBID_COPY(cover_t); }; template static uintn_t to_le(uintn_t n) { uintn_t m; uint8_t *p = reinterpret_cast(&m); for (size_t i = 0; i < sizeof(uintn_t); ++i) { p[i] = static_cast(n >> (i * 8)); } return m; } // pick at most 0x100 unique edges from this range // (for 1-byte code units this covers the whole range: [0 - 0xFF]) // - range bounds must be included // - values should be evenly distributed // - values should be deterministic static uint32_t step(uint32_t lower, uint32_t upper) { return 1 + (upper - lower) / 0x100; } static uint32_t nsteps(uint32_t lower, uint32_t upper) { return 2 + (upper - lower - 1) / step(lower, upper); } static void apply(std::vector *tags, const tcmd_t *cmd, size_t pos) { for (const tcmd_t *p = cmd; p; p = p->next) { const tagver_t l = p->lhs, r = p->rhs, *h = p->history; std::vector &t = tags[l]; if (tcmd_t::iscopy(p)) { t = tags[r]; } else if (tcmd_t::isset(p)) { t.clear(); t.push_back(*h == TAGVER_BOTTOM ? Skeleton::DEFTAG : pos); } else { if (l != r) t = tags[r]; std::vector x; for (; *h != TAGVER_ZERO; ++h) { x.push_back(*h == TAGVER_BOTTOM ? Skeleton::DEFTAG : pos); } t.insert(t.end(), x.rbegin(), x.rend()); } } } static size_t path_width(const path_t &path, const Skeleton &skel) { size_t width = 0; for (size_t i = 0; i < path.len(); ++i) { // width of multiarc: total number of characters picked from all ranges size_t w = 0; const Node::arc_t &arc = path.arc(skel, i); for (Node::citer_t a = arc.begin(); a != arc.end(); ++a) { w += nsteps(a->lower, a->upper); } // width of multipath: maximal width of multiarc width = std::max(width, w); } return width; } template static void write_input(const path_t &path, const Skeleton &skel, size_t width, FILE *file) { const size_t len = path.len(), size = len * width; cunit_t *buffer = new cunit_t[size]; // pick characters from ranges for (size_t i = 0; i < len; ++i) { Node::wciter_t a(path.arc(skel, i)); for (size_t w = 0; w < width; ++a) { const uint32_t l = a->lower, u = a->upper, d = step(l, u); for (uint32_t m = l; m < u + d && w < width; m += d, ++w) { buffer[w * len + i] = to_le(static_cast(std::min(m, u))); } } } fwrite(buffer, sizeof(cunit_t), size, file); delete[] buffer; } template static void write_keys(const path_t &path, const Skeleton &skel, size_t width, FILE *file) { // find last accepting node size_t f; for (f = path.len(); f > 0 && path.node(skel, f).rule == Rule::NONE; --f); // calculate tags: start with default and apply commands step by step const size_t nver = skel.ntagver, ntag = width * nver, offby = skel.opts->lookahead ? 0 : 1; std::vector *tags = new std::vector[ntag]; for (size_t w = 0; w < width; ++w) { apply(&tags[w * nver], skel.cmd0, 0); // absent in LATDFA } for (size_t i = 0; i < f; ++i) { Node::wciter_t a(path.arc(skel, i)); for (size_t w = 0; w < width; ++a) { uint32_t n = nsteps(a->lower, a->upper); for (; n --> 0 && w < width; ++w) { apply(&tags[w * nver], a->cmd, i + offby); } } } const tcmd_t *fcmd = path.node(skel, f).cmd; for (size_t w = 0; w < width; ++w) { apply(&tags[w * nver], fcmd, f); // only present in LATDFA } const size_t rule = path.node(skel, f).rule; size_t matched = 0, ltag = 0, htag = 0, trail = 0; if (rule != Rule::NONE) { const Rule &r = skel.rules[rule]; ltag = r.ltag; htag = r.htag; trail = r.ttag; // matched length might depend on tag values if (trail == htag) { matched = f; } else { assert(!fixed(skel.tags[trail])); // no fixed trailing context matched = tags[skel.finvers[trail]].back(); assert(matched != Skeleton::DEFTAG); } } // count keys size_t nkey = 0; for (size_t w = 0; w < width; ++w) { nkey += 3; for (size_t t = ltag; t < htag; ++t) { const Tag &tag = skel.tags[t]; if (t == trail || fictive(tag)) continue; const size_t base = fixed(tag) ? tag.base : t, bver = static_cast(skel.finvers[base]); if (history(tag)) nkey += tags[w * nver + bver].size(); ++nkey; } } // keys: 1 - scanned length, 2 - matched length, 3 - matched rule, the rest - tags key_t *keys = new key_t[nkey], *k = keys; for (size_t w = 0; w < width; ++w) { *k++ = to_le(static_cast(path.len())); *k++ = to_le(static_cast(matched)); *k++ = to_le(rule2key(rule, skel.defrule)); for (size_t t = ltag; t < htag; ++t) { const Tag &tag = skel.tags[t]; if (t == trail || fictive(tag)) continue; const size_t base = fixed(tag) ? tag.base : t, bver = static_cast(skel.finvers[base]); const std::vector &h = tags[w * nver + bver]; if (history(tag)) { const size_t hlen = h.size(); *k++ = to_le(static_cast(hlen)); for (size_t i = 0; i < hlen; ++i) { *k++ = to_le(static_cast(h[i])); } } else { *k++ = to_le(static_cast(h.back())); } } } // dump to file fwrite(keys, sizeof(key_t), nkey, file); delete[] tags; delete[] keys; } template static cover_size_t cover_one(const Skeleton &skel, cover_t &cover) { const path_t &path = cover.prefix; const size_t width = path_width(path, skel); const cover_size_t size = cover_size_t::from64(path.len()) * cover_size_t::from64(width); if (!size.overflow()) { write_input(path, skel, width, cover.input); write_keys(path, skel, width, cover.keys); } return size; } /* * note [generating skeleton path cover] * * With --skeleton switch we need to generate lots of data: strings that * correspond to various paths in DFA and match given regular expression. * We try to generate path cover (a set of paths that cover all skeleton * arcs at least once). Generation must stop as soon as the size of path * cover exceeds limit (in which case we'll only get a partial path cover). * * The algorithm walks graph nodes in deep-first order and assigns suffix * to each node (a path from this node to end node). In order to calculate * suffix for a given node the algorithm must know suffix for any child * node (end nodes are assigned empty suffix at start). Suffix is only * calculated once for each node and then reused as much times as the node * is visited. This is what reduces search space. * * The algorithm calculates prefix (multipath to current node). If current * node has already been assigned suffix, the algorithm immediately * calculates path cover from prefix and suffix. Otherwise it recurses to * child nodes (updating prefix on the go). * * The algorithm avoids eternal loops by maintaining loop counter for each * node. Loop counter is incremented on recursive enter and decremented on * recursive return. If loop counter is greater than 1, current branch is * abandoned and recursion returns immediately. * * See also note [counting skeleton edges]. * */ template static void gencover( const Skeleton &skel, cover_t &cover, size_t i) { const Node &node = skel.nodes[i]; uint8_t &loop = cover.loops[i]; suffix_t &suffix = cover.suffixes[i]; path_t &prefix = cover.prefix; cover_size_t &size = cover.size; if (node.end() && !suffix.init) { suffix.init = true; } if (suffix.init) { prefix.push_sfx(suffix); size = size + cover_one(skel, cover); prefix.pop_sfx(suffix); } else if (loop < 2) { local_inc _(loop); Node::arcs_t::const_iterator arc = node.arcs.begin(), end = node.arcs.end(); for (; arc != end && !size.overflow(); ++arc) { const size_t j = arc->first; prefix.push(j); gencover(skel, cover, j); prefix.pop(); const suffix_t &sfx = cover.suffixes[j]; if (sfx.init && !suffix.init) { suffix = sfx; suffix.push(j); } } } } template static void generate_paths_cunit_key(const Skeleton &skel, cover_t &cover) { gencover(skel, cover, 0); if (cover.size.overflow()) { warning(NULL, skel.line, false, "DFA %sis too large: can only generate partial path cover", incond(skel.cond).c_str()); } } template static void generate_paths_cunit(const Skeleton &skel, cover_t &cover) { switch (skel.sizeof_key) { case 8: generate_paths_cunit_key(skel, cover); break; case 4: generate_paths_cunit_key(skel, cover); break; case 2: generate_paths_cunit_key(skel, cover); break; case 1: generate_paths_cunit_key(skel, cover); break; } } static void generate_paths(const Skeleton &skel, cover_t &cover) { switch (skel.opts->encoding.szCodeUnit()) { case 4: generate_paths_cunit(skel, cover); break; case 2: generate_paths_cunit(skel, cover); break; case 1: generate_paths_cunit(skel, cover); break; } } void emit_data(const Skeleton &skel) { std::string fname = skel.opts->output_file; if (fname.empty()) { fname = ""; } const std::string input_name = fname + "." + skel.name + ".input"; FILE *input = fopen(input_name.c_str(), "wb"); if (!input) { fatal("cannot open file: %s", input_name.c_str()); } const std::string keys_name = std::string(fname) + "." + skel.name + ".keys"; FILE *keys = fopen (keys_name.c_str(), "wb"); if (!keys) { fatal("cannot open file: %s", keys_name.c_str()); } cover_t cover(input, keys, skel.nodes_count); generate_paths(skel, cover); fclose(input); fclose(keys); } } // namespace re2c re2c-1.0.1/src/skeleton/skeleton.h0000644000175000017500000000602213143042562013675 00000000000000#ifndef _RE2C_SKELETON_SKELETON_ #define _RE2C_SKELETON_SKELETON_ #include "src/util/c99_stdint.h" #include #include #include #include #include #include #include #include #include "src/code/bitmap.h" #include "src/conf/opt.h" #include "src/dfa/tcmd.h" #include "src/re/rule.h" #include "src/re/tag.h" #include "src/util/forbid_copy.h" #include "src/util/local_increment.h" #include "src/util/wrap_iter.h" namespace re2c { class OutputFile; class path_t; struct DFA; struct dfa_state_t; struct dfa_t; class Warn; class bitmaps_t; struct opt_t; struct tcmd_t; typedef local_increment_t local_inc; struct Node { struct range_t { uint32_t lower; uint32_t upper; const tcmd_t *cmd; range_t(): lower(0), upper(0), cmd(NULL) {} range_t(uint32_t l, uint32_t u, const tcmd_t *c) : lower(l), upper(u), cmd(c) {} }; typedef std::vector arc_t; typedef std::map arcs_t; typedef arc_t::const_iterator citer_t; typedef wrap_citer_t wciter_t; arcs_t arcs; size_t rule; const tcmd_t *cmd; Node(); void init(const dfa_state_t *s, const std::vector &charset, size_t nil); bool end() const; FORBID_COPY(Node); }; struct Skeleton { static const size_t DEFTAG; const opt_t *opts; const std::string name; const std::string cond; const uint32_t line; const size_t nodes_count; Node *nodes; const tcmd_t *cmd0; size_t sizeof_key; size_t defrule; size_t ntagver; const std::vector &charset; const std::valarray &rules; const std::vector &tags; const tagver_t *finvers; Skeleton(const dfa_t &dfa, const opt_t *op, size_t def, const std::string &dfa_name, const std::string &dfa_cond, uint32_t dfa_line); ~Skeleton (); FORBID_COPY(Skeleton); }; template key_t rule2key(size_t r, size_t def) { if (r == Rule::NONE) { return std::numeric_limits::max(); } else if (r == def) { key_t k = std::numeric_limits::max(); return --k; } else { return static_cast(r); } } uint64_t rule2key(size_t rule, size_t key, size_t def); uint32_t maxpath(const Skeleton &skel); void warn_undefined_control_flow(const Skeleton &skel, Warn &warn); void fprint_default_path(FILE *f, const Skeleton &skel, const path_t &p); void emit_data(const Skeleton &skel); void emit_prolog(OutputFile & o); void emit_start(OutputFile &o, size_t maxfill, size_t maxnmatch, const std::string &name, size_t sizeof_key, size_t def, bool backup, bool accept, bool oldstyle_ctxmarker, const std::set &stagnames, const std::set &stagvars, const std::set &mtagnames, const std::set &mtagvars, bitmaps_t &bitmaps); void emit_end(OutputFile &o, const std::string &name, bool backup, bool oldstyle_ctxmarker, const std::set &mtagnames); void emit_epilog(OutputFile &o, const std::set &names); void emit_action(OutputFile &o, uint32_t ind, const DFA &dfa, size_t rid); } // namespace re2c #endif // _RE2C_SKELETON_SKELETON_ re2c-1.0.1/src/skeleton/path.h0000644000175000017500000000233313137447264013021 00000000000000#ifndef _RE2C_SKELETON_PATH_ #define _RE2C_SKELETON_PATH_ #include "src/util/c99_stdint.h" #include #include "src/skeleton/skeleton.h" namespace re2c { struct suffix_t { bool init; private: std::vector arcs; public: suffix_t(): init(false), arcs() {} void push(size_t i) { arcs.push_back(i); } friend class path_t; }; class path_t { std::vector arcs; public: explicit path_t(size_t i) : arcs() { arcs.push_back(i); } size_t len() const { return arcs.size() - 1; } const Node& node(const Skeleton &skel, size_t i) const { return skel.nodes[arcs[i]]; } const Node::arc_t& arc(const Skeleton &skel, size_t i) const { return skel.nodes[arcs[i]].arcs.find(arcs[i + 1])->second; } void push(size_t n) { arcs.push_back(n); } void pop() { arcs.pop_back(); } void push_sfx(const suffix_t &suffix) { arcs.insert(arcs.end(), suffix.arcs.rbegin(), suffix.arcs.rend()); } void pop_sfx(const suffix_t &suffix) { arcs.resize(arcs.size() - suffix.arcs.size()); } bool operator<(const path_t &p) const { const size_t s1 = arcs.size(), s2 = p.arcs.size(); return (s1 == s2 && arcs < p.arcs) || s1 < s2; } }; } // namespace re2c #endif // _RE2C_SKELETON_PATH_ re2c-1.0.1/src/skeleton/maxpath.cc0000644000175000017500000000325013142627026013654 00000000000000#include #include "src/util/c99_stdint.h" #include #include #include #include #include #include #include "src/conf/msg.h" #include "src/skeleton/skeleton.h" namespace re2c { // 0 < DIST_MAX < DIST_ERROR <= std::numeric_limits::max() static const uint32_t DIST_ERROR = std::numeric_limits::max(); static const uint32_t DIST_MAX = DIST_ERROR - 1; // maximal distance to end node (assuming one iteration per loop) // different from YYMAXFILL calculation // in the way it handles loops and empty regexp static void calc_dist( const Skeleton &skel, std::vector &loops, std::vector &dists, size_t i) { const Node &node = skel.nodes[i]; uint8_t &loop = loops[i]; uint32_t &dist = dists[i]; if (dist != DIST_ERROR) { return; } else if (node.end()) { dist = 0; } else if (loop < 2) { local_inc _(loop); Node::arcs_t::const_iterator arc = node.arcs.begin(), end = node.arcs.end(); for (; arc != end; ++arc) { const size_t j = arc->first; calc_dist(skel, loops, dists, j); uint32_t &d = dists[j]; if (d != DIST_ERROR) { if (dist == DIST_ERROR) { dist = d; } else { dist = std::max(dist, d); } } } dist = std::min(dist + 1, DIST_MAX); } } // calculate maximal path length, check overflow uint32_t maxpath(const Skeleton &skel) { std::vector loops(skel.nodes_count); std::vector dists(skel.nodes_count, DIST_ERROR); calc_dist(skel, loops, dists, 0); const uint32_t maxlen = dists[0]; if (maxlen == DIST_MAX) { fatal("DFA path %sis too long", incond(skel.cond).c_str()); } return maxlen; } } // namespace re2c re2c-1.0.1/src/skeleton/skeleton.cc0000644000175000017500000000442313142627047014044 00000000000000#include #include #include "src/dfa/dfa.h" #include "src/skeleton/skeleton.h" namespace re2c { struct opt_t; struct tcmd_t; Node::Node() : arcs() , rule(Rule::NONE) , cmd(NULL) {} void Node::init(const dfa_state_t *s, const std::vector &charset, size_t nil) { const size_t nc = charset.size() - 1; for (uint32_t c = 0, l = 0; c < nc;) { size_t j = s->arcs[c]; const tcmd_t *t = s->tcmd[c]; for (; ++c < nc && s->arcs[c] == j && s->tcmd[c] == t;); if (j == dfa_t::NIL) j = nil; // all arcs go to default node => this node is final if (l == 0 && c == nc && j == nil) break; const uint32_t u = charset[c]; arcs[j].push_back(Node::range_t(l, u - 1, t)); l = u; } rule = s->rule; cmd = s->tcmd[nc]; } bool Node::end() const { return arcs.size() == 0; } const size_t Skeleton::DEFTAG = std::numeric_limits::max(); Skeleton::Skeleton( const dfa_t &dfa, const opt_t *op, size_t def, const std::string &dfa_name, const std::string &dfa_cond, uint32_t dfa_line) : opts(op) , name(dfa_name) , cond(dfa_cond) , line(dfa_line) , nodes_count(dfa.states.size() + 1) // +1 for default state , nodes(new Node[nodes_count]) , cmd0(dfa.tcmd0) , sizeof_key(8) , defrule(def) , ntagver(static_cast(dfa.maxtagver) + 1) , charset(dfa.charset) , rules(dfa.rules) , tags(dfa.tags) , finvers(dfa.finvers) { // initialize nodes const size_t nil = nodes_count - 1; for (size_t i = 0; i < nil; ++i) { nodes[i].init(dfa.states[i], charset, nil); } // initialize size of key const size_t maxlen = maxpath(*this); const size_t maxrule = dfa.rules.size() + 1; // +1 for none-rule const size_t max = std::max(maxlen, maxrule); if (max <= std::numeric_limits::max()) { sizeof_key = 1; } else if (max <= std::numeric_limits::max()) { sizeof_key = 2; } else if (max <= std::numeric_limits::max()) { sizeof_key = 4; } } Skeleton::~Skeleton() { delete[] nodes; } uint64_t rule2key(size_t rule, size_t key, size_t def) { switch (key) { default: assert(false); // shouldn't happen case 8: return rule2key(rule, def); case 4: return rule2key(rule, def); case 2: return rule2key(rule, def); case 1: return rule2key(rule, def); } } } // namespace re2c re2c-1.0.1/src/skeleton/generate_code.cc0000644000175000017500000004504113143043462014777 00000000000000#include #include "src/util/c99_stdint.h" #include #include #include #include #include "src/adfa/adfa.h" #include "src/code/bitmap.h" #include "src/code/emit.h" #include "src/code/output.h" #include "src/conf/opt.h" #include "src/re/encoding/enc.h" #include "src/re/rule.h" #include "src/re/tag.h" #include "src/skeleton/skeleton.h" namespace re2c { static void exact_uint(OutputFile &o, size_t width) { if (width == sizeof(char)) { o.ws("unsigned char"); } else if (width == sizeof(short)) { o.ws("unsigned short"); } else if (width == sizeof(int)) { o.ws("unsigned int"); } else if (width == sizeof(long)) { o.ws("unsigned long"); } else { o.ws("uint").wu64(width * 8).ws("_t"); } } static void from_le(OutputFile &o, uint32_t ind, size_t size, const char *expr) { o.ws("\n").wind(ind).ws("/* from little-endian to host-endian */"); o.ws("\n").wind(ind).ws("unsigned char *p = (unsigned char*)&").ws(expr).ws(";"); o.ws("\n").wind(ind).ws(expr).ws(" = p[0]"); for (uint32_t i = 1; i < size; ++i) { o.ws(" + (p[").wu32(i).ws("] << ").wu32(i * 8).ws("u)"); } o.ws(";"); } void emit_prolog(OutputFile &o) { o.ws("\n#include /* size_t */"); o.ws("\n#include "); o.ws("\n#include /* malloc, free */"); o.ws("\n#include /* memcpy */"); o.ws("\n"); o.ws("\nstatic void *read_file"); o.ws("\n").wind(1).ws("( const char *fname"); o.ws("\n").wind(1).ws(", size_t unit"); o.ws("\n").wind(1).ws(", size_t padding"); o.ws("\n").wind(1).ws(", size_t *pfsize"); o.ws("\n").wind(1).ws(")"); o.ws("\n{"); o.ws("\n").wind(1).ws("void *buffer = NULL;"); o.ws("\n").wind(1).ws("size_t fsize = 0;"); o.ws("\n"); o.ws("\n").wind(1).ws("/* open file */"); o.ws("\n").wind(1).ws("FILE *f = fopen(fname, \"rb\");"); o.ws("\n").wind(1).ws("if(f == NULL) {"); o.ws("\n").wind(2).ws("goto error;"); o.ws("\n").wind(1).ws("}"); o.ws("\n"); o.ws("\n").wind(1).ws("/* get file size */"); o.ws("\n").wind(1).ws("fseek(f, 0, SEEK_END);"); o.ws("\n").wind(1).ws("fsize = (size_t) ftell(f) / unit;"); o.ws("\n").wind(1).ws("fseek(f, 0, SEEK_SET);"); o.ws("\n"); o.ws("\n").wind(1).ws("/* allocate memory for file and padding */"); o.ws("\n").wind(1).ws("buffer = malloc(unit * (fsize + padding));"); o.ws("\n").wind(1).ws("if (buffer == NULL) {"); o.ws("\n").wind(2).ws("goto error;"); o.ws("\n").wind(1).ws("}"); o.ws("\n"); o.ws("\n").wind(1).ws("/* read the whole file in memory */"); o.ws("\n").wind(1).ws("if (fread(buffer, unit, fsize, f) != fsize) {"); o.ws("\n").wind(2).ws("goto error;"); o.ws("\n").wind(1).ws("}"); o.ws("\n"); o.ws("\n").wind(1).ws("fclose(f);"); o.ws("\n").wind(1).ws("*pfsize = fsize;"); o.ws("\n").wind(1).ws("return buffer;"); o.ws("\n"); o.ws("\nerror:"); o.ws("\n").wind(1).ws("fprintf(stderr, \"error: cannot read file '%s'\\n\", fname);"); o.ws("\n").wind(1).ws("free(buffer);"); o.ws("\n").wind(1).ws("if (f != NULL) {"); o.ws("\n").wind(2).ws("fclose(f);"); o.ws("\n").wind(1).ws("}"); o.ws("\n").wind(1).ws("return NULL;"); o.ws("\n}"); o.ws("\n"); } void emit_start(OutputFile &o, size_t maxfill, size_t maxnmatch, const std::string &name, size_t sizeof_key, size_t def, bool backup, bool accept, bool oldstyle_ctxmarker, const std::set &stagnames, const std::set &stagvars, const std::set &mtagnames, const std::set &mtagvars, bitmaps_t &bitmaps) { const opt_t *opts = o.block().opts; const size_t sizeof_cunit = opts->encoding.szCodeUnit(); const uint64_t norule = rule2key(Rule::NONE, sizeof_key, def); std::string filename = opts->output_file; if (filename.empty()) { filename = ""; } o.ws("\n#define YYCTYPE "); exact_uint (o, sizeof_cunit); o.ws("\n#define YYKEYTYPE "); exact_uint (o, sizeof_key); o.ws("\n#define YYPEEK() *cursor"); o.ws("\n#define YYSKIP() ++cursor"); if (backup) { o.ws("\n#define YYBACKUP() marker = cursor"); o.ws("\n#define YYRESTORE() cursor = marker"); } if (oldstyle_ctxmarker) { o.ws("\n#define YYBACKUPCTX() ctxmarker = cursor"); o.ws("\n#define YYRESTORECTX() cursor = ctxmarker"); } if (opts->tags) { o.ws("\n#define YYSTAGP(t) t = cursor"); o.ws("\n#define YYSTAGN(t) t = NULL"); o.ws("\n#define YYMTAGP(t) yymtag(&t, cursor, &yytp)"); o.ws("\n#define YYMTAGN(t) yymtag(&t, NULL, &yytp)"); o.ws("\n#define YYRESTORETAG(t) cursor = t"); } o.ws("\n#define YYLESSTHAN(n) (limit - cursor) < n"); o.ws("\n#define YYFILL(n) { break; }"); o.ws("\n"); o.ws("\nstatic int action_").wstring(name); o.ws("\n").wind(1).ws("( unsigned *pkix"); o.ws("\n").wind(1).ws(", const YYKEYTYPE *keys"); o.ws("\n").wind(1).ws(", const YYCTYPE *start"); o.ws("\n").wind(1).ws(", const YYCTYPE *token"); o.ws("\n").wind(1).ws(", const YYCTYPE **cursor"); o.ws("\n").wind(1).ws(", YYKEYTYPE rule_act"); o.ws("\n").wind(1).ws(")"); o.ws("\n{"); o.ws("\n").wind(1).ws("const unsigned kix = *pkix;"); o.ws("\n").wind(1).ws("const long pos = token - start;"); o.ws("\n").wind(1).ws("const long len_act = *cursor - token;"); o.ws("\n").wind(1).ws("const long len_exp = (long) keys[kix + 1];"); o.ws("\n").wind(1).ws("const YYKEYTYPE rule_exp = keys[kix + 2];"); o.ws("\n").wind(1).ws("*pkix = kix + 3;"); o.ws("\n").wind(1).ws("if (rule_exp == ").wu64(norule).ws(") {"); o.ws("\n").wind(2).ws("fprintf"); o.ws("\n").wind(3).ws("( stderr"); o.ws("\n").wind(3).ws(", \"warning: lex_").wstring(name).ws(": control flow is undefined for input\""); o.ws("\n").wind(4).ws("\" at position %ld, rerun re2c with '-W'\\n\""); o.ws("\n").wind(3).ws(", pos"); o.ws("\n").wind(3).ws(");"); o.ws("\n").wind(1).ws("}"); o.ws("\n").wind(1).ws("if (len_act == len_exp && rule_act == rule_exp) {"); o.ws("\n").wind(2).ws("const YYKEYTYPE offset = keys[kix];"); o.ws("\n").wind(2).ws("*cursor = token + offset;"); o.ws("\n").wind(2).ws("return 0;"); o.ws("\n").wind(1).ws("} else {"); o.ws("\n").wind(2).ws("fprintf"); o.ws("\n").wind(3).ws("( stderr"); o.ws("\n").wind(3).ws(", \"error: lex_").wstring(name).ws(": at position %ld (key %u):\\n\""); o.ws("\n").wind(4).ws("\"\\texpected: match length %ld, rule %u\\n\""); o.ws("\n").wind(4).ws("\"\\tactual: match length %ld, rule %u\\n\""); o.ws("\n").wind(3).ws(", pos"); o.ws("\n").wind(3).ws(", kix"); o.ws("\n").wind(3).ws(", len_exp"); o.ws("\n").wind(3).ws(", rule_exp"); o.ws("\n").wind(3).ws(", len_act"); o.ws("\n").wind(3).ws(", rule_act"); o.ws("\n").wind(3).ws(");"); o.ws("\n").wind(2).ws("return 1;"); o.ws("\n").wind(1).ws("}"); o.ws("\n}"); if (!stagnames.empty()) { o.ws("\n"); o.ws("\nstatic int check_stag_").wstring(name) .ws("(unsigned *pkix, YYKEYTYPE *keys, const YYCTYPE *tag,\n") .wind(1).ws("const YYCTYPE *input, const YYCTYPE *token, const char *name)"); o.ws("\n{"); o.ws("\n").wind(1).ws("const unsigned kix = *pkix;"); o.ws("\n").wind(1).ws("const YYKEYTYPE\n") .wind(2).ws("exp = keys[kix],\n") .wind(2).ws("act = (YYKEYTYPE)(tag - token),\n") .wind(2).ws("NIL = (YYKEYTYPE)~0u;"); o.ws("\n").wind(1).ws("*pkix = kix + 1;"); o.ws("\n"); o.ws("\n").wind(1).ws("if (exp == act || (exp == NIL && tag == NULL)) return 0;"); o.ws("\n"); o.ws("\n").wind(1).ws("fprintf(stderr, \"error: lex_").wstring(name).ws(": at position %ld, key %u: \"") .ws("\n").wind(2).ws("\"wrong value for tag '%s': expected %u, actual %u\\n\",") .ws("\n").wind(2).ws("token - input, kix, name, exp, act);"); o.ws("\n").wind(1).ws("return 1;"); o.ws("\n}"); } if (!mtagnames.empty()) { o.ws("\n"); o.ws("\ntypedef struct yymtag_t {"); o.ws("\n").wind(1).ws("struct yymtag_t *pred;"); o.ws("\n").wind(1).ws("const YYCTYPE *elem;"); o.ws("\n} yymtag_t;"); o.ws("\n"); o.ws("\ntypedef struct yymtagpool_t {"); o.ws("\n").wind(1).ws("yymtag_t *head;"); o.ws("\n").wind(1).ws("yymtag_t *next;"); o.ws("\n").wind(1).ws("yymtag_t *last;"); o.ws("\n} yymtagpool_t;"); o.ws("\n"); o.ws("\nstatic void yymtagpool_clear(yymtagpool_t *tp)"); o.ws("\n{"); o.ws("\n").wind(1).ws("tp->next = tp->head;"); o.ws("\n}"); o.ws("\n"); o.ws("\nstatic void yymtagpool_init(yymtagpool_t *tp)"); o.ws("\n{"); o.ws("\n").wind(1).ws("static const unsigned size = 256;"); o.ws("\n").wind(1).ws("tp->head = (yymtag_t*)malloc(size * sizeof(yymtag_t));"); o.ws("\n").wind(1).ws("tp->next = tp->head;"); o.ws("\n").wind(1).ws("tp->last = tp->head + size;"); o.ws("\n}"); o.ws("\n"); o.ws("\nstatic void yymtagpool_free(yymtagpool_t *tp)"); o.ws("\n{"); o.ws("\n").wind(1).ws("free(tp->head);"); o.ws("\n").wind(1).ws("tp->head = tp->next = tp->last = NULL;"); o.ws("\n}"); o.ws("\n"); o.ws("\nstatic yymtag_t *yymtagpool_next(yymtagpool_t *tp)"); o.ws("\n{"); o.ws("\n").wind(1).ws("if (tp->next == tp->last) {"); o.ws("\n").wind(2).ws("const unsigned size = tp->last - tp->head;"); o.ws("\n").wind(2).ws("yymtag_t *head = (yymtag_t*)malloc(2 * size * sizeof(yymtag_t));"); o.ws("\n").wind(2).ws("memcpy(head, tp->head, size * sizeof(yymtag_t));"); o.ws("\n").wind(2).ws("free(tp->head);"); o.ws("\n").wind(2).ws("tp->head = head;"); o.ws("\n").wind(2).ws("tp->next = head + size;"); o.ws("\n").wind(2).ws("tp->last = head + size * 2;"); o.ws("\n").wind(1).ws("}"); o.ws("\n").wind(1).ws("return tp->next++;"); o.ws("\n}"); o.ws("\n"); o.ws("\nstatic void yymtag(yymtag_t **pt, const YYCTYPE *t, yymtagpool_t *tp)"); o.ws("\n{"); o.ws("\n").wind(1).ws("yymtag_t *n = yymtagpool_next(tp);"); o.ws("\n").wind(1).ws("n->pred = *pt;"); o.ws("\n").wind(1).ws("n->elem = t;"); o.ws("\n").wind(1).ws("*pt = n;"); o.ws("\n}"); o.ws("\n"); o.ws("\nstatic int check_mtag_").wstring(name) .ws("(unsigned *pkix, YYKEYTYPE *keys, const yymtag_t *mtag,\n") .wind(1).ws("const YYCTYPE *input, const YYCTYPE *token, const char *name)"); o.ws("\n{"); // o.ws("\n").wind(1).ws("check_key_count_").wstring(name).ws("(1) && return 1;"); o.ws("\n").wind(1).ws("const unsigned kix = *pkix;"); o.ws("\n").wind(1).ws("YYKEYTYPE n = keys[kix];"); o.ws("\n").wind(1).ws("*pkix = kix + n + 1;"); // o.ws("\n").wind(1).ws("check_key_count_").wstring(name).ws("(n) && return 1;"); o.ws("\n").wind(1).ws("for (; n > 0; --n) {"); o.ws("\n").wind(2).ws("if (mtag == NULL) {"); o.ws("\n").wind(3).ws("fprintf(stderr, \"error: lex_").wstring(name).ws(": at position %ld, key %u: \"") .ws("\n").wind(4).ws("\"history for tag '%s' is too short\\n\",") .ws("\n").wind(4).ws("token - input, kix + n, name);"); o.ws("\n").wind(3).ws("return 1;"); o.ws("\n").wind(2).ws("}"); o.ws("\n").wind(2).ws("const YYCTYPE *tag = mtag->elem;"); o.ws("\n").wind(2).ws("mtag = mtag->pred;"); o.ws("\n").wind(2).ws("const YYKEYTYPE\n") .wind(3).ws("exp = keys[kix + n],\n") .wind(3).ws("act = (YYKEYTYPE)(tag - token),\n") .wind(3).ws("NIL = (YYKEYTYPE)~0u;"); o.ws("\n").wind(2).ws("if (!(exp == act || (exp == NIL && tag == NULL))) {"); o.ws("\n").wind(3).ws("fprintf(stderr, \"error: lex_").wstring(name).ws(": at position %ld, key %u: \"") .ws("\n").wind(4).ws("\"wrong value for tag '%s': expected %u, actual %u\\n\",") .ws("\n").wind(4).ws("token - input, kix + n, name, exp, act);"); o.ws("\n").wind(3).ws("return 1;"); o.ws("\n").wind(2).ws("}"); o.ws("\n").wind(1).ws("}"); o.ws("\n").wind(1).ws("if (mtag != NULL) {"); o.ws("\n").wind(2).ws("fprintf(stderr, \"error: lex_").wstring(name).ws(": at position %ld, key %u: \"") .ws("\n").wind(3).ws("\"history for tag '%s' is too long\\n\",") .ws("\n").wind(3).ws("token - input, kix, name);"); o.ws("\n").wind(2).ws("return 1;"); o.ws("\n").wind(1).ws("}"); o.ws("\n").wind(1).ws("return 0;"); o.ws("\n}"); } o.ws("\n"); o.ws("\nstatic int check_key_count_").wstring(name).ws("(unsigned have, unsigned used, unsigned need)"); o.ws("\n{"); o.ws("\n").wind(1).ws("if (used + need <= have) return 0;"); o.ws("\n").wind(1).ws("fprintf(stderr, \"error: lex_").wstring(name).ws(": not enough keys\\n\");"); o.ws("\n").wind(1).ws("return 1;"); o.ws("\n}"); o.ws("\n"); o.ws("\nint lex_").wstring(name).ws("()"); o.ws("\n{"); o.ws("\n").wind(1).ws("const size_t padding = ").wu64(maxfill).ws("; /* YYMAXFILL */"); o.ws("\n").wind(1).ws("int status = 0;"); o.ws("\n").wind(1).ws("size_t input_len = 0;"); o.ws("\n").wind(1).ws("size_t keys_count = 0;"); o.ws("\n").wind(1).ws("YYCTYPE *input = NULL;"); o.ws("\n").wind(1).ws("YYKEYTYPE *keys = NULL;"); o.ws("\n").wind(1).ws("const YYCTYPE *cursor = NULL;"); o.ws("\n").wind(1).ws("const YYCTYPE *limit = NULL;"); o.ws("\n").wind(1).ws("const YYCTYPE *token = NULL;"); o.ws("\n").wind(1).ws("const YYCTYPE *eof = NULL;"); if (opts->posix_captures) { o.ws("\n").wind(1).ws("size_t yynmatch;"); o.ws("\n").wind(1).ws("const YYCTYPE *yypmatch[").wu64(maxnmatch).ws(" * 2];"); } o.ws("\n").wind(1).ws("unsigned int i = 0;"); if (!mtagnames.empty()) { o.ws("\n"); o.ws("\n").wind(1).ws("yymtagpool_t yytp;"); o.ws("\n").wind(1).ws("yymtagpool_init(&yytp);"); } o.ws("\n"); o.ws("\n").wind(1).ws("input = (YYCTYPE *) read_file"); o.ws("\n").wind(2).ws("(\"").wstring(filename).ws(".").wstring(name).ws(".input\""); o.ws("\n").wind(2).ws(", sizeof (YYCTYPE)"); o.ws("\n").wind(2).ws(", padding"); o.ws("\n").wind(2).ws(", &input_len"); o.ws("\n").wind(2).ws(");"); o.ws("\n").wind(1).ws("if (input == NULL) {"); o.ws("\n").wind(2).ws("status = 1;"); o.ws("\n").wind(2).ws("goto end;"); o.ws("\n").wind(1).ws("}"); o.ws("\n"); if (sizeof_cunit > 1) { o.ws("\n").wind(1).ws("for (i = 0; i < input_len; ++i) {"); from_le(o, 2, sizeof_cunit, "input[i]"); o.ws("\n").wind(1).ws("}"); o.ws("\n"); } o.ws("\n").wind(1).ws("keys = (YYKEYTYPE *) read_file"); o.ws("\n").wind(2).ws("(\"").wstring(filename).ws(".").wstring(name).ws(".keys\""); o.ws("\n").wind(2).ws(", sizeof (YYKEYTYPE)"); o.ws("\n").wind(2).ws(", 0"); o.ws("\n").wind(2).ws(", &keys_count"); o.ws("\n").wind(2).ws(");"); o.ws("\n").wind(1).ws("if (keys == NULL) {"); o.ws("\n").wind(2).ws("status = 1;"); o.ws("\n").wind(2).ws("goto end;"); o.ws("\n").wind(1).ws("}"); o.ws("\n"); if (sizeof_key > 1) { o.ws("\n").wind(1).ws("for (i = 0; i < keys_count; ++i) {"); from_le(o, 2, sizeof_key, "keys[i]"); o.ws("\n").wind(1).ws("}"); o.ws("\n"); } o.ws("\n").wind(1).ws("cursor = input;"); o.ws("\n").wind(1).ws("limit = input + input_len + padding;"); o.ws("\n").wind(1).ws("eof = input + input_len;"); o.ws("\n"); o.ws("\n").wind(1).ws("for (i = 0; status == 0 && cursor < eof && i < keys_count;) {"); o.ws("\n").wind(2).ws("token = cursor;"); if (backup) { o.ws("\n").wind(2).ws("const YYCTYPE *marker = NULL;"); } if (oldstyle_ctxmarker) { o.ws("\n").wind(2).ws("const YYCTYPE *ctxmarker = NULL;"); } o.ws("\n").wind(2).ws("YYCTYPE yych;"); if (accept) { o.ws("\n").wind(2).ws("unsigned int yyaccept = 0;"); } // autogenerated stag variables ConfTags conf("\n" + indent(2, opts->indString) + "const YYCTYPE *@@ = NULL;", ""); output_tags(o.stream(), 0, conf, stagnames, opts); // user-defined stag variables std::set::const_iterator var1 = stagvars.begin(), var2 = stagvars.end(); if (var1 != var2) { o.ws("\n").wind(2).ws("const YYCTYPE *").wstring(*var1); for (++var1; var1 != var2; ++var1) { o.ws(", *").wstring(*var1); } o.ws(";"); } if (!mtagnames.empty()) { o.ws("\n").wind(2).ws("yymtagpool_clear(&yytp);"); // autogenerated mtag variables conf.format = "yymtag_t *@@ = NULL;"; output_tags(o.stream(), 0, conf, mtagnames, opts); // user-defined mtag variables var1 = mtagvars.begin(); var2 = mtagvars.end(); if (var1 != var2) { o.ws("\n").wind(2).ws("yymtag_t *").wstring(*var1); for (++var1; var1 != var2; ++var1) { o.ws(", *").wstring(*var1); } o.ws(";"); } } o.ws("\n"); if (opts->bFlag) { bitmaps.gen(o, 2); } o.ws("\n"); } void emit_end(OutputFile &o, const std::string &name, bool backup, bool oldstyle_ctxmarker, const std::set &mtagnames) { o.ws("\n").wind(1).ws("}"); o.ws("\n").wind(1).ws("if (status == 0) {"); o.ws("\n").wind(2).ws("if (cursor != eof) {"); o.ws("\n").wind(3).ws("status = 1;"); o.ws("\n").wind(3).ws("const long pos = token - input;"); o.ws("\n").wind(3).ws("fprintf(stderr, \"error: lex_").wstring(name).ws(": unused input strings left at position %ld\\n\", pos);"); o.ws("\n").wind(2).ws("}"); o.ws("\n").wind(2).ws("if (i != keys_count) {"); o.ws("\n").wind(3).ws("status = 1;"); o.ws("\n").wind(3).ws("fprintf(stderr, \"error: lex_").wstring(name).ws(": unused keys left after %u keys\\n\", i);"); o.ws("\n").wind(2).ws("}"); o.ws("\n").wind(1).ws("}"); o.ws("\n"); o.ws("\nend:"); o.ws("\n").wind(1).ws("free(input);"); o.ws("\n").wind(1).ws("free(keys);"); if (!mtagnames.empty()) { o.ws("\n").wind(1).ws("yymtagpool_free(&yytp);"); } o.ws("\n"); o.ws("\n").wind(1).ws("return status;"); o.ws("\n}"); o.ws("\n"); o.ws("\n#undef YYCTYPE"); o.ws("\n#undef YYKEYTYPE"); o.ws("\n#undef YYPEEK"); o.ws("\n#undef YYSKIP"); if (backup) { o.ws("\n#undef YYBACKUP"); o.ws("\n#undef YYRESTORE"); } if (oldstyle_ctxmarker) { o.ws("\n#undef YYBACKUPCTX"); o.ws("\n#undef YYRESTORECTX"); } if (o.block().opts->tags) { o.ws("\n#undef YYBACKUPTAG"); o.ws("\n#undef YYRESTORETAG"); o.ws("\n#undef YYCOPYTAG"); } o.ws("\n#undef YYLESSTHAN"); o.ws("\n#undef YYFILL"); o.ws("\n"); } void emit_epilog(OutputFile &o, const std::set &names) { o.ws("\n").ws("int main()"); o.ws("\n").ws("{"); for (std::set::const_iterator i = names.begin(); i != names.end(); ++i) { o.ws("\n").wind(1).ws("if(lex_").wstring(*i).ws("() != 0) {"); o.ws("\n").wind(2).ws("return 1;"); o.ws("\n").wind(1).ws("}"); } o.ws("\n").wind(1).ws("return 0;"); o.ws("\n}"); o.ws("\n"); } void emit_action(OutputFile &o, uint32_t ind, const DFA &dfa, size_t rid) { const std::string &name = dfa.name; const Rule &r = dfa.rules[rid]; const uint64_t rkey = rule2key(rid, dfa.key_size, dfa.def_rule); size_t ntag = 3; for (size_t t = r.ltag; t < r.htag; ++t) { const Tag &tag = dfa.tags[t]; if (t != r.ttag && !fictive(tag)) ++ntag; } o.wind(ind).ws("status = check_key_count_").wstring(name).ws("(keys_count, i, ") .wu64(ntag).ws(")\n").wind(ind + 1).ws(" || action_").wstring(name) .ws("(&i, keys, input, token, &cursor, ").wu64(rkey).ws(")"); for (size_t t = r.ltag; t < r.htag; ++t) { const Tag &tag = dfa.tags[t]; if (t == r.ttag || fictive(tag)) continue; const std::string tname = tagname(tag), prefix = history(tag) ? "m" : "s"; o.ws("\n").wind(ind + 1).ws(" || check_").wstring(prefix).ws("tag").ws("_").wstring(name) .ws("(&i, keys, ").wstring(tname).ws(", input, token, \"") .wstring(tname).ws("\")"); } o.ws(";\n"); o.wind(ind).ws("continue;\n"); } } // namespace re2c re2c-1.0.1/src/compile.h0000644000175000017500000000045113142627207011661 00000000000000#ifndef _RE2C_COMPILE_ #define _RE2C_COMPILE_ #include "src/ast/scanner.h" #include "src/code/output.h" #include "src/conf/opt.h" namespace re2c { class Scanner; struct Opt; struct Output; void compile(Scanner &input, Output &output, Opt &opts); } // namespace re2c #endif // _RE2C_COMPILE_ re2c-1.0.1/src/compile.cc0000644000175000017500000001142613143044132012012 00000000000000#include #include "src/util/c99_stdint.h" #include #include #include #include #include "src/adfa/adfa.h" #include "src/adfa/dump.h" #include "src/ast/ast.h" #include "src/ast/parser.h" #include "src/ast/scanner.h" #include "src/code/label.h" #include "src/code/output.h" #include "src/compile.h" #include "src/conf/opt.h" #include "src/dfa/dfa.h" #include "src/dfa/dump.h" #include "src/nfa/nfa.h" #include "src/re/encoding/range_suffix.h" #include "src/re/re.h" #include "src/re/rule.h" #include "src/skeleton/skeleton.h" #include "src/util/counter.h" #include "src/util/free_list.h" #include "src/util/range.h" #include "src/util/smart_ptr.h" namespace re2c { class Warn; static std::string make_name(const std::string &cond, uint32_t line) { std::ostringstream os; os << "line" << line; std::string name = os.str(); if (!cond.empty ()) { name += "_"; name += cond; } return name; } static smart_ptr ast_to_dfa(const spec_t &spec, Output &output) { const opt_t *opts = output.source.block().opts; Warn &warn = output.source.warn; const std::vector &rules = spec.rules; const size_t defrule = spec.defs.empty() ? Rule::NONE : rules.size() - 1; const uint32_t line = output.source.block().line; const std::string &cond = spec.name, name = make_name(cond, line), &setup = spec.setup.empty() ? "" : spec.setup[0]->text; RESpec re(rules, opts, warn); split_charset(re); find_fixed_tags(re); insert_default_tags(re); warn_nullable(re, cond); nfa_t nfa(re); if (opts->dump_nfa) dump_nfa(nfa); dfa_t dfa(nfa, opts, cond, warn); if (opts->dump_dfa_det) dump_dfa(dfa); // skeleton must be constructed after DFA construction // but prior to any other DFA transformations Skeleton skeleton(dfa, opts, defrule, name, cond, line); warn_undefined_control_flow(skeleton, warn); if (opts->target == TARGET_SKELETON) { emit_data(skeleton); } cutoff_dead_rules(dfa, defrule, cond, warn); insert_fallback_tags(dfa); // try to minimize the number of tag variables compact_and_optimize_tags(dfa, opts->optimize_tags); if (opts->dump_dfa_tagopt) dump_dfa(dfa); freeze_tags(dfa); minimization(dfa, opts->dfa_minimization); if (opts->dump_dfa_min) dump_dfa(dfa); // find YYFILL states and calculate argument to YYFILL std::vector fill; fillpoints(dfa, fill); // ADFA stands for 'DFA with actions' DFA *adfa = new DFA(dfa, fill, defrule, skeleton.sizeof_key, name, cond, line, setup); // see note [reordering DFA states] adfa->reorder(); // skeleton is constructed, do further DFA transformations adfa->prepare(opts); if (opts->dump_adfa) dump_adfa(*adfa); // finally gather overall DFA statistics adfa->calc_stats(line, opts->tags); // accumulate global statistics from this particular DFA output.max_fill = std::max(output.max_fill, adfa->max_fill); output.max_nmatch = std::max(output.max_nmatch, adfa->max_nmatch); if (adfa->need_accept) { output.source.block().used_yyaccept = true; } return make_smart_ptr(adfa); } void compile(Scanner &input, Output &output, Opt &opts) { specs_t rspecs; symtab_t symtab; const conopt_t *globopts = &opts.glob; const opt_t *ropts = NULL; OutputFile &o = output.source; typedef std::vector > dfas_t; o.new_block(opts); o.wversion_time().wline_info(input.get_cline(), input.get_fname().c_str()); if (globopts->target == TARGET_SKELETON) { emit_prolog(o); } for (Scanner::ParseMode mode; (mode = input.echo(o)) != Scanner::Stop;) { validate_mode(mode, globopts->rFlag, ropts, input); // parse next re2c block specs_t specs; if (mode == Scanner::Reuse) { specs = rspecs; opts.restore(ropts); opts.reset_mapCodeName(); o.label_counter.reset(); o.fill_index = 0; o.state_goto = false; o.cond_goto = false; } parse(input, specs, symtab, opts); // start new output block with accumulated options o.new_block(opts); if (mode == Scanner::Rules) { // save AST and options for future use rspecs = specs; ropts = o.block().opts; } else { validate_ast(specs, globopts->cFlag); normalize_ast(specs); // compile AST to DFA o.block().line = input.get_cline(); dfas_t dfas; for (specs_t::const_iterator i = specs.begin(); i != specs.end(); ++i) { dfas.push_back(ast_to_dfa(*i, output)); } // compile DFA to code bool prolog = false; uint32_t ind = o.block().opts->topIndent; for (dfas_t::const_iterator i = dfas.begin(); i != dfas.end(); ++i) { (*i)->emit(output, ind, (i + 1) == dfas.end(), prolog); } } o.wline_info (input.get_cline (), input.get_fname ().c_str ()); } if (globopts->target == TARGET_SKELETON) { emit_epilog (o, output.skeletons); } AST::flist.clear(); Code::flist.clear(); Range::vFreeList.clear(); RangeSuffix::freeList.clear(); } } // namespace re2c re2c-1.0.1/src/adfa/0000755000175000017500000000000013143420715011027 500000000000000re2c-1.0.1/src/adfa/dump.h0000644000175000017500000000027713142624431012073 00000000000000#ifndef _RE2C_ADFA_DUMP_ #define _RE2C_ADFA_DUMP_ #include "src/adfa/adfa.h" namespace re2c { struct DFA; void dump_adfa(const DFA &dfa); } // namespace re2c #endif // _RE2C_ADFA_DUMP_ re2c-1.0.1/src/adfa/prepare.cc0000644000175000017500000002070013143041727012715 00000000000000#include #include "src/util/c99_stdint.h" #include #include #include #include #include #include "src/adfa/action.h" #include "src/adfa/adfa.h" #include "src/code/bitmap.h" #include "src/code/go.h" #include "src/conf/msg.h" #include "src/conf/opt.h" #include "src/dfa/tcmd.h" #include "src/re/rule.h" #include "src/util/allocate.h" namespace re2c { void DFA::split(State *s) { State *move = new State; addState(move, s); move->action.set_move (); move->rule = s->rule; move->fill = s->fill; /* used by tunneling, ignored by codegen */ move->go = s->go; move->go.tags = TCID0; /* drop hoisted tags */ move->rule_tags = s->rule_tags; move->fall_tags = s->fall_tags; s->rule = Rule::NONE; s->go.nSpans = 1; s->go.span = allocate (1); s->go.span[0].ub = ubChar; s->go.span[0].to = move; s->go.span[0].tags = TCID0; } static uint32_t merge(Span *x, State *fg, State *bg) { Span *f = fg->go.span; Span *b = bg->go.span; Span *const fe = f + fg->go.nSpans; Span *const be = b + bg->go.nSpans; Span *const x0 = x; for (;!(f == fe && b == be);) { if (f->to == b->to && f->tags == b->tags) { x->to = bg; x->tags = TCID0; } else { x->to = f->to; x->tags = f->tags; } if (x == x0 || x[-1].to != x->to || x[-1].tags != x->tags) { ++x; } x[-1].ub = std::min(f->ub, b->ub); if (f->ub < b->ub) { ++f; } else if (f->ub > b->ub) { ++b; } else { ++f; ++b; } } return static_cast(x - x0); } void DFA::findBaseState() { Span *span = allocate (ubChar - lbChar); for (State *s = head; s; s = s->next) { if (s->fill == 0) { for (uint32_t i = 0; i < s->go.nSpans; ++i) { State *to = s->go.span[i].to; if (to->isBase) { to = to->go.span[0].to; uint32_t nSpans = merge(span, s, to); if (nSpans < s->go.nSpans) { operator delete (s->go.span); s->go.nSpans = nSpans; s->go.span = allocate (nSpans); memcpy(s->go.span, span, nSpans*sizeof(Span)); break; } } } } } operator delete (span); } /* note [tag hoisting, skip hoisting and tunneling] * * Tag hoisting is simple: if all transitions have the same commands, * they can be hoisted out of conditional branches. * * Skip hoisting is only relevant with '--eager-skip' option. * Normally this option is off and skip is lazy: it happens after * transition to the next state, if this state is consuming. * However, with '--eager-skip' skip happens before transition to the next * state. Different transitions may disagree: some of them go to consuming * states, others don't. If they agree, skip can be hoisted (just like tags). * * '--eager-skip' makes tag hoisting more complicated, because now we have * to care about the type of automaton: lookahead TDFAs must skip after * writing tags, while non-lookahead TDFAs must skip before writing tags. * Therefore skip hoising cannot be done without tag hoisting in lookahead * TDFAs, and vice versa with non-lookahead TDFAs. * (Note that '--eager-skip' is implied by '--no-lookahead'). * * Tunneling splits base states in two parts: head and body. Body has all * the conditional branches (transitions on symbols), while head has just * one unconditional jump to body. * * Normally tag hoisting should go before tunneling: hoisting may add new * candidates to be merged by tunneling. However, with '--eager-skip' tag * hoisting is interwined with skip hoisting, and the latter needs to know * which states are consuming. This is not possible if tunneling is still * to be done, because it may turn consuming states into non-consuming ones. * Another option is to disallow splitting states with non-hoisted skip * in the presence of '--eager-skip' (this way skip hoisting wouldn't need * to know tunneling results), but it's much worse for tunneling. */ void DFA::prepare(const opt_t *opts) { // create rule states std::vector rule2state(rules.size()); for (State *s = head; s; s = s->next) { if (s->rule != Rule::NONE) { if (!rule2state[s->rule]) { State *n = new State; n->action.set_rule(s->rule); rule2state[s->rule] = n; addState(n, s); } for (uint32_t i = 0; i < s->go.nSpans; ++i) { if (!s->go.span[i].to) { s->go.span[i].to = rule2state[s->rule]; s->go.span[i].tags = s->rule_tags; } } } } // create default state (if needed) State * default_state = NULL; for (State * s = head; s; s = s->next) { for (uint32_t i = 0; i < s->go.nSpans; ++i) { if (!s->go.span[i].to) { if (!default_state) { default_state = new State; addState(default_state, s); } s->go.span[i].to = default_state; } } } // bind save actions to fallback states and create accept state (if needed) if (default_state) { for (State *s = head; s; s = s->next) { if (s->fallback) { const std::pair acc(rule2state[s->rule], s->fall_tags); s->action.set_save(accepts.find_or_add(acc)); } } default_state->action.set_accept(&accepts); } // tag hoisting should be done after binding default arcs: // (which may introduce new tags) // see note [tag hoisting, skip hoisting and tunneling] if (!opts->eager_skip) { hoist_tags(); } // split ``base'' states into two parts for (State * s = head; s; s = s->next) { s->isBase = false; if (s->fill != 0) { for (uint32_t i = 0; i < s->go.nSpans; ++i) { if (s->go.span[i].to == s) { s->isBase = true; split(s); if (opts->bFlag) { bitmaps.insert(&s->next->go, s); } s = s->next; break; } } } } // find ``base'' state, if possible findBaseState(); // see note [tag hoisting, skip hoisting and tunneling] if (opts->eager_skip) { hoist_tags_and_skip(opts); } for (State *s = head; s; s = s->next) { s->go.init(s, opts, bitmaps); } } void DFA::calc_stats(uint32_t ln, bool explicit_tags) { // calculate 'YYMAXFILL' max_fill = 0; for (State * s = head; s; s = s->next) { if (max_fill < s->fill) { max_fill = s->fill; } } // calculate 'YYMAXNMATCH' max_nmatch = 0; const size_t nrule = rules.size(); for (size_t i = 0; i < nrule; ++i) { max_nmatch = std::max(max_nmatch, rules[i].ncap); } // determine if 'YYMARKER' or 'YYBACKUP'/'YYRESTORE' pair is used need_backup = accepts.size () > 0; // determine if 'yyaccept' variable is used need_accept = accepts.size () > 1; // determine if 'YYCTXMARKER' or 'YYBACKUPCTX'/'YYRESTORECTX' pair is used // If tags are not enabled explicitely and trailing contexts // don't overlap (single variable is enough for all of them), then // re2c should use old-style YYCTXMARKER for backwards compatibility. // Note that with generic API fixed-length contexts are forbidden, // which may cause additional overlaps. oldstyle_ctxmarker = !explicit_tags && maxtagver == 1; // error if tags are not enabled, but we need them if (!explicit_tags && maxtagver > 1) { fatal_l(ln, "overlapping trailing contexts need " "multiple context markers, use '-t, --tags' " "option and '/*!stags:re2c ... */' directive"); } } void DFA::hoist_tags() { for (State * s = head; s; s = s->next) { Span *span = s->go.span; const size_t nspan = s->go.nSpans; if (nspan == 0) continue; tcid_t ts = span[0].tags; for (uint32_t i = 1; i < nspan; ++i) { if (span[i].tags != ts) { ts = TCID0; break; } } if (ts != TCID0) { s->go.tags = ts; for (uint32_t i = 0; i < nspan; ++i) { span[i].tags = TCID0; } } } } void DFA::hoist_tags_and_skip(const opt_t *opts) { assert(opts->eager_skip); for (State * s = head; s; s = s->next) { Span *span = s->go.span; const size_t nspan = s->go.nSpans; if (nspan == 0) continue; bool hoist_tags = true, hoist_skip = true; // do all spans agree on tags? for (uint32_t i = 1; i < nspan; ++i) { if (span[i].tags != span[0].tags) { hoist_tags = false; break; } } // do all spans agree on skip? for (uint32_t i = 0; i < nspan; ++i) { if (consume(span[i].to) != consume(span[0].to)) { hoist_skip = false; break; } } if (opts->lookahead) { // skip must go after tags hoist_skip &= hoist_tags; } else { // skip must go before tags hoist_tags &= hoist_skip; } // hoisting tags is possible if (hoist_tags) { s->go.tags = span[0].tags; for (uint32_t i = 0; i < nspan; ++i) { span[i].tags = TCID0; } } // hoisting skip is possible s->go.skip = hoist_skip && consume(span[0].to); } } } // namespace re2c re2c-1.0.1/src/adfa/adfa.h0000644000175000017500000000445013143041654012017 00000000000000#ifndef _RE2C_ADFA_ADFA_ #define _RE2C_ADFA_ADFA_ #include #include "src/util/c99_stdint.h" #include #include #include #include #include "src/adfa/action.h" #include "src/code/bitmap.h" #include "src/code/go.h" #include "src/code/label.h" #include "src/dfa/tcmd.h" #include "src/re/rule.h" #include "src/re/tag.h" #include "src/util/forbid_copy.h" namespace re2c { struct opt_t; class OutputFile; struct Output; struct dfa_t; struct State { label_t label; State * next; size_t fill; bool fallback; size_t rule; tcid_t rule_tags; tcid_t fall_tags; bool isBase; Go go; Action action; State () : label (label_t::first ()) , next (0) , fill (0) , fallback (false) , rule (Rule::NONE) , rule_tags (TCID0) , fall_tags (TCID0) , isBase (false) , go () , action () {} ~State () { operator delete (go.span); } FORBID_COPY (State); }; struct DFA { accept_t accepts; const std::string name; const std::string cond; const uint32_t line; uint32_t lbChar; uint32_t ubChar; uint32_t nStates; State * head; const tcid_t tags0; std::vector &charset; std::valarray &rules; std::vector &tags; std::set &mtagvers; const tagver_t *finvers; tcpool_t &tcpool; size_t max_fill; size_t max_nmatch; bool need_backup; bool need_accept; bool oldstyle_ctxmarker; tagver_t maxtagver; const size_t def_rule; const size_t key_size; bitmaps_t bitmaps; std::string setup; DFA ( const dfa_t &dfa , const std::vector &fill , size_t def , size_t key , const std::string &nm , const std::string &cn , uint32_t ln , const std::string &su ); ~DFA (); void reorder(); void prepare(const opt_t *opts); void calc_stats(uint32_t ln, bool explicit_tags); void emit (Output &, uint32_t &, bool, bool &); private: void addState(State*, State *); void split (State *); void findBaseState (); void hoist_tags(); void hoist_tags_and_skip(const opt_t *opts); void count_used_labels(std::set &used, label_t start, label_t initial, bool force_start, bool fFlag) const; void emit_body (OutputFile &, uint32_t &, const std::set & used_labels, label_t initial) const; void emit_dot(OutputFile &o, bool last_cond) const; FORBID_COPY (DFA); }; } // namespace re2c #endif // _RE2C_ADFA_ADFA_ re2c-1.0.1/src/adfa/dump.cc0000644000175000017500000000503613142624563012235 00000000000000#include "src/util/c99_stdint.h" #include #include #include #include #include #include "src/adfa/action.h" #include "src/adfa/adfa.h" #include "src/adfa/dump.h" #include "src/code/go.h" #include "src/dfa/dump.h" #include "src/dfa/tcmd.h" #include "src/re/rule.h" #include "src/re/tag.h" namespace re2c { static void dump_adfa_range(uint32_t lower, uint32_t upper) { fprintf(stderr, "%u", lower); if (--upper > lower) { fprintf(stderr, "-%u", upper); } } void dump_adfa(const DFA &dfa) { fprintf(stderr, "digraph DFA {\n" " rankdir=LR\n" " node[shape=Mrecord fontname=fixed]\n" " edge[arrowhead=vee fontname=fixed]\n\n"); fprintf(stderr, " n [shape=point]" " n -> n%p [style=dotted label=\"", (void*)dfa.head); dump_tcmd(dfa.tcpool[dfa.tags0]); fprintf(stderr, "\"]\n"); for (const State *s = dfa.head; s; s = s->next) { const char *attr; Action::type_t action = s->action.type; if (action == Action::ACCEPT) { attr = "style=filled fillcolor=gray"; } else if (action == Action::RULE) { attr = "style=filled fillcolor=lightgray"; } else { attr = ""; } fprintf(stderr, " n%p [height=0.2 width=0.2 label=\"", (void*)s); if (s->fill && action != Action::MOVE) { fprintf(stderr, "F(%u) ", (uint32_t)s->fill); } if (action == Action::RULE) { const Rule &r = dfa.rules[s->action.info.rule]; for (size_t t = r.ltag; t < r.htag; ++t) { if (t > r.ltag) fprintf(stderr, " "); const std::string *name = dfa.tags[t].name; fprintf(stderr, "%s(%d)", name ? name->c_str() : "/", dfa.finvers[t]); } } dump_tcmd(dfa.tcpool[s->go.tags]); fprintf(stderr, "\" %s]\n", attr); if (action == Action::ACCEPT) { const accept_t &accept = *s->action.info.accepts; for (uint32_t i = 0; i < accept.size(); ++i) { fprintf(stderr, " n%p -> n%p [label=\"", (void*)s, (void*)accept[i].first); dump_tcmd(dfa.tcpool[accept[i].second]); fprintf(stderr, "\" style=dotted]\n"); } } const Span *x = s->go.span, *e = x + s->go.nSpans; for (uint32_t lb = 0; x < e; lb = x->ub, ++x) { if (!x->to) continue; bool eat = true; const Action::type_t act = x->to->action.type; if (act == Action::MOVE || act == Action::RULE) { attr = "style=dotted"; eat = false; } else { attr = ""; } fprintf(stderr, " n%p -> n%p [label=\"", (void*)s, (void*)x->to); if (eat) dump_adfa_range(lb, x->ub); dump_tcmd(dfa.tcpool[x->tags]); fprintf(stderr, "\" %s]\n", attr); } } fprintf(stderr, "}\n"); } } // namespace re2c re2c-1.0.1/src/adfa/action.h0000644000175000017500000000326313140434235012400 00000000000000#ifndef _RE2C_ADFA_ACTION_ #define _RE2C_ADFA_ACTION_ #include #include #include "src/code/label.h" #include "src/dfa/tcmd.h" #include "src/util/c99_stdint.h" #include "src/util/uniq_vector.h" namespace re2c { class OutputFile; struct State; struct Initial { static const size_t NOSAVE; label_t label; size_t save; inline Initial (label_t l, size_t s) : label (l) , save (s) {} }; typedef uniq_vector_t > accept_t; class Action { public: enum type_t { MATCH, INITIAL, SAVE, MOVE, ACCEPT, RULE } type; union { Initial * initial; size_t save; const accept_t * accepts; size_t rule; } info; public: inline Action () : type (MATCH) , info () {} ~Action () { if (type == INITIAL) { delete info.initial; } } void set_initial (label_t label) { if (type == MATCH) { // ordinary state with no special action type = INITIAL; info.initial = new Initial(label, Initial::NOSAVE); } else if (type == SAVE) { // fallback state: do not loose 'yyaccept' type = INITIAL; info.initial = new Initial(label, info.save); } else if (type == INITIAL) { // already marked as initial, probably reuse mode info.initial->label = label; } else { assert(false); } } void set_save (size_t save) { assert(type == MATCH); type = SAVE; info.save = save; } void set_move () { assert(type == MATCH); type = MOVE; } void set_accept (const accept_t * accepts) { assert(type == MATCH); type = ACCEPT; info.accepts = accepts; } void set_rule (size_t rule) { assert(type == MATCH); type = RULE; info.rule = rule; } }; } // namespace re2c #endif // _RE2C_ADFA_ACTION_ re2c-1.0.1/src/adfa/adfa.cc0000644000175000017500000000712513143041676012163 00000000000000#include #include #include #include #include #include #include #include "src/adfa/adfa.h" #include "src/code/go.h" #include "src/dfa/dfa.h" #include "src/util/allocate.h" namespace re2c { const size_t Initial::NOSAVE = std::numeric_limits::max(); DFA::DFA ( const dfa_t &dfa , const std::vector &fill , size_t def , size_t key , const std::string &nm , const std::string &cn , uint32_t ln , const std::string &su ) : accepts () , name (nm) , cond (cn) , line (ln) , lbChar(0) , ubChar(dfa.charset.back()) , nStates(0) , head(NULL) , tags0(dfa.tcid0) , charset(dfa.charset) , rules(dfa.rules) , tags(dfa.tags) , mtagvers(dfa.mtagvers) , finvers(dfa.finvers) , tcpool(dfa.tcpool) , max_fill (0) , max_nmatch(0) , need_backup (false) , need_accept (false) , oldstyle_ctxmarker (false) , maxtagver (dfa.maxtagver) , def_rule (def) , key_size (key) , bitmaps (std::min(ubChar, 256u)) , setup(su) { const size_t nstates = dfa.states.size(); const size_t nchars = dfa.nchars; State **i2s = new State*[nstates]; for (size_t i = 0; i < nstates; ++i) { i2s[i] = new State; } State **p = &head; for (size_t i = 0; i < nstates; ++i) { dfa_state_t *t = dfa.states[i]; State *s = i2s[i]; ++nStates; *p = s; p = &s->next; s->rule = t->rule; s->rule_tags = t->tcid[dfa.nchars]; s->fall_tags = t->tcid[dfa.nchars + 1]; s->fill = fill[i]; s->fallback = t->fallback; // see note [fallback states] s->go.span = allocate(nchars); uint32_t j = 0; for (uint32_t c = 0; c < nchars; ++j) { const size_t to = t->arcs[c]; const tcid_t tc = t->tcid[c]; for (;++c < nchars && t->arcs[c] == to && t->tcid[c] == tc;); s->go.span[j].to = to == dfa_t::NIL ? NULL : i2s[to]; s->go.span[j].ub = charset[c]; s->go.span[j].tags = tc; } s->go.nSpans = j; } *p = NULL; delete[] i2s; } DFA::~DFA() { State *s; while ((s = head)) { head = s->next; delete s; } delete &charset; delete &rules; delete &tags; delete &mtagvers; delete[] finvers; delete &tcpool; } /* note [reordering DFA states] * * re2c-generated code depends on the order of states in DFA: simply * flipping two states may change the output significantly. * The order of states is affected by many factors, e.g.: * - flipping left and right subtrees of alternative when constructing * AST (also applies to iteration and counted repetition) * - changing the order in which graph nodes are visited (applies to * any intermediate representation: bytecode, NFA, DFA, etc.) * * To make the resulting code independent of such changes, we hereby * reorder DFA states. The ordering scheme is very simple: * * Starting with DFA root, walk DFA nodes in breadth-first order. * Child nodes are ordered accoding to the (alphabetically) first symbol * leading to each node. Each node must be visited exactly once. * Default state (NULL) is always the last state. */ void DFA::reorder() { std::vector ord; ord.reserve(nStates); std::queue todo; todo.push(head); std::set done; done.insert(head); for(;!todo.empty();) { State *s = todo.front(); todo.pop(); ord.push_back(s); for(uint32_t i = 0; i < s->go.nSpans; ++i) { State *q = s->go.span[i].to; if(q && done.insert(q).second) { todo.push(q); } } } assert(nStates == ord.size()); ord.push_back(NULL); for(uint32_t i = 0; i < nStates; ++i) { ord[i]->next = ord[i + 1]; } } void DFA::addState(State *s, State *next) { ++nStates; s->next = next->next; next->next = s; } } // namespace re2c re2c-1.0.1/src/ast/0000755000175000017500000000000013143420716010724 500000000000000re2c-1.0.1/src/ast/input.h0000644000175000017500000000051513140436011012145 00000000000000#ifndef _RE2C_AST_INPUT_ #define _RE2C_AST_INPUT_ #include #include #include "src/util/forbid_copy.h" namespace re2c { struct Input { FILE * file; std::string file_name; explicit Input (const char * fn); ~Input (); bool open (); FORBID_COPY (Input); }; } // namespace re2c #endif // _RE2C_AST_INPUT_ re2c-1.0.1/src/ast/unescape.h0000644000175000017500000000042313142624763012626 00000000000000#ifndef _RE2C_AST_UNESCAPE_ #define _RE2C_AST_UNESCAPE_ #include "src/util/c99_stdint.h" namespace re2c { uint32_t unesc_hex (const char * s, const char * s_end); uint32_t unesc_oct (const char * s, const char * s_end); } // namespace re2c #endif // _RE2C_AST_UNESCAPE_ re2c-1.0.1/src/ast/unescape.cc0000644000175000017500000000206113137447263012766 00000000000000#include "src/ast/unescape.h" namespace re2c { // expected characters: [0-9a-zA-Z] static inline uint32_t hex_digit (const char c) { switch (c) { case '0': return 0; case '1': return 1; case '2': return 2; case '3': return 3; case '4': return 4; case '5': return 5; case '6': return 6; case '7': return 7; case '8': return 8; case '9': return 9; case 'a': case 'A': return 0xA; case 'b': case 'B': return 0xB; case 'c': case 'C': return 0xC; case 'd': case 'D': return 0xD; case 'e': case 'E': return 0xE; case 'f': case 'F': return 0xF; default: return ~0u; // unexpected } } // expected string format: "\" [xXuU] [0-9a-zA-Z]* uint32_t unesc_hex (const char * s, const char * s_end) { uint32_t n = 0; for (s += 2; s != s_end; ++s) { n <<= 4; n += hex_digit (*s); } return n; } // expected string format: "\" [0-7]* uint32_t unesc_oct (const char * s, const char * s_end) { uint32_t n = 0; for (++s; s != s_end; ++s) { n <<= 3; n += static_cast (*s - '0'); } return n; } } // namespace re2c re2c-1.0.1/src/ast/validate.cc0000644000175000017500000000460013142625012012737 00000000000000#include "src/util/c99_stdint.h" #include #include #include "src/ast/ast.h" #include "src/ast/scanner.h" #include "src/conf/msg.h" #include "src/re/rule.h" namespace re2c { void validate_mode(Scanner::ParseMode mode, bool rflag, bool rules, Scanner &input) { const uint32_t l = input.get_cline(); if (mode == Scanner::Rules) { if (!rflag) { fatal_l(l, "found 'rules:re2c' block without -r flag"); } else if (rules) { fatal_l(l, "cannot have a second 'rules:re2c' block"); } } else if (mode == Scanner::Reuse) { if (!rflag) { fatal_l(l, "found 'use:re2c' block without -r flag"); } else if (!rules) { fatal_l(l, "got 'use:re2c' without 'rules:re2c'"); } } else if (rflag) { fatal_l(l, "found standard 're2c' block while using -r flag"); } } void validate_ast(const specs_t &specs, bool cflag) { specs_t::const_iterator i, b = specs.begin(), e = specs.end(); for (i = b; i != e; ++i) { if (i->defs.size() > 1) { fatal_l(i->defs[1]->fline, "code to default rule %sis already defined at line %u", incond(i->name).c_str(), i->defs[0]->fline); } } if (!cflag) { for (i = b; i != e; ++i) { if (i->name != "") { fatal_l(i->rules[0].code->fline, "conditions are only allowed with '-c', '--conditions' option"); } } } else { for (i = b; i != e; ++i) { if (i->name == "") { fatal_l(i->rules[0].code->fline, "non-conditional rules are not allowed" " with '-c', '--conditions' option"); } } for (i = b; i != e; ++i) { if (i->setup.size() > 1) { fatal_l(i->setup[1]->fline, "code to setup rule '%s' is already defined at line %u", i->name.c_str(), i->setup[0]->fline); } } for (i = b; i != e; ++i) { if (i->name != "*" && !i->setup.empty() && i->rules.empty()) { fatal_l(i->setup[0]->fline, "setup for non existing condition '%s' found", i->name.c_str()); } } for (i = b; i != e && !i->setup.empty(); ++i); if (i == e) { for (i = b; i != e; ++i) { if (i->name == "*") { fatal_l(i->setup[0]->fline, "setup for all conditions '' is illegal " "if setup for each condition is defined explicitly"); } } } for (i = b; i != e; ++i) { if (i->name == "0" && i->rules.size() > 1) { fatal_l(i->rules[1].code->fline, "startup code is already defined at line %u", i->rules[0].code->fline); } } } } } // namespace re2c re2c-1.0.1/src/ast/ast.h0000644000175000017500000000551313142624532011611 00000000000000#ifndef _RE2C_AST_AST_ #define _RE2C_AST_AST_ #include "src/util/c99_stdint.h" #include #include #include #include "src/ast/scanner.h" #include "src/re/rule.h" #include "src/util/free_list.h" #include "src/util/range.h" namespace re2c { struct Code; template class free_list; struct ASTChar { uint32_t chr; uint32_t column; ASTChar(uint32_t x, uint32_t c) : chr(x), column(c) {} }; struct ASTRange { uint32_t lower; uint32_t upper; uint32_t column; ASTRange(uint32_t l, uint32_t u, uint32_t c) : lower(l), upper(u), column(c) {} }; /* AST must be immutable and independent of options */ struct AST { static free_list flist; static const uint32_t MANY; enum type_t { NIL, STR, CLS, DOT, DEFAULT, ALT , CAT, ITER, DIFF, TAG, CAP, REF } type; union { struct { const std::vector *chars; bool icase; } str; struct { const std::vector *ranges; bool negated; } cls; struct { const AST *ast1; const AST *ast2; } alt; struct { const AST *ast1; const AST *ast2; } cat; struct { const AST *ast; uint32_t min; uint32_t max; } iter; struct { const AST *ast1; const AST *ast2; } diff; struct { const std::string *name; bool history; } tag; const AST *cap; struct { const AST *ast; const std::string *name; } ref; }; uint32_t line; uint32_t column; AST(uint32_t l, uint32_t c, type_t t); ~AST(); }; struct ASTRule { const AST *ast; const Code *code; ASTRule(const AST *r, const Code *c) : ast(r) , code(c) {} }; struct ASTBounds { uint32_t min; uint32_t max; }; struct spec_t { std::string name; std::vector rules; std::vector defs; std::vector setup; explicit spec_t(const std::string &n): name(n), rules(), defs(), setup() {} }; typedef std::vector specs_t; typedef std::map symtab_t; const AST *ast_nil(uint32_t l, uint32_t c); const AST *ast_str(uint32_t l, uint32_t c, std::vector *chars, bool icase); const AST *ast_cls(uint32_t l, uint32_t c, std::vector *ranges, bool negated); const AST *ast_dot(uint32_t l, uint32_t c); const AST *ast_default(uint32_t l, uint32_t c); const AST *ast_alt(const AST *a1, const AST *a2); const AST *ast_cat(const AST *a1, const AST *a2); const AST *ast_iter(const AST *a, uint32_t n, uint32_t m); const AST *ast_diff(const AST *a1, const AST *a2); const AST *ast_tag(uint32_t l, uint32_t c, const std::string *n, bool h); const AST *ast_cap(const AST *a); const AST *ast_ref(const AST *a, const std::string &n); bool ast_need_wrap(const AST *a); void validate_mode(Scanner::ParseMode mode, bool rflag, bool rules, Scanner &input); void validate_ast(const specs_t &specs, bool cflag); void normalize_ast(specs_t &specs); } // namespace re2c #endif // _RE2C_AST_AST_ re2c-1.0.1/src/ast/input.cc0000644000175000017500000000056013137447263012324 00000000000000#include "src/ast/input.h" namespace re2c { Input::Input (const char * fn) : file (NULL) , file_name (fn) {} bool Input::open () { if (file_name == "") { file = stdin; } else { file = fopen (file_name.c_str (), "rb"); } return file != NULL; } Input::~Input () { if (file != NULL && file != stdin) { fclose (file); } } } // namespace re2c re2c-1.0.1/src/ast/scanner.h0000644000175000017500000000437413142624741012461 00000000000000#ifndef _RE2C_AST_SCANNER_ #define _RE2C_AST_SCANNER_ #include #include "src/util/c99_stdint.h" #include #include #include "src/ast/input.h" #include "src/conf/opt.h" #include "src/conf/warn.h" #include "src/re/encoding/enc.h" #include "src/util/attribute.h" #include "src/util/forbid_copy.h" namespace re2c { class Warn; struct Opt; struct conopt_t; class OutputFile; class Range; struct AST; struct ScannerState { enum lexer_state_t { LEX_NORMAL, LEX_FLEX_NAME }; // positioning char * tok; char * ptr; char * cur; char * mar; char * pos; char * ctx; // buffer char * bot; char * lim; char * top; char * eof; ptrdiff_t tchar; uint32_t cline; lexer_state_t lexer_state; ScannerState(); FORBID_COPY(ScannerState); }; class Scanner: private ScannerState { static const uint32_t BSIZE; Input & in; Warn &warn; void fill(uint32_t need); void lex_end_of_comment(OutputFile &out); void lex_tags(OutputFile &out, bool mtags); void set_sourceline (); uint32_t lex_cls_chr(); uint32_t lex_str_chr(char quote, bool &end); const AST *lex_cls(bool neg); const AST *lex_str(char quote); void lex_conf_encoding_policy(Opt &opts); void lex_conf_input(Opt &opts); void lex_conf_empty_class(Opt &opts); void lex_conf_dfa_minimization(Opt &opts); void lex_conf_enc(Enc::type_t enc, Opt &opts); void lex_conf_assign(); void lex_conf_semicolon(); int32_t lex_conf_number(); bool lex_conf_bool(); std::string lex_conf_string(); size_t tok_len () const; public: enum ParseMode {Stop, Parse, Reuse, Rules}; Scanner(Input&, Warn &w); ~Scanner(); ParseMode echo(OutputFile &out); int scan(const conopt_t *globopts); void lex_conf(Opt &opts); uint32_t get_cline() const; uint32_t get_column() const; const std::string & get_fname () const; FORBID_COPY (Scanner); }; inline size_t Scanner::tok_len () const { // lexing and fill procedures must maintain: token pointer <= cursor pointer return static_cast (cur - tok); } inline const std::string & Scanner::get_fname () const { return in.file_name; } inline uint32_t Scanner::get_cline() const { return cline; } inline uint32_t Scanner::get_column() const { return static_cast(tok - pos); } } // end namespace re2c #endif // _RE2C_AST_SCANNER_ re2c-1.0.1/src/ast/lex_conf.re0000644000175000017500000002604613142640163013000 00000000000000#include "src/util/c99_stdint.h" #include #include "src/code/output.h" #include "src/conf/msg.h" #include "src/re/encoding/enc.h" #include "src/ast/scanner.h" #include "src/util/s_to_n32_unsafe.h" namespace re2c { // global re2c config (affects the whole file) /*!re2c re2c:define:YYCTYPE = "unsigned char"; re2c:define:YYCURSOR = cur; re2c:define:YYLIMIT = lim; re2c:define:YYMARKER = mar; re2c:define:YYCTXMARKER = ctx; re2c:define:YYFILL = fill; // source code is in ASCII: pointers have type 'char *' // but re2c makes an implicit assumption that YYCTYPE is unsigned // when it generates comparisons re2c:yych:conversion = 1; space = [ \t]; conf_assign = space* "=" space*; naked_char = . \ (space | [;]); naked = (naked_char \ ['"]) naked_char*; number = "0" | ("-"? [1-9] [0-9]*); */ void Scanner::lex_conf(Opt &opts) { tok = cur; const uint32_t l = get_cline(), c = get_column(); /*!re2c "flags:" ("b" | "bit-vectors") { opts.set_bFlag(lex_conf_bool()); return; } "flags:" ("d" | "debug-output") { opts.set_dFlag(lex_conf_bool()); return; } "flags:" ("g" | "computed-gotos") { opts.set_gFlag(lex_conf_bool()); return; } "flags:" ("i" | "no-debug-info") { opts.set_iFlag(lex_conf_bool()); return; } "flags:" ("s" | "nested-ifs") { opts.set_sFlag(lex_conf_bool()); return; } "flags:" ("T" | "tags") { opts.set_tags(lex_conf_bool()); return; } "flags:" ("P" | "posix-captures") { opts.set_posix_captures(lex_conf_bool()); return; } "flags:case-insensitive" { opts.set_bCaseInsensitive(lex_conf_bool()); return; } "flags:case-inverted" { opts.set_bCaseInverted(lex_conf_bool()); return; } "flags:lookahead" { opts.set_lookahead(lex_conf_bool()); return; } "flags:optimize-tags" { opts.set_optimize_tags(lex_conf_bool()); return; } "flags:eager-skip" { opts.set_eager_skip(lex_conf_bool()); return; } "flags:" ("e" | "ecb") { lex_conf_enc(Enc::EBCDIC, opts); return; } "flags:" ("u" | "unicode") { lex_conf_enc(Enc::UTF32, opts); return; } "flags:" ("w" | "wide-chars") { lex_conf_enc(Enc::UCS2, opts); return; } "flags:" ("x" | "utf-16") { lex_conf_enc(Enc::UTF16, opts); return; } "flags:" ("8" | "utf-8") { lex_conf_enc(Enc::UTF8, opts); return; } "flags:encoding-policy" { lex_conf_encoding_policy(opts); return; } "flags:input" { lex_conf_input(opts); return; } "flags:empty-class" { lex_conf_empty_class(opts); return; } "flags:dfa-minimization" { lex_conf_dfa_minimization(opts); return; } "define:YYCONDTYPE" { opts.set_yycondtype (lex_conf_string ()); return; } "define:YYGETCONDITION" { opts.set_cond_get (lex_conf_string ()); return; } "define:YYGETCONDITION:naked" { opts.set_cond_get_naked (lex_conf_bool()); return; } "define:YYSETCONDITION" { opts.set_cond_set (lex_conf_string ()); return; } "define:YYSETCONDITION@cond" { opts.set_cond_set_arg (lex_conf_string ()); return; } "define:YYSETCONDITION:naked" { opts.set_cond_set_naked (lex_conf_bool()); return; } "condprefix" { opts.set_condPrefix (lex_conf_string ()); return; } "condenumprefix" { opts.set_condEnumPrefix (lex_conf_string ()); return; } "cond:divider" { opts.set_condDivider (lex_conf_string ()); return; } "cond:divider@cond" { opts.set_condDividerParam (lex_conf_string ()); return; } "cond:goto" { opts.set_condGoto (lex_conf_string ()); return; } "cond:goto@cond" { opts.set_condGotoParam (lex_conf_string ()); return; } "variable:yyctable" { opts.set_yyctable (lex_conf_string ()); return; } "define:YYGETSTATE" { opts.set_state_get (lex_conf_string ()); return; } "define:YYGETSTATE:naked" { opts.set_state_get_naked (lex_conf_bool()); return; } "define:YYSETSTATE" { opts.set_state_set (lex_conf_string ()); return; } "define:YYSETSTATE:naked" { opts.set_state_set_naked (lex_conf_bool()); return; } "define:YYSETSTATE@state" { opts.set_state_set_arg (lex_conf_string ()); return; } "label:yyFillLabel" { opts.set_yyfilllabel (lex_conf_string ()); return; } "label:yyNext" { opts.set_yynext (lex_conf_string ()); return; } "state:abort" { opts.set_bUseStateAbort (lex_conf_bool()); return; } "state:nextlabel" { opts.set_bUseStateNext (lex_conf_bool()); return; } "variable:yyaccept" { opts.set_yyaccept (lex_conf_string ()); return; } "variable:yybm" { opts.set_yybm (lex_conf_string ()); return; } "yybm:hex" { opts.set_yybmHexTable (lex_conf_bool()); return; } "cgoto:threshold" { const int32_t n = lex_conf_number (); if (n < 0) { fatal_lc(l, c, "configuration 'cgoto:threshold' must be nonnegative"); } opts.set_cGotoThreshold (static_cast (n)); return; } "variable:yytarget" { opts.set_yytarget (lex_conf_string ()); return; } "define:YYCURSOR" { opts.set_yycursor (lex_conf_string ()); return; } "define:YYMARKER" { opts.set_yymarker (lex_conf_string ()); return; } "define:YYCTXMARKER" { opts.set_yyctxmarker (lex_conf_string ()); return; } "define:YYLIMIT" { opts.set_yylimit (lex_conf_string ()); return; } "define:YYPEEK" { opts.set_yypeek (lex_conf_string ()); return; } "define:YYSKIP" { opts.set_yyskip (lex_conf_string ()); return; } "define:YYBACKUP" { opts.set_yybackup (lex_conf_string ()); return; } "define:YYBACKUPCTX" { opts.set_yybackupctx (lex_conf_string ()); return; } "define:YYRESTORE" { opts.set_yyrestore (lex_conf_string ()); return; } "define:YYRESTORECTX" { opts.set_yyrestorectx (lex_conf_string ()); return; } "define:YYRESTORETAG" { opts.set_yyrestoretag (lex_conf_string ()); return; } "define:YYLESSTHAN" { opts.set_yylessthan (lex_conf_string ()); return; } "define:YYSTAGN" { opts.set_yystagn (lex_conf_string ()); return; } "define:YYSTAGP" { opts.set_yystagp (lex_conf_string ()); return; } "define:YYMTAGN" { opts.set_yymtagn (lex_conf_string ()); return; } "define:YYMTAGP" { opts.set_yymtagp (lex_conf_string ()); return; } "tags:prefix" { opts.set_tags_prefix (lex_conf_string ()); return; } "tags:expression" { opts.set_tags_expression(lex_conf_string ()); return; } "indent:string" { opts.set_indString (lex_conf_string ()); return; } "indent:top" { const int32_t n = lex_conf_number (); if (n < 0) { fatal_lc(l, c, "configuration 'indent:top' must be nonnegative"); } opts.set_topIndent (static_cast (n)); return; } "define:YYDEBUG" { opts.set_yydebug (lex_conf_string ()); return; } "define:YYCTYPE" { opts.set_yyctype (lex_conf_string ()); return; } "variable:yych" { opts.set_yych (lex_conf_string ()); return; } "yych:conversion" { opts.set_yychConversion (lex_conf_bool()); return; } "yych:emit" { opts.set_bEmitYYCh (lex_conf_bool()); return; } "define:YYFILL" { opts.set_fill (lex_conf_string ()); return; } "yyfill:enable" { opts.set_fill_use (lex_conf_bool()); return; } "define:YYFILL@len" { opts.set_fill_arg (lex_conf_string ()); return; } "yyfill:parameter" { opts.set_fill_arg_use (lex_conf_bool()); return; } "define:YYFILL:naked" { opts.set_fill_naked (lex_conf_bool()); return; } "yyfill:check" { opts.set_fill_check (lex_conf_bool()); return; } "labelprefix" { opts.set_labelPrefix (lex_conf_string ()); return; } // try to lex number first, otherwize it would be lexed as a naked string "startlabel" / conf_assign number { opts.set_startlabel_force (lex_conf_bool()); return; } "startlabel" { opts.set_startlabel (lex_conf_string()); return; } // deprecated "variable:yystable" { lex_conf_string (); return; } [a-zA-Z0-9_:-]* { fatal_lc(l, c, "unrecognized configuration '%.*s'", static_cast(cur - tok), tok); } */ } void Scanner::lex_conf_encoding_policy(Opt &opts) { lex_conf_assign (); /*!re2c * { fatal_lc(get_cline(), get_column(), "bad configuration value (expected: 'ignore', 'substitute', 'fail')"); } "ignore" { opts.set_encoding_policy(Enc::POLICY_IGNORE); goto end; } "substitute" { opts.set_encoding_policy(Enc::POLICY_SUBSTITUTE); goto end; } "fail" { opts.set_encoding_policy(Enc::POLICY_FAIL); goto end; } */ end: lex_conf_semicolon(); } void Scanner::lex_conf_input(Opt &opts) { lex_conf_assign (); /*!re2c * { fatal_lc(get_cline(), get_column(), "bad configuration value (expected: 'default', 'custom')"); } "default" { opts.set_input_api(INPUT_DEFAULT); goto end; } "custom" { opts.set_input_api(INPUT_CUSTOM); goto end; } */ end: lex_conf_semicolon(); } void Scanner::lex_conf_empty_class(Opt &opts) { lex_conf_assign (); /*!re2c * { fatal_lc(get_cline(), get_column(), "bad configuration value (expected: 'match-empty', 'match-none', 'error')"); } "match-empty" { opts.set_empty_class_policy(EMPTY_CLASS_MATCH_EMPTY); goto end; } "match-none" { opts.set_empty_class_policy(EMPTY_CLASS_MATCH_NONE); goto end; } "error" { opts.set_empty_class_policy(EMPTY_CLASS_ERROR); goto end; } */ end: lex_conf_semicolon(); } void Scanner::lex_conf_dfa_minimization(Opt &opts) { lex_conf_assign (); /*!re2c * { fatal_lc(get_cline(), get_column(), "bad configuration value (expected: 'table', 'moore')"); } "table" { opts.set_dfa_minimization(DFA_MINIMIZATION_TABLE); goto end; } "moore" { opts.set_dfa_minimization(DFA_MINIMIZATION_MOORE); goto end; } */ end: lex_conf_semicolon(); } void Scanner::lex_conf_enc(Enc::type_t enc, Opt &opts) { if (lex_conf_bool()) { opts.set_encoding(enc); } else { opts.unset_encoding(enc); } } void Scanner::lex_conf_assign () { /*!re2c * { fatal_lc(get_cline(), get_column(), "missing '=' in configuration"); } conf_assign { return; } */ } void Scanner::lex_conf_semicolon () { /*!re2c * { fatal_lc(get_cline(), get_column(), "missing ending ';' in configuration"); } space* ";" { return; } */ } bool Scanner::lex_conf_bool() { return lex_conf_number() != 0; } int32_t Scanner::lex_conf_number () { lex_conf_assign (); tok = cur; /*!re2c number { int32_t n = 0; if (!s_to_i32_unsafe (tok, cur, n)) { fatal_lc(get_cline(), get_column(), "configuration value overflow"); } lex_conf_semicolon (); return n; } */ } std::string Scanner::lex_conf_string () { lex_conf_assign (); std::string s; tok = cur; /*!re2c ['"] { const char quote = tok[0]; for (bool end;;) { const uint32_t c = lex_str_chr(quote, end); if (end) { goto end; } if (c > 0xFF) { fatal_lc(get_cline(), get_column(), "multibyte character in configuration string: 0x%X", c); } else { s += static_cast(c); } } } naked { s = std::string(tok, tok_len()); goto end; } "" { goto end; } */ end: lex_conf_semicolon (); return s; } } // end namespace re2c re2c-1.0.1/src/ast/lex.re0000644000175000017500000003252613143037534011776 00000000000000#include "src/util/c99_stdint.h" #include #include #include #include #include #include "src/conf/msg.h" #include "src/code/output.h" #include "src/re/encoding/enc.h" #include "src/ast/input.h" #include "src/ast/ast.h" #include "src/ast/scanner.h" #include "src/ast/parser.h" // needed by "y.tab.h" #include "src/ast/unescape.h" #include "src/util/range.h" #include "src/util/s_to_n32_unsafe.h" #include "y.tab.h" extern YYSTYPE yylval; #define YYCTYPE unsigned char #define YYCURSOR cur #define YYLIMIT lim #define YYMARKER mar #define YYCTXMARKER ctx #define YYFILL(n) { fill (n); } namespace re2c { // source code is in ASCII: pointers have type 'char *' // but re2c makes an implicit assumption that YYCTYPE is unsigned // when it generates comparisons /*!re2c re2c:yych:conversion = 1; */ /*!re2c zero = "\000"; dstring = "\"" ((. \ [\\"] ) | "\\" .)* "\""; sstring = "'" ((. \ [\\'] ) | "\\" .)* "'" ; letter = [a-zA-Z]; digit = [0-9]; lineno = [1-9] digit*; name = (letter|digit|"_")+; space = [ \t]; ws = (space | [\r\n]); eol = "\r"? "\n"; eoc = "*" "/"; lineinf = lineno (space+ dstring)? eol; esc = "\\"; hex_digit = [0-9a-fA-F]; esc_hex = esc ("x" hex_digit{2} | [uX] hex_digit{4} | "U" hex_digit{8}); esc_oct = esc [0-3] [0-7]{2}; // max 1-byte octal value is '\377' esc_simple = esc [abfnrtv\\]; */ Scanner::ParseMode Scanner::echo(OutputFile &out) { if (eof && cur == eof) // Catch EOF { return Stop; } tok = cur; echo: ptr = cur; /*!re2c "%{" | "/*!re2c" { out.wraw(tok, ptr); return Parse; } "/*!rules:re2c" { out.wraw(tok, ptr); return Rules; } "/*!use:re2c" { out.wraw(tok, ptr); return Reuse; } "/*!ignore:re2c" { out.wraw(tok, ptr); lex_end_of_comment(out); goto echo; } "/*!max:re2c" { out.wraw(tok, ptr); out.wdelay_yymaxfill(); lex_end_of_comment(out); goto echo; } "/*!maxnmatch:re2c" { out.wraw(tok, ptr); out.wdelay_yymaxnmatch(); lex_end_of_comment(out); goto echo; } "/*!getstate:re2c" { out.wraw(tok, ptr); out.wdelay_state_goto(0); lex_end_of_comment(out); goto echo; } "/*!types:re2c" { out.wraw(tok, ptr); out.wdelay_line_info(); out.wdelay_types(); out.wline_info(cline, get_fname().c_str()); lex_end_of_comment(out); goto echo; } "/*!stags:re2c" { out.wraw(tok, ptr); lex_tags(out, false); goto echo; } "/*!mtags:re2c" { out.wraw(tok, ptr); lex_tags(out, true); goto echo; } zero { if (cur != eof) goto echo; out.wraw(tok, ptr); return Stop; } eol space* "#" space* "line" space+ / lineinf { set_sourceline(); goto echo; } eol { cline++; pos = cur; goto echo; } * { goto echo; } */ } void Scanner::lex_end_of_comment(OutputFile &out) { uint32_t ignored = 0; for (;;) {/*!re2c zero { fatal_lc(get_cline(), get_column(), "expected end of block"); } * { continue; } eol { ++ignored; continue; } eoc { if (ignored > 0) { cline += ignored; out.wline_info(cline, get_fname().c_str()); } tok = pos = cur; return; } */} } void Scanner::lex_tags(OutputFile &out, bool mtags) { std::string fmt, sep; for (;;) {/*!re2c * { fatal_lc(get_cline(), get_column(), "unrecognized configuration"); } "format" { fmt = lex_conf_string(); continue; } "separator" { sep = lex_conf_string(); continue; } space+ { continue; } eol { ++cline; continue; } eoc { out.wdelay_tags(new ConfTags(fmt, sep), mtags); tok = pos = cur; return; } */} } int Scanner::scan(const conopt_t *globopts) { uint32_t depth, code_line; scan: tchar = cur - pos; tok = cur; /*!re2c "{" { depth = 1; code_line = cline; goto code; } ":" / "=>" { return *tok; } ":=" { tok += 2; /* skip ":=" */ depth = 0; code_line = cline; goto code; } "//" { goto nextLine; } "/*" { depth = 1; goto comment; } endRE = "%}" | "*/"; endRE { tok = cur; return 0; } "'" { yylval.regexp = lex_str('\''); return TOKEN_REGEXP; } "\"" { yylval.regexp = lex_str('"'); return TOKEN_REGEXP; } "[" { yylval.regexp = lex_cls(false); return TOKEN_REGEXP; } "[^" { yylval.regexp = lex_cls(true); return TOKEN_REGEXP; } [@#] name { const std::string *name = new std::string(tok + 1, tok_len() - 1); yylval.regexp = ast_tag(cline, get_column(), name, tok[0] == '#'); return TOKEN_REGEXP; } [*+?<>!,()|=;/\\] { return *tok; } "{" [0-9]+ "}" { if (!s_to_u32_unsafe (tok + 1, cur - 1, yylval.bounds.min)) { fatal_lc(get_cline(), get_column(), "repetition count overflow"); } yylval.bounds.max = yylval.bounds.min; return TOKEN_CLOSESIZE; } "{" [0-9]+ "," [0-9]+ "}" { const char * p = strchr (tok, ','); if (!s_to_u32_unsafe (tok + 1, p, yylval.bounds.min)) { fatal_lc(get_cline(), get_column(), "repetition lower bound overflow"); } if (!s_to_u32_unsafe (p + 1, cur - 1, yylval.bounds.max)) { fatal_lc(get_cline(), get_column(), "repetition upper bound overflow"); } return TOKEN_CLOSESIZE; } "{" [0-9]+ ",}" { if (!s_to_u32_unsafe (tok + 1, cur - 2, yylval.bounds.min)) { fatal_lc(get_cline(), get_column(), "repetition lower bound overflow"); } yylval.bounds.max = std::numeric_limits::max(); return TOKEN_CLOSESIZE; } "{" [0-9]* "," { fatal_lc(get_cline(), get_column(), "illegal closure form, use '{n}', '{n,}', '{n,m}' where n and m are numbers"); } "{" name "}" { if (!globopts->FFlag) { fatal_lc(get_cline(), get_column(), "curly braces for names only allowed with -F switch"); } yylval.str = new std::string (tok + 1, tok_len () - 2); // -2 to omit braces return TOKEN_ID; } "re2c:" { return TOKEN_CONF; } name / (space+ [^=>,]) { yylval.str = new std::string (tok, tok_len ()); if (globopts->FFlag) { lexer_state = LEX_FLEX_NAME; return TOKEN_FID; } else { return TOKEN_ID; } } name / (space* [=>,]) { yylval.str = new std::string (tok, tok_len ()); return TOKEN_ID; } name / [^] { if (!globopts->FFlag) { yylval.str = new std::string (tok, tok_len()); return TOKEN_ID; } else { std::vector *str = new std::vector; for (char *s = tok; s < cur; ++s) { const uint32_t chr = static_cast(*s), col = static_cast(s - tok); str->push_back(ASTChar(chr, col)); } yylval.regexp = ast_str(cline, get_column(), str, false); return TOKEN_REGEXP; } } "." { yylval.regexp = ast_dot(cline, get_column()); return TOKEN_REGEXP; } space+ { goto scan; } eol space* "#" space* "line" space+ / lineinf { set_sourceline (); return TOKEN_LINE_INFO; } eol { if (cur == eof) return 0; pos = cur; cline++; if (lexer_state == LEX_FLEX_NAME) { lexer_state = LEX_NORMAL; return TOKEN_FID_END; } else { goto scan; } } * { fatal_lc(get_cline(), get_column(), "unexpected character: '%c'", *tok); goto scan; } */ code: /*!re2c "}" { if (depth == 0) { fatal_l(get_cline(), "Curly braces are not allowed after ':='"); } else if (--depth == 0) { yylval.code = new Code(get_fname (), code_line, tok, tok_len ()); return TOKEN_CODE; } goto code; } "{" { if (depth == 0) { fatal_l(get_cline(), "Curly braces are not allowed after ':='"); } else { ++depth; } goto code; } "\n" space* "#" space* "line" space+ / lineinf { set_sourceline (); goto code; } "\n" / ws { if (depth == 0) { goto code; } else if (cur == eof) { fatal_l(get_cline(), "missing '}'"); } pos = cur; cline++; goto code; } "\n" { if (depth == 0) { tok += strspn(tok, " \t\r\n"); while (cur > tok && strchr(" \t\r\n", cur[-1])) { --cur; } yylval.code = new Code(get_fname (), code_line, tok, tok_len ()); return TOKEN_CODE; } else if (cur == eof) { fatal_l(get_cline(), "missing '}'"); } pos = cur; cline++; goto code; } zero { if (cur == eof) { if (depth) { fatal_l(get_cline(), "missing '}'"); } return 0; } goto code; } dstring | sstring { goto code; } * { goto code; } */ comment: /*!re2c "*" "/" { if (--depth == 0) { goto scan; } else { goto comment; } } "/" "*" { ++depth; fatal_lc(get_cline(), get_column(), "ambiguous /* found"); goto comment; } "\n" space* "#" space* "line" space+ / lineinf { set_sourceline (); goto comment; } "\n" { if (cur == eof) { return 0; } tok = pos = cur; cline++; goto comment; } * { if (cur == eof) { return 0; } goto comment; } */ nextLine: /*!re2c /* resync emacs */ "\n" { if(cur == eof) { return 0; } tok = pos = cur; cline++; goto scan; } * { if(cur == eof) { return 0; } goto nextLine; } */ } static void escape (std::string & dest, const std::string & src) { dest = src; size_t l = dest.length(); for (size_t p = 0; p < l; ++p) { if (dest[p] == '\\') { dest.insert(++p, "\\"); ++l; } } } const AST *Scanner::lex_cls(bool neg) { std::vector *cls = new std::vector; uint32_t u, l, c, c0 = get_column(); fst: tok = cur; c = get_column(); /*!re2c "]" { return ast_cls(cline, c0, cls, neg); } "" { l = lex_cls_chr(); goto snd; } */ snd: /*!re2c "" { u = l; goto add; } "-" / [^\]] { u = lex_cls_chr(); if (l > u) { warn.swapped_range(cline, l, u); std::swap(l, u); } goto add; } */ add: cls->push_back(ASTRange(l, u, c)); goto fst; } uint32_t Scanner::lex_cls_chr() { tok = cur; const uint32_t l = get_cline(), c = get_column(); /*!re2c * { fatal_lc(l, c, "syntax error"); } esc? eol { fatal_lc(l, c, "newline in character class"); } esc [xXuU] { fatal_lc(l, c, "syntax error in hexadecimal escape sequence"); } esc [0-7] { fatal_lc(l, c, "syntax error in octal escape sequence"); } esc { fatal_lc(l, c, "syntax error in escape sequence"); } . \ esc { return static_cast(tok[0]); } esc_hex { return unesc_hex(tok, cur); } esc_oct { return unesc_oct(tok, cur); } esc "a" { return static_cast('\a'); } esc "b" { return static_cast('\b'); } esc "f" { return static_cast('\f'); } esc "n" { return static_cast('\n'); } esc "r" { return static_cast('\r'); } esc "t" { return static_cast('\t'); } esc "v" { return static_cast('\v'); } esc "\\" { return static_cast('\\'); } esc "-" { return static_cast('-'); } esc "]" { return static_cast(']'); } esc . { warn.useless_escape(cline, get_column(), tok[1]); return static_cast(tok[1]); } */ } uint32_t Scanner::lex_str_chr(char quote, bool &end) { end = false; tok = cur; const uint32_t l = get_cline(), c = get_column(); /*!re2c * { fatal_lc(l, c, "syntax error"); } esc? eol { fatal_lc(l, c, "newline in character string"); } esc [xXuU] { fatal_lc(l, c, "syntax error in hexadecimal escape sequence"); } esc [0-7] { fatal_lc(l, c, "syntax error in octal escape sequence"); } esc { fatal_lc(l, c, "syntax error in escape sequence"); } . \ esc { end = tok[0] == quote; return static_cast(tok[0]); } esc_hex { return unesc_hex(tok, cur); } esc_oct { return unesc_oct(tok, cur); } esc "a" { return static_cast('\a'); } esc "b" { return static_cast('\b'); } esc "f" { return static_cast('\f'); } esc "n" { return static_cast('\n'); } esc "r" { return static_cast('\r'); } esc "t" { return static_cast('\t'); } esc "v" { return static_cast('\v'); } esc "\\" { return static_cast('\\'); } esc . { if (tok[1] != quote) { warn.useless_escape(cline, get_column(), tok[1]); } return static_cast(tok[1]); } */ } const AST *Scanner::lex_str(char quote) { const uint32_t column = get_column(); std::vector *str = new std::vector; for (bool end;;) { const uint32_t c = lex_str_chr(quote, end); if (end) return ast_str(cline, column, str, quote == '\''); str->push_back(ASTChar(c, get_column())); } } void Scanner::set_sourceline () { sourceline: tok = cur; /*!re2c lineno { if (!s_to_u32_unsafe (tok, cur, cline)) { fatal_lc(get_cline(), get_column(), "line number overflow"); } goto sourceline; } dstring { escape (in.file_name, std::string (tok + 1, tok_len () - 2)); // -2 to omit quotes goto sourceline; } "\n" { if (cur == eof) { --cur; } else { pos = cur; } tok = cur; return; } * { goto sourceline; } */ } } // end namespace re2c re2c-1.0.1/src/ast/parser.ypp0000644000175000017500000001115613140054250012667 00000000000000%{ #include "src/ast/parser.h" #define YYMALLOC malloc #define YYFREE free using namespace re2c; extern "C" { int yylex(context_t &context); void yyerror(context_t &context, const char*); } // extern "C" /* Bison version 1.875 emits a definition that is not working * with several g++ version. Hence we disable it here. */ #if defined(__GNUC__) #define __attribute__(x) #endif static spec_t &find(specs_t &specs, const std::string &name) { for (specs_t::iterator i = specs.begin(); i != specs.end(); ++i) { if (i->name == name) return *i; } specs.push_back(spec_t(name)); return specs.back(); } %} %start spec %lex-param {re2c::context_t &context} %parse-param {re2c::context_t &context} %union { const re2c::AST * regexp; re2c::Code * code; char op; re2c::ASTBounds bounds; std::string * str; re2c::CondList * clist; }; %token TOKEN_CLOSESIZE %token TOKEN_CODE %token TOKEN_CONF %token TOKEN_ID %token TOKEN_FID %token TOKEN_FID_END %token TOKEN_LINE_INFO %token TOKEN_REGEXP %type close closes %type TOKEN_CLOSESIZE %type TOKEN_CODE ccode %type TOKEN_REGEXP trailexpr rule expr diff term factor primary %type TOKEN_ID TOKEN_FID name %type conds clist %% spec : /* empty */ | spec TOKEN_CONF { context.input.lex_conf(context.opts); } | spec def | spec rule | spec TOKEN_LINE_INFO ; def : name expr enddef { if (!context.symtab.insert(std::make_pair(*$1, $2)).second) { fatal_l(context.input.get_cline(), "sym already defined"); } delete $1; } /* errors */ | name expr '/' { fatal_l(context.input.get_cline(), "trailing contexts are not allowed in named definitions"); }; name : TOKEN_ID '=' { $$ = $1; } | TOKEN_FID { $$ = $1; }; enddef: ';' | TOKEN_FID_END; rule : trailexpr TOKEN_CODE { find(context.specs, "").rules.push_back(ASTRule($1, $2)); } | '*' TOKEN_CODE { find(context.specs, "").defs.push_back($2); } | '<' clist '>' trailexpr ccode { for(CondList::const_iterator i = $2->begin(); i != $2->end(); ++i) { find(context.specs, *i).rules.push_back(ASTRule($4, $5)); } delete $2; } | '<' clist '>' '*' ccode { for(CondList::const_iterator i = $2->begin(); i != $2->end(); ++i) { find(context.specs, *i).defs.push_back($5); } delete $2; } | '<' '!' clist '>' TOKEN_CODE { for (CondList::const_iterator i = $3->begin(); i != $3->end(); ++i) { find(context.specs, *i).setup.push_back($5); } delete $3; } | '<' '>' ccode { const AST *r = ast_nil(context.input.get_cline(), 0); find(context.specs, "0").rules.push_back(ASTRule(r, $3)); }; ccode : TOKEN_CODE | '=' '>' TOKEN_ID TOKEN_CODE { $$ = $4; $$->cond = *$3; delete $3; } | ':' '=' '>' TOKEN_ID { $$ = new Code(context.input.get_fname(), context.input.get_cline()); $$->cond = *$4; delete $4; }; clist : conds | '*' { $$ = new CondList; $$->insert("*"); }; conds : TOKEN_ID { $$ = new CondList; $$->insert(*$1); delete $1; } | conds ',' TOKEN_ID { $1->insert(*$3); delete $3; $$ = $1; }; trailexpr : expr { $$ = ast_cap($1); } | expr '/' expr { $$ = ast_cat(ast_cap($1), ast_cat(ast_tag(context.input.get_cline(), 0, NULL, false), $3)); }; expr: diff { $$ = $1; } | expr '|' diff { $$ = ast_alt($1, $3); } ; diff: term { $$ = $1; } | diff '\\' term { $$ = ast_diff($1, $3); } ; term: factor { $$ = $1; } | factor term // in POSIX concatenation is right-associative { $$ = ast_cat($1, $2); } ; factor : primary | primary closes { switch($2) { case '*': $$ = ast_iter($1, 0, AST::MANY); break; case '+': $$ = ast_iter($1, 1, AST::MANY); break; case '?': $$ = ast_iter($1, 0, 1); break; } } | primary TOKEN_CLOSESIZE { $$ = ast_iter($1, $2.min, $2.max); }; closes : close | closes close { $$ = ($1 == $2) ? $1 : '*'; } ; close : '*' { $$ = '*'; } | '+' { $$ = '+'; } | '?' { $$ = '?'; } ; primary : TOKEN_REGEXP | TOKEN_ID { symtab_t::iterator i = context.symtab.find(*$1); if (i == context.symtab.end()) { fatal_l(context.input.get_cline(), "undefined symbol '%s'", $1->c_str()); } $$ = i->second; if (ast_need_wrap($$)) { $$ = ast_ref($$, *$1); } delete $1; } | '(' expr ')' { $$ = ast_cap($2); }; %% extern "C" { void yyerror(context_t &context, const char* s) { fatal_l(context.input.get_cline(), "%s", s); } int yylex(context_t &context) { return context.input.scan(&context.opts.glob); } } // extern "C" namespace re2c { void parse(Scanner &input, specs_t &specs, symtab_t &symtab, Opt &opts) { context_t context = {input, specs, symtab, opts}; yyparse(context); } } // namespace re2c re2c-1.0.1/src/ast/ast.cc0000644000175000017500000000525613142624070011750 00000000000000#include #include "src/ast/ast.h" #include "src/util/free_list.h" namespace re2c { free_list AST::flist; const uint32_t AST::MANY = std::numeric_limits::max(); AST::AST(uint32_t l, uint32_t c, type_t t) : type(t), line(l), column(c) { flist.insert(this); } AST::~AST() { flist.erase(this); if (type == TAG) { delete tag.name; } else if (type == REF) { delete ref.name; } else if (type == STR) { delete str.chars; } else if (type == CLS) { delete cls.ranges; } } const AST *ast_nil(uint32_t l, uint32_t c) { return new AST(l, c, AST::NIL); } const AST *ast_str(uint32_t l, uint32_t c, std::vector *chars, bool icase) { AST *ast = new AST(l, c, AST::STR); ast->str.chars = chars; ast->str.icase = icase; return ast; } const AST *ast_cls(uint32_t l, uint32_t c, std::vector *ranges, bool negated) { AST *ast = new AST(l, c, AST::CLS); ast->cls.ranges = ranges; ast->cls.negated = negated; return ast; } const AST *ast_dot(uint32_t l, uint32_t c) { return new AST(l, c, AST::DOT); } const AST *ast_default(uint32_t l, uint32_t c) { return new AST(l, c, AST::DEFAULT); } const AST *ast_alt(const AST *a1, const AST *a2) { if (!a1) return a2; if (!a2) return a1; AST *ast = new AST(a1->line, a1->column, AST::ALT); ast->alt.ast1 = a1; ast->alt.ast2 = a2; return ast; } const AST *ast_cat(const AST *a1, const AST *a2) { if (!a1) return a2; if (!a2) return a1; AST *ast = new AST(a1->line, a1->column, AST::CAT); ast->cat.ast1 = a1; ast->cat.ast2 = a2; return ast; } const AST *ast_iter(const AST *a, uint32_t n, uint32_t m) { AST *ast = new AST(a->line, a->column, AST::ITER); ast->iter.ast = a; ast->iter.min = n; ast->iter.max = m; return ast; } const AST *ast_diff(const AST *a1, const AST *a2) { AST *ast = new AST(a1->line, a1->column, AST::DIFF); ast->cat.ast1 = a1; ast->cat.ast2 = a2; return ast; } const AST *ast_tag(uint32_t l, uint32_t c, const std::string *n, bool h) { AST *ast = new AST(l, c, AST::TAG); ast->tag.name = n; ast->tag.history = h; return ast; } const AST *ast_cap(const AST *a) { AST *ast = new AST(a->line, a->column, AST::CAP); ast->cap = a; return ast; } const AST *ast_ref(const AST *a, const std::string &n) { AST *ast = new AST(a->line, a->column, AST::REF); ast->ref.ast = a; ast->ref.name = new std::string(n); return ast; } bool ast_need_wrap(const AST *a) { switch (a->type) { case AST::ITER: case AST::NIL: case AST::STR: case AST::CLS: case AST::DOT: case AST::DEFAULT: case AST::TAG: case AST::CAP: return false; case AST::ALT: case AST::CAT: case AST::DIFF: case AST::REF: return true; } return false; /* unreachable */ } } // namespace re2c re2c-1.0.1/src/ast/normalize.cc0000644000175000017500000000227213142624070013154 00000000000000#include #include #include "src/ast/ast.h" #include "src/re/rule.h" namespace re2c { void normalize_ast(specs_t &specs) { specs_t::iterator i, b = specs.begin(), e = specs.end(); // merge <*> rules and setup to all conditions except "0" // star rules must have lower priority than normal rules for (i = b; i != e && i->name != "*"; ++i); if (i != e) { const specs_t::iterator star = i; for (i = b; i != e; ++i) { if (i == star || i->name == "0") continue; i->rules.insert(i->rules.end(), star->rules.begin(), star->rules.end()); i->defs.insert(i->defs.end(), star->defs.begin(), star->defs.end()); i->setup.insert(i->setup.end(), star->setup.begin(), star->setup.end()); } specs.erase(star); e = specs.end(); } // merge default rule with the lowest priority for (i = b; i != e; ++i) { if (!i->defs.empty()) { const Code *c = i->defs[0]; const AST *r = ast_default(c->fline, 0); i->rules.push_back(ASTRule(r, c)); } } // "0" condition must be the first one for (i = b; i != e && i->name != "0"; ++i); if (i != e && i != b) { const spec_t zero = *i; specs.erase(i); specs.insert(specs.begin(), zero); } } } // namespace re2c re2c-1.0.1/src/ast/scanner.cc0000644000175000017500000000333613142624676012623 00000000000000#include #include #include "src/ast/scanner.h" #include "src/conf/msg.h" // used by Scanner::fatal_at and Scanner::fatalf #if defined(_MSC_VER) && !defined(vsnprintf) # define vsnprintf _vsnprintf #endif namespace re2c { class Warn; const uint32_t Scanner::BSIZE = 8192; ScannerState::ScannerState () : tok (NULL) , ptr (NULL) , cur (NULL) , mar (NULL) , pos (NULL) , ctx (NULL) , bot (NULL) , lim (NULL) , top (NULL) , eof (NULL) , tchar (0) , cline (1) , lexer_state (LEX_NORMAL) {} Scanner::Scanner(Input &i, Warn &w) : ScannerState(), in(i), warn(w) {} void Scanner::fill (uint32_t need) { if(!eof) { /* Get rid of everything that was already parsed. */ const ptrdiff_t diff = tok - bot; if (diff > 0) { const size_t move = static_cast (top - tok); memmove (bot, tok, move); tok -= diff; mar -= diff; ptr -= diff; cur -= diff; pos -= diff; lim -= diff; ctx -= diff; } /* Increase buffer size. */ if (BSIZE > need) { need = BSIZE; } if (static_cast (top - lim) < need) { const size_t copy = static_cast (lim - bot); char * buf = new char[copy + need]; if (!buf) { fatal("Out of memory"); } if (copy > 0) { memcpy (buf, bot, copy); } tok = &buf[tok - bot]; mar = &buf[mar - bot]; ptr = &buf[ptr - bot]; cur = &buf[cur - bot]; pos = &buf[pos - bot]; lim = &buf[lim - bot]; top = &lim[need]; ctx = &buf[ctx - bot]; delete [] bot; bot = buf; } /* Append to buffer. */ const size_t have = fread (lim, 1, need, in.file); if (have != need) { eof = &lim[have]; *eof++ = '\0'; } lim += have; } } Scanner::~Scanner() { delete [] bot; } } // namespace re2c re2c-1.0.1/src/ast/parser.h0000644000175000017500000000075413142624643012323 00000000000000#ifndef _RE2C_AST_PARSER_ #define _RE2C_AST_PARSER_ #include #include #include "src/ast/ast.h" #include "src/ast/scanner.h" #include "src/conf/msg.h" #include "src/conf/opt.h" namespace re2c { class Scanner; struct Opt; typedef std::set CondList; struct context_t { Scanner &input; specs_t &specs; symtab_t &symtab; Opt &opts; }; void parse(Scanner &input, specs_t &specs, symtab_t &symtab, Opt &opts); } // namespace re2c #endif // _RE2C_AST_PARSER_ re2c-1.0.1/src/test/0000755000175000017500000000000013143420715011113 500000000000000re2c-1.0.1/src/test/s_to_n32_unsafe/0000755000175000017500000000000013143420715014102 500000000000000re2c-1.0.1/src/test/s_to_n32_unsafe/test.cc0000644000175000017500000000415613063315631015317 00000000000000#include #include #include "src/util/s_to_n32_unsafe.h" namespace re2c_test { static const uint32_t DIGITS = 256; // writes string backwards and returns pointer to the start // no terminating null as we don't need it static char * u64_to_s_fastest_ever (uint64_t u, char * s) { while (u > 0) { const uint64_t d = u % 10 + '0'; *--s = static_cast (d); u /= 10; } return s; } static int32_t test_u (uint64_t i) { char s [DIGITS]; char * const s_end = s + DIGITS; char * const s_start = u64_to_s_fastest_ever (i, s_end); uint32_t u = i == 0; // not equal to i if (s_to_u32_unsafe (s_start, s_end, u) && u != i) { fprintf (stderr, "unsigned: expected: %lu, got: %u\n", i, u); return 1; } return 0; } static int32_t test_i (int64_t i) { char s [DIGITS]; char * const s_end = s + DIGITS; const uint64_t i_abs = i < 0 ? static_cast (-i) : static_cast (i); char * s_start = u64_to_s_fastest_ever (i_abs, s_end); if (i < 0) { *--s_start = '-'; } int32_t j = i == 0; // not equal to i if (s_to_i32_unsafe (s_start, s_end, j) && j != i) { fprintf (stderr, "signed: expected: %ld, got: %d\n", i, j); return 1; } return 0; } static int32_t test () { int32_t ok = 0; static const uint64_t UDELTA = 0xFFFF; // zero neighbourhood for (uint64_t i = 0; i <= UDELTA; ++i) { ok |= test_u (i); } // u32_max neighbourhood static const uint64_t u32_max = std::numeric_limits::max(); for (uint64_t i = u32_max - UDELTA; i <= u32_max + UDELTA; ++i) { ok |= test_u (i); } static const int64_t IDELTA = 0xFFFF; // i32_min neighbourhood static const int64_t i32_min = std::numeric_limits::min(); for (int64_t i = i32_min - IDELTA; i <= i32_min + IDELTA; ++i) { ok |= test_i (i); } // zero neighbourhood for (int64_t i = -IDELTA; i <= IDELTA; ++i) { ok |= test_i (i); } // i32_max neighbourhood static const int64_t i32_max = std::numeric_limits::max(); for (int64_t i = i32_max - IDELTA; i <= i32_max + IDELTA; ++i) { ok |= test_i (i); } return ok; } } // namespace re2c_test int main () { return re2c_test::test (); } re2c-1.0.1/src/test/range/0000755000175000017500000000000013143420715012207 500000000000000re2c-1.0.1/src/test/range/test.cc0000644000175000017500000000314313140446270013417 00000000000000#include #include "src/test/range/test.h" #include "src/test/range/test-impl.h" namespace re2c_test { static bool equal (const re2c::Range * r1, const re2c::Range * r2) { for (; r1 && r2; r1 = r1->next (), r2 = r2->next ()) { if (r1->lower () != r2->lower () || r1->upper () != r2->upper ()) { return false; } } return !r1 && !r2; } static void show (const re2c::Range * r) { if (!r) { fprintf (stderr, "[]"); } for (; r; r = r->next ()) { const uint32_t l = r->lower (); const uint32_t u = r->upper () - 1; if (l < u) { fprintf (stderr, "[%X-%X]", l, u); } else { fprintf (stderr, "[%X]", l); } } } static int32_t diff ( const re2c::Range * r1 , const re2c::Range * r2 , const re2c::Range * op1 , const re2c::Range * op2 , const char * op) { if (equal (op1, op2)) { return 0; } else { fprintf (stderr, "%s error: ", op); show (r1); fprintf (stderr, " %s ", op); show (r2); fprintf (stderr, " ====> "); show (op2); fprintf (stderr, " =/= "); show (op1); fprintf (stderr, "\n"); return 1; } } static int32_t test () { int32_t ok = 0; static const uint32_t BITS = 8; static const uint32_t N = 1u << BITS; for (uint32_t i = 0; i <= N; ++i) { for (uint32_t j = 0; j <= N; ++j) { re2c::Range * r1 = range (i); re2c::Range * r2 = range (j); ok |= diff (r1, r2, add (i, j), re2c::Range::add (r1, r2), "U"); ok |= diff (r1, r2, sub (i, j), re2c::Range::sub (r1, r2), "D"); re2c::Range::vFreeList.clear (); } } return ok; } } // namespace re2c_test int main () { return re2c_test::test (); } re2c-1.0.1/src/test/range/test.h0000644000175000017500000000147013063315631013262 00000000000000#ifndef _RE2C_TEST_RANGE_TEST_ #define _RE2C_TEST_RANGE_TEST_ #include "src/util/c99_stdint.h" namespace re2c { class Range; } namespace re2c_test { /* * If encoding has N code units (characters), character class can be * represented as an N-bit integer: k-th bit is set iff k-th character * belongs to the class. * * Addition and subtraction can be implemented trivially for such * integer representation of character classes: addition is simply * bitwise OR of two classes, subtraction is bitwise AND of the first * class and negated second class. */ template re2c::Range * range (uint32_t n); template re2c::Range * add (uint32_t n1, uint32_t n2); template re2c::Range * sub (uint32_t n1, uint32_t n2); } // namespace re2c_test #endif // _RE2C_TEST_RANGE_TEST_ re2c-1.0.1/src/test/range/test-impl.h0000644000175000017500000000170013063315631014215 00000000000000#ifndef _RE2C_TEST_RANGE_TEST_IMPL_ #define _RE2C_TEST_RANGE_TEST_IMPL_ #include "src/test/range/test.h" #include "src/util/range.h" #include "src/util/static_assert.h" namespace re2c_test { static inline bool bit_set (uint32_t n, uint32_t bit) { return n & (1u << bit); } template re2c::Range * range (uint32_t n) { RE2C_STATIC_ASSERT (BITS <= 31); re2c::Range * r = NULL; re2c::Range ** p = &r; for (uint32_t i = 0; i < BITS; ++i) { for (; i < BITS && !bit_set (n, i); ++i); if (i == BITS && !bit_set (n, BITS - 1)) { break; } const uint32_t lb = i; for (; i < BITS && bit_set (n, i); ++i); re2c::Range::append (p, lb, i); } return r; } template re2c::Range * add (uint32_t n1, uint32_t n2) { return range (n1 | n2); } template re2c::Range * sub (uint32_t n1, uint32_t n2) { return range (n1 & ~n2); } } // namespace re2c_test #endif // _RE2C_TEST_RANGE_TEST_IMPL_ re2c-1.0.1/src/main.cc0000644000175000017500000000131513142624070011306 00000000000000#include "src/ast/input.h" #include "src/ast/scanner.h" #include "src/code/output.h" #include "src/compile.h" #include "src/conf/msg.h" #include "src/conf/opt.h" #include "src/conf/warn.h" using namespace re2c; int main(int, char *argv[]) { conopt_t globopts; Opt opts(globopts); Warn warn; switch (parse_opts(argv, globopts, opts, warn)) { case OK: break; case EXIT_OK: return 0; case EXIT_FAIL: return 1; } re2c::Input input(opts.source_file); if (!input.open()) { error("cannot open source file: %s", opts.source_file); return 1; } Scanner scanner(input, warn); Output output(warn); compile(scanner, output, opts); if (!output.emit()) return 1; return warn.error() ? 1 : 0; } re2c-1.0.1/src/util/0000755000175000017500000000000013143420715011111 500000000000000re2c-1.0.1/src/util/slab_allocator.h0000644000175000017500000000322313137622746014176 00000000000000#ifndef _RE2C_UTIL_SLAB_ALLOCATOR_ #define _RE2C_UTIL_SLAB_ALLOCATOR_ #include "src/util/c99_stdint.h" #include // std::for_each #include // malloc, free #include // slab queue #include "src/util/forbid_copy.h" /* * Works nice for tiny POD objects (~30 bytes and lower) * WARNING: Does not free memory for distinct objects! * * Works ~20 times faster, than linux's glibc allocator :] */ template class slab_allocator_t { typedef std::vector slabs_t; slabs_t slabs_; /* quasilist of allocated slabs of 'SLAB_SIZE' bytes */ char *current_slab_; char *current_slab_end_; public: slab_allocator_t(): slabs_(), current_slab_(0), current_slab_end_(0) {} ~slab_allocator_t() { std::for_each(slabs_.rbegin(), slabs_.rend(), free); } void *alloc(size_t size) { char *result; /* alignment */ size += ALIGN - size % ALIGN; /* very large objects */ if (size > MAXIMUM_INLINE) { result = static_cast(malloc(size)); slabs_.push_back(result); return result; } /* no space in slab */ const size_t yet_in_slab = static_cast(current_slab_end_ - current_slab_); if (yet_in_slab < size) { current_slab_ = static_cast(malloc(SLAB_SIZE)); current_slab_end_ = current_slab_ + SLAB_SIZE; slabs_.push_back(current_slab_); } result = current_slab_; current_slab_ += size; return result; } template inline data_t *alloct(size_t n) { return static_cast(alloc(n * sizeof(data_t))); } FORBID_COPY(slab_allocator_t); }; #endif // _RE2C_UTIL_SLAB_ALLOCATOR_ re2c-1.0.1/src/util/hash32.h0000644000175000017500000000062213140434176012275 00000000000000#ifndef _RE2C_UTIL_HASH32_ #define _RE2C_UTIL_HASH32_ #include #include "src/util/c99_stdint.h" namespace re2c { inline uint32_t hash32(uint32_t h, const void *data, size_t size) { const uint8_t *bytes = static_cast(data); for (size_t i = 0; i < size; ++i) { h = h ^ ((h << 5) + (h >> 2) + bytes[i]); } return h; } } // namespace re2c #endif // _RE2C_UTIL_HASH32_ re2c-1.0.1/src/util/string_utils.h0000644000175000017500000000117113137447264013743 00000000000000#ifndef _RE2C_UTIL_STRING_UTILS_ #define _RE2C_UTIL_STRING_UTILS_ #include #include namespace re2c { template void strrreplace( std::string &s, const std::string &s1, const type_t &v) { std::ostringstream sv; sv << v; const std::string &s2 = sv.str(); const size_t l = s1.length(); if (l != 0) { std::string::size_type pos; while ((pos = s.find(s1)) != std::string::npos) { s.replace(pos, l, s2); } } } template static std::string to_string(const T &v) { std::ostringstream s; s << v; return s.str(); } } // namespace re2c #endif // _RE2C_UTIL_STRING_UTILS_ re2c-1.0.1/src/util/free_list.h0000644000175000017500000000145513063315631013164 00000000000000#ifndef _RE2C_UTIL_FREE_LIST_ #define _RE2C_UTIL_FREE_LIST_ #include namespace re2c { template class free_list: protected std::set<_Ty> { public: typedef typename std::set<_Ty>::iterator iterator; typedef typename std::set<_Ty>::size_type size_type; typedef typename std::set<_Ty>::key_type key_type; free_list(): in_clear(false) { } using std::set<_Ty>::insert; size_type erase(const key_type& key) { if (!in_clear) { return std::set<_Ty>::erase(key); } return 0; } void clear() { in_clear = true; for(iterator it = this->begin(); it != this->end(); ++it) { delete *it; } std::set<_Ty>::clear(); in_clear = false; } ~free_list() { clear(); } protected: bool in_clear; }; } // end namespace re2c #endif // _RE2C_UTIL_FREE_LIST_ re2c-1.0.1/src/util/smart_ptr.h0000644000175000017500000000161213063315631013216 00000000000000#ifndef _RE2C_UTIL_SMART_PTR_ #define _RE2C_UTIL_SMART_PTR_ namespace re2c { template class smart_ptr { private: T* ptr; long* count; // shared number of owners public: explicit smart_ptr (T* p=0) : ptr(p), count(new long(1)) {} smart_ptr (const smart_ptr& p) throw() : ptr(p.ptr), count(p.count) { ++*count; } ~smart_ptr () { dispose(); } smart_ptr& operator= (const smart_ptr& p) { if (this != &p) { dispose(); ptr = p.ptr; count = p.count; ++*count; } return *this; } T& operator*() const { return *ptr; } T* operator->() const { return ptr; } private: void dispose() { if (--*count == 0) { delete count; delete ptr; } } }; template smart_ptr make_smart_ptr(T* p) { return smart_ptr(p); } } #endif // _RE2C_UTIL_SMART_PTR_ re2c-1.0.1/src/util/local_increment.h0000644000175000017500000000054313063315631014343 00000000000000#ifndef _RE2C_UTIL_LOCAL_INCREMENT_ #define _RE2C_UTIL_LOCAL_INCREMENT_ namespace re2c { template struct local_increment_t { counter_t & counter; inline explicit local_increment_t (counter_t & c) : counter (++c) {} inline ~local_increment_t () { --counter; } }; } // namespace re2c #endif // _RE2C_UTIL_LOCAL_INCREMENT_ re2c-1.0.1/src/util/wrap_iter.h0000644000175000017500000000114113140435617013177 00000000000000#ifndef _RE2C_UTIL_WRAP_ITER_ #define _RE2C_UTIL_WRAP_ITER_ namespace re2c { // immutable containter template class wrap_citer_t { typedef typename container_t::const_iterator citer_t; typedef const typename container_t::value_type* cpval_t; const citer_t beg; const citer_t end; citer_t cur; public: explicit wrap_citer_t(const container_t &c): beg(c.begin()), end(c.end()), cur(beg) {} wrap_citer_t& operator++() { if (++cur == end) cur = beg; return *this; } cpval_t operator->() const { return cur.operator->(); } }; } // namespace re2c #endif // _RE2C_UTIL_WRAP_ITER_ re2c-1.0.1/src/util/range.cc0000644000175000017500000000304013063315631012432 00000000000000#include "src/util/range.h" namespace re2c { free_list Range::vFreeList; void Range::append_overlapping (Range * & head, Range * & tail, const Range * r) { if (!head) { head = Range::ran (r->lb, r->ub); tail = head; } else if (tail->ub < r->lb) { tail->nx = Range::ran (r->lb, r->ub); tail = tail->nx; } else if (tail->ub < r->ub) { tail->ub = r->ub; } } Range * Range::add (const Range * r1, const Range * r2) { Range * head = NULL; Range * tail = NULL; for (; r1 && r2;) { if (r1->lb < r2->lb) { append_overlapping (head, tail, r1); r1 = r1->nx; } else { append_overlapping (head, tail, r2); r2 = r2->nx; } } for (; r1; r1 = r1->nx) { append_overlapping (head, tail, r1); } for (; r2; r2 = r2->nx) { append_overlapping (head, tail, r2); } return head; } void Range::append (Range ** & ptail, uint32_t l, uint32_t u) { Range * & tail = * ptail; tail = Range::ran (l, u); ptail = &tail->nx; } Range * Range::sub (const Range * r1, const Range * r2) { Range * head = NULL; Range ** ptail = &head; while (r1) { if (!r2 || r2->lb >= r1->ub) { append (ptail, r1->lb, r1->ub); r1 = r1->nx; } else if (r2->ub <= r1->lb) { r2 = r2->nx; } else { if (r1->lb < r2->lb) { append (ptail, r1->lb, r2->lb); } while (r2 && r2->ub < r1->ub) { const uint32_t lb = r2->ub; r2 = r2->nx; const uint32_t ub = r2 && r2->lb < r1->ub ? r2->lb : r1->ub; append (ptail, lb, ub); } r1 = r1->nx; } } return head; } } // namespace re2c re2c-1.0.1/src/util/allocate.h0000644000175000017500000000067213063315631012774 00000000000000#ifndef _RE2C_UTIL_ALLOCATE_ #define _RE2C_UTIL_ALLOCATE_ #include // size_t namespace re2c { // useful fof allocation of arrays of POD objects // 'new []' invokes default constructor for each object // this can be unacceptable for performance reasons template T * allocate (size_t n) { void * p = operator new (n * sizeof (T)); return static_cast (p); } } // namespace re2c #endif // _RE2C_UTIL_ALLOCATE_ re2c-1.0.1/src/util/u32lim.h0000644000175000017500000000312013140436265012315 00000000000000#ifndef _RE2C_UTIL_U32LIM_ #define _RE2C_UTIL_U32LIM_ #include "src/util/c99_stdint.h" // uint32_t truncated to LIMIT // any overflow (either result of a binary operation // or conversion from another type) results in LIMIT // LIMIT is a fixpoint template class u32lim_t { uint32_t value; explicit u32lim_t (uint32_t x) : value (x < LIMIT ? x : LIMIT) {} explicit u32lim_t (uint64_t x) : value (x < LIMIT ? static_cast (x) : LIMIT) {} public: // implicit conversion is forbidden, because // operands should be converted before operation: // uint32_t x, y; ... u32lim_t z = x + y; // will result in 32-bit addition and may overflow // Don't export overloaded constructors: it breaks OS X builds // ('size_t' causes resolution ambiguity) static u32lim_t from32 (uint32_t x) { return u32lim_t(x); } static u32lim_t from64 (uint64_t x) { return u32lim_t(x); } static u32lim_t limit () { return u32lim_t (LIMIT); } uint32_t uint32 () const { return value; } bool overflow () const { return value == LIMIT; } friend u32lim_t operator + (u32lim_t x, u32lim_t y) { const uint64_t z = static_cast (x.value) + static_cast (y.value); return z < LIMIT ? u32lim_t (z) : u32lim_t (LIMIT); } friend u32lim_t operator * (u32lim_t x, u32lim_t y) { const uint64_t z = static_cast (x.value) * static_cast (y.value); return z < LIMIT ? u32lim_t (z) : u32lim_t (LIMIT); } friend bool operator < (u32lim_t x, u32lim_t y) { return x.value < y.value; } }; #endif // _RE2C_UTIL_U32LIM_ re2c-1.0.1/src/util/uniq_vector.h0000644000175000017500000000130013063315631013533 00000000000000#ifndef _RE2C_UTIL_UNIQ_VECTOR_ #define _RE2C_UTIL_UNIQ_VECTOR_ #include namespace re2c { // wrapper over std::vector // O(n) lookup // O(n) insertion template class uniq_vector_t { typedef std::vector elems_t; elems_t elems; public: uniq_vector_t () : elems () {} size_t size () const { return elems.size (); } const value_t & operator [] (size_t i) const { return elems[i]; } size_t find_or_add (const value_t & v) { const size_t size = elems.size (); for (size_t i = 0; i < size; ++i) { if (elems[i] == v) { return i; } } elems.push_back (v); return size; } }; } // namespace re2c #endif // _RE2C_UTIL_UNIQ_VECTOR_ re2c-1.0.1/src/util/c99_stdint.h0000644000175000017500000001773713063315631013213 00000000000000#ifndef _RE2C_UTIL_C99_STDINT_ #define _RE2C_UTIL_C99_STDINT_ #include "config.h" #if HAVE_STDINT_H # include #else // HAVE_STDINT_H // A humble attempt to provide C99 compliant // for environments that don't have it (e.g., MSVC 2003). // // First, we try to define exact-width integer types. We don't // rely on any particular environment: instead, we search for // a type of certain width in the following list: // char (C89) // short (C89) // int (C89) // long (C89) // long long (C99) // __int64 (MSVC-specific) // (we consider even insane possibilities for simplicity). // The size of each type is defined by autoconf in the form // of a macro SIZEOF_ (set to 0 for nonexistent types). // If we don't find a type with the required width, we don't // define the corresponding exact-width C99 type at all. // // We define other types and constants based on exact-width // types and C99 standard. // // We use SIZEOF_VOID_P to determine size of pointers. // // We use SIZEOF_0 to find suitable 64-bit integer // constant suffix. // C99-7.18.1.1 Exact-width integer types // int8_t, uint8_t #if SIZEOF_CHAR == 1 typedef signed char int8_t; typedef unsigned char uint8_t; #elif SIZEOF_SHORT == 1 typedef signed short int8_t; typedef unsigned short uint8_t; #elif SIZEOF_INT == 1 typedef signed int int8_t; typedef unsigned int uint8_t; #elif SIZEOF_LONG == 1 typedef signed long int8_t; typedef unsigned long uint8_t; #elif SIZEOF_LONG_LONG == 1 typedef signed long long int8_t; typedef unsigned long long uint8_t; #elif SIZEOF___INT64 == 1 typedef signed __int64 int8_t; typedef unsigned __int64 uint8_t; #endif // int16_t, uint16_t #if SIZEOF_CHAR == 2 typedef signed char int16_t; typedef unsigned char uint16_t; #elif SIZEOF_SHORT == 2 typedef signed short int16_t; typedef unsigned short uint16_t; #elif SIZEOF_INT == 2 typedef signed int int16_t; typedef unsigned int uint16_t; #elif SIZEOF_LONG == 2 typedef signed long int16_t; typedef unsigned long uint16_t; #elif SIZEOF_LONG_LONG == 2 typedef signed long long int16_t; typedef unsigned long long uint16_t; #elif SIZEOF___INT64 == 2 typedef signed __int64 int16_t; typedef unsigned __int64 uint16_t; #endif // int32_t, uint32_t #if SIZEOF_CHAR == 4 typedef signed char int32_t; typedef unsigned char uint32_t; #elif SIZEOF_SHORT == 4 typedef signed short int32_t; typedef unsigned short uint32_t; #elif SIZEOF_INT == 4 typedef signed int int32_t; typedef unsigned int uint32_t; #elif SIZEOF_LONG == 4 typedef signed long int32_t; typedef unsigned long uint32_t; #elif SIZEOF_LONG_LONG == 4 typedef signed long long int32_t; typedef unsigned long long uint32_t; #elif SIZEOF___INT64 == 4 typedef signed __int64 int32_t; typedef unsigned __int64 uint32_t; #endif // int64_t, uint64_t #if SIZEOF_CHAR == 8 typedef signed char int64_t; typedef unsigned char uint64_t; #elif SIZEOF_SHORT == 8 typedef signed short int64_t; typedef unsigned short uint64_t; #elif SIZEOF_INT == 8 typedef signed int int64_t; typedef unsigned int uint64_t; #elif SIZEOF_LONG == 8 typedef signed long int64_t; typedef unsigned long uint64_t; #elif SIZEOF_LONG_LONG == 8 typedef signed long long int64_t; typedef unsigned long long uint64_t; #elif SIZEOF___INT64 == 8 typedef signed __int64 int64_t; typedef unsigned __int64 uint64_t; #endif // C99-7.18.1.2 Minimum-width integer types typedef int8_t int_least8_t; typedef int16_t int_least16_t; typedef int32_t int_least32_t; typedef int64_t int_least64_t; typedef uint8_t uint_least8_t; typedef uint16_t uint_least16_t; typedef uint32_t uint_least32_t; typedef uint64_t uint_least64_t; // C99-7.18.1.3 Fastest minimum-width integer types typedef int8_t int_fast8_t; typedef int16_t int_fast16_t; typedef int32_t int_fast32_t; typedef int64_t int_fast64_t; typedef uint8_t uint_fast8_t; typedef uint16_t uint_fast16_t; typedef uint32_t uint_fast32_t; typedef uint64_t uint_fast64_t; // C99-7.18.1.4 Integer types capable of holding object pointers #if SIZEOF_VOID_P == 8 typedef int64_t intptr_t; typedef uint64_t uintptr_t; #else typedef int intptr_t; typedef unsigned int uintptr_t; #endif // C99-7.18.1.5 Greatest-width integer types typedef int64_t intmax_t; typedef uint64_t uintmax_t; #if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // See footnote 220 at page 257 and footnote 221 at page 259 // C99-7.18.2.1 Limits of exact-width integer types #define INT8_MIN (-128) // -2^(8 - 1) #define INT8_MAX 127 // 2^(8 - 1) - 1 #define INT16_MIN (-32768) // -2^(16 - 1) #define INT16_MAX 32767 // 2^(16 - 1) - 1 #define INT32_MIN (-2147483648) // -2^(32 - 1) #define INT32_MAX 2147483647 // 2^(32 - 1) - 1 #define INT64_MIN (-9223372036854775808) // -2^(64 - 1) #define INT64_MAX 9223372036854775807 // 2^(64 - 1) - 1 #define UINT8_MAX 0xFF // 2^8 - 1 #define UINT16_MAX 0xFFFF // 2^16 - 1 #define UINT32_MAX 0xFFFFffff // 2^32 - 1 #define UINT64_MAX 0xFFFFffffFFFFffff // 2^64 - 1 // C99-7.18.2.2 Limits of minimum-width integer types #define INT_LEAST8_MIN INT8_MIN #define INT_LEAST8_MAX INT8_MAX #define INT_LEAST16_MIN INT16_MIN #define INT_LEAST16_MAX INT16_MAX #define INT_LEAST32_MIN INT32_MIN #define INT_LEAST32_MAX INT32_MAX #define INT_LEAST64_MIN INT64_MIN #define INT_LEAST64_MAX INT64_MAX #define UINT_LEAST8_MAX UINT8_MAX #define UINT_LEAST16_MAX UINT16_MAX #define UINT_LEAST32_MAX UINT32_MAX #define UINT_LEAST64_MAX UINT64_MAX // C99-7.18.2.3 Limits of fastest minimum-width integer types #define INT_FAST8_MIN INT8_MIN #define INT_FAST8_MAX INT8_MAX #define INT_FAST16_MIN INT16_MIN #define INT_FAST16_MAX INT16_MAX #define INT_FAST32_MIN INT32_MIN #define INT_FAST32_MAX INT32_MAX #define INT_FAST64_MIN INT64_MIN #define INT_FAST64_MAX INT64_MAX #define UINT_FAST8_MAX UINT8_MAX #define UINT_FAST16_MAX UINT16_MAX #define UINT_FAST32_MAX UINT32_MAX #define UINT_FAST64_MAX UINT64_MAX // C99-7.18.2.4 Limits of integer types capable of holding object pointers #define INTPTR_MIN (-32767) // -(2^15 - 1) #define INTPTR_MAX 32767 // 2^15 - 1 #define UINTPTR_MAX 0xFFFF // 2^16 - 1 // C99-7.18.2.5 Limits of greatest-width integer types #define INTMAX_MIN (-9223372036854775807) // -(2^63 - 1) #define INTMAX_MAX 9223372036854775807 // 2^63 - 1 #define UINTMAX_MAX 0xFFFFffffFFFFffff // 2^64 - 1 // C99-7.18.3 Limits of other integer types: // "An implementation shall define only the macros // corresponding to those typedef names it actually // provides" // and footnote 222 at page 259: // "A freestanding implementation need not provide // all of these types." // // Since we don't define corresponding types, we don't // define the following limits either: // PTRDIFF_MIN // PTRDIFF_MAX // SIG_ATOMIC_MIN // SIG_ATOMIC_MAX // SIZE_MAX // WCHAR_MIN // WCHAR_MAX // WINT_MIN // WINT_MAX #endif // __STDC_LIMIT_MACROS #if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // See footnote 224 at page 260 // C99-7.18.4.1 Macros for minimum-width integer constants #define INT8_C(x) x #define UINT8_C(x) x##u #define INT16_C(x) x #define UINT16_C(x) x##u #define INT32_C(x) x #define UINT32_C(x) x##u #if SIZEOF_0L == 8 # define INT64_C(x) x##l # define UINT64_C(x) x##ul #elif SIZEOF_0LL == 8 # define INT64_C(x) x##ll # define UINT64_C(x) x##ull #elif SIZEOF_0I8 == 8 # define INT64_C(x) x##i8 # define UINT64_C(x) x##ui8 #else # define INT64_C(x) x # define UINT64_C(x) x##u #endif // C99-7.18.4.2 Macros for greatest-width integer constants #define INTMAX_C INT64_C #define UINTMAX_C UINT64_C #endif // __STDC_CONSTANT_MACROS #endif // HAVE_STDINT_H #endif // _RE2C_UTIL_C99_STDINT_ re2c-1.0.1/src/util/static_assert.h0000644000175000017500000000046313063315631014056 00000000000000#ifndef _RE2C_UTIL_STATIC_ASSERT_ #define _RE2C_UTIL_STATIC_ASSERT_ namespace re2c { template struct static_assert_t; template<> struct static_assert_t {}; } // namespace re2c #define RE2C_STATIC_ASSERT(e) \ { re2c::static_assert_t _; (void) _; } #endif // _RE2C_UTIL_STATIC_ASSERT_ re2c-1.0.1/src/util/s_to_n32_unsafe.h0000644000175000017500000000064213142627136014200 00000000000000#ifndef _RE2C_UTIL_S_TO_N32_UNSAFE_ #define _RE2C_UTIL_S_TO_N32_UNSAFE_ #include "src/util/c99_stdint.h" #include "src/util/attribute.h" bool s_to_u32_unsafe (const char * s, const char * s_end, uint32_t & number) RE2C_GXX_ATTRIBUTE ((warn_unused_result)); bool s_to_i32_unsafe (const char * s, const char * s_end, int32_t & number) RE2C_GXX_ATTRIBUTE ((warn_unused_result)); #endif // _RE2C_UTIL_S_TO_N32_UNSAFE_ re2c-1.0.1/src/util/counter.h0000644000175000017500000000050713063315631012664 00000000000000#ifndef _RE2C_UTIL_COUNTER_ #define _RE2C_UTIL_COUNTER_ namespace re2c { template class counter_t { num_t num; public: counter_t () : num () {} num_t next () { num_t n = num; num.inc (); return n; } void reset () { num = num_t (); } }; } // namespace re2c #endif // _RE2C_UTIL_COUNTER_ re2c-1.0.1/src/util/range.h0000644000175000017500000000240413142627123012277 00000000000000#ifndef _RE2C_UTIL_RANGE_ #define _RE2C_UTIL_RANGE_ #include #include // NULL #include "src/util/c99_stdint.h" #include "src/test/range/test.h" #include "src/util/forbid_copy.h" #include "src/util/free_list.h" namespace re2c { class Range { public: static free_list vFreeList; private: Range * nx; // [lb,ub) uint32_t lb; uint32_t ub; public: static Range * sym (uint32_t c) { return new Range (NULL, c, c + 1); } static Range * ran (uint32_t l, uint32_t u) { return new Range (NULL, l, u); } ~Range () { vFreeList.erase (this); } Range * next () const { return nx; } uint32_t lower () const { return lb; } uint32_t upper () const { return ub; } static Range * add (const Range * r1, const Range * r2); static Range * sub (const Range * r1, const Range * r2); private: Range (Range * n, uint32_t l, uint32_t u) : nx (n) , lb (l) , ub (u) { assert (lb < ub); vFreeList.insert (this); } static void append_overlapping (Range * & head, Range * & tail, const Range * r); static void append (Range ** & ptail, uint32_t l, uint32_t u); // test addition and subtraction template friend Range * re2c_test::range (uint32_t n); FORBID_COPY (Range); }; } // namespace re2c #endif // _RE2C_UTIL_RANGE_ re2c-1.0.1/src/util/attribute.h0000644000175000017500000000032013063315631013201 00000000000000#ifndef _RE2C_UTIL_ATTRIBUTE_ #define _RE2C_UTIL_ATTRIBUTE_ #ifdef __GNUC__ # define RE2C_GXX_ATTRIBUTE(x) __attribute__(x) #else # define RE2C_GXX_ATTRIBUTE(x) #endif #endif // _RE2C_UTIL_ATTRIBUTE_ re2c-1.0.1/src/util/forbid_copy.h0000644000175000017500000000044613063315631013506 00000000000000#ifndef _RE2C_UTIL_FORBID_COPY_ #define _RE2C_UTIL_FORBID_COPY_ // must be used at the end of class definition // (since this macro changes scope to private) #define FORBID_COPY(type) \ private: \ type (const type &); \ type & operator = (const type &) #endif // _RE2C_UTIL_FORBID_COPY_ re2c-1.0.1/src/util/s_to_n32_unsafe.cc0000644000175000017500000000174613063315631014340 00000000000000#include #include "src/util/s_to_n32_unsafe.h" // assumes that string matches regexp [0-9]+ // returns false on overflow bool s_to_u32_unsafe (const char * s, const char * s_end, uint32_t & number) { uint64_t u = 0; for (; s != s_end; ++s) { u *= 10; u += static_cast (*s) - 0x30; if (u >= std::numeric_limits::max()) { return false; } } number = static_cast (u); return true; } // assumes that string matches regexp "-"? [0-9]+ // returns false on underflow/overflow bool s_to_i32_unsafe (const char * s, const char * s_end, int32_t & number) { int64_t i = 0; if (*s == '-') { ++s; for (; s != s_end; ++s) { i *= 10; i -= *s - 0x30; if (i < std::numeric_limits::min()) { return false; } } } else { for (; s != s_end; ++s) { i *= 10; i += *s - 0x30; if (i > std::numeric_limits::max()) { return false; } } } number = static_cast (i); return true; } re2c-1.0.1/src/util/lookup.h0000644000175000017500000000547013137447264012534 00000000000000#ifndef _RE2C_UTIL_LOOKUP_ #define _RE2C_UTIL_LOOKUP_ #include "src/util/c99_stdint.h" #include #include #include #include namespace re2c { /* * O(1) random access * O(log(n)) insertion */ template struct lookup_t { static const size_t NIL; private: struct elem_t { size_t next; data_t data; elem_t(size_t n, const data_t &d) : next(n), data(d) {} }; std::vector elems; std::map lookup; public: lookup_t(); size_t size() const; data_t& operator[](size_t idx); const data_t& operator[](size_t idx) const; size_t push(hash_t hash, const data_t &data); template size_t find_with(hash_t hash, const data_t &data, pred_t &pred) const; template size_t find_next_with(size_t prev, const data_t &data, pred_t &pred) const; private: size_t head(hash_t) const; template size_t find(size_t next, const data_t &data, pred_t &pred) const; }; template const size_t lookup_t::NIL = std::numeric_limits::max(); template lookup_t::lookup_t() : elems() , lookup() {} template size_t lookup_t::size() const { return elems.size(); } template data_t& lookup_t::operator[](size_t idx) { return elems[idx].data; } template const data_t& lookup_t::operator[](size_t idx) const { return elems[idx].data; } template size_t lookup_t::head(hash_t h) const { typename std::map::const_iterator x = lookup.find(h); return x == lookup.end() ? NIL : x->second; } template size_t lookup_t::push(hash_t hash, const data_t &data) { const size_t idx = elems.size(); elems.push_back(elem_t(head(hash), data)); lookup[hash] = idx; return idx; } template template size_t lookup_t::find(size_t next, const data_t &data, pred_t &pred) const { for (size_t i = next; i != NIL;) { const elem_t &e = elems[i]; if (pred(e.data, data)) { return i; } i = e.next; } return NIL; } template template size_t lookup_t::find_with(hash_t hash, const data_t &data, pred_t &pred) const { return find(head(hash), data, pred); } template template size_t lookup_t::find_next_with(size_t prev, const data_t &data, pred_t &pred) const { return find(elems[prev].next, data, pred); } } // namespace re2c #endif // _RE2C_UTIL_LOOKUP_ re2c-1.0.1/src/nfa/0000755000175000017500000000000013143420715010700 500000000000000re2c-1.0.1/src/nfa/nfa.h0000644000175000017500000000366313140436026011544 00000000000000#ifndef _RE2C_NFA_NFA_ #define _RE2C_NFA_NFA_ #include #include "src/util/c99_stdint.h" #include #include #include "src/code/input_api.h" #include "src/re/re.h" #include "src/re/rule.h" #include "src/re/tag.h" #include "src/util/forbid_copy.h" namespace re2c { struct clos_t; // Goldberg-Radzik 'shortest path' algorithm enum gor_status_t {GOR_OFFSTACK, GOR_NEWPASS, GOR_TOPSORT}; static const uint32_t NOCLOS = ~0u; struct nfa_state_t { enum type_t {ALT, RAN, TAG, FIN, NIL} type; union { struct { nfa_state_t *out1; nfa_state_t *out2; } alt; struct { nfa_state_t *out; const Range *ran; } ran; struct { nfa_state_t *out; size_t info; bool bottom; } tag; struct { nfa_state_t *out; } nil; }; size_t rule; uint32_t clos; gor_status_t status; void make_alt(size_t r, nfa_state_t *s1, nfa_state_t *s2) { type = ALT; alt.out1 = s1; alt.out2 = s2; rule = r; clos = NOCLOS; status = GOR_OFFSTACK; } void make_ran(size_t r, nfa_state_t *s, const Range *p) { type = RAN; ran.out = s; ran.ran = p; rule = r; clos = NOCLOS; status = GOR_OFFSTACK; } void make_tag(size_t r, nfa_state_t *s, size_t i, bool bottom) { type = TAG; tag.out = s; tag.info = i; tag.bottom = bottom; rule = r; clos = NOCLOS; status = GOR_OFFSTACK; } void make_fin(size_t r) { type = FIN; rule = r; clos = NOCLOS; status = GOR_OFFSTACK; } void make_nil(size_t r, nfa_state_t *s) { type = NIL; nil.out = s; rule = r; clos = NOCLOS; status = GOR_OFFSTACK; } }; struct nfa_t { size_t max_size; size_t size; nfa_state_t *states; std::vector &charset; std::valarray &rules; std::vector &tags; nfa_state_t *root; explicit nfa_t(const RESpec &spec); ~nfa_t(); FORBID_COPY(nfa_t); }; size_t estimate_size(const std::vector &res); void dump_nfa(const nfa_t &nfa); } // namespace re2c #endif // _RE2C_NFA_NFA_ re2c-1.0.1/src/nfa/estimate_size.cc0000644000175000017500000000153313142624070013775 00000000000000 #include #include #include "src/ast/ast.h" #include "src/re/re.h" namespace re2c { static size_t estimate(const RE *re) { switch (re->type) { case RE::NIL: return 0; case RE::SYM: return 1; case RE::TAG: return 1; case RE::ALT: return estimate(re->alt.re1) + estimate(re->alt.re2) + 1; case RE::CAT: return estimate(re->cat.re1) + estimate(re->cat.re2); case RE::ITER: { const size_t iter = estimate(re->iter.re), min = re->iter.min, max = re->iter.max; return max == AST::MANY ? iter * min + 1 : iter * max + (max - min); } } return 0; /* unreachable */ } size_t estimate_size(const std::vector &res) { const size_t nre = res.size(); size_t size = nre - 1; for (size_t i = 0; i < nre; ++i) { size += estimate(res[i]) + 1; } return size; } } // namespace re2c re2c-1.0.1/src/nfa/dump.cc0000644000175000017500000000376513142626406012113 00000000000000#include "src/util/c99_stdint.h" #include #include #include #include "src/nfa/nfa.h" #include "src/re/tag.h" #include "src/util/range.h" namespace re2c { static uint32_t index(const nfa_t &nfa, const nfa_state_t *s) { return static_cast(s - nfa.states); } void dump_nfa(const nfa_t &nfa) { fprintf(stderr, "digraph NFA {\n" " rankdir=LR\n" " node[shape=Mrecord fontname=fixed height=0.2 width=0.2]\n" " edge[arrowhead=vee fontname=fixed label=\" \"]\n\n"); for (uint32_t i = static_cast(nfa.size); i --> 0;) { const nfa_state_t *n = &nfa.states[i]; fprintf(stderr, " n%u [label=\"%u\"]", i, i); if (n->type == nfa_state_t::FIN) { fprintf(stderr, " [fillcolor=gray]"); } fprintf(stderr, "\n"); switch (n->type) { case nfa_state_t::ALT: fprintf(stderr, " n%u -> n%u\n", i, index(nfa, n->alt.out1)); fprintf(stderr, " n%u -> n%u [color=lightgray]\n", i, index(nfa, n->alt.out2)); break; case nfa_state_t::RAN: { fprintf(stderr, " n%u -> n%u [label=\"", i, index(nfa, n->ran.out)); for (const Range *r = n->ran.ran; r; r = r->next()) { const uint32_t l = r->lower(), u = r->upper() - 1; fprintf(stderr, "%u", l); if (u > l) fprintf(stderr, "-%u", u); if (r->next()) fprintf(stderr, ","); } fprintf(stderr, "\"]\n"); break; } case nfa_state_t::TAG: { const Tag &tag = nfa.tags[n->tag.info]; fprintf(stderr, " n%u -> n%u [label=\"/", i, index(nfa, n->tag.out)); if (capture(tag)) { fprintf(stderr, "%u", (uint32_t)tag.ncap); } else if (!trailing(tag)) { fprintf(stderr, "%s", tag.name->c_str()); } if (n->tag.bottom) { fprintf(stderr, "↓"); } else { fprintf(stderr, "↑"); } fprintf(stderr, "\"]\n"); break; } case nfa_state_t::FIN: break; case nfa_state_t::NIL: fprintf(stderr, " n%u -> n%u\n", i, index(nfa, n->nil.out)); break; } } fprintf(stderr, "}\n"); } } // namespace re2c re2c-1.0.1/src/nfa/re_to_nfa.cc0000644000175000017500000000624413142626434013076 00000000000000#include #include "src/util/c99_stdint.h" #include #include "src/ast/ast.h" #include "src/nfa/nfa.h" #include "src/re/re.h" #include "src/re/tag.h" namespace re2c { /* * note [counted repetition and iteration expansion] * * It is more convenient to express zero-or-more iterations in terms of * one-or-more iterations than vice versa, because the expansion 'r+ ::= r r*' * duplicates 'r', while 'r* = r+ | ' allows to avoid duplication. * * Sometimes duplcation is unavoidable, like 'r{n}' for 'n' > 1 and 'r{n,m}' * for 'n' < 'm'. In such cases we duplicate 'r' together with all tags; * this may cause multiple (non-bottom) occurences of the same tag in the NFA. * Determinization must be careful to track multiple occurences of the same * tag while building epsilon-closure (this matters for POSIX disambiguation * strategy). * * We allow tags to apper only once in the original regular expression. * This is not strictly necessary (putting the same tag in non-overlapping * alternative branches may be handy), but it would allow to create very * confusing regexps and the disambiguation strategy would behave strangely. */ static nfa_state_t *re_to_nfa(nfa_t &nfa, size_t nrule, const RE *re, nfa_state_t *t) { nfa_state_t *s = NULL; switch (re->type) { case RE::NIL: s = t; break; case RE::SYM: s = &nfa.states[nfa.size++]; s->make_ran(nrule, t, re->sym); break; case RE::ALT: { nfa_state_t *s1 = re_to_nfa(nfa, nrule, re->alt.re1, t), *s2 = re_to_nfa(nfa, nrule, re->alt.re2, t); s = &nfa.states[nfa.size++]; s->make_alt(nrule, s1, s2); break; } case RE::CAT: s = re_to_nfa(nfa, nrule, re->cat.re2, t); s = re_to_nfa(nfa, nrule, re->cat.re1, s); break; case RE::ITER: { const uint32_t min = re->iter.min, max = re->iter.max; const RE *iter = re->iter.re; // see note [counted repetition and iteration expansion] if (max == AST::MANY) { nfa_state_t *q = &nfa.states[nfa.size++]; s = re_to_nfa(nfa, nrule, iter, q); q->make_alt(nrule, s, t); } else { s = re_to_nfa(nfa, nrule, iter, t); for (uint32_t i = min; i < max; ++i) { nfa_state_t *q = &nfa.states[nfa.size++]; q->make_alt(nrule, s, t); s = re_to_nfa(nfa, nrule, iter, q); } } for (uint32_t i = 1; i < min; ++i) { s = re_to_nfa(nfa, nrule, iter, s); } break; } case RE::TAG: { const Tag &tag = nfa.tags[re->tag.idx]; if (fixed(tag) && !capture(tag)) { s = t; } else { s = &nfa.states[nfa.size++]; s->make_tag(nrule, t, re->tag.idx, re->tag.bottom); } break; } } return s; } nfa_t::nfa_t(const RESpec &spec) : max_size(estimate_size(spec.res)) , size(0) , states(new nfa_state_t[max_size]) , charset(spec.charset) , rules(spec.rules) , tags(spec.tags) , root(NULL) { const size_t nre = spec.res.size(); if (nre == 0) return; for (size_t i = 0; i < nre; ++i) { nfa_state_t *s = &states[size++]; s->make_fin(i); s = re_to_nfa(*this, i, spec.res[i], s); if (root) { nfa_state_t *t = &states[size++]; t->make_alt(i, root, s); root = t; } else { root = s; } } } nfa_t::~nfa_t() { delete[] states; } } // namespace re2c re2c-1.0.1/src/code/0000755000175000017500000000000013143420715011046 500000000000000re2c-1.0.1/src/code/go_construct.cc0000644000175000017500000001745613142625333014025 00000000000000#include #include #include "src/util/c99_stdint.h" #include #include #include #include "src/adfa/action.h" #include "src/adfa/adfa.h" #include "src/code/bitmap.h" #include "src/code/go.h" #include "src/conf/opt.h" #include "src/dfa/tcmd.h" #include "src/util/allocate.h" namespace re2c { static uint32_t unmap (Span * new_span, const Span * old_span, uint32_t old_nspans, const State * x); bool consume(const State *s) { switch (s->action.type) { case Action::RULE: case Action::MOVE: case Action::ACCEPT: return false; case Action::MATCH: case Action::INITIAL: case Action::SAVE: return true; } return true; /* unreachable */ } Cases::Cases(const Span *spans, uint32_t nspans, bool skip) : cases(new Case[nspans]) , cases_size(0) { assert(nspans > 0); // first case is default case Case &c = cases[cases_size++]; const Span *s = spans + (nspans - 1); c.to = s->to; c.tags = s->tags; c.skip = skip && consume(s->to); for (uint32_t i = 0, lb = 0; i < nspans; ++i) { s = spans + i; add(lb, s->ub, s->to, s->tags, skip && consume(s->to)); lb = s->ub; } } void Cases::add(uint32_t lb, uint32_t ub, State *to, tcid_t tags, bool skip) { for (uint32_t i = 0; i < cases_size; ++i) { Case &c = cases[i]; if (c.to == to && c.tags == tags) { c.ranges.push_back(std::make_pair(lb, ub)); return; } } Case &c = cases[cases_size++]; c.ranges.push_back(std::make_pair(lb, ub)); c.to = to; c.tags = tags; c.skip = skip; } Cond::Cond (const std::string & cmp, uint32_t val) : compare (cmp) , value (val) {} Binary::Binary (const Span * s, uint32_t n, const State * next, bool skip) : cond (NULL) , thn (NULL) , els (NULL) { const uint32_t l = n / 2; const uint32_t h = n - l; cond = new Cond ("<=", s[l - 1].ub - 1); thn = new If (l > 4 ? If::BINARY : If::LINEAR, &s[0], l, next, skip); els = new If (h > 4 ? If::BINARY : If::LINEAR, &s[l], h, next, skip); } void Linear::add_branch(const Cond *cond, const State *to, tcid_t tags, bool skip) { Branch &b = branches[nbranches++]; b.cond = cond; b.to = to; b.tags = tags; b.skip = skip; } Linear::Linear(const Span *s, uint32_t n, const State *next, bool skip) : nbranches(0) , branches(new Branch[n]) { for (;;) { if (n == 1 && s[0].to == next) { add_branch(NULL, NULL, s[0].tags, skip && consume(s[0].to)); return; } else if (n == 1) { add_branch(NULL, s[0].to, s[0].tags, skip && consume(s[0].to)); return; } else if (n == 2 && s[0].to == next) { add_branch(new Cond(">=", s[0].ub), s[1].to, s[1].tags, skip && consume(s[1].to)); add_branch(NULL, NULL, s[0].tags, skip && consume(s[0].to)); return; } else if (n == 3 && s[1].to == next && s[1].ub - s[0].ub == 1 && s[2].to == s[0].to && s[2].tags == s[0].tags) { add_branch(new Cond("!=", s[0].ub), s[0].to, s[0].tags, skip && consume(s[0].to)); add_branch(NULL, NULL, s[1].tags, skip && consume(s[1].to)); return; } else if (n >= 3 && s[1].ub - s[0].ub == 1 && s[2].to == s[0].to && s[2].tags == s[0].tags) { add_branch(new Cond("==", s[0].ub), s[1].to, s[1].tags, skip && consume(s[1].to)); n -= 2; s += 2; } else { add_branch(new Cond("<=", s[0].ub - 1), s[0].to, s[0].tags, skip && consume(s[0].to)); n -= 1; s += 1; } } } If::If (type_t t, const Span * sp, uint32_t nsp, const State * next, bool skip) : type (t) , info () { switch (type) { case BINARY: info.binary = new Binary (sp, nsp, next, skip); break; case LINEAR: info.linear = new Linear (sp, nsp, next, skip); break; } } SwitchIf::SwitchIf (const Span * sp, uint32_t nsp, const State * next, bool sflag, bool skip) : type (IF) , info () { if ((!sflag && nsp > 2) || (nsp > 8 && (sp[nsp - 2].ub - sp[0].ub <= 3 * (nsp - 2)))) { type = SWITCH; info.cases = new Cases (sp, nsp, skip); } else if (nsp > 5) { info.ifs = new If (If::BINARY, sp, nsp, next, skip); } else { info.ifs = new If (If::LINEAR, sp, nsp, next, skip); } } GoBitmap::GoBitmap (const Span * span, uint32_t nSpans, const Span * hspan, uint32_t hSpans, const bitmap_t * bm, const State * bm_state, const State * next, bool sflag) : bitmap (bm) , bitmap_state (bm_state) , hgo (NULL) , lgo (NULL) { Span * bspan = allocate (nSpans); uint32_t bSpans = unmap (bspan, span, nSpans, bm_state); lgo = bSpans == 0 ? NULL : new SwitchIf (bspan, bSpans, next, sflag, false); // if there are any low spans, then next state for high spans // must be NULL to trigger explicit goto generation in linear 'if' hgo = hSpans == 0 ? NULL : new SwitchIf (hspan, hSpans, lgo ? NULL : next, sflag, false); operator delete (bspan); } const uint32_t CpgotoTable::TABLE_SIZE = 0x100; CpgotoTable::CpgotoTable (const Span * span, uint32_t nSpans) : table (new const State * [TABLE_SIZE]) { uint32_t c = 0; for (uint32_t i = 0; i < nSpans; ++i) { for(; c < span[i].ub && c < TABLE_SIZE; ++c) { table[c] = span[i].to; } } } Cpgoto::Cpgoto (const Span * span, uint32_t nSpans, const Span * hspan, uint32_t hSpans, const State * next, bool sflag) : hgo (hSpans == 0 ? NULL : new SwitchIf (hspan, hSpans, next, sflag, false)) , table (new CpgotoTable (span, nSpans)) {} Dot::Dot (const Span * sp, uint32_t nsp, const State * s) : from (s) , cases (new Cases (sp, nsp, false)) {} Go::Go () : nSpans (0) , span (NULL) , tags (TCID0) , skip (false) , type (EMPTY) , info () {} void Go::init(const State *from, const opt_t *opts, bitmaps_t &bitmaps) { if (nSpans == 0) { return; } // initialize high (wide) spans uint32_t hSpans = 0; const Span * hspan = NULL; for (uint32_t i = 0; i < nSpans; ++i) { if (span[i].ub > 0x100) { hspan = &span[i]; hSpans = nSpans - i; break; } } bool low_spans_have_tags = false; for (uint32_t i = 0; i < nSpans - hSpans; ++i) { if (span[i].tags != TCID0) { low_spans_have_tags = true; break; } } // initialize bitmaps uint32_t nBitmaps = 0; const bitmap_t *bm = NULL; const State *bms = NULL; for (uint32_t i = 0; i < nSpans; ++i) { const State *s = span[i].to; if (!s->isBase) continue; const bitmap_t *b = bitmaps.find(this, s); if (b) { if (bm == NULL) { bm = b; bms = s; } ++nBitmaps; } } const uint32_t dSpans = nSpans - hSpans - nBitmaps; const bool part_skip = opts->eager_skip && !skip; if (opts->target == TARGET_DOT) { type = DOT; info.dot = new Dot (span, nSpans, from); } else if (opts->gFlag && !part_skip && (dSpans >= opts->cGotoThreshold) && !low_spans_have_tags) { type = CPGOTO; info.cpgoto = new Cpgoto (span, nSpans, hspan, hSpans, from->next, opts->sFlag); } else if (opts->bFlag && !part_skip && (nBitmaps > 0)) { type = BITMAP; info.bitmap = new GoBitmap (span, nSpans, hspan, hSpans, bm, bms, from->next, opts->sFlag); bitmaps.used = true; } else { type = SWITCH_IF; info.switchif = new SwitchIf (span, nSpans, from->next, opts->sFlag, part_skip); } } /* * Find all spans, that map to the given state. For each of them, * find upper adjacent span, that maps to another state (if such * span exists, otherwize try lower one). * If input contains single span that maps to the given state, * then output contains 0 spans. */ uint32_t unmap (Span * new_span, const Span * old_span, uint32_t old_nspans, const State * x) { uint32_t new_nspans = 0; for (uint32_t i = 0; i < old_nspans; ++i) { if (old_span[i].to != x) { if (new_nspans > 0 && new_span[new_nspans - 1].to == old_span[i].to && new_span[new_nspans - 1].tags == old_span[i].tags) new_span[new_nspans - 1].ub = old_span[i].ub; else { new_span[new_nspans].to = old_span[i].to; new_span[new_nspans].ub = old_span[i].ub; new_span[new_nspans].tags = old_span[i].tags; ++new_nspans; } } } if (new_nspans > 0) new_span[new_nspans - 1].ub = old_span[old_nspans - 1].ub; return new_nspans; } } // namespace re2c re2c-1.0.1/src/code/input_api.cc0000644000175000017500000000666413142624070013300 00000000000000#include #include #include "src/code/emit.h" #include "src/code/input_api.h" #include "src/conf/opt.h" namespace re2c { std::string output_expr_peek(const opt_t *opts) { return opts->input_api == INPUT_DEFAULT ? "*" + opts->yycursor : opts->yypeek + " ()"; } std::string output_restore(uint32_t ind, const opt_t *opts) { std::string s = opts->input_api == INPUT_DEFAULT ? opts->yycursor + " = " + opts->yymarker : opts->yyrestore + " ()"; return indent(ind, opts->indString) + s + ";\n"; } std::string output_expr_lessthan(size_t n, const opt_t *opts) { std::ostringstream s; if (opts->input_api == INPUT_CUSTOM) { s << opts->yylessthan << " (" << n << ")"; } else if (n == 1) { s << opts->yylimit << " <= " << opts->yycursor; } else { s << "(" << opts->yylimit << " - " << opts->yycursor << ") < " << n; } return s.str (); } static std::string yych_conv(const opt_t *opts) { return opts->yychConversion ? "(" + opts->yyctype + ")" : ""; } void output_peek(std::ostream &o, uint32_t ind, const opt_t *opts) { o << indent(ind, opts->indString) << opts->yych << " = " << yych_conv(opts); if (opts->input_api == INPUT_CUSTOM) { o << opts->yypeek << " ()"; } else { o << "*" << opts->yycursor; } o << ";\n"; } void output_skip(std::ostream &o, uint32_t ind, const opt_t *opts) { o << indent(ind, opts->indString); if (opts->input_api == INPUT_CUSTOM) { o << opts->yyskip << " ()"; } else { o << "++" << opts->yycursor; } o << ";\n"; } void output_backup(std::ostream &o, uint32_t ind, const opt_t *opts) { o << indent(ind, opts->indString); if (opts->input_api == INPUT_CUSTOM) { o << opts->yybackup << " ()"; } else { o << opts->yymarker << " = " << opts->yycursor; } o << ";\n"; } void output_skip_peek(std::ostream &o, uint32_t ind, const opt_t *opts) { assert(opts->input_api == INPUT_DEFAULT); o << indent(ind, opts->indString) << opts->yych << " = " << yych_conv(opts) << "*++" << opts->yycursor << ";\n"; } void output_peek_skip(std::ostream &o, uint32_t ind, const opt_t *opts) { assert(opts->input_api == INPUT_DEFAULT); o << indent(ind, opts->indString) << opts->yych << " = " << yych_conv(opts) << "*" << opts->yycursor << "++;\n"; } void output_skip_backup(std::ostream &o, uint32_t ind, const opt_t *opts) { assert(opts->input_api == INPUT_DEFAULT); o << indent(ind, opts->indString) << opts->yymarker << " = ++" << opts->yycursor << ";\n"; } void output_backup_skip(std::ostream &o, uint32_t ind, const opt_t *opts) { assert(opts->input_api == INPUT_DEFAULT); o << indent(ind, opts->indString) << opts->yymarker << " = " << opts->yycursor << "++;\n"; } void output_backup_peek(std::ostream &o, uint32_t ind, const opt_t *opts) { assert(opts->input_api == INPUT_DEFAULT); o << indent(ind, opts->indString) << opts->yych << " = " << yych_conv(opts) << "*(" << opts->yymarker << " = " << opts->yycursor << ");\n"; } void output_skip_backup_peek(std::ostream &o, uint32_t ind, const opt_t *opts) { assert(opts->input_api == INPUT_DEFAULT); o << indent(ind, opts->indString) << opts->yych << " = " << yych_conv(opts) << "*(" << opts->yymarker << " = ++" << opts->yycursor << ");\n"; } void output_backup_peek_skip(std::ostream &o, uint32_t ind, const opt_t *opts) { assert(opts->input_api == INPUT_DEFAULT); o << indent(ind, opts->indString) << opts->yych << " = " << yych_conv(opts) << "*(" << opts->yymarker << " = " << opts->yycursor << "++);\n"; } } // end namespace re2c re2c-1.0.1/src/code/print.cc0000644000175000017500000000377613140443651012447 00000000000000#include #include "src/code/print.h" namespace re2c { static bool is_space(uint32_t c) { switch (c) { case '\t': case '\f': case '\v': case '\n': case '\r': case ' ': return true; default: return false; } } static inline char hex(uint32_t c) { static const char * sHex = "0123456789ABCDEF"; return sHex[c & 0x0F]; } static void prtCh(std::ostream& o, uint32_t c, bool dot) { switch (c) { case '\'': o << (dot ? "'" : "\\'"); break; case '"': o << (dot ? "\\\"" : "\""); break; case '\n': o << (dot ? "\\\\n" : "\\n"); break; case '\t': o << (dot ? "\\\\t" : "\\t"); break; case '\v': o << (dot ? "\\\\v" : "\\v"); break; case '\b': o << (dot ? "\\\\b" : "\\b"); break; case '\r': o << (dot ? "\\\\r" : "\\r"); break; case '\f': o << (dot ? "\\\\f" : "\\f"); break; case '\a': o << (dot ? "\\\\a" : "\\a"); break; case '\\': o << "\\\\"; break; // both .dot and C/C++ code expect "\\" default: o << static_cast (c); break; } } bool is_print(uint32_t c) { return c >= 0x20 && c < 0x7F; } void prtHex(std::ostream& o, uint32_t c, uint32_t szcunit) { o << "0x"; if (szcunit >= 4) { o << hex(c >> 28u) << hex(c >> 24u) << hex(c >> 20u) << hex(c >> 16u); } if (szcunit >= 2) { o << hex(c >> 12u) << hex(c >> 8u); } o << hex(c >> 4u) << hex(c); } void prtChOrHex(std::ostream& o, uint32_t c, uint32_t szcunit, bool ebcdic, bool dot) { if (!ebcdic && (is_print(c) || is_space(c))) { o << '\''; prtCh(o, c, dot); o << '\''; } else { prtHex(o, c, szcunit); } } static void prtChOrHexForSpan(std::ostream& o, uint32_t c, uint32_t szcunit, bool ebcdic, bool dot) { if (!ebcdic && c != ']' && is_print(c)) { prtCh(o, c, dot); } else { prtHex(o, c, szcunit); } } void printSpan(std::ostream& o, uint32_t l, uint32_t u, uint32_t szcunit, bool ebcdic, bool dot) { o << "["; prtChOrHexForSpan(o, l, szcunit, ebcdic, dot); if (u - l > 1) { o << "-"; prtChOrHexForSpan(o, u - 1, szcunit, ebcdic, dot); } o << "]"; } } // end namespace re2c re2c-1.0.1/src/code/emit.h0000644000175000017500000000205313140441720012071 00000000000000#ifndef _RE2C_CODE_EMIT_ #define _RE2C_CODE_EMIT_ #include "src/code/output.h" #include "src/adfa/adfa.h" namespace re2c { typedef std::vector code_lines_t; void emit_action(OutputFile &o, uint32_t ind, const DFA &dfa, const State *s, const std::set &used_labels); void gen_goto_plain(OutputFile &o, uint32_t ind, const State *to, const DFA &dfa, tcid_t tcid, bool skip); void gen_goto_case(OutputFile &o, uint32_t ind, const State *to, const DFA &dfa, tcid_t tcid, bool skip); void gen_goto_if(OutputFile &o, uint32_t ind, const State *to, const DFA &dfa, tcid_t tcid, bool skip); void gen_settags(code_lines_t &code, const DFA &dfa, tcid_t tcid, const opt_t *opts); std::string vartag_name(tagver_t ver, const std::string &prefix); std::string vartag_expr(tagver_t ver, const std::string &prefix, const std::string &expression); std::string tagname(const Tag &tag); inline std::string indent(uint32_t n, const std::string &s) { std::string ind; for (; n --> 0; ind += s); return ind; } } // namespace re2c #endif // _RE2C_CODE_EMIT_ re2c-1.0.1/src/code/output.cc0000644000175000017500000004570713143044010012640 00000000000000#include #include #include #include "config.h" #include "src/code/emit.h" #include "src/code/input_api.h" #include "src/code/output.h" #include "src/code/print.h" #include "src/conf/msg.h" #include "src/conf/opt.h" #include "src/conf/warn.h" #include "src/re/encoding/enc.h" #include "src/util/string_utils.h" #include "src/util/uniq_vector.h" namespace re2c { OutputFragment::OutputFragment (type_t t, uint32_t i) : type (t) , stream () , indent (i) {} OutputFragment::~OutputFragment() { if (type == STAGS || type == MTAGS) delete tags; } uint32_t OutputFragment::count_lines () const { uint32_t lines = 0; const std::string content = stream.str (); const char * p = content.c_str (); for (uint32_t i = 0; i < content.size (); ++i) { if (p[i] == '\n') { ++lines; } } return lines; } OutputBlock::OutputBlock () : fragments () , used_yyaccept (false) , line (0) , types () , stags () , mtags () , opts(NULL) { fragments.push_back (new OutputFragment (OutputFragment::CODE, 0)); } OutputBlock::~OutputBlock () { for (unsigned int i = 0; i < fragments.size (); ++i) { delete fragments[i]; } delete opts; } OutputFile::OutputFile(Warn &w) : blocks () , label_counter () , fill_index(0) , state_goto(false) , cond_goto(false) , warn_condition_order(true) , warn(w) {} OutputFile::~OutputFile () { for (unsigned int i = 0; i < blocks.size(); ++i) { delete blocks[i]; } } OutputBlock& OutputFile::block() { return *blocks.back(); } std::ostream & OutputFile::stream () { return block().fragments.back ()->stream; } OutputFile &OutputFile::wraw(const char *s, const char *e) { if (block().opts->target == TARGET_CODE) { insert_code(); // convert CR LF to LF std::ostream &o = stream(); for (const char *p = s;; ++p) { std::streamsize l = p - s; if (p == e) { o.write(s, l); break; } else if (*p == '\n') { if (p > s && p[-1] == '\r') --l; o.write(s, l); s = p; } } } return *this; } OutputFile & OutputFile::wu32_hex (uint32_t n) { insert_code(); prtHex(stream(), n, block().opts->encoding.szCodeUnit()); return *this; } OutputFile & OutputFile::wc_hex (uint32_t n) { insert_code(); const opt_t *opts = block().opts; const Enc &e = opts->encoding; prtChOrHex(stream(), n, e.szCodeUnit(), e.type() == Enc::EBCDIC, opts->target == TARGET_DOT); return *this; } OutputFile & OutputFile::wrange (uint32_t l, uint32_t u) { insert_code(); const opt_t *opts = block().opts; const Enc &e = opts->encoding; printSpan(stream(), l, u, e.szCodeUnit(), e.type() == Enc::EBCDIC, opts->target == TARGET_DOT); return *this; } OutputFile & OutputFile::wu32_width (uint32_t n, int w) { insert_code(); stream () << std::setw (w); stream () << n; return *this; } OutputFile & OutputFile::wline_info (uint32_t l, const char * fn) { insert_code(); output_line_info (stream (), l, fn, block().opts->iFlag); return *this; } OutputFile & OutputFile::wversion_time () { insert_code(); output_version_time(stream(), block().opts->version, !block().opts->bNoGenerationDate); return *this; } OutputFile & OutputFile::wuser_start_label () { insert_code(); const std::string label = block().opts->startlabel; if (!label.empty()) { wstring(label).ws(":\n"); } return *this; } OutputFile & OutputFile::wc (char c) { insert_code(); stream () << c; return *this; } OutputFile & OutputFile::wu32 (uint32_t n) { insert_code(); stream () << n; return *this; } OutputFile & OutputFile::wu64 (uint64_t n) { insert_code(); stream () << n; return *this; } OutputFile & OutputFile::wstring (const std::string & s) { insert_code(); stream () << s; return *this; } OutputFile & OutputFile::ws (const char * s) { insert_code(); stream () << s; return *this; } OutputFile & OutputFile::wlabel (label_t l) { insert_code(); stream () << l; return *this; } OutputFile & OutputFile::wind (uint32_t ind) { insert_code(); stream () << indent(ind, block().opts->indString); return *this; } void OutputFile::insert_code () { if (block().fragments.back()->type != OutputFragment::CODE) { block().fragments.push_back(new OutputFragment(OutputFragment::CODE, 0)); } } OutputFile &OutputFile::wdelay_tags(const ConfTags *cf, bool mtags) { if (block().opts->target == TARGET_CODE) { OutputFragment *frag = new OutputFragment( mtags ? OutputFragment::MTAGS : OutputFragment::STAGS, 0); frag->tags = cf; blocks.back()->fragments.push_back(frag); } return *this; } OutputFile & OutputFile::wdelay_line_info () { block().fragments.push_back (new OutputFragment (OutputFragment::LINE_INFO, 0)); return *this; } OutputFile & OutputFile::wdelay_cond_goto(uint32_t ind) { if (block().opts->cFlag && !cond_goto) { block().fragments.push_back(new OutputFragment(OutputFragment::COND_GOTO, ind)); cond_goto = true; } return *this; } OutputFile & OutputFile::wdelay_cond_table(uint32_t ind) { if (block().opts->gFlag && block().opts->cFlag && !cond_goto) { block().fragments.push_back(new OutputFragment(OutputFragment::COND_TABLE, ind)); } return *this; } OutputFile & OutputFile::wdelay_state_goto (uint32_t ind) { if (block().opts->target == TARGET_CODE && block().opts->fFlag && !state_goto) { block().fragments.push_back (new OutputFragment (OutputFragment::STATE_GOTO, ind)); state_goto = true; } return *this; } OutputFile & OutputFile::wdelay_types () { if (block().opts->target == TARGET_CODE) { warn_condition_order = false; // see note [condition order] block().fragments.push_back (new OutputFragment (OutputFragment::TYPES, 0)); } return *this; } OutputFile & OutputFile::wdelay_yyaccept_init (uint32_t ind) { block().fragments.push_back (new OutputFragment (OutputFragment::YYACCEPT_INIT, ind)); return *this; } OutputFile & OutputFile::wdelay_yymaxfill () { if (block().opts->target == TARGET_CODE) { block().fragments.push_back (new OutputFragment (OutputFragment::YYMAXFILL, 0)); } return *this; } OutputFile& OutputFile::wdelay_yymaxnmatch() { if (block().opts->target == TARGET_CODE && block().opts->posix_captures) { block().fragments.push_back (new OutputFragment (OutputFragment::YYMAXNMATCH, 0)); } return *this; } OutputFile& OutputFile::wdelay_skip(uint32_t ind, bool skip) { if (skip) { OutputFragment *f = new OutputFragment(OutputFragment::SKIP, ind); block().fragments.push_back(f); } return *this; } OutputFile& OutputFile::wdelay_peek(uint32_t ind, bool peek) { if (peek) { OutputFragment *f = new OutputFragment(OutputFragment::PEEK, ind); block().fragments.push_back(f); } return *this; } OutputFile& OutputFile::wdelay_backup(uint32_t ind, bool backup) { if (backup) { OutputFragment *f = new OutputFragment(OutputFragment::BACKUP, ind); block().fragments.push_back(f); } return *this; } void OutputFile::new_block(Opt &opts) { OutputBlock *b = new OutputBlock; b->opts = opts.snapshot(); blocks.push_back(b); // start label hapens to be the only option // that must be reset for each new block opts.reset_startlabel(); } void OutputFile::global_lists(uniq_vector_t &types, std::set &stags, std::set &mtags) const { for (unsigned int i = 0; i < blocks.size(); ++i) { const std::vector &cs = blocks[i]->types; for (size_t j = 0; j < cs.size(); ++j) { types.find_or_add(cs[j]); } const std::set &st = blocks[i]->stags, &mt = blocks[i]->mtags; stags.insert(st.begin(), st.end()); mtags.insert(mt.begin(), mt.end()); } } static void foldexpr(std::vector &frags) { const size_t n = frags.size(); for (size_t i = 0; i < n;) { if (i + 2 < n) { OutputFragment::type_t &x = frags[i]->type, &y = frags[i + 1]->type, &z = frags[i + 2]->type; if (x == OutputFragment::BACKUP && y == OutputFragment::PEEK && z == OutputFragment::SKIP) { x = OutputFragment::BACKUP_PEEK_SKIP; y = z = OutputFragment::EMPTY; i += 3; continue; } else if (x == OutputFragment::SKIP && y == OutputFragment::BACKUP && z == OutputFragment::PEEK) { x = OutputFragment::SKIP_BACKUP_PEEK; y = z = OutputFragment::EMPTY; i += 3; continue; } } if (i + 1 < n) { OutputFragment::type_t &x = frags[i]->type, &y = frags[i + 1]->type; if (x == OutputFragment::PEEK && y == OutputFragment::SKIP) { x = OutputFragment::PEEK_SKIP; y = OutputFragment::EMPTY; i += 2; continue; } else if (x == OutputFragment::SKIP && y == OutputFragment::PEEK) { x = OutputFragment::SKIP_PEEK; y = OutputFragment::EMPTY; i += 2; continue; } else if (x == OutputFragment::SKIP && y == OutputFragment::BACKUP) { x = OutputFragment::SKIP_BACKUP; y = OutputFragment::EMPTY; i += 2; continue; } else if (x == OutputFragment::BACKUP && y == OutputFragment::PEEK) { x = OutputFragment::BACKUP_PEEK; y = OutputFragment::EMPTY; i += 2; continue; } else if (x == OutputFragment::BACKUP && y == OutputFragment::SKIP) { x = OutputFragment::BACKUP_SKIP; y = OutputFragment::EMPTY; i += 2; continue; } } ++i; } } bool OutputFile::emit(const uniq_vector_t &global_types, const std::set &global_stags, const std::set &global_mtags, size_t max_fill, size_t max_nmatch) { FILE *file = NULL; std::string filename = block().opts->output_file; if (filename.empty()) { filename = ""; file = stdout; } else { file = fopen(filename.c_str(), "w"); if (!file) { error("cannot open output file: %s", filename.c_str()); return false; } } unsigned int line_count = 1; for (unsigned int j = 0; j < blocks.size(); ++j) { OutputBlock & b = * blocks[j]; const opt_t *bopt = b.opts; if (bopt->input_api == INPUT_DEFAULT) { foldexpr(b.fragments); } const size_t n = b.fragments.size(); for (size_t i = 0; i < n; ++i) { OutputFragment & f = * b.fragments[i]; std::ostringstream &o = f.stream; const uint32_t ind = f.indent ? f.indent : bopt->topIndent; switch (f.type) { case OutputFragment::EMPTY: case OutputFragment::CODE: break; case OutputFragment::LINE_INFO: output_line_info(o, line_count + 1, filename, bopt->iFlag); break; case OutputFragment::COND_GOTO: output_cond_goto(o, ind, b.types, bopt, warn, warn_condition_order, b.line); break; case OutputFragment::COND_TABLE: output_cond_table(o, ind, b.types, bopt); break; case OutputFragment::STATE_GOTO: output_state_goto(o, ind, 0, fill_index, bopt); break; case OutputFragment::STAGS: output_tags(o, ind, *f.tags, global_stags, bopt); break; case OutputFragment::MTAGS: output_tags(o, ind, *f.tags, global_mtags, bopt); break; case OutputFragment::TYPES: output_types(o, ind, block().opts, global_types); break; case OutputFragment::YYACCEPT_INIT: output_yyaccept_init(o, ind, b.used_yyaccept, bopt); break; case OutputFragment::YYMAXFILL: output_yymaxfill(o, ind, max_fill, bopt); break; case OutputFragment::YYMAXNMATCH: output_yymaxnmatch(o, ind, max_nmatch, bopt); break; case OutputFragment::SKIP: output_skip(o, ind, bopt); break; case OutputFragment::PEEK: output_peek(o, ind, bopt); break; case OutputFragment::BACKUP: output_backup(o, ind, bopt); break; case OutputFragment::PEEK_SKIP: output_peek_skip(o, ind, bopt); break; case OutputFragment::SKIP_PEEK: output_skip_peek(o, ind, bopt); break; case OutputFragment::SKIP_BACKUP: output_skip_backup(o, ind, bopt); break; case OutputFragment::BACKUP_SKIP: output_backup_skip(o, ind, bopt); break; case OutputFragment::BACKUP_PEEK: output_backup_peek(o, ind, bopt); break; case OutputFragment::BACKUP_PEEK_SKIP: output_backup_peek_skip(o, ind, bopt); break; case OutputFragment::SKIP_BACKUP_PEEK: output_skip_backup_peek(o, ind, bopt); break; } std::string content = o.str(); fwrite(content.c_str(), 1, content.size(), file); line_count += f.count_lines(); } } fclose(file); return true; } bool HeaderFile::emit(const opt_t *opts, const uniq_vector_t &types) { const std::string &filename = opts->header_file; if (filename.empty()) return true; FILE *file = fopen(filename.c_str(), "w"); if (!file) { error("cannot open header file: %s", filename.c_str()); return false; } output_version_time(stream, opts->version, !opts->bNoGenerationDate); output_line_info(stream, 3, filename, opts->iFlag); stream << "\n"; output_types(stream, 0, opts, types); std::string content = stream.str(); fwrite(content.c_str(), 1, content.size(), file); fclose(file); return true; } Output::Output(Warn &w) : source(w) , header() , skeletons() , max_fill(1) , max_nmatch(1) {} bool Output::emit() { if (source.warn.error()) { return false; } uniq_vector_t types; std::set stags, mtags; source.global_lists(types, stags, mtags); // global options are last block's options const opt_t *opts = source.block().opts; return source.emit(types, stags, mtags, max_fill, max_nmatch) && header.emit(opts, types); } void output_tags(std::ostream &o, uint32_t ind, const ConfTags &conf, const std::set &tags, const opt_t *opts) { std::set::const_iterator tag = tags.begin(), end = tags.end(); o << indent(ind, opts->indString); for (;tag != end;) { std::string fmt = conf.format; strrreplace(fmt, "@@", *tag); o << fmt; if (++tag == end) { break; } o << conf.separator; } } void output_state_goto(std::ostream & o, uint32_t ind, uint32_t start_label, uint32_t fill_index, const opt_t *opts) { const std::string indstr = indent(ind, opts->indString), getstate = opts->state_get_naked ? opts->state_get : opts->state_get + "()"; o << indstr << "switch (" << getstate << ") {\n"; if (opts->bUseStateAbort) { o << indstr << "default: abort();\n"; o << indstr << "case -1: goto " << opts->labelPrefix << start_label << ";\n"; } else { o << indstr << "default: goto " << opts->labelPrefix << start_label << ";\n"; } for (uint32_t i = 0; i < fill_index; ++i) { o << indstr << "case " << i << ": goto " << opts->yyfilllabel << i << ";\n"; } o << indstr << "}\n"; if (opts->bUseStateNext) { o << opts->yynext << ":\n"; } } void output_yyaccept_init (std::ostream & o, uint32_t ind, bool used_yyaccept, const opt_t *opts) { if (used_yyaccept) { o << indent(ind, opts->indString) << "unsigned int " << opts->yyaccept << " = 0;\n"; } } void output_yymaxfill(std::ostream &o, uint32_t ind, size_t max_fill, const opt_t *opts) { o << indent(ind, opts->indString) << "#define YYMAXFILL " << max_fill << "\n"; } void output_yymaxnmatch(std::ostream &o, uint32_t ind, size_t max_nmatch, const opt_t *opts) { o << indent(ind, opts->indString) << "#define YYMAXNMATCH " << max_nmatch << "\n"; } void output_line_info(std::ostream &o, uint32_t line, const std::string &fname, bool iflag) { if (!iflag) { o << "#line " << line << " \"" << fname << "\"\n"; } } void output_types(std::ostream &o, uint32_t ind, const opt_t *opts, const uniq_vector_t &types) { const std::string indstr = opts->indString; o << indent(ind++, indstr) << "enum " << opts->yycondtype << " {\n"; for (size_t i = 0; i < types.size(); ++i) { o << indent(ind, indstr) << opts->condEnumPrefix << types[i] << ",\n"; } o << indent(--ind, indstr) << "};\n"; } void output_version_time(std::ostream &o, bool version, bool date) { o << "/* Generated by re2c"; if (version) { o << " " << PACKAGE_VERSION; } if (date) { o << " on "; time_t now = time (NULL); o.write (ctime (&now), 24); } o << " */" << "\n"; } /* * note [condition order] * * In theory re2c makes no guarantee about the order of conditions in * the generated lexer. Users should define condition type 'YYCONDTYPE' * and use values of this type with 'YYGETCONDITION' and 'YYSETCONDITION'. * This way code is independent of internal re2c condition numbering. * * However, it is possible to manually hardcode condition numbers and make * re2c generate condition dispatch without explicit use of condition names * (nested 'if' statements with '-b' or computed 'goto' table with '-g'). * This code is syntactically valid (compiles), but unsafe: * - change of re2c options may break compilation * - change of internal re2c condition numbering may break runtime * * re2c has to preserve the existing numbering scheme. * * re2c warns about implicit assumptions about condition order, unless: * - condition type is defined with 'types:re2c' or '-t, --type-header' * - dispatch is independent of condition order: either it uses * explicit condition names or there's only one condition and * dispatch shrinks to unconditional jump */ static std::string output_cond_get(const opt_t *opts) { return opts->cond_get + (opts->cond_get_naked ? "" : "()"); } static void output_cond_goto_binary(std::ostream &o, uint32_t ind, const std::vector &conds, const opt_t *opts, size_t lower, size_t upper) { const std::string indstr = indent(ind, opts->indString); if (lower == upper) { o << indstr << "goto " << opts->condPrefix << conds[lower] << ";\n"; } else { const size_t middle = lower + (upper - lower + 1) / 2; o << indstr << "if (" << output_cond_get(opts) << " < " << middle << ") {\n"; output_cond_goto_binary(o, ind + 1, conds, opts, lower, middle - 1); o << indstr << "} else {\n"; output_cond_goto_binary(o, ind + 1, conds, opts, middle, upper); o << indstr << "}\n"; } } void output_cond_goto(std::ostream &o, uint32_t ind, const std::vector &conds, const opt_t *opts, Warn &warn, bool warn_cond_order, uint32_t line) { const size_t ncond = conds.size(); const std::string indstr = indent(ind, opts->indString); if (opts->target == TARGET_DOT) { for (size_t i = 0; i < ncond; ++i) { const std::string &cond = conds[i]; o << "0 -> " << cond << " [label=\"state=" << cond << "\"]\n"; } return; } if (opts->gFlag) { o << indstr << "goto *" << opts->yyctable << "[" << output_cond_get(opts) << "];\n"; } else if (opts->sFlag) { if (ncond == 1) warn_cond_order = false; output_cond_goto_binary(o, ind, conds, opts, 0, ncond - 1); } else { warn_cond_order = false; o << indstr << "switch (" << output_cond_get(opts) << ") {\n"; for (size_t i = 0; i < ncond; ++i) { const std::string &cond = conds[i]; o << indstr << "case " << opts->condEnumPrefix << cond <<": goto " << opts->condPrefix << cond << ";\n"; } o << indstr << "}\n"; } warn_cond_order &= opts->header_file.empty(); // see note [condition order] if (warn_cond_order) warn.condition_order(line); } void output_cond_table(std::ostream &o, uint32_t ind, const std::vector &conds, const opt_t *opts) { const size_t ncond = conds.size(); const std::string indstr = opts->indString; o << indent(ind++, indstr) << "static void *" << opts->yyctable << "[" << ncond << "] = {\n"; for (size_t i = 0; i < ncond; ++i) { o << indent(ind, indstr) << "&&" << opts->condPrefix << conds[i] << ",\n"; } o << indent(--ind, indstr) << "};\n"; } } // namespace re2c re2c-1.0.1/src/code/emit_action.cc0000644000175000017500000003123413143041563013573 00000000000000#include #include #include "src/util/c99_stdint.h" #include #include #include #include #include #include #include "src/adfa/action.h" #include "src/adfa/adfa.h" #include "src/code/emit.h" #include "src/code/go.h" #include "src/code/input_api.h" #include "src/code/label.h" #include "src/code/output.h" #include "src/conf/opt.h" #include "src/dfa/tcmd.h" #include "src/re/rule.h" #include "src/re/tag.h" #include "src/skeleton/skeleton.h" #include "src/util/string_utils.h" namespace re2c { static void need (OutputFile &o, uint32_t ind, size_t some); static void emit_accept_binary (OutputFile &o, uint32_t ind, const DFA &dfa, const accept_t &acc, size_t l, size_t r); static void emit_accept (OutputFile &o, uint32_t ind, const DFA &dfa, const accept_t &acc); static void emit_rule (OutputFile &o, uint32_t ind, const DFA &dfa, size_t rule_idx); static void gen_fintags (OutputFile &o, uint32_t ind, const DFA &dfa, const Rule &rule); static void gen_goto (code_lines_t &code, const State *to, const DFA &dfa, tcid_t tcid, const opt_t *opts, bool skip); static bool endstate (const State *s); void emit_action(OutputFile &o, uint32_t ind, const DFA &dfa, const State *s, const std::set &used_labels) { const opt_t *opts = o.block().opts; switch (s->action.type) { case Action::MATCH: o.wdelay_skip(ind, !opts->eager_skip); need(o, ind, s->fill); o.wdelay_peek(ind, !endstate(s)); break; case Action::INITIAL: { const Initial &init = *s->action.info.initial; const bool backup = init.save != Initial::NOSAVE, ul1 = used_labels.count(s->label); if (ul1 && dfa.accepts.size() > 1 && backup) { o.wind(ind).wstring(opts->yyaccept).ws(" = ").wu64(init.save).ws(";\n"); } o.wdelay_skip(ind, ul1 && !opts->eager_skip); if (used_labels.count(init.label)) { o.wstring(opts->labelPrefix).wlabel(init.label).wstring(":\n"); } if (opts->dFlag) { o.wind(ind).wstring(opts->yydebug).ws("(").wlabel(init.label) .ws(", *").wstring(opts->yycursor).ws(");\n"); } need(o, ind, s->fill); o.wdelay_backup(ind, backup); o.wdelay_peek(ind, !endstate(s)); break; } case Action::SAVE: if (dfa.accepts.size() > 1) { o.wind(ind).wstring(opts->yyaccept).ws(" = ").wu64(s->action.info.save).ws(";\n"); } o.wdelay_skip(ind, !opts->eager_skip); o.wdelay_backup(ind, true); need(o, ind, s->fill); o.wdelay_peek(ind, true); break; case Action::MOVE: break; case Action::ACCEPT: emit_accept(o, ind, dfa, *s->action.info.accepts); break; case Action::RULE: emit_rule(o, ind, dfa, s->action.info.rule); break; } } void emit_accept_binary(OutputFile &o, uint32_t ind, const DFA &dfa, const accept_t &acc, size_t l, size_t r) { const opt_t *opts = o.block().opts; if (l < r) { const size_t m = (l + r) >> 1; o.wind(ind).ws("if (").wstring(opts->yyaccept) .ws(r == l+1 ? " == " : " <= ").wu64(m).ws(") {\n"); emit_accept_binary (o, ++ind, dfa, acc, l, m); o.wind(--ind).ws("} else {\n"); emit_accept_binary (o, ++ind, dfa, acc, m + 1, r); o.wind(--ind).ws("}\n"); } else { gen_goto_plain(o, ind, acc[l].first, dfa, acc[l].second, false); } } void emit_accept(OutputFile &o, uint32_t ind, const DFA &dfa, const accept_t &acc) { const opt_t *opts = o.block().opts; const size_t nacc = acc.size(); if (nacc == 0) return; o.wstring(output_restore(ind, opts)); // only one possible 'yyaccept' value: unconditional jump if (nacc == 1) { gen_goto_plain(o, ind, acc[0].first, dfa, acc[0].second, false); return; } bool have_tags = false; for (size_t i = 0; i < nacc; ++i) { if (acc[i].second != TCID0) { have_tags = true; break; } } // jump table if (opts->gFlag && nacc >= opts->cGotoThreshold && !have_tags) { o.wind(ind).ws("{\n") .wind(ind + 1).ws("static void *") .wstring(opts->yytarget).ws("[") .wu64(nacc).ws("] = {\n"); for (uint32_t i = 0; i < nacc; ++i) { o.wind(ind + 2).ws("&&").wstring(opts->labelPrefix) .wlabel(acc[i].first->label).ws(",\n"); } o.wind(ind + 1).ws("};\n") .wind(ind + 1).ws("goto *") .wstring(opts->yytarget).ws("[") .wstring(opts->yyaccept).ws("];\n") .wind(ind).ws("}\n"); return; } // nested ifs if (opts->sFlag || nacc == 2) { emit_accept_binary(o, ind, dfa, acc, 0, nacc - 1); return; } // switch o.wind(ind).ws("switch (").wstring(opts->yyaccept).ws(") {\n"); for (uint32_t i = 0; i < nacc - 1; ++i) { o.wind(ind).ws("case ").wu32(i).ws(": "); gen_goto_case(o, ind, acc[i].first, dfa, acc[i].second, false); } o.wind(ind).ws("default:"); gen_goto_case(o, ind, acc[nacc - 1].first, dfa, acc[nacc - 1].second, false); o.wind(ind).ws("}\n"); } void emit_rule(OutputFile &o, uint32_t ind, const DFA &dfa, size_t rule_idx) { const opt_t *opts = o.block().opts; const Rule &rule = dfa.rules[rule_idx]; const Code *code = rule.code; const std::string &cond = code->cond; std::string s; gen_fintags(o, ind, dfa, rule); if (opts->target == TARGET_SKELETON) { emit_action(o, ind, dfa, rule_idx); } else { if (!cond.empty() && dfa.cond != cond) { strrreplace(s = opts->cond_set, opts->cond_set_arg, opts->condEnumPrefix + cond); o.wind(ind).wstring(s); if (!opts->cond_set_naked) { o.ws("(").wstring(opts->condEnumPrefix).wstring(cond).ws(");"); } o.ws("\n"); } if (!code->autogen) { if (!dfa.setup.empty()) { o.wind(ind).wstring(dfa.setup).ws("\n"); } o.wline_info(code->fline, code->fname.c_str()) .wind(ind).wstring(code->text).ws("\n") .wdelay_line_info(); } else if (!cond.empty()) { strrreplace(s = opts->condGoto, opts->condGotoParam, opts->condPrefix + cond); o.wind(ind).wstring(s).ws("\n"); } } } void need(OutputFile &o, uint32_t ind, size_t some) { if (some == 0) return; const opt_t *opts = o.block().opts; std::string s; if (opts->fFlag) { strrreplace(s = opts->state_set, opts->state_set_arg, o.fill_index); o.wind(ind).wstring(s); if (!opts->state_set_naked) { o.ws("(").wu32(o.fill_index).ws(");"); } o.ws("\n"); } if (opts->fill_use) { o.wind(ind); if (opts->fill_check) { o.ws("if (").wstring(output_expr_lessthan(some, opts)).ws(") "); } strrreplace(s = opts->fill, opts->fill_arg, some); o.wstring(s); if (!opts->fill_naked) { if (opts->fill_arg_use) { o.ws("(").wu64(some).ws(")"); } o.ws(";"); } o.ws("\n"); } if (opts->fFlag) { o.wstring(opts->yyfilllabel).wu32(o.fill_index).ws(":\n"); ++o.fill_index; } } void gen_goto_case(OutputFile &o, uint32_t ind, const State *to, const DFA &dfa, tcid_t tcid, bool skip) { code_lines_t code; gen_goto(code, to, dfa, tcid, o.block().opts, skip); const size_t lines = code.size(); if (lines == 1) { o.wind(1).wstring(code[0]); } else { o.ws("\n"); for (size_t i = 0; i < lines; ++i) { o.wind(ind + 1).wstring(code[i]); } } } void gen_goto_if(OutputFile &o, uint32_t ind, const State *to, const DFA &dfa, tcid_t tcid, bool skip) { code_lines_t code; gen_goto(code, to, dfa, tcid, o.block().opts, skip); const size_t lines = code.size(); if (lines == 1) { o.wstring(code[0]); } else { o.ws("{\n"); for (size_t i = 0; i < lines; ++i) { o.wind(ind + 1).wstring(code[i]); } o.wind(ind).ws("}\n"); } } void gen_goto_plain(OutputFile &o, uint32_t ind, const State *to, const DFA &dfa, tcid_t tcid, bool skip) { code_lines_t code; gen_goto(code, to, dfa, tcid, o.block().opts, skip); const size_t lines = code.size(); for (size_t i = 0; i < lines; ++i) { o.wind(ind).wstring(code[i]); } } void gen_goto(code_lines_t &code, const State *to, const DFA &dfa, tcid_t tcid, const opt_t *opts, bool skip) { std::ostringstream s; output_skip(s, 0, opts); if (skip && !opts->lookahead) { code.push_back(s.str()); } gen_settags(code, dfa, tcid, opts); if (skip && opts->lookahead) { code.push_back(s.str()); } if (to) { code.push_back("goto " + opts->labelPrefix + to_string(to->label) + ";\n"); } } void gen_settags(code_lines_t &code, const DFA &dfa, tcid_t tcid, const opt_t *opts) { const bool generic = opts->input_api == INPUT_CUSTOM; const std::string &prefix = opts->tags_prefix, &expression = opts->tags_expression; const tcmd_t *cmd = dfa.tcpool[tcid]; // single tag YYCTXMARKER, backwards compatibility if (cmd && dfa.oldstyle_ctxmarker) { const std::string s = generic ? opts->yybackupctx + " ();\n" : opts->yyctxmarker + " = " + opts->yycursor + ";\n"; code.push_back(s); return; } for (const tcmd_t *p = cmd; p; p = p->next) { const tagver_t l = p->lhs, r = p->rhs, *h = p->history; // copy command if (tcmd_t::iscopy(p)) { const std::string le = vartag_expr(l, prefix, expression), re = vartag_expr(r, prefix, expression), s = le + " = " + re + ";\n"; code.push_back(s); // save command; history } else if (tcmd_t::isadd(p)) { const std::string le = vartag_expr(l, prefix, expression), re = vartag_expr(r, prefix, expression); if (l != r) { const std::string s = le + " = " + re + ";\n"; code.push_back(s); } code_lines_t code1; for (; *h != TAGVER_ZERO; ++h) { const std::string s = *h == TAGVER_BOTTOM ? opts->yymtagn + " (" + le + ");\n" : opts->yymtagp + " (" + le + ");\n"; code1.push_back(s); } code.insert(code.end(), code1.rbegin(), code1.rend()); // save command; no history; generic API } else if (generic) { const std::string v = vartag_expr(l, prefix, expression), s = *h == TAGVER_BOTTOM ? opts->yystagn + " (" + v + ");\n" : opts->yystagp + " (" + v + ");\n"; code.push_back(s); // save command; no history; default API } else { std::string s1 = "", s2 = ""; for (const tcmd_t *q = p; q && tcmd_t::isset(q); p = q, q = q->next) { std::string &s = q->history[0] == TAGVER_BOTTOM ? s1 : s2; s += vartag_expr(q->lhs, prefix, expression) + " = "; } if (!s1.empty()) { s1 += "NULL;\n"; code.push_back(s1); } if (!s2.empty()) { s2 += opts->yycursor + ";\n"; code.push_back(s2); } } } } void gen_fintags(OutputFile &o, uint32_t ind, const DFA &dfa, const Rule &rule) { const opt_t *opts = o.block().opts; const bool generic = opts->input_api == INPUT_CUSTOM; const std::string &prefix = opts->tags_prefix, &expression = opts->tags_expression; std::string expr; const std::vector &tags = dfa.tags; const tagver_t *fins = dfa.finvers; if (rule.ncap > 0) { o.wind(ind).ws("yynmatch = ").wu64(rule.ncap).ws(";\n"); } // variable tags for (size_t t = rule.ltag; t < rule.htag; ++t) { const Tag &tag = tags[t]; // see note [fixed and variable tags] if (fictive(tag) || fixed(tag)) continue; expr = vartag_expr(fins[t], prefix, expression); o.wind(ind); if (!trailing(tag)) { o.wstring(tagname(tag)).ws(" = ").wstring(expr); } else if (generic) { if (dfa.oldstyle_ctxmarker) { o.wstring(opts->yyrestorectx).ws(" ()"); } else { o.wstring(opts->yyrestoretag).ws(" (").wstring(expr).ws(")"); } } else { if (dfa.oldstyle_ctxmarker) { o.wstring(opts->yycursor).ws(" = ").wstring(opts->yyctxmarker); } else { o.wstring(opts->yycursor).ws(" = ").wstring(expr); } } o.ws(";\n"); } // fixed tags for (size_t t = rule.ltag; t < rule.htag; ++t) { const Tag &tag = tags[t]; // see note [fixed and variable tags] if (fictive(tag) || !fixed(tag)) continue; const size_t dist = tag.dist; const bool fixed_on_cursor = tag.base == Tag::RIGHTMOST; expr = fixed_on_cursor ? opts->yycursor : vartag_expr(fins[tag.base], prefix, expression); o.wind(ind); if (generic) { assert(dist == 0); if (!trailing(tag)) { o.wstring(tagname(tag)).ws(" = ").wstring(expr); } else if (!fixed_on_cursor) { assert(!dfa.oldstyle_ctxmarker); o.wstring(opts->yyrestoretag).ws(" (").wstring(expr).ws(")"); } } else { if (!trailing(tag)) { o.wstring(tagname(tag)).ws(" = ").wstring(expr); if (dist > 0) o.ws(" - ").wu64(dist); } else if (!fixed_on_cursor) { o.wstring(opts->yycursor).ws(" = ").wstring(expr); if (dist > 0) o.ws(" - ").wu64(dist); } else if (dist > 0) { o.wstring(opts->yycursor).ws(" -= ").wu64(dist); } } o.ws(";\n"); } } std::string tagname(const Tag &tag) { assert(!trailing(tag)); return capture(tag) ? "yypmatch[" + to_string(tag.ncap) + "]" : *tag.name; } bool endstate(const State *s) { // 'end' state is a state which has no outgoing transitions on symbols // usually 'end' states are final states (not all final states are 'end' // states), but sometimes 'end' state happens to be initial non-accepting // state, e.g. in case of rule '[]' const Action::type_t &a = s->go.span[0].to->action.type; return s->go.nSpans == 1 && (a == Action::RULE || a == Action::ACCEPT); } } // namespace re2c re2c-1.0.1/src/code/go.h0000644000175000017500000001067413140442471011554 00000000000000#ifndef _RE2C_CODE_GO_ #define _RE2C_CODE_GO_ #include #include #include #include "src/code/output.h" #include "src/dfa/tcmd.h" #include "src/util/c99_stdint.h" #include "src/util/forbid_copy.h" namespace re2c { struct DFA; struct bitmap_t; class bitmaps_t; struct State; struct If; struct Span { uint32_t ub; State * to; tcid_t tags; FORBID_COPY (Span); }; struct Case { std::vector > ranges; const State *to; tcid_t tags; bool skip; void emit(OutputFile &o, uint32_t ind) const; inline Case(): ranges(), to(NULL), tags(TCID0), skip(false) {} FORBID_COPY(Case); }; struct Cases { Case *cases; uint32_t cases_size; void add(uint32_t lb, uint32_t ub, State *to, tcid_t tags, bool skip); Cases(const Span *spans, uint32_t nspans, bool skip); ~Cases(); void emit(OutputFile &o, uint32_t ind, const DFA &dfa) const; void used_labels(std::set &used) const; FORBID_COPY(Cases); }; struct Cond { std::string compare; uint32_t value; Cond (const std::string & cmp, uint32_t val); }; struct Binary { Cond * cond; If * thn; If * els; Binary (const Span * s, uint32_t n, const State * next, bool skip); ~Binary (); void emit (OutputFile &o, uint32_t ind, const DFA &dfa) const; void used_labels (std::set & used) const; FORBID_COPY (Binary); }; struct Linear { struct Branch { const Cond *cond; const State *to; tcid_t tags; bool skip; }; size_t nbranches; Branch *branches; Linear(const Span *s, uint32_t n, const State *next, bool skip); ~Linear(); void add_branch(const Cond *cond, const State *to, tcid_t tags, bool skip); void emit(OutputFile &o, uint32_t ind, const DFA &dfa) const; void used_labels(std::set &used) const; FORBID_COPY(Linear); }; struct If { enum type_t { BINARY, LINEAR } type; union { Binary * binary; Linear * linear; } info; If (type_t t, const Span * sp, uint32_t nsp, const State * next, bool skip); ~If (); void emit (OutputFile & o, uint32_t ind, const DFA &dfa) const; void used_labels (std::set & used) const; }; struct SwitchIf { enum { SWITCH, IF } type; union { Cases * cases; If * ifs; } info; SwitchIf (const Span * sp, uint32_t nsp, const State * next, bool sflag, bool skip); ~SwitchIf (); void emit (OutputFile & o, uint32_t ind, const DFA &dfa) const; void used_labels (std::set & used) const; }; struct GoBitmap { const bitmap_t * bitmap; const State * bitmap_state; SwitchIf * hgo; SwitchIf * lgo; GoBitmap (const Span * span, uint32_t nSpans, const Span * hspan, uint32_t hSpans, const bitmap_t * bm, const State * bm_state, const State * next, bool sflag); ~GoBitmap (); void emit (OutputFile & o, uint32_t ind, const DFA &dfa) const; void used_labels (std::set & used) const; FORBID_COPY (GoBitmap); }; struct CpgotoTable { static const uint32_t TABLE_SIZE; const State ** table; CpgotoTable (const Span * span, uint32_t nSpans); ~CpgotoTable (); void emit (OutputFile & o, uint32_t ind) const; void used_labels (std::set & used) const; private: label_t max_label () const; FORBID_COPY (CpgotoTable); }; struct Cpgoto { SwitchIf * hgo; CpgotoTable * table; Cpgoto (const Span * span, uint32_t nSpans, const Span * hspan, uint32_t hSpans, const State * next, bool sflag); ~Cpgoto (); void emit (OutputFile & o, uint32_t ind, const DFA &dfa) const; void used_labels (std::set & used) const; FORBID_COPY (Cpgoto); }; struct Dot { const State * from; Cases * cases; Dot(const Span *sp, uint32_t nsp, const State *s); ~Dot (); void emit (OutputFile & o, const DFA &dfa) const; FORBID_COPY (Dot); }; struct Go { uint32_t nSpans; // number of spans Span * span; tcid_t tags; bool skip; enum { EMPTY, SWITCH_IF, BITMAP, CPGOTO, DOT } type; union { SwitchIf * switchif; GoBitmap * bitmap; Cpgoto * cpgoto; Dot * dot; } info; Go (); ~Go (); void init(const State* from, const opt_t *opts, bitmaps_t &bitmaps); void emit (OutputFile & o, uint32_t ind, const DFA &dfa) const; void used_labels (std::set & used) const; Go (const Go & g) : nSpans (g.nSpans) , span (g.span) , tags (g.tags) , skip (g.skip) , type (g.type) , info (g.info) {} Go & operator = (const Go & g) { nSpans = g.nSpans; span = g.span; tags = g.tags; skip = g.skip; type = g.type; info = g.info; return * this; } }; bool consume(const State *s); } // namespace re2c #endif // _RE2C_CODE_GO_ re2c-1.0.1/src/code/bitmap.cc0000644000175000017500000000575013142624070012557 00000000000000#include // memset #include // min #include "src/code/bitmap.h" #include "src/code/go.h" #include "src/code/output.h" #include "src/conf/opt.h" #include "src/dfa/tcmd.h" namespace re2c { static bool matches(const Go *go1, const State *s1, const Go *go2, const State *s2); static void doGen(const Go *g, const State *s, uint32_t *bm, uint32_t f, uint32_t m); bitmaps_t::bitmaps_t(uint32_t n) : maps() , ncunit(n) , buffer(new uint32_t[ncunit]) , used(false) {} bitmaps_t::~bitmaps_t() { delete[] buffer; } void bitmaps_t::insert(const Go *go, const State *s) { for (rciter_t i = maps.rbegin(); i != maps.rend(); ++i) { if (matches(i->go, i->on, go, s)) return; } bitmap_t b = {go, s, 0, 0}; maps.push_back(b); } const bitmap_t *bitmaps_t::find(const Go *go, const State *s) const { for (rciter_t i = maps.rbegin(); i != maps.rend(); ++i) { if (i->on == s && matches(i->go, i->on, go, s)) return &(*i); } return NULL; } bool bitmaps_t::empty() const { return maps.empty(); } void bitmaps_t::gen(OutputFile &o, uint32_t ind) { if (empty() || !used) return; const opt_t *opts = o.block().opts; const uint32_t nmap = static_cast(maps.size()); riter_t b = maps.rbegin(), e = maps.rend(); o.wind(ind).ws("static const unsigned char ") .wstring(opts->yybm).ws("[] = {"); for (uint32_t i = 0, t = 1; b != e; i += ncunit, t += 8) { memset(buffer, 0, ncunit * sizeof(uint32_t)); for (uint32_t m = 0x80; b != e && m; m >>= 1, ++b) { b->i = i; b->m = m; doGen(b->go, b->on, buffer, 0, m); } if (nmap > 8) { o.ws("\n").wind(ind + 1).ws("/* table ").wu32(t).ws(" .. ") .wu32(std::min(nmap, t + 7)).ws(": ").wu32(i).ws(" */"); } for (uint32_t c = 0; c < ncunit; ++c) { if (c % 8 == 0) { o.ws("\n").wind(ind + 1); } if (opts->yybmHexTable) { o.wu32_hex(buffer[c]); } else { o.wu32_width(buffer[c], 3); } o.ws(", "); } } o.ws("\n").wind(ind).ws("};\n"); } void doGen(const Go *g, const State *s, uint32_t *bm, uint32_t f, uint32_t m) { Span *b = g->span, *e = &b[g->nSpans]; uint32_t lb = 0; for (; b < e; ++b) { if (b->to == s) { for (; lb < b->ub && lb < 256; ++lb) { bm[lb-f] |= m; } } lb = b->ub; } } // All spans in b1 that lead to s1 are pairwise equal to that in b2 leading to s2 bool matches(const Go *go1, const State *s1, const Go *go2, const State *s2) { const Span *b1 = go1->span, *e1 = &b1[go1->nSpans], *b2 = go2->span, *e2 = &b2[go2->nSpans]; uint32_t lb1 = 0, lb2 = 0; for (;;) { for (; b1 < e1 && b1->to != s1; ++b1) { lb1 = b1->ub; } for (; b2 < e2 && b2->to != s2; ++b2) { lb2 = b2->ub; } if (b1 == e1) { return b2 == e2; } if (b2 == e2) { return false; } // tags are forbidden: transitions on different symbols // might go to the same state, but have different tag sets if (lb1 != lb2 || b1->ub != b2->ub || b1->tags != TCID0 || b2->tags != TCID0) { return false; } ++b1; ++b2; } } } // end namespace re2c re2c-1.0.1/src/code/go_destruct.cc0000644000175000017500000000201113142625351013613 00000000000000#include "src/util/c99_stdint.h" #include "src/code/go.h" namespace re2c { Cases::~Cases () { delete [] cases; } Binary::~Binary () { delete cond; delete thn; delete els; } Linear::~Linear () { for (uint32_t i = 0; i < nbranches; ++i) { delete branches[i].cond; } delete[] branches; } If::~If () { switch (type) { case BINARY: delete info.binary; break; case LINEAR: delete info.linear; break; } } SwitchIf::~SwitchIf () { switch (type) { case SWITCH: delete info.cases; break; case IF: delete info.ifs; break; } } GoBitmap::~GoBitmap () { delete hgo; delete lgo; } CpgotoTable::~CpgotoTable () { delete [] table; } Cpgoto::~Cpgoto () { delete hgo; delete table; } Dot::~Dot () { delete cases; } Go::~Go () { switch (type) { case EMPTY: break; case SWITCH_IF: delete info.switchif; break; case BITMAP: delete info.bitmap; break; case CPGOTO: delete info.cpgoto; break; case DOT: delete info.dot; break; } } } // namespace re2c re2c-1.0.1/src/code/emit_dfa.cc0000644000175000017500000001637113143042612013051 00000000000000#include #include "src/util/c99_stdint.h" #include #include #include #include #include #include #include "src/adfa/action.h" #include "src/adfa/adfa.h" #include "src/code/bitmap.h" #include "src/code/emit.h" #include "src/code/go.h" #include "src/code/input_api.h" #include "src/code/label.h" #include "src/code/output.h" #include "src/conf/opt.h" #include "src/re/rule.h" #include "src/re/tag.h" #include "src/skeleton/skeleton.h" #include "src/util/counter.h" #include "src/util/string_utils.h" namespace re2c { static void emit_state(OutputFile & o, uint32_t ind, const State * s, bool used_label); void emit_state (OutputFile & o, uint32_t ind, const State * s, bool used_label) { const opt_t *opts = o.block().opts; if (used_label) { o.wstring(opts->labelPrefix).wlabel(s->label).ws(":\n"); } if (opts->dFlag && (s->action.type != Action::INITIAL)) { o.wind(ind).wstring(opts->yydebug).ws("(").wlabel(s->label).ws(", ").wstring(output_expr_peek(opts)).ws(");\n"); } } void DFA::count_used_labels (std::set & used, label_t start, label_t initial, bool force_start, bool fFlag) const { // In '-f' mode, default state is always state 0 if (fFlag) { used.insert (label_t::first ()); } if (force_start) { used.insert (start); } for (State * s = head; s; s = s->next) { s->go.used_labels (used); } for (uint32_t i = 0; i < accepts.size (); ++i) { used.insert (accepts[i].first->label); } // must go last: it needs the set of used labels if (used.count (head->label)) { used.insert (initial); } } void DFA::emit_body(OutputFile &o, uint32_t& ind, const std::set &used_labels, label_t initial) const { code_lines_t code; gen_settags(code, *this, tags0, o.block().opts); for (size_t i = 0; i < code.size(); ++i) { o.wind(ind).wstring(code[i]); } // If DFA has transitions to initial state, then initial state // has a piece of code that advances input position. Wee must // skip it when entering DFA. if (used_labels.count(head->label)) { o.wind(ind).ws("goto ").wstring(o.block().opts->labelPrefix) .wlabel(initial).ws(";\n"); } for (State * s = head; s; s = s->next) { emit_state(o, ind, s, used_labels.count(s->label)); emit_action(o, ind, *this, s, used_labels); s->go.emit(o, ind, *this); } } void DFA::emit_dot(OutputFile &o, bool last_cond) const { const opt_t *opts = o.block().opts; if (!opts->cFlag || !o.cond_goto) { o.ws("digraph re2c {\n"); } o.wdelay_cond_goto(0); if (opts->cFlag) { o.wstring(cond).ws(" -> ").wlabel(head->label).ws("\n"); } for (State *s = head; s; s = s->next) { if (s->action.type == Action::ACCEPT) { const accept_t &accs = *s->action.info.accepts; for (uint32_t i = 0; i < accs.size(); ++i) { o.wlabel(s->label).ws(" -> ") .wlabel(accs[i].first->label) .ws(" [label=\"yyaccept=") .wu32(i).ws("\"]").ws("\n"); } } else if (s->action.type == Action::RULE) { const Code *code = rules[s->action.info.rule].code; if (!code->autogen) { o.wlabel(s->label).ws(" [label=\"") .wstring(code->fname) .ws(":").wu32(code->fline) .ws("\"]").ws("\n"); } } s->go.emit(o, 0, *this); } if (!opts->cFlag || last_cond) { o.ws("}\n"); } } void DFA::emit(Output & output, uint32_t& ind, bool isLastCond, bool& bPrologBrace) { OutputFile &o = output.source; OutputBlock &ob = o.block(); const opt_t *opts = ob.opts; std::set stagnames, stagvars, mtagnames, mtagvars; if (!oldstyle_ctxmarker) { for (size_t i = 0; i < tags.size(); ++i) { const Tag &tag = tags[i]; if (history(tag)) { mtagvars.insert(*tag.name); } else if (tag.name) { stagvars.insert(*tag.name); } } for (tagver_t v = 1; v <= maxtagver; ++v) { const std::string s = vartag_name(v, opts->tags_prefix); if (mtagvers.find(v) != mtagvers.end()) { mtagnames.insert(s); } else { stagnames.insert(s); } } ob.stags.insert(stagnames.begin(), stagnames.end()); ob.mtags.insert(mtagnames.begin(), mtagnames.end()); } if (!cond.empty()) o.block().types.push_back(cond); bool bProlog = (!opts->cFlag || !o.cond_goto); // start_label points to the beginning of current re2c block // (prior to condition dispatch in '-c' mode) // it can forced by configuration 're2c:startlabel = ;' label_t start_label = o.label_counter.next (); // initial_label points to the beginning of DFA // in '-c' mode this is NOT equal to start_label label_t initial_label = bProlog && opts->cFlag ? o.label_counter.next () : start_label; for (State * s = head; s; s = s->next) { s->label = o.label_counter.next (); } std::set used_labels; count_used_labels (used_labels, start_label, initial_label, opts->startlabel_force && opts->startlabel.empty(), opts->fFlag); head->action.set_initial(initial_label); if (opts->target == TARGET_SKELETON) { if (output.skeletons.insert (name).second) { emit_start(o, max_fill, max_nmatch, name, key_size, def_rule, need_backup, need_accept, oldstyle_ctxmarker, stagnames, stagvars, mtagnames, mtagvars, bitmaps); uint32_t i = 2; emit_body (o, i, used_labels, initial_label); emit_end(o, name, need_backup, oldstyle_ctxmarker, mtagnames); } } else if (opts->target == TARGET_DOT) { emit_dot(o, isLastCond); } else { // Generate prolog if (bProlog) { o.ws("\n").wdelay_line_info (); if ((!opts->fFlag && ob.used_yyaccept) || (!opts->fFlag && opts->bEmitYYCh) || (opts->bFlag && !opts->cFlag && !bitmaps.empty()) || (opts->cFlag && !o.cond_goto && opts->gFlag) || (opts->fFlag && !o.state_goto && opts->gFlag) ) { bPrologBrace = true; o.wind(ind++).ws("{\n"); } else if (ind == 0) { ind = 1; } if (!opts->fFlag) { if (opts->bEmitYYCh) { o.wind(ind).wstring(opts->yyctype).ws(" ").wstring(opts->yych).ws(";\n"); } o.wdelay_yyaccept_init (ind); } else { o.ws("\n"); } } if (opts->bFlag && !opts->cFlag) { bitmaps.gen(o, ind); } if (bProlog) { o.wdelay_cond_table(ind); o.wdelay_state_goto (ind); if (opts->cFlag) { if (used_labels.count(start_label)) { o.wstring(opts->labelPrefix).wlabel(start_label).ws(":\n"); } } o.wuser_start_label (); o.wdelay_cond_goto(ind); } if (opts->cFlag && !cond.empty()) { if (opts->condDivider.length()) { std::string divider = opts->condDivider; strrreplace(divider, opts->condDividerParam, cond); o.wstring(divider).ws("\n"); } o.wstring(opts->condPrefix).wstring(cond).ws(":\n"); } if (opts->cFlag && opts->bFlag && !bitmaps.empty()) { o.wind(ind++).ws("{\n"); bitmaps.gen(o, ind); } // Generate code emit_body (o, ind, used_labels, initial_label); if (opts->cFlag && opts->bFlag && !bitmaps.empty()) { o.wind(--ind).ws("}\n"); } // Generate epilog if ((!opts->cFlag || isLastCond) && bPrologBrace) { o.wind(--ind).ws("}\n"); } } } std::string vartag_name(tagver_t ver, const std::string &prefix) { std::ostringstream s; s << prefix << ver; return s.str(); } std::string vartag_expr(tagver_t ver, const std::string &prefix, const std::string &expression) { const std::string s = vartag_name(ver, prefix); std::string e = expression; strrreplace(e, "@@", s); return e; } } // end namespace re2c re2c-1.0.1/src/code/print.h0000644000175000017500000000071413142625542012301 00000000000000#ifndef _RE2C_CODE_PRINT_ #define _RE2C_CODE_PRINT_ #include "src/util/c99_stdint.h" #include namespace re2c { bool is_print (uint32_t c); void prtHex (std::ostream &o, uint32_t c, uint32_t szcunit); void prtChOrHex (std::ostream &o, uint32_t c, uint32_t szcunit, bool ebcdic, bool dot); void printSpan (std::ostream &o, uint32_t l, uint32_t u, uint32_t szcunit, bool ebcdic, bool dot); } // end namespace re2c #endif // _RE2C_CODE_PRINT_ re2c-1.0.1/src/code/output.h0000644000175000017500000001141713143041776012511 00000000000000#ifndef _RE2C_CODE_OUTPUT_ #define _RE2C_CODE_OUTPUT_ #include #include "src/util/c99_stdint.h" #include #include #include #include #include #include #include "src/code/label.h" #include "src/conf/opt.h" #include "src/conf/warn.h" #include "src/util/counter.h" #include "src/util/forbid_copy.h" #include "src/util/uniq_vector.h" namespace re2c { class Warn; struct Opt; struct opt_t; template class uniq_vector_t; struct ConfTags { std::string format; std::string separator; ConfTags(const std::string &f, const std::string &s) : format(f), separator(s) {} }; struct OutputFragment { enum type_t { CODE // , CONFIG , COND_GOTO , COND_TABLE , LINE_INFO , STATE_GOTO , STAGS , MTAGS , TYPES , YYACCEPT_INIT , YYMAXFILL , YYMAXNMATCH , SKIP , PEEK , BACKUP , PEEK_SKIP , SKIP_PEEK , SKIP_BACKUP , BACKUP_SKIP , BACKUP_PEEK , BACKUP_PEEK_SKIP , SKIP_BACKUP_PEEK , EMPTY }; type_t type; std::ostringstream stream; uint32_t indent; union { const ConfTags* tags; }; OutputFragment (type_t t, uint32_t i); ~OutputFragment (); uint32_t count_lines () const; }; struct OutputBlock { std::vector fragments; bool used_yyaccept; uint32_t line; std::vector types; std::set stags; std::set mtags; const opt_t *opts; OutputBlock (); ~OutputBlock (); FORBID_COPY(OutputBlock); }; class OutputFile { std::vector blocks; public: counter_t label_counter; uint32_t fill_index; bool state_goto; bool cond_goto; bool warn_condition_order; Warn &warn; explicit OutputFile(Warn &w); ~OutputFile(); std::ostream & stream (); OutputBlock &block(); void insert_code (); bool open (); void new_block(Opt &opts); // immediate output OutputFile & wraw (const char *s, const char *e); OutputFile & wc (char c); OutputFile & wc_hex (uint32_t n); OutputFile & wu32 (uint32_t n); OutputFile & wu32_hex (uint32_t n); OutputFile & wu32_width (uint32_t n, int w); OutputFile & wu64 (uint64_t n); OutputFile & wstring (const std::string & s); OutputFile & ws (const char * s); OutputFile & wlabel (label_t l); OutputFile & wrange (uint32_t u, uint32_t l); OutputFile & wline_info (uint32_t l, const char * fn); OutputFile & wversion_time (); OutputFile & wuser_start_label (); OutputFile & wind (uint32_t ind); // delayed output OutputFile & wdelay_tags(const ConfTags *cf, bool mtags); OutputFile & wdelay_line_info (); OutputFile & wdelay_cond_goto(uint32_t ind); OutputFile & wdelay_cond_table(uint32_t ind); OutputFile & wdelay_state_goto (uint32_t ind); OutputFile & wdelay_types (); OutputFile & wdelay_yyaccept_init (uint32_t ind); OutputFile & wdelay_yymaxfill (); OutputFile& wdelay_yymaxnmatch(); OutputFile& wdelay_skip(uint32_t ind, bool skip); OutputFile& wdelay_peek(uint32_t ind, bool peek); OutputFile& wdelay_backup(uint32_t ind, bool backup); void global_lists(uniq_vector_t &types, std::set &stags, std::set &mtags) const; bool emit(const uniq_vector_t &global_types, const std::set &global_stags, const std::set &global_mtags, size_t max_fill, size_t max_nmatch); FORBID_COPY (OutputFile); }; class HeaderFile { std::ostringstream stream; public: HeaderFile(): stream() {} bool emit(const opt_t *opts, const uniq_vector_t &types); FORBID_COPY (HeaderFile); }; struct Output { OutputFile source; HeaderFile header; std::set skeletons; size_t max_fill; size_t max_nmatch; explicit Output(Warn &w); bool emit(); }; void output_tags (std::ostream &o, uint32_t ind, const ConfTags &conf, const std::set &tags, const opt_t *opts); void output_line_info (std::ostream &o, uint32_t line, const std::string &fname, bool iflag); void output_cond_goto (std::ostream &o, uint32_t ind, const std::vector &conds, const opt_t *opts, Warn &warn, bool warn_cond_order, uint32_t line); void output_cond_table (std::ostream &o, uint32_t ind, const std::vector &conds, const opt_t *opts); void output_state_goto (std::ostream &o, uint32_t ind, uint32_t start_label, uint32_t fill_index, const opt_t *opts); void output_types (std::ostream &o, uint32_t ind, const opt_t *opts, const uniq_vector_t &types); void output_version_time (std::ostream &o, bool version, bool date); void output_yyaccept_init (std::ostream &o, uint32_t ind, bool, const opt_t *opts); void output_yymaxfill (std::ostream &o, uint32_t ind, size_t max_fill, const opt_t *opts); void output_yymaxnmatch (std::ostream &o, uint32_t ind, size_t max_nmatch, const opt_t *opts); } // namespace re2c #endif // _RE2C_CODE_OUTPUT_ re2c-1.0.1/src/code/label.cc0000644000175000017500000000102113142627312012347 00000000000000#include #include "src/code/label.h" namespace re2c { const uint32_t label_t::FIRST = 0; label_t::label_t () : value (FIRST) {} void label_t::inc () { ++value; } label_t label_t::first () { return label_t (); } bool label_t::operator < (const label_t & l) const { return value < l.value; } uint32_t label_t::width () const { uint32_t v = value; uint32_t n = 0; while (v /= 10) ++n; return n; } std::ostream & operator << (std::ostream & o, label_t l) { o << l.value; return o; } } // namespace re2c re2c-1.0.1/src/code/label.h0000644000175000017500000000136413142625467012234 00000000000000#ifndef _RE2C_CODE_LABEL_ #define _RE2C_CODE_LABEL_ #include "src/util/c99_stdint.h" #include // ostream namespace re2c { template class counter_t; // label public API: // - get first label // - compare labels // - get label width // - output label to std::ostream // // label private API (for label counter): // - get initial label // - get next label class label_t { static const uint32_t FIRST; uint32_t value; label_t (); void inc (); public: static label_t first (); bool operator < (const label_t & l) const; uint32_t width () const; friend std::ostream & operator << (std::ostream & o, label_t l); friend class counter_t; }; } // namespace re2c #endif // _RE2C_CODE_LABEL_ re2c-1.0.1/src/code/input_api.h0000644000175000017500000000241413142625444013135 00000000000000#ifndef _RE2C_CODE_INPUT_API_ #define _RE2C_CODE_INPUT_API_ #include #include "src/util/c99_stdint.h" #include #include namespace re2c { struct opt_t; enum input_api_t { INPUT_DEFAULT, INPUT_CUSTOM }; std::string output_expr_peek (const opt_t *opts); std::string output_restore (uint32_t ind, const opt_t *opts); std::string output_expr_lessthan (size_t n, const opt_t *opts); void output_peek (std::ostream &o, uint32_t ind, const opt_t *opts); void output_skip (std::ostream &o, uint32_t ind, const opt_t *opts); void output_backup (std::ostream &o, uint32_t ind, const opt_t *opts); void output_skip_peek (std::ostream &o, uint32_t ind, const opt_t *opts); void output_peek_skip (std::ostream &o, uint32_t ind, const opt_t *opts); void output_skip_backup (std::ostream &o, uint32_t ind, const opt_t *opts); void output_backup_skip (std::ostream &o, uint32_t ind, const opt_t *opts); void output_backup_peek (std::ostream &o, uint32_t ind, const opt_t *opts); void output_skip_backup_peek (std::ostream &o, uint32_t ind, const opt_t *opts); void output_backup_peek_skip (std::ostream &o, uint32_t ind, const opt_t *opts); } // end namespace re2c #endif // _RE2C_CODE_INPUT_API_ re2c-1.0.1/src/code/go_used_labels.cc0000644000175000017500000000344413142625417014256 00000000000000#include #include "src/util/c99_stdint.h" #include #include "src/adfa/adfa.h" #include "src/code/go.h" namespace re2c { class label_t; void Cases::used_labels (std::set & used) const { for (uint32_t i = 0; i < cases_size; ++i) { used.insert (cases[i].to->label); } } void Binary::used_labels (std::set & used) const { thn->used_labels (used); els->used_labels (used); } void Linear::used_labels (std::set & used) const { for (uint32_t i = 0; i < nbranches; ++i) { const State *to = branches[i].to; if (to) { used.insert(to->label); } } } void If::used_labels (std::set & used) const { switch (type) { case BINARY: info.binary->used_labels (used); break; case LINEAR: info.linear->used_labels (used); break; } } void SwitchIf::used_labels (std::set & used) const { switch (type) { case SWITCH: info.cases->used_labels (used); break; case IF: info.ifs->used_labels (used); break; } } void GoBitmap::used_labels (std::set & used) const { if (hgo != NULL) { hgo->used_labels (used); } used.insert (bitmap_state->label); if (lgo != NULL) { lgo->used_labels (used); } } void CpgotoTable::used_labels (std::set & used) const { for (uint32_t i = 0; i < TABLE_SIZE; ++i) { used.insert (table[i]->label); } } void Cpgoto::used_labels (std::set & used) const { if (hgo != NULL) { hgo->used_labels (used); } table->used_labels (used); } void Go::used_labels (std::set & used) const { switch (type) { case EMPTY: case DOT: break; case SWITCH_IF: info.switchif->used_labels (used); break; case BITMAP: info.bitmap->used_labels (used); break; case CPGOTO: info.cpgoto->used_labels (used); break; } } } // namespace re2c re2c-1.0.1/src/code/bitmap.h0000644000175000017500000000145513142625044012421 00000000000000#ifndef _RE2C_CODE_BITMAP_ #define _RE2C_CODE_BITMAP_ #include "src/util/c99_stdint.h" #include #include "src/util/forbid_copy.h" namespace re2c { class OutputFile; struct Go; struct Span; struct State; struct bitmap_t { const Go *go; const State *on; uint32_t i; uint32_t m; }; class bitmaps_t { typedef std::vector maps_t; typedef maps_t::reverse_iterator riter_t; typedef maps_t::const_reverse_iterator rciter_t; maps_t maps; uint32_t ncunit; uint32_t *buffer; public: bool used; explicit bitmaps_t(uint32_t n); ~bitmaps_t(); void insert(const Go *go, const State *s); const bitmap_t *find(const Go *go, const State *s) const; bool empty() const; void gen(OutputFile &o, uint32_t ind); FORBID_COPY(bitmaps_t); }; } // namespace re2c #endif // _RE2C_CODE_BITMAP_ re2c-1.0.1/src/code/go_emit.cc0000644000175000017500000001421113142625374012726 00000000000000#include #include "src/util/c99_stdint.h" #include #include #include #include "src/adfa/adfa.h" #include "src/code/bitmap.h" #include "src/code/emit.h" #include "src/code/go.h" #include "src/code/label.h" #include "src/code/output.h" #include "src/code/print.h" #include "src/conf/opt.h" #include "src/dfa/tcmd.h" #include "src/re/encoding/enc.h" namespace re2c { static void output_if (OutputFile & o, uint32_t ind, const std::string & compare, uint32_t value); static std::string output_hgo (OutputFile & o, uint32_t ind, const DFA &dfa, SwitchIf * hgo); void output_if (OutputFile & o, uint32_t ind, const std::string & compare, uint32_t value) { o.wind(ind).ws("if (").wstring(o.block().opts->yych).ws(" ").wstring(compare).ws(" ").wc_hex (value).ws(") "); } std::string output_hgo (OutputFile & o, uint32_t ind, const DFA &dfa, SwitchIf * hgo) { const opt_t *opts = o.block().opts; std::string yych = opts->yych; if (hgo != NULL) { o.wind(ind).ws("if (").wstring(yych).ws(" & ~0xFF) {\n"); hgo->emit (o, ind + 1, dfa); o.wind(ind).ws("} else "); yych = opts->yych; } else { o.wind(ind); } return yych; } void Case::emit (OutputFile & o, uint32_t ind) const { const opt_t *opts = o.block().opts; for (uint32_t i = 0; i < ranges.size (); ++i) { for (uint32_t b = ranges[i].first; b < ranges[i].second; ++b) { o.wind(ind).ws("case ").wc_hex (b).ws(":"); if (opts->dFlag && opts->encoding.type () == Enc::EBCDIC) { const uint32_t c = opts->encoding.decodeUnsafe (b); if (is_print (c)) o.ws(" /* ").wc(static_cast (c)).ws(" */"); } bool last_case = i == ranges.size () - 1 && b == ranges[i].second - 1; if (!last_case) { o.ws("\n"); } } } } void Cases::emit(OutputFile &o, uint32_t ind, const DFA &dfa) const { o.wind(ind).ws("switch (").wstring(o.block().opts->yych).ws(") {\n"); for (uint32_t i = 1; i < cases_size; ++i) { const Case &c = cases[i]; c.emit(o, ind); gen_goto_case(o, ind, c.to, dfa, c.tags, c.skip); } // default case must be the last one const Case &c = cases[0]; o.wind(ind).ws("default:"); gen_goto_case(o, ind, c.to, dfa, c.tags, c.skip); o.wind(ind).ws("}\n"); } void Binary::emit(OutputFile &o, uint32_t ind, const DFA &dfa) const { output_if(o, ind, cond->compare, cond->value); o.ws("{\n"); thn->emit(o, ind + 1, dfa); o.wind(ind).ws("} else {\n"); els->emit(o, ind + 1, dfa); o.wind(ind).ws("}\n"); } void Linear::emit(OutputFile &o, uint32_t ind, const DFA &dfa) const { for (uint32_t i = 0; i < nbranches; ++i) { const Branch &b = branches[i]; const Cond *cond = b.cond; if (cond) { output_if(o, ind, cond->compare, cond->value); gen_goto_if(o, ind, b.to, dfa, b.tags, b.skip); } else { gen_goto_plain(o, ind, b.to, dfa, b.tags, b.skip); } } } void If::emit(OutputFile &o, uint32_t ind, const DFA &dfa) const { switch (type) { case BINARY: info.binary->emit(o, ind, dfa); break; case LINEAR: info.linear->emit(o, ind, dfa); break; } } void SwitchIf::emit(OutputFile &o, uint32_t ind, const DFA &dfa) const { switch (type) { case SWITCH: info.cases->emit(o, ind, dfa); break; case IF: info.ifs->emit(o, ind, dfa); break; } } void GoBitmap::emit (OutputFile & o, uint32_t ind, const DFA &dfa) const { const opt_t *opts = o.block().opts; std::string yych = output_hgo (o, ind, dfa, hgo); o.ws("if (").wstring(opts->yybm).ws("[").wu32(bitmap->i).ws("+").wstring(yych).ws("] & "); if (opts->yybmHexTable) { o.wu32_hex(bitmap->m); } else { o.wu32(bitmap->m); } o.ws(") {\n"); gen_goto_plain(o, ind + 1, bitmap_state, dfa, TCID0, false); o.wind(ind).ws("}\n"); if (lgo != NULL) { lgo->emit (o, ind, dfa); } } label_t CpgotoTable::max_label () const { label_t max = label_t::first (); for (uint32_t i = 0; i < TABLE_SIZE; ++i) { if (max < table[i]->label) { max = table[i]->label; }; } return max; } void CpgotoTable::emit (OutputFile & o, uint32_t ind) const { const opt_t *opts = o.block().opts; o.wind(ind).ws("static void *").wstring(opts->yytarget).ws("[256] = {\n"); o.wind(++ind); const uint32_t max_digits = max_label ().width (); for (uint32_t i = 0; i < TABLE_SIZE; ++i) { o.ws("&&").wstring(opts->labelPrefix).wlabel(table[i]->label); if (i == TABLE_SIZE - 1) { o.ws("\n"); } else if (i % 8 == 7) { o.ws(",\n").wind(ind); } else { const uint32_t padding = max_digits - table[i]->label.width () + 1; o.ws(",").wstring(std::string (padding, ' ')); } } o.wind(--ind).ws("};\n"); } void Cpgoto::emit (OutputFile & o, uint32_t ind, const DFA &dfa) const { std::string yych = output_hgo (o, ind, dfa, hgo); o.ws("{\n"); table->emit (o, ++ind); o.wind(ind).ws("goto *").wstring(o.block().opts->yytarget).ws("[").wstring(yych).ws("];\n"); o.wind(--ind).ws("}\n"); } void Dot::emit(OutputFile &o, const DFA &dfa) const { const std::string &prefix = o.block().opts->tags_prefix; const uint32_t n = cases->cases_size; if (n == 1) { o.wlabel(from->label).ws(" -> ").wlabel(cases->cases[0].to->label).ws("\n"); } else { for (uint32_t i = 0; i < n; ++i) { const Case &c = cases->cases[i]; o.wlabel(from->label).ws(" -> ").wlabel(c.to->label).ws(" [label=\""); for (uint32_t j = 0; j < c.ranges.size(); ++j) { o.wrange(c.ranges[j].first, c.ranges[j].second); } const tcmd_t *cmd = dfa.tcpool[c.tags]; for (const tcmd_t *p = cmd; p; p = p->next) { o.ws("<").wstring(vartag_name(p->lhs, prefix)); if (tcmd_t::iscopy(p)) { o.ws("~").wstring(vartag_name(p->rhs, prefix)); } o.ws(">"); } o.ws("\"]\n"); } } } void Go::emit (OutputFile & o, uint32_t ind, const DFA &dfa) const { if (type == DOT) { info.dot->emit (o, dfa); return; } const bool lookahead = o.block().opts->lookahead; o.wdelay_skip(ind, skip && !lookahead); code_lines_t code; gen_settags(code, dfa, tags, o.block().opts); for (size_t i = 0; i < code.size(); ++i) { o.wind(ind).wstring(code[i]); } o.wdelay_skip(ind, skip && lookahead); if (type == SWITCH_IF) { info.switchif->emit (o, ind, dfa); } else if (type == BITMAP) { info.bitmap->emit (o, ind, dfa); } else if (type == CPGOTO) { info.cpgoto->emit (o, ind, dfa); } } } // namespace re2c re2c-1.0.1/configure.ac0000644000175000017500000000653113143420370011555 00000000000000AC_INIT([re2c],[1.0.1],[re2c-general@lists.sourceforge.net]) AM_INIT_AUTOMAKE([foreign subdir-objects]) AM_SILENT_RULES([yes]) AC_CONFIG_SRCDIR([src/main.cc]) AC_CONFIG_HEADERS([config.h]) AC_SUBST(PACKAGE_DATE, `date +'%d %b %Y'`) AC_SUBST(PACKAGE_VERSION) AC_SUBST(PACKAGE_NAME) AC_SUBST(PACKAGE_TARNAME) AC_SUBST(PACKAGE_RELEASE, ${PACKAGE_RELEASE:-1}) # --enable-docs AC_ARG_ENABLE([docs], [AS_HELP_STRING([--enable-docs], [regenerate manpage])]) AM_CONDITIONAL([REBUILD_DOCS], [test "x$enable_docs" = "xyes"]) AM_COND_IF([REBUILD_DOCS], [ AC_CHECK_PROGS(RST2MAN, [rst2man rst2man.py], no) AS_IF([test "x$RST2MAN" = "xno"], [ AC_MSG_ERROR([need rst2man or rst2man.py for --enable-docs]) ]) ]) # checks for programs AC_PATH_PROG(BISON, bison, no) AC_PROG_CC # used in skeleton tests AC_PROG_CXX AC_PROG_INSTALL # checks for C++ compiler flags AC_SUBST(CXXFLAGSDEFAULT, []) # TRY_CXXFLAG (flag [implied-flags]) # Iff C++ compiler recognizes 'flag', append 'flag' and 'implied-flags' to CXXFLAGSDEFAULT # (Second param 'implied-flags' is needed for warning suppressions '-Wno-': # GCC warns about unrecognized suppressions options only in presence of other warnings, # which makes it hard to test for them with autoconf.) AC_DEFUN([TRY_CXXFLAG], [ AC_MSG_CHECKING([C++ compiler flag $1]) AS_VAR_SET([CXXFLAGS_BACKUP], ["$CXXFLAGS"]) AS_VAR_SET([CXXFLAGS], ["$CXXFLAGS $1"]) AC_LANG_PUSH([C++]) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM()], [ AS_VAR_SET([TRY_CXXFLAG_RESULT], [yes]) AS_VAR_SET([CXXFLAGSDEFAULT], ["$CXXFLAGSDEFAULT $1 $2"]) ], [AS_VAR_SET([TRY_CXXFLAG_RESULT], [no])] ) AC_LANG_POP([C++]) AS_VAR_SET([CXXFLAGS], ["$CXXFLAGS_BACKUP"]) AC_MSG_RESULT([$TRY_CXXFLAG_RESULT]) ]) TRY_CXXFLAG([-std=c++98]) TRY_CXXFLAG([-W]) TRY_CXXFLAG([-Wall]) TRY_CXXFLAG([-Wextra]) TRY_CXXFLAG([-Weffc++]) TRY_CXXFLAG([-pedantic]) TRY_CXXFLAG([-Wformat=2]) TRY_CXXFLAG([-Wredundant-decls]) TRY_CXXFLAG([-Wsuggest-attribute=format]) TRY_CXXFLAG([-Wconversion]) TRY_CXXFLAG([-Wsign-conversion]) TRY_CXXFLAG([-O2]) TRY_CXXFLAG([-Weverything], m4_join([ ], [-Wno-unknown-warning-option], dnl CLANG eats some GCC options only to warn they are unknown [-Wno-reserved-id-macro], dnl to allow header guards of the form '_RE2C_PATH_TO_HEADER_BASENAME_' [-Wno-padded], [-Wno-old-style-cast], dnl RE2C-generated lexer has lots of C-syle casts because of 're2c:yych:conversion = 1;' [-Wno-nested-anon-types], [-Wno-global-constructors])) dnl initialization of global constants with std::numeric_limits<...> (mostly for size_t) # needed by src/c99_stdint.h # avoid AC_INCLUDES_DEFAULT AC_CHECK_HEADERS([stdint.h], [], [], [[]]) # list of possible types to use in typedefs AC_CHECK_SIZEOF([char], [], [[]]) AC_CHECK_SIZEOF([short], [], [[]]) AC_CHECK_SIZEOF([int], [], [[]]) AC_CHECK_SIZEOF([long], [], [[]]) AC_CHECK_SIZEOF([long long], [], [[]]) AC_CHECK_SIZEOF([__int64], [], [[]]) # size of pointers AC_CHECK_SIZEOF([void *], [], [[]]) # 64-bit integer constant suffix AC_CHECK_SIZEOF([0l], [], [[]]) AC_CHECK_SIZEOF([0ll], [], [[]]) AC_CHECK_SIZEOF([0i8], [], [[]]) AC_CONFIG_FILES([\ Makefile \ doc/manpage.rst \ doc/help.rst \ ]) AC_CONFIG_FILES([run_tests.sh], [chmod +x run_tests.sh]) AC_OUTPUT re2c-1.0.1/test/0000755000175000017500000000000013137447265010340 500000000000000re2c-1.0.1/test/unicode_group_Mc.8--encoding-policy(ignore).c0000644000175000017500000002674113137447265020550 00000000000000/* Generated by re2c */ #line 1 "unicode_group_Mc.8--encoding-policy(ignore).re" #include #include "utf8.h" #define YYCTYPE unsigned char bool scan(const YYCTYPE * start, const YYCTYPE * const limit) { __attribute__((unused)) const YYCTYPE * YYMARKER; // silence compiler warnings when YYMARKER is not used # define YYCURSOR start Mc: #line 13 "unicode_group_Mc.8--encoding-policy(ignore).c" { YYCTYPE yych; yych = *YYCURSOR; switch (yych) { case 0xE0: goto yy4; case 0xE1: goto yy5; case 0xEA: goto yy6; case 0xF0: goto yy7; default: goto yy2; } yy2: ++YYCURSOR; yy3: #line 13 "unicode_group_Mc.8--encoding-policy(ignore).re" { return YYCURSOR == limit; } #line 29 "unicode_group_Mc.8--encoding-policy(ignore).c" yy4: yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0xA4: goto yy8; case 0xA5: goto yy10; case 0xA6: case 0xB4: goto yy11; case 0xA7: case 0xAD: goto yy12; case 0xA8: case 0xAA: goto yy13; case 0xA9: goto yy14; case 0xAB: goto yy15; case 0xAC: case 0xB2: goto yy16; case 0xAE: case 0xBC: goto yy17; case 0xAF: goto yy18; case 0xB0: goto yy19; case 0xB1: goto yy20; case 0xB3: goto yy21; case 0xB5: goto yy22; case 0xB6: goto yy23; case 0xB7: goto yy24; case 0xBD: goto yy25; default: goto yy3; } yy5: yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x80: goto yy26; case 0x81: goto yy27; case 0x82: goto yy28; case 0x9E: goto yy29; case 0x9F: goto yy30; case 0xA4: goto yy31; case 0xA6: goto yy32; case 0xA7: goto yy33; case 0xA8: goto yy34; case 0xA9: goto yy35; case 0xAC: goto yy36; case 0xAD: goto yy37; case 0xAE: goto yy38; case 0xAF: goto yy39; case 0xB0: goto yy40; case 0xB3: goto yy41; default: goto yy3; } yy6: yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0xA0: goto yy42; case 0xA2: goto yy43; case 0xA3: goto yy44; case 0xA5: goto yy45; case 0xA6: goto yy46; case 0xA7: goto yy14; case 0xA8: goto yy47; case 0xA9: goto yy48; case 0xAF: goto yy49; default: goto yy3; } yy7: yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x91: goto yy50; case 0x9D: goto yy51; default: goto yy3; } yy8: yych = *++YYCURSOR; switch (yych) { case 0x83: case 0xBB: case 0xBE: case 0xBF: goto yy52; default: goto yy9; } yy9: YYCURSOR = YYMARKER; goto yy3; yy10: yych = *++YYCURSOR; switch (yych) { case 0x80: case 0x89: case 0x8A: case 0x8B: case 0x8C: case 0x8E: case 0x8F: goto yy52; default: goto yy9; } yy11: yych = *++YYCURSOR; switch (yych) { case 0x82: case 0x83: case 0xBE: case 0xBF: goto yy52; default: goto yy9; } yy12: yych = *++YYCURSOR; switch (yych) { case 0x80: case 0x87: case 0x88: case 0x8B: case 0x8C: case 0x97: goto yy52; default: goto yy9; } yy13: yych = *++YYCURSOR; switch (yych) { case 0x83: case 0xBE: case 0xBF: goto yy52; default: goto yy9; } yy14: yych = *++YYCURSOR; switch (yych) { case 0x80: goto yy52; default: goto yy9; } yy15: yych = *++YYCURSOR; switch (yych) { case 0x80: case 0x89: case 0x8B: case 0x8C: goto yy52; default: goto yy9; } yy16: yych = *++YYCURSOR; switch (yych) { case 0x82: case 0x83: case 0xBE: goto yy52; default: goto yy9; } yy17: yych = *++YYCURSOR; switch (yych) { case 0xBE: case 0xBF: goto yy52; default: goto yy9; } yy18: yych = *++YYCURSOR; switch (yych) { case 0x81: case 0x82: case 0x86: case 0x87: case 0x88: case 0x8A: case 0x8B: case 0x8C: case 0x97: goto yy52; default: goto yy9; } yy19: yych = *++YYCURSOR; switch (yych) { case 0x81: case 0x82: case 0x83: goto yy52; default: goto yy9; } yy20: yych = *++YYCURSOR; switch (yych) { case 0x81: case 0x82: case 0x83: case 0x84: goto yy52; default: goto yy9; } yy21: yych = *++YYCURSOR; switch (yych) { case 0x80: case 0x81: case 0x82: case 0x83: case 0x84: case 0x87: case 0x88: case 0x8A: case 0x8B: case 0x95: case 0x96: goto yy52; default: goto yy9; } yy22: yych = *++YYCURSOR; switch (yych) { case 0x80: case 0x86: case 0x87: case 0x88: case 0x8A: case 0x8B: case 0x8C: case 0x97: goto yy52; default: goto yy9; } yy23: yych = *++YYCURSOR; switch (yych) { case 0x82: case 0x83: goto yy52; default: goto yy9; } yy24: yych = *++YYCURSOR; switch (yych) { case 0x8F: case 0x90: case 0x91: case 0x98: case 0x99: case 0x9A: case 0x9B: case 0x9C: case 0x9D: case 0x9E: case 0x9F: case 0xB2: case 0xB3: goto yy52; default: goto yy9; } yy25: yych = *++YYCURSOR; switch (yych) { case 0xBF: goto yy52; default: goto yy9; } yy26: yych = *++YYCURSOR; switch (yych) { case 0xAB: case 0xAC: case 0xB1: case 0xB8: case 0xBB: case 0xBC: goto yy52; default: goto yy9; } yy27: yych = *++YYCURSOR; switch (yych) { case 0x96: case 0x97: case 0xA2: case 0xA3: case 0xA4: case 0xA7: case 0xA8: case 0xA9: case 0xAA: case 0xAB: case 0xAC: case 0xAD: goto yy52; default: goto yy9; } yy28: yych = *++YYCURSOR; switch (yych) { case 0x83: case 0x84: case 0x87: case 0x88: case 0x89: case 0x8A: case 0x8B: case 0x8C: case 0x8F: case 0x9A: case 0x9B: case 0x9C: goto yy52; default: goto yy9; } yy29: yych = *++YYCURSOR; switch (yych) { case 0xB6: case 0xBE: case 0xBF: goto yy52; default: goto yy9; } yy30: yych = *++YYCURSOR; switch (yych) { case 0x80: case 0x81: case 0x82: case 0x83: case 0x84: case 0x85: case 0x87: case 0x88: goto yy52; default: goto yy9; } yy31: yych = *++YYCURSOR; switch (yych) { case 0xA3: case 0xA4: case 0xA5: case 0xA6: case 0xA9: case 0xAA: case 0xAB: case 0xB0: case 0xB1: case 0xB3: case 0xB4: case 0xB5: case 0xB6: case 0xB7: case 0xB8: goto yy52; default: goto yy9; } yy32: yych = *++YYCURSOR; switch (yych) { case 0xB0: case 0xB1: case 0xB2: case 0xB3: case 0xB4: case 0xB5: case 0xB6: case 0xB7: case 0xB8: case 0xB9: case 0xBA: case 0xBB: case 0xBC: case 0xBD: case 0xBE: case 0xBF: goto yy52; default: goto yy9; } yy33: yych = *++YYCURSOR; switch (yych) { case 0x80: case 0x88: case 0x89: goto yy52; default: goto yy9; } yy34: yych = *++YYCURSOR; switch (yych) { case 0x99: case 0x9A: case 0x9B: goto yy52; default: goto yy9; } yy35: yych = *++YYCURSOR; switch (yych) { case 0x95: case 0x97: case 0xA1: case 0xA3: case 0xA4: case 0xAD: case 0xAE: case 0xAF: case 0xB0: case 0xB1: case 0xB2: goto yy52; default: goto yy9; } yy36: yych = *++YYCURSOR; switch (yych) { case 0x84: case 0xB5: case 0xBB: case 0xBD: case 0xBE: case 0xBF: goto yy52; default: goto yy9; } yy37: yych = *++YYCURSOR; switch (yych) { case 0x80: case 0x81: case 0x83: case 0x84: goto yy52; default: goto yy9; } yy38: yych = *++YYCURSOR; switch (yych) { case 0x82: case 0xA1: case 0xA6: case 0xA7: case 0xAA: goto yy52; default: goto yy9; } yy39: yych = *++YYCURSOR; switch (yych) { case 0xA7: case 0xAA: case 0xAB: case 0xAC: case 0xAE: case 0xB2: case 0xB3: goto yy52; default: goto yy9; } yy40: yych = *++YYCURSOR; switch (yych) { case 0xA4: case 0xA5: case 0xA6: case 0xA7: case 0xA8: case 0xA9: case 0xAA: case 0xAB: case 0xB4: case 0xB5: goto yy52; default: goto yy9; } yy41: yych = *++YYCURSOR; switch (yych) { case 0xA1: case 0xB2: goto yy52; default: goto yy9; } yy42: yych = *++YYCURSOR; switch (yych) { case 0xA3: case 0xA4: case 0xA7: goto yy52; default: goto yy9; } yy43: yych = *++YYCURSOR; switch (yych) { case 0x80: case 0x81: case 0xB4: case 0xB5: case 0xB6: case 0xB7: case 0xB8: case 0xB9: case 0xBA: case 0xBB: case 0xBC: case 0xBD: case 0xBE: case 0xBF: goto yy52; default: goto yy9; } yy44: yych = *++YYCURSOR; switch (yych) { case 0x80: case 0x81: case 0x82: case 0x83: goto yy52; default: goto yy9; } yy45: yych = *++YYCURSOR; switch (yych) { case 0x92: case 0x93: goto yy52; default: goto yy9; } yy46: yych = *++YYCURSOR; switch (yych) { case 0x83: case 0xB4: case 0xB5: case 0xBA: case 0xBB: case 0xBD: case 0xBE: case 0xBF: goto yy52; default: goto yy9; } yy47: yych = *++YYCURSOR; switch (yych) { case 0xAF: case 0xB0: case 0xB3: case 0xB4: goto yy52; default: goto yy9; } yy48: yych = *++YYCURSOR; switch (yych) { case 0x8D: case 0xBB: goto yy52; default: goto yy9; } yy49: yych = *++YYCURSOR; switch (yych) { case 0xA3: case 0xA4: case 0xA6: case 0xA7: case 0xA9: case 0xAA: case 0xAC: goto yy52; default: goto yy9; } yy50: yych = *++YYCURSOR; switch (yych) { case 0x80: goto yy54; case 0x82: goto yy55; default: goto yy9; } yy51: yych = *++YYCURSOR; switch (yych) { case 0x85: goto yy56; default: goto yy9; } yy52: ++YYCURSOR; #line 12 "unicode_group_Mc.8--encoding-policy(ignore).re" { goto Mc; } #line 576 "unicode_group_Mc.8--encoding-policy(ignore).c" yy54: yych = *++YYCURSOR; switch (yych) { case 0x80: case 0x82: goto yy52; default: goto yy9; } yy55: yych = *++YYCURSOR; switch (yych) { case 0x82: case 0xB0: case 0xB1: case 0xB2: case 0xB7: case 0xB8: goto yy52; default: goto yy9; } yy56: yych = *++YYCURSOR; switch (yych) { case 0xA5: case 0xA6: case 0xAD: case 0xAE: case 0xAF: case 0xB0: case 0xB1: case 0xB2: goto yy52; default: goto yy9; } } #line 14 "unicode_group_Mc.8--encoding-policy(ignore).re" } static const unsigned int chars_Mc [] = {0x903,0x903, 0x93b,0x93b, 0x93e,0x940, 0x949,0x94c, 0x94e,0x94f, 0x982,0x983, 0x9be,0x9c0, 0x9c7,0x9c8, 0x9cb,0x9cc, 0x9d7,0x9d7, 0xa03,0xa03, 0xa3e,0xa40, 0xa83,0xa83, 0xabe,0xac0, 0xac9,0xac9, 0xacb,0xacc, 0xb02,0xb03, 0xb3e,0xb3e, 0xb40,0xb40, 0xb47,0xb48, 0xb4b,0xb4c, 0xb57,0xb57, 0xbbe,0xbbf, 0xbc1,0xbc2, 0xbc6,0xbc8, 0xbca,0xbcc, 0xbd7,0xbd7, 0xc01,0xc03, 0xc41,0xc44, 0xc82,0xc83, 0xcbe,0xcbe, 0xcc0,0xcc4, 0xcc7,0xcc8, 0xcca,0xccb, 0xcd5,0xcd6, 0xd02,0xd03, 0xd3e,0xd40, 0xd46,0xd48, 0xd4a,0xd4c, 0xd57,0xd57, 0xd82,0xd83, 0xdcf,0xdd1, 0xdd8,0xddf, 0xdf2,0xdf3, 0xf3e,0xf3f, 0xf7f,0xf7f, 0x102b,0x102c, 0x1031,0x1031, 0x1038,0x1038, 0x103b,0x103c, 0x1056,0x1057, 0x1062,0x1064, 0x1067,0x106d, 0x1083,0x1084, 0x1087,0x108c, 0x108f,0x108f, 0x109a,0x109c, 0x17b6,0x17b6, 0x17be,0x17c5, 0x17c7,0x17c8, 0x1923,0x1926, 0x1929,0x192b, 0x1930,0x1931, 0x1933,0x1938, 0x19b0,0x19c0, 0x19c8,0x19c9, 0x1a19,0x1a1b, 0x1a55,0x1a55, 0x1a57,0x1a57, 0x1a61,0x1a61, 0x1a63,0x1a64, 0x1a6d,0x1a72, 0x1b04,0x1b04, 0x1b35,0x1b35, 0x1b3b,0x1b3b, 0x1b3d,0x1b41, 0x1b43,0x1b44, 0x1b82,0x1b82, 0x1ba1,0x1ba1, 0x1ba6,0x1ba7, 0x1baa,0x1baa, 0x1be7,0x1be7, 0x1bea,0x1bec, 0x1bee,0x1bee, 0x1bf2,0x1bf3, 0x1c24,0x1c2b, 0x1c34,0x1c35, 0x1ce1,0x1ce1, 0x1cf2,0x1cf2, 0xa823,0xa824, 0xa827,0xa827, 0xa880,0xa881, 0xa8b4,0xa8c3, 0xa952,0xa953, 0xa983,0xa983, 0xa9b4,0xa9b5, 0xa9ba,0xa9bb, 0xa9bd,0xa9c0, 0xaa2f,0xaa30, 0xaa33,0xaa34, 0xaa4d,0xaa4d, 0xaa7b,0xaa7b, 0xabe3,0xabe4, 0xabe6,0xabe7, 0xabe9,0xabea, 0xabec,0xabec, 0x11000,0x11000, 0x11002,0x11002, 0x11082,0x11082, 0x110b0,0x110b2, 0x110b7,0x110b8, 0x1d165,0x1d166, 0x1d16d,0x1d172, 0x0,0x0}; static unsigned int encode_utf8 (const unsigned int * ranges, unsigned int ranges_count, unsigned char * s) { unsigned char * const s_start = s; for (unsigned int i = 0; i < ranges_count - 2; i += 2) for (unsigned int j = ranges[i]; j <= ranges[i + 1]; ++j) s += re2c::utf8::rune_to_bytes (s, j); re2c::utf8::rune_to_bytes (s, ranges[ranges_count - 1]); return s - s_start + 1; } int main () { YYCTYPE * buffer_Mc = new YYCTYPE [1152]; unsigned int buffer_len = encode_utf8 (chars_Mc, sizeof (chars_Mc) / sizeof (unsigned int), buffer_Mc); if (!scan (reinterpret_cast (buffer_Mc), reinterpret_cast (buffer_Mc + buffer_len))) printf("test 'Mc' failed\n"); delete [] buffer_Mc; return 0; } re2c-1.0.1/test/unicode_group_No.x--encoding-policy(substitute).re0000644000175000017500000000471313063315632021762 00000000000000#include #include "utf16.h" #define YYCTYPE unsigned short bool scan(const YYCTYPE * start, const YYCTYPE * const limit) { __attribute__((unused)) const YYCTYPE * YYMARKER; // silence compiler warnings when YYMARKER is not used # define YYCURSOR start No: /*!re2c re2c:yyfill:enable = 0; No = [\xb2-\xb3\xb9-\xb9\xbc-\xbe\u09f4-\u09f9\u0b72-\u0b77\u0bf0-\u0bf2\u0c78-\u0c7e\u0d70-\u0d75\u0f2a-\u0f33\u1369-\u137c\u17f0-\u17f9\u19da-\u19da\u2070-\u2070\u2074-\u2079\u2080-\u2089\u2150-\u215f\u2189-\u2189\u2460-\u249b\u24ea-\u24ff\u2776-\u2793\u2cfd-\u2cfd\u3192-\u3195\u3220-\u3229\u3251-\u325f\u3280-\u3289\u32b1-\u32bf\ua830-\ua835\U00010107-\U00010133\U00010175-\U00010178\U0001018a-\U0001018a\U00010320-\U00010323\U00010858-\U0001085f\U00010916-\U0001091b\U00010a40-\U00010a47\U00010a7d-\U00010a7e\U00010b58-\U00010b5f\U00010b78-\U00010b7f\U00010e60-\U00010e7e\U00011052-\U00011065\U0001d360-\U0001d371\U0001f100-\U0001f10a]; No { goto No; } * { return YYCURSOR == limit; } */ } static const unsigned int chars_No [] = {0xb2,0xb3, 0xb9,0xb9, 0xbc,0xbe, 0x9f4,0x9f9, 0xb72,0xb77, 0xbf0,0xbf2, 0xc78,0xc7e, 0xd70,0xd75, 0xf2a,0xf33, 0x1369,0x137c, 0x17f0,0x17f9, 0x19da,0x19da, 0x2070,0x2070, 0x2074,0x2079, 0x2080,0x2089, 0x2150,0x215f, 0x2189,0x2189, 0x2460,0x249b, 0x24ea,0x24ff, 0x2776,0x2793, 0x2cfd,0x2cfd, 0x3192,0x3195, 0x3220,0x3229, 0x3251,0x325f, 0x3280,0x3289, 0x32b1,0x32bf, 0xa830,0xa835, 0x10107,0x10133, 0x10175,0x10178, 0x1018a,0x1018a, 0x10320,0x10323, 0x10858,0x1085f, 0x10916,0x1091b, 0x10a40,0x10a47, 0x10a7d,0x10a7e, 0x10b58,0x10b5f, 0x10b78,0x10b7f, 0x10e60,0x10e7e, 0x11052,0x11065, 0x1d360,0x1d371, 0x1f100,0x1f10a, 0x0,0x0}; static unsigned int encode_utf16 (const unsigned int * ranges, unsigned int ranges_count, unsigned short * s) { unsigned short * const s_start = s; for (unsigned int i = 0; i < ranges_count; i += 2) for (unsigned int j = ranges[i]; j <= ranges[i + 1]; ++j) { if (j <= re2c::utf16::MAX_1WORD_RUNE) *s++ = j; else { *s++ = re2c::utf16::lead_surr(j); *s++ = re2c::utf16::trail_surr(j); } } return s - s_start; } int main () { YYCTYPE * buffer_No = new YYCTYPE [914]; unsigned int buffer_len = encode_utf16 (chars_No, sizeof (chars_No) / sizeof (unsigned int), buffer_No); if (!scan (reinterpret_cast (buffer_No), reinterpret_cast (buffer_No + buffer_len))) printf("test 'No' failed\n"); delete [] buffer_No; return 0; } re2c-1.0.1/test/unicode_group_Cc.x--encoding-policy(substitute).re0000644000175000017500000000235113063315632021727 00000000000000#include #include "utf16.h" #define YYCTYPE unsigned short bool scan(const YYCTYPE * start, const YYCTYPE * const limit) { __attribute__((unused)) const YYCTYPE * YYMARKER; // silence compiler warnings when YYMARKER is not used # define YYCURSOR start Cc: /*!re2c re2c:yyfill:enable = 0; Cc = [\x00-\x1f\x7f-\x9f]; Cc { goto Cc; } * { return YYCURSOR == limit; } */ } static const unsigned int chars_Cc [] = {0x0,0x1f, 0x7f,0x9f, 0x20,0x20}; static unsigned int encode_utf16 (const unsigned int * ranges, unsigned int ranges_count, unsigned short * s) { unsigned short * const s_start = s; for (unsigned int i = 0; i < ranges_count; i += 2) for (unsigned int j = ranges[i]; j <= ranges[i + 1]; ++j) { if (j <= re2c::utf16::MAX_1WORD_RUNE) *s++ = j; else { *s++ = re2c::utf16::lead_surr(j); *s++ = re2c::utf16::trail_surr(j); } } return s - s_start; } int main () { YYCTYPE * buffer_Cc = new YYCTYPE [132]; unsigned int buffer_len = encode_utf16 (chars_Cc, sizeof (chars_Cc) / sizeof (unsigned int), buffer_Cc); if (!scan (reinterpret_cast (buffer_Cc), reinterpret_cast (buffer_Cc + buffer_len))) printf("test 'Cc' failed\n"); delete [] buffer_Cc; return 0; } re2c-1.0.1/test/control_flow_fail.--skeleton.re0000644000175000017500000000007713063315632016261 00000000000000/*!re2c [^] [^] "a" { action1 } [^] [^a] { action2 } */ re2c-1.0.1/test/line-01.re0000644000175000017500000000033113063315632011740 00000000000000const char* scan(unsigned char* in) { /*!re2c #line 1 "a" "a" { return "a"; } #line 2 "b" "b" { return "b"; } "c" { return "c"; } #line 1 "d" "d" { return "d"; } . { return "."; } #line 1 "e" */ } re2c-1.0.1/test/unicode_group_Lo.u--encoding-policy(substitute).re0000644000175000017500000002453213063315632021756 00000000000000#include #define YYCTYPE unsigned int bool scan(const YYCTYPE * start, const YYCTYPE * const limit) { __attribute__((unused)) const YYCTYPE * YYMARKER; // silence compiler warnings when YYMARKER is not used # define YYCURSOR start Lo: /*!re2c re2c:yyfill:enable = 0; Lo = [\u01bb-\u01bb\u01c0-\u01c3\u0294-\u0294\u05d0-\u05ea\u05f0-\u05f2\u0620-\u063f\u0641-\u064a\u066e-\u066f\u0671-\u06d3\u06d5-\u06d5\u06ee-\u06ef\u06fa-\u06fc\u06ff-\u06ff\u0710-\u0710\u0712-\u072f\u074d-\u07a5\u07b1-\u07b1\u07ca-\u07ea\u0800-\u0815\u0840-\u0858\u0904-\u0939\u093d-\u093d\u0950-\u0950\u0958-\u0961\u0972-\u0977\u0979-\u097f\u0985-\u098c\u098f-\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2-\u09b2\u09b6-\u09b9\u09bd-\u09bd\u09ce-\u09ce\u09dc-\u09dd\u09df-\u09e1\u09f0-\u09f1\u0a05-\u0a0a\u0a0f-\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32-\u0a33\u0a35-\u0a36\u0a38-\u0a39\u0a59-\u0a5c\u0a5e-\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2-\u0ab3\u0ab5-\u0ab9\u0abd-\u0abd\u0ad0-\u0ad0\u0ae0-\u0ae1\u0b05-\u0b0c\u0b0f-\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32-\u0b33\u0b35-\u0b39\u0b3d-\u0b3d\u0b5c-\u0b5d\u0b5f-\u0b61\u0b71-\u0b71\u0b83-\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99-\u0b9a\u0b9c-\u0b9c\u0b9e-\u0b9f\u0ba3-\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0-\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d-\u0c3d\u0c58-\u0c59\u0c60-\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd-\u0cbd\u0cde-\u0cde\u0ce0-\u0ce1\u0cf1-\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d-\u0d3d\u0d4e-\u0d4e\u0d60-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd-\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32-\u0e33\u0e40-\u0e45\u0e81-\u0e82\u0e84-\u0e84\u0e87-\u0e88\u0e8a-\u0e8a\u0e8d-\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5-\u0ea5\u0ea7-\u0ea7\u0eaa-\u0eab\u0ead-\u0eb0\u0eb2-\u0eb3\u0ebd-\u0ebd\u0ec0-\u0ec4\u0edc-\u0edd\u0f00-\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f-\u103f\u1050-\u1055\u105a-\u105d\u1061-\u1061\u1065-\u1066\u106e-\u1070\u1075-\u1081\u108e-\u108e\u10d0-\u10fa\u1100-\u1248\u124a-\u124d\u1250-\u1256\u1258-\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0-\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17dc-\u17dc\u1820-\u1842\u1844-\u1877\u1880-\u18a8\u18aa-\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae-\u1baf\u1bc0-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c77\u1ce9-\u1cec\u1cee-\u1cf1\u2135-\u2138\u2d30-\u2d65\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3006-\u3006\u303c-\u303c\u3041-\u3096\u309f-\u309f\u30a1-\u30fa\u30ff-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcb\ua000-\ua014\ua016-\ua48c\ua4d0-\ua4f7\ua500-\ua60b\ua610-\ua61f\ua62a-\ua62b\ua66e-\ua66e\ua6a0-\ua6e5\ua7fb-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb-\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa6f\uaa71-\uaa76\uaa7a-\uaa7a\uaa80-\uaaaf\uaab1-\uaab1\uaab5-\uaab6\uaab9-\uaabd\uaac0-\uaac0\uaac2-\uaac2\uaadb-\uaadc\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa2d\ufa30-\ufa6d\ufa70-\ufad9\ufb1d-\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e-\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff66-\uff6f\uff71-\uff9d\uffa0-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc\U00010000-\U0001000b\U0001000d-\U00010026\U00010028-\U0001003a\U0001003c-\U0001003d\U0001003f-\U0001004d\U00010050-\U0001005d\U00010080-\U000100fa\U00010280-\U0001029c\U000102a0-\U000102d0\U00010300-\U0001031e\U00010330-\U00010340\U00010342-\U00010349\U00010380-\U0001039d\U000103a0-\U000103c3\U000103c8-\U000103cf\U00010450-\U0001049d\U00010800-\U00010805\U00010808-\U00010808\U0001080a-\U00010835\U00010837-\U00010838\U0001083c-\U0001083c\U0001083f-\U00010855\U00010900-\U00010915\U00010920-\U00010939\U00010a00-\U00010a00\U00010a10-\U00010a13\U00010a15-\U00010a17\U00010a19-\U00010a33\U00010a60-\U00010a7c\U00010b00-\U00010b35\U00010b40-\U00010b55\U00010b60-\U00010b72\U00010c00-\U00010c48\U00011003-\U00011037\U00011083-\U000110af\U00012000-\U0001236e\U00013000-\U0001342e\U00016800-\U00016a38\U0001b000-\U0001b001\U00020000-\U0002a6d6\U0002a700-\U0002b734\U0002b740-\U0002b81d\U0002f800-\U0002fa1d]; Lo { goto Lo; } * { return YYCURSOR == limit; } */ } static const unsigned int chars_Lo [] = {0x1bb,0x1bb, 0x1c0,0x1c3, 0x294,0x294, 0x5d0,0x5ea, 0x5f0,0x5f2, 0x620,0x63f, 0x641,0x64a, 0x66e,0x66f, 0x671,0x6d3, 0x6d5,0x6d5, 0x6ee,0x6ef, 0x6fa,0x6fc, 0x6ff,0x6ff, 0x710,0x710, 0x712,0x72f, 0x74d,0x7a5, 0x7b1,0x7b1, 0x7ca,0x7ea, 0x800,0x815, 0x840,0x858, 0x904,0x939, 0x93d,0x93d, 0x950,0x950, 0x958,0x961, 0x972,0x977, 0x979,0x97f, 0x985,0x98c, 0x98f,0x990, 0x993,0x9a8, 0x9aa,0x9b0, 0x9b2,0x9b2, 0x9b6,0x9b9, 0x9bd,0x9bd, 0x9ce,0x9ce, 0x9dc,0x9dd, 0x9df,0x9e1, 0x9f0,0x9f1, 0xa05,0xa0a, 0xa0f,0xa10, 0xa13,0xa28, 0xa2a,0xa30, 0xa32,0xa33, 0xa35,0xa36, 0xa38,0xa39, 0xa59,0xa5c, 0xa5e,0xa5e, 0xa72,0xa74, 0xa85,0xa8d, 0xa8f,0xa91, 0xa93,0xaa8, 0xaaa,0xab0, 0xab2,0xab3, 0xab5,0xab9, 0xabd,0xabd, 0xad0,0xad0, 0xae0,0xae1, 0xb05,0xb0c, 0xb0f,0xb10, 0xb13,0xb28, 0xb2a,0xb30, 0xb32,0xb33, 0xb35,0xb39, 0xb3d,0xb3d, 0xb5c,0xb5d, 0xb5f,0xb61, 0xb71,0xb71, 0xb83,0xb83, 0xb85,0xb8a, 0xb8e,0xb90, 0xb92,0xb95, 0xb99,0xb9a, 0xb9c,0xb9c, 0xb9e,0xb9f, 0xba3,0xba4, 0xba8,0xbaa, 0xbae,0xbb9, 0xbd0,0xbd0, 0xc05,0xc0c, 0xc0e,0xc10, 0xc12,0xc28, 0xc2a,0xc33, 0xc35,0xc39, 0xc3d,0xc3d, 0xc58,0xc59, 0xc60,0xc61, 0xc85,0xc8c, 0xc8e,0xc90, 0xc92,0xca8, 0xcaa,0xcb3, 0xcb5,0xcb9, 0xcbd,0xcbd, 0xcde,0xcde, 0xce0,0xce1, 0xcf1,0xcf2, 0xd05,0xd0c, 0xd0e,0xd10, 0xd12,0xd3a, 0xd3d,0xd3d, 0xd4e,0xd4e, 0xd60,0xd61, 0xd7a,0xd7f, 0xd85,0xd96, 0xd9a,0xdb1, 0xdb3,0xdbb, 0xdbd,0xdbd, 0xdc0,0xdc6, 0xe01,0xe30, 0xe32,0xe33, 0xe40,0xe45, 0xe81,0xe82, 0xe84,0xe84, 0xe87,0xe88, 0xe8a,0xe8a, 0xe8d,0xe8d, 0xe94,0xe97, 0xe99,0xe9f, 0xea1,0xea3, 0xea5,0xea5, 0xea7,0xea7, 0xeaa,0xeab, 0xead,0xeb0, 0xeb2,0xeb3, 0xebd,0xebd, 0xec0,0xec4, 0xedc,0xedd, 0xf00,0xf00, 0xf40,0xf47, 0xf49,0xf6c, 0xf88,0xf8c, 0x1000,0x102a, 0x103f,0x103f, 0x1050,0x1055, 0x105a,0x105d, 0x1061,0x1061, 0x1065,0x1066, 0x106e,0x1070, 0x1075,0x1081, 0x108e,0x108e, 0x10d0,0x10fa, 0x1100,0x1248, 0x124a,0x124d, 0x1250,0x1256, 0x1258,0x1258, 0x125a,0x125d, 0x1260,0x1288, 0x128a,0x128d, 0x1290,0x12b0, 0x12b2,0x12b5, 0x12b8,0x12be, 0x12c0,0x12c0, 0x12c2,0x12c5, 0x12c8,0x12d6, 0x12d8,0x1310, 0x1312,0x1315, 0x1318,0x135a, 0x1380,0x138f, 0x13a0,0x13f4, 0x1401,0x166c, 0x166f,0x167f, 0x1681,0x169a, 0x16a0,0x16ea, 0x1700,0x170c, 0x170e,0x1711, 0x1720,0x1731, 0x1740,0x1751, 0x1760,0x176c, 0x176e,0x1770, 0x1780,0x17b3, 0x17dc,0x17dc, 0x1820,0x1842, 0x1844,0x1877, 0x1880,0x18a8, 0x18aa,0x18aa, 0x18b0,0x18f5, 0x1900,0x191c, 0x1950,0x196d, 0x1970,0x1974, 0x1980,0x19ab, 0x19c1,0x19c7, 0x1a00,0x1a16, 0x1a20,0x1a54, 0x1b05,0x1b33, 0x1b45,0x1b4b, 0x1b83,0x1ba0, 0x1bae,0x1baf, 0x1bc0,0x1be5, 0x1c00,0x1c23, 0x1c4d,0x1c4f, 0x1c5a,0x1c77, 0x1ce9,0x1cec, 0x1cee,0x1cf1, 0x2135,0x2138, 0x2d30,0x2d65, 0x2d80,0x2d96, 0x2da0,0x2da6, 0x2da8,0x2dae, 0x2db0,0x2db6, 0x2db8,0x2dbe, 0x2dc0,0x2dc6, 0x2dc8,0x2dce, 0x2dd0,0x2dd6, 0x2dd8,0x2dde, 0x3006,0x3006, 0x303c,0x303c, 0x3041,0x3096, 0x309f,0x309f, 0x30a1,0x30fa, 0x30ff,0x30ff, 0x3105,0x312d, 0x3131,0x318e, 0x31a0,0x31ba, 0x31f0,0x31ff, 0x3400,0x4db5, 0x4e00,0x9fcb, 0xa000,0xa014, 0xa016,0xa48c, 0xa4d0,0xa4f7, 0xa500,0xa60b, 0xa610,0xa61f, 0xa62a,0xa62b, 0xa66e,0xa66e, 0xa6a0,0xa6e5, 0xa7fb,0xa801, 0xa803,0xa805, 0xa807,0xa80a, 0xa80c,0xa822, 0xa840,0xa873, 0xa882,0xa8b3, 0xa8f2,0xa8f7, 0xa8fb,0xa8fb, 0xa90a,0xa925, 0xa930,0xa946, 0xa960,0xa97c, 0xa984,0xa9b2, 0xaa00,0xaa28, 0xaa40,0xaa42, 0xaa44,0xaa4b, 0xaa60,0xaa6f, 0xaa71,0xaa76, 0xaa7a,0xaa7a, 0xaa80,0xaaaf, 0xaab1,0xaab1, 0xaab5,0xaab6, 0xaab9,0xaabd, 0xaac0,0xaac0, 0xaac2,0xaac2, 0xaadb,0xaadc, 0xab01,0xab06, 0xab09,0xab0e, 0xab11,0xab16, 0xab20,0xab26, 0xab28,0xab2e, 0xabc0,0xabe2, 0xac00,0xd7a3, 0xd7b0,0xd7c6, 0xd7cb,0xd7fb, 0xf900,0xfa2d, 0xfa30,0xfa6d, 0xfa70,0xfad9, 0xfb1d,0xfb1d, 0xfb1f,0xfb28, 0xfb2a,0xfb36, 0xfb38,0xfb3c, 0xfb3e,0xfb3e, 0xfb40,0xfb41, 0xfb43,0xfb44, 0xfb46,0xfbb1, 0xfbd3,0xfd3d, 0xfd50,0xfd8f, 0xfd92,0xfdc7, 0xfdf0,0xfdfb, 0xfe70,0xfe74, 0xfe76,0xfefc, 0xff66,0xff6f, 0xff71,0xff9d, 0xffa0,0xffbe, 0xffc2,0xffc7, 0xffca,0xffcf, 0xffd2,0xffd7, 0xffda,0xffdc, 0x10000,0x1000b, 0x1000d,0x10026, 0x10028,0x1003a, 0x1003c,0x1003d, 0x1003f,0x1004d, 0x10050,0x1005d, 0x10080,0x100fa, 0x10280,0x1029c, 0x102a0,0x102d0, 0x10300,0x1031e, 0x10330,0x10340, 0x10342,0x10349, 0x10380,0x1039d, 0x103a0,0x103c3, 0x103c8,0x103cf, 0x10450,0x1049d, 0x10800,0x10805, 0x10808,0x10808, 0x1080a,0x10835, 0x10837,0x10838, 0x1083c,0x1083c, 0x1083f,0x10855, 0x10900,0x10915, 0x10920,0x10939, 0x10a00,0x10a00, 0x10a10,0x10a13, 0x10a15,0x10a17, 0x10a19,0x10a33, 0x10a60,0x10a7c, 0x10b00,0x10b35, 0x10b40,0x10b55, 0x10b60,0x10b72, 0x10c00,0x10c48, 0x11003,0x11037, 0x11083,0x110af, 0x12000,0x1236e, 0x13000,0x1342e, 0x16800,0x16a38, 0x1b000,0x1b001, 0x20000,0x2a6d6, 0x2a700,0x2b734, 0x2b740,0x2b81d, 0x2f800,0x2fa1d, 0x0,0x0}; static unsigned int encode_utf32 (const unsigned int * ranges, unsigned int ranges_count, unsigned int * s) { unsigned int * const s_start = s; for (unsigned int i = 0; i < ranges_count; i += 2) for (unsigned int j = ranges[i]; j <= ranges[i + 1]; ++j) *s++ = j; return s - s_start; } int main () { YYCTYPE * buffer_Lo = new YYCTYPE [97085]; unsigned int buffer_len = encode_utf32 (chars_Lo, sizeof (chars_Lo) / sizeof (unsigned int), buffer_Lo); if (!scan (reinterpret_cast (buffer_Lo), reinterpret_cast (buffer_Lo + buffer_len))) printf("test 'Lo' failed\n"); delete [] buffer_Lo; return 0; } re2c-1.0.1/test/unicode_group_Zl.x--encoding-policy(substitute).c0000644000175000017500000000330013063315632021576 00000000000000/* Generated by re2c */ #line 1 "unicode_group_Zl.x--encoding-policy(substitute).re" #include #include "utf16.h" #define YYCTYPE unsigned short bool scan(const YYCTYPE * start, const YYCTYPE * const limit) { __attribute__((unused)) const YYCTYPE * YYMARKER; // silence compiler warnings when YYMARKER is not used # define YYCURSOR start Zl: #line 13 "unicode_group_Zl.x--encoding-policy(substitute).c" { YYCTYPE yych; yych = *YYCURSOR; if (yych == 0x2028) goto yy4; ++YYCURSOR; #line 13 "unicode_group_Zl.x--encoding-policy(substitute).re" { return YYCURSOR == limit; } #line 21 "unicode_group_Zl.x--encoding-policy(substitute).c" yy4: ++YYCURSOR; #line 12 "unicode_group_Zl.x--encoding-policy(substitute).re" { goto Zl; } #line 26 "unicode_group_Zl.x--encoding-policy(substitute).c" } #line 14 "unicode_group_Zl.x--encoding-policy(substitute).re" } static const unsigned int chars_Zl [] = {0x2028,0x2028, 0x0,0x0}; static unsigned int encode_utf16 (const unsigned int * ranges, unsigned int ranges_count, unsigned short * s) { unsigned short * const s_start = s; for (unsigned int i = 0; i < ranges_count; i += 2) for (unsigned int j = ranges[i]; j <= ranges[i + 1]; ++j) { if (j <= re2c::utf16::MAX_1WORD_RUNE) *s++ = j; else { *s++ = re2c::utf16::lead_surr(j); *s++ = re2c::utf16::trail_surr(j); } } return s - s_start; } int main () { YYCTYPE * buffer_Zl = new YYCTYPE [4]; unsigned int buffer_len = encode_utf16 (chars_Zl, sizeof (chars_Zl) / sizeof (unsigned int), buffer_Zl); if (!scan (reinterpret_cast (buffer_Zl), reinterpret_cast (buffer_Zl + buffer_len))) printf("test 'Zl' failed\n"); delete [] buffer_Zl; return 0; } re2c-1.0.1/test/unicode_group_Pi.8--encoding-policy(ignore).re0000644000175000017500000000267413063315632020732 00000000000000#include #include "utf8.h" #define YYCTYPE unsigned char bool scan(const YYCTYPE * start, const YYCTYPE * const limit) { __attribute__((unused)) const YYCTYPE * YYMARKER; // silence compiler warnings when YYMARKER is not used # define YYCURSOR start Pi: /*!re2c re2c:yyfill:enable = 0; Pi = [\xab-\xab\u2018-\u2018\u201b-\u201c\u201f-\u201f\u2039-\u2039\u2e02-\u2e02\u2e04-\u2e04\u2e09-\u2e09\u2e0c-\u2e0c\u2e1c-\u2e1c\u2e20-\u2e20]; Pi { goto Pi; } * { return YYCURSOR == limit; } */ } static const unsigned int chars_Pi [] = {0xab,0xab, 0x2018,0x2018, 0x201b,0x201c, 0x201f,0x201f, 0x2039,0x2039, 0x2e02,0x2e02, 0x2e04,0x2e04, 0x2e09,0x2e09, 0x2e0c,0x2e0c, 0x2e1c,0x2e1c, 0x2e20,0x2e20, 0x0,0x0}; static unsigned int encode_utf8 (const unsigned int * ranges, unsigned int ranges_count, unsigned char * s) { unsigned char * const s_start = s; for (unsigned int i = 0; i < ranges_count - 2; i += 2) for (unsigned int j = ranges[i]; j <= ranges[i + 1]; ++j) s += re2c::utf8::rune_to_bytes (s, j); re2c::utf8::rune_to_bytes (s, ranges[ranges_count - 1]); return s - s_start + 1; } int main () { YYCTYPE * buffer_Pi = new YYCTYPE [52]; unsigned int buffer_len = encode_utf8 (chars_Pi, sizeof (chars_Pi) / sizeof (unsigned int), buffer_Pi); if (!scan (reinterpret_cast (buffer_Pi), reinterpret_cast (buffer_Pi + buffer_len))) printf("test 'Pi' failed\n"); delete [] buffer_Pi; return 0; } re2c-1.0.1/test/cvsignore.ub.c0000644000175000017500000001417713063315632013030 00000000000000/* Generated by re2c */ #line 1 "cvsignore.ub.re" #define YYFILL(n) if (cursor >= limit) break; #define YYCTYPE unsigned int #define YYCURSOR cursor #define YYLIMIT limit #define YYMARKER marker #line 16 "cvsignore.ub.re" #define APPEND(text) \ append(output, outsize, text, sizeof(text) - sizeof(YYCTYPE)) inline void append(YYCTYPE *output, size_t & outsize, const YYCTYPE * text, size_t len) { memcpy(output + outsize, text, len); outsize += (len / sizeof(YYCTYPE)); } void scan(YYCTYPE *pText, size_t *pSize, int *pbChanged) { // rule // scan lines // find $ in lines // compact $: .. $ to $$ YYCTYPE *output; const YYCTYPE *cursor, *limit, *marker; cursor = marker = output = *pText; size_t insize = *pSize; size_t outsize = 0; limit = cursor + insize; while(1) { loop: #line 43 "cvsignore.ub.c" { YYCTYPE yych; static const unsigned char yybm[] = { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11); yych = *YYCURSOR; if (yych == '$') goto yy4; ++YYCURSOR; yy3: #line 53 "cvsignore.ub.re" { output[outsize++] = cursor[-1]; if (cursor >= limit) break; goto loop; } #line 87 "cvsignore.ub.c" yy4: yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 'D': goto yy5; case 'I': goto yy7; case 'L': goto yy8; case 'R': goto yy9; case 'S': goto yy10; default: goto yy3; } yy5: yych = *++YYCURSOR; if (yych == 'a') goto yy11; yy6: YYCURSOR = YYMARKER; goto yy3; yy7: yych = *++YYCURSOR; if (yych == 'd') goto yy12; goto yy6; yy8: yych = *++YYCURSOR; if (yych == 'o') goto yy13; goto yy6; yy9: yych = *++YYCURSOR; if (yych == 'e') goto yy14; goto yy6; yy10: yych = *++YYCURSOR; if (yych == 'o') goto yy15; goto yy6; yy11: yych = *++YYCURSOR; if (yych == 't') goto yy16; goto yy6; yy12: yych = *++YYCURSOR; if (yych == '$') goto yy17; if (yych == ':') goto yy19; goto yy6; yy13: yych = *++YYCURSOR; if (yych == 'g') goto yy20; goto yy6; yy14: yych = *++YYCURSOR; if (yych == 'v') goto yy21; goto yy6; yy15: yych = *++YYCURSOR; if (yych == 'u') goto yy22; goto yy6; yy16: yych = *++YYCURSOR; if (yych == 'e') goto yy23; goto yy6; yy17: ++YYCURSOR; #line 49 "cvsignore.ub.re" { APPEND(L"$" L"Id$"); goto loop; } #line 149 "cvsignore.ub.c" yy19: yych = *++YYCURSOR; if (yych == '$') goto yy6; goto yy25; yy20: yych = *++YYCURSOR; if (yych == '$') goto yy26; if (yych == ':') goto yy28; goto yy6; yy21: yych = *++YYCURSOR; if (yych == 'i') goto yy29; goto yy6; yy22: yych = *++YYCURSOR; if (yych == 'r') goto yy30; goto yy6; yy23: yych = *++YYCURSOR; if (yych == '$') goto yy31; if (yych == ':') goto yy33; goto yy6; yy24: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy25: if (yych & ~0xFF) { goto yy24; } else if (yybm[0+yych] & 128) { goto yy24; } if (yych <= '\n') goto yy6; goto yy17; yy26: ++YYCURSOR; #line 50 "cvsignore.ub.re" { APPEND(L"$" L"Log$"); goto loop; } #line 188 "cvsignore.ub.c" yy28: yych = *++YYCURSOR; if (yych == '$') goto yy6; goto yy35; yy29: yych = *++YYCURSOR; if (yych == 's') goto yy36; goto yy6; yy30: yych = *++YYCURSOR; if (yych == 'c') goto yy37; goto yy6; yy31: ++YYCURSOR; #line 48 "cvsignore.ub.re" { APPEND(L"$" L"Date$"); goto loop; } #line 205 "cvsignore.ub.c" yy33: yych = *++YYCURSOR; if (yych == '$') goto yy6; goto yy39; yy34: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy35: if (yych == '\n') goto yy6; if (yych == '$') goto yy26; goto yy34; yy36: yych = *++YYCURSOR; if (yych == 'i') goto yy40; goto yy6; yy37: yych = *++YYCURSOR; if (yych == 'e') goto yy41; goto yy6; yy38: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy39: if (yych == '\n') goto yy6; if (yych == '$') goto yy31; goto yy38; yy40: yych = *++YYCURSOR; if (yych == 'o') goto yy42; goto yy6; yy41: yych = *++YYCURSOR; if (yych == '$') goto yy43; if (yych == ':') goto yy45; goto yy6; yy42: yych = *++YYCURSOR; if (yych == 'n') goto yy46; goto yy6; yy43: ++YYCURSOR; #line 52 "cvsignore.ub.re" { APPEND(L"$" L"Source$"); goto loop; } #line 251 "cvsignore.ub.c" yy45: yych = *++YYCURSOR; if (yych == '$') goto yy6; goto yy48; yy46: yych = *++YYCURSOR; if (yych == '$') goto yy49; if (yych == ':') goto yy51; goto yy6; yy47: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy48: if (yych == '\n') goto yy6; if (yych == '$') goto yy43; goto yy47; yy49: ++YYCURSOR; #line 51 "cvsignore.ub.re" { APPEND(L"$" L"Revision$"); goto loop; } #line 273 "cvsignore.ub.c" yy51: yych = *++YYCURSOR; if (yych == '$') goto yy6; goto yy53; yy52: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy53: if (yych == '\n') goto yy6; if (yych == '$') goto yy49; goto yy52; } #line 55 "cvsignore.ub.re" } output[outsize] = '\0'; // set the new size *pSize = outsize; *pbChanged = (insize == outsize) ? 0 : 1; } re2c-1.0.1/test/unicode_group_Zp.u--encoding-policy(ignore).c0000644000175000017500000000277713063315632020670 00000000000000/* Generated by re2c */ #line 1 "unicode_group_Zp.u--encoding-policy(ignore).re" #include #define YYCTYPE unsigned int bool scan(const YYCTYPE * start, const YYCTYPE * const limit) { __attribute__((unused)) const YYCTYPE * YYMARKER; // silence compiler warnings when YYMARKER is not used # define YYCURSOR start Zp: #line 13 "unicode_group_Zp.u--encoding-policy(ignore).c" { YYCTYPE yych; yych = *YYCURSOR; if (yych == 0x00002029) goto yy4; ++YYCURSOR; #line 13 "unicode_group_Zp.u--encoding-policy(ignore).re" { return YYCURSOR == limit; } #line 21 "unicode_group_Zp.u--encoding-policy(ignore).c" yy4: ++YYCURSOR; #line 12 "unicode_group_Zp.u--encoding-policy(ignore).re" { goto Zp; } #line 26 "unicode_group_Zp.u--encoding-policy(ignore).c" } #line 14 "unicode_group_Zp.u--encoding-policy(ignore).re" } static const unsigned int chars_Zp [] = {0x2029,0x2029, 0x0,0x0}; static unsigned int encode_utf32 (const unsigned int * ranges, unsigned int ranges_count, unsigned int * s) { unsigned int * const s_start = s; for (unsigned int i = 0; i < ranges_count; i += 2) for (unsigned int j = ranges[i]; j <= ranges[i + 1]; ++j) *s++ = j; return s - s_start; } int main () { YYCTYPE * buffer_Zp = new YYCTYPE [2]; unsigned int buffer_len = encode_utf32 (chars_Zp, sizeof (chars_Zp) / sizeof (unsigned int), buffer_Zp); if (!scan (reinterpret_cast (buffer_Zp), reinterpret_cast (buffer_Zp + buffer_len))) printf("test 'Zp' failed\n"); delete [] buffer_Zp; return 0; } re2c-1.0.1/test/bug1187785.c0000644000175000017500000001554113063315631011761 00000000000000/* Generated by re2c */ #line 1 "bug1187785.re" #include #include #include #define RET(n) printf("%d\n", n); return n #define TAG_EOI 0 #define TAG_A 1 #define TAG_TAG 2 int scan(char *s, int l) { char *p = s; char *q; #define YYCTYPE char #define YYCURSOR p #define YYLIMIT (s+l) #define YYMARKER q #define YYFILL(n) cont: #line 24 "bug1187785.c" { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; switch (yych) { case '"': goto yy4; default: goto yy2; } yy2: ++YYCURSOR; yy3: #line 23 "bug1187785.re" { goto cont; } #line 38 "bug1187785.c" yy4: yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case 0x01: case 0x02: case 0x03: case 0x04: case 0x05: case 0x06: case 0x07: case 0x08: case '\t': case '\n': case '\v': case '\f': case '\r': case 0x0E: case 0x0F: case 0x10: case 0x11: case 0x12: case 0x13: case 0x14: case 0x15: case 0x16: case 0x17: case 0x18: case 0x19: case 0x1A: case 0x1B: case 0x1C: case 0x1D: case 0x1E: case 0x1F: case ' ': case '!': case '#': case '$': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case '-': case '.': case '/': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case ';': case '<': case '=': case '>': case '?': case '@': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '[': case '\\': case ']': case '^': case '_': case '`': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': case '{': case '|': case '}': case '~': case 0x7F: case 0x80: case 0x81: case 0x82: case 0x83: case 0x84: case 0x85: case 0x86: case 0x87: case 0x88: case 0x89: case 0x8A: case 0x8B: case 0x8C: case 0x8D: case 0x8E: case 0x8F: case 0x90: case 0x91: case 0x92: case 0x93: case 0x94: case 0x95: case 0x96: case 0x97: case 0x98: case 0x99: case 0x9A: case 0x9B: case 0x9C: case 0x9D: case 0x9E: case 0x9F: case 0xA0: case 0xA1: case 0xA2: case 0xA3: case 0xA4: case 0xA5: case 0xA6: case 0xA7: case 0xA8: case 0xA9: case 0xAA: case 0xAB: case 0xAC: case 0xAD: case 0xAE: case 0xAF: case 0xB0: case 0xB1: case 0xB2: case 0xB3: case 0xB4: case 0xB5: case 0xB6: case 0xB7: case 0xB8: case 0xB9: case 0xBA: case 0xBB: case 0xBC: case 0xBD: case 0xBE: case 0xBF: case 0xC0: case 0xC1: case 0xC2: case 0xC3: case 0xC4: case 0xC5: case 0xC6: case 0xC7: case 0xC8: case 0xC9: case 0xCA: case 0xCB: case 0xCC: case 0xCD: case 0xCE: case 0xCF: case 0xD0: case 0xD1: case 0xD2: case 0xD3: case 0xD4: case 0xD5: case 0xD6: case 0xD7: case 0xD8: case 0xD9: case 0xDA: case 0xDB: case 0xDC: case 0xDD: case 0xDE: case 0xDF: case 0xE0: case 0xE1: case 0xE2: case 0xE3: case 0xE4: case 0xE5: case 0xE6: case 0xE7: case 0xE8: case 0xE9: case 0xEA: case 0xEB: case 0xEC: case 0xED: case 0xEE: case 0xEF: case 0xF0: case 0xF1: case 0xF2: case 0xF3: case 0xF4: case 0xF5: case 0xF6: case 0xF7: case 0xF8: case 0xF9: case 0xFA: case 0xFB: case 0xFC: case 0xFD: case 0xFE: goto yy5; default: goto yy3; } yy5: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case 0x00: case 0x01: case 0x02: case 0x03: case 0x04: case 0x05: case 0x06: case 0x07: case 0x08: case '\t': case '\n': case '\v': case '\f': case '\r': case 0x0E: case 0x0F: case 0x10: case 0x11: case 0x12: case 0x13: case 0x14: case 0x15: case 0x16: case 0x17: case 0x18: case 0x19: case 0x1A: case 0x1B: case 0x1C: case 0x1D: case 0x1E: case 0x1F: case ' ': case '!': case '#': case '$': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case '-': case '.': case '/': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case ';': case '<': case '=': case '>': case '?': case '@': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '[': case '\\': case ']': case '^': case '_': case '`': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': case '{': case '|': case '}': case '~': case 0x7F: case 0x80: case 0x81: case 0x82: case 0x83: case 0x84: case 0x85: case 0x86: case 0x87: case 0x88: case 0x89: case 0x8A: case 0x8B: case 0x8C: case 0x8D: case 0x8E: case 0x8F: case 0x90: case 0x91: case 0x92: case 0x93: case 0x94: case 0x95: case 0x96: case 0x97: case 0x98: case 0x99: case 0x9A: case 0x9B: case 0x9C: case 0x9D: case 0x9E: case 0x9F: case 0xA0: case 0xA1: case 0xA2: case 0xA3: case 0xA4: case 0xA5: case 0xA6: case 0xA7: case 0xA8: case 0xA9: case 0xAA: case 0xAB: case 0xAC: case 0xAD: case 0xAE: case 0xAF: case 0xB0: case 0xB1: case 0xB2: case 0xB3: case 0xB4: case 0xB5: case 0xB6: case 0xB7: case 0xB8: case 0xB9: case 0xBA: case 0xBB: case 0xBC: case 0xBD: case 0xBE: case 0xBF: case 0xC0: case 0xC1: case 0xC2: case 0xC3: case 0xC4: case 0xC5: case 0xC6: case 0xC7: case 0xC8: case 0xC9: case 0xCA: case 0xCB: case 0xCC: case 0xCD: case 0xCE: case 0xCF: case 0xD0: case 0xD1: case 0xD2: case 0xD3: case 0xD4: case 0xD5: case 0xD6: case 0xD7: case 0xD8: case 0xD9: case 0xDA: case 0xDB: case 0xDC: case 0xDD: case 0xDE: case 0xDF: case 0xE0: case 0xE1: case 0xE2: case 0xE3: case 0xE4: case 0xE5: case 0xE6: case 0xE7: case 0xE8: case 0xE9: case 0xEA: case 0xEB: case 0xEC: case 0xED: case 0xEE: case 0xEF: case 0xF0: case 0xF1: case 0xF2: case 0xF3: case 0xF4: case 0xF5: case 0xF6: case 0xF7: case 0xF8: case 0xF9: case 0xFA: case 0xFB: case 0xFC: case 0xFD: case 0xFE: goto yy5; case '"': goto yy8; default: goto yy7; } yy7: YYCURSOR = YYMARKER; goto yy3; yy8: ++YYCURSOR; #line 22 "bug1187785.re" { RET(1); } #line 567 "bug1187785.c" } #line 24 "bug1187785.re" } #define do_scan(str) scan(str, strlen(str)) main() { do_scan("0"); } re2c-1.0.1/test/unicode_group_N.x--encoding-policy(substitute).c0000644000175000017500000002364013137447265021431 00000000000000/* Generated by re2c */ #line 1 "unicode_group_N.x--encoding-policy(substitute).re" #include #include "utf16.h" #define YYCTYPE unsigned short bool scan(const YYCTYPE * start, const YYCTYPE * const limit) { __attribute__((unused)) const YYCTYPE * YYMARKER; // silence compiler warnings when YYMARKER is not used # define YYCURSOR start N: #line 13 "unicode_group_N.x--encoding-policy(substitute).c" { YYCTYPE yych; yych = *YYCURSOR; if (yych <= 0x1BB9) { if (yych <= 0x0CE5) { if (yych <= 0x09E5) { if (yych <= 0x00BE) { if (yych <= 0x00B3) { if (yych <= '/') goto yy2; if (yych <= '9') goto yy4; if (yych >= 0x00B2) goto yy4; } else { if (yych == 0x00B9) goto yy4; if (yych >= 0x00BC) goto yy4; } } else { if (yych <= 0x06F9) { if (yych <= 0x065F) goto yy2; if (yych <= 0x0669) goto yy4; if (yych >= 0x06F0) goto yy4; } else { if (yych <= 0x07C9) { if (yych >= 0x07C0) goto yy4; } else { if (yych <= 0x0965) goto yy2; if (yych <= 0x096F) goto yy4; } } } } else { if (yych <= 0x0B6F) { if (yych <= 0x0A65) { if (yych <= 0x09EF) goto yy4; if (yych <= 0x09F3) goto yy2; if (yych <= 0x09F9) goto yy4; } else { if (yych <= 0x0AE5) { if (yych <= 0x0A6F) goto yy4; } else { if (yych <= 0x0AEF) goto yy4; if (yych >= 0x0B66) goto yy4; } } } else { if (yych <= 0x0BF2) { if (yych <= 0x0B71) goto yy2; if (yych <= 0x0B77) goto yy4; if (yych >= 0x0BE6) goto yy4; } else { if (yych <= 0x0C6F) { if (yych >= 0x0C66) goto yy4; } else { if (yych <= 0x0C77) goto yy2; if (yych <= 0x0C7E) goto yy4; } } } } } else { if (yych <= 0x16F0) { if (yych <= 0x0F1F) { if (yych <= 0x0E4F) { if (yych <= 0x0CEF) goto yy4; if (yych <= 0x0D65) goto yy2; if (yych <= 0x0D75) goto yy4; } else { if (yych <= 0x0E59) goto yy4; if (yych <= 0x0ECF) goto yy2; if (yych <= 0x0ED9) goto yy4; } } else { if (yych <= 0x108F) { if (yych <= 0x0F33) goto yy4; if (yych <= 0x103F) goto yy2; if (yych <= 0x1049) goto yy4; } else { if (yych <= 0x1368) { if (yych <= 0x1099) goto yy4; } else { if (yych <= 0x137C) goto yy4; if (yych >= 0x16EE) goto yy4; } } } } else { if (yych <= 0x19CF) { if (yych <= 0x17F9) { if (yych <= 0x17DF) goto yy2; if (yych <= 0x17E9) goto yy4; if (yych >= 0x17F0) goto yy4; } else { if (yych <= 0x1819) { if (yych >= 0x1810) goto yy4; } else { if (yych <= 0x1945) goto yy2; if (yych <= 0x194F) goto yy4; } } } else { if (yych <= 0x1A8F) { if (yych <= 0x19DA) goto yy4; if (yych <= 0x1A7F) goto yy2; if (yych <= 0x1A89) goto yy4; } else { if (yych <= 0x1B4F) { if (yych <= 0x1A99) goto yy4; } else { if (yych <= 0x1B59) goto yy4; if (yych >= 0x1BB0) goto yy4; } } } } } } else { if (yych <= 0x327F) { if (yych <= 0x24E9) { if (yych <= 0x2079) { if (yych <= 0x1C59) { if (yych <= 0x1C3F) goto yy2; if (yych <= 0x1C49) goto yy4; if (yych >= 0x1C50) goto yy4; } else { if (yych == 0x2070) goto yy4; if (yych >= 0x2074) goto yy4; } } else { if (yych <= 0x2182) { if (yych <= 0x207F) goto yy2; if (yych <= 0x2089) goto yy4; if (yych >= 0x2150) goto yy4; } else { if (yych <= 0x2189) { if (yych >= 0x2185) goto yy4; } else { if (yych <= 0x245F) goto yy2; if (yych <= 0x249B) goto yy4; } } } } else { if (yych <= 0x3029) { if (yych <= 0x2CFC) { if (yych <= 0x24FF) goto yy4; if (yych <= 0x2775) goto yy2; if (yych <= 0x2793) goto yy4; } else { if (yych <= 0x3006) { if (yych <= 0x2CFD) goto yy4; } else { if (yych <= 0x3007) goto yy4; if (yych >= 0x3021) goto yy4; } } } else { if (yych <= 0x3195) { if (yych <= 0x3037) goto yy2; if (yych <= 0x303A) goto yy4; if (yych >= 0x3192) goto yy4; } else { if (yych <= 0x3229) { if (yych >= 0x3220) goto yy4; } else { if (yych <= 0x3250) goto yy2; if (yych <= 0x325F) goto yy4; } } } } } else { if (yych <= 0xAA59) { if (yych <= 0xA82F) { if (yych <= 0xA61F) { if (yych <= 0x3289) goto yy4; if (yych <= 0x32B0) goto yy2; if (yych <= 0x32BF) goto yy4; } else { if (yych <= 0xA629) goto yy4; if (yych <= 0xA6E5) goto yy2; if (yych <= 0xA6EF) goto yy4; } } else { if (yych <= 0xA8FF) { if (yych <= 0xA835) goto yy4; if (yych <= 0xA8CF) goto yy2; if (yych <= 0xA8D9) goto yy4; } else { if (yych <= 0xA9CF) { if (yych <= 0xA909) goto yy4; } else { if (yych <= 0xA9D9) goto yy4; if (yych >= 0xAA50) goto yy4; } } } } else { if (yych <= 0xD808) { if (yych <= 0xD800) { if (yych <= 0xABEF) goto yy2; if (yych <= 0xABF9) goto yy4; if (yych >= 0xD800) goto yy6; } else { if (yych <= 0xD802) { if (yych <= 0xD801) goto yy7; goto yy8; } else { if (yych <= 0xD803) goto yy9; if (yych <= 0xD804) goto yy10; } } } else { if (yych <= 0xD835) { if (yych <= 0xD809) goto yy11; if (yych <= 0xD833) goto yy2; if (yych <= 0xD834) goto yy12; goto yy13; } else { if (yych <= 0xD83C) { if (yych >= 0xD83C) goto yy14; } else { if (yych <= 0xFF0F) goto yy2; if (yych <= 0xFF19) goto yy4; } } } } } } yy2: ++YYCURSOR; yy3: #line 13 "unicode_group_N.x--encoding-policy(substitute).re" { return YYCURSOR == limit; } #line 247 "unicode_group_N.x--encoding-policy(substitute).c" yy4: ++YYCURSOR; #line 12 "unicode_group_N.x--encoding-policy(substitute).re" { goto N; } #line 252 "unicode_group_N.x--encoding-policy(substitute).c" yy6: yych = *++YYCURSOR; if (yych <= 0xDF1F) { if (yych <= 0xDD3F) { if (yych <= 0xDD06) goto yy3; if (yych <= 0xDD33) goto yy4; goto yy3; } else { if (yych <= 0xDD78) goto yy4; if (yych == 0xDD8A) goto yy4; goto yy3; } } else { if (yych <= 0xDF49) { if (yych <= 0xDF23) goto yy4; if (yych == 0xDF41) goto yy4; goto yy3; } else { if (yych <= 0xDF4A) goto yy4; if (yych <= 0xDFD0) goto yy3; if (yych <= 0xDFD5) goto yy4; goto yy3; } } yy7: yych = *++YYCURSOR; if (yych <= 0xDC9F) goto yy3; if (yych <= 0xDCA9) goto yy4; goto yy3; yy8: yych = *++YYCURSOR; if (yych <= 0xDE47) { if (yych <= 0xDD15) { if (yych <= 0xDC57) goto yy3; if (yych <= 0xDC5F) goto yy4; goto yy3; } else { if (yych <= 0xDD1B) goto yy4; if (yych <= 0xDE3F) goto yy3; goto yy4; } } else { if (yych <= 0xDF57) { if (yych <= 0xDE7C) goto yy3; if (yych <= 0xDE7E) goto yy4; goto yy3; } else { if (yych <= 0xDF5F) goto yy4; if (yych <= 0xDF77) goto yy3; if (yych <= 0xDF7F) goto yy4; goto yy3; } } yy9: yych = *++YYCURSOR; if (yych <= 0xDE5F) goto yy3; if (yych <= 0xDE7E) goto yy4; goto yy3; yy10: yych = *++YYCURSOR; if (yych <= 0xDC51) goto yy3; if (yych <= 0xDC6F) goto yy4; goto yy3; yy11: yych = *++YYCURSOR; if (yych <= 0xDBFF) goto yy3; if (yych <= 0xDC62) goto yy4; goto yy3; yy12: yych = *++YYCURSOR; if (yych <= 0xDF5F) goto yy3; if (yych <= 0xDF71) goto yy4; goto yy3; yy13: yych = *++YYCURSOR; if (yych <= 0xDFCD) goto yy3; if (yych <= 0xDFFF) goto yy4; goto yy3; yy14: yych = *++YYCURSOR; if (yych <= 0xDCFF) goto yy3; if (yych <= 0xDD0A) goto yy4; goto yy3; } #line 14 "unicode_group_N.x--encoding-policy(substitute).re" } static const unsigned int chars_N [] = {0x30,0x39, 0xb2,0xb3, 0xb9,0xb9, 0xbc,0xbe, 0x660,0x669, 0x6f0,0x6f9, 0x7c0,0x7c9, 0x966,0x96f, 0x9e6,0x9ef, 0x9f4,0x9f9, 0xa66,0xa6f, 0xae6,0xaef, 0xb66,0xb6f, 0xb72,0xb77, 0xbe6,0xbf2, 0xc66,0xc6f, 0xc78,0xc7e, 0xce6,0xcef, 0xd66,0xd75, 0xe50,0xe59, 0xed0,0xed9, 0xf20,0xf33, 0x1040,0x1049, 0x1090,0x1099, 0x1369,0x137c, 0x16ee,0x16f0, 0x17e0,0x17e9, 0x17f0,0x17f9, 0x1810,0x1819, 0x1946,0x194f, 0x19d0,0x19da, 0x1a80,0x1a89, 0x1a90,0x1a99, 0x1b50,0x1b59, 0x1bb0,0x1bb9, 0x1c40,0x1c49, 0x1c50,0x1c59, 0x2070,0x2070, 0x2074,0x2079, 0x2080,0x2089, 0x2150,0x2182, 0x2185,0x2189, 0x2460,0x249b, 0x24ea,0x24ff, 0x2776,0x2793, 0x2cfd,0x2cfd, 0x3007,0x3007, 0x3021,0x3029, 0x3038,0x303a, 0x3192,0x3195, 0x3220,0x3229, 0x3251,0x325f, 0x3280,0x3289, 0x32b1,0x32bf, 0xa620,0xa629, 0xa6e6,0xa6ef, 0xa830,0xa835, 0xa8d0,0xa8d9, 0xa900,0xa909, 0xa9d0,0xa9d9, 0xaa50,0xaa59, 0xabf0,0xabf9, 0xff10,0xff19, 0x10107,0x10133, 0x10140,0x10178, 0x1018a,0x1018a, 0x10320,0x10323, 0x10341,0x10341, 0x1034a,0x1034a, 0x103d1,0x103d5, 0x104a0,0x104a9, 0x10858,0x1085f, 0x10916,0x1091b, 0x10a40,0x10a47, 0x10a7d,0x10a7e, 0x10b58,0x10b5f, 0x10b78,0x10b7f, 0x10e60,0x10e7e, 0x11052,0x1106f, 0x12400,0x12462, 0x1d360,0x1d371, 0x1d7ce,0x1d7ff, 0x1f100,0x1f10a, 0x0,0x0}; static unsigned int encode_utf16 (const unsigned int * ranges, unsigned int ranges_count, unsigned short * s) { unsigned short * const s_start = s; for (unsigned int i = 0; i < ranges_count; i += 2) for (unsigned int j = ranges[i]; j <= ranges[i + 1]; ++j) { if (j <= re2c::utf16::MAX_1WORD_RUNE) *s++ = j; else { *s++ = re2c::utf16::lead_surr(j); *s++ = re2c::utf16::trail_surr(j); } } return s - s_start; } int main () { YYCTYPE * buffer_N = new YYCTYPE [2202]; unsigned int buffer_len = encode_utf16 (chars_N, sizeof (chars_N) / sizeof (unsigned int), buffer_N); if (!scan (reinterpret_cast (buffer_N), reinterpret_cast (buffer_N + buffer_len))) printf("test 'N' failed\n"); delete [] buffer_N; return 0; } re2c-1.0.1/test/condition_07.cbi.c0000644000175000017500000001234213137447264013455 00000000000000/* Generated by re2c */ #include #include #include #define BSIZE 8192 typedef struct Scanner { FILE *fp; unsigned char *cur, *tok, *lim, *eof; unsigned char buffer[BSIZE]; } Scanner; int fill(Scanner *s, int len) { if (!len) { s->cur = s->tok = s->lim = s->buffer; s->eof = 0; } if (!s->eof) { int got, cnt = s->tok - s->buffer; if (cnt > 0) { memcpy(s->buffer, s->tok, s->lim - s->tok); s->tok -= cnt; s->cur -= cnt; s->lim -= cnt; } cnt = BSIZE - cnt; if ((got = fread(s->lim, 1, cnt, s->fp)) != cnt) { s->eof = &s->lim[got]; } s->lim += got; } else if (s->cur + len > s->eof) { return 0; /* not enough input data */ } return -1; } void fputl(const char *s, size_t len, FILE *stream) { while(len-- > 0) { fputc(*s++, stream); } } enum YYCONDTYPE { EStateR1, EStateR2, }; void scan(Scanner *s) { int cond = EStateR1; fill(s, 0); for(;;) { s->tok = s->cur; { unsigned char yych; if (cond < 1) { goto yyc_R1; } else { goto yyc_R2; } /* *********************************** */ yyc_R1: { static const unsigned char yybm[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; if (s->lim <= s->cur) { if(fill(s, 1) >= 0) break; } yych = *s->cur; if (yybm[0+yych] & 128) { goto yy5; } ++s->cur; { continue; } yy5: ++s->cur; if (s->lim <= s->cur) { if(fill(s, 1) >= 0) break; } yych = *s->cur; if (yybm[0+yych] & 128) { goto yy5; } { continue; } } /* *********************************** */ yyc_R2: { static const unsigned char yybm[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; if (s->lim <= s->cur) { if(fill(s, 1) >= 0) break; } yych = *s->cur; if (yybm[0+yych] & 128) { goto yy12; } ++s->cur; { continue; } yy12: ++s->cur; if (s->lim <= s->cur) { if(fill(s, 1) >= 0) break; } yych = *s->cur; if (yybm[0+yych] & 128) { goto yy12; } { continue; } } } } } int main(int argc, char **argv) { Scanner in; char c; if (argc != 2) { fprintf(stderr, "%s \n", argv[0]); return 1;; } memset((char*) &in, 0, sizeof(in)); if (!strcmp(argv[1], "-")) { in.fp = stdin; } else if ((in.fp = fopen(argv[1], "r")) == NULL) { fprintf(stderr, "Cannot open file '%s'\n", argv[1]); return 1; } scan(&in); if (in.fp != stdin) { fclose(in.fp); } return 0; } re2c-1.0.1/test/default_full.u--encoding-policy(fail).re0000644000175000017500000000007013063315632017617 00000000000000/*!re2c * { return DEFAULT; } [^] { return FULL; } */ re2c-1.0.1/test/default_full.x.c0000644000175000017500000000067713137447264013351 00000000000000/* Generated by re2c */ #line 1 "default_full.x.re" #line 5 "default_full.x.c" { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych <= 0xD7FF) goto yy2; if (yych <= 0xDBFF) goto yy4; yy2: ++YYCURSOR; yy3: #line 3 "default_full.x.re" { return FULL; } #line 17 "default_full.x.c" yy4: yych = *++YYCURSOR; if (yych <= 0xDBFF) goto yy3; if (yych <= 0xDFFF) goto yy2; goto yy3; } #line 4 "default_full.x.re" re2c-1.0.1/test/unicode_group_Cf.u--encoding-policy(fail).c0000644000175000017500000000540713063315632020250 00000000000000/* Generated by re2c */ #line 1 "unicode_group_Cf.u--encoding-policy(fail).re" #include #define YYCTYPE unsigned int bool scan(const YYCTYPE * start, const YYCTYPE * const limit) { __attribute__((unused)) const YYCTYPE * YYMARKER; // silence compiler warnings when YYMARKER is not used # define YYCURSOR start Cf: #line 13 "unicode_group_Cf.u--encoding-policy(fail).c" { YYCTYPE yych; yych = *YYCURSOR; if (yych <= 0x0000205F) { if (yych <= 0x0000070E) { if (yych <= 0x000005FF) { if (yych == 0x000000AD) goto yy4; } else { if (yych <= 0x00000603) goto yy4; if (yych == 0x000006DD) goto yy4; } } else { if (yych <= 0x0000200A) { if (yych <= 0x0000070F) goto yy4; if (yych <= 0x000017B3) goto yy2; if (yych <= 0x000017B5) goto yy4; } else { if (yych <= 0x0000200F) goto yy4; if (yych <= 0x00002029) goto yy2; if (yych <= 0x0000202E) goto yy4; } } } else { if (yych <= 0x000110BC) { if (yych <= 0x0000FEFE) { if (yych <= 0x00002064) goto yy4; if (yych <= 0x00002069) goto yy2; if (yych <= 0x0000206F) goto yy4; } else { if (yych <= 0x0000FEFF) goto yy4; if (yych <= 0x0000FFF8) goto yy2; if (yych <= 0x0000FFFB) goto yy4; } } else { if (yych <= 0x000E0000) { if (yych <= 0x000110BD) goto yy4; if (yych <= 0x0001D172) goto yy2; if (yych <= 0x0001D17A) goto yy4; } else { if (yych <= 0x000E0001) goto yy4; if (yych <= 0x000E001F) goto yy2; if (yych <= 0x000E007F) goto yy4; } } } yy2: ++YYCURSOR; #line 13 "unicode_group_Cf.u--encoding-policy(fail).re" { return YYCURSOR == limit; } #line 63 "unicode_group_Cf.u--encoding-policy(fail).c" yy4: ++YYCURSOR; #line 12 "unicode_group_Cf.u--encoding-policy(fail).re" { goto Cf; } #line 68 "unicode_group_Cf.u--encoding-policy(fail).c" } #line 14 "unicode_group_Cf.u--encoding-policy(fail).re" } static const unsigned int chars_Cf [] = {0xad,0xad, 0x600,0x603, 0x6dd,0x6dd, 0x70f,0x70f, 0x17b4,0x17b5, 0x200b,0x200f, 0x202a,0x202e, 0x2060,0x2064, 0x206a,0x206f, 0xfeff,0xfeff, 0xfff9,0xfffb, 0x110bd,0x110bd, 0x1d173,0x1d17a, 0xe0001,0xe0001, 0xe0020,0xe007f, 0x0,0x0}; static unsigned int encode_utf32 (const unsigned int * ranges, unsigned int ranges_count, unsigned int * s) { unsigned int * const s_start = s; for (unsigned int i = 0; i < ranges_count; i += 2) for (unsigned int j = ranges[i]; j <= ranges[i + 1]; ++j) *s++ = j; return s - s_start; } int main () { YYCTYPE * buffer_Cf = new YYCTYPE [141]; unsigned int buffer_len = encode_utf32 (chars_Cf, sizeof (chars_Cf) / sizeof (unsigned int), buffer_Cf); if (!scan (reinterpret_cast (buffer_Cf), reinterpret_cast (buffer_Cf + buffer_len))) printf("test 'Cf' failed\n"); delete [] buffer_Cf; return 0; } re2c-1.0.1/test/php20140822_zend_language_scanner.igcd--flex-syntax.re0000644000175000017500000016241013063315632022052 00000000000000/* +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ | Copyright (c) 1998-2014 Zend Technologies Ltd. (http://www.zend.com) | +----------------------------------------------------------------------+ | This source file is subject to version 2.00 of the Zend license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.zend.com/license/2_00.txt. | | If you did not receive a copy of the Zend license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@zend.com so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Marcus Boerger | | Nuno Lopes | | Scott MacVicar | | Flex version authors: | | Andi Gutmans | | Zeev Suraski | +----------------------------------------------------------------------+ */ /* $Id$ */ #if 0 # define YYDEBUG(s, c) printf("state: %d char: %c\n", s, c) #else # define YYDEBUG(s, c) #endif #include "zend_language_scanner_defs.h" #include #include "zend.h" #ifdef PHP_WIN32 # include #endif #include "zend_alloc.h" #include #include "zend_compile.h" #include "zend_language_scanner.h" #include "zend_highlight.h" #include "zend_constants.h" #include "zend_variables.h" #include "zend_operators.h" #include "zend_API.h" #include "zend_strtod.h" #include "zend_exceptions.h" #include "tsrm_virtual_cwd.h" #include "tsrm_config_common.h" #define YYCTYPE unsigned char #define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } } #define YYCURSOR SCNG(yy_cursor) #define YYLIMIT SCNG(yy_limit) #define YYMARKER SCNG(yy_marker) #define YYGETCONDITION() SCNG(yy_state) #define YYSETCONDITION(s) SCNG(yy_state) = s #define STATE(name) yyc##name /* emulate flex constructs */ #define BEGIN(state) YYSETCONDITION(STATE(state)) #define YYSTATE YYGETCONDITION() #define yytext ((char*)SCNG(yy_text)) #define yyleng SCNG(yy_leng) #define yyless(x) do { YYCURSOR = (unsigned char*)yytext + x; \ yyleng = (unsigned int)x; } while(0) #define yymore() goto yymore_restart /* perform sanity check. If this message is triggered you should increase the ZEND_MMAP_AHEAD value in the zend_streams.h file */ /*!max:re2c */ #if ZEND_MMAP_AHEAD < YYMAXFILL # error ZEND_MMAP_AHEAD should be greater than or equal to YYMAXFILL #endif #ifdef HAVE_STDARG_H # include #endif #ifdef HAVE_UNISTD_H # include #endif /* Globals Macros */ #define SCNG LANG_SCNG #ifdef ZTS ZEND_API ts_rsrc_id language_scanner_globals_id; #else ZEND_API zend_php_scanner_globals language_scanner_globals; #endif #define HANDLE_NEWLINES(s, l) \ do { \ char *p = (s), *boundary = p+(l); \ \ while (p= 'a' && (c) <= 'z') || ((c) >= 'A' && (c) <= 'Z') || (c) == '_' || (c) >= 0x7F) #define ZEND_IS_OCT(c) ((c)>='0' && (c)<='7') #define ZEND_IS_HEX(c) (((c)>='0' && (c)<='9') || ((c)>='a' && (c)<='f') || ((c)>='A' && (c)<='F')) BEGIN_EXTERN_C() static size_t encoding_filter_script_to_internal(unsigned char **to, size_t *to_length, const unsigned char *from, size_t from_length TSRMLS_DC) { const zend_encoding *internal_encoding = zend_multibyte_get_internal_encoding(TSRMLS_C); assert(internal_encoding && zend_multibyte_check_lexer_compatibility(internal_encoding)); return zend_multibyte_encoding_converter(to, to_length, from, from_length, internal_encoding, LANG_SCNG(script_encoding) TSRMLS_CC); } static size_t encoding_filter_script_to_intermediate(unsigned char **to, size_t *to_length, const unsigned char *from, size_t from_length TSRMLS_DC) { return zend_multibyte_encoding_converter(to, to_length, from, from_length, zend_multibyte_encoding_utf8, LANG_SCNG(script_encoding) TSRMLS_CC); } static size_t encoding_filter_intermediate_to_script(unsigned char **to, size_t *to_length, const unsigned char *from, size_t from_length TSRMLS_DC) { return zend_multibyte_encoding_converter(to, to_length, from, from_length, LANG_SCNG(script_encoding), zend_multibyte_encoding_utf8 TSRMLS_CC); } static size_t encoding_filter_intermediate_to_internal(unsigned char **to, size_t *to_length, const unsigned char *from, size_t from_length TSRMLS_DC) { const zend_encoding *internal_encoding = zend_multibyte_get_internal_encoding(TSRMLS_C); assert(internal_encoding && zend_multibyte_check_lexer_compatibility(internal_encoding)); return zend_multibyte_encoding_converter(to, to_length, from, from_length, internal_encoding, zend_multibyte_encoding_utf8 TSRMLS_CC); } static void _yy_push_state(int new_state TSRMLS_DC) { zend_stack_push(&SCNG(state_stack), (void *) &YYGETCONDITION(), sizeof(int)); YYSETCONDITION(new_state); } #define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm) static void yy_pop_state(TSRMLS_D) { int *stack_state; zend_stack_top(&SCNG(state_stack), (void **) &stack_state); YYSETCONDITION(*stack_state); zend_stack_del_top(&SCNG(state_stack)); } static void yy_scan_buffer(char *str, unsigned int len TSRMLS_DC) { YYCURSOR = (YYCTYPE*)str; YYLIMIT = YYCURSOR + len; if (!SCNG(yy_start)) { SCNG(yy_start) = YYCURSOR; } } void startup_scanner(TSRMLS_D) { CG(parse_error) = 0; CG(doc_comment) = NULL; CG(doc_comment_len) = 0; zend_stack_init(&SCNG(state_stack)); zend_ptr_stack_init(&SCNG(heredoc_label_stack)); } static void heredoc_label_dtor(zend_heredoc_label *heredoc_label) { efree(heredoc_label->label); } void shutdown_scanner(TSRMLS_D) { CG(parse_error) = 0; RESET_DOC_COMMENT(); zend_stack_destroy(&SCNG(state_stack)); zend_ptr_stack_clean(&SCNG(heredoc_label_stack), (void (*)(void *)) &heredoc_label_dtor, 1); zend_ptr_stack_destroy(&SCNG(heredoc_label_stack)); } ZEND_API void zend_save_lexical_state(zend_lex_state *lex_state TSRMLS_DC) { lex_state->yy_leng = SCNG(yy_leng); lex_state->yy_start = SCNG(yy_start); lex_state->yy_text = SCNG(yy_text); lex_state->yy_cursor = SCNG(yy_cursor); lex_state->yy_marker = SCNG(yy_marker); lex_state->yy_limit = SCNG(yy_limit); lex_state->state_stack = SCNG(state_stack); zend_stack_init(&SCNG(state_stack)); lex_state->heredoc_label_stack = SCNG(heredoc_label_stack); zend_ptr_stack_init(&SCNG(heredoc_label_stack)); lex_state->in = SCNG(yy_in); lex_state->yy_state = YYSTATE; lex_state->filename = zend_get_compiled_filename(TSRMLS_C); lex_state->lineno = CG(zend_lineno); lex_state->script_org = SCNG(script_org); lex_state->script_org_size = SCNG(script_org_size); lex_state->script_filtered = SCNG(script_filtered); lex_state->script_filtered_size = SCNG(script_filtered_size); lex_state->input_filter = SCNG(input_filter); lex_state->output_filter = SCNG(output_filter); lex_state->script_encoding = SCNG(script_encoding); } ZEND_API void zend_restore_lexical_state(zend_lex_state *lex_state TSRMLS_DC) { SCNG(yy_leng) = lex_state->yy_leng; SCNG(yy_start) = lex_state->yy_start; SCNG(yy_text) = lex_state->yy_text; SCNG(yy_cursor) = lex_state->yy_cursor; SCNG(yy_marker) = lex_state->yy_marker; SCNG(yy_limit) = lex_state->yy_limit; zend_stack_destroy(&SCNG(state_stack)); SCNG(state_stack) = lex_state->state_stack; zend_ptr_stack_clean(&SCNG(heredoc_label_stack), (void (*)(void *)) &heredoc_label_dtor, 1); zend_ptr_stack_destroy(&SCNG(heredoc_label_stack)); SCNG(heredoc_label_stack) = lex_state->heredoc_label_stack; SCNG(yy_in) = lex_state->in; YYSETCONDITION(lex_state->yy_state); CG(zend_lineno) = lex_state->lineno; zend_restore_compiled_filename(lex_state->filename TSRMLS_CC); if (SCNG(script_filtered)) { efree(SCNG(script_filtered)); SCNG(script_filtered) = NULL; } SCNG(script_org) = lex_state->script_org; SCNG(script_org_size) = lex_state->script_org_size; SCNG(script_filtered) = lex_state->script_filtered; SCNG(script_filtered_size) = lex_state->script_filtered_size; SCNG(input_filter) = lex_state->input_filter; SCNG(output_filter) = lex_state->output_filter; SCNG(script_encoding) = lex_state->script_encoding; RESET_DOC_COMMENT(); } ZEND_API void zend_destroy_file_handle(zend_file_handle *file_handle TSRMLS_DC) { zend_llist_del_element(&CG(open_files), file_handle, (int (*)(void *, void *)) zend_compare_file_handles); /* zend_file_handle_dtor() operates on the copy, so we have to NULLify the original here */ file_handle->opened_path = NULL; if (file_handle->free_filename) { file_handle->filename = NULL; } } #define BOM_UTF32_BE "\x00\x00\xfe\xff" #define BOM_UTF32_LE "\xff\xfe\x00\x00" #define BOM_UTF16_BE "\xfe\xff" #define BOM_UTF16_LE "\xff\xfe" #define BOM_UTF8 "\xef\xbb\xbf" static const zend_encoding *zend_multibyte_detect_utf_encoding(const unsigned char *script, size_t script_size TSRMLS_DC) { const unsigned char *p; int wchar_size = 2; int le = 0; /* utf-16 or utf-32? */ p = script; while ((p-script) < script_size) { p = memchr(p, 0, script_size-(p-script)-2); if (!p) { break; } if (*(p+1) == '\0' && *(p+2) == '\0') { wchar_size = 4; break; } /* searching for UTF-32 specific byte orders, so this will do */ p += 4; } /* BE or LE? */ p = script; while ((p-script) < script_size) { if (*p == '\0' && *(p+wchar_size-1) != '\0') { /* BE */ le = 0; break; } else if (*p != '\0' && *(p+wchar_size-1) == '\0') { /* LE* */ le = 1; break; } p += wchar_size; } if (wchar_size == 2) { return le ? zend_multibyte_encoding_utf16le : zend_multibyte_encoding_utf16be; } else { return le ? zend_multibyte_encoding_utf32le : zend_multibyte_encoding_utf32be; } return NULL; } static const zend_encoding* zend_multibyte_detect_unicode(TSRMLS_D) { const zend_encoding *script_encoding = NULL; int bom_size; unsigned char *pos1, *pos2; if (LANG_SCNG(script_org_size) < sizeof(BOM_UTF32_LE)-1) { return NULL; } /* check out BOM */ if (!memcmp(LANG_SCNG(script_org), BOM_UTF32_BE, sizeof(BOM_UTF32_BE)-1)) { script_encoding = zend_multibyte_encoding_utf32be; bom_size = sizeof(BOM_UTF32_BE)-1; } else if (!memcmp(LANG_SCNG(script_org), BOM_UTF32_LE, sizeof(BOM_UTF32_LE)-1)) { script_encoding = zend_multibyte_encoding_utf32le; bom_size = sizeof(BOM_UTF32_LE)-1; } else if (!memcmp(LANG_SCNG(script_org), BOM_UTF16_BE, sizeof(BOM_UTF16_BE)-1)) { script_encoding = zend_multibyte_encoding_utf16be; bom_size = sizeof(BOM_UTF16_BE)-1; } else if (!memcmp(LANG_SCNG(script_org), BOM_UTF16_LE, sizeof(BOM_UTF16_LE)-1)) { script_encoding = zend_multibyte_encoding_utf16le; bom_size = sizeof(BOM_UTF16_LE)-1; } else if (!memcmp(LANG_SCNG(script_org), BOM_UTF8, sizeof(BOM_UTF8)-1)) { script_encoding = zend_multibyte_encoding_utf8; bom_size = sizeof(BOM_UTF8)-1; } if (script_encoding) { /* remove BOM */ LANG_SCNG(script_org) += bom_size; LANG_SCNG(script_org_size) -= bom_size; return script_encoding; } /* script contains NULL bytes -> auto-detection */ if ((pos1 = memchr(LANG_SCNG(script_org), 0, LANG_SCNG(script_org_size)))) { /* check if the NULL byte is after the __HALT_COMPILER(); */ pos2 = LANG_SCNG(script_org); while (pos1 - pos2 >= sizeof("__HALT_COMPILER();")-1) { pos2 = memchr(pos2, '_', pos1 - pos2); if (!pos2) break; pos2++; if (strncasecmp((char*)pos2, "_HALT_COMPILER", sizeof("_HALT_COMPILER")-1) == 0) { pos2 += sizeof("_HALT_COMPILER")-1; while (*pos2 == ' ' || *pos2 == '\t' || *pos2 == '\r' || *pos2 == '\n') { pos2++; } if (*pos2 == '(') { pos2++; while (*pos2 == ' ' || *pos2 == '\t' || *pos2 == '\r' || *pos2 == '\n') { pos2++; } if (*pos2 == ')') { pos2++; while (*pos2 == ' ' || *pos2 == '\t' || *pos2 == '\r' || *pos2 == '\n') { pos2++; } if (*pos2 == ';') { return NULL; } } } } } /* make best effort if BOM is missing */ return zend_multibyte_detect_utf_encoding(LANG_SCNG(script_org), LANG_SCNG(script_org_size) TSRMLS_CC); } return NULL; } static const zend_encoding* zend_multibyte_find_script_encoding(TSRMLS_D) { const zend_encoding *script_encoding; if (CG(detect_unicode)) { /* check out bom(byte order mark) and see if containing wchars */ script_encoding = zend_multibyte_detect_unicode(TSRMLS_C); if (script_encoding != NULL) { /* bom or wchar detection is prior to 'script_encoding' option */ return script_encoding; } } /* if no script_encoding specified, just leave alone */ if (!CG(script_encoding_list) || !CG(script_encoding_list_size)) { return NULL; } /* if multiple encodings specified, detect automagically */ if (CG(script_encoding_list_size) > 1) { return zend_multibyte_encoding_detector(LANG_SCNG(script_org), LANG_SCNG(script_org_size), CG(script_encoding_list), CG(script_encoding_list_size) TSRMLS_CC); } return CG(script_encoding_list)[0]; } ZEND_API int zend_multibyte_set_filter(const zend_encoding *onetime_encoding TSRMLS_DC) { const zend_encoding *internal_encoding = zend_multibyte_get_internal_encoding(TSRMLS_C); const zend_encoding *script_encoding = onetime_encoding ? onetime_encoding: zend_multibyte_find_script_encoding(TSRMLS_C); if (!script_encoding) { return FAILURE; } /* judge input/output filter */ LANG_SCNG(script_encoding) = script_encoding; LANG_SCNG(input_filter) = NULL; LANG_SCNG(output_filter) = NULL; if (!internal_encoding || LANG_SCNG(script_encoding) == internal_encoding) { if (!zend_multibyte_check_lexer_compatibility(LANG_SCNG(script_encoding))) { /* and if not, work around w/ script_encoding -> utf-8 -> script_encoding conversion */ LANG_SCNG(input_filter) = encoding_filter_script_to_intermediate; LANG_SCNG(output_filter) = encoding_filter_intermediate_to_script; } else { LANG_SCNG(input_filter) = NULL; LANG_SCNG(output_filter) = NULL; } return SUCCESS; } if (zend_multibyte_check_lexer_compatibility(internal_encoding)) { LANG_SCNG(input_filter) = encoding_filter_script_to_internal; LANG_SCNG(output_filter) = NULL; } else if (zend_multibyte_check_lexer_compatibility(LANG_SCNG(script_encoding))) { LANG_SCNG(input_filter) = NULL; LANG_SCNG(output_filter) = encoding_filter_script_to_internal; } else { /* both script and internal encodings are incompatible w/ flex */ LANG_SCNG(input_filter) = encoding_filter_script_to_intermediate; LANG_SCNG(output_filter) = encoding_filter_intermediate_to_internal; } return 0; } ZEND_API int open_file_for_scanning(zend_file_handle *file_handle TSRMLS_DC) { const char *file_path = NULL; char *buf; size_t size, offset = 0; /* The shebang line was read, get the current position to obtain the buffer start */ if (CG(start_lineno) == 2 && file_handle->type == ZEND_HANDLE_FP && file_handle->handle.fp) { if ((offset = ftell(file_handle->handle.fp)) == -1) { offset = 0; } } if (zend_stream_fixup(file_handle, &buf, &size TSRMLS_CC) == FAILURE) { return FAILURE; } zend_llist_add_element(&CG(open_files), file_handle); if (file_handle->handle.stream.handle >= (void*)file_handle && file_handle->handle.stream.handle <= (void*)(file_handle+1)) { zend_file_handle *fh = (zend_file_handle*)zend_llist_get_last(&CG(open_files)); size_t diff = (char*)file_handle->handle.stream.handle - (char*)file_handle; fh->handle.stream.handle = (void*)(((char*)fh) + diff); file_handle->handle.stream.handle = fh->handle.stream.handle; } /* Reset the scanner for scanning the new file */ SCNG(yy_in) = file_handle; SCNG(yy_start) = NULL; if (size != -1) { if (CG(multibyte)) { SCNG(script_org) = (unsigned char*)buf; SCNG(script_org_size) = size; SCNG(script_filtered) = NULL; zend_multibyte_set_filter(NULL TSRMLS_CC); if (SCNG(input_filter)) { if ((size_t)-1 == SCNG(input_filter)(&SCNG(script_filtered), &SCNG(script_filtered_size), SCNG(script_org), SCNG(script_org_size) TSRMLS_CC)) { zend_error_noreturn(E_COMPILE_ERROR, "Could not convert the script from the detected " "encoding \"%s\" to a compatible encoding", zend_multibyte_get_encoding_name(LANG_SCNG(script_encoding))); } buf = (char*)SCNG(script_filtered); size = SCNG(script_filtered_size); } } SCNG(yy_start) = (unsigned char *)buf - offset; yy_scan_buffer(buf, size TSRMLS_CC); } else { zend_error_noreturn(E_COMPILE_ERROR, "zend_stream_mmap() failed"); } BEGIN(INITIAL); if (file_handle->opened_path) { file_path = file_handle->opened_path; } else { file_path = file_handle->filename; } zend_set_compiled_filename(file_path TSRMLS_CC); if (CG(start_lineno)) { CG(zend_lineno) = CG(start_lineno); CG(start_lineno) = 0; } else { CG(zend_lineno) = 1; } RESET_DOC_COMMENT(); CG(increment_lineno) = 0; return SUCCESS; } END_EXTERN_C() ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type TSRMLS_DC) { zend_lex_state original_lex_state; zend_op_array *op_array = (zend_op_array *) emalloc(sizeof(zend_op_array)); zend_op_array *original_active_op_array = CG(active_op_array); zend_op_array *retval=NULL; int compiler_result; zend_bool compilation_successful=0; znode retval_znode; zend_bool original_in_compilation = CG(in_compilation); retval_znode.op_type = IS_CONST; retval_znode.u.constant.type = IS_LONG; retval_znode.u.constant.value.lval = 1; Z_UNSET_ISREF(retval_znode.u.constant); Z_SET_REFCOUNT(retval_znode.u.constant, 1); zend_save_lexical_state(&original_lex_state TSRMLS_CC); retval = op_array; /* success oriented */ if (open_file_for_scanning(file_handle TSRMLS_CC)==FAILURE) { if (type==ZEND_REQUIRE) { zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, file_handle->filename TSRMLS_CC); zend_bailout(); } else { zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, file_handle->filename TSRMLS_CC); } compilation_successful=0; } else { init_op_array(op_array, ZEND_USER_FUNCTION, INITIAL_OP_ARRAY_SIZE TSRMLS_CC); CG(in_compilation) = 1; CG(active_op_array) = op_array; zend_stack_push(&CG(context_stack), (void *) &CG(context), sizeof(CG(context))); zend_init_compiler_context(TSRMLS_C); compiler_result = zendparse(TSRMLS_C); zend_do_return(&retval_znode, 0 TSRMLS_CC); CG(in_compilation) = original_in_compilation; if (compiler_result != 0) { /* parser error */ zend_bailout(); } compilation_successful=1; } if (retval) { CG(active_op_array) = original_active_op_array; if (compilation_successful) { pass_two(op_array TSRMLS_CC); zend_release_labels(0 TSRMLS_CC); } else { efree(op_array); retval = NULL; } } zend_restore_lexical_state(&original_lex_state TSRMLS_CC); return retval; } zend_op_array *compile_filename(int type, zval *filename TSRMLS_DC) { zend_file_handle file_handle; zval tmp; zend_op_array *retval; char *opened_path = NULL; if (filename->type != IS_STRING) { tmp = *filename; zval_copy_ctor(&tmp); convert_to_string(&tmp); filename = &tmp; } file_handle.filename = filename->value.str.val; file_handle.free_filename = 0; file_handle.type = ZEND_HANDLE_FILENAME; file_handle.opened_path = NULL; file_handle.handle.fp = NULL; retval = zend_compile_file(&file_handle, type TSRMLS_CC); if (retval && file_handle.handle.stream.handle) { int dummy = 1; if (!file_handle.opened_path) { file_handle.opened_path = opened_path = estrndup(filename->value.str.val, filename->value.str.len); } zend_hash_add(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path)+1, (void *)&dummy, sizeof(int), NULL); if (opened_path) { efree(opened_path); } } zend_destroy_file_handle(&file_handle TSRMLS_CC); if (filename==&tmp) { zval_dtor(&tmp); } return retval; } ZEND_API int zend_prepare_string_for_scanning(zval *str, char *filename TSRMLS_DC) { char *buf; size_t size; /* enforce two trailing NULLs for flex... */ if (IS_INTERNED(str->value.str.val)) { char *tmp = safe_emalloc(1, str->value.str.len, ZEND_MMAP_AHEAD); memcpy(tmp, str->value.str.val, str->value.str.len + ZEND_MMAP_AHEAD); str->value.str.val = tmp; } else { str->value.str.val = safe_erealloc(str->value.str.val, 1, str->value.str.len, ZEND_MMAP_AHEAD); } memset(str->value.str.val + str->value.str.len, 0, ZEND_MMAP_AHEAD); SCNG(yy_in) = NULL; SCNG(yy_start) = NULL; buf = str->value.str.val; size = str->value.str.len; if (CG(multibyte)) { SCNG(script_org) = (unsigned char*)buf; SCNG(script_org_size) = size; SCNG(script_filtered) = NULL; zend_multibyte_set_filter(zend_multibyte_get_internal_encoding(TSRMLS_C) TSRMLS_CC); if (SCNG(input_filter)) { if ((size_t)-1 == SCNG(input_filter)(&SCNG(script_filtered), &SCNG(script_filtered_size), SCNG(script_org), SCNG(script_org_size) TSRMLS_CC)) { zend_error_noreturn(E_COMPILE_ERROR, "Could not convert the script from the detected " "encoding \"%s\" to a compatible encoding", zend_multibyte_get_encoding_name(LANG_SCNG(script_encoding))); } buf = (char*)SCNG(script_filtered); size = SCNG(script_filtered_size); } } yy_scan_buffer(buf, size TSRMLS_CC); zend_set_compiled_filename(filename TSRMLS_CC); CG(zend_lineno) = 1; CG(increment_lineno) = 0; RESET_DOC_COMMENT(); return SUCCESS; } ZEND_API size_t zend_get_scanned_file_offset(TSRMLS_D) { size_t offset = SCNG(yy_cursor) - SCNG(yy_start); if (SCNG(input_filter)) { size_t original_offset = offset, length = 0; do { unsigned char *p = NULL; if ((size_t)-1 == SCNG(input_filter)(&p, &length, SCNG(script_org), offset TSRMLS_CC)) { return (size_t)-1; } efree(p); if (length > original_offset) { offset--; } else if (length < original_offset) { offset++; } } while (original_offset != length); } return offset; } zend_op_array *compile_string(zval *source_string, char *filename TSRMLS_DC) { zend_lex_state original_lex_state; zend_op_array *op_array = (zend_op_array *) emalloc(sizeof(zend_op_array)); zend_op_array *original_active_op_array = CG(active_op_array); zend_op_array *retval; zval tmp; int compiler_result; zend_bool original_in_compilation = CG(in_compilation); if (source_string->value.str.len==0) { efree(op_array); return NULL; } CG(in_compilation) = 1; tmp = *source_string; zval_copy_ctor(&tmp); convert_to_string(&tmp); source_string = &tmp; zend_save_lexical_state(&original_lex_state TSRMLS_CC); if (zend_prepare_string_for_scanning(source_string, filename TSRMLS_CC)==FAILURE) { efree(op_array); retval = NULL; } else { zend_bool orig_interactive = CG(interactive); CG(interactive) = 0; init_op_array(op_array, ZEND_EVAL_CODE, INITIAL_OP_ARRAY_SIZE TSRMLS_CC); CG(interactive) = orig_interactive; CG(active_op_array) = op_array; zend_stack_push(&CG(context_stack), (void *) &CG(context), sizeof(CG(context))); zend_init_compiler_context(TSRMLS_C); BEGIN(ST_IN_SCRIPTING); compiler_result = zendparse(TSRMLS_C); if (SCNG(script_filtered)) { efree(SCNG(script_filtered)); SCNG(script_filtered) = NULL; } if (compiler_result != 0) { CG(active_op_array) = original_active_op_array; CG(unclean_shutdown)=1; destroy_op_array(op_array TSRMLS_CC); efree(op_array); retval = NULL; } else { zend_do_return(NULL, 0 TSRMLS_CC); CG(active_op_array) = original_active_op_array; pass_two(op_array TSRMLS_CC); zend_release_labels(0 TSRMLS_CC); retval = op_array; } } zend_restore_lexical_state(&original_lex_state TSRMLS_CC); zval_dtor(&tmp); CG(in_compilation) = original_in_compilation; return retval; } BEGIN_EXTERN_C() int highlight_file(char *filename, zend_syntax_highlighter_ini *syntax_highlighter_ini TSRMLS_DC) { zend_lex_state original_lex_state; zend_file_handle file_handle; file_handle.type = ZEND_HANDLE_FILENAME; file_handle.filename = filename; file_handle.free_filename = 0; file_handle.opened_path = NULL; zend_save_lexical_state(&original_lex_state TSRMLS_CC); if (open_file_for_scanning(&file_handle TSRMLS_CC)==FAILURE) { zend_message_dispatcher(ZMSG_FAILED_HIGHLIGHT_FOPEN, filename TSRMLS_CC); zend_restore_lexical_state(&original_lex_state TSRMLS_CC); return FAILURE; } zend_highlight(syntax_highlighter_ini TSRMLS_CC); if (SCNG(script_filtered)) { efree(SCNG(script_filtered)); SCNG(script_filtered) = NULL; } zend_destroy_file_handle(&file_handle TSRMLS_CC); zend_restore_lexical_state(&original_lex_state TSRMLS_CC); return SUCCESS; } int highlight_string(zval *str, zend_syntax_highlighter_ini *syntax_highlighter_ini, char *str_name TSRMLS_DC) { zend_lex_state original_lex_state; zval tmp = *str; str = &tmp; zval_copy_ctor(str); zend_save_lexical_state(&original_lex_state TSRMLS_CC); if (zend_prepare_string_for_scanning(str, str_name TSRMLS_CC)==FAILURE) { zend_restore_lexical_state(&original_lex_state TSRMLS_CC); return FAILURE; } BEGIN(INITIAL); zend_highlight(syntax_highlighter_ini TSRMLS_CC); if (SCNG(script_filtered)) { efree(SCNG(script_filtered)); SCNG(script_filtered) = NULL; } zend_restore_lexical_state(&original_lex_state TSRMLS_CC); zval_dtor(str); return SUCCESS; } ZEND_API void zend_multibyte_yyinput_again(zend_encoding_filter old_input_filter, const zend_encoding *old_encoding TSRMLS_DC) { size_t length; unsigned char *new_yy_start; /* convert and set */ if (!SCNG(input_filter)) { if (SCNG(script_filtered)) { efree(SCNG(script_filtered)); SCNG(script_filtered) = NULL; } SCNG(script_filtered_size) = 0; length = SCNG(script_org_size); new_yy_start = SCNG(script_org); } else { if ((size_t)-1 == SCNG(input_filter)(&new_yy_start, &length, SCNG(script_org), SCNG(script_org_size) TSRMLS_CC)) { zend_error_noreturn(E_COMPILE_ERROR, "Could not convert the script from the detected " "encoding \"%s\" to a compatible encoding", zend_multibyte_get_encoding_name(LANG_SCNG(script_encoding))); } SCNG(script_filtered) = new_yy_start; SCNG(script_filtered_size) = length; } SCNG(yy_cursor) = new_yy_start + (SCNG(yy_cursor) - SCNG(yy_start)); SCNG(yy_marker) = new_yy_start + (SCNG(yy_marker) - SCNG(yy_start)); SCNG(yy_text) = new_yy_start + (SCNG(yy_text) - SCNG(yy_start)); SCNG(yy_limit) = new_yy_start + (SCNG(yy_limit) - SCNG(yy_start)); SCNG(yy_start) = new_yy_start; } # define zend_copy_value(zendlval, yytext, yyleng) \ if (SCNG(output_filter)) { \ size_t sz = 0; \ SCNG(output_filter)((unsigned char **)&(zendlval->value.str.val), &sz, (unsigned char *)yytext, (size_t)yyleng TSRMLS_CC); \ zendlval->value.str.len = sz; \ } else { \ zendlval->value.str.val = (char *) estrndup(yytext, yyleng); \ zendlval->value.str.len = yyleng; \ } static void zend_scan_escape_string(zval *zendlval, char *str, int len, char quote_type TSRMLS_DC) { register char *s, *t; char *end; ZVAL_STRINGL(zendlval, str, len, 1); /* convert escape sequences */ s = t = zendlval->value.str.val; end = s+zendlval->value.str.len; while (s= end) { *t++ = '\\'; break; } switch(*s) { case 'n': *t++ = '\n'; zendlval->value.str.len--; break; case 'r': *t++ = '\r'; zendlval->value.str.len--; break; case 't': *t++ = '\t'; zendlval->value.str.len--; break; case 'f': *t++ = '\f'; zendlval->value.str.len--; break; case 'v': *t++ = '\v'; zendlval->value.str.len--; break; case 'e': #ifdef PHP_WIN32 *t++ = VK_ESCAPE; #else *t++ = '\e'; #endif zendlval->value.str.len--; break; case '"': case '`': if (*s != quote_type) { *t++ = '\\'; *t++ = *s; break; } case '\\': case '$': *t++ = *s; zendlval->value.str.len--; break; case 'x': case 'X': if (ZEND_IS_HEX(*(s+1))) { char hex_buf[3] = { 0, 0, 0 }; zendlval->value.str.len--; /* for the 'x' */ hex_buf[0] = *(++s); zendlval->value.str.len--; if (ZEND_IS_HEX(*(s+1))) { hex_buf[1] = *(++s); zendlval->value.str.len--; } *t++ = (char) strtol(hex_buf, NULL, 16); } else { *t++ = '\\'; *t++ = *s; } break; default: /* check for an octal */ if (ZEND_IS_OCT(*s)) { char octal_buf[4] = { 0, 0, 0, 0 }; octal_buf[0] = *s; zendlval->value.str.len--; if (ZEND_IS_OCT(*(s+1))) { octal_buf[1] = *(++s); zendlval->value.str.len--; if (ZEND_IS_OCT(*(s+1))) { octal_buf[2] = *(++s); zendlval->value.str.len--; } } *t++ = (char) strtol(octal_buf, NULL, 8); } else { *t++ = '\\'; *t++ = *s; } break; } } else { *t++ = *s; } if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) { CG(zend_lineno)++; } s++; } *t = 0; if (SCNG(output_filter)) { size_t sz = 0; s = zendlval->value.str.val; SCNG(output_filter)((unsigned char **)&(zendlval->value.str.val), &sz, (unsigned char *)s, (size_t)zendlval->value.str.len TSRMLS_CC); zendlval->value.str.len = sz; efree(s); } } int lex_scan(zval *zendlval TSRMLS_DC) { restart: SCNG(yy_text) = YYCURSOR; yymore_restart: /*!re2c re2c:yyfill:check = 0; LNUM [0-9]+ DNUM ([0-9]*"."[0-9]+)|([0-9]+"."[0-9]*) EXPONENT_DNUM (({LNUM}|{DNUM})[eE][+-]?{LNUM}) HNUM "0x"[0-9a-fA-F]+ BNUM "0b"[01]+ LABEL [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]* WHITESPACE [ \n\r\t]+ TABS_AND_SPACES [ \t]* TOKENS [;:,.\[\]()|^&+-/*=%!~$<>?@] ANY_CHAR [^] NEWLINE ("\r"|"\n"|"\r\n") /* compute yyleng before each rule */ := yyleng = YYCURSOR - SCNG(yy_text); "exit" { return T_EXIT; } "die" { return T_EXIT; } "function" { return T_FUNCTION; } "const" { return T_CONST; } "return" { return T_RETURN; } "yield" { return T_YIELD; } "try" { return T_TRY; } "catch" { return T_CATCH; } "finally" { return T_FINALLY; } "throw" { return T_THROW; } "if" { return T_IF; } "elseif" { return T_ELSEIF; } "endif" { return T_ENDIF; } "else" { return T_ELSE; } "while" { return T_WHILE; } "endwhile" { return T_ENDWHILE; } "do" { return T_DO; } "for" { return T_FOR; } "endfor" { return T_ENDFOR; } "foreach" { return T_FOREACH; } "endforeach" { return T_ENDFOREACH; } "declare" { return T_DECLARE; } "enddeclare" { return T_ENDDECLARE; } "instanceof" { return T_INSTANCEOF; } "as" { return T_AS; } "switch" { return T_SWITCH; } "endswitch" { return T_ENDSWITCH; } "case" { return T_CASE; } "default" { return T_DEFAULT; } "break" { return T_BREAK; } "continue" { return T_CONTINUE; } "goto" { return T_GOTO; } "echo" { return T_ECHO; } "print" { return T_PRINT; } "class" { return T_CLASS; } "interface" { return T_INTERFACE; } "trait" { return T_TRAIT; } "extends" { return T_EXTENDS; } "implements" { return T_IMPLEMENTS; } "->" { yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); return T_OBJECT_OPERATOR; } {WHITESPACE}+ { zendlval->value.str.val = yytext; /* no copying - intentional */ zendlval->value.str.len = yyleng; zendlval->type = IS_STRING; HANDLE_NEWLINES(yytext, yyleng); return T_WHITESPACE; } "->" { return T_OBJECT_OPERATOR; } {LABEL} { yy_pop_state(TSRMLS_C); zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; return T_STRING; } {ANY_CHAR} { yyless(0); yy_pop_state(TSRMLS_C); goto restart; } "::" { return T_PAAMAYIM_NEKUDOTAYIM; } "\\" { return T_NS_SEPARATOR; } "new" { return T_NEW; } "clone" { return T_CLONE; } "var" { return T_VAR; } "("{TABS_AND_SPACES}("int"|"integer"){TABS_AND_SPACES}")" { return T_INT_CAST; } "("{TABS_AND_SPACES}("real"|"double"|"float"){TABS_AND_SPACES}")" { return T_DOUBLE_CAST; } "("{TABS_AND_SPACES}("string"|"binary"){TABS_AND_SPACES}")" { return T_STRING_CAST; } "("{TABS_AND_SPACES}"array"{TABS_AND_SPACES}")" { return T_ARRAY_CAST; } "("{TABS_AND_SPACES}"object"{TABS_AND_SPACES}")" { return T_OBJECT_CAST; } "("{TABS_AND_SPACES}("bool"|"boolean"){TABS_AND_SPACES}")" { return T_BOOL_CAST; } "("{TABS_AND_SPACES}("unset"){TABS_AND_SPACES}")" { return T_UNSET_CAST; } "eval" { return T_EVAL; } "include" { return T_INCLUDE; } "include_once" { return T_INCLUDE_ONCE; } "require" { return T_REQUIRE; } "require_once" { return T_REQUIRE_ONCE; } "namespace" { return T_NAMESPACE; } "use" { return T_USE; } "insteadof" { return T_INSTEADOF; } "global" { return T_GLOBAL; } "isset" { return T_ISSET; } "empty" { return T_EMPTY; } "__halt_compiler" { return T_HALT_COMPILER; } "static" { return T_STATIC; } "abstract" { return T_ABSTRACT; } "final" { return T_FINAL; } "private" { return T_PRIVATE; } "protected" { return T_PROTECTED; } "public" { return T_PUBLIC; } "unset" { return T_UNSET; } "=>" { return T_DOUBLE_ARROW; } "list" { return T_LIST; } "array" { return T_ARRAY; } "callable" { return T_CALLABLE; } "++" { return T_INC; } "--" { return T_DEC; } "===" { return T_IS_IDENTICAL; } "!==" { return T_IS_NOT_IDENTICAL; } "==" { return T_IS_EQUAL; } "!="|"<>" { return T_IS_NOT_EQUAL; } "<=" { return T_IS_SMALLER_OR_EQUAL; } ">=" { return T_IS_GREATER_OR_EQUAL; } "+=" { return T_PLUS_EQUAL; } "-=" { return T_MINUS_EQUAL; } "*=" { return T_MUL_EQUAL; } "/=" { return T_DIV_EQUAL; } ".=" { return T_CONCAT_EQUAL; } "%=" { return T_MOD_EQUAL; } "<<=" { return T_SL_EQUAL; } ">>=" { return T_SR_EQUAL; } "&=" { return T_AND_EQUAL; } "|=" { return T_OR_EQUAL; } "^=" { return T_XOR_EQUAL; } "||" { return T_BOOLEAN_OR; } "&&" { return T_BOOLEAN_AND; } "OR" { return T_LOGICAL_OR; } "AND" { return T_LOGICAL_AND; } "XOR" { return T_LOGICAL_XOR; } "<<" { return T_SL; } ">>" { return T_SR; } {TOKENS} { return yytext[0]; } "{" { yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return '{'; } "${" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } "}" { RESET_DOC_COMMENT(); if (!zend_stack_is_empty(&SCNG(state_stack))) { yy_pop_state(TSRMLS_C); } return '}'; } {LABEL}[[}] { yyless(yyleng - 1); zend_copy_value(zendlval, yytext, yyleng); zendlval->type = IS_STRING; yy_pop_state(TSRMLS_C); yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return T_STRING_VARNAME; } {ANY_CHAR} { yyless(0); yy_pop_state(TSRMLS_C); yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); goto restart; } {BNUM} { char *bin = yytext + 2; /* Skip "0b" */ int len = yyleng - 2; /* Skip any leading 0s */ while (*bin == '0') { ++bin; --len; } if (len < SIZEOF_LONG * 8) { if (len == 0) { zendlval->value.lval = 0; } else { zendlval->value.lval = strtol(bin, NULL, 2); } zendlval->type = IS_LONG; return T_LNUMBER; } else { zendlval->value.dval = zend_bin_strtod(bin, NULL); zendlval->type = IS_DOUBLE; return T_DNUMBER; } } {LNUM} { if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ zendlval->value.lval = strtol(yytext, NULL, 0); } else { errno = 0; zendlval->value.lval = strtol(yytext, NULL, 0); if (errno == ERANGE) { /* Overflow */ if (yytext[0] == '0') { /* octal overflow */ zendlval->value.dval = zend_oct_strtod(yytext, NULL); } else { zendlval->value.dval = zend_strtod(yytext, NULL); } zendlval->type = IS_DOUBLE; return T_DNUMBER; } } zendlval->type = IS_LONG; return T_LNUMBER; } {HNUM} { char *hex = yytext + 2; /* Skip "0x" */ int len = yyleng - 2; /* Skip any leading 0s */ while (*hex == '0') { hex++; len--; } if (len < SIZEOF_LONG * 2 || (len == SIZEOF_LONG * 2 && *hex <= '7')) { if (len == 0) { zendlval->value.lval = 0; } else { zendlval->value.lval = strtol(hex, NULL, 16); } zendlval->type = IS_LONG; return T_LNUMBER; } else { zendlval->value.dval = zend_hex_strtod(hex, NULL); zendlval->type = IS_DOUBLE; return T_DNUMBER; } } [0]|([1-9][0-9]*) { /* Offset could be treated as a long */ if (yyleng < MAX_LENGTH_OF_LONG - 1 || (yyleng == MAX_LENGTH_OF_LONG - 1 && strcmp(yytext, long_min_digits) < 0)) { zendlval->value.lval = strtol(yytext, NULL, 10); zendlval->type = IS_LONG; } else { zendlval->value.str.val = (char *)estrndup(yytext, yyleng); zendlval->value.str.len = yyleng; zendlval->type = IS_STRING; } return T_NUM_STRING; } {LNUM}|{HNUM}|{BNUM} { /* Offset must be treated as a string */ zendlval->value.str.val = (char *)estrndup(yytext, yyleng); zendlval->value.str.len = yyleng; zendlval->type = IS_STRING; return T_NUM_STRING; } {DNUM}|{EXPONENT_DNUM} { zendlval->value.dval = zend_strtod(yytext, NULL); zendlval->type = IS_DOUBLE; return T_DNUMBER; } "__CLASS__" { const char *class_name = NULL; if (CG(active_class_entry) && (ZEND_ACC_TRAIT == (CG(active_class_entry)->ce_flags & ZEND_ACC_TRAIT))) { /* We create a special __CLASS__ constant that is going to be resolved at run-time */ zendlval->value.str.len = sizeof("__CLASS__")-1; zendlval->value.str.val = estrndup("__CLASS__", zendlval->value.str.len); zendlval->type = IS_CONSTANT; } else { if (CG(active_class_entry)) { class_name = CG(active_class_entry)->name; } if (!class_name) { class_name = ""; } zendlval->value.str.len = strlen(class_name); zendlval->value.str.val = estrndup(class_name, zendlval->value.str.len); zendlval->type = IS_STRING; } return T_CLASS_C; } "__TRAIT__" { const char *trait_name = NULL; if (CG(active_class_entry) && (ZEND_ACC_TRAIT == (CG(active_class_entry)->ce_flags & ZEND_ACC_TRAIT))) { trait_name = CG(active_class_entry)->name; } if (!trait_name) { trait_name = ""; } zendlval->value.str.len = strlen(trait_name); zendlval->value.str.val = estrndup(trait_name, zendlval->value.str.len); zendlval->type = IS_STRING; return T_TRAIT_C; } "__FUNCTION__" { const char *func_name = NULL; if (CG(active_op_array)) { func_name = CG(active_op_array)->function_name; } if (!func_name) { func_name = ""; } zendlval->value.str.len = strlen(func_name); zendlval->value.str.val = estrndup(func_name, zendlval->value.str.len); zendlval->type = IS_STRING; return T_FUNC_C; } "__METHOD__" { const char *class_name = CG(active_class_entry) ? CG(active_class_entry)->name : NULL; const char *func_name = CG(active_op_array)? CG(active_op_array)->function_name : NULL; size_t len = 0; if (class_name) { len += strlen(class_name) + 2; } if (func_name) { len += strlen(func_name); } zendlval->value.str.len = zend_spprintf(&zendlval->value.str.val, 0, "%s%s%s", class_name ? class_name : "", class_name && func_name ? "::" : "", func_name ? func_name : "" ); zendlval->type = IS_STRING; return T_METHOD_C; } "__LINE__" { zendlval->value.lval = CG(zend_lineno); zendlval->type = IS_LONG; return T_LINE; } "__FILE__" { char *filename = zend_get_compiled_filename(TSRMLS_C); if (!filename) { filename = ""; } zendlval->value.str.len = strlen(filename); zendlval->value.str.val = estrndup(filename, zendlval->value.str.len); zendlval->type = IS_STRING; return T_FILE; } "__DIR__" { char *filename = zend_get_compiled_filename(TSRMLS_C); const size_t filename_len = strlen(filename); char *dirname; if (!filename) { filename = ""; } dirname = estrndup(filename, filename_len); zend_dirname(dirname, filename_len); if (strcmp(dirname, ".") == 0) { dirname = erealloc(dirname, MAXPATHLEN); #if HAVE_GETCWD VCWD_GETCWD(dirname, MAXPATHLEN); #elif HAVE_GETWD VCWD_GETWD(dirname); #endif } zendlval->value.str.len = strlen(dirname); zendlval->value.str.val = dirname; zendlval->type = IS_STRING; return T_DIR; } "__NAMESPACE__" { if (CG(current_namespace)) { *zendlval = *CG(current_namespace); zval_copy_ctor(zendlval); } else { ZVAL_EMPTY_STRING(zendlval); } return T_NS_C; } "" { YYCTYPE *bracket = (YYCTYPE*)zend_memrchr(yytext, '<', yyleng - (sizeof("script language=php>") - 1)); if (bracket != SCNG(yy_text)) { /* Handle previously scanned HTML, as possible