ctsim-6.0.2/0000755000175000017500000000000013254524615011657 5ustar kevinkevinctsim-6.0.2/aclocal.m40000644000175000017500000012773013254406201013517 0ustar kevinkevin# 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_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])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering # 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_MAINTAINER_MODE([DEFAULT-MODE]) # ---------------------------------- # Control maintainer-specific portions of Makefiles. # Default is to disable them, unless 'enable' is passed literally. # For symmetry, 'disable' may be passed as well. Anyway, the user # can override the default with the --enable/--disable switch. AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]), [enable], [m4_define([am_maintainer_other], [disable])], [disable], [m4_define([am_maintainer_other], [enable])], [m4_define([am_maintainer_other], [enable]) m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) dnl maintainer-mode's default is 'disable' unless 'enable' is passed AC_ARG_ENABLE([maintainer-mode], [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], am_maintainer_other[ make rules and dependencies not useful (and sometimes confusing) to the casual installer])], [USE_MAINTAINER_MODE=$enableval], [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST([MAINT])dnl ] ) # 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 ]) # -*- Autoconf -*- # Obsolete and "removed" macros, that must however still report explicit # error messages when used, to smooth transition. # # 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. AC_DEFUN([AM_CONFIG_HEADER], [AC_DIAGNOSE([obsolete], ['$0': this macro is obsolete. You should use the 'AC][_CONFIG_HEADERS' macro instead.])dnl AC_CONFIG_HEADERS($@)]) AC_DEFUN([AM_PROG_CC_STDC], [AC_PROG_CC am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc AC_DIAGNOSE([obsolete], ['$0': this macro is obsolete. You should simply use the 'AC][_PROG_CC' macro instead. Also, your code should no longer depend upon 'am_cv_prog_cc_stdc', but upon 'ac_cv_prog_cc_stdc'.])]) AC_DEFUN([AM_C_PROTOTYPES], [AC_FATAL([automatic de-ANSI-fication support has been removed])]) AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES]) # 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 m4_include([scripts/ax_check_compile_flag.m4]) m4_include([scripts/ax_ext.m4]) m4_include([scripts/ax_gcc_x86_avx_xgetbv.m4]) m4_include([scripts/ax_gcc_x86_cpuid.m4]) m4_include([scripts/ax_openmp.m4]) ctsim-6.0.2/include/0000755000175000017500000000000013254524615013302 5ustar kevinkevinctsim-6.0.2/include/ctndicom.h0000644000175000017500000000635711240454454015262 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: ctndicomp.cpp ** Purpose: Interface to CTN Dicom header ** Programmer: Kevin Rosenberg ** Date Started: March 2001 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef _CTNDICOM_H_ #define _CTNDICOM_H_ #if HAVE_CTN_DICOM #include #include #include #ifdef GCCSUNOS #include #endif #include "ctsupport.h" #if SIZEOF_LONG == 4 #define LONGSIZE 32 #elif SIZEOF_LONG ==8 #define LONGSIZE 64 #endif #if SIZEOF_INT == 2 #define INTSIZE 16 #elif SIZEOF_INT == 4 #define INTSIZE 32 #elif SIZEOF_INT == 8 #define INTSIZE 64 #endif #if SIZEOF_SHORT == 2 #define SHORTSIZE 16 #elif SIZEOF_SHORT == 4 #define SHORTSIZE 32 #endif #include "dicom.h" #include "ctnthread.h" #include "lst.h" #include "condition.h" #include "dicom_objects.h" #include class ImageFile; class Projections; class DicomImporter { private: std::string m_strFilename; bool m_bFail; std::string m_strFailMessage; int m_iContents; ImageFile* m_pImageFile; Projections* m_pProjections; DCM_OBJECT* m_pFile; void loadImage(unsigned short iNRows, unsigned short iNCols, unsigned short iBitsAllocated, unsigned short iBitsStored, unsigned short iHighBit, unsigned short iPixRep); void loadProjections(); enum { TAG_GROUP_SOMATOM = 0x7fe1, TAG_MEMBER_SOMATOM_DATA = 0x1000, }; public: enum { DICOM_CONTENTS_INVALID = -1, DICOM_CONTENTS_IMAGE, DICOM_CONTENTS_PROJECTIONS, }; DicomImporter (const char* const pszFile); ~DicomImporter(); bool testImage() const {return m_iContents == DICOM_CONTENTS_IMAGE;} bool testProjections() const {return m_iContents == DICOM_CONTENTS_PROJECTIONS;} bool fail() const {return m_bFail;} const std::string& failMessage() const {return m_strFailMessage;} ImageFile* getImageFile() const {return m_pImageFile;} Projections* getProjections() const {return m_pProjections;} }; class DicomExporter { private: const ImageFile* m_pImageFile; std::string m_strFilename; bool m_bFail; std::string m_strFailMessage; DCM_OBJECT* m_pObject; bool createDicomObject(); public: DicomExporter (ImageFile* pImageFile); ~DicomExporter(); bool writeFile (const char* const pszFilename); bool fail() const {return m_bFail;} const std::string& failMessage() const {return m_strFailMessage;} }; #endif // HAVE_CTN_DICOM #endif // _CTNDICOM_H_ ctsim-6.0.2/include/mpiworld.h0000644000175000017500000000420211240454454015302 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: mpiworld.h ** Purpose: MPIWorld classes ** Programmer: Kevin Rosenberg ** Date Started: June 6, 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include #include #include class MPIWorld { public: MPIWorld (int& argc, char* const *& argv); void setTotalWorkUnits (int totalUnits); int getRank (void) const { return m_myRank; } int getNumProcessors (void) const { return m_nProcessors; } int getStartWorkUnit (int rank) const { return m_vStartWorkUnit [rank]; } int getEndWorkUnit (int rank) const { return m_vEndWorkUnit [rank]; } int getLocalWorkUnits (int rank) const { return m_vLocalWorkUnits [rank]; } int getMyStartWorkUnit (void) const { return m_vStartWorkUnit [m_myRank]; } int getMyEndWorkUnit (void) const { return m_vEndWorkUnit [m_myRank]; } int getMyLocalWorkUnits (void) const { return m_vLocalWorkUnits [m_myRank]; } MPI::Intracomm& getComm() { return m_comm; } void BcastString (string& str); private: int m_myRank; int m_nProcessors; vector m_vLocalWorkUnits; vector m_vStartWorkUnit; vector m_vEndWorkUnit; MPI::Intracomm m_comm; }; ctsim-6.0.2/include/backprojectors.h0000644000175000017500000001631711240454454016472 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: backproject.h ** Purpose: Backprojection classes ** Programmer: Kevin Rosenberg ** Date Started: June 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef __BACKPROJECTORS_H #define __BACKPROJECTORS_H #undef HAVE_BSPLINE_INTERP #include "imagefile.h" class Backproject; class ImageFile; class Projections; struct ReconstructionROI; class Backprojector { public: static const int BPROJ_INVALID; static const int BPROJ_TRIG; static const int BPROJ_TABLE; static const int BPROJ_DIFF; static const int BPROJ_IDIFF; static const int INTERP_INVALID; static const int INTERP_NEAREST; static const int INTERP_LINEAR; static const int INTERP_CUBIC; static const int INTERP_FREQ_PREINTERPOLATION; #if HAVE_BSPLINE_INTERP static const int INTERP_BSPLINE; static const int INTERP_1BSPLINE; static const int INTERP_2BSPLINE; static const int INTERP_3BSPLINE; #endif Backprojector (const Projections& proj, ImageFile& im, const char* const backprojName, const char* const interpName, const int interpFactor, const ReconstructionROI* pROI); ~Backprojector (); void BackprojectView (const double* const viewData, const double viewAngle); void PostProcessing(); bool fail() const {return m_fail;} const std::string& failMessage() const {return m_failMessage;} static const int getBackprojectCount() {return s_iBackprojectCount;} static const char* const* getBackprojectNameArray() {return s_aszBackprojectName;} static const char* const* getBackprojectTitleArray() {return s_aszBackprojectTitle;} static int convertBackprojectNameToID (const char* const bprojName); static const char* convertBackprojectIDToName (const int bprojID); static const char* convertBackprojectIDToTitle (const int bprojID); static const int getInterpCount() {return s_iInterpCount;} static const char* const * getInterpNameArray() {return s_aszInterpName;} static const char* const * getInterpTitleArray() {return s_aszInterpTitle;} static int convertInterpNameToID (const char* const interpName); static const char* convertInterpIDToName (const int interpID); static const char* convertInterpIDToTitle (const int interpID); private: std::string m_nameBackproject; std::string m_nameInterpolation; int m_idBackproject; int m_idInterpolation; Backproject* m_pBackprojectImplem; bool m_fail; std::string m_failMessage; static const char* const s_aszBackprojectName[]; static const char* const s_aszBackprojectTitle[]; static const int s_iBackprojectCount; static const char* const s_aszInterpName[]; static const char* const s_aszInterpTitle[]; static const int s_iInterpCount; bool initBackprojector (const Projections& proj, ImageFile& im, const char* const backprojName, const char* const interpName, const int interpFactor, const ReconstructionROI* pROI); }; class Backproject { public: Backproject (const Projections& proj, ImageFile& im, int interpID, const int interpFactor, const ReconstructionROI* pROI); virtual ~Backproject (); virtual void BackprojectView (const double* const viewData, const double viewAngle) = 0; virtual void PostProcessing (); // call after backprojecting all views protected: void ScaleImageByRotIncrement (); void errorIndexOutsideDetector (int ix, int iy, double theta, double r, double phi, double L, int ni); void errorIndexOutsideDetector (int ix, int iy, double theta, double L, int ni); const Projections& proj; ImageFile& im; int interpType; ImageFileArray v; kint32 nx; kint32 ny; double detInc; double rotScale; int iDetCenter; // index refering to L=0 projection int nDet; double xMin, xMax, yMin, yMax; // Retangular coords of phantom double xInc, yInc; // size of cells int m_interpFactor; double m_dFocalLength; double m_dSourceDetectorLength; bool m_bPostProcessingDone; private: Backproject (const Backproject& rhs); Backproject& operator= (const Backproject& rhs); }; class BackprojectTrig : public Backproject { public: BackprojectTrig (const Projections& proj, ImageFile& im, int interpID, const int interpFactor, const ReconstructionROI* pROI) : Backproject (proj, im, interpID, interpFactor, pROI) {} void BackprojectView (const double* const t, const double view_angle); }; class BackprojectTable : public Backproject { public: BackprojectTable (const Projections& proj, ImageFile& im, int interpID, const int interpFactor, const ReconstructionROI* pROI); virtual ~BackprojectTable (); virtual void BackprojectView (const double* const t, const double view_angle); virtual void PostProcessing (); // call after backprojecting all views protected: Array2d arrayR; Array2d arrayPhi; kfloat64** r; kfloat64** phi; }; class BackprojectDiff : public Backproject { public: BackprojectDiff (const Projections& proj, ImageFile& im, int interpID, const int interpFactor, const ReconstructionROI* pROI); ~BackprojectDiff (); virtual void BackprojectView (const double* const t, const double view_angle); virtual void PostProcessing (); // call after backprojecting all views protected: double start_r; double start_phi; double im_xinc, im_yinc; }; class BackprojectIntDiff : public BackprojectDiff { public: BackprojectIntDiff (const Projections& proj, ImageFile& im, int interpID, const int interpFactor, const ReconstructionROI* pROI) : BackprojectDiff (proj, im, interpID, interpFactor, pROI) {} void BackprojectView (const double* const t, const double view_angle); }; class BackprojectEquilinear : public BackprojectTable { public: BackprojectEquilinear (const Projections& proj, ImageFile& im, int interpID, const int interpFactor, const ReconstructionROI* pROI) : BackprojectTable (proj, im, interpID, interpFactor, pROI) {} void BackprojectView (const double* const t, const double view_angle); virtual ~BackprojectEquilinear() {} }; class BackprojectEquiangular : public BackprojectTable { public: BackprojectEquiangular (const Projections& proj, ImageFile& im, int interpID, const int interpFactor, const ReconstructionROI* pROI) : BackprojectTable (proj, im, interpID, interpFactor, pROI) {} void BackprojectView (const double* const t, const double view_angle); virtual ~BackprojectEquiangular() {} }; #endif ctsim-6.0.2/include/fourier.h0000644000175000017500000000726311240454454015132 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: fourier.h ** Purpose: Header for Fourier transform functions ** Programmer: Kevin Rosenberg ** Date Started: Dec 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include #ifdef HAVE_FFTW #include #endif class ImageFile; class Fourier { public: static void shuffleFourierToNaturalOrder (ImageFile& im); static void shuffleNaturalToFourierOrder (ImageFile& im); #ifdef HAVE_FFTW static void shuffleFourierToNaturalOrder (fftw_complex* pc, const int n); static void shuffleNaturalToFourierOrder (fftw_complex* pc, const int n); #endif // Odd Number of Points // Natural Frequency Order: -(n-1)/2...-1,0,1...(n-1)/2 // Fourier Frequency Order: 0, 1..(n-1)/2,-(n-1)/2...-1 // Even Number of Points // Natural Frequency Order: -n/2...-1,0,1...((n/2)-1) // Fourier Frequency Order: 0,1...((n/2)-1),-n/2...-1 template static void shuffleNaturalToFourierOrder (T* pVector, const int n) { T* pTemp = new T [n]; int i; if (isOdd(n)) { // Odd int iHalfN = (n - 1) / 2; pTemp[0] = pVector[iHalfN]; for (i = 0; i < iHalfN; i++) pTemp[i + 1] = pVector[i + 1 + iHalfN]; for (i = 0; i < iHalfN; i++) pTemp[i + iHalfN + 1] = pVector[i]; } else { // Even int iHalfN = n / 2; pTemp[0] = pVector[iHalfN]; for (i = 0; i < iHalfN - 1; i++) pTemp[i + 1] = pVector[i + iHalfN + 1]; for (i = 0; i < iHalfN; i++) pTemp[i + iHalfN] = pVector[i]; } for (i = 0; i < n; i++) pVector[i] = pTemp[i]; delete pTemp; } template static void shuffleFourierToNaturalOrder (T* pVector, const int n) { T* pTemp = new T [n]; int i; if (isOdd(n)) { // Odd int iHalfN = (n - 1) / 2; pTemp[iHalfN] = pVector[0]; for (i = 0; i < iHalfN; i++) pTemp[i + 1 + iHalfN] = pVector[i + 1]; for (i = 0; i < iHalfN; i++) pTemp[i] = pVector[i + iHalfN + 1]; } else { // Even int iHalfN = n / 2; pTemp[iHalfN] = pVector[0]; for (i = 0; i < iHalfN; i++) pTemp[i] = pVector[i + iHalfN]; for (i = 0; i < iHalfN - 1; i++) pTemp[i + iHalfN + 1] = pVector[i+1]; } for (i = 0; i < n; i++) pVector[i] = pTemp[i]; delete pTemp; } #if 0 static void shuffleNaturalToFourierOrder (float* pdVector, const int n); static void shuffleNaturalToFourierOrder (double* pdVector, const int n); static void shuffleNaturalToFourierOrder (std::complex* pdVector, const int n); static void shuffleFourierToNaturalOrder (float* pdVector, const int n); static void shuffleFourierToNaturalOrder (double* pdVector, const int n); static void shuffleFourierToNaturalOrder (std::complex* pdVector, const int n); #endif }; ctsim-6.0.2/include/phantom.h0000644000175000017500000002041111235461525015114 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: phantom.h ** Purpose: Header file for Phantom objects ** Programmer: Kevin Rosenberg ** Date Started: July 1, 1984 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef PHANTOM_H #define PHANTOM_H #include #include "ctsupport.h" typedef enum { PELEM_INVALID, PELEM_RECTANGLE, PELEM_TRIANGLE, PELEM_ELLIPSE, PELEM_SECTOR, PELEM_SEGMENT } PhmElemType; /* Codes for Coordinate Types */ /* Defines coords for isPointInside() */ typedef enum { PELEM_COORD, /* Normalized PElem Coordinates */ PHM_COORD /* World phantom Coordinates */ } CoordType; class PhantomElement { public: PhantomElement (const char* const type, const double cx, const double cy, const double u, const double v, const double rot, const double atten); ~PhantomElement (); bool isPointInside (double x, double y, const CoordType coord_type) const; bool clipLineNormalizedCoords (double& x1, double& y1, double& x2, double& y2) const; bool clipLineWorldCoords (double& x1, double& y1, double& x2, double& y2) const; const int nOutlinePoints() const {return m_nPoints;} double* rectLimits() {return m_rectLimits;} double* xOutline() {return m_xOutline;} double* yOutline() {return m_yOutline;} double* const xOutline() const {return m_xOutline;} double* const yOutline() const {return m_yOutline;} const double atten() const {return m_atten;} const double xmin() const {return m_xmin;} const double xmax() const {return m_xmax;} const double ymin() const {return m_ymin;} const double ymax() const {return m_ymax;} const double rot() const {return m_rot;} const double cx() const {return m_cx;} const double cy() const {return m_cy;} const double u() const {return m_u;} const double v() const {return m_v;} static PhmElemType convertNameToType (const char* const typeName); void printDefinition (std::ostream& os) const; void printDefinition (std::ostringstream& os) const; private: PhmElemType m_type; // pelem type (box, ellipse, etc) double m_cx, m_cy; // center of pelem double m_u, m_v; // size of pelem double m_atten; // X-ray attenuation coefficient double m_rot; // pelem rotation angle (in radians) double *m_x, *m_y; // ptr to array of points in obj world coord int m_nPoints; // number of points in outline arrays double m_xmin, m_xmax, m_ymin, m_ymax; // pelem limits GRFMTX_2D m_xformPhmToObj; // map from phantom to normalized pelem coords GRFMTX_2D m_xformObjToPhm; // map from normalized pelem coords to phantom coords double* m_xOutline; double* m_yOutline; double m_rectLimits[4]; static const int POINTS_PER_CIRCLE; static const double SCALE_PELEM_EXTENT; // increase pelem limits by 0.5% static const char* const convertTypeToName (PhmElemType iType); void makeTransformMatrices (); void makeVectorOutline (); void calcArcPoints (double x[], double y[], const int pts, const double xcent, const double ycent, const double r, const double start, const double stop); void calcEllipsePoints (double x[], double y[], const int pts, const double u, const double v); static int numCirclePoints (double theta); PhantomElement (const PhantomElement& rhs); // copy constructor PhantomElement& operator= (const PhantomElement&); // assignment operator }; typedef enum { P_PELEMS, // Phantom made of PElems P_UNIT_PULSE, // Special phantom, not made of pelems P_FILTER // defined only by this type } PhantomComposition; ////////////////////////////////////////////////////// // Phantom Class Declaration ////////////////////////////////////////////////////// class SGP; class ImageFile; class Phantom { public: static const int PHM_INVALID; static const int PHM_HERMAN; static const int PHM_SHEPP_LOGAN; static const int PHM_UNITPULSE; Phantom (); Phantom (const char* const phmName); ~Phantom (); void setComposition (PhantomComposition composition) { m_composition = composition; } const PhantomComposition getComposition () const { return m_composition; } bool createFromPhantom (const char* const phmName); bool createFromPhantom (const int phmid); bool createFromFile (const char* const fname); bool fileWrite (const char* const fname); void addPElem (const PhantomElement& pelem); void addPElem (const char* const composition, const double cx, const double cy, const double u, const double v, const double rot, const double atten); void convertToImagefile (ImageFile& im, double dViewRatio, const int in_nsample, const int trace) const; void convertToImagefile (ImageFile& im, double dViewRatio, const int in_nsample, const int trace, const int colStart, const int colCount, bool bStoreAtColumnPos) const; void convertToImagefile (ImageFile& im, int iNX, double dViewRatio, const int in_nsample, const int trace, const int colStart, const int colCount, int iStorageOffset) const; void printDefinitions (std::ostream& os) const; void printDefinitions (std::ostringstream& os) const; bool fail() const {return m_fail;} const std::string& failMessage() const {return m_failMessage;} const std::string& name() const {return m_name;} const int id() const {return m_id;} #ifdef HAVE_SGP void show () const; void show (SGP& sgp) const; void draw (SGP& sgp) const; #endif void addStdHerman (); void addStdSheppLogan (); void print (std::ostream& os) const; void print (std::ostringstream& os) const; double maxAxisLength () const { return maxValue (m_xmax - m_xmin, m_ymax - m_ymin); } double getDiameterBoundaryCircle() const { return SQRT2 * maxAxisLength(); } const double xmin() const {return m_xmin;} const double xmax() const {return m_xmax;} const double ymin() const {return m_ymin;} const double ymax() const {return m_ymax;} std::list& listPElem() {return m_listPElem;} const std::list& listPElem() const {return m_listPElem;} const int nPElem() const {return m_nPElem;} static const int getPhantomCount() {return s_iPhantomCount;} static const char** getPhantomNameArray() {return s_aszPhantomName;} static const char** getPhantomTitleArray() {return s_aszPhantomTitle;} static int convertNameToPhantomID (const char* const phmName); static const char* convertPhantomIDToName (const int phmID); static const char* convertPhantomIDToTitle (const int phmID); private: PhantomComposition m_composition; int m_nPElem; // number of pelems in phantom double m_xmin, m_xmax, m_ymin, m_ymax; // extent of pelems in pelem coordinates mutable std::list m_listPElem; // pelem lists std::string m_name; int m_id; bool m_fail; std::string m_failMessage; static const char* s_aszPhantomName[]; static const char* s_aszPhantomTitle[]; static const int s_iPhantomCount; void init(); Phantom (const Phantom& rhs); // copy constructor Phantom& operator= (const Phantom&); // assignment operator }; typedef std::list::iterator PElemIterator; typedef std::list::const_iterator PElemConstIterator; #endif ctsim-6.0.2/include/transformmatrix.h0000644000175000017500000000356511240454454016720 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: sgp.h ** Purpose: Header file for Simple Graphics Package ** Author: Kevin Rosenberg ** Date Started: 1984 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef __H_TRANSFORMMATRIX #define __H_TRANSFORMMATRIX #include class TransformationMatrix2D { public: double mtx[3][3]; TransformationMatrix2D () {}; TransformationMatrix2D (double m[3][3]); void setIdentity(); void setTranslate (double x, double y); void setScale (double sx, double sy); void setShear (double shrx, double shry); void setRotate (double theta); double determinant () const; const TransformationMatrix2D invert () const; void transformPoint (double *pX, double *pY) const; void print (std::ostream& ostr) const; friend const TransformationMatrix2D operator* (const TransformationMatrix2D& lhs, const TransformationMatrix2D& rhs); }; const TransformationMatrix2D operator* (const TransformationMatrix2D& lhs, const TransformationMatrix2D& rhs); #endif ctsim-6.0.2/include/plotfile.h0000644000175000017500000001021711240454454015266 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: plotfile.h ** Purpose: PlotFile class header ** Programmer: Kevin Rosenberg ** Date Started: Dec 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef PLOTFILE_H #define PLOTFILE_H #ifndef MSVC #include #endif #include #include #include #include #include #include #include #include #include "ctsupport.h" #include "plotfile.h" // Plotfile structure: // 1. Lines that begin with # are comments // 2. ASCII file format // 3. Header lines begin with and end with // 4. Valid headers // (signifies beginning of plotfile) // (beginning of description lines) // (signifies beginning of ezset commands) // Beginning of data columns // 5. Data is ASCII file format, one record per line // Number of columns is variable and is set by ncolumns header class PlotFile { private: std::string m_strFilename; std::string m_strDate; std::vector m_vecStrDescriptions; std::vector m_vecStrEzsetCommands; std::vector m_vecCurves; int m_iNumColumns; int m_iNumRecords; bool m_bScatterPlot; bool headerRead (std::iostream& os); bool headerWrite (std::iostream& os); bool columnsRead (std::iostream& os); bool columnsWrite (std::iostream& os); void initHeaders (); PlotFile (const PlotFile& rhs); // copy constructor PlotFile& operator= (const PlotFile&); // assignment operator public: PlotFile (int iNColumns, int iNRecords); PlotFile (void); ~PlotFile (); void setCurveSize (int iNCurves, int iNRecords, bool bScatterPlot = false); void addDescription (const char* const pszDesc) { m_vecStrDescriptions.push_back (pszDesc); } void addEzsetCommand (const char* const pszCmd) { m_vecStrEzsetCommands.push_back (pszCmd); } bool addColumn (int iCol, const double* const pdColumn); bool addColumn (int iCol, const float* const pdColumn); void getColumn (int iCol, double *pdColumnData) const; const std::string& getDate () const { return m_strDate; } int getNumColumns () const { return m_iNumColumns; } int getNumRecords () const { return m_iNumRecords; } bool getIsScatterPlot() const { return m_bScatterPlot; } bool getMinMax (int startingCol, double& min, double& max) const; bool statistics (int startingCol, double& min, double& max, double& mean, double& mode, double& median, double &stddev) const; unsigned int getNumDescriptions (void) const { return m_vecStrDescriptions.size(); } const std::string& getDescription (int iDescIndex) const { return m_vecStrDescriptions[iDescIndex]; } unsigned int getNumEzsetCommands (void) const { return m_vecStrEzsetCommands.size(); } const std::string& getEzsetCommand (int iIndex) const { return m_vecStrEzsetCommands[iIndex]; } bool fileRead (const char* const filename); bool fileWrite (const char* const filename); const std::string& getFilename (void) const { return m_strFilename; } void printHeaders (std::ostream& os) const; void printHeaders (std::ostringstream& os) const; void printHeadersBrief (std::ostream& os) const; void printHeadersBrief (std::ostringstream& os) const; }; #endif ctsim-6.0.2/include/ct.h0000644000175000017500000000734613254520103014057 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: ct.h ** Purpose: Master header file for CTSim ** Programmer: Kevin Rosenberg ** Date Started: Aug 1984 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef CT_H #define CT_H #define NO_MAIN 1 // filter out all old main blocks #ifdef MSVC #include "msvc_compat.h" #endif #ifdef HAVE_CONFIG_H #include #endif #ifdef _DEBUG #undef DEBUG #define DEBUG 1 #endif #define HAVE_ANSI_CPP 1 #ifdef HAVE_ANSI_CPP #include #include #include #include #include #include #include #include #if defined(MSVC) || HAVE_SSTREAM #include #else #include #endif #include #include #include #include #include #include #include #include #else #ifdef HAVE_CTYPE_H #include #endif #ifdef HAVE_MATH_H #include #endif #ifdef HAVE_STDIO_H #include #endif #ifdef HAVE_STRING_H #include #endif #ifdef HAVE_STDDEF_H #include #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_STDARG_H #include #endif #endif #ifdef HAVE_DMALLOC #include #endif #ifdef HAVE_UNISTD_H #include #endif #ifdef HAVE_PNG #include "png.h" #endif #ifdef HAVE_G2_H extern "C" { #include "g2.h" } #ifdef HAVE_X11 extern "C" { #include "g2_X11.h" } #endif #endif #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_SYS_STAT_H #include #endif #ifdef HAVE_SYS_FCNTL_H #include #endif #ifdef HAVE_FCNTL_H #include #endif #if defined(HAVE_GETOPT_H) || defined(HAVE_GETOPT_LONG) #include #endif #ifdef HAVE_SETJMP_H #include #endif #ifdef HAVE_SYS_PARAM_H #include /* for htonl on FreeBSD */ #endif #ifdef HAVE_NETINET_IN_H #include /* for htonl on Linux/Solaris */ #endif #ifdef HAVE_INTTYPES_H #include /* for htonl on Solaris */ #endif #ifdef HAVE_STDINT_H #include /* Standard ints on Linux */ #endif #ifdef HAVE_ASSERT_H #include #endif #ifdef HAVE_FFTW #include #define HAVE_FFT 1 #endif #ifdef HAVE_MPI #include "mpi++.h" #include "mpiworld.h" #endif #include "ctsupport.h" #include "fnetorderstream.h" #ifdef HAVE_SGP #include "ezplot.h" #include "sgp.h" #endif #include "array2d.h" #include "array2dfile.h" #include "fnetorderstream.h" #include "imagefile.h" #include "phantom.h" #include "scanner.h" #include "backprojectors.h" #include "filter.h" #include "fourier.h" #include "procsignal.h" #include "projections.h" #include "reconstruct.h" #include "plotfile.h" #include "trace.h" #include "ctglobals.h" // Macro to remove compiler warnings about unused variables #define UNUSED(expr) do { (void)(expr); } while (0) #endif ctsim-6.0.2/include/Makefile.am0000644000175000017500000000054310667176710015344 0ustar kevinkevinnoinst_HEADERS=ct.h ezplot.h pol.h sgp.h array2d.h imagefile.h backprojectors.h mpiworld.h fnetorderstream.h phantom.h timer.h sstream_subst scanner.h projections.h ctsupport.h filter.h array2dfile.h trace.h transformmatrix.h procsignal.h reconstruct.h plotfile.h hashtable.h fourier.h ctglobals.h interpolator.h ctndicom.h nographics.h ctsim-6.0.2/include/pol.h0000644000175000017500000001504011240454454014241 0ustar kevinkevin/***************************************************************************** ** Name: pol.h ** Purpose: Header file for Problem Oriented Language Class ** Programmer: Kevin Rosenberg ** Date Started: 1984 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef __H_POL #define __H_POL #include "hashtable.h" #include class POL { public: // codes for pol_usefile enum { P_USE_STR = 1, // use string as input source P_USE_FILE, // use file as input source }; POL(); ~POL(); void init (); void addSkipWord (const char* const w); void addSkipChar (int c); void addKeyword (const char* const str, int code); bool readWord (const char *search, int nlet); bool readUserToken (char *str, int *code); bool readString (char *str); bool readInteger (int *n, int typecode, bool boundcode, int bb1, int bb2); bool readFloat (double *n, double typecode, bool boundcode, double bb1, double bb2); bool skipTokens (); void reader (); bool readText (char *str, int lim); void usefile (int source, const char *fn); void closefile (); int lookchar (); int inchar (); void ungetch (int c); int get_inputline (FILE *fp); void set_inputline (const char* const line); enum { MAXTOK = 200, // maximum length of a token MAXLINE = 1024, // maximum line length MAXIDENT = 20, MAXSKIPWORD = 20, MAXSKIPCHAR = 20, MIN_INT = -2000000000, MAX_INT = 2000000000, }; // token types enum { TT_STRING = 1, // string token TT_INT, // integer token TT_REAL, // floating point token TT_ALPHA, // alphabetic token TT_ALPNUM, // alphanumeric token TT_NUMALPHA, TT_SPECLCHAR, TT_EOF, // end of file reached TT_ERROR, // error in token, caused by call to wrong type of token reader TT_BLANK, // white space token. pol_tok() skips these TT_USERTOK, // user defined token }; private: // codes for pol_int and pol_float // if in reject catagory, get new number from terminal enum { P_FLTINT = 1, // get a real or integer number P_BFLTINT, // get a real or integer number, clip against bounds P_CBFLTINT, // get real or int, reject if outside bounds P_FLT, // get a real number P_BFLT, // get a real, clip against bounds P_CBFLT, // get a floating, reject if outside bounds P_INT, // get a integer number P_BINT, // get a integer, clip against bounds P_CBINT, // get a integer, reject if outside bounds }; #define LETTER 'a' #define DIGIT '0' // typedef std::map KeywordCodeList; struct token_st { int ready; // TRUE if token is ready // std::string tokstr; // token string char tokstr[MAXTOK+1]; int type; // type of token 'TT_' int code; // holds code for user defined tokens double fnum; // real value of token int inum; // integer value of token }; typedef struct token_st TOKEN; struct token_st token; // current token // Tables words stored with install() & found with lookup() KeywordCodeHashTable skiptable; // words to ignore and skip KeywordCodeHashTable cmdtable; // pol parameter commands KeywordCodeHashTable usertable; // user defined symbols struct metachar { char eoc; /* end of command character */ char str; /* string delimiter */ char com; /* comment character */ char cmd; /* pol parameter command character */ char prg; /* program load character */ char con; /* continuation across newline character */ char out; /* character that delimits output to terminal */ char ter; /* character indicates insertion of input from terminal */ char inb; /* input from graphics device */ } meta; char m_szSkipChars [MAXSKIPCHAR]; // characters to skip bool m_bTrace; bool m_bNewlineIsEOC; struct KeywordCodeList { const char *keyword; int code; }; static const struct KeywordCodeList cmdlist[]; static const unsigned int NUMCMD; // Internal codes for pol commands enum { PC_EOC = 1, PC_STR, PC_COM, PC_CMD, PC_PRG, PC_CON, PC_OUT, PC_TER, PC_INB, PC_NL_EOC, PC_NL_NEOC, PC_TRON, PC_TROFF, PC_FILE, PC_DUMP, }; enum { INPUT_STREAM = 1, INPUT_FILE, INPUT_STRING, }; int m_iInputType; std::istream* m_pInputStream; FILE* m_pInputFile; char* m_pszInputString; enum { MAXFILE = 8, }; int currentf; /* pointer to current fp */ FILE *filep[MAXFILE]; /* == NULL for string input */ char *fname[MAXFILE]; /* pointer to filename */ char inputline[MAXLINE]; /* current input line */ int lineptr; /* current position in inputline */ std::stack m_stackPushBackInput; bool skipSingleToken (char term[]); int tok (struct token_st *token); void dumptok (struct token_st *token); int getpol_tok (struct token_st *token); int getcmd (); int gettok (TOKEN *tok); void getblank (char *s, int toksiz); int getalpha (char *s, int toksiz); void getquote (char *qs, int toksiz); void getescape (char *s, int delim, int toksiz); int getnumber (char str[], int strsize, double *fnum, int *inum); void eatline (); int type (int c); int getch (FILE *fp); }; #endif ctsim-6.0.2/include/sgp.h0000644000175000017500000001716011240454454014245 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: sgp.h ** Purpose: Header file for Simple Graphics Package ** Author: Kevin Rosenberg ** Date Started: 1984 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef __H_SGP #define __H_SGP #if HAVE_CONFIG_H #include "config.h" #endif #include "transformmatrix.h" #ifdef HAVE_WXWINDOWS #include #include #endif #if HAVE_G2_H extern "C" { #include "g2.h" #include "g2_X11.h" } #endif #include class SGPDriver { private: int m_iPhysicalXSize; int m_iPhysicalYSize; std::string m_sWindowTitle; int m_idDriver; #ifdef HAVE_WXWINDOWS wxDC* m_pDC; #endif int m_idG2; public: enum { SGPDRIVER_WXWINDOWS = 1, SGPDRIVER_G2 = 2, SGPDRIVER_OPENGL = 4, }; #ifdef HAVE_WXWINDOWS SGPDriver (wxDC* pDC, int xsize = 640, int ysize = 480); #endif SGPDriver (const char* szWinTitle = "", int xsize = 640, int ysize = 480); ~SGPDriver (); int getPhysicalXSize () const { return m_iPhysicalXSize; } int getPhysicalYSize () const { return m_iPhysicalYSize; } const std::string& getWindowTitle () const { return m_sWindowTitle; } bool isWX () const { return (m_idDriver & SGPDRIVER_WXWINDOWS ? true : false); } bool isG2 () const { return (m_idDriver & SGPDRIVER_G2 ? true : false); } int idG2 () const { return m_idG2; } #ifdef HAVE_WXWINDOWS wxDC* idWX () const { return m_pDC; } void setDC (wxDC* dc) { m_pDC = dc; } #endif }; class SGP_RGBColor; class SGP { private: int m_iPhysicalXSize; // Physical Window size int m_iPhysicalYSize; SGPDriver m_driver; double xw_min; // Window extents double yw_min; double xw_max; double yw_max; double xv_min; // Viewport extents double yv_min; double xv_max; double yv_max; double viewNDC[4]; // Viewport array for clip_rect() int m_iCurrentPhysicalX; int m_iCurrentPhysicalY; double m_dCurrentWorldX; double m_dCurrentWorldY; double m_dTextAngle; int m_iTextPointSize; bool m_bRecalcTransform; double m_dPointsPerPixel; // points (72pt/in) per screen pixel; int m_iLinestyle; int m_iMarker; // Master coordinates are coordinates before CTM transformation // World coordinates are coordinates defined by setWindow() // Normalized device coordinates range from 0. to 1. in both axes TransformationMatrix2D wc_to_ndc; // World coord to NDC matrix TransformationMatrix2D mc_to_ndc; // Master to NDC TransformationMatrix2D ndc_to_mc; // NDC to Master TransformationMatrix2D m_ctm; // Current transfromation matrix void calc_transform (); static SGP_RGBColor s_aRGBColor[]; static int s_iRGBColorCount; #if HAVE_WXWINDOWS wxPen m_pen; wxFont* m_pFont; void initFromDC (wxDC* pDC); #endif public: enum { // linestyles LS_NOLINE = 0, LS_SOLID = 0xffff, LS_DASH1 = 0xff00, LS_DASH2 = 0xf0f0, LS_DASH3 = 0xcccc, LS_DASH4 = 0xff3e, LS_DOTTED = 0xaaaa, }; enum { // Codes for marker symbols MARKER_POINT = 0, // small dot MARKER_SQUARE = 1, // empty square MARKER_FSQUARE = 2, // filled square MARKER_DIAMOND = 3, // empty diamond MARKER_FDIAMOND = 4, // filled diamond MARKER_CROSS = 5, // cross MARKER_XCROSS = 6, // x MARKER_CIRCLE = 7, // open circle MARKER_FCIRCLE = 8, // filled circle MARKER_BSQUARE = 9, // big open square MARKER_BDIAMOND = 10, // big open diamond }; enum { MARK_COUNT = 11, }; static const unsigned char MARKER_BITMAP[MARK_COUNT][5]; SGP (const SGPDriver& driver); ~SGP(); void drawCircle (const double r); void drawArc (const double r, double start, double stop); void drawRect (double xmin, double ymin, double xmax, double ymax); void lineAbs(double x, double y); void moveAbs(double x, double y); void lineRel(double x, double y); void moveRel(double x, double y); void drawText(const char *szMessage); void drawText(const std::string& rsMessage); void polylineAbs(double x[], double y[], int n); void markerAbs (double x, double y); void markerRel(double x, double y); void pointAbs(double x, double y); void pointRel(double x, double y); void eraseWindow (); void setWindow (double xmin, double ymin, double xmax, double ymax); void setViewport (double xmin, double ymin, double xmax, double ymax); void frameViewport(); void setColor (int icol); void setLineStyle (int style); void setTextSize (double height); void setTextNDCSize (double height); void setTextPointSize (double height); void setTextAngle (double angle); void setTextColor (int iFGcolor, int iBGcolor); void setPenWidth (int width); void setMarker (int idMarker); void setRasterOp (int ro); void getWindow (double& xmin, double& ymin, double& xmax, double& ymax); void getViewport (double& xmin, double& ymin, double& xmax, double& ymax); void getTextExtent (const char *szText, double* x, double* y); double getCharHeight (); double getCharWidth (); SGPDriver& getDriver() {return m_driver;} const SGPDriver& getDriver() const {return m_driver;} void ctmClear (); void ctmSet (const TransformationMatrix2D& m); void preTranslate (double x, double y); void postTranslate (double x, double y); void preScale (double sx, double sy); void postScale (double sx, double sy); void preRotate (double theta); void postRotate (double theta); void preShear (double shrx, double shry); void postShear (double shrx, double shry); void transformNDCtoMC (double* x, double* y); void transformMCtoNDC (double* x, double* y); void transformMCtoNDC (double xIn, double yIn, double* xOut, double* yOut); void stylusNDC (double x, double y, bool beam); void pointNDC (double x, double y); void markerNDC (double x, double y); #if HAVE_WXWINDOWS void setDC (wxDC* pDC); #endif }; enum { C_BLACK = 0, // color codes C_BLUE = 1, C_GREEN = 2, C_CYAN = 3, C_RED = 4, C_MAGENTA = 5, C_BROWN = 6, C_GRAY = 7, C_LTGRAY = 8, C_LTBLUE = 9, C_LTGREEN = 10, C_LTCYAN = 11, C_LTRED = 12, C_LTMAGENTA = 13, C_YELLOW = 14, C_WHITE = 15, }; enum RasterOp { RO_AND = 1, RO_AND_INVERT, RO_AND_REVERSE, RO_CLEAR, RO_COPY, RO_EQUIV, RO_INVERT, RO_NAND, RO_NOR, RO_NO_OP, RO_OR, RO_OR_INVERT, RO_OR_REVERSE, RO_SET, RO_SRC_INVERT, RO_XOR, }; class SGP_RGBColor { private: short int r; short int g; short int b; public: SGP_RGBColor (int r, int g, int b) : r(r), g(g), b(b) {} int getRed () const { return r; } int getGreen () const { return g; } int getBlue () const { return b; } }; #endif ctsim-6.0.2/include/filter.h0000644000175000017500000001433311240454454014740 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: filter.h ** Purpose: Signal filter header file ** Programmer: Kevin Rosenberg ** Date Started: June 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef FILTER_H #define FILTER_H #ifdef HAVE_CONFIG_H #include "config.h" #endif #ifdef HAVE_FFTW #include #endif // CLASS IDENTIFICATION // SignalFilter A filter used to process signals // // CONTAINS // signal vector // // Can create either a time/spatial waveform or a frequency signal // Waveforms can be created either by direct calculation or by inverse fourier transform class SignalFilter { public: static const int FILTER_INVALID; static const int FILTER_ABS_BANDLIMIT; // filter times |x| static const int FILTER_ABS_SINC; static const int FILTER_ABS_G_HAMMING; static const int FILTER_ABS_HANNING; static const int FILTER_ABS_COSINE; static const int FILTER_SHEPP; static const int FILTER_BANDLIMIT; static const int FILTER_SINC; static const int FILTER_G_HAMMING; static const int FILTER_HANNING; static const int FILTER_COSINE; static const int FILTER_TRIANGLE; static const int DOMAIN_INVALID; static const int DOMAIN_FREQUENCY; static const int DOMAIN_SPATIAL; SignalFilter (const char* szFilterName, double dFilterMinimum, double dFilterMaximum, int nFilterPoints, double dBandwidth, double dFilterParam, const char* szDomainName); SignalFilter (const int idFilter, double dFilterMinimum, double dFilterMaximum, int nFilterPoints, double dBandwidth, double dFilterParam, const int idDomain); SignalFilter (const char* szFilterName, const char* szDomainName, double dBandwidth, double dFilterParam); ~SignalFilter (void); double* getFilter (void) const { return m_adFilter; } bool fail(void) const {return m_fail;} const std::string& failMessage(void) const {return m_failMessage;} const std::string& nameFilter(void) const { return m_nameFilter;} const std::string& nameDomain(void) const { return m_nameDomain;} const int idFilter(void) const { return m_idFilter;} const int idDomain(void) const { return m_idDomain;} int getNFilterPoints (void) const { return m_nFilterPoints; } const double getFilterMin(void) const {return m_dFilterMin;} const double getFilterMax(void) const {return m_dFilterMax;} const double getFilterIncrement(void) const {return m_dFilterInc;} void copyFilterData(double *pdFilter, const int iStart, const int nPoints) const; double response (double x); static double spatialResponse (int fType, double bw, double x, double param); static double frequencyResponse (int fType, double bw, double u, double param); static double spatialResponseAnalytic (int fType, double bw, double x, double param); static double spatialResponseCalc (int fType, double bw, double x, double param, int nIntegral); static void setNumIntegral(int nIntegral) {N_INTEGRAL = nIntegral;} static const int getFilterCount() {return s_iFilterCount;} static const int getReconstructFilterCount() { return s_iReconstructFilterCount; } static const char* const* getFilterNameArray() {return s_aszFilterName;} static const char* const* getFilterTitleArray() {return s_aszFilterTitle;} static int convertFilterNameToID (const char* const filterName); static const char* convertFilterIDToName (const int idFilter); static const char* convertFilterIDToTitle (const int idFilter); static const int getDomainCount() {return s_iDomainCount;} static const char* const* getDomainNameArray() {return s_aszDomainName;} static const char* const* getDomainTitleArray() {return s_aszDomainTitle;} static int convertDomainNameToID (const char* const domainName); static const char* convertDomainIDToName (const int idDomain); static const char* convertDomainIDToTitle (const int idDomain); static double sinc (double x) { return (fabs(x) > F_EPSILON ? (sin (x) / x) : 1.0); } static double sinc (double x, double mult) { return (fabs(x) > F_EPSILON ? (sin (x * mult) / x) : 1.0); } private: int m_nFilterPoints; double m_dBandwidth; double m_dFilterParam; double m_dFilterInc; double m_dFilterMin; double m_dFilterMax; double* m_adFilter; std::string m_nameFilter; std::string m_nameDomain; int m_idFilter; int m_idDomain; bool m_fail; std::string m_failMessage; static const char* const s_aszFilterName[]; static const char* const s_aszFilterTitle[]; static const int s_iFilterCount; static const int s_iReconstructFilterCount; static const char* const s_aszDomainName[]; static const char* const s_aszDomainTitle[]; static const int s_iDomainCount; static int N_INTEGRAL; static const bool haveAnalyticSpatial (const int filterID); void init (const int idFilter, double dFilterMin, double dFilterMax, int nFilterPoints, double dBandwidth, double dFilterParam, const int idDomain); void createFrequencyFilter (double* x) const; void createSpatialFilter (double* x) const; double spatialResponseCalc (double x) const; double spatialResponseAnalytic (double x) const; double frequencyResponse (double u) const; static double integral_abscos (double u, double w) { return (fabs (u) > F_EPSILON ? (cos (u * w) - 1) / (u * u) + w / u * sin (u * w) : (w * w / 2)); } }; #endif ctsim-6.0.2/include/hashtable.h0000644000175000017500000000401311240454454015400 0ustar kevinkevin/* FILE IDENTIFICATION ** ** File Name: hashtable.h ** Author: Kevin Rosenberg ** Purpose: Header file for hash table library ** Date Started: Dec. 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef HASHTABLE_H #define HASHTABLE_H class KeywordCodeEntry { private: std::string m_strKeyword; int m_iCode; class KeywordCodeEntry *m_pNext; public: KeywordCodeEntry (const char* const pszKeyword, int iCode); const char* const getKeyword() const { return m_strKeyword.c_str(); } bool matchesKeyword (const char* const pszMatch) const; int getCode () const { return m_iCode; } void setCode (int iCode) { m_iCode = iCode; } void setNext (KeywordCodeEntry* pNext) { m_pNext = pNext; } KeywordCodeEntry* getNext () { return m_pNext; } }; class KeywordCodeHashTable { public: enum { HASHSIZE = 100, }; KeywordCodeHashTable() { initTable(); } ~KeywordCodeHashTable() { freeTable(); } void installKeywordCode (const char* const pszKeyword, int iCode); KeywordCodeEntry* lookup (const char* const pszKeyword); private: KeywordCodeEntry* m_hashTable[HASHSIZE]; int hash (const char* s); void initTable (); void freeTable (); }; #endif ctsim-6.0.2/include/ctglobals.h0000644000175000017500000000227311240454454015425 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: ctglobals.h ** Purpose: Global variables for CTSim ** Programmer: Kevin Rosenberg ** Date Started: Jan 2001 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef __CTGLOBALS_H #define __CTGLOBALS_H extern bool g_bRunningWXWindows; // variable defined in syserror.cpp #endif ctsim-6.0.2/include/imagefile.h0000644000175000017500000002106311240454454015373 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: imagefile.h ** Purpose: imagefile class header ** Programmer: Kevin Rosenberg ** Date Started: June 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef IMAGEFILE_H #define IMAGEFILE_H #ifndef MSVC #include #endif #include #include #include #include #include "ctsupport.h" #include "fnetorderstream.h" #include "array2dfile.h" #ifdef HAVE_MPI #include #endif class F32Image : public Array2dFile { public: F32Image (int nx, int ny, int dataType = Array2dFile::DATA_TYPE_REAL); F32Image (void); kfloat32** getArray (void) { return (kfloat32**) (m_arrayData); } kfloat32** const getArray (void) const { return (kfloat32** const) (m_arrayData); } kfloat32** getImaginaryArray (void) { return (kfloat32**) (m_imaginaryArrayData); } kfloat32** const getImaginaryArray (void) const { return (kfloat32** const) (m_imaginaryArrayData); } #ifdef HAVE_MPI MPI::Datatype getMPIDataType (void) const { return MPI::FLOAT; } #endif private: F32Image (const F32Image& rhs); //copy constructor F32Image& operator= (const F32Image& rhs); // assignment operator }; class F64Image : public Array2dFile { public: F64Image (int nx, int ny, int dataType = Array2dFile::DATA_TYPE_REAL); F64Image (void); kfloat64** getArray (void) { return (kfloat64**) (m_arrayData); } kfloat64** const getArray (void) const { return (kfloat64** const) (m_arrayData); } kfloat64** getImaginaryArray (void) { return (kfloat64**) (m_imaginaryArrayData); } kfloat64** const getImaginaryArray (void) const { return (kfloat64** const) (m_imaginaryArrayData); } #ifdef HAVE_MPI MPI::Datatype getMPIDataType (void) const { return MPI::DOUBLE; } #endif private: F64Image (const F64Image& rhs); //copy constructor F64Image& operator= (const F64Image& rhs); // assignment operator }; #undef IMAGEFILE_64_BITS #ifdef IMAGEFILE_64_BITS typedef F64Image ImageFileBase; typedef kfloat64 ImageFileValue; typedef kfloat64* ImageFileColumn; typedef kfloat64** ImageFileArray; typedef kfloat64** const ImageFileArrayConst; typedef const kfloat64* ImageFileColumnConst; #else typedef F32Image ImageFileBase; typedef kfloat32 ImageFileValue; typedef kfloat32* ImageFileColumn; typedef kfloat32** ImageFileArray; typedef kfloat32** const ImageFileArrayConst; typedef const kfloat32* ImageFileColumnConst; #endif class ImageFile : public ImageFileBase { private: static const char* s_aszExportFormatName[]; static const char* s_aszExportFormatTitle[]; static const int s_iExportFormatCount; static const char* s_aszImportFormatName[]; static const char* s_aszImportFormatTitle[]; static const int s_iImportFormatCount; static void skipSpacePPM (FILE* fp); // skip space in a ppm file public: static const int EXPORT_FORMAT_INVALID; static const int IMPORT_FORMAT_INVALID; static const int EXPORT_FORMAT_TEXT; static const int EXPORT_FORMAT_PGM; static const int EXPORT_FORMAT_PGMASCII; static const int IMPORT_FORMAT_PPM; #if HAVE_PNG static const int EXPORT_FORMAT_PNG; static const int EXPORT_FORMAT_PNG16; static const int IMPORT_FORMAT_PNG; #endif #if HAVE_CTN_DICOM static const int EXPORT_FORMAT_DICOM; static const int IMPORT_FORMAT_DICOM; #endif static const int EXPORT_FORMAT_RAW; static const int getExportFormatCount() {return s_iExportFormatCount;} static const char** getExportFormatNameArray() {return s_aszExportFormatName;} static const char** getExportFormatTitleArray() {return s_aszExportFormatTitle;} static int convertExportFormatNameToID (const char* const ExportFormatName); static const char* convertExportFormatIDToName (const int ExportFormatID); static const char* convertExportFormatIDToTitle (const int ExportFormatID); static const int getImportFormatCount() {return s_iImportFormatCount;} static const char** getImportFormatNameArray() {return s_aszImportFormatName;} static const char** getImportFormatTitleArray() {return s_aszImportFormatTitle;} static int convertImportFormatNameToID (const char* const ImportFormatName); static const char* convertImportFormatIDToName (const int ImportFormatID); static const char* convertImportFormatIDToTitle (const int ImportFormatID); static const double s_dRedGrayscaleFactor; static const double s_dGreenGrayscaleFactor; static const double s_dBlueGrayscaleFactor; ImageFile (int nx, int ny) : ImageFileBase (nx, ny) {} ImageFile (void) : ImageFileBase () {} void getCenterCoordinates (unsigned int& iXCenter, unsigned int& iYCenter); bool convertRealToComplex (); bool convertComplexToReal (); void filterResponse (const char* const domainName, double bw, const char* const filterName, double filt_param, double dInputScale = 1., double dOutputScale = 1.); void statistics (double& min, double& max, double& mean, double& mode, double& median, double& stddev) const; void statistics (ImageFileArrayConst v, double& min, double& max, double& mean, double& mode, double& median, double& stddev) const; void getMinMax (double& min, double& max) const; void printStatistics (std::ostream& os) const; bool comparativeStatistics (const ImageFile& imComp, double& d, double& r, double& e) const; bool printComparativeStatistics (const ImageFile& imComp, std::ostream& os) const; bool subtractImages (const ImageFile& rRHS, ImageFile& result) const; bool addImages (const ImageFile& rRHS, ImageFile& result) const; bool multiplyImages (const ImageFile& rRHS, ImageFile& result) const; bool divideImages (const ImageFile& rRHS, ImageFile& result) const; bool scaleImage (ImageFile& result) const; bool invertPixelValues (ImageFile& result) const; bool sqrt (ImageFile& result) const; bool square (ImageFile& result) const; bool log (ImageFile& result) const; bool exp (ImageFile& result) const; bool fourier (ImageFile& result) const; bool inverseFourier (ImageFile& result) const; #ifdef HAVE_FFTW bool fft (ImageFile& result) const; bool ifft (ImageFile& result) const; bool fftRows (ImageFile& result) const; bool ifftRows (ImageFile& result) const; bool fftCols (ImageFile& result) const; bool ifftCols (ImageFile& result) const; #endif bool magnitude (ImageFile& result) const; bool phase (ImageFile& result) const; bool real (ImageFile& result) const; bool imaginary (ImageFile& result) const; bool exportImage (const char* const pszFormat, const char* const pszFilename, int nxcell, int nycell, double densmin, double densmax); bool importImage (const char* const pszFormat, const char* const pszFilename); #ifdef HAVE_PNG bool writeImagePNG (const char* const outfile, int bitdepth, int nxcell, int nycell, double densmin, double densmax); bool readImagePNG (const char* const pszFile); #endif #ifdef HAVE_GD bool writeImageGIF (const char* const outfile, int nxcell, int nycell, double densmin, double densmax); #endif bool writeImagePGM (const char* const outfile, int nxcell, int nycell, double densmin, double densmax); bool writeImagePGMASCII (const char* const outfile, int nxcell, int nycell, double densmin, double densmax); bool readImagePPM (const char* const pszFile); bool writeImageRaw(const char* const outfile, int nxcell, int nycell); bool writeImageText (const char* const outfile); static double redGrayscaleFactor() {return s_dRedGrayscaleFactor;} static double greenGrayscaleFactor() {return s_dGreenGrayscaleFactor;} static double blueGrayscaleFactor() {return s_dBlueGrayscaleFactor;} static double colorToGrayscale (double r, double g, double b) { return r * s_dRedGrayscaleFactor + g * s_dGreenGrayscaleFactor + b * s_dBlueGrayscaleFactor; } }; #endif ctsim-6.0.2/include/array2d.h0000644000175000017500000000543311240454454015020 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: array2d.h ** Purpose: 2-dimension array classes ** Programmer: Kevin Rosenberg ** Date Started: June 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef ARRAY2D_H #define ARRAY2D_H #include "ctsupport.h" template class Array2d { public: Array2d (unsigned int x, unsigned int y) : m_nx(x), m_ny(y), array_data(0) { allocArray(); } Array2d () : m_nx(0), m_ny(0), array_data(0) {} ~Array2d () { deleteArray(); } void initSetSize (unsigned int x, unsigned int y) { m_nx = x; m_ny = y; deleteArray(); allocArray(); } T** getArray () const { return array_data; } T* getColumn (unsigned int x) const { return (array_data ? array_data[x] : NULL); } T getPoint (unsigned int x, unsigned int y) const { return (array_data ? array_data[x][y] : NULL); } unsigned int sizeofPixel () const { return sizeof(T); } unsigned int sizeofColumn () const { return (sizeof(T) * m_ny); } unsigned int sizeofArray () const { return (sizeof(T) * m_nx * m_ny); } private: unsigned int m_nx; unsigned int m_ny; T** array_data; void allocArray () { if (array_data) deleteArray(); array_data = new T*[m_nx]; for (unsigned int i = 0; i < m_nx; i++) array_data[i] = new T[m_ny]; } void deleteArray () { if (array_data) { for (unsigned int i = 0; i < m_nx; i++) delete array_data [i]; delete array_data; array_data = NULL; } } Array2d& operator= (const Array2d& rhs); //assignment operator Array2d (const Array2d& rhs); // copy constructor }; #endif ctsim-6.0.2/include/Makefile.in0000644000175000017500000003474413254406203015353 0ustar kevinkevin# 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 = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = include ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/scripts/ax_check_compile_flag.m4 \ $(top_srcdir)/scripts/ax_ext.m4 \ $(top_srcdir)/scripts/ax_gcc_x86_avx_xgetbv.m4 \ $(top_srcdir)/scripts/ax_gcc_x86_cpuid.m4 \ $(top_srcdir)/scripts/ax_openmp.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = 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 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # 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 am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPUEXT_FLAGS = @CPUEXT_FLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ 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@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIMD_FLAGS = @SIMD_FLAGS@ STRIP = @STRIP@ VERSION = @VERSION@ XMKMF = @XMKMF@ X_BASIC_LIBS = @X_BASIC_LIBS@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ X_TOOLKIT_LIBS = @X_TOOLKIT_LIBS@ 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 = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ cgibindir = @cgibindir@ cgibinurl = @cgibinurl@ cgiprograms = @cgiprograms@ ctlibs = @ctlibs@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldata = @htmldata@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lamdefs = @lamdefs@ lamdir = @lamdir@ lamprograms = @lamprograms@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mpienable = @mpienable@ my_includes = @my_includes@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ webdatadir = @webdatadir@ webdataurl = @webdataurl@ webenabled = @webenabled@ wx_cppflags = @wx_cppflags@ wxcflags = @wxcflags@ wxconfig = @wxconfig@ wxlibs = @wxlibs@ noinst_HEADERS = ct.h ezplot.h pol.h sgp.h array2d.h imagefile.h backprojectors.h mpiworld.h fnetorderstream.h phantom.h timer.h sstream_subst scanner.h projections.h ctsupport.h filter.h array2dfile.h trace.h transformmatrix.h procsignal.h reconstruct.h plotfile.h hashtable.h fourier.h ctglobals.h interpolator.h ctndicom.h nographics.h all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu include/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): 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" 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 distdir: $(DISTFILES) @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 check-am: all-am check: check-am all-am: Makefile $(HEADERS) installdirs: 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: clean-generic: 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) 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-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: 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 Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ cscopelist-am ctags ctags-am distclean distclean-generic \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am 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-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile # 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: ctsim-6.0.2/include/fnetorderstream.h0000644000175000017500000000701311240454454016654 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: fnetorderstream.h ** Purpose: Network-order file stream header ** Programmer: Kevin Rosenberg ** Date Started: Sep 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef NETORDER_H #define NETORDER_H #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include #include inline bool NativeBigEndian (void) { #ifdef WORDS_BIGENDIAN return true; #else return false; #endif } inline void SwapBytes2 (void* buffer) { unsigned char* p = static_cast(buffer); unsigned char temp = p[0]; p[0] = p[1]; p[1] = temp; } // 0<->3 1<->2 = 0123 -> 3210 inline void SwapBytes4 (void* buffer) { unsigned char* p = static_cast(buffer); unsigned char temp = p[0]; p[0] = p[3]; p[3] = temp; temp = p[1]; p[1] = p[2]; p[2] = temp; } // 0<->7 1<->6 2<->5 3<->4 = 01234567 -> 76543210 inline void SwapBytes8 (void* buffer) { unsigned char* p = static_cast(buffer); unsigned char temp = p[0]; p[0] = p[7]; p[7] = temp; temp = p[1]; p[1] = p[6]; p[6] = temp; temp = p[2]; p[2] = p[5]; p[5] = temp; temp = p[3]; p[3] = p[4]; p[4] = temp; } inline void SwapBytes2IfLittleEndian (void* buffer) { #ifndef WORDS_BIGENDIAN SwapBytes2 (buffer); #endif } inline void SwapBytes4IfLittleEndian (void* buffer) { #ifndef WORDS_BIGENDIAN SwapBytes4 (buffer); #endif } inline void SwapBytes8IfLittleEndian (void* buffer) { #ifndef WORDS_BIGENDIAN SwapBytes8 (buffer); #endif } void ConvertNetworkOrder (void* buffer, size_t bytes); void ConvertReverseNetworkOrder (void* buffer, size_t bytes); using std::fstream; class fnetorderstream : public fstream { public: fnetorderstream (const char* filename, std::ios::openmode mode) : fstream (filename, mode) {} ~fnetorderstream (void) {} virtual void writeInt16 (kuint16 n); virtual void writeInt32 (kuint32 n); virtual void writeFloat32 (kfloat32 n); virtual void writeFloat64 (kfloat64 n); virtual void readInt16 (kuint16& n); virtual void readInt32 (kuint32& n); virtual void readFloat32 (kfloat32& n); virtual void readFloat64 (kfloat64& n); }; class frnetorderstream : public fnetorderstream { public: frnetorderstream (const char* filename, std::ios::openmode mode) : fnetorderstream (filename, mode) {} virtual void writeInt16 (kuint16 n); virtual void writeInt32 (kuint32 n); virtual void writeFloat32 (kfloat32 n); virtual void writeFloat64 (kfloat64 n); virtual void readInt16 (kuint16& n); virtual void readInt32 (kuint32& n); virtual void readFloat32 (kfloat32& n); virtual void readFloat64 (kfloat64& n); }; #endif ctsim-6.0.2/include/reconstruct.h0000644000175000017500000000470111240454454016024 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: reconstruct.h Header file for Reconstruction class ** Programmer: Kevin Rosenberg ** Date Started: Aug 84 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef __RECONSTRUCT_H #define __RECONSTRUCT_H class Projections; class ImageFile; class Backprojector; class ProcessSignal; #include struct ReconstructionROI { double m_dXMin; double m_dYMin; double m_dXMax; double m_dYMax; }; class Reconstructor { private: const Projections& m_rOriginalProj; const Projections* m_pProj; ImageFile& m_rImagefile; ProcessSignal* m_pProcessSignal; Backprojector* m_pBackprojector; int m_nFilteredProjections; int m_iTrace; const bool m_bRebinToParallel; bool m_bFail; std::string m_strFailMessage; double* m_adPlotXAxis; public: Reconstructor (const Projections& rProj, ImageFile& rIF, const char* const filterName, double filt_param, const char* const filterMethodName, const int zeropad, const char* filterGenerationName, const char* const interpName, int interpFactor, const char* const backprojectName, const int trace, ReconstructionROI* pROI = NULL, bool bRebinToParallel = false, SGP* pSGP = NULL); ~Reconstructor (); bool fail() const {return m_bFail;} const std::string& failMessage() const {return m_strFailMessage;} void plotFilter (SGP* pSGP = NULL); void reconstructAllViews (); void reconstructView (int iStartView = 0, int iViewCount = -1, SGP* pSGP = NULL, bool bBackprojectView = true, double dGraphWidth = 1.); void postProcessing (); }; #endif ctsim-6.0.2/include/scanner.h0000644000175000017500000001733311240454454015107 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: scanner.h ** Purpose: Scanner header file ** Programmer: Kevin Rosenberg ** Date Started: July 1, 1984 ** ** This is part of the CTSim program ** Copyright (C) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef SCANNER_H #define SCANNER_H #include "trace.h" class Projections; class Phantom; class PhantomElement; class SGP; // Projections are collected along an array of ndet detectors. The data // for these detectors is stored in the class DetectorArray typedef float DetectorValue; class DetectorArray { public: DetectorArray (const int ndet); ~DetectorArray (); const int nDet() const {return m_nDet;} const double viewAngle() const {return m_viewAngle;} DetectorValue* detValues() {return m_detValues;} const DetectorValue* detValues() const {return m_detValues;} void setViewAngle (double viewAngle) { m_viewAngle = viewAngle; } private: DetectorValue* m_detValues; // Pointer to array of values recorded by detector int m_nDet; // Number of detectors in array */ double m_viewAngle; // View angle in radians DetectorArray& operator=(const DetectorArray& rhs); // assignment DetectorArray (const DetectorArray& rhs); // copy constructor }; class Scanner { public: static const int GEOMETRY_INVALID; static const int GEOMETRY_PARALLEL; static const int GEOMETRY_EQUILINEAR; static const int GEOMETRY_EQUIANGULAR; static const int GEOMETRY_LINOGRAM; Scanner (const Phantom& phm, const char* const geometryName, int nDet, int nView, int iOffsetView, int nSample, const double rot_anglen, double dFocalLengthRatio, double dCenterDetectorRatio, double dViewRatio, double dScanRatio); ~Scanner(); void collectProjections (Projections& proj, const Phantom& phm, const int trace = Trace::TRACE_NONE, SGP* pSGP = NULL); void collectProjections (Projections& proj, const Phantom& phm, const int iStartView, const int iNumViews, const int iOffsetView, bool bStoreAtViewPosition, const int trace = Trace::TRACE_NONE, SGP* pSGP = NULL); void collectProjections (Projections& proj, const Phantom& phm, const int iStartView, const int iNumViews, const int iOffsetView, int iStorageOffset, const int trace = Trace::TRACE_NONE, SGP* pSGP = NULL); void setNView (int nView); void setOffsetView (int iOffsetView); bool fail() const {return m_fail;} const std::string& failMessage() const {return m_failMessage;} unsigned int nDet() const {return m_nDet;} unsigned int nView() const {return m_nView;} unsigned int offsetView() const {return m_iOffsetView;} unsigned int startView() const {return m_startView;} double rotInc() const {return m_rotInc;} double detInc() const {return m_detInc;} double detLen() const {return m_detLen;} double detStart() const {return m_detStart;} double focalLength() const {return m_dFocalLength;} double sourceDetectorLength() const {return m_dSourceDetectorLength;} double centerDetectorLength() const {return m_dCenterDetectorLength;} double viewDiameter() const {return m_dViewDiameter;} double scanDiameter() const {return m_dScanDiameter;} double fanBeamAngle() const {return m_dFanBeamAngle;} int geometry() const {return m_idGeometry;} static int getGeometryCount() {return s_iGeometryCount;} static const char* const* getGeometryNameArray() {return s_aszGeometryName;} static const char* const* getGeometryTitleArray() {return s_aszGeometryTitle;} static int convertGeometryNameToID (const char* const geometryName); static const char* convertGeometryIDToName (const int idGeometry); static const char* convertGeometryIDToTitle (const int idGeometry); private: bool m_fail; std::string m_failMessage; int m_idGeometry; unsigned int m_nDet; /* Number of detectors in array */ unsigned int m_nView; /* Number of rotated views */ unsigned int m_iOffsetView; unsigned int m_startView; unsigned int m_nSample; /* Number of rays per detector */ double m_dFocalLength; // Focal Length, distance from source to center double m_dSourceDetectorLength; // Distance from source to detectors double m_dCenterDetectorLength; // Distance from center to detectors double m_dViewDiameter; // Diameter of area being processed double m_dScanDiameter; // Diamer of area being scanned double m_dViewRatio; // View Ratio to diameter phantom double m_dFocalLengthRatio; // Source to Center Length as ratio to viewDiameter radius double m_dCenterDetectorRatio; // Center to Detector Length as ratio of viewDiameter radius double m_dScanRatio; // Scan length to view length ratio double m_dFanBeamAngle; double m_detLen; // Total length of detector array double m_rotLen; // Rotation angle length in radians (norm 2PI) double m_detInc; // Increment between centers of detectors double m_rotInc; // Increment in rotation angle between views double m_detStart; double m_dXCenter; // Center of Phantom double m_dYCenter; double m_dAngularDetIncrement; double m_dAngularDetLen; int m_trace; struct { double xd1,yd1,xd2,yd2; /* Coordinates of detector endpoints */ double xs1,ys1,xs2,ys2; /* Coordinates of source endpoints */ double angle; /* Starting angle */ double dAngularDet; } m_initPos; GRFMTX_2D m_rotmtxIncrement; #ifdef HAVE_SGP SGP* m_pSGP; // Pointer to graphics device double m_dXMinWin; // Extent of graphics window double m_dXMaxWin; double m_dYMinWin; double m_dYMaxWin; double m_dTextHeight; #endif static const char* const s_aszGeometryName[]; static const char* const s_aszGeometryTitle[]; static const int s_iGeometryCount; void projectSingleView (const Phantom& phm, DetectorArray& darray, const double xd1, const double yd1, const double xd2, const double yd2, const double xs1, const double ys1, const double xs2, const double ys2, const double dDetAngle); double projectSingleLine (const Phantom& phm, const double x1, const double y1, const double x2, const double y2); double projectLineAgainstPElem (const PhantomElement& pelem, const double x1, const double y1, const double x2, const double y2); void traceShowParam (const char* szLabel, const char *fmt, int row, int color, ...); void traceShowParamXOR (const char* szLabel, const char *fmt, int row, int color, ...); void traceShowParamRasterOp (int iRasterOp, const char* szLabel, const char* fmt, int row, int color, va_list va); }; const static int PROJECTION_TRACE_ROW_PHANT_ID=0; const static int PROJECTION_TRACE_ROW_GEOMETRY=1; const static int PROJECTION_TRACE_ROW_FOCAL_LENGTH=2; const static int PROJECTION_TRACE_ROW_FIELD_OF_VIEW=3; const static int PROJECTION_TRACE_ROW_NDET=4; const static int PROJECTION_TRACE_ROW_NVIEW=5; const static int PROJECTION_TRACE_ROW_SAMPLES=6; const static int PROJECTION_TRACE_ROW_CURR_VIEW=7; const static int PROJECTION_TRACE_ROW_ATTEN=8; #endif ctsim-6.0.2/include/array2dfile.h0000644000175000017500000001570411240454454015662 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: array2dfile.h ** Purpose: 2-dimension array file class ** Programmer: Kevin Rosenberg ** Date Started: June 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef ARRAY2DFILE_H #define ARRAY2DFILE_H #ifndef MSVC #include #endif #include #include #include #include #include #include #include #include #include "ctsupport.h" #include "fnetorderstream.h" #include "array2d.h" class Array2dFileLabel { public: enum { L_EMPTY = 0, L_HISTORY = 1, L_USER = 2, }; Array2dFileLabel(); Array2dFileLabel(const char* const str, double ctime = 0.); Array2dFileLabel(const int type, const char* const str, double ctime = 0.); ~Array2dFileLabel(); const std::string& getLabelString (void) const { return m_strLabel; } kfloat64 getCalcTime (void) const { return m_calcTime; } void setCalcTime (kfloat64 calcTime) { m_calcTime = calcTime; } void setLabelType (int labelType) { m_labelType = labelType; } int getLabelType (void) const { return m_labelType; } std::string& setLabelString (const char* const str) { m_strLabel = str; return (m_strLabel); } std::string& setLabelString (const std::string& str) { m_strLabel = str; return (m_strLabel); } void setDateTime (int year, int month, int day, int hour, int minute, int second); void getDateTime (int& year, int& month, int& day, int& hour, int& minute, int& second) const; const std::string& getDateString () const; void print (std::ostream& os) const; void printBrief (std::ostream& os) const; void printBrief (std::ostringstream& os) const; Array2dFileLabel (const Array2dFileLabel& rhs); Array2dFileLabel& operator= (const Array2dFileLabel& rhs); private: void init (void); kuint16 m_labelType; kuint16 m_year; kuint16 m_month; kuint16 m_day; kuint16 m_hour; kuint16 m_minute; kuint16 m_second; std::string m_strLabel; kfloat64 m_calcTime; mutable std::string m_strDate; }; class Array2dFile { public: enum { PIXEL_INVALID = 0, PIXEL_INT8 = 1, PIXEL_UINT8 = 2, PIXEL_INT16 = 3, PIXEL_UINT16 = 4, PIXEL_INT32 = 5, PIXEL_UINT32 = 6, PIXEL_FLOAT32 = 7, PIXEL_FLOAT64 = 8, }; enum { DATA_TYPE_INVALID = 0, DATA_TYPE_REAL, DATA_TYPE_COMPLEX, }; Array2dFile (int nx, int ny, int pixelSize, int pixelFormat = PIXEL_INVALID, int dataType = DATA_TYPE_REAL); Array2dFile (void); ~Array2dFile (); void setArraySize (int nx, int ny, int pixelSize, int pixelFormat = PIXEL_INVALID, int dataType = DATA_TYPE_REAL); void setArraySize (int nx, int ny); unsigned int getNumLabels (void) const { return m_labels.size(); } const Array2dFileLabel& labelGet (int label_num) const; void labelAdd (const Array2dFileLabel& label); void labelAdd (const char* const m_strLabel, double calc_time=0.); void labelAdd (int type, const char* const m_strLabel, double calc_time=0.); void labelsCopy (const Array2dFile& file, const char* const idStr = NULL); void setPixelFormat (int type) { m_pixelFormat = type; } void setPixelSize (int size) { m_pixelSize = size; } kuint32 nx (void) const { return m_nx; } kuint32 ny (void) const { return m_ny; } bool isComplex() const { return m_dataType == DATA_TYPE_COMPLEX; } bool isReal() const { return m_dataType == DATA_TYPE_REAL; } int dataType () const { return static_cast(m_dataType); } void setDataType (int dataType) { m_dataType = dataType; } void setAxisIncrement (double axisIncX, double axisIncY); bool reallocRealToComplex (); bool reallocComplexToReal (); void getPixelValueRange (double& pvmin, double& pvmax) const; void setAxisExtent (double minX, double maxX, double minY, double maxY); bool getAxisExtent (double& minX, double& maxX, double& minY, double& maxY) const { if (! m_axisExtentKnown) return false; minX = m_minX; maxX = m_maxX; minY = m_minY; maxY=m_maxY; return true; } void doPixelOffsetScale (double offset, double scale); kfloat64 axisIncrementX() const {return m_axisIncrementKnown ? m_axisIncrementX : 0.;} kfloat64 axisIncrementY() const {return m_axisIncrementKnown ? m_axisIncrementY : 0.;} void arrayDataClear (void); bool fileRead (const char* const filename); bool fileRead (const std::string& filename); bool fileWrite (const char* const filename); bool fileWrite (const std::string& filename); const std::string& getFilename (void) const { return m_filename; } void printLabels (std::ostream& os) const; void printLabelsBrief (std::ostream& os) const; void printLabelsBrief (std::ostringstream& os) const; unsigned int nLabels() const { return m_labels.size(); } typedef std::vector::iterator labelIterator; typedef std::vector::const_iterator constLabelIterator; protected: typedef std::vector labelContainer; static const kuint16 m_signature; kuint16 m_headersize; std::string m_filename; kuint16 m_pixelSize; kuint16 m_pixelFormat; kuint16 m_axisIncrementKnown; kfloat64 m_axisIncrementX, m_axisIncrementY; kuint16 m_axisExtentKnown; kfloat64 m_minX, m_maxX, m_minY, m_maxY; kfloat64 m_offsetPV, m_scalePV; kuint32 m_nx; kuint32 m_ny; kuint32 m_arraySize; labelContainer m_labels; kuint16 m_numFileLabels; kuint16 m_dataType; unsigned char** m_arrayData; unsigned char** m_imaginaryArrayData; private: void init (void); bool headerRead (frnetorderstream& fs); bool headerWrite (frnetorderstream& fs); bool arrayDataRead (frnetorderstream& fs); bool arrayDataWrite (frnetorderstream& fs); bool labelsRead (frnetorderstream& fs); bool labelsWrite (frnetorderstream& fs); bool labelSeek (int label_num); void allocArrays (); void freeArrays (); void allocArray (unsigned char**& rppData); void freeArray (unsigned char**& rppData); Array2dFile (const Array2dFile& rhs); // copy constructor Array2dFile& operator= (const Array2dFile&); // assignment operator }; #endif ctsim-6.0.2/include/interpolator.h0000644000175000017500000002010011240454454016162 0ustar kevinkevin/***************************************************************************** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ class CubicSplineInterpolator { private: double *m_pdY2; // second differential of y data const double* const m_pdY; const int m_n; public: CubicSplineInterpolator (const double* const y, int n); ~CubicSplineInterpolator (); double interpolate (double x); }; class CubicPolyInterpolator { private: const double* const m_pdY; const int m_n; public: CubicPolyInterpolator (const double* const y, int n); ~CubicPolyInterpolator (); double interpolate (double x); }; template class BilinearInterpolator { private: T** const m_ppMatrix; const int m_nx; const int m_ny; public: BilinearInterpolator (T** ppMatrix, unsigned int nx, unsigned int ny) : m_ppMatrix(ppMatrix), m_nx(nx), m_ny(ny) {} T interpolate (double dXPos, double dYPos) { int iFloorX = static_cast(floor(dXPos)); int iFloorY = static_cast(floor (dYPos)); double dXFrac = dXPos - iFloorX; double dYFrac = dYPos - iFloorY; T result = 0; if (iFloorX < 0 || iFloorY < 0 || iFloorX > m_nx-1 || iFloorY > m_ny-1) result = 0; else if (iFloorX == m_nx - 1 && iFloorY == m_ny - 1) result = static_cast(m_ppMatrix[m_nx-1][m_ny-1]); else if (iFloorX == m_nx - 1) result = static_cast(m_ppMatrix[iFloorX][iFloorY] + dYFrac * (m_ppMatrix[iFloorX][iFloorY+1] - m_ppMatrix[iFloorX][iFloorY])); else if (iFloorY == m_ny - 1) result = static_cast(m_ppMatrix[iFloorX][iFloorY] + dXFrac * (m_ppMatrix[iFloorX+1][iFloorY] - m_ppMatrix[iFloorX][iFloorY])); else result = static_cast ((1 - dXFrac) * (1 - dYFrac) * m_ppMatrix[iFloorX][iFloorY] + dXFrac * (1 - dYFrac) * m_ppMatrix[iFloorX+1][iFloorY] + dYFrac * (1 - dXFrac) * m_ppMatrix[iFloorX][iFloorY+1] + dXFrac * dYFrac * m_ppMatrix[iFloorX+1][iFloorY+1]); return result; } }; template class BilinearPolarInterpolator { private: T** const m_ppMatrix; const int m_nAngle; const int m_nPos; int m_nCenterPos; public: BilinearPolarInterpolator (T** ppMatrix, unsigned int nAngle, unsigned int nPos) : m_ppMatrix(ppMatrix), m_nAngle(nAngle), m_nPos(nPos) { if (m_nPos %2) m_nCenterPos = (m_nPos - 1) / 2; else m_nCenterPos = m_nPos / 2; } T interpolate (double dAngle, double dPos) { int iFloorAngle = static_cast(floor(dAngle)); int iFloorPos = static_cast(floor (dPos)); double dAngleFrac = dAngle - iFloorAngle; double dPosFrac = dPos - iFloorPos; T result = 0; if (iFloorAngle < -1 || iFloorPos < 0 || iFloorAngle > m_nAngle-1 || iFloorPos > m_nPos-1) result = 0; else if (iFloorAngle == -1 && iFloorPos == m_nPos-1) result = static_cast(m_ppMatrix[0][m_nPos-1] + dAngleFrac * (m_ppMatrix[m_nAngle-1][iFloorPos] - m_ppMatrix[0][iFloorPos])); else if (iFloorAngle == m_nAngle - 1 && iFloorPos == m_nPos-1) result = static_cast(m_ppMatrix[m_nAngle-1][m_nPos-1] + dAngleFrac * (m_ppMatrix[0][iFloorPos] - m_ppMatrix[m_nAngle-1][iFloorPos])); else if (iFloorPos == m_nPos - 1) result = static_cast(m_ppMatrix[iFloorAngle][iFloorPos] + dAngleFrac * (m_ppMatrix[iFloorAngle+1][iFloorPos] - m_ppMatrix[iFloorAngle][iFloorPos])); else { if (iFloorAngle == m_nAngle-1) { int iUpperAngle = 0; int iLowerPos = (m_nPos-1) - iFloorPos; int iUpperPos = (m_nPos-1) - (iFloorPos+1); result = static_cast ((1-dAngleFrac) * (1-dPosFrac) * m_ppMatrix[iFloorAngle][iFloorPos] + dAngleFrac * (1-dPosFrac) * m_ppMatrix[iUpperAngle][iLowerPos] + dPosFrac * (1-dAngleFrac) * m_ppMatrix[iFloorAngle][iFloorPos+1] + dAngleFrac * dPosFrac * m_ppMatrix[iUpperAngle][iUpperPos]); } else if (iFloorAngle == -1) { int iLowerAngle = m_nAngle - 1; int iLowerPos = (m_nPos-1) - iFloorPos; int iUpperPos = (m_nPos-1) - (iFloorPos+1); result = static_cast ((1-dAngleFrac) * (1-dPosFrac) * m_ppMatrix[iLowerAngle][iLowerPos] + dAngleFrac * (1-dPosFrac) * m_ppMatrix[iFloorAngle+1][iFloorPos] + dPosFrac * (1-dAngleFrac) * m_ppMatrix[iLowerAngle][iUpperPos] + dAngleFrac * dPosFrac * m_ppMatrix[iFloorAngle+1][iFloorPos+1]); } else result = static_cast ((1-dAngleFrac) * (1-dPosFrac) * m_ppMatrix[iFloorAngle][iFloorPos] + dAngleFrac * (1-dPosFrac) * m_ppMatrix[iFloorAngle+1][iFloorPos] + dPosFrac * (1-dAngleFrac) * m_ppMatrix[iFloorAngle][iFloorPos+1] + dAngleFrac * dPosFrac * m_ppMatrix[iFloorAngle+1][iFloorPos+1]); } return result; } }; template class BicubicPolyInterpolator { private: T** const m_ppMatrix; const unsigned int m_nx; const unsigned int m_ny; public: BicubicPolyInterpolator (T** ppMatrix, unsigned int nx, unsigned int ny) : m_ppMatrix(ppMatrix), m_nx(nx), m_ny(ny) {} T interpolate (double dXPos, double dYPos) { // int iFloorX = static_cast(floor (dXPos)); // int iFloorY = static_cast(floor (dYPos)); // double dXFrac = dXPos - iFloorX; // double dYFrac = dYPos - iFloorY; T result = 0; // Need to add code return result; } }; template class LinearInterpolator { private: T* const m_pX; T* const m_pY; const int m_n; const bool m_bZeroOutsideRange; public: LinearInterpolator (T* pY, unsigned int n, bool bZeroOutside = true) : m_pX(0), m_pY(pY), m_n(n), m_bZeroOutsideRange(bZeroOutside) {} LinearInterpolator (T* pX, T* pY, unsigned int n, bool bZeroOutside = true) : m_pX(pX), m_pY(pY), m_n(n), m_bZeroOutsideRange(bZeroOutside) {} double interpolate (double dX, int* piLastFloor = NULL) { double result = 0; if (! m_pX) { if (dX == 0) result = m_pY[0]; else if (dX < 0) { if (m_bZeroOutsideRange) result = 0; else result = m_pY[0]; } else if (dX == m_n - 1) result = m_pY[m_n-1]; else if (dX > m_n - 1) { if (m_bZeroOutsideRange) result = 0; else result = m_pY[m_n - 1]; } else { int iFloor = static_cast(floor(dX)); result = m_pY[iFloor] + (m_pY[iFloor+1] - m_pY[iFloor]) * (dX - iFloor); } } else { int iLower = -1; int iUpper = m_n; if (piLastFloor && *piLastFloor >= 0 && m_pX[*piLastFloor] < dX) iLower = *piLastFloor; while (iUpper - iLower > 1) { int iMiddle = (iUpper + iLower) >> 1; if (dX >= m_pX[iMiddle]) iLower = iMiddle; else iUpper = iMiddle; } if (dX == m_pX[0]) result = m_pY[0]; else if (dX < m_pX[0]) { if (m_bZeroOutsideRange) result = 0; else result = m_pY[0]; } else if (dX == m_pX[m_n-1]) result = m_pY[m_n-1]; else if (dX > m_pX[m_n - 1]) { if (m_bZeroOutsideRange) result = 0; else result = m_pY[m_n - 1]; } else { if (iLower < 0 || iLower >= m_n) { sys_error (ERR_SEVERE, "Coordinate out of range [linearInterpolate]"); return 0; } if (piLastFloor) *piLastFloor = iLower; result = m_pY[iLower] + (m_pY[iUpper] - m_pY[iLower]) * ((dX - m_pX[iLower]) / (m_pX[iUpper] - m_pX[iLower])); } } return result; } }; ctsim-6.0.2/include/sstream_subst0000644000175000017500000000343210667176710016131 0ustar kevinkevin#ifndef __CM_SSTREAM__ #define __CM_SSTREAM__ #if 0 //#ifndef MSVC #include #include #include #include namespace std { class ostringstream { public: ostringstream (const string & str = "") : buffer(str) {} const string & str() const { return buffer; } void str (const string & new_string) { buffer = new_string; } ostringstream & operator<< (const string & item) { buffer += item; return *this; } ostringstream & operator<< (int item) { char temp[100]; sprintf (temp, "%d", item); buffer += temp; return *this; } ostringstream & operator<< (unsigned int item) { char temp[100]; sprintf (temp, "%u", item); buffer += temp; return *this; } ostringstream & operator<< (char item) { buffer += item; return *this; } ostringstream & operator<< (double item) { char temp[1000]; sprintf (temp, "%g", item); buffer += temp; return *this; } private: string buffer; }; class istringstream { friend istringstream & getline (istringstream &, string &, char = '\n'); public: istringstream (const string & str = "") : buffer (str.c_str(), str.length()) {} template istringstream & operator>> (T & item) { buffer >> item; return *this; } operator void * () const { return (void *) buffer; } private: istrstream buffer; }; inline istringstream & getline (istringstream & src_stream, string & str, char separator) { getline (src_stream.buffer, str, separator); return src_stream; } } // End of namespace std #endif #endif ctsim-6.0.2/include/trace.h0000644000175000017500000000446511240454454014556 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: trace.h ** Purpose: Header file for Trace class ** Author: Kevin Rosenberg ** Date Started: Oct 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef TRACE_H #define TRACE_H class Trace { public: static const int TRACE_INVALID; static const int TRACE_NONE; static const int TRACE_CONSOLE; static const int TRACE_PHANTOM; static const int TRACE_PROJECTIONS; static const int TRACE_PLOT; static const int TRACE_CLIPPING; static const int BIT_CONSOLE; static const int BIT_PHANTOM; static const int BIT_PROJECTIONS; static const int BIT_PLOT; static const int BIT_CLIPPING; Trace (const char* const traceString); void addTrace (const char* const traceString); bool isTrace (const char* const traceQuery) const; int getTraceLevel(void) const { return m_traceLevel; } static int convertTraceNameToID (const char* traceName); static const char* convertTraceIDToTitle (int idTrace); static const char* convertTraceIDToName (int idTrace); static const int getTraceCount() {return s_iTraceCount;} static const char** getTraceNameArray() {return s_aszTraceName;} static const char** getTraceTitleArray() {return s_aszTraceTitle;} private: int m_traceLevel; bool addTraceElements (const char* const traceString); static const char* s_aszTraceName[]; static const char* s_aszTraceTitle[]; static const int s_iTraceCount; }; #endif ctsim-6.0.2/include/ezplot.h0000644000175000017500000002532711240454454014775 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: ezplot.h ** Purpose: Header file for EZplot library ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef __H_EZPLOT #define __H_EZPLOT #include #include #include #include #include "ctsupport.h" #include "sgp.h" #include "pol.h" class EZPlotCurve { public: double *x; double *y; int m_iPointCount; EZPlotCurve (const double* x, const double* y, int n); ~EZPlotCurve(); }; //---------------------------------------------------------------------- // GLOBAL VARIABLES //---------------------------------------------------------------------- // axis definitions enum { LINEAR = 1, // linear axis LOG, // logrithmic axis NOAXIS, // don't plot axis }; // tick definitions enum { ABOVE = 1, BELOW, RIGHT, LEFT, }; // line types enum { NOLINE = 0, SOLID, DASH, DASH1, DASH2, DASH3, DASH4, }; // symbol definitions enum { SB_CROSS = 1, SB_PLUS, SB_BOX, SB_CIRCLE, SB_ERRORBAR, SB_POINT, MAXSYMBOL, }; enum { INSIDE = 1, // values of o_legendbox OUTSIDE, NOLEGEND, }; struct KeywordCodeTable { const char* keyword; int code; }; /*----------------------------------------------------------------------------- * GLOBAL VARIABLES * * Naming Convention: * i_ Internal variable * Not user changable * o_ Option variable * Normal variable that is user modifiable * These variables must always have a valid value * d_ Device variable * Variables controlling devices * clr_ Color variable * Holds a color value * c_ Character string variable * Contains a character string * v_ Value variable * User modifiable variable associated with the set variable (s_) * These variables do not always have a valid value * These variables change assumption EZPLOT makes about the plot * s_ Set variable. * TRUE if associated value variable (v_) has been set by the user *---------------------------------------------------------------------------*/ #include typedef std::vector::iterator EZPlotCurveIterator; typedef std::vector::const_iterator EZPlotCurveConstIterator; class SGP; class EZPlot { private: //---------------------------------------------------------------------- // POL Codes //---------------------------------------------------------------------- enum { S_DATA = 2, S_HELP, S_EXIT, S_CURVE, S_SOLID, S_DASH, S_NOLINE, S_BLACK, S_RED, S_GREEN, S_BLUE, S_SYMBOL, S_PEN, S_EVERY, S_NONE, S_LEGEND, S_XLEGEND, S_YLEGEND, S_XLIN, S_YLIN, S_XLOG, S_YLOG, S_XLABEL, S_YLABEL, S_XLENGTH, S_YLENGTH, S_XTICKS, S_YTICKS, S_ABOVE, S_LABEL, S_BELOW, S_NOLABEL, S_RIGHT, S_LEFT, S_XAUTOSCALE, S_YAUTOSCALE, S_XMIN, S_YMIN, S_XMAX, S_YMAX, S_LXFRAC, S_LYFRAC, S_XCROSS, S_YCROSS, S_NOXAXIS, S_NOYAXIS, S_XPORIGIN, S_YPORIGIN, S_TITLE, S_XTITLE, S_YTITLE, S_REPLOT, S_CLEAR, S_STORE, S_RESTORE, S_AMARK, S_NO, S_INTERACTIVE, S_UNITS, S_INCHES, S_USER, S_BOX, S_NOBOX, S_GRID, S_NOGRID, S_MAJOR, S_MINOR, S_COLOR, S_LEGENDBOX, S_TAG, S_TEXTSIZE, }; static const struct KeywordCodeTable m_sKeywords[]; static const int NKEYS; std::vector m_vecCurves; std::vector m_veciColor; std::vector m_vecbColorSet; std::vector m_veciSymbol; std::vector m_vecbSymbolSet; std::vector m_veciSymbolFreq; std::vector m_vecbSymbolFreqSet; std::vector m_veciLinestyle; std::vector m_vecbLinestyleSet; std::vector m_vecsLegend; std::vector m_vecbLegendSet; int getColor (unsigned int iCurve) const; int getSymbol (unsigned int iCurve) const; const std::string* getLegend (unsigned int iCurve) const; int getSymbolFreq (unsigned int iCurve) const; int getLinestyle (unsigned int iCurve) const; void setColor (unsigned int iCurve, int iColor); void setSymbol (unsigned int iCurve, int iSymbol); void setSymbolFreq (unsigned int iCurve, int iSymbolFreq); void setLinestyle (unsigned int iCurve, int iLinestyle); void setLegend (unsigned int iCurve, const std::string& strLegend); void setLegend (unsigned int iCurve, const char* const pszLegend); int m_iCurrentCurve; // Colors int clr_axis; // color of all axis lines int clr_title; // color of main title int clr_label; // color of axis labels int clr_legend; // color of legend box int clr_grid; // color of grid lines int clr_number; // color of axis number labels // Options double o_xporigin, o_yporigin; // origin of plot frame in NDC double o_xlength, o_ylength; // length of plot frame in NDC std::string c_xlabel; // label for x axis std::string c_ylabel; // label for y axis std::string c_title; // title to print above graph int o_linestyle, o_color; // style to use for curves all subsequent curves to EZPLOT int o_xaxis, o_yaxis; // Specifies where axis & labels are drawn bool o_grid; // Flag to draw a grid at major ticks bool o_box; // Flag to draw a box around the graph int o_xticks, o_yticks; // direction to draw tick marks bool o_xtlabel, o_ytlabel; // TRUE if label tick marks int o_xmajortick, o_ymajortick; // number of major ticks to draw int o_xminortick, o_yminortick; // number of minor ticks between major ticks int o_symbol; // Symbol type, (0 = no symbol) int o_symfreq; // frequency to draw symbols at curve points int o_legendbox; // controls whether legend is inside or outside of the axis extents int o_tag; // controls whether to draw tag at end of axes // VALUE & SET variables double v_xmin, v_xmax, v_ymin, v_ymax; // user supplied axis endpoints bool s_xmin, s_xmax, s_ymin, s_ymax; // TRUE is endpoint has been set double v_xtitle, v_ytitle; // NDC position to plot title bool s_xtitle, s_ytitle; // TRUE if set position for title double v_xcross, v_ycross; // position that axes cross bool s_xcross, s_ycross; // TRUE if set axes cross position double v_xlegend, v_ylegend; // upper-left position of legend box in NDC bool s_xlegend, s_ylegend; // TRUE if set position of legend box int v_lxfrac, v_lyfrac; // number of digits to right of decimal place bool s_lxfrac, s_lyfrac; // TRUE if set number of fractional digits double v_textsize; // size of text in NDC bool s_textsize; // TRUE if user set size of text // Global variables double charheight; // Height of characters in NDC double charwidth; // Height of characters in NDC double xp_min, xp_max, yp_min, yp_max; // boundry of plot frame in NDC double xa_min, xa_max, ya_min, ya_max; // extent of axes in NDC double xgw_min, xgw_max, ygw_min, ygw_max; // boundary of graph in input coords double xgn_min, xgn_max, ygn_min, ygn_max; // boundy of graph in NDC double xt_min, xt_max, yt_min, yt_max; // boundary of axis ticks double xl_min, xl_max, yl_min, yl_max; // boundary of legend box double title_row; // y-coord of title row double xtl_ofs; // Offset y-coord of x tick labels from axis double ytl_ofs; // Offset x-coord of y tick labels from axis double xlbl_row; // row of x label in world coord double ylbl_col; // column of y label in world coord double xw_tickinc, yw_tickinc; // increment between major ticks in WC double xn_tickinc, yn_tickinc; // increment between major ticks in NDC int x_nint, y_nint; // number of intervals along x & y axes int x_fldwid, x_frac; // numeric field sizes & number of digits int y_fldwid, y_frac; // in fraction of number, used for printf() double xtl_wid, ytl_wid; // length of ticks labels in NDC double tl_height; // height of tick labels in NDC char x_numfmt[20]; // format to print x tick labels char y_numfmt[20]; // format to print y tick labels double m_dVP_xmin, m_dVP_ymin; double m_dVP_xmax, m_dVP_ymax; double m_dVP_xscale, m_dVP_yscale; double m_xWorldScale, m_yWorldScale; void drawAxes(); void symbol (int sym, double symwidth, double symheight); void make_numfmt(char *fmtstr, int *fldwid, int *nfrac, double min, double max, int nint); int axis_scale (double min, double max, int nint, double *minp, double *maxp, int *nintp); SGP* m_pSGP; POL m_pol; void clearCurves (); bool ezcmd (const char* const comm); bool do_cmd(int lx); void bad_option(const char *opt); void initPlotSettings(); void initKeywords (); double convertWorldToNDC_X (double x) { return xgn_min + (x - xgw_min) * m_xWorldScale; } double convertWorldToNDC_Y (double y) { return ygn_min + (y - ygw_min) * m_yWorldScale; } public: EZPlot (); ~EZPlot (); bool ezset (const std::string& command); bool ezset (const char* const command); void addCurve (const float* x, const double* y, int num); void addCurve (const double* x, const float* y, int num); void addCurve (const double* x, const double* y, int num); void addCurve (const double* y, int n); void addCurve (const float* y, int n); void plot (SGP* pSGP); }; #endif ctsim-6.0.2/include/procsignal.h0000644000175000017500000001612111240454454015611 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: filter.h ** Purpose: Signal filter header file ** Programmer: Kevin Rosenberg ** Date Started: June 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef PROCSIGNAL_H #define PROCSIGNAL_H #ifdef HAVE_CONFIG_H #include "config.h" #endif #ifdef HAVE_FFTW #include #endif #include class SignalFilter; class SGP; typedef std::complex CTSimComplex; class ProcessSignal { public: static const int FILTER_METHOD_INVALID; static const int FILTER_METHOD_CONVOLUTION; static const int FILTER_METHOD_FOURIER; static const int FILTER_METHOD_FOURIER_TABLE; static const int FILTER_METHOD_FFT; #if HAVE_FFTW static const int FILTER_METHOD_FFTW; static const int FILTER_METHOD_RFFTW; #endif static const int FILTER_GENERATION_INVALID; static const int FILTER_GENERATION_DIRECT; static const int FILTER_GENERATION_INVERSE_FOURIER; enum { FORWARD = -1, BACKWARD = 1, }; ProcessSignal (const char* szFilterName, const char* szFilterMethodName,double bw, double signalIncrement, int n, double param, const char* szDomainName, const char* szFilterGenerationName, const int zeropad, const int preinterpolationFactor, const int iTraceLevel, int iGeometry, double dFocalLength, double dSourceDetectorLength, SGP* pSGP = NULL); ~ProcessSignal(); void filterSignal (const float input[], double output[]) const; bool fail(void) const {return m_fail;} const std::string& failMessage(void) const {return m_failMessage;} void setTraceLevel (int traceLevel) {m_traceLevel = traceLevel; } int getNFilterPoints (void) const { return m_nFilterPoints; } const double getFilterMin(void) const {return m_dFilterMin;} const double getFilterMax(void) const {return m_dFilterMax;} const double getFilterIncrement(void) const {return m_dFilterInc;} double* getFilter(void) {return m_adFilter;} const double* getFilter(void) const {return m_adFilter;} const int idFilterGeneration() const { return m_idFilterGeneration;} static const int getFilterGenerationCount() {return s_iFilterGenerationCount;} static const char* const* getFilterGenerationNameArray() {return s_aszFilterGenerationName;} static const char* const* getFilterGenerationTitleArray() {return s_aszFilterGenerationTitle;} static int convertFilterGenerationNameToID (const char* const fgName); static const char* convertFilterGenerationIDToName (const int idFG); static const char* convertFilterGenerationIDToTitle (const int idFG); static const int getFilterMethodCount() {return s_iFilterMethodCount;} static const char* const* getFilterMethodNameArray() {return s_aszFilterMethodName;} static const char* const* getFilterMethodTitleArray() {return s_aszFilterMethodTitle;} static int convertFilterMethodNameToID (const char* const filterMethodName); static const char* convertFilterMethodIDToName (const int idFilterMethod); static const char* convertFilterMethodIDToTitle (const int idFilterMethod); // transforms using direct trigometric calculation static void finiteFourierTransform (const double input[], double output[], const int n, const int direction); static void finiteFourierTransform (const double input[], std::complex output[], const int n, const int direction); static void finiteFourierTransform (const std::complex input[], std::complex output[], const int n, const int direction); static void finiteFourierTransform (const std::complex input[], double output[], const int n, const int direction); static int addZeropadFactor (int n, int iZeropad); private: std::string m_nameFilterMethod; std::string m_nameFilterGeneration; int m_idFilterMethod; int m_idFilterGeneration; int m_nSignalPoints; double* m_adFourierCosTable; double* m_adFourierSinTable; int m_nFilterPoints; double m_dSignalInc; double m_dFilterInc; double m_dFilterMin; double m_dFilterMax; double* m_adFilter; bool m_bFrequencyFiltering; // Variables also kept in SignalFilter class int m_idFilter; int m_idDomain; int m_traceLevel; double m_dBandwidth; double m_dFilterParam; int m_iZeropad; int m_nOutputPoints; int m_iPreinterpolationFactor; int m_idGeometry; double m_dFocalLength; double m_dSourceDetectorLength; bool m_fail; std::string m_failMessage; static const char* const s_aszFilterMethodName[]; static const char* const s_aszFilterMethodTitle[]; static const int s_iFilterMethodCount; static const char* const s_aszFilterGenerationName[]; static const char* const s_aszFilterGenerationTitle[]; static const int s_iFilterGenerationCount; #ifdef HAVE_FFTW double *m_adRealFftInput, *m_adRealFftOutput, *m_adRealFftSignal, *m_adRealFftBackwardOutput; fftw_plan m_realPlanForward, m_realPlanBackward; fftw_complex *m_adComplexFftInput, *m_adComplexFftOutput, *m_adComplexFftSignal, *m_adComplexFftBackwardOutput; fftw_plan m_complexPlanForward, m_complexPlanBackward; #endif void init (const int idFilter, int idFilterMethod, double dBandwidth, double dSignalIncrement, int nSignalPoints, double dFilterParam, const int idDomain, int idFilterGeneration, const int iZeropad, const int iPreinterpolationFactor, const int iTraceLevel, const int iGeometry, double dFocalLength, double dSourceDetectorLength, SGP* pSGP); // transforms that use precalculated trig tables, therefore don't // require number of data points (n) as an argument void finiteFourierTransform (const double input[], std::complex output[], const int direction) const; void finiteFourierTransform (const std::complex input[], std::complex output[], const int direction) const; void finiteFourierTransform (const std::complex input[], double output[], const int direction) const; double convolve (const double func[], const double filter[], const double dx, const int n, const int np) const; double convolve (const double f[], const double dx, const int n, const int np) const; double convolve (const float f[], const double dx, const int n, const int np) const; }; #endif ctsim-6.0.2/include/msvc_compat.h0000644000175000017500000000265311240454454015770 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: msvc_compat.h ** Purpose: Microsoft Visual C compatibility header ** Author: Kevin Rosenberg ** Date Started: Dec 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef __MSVC_COMPAT_H #define __MSVC_COMPAT_H #ifdef MSVC typedef long off_t; #define HAVE_STRING_H 1 #define HAVE_VSNPRINTF 1 #include #define strdup _strdup #define strcasecmp _stricmp #define strncasecmp _strnicmp #define snprintf _snprintf #define vsnprintf _vsnprintf #pragma warning(disable:4786) #endif #endif ctsim-6.0.2/include/nographics.h0000644000175000017500000000264611240454454015614 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: nographics.h ** Purpose: Headers for empty duplicate of graphics functions ** Programmer: Kevin Rosenberg ** Date Started: Mar 2001 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef __NOGRAPHICS_H_ #define __NOGRAPHICS_H_ #include #ifdef HAVE_WXWINDOWS class EZPlot; class wxWindow; class wxEZPlotDialog; class EZPlotDialog { private: wxEZPlotDialog* m_pDialog; public: EZPlotDialog (wxWindow *parent = NULL, bool bCancelButton = false); EZPlot* getEZPlot (); int ShowModal(); }; #endif #endif ctsim-6.0.2/include/timer.h0000644000175000017500000001112711240454454014571 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: timer.h ** Purpose: Header file for Timer class ** Author: Kevin Rosenberg ** Date Started: Sep 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef _TIMER_H #define _TIMER_H #ifdef HAVE_CONFIG_H #include "config.h" #endif #ifdef HAVE_SYS_TIME_H #include #endif #ifdef MSVC #include #endif class Timer { public: Timer (void) { m_timeStart = ttime(); } virtual ~Timer (void) {} virtual double timerEnd (void) { m_timeEnd = ttime(); m_timeElapsed = m_timeEnd - m_timeStart; return (m_timeElapsed); } virtual void timerReport (const char* const msg) const { std::cout << msg << ": " << m_timeElapsed << " seconds" << std::endl; } virtual double timerEndAndReport (const char* const msg) { double t = timerEnd (); timerReport (msg); return (t); } double getTimeElapsed (void) const { return m_timeElapsed; } protected: double m_timeStart; double m_timeEnd; double m_timeElapsed; double ttime(void) const { #ifdef HAVE_GETTIMEOFDAY struct timeval now; if (gettimeofday (&now, NULL)) return 0; return (now.tv_sec + static_cast(now.tv_usec) / 1000000.); #elif defined(MSVC) struct _timeb now; _ftime (&now); return (now.time + static_cast(now.millitm) / 1000.); #else return 0; #endif } }; #ifdef HAVE_MPI #include "mpi++.h" class TimerMPI : public Timer { public: TimerMPI (MPI::Intracomm& comm) : m_comm(comm) { m_timeStart = MPI::Wtime(); } virtual ~TimerMPI (void) {} virtual double timerEnd (void) { m_timeEnd = MPI::Wtime(); m_timeElapsed = m_timeEnd - m_timeStart; return (m_timeElapsed); } virtual void timerReport (const char* const msg) { if (m_comm.Get_rank() == 0) std::cout << msg << ": " << m_timeElapsed << " seconds" << std::endl; } virtual double timerEndAndReport (const char* const msg) { double t = timerEnd (); timerReport (msg); return (t); } virtual void timerReportAllProcesses (const char* const msg) { timerReport (msg); } protected: MPI::Intracomm& m_comm; }; class TimerCollectiveMPI : public TimerMPI { public: TimerCollectiveMPI (MPI::Intracomm& comm) : TimerMPI::TimerMPI (comm) { m_comm.Barrier(); m_timeStart = MPI::Wtime(); } virtual ~TimerCollectiveMPI (void) {} virtual double timerEnd (void) { m_timeEnd = MPI::Wtime(); m_timeElapsed = m_timeEnd - m_timeStart; m_comm.Reduce (&m_timeElapsed, &m_timeMin, 1, MPI::DOUBLE, MPI::MIN, 0); m_comm.Reduce (&m_timeElapsed, &m_timeMax, 1, MPI::DOUBLE, MPI::MAX, 0); return (m_timeElapsed); } virtual double timerEndAndReport (const char* const msg) { double t = timerEnd (); timerReport (msg); return (t); } virtual void timerReport (const char* const msg) { if (m_comm.Get_rank() == 0) std::cout << msg << " " << "Minimum=" << m_timeMin << ", Maximum=" << m_timeMax << " seconds" << std::endl; } virtual void timerReportAllProcesses (const char* const msg) { std::cout << msg << ": " << "Minimum=" << m_timeMin << ", Maximum=" << m_timeMax << " seconds (Rank " << m_comm.Get_rank() << ")" << std::endl; } private: double m_timeMin; double m_timeMax; }; #endif #endif // _TIMER_H ctsim-6.0.2/include/ctsupport.h0000644000175000017500000002200113254360476015514 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** File Name: ctsupport.h ** Author: Kevin Rosenberg ** Purpose: Header file for CT support library ** Date Started: Dec. 83 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef CTSUPPORT_H #define CTSUPPORT_H #ifdef HAVE_CONFIG_H #include "config.h" #endif #ifdef MSVC #include "msvc_compat.h" #endif #define STR_MAX_LEN 255 #define STR_SIZE STR_MAX_LEN+1 #include #include #include #include #include #include #include #if defined(MSVC) || HAVE_SSTREAM #include #else #include #endif #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif #define OK TRUE /*----------------------------------------------------------------------*/ #define SHOW(var, fmt) { cerr << "var = " << var << endl; } /*----------------------------------------------------------------------*/ #define NEWLINE '\n' #define TAB '\t' #define EOS '\0' #define BLANK ' ' /*----------------------------------------------------------------------*/ #define ERR_TRACE -1 #define ERR_WARNING 0 #define ERR_SEVERE 1 #define ERR_FATAL 2 /*----------------------------------------------------------------------*/ /* codes for open command */ #ifdef MSVC #define OPEN_RDONLY O_RDONLY /* other system use standard codes */ #define OPEN_WRONLY O_WRONLY /* for binary */ #define OPEN_RDWR O_RDWR #else #define OPEN_RDONLY 0 /* other system use standard codes */ #define OPEN_WRONLY 1 /* for binary */ #define OPEN_RDWR 2 #endif /*----------------------------------------------------------------------*/ #if !defined(O_BINARY) && !defined(MSVC) #define O_BINARY (0) #endif #ifndef S_IWRITE #define S_IWRITE S_IWUSR #endif /*----------------------------------------------------------------------*/ #if defined(MSVC) || ! defined(SIZEOF_INT) #define SIZEOF_INT 4 #define SIZEOF_LONG 4 #define SIZEOF_SHORT 2 #define SIZEOF_FLOAT 4 #define SIZEOF_DOUBLE 8 #endif typedef signed char kint8; typedef unsigned char kuint8; #if SIZEOF_INT == 4 typedef int kint32; typedef unsigned int kuint32; #elif SIZEOF_LONG == 4 typedef long int kint32; typedef unsigned int kuint32; #endif #if SIZEOF_SHORT == 2 typedef short int kint16; typedef unsigned short int kuint16; #elif SIZEOF_INT == 2 typedef int kint16; typedef unsigned int kuint16; #endif #if SIZEOF_FLOAT == 4 typedef float kfloat32; #endif #if SIZEOF_DOUBLE == 8 typedef double kfloat64; #endif inline const char* fileBasename (const char* const filename) { const char* p = strrchr (filename, '/'); return (p ? p + 1 : filename); } /* strfuncs.cpp */ char* str_skip_head(const char* str, const char* const charlist); char* str_skip_head(const char* str, char* charlist); char *str_lower(char *s); char *str_wrm_tail(char *str); char *str_rm_tail(char *str, const char* const charlist); char *str_upper(char *str); /* syserror.cpp */ void sys_error(int severity, const char *msg, ...); void sys_verror (std::string& strOutput, int severity, const char *msg, va_list arg); void sys_error_level(int severity); extern unsigned long int g_lSysErrorMaxCount; // Math Section #include #define PI 3.14159265358979323846 #define HALFPI 1.57079632679489661923 /* PI divided by 2 */ #define QUARTPI 0.78539816339744830962 /* PI divided by 4 */ #define I_PI 0.31830988618379067154 /* Inverse of PI */ #define I_PID2 0.63661977236758134308 /* Inverse of PID2 */ #define TWOPI 6.28318530717958647692 #define SQRT2 1.414213562373095049 #define F_EPSILON 1.0E-6 #define D_EPSILON 1.0E-10 #define ASSUMEDZERO 1E-10 typedef double GRFMTX_2D[3][3]; typedef double GRFMTX_3D[4][4]; inline double convertDegreesToRadians (double x) { return (x * (PI/180.)); } inline double convertRadiansToDegrees (double x) { return (x*(180./PI)); } template inline T nearest (double x) { return (x > 0 ? static_cast(x+0.5) : static_cast(x-0.5)); } template inline T maxValue (T x, T y) { return (x > y ? x : y); } inline bool isEven (int n) { return (n % 2) == 0; } inline bool isOdd (int n) { return (n % 2) != 0; } #if 0 inline bool isEven (long n) { return (n % 2) == 0; } inline bool isOdd (long n) { return (n % 2) != 0; } #endif inline int imax (int a, int b) { return (a >= b ? a : b); } inline double dmax (double a, double b) { return (a >= b ? a : b); } template inline T clamp (T value, T lowerBounds, T upperBounds) { return (value >= upperBounds ? upperBounds : (value <= lowerBounds ? lowerBounds : value )); } template inline T lineLength (T x1, T y1, T x2, T y2) { return static_cast( sqrt ((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1)) ); } template inline void minmax_array (const T* array, const int n, T& min, T& max) { max = min = array[0]; for (int i = 1; i < n; i++) if (array[i] < min) min = array[i]; else if (array[i] > max) max = array[i]; } ////////////////////////////////////////////////////////////// // FUNTION DECLARATIONS ////////////////////////////////////////////////////////////// // clip.cpp bool clip_rect (double& x1, double& y1, double& x2, double& y2, const double rect[4]); bool clip_segment (double& x1, double& y1, double& x2, double& y2, const double u, const double v); bool clip_sector (double& x1, double& y1, double& x2, double& y2, const double u, const double v); bool clip_circle (double& x1, double& y1, double& x2, double& y2, const double cx, const double cy, const double radius, double t1, double t2); bool clip_triangle (double& x1, double& y1, double& x2, double& y2, const double u, const double v, const int clip_xaxis); // xform.cpp void indent_mtx2 (GRFMTX_2D m); void xlat_mtx2 (GRFMTX_2D m, const double x, const double y); void scale_mtx2 (GRFMTX_2D m, const double sx, const double sy); void rot_mtx2 (GRFMTX_2D m, const double theta); void mult_mtx2 (const GRFMTX_2D m1, const GRFMTX_2D m2, GRFMTX_2D result); void xform_mtx2 (const GRFMTX_2D m, double& x, double& y); void copy_mtx2 (GRFMTX_2D to, const GRFMTX_2D from); void rotate2d (double x[], double y[], int pts, double angle); void xlat2d (double x[], double y[], int pts, double xoffset, double yoffset); void scale2d (double x[], double y[], int pts, double xfact, double yfact); // mathfuncs.cpp double normalizeAngle (double theta); double integrateSimpson (const double xmin, const double xmax, const double *y, const int np); void vectorNumericStatistics (std::vector vec, const int nPoints, double& min, double& max, double& mean, double& mode, double& median, double& stddev); /*----------------------------------------------------------------------*/ /* screen character codes */ #define SC_BKSP 8 #define SC_TAB 9 #define SC_BLANK ' ' /* audio.cpp */ void cio_beep(void); void cio_tone(double freq, double length); /* crtput.cpp */ void cio_put_c(int c); void cio_put_cc(int c, int count); void cio_put_str(const char *str); /* kbget.cpp */ unsigned int cio_kb_getc(void); void cio_kb_ungetc(unsigned int c); char *cio_kb_gets(char *str, int maxlen); unsigned int cio_kb_waitc(const char *astr, int beep); // Keyboard Section #define KEY_BKSP 8 #define KEY_TAB 9 #define KEY_RETURN 13 #define KEY_ESCAPE 27 // ASCII Section #define BACKSPACE 8 // #define LF 0x0A // #define CR 0x0D #define BELL 0x07 #define SQUOTE '\'' #define DQUOTE '\"' #define BSLASH '\\' #define BACKSLASH '\\' #define SHARP '#' #define SLASH '/' #define ASTERICK '*' #define COLON ':' #define LBRACE '{' #define RBRACE '}' #define LPAREN '(' #define RPAREN ')' #define LBRACK '[' #define RBRACK ']' #define LANBRACK '<' #define RANBRACK '>' #define SEMICOL ';' #define UNDERLIN '_' #define COMMA ',' #define CARET '^' #define TILDE '~' #define ATSIGN '@' #define AMPERSAND '&' #define EXCLAM '!' #define DOLLAR '$' #define PERCENT '%' #define PLUS '+' #define HYPHEN '-' #define EQUALS '=' #define QUESTION '?' #define PERIOD '.' #define VERTBAR '|' #endif /* #ifndef CTSUPPORT_H */ ctsim-6.0.2/include/projections.h0000644000175000017500000002133311240454454016010 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: projections.h ** Purpose: Header file for Projections class ** Programmer: Kevin Rosenberg ** Date Started: July 1, 1984 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef PROJECTIONS_H #define PROJECTIONS_H class Scanner; class DetectorArray; class Array2dFileLabel; class fnetorderstream; #include "array2dfile.h" #include "imagefile.h" #include #include //used for rebinning divergent beam projections to parallel class ParallelRaysumCoordinate { public: double m_dT; // Distance from center of origin double m_dTheta; // perpendicular angle to origin double m_dRaysum; static bool compareByTheta (ParallelRaysumCoordinate* a, ParallelRaysumCoordinate* b) { return a->m_dTheta == b->m_dTheta ? b->m_dT > a->m_dT : b->m_dTheta > a->m_dTheta; } // sort first by T, then Theta static bool compareByT (ParallelRaysumCoordinate* a, ParallelRaysumCoordinate* b) { return a->m_dT == b->m_dT ? b->m_dTheta > a->m_dTheta : b->m_dT > a->m_dT; } }; class ParallelRaysums { public: enum { THETA_RANGE_UNCONSTRAINED = 0, THETA_RANGE_NORMALIZE_TO_TWOPI, THETA_RANGE_FOLD_TO_PI, }; ParallelRaysums (const Projections* pProjections, int iThetaRange); ~ParallelRaysums (); typedef std::vector CoordinateContainer; typedef CoordinateContainer::iterator CoordinateIterator; CoordinateContainer& getCoordinates() {return m_vecpCoordinates;} int getNumCoordinates() const {return m_iNumCoordinates;} void getLimits (double* dMinT, double* dMaxT, double* dMinTheta, double* dMaxTheta) const; CoordinateContainer& getSortedByT(); CoordinateContainer& getSortedByTheta(); double interpolate (double* pdX, double* pdY, int n, double dXValue, int* iLastFloor = NULL); void getThetaAndRaysumsForT (int iT, double* pdTheta, double* pdRaysum); void getDetPositions (double* pdDetPos); private: CoordinateContainer m_vecpCoordinates; CoordinateContainer m_vecpSortedByT; CoordinateContainer m_vecpSortedByTheta; ParallelRaysumCoordinate* m_pCoordinates; int m_iNumCoordinates; int m_iNumView; int m_iNumDet; int m_iThetaRange; }; // Projections class Projections { public: static const int POLAR_INTERP_INVALID; static const int POLAR_INTERP_NEAREST; static const int POLAR_INTERP_BILINEAR; static const int POLAR_INTERP_BICUBIC; Projections (const int nView, const int nDet); Projections (const Scanner& scanner); Projections (); ~Projections (); static const int getInterpCount() {return s_iInterpCount;} static const char* const* getInterpNameArray() {return s_aszInterpName;} static const char* const* getInterpTitleArray() {return s_aszInterpTitle;} static int convertInterpNameToID (const char* const interpName); static const char* convertInterpIDToName (const int interpID); static const char* convertInterpIDToTitle (const int interpID); void initFromScanner (const Scanner& scanner); bool initFromSomatomAR_STAR (int iNViews, int iNDets, unsigned char* pData, unsigned long lDataLength); void printProjectionData (int startView, int endView); void printProjectionData (); void printScanInfo (std::ostringstream& os) const; int Helical180LI(int interpView); int Helical180LI_Equiangular(int interpView); int HalfScanFeather(void); bool read (const std::string& fname); bool read (const char* fname); bool write (const char* fname); bool write (const std::string& fname); bool detarrayRead (fnetorderstream& fs, DetectorArray& darray, const int view_num); bool detarrayWrite (fnetorderstream& fs, const DetectorArray& darray, const int view_num); Projections* interpolateToParallel() const; bool convertPolar (ImageFile& rIF, int iInterpolation); bool convertFFTPolar (ImageFile& rIF, int iInterpolation, int iZeropad); void calcArrayPolarCoordinates (unsigned int nx, unsigned int ny, double** ppdView, double** ppdDet, int iNumDetWithZeros, double dZeropadRatio, double dDetInc); void interpolatePolar (ImageFileArray& v, ImageFileArray& vImag, unsigned int nx, unsigned int ny, std::complex** ppcDetValue, double** ppdDet, double** ppdView, unsigned int nView, unsigned int nDet, unsigned int nDetWithZeros, int iInterpolate); bool reconstruct (ImageFile& im, const char* const filterName, double filt_param, const char* const filterMethodName, const int zeropad, const char* frequencyFilterName, const char* const interpName, int interp_param, const char* const backprojName, const int trace) const; void setNView (int nView); // used in MPI to restrict # of views void setRotInc (double rotInc) { m_rotInc = rotInc;} void setDetInc (double detInc) { m_detInc = detInc;} void setCalcTime (double calcTime) {m_calcTime = calcTime;} void setRemark (const char* remark) {m_remark = remark; m_label.setLabelString(remark);} void setRemark (const std::string& remark) {setRemark(remark.c_str());} double detStart() const {return m_detStart;} double rotStart() const {return m_rotStart;} double calcTime() const {return m_calcTime;} double viewLen() const {return m_dViewDiameter / SQRT2;} const char* remark() const {return m_remark.c_str();} double detInc() const {return m_detInc;} double rotInc() const {return m_rotInc;} int nDet() const {return m_nDet;} int nView() const {return m_nView;} int geometry() const {return m_geometry;} double focalLength() const {return m_dFocalLength;} double sourceDetectorLength() const { return m_dSourceDetectorLength;} double viewDiameter() const {return m_dViewDiameter; } double phmLen() const { return m_dViewDiameter / SQRT2; } void setPhmLen(double phmLen) { m_dViewDiameter = phmLen * SQRT2; } const std::string& getFilename() const {return m_filename;} Array2dFileLabel& getLabel() {return m_label;} const Array2dFileLabel& getLabel() const {return m_label;} DetectorArray& getDetectorArray (const int iview) { return (*m_projData[iview]); } const DetectorArray& getDetectorArray (const int iview) const { return (*m_projData[iview]); } static bool copyHeader (const char* const filename, std::ostream& os); static bool copyHeader (const std::string& filename, std::ostream& os); static bool copyViewData (const char* const filename, std::ostream& os, int startView, int endView); static bool copyViewData (const std::string& filename, std::ostream& os, int startView, int endView); private: int m_headerSize; // Size of disk file header int m_geometry; // Geometry of scanner class DetectorArray **m_projData; // Pointer to array of detarray_st pointers std::string m_remark; // description of raysum data int m_nDet; // number of detectors in array int m_nView; // number of rotated views double m_calcTime; // time required to calculate raysums double m_rotStart; // starting view rotation double m_rotInc; // angle between rotations double m_detStart; // distance of beginning detector to center phantom double m_detInc; // increment between detectors double m_dFocalLength; double m_dSourceDetectorLength; double m_dViewDiameter; double m_dFanBeamAngle; kuint32 m_year; // Creation date & time kuint32 m_month; kuint32 m_day; kuint32 m_hour; kuint32 m_minute; kuint32 m_second; std::string m_filename; Array2dFileLabel m_label; const static kuint16 m_signature; static const char* const s_aszInterpName[]; static const char* const s_aszInterpTitle[]; static const int s_iInterpCount; bool headerWrite (fnetorderstream& fs); bool headerRead (fnetorderstream& fs); void newProjData (); void deleteProjData (); void init (const int nView, const int nDet); // prevent default methods Projections& operator= (const Projections& rhs); // assignment Projections(const Projections& rhs); // copy }; #endif ctsim-6.0.2/msvc/0000755000175000017500000000000010667176710012633 5ustar kevinkevinctsim-6.0.2/msvc/libctsim/0000755000175000017500000000000010667176710014441 5ustar kevinkevinctsim-6.0.2/msvc/libctsim/libctsim.vcproj0000744000175000017500000001754610667176710017512 0ustar kevinkevin ctsim-6.0.2/msvc/libctsim/libctsim.dsp0000644000175000017500000002033210667176710016757 0ustar kevinkevin# Microsoft Developer Studio Project File - Name="libctsim" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Static Library" 0x0104 CFG=libctsim - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "libctsim.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "libctsim.mak" CFG="libctsim - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "libctsim - Win32 Release" (based on "Win32 (x86) Static Library") !MESSAGE "libctsim - Win32 Debug" (based on "Win32 (x86) Static Library") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "libctsim - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c # ADD CPP /nologo /G6 /MT /W3 /GR /GX /O2 /I "..\..\include" /I "..\..\getopt" /I "\fftw-2.1.3\fftw" /I "\fftw-2.1.3\rfftw" /I "\wx2\include" /I "\wx2\src\png" /I "\wx2\src\zlib" /I "\wx2\src\tiff" /I "\wx2\src\xpm" /I "\ctn\include" /D "_LIB" /D "__WIN95__" /D "__WIN32__" /D "_WINDOWS" /D "__WXMSW__" /D "MSVC" /D "NDEBUG" /D VERSION=\"3.5.5\" /D "WIN32" /D "HAVE_CTN_DICOM" /D "HAVE_STRING_H" /D "HAVE_GETOPT_H" /D "HAVE_FFTW" /D "HAVE_PNG" /D "HAVE_SGP" /D "HAVE_WXWINDOWS" /D WINVER=0x0400 /D "STRICT" /YX /FD /D _WI"NDOWS,_MBCS,HAVE_STRING_H,HAVE_GETOPT_H,MSVC,HAVE_FFTW,HAVE_PNG,HAVE_SGP,HAVE_WXWINDOWS,__WXMSW__,__WIN95__,__WIN32__,VERSION=3.5.4,WINVER=0x0400,STRICT /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo !ELSEIF "$(CFG)" == "libctsim - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c # ADD CPP /nologo /G6 /MTd /W3 /Gm /Gi /GR /GX /ZI /Od /I "..\..\include" /I "..\..\getopt" /I "\fftw-2.1.3\fftw" /I "\fftw-2.1.3\rfftw" /I "\wx2\include" /I "\wx2\src\png" /I "\wx2\src\zlib" /I "\wx2\src\tiff" /I "\wx2\src\xpm" /I "\ctn\include" /D "_LIB" /D "_DEBUG" /D "DEBUG" /D "_WINDOWS" /D "__WXDEBUG__" /D WXDEBUG=1 /D "_MBCS" /D "HAVE_STRING_H" /D "HAVE_GETOPT_H" /D "MSVC" /D "HAVE_FFTW" /D "HAVE_PNG" /D "HAVE_SGP" /D "HAVE_WXWINDOWS" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D VERSION=\"3.5.5\" /D "WIN32" /D "HAVE_CTN_DICOM" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo # ADD LIB32 /nologo !ENDIF # Begin Target # Name "libctsim - Win32 Release" # Name "libctsim - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\libctsim\array2dfile.cpp # End Source File # Begin Source File SOURCE=..\..\libctsim\backprojectors.cpp # End Source File # Begin Source File SOURCE=..\..\libctsupport\clip.cpp # End Source File # Begin Source File SOURCE=..\..\libctsupport\consoleio.cpp # End Source File # Begin Source File SOURCE=..\..\libctsim\ctndicom.cpp # End Source File # Begin Source File SOURCE=..\..\libctgraphics\ezplot.cpp # End Source File # Begin Source File SOURCE=..\..\libctgraphics\ezset.cpp # End Source File # Begin Source File SOURCE=..\..\libctgraphics\ezsupport.cpp # End Source File # Begin Source File SOURCE=..\..\libctsim\filter.cpp # End Source File # Begin Source File SOURCE=..\..\libctsupport\fnetorderstream.cpp # End Source File # Begin Source File SOURCE=..\..\libctsim\fourier.cpp # End Source File # Begin Source File SOURCE=..\..\libctsupport\globalvars.cpp # End Source File # Begin Source File SOURCE=..\..\libctsupport\hashtable.cpp # End Source File # Begin Source File SOURCE=..\..\libctsim\imagefile.cpp # End Source File # Begin Source File SOURCE=..\..\libctsupport\interpolator.cpp # End Source File # Begin Source File SOURCE=..\..\libctsupport\mathfuncs.cpp # End Source File # Begin Source File SOURCE=..\..\libctsupport\msvc.cpp # End Source File # Begin Source File SOURCE=..\..\libctsim\phantom.cpp # End Source File # Begin Source File SOURCE=..\..\libctsupport\plotfile.cpp # End Source File # Begin Source File SOURCE=..\..\libctgraphics\pol.cpp # End Source File # Begin Source File SOURCE=..\..\libctsim\procsignal.cpp # End Source File # Begin Source File SOURCE=..\..\libctsim\projections.cpp # End Source File # Begin Source File SOURCE=..\..\libctsim\reconstruct.cpp # End Source File # Begin Source File SOURCE=..\..\libctsim\scanner.cpp # End Source File # Begin Source File SOURCE=..\..\libctgraphics\sgp.cpp # End Source File # Begin Source File SOURCE=..\..\libctsupport\strfuncs.cpp # End Source File # Begin Source File SOURCE=..\..\libctsupport\syserror.cpp # End Source File # Begin Source File SOURCE=..\..\libctsim\trace.cpp # End Source File # Begin Source File SOURCE=..\..\libctgraphics\transformmatrix.cpp # End Source File # Begin Source File SOURCE=..\..\libctsupport\xform.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=..\..\include\array2d.h # End Source File # Begin Source File SOURCE=..\..\include\array2dfile.h # End Source File # Begin Source File SOURCE=..\..\include\backprojectors.h # End Source File # Begin Source File SOURCE=..\..\include\ct.h # End Source File # Begin Source File SOURCE=..\..\include\ctglobals.h # End Source File # Begin Source File SOURCE=..\..\include\ctndicom.h # End Source File # Begin Source File SOURCE=..\..\include\ctsupport.h # End Source File # Begin Source File SOURCE=..\..\include\ezplot.h # End Source File # Begin Source File SOURCE=..\..\include\filter.h # End Source File # Begin Source File SOURCE=..\..\include\fnetorderstream.h # End Source File # Begin Source File SOURCE=..\..\include\fourier.h # End Source File # Begin Source File SOURCE=..\..\include\hashtable.h # End Source File # Begin Source File SOURCE=..\..\include\imagefile.h # End Source File # Begin Source File SOURCE=..\..\include\interpolator.h # End Source File # Begin Source File SOURCE=..\..\include\mpiworld.h # End Source File # Begin Source File SOURCE=..\..\include\msvc_compat.h # End Source File # Begin Source File SOURCE=..\..\include\nographics.h # End Source File # Begin Source File SOURCE=..\..\include\phantom.h # End Source File # Begin Source File SOURCE=..\..\include\plotfile.h # End Source File # Begin Source File SOURCE=..\..\include\pol.h # End Source File # Begin Source File SOURCE=..\..\include\procsignal.h # End Source File # Begin Source File SOURCE=..\..\include\projections.h # End Source File # Begin Source File SOURCE=..\..\include\reconstruct.h # End Source File # Begin Source File SOURCE=..\..\include\scanner.h # End Source File # Begin Source File SOURCE=..\..\include\sgp.h # End Source File # Begin Source File SOURCE=..\..\include\timer.h # End Source File # Begin Source File SOURCE=..\..\include\trace.h # End Source File # Begin Source File SOURCE=..\..\include\transformmatrix.h # End Source File # End Group # End Target # End Project ctsim-6.0.2/msvc/ctsimtext/0000755000175000017500000000000010667176710014657 5ustar kevinkevinctsim-6.0.2/msvc/ctsimtext/ctsimtext.rc0000644000175000017500000000003210667176710017224 0ustar kevinkevinICON_APP ICON "logo.ico" ctsim-6.0.2/msvc/ctsimtext/logo.ico0000644000175000017500000000427610667176710016324 0ustar kevinkevin ÿ¨( @ÿÿÿúüúõøñÐîçqÖÕNÓÑK××TÕÕrÔÔ›ÕÕÎÛÛùððùüùíöíèóèøùòwúøüüÿÿòòåå3ÈÈ“ÍÍïèèýþýî÷îéôéöûöþÿÿ6ÿÿññ*ÌÌ¥ÏÏÿõõêõêõúõÑÿÿÿÿééSÇÇåããùýùìöìûýû€ÿÿùù-ÏÏÙßßüþüüÿÿþþ.ÒÒéççþþþúýúÔÿÿúúTÍÍð÷ðôúô‘ÿÿùüþÿïï—ÐÐÿþþBÿÿñøèôêôëõìõéôî÷ýþÞÝäçåï÷ïøûø×ÿÿüýï÷ûýòù÷ö‡ÕÓÿýýûýúüååÙÙââüýìöøü)ÕÕ÷òòôùôÿþÿKíöØØÛÛììããÒÒýýÆßßûüûæöúï÷ÞÞÚÚÑÑóùð÷÷÷ŽÛÛ–êôùýööûû§§êõüþ\Ø×ÿúüôôàà´´íö:ÖÕçôçæúüíöääÌÌóóððÓÓ7××›úüèèÄĸ¸ííîî××6××éõéNúüÝÝÉÉææçç?××èÿÿþþúýÖÖÕÕbØØí÷í¦ÿÿõúßßôúõõÛÛóùóñøñ^ÿÿ óòÄßÞéÿÿÿÿþýáá÷ûÿÿ%ÿÿRÿÿ¬ÿÿÈôêøú÷îöî¨ÿÿñùôù÷û@ÿÿmÿÿÿÿÕÿÿöÿÿÿýûòõëþÿþ[ÿÿ ìö,êôYéôˆìõ½üýëÿÿöúöûúõÿÿÿÿQýþ…ùü²ùüàùüøùüÿüþêôêøõëžÿüÿÿ9ÿÿoÿÿ ÿÿÍÿÿñÿÿýÿýüøõ”ìåˆþý¹ÿÿåÿÿðøðûøõþöîÿýü÷û÷ëõëèôèçóçæóæ÷ú÷  ! "#$%&'()*+,-./ 012345"67%89!:;<====>?@A*B2CDEFGFHIJKLMNOPFQRJSF=TUV+5WGXYZZ[\]^_`a:bcXdeffghi\]J?jklmgneoepqrstAuv8pw[x2wywJz{2|"}c~o2YY[€X‚ƒ„…&†s[‡†ˆ‰ŠX‹ƒŒ†‰Ž‘’X“”5•~–?ZZ?—?˜™Xš›œz8ž‘hw8Y2ŸwJF\2 ¡+¢£r†¤g[x™o¥I¦§¨©ª2]R–e¦w[’iJ]\«¬+5­®GR¯†oo°8J±²³´,µ¶·¸ ¹RzºJ»F¼½¾¿ÀÁÂÃÄ ÅJIHz]ÆÇÈÉÊ˩̸ÍËÎ%ÏÐÑÒÓÔÕ6Ö5רÙÚÛÜÝÞß* àáâãä1Äå#bæçè5:;éêé6 ;+*ê +ê #"ëÌé¨éêìííìíì"*îÄctsim-6.0.2/msvc/ctsimtext/ctsimtext.dsp0000644000175000017500000001551410667176710017421 0ustar kevinkevin# Microsoft Developer Studio Project File - Name="ctsimtext" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=ctsimtext - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "ctsimtext.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "ctsimtext.mak" CFG="ctsimtext - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "ctsimtext - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "ctsimtext - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "ctsimtext - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /G6 /MT /W3 /GR /GX /O2 /I "..\..\include" /I "..\..\getopt" /I "\fftw-2.1.3\fftw" /I "\fftw-2.1.3\rfftw" /I "\wx2\include" /I "\wx2\src\png" /I "\wx2\src\zlib" /I "\wx2\src\tiff" /I "\wx2\src\xpm" /D "_CONSOLE" /D "NOMAIN" /D "__WIN95__" /D "__WIN32__" /D "_WINDOWS" /D "__WXMSW__" /D "MSVC" /D "NDEBUG" /D VERSION=\"3.5.5\" /D "WIN32" /D "HAVE_CTN_DICOM" /YX /FD /D _WI"NDOWS,_MBCS,HAVE_STRING_H,HAVE_GETOPT_H,MSVC,HAVE_FFTW,HAVE_PNG,HAVE_SGP,HAVE_WXWINDOWS,__WXMSW__,__WIN95__,__WIN32__,VERSION=3.5.4,WINVER=0x0400,STRICT /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 wx.lib zlib.lib tiff.lib jpeg.lib png.lib libctsim.lib fftw2st.lib rfftw2st.lib wsock32.lib comctl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ctn_lib.lib /nologo /subsystem:console /machine:I386 /libpath:"..\libctsim\Release" /libpath:"\fftw-2.1.3\Win32\RFFTW2st\Release" /libpath:"\fftw-2.1.3\Win32\FFTW2st\Release" /libpath:"\wx2\\" /libpath:"\wx2\lib" /libpath:"\ctn\winctn\ctn_lib\Release" !ELSEIF "$(CFG)" == "ctsimtext - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /G6 /MTd /W3 /Gm /GR /GX /ZI /Od /I "..\..\include" /I "..\..\getopt" /I "\fftw-2.1.3\fftw" /I "\fftw-2.1.3\rfftw" /I "\wx2\include" /I "\wx2\src\png" /I "\wx2\src\zlib" /I "\wx2\src\tiff" /I "\wx2\src\xpm" /D "_CONSOLE" /D "NOMAIN" /D "_DEBUG" /D "DEBUG" /D "_WINDOWS" /D "__WXDEBUG__" /D WXDEBUG=1 /D "_MBCS" /D "HAVE_STRING_H" /D "HAVE_GETOPT_H" /D "MSVC" /D "HAVE_FFTW" /D "HAVE_PNG" /D "HAVE_SGP" /D "HAVE_WXWINDOWS" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D VERSION=3.5.5 /D "WIN32" /D "HAVE_CTN_DICOM" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /i "\wx2\include" /i "\wx2\contrib\include" /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 wxd.lib libctsim.lib zlibd.lib tiffd.lib jpegd.lib pngd.lib fftw2st.lib rfftw2st.lib wsock32.lib comctl32.lib winmm.lib rpcrt4.lib xpmd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ctn_lib.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\libctsim\Debug" /libpath:"\fftw-2.1.3\Win32\RFFTW2st\Debug" /libpath:"\fftw-2.1.3\Win32\FFTW2st\Debug" /libpath:"\fftw-2.1.3\fftw2st\Debug" /libpath:"\fftw-2.1.3\rfftw2st\Release" /libpath:"\wx2\lib" /libpath:"\ctn\winctn\ctn_lib\Debug" # SUBTRACT LINK32 /nodefaultlib !ENDIF # Begin Target # Name "ctsimtext - Win32 Release" # Name "ctsimtext - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\tools\ctsimtext.cpp # End Source File # Begin Source File SOURCE=..\..\getopt\getopt.c # End Source File # Begin Source File SOURCE=..\..\getopt\getopt1.c # End Source File # Begin Source File SOURCE=..\..\tools\if1.cpp # End Source File # Begin Source File SOURCE=..\..\tools\if2.cpp # End Source File # Begin Source File SOURCE=..\..\tools\ifexport.cpp # End Source File # Begin Source File SOURCE=..\..\tools\ifinfo.cpp # End Source File # Begin Source File SOURCE=..\..\tools\nographics.cpp # End Source File # Begin Source File SOURCE=..\..\tools\phm2helix.cpp # End Source File # Begin Source File SOURCE=..\..\tools\phm2if.cpp # End Source File # Begin Source File SOURCE=..\..\tools\phm2pj.cpp # End Source File # Begin Source File SOURCE=..\..\tools\pj2if.cpp # End Source File # Begin Source File SOURCE=..\..\tools\pjHinterp.cpp # End Source File # Begin Source File SOURCE=..\..\tools\pjinfo.cpp # End Source File # Begin Source File SOURCE=..\..\tools\pjrec.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=..\..\getopt\getopt.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # Begin Source File SOURCE=.\ctsimtext.rc # End Source File # End Group # End Target # End Project ctsim-6.0.2/msvc/ctsimtext/ctsimtext.vcproj0000744000175000017500000001434310667176710020136 0ustar kevinkevin ctsim-6.0.2/msvc/copy-binaries.bat0000744000175000017500000000020010667176710016060 0ustar kevinkevin@echo off mkdir c:\ctsim\bin copy ctsim\Release\ctsim.exe c:\ctsim\bin copy ctsimtext\Release\ctsimtext.exe c:\ctsim\bin ctsim-6.0.2/msvc/ctsim.dsw0000644000175000017500000000724310667176710014477 0ustar kevinkevinMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "FFTW2st"="..\..\fftw-2.1.3\Win32\FFTW2st\FFTW2st.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "RFFTW2st"="..\..\fftw-2.1.3\Win32\RFFTW2st\RFFTW2st.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "ctn_lib"=..\..\ctn\winctn\ctn_lib\ctn_lib.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "ctsim"=.\ctsim\ctsim.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name libctsim End Project Dependency }}} ############################################################################### Project: "ctsimtext"=.\ctsimtext\ctsimtext.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name libctsim End Project Dependency }}} ############################################################################### Project: "jpeg"=..\..\wx2\src\jpeg\JpegVC.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "libctsim"=.\libctsim\libctsim.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name png End Project Dependency Begin Project Dependency Project_Dep_Name tiff End Project Dependency Begin Project Dependency Project_Dep_Name wxvc End Project Dependency Begin Project Dependency Project_Dep_Name xpm End Project Dependency Begin Project Dependency Project_Dep_Name zlib End Project Dependency Begin Project Dependency Project_Dep_Name FFTW2st End Project Dependency Begin Project Dependency Project_Dep_Name jpeg End Project Dependency Begin Project Dependency Project_Dep_Name RFFTW2st End Project Dependency Begin Project Dependency Project_Dep_Name ctn_lib End Project Dependency }}} ############################################################################### Project: "png"=..\..\wx2\src\png\PngVC.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "tiff"=..\..\wx2\src\tiff\TiffVC.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "wxvc"=..\..\wx2\src\wxvc.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "xpm"=..\..\wx2\src\xpm\XpmVC.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "zlib"=..\..\wx2\src\zlib\ZlibVC.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### ctsim-6.0.2/msvc/ctsim/0000755000175000017500000000000010667176710013752 5ustar kevinkevinctsim-6.0.2/msvc/ctsim/logo.ico0000644000175000017500000000427610667176710015417 0ustar kevinkevin ÿ¨( @ÿÿÿúüúõøñÐîçqÖÕNÓÑK××TÕÕrÔÔ›ÕÕÎÛÛùððùüùíöíèóèøùòwúøüüÿÿòòåå3ÈÈ“ÍÍïèèýþýî÷îéôéöûöþÿÿ6ÿÿññ*ÌÌ¥ÏÏÿõõêõêõúõÑÿÿÿÿééSÇÇåããùýùìöìûýû€ÿÿùù-ÏÏÙßßüþüüÿÿþþ.ÒÒéççþþþúýúÔÿÿúúTÍÍð÷ðôúô‘ÿÿùüþÿïï—ÐÐÿþþBÿÿñøèôêôëõìõéôî÷ýþÞÝäçåï÷ïøûø×ÿÿüýï÷ûýòù÷ö‡ÕÓÿýýûýúüååÙÙââüýìöøü)ÕÕ÷òòôùôÿþÿKíöØØÛÛììããÒÒýýÆßßûüûæöúï÷ÞÞÚÚÑÑóùð÷÷÷ŽÛÛ–êôùýööûû§§êõüþ\Ø×ÿúüôôàà´´íö:ÖÕçôçæúüíöääÌÌóóððÓÓ7××›úüèèÄĸ¸ííîî××6××éõéNúüÝÝÉÉææçç?××èÿÿþþúýÖÖÕÕbØØí÷í¦ÿÿõúßßôúõõÛÛóùóñøñ^ÿÿ óòÄßÞéÿÿÿÿþýáá÷ûÿÿ%ÿÿRÿÿ¬ÿÿÈôêøú÷îöî¨ÿÿñùôù÷û@ÿÿmÿÿÿÿÕÿÿöÿÿÿýûòõëþÿþ[ÿÿ ìö,êôYéôˆìõ½üýëÿÿöúöûúõÿÿÿÿQýþ…ùü²ùüàùüøùüÿüþêôêøõëžÿüÿÿ9ÿÿoÿÿ ÿÿÍÿÿñÿÿýÿýüøõ”ìåˆþý¹ÿÿåÿÿðøðûøõþöîÿýü÷û÷ëõëèôèçóçæóæ÷ú÷  ! "#$%&'()*+,-./ 012345"67%89!:;<====>?@A*B2CDEFGFHIJKLMNOPFQRJSF=TUV+5WGXYZZ[\]^_`a:bcXdeffghi\]J?jklmgneoepqrstAuv8pw[x2wywJz{2|"}c~o2YY[€X‚ƒ„…&†s[‡†ˆ‰ŠX‹ƒŒ†‰Ž‘’X“”5•~–?ZZ?—?˜™Xš›œz8ž‘hw8Y2ŸwJF\2 ¡+¢£r†¤g[x™o¥I¦§¨©ª2]R–e¦w[’iJ]\«¬+5­®GR¯†oo°8J±²³´,µ¶·¸ ¹RzºJ»F¼½¾¿ÀÁÂÃÄ ÅJIHz]ÆÇÈÉÊ˩̸ÍËÎ%ÏÐÑÒÓÔÕ6Ö5רÙÚÛÜÝÞß* àáâãä1Äå#bæçè5:;éêé6 ;+*ê +ê #"ëÌé¨éêìííìíì"*îÄctsim-6.0.2/msvc/ctsim/ctsim.plg0000644000175000017500000000302510667176710015575 0ustar kevinkevin

Build Log

--------------------Configuration: ctsim - Win32 Release--------------------

Command Lines

Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP37A.tmp" with contents [ ctn_lib.lib winmm.lib wx.lib png.lib tiff.lib jpeg.lib xpm.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ctn_lib.lib comctl32.lib rpcrt4.lib fftw2st.lib rfftw2st.lib opengl32.lib wsock32.lib htmlhelp.lib /nologo /subsystem:windows /incremental:no /pdb:"Release/ctsim.pdb" /machine:I386 /out:"Release/ctsim.exe" /libpath:"\wx2\lib" /libpath:"\ctn\winctn\ctn_lib\Release" /libpath:"\fftw-2.1.3\Win32\FFTW2st\Release" /libpath:"\fftw-2.1.3\Win32\RFFTW2st\Release" .\Release\backgroundmgr.obj .\Release\backgroundsupr.obj .\Release\ctsim.obj .\Release\dialogs.obj .\Release\dlgezplot.obj .\Release\dlgprojections.obj .\Release\dlgreconstruct.obj .\Release\docs.obj .\Release\getopt.obj .\Release\getopt1.obj .\Release\graph3dview.obj .\Release\threadproj.obj .\Release\threadraster.obj .\Release\threadrecon.obj .\Release\tips.obj .\Release\views.obj .\Release\ctsim.res \ctsim\msvc\libctsim\Release\libctsim.lib ] Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP37A.tmp"

Output Window

Linking... LINK : warning LNK4089: all references to "WSOCK32.dll" discarded by /OPT:REF

Results

ctsim.exe - 0 error(s), 1 warning(s)
ctsim-6.0.2/msvc/ctsim/ctsim.vcproj0000744000175000017500000002160010667176710016316 0ustar kevinkevin ctsim-6.0.2/msvc/ctsim/ctsim.dsp0000644000175000017500000002235210667176710015605 0ustar kevinkevin# Microsoft Developer Studio Project File - Name="ctsim" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Application" 0x0101 CFG=ctsim - Win32 Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "ctsim.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "ctsim.mak" CFG="ctsim - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "ctsim - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "ctsim - Win32 Debug" (based on "Win32 (x86) Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "ctsim - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /G6 /MT /W3 /GR /GX /O2 /I "..\..\getopt" /I "..\..\include" /I "\wx2\include" /I "\wx2\src\png" /I "\fftw-2.1.3\fftw" /I "\fftw-2.1.3\rfftw" /I "\wx2\src\zlib" /I "\ctn\include" /D "NDEBUG" /D VERSION=\"3.5.5\" /D "_WINDOWS" /D "HAVE_STRING_H" /D "HAVE_GETOPT_H" /D "MSVC" /D "HAVE_FFTW" /D "HAVE_PNG" /D "HAVE_SGP" /D "HAVE_WXWINDOWS" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D "WIN32" /D "HAVE_CTN_DICOM" /D CTSIMVERSION=\"3.5.5\" /YX /FD /D _WI"NDOWS,_MBCS,HAVE_STRING_H,HAVE_GETOPT_H,MSVC,HAVE_FFTW,HAVE_PNG,HAVE_SGP,HAVE_WXWINDOWS,__WXMSW__,__WIN95__,__WIN32__,VERSION=3.5.4,WINVER=0x0400,STRICT /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /i "\wx2\include" /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 # ADD LINK32 ctn_lib.lib winmm.lib wx.lib png.lib tiff.lib jpeg.lib xpm.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ctn_lib.lib comctl32.lib rpcrt4.lib fftw2st.lib rfftw2st.lib opengl32.lib wsock32.lib htmlhelp.lib /nologo /subsystem:windows /machine:I386 /libpath:"\wx2\lib" /libpath:"\ctn\winctn\ctn_lib\Release" /libpath:"\fftw-2.1.3\Win32\FFTW2st\Release" /libpath:"\fftw-2.1.3\Win32\RFFTW2st\Release" !ELSEIF "$(CFG)" == "ctsim - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /G6 /MTd /W3 /Gm /GR /GX /ZI /Od /I "..\..\getopt" /I "..\..\include" /I "\wx2\include" /I "\wx2\src\png" /I "\fftw-2.1.3\fftw" /I "\fftw-2.1.3\rfftw" /I "\wx2\src\zlib" /I "\ctn\include" /D "_DEBUG" /D "DEBUG" /D "__WXDEBUG__" /D WXDEBUG=1 /D "_MBCS" /D WINVER=0x0400 /D "STRICT" /D VERSION=3.5.5 /D "_WINDOWS" /D "HAVE_STRING_H" /D "HAVE_GETOPT_H" /D "MSVC" /D "HAVE_FFTW" /D "HAVE_PNG" /D "HAVE_SGP" /D "HAVE_WXWINDOWS" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D "WIN32" /D "HAVE_CTN_DICOM" /D CTSIMVERSION=\"3.5.5\" /YX /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /i "\wx2\include" /i "\wx2\contrib\include" /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD LINK32 wsock32.lib comctl32.lib winmm.lib rpcrt4.lib wxd.lib xpmd.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib opengl32.lib fftw2st.lib rfftw2st.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ctn_lib.lib htmlhelp.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrtd.lib" /pdbtype:sept /libpath:"\fftw-2.1.3\win32\fftw2st\Debug" /libpath:"\fftw-2.1.3\win32\rfftw2st\Debug" /libpath:"\wx2\lib" /libpath:"\ctn\winctn\ctn_lib\Debug" !ENDIF # Begin Target # Name "ctsim - Win32 Release" # Name "ctsim - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\..\src\backgroundmgr.cpp # End Source File # Begin Source File SOURCE=..\..\src\backgroundsupr.cpp # End Source File # Begin Source File SOURCE=..\..\src\ctsim.cpp # End Source File # Begin Source File SOURCE=..\..\src\dialogs.cpp # End Source File # Begin Source File SOURCE=..\..\src\dlgezplot.cpp # End Source File # Begin Source File SOURCE=..\..\src\dlgprojections.cpp # End Source File # Begin Source File SOURCE=..\..\src\dlgreconstruct.cpp # End Source File # Begin Source File SOURCE=..\..\src\docs.cpp # End Source File # Begin Source File SOURCE=..\..\getopt\getopt.c # End Source File # Begin Source File SOURCE=..\..\getopt\getopt1.c # End Source File # Begin Source File SOURCE=..\..\src\graph3dview.cpp # End Source File # Begin Source File SOURCE=..\..\src\threadproj.cpp # End Source File # Begin Source File SOURCE=..\..\src\threadraster.cpp # End Source File # Begin Source File SOURCE=..\..\src\threadrecon.cpp # End Source File # Begin Source File SOURCE=..\..\src\tips.cpp # End Source File # Begin Source File SOURCE=..\..\src\views.cpp # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=..\..\src\backgroundmgr.h # End Source File # Begin Source File SOURCE=..\..\src\backgroundsupr.h # End Source File # Begin Source File SOURCE="..\..\src\ctsim-map.h" # End Source File # Begin Source File SOURCE=..\..\src\ctsim.h # End Source File # Begin Source File SOURCE=..\..\src\dialogs.h # End Source File # Begin Source File SOURCE=..\..\src\dlgezplot.h # End Source File # Begin Source File SOURCE=..\..\src\dlgprojections.h # End Source File # Begin Source File SOURCE=..\..\src\dlgreconstruct.h # End Source File # Begin Source File SOURCE=..\..\src\threadraster.h # End Source File # Begin Source File SOURCE=..\..\src\threadrecon.h # End Source File # Begin Source File SOURCE=..\..\src\tips.h # End Source File # Begin Source File SOURCE=..\..\src\views.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # Begin Source File SOURCE=.\wx\msw\blank.cur # End Source File # Begin Source File SOURCE=.\wx\msw\bullseye.cur # End Source File # Begin Source File SOURCE=.\ctsim.rc # End Source File # Begin Source File SOURCE=.\wx\msw\error.ico # End Source File # Begin Source File SOURCE=.\wx\msw\hand.cur # End Source File # Begin Source File SOURCE=.\wx\msw\info.ico # End Source File # Begin Source File SOURCE=.\logo.ico # End Source File # Begin Source File SOURCE=.\wx\msw\magnif1.cur # End Source File # Begin Source File SOURCE=.\wx\msw\noentry.cur # End Source File # Begin Source File SOURCE=.\wx\msw\pbrush.cur # End Source File # Begin Source File SOURCE=.\wx\msw\pencil.cur # End Source File # Begin Source File SOURCE=.\wx\msw\pntleft.cur # End Source File # Begin Source File SOURCE=.\wx\msw\pntright.cur # End Source File # Begin Source File SOURCE=.\wx\msw\query.cur # End Source File # Begin Source File SOURCE=.\wx\msw\question.ico # End Source File # Begin Source File SOURCE=.\wx\msw\roller.cur # End Source File # Begin Source File SOURCE=.\wx\msw\size.cur # End Source File # Begin Source File SOURCE=.\wx\msw\tip.ico # End Source File # Begin Source File SOURCE=.\wx\msw\warning.ico # End Source File # Begin Source File SOURCE=.\wx\msw\watch1.cur # End Source File # Begin Source File SOURCE=.\wx\html\msw\wbook.ico # End Source File # Begin Source File SOURCE=.\wx\html\msw\wfolder.ico # End Source File # Begin Source File SOURCE=.\wx\html\msw\whelp.ico # End Source File # Begin Source File SOURCE=.\wx\html\msw\whlproot.ico # End Source File # Begin Source File SOURCE=.\wx\html\msw\wpage.ico # End Source File # End Group # End Target # End Project ctsim-6.0.2/msvc/ctsim/ctsim.rc0000644000175000017500000000006310667176710015416 0ustar kevinkevinICON_APP ICON "logo.ico" #include "wx/msw/wx.rc" ctsim-6.0.2/docs/0000755000175000017500000000000010667176710012613 5ustar kevinkevinctsim-6.0.2/docs/ctsim.htb0000644000175000017500000041366110667176710014444 0ustar kevinkevinPK}‚13šd$·Q ctsim100.htmlUT Ž–,C–,CUxèè“]k£@†ïý ½ZµÉ]Ù‰ ‰I ©.Ö.,ËR¦ñ$NÑQœI7í¯ï™Ñì6ØÔ93Ïûž¶.î7¡Ã*äeÈ´Ð5†]ÕLÅŽCÄ{æ8,Î? ^ͳM–Ï®–ö!iitŸÌÜAæ’ ÙûFÍÇá£"ˆqhb‡Åèzâ<£—¼ÁÁîoxô† %ÞÞ>?ÛN‹V*ß÷±€ÇTÙ°ý)YoZК+ð=ÚÜ­ÒY‘àgꑊ7]ÊZ9,Xf)YÅÂZœKÒCóL·;E $ËÞ =nm ÐÔ‰#Ög~ôÉÿYΫÀßMZ´ÿSÐjºB02°2–m²í^ƒÚr)…Ü¡¬+qǵ†W^ÐôaRNü› „3[ú— §½q¤Ã|O„¹ônÒPK}‚13ܶÆy¾ ctsim101.htmlUT Ž–,C–,CUxèèmRakƒ0ýî¯8,ì[µë·±TÐÖÖA[‡ØÁc5EѬÝÏß%ZfYõ.÷îÝ»GH”î¶žEJFQ\UÌkNsž·OˆkJ–E‚xõÁfoãd1Y›;}Øû»pa›.ñ¾G–á> SŒ’p½°3Õñú+“B1¡:§Tue{Ë!Õ-p }šÌÄ$Šý(Û;4wp³YlÊÚŒ¨Ô³~ïbÒæÄE.[ ¶¸bÝA4‰½m4¿ú€‘…RϬU@¡iå‰eŠK9¯p¡$P¼¦ë.%k0š•ÐÊ ÈTɬ@û@¹èôù˜ðH…¼•5Îé¸(zæìâW´2ð27ðtn‘4펦š^КõrþÒÙèzç8Î'q±s Œûã©lC 0B+Ò¼ùÛ—Í~‘ÆXžÂTO=~×!±ˆ»Ž÷Hæ¦+Ó| mÑ UõoG´L¯Ž>t²bÎ ~#À´ô®} ñ×_Û_PK}‚13„é6˜ ctsim102.htmlUT Ž–,C–,CUxèèÝTQo›0~çWœ¨´·@›=Ms’4“ÒPetÒTM“ Gâ ²M»üûž ™’*R³> °ï;¾ûÎ6[¤wËÈc[äyÄŒ0%FÍNÈ¢fa7c¡ûæyl’Ä?ar;M–Ézt5wQǰßÍF~Gó‰0ŽØt¶Jgk÷u±žÍG~f´¨~gµ4(¶¦*ýhÚO-N¡_†så&ÿ?zhÎàn®o:`³ŠÂ>•櫽ÏB?  3‚nº9@Ã^2[¬m±‹á_hèÅB7%ßk°!Uq#j ü©n phT½ÃÌ… QbÀî©ðIô ùY8‰ìÜciÚg<Â,^ò á±nl@Að‹…„í“$]ø(Íx²œÑ€Æ$7áÇxùív5J ``ÿô$$W{Û9T.ÇÂy²¢´a»4§´¸­0[„ŽLí‚Úp™s•ÕÛ´& Ÿ§[¡¡Ó v$Ë=´sxÙ¢„ŠË–—Ê’WrC.euÕÔZ|몮(¥ÆgT¼„\*Zo:8©‚ë xør± ½–97ü?p¤+s© ßÑhp +ÙÙ@äÝ Æ‚·¥±õÚÔ×.å4¡ÌÿIáßÓc»Trmè’rjÿ%zî• ¾Pk{s¼TèœÓ5ç$P¬ßÃ݆> ìñJ¯î@~PK}‚13¿ØM[ ctsim103.htmlUT Ž–,C–,CUxèè¥W[oÛ6~ׯ8H=ÅrZtëέ K‘:¶a((‰²˜R¤JRqÝ_¿sHÚ’gI¶iHñÜø}çÂd糫ËI’Õœ•“Ì 'ù¤½7¼ÈÆa“ýQ’dG7'ÀÑÇã›Ë›ÛÃ7gþjNázzuz¸çµöP~:ÉŽO¯g§·þðüöôìp¯pV4_ ­WΦµkäÞä8nI6EyçeÞøãßÝÞä®Ý!÷ö ¶÷BUzoò“t¿ÒÏNÙ÷AvÁsžMÅ ŽsÔ˜¯4Æ1ôìü–î|þn…®’[Ž7°Îth\ÍÁ›Ú€®€)Ðù=/TF7À 5š¶B+¨„äiö 9šÜY6çÙøhBû$›Í‚‡øˆÄkÐ~ƒ²ÛÛBK—F/,ü¥[Ò²išþÑ^tt>\M.Oq+¼àì~›^^|¼>œÝ…OÌ ¼©$Ùøìæg'^ù‘øÀþ†0þwû”—ŒèÆx#ï—ÏøùÌ%'´µ(jzà4°¶•K\$œá÷»fš¶-7xnzˆÚ>2'ìÊ”­u'˄ĄuÄ#ñJ?,·ZvŽÃ“§“%˜*x ø7:© ÿÖqU,!À$zm:éD+/!_b"ØFkô©æÑ)ƈöI¡a2 ß,]ª³èÖðIvwIX\^`F"FÊ—œ©RŠF¸ˆÚð¬ÐV(¾ã fMƒ~wž(ÕŸŒ½¿,Âó,ŽÚ>m^Âg,&Ûšä!À :¡ÂB¨R/R@Œ¥µm`å}g£nhä+*G,‘ê äÛ05lQ¼>@švoý.M¦Ž(âÎE{ýÙþÐö*aD ê‘…õšš¿;m¤?¿•Ùó@QÙÁN,ëçBk]¾¦ÚÈ}P¦‚~ gH“d!U]“SÎRQ ;…ÓÆîû[šªr‹€3^)æxšªÅ•Ä«>­ŒUø@5‡…L4b^;È’$'x™õðn•ǶZRéΈ˜˜0‚;Ë-à$h%ÇËø#p˜$°I©Ë%_)S»kÄ´ðH•ʼÅ^ÃdÑIæIwFÌ5gDU§ŠÐ¡.Ö0Ű Ma}ùnSîð±®öÄd§WQ En˜YL›G¶u ½Ä†Èä¸f²E;qx²з8E^0R6³pÎ7l@Ò+31é ¤ð;1à=äO)·Î>Ò £B 'XúÖŽ˜Z®ZHßɃ¬Ý÷³Y¨ÌUœÁÃLжsŽ#ÇvNBé?î2ö/h?WÞþõÑjùbP/† €¥W+—†²£:Ç>V|LRÿ¢ËEn]³uA÷ŽIá–8–¹",’’9F¸„ÖœÂgÿVŸuîŽ(?ûJÞ¿wg©kµI:K§»¦æ…Z fNS‰³½—°ÈÒ\<`îçØ…1 ·8•½“ãñÎñ*(š ZÆáo ¸†gÛ&¹ä¹_ÕØµÞTÙIf! B«Q`P¢Ã0cR€Oæ[ lÅ1èw='«æ±7¢†‹¥Ò öûßsl3'^Y¹É¦vŸq)L·Ç£(EU=[ÈS[Ü|w›æÀ? ý{ïø]Œ Z7fèФ¶í>È J{n|:†F@¯ á¨Oqß±E|ulˆm#ÄÛœÞ.ö·Pÿƒ:z ¶ìEsÿÏ ŠIHÓx“¤ ˜¡ÊÇa‚XCô³~çQìº4M°´—À§\Y¢Å”ž€dÚ ¬Koà%ª)„Gõ†…}È;çÁÕK¨­˜+Q |òá ¾s-÷Ä<ýp÷Ók%Aãâ¯ðGñ?PK}‚13ÁÛýSý  ctsim104.htmlUT Ž–,C–,CUxèè…’[kà €ßó+‚…=Î]X:¨’,Y mÉ}*ivÖ8Ìe‰kÿþŒ¶PFèÏù¾ƒ%i¾^Q‡TP|P¢„’@ó ÜwعËFAÿY”@°Ml0Ç!!{Ù¸ákÄVŒû³Ä ]%p³`ûè;q–‘ÖJ¢8Ëcn˜”ljJ5ˆz[¶škÔp[©Z"¶£â^Gߺ èþîѤgÝW%¢7R-Æ9‰>YTµ(=OÃ{ ïÏ0>˜¤|¼qú0Õuœÿê’²ôG‚CÛŽOˆÞ¥87"‡ïÑCm›rMž_ÊÏF^6ƒ*¤,”h›?2NX–ëÀøz±¿àPK}‚13> R´ ctsim105.htmlUT Ž–,C–,CUxèèRÁŽÓ0½ç+FY‰Óª„Ê7R·´ô°Û¬ºáÀ MÒibÖ‰#{šR¾ž±S+íH‘=ñ{ož_Fmˇûe ºë]«‚íd¦Š³Cv+#3Ôæ …6@Í‚N”Ò–=âo¶Ð]A¶TŠ·Ž£”fÔO“ŽñüPK}‚13 ²[@] ctsim108.htmlUT Ž–,C–,CUxèè…’]kƒ0†ïýÁÂ.§öb]Y «s µdޱ«áTl &E#Ûþý¢q ®8AÌ9>ï“£,‰‘ÏU^"(©dzâÌË%Zº­‘0 ˆÓÃÀ~§ÄÝ„ã£8zIàšt6UÌCÐŽY@F&"Aèš…ìhó^.+.»Û³l˜‰ü©"`}¹\{7þÞHq¡Åݽ‰n˜|Þ«ð^Ã¥øäL䥢kE׿´5-FdØt´]œŠjÆ¿NˆÑa* …õi`ò7éØó¥ïÇà4å5x¥\9;€)ÏÛïu“33íì¥)¦¼ÿ䔬K¶ZòÑS¦w‡[Ñ€gÑ·EÕ-V˜3Õn‡úè[õPK}‚13 fÌàm„ ctsim109.htmlUT Ž–,C–,CUxèè’MOƒ@†ïüŠ &ž°ŒÛMhmíAÛñàÉ,Ë›,lÃŽ¢ÿÞeÛúM$!Ëdß—gæÍ°evwËV£(8#Eùµé[mDÁâ]Íblº¾~„éÍl}»N'G ÿ8s«än> ‹½1t–„³Ù|•ÍS¿Lç‹I(ɪæIš–°%ÕÔèÏöå`ïÒñɹ©Ö’ÐZ2mȶÿ×kºÞß㓃ÌVɳ '®œ¸:ˆã}ÿl™³/O¿㊠«-Á vÖáÀ”À²ŒÏ²{Õ°Ø} 7Tƒ°€¯(ŸIäaÛ™ªÑ`Ís'¤)p€-ä‡ ±€²3 C™²TR ü@|NUm/ã¸ïûÈ™® y9XE8 ARjHÆ%ô6þk1€RitÝtB[âE(í;ý€ÿ…ôNÇôg”_DÒ4±‡‡|‘m>Álã2 X¼X¯2·Ã"¹c·|ïPK}‚13ᥠ2 ctsim10.htmlUT –,C–,CUxèèm’]KÃ0†ïó+B¢ +CŠY`›­½ØV)õÂ+)éYh“ÒÙöïMÒM&.’7ç9_IX’¯Wœ0 EÉ*¬w °ÐU ,XèÍ„°EúúIoËt•f³Qì‡õžÓÍ|Í4­u˜s¶Œ6y”yk’Eñ,Ø«æK ±Klê€/ҹпè“GF­,4šjhðöü<À¾‚‡€_Õøâær29C§­,ZÐðX6K2×pr~V’tO¿{ ,ÏùµØßŠÃ 힢¡%l•Šhkz…Êhj¶Äia{€Î*oýMw ¥•}kO\g5ª”SŸ£Üûð¤Ðå Cº¢É¢ÞÞíTiÃ8ÄK ª’ø/Ù˜½»ÞÂ8Ýäö­Ü£Úeø ?PK}‚13K³œª ctsim110.htmlUT Ž–,C–,CUxèè}“mo›0Çßó)NTÚ«Hµ‡FsòØLJB•2M{59p%ÖŒð¡,ß¾¶IÓ­†„8|¿ûßÿÀf«|³Nv@^¦ŒIL¿)C\J¡*ø!T©¦BñöÄâ`±Çƒ€M³ùO˜Þϲu¶ß,ýeÕ&°lãt#ŠÏ£ÐVLR6[lóÅΧW»ÅrdDý«ÐŠP‘‰TË0_] ü‹“;݈Þ!'¡U˜~o®²£žµþ•Ô¼ Ó’¾ºû=ö´wü%±peáêŽÏÞÙjçÆ^Ýþï#ÙlÀÒ`~î tÀ „°èˆï%“¢nä鼎–šVW-¯4ì±Ê)ýBDÀò<åV„Å6‚£ÒÑÊ/ 4Fø^­®½Šã‰·ÔóTtªÄÖ»tÙ‡^Úô€éöµe"7Л^Öh¡ëÆrŽ‚—)GwƒK¼Á×x›ÃÇ(\•—µÛ$I"˜wèÆí ‚~ò^²Õýê~ÍeRì[Þ 4ƒ+f”¦w†œ!]ü~µö ÌÉÖ~¤€ÅËl›Û ê¶²}ôçáPK}‚13~œRL}¿ ctsim111.htmlUT Ž–,C–,CUxèèu’]o‚0†ïû+Lv±(¨û¬Mq.1 /vµT¨Ð¤´êtÿ~¥Å™™„Ðrž÷œ÷œ´L¨ $ÃH1Å)~"œ3‘ÇŒ7!òl y†Í¢ù;œ½øÑ*Š'½…yt¢)\OÃ`â(Y±ô~èhÅ#?X'AlÂË8XLœT5¬üH¥PT¨Æ-TÉìw×V££áƒzÌš#ŠIáàmõ;ZÖx¸{tð WÏíû'<¶ðîÀx¦Ñ\£ùõ:ãh·=/Çÿ G˜Ë£à’dP¢$Á~òÆJäéSKÁ=ã´ß<4œ©ºê˜’’ÓVµÌkRBÒÀ½ä\›'43õ- ÛÏÂJPbÓÆàÖ5yôݰhƒÁ•"²‹«„ž”ý}dœ[S; »éÒLŸ~ÚðMíq™îí˜0*±š¦JÖ_.L4&…ž…åU×f+4ÎÜ¢¨Œ¦oK]U¹dº®¥ÇatnÛ @Þ"Z'z›Ú½Ó»·ßPK}‚13Y#9ø ctsim112.htmlUT Ž–,C–,CUxèè…‘Qkƒ0Çßó) {¬u{Ø`i@;«Ãº‡= «±RS’óû/‰lPX $w÷»ãw4oö#tämÏ( ”œ%³=dZá fÝqCÃ%BCÏB“êå’×]UTõv•ùcËÄPÆût]‰Àò1£»´lÒÚó:ͶA‡Fœ¿:5!ŸÐ¬G<Ë€í®¦K¿h´yòÐJL[)[j ØÇåE ‹ê"ºÇMÀî$>»{~ø G>Yøô‡Wé4¯]ÏùýÍÑX7¡ïŒÔ|àPŽÞÊC BrS'çž÷öãƒÆ§B/ jqœ];0(M\zîœmÖ®$ùO/MXuq|+¡GÝjá$%Ëä/;̪²±·2û, ÿPK}‚13Ú®½¡ ctsim113.htmlUT Ž–,C–,CUxèè­UÑNÛ0}ïW\iO#0iÒ"ÑÒR¤Ò¢.¨Úr“›Ä“cg¶C _ÏuÒvÑuC*Iœ“{Î¹çÆ 'ñÝ4ê…ò4 p£yå„V\ÂT¬ 7mȺ;!kq½^8˜_ÿ„ÁÍp>/.OÆí•¹‚ÙÕÝè²ït%’¯g}zâ* ‡£Y}ÕNˆ_ kæYÚ©NìQQ†ö.)˜‰]„1®]c;Òœæà‰’,PÊ#JsU‹(-¹”:9 !ÅUçBåPb©i®Zp;G¨7uzÕÿFŸ8µO}};œßíÆ¸¶ÝeëÊCs﬋ɿÜggJA#ƒ¦¶N˜Ö¬}‚ï|BÖnF´É²ñ|ÓÃ[èÐ}™^PK}‚13#œ‚:x ctsim114.htmlUT Ž–,C–,CUxèè’_Oƒ0Åßù K|™F}°kÈäa âƒO¦ƒJi‹ô’øñ½À\¢A# ¡=÷ü·hZì¶Ì£RðŠQPÐ6µíHíh0)4ëžG£ìþ™Dq¶Íòõb3>ˆ‡dî’µÏGI™Ñ8ÙI>Ò<Ù¬ýœÒ/¥5 ¸¥Ýø,>M„üm}jgL«ÕÕX^€mUy»òÙEwÃ;k¾žÌ­ä¬n;[ 甩««¿°àÔ=Móaééå·Á)ŠEÁââQiàˆôN8‰éõQtľ…Íw¦~†—¤ m+L¥>H%€«Ægµð)ˆRõÞc HdæOKzZø÷êhÄ“Jg™ÑtTQ>v3…yùVw¶7Õ¼è\ø=2Ødû…áêàgºpŸPK}‚13 ±(œ¯ ctsim115.htmlUT Ž–,C–,CUxèè•WmoÛ6þÎ_A¤@·²SE1l®$MšbI]¤.†}hé,q¥H•¤b»¿~w$%ËrVl’Xâ½>÷Ü=¿]Ýß-ؼQ,æ^z‹O•ÐÞÔü“598'u9?'óó ÇØürùîO~ùþjy·|xûì&ü ™ þñâþúíYM4½…3Ô½X̯®?®®‚àíÃõÍÛ³Ü;Yÿ•íA{7­|­ÎWé‘Tø±èlö:=ª4VVµ;[|iþ£àså£ß'ÅßDñµÈ¿–Ö´ºÿ¼DͲӱQR±”ë}軟'ù.›äÇÖŒ?1â™ØNðœòLà¨fÐ8ž ²Œ˜ÔkbS,)R)àulòºU^6Jæ±7·•Ì+ǨGêB‘¾ ae°ƒßpQ2>9ÄÖÆW!¼]lg¦Ç}|–(ò;E‚­ØX@ÄóaÁxIÑycñã6rúª£ZnĦ‡Tª}ÆF•¥ÇÞ:ÿëÇSe¤jÇt´º 8ìDݨ`7¨2êT' °]O®‘¤$‡m¹—Á]"Røm »–è "Yj±§šQ0XóNe(%Sþ. Šàpƒw]âÁPÇÜÝ,ÛÏ^ô‰tÛ½Êö¯ÙB·,ûn¹‘Öùl0ÆÍÙχCK²QK—úÂG”B±ÙS|+•â•À™ºªsçôÀÙVK4'mŽpç@˜P}ÌíeöòÉ~ ¸°aЄcÒ§ÎWZÚl1w„'ú;4tÔ:Ê j?B(Q uØÀãì´³áÙ4 4”‚öL$H©`XW¶•H\{Í`Òì&b'MƒešG˜HÑG«$à–7i¸4Æ…Í– qòÁŒP<v Õ$X\·!%”7š€„‹#ª[Dë„2 Å6ÌDù(…¢„úNõJìÐÔ4;‡l¨ÐÓ€/S–wìUôÅŸH¸ÏbǦâEÓ,åˆa–aä v#™˜E¨¦hëöï'ñ Ї*ð¯wèêQx¼0àôO~Ðé}:(«"ô+Nª†oZ‹g–nŠS¾¤7[é {r °ÿ…åH ‚ b]º¡· 7. Ûì+–úà1ìkÔÝ62®8 GƒY¬Í#Œ¦k5@žl|šŸÉl̘ìÐþ!ŒŽ‹c8XŸz\ÅGx‹ÜãZîûoyD=zÏF÷™Œ¶¬F×L S$oôo[r„ûáÜuTÿÖJ$õoÄ´‰ógZ°c8Ò‡ñg?Úáx[<ÉFk)Ts!p1´cE# l»¾ÒiŒ9#ŒA@:jƽ‹¸Ž.ó®mc}D GÓÍò#~›8§ïsø/~üPK}‚13§U‹E«@ ctsim116.htmlUT Ž–,C–,CUxèè…WïoÛ6ýοâ[‹ºÚmè°¹œÔY†ÅM8(öi`$ÚâB‰IÙuÿú=’úmw à$ïŽwï=ÞQ³ëõêfÎf™àé|æ¤Sb~Á“ç­ÑU‘Òщ°VÛÙy\œSÆf·ÿ¦‹?.oonï?¼¸ ?ˆ´ O‹ÕòÃÙS¥lƒœÁ}1Ÿ].?­—÷Áöú~yõá,qVæÿ$ºp¢pvš¹\Í/ë¯Þ…†¦oßþŒ^pµÕFf¹=›?–' ‰†eÆ §ó~*?(÷»ÿœt{Ýœ.eòþŒ·0Þ6Æçu³ë{Äõ»oa†Ôü/q Ô“ˆÒ×s1Ÿ]Çõz¾ª€Í @ xÔ-^édÂY‘8© ;Z_a¾Tòz¿Áê½xü §D§¢[ÝÍÙ:¶X?È<,ÑÖð2‹ÛeB)JxAºôûr¥T ³Ñ&§ŽXÖÁ9«¬°ë²Äñ¯ÖÊÿ&ždRìÖ¤e›ªHâÒ¦ôèCQî!)•hÜ'ä„ÉEÊfËÕ<á…GB~zoÇ)8ý›¯töxã¹ùsNË/"©œ NJ[—P£J*Å}$ ì(zõÑ>“! q„9—…e|Ç¥âO°6¾èiÜiQAm<èƦéTxºô¦«1 )ê ¤ªÎÒËË»Çí+Ÿgöç™ԎñˇÕÝ+ð›—(Ì`÷s_®¯ûs&Š~1=§È*IR™B¤„/Hï=F ‚$SEðB&„íÚÝ<â9P* ôа »V Ãè×™*ð=!Ã-"ȯ<~ÅîÈïßZæ“qнæ¶äû‚qò2è·‡ {ì¤Õ&¨¡VÍ”ÖÙv±~îÙ,X‚ƒuh¹tº”¨ã½ìb¼š ֋ ,r–„p{(3ÈÅë<Íl .Qó†'‚am\ãÓFAÿÃSÍNËÐÚªÞx÷´9Ó½ÔŒØJ²%èI¨ í$? Þ¤ÌF¨®x³œƒ$‹$¤Ò–ŠB•"'æÁ5Û V*uù¦*a_¤zŕÕG¹±ºT'UîIx>¿Zµ¢!ÔËK¨aÍÉMȾõÂz¢4ì'Ãh¾™YÂ:œ®½Ô¢pæÃœaЉPa¡×4î‹ *iKjQñëO 2ÇD›ŒÃ×r |ÖæÑÖ±÷ü„VÐ>.µ]ÕÄÞÔ@d"Œ'®4ìQÊvJJņ£•œ>i1æqìšš·Á4»{l¦= ì|J ¾FË|½J Ûú~FOJ'ϱòÚÉÍa„ÂX(ÌŸÔÀ™¥V_5wa’ôz[ÕZ µÖ(º3myn TˆIëgÛb Â`P£'ÐjК˜äŠ!_TÄWáF³™ÈÚíÐdK#BgÊu ÝOæB°¦¥ù©ê%q×:g‡‡Næ¢;?hEièõÌÏ0‡O£xç'YØxKÃtGV§ûç”qLö†øÐk% ¸=Á<ë3fUƒø ØÙaä¦ã3Þ!ÔSõ› £D+ZtãÀâ”Ý6õ`GÍ ÅÑÕ¢>#˜Í…Ø×­Î?î÷Ç&÷üT‡©¥âÿu7TØ ½ûlûm.lˆq‘ë]]~{˜âáx,šÔ}P¬Ë¯"$Äš>~%ÃEp2¾%õ _|  wK<1ƒqŸC0ðQ£U®‚àÞbâò’ç‹ÃÊW€ ÉjüÊÐiƒ^éòõkΟˆWÀnŠõ¯X˜°árlµ±ÓFŸúȨ»Î¬A¦MOn6Æx‡Z}ÖÜŠ6M$™¾sû‰'¼¹þ°á·Ù"@ž÷¢‚—EsÑŒ¯þ+¾Œ\í»þ\?JË¿å}~uû /çþ½â‹ãPK}‚13)𓎠ctsim117.htmlUT Ž–,C–,CUxèè•SMoÛ0 ½ûW)°]Ú]mØi–,ò…Ä9ì4(2ck‘%C¢“úß²Ýfv™âH>½÷hÅót¹H¢¸@‘%1)Ò˜Œ³³0$rôñ°Û‰‡m>Šâ§õ·Ÿðô}²^¬·£›YûpûVãåt4 [)ùéÀ;ÆI<™®Òé¶MÏ·ÓÙh É«ò—´†Ð¿/¨ÔƒdÒ‡¡Þ–><|l‹nBžrgk“UÎJô^™|ì«ÿïy§ékxÿÙù¹ëìT Â!ëaãÁn ·äG ²Ï’(“ëFâ@”>ÍC¥ùm·&w(%TXY·…†>J¯B/‘æÕºgt¾d ä‚ZÛ\xÜ%x ä-wáKT‹ì*”Š!‰Cj4/~—h cÛ“m”QTcˆšÝ‹"ëö5(éŠl¬‹Æ --#y\­0F»r;tÒµäPÔA•5{œ2 @Úf­yÍA¼@ÒVäÖÿ5Êa ‹ l㇠6<`ì]ëuГ’kÊú®·=hÔÊÿ¨í+³áæMdãoðœF˜<<mÉcÅõÛ}LX4Z­¸}UkÜé8B#C„m[ðxÄ¥‰¢Ax?A‹ƒ³¡†#nØ0–Þ x¼©DH^{Ï…ÊYUÍΓqûªªõr¡óF·ý–Á.t˜{½e¶d«´}°ª Ë(^VoE5Jò¨úˆH-¡¿b3)‚t<ÎãÝîPpmŠÎ}û£thèHe&ùNpU¶&j^XŽ([×íEáĞʽn’tOßo÷+~i…×ßÚ÷âPK}‚13Â"b…í ctsim119.htmlUT Ž–,C–,CUxèè…’aKë0†¿÷W*ÜonV¯81+¬su¢Û¤î~¸\.—4=¶á¦IL¢²ïi§0dj¡ ÉyÞ‡æ$l¾^ܦkW) 2(Lïek•㶑ÂÃÿyl¸-³aGËV—¿!»š®nWÅø ïrM`9YÌÆ±¯mLô$eÓÙr=+úÒ¼˜åãX/ÛÂè€:øAZ§Ó·i¯Ñ_v”$£¾|Œ•âì$N¨pѽûàã£]ø'Á5Áõ;<|ûg6/º­Î?o Õ¢è“*¼pÂ!XÔœŽ ÜÀ >Ó¬0u‰®®«HzhM…JÊ: B³±†Æ WP¿ë•,w¨Ð 'KJ47 7 ž¹Ž.yûçäï®™@Ykâ‚Á*Œk¥®Ð"}t°»n«ß´‰eéÚqí»4Òh¸ÇÇ'Ô‚:‘m;+öx’]ÏiïÉŸ´è þëäÙNr”ôÉ©1®’šº n­ÔõÅ0_-×´Ð]Q¶·üPK}‚13³ú%Ì1  ctsim11.htmlUT –,C–,CUxèèu’]kƒ0…ïó+^,Œ 6Ýû€¥¶³ó¢­CÜÅ®Fª© Ä(ú޶ÿ~IìF]@’ÃyN<1Ò$_.¡Rð’QT¨ÃNqSiA£AÓÈ»„ÐiúòÓ×YºH³ñhî‡ O`5YÆã›V LÅ«<μ›dñ|Ø«ú³h ƒ}(±Ö›¤‹À_ôÉ#£VrƒM-´¨°÷ö|s=оÂ}ÀÎ4>»çz{„>Z´²hõƒF‡Þ4É܉“»£Ïa!ùAöÀ;eÇ·¶ % PØŠ¢ƒfãÕš÷8Ísv^ì.‹ýìšpSlÉõæj«J»M9²ÜyH UIüõöÞ IÖ GÕ˜¡…}™Þ¶Z ›Y7_øO›¾¹SEót•Ûkr÷i§áøPK}‚13í¼¢SÏ ctsim120.htmlUT Ž–,C–,CUxèè’ßkÂ0ÇßûW„ C_V”1µÖõÁ¶Òu“=Ðf5“,‰:÷×/mUVæ~Âîs÷½»Œòxޏ"¸DÐPÃÊæúU¨56Tpð@Þ6„z­z ì8p’NŸÁä>Hçi6îÍšcsù ñãpì!iqsåÚÁ Lò0kÜQÎÆna4]¿‚¾\™5sQpxÖ! ‹‡· ÔÓ•tÑ£ü¹`殾çÀѰÛ¯-\Y¸:ÂÞ¡Zeu£Ñèç¡XŸcϱ¿kC(„P%åØЃ`dKØ)í‰ö¥d{Ã¥lãÀtu¬Qôz–ø½Š•©åÏR£RR^\aʵKÊK±; ¾%ÊV"@R×Áè)AI¶´ _Ä4è'Ó`ð¡'JvR(ó«Ôbµ×´Àì¬Ð¢+´¨ÿÄ›¥In‡R/¡5íPK}‚13˜p£Û ctsim121.htmlUT Ž–,C–,CUxèè’]kƒ0†ïý!…]ÎÖõ“Å€:UÁ9Æ®†hj5bÎnöëcË,Ø­L’ä9Ï{Bü$ØSYšS%TŒzŸM%oч¢«mM#vôôŽìg'ÚG±9óÔ'«-Zkbàm™mVXVX”8n˜¸±Úöc×3q¢¬?2Þk@Ü¡®0uNÓ¾]¢‹ÅNA3Q´˜¾¶Sˆ1!z‰é]ý˜„1¼–p!áâ ë§Ž‰÷‡õñUÈ™¦ýå#6 R¬Cç]^6)0tø‘ØÃÍØñ„ëaìÚ(WÈ»:­Ê/–ÿ÷û¶WzŽÞxW]ø¡Kqè£oHYSv*ʦºµóõȹ+ç üvrÝ‹ÂD.ôÏSþ†7ý PK}‚13úKÒ-¡ ctsim122.htmlUT Ž–,C–,CUxèè­–kkÛ0†¿ûWˆ†a¦+[?Ì18·fKq½1ÆPe%“%#6ο߱¬·bÇ˽çœÇoŽcù“x6 Íiø @ò`F-pC˜Ö&Š'ËÅ@he}¯’ø^à8~1üIú7ƒÅtõ.Æå†ùB2g£^t&ØõçF„?ÍãQTNO¢Ñ¸×a`Eú‡i\ý°†Tv‚Áî²!/¥—/KÑE•÷S'ø–${'áK±_=_£x…âÕ^ìí¨ýIT<ðäê¸A8ï ,ûÓQu†¡ñ|§_oæ½xq‹ÏÇåðC¨DoÜ<ª»-†<¥9žÑü½ï¡Äñ½ñb£wñ°(ý*˲)S¥6d£Lœ'(û"‡èNªyxo]¬RñêÉÊÐl-˜%ìÁXDMè½Õò-É´…%µ)".Ý$ï&gp.)œ@ ¼e°›šñdZ(¨cËÐÐ )£…j×3ãYõÖ,BÕjŒ’¡"K£Ó7µ‘Ç9¯GŠÜ l9ŠôDÒšo)5¹©í\vvóTiØ´«ßâ$·ÿ[è×ïîwu:%–Á-ÑËò´çÿÇì‰*s'©Éôš¨5¯Ì~F¨•kÁœ<bËÀ7Óa “Ü­Àʈ6j‡†¹¦kÀQg5:Å0üš0¬à jq¿Î%”Á T­$?\ÛÛ­üÛ"Á^Q,©ðP­ÌþPK}‚13/Ó#åŠJ ctsim123.htmlUT Ž–,C–,CUxèè•“ok£@Æßû) GB%m¯-tL4ÍAªE¶…¾:ötÓ,çî†usš~úÎj ”þGü=ÏÌκdAï–‘GÖœU±ÂÖ<Ê´‘¬/¼‚RkS Å,‡ÕV•VhÕ`ÀHЋèªÈ/¯|d„ŒFñ„ÇY}<ÊâA×ÏÁ«ç\— K°§KX)ŸE›¥£mèÙùY j5÷^øì¾úÖù»ôÙ‘‚÷~ ¾ø¾FðÁ‹wp°qMG™ xÔÙ7uÈôøRÚÏGdþRæ5†èJÇÅMXJBã„E/Æ`6>q<LñJDvÄ“ãSzçìñ°7Žq‚3´Ìûä!ß']žâ1åœåJ ƒ„ö1 péÑ`N8Ö‡÷kþ6c*ÁÖVá¢%)fh§€5i,l]€Ÿì;ñÊHîâPdûõdý#aU©u¿j†FÐÏnÊÚ¡¤œæBíªjgßPÿWÐÈLƒË«(Jî ií=„,V›ŸÙ5¹Ž³w5ÿD0ØôЦq¼#\CÇ¡ùc¼PK}‚13µ¥Ò6?Á ctsim125.htmlUT Ž–,C–,CUxè襒Ûjƒ@†ï}ŠÅ@h¡Ô¦Ç”¬ ž ‚l ½*b4Ô–öí;«IˆÔ‹@Üñ›ßa©Ë})t—ÆF!‡"e–Í&¯bH 4qÕf¢)cÈEE²Ï*‘EKµ¥Zר(Ô íwb®¬Ð #}²ìz ¾£« êg‚#pTÇ \¶4¯•„l£ÝÓ®LÞ‹sÛ»/ÅοbW¶wXàuuÿ _|/»žkxþ »Í¬é(©<:ûYÝgé!æ÷£°niœ ȃÝÞLz,¾ÓkfÌ™*xÌùL¬#êꋺÃxÂtyØ ÊþMJEpDe€oñ:$ÿÙ)À@B:Yw2œ’l%¥®?)£lkån pLÜËØ(÷1^ç3\8&îel”m¼7¥~æR¬ø¬C^Òì­nï<ԉꢫ¶s§ò ¤ƒ›:í>øÒ(IŠ˜¿¬Z;'©BqéȦ±³s- ¢Ô;ÿúÑÜf_Ñ»*Ë'Q<úQŸYPK}‚13Í;¼ïÏ ctsim127.htmlUT Ž–,C–,CUxèè…‘ßkƒ0Çßý+$…=Öê`´ì «ó¡êî¡OCl°MBÍþÿæÇÝáî>ß»ÜT]}Â\YÁ ¹žÎ¥¼]¸è5 ë^).Fˆ|"ÇöxÉ[ÞžZšnJwLš,l²ºH‘–ŠûE†!/š® .\Ñ¢LÑ >Rh&ô²½êyB¦¬7­$üÆñÁA›eT¨5$yñˆ/½CøiÒ¯ö®ÂûG81ðhàñ޾ µÍVÉêLŒ;€w ü“>ò™‰…KaÚ#~*„®HÒg'-åmþšú¿Â¨l›Î8ì&Ìã÷xPK}‚13Ù¿ÄÃ' ctsim128.htmlUT Ž–,C–,CUxèè’]kƒ0†ïýÁÂpP&m/öÖÚyÑj‘n­W"ÚšˆÝöë—h ëØ`pΛóž‡|á`¿ÝŸiV,@””¬ ¢¬ÎZl+ØꆗÑ*AË/ÚD±3YC¶»(t·¾c ^Cþ07e‡K°ç‡{?ÊAì¯3-TiΙ L´wgQ•&ñ´T-èÚ:›ß¦ÉÈ™äµþ—í¦Ïjþj~ün^HóIšO³­wƒX8X\݇”†qVðYÞ”ò8o `™ ííBÇ´¯€M‡˜½OQ¢u2h„— û´¯y#ò¦ÊJø¤ZÑrúƒwL;ë4®Ó8¥GÚîüÑBž•È3é°ZCêK3Þ©SÚë(ÜËGSÏ+Ãø)¾PK}‚13µ|p˜‡ò ctsim129.htmlUT Ž–,C–,CUxèèmR]KÃ0}ϯ¸t Šhu{P4 l]çö!£âòTjW·@Û”4ûú÷Þ¤™›¸@Iï¹çž{î%tMÆŒÐu–,ÕBçJUlò¤¦~Sßf ¡ýÙ€Cÿ-˜gónkh÷`Ú›„]OËJ¤Ï+zŒá4 ç6=š‡Ã®—êZq*K•º¾_ë"÷XàBS©í'Kj5ºû¨.ÒžÏim]åúÕ|—ȇ†ü%¾r!W*©Ö¬XaÅêXá;ët47S:g+Á€HŽ±Í”†o% ˜$µÎbR-E™è¬-áSª|y¾í[E§ß«ªü4œ°t£n´JÊú›%ZÈðRbO}dœL½³ý?Óo:^šd—˺°ˆ·…(á®Í_²‡;Ý€v©vð-r$Y •¸Sâ¿Jü¨Ä"VˆŸ„øQÈaä’kôkl¿£mBÀœE\9Û¦)F(B\ŽÿÉq—3º„úƒ±™º‰¸›úÃÙ4ÂÍ™g‹WóÔPK}‚13‹â ²H ctsim12.htmlUT –,C–,CUxèèuSQkÛ0~ׯ.ŒÚ¸¥°ªÒ,YÚddÞÞ†*©¶@–Œt#ñ~ýN’Ó%kg°å»ûî»ïN[ÕOa­â²b Á¨*¨¦SX™MV¦ !ìaóù}ø2ßš1…žBïä¬o¹×)£¢¦PTßûwÀ77$|,ªîãûôöz‡Ð¡ÍZŽºÙj;^Ýþþò-[r¯¨p]oÔ~BëV É­¢½ó ¥î…rK…öÂ(ú¬`§”¥œˆÖy‰™ÁÊëNò?¡”Õu%VâBƒÂŠ%žKý+ü‹}€{ ; mŽ£óˆ9&Æ  @ªp~}y}‘‹$eøÑ¿qw¸IíÑ–›—«–Ð’c>ªCTGŸ‡,xŸ¸P~ýŸI3hÛà<ŒÛÒ ó‘RÉ\Qw¼Ñ–ûá¤È8RLyÛÌ•.F ‘cܼWzï &Q®?éÜRðÜ“(GĹØ_Š%ûÏD¹Ü¬k<äñ6à’/ÐPK}‚13.ÏWÄÈ÷ ctsim130.htmlUT Ž–,C–,CUxèè}’kkÛ0†¿çWR($òì”­ÝA.Îe¤NqÙ £Ð{õöõgŠ(^ŒÈ¤£–ô#™GRáCË:!pÏ%ÌyýdmÔÎé×Úí€ö(÷øä,½g"7'׊B%‡ŸÑ¸ö.‹m’¹Uô›ë~ݾÿPK}‚13º¼ÓÄ" ctsim13.htmlUT Ž–,C–,CUxèèmSïkÛ0ý®¿âpaÝÀqºÐŽ)†4K–A›ŒÌû°OC±/¶˜,I%Éß“”¶)Ô`¬Ó{÷îéNæËêþ®d¼CÑ”ÜK¯°tX{cù8E|1Æøíúû_¸ý1[ß­7“‹E|(u «éý|’y3Èú&£„iÉgóU5ßDt¹™/&YíìÿÕF{ÔÞïUVÎNaH×Ô›H¹:¡½éQaˆYùgxƒüñSbG ×YùNùoá}‹úåŒú•¨-QÛ'êøä›/7áÄËÏÏÍ %c¿cà@Xß!(ùA@6H§d——°³¦§½ZÚZaѬh䃳c!)! 8ô°=¯ª²9ò1} 8/ÑàNjl€lK%¬:‚7ÌaÀOM&H¦sZš‡¶ËCéÎØ&èk㡱b¯ ²ó4Çœ%ßO%œ<ÀXÙJMNáÌið÷þ*5ÇÑ$ó&ƒ‘ä#Á£æ_%„nÒæË^êÀVöèѲ×È*Eúdf‹~Îfµyož ]%ѱ-*³‡‘8H—ÔÓ¤žÅ¬ñÂSóB–·B;C˜=áÔÌ‚ÿ ã/Ö«Šîo¸èôI¿Æ#PK}‚135µ9ön| ctsim14.htmlUT –,C–,CUxèèmR]kÂ0}ﯸT¶§M-²±±XPWçƒ_¨{ØÓˆémH“’DÁýúÝT÷à°PBïùèÉá²Ùn1O#V!ÏSæ¥W˜®+®½©a+õÎ3ÖkQÄÆ«÷/LVóÕfØ™¶Œ`9ZdÃØ›FŠ×˜£”M²å.Û´èl“M‡±ðNÖßÂhÚ»nåk§“ËgÀ5õ¹¥tH °ñÍ9Xœ~67¸ÉàLn¼Äé½òoá½E}ºòu‚k–$%IÊ?IïŸÍ6áâ³Á¿fhE» ÁÑr¥ —5j'v` ð„\·R ‹Üaû$wÀ÷¤ ¬È5(d! qdìÀàG#sJ6Ô%ä Sk:4Eh­± kêÈñºQÕþѨSy#*¬Ûζæä5*]”c!5Eà8XžëRa° ¡ ßMBn:®”-Hrú Ý‹ŠšÔD—­Cw½éj¹£ËCÇyé~PK}‚13¹+vÕŽ ctsim15.htmlUT Ž–,C–,CUxèè}SÁnÛ0 ½û+ˆØ)‹×lPL5»Ish“"u; ŠÍ8dÉ“è®ùûQ¶³¤]QÆDë½ÇGJËüþ.‰Äe™R¤1y,¤1èD܇"î£H¤ë›ŸÞfë»õæúbÑ=ÌÁjv?¿ÖØïé#&ΑÍWù|Ó¡–›ù‚QäUý‹±„†üdOµ%Ù ¼†~ë dULGÉSóæòt5J>iú¾÷ ßÏ —_[1¶:bãÁ¯XnBÅËé©<žL‰Î“4¥2С«6ÚÉ@ùn¡¶ž °u£U! K¾Á‚Àî¢Ö‚Èó$ËU-bžM`a8”úóët Yl·Õ’¬óc–d]~eA­Ôú¿[E1¤Ñ8œ3ž;Ø©N¹=ôV¤iwèÐAÙºÁ{Ä›àɵ)kØ×©†q‰ÀS0–`‹P쥩°œ¼q=޶Ô$<#'Þi|Q['çc¨Ô3rGÖhJÛz°MÈÇŘÈ#Q ·M—û_;n…ì¬LÄC؇·P¤ÉbytEœö'/ÝüÇœN{æ1Q#÷u'ñ0p;¬~¨ôõµRÉUºŠðàfˆŽZ ßúŠëUÎ?Ââ¡¿†PK}‚13!ÔG„á ctsim16.htmlUT Ž–,C–,CUxèè˜koÛ6†¿óWp)¶&€ë4éŠm˜c qâ¥@ÓŽlŸZ¢-n’è’T÷×ï=$%Ë®œ¬ šZ–ÈÃsyÎE\Oo>Ù “"œr¹^ªB–VéÒŽÃÁ±ÎØàâöòO~ñÛèöãíäìÕØÿ`û9ÿt~suvàôR%'o°ã|8]}š^MüãëÉÕøì qV%ºt²t¶Ÿ¹"?ŽâWÚ·—ž¼÷k^aG"—Î&¢,¥9þ¾ü†Å?äîWúíÚòSØÔ>ÁÚÖ.êµÇÑ€Áõ„l¿~·å|elšI¾ºÎ¬ù\.8Ì­ÆY¾R.ãk¬ú"¹ž3º^f¢tºà3©Êz¦}>Í”åø7“‰¨¬äƒét8šÞ«bpŒ+.ò\¯,Á Ü)ëT"ržèb)Œ²P ;ÝJÊÒ¨Z¨ êÓT!’‹2eʽ¶ÜHøÉ:S%ŽÌéó{·ñÑ4*dl0DðD™¤ÊL3RôH8›+c$.µqΡ˜å’Ô§ÃS%ài`±ÿN"ðÔVÆè ´¼àòÁÕͰV´Þ<8ÆÍ>ŸÈB3iz\X2eb¦eؼÙX‡TåK‘¦2å³5?ù¾?¸úXil0-Í›ØÕ&xPt¢l/‘Õš>*¹ÚV³çï{‡uÜŸkDŠå²\¸,ÞFü£Ió&ÅŽÄáàÖ""B‚ƒfd•*—\¥vQ¼4P˜¢dáÍurfu^9’—WÒz°Òap1¼‹Î½l̺É}1‰øïÆ îOh¾æøŸr!;jÏ.¶Ò"•sU* ³÷/Ä“*ª¢f©^<åΤZdŽÎEÞ¤®ñ2dȼÏù >p>Yrèj=°, íóÒù¸Üå>H)/d¥R—1 Z<Ë+ƒƒô è6õ”Ét€\3ýÔc^lã§ õˆ\…CH»5\hd˜O_\že™÷t]Kƒnü wxzäÅm • k'q¢óhñ¥ÑËëàˆã‚żÜÂäy“â¨Õ•çÁÑém›ûP¬±B(|&9; =ëì/Ôü`c –w úsÑSè¥ã~>»3¶.UTÔ¾ôúœ7:‘$±´2M‰¦ ˜¹)¨î2Ïé3.3ÂBºúB¹WRÖkûübMHŠ*w›z×­“€ÞË0~¡4~pHŽ51 îçUÞãÒ.e¢|ÒQ£OK(DE†R—èQ~D9œ€ò¾@ 9ˆ„D 8™- Jš£€F+ûˆŽ ¢º-7ñ>kA×ÛÍû•òÎû'vÍÆ#¾t…,aþîÃdS›e¬+˜e»Ò˾N‡”Ÿñ»ù¥n§‡PU–Œ¬u:ª·µÁ '{L¡þÌvŒÙÖ²‘Áö•ù1ÀKÌ1sQ°¬Z”jŽZŠ~…©BÍR¡Ïï²µ ¶rs¥«ó¸í!™æîýÜ~uØ\Ÿ" Llw+°òÑs”?+î[™ýOæ÷(°Kÿù‹Pñÿ kAµíâoÀŠ ŽÇ·Ÿ¦0˜þFƒð—PK}‚13áñpé· ctsim17.htmlUT Ž–,C–,CUxèèSÛŽÓ0}÷WŒ²iÕÐEBH¸‘ºÙ–>ô¦xBnâ&F¾gíß3vÒm+D¤ø6ÇgÎÛ|Q¬–ãUÆQ¡–Ù¶'%ŒDéyÚ¯ó4¢ã›§¯ðø)ß,7»ÉÝ<~D2…õt5›$莪Ú1Íx>[³] /v³ù$)±Uæ[é,J‹í¨A£“,¦a ü ¿˜»žöm’}9þê•Æá ûáû@Øš°õ›’ùbÜ.Þ½PZd¬h$‡P5„@µ :Z¨J¡õ¨-;-PV°?/Š,/>+ÃSÁÁ;Ãð–G”U¨œAà7â¤LgÀথ­±a+ÖHU7òv-å@×sȈot‡¡@(9jÒHšÚÎ{×Ùª 6Ž`)øl•m5O©ƒ}OòKUØ0ÊC®(†öì½Ðç\‚û@ø3 N÷,ÒV‘ö>h­ÕOiCA‚€í™ÖÎKaÜ&X#]¶pw.'µÁ‰{|ýð&Ò]Ï+@Ë hKa­ô-YÖZ–Gï¾SOU¥Ó‰ÎA°RùRKð‚RúP" âß–†$ ÿ Ë«á¡è·žG$ìÙ…25´¾œ$Ag-±øó¨V‡äj†àÛФóͺ åðæ¨ëßëoPK}‚13qeU· ctsim18.htmlUT Ž–,C–,CUxèèuTakÛ0ý®_qKalP’e…Ž1ÇЦÉ2h›’y…}ª}¶µÉ’gÉM³_¿;ÅN“’‚å»§§»{OŽÉÍu,¢eG^yñ½Â5\)Y¡Ç&mƒÑ(@„ˆ.—W?áòëty½\MNæáG p{q3› ¼­U:þ8 q4Ý&³UH/V³ùdz§ª_©5wÃÒWzO»WÞ‡ÐñyÀœli? âõ1Ô§}Ôx¿Õþ ÿa?ïcÏ[¶è±£®äh±âng/çA!’!šÝÄœËv9Š€rà)+”´ž¨LucSt3‘µ \*á…Í¡.¥ñ¶r ¬Qk~v°F:bWÿ¤WÖVôØ!\n Ã\¶ÚŸ†S_¯É¡üÛJ-¼ÝA;¢Cô¾y¨ä†ª†ÖaÞêS@Wcª¤ÖÈm#𩦂*ÒLj F5Ž °}‹ ÍvZ66ðNšŒ)‰ÑW6ïy@&TÓU2„¤l‰êxçMtÌoL9HØ(Iâiò]UшV°Vax¸PÏi˜$4x*Bô~Õµ»/¦8&¦Tê´ÕÒcFÔ| ØÓ½S˜+ƒ Üeðë³ô.$Uë¸))öNšÇÆ0~¥­íZ¼hæ°Ê‡x]T²,55Ýd˩¨\‘ =©åU.é‚ á®Ü8 ’Öì)Þd[ ÒNUµuN=h²7 ªXg©ma[Ç|Ê8$n‘Äz`…(ÖÙmšˆ`wrC+:sì<Ðç•w¨ó7<4æËÛ„ÆÉŸzl¿WÿPK}‚13Jå-•Þ† ctsim19.htmlUT Ž–,C–,CUxèè}“ooÚ0ÆßûSœRi¯2(í4Mš‰ƤSšMÚ«ÉM.ä¤$ŽlÓ·ßÙ–V¨ˆ¾üîÉs¹ÌV÷‰ª"‘Ž\ÉC®Z¸#Õ C#‡}Q"„œnîþÂôÇls¿IÇW‹ðb… ¬'«ù8rº£|tqÇ$‘³ù:›§áò2/ÆQî,5ÿrÝ:lT®©£dv\úx‹Ž¾檗½Ž’ßÝ%êÛ9u%Ÿj÷Ý.°7×çìf·ÌnOìðhY.S?íòö}\bz€Kµ«] ®B`÷dä|•<>Cñ‚sÈ‚e‘‹,´¸ïÐPÃMª†ng:mÑÆ@u€GdmKF=ÖN‡Vðoƒ øvFÔÊlÑ€6`U×ü×UŒx+—= «v¶7ËéçØ9¡Ë}£é@Æ¡øö ¡ ±9ߎ½““l,W›xF¯}º ú‰m>W”W°ÿlÔÁzÿ|k6›;,x Â÷pŠÔú¥õGËŸ”SþAÆð§€=í¼îŽGÏvÁˉ’ãà08•‚Ze}èÔnã—`ÞÍ\kY–Œä¿âgù\£µ}Ô¯=1ô<ë÷5wÂÒ¶¥’¸Â¾Œ£RñÁÈ_þ< ›uÆsø§ˆúÇï?PK}‚13ÁÁ´ ctsim1.htmlUT –,C–,CUxèè}TaoÚ0ýž_q¢R»I´tì˦¥H&qˆÕÄÎãÓÀ€% QbZõßïlÚµª!…ÄwïÞÝ{v¦*ÏFA¸ÓÕzZc÷zÕÍSk¶; ÇÚš•çx8ð¨ Ç"^Àx‰LÈ»‹Äÿ„'9½ëÙº1«ÛQQ®¨ôÙTÒä®·²9ü^ÕG«¶»ÙÙþ‡=ÏKWÿ‡NºÜÛîú=ô¨ ?—Þèr‹(¼Î¼ƒçaÂT:éð­ Âb¼f>­>×ïß¾^oo‡p¯Ìòu§KÝnû¸Šo\M¡Ûƒé:SÁÖpêtVHÓ‡C½6¼WÇ5¬Mg[³¦rcнÉ8£g.¾Ê‚FŒd~JÔ}ýsÌ$”k ^ÒŸSÌ b’“ -ßë2p‹—Ü<%ª8‰´eš)'=‘"‡L”¾têl‰‰"®:ŽѽyJi.Æ…ÏоØáÝ&¡Ð’½x’<7ëûÝ܃(!&Fļd¥ëïlÇ r£'¨‰£<ôßo‰çÇ™œ‚J´&'<¢çÎx&^·÷ßÐA"¸Âïˆûààíü±úPK}‚13KzÖCÆ ctsim20.htmlUT Ž–,C–,CUxèèmSïoÓ0ýî¿â”I°I%¡ !ÒH]iè‡þ@U@ð Ý7±äØÅvºõ¿çìdÐŽEjš»{yw÷ž“.‹õ*ciñÊR'œäY®K”°âªvMšô¹4 ÆÒ»íçŸp÷e¾]mwÓ«<\D0ƒÍl½˜FND9~ѳ,/6ÅbÊËÝ"ŸF¥³¢ýUjå¸r6n\+£l>„þ¸„Ž?ÌUOû6ʾ^B}ùß ØÉøûž°5aë'l2Œœ.w~Ûåí39(ÁXÑpHëlJr(QbÄ|:ž…GÈJX‡ªä ÷!þñÆà ¬î 圹’öç†ÌG‡•Óm ¾Ñy JË ƒNè¡ãnh9´8 þ@õJt6†ü’€QTv¯ˆÇ;ê zZÛ“Á®¿WÀäaàþ§Ì׌åÚÀ JÉ%Ô\·ÜZ©D¥„ªGa†‹¹+Í­zí EG{Æl©ø‘›¡ D5)ð?\óßBq4€ª¢ªi~s3 b=7¢×%Ì ¶Ñ¬àž÷ª9H‹"›¤ Ý·ÚpFàQ Ã8±G:$1¬© Ã|G”]ðNrë EXÆ= éyhNVPyÑ´µâ^ò0¬ ž %Öº³Þé~'?õ£?l8BYQý=~¡``%Ôà&ì{ÝYšäÛMAføÏþúÏ÷PK}‚13šî¾8È{ ctsim21.htmlUT Ž–,C–,CUxèè…SÛŽÓ0}÷WŒ²ÒÒÒlËå7R·ÛÒ‡^PxBC2›Xrì(v ýûç»PD¤\Ï™3gŽc¹ÉvÛDÈŠ°H¤W^S²$ã©}}Ožro[Ø’)}%ã•qÇBÞî¿ÂÝÇåa{HçWëî`©ì»Õ<ò¶Qùô]Ä‹D.Wûl•vð&]­çQå–{ï&•¯u”,‡×PÏ©Ó÷窗½’ÏÍÖìö)ëm”\kÿ!œ—¸³ž[’­É·ç[ÔšØÆuÉEåXÞå& coÞü3!†„È*¹Ú%yO*F’H ݈@XÏÊçšB9&'xhmÝ}éÀ>ˆðÖTh|@ìs°/»`ÛâyÙ/ÆŸ€Û9ò€ZôÊnÒÁΠxRôƒñBÝäDŽ:?jôT°jø1Â:¡±ææðòK1Ì^ÁO:ýÎõS"Ö,8æã‚€ËÑeÊ›'ÿe °äÌ 5z†'b'ÔG Éhr![4 ³,™Ê˜¯aþ¦:;Å®õTÝXçÔwM€¦ÅÁÔXÚ#WZQá‰û_ˆ”qª 1ÿ0f—X¡½SÛ8 £q ñú°Ïxà°cøÖï¹GPK}‚13»rÌ•÷¬ ctsim22.htmlUT Ž–,C–,CUxèèuS]›0|÷¯Xå¤>E ôtOurir©tIN÷ЧÊ,Lí%Qúë»’k«ñ!Ö3³³–›tûšY¡ÊIš &oÊ)cÐÀ ÚÉ]d<,ȸ‡ !Ÿ÷_¿ÃóËrÿº?ÌÖýÁ* Ø-¶«ù¤‰í¨4aê"‘ËÕ.]zÜæ°ZÏ'y]ÿÈlCØ*ªº_þ†ÎžzÌ32lÉgªiÐM’÷öøól“mu6{š$Ÿ } ×=ì〽Ïõ ]É.˜U2«¼²âq¹9„6÷Òâªo‰H+o z‚«ô®©Lá¬ìÁŒjòÛZïõc-‚o…¸ rä>DÃ?¤•Ã!ý±‡ç8Ï–m8­ŽÌ˜ ¯ËFš¥‰sðü Â7õpÖÆ€Í²ÎEá·áÿ*^ïw)oš°Ïø1lÒßPK}‚13©l‡? ctsim23.htmlUT Ž–,C–,CUxèè•WmOãFþ¾¿bÄIUPCRh¯•Z 9N:ޤwê§Ób¯í•l¯»»Ò_ßgÖ/8ܵBâ÷ç™™Mtµ¾þ°Q®d²ˆ¼ö…Z\èe3Uyz§L©¼ÕÊEóö,šI!¢ó›‹¿èüÝòæÃÍíé›Uø¡3úxv}yzµª›¤7vݳE´¼ü¸¾¼ ‚W·—«ÓƒØ;]~Må!äf¹/‹ƒÅ²ûÈ*´-zü6ȼF¬jïbYUÊ,þ¬wŸœ´Â}4µ´²(<üPø?øo—Ò/­’7µŽ…lÙ¬—w)DW·\‡«Ÿ÷ Bˆ•±to|NêïFºRÒÒÄ)DŸT”•^›ê$>³ˆ¬²¦VL|®m2¥Ô4ÖçÓpžê†ÆZÙào*|®èéÈÊ Ý+Y:ê*O©5%IrºÊ EöbEÞàQ¢¼Š=”j3ñ¾"62Š´4‰šÊ¢S®­IšX9¤² îè1×qNÚ‘?è~ƒ³ÎF0N&ܹÑû4Ä;<"ÇM ­ ò1KKе ¸‡`X"»Õj†2÷¼Št™‘³ñéÁ@¼Y¦S&_Ï<}b`¾ƒyt¾X!˜sÎ팓æç-ƒÏÙÊœ¢ÁO[‡"!æèòz1I¶†ðHTJ%Ža¸WË"F"^%3bÃ(aqôhl‘ÐrMÃ=$ŽßT?©DHx]*®W)«&•±o¬šQ´^/–ë;]Fs¼›Rnœ>»r¬,öDÈ‹:—Ó–;}Ò•ÈO٠ǬC–Æ©PUæóîÔ=ã‚ÏÁ&Ò =áHW4“»„ætrˆ—ô0(pÚ…j°ÁIìFõ²¬µÕ1!?ÊÒ£FÃlƒŠÁÙ£~)вl,ÊvaåÚrˆ iÖAk4À“.ñ¤Øˆã“Ÿ@ct=hŒ>ÓY¥S’y|öš¡ñ×9·táôm8 ç߀ƒ1GG=@‰“Ú_p5~¶´/j\ƒ¸iID‰œþ'ˆß£À•7åŒ º6¤‹¢qGM¿Å„8„J¤èú„¡¡SÆاtgÿg~ù”l#ÞÊÃëŠG³u¦ÿÅÝ ÞV·p4ù|ܧÛ.·£@wÍ=øãߕۅ¡f.Õ ‘É{ó D0¥/Šrù ¦‚^…òLýÀ{Ô`N+{¸'ÿ»#+cK$&‡â¾Z9îÚÙתÂ1ðljS=“hT0 Ë¢Ãÿ•ÍóËaøv<  Ãð¢ßgaœß0ÛË£ÝLÅ”6¦¡ÄÀ•'žsý˜ãm®Ð–ãù/Ú%hxtDÚ3Se"ö8ðõyHr/l÷t;69ùš{å,T€ÚÑA¥›Ø» ©§ºXbìò£Áx 'ý bXFÓ-}ÍÙ™.kÚ Å}¿ ¦¾³9Æ=¹½©¿3¢G¿~w§üŽ*Ę^îÕäã~JTj×Â7\ÁöïžR¸0¹=>W˘Õš7É[^ÄèËqñPíl%ÚyÉôç+@`¹tô Õ#”‡mÔÞCfô7ñò0V {~Ïó6¶W^ô08P…ZÓÓ£vKÅÆÑd´¤–‡]ÏÊó0OŒgJ¶w!t•€¯Ýz¥Ú8ÝÅä)ÒR2FÑ»|µìÆwœ]ë®Ç¡»hý Ãe'ì:˽`ívzÉä1ÍÄ0ˆõ¿ŸSl ¶O¦âsa«¥vm.ûd–‡x&Áßüäõõ`wÁÚbì»ôÍW7×xÎß^ð¯ýöó/PK}‚13»~Þ3 ctsim24.htmlUT Ž–,C–,CUxèè•U]oÚ0}ϯ¸¢ÒT¤ Vªm H”‘ñЖ ²N{ªLâK‰Ù”ýú;”–õC[!‰Ïý8çܘh–\]Ž‚hÍY6Ь°%ÅLÒgeQò¨ß>úÑÅüëOºø6™_ÎÓØH1¦ëñÕtرªéÙ§"Æ£h2½N¦ ¿<[Lãa'µFTw©’–Kkzk[•ÑdëBè:8÷˜“‚«Š[½ËĆëàÎè{ýøw¥ýâ¾/E}l£Úæ?[[<`û{Ñlá˜? ‚ VšìšN‡ª´r }3‚›Ð(š^rdð‹¬Í€Gä<3d(eeÚ”Ìò¬G.±æ¬|¿UºÌh’I™”\û|Â>¹¸çYÀ¬/`EÅIåT1Ùä,µæ=Š’d4I–¢Šú¸ i­¶m†¥Œ ^é.$VÖkR®Uu á]~\{B²àÀR!9•\v½_5ÁÃT8€ÏICÐ=–„¤Óàt™QŸ]œò®:à8D‹ª £ÓaÇçp$z…È;OÑÑ NÓªZ¤~VÈ‚¶Â®ÿƒ Äpì¡_±!ËŽJ _ðÊ´r,i%‰ÕµV÷¢Â“rœ >PÆ€ãN ͉ákD!E. ™Å½ÎÓ£bÕ±(ºe;70Ž¡øv8ÏW;Ú È‘z]pˆš>fzÁ/$jLÃÊr×í‡Èˆß~ˆÜ5–VU='h¢H”ec¬Ùð­IH}ÛP"Òå5nûp»Á“€ÙCZjØëN7Ù±ã-UãF;!Ã7˜þK¹Õâ Þ.|¹îaõ¸äqh`Ù¬0?¶±{¹ñšó_ ³BI¼€PÇwÆVjÇ…~pZ³ zÖÊãèû¹‡}Šu÷þKo#€Ré ÄýàZ1wIÎö¯'Ø×\bQ~6µ’CôD0Ò®¿½ÿÏrz›!A<¿NЊÛññÓþWüPK}‚13T¡ÈÐ ctsim25.htmlUT Ž–,C–,CUxèè•UaoÚ0ýî_q¢Ò%:i ‘(…uR[&šiÚ§ÉuŽÄRbg¶Ó–ýúÒBš†DbìwïžßM|•Þ\',.gIì¤+1¹D‡ÂiScøîäoŒ£v)ޱøbyù.>Ï–×ËÕäd>Ä3…ÛéÍ|Òsº–â݇EL“x6¿Mç«°|µš/&=ᬬ~ ­*gG…«Ê^2Ûþô!°ŸÌIŽºBg6™|@“¸—|«áß·øVÆy/ySºOþ{{ÞbIÀÚ¤u¦NjE‘9Eæ]d´ÝJ|µò.\v‹æû¢€$¢áå6ºLƒÒbNÃ=BHiý~”®W d[:Æ%:8=é@ZàÓwRð²Ü=ESrGá÷ˆÓ4™¥w²Š#`A’ˆÕÜPá …HrØ ¥!-£Å°MÀ§ºäRY(ôãQ„É9Š¿&Ì'¡$KèŠ3Ü#€UN›óÉdU“¿jW,“œÐûgœ ctsim27.htmlUT Ž–,C–,CUxèè•RKÓ0¾ûWŒ²'ÔТu#u»-EÚmQÉ8!ãNƒc›ñdQÿ=ã¤H Áa£Dû{ÌC£7íÃ}£t‡æÐhvì±¹s„–áCxBÊë8CÒõ„êzä*¥owwŸáöýrw¿ÛϯÖã#V Ø.VóŠcröÕu%ŠE£—«m»Úðf¿ZÏ+ËÙõ_l Œó¬ãÞWÍòr,ø›úúíȹ…ÅÄRb ™i°ìb¨šÇô|Í Ï7åû—òzRNM¼îI¸§ßÜúÒŽÞìË$6oþ;4”j;—¡Gîâ$ ‘ÁDÒ©?ƒë“Ç^b0€nÛfÙ~r½®%º.þDñ| ŽE«’7!ó УÉ8ƒ?"N©Nî©Pòà9ƒÉÊXIn%†£óŒ$~_ýž(~Ãq6'yB"×rþ¬8J‰"HћƒX¼È…S);„#áƒ=KþÞÈ¥dê3#Aå$Jã/ðL,¬×»m+‹RVJ~ÓRþPK}‚13_ˆ6Îî ctsim28.htmlUT Ž–,C–,CUxèè}VmoÛ6þ®_qpåKj7éÐ-b v“¥@Þ¸öi ¥³Å•"5’²b ?~w¤dK®ÛŽ-ñx÷ÜÝs™Þ.îï¦IZ È§©—^áôF*s˜‰ìkeÍ¿˜yit:‰Ëé$'I:{üô7Ìþœ?Þ=>_¾¹ äë ®î¯/GÞT2;»ÑŽ«i:¿~X\?‡åÛçë›ËQæ,ÿÉŒö¨½¾T£é¼}ä-04=ÿlÞÐŽ +o‘~8oën4ýRÛó[Ü¡ü>šþ¢üü9f{ѳ=G¶k²]w¶“6ôö™s¿}ÿã:ÑZ’, Y¡å5‚t™²²Ò‘½Yo 8¤í¥PàñSÒ1†¿È©(Ü b¯D_rR%ú×RëL®$æm“›Ç‡aå;*}ÅkîÿPK}‚13ü×¾V ctsim29.htmlUT Ž–,C–,CUxèèT]OÛ@|÷¯X©}„ª*­±Bh*óЧêr^ì+ç;Ë·ŽáßwïB‘ÚH‰söÜÌîìøâY:¿I¢¸@‘%1)Ò˜,E-´F [V a ËÚJtN™<u˜xvDQ|¹¸ú —ß'‹›Åêâà:|˜p ·ãùôb@¶RòôxÀ;ÆI<™Þ¦ÓUx<[M¯/’œ*Ik ¹aA¥$“íÒo}èé—€9´'çƒä¾úÔMßü÷ìÙñ+ìé csÆæ=v´-9ž­|·³³ØÃ€(ºSF" l¶ …5BÕá0e2¬ éçCxPšyøþZÈGFýFIÊPDÉ0±Öd£ª—®vŠCøÁ4˜ /„c%4Ðt2 mYb-•Ðภƒµc&pïÙyGuä†Qê)zåJ_>UÚ*òÅY*<%qš&“ôN•ñˆÿA^‹ªPÒ‹¨5“E=rÏíóOÛaAøDZ”ƒäf<no¸:ß·}xHD†oE½«™âò՚NJ>:hmý¨­È"QZ“;‚²Ñ¤*½3ßÖˆ­ó½ôÍãeÂíã_´Ê·Ó-ùÛúH<"ˆl# ‰}±;‘ÉòÞQ ‰êÆ/Â툧óäî™'ÁÅJ˜ø«ÐðÓHnÓ4„«Fè#f‚þ§ Æ0IkX_l„Ò!-WZøÎ6*ã’À ¨!³ÍZ3­Àþ€»©»·FúèØ&/CzŒ­JEÎWîhšrÍ!ç6Cw‚úD÷)ÛÙÞCßm)_û™FïÎÔ,C§rÃ<K?Ï'@êÆQ'»³aÐ]Æ y‹[ÅÁÜÛròù•yžïåÄ)ˆª¯£QÛ¶Ã5Ú¶ÑC[çƒä²[I-\wòô|Ÿ$ÇßרFÇós!1Q<º^ܦ|¸ùc/ÝqúPK}‚13øbÌ% ctsim2.htmlUT –,C–,CUxèè}SMoÛ0 ½ûW)°]{Y/ªÈg¬µ‹Ô=ìT(²jµ%Á’[äßR²aè‚ 0l“ï‘ï+êû»O•ï»I¾:ÿ üúd/€f1y;™äŸ:ž Èër·.žwe½¯ÖO«zW•Äi‰ÓþædgݬØÇÅ× c¡`F¾ã~ðãTºNY¶ÌÙ’Xðh¥@ÞW\¿:ðÖCðb¶<Œu›X3x4:‚¼B=×#ïÒ? ÅpçÐyÙBB#ßdglæ%au¯êGìYF_ðŽ^Eo • Jv(H\kê:…ÃØÂ Cs7®°\(éRöc·ü@Bë 9  q§Ôgv<„ò'F'ÂôvŒjMoÚ[uÔÎâpv€š”‘œ79¸ ðƒÔÉìû·ëô¯.q TJ ]wKQô¡ÇèdtH“ÆlU‡…M,Ÿ4Ä¡~líÆÃ²mUÖ´¸aÃéuº¿PK}‚13€S:I@ ctsim30.htmlUT Ž–,C–,CUxèèmTÁŽÚ0½û+F¬ÔÓ {éª!K¡v—Ц‡ž*oâ$Ó&vjO@Hûñ; ‚ØoÞ{ó²M²R;îµ>öA†òË :ì; ¤JÅEé-Q©³!œ#$q@È:CLŒ¼¤ÏùµÇ.„Ò´Ey"æl<­§,p¯º£v¥´âQ¹…{æ•ü”ª{p-«"´UŽéH˽¿‘DN“׳6õ ž´Ä‚SÃé£r>, óÕ»ïªêöäìª[? º ·_ ±HⲕԻï„àBèjŒJéÄ0w=U7²~j imcœ q‰h²Þ¾&|Aø«„º‹èPK}‚13èäRê2' ctsim31.htmlUT Ž–,C–,CUxèè’Án!†ï<Á¤Þܺ^ÚIԮ݃ºÍÆ6é©¡8®´»@}þjj%!æû†h¹^.¢;àF½ô-°)_ÆêO^j…õoeëÁÂÿ;šiš%-BtZ=¾áéÓ¬ZTõ¸7O#XOðj²,ÆÄk#Ež“ ˜0:+Vë¢Ná².æc"¼“Ý»Ðʃòn°ó]KØì´üÍïÓK¶Ã{Â^Ìjt{AåCÂnZÿç56?²!ÆËŽ7 tg¸… k‚®9ë²Sú´¬ãËËÑ¿‹P„þÀÒa¿ƒÈ p.j‰ë€[©š~?…Î^è ëص!Må¼Ý‡€jpJ|€_ƒÞ;ÜÂÚèŠd(¦5ºåéVÁþì ¹•°Ðçø–l^­Ö¡G±›a9þoPK}‚13Æ„u Mv ctsim32.htmlUT Ž–,C–,CUxèèuTÑnÚ0}ÏW\QiOQéž67Raé@‚2ÑôaªªÉ$bͱ3Ûi˾~÷:”ŽŽEŠâØçßs|1-ó,5Ê*AÙ¬‘[„‰mZé”·F¤ý¼H#*IÄxùå;Œ¿N–óåêêì&^$r ·×‹üjPZSbë”QľÎÄ$¿-òU„NWù AƒWÍ"4ÁëÐèA6Ù¿2Ž¡#ä,ØV•£AvßžÀ\^ü "Ô>ó} {Ùcã !·„ܾ"Ó}¹bºb×Óщhh2Iâ´‡RX#ì-Wàƒ ÊUJ­wC(j‡ Jß9lØà!uÙi°JÖ;E‘MŠ;Õˆ”FÌà ù lœm ÔÈò¦’®:–ì<í¼Þ%St4oŸÄ7Šþ~Îfæ³LŒ³J¤ãŒ×ÁX‚kõ›ÈÎÚÀšü¯.©ïUоòÝ)~¤Êµ·º ø.¸ÏÖù@!øÑ`ŸÐ‘/²¼ÀH¤4‚V½ fK’äRvÄÖHË¿ ˜c«p£ Õ¥  Ê” ³Ý¶†a23'1«çÐËØ@‡ÊI·µ4R}îhÑQ\W27Ùcèhà&É7O_ú“Ô™Û@;„\–5¥úNª 2ñ”'¯4PÌù˜!ÌÞL<˜tô·zhxÔï…´t$EŸÒž ¡£!Rä…¼ o‘*BjÑ·7tœÔ‘}€¾¶Ï†ã‹Y8’„Ê–'ÜB%¾kÚd‰ôfy[ÐÇÏ¿ zô¿›?PK}‚13Òk¾ ctsim33.htmlUT Ž–,C–,CUxèè…”ko›0†¿ó+¬TÚ§.l¹tÙF‘š›Ú\JMûT9į6Fæd4ÿ~¾¤R#Š„Àø}Þóú`fxñzAFÉ> €§!Î(š*Rd,!mKªÐ<ª$¡ï4o Ï F«»ßh4V«øöjbm8DËáb|ÛJ d¢¥õÃ0ˆÆK<Žíä,OΓO‰Ôî9”í o…ÑyhÔ,ÝDÝŽ½ÒÚ„ÀIi"EAm…Ÿ8ü4ç%®ç8K:]­Mµ6}ÕúçôÁ,6Ëžu>è“hÆa„7L¾¾C¬D ¡ô *3Ê9:HeŸ[%*”üCh#œi½SKZzFò9(~ø~UUíê¥bù^Ve[ª´V/¿ÜÐææl§ˆ:™^¢dY~.8=È6ØŽq'Sî}2àUÅ)ªdÞ‚yt.s}1T Ï.Îß› ׈ä{ï’R4ØÁéæÖFÿ†æ™’¹°¯>X›Æ6¿º`n€(`yŠÎý¹=8ŠßÓ}GÏïfOÛyt¿ÁÃ[“Ç#Kž‘µjt¸©×ïYtÂtÇð© eÙûZ'¿[rÊåN/zAó#Фºqýúê»ë±ÎHRX“fxPƒ{_,<7ŸÌÇè·~ íw\]·y™Ì?æõ®õÝÚ×\ÂEÒŸ¬–X?0¿}q¿­PK}‚139‘â´ ctsim34.htmlUT Ž–,C–,CUxèè…R]o›@|çW¬ˆÔ§¤X}êÉ&¸DícEQUEg8àÚû@°$âßw쇦‘‚tâövfwvîXšoï#5‚—C‰JDäJSCœ¤fá|Ê ãyl½¿}‚õ·x¿Ï–W›é£+Ø­¶ÉÒGÛÊâfác±8ÙåI6¥Ó,Ù,ý{©Ÿ kP샵ò£ø: ü ],&ÌÕøÑ±ýóIáW·ÞC~™‘w·éóã]üý¯²œ(5Qê %<«fiæNoþó„Žœѱçµ`á:b‘,Ï£© ü¬¤= Û Á/RÒ¡žì7 Í‹ý#&ι(íà4‚Ä^¨ ¬lVknJPÒˆk°ñ 5”¸=3è“èÀVpî×p„‘¼rƒoK“> ÕeÁ•gioPž“æÐvö·(P’Ž©ø5HMÃ^‚¶¡V_B'±Uç8pƒî leÑÙÞVÒ”öµ' ÇÊvš(n:òª%<’àÑ |ßÙ{/’O–lçË`!í@ 3À`J2á’}èlÝqÝÏ€~8}v I‘ÇÂÍ~G׺7L¿ùõÿPK}‚13½¯ê¢ ctsim35.htmlUT Ž–,C–,CUxèè½VßOãF~÷_1ÍI½pÚãÔ‡ÖXJrРá‚©tO§‰=‰÷°½Ñî8Á÷×wvíà$… ©j‘Pbg~|ß73;M“›ë8ˆrÂ,ŽXqAñçZ¥pÏh8¶¯¢¡7‚h<ûôÆ¿Of׳ùù»Kÿ'þ#¸Ý\œ®>M¿~~¸šüqŸŒæÉ@Gq4¹¸M.æÞj:¿¸<¤lUù5ÕSÅ6̹,ñ¤{t.phzvæmÞù‡Aü°~ÉæckÃz­ÒgƒøÇ‚sÿ/Ùþ²oûQlWb»ÚÙ;ÀÑtî(O?J"ÏAäK´L–a‹ °†uÍ%IU H¥7dXU+Q–FÞbÐÍh©*Õj".BÊì²fmà¾èJѹÖÛÀæzëüÚ· ½‚…~Ú#ó§¢­0Õ¬H<ø`Žˆ.E’ t¦‡cÐ!xæ[URJV¥Xxåº×*nÀ¦(*,µ 6’Ù‘v¿[½äSVÖÖ<£*ì‘R!ÜSA)?ª$áÓ*•Ñ #Jg‚eùD“I j›i‰)kã":ϟŸ½Û‹%•oß$xÙ7êñ·ž:C&ª.|#8ãTEÞ¡y:5Ø2¾^Cx­†0Ê2ßXÍ 4ÿVÙÜ ×FrT£—Lé\7‚Zæ“SïàÁ€ r…Ù!Ïö„š“´«eS·NA†R¤—>cú¸~ŽÿFíz‡:Èô¹ž‡(ðóqèjC˜UÂW¨ª^ˆ7 ù¯‡¡Çù?̃9¨À;#é­æ»?tu¹FCp娽u2öN‰Ýh¼¦ÎÂ8êõZŽ·¾2ÚG÷ZÔé†ÇPVW»ƒoü¡.]"Α}C|«e•˜‘S°°lï;¸ÁG×Ë¥´²k%ï=Òœd³ùa“ñ|/8źÏ®Š>G¦œ´âTÚÚPéötŸ}/¢½\ â-ѱbÁN1è…ºwEljP”ý©ø‡h8Žý1’ã†ZƲNE<é âhÇÚÎáVaÜÀM³kEQå|#Ów`Ò9 úA<ñ`Z/‡¨Ê wκJÖnZ„¡^\ç ГX)¯^x|UðJæh¥„UZPØ([cÑÁ¼Þ®]­´ÔR6¯TÂöõ/å8,µ´0.´ÜEdñÊ~Îv,%®U‡îÎݹ{Çðrv›È%ÍÝê䣽 þPK}‚13c¦ Å+ ctsim36.htmlUT Ž–,C–,CUxèè}’]kƒ0†ïý’Â.—ѵc1 V§¬Õ.K/vUÄu¨‘ynöï“ìV „ðžó>ÉÉIHÄ÷;j‘RdŸ”@µ aU ›ÿt¢'ØDÖyË"^ºý°½?ݥ̙…z(ܵw8dWåó%R„K‰$<`:± tP}ÕœrÙ‚h¡¿/¡©õÏr@ìkëb¡=3-=v·<+㉷Ñéíû¯ïÜeÑ»ž‡y YÄT»RÞBy‹‹Ÿë&®ͯ:¢¤ECbzOâÑC™µ ‚=ÓýÇ6cìQcq“bzCksÖ·ü9T²"—crcÈZ‡iÂU`xmµ˜?ò PK}‚13d!ébb ctsim37.htmlUT Ž–,C–,CUxèè’QOÂ0Çßû).#ñI!‚Ë’1Á‘#0Œ!flkë\èÇ÷ºAãƒK–]{¿ÿýo×Ê šM]!3ŒSW’¢ÝE¤÷²Ó,e§N !‡áÃ3 ýp.­qý°Öƒ¹7 Ò¥Jº·+•ÿ¡.rº·ï_ìÝO¶ÏìŽÙ݉í[–ÁÒþmÐûžÇB Ѩ ä:NU±ƒ²ÉÂVå¼»­8¤ !Uæí²Ž¬öqñr½†¸HÅ*ò¼šêou×'µ¸BØTNWªÒ £Èõ£•b[ŽÚ°8³Iâ6(*>’Æ’KÃG¥ˆÇhÕ§~묋!]a l£ÌQx+2­æF© ~`ª˜e Â÷ƒ²Ò"aOÂÚÏÖÉ`S½-vbq8øôí=áOsµ¾PK}‚138…ÇÊ ctsim38.htmlUT Ž–,C–,CUxèèuSÛŠÛ0}×W ^èS.°»Ý¥Ô1dÓ¤)ì&%u)}*²=‰²d¤I6î×w$'4¡[e]Î9sf$¥Ëüå9i²ÊRR¤1ûÒȦã~’Žã–éÓúÓOxú<[?¯7“›ElÌœÂjú2Ÿ$d[UÞ>$̘fél¾Ê相½ÜÌ“¤$¯š_¥5„†ü¨¦F'Ùì4 ¸†Þ=DÌM/{ŸdßÛ·P—¨÷IöNÓÇð½…ýp‰}d쎱»3v|²œ.7!Ûåݹ<"Ža«4zIHeàvX©WÖH Ò9Ùy Zx²á~XtÄ$m%)³­U†à õý¢¢?KJ*ªÑCÖ³Ž5­Æã0Rª‘È;v.µîÀ=¨^Ar¨À8Á%¶[8!¢§Zc ­³%zÏТƒ…Ý;Å1ÉIã™Ó°µ©‡Îî¡Q»šX®Å’âÚÌepzU%÷5‚W¿ìöÊN^–j}‚Òô›ÊH×Å\­áË™E6Ô#Ö±ÁšmÿßÀAá+¯XÓ›(g9à©îâBˆ&þê+•ò­–K§_3ñÏIpëOPš̾)¸>œá‘@Ë5×(Íól–SM:æì=çÈÁ<ž±þKë*>{¨UPì@™Pc¾lÖáNÆÝ@vÝ/‡º4¶R[>ë°àCì>ÛhW¤ãÅz•ó; /’ýþPK}‚13!,žwXN ctsim39.htmlUT Ž–,C–,CUxèèmR]kÂ0}ﯸTØ›vLqÂbA]ÚJq{±MmF›”äêðßï¦u¨` ÜÜ{Ï99ù`«Ýfz¬<J¬D¸5úGd(µbAWaAÛ÷<6OÞ¿`þ±HÖI:í-ÛAôijM4õQ72{yõ‰1 Ù"ŠwQÚ¶Wi´œúZYgZ¡Ph%Ö•..©£À=t8n1½Nv䇟Í#Ôä5öç ßÜ|€=ßb'„=öð .–Ù*u§] ï.ƒRÏ» •°À€ÌŽ"‡Âèš’+¤ØµO’–Âk®ÝÊ´¿d#›{À^3Ûd3¾«Ð ­~ö¹ŽMX¡¤$·Ìé0ŠÍŽé–‘[­l€GŽŽ¡Qói>âÂ%_ìZb›:”ýibüAÄJó ¤ÐC&Ö¯.µ²8L6ñBƒZó´xÌZ{ŽÕ–Šêãð4*xÕÛçT^– RAv!03–²†ÆµÈTApt =¸ã Ö›~ÀÇËí¦äYŽ¿{~õÿ¿PK}‚13;.Qì? ctsim40.htmlUT Ž–,C–,CUxèèm‘]kƒ0†ïý »›²µl+KÖÙYhk±îbW#Õ¨aj$9eôß/Ñ:h äMòœogÛ uHÍYA l8Ý7‰?jâ?ŽC–ÉÛ',ßÃd“¤‹ÉjXÆ0€]°.Ê^ä/®±( £]¥ÃwœF«…›£íW.;äj¯Æ¶qix¹ZøNŸf2º¹ô£¿Eͯ©g—Þ5øj÷ vöpÍÎ [¶úcýKÊ$NmµñôÒ#ÇJ(EÃ50Å!Wœ!/àx’e4Ì¢%¾QPœ”è*`kÎZh%ˆ–U|4öœ¬ægÈYGÆI¥’­Á øQM3%`Í¡úÛƒ·5Je2 Á!\¯1—R*àLJj}ß7 ÍS úÔ÷Ráà—MJÙÛ²üU²Ë̈ì0Í1ÿPK}‚13ÑÉåðµ· ctsim41.htmlUT Ž–,C–,CUxèè”Ûn£0†ïyŠ•z×ÒBÒƒÖA!R8,a/ö*¢Ä ¨ÆFà´¯¿²+'›µ ¡aþïÏŒÂ<ÚØªp±·¯9Áöа·‚@„é<Ö4Ý÷ȘrÈ•š†ÜdùÜ•—l’lqŒ—0r v"¡sÖÖ¥ùª ±‘çǹŸé0óƒ…^ò¾nv%£SÞßW¼!ºíÂs©eš›1ÐííÍìaÒL¥_tû–ðoÃ}MkNÚõ2Ü-7«]:qžD‚9æð›1N Ga6ôšÿŽHhZ^áÃa”§†¶ÊQà†FÀ=°w(¯šîÙWÒ¡Âÿ-¹vP wàu¸àÒª œ5Èp§y»ÙßfÖ¹Y°ÞˆÎ®x‰ˆãNi5;·ZGi’å²ÕºiYÇ•ó‹ÞDÊÏüØó·²QÚáwÜaZâ^éö$m½õ ;$-¦JôYFet[|b%ú"£æÙ, ëÕì«ÌZ—eÁQö;—?uk6Ò!&íPùÏO¤Àe|.ãyݪQSFŸdôû±.?`Ë õÎÏ-ÙáYvpÞØñ’5‚$ÎÅ‹á¼é¼úPK}‚13‰ûó ctsim42.htmlUT Ž–,C–,CUxèè•T]kÛ0}÷¯¸¤Ð§5^Ú½lU ΧNRu0ʪ}cdËØjÓþû]ÉI»ŒndÄ’uÎ=Ç÷\‡E|“(²€™Â( f…B¸‚qƒÂ ¬¥¨Œ.™ß2ßA=’ÉÍÇIœl†3÷¡J!¬ÂåtØ[L¢í$žo×Q¸âɲGÌ0`ãéŠO7m¦³a/5mQnS]¬LÛ—¦T½`|ØZ œB¿ æÂèºH¯¿ö‚ûúÔ¥2·öûö¦Ã Ï1Y$JN”üHñÎY´±Ýü­Mtây\-¤º,E•AV´µ¯-Z ¥sxÔ/ÐJ½/ªŒD¨;rKa@4t§Á«ºÑy#Ê3¯ c`œc~W­úî 6ТÂÔØJºBÐ;[°}/ùÉ T¸RË´½ét¼„î(9VØÐ³d}àòO ïÉÞ7¶¶Màá(žÒ‚VÔ>ïa¼˜¯†<¡c6 "l¨ÌÑΟ%+N3À'Žyеrìtµ?Oˆô³ù‡Üĺ¾Šu~¶æïb¶u®\в¾Wçáú¿ÜW…úIµx†ðMÙ¥.…g¡ž\Š6ì vº±!z)½xñÙN˜îÀøŒÍë^"Í’þÇöýCt]ŽG„}£éÒý%üPK}‚13¦0^Ó)˜ ctsim43.htmlUT Ž–,C–,CUxèè¥VÛnã6}×W ¼@‘ÛI“‡¶Š_âØ€c¶¶è>´D[,(R©8^ìÇwxQlíÆ…HÂËÌáðÌ™¡Âqü4‚0£$BÍ4§Ñˆq W0()Ñp¦ivÜ^ر–AöçïÐ̧óÅý§‘ýA ÌzO÷­Épü2œ>¾Œ&ÓøaÑBÇ^f8±VãÅÃ辕hÅò—D M…VíLç¼ üÔ¸@ÓôöÚÚ|Ò²`ÉÍo­èKñ‘Õ³ªcx÷fñü©ýÂõæ÷#ŸÛ¦Ïäéy¾ˆÑeƒ.›Ú¥ãoކƒñ¯GÈ ˆ3¦ ‘yND )S';‡„Ë ¬ä¨Ln™Ø€Î(%½*J¹)IžÓÖJr aGƒxÉò°ƒ£64€·ŒsHÜñn®R–S¡˜„ËɆ"|E9Mô;r㣠Ѵ¬MÜ :Ñv¡¹máÚásd\UmŽ¡+êƒH cÍJDW%†±.é?ÉR™Ü–åÞˆ‰WÄ *ˆFb¼‰=%ã^ú€!éñþìM'³ûxŽÛa?ªùîã¬3šÏbÔY<´žMÛ¥½¼:¼¥–°¡‚–³¡Ù{%Œ“ß_Œ”ôwHøej0§“¾o¿Cyç,gz¿4Ƥa"„h, ¤b‚îçK&7[f´(Üðä½M¿}ˆ—Œˆ ÇYÇFÜ ÿ,þƒÊ¡åý *)C2K˨è¨N²©I±Y]º¬º5ŸZKvMqF^©Á~ Q?Èèн©£X¹Ò8Bùù¸ÀN³„p¾3Ñ´\ËÒ’ˆrõªƒ‘¬JfnQ¡Ì>ÂJÑ>‡¸¿0Mßè Äͪ|åŠ)‘¼Ê…òE²ÒE¥}ysô×ó.åöÿŸëÕÏ›=­]×*j éß•ò©r)uf}§©åîKÕô9Ód0IØÏ֥̭¸ºNVXÈfvíºcÐÓØÕÚãí÷.±š Ãò’ƒU]…ï­ò#Ìnûîö,غl±ã§r{á¦/lYª³“êSï¯ašíýÈÁßkOk¼½7¼à¨ŸÏ°Ä";E…ï‘)ãXnWÇ€µ¡ €®IŵãÕ.›7¨ÀÌðMÕD$Æ öF¹rÚ8örì$C ¹'oðJxE/A jõ…6y¶Ñ9»Œ0lúFò‚£'[ÿTI&õVs]§:XíšsªµÎ*u,\ÿ ׋»îå]÷ó^mØLÀwæ2hWH&´?ÈX»³¶²â©yœïºP ¦2äog("EáQ…ų¹V.Ƕµ¯§ÿëÀtöÄû¡Ö)5Þtú9%áž~¸pÔŸ.Â'T+8£ê0sÍ ̘•Ée%>Ф7ˈùœËÉË«<°Zj6œ“J­¶0ÔøÏ}ÿ PK}‚13¹:†ôŸÚ ctsim44.htmlUT Ž–,C–,CUxèèmRÁŽ›0½ó#Vê© ÚÝöPÕAÊH –zмÄ·ÆŽl·(߱êÊj‘öðÞ›™7CŠn¿K22zLˆåV°$ç‚Á=”ÓYiKâkÄä¹Þü„çmZïêvu—ûÖP­÷Ù*,7Åa³ÛÊ}S·]ˆÄuBÒ¬ê²Ö£Š6ËWao Ÿ½’–Ik¢ÑN"LÒåê(p ýòà1wVyÿø-L~œ?B=]Qo5äåÓ†É'a¿»÷#Ê×[Jƒ¿²6«Òìyò†7^¼tAŠÖùP<½w #AÐÜ@¯¦‰Ê#P!ÔlÀŽ ¸q9€:Tòžt]’v/|"1žàä´NJOÔàÒªà¸@Óì¯x'ïÕvX¸3^hœ—BhÀ':0Ÿbæò¨æR%”ÿÏÁüeÚ²# mÐôbz*Xå ¨¯gS¦õR€à¯šê ÌÔàYþf.*Ù.ê2\I×îm'ŸôC:ôT¢GF-îÀ»g­~±Þ:W»ñMû’Hã&çuÕᢹÍÄÏu¥ÿPK}‚13™’¾ÿr ctsim45.htmlUT Ž–,C–,CUxèèÍVmoÛ6þÎ_qpõKjok1`«bÀŽÀ±Gi·O-Q‰Ôøâ—¿;RjœÄšµÀ1­;ïžçî¡’Ëôz6dI)x>Lœt•žËJÀ;¸1¢F¨LØd-É ø1–Œ“¿`|q¶˜-–§oÎÆÁ|t==í]M.ï'³‹û›åô|ºœÎϦ·=Ü=&gÓy:]×K4žö2ge}Ÿiå„r¶_ººê ÏÚŸ´žº~ø%ø¼qº‘Ù¯¿÷†wÍ1¯Ñ«Käêúf±L{ß*÷‘>ǶüvøýÏè»Fßuç;h3O.—Àåû£8ácÆÒRZÈt]s•C.mSñ½ŽK^é5¬ô\ÉðªÒ[ Þ cÁi Œ®˜+¬DÉ7RÐ$i:—B…:»¬Ù¢ËšHÃd¬p'ϹÜʪê: jD÷ËÁ¹7R­Áf\)Z ŠMɕӵ%¢X¤; 9ôY(˜\Œþ[dmI‡Pá?Òˆûq´í6iA9d•¶t&Á”ëÌ×qt¿}|¬ØKð±qCÓ<îþ*VüE–ìK†qqÌhÚZç²t.R&68*q¬0>BþЇqÌ,Â[°ƒŽƒP ²€½ö°EBhÐ).êAä™ÞV[C¶Á å Ô9èH§qµÎmÊ*3‚;ñZÒ> ³ÒØ·(Ck üÃ&äûH"Q ÍŒxµ¼(æ­çUÐ:2ìœá¹›1Y7Ú8‚” ÚH±%¬¢ ìQÃqät# o›=“ÑWBw[ê-*7Î7àdó?iðV X)ª¦ðUÈ ¶¸x“¢Pö"måK¯`ų‡µÑ%ßaCÿ8mýÏՋȼÃVjíÊ= ÝY'¯í•óîÃè°†m¸ùZ‰hÁMÄ õ¯q¼1C“µ´½À÷3bDø÷+}xÊÓh1aŒGMµ½LÇb‹Ù Ô‡óA¸)ÈeÁ’\#FGã÷xš/ÒéD L¼ ™©d-]‹H{«nwí¥@<‰(^e-ML+dÈú†F+vè‹÷…>ûj Ú;ºýÕ:ÑË"~ÅWÍPK}‚13ú€ãGN0 ctsim46.htmlUT Ž–,C–,CUxèèm’Qkƒ0Çßý‡…½M×ucŒ¥BkµZ.{èS±šÖ€Ynlýö»D+Trw¿ÿ?wIX·›Àaµ(ª€¡ÄF±lÜBÖ‹ŽùCŠùp¶ÌV;X®Ãl“åóIl?Ò/ ]l£¹‹ª—åìÎ%Å"`a”ò(·å$â¹[¢–í¾TеWcÛ¸A8†F—èÃÔ2k{ÿìý5êq ^WÉ~µYïߨåQFïnpÓà‹Y×tOÿÜgSbOÄžþXlŸ%¹™<™]ž ÅŽÃk©¡Tm[t(Êk(àh0-J”ªƒJ:ÁAýxA÷¢¤ i:-+ñYÈ!¬0·=ø¹̧Èx”Qyæ U êh£Á݃ú‚NˆÊAE;£­áØÛ¨§ŠÍ’µQÛ&±.Τý–º6„Ácof^?ÎRN÷hnœ~ÃCùPK}‚13ÇÎ@|!Ý ctsim47.htmlUT Ž–,C–,CUxèèm‘]KÃ0†ïû+è¶nQÌÛl­°µRë…W’µYL“bâ¶Ÿo’n°Á!¼çèDm°´Z±ã õØU§0ª¨EÕïbª‰$Q7óÛ'¸¹ÍæËáÑ8~Ò ƒY6͇)SíÌà<•ŠL«Q>+òeLO–ùx˜nÝöÙgôÜö6¼­R=:¸¡~¢g‘9ŠmϯRýXÿE]~£g©>®ø:¼¿Ø«ïì@ص°ë/¶¬&Ë0ídðkH’¬ò{ÚUð½FÃ'Àׂ T+6Biؽ ä¼¥}îW1ú5:PçwiØ”‚zbxAôI+ž…ÒÛˆ¨|ª3ûVz#ÁEƒ+lPlY—$€jväA…ÎÚW©_QƒQ‡ókð¸Kf·íö+P"*y×xéE>¨F´!U%ÕP7´­Y²n³¬H”ž ‚ºfIêÆQÀƒˆžZ„UöÇóY!gH~Ýá}PK}‚13#UçÐø ctsim49.htmlUT Ž–,C–,CUxèèm‘Qkƒ0ÇßýG {[Ýj‹ët>´Zœ{ØÓ6Õ@L -ûöKÒ k „»üþw¹hÑlÖ, ½à;FQ¢,—JÀ=|ð£€d¤á9KCÏ]Uo_°zO«uUdzÜ/["2Ùd1Asm«HM³²Éj]ÔY“G9|·F£Ð8Î{aé%tø‹.=3óe/„}nQÏWT´ ìNá«Û7ا‡kviÙβÝĆ—'Ó¢vÓÑ?Cl*¥ÌiìŒü(ufï£i´)æ-J+V˜´(ˆç¼ç}ÞÄP6‡}䀎âïH&{¥#'t’ø¶¾™:H`öå&Ÿ)ÜC´ÛæQpìÖñ!ßyrœ <ÄHóºÉ‘™–(/v‘‚ 2rI¹¯zO¯eZ¸ëÖóôÄšá¦ÊÊKU7fç´©`íE/½üÐïfk³ÛP9[ålïNÿoß DúËàßq¨ÆQÚQÖAr‡®¸wáÎ7F€ŸØ“IÐCÀ» –š:Ìå8˜ £­Åý¶]à‚`Îélð“­×è`¹øLU!ä|%’Ü„ …´–‹,6àV±Ã„gj’*-¸©Q˜xÈò X7JÐ÷L}ìÝüPK}‚13œ.¦§ä} ctsim50.htmlUT Ž–,C–,CUxèèmAkà Çï~Ї…ÝÖ°ÙÊ^„4Kæ¡MFH;HŒ èeß~Æv¬cDxþÞïéE{ÔMº*ã Ž ªìX¤ÔO³îÙ††ŽŒc^TmÑÄkÑeJ{ïôøÙ_íkåGCùï°ŒÃ_tó™UÔ>ï(?Í÷¨Ý ÅåÆ¿,û»½5²m`Ï=ÿ°ÉõÉ(šå·‚ýO$Ôi•vÐOãØÙífÓ}9ðJÂd¶Th[ãû"IʺjC KtḤþ PK}‚13_ù\ø ctsim51.htmlUT Ž–,C–,CUxèèm‘Qkƒ0Çßó)Žö¶ºÕv0v¬Óå¡Õⲇ>QÑ@4B2ƾýÛA „Ü]~ÿ#÷r±ß1‚}[5 ­´ªe¼U<‚“Áà\Â`Ámñ~„íGRìŠ2ZdórúòxŸFÔêIÖá†:EÌ0Is‘–ó5/Ó,¢µ5r8Õz´íhͲ·ƒ¢,¹¤^·èúyfsÛÕ+e_ÓjótE…kÊ”}óû»ºf_Û9¶ûgƒË“‘—~ZÞºárBD/ Ôzª±FšIU¿*VJwð#mÖá Gø6rì…`‰ø”.ZâÁ÷²"Î'ï¨;ÎñPK}‚13ž^<¹ ctsim52.htmlUT Ž–,C–,CUxèèm‘ÑNà †ïû',ñÎ5Z§1R’®¶öbkµÃ ¯ ¡¤%RÚãÛ ÝLfRçüßù.è~GÜ Öl¥U‚Bp oGÉ¿à`ÙdqxRp8sA€·Õól_ÒjWÕñ*Ÿ‡³I LöYŒì0JÝ#W‘œf%ÍêY.ê,·FöŸ|ÐVhkÖí"é9ô%ð½»™™Õl{ûˆÈû¸@m.©hƒÈ•²O~.±Ñ%ûàØÖ±íž¯Œ‹Ú¿¶ˆ›âÒA@;i€}Ït4£b?LÂ'…K²qœÆ;°tÎFê´ø†£“%ؤ½äBÀ”’”dC·[ãWz˜W%uô=wËéÇ~PK}‚13úëÐò¤ ctsim53.htmlUT Ž–,C–,CUxèèm‘ßkƒ0ÇßóWö¶Êj÷‹ët>´:\ö°§am¦“ˆI»ÑvÐB.wŸû’û3¶YS‚-¯v­°§ïz¸†h«÷ýcý‰ WÅó¬^âb]”á,–ˆ 6IèYÝ‹:¸÷\GD1Nr–”S9+“4ôjk„ü¬µ²\Y3o­ì<Ÿ®c üE—73›d}ï/P·‹3*¸óèUgŸÆ}‰]ž³ŽmÛü²þéɘ•ã´YðÏ— „µÂ@­¥¬ÔL«¿ Ø–ÃFhj/·|€±¨{>TV¨¸:ˆA+éýÈÙ›è»hޝN– Ÿ9sÖ&»ãø9?PK}‚13Üèìl( ctsim54.htmlUT Ž–,C–,CUxèè}’[kƒ0†ïý!…Ým¤ëÆbÀcu¨‘Ô]l7".Ô O˜ìf¿~ñPh]i $ß—ç}ó倂,ް†*V|a$¹¬N«¢•]bÖþ¤ÏI¤Oˆ¦!›¸ÀÞ;$"ÔÜøSSH¬Ø3¡ìz^ÏP),Œ/É<:-ÔóMXJÁ›¼ìZÉZ)*ÙÔ;K8JÀ%j³™ˆßû+Ìvaæ­wßÕòuìרí9û¢Ø£b'V_ FÏ<®oCe4”Žk·m‘Ó¡ëÙ 9S2{¾›þW>ÍÊÐ r7ÚçÔ:¨ÂOïäQ2!À= …là¿ì¦ÙîÒ,¥äÍs²$‡•š}³Rò®]W§û$ÉTb|g5ÌäPK}‚13lÐ5€$î ctsim55.htmlUT Ž–,C–,CUxèèQMk„0½û+z¬‡mK?bÀõcÜu±î¡½ˆhºbLÚÒßDw„Éä½73yƒÒj—cõ¤é0ÒT3‚£dÔ”(äÍ/È›pÇA›"zƒÍ6,ò¢ôWÉ´Œ<€}°‹}W IÛõ“kFa¼¯âr‚Ó2N|·ÕŠu+¸&\«Û^ÌÅá9´XRïï&ÎjNûèâ£üë†é»ÿâ>ÌÜ,Jë(ßÖeðjZÌÞc£:Õé¢òÎÍ£´´ÿN× [Lè8U’5? tO@^QЀì®Åß=m{ ¼eŸQÏè`ì8æ6eža(¾ÈØ0WTð¥z&À¨Ò`¨­¤àưk ÂÈ` tg3ÛæšûÊŒÁÌó˜PK}‚13áËåá h ctsim56.htmlUT Ž–,C–,CUxèè¥TkkÛ0ýî_qqa´Ð$°¬l݃“8MJjÇë¾Å¹ŽµÙ’‘Ô.ٯߕó 06fðCÒ9:G÷\ìÓ§©ïx²•ïnJôgJf¨5´ aÚ â¿Ðëì–¼Nt¯Ÿ¡ÿ0ˆ§qÒ»5í@<…=w2/†Ó‡EÌÓ0™| ]â¾7#7ÀqŽznf4¯™…ÑíÂT¥ëöCKsèÝ»sedͳî×ÿ\_BÝ¢î]ÿMi>Ùûöý{°:£8J)îtØ0ϱÑKµDedd»øimÎØôHþ ùüïšJþüÁ9«ê’Ò¬i³¦p­­­¸ÞÓ ûÂ9nbý,¥)š´7Ô*+ØÂŠ+J’’£lF”7n2µGnq$“^²C³@mg³£-¨ÛLÞZ’€ÜîD­µuŽÊVô¤5ï.¯»d¦{ãP#AVíËÕêì»c×*„ýCÐk÷ƒù PK}‚130Û¦ ctsim57.htmlUT Ž–,C–,CUxèè¥VmÚ8þž_1¢ÒÝ—¶o§ª— ,œX@Ùl¥Þ—•I&Ä•cs¶ÃÿþÆN²-{mÚ•Xœxfü<ç…p–Ü,¢ ,eQh¹­µJÑx´ú‚©åJšpPo†oáh5þ £ë«Õb_¾˜ú?Š4„åðfrÙ›g÷ãÅõý:^ý5¹Jæ«åm¼‡Qx5Y&“Ø›ÎâÉô²—ZÃËûTI‹Òš~aKÑ‹®šGçOMß¿ó6/¬Úñôí‡^t·;gõGmÕ‰‡·tìüïI/úMØ?Ýçœ×‡“Øï.ÈvK¶ÛÖvЀg±Ó`öö9µh'’‚HUY2™Aª‘Y4À`w4„œ „\«Ò½.˜´ªìCR ¨°=ã‚mÈê¡@IÁ„p®r{…bjü®¢d8ZLhA+B™ŒáÓp1¿^^&+ÚGÑ5ª­>„ƒ=¦«eB·’Œ½ïSë[´,a1)“5lßá#²æ=ÇHÞQRÑ7­s’-I¢5ÓŒ° :,‰žnMþ©8“ÛJ0ýÌ®à7ÊžþÅÿÃzY•" rÈÐ’hJ›.ÈÖ=8º—~«}AÌ5;ôÏ€jîå;¸ö~SíXÕ&GW·¬Ü º»…kéüœ:¦‰ÔÁ rRYZw÷‰ÈAÌ(Í»@Ê9ЬÕ˜+:íbôÊßg”±µ|îùXz0%ÀRé’‰:í©Ò^Be(ÝaÏD…ަËÊ×ý ŸŽÅ¦ Ýù”[[8´-(O*ð¤Zžkˬÿ#LàW˜LUJ¡dº+£ŒËdаAû€è‹‰è|ߪ4mº¾é¬SšßÜÖ \€Ê|s«NŠ]ÓNºÕËVŠà+)€Ú¶kÀ¤]í¬(œN=­kí¦PåÙ†€ZR‚ëüiÃPM²½â5ËsFæœÈ®“5m;¬¥f{§M«]3NF‘Û¢¶kŽ£ÁõZºsÃ] VR€‹ÉÍoz ©µ!¡ƒMm6Ì!žº1ä&樑œMM€®C¨­ï÷t°“Ð'—¡>˜³JXǰ Z7—Œ¿´LÉß-H¤cÈÄ ”}©Œ;ÿMqgƒÍVÔq¬KImú?6½beëüÊ­À.ù¦[OVªJÚ:wrÍê1L÷Ï å:øl¶4µóÈAh‹è¢ÿ¾žN޼ozÇ©åõÀÇ÷½Çd¬«îŒ/wy¨³ðk\¸*d^èNy¶>¡î×}Õ?ÿPK}‚13:ùJËD ctsim58.htmlUT Ž–,C–,CUxèè…’]kƒ0…ïýbaw›ývci@m¬Žj$uc»q¡üÂflݯ_LZÐRœ òÆóÎ{p# p É',c9…^‘ì©êÓòëtyt!P`áõ‡jml¼Åd5rÄÃyS L­4VÕY:kœ0!°Q!"~»9+-eǬˆÓªd´dLJ+r Úç±EÔ¾t6š‘4øZßÐ, ©ñÖn¼ÞnâàdGv¼ËÙsûÞâž$'#O¸vϵû‹V?‡.i÷v§ý^ø¬(Ê?ŽÀ‚N–Sõ^ ›ª¦ Ë(G-YŽ%|{Ëqôbu}ÐO]5lÐcÒ 1ð[F¿™e—™ Fl;ã.ôxIÉh3HÍ:ÔBvd–I~ú5åÕàrƼ_ýÐ$ÞWFvUÔIs_wpñƒöó¼ûPK}‚13C„itk ctsim59.htmlUT Ž–,C–,CUxèè’_K#1ÅßçS\F]PGÙUd7¨íÔj§ •Õ§“ÛöBþ I*õÛ›L«"ø°“d’ß9œ{'¬^ÜOËŒmË’ Ë )„S˜;Û¡ „žûVôX–±›fü7·£fÚ´ƒ£IÿD—!̆÷Õ ¶#ñû"ŠaÉFÕlQµýqÝV“A.‚'½Ö4ÁŸm‚Vy9:|& |E/¯{æho{ž—ÝÿPÇ*üMï7ìÕùž½×ËñôvY=Λv%ë(Y¿KŠCrV·©èú×w­‰»Yö¹v¤ùaYd„ÚJü“±‡Øç €MïJø·Á°Aq8ÐäÁ!W`«;…»Ó®¶(ÏÞ5³­FG|à| áá‡&Cz«O@óÝaܤQR?[‰'ÀL*#¹“ ñ…¢5??œëhgÝ+(þŒ*ºÜ…Èyá¨Kd_TŠÚ9+Ð{2kXÙ”>¦îãG/V¤ÙI‰2OÒTaº°FaC­¬`}@wÐØ%Ó>”Lc¢ÉíúóO¸ý²X߯7³«»xq9<Ζ³ÙF«w#ÌÓd±|Ì–›]m–w³‘"¯ë_ÊBC~RR]m| 8O}S®bÑ›Qú£ùwΛŠ>…û•Ì}¦êe6¥4dkFŒ(NˆéÐt²Ú¹«›×má}!²Á6è$ikÀî ɲt‘}×u2ål±ÐÆC§©âÜìö Mæâ| ¸7¯=ùP¬@[#9­+¬£aŒ¯¤1è@{áTz§1iòÈ lUq¡?×N!—$Ç`4Î>õA?Žp]·•$Ì'•Ú¿ˆG 0K‡¡+r­âTh½6¤Ó¶õ¢õè®Ãyº@Ì}T…u,·ŽÕòV…d.£kY`hé… âdÛèÏhB‡'öƒöì|uŒ=±Õž´ ;BÙº‘ŽYÉÆºÌÌ~ó1]øœ|KÅW6ÄålçrÓ—'…»]P~Àê8ϾÃÞØŽõ]—¶ˆÎº½ÿë»lX®T|Ìr,׳œß­vÁÛ `޲fBŠà#Ò1pôÍŽaÛR,IeÙ8wbž÷%A‡`°W½E§Ù~ïK:ŒèÿšüaPrñ­¾ýp†fo”‹€ŒöŠdz·~Ìø³ÿ~ô¿—gPK}‚13Bw#,à ctsim60.htmlUT Ž–,C–,CUxèè¥T]oÚ0}ϯ¸J¥½Ñ :¢n3‘„€ ÊÒ©{Bn0ÄjG±)ãßïÚ¡ ºnjµ(Ž}î=ç_™LÓÅܳHÎèÚ#Š«‚y^0è@ð³"N;I±,2ŒÇ?`Žâyœ ®&æÂ >Dþ"سñt5ž‡«à~'©¾GFA”‰AM“`2°3%y¹ÊD¥X¥äu®ÊÂöFÇ_—Ðþ­Á\)QóìÓGÛ»«_C}>GumïC¡¾êç¬Û=Çö»Eìöë%“i¢‹žÞ¼´g,+͹„L”%­Ö@‹Bì%lDÌ€xµ^Ò-ƒ ÆJP(H…XÚ¬­mCëœgÒ,ꨒªk0ñÎYQovìsVÁAì`O+¥3(úÈ€VV›XóòR“ǻҕP9k€ÖuÁ3ª¸¨tZÙ®iÐÞ›àöZ¸ö^ru-˜íþÁLWP×N²u+êT£…t¦ˆ–Fîj½€°c…ÇÚ$І}!Kmgêçp„§cøîÏga4Hc\&Co…ÄâЙÄQŠ=”ŽMØ%p‰4ôÍ‹˜Ú‹æ“¥çn¢d ·ŽDcõú.Èœ®qRl´ÆÃõ¾’KëtÝ7¨{ÞI ]W“Ãk$n†fÅ$h"Ïò³¦±Ü~ÿæÿ¤…‹÷¸†nJZÿÑzÔt4 mÚ-•uÍîA¤b¥|¯.ð¿f³7¨3¸ «ÂÅ_Èœc™–ú Ñç~ÚƒíPK}‚13ÃÚ‰ ctsim61.htmlUT Ž–,C–,CUxèèVÛnÓ@}߯ H“ŠR„Àµä\ÚDÊ¥æöT-ö8^±¾È»nš¿gv× µIP©­ë9sΙ™m¼Y¸\øÌK‘Ǿ§…–è¸ó†îÙÚƼÑzò F7ãõb½¹zvm¿(1€U°œ^õtQŠèÍëe¾7ž®ÂéÆÏ6Óë«^¤•Èî¢"טk5Hu&{þ¸ùÓ¤@;ôòyæ`Ï{þ§òDÔÛs5ŸÌî&‹›»é×ëMØóŸKýÁ|ŸJyíR„)­„Þ«ˆK¤”-¥l)ÃF€7Ûí³‹Æz`Œý¢7òç‡WpkÞyѳgdPÃBTdÏc¼B¨Æ¥<ß"èá ’¢‚{""ò­;Ïø]¤¸€¼Ð-1×|_RÌíËLä"«3¸ç²¦Åê¾9qÇQ!©ZY­ï’G?(¸Rb›G]P × °EÀ­È„ä•Ü÷ÙîX„?´ŠÀ¡H·Æ.OÕ`kx}66ºŽt"21©%X øÀL ŽE’`EÓÖpNkª«lžC$)ˆò!ÃXD"ÇþSàEB¯k-EW<*rd/R±MÕ—p•ªI0¥œi¡éaðn¼üÅÁÈêNÕE{´—óÕ2øj§êuw’ˆYÓ~ªJÉ÷d$=rYl‰Úƒëy¯¬0Yì°b&º.K¬eä4Ù'½i3 >…ëÛq°˜ZRA­‹ÿcÅ%ÑQà…¡?i†¼!=.œ 3®McäžeüÏ»MM?”¼âjrÜavÀrÄØÊ³ šˆ±#xÓ[Z¿÷NtŒS»æ!]á>‹ùÍê*\Ó1)Óae´2ox½^…¤9œØÌv¬5àèydÓh€NÖÆue¦Ó,O‡|ãϾ¨šn@A•Û/äy²"¦‘¥U2óEŠ˜Igüoê·¤Ðsw;7NzðEÄ:ýg R.“³I}Ò†°ÆLv‰‘Hm7Ó“ÕR‹’Ö (MãÅ+š0¼ÔÏ"?¥…˜ ›¾Y2“dV—ú ;0ÎhÌe& öþ%n Zêªm"¶Ô‘5Èn+YVmÔ;8àÞÕ40QÞzéÍôOmÜýÎÆb¼?]-7tøÃm¡O{Ñ~PK}‚13¬¾ñrª ctsim63.htmlUT Ž–,C–,CUxèèm‘[kƒ0†ïý!…]VÖ•Ý, XµàaX Û•d44_·õß/Ñz1h |oøÞ'‡7$.Ó„:¤ã¬¡HNOˆ;KâN Ç!û<øDûƒŸ'y±[EÓ0œ‡2/ wøÄUªô˜¥Þ6 G‰feXL®¸£®A‹¾ªÕ|½î —˜ú÷¥EÐëëóäYE½Ý`z¹6³KØ}´€›®™ä˜>Ix³ó²‘åÚÞ¹ÌO¾—„†j Õ.”{‰ ›Bü2§cªã”ШV}φ5B’Ý4bF2©Zô¥~t æ âHª~q¬û:Žü‚¾™¼rÓR ½&ïö7ʳÒDh37eþ¢?PK}‚13Ó‘ÑfHå ctsim64.htmlUT Ž–,C–,CUxèè•T]oÚ0}÷¯¸¢Ò^Fɶ®{ØL¤ÒR‰‰ºûxªÜÄkvŒb§…¿k' ÒÑiC®åsϽçܛР›McBKÁ‹˜:锈“Ƶ1 !t´ÿ„Ñuº˜.–ó«ðÁÄæÉ,önÆ“ûñôú>¹c‹Û4™f=ÌMbšfs–-p²Ì®†½ÜY©ïsS9Q9;(V½8íŽ>Ž¡ŸÞÌ™3™üЋï6§P-j߯ìf>K~ôâ7Ê}ñßS)—ω/»FìzºÎédéåO.:_0 „•ÒBn´æU…´Åw8†\™5<˜-¸’;àJ™' ”±8e·RÓ#p8riîdŽˆÑü—^ô.Xév`ñB €•6¼æZ8QÛ–óY%Da=e qØ9·4Àkñ™~õ*X2šf`„ÊØ¾%Ó›ëù-ðšŽâ‡ jð]-æ ‡ÈÆ!ó °Âùžä! Ì*œþP‘6uµë“ÍwþìLã4V€HQ-xÕm ÑSãÝ­E4_ Âÿ¥þ‘üñÛØºqÒƒï²på[Prµ:ò©¯ÚÀŽ`ÄgoD.WRÀýöèF9¹Áu Öázñ7LšAšŒ4½ØUÖ&‚Æ2Ï.öï§1ƒ *ˆÇsž÷Ås$ewªh@&>\)’ÓâKJú˜„K%È¡É>Ðá˜6UÓÆ›bYV˜ :9å1},Úa«H(IóºËÛ¥\¶ycF¨žéø f;’˜¦ëÕIÐtÿ¼0oû‚éåþˆŠ<õ–•}VûäÒ5ç4©rLŸ$¼ºýHµÿëYv´ìøË†ëãIÙº¾ËÝ:A7 ƒ˜Vj˜¯è“ÁÄ‘pßȰArzI߬rÍè›Õ0ò-ywÖaÑÔ˜­=üWüPK}‚13zífž#ª ctsim66.htmlUT Ž–,C–,CUxèè}UÛnâ0}ÏWŒ¨´OV¢íÞÒH@éR‰–MWêÓÊ$±êÄ‘í@é×ïŒP¨¢"!bûœ¹œ9á<¾_DA˜s–F¡Vòè®`ý"º£ 'Ë›g˜üž.ËÕõÙ­û s ãûÙuϪJ$=dŒ£p:{ˆg+w<_Ín¯{‰5¢ø—¨ÒòÒšAn Ù‹¦Í’(p ½üî0g>ì×^ôTu ®.Q£^ôEÚ_ôíÂ~;Æ^"vƒØM‹6%‡óu;µ:àSÄ97U¬L $š3ËAÉw kfx u¥J°9Bk­±5Ø™Ò`Tñ¦Lå9Œv+¦…Á…# Â?TÈç=„“hœ¦}x¬×V³Äöá¾–VTr߇±)60ñ#™¬}0Í£U’…Í nEªâšY¡J3€0Ž£iü(ŠpˆO°RB*L%ÙKM“j¬Õ+˜\íD¹ÁN$¨ì¸u¹§ˆ%ŠâÊ„ä̺üˆ +¨7,Ã8*v ¶¼éÆ™åÚí.yB¥QŽF*+Ö’·úvÕ‹í ä…ÜÑ&4£²;åÃÀ©{i'«¹A5?ljI¯Ü8œkà›ú¨¼0íä}}GwÛ¨ËDÀá2ðÈ„•°Fi&‘a¿wb¢pí„XUq¦±/óBC":9IòfZ‡Ô˜)JăÀk©+%LÖ]SQ»œ—˜U&5`¸Sz—>?ŽõùæôßÞû-׃¢Q+V£óT¼$“°˜ôÔlP嬴ª ‘0†Cx­,FA’¦šs8„2^RÉ3K“-69™S+$ã«I+ér¼³Wa| ò ai¿®Ücªv¥g™Ú«£AKóÉöb‰‡¦¸Þ;&¹9öN¦´|ö˾Ǫ—ÒhdwYºMZex·qþ¢ ž† ×.”(Y§ü' +|ZÐÄw¾>tÆ #•MmУšgšn(í`¡”ÍñÖ³”Ð@34D»×¤%Aèža­YÖL•¤÷ ¹öälHÕx o—1Ú‚þqðÇÿEýPK}‚13š^Î}² ctsim67.htmlUT Ž–,C–,CUxèè’ÁJÃ@†ïûCO¥9¨EpˆµµÛJO²M¦Éân6d§ÖúôÎ& 2É~ÿÌ?ÃÈy¶xH„¬P‰$M“´(ð´ÛP«rÀbgH7æ0€;ý® ”qɸ !oWw/p{?Y=¬Öã³YwqΖéb:ŽÈ5:¿¼ŠX‘&r2]fÓuw<_Ogã('¯íkîjšü°"k¢drü øŽFsÖ§½Œ’çæ?Ô¹¡›ðœb¯²#fKfËo6>Z–óuèv~ñ÷„˜"«Ð#¨k4&„š*‹¤sp ¶Š´«ýd–%“ìI[s{m Ú7F@q¤Œ+ÅÆ}€¯Ü^×%(ܨBÈwmËs2‡±Æ´U%ÂVô (êê3)¼²ÁÈ'Ûð”­ëwìCH·„m÷ߣÁ’Ь|ÙÄ„6‚U1uÒ)?·¬ð&Æ ~Bè2ü€åÓ*ßäÅb²ÊØ&/é"p¦“|: P‘Ät•nË´ÜY‘®wV¶ŸÜh'´³aãZÄ«“é%p‰Îf3ÃNƒø½»FÍÏ©» ¾QîÁÏkìý9;G¶F¶þc£SÉ4+|·ÙíÅe IHÙH Ü´-Ó¥RP -zæ0ÐârPì˜ ®À}-Ž®Jø¢ŽÐ˜Uñƒw`¸K9}õ­Gë|[â3úÇeü&¿PK}‚13ý9u'ÐV ctsim69.htmlUT Ž–,C–,CUxèèm“akÛ0†¿ûW.ì[âAJZ6źÉ2H㑹ƒ~ª}ŽÅdÉHrÓô×ï$'¡Ùj°-ž÷Õé$±Uñ°N#Ö ¯Ræ„“˜NF÷iõ‚Æ ­X2DY˜(bwùýÜ}Ëòu¾]-ÃCsØÌ³ØéN”×71)æ)Ë›b± ëíb9‹KgEû»ÔÊ¡rvܸVÆivìz \¢Ói`®Ûë8}ì>¢nßSÓ8ý$ÝWÿ~ÀÞ|~ÏÞ»#vwb“cÊlµõ«]Mþ+…¢¨h„…R·-WìP¡á-p˜Œ*Ñ¢ò(—ð"pº× ”½1´J讜nÇ<QrÏíÈ¥¡H`ále= ±vàg4b×PËMbªžÑ2Ìñ6â¯ÂF$ ¬÷]hVz¯•½½œdÃd‡¼ÄY#)ÇçCP²¢H –Ð7Là»OC÷(ëœ ºó6â¡3h© d¡ÕÙâUaÑ‚û`%T)û ¿°t|×~3ÖßSøÙ›š—d#µ¿'½…½0XÞÑñlµv ؆WBíNh-¹;ÅŽàÚ×Ò#”¦\ëú8iI}[r‰c‰ÏƧEÍe¾)è¨ûKA¿á:ýPK}‚13V£(áA ctsim6.htmlUT –,C–,CUxèè…TïoÓ0ýî¿âÔIð¥kµD©-튴­S„š›\ƒc[ö=g7í6A¥¨þñÞÝ{ÏN²yqy‘‹¬AYå)Ò˜_7ÒmC6ÜγaÚ"/Þ†ñùdq±XžÍÒÉ#¸]NÏz¥5%:r[~‰£<›L¯Šé2¡æËéŒQTû•±„†Â ¡V÷òI78„¾L#²N•§½ü£{ójó¢—?Óô.>O _o‘ƵÒÈðšáõ>ìgóeôIµ’ûgð„ìBÎt¥¨ Bîm~ “ßaž=¿ÊŒ…Ì©ç“ùþ{EOã¹ä¥Eÿ/” ¤|Îcmó“g‘Ó]ÝY¶Í®§èukŠÞ¼²S4Wø½Â|w‚ +1~r”h’©2˜ËJñzx¹iS5wZ±¼4(¦¹Ìiü¯™É bLX%tߎâ5ôÈÍW¥¥¹Ø1!NDm§ vê#b~!“ç¶*¦8€•¦Ap§1L‘Ä̰öÁÃàõàæóŠž¥;Ç`#*$§eJ9];–˜me0?$:ôîyFC¯D½Ã\E.ŒË†²ïRTè|¶%3¯ËH!4Tî"Bb£½RâÄó}›ë'Õš&—p’e%âº6ýze‘ ¦¡ÊÉû^R M'¸Ýl8l¼^m<¯©Ë/Ø!lòºvQ7¨¼„2•Ç¢“­É4¤‚Ù‚ a!H)ô¯K,½”hæ ×”UÓ&2öèvŽÙºŠgž‰Íðܱ}Îu£ã2ml®?§4îêR¦ùm-»þ\°AdFçÚ¨½ðý/+3â«eu^„åY¢lå±tÒ²+i*E•åm}çÆºvÐrßm§¸O«$ؤuÝ}Ól]T£jµd u®¦mi™ŒÝo]³¦Ìÿúrÿ˜þPK}‚13ÕCº¤žT ctsim71.htmlUT Ž–,C–,CUxèè­T[kÛ0~÷¯8¸°·ÄevS vâ4מZØÓPÍ“-MRBúïw,g]¥xtÛçò}ç;G"z“Çi9ÛÅÄ 'yœáÚŽ;Q“hŒÈ烀¤åê¤WË2/«ÅÅÚ?HO Hn²Eè”õÛ!2’˜,³‚f•Ooªl½kgE÷½V½ã½³óÖu2Œ—'w À9ôý¥Ç\Œe?„ñ­ž‚z%Ýçá} ûúöÝ%bÄ6°Ñ©e²©†i7oÎÝ  -·jÕu¬ßYPšæ8¨\ËAt¬ñ-Ž\ζ÷3oÀ–Yaç€ôr`÷Z+ã`«\ †3 ÒZòãìÀäžïÆ’'&;0!ÙV¢õÐ×XÎ`/ÌðOäËÐ8MÒ˜ ßA\`•Q63!ŽDmË›¦lÑå‰Ld¦ÒL€Ò õ¬|-06˜ ¦)by!°~Ÿ¯! #H{ëÁuT(N_ˆfº, ,5–/û`Ð÷Ìs.˜¦~- QäÄ8o)ûõˆëšÆT«Ü;g¤Zª:±EbC`E!Ž\îº\ÿQà?Þ¨„£ªà *‘4Úô¡ÑÓdÌ@%©úNQ­R.hZËáúÝ: ˆ¯×{&*L¼V &Oجe£€FšÂnQ’¼„2S Û£Ód‘`NÌÔi„þÅ$ K/c{UÔî ©Z;ØÎØEOõHõ§c®ƒó…=gžíÍò,ÙNrS%XsYÛôSFÖ¯S'Zó;-é<Û3úØ['Á®·öÌ\nÒtb˜Æv£ÿ²°m1 ñà)˜¿Eôu(ëh~Úh¢D•ËîúYÆ•®Ð)n‘zá9«ÒT`÷ ­÷­­ÙÎQíRÇ’Ô›šuèTôü¡ØŽN¯ázÑUi/Uú«ïãPK}‚13»)•Ê•¼ ctsim73.htmlUT Ž–,C–,CUxèèm’Qo›0Çßý)NTÚÓ–´[£N›ƒDI(‘Hˆ}ØSä‡X36²/­¶Oß3´[ª ÁýýûŸïNÇóz]ÄŒ¥ØÇj'Fèß$|‚­¶È§£Ê§Ã¿-?áö.-‹²š_dÃC)Ø$ëå£fD}Ðø=¼ï±×#»Zä»Eq·KËõ6©V?Ê ÙZ²µ¯¶éKõ<¯Bãù—ÿfCcõQBc»N˜½‡žtpöÉ…$ëSg<بN´ÒO€h'A¸†GÐKw°®ƒ,«0>D•%{ï”u€vÈŽÊ´”Æ‚—Z6Hn."Æë^ÁÐhÕü‚hy@èìÉKx8!ZöQºpÄöÒ+'©Ö“󔣷Êà„oã¡/ñ(”ZŽým“êÿÆø}æR¬âaPÙ§³(Š9råѶNtgZèö­-(de|²‡:è7+75-TX=úŒKû PK}‚13o7%#:' ctsim74.htmlUT Ž–,C–,CUxèèmT]OÛ0}ϯ¸*Òž6²ÁЦÍDjK¡Hý@]yØ2ÎMcͱƒ}³~ý®“B™Ú*Q“úœã{ÎI*¦ëù,KD‰2Ïi2˜ ­4Ï/Ÿ`ìªZzi¿ Ò–$b´¼ú £›ñr¶\]ž\wVÂb8Ÿ\n¯¦W³›‡ñr~7\ÝþZ.Lfb‚úvþuñe}0ô3žÇ°ï±gŒÝ0vóŠMw#‹é*Ÿž‹‡M’u©(WUÒæP£/œ¯’¤i%M\d¼ÎxDj-Pë@Wrƒá†\MÚÙDšà·L À:°A‹ž…ì$äº(УUØ3¡ð®*±³uC¯’â.ã¹x¡ôˆLäi"­B<ÖÎæÀ6~$â~=ÎnÙ÷(ËE:Ê ²-;‘F¿0Î;G‘n!<5LÊDOßü1Ž+ƒ3 N´'ã¹u>(áàþ¢çDÄdžÁÎDÊWPë-šhI²^Mír`†ŒgLw×TŸï¾¨£.hW°Û6@¬Sñ¸·Ö'½¯¬/§F³M]4Ú’›Ýiv•Õ¥´©Žo<òóÈ7*v͵h5•o;'GvþÊhõ§kÙ`Á¸†ylˆxæ.†¸”cбÕøÀ¶j§-ñ¦‰*cx[jUFíwÒq¦¸s÷¬pûéõr±æ·5¾âüÕÿ?üPK}‚13êŒc°Q ctsim75.htmlUT Ž–,C–,CUxèè•”Ýn£0…ïó•ªÝ‹nÚ¤i²ªƒ RÈ¡½Š\jï:6§RûôLhš¥Z$„Æ>ç›ñ02³ÕÒà-£6Ö\ f§•úÃrÍ•D+&÷5¶ëxhTƒv“Åro¼d™ùI`€8(vVþÜÒªäùddñ±çÇ™OÌvHü`nåºæ»M®¤fR׿¶z',Û{  ú,æÄ–}[ÑL/[M´7‹åÍÆKV©C¢u[ö©Ð×Í{ÌvÕÚÚŠÇ -@[¼i‡¯µã4ÇGGz‹œ6ÛýdìÚ !`”¬ÒœÛm{ä’¯€ipiàÌY]Úõ D *‹½ U/lö¹=i²tÈ?©úö»[ÙÄ`Þ̘ ȾGÍ먫T#Q•ÀÐ i…RZQ!˜è^tSt$OϦóBiòZ«¢¢»^Ψ˙ãdgÙ–iŠÖtW .‹^ÜÁxßKâuFn½,jFèð'•¬uµÏ›£Ã¨ÀÙÙriþ·|ºÞ“¾ºÑdB?»ç²Û÷ŸÙ‡Ag°ÐÜðio’PK}‚13¦W÷. ctsim76.htmlUT Ž–,C–,CUxèè’Qkƒ0ÇßýÁÂÞVa])l1Ðv:V‹Ø‡= §WÍÐDôº²o¿‹¶c+}X $¹ûÝÿî’ð Ý„Ââd…à(±áËØ-Ûvº…%ôÜÜ0Ëâ«øé•­ž×q'îÄ©,Y´Üx®º•ù|fSÄRðµ¥^2¸ƒÄó];Ç^6o¹V ûi…Mm‹õéhBØ_t1˜É({g‹]ûê¦ÆG3¯±‹ßì=±%±å™uN%ó 1ݳkwBVËJ+`…ìÛ:û‚‚µ?n&U^ xà[j|™ðE°èмCÇôž€£î Êd(øƒ,R«~z J8ž­&e›uYC}è)ñ±ÅJPÐe(Uy©ÇönFc•)Ô I9¦(Smý8Jé­Ì«Ò2~‰oPK}‚13Ä!u‡Ô ctsim77.htmlUT Ž–,C–,CUxèè…‘ßkƒ0€ßý+ {[…uÝ‹ë:°UÄ=ìIBÌ4›&¢×ýý‹ÚÁÂIHîûŽË…ÄÅ)¡i«(A‰­ Ù ¹G¸_«/1 ä‚#Sõ¥eqˆ8³bYäop8úi’æî&š‡ÉèÁÙ;…®º—|oãÄÏE˜Ïá8#׿8Ê®äZ¡P8nìZ›ú×ã¤À_ôq?3›%íM_û5êá7µ³éM‹ÏÓ\cŸö%ˆË 9–Yšx¹1jcÔ?†s-œÄùôæx÷_— aYE#€ë®cªÙ§0«¹êýaX©T ˜0ðA04q¦@v¬ð.[—QªÚZq¶$›êp¢ô\˜ÎN`¶å3¿PK}‚13ÿž©¿± ctsim78.htmlUT Ž–,C–,CUxè襓mkÛ0€¿ûW.ìÓöP¶)Ûy׎6ÖOAµÕXö2éÜÒýúìhÇÆ ¶uºçÞ%¶æ7iè±ZŠ*d¨°‘áÖèRZ ï Ñ݃4[ÝÂQÍ‚ö<çó[ˆWIžæÅìj9<ä+‚,ºYÌüÍ|½Ÿ§«ý6O£Â'»(dÉ"ã‹b€ÖÅb9óK´ªÝ—ºCÙ¡ÔØ6~˜œDg—èõt`®PU9}ï‡_/Q×çÔG?|Óà÷¾Ä~:g§Äˆ=<³Á)e¶.\Íë¯÷‡tžÇke¡Ôm+º J#J ¢ÕŠƒ„{ÕHxTXÖŽÎŽ`çÅ*ݾ÷þ!Kt;•@1!§´)Œh% ¨ÁJaäg¶uYñ(N´ eÊçð-J7«lÆsR³8ü;õK² &)Xæ§iðù`yÉf}{'Ë£ÔMßveÕã±Ç±‚É…ú{ ;û¯q~ü¿ :;ÆuÖõï/BïdC½¶CãÕ¹-P·k]M¼¤7†Žcóôv€çájT'ÝÐI}xÛƒªäèªV‡ZZô~ö¢Qøtéú•‚‚ÓÇ¡>îšÑo¼©¿PK}‚13Yšé(L3 ctsim79.htmlUT Ž–,C–,CUxèè}’Qkƒ0…ßó+.Æ[Ý K[MX±{*Áfš¡F’t¿Ilaƒ²€$—|眜T»4@¸eô`ÍuÇ‚¾™Ôð—!¢£û‚}'@¯óèÖÛMžæåjFÜ0~!dá.^yZŒ¼^,<£¼‰³*.ÝvRÆdåÕZñþP‹A³A«y«ûγù®´ø‹¾.3›lŸ¼`?^£–õ%‡(ÝŠ< K/¸éô›ý®(–¿}_ Û¶¹°þ¹qœ”öÌÉóÿÿÈì#Tµ F*iÏ4“ >…ÝrbÔ\ @%35e Ê­ÏVÈÙ@Äi'¸5]B–W@ò}ÝÍ\œjÑ÷t8Þ›JœšÖÎ R|±ÚF(—AÄIrf’Ê4ѳ#Œ’[al ²ý˜j´±ˆ÷´as\؃ú$Ï*suö’Í4½•PK}‚13ÅÉ[ƒ P ctsim7.htmlUT –,C–,CUxèèTÁŽÚ0½û+F¬Ô ‡JUÕ†H,…rØ„²j{ª¼Î$qëØ‘mXò÷;I «Š‡÷Þ¼y™$ÙfO)K*äyšx馇ŠkojØH…ɼ«%óˆ`,yØù_WûÇýqq·‰XÂnù´^LšŽ\wB¬eš¬Ö»l}Œíq½YL„w²þ)Œö¨½›U¾V“tÕn¡"äŽß7˜¤ÏÍÿcß)ÿ9\ÿ`|ì=ÖÁQJ¢”eÞO‘l!„íû7)Q±5(©¤_!x¼xQ@ŽNXù‚¸†¾ ˜" Xßzpép©8<#1´·Ýt.ŒRæUê’~ÙúKÇuÊzÝ{ß6¤pÑB~¼ œ%óˆÉ[Zç£&° ~®³x©ÁãPÒѲ$ËR‹Âs]†yé4…PC¥dãÆr:E¢#¢±=ÆXèjeh‹³ä² ýÁ•‚>ŽÁëT;6ÈΩ5ž{i4ð¦Qsð&ÖÍË/jRʱ´ˆŽ s¢Å²BñûU:¤üó(Èo¿ß[Þ÷´ƒ§¨LD, )äõFõê3øF 'æŒVñf!#ÇZhÈæÀáÄw§ºÆ<޾$•¦1î:Èhä7† ‰*wÓ¿(q-ÚÑÈ/·y;V€ŠŸi/eQÐ0Ú³¹¦…r”\ƒ:»eôxâzD»á¢}Úìw=âá…@_Ý‹äPK}‚13à ëJ@ ctsim80.htmlUT Ž–,C–,CUxèè’QOÂ0Çß÷).#1ð ‹DcY8œ 0²àƒO¦lÇVÓµ³;4~{Û 6išk÷¿ÿµeñz1=V"ÏCF‚$†S­Þќã"4µ–œHÊ.%JìA´ižÇ&Éý3L¦ÉEÝS?<“tçæ öæâ˜Z¶°lñÍË,N]·ñÕîÈRž·.E™®*®rØ iÙras ÛÔF¿bFB+È9qèâÛNpUì$7 çB)rÓ§ ~Š5ÐÕ n„jz®26$ªÖE‰GÂ^+,¶¶(yDeíYÃa‚J¨@ºB2Ÿ}¶r]³d¹¶/èÞÚ.ûóPK}‚13º?Móó› ctsim81.htmlUT Ž–,C–,CUxèè}‘Qkƒ0…ßó+.)ìmutt-,¬ÓùÐj÷°§l¦ÑHs÷°ýú%ÚB erÏw¹',«v[NX+Å3T¨%z¡~%ÜÃ^„LY4ÍQt,˜tŒ4!lS¼¼Ãæ5.¶EÎÒq9³òh—„Í êåŠºŽˆ³8É«¤å¬LÒÖhU÷Q›evÞb§)OWß×èj92³ÉvAùÛpƒZ?\RO”ßi|öû»¸d׎mÛœÙàôd–•~ÚìñŸhœHˆ/ZОë`>a8š/Y£2= èü¾`çlÈ+—’ÏÓÓŸüPK}‚13û~¿³ ctsim82.htmlUT Ž–,C–,CUxèèS]kã0|÷¯X\¸·Ä´¥´pŠÁNœ¸&ŧ>ÜSÐÙ[[E–Œ¥6×ûõ·’{…ÖøigfgWkVò»m±E“2'Â4ÓB½þA˜Á½2øŒwèüý ¤nY2ÁXHQÄòýê'ä›å~»¯gëp‘f»ì®XÄÎ ²¾º‰‰‘¥lYìxQ…pYëE\;+ûCm´Cíì¼s½ŠÓåÛÒSà=ôú*`Î&Ù‹8}>@ÝœŸ¢®ãô›rßýóörÂÞ®ÊÃj»9ð²àÙ¡Êv›‚x-ñÚ¼äÍ>++_yyùy·E>fAÀŬ‘=j+ ÑÀÖÂ9ÛQô`;s$<¸qžr–Єn¢°ôªÓÖ‹PÏháÑŒ€¢î ”o0R;:ð‡ÑèáØ¡öf´öŽÒ‘(í-AÔ¢éÑ’R’™ ï¡0 JàEke,‚3Áöyð8g÷¾=_ï2˧ ¡ºE–äÓ°ä¾ËÁ|C®M ¿Ìo ûæhƒšªBøÒÍ#L 'í!Hôÿœ6}“Ïd½ßqÊè™>Ó?ñPK}‚13À)CçÆ ctsim83.htmlUT Ž–,C–,CUxèè‘K‹ƒ0€ïþŠÁÂÞ¶Â> °©`mª…V—4=ìI²6Õ@4bf?£¶‡Ba†ïc23$åû]è‘ZŠSHP¡–!¯% `¢­$ ¦ FÀóÈ*_À*‰ó]Ζ³ÍxœAíéÒß®Ób½K žR,Êê;; IL3NÙˆ¦Œn–~‰V5EiZ”-ÚyöÃø Ü¢‹§‘™¡éTùºðÃc÷êAãÛpï±/{ý4£qž8;Æ|›gN­œZ]ÕàÒIÙ0ˆôùvP.ö<^+ '%´©àÓü‚ÐÚüXÀZ‚kÔb/T‹`Î0©ßBI gӈǧôA4Vm¶ˆ²¯zÑ̼eƒMžq7Ñaî™Ö÷PK}‚13„}H­s ctsim84.htmlUT Ž–,C–,CUxèè­XaoÛ6ý®_Ad@÷ÅqÚmņÍ5`'Nl Wݰ} h‰²ØQ¢'RN½_¿w$IŽšµÅ$±Lòx|÷îÝQ“eüövMrÁÓéÄJ«Ät#][Õ‰eçìZ*+*‘²9OþÚWúƒH¬ÔåäÂOž\¸¥Q4™¯¯þ`ó›Ëõízóæ›k÷Ë3v7{»xs¶ºZÞ_ÝÞÜo—ë»wñæýe¼ZßÁÀl:¹\ÜÅ‹›½Ü,®ßœ%ÖÈâ~XQZ3Îm¡Î¦—á‘–°þÔ_»9ßX½—ÉëïΦï÷³~úÞÏj|‰—‹xv¿™ÝÝ,Φ/”ý…~‡Ö½î¯ëŸóNòb»ÆÀE8Ód¹!t–ß.®˜Eq. KtQð2e©4{ņq|äJï˜ÕÌËl.ØžW¼0eX¦+Vµ›ÈrÇxÉdÁw‚e•.X»‰jCãd!k<Ùöõç\Ìñtq½¾‹ùøÊ­ìÏ}'0×è¸|¿WGú x’G­—ðMÓ¹ö¢ÂxçôGÁÀ ¦L®k•F4MËtæö¡_¾5ZÕV°Wµ àny™ðþ•޲J292½§í¹Â®E­¬Ü+I$Sh=¯ßÔãG ®"ÿ¡³ÔÆ#MÞß·+'ާpå~‹È+YH ˜âi,çEóƒ#e9<’h\„ ·_/ø¢²O…oé·lYðY‘ aäjŸs¦ÄA("iÔ{eªèÑ2ãé‡Ú„¥-–!Tam€‘Q~$uňåtâ—î „1=½rOãhf):ÂÚ`¯um7\‘Á¸Å¸ÿü•&´ƒ6_Ž_ÿðEf—>lQd 0ÿ‘Wì­°¹N¿*½ÈµÂ-G×Å+@YÖÅ–hJy€¨$VWÆçú:>ßr¶7T‡‘ƒ"ÉÈC5áNŽ"Æ+¸7dÍA…D¥!”8#BUôÜ>H#‰Ù.eöl—3‘¦M—ƒ6ÎÙ¯N_(¼ÆŸÍ·B®¶šnw¥"ãˆ(‰CÊ Ï.È,Õå·ØcLÙŠPoð(>&bo#0Q|DCa©@Wfü% Îÿ%ÄÔ1ìD)*xO} õ½à·®­W·¶Z™=ZàƒÔµi$|‘JùÖiý.‘ŸŽñÒ¹R+‡%Q(XÞ§ÁzÒ´œŠh;’i¨ˆèó]õq½öC Ä. F1~²ìÜÒvÍbò¹ÿÀ“¥¤ € á*©Ém%wîW V—^Nº[dö¡Ÿ)šÜúxîzÀt`BÑQ ù儞’ÛŠWÇŽéê‰m\O!9\]ä\eça¿AžKÊa ž^%¾ˆƒ}:Ýÿì´¿‘©Ì26ù¨üãSBø†ƒÁ¸u-}¸¦œ*a/öd¤`ÊߎI7µÜÖI¿”ž½‚FSúK¦\\e¸1tlÈS#$¢;jâܺ¦X:œž‰XPçtãÆ%ûWÄÍ'i´{\¦‰HÚÉÇQÀØÙǰyÅ ‹S€#r·J2,P ]w{ï b0r=€,ÑqÞËð`{K•­‘³jt\é`=`ì+1ýwµ=ÿ3Q_©'õ]‹ë3Ú«^¯ÙÅÈ@B¼:M†¦ ŽžÞ šêe_ݵjŽ‘,¿k Õ«ûŽv‹ár:äšt\ ]Se€ñ®!¶E JS½ 0¹+e&Ñ\[¦™´C·Œç0ݬWŸ§¯Æ¶èÒkœJ+× NVÓJì(oà²ëH\§ ÐÛ âM÷ †»ß㻦¤;Y6QÁmâU8E†›< I`* ¥¤ëp³º³ù‘y{è2›78 r?¢ÒÏšŠAãZ‰Ñ€ %“¡ ¢H? ]·Yj'Ñ«1üóïÚþPK}‚13ɉj܃ê ctsim85.htmlUT Ž–,C–,CUxèè¥RÁjÛ@½ë+J ‰ iÓ$t-°e928RP•COf-MäMWZ±;5äï;’íDI}«`;óæ½7³#âü~xb‹² )ÒdX˜Æ‘ýS\ÀBiB‹%Ìdñ»µæ R¦ÏnTdàAZ©5ê/b¼'ãžÎóÄ,ÿ‚Ù]˜®Òlr¶è?V›B2½&þr¯ç«»u…iò3ÏÃ|™&|-Ÿi¦£$²¾&΢ÅÄ/È©zÍ r£-ÕÚÂõ+÷Ðë«sF¦UÅÕ¥<¶'P7ßö¨ÓŽüà“¦Ý9Uú}(pËØŠ±Õ;>t ⬛HüõæËÕž—o Sײ)Á¾q9 N JIvJÂÓQbóN“Jt…UÎÉÙá¦LÛÇ–îûÄQðœCʽÊKíŒg;£L¥vh+~…<0Q{èsÊØ.2pÎÀwż•EIú\‹Xº0O‘ Md_jn$ºi’óútÛÇ¿ýŠÿPK}‚13gþYRÖ ctsim86.htmlUT Ž–,C–,CUxèè…QÑJÃ0}ÏW„ |Óªc:1 4i»ÚdÄNð©H [ kËñ÷MÓ VB8÷žs’œ‹yYäàƒ~ÿ ØÛh²m: Ý~8˜*8ð}0•ñ¤&s©ÂEê—“GPDE"Ûõ¦^=!§ˆf‰(åÛ\%iˆj;˜cUw­Õ­nöØ ÂÎp”À9u¹ôœ…ˆìú œõjâd1¯â|S©„IñRª+3)¤™@䪱Ïã¾dð8ø·?Ü:îÞq÷?Üàü ÌÕ¿Ÿåã àCLIj ¯áöÔõúdvR:…D½íÜ`ýÛàμýå/ý# R)JWãŽiœßPK}‚13t¦˜5S_ ctsim87.htmlUT Ž–,C–,CUxèè’]KÃ0†ïû+ˆ^¸*☚¶ÙZ¡[GÙ.ôFº6mù(I*ìß›dsNÙ…ó¼/çœ%ëEz¨ÅE"M4ÅaL(†kXIÑa© V(ØPà0ÏC³ìù f/ó,ÍòÉ vøLa9]D_‹Ž”£ß(¦!šGËu”»p’GñÄ/µ"ì£\c®Õ°ÕŒúáüp´øŽGŽ8Ûû?Ütÿ¡.¨~²ó;>aG·†m Û|³Á!e”ä¶Úäî\OÌ­ç­[ Q-v¸‚îÂKÚWø­Lá›ÔÚ¤¯!hÃóžm±QCÙËOǺûŽ ¯þ@ ¦-`Œ÷üðÇ)z_YM)3:½2Ihµ¬Ð'¦ò$˃¾%J ¹Zl1UPKÁœ@HÒ^h ¬hð¥º:fåÜêž—šnŒ[™-Ñlãl¹6n¿†Yöÿê PK}‚13ØÊóÒå ctsim88.htmlUT Ž–,C–,CUxèèSÑn£0|ç+,*õ­¡½¶¹‹ÎA‚„”JI¨(=éž" bÉÆÛmó÷]›$¢UÔ;$„—™ÝÛ8-VËÐÃ;Jªk¦9 ÿ0ú†V´18èàÀÁž‡ãlþųl™åÓ‹…{ ;Bëh•L}-[VŽo|ȈBqJÀùŽnsðÐY‚¶ ú¬n|׫{œ§›ùòa½Ùó,Z& ³(úM½B½^ˆ­`¯’¥p‰Ý—“Õ„ñóÜ -¸s, ç_-8ÿ¯©åvàûaLO°† #[`ׯ„zâ—¦{…³ ƒE¶¶Ù‹ ŸþvPK}‚13h¬»úè{ ctsim89.htmlUT Ž–,C–,CUxèèQKÃ0…ßó+B¾¹:2Yèjk¶Vj}ðIJ—­¤)Ëõß{“NP؃por¾sI/šÝVÞËv/8(ÐRD,SæßPK}‚13Y×ã€Î ctsim8.htmlUT –,C–,CUxèè}VmoÚ0þî_aQi]%^Úuk7-T:ºVjKEÙ‡iš&“˜Ä›cG¶+`¿~ç—„Âùòøî¹{ùãCŒ¢œ’4Ž 3œÆÏ9FxÂiA…ÑÑÈÛ£‘C!§_¾ãñ×›éÃtvutë^àä?]?N®z¥w@Ãýܼޣ›ÉÓ|2s°»Ùäöª—ÍŠ_‰Æ¢†¹)x/¾ G{·¡rZš¤+;°—@KÆi/~ÃÍgûî€òp#K–¼dȬBŽóènf“¿;ï¨QôlÿÏo4Ž)ç¬Ô4}UÆÖçÄ5~ÕGóyœ®£|a"RÞø³‘8¥K&(69ÅšlPßRY òG&ìqÍ4æTd&×xÅLîð p¥ Ë¥;&˜âm²î'›gˆ¦K,¤¡}O…|cé¥8ÔˆèD±Xô’Ó²ttdFÄw?-Xcw-DÒÃŽ 6JôÁ•HÑÄ‘ñ"Í*ó¶LMÎ;µ)¥f†IÙ¢ýÜë¾8Šê,Ö…}*˘â¦hW ¢| œðå`ÅRpc!î˜S–åf/Xgþgü/\þF±ŽôçÁª]äT‘•8¤ì‚tËêr þqƒ6ÜÚí9‚·)4’¢™4Ä–UWù LÊ’3貯æ›ÎÌß52¿t™kšÙyj'þâ>"´bÉézˆç9ÝÔ”R­=N˜J@Ù5+jù¡$—*uy90U¬  ‚_ÉäÕ"ÂS¤HÊ^õ.¶&¥ Qæ.0â2!Æ((rÚ?=Ù–ºÆaø`aýîÒkH„šþ0Œ6°ƒ©kÊôç*ø†‰ êÁåªíÆë—¦4õYA ñ‰Ú´ò`…’Ú¥²—Ì ­¶†ó4¬Ý+Û14E®je.°QDhî\DkuõÍy£o>†¾IŒT»mcmuŸbÎþÀPà^É€#g =>ÆK{ŒÔ¢ZúµÜh+÷nÅÃ0àf¿zR ' ¶ž‘(ÔBñ½p…Ä ƒ]ªò5Ëû6t%l[?Ô ä½Ð~iûÈó­™wœ·[ªÝ˜{š °ÒJÉl·ºÇƒtÝê@gÜÚ|ê)A핬žL5cì³’U ë¶‚FÛ®[ì¯RÕ$¶r»=â»bÛvü4)@6pX5Vh‰ÑíôirÛ¿"ðåÿÆüPK}‚13œ€§”=  ctsim90.htmlUT Ž–,C–,CUxèèm’QkÂ0Çßó)Ž {Óâq,j­vP­tu°' m´¤)&âüöKZ7 „Üå~—üïçë„ \1Zl¸Œg£°ßÙØo#áyºø†ù*L“4›õ–í°‰l‚u4óŒjx1y6# 8Œ6y”µá8‹–3¯0šË}¡jÃj£•‘Â#áÍu)ðN[¦×;ôÈ®yF½=R¯yæÝÍ'ìÛð‘[öhÙãõo’qœ¹jãÑ­ Ö@(¯¸†BIIë¨Ý—Ôð‚ qÍŒS187 ;„ºXKpÉmè N.Œ®}úÃõ¶‚QÍàÄ–1ªMå’¸`ÿ4OÆæE¼_$«}°ËÓÏ0H"Ûæ<'_œ] Pë»JP©Š³´]µ U}¿Jf(z€·®:™nîÞÔ.ÝøPK}‚13ú(b¬ ctsim91.htmlUT Ž–,C–,CUxèèm‘]KÃ0†ïó+BÞ¹ª™˜ºÚÚ‹m…R/¼’ÒÅ54¥=óß{’VQX ä=ç}N>NxVî¶‚ðFVÁA–"µæÁ¤yàBø&~£›—8ßæE¸HýÀˆî£]2°ªîVD‚ÇɾL ogE’†¬†A™÷Ú¶ [– ÍD<‡®„þG×kÏ,¦mo™xí.P7©WžÜ¼ÄÞM¬@žé#ÒÇ:˜/ͳ½7[Í@AHÙHZ[cªö@{9H(`jì:ÙS—Ôö•VF¡e?¼ûu]‚ÖEĨV™ÑxÚ áô©Ò£üåë±?Éa‰‡i¾/±•®é¸LŸô PK}‚13[ŸiÒô ctsim92.htmlUT Ž–,C–,CUxèè…”]oÚ0†ïó+ލ´«ú±Us#ƒ1‰¢ÙÅ®&×uˆ‘[¶Ñʿ߉óÑjEò×ó¼>6!d™?¬²„”œ>gÄ /y–—fZ)Z=ÃJT~TžÛ‚2NÒ† ià“„L7ß~Áôûl³Úìî/áƒqXOæ÷æPž¿ø:“ŒÌæë|¾ Àr7_´Ào¦q‡Ê»aé•d³vX+Gš3ÐÝ(¬^xm»½d¤ÿZϱWoÙd÷Èî;6m+&Ë]}Üå8z;¸ŒPžg³üQ¨ÏMRpàQSÔ! ®äRB¡-PluÖXùIÖ‘^k醀[%ïçÑ n©­¥ï"ŠcżЕë&ö–šR0*“°etç¶j9pg8XÒ ¨1V+¨ç¡Î#ZºJÜ ëWþ_ê£ÍÇ’ }Rø ^+OÔ³0†qçDµÿØÛ1+Œ¯'’ú µ¸#—oÈ!ÙÖ·ÿ•È4{ôÔÖAÐ?d$6Ùt÷>áºIèaIUˆÙvlû ¢97MŽ(FAÇ6Šßvø¸ÅÇQüs‡ó£­of¿t¢¨ Ýju7*Ý5’)ÕØ‚ÔtcÒèòòÕEo‰"nµÿIsè¥Ãqçô‡jºq몳,g­„½œt±Yç8Q¿À°i^ƒPK}‚13€­ó] ctsim93.htmlUT Ž–,C–,CUxèèUakÛ0ýî_q¤06h(Û`kh³d-¤ÉH]Ø> Å–m­²äIrÿûÝÉN²tÞX Ø–î½»÷îdGwÉÃ<¢’³,Žœp’ÇŽ'T©³¢r|ç¢q·}\D·ËOßàöód9_®®Ïfþ‡47°¸y˜^œ®EúþÝ7q4™.’éÊoß­¦³ë‘'þžjå¸r6,]%Gñ¤$œ†~¸ô1g‡‚FñSýq¯¤ûHÿ¡è·/¢%«P  ØÆ}íÑÝŠdß]ºƒË¸™$ñ$yUâ×ð R¦`ÍA¨~ælWÎ!yÎ ª *îJÙ0ˆ–s"™ßcÖa&¾ãiãg+Ó8`ª…š†ÜØîÒ3‡Á–ŸÕ£)«©®*¦² )§+áÁòF¥Nhu¡CUà²0'‰ Äj¬AçÖ‚°¨ÍÖ’µ< aÖÜ4A¿k¡b-Rˆ W”÷Ï;r[r)‰Œï)^·”ÅKúÙˆ½'k8äWc±xÙ·¼t®¾·ÛmX¨&Ԧŧ™,ð½–bm˜iA+xZÜ%é0ªÙÊq¹6• °äÚèÈŽŠKaF®§ÜZœŒ0úÿ³‘LZM6¤LJçtз;C’µ%Èï°5OZÒ–7°"X3—–A.$ª¥ãÄ„¢Ñ¬éD4Cô½8RïÇsÝTD·8í|òÓÁø}°kÜAõi]sÃüA±­u¼²ÝlÚ¦®µÁ«Îqx ”Ìdh½zö˜¼×òÚ6i ̾èÄ›s?l[l)ü/6è0{‡Ofül `ÓÖšz{3g½ „PÖá"ó(ìpª}9´IiM]u ÑSVpC¤=§ŒØ¦¡ÊèðúÉ<©ÆGÖ? O}T§sÍ¥Þ­™ìßW¾IÁ7ÐèBx[¢ëÜ{Áñm˜ÄƒHp$^ÍÚóŒ`5ZN YY¾R)ªÓFQ8™®âé¶ÅÌ·ÓÙ ó'ÑŠP‘õ ªÊA49m>C¿[ÌÕ%÷ ÚÕ}¸oŽt-“û»Aô¥¤nõaï:¬Ìn—3.?ã‚“àp¾u†çÃþÆpœOã8šÄϲŠYVð¡ •–ŒÜ7„ é«…úÂ}@’²±„Ƈç™É„ ¼]÷å³M]kC¨ÀwQýÇãѯjé«ÔÇ´ Ú¦/FËÖ²R+Йç¨ËÍ :H£UÅöa­ .eÚTŽ’ `&HeÉ™M¯Ye}6þ!WDi!1(Sb.¥D… eŲõžQ9£^†xÃb[ºï9NÖ¨„¸„ó)HüEéA(ù)¾ëùÐPað!ÜðõÚ-Ü@OQ[§.ª¡ÌÚŸƒõËÿÁƒÉ)¸$.[ÜJï)wîD!,ìò Ó®øš AÛ”<4­<·÷7“Í®wx{ÔǦÌ|mòA4î6íôÎĉa[Ál½Šù=¹çÇ¿îõþPK}‚13rؘ´y ctsim95.htmlUT Ž–,C–,CUxèè­TmkÛ0þî_q¸°o±Yƒ1Åà$N3HíbÜÂchÉÙÕ‹kÉ]~þÎr Í(,c5XÒIÏsÏÝéÛV7»$`-òCœpQ¿gñ´d±?¶,Ö_ay½*vE¹¸Úøx)äéM¶‰:MØ*Ë«¬ôGÛ2Û,½³BýØíP;µNÉ0YÌ‘çÐOs¹ò†Ã£ “»î5܇?p’«0y'Ýçñðq"ˆzN¸†pÍ3.>EͶå˜ìv>æàûÚôʂ⮅zÐ{'Œ¶`4p°B7A(Þ`U‹°7Jq}°ðËô4 ×? 1{äèdDt³'.¦(о³˜8'gÅ´ýÂ]ºÜe´ 5e[­á>Ý}¹ÎUA€̼¢~ÂÞyG‹7ENãjíœrl¸CèÄ%ø|ltF¡¡ü«ž4Í%b@ÐÜ =’8=•V©ÿWÝ?ËÇhêß7·ýÅòöqà=¾èEüRµ7æ²|iïÔhS×=#Æ'„¦éÅù PK}‚13<‹;4" ctsim96.htmlUT Ž–,C–,CUxèè­Um‹Ú@þž_1äà¾i8K)¥k ¾5bs…RJY“Õ,·É†Ý‰ÞýûÎ&Z´=¨h&ûò¼Ì ;+›&óYè±\ð,d(Q‰Pnz,h‡,h6< âÑ7<ãY¼êßMš‡x,¢ù¸ïÇ't²áx‘ŒWÍÖt5žôý­,~¦ºDQ¢íæX(?¦Žçнs×LP¼ >UoáÞ·8¹yðÃ{…ŸÜï-܇#N¼TÚÜý–ÀÛ#88D̦+—è´×€¾ÞR˜6……‚c›ºLQêÒ‚.î5È‚o…íB’ HuQð2ƒ½6Ïö’k¹gWà6P)ñÒÙqU‹ìÈeKªÕ |²4cÁ ts%‰‹dYÕØÙH%J^ˆ‡?æ=Ð5ž.Àw]5v»Ý, ‘ƒzÜ.ŸèGƒÙ˜4¦Ü“|fŸý$&@:.žeŠÇ‚I¼ µ 5ìst”e€T“Šœ1èµú§—­×—x}©×hxŠ·µBY©×K\çìí®™ÜÉL\â9j·;ºcwQe‘£´(S®(QÇâæ/ûæ¤[¤ãÌMFÆç­öîØººL9Ç9ù!æFȤc§ ÁmmDñûpnF¸ÙUiªº(;•Òå%ù.Ò¥×ô#5õ†ššB¥ ÔŠhÛŒU×e -X¾£öEíry¾"R£÷ÿ1LR»*FZ;\ípD¸‹ž>íÿÂ/PK}‚13a”¿˜} ctsim97.htmlUT Ž–,C–,CUxèè¥UaoÚ0ýί8QiŸF²2­Ú4)P HM'MÓ4¹‰C¬%v;…î×ïì$%¨ Ñ±}ïÞÝ;û2 nç^‡$ŒFÑ\§Ìã1Ûå²ÐÄ­æÄµÖN‡ —×ßa8-çËõàâÆ~ÐÙ‡…;tÇ.ºøÁxmíÓõøfÐ µâÙ¯P Í„VN¢³´ëê©qCè—¾Å\؉f;$¾Ïá®*û]ï]ª¿šß1ÜçÇE,ºA覺u¾dº6Z§ýV!pÒÛ1P<£1Oh ”¦"¢E›‚æ •µ9d…Ú‡Þ½B4q‡ž™wH<óy©{,hÆ@–ú`þCæšK¡ÇùI\t¬—Õr‹ÓÎÇ8À1*®á›?ŸMƒ`‰€ôLØXÕ–¨CÜ›å ÝàÚ: ¹ŸÛ'Žæ3¬:åbc¡+Ìž> ~ÁôV¿[Êm‚„+À¯ND,¦eªk} äùåUCyÕ{àV‹É ð&{‘ fð”Ѽvx\Ðâé¤?UaCáßf3XMn[`âZýí2áßúŸ5ñ(³âœß1 dŒ'›@qý[."¹uŽoAÆ"NEEh;¶Ìöè·J¢¥–ç Jh÷¶<ÒÉ1Q@vK†Gç¸cˆ0§ã¹{"öÈ©9Ù‡â÷jâ2M÷"÷ëJGœË“–O',§<ú'Ö?þo%UHSvn)ÿcKT7½sðᑦ¥1˜<©a:­é2¬&„£š)sYµý«z›«Å²Óª=í-ô2€¥¯jû—¦ÉÒ4º`ì&=CpâëË’qqnQL4„ó¬ÌZ§Ëfü–Àt÷ªÀtwv`\«/åê†næ Šê­ûPK}‚13á§|¹} ctsim98.htmlUT Ž–,C–,CUxèè•’]kƒ0†ïý »Zz3ÊRA[[¶gcŒ‘ÖØføL í¿ß‰±c-½Øõœ“ç=_„DÙ2ö,²g4÷ˆâªd/x]4Ä5q»3Ë"A2{ƒ`1Mâ$ æÝƒRVþ2œØFf£À÷È4\eaÚFi8ŸØ[%yõ¹mjÅj%½ªJÛ›ö®–À%:uÌ s;*Û[‹[܃áxÁŽ¢i»+Õ£~oÁc‹}5_ˆîÝQ·ošD©7ýlMkÆ¥(éI‚µU¼©nšƒZ¯èŽAÁKæ@p‚œôPª{Øs©šö%ݰR"™÷¨T˜A*¾Å`Ë 7ÙYîgÜZà­%RÄ <í[$Ëúf°¼8¨¡®TÓŠÁ{#t'Òqœâ"Öëþ•Áâ ´qÈl¯~ü´XM²! u‘ºšV»\qçÉ sºÙ¬Ëq©y9Ñ2)¯¦t.døIÿRV/äU¯y³.ÆúÉÍ΄¾Ìø3×ÿPK}‚13Î^׉]” ctsim99.htmlUT Ž–,C–,CUxèèÅVmoÓ0þž_q*‰¦c/Y¤vë6¤®E¥C „Ð-qOŽlgƒÏÙNÚ:­ì •¶Æ¾»ÇwŸ»49_]ÌÒ(©æib¹,mªú°¹NFa•Œ¼-Š’Éâä LÎŽ³ÅòèÉ©ÿPèæã‹éÑ „ (`œ&ÇÓùjºôÖóåôôhYÃëï™’–IkâÊÖbwKÛ®o½Ï¿°ì§¤—Í.¿×Á\j>öûÛáúòà øºLyA¾%ù–½ï¨Ë99_ºjÏ×DÐcô‘×­@Ë dJ–Y®$¨>5þ2£ExÖhuLæ9 V­Ì¡©PZUƒºrÆ8ù@´LÒKƒ%KF“Ô­£dµêŽƒ Ȱà‚I¬ȶ¾bz˜3K¥M¿qÃÙ­¯ªñgÆqü-RwÄ"lß9d<™M鞨ÎÕ |ÏÞŸÍV 2a²ðÙzœ(.æ„7ZøøíˆÌA‹2G÷¥ÆQr9s³÷D,UL×(;Ì~ÓT¬i†B•YZÉí°i…a}n+ú·|°”Ú1¸O)KÒ¸¡JZC¬fšÑM¯«ï8¼#õÞóK¦jfõ¯ý¸´lÅÀd(%ÓÐÇð ÏáEKêCÍÞF_ Ïš´5’2E8mËÄ~´eIÖ÷X—lc¼Ÿï‡J–Ô û” s/`×AëFPe -fô*ÄñZ‘Ëý®|Ed;ßÉ> ÐI Ð¸în„ŒëÌÝþ©ÒÐ3Üß §¬I0äõEºlâW>ÚÍ¡ € Ó~ëεD{B¾ô€1¸äsV`+,pŽòQVEØÐüh4'ÿ q…†DMK'³µ¼Á²›:4öúŸ”]p&rWˆ‹\{·åì9§Qgƒ(Üz=LœZÿRÑ¡C¸,_„¨ŽßkšâƒÀÇ~Îûâ\=“|Ç#8 ³È'nö5È^A§:t¤ü™ÖØÔ“Ø—®Vø.ñ~ »ƒ›DIº»ÙMåç†ïÉÜ_2—;(vŽþÎ(—ÀeoXȉÂC¼sý8óS²ZðXD¦3Äýü¿GÇ5JE<‡®ü¤"o­P›ÌÎp^‚11ä,âNŽf¡aö BQH”ñ õ÷ʸìY³]W²©o¤hY±1Ú¾v¬¬$âB²F`Ö¶5ˆS‰3õ†×8Ô3ƒì¨fÞPKU/1Xl rÏ alphacalc.gifUT jqHAn–,CUxèè¥Ôû#ÓÿãðçkW›ÛŒ˜ûVî”[ʥˆªb*””)¹Emn¹rC®‘‰XCnïT”Ðåý1%÷B¹«|?ßï¿ð}üv~<ç‡cyÜÂÐÈÓšïÕÁ=z´½½}ii ‡Ã‰DÆf³ù|þàà ŽŽN§R©d2™Åbq8QQQÇ`0ïܹãáá1>>^TT¤¨¨¨­­ýæÍ›S§NÕÕÕ¥¦¦úûû‹‹‹›šš¦¥¥Ááðúúz{{{‚ðx|qqñÎÿÿo¤M€:Ðúßð¿j‡wn¥%“Ú÷àz¿ŸqÑ`e u­KÝ0þò{X;Ÿb»/ÿ´(Š¡kØ:¾Ä ?yPU2:n·¸½Ã`F: ˆ`‚˜¨Ä¤ä”TO´¯(++;'7ƒB`E®æ•”>(£Å ãÊkjÕK¿’ÉyÒÔœ*v‹.æ¶ó:üðH¤`xç?/ÎÀÑÂÕøêýȨeKáó±ÿ3 ØÓ7þmªéÍÝwÓ ßËDQ@øóÕµ”‰|ÿúŸ¿³„¸¥:6ÅðòäI§8Û$tͨÀJ7‘Ä|¨áû¹R‰—3KëTS˜¦fPÒ™óø›ùYÅsÿrþ™Q'!¶[ŽÅË Dí‘euøêäè$ýŒ‘ÝYC ¼Ð~"f a‰Çî8Þ“‡ Á³ê~ 0Q(%snUcm™ÏP¬1 È ¬<™ÜÑ\7ÞÎØtÁ‘‹M@ ’çšt‰W ËÏó’8ß^æØ]šá@‘¼˜3QM{?CX~ÍÛý•ÌÒ”08²,~b[ÐíÐ ç ¶4û·‹ïãMu75-«-Ñý¹¬bØâøàôÑCKÜU•M{Ç2ö=vz¨«¹‰ Áêægâ+Ç5 Ýë¡“ä©"ƒ_0|BEpA3² z¦šåÁ…)Þ*d€˜l.º€›¥9J-0Ñ 2Ö”ô<{‡—±×Š')úúAŒq‚•ÌPð£Q8“VNÁI"‰S£‘Hêé+æ=S˜0ÇŒÁM6e£pK*à3Å¡„Ö¾šãúU^A@†BÔlÙ$,äàìî%íàü-_Ò0®Æ}¤xœXG‚K2Vv W® ÚW’ !ÞoŠÚ)Þ÷ž{A..Äy&ß~»ò°ó¼9 ‹ôñ†o9Ž•E»°˜°¤« ¯¬C&9ƒ'X$zs V‰˜­6xSY/‚‡჎:¥ÿÌYW=^ǽdV€ˆ¶žò·MÿPÛ@?É™knéÖuQHÛÐË·ÙS‹‘‚>HD£Ë#õfá—/ À=;^tÒZÌ—Z ó×ü8`öHL„ÌЊLÿ»k™ç0ëÐ>é÷Í©>=¥lm—^·ƒÞqŸyöÉ;«£rõCXù€R{ÿHÍ$½ ÓáEÑ{WÍ¥ä÷#œ0ÉC¶¿¯¼£ZÖRP†Ór}=³AB”ûÍï«£´7! Ò }ð¬¨]ûè×üÝxÙ_5 KIÓü_JÓq `yí}ð+bgr$wÉ8XŽD¢dvªëxÈÑ7%òJÐò„yˆ½:ü³aøº×ä$s»[©'çVÀnó%]lQ»‘V~áÄNXdæ¯ÕÉ«NMØ•ž«™÷_p|ûyã…oû?ýåHy~th¶ÓIˆ R"Ä<¼œ8á¯~}c†-ý5Ï‚;x(“"ÓÍbmß×ÛbÞœŽùí‹J¼DRGð÷ÖáñÁ@öAÒ©ë1=ruÈ»ÿT]‘*¼5¯Pn²n$ÂŒˆÿü¨¯\ëF»ÍmMBÖ‘û‰rtÂx61)Ú¥¥éÈ=f×=ã^—-KmKúöðŽs‘W£ªÉr ’X ‚ÊÄ:3àÒ€Üj}7À„¿äí7W’Ñ9cUÂ÷P!JbùVCÓןõf‹…‰Q°IŠgï'â¦;‹Âp"›½8P§­@+õң׈h¥ÜͨE?6@gÜ5ŠJ$ÏŒ¡Iî婎çßzx tv|ˆÑÖv}õãSm6E7p{Ý8†½ù8òµ Ñißé¼õ…!SØ ÈÕá{Gáy%”zXö{&‹i: Êb²˜òž8œ2ÝX\ž\oä/¯’àT1*Ävl¾ê¯˜JÐ@/~÷žíÇО,ÌåQ7=1-++…Q}¥eûŒ^kÜŸ‹c¼€È*‚¸”˜ë¦ª&œh`€Ã‰S?Ôâ\qýœß_ܧ›LVÇÆöïš`™9U߯ðúSŒ[/ %í¾O¯YõgßYCÂò*Oú œˆ²þ\ ÊËØ²€ã N~1÷¡Avîyr*”?éLá‹l£êe;Èë‘vw€›òÙãzšùÛ Ü&_ £É¼c>™ÕÞÅ®òºdÐåš.Tf_6c5Ø›P¾¦RšòõòZyô™B¬fF—fÃ#5q‹ÜÄÚ«òÎe: k«÷Ûjj±†³lE%ñt£êÞ§§1#zQõ<Ä‹°Ñ™J åJC ̱4K] 'wý…wg³¥» “µŸ1–ïÛoÞ»ZêfóòoCòÈÆ!+É=ÖX$ûtRÔˆ éÓç¶CÍÚR—xæ •IÜÈAÆÞ¯müèׇúÞišÜKBÚÖÌ*³åÂÜ×ñV‡vÑó$°Q ÉQ…4ß<ß²ÞúþãpJh2úЯºþß+N ¡á µ±Ï Ã9¸çÒ·O_SîùøÃ”À‚­õhT !,UÛc|ëªöÍK5Ûuþ§ï¤ËK1¦à…ë»3ÎL_ ÄnHxk²¿6[ûÎB@„ÇÞ[ë½ò’îº[åŸ5äm—rQ4÷iRüÖ…Ú/¤Å„ð£h}#oÀÖ½:¯òÍé_õܵN($éË'Ýì®WWþ‰{‰íµ˜P+3$?/Ò{*™¨›š“]qI‚Jì©Ù¨‘ØÙ@Î5a‘°Éÿ~šåjÌÒ+D÷Flõˆ¦YÀê‚)L© äiM›*o†ôÛèGø9ºýõôtÚŒ·¸<°ç@%ÁÔ§.4½O|~ÄB Ö+ûž§­jñU•v[dÿpCja"ì.¤Ë(Êù¦jÏ™Ú&ú‚yϾïÇj°|mXÙ˜yþ%YŸ–¿k mųfÊτϙʴÅÂà'…îŸ÷Hxø} òHfëHñ>U×ÑB@N~2âr Ûl~ˆPíø®÷kÌùG¨sD³ó-}êÉÚÿ}­I¡{!:üu…JŽNåø4Ÿ«´M|ý¨à$ÎG¶cç>‡6k °†¨yš4a C“W˜ìn5076»˜\UxáéÈgÿ½?~V=>.‡ÿr‡q<ŽÉL(ò|a½Æ©a@iO*‚1ã2}/œÄìÇ(Àà•µˆ÷íèê{àK”ì½ßº?â"ýÔ {~‘ÁWó¥M(.@ü4$±avº¼/Ìb„öú¯ü:u=Rv¨"Xà-´¢Šº6…@å =Ï N‡%œ‘!üò¡¤)³aÃô ¯£ æ€÷Z5·ú-¹³N:b‰²SA~9sXLGöT#™CW'šS…DøÑÆ!w~¬ú8Șê´ž‰ö\ò²Ó>¢³RЪ^ŒÔË¢9ޏõÆz5¦ßŠ0àHô=‡ƒu`×–ãt»•pƒOÓƒäô›B¹9‰-ÜÄgc‰;m‰og:z‹uw”ºû¢ÞWú¥gÇ!ÓFjž ¹IHù`=‡T©P›5¼¹ÐwãæÌ­D‚æQ½Ô Ê­U+µV)÷kôÈmÏóΩuΊPœá2OÆóÎ\ s\QP½|In+ˆ…5im†—PᎲiRi²ýiŠxpÒ¥L"•Ø]”9›Þ²NÂñ’½pJ÷ŦRuŒœV( IüW¤ðH~,Ÿ›¡O„1’ÝÎ=Δ±J·P\ €è¯áÌ3PÚnŠ´l4¢„–¡æéFýy7‡¸£vË—ÂO9fyÏjÁ²}jXòjÄþc•êšµZ ]èÅŽà)âC Èé^(&{s&ˆ+^-ŽÉŽ©Ò¼ß!Ñ‚{3Ó¿±€ÅZlj¨ú}t§Ÿ9BϾќËzš!-t'4c€àz9¯²ä’RˆpîŒHÔZ'—¼šQâ‡fì¿ëøÕº>ýòÅS³#ø1N±$TpÄ1¯»Ÿz:>ç-åÛˆñV­äýOR '‡gŸ?ÂqêÚtøüá~¾r¶xÏD¹LW>2 ‡Š¾ì× ƒ÷–9ËýmLèy¨Ha³ÐæiÓƒYy¨€´vøëSˆ6NØ™èð’KoÃÐ?IÓ%äõ‡ ¾“YOA옩LKñ RæŠÁ·°ûªr•5Æceõã„|±oâ=ܪŠÇßC‹®›¹‘t‹)ÖÆ–Š]Ã]Ï,§‚ÅYª‘LñeV#)«„øÀÐåÿ«¬Þ?öÚ9ƒ@Îò3V¾ítXFFñ €o-m\>ðNÖu‹xÿK±Ï ض(¹¶U~1³d†R–Äq2ǘœ c‡¬R«%21'õÊ2œÎH®ø¼Í{¶K¹ayÒòì{ëó˜¼òó¾U5CÔ† IÇ*öGáL몌ʛlSO¬MÕGÙfýÒU_ûùÆ;:]•Ç4l÷<( à€mõÊë‡Ù¤},™Ãý¶8L=Ô–±ÜE/YÉïÜB$Ü=9ìR‚uÐiö5X­´Ñ¡œÌ«©–!tÌ‘ûêG7ýÞ®Ôc Ñð¾ˆ7ƨ}¿äV°e£/*6ä0(ašùŽuå’}ÜIœÂòc>== M¾ã¸sJދ׋Ëe^¨ÿšP¿…îÊLF,éÏÉT;ÕïÖDIÎqTçè™4ìwm8Ðz€¼÷ :„—^oµËN¼ÑÔ¤ÑܵÑüaƒÉ­z¸ò´”_m¦„pOe|uý@K9±*w~÷òeè.¬¶z^ `NeRbwÜp€·I+“Zmf¯t¢%ãÌ[ði®5™U©Ñi#m´7îY'.OO< ݬÜÆŽ„^‰ÞH=cÆòŸ?a%2¡Ïv©“ž šmm¡b"\(ý–‰Ñ6ÍNö†”xM?;!ôó+íMdš7dˆµÇèA¡ê¼¢ÛB5"C&9{¢X"Ô;Ï{ÏÁ s€ð%):ôû–ƒ"øå:ÅF˜%€7—õÏvìúý‚ñ ³É8]‰+êºl1Ð5­ÒÅMÛÈO¹$.H„Dq\òÎÀú¶QZ€Ÿ¼ö­îៗ ›OÝ %Í4Û½&=í_¸ÞÏÔò{Žîîñó³µ­Jõÿ½§Ü°Wö,ÈmwI~ïvGKø3Å'Û½³ÌÞÈpù[n}½Ë·âÂåF¤y‰‡Ä¶·úâÝ8én²ß\ú­‘u)Iý‚… ’g÷_íè.)ðpûG’š×DQ0ùPKU/1…@pNÆ1è1 divergent.gifUT iqHAn–,CUxèè—U_¬7aé%¥YºC:ý¯tI—„¤”4H£Kw‡4KwwÉRÒÒÒ!( ç=çœçn®f®æ7£¤¢(.ay Ò>~üèêêÚ××wqqQPPðíÛ·ééi˜˜X__onnþßÿijjñóó300<ý?ÿß0þ…bÏÿÿ×}B°$Ø8äÛWÕ9~vã™örþæ[wxñ„A»)óP«%{Œ9IÌTx©Ö×i Nœû÷m7øªó娭7ûO¹t»ìèù”¿~ñ§çÃôE÷ɇàаðˆHITTl\|Bb’ULrZzÆ'y0G egj¦•–•«Cˆ°kjkDp@J ˆby|„jìƒ%ýS`K£k?N¬Úî”ìûU ëôÁTf† Z†M-œu€^EE Èq™ÍmcÔ¡gÊGpR€ë E0!p`ÉÀç<!Ý ©½°\tœ._h´¯~o†²¨U#ç5aVNÑB|®&!”Q¦R ¥t—¬Ó0êôS0*ÀÆ%‹#OƼ\Gâ3kO\âW¿mš~ù‚˜hŽ÷9Ò£R\°0ãdú^üôÏŒ­pEŒË&×ðën-tzºÏA˜Jx½És>±…2“×€–ù9[1¸“A¨õ¸`h¡žl …z0ö*ÁŒpBodâ–|ËÌZs¥Â$H1FtËÛ“ØJÊ{Ñ. £R`@-ï° â» |mä`t?)ën%N­ÈRgXÒ¡Ÿt§„/g›àÒèTÞ’¸)X˜U½S g*Ô:,µ¨Þm·¼ìã”DÜf^üÞ?,œ°Œ†Mr›z±RFÚÄò‰í‰­—sº°ÕM¶@«Œ჋¶¤Ó“¼ ã¢/B€„+¢¯TÀ|NÈÄg^ý—‚¼Zcą́Üá"d‚ÇÖw̆¿öiS<9߯ñm’y§LI-Ã;jKvþ›–mPãø±xÛ°t#;þãT4£Í, [ÛŽG+<£jó‘TcxÍÚ^·—c&Ì ¼¥Ï&'E‰:& +˜*yç`ÅqbüÒº> ‡Oóm*Ö¢Ã_™~µøð]ÙiSO Ìzœ¦@p…MÊ”R«:r9ê·õº÷¦É«Flíno渳ö;91+ºNt=›l=„Sž®ý=î§ö×ä*88ûÎÈ?qfÿÊ\.ÿAõ‡,<w#í2ÖMÉö[ó'dáñ'D%·TšfÉ¥GeWÖö»A‡$&È.ð>ÖËäÝÉ]â6‘8#"îeÕß;ñl…ÏdC ÿ}¸IŸZ—ZgȺ·%L¹2½ÏÉpaJy‰!?î—RV¾$‚p”‹¿Â>ÕYfJ‘/ˆÖ¼nt!Úb¢MV"Y~'± XLð¢à¯-3²âèI:§^ø“¾°2“ÝÂæË~Yû4 ÝŽHÊVp\â˜8)ö¸-b¢ÊÚ’ާræÃ™l,™È EŘ$þ›LA,é¯~Lzi J Šl€_p²:I7¹¨L“µ ûÂwv¦1¹Lp´´Ì<5’dA†4¤Õ†˜Žk½W‹å"c…ÂQNš“ãà9A‚gÃQÊM‚qê¡ý({5à" —D¡8Y-…šëe¦ûCgþ†“Fƒ;áÿ­D'&saEƒéjêŸlf½à’EVtªþRp]•ž°x}ËCƒ9cSý£ð–º¸òMQëi/=þ \*œ,>xìª. \ßz‹‹*äÄN¦Òõ{"³NŸ¥œe•ÚÒW1#R¦ U"Ø({«çVë‚W"|YFˆÅµCÙ®ù#4n)÷Œ·W6€¶™!¨j”e¹ £’',˱®~L=“Ó* èlx~ºÓGD},¬$´†$P@mâXAÒŒ¬à3rVQ å¤\]²²¹¬ª›Ç' AïÒi…e{Ϩ$&eÚ­è¦8y’Â{N,ø»fÕP‚° ŒŠ¸¼e©œ9Q…Þ>×ßÙqÃzª|yû%6†¦ÑÀ³«­^Ù﯀pL©6.R}Ÿ8i"Aq7§-~2—§¼:ø¬0j:ïKf­Ê«rc­üî™X>‚ö‰¡êŒõR’˜„Ö¨at¢¦× ‹~‘j*?¿³ÄM,XU_QUü>ÄË|¤‹ÜiY°Ùañ“wG`. -€ jïU0aÒM>+œ¦7_0”m$ˆV¤À‘yÓÑ#,~nlEú üt³Ä|¬5àyfæG¼c¢[7qYz§ì1iŸ8'‡ò%£žÚNf8†àŽÖ-°(þúÌQB(;Y0)¼~™EA¡‰môFE2ìÒ=¥#Õ•<cR[…ý}OýºíÁ‹NUþ ~ê\H‹/‰r gĈu¢ üÒ;\`.¿2¡š•žü«8 ^Â6«QýnBHDUš¿ECkdòç‡Jº(â“'XûÜ >x†èçÎv ¶”ˆWIJgoˆ¦ê;8@ã]EŽ3WÁaY`ƒ´N0ÙH4[r*4ÏÏIîü÷Sžr¶äö'&o ·J£7´þ¯}dt¶Têƒ}Ž(:í†fôÆÓì'´ÏÁÞ| Lßž£(í)áZ{ "óJJ6½ÌE-eHä(YH’Ùçò_fI&¹%ûæ>fEæ H¸ ©@Dƒù—üâû³Àãn’rf€ü'Ÿß™§3V%òWËð3 jV<~uÞ Ågrth²|qd~K:ë ú=G¾(&ßN"ß[7›Ãœì1³Ìà?,4Ìä*÷ÿ«L@18VÜSauòႲÃF³À뜅2ò9Ä%tþ³Y…º*9ü3EÞ 0Õ˜Pˆ?˜É‚åFÁ#Lº©•œ]$ÔPÄ>V(®UÊUè­.º2Q-PSÚKú»VDjÝÈ8Øre)¿&:÷+8fq_–u½u7Ç-õ)AÊ"J¿|Iàí,ö©ÌጇU¹ó'ÑîôqäÛàB¸*”8ãŽûó„%Ó«@ïÉ©ŸWóŠºJžåHSg£»ÊWÑe8¥ÄwUlZ†¸ËeÙÆPŠ*³jpܸðâ9$&V,¸]ýñ<³V%åVA~çõJ²lp¬ºÆ²Z³¡f\¬$Þ(¢RÒÂ_¹¶éu‘’@M7SYVvùèI­ÜOn)pÝçgnGö`ª‘ZIºýqÐÅ1ä¬ÊÅ» _Ó¸ú?.(©CR£¸R™U™îÿéq ‚ƒ®Sh¸@WpuÕþÌnÐjhø¡nמò’Ã4DYwúº‘¨Bõ»<”:¾š÷Có%Õ0VG²HUqÕð5Ô3eø8áBŸ0¸ƒM¯ÝšîR±×Á’§&©ôZ‡ú§¿GªŠ] ™ì¦aq×#”Ž$-¶;Ù2® ²TƒFÜ£¤ñÐRÉÁ?ÆAÜ÷õ_·[År,ï“8,jÙºVïêZªÚt¹ZÚÙ,Z­—S‰9Z*Ú5’ÚëÛtšÓáí\n5T\õÆÆ/Pšìu ­ÒIÙæÝ]EWadá©¿ýÕjã g•¶S.7$ÏëµØs½ãÞ¶cÓçQþµ ’¶£•¢¼Ìî|gÑ]oÞþ T“P )¿ïfjˢ³ŸŽevWdÓ„6K‘m”çRâQ’p÷vWCð¸Ý¼=ʹQ½ò=a3-¼ImÂðn¹†nhë„›]uÓÓžqW÷„"Àk„u–=JÑ‹RËÛÊéy‰îëQë.µÏÆíCõ!Mœ)Md[ÝG¼LÍjüo9¹;ëÐŽëÕ‡±=¡9}wKýØN` ”}Ƨêá£F6ü~é¦ûêfýúòå.j Uà€Âuµ¬Eo»_­ÚV±¦uD L½&áÁr!¨IÒæv²GO€þd·òº «Õ8áCFhUV`ŸÂ'Ûá‰^V§aÕÉÎI(äÊñÛUí¡—9­ý Uc?¦•Ýâ‹fW¬AJOš£Á¦­ô:”L~ƒržÕ¡¸ ÀK !̤EàWL¤}‰1…@R˜žÐ¦ÔønìZ<=æŠ}œnÍD´ƒÿ©·š5 rò™óþݧÃè–©:Â1^ÚÖýÓÂì6WÖÎOÈ}‹ÁçôÄoDù¨Cý&] v&C³¼ ©ý?WÂÔA®Žj?Ôä’& ceãàå—¸ MÑ6‹¾·¦#S:¨±*ÚgÈí‰Ø²A¼ñ1ßÊcS’Ó@èzk`8°»K~iÀ—ºC"vZÐbL=QEë4Õ ¢Ó Ea´šŽ»6àü¨5þÚPe¦k:º8–; ?&ÜØ˜¯ò´tª ëî’˜ü~ÜR:ÅÛ5.zú9éžN>’<‰ÑvœåGÍ>ia¦Á>3v¸žÿƾ-„0ׂM´Ñ85Î[=µZ?û =õYç¢KÕôÉ:y·z½9`ÆkÌúÌÇ<¯P>~±£ÚéŸéà\Ò$¸p“Ó‹çAn2ñãâtø›N+O´î$‹¾«9ƒikLÂÎAx¯\Òò y‚ÀW4MZfÓ)“ eÚe‘Ÿ—¦QSI‰uß}„ÏÆ MÒŽœ*…ÎV5QsYgÓoŸ*w‘<÷>‡Jhž99aIFÞ9Ck- .‰\E{ †ÒSà<¦Œü4»ÇwSgf€)ë. {±7“ÌFÞ4V¬˜˜C+Íëçۇ؉P‡ÿÞ½sýö——Øù=´“ÍyDwMݱw5(Ò[Ó{ùpjW0›ùâJì ËàX‚äeÂØ#èóöõЕº:ÿ÷ÆZCiÕ‹{Üõɾ¿èÔh÷w$Éõ÷=T¿tmà_”o«>vÖ|ÌÍtZBÕµVAöŸ~h]¬R¹å·¼o¹B½´ži±H¼({ñàñî÷>4ëé$væú©‚€ +»šj܅'=á Ÿ¯ƒ²!däHŽ,”…‚„‚Ì- ²t*-ìÿ`€²xÌ_ÀÝçXìQˆíLsâK€VÑ~/ÎÕÿ¶hmá'B¯feAtISña} OràÀaê„!T0›,¿„躦6Y@ î^Çg*žÉÌ™ Ö |8åï&*Ác=GbßF‡ ò'’cùÎyñ"ŠvïÊ1u´ýgÑÁ.x1pÄ#uU½4VdViã+C<‹œâ¤lƒò!×mŒKàÜf‰•1G×ö—ÜŒÃk\+mÈWpF\QºNùÜÙ|Ùñl¥Pø“ ú.Jš»D뤑I.x\„ªîþ“ŽE% µ8è{¦ÍΉ¦x­4¥ŽÉÖh6“µœÙ/%éܰæ¹ÏÙÈ#B[Ó¼ã{.¿Z ;µù´S.Ÿ¤`Î’¤Z¨Ó`º]q# 8p¨ó ¤§&íQ6:V8ŸÓ媩MËp’ôñ¤ñ°Vçý7èS•ˆ(ÓúbDJQ˜xJ£ºJÒ~ItÕí1B­wQåRE…4`†¤&õ|vįsâ¹õxîNØD¿3µ|§'ªÌœ߈“?JüA²o \¥' ´M;À¿Lõ=0“ ˆKpt¸ÙûúÐ@逪LB ñ•ž´8¯Å–ô)ÄZ‘ƒyÜî—ôŒ=½‡&4Ùƒ *¿“}—=ÿ¤©|íÿ$ËØå¦i¸@›1%¬ÀC2~øA>Þü&žBjëÒþ dª’µzõ'¸¬(ýQáx%i“e÷\½Rô4"·´”Û ï¢ñSeäØˆœŸ“ÓÊêÚì²Ý®0-Ï4í&N^cÜ>¶.ØÀÂè öM‘‘Õq'Lφ³:ÆŽóû’…ëf'‹ =èj•!Ö#›¹‚Pu|0ÏCÆIg@O–,.ˉ«jã[¢d‚’ßÎRWqûËŽ4ɹ?U SB zíO "é£V@6›^ñ·@…È:ÅÏÛôÏEží–¿¦HòÔ/ËdʨHùs†÷B+³ÚŒ| –ŸÃÄCÈgåôyŠê⟛/Öü²ü Û·ì6lȬIç|\ÝæêÇ­‹X™Š[@Pø¿ý…BIp8ù^+Ÿ”ÅÊg7¦’Ê©ð{gtõ0¼[ýò^X€Ë„Tnâ Õ&xÊ(“„r܇a·Ð¼Š•ãkÛÑ”.§mÒ)¬ þ£÷(p‡‘ :v¢ˆ•>£œÊXÉux»ô³§nØ[ÓS^¶¹¸Æ‡?#J@q-„’ÑâA­ˆnÑ»Wkbÿ×òôeqx¨DaëÕ¤E4Ì®Úü;™®%ÝNìÇÂw>·A|õn·ZBVÚ¿¶’´rh:ãœÿѯ‰Uw[]Ö±|vÿ(·œÿûœ ² •È%dAò=ÍRÁ˜£‘RÊqþS”LPaIÔʹy÷ŽÀ_“fV£ÊU.2 àÛ->w!*Œð)’…WÅî„3÷š„¤×÷U¢ûý:‚èn.z¨öÝEfädÖ¿‚FÍüÕÂçB\0Ó_Gc(Þo?ÌÅž‹É={¨×…åÊi$ìIÑÉ¢Ì!`z4â1²¾ ÍQ‘e`Úà´d1KÔÝóH7ù€Ò::á'£ÁixñH™G%„RÑH©†ªëe$åžåcÏ‘’X¦V¥Œ„>¤˜^ÚH4ú‰Êò²KÛaBF±‚Ñ%§ÅŽÝ.U8ù÷<­’:|ýQ+´{J@dÂÉ?ijÀpẶÈߟri˜˜>d2ìä7ÊH^¼/¢µÅ QXâç@`”‰ºG‰àY\ƒ.bÊBÞ l´ÏC0Õ½ëºU:<ìžœ¹›‹Ã(À澹𠓵N1ˆeÁ"‹0Âl †IòtB Ä!hþ¾èÿ\sA‹ŠØ—yæHði9Û ÁB…® l†N„È«}rJ‰ 寮òi@b&±­:wfa¨q +ŸåŽ8džm×C¼òq†Œ”JÍX§æé~ü\ëv?’ã„dHŒã0Ý#Ç$t«Bð[¸jñ{ˆÞFT¸ 6 ¬”–.A"[¯òhl£{ñ¥ñ…ªH­|™¸<5 уʦOn¬8,ƒYœýý7¹ÍïO–û@¢ !t<–xïV™Dc^Õü ¶@¥;Ø%ë©Þ¦sz6foòØI®N‡ˆ¶D§Ó‚.´CÞÒŠT ÙA=h(ÃSÞ™<›ÑñküÕþ·ø¦úÜ®$ˆå¦à¨n¤éTáø PEÉ3›C°à¸­DâׇY‰OêÕ§õSÂ=…wì„…nÊNÚBt -Ñ:Û€wkzÁwaå3ŽM¡½Œ’•ð–¤<›^ KÏìNVœzcŠB±Ói5NÄEZGn/?«€k„1b´*[ Bú¢¾$›Åìv¯ÃÌÛs!È$~ñ‡4HƒÎ[¶› FYÚ°ˆ<—ô¡É’P¨§×ž&¾¸R®9l‹_äÚmKâ€KÔ_œ"¸…Ì iáJ™pÅ0óŽæJ&> 9û߈¯~î©9t°ª¥Sm]îÌ)´˜Œ—†Zk(%ê¿?KšÜ}ÔZu¦¨Pî-¯y‚!-@,aÇ-Ã1’á`m˜FýQRè”Ûä{æ,ݳ\ò>é.3¯syIÀêWD+’ãÌàÔÊÌcƒèçj6¿þ_³šO0±<Òc§®¨!¬¤i¥Sñ ò$±ˆ·¼ôOIrVÀì·œRТES³[–¥kÃuÑÊÚH ì`é“wÎ7ÛÉãÅ·ÄXâF¤8róîQxdT¢º1S‰ÖZcDoÄälÎC/9=€ËŠÁ-½zäìÂñHÆ74‰(F¹‡‰æ•ŽXZ—Uôß™Ym±AàjDêÄ[€pæWÁR‘(ã`-wrõ(Ê5?”(\ÊÚê}¸ýG¼âµE…Š-¾ Ûûî¯ñ'aÕ]G±|‡¼ÔÛÐÌê=)â£4ÃBÅÜŠ“ýw#<ñ$­‘û“†ƒE™k¥^^¼l½ûûÂüñ¨hÝ«ŽfÛyd^¹iûj½þmaLÐÇzu~ò*?#•ŸÏ œðS×ó›|‚j¶–¼1läc÷¶!]öúv–ì&ýïh¥2’?ùÉ»ϟG;¥•$4Ô¼<_‘~#ïB&jÎq³÷(­Vïñ§ v?ayO‚"óRà}â{=üsåƒç27žuî}Ђd±Hª‡·ßô6ŸähMG¨É¡êk„q“o:tx>·œçu¼7 ¤+, ÿ•;·˜p[jòÇYQ‚u@kÁtùU—C¿F\µ ÈîP>`£îòµ¥Ù~™kþ+H‡ ][i½<,æB@,RäKœZ¹`ÝÐ7¼üél/ê'Ù\7t‡Ã¶¿~á3?ÄZÞ–j 0w5^o%Sµå‹6GüºÍrO#ìcQš9ìâ7”B¶õÕiþHa…°L™(F¶8 õ‰˜¾.nú-ßø(e鑤h\-órÌਂܘ¥åDÞje=ÌŠè¼WÖÎ^ÉB>Mw4„™'Þôa´ÎWƒþeÌJPœD“GÿïRYZ15ÀB·R²4$“,6¡ êó¥¨ðZ”³bí xI{è¡Éòuª<ØLtƒiuŸ©¬„VäL¢ã%CfÊŸYPb Ê ©x!išµñ¢e׳£7À²fÁú†‘ÏźóÌêãž‘cIóE¸v‘x2m‰ô^’ví¶D^l-í"m˜é¾ã®(èª[pcp¹q¿§%)ÉÙ&.«JS÷ïmuîMɸh3µQÅ£B ¯GžìC†Ö¸ $wûPÊhhÃwÆÉA+U¨(DÆ–ENϦs¿{5Æ;ò^%«ªÐ­ÿ´Ù­ýVaEQC]Qž‘}vw[Oƒ€˜Kp#€˜e·dùæ;ÌÆ@â ¡ªl­ý•Ò¡ÞU fl“<Ë €„°¡¾ÇÇsn"%C4Ïzå¤N¾©Èi/tæöŒ4,_Ÿì+¥ëŽã§°ÈkŒ/J•Ι᪃äKåÉmTÕtˆû.Yu%©8%¦8éötñ1ÂK#h°ô<.£‚¡F±ãçàNþ·¸3ÄôVþɃûP–YZ¡çiÌy†ÿY%æ*líÏÑnÔñ6\å֥ܳmÝdœYˆ©R>Õ»˜r÷_ô\—sÈçì¹O1ßôx8“ïž|ŠÝE«,¬âírhFX.’½¯fG-ËÁ´JÉ+G1d·&.O¢ªÚ)nëfõêIˆ`$1}d )·t᪰…¡˜W–-rîAš ù|îo.M3µ¯ cwû[ ñc›-Ù ÿÆ`+ãˆ8(ÝyM\Qò*®å%ÕFVK¸ .ÏvúñðDzøÅpˆ÷`VeØ4öÍdò™Í05®{74Ä`ɾrwÁ %çˆÊâ VØËï–'ÐOdüÐåªÜ›÷fË¢2×8 öeÕâ&À·¡'9ÌÇ9Kå|6Ÿ>Ûa©º½|ÂŒ 8å¾ÔœCšÃ"$Š [¢#õŽ{'ÕÆæ: eä¿X_6 MÐeôK¯Z‘L«¯ ê0@8i›.-YÞ\à¢Ò¥8^®7¨ƒ­¿~Ž^/ºÀŸo€¤jÝqÉmhÔ‚F½î=9R›ã»$+ì‚C»A7JÒ´÷fØf[ÁFÏošÎñà'`O÷g>y¦Ž ÷‰;$ØèËhÉ*¡š‘À¢ýs­E.ÌÏûQèöû6ð c‚»‹kXÅ<˜'º(—|ÂØ®¸vÖˆ§x—PÎë 7ï:kšÔ¯oéŸg{H_¦ƒ7Ã_yx/P—‰&‘\õÅmWƒç´H§4  éž!M@ŽüITÒw¸E¹_ÉJßuˆvÐüOyWÊÅÚîëç)÷±?ÍäïˆM/i㽄DˆÑäÐO­öèH ^ŽæÔ†?¯<ý>ÑüýÔש÷ZÃb€¥ãO³jî£FÒÌq-—~(¡)f¼áË ï¼÷“@±ø76“ïå$G›ßÃïÐÒœ/w%ß}FùˆÃ¯Ÿ|òØoóÔº*tý?|óʲó¯£ð*ožÐU¨hö›ÎÂëâ÷Ö‰fúÇïà½Kº+ëSÄ]-ê˽}×PþÇAÈ?þþ®¸9ÄJ.¯åv©øÁFYЇ=@….“l[ Ýó^î]yÑÅjÐfˆIxw™?‹,÷àk—ýúË_•ò)/ÕÛG’±<+%Y+ëªdö®ñ`"ƒ…v”CZ¾ôñ?p¿x‹û·±§›#¬ Á<ðWÜ_@•«ªô7Ý}‘V|’mYþïê‡ýöK“šÀcc©'åBaÃÓá]³péIš‡ä§‡@}ÿÔ>é¦w’¼%=ã OAÞ¼ÿMîßÊ)È„‚çI”LcþÒöOÛõ.ëËtÓtt?ë]K #—Âà›ÝÚÏ·×zb­¶÷xï™fÖXnuI­äeäHlªE¬$Êl3'¤JµÎ,®7ïföÒ ?öîô¡6¿õî]Ø©íT÷†—8£Úü·zØ=ô +~{+õQné7&àÏ´änßg¢øž€gâz‡pÚ‰ŸŸç7?\'KÎK}ýÓ«OôT´ÿþÖ,ûØsöÇ«å¡õÐû…Èe}€_&ÿýy” ížW‹>ýø±ýÈß»èÙx[ÐGÄúõùáºG7óé¾]ÈíÙÓãÏù0°Ÿ ·ýÀ¹R_þx÷õöqšBlx àD«íÄ51ÍUýŠ™rô‡Tp¾ŠŠ1ùTè.Î[ÕtO8qˆ\áàõ%æ@"íäÈ•ì}aó­^Lé%(À›gR˜otVåk{4|Æ.}[CIÖ ^Õ5£‹º4:)aá./eWwçpÿö{ ˜h)F•KŽæÔÄ)ÚÐî«Dt›:Õ²RÃ9õ˜Q31qf. oÅ®Îö`• Aôüÿ=íöÆ“óÞ$©i<5D \ ìÿ5øÑác]4¿ª€æ+Ð(µhBá—xŽ@`‰s^b­ÚS¶ô E$6uKãÂE‰ºÿïÝØcYÒ.~ÃHãt^Œ¤ÉÂõñE—.„8ö¥‰¤·doÌ¢’d!ì¿/“¸Þ†ªâÂÍ1K‘šµÖçgðFî3Ý6/~‘ïÆ¥yS”§woOc«Z¾SÿbÅg J›{h÷rÄ­ÿûA•×9ƒùóUÖwI¬Ù>_ćþéìòhñ5Ç;Ãmû¥‰Œ6m´ÛÉZOûÆWÀ¶½}Aïæ´J¡ò©R‘°{a_‰à&Óå:nidð;°ûÍæ·øÿ¦µF£°*á ^黿ÏbYå~~´Îe6xÆÞt Xéï=)Y„TÁ „[·é!$ Y̯¢ƒA¶âèwÏ<`»~4ß\õ“£¬¼˜Ë”¿y±7Á˜¹¿ˆ›û‰ ”­Œ¦*˜ýÏ¢¬e¿}O:¤‚É%)òUj'«'î੾Pa•Ñ0àÌçÇÍD ¤}ˆžJ·pÀ*¶÷3ß´±E‚L± ËV•òô÷[ÑvùÁQ•vA(BUû¼Šû"=ú*ûℹѣâlË’´71œA¶ãå£Î'E¶X'eùã•uãUšUm¸ïj^«¾«ýÐëøŽ0`¿Ëw ã®ÆÇ  ø8Çë›é¥°užÓXçBŸðœñ`¹:çICÔ§Žmoá¶…í¸3 »¶ŒêÃq$à<«ÛE XBÅïŸw¶FÖ:RëÚK BÕ߬ñõ>Æ,ã´[˜r÷a—]Ö&­w“zrŒ7_¾ ´Œ{¨›_²~¨.âÀ÷~ìqç-‘*Ÿ Õ4b›“rúÅšQ Ž'ý&ÅÄ¥™,¼ýÚ?PÇÓHæ°×¿Ò ó¿7ï…'T&´P`áÇ^f~^PQ åæ`”KÞ©ìit|å­2üwÒd†6ïùí¢t2\hC[=Ùùºò°ÝÆýàWO E-d!ä‰Tû,\›Ì¡Äõ¦Û7ꩱSmýB‚¨íöL³ò]»¯&çNi’ÉNÆ›/H\úD±Âæ|DÊ“8HêÜ=S91ò{k‚¾òÏ…ŒËÌf þ·ú+ ‰YÝÈ…4Óï$Wæ,ö½Æ¿÷ZÆŸfeøUt|šâ’<Ô7JGâ_>Ü/ÃП¯`À6%–‘ 9Üâš yS„A¿Æ`7FuÌ!ÿ-\`c)#×ŸŠ®¢ËBU”Þl?ÁXÀ¤à$,^ßx*˜PÉúÁ‚ŽTô2˜’„Ñ ’´CÈeIüÊWž‰äà.´PÖ#jˆ‰D;F…§ˆ€›’‰AÒ=6lŽéYß ;ÿÛ÷¸¦bªBÖ/BUª¦Å4ñ _ÄÆŸ+¹çÓÉùŽHGT%øŸ‡ý9Aþ`…ñ”0EÊsy$Ç9•03àŒ)«z¤¤Õ”°òG©;z¤æž•°ÿ‡3®ã‘VÂSÊ©=.HýPKU/1Ç$Ü®>?equiangular.gifUT iqHAn–,CUxèèU—UX”×µŸé!†nºiñ¡»ARBºº»»;$¤!TJTTET¬yÿïì[gûºöÉÞk­[Ï@WIÙej}¥ü'ïܹsõêÕG}ùò…––¶¶¶öÒ¥K7nÜ ‰X,–@ œœœ¼ÿþùóçRRRwïÞ%‘H8ÇKKK×ÕÕ---™™™æææ™››çååõöö–””ÈÊʺ»»SQQ744ÄÆÆ²±± ØÚÚª««¥§§³²² Ãáp555qqqyyy4­¤¤ÄÈÈÈÏÏÏÉÉùùóç™™òÿðÿ‹ç@üÃÿnd°:H_œ=w¦)dÖO¥v©-̰ÛáîZWÄüqÌ#Ro”±dåóÃ{1ÏÆßŸŒÜ6½ûæËÏûqÏ¿ü&â“’SRÓÒ32³²sróò ‹ŠKJËÊcéé+jjëêÙ«u¨1L\,M=w{ûúû)™(õ8€qN*JÊÖ©éÇOžFÑC0\ôãK㌓ ð`dfãÍÛw±ÔŒµçò‹”ÁqæÍãÏ_N\©©0‡ÆÌKL»©ÏÌï¯PJNýÞ´dÄAÙ»WL ›&Ø%¦ß×ðØRðm=@Hâ¤eÚÏÇféÃh9Dµ;ƒúšçK+$ÅÝ“!(.ePë­—p™ 0±6e  ™•éŠrñÇO&Û0FË­¦LÕ(ÓzÞÄ8 ÔFS\ŽžÜ%Ð,”ïmTÛxÿµ;îß>¾3jiúد Å:2¯Y^m=½¾0"ÈauÿÆ»v¼«NÉ–ñ¢ïày ¼ dÈ"qÒQž}%nyZx4æk²­5}‘E˜ò¼Geâ¥;>ò5ƒ:Ì__LWñjå_Ò‡ø×_ÖÞ=s$òD„(Itߦ]¦\Ñ)…T&îÉ‘¦ž_P0Ï"ö¾ý°öMp;å¡»AÒ?{‡TÊ]¸ÚÄÂö¥Qêÿ¤ññš,~¤êÎ/²¾•Ù ŸD·X pPCaëåÁV¦4´¿úÊh>+*µ<Ê$Kí{ÚS Šf ^Òhq#'ý߃ã–üe]_*aí$ÝíePM¾¹.†O;"7ìø`Ç2!´_""¢Þut¥]yü4úK”ägÝKHÑnk:êÛ‚Z´ÍYHt*äT¦DÚ>Ü ­=Óïàz)h!y7Hz—nüçJJî«®j࣠¤DLJpÅÕÚ‚¬?¾Ÿ9^µ;žL¹Ï¾¬ã§d˜9ÁêivÉ脦tê?føêí{á7þuödäŠЩ‘{m<,ãtá(—áöÓ…‰NTÑ>w4ÜÛ-'OÁÂåP ƨ  €Ÿëìeã.;å úƲäãIÇ4bp¾†Q9?ß fAòf$Iº?ý;[ïk[ÚèùÉ’›~æÝb 1ŒH$%5–mo¥2ôŒ ˆEEÜWÞM|&rú韻PwtŽÊ0â“&²¢ñ¿>@±u¿>vè~}hÌ -D~i’Kw²9Œ¸ÞaÖmá 9@'0ÀFµ8! ¤9tmÎà"Y¥î¤e>.;c¸ðæ¹´òU<øÕ)7DGïå«&È/CØ–„ÅóÀ«é´Øºx’ÌŽCô#2׃:‹õeèüx?¡k†i릥c-¯$>žZ| €Íhé¿£¥oñ ôbü¨R7î½ Ç϶RHyr½/Xo8£`ÍbòC•ŠN]Ü%ªlè ð‰š /S߬—õ_ è„%o·¿ßZ¢e9P‚Ãð 4<• gêç](£4B1l8›¶DÊ–ý\4ò±š;¹ï2ZŸ€äÆ=Qÿe!Í£¶ _!šs.pq«M!F¦Uÿ[&ºAi€é«§Ú/$ÕIåXP€àIs»²ž«‡0럠íì\UÒÒ>YX…9—Ã#™,¿Ç¡¾ÇwÇA»©Z¤1AxP Ý©Ís—~‹p¡ìm|--û_¦ÀŠ[’/T¸:îÙ¤¤æ¡Õl„ !G¢H—Æ¢wB}«‘eØà¹¿:Þü)‚l™eß0ôت‡]Sy¢U͹q›æÓ4³XÉí[ÿþx²å J¶ÌVµ5;ÌQQßê×ÙíMyZ4b™‡HAq/l$K›²ì!n¼Êž<Þª ^„<Ÿ-Ãfcfð&ŽÅµèg€H1Ÿ¦§ªŽ2êc/׵ʭ‰uh†?A2lÁóNÎp€•ާ9<£ò³6ÄŠ¤"C9¥;-O@ cN¯wƒ©Ž¼r;™–"†•&Ì«)ˆ—)}]Û‘ûѯŸ¤\†!Ñ |™ˆóFg~ÀÆ¿ýrŠ¢mÖåõÈи¿bZDÍW#© ’š¯Áv&Ng 'Àï‡ÝIöv®Mx%.*¥ù§øæƒ“¬;3«èÀZùf2¬Åóƒ?ÓÊ+:èëq8ã.QñvOåÇ8>„6ˆ¥…Gˆk1’‰Ó„ÜóÉWP&!ÝÏxÈo$LU²Hk’º]ˆ7édå”*UB¼N»ï&;’í˜~€ÊOUÆÃ96G…àßçÌœÀÐÈØqüÁ‹ý‰Pp½í62Æü¦OÀÆ›#“ø´ò½åä_j7ΤÐÍìuÝÑ…â¾¼© öJ|í•ã —AÌkSêV6ôi^ëýeÔaøˆÖ‰oįµd̉ zÉü¸ÿ0>þåŧ¯Kzø&­\ÊiSóõü] Ñbyáà.7®ÿ%ñC=£§Ä´€9&‰1»… ¶0ü<ÏÔ'q¢6³Å*Ÿ¼˜`«@Ì~ž…]m?\ /l¿Ó¯do§Yò¥(¼Íu5`KòÐŤðβ’¹Œˆ(7{vÓÁA¼ÌüeGPdˆŸúÀÒÌGOs?Þc¨ð£VDµóXØ—¢a&¶lìRÈJ©GÚч›'Ž«ìÊŸ%Ѹág¹’㔢Ñ3rTs’æô'åwÀ t 75+~‰’~ÒQØrª¸¾S~(7{•¶®çk0€d?#-ÐdMS¹8-`‡ÑL™•øt§PŠ$úâÅtQoÅ0«Ò’¯x{Nk¬~¦-רB6ƒwÎ,€-“ŒwÏO,›¿ìªçþú;Ù­šàÜ:âQ€fl’“n뾚?Íœn6ýža¢±üg AJÇK‰ÙgÑáG˜‹²•4é» œ a~~1’ží60îQ>ap–ËàLi•Ć"þDˆ0ï/㻡ôøOÕ,Z¡÷ÅŽ^¥âu4ãœ^FÃïMâr¡ÙƒP´4€ý!ã´Í½„8!¤|êµ½V0çaEêçì¶’‚w/®zh°|~eiî‡øHõçßb¢À:hí ¾¼â† ¡•+Òµµ1ô¥ö•½*n’é*)ž‹@¨3ý7{ »E+¸@KŽØq›b âçÂÛ%‡@çBÑâd›£åP ŸR|…Ú䤯„ÁXéÂm[Ž‹£Õˆäƒ;¶A¼Ë[rv«|xàâi¼¨3° }“éO3KYBA‹‘@‹b×yî`±Q’è ˜PåàÇtñ×ðÔJÍ“h¥$uÏà‡?lÊÊZ’¬{õ?»ˆæܶ\ oŒÜe+ÙR)O˜Ö²K?±a.¬A]1£6î¾iŒ%aÀ¸¢ć}Myc£”úB7\vÍéÚDTŒ—Ú<јÄâ°œl¤ A›§¥Ìøz²D7ž{æµÅÞ¹T¡«cÇ›– Iª*Ký©[æ¸=uçp/­6 ^ÿƒ#»Pm+(…rR.¯5ƒ|q'FÁ}{ÇOy_¯Á áìbÿáEêE¾:)óŵÔa·GšY}?õr½j§y2ϲ–f|'#<¿‹ÙeÅip}„í¶u×V6æ$~ í½¬Û.ìêá•ñ%È@ß ñwy.…—²_ÿ…R®õµ¤)Нn|ôBˆ UNd½ÖÈCRx×ò[ò‚< þÚ! æåm¦ŠÁvù·‡Ö|…™ñè&ßn-x=+0ã·¦“×4òÙ\‹õR „Jî„'^#ˆ7 ‡2Œ—GKF²¡JKJ­ILÁ™åË‚VöXŸöRÒ݃͢R‹bn `·D}ó5kz{Ù³ÁtÎÃ2,ºÜ ˆrYeŒí`NYº#MDœ¤]ö¡~B*“Ÿ=!GŠª Ï©p3(‰ŽÔÇåÕjT¥;Þ.Oc+ýuMÄBÞƒ'ß}“®j¸œ³%¬> „-+zËà£#f€ÊÖ@Öó+#Ñ©>» UsîYíoÇù|ÖÓ®Í^† ‰5‡lÆæöùå Ó¦s_{ÓÏ·0ÙͰ2㲑ZÊäJÓvp†-ƒ|ä…8ÖbqTÆf&åS}ôŪÃb‰°²^C´tÅÚCôhýFR¡ˆO©Š1Þàí>ßd{æqÙPtU¶—"(Ô'žÞ°˜gø¼é–¼)_ÕN±ÙÁÆrK‹€fÂ/ä`ÁµlÞ„˜öÓ›Îá%1×ÃâÒ3àÔ>PôëµÃ—ÞÂ2õ†[ʹæ7ÖÑ¥©MرÆ8Äd8d«æM0êÓ¿DÙÚi]4W.c°ÌØìÅ_¢?!×"Òæíeœ>ÓL<-«aCüI‘Y gú«áV\;T(ÖB¿C™ØTFYfñ_i&Ð_åQ¨S Ó_† ëjÛ(eÛ×3È ”-s•ç‚zͰ¡¯ÃxqLE'÷nÝœ(«µ@C©Ðz‰Q$!Ü5ŸRb£K\«mC”•Õ¼¼³¸ýh2¸ÞÍmíŸïÓÓþQµz¶Ã0H UÚŒ®ïÁwŽtôŒÕ×gÜÕ¾ç%ÉÓm‹÷m¡<£¤œ™»{Oí]üÚ%éåõ,y#Çòù[þŠyo¹´øéLï·É.ÎN¿ó»Û”Yõ[Ð0ˆ³Ôt„,_ô}“Ma§øö½—ï ÅC­³,©PÄÜý9× ý;d*†®³’-Ï­;ÄØŽmÓêäPúu¶â àkÀz’>†/u¥öDꛜ1Ü ­ƒÉ'z™bFÌßÙ‡Z'2ü|ù¾¦÷5õ"óŒF™Õe.‰µÆüJˆãõ50ÿˆpNUý‚ð3Co?+@!îGM%Œ‘×f½ ÛŠ{‡\8³%ÝE‡À@…–#wù1u4Çй~le§4Á÷^iÄ‚QàÕÊ&}PÇàgˆôß÷ÆÇÆÄå†z| h‰-fuTU.£ÆDöšNôU±AnÌ}&†á©Ìl»XN$uc'†týÛw]ôA´§þl¬ßûïdäs/Dêw·ðCnë¦xwJÄ»×uu’ØÙÖqÄ<ë úÙIQ{ª*#aù°ÑÇÍàd½àïðœ¾Á±GDÊhºÁ¢Q€M¼M¶sÂååXêÇ +‚šN_X=5£t‡&Œ_\÷”£‡þ>V¸ž¾‡)fÇ›Š¥÷ÑÇŽQ95í§Q“DvÄ$H$„ÑñfC Àˆ·W(OÇÁC¾Ýš2êý\UЬÓyL‚ otd^î¸z7ôI‹ÜÕ3ñ«2Q,tÀ”Ôæ<Ô`AÅ€}È17¼§ ¬Ýì´ ቧê h,„´O=úS¼Ñžé ÓÅ LãÌŽÌ[ì4$•;œ3Ð^YÑ08I…-H;­K§«›Æ|xmÝðEr¬ï$›–t箪"®ª“üòç$š0Ã4r:ý’Ó$V±KûNÞÄÌ[%€}´q[SNв·VZÇ”5t+‹ô:ŠÌXýÕ3#*»jÃÝg@ßoøû÷€Z€8Óz1î·lò¯Ðð„ӎװfd±jv ñIˆ7¸ª ¾!×}6Lˆ‚‹ÍÏ~²yV‘÷›³aüCó<è¹sz›üµ‡ò TCÖtÝÝ:÷­ þГXü’Ó¯‡þÁÚ¤$à§¶íœáò&‰ÓêTï±Q=2›Š>¯V2q~Ϲdó÷¶­\²F”Z•DK…&Üy±Õb!±È*×ÑvŠÞxró+K#ÿêÙ ÍW®EÀG#¸Ú'öJ!ŒVìj¹~r—møý’×lÄeZŸûOAA?.]Tмî ?\”£%—øŠJt ZàF„É é‘^…ŠÕøg/n®DÃ%ÆÕ)_÷ûW˜¿>,ýíEŒÙ;Ïâ+ë‘Ôkè¦õÊwzX Bí…ëMCˆ8…䕪´2Û¶ƒPMñ겿½ï^ÄÁÇ-šÄvÀQ– ¿ËžuÍQÝ5w4ypWDèû+1þµ>.]:`IçÛ„fÔf§Ï.¿ó œßòŽîÌZe˦°ì޳:&è8L€s“RFV¦¹.ínûø¸p,ÞÞVQ:~‹dΛ,ûy*84m¯Þ¿ÿiƮڤÞ8Tn‡góÎÉTùÈì”ÏÜ9ê€ê‹ÑÍDZòG¶x ‰Ò€îÏgãÒ!'ë[šý#mocö/ Ž‘—É+ðØÝU;s.ržM3ì¨êMÜÒQ¸ó;犠t}Ÿ ®Z Íiä©kÑ7;¦n¯^‰E'4YÙå B êר'W0Ò©T Â_z¯”ÐÍ¥ùD2±5Óø¯Š`ªÒEós2içó¶†ú!Hš¬¢g4?¢ËíXã“âx²TC48ä×Ñ„¨~eêòfs Ø É~@K–6_;1éºv(FöòáÈO¼M‡Å„m&aM4/ø>{ç~Â÷ø€j¬Jð1%HAøU5PBgù:7ªý«Ûx˜þg,6ø[dÞŸ=-8a­ªG f5'Ì]eòÊaf”W$š‹GÖD4Í|ãEžöþ{qÏ2›¦ XñÿY·ÿ8CÒ¸àµŨ0.qé¯/¯¬ò…òÁ¤Ÿ¥[Ñé6ëò†ié=—ï<îÖ ›%°Ož¢È•°ºÖßWåi|6 ù|æŒnWÒ®ßܺҸÎ}ð‹òAˆ7;ž×—<<Þ_n Çã5a°¸vvº÷|O ¤FyÒSt†ª¬óÍ®óŽYã묜ԓ:? ® ŠìuzNPWœ5Åzô)L\²•®LlgÊD¬Jx9þ;€0Yq—ï˜Y\>d þÄ–adb?육…:hžY›Í/úç9×ø}ã•AKu†ã‰×î–&é™ Š5G0‘Böí5ŠþUQGvÇ–¿äoå«£EÒ¨1PºUtíµ°²S%htÑaW1S0¦õs{³ ©ù%Ðôûoº»éÿÜ€Ó{÷Î3)Ãtì /KN¶nÈŽÌvSANÎNçfùÄQ¬d5ÍÚfÏÞ¯ÿꃤv;5Í+‚¶Ãǯvßw’o”4²æ³?7hRŒ”zO~—žh»•Ý×å ´zÑC(Åõã¥ê4›â?v2E7_Æ I_˜ªCWn[š?<Í&(¿K°æ™õðA 6®mF æÿ†˜Ðq Ëd6"9£3+)ZˆQ±$L¤˜#¯]Ö’Å -ËŸ©çÂ!@\Êrzçõ‘sWXïAIJJÊÈRe¶—äBõ—\ÊXL¸RDe!E“P*;àãµâ{!³¦…„­/Â0!þ’\¹£y •¹®p€‹ïãÎz&2éaBà9µQ› ’~½„b† ²¸§8|»Æ,ÅjÛ$Z:ÕII†Äiy|qœõi ³­SÃéjdf`o7È$±,P|Î)«B×pQÒR¿aë‡K–€,Ó÷Aõt\û) ?ñK*fÚLÃ2|ª Þ¨jQJ«4ßÔ)Óé»V¸d¯‡eö… Ù<›_oÍvå—ù ÁýêË%fj¤§uÑÄb,½«®Ã‡-Í‚JÉ4 <ôJ—eeºçÑ„-%„ó A+0œ[(ŸåšïÆ-sŸâQ¦à+Æäm Ó!@*adÒ(Åý‚²t¦Âum˜$aC(´w| ‹–/«€`íŸ_m²üq¢™%q¿íEïzý\ëU ËT«B"‘ÂÆ+(§“„n$ˆ3ZDGh¬ôš´Åš×¬ ×åȶ™Wµ­@Ë„«º£h…L©0ùÈKôIá];‚}_G[ß5"œË‡Y÷®æôІÌQ{ß"?Cv™˜1¸,›.ÓýË (Ïe/l„v3uêw´ÙaWiš™´°e]\–Óƒ#sáåï¾N#:P@zRzí…¾`ða×÷t´‡ùqW2K1¡Õì˜ßLMÎ{FÑàˆwfà6•Sé%8IlC_ª¾üØëY—ozlö}’ÒN.ôßðDðæàýPÚjI®†Ub´‹âŠ|Ð |T9h}úY*´9Šë'æ85™ŽW‚XŽ¿òîU™‰S–tüJÜÂæ]a.½Vöê{ XˆÉ(&õ=ìvuNñü“¹ýá›5Š0m)ö£sO3v˜g•!ÆäL|€ÏÈlPê["éצ~ ú×rÈñÍI=P÷iÁJŒ8 §–ÜËl9@#-{ÿâˆÅŽ*—niä †âääæOÔÊ}œQû̯€ iÿLëÉq“H›Æ›Å›Iùed æ”ÒùËCÅ20¨¸Ñ®H~:¢}OÖ© °d,Ï{õ&Ú£ÇÜ{]…³ßJ’"Â/?@>­Ž Þ˜ÐxG7ÜuÜF˜©,QÒAÌ¥qu2¼çXÚÙ™Áý¡m0€TÓ¬†9© ™yÜKÕ<Ù&_#½›a»× ”ÔœcäæSõ‡ž%½`\Y[Oyú »•ý(/ݘézœ{+©F\ ë<þoùº ÁZ^áþ“[„ä¤S^S ®:q0È+Y³íI I{~5/×óùmv8xÙÞÿ¼#DðÙ ccC+ÏÂöZïÓÀ{ú—yÚ,ÕFã…|(;Góy¶ X"TbI£h4Ô*»Ûo0Ю©‹’GWLàR¦-fcRr=fËý´àôW ﯗÉg¿¤1tÝñ"-š‚“všB„#ó @Ù_ÝT ㆎDÝkÿþ?gnv~-÷€jþÜað‡\IúÞ Ý~x-/blèbsX•Â2Bñ„fÿAÖå«,µ1\eÆY°óÒÊôcÒoõ'¼Ï>¡Ö—•k_P4ÈÑå,YvyÓ’& óîPú Áà8­sµ->اB´ù„ ½¡ý“¥êgêuF†Í$2½,×k¬üóÌ•ºoW©yÀÒç…<ímÍ\¡T6iÁòF.ÀZôïPŠv žÚÆ”@êžx¶óøXË1V_ûÍSQx¶ÌyùR êP×ÏV›Š^ü è«%ò9è£õó‚wÑip‹iY¦n®:7ž«{ðµÐ.š. ÿzø£1;¼ba¨“6j€¿êÑŽ“|öŸa¶ÔrÆüeó事ª–éxYÓÚl<'’d¥Ád=_ˆF’tÈõ Q²¦†$ñƒOt_vš);_µ[=Ä÷P럅sõ†ùŸYP@,ßÜUI¯·.&BÐø}¢Ý_rF¥P0ŒÁ™ÕëÖ°%hxU`´Žp¼S/óè K÷KÉ]ÄWñ6h…%ÖC©+‹¯.Ñ´ã Ý•Ÿd úÏÕYg¶q¢È g¥DÇ.×cƒ¹ìµXŠ)æŠâÏGþØ`Xå;6/™78 ®CµÎ乯ë\ á¤ËyL¿ÈqÑFà™Î½b^Ù^-Lô×ü]gÏר鮹ó¸߉d¤3£hñÀ× †‚ß9tï¡BÅœ.z¨®á änÎðei Œi w¸Z¥ 7%uš·Z­Z@BQ™ù¤ûE_ö±+;Þf]: ”YÍeàq…E{³Ž«`±…±$B†áÀx«Ie¯œ‚êM£Ž÷mf±Ý‚Õ á ]¹áÈ7¶Íôñ·Ø8îEò)DrÀ‹Â”cqle§ÁxkáoLÝ›Áxö Œ }ó(«Ot¿îw‡ Õá-O´|¥<Ù±-é¬P“ž¯ŒBÓG†ÓÁ;._¥Ì¯Ò~3X«×„\×Ê‘öo5²¿7‘,JLŒ"R8 «LoyûüI^Ζ?ßÅ ¦Ans¢ SÚe)ê,»n·W.» ]øî˜!õGîq ãÕg¯Xžþ ö`Òldl‚‡»^‘Ƥš´Þê!É6lZ6 ³£_Š€'¯§ma«ïC ²Í£@CDpôŽÈùÒhŒ˜¨Ï1±èõš^5k•<Å`E‘ÿ§¹VÇJÜ¢Ä-ô¡šŠýÙo§Ûháý´A ó7g?‡_B´h"µuªšõ…ò³KjÅgÓ³¬+|WPì¯lŸ~ô+IˆæÄyÕXY½ß '›¼ _׳Ÿq–Ç’å§K/¦¯UÏ²šzV¢ò(×ZøŽ¸óZuØtRþRW ü]唬u54çqtÎkÛ|­îvøŸæê¿Ø`Cu% Ös¿WlDgýêºÆæ Ÿ·ã ê«#Ü´EùBâ3‘ÅÛU7”ùhªš÷nw¼ ÛåâþûfÉc­t#êýçÿr¥+XJ]ÿ»ZšmuaUÍ›±gǯUÅÈfýöß¿W¡uY±\“÷u*ù<”þîH¥&·TÝ»])Ÿ`ÿ6ùþÛLÎw¹j‡ô<>ÜãöoTwÜÂ>°?~ Æ:ÇË¢mm»é¯=ŠŽÏäŠýp7·Iò9&¬FýcsÜÇKd®àPLÚãLBÛpœ,ï2Ìti}ä„Q¯D¥öÄ-¶~½G7ç&náÊ;p;|þ³CÅ®@(ÑÄñ¶ÿ(x·&Ìw—ZÊ5¬›œby®5¨¡§ÊUW‹-ˆ|µM‹U¢•@Hˆb'BðÇ¥!»2"âÃĵg áé•Q¸ŠÇC݉ð°¿!ú ÜŽxäJ@(pÅèß½ò©ôvOb5Ð$¤vQŸg<‚Í€-\=¶¿ÏgÔetÛq9kU^´q64hàgŸ—o°€­)lU»‰Ðç%_Ãê·uz^=F\¾jã‹—Çpä/Êí|ó§Ö9 ÃïS0ÿ2æw–P³´¡òÊÒ²vü¢N¬1q 1òIÿúº²E=ýCc)Hìá³•Õ &àB[åíP—f‘f0&`U­ê{ù¯öQ©ÖÚj½Ë‚S3;)ÚzÆ”øˆ†9…¨™ÔE\—ò*h9 G•ÄÔuÔâ& ÷²Úz™¡öQH¬“†žgÝÆÊ<›Å,WU`77€u¡Ânޝç¦BÙMf)£´RCý(·ýêfa$ÛÕ¶‚Ú§Tª¼¯Ä™¤ ®6šÖ²»â@ÁWÊôÆÝ™<Úÿ§—°+’Göè#úû¸rŒ84»‘4ÞŽaPÂÂÉ4¢74Xä%\µ·,ˆB’7 ùySõ™N>æuHÝl£z¸þlᘨÑðzÛ¥AˆÈ<~÷¼,žmq_QŽ'NæclCK¯Ô¤ƒný‚™\¥ëW+259ÛT¶ÇQ 1ÄP ×5ô®YÁÌ õóS ÏÍÍo·Ÿ„âè¯'ïH$¨Aä×1t<Sв“I÷ÜųÀõ£[4Ô×/`v( æY}uü/\Ú,[8qν^—Ô鄳 ° -/q±iO¯ØºÜÖN@Ë/œ¤¡…vYj3ø«zA “õÒ$TÈxyÁñ]ì}Šê¶‚†p¤1+¹I½U»@äEËfä±7`rÍ<ò&¸°³+^«·å(´^ÕçvV:&Š) ¢SúêI2Û'Úó#ù{éápÀð?¡˜CäˆXzö9øÞD´ 6½z“Ï“[Í^7a8ñg¸à %éÖwB5'  ýìB(1> °ÿ+͸5³rM̉½«×5/¾<ÒB]yÓÉËoo7€¢Œ¯óÞ/yâDÝ W1›nVWüvÚO(ºñà²ÉÞƒß$4 tV¢Ú’´Ä†%>æp^Û®¼ûðnþÓÐ{.óveiîJ™Xäµ1Ì ²fꟽ'nÇó˜'#ÃlÒïr„¾í£yû—/YÙ1ÁEψ1h‘yÛŸ1)‹ §>çŒFU ,¾¸ÆBPêç£EÆœÂìVP6PøýýâV–íÑ—V?F‰Õß?YOFçyÜ{Í€ÅïuîóAò.]²x7Ïõøºä” lº±“ýõûkê§œû@SÊÒØõ‘­ î›§OÃ+¢µj´×¼Ýn_¾Câ&=H ÝŒVa¶îŠò S»®—ßh:½9Œ¼CØIïÖ…„Ç ˆƒ5;5·x˜2>¿Bž…|Ì3û'·Ã"˜ElA€`´í϶ñ³—šÃ¾„SÈ÷=v¨¯ÜÞì|ñìç*j†Àjƒ º9ÿbtiþ|8ûÏ»˜À{ñ¨²Øî##W@ä ²ñÆ+¯¼á$ÝKTÕi°¼ð]w,`ÆÁî‰YÐÌ"R‰´cÔaT/[G„!ã —'qxÒFçñ$WÅ󆿎ƒu•ø“:alCèw+iZX\Œ¼Óö"3ö!ß“] çÔj:´›hˆò0îô+&,»A¤]YìOUåy'[ÆUÊK#•‘¾,JÐrÒK/Vï’”¾* —þe»Òoc.´Ìg AôÏg\"bFÙ|ŒòÎޜ̫Ñ1ãô¾åØ6ºý$¿¡ªÄP}–ž»¬ŠÕ Üâãý‡8ÌÛ•P¢ÉkµØ± j¼©)<;ÕÝVWÜÍQ°\7p–L u¬=M[HÒ§sÎG7IKñjkÐU>§BAó¦ Ño8QÐýÇèkßøx–\ ¸ ûÁÿx‹HU­I†fy%÷Ù²W>P™T„*.ß÷”4xžHãY €à Ô•b¼°¢ê|QãAI¼—˜ƒ~çuS2qùÆî~úû>/4æeþû t™«©:!ò-æ[ÕFþù@”!F7£,á÷Ø6…ú³3 oT&ŽRñNzí¡'‘ó-ñ«C¾„~™i˜·æ#‡õVRîÃØ4‚.Üì÷!1OÞIâh’¯+zÑé>¥æ™cty[·³ÿšF‰üÞ :‹û¸ö¨2åÈ'ÏY(KrW½÷jߨ¢Ü¨wOìÁä"Ä– ±ïÕ™Èà!Æ‹„ЙwKIM«™Å½†èêHGv_#9Q ^£Yê¦X˜ï¥KÂ_zl >ï»CFFÛ¾¤þæÛô7¡dϰQ#œCžî¾x·û×iÅNIÐØC¯aúªËvtúÁüsRAå)…þà+Æ»òÒw‡Ÿí:(E†7B³+”y9¥ÀÂúÄ©D"öQWŠ¢[7 ¼*C¹t»„© |¬ÕÕ£õ8ë:œ3jñqs{õr‡æÕt€Â‹¹Ô²7žGÍ ~ ØYɤ„IJY0=xGn<Ô\”õ:®c ààWÚé“îç]~\äÚaˆ Ù?Œäë³@\š»~þ‡›t©GYxcåû9ü+EM5º<}eÈÏŸ¿EùûM/‡W uªï`Auøä S¹æF •xCI´Ÿ*Q´Ù~öEnzu³šiëäá—„J¡iÄs„ "`í£Ýïù-ݨÉo×ÝUœž° žN‹pÓ$F«¡°ß'7;Iy‘j»ÃÀèS£ë§ë ì{(ÛQî$c|´`#Uê’œtyT¹ï}¢øXhõ¤zži[ô9±?).ÕõwŠUoÌÏÓ8”§uãÃ@"8½— XUÌ0Åør}:““Üg4s]óTÕ­?Ð]Gäþ^‡m~ŸtÀÍ’MÇÉ#î,ä†Ço9 }K0ûu‚öÛ&ûûMF–@÷‡óMýP áÈóùÄ4+ÅňØîy€ vž®®Øí±KPAFßDG gT…L~߉8¯Öñ{M—óë¡ÛUËû?l4æïXJ %7~¢ ø˜óÞ ½Ÿ$Âü^äÌL~yðtÝôï"–Tø¯csê¿ä/knØ!ìÞhúý5²/Bš¯#¹L™ý¹,¿žñà'îP¼X±äY¦?[µ÷•Á V±’–n,‚&´]6»I½p÷&^­¨l‹Ý¹p²Wv»ÒÏý„ïRL¹fˆ–TE#H ¨LæƒýãMJh¢Çe÷]“M݌ݡ3¬PœûŠ ‘=g×ðŸñíjwJ>£9þ—Ä£9>ÎEwS‡dÁZwÕîæ–É¼¿ÜƒÃ â”7--#X7‹9&”èMëUœ¿ÎŠ}µ–¿ÉÚG€Û‹ çÐì'xûïÙ%Þn¶˜ öã/×4»8Î5Kxáî$Ç9»Å=ç}€(nçk§{øÙºq(D¿ïÚ£¡Ç-É%pYv_?aþ†º '05õ0u°æºîœì,Ðb*HäÛ÷‹&Tfí;qƒ&5ûþ»ë’]_^;ÄÒŽRîÔè`{)£%`Õ ÕÈ]îCéi9äaÅ.T=ëbÙ)smhöТ“5³±l N®1tnep%xDˆ&c…´W÷®çø…ƒÆ5¬koö´[C°îëš-ø;ÄÆp~;Û ±;äj¼ó$F)\*àÄ.<)"Ú<ØKò×KH!†m탭îÂ:DèŒgÊœmlˆWêÃkqÂÃÁ ~…Wãy9®¥-ÿ2ˆ8óÌÜ`þ6âžU±‘µß’Ç–ó±(ÐùëÐ7Ù3Oåmó‡ç‚ Ø)¯uÛ Ÿ”!ÊZ‹6l¡kÍÅ%œÉÍ%ôÖ¾)m¥‹le"ùíåŸ9+Z>øv‹Ty'?ô¾þ¸½jÑ»lõ÷;‘šý56µ¿>ÔB;Œ(>ÖÑûÔÓ!  ôÜÉºí ²æPùŽFuQŒÁG…+^å>OD¼[Vè‹#|ŽZ|j¨ÁÂÑvI0»¦c$ v‰ž>óúþ@”*ß9gÑçèYÛÆ»Ží]]ÂçŽÏ¯Zkþù¬²Y4¾Gþ@5·ïŒ´Oƒ„ÙÅ»I½óº¹(¹ÕTlKÀ#×ùH_ƒÐЉ4oßo3AÍÁ✣ œUl,EË7Úc|[¨¹ï¼Õï| ['´ôUb;|:Y¾GXO¨?}kçýôãò!ÞW貃€t?qêÆ;wI,˜6øÉ8áUGO§a8?Íøà•.Í­& ݻ溣à] °‹óÄgM“>5‹+“<ÝÏ™oÄt-5\Gžt.;4CËüÒ7}Zá@¨Š¿–©ßCÑc4êõé³±æÓj äƒÄÔcÐKbx'±'ð’P6=žsx«r†ë^Lùôf[ÂYD0’ÈO)Ë»þuÊ‚†ÝÉêDÀ˜ÆýÙÓ@Y“‡$/ÏÝ Á—4Ÿï2~çóÙ{Û!Á‡S-àPðp¹¸³‹‘ø˜Ñ‡ƒ{?ì€ó“=ÈC‘r½Ï¼ícðà—ðØ…ÞM£ü{>†Ë_¥*ÀmÙÀDÃe7í»µ¦_ Ö_¢ —á¾ßc>œ™ÏÂnñÓŒ»U”R_LË5¾üúܰþÏá¶ð§¤ü™/C¢ÄO=N’õù„Ïÿ:à#9Í5<`I¢ê #Âq„¶¥ý&øS%h<tã¿¥ðz¢ƒ7ºáÒ¸Û¶¡:±É†€ï%£s;Q jiÄM‚—àÇÙ…Éõƒ-IUKÞqàE‰Ñ¤öÀýˆpV"®Ïc Å`ú~:ƒt| 2J:_$FƒÕûè„@ZŒíDV “[03ì Bàü]…e1AD– [æ]¸€o}ÕcZh2Â霰œ0 B9M¾*1ð6^¢ÞáƒaÄ 5Ö»ð^k“â ÁéPØÓ w‚$=#$ öÚýT0òT”#ÁTšÀ%Õäõó—÷÷BÀKª²bG²·eaò3þ±’쬈¹d„@'CïHÊ}:ÔF)%„tUŠ3G!SdX™¬Ñ2ÆŸ ªøM‘%ÉT|RU[󃋎nG°>ttÏM%'Y` ¦4/W˯©J¥ ëi7U‚nW»ú[NµÒ1³Þq ë©‹û$ßóoš˜ÙÂÄi´}âŠW¿«ô™Ž[˜®ï™nh˜Þ­3½Ä0ýÌ3ýÂ0ƒÊ3ƒÆ0ÃÎ3Ã0£ñ3£©0ãù3ãa&oÎLvÂLÎL¿…™ý>3ƒ…›cÎÍÂ-8Î-øÂ-ÅÎ-å­TÏ­´Â­Î­­ÂmÏmܯùž_ ·½un›n—ynWn_ynßîÐyî0î8~î8î4îô"üú›óë;áÎGçÎßÂoü>¿‹Æc¾ã"\8¾»ðE¸Š}w•‹pSýî¦ánôÝÝ*â¦ã÷›n¾ß=B#ß·¿7?;‡ƒ4“ ~`˜Õèt:Ç …ëëë‰Åb@ ‰îß¿oiiÉf³)JRR—Ë¥R©,«­­-//‡Ã­­­]¹rejjjïÞ½/_¾Ü¹sgDDDkk«««knn®““ÓÊÊʳgÏ666º»»[ZZ8Ž··÷àà`BBBaaazz:ÛÿøÿRý€þû¯ÿý ¶éÿáÚë+æŽÕž?Ñ!“L§ƒÍ7æOyÄ£¶X枊©•UÀ§Qö/ú=yŠÄW{Èí¥Q¡©ÒÒ3n€PJ†âNå²3+*«.Hà]iyù ’>à Û;.KHK!0¨èN8„AHI·õ 8#o ”2»¤†>郣dz&g\$„2½Ï–*Ç/ï¼â ²1 ï>…at1ׂ‘B`qó×AX6øè›ž…W“ù[¢U'Kìèe †xóNì5AJÖ„ðí®±cTÎðƒ \Ï‚ W iq™ìBb¦™ µ_¬ 0U‘žÒƒ#ËÉu̇hžý¹›ìC:eÿ;/Cƒ@LæÕ÷€lqà%,àeðwY—®"¦]whŠ œÊUæ”#‡w¡Ȫ^)qÁÛ˜÷Í¥Ù Íé½£{ÿ€÷ë+'•Ìþé7ßµ{µ .‡hàúÕfŒ¯/AåïC5É YtœI›`¬u7Î<*5±bsµÈŧó{wÔ#9xíYµÌÆ4¹_ãŸë‚?Ù”wä”ç¯këy}t?¯Áæóì8‘¯gÀ»ôüÂǪcvd»ï_Èxy¿àZcÆyý¯`Õ ÉæeðI“;’zÿ2ÞÍY"MhÛP$aÏÓ‘¸£ò4Ù4}Ÿ²Êx0¯I5x‰¯íÞŸ»{qÈYHóÏЇlÄûò`Ø»¢3ö‘TêKª˜2ðóòÑ,²;ï® æ³•þQ生a_b#ˆCØ~º ¯.;5½U£ê__VI½ÙïßäýÅëk,{U¥OƒxJØ»DzÁ%‹úÜ}g1ªï œþH- Qµ<*ûßg 1ÓBxƒ¼hÙ®ÏÕ-Bº@¾LVªùÉžðIxñ=Y i†Ä&•ìn&Ù&Î 1ü|'A4M¿ˆŠ}«–%^Ð4½¿©gü!p+â÷ë–-ßÔ¿bsÂi{4 â_ìh?‚iu8½X¸¿úƒãHK;õímߓʋ{­‘EêFÍo×ø¦EEô"ˆß)Ò4H8«›ZRÍ“uVByBRɺ«èÝéxŸü wô1RAPK5õòUwªð÷ü­¬² …(4³m@Ähå0%ªÐ ¥kNø¤ ¼âÔ’,«2`ŸË¾zsÝjÚ×)2Ö§õÀ["—~RÁàV}k Ä®ÌX‡w¥v¿ø°5µ…"нùÉŒÔ×ý!¤¼¶*}ŠHIîïfietŶÍëÃssθ²5WËËÄÓ‘˜¥¾úþ™(§$’˜KóZ\þZjuBeÔÈ&õjrïx°®LcF[0 ’ã /w|”ˆ Íͼ⼇ˆÄPÄ™hq Fbh 5³7¿§Ñæ L4§“”D<¤WRêÜ¥dOl‰b¤Âfªå}dÁå¶AI—mÈLF„£ˆ7Ÿ1}m®dDs(ë’çÄìpLúÈî ÒcXÚsÏ̈,dOC¾e8½pö €ºÔvP…oc¹*ÿVK™zÏ—[ï×fµôÊEœ`Ÿ½³ûi ¨B^Ê»gK?bÍ )ýè‚ó¶ yÝÿÊ€óÍÝì÷ø¦Ø²%ùllAªL¨[ÓÊãéëHÂö$#‡šz1öl6k¼’«'±g\6¬]]<ùeø¥3;Û©–ÛsÛå›Û> œY>µ¦åÚH¯p÷¥ËŠ_¯µ+ºytËŸ+.dÒL¼òØlo¹­º‹^—Õ¥üw@™öØÆ·Ñ·4¹íŒþZóï¹cx‚®šÆÇc!F6pĘä‚Ón„àò·R_75r¬@ ŵ«¦î’h]Ã3…&ºV Û¡—¨t‡5ÞµÕNaS¬b3|¡½E æU'[-{"¹ÍóuÀ;¯ €¨´ª@4Ç@ êÒêä…½db‹"vý«jݧµè‰’ëy­~ž>¾Ã¯šÓiË«Í÷:›Ù56D+òA–É,Œ×udPH®|o†¢÷¤Âÿc9–‘…?pÄûq8Œ³OϹ#Q÷ÿN™Sñ×Ý:x©ÅƒeÓg 6Ì™]c ðÔ_YÙQHõyà.2ÆdÈ!*¶…š½¦Ã:U˜=H ìŠý†ÅCߘ“Ý;äoq:;bm…Æ sóñ >Hðɬã;Ö$Ëé°µDÑá`¶ÕÌsÝ‹>ô¨ýU?šo9ÃùòÁ“Y3W¢“ÉSÇ“gnÔÌ·ŽÀÝÖ…%×Ó_÷-. Æí­ÿ9Çî‹䣞m/ÛäªÆaÓü“CcÂó×<èß"𘳣7UpÎþBƒ-âc5V‰‘ø¯+¯yÚqìŠÆˆ|Þqü¼9¯ûídôgô€_ü˜BÝ_7@áÑçEœÅLïàÄ™ÖùAQþÁõìÑ]Úµ·n`ï¡`)¬%u¶ºÿK7á“Dxî¸÷,>”ö©uUž­],Hдÿ}ÀlÏ=ÏÐN£Í˜±(@Ì¡Qæ…\ç!U±Ò§a:?OÁs ±Á€÷%#·J%›Áo>&¬[téúšŒ:Iß§^i‚Tü-–C—ùn·Y‡c–ôí³`¯"·Iè7ÍÏ'ÖŠœLž~éXzصzþäÝúß„û§¦î§Qn%HØÉdlN~¤¨ègÜD£¸ÿ¬Í»Ü†(r€Š½ÉKlà…¡–Oê •H•¸çagÂnØRÊ‘;ßXaL0š7®×°dê-ƒPY§wÃ/ÿ˜õ8õnN/_d!唡Öc-¿HÏ GO—x!ƒŸ¶¬±ï~t@ùŽâm’Îa„c¿ Þ2fºþS,x6çï®(¥y™Å‰`œtžÏ¡h›tG{+ŒÙb²’Ö‹«’j½«ÂðØSU³¦o”€7Šå’bÌš—’­Ð§<Ï•ðgËMTÐ@l·Ñy¦_%ÝKIšÔºÎ'‹Ó’š|- Ð-HÍWæE–¤"x‘ÊyÉ;¸ÉOø³IÉÈë†RõûÏ}V$¹ ¡_ºÏHŠ,¨ ÊoÙyó"%ó’-møF·`šÝü¤]ªW‚ÍYäÁ=ïÉBbç ý×õÝY–Ô]š>‰Å ¾Ca2«g¿,/òÀ ¡•Ï:õII{ðfDš V‘)4ÍØuäò.äÃtäY ÷6»Î8§m$çãPH3Ú5Æž1Õ›·s‰pΨ'üº?”Ï&7”:Á‹Ýz~˜Enª?NÃË•|¤Ÿ,b»ÊµhuäE-²ëo®ûÅ´bbokâ)Þ×L2mM÷Ÿ€»CA›Cäš|¥Yn)˜‡a‡z¥â1Ы¦bŽÃÑZ0þ;Ãq¾¥¼·¥è‰µjÿ>ÉÈë3sÂ]Ÿóhõr8¨2 ¶øî®kU®±Û«¶GŒá)–íO=lB˜YÓbšîBfÇ–‰-UIs~ÿcÜ> 8wþÞˆ¸ ³‘©VÛlÓ“^ag™U‚åP-Q%ZµÍÕßNÚcÿ  Bã+7|ý ß¼ao+vIæë,H,¹a+:o–9·©#²J Žc-UÁ‡¦·}Ú™iåü:Ut0vcݽ% º&”nÚ“€õrq½~ª©JEöl ¨rÕ–ñ•W™ -:'ë±J• ïÖ¨~•6Ç: Õ•èõHò‰6À—ÕŽ¢и×þ¬ÿ!ë%ŒŸp#()_÷:ša#²~÷Ãïþ¬•Mßt£ñ•£ w—"@ž/êª"ÇêPظlï&iö˜w®È.Hº5þŒèÐ~™x\`O‰øÔrWC“¤QÓ'þÿá±éqÏ;zû&¤ ãÄ =’u¸qo;¹§ƒ|hU~‚¸ Ü•‹þ[.ôçnAÑ}”ÎSýaA3«ï ju1UU~.âÔN`5~‘í·úÆn|ÖöÐ`X~LVþõv¨> T-’ê7ÿ¥*_-Ý'¨UÒ‡Nñ ?Uןi8 2܆áŸ[3!×¹öár«v;eTû¢¼P8Py?µínCþHÃÞ·Oëçqeî9Eóþ 3E·yé¨cL¥`¦RÖlEW•±4äÇÜ<ÚOH&U&ï­TNWVëûUÒ?†z?¦ S 9®\x AS¦EzV¤fí.…JYƾQû¾r{êÂþŒ–I< ª¤öÞ†;|3èÚ±òž^sùL%¬ge/y²i|"rrÂ={2 Rª?A8üÑ÷Q²º—SYe”5ûQó‹°?Žoó}æáêãÓÛGß|Ä-› ª«?ô!¤¦.süšòÃçÙ¸½~…Br8ó”¾ÍìÂSDß”§lÖ¥œ£[+ìG/ŠŒóíopEX‘Ó‡•žndKïQÅŽz]3+¤)\ŸnC׈¬¾÷!Ây΃ã·_£†CH!¨Ø6ÔÔ&êÝÏÇrnä[[V9,dè»óî^6W.— è<|òŒË´žY±“ =ÇY€ÙÿPKŒU/1¸Ð2“ªlogo.gifUT hqHAn–,CUxèè•yTÒyÆ¿ln ™¢Af¢f¡™©?ÐÒÌÓ1¬ÁroòtZ Ä}ÐÜÓmÈšÚ³²Ð4™É™Èm¨Ñ¢œ\JE3±”×÷þõ9çžóœ{ŸçÜsý·nq÷ˆ©`€ª*àärsÁÌâŒjZµ{7Ðé·ý¶M§óHK[âÀÑßœ<0>}šUÀì,P]ºÅ1®òâE04dƒ²¤$ÐÛ 4 ::¶»°X`÷íÝBaõóOÏg€¸kÕ­h09 dàùsPð¼@ýU½¸°$Þùð!˜ì^‚ƒ—ÿ¹Þ®YÐܺ^½½ÚÛAëpkE¹´å0x8ôP§ûRÛSÛ§éƒÁ€V§UN(?Ì}8&?V¡¬XX\¸ºL«€ƒƒÿüÎüSæçu¯®8êt8øû;3¥ÌŽÑŽ_½ÁôÔ: EÔé¾ý÷o¥c8x÷uQt¥òÖ®šÞ×!‡€v„®YÜØª¡¡`²oó¿—fC¿›ù¶dàëÖ‚¥ú­ãÉÊæ r„¹yùg6y"‘^†ä²²HÒsSamÝùz±¤!»x9h]SPy•çõëf¿]^·ú¥±ùÁÃGBO³Vöº«×ÏÕ{B펭f.ž-Ý=½YÞkÐë"Öô"ÖG Ñk:ûFFó×{“Öx=f'y¯ŸžYãnæ¥ÍK?%SÂõ-yªGv,Ä æDD¥8™XÚ¯á›TyÀÌÁ¬!å‚j*>iícäžòGLà)ÎÒÜ;LkPtíW+árKÆÑéû0d^³¸9¨Ö#7µr‡t;sV¶×ÅþúyGuÔþ¯o"’l«€¶†öÞïfˆäž_‘üݧó°ü tÙ î‹i°7k¬9=#ÝévGóD5öd~ð «(^>ÄÈDÚ6CÖ“ÿñó/2ZM'Œì\ð×Hö ïÜ>ã/çbð¶ëÔ i€–ZO>—U‰à‡xµ¾õ3­òâú奊óÝݳ[ú²% ÈúAÚ&×Å~ËúåWßöøú‹!ÖìtãÚÈ­è 2Øì\ý­4œOo&î¹SJxòãß{ÎÔñ`˳ Lüµ4J–P±y»qª‰3“OºæOðlŒˆh~KH»æV›>5-÷;ÞhÈÄÜ ‰iïZlÏáƲ¶çѸC¢—Û/6Ʋ•´^.¿6àß³›‡i*ì~A»›PÝ¡ï ¢ðñVW(›W~/øq$‘r`½6ÖâÞ@D±ÅâN%!+r§> V¦t˜†•Y˜â‚ò³G©#ñ¾ü’-H ¿Xfi¼Œi‰ë~ìÖÔÿ»×ÞæÑ4J,ÇÏrE¢VÞxv²²Ô8ˆŸ…Ú^(r²O"Þ€a Ö¾öCâø%¨ÔýD-ž Héö½Rw ýÂÙ»?Uø­îÆÜW¯A˜ 9Ø6®›’#ž¯Ømæz@Ïè1I‹]ïs¬Á-ÆTÇcª VaL¾èÇœÔøûk#ÕvÖ„s×ÏÅQý.“&ͧlßéŽÒÑB²d°vÑ{û›ÉVÊkHÉHcµ¦ {¸hOî”_'þåés¿À­ùjÃ?N»Þï(²F:ÞV®õ‘Ñîæ]¨ýò»„Vó^¢Â€•¦rq›aäoBÉ9Cú[F ¾PÌ­Û¼FÒôí'ä,/T€ê5‚´pXi}!w}—êˆD!iv_AÕ7á’bL g÷›?*jý7ÌbbéŠü5ÝçNmÏT¸wÇ,ó»g6ø½Þ~,Z:b,GŒDÒ¼§ŽŽd„˲‰Â©û-¨1©B|4 `ò`ŽyàÀÄ1aÈý.†>#]y5 yuô£YR1E®3^ƒ>\¬ÙÄ63éYqë“—ã…¿=û™»î¥@æ0È{}Ko2È IŽ?¥]BƒÑ “S&(ã`©ÉÈãx‹žyòÚ"c^°ia7Û‹¨+‘lØ÷.€3O„„‹ýÍ`mköŠw‚ÿzÏ \ü¦ªåÃÝ9¹wΠ $›÷OJ“Ðg¼ ¸@8ý7s­$†O}µ¦ŠA™x%Æ”ó-d#k”Ízì|à'¦‘å»Ù܇à±Uç¿ü*, =âésÍ%kEâ£Öˆ COnÙIƒ½C Ó¦´cÐ [Õz T÷ƒ ¬›mòѧ…Èú®s,.„¢æì`k{6dÁÇå¥&ÝVOs}™‘`ËCõZÛ3*I)T2[߸v¼¥høžð†p. ãÅÔ« k3'bƒz~"]G•(8¤QS½<Û1¥ú¼þ…iƼåË÷=ÞU1p%çjƒ5ÿØæ&8¬Š™Jã¡G­M±Í°äfÂÝoA Nç| ó6¯¬òæ(_ô£Ààc”³–d³ølË{§ØÁ£µ7jP–YN¿àíB&:—CR^b–Üpö_º°éú̘wz<¤‘«áÔ"<¶!ñšU¬'Ó±ü¾Ë{ìßIL#Wm©9Oîšñ¨úŒhzE%]ÞSÅG¼ˆq'à—±ŒÔrT?:{V+i¢o1¾|)\CÜP³ã´ÃÓ2ˆïÓ…#+Çl…–bþ-ÖÅëo_µ'GH+“êvWÒàP{[á3M!žã6¯0¡wo¿È„1$ûúÈÈ2ƒm˸¸cTyíjøFódÞâ·?’,`cáøðì,WOÓíïwnÃÿàsîõ胄ü£ÂI­c(²¾TËö)ã!>JäoºÐÙ{¡¼8ÇßÛ}ÒÝÈ ^:ÕoæþÁ»¬íRðã™rVúsGÈNFÎëo OÇZ'œÿT'ªp¦xžá Y] |NŽÀ¶$½ÿÖúç Cweôhx¼xçàÒa1Áµ}ìÕº³ÏÕ%«/ <÷¶Î@¥i%QÍÄ2Sn¢?vMpΙ‹ó¾¦#Q©Cî9ÊßR)tøŽç¿ûæ(³,¤r¯¼rðBI!~ú O§|ê.ØúëÄã *=óêqnÈ>ãé¯M„½B?cœKÛÜŽ›lœ !‘½•™;ó ©Úê;öNòÚÈÙ¿~VÂ?·DÆê$¨ÌÎå„`±UÓÑðçç‹ ÚãõžLã\ªB¼§©Yû«@€-ËècÕÇ [Ù Ý9æŒsé\¸x¤|™ÂàÛ òj+ŸüôIëñ¥ë¿“L]ÔÇ–7ñî´4Âÿ|fÁRLD£ºx¾¼Êéõ Û'O“’]ÿ „UbW'Ú=ŽÆ{é嚯î¢êlL]¼ÐqoGÉÒŒ‚;ñÒdˆG¤ßôKóLÿ:9*>9b©i~䉱ˆ ·Œq_)$y7~uDƒÌ‡:Ì㠤܀=}ãy¹/°(¾TÇŰ©±F"¯|ã°g•$Utç‹g÷Z‰¤½@’/™‰ïcŠJnm½ÅR·5kŒ¿¤ERÊl34}eím¯:°zþ†ï3k­×“"Ìêh,evjNµ—'1ÃÝ0‰¼Â+ }ÃȽݧxø_–]\S~(º}ó5^Ûœ¨³Ž-à®Á˜Wàƒ}á0û¦,ß÷¨—Ÿyše>ù # ]­¾s Êí8žêJA¸Neħ£—£ô=—áBŽ,`WN —ìL¦lLèùñ¹èvsýq.}¾—J“ÁSœmÝîÛ>£ÙÈàÕé踓6gÃFÅ¡¾m6sæZ·=PÂO*·(à¶ArŽ·k¶hrˆñEj ÈÂåì+~ÔˆL¯2bG‹>,q”a§AÛ2܇Ä_†Y\­ÊÀ‘ç:*s^Ìÿîo”pÖ8øˆ¨ç&Â9ÒHXb|P-ê) Qq„ø5Û¸0±„½÷lžñ©LãPL©ÛMæë³8HYÂÉ- ˆ@ãÍÀê>º?=Ï*ÀT¤åÀ]Ç<ª­ˆ—J01°uvFÌKg߸l<ŒªÊæ2KÊŽF˜ò›ýÌ¡g{xå&÷¹DSo;£ÞÑò ö®ꪟ氶yåqæ%¡L`XIû*ФE±0=2ô‹ý¾Š;wJ¹¡øý¿cŒªË¤RX˜ñÄV‘˜­+ٚ絋fþù¬xªÌx,±öþ —)Dâ{ìΟEÅÏôx?“<£Bì:³¨]-¹”µ1(7zªd8rÞ"“â ®ž£{›€.éG[å@´f8I´¨nKÂx*á‘l«ÛI¦ÕÀ BþÄM£[6:Í£~‚N"\•} ÁXÖ¸éu£w29ÆÿPKU/1ý±@¦óšscangeometry.gifUT iqHAn–,CUxèèÕ˜Û?Óàÿßïæ0Fl˜ÃPbȆ¢l(‡J å˜S¡ò©(ÌùÌœe™œšC9Ë9…šS‰œÏ’Fr(Ùïûý]ýþ…ßóîuùz}ú¤¦¦&##3==œœ|éÒ¥»wï²X¬¶¶6 …‚@ h4Ú«W¯p8ƒa2™d2ÙÇÇgffæÑ£GT*•Á` Óéô–––””uuu{{û©©©íímNNÎÜÜÜóçϯ®®‰Ä‰‰‰_¿~UWW×ÕÕõööFEE¹»»ÛØØHKK»ººFGG///‹‰‰uvv¦¥¥™˜˜ÈËË—••ݼysaaACCC[[öÿøÿ Ù}(Æ€Êÿ†ÿup³)Æaá‘QÑ1±qñ ‰Ia¡TáŒÌ¬ŒT!±ägÏóhù…E/Šé%‘bB\\† °Z€ãõ›:ÁjäzÙÝó®÷ý‡¾„aq¤!ä…ðO|›œš€@à ¯!ŠKXÝÿcã'k³-Â4ä…Á!œÓÿÙß„­1&dÃS.[ÂX‡^¦H ? ¦ÃäfœçÐÇe%Yu&cŒ°]Ùñ.(ʪ´Ü– ã<¢þ‚©.È)ÄyÄÄÐ:>ä@²ÀùT' {¥‘hØÅ­nþìO"xYV=Ëk²‘BN¿Œ“šX ã“ó½Þ÷fŒ ~„-"9cò¦r ƒ‰±˜o^9]`DÄh¥s§DîÊö«ùwÆŠ¶¶8ÊÆl_”24“_ød¯ä`ëÔxö?¬*åh,ö¢»ºÞ eËŸëÏf;Ø¿ùÙW«;ýñ¢¾xÔ«–eƒ\²Fä3™ÈÄmm}ÏâTaPp»—¥tz£Zf¹ ?û£ãà&'¤¿ÏÀhøñK9•ÔÊîg< þãL…Dþ£cì8¾™Ð‚àŒ™ˆJ˜™ð©;d Lä¾éUPðK2ª+×ΑP2g APÛ¾Á3òW8¡äPü)®öÐ…IÅ"kxÒ˜«“Ø g¤Õ`É õðq»&KÉM³­L§@Ö.6Œ&lº+-™sêÛ)Žãé`´ë›—©AúÅâCɼ¸Õ¥glIèä¶=ŸúËk4ûJ7 á-õ8˃ ¯ä³Žš'Ò¯z­¾È¾QºZœ{m•þüI±hó¨Z…ZºVš+Çè+«f`¿—g¶.(¾ÜÈ>Ui>Aiÿò릟hay­Wñ2-‰T;^¡0yΫŸËÜ랊Jú׆è€æ+¯Î¾Wñêžóê:‚i¡àsœ2ô6VE¨’#„Âh—ëzN‘*©ËÊ_2nýJNÍ8ƒÜõ|ŸÁ~ȱ6`C¹ÄŽù$UÛóÅnWC8ʧ~}Pê,~#£‰˜½‰… —_¾šˆàܶië=ì)s¿²õþ§cÃLŸÑŠ®ÆÀ3Òò€‚0õÖktT9¬_sé>Aš·qâÔ+`œ–!òÐþo¤ëS 17í÷>ï„«›Þ §pºçÜ1…Î4 ŒOÕWHrtìN6›ï9M+RC§I·4µ#Pkn¯˜Íï…Åtv(L9‡XµAö.WÆp ¤Ì’»3 '±†<ç9~+/N¾tŒ¨d{Œf¿V„oheòÄsûŠ›´ VõÆ®)‹€YÉgWN‡•QV&õœÙ‚¶3z²f+´ ÇÐ÷±4 -lâŸ9›" t™Ï¥}¹½&ï4éÃ÷äìû\ñì'Kd \Ö¦__ø¯ã–LR¿l;~”Né#Îhmh;œÅÜA†’¡p!ˆ0æ±í)QxaûHo㤢 34½"q²¼5EÓµ$4'ÈË.ÝeF‰^ˆ@ehòþ)'šMà^Ünoú}é¾ÓY[±¾Së7NËÀ_–ßó(q¡ñÇþ¬×=C¿yëíšób¡õ„$3h 4{væóÙ;úÒ×Zý·WN^ îöZR¶)ÿÝé7øKþóÈé+§Kû}Ñ`[^-ÀlÔ·ˆd'RŽûš8ÌÓNõ3>ViÑ b¤þóp3'ØÕ;–¤¦CŽ`(ÞõÜè´†Ôó~…à’ÞçH½°×U+4¯H˜xÍK]YÅ„Èæò^ˆRž§«FnéBì{ÒPÅ£j ¡Û6¿Oäp X ²MϬf ÄúÁ;£†¡0?×çžÕǯlíO$rrágügh”…CŽÔnÛ¿iQmëÕYIn$EŸµ†ÒJ ŒÊóMh6>”ë1/ œNPD /Zm ÝQ¤è‹ ’kÅÎ%vÃä£},¶½ûѪOŠú'£†-Í|/éªfzëŽË©mDq¬ðKéžRŽQ¬½{á69ÙØjïë0¶»­1º§Æ´õwjø–‰¹<^·‡«2ÃUõ–m*çã9þ¬ Çg…m‰ùõúuÕ$×]=Å÷;ol¯ÜÐE÷€¤ýwÔä—ÈÉ‘cïƒëæï n„ÿÑ7éIäZkqôŒRÑæ˜Ì㘕ûìi/vç¯BÛ0aüÏsæ¦ÊÊ#5Ÿ(Hݹ¡VpU÷Œ¨ž™3×O\Žiþл±S#Ÿè» Ó–†ý¶Ýj1Jëæ6Ó êÔËpszsBSp·N’„+¨H[ì;ëà ²ÐÙQÝKøŠ÷C|¯ÃŒVYþ¾*ä?È¢[ü¶*pÎ'LTÄfÊ`Ðß÷ãÊØÕ£_¦=t}Gú~²óöþâö^4M*÷íf¸5UG¼9ߟÍ÷pjKBSÈcÇyìÚv_=î¦þ•ñoä™¶‚å(¼Ÿ÷)ò¨WEZ6ô–´Xˆ/«Ø”šcÎÕT+p`wš÷ÞÏp;¹m·Xe]Ðìßï19u°±e?æ-±Ó!·„Äkmñ.0P»«QDÛïÛÿª6àOʨVV=úëÿ[üa¾ë¬;åºëñeiQ&”˜ˆlŒpñ¿ßþظ›ãµ“+Ñ}ß]RŒ,;$ˆ$F"qUÚÈç¬5} JðA[´†ns!Z܇;0ü¯\Dy•U¥´‘™™W4 €lÿÀñ?¶Cö ê ›àom€·D›I¨òåûô|HÆÉpƒ6ûq$:¤6L,3¤rX‚‹ôØ›.LG¡ñ$;õºÑ!pôáýP_q>°¼ŒB!8 ?W¸]áŒCyMæ…Í1nŒ~ô-ËA”¼ÆÀ Gù»×7î+"ñ¶6)»6—£öà‚¬{I)ŽU¡¶i»è Tˆ#ÆÊrmÅêÜë“v½Ñt<¹‡ÂÅ~OF–HÊ` ŠWBòV"‰BYNHrvìíÅðétŸàÁ¸'%ÂU%˜±È ^?õ¥û÷é²€"L¼Ü&áσ«…@e½¤¾bì'±Ääü°‘‡B:lÙÇ™Çæ÷|Ý 'î%’‹ú&ñY&Y@’Ù@B6‡ÄŒi„jÉ#)¹d£¹°o¦¡4(8yKLÞÜs3ôKXÉŽ¥]Žœõ‚=¡ÎÓåøÍbV&ç)“JäëåPvÉâ p>†fP{Êèª OjëÜQyϨâÍh´g¤ÍJŠVƒd¹ÖQ¼Yð±—pMql¬xÌÉ©!Åv:æô>|'ÆŒR4²{ø7;í ñ¶vuú3°Ÿî ”‘ó.ÕÚ.ÃlAÖvÕÅ@JÜsÜ¿¥{ìêK9 6Žž’™T•ÉæÎ´ÛÊ”rI· È„¼n;gIõ¤ª‰©¹6`{f 싱S›®Y1_S6dSS’•yâ?ëÅXQßnz•¨y¡OŒ=Ü–"æžTûÆåÛí% s}¤£P[«S›BOZ—ÅD0”Û Á7œ|­s4rêS+b]+Ù¢›QFÂÆîÙšÝÚ=vOzcnš]¯[•å§X­Ë]$F)<”Nû%^ŒLA:G(éBY€`0 <ÿ>cÅK{%Âtü#ÄÕ&-‰‹LÁ­—’±/ÿg0wQ·zsE/g.…žTì€O Ÿ×ÐÇló²ˆY^â™á0h*;šÞé<Çf\¤Ì{ŠßÄðnz|¸ùœAåëíĵ¾ 6j ×pÔó™ñW aijÊèȈe½_¦ `; Ðå«– ˆ‘hÚë³{ªL|¼)ô§³¬Àú•ÇkÛE_Sr¸£­Ç/+cÑœ´„»#/¢óŸ#%‚…bò¼Jó°ƒùv[4 ½¨Øäúņ[õ²Ù*ÙÂÑur¨íçó¬·ºŠÝˆŠé6©1h³Ì'Ê—óÙ=Q¢UB_™rŸR…OAUYnD© F”øàM`«xvó±•/‡Ö o% (Ä"Ÿ)éÍ×ըƯ$B˜-¾k‚0àìawCLW>(d¶*@Yt»§nóD¼™sÍ^<×0ÙåR„FDó˜r×äÜ}Ë]¯$cˆlª¾FmÉi”Q÷ž1ÍN¬5ÿ…ã‡Ýˆí¸ Îõïr¼}oš`4Oœ)î(ÒT‘ ߺ~Í^R¿­Ï«Ëzp1Çäsv¹lžF,¶Ùæ£ã½yÖ¥#º_×åXƒ¸g”E™ZÇ$w¤êÂåŠÐ"œŽùUk¼­‰!è‘•7Í8­•p|¢ËV]ZãNòóëþ(®s¥×²k‚ùòÞÄÕ™׿ÞmgöU¿Ü²{ãÖwr{ëé4¨_WV,ö?Ÿª_Ž2v.—ш þf—qÚU\ö­¢Ç¶Ûʸ§ßùRŒ´®iPZ¢¿ezËŠoÏžGw]0÷qjÐoÏïôK_šÓ«óBoË;¹±…FÇ] Îç1šîµÎ^Ø8¶P™¶.ÈëóÊoìíê¢W‡u|¬X¯i¦õÄ)·Þþ´{è¸.ó§Üø@²¾7·+( œ¹®H€ê ÔS3™NI¾^&2e|±o¿iÌ©`ý÷!JÒÖÕê£IµAÓ-鋤utOaϯøÁqÄ9Þí~sÌxÍ>ƒªÓ|̾Г¼mý7Šû‚ëo}z¿0e£¢’ •¯!†oË®&–yºôõ‘Ô«ƒ¶k§k4!PzÿÖá@7šFÒY56Ñ”=>P?UB†Š‰tùO~¯/|&àGktl5”Þæ·Hlî±a¬OK‰ˆ’Tü\¥mŽhŸ»XWOPz6A¾6+ÿÓ|­je ãc–̨,c~Ú‹ætg¯Úê"O‹¢"Tá¤Ñi ÊxX}q3sŸ¦Çký>8í(ûÈ„ŽáxŸüø| hÑPñ6“GW¯päéi˜4aøy<¿þ¸³º]™ì<îÀäµK#Ɔa÷´»àÿýrQ&ÃO^æh|ïæÔÞÀ}‡Ó’Zmû;Z·:Ž~¯P‡ÏÆá*3©=SsÊ¢>Ó¤Xo’ XúOų¦Öx0S‹3ª_„Ž?ëÁžjà\‘¦ÈGÒǬ”œeΩ:~eç¿Xða«Ì»Îo…qÕÌ]º€_´o]t˜Z´9¿|¨Â1¼`á Âfæ ¬!Ö¥ÛSKÞ‡K>ÒË~g–ý—ïK ¼ž=y"Iºí╼¤= ö,háJ,ö3Q1hc9$)±'ì[„4ZÀU&¶rŘ&+¼šý|õiëjîÔêóÃUÚájšÅªñ øªM9épåf¯r.˜]Ô ©Ò/•žoöSxu†÷Š_P͵;À¿ ïáԣȖï}ƒ|Ÿù×ó`8×u(8­±Ö›CPAâäúÛË2G˜ãƒSÀ×*ǃ›GbÀVöß? à+ àOá=ƒâÔ?ý2òåp„5Õ6‡æÇá˜|H(2³ö5Y= À anÔ>©2}ÄH`‰Œ`‚ûÏM 01!aa..”¡!LH€qPøb £$„E„ÆÿÏaû²´¬¼¢ò£ªº††ª«“Šˆ¨¯¯}ÛÖÞÑY èýPK}‚13ô}þ N ctsim.hhcUT Ž–,CŽ–,CUxèè½\Û’·}ÏW(s^’*hšk•ã*®6©p\y:%²ûµzlüõ‘ ¤fwÒ>/sUÚ­­µÖÞ’æíÏãÇÑòïù„|X>Ü“ù§áýlDîjõúl²œÖëãåøð›z}òñîÝOoõ×êӎѵú1IIL#öûÝûÉÇÉÓ`ùøtG‚$–,–¿ßIö½)äF?÷s­F\²ˆ¦Äû­Aj5õÃú‡É`üîíðqü·úîqøÇd´$rŸ²Ã£²ž©H*’” ÉY¦^‡¼M© Qñž³ˆnÙR¿#Ï4ÌÕO¦I¸fB¿aýørê«Oðýì¹ñ ’~À|áû$ áéE™ñè¿Å_•ý¶“Qøòêãiü¨iÁ 0B ÞáÍÿ#“”Ë'^ H÷‚ow’ĉä;w‹§iàñ<ƒàkœ| ÙzË¢":ÎñøW'g6>êuMç,–"YçäIŒ±eÄ Â¢2)`éE¬tJ;ÁÒ6°øÕ°ä4$ÏLÓÊ»¡Í+gËÄ·º1 M’THµ$Èh¹(ÿÇIØ®ÐÁ‚ÖËŸ9¾’XŒf-нÑ=Z4Á÷M}hBnnnv”Æ„&ä<k†Eýá˜ß’"7ÍN‹è!힇ÉËŒuGE-‹ß!¹~&+ÅB,Î5OF4^£%p« /z°æ>¬³ F%#ˆYÞªÒdm·…ö(ð(`[B ¥ev¥ £¶*°>ØR(PÎÛ(¢ŠKj™äïWLÊǔᰋÉü~©Á,è3 í¶Lö÷+ÎÖ(Lpºß-S|ÈØ¡!”¼i›BàC¦á SóFª{@¦øk(-yŠÆlÌûy`m^ÛlÒû(0 VIŽ'ámÓ­û ›(º¾ZÃñvP­-TpÿÀ:Ëà|Æ:”ZzEá¯æò‰fJ•/Pn°v+`…hëŒuþzÍí²Ið-HúŽ%6nîY;­å7; ÓZ¡U¦‘N¾cù­ŽÉý­*{5XSØ)ˆŸk¡Sî35ìÞ”ƒÉâ<Úq„ª˜|H gö*xú$ƒ\&(àL=h¾+C4¾ê˜V½ñþµv„»47z 2[ƒõú Yä+)h ߇<”< ÷oȘ?ó5N¾[Ü^©usmoÆ ‹Ö¡Eæ×ÆÚ'ëÝŽ+Û Î’©kú÷V…Šù² wwË¢oHM‚Ë]Ä$0&«k:÷6X öO®jó=ÒŒ­ñfËôîmðdfLÃýƒ9¸lÀ¹ÁS¥ SæÈÜäÀŸIâmÈœ½'®Ýëš|Þ®XÒãÚ½®Éëíê¥Å‘°$y:»ËCŠÒýëö*¤]õ"£D=O°ðšÌßÏ¥pÎÀ¦Ó%¸žuž’È3¸Ã^ªPIFdBÊ­fˆ¦0´!å´i|à™L¶j, 2K&@sj#[Ö–;}ÑbA£4¼Ü‘wF0½ ¦<çp„ú¤V5?÷ªTÐò1¯¨@W;žá}•n?”¼•Г_žØŠÇæ²ûoR,y;a:±Qå²gjS§âN®\öÌ*£ùÃQ"´™rÓlR5ß7e¥‰1VÙÞ·Žèƒgn”íŽÏ÷ôËó=úý4L½å^5¹ç1Ã?>Ó7ëŒĸ§ã3/þ ÇSÙzµ‚÷‡ rD>õÖ/Ê ¾–þi„c´ØO#è–˜ÑÜ}Cë÷{%oÈycýò*WÔL¿0ÌA®/K5Î8ø¦Žrk§_*Àø‚†¢Y¢¨æ ×8ü‡`ã4ãRR£ ÕoÚQZ²òª}f+|òfæÕ¦˜×W½†iƒ;°ÿ'çïB´×°\0TxÎTI¡”^;™î0•Jê½x·ÿ ˜;\¯“oq˜Ð5€il s}eÔ²ÅP5U„G{«Ï'"´K+‘p›Æ¿ Ù¤Ñ-pØÑ5k‚d˜òµùvH|ÖÅÚäLŒà=Ð4Å.ëfm®›ÿm³KÞ·ÝUJå!ÅÖ¬ò튯B®w-ÓÝ,5oÜ 9Àúé_PK}‚13M=À²ãM$ ctsim.hhkUT Ž–,C–,CUxèèÍšÝwšHÀß÷¯˜¸ÏVA£æœ4çÄ„] ¤»Ý—ž Ž:)0,ŒùØ¿~/lÓ¡]f“—(rïð;wîçó“©¥{Ÿl]{‹9²o.禎:Ý^Ï4¼Y¯7õ¦û;½ž±ì\ürž}‡-Á+ø Ç(Â!yß¹2–†£y–ÓA>‹8‰øû'jÂ×™ÞI·‹\ÊIˆc¤¼ë£n~ì]ÚôâüÒš~‚+ëò7C÷ŠÉ^•÷RP@qÂb’pJRXÇ8ÁañL3Äâ|Ýã`¿ÌX°"IöÀ^¾|»™gzsó½ð`Ê–®¯=g>ëú<¥áxònËÃàWszýy:¿úl[sÍùZs Š6 p’Yäž$)eQ.~€k…k æ\ðŸÄœfVñYZD@·7à‰¾—¥©ºá nµ™9÷ ‘Ù¦ls¢'ƒ ¬iÀ÷»Ú¾éNŸá>ܘúï®§9žîÃŽú_ËqÂe0úuƒÚ–)ßIã1fr e”SÝbÿË&a»hé“4¥ÑFÀvyPAÇ:-»šz ×ÚÒ³?äkñGœ…2ð&§u<ÇЭ¥ë97ºgZK¸¼4—ÍXˆï(åÉÎçSrK¥„î8ç-LQ(Ê'v.y2Q”>E?Êà:+ I׊è Ñ2À¨P…ª”pìs‚‡lï!9®±/Úœ?È-:’mJÕêPRsR\Ý£ƒryOɃ”ü:¬‡¡vãY®®Í ¢¶ã ¥°œã)ý¢» `¸Ñ̯D[vóÂRû‹L;À¡(À äLÿd Û|#$sm!ƒättT^4-ó/‘_—5§è?r¼[9ËáÒÍ7j8. c¨W Ž·ÔO‘ Ýô6RêÛQ&Э…­9¦k‰ÊðÿÒ7u ¶cÌ ÇXê†ÛlC턬IB §RÜm|ÌgeËA'Әݑ}º—§ô•¢}¹SéZ€T‘i™â´V¡|DQ9ʼ¹8X®$¥ ªe¹YŸ*•í;§–X•ìvGƒ•ÈPl—øÆëAù¶iP:´4BG:È´<©*uFQ‘y=ˆ"ã@nÓ©ôûå”6ˆóŠPË}ÀÙ3F|×£j9+çœÅÔ(Šô²ƒ-’Ùo+à ÓYà ҕԈLj#- HH¢2Á ¡ŒšxËþS¶ÿk­™pª|jy³Æ•ÍRDãui¨è!‘tD§žUˆÔþÛ˜?”IÕL¢C€Yh%ÑFJÕFŠ(î³öB*ŽÚ¯â 8³lh÷Rh”*Í©()’¬Zu§`Ÿ³D"×`Tul¡•²#µìIR²ZÍÑÊHÄþsKàŽ6²NCÔ²çj«B-Û¥ç¢â5Û¿§ +”’LJñæõÁܧ‚=¡> w§rsã¢-l)£}5 'æù™´×L“£ƒ†úÉÿÏœùKÙ¸"æ6„eÞòµ´iÉ-õÞ[9IÛ5ñ–Ñu´…fzeDÀfü +NäZî?àA~ßo”¯ÜÚg3¾UºÂŠrêdÑù­ØC0,:0™ÖÄZž`ÆåC*¯¡¿3Éo«‹„‹ƒ Kè6MxÚ^Ž[¶ŒZ96É´›œß<˽.ŒÎÂG+”ÅØ‹G9ç½ì¿lþPK}‚13±–Öùû ctsim.hhpUT Ž–,C–,CUxèè]Ô]kÚPÀñû|Šàu'ç59¹ðª]™°ÕA2ÊYLIh¥92÷í—é´ÿ§‚øx|y~ŠþŸV_×ËÕÃãäv×ïËØþj»6þYè¹Nî]÷!ÖǘŽuùZ5‹ïõ8=mˆõÇô¹íêEǶŸ7Muzùt²åyÕôÉ]ý\º˜nÚa»û}~àSÝí¯Äݾ­Îç?«ÿo>obß%Ëa[åž—dÝÆéþíú±íS;÷é·±~M¿”áì’äi³|¸[m¦Osݳ¸™]‘³·ùå2˳›ÓE3êß­ ª>M×iÁýòóÇËÛ¿ãžÎ4fƒÙbv˜=æ sŽ9`.¸Kñ7k®ÖÜ­¹\s»æzÍýšM¡ÀˆÏN¡ÀP`(0 †K¥ÀНŸK¥ÀR`)°X ŽG¿ ŽG£ÀQà)ðx <^ü)ðx <ž‚Œ‚Œ‚Œ‚Œ‚Œ‚Lü(È(È(È(È)È)È)È)È)È)ÈÅ_‘‚œ‚œ‚@A  P( AÔ€‚@AAAAAAAAAAAAAAAAA!‚$‹$’¤D“”ˆ’UR"KJtI‰0)Q&%Ò¤„å]…ERR&R6RFRVRfRtR‹Pj#[-,¢•ZÄR‹Zj‘K-z©E0µ(¦¾$ó/PK}‚13šd$·Q €ctsim100.htmlUTŽ–,CUxPK}‚13ܶÆy¾ €÷ctsim101.htmlUTŽ–,CUxPK}‚13„é6˜ €°ctsim102.htmlUTŽ–,CUxPK}‚13¿ØM[ €òctsim103.htmlUTŽ–,CUxPK}‚13ÁÛýSý  € ctsim104.htmlUTŽ–,CUxPK}‚13> R´ €Ê ctsim105.htmlUTŽ–,CUxPK}‚13X§™^t‹ €¾ctsim106.htmlUTŽ–,CUxPK}‚139¦åA  €rctsim107.htmlUTŽ–,CUxPK}‚13 ²[@] €óctsim108.htmlUTŽ–,CUxPK}‚13 fÌàm„ €Fctsim109.htmlUTŽ–,CUxPK}‚13ᥠ2 €óctsim10.htmlUT–,CUxPK}‚13K³œª €dctsim110.htmlUTŽ–,CUxPK}‚13~œRL}¿ €Nctsim111.htmlUTŽ–,CUxPK}‚13Y#9ø € ctsim112.htmlUTŽ–,CUxPK}‚13Ú®½¡ €ictsim113.htmlUTŽ–,CUxPK}‚13#œ‚:x €fctsim114.htmlUTŽ–,CUxPK}‚13 ±(œ¯ €àctsim115.htmlUTŽ–,CUxPK}‚13§U‹E«@ €Ï%ctsim116.htmlUTŽ–,CUxPK}‚13)𓎠€º+ctsim117.htmlUTŽ–,CUxPK}‚13mY‹ €ý-ctsim118.htmlUTŽ–,CUxPK}‚13Â"b…í €È0ctsim119.htmlUTŽ–,CUxPK}‚13³ú%Ì1  €2ctsim11.htmlUT–,CUxPK}‚13í¼¢SÏ €ý3ctsim120.htmlUTŽ–,CUxPK}‚13˜p£Û €5ctsim121.htmlUTŽ–,CUxPK}‚13úKÒ-¡ €î6ctsim122.htmlUTŽ–,CUxPK}‚13/Ó#åŠJ €[9ctsim123.htmlUTŽ–,CUxPK}‚13øWhñ©9 €%;ctsim124.htmlUTŽ–,CUxPK}‚13µ¥Ò6?Á €=ctsim125.htmlUTŽ–,CUxPK}‚13'ÓðG”» €>ctsim126.htmlUTŽ–,CUxPK}‚13Í;¼ïÏ €a@ctsim127.htmlUTŽ–,CUxPK}‚13Ù¿ÄÃ' €Actsim128.htmlUTŽ–,CUxPK}‚13µ|p˜‡ò €÷Bctsim129.htmlUTŽ–,CUxPK}‚13‹â ²H €¾Dctsim12.htmlUT–,CUxPK}‚13.ÏWÄÈ÷ €¯Fctsim130.htmlUTŽ–,CUxPK}‚13º¼ÓÄ" €·Hctsim13.htmlUTŽ–,CUxPK}‚135µ9ön| €ºJctsim14.htmlUT–,CUxPK}‚13¹+vÕŽ €gLctsim15.htmlUTŽ–,CUxPK}‚13!ÔG„á €{Nctsim16.htmlUTŽ–,CUxPK}‚13áñpé· €>Uctsim17.htmlUTŽ–,CUxPK}‚13qeU· €fWctsim18.htmlUTŽ–,CUxPK}‚13Jå-•Þ† €úYctsim19.htmlUTŽ–,CUxPK}‚13ÁÁ´ €\ctsim1.htmlUT–,CUxPK}‚13KzÖCÆ €_ctsim20.htmlUTŽ–,CUxPK}‚13šî¾8È{ €eactsim21.htmlUTŽ–,CUxPK}‚13»rÌ•÷¬ €lcctsim22.htmlUTŽ–,CUxPK}‚13©l‡? €¢ectsim23.htmlUTŽ–,CUxPK}‚13»~Þ3 € kctsim24.htmlUTŽ–,CUxPK}‚13T¡ÈÐ €=nctsim25.htmlUTŽ–,CUxPK}‚13Ý–¥ûé €Lqctsim26.htmlUTŽ–,CUxPK}‚13×>ûgœ €†rctsim27.htmlUTŽ–,CUxPK}‚13_ˆ6Îî €Ftctsim28.htmlUTŽ–,CUxPK}‚13ü×¾V €Syctsim29.htmlUTŽ–,CUxPK}‚13øbÌ% €P|ctsim2.htmlUT–,CUxPK}‚13€S:I@ €Z~ctsim30.htmlUTŽ–,CUxPK}‚13èäRê2' €Ù€ctsim31.htmlUTŽ–,CUxPK}‚13Æ„u Mv €J‚ctsim32.htmlUTŽ–,CUxPK}‚13Òk¾ €Ö„ctsim33.htmlUTŽ–,CUxPK}‚139‘â´ €‡ctsim34.htmlUTŽ–,CUxPK}‚13½¯ê¢ € ‰ctsim35.htmlUTŽ–,CUxPK}‚13c¦ Å+ €Qctsim36.htmlUTŽ–,CUxPK}‚13d!ébb €˜Žctsim37.htmlUTŽ–,CUxPK}‚138…ÇÊ €9ctsim38.htmlUTŽ–,CUxPK}‚13!,žwXN €Š’ctsim39.htmlUTŽ–,CUxPK}‚13l Î=7 €!”ctsim3.htmlUT–,CUxPK}‚13;.Qì? €œ–ctsim40.htmlUTŽ–,CUxPK}‚13ÑÉåðµ· €˜ctsim41.htmlUTŽ–,CUxPK}‚13‰ûó €šctsim42.htmlUTŽ–,CUxPK}‚13¦0^Ó)˜ €@œctsim43.htmlUTŽ–,CUxPK}‚13¹:†ôŸÚ €¨ ctsim44.htmlUTŽ–,CUxPK}‚13™’¾ÿr €†¢ctsim45.htmlUTŽ–,CUxPK}‚13ú€ãGN0 €Ä¦ctsim46.htmlUTŽ–,CUxPK}‚13ÇÎ@|!Ý €Q¨ctsim47.htmlUTŽ–,CUxPK}‚131 ä(m€ €±©ctsim48.htmlUTŽ–,CUxPK}‚13#UçÐø €]«ctsim49.htmlUTŽ–,CUxPK}‚13,Gž(£ €”¬ctsim4.htmlUTŽ–,CUxPK}‚13œ.¦§ä} €ú­ctsim50.htmlUTŽ–,CUxPK}‚13_ù\ø €¯ctsim51.htmlUTŽ–,CUxPK}‚13ž^<¹ €T°ctsim52.htmlUTŽ–,CUxPK}‚13úëÐò¤ €¡±ctsim53.htmlUTŽ–,CUxPK}‚13Üèìl( €ç²ctsim54.htmlUTŽ–,CUxPK}‚13lÐ5€$î €;´ctsim55.htmlUTŽ–,CUxPK}‚13áËåá h €žµctsim56.htmlUTŽ–,CUxPK}‚130Û¦ €ý·ctsim57.htmlUTŽ–,CUxPK}‚13:ùJËD €â»ctsim58.htmlUTŽ–,CUxPK}‚13C„itk €e½ctsim59.htmlUTŽ–,CUxPK}‚13VUÚ6f €¿ctsim5.htmlUT–,CUxPK}‚13Bw#,à €ŒÁctsim60.htmlUTŽ–,CUxPK}‚13ÃÚ‰ €÷Ãctsim61.htmlUTŽ–,CUxPK}‚13¶êÄ×Áp €·Çctsim62.htmlUTŽ–,CUxPK}‚13¬¾ñrª €·Éctsim63.htmlUTŽ–,CUxPK}‚13Ó‘ÑfHå €Ëctsim64.htmlUTŽ–,CUxPK}‚13˜›Òlú’ €ŒÍctsim65.htmlUTŽ–,CUxPK}‚13zífž#ª €ÅÎctsim66.htmlUTŽ–,CUxPK}‚13š^Î}² €'Òctsim67.htmlUTŽ–,CUxPK}‚13üRä–H. €ãÓctsim68.htmlUTŽ–,CUxPK}‚13ý9u'ÐV €jÕctsim69.htmlUTŽ–,CUxPK}‚13V£(áA €y×ctsim6.htmlUT–,CUxPK}‚13S‹ $v9 €øÙctsim70.htmlUTŽ–,CUxPK}‚13ÕCº¤žT €­Ýctsim71.htmlUTŽ–,CUxPK}‚13Ø_¦Œ•— €Šßctsim72.htmlUTŽ–,CUxPK}‚13»)•Ê•¼ €^âctsim73.htmlUTŽ–,CUxPK}‚13o7%#:' €2äctsim74.htmlUTŽ–,CUxPK}‚13êŒc°Q €«æctsim75.htmlUTŽ–,CUxPK}‚13¦W÷. €šèctsim76.htmlUTŽ–,CUxPK}‚13Ä!u‡Ô €êctsim77.htmlUTŽ–,CUxPK}‚13ÿž©¿± €Xëctsim78.htmlUTŽ–,CUxPK}‚13Yšé(L3 €Víctsim79.htmlUTŽ–,CUxPK}‚13ÅÉ[ƒ P €áîctsim7.htmlUT–,CUxPK}‚13à ëJ@ €?ñctsim80.htmlUTŽ–,CUxPK}‚13º?Móó› €Èòctsim81.htmlUTŽ–,CUxPK}‚13û~¿³ €úóctsim82.htmlUTŽ–,CUxPK}‚13À)CçÆ €ìõctsim83.htmlUTŽ–,CUxPK}‚13„}H­s €B÷ctsim84.htmlUTŽ–,CUxPK}‚13ɉj܃ê €”þctsim85.htmlUTŽ–,CUxPK}‚13gþYRÖ €Vctsim86.htmlUTŽ–,CUxPK}‚13t¦˜5S_ €–ctsim87.htmlUTŽ–,CUxPK}‚13ØÊóÒå €(ctsim88.htmlUTŽ–,CUxPK}‚13h¬»úè{ €9ctsim89.htmlUTŽ–,CUxPK}‚13Y×ã€Î €`ctsim8.htmlUT–,CUxPK}‚13œ€§”=  € ctsim90.htmlUTŽ–,CUxPK}‚13ú(b¬ €š ctsim91.htmlUTŽ–,CUxPK}‚13[ŸiÒô €Þ ctsim92.htmlUTŽ–,CUxPK}‚13€­ó] €ctsim93.htmlUTŽ–,CUxPK}‚13áÄXÝüÅ €Cctsim94.htmlUTŽ–,CUxPK}‚13rؘ´y €~ctsim95.htmlUTŽ–,CUxPK}‚13<‹;4" €qctsim96.htmlUTŽ–,CUxPK}‚13a”¿˜} €Òctsim97.htmlUTŽ–,CUxPK}‚13á§|¹} €©ctsim98.htmlUTŽ–,CUxPK}‚13Î^׉]” €ectsim99.htmlUTŽ–,CUxPK}‚13MT€J; €!ctsim9.htmlUT–,CUxPK}‚13߸^¹Ø €‰"ctsim_contents.htmlUTŽ–,CUxPKU/1Xl rÏ €ˆ$alphacalc.gifUTjqHAUxPKU/1…@pNÆ1è1 €U6divergent.gifUTiqHAUxPKU/1Ç$Ü®>? €[hequiangular.gifUTiqHAUxPKŒU/1ÎeXŽÌ €K§equilinear.gifUThqHAUxPKŒU/1¸Ð2“ª €ºlogo.gifUThqHAUxPKU/1ý±@¦óš €èÈscangeometry.gifUTiqHAUxPK}‚13ô}þ N €àctsim.hhcUTŽ–,CUxPK}‚13M=À²ãM$ €Xéctsim.hhkUTŽ–,CUxPK}‚13±–Öùû €wîctsim.hhpUTŽ–,CUxPKŒŒï&¬ðctsim-6.0.2/docs/ctsim.pdf0000644000175000017500000111120710667176710014430 0ustar kevinkevin%PDF-1.2 7 0 obj << /Type/Encoding /Differences[0/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/exclam/quotedblright/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/exclamdown/equal/questiondown/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/quotedblleft/bracketright/circumflex/dotaccent/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/endash/emdash/hungarumlaut/tilde/dieresis/suppress 160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 173/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/dieresis] >> endobj 10 0 obj << /Encoding 7 0 R /Type/Font /Subtype/Type1 /Name/F1 /FontDescriptor 9 0 R /BaseFont/VRBLEP+CMSS17 /FirstChar 33 /LastChar 196 /Widths[299.8 470.2 783.7 470.2 783.7 712.1 261.2 365.7 365.7 470.2 731.4 261.2 313.5 261.2 470.2 470.2 470.2 470.2 470.2 470.2 470.2 470.2 470.2 470.2 470.2 261.2 261.2 299.8 731.4 444.1 444.1 626.9 624.5 625.7 600.8 678 561 534.9 626.9 663.1 258.8 442.9 650.6 508.8 819.8 663.1 692.8 599.6 692.8 606.4 522.4 640.6 643.8 624.5 885.7 624.5 624.5 574.7 272.9 470.2 272.9 470.2 261.2 261.2 450.9 483.9 417.9 483.9 417.9 287.3 470.2 483.9 222.6 248.8 457.7 222.6 745.1 483.9 470.2 483.9 483.9 320.3 360.5 339.6 483.9 431.6 640.6 431.6 431.6 408.3 470.2 940.4 470.2 470.2 470.2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 508.8 783.7 731.4 572.3 626.9 663.1 679.2 731.4 679.2 731.4 0 0 679.2 548.6 503.1 503.1 764.4 764.4 222.6 248.8 470.2 470.2 470.2 470.2 470.2 624.5 417.9 450.9 679.2 731.4 470.2 808.6 913.1 731.4 222.6 470.2] >> endobj 13 0 obj << /Encoding 7 0 R /Type/Font /Subtype/Type1 /Name/F2 /FontDescriptor 12 0 R /BaseFont/GKNYPI+CMSS12 /FirstChar 33 /LastChar 196 /Widths[311.3 489.6 816 489.6 816 740.7 272 380.8 380.8 489.6 761.6 272 326.4 272 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 489.6 272 272 311.3 761.6 462.4 462.4 652.8 647 649.9 625.6 704.3 583.3 556.1 652.8 686.3 266.2 459.5 674.2 528.9 849.5 686.3 722.2 622.7 722.2 630.2 544 667.8 666.7 647 919 647 647 598.4 283 489.6 283 489.6 272 272 468.7 502.3 435.2 502.3 435.2 299.2 489.6 502.3 230.3 257.5 475.1 230.3 774.3 502.3 489.6 502.3 502.3 332.8 375.3 353.6 502.3 447.9 665.5 447.9 447.9 424.8 489.6 979.2 489.6 489.6 489.6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 528.9 816 761.6 592.6 652.8 686.3 707.2 761.6 707.2 761.6 0 0 707.2 571.2 523.1 523.1 795.1 795.1 230.3 257.5 489.6 489.6 489.6 489.6 489.6 647 435.2 468.7 707.2 761.6 489.6 840.3 949.1 761.6 230.3 489.6] >> endobj 16 0 obj << /Encoding 7 0 R /Type/Font /Subtype/Type1 /Name/F3 /FontDescriptor 15 0 R /BaseFont/OXUDKO+CMSS10 /FirstChar 33 /LastChar 196 /Widths[319.4 500 833.3 500 833.3 758.3 277.8 388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 319.4 777.8 472.2 472.2 666.7 666.7 666.7 638.9 722.2 597.2 569.4 666.7 708.3 277.8 472.2 694.4 541.7 875 708.3 736.1 638.9 736.1 645.8 555.6 680.6 687.5 666.7 944.4 666.7 666.7 611.1 288.9 500 288.9 500 277.8 277.8 480.6 516.7 444.4 516.7 444.4 305.6 500 516.7 238.9 266.7 488.9 238.9 794.4 516.7 500 516.7 516.7 341.7 383.3 361.1 516.7 461.1 683.3 461.1 461.1 434.7 500 1000 500 500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 541.7 833.3 777.8 611.1 666.7 708.3 722.2 777.8 722.2 777.8 0 0 722.2 583.3 536.1 536.1 813.9 813.9 238.9 266.7 500 500 500 500 500 666.7 444.4 480.6 722.2 777.8 500 861.1 972.2 777.8 238.9 500] >> endobj 18 0 obj << /Filter[/FlateDecode] /Length 338 >> stream xÚU‘ËNÃ0E÷|Å,©üç±ãÑB* Ø -r«ˆ44¥ð÷Øã€`‘Ìhâ{î$J [àr Õé•-1Ë Ú€„TeA5}—Õ²Þ%©QF´±yØ»>t$«ö°j’çêf($ Gä„e; £°(~ ,ÙNƒ"44Úi¨Tlwë>êÖ³u&ë}·wí:Iu.\¿„aî?N1Ø2ʫ툲fšIc4F<&þåú}Ý1Û …’C‡¨K‰'E‰šÄª¥ÔÑÈ@‰%ß¡U©!ÃKxík†ìgý¿¸ØºRÒhµßU"Y–Ìûõƒ72ZÌ»ý[=pbcD· •Ä;ÆÁÂ}Ö/£H¡ W×ö$+)š5»Ø,‡Þ¹aDà c«±Ô…çÍúð~p½&1ÅèG?~L+r%‹ñ'Ÿ|ö‹˜ endstream endobj 20 0 obj << /F1 10 0 R /F2 13 0 R /F3 16 0 R >> endobj 6 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 20 0 R >> endobj 25 0 obj << /Encoding 7 0 R /Type/Font /Subtype/Type1 /Name/F4 /FontDescriptor 24 0 R /BaseFont/HYBYDS+CMBX12 /FirstChar 33 /LastChar 196 /Widths[342.6 581 937.5 562.5 937.5 875 312.5 437.5 437.5 562.5 875 312.5 375 312.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 312.5 312.5 342.6 875 531.2 531.2 875 849.5 799.8 812.5 862.3 738.4 707.2 884.3 879.6 419 581 880.8 675.9 1067.1 879.6 844.9 768.5 844.9 839.1 625 782.4 864.6 849.5 1162 849.5 849.5 687.5 312.5 581 312.5 562.5 312.5 312.5 546.9 625 500 625 513.3 343.7 562.5 625 312.5 343.7 593.7 312.5 937.5 625 562.5 625 593.7 459.5 443.8 437.5 625 593.7 812.5 593.7 593.7 500 562.5 1125 562.5 562.5 562.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 675.9 937.5 875 787 750 879.6 812.5 875 812.5 875 0 0 812.5 656.2 625 625 937.5 937.5 312.5 343.7 562.5 562.5 562.5 562.5 562.5 849.5 500 574.1 812.5 875 562.5 1018.5 1143.5 875 312.5 562.5] >> endobj 28 0 obj << /Encoding 7 0 R /Type/Font /Subtype/Type1 /Name/F5 /FontDescriptor 27 0 R /BaseFont/RVMHHW+CMR10 /FirstChar 33 /LastChar 196 /Widths[277.8 500 833.3 500 833.3 777.8 277.8 388.9 388.9 500 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8 500 277.8 277.8 500 555.6 444.4 555.6 444.4 305.6 500 555.6 277.8 305.6 527.8 277.8 833.3 555.6 500 555.6 527.8 391.7 394.4 388.9 555.6 527.8 722.2 527.8 527.8 444.4 500 1000 500 500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 625 833.3 777.8 694.4 666.7 750 722.2 777.8 722.2 777.8 0 0 722.2 583.3 555.6 555.6 833.3 833.3 277.8 305.6 500 500 500 500 500 750 444.4 500 722.2 777.8 500 902.8 1013.9 777.8 277.8 500] >> endobj 29 0 obj << /Filter[/FlateDecode] /Length 1023 >> stream xÚmV[sªH~ß_AíÓP%,W…GTŒ³Ap“sêdˆb¤*‘bNí¿ß¾ sÌ‹ÓÓÝÓýu÷7#šeZ–ö¢Ñr§MË¿žfOLÇÖʽfi†íX¦›ù1kßu×ÿuÍË…^7܉'Žmßlkýßòo-.)‚¯Ù–^"Œ3t.œ‰ŠàÁuÄ“Ø>é(zÂ×p,ËÁ­+îëæÈâÊd¼=ÕGŒò¬ð[w/£Áan È鸦O×:ù¼5§SÓB$σ¬-¬¾%ΧŽz“@l.=p©&â œá®ÙƒÖ´ÕqÇgwÍ©ïšçs_cÌPô‡æÄ–S»ï1ØO,°ê”‚ÐôÊo×þíù Ë‹¾ê/÷m7TbC%\JudŒ† (ßÏÝ;„n Æ˜×CÝÕÏWž/]Åñë+~6ý¡=÷콯±n8ï]‹§>šÝàØ*åÕT’ꙓ’'µ–]·_ ÔL • :·E”ÌÞXœ õ¶g5Íõ&ª»¨â¢¯ŠfÅ@>ó®\ªŽÄ4¼¾²°6õ‰åvÏÆ!Áä‹ñ]!‹®~­°“W…xTÈçqNÔ8?’oQ¹Œu÷ƢÈå£nÛ–ˆrRùB¸NÄ:ÇBxóxΞž¢ÂÅŸ¼‹Ò9;?Êr™mJÖó(-¿³*[ ¾ß¾—é|„ÈC[çqQ¨\­‰™q“åjð9ex”ELžé,ÙÌezÇ>8N`‰D®d‰·*ŸRféè–Ìðáÿž—ò‰gK0é@Äh*Yªs×…,S¨@m¨…Êñ²Æ«å ”³MâMGÖ›|ñ““)"Íxâ´d±XFI‚b(îã‡ÁŸ,\yšEœNc±Sp!¦1›M%_Pã†Cá×ñLFɈw25naÏ€')·:ñ³ £•y<+ùyÄ ¸Î²´ˆÿÙ€3DdÕ“F«ùv|;FAo1SåW,çwJñ8o£90Úe„½/‹ º–³ضIHKäAÕ‚¦œ­x—d÷Œã‹ ±5œ…XÅü¢ ¬kŽ„(F·½z\ÆDdõ™Û¸¦YÉBD¡€àsTœ tsQ~r ÅP¿J‡!R;à‹J^©JðU× 8 JT·¹ý>‘ƒ2øï/ÊeÁí‚ Ý3jÍù2÷0ì 3µÇËÉãRKoÑ dYǹbä*Jgñ530„,ØíÓSF7?B3«oxYMË¥Ð+þ;W¯íÃ6-Rûp)WÕðÇ[UL_*äå»Âs3ð!4†lÔÇÇÿHE"ª endstream endobj 30 0 obj << /F4 25 0 R /F5 28 0 R >> endobj 22 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 30 0 R >> endobj 35 0 obj << /Encoding 7 0 R /Type/Font /Subtype/Type1 /Name/F6 /FontDescriptor 34 0 R /BaseFont/LENPPT+CMBX10 /FirstChar 33 /LastChar 196 /Widths[350 602.8 958.3 575 958.3 894.4 319.4 447.2 447.2 575 894.4 319.4 383.3 319.4 575 575 575 575 575 575 575 575 575 575 575 319.4 319.4 350 894.4 543.1 543.1 894.4 869.4 818.1 830.6 881.9 755.6 723.6 904.2 900 436.1 594.4 901.4 691.7 1091.7 900 863.9 786.1 863.9 862.5 638.9 800 884.7 869.4 1188.9 869.4 869.4 702.8 319.4 602.8 319.4 575 319.4 319.4 559 638.9 511.1 638.9 527.1 351.4 575 638.9 319.4 351.4 606.9 319.4 958.3 638.9 575 638.9 606.9 473.6 453.6 447.2 638.9 606.9 830.6 606.9 606.9 511.1 575 1150 575 575 575 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 691.7 958.3 894.4 805.6 766.7 900 830.6 894.4 830.6 894.4 0 0 830.6 670.8 638.9 638.9 958.3 958.3 319.4 351.4 575 575 575 575 575 869.4 511.1 597.2 830.6 894.4 575 1041.7 1169.4 894.4 319.4 575] >> endobj 36 0 obj << /Type/Encoding /Differences[0/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/visiblespace/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde/dieresis/visiblespace 160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 173/Omega/arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/visiblespace/dieresis] >> endobj 39 0 obj << /Encoding 36 0 R /Type/Font /Subtype/Type1 /Name/F7 /FontDescriptor 38 0 R /BaseFont/GVFUWV+CMTT10 /FirstChar 33 /LastChar 196 /Widths[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 525 525 525 525 525 525 525 525 525 525 0 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] >> endobj 40 0 obj << /Filter[/FlateDecode] /Length 598 >> stream xÚTIoœ0¾÷WøV#Í8`c–cÛiÒE‘"…[Õƒ<`…Ä2Ñüû¾g{è$Q—“íç·ø[€„, IMìrG>7·1‰RÆ#RHH¶™„ÃîýP"¢O]Ës««Zu‡‡y ~ßÈçÂ6HH²|md,ç¶ÁWÕ[‘ ú]aÕ9ȺÁ§ Û1lrs+_– &c[ý8[žR]ÕB‘„±êž&¿ïݺY°ó g@ö£!=ô£».ûÃóhöËlºÚ]cçŒöãlúîU¿¹1>rT¶tQ­üaT£|¾š&3ͺ²Ôx$Ò"™ )BÐJŸ°R·ý€LÂfwÑéo.rÉD }°Á§âÑß°%8ã‰Ïx6sãZ­ÃTUˆ§'Øh£[SZBá0•ªë€•ËÙ/µ‹zehÚøn]å6ƒ*ž@ŸÉëw%?¸'e‰ [..&ºS{¨‹¨$‹iÁœ%¾è޸øÁ’/¥ô…ï‘ô”\öˆç"$D,à•? Êa£sìëQ ÍE9ˆ™n̸fXÞlh³ Áá„Xõ8!¯yÈ"ñ/‰’‹DÆv Û˜s–æ×þˆòL º$÷0aã`â#¤·lAiúejÏîìT‚L3{¤’.“v«8V_]öƒE?šÚÒàKbÐRùâ¡q¦ºÜ•û|Û+cÇW^8þWNx†q«è9Ëë 8bBÂ’‚ýÝ_ä~ýÑ€œž"ð nº_¿D¸ˆ¼yò7Sc.Yvy˜1þÿõî¤KÓ endstream endobj 41 0 obj << /F4 25 0 R /F6 35 0 R /F5 28 0 R /F7 39 0 R >> endobj 32 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 41 0 R >> endobj 44 0 obj << /Filter[/FlateDecode] /Length 1198 >> stream xÚåšKoã6Çïý:Ê@=åûqì>’¦Àb·{*zP&Qk[†ìl±ýô%EŠ¢bªØC{°tRbqÆÄOÿypäBÅSÑ]n‹7›ïnX%\l T¬1&Ày±y÷kù¶9¬(.ÏÆ_N«ß6?ï7‘(0¥;#¼ZkÂË;oÓ6«µ½>¼lϵõŒpø•åpÛùÔ(íîïÓîgkŽé>7éâd›|Ø&@E±&ˆƒ’~%ØÍbDHïù¥ÚÙíRZ~ü¼"²4íçÚü•|f4ù€Õšií.¡¹\Â2åÙ v$°ûô\­s³OŸŒ€èÈäú8ü§OÖBU#¨Ì’a–µ¢â=ÔN’˜±«×äM½39-æËÐb`*b#SØÞïÌÞøRybI€Ê‘›Y¢RB"‘"u_ÿØ`>_ÑL²S¸ØhHv÷Ûêp0m²ZIW.ÓÕÿo¹z5j } ¡1Û½«mžl‹0ŠQª^™Ì»F1A#±˜è\ìVmµÛ™Ð´ÜšfoÎí—L–K|ÌÏ`¢°Œ˜hVhåžBp¬HϪ6#½) tìêú¢·ã#.Óedx,¤³ŸÍֆܹ½hϱkÛÔÈj9‰¬C¨3ë&¹«5ÛNWÌ{¬È¬ä”•ÜÉx±Ý¬)›«¶6§¶Á땪-‡J *¢ê“–íaϦ5Ö›jëhýyt§DÎÊ?Ì… µEFÕO;~ Em3TßñŠwûêÉøDþ¶Ù«¶>Q„b˜Ï91·ÂÂhzäÀ°é.êÇ›gÇOÙBØVÇçzÛæí¿¿œlÜu¹¡*­«­‰Ö‡bâã#0ÊÀT§÷çª=ׇ§ð7÷õ>“RËådTÿ4ñe(0¦A±À±Ÿ(üôRûÄàÓg‡55E 8Ù.µÉžæ*8P¸ö‡—n‚Ðisãð~9Úe[£ÌÔ&1_øÔÆV%Î̘òÁÎŽmÒØ× ÅÈhÑì¬ÌìúîÀ—À„¦£µ‹‹rÞ€cÐ:Œ#®‘¹F*01\²9‘ÀiäÇz~»&Wh’ÕË.4™)gPhÃâ±òv×üÞ¿JùàÏÝ/±µÝW‡‡Ñ©Û¿J=]»îFòËÌÀ8W™ÅÒÑ—gV®¬ÖTçP±'êJ8C¯O —Òê)IˆELäk0ùff–8›_,öÀ¬„ŒÀè°»½ëüTÙŒÛê0ïO¼Ì2Ûy|™ ¢@¼{ ð±)|ŸZóhZsØš\K¼Ì*倒G`| ØG/7“g$>æ_?E†!@td(¦ÞWÃ`1Ó×%nÓ×åhrìæ…=M9Y2vÍÉäÔ8ØÏ_2ÃOH×ÕõüÔW©±ûäûS¦”$îf\Jr!¨uÀøƒÙÇ2l|OçZdõê÷ œ»ßÍ$žæEpîB16Çhµ9v›ú˜{Wœ˜/$‚Ýtº+›ÇbßH7Çs>øsCøi)?c°H1åŠÙ{ÝÐßÀßz¾!ÒûSoFH] Îe]×ü7ÿP†û÷ endstream endobj 45 0 obj << /F4 25 0 R /F6 35 0 R /F5 28 0 R >> endobj 43 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 45 0 R >> endobj 48 0 obj << /Type/Encoding /Differences[0/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/exclam/quotedblright/numbersign/sterling/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/exclamdown/equal/questiondown/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/quotedblleft/bracketright/circumflex/dotaccent/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/endash/emdash/hungarumlaut/tilde/dieresis/suppress 160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 173/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/dieresis] >> endobj 51 0 obj << /Encoding 48 0 R /Type/Font /Subtype/Type1 /Name/F8 /FontDescriptor 50 0 R /BaseFont/EKSYQC+CMTI10 /FirstChar 33 /LastChar 196 /Widths[306.7 514.4 817.8 769.1 817.8 766.7 306.7 408.9 408.9 511.1 766.7 306.7 357.8 306.7 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 306.7 306.7 306.7 766.7 511.1 511.1 766.7 743.3 703.9 715.6 755 678.3 652.8 773.6 743.3 385.6 525 768.9 627.2 896.7 743.3 766.7 678.3 766.7 729.4 562.2 715.6 743.3 743.3 998.9 743.3 743.3 613.3 306.7 514.4 306.7 511.1 306.7 306.7 511.1 460 460 511.1 460 306.7 460 511.1 306.7 306.7 460 255.6 817.8 562.2 511.1 511.1 460 421.7 408.9 332.2 536.7 460 664.4 463.9 485.6 408.9 511.1 1022.2 511.1 511.1 511.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 627.2 817.8 766.7 692.2 664.4 743.3 715.6 766.7 715.6 766.7 0 0 715.6 613.3 562.2 587.8 881.7 894.4 306.7 332.2 511.1 511.1 511.1 511.1 511.1 831.3 460 536.7 715.6 715.6 511.1 882.8 985 766.7 255.6 511.1] >> endobj 52 0 obj << /Filter[/FlateDecode] /Length 1421 >> stream xÚí›ËrÛ6†÷} .©™ Æý²Œ]«I§IܘÓ.ê.h…¶ÙJ¢F¢ËÓ  Ë“x2Öe%Óȇ?þ’ &·IóókršŒX‚ P(Én˜ 4É~ù;=Ë.Ëé`HI `Ú?ßæ³é}>ü“ýv2’}g" \Çhz¿—¿Ë.M«ä> endobj 47 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 53 0 R >> endobj 56 0 obj << /Filter[/FlateDecode] /Length 1092 >> stream xÚí™ËnÛ8†÷óZRÀ˜áý²Œ›¦˜¢N‚Z@ƒY¨¶â•%W’fž¾¤(ÙT,»Aɨ]9–uNȇÿù)"¬‚æãM0.®y€Ô8ˆîL(‚,ˆ®þ¯¢yº'”R@!‡Èý9‹óH°³ð¯èíŵ:S‰ &G}{½¾‰æö®àuجM~…Ö£*Õ}Ï‚ùó±`a³M„‚’4)9Äá#BÀíÎŽ!)wiòØýƒihõ#`8áýŸ>˜Ö?.æXªùÙ$Töң؇™¹*Þ"£'½K]«ýâ¾¾¿›ù‰8‡ ÷2KRN³S Rݲc-»é6Í–ŽÓu¨(‹Æº0/¶å"éu3ª c½<ã\ÝÎfþQ¨iDZ‘C̸ÝX5öÎàc¦?–q™ö¶ÕK0:HÏ»1¶ØÌÙÎõ2œŠÀe¶*Ê´~XW=É»áó=‰0Þ\°™í"HIÀ݃sÙuWÅweNˆ¦’+«Þb0aÁO3JkѬÏrÏO˜ræ-?âøMã…Å÷iUÛ|ùM„­”z™F(¥Œ H€4Å£:v¶ú”fàr¹ 9¶¨ãÕ zz¡£WOFÐib }‡Ž8tWiŸ¥×íÖCôˆw+=­§+¨@Nž* æéz“%f¯*Þ”ñæ!]X§¨(¸ )fG›Mü)í*\/#ãç%×46èöù´©yLAÔ˜†8¯î‹ríNÎ>˜Sq’/’öwÈ2ŽÕâÇÚJ9‚ˆµ¤ˆ#ÕØ«m¾°Œªãó’ò뼤ÇÒA‡\uTmj*À,®ê¤tváZUQ.Í!©NÜÅûè3(u/å‹ÖWiCL†ï™ÇäÆnÆ,ý;YþS. AB{i_>³ƒß# ßYuáœú‡ÐHeQf>*Ù»—º§p>0»myo ÿbRòxR ›×ûI17©Wƒ9’ßkË%$½Ìÿ]ÉŸž7‘PÒý¼¹›÷¼>[µõ‚ÇhDåq£aŒvO—§¶òm£,’Y¼Ù €¼#¶Tj Ô¸‚]7¡]7¹J×I^=¯¯Ö»"Æo݇€IfcG¬í5¯1êcmû6‹{܈†ZôÿræI½¹¯{4>M?fi±²¶Ýšõ§îÝÍ´{wȃ†«É69<8aP8U÷Þ46V|‡í;HL¹9 ÌbûÓ“ûÿîºAˆt‰÷ãdD@LÚ—’»v\¿}> endobj 55 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 57 0 R >> endobj 60 0 obj << /Length 60 /Filter/FlateDecode /Name/Im1 /Type/XObject /Subtype/Form /BBox[0 0 2384 3370] /FormType 1 /Matrix[1 0 0 1 0 0] /Resources<< /ProcSet[/PDF/ImageC] /XObject 61 0 R >> >> stream xœ+T0Ð32²472T0AdNr.W¡‚¹…±ž©DÁÖ5Ð3C Ks2ý s—|®@  endstream endobj 61 0 obj << /R7 62 0 R >> endobj 62 0 obj << /Subtype/Image /ColorSpace/DeviceRGB /Width 180 /Height 180 /BitsPerComponent 8 /Interpolate true /Filter/DCTDecode /Length 4536 >> stream ÿØÿîAdobedÿÛC  $, !$4.763.22:ASF:=N>22HbINVX]^]8EfmeZlS[]YÿÛC**Y;2;YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYÿÀ´´"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ôš(¢€ (¢€ (ª­tÒ1KTÁŸ‘çØ~”d$àõTÞ«’-ã{ƒêƒåÿ¾•Éd!®œÎÞ¢ôüóV€`p(®ÛÙ:¼0ERçó8¥cfÿYupÿF ÿ Vè  ŸÙöçï+¿¨yú‚hþδí©õ^üE[¢€*}‚!÷túLßãGÙîý]ãŸiQX~˜«tPO6ê/õ°,£ûОï“þ&¤†êت?Î:£ ¬?ÍOQMS€%@Øè{¡ê(Z*§—soÌNn#þ䇿Fïøþu,ÎÂC/ÞFeúŠšŠ( Š( Š( Š( šî±¡w`ª£$šlÒ¬0¼¯¨ 8ëU-¥‚9æV‰p!a”ú°õöíü¢U# s;\,IåÉwÌÀ¤£è[ýïO§çéVUU*¨U¥=)j÷¢Š(¢Š(¢Š(¢Š(¢Š(¨g·IˆnREû²/ ?úÞÝ*j(¼S:¸†ãC÷Xtð>Õb™,K4eq×#¨>¢¢ŠVI3ŸŸø³ñöÿ ÅQ@Q@Uk·c²Þ"D’÷£©þƒÜŠj¥Ï¼ÿ¨‰°£ûì:Ÿ íïøSg]²Ÿ~jÜh±Æ¨€*¨À°¨®—*Ò¼¼Ú´Ã·Ö:—MÙ•#¡"ž&~µòtëT§ðI£v“''ºƒô©Â¹RŠï§›ba»¿©.œKáѺ0§VuF÷‘ÀÛL§÷,ßæ»égmé8}ĺ~f­”º”§îÛNãÝBÿ2*EÔgë,dÿ€:ŸæEzóL<÷võ!Áš4UÕ ÆdY¡¯Çæ2*ÜrÇ*ÕÔô*r+ºa?†I“f‡ÑE ‚Š( £ž%š2‘ÜÔЊ’Š‚ÚVpÑË4|8ýö5=T¼"·IÖ?¾ñ'˯ÿ®­ƒ@ EPU,ÿ}$·Gçlîñ9?•:ýÙmŠ!Ä’‘‘Øžÿ€Éü*tEŽ5DUÐP©®»Zu2Š”\^Ì ê*I×l§ÐóQ×ÀÕ¦éMÁô:“º¸S%•bMÏŸ@É'ÐQ,‹ eß8‡R}*8b%¼é€2œàuØ=õ¨K«ß.iÎevŠ>Ñ¡Áü[ü?3RÅ p®Ø‘T¸~µ%Eq:[D]ò{:±ôîå¢Z+5n®n†ëu"3Рÿ<~@z]º‚rY›Ø27éµW²}ZÍ®ö‘—/hd?ÅÆ~£¡üj¼Zˆn@I=qŒ}Aä}FG½hRjPc܆;©à`— xY¡ö#±ÿ>Õp\°ê¨UÔ«ÊF# ÕxɶDĘ˜â2‡ý“ý?*é§‹¯‚mâ1r§¨"ž²£taøÕ*+²žsˆÄ“%ÓF‡^”µž  ñ4ƒø³õ®êyÝ7ñůMÈ—Iô.uª¶º2ZŸùe‚žèz~X#ð§ “üJ? ­wu3ÛNI\¸…Ž;1ÀÿǶסK0ÃÕiFZàÑ¥EWq%I?y©BDHÒ©à~›ªÝTƒæ¿»oîìŒ~YÿÙ¿J·@Q@î—å éÅV«ò.ä"³.%ò-䔌ìRØõÅ|¦qC–ºšû_ŸõczoB%ýýã1û|ª=\ŽOà?Vj+hŒ6è„庱õ'’:–¼‰=t4î±ÆÎç £$ûVuª=üq8a á‡Qè}¿™öÅ?TfÛÚÆØ3?ÍîóŸÂ§šF€Ãoo³°ùCTc'8>£ó­"­7‡ÜÜÇjŠ_$±Úˆƒ,ÇÐ …¯¼¬›y`Œœy‚£ë‚qüª;Y}Fo>/*XcU » ç$°õg¯¯²‡R¬R0AïRÒŽÄ :mnk«ôª–Éígqë’‡è?§â;SôûˆÍ¼Q4«æ ¨Rß3HžO4ÍY"K¨¸’ê3Èÿ>õQZû6f…2XÖXÚ7V4¨ÁÑ]NU†A§V; ‚ÒFxŠÈs$gcŸR;þ#ñ©ê³~êýOðλOûËÈý3ù ³U-îET€UMRÜÝi—0¯ßhÎÏf×nŠq“Œ”—@,ØÜ‹Ë {•F²ÄfŠ£á³·K0sþ4þŽ?B(¯Ðc%(©.§!nÇ–ºqѧl~úƒVꥇ :ž«;çñ9¡n¨Š( ²5UÄ{?¿"Í…kÖv®¸Ž ¹2~§Ö¼ÌÒ´£Ì·‹¹pvaEWÇwkþÐÁù§|.©'–…ÀÉô+Óóý*Fß\ƒüp#Ìóõ©ï‰b¸ Ÿ)Áo÷OòÎ ÝüIy~‚+j±I ±j0.÷·H™ÆèûãÜuªÃ[šê…« @ZC…RI>ù~µ¶@ ‚2jÁÓd¹•­-猢DÇ’»NSríëót5tÚ”/%{ –þÕ•¼j ËçFL‡ï3dd“ôÍh\GæÛË÷”Ò«ÈÞv¥Jr°$˜õ# ?-ÇðiÝcBÎÁTu$àVR”›ßq•4y šU³¡6þ\J»Yú±íÉÜ `û’kB•UiËÔkbµçÊmßû³Ôþµf«_sIýéP~G?Ò¬Ô¿…QE QETÒ [QTà ¾÷Š2Rh£JÿSþ¾‡þŠŽŠûÌ'ð!è¿#–[³F×庼OúhóQþ­ÕAòj‡ÒXGæ§ÿ²«uÐ ¢Š(ªº”F]>uQ– ¹G©åV¨¥(©&˜ˆâDWS•a}©Õ KäO5·@‡r¸z~G#ð5|jn•GÐêNêæméú½•Ã,¡­É÷<¯ê+D€À‚‚ Aj.í,ío¼ýÖƒùÓ4û¿µÛüãdñü³GýÖïøzS~ô]Ž9›O_&àK,c>\ª…¸ì§9÷ïõ¢+i^ÚßäΤåsÄ’Ï¿éVn®>Í”Å$ òƹ?Z«gª}®àÃö+Èîš-«Ç¾j—32^ [·€@„,îÛÏV>¿È~‡â©·[4 ‚@\WfÚŸ—Ì] a$-â \ŒÚÚ¸`Û¾ô›@Æ?ÙäýMVÚ~Ò]5µ‹XE½¤0Œ~íñì*Z(®fîîÆVŸç¼¶Œ 2a‚?öj³U­?zòÜ’©þàéùœŸÆ¬ÕK·` (¢¤Š)“ʰA$®p‘©cô4%}ƒA¥„ìF%»}¸”*54U­ƒD´Y?Ö2yþó|Çõ4Wè¡ÉòHåz²kïÝù7óÉÆï÷Oú­Ó$E–6ÆUzІÉÙ Ù!̱-Ï©ÿƒøÖ‚,ÑEQECR…—ÉæÜÈÓ³Ñ?ïžÿŽjÍsvÐ` (¢¤Š( Š)‚©f ($ö  ú…ËZÛ<ÉÜ„†?ï¹è>ϰ5wI±v¾íò ´ý÷',߉&¨i1Bèj’ܨ+f¤ ë'Õ»{}kr¾Ã,Â}^—4¾)V9ç+°¢Š+Ô (¢Š†xL›]ÙPåúcKÂPA$^oñõ-C<%ÈxÎÉ—î·ô>¢€&¢ ‚áecÊ2ÈzýG¨÷©è¨æ]Ñ‘øÔ”TT‚©³v3¨§H»d"›_88IÅ¨QE QEQEQHÌK1@É'µ-f²ÿm]5¤y66.d$#þYÿ¡~]Î}mŒvnÐéý$º†—ÔGíþ×åê7í­á´·Ž xÖ8£Up}[–´ÕjËÑ~¬Êsè‰`p-WÑ…Q@Q@Q@ON 6C)ʲœ>¢ ó¦¶âáZXÇü¶z¼£ùÒ®Q@ ŽD•Æêèz9ú­%š3™"f†SÕãã?QÐþ4ß6ê$„N¿ßˆàÿß'úuÒò­øUz’KÛi©”Fý–OþF£s_!›ÑöxŽe´µ:)» ¢Š+Ê,(¢«ÜßZZ ÜÜÃûî4›v@X¢³—T7}‚Æîï=Gå§ýôøãéš•tÝJô¶Ý-¤G¬6™.}Œ‡úõ¯BŽYˆ«öl¼ÿ«æ—Z”0L-ãW¹º#"FçÇ©ì£ÜàRãÏ~Ë.²Êcê¶QœÆ?ß?Æ}º}kRÊÂ×OˆÇiD¤å±Õ©=I÷5f¾‡ –RÃûÏYwÿ#)M±B¨U0íKEéQEQEQEQEQEQE5ÑdR®¡”õdËilXÅnm˜½m#Eÿ ‘EšOF‡ã¨j8ôðOô¥þÀþ‚ýÿÿëQEGÕèÿ"ûîŲ`Dò^\däù—/ƒí€@ý*Õ®“§Ùm¬­âaüKÝùõ¢Š¨Â1Ò*Â.ÑE@QEQEQEQEÿÙ endstream endobj 63 0 obj << /Filter[/FlateDecode] /Length 873 >> stream xÚUKoä6 ¾÷W¨7ˆ½,Û×v›"¶@±s(Pôàx4c-lkÖM§¿¾”('Nd÷dR¤H~ü(špÆ99“øù•üt¸½ÓD”L r8Nr!9+@ùð,Ë…‘šÞ™ât™|–Ã÷¸¶‹ócö÷á7òË"UyŒW•d\“h%XU=ôäù~º…2Á“?k¢T ’\Š)NÚÜÞ‚|ðäX]AgõV, «t¬îg?\Öų\‹Š.~ð穹t™,é5œ•ÔÍhk’‹m3ih7º/«E“ŸÐfçÅ ÍâÆsòí, n ;¹ÍÕŸRÔ1éY^ô³m—pPÓÓä4 ¶Éc›bsXQÄÂçu²ƒÅ¸P¡Ò*ÆTZÓ©9º&67ª­ï{0µ™ü:&9„˜ÞÄô@—. =tn~;\“¸"3*ÖA¬ åK 8Eƒ¬»Ò±çK%œ;ÈS46¾vp òJ¶0øí+„·wå3§¢ª™) K¤ôðÉ è²£])VËä1ƒú¶öÍb»•~΋\­ç”ù´³$Žb8ü3Ÿš0×9âÌ¥˜åž¨'´²¬Ã…Ï¥k¹3ìè<U¾N0³yD‚BPÀ”¤É¶~œ—i Ó%+ŽpƒåådÆRNO·wµ™4šáÙÁ0~¶\^éŽæý‚ô¯ÎTõ>.ɤI[©ð@#mJIÖÁB‹ã‰¢_ݼ6½ûw›X8jâ¸G¡é¯‹kƒ”¢Kê{¬ŒäµdqumoÀÐ!ðe(DFý!^µg7F‡’>Âü£„Ï£Œå\wðÝÖÝÞä1Vz„%<Ô±µ—%Eþß/Y×Lëw&+fTò`8¢¿Û–ˆYðçTqɹ¶éoº‚{üÅØ¶~ÐǼw£ ·y•úÈ} åÛ‡ :w¶ïg44“Eá2Ù9-'{ u@¿ï´¿¿f•¢) –îÐÆlg\½…^iÉtõ­gPoè#u\Ò£›ÛužCµÔL ¤9:Þãptþò´Ð@]ºfAé`ø;~öøsxõJyÉxýÝäü¸YkV›`„Þ¬”$¬rVÕÑé#® ;÷¯‚ñ,8ÂÆúؤŸT0ˆœiɹ|•VKÃô–W¤?îÿ?rÀ endstream endobj 64 0 obj << /F4 25 0 R /F5 28 0 R /F7 39 0 R >> endobj 65 0 obj << /Im1 60 0 R >> endobj 59 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 64 0 R /XObject 65 0 R >> endobj 68 0 obj << /Filter[/FlateDecode] /Length 2099 >> stream xÚX[³£¸~ϯð[pÕ˜$!Ø·Ídg“T¶’ª9U›ªÝyЀŽMƒ#ásÆÿ>Ýê– ÆsyZR«ï_7›,ͲÍ~¿lþòôÃ;¹ÉuZä›§çM¶ÙåE–*øøëïI‘nwyYÈäí84ö4ù퇧l~~‚Õڼ†Ý¢H3¹9n¤ÈÓªºúÍûÈ;Oky×yZæó¼P‘ùÙôÛÐ*ù×ËVä‰u/}Å x§6y–ÖQÀBáíÈãé`·;Y”ÉxÚîŠ Î˜©¤éd|¦Ãúv¸Ò©RÀϾ}zßWì…H‹Šw|ž:±ûnðÄñµ›tßDëät0ÞÓxdIà”*“ÿÚfãi°ÝOwªùNÚÑŒƒïüä™QŸÜQ ´+ÊŽrííx´“ë0—ÌÛÛ£Ö •‡+e©ðJ!óÄ7f¬£Î3‘MÕtJÛ–˜˜¡¥å ¾4c߃hÁœø ò„çç3¨Ç…¶f2oðµHF¾é䯫fpÜ¿ Šd¤‚ *a„L<¸x{3Ù…—85®Þ1""^ˆo*íè…E΢'wn¦ ξötúe«db\7žÃÖ¬ÛÁ‰`?‡:·´`úý¸›KNÆwGOä[¶ç†.Z žÝÑìQ"]’å€D¦Â"„–wA£t†‘íy÷L!´&ñ"Ýaõ¦;|¼t²¨¿¬ Nþµü)â§® û©'ã¢ÞÓH–"i0ºR $'|‘ì%Ë.Š¥ì|o!bù;ŠY×À¤Å@”Y.À'X~• êüz‚i]ó \bl¼ 5-èS‰‚Qæ*ñ#tϧaÄåWðlðJóLKZY‰‘k¨Nå7刅⹌î“'îÁÖAÓßgN*¦A»(«E®R¡ç5™OA‹B¢cG;û¿sç09VŬNëoʨ ÞÑZÓ{bMe ãÅÐ “ÂN[ˆæ cÔÿªà_Ìó Bî<-^P³W<<Ò'ñï.3!>4S¬nEZVóH Æ´[ƒ½ÊYªK,˜uCÜÃz LpŽ]”0X¥š9·*R)Ø,ÎÊ÷¦“2-sÞsÍGÜD}‹GßlUžPÍ]ù¢DÓ¾4Âè …ˆb|,ÿ)ˆrúU0–߃˜TtÁú†"»zå&MF‡gk}㺄¼t°«SDàm\5ƒPêZIë»*ôޝ„Z´ã RÏã\?zt·Ô%1>Ë/ŽžÇÑJ¾¼FêVVªŽ•·ÏWi¿qÌ€êÔóû ÃÒÁ0¤.‘ŽÜèIl†[ªºU‘„Tª°¶OfØ÷x4€í컑úîä¯Ëö.تâ¸ÔHݹ5i…vþsyÒŒ ®ý ë‡Â¿l‹\Ñ„€+×Éhæ–Z¥ºübÈÁ‹žÍW«ì)nêÌׇŸX}‹U[VQÅ-¼¡ø®˜å˜q_®+"Ö•æòð¬úž³íƒ{KĈï3A{yx\Ü¡’ƒaÿSqJÛ…?%Ž Ö €dÜ•FUfÁÖZœ¡½þ>— (æe‡WæÐ’F©Ã¯ žpþ8Á ~5Ë=ÅñKžfЕUIX‹i ùº½È²b]C‹™!bô§ÿtìëN endstream endobj 69 0 obj << /F4 25 0 R /F5 28 0 R /F7 39 0 R /F8 51 0 R /F6 35 0 R >> endobj 67 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 69 0 R >> endobj 72 0 obj << /Type/Encoding /Differences[0/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/exclam/quotedblright/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/quotedblleft/bracketright/circumflex/dotaccent/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/endash/emdash/hungarumlaut/tilde/dieresis/suppress 160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 173/Omega/arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/dieresis] >> endobj 75 0 obj << /Encoding 72 0 R /Type/Font /Subtype/Type1 /Name/F9 /FontDescriptor 74 0 R /BaseFont/OZCPXF+CMCSC10 /FirstChar 33 /LastChar 196 /Widths[319.4 552.8 902.8 552.8 902.8 844.4 319.4 436.1 436.1 552.8 844.4 319.4 377.8 319.4 552.8 552.8 552.8 552.8 552.8 552.8 552.8 552.8 552.8 552.8 552.8 319.4 319.4 844.4 844.4 844.4 523.6 844.4 813.9 770.8 786.1 829.2 741.7 712.5 851.4 813.9 405.6 566.7 843 683.3 988.9 813.9 844.4 741.7 844.4 800 611.1 786.1 813.9 813.9 1105.5 813.9 813.9 669.4 319.4 552.8 319.4 552.8 319.4 319.4 613.3 580 591.1 624.4 557.8 535.6 641.1 613.3 302.2 424.4 635.6 513.3 746.7 613.3 635.6 557.8 635.6 602.2 457.8 591.1 613.3 613.3 835.6 613.3 613.3 502.2 552.8 1105.5 552.8 552.8 552.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 683.3 902.8 844.4 755.5 727.8 813.9 786.1 844.4 786.1 844.4 0 0 786.1 552.8 552.8 319.4 319.4 523.6 302.2 424.4 552.8 552.8 552.8 552.8 552.8 813.9 494.4 915.6 735.6 824.4 635.6 975 1091.7 844.4 319.4 552.8] >> endobj 76 0 obj << /Filter[/FlateDecode] /Length 2249 >> stream xÚ•YK“㸠¾çW¸RµUrU›#Š"%ó˜É£’ÊÖ´sÚÞƒÚRÛLdÉ‘äíîýõP¦,·g¶ú`ŠAøðd¯bÇ«ýÊýüeõÇí§/z%cQÈÕöe¯6*éjû矢?míq½QJEJhSóŸe»N²è\6럷ÿô%¿LV&¹nö_ÿðãöóW˜¤³(AÙÕçí u¿ºURaÌê¸J•yî¿›Õ£³ÈÌ,2¹È§4ð·ÞH™Ñ°DÅÑØ¡‘y}nêc ]2²­˜©I”ÈhguÓØÓP{£–g ¥´âgÖ›–8Ó¤O_²‹¸Î`O´çêFe2Ú—mµ˜ÄÂh?ýýîô±C#TTÕO‰ÎÚš¾Æ7†úh7Çr½Ñ:úO×S'.ŒÚvx³µšºÝþxµãáJï®vëÞ×FÆ™ ~ÚÖ½ bš¢r9¯ë-ÇŦ³B¨ŒwõíÞvïOëÅÞS€hÎR¶•ëè_/´@Ûõ4‹ä²è®;»¶y§UÁSõŸ„XÆI ç7ìzû »Ë"/ôŒ<õñPŸNl;y QˆTÓ¦ CÿèöeûÓB+Ð4 ‘*‘ND…£b8ý™âéìÀ…-6Z|~ƒXÀxÃz”2sjúz7®S÷ÍD'q̈þ œ0.ç71)ëo;H‰4§Š‹œ¨›œÝ'ÄRÔ v´]K]5¡L47@…ÈÝVi›®Ÿ°Š­¾NäN8 šÓy¿‘¡ßHwo÷¶ËxV¢Ðw˜°¸ÐR$òN@ë ¨ËžMa›ÒèP6/›W[¹)_l¸Cm÷wD¼ƒ—Ùtu9 À‘±J…È{û-ÐdŽPx»*à ÈELæc£êK´êµE'{¿$…d‰Ðµø–ãï$ð\5͹A‰Ê…N¾މ<ãŒ)I«×ÏŽGÀ”ëõ¤ÌD‘Üåt“Ì!°Ú¤Ð«dˆ´’]7óZrkA ®Éï`F"÷LD˜¦iôµK %¦FRŠÚr×éÔØšáS>SüÇ+ÀÍbŽŒózHÁL€i¨÷|DZ¤R)¤}t¢nYDRV0’ˆÃOMý†›LL´=ÔïÔÏ0Èê.Þ»žø{¦g³.ÛïžFÛ¯GÓ56ë–¥ég‡#‡®¯¼ŽêæzuoµÏ„qèlwp&ãƒ39/¿¤£EžÞå‡Ô§Æ¡ÆšiíËÊžjÓ’ùrɆòh~ʨdË~$I¦ÎÙä ½Ô>‘Ã{.'¸C4;¢]9:ÔéâV(k)²Kb‰âq ‰T«0Ž•öf€ÒÀSØ-ûkG¦— î] ùTsιhs›2“¶,šåàäiœë‚ëm@6&»Ãóˆõ6QÄ)ŒÁÁ]A¹È˜ A~'(ÃXónÛ=u3ªáà¬]3ª™!ºÐng8Â)¯ªºÂHƒ°ßX»=–Ëþ•ÌxÛL†Ò7™¶ˆËÌäP‘O¨@.Z¢Â$Bš›ê;êA¤Á­ç±á‚v"2Z?$Ä)Óñ_¥|ú5ú…P¶š0‰Jy±/Û¡™­an­!Q¤¿±ú]0ð#¢($àÝØõóoªá &`Å’†S‡ô=ý/Zî¾´Ëb0úôt²,84vWÿžd_zWUC/ËM”*‡ 6Ñ–db ×óèÆNËB€Ò|€”Å÷§LUL»vA¨ 8Þt–­Ý9¤ÙTÁVô9Ø£mÊÞ•æiFu.vôŠ Àåäo-‹¸àÀÖ’'^S4–BÝyp.é¸á€|RùYp¹aK|]5-0ŒuYMgaÇ$l[W×Ãň6 @§™Šh@ýÇ]‹LÚù¶ÁDZÓÖÌ-®í‰Ýó^:'Ö /ÎØ0¨(‡òÈ­’9ºô«L!%B›?iU`yà_ƒÔG¯Aö×záåÙ+Û^êÖüeí껲i°ü¾m*±Ó„JüiV1W@5.àpĶ»¾.ÝöspZå$â r^9Ø”IûÀÛYd#¯j€M±=|Ã9¬œÔu¶¢«]cO'ªà«:ûW#~Kê»s[m:XÃDÝ÷.5à 1…{=*¡.Ÿ´LOC ¿æ}ïŽ »¨ eÂcr+Ð33ç¢pxìßRY$¢Ô¿*)à†]¬r&ÌxÎØ1Á*%–UÅìÕ ¥«'þâQ’@,$uM@ÔéìHî¬Ï*`¦·fÅ’¤!&þ©KªÊ¨D©,š›¡=ÅÜUhÿô h— võDG»²mëþ&¸52Šÿ»­ê*þ¶rnìÃE/lp·Œöu,†ŽQ< ËèØ #u¹Ë™ê{¸•Í^]´äòßPû­œû’†—¯·ŒkT¶¡pý²Î1AùÚ9zvë€@k6¯kW@7Žj4èÆ_—ºÝS5°`ú:9;+®5à·Üg{çxýïlÇzš¢ZFkO†&<¯@ "ð¸. €d<|Lt,ÛÍîç\¾§[WÚ“c2ïèÜAtýyÇogƒØø§±Œ]ê”d|{uK–§’z8P/bï o™Xäæ»½…§›å^?íÁàó •[y1=Ñߘnß)ž×oö¹ñ9=gØs$³·4g Ï±G©º3'‘ØÖ§”q$[@â|ºz. =™F/>Ãùt§'üž Qc¢÷ü+Ä™ô‹Ä’H¸7¦06a ‰•ÀI'Ëò+yŒþÉøwÿW—v endstream endobj 77 0 obj << /F5 28 0 R /F8 51 0 R /F6 35 0 R /F9 75 0 R /F7 39 0 R /F4 25 0 R >> endobj 71 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 77 0 R >> endobj 80 0 obj << /Length 5734 /Filter/FlateDecode /Name/Im2 /Type/XObject /Subtype/Form /BBox[0 0 2384 3370] /FormType 1 /Matrix[1 0 0 1 -181 -269] /Resources<< /ProcSet[/PDF] /ColorSpace 81 0 R /ExtGState 82 0 R /Pattern 83 0 R /Shading 84 0 R >> >> stream xœí]MŽ,¹ÞÇ)êáпt¯f1íÅ ×c Ӏ݋¹þð#)EˆŠ,×Î@#Ñ‹jò)$ŠâŸdÆ?¿ŽÝûV¼û:ðßx¼¶¿üV¾~ÿc‹{HÁù¯ÿÛâ×mîëïþúí¯›«GÛcûr¹Æ½¥¯×‰‰GØKür©º=Ñ_WÒ^Žc'üØÜáÚîÂÀ”ævWò˜aÀºÆc˜–óîh.Á»wçÆ¦5”Š1¢SÙg0ûx,;{nÿ»ýmûçæ²+{©´†Ï{äg—SvOûÈ.íÕ®ûáÓ WL¥Œ)ž[«‰¨HÓ·q´1i#ª\(cÑVÍàÆ ­%¿×:­¢D·Gž4e^×Áíô/-Õ=O°§4k"¾¦L°£GÁÈ–i÷¡â‰cǤ"´9šB0‘¶G˜šÜžéïáÃN“¸RßáÜ(&6Z²ËžÁÑÐöÌ2CËgcÆ¡6æ-0 Ò–Ïjå5 fb|d¦ÁFÄŠ­ú´g𣕃$,@:¨‡Ø·“™Ë‘1Ž%—0~÷í‹ -gbÄѵöÀs@â…Ëó¼ðNÊ+—U?"s`¿c×ù`Í!<¶ÿùúÙ7RÇ?þò[ûúãñf4û£ÙÍþµý7(¿kò¯ßi†tì|pŠ×Ž} ÒŸ–ï1xæiæP‰já:))VaE'.:ø¬«4ˆÜ,>÷"6‹¡.+Æ‚J‚•œÀùÌš/Æ#r¤ƒl.‚Г‰m¼“”_ƒïÁÌ 17𘺷Jæv#ˆ>’ _pô´zkBÖÏAôÐÜÏÛÌô3Ìrvß ¤’Îh?©Õ$¯f›O+¤·³€#d[š»LKœI¡]Fœ¥õòLǬcs2˜ÚÒCóøšä4`ÛIEï,‰õ·ÃxÑ^ýØVšÙ*ÐM„½=ìt;ǾÆEP\¡Gö,ô‰þ…,‚;É Í™Za3£àÅ_(†„ àŽvúScFNv©ñ<íH°ô€+•W¨.à_èèè÷ƒNªä*¦LZ }• ²äÉLìd+ä=©F‘8 O6‡_HEð×ÃH›–Krè%gÆSÀ¨Al›³H_l¤ý ¶:WösÊš#’Q,Óšy®PÈ{ñb°ÿÃ3 ÌdV¶Ñ}„c5ÖÇ ï™3Ž/Z)BtqàT q*Š"¹Ñäaøo‚ŠòMlYÂ)T°2³ IˆÊ&_ìõ Å`qf¾ÎPò^ãe‰zÀžá‰Ný…¿DÒÆßu_7FO9òy 09BôÏYÈg†Ë"´!˜Ó Q¶4%‰CÄ06Òás«Ó™ÑgèÌêk n* ÛDb —Ó˜Ïk=Aøq¼„îÌèšzS$² EÝD X…gOÄ֨Ѱ$uH‡HvÎú~Hˆ–(¨KUž¨r•/Ê]59Øq¡áC– LÔ)”n²³¬“°F9 £]…k“ ŽA“Ó,$E‚?ÀÕËä‚)ƒb²—è™GÔ¢î.²AIÍá|ñ0Ñ8à•ÐCúÄ óÆZÔ9±˜4GÌ0â7ðÈáe f&à$pT¿Í¡Esîs´,Qq ðB(o• tcø€çå'—¼5Ç!%0%ÌÇv'Ipàð(ìòy¸ïSê©ÚÒN#KQ©i"Ëáp;«K…M‚-jM„·ŠÕòß{ÕÉX%ÓœD³GêAiR•ãxþˆâHPÙí\D» !¸;¢VÒ ŽiÈØlÒ<Å¥P¦Löÿž”Q"-—½ ¹¼Ñ‚`¬§‹žIýx 9½DR~Èæì2¦ñ“žt''¹î¦Êu°ð‘ƒ „aSž¶&‰*€#»‡,Âêé¬#æ,]§²v´±Ë¤rSÄ'Ãâ-þÐ'à³ç­©Bîr®³R#~$§Ç¢MKñ qáöSåÒ@dñ-—¥æŽqÌKBîãÞXÔÒÉý/¤]-ËMÆE¤ÉEäà-#ˆ?‚`Ën¦ËšÜÞ±…™…;âƒÌ}º³aqRfB³rSÄ$ËÂÙø"®!8Øã3©ðS¥7‹BãA˜Â#ß´<™ô¬÷{‘^#yOøoÏ®$E¾¶¿€!‡À?óE%¦CÌ |„)ò"ÈŽWéÿž9&Jˆ¹9 F"~OÆ}'ß)Hqàñ]„j»ÂY…`` }N@òÌ—ò¾I«ø†NC•iPˆ»w¹lA`<00röÜìæT‡Óg‰N¯®BËŽó$R[/„ú¦.I7Òás«%ûLRÌsÒÉ"ßIîÙÓɲ¸{"®¹Ñ“Ÿ¡'ßÝéÈ%”+Òà =äk8ÅLJÌOsT8BD–AL9nÍlY4Òlô×óá)Ÿ›ò” és ‚ëk†…>©` "` Å!8€¡ò. (Œ7igzÜ×RE³}Cb‡âñ†¸ÚÉÛ¢AͳÁÑe ¥a|c<Ä-kdê '<Ò ¡ËÉ7)‰ÐåD#à1‹FÈc•CŸD$ÒAؽŠP%ˆ| B.È!ù¾äR:¦ˆé‘‹Il)’“ ;Ò„¹I˜>©ùSTpå|à,:vr„ |óˆžíM¡#;Xz%Çr™ègÚŸïgÞW`¡=)&˜.8f 0Yâ·1 ®‹ù\p¾RÑt:û}f£eëj«%òððÿ/µçE"ž…FD62I2‡êr ˆ>s–Ø„í Ë1X×–‹Ä*\B®Ok‚lä‰dý0HÛ°= :qÞx#ä4Üu'Ì$%µ`}DdÛ—Ý3»ÿ¤Î$pP‚dÓh j4àF¼ÀÑ'od€ Šëà¤, ÙNzNr2Sf]<ñ-%uàI‚òÆö„,OhbŒ‰4Ô$œ†1ÍþÐ($²ÑÍ®êw‹Ö§qD ‹`(}Ól¯À×,écDíyóC§“Os ž6Ë9øO á“Bø¤>)„O á“Bø¤>)„O á“Bø¤>)„O á“Bø¤>)“BXk}L Úk[‹ÔlÛ\æã6§`ÜLÁ¦Þ&!z–Â$1n®Ú×›¸½¦¯y{Õ·©€›dI'ØtƒIHpŠbª´ƒ6µx¶V連oPöz±Ù}Ü•) ´%ƒkQ¡1±¯m±ÁÖD¿5âÃÌ7°: ëJ¬«ùÎaiÑ-ܳ…}oJÿ.µ¶tp..\Yó\Üæë†®Õ³šú?$~æA[?ø¾qøfëá'÷˜øÁÆ&y,D£(‰&§ƒBGÃò?0§3Êjwª ²`ØR|‹û@!£áÕÁa¿%³"³ l|M-E UH|µ§˜¯É5Vá«ÓT êî I:C-|=kTÒeÍe(í)íT6xýÉÛ»þÄ7ÞžÇCM—Y"ùäŠú*ˆ)ò•ŒHfýJh¤p‘aÝÈ€/QŠ`:3ú YºÄÉMÐ…Ýœå!áþô€x¹(ìûFár#Ûló—#~H¥Úȼ¶5Ò±‘ÐOâ)dâÀМìój‘¿ƒ9`b'Îëèã…îÊnŠfæ4lúˆH®ýÈç ¾ò_1JCŸa8obÚÖ 8ÚðÓF§ïÂ×ßšð÷»¸‘÷¾Ñ—ðuÌb£S¾º^ æ9½¤ ½òKŠô|¤çgÒ3âÓ㇦Ã}mËá[Ùø†ñú[a}Èêe¬ZüÔ;Ovú:ã Woiý©õ·Ö\/ÕGt/ÕgX]ˆõ1Ö½õRÃY?·8Bã)­'ý‰?¶Ê´(Û[u kzUùÅ(›alʯíòf³GDžBOWNþSÈóßËë9±ç8 g‹î¯ç2KÉÁxW_íêQ59탤;‘Is’‚§—Ýxä·>žîá€Ì‹××¼Øðû^F\ÉnŒÉ”{_…Õa­#NȹÓùcK€k–4š0Nx$΀ñ§ä8ˆˆWÉI'sNÑéìë¢ÓÙÛEçÌæõÛèw¿Þeä½¼t³ C2`¬‚ÛV¹Òácš(Eê’_‚ëN|¦*Óõ¨Ï=sí\ã`p=)ùà—tHnf>f¹_fåÇ[Íxs&ÚW`^·¿Ìsy‰ÿ:_âWº6¹iVÍä²óáTÉÖªvœ“výa¶úˈÀúLRypOÇûÎ{l]·|¾çgA6…¶P`-%˜ÉxÞîÖ$, 37”0&=e½Ñù(=pPSÞü'« ':|MV+FÛ‡¤W²hd·»¥%7ýƒôõ’·)òÛ$ú”f·iø9Q¿rCåç’âÖR›·Iò5>%ÚM"þÉ|?ä‹Wp•[Ë|1Aã89 ¸È>Ä"ÕTWàxËNùèÄÑׂ™ÃàpHüQËZ~Ôò?ª–?¼_{m6{n7Qš‰âÖ8ÏD‚6R\C.„q®Çòü¶Szxå%S¦8%bRe–C£ìÖ,æÂkofæ<6—¼¶›ÈÅF6Kìc££%zz_˜‰ÐÖÎFy6 üI,i…5&oÍÍ0HÖ`ÍJ¼òó¹YñmwúaÕç‚ ùœUô;«7Âf|Ûàü&|·þr¸½"˜KÄ|ɘBÞÇÂÉcût wýÖob5¿^$‹ëøÖæÿ¬a2 Cúu½z¤z…G)âÀ4­vÔ ÈhBÆÆ$ÏZ6 ÙÏZ[…t~Òâ,¯E˜½ ÒkyÐwE—<†1e¼ IÊ-©/‘Eª¾Ú=© Ko­:›çW’c>ëK;FyÑgPVõ%„—z‚RãÚ¸ŒnЈ¢­ºd˜Y£¼è#:«ú óyiRz®ö|mk9èR.ú¶ t”œš’ÔµhÕTµÚ¢×Ÿ”Î&‘}ÅТU x3¿ð…LÅÇK¥1^͆+Gæ3ˆ—nQØÙïðåŒÓI¨ñBß¼ƒiO£ø÷'Â¶ÌØ–!¯…ʶ”y)u~[ =Ê¥M9õRom ²mÁö7%ÂÌÝëVGÑðRhlêMòt[(ZÙÿ‘îtÿ)¤A·=ö×¶ †œof¸?ëD]ð⦭ïè{(`"ãšVçeÛêþ¬ƒ´ôÆÅÎ>غèoœ¸îÓ†7ÂIØ@ã'áʤgV ß«iWäIËW#`Í„5#ÖÐüº”=¡¿BÊŽ¹GãuÁDé¼@Ù4WŽáœp½hÒ 0âãÊ¿ŸuŽ J>A¬æ S¤-t„Ü\0%K')~÷zH>q™žhRÄîµ*5ÿ†}–R3Tp¹›ÀÙ†`÷º- ®Ÿ7þXXnäâú*“”Òëë²bô.P“ÜA³h= Ϙ²(w«ùIádïHí4ÉEáæ‹&=¼‡ñÃ%±¨z'/e£äÜ#ÌgXJø~l —l=eÑúS´ž ¹RŒ”úØýTÆíÚiÐärÎ…„4Šå!R•„5Yr¼l Êïwæ›ÿ<ç€R Ý9‚›{’\q¹ž¬ÃtdN7“¹|ž`–)êÕ• ?¤—„%MG@θ.{¶8Ü-QDj´Aƒ0Á FÞBã™Ä˜"¥j@Ô(“–¯Ë¿Ÿkø2QQ¥ß3H…ÿ,w7ˆ_·i´ã Z3X­è¯ü`MõúÏKcÂi»Žèpÿ 'îšÓiO2€eÃg)fóA”h~¡ I´ ¿ô%ýAéFfFÞ8û"Û×çAéœÊ… ‚¥fõÄ0¥ƒ4ÎàöWù I =?&7¢HâÅ“ù÷pOp44v 9Xì1^DÆ¥©´ÅØhü¾Ü=ŠUE¶ÏÆÌ¨eWß5oòîá÷˜D®\ç"øáÞ2‘Q‚hc'´èéötøÒ¦Ú1‹>AgU_B˜ùØN"’Ó¡1ö&™ÞhË0³FYÑGtVõ æóÒ”þM‡ïÔE îØ6SÛ†ú¾Qµ·²ÚV×µÖ¶ËÚvÚŸ4åF¡O1¼‘Ú]Z¼ÀùSL—:f@ÈÄä¢F½Ãñ:¢¨åè3tørðݶ(}†Nå¼ig£¹ø' ȶÙt9¯mÐK£´m¤~Ûj=š±M¯öÒÌmº½M/øÒ+>³ûºMˆ¹ÝÜv£ÏÒ<çùiÛœçÿˆüGäÿÄ"ÏÉsð¯m +:ßÊð“ÖÛZo¼úëÅ£[ÿ6&èAƒ)Œ[ýœõƒ«§4®tñ´‹/¶ÞÚ:ó·Þ~Ä&^X#Š%æ˜C’ŸÄ5Vͬ¾WÔ®ÊVÕWc`Í…5'ÖàÐåó ÿQÄØÀ7½Ó:ý$¦ÀŽ3é”=««äÕ‹|äD>b‚¬®t;›1xî'³¯cþvýÃÛ…û‡PhH”!^Šÿ‘ªr…Á1ãcîœá±zèÏû†ËÝØã~cüÑ¡«‘Qqœ*“u2ùôùBš¦Å®T<ôÀŽÌ_‰Èf¼øã?>9‡^ËÇ(¸yÄ~¨äqÇHó9`™Áw<ÿ@£Õ…!²Z2Ä3ü?¸‡d endstream endobj 81 0 obj << /R8 85 0 R >> endobj 82 0 obj << /R7 86 0 R >> endobj 83 0 obj << /R44 87 0 R /R37 88 0 R /R30 89 0 R /R23 90 0 R /R16 91 0 R /R9 92 0 R >> endobj 84 0 obj << /R45 93 0 R /R38 94 0 R /R31 95 0 R /R24 96 0 R /R17 97 0 R /R10 98 0 R >> endobj 86 0 obj << /Type/ExtGState /SA true >> endobj 85 0 obj [/Pattern] endobj 92 0 obj << /PatternType 2 /Shading 98 0 R /Matrix[81.8879 0 0 -81.8879 298.809 387.549] >> endobj 98 0 obj << /ShadingType 3 /ColorSpace/DeviceCMYK /Coords[0 0 0 0 0 1] /Function 99 0 R /Extend[true true] >> endobj 99 0 obj [100 0 R 101 0 R 102 0 R 103 0 R] endobj 100 0 obj << /FunctionType 0 /Domain[0 1] /Range[0 1] /BitsPerSample 8 /Size[2] /Length 3 >> stream endstream endobj 101 0 obj << /FunctionType 0 /Domain[0 1] /Range[0 1] /BitsPerSample 8 /Size[2] /Length 3 >> stream endstream endobj 102 0 obj << /FunctionType 0 /Domain[0 1] /Range[0 1] /BitsPerSample 8 /Size[2] /Length 3 >> stream endstream endobj 103 0 obj << /FunctionType 0 /Domain[0 1] /Range[0 1] /BitsPerSample 8 /Size[2] /Length 3 >> stream endstream endobj 91 0 obj << /PatternType 2 /Shading 97 0 R /Matrix[81.888 0 0 -81.888 298.815 387.555] >> endobj 97 0 obj << /ShadingType 3 /ColorSpace/DeviceCMYK /Coords[0 0 0 0 0 1] /Function 104 0 R /Extend[true true] >> endobj 104 0 obj [105 0 R 106 0 R 107 0 R 108 0 R] endobj 105 0 obj << /FunctionType 0 /Domain[0 1] /Range[0 1] /BitsPerSample 8 /Size[2] /Length 3 >> stream endstream endobj 106 0 obj << /FunctionType 0 /Domain[0 1] /Range[0 1] /BitsPerSample 8 /Size[2] /Length 3 >> stream endstream endobj 107 0 obj << /FunctionType 0 /Domain[0 1] /Range[0 1] /BitsPerSample 8 /Size[2] /Length 3 >> stream endstream endobj 108 0 obj << /FunctionType 0 /Domain[0 1] /Range[0 1] /BitsPerSample 8 /Size[2] /Length 3 >> stream endstream endobj 90 0 obj << /PatternType 2 /Shading 96 0 R /Matrix[81.888 0 0 -81.888 298.815 387.555] >> endobj 96 0 obj << /ShadingType 3 /ColorSpace/DeviceCMYK /Coords[0 0 0 0 0 1] /Function 109 0 R /Extend[true true] >> endobj 109 0 obj [110 0 R 111 0 R 112 0 R 113 0 R] endobj 110 0 obj << /FunctionType 0 /Domain[0 1] /Range[0 1] /BitsPerSample 8 /Size[2] /Length 3 >> stream endstream endobj 111 0 obj << /FunctionType 0 /Domain[0 1] /Range[0 1] /BitsPerSample 8 /Size[2] /Length 3 >> stream endstream endobj 112 0 obj << /FunctionType 0 /Domain[0 1] /Range[0 1] /BitsPerSample 8 /Size[2] /Length 3 >> stream endstream endobj 113 0 obj << /FunctionType 0 /Domain[0 1] /Range[0 1] /BitsPerSample 8 /Size[2] /Length 3 >> stream endstream endobj 89 0 obj << /PatternType 2 /Shading 95 0 R /Matrix[81.888 0 0 -81.888 298.815 387.555] >> endobj 95 0 obj << /ShadingType 3 /ColorSpace/DeviceCMYK /Coords[0 0 0 0 0 1] /Function 114 0 R /Extend[true true] >> endobj 114 0 obj [115 0 R 116 0 R 117 0 R 118 0 R] endobj 115 0 obj << /FunctionType 0 /Domain[0 1] /Range[0 1] /BitsPerSample 8 /Size[2] /Length 3 >> stream endstream endobj 116 0 obj << /FunctionType 0 /Domain[0 1] /Range[0 1] /BitsPerSample 8 /Size[2] /Length 3 >> stream endstream endobj 117 0 obj << /FunctionType 0 /Domain[0 1] /Range[0 1] /BitsPerSample 8 /Size[2] /Length 3 >> stream endstream endobj 118 0 obj << /FunctionType 0 /Domain[0 1] /Range[0 1] /BitsPerSample 8 /Size[2] /Length 3 >> stream endstream endobj 88 0 obj << /PatternType 2 /Shading 94 0 R /Matrix[81.888 0 0 -81.888 298.815 387.555] >> endobj 94 0 obj << /ShadingType 3 /ColorSpace/DeviceCMYK /Coords[0 0 0 0 0 1] /Function 119 0 R /Extend[true true] >> endobj 119 0 obj [120 0 R 121 0 R 122 0 R 123 0 R] endobj 120 0 obj << /FunctionType 0 /Domain[0 1] /Range[0 1] /BitsPerSample 8 /Size[2] /Length 3 >> stream endstream endobj 121 0 obj << /FunctionType 0 /Domain[0 1] /Range[0 1] /BitsPerSample 8 /Size[2] /Length 3 >> stream endstream endobj 122 0 obj << /FunctionType 0 /Domain[0 1] /Range[0 1] /BitsPerSample 8 /Size[2] /Length 3 >> stream endstream endobj 123 0 obj << /FunctionType 0 /Domain[0 1] /Range[0 1] /BitsPerSample 8 /Size[2] /Length 3 >> stream endstream endobj 87 0 obj << /PatternType 2 /Shading 93 0 R /Matrix[81.888 0 0 -81.888 298.815 387.555] >> endobj 93 0 obj << /ShadingType 3 /ColorSpace/DeviceCMYK /Coords[0 0 0 0 0 1] /Function 124 0 R /Extend[true true] >> endobj 124 0 obj [125 0 R 126 0 R 127 0 R 128 0 R] endobj 125 0 obj << /FunctionType 0 /Domain[0 1] /Range[0 1] /BitsPerSample 8 /Size[2] /Length 3 >> stream endstream endobj 126 0 obj << /FunctionType 0 /Domain[0 1] /Range[0 1] /BitsPerSample 8 /Size[2] /Length 3 >> stream endstream endobj 127 0 obj << /FunctionType 0 /Domain[0 1] /Range[0 1] /BitsPerSample 8 /Size[2] /Length 3 >> stream endstream endobj 128 0 obj << /FunctionType 0 /Domain[0 1] /Range[0 1] /BitsPerSample 8 /Size[2] /Length 3 >> stream endstream endobj 129 0 obj << /Type/Encoding /Differences[0/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/alpha/beta/gamma/delta/epsilon1/zeta/eta/theta/iota/kappa/lambda/mu/nu/xi/pi/rho/sigma/tau/upsilon/phi/chi/psi/omega/epsilon/theta1/pi1/rho1/sigma1/phi1/arrowlefttophalf/arrowleftbothalf/arrowrighttophalf/arrowrightbothalf/arrowhookleft/arrowhookright/triangleright/triangleleft/zerooldstyle/oneoldstyle/twooldstyle/threeoldstyle/fouroldstyle/fiveoldstyle/sixoldstyle/sevenoldstyle/eightoldstyle/nineoldstyle/period/comma/less/slash/greater/star/partialdiff/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/flat/natural/sharp/slurbelow/slurabove/lscript/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/dotlessi/dotlessj/weierstrass/vector/tie/psi 160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 173/Omega/alpha/beta/gamma/delta/epsilon1/zeta/eta/theta/iota/kappa/lambda/mu/nu/xi/pi/rho/sigma/tau/upsilon/phi/chi/psi/tie] >> endobj 132 0 obj << /Encoding 129 0 R /Type/Font /Subtype/Type1 /Name/F10 /FontDescriptor 131 0 R /BaseFont/HQBVAK+CMMI10 /FirstChar 33 /LastChar 196 /Widths[622.5 466.3 591.4 828.1 517 362.8 654.2 1000 1000 1000 1000 277.8 277.8 500 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 777.8 500 777.8 500 530.9 750 758.5 714.7 827.9 738.2 643.1 786.2 831.3 439.6 554.5 849.3 680.6 970.1 803.5 762.8 642 790.6 759.3 613.2 584.4 682.8 583.3 944.4 828.5 580.6 682.6 388.9 388.9 388.9 1000 1000 416.7 528.6 429.2 432.8 520.5 465.6 489.6 477 576.2 344.5 411.8 520.6 298.4 878 600.2 484.7 503.1 446.4 451.2 468.7 361.1 572.5 484.7 715.9 571.5 490.3 465 322.5 384 636.5 500 277.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 615.3 833.3 762.8 694.4 742.4 831.3 779.9 583.3 666.7 612.2 0 0 772.4 639.7 565.6 517.7 444.4 405.9 437.5 496.5 469.4 353.9 576.2 583.3 602.5 494 437.5 570 517 571.4 437.2 540.3 595.8 625.7 651.4 277.8] >> endobj 135 0 obj << /Encoding 129 0 R /Type/Font /Subtype/Type1 /Name/F11 /FontDescriptor 134 0 R /BaseFont/RNOGCD+CMMI8 /FirstChar 33 /LastChar 196 /Widths[660.7 490.6 632.1 882.1 544.1 388.9 692.4 1062.5 1062.5 1062.5 1062.5 295.1 295.1 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 295.1 295.1 826.4 531.3 826.4 531.3 559.7 795.8 801.4 757.3 871.7 778.7 672.4 827.9 872.8 460.7 580.4 896 722.6 1020.4 843.3 806.2 673.6 835.7 800.2 646.2 618.6 718.8 618.8 1002.4 873.9 615.8 720 413.2 413.2 413.2 1062.5 1062.5 434 564.4 454.5 460.2 546.7 492.9 510.4 505.6 612.3 361.7 429.7 553.2 317.1 939.8 644.7 513.5 534.8 474.4 479.5 491.3 383.7 615.2 517.4 762.5 598.1 525.2 494.2 349.5 400.2 673.4 531.3 295.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 642.9 885.4 806.2 736.8 783.4 872.8 823.4 619.8 708.3 654.8 0 0 816.7 682.4 596.2 547.3 470.1 429.5 467 533.2 495.7 376.2 612.3 619.8 639.2 522.3 467 610.1 544.1 607.2 471.5 576.4 631.6 659.7 694.5 295.1] >> endobj 136 0 obj << /Type/Encoding /Differences[0/minus/periodcentered/multiply/asteriskmath/divide/diamondmath/plusminus/minusplus/circleplus/circleminus/circlemultiply/circledivide/circledot/circlecopyrt/openbullet/bullet/equivasymptotic/equivalence/reflexsubset/reflexsuperset/lessequal/greaterequal/precedesequal/followsequal/similar/approxequal/propersubset/propersuperset/lessmuch/greatermuch/precedes/follows/arrowleft/arrowright/arrowup/arrowdown/arrowboth/arrownortheast/arrowsoutheast/similarequal/arrowdblleft/arrowdblright/arrowdblup/arrowdbldown/arrowdblboth/arrownorthwest/arrowsouthwest/proportional/prime/infinity/element/owner/triangle/triangleinv/negationslash/mapsto/universal/existential/logicalnot/emptyset/Rfractur/Ifractur/latticetop/perpendicular/aleph/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/union/intersection/unionmulti/logicaland/logicalor/turnstileleft/turnstileright/floorleft/floorright/ceilingleft/ceilingright/braceleft/braceright/angbracketleft/angbracketright/bar/bardbl/arrowbothv/arrowdblbothv/backslash/wreathproduct/radical/coproduct/nabla/integral/unionsq/intersectionsq/subsetsqequal/supersetsqequal/section/dagger/daggerdbl/paragraph/club/diamond/heart/spade/arrowleft 161/minus/periodcentered/multiply/asteriskmath/divide/diamondmath/plusminus/minusplus/circleplus/circleminus 173/circlemultiply/circledivide/circledot/circlecopyrt/openbullet/bullet/equivasymptotic/equivalence/reflexsubset/reflexsuperset/lessequal/greaterequal/precedesequal/followsequal/similar/approxequal/propersubset/propersuperset/lessmuch/greatermuch/precedes/follows/arrowleft/spade] >> endobj 139 0 obj << /Encoding 136 0 R /Type/Font /Subtype/Type1 /Name/F12 /FontDescriptor 138 0 R /BaseFont/CJAHFW+CMSY10 /FirstChar 33 /LastChar 196 /Widths[1000 500 500 1000 1000 1000 777.8 1000 1000 611.1 611.1 1000 1000 1000 777.8 275 1000 666.7 666.7 888.9 888.9 0 0 555.6 555.6 666.7 500 722.2 722.2 777.8 777.8 611.1 798.5 656.8 526.5 771.4 527.8 718.7 594.9 844.5 544.5 677.8 762 689.7 1200.9 820.5 796.1 695.6 816.7 847.5 605.6 544.6 625.8 612.8 987.8 713.3 668.3 724.7 666.7 666.7 666.7 666.7 666.7 611.1 611.1 444.4 444.4 444.4 444.4 500 500 388.9 388.9 277.8 500 500 611.1 500 277.8 833.3 750 833.3 416.7 666.7 666.7 777.8 777.8 444.4 444.4 444.4 611.1 777.8 777.8 777.8 777.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 777.8 277.8 777.8 500 777.8 500 777.8 777.8 777.8 777.8 0 0 777.8 777.8 777.8 1000 500 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 1000 777.8 777.8 1000 777.8] >> endobj 140 0 obj << /Filter[/FlateDecode] /Length 1906 >> stream xÚ¥XIÜ6¾çWèDtÑâ"R 0‡qg$€'.ä2ÎAV±«5Jm-Ýnÿúy µUµ;æ$.ä[¾·)JD’D§ˆ>?E¯¯Þ¦‘LD.£Ãm”D{Þü'þáð¾jv{­u¬E*þVœwÊÅcQïþ<üòêm¶ÖÖ‰LÃtú_ÿ|wøñw8”ºX!môã!»é#¬šÈh)²lš×Ñûè9íÒ É’y"%lí(›èÕÏŠÞ´Ñ¿/…:¹Ò4:'nÞV§±ó,òû‰Ÿ×‡Hæ™pù†úÝ ™ÅCäÿÉ·º§åØ«·v£5•eBgtZ -än/¥Éã7UãÏ}Õž{ÖÖVÕJ Ǻ>Üs&qñiz‰f·mǃ?YÜ—À-ôCÑ =«áŽG_„Õ—pa{»Ùrñý[„Ã…;à>öÕù®†GÎþ(v{k-pV…g¦o ß“2@ èHIв{Ï‚º,Àèé„ ÂÔ¥*4ÜŠ¢®[dï_KUPAjPâ¡ê‡ªäÁ‚ŽË¶¹/ºªGåE`l ãh?ïÏLÊÂàíªSuæÌ…*౪)Nž÷Šó‘Ü[#ÍR²­ªá;|Pʸó%<>tc9 ‰Qc™ŒßWçÒ3Áüª Ò®_f<*øSV]9ÖE;_ÜÀPËÀ7¬}P©ëú'UsO’¶Ýøç×vi §«âcí¯ƒæÓ&ã;qp¬ €šïp–N6ÛÈTíy³»®A#[ÖŸEýÝ £3×aAÙ\HÌ‹GØ­œ\8¸DfÑ×ùhÕdyü»o|ƒÂ¢•]ì;z´Õ³™4¸o&×vÏ#å€iR¨ñžÁä”®›êMÞ#T¬¾´¡¶*ÀÈš¸:ßÃ4dó]EP™ZáÔË!tÅ@5©^)Êl‹K€PMÏ%‡oQµíç1¡q> šhµøØ·õ8س,õè{ÁLäÛêÁ ™¦$<ÝA\l>%Ðm.4ηrmô:¾ðÂ:d™Ñ€Á Ê õoÁ#ê@jÌä —ŠUFÙ_)VO·ÝÄHæ=Æês…a‡x zãàxS|®(ª .°Ypc`Št"@¨ËDuç«ÓÝC€UƒÀŠVþâ™þÓÈÑ‚‹G˜bkPxý´Î'Œ¥)' r4’»µF0!”~…”Lj•É ÓF‰|rÍû°/ÁËsGŽ+ "W8®©ê+»8,*æý˜ƒ™•ÇꈚÂ!i kM!ßätˆà#Vñž,æn ½œª*2­Ä¬“­M@ÑTTtO›%|þó͵Nr#´|I%©„ýëx?Ef£y?d¶‰›Sõ€Ïúóœ±Ü”±æä÷î Lj¡þ8OAÀÃ,Á¬B¾r寣æ’*ïrK–þ=ÓŸ1m–/¦ýÇ3Ø‘˜WÿROè@²ø4Ö#p‰VË¡;ÁöDAKQˆDHhQ“ÛiŽ-ÊEôšég¡Õª¿0I.ŒÝlÀäÃ.Dé°¯ðŽC¬ü¥hÔIJ­k_<¹ïÀ›¡Øû¯çÊ“W‹©FÃ1ß1q°´D÷tŽî3á zåƒ6W N)CüºøŸž² ƒÎ†ú«‹`›.Zo_º ,…€te{¥’¥ù¿– ôs²N ¨¯ Rê]uÄÉšÄ8uEÓPZù”i±)ÝÔžc©ã\pèÑÐG¤à"Æ„FQ®qb¨NZí_'Ø} Z²ì\¸ý­k T|Kº*‚Ô}B=¸î®¼4Áâ"Yz 5E¥©‡ÁÑ”Lp‰ô¦ßÄ9VJßS¶ÂµãØÍûK•‹3ÂŽÒÕ.>^ôüâ#ŹºfÓ@î•k˜Ô,æó 8îŠ$¬¾Ýa)@·VÙ û»LÉøõ“ým1Ö¶jù×:‡±n­Rãô *Õš•J‘Þ<ðŸFê[áeÌå¸ôÜ›`4Àâ¦a]z.™¾ØsÍ6Æ•Ç?SGâ J ÙBev2ï@}q;Ö7ØeØØ÷ÜÐø²âJ )¸Yÿv»jêÌP¼À‚]|¸†*8°Æ¯`Ì¢/¢‹¬ËL¯Ì ]ô‰ÂŒË ÌrÊrù$ÁR&À¶_"ÌúxöDeš†éò€i—¯‡%¾Ã8I¥2®³RH|)¼’z7“ýSn %pŠ¿APŠÕO6ÊпIB ò[±JÝò†C³Juê”fúgB\øæ"( endstream endobj 141 0 obj << /F5 28 0 R /F8 51 0 R /F6 35 0 R /F7 39 0 R /F9 75 0 R /F10 132 0 R /F11 135 0 R /F12 139 0 R >> endobj 142 0 obj << /Im2 80 0 R >> endobj 79 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 141 0 R /XObject 142 0 R >> endobj 145 0 obj << /Filter[/FlateDecode] /Length 2365 >> stream xÚÕYK“ã¶¾çW('“UL¼ø8ø°ÞõÚIÅU[YRåÍ–¨‰œÔìοO?RÚq’KN@ Ñï¯Ú$"I6úùióÃî»÷v#QÈÍî¸I6[³Ù½û5z»ûX_â­Ö:ÒŠ„‡¿”M¬²èZžã¿ïþüÝû|:¬ÓLähÐéŸß|ØýøW8d³HáÞÍ» ÒþL·‘¦›ËÆh)òÜÏÏ›+¥¹È}ìÚxkmôj?ÔmÓ˳l]l“¨v7™T¤¹Ûï8•I@N¤žÓ'÷Un2Qd$‡P )R¶E·$.,Ìüwo1ÑîT-­’ˆ%Ó‡º¼TCµ$›I··îY éjx´/Ïû빪Π¨Ì[MJ& p¹ÙJÈÛò(_–ӆÒt‹ñû÷KõI‰w0³+ôÍ ýð¼¹.¸Íah/lh‡¤& dýƒ}ŠiûÖÕZh¦óÃs¼U…‰®}Ý<àÐzO ™³ùÿªsèΑ‰,ÛŒßÏUßóMà ¢—Fr%tÒI¡7BbÕÌB‡Ø?Ÿ[L ŸY0  @¬À3…Fù¢Rw|1Êí~!ÂKÂÆˆÌ;ù#lÚËWhç©ÖÎV*G—ØJp^¶ÕîDQ Ÿ(¤Nʆ–ûú¡©?)›í95|¤ì†úXî‡cSgч~|îkˆ£ósœkÈ °Ñ€D|‹ ª4j¯g¼ )¢ß@â<ªø[}y¤iÛ÷õog·X6ŽO¡lÊsûÐ^94Æ’0Ä.„qÝô°†ÎGiÎEw ·Ù”2«ß‡Üð)…i€—ßî8ú{¶©:Ÿ$JªçÏç²{¾6c2Y9]}u>ÆÛ,þȆ*戤E^ ÷D)Ë¢waW¢N)˜ÈtŒ9còèPËëy½¸‹˜ÁåŠ%­»eò”˜eҙ˚TßqYˆ[dP$ϲÀ ²"‰ÞǹŠ0Dèæ/hÔ,ªºúâ¸\…OYôxí¼Á«Þq\|ìRâÖgÞ轄|XæFyhöCÕ×]I£òŒì‰¿=iGãoW•<ªjPMÇcoG·î·¿€ûE—Rh´ÔŸ…¼ÐºüMýÄŽŒq’í(n®¨U¤l5¼nß6ûêq`¹µ.8]±Û—ÆÔ¢ðÄû}l%ÉnrsÃs‘d·1<ÇëÅ•4-ÕïÀpÐ&6»,Âç¶ @Ó+g/“ÉQw+ÜH“MµÍ*?ò.æ$¦$:~ÈáÞÁ³2–[tŧ]V Wžê=šìľl»’3ÏËÎùªÒ™0&ôÕ} ~µw†vÙmL*v¦ÙæuH±U©ñ¸{Û<ÿ›äµ%Îíä¶Á^Y‚Òb¢_!’~¦"Dú„ˆÅêÆCp…È΃¶;ÔMÙ=óŒâW’¬Ç=ÆZ±ˆ5-‹;±f!a› y"‡C»¨SÔRž´\Á^aJ :‰þtd¶×øÔA̓l&ŽÍüw²éëÔ'ËYbXà뫜ë1Óè>s=À“½Q ˆ7Ôó$¥ÈKPÝÒ]°¾Uµ{D׿TÍÃpº­ÚÌp´b}….Ë¢[T${Q· ,O}.?`§½×.#Í%n«ÝÙœs†5®ä°ˆ9ýPdð à~íôùo>MátÚ^;¿—j Ô¾âB ØÌÄ‚ XƒrõtœEš6Û¼@áØR ÀºÇʉµ3K|}5Œ)Ï5§ôÓ¡ƒ®ÎE‘ε5Ë+ÚÜí<0éÉ”ÚL¥ ÃsâãP_©Ð5+Ø ¥¡Ì(Ô¼ŸÔ÷Òyþ ^WHQÜp€bâïñêRàŠ^€NúÕ¶ênÂNˆ0 áу] 8?_ˆìëFy]²Ÿ”¹ÞÜn8ÙˆÍâe‡µÛ™3ãCÕ’cZÇYÖwf£åÌAqŸ·%Ž-§¢¾ùfà•K9@\`±«mô³k q‹«u¢P?ÅT?`PAU¾ì\6“‰MœI¾ú×µ>×MUv¼B0†üP6àbݧ¯•7jT í² Ò•œÒ•ÀåUÉT@‘äÄM²;6qÈÅ1®–Ã#r%2ïÂjAnO± +\Ì>¦ˆ.mGi'q‰ ¨£FIßm}àM³nºô_àP;n#³`&+™ÀSl±¯¿V|˜ó[âPŽnZC9ˆº{È„(¥ üx¢FÆ÷İ–¯4º„ÊÔ®à‡‹ùÀK°õ-©õåVÓµ»'VÆØïŽÙëKðuð¹E®Õ2ë-<ÇÈIàW<®¥`Â"|t˜ƒ²N2aó–ßV ÐÙ¾jûìý p¶Š^ßõIŠüœï8Àäú|Ošß‚i™@º‘÷pz|Þ¯K&œ6§ëë4ÀG€Ó0;vô”n˜¡/ÌÉBÆC9ìdôÅ^—Ž:w$¸mÆ:0t&¢Y¸¦GS¥<š ÀÆûäVˆ¨RËÎoˆoÃSSâÄM$vá2‘¤EÓ[È®U ÂýD V¿_Aöt†ì&±Ki/Œì®Ë¦ª~öBæÂd]h¨Bÿ[äOE=Í´/8ÿÿ±ÿŽÙ^‡ý6üí+À_Ûüu‚?Ξ.Íœ'Àúº]턊¸i^àÊXXe£7¼‚Šu ’:P 0Ÿ_+R{_²_¬"|ÉB|±k©Vy|QôÄF@  ,3²ª9šXÿ, ƒP9*È|¥Ç“±WXïFáƒP*ÌCÿ ¨xÇI碥ÎìB o¥þk|©ön‘«è'ï/ïÁ'U%Ê÷i=¨,ˆOY1ùÂ÷º<Žžï¬3ÊuxøÚcÀQÝ0ìb»‰ZSQtÝ£1•0P6¼éyùâ\ö19¸€«._à@yùíʃ8¸‰á7wnb§‚Ï¿~ÁoÓ<`žéSÿü~#VCU BØÜ=æÁ·ÉY =øÎ‚ÜŒÄ*w#úþ•¤ÜÇ‚ßC«ç Tà“ üMKiøIâ¸:c¨ý¦ºGáA”›U’,«N,:Gsëœëÿ‚Y• endstream endobj 146 0 obj << /F5 28 0 R /F8 51 0 R /F7 39 0 R /F10 132 0 R /F11 135 0 R /F9 75 0 R /F6 35 0 R >> endobj 144 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 146 0 R >> endobj 149 0 obj << /Length 2886 /Filter/FlateDecode /Name/Im3 /Type/XObject /Subtype/Form /BBox[0 0 2384 3370] /FormType 1 /Matrix[1 0 0 1 0 0] /Resources<< /ProcSet[/PDF/Text] /ExtGState 150 0 R /Font 151 0 R >> >> stream xœµ\ËŽÝ6Ýë+´lCßÛA‚3«$ xdôtbÏ´lر1˜¿Ï)RŠ’nwßKÁ†»ÅKëÔᣪXןz)ˆ¢'ÕKþS>< Ýw?ûþÏ¿ºO앱ZÕ&ã…ôsËÓÜ"ñ»ÿ]>}×+ET¦Wäð2‚UB…€–¨q¯ £ðAå¸Åp©O0"†±•Üâ½Ðé­JòS÷ö›þCGBZ‡Áÿשþ}R õÿê(R¯¤Â”0d1¤í•Š/ôŽ”0&ò€Vëy<«ùù¡ Ú,Ÿ)¬µùYy<{¡¤Õ}è~é~ºÑtoeÒþ¿øÃ‰*3nŒöÇ7…ã´ÿ®ðwKè¹Ð5ðœ±s&ÂÀÒ Ø½¬ ÂÛЇˆÉ¤™} ½‚~JŠô³ÞŠÓ."èÚHÞÌ™Å$JY+4Ày“^:0l†äiõ‘06Ø7QÈè}ï# ä—ç‡ÎË ‚·s‹SQh{™«¡4«ãxÞ(¨îO˜6µ†=+m-¹±ÛÁ´i%¾Í´Q³ƒW%l-ŒfÆŒ4"°2‰Ê§Né °Ïå.Ê¥–Æ– ¬Î} —C TNjÁ—fã Æõ?eZHx™ïÓ#âÝÖ×úû˜6¸k”·ßcò*PýD.N†ˆÓÑWj¢°}ËrG…m%„I9û(1?méÅ^Çí<Þ)ÜÚûˆ6¨kŒ—Øm ¾!¿NO 0ñët,ìmË™àP‘²¿ÁB#?é×(l6Ž&z'©WÑ ";l'Ñ[h;ìÚ`®!^b÷véÍÈE¸¥{<&ø…S¶h*”ñð”aö…]áz5y ì3öÌ|¦w%÷*†}DG'À+…‡}P5îå1Ã-¤7dØ` Ê~ú[Tè½6X@¥Çç5ü}C%LjŠ8’ûpƒÁެ'Š Á×Q ùžôY/úG*ØÈK ß,¼-ÁÎé”A–Opèì2tÙõYºŒRž6r¯âw‘¿êCH3̈.Ó{›ì†ìb±:Ø“H—ì"(7«¡á,Y£KvÑÓÉr6:Dé6Îô‚¯£2Òîu »…¾Ã¦5ìä%~o—ÞŒa>p­‘‚ìÄ/ŽNk˜°OË)ÒÕêµÆ Ëã„361ºÌo!ö*v­1ðôNò°Vêû6°kÇü6ß`xÌÆN5fûÞ„)ôœœ;ï@ú‚_87[ºû=Uâ³–zÃ,.ƒ?‹áIáaT»Fù Á7JoÈ/"^£@hp3¿8ç­žwDd†¿"˜3×+ÝÛ MôB¯£Ò(Åà§Ñ›õvm@WŸ#÷Ù ©ÅÕÄœOß”uÒ87)¸%̾}ÖW;)œ)—/·Dšù-$_ů¶QX{’wµRxص^Ã|†â[Å·e™"MÚL,Ë"^KÙQ-A‚,Ã`ŠQP™Rå—¤ñÉ“à«H¦È!ôIQðJáaÓvò9Žo“ÞŒb¾;"͇}œ¶ÐEcvÅ0)ƒc攂¯FH£ëâõ§¾ÿÊ —r¯#XÃwgzÑ£ºÃ>¢ ê ã3NômÂ÷èͰJ [3¼=2óú‚nßÊ‹…>uFh(K©¥üýaèÿqß}÷sèÏßßÿÑ©ñ½˜2º×ÁpFßÝÝŸ¾¾zÿáñ÷Ïý‡Ç/Ÿÿß¿¹ÿãê¿Å_‰Íñ—-(ž+Äoýz÷ýã—LJ/?¿Át‡‡9t÷×›ßîÿ µ…ò°&xñÞô÷ÿîî~ùøõóÃcûÃ=¬vû² RÙZóÝ<¶,*®æ‰LºÎ^n|ñ*n…ч½\×r/¬ 8Äu,næÉSH‰ìñfž8âÂÏéÞ˜´ð¡¸™§tTÄ¥5hšoæ“:Nw3_`Ø·ÑÆŽ•ÕZá­EÃùŒ€yíy{×éâÐö˜ÜpY {¸OÙ Ó=ûô8m€ÝÔbñž£ØO4—¤0ã©N'¶á sÞÂ1×!W¥+p´Xá¹à‡ÏiÞ"È“ç/–zLËÀ²Íçš¡ÔEsd 1\I“º¬_: ¢sXðc oS$ST’K˜°ˆtJEJùÌ4É陟X´Ä¥‡• g&?;lx¦±âIª3¦|…Ø5QmÅÑŽæ|émœ¸'’‹–zjY¥Ðµ´–š%݋٭øð[R©Üõ%\K¾4e¸† Ëhñ¦ås^½Vx8U¯aÜJ|[–—¬ïÜ2'y§±Ë–¬ñ’žûÌ™àZòU,Ÿ—I¯.Úšâ¹dz+ñ Y^åÓgvæ|ú<öœû5žÓÃÓ¼\²ÁµäëX>+¡^ë;aªp×(/‘Ü@|’á8`?åãÕî7p‹Îue/M\ ÂõO•Nïˆ!=G‘ª à P:M$¼•¼ÚJì«NÎ û ì/Ù3(®ö0Õ kŒGçq Ù­Èõ1³À¾­NªxÏ©p%1³BýyhDç>¹±@j€w•;À½êctc}Q-õEÜbf»<¾áðï¢åŒû’JÝaO ¸xHìÍ’[mÌrÄÖ†‹`x‘©˜?r¦•²*!ùÀk8—ÅPäŒÒº…CAˆÁ%Ÿö˜•Ü˼jÌ\Ç›Cߤq%|´\F®ÒvØ´]A<¤¶…ðVìj%È„EUŒÉ¸Zrdqì*›;¾ÑB;ê‚xRüüh .pä*¨Zîëè%Ç_†Xlè®õv!Õ kŒ‡Gn á­èµÄßþ &…d¬ŠåÜÄRÒ–Œ¾\ør›@‡réÛ69E„.)éÎßÇñ>¿´û:rMÊï²x§Ï ŽÖêûjÔ5ÆCv›HoE/ìŠU¶T ¢Åp!ùR&ˆ•ùð Ú4»Z©aºCÑì ä ·)h^˽L°Ò­vŠ3çU Vú»6¨+Œ‡ü6ÝŒÝÄ¥……ÊS-ób¹>7e²Æ¡­åÑìZ/ÐÆB]®‘cD´ü’õ;ºT¹,>ß µ'w­î° iƒºÆxHoé­6|Ožj#üxRäíÙ`íäô0¶›Sèv¼RÆ[ð¦ñRqÜSÆ->}Ïíi#øEN3gûCÞÏR`NÚ Wú»6¨kÇt éÍÜ«äLòi¤avŒŒÆØÒg¿IIuµøWF#4ÖqñŒ¦Ù_XË}MT4¹W‹´Ü«RÝaÐsñØ»º]v³È(BÚc‹Tyùæ¡S ›£Âm×aÌLL¾¾æ°Öô‹«ÏìŠfu ¹/Ùž—Å›C#íØ–=!4Zé;ìBªA×C£›å3Rö€ozC¾å|×a®y?á”Ê"0×¢L·ü5.ïÐûÈ©%×"Ô’_™¯â\,†ÄÀßø=%©±Rxص^Ã<Îl4ß,%™„uÈ Á”MäëºÊŒ#>ÁÌË“0%ÙøÎ˪¬^J²ñ•_.f¨å¾ˆãÉ…žr’ü¿(sÇ+}‡=D[ÐÆC‚Èfv_W²Ttxœ­ÒØVtì–ldû=¿ ^l{­ÚFF ÀwÃG˜T¾R”–LE.|½Ì•QZé±Èå×Tåòû‡7ßJ¦CãÓ»?§³0½½ûú´ª~)@ÿÔý Å%Sæ endstream endobj 150 0 obj << /R7 152 0 R >> endobj 151 0 obj << /R8 153 0 R >> endobj 152 0 obj << /Type/ExtGState /SA true >> endobj 153 0 obj << /BaseFont/Times-Italic /Type/Font /Subtype/Type1 >> endobj 156 0 obj << /Encoding 136 0 R /Type/Font /Subtype/Type1 /Name/F13 /FontDescriptor 155 0 R /BaseFont/ELJYJZ+CMSY8 /FirstChar 33 /LastChar 196 /Widths[1062.5 531.3 531.3 1062.5 1062.5 1062.5 826.4 1062.5 1062.5 649.3 649.3 1062.5 1062.5 1062.5 826.4 288.2 1062.5 708.3 708.3 944.5 944.5 0 0 590.3 590.3 708.3 531.3 767.4 767.4 826.4 826.4 649.3 849.5 694.7 562.6 821.7 560.8 758.3 631 904.2 585.5 720.1 807.4 730.7 1264.5 869.1 841.6 743.3 867.7 906.9 643.4 586.3 662.8 656.2 1054.6 756.4 705.8 763.6 708.3 708.3 708.3 708.3 708.3 649.3 649.3 472.2 472.2 472.2 472.2 531.3 531.3 413.2 413.2 295.1 531.3 531.3 649.3 531.3 295.1 885.4 795.8 885.4 443.6 708.3 708.3 826.4 826.4 472.2 472.2 472.2 649.3 826.4 826.4 826.4 826.4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 826.4 295.1 826.4 531.3 826.4 531.3 826.4 826.4 826.4 826.4 0 0 826.4 826.4 826.4 1062.5 531.3 531.3 826.4 826.4 826.4 826.4 826.4 826.4 826.4 826.4 826.4 826.4 826.4 826.4 1062.5 1062.5 826.4 826.4 1062.5 826.4] >> endobj 159 0 obj << /Encoding 7 0 R /Type/Font /Subtype/Type1 /Name/F14 /FontDescriptor 158 0 R /BaseFont/CZYFOY+CMR8 /FirstChar 33 /LastChar 196 /Widths[295.1 531.3 885.4 531.3 885.4 826.4 295.1 413.2 413.2 531.3 826.4 295.1 354.2 295.1 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 295.1 295.1 295.1 826.4 501.7 501.7 826.4 795.8 752.1 767.4 811.1 722.6 693.1 833.5 795.8 382.6 545.5 825.4 663.6 972.9 795.8 826.4 722.6 826.4 781.6 590.3 767.4 795.8 795.8 1091 795.8 795.8 649.3 295.1 531.3 295.1 531.3 295.1 295.1 531.3 590.3 472.2 590.3 472.2 324.7 531.3 590.3 295.1 324.7 560.8 295.1 885.4 590.3 531.3 590.3 560.8 414.1 419.1 413.2 590.3 560.8 767.4 560.8 560.8 472.2 531.3 1062.5 531.3 531.3 531.3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 663.6 885.4 826.4 736.8 708.3 795.8 767.4 826.4 767.4 826.4 0 0 767.4 619.8 590.3 590.3 885.4 885.4 295.1 324.7 531.3 531.3 531.3 531.3 531.3 795.8 472.2 531.3 767.4 826.4 531.3 958.7 1076.8 826.4 295.1 531.3] >> endobj 160 0 obj << /Filter[/FlateDecode] /Length 2110 >> stream xÚ¥XKÛȾçWðHV»ßl.àÃ:öl @’Õ-Φ(‰EjIjÆÎ¯OU?Èæ² ,¶ØÕÕÕõøêk&”Pšœûø-yxû¤FIÎ’Ã)¡É^P"“Çÿ¤=ü^_w{!D*ˆ"Ô ÿQ´;ž¥÷¢Ùý÷ð÷·Of^,tFŒvõß~ýçáã¿a‘ÊR޲ÉÇC‚º_ì.’h\)1&ün’ß“?@HdÆÈåèü+–왑Dð¤¼&o?]Eò¡Kþõú9'F%{NÁn­yªÏ÷¾r'à„ÿìyH˜â$ã éÜë¦n«¢Ç<-Ú#dZÁDÑžï›é¹ê®ÕØ×Õ@¬Ê}Ð&„Õ4WÜUåéPÿÏŠÁ=ÇKµr¡a„ïÁ¡Ü) {ƒ´¡é±UcÕ»%Ñaµ&Rù%d·Wœ¥O;ÃÓMT&ínc}…h9+Ê¢mëöì~Õm°¤ö6ùó|Coà•V›fr–‘,2“y3Ùc3Q‘<Éäl¸t÷=KóôËnÏMŠbÝl †÷cç^mYÁhNh8úíR´cgóU=¶Âh"f_I¡Óƒ;;laŸ°eQ–ÝõÖÔÃ¥:º™/˜ñßÜì}pîó6ÙÁ±:÷ftÏ;%Ó¢¹WƒÏˆ\¡Ü¹•ݹ;9»²è(3ÖÆVVç$“'V“m:Dh¢ƒàs]½À i–ö6>cÝ­ôB®²à—ãKF˜^ÅÛ+§ÛÊeF8Ÿ}­©J?Ü‘‹à·F‡Ø÷M5 ÁØ`å$ðR.~ÆK…­uÐ|l Y8n¨üãú²ƒÄë\¬—ÄÈ8V`ªuuñŒ{ãà`¨Ïmý™«¬tX8:,8ÖÃØõàŠvp/^ê¦q£ÎfwYÞ{2#ÏÛ'½^¦ˆr°Á‰ b·gLæé‡úy' &úsÕî`wÜ ªó· yVŽ]\Ì`°X ©ñUÖ÷³ŠpNBê~N‡ªì0ðìWõÚöóÎÉajƒn%`HIpÈ©»÷ãÅþˆ¡ÇNak§|o½AcPû £+z>ã¾â´L¿îû"%zô(®ƒ›>‚Ï`}æN½…˜*Ü«¸ñÊ0·ôc‹7A b (RŽ6uðe»jØÕH‹µ€ŸZ'éË&ÆeÏÂÁœ¦W—Ç }#9î"¯ƒ1vìÁñ­Gù,=ÞK,|åWœlýq:ŸÜ½¹Ô%žüâfëÁ=ûª8:eøÖëŠ œO¸—,÷Hµ Pp t¼}–»¢–Ê£!&÷sÊý[ØÚw5ûìK/åµ M/eÝ—õRfe»ØƒÍ}ʾ®ýVQZ’u0¾ð¡!É1Q½!@cB'¼´®Þm›„×~I“‡\cÃÞ‹\`vµË#UÉÙB€¸‚Í£Þ8IIB3_¶Œi×U³,}oŒ£_m¦D²¬{ð ázYøBŠ ôä¢6Z„¾ÑID‰„RËÒ“z›PFhd›’@A†Â6 [sx oôÂÜ à.ˆ¶ªŽƒÛÙVàl{YM a«#¶íLGD!½%P-Ðãt}ÁÃv=ò žç@j±KSG„ªÞžŽêÀ€h`Ôû«mœ{:üÁA}õ#Û»àyõ¼øT”#äYu/n€3nç¸õkpCth™Ö0(änêQÕ³ýß{“'— ³m¯=Øa\.Jj%xó J”dùd“e4bŸD‡‚Çôz9¡,:‘˜ Øô–Ř¿bM€•~Ìé2¶ 0Bls# ùD¢P±ã1ÓÞTízÓŠ!AÌ&õC\w±˜–„gÉ^Q{ñxè L|õ";ÞŒö j:€÷­—噵ØY–HJOy˜œD4Qæ!’HöÓzø[‡Ï9]7ü,›´+Âð¾…Yk½\âq'wk÷h#‡¦¾ZŸbòî´vCC|rí"P6ŠþÜÕ^hæy8¼'ùÓ³iîÃØ#¢ø­KÊ-‡;*ƒ;â2yOÐb©0°±@¸úàcй»åõV÷5v=¸§@ñŽö:7‘—:$`Ìy)Üò®8Ñã6D[aˆ\¨ÜÒ_xðÿæ €NyÞ¸XÁ9Lã:öÜ%bH{ ÄXóÏ ¼½ÔЯ¢±v­ –ÜÛí‹›‡m@qŒu„ÛÈ}ÀÒ¯pw«yðÆéªLð5 $ÿ®Nôf)ÀÍs’A$â–MÚŽoylq{ظ^ÈŽ¤GJŠ\ÂÉßz0°÷æ½ k(¥ý w{ͱ9g¿bœ¨™£ì Zª¥Ã›LŽ7¼Ï·A›ç$àŒMx3?ü–àî_ý7w“5Û65ÿ˜Ü¦¤ì!`š0Ô,­†Ý7/•cýêQ÷c¨çs;q£pÅ»M`s×6Ìum¿¹øo00òÄ(GOÆ÷‹'øAÁf@wÈä\ÆË® äw³€ ç×¹ †Ÿ6¾¡L%ù ÄŸž6Ü+ä:@ VjŽÏ¶ßL€ü‡  ~ùŸ&4jIh^Q’È»˜5&°…Ÿ§´åäSYnŒ’Ñ7u›>Ï ¿¶3¡Œ„¹Ü0Á<ÀpJùÚ½\ãVgö¶ýåÿ(uðø endstream endobj 161 0 obj << /F5 28 0 R /F8 51 0 R /F7 39 0 R /F6 35 0 R /F9 75 0 R /F10 132 0 R /F13 156 0 R /F14 159 0 R /F11 135 0 R >> endobj 162 0 obj << /Im3 149 0 R >> endobj 148 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 161 0 R /XObject 162 0 R >> endobj 165 0 obj << /Length 5063 /Filter/FlateDecode /Name/Im4 /Type/XObject /Subtype/Form /BBox[0 0 2384 3370] /FormType 1 /Matrix[1 0 0 1 -131 -279] /Resources<< /ProcSet[/PDF] >> >> stream xœ­|IŽ49lõ>OQ'„fé>Ceü@å¾ÿÂ|ŒATd£ñÛèE5Y ÅñÕ÷_?ûãh1üìøïN¼?/ò~þû?_áçÿ½BÞëÖûOÈ9n)ÿ|„ÒÚÉùN[¯?!µ¾ [Ú¾íIè,?…®ulqœôûZ yŒè5o£ÝÃÖäË‘â+ÖÛžñÅc+²j «Æ=‡-`î]ænJËB Q†Ÿ¿î!ë„öùØÛÖ®ùG+˜Ü–—¯äH˜D·÷ž¶Ï´|qq:–!ôÖ¶p2dª²ùt‘‘õ¶=ýmÙó&?ôÛRáfOy)}-'œ¶„åÜá”Ú¶˜®YrË[å­ˆÄpƒóMN‡¨[¸ÛõXnŒpâH¼³&óÉÏ8mËéäpŒjBNĽ&‘BÖÛÛ#öR¸×\v9øûu1rÞ “wôÎYÇœ„û¡‚aßD:q¨ êžð‰ß»,\bÜvÜWéÒœ¢'.cõºoÊQ¿-)l=‚96Î!}Nâ%9-T¡LŠìW”Mh-J”¨\ûÖä×UÖË唹¿ƒéž¨~¸•( “.-r;{’»KvÈ›;ƒ«f,)zÞ~Ýð:¸Cˆ§dQ,Pë–U,Âá¦dD:¢èé íÄAçOݤ²oE…1 4IL8¬Ð‡_ÿ÷úƒƒÿ`y²¼êB]•s Zã\:©äñÌéøó˜·æ8ÁÆàÖð°çLã ü³+«wN•˃äš(p ºT Ñk0YñX*abÑNl½v‘6Ž Æ§ÊI«(gÃ"›vœŠ9¢šд¢‚áN§¶/`ך<êŒ5F¡´"kA™ð±Ü£>ú.kŒ—õtÖç:lV}`Ømü-÷#œ¶Ü{£*.¬í;Wî"}r;OÛÅ9´p£åŠÔ]œ¾í¼ÀÑE+yj<â‹æåÎáæbsvZ[¸Y3A‹ñE[â6uÓÊÐEBÆ÷Íæ4¡P’|’¶`÷E§Ûqê‹U87HFÔÍlN¬e¡§*xÃtICggÕá3 ¿ºAÙ.D‚1ªý6 ´n¸@þB‹moÇŠÊ‘–ã°ÅàÀÞ@HÉè\ït†Ø9ÇÁI¼€kÙí"Ó™îçg³íàßMRÂÉõàP¸#Ø ,E#oÎðÆ™§í cF€ŽÀ3Ës¥ö(‡C¢‘ŽÔýNk"´ž­ŸÆ¥TF ×ñÉCgLŒ:D?/š~§ÑP#Ä Œª3à¹ô yÄÆMÁ„™ꌟ'hå¸ÀÁx0\° Á|SRJÛ¸ªs„DN:B-g•jÀ@Ùƒ·nÚî ¡YŒ‡)‡–$‚YÜW hüq§5ÇŠ|’JÛž ÐkDbЃF0‡OšW1…Äf;õü¤ƒY†“³3Òà”úv*ÝóEÃûZÈ@FoêIp•vù1èeCŽFs‰ÂÝŸ#Dðèñ\ñØA'š/z…·ªä8‹ÒB¯E´vYA_ÇÁ¨T5™tTû ³:Ô°45 Ð⤻Òw2Ĺžk´‰‘é`úˆ 9‰¡$8Cg‘ÁûPy!M¸&éjWåJ{Âè>Ìot÷_È^à•ª$x5ðÚ…A‘©²Ò÷M#Î]FÍcn‡xK¤zåÈ*Ù[z|2Ž$eˆ+_É#wž¿Ÿòž3á>³œkÌÿ&[ºBß5¨^»%ö[¢Ã%~D6BƒÓÛo§|`4ä-Ï#òBÞ¥¸HùŸå¸ÆõHõŠy“s™"¶+;Žý—üà–¹ 2§A‘ü“k´TÅýàaÁæý4Ï-ŠØP†ëâ¸rиÃh¬lÊ9"j6$6º‘{ÒñÆô*×ç3Ý`_Ë}&B@$ þ§ j›Ð ¯ÔH~PÔmœ¯¾¡¤Tîô0yp®MTÍñÙ©™f(ýVÉA Ïrz& âüQ+ ñŽU²v§ñ.j1/þ‚$Da}r0†9¡œ½êoê<Œ¸0-D Ê‚UoŒÆÂ²b¯÷š< =êñ…r%9 x:1Œã!5|ØÞⱡô[ßk ·L`oôíÍÙ­ÒdIb%jð¹s2ßUkØ“niÍEGU˜ãäì|¸x#»ÕB°Ü3"Z£¹*³ük„¬Ù®£ ÍU€I>ÔÕ^™pª7å› Û臾f[”D-•“¶'’Ë}ÄEî^ôQ-¼8I}H_õ?ڎʱ€LÄjHe^‚=ŠD˜†£ê –@Ô_cLâ»Î”j«Æþ\Rè<¦MH^PŠÎ´¢Uµbº£›î å £MÞ5ÞGw¬1¬Ó‚÷«‹+«´ž¨ž¡ØÚåú7Ö‰;N–4ê”ü ‹w¼P¸:ÞXGÐ9XwË/>ˆƒÖ¶+-/–ÒÊYÝXÁf†ô™çé ~—U¸£×ÅLÇ¢o”‰PψÍí ° qe˜’ˆ`º¬Üv󨿢#—b‘ }üA7A=´L%®å…@-ÊVêB…+‘!ÚÿÃbR·ï%Ô@ùhäcO¸.”8’i.NÙxx’¤p)hÙQŠ/[¥ÓÑ=ÿ½˜ô߃Áþèü_ñqå$™í³†(n<5ãZHÈïÑû`0~çˆå; ºRŒ¨$ƒ§×ƒÞLá]ÒÏf–”gWÚyù­AcvqÞ#zJÕ„*ö "ìzÓÌ4X4ÔŠl‚fã‹®æ í™` Už“S³E_¢`l €SZwœÀ­¡–Œ…Ä4 Z~F#]ò§ÀúÒ?¬+Éý>ÌYH¨×dš/©÷LÜBëÙ ž“'RŽÔù~6 ‰úIn Oi½¢¦#]óM˜«B7.V¨ÓW ØÈÐ ¹`å¢û­‘…=ÅfM'uËEdΠQÎ)S¥žÎëÃuª¹WúÍ V½½F´Ô'ú®(º°ÏœîÉõÄÑ ñ  ò -ÁT¨€Àæ9[»lŸ ‡;*$C¤I×~ÕLÎ ÓmYoÐÐÏj¨ØÈAæ¼gʾ¹7Úz̵l áäII22iÄ/Zd`çHéhïÿ›!ÿŒªÛŽ<×Á,‡Š‘ê£pòQ‘¯N˜ªÕcÊÎÎÇж §¡%ÉjA  =Pçzè¢LUë±h[^ÇJ/»öÎ¬Ë ÿo*ι‚Áçõ\Rx,9L «WørÆ\ï`ÍdºYìÏß½Syû7»qÖJ¢f½õzýEí×Wá_ÕU¼àXÚ™êCŸ×RAZ*Ls Šuªé†Y•r:àudÖ¢÷²gØÀußç^½‹Úd½zùU‹@×Yçifráótc«š®«®;[–]­Ïïiøü+Ø:oÑÒX<ÉÃab&"“P·±ÂÐmÚþãê“ï]{°q¾šë+¾àD‹©*±](64†ÚÀ€ ®Ë(¡vͼ ±À%GžE,HˆÊ‰ºñla h…‹ ×Àñoâ¼xÖÃ\Õì&X(|€×ºjf2 E‚1P(bãIW½wûüÿyÕ¹Êýy*Œ?¹¿l§*Ö6ùKûzúÝ´ý›£ÌŒ»ÑrÛù<úðÕϯ±€?Ö拓ë O­cãÌÍe×|^ÛÓKÛ7¸¿uÀ¹o¡o²Ÿmø¹K¿¶ñ}£¬P&p`ƒá½"V(à w Ç"`b…T,  Êø Û8€êã+(ä„xXÉ <ñДº²`[<øÅac&ðÌ{…*üÞágïOµÒv‡>膢3œ E àhA$yÌ’‡4}<(‡˜Z1U+êjEeÝp[_°]þk˜1 ûŽ1;Ph¥6áØ&d±n¶ê„†óh¹OG„Ý„¹Ã•wGì}…ó]p¿ ¸À=žÐá /4âûåÑŠ¯ϸàWD¤ÇLzL¥G]~Åg8äÃwì„CWxôÅ?á3‚ã+Ä£D‰Ãg<óVÔÝŠÌ[À{˜÷ëHŸ'ŒÒ c2ÒtZqPhƃj<æfEå8ØŽõL¨âªîÀ îÙ!‡<²È<.iÁ-}E6Ø'‡šÑSruB•kÆiMp0Cr-H¯ ö~Æ‹yH™ý¾ràŽ3˜êÀ·HÑvmÖDÅß»²-ücßöììúÎï÷ÞðÕ=ž»ËkÿÙu¨}{îq¿¿õÁç^ùÒNwwr|OÞõì×®¾ïû/¸€oÈ [à± 8Á£VtÃ3þáÚ„P|X ‡ÏXãá1 3Jäýˆ$YÑ&+"eF­ðg\Ë‚{Y‘1;ã±5|óûò0€Ïk x o2Omè2´qÍ~ÄIO­ï©Îö8›á¾îìs þ¹M?·ò­Å>7ûàPÀC ¾ƒ<\Á¡&¸ƒ n@Ì  ªXa 0Ã7´CSñ¡yOÿÝ\\@¥eî"ý½|›iéB-m*ßÇr}._òx*»8(ž‡ê=€ùÜÏ¡}}h)ªÜ’øU&ý¶”Ÿ–òÔ\¡yXÏŠt‘[) Bðµ&_‹òøÄµÅ¸T›–bÔmP‡ÒpÄÁ8˜Ç qP%YÁ&â±*¾ËŽn_Þ­¤Ê8Ã@Ü%?6þ=4ÀAlÁ>ðà„¾ð~‚8¬0ˆ)áÀÊ™àŽñØðŽ;Ücƒx¸È '¹NÞO ”¸â1à8èŒÖ,ÈÍqÈÙã±?´¢‡Pº š '(ÞH¯ÔðF¹Ù9“%yh}§iÄÑeN ¾ Msúóò}j߯~ht¯­ð¹U¾4Ó}»}iǯ {ßÒ÷-߆¬â~àRðÂâÑ™Ö:Õ¾—í{Ýs7\ŸÜ½cŽ·àZê®ã¾öä—®½kê¯]Ù~³¨:u‚‚ÂCZÕ, '$h/·Yf0 A¬H„ß%öñH°FlÁ­³ßôy9l‘‡îà£lÒ À²â[þeEÈx Í‚±™Q8øbFêP3–Çc}V4Ç y<Ñ? Ž “ä1KÕô~>­Ø(‡Ÿºã´„•G`Í­÷#ŽkÁz-x°ß[GmkãÌ-dzî$eèßyðßKFÖö®›EÛ:™e6øšö¢ÁéÚ9Á+(™z6CpoEûñqGýqág˜Ö`vRŠþ|b"Á¿éÖ÷a„ƒ ÿüŒd]èÿܺÂû7µ0I۵˓Ï+YßwúûòÏãDó_{ÿiá, säö7çZV¨ÚFYÿÝÿ•ºÿ+öyïãBnÿ~€ýe {drödkצffŠ94m6iö ËùÒþôÒFÕ>âEþ;Š8HñáŸ1ø}ýÇë[—W± endstream endobj 168 0 obj << /Type/Font /Subtype/Type1 /Name/F15 /FontDescriptor 167 0 R /BaseFont/KXONTQ+CMEX10 /FirstChar 33 /LastChar 196 /Widths[791.7 583.3 583.3 638.9 638.9 638.9 638.9 805.6 805.6 805.6 805.6 1277.8 1277.8 811.1 811.1 875 875 666.7 666.7 666.7 666.7 666.7 666.7 888.9 888.9 888.9 888.9 888.9 888.9 888.9 666.7 875 875 875 875 611.1 611.1 833.3 1111.1 472.2 555.6 1111.1 1511.1 1111.1 1511.1 1111.1 1511.1 1055.6 944.4 472.2 833.3 833.3 833.3 833.3 833.3 1444.4 1277.8 555.6 1111.1 1111.1 1111.1 1111.1 1111.1 944.4 1277.8 555.6 1000 1444.4 555.6 1000 1444.4 472.2 472.2 527.8 527.8 527.8 527.8 666.7 666.7 1000 1000 1000 1000 1055.6 1055.6 1055.6 777.8 666.7 666.7 450 450 450 450 777.8 777.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 458.3 458.3 416.7 416.7 472.2 472.2 472.2 472.2 583.3 583.3 0 0 472.2 472.2 333.3 555.6 577.8 577.8 597.2 597.2 736.1 736.1 527.8 527.8 583.3 583.3 583.3 583.3 750 750 750 750 1044.4 1044.4 791.7 777.8] >> endobj 169 0 obj << /Filter[/FlateDecode] /Length 1890 >> stream xÚµXKã6¾ï¯ÐQFÚñ!R 0‡$“Éf»sÈä ‘ÙÝl©#ÉÝ;Ù?¿U,R’-ÙÈÅæ£X¬¿ªR’±,Kÿ÷CòíîÍû<á³<ÙÝ'Y²•SÉîÝ/éw»õq³•R¦’å,£áOe³&=•‡Í¯»½y_L‡¥6¬Àßþç7ÿÞ}ÿ3ÊM*6ù~— ï‹bZ'ÇDIΊ"Îɇä7 2E¡¥EºlšŤN¶BæLȤ:&o~<ªä]›üçR ® Hó‚Ræ}ýpê© ˜ü: ôí.™a™9£þ®áV‘¶AKÀõE‚䀞Yôã}»É³´Úä"õÖÈUzpÍÃðHãwñòQŸ˜M‹hSïYø\ þa9¥³heF¼ìy¾—ÌP¨¿sƒ«†¶ƒP7&ý¦ëÊÎÓ/8ÕàÈßÝ<9œ Jy¸A.?‚HBgéƒk\WîÐ` ¸@.kO0Émºo‰¤i‡0pnO£!l}öÆt4©Z¢®‰4/5ÉS?Šý(:ÎJÜô…®ëQtØàéÿh¿×Ö} ? íl]•ð&*™ÍÍW…jï\ÙcÊÌ®vP‡ËâfºÂÊöËžø<×îáÃÌï»öH£€YÚ·§®r”LúñÑ5´L'ÍåIžM'«ðˆ\7 }N³ÏÝAÞuà9SÌqvô½åÑ;Ë !‡î‹€ ²‡Q+…@1÷«&0XXÊ©Ùq¥FÅ×ÌmùXœ{a«¶_‰ŸÚ¾^$Ú‹V'‡û¡ ¢M?P¥Ñy-W:RƱGcV¼R5™âµš¹¸^3ë+­ˆR,ƒ²#·ó ´"à`(ŒãÂj+õ"i«3Ë4 ]-4 ‹Mt±V+¶¾€º“Èv„ Jò6欺«nl®ý?8Ýø/S×Ì ÚQ£ÏTh«Õœ@Yß@ÍêfÕÃ@Ø&¦ÜP½¯g}=¡Ü,Í€g.ZÈî>Ùö.â]¸{ïtáñîP7Îö ¸+x,™ìÜÁ”àŽx¸ƒÕîâÐzÃ!‘öCWÖ¾2ÁHp9‚ˆä‚ùEK´›R¼¼L‰°2¥Ä•W+1Ön£ ŽÍ]Ùì¯ç5i§t8æ5òš¾š×äÔ1J¢»ÇX¥Ð™•VC[Œöììíͧ.f íaq©Ä>oÜ¿£P[d!YöW?åèðè `¨® cn £ñÌšküØ…È! Ö:XØ,¶Y÷Ëž†Yu¤#ÆVkíóØ¿a[ŠåS٬ʠY–Ï£f+W ŽÃk7ßèá« ŽŸYÛ_žÅþ7ŸˆbTŒoqVGCñƒå¹N_šàͰéòÃÖd9þ,åsKž°¨\ÄÒm$›H¤™}Ðõ"> endobj 171 0 obj << /Im4 165 0 R >> endobj 164 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 170 0 R /XObject 171 0 R >> endobj 174 0 obj << /Length 1934 /Filter/FlateDecode /Name/Im5 /Type/XObject /Subtype/Form /BBox[0 0 2384 3370] /FormType 1 /Matrix[1 0 0 1 8 -48] /Resources<< /ProcSet[/PDF/Text] /ExtGState 175 0 R /Font 176 0 R >> >> stream xœíYKU7 ÞŸ_‘åE™8Îs[©BªÔ0;`.ÚŠQ ,øûý>''÷ @H•FˆǾ±ãGüœ÷.ø{âÿÇûíæYuo?n/\Ž>jMîðo¶ä5«D÷iKîMÜ_›»gO¶(©zé.V‰¾%w¿ÅÔÔ·âb t.–Ü|ŽNz«¾–œzñEÜq;arõ±áDQ¯‰pö™Jð¥–â;žÏû?¼´ ¿iÇ™Îû ¨„ÔÁ¸Ä’š×Nêî…ÜSð•Üb‡’v?øw!&â0-ú`g i‰©ê%“KõÉdL>’kˆ¾Š»–ã¸ÝÁ6qh\5P?ȆŸ}§µ"4Ãÿ’a‚â•‘„0D$˜·{øæ5¡.’j0mdJQÀDaÿHHfWRP2èŠ4Ÿ©ƒC<‚™ob¤fñ]]Ô`d’A!c¨u˜/dÊaŠ˜T¡{ÃK1=CN>™uÄ^G¨`Bs‚¦x"’’™z¼Aó¡™Vø‚V`}6Lhp`$¦C%Ê€#¾”bx@vï¨2< ô(^Á°ŠÐ÷|c T¿ÂÿtB!ÓÜ1ù2ÌY×¶!ª6_!@¡È4xMAB¯^ aH±Ñº…Áõ÷›Ä®ÄdÆBmNèç–‰x!¹ÞÆÿ;|ÜR„ÉÊB<Æsî>ìx©V^¸®l Y¨ðzTÝäsŠøa]²ÃÇM¤"œNˆâY”IpÄ“Œ(CGíu¸òéc¤¬äóíå*#3"z‘"¤w“HZï|Ó ^’.Œà¥¢<¶ê*äΙÑpi@{9ÿ˽Ï}=Yà0u%†’ÙT’ñ®-î¾êlÇA;ç¨ ®û&2 !QD)`ÊHb>« ù$.ø¸(§ôûĤª‹Ú¾'ož×WÔ¡–Q¥ÜçøÌ'1ŸVµŸMV.ðÄ„yVYõ±7¤Û~‚[c]AfÝ1• ÕÅaÁóŽã¶0"—æ‡V;³öºc ð)ÅÄ,)'‡k=èT¤ôPÐ|zÀZš«q}è¨èŸÐÂgÂ^¬ Øšê ªÆ¶*´ÂÒž‘BÙ6„RXOwRA ŸÎàræƒE¿ÃvÏODäiNzö#áì‚ “`H°ØÜé/5 kOýìT>íx+‰íÔ®Ö A±šë‚ÖDuŠíZÏÞj¨Ax­}™.DËhB™;&õ žw.„ Ý¢‡Ð‹9¿Ûº™àkÒ]ÉM_=Uè—Æ!Emnò•ÑÂ( 'ÜÙŠu°Ö&· |Sfaß\O'ÐÚN.;õOþ XAAƉCB?‹XwL”`ÿuÉ;©¯ä·<ùàt¢§D0ÁdsŠOÖ»îtDÉ„s€ö1~0Û2û¶¸`æcLœ±œ#//žwbÇ`ã »sààDÞû&Å”bØåÞ9\êaíʃÕí¢uy¿ò<çßÇ{÷ëívó ¬£»å8L¬¸d£5¦ÀÒ¼bl½½ß/?<ºý{ûív{zššñP›=¸‚^Íž Ès=ªÐF¯n¿2ÒwfradƒºšÝcô7ª9°å욤©³ß Èâ#𣂹ü(ô‹Ã¿&‘ôÚëá—³ï×ö­9¶|x|†&5®×³ëᕜ`[ÜB(µ"ј¾ÆE‚ôÃѾñÖEÿœá?Úw IÒáåÁ€€!´\O÷Fú±•¯Ö» äô7eB?ÂYo¦¯ô[XìvÌÇè@:b–Ìn3dKô¦ý¸Ár’]⊫™K`áïƒ7G÷æÙ„›_>:3âÍpAîQ.Üqqè‹SÜÛ qÃFRÂCBì)š,µ=L‹Ù¦(匽ĄVØÞ±¨°PÆši42¢1r5„Ö¡™ 6¸Ðx«ah§ˆc4l€SóÛµK9¬ãA÷n·à†–¡ÙØ&¼Î„Þ‚­ G„q¯d×[C¦Ò*cêë‰+A–@Lú©»'n¹8–œxGP¬Œí¹–:÷²–U¯Å hÁ=™zU;¿ÑtPR†Ú#-½³´ôÓÈßmä¹[ÿ– ª_Jí‚è‰É•6Áx É»‹‚ö†@&áp˜zKêÎ*Ôd,èiÖÙS»Al-%muʸéxU¡6Î(#hÇÚgÒ(ÿ\Qp gÛw(^=Ìr%…-o ¸ò6‚ÉvÓy¬Ç’+XðâR^›Ú27£p ›ZÆV'Š­( †mËs5Zk"´ dLc÷ÌUoîc+¦½ÛýJŽ=bÆÎ@ ï`Ãc:–{ ü´ñ÷ÙøGňõUÊ?Y„6ª‰ þ1¨ö½NX'2ZB46ж`:ðÒ‘3ÐÌVÐ.‡¸€é­Û¸-õÞh´Q–xÝ@>ÝþBT[ endstream endobj 175 0 obj << /R7 177 0 R >> endobj 176 0 obj << /R9 178 0 R /R11 179 0 R /R13 180 0 R >> endobj 177 0 obj << /Type/ExtGState /SA true >> endobj 178 0 obj << /BaseFont/MEPQHY+Myriad-Roman /FontDescriptor 181 0 R /Type/Font /FirstChar 13 /LastChar 13 /Widths[212] /Encoding/WinAnsiEncoding /Subtype/Type1 >> endobj 179 0 obj << /BaseFont/CRDXEG+Symbol /FontDescriptor 182 0 R /Type/Font /FirstChar 13 /LastChar 112 /Widths[250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 549 0 549 0 278 0 0 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 631 0 0 0 0 0 0 0 0 0 0 0 0 0 0 549] /Encoding 183 0 R /Subtype/Type1 >> endobj 180 0 obj << /BaseFont/YDPQNJ+Times-Italic /FontDescriptor 184 0 R /Type/Font /FirstChar 13 /LastChar 115 /Widths[250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 333 333 0 0 0 0 0 278 0 0 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 0 444 500 0 278 0 0 0 0 0 0 0 0 500 0 0 0 389] /Encoding/WinAnsiEncoding /Subtype/Type1 >> endobj 183 0 obj << /Type/Encoding /BaseEncoding/WinAnsiEncoding /Differences[45/minus 97/alpha 112/pi] >> endobj 181 0 obj << /Type/FontDescriptor /FontName/MEPQHY+Myriad-Roman /FontBBox[0 0 1000 1000] /Flags 5 /Ascent 0 /CapHeight 0 /Descent 0 /ItalicAngle 0 /StemV 0 /AvgWidth 212 /MaxWidth 212 /MissingWidth 212 /CharSet() /FontFile3 185 0 R >> endobj 182 0 obj << /Type/FontDescriptor /FontName/CRDXEG+Symbol /FontBBox[0 -29 622 685] /Flags 4 /Ascent 685 /CapHeight 685 /Descent -29 /ItalicAngle 0 /StemV 93 /MissingWidth 250 /CharSet(/minus/alpha/plus/pi/slash/two) /FontFile3 186 0 R >> endobj 184 0 obj << /Type/FontDescriptor /FontName/YDPQNJ+Times-Italic /FontBBox[-147 -207 527 683] /Flags 4 /Ascent 683 /CapHeight 683 /Descent -207 /ItalicAngle 0 /StemV 79 /MissingWidth 250 /CharSet(/c/o/d/f/s/a/parenright/slash/two/parenleft) /FontFile3 187 0 R >> endobj 185 0 obj << /Subtype/Type1C /Filter/FlateDecode /Length 271 >> stream xœcd`ab`ddäõ­,ÊLLÑ ÊÏMÌ Èþfü!ÃôC–Y–a 3ï¥ï3…¾Oü>ÿ{Ÿ3#ãªm{œó €ºÒ3J4’5 --t@¤‰‚cJ~RªBpeqIjn±‚g^r~QA~QbIjŠž‚‚cNŽBHW±BPjqjQPb»Bf±B¢BIQbJjnbQ¶B~“r+€rE©é™@Ù" HfžBrjQI"Î*-Ê,NÉL.ÉÌÏ+†ö„Í@²|Ïàk˜öÓlÚïØéßõ¦í™Æö}æ„?i ¦°£sÀ„9Ïq=æ–ãbc‰°çᔫ’çá:7‘‡çq?/þÈv§ endstream endobj 186 0 obj << /Subtype/Type1C /Filter/FlateDecode /Length 732 >> stream xœ%]HSq†ÿgsg3s©cäHs”AæGYˆIxaRôE –Ídº©ÃãÎܿ܇s…M=*6m³mêæ¦Î@- ³‹œà]¨ÝDx£TzU7¿3ŽAj7/ïÅËób(އ0 –YšjHâ0f²§06ǦñimŒ+¤#þ8«K‡Épã'¡8 SÔÔkJIE¯©o0ÊÏ×fÉó‹®ä²ðˆE‡,ºtÄBy‰Š¬QËË,£ºÉ ¿­­%õ:R¯4ªUyò‚ÍäzµA­7”ÿ…”„®A©Ó „ðì‹—s•:„Ž£$$A!¬ëEÂy‡. RäE³ÉãÁ€˜] šÀÅ€Žòf§¥œƒ£Êâ\Qpå(pÅ03`ÂhpóßZ¤PËTã\Ýߘí¦?³y­±…Áöw>KBº´}PuÏÜ­¢e…Ã#Püœþ#‚Ä’õ3WrŸpÙM§ƒNfezs—–ÉW–gfÍàò¸"ƒM(=ŠyØ ßv)Œîqq,ÁòŠøÄfÍu´¦¼ùÅVNJ¬‹µIïr7=¸dÖ¹`mŽçÕÅÒý ƒ0•Vê*¨ëm\Üø­É§ãš°aÎúQûÞ³äû6Ål¦DÅÄÄqÔÊt…˜ó|¡o¬-Õ‚÷´÷6šLÑ> stream xœ-R LSW¾·//0 rW¡{/Ë"0EÔN·9•E'Êcƒ¥­XVh¹-”§BZ xÊCØŽ‚e<N‡C¦‹‰QC"Š1Q§ºG¶%Ë̻Ò]Ør’/'þï;ßÿý‡$$"‚$ÉÀ C¡Þ›lÕ ÚÅBNò"~¥Ga-Þ÷¾t%AôŸ ‹ü—ƒ;šƒ 1Iz/Œ%™Ìåœ!ÿ¨•ÖÆ°ë6®YÄø%L\ÄÄuK¨^Âxv›Î”§gÓË-V}¡…M.Òš8³‰ÓXõºµ,»ÍhdÓÕ,lšÞ¢çJ…ê’?Ö`a5¬•Óèô…îcÖt„ýÐPd²–›õ±»ôkÛNVS¤‹3q¬A [Jò,AÃô–ÿþpéN„¿Ö¤;bÑÄÄmˆ&ˆˆýÄb'‘Al'ü‰`‚&üˆ!BB¤íä&rL¤M‰þ‡‰Íâ1h’óûkFyÆC<î¹þ|¥È×ÊÛ‡¨”Âñ‡¿ÎÀXáîrVUTÕ¡bÆÚYíõv»û¹ÉxU8Gbåîö_ß=òªä|C‡_ë!? ½OÅpŸß«À«„Æ8*a<åÄÂJH† ;ÆÇ˜b¥Š‰îœì»X‹e Go€ÿ È #țΜà—÷@¶Ëm é|{ç¡t Ä_P¤ ®¿€$WQŽÇà´5 =Ó÷š,›Õ†¨Z{Kç9ä·\†íŒó´”.ɬÉtd:©Šeßžhq"+ªvpvS.V‡56Öw;†Ó‘à-x^}À“ü„¡K'Ñu×=}Òf?ZoEVª´•»8|ûêÝË*9 b­‡4eÝ$Žšãß~$áYżL½`×cù¤<îhm=Û†‹AÞâöêùHšulºû@~fÀ”5I1!k›€Õ~¦Þ^S‹P SÓlêqwuuUŽ'áƒ8qS±*N&ç•5žFPÁz¬ë röÊ\ï¹PúÐ(¬RÐ.VKÏÉèCg›Oé§]ý—ʯÿäò{,ÿÝb® µu«èÏn£ó©§Ó(zDhvu#­–ÑÃvg]m…@*´¹²Ã#«ß1n€Õ(™)¨ÌJß\ùòkÇÒ†¯eMñòî[ˆë)dÎ:]ÂÛ¼DŠìW…({]sËàKø¹éSÆÑ$¥S µ9ÒFYC_Ao.¢°Rø5ûpTQÓ†?zø&šxr!éÊg‰t*»üÅèý›ª…€6Åü<˜ÁOEö÷•eÅÄ`c¤À1¸§9<ó­·‘`ž÷ã] ˆ†Àf©V˜áõ$ð+s†õfôD#©+ñkyXžCSSrS›J}[mänþ€îøÖ*äÿl•ÎÊx¹o«TÍñçgI^ôLÌ¿ Œ¢"¿Òœ,XO;-ƒ áC°wÝU>HÉáÐz¼î#•ÇÑáýrf)^Ù·· >³8†ÁG°UZ°l¤‹Žß°ØBÆfBé\Pã$E¡Ð]tË—@BÑž ˆ˜úfb’¢suâÝ8î=¼áD%Úƒðªßq%/wû"]ØÙÇ[dàiZ°žZVÝá{«—ž ¢ ³u¡ê¤ßÿ\Aü 7tQ endstream endobj 188 0 obj << /Length 14747 /Filter/FlateDecode /Name/Im6 /Type/XObject /Subtype/Form /BBox[0 0 2384 3370] /FormType 1 /Matrix[1 0 0 1 -208 -298] /Resources<< /ProcSet[/PDF] /ExtGState 189 0 R >> >> stream xœ}Kr-9¬Ü\«Ð äâŸ\Goàç%(¢_;BØxûf"¬*Ö9·;zpÐ)€_@à_1ŽÃçÿ®À÷ï‡á>ÿÏ}„Ïÿõ1Jø ý3´¾ÊøüˆøULüås”üu´N8¦ —¯Ò†¯Ü>¿çí«ðÊ_£~†ãH_Ç„ó„cžpË_m~‘cùêóƒrÿÊó‡©_i|†8ÿ“cš¶4ÿ­³ cÁó‹«µÒ‘{špèhu(i‹”ËW°/JžÍÎÀ䯞>6L|`ÎßÔûoŠ0ñ«7`ò8¾´.Ì¿t«…ù‹8»›úÙzÁ³-g†îçcÿÍĄԾj\ŒzÕÜ3Æf›¦oέÅã«d›8aFI_søçð~¥üC_-¬v9|¶+‚wªh…fÂ1>Sñ˜}Ƹk*ã1û­o˜ì1ÿ2æø4´{Ì!pÏs¦l±Ô6 µ”¾zµvO U˜1yb®«‰˜#LÌ\hMs¼‚~“šu¶¡íÀÌU>mŽ~jÂd,¿6—Y#ëÜì ósmÀ¾?NÌ\EC_Ø7,Kc¨`)°å‡5”G3¹fg¨vÂ)ûåLýšÿžS6ùåö¹O!Vm›k+Îñm½ú˜c€Y “F˜+&§Zk†¶9¼Î*ç+6ýµÊ\D“ú¤9¬¥Íާɵ£ÁlÇ\uCí°mpoØÏuñL"M}2Þ~óóñ×cÓýþ«9¿ûÄZøc°?6Ì«˜tÈÝ¿Ž& æÆ, SøÉä@8ÎCð¢øýàá$ì7sw皀™Ó˜³ÿä ³äIΔtUŒMFL*ýó$‘‡s½ð¸Q,ØâZѹ:'$- •… þÕ@wKǰÜMÞÎÞ¨&-A5:ç Ñè Q­‰¿âƒÖÕþUƒs.˜2“M6?ƒN²„RMg{a"àÑæÙ³¸ÚˆµöŵRþ¶snйf±p%.aƒ{"ÉÞÉõÊÃûfÌõ_W;‰úü8;Wœ4À´±0@̶§O3ÈöI–`ʤiÇäÎE|­©Sº†B¾êÛÈkMµyü“Ä×Àhb„5Øz ’ÎõÂCí¶í1:$¶¸b•fÜÕ¹¢­Ù—XC'&8¹ÔOƒqpçãÐ47N,HŠí‰Øb ä£aBÅvÎlžŠDUϺ­0ÃDg<вpØÜ­!“¬·!¢‹ñ…|ã–Í<¶I2°Å¢5ÌB@™rº—nÛ4£i0ÄIžÁHÎÕy¨Ù˜üçFs¦ã@ÅíadÇtkXû*db]›ªÏáp Í*¦W.b[íŒHøƒøÚxA»ÐìSK¦ô…¢j.Ô¼ gîÙÁáš4cs¶.>o)øÇ ßn’,cDçÒ…‰É1;ÊX"C²å©9¤*XD5µ76>Qéšœ/4‡<ÏêÁÞI·¦ÇûMúÊXÀØ)µG'|ˆêÜß;ñ…V“§¶W‡m:kráˆ_wbJ^0š§b Ÿ²ÕÈœèêð…Æ §ƒ}ž°ÍʤZš³½ðñÅŠù€®N=k„{€ì³ßdnËìwE`¢IâC Ú”Õ2/ÃMnO¢19ã _¬ÒŽäŒ‹„„¸ÝÈ‘€ž˜ZÏ“È`ö•`IR¸ÄøÆÆW¦Úq·5‰‹"SÔ/¡ÂØ‘W¤žSšÏ«Æ:cVØ‚îœ/||ibXê: 'gR™r­9#?R_‹]„&Fgá„;õS’/_‰4#ïIw.¾:q¥ŠøƒØâH*S®¥Å¥ O †`ê¬]|m1µD…×hû"@YøÞÙˆ/Ί2åo[Œ¡;•)Ö±©v–©²Ž…*=QÆM%öðÕº_øh™ð“ó¿Z± :åZ[|쌛ŸŸÊ»çTd£8£iÃO)ª¤ šÄøÆFŒ³‘˜’ÞùBÄ×)Õ²de#è¤ÚÔ©·šÅjÂ6èÊûá°£ï{ç!¦8,êaRþW«u«rúM³eŒ´½B¹ÎÛ¼Ù«&­¥~H5ÓI@µ6g|áãûd€jgòX>⽘¶8céÔ©Ëš)´3ÕP¹ä& •T“8ßøˆ3dp28,Î8D+¤8³'Àä…9ì«j 8 ÐE¢§ÙÑ ªÇâ|á#Θ¨ Û8W[™5­û`1kŠa‰±¯ Ø„!±êTi£$ Ö'¨¶ÅùÂÇ÷ ¾.΋¤òF%>]˜¾0X¾5gÉH*í5G-8; Œj¦Úsçã{3DÍUœÑe“¿ö‹ñ ‡!®*¤Q‘lµõ€b·£× ­“b÷‘_­`êA!ˆùDßjà¹ÛMVVCªÉ“-%`¼]…45Ë#áÔɲ«Y·FˆûZm™þЍ5«ë0jf×Á<ì´<¢·Ë&åú‹" [̵¹ÂçŠvTªT§#ÚQ9؆aw+ÕŸMýß`Á·ÌI7J\Ê(]& È~Ñù 3H^(\¸Ú TÃR 1ÕšQmvcPöu$l:x‹‚!†ë:8»†~²:‚s4LøU»û‘GÙ é:·fýÑŒj—95£ßªL¸FÆz;1uapl8ÅØú?Ï_3\â.UI5.Æ>â å³áh\œ!Õ[«.š*ÍüÀ¤´0à„¸“À6Oଷ¤Öì’øýàÃ52Aœ‹T qÍCÓzq¹T3G'òb m¯u) •'gëÒ 'QÕŠY<´,!gZ·+®ÐÊnÙy4aZqŒYªG¤:c³6ÁƒÚGÍ4lãì]ëôÂFŒ1# ×ç‹êGt½µÒsŒÄ“²¯ÒNÙ†NEÀ¤¢ó=¹øk PÝ>Hñz°… .eÃ,DÆGƒªË„£5µÛÚ18‘h×.»±cskà6´cmvÜ3V‡¡AÆØøöþBFü¤(•%uî<|‡ ¥qa+¯t— q¥}˜²ØûŠ–.ƒÑÿyðš;á.ªqq¾ðÑÁì)­]D;gŸÇlvÆ4@ø&2kÏÄHÁ­4öyîºZó·ãV¥Mtc#Æ@d;3Ä­îóR›FÄQ­Ø3/(•¦Z¸ L‹œI³.¶'qÅ­¤Ã£ÝË;H/yí£fÒ˜¶†½ãÊȧ|‡ BýïUT£3¾ðÑdÙâ+c,Å´—ŽæŒmýBúEÇØ ®‘êym$Råf¨T'A4h†olÄØF fžêŒqNvØ’‚ó±ÜLIw ×SxdN"2&U³]‚¦Ÿp7.¾:ñ›Ó˜Tyéè=øe¿Fûa^ê ƒß´¡c†ÍÞúIµ,Î>¾hm´xd÷ °ƒ4[q¶'_%Ö\|€yp@ð‰E.Â,r2¦¦UÆ/äâ1˜sw¦×%R–ASƒ†•µ_ÛÁ1&. .¤vp€¦2kö.À¤µžo\®K†j£øbi ÛÖÇgk£X+M‰€í²:5ÚÝhtÆ6bŒŸÀuÉåì3wzC'_ËÀ„î˜h¿‘C0È6Ù›YcjÎød£¶ã§cJäê|m:§P‹ ŽÃ$Çû(Ó> -벑MضY~k¸±_˜‰ÆÔDå#Ä(aÅuè6ó³ã˜SÁbl gð_À8×Œê ³¸ð¹ÎÖîŠÅ0!ÔåXþœ‚B8<;:…<¨ÍâbPD2:Û Ÿ=#Ñ\Ÿå¨Å#DüElæ¸Æ~sЖŠ¿8(¨ ΤªcøÎGœZª\”5„|ÄàçG3G1 O†ÄFĉ3a@,’2bݘˆÂ–Òô«A5&ïü-1Ô$·³ÀSÆQøfÎï WÚ…éÚ7ª’w>>fè¢Ñ9WðI]‘]àlQ/©»Î×ÌÒ;1MB+ÙHåK-€”ý¢tç"¾CíÊ*¾\à»NÎñ9† C³Á Ü0؉g|a#¶~á†"_;w&¢º?bbZ¦, ZR,DÂ@@I’$q‹Ýl¿w&×®ÀÊPmÃdÕânþfwmbºe¬ë®ÁF…öÀ¶6IõûÁÇi€j3§Ú/ù"¯Q5û߆ Œ íï6¡M!À'ÍïD&á”…˜…ÈS1ñÌOs"›B¢B~Šk\sÊ,ö&× ðê7åþ› PZñE?‘Q ƒATÚ÷öÙoè GÄRSä‹Ù‰IþÆ0•‹?8“o± ø*¤”…aâE-^‡‰Q®Â+n·¡D£Ý“Ža㦪íÛ_b0Ü ø ,hŒù©Nvèipw"ÂX˜ÔçǻѦ0ü&'lã…¬e@ó$0iy€-@!×µ¯d„°¹¢Wa]?#zt2û ópŒÍç鯽Óù!›,š‰EÙ¢ÒjwçTa¬J]®T›ÐÓ#{§#Œ…„PåÑ|¢p5¹\ñYÏ_1 ­.vŒááWòÒ‹ÿFfú‰qš½3j¦½ !LUÌK;ƒº5’/~ÝÂ0’ºœW ŠQÛïD(±¼’W¼Ö§…ƒ´å„Âí!0«>ñ(ÓEárÚìýê4Í狇§_ÔâC–YgbûªúZ¾Óñ³Å¾*X¨Š>2?D<.WF6?ÙÝÿA¿æ“ŽóÆìU6ˆÙp¯«<´gN¿¥¾:Ú :~ŽYtHZ»‚¿iÅ :@x¬D7NÉø‚€O?O~ס¦ ']1¯mmü&õ„n["ZJá[aÐ_N98m •{Òñ“±Ó»å!ßJ^Þ½*̱\™YÞÅ–_йf…Y±JxÒ–dx4o ‹—]–j[½¸ÑÆBZZuw Õ wÐݸŒ7ê‡÷¢ ,iumÈËAˆ`Œ°ala!rmQ0{nÏ—^èøIh¯o,@I”íš4:uÔP¨%[\CwÄ¡ò+2~æV†OÈÆ££1 ’_5Ðc?1y±Jú*¼¢s9t«yh<4'0äÀM=¼åsöÁ¼¶áX Ñ•Œæ÷G<Äp•n¿6—WÉ£+§ßœ­»Pñóµ*ÚaÑÅŒx±WaÊ¢œõUÌ/èø[Í0<†Å"ErðÈ<Q€q‘íöI]áR7"ÂE*t§Úäî_AeŽðÍ'Ř5ÅÈd"/q…â¬5”, zDzrõî(p!­ sùË[­c¦Æ<ßýÿî™*ÄÔŶˆhJ/ØHê]b~% çsELÈõ°9üÝ3EDZ|mEBV½ââ²d[ð½XiެÍ]DŒÆ­¸‚VÂ΋¾³…’„[x3DÚºsܹhMXhÆ”I%¹;Gmí+m°Åfô$Ó²=ךpöà=¸¦1ýtR•L¿óѨXÒ”Y2oøüŒcùìm)(o\29\¡­¸£ Ý#Èuœ>ß 5 ƒ6š‡ªT3·LÌXñzæ?䥒ƒûˆ·WéF1Œl¼…rk´%®\„€²ÖŽêËk¸ï†:YÃÛaQ/æ@´×bÇZËÅzn˜ÅÔüÛG]BãÆC¿ A¯Î–kÒ1]þk,b{fV¯pC«|ˆ…¡£ÁaEv.ŠfÙ“7ÉB<€a3ûaÍ(/&ŒQÄ5+þ íʶƒZ¬jïLzÂ'®y=ÊZ>f¼áeç¡ñ²/RôKB¥ÿ¨%Þ]Vˆ‚ÁÝ€³¦%S=ÅÕb;Òòê6½G¬å­IÜéã¸.á-Gº3äÌo™—*“–v‚3.#Ævm6¢)¿`ãÇ̇¾LÓ«¼ƒ·âάkdŽØaÜ?ÙDaisw.®0Œ6$Éf7¶ù/Ø‚]!ˆÑG\Nv¶‚ÅÕžtžšÞ‡kƒ +ø«2èæôWÚJý… üèÔ2O*BضkÕ½ýepiöåÀâ+7ÔE7ë+·JÜè¸ÚÙó³ÛH}¬¸ú\‰‹²Ms_f‰;al'à­@tÊöJvô%ã´F»xY}UÚ :´Ä8ÅÃ×C±ãðÿ%bd/m|ÚÑsYëíFG˜Æ`—qxF¤åz,Ä8hqW5áIÃUY„±,M¯Ý§@žn6vã4õ4†ŒDÐ'Wuà Ë ®˜+„UøL%zóOKO³7ÒÚ :Òó¡®Rî7áÞ¢,Vݵ]ú˜ì«\Ÿd„€Öˆy/áÂj ŒX¾­$DY˜¨â *®Fh躢à%Ä>è8É0®c½¨œ˜bña)¨7:Òe£0Æ yŠ wÈËf¬`xuDç7g„áIDˆc!‹œ·Q—¡.€ºì ú"¾Ê¯èc$ˆvÊ×P©AŸ¯èaêâ•ôU|E‡êƒ$Ò H‚ìAèAs]ˆ¼øè›ãAB ŒEøôêæ^¨ +p aA‹†‰Ntt†Mø¢º‘Æ–ø0u@„[`à€& ˆ¾â1*£>F^W‰azeƒ^2Ðnbº_j.×)Ы¢¯Ò+:®seÆ(¸>Üé×Ç;'cnï‰(‹U×G¡¿ s*]ƒà\g€D\Q²Í¢ ã!~Ûx,EèFÇvº×^%¾y&Ç™'‚]CcÇt5„ Ý­¨”cíÁ|…ÂqƒÃ‚¿õE&†»>ÉÚyÀðæHO+àî·ÍXyŒŠ‡Ì“ô…ñÃŒ7êùJö>§÷刽SO ™0ÖÁþ0—ˆ%2Èx0¢5& ÙÞÝl‚øªª )€Š8> ©®ºÿZ÷³.µ+æë¶¯©l¢$Ò%º9W«žmAÀF—M„ K*¬\‡]ªcæÔLgJàÄ—Cxdga_`t˜ªEe©¨"µV¨ò”ÐB·-Ÿ* C ÌæçÉq" ”ÒÈOhØVÝeÉ0‰Ê›¸9Õd¯ä;bÆãêçèY–ÔÄ|8%† šw1”ƒü5Rhteæ{Ÿ`‘o‡"\0TeÁÈŠtdNëQ Ô)\§ Ÿ®%7w,DdË”ˆ¬N¹ÏÇøæ®t} Q}Ò/‚k&½ªŒ×†?é‹ÂL+„'$>™LJ‘ÁHgk…ù…ý£èé£ÿ‚ÏÖAÁ|o ^!ÅŽAΥĞ…B oûÍb]Ö›«@Zç/øÞ¤šËkѳX, 7:`sö”+Àäú91z4ãŸgwñêé,aû¢s=åÓ \)ÔrËáé­F/'…¤–I}6§a¥zzÌ ÎåiŸ¼/¤¸kzrš³žŸ¨Q‘ÈÙŽ˜Ïa±'À‰^RЋɔ‡­è Ó©Bò%¬ÿbÐ €ô=ÔÛjÌ[c"¾!»y;t*„18· ƒЍ«>2GÁS("ã<‚2`À•+HŒº`®¹£Í­µ~AçÜ}ƒ3EÝÂðÙIa‡=»Ýa¿ŸÅƒ7IÁö2ç/ø~ ¢ÛŠoð×ÎOómÖ›àÐ/Ü"ƒò´FN’ùX9ºšUsïã¬T÷Y;öyDXväà5Þ—È%‹}z¦ûŽY%°šÆí¡Å£4fw\î H'†™`ŒÀxGåE<1I Ü\ü¾ilÁç¸`ßVãþ‹Ô7¸^¿@šŒBï’‡ÃE÷i™Æ’ó T†­ÆîæÁRP”g(´7»GZùE†\Gc=·ÔE ofH‘·Mø‰bqL6wJT>QªÀ^© –5³DÙ»£Ú•q;`@'FVÑí'ØÛC›D$*?žx8x6⊉—ÀU^î0uFè,f’ŽIc3Õ“0­ñÌ=Ñ2ùÖÌb{ûÆ=©sz|µàç8¬2–N'½`ô{aüÝÈö ¿ô§âú„sqãlÖ‘½ C&ÒJ‡)ïMéß¾8Ý„9ä*:t˜º¤CˆšÑ<5Ž=É÷§ÀÙÝžz¥zYÈXsãI;À˜Ï“iÚš ö|à{¯Ýffƒ»fsÍþ ÇVž¨”\ðybÿE¥Rk’­Q‘•‰g»ïÔ§ÚVôþcÀ¥„Òÿð¾#³ZX_ÒÏâ],}­9‹°W$ÇPθM±¶Eº©ÞwÍ|Sw]r×5ŸÚ讯îúìSãÝUâ]c~êÔ…¯2j+|JN#›Á|ÕFuÌB”æ,*/éY‰\¥Ü¦âû:9ÍóÚ>¦+¥ƒïÚèÁ×"ìðŒ+ä>JqÙòÎ;gßVï7žoÍ}ë>6÷¾ýwñð'!Óå©À=ÉbEFÜÉÅßÑÝåþpÊã*A±ØCéàªÔ—ÖVæibÌqW$cãË+‘²IÂßWÍ~JKì»øòÓ„¢gú‡…ÝÜ%KiWø”,'_C²ôt…‡®ÉwYóóñZ½VOqv ¼M^Ï÷ÞÑuÔN·¬Wœ¡X~ó¸5Š73*pŽ·Ñü~uÒìçÕ~žmÇÝ~>NËûyúýhôf`è|H]£Ç)Ä––Z«y2ç]öúX˜Q&>KL¥òֵŕOϰˆ,³ :”ÿzPƒíJ³Ú¹y»MÊ;[E@Rd&‰fÏJ”僩¥­ m}ቪ›‰|ÃxÚ¨ßà«ÃšñÙXµ¦›à‘“­É¬5gaäE’„{¸j &±Ì´Uà¥&$š2ë2 Zz¥Þ•(…kûðˆQ<´°ˆ½Áìb©[ü¶môÀÒøJ¡Ä²B±ì b’´ó-xü`lã¿Ô S‹»û®²¢`0)Œ›Ë܈´ãë¡0B.´li|¡Ø¥ì8Ã3¹šNX˜~5$u hC«}uë³`9m-šMf0¯QÓc•Û¨$UH±n£Ëè¿ 7eî9ôÐ/æn¬³9ñ)Z„AU¨Ñf¿¢é ‘.á½4Ï#¿šÐ,Üòlb3ÉêÁK§šg¾ÿÂU1N"ñâä,¦8¤ð¼r³™ÐÛiQc7¼úyb8‹‚“ó8GÒ[ácí­ô¹¸MÖcö°Âb’}¡ëõ=rךp!ƺ˜ýªð xN|Š„ Q|_‡×2¦¥(wRN…WB¥N9á®ÆÂ´À›“ShÌ!¾xpBð…·>üÂ[Ù:w½÷£¹X?1~Hn¿1 çbQ T–æ‘¿¶#Ȇè-Å]°]zâðÙ×…Ñh8-çqާ·ÂGÜ[¹fä6gßY4ÉJËÎf¦>¿bJûÊu0è µ‰”ìÑ’ZÙCÒ‘Á~æ>1AQ Ûo4GýBdž¬Ç… ž?2›“7×M³SCS—ΤŽ,xuua4‹‚ËyœÃé­ðW#}>¶û~Ì!ú¹&+º8[áf`Z,2³r\‘#Uo¦bKW7>;ê §àC%6˜ÜDlÄmµqÍ;q™QG¬ ½ýÂ4p/™lœC` ô¥ Êø²,RoõAàÙI!|üs%1¸Œ#[°Z \óp›¨ï}æî&‹ÍgÂñ¦A›çqÓ±wü…ft׺ÕSûº«g»ööTïvýoSïúã÷Çî”FyónžÄ§¯ñÄTi¥ÛoL;º{,wæ6ຽ_´rˆË‡Þ¾ëõ7Íßzw³êþ|<;›Qøf5~¶âçc7~ý~¼0íæ³›M‡ÃåÖ¢Óø~¯Ùï=·›Ñ÷£?û!ôûñò˜Ú±7…ûQù8K·Ãv;‹ÿtž»½z7zï6ñ×Fóͬ¾›Ý/†ùïÇÐüìjÅï«v=4ÍþûñÞT¾YÒ¦v·Åo¦ú?Ùû—¶³«L›JõTºjÙ®¶½WìvÕoW ©Ý|?ÆÆÄéücL­óù?f^gé#ÉãŒ_NítŽ”èÍE^ÕÁÁé•Ï ˜úqðz²à‹Š LÏú‚†.ŠÎa ÉGW[U*S ‘tÒê4¹žs ùõþ  ¦šÆÐáH*Kèúx3PÅR›ª¡¦µÅ³ >õ>Çh,Õâ±S¹l¸!fÑJ{=‘†òH0ç´`õµn¿(yÍè>Ãß7#Ö¦ý~¼Ð×v}î­Æ·tÂ]g|j•›Þ¹©¥ÿF·å›ÇL˜ )Á”|i¦0ª6àðX‰v|œ¼ÞM–]Ýaé/âIaÁ=_µÂ)¬VÞûqëÙ©£ÿ³¿ßž·…Ç}b¿qjäšÝ]Ï xw»=·K:Ìü¸Hø…ÙY¤ªËìjD’†éÍô{¾wÃáË-^„ðrçPÎFØSd? “âtýø|"yžÏ‘¦èóOwý|¾Mïv›Aèi1ºwã÷ù7Çõ}Åü~¼XSÛš{7£§ôy°MÀ=EàCHîBô­˜u9¼‹é‡ ßEýã(¸ “%C×|†À ·‰ÀMB¾¡ÞÍ]¿Ó» ßý?ŸûÝöï»ýíûù± ˜‡ÚDÎé#˃š=e9ƒžBÛGTý”j¶³^>Ô…¡ÕjQhŒt_wÚáÊz­oÚµé×¾œNütóï‘H‚g¬Á°+¼ fð`‡=âE´ÄO±Å[¼õñEV>œþÏ0=Œ` 4øçsò¾ ~?^,”m½›¬%0v‘sGOiµË³]Þ½—ˆ.3w™ºíæ}³o‚`»$yHš§,Ú¥ÕSš½“w§D¼ĶLÝ¥î&•ÿY°ï»î¾%_l×µ•·}þ» ØåÈ&iþ¢{‚±(YB±Yn»Òèß2ÏS­Š¶pøŒÏF…¦R¸Î¾-ÚÂ`¼–‹VLã5<ÎÄßKþ)Å3úäX®–”nW.]±(«Ðn®-M|ò²zâð%îÆ1t¨<œFËyÔå!óVhV+µŒW?ÛaÅ·Ø/|´œÂ}Îî§ä ó{ ¸Yá2{8ÍÛ€›’³‡ì<ƒz¶°Ÿ=,èß­e"çÛ\îå"²|i§cì æe`•6÷¡=ÖdÐ}·~‘"݆NaÁç„ ã­p ÞÊ{?n=;ƒ¤þM Õ޵…k=º!_{HØÛ ±V¶‡=ÓöеGhÛÛ@ªêÙ ž¡Up¬=\kèúÇÓs[¿/V϶ºþ0o§@ÙÄÒ.¶^¶]ôí¢ñ­ð\âu¿ÛfŠƒ]\¼(»ÈÙEÒChíbí…Ø{#/¢ó&ZŸÂ÷!žwñýom7î»õý~ö¿K„§ÌØ¥ÊCêlré*ލ0#¤Àj½[*¼®_Øù;䨰Rˆ(;‡ËJjþœÅãP…£ ƒg¯ªÊÎ;¯ÃÔŠŽTYú’OPðËÇX¢>p‡Þ׉ïƒ[¶Ü,F‚<ø Nêƒåï½ô4 Æ´j?¾L´ÞÂßï/\¨ÞC’ŽÀ7Aȳȸj`Ì  GšÙ„_}ŒAŒ™Œ!5X»Õl]:6ûðìÃ÷b€÷)xÌÐ>…9¾/Ç"‰z‚edS™t²X­É-ƒ…›ÞeéÇ3Uhì ò¼Õk#‡çH,i¡# …ʘ£ëÈ|ÿ`åS9ÁÙ³fD›z|ÐÖ8¤€aaÙ¦ÊIGRîÍ¬Š–SiŽ|ç,^0aÕ Ý&Ë^‰]}Ï^-íŒkóhåC¸cXa” ¢+5dö"`J¥m4%…= sUÁ¢g³€ì”j>öva©$¤Âda™£Z: 82Ê!Ë%®Nø; €R}`Åv«ä°”8•Vf˜9Ð$‹^nE! •)èåÚ¶j´   ¹ù™ðEµ4oV¶ÛfKæ ;ªåo·Ú´œÕ* †ô„h³êª5E´YœÄ¥™ùE;è%C©tgII £ô–'BæÖâyGó9jæ:XùÇö!Ú2íék°P"W)ÄÄÑx÷ÃôXÒ–¦TÙŸ½XËÆn]uŒ›–ì¤Ò`Ë·VH¨ÓOÌ1´¥ö3ŒØXî˜6V˜IŠl†y2³+ehh–áþ°†u”†|t,ë ò+àd$‹‘dÞÓe£¸¹ÀaY:ºÌ9´5™‘ïðÔÂ9ÈûpTí´Ìä1‡’6j{Ø:+eÁ¶Ç×õEÒ#3¿ç¶›´tíÉ ‚þrÇUÉ$“¼¾Üùý(E‰lª^“äÓúE¹í/È^‹×š9X‘€9|x”®/’DŽ?éó±.C‹Ä2ƒK/$8J/ ÄÁ¡Ú¾‹BÍÚ$MõP­T4ÂfƒE9›Êy`‡&­º*]ùˆ“·ýµ³V8Û`ɹn‰A©CÍÿËš[m1†Ct­”¨a"SZKœ›8V4y?žÌ&Õ­A}–‹¹¿ìÝùØbÛ>²'ä·×¹zB~{¿»¿ï}¾Þžï/ˆoOŒ¿_4ƒúrYë%ÛhOýÛÊ`. ŒÒÁ˜uÓ¿,‘§éR±ò]ñ«q„?ÙúÒ©'$o4ußæ Ud«IÀ`•2öfØwKåôûñ‡dOž jÏ[ƒ\8‡cúç-Wt´?eÓQ¾=Ï2ö0¥Ïžñç™hK´gºåú~——¨ßìF÷ H†Ùs$Ýs(=³,=ó0íyšÞgrò\O{.¨g¶¨=ŸÔ3ßÔ»ŒTÞŠ=§Õû¬WžkÏ›µgÖÚso=ssݲw}¿Lðµç{•'ì–KÌ&òžlì‘‹ì‘­lKgöÈv¶åCûëã¿ýgûü¯ÿû%0M1ðÿ>òçÈîñŸÿ} ÓaYY™·ÔÎÅ¡S;®\èÛOþ'P‡òBDOÙß› i”éˆxR-ö,zMPpcŸo²1…%F¥D˜bÔ$!²v*»4(Led•ÓPvÀ{+¾í2i\i²ô¤ÅÚZŠoùSÍ}wteaÕò4µ®Nw°&oé^an’cð7ÊÓ΋‡×ºš‹ÊªË6³ìíø~´Œ­…&,]ÑæU\­µý[d,cbW¼´yýªê¶ê©—XµÊSÔ¼ëhÁ31;ÄZàs,#)ÆrR*õ_k^gÏ×,"þ;ÐjTAÊ‚*Õ.(ç(€i'ðWmlkK•¬+;9•u’–®y–Ÿ'âï‰J¼\´æõä±ÛR÷"µÈÄ˶a‹n4%DT)¨ÁAîg»ä1Õ¹µ…E*›ÒµTÖM’ËL.Xþ ™Ú «á/¢2OL®ŽÁR¶J-Ã?ºôé=g$åTè<|UqFÔ±PZh{âc €ö Ùj¹KY|Ïj£Øï™§»ç4Ón˜évTÑŽÉn« “<1®ªi0{°Mk´ î,Y“,E˜5šÅ÷(Þ ¦°‘ù¿«€°åÍl,UÎTNz_[;i;`ø"°IÄW(•(=“ðti½ `s Ku·Ã‚‘›ô´‚4š²÷v\…i'ïxóõleD˜Šž+ÁÖ _qgêÁÓš {è31&Ç CÂ0ÖˆTX¨ u²nøe¾ñ,—‘RÎf<åmÉü¼Àü}Ê➇J6áP‚zÜK[ù†W GA¿€ig·…Ð?½è‹éÍ`ZRMl‚Bé²›«T£ñÈ:µV ƒª4 z].RR™œá’:ÛU¨©Uš»JªV9$z±Ëå7;fÂJm^Uꯗ £01\2¡nƒóóó·V=8¤·4†Á¯ºç!¯þzR0¡³Xµ ¡A¬ªã¢ÛTäbÌùŒ•kjÐÉdĤ 60aÚNq|±X¥ÖÁÎpyÀ¶¤zvÑ™žT¡22"šW"ž«°f2I–v¯wi˜L.å0˜5ýFŠÎTR ¨+í£U ÖêïYÓÙ(ƒ¬!U°Qˆ®%²` ký$ÉGëk©ÉÄsŘQQõ–kP²$Áu­Ç*Œ)g`˜Yý®*êÂàá£Y„ñVHï nj’ïSÛ¹ÚÑU?|™ˆK¶}ϧC64T€ñû•]·ñÅHŽˆÊÆ¹v:«‡I¾&n®»¿”¯.Vüô1Ñ€dK^V}QØs 1à&xÔK¡<“ÎIÌóa—v“#}­FŒè¥çppƒ)C횈2}…]çÎÖ`FÓ·«ƒ1ÕŠH*‰¦°ê6ÿEžsÃhÆ©Óü 8KSv°¸zdµReâáb/2ÁaÉò*8º¤°~IyA?›¾Ð Û샼ŽU/c®U¬ÑÌdŸgÚPÛŒe[·ñóó7/ûVËÚk»‡zÞÈ´;šêìp¡¢w8<ܾÃå>têX•\+ˆvèá†Ò<¬/aºhÖúÀ%Ùίo + Qpc2.É&IYXFÆ[‹YY–\ eúò±*’Ààú†5+S›Y£ ¶¸J-Šâñ|÷±ùy"þ6A0ah<-½~Þ­‘ý@çÐhC®›+¦H8Ùµ¡› ýÂw×b¢¾°ÁJ|Lap%²NK˜X#¼H0>±9ì^+Þ¶>U²,0¡ì˜cévÈ7ågEà Ër‘ø¼žÊ#¯+šïvÕVE[k‡OóÑŸí#ý‚ãÁ+ª}¡Y´“«ZYû‚ËtÙF3E¬qnÌŠØ*ÙS2tã¶CºæàïêÒ®¥d¹æ3KyÁJjª÷Rpß/ZŽ˜’{ÂsË[tψ¾%LßRª¿ÆkNôŸGÒôGRõ=íú_¨ú¦2_{°u•ÄöJcok‘­je{5³g½³½"Ú³bÚ›šj^rm¯Çö®b[ú|QííQn¯÷¨(÷¶æÜªJ·W­{ÔµÛ+ß=*ãÝjçÙ·úz?/*ðmúž5ü¶*[À½êÛ_ÿããÿ/—¡u endstream endobj 189 0 obj << /R7 190 0 R >> endobj 190 0 obj << /Type/ExtGState /SA true >> endobj 191 0 obj << /Filter[/FlateDecode] /Length 317 >> stream xÚm‘ËNÃ0E÷|Å,S‰NmÏøv”¶<$$ Þ! Q¤¤U*êßc'5¥¨+g2÷^Ÿñ€@! ‚ḅ¹Ÿ­4H¹ÿ¦$Á/^³¿®ÛÉ”ˆ2Bbü|,6e³¾h&oþa¶rG3‹ŽBÆà¾»~òË—`Ò6SQ K1û{¸…ÑhI¢s©n` ]QnœÈ£N+˨tä³ÑñÞÂì¾Õ°ØÂóÿ)$\¤!œÜ€³ª«~WŽ#(ä«4÷ s‰ŠNÔË®¯‹MÕ7Ån´Tå¶-?wûdë@"ËvdLE@¤dŒBAD“–EÛN£æ3XúË¢9Gª¦Þ”ç âü9æ&Ž?=X9ü ÁùgiÁ©²/מÉqèÅÖ~lÈËxr¦„P)ö÷YYä´_w@½øÉŽŠI endstream endobj 192 0 obj << /F5 28 0 R /F8 51 0 R >> endobj 193 0 obj << /Im5 174 0 R /Im6 188 0 R >> endobj 173 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 192 0 R /XObject 193 0 R >> endobj 196 0 obj << /Filter[/FlateDecode] /Length 2408 >> stream xÚµYK“Û6¾ï¯Ðm©* !HðåT±ÙM*®rų§u…ÁC‘ HÎxþ}ºÑ >Dy’C|Æ«ñ¡ûë´ Enî7îóŸÍ›Ûïn’ E!7·w›p³‹C¡6·ïþ¼½ýhNÛ]ÇA,Rñ}Ùl£,Êzûûí/ßÝäÓà8ÍDÃnôüpûÓo0(É‚ûn~ºÝàÜOn%ÒtsÚ¨XŠ<÷õzóÑi¤6RŠ"aÒ\d‘›4j»“2J‚ßtÕ6]o‡ª7mã§Ç±éb7…IîÇ ‰£U¼3VW=è–«àçfËàqG¶FaÜl‹$hk´¥m.1Šb‘H·GÓmw 9éþØnwQH@ yд= ªÁZíÐëëgîs:×úÄBí6´f6­E©Yw.—ZE¹H=ößÃ<™ @˜íi :èG÷k_AK¦'Õ¼îçºlZ>îZKÒ’ëC?Xí ÞE‰Y¼ÙI°ÀêZ—Û]RD GœÇK8Pp šæv‡ B}o@·4pÀK˜®êžû”þ[te¯—ÒOQ’Õ½¶šØ—î÷ála¥DŸµ³ §Y<Ó ¾¸—v‘¸]˜\…28[s*­qçFAßÒ×ð Ù3l" ÚºtfçÚh_¨¢5ÍýØßM×5 î¬þcÐMÅóÚSix<ìì¨-¯w,_bº3¬EÞæu&äiñuÛ—E,ÂÑqDÄÆc&ÔTðPû'ÔÒØ£öWVg‘€–Úa~lÌ‹ÌITí ÀìÜ:PmïèÛ6ÙRÿÎãàÅm’¬×çî5ìvÌ[œÎ7ñšòrwm]{{ÏZU{4­g.£}¤ÁÃn}ü‹)q(æ³ÃÂÜаN½ÓQ°0%C¥îãØŽG÷£Rh(qH›£¶Òr§%à¥x©&…4ìÑè'^Ÿl°3#õ-ì¢BBªÞ“ÃQÅ)vª;:™æ ÏÔ J#3è‚οXF%ÂÌ-ña›=ز®5žX–oá´‡Í8ÎòàƒÝFà¸Â9³ÐËX#‘öqʦ©Ðâ‘ È‘T£}cÉm ãÆw¹eãÆˆA¯oLH€àó#Å_áŽ9‘§A D}(÷5/ ܰ6¤ ”P.0ÐNõŸA%}x…]r0ç/àðGÇk¡ô»Ó U:.&”€g´­È[!*doËó e9)@£‘Y}ļâL”JfL”x¡ßŒéN(pÌéô—sݯPL ·ý‘ZQM£ÿ¬â˜LDòbƒ| .¸Ç½-ÏGSá>qâî¨k.– ¯M‹EÓb³|DFnø¹~ýñý:ffBåÜþ |ð"— ›Dì: NM]¡æÍŸ¶`8``Ž~lç¬'‚Äw‰B É—š£p«¿ô+í)ÑÅjŽ ãð_™GÜÃy*s0`f?`,źéÿÝQé ©¦µu["´Ó©mî»+Î]ÒW÷æ\kjžwk)¦îd ‰b:·,b>û@ô³#!±u o^’)ºDÀ0óó‡ª?ÿ<žLÍÂrè!öØ ƒ6Šúò3Š(¯='‡ ~P˜?¨öº£„ ç|2bÆEÂë‹È”5˜9† ùRµtÐ’˜è¦Äq¨ïvU]vÕ§€Ð’ábáéØ÷çõ)E"õ!åõz|ŠìH­?ü€é\<9s£ß×{ÝRi@z Ø·×x#XÖs_eg8hI50üu9<öZÞ" Å™KÎ’ML\/R{±¶ Np»¾¼ 4¡Ë36—TŸ¦G!çð ?2#k`¨j,O2]±åPö<Û_Âz;PWÌ f¸qÅY<®‚“G Y,Òxz‰á¾=ÇŠãyîAZc#Õ7b§tzŸvÏŽ=GªÜûD£ci @taðæž(Nx °Ÿä•~EïPÝàA5­õãéM“slwðsƒr){ !iß—¦¡ N&”â ‡¡âв® >š{všpŒFcv•€‚œ]A›ûBÿùq_[†NivHiqÝz•ÌðIþœ¾8c<㪙ËtÒÊeãYCfÝ|ŽÄÐ÷šÿ²èÝi»VM#‚ \ ¸ºŸ ?_¼pG"ô©å³0éòz‰¯gG`Â@yv”bÂ>”ãÓy`›lñ¥†û@Ê9Vž‹ŒÆÌþžq.û(ñãÓÄûrÆJò¹q†Ñj+ t=°àÜî_L4àÆ endstream endobj 197 0 obj << /F5 28 0 R /F8 51 0 R /F4 25 0 R /F6 35 0 R /F7 39 0 R /F9 75 0 R /F10 132 0 R /F12 139 0 R >> endobj 195 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 197 0 R >> endobj 202 0 obj << /Encoding 7 0 R /Type/Font /Subtype/Type1 /Name/F16 /FontDescriptor 201 0 R /BaseFont/XMELVI+CMR6 /FirstChar 33 /LastChar 196 /Widths[351.8 611.1 1000 611.1 1000 935.2 351.8 481.5 481.5 611.1 935.2 351.8 416.7 351.8 611.1 611.1 611.1 611.1 611.1 611.1 611.1 611.1 611.1 611.1 611.1 351.8 351.8 351.8 935.2 578.7 578.7 935.2 896.3 850.9 870.4 915.7 818.5 786.1 941.7 896.3 442.6 624.1 928.7 753.7 1090.7 896.3 935.2 818.5 935.2 883.3 675.9 870.4 896.3 896.3 1220.4 896.3 896.3 740.7 351.8 611.1 351.8 611.1 351.8 351.8 611.1 675.9 546.3 675.9 546.3 384.3 611.1 675.9 351.8 384.3 643.5 351.8 1000 675.9 611.1 675.9 643.5 481.5 488 481.5 675.9 643.5 870.4 643.5 643.5 546.3 611.1 1222.2 611.1 611.1 611.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 753.7 1000 935.2 831.5 805.5 896.3 870.4 935.2 870.4 935.2 0 0 870.4 736.1 703.7 703.7 1055.5 1055.5 351.8 384.3 611.1 611.1 611.1 611.1 611.1 896.3 546.3 611.1 870.4 935.2 611.1 1077.8 1207.4 935.2 351.8 611.1] >> endobj 205 0 obj << /Encoding 136 0 R /Type/Font /Subtype/Type1 /Name/F17 /FontDescriptor 204 0 R /BaseFont/QXTRGY+CMSY6 /FirstChar 33 /LastChar 196 /Widths[1222.2 638.9 638.9 1222.2 1222.2 1222.2 963 1222.2 1222.2 768.5 768.5 1222.2 1222.2 1222.2 963 365.7 1222.2 833.3 833.3 1092.6 1092.6 0 0 703.7 703.7 833.3 638.9 898.1 898.1 963 963 768.5 989.9 813.3 678.4 961.2 671.3 879.9 746.7 1059.3 709.3 846.3 938.8 854.5 1427.2 1005.7 973 878.4 1008.3 1061.4 762 711.3 774.4 785.2 1222.7 883.7 823.9 884 833.3 833.3 833.3 833.3 833.3 768.5 768.5 574.1 574.1 574.1 574.1 638.9 638.9 509.3 509.3 379.6 638.9 638.9 768.5 638.9 379.6 1000 924.1 1027.8 541.7 833.3 833.3 963 963 574.1 574.1 574.1 768.5 963 963 963 963 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 963 379.6 963 638.9 963 638.9 963 963 963 963 0 0 963 963 963 1222.2 638.9 638.9 963 963 963 963 963 963 963 963 963 963 963 963 1222.2 1222.2 963 963 1222.2 963] >> endobj 208 0 obj << /Encoding 129 0 R /Type/Font /Subtype/Type1 /Name/F18 /FontDescriptor 207 0 R /BaseFont/PLJYLU+CMMI6 /FirstChar 33 /LastChar 196 /Widths[779.9 586.7 750.7 1021.9 639 487.8 811.6 1222.2 1222.2 1222.2 1222.2 379.6 379.6 638.9 638.9 638.9 638.9 638.9 638.9 638.9 638.9 638.9 638.9 638.9 638.9 379.6 379.6 963 638.9 963 638.9 658.7 924.1 926.6 883.7 998.3 899.8 775 952.9 999.5 547.7 681.6 1025.7 846.3 1161.6 967.1 934.1 780 966.5 922.1 756.7 731.1 838.1 729.6 1150.9 1001.4 726.4 837.7 509.3 509.3 509.3 1222.2 1222.2 518.5 674.9 547.7 559.1 642.5 589 600.7 607.7 725.7 445.6 511.6 660.9 401.6 1093.7 769.7 612.5 642.5 570.7 579.9 584.5 476.8 737.3 625 893.2 697.9 633.1 596.1 445.6 479.2 787.2 638.9 379.6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 742.6 1027.8 934.1 859.3 907.4 999.5 951.6 736.1 833.3 781.2 0 0 946 804.5 698 652 566.2 523.3 571.8 644 590.3 466.4 725.7 736.1 750 621.5 571.8 726.7 639 716.5 582.1 689.8 742.1 767.4 819.4 379.6] >> endobj 209 0 obj << /Filter[/FlateDecode] /Length 2127 >> stream xÚåZ[Û6~ß_!쓌Æ,ï¤äaÛM·-P hEL2ã‰/³²4ýõ{II”IkœLèËèÂCò\¾óCy J(-n wùOñíâëïUÁ(©X±x]Ðb.(‘Åâß/Êï¿­6³¹¢Dêo®·3nÊc½ž½\üôõ÷v˜,´!VÀnöÿúeñüW˜¤LÉQ¶x¾(píwnI´.6…ŒXÛ=¯‹ßœFÕH#m‰ánÑoëçåòÍ}‹×Ý]³<¬v[ØÃ˜r÷¯¶|½ZÏ´.MÛ\û‘±ô¾Ó%5½âDê°Ñ­„v³¹’å°cåjï¯‡ÛÆß8)nËe³wCÔ+#WWûMS·«íÍ?Oæ\qeÖ’ÝJ•½–îínÆuùvk7­_9,@˶Y‚Ø¡=‚üöÆ&0•r&¬6õMCfs)eùß™å%¨±;⺂—ëæ-Ú׬óÓWÈrå‚ j݃AàÓŭÈ/ëpóÊÛø{/Ù,WhQsMb÷Ê‚1R©à^&Ñ^9NÔlÎWå¨&ÆI•ßí6÷ ä6tЇ+býd7—0Ý)%ÁI½Rø°t+¡kñi+ö‡Õ²^¯ßϬ(Á+†³rqÛ6ail›MãíŸ^¼^/à˜nùW8å½WÙ *KJ ç]6¸\:µŠ[¢»|ñ~ƒ-šÅqqÛ¼÷~‹üÍ¡~ã¢âñºÝ…<õà€0y{]·×>F©uóã¾ ãÁ÷ö‡¦ÝÔÛC ÁŒKQf¡!|ñ0DÈÑðË»‘êßxóìŸóJj û!ñŒ›z8‰i¢lpÒ¢³o»-׫?½¢ ¸;øG08øfÿ¿£Úy½B¿,›^½B2zù=Á$B…Û¸Í©Åø´Z2Ò£~µß­‡ +"PvqŠxlRE©ÿ¼ÃˆîÚýÁuYï› ø‡®iµàA1!ÁÝízÅ¥HÕ‚›0Îý2÷«?šµ×BRÀs%‰1ÀÔV‘KKò@0¦AÎÙºD„÷«­Ý@ÌO˜¾à˜WàIn9¡2pc±„›‘Äá¶Ýonc!,§Ë¨Q¶(¢ÆA6X LÔ;töEš>IcÏàΚàÂûÄ¿H=DT1S\7Û݉QP¨€ªòþ+6DG0â CnCaˆèè(¼ÅmèéFjØ(.H®fÀ»°—+XÀHpSQÀ‹a™í­$쬹.ztÂÌâ‹Z‹ÅK˜ç]äCÑaY…º^¯®œºö!QIkÄä9•‘UOÞs)ªò¹ïný¾¨ºŠ]ygìýàm=d›SûËØÃ‹ç4bÐbUÝ®›4/¡Üê4-G+P¢ºÒ:«‡ ›~Üzm:¨ÆP‡¦MJì+LŠ "–P)6’x‘ª$Ü‚FÏR"鯸K¯‰Ç¸*·”Ƥ îy–ãJ*†åBÅD¦itRP×u ± åe媹iÚ¾ŸrŸ›Qo3^7ª÷¤¡Zl¯3¶Q".4í‰×ªm\wƒ” _h€¢&m¤'°q…ll ÐÚ™Š íxØ(¨’©t °Ÿ€p{2Û5¦ +*¾9o*“¼ù8™Ç¬|ŸM˜Ux‰!ÆÂ …-l÷¢;¢0V·Ø\1"ñ £ösQfEŽ™K›óN‘߃İ „¶á Yß5ðABöû°ày–Ì÷M —]›¼Iu._'t˜SÂt¬Ä]¢„H•!™h‰Cü¯ÊÈ’p9fÕHǪs†«8'<½Ë°G¬÷2@t,KtW³h€9Ïm™RÍ¢Mf‰'ÀNZâFÚõñªšäFŠÝ¿È‡+ŠÞ9!îâWÇ|,†*‡!=!5©Ãeª¦1$> †Ä4†dÑË R£jÚÏÈ7-`k%.éòð‘vz¤­!©$”ùʵ®~Å,‰kÑ™K͉agÛ9®NX<‚ë…ãòÇCQ?ŠêS@Q_ŘŒ°x—m_Ä£éL^BgÌfñ.¬¹;¥+銜T +è}Mÿœa+NB@¦ˆ}°æ=НªKjÞçæ«Ï ’q5º{€-¢ÔwlÁ'غ݋¢¶Kµ&ÃŒõl1g´Òå¦þ#h© ß^9GXˆ§î˜ªó•é%~ìU›0nûq(’Ýø›d2ØfÓÉ:7ùE²2Oðh¦Åš<>ðÊ}õ2]PeË:™Ì‰|À})›ÔæúÈØ–“ä9v×Vž­­ÓHþ%A²qècØ(ûÎá ôtM…x‚·p¿&{YüuÑ^”ÐjØ+íô"“â<é³)J —M"HÍûâL»ñw·MÛœM5àL<[(%°úžq¡³ÉdlŠ;ß{¹g c1—ÿ’ˆ»ÛÃ1G)Š~S0Iñ'–î…§ûHÌ…’¹Î{ˆÖ‰VMPŸŒ©ÏFóLiëÁ¼‘¬¡ñJÏÏã$)¯äàů¦˜U¾zHyqÂfqÿ§;Îù*SÙèðÅëi¦*9þÁ&«MþD\¸ä gÆVKfF?|Y«?gœ/óUöd#Øà<ë ,åXONô@løñB˜¢?†¯sÜf'¸ ¯òÜf\ç ÅäFnƒ®©ê_ôÜÖ‰™î7ž,· ä¶‹Ž¡m&ð¾+†|!n³—pÛÇ)ÿ—Àü—2ù“Äkœ°b"a†âïΧ0;Aa9 SÝg˜øŒd™¸ïr¢ÿqqßÑß2üï&”•0ýXΞøß39¥> endobj 199 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 210 0 R >> endobj 213 0 obj << /Filter[/FlateDecode] /Length 1822 >> stream xÚ­XKÛ6¾÷WøVˆñ!JZ ‡4mÒ‚¦]o‹"éA¶i[†D¯wûë;á,iåx[ óÍá|3óÍȳ…ál7sÍ»Ù7Ë—oÕŒÇLðÙr; g .BÁàÛdó×B˽™/dïšì°Ï×YAûÖ4Ôû¡šË0°¦Ùfk3ÿsùãì»%ÈH¢ÙÉ]* Õ¬œ)ÉY’œ'ŠÙ­{B<ã!KÏOHá¤tOx³¼ÍK¼ïåÛ¨ß#‹$ìÄy;_DŠß)ìú7â|»7EA+Ûºy²—®ws‡¦†Žþ2k‹z‡:½»Û·[óTäéá÷¼ÚÔs§Öi¿ '‚ž,ŠÜ;?¤{=Ê«±·ö0ÑSDŒ§~ÃÍôx¢į¾zuš/„ð7ö¿7Ô„{û8 x$˜J9±Ô¡"ÛBÛÝ[Ÿr»§ÞûßQo- fx¦ÑÁ»åO´t ¡9Óú ÄÉ—-2®¯Y`Ñ¡ûìñØcÁRyFÝ¿<«6^ÇÚæ[ïU:ý?ÜJ0}E)Í«JÕS•îM‹¨Óê¢3… ràLRÊatâÐTè'÷ySW%ö“À¶¬ãONœ¥‘g¡cÆ;râ¥\DÁ­Í›W;b¢cè«€)Âì®Ív†¶Œ‰GÈŽúÖ¶uÄä÷q›.âA”­©EcNtö—¸;þ˜'2¨Z¬³ ;âýóU­?ãïô%±b!÷¸}9‹º0]á}$%·­)¶ØçAí:–¥s*Ⴚ2/Ðp* ·äð²uqÜ:•Uƒk]ÿXâïÊùƒihWíe}Qì@ÂÝg––ñ @FL]÷„«}‚C_‡@°Øo@«ÈXÙÑÖ%ðxWñˆSÿÁ9'Xk"¹.ý×2œýF7’LJ‘Kyí'=€¯|óÝíÂÂaO(ë "ÆLñQx÷ Zœõ°s(jK=¿bfè}?ã[Ôˆ!q8LT0Wƒ;*&wÁ¸ÙŸ;aœfh«G:ç@‡…'þ_ðg‘‚Zò9¤e2Èèxó}žQŸä$Ž‹YÚp0e¹„ÉŽ·€ Ì*ÔŒXôXm\%€^–²¸ó”Í< ƒzqà²9`V¶Ùª Îö¸Zt¯𚒠A{^ž×~9æë¹äÁgòËZŽˆê4Pb›µ–LŠ3Α3zÑÑ^ˆ µà3¶çÐÛ7õq·§{sû5šNª`•µðv'¤‹—&óñsy{Óc13H°†J&îV~!Z%K;k¾Í]!ܼ :~Ó˜Ìꀠ‚€v¾„Uorªíd$¡’ÁÓnBÍé&´‡*\¡ø€ÎÎÔ¥±Ó33ü­ƒ7ûÚ%̺5ýѧzIÀ¬GŠ}o`è)àGE—ÐM¶¡'¡À…/ "ÎÂxXD¹WL Žx—[×þÐÔkÓ¶#EŸjò¿ÍhÕZ‘†=´"u)ZÞñ!v‰½¨ïrIÚå+˜Ò£»mE5%Ý\÷¼c|úw—[j· âhQlæB)ƒ²«Ü9¥çÎÞ9rÊJ>N2jšOÂN°µRQŸëq¡ÛÑY_vŽË³ÍŽ…miÔ‚—`…UùªzrÇ6yVÔ;š\¹Pr~ùpɼ Pžè>Ý®Ù÷·ÜœFÆ} ©óY»ÞµÎ2Pyǃš"ÕTq¤qgAT(;CèpÇÙô ÒJ@ ó\ÂwóÁæ%r?åk|ŒLØâ'e+ßoP  ÂÁàÜ=€@e£ð^çvBª\ؼm~ÿÆØ,/Z “â.¿]< {¥ÂàÖP ôÛ&/ãÞ¥û^ˆø˜%] ¾6^ËÆ{ |?4‹¯ ù)$n 3Y³é¼ òhO½ð}n°±ÞN ì¤K^!”Ø“¢ê².ï^pA­4æe\Uÿb`Î×Qí³ü}G¬Ú9£„O÷³3â´S&=_ë1_ë1»à‘#FœŸ3D„¥Æè±èóÄùÚu]¾öø YÆy‹VÁâ9S‚Ž‚Mf3”!Sä A¼ÛÊá&â yIx¬ç 9Þˆ‰7´"ÞÐz°»ã èyà ~½Ù8îs¥2pVT±ë®bÁ]žk?¬(òvïiÊS¤=6•wªjjö÷òÁˆœ¹§V¿ð‡„`J ëüsAcרìÇ%Íit~@zH†âi7wŸ3Τ›³«¥,Õ(v!TˆÝ”™¾¶zOîr¤/WÜCÊ…BMFPÈ¿>A@ˆ0ÓÂP@¯ƒ‚s@_ý=5 endstream endobj 214 0 obj << /F4 25 0 R /F7 39 0 R /F5 28 0 R /F10 132 0 R /F6 35 0 R /F8 51 0 R >> endobj 212 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 214 0 R >> endobj 217 0 obj << /Filter[/FlateDecode] /Length 2320 >> stream xÚ•XK“ã¶¾çW(¾˜ªZqI€Ïã¬ã7e'[^%©”íFÂŒàåC!¨™ÿúô )É“äDht£__7°Jâ$Y=®èóçÕ»íÛ÷ù*Mâ:]mVÉj£“8[mÿôSôÍö“k×­u¤ã`8øWB0» !Æ3I£„ ƃé ncŽßrŸ&f€p,Y@Z Èr?pÜ€°ÓQ°eŠìصªV‹¬åã?UkIU >àÌŽìâ<ê‚ÿtBDNÑ…óӆᯧMÎŒ," ÔUæüzò@¢Ó°k)¦ 4•F¦ñ=Oy‘ŽcNr|õƒù¼VEd™ÁÞý¬òj㤠Åãžà`éó™7,A ´¬£­+çüšr?¥‚Ð…سø+«LIR8&!D¶ÆŸÛJ.y¦a aY4ä1üaà‚„oyvãWXÿD_*œ‡[ g„$KLJí7ak¢Tx(D ÑYÊOE!»Bž«ÌTy«‚ØW’RÅíÌÜBt|ÉÒȼJ¿<Ç®iÁ/šªœªÁ‹TåžH?œ)$ŠT]EG¶ÀÁÝ¢ZH/áZE÷Æ»Ïõ0Ëó$Ùø ª2«©1¢¶êò¤ªŠ =’ŠÞ½0˧5tfx‘¬›š&UÄy5"È=ÓZðʾ°ƒà/:3Öÿ2¿ld–‡[þòìñ¸ù¾\2Ö% ]ìÔ‹e¸¨”·Ïõ’¾B; &І²ŒîOpWÙP?]‚žýUü—i\ÿ¢äÀõãÂÖ0q¶5ü쌈“À?{¼.¾€9¶L=níù”ü=ˆè)’\-$“îiÂ8#Ãù,i!†€‡j ŒÉ¸(K®=6Bv÷é›têüHdF©Èw<7Ú/# qåÎ2-#'ûï“›D‘.ðÝú£È`­e»¬¿QÊE•ø÷ó)ƒWMi+É'j$_ϤÒòÁmn²X–å¬l`ƒVÂUµÙ#€z1Óð”C°B{Bs…»ÉÌ<Ì6÷„‹£e¢ŸU‘ô€…Ô8Â:ƒ}ïX3æÕœPçM þæŽøþg—„€Kç0äŠq ÖoxDî*©a§ـČ$î1 xméÐG÷¥æK=•±h„ƒã#ÑXòŒl¦ÓïY†ý²³Ç‘ °Ã½ÝªQsB0ȶ¡§À5ÑËvL@uN¹ƒÊÈ-}1Á<’¿çepT‰÷`:¡Œf- ¾ó¼k*'HÕºÇCðürý±»ñ Æ1ÙìZ‘¹æx)œ+j¶¸t;¹8Ê ²†üûMF|¹¬'kf¿ÇÓ»n'{¤ÜaGJÒÎd‚nE?z¸úŸÛÍY´ïlG ÷«Îr'’ÇÉ,Â`™1…À¡ŒþÉíyº­s8„WÏ480‰wpº8QÅÏáî†Ða©—J¡»èš—këOÏ$æZª…FÐ8é(R¼Ð Bû8°„ÈÏöÎç*Qºá $;ª9õ@@ÍíD‹Œï¥c*ò/|AqÔH»b›½™Ê“X•ÿ­7ËCovòḠ§—x‚_?`€íè@ýwdÐVÅܬpï_“—yU@[?šáF7EH?QM·–¶§cÐ=©Ü…N7Pk­å²úÖ*3=a½½¢ô–á}ðUÔÿxù˜¨òôì]08G&ÎrÉÚó,×l-.f äÏv§Î†Éø¢3Ç[ç†ùõó¯§ÖýIøàCZè*U9qX–/^€ØÆ“™&÷â@®æzî%Öž/K¬àÚTn¡¥p'Šs­A±ƒO …’÷J:}îfˆŒ£†çÃn™½»¡÷~Ù8ʵGÒ}ïšé³7¼hÁìØØ‹»w¸.9#Dfàw7‚åñ.1½*Õq]„˜‚žß®fïñ$ë)Å—úTçUk³C¤o˜¿Jul™‚QHÙ4tÊøôj• endstream endobj 218 0 obj << /F5 28 0 R /F8 51 0 R /F7 39 0 R /F6 35 0 R /F4 25 0 R >> endobj 216 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 218 0 R >> endobj 221 0 obj << /Filter[/FlateDecode] /Length 1222 >> stream xÚWKsÛ6¾÷WðÔfBO>zsÝ8I§žñÔê)Í– ‘S>T’²«ŸHSõø„v¹Ïo`Ä(cÑ>rËçè×õÇ;qFs­w‹bɨŠÖ¿}#·ëǪYÅRJ"©¦ Éû¢]‰”‹zõ}ýûÇ»ìò±LRšIÐá¾þró°þô'|¤S"­lôiYÝ/Ί¢I5‘’œfYØ×Ñ£ó(™y”d4N©¤’ªU̹ÊÉCÝèÂÜ!iŠ8‰X&’ü-tZ›Án)zƒÄ¦7Åh¶¸y²QPazQÈyNÙ9&—‘×6¥ :÷Ûc_µ{o§-êÓPy«Ýת)öfæ]ÅZ¦d]šžo ÅÞ§XdÄ{ ÎzWw}×[—Ù˜kN+TJ;O^új (RB“±³kBÆÒ ±­†Àn*„·k]b,1Œ]oóâ\oo¿‚;)ùŠûsJíf×õH˜bðÊ6}7 ñ¡.F`6^ïñpp:º~ôÚ} ]Ǻ™m5BiE„‚JÐ\ûs­i@„ÃÄø¹îž”±L5¹‡À%'G»Sä¶k04\E‹¦& ò0Äø>¨z>v;ÄŽTäЃ´ë 1)H×"å؊6È>ú/]ý­†Ú+~©Úmg%^†Y¤sì ®)?‡J¹ÿ]U[3™"±]$¹uXFú¡IUoÞnuéÐ)³%nP·”çäØ))£¨;‹n™{lºþC¡¡Äp°@ܧ"#ë…_×x…cYŒÈóÍmFãCßíû¢iŒ÷¤Â w‹¶dS¨_oK‘Ñ$4.@]e‚ÜìF@•  hj³ÑUØv­ñÄ×Ñ£Hô>uÞ°G!2àµæ‰K5í^Ã~,ƒ&ê\Qr`Vèt×Ìèù¤!ö¦5½U6¥,TCËœ©™»MHñ/˜ž ¶4ÍíØ”¡/¦,²˜ fÛÙªut‰SÉúr±ûí‚çHEL&‘§4Ï"1cçTe3ö÷…¯±ÌjXRÊPæ±4‡CüG·§ËWÝô»Ã¼9•(ó3.Ný,–TЄ۬Áu˜aSÎØeéŒ}-PQL‚ù«­,B ‡c=˜·ºÁbxUášÃåy¥5 £¿s Úŧ¥-à ë9M=ÏMy´nP?]W%Âkè&’òlڣ籸ȿ¿f.eš¦¡wÙdâ™æÙê2ýé¥48H1Ã7&ªbNuž¨â=˜6Æ÷ Ó<™ Ó<9Ó‡i®]aòô2Lóäõ0¡ù0ÍýÕm‰EÏçþ2½WŠ,-êô›ï˜W3b¹˜\Ec4™Uô¥`a’ îUH¸ˆx[Ám8T][x©ð Òõ¬ 8š]h° ¡¹ÑÇ|G[;Sè 5áCopX¾3ð ’lÎtNîì³€s›Mv(ñéÛAq6-…âßr–xrãOÃËÓn*/Vª•´Åxìm®ìù®7ÿM»9ávÛ5~A÷ÿ£‚û«Ú®•>87Š±Â—û<¨”Lä4OÀ¼Ì±â“§¿k´gn ¸ÔÐ4÷qdð8Rcb3%€ #…‡ùùÓô 9[ endstream endobj 222 0 obj << /F5 28 0 R /F8 51 0 R /F6 35 0 R /F7 39 0 R /F4 25 0 R >> endobj 220 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 222 0 R >> endobj 225 0 obj << /Filter[/FlateDecode] /Length 1044 >> stream xÚÍWÉŽÛ8½ÏWè(ÃM[nÅH¤uÈ`’mÓ¶Z<’£çëSER²b¹n râRÛ«b±Šô(¡ÔÛzføÛ{™?_D£$c^¾ñ¨ J¤—¿þוßU !|A"Bíô½ªžøU_ówÏéIXÄ Iè0Òoo>æo>P”øy½7¹‡ºÆŠ$qìUžŒ¤é°.½[ƒ(>)Hä$&‰0zEÙëÖÚžg!Ï2×o€´q›¥5`çÊIoýˆ2¿V}8í)¶Z€òDŽøBÉ#‹w;çÙ„Å΋ΎͲ‡=½ÆU4„}ÞºjUÞ÷ÅJ•å=rRŒ(ŒÌßîµ›¦5Io6UmÇ¢>9ßvÚJ.‚”ûÍ¡-tk7úVÕÝßP% olÐÏRÌfÈÛ5?cûåp‰ÿ××ÓìáBPK´í›f–fcÇUSªƒ/¤o6í!סßzG¬ÔV_F3cðŸ_‚¬mvììêA*•ø1x­ªôOßOùΤO&ýý(`–j}wèzG3àpÒUÉ’¦ßÙ=ôë&Àr!<Ʀ¯3†¶Æ ÷W˜k¸I´Õvºi›êÂ}OI<Ô/:ó/#P-^~3a!³d6/3øö´D¼"öoûx BjAuºï]%á½ Wkrà *Ôñ‹FÀÏÀ¨t¡”œŸŽ§¸á Ï Ç‘·ƒã³3uNZª:tp3’ÅÓcqmØN®'P¹o0O ɸŽƒëFëEG%6Ww4`cæ,¼ŽÇÞc¼a²i»ˆqL21 ì$oðât?\éüÇ-uNz¯Ù=õÚ^ÁGÝ,|š‹u¿ûYÏ뻳›¼% ˆáþôS¸fs6…„sŒA2¼U&Ÿ1æþ7†ß4&"øÀ¼7éÞØ3kŽS:ïüp”$K†L”î¯ö×w35{' endstream endobj 226 0 obj << /F5 28 0 R /F8 51 0 R /F6 35 0 R /F12 139 0 R /F10 132 0 R /F7 39 0 R >> endobj 224 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 226 0 R >> endobj 229 0 obj << /Filter[/FlateDecode] /Length 1554 >> stream xÚ•XYsÛ6~ï¯à[© ÁÉã1—SwêÄS+ÓÎÔ}€%ÊfK‘’òñﻋHÊTâô‰Ø{¿])âŒóè.rŸOѻ՛s Îr­¶–Š3­>ü¿_]—»ÅR)+f§å¥­2¶Zü½úõÍy6>VIÊ2<Üë_Þ^­>þL+¼}\EÈûÑIÑ,I¢]¤•`YöUtí4JF¦†å@N–*Ç÷íSÙÓLÆ7qYïýÍ·:¾^Ûª & i˜^§ë¢woUÜßĤs¯ÜÙ¶iˆ*¾‘&­ú¢¥«N[,M®âwÏtcSlí¡êÏ`—÷ û¸Ì8¡îÐy÷ ~S/&àØ†×ySv½­×…'×tº/ŸŠª£³mÛìÆGÙÂuá‚å$hÉãf‹_ApQîì]6¥À m³5>¹·õ]YßѳþUCÚØØV‡,ÖZÆM}ÂâµušŠ¸+œá<¶~ïÍy°QŒîÞ=Zp(¨•ŽÏàq$¸T<Ùݾ=fF—`¤Jƒ—Ó$n=É€Cg°_v”-é$[xÎTê³Ep1K')˜Ì=ýv!³øyÎðô5™§¡ul½!uû{W`N;° Š*S÷’]29Š.î1ºø.c¥Ï-8²ý\a¼B7±ág†CM½T[`µÏˆ'È©ie‰¹3Ç«Ól–êÙå“Ê*á¾ûÅ7بõL±”3¥O¢^3­T6V÷#:£9TÎ9„g ñ)H’áô=Ô%A€¥“‰¡t–‚g,ÓG©<- DQ%ÆP¢§)š)_Cpl÷{o/Þ†z˜9=S, Ʀ©}…¼´réoO¼ ŠÌãÈtâ9r6O<‘2‘N"htˆ ÁšsA1³ 2çG®ÕS×ÂK§òÆsiˆ‡¡-yÛ¹ºJ0€<ëݯÜB}å³’”ÏÓ £³mÉÔC„ó :ã¹p^ŽÐ}ã1àôŠK€õr_•¦K@Éä#š$„§#@‡Ý-šóLÏCqewÍœËæØé‹:j,Ju$ØÝÛŽè–ö;ûÁcG¸Ö®‡¾L)%ŠöE6s `™ôDzø‹ÍÑé #õ!™Z,…€,äî%5Ë‹Ýq ¼Ÿ B.Š¥”Ü«¡ß¬›ÝÎ#nlU5hÝcÚÒÐÅö.#±ïYbhuuS/çVHC¡óÉœ3CÅd0ÝyÝË‚)ag{¯^I ÛÌdr„®Óüe6Ö?;шX¢ruuyª‰ Mý3+ ®>š#Š@(ƒ]Š›ø±¬*Z¥›¶°Z †»õ{Cý&8‹øÔ ™oá¸¿ì'žoÈ[7NÌ6Ú¢íÊpíÅ&ñ]k]9:QK[d†Õ1G_–‡à~¸xÿeî`KÓžª¼mmûŒÌA!Önª²þ+5Ã=Žh(ñ±„&îVÏ„œ-ÑpW´]ÙÔtp Æs€0ýjîÈÉe|"‘ø»QÌù êZMŠe.[&,×ßuÌRs¨ 3M} ¬a.ü§X÷β©Š€On¶Ó0‘Œ¾+*Õ,qE W®Úb[´ ÊÝáŠ\ ŒÙûʧØ@°UsGkJL—ÌOtB-Ó]Ÿ“€)£ƒãR¹\%T1mSÑ/¸á3þÞ)ðPby ýDfhÎGLúATxÁYv¯Õ}Ñ9áÐÀö±Ž6¶õ§Ënãië¶éN ÌFáê º¢ÃÔ‡˜/“TÇ_ëMá­½,‘³íIÚn j*R•„¦ mq?´ ÀaRÀßwœ_j"}ý|ñ§gåRžýFØwx­ü†f@Ê=ôëzÌ~Ä` ýÜù6ßì|ÍlÊj¬iý@03ŠÚ†§Z>…­ûîTÄ ‡'Ç­ÉD9ËWÿRåHÔI˜ ‡Oþ ±Cà¿B¨ÑK† ?ÏHÎåü†„ÕðËÉx\øé?ô(4Ô endstream endobj 230 0 obj << /F5 28 0 R /F8 51 0 R /F6 35 0 R /F7 39 0 R >> endobj 228 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 230 0 R >> endobj 233 0 obj << /Filter[/FlateDecode] /Length 1852 >> stream xÚÍXYsÛ6~ï¯à[ ‹!.}Kš¤ÇLêN¬©§Óö‘ ‹µDª<,{ú绋Hê°“Ç< \‹Å·ßP”ÄIÝEîçÇèíâõñ$.x´XGI4—I¬¢Å»?Ù‹›r7›K)™ŒuœÐð£©f"c½ÙÎþ^üòúC>n–içt¸Ý?½ùmñþlÒ“¸6z¿ˆP÷Á¢â4v‘’<Îóð½nœEé¨TÇLgiœI§÷Íêa–*fª¥]ò\²zß•uÕ’9“»ˆ„ÇR{s›²ÍOürsF2ÁʪìJ³Ý>‘¸ë› µã¸þKèÔ¯ö»*{‚¶ƒ]fî®·â”vç9“bX& 8Û¶lœ°^ëÁz‘ ÖÓtã×UuGÓý·/ZÌÙºn¦G‘ŸªºÙ7æJKÖ‚ÇÐ;[ ÈÍn7¶"x².S„6 ¨z›´ÐìúD‹4Ö©ßQºéh.¤3drõÖvWg§ ópëT9èá™_q(·x!®Ùªl÷[3){"Á®FŒOGäðcÕ7euGãvi*rÉ\+¤À,·JŠÕküMÙ~CŒîê]K3¦ZÑT·±8Ðà…%œÔ5ý’¸ƒ2Ú¯Ù¾©µ”ýc—ÏóÀ]vÂê¹'ç\dqR Ú{ä³`ŸÑ×Ì®ÝEe®Ør[·Îld»#Vµ[·ìwà\ ¤ýÊP“P>ôqèIÀò*,¡_Ou™þêˆþ:ÏÙmÙmÐd0Ñ™€£`Þ÷"_¸Ì¿HgÅaP³!9Â(r£ãÏ`g6uάÚá OäCKònc:elcPþ0Cµ4çϰH ™7Ý÷ª„œ‘!|(„u¿•}@Ûæœ$­A¨ÝÞt ƒ{ÿ÷€c¦öö‰Dèâ:|„ô„rr0 º—‚PÄB¿êܯ™øÒc«$]!Ã+¸O‚ZÖôû„¬{š=àR ­œu$éjZÖ3ÄÑi¢ „mkiüß 2•¯‚ ñs ÛîaWmùÙij… ÙFÅü­¢s[ú ãh¼ÆYcMg¿*’ŸègŒcpdë£x[ßÝáñßH™:ŽÓ,K}œ*Ý3IéÑ tÛÅ8U¶õ—»:IìÊÁAƒÝ$@Ó8S§Z ¶!uŠÆï`”²¾….Œç¢Š,æK”ÛÇ®18ÔÌDZÐ+0aÙ3DʧQÓùº‹uNLÒi²G#­ ¸b†£ÎÕ¨}¹ÄRŒê=Qµ1!.‚šq à‰/(r„…¼D@Q¸¼6ðfSÏ€²¾P€ó›®ßÓGWî¿Å:¡¸ôüÿ„’ƒ 8~¦N$±ä/óÇ"?âj …KB ¶±Û½ïxÊc]L³î·”~.£.5U©Ž¿X´Ä¤…ryÆ9È®.¹¶(bŧ®ýÔûªùÙ,g2a÷wMÝW+’u‘¿Õ>Üê—cÃ݇F@>—`àe ‹¯ÆÔ>Úeßù쿵Õé|ì 樸A¸.C· <€¸ÅÛ h×üÁ‘iGÖ‚½¹4G ;\Ú ÈÌ!™§¡Nsfö>M˜†ŽVnäKìHlÛÚÖ/§Ü•±¦¯¨ @iY]ˆ,4_füÌD”ˆPÛ3×hÙâf-¸¡ªI┥ìþƒ~•(oz6˜®àâLÇIrP¦€—§$Ìí^ÕÙÙF -w yN9´ôIW†ç&°±ë½® B°éš/Æî¥ÆÝ¦—nYâØ)ç![ȱmýõzñþû3¶*ëÍßõˆ‰oðw[îÊ.°*X–ÅÙ.·ˆÌá<ö5$²ð"¿¢ŽÊÇÜeÝWþ=ƒ_AZWþ8j{OˆÓS˜¥>ìc^Xî„iSÝÔm½î(]Þ’ÇRðQþ8yàÔPVã‚vC¯kWÒ ö¡ÜúÞiNÅëzOO£êìž >DãLMrœÌÀKõnç¹>äÊOúšN·6’ao\“‚cj;ÛñY¢ëµßãÕ.K³ §B º ?ŠÈ J*§þ”y2ægº3>ÂO{{ÞžûÅS¼k÷äG Öô¯ÁÔ\ìB òÌPŒŒK:xöú?"Ö'+èþ.w'ìÔ× ƒ²Ê†/: ¤î“Ýžf0š˜=o`Ð4*py›š1;˜x–÷¶î™oÝá%R¶¡îÔ¡êx*¼@ÊTA-I™>Gʃ¯ïl¸ìWñR¨ /Åä9¹y@ÐH%׃Ž,N“«Ô¸Ìm‡÷”!QBjtîãìçãj²‚vlL[½êhnòªÅÏÊììêê<-Âr)OÝ*‡#Õˆ9-…VÅ?Æ&¯42ox‘ÑÏ÷ÓÞ}}b:‚Þ7 iDÄ’þ$œüIé¬xàø÷%—ÜöÑ /?ÁøiI"Î3µpP`òÔSå»ÿé0„% endstream endobj 234 0 obj << /F5 28 0 R /F8 51 0 R /F6 35 0 R /F7 39 0 R >> endobj 232 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 234 0 R >> endobj 237 0 obj << /Filter[/FlateDecode] /Length 1290 >> stream xÚ­WKsÛ6¾÷WðHÍDA€¯ÜÜ$nÚOÝX·º˜‚,4©!;î¯ï.DËLÆ'K`wñí·‹e’±,Kn?ü–üºx^$8‡(”é9~ð©NÓù‡mò g’š°~Œ |(0D^xUôj£_€&N5õš&@óEwÛiYwt­¾Ë‚ê ˜o‡Í†’K3n;O‡q‡öv¦ó5Éå:gU³w™gÏù¼0Û·òSŪnc$Ü: í„[иóÉþ¸Jä’ºˆ/‹—{—׬Œ¥ë„ÌXy@€?‡À_;Óbؾ~;eÝÛ"b5îÓqŸÚB=Q-rq=%(5dƒ¤ H@ivZÙ>:쿞–Ú&C¾ˆMÍ$? ˜?‡âLÌÍÝÏa7®JÄå)­íh"k¨%Ù`=/ ÉT áa·Êí±ÔþرC¿Ñ± ‡ZrúNULþ$x2áœ5E¸µ, K ØÀù!À>¾­ÇI²}U£ÓÖü§$×d©ÕÊé°PØùdEj6êV“(>†(^YtÞo$ÁÑ¥ Õ-¡É_ÌÀ Ýb”Ö½i–”`o•óÔ8:^ïL¬S£“M£ædžzº ‚Öac#%x ”C¯{ãBãdõ8t;l=¯g¡Ûƒ ­ñ¿p,tiÁ õTŠ„ù|O/(k)QŽ[¯i“ ¾¦ÌCìM =~ޚﺠªÎù'Ú´­²Ðg¸}1|Ô=Êê1¢'„h“³’ÊÈÑ™g×Ç5.  ÆEô?ðwDÜ<ËN©.s˜ÅNœW–¿ül-”× endstream endobj 238 0 obj << /F5 28 0 R /F8 51 0 R /F6 35 0 R /F7 39 0 R /F4 25 0 R /F12 139 0 R >> endobj 236 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 238 0 R >> endobj 241 0 obj << /Filter[/FlateDecode] /Length 1608 >> stream xÚ­XKÛ6¾÷WèV ˆ‰”(©·´Í¦(v‘5ŠMŒM¯•Ê’+ÉÞÝþú΃”å•8A.&ÅÇð›™o†C±ˆãà> æMðýòåM$±(“`¹ â`¡b‘Ëÿ XÞU»h¡” •ÈDÌÝ·¦‰dLýµüùåMqÚ¬t. 2h÷O¯n—¯ßÁ¦,® ^/”ý@§¤Bë`¤*Eá¿ëàŽé“ÐL”0k‘+’û;H,dØWÿZ0AŸÄ¥ÈÜù¿vˆóC´€_Û1øvƒm®Úú°kz¬×î̽åù÷2Ëk'‚eÁ€D—tÊ_M×âÜÁ‘Nz‚£®‡sgvûÚö jäÊ4ÜW¶þŒ(Eg Ú~ ƒù;’:´U§x’,ø$˜ä“¨Kº@û´ÃÖmßZî</€ 0,#¦Y#î$|âf]uv5TmÓ‹h‘¦Ix`ºŽgí#Áz_àÁ ¢|Ò4Ÿhšç¢tšŽfÊ$À܈bÁ+ Àe“))íU=ÜÛ;C;;8…Ž?XͤeÈkž$%È8 Û°–ih¹„L"GÃLå–²E¥'1é“Y'Ó:¥J&ÙÉ«H3/‘'€ù‰ ïeª.0h4«z± Ó¹82ˆÀ#9×Zø<ð,È2.Dž³È6*Z$IZ†·Hã•í{&òÅÀ½Ž3`(S‰œ]¹Ü’«r¡¿Û1ÇrÈ5ƒu3†Çö(8˼`Më6]»ãQÃû-çÄ¡ÝG3µ$wÀŠvÏàÜ3Ç(Ó¡©jóÁË{`‡¶z1ˆ4÷lÚgèzgçÎ~7Kœ9®1ÛàmwvÍ\( ‘zÞÙ„¦ÒE)vú•iŒîðß{)a@Û<)Y[œsîž*ˆûiË™b hè*O½“Sî%Z( n”"KµœG6uý­éL]û¨ÊZpo‘"V× {ýÏ¡2Íý¡6ÝW“WWõâÎRy™ X@²ÐjÌÆÀ{Èœ*qIÜÝk;€ÿÛ®¿Æ—“ü†|yï0$'—Lh9Íù¤ááQ€ŸçiÓuäô'LÊâ‚Z grE}R¯ce®ÓIy Ó`\Ít/XåÄR¤ -A¨a\]ù·êhk0—¹Ã Ë~€  í)3ÇCk1m•Ú] 0nÍ ußòðÚ^ÈŒï*=3±’ï $—«tšÞæ˜$m½æšÀ× G =ãÖn::ã¬Æ%­+IÆ0=W‹–BiÉÉWûä›h,$0Ý´ÝÎàe™œÇ “âE«Uxè-n q¸úàó©gÁ|–½¨ˆgÊER8]2yš œQ }®ÉËÂÓ¨€»¡¹§ªª,sNjò¨q[ 7Þê“õ£0rÕÌÒÞX~óÇòK–Ùh] ì›Z7NÙº8n¸™Xw^°®”ür§ëXWi-d1µîM·”iVDˆØÑb FwµÍcíÌç`~0ÍÊ}qi õ–ðTéÐm>Ýа¡«%à³oß•Èü^ä0€°·Lm—´Ï"º˜V<Ã1ÆÞÖ'oC—÷'áˆêÐÏýM “Ø-„Îy„¥JOJpœöW.}¹ò.väAÂÑãàþÔW\~QpÉïÆSá‚ý°¾. º‘OS €ëžJÑ^[Á²m5û`ÁLLá2³«±¾9jkúa†>SB{nÊKàcQH7Ïwôõ ¾Œªµê†jcVCßX!cÅ!5>•QЫõ1‚D†d\sùuÿ©b8sµ°¥Ø„—ÄXžâUíØ9V}EÅ-iê'ìÑëêù‹?I ¡üóàU”Åáúh¢ ®ö(“! ’öÿ‡ªÈEæ²5#ñ…Q„ç÷Öß|Ò•#8zñ…—$Âóã¦Bü™¤ç¾òn;»±KÍa,T ™%–ôêöž^œÊLÉ’ÈNÙÊ P×nÌ¡øƒý{RòxbõîÖóË7¶Í·n[cÉ{°Ö p&p[Öýà—ØÇ•Ý^…R”Úÿm*ôÉ4D©#ƨ–Aò{ëŠ5šH^0±eË™MR l9&ã½۾ù.¢³ endstream endobj 242 0 obj << /F5 28 0 R /F8 51 0 R /F6 35 0 R /F7 39 0 R /F12 139 0 R >> endobj 240 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 242 0 R >> endobj 245 0 obj << /Filter[/FlateDecode] /Length 1558 >> stream xÚ­WßoÛ6~ß_¡G¨XQ”(jo]—¤ hÜuÀ²Ʀc¡²äIrœü÷»ã‘¶¥A7ì‰Ç_w÷ñî>’Q“$zˆ\sý2žG"᥈æ«(‰b™ð,šÿú'û8¿­6³XJÉ$ÏyBâ•ifiÁv¦žý5ÿíý¹>n–ªàZ‚·ûÓ‡›ùÙgØ”LâÚèl¡î½³’q¥¢M”IÁµý:º}Å#¥y‘:¥÷húI™}ÚÎâT3Û äÙ®·]ÏÉ+uTóõ§Ó’µ"KØÖt¦®m=Ál»±CWÙžú€›CÍÈ;t¶Ðâ4M%/<Є瓃ˆisŒŽÏ4K8ö¼d+ôû÷®ª«Æß§*q`~W‡™±çØwž»-Ó8¢HË2 @ñ:å™ò(ÄC΋K>‹3H/}Õ<Å>¥ÒR³"ÜÑøkæÑÇXk.Êñ쫺¦¬­Y’4´ØfÌtCµ‚ðSZb`vg‘¼Ì}v‹Rò²pª$W³Xˆ4g—ó€Q+rve›™‹òX…:)T”\§A¨$+Ùyå"¯3c#ÙM×BÍ`í€_¶Ÿœª‚p.Z ‡ã;@.}`åýñ.Í‹:ÌWÍ¢Þ-íϤZ¤GÝJJ¹:Ìì]ªÒ‰$P°¾®-Å«j--W=µ5µw¯£‘E»ÙÖö)~œå„zg—|êQLR,4Oä¹t½ÛØ®Z€U°3¤ªEOý;¶©`LdÇÍ; ÞÆ<½±¦q¢qY;­c³¥õ}WERi4Ó,M·$#KûX™x\.-ÌÕ»Ùÿƒò j;O³µ¹'š­}ˆïØ`Ÿ<å.m¿èª-÷± ÉB¼$Ûvla{ª:\…@ ëªÅÕ#x=Ëe^òCðô{I~öD9Þ½ðf‚ÏɶJ1]6þ¼SH—ºÅˆíý$ùªŽ(& 0²Äc(O¨Œšq %{èÌvíÓ&ì;ØÚ˜X*Gÿª~Êk[oW»™6eûµmHzF×ÛvÛcNãÝ„#è.Ì7œ³4jüfEOâ8v@íB z•Wˆ*yâæí¶®Ž?‘qÓ°x½‹]×Y[¾|?œ$tÕ ¶é«á™^ýb–'›é]]$\ûÄ „÷Ê’²ŠÇ&ÑsÙwÂaèk–“¯8Úﶇ=Ö3»i§py£¦ ´7JÛXeÈÌ£çÇÍõÅ‚†7Pæ1ÜÌÈ ¹Ç¤È2Í®íàò‘&¾ÑàÅ!‡°wÈ›¢L|Þd™»_ýO3è¾ ®‡jLs呯Íò%årº*¡Æ¦¯¬˜0À}Á“2…z«÷T–,´†¡â{̳,KØ£KÔ®w—1N¢CØâI:aEk¯cTÀØÇžð¥Ês9+ÿ;Ø‹«UY¤@gac® 1ª}('_ûEÊBk¨AªrO»Â±Å+a%§U¨| |¹¾üƒ‚Ú?÷ƒÝô? žÊ·/³^¾ •–´K2úˆ4â‡7J8cPüÛ«DŒØ^z¶ÿ½²{²^~‡Õ/G¼Qìvá9#XyñµÈJ.´OF‹ÏÑ,)Â}€ù“h,lè@Q¢tƒW¡ßàˆOŠÎ ù3 ÷Î 'ºëu<ÇDØñ 4Q0$‚»þà‘F^ µsR Å–-µ@Ã('.J‘{®ƒ‰peá&3NEò•ˆR„_ÌŽ^34¯©Ü½¦¨[yÓ½ðÍ,?x%êhmÑÖŽ]`l»ëì´ïkã\ýFñ¢t‡"†×ÂCã¸ÐtÂè°vÉ R@“‡GÖLÁ¯µ‚/GíŠ=Óe¸œ ¿Í?ÍÁÓ=§žxxerÜŠÂ$)¾y©“€š†“×j6Fvø)È€ìô;Bæ+®ä¥ò©›å\‘åÑ—ÜØ£ÀϺ9<Š®ÌèË,Þ‘‰4I¦/@¸¦ñâQ¥¯™ŸþuP.C endstream endobj 246 0 obj << /F5 28 0 R /F8 51 0 R /F6 35 0 R /F7 39 0 R /F4 25 0 R /F12 139 0 R /F9 75 0 R >> endobj 244 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 246 0 R >> endobj 249 0 obj << /Filter[/FlateDecode] /Length 1821 >> stream xÚXKÛ6¾÷Wø(£kF|ˆ’rÛ¼ÚPt ôÐíAkÓk!’¼°¤Ý¤¿>ó -ɲ“¶'Q| g¾ù83ä"q¼x\Ðç—Å›õ«ÉBÆ"—‹õn/V:f±~÷Wôv}WÖË•Ö:Ò"17?ÍR¥Q_T˿׿½ú ‹µME¦A­þõö÷õû?`Q’Fç.Þ¯(û…v1ÂÚE½0ZŠ, ÿÕâî‚F6©b¡û¢y,›G”šDÝÞaÃF%¨d£Î5mÙ-U}åñvSTaFËß¾u»¾âöËÞ5Ür_Šºl¼\mË{•XwtdiÇÂʺxôÂv®èú£kÅr•H}ôR6ÈØ0.¨¶ÔR»vÛrS6îf¹R©b½ÀRòc½±ÛëM3Zþv*‹Í ®AÜ–;ºÙ ¿ð>Yt¿÷Ѿ|Üsûy æUïî—¡$ºcÛÓf6ja·UW¶mïÆ¶0+îÉšÞc" ;lˆù”ZFÄ)I¹s] ÄÜß2ѲÃ×{òÞêºh¶ü³-Û§ª@µ¿úá" Õá‘Ûœõ…{º}Ñq«u]úЫÚDÍ|A?¸#v©Èïg¢þ鉄ñÀÈì ä0Ók™éè*w»TyÔÃÚ«H()…1c$”!¡’ÓŽ–‘€á" x$ H¤ˆ„%$`’GB¡Þð–•M”ÖBçáŸ5ÔÑeT´Üu㪓Ø/æ 3¨.`|¢„˜3 'RÄ9­ÿ³ÜvûÁ-°ÅºJ¹ Ú­^H ®Ã„‹Àu§S¥s:U³P?¬ÒŒ“QšG­†Ì“)¥!-ühÁ¿5F›¾êÊ'ÊeiJzáN0¥í ŒÇíÑ­{.álÁO! Fd…NAs(/æ>ØÝ/!kîftÍmåÑô¬˜ñ5i ·¸+·éÐDÚ­eä<²zJÉ c‚¬aëX$³}tæ“}õÅ}õ°/9…ŒÍ†ÎÀMðÉäx@aRSÕ†i;¦ÀPþâß—²Âš(Î}Ît¬£ŒGV@&Ò—Ó3¡2?ç^93:@Ï7’øÑ×s÷ˆ8Ô–É|ëTh3ì¬/[‡ãä‰Ç1ã%G÷ @H¬›í[¡B°ãÔà´ºø2†7Êþ ðf×á…n…ú—Xš‰,øág§Ô%$¥¬ýïPfÙ Ìÿ7’ƒ£æåÑJBh‡+ĨRüÐWÕõÉX-Ì÷*E(Eç¥Þ÷ö´ ;-ÙõäÃé,Š´:Äè ”"ÆêÚ©ºy* ÛÉQ˜åJJ“G)C…õŸi0ÏavTêd_ëÿŽPqû‘‚?{á†ÏpØ|(Z ÔÐ쟸lø—Ã1Jê”ô-^yW´ï,&aÖã¬æVl´‡úL¡›y )ªÖ#Ù?ùɤ^‡¥PÇ•-w›€×ï·Û-†>È(wýCw„âWF›Îw}‚Û í,-”á¾û]ù\nÝu%ÀËÄŽ‘Ö†*9n´eMiLC êv{(<©òƒ±C¸áÃÅgœrƒ×™Ô :œ9-Ìô6Š@ N¥½™]rP×=×ó|ÅU,‹Cœ1$ •Ž#N W}P©Æ5”Š”9MÐÄä_¹vz¡04N4Ú¢­òŸphÏ&›®|>]NG j~Ýî8ÃN„R†ô!fJ:.€2‚ >ı®| ¿§õÌMáN×õÛÎÔK .¸F=ÉÈÙ”*ð?¥Šï£o>,êN×Ѓ¯fPß–gù¬5Z¨i¾˜\Tüù¢P€ â cçQêú!ƒ´„@¾Æ“†Ž»zzl.E,Ç·3º¦âÃ…­GàÒ‘"–Á°Â¤&6<½°é#ÎBŒ°‹ï({`êh°%]×aÖ™ÔY•¹á«ArJËëіï”àËo^ô¬Ä$¦§ fx0òÓ~x*(ŽþÍ©h?Ÿž¬v|3±á¦‘„#—–ÝÙ;_¯¼u¸å›²*È™‹Ü/w9{aôHGlx–ø|'u’ ¶À€¼az¨8VóT¦y(×TìýÿÓ7‰^7– endstream endobj 250 0 obj << /F5 28 0 R /F8 51 0 R /F9 75 0 R /F7 39 0 R /F6 35 0 R /F10 132 0 R /F12 139 0 R >> endobj 248 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 250 0 R >> endobj 253 0 obj << /Filter[/FlateDecode] /Length 1695 >> stream xÚ­XKsÛ6¾÷WèH͘ ðÙ[^nÒIšL­éL§é– ‰SŠP@R¶ú뻋DJ´xÒ‹â±ûíb÷Û…g‹¢Ùff~™½Z¼¸NgqÄÊx¶XÏ¢Y("–Ìoþ ^/nªÝ<B‚¥,¢áGÙÌyô²žÿ½øõÅu1YÎ 2ìéw/?/Þþ‡Ò<¸wöv1CÙwVK²l¶›%"fEá¿ëÙ͈²‚åÜ ­¬îN™ý<äY kÙUºA`IPµ°oÕŠFw[åÖ–²^ö¸¹ÙÐR·U4hÔ;¾“ÅȦòÜ! ‹r«^„o`sž¯usP¦EÝΰ)ê˜g,öÜbkÁey°Ô»l_VÕ(#;åÖ$ÍŠpUíTƒÂÁÇvåPY”°¨×ôKøQ`oŒ"¯ÐÄ~KÔ雇i’´#9KÙÐö[pd(k‚†›N-f£;€†H‹ýn»­QІ'-ª)sPãVjµF,E¥0eªÍÖc,D ÑøyG«KMˆ®i½ó¢þ å½2ÝöX4î§Ðí÷x©…Û%Ê`Eú7íõ·ô}@x÷¹{&=°7Ébg/ì9>°‡Vh¶˯)8 p<Ìu6ðò!‚Ÿ8sÉ´ åQ€…n}tchì¥3;!N„”Lx ÿÌ1 Žx™I’Ÿ’¡ Ñ{4¨¥,‘ÆåÍÞ¨ÖÅYÄŸˆY—¥SôÆà%L•Ämؑ؞„º‚˺_©ŸélÌG®à¢dy ‰ÊYB‰ú…g|¢„¤ä¦7k¹T¤c_뎠P3$vßÒÊ]eÔÚÈ¢eÜÈ@£0.X$¾SÿNCâåî¶d^»•+ÇNS .’ÝÙÆoÀàßãƒÍKÀ1Ò%¯¿ý/<Íþ›_뚤ò Bv>}\¡§ÕìŒVy‘³¼$:f6ó0Ž“2¸®j( ýx@°^"DxŽ-+ÇØàK±P`ñ‰Èc°âj@éМ­IúÜW÷ª‰jBûAô+ÛÊòv*Áæs½m¿'ÍÚtÓêp;Ž^àfeKÕà<ëá}­îÃÃ<Ú¨{Ï,ÑLê9Ž!DØš²ªåmí§'×füµ9:…HÊÊÂRADŽ}ßÌAëÿ(²äìòŒe¾eùMmÈÉÈoÎY0X©µ em!g°ˆ‚òƒÞ<©d1ÇHtKid×òO½±6»dX_ Iž‰æíýþGШ{ÍÐc Óÿ(¬›¯=V’ç!k鱯ú¡kJžZE~Áªîâ Ý}ÿŘ#,8Ë€MEÎb«ìÚ¨¯½j–Gê7_Iljå‘´HX,Æ<Ây:Êg½²§‘µ6;š¹Fƒto*$><`sW¨Í>XSÛùÙöÎȦEqÒ58‰†[§4ÊàÕ‘&Wj-ûº»šò qY”M…âä]U×4’=ôµ°õ£FßD¹o®Zô”:õ´Áµ¸uœ8´Ï‚èÂ$œè4’tj³/8ýí´Ù¤$‚½„V,.Rî$ìAß½D.¼švEœ³¼pñÅñq‘ò$¸¾ž¶{IÊbßA‘7¬ÞY´îµÔÒ¤ûÒ„éd!.Y aE@®môâÐØ0†w]™¯ë,tHÀþ<Žx9¼£„s‡ ö!ˆlˆ¬©Kx$X’]ºäý#>ñ¾»"éÎ3 Ð(oÓ ?à8´6zG#ïk4OJƳñ=;‰¶Ðô{@È!ÃvàGr¿¯Óè)Ùr—l(g"ø&o”bØá€½Ó§¸˜žFt qô¤`!÷¹½¢grà·rH KxòÚ·Î(,‡÷\–o£Vİòý=·á·º³!.3é§sè÷§*ùø#P©³ô£Ü4U/ºéÓÖí{ÆÓöó äÔ±38r¯“‹°õÕ‘ùc%+3«>øŒ„M,ŠÔÓ¿¼¬½‡ÿ (»°vzÇó ¾"ãyMŸB E³Å®šÿôd…´ endstream endobj 254 0 obj << /F5 28 0 R /F8 51 0 R /F9 75 0 R /F7 39 0 R /F12 139 0 R /F6 35 0 R >> endobj 252 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 254 0 R >> endobj 257 0 obj << /Filter[/FlateDecode] /Length 1010 >> stream xÚµW]s›8}ï¯àfŠ ’xߺi³ÍΤÍ4¼5û Û²Í, WIÓ__}Ú¸¸i2CŸB:÷èêž#e Ë¢mdÿD×o.‹(ÏÀ"êM”E)ÊŽêw_â‹ú¶é’!#P€Ì5¯iŸÀ2h›üWÿûæ²:NF¤Òvö‡·7õûÏzRQÆÈŒÞבÁ~°Q0 $ê"ŒrPUá½nÏ0"(¡­w̱ †Ã}R˜6-]¶¾{#Ø×õ«ÇtI%[»Î;X”­b¢é·®cÅ»ŽŠµ4o8¦‚ýå–’ÃcØœD4-piCßAݰ9×p †é;ãËËzŠ—ºVšW C/¼š ÑàXÄÏ<$~O£Âç¡^½ö¥d/x;tý< Wõ¸õIc>ˆ†‰YR{,Þdö>UÌ„d/ŒöÌeÜî þ`Æy=é(D°Š»çGª¡-À¾|ë?Æà$Pˆ>^¸ÍÄ| ®é¶oÔ°f³ìßÍNÛPð>cläÔj‘6VbG"@IÒ<Ç‹ømOÛÇï&ŽSó@ñMËÕ$”†€”xì go½³·E¼7mKpcš¶¿Šõˆ0Ü Á¾ð{6Ý2 ’h…Ǧâlµ£>È>Imn¸è\7/C6×Ë-,Y%h/ͪnƒC=W4Ünhæw:³ì•6n㸶ïFKÖ²•rmåÖž…5ºÞæV8~í?·ÍÊÌúÿ'¬–m”ku|ðÛx²ˆå ï]Irw Ùµûb gÕšÉF„Ãh5éxa›«2æÕ¶!€ÞÒâY§]ØZt²h¶íÆãŒ}…QÏ#´è‡F*¾´›™¬?8°ÍE9{.ð:)¿6Œ“P|Æ0Ê' ã‚w{£ÖßxFcj&+C¹—±ˆýw©´R¥jVÖ‹ÝßH§Þ¬Š—¶š™r•bæ3£L—¶K˜îânîÑ]P¡É»ù|o¬À  ­ôCÙ7UNµ·á^f[Ö3AÕárG½è}í#Ú·ús‰µAÃ5‘w'"Å?qÔ_š~?xuº¿Ô§Ú Ä®éRÅ£rÌß4s‰åB;I5;î,,ÇR]O«HBå«èÀ£7†Ú6ߺvCOØx·’_ê- Ÿ§ ¦¬RsTßâ--‰'iẔÚÔ™ÜáßÑQFþ0-ó¼‹I~Ì&s!½æVT²'Rp0v26v* Nf€!êÄè¬øÃÝΛxóµ‡? ”X»XX`€‘ÖþÜßQ¿`–Ð}n~ÎrThõ_Û³âÑ}È_;`ÍkêCêVÈ@o:¯~ƺ„* endstream endobj 258 0 obj << /F5 28 0 R /F8 51 0 R /F12 139 0 R /F6 35 0 R /F10 132 0 R >> endobj 256 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 258 0 R >> endobj 261 0 obj << /Filter[/FlateDecode] /Length 1436 >> stream xÚ­WKsÛ6¾÷WðÍX ðÙ[šÄm:“Ž'Ö¡ºZ‚D4©¤=ɯï>@‰”ìŒÛæ".Àb±ø¾ÝUÊ0 v}~~Z½ºN‚(”E¬¶A,u(ã`õöOñfuk÷‹¥ÖZh™ÈÅe³P™Êzñ×ê×W×ùi³N3™k°A»y}³z÷6%™Ð¸6x· Ðö#Ë4 öA¬#™çã¸nŸð(Íe¦Èèª2“y.Ê£P»¥B¬Ûý¾l6ŽõÛ¶;ªeg]ÛðÄ¡nûÞ6;žm·¬íZ¼Ö£ß fXX·õ°o¯ÝvížÕ=-Æ:;v_tOp9‚ˆ%Þe‹»³Pð7ŸÛVU¦>l‡šõ•iXò“‹°ªdí¡âÐ÷äèû–'JvfÝ6®ï†uoÛF.– Dþµ?üÑö•7sº>Œàú—ùáO¡P¹æP¨<Cq£"ëÚ®qÙ'^ÕW†WÕfÛ£”ˆ};8¯¼úÃj2þ°P¹0Ýlo"6ÆÙÎŒÇ k;–ø­åû³oOëPWác<ð±BïRQ]>ˆ¿¢YùwXóåPf˨ÃHɹË8ˆ"Y$–Q̵ÌË(R‰¸ÛËT‰¿ =F8àUu(7µ”Îe¡ÌÓјŒÐ\\ˆk[Æc±ÄFû pÛt½5Ž 8çŠñÈ¾ÆÆºC]⥿PÔýd ´Þ]Ý6ëzؘÙt¤N¶£TêxªdÌžÞ©T]xÀg€ß†=žwïáS‰npÐÆô¤¶s¬¶ {v:FïÀc(™Ys–,-£\†ú;¸ô`Íãw:ÇÇ^  q¹‡«v>¾À~Ïvv¦1]é)‰ðŽccÀZŸ„fÁ:eù<ÊTÐ*Ž(SeZpumœ›¡í XG@U+?‚/e³ê²{übN²r¬ÁÅòòÒ8žìyUvþެܔ}Éñ…ugÊÞ¸QË_J¾,Þ©$«½<8Š)ûÜ9éÏüF5£äÈ{©ÿSoPÕ¾ „T2ðÖCä§à løëC€â”}Ú#€*ŸKñt6×6“Œì8oÁ¦E>ÙxþD¨äp-ã$§¿¨%sècnu¦gê¸Ï6“@'²È)ׄlåwŒ›·ö«¹Y®±˜ð;{’ßzRÊ)ÑùÉ¡? ÞŠ¡¼pfÉ'€I2}þðî¸ÿ墔;Ç¥CñËzß ¾ ÊXZ#¸ŸuíÖÔðŽH¤t¤!¾Â’!¬§ÞÍÁ3ú2»Ïc÷Ðu†wÔ_lè â‚!Cggó2w$Ù½­mcžÀž0ÜØ‡%¤²7;ê‹Ok©“aà¯ËXü¹—÷ý9N0£ï¬9ýDFáÎužîØ”‘ÎÜÛÆ‘¤à.¾Àp=†´•Î ÁJï2HvË6Ÿ[ïX[•îéµixT L’ÆÏr1%3“ǘ׻i¨eC9¾U!‹tL%À0†Çä4!î!¿ؑN h|»NÑCO…áe×+FΩñöÿœÆ( endstream endobj 262 0 obj << /F5 28 0 R /F8 51 0 R /F4 25 0 R /F6 35 0 R /F12 139 0 R /F7 39 0 R >> endobj 260 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 262 0 R >> endobj 265 0 obj << /Filter[/FlateDecode] /Length 832 >> stream xÚUMoÔ0½ó+rt$âÆ±n-Pjsî®»ÈÇ’d[ʯgÆãÍn»âd{Æ3žyïM’ä<Ï“M–ÉU}q]$"ç•Hêû$O2•sÔï¾²·õmÓ¥™RŠ)^𜶟]ŸJËö®M¿×Ÿ.®Ëc°2–— r„è—_ê÷7TX¦ðnò¾N0÷cxEsc’.ÑJð²<œÛä6TdžUdJneHª¸å&̈́лì]ûôÇÃ¥f.Š}i‡™v›i6£ë¨Êç-JÈC=bÀD9Z¶K`8÷¸j¶‡4+ öïæfèɸvsŒróì#.èžø¡áón„4¼PK;ö¿Ú©³zëÃcà½uÝ®múÍÿµf©5«™ÌÖMçû ö‚iZaåcì ÛÛxÄô!vÞzzÇß‘²‰çú¬ŠŠ—":]¿>Ü,Á¡©— ”äöá!Ð]»÷±•ûa¤B½[a¡[2G&`·K3Y²¡ lÌdƒÒ‘É „l€XŠ»śȯ9ጘ•§™VTÚ`¹e´æ'zʯ×¶OÑÙO󏇸|È]°Ç­ïÉ p÷=A ›yKöu¼?nPEe¨7~èü<6Ð<ÖŸSåz6HZ€ &§Ýˆ"$‰6QÝ«v˜â½y8ãDèœÛ2B.Î)¸=Œ5'gutfBƒ Eá¼\hM!ÝYvãú?ˆ—’-¸8b½R—€ˆk‡ íïˆRDè7Z,¢…# 8Ñ9`€WWàöц#Œkœ Ü‚ªôAUT…Ž˜¨:Z— §“™ùǘKSqY,c^Æ1¿ñT"häÙ¨_7-äôk:]¸UÎ~U¹¨òŸOài(t]ÐÖÍ´kâñÝîà ˆµ¨PÁ6qa€@ÏÎAŸj‹Á*ÜŒÇN4xˆ¾¦s›?ݹz_|N£H÷ÍèvQõ7YØ8ßáÜ› °xòAiûàÜöͯ½ÇÉÕ i'çi'øDÀ”:mZwׯknôo@W¼2g-K^Qñ'¿@ˆìAàÏQ¨èüLH“C¼¦—džË3î´„c%uTÒ«¿¡ýp endstream endobj 266 0 obj << /F5 28 0 R /F8 51 0 R /F6 35 0 R /F7 39 0 R /F9 75 0 R >> endobj 264 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 266 0 R >> endobj 269 0 obj << /Filter[/FlateDecode] /Length 1949 >> stream xÚµXKsÛ6¾÷WèH͘ñ"ÁÜÜ6nÒ™6™Zš(²˜ð¡”]÷×w Š”(»Îdz"°X‹}|»ËEÄ¢hq·pŸŸ߯^ÝèXÊ«í"Z„2bj±úñÏà‡ÕmQ-C)e ™f Éê¥H‚CV.ÿZýüêÆŒ›eœ0#á ·ûíõ‡Õ›ß`“N‰¼‹7«žýànQ,ŽÕBIÎŒæåâÖI‡j–Âr³Dºsoв·-Ý=œ ÇHwßÚÒnún*ýÎÂ@¤ÁG¡·—È }³ý¾|œ€Ñf›¥ˆƒÎL°o¬ãàY45[†‰TÁjidиgÁk8(H»«{¿ a›mñXÍyÐÚMSw}{ØôD ºoQewö Æpz¿+:¢Žbâ¬Û5‡2ŸÞCÆÁ#‹T< š-~¹*ÞŒW­»¦<ôž|¿Ô*ÈÊN£ô¸-‡ƒ²zã™¶mSÍßõE5ÈDÁºýr°õæ§ ƒ=j%+ËGZ®œw”}±/ ›Ïiž?£OW5NMM¿ ç¯+ê;ò¶A u¥t°Âw!o­ÀO˜:œ*gF$:Ïœµö59 ‰™Œ¡LswéG bK&\n@nÊ<õcž$,JAp-™àÍÜDLË#Üù„ª„;jÕyYTE?—+”‚ ܆Eò[K8z*Ϊ";ﲪBíÿ¿b™” 3‹çbU/V]ÿ§XâÅQÂäD*šŸ …DíC°+jKWM ´©0j ÄXLîüÖ+5”Fû¬Í*û s Ì1s¹ßeD+í=Æ”-ieÛ´D?Þ„“‡¢Îd{€ð1l+™9d %ìÊòO‡ï–±¤»q@ñš`¼ÒK€†ø1aoŸÅóz@nã€DB¤´Y}g‰6ÀÏ©ùD‚G‘f¢¹â"&…_í›ùn…ÎEË|¶Y³dØ‹ØÅÁ5ê¬÷²Ò§³}OzáÝçW@lCî‹§j½xÓõ%O½æx<ñ˜ŒÚÂæüy;°²ó¥XY„î f`˜ÐÔñ2GXÞé }{!Ž&ÒÁpîì‘€§é䑯û/¦†ñ‘‰œ>fÞ/AÖˆñtªÆ~€|ÿlÄó臥·ÜÄ{}Œ^?M 1ðdŒøI=á$ýÅö;L"È_X`ÄÆ8žäDABEç–sP9×so\ÝÐâz”Y{ç÷RQU]È…k_N ¤ %møæ±›¾i;, ¤w%\¸¹Y…ë¬ÃÜ«R3Mޏ ¹ûÖ†s,ØÚ¶Å …‡m-êZkIƒÔÒniýÄK½×îî\A1ñ{sæJçåÌ=*PJÌ4U¥â†=´‚“$Øfyuœêà­g¥)b¦¹^j(zî¡äÁu3¬eð~z?L$K“?Ѻ¹·›ñXÀfÐÀýÒË©A'eŽtÐÚÚ™–°K|…x"|퇕%â ܤv•)С t8n=a0š‘ Epå"BWlhmƒk»¦ØØîõ…ÀÖǸ}Ö1ãÇDZç³sDÄ¿ Ž8¢„ñdD[ë-=Í+^D©ëF×ð™®½"ö‡KæÅÂ*~Öº´ø~ÙˆÆ`ï1Ñt%Z/žQ$Éш8nê+ï.J0¨J&Éò¼ Â,¨XKê:šSj^€*(ÌÍ‹2[—ÙóAm¾9tÍ0-ê9@a°¶÷+‡^åø®^àAüì1‡M™]4ü þ½snJ{°(ð{B“B2²Ô=ÕÅl4 „d~ LÄå55WŸ©­Rc[õ>øZë°7>— zGÁ† ©ÇÖ@È$ø}jÑûöWûÀÈ'MäYŸwÑeRì020Ý4QúíØ¿`k"ý)J)w ~›uŸðÊõ@1 ¡(;ûLÅpUÔO?פټ€ÎƒÿäAì½rE7ÐèÐiH&ʤ»:.M’ øÿ®&Vß*(‹/$ŸÎR_ù&3âÓ³i_~5©Á_JÐC6/x¥k¯»‚‚s{šøÞSÑ·´¶ƒ®r(ô 'áV»O}µu[Ù5DŒ3ð w )k{¿ÃÄ‚Tò4G,f^þ„MسÝå˺Tíú™Ž”†ˆ%¤ÌýkC™½¸„®0o:✜ m 8-ÿi·?íÂSB}Mç÷”½¦’ñ1Âèà÷Í™ ÍA£®o³ânç«SäÂóh„bÆÃ£ãáÑ—¤V†IóUá #F ±84^h ÞÍÕ%s¸šÿ!QÄ”uSYy —Sîr:4‚~G\ç÷Kh®ðÇLNåéSù üQHïg«ÅßʊƳ»‰Ë78¸/ºÂeÇâ* ! ±lç5jPY5:ɪX#‡B?“U¡l'à ­“k‡Áp?y©K§Â%7GEHšÃ gC%;ȯ…B{h¡ƒ­…¡ê(FÊÒ˜þ(Wr¨`A‡Û'0!Y‚F8þÛäRkVÀ¿¢>CD‘˜Ç%T:éàÌBû? ßý Ÿ×nä endstream endobj 270 0 obj << /F5 28 0 R /F8 51 0 R /F6 35 0 R /F12 139 0 R /F7 39 0 R >> endobj 268 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 270 0 R >> endobj 273 0 obj << /Filter[/FlateDecode] /Length 307 >> stream xÚmQÉNÃ0½ósшë-‰sdiAHHˆú†8¸Ä-AÙÔ8,—zà43ò{ÏoÞÁ„ÀB¹…+µÚd@ .)¨=H9ÁÔÍ3ºVÛºMRÎ9â8Ã$¶ºKX&Ý$/ê~µ‘džXr§Øw—jýäHY¸ÇÂZ×þ ¿œçЂàK¹Ì lÿq”K\° ZÕºé8I…àH½™Ñ8}V¢Auk¬9ŽÞ$A•Ù멱q°}¬ý`ëÖÙŒÑX[w‡¯»j&öÝùL댩"vØ%)“ÈÌ”ê}í1_¯f°aKg˜º¼²`xç³úö æ0C8Úå4:Ã8ƘA‰Ë|Y8ã8.|’vÐø þ”gR¸·qzá«@Œ¶(þf(˜ëŠù0,ŸqöÃ€Ø endstream endobj 274 0 obj << /F5 28 0 R /F8 51 0 R >> endobj 272 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 274 0 R >> endobj 277 0 obj << /Filter[/FlateDecode] /Length 1658 >> stream xÚ­XKÛ6¾÷Wè(+F¤DJê-i³i -ú8Ð6m³•%GÝn~}g8¤-¯¼ÉÍÉ|ŽæñÍ7CG)KÓh¹Ÿ7Ñ«å‹[ñ”Uí3¥ˆ¢ 2Å+˜$Q2?‰r›ƒq›ûÆ~ Ãý8Òm¡yØ‚4"µ ·^±ÝØívîXÁDˆ¥íÉΟº¾O‰h>£a.Íñ£Ø$–™TKªÆ—¹ §Ü£ƒz eCÛÓª=Ô£äi½Ûy*;:o-UÆOçñópzµÀéÔ6lƒÁ„kª¸ti.. Ô«<“ ‚ﳉæj¸…dù„ûE–’~Ø|l,æ»éL³6´5©¾?iiÃB‰+hùÄ6>Nþ$¤ùþþ<| 5ùJ™¶Ù…òEZSbaºcb©xOy5ÏxhóŠ2~Þß½qM×$<2¶KxœÛ $øÝI¤7O+IM’'ÿ†: „/µ7Oå¹ôqœ sO•LVÓD/}„ Ê2¯ºŒ¼;ŠÍl•å =ØËqáÕÄmê¼<ÓºOM¨¨)`µ‘0ØvœÞ¬pª.ú¬¹u²:=qTsgºÞ$O57eÅ8Ÿ˜>KèúâÅÔYÔ›~ HLa_¡Ÿ›†âÿÿšÕO•'ù»˜êÏ<>Â!è˜E¼Õë¡íp =Â[½«08q€ìŽïÅùîANz Äéí®ÁòQ¬‰ bÜ‘Jcpk¸F²„F0 -D±ï°©úùÇOãÞ¾®jå…{Eਠ±îiæ‰sèÚš^kv1ü"ç˜Ù½7wô¨-Jb®¢(cüp¿ŸSk „Pž5]LÁÊ‹Rè_¤4¨ \?tãÚs¾R=çsÀÇÆlõX49õü=]=èŠM³=*ÓôÔ3!ýûªÀ¾*öÿØÎ³ñqïƒÖ|yüÊ3é©mƒ¸˜!€Ê‡È!fpbæ&®RbOM{=$kíÖú#<§opRYò‘sæÖÝã¿ SpQ±‡6ƒhsKÈšJÊàz% e¥“2ù«Èɺãø'°(<#ßêð@„ ~CòEšŠùKZ¤gLŠÂÿ“ôÍÒÖí endstream endobj 278 0 obj << /F5 28 0 R /F8 51 0 R /F6 35 0 R /F12 139 0 R /F7 39 0 R >> endobj 276 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 278 0 R >> endobj 281 0 obj << /Type/Encoding /Differences[0/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/visiblespace/exclam/quotedbl/numbersign/sterling/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde/dieresis/visiblespace 160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 173/Omega/arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/visiblespace/dieresis] >> endobj 284 0 obj << /Encoding 281 0 R /Type/Font /Subtype/Type1 /Name/F19 /FontDescriptor 283 0 R /BaseFont/XOTYTJ+CMITT10 /FirstChar 33 /LastChar 196 /Widths[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 525 525 525 525 525 525 525 525 525 525 0 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525] >> endobj 285 0 obj << /Filter[/FlateDecode] /Length 1220 >> stream xÚ­WÉnä6½ç+t¤€G©-7Ob'0€1nä8ºÅî0ÑÒÐâ‰ÿ>U,js' KK$«Šµ¼W¥bÇÁ9p‚‡÷wi b^Šàp â ’1WÁáû_Ùw‡Û„‘”’Ižò˜^?ê6Lr6é:üíðÓû»bU–YÎ 6œö7÷‡ÛO ”æL¢lp{Ðögw‹âY4’‚ż®ƒçQ¶ó(+xž8£’ç¼ #!TÉ>™c×c?G¸¤P,‡dw¶Mo*Z}ÐÇPÆìÏKß…Q–°?Ìq´]K`äɶ$9vô¼¥`º×umêÇ‚Üg(7(E‡ßM)P:vM£Û Šõ«gíŒ$§˜s#ÍV7P¹Ò£¦ãgë_“4ŸÃÀõ„Y§0Òt«¯˜ö·Tf8öö)Œ@1åà­€â¥Î[MGZzÆÃQ1f7`@ªŒu— I .}°ã’‚O @ª”l‹‚ù}Ÿ€w¸*AÜ»}²¢ëÁÛë1ï^¤²äL6ZXNuªM8”|Ÿ6Y:/•ŠÙÅ—v/½íz:p°µ© ˜„èóLBÑY;÷Fõ É©1•?Ý+“Pw¢³} Äp•ý³é3ö/D£W…øÌ„¿ „àeêá&ÿÊã¿@ô')»¯;ÌSž²p# v¶ö%°k6À…'Åì˜sßw³L ŒÑšá_@#©ìp©5FÿâðP-˜¼1ØT̶ÇzªÌ·dZ$«m‘q™AH¸"O“,¹ò€^¨Á$Á[HxƦ/÷ØïÉ,>SÿŒ2äEÂãaß[¨Q2a‹ º=£n÷ë“Îv‡íæ,J8¾]Ñ[$ Ëÿùí/à§'š¿æ:8Ãù©ë=î‚“KàÐCú/•ûÈÿã3plìü «}1µÇÅ©ïšW®u½=ÛV¶={ì4úlÙ=ùR­e)f^ý# ¼>‘Û Àj0#½{¸sÔ5E‹¶¦ÝñK¤ÿ²vd%Ðì mSað¥Õuwî&oßÕu«ß]\#¡…¯¿¿èªssb7)÷6í`G€«úí%È빃‡F¹O¬âqîny0ã6ÿû*`¼5`G”eZH—ÁáU…§ËžX‹líÒçpá'€Ì6v6°ø½Ä:gû«Ü„IÉ&ÈôÛQäµBlg,4èñ,$'‹Ù’;°5].ksõ¢þ:0¡ÖÀà˜ó€†F0žîk£ЛÓlÝG´›¦+ °´ôê¾BŒçÿ&Iø—ybaRI=n|Âv©Ê2ž%^8¼é.­ÈS.$ä³È¹,<+a$lEÊá»ÁVe«:‡ŠãÔø/í¿ñÖÒo`^™QÛú µæ+VÜMuývõS^—ë8LRµ?I1çTk<I"Ýé¥ÖëÙ\k<Ƴ3D¥¦wl»ÃƶðõN³k{b h5~f^u†çtu=ͳ’¦Ü†8Ë,›˜%/³ùK#ÏxN¬ÞüQp–žþ…2ÅÞª7ýE¼£+’8¾ž! Ûtî‘“¾ßü R\ endstream endobj 286 0 obj << /F5 28 0 R /F8 51 0 R /F6 35 0 R /F4 25 0 R /F12 139 0 R /F9 75 0 R /F19 284 0 R >> endobj 280 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 286 0 R >> endobj 289 0 obj << /Filter[/FlateDecode] /Length 1905 >> stream xÚ­XYÛ6~ï¯ð[e`͈—ŽòЦM‘"idèö+Ëk¥º*É{üûÎpHY²Œ‹ôŦ¨!9×÷ÍP«…áê~eÿ~Yýxóê­Zñ˜ ¾ºÙ­ÂÕ†‹ixøéÏ@±õ†GB7û|½‘±Þ4Ueê-=¼/j7ý®^Ë0òng²|ý×ͯ«Ÿoà„D¯í–R°P­ª•’œ%É8Q®>YâY:*ÂJixsó©¨nò§÷|õVå´b<i”*úõF( ¨%*Óƒ.8–A¿ÏË’¦wMGC32hv'+3²oSZÓì«þ“ ){p†âθø%Y·›©­36¤-˜Í´¶*· ௦«`Ϋš~ ‘UJ¤N)˜Øêl(šºŸ¼GwÛ÷ xß™v_d¦¤yk±U6De{·Ë‰ºxÀT]0Í{§_V€«ž­ !©¯¬ú¦m»¦í 3`$Š\‹ƒCogtÐÔ4Ñ?C,ªž‹aß’˜¨ï2Óš»¢,†5œüLs~×qû;3dø~O …5!Ëû¾¨ï¯`6]È'J“Ïû¬+ÚÁ‰IPà5˜™—îi¾'óéìÂYª]¢Š(fÜ#…T¸ÐÁ§Átx#ú¢ZKØðI)W z*Â$g ;@(UNÁÍìOÍHÓ ʳÃ`Õ…§1?TéXûLH#Ð1ïÛ`Ø'Ÿ™>¿Zè&tÌ’‹tKTCîéiC–QÊô Âs<É(²x’À†‹ „§8ð8ÞÔ`JOs”„$U¸3[µŠýÂðMkáƒãÝqû@³‘§udùQjˆlÑ·¥!§ÚÁí¹Þ®:ب£nµ[VxuL;÷žÊkzûÞOR&ô×ÝÏ™–NÊ)E6ÃñŽÀñ0„‚¡B'Ó`äO%Q áÕ…±sÎL'@­GÓ?‡b©Œ±FnXæ;d‹¸(§"ᤀ{b„Á—Ò.7Ûr¬ ·­çáqƒ$a±×e? íRS‰ $ëåúˆ%þüׯ!pQðhy~¯‘£¢ >\Ûºá\kûèÝ®Éù5&ãi²•Å]gºgâ%Ëû@IŸ{÷Ç Ï¾GšŠ‚ÃIB.XÿzÇP -DþE2+¶9ÉsÞî‹~h謗¨Úó*o‰oà-™ÎxK+h!ú†FD`ƒB²¥±5HkOqný¡º¥_ãÓl£ÃòžàªÿOÕ8«±„„ÚJ×]X'h r‰E–ËÈ–Kxb‹ËÜù;kl4SÔT®@ BÏÊ¡hË%nx¤.L{~‚ Û:)åmƒÃéÿ…Â5‚ÌFOÚž2¥g¼‡õÖÖÚ†¾uƸ8¥§äÊØQPß52Ñ2Ÿ`’Ž’hˆÏ=¹ön|[g†qîØÿ劎úCKQm:?ÓìÜÈFþ÷¦ÛÒ&`þßnGEÄÿÇhâì8vFðlܼƒ!΄ÐJú‰Ï,,€åíú +©r•r—ºæÎ¦jº#Ïà(¼HñH°å>pÚi+ ÚP‡Šó£B> ´ÖÖQìxäs d|•àIÄb9Å…9 M±ÉŽ€w· 10V6@Ã󌤡tÖýÂÆ 3À9иVøà«7Ìž«3"–Œ{¼tmu&ÙŽx˜˜û¼Cˆc‰²ÇN5qEÙæz ‚T1Mú26#w"öZ¾7táÄ»€M‹™E¨94‚¾ª´_º<[š• å’ÄÕÉ .Ú¥¥øGOD#¿KßßÊi+Ç.ñzi>×e>»[Y­.ûF 6c  Cè÷Îì0LëÓh ð2tk xSæAÃÜžSU§é%WéÕ>ÿÐtÚÝ?„»|ÄÛÆñB=ÐG¬’H£T%¿á’žvïÐQ]qg«› zÃ÷=5ã'¥™&›‘ìm§i»k».+xc·­=\¡Æz‡|C`Mdp¦·SüŒð_š{Ç»1ò®ï&é{Ã$2b¨²ïø@5ü\{¦ãâ+íY¿Ôž©è¥ö¬j‹ëz{o¯!’œµ¤Î#4«4õä]O@Ö®`hÏj0øðñkM¨ü]SWîÖâÚßk’86iÄ©i‚ýüÄWžF¸s iæÛ+z6ô7½fó-鳯‚lð4yQÇ¡&ß‚p· ÚëÁÞp¨ñÈéTêpd‚sדð‘Ù­¡BË“.—ÊÊ\?Œ­ŽGó¦<§X;õ¹NrúyiÅõÈ4†Š¡#¥-²·b (®ßÞùeù_3HÖt¹ÏG1¡ÃÈ¢ ¨‚©˜2JDâ¬ÑÜ€}%ŠÝ™­h%˜…òò­Ú/ÿÏVÓ²”²4¢:3¸ÙÁÝ‘%Vê}_8ØïOàÈÎB€\9¼›´Ÿüм&ÂP,«Ä$DêÈú»\R’µ endstream endobj 290 0 obj << /F4 25 0 R /F7 39 0 R /F5 28 0 R /F10 132 0 R /F12 139 0 R >> endobj 288 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 290 0 R >> endobj 293 0 obj << /Filter[/FlateDecode] /Length 805 >> stream xÚµVKOÜ0¾÷WäèHñ; ‡B¡U¥¶¨„p0‹w7"›,y°ôß×ö8°„@”Kâ™Ìxf¾ND0!Ñ"ò¯oÑ~±s$#JpN£b‘(የøz†Š“r'œsıÄ–?u³ ºŠ/Š;GÙƒ3W)θÝÃ{ÿr\þ±N2EÂÙF‡EäöÞø(+­"Á)βQ®¢“g2RN™ß´X–]œ°Œ£µnuU™*Hmãhfº®¬ ¼™B¦íʦv †–:8_zccj{ÓõæÊ­Ú”ý´ænfl_mªÖtCÕ‡Mšà­Á‘ªäàøTû¦q^›¡šûÂm ÔB(} 瀣ä¡H™¸-û~ [ 0†U v§î ¾îíml ¹gž»—¦Õàð"h'’¡Ý¦õÊÅ$\®0ûxCßgÕ`QjñØI×&QŠsÚDiêý­“À<¶2“¨œÓÉöÖ–IœÇ)ÓΛve)C+íZ RæC=ëmûü@Ü©5ˆ®Ó•U¹Ò ƒã$SÒ‰ƒY³Zéúª“ Ô´×a3h´[Á44£Ø;Ú§¾š¶Ïnº®Ì]rK‰t5¸ÁáœA†bÕãb­3àrÚY#0I'&ÞÂáe›c+ª×CŸÌK;zeœN¢fè§Ê³fí1Â_¼ý7Nú!qîN Ã~b{§”}=M4ÇdœÂ²¾5m?ÙJ(Ìi0ùeº70=ëòÎU·´À €%RbžÛKo‚¤˜Ë@oâžÞØ[èñ,Ðãù6½1AàB±j bï¯WSŽ#Ã$‚ 9gH„-Žób9†Úâ8'ǹ(÷®#¯MïØŽ=ÇtXí±’}ÿå8W£ Í0üalýÞøbo©ûñ¡\Ú+þ§vŸþÂúf‡2Áì* ÓÉIªOÿ©gâ endstream endobj 294 0 obj << /F5 28 0 R /F8 51 0 R /F10 132 0 R /F4 25 0 R /F6 35 0 R /F7 39 0 R >> endobj 292 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 294 0 R >> endobj 297 0 obj << /Filter[/FlateDecode] /Length 743 >> stream xÚµUKOÜ0¾÷Wø˜H‰ŸIŽP U%Ôª¤'à`v³5/ÅÎÿ¾ãGv+­Z!.ñcÆ3Ÿ¿o&F)NSô€Üð•'—‘•”¢„¥˜£òü&úR^×mœ0Æ"†NýôJu1Í¢I5ñ]ùýä2ßf2Ã9ƒîô·ÓŸåÅ/8$²ˆ[_tQ"ûÉeáXJÔ"ÎÎóyÝ ë·ˆ.ÀœIœ17‰"% .{¶w,pš‡Üj½öæEœ\bVû)ØÝeÌc&öNOöÓÛ Õ­z¨4v¸“B`ž¡„f8-þ„žî‚¸žîͨVæã‘´Scê¡y9 çjvúp8ëz[¯«£`νˇCYõíp\$£L­M½R¥†KæÎ¨±ò ÎM–à¸ÜƒKrÆ£rvÓFu‘ím%<%j\´å¶3<ó8Æ‚D•ÿ@f@£ ¶ŠEêwdÔVv¡ôä}Ûª3úàv„e˜ö6ÒÕÊÔ}7÷çY‰X °\‘cé‹¥d˜óW·qœ!#K‹ƒhÛbyñâIJ3šjý>Éš©í’¡é¡sQwTÀŸÎÓ¿|nN\þßÚ¦y«dpqî2ž°ìuÃd’MÝT‚®vòö“9ܼéÛ¾c|wÂï8óTàBî|‰õÀþqwòl‰}ö 9›5½xùì¹ iJ¨çfY¨;F‚¬Ÿþ‹Á endstream endobj 298 0 obj << /F5 28 0 R /F8 51 0 R /F7 39 0 R /F4 25 0 R /F6 35 0 R >> endobj 296 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 298 0 R >> endobj 301 0 obj << /Filter[/FlateDecode] /Length 1051 >> stream xÚ­WK“Û6 ¾÷Wè(ÏD ß’Ž›×6Ig'ëž’¸+ÙæT%ÇÙþúµ¶×ÛÆÛúD Á@J8ãÂê_¯næï?Ã"“§m“÷ó}ïÂ.šY›´‰V‚ÅôÝ$·OV‚:·,WÁo6Ë„µ0„Ýó½aÉx÷^ô›Öd!äÞÄJfóÖ3CGü*­´P`ßDŸu3L>«'N%V“a |RrÜ&ÒXíñ#iu‹=>¯šêÌúÉ#¿@ f™‘š®^¶ðMÝ…[k€Ø/ýÉcß&rKVÚé—H3NŽþ~(”ÿ‹„2…a ñŠz%ÉùéõÔк•Ó¥dÌ‚_þã,TÒ endstream endobj 302 0 obj << /F5 28 0 R /F8 51 0 R /F7 39 0 R /F12 139 0 R /F4 25 0 R /F6 35 0 R >> endobj 300 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 302 0 R >> endobj 305 0 obj << /Filter[/FlateDecode] /Length 478 >> stream xÚ•SÉnÛ0¼÷+x¤€ò…«(»$- -j(ä@Ût,CIN¿/·4qÝrâòf‡Ã!¢@)ºCqø„Þ7W 1 5CÍQD‰š×øC³jû‚!°4M¿š¡àMWÜ6_.®ªg²(5TÂ÷ˆìÏï¾7—? QëÏ98ó·ÛÁ"$Þûàûq4e9d×vv0½ …‡c¿¶ÙÚÅ—Ý4ŸìÞ·ö!ï\»”H¸ýŸ0ö¯èÖP—#}lXÊ÷‹Ïý»gáÛ1¡*ékÑÙT`o“aœR~öz’û™ÎÉ"çâÍoéù² endstream endobj 306 0 obj << /F5 28 0 R /F8 51 0 R /F6 35 0 R /F7 39 0 R /F4 25 0 R >> endobj 304 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 306 0 R >> endobj 309 0 obj << /Filter[/FlateDecode] /Length 1315 >> stream xÚ­WK“Û6 ¾÷WèhÏDŒø’¨ÞúHÒéL;Äí%ͱi[Yr%y·Û__€ -­åîz'¹H$‚¾ ™d,Ë’]âï’ïW¯ßê„g¬äÉj›dI*3¦’Õ?¬>T‡e*¥\H¦YFÍ_l³Åâdëå§Õϯߚq²Ì f$Øð³úî·Õ›÷0I …ºÉ›U‚¶ïý*ŠåyrH”ä̘د“—iVÂp‘³Bz»é2åy?¿z1*–,3aíãÞ6C{ •‰-“á"¤óÁÕn=PLjÑ¶ÙØnCB4‚‘‚!F–¸MñœÉ®ÉàºêÖ¸RÅËÅ[äD# YâÅRË¡zk¿:*¼Ž®|r [Þ4öGÿ°üÃqpaÆ“3%B„Ó³ †a¨°dr“-²œ•‚ÜT—,‚È ÍÁÆ”®^0û> L†¥>Fq%1¡fL|y-°œ³"ÆÅgQéq0@Ð5@§­=Õ®z-õ½“£œ8»öØUPö(%pŽ*5ux‚–’€ü³íc©Œ£ç‚5Ö(¹ø’‚yW¹û´Ãõo(™ Hè=ÀkWo¨ƒÜÅ?𣖠ú–~´Ä#ݳ¥Me!×M±$²ø­ž!lh<:·S­4î éw†„P›ŽášT}I¯šÝ+èùh"Â7#ι¨ŸËÌeÞg*rÃéÊV0±ZV¡0µÇ¡ŸF\‹—"„qÜŒ,Mˆ´,µkvÞ„>“ðY! ¦Xê¦úgcÙ@:#Ï͆ʊ3*3S0”` ü¼—°30ÃæZa’LÏ€!!.Á¯´/ÄcÛ®m†ÜÞ€Hé õuSá5tíHü™Î¬ }çBI @2K5pº=uq6Îg–¯íví$3*´°:¤û/º'Èç XúE. êå\ôêÔŸç%Ø+*C‹ä~¬¢e6dRãuzå¤Þã–Õ¾t |º/•¹F@ü .¤Acâ#QB”€{ž™¸5¶…8ºGå6ø&¡h ß·§zCí€(ͱßÚÙ~˜û¯™ŒTשœÇ§ž+’CB–°î–°\ëo¥(ê†j 7Šƒ‘áÄ’<wv¦é„IƵ#ŸGº‹§ÆðôÃwJ8g¥/Íœ &(ÕŠØW\h|9ˆj;³ê“{íw.âpZN_(×ñvxíBŽéÅ@âÙq©âäùk/¼8àã×þ½GË—ù<>~0„T Ÿ¢)¾†(„(Õäޅ쟔¤}õo<Ì$‘ŠmÓ3Æ>Å•¬Ìƒ :c’¼œ¼Òé5‚”’i£` ‡h€¿¢4ˆ,›Ã¨€Ue, 2>â¿ùG¾ Û endstream endobj 310 0 obj << /F5 28 0 R /F8 51 0 R /F7 39 0 R /F12 139 0 R /F4 25 0 R /F6 35 0 R >> endobj 308 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 310 0 R >> endobj 313 0 obj << /Filter[/FlateDecode] /Length 1042 >> stream xÚíWK“Û6 ¾÷Wè(ÍDŒÄ‡DÛl¶Î¤ÍdÝSšצ×Ìèá‘doöß (Ûk9î¦ÍL/½˜ €ï#@G˲è!òÃÏÑO‹×·*Ê3VåÑbeQ*2&£ÅÍÇøÍâÎ5I*„ˆS,£é;Ó&¼Œw¦N>-~}}«Ê¢(™`ÃkÿòãûÅÛ ¤ÊX¢lôv¡íGŠdE5‘9ÓzZ×Ñ÷¨xæQ¡YɽÑß·£ëÚN>q[± mp–‘ëi’æEƒ,‚Ëtp°L³­íÜXQ1ž¡ßv F{Ÿ¤ðk{JA·¦q2 »–6¿Ð`Úí?Ñzåz»$çýz u°(ã­ûb}>£´ÔŒWDzêűì}L{ö¯FsgG<^ËxÜXœ(¯I3¯Î’TU:¾M4„Ù“lÛõ  í…†¥i[×>¼‚eUͬ¬÷ÑÊ,Ê·6»z¤p÷‰’±©w(.8fð<ànæÀµó0xÆô† 9ì€ à›È…Ì‘Qž³Jæä:cЍ#Y‰Ì¹ÂÔ<þÌÝzv ¨pÅ4¹ÿ¦óLß'( ¤ÊcƒÀ×w)&PióO®Ê#¬8ÒtÇŽV¦ »yGa?nl¶­Y¢â†Vp ,éhO;ؤ¤ƒÚW¬-ÉïÑ8O6ÐD:ó¦f4DÉuß…ËoÛv|DÖ0ÊÞó«ÊÁ|îÍÿ1 sç(rÀC*.Ñ—àFºvµmMcñƒ¢Ïö>vTcŸ®ûð=ËÅj×lg† jé"¼ïæDqS×á¦û<—ó,ˆ"bº‘ÂÃ7tµ½ÂjQ䬤γç¬víº»Në7lkƒž> ä*êÀ?zgî}uêvã ä%ÆÈÀ¼ï@ïùu6ü7Èß»ÖôOkVP®Ï B)&Ü ERÉéÂù éÒÿQ»Ø4OøÜ4¿ÒjΛ¦˜š¦|Ö4ñ° Óg¥•Lá?<ñäÿ‹?r¯M °‚—î»(ÿ!E¦y–ñY Þ£U‚*ôêþ‰mpù endstream endobj 314 0 obj << /F5 28 0 R /F8 51 0 R /F6 35 0 R /F7 39 0 R /F4 25 0 R >> endobj 312 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 314 0 R >> endobj 317 0 obj << /Filter[/FlateDecode] /Length 1540 >> stream xÚµXM“Û6 ½÷Wè(Ϭ~Kê-m³ÝéL¦™Ä9%9È6m+#K®$ï6ùõÊ’-7íNÚ“H€vÄçÑ.òŸ_£Ÿ–/îM$8ËE´ÜF.+ãÏ­[ŽK#¤a™õGÞºuSw}{Z÷YÐï JoIïÚ²iIÒlé 6Ò|µHŒ?»uO‚mÛx—è¸ Á±m`‹ñ[ʦ¦µÒ¤•cÌ^Wz\ï»bçhG:Û!ü–£·.1Rã5á†d[V®.L\@ÍMÙº©ºé¼mžÂüCsDMcìÓ71þNû|ð Ë1L’qbÇ›…’qÑÂ¥à@ÐËu~±lÉ ÓmeaC¸'±£k¤:PȈ·µð¹vUÎx¸æ#ˆk†¤aÏ;W9¢Ïã§}¹ÆØïqšQ¼¼Jð¸oè[ÕÚ?ˆ\1=F±·CìÙ"ÑÊÆËE&ãÆûLœ »³pÚµ¨Ö·#7I€¼Ã¯ØË]ËŽ¤#L#dÜí›Sµ™ÞCA•e 5FBã×s^ƒŽ0ëV]Sú ~\‡‹ê„S°—މxŠŠzŽxòÏìúêÐ *Åäpœ\½F§¥:&–•w",|ݨúòX•nC²ÊÂzAǺ¨“YÜôûdn]Yï0ÇäÙèumâåÔxëŠÓ˜ˆ°iÈü†¾§Î…$nÝD!'¼±LY$ሥ•3þá p |yÉyaK-ÖR ˆ/ 4Šü, â_H]µ*êMUÊ~ “O‚/2ÆÕwÂ9z ‹×°@ªRueíþWL .M§˜Hp ¤*õªöÅá€tø(ù ŒML~~ „*êú iR‰ „ &EÉŬ~f]KŽç2ûË›¶C’ÃóXTÇ}A²Ê=.¤]EÓ->y8x^ôûŸÊzÓ`J>AZe2‡´*»¥l¬û oÙ|>u¾´Â„^W«¦yLI ‹þ}µÃ ‚‡1†—y>Ö:-¡XÕ¬±Bj ¥³¨wŽdCYºŒ®LQy†ßp&­öÍü´fr‚˜6,ºpSÊMüÒ7+}:×÷äW@ v__‘“b2qëÍ›d¸é_ `6Æ÷¿ç½o pT\/]Ô›(ñÞÇNíT©¤r­F;}ÉßÞH³tô%½3#¡Îæ#³ |4&#ax X9ÙÔ¡¿“ƒÙXç¯[¿‡¨~uÊzÒ)$³^€”ñü¹Ù ‰±o6ÿ¶±|H~60¤‹ˆ½*ŸD ¤ïýÜã»UØ_í.­1·OðÂfð¤R“´SH.“k¹»î›¶»›Ùc @ µÛmÿ43D ÜGši·Z=AˆKÈ+&ô»á £÷w¦ðÒI©—ßj%_>´<ØÌ`~ ×Zì$iß¡Üíƒö•wm`DèçWeO¤ØçýüuAvhóœþ`†ïRn|ƺmNmyã1Ðj¬ Yø¾s™Ó•‡cL½÷*)ñÛz¨¦¼‡[æߊ?ã5 ø’¾XUn†2ã,#J“ÿ³áP~E¨8%x&Ó/ TñÇ'TAØ`…œô’RB³íÖEµ>UE(N°Þ·å®”j¡÷÷‚í©^Ó¡ÿ"*·rEf85<„ĬÀü™œ{ï í¸ŸUSûIã$—ƒýÖ§²ßeîúǹ͙ @¡±·ÐJì{iKU®Ú¢ý‚Pn{*dúÿüM1ß{ùè …dSC…x±Á©†_KEõb_TÛ$xŽ„B"¾.ŠÁ‚¸£Ì’œËy.J Õ^ÙÐ]þð¸umT endstream endobj 318 0 obj << /F5 28 0 R /F8 51 0 R /F4 25 0 R /F6 35 0 R /F7 39 0 R /F12 139 0 R >> endobj 316 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 318 0 R >> endobj 321 0 obj << /Filter[/FlateDecode] /Length 1378 >> stream xÚ­WKoã6¾÷Wè(×H阶»}[‹íö Ø´­®-e%9Aúë;ál:VRȉ9œù8£„3Γu⇒oç×óDpVŠd¾Jx’)Ît2ÿþ¯ô»ùm½›eJ©T±œqš~ªš™´é¾ÚÎþžÿ|ý±8VƲBúÇ›_ç~ƒC¹M5Ê&æ ê~ôV43&Ù%Z Vã÷6¹}Ž(g%l[ìòz³Y&ŒÁ[·GÁ’ñ"Ø^ÕÛÁuÙÚ5®«†ºmH8Ò*xÉdÄoÝÖ-†~–å9O‡Ã‰H?ËÜ¢Z>êb€—&ý£6´·Ò¤3Y¤ívBWgðàÎܘ{‹Ëº‹g¨TÁLÀTU”'÷]{?ËÀ"Â…6­_YÑ–ÆÞ_`!JUò”âöä#‘yKź]¦2'sn·êÜ×½kO´ëÏï&¤aÜŽÈ›×õ.[µû®°Ï/Y”Lˆè–£YKŠœ‰"vÕHØÔõ¦ŸŽ0R-dÄ0÷’’åŸþ,<‡ë'ü,±¦Œf™(——©ú¿‹gBçÌè$Ó‡K“¹n ïÛí‰ü“1Š{§g²:¸nnšâJKKÀÙ¬i~Wùí/f˜Ôé?àŸì¯æñbW/ÎÓX09:eSaˆUž¶÷C½Ò€“~ú¨,š'Ú}ܸ†¶(a²¬†Šf>K”Mû]K÷6,¤±·åñíQd–i­ƒœ¡Û»¡ª·Ä/éE ´–éP}ñþ@©ÝX.^*òŠÕ©ÐQ¨\X(²åuÛá¼H÷=iÃeZ¡ ˆî°5Ò Öki1„^Ô»Á½;±H×ì¡2qŸs_¹š‹Ø9´€7Ÿ(U˜é1µ¶à‡ª›¢!+ƒÈº~˜ùúC)}5 žÑ|çúý¸Ó‡ChHÆØ3àz5<ÁèÝê®8¼Þ¹°±ªz¯k|Ø€”_¥ü" “¹ý.€N@‚yî(×<ˆ@¡jˆÎ/-ŽÅ `® GTø·'ÉH7>*ŒÂNmìuR—]楘Z¦íñ2²ÈÓß{t¾,Œw>­õCWÕë ÆÈ¯h¯¤.Ž@¦ ¦Š7¡~Hä‘H´‚Ô#Ð8sC–“Ȱ¾PŒÍvûÔ´»ºÚâZ•œ¨øò¾H 2pã…M…2Ô =z‰fió„¢r`žÚê¡äèJð%ÿ*+×Ëzµšt¦» (À@Ê“™—ûÌ{C ]½>³ -£æCH]!háAï|aaµoLñ³htä´ ¯wYè¼ê¨œªµ#®ˆêʼW] ÕÝÖM9•Ge¥Äx=˜ÜCgQm{ÈF|mpéôÆÀî^k?YCÒ7¾o@8u™3•T‚JÅá<>Æuô˜àÖIO‰"ØSâF=`÷Î=Öø~… xýQ ŸÖî}\þr›ÈåoryôH¬é)Q7U|>«°”omÊþuÐŽWË×)àÏ ”)+€cC‹¯|}CkǪ¶|ªª…ÌŒ&Å™±’Ù“‚F%c—…ê¡©ê\5¾Í¹`úäõ©Ð'öpø(¦@ÅÄøSÇ'0Ò‹ªÎu«¶Ûõ¤®iiD4KK¸2øAç¤w@€h%B‹ˆl ð}W ±Ž±+8ÇàÎT0QN€#}3Ã÷¤ðMq0Âs.5Pö>¼Þ^5;ë Ý”Z‡~?úzÝ`qÙ-n÷Ãý(‘—¬4T,R3…ÑÊ­_kÑ·Wö ð—\¨éOÕÁ¸LŵQ’syÞÓH˜Y£lø/ÿæ?8f² endstream endobj 322 0 obj << /F5 28 0 R /F8 51 0 R /F7 39 0 R /F12 139 0 R >> endobj 320 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 322 0 R >> endobj 325 0 obj << /Filter[/FlateDecode] /Length 1106 >> stream xÚ­VKÛ6¾÷Wè(1#ñ¡Ç9¤i³Ý"›, Ðí+Ó6»’¥’”í¯ïC9ÞÕ¢M^̇†3ß¼¾q’‘,K¶IX.“ïW/ßò$/ Í“Õ&É’eN3"àðÃo© ‹e^Pž®vj±d¥H?-jšª;àéÕ~ÁòÔ)³‘Zü¾ú9ùqz+‘ƒ"FIÆ“.á,'Uuºh““ÙœÔb2[焲h6»9釃· ÌA«£7ðòm™ä©'¬TxkþÍ›ÕGÝ¡ˆø*ÂÉz‰FîKžñT¶¶÷;‘‚´JÔÕŒN­ñtÐ7q9.h÷îL¿ Ez´Ê@„ Qa€¼ÜM3- ¦ßÙÍ Óš“òÌYÝ‘f«gð…ðñA)'ïƒj{Ò¼ !_²Šy]]"0¨Æé~ï%9Oû ®Þ.Rëä~-Í/‡DÔº¾‹Òà¢AÅ ¸)Y:@¼K›ÞtuÕ€zgÆ`'ÈÑÔâW·S{TÖôÝ Š@à> Î+X´P@ú¯÷ò) 2* ™Ðn‡Ÿ\zù¤¤*ê˜øŠ(´í÷øL[¼0ûÁ14Q¦=X8CŠQ=h;ʶ}€Úg A.ì½ç~ÅÜ*ülÇ;gd€ƒÒ¢ ÖQÛÆ—ñö\$Èiët#Ûøt/Û«-™0QÀ ­0¢K‹N¿¥²ò"JMEŒéˆH‡,¡þÞÿúyé£h¿ßü´º~‡¯n©(Û9¦¼¦¤®¢9€4¶Ò)²s];VrÂY”$§ÌÙ‚å©ÊÈ4²Å/êÏQÕ)ä%‹Êsz¤ ¬8 à--è nÂëA6ÞûÉÕÛ4*;Ês ™I~çÜ0S))&ï/æï ’M©xõêÌÊ/$`Ø©‹Þ„zÝÎÔ×áeTp»@œ^8¬¤¸}syµ ­àô]«Î«ñ.ð¬§5x0 Ü2/ɬɨ·Åî&”i§Èmì šr’!Œ íNo.øðŒý°û/æ_C¸ê*mZ­Qð|rÙΈ/œ§ØÕ8.üf­íÐÊØ ^ææý%~Áj‡¾\rÝ[ŸŽÆü‹Í2Ø´xcǹ¨7nÎ`Žü_ñQ¿ß£Ï­Zoe¬Hþðpll¹îô(ÈH×›hB•_ðØ„,6á1Ф Ô÷NÙExóH ‹H> …©l‹TŽ0 @¦Á#Šé;$¨ñ ¾ ÃÇßÿúþê3îУAŸ¥JÿtN,d£·£QÏre=‘WcôàÐÀ^©µ3¸„ˆó¬¹~šñ/†?l5ö@¬ÿ~ˆcÚ÷Tž‹³#¦Fo1-‡Z„QI‰÷›©qÎú6L!;Žõ#IîY J!ë[2ù[“º8åˆzö~\ã8eœX‡Ü7mÎDÅáÛÙØÊ_ šeó2äézâ(VÅ’úîoÊ<µõ endstream endobj 326 0 obj << /F4 25 0 R /F7 39 0 R /F5 28 0 R /F12 139 0 R /F10 132 0 R >> endobj 324 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 326 0 R >> endobj 329 0 obj << /Filter[/FlateDecode] /Length 1639 >> stream xÚ•WKsÛ6¾÷WèHu,O><“CR×i:vš‰•é¡î¢(‹SŠTù°ìßv!Q¦¬¤ Äãðíî·‹ gœO'îïãäÃüòFODĤ˜ÌW>™ ə뿂Mg"”:øTµ]Z–iWÔÕôïùï“_ç›ÉέP’q=ÙL´,Ž÷åäÞã –Ÿ&á Ø@H\×S%‚]UÖéÒnpyc&‚³ÄJ»›]3_çәТN“·¶Ÿ¦2 ò¦µÇƒŽ0¨WˆP×L–ùe~_lFûȘ…Šf\N‹é ënmaã mq¿ü9Ïú.]”t–mS?6é†FÓj‰¶î›,Ç¥Yí –¹CN‚,­p’Ý"hYۛ쪙cˆTŒ+ûÏ ^ß”[xÃUSolK#ºêЬHËñõ…f*9{°š64cç] j[t„ÿà*ÁËtÈ"¼îºí˜WÉ?áj¼>d*¢ÑwïvŽ¥áïUֵſªnÜ×ã=³Æ´þa «“0x¿\ÖYÁi_¦±ræ4ÚòÔæHÙƒ4Q™·È³âÓò¬RÚØyJiÙÖÔ²”…Tþþöã¹ödeU¼cçh­>¼Gm׋žò¾‹µÆ£ÀPŸÙ‘öèâáÑyCxö˜Ð_\:¹Çòئ[ ‚F‚~òÆŠEÚ¿½œªÀÃhŸðËehÔÜ„rt£¾C£ÉÿíÁîKÇRžYÎ£È õÁ Þ.e|é+“øÀ`Lï®Þ]%!DÉo(TîyÏFpÒæ‚rHZè˜ä…jÿ%YkÕWÞ°è,ÆËÞÆ•ÿ‹9ò„NÐ주„^´Öܤµ3õêðªf„h¢P1ƒp·96ÂêZ†ç…÷ðAuvÏT>K*we !óp„ƒ†|k­%ägçŽÒ§gÛØB• ½› æ[Ôh¹¬ÃEA¶ë"³^bW8–7«4³fÒ ˜ÙÁWs^ú ™×ÌC<³ä¼ßÌhÎ0)¡g¶>A#áš<„–pû¢r¹-bÞJÛG”«hS¬4]Γ`BNˆ²»tï12å›<ñÆ‚–÷k•Ptÿôb… endstream endobj 330 0 obj << /F4 25 0 R /F5 28 0 R /F7 39 0 R /F10 132 0 R /F8 51 0 R /F6 35 0 R /F12 139 0 R >> endobj 328 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 330 0 R >> endobj 333 0 obj << /Filter[/FlateDecode] /Length 943 >> stream xÚåWKoÛ8¾ï¯Ð‘"†OQ2àÃnRw»@hUäÐô ØŒ­…†Mº¿~I»–mÀ·½ˆ9Î|ßÇ!LH°\ó6ø+»^È€œÒ { Hq‚EÝ~C7Ù—¢ #Î9âXbÝ÷y2…†¼ ¿gÿ\/’ÝÇ›¤B±µ ÞdõýäV8Žƒ*œâ$ßËàËaDLa¦‚(N°bÎñ]˜p¤l4 uE¯!®{ñP²ûV¤˜Žñlú~ ûÎŽo0›~cûÙùü)ŒXŒìSùç šghŠzÕ@¯›5­é$h=YRYê}Þ‡~I¶3ˆᘘ„Mh’‚‹Æ{Ž\ü,ÙŸ,e@¦†7éL¾vzep"=ÚØ\'ïzÛham†¶Ð~ªoóº3†UÞMÝÁ`óÖÛ¶ #)Ñ¿zù2+P^{ÿE•¯u‡ÃHp‰îŠ~Ó ½÷º)¼qY<´yûBV“÷åw˜g˜œ<e äWAW6¡ãÇ ¯Û+4é¬ kîÍMÂl—°‘ÑAÂØÉ5‚µöP|EÒ3dP’ ×(ÔûÑ“ºKâœì¨¢˜±‹dgXÜÖëSºûº3pî¸@Ÿ>¼õ°1©J¡~޺ț¶ðÉ+ÅÝ(ˆ™G<ö+oóíð0§æÛM_•Ó’ò]ÈÇKBBm÷nþ3äüf̵ß͘a¥Fˆ™ Sï¶3bgj—@Åöµ»5F£9tFªw¯4E#” §Ê-#¸íE«Ä-¶:N *£A³ìŽëFP,Ø9ÙpiM/’M«óUYÔúéq“¡ý¹žéç~âPJLGFŠÚ–ë^·¹9Q~Øú­½ 6º,}1NwOx•Ò…ÔÃéú«$Vòlý–ü"²VU^šã.â-/Þë+ý0¬×…«LµJW9]¼š4–î4|ݻނàöl¹f9[6Ó[ƒ= ¢°¼l¯,ûú<ê·ïn>¾7W%’¾\xÜËàØ” ¾¶¶/EFŠjëò3×{&íM̶{ @Åî`üÎ^o,=ÒT* Ç£‡[až¥GÚmw’žHŠå/ûò(M6äïÍC×u3½æ·Îà]©ݘ'C•MP ¹AûÔñ©p¬¸•AŠÓO&p*l5”8vF{0NÀ?¨ý·¡\&ÂÌÙ©Ÿ0A¯`¯0BØ´ü2b+9¬+ˆÿÁùãÉ%> endobj 332 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 334 0 R >> endobj 337 0 obj << /Filter[/FlateDecode] /Length 1821 >> stream xÚ•XKsã6 ¾÷WèHÏØZñ¥Goénw§ít¦ÓõL݉‰Ù‘%W’7ñþú)K‘“N/‘ ‚ ~ø%Jâ$‰#÷øý°÷QE<‹öQí¸Hb ?>üÉîâÍŽ«¢`wÍc×Ûñp6íŽ~ÜÃö\GON_Š8QÑ1R’Çy> šè³³žE<‰‹Éz;¥³þ~ÿÙÑÞ»úªF$MÔ8fØì„Ò¬ÄGÊÚHÙù¸9»IÆLO Ý=-hdl4½FÛ>úÍ“÷âšív ýòt‚—œ™¶¶Ï$ªÍXÚÆ¯ÝÑ,O†¬Ž¦Bo­ýçl(/;r2kí"åH!ÎÒ dœJâ+I±HgIˆCÚýuñ¸Ð>¡BÁM ]î‹ Å~;”íF&l쎛Ì@Ðwð"Xe†óâL7#4^)ÚùÅ\@9—ì}×Væ4ëòXªyœŸ $jìmµÙi8ìËvxèúc9Ú®¥ä$¤¯œþ¯%(?“2\¹ïËUvþ™Å âÂÂûuaIÎ:@NÙߦ'A"YÙz9aÄ ‹›šd€÷ÑÈ¢³i©í¡S@ ™'á¾—øç2|ÀQ’õ娲ß\X¤U¶õì@ï ¯²¦ ýæÅï¼Î,µTxBwíÑ~ Ñ8fIÖygÕ=Þ_9tÃ"59¤¦>÷\ˆ  —I ªöXö‡$wÆáÀ®ÁŸ:VÓ›;žÁA/=˜Á¿^O(Y«|+í˜#ñÚè„M°Â\=ŠVÐZd‹,¥ƒå.5û¸ÉëzŠÈ|Ý8Þ¸øŠÍŠ8UshbÈv´¤¶rQe±Ì¼ùÀÑA9Å4æhÚqåOž"ˆiÃ68®å Ô«ÞPoIœRö¡øc1W)²Xe •/ˆ¦HÙHøke_{Œ€¤êZ@vöxîd —y·X\kM yJŽ]V‰WÓ„ µY¬.A ©&4Žr¼@a^¤$Aš¥šs…þjuÐ:B7RÉMkú²Ù"ñqr¤#ÑÏÒ)+"í¬’À7·KxGA>(½?”À÷ÎQ ¹†5 d:gBrÛõ¸”—”鄾jªsï ,Ù (Ò§o“mø•³ 3€©ÑÅDûæ«Yî+m9¿Ç‘'’;âeÑAë*Xpy‹N7Xöš3Ìή¥!uþjipí2÷µQyr yúäbFŽzô:hdˆNW"k»î…Ì~®À5‘€™öÅsÉÁLM¤_7.[D‘b‚¡=.ˆoÐ[ŽsÄ+@ü¹lš‹ûõDN\÷OèàùÄ ü]ý¼…?(ë—Á¤âªy+'RC߆R"÷æd¿É±•µCSŽSn¦|Ìzê¼§¨™Fomû"jVÿ³lŒáb …ÉndDò<Ù”‘]õ¼ÝU·ò¡y¬å[ù’ÌøÿÊÇïݸNÄKnxÝu˜¸â´ð¶výú(+=÷€ Q(>òžš¥Ê žGsð*y eþh÷^A]Á¯{Ûb‰¢äJZø«ôf ¢Æ£·Pî6Ÿ›Ñž[ù‹AùÓÁÒ<1·éÊ¢k¨:ZéÚæBfÕz°[[Ç]iBs’*LñÁYY×vZä<ˆg”U •ý2œ·Ãøë‚X¶ý[C¨WYû3‘®ò­mb©)®{þêÁðåÚ9‡áî¹<žô(tæxÌq½œ˜1E<Ç^>Ø¿#I×o†yãÚIÉ’fn\ª‰)æÊi¢ ÝàRÙß[ÃÏ›‹´B›pó1$šàøJ—Irýšˆƒ`Ý™Å'šõ“9‡ÛØÓ`Ü Ø?×Ûþ¾qéF:ow SœÇsÅà—x•¬³?@Y?óí…ß j%cùV Â誦ïeŒ‰íEÜ2Ÿ¹‹>†c8DF»4Ë‘Qq•cŠ‚}´ý0n)%sZᾕ).oÌA(¥‘ÀQAY]šÔ…‰tü'ädþåPƒ.‹¯ç;¬Ü"Ã\§dΖ—…¤¾‚pÕ_9mz²MCâCyfhÍÿ£i¦L¸(@0k’šÏ­é­²}ÕxS•¡Ä˜ž6º×ÿÝH–÷™l“· Ÿö©Xvqq‘:\àHS ‹ÆEæÿ]àœ„¹‚˜â+“ £sk¡b`o‰BD’¬{¾ ¤S÷ úî_O3 endstream endobj 338 0 obj << /F4 25 0 R /F7 39 0 R /F5 28 0 R /F6 35 0 R /F8 51 0 R /F12 139 0 R >> endobj 336 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 338 0 R >> endobj 341 0 obj << /Filter[/FlateDecode] /Length 2530 >> stream xÚYK“Û¸¾çWè¶TÕˆ&ð•›íØI%åZ×z¶rÈ䀑0²©%©yä×§_ HQ±÷"€x4Ý_¿ U'Éj¿¢æ¯«÷ï>g«4‰«tuÿ´JVÄfuÿ—Eï¿ùãz£µŽtœÅ w¿Øf­Šèlëõ¿ïÿþîsyÙ¬‹"÷oÌ{19!3q¥…÷‡hóšÞmÞÔÚNXÉÒ8 ëˆ ÝÓ‰YÕ¾‘³›yáƒí§¬ÁBÊ ˜+¢Öƒ4óhÀù2Ú:’íà:·ãv ¡mÒJÅ™‚4‘ÑÙLK+¸ŸßûY1™°jruíO=}˜èÅ×5_ø‚‹g?¯AHBË=ï¸pÂÌÇLbJ—q~%°ô‡|¸:MVª¥þÒ¬Í4—k¦Ù-mÂè#Þà ûæ²´q{;øgœr<Õ>ñŒmöµCã.QL½øáÀcëOt¬Û²¼½âëuc_}‹šøNªŠ“œ­€¤$r[|=]ëžgO2*×¢6ì¡ÚrT®¬½¬´uÛìyÁ¸[H÷þ"ÜÃ\²x=\܆“Br©g€aœŽzNî’:V…©Q¨”‘ˆ´·¾Û‚ÐI>º(âBOa,Є£YÐüÑvüa»öÜP?¨ y'ØË‚ž'_PÚ€|`!Ó9 ŸM‹ä{^Ì %áƒjî`°@àódXôd}W¿É‘öV¸$ýC»µõö,NGØÂ&|7v µkö„¤L˜BÇë[¾Å›dz¹LP™™€Êéä¹!¾¡ÇBÆ{'Eôy]¥Ž)ºW{<Õï™U‘'ú#¿sE*V¥hñm¡ã*ÎÂä•-ŠnKpâùT·OÄCŒ:äVrq+UÆ×½,(Xhtí¾sVv€À®()b|Qºà:‰‘ÙÀRíúþ;sèT²esƒb›è@²&%ûm˜4£û¿]n…R·C8T I~ª¬âÂLñ3 #I¢‹ÜõÍOÌÄCL5ôèÀ$_QËYtú¡=ñÜÓ¹ƒŸ:>i òÍ­âÆÏ¸àÅ÷„£$ðŸ¤ËHÖOí€q@ZÖ:„,} ûZ/—É-ôˆýé¤`_›‹˜rÏ­å©Þ#öy(X,œðH,ÞZ –¦( z¼À%³ôÊDÑá´\øâAz·í/8ÄáøÚòf+`Ç@0„0SäoØiËjŽRB”;–Ý$¡J"÷BÞãV„[¤Qï~?»fK."+£÷OlQ0Ã…ßç™ÐK è"aZ,5T}@>sv$pK4HC|<¬>~á*GµÞ¤YΣc¤!¹à*Ÿ˜„VÂv;œÉ‰ÃÞIr¤ðžœRjyžSÜ7¡0“f?ÃNÀsÞ0K$Îs‘8“"aÔ±|TAæ¼´}{t/t\¹m»¯è^ò‚ކµ¿ŸýàxèÉöƒðržhÇŽ(’s=øS}KîóËäÑ àþÔy$ËÆ8®1;"ë wL.fÜò—å=è4jÇ} ÚaöOý ~+VŽ3Áh¥"ö@pW•…X›·Å#Y.NÂHÚ#ÀÆ>â±ø‰aÛÙ“ßaÇÑü1e2ÇØ™¡† Æ+ isÃpÃû"šjFÓ½¬ÉžVäs\rîjwt3€Ša¨Œ•’8ÃåØu$Ò³ YÑŸOâ‹»¡Ÿ¤Úï>ŒXU*¼,ÁM”ŸÆj½ISe¢v»ÖIôÛ>$[…‰¾b,Þ$ðáù¬ZTY\ò•þáÐ` óøØ OæaºŒµ™Já âa8@|ß ù9:?vÆnÑj3àPÔs#À|þìÞñ²“™SûÅm\ƒ€xá¶Ý¹…<7¤.°”eë^¦JÊ`5ö]½˜X‡Œd@<„{dQp5us¶4kOx5ÒoUä@^ÉÅ#çTn·’Ù*”cŸ^ÝöÌa@‘£2:¿p|’÷ð /­„½€îz9øÚ]­›à?ÇØíÜÑú¹eŠÈPÿÏk¨8¬¯ÙC£³{ ß÷6*Óì‰âýü¬%oAuzVû[ÈÄ¡±;`ƒC;D^ò8LyŒÌ±†3¡Vé(k€¶¶bô†´ÓО»Ñǯ¿þÔCyLŸTœBk¹éߎ›¥ç::ˆ[Ê%BÒAùä …Ñ·/_‰6æ²€â;yvPúóɳÃ?9Ūu›Ot›ëk·ƒÁqŸâ*VµçŽ‚=ÍËjÛç×xP²ä þ´ ߘ痄">À}¢@ÌãÛù´Æ÷ÉîÙ÷Àõ²î]ybðÙEž@ˆ$Ñ!ç &&ƒ•¬åRÁè–Êz‰7*Íði¢Ý%ïU\h]±‰¾:úôì0²HbþFE.\¬v7î “8-Ç­+ŽÖp§ò9z¿2izãJPíöØc4˜Ìºž—Jj˜†ôvŽ’ó”*~#4p¾šjxâWéU§§Ò p2 OvëÆw¤ÅÓ5ªâGÁÇ;x µ ÅþºÇCáÁ!‡â·¢–[;Öœ­ßÉ#Vߟé)vò>…¯¦Ém;IåæyйÆÌ„É£îÜ­Šc>T,ÿâ"…dçöí¬ç5àƒ]ýÄýgo¹3Þ?Æány-’Ë;Øgª¨0ðß6UUøн¬ÄàÅÄ(A£”¡+¯ØFåÌÄ3?¶óý©¶¢UI ¡*HX(¾“[ÆOpûŽÞ­ðË˨•IÎüOW…—lvülL/²‚hœY šÈÔ}˽©lñœ ÛJ'×®ÐOIPáß7”‰_þ¢˜öœâÿF©ÎJs“ª:½ã°¦’dØ‚^@´QRÉüéçO‹ endstream endobj 342 0 obj << /F5 28 0 R /F8 51 0 R /F7 39 0 R /F4 25 0 R /F6 35 0 R /F12 139 0 R >> endobj 340 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 342 0 R >> endobj 345 0 obj << /Filter[/FlateDecode] /Length 2357 >> stream xÚ­YIã6¾Ï¯ðmd¤¬H¤Ö¹UwOf€ T9Lr`É´­i--å®üúyµ”ÜÝ “©Gòññ­ß£w»óŽ~þµ{÷øãÇx~îO»`wÐí?ü×{ÿøPÖûƒÖÚÓ~ì<üÉ4{•z£©ö¿=þçÇÙ¼Y§‰ÄÀwß??ïãгͱü;ãÔ»Ç »>îð€+ùI²«w‘ý,sßÕîá†XIæ§Š8»?¨TyÇ~3¯kK2 L~ÂÏ–ÍÚ{îdí{{ô÷‡HEÞã¥ìyš‘[c™Ò·L.f5'þýÞÑŽWQµpÔ®‰Ý&}c*î‚~cº[Ú%5÷ 8þ©Azs¶øyCËDbMËÇgâm»—²o;^u,;[ ¤‡ï-ÖÂ2B [½ÙQ˜ª+3”mã;¡Í–> ˜Dö:{.{ø¢3£ ò®åpa?Igk†Aî¹ø {-Y\k?в¢hk– ÄzëïЈˇÇln„Â5ƒí7n¦ÚÏaþKÛ}&镟èöqàÙ}¬µ]í˜ ¿…½ztøHyï^yÍÑžÌX w«€Ê|Ó*YCwä$q-+p–(DÝ<¦PŠòp£œdðøDÆ‚…öWÚ¤Œ²Ü{ÿég¦—Û$ûWp°.•‡±wß3QfCWCô”û…hLq©è8m/'ÓsÚI´K;:›ÓÎò¬i'N¼_8±À´äðÃö€$ðu¸èK’@úÀëñ¤"úèáú´¹o2½d•0Ff+„Ù»ÞÏíÇÓÔ.:”¸` "*´üÏv†ºÀßÍ‚Æ1͸ÊìýoÂ@¬éQ¡Jv;iZ'ûîí’ÕÔU?ãºì+?ÜÀ’¹w|Ù's›=fDÊFoõÆNœF '¦òOw;¹~=§VìÊ­¼ˆœBýPIÿ"ùÅ5ðŽ]cÑ~¦sQ—zÁ/¢á¹uŒ*±}ÙLjí(ðÿà‹„jé¾NЊXð6¿ªDmý„ì&%tùBZÒ(K$s–P:˜‘’Òòè ”aBõøÅ¨´OˆïÈÀ=Sd)W›ppîÌó…á/ÎîëxB"ÚZSÜÈý,è< RB-@N ºŸ=HeèŒ{ž!gZS4QóÆ—BÉüBvbgu[•œþÖTèçé3È=Hõ“Ò`zÂdKÐ1¾ÎÐ×â­€)¬ñµ_™)?ØÕXëämL#`§}PssKË#rjå×|–ìK6¾¹57•JÞ*ÚAÌRÊ+(²2ë@'9S’3qØ,šzÓ÷Ÿ~þ{¿4^ä=üôiŽÃ‘É_d š0lmÆœ‚tÇw`q­àôàÃä1Æ¥6€6Ù> ˜ýdLÜ èç+O•mÎÀP’ ´xìøD^š¤v4)7»_¹¨¥}ðíÈÊ‚Óè„×°á)8`ÎÁJrð‡²7: »@c¬Ð®Ú—#ò¹L2½“¦äD¥ª³«— ìKû^âùœ#Ëx‹%¤Èj<Ú¿$ßþ»A°ß;U×€?»W–jD¬ìoC‡E„VwÛ°QÿëZXø0•{0à~"Õó SÿŽ•‹ãJl<‘*͵EG(e?"äªqOz,½¥ë»7PñŠ¢-ò>¦N"ÞqÈcOy@Ó·^ÈÞÜF¸ëàø´xJ[°Ç¬,ùŒ³h äî)!dÜ ,ı\?Rôé<ýƨ؂`!wªûo¸Q€Á¯á¹c;>U t€HNº> endobj 344 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 346 0 R >> endobj 349 0 obj << /Filter[/FlateDecode] /Length 729 >> stream xÚmTKoÛ0 ¾ïWø6¨][–ü8vÝ:`@ÑÉNÛª­8FýÈ$;mþýHQnƒf'‘I}üH1Hâ$ ÚÀ߃/Ûë;¤I\¥Áv$A”%±¶_±Ûí¦Â(Ë2–Å2NH¼WcÈ ¶¨>ü³ýq}W¾gE'r`ôÍáÊ”é±é^!Rì‚oÛxqO‰8σ!Y—åª÷Áæ#,^Œ î²ýwéŒ4€)Ùlã0’²b;xªà¬žcõ(%gj7k³Úû^ÍÝ4’:ï5 v9„T¥Í±³“w6º×ÊjûÁwÐÃdN$/V7$=!)'W!–aÒ¥°Œ³—çl2ψWìØKù{‘Iç±L]ðožsò;ã‚"yÓO˜ï%tØé!ýªëÅ×ý¢S0Ûm¯Évûø“{²³ÌŠÛ7ßh jlQ°Á/ýÜ0Zæ=84(æ¹dÛLÎ%;˜©5ÚZÔ* ËZÕjKwóäϽ&áIÕ˜û¹5Ó26þ55B„ñ¹˜/h=o¤lÚÑ ÏJì˜ÈÙÎ5GÏõäéñ“ƒjH‚DæHŽ{p k= e´×°Œ²ÝpèO$ת¯—ž»àÒ+’ÄÃC™³Æ·ž1^$)ëF:½+Gðš8ÑΨï±öe×Gôö}\st^z£}Ö',ÎL¤86.¨…ö¹¿PCã\O³¼8g §.¢õ$éZ®¡ø)¡ˆoØhjôÉZœ4×°nîI€Š¢ÿü&(u" Êii÷N‘~œ*ÈÚC)˜¢µSDfœ<ªˆW%Žtq6Òp Ð>[‘+t‚šUßëž4ýZkÝxÿdÉ›ç#sÑ7ð3?Î:Ú.(ó߽ЫÜ-¿ú¤¨bA»ïl»ÇwsšÉRÀí!w‘^Ñ×çIr¹F©ð{D¿›?ý"@¤k endstream endobj 350 0 obj << /F5 28 0 R /F8 51 0 R /F12 139 0 R >> endobj 348 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 350 0 R >> endobj 353 0 obj << /Filter[/FlateDecode] /Length 755 >> stream xÚUMs›0½÷Wh¦1ST}"86N“i;éxOsHrÀXq4Áà±›þú®$0vgz1ZvõÞÛ§EF”PŠ–È?.ÑÙìã…DLÎÐìQ3N‰‚àüŸ‘(f2Ëðµ]­KÅB+|ÙäëG[´!šF‚⼈ÃOQ"p¾4Ñýì+ú<†T¡­‡œP‰VH FÒt÷¢D×^€BŒ’l' ƒÂ x%Möx]4¸v¼ðû©ÄóBBámÄ!jCP4&ïÌ"l±Ux²,¥n¥ñÜm ¥ßÌ&hü£nMåRó(†_Ó,ÃÆ¼z« R¼0eH@ÒCgï€ï›(åé{ óÑS®=p o;[ä¥Ki¼…ÂÒΛ¼y ©…i‹ÆÎ=›crƒx·¾ˆRŽëÒøP¡nß&òQ(:ÏW·ÃÙœÍàœ0bN%©WÉÒš¨ì }ã ˜Ä_ºhÛ:»¬]]Þöj=d< 9G¤[—y÷P7«ØV ü0°ò¾wdâÇ“‘LõÓÁ@è~<Ì'ã Ï¢Là&¯Z‡˜w¶v-k‰¯Í¯gS^ÄÁ˜¥ŠÐÀ ­]å­;·X‹pªu³°LOxy‡¯&w‘[K\šSiÊËøˆ›¤„¦ûÿþˆ:NµKîYñi½._B]:ÖÁ'¢9tì*&ÏM) õÖw>ü§a0Öý}¬KI÷I½­+Iˆûºn¢T€ ¥;XÁOùrã>¸Þþ¦7#þI J“ƒ)™”v½¶Õ2åËÜVm‚œÚqo_iws’‰1EÔÁQMj?| ƶéB?~šáÌ¿;ŸKûÇO9°/àº(̫ӆwøû¹³åHÜ>³öc:ú¡PF²ÄSKE80óL ÔW¹§~°7ŒÀ…Í„J%ä†kìC€æ”ò£ž$üeºÿ€¤êo”wusÀ endstream endobj 354 0 obj << /F4 25 0 R /F5 28 0 R /F12 139 0 R /F8 51 0 R >> endobj 352 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 354 0 R >> endobj 357 0 obj << /Filter[/FlateDecode] /Length 931 >> stream xÚµ—Msã(†ïû+tÄU6 é0‡|l¶j«2‡‰kö0žƒ"á„Z}¸ŽìýõKƒ,[v²±<Ùƒtóô Èó±ï{Ïž-þðnæW÷¡G|œo¾ô|oø˜yó»èvþ(ËÉ,àûîñ!­&”£uZL~Îÿ¼º÷Æ0‹°¾^­&!A¢ÊåÆX†Ý€÷û܃Z;ÃQä• ŽãÝ{á=Z,æ‚“°ÃŠbÌ©õ|ƒédF Ñý$ кʴ¬«fçL£AD Ãa¼3ÅŒYbi´P-f(«MIQ­rY¥Z@e€–‡ž¯îùÞgˆ“Ø EBë¶ú/Yåu»@›RVÓ-ümÊtcžÒÍbâÈLâ¢qJ= í¤mÁˆÛÂ;EËZu ¸"wõ@Kãžö”oÖùŸQŽýÄRÖ¯âú©1€ÓíG@"F¯@"܈Ï*]½È¬q8ÙZ5!]»ºô©©‹µ•μ­`#A¿sñ¾‰bòÍ4ÿT@%ŠTËþ™A/%ìbÖ®a4õª–•>WÕ;•u;PHŽŸêß‚E¿v¾ž£«ô¤¢3çc` Y‰ñ"2’XK÷´Tuéž<ŒÄGâÙ>Àå~ÑÂ[ßqf·³q³ï¹ Ë%ºSuÑPλh n°(£Þ ô}£i0m§A½=…¬·2U uY&€­T‡YÀ>êÒ48æêµŒ†É;)02_‹í> ~üœnͯÇ›º¢JŠn¬—NJpÝ Óöp¿f—wâÚüäSÖ`ÏúÿnݹJÛG­dõ¼@V㸵Øt3ÝX¤/ÜóÙn¥Ê ±@#É2kvÈóŸÇÉù<×*30ÓF§J›ÿz5rqªlwÇÑ/VÇ4ÌûOÂý&2}Ñelˆ­Œ›´z.Äû—ËÐ\LƒþbꮦævùµVeZÈDþ)7ÌïR´«Zç8Iº˜¬±;•U·F÷WËÁ3@æÔ·å×»Û7´v^´nô¶X»]ú$Òò#+/w'žÝ²(gýÁôßQAÓÉéÆ\ºòÉ6™Ñ]Ï/®–L¡ÚÜ›õ˺P­lºD)­¯0ïb—ÖP¡ ÷J´çíð'B¹³È¨j´ªòlº5ç‹ ÃóhŸÞ0Sï1…^‚“¨Ï“„›ï¨SînÑû/9;À+o<„f¹>Ø‘·®”„è©ïÓbF}ðëˆYÔ%ÊoÿÆ× endstream endobj 358 0 obj << /F5 28 0 R /F8 51 0 R /F4 25 0 R /F6 35 0 R /F7 39 0 R >> endobj 356 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 358 0 R >> endobj 361 0 obj << /Filter[/FlateDecode] /Length 822 >> stream xÚÅVËnÛ0¼÷+t*(Àfć^ÇÆi u Är¨{Pl:"‹E'ñßw)R¶l'ˆ’鉵»3œ%wé8¼[¯¾yçÙÙeè‘§ÄË^à Y€¹—]üF£lR¬ü!c 1âÀNÇyåÓmòÒÿ“}?»LöÎ,Ž0O †ñþ²^û!A¢šàÆèÜ8x_3Ï<4PG‘·ò8#8IÚïÒ›4´¢ZQ‚cÚD>Ç3HOM­…‚ø G3 #ERÍ‹*×Â,2¤¥¯ý”ïrn>é3¶*¯ê…T«\²ªíþÅ¡ ÇVl)ja%9ô³k‹M5³QšO¹ö‡4ABY0\œ¡^Š!) q;!G¥¬’Úê¨á3@G°sZ³&!Á> endobj 360 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 362 0 R >> endobj 365 0 obj << /Filter[/FlateDecode] /Length 1020 >> stream xÚÍXÛŽÛ6}ïWðQB뉆‘L‡în¶@btÄ}0lo"À– Û»›ôë;u³$ËÚ…æÉ2EÎåÌœ3´YQľ²üãv5}u«F`‘MïYÄ&"ɦ7_‚ëé§dN„‘|?OC®ƒ‡ù:ügúç«[S:iȆ;ýûv* Vé2ùN'•®ÜönÊœƒ§Ü•„8f&‚1å÷5û”‡%"XU„Ð<·|"œ r\gdƒl·LÒùaE_´¢·Û$ýZ:s–⣭eJK€Î–´ÁM²Y¥û$K÷>¯cP¸íQ¹KÒeæxrxð`Ü…†S ë¥_pAqSµŸ…¯½EŒj“ä¤. ú»xLƒÕîµ…H² B,ò äŠÇÁ&I»†8nYµó eë‹(ÀØ®Éù÷“TmÙ2Ÿ»&P·Lê“QŠ‘Íé %¡už·ŒkÌ7ÿ•¬ž¶yÙîàJ!©6²Ýf¾Nþ]-}÷Þ¬“ÅÊ?*G ÚJäûæx$˧ E]ÏYµ³À ¿P¦k²·PèèÒ69kmRŽ_n²¯R‚НT³R¿9þüØ' ‘‚DõZâ_P+´¤Kªí)L¾ UKký’ƒV@T©ðBsnC+)§MH<¬çg”gd°EF*ìÊÊ·;îwÙÆ7þûùþ°Úyè-èüê!óŸ-ñjoÎQfÈ5DŽêÂU²P÷õîà ±Àñ°Û…*¢pðòعy0O÷÷Ž“RZ¿NÏ»¤§oPYÐ&@=7ÿ;×L×~µÌôÃÍõëf…šUWTž˜\™¨ìÑÓT×:ß.˜1†Ø‰q±åmO‹æí5²C[C.˜TkP«“szvIàe¥ÞvÎ+åË>8è¬> endobj 364 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 366 0 R >> endobj 369 0 obj << /Filter[/FlateDecode] /Length 628 >> stream xÚm”ßOÛ0Çß÷Wäñ,-Æ?›7-A…F¤i²Ôm³5I•´LÝþùùì@ÙÊKŸï|wŸû: £Œ%Ë$¼.“óâdªžSÁ“b‘°$å‚Qíp^_×ݲ/7+"9ìÉSqLФΨ} Ê µ"=ð'’*káš^P’ +`JŒ€níö¸äP¶óøq6î?­¼ .ʆb¢“©9¤àZÒÌ'ÂS’g°kçeãÚm¹H*¹…nßWíÖõD3(«mýìÐhàS×lvhO¥`p÷7«ºb¦7Ía¨4c*_ŸÌ5œÍçõеiè?•™¦Œûž%Õ*¸}%F‚°A£à£’¸5‚ˆ!%Áµy¤$FJ—´À,ÚÀg×7e{Ü»±Ôر «¦\bO¹…/Ø„#šC…®¶ýÎ÷ܵ¸o`ºìšè}W?bz §$ÕL@±Â {k>rõ»ሠ8í@@‡º\_ÿGϱ— <«k:4-{|zÜû#ØÆ«æ€Z) gU9wM]E†w½†ÀSÁÌýŠÆoAMýÏ`È™³ÿ‘+N™ŒÈåˆüeçw¿r›MüŒ’ôçaOÂM·ÄYxõ¨H‹n×ר"ôì]õs´!¬p\ô_¹r> endobj 368 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 370 0 R >> endobj 373 0 obj << /Filter[/FlateDecode] /Length 1534 >> stream xÚ…XMsÛ6½÷Wè(ÏÔ±ø>&MœI§™qcO{h{ eXfK‰*E%q}ea!89Ñ2vÝ·o\4¬iëE|¼_¼¹}u%Ü0à‹Û‡E³¸´Ži¹¸}ûÇòÃöÞ½øëöçWWjÁæŽ&B1«¢Éë~=ŒÝô¸Ùÿ ïnq¡3fqÉA1é¢äÙ2"páX“Þòú0 —Bˆå~Õöžàhf81†¦ÀÑœY—Þ´« 0ËÖãpØÞDXîF„»\ùý¾Û®slÎ5k4AP€[É4Ä¥Ÿü6€O~¼|ë'¿š†1½¡÷ÛõôX+I¼Uë,ã&á›M›v+–}·õé¯îø¶‡vE"¡aš €£àÀyZß®ün:´}Bèç Œ‡?wþ n0Wš¸ÑÌ&踲šöÝ&÷¶“›ð"á ,³'çt¼¯É62Lç–gGÃT%ô·]Ûë¸Ês8‚O=úvšãø'(Ócó×`Zë—`ãɃ‹< ¬eÚîÛ”šaC£'˜5Ä«*`¸v=ú?zL©Û0i‰!W®˜±32\©åßÈÉnØž)bÍm ‰§ŸÚ=«ûPÎÌ('3n*(B"Š_áF¦ñw”C!kµY²—¼õÉßu[Z š E<ÀRÎí«"i"ÿ¿lû¡½'¼“¬±ÄRĘI‚÷îßC×nׇ¾#Ö~Øøi|º°bIe€3ሯ¦¨²ÁÝ?ƒ†âÿ.&ÒBðܳ„Ä$5‰WÁÉUê.ª o7á§Ä¯©ÐZ¤›"î%0¦L§W^uý\ Sˆçӱ͒ÒXa5 âÅ 5‘˜2n€È:?‹àÝ,ã;JlZÃŒ&EÂ$æÒÀ)CÜãê(„碭Q¸ñ+4[bU¢Øû±Ý=vÏ`/jµ3A rÏRV¦HKÝ'G´Q2Qt>öØ„»¨ùž Î|1/rvõ_S‡‘ˆ±QŒO–¢Ü»RÌÍ Af·é±OeF¢ €ÂPÏÃÁ‡M»ö/ˆù°Ùµc·§°"ÐêR᳙镟ÐÉØ€³eZDœY8!å°‹'n½«GH7¡VrCîÎq4ÎM2že© QÖ€G5ó4¶ŸÚ¾oËjÀ}8E,KùÒ"w$‘u»ï¦0<%}8›¼ Î.Šxò4œ?-ýòú#I=viM ÊF®QoRÈ>^È]‘² ä륧Á1E%Ö\‡“´#†Ä÷é'Ù’qœh1C¹o^Ü tZ=‡þÆ )B âŸoõ–%ËÄ[¦ôeËäÌÏ»;ÍÀ×§¤,uœŽ0”j¢‘iÜUp BÞz©k”Ô¹)õ~3O½{Š$ÂNsSQC2x°EÇØ?%Àö+% ¦Û¨!:|¦2¹)f0–ILD%ˆ€}Ó¤Ù=n { "F(3²‚#ø¬Éd—ºEÒQù3KQÝ>mš8f”rKán¢ˆ¡¨Q¤™UzÆé 5mÂí-3¬ã$-É€F¿¢8’X ]CAñÈ i˜g%Xâ0—]Aö…‰Ð¸¨?TÃæG~=tiTHà7SK^SùÉžtß#˜ÎTeÖüþ) !'„ZÝ ©Ž*x³jgØûjbŠq¨¥H(Ë”~ÆÛúñ¥Æï~g•wlðºöbá «‚öÃn‘(b¦k(Î1îŠé–nÆFJf†5‰Ú`ä™*Ó<뀛Ö"'ñ²v–Íî(Ió4·O¿Ò;fZ)½ÄÁ„l:ô4 X²ú.Tëù£ÂÍÇërŒ a8ÊŒjÌ‘*>#ÆpWó~W©ÝÏ?ï0¶÷´É 𹻨£|»YMŸ6¡ob5EÈx9?ôS—šž©6=Ù£(Õ—8¼<¦åß°|¾Å~œ%q¨i¯B‚»²ßCTý]ªý0ƒëÚ .BÏ'~"» †ïZéÒ?k¡‚Ź$µØùÓ ,?sÖ\`y)+q-Þ{ÒNíñJMgŸÊ$6ŒR“8yQøì¿% endstream endobj 374 0 obj << /F4 25 0 R /F5 28 0 R >> endobj 372 0 obj << /ProcSet[/PDF/Text/ImageC] /Font 374 0 R >> endobj 9 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[-58 -250 939 758] /FontName/VRBLEP+CMSS17 /ItalicAngle 0 /StemV 76 /FontFile 8 0 R /Flags 4 >> endobj 8 0 obj << /Filter[/FlateDecode] /Length1 717 /Length2 2814 /Length3 533 /Length 3359 >> stream xÚí’y<”kÿljÐ8–F2¸‘-ëŒd)cßw²Ä˜¹1ŒÍc6)d)dI:vRjì˵l%e=#¥äˆÈÄ£Î9Ïózzž~¯ß¿×ï¾þ¹¿Ÿïçú\ïë{ßò2öNj†X¢hJ$PÔê}eãä„Ðêšyy DSpD‚1šê==`H šBG_KK_[‘PÄP H”PÊß]:€aHÂaÐÀM CvB0h<àDÄà@ M ñxÀñû2à’AÒY« ‡¡~`ŽÑøeAð':ÊXjèß­³ ‰¼Ã(íp*;”X"O° ?DÖ¸s¸Ãò?Æú/T?‡›Rñx[tÈ÷øƒú>:‡§ýå †„R) °!bAág«ø'œ ˆÅQC~îZPÐxÆ€Í?%ÙbíqL àÆ“Á:HÀþ ±3¸®ŽFÖ&ö*}Ô?»öhâL ýgîwûñ¯zg@$\8à©©®©‰Ø1߼:Í„€!bq„À‰‚&`Ñ$ì?…ÿ¤22"†GªiëjHmM@OKÐÑÖþwŸ w† ZÚšššºšÚ?T •D ”ÿÁÎ…ÿ®ýq;ãÁpÉÉÅqú¨J©¬ú~n{)ëÖ80bi)Z¸©ÍÎßÿôñ?~·úhÐåKÁöŸÇ6æí3ו¤OÄ?ˆ±9šÒÆ>ÝA£¸ûÛþCþ}Íž¯Wõ+“Þ© ‰ÔxìÒhý&6øx2Tòµ#OïzµŒÍ§„2?uɈ×~}ÙÃÇÞõPa>c¼¹ú¶‰CóÒ$Ì*M喻Ї0ˆÂzˆÀhUH‘èóZ—¶\VNª¹ÄW›ϸ¶çê/˜p–ŸYü³¯‡S2Z²vl~B6áÇòŒ–ý|µð‘;&§YsP²GÎJG¢kŸYG£':oðYT‹ Ô 5CnÒkH ±â·óPÇ‚£²ñ.ÓdĦšBtŠÙQ5·s%þú8·S߯¤ìWù¢|1¹†CLgóÚT†QÉlƒ_&(WëE&ÓRôä& B×;¯³lôß8kžã”oµQ>5:vmÙ%õI” tíâƒh½|Éšœç/À••MX?n¬³œH—ˆÁ/E Ϙbª.×Ñ„Ò ƒ¨8úÈ6Ò¤ôÂÄé@œÀ¶àAò¨@¿Zò–Sd#…þ•ðjœb]9ˆB:Û ÆíǤ×SR²©[‹*7»¤÷ÁtwcºŽuøÌpúù{\F3¿ä¤œwPÓT×màÅK‘ïs>òí¬>ÏÌï?~(ßXòHãêZô¿œ“+7cš‘›u>êè³.·á×ÑBKP¿ ä,¼ÑöW üœþBçŠÙQ¿]}·n°×ý8 ì–¡Yp«b×§sRfe´¤¹šiö^{ë>äXkûÝÛoDxwÕ ŽpNm¬rTê5 OŒ/žÛe6¡ÑÉ6‰zʪÖPÔ¹äf£\æ&ÌÞÆ8ا©Ò×–Ûïeóƒ`Ä䥎êr69ºš]rÂaÙ,»©KcÖÿtW0…-eàúˆÁÙ}ø×ËÍŽõV£©‘¢æ×xª{ÙÈ¢URÜ=CNŒ®ñÑ+”4PV-Ø9T$ Ð±xÍàÜ%«;“ã#+.Š˜lúÉ}«òU¯Œé)ÒH‹Yœ¥(gú˜êPg=ÞÞõ"ß»ð¡ôÝcãt ¦ÛšFIvL«çú"ÜŒbÍnæ¦ ŸÙ¢7ñîïkëDÚ¾æ:c«Óù8¥£q˜ƒ'cêI{y׆Éà™Qç¥Ã®o_öï™ÝòKœ2¨«· O¿ÖÔi}Ò§énö*ü¡hÿšÈ÷§vsTž œÍeÕÃgçJÂ<.W«X%¬‘[]{ën\ÔÒ6žü]LÑK'Ÿç ëáïè§Óo±}Y>á:Nª.%Oyïä)t#z_‡ÃT P‰á+×$—,ôïó‹ »Ýé+­ùôt¾ .r~‰"á(:ìiû¸BVá4ê8«czîvš~n¬î¥(E¾?¼ÍC|TÈÛ3“¹íì kÆzìöe$MF:îTíóUØ~óŠÕ³rÌÆ˜!=zQ?Ÿ9ªÚu¡žc‘(KY6¾³>²âÖU Ý6ÿükHTjö±Ú_Nö›ªçøÅuã"F™<3Ó«]-Q>Ïóšb•Èç>ñ{&v IÄ^ÙÝHAjKÚ[·ÿÁù°Åoû;:mýh]ܧÄaßváºßþDø9ÊĤjòž(Â,«Vk‘¼°Kb w&sbƒµ™•@iID+CüÊâ’>Há’V+¦ÕWe¯ËT B=¦­B¤…{…y¾çº&æýþöƒZ†;Œùª‡ïKj\j`¾ÑÞõ&Ð-è ÆbRŸIÍ–ö8øf´îñGÈsìgÍÊR?k¹ŠU;%" gì™Õ¢X–ÓSá>h`U³‰ÇŽÊ¥¼gÞidudÊÇå±$Ž¿œÚê•…fHŸÞ»79@(²Ýò¼‹ñ†Û„)ÿ…Rªeô ´ÆÒ§FigKÖºu{~ÍcqN¤ï¤ ðá„nq -Å©ñ/•îo_Sv«¸{øz)^ê]Æ%›bèýß%™‚l|J±L‰¨í ¾Í¢4†EcŠ)Á g¸¯~‰oÁü0ª4»[fh»oXÂM"ïW#*ËÊu¦šŠºÅwsÊé÷6‹_²u&#=Ÿ³¯ âNÉŽaðJG´=üƒ XæÌg¸VHOµAýäxèǺŸJsÔ ~´6„¿mծ󌇉ÃòdñÇã©xq‘6â¸|nÖ0¯wîÌ"|K(9l~©¥I¦^žhÓ›QÏxÿûݯán´‰Lé"® Næ²½_ºckí†>Ób׆­ÆYñŽÁÂC“ëw>ëk¸¯àlܦ¶'¡—+oyʯ­šÂ¢†;ÉÔè ßí²0‡BîåþʵÐëÛ!¼Ò¦¯_ÈÊ|€»­t°²ŒKMÀ[­ðñV{Dà¹m™íºN•\œ_†s ÈhõP¦x„QÂǰéêô§c/H7«‚ó› Û§TùƒÚ½ŸKÃöÞF݈¸¯›½íaPe6u †*âÿÔῚJÁëGÝÀ´Y_6qücníhÌ‘;'®/ïÉ!•¡{2ç½î+\Ï?ÄÜš™Z8g/Gü³¿y€† Í: ìr–ö}r<é‚tpó!x\ÀIŠjqë9¬±ÐaSDä :Ò—S•c_gt¥YdÑM‡±ÃÍ1OÈìß‚8ØÁK¨QoÜüS~¥W9”÷÷Ú.VtÂÝ£Œ2”õ¬U+¿Œ0ÃVçæ‘~‡ ´sÙ+°ðí¡IšC“òŸŠ«¥Ä„ß·SŠ_=¢üÅÏDT7XA,MŒ¹¶4ŽÚ,o<ðGˆ—2_ù(pu³r¥ÖPý²*ñÌ›r“QÜ÷•Gô8Xõ:ˉ;aý“‹ÿ]ÏåSn_³=óBéØa ·ýß`i3·Å¡u, ¥›tç3‘o-q8±èÉYÝvPS{’ªÿøvVå¢Z³Z:´4 Ì6aÕÌjØ$ÆäÊ¡:š¶íE(Ýázéu[Þá_d®¨È@¿ÊšIT’&¾Y–V05ÿ—äÿþO`ð šD!† IÁÈ?$Ⱦ9 endstream endobj 12 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[-62 -251 978 758] /FontName/GKNYPI+CMSS12 /ItalicAngle 0 /StemV 76 /FontFile 11 0 R /Flags 4 >> endobj 11 0 obj << /Filter[/FlateDecode] /Length1 717 /Length2 3425 /Length3 533 /Length 3974 >> stream xÚí’gXS뚆A1Ò»€$H¡QAŠ)"UˆÉ!P‚Ò#E.Q@º E@ŠÒ;¡„¤‚…vhÛ}ö™kö™?sÍ¿¹f}Öû¼Ï÷|÷÷®%Äol*©ŽÄ>´±OIi¨´ DÃÀÔTZ" …„„4pÜ…ÅhÂ=ˆ´²²4DÝË"ƒH+ªÈʪÈ)‚@B ¬‡rtò„ˆhˆþáR„¨»8ŽÀ=×Ó 1Å"P€' ¨£Ñ“?¶x@Lç ¡ ´4‰BxBŽ( Hê(]Œ¢ø§Œôrû«å ày«ãdQù²:§o®J<[lX¾P¥÷RzºjO•ë¨s•ÒPÎÒ7¹­-º˜ë8óÓ#=²ÖÃEÝôa#½Ü—Y_Mât˜ÆNÉœPk½âÊh;Pw¢ÃJˆ$2¬“Þõ:Ÿ±0n§Y2F±U“?†ÍMzñá3kò(qïrÁ÷í¡‹©›…ꣶYu~̳{ÏeÁ„âèîRÜç÷Ä/‰”ðQgäXÝšÅÃYiÍ<.ûS!gÍŠ„Å𶃷£ŠHýÇ‚Qì™Ù«îŽå,Ã×Ûd´FMÒÒšÞåÓÞª>Ö¾3í8Å:T¿è$aÊ«‘¶âÆ9¾"š·q#ŸÝ-nP€°ÓcÍ©#ÕõÈúv«FN•“Åiº"ËA™ËRÎk~¹Í)²ÅQ Õš•~&À£lþÚõ;›ÃŠM–8ïåÜô_Õ<; ¨M9öDe-ûˆrV÷j÷Æ÷¦Júö'ÉÈq©=ôd|qÇgíx®}ÓxÛ=ÉGßÝ›<§·œKfJsô?¿:q'Ú…ä‰<§Çû\·=ѱÄv«ÆÅúüä  azpió:KøþbïÏq¹±VcŃÚãçGÙæºQ«oÞlÚù´|²…±Žî¸ª=3v(Å_¼ºæ©°*v›]glwÿ­Š ?©C´Fêw˜žÞw8_—2CGŽï¦]Ù¾œî ßV§ìbM½öÌ|Röy§´’Qî•äNåiYgÒ(k¾Í" Ð8æ,ck‚4ƒJ¡1 8q#6úÒjI™EúÞÍ7ñ­T¯ƒ£(ŽÄæÊ&†mxz¢¬ÉÇ ±Ú z¨*…—“./Àò'ŒûuàðúækÚаìßtÀd%ÐEá9ƒr» ôeÐÖT›÷(„ºv»;r5æ¿Õˆh6ˆ8 ¹•^L¡L&Þxìcs~È`f­Vëb/ë¼F‰¥Lr&ày€ZNÍ¡z'Ýá™6¢¾]w†ü}lÓÔ›=è'Ö*ëØÿÆÌOWKâŽd ë‚ù…ÉÅïQ{lÖ?qSÛé”5ä:œŽj§¼×v‘[d _fx¼é=°Ò±¦wÛPî6å÷Wî‡ý—¼ >V†Á¨Éšì·òlºˆð×ïJñœK²¾íO©¼»ý?OOì(9 ¯~D¨e¼[ÐÝÚð.ŠìuÕ¯v¡‡ßêUï­c“~Ö^úuœðŒå‰ýÁâ÷l´óÈ¢#M`˜ré.ƒ¼&°Em~u"¿ÝÚF'×,±øä&ú4îÑg¸‹d>¡%ø¾™if˜#¸1Ô6¿à JÚ®?õb¸àæ ]¤_ʆpÕ¹0Y5 íÃzó¾|Ë8*ËJðËåÑúèÆ¾¤Šb„ßdü±ñXz:3«9Xòy§¾Û¥72+ø•žã‡Ö zb¦|V—ä\J€¼§©ŸàäR‚pY÷&A£éÂgâõm5Kd¬†Ô·ûrsèÂÎXä ,H Øñ üRÀÕKæíŸ¯u'øí׫±˜Ø)$#+Þ¾dà~„ å#ÍvQÙŽNO”®|ýÐ#ÅóšÈ^¦4#C6Šçw\Ú^¬lÀÞàÕ˜£¡á8¤¸hS^ѫ֫Þä^âÊbe{ù¸LÊ궤(•2ˆœ©€:{KгB©Ÿ-l}©"ÆZ‡¸è›Ê<¨/5»V f¿ÑÄßør´UȤæÏÚiÕTã{H°üj^g½¨Ý®x‰õ~¶RÑ<Œ›éH5,çzäfcêm(Âòe˜ZÓP±Ö{ó.u7áƒf¥,êª×«…#a÷Û§î¼y@¥H0è1¢Î†»è¨Ð'öÀt}ßRt”8úCKо·Â¯ÜµË‹¯ÁMãC¨Ÿò†¹}¯,Óèër¿hhWǨ— :ýJãHL¬v‰&3ýºÕŸÓ§1ZñO?Òÿ -Àß´–e‘X/íM‚Øò¼\«ZƒlMé‰þcΞŠñ¹OļûÕ®™òÞ€­Ä¥7ˆþ…Ø>k±ÑtaÊn9 yÞU†‰û‡›ÅÖ3ÕÛà:õ[Î6]­¢0M/D“$Ú£ÌÏ}»¾+vÀùñ†íœ8­ëá¯yk†^ä³›\¯ëÀWtùÌÁCFäè½JŠUŹäLŒ¼6ì¡õÓúAó$óéÙåƒPv®cnÑ2± ˆ¯ö.o°‰QÅ#Áå¯4·ã5ðÅXž¤Ð5žçGå,ûG]lå³£6`ÕË^ ÉL¤à_‰%¯4,¾ÊÞ)¨Î'ââ¿ð‚šÒ¬8r3Î1O<ñžêû¾Ê›è¤Z)fP¥ª£›qP‘5ßRÈfS+ „x¸9´­e~ƒÆRäEc»ÙûüÃ2›Ò N‚¤M:¹”„çir…–Ü3’d)-õ¢+àíª ™oãrˆ ÜöÛ‘‹˜@O~¦G²ï$­mœŸTkŽ¡7¬£ÞËY¾ïS$ófv§‚¿ptSÓk¯øk{·ùw1't˜(”>N¹@&°ŸF˜íK6£·Pˆzâ óuÖ 3"I§â ë>µZRȧ¯ ÷.ų—U4íQV÷QV‰‡l,¶zß¿ªY'ô™3è+jK“Z:Õ´šHäèb»d?}%–ÃG%‘â`&ˆxy~goíH†ÅÜ.³¥D_ ¨Ò‘k~»&0*T¹ é´¦àÇüÃ5ò’ÃUve8ˆÓn< Ò–ƒœ—]«Wd›Jlùq­ Í?UfÇãá]®(“ea²YT¼œWÛ{”ââµø•×øú¬^îÒú œ.èI¬o¢¶×»ŒI²ùö$–^šø®E)B¿ˆ¬åjæC§>*×=ø¬cDï×GùJ¢š'ŒY¼éýù~#ÓzÂQ¿OÕÉi&ô)ïP†çUt(.)r1 ,š¡›tçó<¹ÕVñ"Õ<¨C~Ä4ßàêàŸK±0i½;'Œv½vÏË8ºª¶ŠÉ„Ç€Ôg¯ß#oÎNÒ«ÒifªÝÕýv7_5>ìŒcü‰ZSw¿ì¼¤ÐÔþfz…)®Ò›Ò²Ê— œI>ËKõuž4çªÔ?WH¼lC1þô>óɆ¯ cBô’bÕ“•­ ×èlúŽÍÜÆÃ<#ÕÏ,­ÌKCÚ–„“$¼uDÍÖOøuâñiéƒ3wë¶KøUsc´šÎHJèw¯íR6åaFÝŠ:\Âu fµü]¯}ù¸ÁÛi­vËcCØûc£Ðj»¼¶ì³T»ë Z6¹Wh%†Šˆ·œx…Î2lµ&~ÈYÈ»æ:&°¶Æ@¤,¼ºQXóD&« WTtØk‘UFžZ73¼}µX><úÁ¥ÉœXLÃ}ÙáLï–Ô\Å"[Ï<…‚LÌ;ØEaÕ€­‚<ê{¿Wt“ý†ð@½?GÞ-‰š½Ö¡ã ‡µ^jp+n ¡T‚…ŒP½¾Ö÷µ°ùáßKå¾m³ê“Oý/·w©œå&ÝøpW.¢™kF%ç\š¬w+íiÄJ  ¾-uÊI”ºz 0¨hIŽ}j¦4´¿0N7ç¿Ô¤7±Ò¸¡xghùl‘âùíÈDïuf†5_•mn0"B–þ®GÀÑ ”dÖÊ…îšúÅ–²ØúZ'6\#mÏO•¾z:®¦o©ÄûÅEËÜ'YÔÂçÌ…j">1‰“-ÐÔÉœcëÈc>Y¹¢W˜1â Î¶ÎÆÔÄTÀ4èÌÏu¬TqË%Vp%©Ëí|fZ:#¹N#òãM÷<èÕ1[­/ÉYŒ»(÷?VIãm‹‡ó…\fÿZ&QNÇÿ8˜¦’kj!²‰dAl¾ñ´®1êœú´EÉ‘íôf siBFÃ-eІ%Ù–gÖ!óAôc0§øõujÎ8±ý|zÅIJu÷{¸šP#Cgt$s9¯ý+dšBw=¸täkÇ$Diâó:½Ò2—öÁôh‡…Ñm{lØóFç,v¤Ý†—o~ujÌÙã™JŸZYŒÝð3Z¨Œ´81iúÛ„N  ÌèæžñƒMì¨t¸“†8Àf¡‰¶>(½£‘Ü–Rs‘Èþ ʵù«:ã"amL5÷îü:ûðRç¨Óã ÜsªOtéÍY®G|)—®,×&UÇ0¾ëå׋iȱ’ŽºÛ¾ÉìoçE¡:î¢$5cí;˜êw´†¯½Ï_#ŽÇüt½òÙŒj†P…8†‹Â1¡Õý™Ë£z+·ÅÛ°ÿåúÿ€ÿ4Çyb]á8è?môk endstream endobj 15 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[-61 -250 999 759] /FontName/OXUDKO+CMSS10 /ItalicAngle 0 /StemV 78 /FontFile 14 0 R /Flags 4 >> endobj 14 0 obj << /Filter[/FlateDecode] /Length1 717 /Length2 4915 /Length3 533 /Length 5466 >> stream xÚí•g4\m»ÇuˆÞCˆ>Áè½Eï‚„Á`03ÊLŒÞ{¯A$J¢— zïBˆH&"Ñ£Ë(!H8yžç}ß³Îóž/gog}Ù×ÿúïÿý»¯½×Úü<&æbj.('˜6 ‰“IÈ5 ÍÍ%À@ ÀÏ¯á ƒ¢á(¤& “JÈÉIÕ0n@Éß}Yy))y©Û?Påà wsG5„þpÉÕ0_¸3 4„¢Ýaˆß!ÎP/ 9ÊC€€@5// ÙøÍ`~0ß0 !t;£N078 þ”Ò”ýKvÁxÿ³õæë÷› (ø›Sø›Ò…ô ºÀ\âF¨ß»Á~³ü±þª¿‡kc¼¼Œ ˆ?âÿÔ¿õ¡¸WÀ?(„7 ó¢\`¾È¿[­aÁÂ\àÄß»zh¨ÜY éæ‚ÿ’à~Úp,ÌÅŽvvºB½ü`ê0¤Ëß!~îOqcKM}c‘¼Ô¿º&P8màý¯Ü?ìÖÿYÿ/ ´ƒÀ`‰ßÆßëŸw÷þ¶›ÒåGºÍÑP¤ Ô×å_¿S©«£°Ab2@1Ii0PNN(+-ò_}–H¸¦§ ”ƒÁ°ÔŸª3Æ×†Dÿùü>ð?kWøïñÀ`X˜3àQ!œÐA”Sä»ãqï¯uûä{@×ó½<é“bæ7£xJ/иO“cÜõó“ä‡?¹UâB Ò{Oî°W/0 »NtÚ­|—¯IÙ›ah¶%ïÙ‡%·9ؽ)–ºOBóùÐ¥íÝ}0ÄÃÖr17ÚýÑ¥ÚV¤{ ÷r-q½ƒ@ÞyNË_?Sä±ÃI=)rJÃÅ–5 ^’!)siy¤*f6Û¤ën÷¸CòN“Yà ß-‹Kà{€u?•F³v?çO¤ZwÝI_ë×,䨯/ PyÍdòÜK¦¿bv^ÚÑdAî³>:ÏëÌybRB`a>Þ4©òq­M0åAЬ¹W7 ü¹ñ–&:%§})ãÖ÷!Ñø+MÉH½Ònœ/Š$º-/ήÙfÆ1üÜó…ì4JðPsã†¬ÑƒÊ {æbEZ}ÈZbvgÝ­4Šë#s‡ßj´ÒÞŠ.}î*ø&ÚDõÊ5vûføYÌ® Ëô`<‹²giªåË`¥/w´§ÏŒÂÝ·OÍ:9 ˜mŒ¹Ï{*¶«EcS/ ‹¹œÉ¶¿°»à¸Ž äÇàSÛ ]ê<†dŹúÐÕŒñ±ípÊu$çµd`sŽ/ò´k{¿J¶/È´2K¦\.ϰÕÈáEb]~Yêâƒç¼‘6Ù½$ …ýlJ%K…q™øÙo$]§ð¡ ¿4t;€?Ä”äßÉÕžÓWóW9^ ‘]Ö‰'_?K;e÷Ê‹µÙ¡w(´ÕàhíÆ’Ïù,‹Ùý¡ûº–WôA}^|JI¥¸œ¨ÆÊ€á3#Å>ɯ¦Ñ¤NÏÚ#ßúñ”|—d#ºWgÜó{1|â|È·’_Ã-y _Éft¸|f‚wæ %zz?ugÝä#& kŒò˶¯Žiy½(]—ñÊâ&¼ N­:ý$’ÑÞ¸RC¾Ÿ^GN<0 2ˆtþ›mïáVÁ¾Í|Yë6á3.*à0ÌÔnŽH]uOY~ w툒ÿ†ÔÀ«ÓÜ¢«Òœ "ƒ¦‹á¹Õ¼Çñ\‹[ugòNõ]ú’Séój°ƒAV- ½ öȰ£”6âæ5yI\I‘éÙò¸ÃÜß«OœBý"Ýr°"œõH & 6™oïK@·ÂÒðWr­ŠRe½i E$ß ½öqS/²y3ïÞfÄ\49J½>Í¥]ÉT«7TWµk^Lõ ¤ì#C;FÌó¯bw»cÒ"²d(bÄòi7ǞݴHÜ ÿJ3nmáOœ°|I›V½4]!4X³ÙÛÏ’¥‰IÞ\’…ÐT³I1ŠN GEçÕlýÏÕÅ«Á‡lŽ` Y’ŒÎë|Ã8.ü\÷cŸo…Åú`¥R͹ºRÓUbÏ${~‡åͱŽTH&惓I£H3Ë„àBSäAØžÁû蘦áå8š"Æ—·Y¼œó[8´³”™û G¨åÈc¡þþÜÜõ9…ªHqe`Ôû4_]Sʇi»Œ%»÷ÐJr·Ö­CÇ’¨Ajz4êAú0YßÚN4z3ª˜ovj³œ(º,¾ÕÌ‚h€†.BòÌí|a†Þ<½ÑOpgkשv;­â¡'Ú¯ƒ ¾¾ž’®«Ýõ™b‘Ÿ§ª!çtŸ4Î.@ºíý>l“:|ƒ¹ùv;:´êˆÂ°!Q~áÉ‘ÚÒÙèã½Þ£‚·-§•˜ÈÜ[ÃoeÆßʨ¢Ôç H-rËYÄé~@êPËßÐÇÐJ\‹–:ž:ãDk©dÅþüËúhñµ}QÜnÐGô}ž gÇE|ÀGDýµ­:Gº©2â1UâíÆrÓ†_7Æ‹ºß|Ô¥4¼ƒÿ^Úè¨Ì°[®Æxʸ÷Œ“yÅ?íãWDÞ,k×3¿ÞðÚ?­  œ[½½ðhɶ™`¾“W’R¤î*PËÖ¶$LK’Âíø¶Žž¸µ~Ÿ¼Vzâ»2!µÊf¶OÇ»¦½HàeÑcá+[7t‡É¹Cöòô¶(8˜«|ZÝÿDnÂÔ–.f{ÄÀP[<··Ÿâ· Ë7^Œ×$NÛ«nV† zv†[™w©ÕÐ7ý ŽÉõ^;3¤ ¢;Û‰É}¡Y{ëomÏv™Ô&uë»,I©¼Ð!YÞÊO5U §$-*ÙóñèDd ò÷«#|ƒõ){ y„(˜,\pJÏl!” EE ÍÏœu$±-0÷·ÌŠûÒ7çzoZ|äV5y“8¢×oýTS tÖ½ÎrºÃãÈ´MTîL^;°ÿèSSõ #G•´;0Ô;¿è+zÒGðëîþ6ë°pJ-‹£\NÄüý7ú €kºÝ—±ÐÛß&¯1‹èj®bKdÖ·+P¯ŽVržCÛ-Õ•4GYôFýˆb³¤‰áÔõìõ ¾tˆWÖ/¾YП‘ð½Væ¢˵ÑÃo“ªËÍ๞rKC˜B‡m#K¹5H˜_%mæ2IàÇq4´•¬áÆCq^Âkªa°â=<=uÜv.4É>L?±¡¤dÜìggFDÕ{{äÊ‚,¾£A–[ËuØ­rÑtõY"¿ÞRI%*ʬTæÒ!cÏü,š 8m%Uzp_N"fô!…¡ã¼æ¥åwm)D=(¸ûÁ¦°›SÓ8t³v–KQü<Âk`T~•AkÉfÀ¦þ‹½vÛÜÕ­£6’xb·iŸ»¸“[²”9|ÚQ„z¸/VD zVR“óÄ-ž(¿bíà`> MS?Üã<áæíºü‘ "‘¬æü®"âðvÓZ£´=óI¤Zt˜ØÉÞHÓäDKM×MÙ\¿ö²•+¢ ¼ƒÍ†WÂçSÊËód£#­tÎ×Z޵¥Ù…ÊN]¶t•f N¯²Žß´p¤*HIœÿ¦|Uû¼½ºÄºY¡fOª~ž ­D6ÒËŠ†eK Rî±1{2°éÊKƒµ»ÁËQ›ýd% @!{ïe‡mR’IõðzÔ%[>.’̲J·_ÜÉÙÐÍ‘}Ü¥û’÷!lÓIú›uu•Êž‰Ì“ìÀåB΄3. î=Õ—/} ²Ë_•`XŸÍlì yä#TÃ4­„&#šŠº×úæì§y€Tá¤^ÓÚÈg&ý}$^¡†B·üNÁ£:D­¯žP}rWÆ×ìùÅ:C¿%díܵAó`ÑEÄ1¢Ðåmšg2ßüZÊÀ’m?hÇ@)c,‰´ƒ­Ì;xS€urlÑ÷ïµ@ŒŽ¸_þª¤à¶È[­d‹“·ÆÞ ˆ9EߪÂRÕÖë„a«‰šQXê–ç?î•U^KmˆÆFÕÛ®‰'$CÌ › TÂoTªSuîÊà{žo¨ÐÊH }‘ľ”™š˜Ýl€¿^ÝÉ b“]‰Í3½Â¾`ª2ûq¾>¥vZÈ%o­n5ŽÖg¯lÝšãºû}x®V›ü‘ ²Æçz%…vªù”2Ú}ojH䫈:ìòýÙÀÑŸ”´roTþi’ú²Œ¼bþ°à#ÃòUmU cWë],I_«®`¤¥h›>æ4abv§X¡°–å±¶¦`GR–­®r´ªmtÂIì8\glIÂ4âDVègÖþ2³O4¡EößÛtBQ„mMzGP/¼¬ÚN%݂ȈïM¼2Ä^*%¢½?ƒ&²‡i4Ÿ'rË*Ôàló„rs“øã_ȱ&×Çûd sŽ}JõCÇ—¦Jtkî,L̼)½;ƒ Ž]Œ§ŠŽøQ/Ö˲ACL–¹«"º­(Æ@àÄã\Hì‘çBÃî7&n:?Óeeú€’ú6uG޳ÀD´Ýªì$>n6Ý/6* Vð²wîÑ~¦ÜÙ¿Q´WF½îw•ó³Z/p±,vg!ˆ±ÙŽ[JK0}¨§é£šµÓß>Oð»S•*ðŠ&«ƒ|ëßËâ3(’XT`øjd Uï^Væµj)¥¡Kü²çu¬}–_D9‡ŸÚ“!­ž 6´+ß¾³u{9/°îªÛÙŒTFŠ8%%0¶OÏK’¼6=¯Â25*öƒ,€ÔhrΟ§j„bÎÖ(ob;ÞçmÃù»…ž®Ô__u“¥A Oóùã|[„›è²Y´æ–šõ`øÎ>? ê—ª„› úÔökN{+$1­ÍË[µcý›÷LÞàN¹œ$*ãzc|vU®1' ޤ­ëÓ ~ …²é~¨í:¹Ìw†Ðs‘Ì×AþÉ .NÃÞÊÉ‘b¹¯c™—µ‚:‡ ,døwŠ½Ñ¢Y1åWÛC”wÜønÃÓ¯S ?õ/Š”çrY5Ñÿ¼`+ˆ¹ós=Ï!—@ð÷O9ÕÕûJ‡hñí4åÒ¬m~{OiòÆr£§â(ïyθðªâü3PöK!7œV>´<›‰ìd¬U×ô5`¹¿Ñ»aÞdáÿ”nÏö'‚„ßAæ?.#¦?L¨LëTº¯'×uYt#H ´þ£9Å`Äê}íÉqiÀŽ«„@“*M²¯{+ 8äÝçÛÓyN6®§/Ì'Ù\×qMZÓ Œé²0Í5ö6ïT)ò“‡Ç°×BCbÚ¨Šg¯xî‚'¦ŠmÉ_óÿt¦;H«ÉßfíyÁ7lÛè`¾%£ËäÓsQ‘âÈV͹â~’j¿Òú|ÝÄ^c?õP”`k¤¦|j‰ø’ç!ðÙ/³@ÂJfBeì}s.Ucý[TMy±viÄá!>w=)kDÂ-pôõÇ‘¯«çñË1NsÍÒA—¢Ú¤rÓÞÊO°7‹¼øhìïÈ÷(1ÏòÊ¿ïQ-VÚg’:fÏkX&T»­nxHÓà¤Û°,6o®4&Ü8ZdvßLã Á\5¼òó¹yø•Ž»Êûª\j–DkbßåèU“œ±Ä%D›µw°«…F‹%½}‚ô¬Ã²±×nå¤X´‚4y½8%'«ZFé}Bp˜öF‘R¥ÞQN1;¹»§WÚ²®e}¤—?ÖÔvÒŠ½Ú¥írœËtvôAó ì§8ã%òK×Ο– pÝ–Îgý¶9È…0+îŠ6k„ðVð¨x—>6K&Ÿ¨di|EÁ÷ÑP'<]òZ„ÒK‚3ºl£”Wo& XMú©‹qAÒ’ù.íJÉK 1æ!RT*ˆTí5#pÛ&ùYS¯õîo~Aô5 ÏÙNn}¨+®ëóØ_4ˆ›T²Mæw9“zçP%cyiF8Ûø¬…5ÂÏh<;Þ²¹³‰—›þžàÿåøÿ€ÿÎ^0¨/…€úzÿ“7Ã7 endstream endobj 24 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[-53 -251 1139 750] /FontName/HYBYDS+CMBX12 /ItalicAngle 0 /StemV 109 /FontFile 23 0 R /Flags 4 >> endobj 23 0 obj << /Filter[/FlateDecode] /Length1 716 /Length2 9351 /Length3 533 /Length 9901 >> stream xÚí–UT]Ѳ¦qwÁÙ¸»w‚î¾qgãwwwwîîîÜÝ:çœ{o>·_zô[^ëeUÕ¿þúfÍù0)H”„m ¶6 F€èuV #3…¨Ðdnk#fòX¸¹YÂN¦Vf ';;@ÔÖÎÍÁÜÔ  ¥ù‡Š l t072°ü0™­ÿšX”lÌ 7F@ØÊ  ø_Š@G ƒ3И…`lnMÍm˜þ%ecb àúWÚØÉî?KÎ@Ç¿\꿜4€¿”ƶ6Vnc  “œíßnÀ¿,ÿÇXÿª7—p²²’3°þ‡ý?õßêÖæVnÿ¡°µ¶s?l6ÿ.Uþ NÄÖ꿵‘X™ Û˜ZÌÿJ™;J˜»ÌAFf+Gà?ó@ãGø;¶0Ijˆhˆ)ÑýÇ–þ«ª``nRv³û/ßÈÿ³üÏøïxÌ]ZÌŒÌÌ,…ßÿüÒù·nâ6F¶Ææ6¦%±ƒñ%þ;•ˆˆ­«€•ƒÀÂÂÆ àâ`þõ¿ UlÌí€Rbfff.Nîfœ€6 ƒ¿+þÏØÄüï|€@W Bz–9¸=!ݽþ]÷©ZëÄ¢BGáy ÇCöÔð¢4ã’Ep ¥ÂÝ2òË©BDò5±`H­×Þ˜îÝ>77¼ŠulZ“±v­{žÊÈC†ÌßšL]Àˆ=­zº]hÔã]çõ nãëÂWçŠq…&]çÈrý^Ø~Ñ‚¸‹L]¦ÞC ŒÍ¤¨±&&Ž[ +æ/k?¶À•[!ï¹IËÃô™û®*mâï6Wºµ³£§”©êµ ŠèÉõo“óAÞ|шKXËŸ«„â2_åÜñ’gÚ¸@üÌÌL'[Äë _P!§È‰ªºKÐImI-Î8”„ª²|? »“`³c’>LâsÃuS`2’& Wî©úìãÚ‡N?Gy#ë%êrpÛÕÇM)!˜«Ö@êlv¬˜A§°ÜëíyE4¯î'ôZÅ­ûH²…‰›®$šä3}ãMÒì6eÇû£ñÚqp¥ãâÔ’“¼tó™FÒÚ«©7u I§$Øt…1˜ŸðvëÙ ÞÓK±‡ª¸—ÉgõÔŒð+b},}(nÃns]üæ_ð(¨«åÀL  Ìñ¸ê2l_Ͼ¹Ý™û‡éþ2¯wjð¾¬R]k V‚±cƒ$[‡k0ÿÓÞÐÙç'EY[dÁ—hL&4ù☟/¹³â¸ŽÉíuûS¡…`ƒÄ‰ºÇr'3…³âä‡aØùæ25¯æ,~øŸJòå”d„áÜ]e¾½Ýþ謒I°cæ§p|#8“‘}}³•c²¤Ó{üú5€8ô?ü¼Þdªz½QI[Éq „f1É!ÿol$"†Ý€¤cA )žÉ.%F§5}HbX´]dÌ›}xÂ+@y²©n”98©Í¹†g/Ig4À$"&ƒyŪš«ûå zºø3à‘¿OÊÖzkC '‡È _ªÚd(“ ”Ðùé/&ŒÞ^ðF÷êàöBóí%}ç3`ÞΗOn RÔÞ—ñ5;\œº)'}8àOƒ•ÉÒÃgRA[·un³&Ó=0”g.—p-dÏüðlHK°òH@!V’ûÏþÂl£ ÿQqâ7¶Ë)ZfyÖŽ4§hÚŽ4gœ‹§ knè‹IšÝJïB˜bûá…Æ1QÀÁv2.áÛ˜p]TéÏj½{œZ¬w'Ü,‚l­‡ (Šª/¬ŠßÑ`ƒ´-ð«È*¦®ZZd"…å:â'¼4-(rü¦+DÆ#ñí瀚e)Œ¯\ïúq¶Eý>bì^¬Ýñ› mZ û•>b$/,cš~{XìsYˆÊ'Ì'´éÀ‚üT·á í¸]ò¢p¼é¼‹’×r•T/â+yÕSè—xšÁÚ*Aõ~cöfå» Bˆ!+{2Î-O½d¼El‰¼p6.p}ayäFúx“>Ñ3¸Ò˘ôy¯ úð:ö‚µ½fß⃨àË~¿ÍuXÂhã|§‹ãíF‹Ï<8q[}ºz=ʾ†ïÜy5¼Ó²n)¼õžu„¯Ô†î²:Ñ\ ÕÒ®(0e¹(ÃIêIHÑÚ>¼Mkhâ༑¹*z‹ëg‘Y?QxïÕÊb–$Ú˜áy W„x¾©Ãr«]¹°úàNÂIô2Ì·JFrØ#ž+0;£0ª»2Ùßó³XÄ¥Ö¬Ÿè–¼¿):Á†,¨ÜrÒH‚Ø6œµ•ö7ø7;6+Tèçú&¨„ª¤¾¼[s¾Ýºƒw$Tì}ø½„•Æ7WÆß)w€è5û¥,^uy2Ã2MÒõÝp™ÖÈ£ÈAD »Ð6É’˜9C{Xý¡Sé`Èî` ï=Pz‡é9Ú^_Ç`µHPò#ÿ¢YߨÙÕd¬p{ä®ä7²ñQžµ²ôDóGý”<Û×5›ÝÜeòt­oR@k­3½I‹_.÷}‡4 jªO‘³îºk´½“èôyv™†Óì¹Íô:2ÕˆIåó¶© xqc¢$œÜ° °;‰-Ò¡àýÅñ§è™ä±UQ÷/Q’?ÇÍd§GR×—d’ì|ñ>Õ9Rœ”ïaÀ³˜æ‹cåÝä) ±~›M ¸ì6&¥z`úk<¢§ E œ€«ÒÂýæóãÍ8\Úk})Wñ²¶FÁÕȇ®æôp7PûŠ€¾4U“6¤Öh'ZRš~º¦C:ä_ä‹p=T{€*Íc¿jìz=V”ý æ­;œPž£ä4 ¨ÅórC– ;{£Ê¸WÇ?÷Št¥©Û¢½ï@*ôó¶ãËû{é`üŒ%§2—²U«xj#?\'keu‘Ãi›æwxéã©ÙªòY'‰N Úâ^èáO@\ôOf½ËÌ_BͪsáÍ;,Crh>Îàx©o_ŽjJÐê¼¶í¹ãÎÆ²E4ÏäɘjE[k1EŸ$¦I†K¡ýÞFòº†ãR±nĽOt@ßNë\UQ™M7­ixAßµFf7ѨÒÏÌ×ÕÊ"Xéa ¾‡NŠƒdˆ$Å­z¸ÙŠ5¼¼’jH}ý ¹w $’#=ÞG°á˜ š‡ ºKMÛþݱÑ A«k'ÒãÔCúšó“»{êëQ 2ñç(Å£+¬ž8˜Oz^¨ Ð’2³NGMAÐÈ2 Mòò>¨aœ®|p•uÜÛ®ÝÇð[™Í¶#“§_Ìõ'vÂA¬à5wƬEö¢sØ09Ê?¤^,õ°OþPëfÿÀðû0ÔAŒ™\åÕ(<à¥î¨Í%sí‡> Ð.-¾Ý«ÛàMSh¬•LÔîõ¥éædæéû›àñ‘;v­¼¤ç5ü—Éq¬õî­_‰DP™L°_ñš=‘ðŸÇÞñÁ“œÖBµ J|s£,·;y‘éT!Ž•|Þ¾è‘ ´ÈF í"²ï¡ì»oˆ–úÉÔ,Åâ3rÉÞ¾7ô*Ì}}¬D„û}z»Á1à[ª+x祦̓³LfµÆ\dys©MÇ›×wº¨"óůWìÏ£žEj¿ TLZùy溔²Hi¹, Lg%£¤˜rMÏIâ•4oÂÁ%F·‡·4g?L)™G‰ÊÝÚ  Tµ Þ[|¶Ã}ÖÕm®v~3DöƒŸ™°&mWo¤· ™ªÆW·öoÐ}-«…¨8]Ìž¸G¡“ON ¢?ö ³‹½Çw ™‹aoòÀcú#F:†Û,¡î™ÑÏíÓøk¶€mì䔵öáôeÃn‡õœ}ˆDÑå¤sH×{)ùÔ™r@Œ¸^­¼:½^ÑËÓ`ëü4øö¯Vüâ°ç· ¥)ô´©R6S/_ÝÐó7',ã`7^*¬—²¿»ÔOq#- uÜÔX×Â70£[Z(º´\{£Ñ©UcÚŽp§cµãmŸîó ùBäÍ'îŒóŠ\i¯Rc[‰FhO³=ÚéÔ-Ø£Ô*±X‰’ݽ -Û•/†U~ïÇ|Û‹;0Þqt¼-êá§œ¿µ~0ŽÇˆ> /Yi лKøAœàEÓ^œÑïÒ¡/a÷*ŠÄ¸C޵°E†0øÐ„T´Áˆ·^3ýƒV’÷°­ÃX¡_Ž£zT‘"»ÝSH oŒü§WÄ91µcüwoÓ¦ØGÃhÆÈÉaJNÈ}¨Á® MØ«—ÖÕç4r­Je¥úe|bšA™<ì÷º ]‰ï k~šKæÅшsÃéIíÉÏþÒíR´"óbxÈáŒUýªGë+Y)Ô=Û6}Q›q ¹KzOÏšéŸ V(Óù¸³~{ ÈŸRÂv1°„¹xˆXcî§~%[FÁO°ÒøhuòŽEåîVÇÊ,bqMPyͼŽç9åB¼‹¦ezŽV¶ú³†¸Ù“â*üûÏ&7T©@ÏþìÖÒ6¼­Ê™àlÉé¦Ãl…¯®¬•*Ê;eÈ\(iÇK¹S –I£îËßXta¯l²IQ^›êÉ&€]¬;é ùóþ)ˆèb0¢¾» GêDñ³_ˆ*ÌiúlÊëNYZÙ, Ê&â0ÃÈÒTµæL£*½N_Ó'¯VGœê]4²=ùŽË¡øÔ<H6º7K²•’;ª-9+e­s½©¬ò…áQÏYyj–¥»r~ôåáú©T¡™Á µ|¥¸_üÑzBèóÇTâ4 ‹ŠXjcÚñú¹ÛùÐÌ•¾®ÝáIÂã9ìÓÙ¦ÑgP BE1Òv¸øþþÄ–”Ý!…@ô¸Ë¿RÛ‚÷g„äFªÊó†Ú³u™’‰@ú­òÝ‹ÕsÛÕ˪lbA?™„,±7rä •µY«™õMZü"½‰éÆ¿¹$ô|•%s#_WU2>a*x»©B§‹™ÿ²õ[Jàôæ{òxÌä5«k{ö"2†CC†_zN†iYžè¶Ø­¦×ê½h`mµðÍŒ=D‹šHEŸêu_‹Åtøì@æÃeY¤u'\w}>®¾ sÖš¬‹®rgšv×sò>!LÚ~ðkx0[êã~)ð»ý ©ÌŒçA>1Ï8oJ•ŠéÀ’JZ°Ôèj›Ÿpˆ]BoŸ²a÷yX¡–u¸q:äÁ²ëßf\Úhkêð‹©÷][ä'«»æ©”ó—.Ç<ôqNCÉUnÜê¡ïýx´8f)}¹„z•²üò< $Ïàû{OÇ2ßo ‚îÙñã Ç”ÎaãÙÝœý{ºfÑBæÞŽž¹„E¼/è Mp]ˆÒ›¡iøy¶â¼ ¶*éSê_ò9Ê:»”Z^ûÖšn%u_]_žO lGi€5†;¸ ý§Š‘ò„h˜Kq•ЕëÈQFrBú$H_óà.€ªhS¿¥ëOëmù´Äôç—MÉH ĺ«Ûê5ˆQÉSíûp(»ÚîüÒ}[½FE .Xzâ}îIB’m./Al¸šeº/:FåÂ@Ï«šMºßÕû²ýù{1‹ô”“±rh€û¦Wy¶ë®æ*ŸžîE ²Ü’Ò½4ªâ‰PsÁW8ĺ[!¸—1ë ’—êsûHŠÅí?œ£%/Ã’\›Ïu@WA8%[IiZŠ»™Æšý†ˆm."1дéI§¿àÖ¹›Ñ#ÏC©•§šÿnŽúÂ[½ÑÙúAM´1#AÜÉÕjß=ÖÓŸà‡"·ÈåNevwøÜ)$cÊ ©y`(Ótu ¡ó•þfCܸ»¿+CˆNîr8J¬º-×cuP¾9Üõ éÎÛ[€O£»•[õ'¸”>ŸáºU®½Ð³¨c%ÆýsÌ5?B|(¤’t¶å„ÉûòFÏ=^“…,®¹ %Ý¥aïL2 Ã'~XVÞÝ =Ë 5A[œ2µ«`éÜÀ{ãHºËCmvtš|£ŽfΟ*»}Ør÷gy{I×UÎq×[ó‡/×%e¥RSH<îîÈG÷*†+þQâ™&ræ÷Ž-ÍsNÎÛ©÷Ae«~ÁÙQؘ1ó¨ÔhÂÝÌ?‰§ØŸáõ\º‰rÛ\£"y`Ðh(ónc-UúqîÊ'!Aö…q&`kÒ–ðe°1=ÏÎïbrw«-ŽE­VÔ¸ê_ÍX 8›ë¨›7´iÚS¿áb\…[´ †p‘˜ÙÞPn > £J’µ0—Á<¬•¥É öE¦\D 0ùЙóÑU¹¡˜8îå‹næÌHëõ†WÕ™¢Ö åÉ<éÆß*v)Œ*sÍ€hz¨#J9à¥÷'{£ÎÀ²rÝ_éhØ$ùSùÊó¢ð?ï+B°Óš'zSÛ³ÿ€Úö v”ÍŠ€q”Ô( ¶:‚#&¯ÓŽóï;eÿÖ¤=TÝ,ø–+ݽ”/–\Vï#W8äB•,‘¯”>>¡\Qý³+(l’«Ùˆ:fÈM@½îÉ~>tÃ*öÉn-׎謆©ò8¾Èõ¯\Gȵc±˜­E`-˜ox:{¬ª=ºcÞ± ‹Ÿ)¾ë{áÒÙ¼A÷4/çäU£þ»]’¿·20"™£§7££A¢B}‰W&„ý3o1`ÂÄÝÙ¡«Z‘°€“Íb/_˜.+÷SóˆË_åu_ æÁ€âÎðU*^*áEWßù`_íuµv"êШPb§rÁtâû}‹‘UtyºMíì¬ôÏ 6mª›@c{#A4nÈFzERD–%ƒœ®Kþ–ðÝÓŽÈÓj}BËg²—@“æ5tÏOl,g”3˜í#€4|í9Q–5Hzø8R9èT³ÛËÛív ƒ Or92@[º8~ kG<ÝíÁc±Á@¨Q‰£ÈêÁ =8éÄ*4ŒOBÒç¿m¦‹ü¸¾œûÙÙw#ÑÑ9•ûË6y€ µ(4§õ+‡ÿÑÝ-¢ÚØéåÜJÕ›ÝÉ£©ÛüEA?Z8Op|¾PPÚ Ú „è‰Zißétìu”†:Uy–£š‚ÈPh«O¸åÆ ÙÑÆÑUàøYN@ΩV¹ËüùUá!ZZtÔ\ñô¸ UZHÒNW*8˜;ë5=ynw¦™×3ê¥ ]ä÷É- óã4ý"Kº8{>¯¼¡„§¥«ŠVò™ivÅÛùiwì*ÍA4j¬fáL9}+‡C敹E$U“DƽÞDsÙÏ@ÖWÚ-ùw RìPŠBè©Õ¾7×3§U,Í̆8¼ Ô¢ñ½ ´SážÜ-·Û`ÏW ‡^h@]ß³/Ô‚ ¢¶×àžþPOUÌãϘC^Î{k¡Âtm´È’‚ ȯ» ÓOqÍ?š»Ï1ãžœBšò;¢âĬú3ïX‡óõn dÏ3TæÆÁí ù^92]èj,ŽËªŒ…uÉjÜ…°j½vø9[J?§VüédÓ1:•ôÿ øðf ]÷ºÃD/†((úO—vu"’+8´Ê8ëÌ–«|½Y}¼t >9(‡ÜîxQ0Ô\W¿÷ÛçW·Ûz¡¿“ g´qåQŸD±“ûYZöâ¿’¿áXÀ©lT¿>޳`Ä8†Ì0év¦;>þ ~© EîŸc)ký“JMuãcÚÎrœN’áÖç·D-ž?f hÃw¬²z;:‡c³þá+ÓëñKo›HãN{Êa"Þõs­Ìw]䋪“Y•Z‹ù©2Òôˆ¹gFN ûô…_¾IiBU yRN¦ç •”fOVœÈùù¨L– *°„om«•P 9ÙzzJ¤¨ï¬ã—ïâõƒ¿¶Á7Ìû+G3:Ùq$°ç‰$.;§`|òÎÆ? øÏ¡Æ, 2ˆ”É8A˜Yè¦1¹KcíWYö=4æ™è×ÙgŽÑ®ºî6$¯²=èî{‹NýL~›þߘÓ|‘igê^¾u ±^¸cx·ø3yjÆæ%ñ¬ }Aíûæ}NÄ@Þ¡Ví]Ä)_£*Á×íä3t¨ôgfþ`g´¤ÄÐEb¾(;²…²¸¹kHjÞAiíöKÆù›˜çn:²W}.HQt²Ð¹s³E]£éäÊcy{“õ½\÷’v´q%­«²×¹Õ=Mt¯l¨á5{j›<>ïD·kßà©ŽŽ—Æ2ý§!à˯kÕô ô_4üøp­´Öb}ƒÛ~·É]Ûd7÷ßñ<„LæJÍ3îQk_¡¼¥î7SÊP¯63­ý>•ð-ßuSoM³ƒF+÷˜]p<;_wgá¶5K²P=Wáæ·`óa62+“Œy!³ÂÑéQýÈ!b¹=¯ÍÜ%Ù¸×íJ_‘ûÀbWÁKÊÅOĆ^¸ZñK÷s3x°Iy÷½x# êüÁJõ_Ò_S²H©ŽV<¢1Ýßû—OÖÌ‚~¥k3öK©CäÆôòV™¤z;69jž†á^Õô"ÖÎÂoù›ÏL+n«wUª +ÑyÐŽ ñm2óWùØ—hfYÃ{„¸üZ¹Iñׯ¢ô.SDÀ€óJ¬mâ”õí ÊÁÂ6˜w¦¡#é¬Î÷ò(Ó ´›ç÷’ç¿D[^MY·EÐ}ëŽ×#ç9dwî¶Ž|`:g›*E !žÌ·%pt,€K_KÖ…R]M;xqµ1ÞšÕ‹¢j Ä´É´5!z~繜Dhô…òO>b"ç<4ÆË3 ôÔÂëþ8 Nl1»È™¸ìÀ6Eïîx.±²CorM¾)w ÙÒíß$È»^²ðîáј³WhLˆÿ½/jÚ Íøl’'‡_~ \—Ðʼn‚Qf‰…`後ê|7ù{6æ†f·÷s©ô^ü'r°Ñ*¡cÞi<ñHµ­uæþl©ö4Ïå•N¬ØƒnÈPè)ÙïE$¾>o]næÔWrR[Ø¿|šk;ÿ‡±b7§Íš¶.ìýüØò,å§qnÏŒÞF5»N¬Qƒ½æÆ}:Yƒ­¥Ýb '*•òX½|Ô¥‰n„,²vñÓS·Á–¯ã5DñsnaÑg¦eØ@¦¿ \.¢rp òçãlÜKâ~dÚ+óÖÍ7†ÔUé}û¡ÇUGO|A<•øVžÞ¿þ¤´‘ü͘‹n1{dYS·5’ø$ê·¯ ¢®dtÅôeËYj ™²ô!45Ê»4sãZ«Ý8ÍÑ;¡tª"F­ŸnõñlÑ™X´bD†¹Ø§vÃÄûè„þÆüÊûÚ7Ÿ¾¾?à…ªÂŽqÅ9ÞÓ³ ]òCKË–}¯‡°þOm L1°U!ëó ©hò¢›L ¿ a·Û2Å<­&åõ¼¸]7¨Z6ÆKCJ(ñ ²(çœT¤vf} ³Z†É‘·4! 4?6—Ä.«õ °5JŠü,1ÙïYN²N<7ìz])˜s÷´!¶»EΤ +ºœ0‘«F‹÷ ¸®¤šjì’Á†lšaNNþTTf(»À·"+„rŒ ǯ.ø‰Æ¾G±¦‹h 'ƒéŠ„—Ç !¢N„¾K½Ì·¶ Ê ­É+Ðîw±J€=Ø•'kÞ• …rŽ~¹ è]ÝÊ™aãåVâ²Í [¤îâ—#›òÝR5wR¬üN(|›Ý^½éÉÅ\¿˜7y ì¥-sŠy"s³Ñøîææ“éDvÔ7*01±ärÛSÑêa‘rÁÿ9ŽP¡šÿBÐÝ•—‰Å)q¡î6¼P”óÍ-×8Hq+±‚€—Æ¢¤œÁ`ÿ¼zÂÎ?¤(Y¹·û¥ôtYñ*NG„Í€M²z„Zf;xï5[½œ@–ÊÏì'OM.m Ó—@ ^Z0¸ùì|Žœ@bžAd‹UN°‡+I£´èúÐTó` %¨ŸïŠyÆõÆ¥Z º2÷‰©Ï†ïÖkÊž6†¨x-ÒN|˜|™q[JÙ· ,Ðs±‚=AÞ;“z-”#<é æä…/j8R5Zµ5Ú^aÔÑòýv&ôG1ù!nn%}§¦Q»WÀyJúìy…̘T¼7‰]h}–¬‘ãÎ{_>¾üÙÐöú=sXj[I|?/nö *û± ÜøÍÞ!°Åa·=(6à;È‚mæÔ"J¯-*E}V¿¢Gˆ(VënnRGóéBƉ( o-cª“i°|D;Û9LL=ŠÑ_¹òâ dJ3d7ø½»!ÅÒì¬ì4>’8µEÔ? §=©©þô9­S("2*á!dž0˜îAò‰EˆÖ´)ºQMøO5r˜¬"1­Z\ý×ëF,;TÎPh¢”N“±Z(ó–ýï¤ÄºösLXG(Úªõ‹.è{z›?i‹ir4TcÛwÐòþ± Ðßµ§×]A¸ƒc¸õêRíÆÍÙ°8ÿΈ¨Þ÷Îté}ÀQˆCb¿±göxW Ò“‰kÆ2kðsCRzPæSúè/·ØàbŒ+ðŒç—Ä­¢Î¢ÃûK´÷ìÞí§_Ï—ïV¿þYà¾è òkÞö š3ç–?ÑZÏΠTcµ~$‘vìÊ ~ª Ú/ÎÓÿcM8üÀ{ø”·UÚéâ`XU‡A*6˜j‡ 1 IJº“&n£ÕÃ`”Ê|aÜ+Ÿ?œ®b×BÑWÞt ©yf-v­åˆBRCddu+'¸¶é• ­ÃÃpi`9H¹kD ,S©¨DYüìÒt%Œ›! öHPr_ï'6äÔàfVq« y…,+-Þf^%þÂkÝj©·ô/÷Þew›îç iK®¶_µúMI8 Ft{5Jõ*‚“ÐËK„£ ߯!fV@Vï!–RÖ 'àgo¸Zµ¡±áhÕ8Þ?\Š³Ç¢!模šúß÷íºnª#“˜›\/zgä¦#n9k¨‹èêÕ#PÙˆgmÎmj‹‡}âWEã·í†»°ƒ4ˆ©r°%-ôžŽb‡_Šæÿî1M§Õ:r_KT/ÿ±ò¢sƒ2»î¯ç¾?sœGviüH›ÈÃYÐ]Áò+ŒX¸ §Lsƒš ²À’¸u†Rº¦‰¬uþõqF‡F J2yüH'Å’3áJ Ô¦”]:ÆÕ‚ü¼9}Ì _†E¦èm+Ôì<]·Ë,†øÙÓ\^’:7‡•v?é_¶×飂 =}¢9ÎÙâÌúXÃÊ9[mUzYñcCúï·ù½ºA %ä„Å’XG²!ZòÍQN·ú­\óÔÙktÁP+ܘƶ£|@¦»ã#)âhãÙŒ*×üL¼ëW*ËKîü–Ã%ø ú˸#o'Ä=cþ!ãÜNÅy\äì±GëCŠr6FM›ö¿ê<Æû>z;~B×u¦Ö- ­ =0\q)çˆtÌuA÷Sä,¨¦JÖvÖýÂF>‹Ûd lX÷~õ¥7}vy\¾¢¦b¼¶ìfEœ¡Cè}iäÅAB7Yõ^µœFÙ§Èn$lŠ$ÇAÎê­û…Í*0 ÞœW“ªbJF9 ,E¦„…¢?ºûÒµ˜ìôá6º_äúz¯~„ãzCT …ó7Sc3ÉäÞ­#Æ3ækÉ»&õT?M€Qw¸W%0ñó«^úÞ:bo %:h–ô…QÛ:ªÄ«Ã!ÂÿIi‹¬ªc]g=6«^º¿é.Ñò–$/&ù;>†¡Ê¬Nº)q““-óÀ“ J"2ßÔlydŸbãóÈÓ÷éŸEžAüÖy­yTË–Ý­˜Ìÿ—Âÿ7øÂÀÈ hವ6p°D@ø¥¤Éà endstream endobj 27 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[-251 -250 1009 969] /FontName/RVMHHW+CMR10 /ItalicAngle 0 /StemV 69 /FontFile 26 0 R /Flags 4 >> endobj 26 0 obj << /Filter[/FlateDecode] /Length1 720 /Length2 16497 /Length3 533 /Length 17079 >> stream xÚ”¹sp.ßöîÛ¶ídÅX±í¬XoÌ7¶mÛ¶m+¶V°b[÷»÷¾¿sëîsþ9Õ]]sŒñô˜Ÿ~zVÍ®jJR%UFaS{c€„½3#++/‰¨¼ + + ‹%¥(`älio'fä à%aåáa#‘ÿ3øçäå`çå`ƒƒ£$µwðZš[8“ЈÒþKÅE"l ZšÙ‘È9[lÿibbdC¢job pö`"!¶±!Qù×-N$*'Ð`ÊÇÊJbjiâLb 0·´ƒcþ•´™= ×Ò¦.ÿSrþá"¡ù7)-É?œ¦öv6$¦38fûæüCó öàúïæ.66 F¶ÿjÿ/¯þ·²‘­¥Çÿ+°·upqIäíM@»ÿ–jþÃ&0µt±ý華³‘¥‰°¹ €„å?)K' Kw€©’¥³‰‰™‘àßy€éCüãÜ¿˜U4䥤4éÿóZÿST2²´sVópø_mÿ¥þwÌúÿÅÿØ´t'ÑaùÇ_Ö„ÿÿ3Òû¯ÉÄíLìM-íÌITìL€¦ÿ+ñ¿C‰ˆØ»{1²q°’üsùg±°ððpòøüÿ•êv–Ž.i1.žÿΚ¸;範žøb3ËüÜ&pþªÊò44X,XUT4‹eáüê\_6±GíiûÞõÔc‚›-ÖpÞ”h-ï«ß¿§ýd¸3¦ã}øÏ¤7z&ƒ=o4à…žQÙëï×3Ø?rà IP;æÚ5Sâøµ™{‘^´|ˆ5òÙ”?iÂÛ)0•V…ˆ:â—îËêL”ÓEÈ‚&ZgÄl7§Ö17³¾ÃƒÜ嬟¹ÓÁ×ÅáH]¬@ Ä½},ï¡zØÁÌv>øô}"c˜un¾l·…ævkd q¶2éã,éiïÀx½‘Ìvb×t1n_¤IÍ9ü”Ëþʬ3!_ÉÌùuÇ12yµ8Š€ó$½öG³jwîÄtË81ï‹,öaj& ¡ÍDy‹gê[û©X>Æ»WõJà ÇÀëQ6ÅöÇÊåêû]¦Yi(­ç¢*ŠeeÈ)Lh:¥e&]'=ád´ŸAÕ' rîU¼‘iÚD°T Œ"ë¶fo¿|ËW¿e«õ.Uþ,i ýJí5¡íhíNhÅÔÂK×k±&4¼²œLœÓ… ¼8fÚX܇Zã`'B†7«ÄÑÙÍÇE hâ@ƒd9U¡•ÏaLÚ8ÞðÓI€¼®™Õaʘ¸|"fU Bβc0Z˜—¥ŒüÀ¶n¼Guâ4'b3‰LÃòeª0U`=ì¡?û1"º7Žigû·ÊJ^¨ Ý«Ðå>%â«ð`3P£f|åuÜŸ«Ø7nÉrä5RŸ³GfVhQ4ŠàÛ‡h­ª¾Z³¥¥pN9Å+uXõ²mã¨î3¡Ø6)n¯à‡ a°ü¥(ùí•- (Ýn=E‰ «:¤ªnÈUç"ìÍŸÖu!}øDlÈø¸·É¸Xí*i‡rVM%~07ÇeáÀ*XHv}‡÷ I0o$ìZ“>H­dKÿÌ7оøÏR¶gÃf¼xËØ¦§¨3¸:ÏÚÔ­›(£Ú±±šˆ.¯ „ï+‚Ì äYTQ¯ýí›îsx5¾T±2‚0ªùíž{;„çÉJÖPïrL\Lxˆ"Go¨„V^×ÓFUÚY*Ê6Ô)¯×ò ú–‹Èëö¢f²#/â¥ÔO±iÒ‚/}La,Þ¦ý_ +ü¾éþ„n’¢n³I/÷špïË›_nš¡ ž–&é¾vŒ‚oµ¦dšé*~ñÓñ‡×¶öŽ¿CHÔÜHA#¹tËù5éÓ”~‡ŠÎNAÄçϹ::7õ_Xöåív#]¦]˜¯¹ŸÉoŒO–}Ž&1>“¶ã½pUi´H.y$ ³"š%&ÄÍEJàdº¯˜DÖx7K0†9_8ý†¤LÈÁËþ˜a¿[g¶UL&üÔʹf8‰_ž"ýÕ¡ú#Ú)xÊbÛ ΢¯>C =ݷÊ©’unû¸Rª<×vçþm¿ Þ½7- ÌAÝ*õ¨}[#ñ®’âªV;Ь&' }ëÊmô(+QÔŽÙl׫<Ì\uVò#w–Þ”Z'Æ)߉Ûì:³¶"õ-±JŒæ=2ñ’ªÓâTnà)5 ™ß7N±drþ¹ˆíäUÆsŽ"D5Û ÀìI»~X; Æ{y`½4fÔÃaD•W9ú© þ~%%޹#ɯ±EÑN\ö»«T±&Ä/ .lI{J§_gqš‚²ÖȪ~ÕË—례̌éY¼Œ¬ø›E~_ï^ާî5&:@Gòyý ŽÎ°Ã*Rչߣa*Ô}!bH«{6³,;``³ö6L,Î7í„í¶\]ÇUŽƒÚ‹¹bƒy¿|Cï}Ú 8W· AjOµECýŽl¤%lרµjd×õ•äîN1m§Œn'•›©žÿ"d™QÄTsHILýzáÇ&?ÑÂ¾Š®Ïrwo›´º™ª¼'ÈRx·[¬¹}리J·ŠdBQÊ_PýaõÍJÕ J½féÜLõñm\Âú ¹jª¶D¿oehˆ‚ÆÓÀÝe¶«‡z~Ùf%çê…YâF~\÷8·5^ÀF‰š´¬‚¨IóQùèo×Tߢ è¯ u«FaÓçä¹›3e§¸HÓ R'Îm年2…D d®¾w ý==ÞßšT!æ½7¢aöú9=ÞT7‡ÓaÛÅŒÚO34üÉÊ>R´km/çr‘®f6üì‡á2A¤TÚç"ŵöú×âqÕnx‘ Šh£zÒi*K8± .D0H3¥—È›ðãjb„ÁØŽÖ"gY±øG‡çûš·^Àð;VXRŽˆÆ˜gˆnZq ÎŽÝþ’·÷Ó2ßU°[.ÖÞÒ{H=W!‰«E+¨1-õ 9M'¬È޲Wow¸„¡ã½ð©¤%^©qp0Ò$|ÆÞ…Œ8>UÚÇÞSêJr–Ì&”Wö,›š“üøßYɆBº;íY·F^ ´žÆÉZäøÑ)ÝbŒçMò% ð¨§f†³¹º¿3ƒ+ÕèQìǽ½! 맺)2”ˆTWV½òYÇ…ÆxÉ>œ³ÿÈQ'l{ç;»ð˜,¥%KÛª×NØJ}6æEvÇ$$1.×Î7Àe¯ù¸{iæP¤¡Æ#]o<;}¹yGÃÇr]ÐΡ'ÂìFà¡×õáuj.âsn&P¦©é&n-aדº¹»dè¿+í¥øeà¶¿x ‚T彎hô­H|TË+ /#N{¨ë¦z ùÓ]Ë׿¦i3â—I÷\ç‚–14a¹lH•²RÎ0§?€î!Ä;A0mL¨8I7?‚û/çï^Înœ¨úÒ†€Î¿."^ÐR‹õF$càlKƒ¤¹¯ Šñ)Ë™©ÿLžÞÆçô’^Å‚ü¤n—mÊ;lßOá6£°eSÕ,”àÔÉ¢Gß²˜Y=”ÏX³1¥4|pÙ2©‚H5zz‹µ`ãBÊóNdw=šiŸØ£¸ãGC ;‰ËŽ%7ˆ2ÙðjuµO]³ë±ºÏZSõùIiëò-ÚÎóÔ³qVm™± qLî‰ÿ iê]Z2†£+ÜèAXg‰?m?5Nª=ÔùŤÐ@ÂSc ûÈâÛ‡ÁÀ,LËŸçGÅwR³ÎYM=…¹Íà•®4 ûxoyq¨Y%(ñ\=À‹Z]`ój{÷ÖÜY:ºš± ¿÷½\Ö^Ü÷pÖC¢e6¨«³mãÁèÞ_Lçÿž}a=“‘å›÷CxÜñ%˜ÖͧtÜ<â ;GA•{=–¸“ã¦[²9ð´'O@ƒÅÐñ’¼Wãç§ÂqBí9Ú£\& ÛRJƒV× Ùï€Îß6Ìñ†:zÒr÷ µ~¥×_€fŒí|âå »Ò’ ÔÜ"r³y¹0æ˜ë@z1³Ìùó·Ük¥^ã ÌÝïÍeÿs¨Á5Woò`oùé»Ñp´UG¿u+¢‡ê–x¢1þ¾”ÜÀkgÙuÛ'byøÂów bÕOߨQ úÚ êHFÛO$#¢×(²ŽðòÅcÌxD4–åV¨Y?\ð"úd¾?GY½‡»w^ ’uÕ&¸PÚ>¾Ž]vZ3Fû“J7Ç“P¤j²šÄuªr!©SÔqÔa¶Ãˆº|àëiŒ¿A‰ª~i‹èQh)W¬dž¢Þ.(Ó- NÀÂjÆŸê îÙÖÄ3Ëv°Ls#çGÌGQ#2PÒÃø¯¡"öÑËwMs”}”ÿp}¬zCpü14€1òèb£_¨É’5½Û-íáýäü•|¡ †òZÎ̽.ñÀû&Ub:rÆVÅ‚S«N÷Ò`R™¸ôš\˜áóõ )iÚŸäh(Ò¦›írj*íBT¨NhLÜÈvCÛ4ý;€z%—ÆÓÅw .#ƒ 3Sy©`MæúÊ&¿À)¤Tðîƒ,­â½d,¿žà4T³„uz¸€4-45R¨vRäÈG™Îj+Q˜Ik[Óy~.’ðG?ápäòŽkÍô*:-}œvìH®,4@xJVWaÿ…ÒZ e9gƒ’Ï´<…³_„_‰³Íá$f 7ù†c?|r‡ˆýÒÁgM÷ú//F}Ô!.š´Ïɼp¹W3ú²£UgÚ)è:»7”[铳& qN+ƒEDO¤êËöà5«ŒŒW¸$²«QÞ4ÿšù·>AŒš!–\ìY#Ýó @X‹w=ƒ´þò控XëÊ@VR¨Áa 2õ*øÙLnâI€¬ÉŽ7}AqC`‚|í|•*¸ÜS95ÝÆh!G-Ðfgˆˆ±bC;$*ô×-趃¨=¢!<¿§Wâ‹©¹CѾe­!l“<òÝð©$JÄ>Ê(mç}U¸ƒœÂãI1º˜p>À¸tù®³¿̳µ*Xè–gßà_¼Ôþ}.;µé:ñ¸`ùF,“úÛoë+ÐÊè'·7fÚz«tV’q5™QfNàÚÙù‚Ö,˜&{VaRAsÎB†¤§è˜¹†Àå0ÆD´ëÆÚ8 úÂ9ÇE×Ådxm…ýÏÂè×Èá²é¸/ç™JÎ5œŽþ¦™K}òÏÓÇá·v\ûÜj÷_ý…Ê!¢»4¥øuh»A0Ã¶ëø‡³èöÚ¼[ ëZ¨`âÑŽ\8á”鈻Øû\¡0·ÕˆHÆœý¸a“/JñpØHâtŽYÈìË í qÞ!ãùì \m k‹ÂŒÙèNQÃ]y» '40ÃUÍ @âç˜V»ñ]÷ŸBõ`øª„ŸSWU7´Š_<ÄÍ—ëiޏ³…¾½jŽjÀx  Q&“ÝÇÔ @Š ¢Cùõ2pŒ¾HÍt§ùäàø-›ù7j5¨zmop’ùŸ¢’³Ý1‡·¦|BéEë4ñÖÓø›´}Öt@àCa6‹[P-8úõ‡ÿ€¡1”®…îWó «Çù”»¦=µÔ Ì X0£_ÈIˇhÓ-ÏŸ…Çùƒ05íDñ˜e=ü!ÕwÖ¥–’@´|õ=.=U*äYTqU@Ë­p!wPˆ³díš»‰ø.Þ?DöÁÃ3`bþsJžU*y“þ­.ï:‚¡l[ç)‚ö¸Ó¼QÂf‰`’Ú-áÜÒeo¹q Õždü+)õ•)çUMAhݦ²Y]þkˆø‡Ïìó ß!<Ø?Ý£8Ф3M¸øÏë oCÉi:¸Q­™n‡®úÚ$äO]Á+Oâ“ÒÅ}ÍÐWn¡½]^|ôÓÍêÓŒÖ'›xZ“èb´OO¥c ·4õ ã×m Á,Æ0œ)Ó÷àɶý>k‚Ì3Oq{Émp½˜]È´K)ÝÞѸóV|Pcƒ~ •SÁMˉÑ "‘ÆéÅ ]èˆ3qÚx,/Ñ*IA»Í‘}XÌéIhæ1=@î{GbɆòXð¯(ƒº¤î™«ü•›Îª_ã‘z÷˜ºZX à9€sUclÊ ‡‰´ÝÝÒ2ÚÒe+$>Q™’}£SkV{èÐü²cÉ¢—]?©¦=çtº»ë¼ ˜Ä²ý1üä÷z¹Oÿ4}“§Ô†A¬é³ÖGõ0êôˇµ€8¾&Ä+wy¨lìÊ÷½ï¥`¦ÙSDðÙòÁwœµ¢7½l—Âö?f¼Š*<Ħ‘(?Ú5+0N ÉM›±Öå–j%Ñçtg?èæ"XÙßÒ¾"…üÞ¹D÷ö"ˆÐ¥À†ÒØ9B ‡Oå ©î "‘zÊ:ší¾ Ç8?«!Í(}ò–æ4Þii±S²™´W…kÇ1g¢KKŒ÷xœU{jj‘àÍ—hÍŸóàð€T QºâÝõÎ$í‘Àå.4ˆ%Ä-žùŸyUÜtÃ'Šÿ ;Ø@½ðÏö±<M›YAŽÍ–Ð@ǰp.8Ï÷IgèxŽUΨÛôíÛ©¶R(]ñT.A²©ƒ…`íØžQ†9ž %`JE ·cWž¨8{§¨u}Ê×[†þXV3ch ž’Z2¾[$rZ(Šc¨#™×4ʬõ(«~VœÆfoÜ‘™ÇŸ&†hz‚€žÛ»Ïž]'>ÌÙkÚ \Y‡Õ2ã”Ó{Pçûr=•Ù!òè¥ÚºY’‹øZ¡¤:½ ›”³²[o‹×iÉ©Ç7Paº•>Ýò'¶`öhºófø^™ÐSv³Y&ÁÊŸ±|)—Q½µµ–´ "£sA¢j%ÝÏPÂë÷=ëЖØcKÍØw wç¹wc-ÈV@ ôðAýuÊœk¢cDeÝjEÐ Öí ¡ŸTÅF˜©ÿ5Ï fœ{ÂZƒÖvO1Vñ/D˜¡øžY_V >‘º•¥h$œP¹á?Ëv`踫é/‹Öu8 Æ"܈ýÓ6««?Ú‚†JüþÞAÑøÔ~dÇp¬}BŽÌ¼èfjÌôg–UÔ~W]AGþ y0­×ÞñGfuï€lº©=û ™"å“Vë«ùe°e¨Ñ½Èòýn³Òi§Ü‹P´¨ý"wwM‡ƒ¸†ê'%YÓS©,…\"‰z™º‡Iãn˜Ñ?þ±a™gŠÃpâ¢aæÏX°`yU<(~4ë(¨Ô¿ÉÇ|uŽß篳CŒ·IäÕnx/pÈ8WbæTmÊ}>PS‡Ž’ª ȦÄgŽüvÞ18g“ÕM ¼Õ~„É*JMNc `Ym[r·‹ˆrLÇ3õºà§y‡Ò¶‘*±‚Lr_Ö¦8.+ããk¦CÉ»¶Xóȃèr\´TæŽô3VÞ§fžÿ5üñô|j¿Ÿ?ód"YМIiüËÁFꔨÁK%ÍÜ ÂJuºoM`šî·=1Áj‡½Ò\Õ®ã{<m¬0 ›Ÿ©rK ÜÞΜ0*zœé±±ª$ÎIHPÏÚRòÚ ‚Èë§i÷é]3&óp¶d^[²F Û˜kj’ËÜšFv`aØjUäÐÓãØmNµð!Pã€Å··ÂÄ#?Vv.ãgf¶Ý)¡ÿÌl.–v>2¬sWY½Ó8Û»ГvÂ$’Oç»òLÐ²× çO{|ý\g˜´ߢ¨7¡bDËE`˧|/Eë`Š«¹E´óe•¢ò÷pKæI»‡K{µµõÝžÕè¢Ì\_<– Áä jÅn§Lµ„Ÿò¨¼úsᜧ QWb`êÄΕ•s/ _[Êoxã‰îô2¿–áp¨ KÙM'/Ë*S†Fp˜7t4Úš~Í¥Jf~‡;ßi'ƒeG»z[Òþ‘½ƒÎ¶IKü³tÕT¼'ƒJ$`eÕÆfŽó8_²Œd.Lmò\ˆ péuœrž¾ò »¦~=:îÚá¼Ï?Ѧn/‘¦W8õjµ#â΂Yµ‰ JB­ýõ2ï{»Ax*Ô2ö½ý'x$vðüijKª=v„/)ã/SávÙØ‹i53úô¯‡8C2œãd#T&.©„ËIËÂØ5®ô]Ær¢Ýe¼_óYÑYM9Ò³‘åí~ZøÝ(x®‘°êdpíPc¶äþá°zŒð@ß8¬\ƒ½ºÌ¡Ã˵þò‚Çj¨8Í-Ác–µåAy¼JŽÓ ( +pì‚¶ÎRgå|x8…›»-'2p´U9%@“­¬¤¨hñÌ‚&„+Z3*>uÁß%ÈÂDíé{/¦`,WøèM>Û¸»%@<=+9´NÓû=PÅL‚t/È7ÏÉPLãC€Ø-þhÏÍ0l==GæÐ¹úý‡TIõij%ËðP-Û^*äÈt“Øž%°D …{(µ 9Wéë;$5|—€ïík( ö(𬗄3K•ƒ¶TŠLߘ¤^%¸²¾En­2zÓ:järÙO·²G¥ÄÒ$€NŠ™PV ˆ³:OfL—q»*®»Ì¶97¢ÿ1 bpíHˆ†ÊL9™˜q2ÏY ýpMS;ï_Ÿ6Jò·ìhr›‡ ­ yCSyàÂ;|¬Œô§öyÚÙ*–al[é±I{}¶Wó3,m~ý‘ÜqUKÆï7ù¢®òâQê<-»ˆñŤƒýëÀÇâ’îÑÈO‡eg Ö_h~FØ€³ýY’{©ÍÁ>Ò'ž¤ÁÑàmrk\Ò†[²àgGdÈÑ­‹Ì-‡ÃH7ù…ˆh‹‚â]å>áÄ XÙqUR¸y5»‚À@fð“” Äxæêó÷›‡.¿Ub‘}x’SÆcšµܳ’ žˆ[Â- [á 8c’KÏVj­Ü¨¢ÁÇړŠyŸ.5¸Îm3»v/f§mšŠzBïà–ÄÂuÃ\·š†))ŽíÛˆf”RÍŠpEÐYãB@v™0Æck:ú¸õø÷-{Ñß!iØ’GÑe´öîª]…™ÈÕ¨‘^âÔ·S¯‹ñéÃãtL2Ãð[<Ð4 Í‚"bÞ ªjÆõrÇ|vFxè5%ç'lÍ*ÀÕõˆ-<Ú©AÅ‚¢Ã°;ÒÞß\ºQîés<²!…Á¿ÃæôodØA/¥GpÒºèW*ȬZh‰Š"Í~#¯âI´ÐNU… i»„0ñ¢Ÿ:m®Asγ¨Ák§³(ïÊîÁ’YÞÈ\»kÊž¨½ÓE} ³ô)êú†Û²CK _+eÑXŒ-¬/ îJꈱJ¶KuÍQSVL‘Ô\/Ÿxía›-(̸K"Ìæ×î<Q’™ÆÓ‘ç(Í çE÷¢$j耦˜¾Í]ÙÍ©P‘Ü2òÌÓ½9²Ó:}ü" ²âæN¡ð N,'Õþ_k² Jlðùk¹×žM·o{ЗԿøkEi ‰„ñòï*ÖfúVæÒ”pc‘E|ò·î‘{>ê‘Õ\£‰ØNVù0ôFy·I,*À/®™uGs$¸&ò#á/j?$`ôH;åŽÄ0³òC¹Ü e«CøGÜcÿš¨ãÙB³W%'º8›7Ω¨E^çô-qrÀɤcHe£Ó\ÊÞÝ_W¯9h÷éSDß´^gڠŽëì+z·é5¬äÎ~.<¼,¬?[ô“:ÁUòœúìîÚæ3ƒJ+¿ðã½á²­}9£dh¡ÄsÙùn 4Io5÷§!²$þúÎO8àŸÃ²&¯¨U èŸ+;Ü`SNU—•Ö5ºÉÒSg¸ U «q£Cœæ4uX˜sBüXz &Õȃ“·¡ÏÃekËN"M¿æïzÊN‘ÓžÛ(uj a6Èup8¸îv×ʱLûC·É8è )æEÍ>‡ðÇïér%#íðÉPtŽ›-O(m‹èðñ~A~·ΠÉe1÷÷ˈ°?òÀ‚ÖG5a\Ò¸`‡ `{ á_ÚpÄ>kr rG ^½·"¤Ã ³ÔkMu‰–Æ¥Ë1ÝŠ-ÔøZ%h&5¦wõÓ£û4“¸$.‡Fy\¹š^FK7XÚØÜ`å{u¹ëJågÕ¡y‹Œ¨ðá+|øªXÉǰ«vðbh᜷“?¹³bõž;*'‰bõÀý·M¤h¹¼SîÞ‚U”äÓ?lN°[€ Y«O& ˜:æ+“cdB¤ÁVƒÉà 5Økºí.öñ0ê=yÔn%¾F2jPŠSü¹jiNV~üÙ2íexÆp—B¿˜P@·®Â^;c,˜…cn—î«)ƒqYM“Œ^÷²x<§˜|þ ®ŸrO™õší²‘Üf‰zN¶ñ«Ogs,õ§ÀjØÎ.fÂO)-GWÙí ·Â´†ÊÝV–ÔúêLhÛáÀq6–bET"kác?™ÒxN-&/b]ð P·gÆ¥?u:àºêƤ^Dᆚ°˜”ÖTÏà¼g*'Sé&úz<‚żPtûb¯Fª ›C£¯n: \´bÆ`—Š/˜åÙ½™Vf÷ÊÝ/Y*=‘u¶Ÿmh¦ÆÁE‚ÑûhžÒ¯lXAÎ0w£·)§¢^uζ’j#³:Ô /éŽÙF7UƒÃ©k>T ˆ£ºNæX=ÑÖXp—5âÁQ^jnþ×ÏàFYÀ¡ÊX§„CpÞX}Hkãnü\¾ ^ÀûÃ>O´*÷ß IÌóŸdÓÞƒÀ‹ þ°>Y7¬Ø)Dæ 7c·ÓØ*„è£AóŽ~¼iÃhÁ¬K­3e:Øû„p†!Ý"¬­.Û€WÚà<<Ø!¢Â“¯¶ žÑ`LXõî —6wÜtâõP½LüŸ ¹4lEÄù¡»btº: ûeë¾bd|W¥lÚFõa¹jq3Î|¢Aýsµ˜(°¡Ÿe„ºÓ£ˆìƒàv¢ž¦K5 âG,zÎyhæ®Øù8æs,ØxÖ’G²–8ŽŒ›çÅÛ¿Ú¼ψì(^jaÐYL×Ì)¤Ód’…2AA>BÚÓU‰¨Ì…u&ž¬Î_”{½Â±ó,®RÂØÁ³Èg“  Ú“7$ÒHç–% ú§H•“Æ)Ê7tÆ2Lm‰ “žÏ!oöà¤Ã~]‰#vmŸ‚‹8 M~»ZÌ&W ‡yˆ¹hÍ8üúÑÓ¥mI}ûZú‰ýWÚŸRwÒ¡–´Ï¸Sèb°ÇÀ¨ór’ø÷œÚ¾—]¤ Úp?Æ Í\¿°pW 2eü§´@fÈñŒÓ•ÁŒø®ùsæ[Š›B€f|:D‘‰Ž‘ç7à¶Ó–µFt¾CUÖàÚÀ²‰/},šº©i­Ð.'ŸšÃÄhÙk9ÇìVwV|N×6Ø@³ãn2ÄîÚC 76'“¿Į́Òg¥’©âPôF$Ñmu¯Ž¯uýu©±ýª±Uï<²ŽÅׇpë}c1ÓFr=1€,Ï*ÑàÔ‘`_©&³¹Í7}D®ýÙ›…¡ÎSUHgZéTÔ$ôBêúàíÜû»í9‘ÞŸvãn˜ªSç%Ø€ùÀË3K›G¥ 'šU\·ðQ[âõŽÌûÓûO’ïu¼Û³v”t‰· ¶Sås,n•š5›qß]mËw È8/3©U2˜íé尿âh¬Á7ûEʯkŸÌ\åÓ„A÷uý{éGæ§+Ѥ HU¢tuT㋆‰tT†OÐÈ™h¤ºâN+ÝGeœe•sÌ~ ¢Áê†%{H~”Õ*ÖÂá¸ÏÎ-¾ùÊ7FkS²^Äõ©ârkü>‹ÃIûqÏ‹yS²•mˆ½r+uˆ ô7kÃ/ßgq™LêGY#¹,×»Û¬­{“q Ô7ŠšöõÀb_€ÊœQõ¾°‰ÊxÔŒŸ:è» áíÃÌõQÁ* ï:úJ– â¤äWïÙ[ë!rüƒÙÂlI—žÍ­”?ómîÉ[`ˆ¶ Û[»O[‰Ç•‘³¥·Ü >ƒ \W”3[¼-Gñ^¦¶ì8F c{BO|×¼& éžœ¶ÉUSÝ©Y&aêòQ±{1úM¶qÒl™ÿ„,$‚ˆ~á8¬é¨(Sú/˪ôîO;ؤ|%’KLèÖå& Q2#‹¥GRK¡¸³Ð€üÀ~¡bL‰MQépô, W Eà†ÞÑæ±*pÞáÌScþM©ö<(ËäÍA÷Ðö&@_4ÈN^¡,’H‰ ä¼%n¿|'ÀN4ÿ^ÝxN"—WœBÎÄ^nîù™mÈÆfœÇÛ~wŠЫÌÏè&€.P„XVè—g ˆä8òÛæOOÄBd¥nórs"&\`i-Ð3SצfÖ!¶Ó€ø¡ d´þ°zî5½'÷:×øSjsÉ¥)i1þ¦“9m·v£û“–‘åƒ44$~±ï•)ѱV\„žcBL<£g„©SpùÁA;U3+ܲÔúfJ•^€ ‘;€±Þ³L»Î>#Y¼sj›á lòû3'îÛÞ¦Ù¾èßé¾_Ô—g”?v÷î’¼ˆÒ9 ·¼›%eOò¨œ’-]¾pBTצçH`]&%_OQÈ|÷‘Ï6’›^P+ͥѶH"*P ;Ьs12ófÂÞ>'œÆ—¦]á©”ž³"†Þ0P_Š%KéD¯X ÁeéJF33ÏÈÁ$LâM¶5n„·“ §ëœ0¿×ÕÎÅøº6ÌcG’I€ôÀ“)ˆ[Çý”©·5zø‹œâ4°ðyÈLWÈQXW¯+*bIÞ'Ç\šQCf{$S/rÉÇaRÏ'÷ZJUž4è_*¢ê§Óy*^|­Á&R8Õ0¢D.$†³Ï~‹5Ûfp¬>ÑFÿ=Ï Ü÷Aè"¬Íu´°Ë²î½£Œ{µ°EVkh.ª‡Væ èHüÀ=á9KE†äFT®í«’°‘º ªG4ÒÙÊï™—%qàËw³õ‹«¼gÜÞ&®s½–_1÷SÚªûÂlfÆÈãgm³KÈÛ¾éø±Oô+-ŠÃóŸOóϪh:˜h^D¼ðC6ôWZóߎDáxO,® ;y“ˆf‰®7|”ƒZ‡DŽ8çú#Vl áM•”¿^œâLÌvÖâR°y‘œ':Ûr`í2ÛéôçÁÿ›"ký"ЃÌÕ@7ÛÚ^n  ¬6ð¯­MŸš²Q•hžˆ! …Ϲ̅òMŒ)Ðáû¶Ër¹Êç±K—¬ yKÃÄè׺Ýʼ5Œ¶ð9¿ó»¡XØb%ñR•Ú±K Ug‡bÀA C)ËZ¾³n‡ãÊ4@¼üí6Qö‡õ]~Lðo+åæÇ¥ëOÒI†u{Ò„Áu|“Vÿ-—ø>5ÓpàŸ M Ï—zGÂöö”áÏ»¾E¤N•g±ˆú^f#ΩŸæ£éF¥¿B>…І‘gl@ýíÓ°{açÞ-0[Y2?u³ºAX‘d$?=¾?.¯ÇFOf—)~ã°¸;‚6ã†ã|޲Õho›Â÷\âõx!, ì¢ Óhšß,…(÷>-ˆ[ÖÃêºFÑ´=Z,râåïrþÒñ‘4þ¡>2¬ íÈ ¦rz)ô¥ÀóT N¬’²yA¿õô¥Ù!M™Mƒ|ÛLW‡Îíð}¡@R¸bùmfªx”±€'Ø l5³gž-~ÕðƒÉfutØž@à< ·Læ×›YÅtñYäö4¬ø‹Óç?¯Å»DÕÛÀ“…‚öß9‚ …v]é“¿IóÚBZ_±Êû7 ƒ„¤h‹ÑÉcfŠã< ˆT­†M. ýQhéìÄ;$ E˜ý@Ý(?#¹"=„w´Á[¹¢šÌ«Žƒ#ýéôä_s‹ÀבoÔœy ]0{î’:Ë\kûLDîˆ%'ÖùÚõB‰Ö"àB,òðØ*ðÖD‰GŠIñÍÌíðÌï©%¡R‚À= Ó‘cÚdJ1-Uª,\/*• 4¶†µ vWÇÕ¿Ç¡P8t=$Òe,–ôvÒ`‰¶–/_{ôx/¸«òoÿªké…ð~)øº•KÊënqGå**Mõ$ЄÐ_‚ƒ8Ðû×ä)2¬`4¨ [rr:Ç ÁË`ãk|l<Ìœõ¾ÕvFÜÉS È ¨Àt|ÅDÝö”…xXMÙ\Ù~cMÃ/ÓˆTêPÐò'v[L,@ ÐÞ@8¸á˜Ò&û¾oר`µpÅ¢(Í®#aN"ÄÐ&ÏPbyÏWL=®æv‘/¿£JçãÕX#â·;\aj'GÇdýÃÿˆÙU.-%¯ÈÎ&u— ì°Ó½bË—;•÷ÒP[æ|­q·QB°JœkK)o-íYI¤e ³ÿb'÷ÝøûT8]äðú›Âb|lo¬nÑ«|gÕ"ß,œDG½;Tî¯M©f蕜%JÚOþÒ‚®ø8Ü¡ò'+Á€Æ}6·¶VÕDÂ!};hÁ_Ò_)½Ö„ðâ³OMk}“ÅË@6³ò™;èx5׈0ØÔƲӫ‰¬{‘›?u” ‚UeÙ]èá„ì·È$0šý¬†5û'QšU64]œBbͬb/¶d¼¥VÞõ…ì‚#h;3Í6íªÈ7…»ýåü´ãŒ’±M,íÏÖu›õ´¶×üÉÆ`‡8žÃ XHOn‰´#²sOÚÜ¥_˜¨WÍïèæ68ıèÏü&Nö«h|*‹hqC÷§/‚õÕõ×|’'a3]#®s¸gqÊ iXu9/OWû 5ÌÌ_\qX=¡2áΚ89ñêog(z¹¬ ë1l:NÚr4ðÏÈi_ÎTÕoÑÉ|c©m»s¢^ÆzâŒWlb‚úÙdÍ·+µö6ZÑ!VÞßr-bXf:t”ý‚m©GPýÌ]8ÈêïËåäW¿8éó ªˆ‹\]^2qJ, mÙ¼{RÒu䡨”ìVv\0 q±åã+ !@TßYV3 ™~çæbôˆÞä1®(–çWá!ø:ŠáH¯BÐW-TŠ|b G¯‰Z¯è6ç,þü•üÌ·’t8é-Z2T¥!HUin>¾G½bN­wJÑÑd ͺmü¶ÕI2ÑAtYFý¬ Uð¼HŽöŠâbû»LÅYÊ+WOàÅ¥îÝ"öå´¡$š41w¿óÞV²4¡{,nÔÀ×êWt4oN,ëFí!P\c–p|¨Â\aæ{ažP×gEœ’Ú’p';ˆ¸Æ\#ž¥äÈGÁ?•‹-ôÎÆÛ8 LÄ´‰* ŸT^ýÑ­¯óåFóC°ÒÞ#gZÒìä*aàX$éYž0‹‹»Ûj×–T74‡q`3µDJo"".yƒ—h#Ür^t¢Û nW«^cÂÜr9Óú8R+ع\†®-4üzhf\¶¼¢5FoŸÑï6æR’šïû©&ͪÄÒg–€è˜s… 8>†ö‚Ü1É”>d}ûyö<›nÀ ëì|¥võAºk +ÅÝmjU*°GH¬‹ô¦pZë\©hÆ”DûIÂÇÑ΂s„_¿²a?ý˜z„›@2â¦çæƒ ¾f«|‘֣㑬,í3Â4 ØGðYÿáRü…S_»wŠÖ~-eò²ç²å¶¡Êà8ÏêˆH­Pë}¢ñ­)L"yÓßYbcÛÜšÑk‚ËTúWÚ^]‰£0m‘Å›fäBFäë=ŸÈ³’B‡•¸ªzD Ý©ÈS†¢´žðJÃ@ØC—ªÙu®e’S›|iÊæ?¿y¢ò]?ê\ÇàÙi8”°CÂû®-÷Ê‘tNþ±7 W­8ÃuØisòuöï~­.?MAOÓÜÌðúÜi–Ÿ6Öo=bW“Cl‡EXP˜ U9‚6ø%ãó*·+÷(r !î§Œ/‚VñQ%¹3œõ§dÏPù~pTŽ~?A9êZçõöRùô¨£–Jk󪲈ªœdX‰^ùul,_õXYç~Më8)Õ²ñq±…Á©{Æ7&RáÕ7‚Iì=âiß ·’ÿ¾?–Éý°½q>?Y,J2|¼l¯1'àéüŽ3S¸e=ttP o Ì·G*Á ©Z‡\"Îÿ³”0íqEI˸¹½“8˜çþ‡ÖÂÏiÿgI5–1þcfé‚톲3«¥Ðñse–¨B“JòyÕ ªJØøÛñO˜9*&Gº¤õ ël–DC0­9²ÙL[^WhïÛ9]Ú/a÷‹”Q½Fij o,É9²%„žºì*GeNíƒyo `EãšÏW³pÏè_ïå¨Îh{˜› ü0¥A3C;;I# ÕÝ”Aþê™ Vø=ñ®ϵ.‘ #-­íѾh3@ÐÒ1L (6$|„·ÅE ³`‰×°Å$¬ÃÆU(’²ƒ[_ÐEi¦¥ó8ÍkªéŠ›­Ò<åhEn®\,‹Ý¢ÑÞÿú"÷–Ž`˜¤Eq]—SØéÚX]Gü‘#'„BNñN—Þºß[D9R,¤Ùß@úÔ‰´[F©ÈÞ »‰Pž¤þÄ—áÒö/Ö-Úp+ܾÜ–º<ó‡[s_ùÁ ÂÇS¾ùÜ'Îò„2Ûx5Ê˺.ÔoF GÅÍÆp°ë$ ©½…&ó(XÝZgCx}VÝ!ìeÊ¢…ù9g#YШ6€,…ÁTø ÌÜ–T~ѯóŨyg(ð>V³./¸«B„‡…nÎ p%™vÖœåC8±pãzXWžDK$Üw5Üe²ošä™Ó Ú)Ñ(¨Úš 4yHÓŽ›ÌoÛoµJñz@WeÊŽÅ“€~6jFXÞü ¨IÆh?ê£öxÂÄC¬yr ÝOÀeqIK·!±$Ï©—\”‡1Éz¯á¤ÄœNØÂUá´V-»äÇÕpëjzÝÕùN¦ŸßÖú{¢ì¢íb%çÕkqW~Y‡Wt÷ÄÁSÄÝyV@G¥Oq(`q@BÿmþâEAÝ0å˜bÚ˜-oÑVv'41§~Hµ¸Y^Ý# "r†-“ËÀâðU™WA¡²45{êEÙœÄ Ú“G/¢šÌ¥D9œ»ïI¨›6ÙÅÊb_¸5XnÝÃPˆüX^Jp#ì§[ƒCMsÿ.éLÔ âCéýúðÃP²ÖÃs÷i"½kÞSq­·Ÿ«¶öþb2sÌ{K(™W¿"ˆB…Üé#Ç8¤š1ˆ„ BåP#eå®èçV[„•¼5'k¦0RGQ)åìÇ¿_ûƒ¦` -›úÝ:ôò× œøoÿ® ™¹$)¿œèØ“–4ÍÀCý£ü;;"°Œógµeñ} •ûØFÙí—IÅ+‚ƒ†HÜZº¶?©Â}+Üq"½Z^˜eÈù½©vCÅ|‘ãï•¡9w§Üp2 n¥×Á^;Ʋóv£²,¨›6£‚n_Ñ\iÖ ›ßð~:eּƿ½‚/ ™åz¥=´xãð1—G’Ú½iX%ÔÅŽW·„CuLõG¹Æ œ1/mbp‘˜Jc^³¾£N®ò’7-ÞO³¬¯Ë¦ú Ok_wä’ê´Á2ÄejÒj y™ëå°n>]5_•k{þÍ]Ø£ÝÐCâ=èÓ+2RÒqn +sü±ªÈQÃþ²x™Mî‰BL4{ÃÇEˆ7j~Ï(è—ÖAæâ1C¹ž3ô,‘†³‚ã ¨ï(“Órœ%k5e ¹ ‡P·@‚ÞUÌç–?ì‘ Bxù±Z nÐg .qÁÑA8Dbày´e‰ŒJùkn(;aKJÅÿ‘‡üƒfŒ]±/‹‘†eB䇼úÕ·.¾Œk8­-hÍ¿>Š ~üͺ'+:)Zµã…¹—¼9ç ¿¡Ceÿ=GÚ9Ò"¯ø~XC”gïø}>Q3½®žvI'èWÝ=?Ýí¾‚USìï éš?Ä¥;ª:Sô éq1‹Ï;ÖÁbO×à%ë÷‚¤ÚÚŽ+ð¡Û.JbÖþ*ºª@¨5ùU™€AUÑWÈëÊa†‘³ž´“‚¨x‚ŸþÍÎ,œn™dó¢3l#È#a¯Á¢±øû<¦âÁоI{Ü– ¦Ï^Dæ‚qй©‹K]ÏknYû8Cx4çqØ ~NC2&ª_Õ¶’ƒ¿ø1ó-/©¼§§p¼—ÊÀ„¯Ñ9«„I ÄÇ»å!±ñ:`ºÆ‰Þàõã^¿eû(y²ƒžð?§Ùé9ª?ŒCRÆêÁE.pÍ^b!À‹ÜšÄzÔ®Ö±¹ÜÅ+ðÌ(\I0 _ÐX=;ÏG’Ña”ÞeéÁ™"² fýëz{ÚAr#Cq‡ƱÄìh SWv„O„ðë˜4À¯-;@äÍ{ÊÆ)…¿ÙcÑß ¨ÓÏ•B™ÆÓ€ÉäɃs|G—·+†h×Ü‹üÑÝœk‚qäOÒÊvÞQbÂÕƒ“Žñcÿc(p¨í–Ií böNü‘Ë PV^ bÃVðÒºYéÑÔ‘˜ûòÄ5—A#O—ÐIë+sé3(‚­D>®,gÌ» «yt IÓã3”ê&H&Ïï#Y—]*ƒjôþ׺ÜJu`ëåEE&®I!ACHç]SO#YKvýÙ»–½>luìœfb= þÄÁ3¸^Ü9rä™Oç¦g8ë¬.È;ƆgÖGëp/†ÖŒ¶Sýìi/4÷£›A5j®×Œ ßf£blÖ} Î×ñóœ_†gH&G4KÛI^ûÍ5fJuR.QOÐÚ”›‚&¶CÝG²cUÂß…¤M^ðfú-¯þ‹e<²óÑFÜþ#)ÒÌ9Â>hÓø‹¼*¹‹™@èÜqÐÜò26y½÷À¯ žë'¥)!òÇ­n«nú½Õ; Ï´ÉjÇ%È)ñ{4VްwÛ£—ýÀ³æ…áÔ|“*´6œÔBè5ÐÌÀ£MÞvZ´'Êâ5þþ<¬Ð£â¡ê3Õ]™‰åC TѼ–Ò1R*ô«më'œß)—á*QØ·Ç]XnÐpª¯.¶†ÙÓñáƒÐ8­0qƒnÐ¥(“¿<7ž6®åhËX &<Ý»†/Š{:Ãh±²¢›÷#¡ob¬,"јY6ðÖ½‹£ÃCœ—uõhbÃP¨E‡»ö=‰„T;E–ü‘cqš}G÷Õ —ËÚ·ø9u¨‘6®f>?tì÷´äÀœ:4¯H)vg&$É3]ÙôåœÔœ ×NHM¸eœ{*c‘êêPÙ{wyæµuRšþìoN•×lNó5NòLúL1wæð@ Ò5X˜ÚXmôÞޱýÒ4rÈÔâÜÐAÉ¥)ð:ß‚f±wptj_»Únv‘0¯Õ¼*{¿ÂF«¬Ï8aÅý$í(”û²±R¸ñ;š¹˜“ØÂsã*ÓËØ~Þ4 æ)´']2ãÆÑ÷·.ÀŽ!i)n;˜íÎÆŒCýòèâ„fE¾=§‘å© ™ô¬©vЧâÑæn¦â½UÂw†.n"Ñ…°Á@T²…ÜT¿æ˜ÙÔüØ»˜b‹½¯ªf„-ðA±²4tÑ/NÉî&ƒúÎø2™™“GÄ+†Aà¾øf7&ü`~#æ-< ©Y‚×çü?;QÕ»â¬Ì¥å¥ÿLî=–Z™ÇŘpýwûûÃ… .:¯^*[Nð¾^qUû誜ƒêÒ‡¼Ïê‡E>Þm°y£Ó”[»ùåÊž_3ëgѼ&o«ì:®=¾þ×ȼi¸I§“ÉÿËæß?9}•ä³"ÿ̽;«‡á\⬥ ªWØ-——,÷Þ]ìñO¹[Q=‚©R¡?ñÚëÜe'EŸÿøÖÔβ½î)°¡Sƪ˜ÀÏ{öß´r,ÛÆRÁ;ï¨cš§ý1Çyßܹ?®Ÿñ)´6÷øä#âÊuîÛŽ¾ü}Dc&_åÁoë¬Óî&Õ'|e¹¥ôqwX¢ê9CU–Y›dˆß=žê"*µIåÜyßš(‰£J!ù[ f[ÌS:´ZCõù2Ï»®ÞA;ŸîÚÎY{#Nè®ÈþŸÁÅW>UÇ<í¯d9«4ýëò%ý7‚*&¾ŽîOØñèÈ»ˆÅ¼ë8ê¥ÙCš3N÷×øÌçù¨±¬Ö‘ùµϺ%[ƒ;g6:ÿsÇ—–BÅã÷Bw\pËPÝc£Ö¤wr^z*=3gFœ¶¹ú» ³ ¦´Þ17 ÿ9uEíâöŽèÿo¤Ý¶9øèÄ4F}‹-üÿRƒ$5DFñ‰N˜gz½äàž§§Gµrª‚'-yþսɿW~Hÿ”öŽŒ*½{’öí]±í¾ÿÕg (\£ ’sR‹Jòs‹²¹¸órl endstream endobj 34 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[-301 -250 1164 946] /FontName/LENPPT+CMBX10 /ItalicAngle 0 /StemV 114 /FontFile 33 0 R /Flags 4 >> endobj 33 0 obj << /Filter[/FlateDecode] /Length1 721 /Length2 13146 /Length3 533 /Length 13703 >> stream xÚí¶Sxf]·-;©X¼±­ŠmÛ©èߨv%ÛۨضmÛvö÷ÿk¯½Ÿ½Ö¾9Ϲ;Ï™s^ŒÞ{›­·ÑF¿$Jª ¦vÆ@ ;[gF€¨¼ˆ 3€…‘™Y‚BÔhälig+fä ä°ps³$€Æÿ,þùx8Øy˜9(¢vöŽ–æÎjQš¡¸Â  £¥‰‘-@ÞÈÙú‡ÄÄÈ jgb tö`„ml*ÿúÅ  t:ºMXX¦–&Îc ¹¥-Ó¿dIÛšÙ¸þ#mêbÿŸ%W £Ó?ºÔÿVJøG§©­Àh†À¤`÷O?à?jþ û¿èú¯ä.66 F ÑÿÛ¬ÿV7YÚxüO„ÈÞÅè·3:ÚþW¨&ð?ĉØÙü·6ÒÎF6–&¶æ6@ó¤,$,ݦJ–Î&3#'à¿ó@[Óÿ*áãþ-€IN\AIIîëT•Œ,mÕ<ìÿï¿àÿŽYþwü=Ž–î]æüeùøÏûŸ+ýÿÒMÜÖÄÎÔÒÖ êldkjähú¿ÿ]•ˆˆ»Û?D ¬ÿÌ ';€›ÓçÿDªÛZ:¸¥ÅÌÌÌ\œ?þ5qqtÚ:ÿ{þÙòÆf–ÿºMüU•å©Ï©W±™±–SRν‡ò©s}Úð¯F4§ìx×P= ®ýµFð¦xç@ÿûóø®âíkÜOæC`Úx̜ߩôjÇh|°çµ¢Â{ÍÝJû{¢‚!­eªY£W0)†O‡©åYˇXÓùW&«‚ò{uX“"9–Ò’QKìü]qµ‰rªiÐhOã„hmlk-ã+,XÁ]ÎúéG*äŠ8"‰‹¸Œ½¿òù¡Ýxf®èyñUO뮣¢WÕ>udÙZR¤ªxAé§ôÎíÔˆ?™¶&C»&ŒÂêHÍZ8Fáî¼AÊNzœ¨ÞÔï­aŽ¿!RG²4˜‹áC·Ïý¬A'ÎUÌ}»)În­§ùü˜ÄMþ ÊDzïaÃ^<2„;-3ìêŠVZîC³‹ç%ðPz}…Û¡7’‚ðB4{R¼gÇi"S¦yÈt¦ÊBã½/c2üÉÙ²l4 B[SÔj‰BvüÓQþr¡[xDšdLvÄA[¦Ì·˜Û‚…ÂtDË|†´–#ùÚxEÂÆÕ^A¥1UI°ƒcê§þ[‘– ·>3nˆ%ßðÜ%J*j´€ŠPòGݓ͟õLÐ6CÞíNf¥88ÃiÙ¯¬ÅpÓøóKðß3ž¾ÝÓ’äe¢H¯Œåû,¶¨ Ö”#Ðà+î{}];:°ËwÂïd2ŒT›ÜÄ]S'·5pœ–3psÀó¼Õaµö³ÍÄE:ekX´‘üºã !yS9B ³ÅÏý©šûœk©y»± àÄø ;Ä»µÉTêíkn¶(ùýZ»ìxÔx÷ŸkäÈêã-Â`Htw§BÚ_LÌÎÅ}q&Š©#¹ÿÚ×af+‡&«­d=ö}æå›mçÌ2ëÏÿŒ˜%¿P2dkÂB†¾ÇIó¡ë âqíIò œT‘?õi]ƒ´‘]qwr‚äï=ˆÒ ÎæGŠk7Š…Ì…Û½p䦖™°ùrú¡Gaíá ¾—çïØ£±£H/0åî‘6p4<ÝÞ§o[±d[Ì-…öÊ£¤èÄœé/íÇ3‚íåDVTé$ÅüÜ|&±c±Á–é ‰Hj; ÀUǶ´:Kr©Ù2n|ÿáý>€˜s fq%>Ë™‡¾_xë—½·M_ÎÌ6¸ìâÜZÌ‚®&”j¬Ì€2¦3nf0µù¼,Dýú”¨O#Óh)Ä^¿Èw!4³_©ú…ÃâŒ=’ÙÀ|¶]¯¨¸^¥´4hLjuœÙÙ4ˆ¹„{Ðßô½Í‘óë>g¦r£|¬©åè}ëNx¸ï\Çÿ¤1ÂDÑÀ«GE/úÀäÜ…L¶£ðå£Ïpou[ìÖ2"|ëÄ|pQg'vÆÖ"ôM’ê}[u>jÔþ-òâýòåò÷Ãò]׬ðÀ¦žµ4E8}˜¨²âµûh*4SVÖZ-!éåý©Ë7ŸÒ"3{h„Þ¢w6¦‰-Ês)LþïÆ*èWN¯w04ß/H»z™n˯6_9QÕȆ㩦è€ÕÃÜ\ÂOyÜ^Ö`î÷ 8ãk,æÊ$©%\­PèêÞ¶L?¶^8jî$™[TÌ… o$ ùÓ´¾§Û¦åËÆeÞñ Õ¯2ïUå°ÓOM…Tû”{¶¯(ÿZ”Ю)Šr¾ id ÎÊ,ò˜R•Pœ”*ü–¾;y¾ÊŸP¦1ÈP„Sãq1ëîÈÞ/_Ñì÷“òéW'åj©õ«LßeHÿ‰uFmHÏ#sÑh»·¦vŒs`¢ÌDPg›ºÔítÇRgòç ”|„Õ°!ü8Z\YAÝÄ÷'KX<“pïüV°ôö ÈoAÐÕÆm 9ç®ë;™{¤»¿Mµ–‘yÚó(Àõeëd2n ° mfYµ%w«¡x z ¯¿â¢ó3İu¸\Çñl‰ÒÎÀSÞêXeyU?[Dynd±š¯_xÆdy4Ø]QAý¤i‰ SÙ“ŽÝFrèó±ŠÀd»Îãø$2.4ܾg¨S^i­ÔYù]æ ˆ'Þþï\†—š»éØÖSÜzÂg¿S.#¹—y ¤Šj‹à]1N ´»bê¶ÛÖÎÊÿÈZX©Qì×7 lçÒ°qô¶d7\™ÏåVjƒ $¹aGD;AªdÌàF½½-·˜+ŸJß$;ÌÇ?æ9?W‡Ê/'ñÞ8‹íµJ¯ýXW&Š9šÀUelºº ™‡‹ÁLÖ–Q‚jµòìZÕ4ÉiáÐu$·Ù¹¿ù»¾†ñÒ¨Ô]´#Ïä-¬g†‘‰Ã‡ô0Ñ©Ì ž¸mUÐ/b蛬áZ·óŠÝ!¨ùzÒºÅ2ÝòlP–« ±\D’Dj‰KE! *óÑâ§YóMàth[MmÖx1gQý¿?ZxXåâ!‚Zo̧|é³8‡C Xœö& >‡jœ÷wz2éÌ”4ƒÁÀÕô)Ñk+P¦8û¬xôe‡ìÏ…Pä°º2eؽ-æœIª ¡8ôÏyC%ßKsîÇ l&›Mnõ/—g[ü~›Ã=qNÕÆYÂ}±–gËMö,+ ݾ·©‚-’%ú׳&’‡r†V4*!D{7ÔñÓõ·Mº8#4&k¨Ãtªl÷†èJÂn&Ô‰ý,c “ÜA—$[ÑÎx—fq€EÞÏyü+†ÕãT¿Þ9F ËöoȸEhÚ%£ @Æ‹}7ÅwvyD/ÿËOø¸êŒœžÃM¹ž¢ „$˜ªó¤%kaeO8ɱ@êAÅ‘ë¾FPÜ‚R·Õ­Sç_Ö7<"›ÞŠ*hÒ‡ÒœÜ퓘µÉƸú•;ô‡óã²”x´`Vmeh%ˆ…''Î3¸¬ìÅýFwÊfí&Ñ].ÓáXè¨Ägê­.ÕXB6¹‹±¶×ôõÙ”$v¡Ùþ¢ê›Í®¾Vtüx]DTmA9dàx°m‘åbÓ-Å\K*Îmž×é÷î¼.–o:{åâ&£?Ë-W3 ™/S,’‚7Y¤oá+Õgý 1lq'š¦ÏxŠ”þæÁ«§}V–G©-K6ÅŽ‰[—*Ž—'ðɦlÿúÑ’Dœ/PQÞm8vÖëVÈ ›îžÉyà•Û숒á%În_‚øÑe“Íb>N)H.ÊG¹ôa&í]Ewmu³k¼ŒŽs(»[GIBáA¡Í=m-OCö+V²£à.ÑH~‚g®ß“¤Ò#{jßpÒцR£ó³ªÑ)%maZ¸‡  ØuÔª„cMg mf¬î;†¸ëj:‰ %³°XýÞ¨_¨‘´ÒÕ~•3ÍIòæö½âMV–Ti¢<_d··±-f<êC¸–ÜjqªwDŠ4î'²óÁ ä¨*Æ»þÊ1¾OÂX·ál0 ¸¼àìwï ³á í :]\«¤?„»RŸË ÁÁìÞŒBŽ“¦Þ,ñѦÀkï€Ê2Y¼Ämøº¬liϹ~£ð•¡ ,ŒlÖÀ|mqÿßcýýºMb÷1UÛG£™awÔF­{÷\º2ãyÐåœú“¸Ý¯=´Oîr›£NÁΤ¾˜k &¦´¹#âˆï—ªÀt©’<ã“Î`1zÝ¢§‹'Ç3FUŽ gê¥Q¨ì¬tºÜ˜±hvÖlÀ› ÜEÖ©W_Yc™“õN µ³„“rgk²¤0µÈæ#ô ÷³Vª]Cô…eû'ÝC»ÿð¹Fš?ÊjPØB€•ŸðI J (ê÷KAý½ Z• ˆAk6Ö-ÇŽøÜ•\ ÓúaZØ‘,†ñžÈJ0ÕÞô÷Ä ŸåZåXÚ¸”ð€ˆ"äªíoÄÌB±<¬cø¤!‰j޳¸ÌI‡CÈm/ìz øC£IÏËbø)¶Eư·Òëg-ʹ¯+ÿ³Y¿Y aI­67 ‡m@ÖoCŠ—ÜÚô·Ù‘ó€îÞáú%"¾4¢ 5Æ=ÄK … §¤ªYëfl°7À¡Ka¯L/Ÿ7¾…:þ^QpÊ5(ªîÇ#ú®MU0ÿdªÿ–g»u¥ž&5DÎz[ä+aŠo`y9%”åeœo5€ ü€þˆš^Û›[„µ»š%îh¢Dù&Ô‹f©Æ{Ìo†‡RZʶßÁëIuÑì¾+¯í´™ª•µåÜ;¡C_é±|DC@±+w­ 4–«Øüs"€»±§ðíSß«¨^’_„9å¸ÎìîGÊr'‰82üÇ֩ĨZRáÛýGÆ©P"Kš=ÞcWûZÕºFiŽ¿mrmë8ˆ«ŠÄ, -“(‡âˆO|™Œ=9e*ö6æ3Þ8jíî¶ž-Ög#‰¤Èsv¼2=ã‚÷/Ê·O¬UËà@üɰÕæýýp3 f¦õõ(¸0ÃE"Œ'õg,‡$a[vÅçaød1q[×áÌúÄjÆîO_¸…»PÏœöŸ§>bìŽo¿«Q‹#Èç–"¡ÏætÉœº4á+>Ó „$ÛéšÆ¡õüA&±©‚ÎvÓ×k¾Þ:ëÍ~Ê÷$ûIS&’ðÿ¦XˆŸÂ÷›òÚoÑ È®œ+€˜% Ùó6îD}Á†7­aÔgÖ]p3o(~Jù®¤â«*Ep=•òBÄgü‚ê8hÄ,iv”ÀéŠvrƒôâ_BÉ‚<ùv#Sù ‹¥*&@Öž˜p>Vc ¦y Jþ…dñ»óûrƒ–%80: læŒëY=ŸÖŸÄÌ”Jæ…=Ónµ¼Jȃm÷lrÿ…Öè«Ô /ѯ~1^] n9vÞV[׃ÍÇØaŽH,æötrFn•ç}ÓÙB.„ ãüÄÌpA$;™Ü²NÜnùû 8I-=„^6Ç„#³²Ÿ\æë®zî†þ,@vHM“ »Èf}aoíé’&˜ôªQÿÖ=íÛe‹Jž-©kõ1Õ·H;6Ëßcüm5“ßÍÚ뇬ÖÍ_««¡\ÖˆáÞÚ-ªft•·œîÎm xïIuÚÆ‹N|JÓF1™Ž-St¹¿TõB¿š.3Ì$sjÅêX5HÇÉDí~øÏâ9 ȨF÷ŸpÕyú³ÎÔ'wà³Tda…ÚZÜUŽÑôñùr%Så¤é¦1èH ‹éàÆ€‹éçÇd,¼»Á[ ¤À§Ìלii”6%¸‚l`Þ¥H°dŒ!H©1Œ‚âŸý]‚ŽÆ_„kþL#TˆÉϳ¥ôZŠÌ Hа¡?âWñ}KWWÑâÿJéSdt'Ý lþcÇ×Ùq{©ÃɇQsß!†÷^©µÅYÛdXëçóŒPB¼Sp=…Nâ«NB¾C¢ÿE*4! Xáá­òVUŠ,*UÅ¢GÅn.Ê` Í÷S_ ¢Áäý£â{Þ3ÎijZHÌÔ¥Ç劲±lÜ©3ó×|žê7…k4s/w] w2r²+#õ+(àch™Ñqæ¶‹:DÈéh*‘Šÿœ]Â{5y—¦à É gÙ‰]‚ g8y BO.a‰ÃoÎ4/©õž3yåÈì4õ]©§wo“\#¤V¶°VÓ³]!üj{†áÖ3Ú¾Ã,ßM‹b‹ÛgÀ¦€ã¬Hš:ùÏaBï3tÜ‚z¤3)<Ý×#ظÑU4Ý; ¶ª×› MÏfr¯‹ˆêo\vüæj]E Ô}HzÖîSâ —ë× ±t©ÇË|jï>¤E®Â!µ‡^ÓœÈGKÏ2É•X+x·†_ŒE;•„>ª®\£eÏ`œyX¯41»*ªHÅHΛ| ¡°I¤Æu ºûP&៸TÊqiià4y‹%)Y>(%¿<;°¸¥&~•­€N•‰j#Ôl¨½@¤[š Àñu5cNÓl³0•ôÜŒ W÷æE‡¡V #ȉ„›áKƒ<›¶4 ‡·„¢‰¢âêuÅ]'_ó»}Pôfz4)½ƒùEñ”‚R¦·b›ëh6ÿq×E ì·Ûc=ÉŒº)ùøõ2Q«¢œ˜6‰‹V– AmYk_Ö Úê8Œðˆ÷~B9.®£>Çê/Òq–o!¾fivEâƒ"²ÍÔG=]ðtp«ï—´›ÿ\Yü;3WɺëÚСåu8®çÚY¡eý‘p¢.Æ¢P¿P÷÷¶ =>–>³Äð4¬Jùœd~ñj˜ð=¨3)âYNdÿ¾Û_±øãéàšG=ÂtÁ]ÃÇ?t6©©$›üe–²ýŒ®ö8bïë¹/²Ve>BˆË×WÃ&ŒÃÃBÉ.5^•Pm4Dö‘¿XÒsõ°Ë àš?½‚¹ÙSsoàƒŠmýîšw'?èÐ^Ï7zwâ4*ö÷õí6t[f»lоáEf&•Ö_ýМkÕ{n‰þ ëüÞ\åâÓÞçÁýE7%§sÉY/º^‡$Ƕ~Æ{þÌ¥®n dçÆ|y®d¼mŒ,ãŠÐž£Žîàru ľH ú1t^¢Nx­ln[z…Y1\”wj(…À‘KAdêøì&õûº¡¹½Ex-­.è }:òkª²W:\¤­ÇIÛrZä-Š´•uÐk7ßµÀ§ŒñÕ[À”I Ba‹ ŠõÔ%6µùÂÉ®rÜK"TaŽ9~h|h'À‰dÀ¹‘bÇ0[GÜïÜSm‰²-[¼ó¬sŒõp&`Ì­³Óx~âpG[ z.Ú4Îî2DT·ó;B°…ãR“T®œO>51xCʯWª—ZN D^W˨4¦£»y”IÀ™VK.•½m{ò81–òa_ÐXÝ;tSTÏe¤,&f‚MKÈø=ŽD£"ßÝáXÁLÍdÑd=gì'•7ör,Žù¢1¥s…w{#xèB}ûì;§uíŠ^Úäã¯uL–o°”ñT­±ŸÃ…Ùe9Õ±¤È/3¡'à %w€L=Óçc4‹ËÙ6ÏI¦­ÝÍ4”èsnÿVƒ§¸òÙ»áüDÚàì¤?ÿS¥N÷¼ò%|°ˆX:$”uúÖ't3Uõ¬ržyƒƒ ç9î3Ì”×Ä‘lMµïBa†Ïè/# 2lo$ç½ÃÝÉ*ˆã¼Ã,–z&„QT®jÔ5èðÍU˜i_Ίáñõòö£Jc°d³[9ÊTd4çþ–«$Röì$z‰ïϯAj+åF8³KãÇí*–½3€¼¾cO6×)w p»…·û¡ãž¥vzô ¾£,âÖï.Oj¢rq¥_Òœ ÆùØC„UÀCBÈq«SlÊ0Ϊ$›zìžj×ÀÐMõ*]ÞÂÊ‘BÙ6x½u_¤…š o0gJÕvêFèšu ’GD¾i¼2nïÒáá¾nø©üæòÖ¶S38¨Ób¶^~VìJ„Ö€Òéø KùÖ ´h$mb¹‡"ÍŒ>â™»R²k€ùH#¾WÖ´8Cã!“T5ÂzúU /„“ÈÂ>þÚ.­i6ïÜÔ®b *±›z·‚“ñ½ïÊŒ“nÀvsŠIP^B–T÷oØeÏûÒÊ Ð ,‡‡%`oÉHá ˆ’ŽÌ&Šq­öžš°þ@w@™ŸÅƘ.Oe“¾£êéiÃÈ’æ}¦è†ú¡ì–˜øª{'»Ñ¿õºy•¿™RM•fçô˜€byœÀœ«ÛÒa˜;ÿÅ$Ó†ñÂÃЕÀÍÛ±-¼bTR›r+ ßÁοF‰8]Ji‚×û¹/“,ÿùRäzVVÁ*µ©‡¢ ?ëІ3Ž|Ñí'¬]]Óž£ï¸?=™À:!þñ'O¥õHOºÉRУ¬*©U„ÉnXÚ6÷¯!-ªêÔ,ûÀÅõÅÓŸZȉ©£ˆµ'SÌV-ÇItHyÓ¼V.xîÐé49‘ª'M|Õ'¿ëï`nR3ÃÞÊÝYÜÓ`B7/׸Y®¿ì¢b…‰=•^–º€¸Ÿä#bÛŽ½äöGg­ÿ@9ý&&´V¿óÜSÿsUKtÔþ5Ó¸j¢tŠìÎÍ7¥Ü˜™,ÝG¹<°6L¥»FG`K_ÌbbDZ÷{ßÿ`Ù¸/» _«ßeFÛ¼gâVhó2÷=úõ›ØöâÌs«P§Kž)É ¥¿!£ý…¥¢Wo¯Ö½Þ4ÛnRi]]y'®ñô¢û( ¦ºqÔ½# w5Pâ‘×5­ìê(ÏÂeEßf­pä +›€MȬ%±¹ ð%@Xn5ûê—œ6\k[†€š·ÎImû| †úz椸çDS¡™S‚¦‚ (G©ð±š»Ü8?ÃãWëó\!Á ›²dsûr·‘j‰j[k|gñ€ØÎ×"ˆÀŒp­ Á6sÔ‘á4]ƒ“R¾IÒ¨g|§?âú^ [•¹8XŠhÅ´x’K=¸¿;5~ ˜ƒ€×gMﮞ©¢ÖµÞÙüß`¤Ò!‡§|`‚äŒ4^g›RîLiK"V¦¹¤† ¾¡¾©u‚äÒö¨¸ï†Y–2kê)8…|?ëÆ%Ã:ß`÷1Èì#2è’½Óí)שp®°[½Æ‚°?ÿ":·K ĬÞÂç+ßïô£Òo)Ðhy‘vô •Ød(M ò Ðo¾’ãéÀ™Ká½ueªÝ,}„—òVÿ«µ“êÔýÓÖwôùíµ½ÄÀê}é Ò(„rLÿà`“ ôR•G‘Ú¢¾ö|ß°&dV£°,ñJ}luÀòHƒäf~vٚˆžG$ªýúÉëPJȆ¦%ª‡Ä*æ´:t‰#c8ý]yM£æÏ.Œ±’_7Ãk±•uµ†MÙº|¥$Gਸ਼Ûí˜òÕ$•fS‚h¤ŸéˆßsšÆD!ù+´‹÷Î;èòêy§n·4=ŒÐ÷âØ³Æþ`·ñzõî·+h¶f«»[ÞXßRªZŸ»•áÞV N¯Žÿ!_¦Pk.•êJ1¤á9_cÃ;Ø=5àƒI Ä”DzxruÙʹìŸÇ83Œ„Nsåw&ûï|Œ3`b—Çéß¡Qr:ïØÒgFC‘Ä%ë i·®>Çù-Ñ üuòx Œ!IJK¹]¦bæÃŽ@í˜ÒSqyÀct„¾©þý½ÿ§ƒâ¨3"¾,ZЇ–ɸ&/èË—û© ^ëY1or+gÕG¶·RZHöNÓù’dÔgîr-}Ã@¢w-Ï㤾æ£%Q"æ<[bà+ÛN;úî’Ó.$zÙFD²|#_yÈÙáñ,ÅeÎy._”˾Ñ' »]«“£îDuùkþ Puƒ8œ—©I2Ù™QÇÖóÚÈ#Y>?1Oj량„¶^¿*W€OÆ !\zmÜûçœ?*X†Hµw7O9DþšMŒCÌ nŒ[Ç|·V»ŠfÏ]ªÀ¤24g\è?R¨Õò>U")—tUl°$xܧgtOðl¼ÜÎAIVT(àqú«¨²ˆ,ò˜FZ7ÉÔÅñbJâŽhè;šï UÙNÅ€É:‰5zÄù–D#¥ÒV#Â¥ƒœ>ôÈc®9¸Üà®{'»l¿MÃ{rçJÄ4S":n𤤠ìu­[p]¸'S‚ÊtIÂ%4tÕ ¯¢«æß.iÒ8B p38!hŠðadýޟعŢ9~šøÔCœ$RNÉî;_i~ Óï]ˆÜÒCIàA«¾ÁÐi‚¯Ù§@þ2Xºü|Mlü¹Ã‡Ë@æˆÃÓ7ÔH¢ÎzÑ2£ÈÔ)ÎOèQœÞoÁ²ög˜Qª=#T¤ò,¹!áÝ}L.à˜!×V\Šx£ëu_vÄ\£?÷sg2ŸÊÞ®ÍQÚW­ôz~Ô×~>:eÄœŸÿÕ¥])òîç6> \"4V»'$¨,öÓŨΞ€3m ·Ä@Ú Þ'q­Ãq“Ͱڳé>š"äÀ¡òVÁóÖÈÊ£‚5¹8ÖWog펼Éé$ {!x†ˆ+ÜU­ótÓJ¿+oq1cãOÄØÃcÕœ ¿ÇÄŸüQc7Éæµµ¬5¼‘kð£FÅ'M÷õÍìÀsº»Ä¤uZþ(RâùWµïèèUâã3têZ÷)›V/õ%¡ÅÐ(;Pi\muϘԥ¼3åçÒ^ÂW'öD#an”Ã|TÍ<\Éš٦̄N‚¥Ü•îì‘"y¾4n8¥·Ré”T9ú#QÀŒ°]zž>B«³Ðº­ˆl–ËRƒ)"ýC99ƒÎU¬ Ïÿ—iWOë€ôñ³tc~àIã¹TíGâäü y¦ÃI<¢›K[‰¬2Cêà4MÞÕqÔ*%-Д®íŠ?ãÈ Â,.ì› "ÆFkø%ÏÔÑ8h8Y0~\o< a-›(é8ÐZ—N”çxé˜çPS“l4â.–8T¿mWsüþÁPö:%.Å%_ôwÑu·§ü;ÊD‰þSð@¹G !Ý ‡È™úB,×ÇÜŒ¥:ÑÛƒq¢=õIÖ}|Ú„T&`dN¼l–îm¥wCº3Kt<TvÅG%FSIõ¿mè•ÏsÁ׳xëŒHƒ>÷ò¦ôìHbGy. Á]¼b½OƒòKˆ<¯8¸ô1±òlÎmè8 QIO›µk² ºÀǬ§ÀFý’·Œª bö0D&»{d‡ÿb±ø)Ï/I¤PÙ!)”Ôf)/@§Gi¡{æ;+¶–Š)™Mä¾¼qÑm;ÍËð2zì)ñ?ÿ îŸ2–5£^Ž£—D˜(Þ‰‡²!·Å‰8äÊ6+Uì`Ò://¸äèи…ï×c«^JkP7÷U ¾ì¿?Ç“eiür”°{ºñ7šõÛ+å ì!£ÐÚRX-Ĉàúvær–¼yUÄB9]ýÚ@’mXö€ÄИ™hã²2ñ2 |G&c_žàݽÃL+6ãŒxØù Ù6?]HæM¥MkeYIܤ¢ùsîƒ÷8“~_¹á0XÖVQ,n-y¸”dɬy;]mT—ºûÊ´o¥ßë¦ÙÄEâ9}%Ž”…µÅÃ>Qáç N'EDß›ŠYn*lUûù×5ð[ÒQtþ qGÌÔ@»o¥>·ú]q7þ¡´|•ºÜ>t¢Ã* *„KZœ;“Gĵž°ñFÂkްæhTÅ€²'ÊŽHÜ1kwOé"OžöÐ vT¼{8µˆ¯6aÝ—äV¶§J¼!ãlö¢¿†¢1«3\}V·Å§Œ2dÒýŠPpñêW6 UáÞ·É»=.³Ud ÃÉùaoiŽÖ²eM¯«Ï¯"‹”.ƵSOö´˜ãú2¸äÒ(’åÞÕô3ôî0Â+îd_sŽp³Îž¬?üyõ&5Üu~ÄÂbüY•O÷$áõüL8d#ÚÒšš‚òH' wxì‰ìÕ$Ü–‡À¹:›Z¤_hîfhAëúÛþæPjù]¼–é0‹l[ÝPÀÏ[;áÖW7wW( E'…/8•ŒÆ¹±ÎÓmïßÌKIÀßA¤Ù–iczÃï)›÷ª¯’RÄǪ‹‚Ò³5ÿáކ ÃVmWïù8awùhwßü»å¡¢ÙB‰kúþ1Aê„’¬¤»¢qµ0>3£Ý©©mÓß…Ê»ˆñDaLîªAè%±µE´ŒT£à–û£²Nÿ§€uRÄn[vØÄRŽ€ö«Lǽ4ó›Ós.~£Ø¸ÏvDÏܪæøêJk ó#L«ó9ŠÂåŒõwn“E/ïÝ\«>×~ô½‚½Ž6äQPñ–…YÑR‘ÅÒpgô:’R¶–eÛeI6|Œ,H;—(êÜíRÅ×<%ýG=Ú*R¨*Ý)­&Æ•úfZ†Ö¤ ¹rXƒ|bJ"M2èrüÀ'SÒÞšŸ¦ÆãÓýsI“>æIIá5a¯ÕEùæWü ê [Ę¥Mê™ “u,;Îö´<‚hh¢y¼“¬­ÁvIÝ¥çëϺ°}ñº2)üˆ°ñåÜPRv Ð} O,¸aÊæd»ˆ‰#ÑiÁRß «®«õuÂàÛ….jNê÷ª2ñ]Ûš¦i\ÝïkmÎu:èHBºèÓè§™§>ûmåba¥ï<¤ <“»NÇHB®ŸPtIšå—ãMœ—Ok\S?…F"ovamÈÔÑ{ž.°ù•ïk/`02yÝ¥¬àޤ®"&ãÏEXm%R„›É… hÀã¡fŒ¥ìOÞåɧ߇…@#'ÁÄ8éã_ÑvE~Í£òp ½\÷»Ø £_vÞ‘€§è+—=÷°/(0БIn©¡{Ò’¬½eû”8Èp2ªÞsY÷-Fš§…×ÞáI̸7wß3*n¨G;£î“™ôÝBÉE§0§}E‘Áć{õ-*瓪æ!¤ 㼟<NmÄcŒaçñróJ¸cÚÝã ³¦GaÁ¶'H_fŸTÙícïðé‹xX&j«Ú,C\ûÐÀÿ)G]à]a¾3Á†:ÃxCœù%}fOú0Ö/EPøs4{›¨d%q»Ht6ös‘örâþàØ ,UÓô1â2ðHþ®¥£k>³·h”§&׎¬j+ÙB”艋¸èâV.À±ÉØA[‘mG %ÓýÔD%t4ˆæÉ|Ù·Æüyü†nÆ:¾1Ó¿CUÝ¿ÇÙ5«~š½ç›IíqöcÏ‘‘ÓÒ*ÎÝ¥š›ŒšÆ&,8Suóg$™˜rÂüfÙ¦“ƒIp(Äm »ä+ Dô*%h¬ÿD—Elá´´âÉ=ÍÕm[&½9?Bªf´¨á¹v}Q±(w×B“A—Ivp¶Àmà²J 9sÖØ XxtÐæ›½‡ö<)Æ+'ÎÜìÐ2=ëwg#! “L&6!e›ÿZ;´ì4½€Îâ @ðyåÈÔþšŽä³‚èf§ñªýÁû=ÎKsW°Ø’Ò)žoa=ìhl €)ÙtEÐÓTl|pݨù¢Zø0†CU6Sžçx½yo¶c¥cìoTà’4Ñ„ÕVþg¦_Ü-Ç’˜©NÝk¾ç6{ëˆ 'ÝÆ=9ÿ5Þ_ •úFÏ–Z’ï•Ís€oC´Õ¡(/˜l÷!ô´Ó¸EmZ‘Ò¬P!$~ù HŽw˜ÊÔfkN8zW»ïϰ¶н|àaGA8äy Hfb2ßZ²ŸK`lUXIxʧq_.M}«9Œ?á}ØH¯¿%S+ùž"èE¯:\m™²é¾Ÿ,kZÄ!œòá[8Gè…±õ‹09•6*—öYï^¥[†èº…¹…í/¬Ìä'*ÁozTþ û¸¼Õn}·‰Â[]áòþ™ü4G›bâ?G’¢ûÜÝŸ·ßò=ïvÄ”×`ä|nd se“TŒÍ\hÖ•ñ³Ñz“„4yì'ñ-nÀˆ‘NW©kfÈ\ ODBLÃv*½ù‚×]ìªQZÓQ.†Ã­ŒáÐ>ì9ªRé¹Àqʪ2ñn;"¦ŽèËð ƒ_]ùèõ ®ËGò%ÇŠ¤¡i¿€âQoéÌÕ^Âbƒá'º?qIIic7>[w±½Ï÷…W-ãq?m‚b>!ìèðÝ|¦-y’¢Ñ‡÷¡?D{›÷ZûÑ—`žòû ¤›¿mKâ…n¸5ïàI¥ÌݤS›ÇS©RHí¿8oËÚV l HQZ’k- ~ · Y8[½H†Å•EÇî+@ ›ž‚—7y‘ïgaçŸ?ðXýæÔ‚<ºeÐHrSÇ R(ÐpsóÜ·=ÿ)ÚYŠE÷çê5Üþ7L÷ ;ztëi<¹ÑiQ6s'dÍ’-á+q(‚3’ ²ÏÇ~BsET¯Sú¶“Ý@¾kA!3¸Ý¹bÞ8]uœø÷¹QÄÀÐ죄çÞˆmY»“AX2ü‹ù ̾žÝb¨D|žù›~—¦Êè6d?}Q¬¨çM´}¿ú(Í]MôÝ‚®CüÁD©<åµFË[ušÊâM4¿é6TÒæŽ¯ñƼÅÃ%!2LäÙ¢¥ÓÔ§i‡]ÓåÙ2ЊžgŠFÒÊc‘öqH ÓÆ™ÅŸ5èy{·¨³‡$j±UqXX¬;t¡d.ùPg–­T× 0,Îax„ûÌÂDÅi¢Õüvæ>E6+=¥ÿ›_òŲk,ƒ kVB1È ¸þ‘Ø>?\ÈMžå%’a· ³à²bœgZ9®]˺H&xÍè|ËÛé^çÅÎÂ% êúc…NÜÄY. R¬¡ÅzËãr õÕ®I£·D XŠã¶ýÖc¶í?ð½FŒpmµŽôñÌWÏÑÒÍí Èb…F§,·Žiý/’Œôè½BÌti“‘F¿ºßèï ìGÂEH!µ ˆDƒ-¯Íkn æpˆ ýª‘§æMãýyK- £^3dT`ã„ý÷C.<¿U±i»õ÷^ <¼…9¿*²­=Qç¢T‰5v¦aüêU¦Ø&ÚË^Ÿé–ä¶ÔÈø†Ù5HÑìXµ:ê„å\/¤0ûµ•p¨å! «¨oüôÊKv¯1IjË™i¤qœ|ðüñ!ÍRKÊÌϦ#®—Ujªµ›þ:î}~œ&×aÛgΰ8¯x²µ‹É ÁE¯E\p 8y$P’çšxr‡‘æ­UÓ+$HJLL™ »týÏ>P{£dÅËVó2=шóèºl¢ÂRŽ n$Ø îÉh;,$ÊɨØ9ט#dIÀåô"•×’§§ˆ,¯×_Ωp$2©ÎFÔKe¢¢oa‰Ø³‚£ù7Y¦!Ìÿ/„ÿŸàÿ&6@#Gg;‘£5Âÿ†Zã> endstream endobj 38 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[-4 -235 731 800] /FontName/GVFUWV+CMTT10 /ItalicAngle 0 /StemV 69 /FontFile 37 0 R /Flags 4 >> endobj 37 0 obj << /Filter[/FlateDecode] /Length1 719 /Length2 11131 /Length3 533 /Length 11684 >> stream xÚí·UtÝìÖ¥iˆ™™ímfffffö6n333SÌ 13Û1Û13Cbæ˜û;çÔ_=꯺éÑw=ZÒ…ÖZSó}4¥ ‰’TEQÔÂÑ (åèàÆÈÊÄÊWÔÐ`e°2±°ˆÁSRŠ»MÝl$LÝ€|V^^6€¨“ € ÀÊÂÇÁöÏO wtòv±±²vЈÓþKÅ µºØ˜›:Mݬöÿ˜˜›‚êŽæ6@7o&@¨ýëW€Ðèâ´`‚‡geXؘ»Ì€V6ðÌÿÂ’u°tpÿ§máîô_# ‹ë?\š“Òþá´pty,€–ðÌJŽÿ¬ü‡æÿ1Øÿë¿›K¹ƒ@J¦öÿ²ÿwXÿÛÜÔÞäý?ŽöNîn@€¢£ÐÅá¿KµÿSZظÛÿ÷©¬›)ÈÆ\ÔÁ °ü§eã*eã´P±q3·¸¹¸ÿÝ:Xüw†’û7³´–”¦¶ýÿx®ÿ™ª˜Ú8¸ix;ýOÛÉÿ]³þßõ?ù¸ØxôYþ ˜õá?ûþ·Õ$Ì-l¬ên¦¦.ÿ³ñ¿S‰‰9zù2rÙØ9Üì¬ÿÿU¦é`ã씕p²°°ð°³ý»kîîâtpû÷{ðÏýþWmióO8@ Ð>H]U‘æ‚f›Û¸šŠ&dñýGTpˆ€&÷'Hp#á°#cׯúá—ðf«¼å;'z«ñÉ]ÍÛ×T cHÖT⢿À™ìÆÏ‰”0Ÿk-¥'4ކ»õ,Ž÷<%Zçl‡Ö pz¢€s/ò³Ž?‰¶[d.›’ê{MT»2–ʪqgÒÒÝzsÕL1²Ð‰¶i ûÍÉu¬Íœ¯¨0%/»'žLÈuIDRw[pWh)-AÕ‹«ªi˜ ¶ZV#ùïäeî ŽDÁ’ùèHÉTQ~g,Z•”܃y|HC`!Õ•ò"Y!oø‘AFˆq2ÄLýúiJk°JËSª>uúB%ÞÛàÄç’ Õ| Q~:ÔÑ.œZ®‡õŸiïþÍDû Hÿ[*- £Q>"­ôòoÄE0»Óí#æZ¥ß¶êšæ6@ùȩߗñåtN>´#Y^RÄ5MÊ÷÷­=!/™½¢Í£kœz‚LmÎÁ=˜¢Û¶²ÿ„Ô-{:Ùu. ÜÅ}hE‡L¬.9Ö–'øãÛ)MSí&žÁ÷Kt£¾eµØ$ÂPÙÛ¾F‚I2¬û„€~I©×J>ÎÌ|à ¸»uÔug€:Æx$ò¸ƒÂ/ødÙ/ w‰ðãy›îñØg—9oÜ<ñvôtDîJÿØÛ6X„¼ÔV¶L6wÙŠRB°â™9v!ɪ`=‹×‰ÝÁ)‘„؈ÈúÞŸúrø.ªJÇ‹;îtw§¶Qㆬ¯Ø‹òÅ×Ì›`QÀ0eSBW¹Í)wŸÉï'=[ˆNCÜ.Ožk=Û÷¦DIàS_˜«õô †WC2Íè…W·wîõ-;˜ƒtåýRŸKë#ðwñØ>or>™s|6mVôœÎñõ×ÔXmRÞ¸ +ȯ5˜ãÈE ]·*8óX¬ËÅ Ö¨c‘ƒòc^,2s °#ÀÒdÛhäÃ7/ÑÆm¡ºBi™‘7×ݪVjð_,¿†¢ÊMd~ÿ…â¶=þì¼}ôb{NÍf“`*SƘƒ”U4W)ŽóI¦ª´…ăûT 3ï@þPe.äžCbÆ÷PôCò]ºlÏëÞž”¿£ ‹9sÍèñü`Zþ™¶†ß²qðSlì°ÇF‹l‡îb LÉ^áÓE]¡Ì,ù˘9”‹`ºS&;KØ’-ºm[–"k[ƒÌõ9Õ)%f,|¯ž:Pý`fH$·|»ƒ E÷m¾n&6¸>¿€ÝB¥<[¿Âb¡È• Õ¹ø’ä’ºõ;Nø>¢tÑÉZerXCdk™ÅÅtïñµäËV:ïÅ{¼õ¬„j¤ÄÎ¥Ÿ]ÐWDj…KаøÊÉ"Ž»Rýűn…Êa‚Zý|(©7µª}w˜U±ÀAƒZ!Hªbd*àüˆ²O·PXÊUh†e2™JŠ\tVÏQ;KR $ýÙ>ùƒŽ\=¹·´p¾-`ú0º\ïù¸ìU>ÒŠnÙX{5tÔ~wž»çޒņ<èË< ‡§Ï¨;J8‘gÿ™%çÄbwBÁ7WXƒžIH^Heã¦=Ê#†]¦8ofýr©¨…ªD3)'ö| ó¬â411óÃæAQ’R YSâJ/=ÀÛö/:¯”y ’PЃÎT±èÊ^YË+îïL©ÚL I)=OÇlç™¥Ü QèFH+qAxZ­œ_D+òe˜êŠÛ®ý£„o+¯C-I¨ïš踋Ð~bB,¢¬5›-ž~Rš+:åÒä«ÉYþذ@âu±ù™?™‡|"çï›Zé?BVdgl_^õ†gà ž ÊTw.ÃÎáÁàÇx7 :ß[Gï2d¸ðçÏ`d«ÂO¥wGqðº¾uf0†YÁLŒÌµ쾤¥ÎÐÖ%õNºCÅ6”ú¿͹ãÿpN,ì@Ø X-}.8®Å¤#@>‹ ;  $ÃAl›“Ýn¥Q£¹,v§·i`_«Íò=žÿÝ‹1ëÅ¿‹áâE:hÝ¿S„{mârËrégÏòÒ†„¤züI®~`¿FE¸¥ô^TUõø³ bÓôúD¸zcoýqIE©ý¬è® ì—'¹¹¼¥ÛbwæOÒ»íä7Ì.F´÷ŒýœV»|΀LpS ¦ó¬xØ–ôŒùÛCúCÝMwE;³Áadž­—`ÍL)ãOvÔ„ ë•”V‰{Š n9)$Òj§ŒåΨÓêñm3ÿ ®øŒKGqðOûúðÞsºðÜ Ân¾IЕÁÚ $ý yP÷K)ú™OlíÏ¡ðwt¿˜È€Ï'Š¿àx4ƒ3-¥­¥Aºztõ©d û.P4=S-ÖjR}BMa…†²Ç¡f æó–cWS­íwnFä:éWG=5sVÞq^¤u"ä§9´¹÷á“Ôé¦v8‰·×]ŒÓOçS#O#e…Vþ€@X\Ã3ŠñóD ÚÊÂ\dZ ›+Kp% ŸxÙmO;@6R6ê:n‚‡ ,7¥ŒgI¶ÃBË Z¡U˜ˆ½ (¼á.ƒýk=ÓôôâBY`eÃXö0lÖÊhemR™Ty—4%9MKqîaÉrͦágÓkõNÑd]Ðo{qÌÈ:âOvŸ,¡º!”F/nvš0ÒÕð5ûç™ó/2é<îéÈ'KÃat+÷ØA9'³ës–w€º7²_ç£O ì˜@/ø:ªZ&ÎØ/4jó”(b© j°½ÝÐ9?Fb©.êR°Ü~ÐL:;¸XBrðÍrg’ÔìXèôˆ¬› wVìL\cMJ·o\ûeÝÆôŒéWá ØñíÞ¹I@â—‘T#®ñ:AöoI¿úIÄ­z¥ýÂâÈÆœ”wo›=û‹"¤ÉRUŠ$ÆëT½%š‰`!´Ã)LÈ4• ZÏÌðö.ôågî+KœLlIž™ÿ|gñÅ4a×bL!ùi– ÏúUÔéßEQ…±;–´;<Â"ÍÁº7.h\4SƒÎM=öGçøò¡×À—߬‡v‹œÌ·Þ{½¥DoóÈÑSËëµÍ%~üÝÏ rŘËùE>ŒKôIÔð£CóÉ÷ÐEtá“!ùл)Dè'·¯Hˆ÷ØÜ¦»ú%g5ä哹73"zëÚ ”ÍÈþnÂRU·:ñù£v9ŽçÀŸ.„ñÍHÇ%ѰYãGÎr7áÒùÒÈ—ôÂ]Qw‹³ —k™W±ßäŽ÷ˆÌB%»¬¶¸ˆøÈ¸ÂØŽeØ~Wz¯ìfXOA Ò{j˜A9þ—Û/É“BW_ôv;F&ØK{ådhÛølB²4Ì ÛrŒ@xŠQÍÁÚ‚Óð­±&»ûN4_Vèê?Ú€ª.Ô±FôªœSuç â¹;µ|­­<ÎÕ<Žòbf­•á ”³I†¹Û­Çi‘èyô‹7‘nÿC8¬ŽóT’ăâ2Šë€6’ï½ûì%ƒîÈ»eo‡“Wðsþ‰¡jÄŸh~°.ZäGÜ‘Qub¸!}HÑ1ë|5=ï…}kÈBÙÒá”d.Ü‹Nû´pI÷¤6ËJdÉ#àô®Ø> ÔÓ‰Ðð« ¸’ä`ŽÉ0‹ìCƒðüq ™ˆµ€Nˆá S ÞÞæý÷=ì,% –ÑÝGïÆ' ÅȈƒ¿)\x5%`ç[ŽÓñÄå«`V%`̼ÞÖ«3Õ˪$où>„Š0òvÍ>YoüžÒtSWYC¿î+PøõòŒ>®®%ÐÂ1ÄÛõt_©0‹@EK¼tXÛÓ#•¿x³yl¨’ú!õ¯‰øhfþ[jD#Ð6[4êšDr‘}HX&7ö>Y/äJí—0#¸#Æl±ád&õaÉ,Ò«"¤Ì°K¢±™¢»nrsÀÜNð³øSprÖ› *}ÖþwÃM¹äY‚ê¬r›'&!–²Ìl¢µÎìÍ£\WPŸÜ:)³;L5È\™±fÙv‚Ëñås^ …âóVxE†Ê© +³ Û;®÷@…V€Ù(l.NM‹T¢7¹R8¸%u¢+Ø›@éE)‹œK‚L:FQÚ¡‡ µø³v3¾ŸÃý|kͰkS‚_öW(ðIšB*?qŒ å ºWõnìÝE.Q—Lî$V<–z¹ñû3QHTF ©]·Ù6kÉ=íõ J`¾;`LÞz~p\úêC•i”†®Õ¾™×¡=y0½á+×Ç™£ Ÿ´±?#bš7›ŠZ[™Þ¸î1›7üO‡tåj¾Àt©Ïãñòç£ÚÇÅ]îiì÷]´P“Xê.ÒðÑ#ÆQ(Ì-G pYAtKa•úðÌÿ ñ”™Ú®?)N2TLåžè ñõ׫ۚ½]Éß`;\,XÐT&±r '™å_~u‹YØ+é+ëG ‚¨ Î)%eæ™”‡ž¶Ý( GŒ‡[`$5x¶ãñ™5ùƒ~žnö9ˆÒ›I²Óó°SóHù´´õU`·¬\8Ä:¡Òcä}“#d°E¼ÛíHR™œ†—,$Z[“'JÌŒ€ÇФ>{G+ëqÜÀðtøÐñ¯¼qàñkÄàù¥ZKØÅ3"Ë/äÄõ§Â‚ßpMÞa7|ÛUÄ&Á‡xÈÑRoÌú‘!”­ð1«¼¹Ú0ó¨Ý\û÷m ÅöS¬(ÇðÅ?l©L çÝñ,é×¥_Å`8¨U¯ºý»ÔÜ ª¥ XSãðý±w½Kª}b¿xÁïL¼ Þ‡®Ñ0²p¿F{Ù#{CØHÜLG; oó™[ÕA‰Êêw$ó¦h?–·Ïu\¬#lb(4Å­Æ™JZV§Ò£#”ʼ*]t<áD\ÉdÌá:¢¹™ eà´YÍqL~<‰ásäsòl£fÄ ¶Å¢Ùbé~ìÆc6ôoŽû¤Øa$dKÕçºí¡˜„;¢OcÝ\Ígä¶G¤ï{†],0^™%Vg4àë[Ÿrz›‰ÚuµôÞ'½T¹ŒÌ‚°síý«”CHkIÂüå‘+È/ä½²L76‰Âœ±»p“pÃÅ6ûÕ•ã[·Irò"Ðs§=x -9mãf@“¦¦cM[Kcbç˜24ú…&lhð¥>ê4¾?¼xðwlj¿šßY õ“¾“éEûŽ4ç™ÚéwV's#¯ij®ºoÛÇP…¥E<üµõ[®x8‘  jƒŠN&¥sG‘’ |‘®2 l]¾j«-UJ•µ+ÕÎ* ªÀG˜ÑL hY¡ÉÅ[<þ2"tK™m¦Q‹½¼íƒ°Xò¾05ôy‘ð8®Ëi£føŒV’ÓzO~Ü…{úm|Õœ°*Ñ.29ý(ßnÖßrPÑ5$.}™”ÊÃ{á=b|mˆ¹œrËX7]ÖÛYùü¬¸šãl6Ô }½L;E¦­¢ÏÄLVËý¦9d& ÀÞ×yGjA‰Ûß+t‘ä¡*¤É—ÂÏÉþN›q™)ó{›Ô7‰K\57›(,À„l£‘u$8EFŽÉ}¼çö<)~½·¿ã¢^ï7^ã­òý‰ü2/+{âwâ1í4Ÿ‹zÛ.EÅç½Ü1Ë#ÃÐbW¶â`ſ٥¼  Çf8)j›¤Wîåv§¶²‚æíhŒIãESÑõá bi"Sù~œåˆ3o’É@ò,“&ÊÅ:/BpË¿ èCÃ=yP@ªÖ‰9íä3yý_'ÜÁQì{Oê{kÊŸkÀDÆðÛ$I÷I# '(Éâ+Ô®LÔŒ“­HŠˆðʰZ%#Ã×ürjòÇ×$Yþ“rcŽ7ÀÖepòÈ©Cë)(!N5"IòŒÆ¢ú玖ÝbÚ(iTIÓ¹™{ô¸ËÕõ¢õkmìz¨aœqÊ›r¹«‹³Pl“9 (Ï.!³7«Ðö‡‚DåWÛ†ŠÒ E7<$KÃÁØH¸h§xs XG€èÜãAǥɒé=Íõ)ýNÍ9:zÁfòqÍæÎ\­{ª½!cÄQù«küfPC7këe㧺 ÿ~÷™Ç‹ªçx½ ô™oe¨Åî«‹XÄ騔8ünÄq“ݳ^üဲ­iz-«“~ 8ËÅ3Ûߣ­×¤­GÐP#²0sŸþ&æ=ïJ„Šõò¸ ìêú®Û8ëg7:?;oˆïr†¶E~ g܃èB/næÌ¨qUÁš,S‡+V^ƒéEóÕI ]‚¯†—·þ×EÃ¥SÿK€œ¢õd‡@˜<ªëÂ{º„®FÕýF?ùRK’=Á–·­•TAª+4G¾ÀžÊº\¦¹Ûåçbx¼dˆiïU¾áï—ùáè‚­Uõ}ÅŒ#¶¯i¸˜¹rôÍóùI†Me=CÉM!¸µZL Ú‹¨’GxX<–†û%‡8QM£É¥±3Žõ(žïE­`Ä×c{°ŒÌÊ>;·s;æ†g<µªa¸ y]mQe¤BmÏІ‡6ÀRôP[³?:gá‘ãg€QùæHç±téQƒÛ¢w•>,i'ø$ð½e ó°Ù±øŸšƒ›uO5ââsY„Ê\j‹õk:*ÒêWKº†æãg·Se„§²lÒf Æò.Í\ã×J¿û8¿… £äÒwö¸bã*„•̯JérVäõŸ:KÏx–¦yáUdúóéÚ*ÿ‘ºè‚S [þšîÜ´Ä”|m|G,t@v>É)½ëöHú3¢Žaȃ(Ö?üƒÍ)T®±=åðû@s.·K>qâ_ÂÑa¼ž[½`9Ø‚Qñîï´ Ñ-U³¿aнf⦷a;Ó’ÉHBðÃÇY«}+2«$Ž22áÙæ3¡È|Öû„3r§yÍ|d+SòP&㎻Þ@ æwõ!3,b| f±}§¿®ÍÚ¥ÙÕS3 Ñ’Mx-–@ñ+9=†wZ{”¦0ŽG® Cœàðgq"Gìߣ{¤D”ÑïTÿƒ^š“'.Ha¥mŒcÿ‡…=UQð9QBäùÂ]¸ÿ ‡OÂCôO/è:§yáÔç4 \·0J’°S°Ÿ¡4c=ŸBaH°Í¸¾órÀÓ}ÊõóH—Óì[_ÅðÝ«c[róÆHä©©=âNX=µ¦ùly¯ôÍ›KþÕWßPÁCï'b*Ô…—ïÒ¿y}5€þÊa¿[ÍhÑËæ¡ºƒ›öÈZ*#®µ‹{!±fXÚI v)†H ë\ê#™Û,&)Gw²äÚ+]rê¾ÓêëÐv/<‘·.¬úöü¸ñVߪ=çh>ö>£öŠ.ÅÂ(u#o.iÆbBÂ- œ9K"ÇÑ|ÿJ@§ùGÊô丆üîKÙæv‡)&®·Bop’Lܲ‰ÒT8¡¸ ÖWܼ¹Éõ™FŠÜóY»¶À+yzÿ 6%gŸÓéåæ *sÖaÿ9nX7VÖìqK2Šp¡s$$+PÇrôT|Çé|Dû–-ºµ4Nk:)íóÀˆ¶ÜÃ{ðð0â¯ì\ÙYÑ ”î±q÷ÃÔ¯A}ß‹:ü|‡^)Rsò¶äñLom™5֑逾 ^u`.1®O°Lµ¸¾¯ÊÑ“qY©]*®l#S41óç^'HÜ(~K9§?¡¼À¿‰ë,µ*?Ɖ8 >¡ÝØZãE÷ý}Ö$×–³Ù1wd½Ÿÿ»ojñ¨)h?@Ôxü«Z‡p‹ðm»|ÛÇÏò® ûŠÑ¼Ó!àg xÜšŒb/²%ùä¾m¹\×(ÀÀ’ÙOv'Ï®’FO_·à…zl¼ß,Á@˜ß¬åÚô¦»üâÝüoßX^®êpâïc»ACõ!&ø«D® ãŒGgÀbìÐta¯d‹ãT8ì´¿'•Z­ÀÒ°*B½}6=jûÊñÖU`1 “LM™*è»ùÉ@Ù=6HÉQPü/ò9"ËC@b°­aM<¾Ø™*çZ]ݱ/ÏÞp½ôC—©°q`"Aê_ŽC”¿'µ¢N½> A>°lC“6 z(<<{h¤"ÓYi ÷Á=1›×R£õÚ:Ó˜Z0ÉèCKÿWœÏþ‹kÌ3*Îv‚­vqaÏÿ•ij!dÞuÓ¤ÝÝ!yÙ²û+ÁÀûçU¬º¿!àµê¸ÐU žÞ+Qä^ÆŽéýh“÷dÀ ËøRèÄ1ñÖFyQìvë)8B%¸wýê3ÉL0ÙLèG9uôΊX~ÿè‹j½fýÞGº³Yuf°Š!Ù#˜²gf1‡nDPçnÑéú ïòH‰8üÚþH¬P'ŽLú¼¥´NH5IB¿–h¨ˆ6lÁ+,•8oOÍ[tŠv딟nÛb,2ö.ÇF¤û&U¤–iX…†æ¿ýp4Zõ“£ù WÁ®Ì 5Uó„UIß÷F«T«Ÿ«áI"M`žHÛv‰3®»ÉþÕ.°Ü¸OºÑD4ˆƒçPµ¹ Mf(îÈÎCóPO0Qœ]îdÒûÊØŸŽ‰/ƒžiÍÆ¶Å\ç;#‡õ™ü•ÖEVûfËØ1Ê@)ËÈTÙý=>j— à'I”ü=A¥F“ WîÎ9à …‡4ƒÇ€2¸„ί‡\`—¾Ås\¢´,ÇdÃè ÅÂ3@¿½òø=ëgK¦'ˆ‡–®$¬úWÏ;„¦¦g‘MR ‡ö·bÇöðpÕbn¥s‡ë;JoøîaX“áíöü8:¯‚éÛ>¯'³MsoŠò=òRðåkÑ×h¦ãÑøÁ©±HúüöŒ Qö}ÉòG'ÌxÛBþ7£¹˜ÁK3¤ýùÓ#a† ·-‰™šÈŠAUߦ #¬R¾®Ê°SKÒ€–e¿yô³³o)G* ŸÊ¼hJ?¥íÂ¥¹¸úRa`+„`¸7áP\Êa›´Z\Ï“š¹õ—G;fµé¨Ø£7`ì§ûË~ùÊEcŠŽ®'pzR±ç={Ø„ÌßïœOO~V³•¯»e4c@ìÄÀ¦:1B¡Ë‰× 2nÁAè! K{ -Q›R;ÏcÛûv“¡ Àp$2‚/³ŠŽ£³\ºÓê'¿(T½Û¢€ª™çÎp:þ6D„ؼ5ß ®›DÄCëeß´hÐö¢U³›ã|\ŸÌB‰1º€…¶åaS·Zµ 0÷y3ÝÊØß!CØD¥-”~¯;Ö~匄vWḿ+J` +zŠÆEÚû¸´?ƒgõÈíR‰,Á{cßuÊV±å®v¡ÕÃ0”í)ãò¼;+éí^}ÉOSx%”â|Hhý„^ø3,*­«€HdÀò¡}š«‚f ÁQ˜­7‹é2ú-%˜vÝS®-ú¥›:h(ÒMw1¨^åÌžˆ@k\LŽò )Ç¢íÀ¬éuAV7g¬ ìD™õš¯ý÷§¤Ã92;]ÈýÁ›0&£Shà1Ÿ’ÑäÏ]bZ9„žØ ®:OXæTÙ‹tn$n¥@¬âYæ¡Ã-u_½ú¡vV5{GÙŽzJ¡VB¶‹ê`¯é£õ„lëÖ¬–mhûoJó<"¦°Ø5òîß?ÖÄ•ÀW:•Þº¾X(®Ró‘<;üü©xÉÛ”ÒÅ êI±íÖ¾4àä|¶XÈI.¿uWå^*§>…\l9ö»-ÉBPFã>¶´©€U\ò>•‡çÁnnw¾¥pÜÅb«=_q(Ib»´ý>fÙ$gÌxk·d§pÐߣ¤Ó?È ›†6l>aàbè.&ÐÃO8ÿ<3ÔÉÕ°í,Ýò.aÈH@}}ØàƒÅ§ÂÝ»‹Zrjצœ¡hRáïᡊy^+±—v„³‚úxÙK.j½ÓÝõjúôy60hÆì½´;6õ7ÑÕžÉÓaÈNvl}ˆxoT~´¬î~pü‰<¥Ý¶‡°yÆ áU<c:ã°M©ee¸|ý4x%ãü¥4dùíT)c]G¶¸²5’јÔÒvª-òÔD_òLÃjxÕM’ÝWìíƒÐÚzddõÈÿ-Õ ‘ær0òò”A/P÷ E@D`j€slM¢~Ü€Z[Lq­rÈH©êéNb·­ag»Ýr‚ßœd‡‚À†'®Óê¬tžyô#¤¸#àÐ%ïqéö½«×>ÝR#®:¥ž»zyÛü ¦Õ=â]Á8)ưãͶVùbZ´M? šÇ ÂÄ(KœÒB3›¹Éx,­˜ñÉjT4$íýðëŒ7Î Žj›*v‡°‡Ýþ4>L”1Ï®6™«]×Áޏª²¦a«$4*m†3béÇ©˜n߸@Uû~EÚ¹'í½B¼ã›bò`(X»…Æ’• >;™Áù†®ä\F™@ÍU^[tXঃu]Án‚Êê}å Éè[–¦Vâ§(-Öâ­‹G[‰eìÁ ë"T¤uF¤'Vªý•žŸ›îšÔwí¨ÖLÏÇ1Ê(~` šÖâ=Fë]é¹û[g%ÒÍ7Aì’f§34ˆ,8eÑ].›P±¦ï2’ÌUØâë¡©"ü 9´kÞ H…ù"9ˆLˆ7¹ué—¶1Á{3`ÊΦƒw„–ßOGòÂm¼›Ë9$Ì.ómjL欯Ø9TŒ2bðÐ Boâý 9ê3BT)F0·º ˜öˆPPH†¯• ©óݰHüÁî͆³XoP*ÝS©–ó2oC·ÊÓD “t%LJ>}e¦á·ÿˆïò ši¬]p‡8Æ}…æÑõÃCå|R;p»¹°(gí(¹Q‰q=k±ƒDÄôžœÜ±*yXÜôÇÇ_¾“–¬‹£¨Ú#Qt!([¡–kkàéQt&2›ü‹QaýÍóZuâ|y©¦Àò> 1Z¼G‹Ë5îøšª«ç’×&_Ë-EŠDšÉ4ù9:HÂÙÒí5FŽ?Y-ž>QÏuüQò;”Ú|‘ ²È|טê÷Q^ÂrÉúø–QÂK°Î­‚™p{Dù­yí¢ã°1¡ÅŸµ Ö«É0æC÷á›ÝwAB§¡®CÀHxÍ2NÝþ§ùwp¾ds¥úúdúϻРñ_Üfw¡”ßñáÅÊüýûöü׸›Ê8HªÂfÔq·$ðSÜ_žCšzÛ]©¢hvˆ ±ÈÄÂ#ø‰ìÀv.·ú›œþâBôàòÏ ðȱ¨S׌r²Ns,-Ò‰…Ͳ cR¡“Õë<`ä1šl^ =(1©ëê± Íò‡ç_;–Q⊿Ѯ‰Ûó§ÙÂÊ—ƒ2âVþò ÛC…DÇdvÏŠ²ì'ÿP+h÷3‹r±òSù¥ÌJ&vÇ×bL{)¼1¶bhJ}WÀqÃa˳„ÇÉr†Ûá¸øóÆë¬‹…ÅÓcikVHzñfÚaχÄb,!®s³Ìù%ñ”š.QAã·S´ ¶üŸß=‚!‘›‹píH¤ÎÉ?Ÿ¿+ôFã¤J¢ø»ysòÏû¶Ëf`C=Ö(ê±Ò —²›·t~cíH¶ÍwÎ?§ çh³™§¿çñBaMó²ÁVg ®ÓЙxÃ[E‹a¶%ß cZ؉9U´Q¥ì©$ºSæåÒì†DË/å^À`n„'»4jÐ1#IºChQV‡ÕÂØ¬èeãŸ,0žY•óŠ8ª½¤yu<ÿê-»LBLÅG¼•tg©zê-!„[¥‰ÁÆxG¤ÚÈ`› è›ÇÄǾÀÈÑ 5níCU"9ƒ‘®ˆU*´ƒ—ŠpÈö‘%4Š#µ/ó5©Rüðˆ¬E£B/°^þjÙ™mâ?¿÷÷rÞb¬”² üºÊ @8§WëÜ’9fèb(M»yFÈ?­.˜ÀÆò:µh~Žáòäûz:ý`¡ú g›í’ç†íQä¤`â,_¿‰‹Ʊ“¨‚­´”bcߺ),EêŽòæ*B/@ÇŸÄS@ªYÂå.Ü‚ à“À[fï3ÅMðmJM DÏ´¢UG€ö!b[YÞV-bÎ~IXöµžÍ{˜³£ÊÀÃâþa=®<¦"Ùþg»žì¢îøL”ààËÀN^~ÐHÕ ãhë(Î?€ œ·.³l€Gëù4Ï–%jÅã\æž›„ÉoŸÞ( µZ fù8ÿC@Ýn Í~‰^ØÚ©5 ÆAÈGªcLÇ¿ìüƒ!i"B禼<¢'‡Ì§=ß,¶fÇyà“ ¦¿”#IÁ÷ ‰ÈN¥ 31.[H¾ K;T@öÐ7ÉûLæ¬HkîœtèÜ(üI—µËuzÉkÖ$TêJ\¸ÿ]‡Ž¯iÈÞîÆŽ.Ìž[[áÅ{÷º_V…i±ŸvTgœ×ãlææ„RµèÇ;Ì.ÃÝw´ªË!f0qͯã:Z‚½u›ïýÜž¶ŒÃp‚EÞÑ_ºÛƒÈ#Áí¨"m¡Åº}ÂÓRƒºé^„*àc ê¤)Áiœ«Ÿi> ä»ÃÖ¿Œóú˜B鯥ð'8úÍÀ7(LÈ£„Ç!Á綸TcÍð)^G»wz'Ç;‡ù3þtkÏ0”(ðL)x'S?¡…ÛU5T‡êVª 5²‹—ŸìEcƒù¾a6ÿ+QbÚÐë@WwIöñI¾^noï‹OX;ˆÎ×RÈ,”€¥ikЫˆ†\Z”¶Ú^‰ç sò7DÁõ Pu’­ü‡îµ<¡Îˆ72•¹-1×j‘‘BÔø`c—0;/PëW…R W£ðÆvü¹ƒI¸áƒ´C‚’RF/u[t ¡} ¯B XžjÕkÉCª÷a²4€‘*áV@ÑhÂÉ)â\TXµ”¦–S.Aåb¸*(^ºÊ&eˆQKÈYkJÃS¸Y&“cÑgR)>æÉ¯àPé\jþúèš CÄëôÿXÒ«ídWkÍ—8N2Ñ<ä{á¢ñã¢8£´ºÜkâl Op%@9ðœj‹ë_Ó\¼«Âô¾]òÆûb)Y7¶o¡ Tónh«“v\z6°ìÒê&lØM³}ÀTôލUN4VàrŸÜ×§pTÄhöòö íGŒ÷¿Åˆ7:œ ¯ ȪÅR5У³'|’§J)×Ê\—<Œ‚ À©‰<àgO•…ù_›M0²Fg§²Q±úÔÃj›Û ZÈ"Ó-^Db„# %À®å¦×¨i×íý˜äí÷: ’I±ªVlè ~½âJu D¯s¸1cÁ®íá”sÛ õžù¡GÈ9,koMâ¡S;ÑÞ1Â'‰• KñèkCÕ›k_‡¼}‡WÑ¢s:K0œ$éU4¶£˜ŽLø04/ŒÖº}±œ®Ã¾Új¸ãÑ âÌB< ß~a<ÌÚÝ‹iY"]Ö]»Vr¦!KíVJ ¥ÔÈÓR{$ eVJ˺ò\ŠW:sñè-ŽI¡¿/U …ÙŸÅö¤rŲN"[¸ÓŠ`$gCöc:MÍý~Ž\ ülIä‚*y©M;Ð]‰QËh[ÏIF#T²³m8ìi<å¼ —Ó·ïªh¯:Dô˶__h|wwÆÎÐñ¶²žÔž¡¹ñl‹–i)5"O½QÍx5h2¼øIþÛ¡K~²×[åHûl›IÙ”í5w!ÞLo±òLã=x?*óÍ~íŽf‹C¯‚Q£P÷D\F²ŒÂq‹7A‘&±9‹rŽc\ÑXP·~½œûð \l¾Ù”¾ÂÔb~ø\KŽÁšVÍ|4¸þœm+³vºH;9´éEÕx4ú›\œœÁ›¶Q¸±š6f_¢§·ËÿË þÿ7øÿ„9hêâæhoêbÿ³ª endstream endobj 50 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[-163 -250 1146 969] /FontName/EKSYQC+CMTI10 /ItalicAngle -14.04 /StemV 68 /FontFile 49 0 R /Flags 68 >> endobj 49 0 obj << /Filter[/FlateDecode] /Length1 728 /Length2 12344 /Length3 533 /Length 12907 >> stream xÚí¶S”fO·æ›6+]©7mÛV¥mç›¶mÛ™•¶m»ÒV¥mÛèÿþöÞÝ£¿î›3ÎÝgźˆ9ç³fü≸XdD ÊtB&vF@q;[g:&z&n€ˆ¬Š#€‰ž‘QŽŒLÄhèlag+jè ä0qq1ÄFÿLþy¹Ùع™ØáàÈ"vöŽfæÎJªÿPq„l€ŽƆ¶YCgs Í?MŒ ­ÊvÆ@gz@ÈÚ ôŸ8”€N@GW  =ÀÄÂØ`4³°…cø,)[S;ǦM\ìÿ»ä ttú‡ @ù/R*À?œ&v¶Ö )ƒœÝ?ëÿ¡ù öáú÷æâ.ÖÖr†6ÿÑþ_fýuC kÿRØÙØ»8²v&@GÛ—ªÿNhbábóïU)gCk c![3k €Ž‰•ž‘õ?óNâî@ gcs€©¡µð_y ­É¿“üãß¿8Ĥ•5Ehþëtÿ³ª`haë¬âa0þ/ù¿b¦ÿÿã’£…;@›ñ›™þþ3þ{¦ûo«‰ÙÛ™XØš” mM Mþgâÿ¤¶s÷¢cbgÐ1³ýsݘXÙ\ì\>ÿ»RÕÖÂÁ(% `cddädæüWÖØÅÑhëü¯ ñÏ–ÿ;6µøÇ% Ðh 篬(KyA¹†Éˆ©_IN¸ð=Nžì…4ÉTæo>Ý/‹ ûJ÷À. K'’XÞ‰º•MçŸ[,' +[ y¥oÇ|l¹„J«òfÙÝ·äy0X9ÐÇd CI›€¸åŒy¨Âà<Ç‘DC—ßïñ:+*tBŠ’dúÒ\^¦Gµ2Êò*xæŸ(xàé7*ÎsÇ¥ ,¢þœ|hÕÖ5ÞéŠÕSRwµ‰-2«Îêxð:BöpñŸ¼4n,‰³#”ßöÿ¹Là:~ðßàv­u¬Î s‚ß®ù’é=¹¯%M„ø´gDM¢×â¥èò©´XËélaÑjÛü†NÅóÓ 0~ƒÊQãÉwƒû-6#üQŸõ­¸4´¢c#Ò_Éy¼fÕÿ憩Ã몳ïLz–¤ ȘåcñUBò‰^ái«òü–½7S|¸¥®8£±q4èË ? ƒá‡&ñé*;8ÑY Ë\Ôq¦í¬F¬‡Ý—xà'k¿Y˜ELËÂ$›ÌŸ­>]4Ô ¡/-ê¥õP»²aÈe›Üåmc¯…è5ãÆ™,@JÃÓ‚iA»ÎÙ]¶‡ñÑ™ R˜o¢Xåªü<9Šìëtú½k'+çÜ€A'—©ýAÔ›·Ä´<ÄþîSÙ”›ý+7 8NµÊMÜá™øº¸W•5ÅH}ºËù1§E†˜à÷åeWÌ(A°êUl ‘G3L ºÝ³ü>`@àTAŽÞ÷}·ÍÉ4hþ©•Õ$&ÿwä•!™#5¬R™­]¼X4¡Ô)+Ñbçö]²ž*/ð² ¯[ò oá¼éSÎ /²ágÅn€n:ÏŽ–דm˜°ž{êx8÷‰“Áb —Ã÷TÐ/¼ Ô°ÙŽ+Ø,Oý^»oÐm ›6‚`Ìqž[ÇdŠâbjÔ)±üó‰§ ¬Õ$ëCù:‰ˆí,ӖչȄôX¿ÒâÕõ lÓt­Áÿk¡¦Û™@àæ™ª†‚€SLî/òI¤}ÿ:Cº†^ŽŒT;Qb}­«Æ< IØ…»B,¡´Õé-–ZÀq¨ Õ/‚ «6NhÀa?ÕTÈ'“ï,“Œpì¾'žLµ“ü¸ŠLILAoáI#÷‡~XÖ,Nj©ÍEKÜË[¾¡ùw›²y’V<º¾° ]µòoíßiÎ2`~yÂÞs¨ž{⊂Ì÷ïO_™R6–4£½­ö‚ó¶"â°_ýß|þm¦lmI 4ÞÞj‡.|$ ×:Ü×y¿©ž%àº7~_| É$«)ægF~|[§wúZz€¼úŸ>Gª»Ò¾«Gùÿf^÷Ê´tg&¦TÍ+uŠyeó[øÂhKÄî>Üp ¦ŽYOcc¯ pýUó5KRzS‹Ü½²ôó¸Ddf'ŠÍy˜hâgnìú‹tká劉…˜r3è½µ†°²²%j#‡íëðSZ¤æ#Ëü…¼ZBA÷ìœQ2»ºï‘®ûð=ô&æÓ®j5!îkî¡x¶™? ?;,¼”C¶úì\ƒsÿ(ü04Ì_ôïha–s–›*‹ntú-ªÒ?ý¬ŸP˜ýªÔtÞð’ÝöP¥j¿ØæÊ—\QMF„3¨Xy.šÀFë}©äïG„‰²kö…ðnÝm1K·s²³÷œÁ( ÛùµQ”Ä%öî¦ÄðSö®ØÄãS.ßÙÕa‡Y,¾cÞÕxƒ¹ú0áB=_H¹‡Cmy_e&¹ÿoRyÏŽ‰µÅú%q¼¾ï›Ó+nÞl×EŠ2ÆÕ›—ÂBï>Tn¨H¸R6 ð¼­Ð˜Ž%2dž¦÷÷âžåËãéö¢ÉØ é»fÁãlô‘À58HJ “²2P€E\ƒUÜþ©X)f#‘á²VÛÔ ºñwô½Ö5sl<<µáš2æáÂ(á³p!•ÆÁïÖÆkÿ;tL·Éøâ«Gã) 9ˆ‹éÓ#øÛ—CìK>D÷EmªÚñ*ņ~MJë¢l‚*1>¢Ì¤`Nh§‚î ‡EÏm“1'YÙ‹pq*Π£ŠNâV°¼qž'Ÿz†J‰Þ0c<_ž´\GD+ˆz"0ä gåÉ36±¨Q1Ü‚K¨IÆÀ2hÖFš9š9Ì ¦Õ‚ºSsu¯8žQp'Öz$í­óЃ ”Nµ8÷ªñ øÝÈ· a¨h{í´)Hp´ ‰A✟ëÑ Ûtï×´‹Ø¥~›¡äT‡™Ÿ«]ÖÂ:U™aÄ{"ý|¹2õªa[=R3ìã9)Í0~Ñ,$ëÖ¸nÕÈ[lÅn$XPM)¡Jú,Ñ­¿$T’nnKö”‰ÂÅEݬ#q Üo¢ ˆùVt&,~àŸYª@8Eç2ALZüiCó/&«bXkCþ(³ÛgÆ|ÃßÝ9:û1ÞÇ °0.а¾ª]xè²XjlšO<ôH3ŸwÅ¿…ߣЯ‘C \&üÌïï4÷{ç¼û˜€Çþ8±RÀpÇr„ KÐ{óU UöŽRÜú}Ó=Vž|\Š”éÇ µÌì¬p!¸1ð»í¨22æ |ær¡ÈiLØQ\$$XèDSh#'ù oBÆÏ£Êº!8—¼c£ 1•Ùßå«e}ÿ·§ý²Êsï‚8,È$ã-[ïí§´ˆ‰×¼Ì¤49åìÏ®ÊV*ÁzØ‚òæX²‘ªH‰¶À=²’ë¥ä¨â IW££ß‚¼SFµÒËkÈòâÛ9A²žk9 ìÕ°º¹¹V¥®ØIïKØðöϸö%ÃZ¹þòjKYïº&åô‡<´´’Ç<´½®½£!ñ7³·æ’c—¼šHlY2°žUùüµO_-†Ô"t㥈*‹ÁZ a-8¯„ªÇ¸èCùÌ(Иg´W¨Ê–£^_÷š<¢_ÊÕ/œÚÆÛPMõ‡>õ¬?a” ='<éEjyìõ—Õu³R¬èp"2„_§ÔÞ IÍIöjZÌ …'ϲX~Vgìˆ^>‚q›9Ï{o`lˆðÉ –€L#ôsùœ*ÅÚýê]ˆ@xmÈhÜV3dDõô"*+EeV3™†òÑlýÐrÄKä7<¦cL‹ÐÝüú] W‘œw<2s~¨+MÍšdÁÒÅåÊdzzŽW×ß¿7¼·HMi4a£ŒšÉF2S›ýè«úL„oN^W}UÆîfw}„¾dÀ{Ó#fR¾–H9xļAîÝÛŽÆh%¿¸Á}Õà0õ:«m\þ‹ öÉ™"”˜¢æ9ÝÇÖ¾iø´rá´tÀÝšes3s0—<ù;‘Ý2wD~ïí>J·Ò§’CåEЉPwÌš^KPorŸ5žù)_ŸöÀÊ?[þ³ÉLËä+ÿ5ÆÓå3Û|#Ÿ’T{T$Þ¾HÑQ­ãÖT¹äà Fí¨þþ…­kH‡g??(ÔAOcËÀ3°ÚÐvÞN˜.y’ kw“½¬¿Eðô›)Vù”뽇Ů`nzü|ö·ïb—¶FM²Qì¦Fiþ¡#ù ŽÓ:°"=ã÷Øü{E;yH:ÊeB99JO­äM¥h/±ªÄQzbˆÎ;­„ºÑhvÝ×½T’wͲ:zÄk8IR$¶¸þ¶{•? êÇr…Ü—)$,ÜB Lä<ÊHK0J¸<´ºþ(þúàËÍŠÞ9_¢Ý0>ß ýÃ.f€Þ®Ø`nÁòg€ÕX8#»%µL=w—Ws!ü£*:t® û†Â`õ·ÕÔ%W¦ñžÉÅÜáTQ®‹T5 d楌ÜüUú†[¹bŸÑÞ|6’·ìÈ-î‰9Voî#…ÀQ«“²áip÷ÁÄ(UwXdþZoÖš“ÊdU¸ö´‡_h¯É£Æl1W¢Ÿ ˜|ÙNIƒÛËÊ !ÍÀ‡+AFLÅPëeë¢Æâá)Âe¡…°•°õ‘¹Z¦muV ÏÄYõ»ØiO)äkp:´h‹±í“ø3Ï‚«:æ?#Éf¥$XC[r“.ôW¸ûŠ8HœK#¡X&„…6æ¢ZTà%C1Ša””_7‹‰Fø˜˜SÇ(ŸùàAÕœzWPÃû,“Ë×ù"*𪒼ᆛ-hæØ´„èx‰÷ä›’0µÓ2v¦í$A‡®ngùUy H‹¢ÓðP)œ÷0W–…†F¢†]Cïß-,…A!ʼnë¡6%–=ЛˆøÇæ‘n`}ø—'Œ¿Ch(ϘES¢ÄÆš{ø°ý<ZfÐ^çx/°jöݺtû~Œ¹P8‚L }0²õf·ÒV‹ð/2Næ”+y+¢? ˜ó9YEqQ£i¥N¦</²ôM e#µRå•Î…[xõ­@7:3ôI§CG\"1%{ìYtµåÎíHɇ«úÌ©“àa0ü7¡ÄdßÍ<]6Õ(A&íœ.™! ë÷'²ƒà|`ì\ö¥ä, ,tÚ¦*dBiæ¿kzîì×5«¹XC{:Nkò&AcŒ¾î+UR"ºDÐ9Õ˜F@ æìš Í2ƒ Â÷ì˜9°–wU5_$0¯¬ƒÊëú¸‰È}ÎH—˜Ñ’Dù¼Zý—àø ‚ö{G”lî´m~nRŒ4æ0šªý¢Ç™«)Зÿê™<ô_ŠþSŽøÓ~-?èet)S`n¡]K箎¸µIàdþþ7ûã'ôt,¢òW{ËìM¸•²%”Ùýœ?ý§›%SÊ Ê+Fh€VÎy %”ˆ¿xäÊk¢‡‘<$Ä,Á¶Ûû,á`ÍÑhù3ToŽÿ¹ÇCO¡oÑóAtÈSgÖ M?~ö±`·d.ðÁuòjn,ÖçEÚM©‚i0ºKgÉQÝ‰ÕÆ!É0È‚¥$¥:<8~œÙJ¹ƒåÝ1m€ŠºéD°Fû#|2%Ì;b:oBuq9Äògw¼õ7Xô˜¬ Â#celv•GÏ´^þ‹·ñâ%ô}èMôÅÆ•£=÷±Ú½¸–¿£ÃP|Ý]ÍM õ–ê8 µ§(0eѪ õõZRDâ{®º¦ ±¦´)ó—ZÉâáXÁ]/‰8|FŠ/FýG‘šºTù›ÝfRÐ[!a‹ÜUÇÜ(Æ™Þâ¡üJ%•™šÁè·Ó–A@DŠBx<Íšçº+ÜXJ3o…—£Yžt¥åu=gïûÙCþO"@j‰ãÕGèd­³˜ìÙ¸Ìëx]‰ç (l~½A•/Ä”ì±)wäÙ‰lév=LG<¦ûiÌɦžû T­f«ƒÑÇL š¼Ï¹AÍm -ŽwÎLýK·!YŠ7méµÎŽV 5¾È ÷—É÷xÛkYÐV+dèi|µr ™·ž¡¾o†± 4‰TOéÏHòüŽy¾§gÕOáKD•€…7Š?¹ˆú>-¶½P.ñеykîibíîS%™DTˆ–»Jk?-&7™É¿o«%Gÿ”î̱ʱï uÕ‚í‹Ö§K'xTÃBʸ•—QÝp ä›CÙŠY<¿0VÉÿñ#CÂÁ`TJtÇ“ºŒiV$ZÝ=æ«+“#Í~†ì-–±¬Ì÷($Ë’Ù 5tBËüFœ'T£QD‚ÁœlÞD6Í·SưãO XG`‚ap¨bu…2‘ä¼%H,ÜsÙ²³"C²ÎW9hÿ“?Î=þ‡Oü…¼ðB‘ŽºŽÿÁB$¶ÈÞi&_X±+]ûèà½RN›Kìè%§—¶¥ 6H™,•°Îžš0z @õ‡j²ïyºœÎ•¢›ùóEƒQOxáø×™¡NÐ&u6rÏÃ8çj0­¦T7ÃûúLLMÜî U1õ$*¡ †('œ 1ô1Ü8,±‘çåY/J ÃêŠ, ã½ô5[aßåŸXldŸ·ËŒ¦O•2ûìdÙ5+B[×–£fÙ8’¬:¤y›Œ]¹œt+R®ó‚°§§ÀB¾nÅ,ŠUýü²¡£+ji°ÃÃ÷z884-»U¤*÷‘vÙʽƉì3(q‹Çk,;Ó”çâÛ%ÄïÜ%z‡Ó™Í,FãÞNHôÞÀ°šü[#Ô®&—.D"$ýöåƒ ~òâVgÚ ¤e™BŠE,Ö¿§Ñ²Aõ×-Ú®L*²Ë"-¸ÆôG¯™žBû‚¹ƒÂÉQGª[N‚XÖA½Ý<“>ÆÝEõ,ž × ×©Yc–‘„°‚T¹/IJ‡ÚHç#£Âä©=(S þw@[pê*œh'TÑKiìûí¯ÃÞ‘ •èÝ‹gìBÆnø¬óžJiKfKžÅZQà]d ÷ˆ.)Hó>O£™›¾ãä?¾ÿ¸Èª‰˜ýJ;)ù¨«Oœj¸‡ÄØDRÊqÜ2dA[¨‚ãM¸¿ïVÄÑÆïíLQš=”ói JǤ¥•ó“S%Ÿ@É£øÝúŒÖÕåx‰}Åaú[;Gl-¾@UÝKZ•ØI’“fÐ;i¡eùÖð zôÙZ±T¶¨]h%yf×GsÔBú7è*Ð@èÌx²lw&ÅÇBÔ]Óº‹Iÿ·y5º¦Sp*øƒC†ï“‘£gÕÕƒ‹7«Ë`Ü•~³2=Ú¬¸vƒú鸎޿9ýP[AÒº3KÇøSUÖ}nôÇeétG"ÃÌF;ÆR¢6˜!ÁóUɺ_Žð]N¸âý½¿‡«’ˆ~0áD&¿ßeX2躒ìÁõ¤}µq½£’›zè¿gˆØŽ®õ&aÅæök¹©²â!‰´¬6Èï?qô¶¼œÒgHÏ*Ö_ÖPÿ¨‹þ •.ô›¾_H)›ÿkA³K5j•?óÌ’å螤[ÃÞ~n…ÈÀq²ØE¸©Å£àFäõt_Ä:PXÎD"J…–‰ˆï&HÙY-1Õ±v\h©IÉ…é%[ËSŠœuÒoýÌ%D”ßU‡kŸõT dºÙöA£r%Œu7 !.¬*Ì—ˆ«—#á„*`ëd§RÛ'ÑõG«®Vf«Q¥Àx-"Ü­¢C*t"Û„Ëòi|1Ó¥((l×üï&ŽD õê•;o%²­›ïbÈ&«X EM x¦>æ¾%h–¥É€mÉtÌ%õªFm®–d|U&Z£Ûë [[hmÏÈy~‡¾knˆl1¸9æµíyÎØÄ0Eƒù ­ 4:κ+›¥ §±sÐvªY= –Ò{㤀q§Ù~8cá¸ä^™$‡ øüøüz,lAÁ \¬êeºjÖ’¨’#ì÷ÌñŽ5\ÝÉ’É=Ç¥‡DPmBdªÛ \†ùÔ 3Îâo—­dp|×^xT}”˦=bGrðüDÑËoA$ [ò»"I,ZwÉ^üôc9eö·g@«sÙÍÓ;¤–Y¥ÑHµÿù›ä„­{Ò ¡uuŸÉL²:"¼£¿¼ŽöÐ ¾IþI‚)E5‘°7^jz„QÀÔ 7")ˆð‚×WùBQ^õIÎ`rdÚ®p¿}!·Èazt¿Ò÷S;-ÍÅ"eådüùX ™DAªm,èjºR¹µK/%-f›1%Îôw€—<®¸ð5ƒf W\'¸ZìëÉru„Þiã%\oÛþBº‰ ŽuCcj·ÉNO #!€‚öÃèæ— ePm®Ši£HTrM}9ÓiKl÷Ò{»ÀHÊ-à¬:0&Zg2¶çç›_EcN[$2ýLìÛLC5•.—Û½ì`Áû:+h&1p€TÆa(?53þPvŠY‚MßK†‰„G[òg\íÚ- ¿ã¿n}Öð·Á=ÍdapºÓ|‘÷W]¿¼ ËôÀÞ’8N’:8ó–&(êßP.ExÄwt'|¥œ6¯ÚÂ*ÆóÝ\Tß¶-/}*õ~|šÒx:H3 ý¡SÉm2î»_UøÐýWé6 ×W9v®ãiSžHU,³Å7BÀO#tvɉ ²J`ü0bM¯5ÿu €û‚p½Ñ °åh8P’ci>6ciCÖsr>EÜ&7[Ó=¬övlÉhèO®Ê"ºjœó/¢¹4‡¸duÙ…*÷­ÓñDRA>£Žš˜-ŒËÆ¥Ó÷n6µƒ,))Ó±K0ÁpLy/9ÐÉùBˆðבÁŒFnúë/A¸fäH Kòˆ$]%íÉkÙ}òAæ§2/¡ñ—úæè½çÉrä„§)èI‹ÖÅÍî²Æí´ÚJ/ÁÇòKËÐè9ë\;½F÷N“Â(0ÜF!“Ä’þYkƽ >y‰Ÿ®ÃˆŒÊî £ é c {ù7ß\4E=øî5»z tü5Hî ·ñ«Õgyµ³ÕUP™ßÔúç§€ÞRlHS­Kvµ^ü^µŸm˜¯QÄÝ/m»¿ø¹Ý@2÷ò_4¦95˜i«¯ôíëà€%é”,¦®ËFÛ°uïâmÍo& ‚÷cšºpM…w•¢úæ ´Eá}~9ìX..ò£»Çë;+VK¡+åν!‚¬ù ¸ð¿•«ÉIǪhI,5»ßŸy„ê’R(%¯GË:— šôjÛC¨–Â^{™²æÝ4U‡E\,ö´¸êþÝ™öesÄ¡wÄ)dD TÓÊÙL³ˆõã$7ã/ÏœˆT…^% é´õË–' ÓTJ3à ^¾Mïï4ú`&…ŒG#Д±­éRˆuzÚÞ;oìÇMé•σ— :ð{rµyŒPÝk õšGy|ÎÚ-˜k-¦˜2¡£Á†NÂxIcp…±ßlïÏvHsŠ{ÛÍåD hgì/]î%¼È£L[²Î¶ŒI®/#Çz 'Uè‘ï;´Äµ$=”Ì[Yò[qâ§sÇ,jU—Æ–ü½¬h6Ž+Cp(:lþ(¨“U“$‚áXwŸÙ¥8¨ö£)udcß~Êææ¿ù¬’Êg.´á*]E³%­Œ7‡% fíBîc‹/:r2Ù–öõ¬!´<¢9 5aºYÕ‡Ç6‹¨HÜb ¸.ÿ’Û†ðÇZ%^-y›_¹¼#zQ‚ºÅÁ#g­}Ž™E!í5¹öýì‚Üî–¢ék~ë© ÷æDÎÓFg‚Lÿ³M˜›=Ë3¦j.ÕD},/óu!yǦ¾oÕç2À –•RB0žÜØv<Šìz¿‡¾ð‚Hpšq(([.î-OÝ9fcdÍ*p÷\“ußD ÔaH— UCé‡Ã§‹)áø…Í¸ªŽ‡™Š}>|IÑ0ýlHÆ9åEE Ê7ÔªŸ˜VLÛE9uÄå!͉ðÑ ŸÐ F®„æÂ¸ÒK—i£éú5¾ºÜùĹåç ξ–ß 2æ¼æƒûùvyX#ýZHn]¨ía–p«Å5b¤¢)«oÌ>$þɳ!:7xm˜Ìýäóïî’„‰su¤›ÝîR£5Õõ O§óê¿¶0oL/mI¤Þ»"Ð!&Vl8ºÌ>ÆèB.WV§i7õè?¥4‡ËÞö©Õ‚Žü¢œEÕàÞ.Ü&|X+Ò–UÒœ›êú™b.q™|ŽñX… pÈ0粃EǼÊÝÖ“†ÂXêüÜÉ-о(UN¹ÂØcóçåuþMùɆ ŒÏÜŽRjú(™W}q±èi ÍŠ¯º»³u÷p hßAM^:xÙ°2ÃôØ ëæAó߯ª V3þ#¦y-4XÖÞag;¢òè#Ú«ú,è&:˜L7ß[é‰Ä>Ɖո„(Ÿ2@·t®·8µÆ?KÝŠ4ø7Û%É“(‘åÛ¶°eÞð½Ù”‘Ì?ü‰-Ý”¡8›òßátdò)¯+³‰Ä"'Œ» eXdYn”!I0Q¶öŽ®EQd„K0*lwD¢7òï#1dWðõ¥ˆ/{›Uî÷Ä;Ôp$iî/¥ÄÉÉ÷**Ÿ±TÁ®nß@½„f ¸«âMX éBˆÊJ2ºZo@L¨ ó÷gžù£À .®º7 Ý>~ŒmFùí9>(ˆoC>C-x0¼9ÈñT–áàû4êØ`ìŠgÊn}‰þèEÅ z˜ëQ¹®¤qfò˜ÁÛÅ{»!€(ø„èÖ èIŸ:»dZM˜<ùCÈÑhJ3¥ <:GådäÐVµY f"MS¿þþòÑZ“4—µÃËK¥Có<²©bƒ-EÃÖtú"p>¢MÜï³dûñ= N/”Ã6Êb|÷¾‰ô:ìñ@Ú©‚t¢ü·{cm„¿x\‚j¹ÍFœ{y±4êd{BBvŠhku¤òC£Ü1¬‚n2PÔö…´ÂBb†Ì* ؾüžS‚¡®¿KÒ°ÔR–ü¼Âoeʧtˆú:ï²ö Þøðy³ÿÉ7×1Ö(å« 6K­jÐÞTƒ5~“Íõ²ÒT.šßD ¦·Q¬±$W–Ûh.¸’¡®´HËet ö£`D« a¦¸ü³§;^{İý´TuÙk’÷…”5Ä j8‡¹s„n;#Ea\'&ÄŠmC š¹Ù7þ)ITR¿@„]"è/õ»Ó1ðÑmbìL”àÎ=w+™‘’Êü¥*¶Ï ²0;´1ÍìÏZ [Ês¥žB2¥ã Ÿ©(í…—o¡frê½à$ÁDMÓ…÷šVúÏQΜ»o¤utñM¢ Sí—zøÎ4Ôy™vU9´ÀE7¡ÔR‹¿Úþ…;±’õõ( ¹$ö±×T|kzi!‹j·×ê•&’h\îoÈ&ã1x-ìÇO½@$À`i¤ ÷ÁÇÛÔu×6‹ÌøëÃЩYø÷–œ‰ègÎKrßÖìE|Hçùweßhé »3çOºãÿìù–!Úû¾Ò#¤3˜ÎÖß4f #vØÂy QU¥Þ|py)®ÅoUö¤ê&é`áÆNaDZ¾ÕRQjU&@*Ê7“ùœqW=OÎx ÔeÔ`Ë9fllæ–SšbHðǻýþäìZ_¹Öyú/«wBUoœ»ŸL|HÆPéýÐèü9^þ;°@£× ©®Ð¬Ú¡a ë³VèJ݉ÑùT®”Ã(EG]Î"U"³~|¯©©Iº1!*¬ç»à% r ?œ ó†iÌ ïxT'׿Æã×›ñ„ ùŒ)Ãÿ3_iÈï1ý3© .Ow&H´Ê]£xŽgô&­Vþ:éxPó§œuÏly- "œœió 12[.uïé•!Á/¸’e{¤“UÜ<&píg„ÍäLð·9Ë`°{v>myçõ⨥¬\Bfæ´ã)—¶q ~^ñE>©/¦Œo9û²ˆë¨^*hŠL¼>ðÚH¤}a)•9 [ÉšáA®”j¿Rl…Ò hÙ0>‚û"¸ƒ/ AIÐÕvzŸ~&ya–ðll眻”ž@¥·ÌÅ!“ij|a{"Ë÷?òÇÞš3µÞÊI-‚#y9)á|YË­ë<ÕE®·“Z‘ïg6•fŠBÌ,RØâsºc…z#ûœ$¯zº™bIÉ…Æ/Ëø@¤p«äs!ÞNZº.¢¥$Úå\Ü|Êz<ÓÜÈæÃo½&¸‚ÀÎ p²ïL›Ý:„ÓÊ>?ûðOvœ9t)«Ì̽!e¥(äH*e=ŸHôÃÖ¾4ï’'+ý\‰¦;‰RW»³ÅEé»×Üó·ì­7&y¾ßçü‡¾±’•kÃ Ú [¹Tø. HkvÄšY|»°FííÂ…Tya¤ÞRV\ÈaF̶¯®ùPUÑÖ'ã·¨ç ¯¦% °!L‡ð»ÓoýÏl³‘Ø÷ß^¯ÙŒÂ9Àt.ø@‰,ô¤$$¢YqYɯÝ"ºo5¸dzc¼®Ûõ*‹¹‹í³ÆYJ}y–!ž¬™älëYeÝO±Ýl¹Ž•ÕbÏè+¹6Ô$ÃŒ°g1¸‘“›´ôѽêæÏã~ß)Þ¿ŠdKíy3h´LG†wz—ôÌ<œo@̰ c{Êj~ÖâÉk÷’1ʰJ1jÇ£[š˜guõÃû¢³ã1ÎkÈj­Î=ô\ÎÂ,y¿v®}L¤ÈwJÙ ®ŽÍF¿V”í‚K!M^J¥\|‘F6±šÐEÒb…Eaú#H”.Mh’}IìÀ1âÓwT,¥²Í*3ÙŠ–˜%J­ÀšBÍn*4©ø*ÃzQ á&¹ºSfŸÔ¬T+L*±`s›¬±˜-=ØØm^,}øú_U¨Ä¸çojÍ+¶ê¥˜‰Û ÎÇþ ¡#Ÿr9DžyJ³±¢í÷ÊßuŸ† NU(¿6$ݸEÀÛ-Ìžl‡|FÜŒèzÓ_º×ESg½·=9#jm–ncÆaà¨Y¨ó[)Ÿå©Ó³âµí×Õ$=¡.7®‚ÆÚ™é³\þøû@ÃYuôCެY°^ ¦Õ}o•ðŠ'½ü’Œ³bH wµbä9ÅÝ \`õh†™ŽªžŸOÓáÑ{ ö‚Öõ²Q—˜\ÃŒ†VЇÈ;^µcšˆjfƒÙ(bx9¿äT¥lHX(pÅ©Þ1ûcøXÀ³ÍJš¡9R¸b,¦yrã»)f$wKà“À1èÆ_Gœáç¿ÅÍA¬àžìð%ZégÓ{ð>EAαn¼æËÑ®Áüu=·Dˆƒ7)W) çíâkÈ¢39ö®°¶É•;:à?ÍO9òœ(qܪ~cð‚ÊÇœ2¥ÇŸRª.:NuÂÚõïÍýß,Ò’h›ðÚeå22Jý©ñâ ²ê“ìFít»BÄ‘3")dBW¸ãõÀþ”‡‚³_ê=j¶O±ÎîðÜR³_¨ÓÀßoÚ.a5ÖÔhÛhÎnª!BÛè-eÁ wbgÙfÁùÓ|ó(3“=Kyî µGl%±0#¬ˆ_öüjðe‡ÅM¦öä¿2ªBmë]$‡¯A–lhøT}çᆠ,skÍúFŽ ~ÝèÏj4Äëñ§†2‹z‹@˜²¢¯9‘à†¼*+‹<ÕN¢ˆ›Ó5o™ 2?B`oi÷zyö'nÉÀD²sÇx½ù„¶HÁÉj%®>6.ï2 f~EDM †éšh©ðÕÝ*˜Å˜žÏ5:…ík†6›/ÕôM™rBבû­ªòÞ çQÀIü…൙ˆd>¨B´+W5Ùšó;?ËBÁ­ ÿ¨±Û&tSVRÀ*¬•îq þâ&ÿ\ 6ƒd^¼+Ó‘iYÆ>½yl?W@Y×ËÔèÝ'pªžö·Ð§=ÎöÄÃÓ)þ°žî4oº#†Z:[ê˜Ë¬¦ ©¸Dߟ»ˆ!µ‚˜26tõB3‹BJy§ëy[õFÊ`Êþ872B÷¨ÛÌÆÌqÀvˆßÚ`VÔ_7•Ýk|–H©Ž¹ëí©‰¢€% bÖí¸Ó¾§4¡ÑñfüùÀýÿ þ?ÑÀØhèèlgcèh÷?“˜kÄ endstream endobj 74 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[14 -250 1077 750] /FontName/OZCPXF+CMCSC10 /ItalicAngle 0 /StemV 72 /FontFile 73 0 R /Flags 4 >> endobj 73 0 obj << /Filter[/FlateDecode] /Length1 720 /Length2 7421 /Length3 533 /Length 7975 >> stream xÚí’UT\ÑÖ¥‘w‡P¸CáÜÝ=XP8Eá !AÜ=¸‚—`!PHp‡àî{oß¿Gßî—ýÖ£Ïy9k®yæþöÚ›‰N[KìfQts…sñróŠå4äôäxA@^n“ b ‡º¹Ê[Ã!b@^QQ^ Œ—=WÈ+,& $& Š…Å”ss÷ƒAíà@V9¶¸„2.ÔÖÚ¨a w€¸ü ±µvê¹ÙB!p?n PÆÙ¨û_<ºOÌæÆÂâå‚¡¶p  ÄêŠÅó*W;7 ð¿d°—û¿[Þ˜ç_. ë_N6à_J°›«³ ±ÃâÑtû»ä/Ëÿ1Öÿ†ê?ýœ5­]þÿ¯Iý/k¨³ß·¸¹¸{Á!0 †sýO«ä_t0ÔËå?»*pkg¨­Œ«½3ú—õT„úBÀÚP¸­ÐÎÚÙòOâ þOˆ¿“û'–©œ¶±"Ç¿õ_mmk¨+\ßÏý¿‚ÿáÿgÍû?ê¿#‚A}f nˆ÷¯ñïûï/‹ÿXNÁÕÖ uµêÁ­]ÁÖ0ð ÿ+–¬¬›o¯‹Oðï- …AAÿ³ÏÀêáQ‘ ‚@|ÿTm½`0ˆ+üŸ7áïŽÿ]ÛAÿÎñ…Øbef‘B‘-9©9.­.ºgè¾o… ‹Š¾FfAox‹C[ĪJó;¹0k/í—‰qéžZïKR’VÂÃ$¹zs.ü5üG qY¶ÐdPq{#°µ1çÉØGÅ_â Ä®|šïÉ­}|JÆ%”]bRÿè^ Ð~·›,Ùæx²€ñœ{¾7‹˜?ˆ®y®ÔwÄŸÿXƒ=à•+±&Èxá»lœ2G6Šõ3NÖcôOhшö‰I8JƒÀŸyÞ†bÆúšQæ‹Z#OÿB7ªwDº#gUæ!6]âhæÈ#JÔº8šmku¹É*Äš¬ûâ0/LBgNA;‘«JµSšlE¸`\ï;’ì…liÿ¯µIÇZuØNÔ¶`×$¢)³­‚>Jâ@ö,Q8;] Èmà º»\%P$UœøÍúÇ-ôÕ EM“G¬¢À5z?…D6õöÌSÕ†|FPò¶e^“q]ñOvÇwêÀKgCãr¸tÑÅ<(ÍÓ’`~=ÌÖ±г:´W\²Ù;¡±ÝÅqrÄðT‰gy&¡£ôu{²¯ª^ÑrZe]¯ºŸÓ¨-ÚC0¿løŒ:lEÐ'é\§îYQ9ùZšÍÆ)Äæ§jò"=k^¹ŠÛ·/´B5){`õ.K©¢úÁáZNÙƒjÜŠA+Ç'‰S¤aâÎd+ˆ©0óÅÚª ݼX¤y…•|m®^Ÿ4íªIŒ?÷ø Ÿ-‚Ôål©¢v’%Æ‚zê4%½ÕÖÃÖKäZñO´-…Ž¿iš Ox@€g{ÂXÕIÀኂƒfá²]Öº¸’¾¹mr-ÙaZÁ¼1Ò"9°,¾f% šéÛôb(k~Ý]»±aÑOS®Å ô±Š¯B5m9Ü·ï"|S‰ùï#åƒ!ÙÉ,o5sîÌÊí–-¥Pc°¹ý¨EË+–nÅòcIf_‘e‘OJ|#êÞkñÌ E·µ¢°eTìú,-Ìg¹— h‰‰GGAó\HVIIQ_3a½ˆ2ÐlçUÖ´§OÎvï«ÈjŸ˜F£ã…C±ÐM 7µ©Z§•€·3(ES~.?!vow¨6%J‚èë|Ö<8å²fÉ3>D”'Ø£n­uî•fC~I+‘¦å˄ћ¸e‚1DæXM"œ,–Ãùk"“&ñÉ|ç*ªoÏÜ«R§c‚$ùÐVøaGì¥È;|‘¾d†"Wæß&÷C[§IŸÞlÝ%O£ùë4u<ïbÖÛú¥ O…9迊Hc¼øÙï.ÏqœOï,$ÕÓ¶l™ÆÿÆHµ]‡/³Å¯‚œ¤í0oÞ>àVÑ…6ø³¦Ú† 9Î~½îw¼‚J*t™ï¦9#w%¿¸`ó±É½žs1È«jš %r*N€L ¡ñâèFjJÆÈߨ§¤®C‹qò–Ï.wyÔUÑãih®‘7íJy–ÝÉRcM[…’ëM("¨RýCÚü§yR|'²WOÁã¢k/®îtrØ‹º0IÆ1÷…QG÷}¿áã aYu&›l¶ÖPÙ­ii•PoM/á ˆ#ßy20 ŽU_ïX»£9Eµfå æÑœ¼ÆÄ[:ÒBjkuÁd”h¤€ˆ®þbO§~k_†BF_*;w€IE{!¿ÏÓ­™°éÒ ¿Àå*Éü4Z0òîN áIuÃy Z²øï)ÈÝ|ð'­¢õJþo˜·yÖ#ñxý˜Y„º£K‰s—Ø[>ÊùéæÑ̤Äx7ÓDÉô¯‘è^çÐxTøcFÚr† »ÓÊD]Þé1]¡©¹©`<\tÑj`WóI]÷¦yTè”u1òùbÖ>/ÔSSêg-Û*YrIº¢¤”÷D1kPµ^¢”ÛUâF%»Ó†ô• ñ®ÇLu %*TŸ³ú¢ïzQ<ÉØ[×öñdsmZÖbØ¿»}q‚“DH˜£vþnÚPGš~0•hØì1ü$™Â/¤Ëš úæ›Eóê"éòÂYp¿ÀÇŽt¤S’Ìþw×BZ {sp^M'äJæpL|>o¶è®h†ÂEE½Y‘êê磈‡e´J§N8«±,&±éU¹š#¿'ÉFÙÌýØ÷öwdîuŠCäàZµ¦Ñã·¥Ò£®ÑÄ»]U9¦bhSû«¥È7‹Ñ“˵Òó†ŠM{Éx$«\T7'cûJf¿¿Ä;5Y ñѦíÆ_'šøðŒ?·Ý½¤jÕüŒ5€÷Ôù(À­½ë2:m‰·P"̹|êþù`(ŸM{ˆ1¼¼ÔãcÀ‘·I3‡ú¦VsËîXf.^ùÑ*“ÞqöÛ©ªRˇ:uw¯ž“¡Ìâjð«@nT5UÝ5^µY÷ 劯6»M“+YòØÔ6)¤Mß§¿¿ˆ¾JÃ"á¶y%Ýt³]Eh\½]ÂQsåÃä if#ÚýŽªŽ†ïҔɋw£”¶wâébYxn&.&†Ñ Ór^&5à|-J­ð0ùÀ÷º ÎÝ ﺣRŸPëË·+2O"ÓƒcÁKïyë~¶_.\þS±RZÏ{¢^¦—ýÄÝ ,μ³#T&y®Ò§ Eò…!…=“ê c$ò¦;,JeŽ.¿y?7™U±‚ã2:–½ ©6ˆ(G–Ù¯/÷äb!“='ðØ ûŸQ¬§v`cmë‰Þ‚E ünüIÕ®¦_[" &ÇíSõ— ˆ$«^"Å”¥[?îù«ñ¨x>$´˜°`±Œ¶z-®§×ÿAÄ—E³¸68k™ìò}©[ø’É }¼«¾SE¦¥NÞU#Ú>$ìËÉÐP,|¶äѹô*”k_öÀèDJv¢¸¹·žSwâ¼¶7>…¡;ßO¾‡t>VoÍKG,Ø%G!}ÉeuÔ¯óƒ/„Ç“å&Ãß\í{i ÞÚâm(cguÙ-ßý±S~}è‚–’?"ÖùHÄ,šç8-ô»ÙÇ?0zFÚe,Éi“ßyÖGˆ9Ðã*£…ÕÁdšF´6ž4°[ûtæ•Ç|´U®šS˜ÌÑ>þU*ˆp*N,= Ú2½±ó¸9zÍ5;Ž÷ð©õ“µ!Zç|µÁ˜s÷8š` 4j'`;÷¼uß/šxro!Â?‰§´žúO3ÆaäÀ3z¦÷e>ä< ÒWvî0‡¯}¿„†Á;uÊ/åùqî²Çd 0¬OÔø[åÊä Õ¬µZ`Íwk¢íÔ+.ÿ ˜uW#¥u,>ÖEÖ¼ñßéöûSÒ ›È‘ÊÄ‹ù(eï¸J]åŠc¡,×>Þß´ÃòƒÝû7jÝ“ž®ÆÍáïè¢ÇŠê\iHùf<Doñ+Œ©GPCÔ­¼ëf)ç”dn¥Ÿ¹^GD~ë{üºÇÿÆ\$Ö¤Bœ}¼ÝOGDi~2»%ìñŸy7…ŠfÉi†²­%¹Ìø(Êï•&úTНLʧ‚‚!Ñ ‡‹“Õbc)M8Ü‚Õï¯Çˆ6ñ?+}bŠ·‘àò†…¹ƒ_ß"^Žv—kwF•Å}…ÇëÓŒÿ,¶‘è™åz™žvœ¬›¥ÛˆvTf®%2…N^C8ãªòºÈÏÍìth0°íêis‚ ˜ç;Ç´Œµ’¿NYÍhä{ïNXúJP‰ˆ$¥(íñÀŒ™›¯rñùÂühø¨º¬³û^›ÐºFMIß3ŒƒKžÉ ôåTè¥UÇ´Ò\£;‰i³‚:lÒýU”ƒ„˜Ž•¹¢øEê"5‹›… ªå²q÷‚)δí]xhã°*—ìú†òÎãý53ĤÞÉE(¬Þ*>˜ˆAãVœš8ÇÀ· nç¤j‹¾C{!è>ç^„sÅd¼4”ãJX_ÑÉÇLõù r`'Vo_¦#•U¨1Ia~¨É¹X“㹘µÿ v´5¹2µØô©­â¸éŸn M-+Æ¢eÿ>¡x °=ñ½99ûQ;€–,ß8r3èÅôA Cƒ·DÅ$ÜjôA À·:¥§m3xn@Ið0ÿIâl-‡=AÚƒÓ:^nÒê‘bËúh •‘9Œ¶{Ìb®®‹ëu7¯Ó»C#G@ß› —k5Z)¡áøšÙ×±sC8eÅÙ¸wV?jZšÅŽc0>,Çä•W#Bø)†_¥òl 5$äÀt)„TÜn^6Yv “tu »Ö£Ø'ÎI +^•7ÎûQ°þ*}ïá-|1Kö4û~ÛKWoµÌnWxé=L`C $‡¼PÃ=ÝÕ§Q¡UæZv1aF_¡Di ó %þ9ÄòúD!íSþ޳¤xÿÛa‰™—Aµ¡Ø¼àKA±{ì§ø,ˆ"ô1j«™¥[̘J4°ëîÄ CŠpÔ2…¼Ûë:'\AVÀx²U+á­`©¡1n êÁ²ÛÍWötßC…•šh˜B+ÅúéE&e;ˆcˆ^¨9ë.9•Ž.?ZÎIPÍÛ>d£q3_4ú·£FkÈ0þÐ÷}2]õF¬WÔµRí¼S`ïÌ1öŽŒHòM,êÁ‘÷›Úü&3_^Ö½aq@l²žªi§­ßÞ‹X;[ fµÌU¿ û"ŒHR¬hw«0^ðz,ì¡ ‹èÁKá‹G…3á fô¹>×VZ˜0æ”dÃû+8}f¼ˆKSü²¬$³ÜFk͈³¾GçáC<øwÕ´²øå\ÈK1–0P5ª{®b¶2)ó|‚þo> «€&O=uûÌE4ÖÛ)x­„t²³=iÝ{—õy/&“Ë"P‡“ŽÂÉ/QUPtuúŽb×°F†¸”E@ƒ£Ÿ%º·¯ v¨Ý¤˜ƒ„O ùîîW¶#„VV¢ÇsìÛøÌy2¹?ÝG¼¹y ‘§%+Í‚}ÇgL¾íIÌs¯~›yÑn14 E5À..‰%ˆN“¬¤fw]âQþ²«Œ*~Ø>öª(§1ŸY+9°nô&áèèß)Æ^çkÜ™êFžK!gÆM 1YJßSHàÈŸç)ÓlrÛTØ^Ä”:*°…J°´”à$P4ûÌê븟1F9qPþ&&°J’LŸÑ;’=ej†o¹w ¦}zŸ³HõHݪΖ$ÍðÀÙ$÷ñ¥ }”ψÎw~›©²÷ž7Ý7¯Œ¦/Œ-igI~‡oFÛY¬û±Q¼=(òÕ}ý¸Ë_DÈegñ¡¶£ríºÎ™^­C᳂e–(Uè«QþÝšås9ÂD2—%±¼;_6Ì”ªX ‰W˜ÈV–Ü*æ]´?eÚÝÙ9Ò¿äpÒHPó˜pQš1goŒŠbI,=ƒßk²2k@Ç%UÛGNÔæ«ª ¹,0¤(Яáè¹Ë~ZÃ9÷¡r×}ôFܦ•¨ü§+»g!PÜx8*þ^®•GE3þZ•ˆjþÙ‰.9f82àb½ù=Ø÷v4ňeªÌpÛØQ»ÄE¸Ñ“ƒôÖ´§9eXf’áJ}I'hnÝ9Í‘œíêíA[JD9Ò^‹HÛŒÈój![›ÝD6 Yáì~S åqéú4·”‡ ùð"™]Áߟ7¬ðò±·Ú݋ƣjc5G˜òPŽæ²ëÌJð í ²ºŽNgö©É±î^9!á퉨ùy(«PÀeNÛ[ ÝÑÅ•¡>šÜü/ ì.³a¶ f€äg<óÕÁ=ðç6†Áu ŠAΧ3êþ—kõ5â@ "Ôš ?Ö±2•;Ó P‰ˆI’ÍÞ‘²Ü;РeQ˜†Nö# æ+¹ÿ‘õiM†eŸ õ})X³«“:i^¡0ž´vxªõ¦Ö[œ¹e×Ö3g¼éS2#IøcÆÖ£ß+kù ‡ÿ¼w|Óœ¡'¯µ¬R¾÷ß–§µ!±ùxùIÜ3H4Ri£c…¾±Š-‰éKÿL ÿpýËÁ—Ã¥‘æ¼ì}¼E„ýBù¹­Î9“Õæ'¥]¡+;èÿòÁúÿÿOØ:C¬ap7k˜Öþ»³7 endstream endobj 131 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[-32 -250 1048 750] /FontName/HQBVAK+CMMI10 /ItalicAngle -14.04 /StemV 72 /FontFile 130 0 R /Flags 68 >> endobj 130 0 obj << /Filter[/FlateDecode] /Length1 727 /Length2 8309 /Length3 533 /Length 8867 >> stream xÚí’UT\Ѷ¦qÁ n…»»&¸»[ªB‹ÂÝÝÝÝÝ5¸»;Á!Á',sν}GŸÛ/=ú­Gïý²æ?ÿõ¯oϽh)Õ4YÅAöæ`{¨ +'§@RYYž“ðwÍÁJK+é6s±¶‡J™¹€…œ‚‚|W€‹ÀÁ/ÄË-ÄËŠJ ´wðt²¶´r0H2þÃÅ·;YÍ e3+°Ýß  i´»x²â@ã[œ`g°“ĆŠÊÉ Y]æ`Kk(*û?°ä¡öþÉ W‡ÿl¹œÿrþIÊøË ²‡B< °*»ŠýßóÀiþÁþ7\ÿ.ã ¨˜Ùý#þŸÃúo}3;kˆç8ìí\]ÀNe{Ø úïV]ð¿à”Á kW»ïÊ»˜A¬âPKÀÊÉÃÆÁó/ÝÚYÆÚ R³vZ,Ì Îàê`(èßIþÎïŸìrê:âŠÌÿñwÿÕU3³†ºhy:€ÿeÿgÍù_õß)9Y{ 9Ø888ÿÿ¾ÿ¹2þ·Ó¤¡@{5Ô éb™9þ§ðß©$$ì=¼Y¹¹¬\¼o€Ÿ—Ã÷5jC­]ÁòR^~nÞª@W''0ÔåŸ÷áïÿgmaýwH`°ˆÀãT-(±Î±g]ŽŽ.ÇIæô9Ôí¹ Gš‘“á2ØJ•¤Kåá@'å°BLJ¶»½Ë§«)¤Û…ÿÀ!××õòEŒ«%þ:Î_»®0þ¼Ç&6~·ÜÒåí'O5m–qylÕ“?Û,=¨Ø¢_Á£ P¹¿Oü³!y³ˆßUäÕkè®Üˆ^ó:Ã}„I#ƒ§ùÁ¦…¾gmGS±À£VÔáC2zÉãJTï«ô&v6Ö٧ܯéI"P-OEÎ÷z<1Š‚‚owIF¿C$„êÁo•WG2Œ©ÂsjDëVëÙ ¡œ8M®9ÃØn*Ù;–þº##ÚR±&…æú; û$wعš'ÕÈp» èB¬FÓ¤Vn‹9Ÿóþ|©{äiHDCŠÑyò&oì”0•l@›0îÝ‚âBºº›¹¾KSÍg ï |3„ ¤:ýQ ?a#„˜�ÈUÂ_6Ëdµµ ¤[Vm¦! ì®ÄFaÝMQáÇž¯ß^`a"·d•(%áf[ä átˆh´Î¨]{ÍCèÀ¹iŠiuAË)l®ô/7"´?a± n|Žo0Þ˜‚˜ÛB`T4Bò?¸a_(ÛQðú¹‡¾uê]jnPê®Ð4§Þ4{u ݱ)|9pD"°E·k²|þ’ZãB«Çzó}K;ŒÇª€,Ñã­Í"÷8§×MÉ#¼ÔaÐWøéö#ÿèíC4z”ºÖ™…ù¹~åµX±ˆ€˜l0Þþ þ´„¿}þ±!ç³K“¯>‹6böP{²Cc· ~NDt3íÞ‰ Õ+ÍRô8•…nzb®ê‚eR ³ø\¾ØŒÉ>ÍÆC]ùlÁ›F*]Ý÷¡³êÉzqÁß7y¶Gv§] q °ó¾e«Î™8޾§ jû=?Ú·þ¯æ…k–ÏÙ¥/=õ°“dz3d]ш@¨;éa!ލ,TDCŒŠ/ˆ;l…pºàfþ¥ë¨hVêJ²[†®ðÓ¨¼óVltl¾Õ+.'ÑyÉÓ1»«æ¢Û8 Oe0ÿZ?ÿu÷I‚.¶ðLºº +à‘ï ņËÝÉÃùœTÉü³;Y›§Íš eG@ü{sÏa-ýÁŠô{çN°Wºö%·1 9Òq.ˆÔ‚Š£Dð“ºÃ0†YacýJ1Zq¸ÉBœ$FkmÓÖa(ÖOWË[eV®š×òhÚw“Õm\í±w×Ô8ºÖë௉”=mU&=öÅÁ¯X4—‡Š»ra­·ídÅõ¢LöÞ©æÁ÷Y¤¹$zvˆ$gU›YµŸ{osëønXCÉöÓX‘!ø%(¾ªÝ«/«E«\keWH¯fîé†e¢¹ìU¹YƸšNsõØ‹ëê¾ê²`wñG„1Aå‹Y Æ?@; ê@ÙC¶ôàÌþÀ—aXŒ¨&a…=¨íè×Ì—e[ïÒDžÌÕSvøé´5Rªø‚ÔËÓ¥b·‹Mò\Q$GfQàÐËäûzKÍÏÔ! qC$&ñú¨3úÜ÷ÅtPÏ)Ü]dxÂT´Ÿ…Ô©ü2¤”¶Ï±? é µqè?SÂÕâv"!Šy¼;Ø¢Zq$*観´ðÖ+tBŒ²m«‡Pƒªˆ;àwü±$íIj)·õkÑ>ò)«õ«èfªÝbÞ¦¼a˜7æß ã" ² ‰’/¾Fù<ÞXèr¾¿­ùþn1{-žáÇ9íÂÐeˆè«ˆrêäÄ…SöoòW5Ê ÍZ‹àú_MxöÕwIœò’~ 03®bɨ˧}¢éuIøt7átyö„ZM§Å“ü«Qj¹rzrÓ}‘íëÌʼnãL8:uZžbùtÛHp“Í9€n†8þ®å6s˜ûjR㉯H¥äY£é\êç‰ÍÞ áÌÖ¾ÞŸ}¡ó‹¯³£K‚1ð á"ñKä#*6T´1*²wk#§†ËLi³°”}`ý‘´È0Æž#õU¸ø—œ¡Ìî¡´%ò«¢ûx<:Ö8ø–­€üê™ì)¨þbpó"uú4ÚgÏvhWÇ<¤½e· ¯P õ-C(³B›áË"OàÉt7f"²aùн½¦Á%8]³R¾®lõ“ðóø·ÑNªÞÌ/»R Æ\iÌF^¹áQΜ¦z힉ÔjÔѱ !ìyž¿Õ‰]éQi¡æ7”OÊõ‹ª3~é‚TL¨WùqjÄï¯hÁ*.V¦’¡²™8?ý|fÀãqÙã̺Íàp AYWXÅ—ýGC+'•Ò;LÖËE‡À~ .+¥¼‘á=ÔwÕ îžKáO̧—JP—‘’µGÊ¢)¶¦Ÿ3?A-À<Ó¥8Í@|éI63ÜØ7šD~ÙT®g¼*Bf^ÑgÄÛêÖ´Ct )‡†ü†dú_ü ²)ù’G7G¶û€Ÿï+‡¸Þñí!^œ»vp^KDÕWú˜­q{äê”]½Ò\ìKù.”ÒÎõKOŽQEi} T.Ö ó)qj:=¸BÜWê÷«,M’žÙÚÃÈGLï-.ì~Òoå¹;ËL&É%#+Y/ƒ±)[ˆÎ9ÄTm HU4l_§jhÏ{lÊå¸(Fý„®s‚oõJI€ó´hÓPü­:ž¤´]«Xš ÔíK}édBXÁ_I8O ©» ˹².v8>ú¡’¶Ë‹îô\cDP~ä‚áæÀè5Iéñ2޼-Á¢ÊS­ïT°Ñ…i³¹Hß ÿµF¨¶ä`3Q?l úb¸d¸1“ÎODpð£V}>•9¢× žU«`Ø÷æ»8=:ϺoEøF­ÐùgÉ0Iªr_"õšÍp„øPðyTÅ50ì*¸B¡I@Q[ÁuU€¬œ«~‚Ì—·Üj›–PHAvºÜV…Þ¿yéŽÂÁ¹ë5&Üø½Ÿz±± ‰e3=¾3’8>GzhøvO¤®ÝÚȄޡÏkðh…J²_œm¡ úôMÕÚo¹|²÷v‚MM¦LA*§VøîŒ© )®l3R&щ;·9˜²´m (2ˆj˜e{ªÐÅ“ÍÁ,ÇÜŒþ`æã÷Á_"ní¸.6‰jk”pŒ—K‘Zïw¹]…H”Ã(Cν"C‚š¸Áçý}÷\èÄ< >™±}m¨‹ÏAß/[µ 5©ÉåLÛøR·R+¨ŽC—f™Yç¦(¼®>©ZRÝ#Ö»n†-h¡%¾.âD˜ä‡þX’)[Û*ô <NŸœ­¯ªG ,³Ì(ƒŽK•ÙÃ<e,“OˆvÀ’'ªøÆùòAËßäßL>ÛÑõ u[mÜJ‹%[È ¼•l qª÷pÍ:@@üB¢“þ”z(•Iq‡ ’Hì‹ý=É9ñ»^9÷ÂwµVjO‘'ã8./C-5& ³#4 Øs]V•¯þÓ{Iöœ×%ý!ÛËr¹*…I*é¢jp1æh>s•Ÿx:¶±h Qu;EQ9z™îZÌ;ú.ñÊ[?~d_·nà5ÁåP:«ßßü2­Y×ܦ.ò%«;¨¸ç‡óÝ\7°ZŸíeäP2m±°ì$¡\9`ÓݽBÑ‚¬F½îiû,z¸’–úI(bà¾Gqä|ùÄj™ãÛA^fÔ¹[¹l³tkìx @â!Äm2ã&»¦(sÑr¦&0z‘[iyd×Qu{0KZ݅ꪒ·س›ÝÒu½ÅFxÉ'=RÙÉ… ï:nõ&­²7>êÏ?2ز]a×ÞÈ:ÕGTÕˆóZ“æ_þð2äé $¸ÙJa*sÏÚ¶Iry–¥D{·Ýv€Ø{¢&Á›—Ã~IÍIŽìvöÚ _Œm/qýÆ@#kDþ!¹LŸ`¨óh暴g‚ÈR{•#D?WЊC¬-V¤.F&Ön‹‹cXv'¬(h…ÅÛ) Ùa±´¬cæ¦V‚Ö•W` f];™›âªuo!!KjÕ—@å–'£Y奯lÃ0ÿ¸Qö…6L’Ëß&9}©6éÛ°)¿òìŸÂe-óÕ0’ݼUã|M hTîÑÕwÚ€E¯QedÔí vÔê‘ØP§ei¿) ~dvVÃCGz²,¨:¶2Œeš&¥)¨4s*÷F ¨¡upI]ˆ×Ì“ûE­š–ŒzÜw ¹kÉ=IÆ·MÆ(7IØ(xN·|í£5”=X16nûÖC‚ oËó“]¯éwM‘ƒ¦K9ï«eš•VNU¼Ô/:øùþU,ÑïœïÎH&“÷'\´¹¢@v·ÚÍ­‰ªN™´Ž\W 2J—ð*^¥%Es§‡…¢_Ñkî^ÆjSð".‘J!ó¿!Ãmi" ò C ¹ãæîÁÛwV©AÙ RÏ\C@~K3nÔ°xÝÛS3æž0ü‰uã_Õ(]êƒÒJöµ›y[&¿%f¯ØjÕÊ̹ïY•Gi›}j|ûŒ6êÜß±`G+}½RWLë­ªÚczü¯ˆbF–¿ö¸›˜k,î%!¦ðÂE·†! &9µÇ´\bÝÚïó°BJ~È×.~c®ôb È6¹Å|d}4œô­2{høT^Ù†­ÃŸ3T¾| ›Î)i+Ò ÐéÞÀY)€;˜Ú²W޹c¢¹#Çì ]¶¦°Å‚mÉÞ¼¡¿òµò¦¤b,ÊçÞš ¹Ð¥±œèWÙé7áq_@Í*YÒ"AËÛ‚xùªúê÷)où¨àaOdÍ™þ–¬lÔª;mî¦Ñø[1+œæÑþïHéµ…u×äkF8wÝ™SÓ—ˆ°bd<£]Xøç~J=L³ufº9–S+œàEïÉnWòFa E«¬0¤U¢½ßæ'vsïÕÎÊ#û:óÃ(¶^ w³ªOE9§oÞ†°i±ÊѯüõUFïe<”ú—E £ºþÜ&R-»qUcô_…³YãCQèo裲VZæû¾Æ© ;¬ìÌÞS1Är3Ûñä g–Aq8Ç~jL[´¼EÒÈF#k»‚*™¯ú±;†ï­ãµÕ+ÍcU$¦sª¦ 0.èîñpZóø–\¹ãñw¬&E5egOº»_´`¾eãt{ØEGÕr21ÞËAZÆôçKÇ`‡í]ÂÞÍø+Ù$˜2ù¬N¶·Õ}Zr‹ü’ÑFÑe­ù™%®¦0´·zÆøù5ô@;5…üÜýù»§Y-¤ ªs/Ž¥‰ùgÉíÀ†ú×] pµ/«hiZ÷Äm5{dt­+àërö‚^BÕRÇs/£e¾éÜæÏz;/&’%<›£Ò{rëø®vö²e P„qÄO;¦àízw•Á‹ªÏŸ¯æÐx÷ÝVI¬Å0ô,šòø\d)™ÿxVþV^nì€ÕM'Q=êê ®½®+À“Ù"Ù&>Ìf”ô´-è÷…t ]ˆž N} ´W ê  ¼}i:AZîÑ»2­âÅV*ñÕ^í÷Ð)²W¤žß›÷gþñ[š3âµUÎ >.ZK鈒Ôþøªõ‡l™›™ð÷®ø…4ÿ:øyÝB.ü’@W¼Ès„þþ{6ŒÏò-Õ˜_Oå\$i‰ÿáFÛÕ­¦•‘Ãð`=›9•A‹ÌVNµQ»cغ…c|‡î9/¸”:xÓgýiDž“– ŽR¥Í§‚¹oiϾûhª@:¡†ý óáUÀ¾)0ê#_ÒX° {šÎëMvŒÕN0tê!1Kð£úT(Ó;½çoL{ÀècKp7áWŠÅëÙ2ŸÇ8ÜÖ¡JŒ+`Íïûå}7\êТ¥)Ë_®ƒÙеà´8SyÛ™HÕÕ¼‰æ×÷#д:yÿ¶>])áxâ³G4‚ r­ôšB ‘IØÊDí„̧‘ržáž¤ÊiL¡ì›‡Oúegø®³ï’VÊü²XÞ¡¯ƒôfêJ¶ê Éc-g]dÖž›ø™>ól(óSÉËH@De1b{ # ÉÙlD _´þŠípiwc ÑÍe~ݪ¨›ìì@Iû©2mŠÜp9ìÙØ êÚÜ[¢J¼RŒÎ7õ|g N›ñ–fÄ¥ä¿p© ¼y.ÆÕºû¸ÂÜn™{ä²øÎw|Acm-c⬕Lxñ"Érìæ y¼w{ì‚WÀÙÌŸ®…¸÷^Ð’C«1Oóñ­5s¬«Ï¸ V^ Æn|g½;ºxTÛÃh¾Ûú Ob×âÈ"ôÚ™G·\Ç •úžp†°Io‡à*ijö>Ç<=MaÔ¼o-¾"@Þ_ '&”À»è@ÎeÒ•S™šô¾pÇúh{xÎ \Ú\$¤&Ï”–eŒ×Y¡`½éÚ"­—3Ñ·ÄÒçf—%Q"õ?}Ð1Pó“kË~ý`]FñBÑ'µ“š®ƒ˜5á¬"Æh‰tØalòaZ(õÖ¯($½•+›À~g€xJÖµUè ‹86k,VÎK÷‚ÍŸC[(?Ös#ã]MiÖ©e¼¥ôÁªP<1yt%\»c ‘/v¯©—Y,ì,ó3ØÃ¤Lá²úG‹G>;“™LÈÊÈÏ«t[¯_Z¦Z~v§öhr†êïä(>#J#r:Tìéw•–çó±Wy¿àõÞ]ìðP× ~(ϳùÒdTüM‘Ï«üO°ÛànvŒÌ¡Ü»ÒÁÈܸVÌŠñ~GŽÚ$ž\w©-^neuíÎIÔòŽ£ÞÛ* ™Î¦åñìc“²ïÒ¥á-Ô)Ú*WC’ß„d]8‡…» )ÞùæÑÎå<Ëÿ‘Í{ëQ³9H äã^Ù‘?H{³s@\(èc`p‡Á»åe:%2‚q[é‹[Qùåp~_Z‚6W/KyG€Q˜mMÁßž¸D„ÉquÃï™Ç2ƒ]6WŒ/C"3¬hŒ‘paÀ8J^kçÇ9=C!h­EçF¡¬þƒìtC˜Z`_w~«ã©ƒ£Ò'6æ³éІ4|¼É^ˆk»™«o:‹3ûàθ½y¾³—‘<‹yêRÜ­E‰IG"ªÃ,¬’Ú1Pgªx¢: £^wÊ«»Ö·ÁS/xàÓPFΪÃsh&/ZægÞ"æWaÿÁn8“½äÂzìMvðE¿üöLÁ¾ÏC°’ÝÓçv?<‚L‡BŠãØXõxkR*U¤Qšéqð¶“ŠÁM|.EýâRQ›K‹MU\'–`|-Óö%¬ šú 0È#Ä®§‚dÀFb_"Ê”Yx¸ÁNèº&·¼Ú —x}Ø^@fjùÇ,×uºõªÔô´Ø6¼õãÈ_ö<Ã`çʦ¦á “ªŠF$ý]$ð¶qè¹ä¾Ž9fbÂooÙJªº XæÁ`eÑ‹áC/ËèAM¶Š¸$ºq]ð­gЃDgÌI?y·¨-yñ$š¾8ö|ކ"ä‰5ïΡ›¦+çƒ0ëáWÁo3·µqkVuÓÀÃ1ã2½€®æeæhàÓÃË"ŠO˜ôÞsòDŒÎûüÃ&3±nw®ÊbNÕl,Æ)³Ù;š )p­SÄLú.ȹ\ôH+ÒÙ¡D?³úÌg¸¨ãèB³T(4OMi.û1‹ ‘Œª0z×ËÚÖ[ïLñê®Z;Ø}LSàíø…ß\´È:ð<ħ"csPU°ù$ « F[¹³áòAiW6p«Œ¸–Ðx}+†bmâjši)âsøÃä™s–¤¯¡ûÎò½!¨@G„zÎ_°Ÿzò&EÉ^6}~p %˜þV”Zj—kùWKç¤TA5 z¿-a¿8O§ÝóÑcžñÆE1í|¾†€hºHJZàèEê³'¿Éaˆ»Ë^’ô¬®Oý’”D5ÿHÃ;rýÛ==T•>æ5€Ê™–§Ÿ>22ãzGRþÏ ú:;íh‡‡¸ã‡Ä”0gëÕìxEYöúÏ·ûW=½«£î¡¤½2{_6×wëí±°Ø[Öœ"¢ô››¬±Xå{j1ßZlÓð¯0~3YšÓ5<ƒŽ"YžÃÅÝýÛYJ’¯£3˜¶¼•lm|HdžîcÓ””¥äiãñZ‘Ñ •”Q ø½½ä~>’.yBy5mK¤éÁW¤´„ŸO1_GNñðIûj9\kÁ¶õÖ&”Œ‘ u_Ǽo;`Ó”s³¬â«ó:î«zk*&\OÞ*ÀUOÒ#1ƒ¢‰q’2ëÌ·ßûÆ©ZÌ m@á£Äç;H‰#ŽéŽ|V}ïK=ݨUì<É9Ëðé(“[i±³è5~œÞj Í$6 Òcãá®ÌãF1 Tbi«9@ PR—cóºuÝ’F>nÀò×Pì Òâ90ë(}ý틼ˆ2h71:ñ±2åcCvë{“®Ò7þ‘„Ç⨹õ«ÄW2:ÈLŸ[56oöÄžQLÖg \¼›zª]4è ]Í㘤ÿ¹©dàyj‹´¢´)ü$wánåìÛ §ˆÖ˜i@ýÈKªˆ¿zy$¥µKž×|Qf|Íc–¬¦kúÀÛ À6u’ «,¯”o¦´Æ“"tDó¯VK‡•}iT/<ÄNA(ˆ\_ ÷Ó‘€ßñØœ—é)è &z—í¤Pg^·ööá`,á#«fôi™ÃÇ›¿©!±…%™~¯Z¯4ÎÁ‡ãH¡{œF÷ŠAp¾D«`gµ]û|)ü}ùûBâƒ0ýoA¥Š¬=Ød‚Ña•ð§ X ¾ŒKäVÊ£vÄ¥á`cÚõ-K ¡H¹Ø‡?2–±Û Étè6Rþî[߆×Á×Ù*œ… ¶ú>8t0\jÕ—»}Ò¦þfnXkBOôPŒ–ò4GêN÷H)~ž“îZª;œ\ÿôè‡cÅ̶|þJ¤ë›^-Ñ9Ýñ]«Ÿ×P!-¬µ±õzsGãzy>]F¤§äŒè€#Ç×DG)Íb 4vwaãôïß-Û\6Â!LÉ“ ó÷>GwîUÍ¡šˆÉ±¯þsSþÍ:§Ž® 7x¦á'þ&óÙ¾ Çû# sH1‚U ÒË*Ü“ÎA¦·\,LTŒ3Ÿåï‹ U,u1D-{²àI:v~îèv(€5¥Èe%í ñÒOÿ0Aî,ÀØAû˺Ÿ{G˼'ú,i6:¯? }º$:aìY×Ýwê}1E£ôÃ[yp¶·ê–vˆ=m¢U¤0®k—e Rl1ç4Ö7$Zs¯ÿþö·ˆLx2mË/.qC†{Ì“Àò¼;¸¤œj!¾væBeîÍÖ÷'³K¸¤Ü¯ÑíÄâE»³õæo§Hà„‚‚ƒSï õáŸz'‡—Íæ":yÕ ˜÷*ü/géAÀÀÔÄZqöo ¡7Ð)¾×8¤¤÷° OÅ/ÈO†òbÛÆÉ Ü'U¶Ä8>ñ v¦—k8T]kyq17y9ÈŽÍB—ÌÔ÷¥8=VÄáå§÷È—%ùÅè½Nã° V«x¹åFà@]¦ÅÓOŒà¹üЇBg ʨíO'ôÙÕ›Sp­}½±ò &£aÑ˸Ë^WÁ5´ç¡P–^=Kò×–O‰%×îVhr>DÉØ"õWçƒ5A¼n¾/“óÂ÷ò R½¸ãøíGJˆ={;†–·<Ñ|(•&mâø¿|PÿÀÿ@ØÌÉÅÞÎÌÉõÏàT endstream endobj 134 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[-24 -250 1110 750] /FontName/RNOGCD+CMMI8 /ItalicAngle -14.04 /StemV 78 /FontFile 133 0 R /Flags 68 >> endobj 133 0 obj << /Filter[/FlateDecode] /Length1 724 /Length2 4159 /Length3 533 /Length 4712 >> stream xÚí’eX”k»†¥A¤¥d¤Ab†¡KJºdHɆ)†n)iTJRºC’înPJBBµÖþöwìõí?ûØÿö±ß÷Ïs_÷õ\ÏùÞïÃþHÂ'gƒ¶‚*¡QX>?H  ©©*¸YÄìì ¨%†F)Zb¡¸¸@Í€¢Â` a!bbv€Úѳ³Ç¸¸ÿp‰äP ÌÚдÄÚC‘7!Ö–m ƒb=ø9 ûÇg€.ÔŠq…Úðƒ@˜5`µƒ¡ˆþ REÙ¢¢É6.Žÿl¹B1Î7\®?I¹7œ6hÂ`µ%ÐBßœ½¡ùƒý7\WrA ´,‘Äÿ1«k["aÿ0 ‘Ž.X( ‰¶bP·BÿbÓ„ÚÀ\ïªb-0k9” à ñ…þÒaÎJ0w¨ km°µD8CÿÔ¡(›¿“ÜŒïO]-meÅÇýÛ¿š:–0VÏà þËýg úW}3# Ì`äA7Æ›÷Ÿ+³¿öe¶¡ì¬%ÊÆcóŸÂ¿CÉˣݽø…|‚Â@D…>ÿÕ¨‚9¹@UÂ@1Q°øOÕÚƒ¢°Þ†›þgm »™êµ&öò,—Ÿ.ÁrIIU@L˜A¤Œ®ü*¨ä´dlkç^¬!‹»#ç¡¢ãØK^’ÅùECˆ„aÍ P¥¹áwÿ%ŽžÜe—hÑ´Z×Å.¿L×>õXeƒ—µX4KŸeòîºýçЍ•¼9Ή~j¶`1­££¸€ë…ƒ’èÒ×™žå8&nše¤Ÿ.ûÁkd´JÔ*‡JÎÏ“3õt÷"iw|ª¸{˜Gá@—XÓe:òßÁÀßãßñ¢$åsÅ’Jõ%N H ·Jí!7òñîk9¦Xö™Éʵ‰³AÂWÕ©™äqÍT þ¾žtˆ}„ì%´‘™ˆYv¥¯‹º«lXãØåȧž™/´ÜjXÙª0üº«¿ƒÄCJÜjùéïÌx4²÷)x ð˜É÷¹vžOÞ¶$„{Ehh¤¨Ð.Ÿ¹ fX冼Âëû„w ÚcOgù½h­·÷¡ÞåRs[8¹\ VX¯:Ùæp3¸/£ì§ç}ÉJÞ^zgáÚà¶¹™\bRÉ¥®Ú††bªdt=R‘%ËiÛ*Wp1aŒÒTÕÀé]H}eoÃFcЃ>%9#öè§(˜Ÿ…Q~Ü.‘ÌÊJ7„™UEºÞÓPœc¼ëÈh®Ž4MÝ!ð² {oªêC3v˜[}s9=Á,¼_Ûò]t-¼B ƒÎ÷ÂL›ú†õ޼†­ò^Æ»¾ÞÉ¥‡9ESŒÒx•&Q+M‚×… RûÃŽ ¨• ðè+ޝäâ·YžIÔV{¾Ë–¨€¶/Ò¶Êx·U_š@µÔÐxˆm‰¹Ò*¿¸­„³obA<›­„Ì ÈÒ/—gRIÚŒb'Uï纕iBxOSo(Ü žaœ¢,[n©Ødþø\Û!2ë]\׿I—δ‡¯ãÊŠЛ;÷ [¹1?eM¾O:mbަ#Y80ÛûV†ÏZ¼?âsi‚ËC¦ÇZÜ #´©{'ò°|‹Ì¡ô›W§Œ{Þ’³¸ËOÚ'f5Vr¹âø™S…'ÌÞ2ùõC®»HŽx”K6öìc&‚Úxí©±™ÓspíÀëMòWaªLÝ{gâ3é]+3Ñ©ýõ–ë–Üꆆ¹“zÚd1\D^ñ–§‹"Ï$tÖ?µ§³¶¸A(ú+D»:®u÷{mºõ°CO‚žcc‰mÞbÃ2çàT²f;Ójk·z™Ò?ÌÙ¦}ÞŠ¸Å›±ÞažR1­%›5Bˆ29¥îQÈ ½?·Ûî\¿™Ýg  •ò€M©y–«¬÷®7Ñ´S…šÍŸj)ãØ4w)Å©/Ϧ™=46—=Õ6;>·heÍ~‘•%‡e­áÇŠàÔûÌpÚw­…˹‚òê=¡v²©-¥oÙµ)ªíªœÊW牽ï)jsÐg¾—RÌ>5þ„cÈE¥¡-„4IÄBo¨sžÿ6CýÐÐ;ý''ŠGî`U)ÖÔ/=†Å¿|($û}&L¤lúy‚N@ÅÆ¹¶©é¢W‚ yâÏU˜¾Þµ  ÂÛÉ ¡Äs%š§ë‘ìÁ•÷yœ´Ì@ Ãô0¤ï‚I¿ïô»l[Úâ ]ÛeÞú­—¾ŽWºöÈs…ÛA£Õo²Ït¾Á×´KŸÀò%OÓXøÏÆ6o,‘§K®¡º´DI’ðr™›EtD…Šæ+¼“®¬#j•¯ , q¡F‹{€ù .¶;Gê4IøÂ©¾Ä‹4>‘/Å®ÚàBl¼Öò·Õ²õ™Ri:ƒ).\u|XDüâNdc1ÜñÖUÔ£°›bjß þ`í‘î+Ùzàü¥µ‚ÎQýa÷E:x'â'ƒKǬ«Q°ø½c#é¶ê•åõdmök’€ÃšòñÊŠ=µÎÄÉÝt2Ëç¬iée´|DŠǺïë>'{ñ(jp?ôÒ: Ÿçk-á˵÷·»-'š$¹\¯Ü50µEÉ‹ƒÌÄñšÕˆ—çZ߈̟¾?åÙµò¡1á ).Ç¢â åÂy×­êŽ}Ù×Á˜ß«íæ,)C,IÜ9»ÎÈ'¯í¶wr³búPZŸb¯É¹ (¯§n‹"E¸-jÏéçÄ/gpJÙU"R6¡²Ý¸ù†ô¬ U­¾ZdQ YÍzò[Ö­ûrÇ—ª³æâM›žE Õ;pM±Å¡nts¤Æ!ÓØ6#Ï^uÐgW«ªÉ3·’4®??_omUvdTVÍè]í[~é cJ¾£,¸7Õ˜}⺼´x…Îòteडe3ÿXDÚæa¬~!¹5UtÔ“¤Ä2ø¬ fœº¼¢ñi¨×”è}áDsŒsPèØ6·ržS¬ñÜ£ª%’h£èÍGÕâ¿*&ˆËÝsòaÄõÕë.šv¿E†«B¡žFˆTô³«ÑLÜÄ;åÝ»pÉÇ•¡pKÁÎ᱊H¸XY÷„¥ŽI/ÚDA“dØâƒV//+“ßè4œ¨®——‘½œ’ú‡¢Ó|šž Díÿâ#»èÝ«ðêèÂ3nˆÉ/¿Û[ÌQŽW_²†é`&PÊ/ÑVpŒÓØ®€§O¢ (Œ6bmãˆÅóhí—°è|xsÅ‹u6ÈxN!:#Ôô ßÈeôö nWÅfÁЄš~ŽàǺ7psc–𙹰K>²ëàéØ_k:·Å}…ñéj•ßÊ?_9r˜fUí¸w|ÃXÜɉ䭒2‘0†Ä>Þjöà° ©ÃÈÐsâ RsG ¡¹fW¹ÖŸ8Üï` ÿöx,ÌLÙ´Uô ß’öÝ=ÝÞÏB×ҼţOvç—À»ÅœØ }Á•ÝáÈ®,䥵7–, f™íoòH*E=JÈÙ9ƒ%ü>Ë“$´ ƒ~®ûä1¥a{꽨½Ð¾ÔT^žœ4m3"3Z|6•[í&副 Ó(fÇ…Õx21’yŸŽfdz›Õï4r è&?bö¡kU}ÛÌ×Ã8f^«OgDËðz[Ùçdö­¬+°@Aê´ùû‰²ðuOr‘¤‰í¶Ì­u•jñáü£¸˜>¨ÿ«tš€ˆê³d=M†/­I'é!VÏF#f|¢8ž×’mE'»?—x!X…ϽhiW>"{®ušÀü‚ǽ:¥\öÁ¥‘×çg“¿ªÇó^¿S“UM6áÝ•¤.gL0ð}Â/v{‹Z#D|/ïAèÎsrÓ«^bÇÇÈ@žAS± ™â_ŸR{†Ï“{ß³á¼åi3zÄå?”ŸÆªcAãBsµ4Í®öQaW‡ ö~ªE¤œT%a¬nÄQ?“þdNôª÷º‹0çXÕÖË8¤Ù¯ :¦ôÖoPiÓB&I—»*T ~T=¿wçLnÜ÷°Tšb¶[.hr±®ÉÓ纃#38gk¾~rÏã¿Õ ƒÜºöŸp>5·]…–Á"³ß—e®|•m|ûÑ¡‚l÷ƒoEJ \6÷¬ÂGégî•™üæS¶×ó‰Ý¥%G}[V$Jxͤ±$8{ðú’˜¯àß6cÄŒË]ÔìØžQA';mù•­(©Øþ›@1¾½ ÿANBXÙpîÿ¨°ìErkì4)ƈ=‘Ì>V·9¦JG‹<ú{«1±ýr”çýÚ…vôN°Õ’èÒÏ(ô‘ƒ˜:ï!ƒkÄAÓ› ~{‰*&£n»pyòŽ”8Z‚f5&§ª‹1¼‰öç’Õ€OÖË4Á¯€_›s$š6¿‚Í•§Üt´N–§. ¤¿ °Ð“¢Œ¾Å+”¸— ËsàrŽ˜š&|N¡’¤jaö@¿…ü®˜— 'íwÝ {¥AØLR-ÁΓ{ΜÐyH]m²E½quåDOÕÑÍÀ¦è›÷ÀËÓ=hdc(üngyçô¾Ù(!" Ï…ß܈ŽÀ”¼§jrê´£öpé¬Ðëté‰ß®ú¦g4N‹(6á»é/Ÿ.Í·’ìBÎÁ$”tç2æãF“<·Ÿ3~ø8$.qÕ=ZüÁ´žç‡Êä1à´º¤Éç*üÖÜpá]Op0 U÷5AÈ8Ù6fíJ+# ýi»hñ¾ýÚ?JÊî¤eÀwƒjzõâ/ÄÜý~ms ±> endobj 137 0 obj << /Filter[/FlateDecode] /Length1 724 /Length2 1165 /Length3 533 /Length 1706 >> stream xÚSU ÖuLÉOJuËÏ+Ñ5Ô3´Rpö Ž44P0Ô3àRUu.JM,ÉÌÏsI,IµR0´´4Tp,MW04U00·22°25çâRUpÎ/¨,ÊLÏ(QÐpÖ©2WpÌM-ÊLNÌSðM,ÉHÍ’œ˜£œŸœ™ZR©§ à˜“£ÒR¬”ZœZT–š¢ÇÅeh¨’™\¢”šž™Ç¥r”g^Z¾‚9D8¥´&U–ZT t—‚К @W¦äçåT*¤¤¦qéûåmKº…dgaqºán¥99~‰¹ ãÁ…!Ÿ˜›™S U‘Ÿ[PZ’Z¤à›Ÿ’Z”‡®4<â8ßÔ”ÌÒ\tYÏ’ÄœÌdǼôœT]C=cSˆDf±[fEjJ@fIr†BZbNq*X<5/Ý)Àà;DßÙËÑÃ-\µÙ€Ä̼’Ê‚T„r0ßÁSQf…B´ž!P!ÂX±h¶¹æ%ç§dæ¥+—$æ¥$¥À0]åä”_Q­kd© kiLj††f ææ¦µ¨ Có2 KS=]L ,Œ ®L.-*JÍ+' aü´L`(¥¦V¤&sÍž#šÉ¯#«ý5áË«Já»Nœ»¹a–zÔ&CI¿óM“ƒX›òý¦Çž;w\[çóÂŽ™gîÉß4½0·Ñš3çØ›ûþÊ;—ñn‘ŸY¶ÆØ(ù$Ç÷g÷ú´0½eXœWÒžìË1ÿJÔ—Å]aKu¬¹×ÿz]XýáÞüßU- ûÝ£Ò%6· t½ 6µ¨,˜Õ`Ñï÷ÇN|+ªèKgÞ÷dªq;÷)yA«æW§ïpºq3ÇÉz¡ºí]£ÏK½&j¹ØŸuù~xÙ?˰ «ä*¼Öûó wOÙ­¹\v»Âwv%ß|ùáðþ3Ù:Y³Y}î|vÿ¿ß¿Ã÷X¯©çd?/°yÊa^¯:ïËÛæ-³w^fyŽás˜Òì”ò“íß[ïàÓžûù÷Ðô¿|‹g—ë÷¦û…•š;ºûãùÄà¢} [о¯ŠØ×£˜»÷~ã®¶m7 {–õ?Òéúhr=<ÿÉ©¨ªŸ qKÏøÝ®<°:­Ïÿw}Ô¼­žè8ÛØwÆÿµ·Ã›îK3¤?'”lóqfÉ_4WËþ¸¯`ˆ“ý—ͯíOË~›tá—㦇«*®pðî+‰yù{SVÇ ÷'?‹².žÛ¦sŽ_œwÑ–‡‘Ž×b®lym ñ;^ÿ®ú‘Exšî*w°´k_í 1öYvqÖ*¡¦.»X·ÿßÝUls4tþ%·"‰´´m§0~ =ý˜œX„‚ùt1°ûÎþÏ®jn]ÙϾsÁ™âOÙÍsûLänXEU«óðÍ{¶kÃÿ½ÿ/Gq„$Šf_¯5¸ó>æŽI\΂Z&-M™ýú%³9æ_^¬Ña²b÷¼0•6 [áÈ“;ViûØx†•ÔónÖI18™yù°ž@ÑêI=çȧÛy_“Õð iî´¬O‹?í¹öòÐﺵ·ž)Çpå´ÐÕ(òÓ¤‚‰,g5³‚ûuC¹9üæmëß·ßþ·ú_.üÂM«Ô?Ï]Ë0WbA·÷¬CÓ^KgJ\þ6«@f Ãب½[.è¾›i³Û”÷ûú«.!÷”n<Þ}|Ùï8InÕ‡Âv{²¸o&ñ9 m+Y%ûeÂ%“ÛoÕöÍe\´—©xVVËc‰†IÜa/8kú[\~@ÆàÀMkÖµ*_+ŽûL—7~ûîÑéãÂ!|ùóçÙË=Šó\!ª¼÷^é<×ý]†=º‰Ý›'Ü— ÎÛý;U^Sã ³ø‡ÓîéÅo¤]jsPÿ-^šw²|Êã‹féW¦ˆ_>×Q¦nά%yß7kÏ+šÛöê¬a„ç¹ç¯¯¼ãêûŸ›})úùÚmݳ¾Ø„Gy„.69sKhjÉáɽ{ïK†m}üˆe‘¯oƒÛË™Ÿó-Rëñ¬X á%œðzÊu7qãè%‡ ‚·ø%Ï›_¨˜~.úº¤th®Í¯½n]¥1B ?£Ž™VÅ·Ú2ÔxоbP _;qý°ÅâÙvÅŸë9ìÜ÷W×ùjõâ&QîÃ<é'Ý:}6¤dÜ>¹¾lÑ¢?§ ³Þ.(þn—Ubºt²Ý{ÎF¼ŽÞ”0Xp1_™L!·çú ûYƒ|?ÞñNçÕïÉ/„²7)nª²V\ÇaR×d@!à5`Xœ“šXT’Ÿ›X”ÍÅ. & endstream endobj 155 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[-30 -955 1185 779] /FontName/ELJYJZ+CMSY8 /ItalicAngle -14.035 /StemV 89 /FontFile 154 0 R /Flags 68 >> endobj 154 0 obj << /Filter[/FlateDecode] /Length1 721 /Length2 709 /Length3 533 /Length 1225 >> stream xÚSU ÖuLÉOJuËÏ+Ñ5Ô3´Rpö Ž´P0Ô3àRUu.JM,ÉÌÏsI,IµR0´´4Tp,MW04U00·22²24àâRUpÎ/¨,ÊLÏ(QÐpÖ©2WpÌM-ÊLNÌSðM,ÉHÍ’œ˜£œŸœ™ZR©§ à˜“£ÒR¬”ZœZT–š¢ÇÅeh¨’™\¢”šž™Ç¥r“g^Z¾‚9D8¥´&U–ZT t—‚К @W¦äçåT*¤¤¦qéûåmKº…dgaqºán¥99~‰¹ ãAá„!˜›™S UŸ[PZ’Z¤à›Ÿ’Z”‡®4<â6ßÔ”ÌÒ\tYÏ’ÄœÌdǼôœT]C=cSˆDf±[fEjJ@fIr†BZbNq*X<5/Ý)ÀÐ;DßÕÇ+Ò+J±É€Ä̼’Ê‚T„j0ßÁRQf…B´ž!P!ÂX±h–¹æ%ç§dæ¥+—$æ¥$¥À0åä”_Q­kl  kijª`hhaª`nnY‹ª04/³°4ÕÓEÁÔÀÀÀÂÐ,š\ZT”šWN @Ãøi™À@JM­HMæš=G4“1^GVûk—W•Âw8wsÃ,õ¨M†’~ç›&±6åûM=wÎç…3ÏÜ“¿izan£5gα6÷ý•w.ãÝ"?³l±QòIŽ;ïÏîõiaz˰8¯¤=Ù—cþ•¨/‹»Â–8êXs¯ÿõº°úýù¿«Zö»G¥Kl8n.èzAmjQY0«Á¢ßïøÉáXñuuäCé´°œ¥»œ6N”Š­—þìÌ÷æeÇö•Öçxª– »\éz;gÒ‰Ì^ïš™'jìUD6Ï1ÿyé)ßÓOŸžfª-Ÿ·²â£µ|k°«¤ìõ˲ýM‡›ØTEL¹}ÇSGC)Ãäýé¡‹³ŽžqæãZÆ2MΤ£ë~޼eÈéCž}J±Sm¾fD‰)»})‰Ò*h¿z}­GîÃ\cÞ©=J—^¼÷øÍ˜'»·—|åHŠ›ÖõNý­Û3ëó[Wy”þñÑÚàÌ™wŇO}yÎ;ãÙ[}'ÝÝžû+¦5ïÀ!:o‹Í^«íûoÇ͹)³²!Ñ^ÌÇ~E®zý9ƾGÿxÅÆó1é˜Myûò^}–ÃÆ’¦–’­Óå'½ÿ9Í­†‹o÷ÖÒÙ[=3t¸ž ·”3îã¾V^9ÅÝóÑn ÞêƒL‚»æ­ñb¸Ç 6ù੟ÇOö)woùsU%Oæ§ÆöIRoZ´ïLÔ^°öÝ™öo4g›§-ò©¸Ëu±Æò+_]¦<1LMn80'652=çcÓW‰Ré÷?ÏXËæÿ°ÜÎðíkcI´õ.Î[já_¸ÙÜÊÒÛÞ1…ímPÔÏ™®Q†…É9©‰E%ù¹‰EÙ\\Ë©à endstream endobj 158 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[-36 -250 1070 750] /FontName/CZYFOY+CMR8 /ItalicAngle 0 /StemV 76 /FontFile 157 0 R /Flags 4 >> endobj 157 0 obj << /Filter[/FlateDecode] /Length1 712 /Length2 1659 /Length3 533 /Length 2190 >> stream xÚí’y<”ûÇ…NÝd‹xd9¶aÆšQ¶±Œ¬%û3&³0f²DÎá d²^‰xR¶û–pÇ!!…,Iè”íd9Ιêvîëvî?÷uÿ»¯û<ÿ<ßïçó|~ïß÷÷Sup„šà)¾ …LƒÂÕái‹>ÀÕa$ÄÒ²–"¸¾>0¡ûš0®‹ÐÒGhà I §üh€Rù£K0!TKl±´Ä Áa‰€#Giáê`B$è¿„h0¤^ñêà 8à úÈHVd?  ÷¹§}‘.‚Ô ÄáT8”x ™àA?ˆ†…³Èaù±þ Õ×át"ÑKúÏÓ_T,‰@ ÿ‡N!Ñi °¥àA*ùkëyð3š-ˆ'ÐI_«V4,‘€3!ûAö¹E± „x øa‰!à§>HÆ ÁÛ' ¤»›…½›ê§ý¬9` dšSxП©ÍŸjø?kÎp¨„0À¦ƒÁ9FÎûåË뫵ÌÉ8 ž@öiX2KÅÿÙø+“©)%ìTK€jêp.LèéÀ¢þÕèL&ÓA+3@ƒéé¦ÂÑ©TLût 8ûýRû8ÓÁ0ɹ%B8€Q;¡ºé³Ñ:zò|㣧滫Y:[LÑÁîwüăêcâ6Æw–’n|P’1ºRyÙÖ ¥uË»=<ü8빨Š__“Çì&‚ÍX„ ׺sküôLºñ¨Veê\ò>(ôb Ϥµ¼ï”•¨ÛíºÜ2g¹«¶ôŒWÏ'.<àBàFÍC­ÓTs1[ßxwañð Má(RŒVܾóº1Ô9z¤àZUPËìW—ܘ-`.¢P§ ½æ#;!ˆÌHVPá+µH‰¼r5ßxF •Ò“WÙT6îaê5²; f~YЮ °æ37Y7_ÑxíYÜ,ï’x`äþ> xÕ!×q¬úù©€1Ôíò8læñìšo¾®1“$6o7OÔÞuÝŸv7U6¥D›Ç£ôïÚӡͯm95ÕÜRKÞµûþúü|e¶yOÆxïÑ›^b¬‰Ì¶Í¹ž…ü¤–•v¾h¹‹ˆ¾øGc„O_´CYywí êG'2úNÇøÒ-r¸.˜_Ž’öxíßUÙÏ&ÐT’r H”êZ²jܸL`ʰukz¡ÐBMe—.úÔáªZƒªÔÝ`OAó­­Ä~=ço:“ùS(Úu/ªÌδ §îÙõ+g¿Hdwy£zdõfÊ{ƒn‡‘Pä_¸‚—|"Ö=z¬"Ìæ¤m~pºue’‚\h­HúYG¢oè½M¥ˆDˆH)tY€¸{U!3m“0Üäö€Á:ÃèãÊÕ­ÌêZ qSJ+ùûaÁpL‹î9Ãê4ëïÄ2zvy÷FPÏ0=Öï-ÆÔÑ[Гœ:ã,…ZU?0w¿5Ì_x'*ëb]žÊg”!§Æ¬j—¯ßˆIØŸ†lÝö(R+‰LÀD8wZj•‰§(ÝQá)XyÛ+ˆ‡ŸÚ–;S{ 7ÐÚ¤xy“ýh5ÀÁjÈcá;¨OaÿåùÀÿDŽb©4 K „@þ³÷‚0 endstream endobj 167 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[-24 -2960 1454 772] /FontName/KXONTQ+CMEX10 /ItalicAngle 0 /StemV 47 /FontFile 166 0 R /Flags 4 >> endobj 166 0 obj << /Filter[/FlateDecode] /Length1 909 /Length2 1781 /Length3 534 /Length 2424 >> stream xÚíR{c~ÆbƒØPà‰Œ'ŠÏ÷¿¿Ü¶‰IfQ & À$6›ÄCˆ7H¡bRÀ KFé1Y°¸»PYlÄÌH18@bƒL:H…-!Ú ý•1FcfÇøwÊØ@q¸ ÆìzR NÄûY‡1Plef¸¾ðß`ÜX¼@°XÖOÊøÌÂÿtÔÒ’ŠÄH¬‰‘ø…†‡ û×LW&Èí¬C4ÃÌ¢d.[ü xvÅãúS!ñpA0$#" xû M,»Ð}Ð9YY[Œj`Â$RïŽ1§&»Ý3dp×Ü*Ïm‹Ywëºý\m[Ã"\È–º´Îè¥Rã²GH“9‚=ª‚ñcD¹Ò§BK»Dnå¥ÕÌ^HÛn;'ó Ö ô1¡SãZíÛq­5'm?ª*kâ…96áó‰GuLaxƒ >2•ß’‡úT?ÅIfÆQ£Ú—‘ƒ#âKÖÎ3‹p&xœ•]îÓšžyßqò3c»ÕR²P³èšñ£#š´y¢—QR5õWª¿åÖ\®X⫳‚ž 7 s³ÞOUMùš# ΔÌ÷îY{6ÄnX·è­[¢]%n<ÈÄ,ü,ß¡²B1¬ÚçÝ’FD1ëÃtN•ÔŽ:=àsi3^qw±rPŽ…½•ãê[íj¥¬˜°“ÇçÎçÊ}^è"´K¢ê¨IŒšËŒ;‰Õß ÎN¨B¦¦¬èO[®d[éz&¿ÝЮ²I‡õ¡/¹ïB‹Þ¸õPÏêêOM§¥Òßù†Ôéƒé=G…ψ÷Š„­Ç]rzDy‡žŸPU ÖLl*©=·4ŸGi<šLì¯wÍõãyìO¯+]~yiØp¡‘U7ÝЇ^°+­†X°ä…Rþ#g´ÊèœdÆ%Bó]Kå/r g?mB{mî%vÓÊ5;Þ?äþ6•)_âp&>G†´ <¹Ãj=Î…öZ¡á®»wÁ·Âì““n“k‰õ lEèᡱ÷ÝãÈ„¢’Ê-ÙòQñ´ˆá-ZKM/Ú®…H–ÞÅoSZZi ¦/"j݈¦¶L´Ï,¿kÇG!éÆ6UFsE`tÏNg<«km#<ߘ9½x<_=½SjT÷UŸj†ipôç²¢ÔÀk0û%«(4%7ÐYn6;Ç·.>¤˜ôŽŸ ¨ŸÜ“/ªi[zöÅýµbÒ[ôWŽ^ ­šÖ'}||‹l+"åßxñÎí&R QI»^¨Þ”i¶’ªëncåÉ–õ|áp1®3¢4¡à³l‡tvhòpãEbd•4·®Ö3‡0ž‹))&«ï%ë-ÚyŸÜÑ›»=Žœ-µñÎ`—áhß÷¦A$AÙGNäï&á²ûa„SÒÉ‚æ§Ã¬4c„~Ë#90£Spnìå›xtõ£m;mùuò²xk’YEâ­&îžyµ`Pø*»ú„—kî°‘ÕºµÞ—×ý—MÜ׿,ØCËð ®–Nu69gÁn8¯îÓŽËÖJ¯I²Éyʬ4÷\t'"0´g"cJë2ËT¡MÎç*·+¨k© >aÒ¦÷^™G™S=hrY}Qÿ@gðË<ë–÷ Ók÷úûÔ&¦õÂXËÇ‘W*öoº´+Á­:;5Ó.ŽÑ_C0›Z§RÅ ö}ñ£¢Æ÷*BÚ·ék”u´*­8àká™{Ÿ–Y¾e9-Æ»»~QiŽzmeŒ”ÁÏÍϨ*¨Œã8R¼åoVUþ1’©=LŒ¸pÄP«ëÙ4ÉYT‰Zççl¼ žqWn‰Œ.wµÖg^*{<çð Yù”òש„gG?önº‰kü$Ö½Åt(ñómø«À³¢+Ów^Q$R2Œx=ªù‚Üõäñ^m3î´ŽÔT£}‡`8¢äNש´“1α*¿Ï‘ûuÕëXƒ”¢Üå K:_v±è–cçËwJèÑÁÌþL•¼§qÓûú¯>t2<ŒÛîä^*™¹¹´6KÂö*Ç|3^eôT=éú…^ý˜ö>oíJÒkWåÊp‘­®Üã—Ðdí¦m·k Pïõ=R%ê±×·)²6î®@Iÿ½ÐD=xx+·™q7A%ÿª©÷['Y5°ÔªI5bêtû"¿¯ øüë–ó*v·äñŠBm!~Œ‡£ÒȲªÐ¢ËNéè…¼RCÉ ßøüÏ„ÃØ·†“Am¸©ÛÙÝóèÿòûƒÿd:HbÃ,‰í@üüë Ï endstream endobj 201 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[-20 -250 1193 750] /FontName/XMELVI+CMR6 /ItalicAngle 0 /StemV 83 /FontFile 200 0 R /Flags 4 >> endobj 200 0 obj << /Filter[/FlateDecode] /Length1 712 /Length2 1469 /Length3 533 /Length 1999 >> stream xÚí’}¿÷ùž¯±!™béBgïˆl˜g‰ÃàÉÛÀa°(cc<Þò go\øá àl¬í°xÊ °9„ÁL fŸ\v€ B4H /bÉCh  °i ˆ'À€ “ xz… xC\9Ñ1(Ð4° gÀ(«OHð^6`÷Y¦ó9_Z „+çLåœf€œ’Ά™€íEYy±å§Ar–ÿëßP}Nä3™^ ëS¼|Lê‚,Sð>›Åáó  ±ém¥BŸÑHÁg}ÝõàLÍgBö³ÄàQÌàÑ"€½ “ -êLÿB>¶E+’ÛN?ôâýÜ#ƒ ˜ç#àü‘úɼXãþYˇƒ0¢€@,‹ÅÉòûËSðWg¹Á46‡ÓA„þ‡ðg&WWvTŒ¥|w,ñ6òÂÙ[v6ØØ5úÂŒý|Èc`ƒÅbí6Ù/ª4>‚@0oq äßû¥ÞËO‚¢ *ÿ/Ú …P‹uèé0Y}§õúý.2êFñë\›™B¶æ U¦2¦;2)aYöHíýïäÔœw¦ÎÉ•q$Ç£õ3!·‚µå½:æ{[j¦*ÒF,h^ P´úm J­ ¼„.´‰ Q^ùt’^ÈãÔ½i4Ô«šëlŠ«{L/@×Ý}tIúóPÍ7´N·ƒžÇС3–Â=@sà^3–uØ:á£ïÔVKßC—Ý#ü/Н¶bôeâÂw÷ÍŽmÁÒMPÇ,ç”&_!hë­SúîòÒ h‚YRfê¾×ŽHífF èºÅ©yÕžK œï48Å–lˆÎº®þkÉBâîÛ€‡hjåÑ”lŠcÏ*±Š[¶” >ØE sâ¶7o )_LÐly^£vÃ$²?¿‡8dü,êž±ªzËE¿«¤Ì/›+#Ȧ‰ÇÌÒ>ª—wt~,UÚTÔ¸Fw…K=i c®tÊõøÙÀôõiƒÜ|Ý Î¿X$¼ÔƒpïÕz°F÷M—lšWîÖÕ?èQÀÈêMíj£ÆŸã*$ oŒ Y³›¨5A²µ1:Ì«ÞHÀNŠ˜ÇÇ D“ÊžÛ‡ðš«+žO¼ž Õ’L$îŠ#k”áñ‹¼Î¿m=âᦫ¸ù¥äUʽ±ÌïYãËîôØÜ}Ø!|ž÷ÑsˇA#~ëÚܙӑ‘yY/À]Ñ f®³NZYÁ¥ä×øôw}×f•¾µŽ‡ÇÜWöñv““«oïPV©=ã6Cô¡÷·ó°̺U®&åë'Ïÿd¼¢m (­3ž!Ýq;àáìl&…‚Õoõìð-N¹·«ê‰°÷ék»:¿£ý>‰‰Ï¼W%al2Œ*ÝŸzYªÎK_ôò‘,×6ÁKdÏ`´½CïÜ4U Æz¶˜’Ý›I×§Ä’ g¬„Ó|•â8ŸÿæþI‰”ç‘uæÑ+mó)ÌÜsíë·KAÍÌà™Hs\×ᬺye`­º­•ÆI¡¨îDÍ!Ä9<kº®t½ídÄjûî"=§2ÛÐöN!Gù\.±hî>2—yc6¨sÊöqÌîlðUM†j‰,××#ò¸¶ÊÅyÛìcoŠ®';ÛóUSNd‹¨Wo8ùm²ó‡­}‚·](yÌÒåðD«@]ybù)ˆÚÀR:³_À2Y»ý®à´D¾¤òÛcìy¡þð?@cB Âc³@d õwYæ0+ endstream endobj 204 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[-4 -948 1329 786] /FontName/QXTRGY+CMSY6 /ItalicAngle -14.035 /StemV 93 /FontFile 203 0 R /Flags 68 >> endobj 203 0 obj << /Filter[/FlateDecode] /Length1 720 /Length2 680 /Length3 533 /Length 1196 >> stream xÚSU ÖuLÉOJuËÏ+Ñ5Ô3´Rpö Ž4S0Ô3àRUu.JM,ÉÌÏsI,IµR0´´4Tp,MW04U00·22´26áâRUpÎ/¨,ÊLÏ(QÐpÖ©2WpÌM-ÊLNÌSðM,ÉHÍ’œ˜£œŸœ™ZR©§ à˜“£ÒR¬”ZœZT–š¢ÇÅeh¨’™\¢”šž™Ç¥r“g^Z¾‚9D8¥´&U–ZT t—‚К @W¦äçåT*¤¤¦qéûåmKº…dgaqºán¥99~‰¹ ãAá„!˜›™S UŸ[PZ’Z¤à›Ÿ’Z”‡®4<â6ßÔ”ÌÒ\tYÏ’ÄœÌdǼôœT]C=cSˆDf±[fEjJ@fIr†BZbNq*X<5/Ý)ÀÐ;D?0"$È=R±É€Ä̼’Ê‚T„j0ßÁRQf…B´ž!P!ÂX±h–¹æ%ç§dæ¥+—$æ¥$¥À0åä”_Q­k¢ kib¡`hld©`naV‹ª.4/³°4ÕÓEÁÔÀÀÀÂÐ ,š\ZT”šWN @ÿÂøi™À0JM­HMæš=G4“1^GVûk—W•Âw8wsÃ,õ¨M†’~ç›&±6åûM=wÎç…3ÏÜ“¿izan£5gα6÷ý•w.ãÝ"?³l±QòIŽ;ïÏîõiaz˰8¯¤=Ù—cþ•¨/‹»Â–8êXs¯ÿõº°úýù¿«Zö»G¥Kl8n.èzAmjQY0«Á¢ßïøÉáXñuuäCé,‰éóU»{ò.ŸY¿GqÍ…“'ì^™KÝQx`±åúŽ5,V)ij:”9‰1ëßUz¦8wÅÇlSBA¾¯«O±Û}½,F@+®õ¯Ç³ Igšß…s•—DÖExìÀý\wƒ`¼ÍFÝí<š‹4 ÎÞ_û®0^àãŸõ òmBÖ?=¥Üj¹ÿÑÖi‚yÍ_Íå?ö/e°muVÊùë ús sêæI+".Õ³÷ZíùÿdaÈóž²Ikÿ4V“òAZ¥¢ÿ‡Ql¢Hœ®—Çü›m¿Ë-žm Ò)?¥>})ËÊsneËëvfÊ;5åîÓI:“óû&±ÓœV¸æ‹×jÎÖÐ_ËJ¿Mw±ÿv¦kß_UEÝ“.A³×Ú.Þ;ãh”l{UÝW}qÁo›¼»ŸíY·èG—Û_üâ?¤˜9§Z8²ÞëÜä½ëuúÛM=a{kL¼6ëh¥Êþ;ß¶½ü³±õ°Rñ¶¶Ëµ\n±!{÷¿>¥·Áà®øìë [ËXÿuˆ|_¨žîsr’|o÷¾¿¶¾’ÞÇn¾uªnZɽÁ°}ë¬/‡¶„~|æ²c]Ù„f៴®w<Ê(XüE§;¡üƒdäúÆÆÁ7W‹Ö(¿ÞPtÖæ”غ»WM8ž©¢ÿ¯ÔQ‚7°üã¶g?üvÍ©¿¿úßÃù^*n]9¾ÁyšŠÔ¡³_·?»Ÿ˜uqë M¾7¦½=qpÑu¥«Os&ZÒÖhŠßê@Û¼µ®Q†…É9©‰E%ù¹‰EÙ\\£¦©Ò endstream endobj 207 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[11 -250 1241 750] /FontName/PLJYLU+CMMI6 /ItalicAngle -14.04 /StemV 85 /FontFile 206 0 R /Flags 68 >> endobj 206 0 obj << /Filter[/FlateDecode] /Length1 723 /Length2 2096 /Length3 533 /Length 2639 >> stream xÚí’y<Ô[Ç£áNSö=ÑÏ]aƾkÆÎŒd­K2Íü0ŒÆI É^dŠk½-D’È.K¶ìEÙei±d‰«zîs_O÷ùçy=ÿ=¯çœÎ÷ûýœÏyŸï9Rb–ÖrH<ùhD&QåòM@ƒ1Uö–p8LJJŸb©2ÉK5„††*`æK•¸š¦Š’¦Š" &蓽h‚«Ñ?þU¥ =A ‡%,Õ ôÜ3Áa‰€5G©4y@‰€Õ×->€èRü@¼< †@xŽ \] $˜ÂW*S’ PûžÆûzýYò)>{\€Ì7ÒãÀ'žL"Ò<èS° ïîÑüÇ`ÿ†ëGs#_"ÑëùÕþk¯þVÆzˆ´Èž^¾T`ÈxBúQj~gÀx‚¯çUS*–HÀ!I®DC(ËÕ¿ç >FoI âÜ,Ñü–IøIöÚ÷CÁmvm+ûým¿-±Õ†æð¿ÔßbÄ_ñ^(À.‡#ö„{óÏÕ¹3$áÈxɰ¦bIx,ÿÏÄß¡P(²ÀÞ[Ë)ªÀ„¢2PSþ«Î–DðöM ¸ºš’úw(œ/…’¨ß>ÃÞ}ÿŒ]{-A V¦]¹¯‚î²±™ D(N¡lGü¶²å¹MH©é©Ôº2é÷ öâþ^Ò+^}WP=4öjLÕÞZÓ¾ŠnRSµ]® B®2Ù ¿´¨™µlõ0Ëë¶|àë+­  ó©Ç‰·cS—gܪ3;&ïJ÷wðI†©[¬®&†ìëì9Ws©„Éá"¦˜­àK‡Ò4‡À5#>k^÷Réêankó,ÿBo";E,î›àøFHk; ¾ýrb¬¦»gÉèÖ-#ë™qi8‚¹ÌLô¸§ìr4 )’ 5{ñgyG_¯sÂLp‡™ï¼ÿÚT¼Q:Ê©î®è7è-”£ôQhÉZ¾™©kïû¦´A?  8r̨,¸ì>0û€.6XG〶w¶BvL–5¦R1(µgÝ«ŒÕBóð``=ב?V1¨^ÒCdói¼‚‡g~íMj„§c*PËÅVtžobv©*wè =¾VçÓ~MÑ~ÿwM4»[ %)j1RúhÀšg¡"Ïê=Õ»ä#|hên"­r§צ‰Ï5 Þ«W¢Ýµ¯¿ÎºO µé¶\dž'LÒœ¨%¾8¿æP¦V˜q2æ«k¾žxÅhá€>tæ6Í„ÚÔ?¼‘M’.Ö1Ì[—ß)\G&DcÝÎÑÆ!­T)‡¿¥bѫΛ‚©<‘ÇbrXóQÓ]e}aC·ÏšM<ÄD«ÞaÅÓ£w#yû‡:jÍLTâcm½©OîtaèFybþ¡è¶PÖåÌI•vgQ,!ÈTöÎT[óT#gõvß”Aù­pÕ)îÖÎZ7ÉžÓ»2g*.w]µ°ã§QìWî*Í픂Ƴä…Û^­Y*í«Ÿ·õ)RnÂT£$^{É9¿Îõ£*ÏÙx˜§5§*äžI9À¶Á‘ŸñL0âÀ=[ÈOæWNKŽüšü²‡Hç;scÀ‰œd"'[ÜTƒ@`­ŽhM^k¸÷žX_WÊzó,%¯†l#9ó£w$7ïwê¥ÌÞ¶±“´™pI¿à£=xÎæ^õñ"1§MË_kæn/vÑ{ñp);==ÇÃåAÛæO"•¡ök³Œ+9P¯c£w»cÂCÿ”sQdÜ‘[å4l¼0# -t¶¸64ÝшåúôM-Ö©¥ø(=JꊞY!cÿuö¡YÔzc•ðfî¸x#Ê!?¥dqaòÙ©¦y'І/€?-ØFì±C¶f†ß\41~ Ñ*,œ´s{Câ4Ø)3æêÕ›l˜ÕKÑg*ˆu}á¤d‡øD®ž½Â0ÍÀ>©„ʉ.:j=Z•‘Ž7~äwÌDŒÄUÔóG “äé~’å¢×¯µsvQÏs½x C9ƒ.bäîØ6µ  K´lŒá@=.Юحr °MÏëñ²›êG È¢´t»q»=W/fZcÞÚìuKôÞÇ5«È©o?èfŽù§„äÔÀö0_˜¨«&Ógú¢W¶ù·¡˜«L't’‹KJVjã²b—ôõÅÅ\Ç0,Éë,,Zçqí9-Og”elÞ`÷ä©u/TF%Úh7 Ò“ÕŽ;9‘f.½O– ¿_+ðY֨ƭfÎ]§oIûßœ<,²œæÞØí®’tÓ’÷ÌǪ8ã9›ù®<º§Óqçß0nÛSwE>×(ÓÃ,´êì£ù¼H$ǰì©ImÕ³ã&-n:$¢Ø¦ë}Õ _ôãe'OÅ2Ÿ³öNOE3öŠÆBvìš9õ‹ŽNáâ{¥š¨›ÏùOЧšžÑˆM>ãQ§¸¤Aq½u'mM­Ìåz¢fDÙŸhqÄÕU¶½‹hU-Y7ÔÖñðøt¯uMBiEË=v3Pع$5ãwZý©ÏI%üÈQ¢ ‹/¥²¢è0+^\B¤KØê¯Y~­%É\˜%ÝÜŒ[‰“cå!ʵ¯^ÈÞ’øáï?ùʃ&ÛÍ·Ùþ5ÑÛ¶6_!óñ³!®CP…Ýæu?T¤h!ª<ÄZ;¡ñmãÚ«RÄ¡ó=ƒÇ¬VèÀ_\bÜÿ¹Œåw²®/ã³ÎcßÛ{‹Nµ#ÚЋ…ôDÂ'"i‡ûŒ•òƾ]å/µæÂ„x~ÏRÀ6¬sÒãx-eðÊ•'8ÔwˆÃ SôâW¤cëRùó»†\Å̇íkoB®e¸-+tÅh÷X”ß‹íiâ‰X{~)µìMy&ÄÑ5­ìîNCX‰ä–rvJô¹³svº‰^Œ È›ÊËÍ]¿Ô ÖÖÖ¨úÂ<°5Íøò‡Ÿ³¨ì'…$U]ùuïu‰Pϸ#bœ—ËÖd‚F!Ž_„Jë Õ3ËÛæÞ­'ÉBüMùì<`¼šÊÂ+«£Q:-žš× ¥··~Sjzœ%°àYh¶”(ÎL…ÿ—öƒÿ ÄR¨dO,Åû3gª endstream endobj 283 0 obj << /Type/FontDescriptor /CapHeight 850 /Ascent 850 /Descent -200 /FontBBox[11 -233 669 696] /FontName/XOTYTJ+CMITT10 /ItalicAngle -14.04 /StemV 69 /FontFile 282 0 R /Flags 68 >> endobj 282 0 obj << /Filter[/FlateDecode] /Length1 723 /Length2 2354 /Length3 533 /Length 2904 >> stream xÚí’y<”ídzg]‰ô±d›ñŽelÅX²L¯5» ó`0CcC²´XÆò ‘¬e¬©¡¬¥ìd -dϾ¤äè¨NçýœÎùç|ÎçsžçŸçú]¿çwï뾡âæV ºX?7ÐÐ@R€+Â5ÚØÚàŠ0Š"‚Π!‰„ºž\€«i Ô5T`@ùùSˆ8O/ ƒ’ýæRtñ çŽ!h É Äï…¸c|+?wH¢(€®¯/`ùí—À ‰A VÃ,θž8Dé•1ÁÃPû!cý¶‚@bÀ ³Ç) ìQbý¾ z@”Nûí­î±üÇXÿ†ê×pÃ@_ßÓü·ø“úó¥üÝâ‡÷$D퇉„_­¶à:4ˆÅâí“0¾8w]‚§/(ÀŠ0Ä`ˆ ±æ8’»@"‚ße€ýdozß1”ì~·¶·6‘ûy´?ÚædMñØ_þï5ü¯zoLD\0àS„Áà{ƽ÷ç—ó/ËÜý°8‚'`E°"ö¿bééù‡î¶‚òo¿ªªH@©öÏ6î\ h¬¨À`055äwÕ=H ¤ï—aoÃ?kÜÞˆ@0t‡ÜÈÄ1œ•?"·áúññ „mÍó™‹´v$R‡AšíÁΣa2&b#Ù éÃĺâf”z"þqßä³T£“FØ>¹l³©U\‘+â/ÉãPí +¬£Ëè9»vdcˆ– èQ: ¼ëW÷¼O7˜1ê¸fäСà@)mŸú<ÓºOÓÑÜ+w\ß3×j9yðŒòÞ-4ñá å`FåÞŒ¡Æ?½ª\{qçP¹&Å9(IÍÁf½)/Në)ÖÝùš¹£ržÂÒ$,cŽG›)õ½±.¶!ÛÁ_§y~ØL{È·ì"`Éß2ØžÓâÕ`~š5΃•t|ƒÿò%‡#só]ôNw–Ed^‚wµÜ•mõ@¿¥ëâÉOîïŠêžƒ¾ ‡sô6‡ÉÚsÝ?+–#jqksÔµÎzX®`p^ˆ‚`ÌnŠ*]Ø)5@~äs5 ¸Þà×’ˆvòmpâx1±¢•ö;›ÛÛâ˜d¢:Ÿ!m€ööÓñU5ªàð§öFêWç§7pÛåϧÅëÕLN fG¶ û¦Î•Ÿÿí*ÔåÝ(«û¸}Æ×ä·!•ƒyKè1=ó0´ÌE­`ö'/í[0o±\}Š,t·ic²Ø‘|Eë²X¢;6`,5ÙQÊmÊ–›¤þÈØ—WKì CÅxäV"™\–ò@‚‡UV›5½Øh1sI6“u{ÁíáUå¯Ü2biL5>qÓèá S̘ûJÉĪØþÍ›-Ó“ÏFBõˆÞ„Âj{Å›¼£3ù¤LÎik±œ§rg¶M~ÑjO•ôxhèÍ “Lóšw^‘ç0i,k›r«NÈa<û$kìPôõ0åè¹µ®vxŽŽÖÇ;¯ ô£œ:Éqûfˆ„)ÃrîWÌuÊZÕg& WB3ƒãò\oÅ&²ÚôÖÒeÌ¿./¼LxQ‘vÉ•¸ÆkÕfP6b^ÐÊ)døún®yÿë‰3ÃÂg»ìd¸“Ê.˜ftw¬9TË¿?ofÖçúÎHó­Õ c#gIXÛblT.±¡€·±É+ã˜Êפg–î&.4á² ®n'0Œ W!—õQw®Q„}œñ%-î÷6ÑÛ­r¿µ»øàÏû åû«¥¬¸·ÛVÆ+d_> 9"Ê,z~ò­2õT<¿Ãο¢ã¶à–L,³ãó ¿ò*ÖîÕqÿþ9óˆkKdì þ´C§!n™‡ wÚdÛ,úeïwå@ç=a" ÏîݸèÚãÒ•n.&+Y%)s<¤ä`ë—&!i/(cשüc_â5çÁð2׎Kª›#ƒG ¤$¬„ˆ•+]%â®qfÆÎ•œ‰,)5Ö@òn¸ÄŽñLåttPÝEaý¢–!ßÚ¸MGy’U±Ô/Û,¼óÄ.‘r¸v·³% t7¥QÕâóÐlóLM@áÑólq"ùÈOêEÆìj„Ínåf‹] jï5éæ™6KJݸæ°ÉÖÈ©ó‰mT™` |Ê@ãaXûÊØw²Å³û¬ï4¹F¡$¶`ÚN¼ôÕVÐdêôKþ±i#=úœ…5ý½qxuO— #›ÒG¹q9)Õ½[œ7þgã–ò~ƒ\Áî%Ú^ò‡œŠè÷"ä)^Ž|+ñwí ISÈ 2§ÓiA"«2â±záÔƒÓÉ" 1×ÞÓ5DQüíø7I…‚oêè±6eÇÊ*-¡Ô`q­z¢ˆ{W•£†'9+θ™1îÅ©NDxgßôiÄåY5œÍÅ9­Nu7áŽ)ú>{ …éǘ˜T·^/57[à*Ê9:ÃÁËD1.ñŒŸ»t;9uøÂÁìù„.#&ÓMÖ›ZÉE:$e”õ½PsÔƒjóv´P0A˜ëžÛí-ïSÍ´áj‰4gÖêä½ócòÈù”à _VÌ©ZÃδãFëªâ¬"¸Ït4p'ÑTL)µÐÀ§ÊÐâãlòÚŠÙM’‹ýžÁN"ýØ€Ú‚ÔjGÄÑóKWV‘zñšìPú¾-Ûô¦gÐéÒG;YLOûM¹ŒŸèÊ?I%§87Qê'™ôŽé8±mL0w¯cÂç˜{ÇÊ‚gû3ä7åiÇÍF0ÿÎø|S-¯@±Mí¥ù½SÜwrÎÄð=úRmúÎ[º¼Ñé­(ŸE*L“}0ë:˜É픜JEQoïd@)Ãö–}îó•å§)òªâ­ÊÀ^¸ÅO»½ÀeöñôðZÁ‘Ž7×¹Œv-¶³Ÿ0»ð6-&D=…XU¼¼™ÝßÙkq¹qýfÆú{%;¢ÝW£Pc…gΩXP›óë²í%†²,­s…L<ò^…K9ÑrFZºÍ«#tÝkB1sq&g2jÇ_5Ø õ™z‰5W7‘`N½²*˜Y¯Lò±?§"á„´ÕŒË=[ìÒåýüÐ)YõW5):—o&=2E'wv4áH=#ÉÄ}o «›{M’9.Ó$óAº2I#ŠËRC ÉÔ×6k[[do5=¥Ú2i#]ycœøTcM—ΖÛxJÊÊñ¦&&ñ7‘Šë=à2É\bf6Ù¥wÇàZ.}°š‰ª§±”Xo€Le qéOð?`Ixfƒd ¬[¥237ÊÊUÏKOQ"”^Si‚ÊZr¬i¤é¾‡÷ÂK¾¸TLJ}Jô_yf©‰¨¬Jrö„®Ô T}xÊcQ|UØÄÂîfÀ¤Ï´¼ÅeÂv‹JÍÜF+†'šõÓ0üïoÉìêý*‡Ï,iŠŸÊ9ùêêBÆëm—ýÖU™Î¼Á–+È^ìå*M ;>ï‰Üå“Ülg¹a8'åöé‘e*S¸€Ëò ö}|äŠëF«l£GT÷èw^ŒÄ¦¨¢—£Æ]>š\é±ñyš––ÁîøÊ:€­(‚¦m¼ÿ­GdÖäÍ»!¬¯¥[f“¶2£í_{][Sz£é¿@(Tm¬¯·Ÿ\Í Líž\¶<‰`wÄ:/ã½ -E“És Ñ ]IIÇrDÀòÿ4´pR¢€ärhjY~26´iš16Ë;­ðYSh.{EŽž­Îà)mÕaå$.Ú‹Ö«ÊynvÇ«å̇Qy=1Õ 2MÅK‹íâ½}5Qưÿòü?à"ÀÝÄI~x ÑùµØ¥ endstream endobj 1 0 obj << /Creator( TeX output 2005.09.17:1619) /Producer(dvipdfm 0.13.2c, Copyright \251 1998, by Mark A. Wicks) /CreationDate(D:20050917162436-07'00') >> endobj 5 0 obj << /Type/Page /Resources 6 0 R /Contents[17 0 R 4 0 R 18 0 R 19 0 R] /Parent 376 0 R >> endobj 21 0 obj << /Type/Page /Resources 22 0 R /Contents[17 0 R 4 0 R 29 0 R 19 0 R] /Parent 376 0 R >> endobj 31 0 obj << /Type/Page /Resources 32 0 R /Contents[17 0 R 4 0 R 40 0 R 19 0 R] /Parent 376 0 R >> endobj 376 0 obj << /Type/Pages /Count 3 /Kids[5 0 R 21 0 R 31 0 R] /Parent 375 0 R >> endobj 42 0 obj << /Type/Page /Resources 43 0 R /Contents[17 0 R 4 0 R 44 0 R 19 0 R] /Parent 377 0 R >> endobj 46 0 obj << /Type/Page /Resources 47 0 R /Contents[17 0 R 4 0 R 52 0 R 19 0 R] /Parent 377 0 R >> endobj 54 0 obj << /Type/Page /Resources 55 0 R /Contents[17 0 R 4 0 R 56 0 R 19 0 R] /Parent 377 0 R >> endobj 58 0 obj << /Type/Page /Resources 59 0 R /Contents[17 0 R 4 0 R 63 0 R 19 0 R] /Parent 377 0 R >> endobj 377 0 obj << /Type/Pages /Count 4 /Kids[42 0 R 46 0 R 54 0 R 58 0 R] /Parent 375 0 R >> endobj 66 0 obj << /Type/Page /Resources 67 0 R /Contents[17 0 R 4 0 R 68 0 R 19 0 R] /Parent 378 0 R >> endobj 70 0 obj << /Type/Page /Resources 71 0 R /Contents[17 0 R 4 0 R 76 0 R 19 0 R] /Parent 378 0 R >> endobj 78 0 obj << /Type/Page /Resources 79 0 R /Contents[17 0 R 4 0 R 140 0 R 19 0 R] /Parent 378 0 R >> endobj 378 0 obj << /Type/Pages /Count 3 /Kids[66 0 R 70 0 R 78 0 R] /Parent 375 0 R >> endobj 143 0 obj << /Type/Page /Resources 144 0 R /Contents[17 0 R 4 0 R 145 0 R 19 0 R] /Parent 379 0 R >> endobj 147 0 obj << /Type/Page /Resources 148 0 R /Contents[17 0 R 4 0 R 160 0 R 19 0 R] /Parent 379 0 R >> endobj 163 0 obj << /Type/Page /Resources 164 0 R /Contents[17 0 R 4 0 R 169 0 R 19 0 R] /Parent 379 0 R >> endobj 172 0 obj << /Type/Page /Resources 173 0 R /Contents[17 0 R 4 0 R 191 0 R 19 0 R] /Parent 379 0 R >> endobj 379 0 obj << /Type/Pages /Count 4 /Kids[143 0 R 147 0 R 163 0 R 172 0 R] /Parent 375 0 R >> endobj 375 0 obj << /Type/Pages /Count 14 /Kids[376 0 R 377 0 R 378 0 R 379 0 R] /Parent 3 0 R >> endobj 194 0 obj << /Type/Page /Resources 195 0 R /Contents[17 0 R 4 0 R 196 0 R 19 0 R] /Parent 381 0 R >> endobj 198 0 obj << /Type/Page /Resources 199 0 R /Contents[17 0 R 4 0 R 209 0 R 19 0 R] /Parent 381 0 R >> endobj 211 0 obj << /Type/Page /Resources 212 0 R /Contents[17 0 R 4 0 R 213 0 R 19 0 R] /Parent 381 0 R >> endobj 381 0 obj << /Type/Pages /Count 3 /Kids[194 0 R 198 0 R 211 0 R] /Parent 380 0 R >> endobj 215 0 obj << /Type/Page /Resources 216 0 R /Contents[17 0 R 4 0 R 217 0 R 19 0 R] /Parent 382 0 R >> endobj 219 0 obj << /Type/Page /Resources 220 0 R /Contents[17 0 R 4 0 R 221 0 R 19 0 R] /Parent 382 0 R >> endobj 223 0 obj << /Type/Page /Resources 224 0 R /Contents[17 0 R 4 0 R 225 0 R 19 0 R] /Parent 382 0 R >> endobj 227 0 obj << /Type/Page /Resources 228 0 R /Contents[17 0 R 4 0 R 229 0 R 19 0 R] /Parent 382 0 R >> endobj 382 0 obj << /Type/Pages /Count 4 /Kids[215 0 R 219 0 R 223 0 R 227 0 R] /Parent 380 0 R >> endobj 231 0 obj << /Type/Page /Resources 232 0 R /Contents[17 0 R 4 0 R 233 0 R 19 0 R] /Parent 383 0 R >> endobj 235 0 obj << /Type/Page /Resources 236 0 R /Contents[17 0 R 4 0 R 237 0 R 19 0 R] /Parent 383 0 R >> endobj 239 0 obj << /Type/Page /Resources 240 0 R /Contents[17 0 R 4 0 R 241 0 R 19 0 R] /Parent 383 0 R >> endobj 383 0 obj << /Type/Pages /Count 3 /Kids[231 0 R 235 0 R 239 0 R] /Parent 380 0 R >> endobj 243 0 obj << /Type/Page /Resources 244 0 R /Contents[17 0 R 4 0 R 245 0 R 19 0 R] /Parent 384 0 R >> endobj 247 0 obj << /Type/Page /Resources 248 0 R /Contents[17 0 R 4 0 R 249 0 R 19 0 R] /Parent 384 0 R >> endobj 251 0 obj << /Type/Page /Resources 252 0 R /Contents[17 0 R 4 0 R 253 0 R 19 0 R] /Parent 384 0 R >> endobj 255 0 obj << /Type/Page /Resources 256 0 R /Contents[17 0 R 4 0 R 257 0 R 19 0 R] /Parent 384 0 R >> endobj 384 0 obj << /Type/Pages /Count 4 /Kids[243 0 R 247 0 R 251 0 R 255 0 R] /Parent 380 0 R >> endobj 380 0 obj << /Type/Pages /Count 14 /Kids[381 0 R 382 0 R 383 0 R 384 0 R] /Parent 3 0 R >> endobj 259 0 obj << /Type/Page /Resources 260 0 R /Contents[17 0 R 4 0 R 261 0 R 19 0 R] /Parent 386 0 R >> endobj 263 0 obj << /Type/Page /Resources 264 0 R /Contents[17 0 R 4 0 R 265 0 R 19 0 R] /Parent 386 0 R >> endobj 267 0 obj << /Type/Page /Resources 268 0 R /Contents[17 0 R 4 0 R 269 0 R 19 0 R] /Parent 386 0 R >> endobj 386 0 obj << /Type/Pages /Count 3 /Kids[259 0 R 263 0 R 267 0 R] /Parent 385 0 R >> endobj 271 0 obj << /Type/Page /Resources 272 0 R /Contents[17 0 R 4 0 R 273 0 R 19 0 R] /Parent 387 0 R >> endobj 275 0 obj << /Type/Page /Resources 276 0 R /Contents[17 0 R 4 0 R 277 0 R 19 0 R] /Parent 387 0 R >> endobj 279 0 obj << /Type/Page /Resources 280 0 R /Contents[17 0 R 4 0 R 285 0 R 19 0 R] /Parent 387 0 R >> endobj 287 0 obj << /Type/Page /Resources 288 0 R /Contents[17 0 R 4 0 R 289 0 R 19 0 R] /Parent 387 0 R >> endobj 387 0 obj << /Type/Pages /Count 4 /Kids[271 0 R 275 0 R 279 0 R 287 0 R] /Parent 385 0 R >> endobj 291 0 obj << /Type/Page /Resources 292 0 R /Contents[17 0 R 4 0 R 293 0 R 19 0 R] /Parent 388 0 R >> endobj 295 0 obj << /Type/Page /Resources 296 0 R /Contents[17 0 R 4 0 R 297 0 R 19 0 R] /Parent 388 0 R >> endobj 299 0 obj << /Type/Page /Resources 300 0 R /Contents[17 0 R 4 0 R 301 0 R 19 0 R] /Parent 388 0 R >> endobj 388 0 obj << /Type/Pages /Count 3 /Kids[291 0 R 295 0 R 299 0 R] /Parent 385 0 R >> endobj 303 0 obj << /Type/Page /Resources 304 0 R /Contents[17 0 R 4 0 R 305 0 R 19 0 R] /Parent 389 0 R >> endobj 307 0 obj << /Type/Page /Resources 308 0 R /Contents[17 0 R 4 0 R 309 0 R 19 0 R] /Parent 389 0 R >> endobj 311 0 obj << /Type/Page /Resources 312 0 R /Contents[17 0 R 4 0 R 313 0 R 19 0 R] /Parent 389 0 R >> endobj 315 0 obj << /Type/Page /Resources 316 0 R /Contents[17 0 R 4 0 R 317 0 R 19 0 R] /Parent 389 0 R >> endobj 389 0 obj << /Type/Pages /Count 4 /Kids[303 0 R 307 0 R 311 0 R 315 0 R] /Parent 385 0 R >> endobj 385 0 obj << /Type/Pages /Count 14 /Kids[386 0 R 387 0 R 388 0 R 389 0 R] /Parent 3 0 R >> endobj 319 0 obj << /Type/Page /Resources 320 0 R /Contents[17 0 R 4 0 R 321 0 R 19 0 R] /Parent 391 0 R >> endobj 323 0 obj << /Type/Page /Resources 324 0 R /Contents[17 0 R 4 0 R 325 0 R 19 0 R] /Parent 391 0 R >> endobj 327 0 obj << /Type/Page /Resources 328 0 R /Contents[17 0 R 4 0 R 329 0 R 19 0 R] /Parent 391 0 R >> endobj 391 0 obj << /Type/Pages /Count 3 /Kids[319 0 R 323 0 R 327 0 R] /Parent 390 0 R >> endobj 331 0 obj << /Type/Page /Resources 332 0 R /Contents[17 0 R 4 0 R 333 0 R 19 0 R] /Parent 392 0 R >> endobj 335 0 obj << /Type/Page /Resources 336 0 R /Contents[17 0 R 4 0 R 337 0 R 19 0 R] /Parent 392 0 R >> endobj 339 0 obj << /Type/Page /Resources 340 0 R /Contents[17 0 R 4 0 R 341 0 R 19 0 R] /Parent 392 0 R >> endobj 343 0 obj << /Type/Page /Resources 344 0 R /Contents[17 0 R 4 0 R 345 0 R 19 0 R] /Parent 392 0 R >> endobj 392 0 obj << /Type/Pages /Count 4 /Kids[331 0 R 335 0 R 339 0 R 343 0 R] /Parent 390 0 R >> endobj 347 0 obj << /Type/Page /Resources 348 0 R /Contents[17 0 R 4 0 R 349 0 R 19 0 R] /Parent 393 0 R >> endobj 351 0 obj << /Type/Page /Resources 352 0 R /Contents[17 0 R 4 0 R 353 0 R 19 0 R] /Parent 393 0 R >> endobj 355 0 obj << /Type/Page /Resources 356 0 R /Contents[17 0 R 4 0 R 357 0 R 19 0 R] /Parent 393 0 R >> endobj 393 0 obj << /Type/Pages /Count 3 /Kids[347 0 R 351 0 R 355 0 R] /Parent 390 0 R >> endobj 359 0 obj << /Type/Page /Resources 360 0 R /Contents[17 0 R 4 0 R 361 0 R 19 0 R] /Parent 394 0 R >> endobj 363 0 obj << /Type/Page /Resources 364 0 R /Contents[17 0 R 4 0 R 365 0 R 19 0 R] /Parent 394 0 R >> endobj 367 0 obj << /Type/Page /Resources 368 0 R /Contents[17 0 R 4 0 R 369 0 R 19 0 R] /Parent 394 0 R >> endobj 371 0 obj << /Type/Page /Resources 372 0 R /Contents[17 0 R 4 0 R 373 0 R 19 0 R] /Parent 394 0 R >> endobj 394 0 obj << /Type/Pages /Count 4 /Kids[359 0 R 363 0 R 367 0 R 371 0 R] /Parent 390 0 R >> endobj 390 0 obj << /Type/Pages /Count 14 /Kids[391 0 R 392 0 R 393 0 R 394 0 R] /Parent 3 0 R >> endobj 3 0 obj << /Type/Pages /Count 56 /Kids[375 0 R 380 0 R 385 0 R 390 0 R] /MediaBox[0 0 612 792] >> endobj 17 0 obj << /Length 1 >> stream endstream endobj 19 0 obj << /Length 1 >> stream endstream endobj 4 0 obj << /Length 30 >> stream 1.00028 0 0 1.00028 72 720 cm endstream endobj 395 0 obj << >> endobj 396 0 obj null endobj 397 0 obj << >> endobj 2 0 obj << /Type/Catalog /Pages 3 0 R /Outlines 395 0 R /Threads 396 0 R /Names 397 0 R >> endobj xref 0 398 0000000000 65535 f 0000283081 00000 n 0000291515 00000 n 0000291163 00000 n 0000291368 00000 n 0000283245 00000 n 0000004278 00000 n 0000000009 00000 n 0000161545 00000 n 0000161360 00000 n 0000000913 00000 n 0000165204 00000 n 0000165017 00000 n 0000001909 00000 n 0000169479 00000 n 0000169292 00000 n 0000002872 00000 n 0000291268 00000 n 0000003812 00000 n 0000291318 00000 n 0000004223 00000 n 0000283348 00000 n 0000007343 00000 n 0000175248 00000 n 0000175059 00000 n 0000004339 00000 n 0000185451 00000 n 0000185263 00000 n 0000005285 00000 n 0000006202 00000 n 0000007299 00000 n 0000283453 00000 n 0000010799 00000 n 0000202836 00000 n 0000202646 00000 n 0000007405 00000 n 0000008341 00000 n 0000216841 00000 n 0000216655 00000 n 0000009318 00000 n 0000010062 00000 n 0000010733 00000 n 0000283645 00000 n 0000012188 00000 n 0000010861 00000 n 0000012133 00000 n 0000283750 00000 n 0000015688 00000 n 0000012250 00000 n 0000228836 00000 n 0000228641 00000 n 0000013157 00000 n 0000014138 00000 n 0000015633 00000 n 0000283855 00000 n 0000016971 00000 n 0000015750 00000 n 0000016916 00000 n 0000283960 00000 n 0000023081 00000 n 0000017033 00000 n 0000017309 00000 n 0000017342 00000 n 0000022046 00000 n 0000022992 00000 n 0000023047 00000 n 0000284160 00000 n 0000025409 00000 n 0000023159 00000 n 0000025332 00000 n 0000284265 00000 n 0000029848 00000 n 0000025471 00000 n 0000242047 00000 n 0000241859 00000 n 0000026439 00000 n 0000027437 00000 n 0000029760 00000 n 0000284370 00000 n 0000048330 00000 n 0000029910 00000 n 0000035914 00000 n 0000035947 00000 n 0000035980 00000 n 0000036073 00000 n 0000036214 00000 n 0000036167 00000 n 0000039971 00000 n 0000039225 00000 n 0000038479 00000 n 0000037733 00000 n 0000036987 00000 n 0000036241 00000 n 0000040068 00000 n 0000039322 00000 n 0000038576 00000 n 0000037830 00000 n 0000037084 00000 n 0000036340 00000 n 0000036457 00000 n 0000036507 00000 n 0000036627 00000 n 0000036747 00000 n 0000036867 00000 n 0000037202 00000 n 0000037253 00000 n 0000037373 00000 n 0000037493 00000 n 0000037613 00000 n 0000037948 00000 n 0000037999 00000 n 0000038119 00000 n 0000038239 00000 n 0000038359 00000 n 0000038694 00000 n 0000038745 00000 n 0000038865 00000 n 0000038985 00000 n 0000039105 00000 n 0000039440 00000 n 0000039491 00000 n 0000039611 00000 n 0000039731 00000 n 0000039851 00000 n 0000040186 00000 n 0000040237 00000 n 0000040357 00000 n 0000040477 00000 n 0000040597 00000 n 0000040717 00000 n 0000250332 00000 n 0000250136 00000 n 0000041672 00000 n 0000259509 00000 n 0000259314 00000 n 0000042622 00000 n 0000043625 00000 n 0000264533 00000 n 0000264336 00000 n 0000045242 00000 n 0000046197 00000 n 0000048178 00000 n 0000048295 00000 n 0000284564 00000 n 0000050954 00000 n 0000048410 00000 n 0000050850 00000 n 0000284672 00000 n 0000058693 00000 n 0000051018 00000 n 0000054138 00000 n 0000054173 00000 n 0000054208 00000 n 0000054256 00000 n 0000266550 00000 n 0000266354 00000 n 0000054328 00000 n 0000268077 00000 n 0000267889 00000 n 0000055339 00000 n 0000056342 00000 n 0000058527 00000 n 0000058657 00000 n 0000284780 00000 n 0000067164 00000 n 0000058774 00000 n 0000270573 00000 n 0000270382 00000 n 0000064039 00000 n 0000065018 00000 n 0000066983 00000 n 0000067128 00000 n 0000284888 00000 n 0000089399 00000 n 0000067245 00000 n 0000069415 00000 n 0000069450 00000 n 0000069511 00000 n 0000069559 00000 n 0000069728 00000 n 0000070094 00000 n 0000070595 00000 n 0000070837 00000 n 0000070488 00000 n 0000071082 00000 n 0000071351 00000 n 0000071710 00000 n 0000072530 00000 n 0000073862 00000 n 0000088831 00000 n 0000088866 00000 n 0000088914 00000 n 0000089305 00000 n 0000089350 00000 n 0000285193 00000 n 0000092078 00000 n 0000089480 00000 n 0000091963 00000 n 0000285301 00000 n 0000097464 00000 n 0000273300 00000 n 0000273112 00000 n 0000092142 00000 n 0000275609 00000 n 0000275414 00000 n 0000093145 00000 n 0000277113 00000 n 0000276919 00000 n 0000094088 00000 n 0000095080 00000 n 0000097282 00000 n 0000285409 00000 n 0000099516 00000 n 0000097528 00000 n 0000099425 00000 n 0000285608 00000 n 0000102053 00000 n 0000099580 00000 n 0000101975 00000 n 0000285716 00000 n 0000103492 00000 n 0000102117 00000 n 0000103414 00000 n 0000285824 00000 n 0000104768 00000 n 0000103556 00000 n 0000104675 00000 n 0000285932 00000 n 0000106528 00000 n 0000104832 00000 n 0000106461 00000 n 0000286139 00000 n 0000108586 00000 n 0000106592 00000 n 0000108519 00000 n 0000286247 00000 n 0000110106 00000 n 0000108650 00000 n 0000110015 00000 n 0000286355 00000 n 0000111933 00000 n 0000110170 00000 n 0000111853 00000 n 0000286554 00000 n 0000113732 00000 n 0000111997 00000 n 0000113630 00000 n 0000286662 00000 n 0000115796 00000 n 0000113796 00000 n 0000115692 00000 n 0000286770 00000 n 0000117721 00000 n 0000115860 00000 n 0000117630 00000 n 0000286878 00000 n 0000118952 00000 n 0000117785 00000 n 0000118870 00000 n 0000287183 00000 n 0000120618 00000 n 0000119016 00000 n 0000120527 00000 n 0000287291 00000 n 0000121666 00000 n 0000120682 00000 n 0000121588 00000 n 0000287399 00000 n 0000123834 00000 n 0000121730 00000 n 0000123754 00000 n 0000287598 00000 n 0000124324 00000 n 0000123898 00000 n 0000124279 00000 n 0000287706 00000 n 0000126201 00000 n 0000124388 00000 n 0000126121 00000 n 0000287814 00000 n 0000129393 00000 n 0000126265 00000 n 0000280062 00000 n 0000279867 00000 n 0000127245 00000 n 0000127994 00000 n 0000129289 00000 n 0000287922 00000 n 0000131519 00000 n 0000129457 00000 n 0000131437 00000 n 0000288129 00000 n 0000132553 00000 n 0000131583 00000 n 0000132462 00000 n 0000288237 00000 n 0000133512 00000 n 0000132617 00000 n 0000133434 00000 n 0000288345 00000 n 0000134793 00000 n 0000133576 00000 n 0000134702 00000 n 0000288544 00000 n 0000135487 00000 n 0000134857 00000 n 0000135409 00000 n 0000288652 00000 n 0000137032 00000 n 0000135551 00000 n 0000136941 00000 n 0000288760 00000 n 0000138291 00000 n 0000137096 00000 n 0000138213 00000 n 0000288868 00000 n 0000140061 00000 n 0000138355 00000 n 0000139970 00000 n 0000289173 00000 n 0000141647 00000 n 0000140125 00000 n 0000141578 00000 n 0000289281 00000 n 0000142974 00000 n 0000141711 00000 n 0000142892 00000 n 0000289389 00000 n 0000144856 00000 n 0000143038 00000 n 0000144752 00000 n 0000289588 00000 n 0000146043 00000 n 0000144920 00000 n 0000145937 00000 n 0000289696 00000 n 0000148094 00000 n 0000146107 00000 n 0000148003 00000 n 0000289804 00000 n 0000150854 00000 n 0000148158 00000 n 0000150763 00000 n 0000289912 00000 n 0000153430 00000 n 0000150918 00000 n 0000153350 00000 n 0000290119 00000 n 0000154355 00000 n 0000153494 00000 n 0000154297 00000 n 0000290227 00000 n 0000155317 00000 n 0000154419 00000 n 0000155248 00000 n 0000290335 00000 n 0000156464 00000 n 0000155381 00000 n 0000156386 00000 n 0000290534 00000 n 0000157491 00000 n 0000156528 00000 n 0000157424 00000 n 0000290642 00000 n 0000158756 00000 n 0000157555 00000 n 0000158650 00000 n 0000290750 00000 n 0000159578 00000 n 0000158820 00000 n 0000159522 00000 n 0000290858 00000 n 0000161296 00000 n 0000159642 00000 n 0000161251 00000 n 0000285095 00000 n 0000283558 00000 n 0000284065 00000 n 0000284476 00000 n 0000284996 00000 n 0000287085 00000 n 0000285517 00000 n 0000286040 00000 n 0000286463 00000 n 0000286986 00000 n 0000289075 00000 n 0000287507 00000 n 0000288030 00000 n 0000288453 00000 n 0000288976 00000 n 0000291065 00000 n 0000289497 00000 n 0000290020 00000 n 0000290443 00000 n 0000290966 00000 n 0000291447 00000 n 0000291470 00000 n 0000291492 00000 n trailer << /Size 398 /Root 2 0 R /Info 1 0 R >> startxref 291613 %%EOF ctsim-6.0.2/docs/html.tar.gz0000644000175000017500000024115210667176710014713 0ustar kevinkevin‹Ž–,CìüP\á×ÿ ÞVšÆwhÜÝ%¤q n’!¸C°iÜݽq÷à!4– A‚‚KB$û{ÿïlÍîÔìLínÍlmÕœºUÏ}ê>U÷>Ï©:÷œoÕç8û{¸‹ÿÇšèLFTô¿F1©ÿ§ñÿn€˜¨„˜„˜˜„¸˜4 *&öŸ @Kÿ'ØS?;_4p{àâù¿±îïùÿŸšóùßÎÝÛÙî±ûca'Çÿcü/ýÿÒÿb¢2b2ÿ ÿKHŠ‹hÑÿËÿÿ‡›¦¶†¬œhXæû¯ùÝ»w‡††ÎÏÏQ(¶µµÅáp[[[óóóÿñ•···¡¡!ƒIOOokk###ÃãñX,öëׯϟ?ôèѧOŸÊÊÊXYYEDDæææ Z[[ÓÒÒ¼¼¼())UTT222 H{{»±±1¢  (//¿ýöÿýfØ®¡ àÿkò_{à·ølo-A†´‰*ßIwù²ù:f«Ö¥ÈôYÈÐV[žp‘ +&;ðé¼7T_†‡&:bôõ÷-6"Ò AŠ„F%%§¤¦Ù¸“¥çæå¤¡HRŠʪjÛX|bMSsK«z¦[N[WwOy ’ ¼w?ì… €ÁˆBG¦¦g, $üÅìòʪféàÚ‡3¢×Ÿöö»çâÞœžU“Á’÷_®~¤n¿¦˜üù÷_Ø‚.þ¼§,ë²» 0ÑVž§üC®XK,‰-¢‘ßõ}'[„I5‘i„o®4ƒWªb$¿cOí>ëƒ)EË‹¬V*rv¦t|–rÔm†Qt‹o,‘µÂžË¿€EPK¢@KBÕñ…ïjÄÝçsG`A@ΩÖ[ÿ¢¹Úi!VÞÖÀ`‘ÌPKÌpOë§!ìµ S®0bYÌq·Ú£´ÆßÈÖ¶7oä|ØŠÄǤª’ Àq’XæŽgÎ÷I¥o”÷~Ù¼ø½óçû{¼†(…ñûãÝÝßxϽ½zÓËÁ_?Í?'¸«xÞ{Å}mlV»ñŽ=Xí鯀À­'‡ ÐKml0ô¤ÑœÆ Lê;˜"±6°¸8"²ô’'÷Q/h^9 áÈ »=eQGÊÄf´çR@]¬JDÀ`ÞíVVH OCö¶*F>‘Ƀeq·U†¡èö#lk”Q40ôþ¯ÕH˜¡I…KD¶ ˜ÄƒÚí΃£Î¹åD¤šÂ@p’™ŸÕP“Üc€ñêáØ SˇOèM-÷ŠhŒ,ÔZÞt‚-E>œèdÀ…dœyÃTíJƒA—¯Éô”jÇìA;4P€ ²<,2ÆÕÝ‘Š°W#¡óN޳µêh«ôp²Gâ¬N0Ë66þ^:›wO’E5HÍÕµ“R@è°Ã¡óf¢•¦ŽuêîSk¯³j1"ZgßK/s½¹Ó[¿íøÅRÿÈ’˜KÆ-š^ÌÛô5’È }aÕÂ×C2=zï*  ~-¢½ ñؘQm!'Å`#3ÿQÃ{ù­N™%j†t[Þ©Õ?¨ÅÇMŵ^{1ãô+ŒèÒ‡ë®ÖCjf8‡&«@¼ ™Å#¦cYʆ@èr^–YjN˜òbAOæìò¡f³2\ö€iâõQ±2üáÓ³«U[¿§ €)h´nWÛücýçL xbì!…¡¥·õš¦÷FÅß~,΢GR"a(gù@&å6å,¢>ÑGL¶@oj¤[À·m'µ cZ‚Ð÷²Å”?ŸìîFüç|ÿ̇]÷‘Ú¹²lHNÉ|zï6$2çûÕî‡zƒm£ÊM'^§f‹ïW¡(|èo¯¾ïfÞ+ƒwŽF̉q@jù£'3æm¡a³ß÷"ÀKš^Ц—Ãx¸ÂéAOù«³Ÿ¯bæ,³¢¡¯œø$¶áÀ³¥Oóþ86ߘŽG¢ö¿õn´¥¾Q',5 ?åH#ÂÞ·LÔÐ#mlÃ{’á@ºÒLI“7„¤ÃëÆ¤ŠTVfÂNÅ#F³áØìQ=¤á«ä½ÆçN–eO^ð(ü€ÍD¢j´ÄBèÌ€N\@׸&Ù)”TãdµÐªØzĦAúoi5gþ|ù&<„\™Ì µtì¢T¹ýJA Õ1ŸVÛÊ'âÞM¤‚RqGYÍPmõolœ\Tæp€íaMš™ýâ#GÄÈðzŒˆˆõìz›Sƒê¾·”ùÌÚÛk«O;"ß2 Í…M ž.¨€Q¼ú;eü#¹ÄÊGÍIy»rÓyFÂÜf;”(Ý1—·<¥($¥]΋¢¦žª­kZK~«ûYüÓ¥ •-O`çøÝâÈ%tYµqåˆé¿¼¬-š¨¬–{Ë_rõy‡a¸‰P©1¾*<ÒÛU÷†XàŽÒþÞxX/¥DþŸ™‡=_vbc'©·Ó×ÔÌëËà ñ“©ò.ÄÉ·tg?´&óžÿ€O‹x!½ “¥ó¾–"* 0ëF‚’ÒßQ³‚Œ2q+ÿÍŒ qÀÉ5|À2ø×ôM!j›NÖ&¤jt‹(a`[†w]G"Ô¸ú'ÎR£Ö™ÄÕÆÕ‡Zóok~pW¦~vùQ½ Ê+5*ÐÙÂK©QÔìÁlYýïÂ|ÝÜ ©'è/˜¾”«GFCáÍ—ÏÑä€pE<ª Y=¬£âª“Õ TÏÐÓ0(qúÎá(~\þÀF˜+‰]K„LHª½¹ª´ÑÞÄÿ¢Qú¥¨EჄáLŠ9£V¸Ù6ß¿Rì¡uÆ«Ö%CQ+2X¡[Ó'¿)V¿¼•Rœx' ¾– Ók—:âZÂ1…<üI¡¥Hm{zgˇÆt›qoœôœôÿX‡|¹“œB ø½uòò<ëÁ'’Hgs¬LÒ}Hj>ÜÄ“ëõƺtð×üõDÄPMž¡×ÖzáãO´=F#'ô­¦É#ˆùnŒç\<¦‹ýE#æöõÙîdsžÈóSŸ0þ6cGÁe˜³˜›·MÝß°p«2‚޾䄛ÇÍ;l~åt¡w $äœ˜Ç ÷ž¹âÏÏPPòΦXÞè¬ÇÅßøiämÞjYÌ`Å‚xM¡¿@lZ~^­3•!úuÓ¯&ªÛ_°ã4˜„Ä?,òaó¨W¤øÈ»†~è'‡ã “VáßH´«€9‹G€BÁ®ë I]‰0w3›vvæ× .37ñ¦†l`¾ýÇÝËIo3•d•éÐí\®ö¶W‚[<œìyß60A4˜—Ø Öåïñ§9"a D…/Ï$‘ü鮺éy„'`,d'E¶ˆz@ ¯Á|z¬Âð* Ñ'.±”øúG:R)ŒðF©\˜ÇzµÀ¤t­X {Ô隣ÍÞ½ùcßPŒ¶RµïŸàKùOÔêD±±ŒŸF‡þ5¼4ÄÄ€ ò]‹{Ôé%½m)ÖG91ßfSäÛiÒé †…¶$² ³ rFv^àxíèkJ}é㾕/3–^B_.ê;´I· ß‚Û)U-:p2X©`‡}:S'×ZÈÞ¦î %TÞ3„ƒocéÉØ œ¸‘­„t`Œx´ÈyU1€ˆÏâ\‹ä¾ôâžóè5ÇjûãƮŠóTÄ¡®ßå™Ëê±÷Rz†õ]epnéÓ¡VT6X»ð•ånDb™Ý˜Î/`-É0àäHƒb­²CÙ"&)VXÀºfè¡îÃßÑ ÙÀNケûOª­0oƒ{x0šµÅëê Àm‰ã}(M@T¿@„·£Žæ>Dc~ãuùÝÀ7’q¡6±ºä{îCáù0;{â;™àD ºïNÊ\éØ%ï€Ï«@“´ã/ž‚ÐÚÈÛŸlJšp#nØŽÅrQFlJ›7Æ_͘t+Z>èù—+W)SYÑ‹h»ó'F¢ÀˆÙ-èJ<†ö™nk¶bó&öɋ̧w4ƒl°æŸ¡<KÓçí\‰Šö}Y¹¸ˆ ÐBôÔ ÿsló4‡þqÓ}ê|fK} ã8…H“g>B:±‚3´ëˆUìù-á˸MEo ‰w“xÒ Ë¤î ¤Þü¤þÞ¤—kI·¯~%áé’Gò“tsƒÛxa#ê„q£‰Ìܾo´`#òô£É³ùÎjŽ–Þ7éq«ÊÀøDÔr{f^¼ÆvõBÀ"È/’.u]-z7Æ]Ë{$ûôtÂïéá³$:»âiÛÊÏ®´xhzzGþ¶³·ü•ÖjÉ Š—ý†—8´{~ŸN¨ÍJÄGðÍ™é& "Xa Dç 5cÌ Í`œÌ`¥ô-á\llF ÷3û²¡ð)OPœ%–ä‰ûi¢ræ—ʉÉ[÷Üh)`[±[½Yb h06ÅÆ‚¸#‡ŠA+Sƒ/òÒä-ã‰RË‚2þö¦ѳ€WÃ*l³xíl ×sâòÑ·¼ÚÈ-ZŠ}³\Ç#ApžSS:3oùG­4¯àÜ«rÐã7È eÊ À<;˜0Ã2§  du!+É‹©(éÁˆ„r2÷Ò±iÁ|%pÐó:Bÿ„œï<¿ž‚ô¾¼0zâçÁY3m>Ö.…uΜA$‡¤Q? Û 0W 墅Cã3Q÷Vë¾õÔ;&B¢xÖŠ`¢³ÂñIC“„ü=ÛÔ½bRô³fš’MZP[>Þ¸h¥Í|ôÚôýzIWåk§5<%gu Í¥´Z &›ž›ñ–5ó¿Mf½Š “–öK¿ŽøK¯"“[÷Éjþ9•È'Þn?a$Ï|Eè½I_îMÅ,±T|†Iïšb×TúËç•A\½ä¤p}?˧ÅÜI±+r.á‘M}ù§eÐW„õõ¯‚Ho €°\Y9Oî‰òÍ©1¾Ê1”Ïq¥¿`Ë­@WÉZUm}fŸ2«ÉŸ˜4«,‘̯ÔAwx U>[:ôò53ï­oÐ%;åNóÀo Ï›‡œŠCåêä6s5Bƒ\Е¡U¡¾xu–e¢=kMQx­w^PRHÏŒËþÙQ¯±w­oZ0ó—M$DИÕã6Hrtê³êžâTìºõŒ/T'éëw°Âþ[ò·¢£uêüzU5-`Ÿ6à7_]§Nc›p:ÃI:œ 0ÝoaФö®!½,¹&Æé/YU ME{\¥~×éŠ*ë650Ð c&Ú‰V¯Ý/›å‘tÑÒ/®Ð9y¸ðw¦KdõêXíu"ó)!œÄVíV§îܸ ¢C#·în–õ™€vßµ=l«X¦l§d,ËyÜþ9±ýI2š“=—8fh° hg€Ó·ñœH‹+tJZwJH{C:„Ü‚ð™íZÔF”/T^¨Y¿PkìT83œ@q8¾¤ÚIšœ'Õ÷lï¼ÍèÀŠñF.7Е(UKFTÇí7˜ß1ô5EÝã 'Dx!4©3Â3$,ëº;ÈÖ=N3›X0€DbO¥éË,¡ ûú† `Ÿ¿×!½û¦@azþ‡U¿îMAÇÖjŒ†¥}õ]X·¾Ê­UQ€ÕÇà*æô× ë NØ¿¹€âÀÍ 'ˆâcÞt… #m   pTˆ0lP5æ¼×Ÿe±l¤¤×ñHÅÐË Å¿AòS ƒâ"[ç#W‚Ý¢¥YkEƒ]éÉþ ÷Fi»v,Û¯^““ö‚2Ÿ)0ŒŸÆ^àRA\,øî‹hÁ ÛP7ÆÖQÈ"Šý#ÝãÃߢmN_úƒ0 …|Žh:$ôæ¿ÜFAÒ8Ó²xƒþ<3¥Ýѹߦ†aår„çÅ<ðô›Äýaê? 0t_™&^ŒÊmx„O GŒpöfH*º3ÀÎ)‰Ð 2T/æ%¥.—ácäÎ,òl|é¢Íê”_ws<±¢ÇVOè‘Âë¡^Ç—|>E¯ï²¿vw×Ó«OóúÃQ#û† ü2À†½¢èÍïáþЗ¬]¿ßE¼‰ e~f3ñæÛ³øP¦z|’"ù›¶LÆ=«IXkjò$iñ)Íý?“ÃãÅTl¦ÄA´'pePøÿLÿsp xâëôÄÓÿÿúŸ„èÝÿ/õ?éÿKÿû?Oÿ;€ÆÈçÏŸ{yy }ýúµ¬¬ìÓ§OsssÿY”––ÖÚÚúèÑ£»wï‘‘‰ˆˆ°²²þ¿«Ûý·>Gþßúܽ€Ý¢9S\JZÜO^y Îù{| jùúõû/ÝN7£òÿQ·³4ÿŸu;§ÍÎYÏÿÒí^æ•n~ýõ2|îëÀqxDdTtLlœ<6þèvéö‰Ù9¹yj0ጒoUQ]S«%#hjn’"$k‚‰ˆå ‰ ˆHIˆAÈ:ªÑ×o&¤ÁMe(@* t  ²P9 Fº6©:þ™¼lãö¿˜C 8À#’…5@³Rm@‡jk5Ó­»­÷ÝCæ6y!Ié¶‹,0’A¶­ À¢+ÕˆÑöØÉp;–ÛÐí^ÄIº;³*¿œ×A^sû³ù¹ž¸;É‚}Ü:6^T•ÿÁâ^vªuè‹0ÒÒ…ð‘e(„ °âDDÄt‡R”;‘­`%»e×¹Ú¥vçÆ§°¶Íº’üÚ N æïÀZækfÂéãùUÜÇA0÷oâñ¹X€I•LWÞÄROqÍ•^߈ŸtÌ)+‘“- ‰a|ëå M€í>öÏMa ¼¿¸›€ r$·jÛÕÍFÔÜÜ‹$½äfG0þl<ö#öš>¬&ØÝÊžÕ‡ Ê`úL`•›ªTÑ„äD¬“Ì낦MßL»ÁÕ^ÌßB`MÚ‚ ’L+ô€š3…£¼š?#åª$62 ˆ#¿É%6 ç€åïÉY{µ –øHe”‘é@¼è¼5$ÙéqÊËà Œ’Fý­V]Žx§gŽÇ ˜‡Œ¾YB´† †["…ߢ†)dù\¤ÐWm£H¹M妰:ý¹¶âŸ&YÍ™MøÒlÙì~JÛòûO AæD3¾æw¼k`ÎÜD† î­r:2RÏiÓñâÏÏ¡«³ìxaV…ÅǯsªöÛU¨Ë7e·r<>­¹Úsv3Añ•3FœTP‚&_†Œ˜QÐóù¸ÉÇ´Ùÿd_¹vÌX×[“YÉó…”".K¨*eC‘äÒë“!œÇƒË ªm·ÀïA®ý“5¥¼ç•þJîKÇœÑa36þ\tqÉÂ2»2ë Õ¢~=ëàu¶kÔè²#å\ߌPÛ”‹´²K$ˆtMúž6DØ“Väá d¦,î"d8Ã-¯òÍ ù×寰^;gÏ }NûNì!4kCiÓÛ\µ}wN¥M—÷Ëò϶•K•)1¼{żi‡¨Is“伎ÃsJSÞñÇÎ&ƒ¼óiÐO–BjJ¬´k*®Ž½^hQ™,#¢hÒþ“÷®»Oû±ôø[ö«Âß 0[tö¶Ã”Ï©sÈ ÇjvéaVã<Þ ø`}¯Àh l0åaä¦*cÏ܇kåVie‡òáksŒ>'3z»„Y‡DÞX†¤Íï]û¼1@ÇýÃàtéß7¨vqµ"ãŠç¡öŽb84ú³@›1E.BœGæÙÓ$k·‡ò;äÝœRÉ–d«:?¶S¸ËmiU¢Hÿ†«ÞŠ'«ç?SñéNõbZ”ëÉž©Œ§>VÓÒ:'ƒòÖÊÞ#?1^eÏT«¤›î·{RŒ}ãá¬×â8¤…qb9­‰âQ÷írY ’Y(úf•B(•ìLª|DŽ *7ßÎü§´I/TwÎ ­ÝµB_z/ããkºÛÒ×ÕGãùÜœù˜¯‰é"—ùâpÅ·Á좦ÙKš`šB 8"Cb€ZúNÇcž¥Ï<ì#2ª©øˆEcÄ£¬l:ðƒX*Œ“©$ÔfÊð©n’Ð …u7˜™‚,Š“ÐŽÇkuˆ'ûêE cuAË$…ze†n&)¬ØÿÉSÁw—|Œú©ÿˆŸÈµñáó—ÖtyÙ/f‰©æ7ËÎ9U±a'zÊ:À÷†œÔÕôýŸ‚ŒøSn_êOAkŸ4 ïQÖ ±¯¡b¨R"f ÅqQz¢Z­]çIHl9A½Ið-Õãœà´ Ú‘¥9¨7H`µíÅì7Å/¤„ b-ÑË*ýïqÈjyusÿB€©“5¬a‚sµ¯]"©Â»©wÄ0_Ô%*îaq ¹½U5”EÇ?/¯'} M¥9$/rÙ¸ §‚XfUÌ‚†!Ö]«±j%òê>¶å1Y$n‡Ù0:—<`^;­<=ßiÍ$ÓýÔõòØV¤A+Ž˜Æk˪ÙU«ºS“Õ™îñ_/LY(™ê—ì…V9Xü³I^|Tù|„ÂW!1z{äéÓ¥hš›E#ÙãÅ­õQÚòø¹’×ù/µ'¹´Ú›ýQ7´2¥h¦[Ö†S®s9hZ:8hÒ¶ÄÇÏm”W²^QhN‰=Ý^ oh­k¨|â84Ál¿XrØæQú&´G(º˜Å„õ ª[³›dœ–ϱ˜Ç,Y¨´“$è‰ÓÞyØûRRöÌÊžü”w¹Âqd8âwjL¾mmÒ2>ZIªÔ¶'–)æÒ+ÙÌC_ )ëŸq$ÇéíÊ÷¢Ð-§—z6»Ü ×$š,ÑÉGu z“–o}é+šö„Ÿ]O«í‹ç¿ÑÛR›qÔï,\u'”켞õN•ØÞÕ;ß¼?ø¶³ôg2Ì÷ë9,é ò?‚‡*Œ7óRhÉ¢“Âj V ‡Ë,Üž03Š0#4X£ë<¯ý1?m:Ì>)/ýEûW;ý›8\i»º³ôyêñÐw Ó’€Ž(5AK/…âÕ~}_C™ ¨_‹+ú¿~Ø Zýýé¨80žŒ…àIœê6™ÁsÊ7%­PF²`YÍ79»Ë[¿fFåÔE~†VÜ3¬_-–*ÞYRÃ6D?¼Ò÷ ‹³k}ª‡Â‚Âkï$Ÿl?ýðéaÈ˯‚¿·[K)p2Jùïží½±ýþ Þô{É£u*£[‚ù7*ßZ[÷<èJiF_—íi –þ™§–O çéú›` ý¾ýi·2´ìŸ¨ásªË°ð?\Ê}ÏùpÏoõ½©Fx°5—jã°ü¬Š4DËRÐ=Â?§¶¼ß!·…Õl‹`¢Sm– c‹³äê›E°£9ë"¹½#UÚhˆ#k½©$´¢8( ÎKÖ™Ð7êN, äÓFFGiÐù…ଵé(´Ö¢±V† ˜¯çѦùÏqã€PPLºmŒÍ/‚@Û¨]YËÀ‡VõᯘŸŽ èä dçáúxžêj›Ê?ŸbF›¤`ÉÕÕ+Ðú-ð8ßòÌç¹¥mzÁ›$w¨ î]Úª,ìFËwÆ9m6>Yë?AÅ0»•ÁzEN‚7má4׋tPº¾4N|¦P0ôÎ q,©µcÂûº ĹOfo–6cÁ®»•¸~Jžpç+„ËÒº†Üö-e§T%yǰBeú°æÁ9}¢žÏ«|˜A½ŸÈ:¡ºœ¿¤h®Ãzü°w¬ÝbÛ–Ë—ñªÌ«#Îó#„AÐäû´ðÐ`î#ˆ\JŒvöÄXO[=ÈÌÅ–rä%u”«±‰–+€˜gGöA¨Þ$pgdQÂJ‚ÝU ×y%Z…ò[yì4Þõ`¶Xëµs\BaH|Öç"i\¶žqâÒïÁ7Ø‹ó£IKO‘†h¡ŸœWó˜JÆW"=Ãæ¼»’+'Z¤i+Oå\,r^ ŸîT|;QpW4"ç9¦ •ŽY N.€LõyËÛª>JoäŸ\ç®Ë•®×‘æ–5­ù^‘õ]âdç‹LÐ8ßšRYLé‹t\ÁkÜSÞRi|©“\i€²×› Ép>°Ë9(·Èç¯ †ü­ÏŲºÖ?ûM_ï/FBD £' ›|åwDÕŠÈ«˜ëB ÊM´‹Dæ+ÀÑ:‰Qл+îM#(IùÁ0£” B¢­‚g²\Ö°š+¾Ü?AOzl­S¦ ¡s–ñª‹3¼!¹ãZæÈ_ uŸì,¢îZ p^ÓÿÄç²,*°Z W®‚®~ý:U¨¯2°¾ˆ/Ýà#’Îòª/Е ¦ò×iò% —HÊçx4€ŸR3Üþ[/©è¯r¡-Rd(Äõ×.¯ãj«Éo¸ -«5…V0š†™ äHù1Ôo*LF¦R|«ñù d~£AÁ»ŽúÆÿž|Íèdc“]£A[Ó”LUŠel½¼mˆVsÇý MѦöš‚ÂÚ‰ãfÕo –W´Þ‡Îú7Íò¾-{Sà¯GÐÓÏ€b«Æ»ü08cLѤ±V_З’÷oJˆkQmûŠ«ãïoþVØfØÖö9VÏ©'S™×—2 L×rr¿¬N糌¡ˆµ ~ŒNobkŒãThà·lnkeÏ tGÂnñȲÑýûÞ7Y›ù(»BN³Këíõ¡ŽF?x¾°c\ÖkÛk,ÏDàCµŠôÄ €ËqèßXE"œBFÄ—)°ÀïÖ·[]²ÏŠì~§óÚ6s÷»¬ß´¼hè6áïòxÖÃmÛõx5‹œ÷EK~zOkO›±hgª‡ß»‰ž¿ÕʪW ÛkÀÓ"ÚÖ¥˜^øhº£á%‰)? q¾Xo¿äk0R`/€–ùß—ƒømöþvì ùÖ¾í‡fo"˜èÎ ûܬ¡&›{ áRÏÒ[Ÿ¥6Bk°wÐ9Ï%óê £:¨Þ×ÓÑQ 4B‰¼|k°ƒj¢/£ç_¥wK¢TÛ^z Àº¦½;nw­ryù¦5ÿi0ü´p‚f«[ò±è¥2nè¥î@µs!ÑD¯ vƒîàËÄ`ºÃžå4**ÞÞ„ývÍÝl=Èå>®3SÆ7ƒ^¸~Ú¥o>ðÄä¼Fß>Œïâ±}-‡CÊ /)˜*ò¶9tâð£þ§£òéã±ÓÒÆ4?ß<ƒOfGRóÙ±ÄuÓÙ¯m ÐLö[œ ±7¡àËGC|ÞdL£wõº´sœž ø1dÌæ¯ó†wªõ¤{àObO$‡÷bM/ –ZüOÌçG ©|¨ žñ4ßž‰* eyÕDë½\u¿èª¦OÃ&k¦ «‘žÉaÒ#ܶCOlÞìçÎc'˜h1[ÓI5£¾DS“AõG6'¡°Í—^¡ÉÐ~µ•‘ †^¹¤9qÛISÜt“ûì@˜Ùt„ 'é²™ò²h#üÒ49aõ¶­á‰ÍÄrè\vñ&tê$ôýûù©?;÷–¨ä~¹™ÏG‘Õ³BýSÒgào3>9Ôo2fðF® "Ø…[Cü$pÞ é§ÿwòÓR$G3dÙzÉG8Ýäññ%T·9˜Ð9×ToË·ìÙ0w¼I= ×ú˜·‚O>> |TR®–²ÜÛèþ×ft1}†DV²Ã]I,¬ÏûNoÊ”,3ñ÷µ[&ŸpùŠÏza¦&ëè30Ñ=Ïì’rÁ0Èc‡áƒ¹Ìð*ÓªÔßÞW+sØY¨¼Ü¦è!RÚ©rëìC÷z‰ÓuìbÁéÜt^_Ò>fNÞx<ùÎ;a̲•Î*cÉ’.«Ñ{ÔѼáþÀjdñk«õõÖPh}ñ$ÓÜ%L<‘/qÕóaz0%¬ M¨9cð3Á¬ ­Öz¬Égîxë3´ûþƒ>ñÆwø{ÌÊúÊLåƒRiÿGSévš ÌÞ†m¡]ç¹€) ›Íž1j6‚dôC»‹6öÇ+MÝÕH6„Ÿå97½¾Xû*HÄÇԓ˸í1[Œ"RŽÐ„ûèM75ogS|RÀ-¼ %`cqkx?ûP'G¾@üžXÚ[ì‡ðÃ%zM¿w…ÉñîS¨Ä-4{ŽÓÁ´Ô™Ï††‘ôÀ9Dõ‚Úü¸µ{¿bW¶mþrp‹#r‘OhO —uëÃ*[ÞÏÛz?&#çfOüãØRXŸôÇ­–x¨îbÞÏÊ…Ò:U…‘ sŽßóOÜNmmóßIŒ,ŒnTºÐ¨“þæ.±‡ÉB7÷²”l5?ì:¦Æ»½x]ûgR$Îc6]¯Qº].^—:°Hrêt¾õðT —ÕM9R~¸ã±yÛÁ;¿×û¯QÌ{’7ƒxåõN^ˆZ7ôT½:ƒë[hYúÄZwÝ—øê!:DÊ÷uv;LéSÖøÊ—ãµÍóTƒ¯J½¿Ý…e:3z¿l© L—V2.›…xªÇ¶´èl=Ì!׈ø¾éžTù K«ÞR§Ü;¯/]#²î¥Áä¨m¼.¥˜)¿fZþÖè÷¬Ú,<ô\\¤_ß݇´œß*|ÿû›lO Z$ÝŽÍaQ3yÊ=¿qE~æ)p“38uw‡Ë'ÞxÀšíXËÎÉ<ŠÝT°6kõóYÈH {ni¶Ó?·ÙÓ¯€ÙÇý4Î2Û¢ÞÖùíBÙ\ðÄÄ{ƒïb[i0—»nn^Ÿ®…È=žÂú¸=Þ˜lãzw/FB¥›Æý9q*[ÈWº¹…›ÉQ(§Nþ¿Úú>v¡g+ýñ~#›µºAé7róX~è:—•àãF‘Ñúû%ý6ÔkÍ´Ÿ Ïûšž绯`[º {®·ßÌ ¿n”Ó{—v•=}qU~<ÿÂ6íkÒ_·{̰‚Ûã¤ùï·e6"ù\^ßßÑü»cÌGrÆÕöê{X!”*–ZÃû®ŽµuBó‚±ÐÅUqNÀ¸ÞÖùï1 R!åx 8ûÏÞÊ—zD~Vì ^ü'm._âC›Ö#œaœè~Ezax8uº €Bè‘FÒ# ´ƒSZ:ºU€&änï+zÁ™üùc®:bÝ^zñ#SWò v—\êçÇò“¥%)RNnµø¦áÓö„O¢DQúCC«"<®Å^Ý~ςȶ¨2½Ð¼vdÌk ﺄrXáb+RA:^©Î»ÜGÚAßBr“+rŒkOßÕ-ÔK”ÉÞŠëM"±ŠU†ÇíìªSzôå(ŸoÌœÚÙØåÑ S#>Âhïš³zøBýÎ*vó{e•<³7Áþ;3njЉsBSxgþà%&9'ÝwÙ'üé|Ué_ ±'¢Ì;!²–¶(ÐXß)ØÔ(ZöRËòHýl!Ù„¿©9;×]>ÐÑ÷±žÐßÑÀ†4< Å„—ªÆâSè,[ê)‡åqaô?ǬкƒËÚçÚÚ”ÏæéÀº b o‚û¦ÅOoGO{°ÂÔúü°5ˆ-ñE¨ÃôÑ/{Ž u²PÇì“âó¬ ýwž%§ºº\î¾½´Ñ¹`ëÓ±RbÍ[C¾ï²¢«îfthr€Ijÿr@y„…íåà5cáŸÑ%íA«~ÏÞdk¿ÎSaŒ÷6x¼ð‡k<  = ARaÐÔSÃPé`Œ‘ ÓuL({ƒŠý½_59ÿÔ¦°Šøn¿õ‘Hð= ?Kj;;Õݘ—0qÖUn21j&cq‡î›ò5Ö°ÕùŽ=Ò´™ïxïç]«7D— 2º¬°´?êC˜:ã×'yœsò_nä„]¬³&ùrÔ‘êL–Øñ¢©ø˜ÍY¨2dUø:AUšÖXµ÷’ †•7e j¼QQ+:(Ô´ç\¡xØ„p›Æ“ UkÑxµÅBË&E»S{ŸáYºŸYM>{n]æ¯S¢d%ÃüÆÔóˆÊÔ">J½ m$X¹ß’"FnmµÜte0ïÙ X´å7åðý[߆ƒ7¥ìmdm¡Øiâ!‘â„|Â÷µ¬Žk’Ô ÈÛ³(UµEü*sûO_²º­¿~*) `!w"ë?“àt§ÓÔkÚèÒ%ÿùŒ#~ÂJêÖŽ¾;Ndö»¿1¢œ…O‹>ÅBbyC:ÈB<øÈ]‚Q4Iñ”n6w­ØåÉÊ·—-kÄ Á¦—µ5–7„‰ç¥Ih¾K`ï bפ?²ø4Ü}qûzy|¬LãèßaH6.£Óù#ƒùEŽ“Ì—¥ÏœޣÄzÞͤ\L_®>¦1ö%{üeÙi°?oá|åó\uµôÇ?t &WLʉþC5OJàHÀ(h%—…ðÎÒ±Ã$å±k7ôÔÔ;ὡW3¾ÚOh5è{ÞiƒüüÃyÑÈ¥øhA /ŽSHÛ阯ø;Å`н4Ÿß›h²›7X@ \öÕº‰Ë-Êo½‹Ÿ¿ž0$æGå`ù>ž€§A< _L"=“=T¥ýÓj‚(VÕOÝU`V+Ç>"!,8ê;¹¹¤È[W`nÓæ¾b»@6Лøyúu‹g÷ö¡ŽG|'"²‰R0X*}¡v$†¥f}¿rݮݿ—‡š2ù†ðú`Kd%‹¢-ˆl"Þî¼®ˆK@öZSÑl'dâߘP3$mU«ÿË®gˆÙüg50«Ùb KˆlñüH¯j¿OÁÅŒììáå¬ÛÅ•íwä¿>­`r\Àã°pÙ3(ÞZÏ·Jü4¹Í=ã¤n“´Ü$™ØñúX=>î“‘¿SœDÈ&ÊíóaçÙã‚MšQ¸-§8"ÖÿA›æƒã7}-l8a :9ýO tµ#O(j YD LܨÈ2¼ŸÒlõÙO‘ñS¶P;«-¨#-ñ–@—–ý(t(AýuƃÄMÄ£žb(&]DöO6´Íø ÷e.› Stl‰gf îÀúKUÌÏ?\°C8¹š‘ÀöŠÚ¨{E8Ç^V lïÌS–¯ÕHÖql¬åsRó\Ǿ öÉzÎkLð§Q1Ë4Íóæ!I*‡¥ÕÊX[—k\ËègÚô™†«4uZƒµÍR·Œ-˜3úèÅx¢<^2¡ßz˜þRzÖ{æ©qgÉi1õÅlÿÿ35y`ý-º‹ŸÃ{j~ îât@ówš«}ÿOd}ô9MÔÚîД‡¡®‰´ža˜C/H6*˜Î)û‚âž 0< ¢`-ZƒðüäS€U(µWÌ.|´«ÞŸnIÐ2ÂŒˆý•¼€¢OŽ3‰VËOÈá²–”턪ï|≨è¥MgÓ5œ${(£êpuÎç ZÕˆx1hJÍ3"™‚a{Ș†eSíuI•ë\ëMbò\Ç]Ï/ÉŒ‚Öc³¦Ÿ’ùoÅ«¥â­"ˆ,³ˆTwœ¸Ö ü7ªC÷"Ïá<Ö·§iŽC†>ÔzñtÁXi”<Œ«+à`ë—lÝ}Û[mGbî§oSŽ£û“„„¶`ù» 䑇ÙåÅu—Ö{noS(ºâöf,F+ò7ªýý…¸÷ö$ñÄSñ‘ &Hì{;ßaJj mzÖ[5‰–'†-ñ~Ä­¿›¹(ÍÍ~Iý¦†ôû¤–ªSh¨f…xó|`Ë‚¹ps«@åƒ0ËÀÍ¿w俉PE œ‰%¸gW¥¶5)Ÿ¤¬)>Tó¤’~Ä{¹ûO‘@·Õ÷Wâ÷´Ýo†ÌX0 SŠÎU€ì©“+íî¿Y¬=»sé×â3+Ë`•‰£ÿó„ä“é‡[U&›7 T˜(½ Ò䙇½ÆB¡ê¯ºÌÏŽJzŸZ‡…2——Çü((^\NýYmýËCCŽk`²e?kÂkÖ$«Ó‹ {µö¹b£é@{@©‘b÷Õ#ƒ¿e9PœW({pDó‘N‰Q&\cR]µŒ}"*+ôgøã®RìëuÙ 1+§ Fo”|Ôy*^O1]Ë×yñÚˆ7eÓa›3E¤}„·­Î÷ ˤúøÖýÝ¡úiY¢Jeöƒl—àŸ„éTX0e”ú8¤á£Zü脺ê¤ÝtÉz} žìlPÅÉYÓV-Ûd"’C0ÅæÏDK>/êÆVª1ƒ£ŽøOMÈ`e_`gÏÞ†ˆbû˜Y /Ÿnûá ‹n_"Ñ{ÿ®ÓŒ ôÐh¾„¬ýiÇp¾­x ýž}}½¦ŠIêT¦W™5?ó×8­ kž^¹”>G†}¯ôb'¿­‘<¹aËõMØóqß©ýó]Kת2ŽIš£2Ù"L1ÎL•)û·)»)¥÷T+;–ýÏÈ5u³r½I[`vûaÀè‰úš†.¯ž†ÏÂΖ©> 9#\ü}* 9çNÕêågf„ƒ¹Ü'N ZGë±Q8 Z¯¿L×Ê!+bUåÆ~NIáû€‘48TU8þ¤­Ra´6^ܵԷ»¼§™c2EœÉ©¦O1µ¬Pý.ìñX•´Z•”ÚAGÏÒ˜|èœËDžžOn–yׄ/)·òQÜWC²©[èWº¾Šè~‚™'g±É݃q.0Iˆes”X@C(Ì59Œ^%x3¤8ð× >ùl$WbÂìü†Ž FÀ¿ø \J9 Ï[f’DÚh–Ò»%Öú\±ðŸ/bÄxþßâe‚rRPìAˆÔâ±<ž†Ã3IãÈσ¤µR…{&ÑN òI¼¼a£è„TiÆœ6dÕ(ttúd½íï…SDŠÇ1“³ÄeR (—ŸbËë°h)–ØÅ)-• —˜#d¯†{ª³mœ¥¢y¼_#–褂¹ªvb~q<25¼±ûÕÛ÷Éëªî%¿P¦_ð"F)¸•s4þ¼&e9ð ¯^„%=œÉ¸¡rg@ò À"Íg0<ï±>žð(RH‘ô~¨ Ñh³ÚNm*ËtîþúÝwA Blþ/Ô¹¦QÖšô$금£ï¨h¥VØÁ%ï•c\Ç[ù?!a.êJV¬l°ˆy„ˆe•«´x‘gz4ˆ>n´zdœZC}Å¥Ü66Í ºcV}Ñ…a_¿WÖ‚¡(SЫ1¿xë*jGBÇÿæù”ÛAɵ­z3d$1~v— Ñ—9ѬÿYý©åâ8'éeÀÕ¨õƒ«I©#´6®þ#ðášœô”lOiûVZì1)Æ!tÂåg‰+µo^•33îsYéÚ„oRk´ç¡ôrJËáÏŽÁ¿¡ŒÉÝÆH#ÍÄŸ;¹ÕälÆôQ"œ(­û<\²‡b‚‚£ŽÙ®´Û'¤½f®Š€Ñº©…Èc&j“Ä´öáð[–õ –Ûõ³õFJ(ehmT¯ƒ¯‰æáÉà{ÌbÈ\çî®x…†ENÿq×ÅiWÀÚ\d­M=+ó‘|·uJÝŒµÒ8ç,¾ñŸÃH·‡hé²¹ÇÉØßõÉeiŽû46”9»”ŪÁ,÷†U­ÚFÕ”—‚d’§ûЧ¢ Wâ8³)A_¢õ#L™¿à›\5-=Tp‚½äYtïÝà‘ ¼VqÇ~eῺ¥WgâQï5Tçc}â„Þ«ó³mË/žN–o“NîÆU½]ñ„sG{|i.$+>ëP>ÛÚÑ©õî©ï[ðpû·pEG¥P¾¬Q˶Ÿúø‡Ã3Õœb à}ÛºúÞxõÏüO úõc²d‘Qm·ø} •›†¯uò:‡_殲óª½î½Oïµ%³Œþ´ÔÏÕYBg™Èž>øvæäØÆAØ‚9xõå[Kk¤!ïgšh²äd”ÚÉ7"kTZ¤+ãÍÄŠ{nÂùí+›•»Ÿû_‘Ø^åÍ6=ðÁã·¯6+¾¿kƒfþ®àW}¯ß ž|Ì_)|˜6ŸÚ¡XãÛ ƒzÓQf?}@ðàcÄ?K±ËŽ3"Ô1Äχ6°Äæ+˜×gú±|=Qõ…^¢éÍ1°lÈ"f¸Ìÿö{¶õtÄ ºÅ[#w £¹(²¯µò·„P'ðÿ6Éf*æ„èÆ÷}ÚEÔ; å1cÖÛ'À8ZáÛiû.&È·cÿáø[A¡¯Øó‘4ë8þV_’Ê÷Ý£gL÷l8å‘*)ã³Æ(wH: W°¢ØÒß²Nœm}ýÆ¡%ˆ²ý·œ\d ÙÌØ7FÞ„89!Þά¶_÷ü‚ó¯ó†úLïëÛŽpöþê”`u):#x¿«æÈ™ÅÉX½Bõý–Ãr†XµwRï–XòËOQ78E>eôMÕçÀ aò˜ï·%÷ JߤÃoj¢5ˆï7J lÝ´Õþr‘Iù}SÙi¯ZòâçJåŸ`F-ñ@žgÚÌùT[¢9~¿¥Qõ_û¹?ë¶@ƒåúÑÆÕú ÷¨¼½ Ñ¡»Á¨) Q䮎+È7$©!½4ŠM¾ìTˆ¨ƒÞZh—ûë!‘?OGž ¯Û_ðF—µ= ½J¾ ¹tï^ Å…Ú Ëw„ä> emù:¼WÞ™œÌ:®•ˆŸûÓÛ¿€Rœaü“qû'Ô,$kH±ÃM^¨êåëmX€Ð_qëßOÆBUÕïD—CÞQhÚ$E¿µ`™Š˜s\5»3ÀØ;@;¸‘M­ '~ðÓù]OD³|½gp?`צp´õ™ÝÇ0…µ’Ü"¹º±kiw¶8R3-ºæ—7;wFóI0Ï·‡°> î~u~Ý ÞnŒù,w C¿7úwý``Œž²Fð1ëŸêÊü³_ûŠò;C¯ÈR^>£•5=E1µÉ}{õîCø÷ ùw ¯¤ š‘ÝVì…³\ÁïrâY“Îxþ]¬ŽmFý^ŠSª®¬ï~yóOŽiànÂÉóç}¸¼ÄƒË~í?ˆȸþ2b_ýùþÒ$ÿöw„7íí¿oï”Pа :œêþBôæBoõGÊÁÍÛŸÿæ TÑ ¶'/[©»ÜÁ¾Øp•8뉬㻟hWî#Ë‹lèøM’6}€]ã ¢NàÅ`œT©µ,ƒïºüÙsª°À>·(_ztPBAý}gjÞ)gKOGÕ&ÓÐ?•h‚=·<®â#WW Š~?¦_Tbkå'Šš’'5˜ötÍcl<š¹P|ËfÏ8°ó‰Éó ÇXå@‰åEñNþçJEü&Pò$ekùùÁÄeMùrÄÝ×3È (yù‡I;©¦.±ST;؄֤Û_Dê³UuÉ,ËÉÍ““¤†4aÐìß$ÙyóêΗL»E²âöiw¿Ðç&÷Íãßüz«´"Óé\*ȉÊ;=?\¾Ïëæbiä¼òB.·Ûç}¼ñ²çý[c`@*±x»¯ÓhçÕk,íir“Þwú²¦ì,Í„übüð)åîœáD<¼Ž …¶R¼¹û"·/~õÏ´˜ßæ—ú›¤wÄÞl÷VÓ6²Ž E ~ü™I1ÒV`Ëq/ž-ì(‹s£õEì3ÆÖ}ò2ˈ·÷ç¨ÑúäÏÓàðx-û(X ­õ8Õr¶Ž#äÇöqšÊÛ±ÏéôÕt áz£ ½T‹m"%m®;úæ|¥"È|ìH¶exÂlŽ­« âR·µ—ïú°›;lC€Ï»´ksž~Lp*ˆ¯w* ÿw.Ã’ê8—DÒ$:W˜²48W¦.NVfêÚUe?Lä Ëuœr©ð8v©«p„×Õ”N™××µL54t#ÝšîMé¸5‡ºº‘>Ûëw¡<£Z%‰ñX‹a¾©ÖNã%1ÆÇŰ[""D±ñYúÉk÷”cy(rþ}êŽ#žá`_œ xÊ€ªèEBJN7¨ºÞÔ$y 2±ÍV7ûƒÿW {lIl†j-Ï›ÉNÒ7(ýx§:φ>¦|õ”¹^‹6VðûFž¿ô™ªR¨¦7µãÅ;Ó‹†e:5°`Þ[³6ô¹ÄTÏw[âPc?Ë;´$’þ«·ñ>•œÖž6ÄB\$Û€ÐùλwâšXoËbê>-¯0h»Kè½íñëëy¦±ŸËŠ(‰÷Fza˜¾ûõ=!›ûW/Cm›¡K‘¿1ÝW’ͼFaü‚âoÛûôp•äȆqÞ´õn=A|ÛÕéÖÛ¹_cœ,i2å¥èÌ[Y°Â™O¾VZÜç®T3­o½ê¹çùkr"‰Þ±,¶r‘ &Ï _Ù¤ß}Äéž}ùznOBLt¨G3O½7ýþF2iµÅÇÀ@Vr.mªà°xî&­öŠñÇHî÷™6š‰Œz?•¬!cäWkôn¯žÎ+|,"`–ã\4#¥njºªäîƒ|­,~fΈ‘H3ª |ɨ¾"2¾å=V€ K¢;šÈlíÄ z`¦à3ÞL¡¾f»ÅæaþÜáûñ݈Šëýµî0kš5£¬»µfzŨˆ(ù¾³¯í*!éü£ÞµÌ•RCó1”É[LäÈËoøm'#g¬òtiŠ©ŠÜAŸè-DnÚ"?rÖèý–Hâï¡% !³©Pô×cë(bõÛÉÚ‡Yk<[€ß܉(Vã}¼rý]£\¿'±5:wMH3 Û?ù~òÓÔ-Ò~ê‚üÖ[ër9Á-›(>JðÙ%Pú'j¡Bë¾UÉà|«eb°M`Mþ¶€ eéí¥ƒí$QpGɾ :6‚¸‚ {ÉŠ?âß(V+³›mõåT2Qü=øœ©W“± áFÌ«­±³JÈ}†ŸÝ 8â¢®ÈØ…2Ö¦cþ{úCÀß~¹Wä- b7õ:t„&ê¡Ù™öý·",þáhpÑH;+ßµûÑ)dgG¯s|sÌ«ÝPãc=Š •¨ñ,lá¨ÉÎE>~fóº}³Fš0ÑÊÂRÔ" ]ÝÒìt¬Þ4nXЮ†læþ<ô¡¡)®ûÎø?ð ?6ÚÝ´ «VWuÒñ¾†à­Eê"H¨Q:µ(6ÐâÕÆíYÿÚ¬Vó·‘p«·è.ùÀ¯ÅØô7 ¯!ïè(ëWP™•²Ìä?n_—ë­ÏG&—pœHʉs”¦J“˜º_l£Ö8Mç7·k÷o“ç½Ï'€Få4óÿÄ‹™3 @ŒS°Ç]Â?\L6‹ñú¬ìPo;›å·áÌïÀpj{%ŜÑŒ µ•hP¢.‡(þa{sFánŽ4±7G•iž#¾•Û¼Ï)gŒºoa趺Þa @ÝËS‚ z;,Ä?ìÈëbÞÞÊãn@5Óá)‰=YO®DåîÚb¾Ùx£»É)œÝ¹9Ű;ÂìpDjèu7 …‹ ˜-€ñ >†§9’$Ó-ùMt`›&¨·Ÿ[—± ÛFŽ ,!:ø;X4ŠÂ€ÿÈDôÉ6£?É3þªËÄ”»QcŠ#t&”adH: #‰]TÇ…³W üÎS<€¸'yR.î±æóF ‡Öä|Úž'£=¸±Ê‡O½ãm‰“2yc‰µ‚©Da2þ=)d¹Ê`ÿ”9þÀqE‡Ûv)„΂~­tc$ʦ¸]ìÅ2Í0³(ŽÂz;Çäßþg1þ1˜»ku‘©¶À‰Ï‹ú½=¹Ï½9èiêå4íyéÖ8¸-&§Š£çŸƒlcxåiÒЩlÂ1’{ŒJ{TP4¸™¸F”È õö… Õ(!öÓ¢ïavȶ áUQñÿüS 9T5Ò1×Xb4Že2:ºº{%Å1r˜GÌÏפüÖ%²¼NOÛ£=ç¡„ 'ÎXnú¤üïD¨âL«]}I¼Ié•^Ê›xƒ0ágÿþ8ѧwa#s· VÔUd ‚¾ËœÍ”¯3Ü×g«Q£¹±È!«òVôÞ!$ù>è1!»œ›‹B¤36Ýu[§Zó E¡k´RŽ@¢Þ4 q }TZ()\­Äš@ƒÊÓ×p”Â}ÕÈô  D#H/‰ÝMuP|qp?&ÑFãs 8¥Ù¶A]ON‡¹劇‰bd‡ KñRH7ûzø~ðêëX).àÑ. Rñä†ôœ;K£Hš¡“óŽ^Ga Ÿ¢›rt>(.C™ÖÿR\Š…¾ôÑãò°,rYPÐODåOΓÁóäç+ˆ 1,@W´¹?â_ãtäA½ØOǦ„qs<œp*|¿'ÿsÀö)\!Ëó4@P•ê=†M»YScð ¼î£Äe@r#r¬»ˆVTe«Ùÿ„\\B¶HÞ×ù¢¹5òÌ mYôkḶdŽ — FLHO ‚§r€G\ D,$t¶óHŠÏ †BضMáƒÏæxžðÉ»d¸–o>œãuzéôÖ€cTô%ÂUÏTrt„Àéó,^0| Û! Að^€hETx™½å¢ÔäWüB©Hú£ÏçK#àgÍUëÕ¹qõ×]¥´›¿cD»ÅÃLÛ'lÒàÄ·Ñ¡šYËÓIcÕú?ïɃŒÿY€à¢"÷“Ém{i²SdU(š@LìôôÛ@ úP`À±`XÛó2ò!Ò$šžÿ&@\¾ìúQ€ ¿’ɰضwŸ5‹d ¨¦4+¶ÙŸˆá² ý¢ê§„É"vŽý Ö¬Ã;/]ùg7*]1Xs·¾½¾ë¨LûeÙØÐvLüçß5lÞê`pà²G‰\íé9ž”Ã<5òwDËÊB(òîµÈ?N€‹°]{¹bœþ¿IVŒÿ32î²Û€Ï‡E¨¼9™m-c|A”Ø€+žà!épñê` ÊÓ8G–Úmt§ºú7ì±J4jáÁØkt²sðÜ›}a[Âr…ƒÑ¸~ÁÏó˜÷}Bý§š6?¦D©J…ÀÙaëlÏQ¨ a„7„'Ùõ|œ<ÂÜ–DyX¶zÄ !­ääóê§YÁt~M´i›Ö;þÔƒPã5?ÁÚÀÞ®á]úÜ]À3yN Ðå³þBùÛÑy7„ô™9¸ÅSåú<°ZŒ­ÿ·ØqŸ3Ù¸wOÅ×l̇ƒBœµ†Qz[´V 1º* „a|ì„›mpå•Sz]ØóÞ…ê–ìñ) èâü„°ùÖ;£Ï÷âË‚ å?S²·½c‘#鵉·‡ÏC¤v>»ËíkV8ÃÚÝ?zw¡D¸•ôÎ<Η÷ñJrû/Í4g˜'—âß1¶¤Ëäù ·a™§ý–ÉájT f±cÚ´Bt±pY «çµwtNüê­­e›CKMŲ#;´Þɦ™šGÆÊ,?Ñ>v† tñ '¯*§Ã ]ðk‘5éÞŽÚ-a CÜõ± £eFh7T›!=‘ö†]>žÈŠëƒ0—LvÇ'+¹¾ÁìYÐa‹s>¥C:.—,ÕØøŸA®A½VΪÚÙb±éF7$/`,8z` ¤LOsï(›M#&´6sµ7ŒkÂ}“p»¦œñÞ>G36“'÷ùÓ(s¬`¯e Õ—ÛÇ•2D—Ç•gºE­ì“T°ÀmråZŸ·õ${÷ OÛ(‡…ØÍUú¸J—PŸ?Û•Àt˜B˜]¼Dr>U=&5?Áš4 \Ø2åP+2ž ‰Æ6%xXb+¨°÷i†ßDácíÜpÞ@-tz™rQw‚uhAB?}ÞŸ s>#IG¶ ‡aD´¸B*u›W©S•Ÿ ´åCûzA4±…¶¸Ó7z*¤ÉWrùÂS,¨ôÊ©Ä>BŠv=åÕT+÷KYÁñ¥‡ôz†÷3 ƳâÇÒV](¦k¨-'èhlüÞ2dL‘~=f‚>ñöÄv¦Jk-‡JŠÎ >vCaâÃ!ÿüÎ6„háÚ6ep_ùFtŸk&áV1U„öû}Ž‘ú ¢ñüîàâgm˜·Ÿk…N0M p¸Ï»T"—ËFé-!ýiyÙ@5ÌÝ÷`ļ`Xöª® ¹Œ!œ¼Kàâ¾ÿ7óÃ%^±rmrªzÓ48/® Õ_™ Ý›NºèKØ#uÛµX‘µ¦ÅÞSb!Ú ¾^ÕÎì¹ZÃ5|u.Îz Õø‹üRzØŸX±yoÌDG tD‡®ó„i5Èá«ò‘ùFÿIš±wÙ¤qÒäZ ®¬)^¿žx+¬ ˜*ºâÖ,¬†t#Ò‰$*ldÙÅMñÓ™rU´le™ÎSñE>µÏ@ m4 ªÖmðÓÑ4æÔŸ ƒºÖ›YL=2\[êJ&,íX?ÙÁå-¶½ -ýå¥9‰­j/œ…Ùš-lݪz‘—HäÄTëË϶и¶·ßšD@mìN¹›´_¾g,¶ˆ ^L´}ibjdt¿jÝAÂÄA$ïÙ0:ÞìDóU­ÐÂuûwñXdç÷m›P6õ `^žÐ3¤õ×T…èoßÑòÆlPŠ$‹F7U=ªNµ‘QöædÑJÚM›î<¡ß6ÏžØãïŠ,¯zHÄ2˜Ùeês{®™$ K󃡻v8ÑÝã[B{U›<]·W†FI¬“U 6äwwd„?»›¶á1ìaœÂW`;Ñýþ¸G r8©Ê¥ 4ŸtɪË9kë¶cìJ¶vàï©ÀTòdDRã$ÁŒÝWZaE¢X·yÙ #X¦s‡&úH‰Í=%ü~1Ðß/(ÑÝâ¦M†¯1ÀÛõéáJwºXˆ^RSöŒ&¥X6@RI*#™ˆ¶^ ~»­ó[Ê/û;\PÿÎ{¿´D~·³ð¾b1í¤ŽÐv@Â>¬vâpßX×Њ!êo÷þÕH˜ïy£ &d:Úh¶%Â@n¹öZt¼?Ø62¹ù„à‘ŸƒÉ»²;ûzÁ:ñÆa»¥þ¸ãa¬¢:ÎÝ¿œ„J´A™ÈŸSPケ…â%Š·œ¢…:ä³ 1mÛÐqCŸ„¢Ú› <l„/Deý¤" ÖÊ…C}¿?5@)þZ‘VÁ©oz6š=“¤:ï¶ú½®‘¸{ Á“à øuêoÕ=ö®0"¦D½bœêÙSÖ²€æ"”¨\cxà,©!éé–üs¦ p›ò$¿?tKžÞ[-¾I“­©™Ô°gm]ç]L˜Û½ªh㮂 º¸ñvéˆég4 ÷*™ln$TðÅ ¢n#Oˆ¦M½#1ídáÛDúL„ùï‡kûå”5в5² a(­•K]bFËwŠ=Í—@ûoè§EÏ2?Q{=à¾pï_–Î9“ÔV@Ü ”0•¯q|.à®æ=ôÀ­rfãžûmeõìïS³Ù”ôßLyPÕÒ9﹇ ™%Í_IÎw›’77«¿4{hƒÏ' ó67¯<|Ô··Ì€_jS: ·˜L.4ÇuËá)ÄéeÒȨé=#ø¼ÙßP ‰å Åb¡šBÎðÝ)cCœžÉÛ, È(¹@] øœ°ÚÞV/ëzdÊ“L&ª,ÛgǺPÅS†""Õ°•­˜&‹§/sWéñ d®/ß`¸Ý™5¼§5æÉI9¡üŒ5iøebþÎ`®G÷‰ö¶I®D̾{² PB®¶äx®¬~bðÁ)çÎz É¢j½èƒ& P|gÿD$ÈL(|§8>ߢîÀOE°$ÿïFÛ‡wáÐc€4ª°ÇJî2$?@0–T‚ ­ï ¶òñ¼ fXà\kgÖ æÕÑnU*5ä@JÁóŸrzƒÇ%¸1y…>…иƒ7Üh&¯pRH¦üG…3ÇÒNúÒþ …6tOÆ|RÃŽÜfÄ? j}€§ÏKó¥¨þÜÜÍÛ®gNݵ!æZh¹†Vl]MÞÑŸþÆ»tí4x eÙŠí]cfÝÝquµc|º£0!{öN“>É]ÐÿëlZàaÀB^Vízå¬5BÕ÷³.wÄäcJ}ª–þÁ4ï7j é¢q[v¾"-ùQDÒ;"+° ¿^•2‚„­^voŸ'óΘ÷@S)ŽÔ¶¬Õpßeï ššúYw, `$Ja) †l}4&ð<Éœ¯ä _ˆï|Ãl|G¼ó` •v ³îÏÍ3ðÜg‹ƒOm·ƒôë9è~‰liÉãê?U:rbßNü{@C$º2_Û–s) \—O€Ér«Å2u Ë;Âc®>;¢vç«¿äj&þ{¶SyÌòo'*¢;Lpþ¼ª]ÚéA=¿¹šûŒÀ/¦%o(óP¿¾dÿåé ©eɽr=?‰ÏlŸŸôN>ýÂ’ *ñÌ$¹îûøï,LòÄ–¨BjsÿùB@5ÈD÷žtÿDÍEák¤u Ôí"4lwÅÒù6Ý’´rR¼>òôᇇ¥”„Þ Z®ÞÌeØ Ò‹Lá ûìï–¶$Õlm|®÷Jÿ«25>´Å°pøŸÅþr’1—&8K ¸PL na†õo9´ï0 Lèó[~ÚÁÈ…ËL†sîPz©¨ùó+[UKLž\…Wê9±>«K‘ÍÙÃ?ùð≎©+³SûÖrôa†¡˜Á¹Ï÷!̶vîú·ÿüßî-ˆ'#™øjix7íî½OooÿØfx®‚w êI¡rÛé–’,Ú{™ëþÜdñ ò‚ªÒÛûgYXP¨zý"ÂBºláHÂÅïLLø&÷¡ 1ÙïÒO?ÝÈ©üá„D$dä”Ô´ôŒÔGL$·É'»3—,À+zçî]ž:nm]B4нøüRïQåDZ‰%WwìÒzE5iÃPmá I$ä•sò ˆØî<',ãâ}•YßuW•<4Ç'&-µ½¶ÿOÑÏî¹ýyNÉô#ÜæÝEËÅï¿i,‚kÒé¸*§üD¡“yt&”ôJ°Í0½’„þß“÷ŸÑ Ðh¡¢h›N%%‚Æq¥=y‰¸zÅ Ü7&„Kú„«n•Û8>Å[w'DÅÅ1ðbÊGPÍuö­¼3øU±E åô6 ¼×ÆÎ—ŽÞ›ÊuÚücQµä€¡mýÉ:ê™× o’ "ÝÈ!ÿcI,ú¥ñÀIÒA)M/!Y‚íV²ÓYìÓ °CmôdƦ(ÊWáGkIXþŒõD“Þ#º=.eDg­Ð@ÐG÷¤oÁð dïÑ;ºÖãd@èÊ0Dde·Ñ‰Ùk+ëERb¼Ä¡!ã³9BÎúZ…<³¢Ä%Ì9—šïï vo8¤dN2²H$G,ÍûµíN.ù–—@ÃÛ•ÿбúòM¤¿F¢?9A•’¼ÂlSÐ*Lj|ìp=Jï<'âVQ„UXeàH}¾Q7é“©`”wªp µ-N–¡ý@ÍHä¿4‹=q¬S§½G?¹ÆŸîó’¡ñ'öGô5@Üß1Ê=ŽÄbo2“;sɧúÔnšõz(Ñz]¿ù¦=â}"׊ ÑX:CìÔ]j@þô7@ÞªÎæî]ãS~kàÁ÷¦íß»Æ)¤uÀ¢Ç/Üþx¢°!ð°U¥Ôe‚ü͘E¿-ÝYáð〈Î&˜kfë’:ñ -RÏÇ€nÃlÓι'I˜m]YëhϳUÎŽ€|¿\>úvŠÈÖŸlß©\g9¸Aúº0ز»Ýö tCmm•=‡ˆ°ðzòO¯Á[•Ú’[o´‰ âŸ0_5Lê= c"Qÿ•iÞÅ·‡Ro¹ˆ$¸óPE E‹ðž]Šìá$±€!gë j–‚ÝL#©CjŸSúDÝ{÷{&ªÔûL¬Mfdÿsšªü౬]S’h}î¼»"ž•'£ a4@ #Ïý†úRâ Ë3ãÉgJþq@” #ZË¿¶ê,΄së^7XN„äyö«þÚùX × üê¥ÿã7yk¿ÇÀÅ‹WIHuK×Rîùö#ñÞÉfbÐùåÅôÉ$‡ Ý­¢Ê;5ƒÙO‹·µ0[‘ –[$¤¯M0 "^KÛˆ•æ'˜Ï1r+é2æ´«dE>‘$´Rà-¶SÚ[‚œ€Zg RP+B§RqÜH¬W-e‹E¥.ñ[ 56|u‘‚•ÛH\sJ~5è… ¯›àc2~ƒî‘3" º"Ä>þ‚3'zÖàƒÂ¶ˆ´©Ø-“çÎÉhÿŒÎñú‚Aã±Ï«'Š4Mþmò‹yrT'ÊÛŽøïÀšø6òNàes€‰-c󜾓ú^YØí¯¼ÎÜ4‰“iB±¡¯§Ûxc9õíÖ«È °eR#øˆ‘Õ*²‚MÜ€8ú6ÚÖ—Ay’p¥n!g#+¶Å¤¿>K :…„쨗2Ùëhß7 ¼þ xÎ~IÍ/Fà(ÿÖ|‡N:厎-P´ƒ5Õí;Á¿lçå&™A]K`Ò.B%üH“ ÇèõŇZ¨p›2Ìu LÍëå±ÄÙb Óëµ)v}œb1@¥OG¢ÒB®âÖ\0>Ea¯au”«ª’Y$¯l >“'›èï9€T ó‘OÙyÀ…DŽLÛ×® ¥?ôj¦Žß áAú˜{¢{ïc©­\*jå<ô ˜¶ £Ï‹©A$@‘<~mSÀ-Á‚<Söç¦N\»‡&ˆ7@â÷ëÞµ­—OÕÞ2ŽÃØBŠáp8¯Þ"Íyd3ï×}‹P^Ìl»WfXºÎíƒK¯3,®[çó7‘ñè$Y)¢Ÿ6,±÷ÛêÚÍñPfWV•±î eˆµÚ¾QF¢D Ÿе Ë×øIõ,HcȪ7Ót7j5ÔYY¯VS«¢ò›˜Çºz§ž|ø6k ¢ÊŽì¥Û3®Wé̃ GÃ5|/:w’pXµÚ: ú1.&}–°ÝÓš@ð!M'Ë=~ ù6¬ÐxIaé¸Í —¡àc°„8­¿ÍòØp‚±§{ÚºcÁd%ü¶ ½”á{Û`L/~ЈøUÇ‚ÑXÀ­(Ö°ÌÈºÇø×KÒ¡8)jÔØˆœS–…×°Éß®Íä¾ÒÞº×G÷‡2„Z’ÌZ2R¬a¿›`Çîå¸S`Ò.)w­¨»&å@z·I¶ž®½¯)QÞqïñ[ÏmÑuJæà¿ÆÝÖ›çåîtF‡˜tFç)òT@**þòú„Ö’8|¾÷5ÞÇׯæ±U^5m<±lÖ=“~VõõY_òæÛ'Ñ•\ù·Ê4±¾yÓRÝÊ9b° îO€Y>=!ût«^HhLU¾š¼ìXˆ¦i{ J€¾¿-ʃ‡`—¾t‚NWza›÷H[ëÇ´èM%ô†¿¾8^ØJÀ®reäiË™èÇ”¯,|¸¢J ÄFÇÀñEœÊùέùÖ‡ úNlné‘ÄtœV÷lô;ú®Åµõ¨Þ7ƒ)µ 'é zdpû³´ktn ÌÜ¿ñì{„ñj>Œc|‡åOZ6œ‰»ÔCâIp‡Û†‘ú\RÖ”~O±µç^ºT¹žÁiö™‘þÓ¯ç”É9X›Dà¦ÑëÜ¡;÷ "ú5ý "- dÚ˜±o@ú_ç{_Ü£†x!pgoÉ(„Lt‹X<ˆž Zn=”ôEB#‚¸ ^Ôÿ8¶24¸2O; ž¾²ÚÜAw¢´w^µ"$ùôtìÌq`Øö[í‘nÓN׋!pž»Æ©jY"2½“€ ‘ô ƒ‡6@lNm jWÐÿ¿ñR—lD0ƒZ·9ÑoãÇr&Êí´)!kÕçÉŠQÒ¶ÿ$[óéÐ ÏŠyâêF˜‰¶!1Ÿú$Ä‘ìò“3ý)„”™íøáðÓgéÚcÞJ¤š:wk’׈ÓÌš|f@úÉFHÎ|ë ªñtǦ†pl¦HH'™&¢ëÂRŠ(ƒ3¨‚Æ4±?ônň±PzTпVo uîò!!@C¦mo´àèsèÞÞæ-¦ o¦—ˆ$ðñô ÍœIgÐQÛ}׳›c:ŸYÙA¼ß]KÄ@Àb„XÏC[«‘HÁè/J¦8ø¹ÜVTB J…g0^‰ñHb~± ¹¿o#‰ð&ÚZ ß]HÞÐ$±ÿD1}P4Xvžbû𡎨s®¶6„>»à~ük9­£Øcà ’˜ÍˆâSÝ­·ÁOþ´‰èt…Lò±:2ý½ @Ã8¬T „N“µ4v’O˜‰«PúJµe°·z%F;êÓøòT©_Ÿf´…Ë?ã»ø“¶ðI1:™[_º<_òE²CpÝŸ38ë@ŠjDÂ~Ÿ‘rS wpdóßR!¦ ŸœñŸO9`V˜* Ó)r¶v6Ôû Ÿ‹sqJ;‘|:€Ä&h¾¢@¥!&.¤ü€™[b0jm;“ýÞW¯lÏi|ºþ5®g?¡5¾`¤Øè9“"áË&Ò2!§Fÿl`A,Éôw£XÉüowñP£1qêf1fÜc¶»{Ð5¿&Ò&!rèÝ~K[™¬h(€Õ­€.·¨ HzÍþ'êm+¦T †1¸ëâ Ú±q}_²[&ø–‰2µét¾¥~[^$®¯³%xpJþõs5²q¹îÌä A°þ…7M³‡sÖˆd¼Ù*ŸPnšƒ!l}÷ñ–o=‰ä³¸ý)Ò9/£tj¼9_°4•i€÷ór±¡¯´ÍKÂïšñËFféyºC‘;o—YIëÑYr¯aWJt;h~xªÐCÙ(ëGvÂ|˜ï«ÙÐæNåèF\õþ1#¢“lØèb5¬°êòZ«V\J²˜ãqö:Ð-)íc6ý¯Ìd¶ÔWÎ!Ëw3¹£±?ƒÑ`àú[ªŒ÷ j¶ ÙW ôî0ÈQ`wöD­¾n¥æð®‰4ý=ujaé-çR¬ûh„V=7X ëöy¢´eŸ³uÁʲ23/݉Ü+Dû|¿à艜û“!ˆü))†å倨¶ªxqÔûù5ùþÞö›ñU;¯jõpÈ´j4}Ä>ÉA#q`$iyö—ü|½}üò¨KÑ:+©ù[ ߣ›M$Ð÷–ù²~ÕWÚµ‚ÛŒ¥ëiY\¯ømrwãº-I¿‹]µxЉö@6ýE«¶LÂL!©9€ƒ'@7Õþl®nÊØØ~'DÎÉ.ÁåÙmõ³AÚ§Ã.ÅXeÎ@©Oÿ¶ª)uQS1¼&™m˜Z¸‹JÈÙÏH/Ðs!íçb Ï;o÷HÊR ÁtþêiPꄯ©W@(Dé ² ˜ÞËÜO}ê9¹š.&·€‰úu0õû‰Å~tXèc¶ÝK `È?¬V‚‘º7øàÐ ,íÊ¥èmœ(îiPRp/§»å3mšè¸ BüªdŽ]jKD0›ÒÓ•®"ŽD"Óºý¶’$F"{ò“Ôi™à˜„d|ùðsz ©_N ØØ¿ ˜Ÿ^1ÊW$ÐC“Dz`G:Âóµ//‚ÒÄz“¤*’Œù}éY[é “–iOù—LÊéL³däVWµ•Ó¤‚³~ÿbT¼½ï<ö L²n‘$°µ”D²¨ò™´DRÙnƒÂÎd ‚sÏò²‰3xò8”ã·Ûò˜Í°Ú¤i«1ÚgÊ™aÙ™ifD…ë´…·Û¹Ãk±42"íº]r[ÂÁ ëše¿H*z5Ÿä‡Ål¯ò‚¯hà!)Kë¬/¯²>Üç«ôË6Êfk*åaË{‘OŸÏŒ *¶•º€7$0nÂk}—³;””Á¾]6¶®€< €ŽY¾ˆMþ%§<+à¦jn[©ŠÉßàïÏõ)Zé¿·UZ°…Š;…˜ÅÇ –3Œå#Ío¼>fHfØF øÔ|ðó°ƒ*†@¼ûk?`TC`Þ•DV$⚌NOsó9ëò¼=ºê×ê)o·Kú¨Ð7šêÁrÛ—SÆmŠ µ.|•«ý²! µ2øÊû‡$¦öPßI¾Ã~njÜøí2Wô—ÿ§ÄË’®ñ" ‘±˜>|]éRùÔên± T«Ñ` Ö¨UÚa2r4çÍïÚ;Rñy(ñ:Ó¼Nž¤fmÇ;´jqÌ™{€m"c¬¨ ÔÞ+j“°‚oVª[±„Òìf®xózkHônZpUSD<£g|È!˜ÅÍö—ÎQEÚµY¿‰p›] ÞDòÕ}t®Á?¬¼z¶’E’·ÖuÑ—Y*¤¶rŠÀ§äЩ»ÈŒbµÍ®ògm÷nqµŒñÿV;ÊÐÃ1üø¨ <¡MvNBæØ¶‹ë †3ÔÆTóç‡@æ†ÅoFÿŸs¥ÍnÌ` ½/W pM6óÃ:#@äĸ—õÝÙeÚ7? y©U*i»3Ÿž¦å­~‘ƒ*Õ÷š0lŒ}¦ªÙÌdß×làõòÛ1 ÈxÉK¼`tkB:ä¥ó þÌw5ß"Àïz†Ï^]Ó,¡+V…Æj/Êpþ2Tmx^„~+ô q¨(ÿò·M(‚w?¾ hüÍÔÁ(ËÌEb§hz-7˪˜Óp96I·Èq‡€aÙB€ùg‡Œ®€ŸVs×|÷tþ‘}æÛzÊ,SAØ­äXÞõ˜yÉäçõe“ÑÙ<_ù¡4ˬBÖüzȪBþˆ$kS!ôCѨ¸i 8u<8uÕ"Cµ¹ú§ºä/*ØPXL†´¼ÌBçè’›."JÍ69\¬»–OÐcF3Q³|oC‹ÉqWï…6| óßef9 Ûœ·$2•½Fã5ÿb¦ÿ2'H›èˆ<ø»’—brmRž¸gÉ©ZLÅîoúþÇ¿e?\róHæKõ"GÙ¿ŸEâbjŠ_„IFÞóò}Ó‡4EÂC 6×W‘áûJž¡æºÔÏî°‡â^CÛ;µÖ†‚#’˜ÃŽZÓª4A_BüK•Ž«ÃYoå™}üˆâG©&"ëzÂ]e!éÏÙä úóë½ç°rYbÅ×ÃÊ?">†“O9"ð=_j˜ÓÎýjw€JcsUÐìõ?¹27¡¦ØéæÑµø6ïÁ+`COHAÑ#Ñ6¼‚z…ñµÛºu& òBÀˆtb+P:OÖOâO¼¤WÛ ÃvëyÛ½ðÃÀë:rÇ×èb¶MN#Ý ,ô'Ò}ÑKU#âUPèI›·4¨W¯w–ï¤"ýc~Íx#€Ÿês‡4wäÂc¨=íý `aÚÆ‚jÉÚ[êmOFjcŒGœ5ÃÄlÝ}£V„¡ÂÀï{Š¢kU€è‹7â×,3#ŸŒJ<ƒHîó^/ô–]¹aÂh{Ïø™WÛ;ôuFEq®ŽÒ$ jA¥LƽÍÁþv˜¾+Á%Kš^k´ãkæ]ùD…wr´¹—ÓL’6^×~(íÝgÃ]v?­Eþ0Q%*®¦æI^4GLN›ñÒAdn2€'´Ææß9Øæí±hï—>ÿس·Šk£u <Ó=s_Ò§P-ß+ô“Yxé$ä¥=Eꔄ1yiˆP]›7¾+uDâ_ÄxF¥">8?ŽZx´»Ÿð©ÝY=žfóefE!9Vìnbœº¯dáv‰®Gã•áºÃ§³ …-zeIuChÐï*åÇT«ÇÇdè’[•ìZõ =ƒ@IàŽ°Ù#5~‹«áˆ@Ç.Rcè±'Îu1Þ8§©pÒÉÒ)Dä/ÕR6êb}2oÈ¢|•ùÏ&Â`¹° ¤­¼˜oCĈ$”Õm{zÈÆ3Ù~c’9wsÅXŒ¿bƒÅT"ðöÝ$àx΋C.°+ÒW÷I1ôý† oggGJ¢Î£¢¨böç=Ä|º&b¥Û {äžÄOôÞ°×ó°ÜDÄáåáÓHze+ïëÇ÷÷Þ‚B^F“ÆT{âšþ'YxW©ín{ŸŒDŸKKØÁèÚ×âd"ئ>œÈ†àó%7lS4_i¨‹6›oÙv™“Î7ÎL·‘GÛ>ZÌÀV®Ÿš}{{©ê¾Æýæøè¡-FÁ%Ìh¦ˆ½-Íí_> ü5*Dz8÷PKY’kùpN]‹xƒäF¥;|îèíJжv®¾j80a¢ L¥É#¶4*MK÷Ú&W(l¨)Væq3 ·"†œÍ¥®ÃŒ«6µ¨Ž'?€2½¯®/YHgT¹›:Óä·E°)>†²""¼‹AÜHˆ°°·õàBÌÆ+•·ânfê¶+âI)Ø7çö>šIòÓµGDÏ €fDãà4\4S11BßV”¸ýY ¯@ÿJ({§‘#”È öüH¸‚vªßBv(C‰± ô-irÌõ8šüáÖ7X¹žÄó#E®òÒƒ9 Ð±¸÷ˆÊ—æ«Ü¶¯X éÓí,Y }?ÆÀJgÎ|ú—Õi>$^@³HHcµEÛ_n§=LÙf¬Úžü³qu¸îÜ;F,Ú>²Ðäîþ-gVÄÀ;gß ñÅið_[túÉ2bö‹B³’=©;˜«ë`ÿ…Ï'ñÅîÄöðìÚaÅ>§ÀœxÐÖ¶,öÝj´#þzaØ~»þ“`x’À¤Ž~«"8Ø)¶C1¤Ý¶Ï·L²˜>©Oײó ž¯ª3€3m_sbáØé‘á§¶•î>˜ã>„ÀÖIéö?Áö]?pÁß-,ª û|mc6 ÷øNEËkÖ_U‘ÂJ ÉÀtT(WÉ"ðŽR»÷>j$îv_¢xÂïáRwuþé…–8 ]9t§8—ðŸu§8˜Þ:è[Ũw•Ý“wP8v04Ža¿qðyŠD>16†õ¢MQð?1]A9q& +eœU¦®\,ÎXM«jw1ÀÅcÏ22Ó+´ÚÇ  Îܳz!UZícÇe=U-䌇:lYO™Y¾Ý{¸¯ìÄòÐ×ÜêbÏvtkÞx€ç¡Ø·oQÖdádæ’ß׊œ~¤Äíôõõ­L™8úÄ<õ¬ÑçÆ³‡ï»c‹’÷mX0÷J÷<°–-ަ¹»nì–°ùÏîp.¨M¥‡§kbçÊcxPµK+ÒɸÛÑ„§dÒÑ׸”ïàWQí¨ÂC.n`f\ëSªó°–ÒëâyÀ‡ ãQ[Ù{zàþ£Wz@w\ö¤¥ÖÇï÷ê€n_Ãàí‡ÕAXÓ÷Ëýp_ËCæÊçÿ¶¼y\ŽÞ ¼#\XS$CLòATî–¯N]}W­ƒo€:<á;eæë÷Ê<<‘·Ç£Uè\y•~^S—!…]:%mÐ|ïuH.ÜHÞ¯I §O=®ÃsÕÞºÅ8¥Ë¿O§9šSæÍä>£Ž2c—£4ê²^çÃòk³7,ÀkÕ9¹L1ŽÕ¹¦n±uyoéóù2ê ¾0Ö¹5óu»Ä¼ry0^_üÖ%åˆå_éþQ©£YÙÍQ¸A—ðGáZN‘ ÇòVP°ÄhÔWˆ‚%*•ø‰´¥ï8X¹¾æs©Y¤È p=᪱Št-%Ád¥ò× cRJÆ0Ø®&þ‹YçƒüÄSߺžÌÖm|hØÙÕÀ~iø²\[úÏu…H&u;ñJXÜ&D]+„ní\ª”òßÖê ls9¦=<ÑRÆ6x6Âu0°÷Ÿzv¨Á†˜œÔ“3"(@¬ª[°ãÀ 2Súòá[°Vã F9 ¶þØM– ÓàÚ8dü fŠ?'9ý^'0À~úSê??ÌKé&KfPã”EG#âa“ÐŒ~µ§»ØC<´øä ÷0§®¶]²¬S+‘p‡¦éWЦOÈõUÔìFÕˆkéÛŶæÆ9š'!Móàç VÕà|÷„®µPÀOÞCUßýÿ#v>]¦á—ž®Ô€ŽÌ„ÖÀŽ]ÎBë4À»p¡p®%R@NÿlÊJè½üºùmìéæŽÐC~ Œjëö ² é_³—8¦Q§9F èáýY¾8é¦[]ÝB€³Óî÷é—Vš/\¿¸ì¸SFº2)zrŽÁßî¤îCB„Žë PÌÞ«£=OÌôH‹¼…T‡¯@[ó {=LspÃÛ vÁ­ñȯ°çª³ð[¤H³#ðX­µLÿ+Øôk°Î”×íGÈÑ¥>àrÊj¼Hl-FŠ|Õç.Pþzó¥fúŸ·m{±•1ñµ›šÙb#\žýòϪÚ›xZ]ʆÁm ƒ\!þx([7¿_Ãü’÷Á<æÄ|ewBxÃ5CE±ÐÇ;:Jø*3,L²í‘ÖH€!˜ï},ÄŽugj"Js‡Ì‹”ˆ>·b'¸ kºã¡txt‹-›>˜ˆ¨ý×C 9$šÁçóÇ2ÿ7ö¾®ÉõíÿÙFŽH ê4#$q„ 8LÆ6`:¶± Ì‚-a`ƒ(`vT¬#*z°1±Ž‚ÝüŸÚ!Æï¼‡ßûÙç#.ž»®û¾¿WÜ×}]ñ=Ê4Q4TÂ*eèÐãu /åÉ@¡Ê-‹«„EºO,¿ÈÎ`á.¹p@ÑŠ¢=£ÙWçܦ@@Þl¾šU(PðFÍ.:¹@Ž¢x“:Ç*xîúüpÑ}E€PbÛ_ÀýÄŠ¤Wb-m\á/Æ«‰¯, SƒÈâ>¶…@VyÿUå¥8J?7{Ëgöž3í Ž5@ä ûZÂ2C…ÚQòJsñ{šl^zì£è’Ê߾ƪðŒ_ÕBȳuQ…™jáüÚY/=È긛×Úð[ã­#Ò‡,™; žàrÖaC/7Õ€™¯Ï¦5”ÕôaŸ_ûìà¶f‚ »·Ÿ¢1Ž›^xí¥rzŠYE*Y)"K~hlyùÍpºpÄ´7#Bßo|Ó„~ ßøå ý×¼ñ/ŽÜöfäná¨ÃoFU ξ ¸, ¼ñ&ð¾0èÙ› ×Âџߌ&ˆ¨*o©½Dc ߎ1[¾ v…¸½ ñ…Žz";áíXºhÜ´·ã¢°oÃÒDá ߆çŠ"Ö¼(ßövünÑ„Ão'T‰&ž};ñ²hÒ·“î‹&?{;ùµhÊç·S äH•w‘½h†ïh¦ Q–ï¢ènïèÞ ŒQï! Ì ï˜ô„èiï¢ 13öí‘ÃýFÕÿÍ/iü6‹ÃüŸ ÿðƒøvvvŽíó¿:9öÄøã?TÇ+Vpð±X\QQÑÔÔD"‘ÐxüñǰaÃ"##Aœ3gǃæJ¥–––feeihh ùbшS¦L¹sçN¿~ý¸\î®]»F½téÒQ£F566Þ¸qãõë×û÷ïß¶mN «ªªš1cFnnnff&Ô›_M(Ûiü+4þ<&8þÃŠÖøåê© ®dëÎz¶N~QîO4þCcš1^¢{“òÀRT|ã—ãÁ©)(Æ"ñ|ÆrrŽ”6O‘„Óà,œ¿fíº¹Šš€…ºI~ýy’Úl@3§¤¬|½¢šŠQ!a·?D”SQ+=râd ü¾ã«OìU9^}þò‚‚úsuAŠê‡nÜ]{ZîÎá{t…EÄâÇ/˜x¢ñÒË(ù àú»/#ð‹p¾µtÅ…³w¾š’È´‚TÅ>‡ªNQó}I¸=‡“¶ç/PÐuÕz¥ÜßVi‰ÓjŸÐŽ`9T'–`]ŒÓðК™K•kÁ˜1оÁ 0–µÏ0¥n8¯$H¹5F÷•¶ZšýãqŽSˆó7>t—OY¬ Œsø{Õ^‹ÞÄ2‹ê :g©“)\Ó1>{|\ZrT ñÉÖ¼E8—QOFW»¿!ÎÐíãþ†­×ͦ+Í_Ý_›`UàæóæNÝèÃÐIÕ…©×P4\KókvYk¸ Òg­y÷tYPøîûê6 ^psÛ•¤œ-£OlO91s/áò;õ†ò%«³›ÎA§ï+B”x‹qÔݳàÊEIÖ×_ N^˘0()VëÝ`—…WÍñ]&\ãÿgßVÊ}‡øhÖë'Pu‚å5ƒpÙ‘_òož@Ëžç·Ò;?Ynø‹ƒ„‚Uœ‹ï '­*$©<°!¼ãÑnŠ”¬º·ÎÊ…$6T=Ú‹’³xhÑR;Ñø1IÃêä&<‰<0dmå“ùù¹Ä‹„býÚGN+žÅª ’ÅY [}Aº{Ü©çËésê´#µWZoÕ>«.ß1&`Ôøˆs81é"e¡BÒøU³ærlú;3MŸÁù¸5Óí-V=:ZeµÁ›=ª¥çJKYX^Æ îòç_ϵÖ|ú‰>Ò%ƒóöá‘ËkÚzÉ/ 9³ù”û¾å…î!¹^¤”QñZ•–È"›¯lJ)U6ôÚ»ì1zxöÜÃVÄã*4Ò¶Í^äõƒÉ_ë÷-è§;±¢BA) ôx­Ï.1oH®ðT°p×za`Ô8j N{غyøæUoB.Ë1ò+¼ô¬ßÕûŒ.­”7ð©R>g0ÝʧаÖ/˜ØáŠÎä0Ê»Û3{MJQÐÊ35Ö/Ns'-¸’§µ;Œ'¦ÜYä‰×18ÓüÕO‹í½UnU.<.¯ºsúC¥HÎ4}£Dꀯ:a-ç´õ<7á·ìzáöp‡-uG2±zZ­øñzJM’ÃÒ-Y•þí*¯å¾ÒHŒÿBò™dçnQàò悎jø.‡½x”8‡}E»ÒH‘kç5ö¦ï¿ýìý…÷ Z”°”TŸôû•ÑÚY¥ë¬ÀZC½¿·ª)­ièâ¤.8oÃû«›Äó5)òƒÝÒï}h ÎÒ¸[?—ò2½`ÆZÁÉw䩇NGY¨—, šåï»$°z䟳ˆ±KçL‹ˆ²Ë%ÕWÁ†ùJ Sˆæ$ŸÕ[#ß}Èp¹šã:`äÅ9†µbùqò*3§†ª®Ì'ù¤ãë ôÃ}tò×—V)µˆqU©rZ§ä4µj)/¯®<9 zÁâгÇñ“ç)1¬iÚ—4py޹¸Sr#/’òS†M¥ä^¹ (,.Ñ7Å{ØSý‡ÈÇ"xEãK=ï~"e’cGŠvXÿ•ˆë«s7ë˜;>“á%ŽÎ{¤Ñ nqïŸôMGwŸ4À:r[ðô-I¯WÝÕ_®š“Þol~90Kl9³|ŽêTùê-‡ˆ~‘æ¥^š†£C{8mâr¬`ù¹W'îF.µ ÄÛ z;Æ®¿†[6y~àèÊšàŠzn1îå‹,ʰÏA:ÚuÓj®Z=Ü´¿ ˆOhÒµ¡À‹!-𥔖3[ÆôKxSømfŒ¦–…Iÿç1ÑNý½ r5Ê6Z£¬åò׿͋é·3¿P:E±÷“C‚•§(Y8 s]-Ú[÷ŽPÔ®PŸ2Ooìé¦`GñÑmÛ*tŽÆ7ó<8ã5 9>ÊâJbïZâÌ´·ë”lÉyÏY:>‰[ñêïÿÆŸ0AÞgÑõâWyÜs¡Ño-¨çž<š—¢”^±¨Š¦ž£Žšì¥¸·—ÿv" T”>=I¼e±0üOKråºÏN#ÜßRô£Î-¨ÛP’ªsaZjÝÎÂú]' cšzW¬Ü‘yÿÈõkUIN¶EŸ¯¦ÜŠÐÀ×Ühyä½ÔÔ1Y5cBjlâÔì—¡g¬öi‰®œÚÓW#ðì„ ‡Ûb 'yΊ×|SÒx_¬h–¹¦„›-ž¦Yï.^NLz—Ьt|üôƒÍ7wâ*˜}ÖË-£_Ÿ¶8F¢_4ÿ}â…°¸;ȶ€ààb0¬b“öîm4-€2áΘŠË³•KOäiܘëòb×SýH³åù3¬¦ø½‰&=Óp~^¶t¶À?¡ätÞÇž ˜»4°Ú¸ÁðŒù_,óÏÂRMÕ¤'gWžÜ—§¼õOžKZMCË,§¸ž tR>\¸7÷¬ï„¡×Å>röÉów©×TâÝkV~ ð÷â[´•l½uöÚËeþ£\ÿzuˆ{÷üÞ§³ãŽ}Õúƒ?éÂà¾9'}Õç½;÷ìk5o’ïãËú ƒ$PèëçzGuÊÜêm/rL‹×Ê÷M¾Å²vWË÷{rÒS F)‰O[ߦ.×·‰²Ÿ°þÓ•Îã«–‰šË†ªŒšgrÀKÿ:eþT¥‹+ÇÉGýµíe䔣“ÿô0:Ü{®™¶ùd¹‘•®šÃÒðCš>7¨L-ù{¯À°^ýúÙ( µ¬ð± Þ™#ý<‰n×S ÃÞ~=Ãó¶²É¡§Nýú,Äf]áKCÂÖ*EBIƒÞœD·­wçŒôTâ„Î~qJqB¤3=¾w@ª´á-JYCÞÄÌ9–6çj`²wöŒ˜d ʹûÊe¨ö<@S)ÅH¿2]Þ@o”•Ú‡—úWqÊ•ÝsSåw8ªí¶ŸÙ 4*ÎâǾÚ/Tnð¡úàÌ“púï}ÃÄñÊY©Ã¼SœöáìO™3ˆH7Ã[$ÿ^SžË›J•W­wœÐdL6…)þ¹©Ôöºâx*G=r UÈóNKk×Õ˜áŸæ2 ©IþÑ ùó™òÏtƒKÕ&Ÿ™fNzáþ¹.NƒêqIÂ!–õ¾AIñ3µÓT³œ¾ø0`yÅ<ØnC–bc#`ûØwzïF¥”P¿¤=1‰{†ÐCÓ[¼ŽþJ)«Nh¼ÞcSfØ0#аH)?T‚›¥ø´ÎWC)…òÚ';“~ÄÔ©¾×¸åi «œS먋†7õ:fœÚèF.Ý?sV]ê¥Ë¾J~ªdœ>àFJ>›׿8T™äu’²Ä튂wž:gïÚ{7¿y@p±yÐl©¦KÕqœ’¿}®WA•F|Ü£¼è-$á°tú§Ì°¯i™#‡úcDÊj¥”€ßKÇh+§è~ô±;·ŒË*o˜EXÕ'äŸ5ÃY6,~ZxUàZ²<èÏPÜÐqAîr4õs•ɹ„¬“¤°ë)*&«lö¼uÖ­ÈìUJ›AâÉ-:uÎkQåûç' Ï]ºí>S+GuVK|2À¦,- zŒN­C®ÒòÛW'> á­-|ä¦G¢eMu|å(±Öu)r–Vä2ŸË|¹ýòKŠ=½§E…° ô´@ö‚ã~#Ž^z“rMûa!ÃÕÉ4×à|%àÍyxC‘ÿJ3§Þ§¾Æ/;l VPoÐ&OÛê0¢.3…ñš[TL7=,Í;æ=éî %þ$ÜíÜíXWÅGké!A…ïW®;9IP¬‰uð8hÀ#…ÊS–yÓGÝ÷aÞów,:¤Ï[eI]zöƒVÑGu¹Èu‰Yë¢x´)…k·å$ÏzøfÝð* …x(ŒžGš8W)·öåIœáÒ'"ÿ¯ÑsŠt’•Iãn.ÇUå.ØÛo? —ó¨`Á:}—¤ñŽ}ÈCõj¹†µ†eQ¤Ò¹±ÔyùÀ_ crç ­ciEÒW×LR®èUàò—òáã~ÍWÏpW<7¥Ï•µÞ †NÕXrZù\p²/øt]¢ôWæµ­E[/«ßð€ ½Û5Þ?àuÑ·4zò'ÖþáÏÁ»´©ž›ŒDþƒGzºáó""Ô‡ôuÝ\NÊ1½¶æB²üÂëÃoÕ²8 –ìŠ ½³6UÿU¸%|¼ëºñþZY9g4¼Eª9,M•†Í ›ƒÈg£ MOÌøR|>õ•Ô⼑N„åc|r–1þÄ'¬6 ÷W»|]uïê.›=ôk·é6•¬y°ãôøÄ]Ĥƒ4Á°í3\åÔK·üqg‹Óޤ÷â¹¾qñÌ}oàÎR­>¤f0Hº·e9ÝŸ¹ 7ýƒÏÈúm«m[vÙ˸ÒN9~G]¾»Ök99ÒŽ«!»Æùè{·müäý›wǯ«¶<>”á4’6ìuÙ_!ÃGˆW†,é•aqm~ù{×ádÃõÕšèÎeÀ廿¾æ®Ç{«˜¼+µT©Øà3ê¶f n5iS¯¾ Æ¥£'8R´müž‘&‘I§wFLp|ð ²ÅÀq¯r¶ù¤kÊwǨ®Ù½ÇqU`©©Ü‚•ÓT‡ãÎÙ7+¼, cµÇøÝ}͉¾5û­Ä)ÆR†lMœ¡:A4z!îEáºtùïòÉzô6Ü›sIX²àF¯uÆZfÙcJL7º\¥2I›WZPNéåà ¼zZ¾, ç|ÈO4a¬×]¢eŠÖά^ʵ¸û‡üµ¶âOêŽÿãR¯©‡µ&nR©½¸gŒKŠQ‚c`17ÈŠPØØ»—µÜàõz¿1Ên—Ä3—ù.Ò¹ÕûNßèå_¶¾×´|?ûbÛÑþ´ûix–ýìF¯-—<¦”­8«BšÖ묥¶×TçCe:ÊuÆ>U'°{µrŽêÅW|[]1!Eëà3u\Âp7§R‘E+©Ë÷üvÉ–EÛrªvo€qßÏ×5Lتý¿èø”í«dŸÈ?>&¥ÿ®²»IU¬ìÄÙ;ÊHE,œñ2•J÷/æ8£^÷îþ¡e\½–RÍIÑzýÙ¸éFÿQì^>cNšwÍ'¾Zvbµg™¯‘BÙuýŠŠ“Öþ‘^z´8ûdñ]͈#?O3âÍì­ðÇm·Þc¶é«±b £ “UÝ-Œ}îV§W½cVj¥j1tl×e™i¬¬¬QxRcŒ7Œžf”»]ÎŬ¨=n驽Õl¯ÁZ]»S~GVû‘ÏhÙÏÛvN“ªškhòÄ›wbm{Ìê‡ÜõÙ†ª¡kéœÛrúlü¹³Á‹Î- ±µ&?øóˆÜ°‚Côµëh ®<ðª¢29ÅûCÝù€äh¥™YvêÁsGî' ž‘S¹ìu×|itþÖ"“–•¹:Sþ”Ç© Ø« Ö¾5ºàݤ(¹kß©…µÎÙ~;yµs©@/úUµ‹%‘j6ƪ§ÆmwËu1ØqñD©Ra­ç‡#rSÅý«N÷ÿ{W¯û '¢µ¹Ñ I¥ Þ)<þ|IoŒÎ¾÷žK¨ò±gç‹ñô–Fæç/ßà‰«¼ê}µoixÿÇ ·ÿ¤ý—ÍáþX~ÆþKv¶lßÎþkï8¸Çþû/ÚW+€G—ØÙóæ¯¿½®o®Ÿ4 hi)µmTK‹kb"ô~äã@ôÁ©7oÏž½­™ ¼} ÔoZ¾=iiYY\ Ü¿”Þ*e±€º:àëK`âDÆ¥Õ€—0iϤÌÌUgŸýöÈ?×o÷DàÅ àf)pö,°ðì†w ß¾B•Ÿ:|xq z·õÆÖВЗ__îÞ \»öx«P] T>ª\±¼è(8|ÿpKË›µ—×^yy‡>¶|¬ý»öᇇ¢ ÑŠÚ_¿}Ý 4×––¾Ÿ>Ç“  eý™õöí7`úô!»Bî‚~u}w˜[3·¦æÊËËö·÷¯.ª/:¸¿ºàjÁíòIsNÌiùüýÑëý 'Ÿ<>> ]Ÿ~zz> øô©åÚvë–-¼àëkïYäyâñ‰Í@sÓû–5yyý––Ïהּî¾û–µ}åî Á/ë®æÉ/¿ ®¬ÆŒ^\þà)Ô7Å;O^4~†Û¾»5<€b‹xNküá9îCä䆪öY¶,Îz]äâ¼UÃlˆ|á唇>!+–èÜwK‘˜pß”2ÀÎ7aýàb·J`À)\û…6¦©ñ˜6ìùÅ4Ò ›†š"¿ÆúL'•æeáOqÄk½7¼®¬X²¡±ö+˜ùÅeÈ¥¢‹Gý›J|¢´`BñÕÞtvܹìí›OñzÛ\h©÷öÆ݉ÃêR4ÎÚŇΖ{ú×ä9ëĸ®®:©”ÒÎD05³fx ºPÓÞ3Ýh§oŸ¹é7¨é+¦¯ðÊ4Ûé¼6©©¹Â'¡P•èÏÛ[˜x÷è 51ORG¨Ï7ãÝϺX\È ÖšÕµh,Xë÷ wø#³zåiæV›PµV Zfé$“íàð¾_²çúD„W¦V ƒ»$•,p²ÆL–ÜJËyM ýÅŸÐYf ­° u.®°1z¶wzö9ŸÕ¸”œèRÏÞuÍwƒœK®žVuðq"Ȉôémû±¢0÷ÅÊõ€ôTùÀEYvÂý2œ²ŠÕu9ôlyá4ý$­¹ñ—¼·¯c'=#Øûð¦ kG~^Wö¡‰§°1SH±ThÓTA¨ 2œ¤ëÄ.ÅϾ¬™È°&Úè­˜¯´Š©OË[ØOIó ‘6ãå­ôikÃÌMµn®ÙuìÓØg«Ñ ½¦A·ù—"ZÌF§–âªU÷O;ØÇ¤v§\ÁÊK“ /=Z·)wž.†6±rd¾œœ™G“ qvhiš~fÓ…Gå§Ó„™¤‰bOW©7òæß¢ÌÑιÝ’jwøì?ñÈ[£%`E‹*)ÞHÄç¿tO?ùú…/ÀÖ÷bÚNí¥¹­*ßGÏ) ¤èá(šÊ Š»žSÔæ–R 2|Áê3Ù¢™¡í ,O÷jè#—@šëEN™q¨Á`ö§¹î_'Q‡ê7}娸/ç ½XJæ·««Ê4ûsß×åÎuô‰‹ÙPñè¡¢OÝ ¼›0[Ž*¾_’9ìyàHQ“·é}, ¥keĆLдX–ßWIÄy/¢Ê­®=¨@'|6Wé(!ÕQ¼2àÏÈ[ÿfsæB³#b"O¯À*+_`ªDÑR ‘§–4†õ ܪ»ï¦]£hpÁ`P±éÍ1-SÜx€éÁ geÊm87ZO‹ |û:Fþƒ9Îê²C*þyEŽæ%“ªž·g80âp½ñÎã'•äÀEµž•·Ná<Šñ“C/¨ây^JC=Ö…×ÓW¸œœ)çô¸VO©il0,*Ò¬ãW­'njvs UÈa¤{'œ[qs{ÆŽ¦é¢á%x\ž§ÐL¬øˆTü?hvo^ Þe7Ų&òÔÒHÏ=âeÁÛ‚ô¬CJ8‡Ÿ«.oÿÑh@`ØðüŠº&jÐãµe«å{§*E^{çk °&ƒœ ^TÒ4¥ýÙ²‘ 8÷Êí“%  E¢¼¬hÀ/&)oŒÝiÂx©QÚâåûõKÅe?‹»Úáý†^½¾Ï¹×®yo‚%׌µ¶ÒqõÑã.Ð\´H½¼Ô*ä¯*¦½ýXPBܨ¾uKèK}‡ÕÁ³,«–QÒ‡ÓèSûdPfïüôÝ^Å»î\«TŸ„›h®º`¾=O¹Z}|QÙœ’ÑCž¸¦4fßž )8·ú•>rËnÔAn;F?®Ý¹#t°ÞT ’Á!_¹>s©ÊxRhZªÓíÀ{a£Hc‡m"=ò°}£^£È”–Ƥ}¤[&&<-¨¸}N1mEe>Óš;ûUõ­aIÎ}f׈“Œ}&¿<·Ï+°&¥Â+FñÕ‰Ñan×?o¬ "M[2?=[‡×¯×Ð&‰Uoé®[ÿP¡}rœ»wFô]§„Íúvé ÉçmÿŠåãKú‰?ážço®“¢uó\ã'ü>ÁÍÓ]ª_*}t›»—«i}x”‘øÓfÍ*­ðT¢;9¦^ Îz ìÙÀ°¤¯~ƒ§²[l<Á9ëÌ„¿#×ÌùÀôØÙbdl|ß%£ö´¥$ãƒÏœöΨM5(šÛ§®bå­MFõãò«î)â“ÀgW'.ô¿á5ý˜Ãßõ z«žóFÓ՛ߕhEý©é£®á˜AÕ3çMUO¡ÈÉÕ­,L ㊟ø¸j¯…]÷eøÛ?—>ªÅ¿:Îh)g{žÒÑ Ê7)„ž=±~±Ju´ÂÍŽy£=šn§N[åø òRãXçý©’V[‰.e¬ÐS’ÇEnYšß¸¼WÊç[jwT¦ƒ€ÑÈ–”cûÅHÛ±A¤S"Þ{´þ¤WÍßåω½Å~àßF× ýQź9Õé†ß-ÜJåþ±æÇ&’†*ÌÓëθe€¶ãPEæí[ßúmTªáýý,Q%’ʽ™‰C„ŸÞ½xœ?£±÷˃G\Õ h¡½i.}3†&¨_ã¿”[@9¡Ç¤ÈéâU¨ÍejJ//ÒG.žŠýÊZÇS¢3Ôfg ] >wr¥QýÄSNÞÜ_©o,ÈÌÒÍ? ´8›à\<€sGÙxÔÁ—5n~>¬›ßŒâߤ4o·Ú3tÐÿS™÷IÓCÿX¬Ô¢2øöµÜ=c‹ –g¨³R¬xQ† HvhÜ63FLÊðö2OÅ¿\ΙX=|ï@öõÓ×™2ò*iö1$yãq%©Þ÷ä/¾¿ì5lÅL©`LÿÚYäÇ-ŠÎ ÁØ…‘8㘉Ë€i/z)8åÏYw?v-`Ÿ©qüÑäH¹‘õv*$Ò_®”<Ïpµ'ñ*Un~yiG^…„sŠ$ä(90³fo “Ÿ‡¹{QæH:§¦ÙÑIŠ:òÄ!½4FËY{æËµú,×2×l I^=O±ZøœGþTglVŠ·ä|`ÐI³A*¥øUI³™3ä†<Îã}|À¡ØŒ•£Õâgsëç-öÛ£25£EcÂÛÅ/)R©IÕÈ /9R(—”§@˜õz¡zJåx/‡±Kyñ>Ö«X‹—Ú›ýÅW-&W=ˆŸu¹œ`®–™­×u9pËZr…BØœ¦¾(6›5Vy¾úÌõ1J9Îåž×s5(µÙ‘órFãÙãIº@ÿ+d_ò|?í¬‘x§'~®«Lô·d+Ñp6æjž[ro;i pUûš·ìCJöÆeZÖ®j+-/¿ê9xLîeñrÍý„yúÚæju—ϦNgÜoÊåAó—3õ²Çxª€‹¾bqÑbN¡e©}ÅÞ½9¼1¤i§•ÔV-+*Â…˜ëO÷Ïʧ¶dûÏ:ÁÌ ôUn~Ó2õ'±k:6bï)‡%g-9© N6"ˆÕ)ÛèFL8:´¢É;“óÒ›²…"¤€ö…§`]¡§œæ§˜}UÑ$ƒböºFéQ¸œ¾Áªã,¥!µøpªÉüÒÑd—n r¦×Î'ÎryñJLsnÞGyÚüu5‘ø>$ÕØHõ£®“òñÊ‘‰½Å”‰7›1ä•kÀ5 /ÉçE¬EYöÚ•è^‹ßq0²ëºLRihQQD‰à`_× 41ÍKÙ¤`\+ot½ ïõ‚iƒY‰1 Ñ¥r}Kå_™47v¹)¼DrïB»OòS(rvYy«µÔK ݯzLí“ÒcÝùŸ´ÿè4N “Çò“ÿì@?ðÿsprhoÿq´';÷Øþ=ûî9ðÈ R©hæ§9sæ ^} eÆ S¦LA}ûúõëwçÎ¥K—¢žššš***Äb1‰DÊÏÏßµk4Ÿ ÖÖÖFFFòx¼†††3f ùŸ._¾\\\|ôèÑììl{{ûñãÇß¾}ûÍ›7òòòk×®5jÔ“'O<==QÁòòòýû÷×ÔÔddd0™Ì°°°¾}ûÒéôÌÌÌÆÆF}}ýªªªÜÜ\___SSÓmÛ¶ÅÄÄI –_SHŽ7/ÿø™ Ü@ˆ•ò«]r-ÆòôªV4K¹îÓbÜcû•SoÊJÅá‡nYÐçÆù§©*½ëã'ÝW¯ Ö«EÛ¨ÁwßÎ[rJJúMµûvM­ (y’®ì¤–ï½öoñ›]÷Où˜…‡“Å/îžÍ°”Ë ì\o>1œìfK*Û*þPQì¥b:=Z lk¼zàáð¼‰ã÷½<»ÇõΟα¶6Òaî½Ú¥žµà¦W¯ž­”·*“½Óg KMÆÑ/wäÕ–?'_l–ÇŸ;;l"P™®þ÷kËê¬c-U× JWÏþD‹LÁÏýZ FnúæÏþ¢VÚžh6¤ÝŽ‹RµüÆá4šŒ2ª“É•„É%÷Bñ¤¬Êéý¿mÆá ÓÁ£Ž³Js¾Æ2FR"L.ÉY†ïŠ9ÊYŠ‹4ƒ™ª ¬b>úqæMÅ•2î½ÃGøW›©ÚáâÐ ÿsr³ly¾(æÌÅ/Ä=r«“¯; 5u\ˆ!Q;Õ`÷Wc³Esl¯Á;éš*Wï6y0ÿ4õÒŽå¸R°8üÈéÅ„‰” RàÐÌZyTMþå”÷ÁdÍT>}=«|ÐØW‹n,–W°k ¨z õxb‚ µ2ü\sPy¸ÐPÇåñ2­CÔŒëÃCåòK†ùâõïåòìRf­e+@Ç+0äÕ¥83ñzÒ«âÀI‡ŽûËËù´¼5Wµ©JÙ®;vsèÇBÇIWÜOïñÕ · ¸LÏž¼G7î«¿ò‘ë!Zydã|KÀ\>½”Ãüª8‚îƒs_0w‡ŽqhÐ[ݰå±»ÀÒ…Ê~ùa°ÜbÁÖ1ü³¥„ô\½Ú{¡ñB{‡ãcw vlŸô,ç¯3S#7ÏY>2ä`ó9Åá‘Û3™µ‡Ä_Þ´§àyNb£+9¥¥Qήϖâ¾äP€†;¡¤5U¹“81‹å•˜)Ÿ¯—mÒ=`¦?jÿ¼¿Î+åiXaQrC#ýî¾e§)©.¸R,¿íÄòÊpÊ@¹‡öË~£ˆûܾ¹àÄ!×›7‡Q)SÎ.a–¼Ùû²%ôЀ[έ0ÄçU¤]¯÷nzõåàu©Ÿqwï-ˆ´RKh¢l.¸Æ™øa£7c©¢×‘1eoð™¯}v[®±éC5ýɉ!+'¬TpïfPÒ$Ì>¾bQž¡GPYøÄ¬¨cS¹ûËåyêsÉÃkû×ýAi.µ›K9H/ÏpGÙ¿øx¤yîCþëËÀ÷ëŽ÷qîqÀΑüsj_œ’¶…$³Ó^Y1l_Ýññ/žÇ%ˆÿÊó+þrúÉŸîéwœ\ÊCÌífýe¥«ð8"jþ ß?ÇÏ7TzóþσvÔŒ¿Ô¯÷áúg#V[zÎlÖÎåw›¦x<óé›Mײ×~QÌ ½>ÆÒÂP>·nsfÁzÝÞ³5çm˜ºuƒÅÅ‚ˆWù@å¦"ßI§0γÊÓÊÜo¢÷fýý¦ÍÓª‹žfËÂrbçú¯Xe9¦ åd†N™æµZ“ 9ZÓ‡ÈY7áI[­@ÒÌé‰û¦3ØdÑ<3$žàÔ@ÜÙZ设$g/;²|’m¾ô)ѨO¹[į‡/Í¿8'g|ñ «ŠmGŸm)º§SgIa¶MÛK‰›Xû×íX5ýá|CïO-kÌ5E!v„ú§Ds`;ÙH_|£a{ãj‚åÅä¢|E‹esYY•rŸjXñv–öÞ±ÐÁ¾…Xª¿zûôŒÌœ•[v”ÔºâÄV˜Qª½ èõl•îÊB¹Õñ'îâV'®Ü6P-xL)`YZ3O£iÁŽnfÙá»®›.zd°3Í@ôÜOWg¹¥ƒKµ”·•FÑòkiÀ×§þêaÙÀEü`ñsò6ír—¬r…&Àu‚W¾rQBöÆÆ8¿³GQ.â#w* NqðVuÔ&CR¦²ÿ7Å=×pÿP<`n<ÏK÷pù„¬£kõ³çÜÁ?ûÛ<=\ôYÍî2ór†b顃´§ÖLñìðÒ#·(41S'>¼#§>#7äîäúχß*~8Xwý£ƒY)¸HÃ’à»a[šLÊÍGU½<· r°Ô}4㘡ð¨MѱgÓèçomYhZiYqÉÜå(¯ÈÞ_Çî-XTTfØ[{ÕÊZ‡u†îÔY‹5LŽmµÐ}D>öÜgÔì͇Oùëü½Ð¸É­øª÷öR^Ë3u#¢†oþ|ÙÖOÛò×÷««:ŸÝT5k8 jIß;êØó ãÜ+ÎN­½D ä«£š‡’V„.ä(?ïs1ýÄÞ¢›Ö„âÈë>YêÔ: 0zWJM´×Ún&·‰ì2r\¨]¸¯.vå†;¥C ºQnï.·›IåóO|šnà2¶&(¸úFíÁq kúÑÔ¼¡©W´æ¯Ý&¸·¶æ­›ËÁdûI–fEÂQ9îÛõ4}hÛû9dÌš}3";}”\uѶ›;N†Ÿ‰îU[ô©Ïý’·–¸?Íð °hZX™wß°:`$¡yнríõ*~nËÈⲋRئS-šW®GÉ-§½:2÷Äžðæü€;sŸky»ø—p5ÕÕÅe>©ÇÿÜñ|Ý‘ü“ ,±/¼ðœü¼ß§í>_ŒÔ¬­ž•ŠkHqÖ“"çNÙh1gEí”/Kâ§úöÛvþL¼Å7îÙŸiÉ0 §‡üé[>ìð´¾s-ynx²ðäë…¯“Fßœáß«]èxvXÙP•ÚógS+ÎE}àb´÷…Ó.g„YY-êSà owTÍøÉ¢oÛ/±¢€âçu9ã.†?:Èá0IÏíës5àD­\.ÕåÁ_G㡆_쇔x—Š<‹M/¼öœôà*ÅîÊäÝ.áæíýÆë£w‹RbèÐÙ}´u¨V|zß°^Î#÷ï^H1_WŸ \;bùÕˆÙÓ½>¸6c¥jþæ#ËhSÿv¶×ž±x¨Ž^ºµõʱžÏeû‡Í+>æ»COÏÎíßÒ놋×õ³¦×ïO×Ùè})Ó]«ìêVX·z¨R_Êåõ³LUCìÑü +-#i×™³%Sç­éõ—+Å œ«ÕD¯£¬.Gª  ÜËW9uÏvŸZü%À¯dóø8§iÇû?Ûa¯Öø¤Y5䜼}ÏR‡w‡šhQš¯r«Þ^ØtçüóÊàí‡ ÖiïŽ7ðC/ž,FlrÔþSI—‹Ûit·öžõäk-›ðZ¬îÓï :¦¤°ûÞè]M•ë$»„ûó+l¦ËÝv{q\“`B˵ñº­4Ÿ?²t#ÐvCèä‡ãf? _ÿpü±‡o? óPóÍŠpùA§Ôpßt)öØ#öíGœox}ùÂÉ }Õ÷Þl³¤oE࣬ÈGÎçm×Íz0v¾ÅUO³Y/ç,Y|2õfz_Cuz¿ù;ûäÍ~’·þÉêcOÖÞ~²þÛ“üoOrƒžø4àvUX.ùö8¦Ær-.oÓ1¥º2÷­}ïáÜåAËŸµÛ£ŸmðuÖ³´¬þºGŸ½¨rUõù†R\.î^õ7;Ok–(‘²pž·žÿ1¦_¯Úëo+÷·”\åôžpïÙɪú<®âùù%}·¹¼("ÿíx©¿p—ªâÕç¢:7äü‹ ‘&ISMÏß ª‹¬p˜´ñåiä»8V;äû<fD5ýirŽnªRËP·íÇ iÒº ªÄýËâëÁUj¿øYçS^öé§¡ÉÃ#Л‡ÆÛW;h6ð]WöJÙ7òpωW)}õ6¾ž—ƒ»’òÂÜNmúk?åÒê3ÍõÜ7je8€l>ÒVûR¾ÊÈCjûV»áx¸Ú ·5$Ü”ÊõÍCß8hFô; îõΉö.|iŸ[—4.×¾“×yçªñÞEçwçí_6Õמ½„@ŒÝûw354¸vÐÈon³P1c÷öÞ­7ÿ‚.©©·åÃ…d`M6îúäÎwßÇ7Û.4’i8_ܧ¬ø©´;I&¶1Ùº[§LÕõqµÀê9}¬³õb›?î~©·}N¥ P9f¢L¾¯ ⎵|þ4·+Ðì|†Ø±fâ ²>ëgºz5Ý®¸g¨J¶S¯UÑÍÇi7<½¶Ôذ§)÷®ðÔnYÝéå­þ(’Ô»÷qý7_¼’¾¦––‚‚ž——nÑ"%B–ÆâE*ó½2zkik’|d ¶[¶nÛ¾cç®Ò²òÝù†šû÷÷IO?p`ϕǫÊSþ­ó.äü‡.°âìÈdøÓ¿îÿk7ØÞ®}üûžøÿÎËÝ/40Àƒèˤ1<Ü…,!›éÁ‹³gE»Û¢ŸÜm‘߈Dw¯Ñ> —¯÷è€ÑÁCMG /¨¨'ä8|¨ ZÌ*àéáî=<(tx0ò«_ððCM56…Î噡Yi&ÞØG¸ØöQW{äS䃙$4ñËëì9Wô9¸uÞTl¡ü¯“GíÈvسS‘ŽŒ‘,MK†ÞhX´D°ŒÅuºÂk¸x§€ýKõQ,Ÿ Ï“ÿ3Xía:‚ÉhA-)jhp4>¤âˆ„<‘Ðj<4“–¡AÃï8ìdPkA÷ã€q4ŽþdÎgB´âÄ@T¢sãx\KÈìÀCa–U)`B<Ú¬èhˆƒB¼£Ýƒ›_×'ÐñÀlô§É€‘Q)dÙÕÿb*À 'üY" JRî2Bˆ tØ€>˜®Õ~£OLã—z=ÿ£þÀ³Ä†´sTlúõ.ýß“ldù¿C÷ðgGÇŽú_ÿïFþ±Çß`ÿSý·¹{®+öïˆ>›È„^ÈäGÓèÌŸ‘jÀB@0Þ×B¾ˆŽYjX\Ä"é€Ü( $Ü/HP ?£Å¡é\¶{ ©—‚H·ƒ Pi|¨!,0xýÛÖß9Ì}g¡ N. a²™0µcY:–ƒA–ÆãA|UÈ%"jv+ílÀPD¾â1ùÐïüÖ “êèVÐÌA¬«J˱Dø1Ä7P]ùG‹‚\ñi©­â8@G958Éç£ùÌx“COÆ„„ÛÇA܈Åc³ 1 *Våã¸\¨Mˆw¡B}„êÇ,Dô;<(Hri|æ¢ûؘþ‹…º2% ’=ج8–£šìotH à0;ù!–µÛé/ˆ]T2H{Ì"øãY´æµ.›_0ØÒؼXȆ„ˆÐòC» &²8 n¢ &ZIëiŒ©T£e[ ŠÍV£%b¦Có͇¯5¡³Õ*©À„F¬¾˜Üâ Kð¦PˆÕ×ú›•lÝ’ƒIx?ÒÐ÷Ò©‘Ìo§u’m;þRµ~è1Št2;ضþÑAŒå2~e·ÁÍ£…á åQ»:›Æ‡HÊAÎȦ€f‡.äòVÈ(ùÑÑÂÄŽÖt¸¨zdž†úýÂÐ.L€÷´‘Ð*âX1±B0 " 1 &/rðbÓ~{´/ÖúK4WÄga ´Ç ˜`Ë‚O. Á ?Bh‘`•ΦC1k!-ŠÍ”†á.Ž5ª¡CQx›ó ¬¡±é"6*è ù¬äB‹F‹8蹈lR2aÝ‚õ63ÉAF'm$²„±ÈĸÄŠCo@6+Ši+2Uó;ÔÍź΀‘ƶ¥±£­±ö:¥Ãwá ƒìú3æBlÆ 'h­“ô‹+‘ØZ CfÞÑõƒž@IWf]…£Ð%L„¶¾©«ÆI–@H+’£Ï ¬ÞÌ‚í¾ˆË®$¬î(&Ä1°ÍÑ~MÊt¥õËÎ*ë‚Ú?ÚÞˆôÁ㲚¨þ²@hëÅrXРA†ÞçŽÑ§ÉpRdütQ‹ŽŽ:–&ÝÐ`<¤×²„ɨš [·å¢ Í6`ò?(ùš¼Q†(¤Mƒ[‹ƒ‰ßÚœFm[.Ÿ( ŠrG®éÏ‘0f&Ì…áSÈÖVЀf±@ûÃJ€Ö~„ÂÐà3WF!BýA‡†=€‚ T3Ä0Ñ‚m芊mm'nš{É â¶-b…-2ˆ=ò¸Ð2[T¶›Ø…»)Ý|yðíú!ƒw­s"öý†¨½IæpãXèaæï®±¶kâw.±méÖgz¶g,ØÞÑÉ1l[Êð*3òÎa¤ ÑÓôÈ¥=ñÛ :\‰ tC+T¶JäQYØní$ZTb¤–# °tÁ"®b³0©S¦VûJày‹e!†o2„ú¦Py´ŸâûãÑG¡Esã¶³Clˆdf=ä¢ÁîX;R9}B]˜›@{€‹<‰r Ø~c‹€pÕ0¶ŠI¶žL+XQ.€ Õmj°£DB„¸\‘od+†ÃŠfA"Ÿ³ÍÉLÌ÷'ÛVîõötIÖþãØMçÿd»ÁÏì{ì?ÝeÿµÓ0fè/1’ü²-¨­…åŸ1 µô;ö vG<]™ƒ£ ¹<ÝÉéÇ– Nè[…ˆ?ª¶•@‚jìöBÉáÜIA'Ù‚ÎHÁ`87Ÿ‡¥«Âβ…]Âþhq³%òa›Â=Çé=¯öø?¸›ðß‘ÜÉù¿]þwþ·‚Õ/Â~+âý#ˆÿƒýw€¿sã~Wøßn„ÿ­tAa’U½CCXq¨Ô il6W1“˜t¬L$°h„ õ Œ‚mõÛ/•ÉGŽcø´8T͆{dCaa&JÚ4H«“UŽá†ÖhÌy;p°"J…mƒ7¢ˆÂ–P!¬£ÃæXE4hÔ1a5±£ ©‘©mEh¯Ñ:Xô¬kÖé!œ˜À gݰÉ[â'EA-ªüAºB"“͆ÿ‡†"d „ÌΆDx;YÀ ª6ÜP'Áˆ7Ìâ$p§AÍ"v]ÄP -aäˆ!%T ÑäÉEm¼=d?…ÿNÝåÿkçÐãÿõ_„ÿmeÎßâÎÝÃ:Hô]Á{ùGðß–, A5PÈ 5ñHš‰ yClmmh<=–iÃåǘxx"ï‘FàƒcÀø ·¯?b‡01 v †øÄ+ v#—LÝß0ƒÈ0¢:Úá*bY1Pæíõélì=$Ã|0#'ôsž©A¾˜Oȱ è">¿]Q„å<—/„‹Øthk‡›Èf2b`{(H†Ø l¾‰cqX°I¶)a†¬(þïÅçÿ&ûÏàüï.üok6ø-üwéüï Ñw…ÿ.èÃ,™Ñþ˜ ´¥ Âd¿‚åSï`L§‰ ¹ú’ß `qDè=¹±AþáB ±šˆaG³bD|ì\B@ç³xBÃd2ÇH¥€O³8˜— ,ÅÓ„ €Ç¤³¢“‰ÈÅ6休ËOag ¸yŽœw!ß@F"C lz¸çÕ þ»tþÛ9tÄÿÁ=öŸÿøßNÿUÓ¾+ôÇ®3¸‰6—Æø-äÿaî^>؇.÷vdÙ®»ÊïáCØ0ÄLz!º®ÉN¦&grûšP>L ìºÌ©6JÄb££ð‚ß#`‹KWħ3=ç ÿßá¿kwÙÈýÿ{â¿wþ·BÖ/b¿ ðýC§2úwà¿sy¾ ÐuÄZ Ã(rÙHûwI,2˜ Lë©€b‡mÞè‘b‘Èáˆp.@à¤sL+"b›„} !e­ÜÜèhEcÛ5Ñ©Á µž#ö&ĘÄ"'ÐSêSÃNF‘L"j‚=ÏÑ ZÅFz*mü{M"%¡6QR”« ‡Â‰‰ÇˆPjkÈݧ‡MüWãÿÿüÿØþÓ1þ“Ý`‡üï.ü‡- 48úÄïÿSðï" íQ2Ù¨éý{q d°Üñ¸/ û?B}Yr@Ÿˆð-0ô³¹°C£=ÉŠžl.½_Â`Füˆ:|Ùå ˆ¡†Î„­X¯siÝèÉ+Ÿ Ût„’[¤\>+†Å±Q×Ó$Ô“fÈçd´9¶á‡¯þDqkg c™ˆ7qûÆzD{^ñß®»âÿ9Ú;w”ÿzð¿›í?Y~ë0Àµ{ôŽž®xB{»ÉOšƒ:#¬À+Qð•<$£ ·‚‰!ð}´d‰Ëz9Uâ킘þ!€’=gÀž°i/™'²ØlÔã¾5G§3–¬$œ6„À±Ðç™(â ±>09ŸŠ©'ØQ„( b»"ôLÛ¶Xè­5É¡5ÌÀ$£tu±’¾d¶¾ …O­­&&ùÎÂÐGÄ”\ÅØÕh“ã€23hjb™lvÛÅÄngµí ‡+ìÐ!4n—>­µkƒ±ã—.Øÿ»/þ_GüÜãÿÿ߀ÿ2öâß~ÄýïCGÃNWÈßÖØý ¸/Cä8  Þ·ƒ'è)ï­Pp†`Ž(yŠÏÞ‰£qhð=0 úÓ`4—͆@kfeGŸ­Ç&Äb†˜á¨§¤µ… Rôy¶¸–(ÈW¡Ì$a'£.“¢L)`+ðmÙ\:mÅÂîJÏ›±`äÆ"‚Ñè0[}8ccy˜- iª]+­5µo "Gû濉ÿÝÿììLî‰ÿú_„ÿöý"úKN»û;ò]a¿ƒìÃv?FÿÎH#÷ƒ™Ñ­óüƒBB=$1bél£T1›?O†ÏŠ¡!‚¸|DÂÇ<îêý ¿Ò0<46ÄŽ0ÙøWŽfe÷7ÅÿB.ûôøÿý÷ìÿÎVÔoIvÿ´Ò¾³õÛIr]m|̫ƎáòY±q‚›;£ b…ÑZ5SÄ +‰…]°^ÊGÇ‘øHÿÚ ˆˆ‚.shCôã&¡ ‰1¾ /p€ÆÞÀⵓð„Hðiq‡D&¤CJ<„@˜ç¶ÄiuX÷òHL’*ã6|x¡ÁDZ,aÿAÄ” !/|åÇz–ɃëãAHRåÅÂ×x@©{&*¶þ€ŽBÕu8•ÐE€Ú=$Ál$Íwv´™˜„D Ç›a2Ç›Øà°AÖf02ÃA¢mt}C“Þµj—½Î$°A* C#´éq§fØ–!€Äwdù4i0ƒï´kÓÚÏÎÆ GõùÑ¡Þðà ^²cn3n‰¿?ÈL‚ùÐ$Zܨ-Oe ½·Å¾Bwì÷;2zîëÙÏz:‹'íüôÙnù3…Á¥ ~Ø)>„]l$PZ§k¢ÝYÒðýµh&!å†ýƒžÆpD?š"‹KÿNÌ(QL ‡ëDÈÃX š.›Æê…à»jž.ä´mÚÇß{t t#±ká(IØeVüŸ-:MðÆ@GŽû¿Û&Ÿm“ñU¶ “!²EJ@"ç;ó# pÒ£áu·þ×]ñ?ì:Ñÿzä¿î“ÿ<¡H÷ërŸŒ<õoºþvÔ㺒ý·ñ+€X=rJ‰ù±ú'K™ÎH‚(Ž4MÂ@˜4ö·´° ܒƃ…(V‘Æb ñ/ŽI”„ •„€Â.{tÒRç*â÷G‡xÅ.ŽS¥_wíŒ]¨ãxÅð¹"£]}^Ò¾_e¬ÿ/ÁÿnŠÿáL¶ïäþGÿW·ág ñ˹;¢Ï?d 訹‡'t¢âwź„º1†ÎH†2/QöˆÎäa!œ¤g9¾Li Á¶ª Æ[ú\ z( f LHLoýÆj›P ¨õë9fpLäÊä’H¤% †H€ ­!‡ñ2 ¯Mg¼F&†¬,gâJ€!X€µÌñ™­ÁÓê‚2Яh(bØ8’ŒTÏ‚4âÏ9JB§`ßÀj%Z!QrSz¥õçc`|[†¥ÃsØðˆ“ÉÄŸ…GËt.ŽŒ‰Ä攡¶;˜D£Û²­²4èokPy$Ϙl’¶½DƒJ£Ç…p 4š-êLÑÞ¾A§‹ø6Ä04v+< Éòa]¬°D\ˆ(4ó%ìiÈDB¾ ž$ÐL ie#É´ŽN,S¼} Õ: 9E…#Â"¡ô‘ظˆÐ§ê´B%„®Hl¢ µ âvigËH²‚þ`®—XÍPx¼’8Ìðá$JÁ6N•êF©„y×D%#ûÎÌšždeMo[{0WØ¡j¬?Ö|i.I¬Ô8í6žuîO†]T¢X¸hê8I¦·8t“K‚Ç£J?{‡¼aÃÑl‘3ŽíBMTNÒx™‚6kˆˆÜ@€»—Ôöó•"t}c=¶bÛȨÈu!—/Ioƒ¬olÖa_ $œ'´I à`±i|v²±ÝÌÂ¥µƒß©½-ª´+‡^n³œ‘eå “d&!II[”•’…%qr‚v_´Háç m ‡EÚa391¥ÐT4~Kˆ˜Dب'/´Xâhɨ@/`¢ù‡ gˆL6›Å0‘\4Ç_H´G"Ï $G*’¬Ü$;«d;sé„ Ë-ÉÞ*ÙÞ¼õÐÛ}´t·Œ`ñB+dh¿9¥øÐº%‰í¶dÛ©öÄ,˜H'ÑÍŽ µ^ÆÒ LbÂó,i´uÍŠ8,¨:ŸÎ–x4Ã3ˆj)fd+r§û¡ Q¶ÓjXCä°–1#Ôâp‘°Ó²ô$ʶ'ë%Ú~hé&(˜ß5MH”iÑ®ãÎfv ,Pf 1" $†Í”WbgîÛIÖ´$’­i4†mhÞº(¤½e³à+8\ \P×ñIEˆC‘ËAHÑ ±Ñ]èœH<-øÈ §Q ¦?J.I8®뀅€b4ÅG0‘•À¢±áIwj»½"Mƒ"À‚<Ë®v© žÌzA“`{j/ZêgÒ¤'mœæ‰ØYß '*€¹®ô{k™Œ¨2‘€5è®n×=Áe 8ƒ„2;]:šó Þ¯RñÀh õÐ*)Ú€£áoY¦U§(@ü%ZÁc¤a ˆÒôè…"‡™hÕÚWhª[[Änp¤*»‘!Çg¶fZ7Ù]¥¢´N¢…~bÕe8&:XÙú[»!Y‹íÉA”eÅmèM£ !¶,ÝÏ<$Ë’i5™ØáÜ%†(&¶8 "Ü 5®$ a™$K=^Ä‚5~—B˜Ê`™d'ì‚^;N슇CÒ*ºN¬Ú±%dvás9ØÎMÀ§ñX 8]œl"‰NöMfÅ´¦0h÷Ž0˾ Ç«ªçÕÎþÓMñÿœí:‹ÿÚsÿ£ûü¿:7êþª Xç6ãÛ Ô…±¿+kl,gûŸp ëœf?¶¼B ŸMKòqµþèÍg!!RA ü;† v4¬½6¿3­!úñiˆäÏ`¶µ…vôQnõØ@κ^'“ÖL’–¡ub‰²‚OgF#t\$£N[3Kz,‹™€^t!¶ñh±Ç"¹_Z™/ZÜ ³: ‡¸vô‚¾²BNÉí» äigsŽ]²¡a¬ «… 8,—t*!í› íiÃgÆÁ܉2wå!4¦KxJ¢¡¶Ú4¨QF4ðtAüZ:F:2El ™7uì 9Ü+H¾HŽÃìahÁÖ‡ÍB©æˆL#BscIMˆ}Gf02…Z3Ö E|XŒå >ªÕw¸WCä‹DdðC4jNÚšU[ŸréEÔ¥µôI4ùö‘‰Û˜ ­àÖeŒbVúÓx´D‘†8½Ëì·ŽË,àòQ›º8$¶:éØ÷¨€Ú*`ᮬµp8,/©×l&VŸYkæH^:&Q¦Vص š0:RLød4™`ë²Áñ7¥.Rð)_û1FÁî¨ëG›]lš. 6Ö DÏ6›[jn•éŸÃ ¹¡õÄdG#ѨÛW.é2±UÑË( P+2 ’È¡ˆ4l'ØL…\Y€5.xµBª$ÏZÄ“¦òk×-$ÆDû¾¥¤cpé"ÄZÅÄL¥¨-›PxyÁ:°€‹© ¨ì+-¢Øb„Ù/¥ßÃ`&@g) P5]v2Ñ…+»e׬CðÍFÕÑvšªI†$¥jûápægÌѬÚW-Gd¸üiPm¡(öaönÔŒ˜ˆþ$EUìæw«õ¦Ud»]—6 W2lÒ†³&w¾ÓÐþ ¶†6m" ‡ÚÝ!t’º3£×é@OÔPƒ–Q=Kˆ)´Ql.}šsfäp…¬èävTh¿Pˆˆî Ïv!^_ØÜ¡Q[W«äê ºP±5 ¡3CÅH5\I-›ako¥4EWªƒ±ÛuP¢1Ò!ƒ±@]€…Ò— í'4Ý rð¶  ”2ò)#‡ç•ØÁ£5ÒÔJÈ™ƒ ¢ç3ˆ& Æ!RجMQi\ìª'’uRª&¢…áT”p¦³Öý#MPN„yœ˜M²âÑ|WpÙvd‘Ìtëdµ®{™9GÍm’‰G°–=@t2óDÙ™Gx•„âm*‹†cÇJ¶³Ìê˜-ÔΦ°Þ`ñïÙH¬i"Êe¥n$"fhd͵Š¢¶G ÞÌa&bP'“–K\ˆö©¼3„FºÆ`vÔ­L…ØÉzÇ<~¥0‡¾ãƒ»ˆã&0m¶¶9À´t®úÉu }/I@ Ž`µ† ’mCf@Ì$šdOVJì„CòœÌ©²0Û:7ÃV_ÄøŒ&ƒÃš“ ‹ !-zÚÛÒ’ˆì?&*¶r1YÑ6ÿÛþŒB-Š´˜}Pb‹o}¨Uœ÷ÁˆÜjn`N+ ÇëF’ÐLiw$ÌH?mO`‰me\I»û´WT eÃS"hv1ÈÎE¶¨­% }¯t©èÿsûOwÅÿv²sêèÿÓãÿÙ}þŸ2ð[÷~ìÿ9;O—^9ß1ùtíÉÓ•Õ§="þèN,¥°»@ˆ&"'Æ&3Û$)—ñ ŽWÁ„{Eã'£-!áâzD,_Ã7‡¤u··b„H)d˜°T€å"÷Úʱç LŒ“j¥Ä¶Z)V‰•ä„\ ‰JÕFÕÄj!vróQI˜p.tâ €ÙBÚ¨:ÐØá¬îl6Sjôh=Éhõœm+ÔÁ²vG# /¢ìtHLŽ˜O྆R‰‹…$—«'j0ŠFx¨ œs&†µôÊ$Cw¦Å¡&¡NÌG¶»^I³"u°&ýW¦ÀÅÿnŠÿmïèÐ1þ‡SÏýïnÃÿvBào±‡îeÌ÷]¡>(JÃû1â·£ ú½=?oýC‹£ùL&ª 0![ »Þæý9°Š ëêØ]0¬J®…Êè¬RƒzYŒ))_äB=ª=6šX°mKˆŽ©ÞXBP嵃©JÒ†€ˆ5"Qq¢aí˳Ž(4mTnIþuìi"ÖuÌ(> C®ä9ÄŽÈàŠ¢ØXŽpäTi‘È—IÄdކ +âÃ4ÄÑZ™°½=” ÓS@l­ µ…`>’>a\¹¹Ùjã„Íߨ1?lû’¦ð@çöt~x[0KfGVçz½• 1cŽ,ÛñFš.híñá*Éô‡^ãCc‹µ÷'À&I"#1VUÍÄX8º³Á¢þ 2S„Þn•9jÓzk}m=d8 CDc[ÃÃê¶Ä‰>YÀ‚WìÏ®¾6<_Ôöˆáòð¤23‰Ž¦M]Ã$D vzÒI~õÿ[ê­,ÿï®øïƒ;¹ÿÑÿ½Ûø?‘ ú¢ò½¤B;Ú}¿, õ_½ØAë‚íÛË svüñÿwÉ‚òçW0‘&õŒ†ÓÎÕ… ó›Qðrƒ¹s€–a×kH¿BcѤ¦õØdœ$=&ˆ‘T/¹°Í`¹¢¢P&6‚Ëf¢æ[0‰>´¸ “l@!z…AÀŠá`(:åЩ±™Ü½¢4¯çÒá?ÿÝÿ½cþW»û_÷á¿Ïú¿;uKø÷6!ÿùe‘èÇ*_+9PöÕï|Z"§Õï£mtwø(Hê¨/"¹qGC– ÛŽEÇaÈÜÓ¡­!Üe‚¾ÛÑ[HÈ݉—7„ƒlÌ:¢Ðè4õ¦Çë·çõ=ü·ï®øïvÎ=ñ?þ‹ðÿ»âÝoYÿ9K ¬¡î;@[^W< ½8ú#éÿ»DA¤è¬D r²/{‰É,ÐÛd3˜liµÒ§=y°}ñÂrn·»ƒÞ(Aãúv(Æå³mš û~SÞl"(ƒ´ØsUˆDïäA.|¿¹ÅÔz½—­zÛ‹qfA>Þæ?ÑÐ83¾sÒeSÔØd¢âtÖµmC=<ìÿ»+þ»ƒƒCGüwìÁÿîµü·ð¿‰øÍ8]¡~ÑßéǨ/CŠÎ2¾v¨ÏÝ«ýsfŽ61¬œ‘ºdð÷×ës”­Ïå;}ƒ·ér£«V˶âÚÞ8ÓŽ›ýdÏeÓ¸» 9lC„]¼‡üøßMñß:‰ÿÜ“ÿ£ûð¿Kû-ŽðÙ„:Êíßá Äû®¸B{äý‘E¨K!F"¢{¨§WÀpôT4Ôçàï44t4–™CÀ¢¸YR‹c• ÿIŠ£%AïhI˜H l¡>Ⱦ¶µ„0…ÇsìT˜Í ¯Ñ¦8ô'¸«îÀîážQ3¨ýŸj<vvGÐE|ìš -JÀeÃwì$‰¹ÁL¶#ÉŠñôƒÏd£±:`?}L±ú­þ Á ~…,>|Z"Þ5ð·ýkÄiý#jà—)€Ä'@.´oõŸ­¸îß K—]jíÉ?F·8ì¤ñË”C‹ýÇ‹­æ7È„µÿî v²t M˜d• ýãü|wà MHT}n42ƒ‚ÿc$=B‰u‡ñ‹}jߣŒVðaBˆ¾@h&ò¾CBf’ö:FŒ.íÎotÁ‰=cö À¢Õüm{òéf|+X&ZÁ1v~a¥ðéè9Œ4ÒÓÜ8Óïosg¤SÒ”»·m‹I ÝgÑ’•ÿ»)ÿ‹Ý`;ûûÿ‘üÿC«ÃoéÎÿºÐÁØÓ•ÐÞZò#à‡DBô€«ãøo㌤T@ÔØ2ÈÇû—ðN Lf‹YÅ*ŠI‹ûÝA²"J%+V4×í¬@®$4‹ù Ú"Ì4á´ÿ” Õ,‰Ã [%C~GÒ‚*øAûÝÔÿþwSþ²³]Oþ¿ÿjûÏOY‰‹+¸üë\¡ƒ±§+®ÐÞºýë–¡Ÿ"Ì+Ðëäß3˜ƒ\“—Å®5|ÿȘ(sd šy‡šcN??dEOãCÌ~Öú„:ÙC%ÐÈŒ ö"…oï£]ø5­ŒÏ”Ɖýi=>—Ü uêÏ/êƒaw5ÍgÂa°µU8 6ów‡úï6Èg¢QuÍ-èšäcn¿;ÌîhšMüø¿J\¸ÌoÏæÿHƒÿߊ;=¯.ä¿ÁÝåÿAî$ÿkOþ—n“ÿ~êüþ·¤=×]Úë Öw%íµ÷;ø‘´÷S„úI;€´‚@o!ÖhÒâxnIVÈ?‡îo:DC$Ñ6Ñöa‡¾_´ H{rÿã^Áš6ÔŽëáCÝÿÝÿÙÞÞÙ¡'þÏþwðµú¬Gü¶þ]¬ï ¬w…õí/þë;ågý< µ]ÀÄ<=~0a5U­t>“ùk&QSèÍesùftøïOû‘HÊÐX‰\þ¯6… “!Õùû[ #%§aäþ”ò÷·FJþjÃpšh”Ô­¬d ütOã[„è‚_íC bÃ6&ó˜V¿6áRë·%úUg!¨å`„…æ™ñ±7?Ý2Z3h}o¡õpþŸÿwSü?²s'÷¿zâ?üWèÒËõ¿%Øý«:ho]±ÙH.?‘ß¡3šÀ7: ™Ð¾r$°j“#ø±ë»«lQ4&ëHý±iÿ3>ï²û¿›â¿A[ß±ãþ·ëÙÿݵÿe×êoíû.þg1ý;{¿ƒ4ßÕÞo¿Ç~󭕈ÔJó z°× ó! >%vâ@þ§%YØçä3.Lê´a&ãGâƒÞ|l[_ø”¬º¬º¬:ø3Z›ôî¤úNÙ÷ÊxX%4œfû°mÿ?O“Á‡n‹ÿåÔ‰ý·Çÿ§Ûð?˜ÍäÃÁ­~]h+Uÿ›±;ZudY€ä;3íÊ·Õ¤ëá»IÄîákjú1!¡œÛ`m ¾6 »¿‡â7¸Mr/T¶¥¶&3‚ чAC³˜¡éI°Œ$ˆå'”‡ ªÖÖßÓNc0ãXt¨¦@`1Á.š•¤éÖ.Ú#] øí½ùsÛF¶/þ;þо©ú~m×#‘Úœ¼¹®’eÙæ[Ò•ä$s§¦nHb  IL½?þõYºÑX.V%jjb’@/§»ÏÖç|Ž3w±@Vö¶'>…Ól°§GÄ ß‡iäI>Z/”ÿ(é\œ¦vqq!0,ÚætH*J1F\ÜŽ=?¾é@÷—·ÝAº{yòª#n?èw{ÆHq¤ÿ§÷®gŸõ«X¼³çš´ì¿H¯¡ªËrïjÚi´e¦šãxqtvcÙ¼¢RklÊÿ›ÒÿŽeý¿ÿiPÿ'P1q'ïO3êÒ·Fý7#BØDý'b°ö²Ê»¾%©Äw Oªš¾7v_¼ öokݯÖÚ­Lk/*Î ì+Ì.wâd»¶çÛ䛄«´’ç *È1¶¡ø‰ª˜ag5€b©%LJÚ^;Èáë*¨Ré—:wÞ¾(©ÖÕ-! *¹ù²ë<æ ü2ûŽè +ßÒÎi0ÊT’‚„¨‡Puíúž[™ñðص=Uò)WTõI¹Ïôz¬<+ ”ê´•}ð×…E6øÿQSü¿ZºÿퟶþŸÆøÿ5ñ\q+uÓݤÀ“ÅùsL‡|aì.«„@ѱS#ŽsíÆc;Üh½0ÈS†+>R™!(³èè‹b]qœ_Vëéz^’ç÷ÿ?®†ühᎽ‰‡œþ7†¸¹=GŒ”®“búÆvÃÉD¸QR7°³…¯j;ºÍ´bJ‚JQpv 1ßüÕ‹-%l/jÜh%z}·üO'÷&þ(_—?ôÁFpm¬À±-Ñ*áþÜÿ¯¨ÿÛ?mñãÿ·Ä·fýEnú4"ÀÔ׫XQ©¯aýf˜`ÿ`ƒ²OŠàú8n$w Uô£}ù3|˜ºÒLI¢%+ bÆ Ýxì¤6•<,ªa—/, N€]³ýî…ÝÞeû$£ï¦/ÿg“ Þþšz‰XvŠ`sï1+l8·ƒtbcIâHŠ’ˆÇnÝ@z>ímˆxé¥8Ï|~Ô©‹#ê˜"p)&¾ûè¤ÔÐ#w" ë5:!˜A åO’¶L‚E ÓÕ%V(‡RY“ª¸„ÇW*H Õ‘*ˆM\« ‚ø×Ú–ó-9r–ÑTna Rmyî3…,6øÿI3ü¿pZÆÿmùƒüÿ[ã?ûO—úµBO¯«”úa`õû;„‚ÞU³-º‰³«XT“Ù¤Tgb4N‡+áÊÿܱÆn±ð¸­K–[1`TÄT ®‚ß;6<'Ê“#Ð*>ÞU`Áä€VšÜ_šTU¤.¦‰'K2óŒ•kâI!([„ ^( /G`´'GªÿvÅ¥¶ˆÓ-“  g£ª^ư§ž¸‘‚ŠºwÀ2F×u,´žò¦ˆa~a)v¼K&c«§Š4#™1r½vj TaWKun[´ÔHï=÷!?Ì~«ø~Ê•²¨f<>2ü«í®#ß@ï•ñ u¹²‘‘¹H(å7Tñu£9ú#ˆ“‹lãt“,¤M½·ýÔ+kñ8€Tdâ¾ÓÓ2ÅØ]Žü¼è ¥¤òw¨Q8»V7†&lnÁõè"êµ—G©MÌ‹-Q 74×H“ýb9gI2féäýš’»ÖfuLŽ@Px/R\7ÚŸÜ×åÚ'¥5B°hY=6ÔȨuUÕÛÜõp’¡`… ›uxý寠¬¢Y×K9Ài(O_ù9îiYS˜¶bE86ñ(;Ž’—ƒW…Ø@Šþ31‘µs‘]HÊ}„emI‘Û&õSÒ[«êœë 3ÑÍ9÷Œ"Ióæ’ñEãÿüÆ©Î`oêM¾3ÊU&ט±ž}Ê­`úšýY}b«¦F›Y/ê†òВɰ®¬¹œfÆ$ww}þËQb£÷›ªÙ­v•d®o¡RëÄNý$ãwÕc‚;WRÏW^öÖ8„4Î%ìQ¹ï'©ß.º’ðРpÉå·¨`[€”è Ü5MÂr’½Oå2¾´±ùR¶èÊÍiÅsЈ£W´5ŒÓ»#•MUÏ\–±é:Åsÿà!ñ¾²ÔÔAÖE§ÄÂoºÉØ¡~̪ZÌÀä4vl•ÎOŽøOqíÈóíæl¸·K®1n[Fï’{Ç1‘¡¿b* Ÿ­Âdò£ÔmX«ÕB5[ôáN«¸Oo"y)€ÊG‰¦œÜS*ëÃ_²uø¦¾# 2oqŒ†ñùÛ§!ÁmzAìFhwÉÙ„#X!(„æf)P Þz¨ß½$výÉTR3£Oil`G¯8¥ÅÓB>ª=$Jgz_Üä‹4’swåvóôá€ÒǪ'@LTjxÛ»0>‹'rŸ6|6×ê1¨íº ©›p¥¥ucã—·7¼¡ASsÕ}•©-x¸5ÄCž¿J{Òz˜yã™xìFöRÅ"oçK.,ò¬|¸{ÿöþO°÷o«ö¾± (Tq'Ë]HÑëÑRsÁŒƒ抣&µ¤ÏeJ‡“º‡³3•½ÓË0EϬë8±ªwŦËU‚êqî$èÈŸX©ª’ ¨›™j­Ä{þ·^púŒ]%è~Eq˜FcÜU¹hK«À(]av¢˜<ùÙÜ£Ú#Ü3C¸9†}žkÀZÇçÞË¥~)×ú{1x%üýM9‡ÜMÊÿ‘©ÁùEÎÛ Ý8x§*‘óìYÃ)$¤^;Eû?ÊM‰—Ržypål“[ >J©6Å«ŽVªs}û$ž[ƒsŒT£HÏ1^Ùñ<Å\]˜ìñ³ü!ÄñÙ¤ò"`ÅŽz.4/-1Ï™§­˜ç̾W®?<‰oÉT=Gïl£jך‘Ë}ª‹~NFÁ;eÔíß‚öÕùЬïü+÷miSÓ˪;’S§½]=€U»ü¼n—×6·íž?ßqϯ@q÷Ÿ­ÝTbãMe›*Oâ-¶Õn.EÃÿwÚØýOEüïAëÿküþ?SÖvò>úCÑß_íþ+]ìÔøýŠVä¦ÿI´÷¯u´îßÓýñû^üÿuCü0¨âÿmüWcü¿àOÛ‰ùöÌüK95Ì¿èœXÇü ôМ¿u,¶ŽÅÖ±ø{;ÛÐÁ=ÅüИýwPÿ׿ÿ4ÿ÷­òÿpÏò¿dЭ–ÿ%?ñZèß<=Pþ·Wí•ÅNWÏLœüÿ÷bÿØåüŸƒ–ÿ7ÆÿÏÃÅ2B7O&ÞxÇ ƒß9ÿ_qø"w7™û&¸®Å¹*€ì——ãW—~ØÈÍ*þA|î‰É´ƒ‘Iîò¹÷÷µͽ8æúQ)¤eŽe31o²¤°/¸‰t›}há$yÞH7±å„ãeÁ S –JL’À-¡ê}œ‚ Ã4Wö'-£{ÏÁDG©dƒoòŒÆ…‰vÀI9ùi’’B0(pq‘Mƒöb·w^`•mqìò°¶ì>7 ¿ûx!n¯Þßý|vs!†·âúæê§á»‹w⻳ÛîðöÅ qvùNü<¼ûxõåNȧnÎ.ïþ!®ÞËïÿ!þ>¼|׿\ß\ÜÞv¬áçëOCùîÕ¸’ ßü<¼½èˆáåù§/t3Ÿ†Ÿ‡wgwëË6c4k}¾¸9ÿ(?œ½~ÂW7âýðîR¶/ÞËŸ‰ë³›»áù—Og7âúËÍõÕíNdx).¯ÄÅOr/‰ÛgŸ>‰¿_ü$¿„=!Ÿ¹|{qóA¼½}†9µuùëöúâ|xö G)ç-ûÅ¿Þ\œßAççW—·ÿõEþ"ïÎ>Ÿ}¸¸ÍÏÿêÆ‚ê·Ÿ?žÝÝ^É‘ÜI–/Ÿî`êïo®>‹OW·øê Ë»³»3è@R\NPRïç@4øîòêNœ½ûI’ï<‹$'z;T4yÏupu®.q0ò©«›XòG˜#>)¿ÞBÿ@vù‹l[ÒDÎéRNOÒ—Û—c‚‰\_ÜHÒ|>»<¿ žåžPû£×"¸í[þš²ÿN+ì¿“ÿ³1ùŸšÙÉü;Ú³ùWré֘ŀ‹õØŸ&9rÞß6x¨ ÚsðÐKDƒÿ÷Ãÿ,×ÿꟶøÿÍÙ+ÂÏv’Çû•eç^$X™ º¶ðã å„C™×Fæ={3Æàÿá?Ÿµù¿Ï)þ¯œ¿%ë¯È¯ß>pYѯ«Óù׆–©b@%œ@Cœ©¶Íç:âÁæ˜=/”S+ût‘)ê¶\rß3#ñU‰¯E˰Tsä™ÃÎ-aFAm>Fâ@JöCt4ÌW¶):°:µµ'±ÐærZaW}gó]݆¡ŸchŠ(‡¦X¥[,…ƒAØñŒÂ*)´‚ø4ÝQž+HOƒùƒ¹‘ã׆± °+®~zb8±tƒÕr< H}îƒÁëtún'w/Òžà±9(#ÓhïÃàÿMáž·üÿñÿjô’E€ ŒÒ€ X­â×M¨² *DÁ¨@0ðÈQ(ù³áÇxø‚c0ûWE߆õR2ÑÈÿH%3º9šxÙùÖT÷G¾ô*HvjÏcåUQ€¤ÀƒA»ì¢Ñ` )€Àés^!ŒÑÂDɦ† ì/p]'f©›ÙO•(P¬dPîdÑõžâ­ä©„Ò$fÊݦ»ÊD{Åèä’ûRþv2St…ü¶Ì£Ò Æ ib›ÒHЖ;J¼´^Þ²Uø½˜‚ù­ÊUÅ6`Õ«z1_x‘7r~‡ˆø+… J©s<Ät= ’«0œ¦b­b¶‰§rI#°àQj=IaõrËø Fú»*¶3F"ù®ìôÁ@_X8@f©YŒ Fˆ’¥Rrª #†K¾…9"„Fa¼‰ž&‰Ë%›¤n"e¤d8n§n'ŒqØ„óÜF$ ÿÇ™åHÙ÷Àò`·®žé&ÝÛáýìèåO7ØÝ+ýk¾Ë’7â6Éý“¤ “;&ýTá–±–Šš¸¥~舟¡JŠÔÍ-QJ¶õqßK|/ÞG¯VÌŸ x<¸}rºuü?‘l¤ÏÇSÎ~áB OÈõLam¢þðr›•9©Ç&3<%H3%+Ϊɥð ÉäS<”¢=|N±9ØQÀ 9ŸŠEB·a· ^˜­²¨ˆmb&œ5„+ßø‹$'pæ1ÅŒCœ–o{r-gŒ#]5DÖÖŒy¥“ª“wN60¾–:°Y2º©5’Ã<“›ÍöãÐR«¯¾ú¤ü¨pgKœÃ$’8m¼¦k=xCþ® ü¡] g { •s¯@Ê[c¸bápqÕ–yYF»\Z¡`©a¥¤é!=ñ³Ô ¬âyÇhÞ…XêÅÓŒLNOü/î´KRjÆâ¥!¤Î_ñ™Õ9ØN˜À–äâF–8÷3oì%&pFÏoç3Xv¦ŽS%îÔ:°¢µÍ2ø!¢6c‡  š(¸”{ÕØf–æee‹¹´§ØV§o:Ö;¿“?RÕLÈþò½\‡spËEz‰ý}?(«Õ#b¬RúÚ€’•öSøï‡'‡-þûsŠÿ(Ø=;Ýû<•½_ãš­6ùk\¹56QåYR Zû­UØZ…­UØZ…«°Õ–þBúßqcúßà´ÿzN÷?U®ž”ÀÓÆ”ÀÒNê—/2”ÆÞàò§ŠZ¨ ¶±Ö#ÖzÄZXëkÿþú_Cõ_N+ê¿´õßÓÿòõÁw-VÔ£öW ¬ìË«QþrÀa¯×'Œ‰éâÖš6±"DÃ@Ê÷X—b¯­0•ƒ4ù"R<ô7G¼µÇ_3 ¬o(-eœÿÆð_‡G­ý÷¬âÿª÷êN&à“_c¦Us‚5¦] _(ž¾õ1€ÕDã” B¸“Y¨ërÓ(’3¥ ªÍJÛy;îgNz4-i¦ŽƒÛMRðìè˜*¬_rGƒ]Òª|$N}(¢[6DK}숉â(£GÉ⬡ò,¹¦=i!È›|aú ÉmE:î¢ ¥Êéã¥ì.-ʺ*»•oJ‹Œ~nÏFÿk ÿõøðø¤ŒÿÚêÍÝÿ®Ò2v?4*Jê] Ë7A\¯¢“NMÜñ,ð$?D;?œ/KÍA×ÇC(bä”È ãÄ]Ä?ZÄ*VãUOB@%/ŸÉ¦Ù}¥Y¸ñðï0ά,» KHÝo‡ªuc"Œǫ̀K4 V+9;y%·3¿jå^­ê¿‰8K ¯á¢ä²E&Ž ÌÔ'Å12ó3¨†}-›…&¹Ü8ÜsÌìh™·…­Ð»Ed /N‹ã«ØB’ì#%6†ÈVåæJÇJØÎ¼)À¯ªÕ÷•L%=½5OõÈ ³… qù$  ©¾(¡ŽD®£Â6’GÛÒÌ”šŠ9ùFCx•'ÏÌŒPͼ«Y¥Wêö•0ï„€—M|Ï%“•4xñ"§ª˜øí‹¿šë ÷ÄO²cð¥ìc:oÞeæŠøôï%[‹r{û¯)üïÁñभÿñŒì¿zÕ}#pðd`°%¿\µÙWòÞ­6ûJjÈÆ€•äAÛ¯5iZ“¦5iþ&Í\Ï0äSøïý££2þÇA‹ÿÚ˜ü? ÂiËNñZ*ÞÑñû;ã¿PA !^_û‘#I‡ï>þÏðòîæêÝ„§^ó_& Ýý¿}3”Ìðï¶”ã×3‚ ì#qK5³ðîë+ŠÝw’½Ë'ÑJƒi¡è‚V ³àÏ–Æ ä§ê `z’1y»ÉÑlÒ ˆÜÎG¹ÊQOj;ާ,:)ÐH²éÀQ:•2: bd!u—x›œØ{$z×ÝH¨4Aýô Î4ÏF] ðõyˆbAó^Ä3À2—r8Jê¦ ­t@Ýï½ dSc°¥$$G ô.˜!úÙéÞ…r•RPÀ‰@tx®tÉʨKÅh¸Œÿ4VÿqpPâÿǧ-ÿoöþ/ïöÙÉêëïÙê+]àÕH¢ l³Ë¾fßâÿ>þ?þ·[Pûu÷  <Ý_þOÙ¶«áù‡Æ}Ôz`™4èįcÅQyÊ–Vôb¾6¥ðå¡iE Þop+† ´ˆø×'¢“ƒ¹§žz?ªz_µG1Ø~îêw]ýîCæ3äý–ž&!Gh; K¥…÷èúXY6÷=̈ïïâl Fšæ^‹¤`„›‚=6Ñ\:b!ß’‘ÊZf"î莈r?æm9‹Ÿ#3÷˜´Ó#Ø<4t]¢dÑ`̳­êÑNB«Þ¶TÖù\Ü ?_ÜŠn{õ0…øgðýà_ØÕ?çð/êBì¢8A™?+,ì—/‘ üý &&Ô,–&*ÇöÁj”;’†gáC n~R-Iòå=s÷µ\FÙú‹:Tÿ¸òÿ°1ÿïi…üoë?7&ÿ%Ða_bÉ€‡`9LìjA³`ÝãU`½W£ ät‹ÃõÊ@=èr°p¥E¢ c¢Š’à“Ê\d'=!…zlå¢iŒ0†‡Ç/p‡˜¦8nßE+'û°ÆQÇÝ…T4Ð¥‰DI¼‘ç{ ׆)ŽŒÓVà)7ñ’™õÙƒfÂI"¸›Nå ¦ÉW·»¿Ã@P"VFa„ 7˜‡‰ÇqŸáŸ8ôl0npïEa€"½2 µ¸tR½¸MøFšÃLÿÕ™Ö‡ÇÙ•ð}žÿýöîìæù¯ÔØTm fmºÁ‘ ewÅÝráÆuoåtUÊòþà‡#9éÏn‚ª)µ8§¶csö‡”o~Í 4Rÿ²éF9¢ÜÒr×¾zjæÙSñuæÕXûþk“jÇ4÷k_êžUo¶zÄï-ÿ›ÂÿíWÕÿ9iï“ÿEι“Ÿ÷ð©d~ÁB¯ù+¾Fȯàõëd}‘&*ôçK,Y%²*)•ÐÂnÄ?'’ýãÕ)ˆ·^¯÷/Ôà©„)Úý^p~-EÒJûßKbן¨ðË1I¬¦Ó¢Å^0öS÷ –V›ÉýÁµ`Í=Âl¡i¸ÇͲâÐ OY04øÁ¼6ÅÆ;dœª:ª†>bð0oüŒBúJÊ€¢² ”ö¡!ݸ<ÃÞVÅ‹­{ÏÖÀZ,Á0!™Ž›•u“"Hjó˜ÁoÓQj½ÛëøSøŸÇƒÿå9ñÿœÒ»%ó/éÐû“%ó­F õõuì?GäýöcljÁ»i™å²“sFvì·Rõ6ÉÕ~´þv¥¼±ø* ]qŽÀâ‚•x)=¨5• V>ØÈöË>hæXCv‹óYÆ®ÎÛ Ï0l@µ6õ`6Îh‘C¹9FÞoní(C6ÃA¢A$KòÓK¸ • ´¥Š0ÚP—š{uÔm&H͹½ÄÀ"£Êgl圓ŽgûáTŒÂGc2?AœTWœIÙW˜ÄlŒŒ\²*å ƒæ‡À„f³œJv‚w\´Í*wo,-i¯õуŠ@œ*ܤ`7ñâ8EDIÛóã"¶º¸u}R 5wå|x¡ÃŒh;óü;’+Ñf$ù0RžØƒ^Ÿý°KzmàDlFÒžÊCž¨¬z€|×÷³[p¬HhAÜÕê5«ÖPœqô2¨+¢ ï?`Z(’4 Ò¦wÙc7?9­õ<ØÉ_ òˆ6r:Gî„Ê#¼É&Wà|lH;C*ï ãî@"K_ðä=®àVÄžÚ^bcB~óaÈÆ¹‡óPHKû]Å™Ü[Ëßé’PÐeÞ†Ä1¸Dî’¨‚:#vIPxS¯ŒeÇ˜Š¦\€c}µ¨Ÿ1ùB6u¤Uþ§îf;TÈ‘Eœ½ûÝgÈZS‘c¾iúÎÏ\)Ùð°ÉãùÂ÷©ÜfìºÙ}TéVŽïÖT76î‘¢ 2ú¹Éƒë)¦óhn1‘éí›;9E)?½ä?ðÊØ^ጳGh¢ cãªZ=ñ6_6²×ˆ:Û#Áʾ½i0È¢ÆÞ}úð?×Ï.ï®>¯·«‰£R‚¤é1¥X•'Áj»º¡€|D” 6!솊˜²•ƒTðÅL¡ÚЯÃ|cäÌ*Ú¢t‡Ú¦ŽòM ?__1`75œƒªmã¸07ùÓÅÍÅåùÅ­ÙÐuäry=Œ‚©.˜-\-Üú8ó ñ°o¾zkßׯᙎçÃAŽ–¾4Ckß5U—ÃÃb·â¬µÁÜê‡8ñÑõ˜Æ QÍë¦.txl¾~ç-ê_5},‡'æ«‚eš-œš-œAÜz‹ØŒüo ÿñà°ÿqÒÞÿ5&ÿWˆ–Áy¡õ4E3®Z({5ªÀ Á¸AE€*2qQ#UŒ£ â\â¦êé$ H°ë¤1td0w¡–ZE`àÙRß(Ç‹*©ÜÛ8k²£søòùYvbe¹œYž¤Ms‘ª˜CÈÅ+þHÊÊÝÙÛOè ¿“„¹{'~:û4üpùŸwWT>F%¿}“±ñ»wøfþÙ;,™KHþgÿ_¹åÿÝÔtgXnاÙ[ÿ¿=_üo¡5·Á—ÀKÄ"õIô¯À™î™ãs`ƒh\HXlJVÌ®)×±^ ; séa÷Þ–3©3 WŽ£W=üïyéZ¯@+ÿ•üo ÿñøäð ÿy¶ò_™ƒ;ŠmfîSú¯4îk´€6ívZ€"ÖNJ@^Þrõ«Œ­+r £ôV±ù…˜Tò=³À EA·ŒÎh‘—)\ü®¦)k<ÿ3e¤ Á\àE¡X³[œà¼H¢,‡a& ç9‹(VüWÕ±bˆD’Ó#½Í4ŒÌW±FØR½Yp <íJã!…Ǽ≕1³±jÎ[Iw¬‘š}õQ.Dr_`‰½ì‹ó0ö7û 5‚éjôÏBËÙ3¹ösm›íÞEžL}—1±­mt—wH÷-HÉa •á½ZdÒCä÷·´ª|;BK«BÖĪ~•UÚ$v\ØFæëùÝ;V×Gâq© |B:‹T~>ÐͨåT ¶z`sÂý"—é·M¾KI<ýtÄ ¨#LÀ¢ãµM×ÿؾë@ؾµ_ÞâZ'l0¡‹KãÂv¾ëbÍÃ0™¡ CœFm÷¬2¹Hp—wf†Ê˦‘‚ö8K ½ÉMn/û­c¶m0;‚o91R§P³Êª6zÇG[5«Ž-CƒlCpà ž“Ì6:ŸI6 |)ÏÞ72 Ö1Þ³G9Á—^ ÷Ï+q /ÛŒL#Âä¤4†Ø g£B[`òµ¨&®Å—¤K¨VßÈ«’\ÐöXšMS¹rhnuÐr†ý%WÖG·¢ïžõn]mHFèoR:I°ô¸çúÒ1÷™‡J¨'i¼j¸,†áÕ—ÇãƒWÙnƒð^lÆ¢znò9Ê.¡Žài®¦¾Âùø@¤Vø«¦ÏHd/¸JœM…Rq­cZcdíͤÀtx@hÄÒ t§ø&soÔû6G‚ 2¾$Òo¾ ©øºïq¨¯\^Âz€@þy˜{’#“}n?zótnU˜îÏßú6ì¿Æð«ü¿müOÓöŸºÃÛÑðÓ—‚û4üV¹rk쾺{È ?E©²Õ'•Oзˆ§coÒ‚0èB‡:‘4ÐCHK!£ãwý™ñ¢Øïw}ùA» ñ]åÎÅø"ÂSäª4Ø…&;ý,CP½Ã@ij§® \µ'†aãxÞ Ï¯xª²Àƒä‚¾|%ËÝËK¨"«Êz— ØUV]22_uD¡‹E)׆s]«Í;jþßþoÿdÐÖy~ü?z±ëå_.ªcŸ’`•;¯FcH6äþ9:mêø£‹>’i ŽÉpQè£m3rgö½—AW ÂÅn.g0¶ï!<ã@K©nc"„õqÒ˘ìfyTp—…\BÊ¢žJs+Zö×ýËåðdÆŸ¼ }ܬ˜æ‹X̹k9^äŽ1!ZÃECÀZæ ÷pQhÆÚ¤Î=XƒŽ¢ÌF—€žJ¾s QˆÑaвÐÒdÇëS3Å‚"y娅.qÚA˜dÀ)`äRm<•#CI)ÒNÖ7a]- ÔZ°¸\imÖå4ï(‚zTsä±”×èdÀÔ}cKÅÌ‹ø¡FvN©l«0Ý«©•›tcûàƒœ"™Ta¸'¡>øé¬2ñåÆM¨½z{%­ìÒ(-=Â.'ÝC¿rÉà•ÔÇpì·42"ïÄ2PÝ95Cð&YUyÐc,ïG*_· ?½ð} u¶x!gè©ì_ù âËbr¶o»h?¹Ñò£$'È“o[$`Џ™%½x]+…Œ,äuðÃcÙêguÆHg’©¶01BÊ0ÀÖË)X[’îv>Âp”¤ ‘p”\óœ™5sýÅ$õqdâA1—|ޱ®·šùMˆ‘=þ:å„B¹¡ãæwŽû莡¾¨”Ód¶Ô5T‘’ȱ²Q¶•1 ,b±p¥ ˆ4SÐ(Œª’/e–½oé‹7I~óý 4{É·F†\ r…—‡·äلʱ)™;x%ÈÉ”/\Õ~OÀ:]^Ý]üˆÉïRØ ú°3   QŽ]w€%œª¹…¨)œ@B;´¤/ô¬•¨+ùãÚÍáÿž´þ¿çgÿQàü.i€¿Oc¯Ö‡WcñCÿ7´øˆ2eSÊfÅJ¯‹Ùqe–³¸š¨¶ìa~Hh’¤X|[¨KÀÖ0'Á‡óQˆ&#'ŒÂ„£³TZ€³,Ð.Ý„abhlü>_cIÕÈUÃŒza\RK‚µÜû¯Èÿ›Âÿ=8=,Õ´ø/MóÊ~Ú‰ÿ÷÷ÌÿKž»ž_ÌÙÚç5Ê<LyU÷ˆ¦¡X³-ùÿ}vß2¤oYÕŸÙqð"±Ðï^/§“÷r=¸èψA¶~2É­ÓØýFfmœÿÆð_á°—ô¿Öÿßxü/¥0îÄ{f%E®†/7ð%r 8‹1dˆâ\ •Õ-x*®9ÿE.¡ùÁ=9µ¡•ÝùŒÞEMµo;wÛNÙE‚®äµ.Y(𠺦r?qìi€t¼ˆÂùÃx'‘ºªãVz/WÏÅZ 6ÜgÐ Z}ò¡ÿ5…ÿzpR¥ÿµõ_Ÿƒþ‡iè;I€Ã=K€’Z·Z”’ç·P‘ $²Ð¾¥ 'ëõ@,ÂÍ·9¨Æ5ÌóßþgpT®ÿuÐâ¿4vþ϶pGÌ—½"~yÔѺóoÿõˆ/9LÜϺÿöV½P‘W÷n—“u˜lÀ2`$_Ü›5Äj19úǹ×1Àðõ[úwÝÛƒ|çù l$_·¶2٠׆êQIS7+mÆ•V¡Èi‹õñlô¿ã¦ðŽO[ü¯gÄÿK@B;)€G{VKf}(­SK© óä’|Äd“£"`¦üÀ*ã‘KrHXD]Œ™Šœ<é èÆùo,ÿû฽ÿNç_ŽŒë]-€×ûþ. óšãŸóÕþ°Þý[ ø€«<ÀÅfÁuÁéO¼zèêã“|ðêÍÙ­Àð¿/TXI©+nìªýV‹*}|ZŒ„½ú?è¿-4—•1Œ['lëÿÕ;¸ýïôø¤|ÿ?hùcüßà[;1ÿ'«úPÒÕªÙI£«aÿ«¹í•`5YP |gº|úWLÔÒð¼3OZ~^0öSÇ‹h‚p7hcƒ6æß¦‡Î„ïʼnÊÿÊ Y«.\Ÿ 2êßVF£qþ›Êÿô+ô¿Ó6þ§Éó_Ö9v€0µ™}²„’–WÃêt¦ ˜B™V†ˆYÚ1–ˆÔuÀ¸è—:¿=q‡U@ÇTÎÑK,Fá‰s8ßüÒ=â&ôÞ2j1e<ôSPä^q!LB‹ÏaÁ ;Šì%¦ýø!Ú£]‚j#,:|WØŒ±Ê"ÚêýfF›íÐ/ã]Ñ/wëðAÿb€%ÂmÜ7²õ˜_Oì¯n`éF`<£Q0Ñk°AéЀƒ˜Ë^1œ :B¡bš}X0â-Ýs7ˆ[ó=Ê—‡r0‡¯,*I.ÅÔ´:s¼Íúý“èÿMå NÊò¿Íÿ}ò?ç$ØÊtAìS¨Qõk´3øè` G­²ŸXëEX»²>0Ó¸>VJŽ\ÞÊvÏ‚úƒJ-·„ë… B1åw‹péü½G@?ZB‰#äZ0ˆShƒ¥ÃB*ÿÓů)à–§¾­øÂi²Ý| ÉiŽTp@ƒŠ·!@ ^·ôëJvª/HÃÚZ%Dˆî6&zÕBü0Ü[#Ûz„šÎnÔQºCV„žJÔJ X5¼5b‘œœÔ­å6ßfHÏõE0½˜ioeió„Bž/¦Ó¨l)¼.ÆÒêàÕlV›•¯~ï`7!€¼Üz>rƒJ¤ø‚IY8)5 œ«šYo“™ˆo™Éû–xdѶ3ÒØÝ#7yp]Âë‰l9|Bü ÓHþ¨RàV”>*‘HãÒª)Ì nÕQ¤° ¤ =4*x9„’–ù&fûÅ3…tm'p‘‚é —!ÓÛ÷¡çHæx[ ˜ 4hÉî*C²ËÊn˜Xs÷…!l´ r¹‚úmȰjJ.Tu@˜ƒiЉ”!Vl`x êØ0› #P ŸP‹œ0x‘ "<B¸(Ïð‘áÖh‰‰“QBaBüÝ„„g$ΠÌÅ6û-Ro¦7íIdk(<[Œ½h `·+v Ÿ¬!‚Q €¤L™ž–ZT†;qëš´òââK¬ àp@j€õ »m›}ÖZkíŸaÿ5–ÿtpØÆÿ=#û’t¾áöÿè`¯·ÿµþÛKÏÌ8ê¯ÈÑ…sÁê[4ëXo prŸÊÅ/ÅÂÚë kŸ˜SGT”ú§uég&€ÊÑQ–ªU÷Ò©u}ôZrMíðS3Vã˜ht¥š~C2ùaíäN °ÎçWŸ¯Ïn†·ñ—kˆRÌÜ6´asþßTþ¿\ÁÿOZþßÿ¯`Y;I'C*ùäªå@És·š÷¯b´C¾B®s·ÿÙ}J¬nþ´”K ýZ?Ï\]ÈѨgáƒUᣯ±¦{–ê1$Ô©H¯Ø•#¥=ï Û:º èÐ`;b”2ŠïC(i( '4ýÆU \ÿjánFT7j2"ˆ¶v>ÿ7>ÏdC„‘XÁ‹œ½iQÞþØòÿ¤)üÁáQ›ÿó í?åjÚ1îCû®öi–\z5Z@ÑO¶¡í§È²²Ø#Þþ<ªb¦-ˆQ™Ê³¦‘½˜gT~d ,ÿ§ê¹h’šÔL‘õuwõ‡ÃÈŸˆxf;d«OWDmÔ ­Û?Ù´þ ýèÜ,ˆ)áÌ€lÓX'ÇLJß6´Ÿ·¡š¤Örn/J[ÏÆü-yXXô-^Ɖ;·—8»=7>—#Շϛ„¶šÇ·Êÿ¦ðŽý~+ÿŸ‘üÿigƒÿh°_y¿Ò[#öWˆ»uÒŸˆ‚BC whZ†êêôÙm™»¬€ÕŸÃ¼4 "q¯'H›ð0\Îñ&ڤƄ±4‹sRÎáðÏô€V®§/øº¯yäQ¢{Ý VJ·7éËØÏŸ='™mM‚™íOºðêJ2ÜåƒZ†svÏ<õoák'bù^kmñ 3òÌœ* 9ÏH¢â8É<¡˜®ñWõ(>csyN {PëB5y½ºB¶&õdÞ©¹`覥¼‹yfª 6@;7ô¿jª<Õf¦ä¿O}¿æ,KŽ¥V´È!Ù+ù¯Ïߘ[±u>gý¿)ü¿þqEýÇÓÿ¡¹ø¿¢Öº¥)PR„ŸÄ"(ùëª-‚’W¯ÆX¡b­3JôaW`«Î·ê¼¡Îÿ!ÄœÁÿ›Ã<´øÏˆÿ£}¹ã­6S÷ÉóW¹tjXÿj[v÷Gêl‚½»Ù½GÎaœÿ£æîÛøßgtþÉ•³#0½Bûä«t¹P´|×|¢ËVG¿õmµ¾­Ö·µGßVë[ÚYþ7WÿeÐæ>§ø/tÿîtÿ{¸g©_£Æ×þb¶ãÚÈ/$HYðÿ áÆùo ÿópPeÿ·úsþ_Êü݉í9¤¤Ã×{³HüÑUߘUÞ]Âò’*Ôq!äÈooºÙßJ:/ýØÑ° ˜S šéHý7é ºãª˜9&Q?‹q:â6%fÒŸI‰\vÄ;ïÞs*ƒNÀ9-[[ mi. :…%.%+ >ÆvŽ6s,0s ú&wÈTd¥îC‹àúÍÅÀ¢YDÙ €å"ˆ§R.¹V2Í_œM6H ÍZ€T ß0}«Æ+§ŒÔpÅ4/dX`3˜ÇÁÆ®¬dðr³z9r›ôÄ(qz[êÏIßT'ªÞFU›ˆ ù$»Ð91¥‹£êJ1%áÔ Ù‹…kGà…ÿš%m2Éyµt×=ñV!Ö€4‹¡d²rQ¿²·1d )}öz}rñاHŸÃî;(¤Èž54RäËè0ƒ²µ}ºÊo6BfK:K®'Ä0t¥»ˆBp¨Xga”ŒSÄÀñC›PÊéÈ÷â™kô,ÉöѤTþgÿ_ècº¹‹E÷S8•_ þUr·ál$7¸\-À=%×Y8!L;ÇxÑ|Ëpˆd¹ ”–âº(‰ëA1¬Ñ¨‹u(à³Aõ¿¹#Æ Vúлëñ¸_ħEÐ=rU7kUÛVx0€UT‡£ý:÷ºz®‰ þ²®™¾y6Ƚ^¾mMÊg-ÿO›Â;::-ËÿÓÿ¥1ù¯@üw²û^ï9¨äÏ«ý¹˜Â6B|CBTEMð7döóÐñ&Ë,º¯Š]»†¸}MR‹ CW(®²•A†°†kw´ìR1ב{l%ª—-Æb£ú²ˆ/Ž•sã|S,êgÜâ`s‘Sà&Ī0ú!Ö0Þ¤B®;…ùÑ$(%ª2Ì}uWR¶o¯wM(!P¶,œâüP‚ïÞóÅãbÛž6Ë·[Ï·¿¦\ßb“Îc|úIºQ&[ö ¯lÔy Ô-Šfíª€]7/Å[ð¸×%uIù>L#¯‡nW—Dvð#ß[ê|¼] .{Æé…Gñ2 —Ø#¸’77¡kÝéÎB½-•üXÔâ\ág,,×}'Þ¿'o‹…Ýé1¢2ÔôŽ 2×°°õõni¢=Kgzs(3R$ëq¨ºìÐ#—!”³A‡µò=Ê!¨®è‹‘;;`)—Y¾wõ{œÏ‚ð—XihÓQWÈxÁ²õi(Ç vñfèCå‘ä9ž¥¨aÙ³=q0Q¢†• ý=àñÊRe  vÉpqB7¶fö}V­o‚•p;à~%fOAþ‡{϶”¯ì³=•fE ¦ÛMªÞ1•Q@m~m¸d^¬K—U…—L†o¸ßxf†ú“ü‡¸ bú4Ì„OçTòÝø=÷ 6M;Áh>¿Eص7K'ß5Ò%ï¾+Ølù§ÔOÆ–4žÒÔ¤HÅ¿L8š¡ÿ7…ÿ8èŽÊømýïæâ¿ Åt'à‡§²J75•6@ù>§Æ(ªkC½ bTÙ­zÞªç]õ¼uéýyäSøoƒ“Áiÿ÷œüE“z%àø`ÏJ@ɹW£k®u)R¥ ´Þ…Ö»ÐzZïÂÊ»`ÈÿÃÆò¿NÚü¯çdÿÊqï$þ÷\ü·l×׈ÿš"âkÝÚ(EÀP ,ã+É–G¤«“QZ˜ö ¤Ñúƒd\EῈ¼ù´ž <¹ 9S 7„¢€îÔƒ@B%ìA‡±5J“¢ïIÊZŽC…BO¿„nClj™ø¶?šŒÈüØøDÜ×øë O#{n|Çl¼ð|µÍÞ3ÿo ÿñàè´åÿÏ’ÿŸSeÕÁ MκWiP2ðj¤;z<ØFhò”˜™Çf©Zá%3Ö²„Øž8 XŸ·0(Ñ}ÄÀ Ús~©ö ûz¬ÜÍA¨³kƒEš¨&u´"'@ æ‘c@ª––—ê+²ó¿½}ƒw锫‚È÷~“Ï¡«€Ùwè”í颪ð]{KÙ¸5/»úå‡0Š¥à‘zséq’a6ÂÄ£  û1åèl3V?“»HÝ,’妯ÞQDvIŒ¥³%ÓEþ~MïY-ÀC–æøa•į³éj„¿™\x|¸A*H‰6*%ÄZÓ2ĪQaÙÆütnmlý©™Õ~|DÁõQ8vãUôõ‰ÊäH};ªmìuž<×WŸÎnV4y®kÌŒ¹=&:õrÖ ˜qk›zmúöO M uú:j^Û‘íû®_Û y pLˆcy›=³BkÛÉù^WµsוEb‹[p¡K±]Û\a{Þ\œ_]ÞÞÝ|9¿¢rüöÍM¦È(ôXJò·öøëBoºÚ>Žëúß·èI¼¼qG^`ÒýU›Ïñg–ÿ'á¿VàµùŸÍÝÿ–ÅÔN À“A—Lôj dÈ×Èý¢pÝ ¤Híúe¬.ÈÔ?¯J^¿Lç#ªTภ'YršdÆ{ã^ñaÀPßjBd.†“ Ð^æ!PЭwµý+ðÿ¦ðNËñ¿ƒ6ÿ¿Qû¯ÎÊØIíY”ìºYPm­“k¨T¾„ìï¸À™±ˆ#9ãQk·dŽ’¹ƒ?°â§Bé2Îcø''ýÿéYŸ¶ãw¼RΆ}žÿ’~Wsþ‹îŒíO>Ó§| T}ªGC€oCÅmÅŒ¸ZuØ­b0¸ûO¶¨ëõ‹ÆcXí¯UNuå!µÓ0MôÒŠ¸ðênÿ!nãmûÅ›oéth‚nÐõ-FQde\ô»BR{:=+«_¦áªF ±Hqtk—¡•`A0o:sãÄú5µ}¨ “kz“èú½¨åÿo ÿïàä°ÿ~Fü¿Ö—»“öw¼gî¿B£[-J~èu2 –FZ÷3X6A¶BÉiâ Ë-–›¹¹) ›猪äK9Jqyu'Þ_}¹|÷Šâ¶CÈS Ó)Õä³L«ú(Å>£›‚£É É·ÀЭՂÀþEíÿÆðÿúƒƒ2þß åÿéÿ9±-~‘ìi`ùú·€.XTýlë_…¶Ö ÈQ Yþ…=ž Ð •KWÊi@*ÎJ°¶oi8X‘5Ô±½Ê¯Þ»ò ‘\<'!Îe(ðùRa¼‘j#·Ûl:1~ã¥p…³‘°%3Çg@,M<ˆ¨‚6—„QÇ*+¾Ç&·ÕႼˆx¨a9_¾cÌ@ã(H_á‹'ÈÏHÑCß!¬ eº€¸¹•-Š€zÔj¤ ÒR¸³‚·],|`Ó |EI%ÇF®[ã0Å{ì‡ã¯Ôãà|;×à/ݪm$r¦„–>ÝÉÄ{ÙBqë=ñ3F’)ŒG¾òíÙF ±¥^£€éÈï Vc:—ÂXe!… B}ä‰S. xâ¹¾g–ÈøÑ ôxi,„ó˜oÀYš-ÌR±„‰yrCÅ’r 7pר ¸=p¸­rð'”ÿ¯›Âÿë÷Êòÿ¤µÿžý·2g'+ðdÏV`ɯW£Æ6·ÿVÒ¨ì ¤HÉa=ùî‘à 7/Ý_S鸞´à#9š^q>±î,/¥ÀŒ H'~=»q"m·Ä-x-lØ›”î„g¶#F.*û\âÂy ExÙƒ þßo¬þûáa[ÿýñÿÕñ’;±ýÓý²ý²+¯†í£<·Kÿ4IƒÜ¾¬ò™úQuŠ·½†‰Ð8k5ÎSø/ý£öü?çó_ŽsÞ‰ ¼Þ3(it5là0_p÷ñâîìnÎ.?\lÍÊÔÊq†A®8P<f!§PÅ=Ë5uвÇVé+èÂFÈU(Õ«J¨ï)MÍÅ:ã©´{—±ÁšH-P먖*&áêÒø¨ÀžX±Â‡Ü2©Â8û™CÇÚ‚Ê{K37Rû­ªœN…ð”AµÁ÷En d·=òÑP yÀ»V\“è=ñWWm þØXüßÁI›ÿýŒøî îó“?ÜOÂ÷KÊZ5ß/©t5|MVÎ:ÖŸ#Tfîÿ‘X•qþÂè÷«â?Úû¿ÆÎÿ†™h;r†RêÛ>•ÂZE¯†Ql”Z·Ž]lHײßLb] ^&å\ #ÂpÿYZL—‰j$£|`âŽg÷kÊ‹ŽLâMCU1•­âñ¸Ê À&°º9¥ÊkD¹ åÝÈßÙë©w(Z†›’jvê;X~Léêf¯î(reLÑQpH¼ßÜ(´2@ŠãAUzžú‰G÷£%”*Óx;‹ýà…¹í[Ê ,ç%ä ¸êÅÿ3’+ï{snHó¿Íìùm‹Š_P‡¯øeÊwùLþ±*‚W¢ ¤.³]°ÑJò2Úþbf ß½w}ؤ–jL S)o”Xg ¬Ž«ñ=²ß:fÛj¯ðݰ¢¥WE-me›½ã£­šýHËf1A¶ w¥s%>c¬êNÇ †¦B]áÞ·¥á'ŒÈs©j4÷ïïr˜Žt½ˆÜ‰E”Œ¹6²#+žÃ]BTÙ]_‡Á=;d}°d\pbÇxr~Óð]Μ{8‹Ž¸"ÈK‚zÁKl¼ÅHÒ(Àª‰>ðXG6ÔM0­cKäûXŒg¡7vã«¡®Ì6©Å ¶²µÍ€‚ŽÜÐŽ—°Éä×áy'-ÉoÆilTN ~$fFgýžAйç3Î/œ·G^2ô(Ö (>kfÇŠ½ ïŒ>„—Ãû§˜OrO•åU_‡#tázÂ6–·—Bo™»ª’Ëñ½ÜL$²ªøë0P,a‘ä.‹³^(Œמz÷„— ''rcÉ¿±KŽÁpr> œãF$8Wœr!’»à ]AGnLŒ[JúË0ÿJ‡7A,øA†ÜË0ÇÚ_b†@ê>sQ>¢\½m, ¿\70òÐ_á\ê½yPJ„Ò¶û†á•â öö½{#¬œ î¦Ií)ŽñÌXD˜ìàT©·.£^Å ‚‹ªÊÖØÔN,†Qæ¯6%óç˜k`/I{ж¹,o\†¨1KîD€ŽБrÒo¦à<#z7ŒK‹ŽB(€š—–°™•ÛO)a+–!÷ ‚FƒêÔ³°zëê5€}‰CI}¤"X4¦Ã*)-E&šý2¡äÜ–äJµxÑÅ׺ t§^†1Ͻßd ¥WƒHŒmœò&O"oªJáNÒ —]]L’‡üIÉÃ&—ûй;@Iz¨ç{£ÈŽ–FÓQ©í‡î ó÷3ÛŸt¹¿J:ÔÊê-X Ùbæy¼ehÿgEýƃ°1?LJ¬WÜ@|ƒÕ‹!센Ød¦9aní¡cáüMâ£æâfƒ¤W Ü<ÚÑpü©01ådyN7RmxÅF€‰NA‰Ã÷”°D:Õ¬s:¾ñ³÷·^7:¤ÖT¿Ï…šóÈñ€pæÂÉpbrX‰‚”å@²ÖÙ=Ì (ÞÖ»¹Îm@²)vVØÆP ZW4¶#Mÿ[Új {.ÌObùi©û¢ÖBY·+Ì+D¿x”l•m%½bܯhVJnî8Øò­TSÌd½#ëÂR(Á¨¤Kógñ­¨W› 0 ni°Œ±7 °þwÕÇwâ%½-izs5ܤ® JcXÂLè‚' }Ôÿ6|¹SÎuD5%¹Ø Z‚GDˆ éä0µæv2&.¬oÓb¸$^V.ë*h׫òxÈ©*"ˆ~¡,³ìT AãüÏm$¢ë¬&Ýþ3øžìþ§)ü¿þáñ ½ÿù£ù«ñÁžÄ'¬¡Êöé^wTãÎaMüðD~àjúQ%LNU-qïÙ«¼–ë¼l‹{Áh ©øƒ™lhx¦ÁX¶(µ&ªr UP©Î=,°yòx£ÔÍBZgq‘£KVu¢¢Ss¸Im¤êîüÿ¤9üŸ“ÿãñŒcúä×ö‰üºáÝ\ ÿ6±BN6À€5è该@§bƒÛB¿¾6AîOúØÀOžû€>-§qþOËÿ9ÖšIA1p7©¢Wf{¬sÒÅ‚chüðAþ C[ââ4*úüÁ̲:¡ògiÖtš¯]»á,EÉkß… @x ¬<¤^¤àÍ9ûrwu{~ö b‘ïîhQ»‚Æ{w‡¶œpœÂ-+]ê( 8nb{~5 Ì “*Ðð>õý" LgͺY³›&ÍÓ´æ^àÍÓ9>=—?À¿9r˜Ÿ'=¢·ƒ6øSøoǧñ¿­ÿ·1þ¼c'Îÿd%_Júy5ç/iñ«9‰a­ãüH…r,îN¬óùêÆÆùo ÿëè°_Îÿéµç¿1ÿ0]0Ó®`–ÖþqÀNs¨^„FVÇ̪’›ceFQ¥#äÛ…º† /ËT.èKÔk¡›¤F@€]¤uºs¯;·ÿ"²è£ÀGP|7˜&³8 Y»pßž!|a§€]¼?vÆËW)}5A˜ðu8ð> âCeUáseWG£¥u;s î§pjÿü Ž)ö{ªÔ¢ú¹t}$‘3féF}‘És6‹0öøÒÈ*Ï]wAĉ0/6Ñ(bèé s)¬âR(O ãzðŒ—qèãÌÅ(Íbg•óÏi‘8ÿ @-§Hò·†çDöC°je!^¥jYq6ýl ›SÌ=g‹l Ƥ{Ö ¯Åjþ› N¬MåÌÍL=ªÔ¥1á̉ßÒ—±*™ ñr†eE‹© BˆÒõ¢±ïê «6T¿ŒœÌ‡åFEN*íŸWËÍË«ä¼ÙŽ—ÆÅgõ @|$«;¶üpŒÁjjE:¯2Rëç„ü?ï7Àýó)è%["Ëlc©¥Ý9ZšË&‡·‚–¿Ä W**ùfhýÇu¨G0¨¼ÀŽ–¹yx±Å$¦RšL×Q\Ûà5ÔÍ#TŸëX<Ü(7ó€)˜ŸÈ1¢ª}c÷}Íû†ðóÛ†’ Ôñ½¯îóÝ“cô½±ûâ9=m½¨0|½ÜV¶ÜEŠóafÄzˆkõ|;Â\%‹is€:¨‘ò0d€½v¶’ÛÒ¡– 9 âDJÚŽEãrg¾à¨ÍoÌÒš(w;‘ñç®ó˜Ûøeög{©Sbå;PËJƒÑUŒgðªŽP/öÜØÊvÝcæ´`Å=B»"ÛpüT–Œ­6V{Çÿûèÿ?4†ÿ'õý2þ_«ÿ7¦ÿ“_l'Àáž%wnŠ_t×­vA2”=?fË<Û¿ÿoÿïø¨ÿÛÞÿ5ÿ—;ñÿ£ýòÿ²S·†ÿŒX2fß è Qsûì®qžâü7…ÿ78ê·øOÏéüßa)ÚëŸÀŸ†Éá{¼=”qØž†/­f %U¯†-˜Þ„“ãõÑŸuÔÁhPÐÌÎïn½ùœw.#nN©äñÌõ˨³OMv1³; CŸ,e«ü="$¨4°y˜˜d9•üÅ4²3ÐS-ìR¥JW4 îÐ^@$[äAb$Œü­a`ÅK9þy¬ËtûrH J¢%K(﯌0EkA¥ò¼`ÚáiƒÏxôFyêÉÊ»öâ*AˆxÞÀ±¥7Y]LíGöïÛslFeWˆk=‚Úv8ÜØ›P\®üoíã'êñ?>¨}üT=î>‚+ß¡µ/¾V/zÁ$ä×àŸµ/ý nIæƒÅ¿ñ%úgÝKýƒƒì-o¢ßò&õoñ™\ü[¿ôïµï Ô;zRôÏú·Õ[‘;æ—俞6núO¨ÿ7…ÿ(ÿq+ÿŸSüGcÝÉx²²º{µà¯ÐñkD¥HX'ÿ«¨³Jî–‘ð‚ûð«ë`.^2‹Ü|ÙL§ïY»ÊeÈW´ä>ºãT•iP‰Ýî _2Ø ]2T'„^Á—^PÝö˜JD7°ç„ø ·^”ëą́>k^}©ÍÅû4ÂâQ:^rn/ YVÌ”ïPWÀâG¯†0y\>ðkê)šP«½*záå3¾¢–|–$‹¿ÿþáá¡7 Ò^M¿{ÉÝì#*Ú™†ð€ªG_.‡¿VðÒG!§“€¶…Á›\äUÏXÅјº…Dˆ!Ið bÀ¾ÅK ·^Kë¹U 7˹MR?Ó² ÍUÉ0‘!@:·r¼YÓj{Ž–Œ ‘ê¢6y~c˜»¡×Ë®êpÖ_¦ 2!(‹@©¸7ci2K]FÄá$]qfGpS|%ˆžËË8•Ú£VâÅ#µ5‹œ¦•d†ô~h8ËdUS¸·3ä=ºN(Ï„¤âJñà3*–\aDêV·¶x¹˜S‡’¦ö” þRÀI uBadêªØÊŸd=EãÆÑÝ™®%MÌDqY‘QïU,‰ Gèöl&©>NuŒT–¹·}¸©Ud f«¾ªi\ìï¯Úì?þwÔXþÇÁq[ÿù9ÅÿUYÄ»:~ÈÌÞ¯XréÔ耦9¿6ñ·Š0uºÈFÞ$»—¼ˆ ‹B‚"æ§„sy â}B"¨RwcÁIž¤*­f¾ðzRcpô{$ú§³Ï8Uá™CZ>_¥ºwïEa€áâ*È’NòM%ù\¢T´—Æh«ÚÍ5FØ"'BÁÆ!DZzzq^±èúöœƒËîrN,T¢v°.;RÖ6+¼F‰¸€4¥\9¤)ååÈ©¥¯‘ר‘i‹Ý)J(èB‘¸±.¡8‚>ÊV. h¢Ò=¿þR¹x#7|Hý ©¥oé®žÚ (fŸ^Îü¿)üŸAÿ´ßÞÿ=#þ.Í-ù=¹C÷Ëæ«Í÷^oúb×ñz$ðökò´ƒí*O¶ác2kP…qI(9i}%~jBŒ1¶}B«ÎCLy}{ûæKlsù›k+r ’KS» ¶±T4½³ÏÿädB©œÿ+ÓÎß¾) ´f¦¢æ»+º‡OóÕ‚½]ºS¸"Xx ð.³»º¾??œnÒÙˆ‚ÀNR€D•ïD’´T`íÛºw[wù€+Cc÷ñ¯ÑÆÝFÝÓtšlÛk†›Í÷‡‚×Úš;6àÿ?¨Âië¿4(ÿ;ÈÿÁÞåÎt«û¥;Õõ²°ì‡hwÞ¦ä7¿Áoí.øÁ_T¿·&`;Î&RâÌ!‡¨A‘DR:Ú¤¯Ût”Dö8ùöÙI¾Ü¤×Ïüì·÷êxp{°IŸïðÉoï¶ÝF”…áXyÁá-•:SÜéPDZ#Gv\ÀkäR4ñnè»7êæ‹kêÌ];N#•?yF u‘ '´`wí4ýtt¡(Ød¾ÓË‚ðÐÓ!)€åשAΆAÜ#Sì{ºSsùºÃH£ðá ‡Q­ÇØjií_Nÿk ÿïðø´ìÿï·ú_ƒúŸŠ7ÛZ ÔQkûÕsŽM°$·^T„eðÿmTÔV •鴊럇¹ìÄöZFÒl¤n¹‰‘e!~©p•K0wÏfµ!ÿC¨”ÊÂóÙÓ»NÉVéeL(*Pœåñêà¾ÌѧǑ,–kY™“Ïf3Á| 5Éìû8qzý•¿¯øeÕƒß~+%ÌmSRÆÞoH">4ìb>ÓÕ)-Q¨<¢Nššx á[¹÷³ºƒØ:D.T ßN˜ÂAƒØ¡‡—d¡`ªvÎÖ†˜lJŒ¢ç<šlwáˆwéØ~ܪcNÚÙ¤ã?Švmè᜴þ¿g¥ÿQŒýÖÚGéïW÷+{÷jÀBÂÃz(êß;U„¾5nÿ ó&§bÅ!æÅ"Ê2†È⣱ò¶Ätæ­z.êŒO¬#a—†º™/n±ˆÜ8.ÌrN,»‚l×k‘­›ã›øSøŸG'ƒ£²ý߯ÿ5ÆÿUtÔÖ¨œE¶_þ_´éWsÿRæÚ:ö¯ìÿVª~>êÔãÐçΠÿþÒ@(`£—F)¢W’­‡)B©)À¼p?®fðÔQÏ(ãòT  ›•Îæ/î=÷!Þ^Ô±bífŠ1Ât€¨ª{Å(¼™+%f±,l ˜]𠿤—t©¯­W¿f*ˆü¸ÉTnäã þv9ˆQ/Šõmª%rÿªDÕ†FF¬ ÄƒÊúòË=ñ“í{ŽrÿC˜ã ÷ G)V¸ Øß¦p_°âW£âtfàî0å@ž†M¦+.u} i. ç°¬Úå;t@b¸Al  ½1œ¡ 0HôOLàzQaè)l8ë}eq ¼6CQÚÅvT©Ov= Úé:¥ñ+cY¬ ›ìIRÊà'ˆ x+ -3u»Ð•1 ©ØˆÞ^;P¸NkÍnµ³'žë;0xŸh(7‚ãÙ9\FÍL`·ýл}:!˜RžKƒj2õ*Êo=Qèi‡‰ð*îmjÅl‘jÊ ÎqŽm¿KCÞj–ú&7$øDÚsq˜Fc×Ê0.sȘ$ +È’‡Ûd‘i1q* „§¯% ¾b*"ÐÙ|cÓãY˜Ê­9BÔTè"pËj ¼ü÷¡dÂpí •‚㊲´*²}ÀÑìë‘g`úSøßýƒ2þ¿½ÿkNÿ×Õ»$}?TÁ;ï\ñp­5ž^¥©‚xP-ÄîÖiòç÷ÿäæ>ùÿéáAÿ¶øûáÿÄÛÿöñâLj)wÃ;©œ`VŸ8ì‹/ÒŸí µÁªÄåé‡GWJƒìUœë7¹o²ÏY®(o<)9>©šJ|¬ËÇx4ï”8ÔÇÃü‹‡åŸ{â&ŒÝ@ZšR“þÜ{×Cö­GÜ=&|ß ±Äåò rÄ# ÑË¡ó%7öÆ-Qõš ~ßÿîÍÙøk>ø®3Í""«^;Ìa‡—w7WïTòaD¡C…²W½|dô9@á Qš«ûÊWß…÷ƒFüÂå0 Ïª›¨ðâÕá§U7Ò?à?@¡q~˜úÙmò¾òh@±ìÓÊWûܵíOÃÈ›Íå&=Ã&òß«ßâ{¦xºøîÜÀíðAEÈ\Ûã¯èú[ñò!+&#oä{!Ö,¿{sã"`ÌØ¥^KÍð¹Îí_û×þµí_û×þµí_û×þµí_û×þµí_ö÷ÿú…¸C°ctsim-6.0.2/libctsim/0000755000175000017500000000000013254524615013465 5ustar kevinkevinctsim-6.0.2/libctsim/ctndicom.cpp0000644000175000017500000004277413254517525016011 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: ctndicomp.cpp ** Purpose: Interface to CTN Dicom classes ** Programmer: Kevin Rosenberg ** Date Started: March 2001 ** ** This is part of the CTSim program ** Copyright (c) 1983-2018 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifdef HAVE_CONFIG_H #include "config.h" #endif #ifdef HAVE_CTN_DICOM #include "ctndicom.h" #include "imagefile.h" #include "projections.h" DicomImporter::DicomImporter (const char* const pszFile) : m_strFilename(pszFile), m_bFail(false), m_iContents(DICOM_CONTENTS_INVALID), m_pImageFile(NULL), m_pProjections(NULL), m_pFile(NULL) { unsigned long lOptions = DCM_ORDERLITTLEENDIAN | DCM_FORMATCONVERSION; DCM_Debug (FALSE); CONDITION cond = DCM_OpenFile (pszFile, lOptions, &m_pFile); if (cond != DCM_NORMAL) { m_bFail = true; char textbuf [2048]; CONDITION cond2 = COND_TopCondition (&cond, textbuf, sizeof(textbuf)); cond2 = DCM_NORMAL; // testing if (cond2 != DCM_NORMAL) { m_strFailMessage = "DCM_OpenFile failure: "; m_strFailMessage += m_strFilename; } else m_strFailMessage = textbuf; return; } unsigned short iNRows, iNCols, iBitsAllocated, iBitsStored, iHighBit, iPixRep; DCM_ELEMENT aElemRequired[] = { {DCM_IMGROWS, DCM_US, "", 1, sizeof(iNRows), {reinterpret_cast(&iNRows)}}, {DCM_IMGCOLUMNS, DCM_US, "", 1, sizeof(iNCols), {reinterpret_cast(&iNCols)}}, {DCM_IMGBITSALLOCATED, DCM_US, "", 1, sizeof(iBitsAllocated), {reinterpret_cast(&iBitsAllocated)}}, {DCM_IMGBITSSTORED, DCM_US, "", 1, sizeof(iBitsStored), {reinterpret_cast(&iBitsStored)}}, {DCM_IMGHIGHBIT, DCM_US, "", 1, sizeof(iHighBit), {reinterpret_cast(&iHighBit)}}, {DCM_IMGPIXELREPRESENTATION, DCM_US, "", 1, sizeof(iPixRep), {reinterpret_cast(&iPixRep)}}, }; int nElemRequired = sizeof (aElemRequired) / sizeof(DCM_ELEMENT); if (DCM_ParseObject (&m_pFile, aElemRequired, nElemRequired, NULL, 0, NULL) == DCM_NORMAL) { loadImage (iNRows, iNCols, iBitsAllocated, iBitsStored, iHighBit, iPixRep); return; } U32 lRtnLength; DCM_TAG somatomTag = DCM_MAKETAG(TAG_GROUP_SOMATOM, TAG_MEMBER_SOMATOM_DATA); if (DCM_GetElementSize (&m_pFile, somatomTag, &lRtnLength) == DCM_NORMAL) loadProjections(); } void DicomImporter::loadImage(unsigned short iNRows, unsigned short iNCols, unsigned short iBitsAllocated, unsigned short iBitsStored, unsigned short iHighBit, unsigned short iPixRep) { U32 lRtnLength; unsigned short iSamplesPerPixel, iPlanarConfig; DCM_ELEMENT elemPlanarConfig = {DCM_IMGPLANARCONFIGURATION, DCM_US, "", 1, sizeof(iPlanarConfig), {reinterpret_cast(&iPlanarConfig)}}; DCM_ELEMENT elemSamplesPerPixel = {DCM_IMGSAMPLESPERPIXEL, DCM_US, "", 1, sizeof(iSamplesPerPixel), {reinterpret_cast(&iSamplesPerPixel)}}; if (DCM_ParseObject (&m_pFile, &elemSamplesPerPixel, 1, NULL, 0, NULL) != DCM_NORMAL) iSamplesPerPixel = 1; // default value if (iSamplesPerPixel > 1) { void* ctx = NULL; if (DCM_GetElementValue (&m_pFile, &elemPlanarConfig, &lRtnLength, &ctx) != DCM_NORMAL) { m_bFail = true; m_strFailMessage = "Planar Configuration not specified when iSamplesPerPixel > 1"; } } char szRescaleSlope[17]; char szRescaleIntercept[17]; double dRescaleSlope = 1; double dRescaleIntercept = 0; DCM_ELEMENT elemRescaleSlope = {DCM_IMGRESCALESLOPE, DCM_DS, "", 1, (U32) strlen(szRescaleSlope), {szRescaleSlope}}; DCM_ELEMENT elemRescaleIntercept = {DCM_IMGRESCALEINTERCEPT, DCM_DS, "", 1, (U32) strlen(szRescaleIntercept), {szRescaleIntercept}}; if (DCM_ParseObject (&m_pFile, &elemRescaleSlope, 1, NULL, 0, NULL) == DCM_NORMAL) { if (sscanf (szRescaleSlope, "%lf", &dRescaleSlope) != 1) sys_error (ERR_SEVERE, "Error parsing rescale slope"); } if (DCM_ParseObject (&m_pFile, &elemRescaleIntercept, 1, NULL, 0, NULL) == DCM_NORMAL) { if (sscanf (szRescaleIntercept, "%lf", &dRescaleIntercept) != 1) sys_error (ERR_SEVERE, "Error parsing rescale intercept"); } DCM_ELEMENT elemPixelData = {DCM_PXLPIXELDATA, DCM_OT, "", 1, 0, {NULL}}; // Get the actual pixel data (the only other required element) if (DCM_GetElementSize (&m_pFile, elemPixelData.tag, &lRtnLength) != DCM_NORMAL) { m_bFail = true; m_strFailMessage = "Can't get pixel data size"; return; } // Check the size of the pixel data to make sure we have the correct amount... unsigned long lRealLength = lRtnLength; unsigned long lCheckLengthInBytes = iNRows * iNCols * iSamplesPerPixel; if (iBitsAllocated == 16) lCheckLengthInBytes *= 2; if (lCheckLengthInBytes > lRealLength) { m_bFail = true; m_strFailMessage = "Too little pixel data supplied"; return; } // Now allocate the memory to hold the pixel data and get it from the DICOM file... unsigned char* pRawPixels = new unsigned char [lCheckLengthInBytes]; elemPixelData.length = lCheckLengthInBytes; elemPixelData.d.ot = pRawPixels; void* ctx = NULL; CONDITION cond = DCM_GetElementValue (&m_pFile, &elemPixelData, &lRtnLength, &ctx); if ((cond != DCM_NORMAL) && (cond != DCM_GETINCOMPLETE)) { m_bFail = true; m_strFailMessage = "Can't read pixel data"; delete pRawPixels; return; } if ((lCheckLengthInBytes < lRealLength) && (cond != DCM_GETINCOMPLETE)) { m_bFail = true; m_strFailMessage = "Should have gooten incomplete message reading pixel data"; delete pRawPixels; return; } m_pImageFile = new ImageFile (iNCols, iNRows); ImageFileArray v = m_pImageFile->getArray(); double dScale = 1 << iBitsStored; unsigned int iMaskLength = iBitsStored; if (iMaskLength > 8) iMaskLength -= 8; unsigned int iMask = (1 << iMaskLength) - 1; for (int iy = 0; iy < iNRows; iy++) { for (int ix = 0; ix < iNCols; ix++) { if (iBitsAllocated == 8) { unsigned char cV = pRawPixels[iy * iNRows + ix]; v[ix][iy] = (cV & iMask) / dScale; } else if (iBitsAllocated == 16) { unsigned long lBase = (iy * iNRows + ix) * 2; unsigned char cV1 = pRawPixels[lBase]; unsigned char cV2 = pRawPixels[lBase+1] & iMask; int iV = cV1 + (cV2 << 8); v[ix][iNRows - 1 - iy] = iV * dRescaleSlope + dRescaleIntercept; } } } m_iContents = DICOM_CONTENTS_IMAGE; } void DicomImporter::loadProjections() { U32 lRtnLength; void* ctx = NULL; unsigned short iNViews, iNDets; DCM_ELEMENT aElemRequired[] = { {DCM_IMGROWS, DCM_US, "", 1, sizeof(iNViews), {reinterpret_cast(&iNViews)}}, {DCM_IMGCOLUMNS, DCM_US, "", 1, sizeof(iNDets), {reinterpret_cast(&iNDets)}}, }; int nElemRequired = sizeof (aElemRequired) / sizeof(DCM_ELEMENT); if (DCM_ParseObject (&m_pFile, aElemRequired, nElemRequired, NULL, 0, NULL) != DCM_NORMAL) { m_bFail = true; m_strFailMessage = "Unable to read header for projections"; return; } DCM_TAG somatomTag = DCM_MAKETAG(TAG_GROUP_SOMATOM, TAG_MEMBER_SOMATOM_DATA); DCM_ELEMENT elemProjections = {somatomTag, DCM_UN, "", 1, 0, {NULL}}; if (DCM_GetElementSize (&m_pFile, elemProjections.tag, &lRtnLength) != DCM_NORMAL) { m_bFail = true; m_strFailMessage = "Can't find projection data"; return; } unsigned char* pRawProjections = new unsigned char [lRtnLength]; elemProjections.length = lRtnLength; elemProjections.d.ot = pRawProjections; ctx = NULL; CONDITION cond = DCM_GetElementValue (&m_pFile, &elemProjections, &lRtnLength, &ctx); if ((cond != DCM_NORMAL) && (cond != DCM_GETINCOMPLETE)) { m_bFail = true; m_strFailMessage = "Can't read projections data"; delete pRawProjections; return; } m_iContents = DICOM_CONTENTS_PROJECTIONS; m_pProjections = new Projections; if (! m_pProjections->initFromSomatomAR_STAR (iNViews, iNDets, pRawProjections, lRtnLength)) { m_bFail = true; m_strFailMessage = "Error converting raw projection data"; delete m_pProjections; m_pProjections = NULL; } delete pRawProjections; } DicomImporter::~DicomImporter() { if (m_pFile) DCM_CloseObject (&m_pFile); } DicomExporter::DicomExporter (ImageFile* pImageFile) : m_pImageFile(pImageFile), m_pObject(NULL) { DCM_Debug (FALSE); if (! pImageFile) { m_bFail = true; m_strFailMessage = "Initialized DicomExported with NULL imagefile"; return; } m_bFail = ! createDicomObject(); } DicomExporter::~DicomExporter () { if (m_pObject) DCM_CloseObject (&m_pObject); } bool DicomExporter::writeFile (const char* const pszFilename) { if (! m_pObject) return false; m_strFilename = pszFilename; CONDITION cond = DCM_WriteFile (&m_pObject, DCM_ORDERLITTLEENDIAN, pszFilename); if (cond != DCM_NORMAL) { m_bFail = true; m_strFailMessage = "Error writing DICOM file "; m_strFailMessage += pszFilename; return false; } return true; } bool DicomExporter::createDicomObject() { CONDITION cond = DCM_CreateObject (&m_pObject, 0); if (cond != DCM_NORMAL) { m_bFail = true; m_strFailMessage = "Error creating DICOM object"; return false; } double dMin, dMax; m_pImageFile->getMinMax (dMin, dMax); double dWidth = dMax - dMin; if (dWidth == 0.) dWidth = 1E-7; double dScale = 65535. / dWidth; double dRescaleIntercept = dMin; double dRescaleSlope = 1 / dScale; char szRescaleIntercept[17]; char szRescaleSlope[17]; snprintf (szRescaleIntercept, sizeof(szRescaleIntercept), "%e", dRescaleIntercept); snprintf (szRescaleSlope, sizeof(szRescaleIntercept), "%e", dRescaleSlope); char szCTSimRoot[] = "1.2.826.0.1.3680043.2.284."; char szModality[] = "CT"; char szSOPClassUID[65] = "1.2.840.10008.5.4.1.1.2"; char szImgPhotometricInterp[] = "MONOCHROME2"; char szPixelSpacing[33] = "0\\0"; char szRelImageOrientationPatient[100] = "1\\0\\0\\0\\1\\0"; char szRelImagePositionPatient[49] = "0\\0\\0"; char szAcqKvp[] = "0"; char szRelAcquisitionNumber[] = "1"; char szRelImageNumber[] = "1"; char szIDSOPInstanceUID[65] = ""; char szIDManufacturer[] = "CTSim"; char szRelPositionRefIndicator[] = "0"; char szRelFrameOfReferenceUID[65] = ""; char szRelSeriesNumber[] = "1"; char szIDAccessionNumber[] = "0"; char szRelStudyID[] = "1"; char szIDReferringPhysician[] = "NONE"; char szIDStudyTime[] = "000000.0"; char szIDStudyDate[] = "00000000"; char szRelStudyInstanceUID[65] = ""; char szPatSex[] = "O"; char szPatBirthdate[] = "0000000"; char szPatID[] = "NONE"; char szPatName[] = "NONE"; char szIDImageType[] = "ORIGINAL"; char szIDManufacturerModel[65] = ""; std::ostringstream osPatComments; m_pImageFile->printLabelsBrief (osPatComments); size_t sizePatComments = osPatComments.str().length(); char* pszPatComments = new char [sizePatComments+1]; strncpy (pszPatComments, osPatComments.str().c_str(), sizePatComments); snprintf (szIDSOPInstanceUID, sizeof(szIDSOPInstanceUID), "%s.2.1.6.1", szCTSimRoot); snprintf (szRelStudyInstanceUID, sizeof(szRelStudyInstanceUID), "%s.2.1.6.1.1", szCTSimRoot); snprintf (szRelFrameOfReferenceUID, sizeof(szRelFrameOfReferenceUID), "%s.99", szCTSimRoot); #ifdef VERSION snprintf (szIDManufacturerModel, sizeof(szIDManufacturerModel), "VERSION %s", VERSION); #endif snprintf (szPixelSpacing, sizeof(szPixelSpacing), "%e\\%e", m_pImageFile->axisIncrementX(), m_pImageFile->axisIncrementY()); double minX, maxX, minY, maxY; if (m_pImageFile->getAxisExtent(minX, maxX, minY, maxY)) { minX += m_pImageFile->axisIncrementX() / 2; minY += m_pImageFile->axisIncrementY() / 2; snprintf(szRelImagePositionPatient, sizeof(szRelImagePositionPatient), "%e\\%e\\0", minX, minY); } unsigned short iNRows = m_pImageFile->ny(); unsigned short iNCols = m_pImageFile->nx(); unsigned short iBitsAllocated = 16; unsigned short iBitsStored = 16; unsigned short iHighBit = 15; unsigned short iPixRep = 0; unsigned short iSamplesPerPixel = 1; DCM_ELEMENT aElemRequired[] = { {DCM_IMGROWS, DCM_US, "", 1, sizeof(iNRows), {reinterpret_cast(&iNRows)}}, {DCM_IMGCOLUMNS, DCM_US, "", 1, sizeof(iNCols), {reinterpret_cast(&iNCols)}}, {DCM_IMGBITSALLOCATED, DCM_US, "", 1, sizeof(iBitsAllocated), {reinterpret_cast(&iBitsAllocated)}}, {DCM_IMGBITSSTORED, DCM_US, "", 1, sizeof(iBitsStored), {reinterpret_cast(&iBitsStored)}}, {DCM_IMGHIGHBIT, DCM_US, "", 1, sizeof(iHighBit), {reinterpret_cast(&iHighBit)}}, {DCM_IMGPIXELREPRESENTATION, DCM_US, "", 1, sizeof(iPixRep), {reinterpret_cast(&iPixRep)}}, {DCM_IMGSAMPLESPERPIXEL, DCM_US, "", 1, sizeof(iSamplesPerPixel), {reinterpret_cast(&iSamplesPerPixel)}}, {DCM_IMGRESCALESLOPE, DCM_DS, "", 1, (U32) strlen(szRescaleSlope), {szRescaleSlope}}, {DCM_IMGRESCALEINTERCEPT, DCM_DS, "", 1, (U32) strlen(szRescaleIntercept), {szRescaleIntercept}}, {DCM_IMGPHOTOMETRICINTERP, DCM_CS, "", 1, (U32) strlen(szImgPhotometricInterp), {szImgPhotometricInterp}}, {DCM_IMGPIXELSPACING, DCM_DS, "", 1, (U32) strlen(szPixelSpacing), {szPixelSpacing}}, {DCM_RELIMAGEORIENTATIONPATIENT, DCM_DS, "", 1, (U32) strlen(szRelImageOrientationPatient), {szRelImageOrientationPatient}}, {DCM_RELIMAGEPOSITIONPATIENT, DCM_DS, "", 1, (U32) strlen(szRelImagePositionPatient), {szRelImagePositionPatient}}, {DCM_ACQKVP, DCM_DS, "", 1, (U32) strlen(szAcqKvp), {szAcqKvp}}, {DCM_RELACQUISITIONNUMBER, DCM_IS, "", 1, (U32) strlen(szRelAcquisitionNumber), {szRelAcquisitionNumber}}, {DCM_ACQSLICETHICKNESS, DCM_DS, "", 1, (U32) strlen(szRelAcquisitionNumber), {szRelAcquisitionNumber}}, {DCM_RELIMAGENUMBER, DCM_IS, "", 1, (U32) strlen(szRelImageNumber), {szRelImageNumber}}, {DCM_IDSOPINSTANCEUID, DCM_UI, "", 1, (U32) strlen(szIDSOPInstanceUID), {szIDSOPInstanceUID}}, {DCM_IDMANUFACTURER, DCM_LO, "", 1, (U32) strlen(szIDManufacturer), {szIDManufacturer}}, {DCM_RELPOSITIONREFINDICATOR, DCM_LO, "", 1, (U32) strlen(szRelPositionRefIndicator), {szRelPositionRefIndicator}}, {DCM_RELFRAMEOFREFERENCEUID, DCM_UI, "", 1, (U32) strlen(szRelFrameOfReferenceUID), {szRelFrameOfReferenceUID}}, {DCM_RELSERIESNUMBER, DCM_IS, "", 1, (U32) strlen(szRelSeriesNumber), {szRelSeriesNumber}}, {DCM_RELSERIESINSTANCEUID, DCM_UI, "", 1, (U32) strlen(szIDAccessionNumber), {szIDAccessionNumber}}, {DCM_IDACCESSIONNUMBER, DCM_SH, "", 1, (U32) strlen(szIDAccessionNumber), {szIDAccessionNumber}}, {DCM_RELSTUDYID, DCM_SH, "", 1, (U32) strlen(szRelStudyID), {szRelStudyID}}, {DCM_IDREFERRINGPHYSICIAN, DCM_PN, "", 1, (U32) strlen(szIDReferringPhysician), {szIDReferringPhysician}}, {DCM_IDSTUDYTIME, DCM_TM, "", 1, (U32) strlen(szIDStudyTime), {szIDStudyTime}}, {DCM_IDSTUDYDATE, DCM_DA, "", 1, (U32) strlen(szIDStudyDate), {szIDStudyDate}}, {DCM_RELSTUDYINSTANCEUID, DCM_UI, "", 1, (U32) strlen(szRelStudyInstanceUID), {szRelStudyInstanceUID}}, {DCM_PATSEX, DCM_CS, "", 1, (U32) strlen(szPatSex), {szPatSex}}, {DCM_PATBIRTHDATE, DCM_DA, "", 1, (U32) strlen(szPatBirthdate), {szPatBirthdate}}, {DCM_PATID, DCM_LO, "", 1, (U32) strlen(szPatID), {szPatID}}, {DCM_PATNAME, DCM_PN, "", 1, (U32) strlen(szPatName), {szPatName}}, {DCM_IDIMAGETYPE, DCM_CS, "", 1, (U32) strlen(szIDImageType), {szIDImageType}}, {DCM_IDMODALITY, DCM_CS, "", 1, (U32) strlen(szModality), {szModality}}, {DCM_IDSOPCLASSUID, DCM_UI, "", 1, (U32) strlen(szSOPClassUID), {szSOPClassUID}}, {DCM_IDMANUFACTURERMODEL, DCM_LO, "", 1, (U32) strlen(szIDManufacturerModel), {szIDManufacturerModel}}, {DCM_PATCOMMENTS, DCM_LT, "", 1, (U32) strlen(pszPatComments), {pszPatComments}}, }; int nElemRequired = sizeof (aElemRequired) / sizeof(DCM_ELEMENT); int iUpdateCount; cond = DCM_ModifyElements (&m_pObject, aElemRequired, nElemRequired, NULL, 0, &iUpdateCount); DCM_ELEMENT elemPixelData = {DCM_PXLPIXELDATA, DCM_OT, "", 1, 0, {NULL}}; unsigned long lRealLength = 2 * m_pImageFile->nx() * m_pImageFile->ny(); unsigned char* pRawPixels = new unsigned char [lRealLength]; elemPixelData.length = lRealLength; elemPixelData.d.ot = pRawPixels; ImageFileArray v = m_pImageFile->getArray(); for (int iy = 0; iy < iNRows; iy++) { for (int ix = 0; ix < iNCols; ix++) { unsigned long lBase = (iy * iNRows + ix) * 2; unsigned int iValue = nearest(dScale * (v[ix][iNRows - 1 - iy] - dMin)); pRawPixels[lBase] = iValue & 0xFF; pRawPixels[lBase+1] = (iValue & 0xFF00) >> 8; } } cond = DCM_ModifyElements (&m_pObject, &elemPixelData, 1, NULL, 0, &iUpdateCount); delete pRawPixels; delete pszPatComments; if (cond != DCM_NORMAL || iUpdateCount != 1) { m_bFail = true; m_strFailMessage = "Error modifying pixel data"; return false; } return true; } #endif // HAVE_CTN_DICOM ctsim-6.0.2/libctsim/phantom.cpp0000644000175000017500000007030413254360476015646 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: phm.cpp ** Purpose: Routines for phantom objects ** Progammer: Kevin Rosenberg ** Date Started: Aug 1984 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "ct.h" const int PhantomElement::POINTS_PER_CIRCLE = 360; const double PhantomElement::SCALE_PELEM_EXTENT=0.000; // increase pelem limits by 0.5% //const double PhantomElement::SCALE_PELEM_EXTENT=0.005; // increase pelem limits by 0.5% const int Phantom::PHM_INVALID = -1; const int Phantom::PHM_HERMAN = 0; const int Phantom::PHM_SHEPP_LOGAN = 1; const int Phantom::PHM_UNITPULSE = 2; const char* Phantom::s_aszPhantomName[] = { "herman", "shepp-logan", "unit-pulse", }; const char* Phantom::s_aszPhantomTitle[] = { "Herman Head", "Shepp-Logan", "Unit Pulse", }; const int Phantom::s_iPhantomCount = sizeof(s_aszPhantomName) / sizeof(const char*); // CLASS IDENTIFICATION // Phantom // Phantom::Phantom () { init (); } Phantom::Phantom (const char* const phmName) { init (); createFromPhantom (phmName); } void Phantom::init () { m_nPElem = 0; m_xmin = 1E30; m_xmax = -1E30; m_ymin = 1E30; m_ymax = -1E30; m_composition = P_PELEMS; m_fail = false; m_id = PHM_INVALID; } Phantom::~Phantom () { for (PElemIterator i = m_listPElem.begin(); i != m_listPElem.end(); i++) { delete *i; } } const char* Phantom::convertPhantomIDToName (int phmID) { static const char *name = ""; if (phmID >= 0 && phmID < s_iPhantomCount) return (s_aszPhantomName[phmID]); return (name); } const char* Phantom::convertPhantomIDToTitle (int phmID) { static const char *title = ""; if (phmID >= 0 && phmID < s_iPhantomCount) return (s_aszPhantomName[phmID]); return (title); } int Phantom::convertNameToPhantomID (const char* const phmName) { int id = PHM_INVALID; for (int i = 0; i < s_iPhantomCount; i++) { if (strcasecmp (phmName, s_aszPhantomName[i]) == 0) { id = i; break; } } return (id); } bool Phantom::createFromPhantom (const char* const phmName) { int phmid = convertNameToPhantomID (phmName); if (phmid == PHM_INVALID) { m_fail = true; m_failMessage = "Invalid phantom name "; m_failMessage += phmName; return false; } m_name = phmName; createFromPhantom (phmid); return true; } bool Phantom::createFromPhantom (const int phmid) { switch (phmid) { case PHM_HERMAN: addStdHerman(); break; case PHM_SHEPP_LOGAN: addStdSheppLogan(); break; case PHM_UNITPULSE: m_composition = P_UNIT_PULSE; addPElem ("rectangle", 0., 0., 100., 100., 0., 0.); // outline addPElem ("ellipse", 0., 0., 1., 1., 0., 1.); // pulse break; default: m_fail = true; m_failMessage = "Illegal phantom id "; m_failMessage += phmid; return false; } m_id = phmid; return true; } /* METHOD IDENTIFICATION * createFromFile Add PhantomElements from file * * SYNOPSIS * createFromFile (filename) * * RETURNS * true if pelem were added * false if an pelem not added */ bool Phantom::createFromFile (const char* const fname) { bool bGoodFile = true; FILE *fp; if ((fp = fopen (fname, "r")) == NULL) return (false); m_name = fname; while (1) { double cx, cy, u, v, rot, dens; char pelemtype[80]; int status = fscanf (fp, "%79s %lf %lf %lf %lf %lf %lf", pelemtype, &cx, &cy, &u, &v, &rot, &dens); if (status == static_cast(EOF)) break; else if (status != 7) { sys_error (ERR_WARNING, "Insufficient fields reading phantom file %s [Phantom::createFromFile]", fname); bGoodFile = false; } addPElem (pelemtype, cx, cy, u, v, rot, dens); } fclose (fp); return (bGoodFile); } bool Phantom::fileWrite (const char* const fname) { fstream file (fname, std::ios::out); if (! file.fail()) printDefinitions (file); return ! file.fail(); } /* NAME * addPElem Add pelem * * SYNOPSIS * addPElem (type, cx, cy, u, v, rot, atten) * char *type type of pelem (box, ellipse, etc) * double cx, cy pelem center * double u,v pelem size * double rot rotation angle of pelem (in degrees) * double atten x-ray attenuation cooefficient */ void Phantom::addPElem (const char *type, const double cx, const double cy, const double u, const double v, const double rot, const double atten) { PhmElemType pe_type = PhantomElement::convertNameToType (type); if (pe_type == PELEM_INVALID) { sys_error (ERR_WARNING, "Unknown PhantomElement type %s [PhantomElement::PhantomElement]", type); return; } PhantomElement *pelem = new PhantomElement (type, cx, cy, u, v, rot, atten); m_listPElem.push_front (pelem); // update phantom limits if (m_xmin > pelem->xmin()) m_xmin = pelem->xmin(); if (m_xmax < pelem->xmax()) m_xmax = pelem->xmax(); if (m_ymin > pelem->ymin()) m_ymin = pelem->ymin(); if (m_ymax < pelem->ymax()) m_ymax = pelem->ymax(); m_nPElem++; } /*----------------------------------------------------------------------*/ /* Input-Output Routines */ /*----------------------------------------------------------------------*/ /* NAME * print Print vertices of Phantom pelems * * SYNOPSIS * print (phm) */ void Phantom::print (std::ostream& os) const { os << "Number of PElements: " << m_nPElem << "\n"; os << "Limits: xmin=" << m_xmin << ", ymin=" << m_ymin << ", xmax=" << m_xmax << ", ymax=" << m_ymax << "\n"; for (PElemConstIterator i = m_listPElem.begin(); i != m_listPElem.end(); i++) { const PhantomElement& rPE = **i; os << "PhantomElement: nPoints=" << rPE.nOutlinePoints(); os << ", atten=" << rPE.atten() << " rot=" << convertRadiansToDegrees (rPE.rot()) << "\n"; os << "xmin=" << rPE.xmin() << ", ymin=" << rPE.ymin() << ", xmax=" << rPE.xmax() << ", ymax=" << rPE.ymax() << "\n"; if (false) for (int i = 0; i < rPE.nOutlinePoints(); i++) os << rPE.xOutline()[i] << "," << rPE.yOutline()[i] << "\n"; } } void Phantom::print (std::ostringstream& os) const { os << "Number of PElements: " << m_nPElem << "\n"; os << "Limits: xmin=" << m_xmin << ", ymin=" << m_ymin << ", xmax=" << m_xmax << ", ymax=" << m_ymax << "\n"; for (PElemConstIterator i = m_listPElem.begin(); i != m_listPElem.end(); i++) { const PhantomElement& rPE = **i; os << "PhantomElement: nPoints=" << rPE.nOutlinePoints(); os << ", atten=" << rPE.atten() << " rot=" << convertRadiansToDegrees (rPE.rot()) << "\n"; os << "xmin=" << rPE.xmin() << ", ymin=" << rPE.ymin() << ", xmax=" << rPE.xmax() << ", ymax=" << rPE.ymax() << "\n"; if (false) for (int i = 0; i < rPE.nOutlinePoints(); i++) os << rPE.xOutline()[i] << "," << rPE.yOutline()[i] << "\n"; } } void Phantom::printDefinitions (std::ostream& os) const { for (PElemConstIterator i = m_listPElem.begin(); i != m_listPElem.end(); i++) { const PhantomElement& rPE = **i; rPE.printDefinition (os); } } void Phantom::printDefinitions (std::ostringstream& os) const { for (PElemConstIterator i = m_listPElem.begin(); i != m_listPElem.end(); i++) { const PhantomElement& rPE = **i; rPE.printDefinition (os); } } /* NAME * show Show vector outline of Phantom to user * * SYNOPSIS * show (pic) */ #ifdef HAVE_SGP void Phantom::show () const { SGPDriver driverSGP ("Phantom Show"); SGP sgp (driverSGP); show (sgp); std::cout << "Press return to continue"; cio_kb_getc(); } void Phantom::show (SGP& sgp) const { double wsize = m_xmax - m_xmin; if ((m_ymax - m_ymin) > wsize) wsize = m_ymax - m_ymin; wsize *= 1.01; double halfWindow = wsize / 2; double xcent = m_xmin + (m_xmax - m_xmin) / 2; double ycent = m_ymin + (m_ymax - m_ymin) / 2; sgp.setWindow (xcent - halfWindow, ycent - halfWindow, xcent + halfWindow, ycent + halfWindow); draw (sgp); } #endif /* NAME * draw Draw vector outline of Phantom * * SYNOPSIS * draw () */ #ifdef HAVE_SGP void Phantom::draw (SGP& sgp) const { for (PElemIterator i = m_listPElem.begin(); i != m_listPElem.end(); i++) sgp.polylineAbs ((*i)->xOutline(), (*i)->yOutline(), (*i)->nOutlinePoints()); } #endif /* NAME * addStdSheppLogan Make head phantom of Shepp-Logan * * REFERENCES * S. W. Rowland, "Computer Implementation of Image Reconstruction * Formulas", in "Image Reconstruction from Projections: Implementation * and Applications", edited by G. T. Herman, 1978. */ void Phantom::addStdSheppLogan () { addPElem ("ellipse", 0.0000, 0.0000, 0.6900, 0.9200, 0.0, 1.00); addPElem ("ellipse", 0.0000, -0.0184, 0.6624, 0.8740, 0.0, -0.98); addPElem ("ellipse", 0.2200, 0.0000, 0.1100, 0.3100, -18.0, -0.02); addPElem ("ellipse", -0.2200, 0.0000, 0.1600, 0.4100, 18.0, -0.02); addPElem ("ellipse", 0.0000, 0.3500, 0.2100, 0.2500, 0.0, 0.01); addPElem ("ellipse", 0.0000, 0.1000, 0.0460, 0.0460, 0.0, 0.01); addPElem ("ellipse", 0.0000, -0.1000, 0.0460, 0.0460, 0.0, 0.01); addPElem ("ellipse", -0.0800, -0.6050, 0.0460, 0.0230, 0.0, 0.01); addPElem ("ellipse", 0.0000, -0.6050, 0.0230, 0.0230, 0.0, 0.01); addPElem ("ellipse", 0.0600, -0.6050, 0.0230, 0.0230, 0.0, 0.01); addPElem ("ellipse", 0.5538, -0.3858, 0.0330, 0.2060, -18.0, 0.03); } /* NAME * addStdHerman Standard head phantom of G. T. Herman * * REFERENCES * G. T. Herman, "Image Reconstructions from Projections: The Fundementals * of Computed Tomography", 1979. */ void Phantom::addStdHerman () { addPElem ("ellipse", 0.000, 1.50, 0.375, 0.3000, 90.00, -0.003); addPElem ("ellipse", 0.675, -0.75, 0.225, 0.1500, 140.00, 0.010); addPElem ("ellipse", 0.750, 1.50, 0.375, 0.2250, 50.00, 0.003); addPElem ("segment", 1.375, -7.50, 1.100, 0.6250, 19.20, -0.204); addPElem ("segment", 1.375, -7.50, 1.100, 4.3200, 19.21, 0.204); addPElem ("segment", 0.000, -2.25, 1.125, 0.3750, 0.00, -0.003); addPElem ("segment", 0.000, -2.25, 1.125, 3.0000, 0.00, 0.003); addPElem ("segment", -1.000, 3.75, 1.000, 0.5000, 135.00, -0.003); addPElem ("segment", -1.000, 3.75, 1.000, 3.0000, 135.00, 0.003); addPElem ("segment", 1.000, 3.75, 1.000, 0.5000, 225.00, -0.003); addPElem ("segment", 1.000, 3.75, 1.000, 3.0000, 225.00, 0.003); addPElem ("triangle", 5.025, 3.75, 1.125, 0.5000, 110.75, 0.206); addPElem ("triangle",-5.025, 3.75, 1.125, 0.9000,-110.75, 0.206); addPElem ("ellipse", 0.000, 0.00, 8.625, 6.4687, 90.00, 0.416); addPElem ("ellipse", 0.000, 0.00, 7.875, 5.7187, 90.00, -0.206); } /* NAME * convertToImagefile Make image array from Phantom * * SYNOPSIS * pic_to_imagefile (pic, im, nsample) * Phantom& pic Phantom definitions * ImageFile *im Computed pixel array * int nsample Number of samples along each axis for each pixel * (total samples per pixel = nsample * nsample) */ void Phantom::convertToImagefile (ImageFile& im, double dViewRatio, const int in_nsample, const int trace) const { convertToImagefile (im, dViewRatio, in_nsample, trace, 0, im.nx(), true); } void Phantom::convertToImagefile (ImageFile& im, const double dViewRatio, const int in_nsample, const int trace, const int colStart, const int colCount, bool bStoreAtColumnPos) const { int iStorageOffset = (bStoreAtColumnPos ? colStart : 0); convertToImagefile (im, im.nx(), dViewRatio, in_nsample, trace, colStart, colCount, iStorageOffset); } void Phantom::convertToImagefile (ImageFile& im, const int iTotalRasterCols, const double dViewRatio, const int in_nsample, const int trace, const int colStart, const int colCount, int iStorageOffset) const { const int nx = im.nx(); const int ny = im.ny(); if (nx < 2 || ny < 2) return; int nsample = in_nsample; if (nsample < 1) nsample = 1; double dx = m_xmax - m_xmin; double dy = m_ymax - m_ymin; double xcent = m_xmin + dx / 2; double ycent = m_ymin + dy / 2; double dHalflen = dViewRatio * (getDiameterBoundaryCircle() / SQRT2 / 2); double xmin = xcent - dHalflen; double xmax = xcent + dHalflen; double ymin = ycent - dHalflen; double ymax = ycent + dHalflen; // Each pixel holds the average of the intensity of the cell with (ix,iy) at the center of the pixel // Set major increments so that the last cell v[nx-1][ny-1] will start at xmax - xinc, ymax - yinc). // Set minor increments so that sample points are centered in cell double xinc = (xmax - xmin) / (iTotalRasterCols); double yinc = (ymax - ymin) / ny; double kxinc = xinc / nsample; /* interval between samples */ double kyinc = yinc / nsample; double kxofs = kxinc / 2; /* offset of 1st point */ double kyofs = kyinc / 2; im.setAxisExtent (xmin, xmax, ymin, ymax); im.setAxisIncrement (xinc, yinc); ImageFileArray v = im.getArray(); for (int ix = 0; ix < colCount; ix++) { int iColStore = ix + iStorageOffset; ImageFileColumn vCol = v[iColStore]; for (int iy = 0; iy < ny; iy++) *vCol++ = 0; } #if HAVE_OPENMP double x_start = xmin + (colStart * xinc); for (PElemConstIterator pelem = m_listPElem.begin(); pelem != m_listPElem.end(); pelem++) { const PhantomElement& rPElem = **pelem; #pragma omp parallel for for (int ix = 0; ix < colCount; ix++) { double x = x_start + ix * xinc; int iColStore = ix + iStorageOffset; ImageFileColumn vCol = v[iColStore]; for (int iy = 0; iy < ny; iy++) { double y = ymin + iy * yinc; double dAtten = 0; for (int kx = 0; kx < nsample; kx++) { double xi = x + kxofs + kxinc * kx; for (int ky = 0; ky < nsample; ky++) { double yi = y + kyofs + ky * kyinc; if (rPElem.isPointInside (xi, yi, PHM_COORD)) dAtten += rPElem.atten(); } // ky } // kx *vCol++ += dAtten; } /* iy */ } /* ix */ } /* pelem */ #else double x_start = xmin + (colStart * xinc); for (PElemConstIterator pelem = m_listPElem.begin(); pelem != m_listPElem.end(); pelem++) { const PhantomElement& rPElem = **pelem; double x, y, xi, yi; int ix, iy, kx, ky; for (ix = 0, x = x_start; ix < colCount; ix++, x += xinc) { int iColStore = ix + iStorageOffset; ImageFileColumn vCol = v[iColStore]; for (iy = 0, y = ymin; iy < ny; iy++, y += yinc) { double dAtten = 0; for (kx = 0, xi = x + kxofs; kx < nsample; kx++, xi += kxinc) { for (ky = 0, yi = y + kyofs; ky < nsample; ky++, yi += kyinc) if (rPElem.isPointInside (xi, yi, PHM_COORD)) dAtten += rPElem.atten(); } // for kx *vCol++ += dAtten; } /* for iy */ } /* for ix */ } /* for pelem */ #endif if (nsample > 1) { double factor = 1.0 / static_cast(nsample * nsample); #if HAVE_OPENMP #pragma omp parallel for #endif for (int ix = 0; ix < colCount; ix++) { int iColStore = ix + iStorageOffset; ImageFileColumn vCol = v[iColStore]; for (int iy = 0; iy < ny; iy++) *vCol++ *= factor; } } } //////////////////////////////////////////////////////////////////////////////////////////////////////// // CLASS IDENTIFICATION // // PhantomElement // // PURPOSE // //////////////////////////////////////////////////////////////////////////////////////////////////////// PhantomElement::PhantomElement (const char *type, const double cx, const double cy, const double u, const double v, const double rot, const double atten) : m_cx(cx), m_cy(cy), m_u(u), m_v(v), m_atten(atten), m_nPoints(0), m_xOutline(0), m_yOutline(0) { m_rot = convertDegreesToRadians (rot); // convert angle to radians m_type = convertNameToType (type); makeTransformMatrices (); // calc transform matrices between phantom and normalized phantomelement makeVectorOutline (); // calculate vector outline of pelem m_rectLimits[0] = m_xmin; m_rectLimits[1] = m_ymin; m_rectLimits[2] = m_xmax; m_rectLimits[3] = m_ymax; } PhantomElement::~PhantomElement () { delete m_xOutline; delete m_yOutline; } void PhantomElement::printDefinition (std::ostream& os) const { os << convertTypeToName (m_type) << " " << m_cx << " " << m_cy << " " << m_u << " " << m_v << " " << convertRadiansToDegrees (m_rot) << " " << m_atten << "\n"; } void PhantomElement::printDefinition (std::ostringstream& os) const { os << convertTypeToName (m_type) << " " << m_cx << " " << m_cy << " " << m_u << " " << m_v << " " << convertRadiansToDegrees (m_rot) << " " << m_atten << "\n"; } PhmElemType PhantomElement::convertNameToType (const char* const typeName) { PhmElemType type = PELEM_INVALID; if (strcasecmp (typeName, "rectangle") == 0) type = PELEM_RECTANGLE; else if (strcasecmp (typeName, "triangle") == 0) type = PELEM_TRIANGLE; else if (strcasecmp (typeName, "ellipse") == 0) type = PELEM_ELLIPSE; else if (strcasecmp (typeName, "sector") == 0) type = PELEM_SECTOR; else if (strcasecmp (typeName, "segment") == 0) type = PELEM_SEGMENT; return (type); } const char* const PhantomElement::convertTypeToName (PhmElemType iType) { static const char* pszType = "Unknown"; if (iType == PELEM_RECTANGLE) pszType = "rectangle"; else if (iType == PELEM_TRIANGLE) pszType = "triangle"; else if (iType == PELEM_ELLIPSE) pszType = "ellipse"; else if (iType == PELEM_SECTOR) pszType = "sector"; else if (iType == PELEM_SEGMENT) pszType = "segment"; return pszType; } void PhantomElement::makeTransformMatrices () { GRFMTX_2D temp; // To map normalized Pelem coords to world Phantom // scale by (u, v) // rotate by rot // translate by (cx, cy) scale_mtx2 (m_xformObjToPhm, m_u, m_v); rot_mtx2 (temp, m_rot); mult_mtx2 (m_xformObjToPhm, temp, m_xformObjToPhm); xlat_mtx2 (temp, m_cx, m_cy); mult_mtx2 (m_xformObjToPhm, temp, m_xformObjToPhm); // to map world Phantom coodinates to normalized PElem coords // translate by (-cx, -cy) // rotate by -rot // scale by (1/u, 1/v) xlat_mtx2 (m_xformPhmToObj, -m_cx, -m_cy); rot_mtx2 (temp, -m_rot); mult_mtx2 (m_xformPhmToObj, temp, m_xformPhmToObj); scale_mtx2 (temp, 1 / m_u, 1 / m_v); mult_mtx2 (m_xformPhmToObj, temp, m_xformPhmToObj); } /* NAME * pelem_make_points INTERNAL routine to calculate point array for an pelem * * SYNOPSIS * makepelempts (pelem) * PELEM *pelem pelem whose points we are calculating * * NOTES * Called by phm_add_pelem() */ void PhantomElement::makeVectorOutline () { double radius, theta, start, stop; double xfact, yfact; int cpts; m_nPoints = 0; switch (m_type) { case PELEM_RECTANGLE: m_nPoints = 5; m_xOutline = new double [m_nPoints]; m_yOutline = new double [m_nPoints]; m_xOutline[0] =-m_u; m_yOutline[0] =-m_v; m_xOutline[1] = m_u; m_yOutline[1] =-m_v; m_xOutline[2] = m_u; m_yOutline[2] = m_v; m_xOutline[3] =-m_u; m_yOutline[3] = m_v; m_xOutline[4] =-m_u; m_yOutline[4] =-m_v; break; case PELEM_TRIANGLE: m_nPoints = 4; m_xOutline = new double [m_nPoints]; m_yOutline = new double [m_nPoints]; m_xOutline[0] =-m_u; m_yOutline[0] = 0.0; m_xOutline[1] = m_u; m_yOutline[1] = 0.0; m_xOutline[2] = 0.0; m_yOutline[2] = m_v; m_xOutline[3] =-m_u; m_yOutline[3] = 0.0; break; case PELEM_ELLIPSE: cpts = numCirclePoints (TWOPI); m_nPoints = cpts; m_xOutline = new double [m_nPoints]; m_yOutline = new double [m_nPoints]; calcEllipsePoints (m_xOutline, m_yOutline, cpts, m_u, m_v); break; case PELEM_SECTOR: radius = sqrt(m_u * m_u + m_v * m_v); theta = atan(m_u / m_v); // angle with y-axis start = 3.0 * HALFPI - theta; stop = 3.0 * HALFPI + theta; cpts = numCirclePoints (stop - start); m_nPoints = 3 + cpts; m_xOutline = new double [m_nPoints]; m_yOutline = new double [m_nPoints]; m_xOutline[0] = 0.0; m_yOutline[0] = m_v; m_xOutline[1] =-m_u; m_yOutline[1] = 0.0; calcArcPoints (&m_xOutline[2], &m_yOutline[2], cpts, 0.0, m_v, radius, start, stop); m_xOutline[cpts + 2] = 0.0; m_yOutline[cpts + 2] = m_v; break; case PELEM_SEGMENT: radius = sqrt(m_u * m_u + m_v * m_v); theta = atan (m_u / m_v); // angle with y-axis start = 3.0 * HALFPI - theta; stop = 3.0 * HALFPI + theta; cpts = numCirclePoints (stop - start); m_nPoints = cpts + 1; m_xOutline = new double [m_nPoints]; m_yOutline = new double [m_nPoints]; calcArcPoints (m_xOutline, m_yOutline, cpts, 0.0, m_v, radius, start, stop); m_xOutline[cpts] = -m_u; m_yOutline[cpts] = 0.0; break; default: sys_error(ERR_WARNING, "Illegal phantom element type %d [makeVectorOutline]", m_type); return; } rotate2d (m_xOutline, m_yOutline, m_nPoints, m_rot); xlat2d (m_xOutline, m_yOutline, m_nPoints, m_cx, m_cy); minmax_array (m_xOutline, m_nPoints, m_xmin, m_xmax); minmax_array (m_yOutline, m_nPoints, m_ymin, m_ymax); // increase pelem extent by SCALE_PELEM_EXTENT to eliminate chance of // missing actual pelem maximum due to polygonal sampling xfact = (m_xmax - m_xmin) * SCALE_PELEM_EXTENT; yfact = (m_ymax - m_ymin) * SCALE_PELEM_EXTENT; m_xmin -= xfact; m_ymin -= yfact; m_xmax += xfact; m_ymax += yfact; } /* NAME * calc_arc Calculate outline of a arc of a circle * * SYNOPSIS * calc_arc (x, y, xcent, ycent, pts, r, start, stop) * double x[], y[]; Array of points * int pts Number of points in array * double xcent, ycent Center of cirlce * double r Radius of circle * double start, stop Beginning & ending angles */ void PhantomElement::calcArcPoints (double x[], double y[], const int pts, const double xcent, const double ycent, const double r, const double start, const double stop) { if (r <= 0.0) sys_error (ERR_WARNING, "negative or zero radius in calc_arc()"); double theta = (stop - start) / (pts - 1); // angle incr. between points double c = cos(theta); double s = sin(theta); x[0] = r * cos (start) + xcent; y[0] = r * sin (start) + ycent; double xp = x[0] - xcent; double yp = y[0] - ycent; for (int i = 1; i < pts; i++) { double xc = c * xp - s * yp; double yc = s * xp + c * yp; x[i] = xc + xcent; y[i] = yc + ycent; xp = xc; yp = yc; } } // NAME // PhantomElement::calcEllipsePoints Calculate outline of a ellipse // // SYNOPSIS // calcEllipsePoints () // void PhantomElement::calcEllipsePoints (double x[], double y[], const int pts, const double u, const double v) { calcArcPoints (x, y, m_nPoints, 0.0, 0.0, 1.0, 0.0, TWOPI); // make a unit circle scale2d (x, y, m_nPoints, m_u, m_v); // scale to ellipse } /* NAME * circle_pts Calculate number of points to use for circle segment * * SYNOPSIS * n = circle_pts (theta) * int n Number of points to use for arc * double theta Length of arc in radians */ int PhantomElement::numCirclePoints (double theta) { theta = clamp (theta, 0., TWOPI); return static_cast (POINTS_PER_CIRCLE * theta / TWOPI + 1.5); } bool PhantomElement::clipLineWorldCoords (double& x1, double& y1, double& x2, double &y2) const { /* check if ray is outside of pelem extents */ double cx1 = x1, cy1 = y1, cx2 = x2, cy2 = y2; if (! clip_rect (cx1, cy1, cx2, cy2, m_rectLimits)) return false; // convert phantom coordinates to pelem coordinates xform_mtx2 (m_xformPhmToObj, x1, y1); xform_mtx2 (m_xformPhmToObj, x2, y2); if (! clipLineNormalizedCoords (x1, y1, x2, y2)) return false; // convert standard pelem coordinates back to phantom coordinates xform_mtx2 (m_xformObjToPhm, x1, y1); xform_mtx2 (m_xformObjToPhm, x2, y2); return true; } /* NAME * pelem_clip_line Clip pelem against an arbitrary line * * SYNOPSIS * pelem_clip_line (pelem, x1, y1, x2, y2) * PhantomElement& pelem; Pelem to be clipped * double *x1, *y1, *x2, *y2 Endpoints of line to be clipped * * RETURNS * true if line passes through pelem * (x1, y1, x2, y2 hold coordinates of new line) * false if line do not pass through pelem * (x1, y1, x2, y2 are undefined) */ bool PhantomElement::clipLineNormalizedCoords (double& x1, double& y1, double& x2, double& y2) const { bool accept = false; switch (m_type) { case PELEM_RECTANGLE: double rect[4]; rect[0] = -1.0; rect[1] = -1.0; rect[2] = 1.0; rect[3] = 1.0; accept = clip_rect (x1, y1, x2, y2, rect); break; case PELEM_ELLIPSE: accept = clip_circle (x1, y1, x2, y2, 0.0, 0.0, 1.0, 0.0, 0.0); break; case PELEM_TRIANGLE: accept = clip_triangle (x1, y1, x2, y2, 1.0, 1.0, true); break; case PELEM_SEGMENT: accept = clip_segment (x1, y1, x2, y2, m_u, m_v); break; case PELEM_SECTOR: accept = clip_sector (x1, y1, x2, y2, m_u, m_v); break; default: sys_error (ERR_WARNING, "Illegal pelem type %d [pelem_clip_line]", m_type); break; } return(accept); } // METHOD IDENTIFICATION // PhantomElement::isPointInside Check if point is inside pelem // // SYNOPSIS // is_point_inside (pelem, x, y, coord_type) // double x, y Point to see if lies in pelem // int coord_type Coordinate type (PELEM_COORD or PHM_COORD) // // RETURNS // true if point lies within pelem // false if point lies outside of pelem bool PhantomElement::isPointInside (double x, double y, const CoordType coord_type) const { if (coord_type == PHM_COORD) { xform_mtx2 (m_xformPhmToObj, x, y); } else if (coord_type != PELEM_COORD) { sys_error(ERR_WARNING, "Illegal coordinate type in pelem_is_point_inside"); return (false); } switch (m_type) { case PELEM_RECTANGLE: if (x > 1. || x < -1. || y > 1. || y < -1.) return (false); else return (true); break; case PELEM_TRIANGLE: if (y < 0. || y > 1. - x || y > 1. + x) return (false); else return (true); break; case PELEM_ELLIPSE: if (x > 1. || x < -1. || y > 1. || y < -1.) return (false); if (x * x + y * y > 1.) // check if inside unit circle return (false); else return (true); break; // for clipping segments & sectors, must NOT scale by (1/u, 1/v) // because this destroys information about size of arc component case PELEM_SEGMENT: if (x > 1. || x < -1. || y > 0.) return (false); // clip against y > 0 x *= m_u; // put back u & v scale y *= m_v; if (x * x + (y-m_v) * (y-m_v) > m_u * m_u + m_v * m_v) return (false); // clip against circle, r = sqrt(@) else return (true); break; case PELEM_SECTOR: if (x > 1. || x < -1. || y > 1.) // extent return (false); if (y > 1. - x || y > 1. + x) // triangle return (false); // clip against triangle x *= m_u; // circle: put back u & v scale y *= m_v; if (x * x + (y-m_v) * (y-m_v) > m_u * m_u + m_v * m_v) return (false); // clip against circle else return (true); break; default: sys_error (ERR_WARNING, "Illegal pelem type in pelem_is_point_inside()"); break; } return (false); } ctsim-6.0.2/libctsim/fourier.cpp0000644000175000017500000001223511240454454015643 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: fourier.cpp ** Purpose: Fourier transform functions ** Programmer: Kevin Rosenberg ** Date Started: Dec 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "ct.h" void Fourier::shuffleFourierToNaturalOrder (ImageFile& im) { ImageFileArray vReal = im.getArray(); ImageFileArray vImag = im.getImaginaryArray(); unsigned int ix, iy; unsigned int nx = im.nx(); unsigned int ny = im.ny(); // shuffle each column for (ix = 0; ix < nx; ix++) { Fourier::shuffleFourierToNaturalOrder (vReal[ix], ny); if (im.isComplex()) Fourier::shuffleFourierToNaturalOrder (vImag[ix], ny); } // shuffle each row float* pRow = new float [nx]; for (iy = 0; iy < ny; iy++) { for (ix = 0; ix < nx; ix++) pRow[ix] = vReal[ix][iy]; Fourier::shuffleFourierToNaturalOrder (pRow, nx); for (ix = 0; ix < nx; ix++) vReal[ix][iy] = pRow[ix]; if (im.isComplex()) { for (ix = 0; ix < nx; ix++) pRow[ix] = vImag[ix][iy]; Fourier::shuffleFourierToNaturalOrder (pRow, nx); for (ix = 0; ix < nx; ix++) vImag[ix][iy] = pRow[ix]; } } delete pRow; } void Fourier::shuffleNaturalToFourierOrder (ImageFile& im) { ImageFileArray vReal = im.getArray(); ImageFileArray vImag = im.getImaginaryArray(); unsigned int ix, iy; unsigned int nx = im.nx(); unsigned int ny = im.ny(); // shuffle each x column for (ix = 0; ix < nx; ix++) { Fourier::shuffleNaturalToFourierOrder (vReal[ix], ny); if (im.isComplex()) Fourier::shuffleNaturalToFourierOrder (vImag[ix], ny); } // shuffle each y row float* pRow = new float [nx]; for (iy = 0; iy < ny; iy++) { for (ix = 0; ix < nx; ix++) pRow[ix] = vReal[ix][iy]; Fourier::shuffleNaturalToFourierOrder (pRow, nx); for (ix = 0; ix < nx; ix++) vReal[ix][iy] = pRow[ix]; if (im.isComplex()) { for (ix = 0; ix < nx; ix++) pRow[ix] = vImag[ix][iy]; Fourier::shuffleNaturalToFourierOrder (pRow, nx); for (ix = 0; ix < nx; ix++) vImag[ix][iy] = pRow[ix]; } } delete [] pRow; } #ifdef HAVE_FFTW void Fourier::shuffleNaturalToFourierOrder (fftw_complex* pVector, const int n) { fftw_complex* pTemp = static_cast(fftw_malloc(sizeof(fftw_complex) * n)); int i; if (isOdd(n)) { // Odd int iHalfN = (n - 1) / 2; pTemp[0][0] = pVector[iHalfN][0]; pTemp[0][1] = pVector[iHalfN][1]; for (i = 0; i < iHalfN; i++) { pTemp[i + 1][0] = pVector[i + 1 + iHalfN][0]; pTemp[i + 1][1] = pVector[i + 1 + iHalfN][1]; } for (i = 0; i < iHalfN; i++) { pTemp[i + iHalfN + 1][0] = pVector[i][0]; pTemp[i + iHalfN + 1][1] = pVector[i][1]; } } else { // Even int iHalfN = n / 2; pTemp[0][0] = pVector[iHalfN][0]; pTemp[0][1] = pVector[iHalfN][1]; for (i = 0; i < iHalfN - 1; i++) { pTemp[i + 1][0] = pVector[i + iHalfN + 1][0]; pTemp[i + 1][1] = pVector[i + iHalfN + 1][1]; } for (i = 0; i < iHalfN; i++) { pTemp[i + iHalfN][0] = pVector[i][0]; pTemp[i + iHalfN][1] = pVector[i][1]; } } for (i = 0; i < n; i++) { pVector[i][0] = pTemp[i][0]; pVector[i][1] = pTemp[i][1]; } fftw_free(pTemp); } void Fourier::shuffleFourierToNaturalOrder (fftw_complex* pVector, const int n) { fftw_complex* pTemp = static_cast(fftw_malloc(sizeof(fftw_complex) * n)); int i; if (isOdd(n)) { // Odd int iHalfN = (n - 1) / 2; pTemp[iHalfN][0] = pVector[0][0]; pTemp[iHalfN][1] = pVector[0][1]; for (i = 0; i < iHalfN; i++) { pTemp[i + 1 + iHalfN][0] = pVector[i + 1][0]; pTemp[i + 1 + iHalfN][1] = pVector[i + 1][1]; } for (i = 0; i < iHalfN; i++) { pTemp[i][0] = pVector[i + iHalfN + 1][0]; pTemp[i][1] = pVector[i + iHalfN + 1][1]; } } else { // Even int iHalfN = n / 2; pTemp[iHalfN][0] = pVector[0][0]; pTemp[iHalfN][1] = pVector[0][1]; for (i = 0; i < iHalfN; i++) { pTemp[i][0] = pVector[i + iHalfN][0]; pTemp[i][1] = pVector[i + iHalfN][1]; } for (i = 0; i < iHalfN - 1; i++) { pTemp[i + iHalfN + 1][0] = pVector[i+1][0]; pTemp[i + iHalfN + 1][1] = pVector[i+1][1]; } } for (i = 0; i < n; i++) { pVector[i][0] = pTemp[i][0]; pVector[i][1] = pTemp[i][1]; } fftw_free(pTemp); } #endif ctsim-6.0.2/libctsim/backprojectors.cpp0000644000175000017500000006015613254360476017217 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: backprojectors.cpp Classes for backprojection ** Programmer: Kevin Rosenberg ** Date Started: June 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "ct.h" #include "interpolator.h" const int Backprojector::BPROJ_INVALID = -1; const int Backprojector::BPROJ_TRIG = 0; const int Backprojector::BPROJ_TABLE = 1; const int Backprojector::BPROJ_DIFF = 2; const int Backprojector::BPROJ_IDIFF = 3; const char* const Backprojector::s_aszBackprojectName[] = { "trig", "table", "diff", "idiff", }; const char* const Backprojector::s_aszBackprojectTitle[] = { "Direct Trigometric", "Trigometric Table", "Difference Iteration", "Integer Difference Iteration", }; const int Backprojector::s_iBackprojectCount = sizeof(s_aszBackprojectName) / sizeof(const char*); const int Backprojector::INTERP_INVALID = -1; const int Backprojector::INTERP_NEAREST = 0; const int Backprojector::INTERP_LINEAR = 1; const int Backprojector::INTERP_CUBIC = 2; const int Backprojector::INTERP_FREQ_PREINTERPOLATION = 3; #if HAVE_BSPLINE_INTERP const int Backprojector::INTERP_BSPLINE = 4; const int Backprojector::INTERP_1BSPLINE = 5; const int Backprojector::INTERP_2BSPLINE = 6; const int Backprojector::INTERP_3BSPLINE = 7; #endif const char* const Backprojector::s_aszInterpName[] = { "nearest", "linear", "cubic", #if HAVE_FREQ_PREINTERP "freq_preinterpolationj", #endif #if HAVE_BSPLINE_INTERP "bspline", "1bspline", "2bspline", "3bspline", #endif }; const char* const Backprojector::s_aszInterpTitle[] = { "Nearest", "Linear", "Cubic", #if HAVE_FREQ_PREINTERP "Frequency Preinterpolation", #endif #if HAVE_BSPLINE_INTERP "B-Spline", "B-Spline 1st Order", "B-Spline 2nd Order", "B-Spline 3rd Order", #endif }; const int Backprojector::s_iInterpCount = sizeof(s_aszInterpName) / sizeof(const char*); Backprojector::Backprojector (const Projections& proj, ImageFile& im, const char* const backprojName, const char* const interpName, const int interpFactor, const ReconstructionROI* pROI) { m_fail = false; m_pBackprojectImplem = NULL; initBackprojector (proj, im, backprojName, interpName, interpFactor, pROI); } void Backprojector::BackprojectView (const double* const viewData, const double viewAngle) { if (m_pBackprojectImplem != NULL) m_pBackprojectImplem->BackprojectView (viewData, viewAngle); } void Backprojector::PostProcessing() { if (m_pBackprojectImplem != NULL) m_pBackprojectImplem->PostProcessing(); } Backprojector::~Backprojector () { delete m_pBackprojectImplem; } // FUNCTION IDENTIFICATION // Backproject* projector = selectBackprojector (...) // // PURPOSE // Selects a backprojector based on BackprojType // and initializes the backprojector bool Backprojector::initBackprojector (const Projections& proj, ImageFile& im, const char* const backprojName, const char* const interpName, const int interpFactor, const ReconstructionROI* pROI) { m_nameBackproject = backprojName; m_nameInterpolation = interpName; m_pBackprojectImplem = NULL; m_idBackproject = convertBackprojectNameToID (backprojName); if (m_idBackproject == BPROJ_INVALID) { m_fail = true; m_failMessage = "Invalid backprojection name "; m_failMessage += backprojName; } m_idInterpolation = convertInterpNameToID (interpName); if (m_idInterpolation == INTERP_INVALID) { m_fail = true; m_failMessage = "Invalid interpolation name "; m_failMessage += interpName; } if (m_fail || m_idBackproject == BPROJ_INVALID || m_idInterpolation == INTERP_INVALID) { m_fail = true; return false; } if (proj.geometry() == Scanner::GEOMETRY_EQUILINEAR) m_pBackprojectImplem = static_cast(new BackprojectEquilinear(proj, im, m_idInterpolation, interpFactor, pROI)); else if (proj.geometry() == Scanner::GEOMETRY_EQUIANGULAR) m_pBackprojectImplem = static_cast(new BackprojectEquiangular(proj, im, m_idInterpolation, interpFactor, pROI)); else if (proj.geometry() == Scanner::GEOMETRY_PARALLEL) { if (m_idBackproject == BPROJ_TRIG) m_pBackprojectImplem = static_cast(new BackprojectTrig (proj, im, m_idInterpolation, interpFactor, pROI)); else if (m_idBackproject == BPROJ_TABLE) m_pBackprojectImplem = static_cast(new BackprojectTable (proj, im, m_idInterpolation, interpFactor, pROI)); else if (m_idBackproject == BPROJ_DIFF) m_pBackprojectImplem = static_cast(new BackprojectDiff (proj, im, m_idInterpolation, interpFactor, pROI)); else if (m_idBackproject == BPROJ_IDIFF) m_pBackprojectImplem = static_cast(new BackprojectIntDiff (proj, im, m_idInterpolation, interpFactor, pROI)); } else { m_fail = true; m_failMessage = "Unable to select a backprojection method [Backprojector::initBackprojector]"; return false; } return true; } int Backprojector::convertBackprojectNameToID (const char* const backprojName) { int backprojID = BPROJ_INVALID; for (int i = 0; i < s_iBackprojectCount; i++) { if (strcasecmp (backprojName, s_aszBackprojectName[i]) == 0) { backprojID = i; break; } } return (backprojID); } const char* Backprojector::convertBackprojectIDToName (int bprojID) { static const char *bprojName = ""; if (bprojID >= 0 && bprojID < s_iBackprojectCount) return (s_aszBackprojectName[bprojID]); return (bprojName); } const char* Backprojector::convertBackprojectIDToTitle (const int bprojID) { static const char *bprojTitle = ""; if (bprojID >= 0 && bprojID < s_iBackprojectCount) return (s_aszBackprojectTitle[bprojID]); return (bprojTitle); } int Backprojector::convertInterpNameToID (const char* const interpName) { int interpID = INTERP_INVALID; for (int i = 0; i < s_iInterpCount; i++) { if (strcasecmp (interpName, s_aszInterpName[i]) == 0) { interpID = i; break; } } return (interpID); } const char* Backprojector::convertInterpIDToName (const int interpID) { static const char *interpName = ""; if (interpID >= 0 && interpID < s_iInterpCount) return (s_aszInterpName[interpID]); return (interpName); } const char* Backprojector::convertInterpIDToTitle (const int interpID) { static const char *interpTitle = ""; if (interpID >= 0 && interpID < s_iInterpCount) return (s_aszInterpTitle[interpID]); return (interpTitle); } // CLASS IDENTICATION // Backproject // // PURPOSE // Pure virtual base class for all backprojectors. Backproject::Backproject (const Projections& proj, ImageFile& im, int interpType, const int interpFactor, const ReconstructionROI* pROI) : proj(proj), im(im), interpType(interpType), m_interpFactor(interpFactor), m_bPostProcessingDone(false) { detInc = proj.detInc(); nDet = proj.nDet(); iDetCenter = (nDet - 1) / 2; // index refering to L=0 projection if (proj.geometry() == Scanner::GEOMETRY_PARALLEL) rotScale = PI / proj.nView(); // scale by number of PI rotations else if (proj.geometry() == Scanner::GEOMETRY_EQUIANGULAR || proj.geometry() == Scanner::GEOMETRY_EQUILINEAR) rotScale = (2 * PI) / proj.nView(); // scale by number of 2PI rotations else sys_error (ERR_SEVERE, "Invalid geometry type %d [Backproject::Backproject]", proj.geometry()); v = im.getArray(); nx = im.nx(); ny = im.ny(); im.arrayDataClear(); xMin = -proj.phmLen() / 2; // Retangular coords of phantom xMax = xMin + proj.phmLen(); yMin = -proj.phmLen() / 2; yMax = yMin + proj.phmLen(); if (pROI) { if (pROI->m_dXMin > xMin) xMin = pROI->m_dXMin; if (pROI->m_dXMax < xMax) xMax = pROI->m_dXMax; if (pROI->m_dYMin > yMin) yMin = pROI->m_dYMin; if (pROI->m_dYMax < yMax) yMax = pROI->m_dYMax; if (xMin > xMax) { double temp = xMin; xMin = xMax; xMax = temp; } if (yMin > yMax) { double temp = yMin; yMin = yMax; yMax = temp; } } xInc = (xMax - xMin) / nx; // size of cells yInc = (yMax - yMin) / ny; im.setAxisIncrement (xInc, yInc); im.setAxisExtent (xMin, xMax, yMin, yMax); m_dFocalLength = proj.focalLength(); m_dSourceDetectorLength = proj.sourceDetectorLength(); } Backproject::~Backproject () {} void Backproject::PostProcessing() { m_bPostProcessingDone = true; } void Backproject::ScaleImageByRotIncrement () { for (int ix = 0; ix < nx; ix++) for (int iy = 0; iy < ny; iy++) v[ix][iy] *= rotScale; } void Backproject::errorIndexOutsideDetector (int ix, int iy, double theta, double r, double phi, double L, int iDetPos) { sys_error (ERR_WARNING, "r=%f, phi=%f", r, phi); errorIndexOutsideDetector (ix, iy, theta, L, iDetPos); } void Backproject::errorIndexOutsideDetector (int ix, int iy, double theta, double L, int iDetPos) { #if 1 std::ostringstream os; os << "ix=" << ix << ", iy=" << iy << ", theta=" << theta << ", L=" << L << ", detinc=" << detInc << "\n"; os << "ndet=" << nDet << ", detInc=" << detInc << ", iDetCenter=" << iDetCenter << "\n"; os << "xMin=" << xMin << ", xMax=" << xMax << ", xInc=" << xInc << "\n"; os << "yMin=" << yMin << ", yMax=" << yMax << ", yInc=" << yInc << "\n"; os << "iDetPos index outside bounds: " << iDetPos << " [backprojector]";; sys_error (ERR_WARNING, os.str().c_str()); #endif } // CLASS IDENTICATION // BackprojectTrig // // PURPOSE // Uses trigometric functions at each point in image for backprojection. void BackprojectTrig::BackprojectView (const double* const filteredProj, const double view_angle) { double theta = view_angle; CubicPolyInterpolator* pCubicInterp = NULL; if (interpType == Backprojector::INTERP_CUBIC) pCubicInterp = new CubicPolyInterpolator (filteredProj, nDet); double x = xMin + xInc / 2; // Rectang coords of center of pixel for (int ix = 0; ix < nx; x += xInc, ix++) { double y = yMin + yInc / 2; for (int iy = 0; iy < ny; y += yInc, iy++) { double r = sqrt (x * x + y * y); // distance of cell from center double phi = atan2 (y, x); // angle of cell from center double L = r * cos (theta - phi); // position on detector if (interpType == Backprojector::INTERP_NEAREST) { int iDetPos = iDetCenter + nearest (L / detInc); // calc'd index in the filter raysum array if (iDetPos >= 0 && iDetPos < nDet) v[ix][iy] += rotScale * filteredProj[iDetPos]; } else if (interpType == Backprojector::INTERP_LINEAR) { double p = L / detInc; // position along detector double pFloor = floor (p); int iDetPos = iDetCenter + static_cast(pFloor); double frac = p - pFloor; // fraction distance from det if (iDetPos >= 0 && iDetPos < nDet - 1) v[ix][iy] += rotScale * ((1-frac) * filteredProj[iDetPos] + frac * filteredProj[iDetPos+1]); } else if (interpType == Backprojector::INTERP_CUBIC) { double p = iDetCenter + (L / detInc); // position along detector if (p >= 0 && p < nDet) v[ix][iy] += rotScale * pCubicInterp->interpolate (p); } } } if (interpType == Backprojector::INTERP_CUBIC) delete pCubicInterp; } // CLASS IDENTICATION // BackprojectTable // // PURPOSE // Precalculates trigometric function value for each point in image for backprojection. BackprojectTable::BackprojectTable (const Projections& proj, ImageFile& im, int interpType, const int interpFactor, const ReconstructionROI* pROI) : Backproject (proj, im, interpType, interpFactor, pROI) { arrayR.initSetSize (im.nx(), im.ny()); arrayPhi.initSetSize (im.nx(), im.ny()); r = arrayR.getArray(); phi = arrayPhi.getArray(); double x, y; // Rectang coords of center of pixel int ix, iy; for (x = xMin + xInc / 2, ix = 0; ix < nx; x += xInc, ix++) for (y = yMin + yInc / 2, iy = 0; iy < ny; y += yInc, iy++) { r[ix][iy] = sqrt (x * x + y * y); phi[ix][iy] = atan2 (y, x); } } BackprojectTable::~BackprojectTable () { } void BackprojectTable::PostProcessing() { if (! m_bPostProcessingDone) { ScaleImageByRotIncrement(); m_bPostProcessingDone = true; } } void BackprojectTable::BackprojectView (const double* const filteredProj, const double view_angle) { double theta = view_angle; CubicPolyInterpolator* pCubicInterp = NULL; if (interpType == Backprojector::INTERP_CUBIC) pCubicInterp = new CubicPolyInterpolator (filteredProj, nDet); for (int ix = 0; ix < nx; ix++) { ImageFileColumn pImCol = v[ix]; for (int iy = 0; iy < ny; iy++) { double L = r[ix][iy] * cos (theta - phi[ix][iy]); if (interpType == Backprojector::INTERP_NEAREST) { int iDetPos = iDetCenter + nearest(L / detInc); // calc index in the filtered raysum vector if (iDetPos >= 0 && iDetPos < nDet) { pImCol[iy] += filteredProj[iDetPos]; } } else if (interpType == Backprojector::INTERP_LINEAR) { double dPos = L / detInc; // position along detector double dPosFloor = floor (dPos); int iDetPos = iDetCenter + static_cast(dPosFloor); double frac = dPos - dPosFloor; // fraction distance from det if (iDetPos >= 0 && iDetPos < nDet - 1) { pImCol[iy] += ((1-frac) * filteredProj[iDetPos] + frac * filteredProj[iDetPos+1]); } } else if (interpType == Backprojector::INTERP_CUBIC) { double p = iDetCenter + (L / detInc); // position along detector if (p >= 0 && p < nDet) { pImCol[iy] += pCubicInterp->interpolate (p); } } } // end for y } // end for x if (interpType == Backprojector::INTERP_CUBIC) delete pCubicInterp; } // CLASS IDENTICATION // BackprojectDiff // // PURPOSE // Backprojects by precalculating the change in L position for each x & y step in the image. // Iterates in x & y direction by adding difference in L position BackprojectDiff::BackprojectDiff (const Projections& proj, ImageFile& im, int interpType, const int interpFactor, const ReconstructionROI* pROI) : Backproject (proj, im, interpType, interpFactor, pROI) { // calculate center of first pixel v[0][0] double x = xMin + xInc / 2; double y = yMin + yInc / 2; start_r = sqrt (x * x + y * y); start_phi = atan2 (y, x); im.arrayDataClear(); } BackprojectDiff::~BackprojectDiff () { } void BackprojectDiff::PostProcessing() { if (! m_bPostProcessingDone) { ScaleImageByRotIncrement(); m_bPostProcessingDone = true; } } void BackprojectDiff::BackprojectView (const double* const filteredProj, const double view_angle) { double theta = view_angle; // Distance between detectors for an angle given in units of detectors double det_dx = xInc * cos (theta) / detInc; double det_dy = yInc * sin (theta) / detInc; // calculate detPosition for first point in image (ix=0, iy=0) double detPosColBase = iDetCenter + start_r * cos (theta - start_phi) / detInc; CubicPolyInterpolator* pCubicInterp = NULL; double* deltaFilteredProj = NULL; if (interpType == Backprojector::INTERP_LINEAR) { // precalculate scaled difference for linear interpolation deltaFilteredProj = new double [nDet]; for (int i = 0; i < nDet - 1; i++) deltaFilteredProj[i] = filteredProj[i+1] - filteredProj[i]; deltaFilteredProj[nDet - 1] = 0; // last detector } else if (interpType == Backprojector::INTERP_CUBIC) { pCubicInterp = new CubicPolyInterpolator (filteredProj, nDet); } int iLastDet = nDet - 1; #if HAVE_OPENMP #pragma omp parallel for #endif for (int ix = 0; ix < nx; ix++) { double detPos = detPosColBase + (ix * det_dx); ImageFileColumn pImCol = v[ix]; for (int iy = 0; iy < ny; iy++, detPos += det_dy) { if (interpType == Backprojector::INTERP_NEAREST) { int iDetPos = nearest (detPos); // calc index in the filtered raysum vector if (iDetPos >= 0 && iDetPos < nDet) { *pImCol++ += filteredProj[iDetPos]; } } else if (interpType == Backprojector::INTERP_LINEAR) { double detPosFloor = floor (detPos); int iDetPos = static_cast(detPosFloor); double frac = detPos - detPosFloor; // fraction distance from det if (iDetPos >= 0 && iDetPos <= iLastDet) { *pImCol++ += filteredProj[iDetPos] + (frac * deltaFilteredProj[iDetPos]); } } else if (interpType == Backprojector::INTERP_CUBIC) { double p = detPos; // position along detector if (p >= 0 && p < nDet) { *pImCol++ += pCubicInterp->interpolate (p); } } } // end for y } // end for x if (interpType == Backprojector::INTERP_LINEAR) delete deltaFilteredProj; else if (interpType == Backprojector::INTERP_CUBIC) delete pCubicInterp; } // CLASS IDENTICATION // BackprojectIntDiff // // PURPOSE // Highly optimized and integer version of BackprojectDiff void BackprojectIntDiff::BackprojectView (const double* const filteredProj, const double view_angle) { double theta = view_angle; // add half PI to view angle to get perpendicular theta angle #if SIZEOF_LONG == 4 static const int scaleShift = 16; #elif SIZEOF_LONG == 8 static const int scaleShift = 32; #endif static const long scale = (1L << scaleShift); static const long scaleBitmask = scale - 1; static const long halfScale = scale / 2; static const double dInvScale = 1. / scale; const long det_dx = nearest (xInc * cos (theta) / detInc * scale); const long det_dy = nearest (yInc * sin (theta) / detInc * scale); // calculate L for first point in image (0, 0) long detPosColBase = nearest ((start_r * cos (theta - start_phi) / detInc + iDetCenter) * scale); double* deltaFilteredProj = NULL; CubicPolyInterpolator* pCubicInterp = NULL; if (interpType == Backprojector::INTERP_LINEAR) { // precalculate scaled difference for linear interpolation deltaFilteredProj = new double [nDet]; for (int i = 0; i < nDet - 1; i++) deltaFilteredProj[i] = (filteredProj[i+1] - filteredProj[i]) * dInvScale; deltaFilteredProj[nDet - 1] = 0; // last detector } else if (interpType == Backprojector::INTERP_CUBIC) { pCubicInterp = new CubicPolyInterpolator (filteredProj, nDet); } int iLastDet = nDet - 1; #if HAVE_OPENMP #pragma omp parallel for #endif for (int ix = 0; ix < nx; ix++) { long detPos = detPosColBase + (ix * det_dx); ImageFileColumn pImCol = v[ix]; for (int iy = 0; iy < ny; iy++, detPos += det_dy) { if (interpType == Backprojector::INTERP_NEAREST) { const int iDetPos = (detPos + halfScale) >> scaleShift; if (iDetPos >= 0 && iDetPos <= iLastDet) { *pImCol++ += filteredProj[iDetPos]; } else pImCol++; } else if (interpType == Backprojector::INTERP_FREQ_PREINTERPOLATION) { const int iDetPos = ((detPos + halfScale) >> scaleShift) * m_interpFactor; if (iDetPos >= 0 && iDetPos <= iLastDet) { *pImCol++ += filteredProj[iDetPos]; } else pImCol++; } else if (interpType == Backprojector::INTERP_LINEAR) { const long iDetPos = detPos >> scaleShift; if (iDetPos >= 0 && iDetPos <= iLastDet) { const long detRemainder = detPos & scaleBitmask; *pImCol++ += filteredProj[iDetPos] + (detRemainder * deltaFilteredProj[iDetPos]); } else pImCol++; } else if (interpType == Backprojector::INTERP_CUBIC) { *pImCol++ += pCubicInterp->interpolate (static_cast(detPos) / scale); } // end Cubic } // end for iy } // end for ix if (interpType == Backprojector::INTERP_LINEAR) delete deltaFilteredProj; else if (interpType == Backprojector::INTERP_CUBIC) delete pCubicInterp; } void BackprojectEquiangular::BackprojectView (const double* const filteredProj, const double view_angle) { double beta = view_angle; CubicPolyInterpolator* pCubicInterp = NULL; if (interpType == Backprojector::INTERP_CUBIC) pCubicInterp = new CubicPolyInterpolator (filteredProj, nDet); for (int ix = 0; ix < nx; ix++) { ImageFileColumn pImCol = v[ix]; for (int iy = 0; iy < ny; iy++) { double dAngleDiff = beta - phi[ix][iy]; double rcos_t = r[ix][iy] * cos (dAngleDiff); double rsin_t = r[ix][iy] * sin (dAngleDiff); double dFLPlusSin = m_dFocalLength + rsin_t; double gamma = atan (rcos_t / dFLPlusSin); double dPos = gamma / detInc; // position along detector double dL2 = dFLPlusSin * dFLPlusSin + (rcos_t * rcos_t); if (interpType == Backprojector::INTERP_NEAREST) { int iDetPos = iDetCenter + nearest(dPos); // calc index in the filtered raysum vector if (iDetPos >= 0 && iDetPos < nDet) pImCol[iy] += filteredProj[iDetPos] / dL2; } else if (interpType == Backprojector::INTERP_LINEAR) { double dPosFloor = floor (dPos); int iDetPos = iDetCenter + static_cast(dPosFloor); double frac = dPos - dPosFloor; // fraction distance from det if (iDetPos >= 0 && iDetPos < nDet - 1) pImCol[iy] += (filteredProj[iDetPos] + frac * (filteredProj[iDetPos+1] - filteredProj[iDetPos])) / dL2; } else if (interpType == Backprojector::INTERP_CUBIC) { double d = iDetCenter + dPos; // position along detector if (d >= 0 && d < nDet) pImCol[iy] += pCubicInterp->interpolate (d) / dL2; } } // end for y } // end for x if (interpType == Backprojector::INTERP_CUBIC) delete pCubicInterp; } void BackprojectEquilinear::BackprojectView (const double* const filteredProj, const double view_angle) { double beta = view_angle; CubicPolyInterpolator* pCubicInterp = NULL; if (interpType == Backprojector::INTERP_CUBIC) pCubicInterp = new CubicPolyInterpolator (filteredProj, nDet); for (int ix = 0; ix < nx; ix++) { ImageFileColumn pImCol = v[ix]; for (int iy = 0; iy < ny; iy++) { double dAngleDiff = beta - phi[ix][iy]; double rcos_t = r[ix][iy] * cos (dAngleDiff); double rsin_t = r[ix][iy] * sin (dAngleDiff); double dU = (m_dFocalLength + rsin_t) / m_dFocalLength; double dDetPos = rcos_t / dU; // Scale for imaginary detector that passes through origin of phantom, see Kak-Slaney Figure 3.22. dDetPos *= m_dSourceDetectorLength / m_dFocalLength; double dPos = dDetPos / detInc; // position along detector array if (interpType == Backprojector::INTERP_NEAREST) { int iDetPos = iDetCenter + nearest(dPos); // calc index in the filtered raysum vector if (iDetPos >= 0 && iDetPos < nDet) pImCol[iy] += (filteredProj[iDetPos] / (dU * dU)); } else if (interpType == Backprojector::INTERP_LINEAR) { double dPosFloor = floor (dPos); int iDetPos = iDetCenter + static_cast(dPosFloor); double frac = dPos - dPosFloor; // fraction distance from det if (iDetPos >= 0 && iDetPos < nDet - 1) pImCol[iy] += (filteredProj[iDetPos] + frac * (filteredProj[iDetPos+1] - filteredProj[iDetPos])) / (dU * dU); } else if (interpType == Backprojector::INTERP_CUBIC) { double d = iDetCenter + dPos; // position along detector if (d >= 0 && d < nDet) pImCol[iy] += pCubicInterp->interpolate (d) / (dU * dU); } } // end for y } // end for x if (interpType == Backprojector::INTERP_CUBIC) delete pCubicInterp; } ctsim-6.0.2/libctsim/Makefile.am0000644000175000017500000000041613254256151015517 0ustar kevinkevinnoinst_LIBRARIES = libctsim.a AM_CPPFLAGS=@my_includes@ EXTRA_DIST=Makefile.nt libctsim_a_SOURCES = filter.cpp scanner.cpp projections.cpp phantom.cpp imagefile.cpp backprojectors.cpp array2dfile.cpp trace.cpp procsignal.cpp reconstruct.cpp fourier.cpp ctndicom.cpp ctsim-6.0.2/libctsim/reconstruct.cpp0000644000175000017500000001773111243324671016551 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: reconstruct.cpp Reconstruction class ** Programmer: Kevin Rosenberg ** Date Started: Aug 84 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "ct.h" /* NAME * Reconstructor::Reconstructor Reconstruct Image from Projections * * SYNOPSIS * im = proj.reconstruct (im, filt_type, filt_param, interp_type) * IMAGE *im Output image * int filt_type Type of convolution filter to use * double filt_param Filter specific parameter * Currently, used only with Hamming filters * int interp_type Type of interpolation method to use * * ALGORITHM * * Calculate one-dimensional filter in spatial domain * Allocate & clear (zero) the 2d output image array * For each projection view * Convolve raysum array with filter * Backproject raysums and add (summate) to image array * end */ Reconstructor::Reconstructor (const Projections& rProj, ImageFile& rIF, const char* const filterName, double filt_param, const char* const filterMethodName, const int zeropad, const char* filterGenerationName, const char* const interpName, int interpFactor, const char* const backprojectName, const int iTrace, ReconstructionROI* pROI, bool bRebinToParallel, SGP* pSGP) : m_rOriginalProj(rProj), m_pProj(bRebinToParallel ? m_rOriginalProj.interpolateToParallel() : &m_rOriginalProj), m_rImagefile(rIF), m_pProcessSignal(0), m_pBackprojector(0), m_iTrace(iTrace), m_bRebinToParallel(bRebinToParallel), m_bFail(false), m_adPlotXAxis(0) { m_nFilteredProjections = m_pProj->nDet() * interpFactor; #ifdef HAVE_BSPLINE_INTERP int spline_order = 0, zoom_factor = 0; if (interp_type == I_BSPLINE) { zoom_factor = interpFactor; spline_order = 3; zoom_factor = 3; m_nFilteredProjections = (m_nDet - 1) * (zoom_factor + 1) + 1; } #endif double filterBW = 1. / m_pProj->detInc(); m_pProcessSignal = new ProcessSignal (filterName, filterMethodName, filterBW, m_pProj->detInc(), m_pProj->nDet(), filt_param, "spatial", filterGenerationName, zeropad, interpFactor, iTrace, m_pProj->geometry(), m_pProj->focalLength(), m_pProj->sourceDetectorLength(), pSGP); if (m_pProcessSignal->fail()) { m_bFail = true; m_strFailMessage = "Error creating ProcessSignal: "; m_strFailMessage += m_pProcessSignal->failMessage(); delete m_pProcessSignal; m_pProcessSignal = NULL; return; } m_pBackprojector = new Backprojector (*m_pProj, m_rImagefile, backprojectName, interpName, interpFactor, pROI); if (m_pBackprojector->fail()) { m_bFail = true; m_strFailMessage = "Error creating backprojector: "; m_strFailMessage += m_pBackprojector->failMessage(); delete m_pBackprojector; m_pBackprojector = NULL; delete m_pProcessSignal; m_pProcessSignal = NULL; return; } #ifdef HAVE_SGP m_adPlotXAxis = new double [m_pProj->nDet()]; double x = - ((m_pProj->nDet() - 1) / 2) * m_pProj->detInc(); double xInc = m_pProj->detInc(); for (int i = 0; i < m_pProj->nDet(); i++, x += xInc) m_adPlotXAxis[i] = x; #endif } Reconstructor::~Reconstructor () { if (m_bRebinToParallel) delete m_pProj; delete m_pBackprojector; delete m_pProcessSignal; delete m_adPlotXAxis; } void Reconstructor::plotFilter (SGP* pSGP) { #ifdef HAVE_SGP int nVecFilter = m_pProcessSignal->getNFilterPoints(); double* adPlotXAxis = new double [nVecFilter]; if (nVecFilter > 0 && pSGP) { double f = m_pProcessSignal->getFilterMin(); double filterInc = m_pProcessSignal->getFilterIncrement(); for (int i = 0; i < nVecFilter; i++, f += filterInc) adPlotXAxis[i] = f; if (m_pProcessSignal->getFilter()) { EZPlot ezplot; ezplot.ezset ("title Filter Response"); ezplot.addCurve (adPlotXAxis, m_pProcessSignal->getFilter(), nVecFilter); ezplot.plot (pSGP); } } delete adPlotXAxis; #endif } void Reconstructor::reconstructAllViews () { reconstructView (0, m_pProj->nView()); postProcessing(); } void Reconstructor::postProcessing() { m_pBackprojector->PostProcessing(); } void Reconstructor::reconstructView (int iStartView, int iViewCount, SGP* pSGP, bool bBackprojectView, double dGraphWidth) { double* adFilteredProj = new double [m_nFilteredProjections]; // filtered projections if (iViewCount <= 0) iViewCount = m_pProj->nView() - iStartView; for (int iView = iStartView; iView < (iStartView + iViewCount); iView++) { if (m_iTrace == Trace::TRACE_CONSOLE) std::cout <<"Reconstructing view " << iView << " (last = " << m_pProj->nView() - 1 << ")\n"; const DetectorArray& rDetArray = m_pProj->getDetectorArray (iView); const DetectorValue* detval = rDetArray.detValues(); m_pProcessSignal->filterSignal (detval, adFilteredProj); #ifdef HAVE_BSPLINE_INTERP if (interp_type == I_BSPLINE) bspline (m_pProj->nDet(), zoom_factor, spline_order, adFilteredProj, adFilteredProj); #ifdef HAVE_SGP if (trace >= Trace::TRACE_PLOT && interp_type == I_BSPLINE && pSGP) { bspline (m_pProj->nDet(), zoom_factor, spline_order, adFilteredProj, adFilteredProj); ezplot_1d (adFilteredProj, m_nFilteredProjections); } #endif #endif if (bBackprojectView) m_pBackprojector->BackprojectView (adFilteredProj, rDetArray.viewAngle()); #ifdef HAVE_SGP if (m_iTrace >= Trace::TRACE_PLOT && pSGP) { EZPlot ezplotProj; std::ostringstream osXLength; osXLength << "xlength " << dGraphWidth; ezplotProj.ezset ("clear"); ezplotProj.ezset ("title Raw Projection"); ezplotProj.ezset ("xticks major 5"); ezplotProj.ezset ("yticks major 5"); ezplotProj.ezset ("xlabel "); ezplotProj.ezset ("ylabel "); ezplotProj.ezset ("yporigin 0.55"); ezplotProj.ezset ("ylength 0.45"); ezplotProj.ezset (osXLength.str().c_str()); ezplotProj.ezset ("box."); ezplotProj.ezset ("grid."); #if 0 // workaround c++ optimizer bug, now disabled by using /O1 in code double* pdDetval = new double [m_pProj->nDet()]; for (unsigned int id = 0; id < m_pProj->nDet(); id++) { pdDetval[id] = detval[id]; } ezplotProj.addCurve (m_adPlotXAxis, pdDetval, m_pProj->nDet()); delete pdDetval; #else ezplotProj.addCurve (m_adPlotXAxis, detval, m_pProj->nDet()); #endif pSGP->setTextPointSize (9); ezplotProj.plot (pSGP); ezplotProj.ezset ("clear"); ezplotProj.ezset ("title Filtered Projection"); ezplotProj.ezset ("xticks major 5"); ezplotProj.ezset ("xlabel "); ezplotProj.ezset ("ylabel "); ezplotProj.ezset ("yticks major 5"); ezplotProj.ezset ("yporigin 0.10"); ezplotProj.ezset ("ylength 0.45"); ezplotProj.ezset (osXLength.str().c_str()); ezplotProj.ezset ("box"); ezplotProj.ezset ("grid"); ezplotProj.addCurve (m_adPlotXAxis, adFilteredProj, m_nFilteredProjections); pSGP->setTextPointSize (9); ezplotProj.plot (pSGP); } #endif //HAVE_SGP } delete adFilteredProj; } ctsim-6.0.2/libctsim/Makefile.in0000644000175000017500000004363513254406203015535 0ustar kevinkevin# 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 = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = libctsim ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/scripts/ax_check_compile_flag.m4 \ $(top_srcdir)/scripts/ax_ext.m4 \ $(top_srcdir)/scripts/ax_gcc_x86_avx_xgetbv.m4 \ $(top_srcdir)/scripts/ax_gcc_x86_cpuid.m4 \ $(top_srcdir)/scripts/ax_openmp.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LIBRARIES = $(noinst_LIBRARIES) AR = ar ARFLAGS = cru AM_V_AR = $(am__v_AR_@AM_V@) am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) am__v_AR_0 = @echo " AR " $@; am__v_AR_1 = libctsim_a_AR = $(AR) $(ARFLAGS) libctsim_a_LIBADD = am_libctsim_a_OBJECTS = filter.$(OBJEXT) scanner.$(OBJEXT) \ projections.$(OBJEXT) phantom.$(OBJEXT) imagefile.$(OBJEXT) \ backprojectors.$(OBJEXT) array2dfile.$(OBJEXT) trace.$(OBJEXT) \ procsignal.$(OBJEXT) reconstruct.$(OBJEXT) fourier.$(OBJEXT) \ ctndicom.$(OBJEXT) libctsim_a_OBJECTS = $(am_libctsim_a_OBJECTS) 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@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/scripts/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 = SOURCES = $(libctsim_a_SOURCES) DIST_SOURCES = $(libctsim_a_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # 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 am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/scripts/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPUEXT_FLAGS = @CPUEXT_FLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ 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@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIMD_FLAGS = @SIMD_FLAGS@ STRIP = @STRIP@ VERSION = @VERSION@ XMKMF = @XMKMF@ X_BASIC_LIBS = @X_BASIC_LIBS@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ X_TOOLKIT_LIBS = @X_TOOLKIT_LIBS@ 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 = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ cgibindir = @cgibindir@ cgibinurl = @cgibinurl@ cgiprograms = @cgiprograms@ ctlibs = @ctlibs@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldata = @htmldata@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lamdefs = @lamdefs@ lamdir = @lamdir@ lamprograms = @lamprograms@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mpienable = @mpienable@ my_includes = @my_includes@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ webdatadir = @webdatadir@ webdataurl = @webdataurl@ webenabled = @webenabled@ wx_cppflags = @wx_cppflags@ wxcflags = @wxcflags@ wxconfig = @wxconfig@ wxlibs = @wxlibs@ noinst_LIBRARIES = libctsim.a AM_CPPFLAGS = @my_includes@ EXTRA_DIST = Makefile.nt libctsim_a_SOURCES = filter.cpp scanner.cpp projections.cpp phantom.cpp imagefile.cpp backprojectors.cpp array2dfile.cpp trace.cpp procsignal.cpp reconstruct.cpp fourier.cpp ctndicom.cpp all: all-am .SUFFIXES: .SUFFIXES: .cpp .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libctsim/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu libctsim/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) libctsim.a: $(libctsim_a_OBJECTS) $(libctsim_a_DEPENDENCIES) $(EXTRA_libctsim_a_DEPENDENCIES) $(AM_V_at)-rm -f libctsim.a $(AM_V_AR)$(libctsim_a_AR) libctsim.a $(libctsim_a_OBJECTS) $(libctsim_a_LIBADD) $(AM_V_at)$(RANLIB) libctsim.a mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/array2dfile.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backprojectors.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctndicom.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fourier.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/imagefile.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/phantom.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/procsignal.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/projections.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reconstruct.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scanner.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trace.Po@am__quote@ .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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 $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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) '$<'` 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" 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 distdir: $(DISTFILES) @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 check-am: all-am check: check-am all-am: Makefile $(LIBRARIES) installdirs: 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: clean-generic: 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) 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-generic clean-noinstLIBRARIES mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(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: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstLIBRARIES cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ 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-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 tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile # 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: ctsim-6.0.2/libctsim/imagefile.cpp0000644000175000017500000014530313254360476016124 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: imagefile.cpp ** Purpose: Imagefile classes ** Programmer: Kevin Rosenberg ** Date Started: June 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "ct.h" #ifdef HAVE_CTN_DICOM #include "ctndicom.h" #endif #include "interpolator.h" const double ImageFile::s_dRedGrayscaleFactor = 0.299; const double ImageFile::s_dGreenGrayscaleFactor = 0.587; const double ImageFile::s_dBlueGrayscaleFactor = 0.114; const int ImageFile::EXPORT_FORMAT_INVALID = -1; const int ImageFile::EXPORT_FORMAT_TEXT = 0; const int ImageFile::EXPORT_FORMAT_PGM = 1; const int ImageFile::EXPORT_FORMAT_PGMASCII = 2; #ifdef HAVE_PNG const int ImageFile::EXPORT_FORMAT_PNG = 3; const int ImageFile::EXPORT_FORMAT_PNG16 = 4; #endif #ifdef HAVE_CTN_DICOM const int ImageFile::EXPORT_FORMAT_DICOM = 5; #endif const int ImageFile::EXPORT_FORMAT_RAW = 6; const char* ImageFile::s_aszExportFormatName[] = { "text", "pgm", "pgmascii", #ifdef HAVE_PNG "png", "png16", #endif #ifdef HAVE_CTN_DICOM "dicom", #endif }; const char* ImageFile::s_aszExportFormatTitle[] = { "Text", "PGM", "PGM ASCII", #ifdef HAVE_PNG "PNG", "PNG 16-bit", #endif #ifdef HAVE_CTN_DICOM "Dicom", #endif }; const int ImageFile::s_iExportFormatCount = sizeof(s_aszExportFormatName) / sizeof(const char*); const int ImageFile::IMPORT_FORMAT_INVALID = -1; const int ImageFile::IMPORT_FORMAT_PPM = 0; #ifdef HAVE_PNG const int ImageFile::IMPORT_FORMAT_PNG = 1; #endif #ifdef HAVE_CTN_DICOM const int ImageFile::IMPORT_FORMAT_DICOM = 2; #endif const char* ImageFile::s_aszImportFormatName[] = { "ppm", #ifdef HAVE_PNG "png", #endif #ifdef HAVE_CTN_DICOM "dicom", #endif }; const char* ImageFile::s_aszImportFormatTitle[] = { "PPM", #ifdef HAVE_PNG "PNG", #endif #ifdef HAVE_CTN_DICOM "Dicom", #endif }; const int ImageFile::s_iImportFormatCount = sizeof(s_aszImportFormatName) / sizeof(const char*); F32Image::F32Image (int nx, int ny, int dataType) : Array2dFile (nx, ny, sizeof(kfloat32), Array2dFile::PIXEL_FLOAT32, dataType) { } F32Image::F32Image (void) : Array2dFile() { setPixelFormat (Array2dFile::PIXEL_FLOAT32); setPixelSize (sizeof(kfloat32)); setDataType (Array2dFile::DATA_TYPE_REAL); } F64Image::F64Image (int nx, int ny, int dataType) : Array2dFile (nx, ny, sizeof(kfloat64), Array2dFile::PIXEL_FLOAT64, dataType) { } F64Image::F64Image (void) : Array2dFile () { setPixelFormat (PIXEL_FLOAT64); setPixelSize (sizeof(kfloat64)); setDataType (Array2dFile::DATA_TYPE_REAL); } void ImageFile::getCenterCoordinates (unsigned int& iXCenter, unsigned int& iYCenter) { if (isEven (m_nx)) iXCenter = m_nx / 2; else iXCenter = (m_nx - 1) / 2; if (isEven (m_ny)) iYCenter = m_ny / 2; else iYCenter = (m_ny - 1) / 2; } void ImageFile::filterResponse (const char* const domainName, double bw, const char* const filterName, double filt_param, double dInputScale, double dOutputScale) { ImageFileArray v = getArray(); SignalFilter filter (filterName, domainName, bw, filt_param); unsigned int iXCenter, iYCenter; getCenterCoordinates (iXCenter, iYCenter); for (unsigned int ix = 0; ix < m_nx; ix++) for (unsigned int iy = 0; iy < m_ny; iy++) { long lD2 = ((ix - iXCenter) * (ix - iXCenter)) + ((iy - iYCenter) * (iy - iYCenter)); double r = ::sqrt (static_cast(lD2)) * dInputScale; v[ix][iy] = filter.response (r) * dOutputScale; } } // ImageFile::comparativeStatistics Calculate comparative stats // // OUTPUT // d Normalized root mean squared distance measure // r Normalized mean absolute distance measure // e Worst case distance measure // // REFERENCES // G.T. Herman, Image Reconstruction From Projections, 1980 bool ImageFile::comparativeStatistics (const ImageFile& imComp, double& d, double& r, double& e) const { if (imComp.nx() != m_nx && imComp.ny() != m_ny) { sys_error (ERR_WARNING, "Image sizes differ [ImageFile::comparativeStatistics]"); return false; } ImageFileArrayConst v = getArray(); if (v == NULL || m_nx == 0 || m_ny == 0) return false; ImageFileArrayConst vComp = imComp.getArray(); double myMean = 0.; for (unsigned int ix = 0; ix < m_nx; ix++) { for (unsigned int iy = 0; iy < m_ny; iy++) { myMean += v[ix][iy]; } } myMean /= (m_nx * m_ny); double sqErrorSum = 0.; double absErrorSum = 0.; double sqDiffFromMeanSum = 0.; double absValueSum = 0.; for (unsigned int ix2 = 0; ix2 < m_nx; ix2++) { for (unsigned int iy = 0; iy < m_ny; iy++) { double diff = v[ix2][iy] - vComp[ix2][iy]; sqErrorSum += diff * diff; absErrorSum += fabs(diff); double diffFromMean = v[ix2][iy] - myMean; sqDiffFromMeanSum += diffFromMean * diffFromMean; absValueSum += fabs(v[ix2][iy]); } } d = ::sqrt (sqErrorSum / sqDiffFromMeanSum); r = absErrorSum / absValueSum; int hx = m_nx / 2; int hy = m_ny / 2; double eMax = -1; for (int ix3 = 0; ix3 < hx; ix3++) { for (int iy = 0; iy < hy; iy++) { double avgPixel = 0.25 * (v[2*ix3][2*iy] + v[2*ix3+1][2*iy] + v[2*ix3][2*iy+1] + v[2*ix3+1][2*iy+1]); double avgPixelComp = 0.25 * (vComp[2*ix3][2*iy] + vComp[2*ix3+1][2*iy] + vComp[2*ix3][2*iy+1] + vComp[2*ix3+1][2*iy+1]); double error = fabs (avgPixel - avgPixelComp); if (error > eMax) eMax = error; } } e = eMax; return true; } bool ImageFile::printComparativeStatistics (const ImageFile& imComp, std::ostream& os) const { double d, r, e; if (comparativeStatistics (imComp, d, r, e)) { os << " Normalized root mean squared distance (d): " << d << std::endl; os << " Normalized mean absolute distance (r): " << r << std::endl; os << "Worst case distance (2x2 pixel average) (e): " << e << std::endl; return true; } return false; } void ImageFile::printStatistics (std::ostream& os) const { double min, max, mean, mode, median, stddev; statistics (min, max, mean, mode, median, stddev); if (isComplex()) os << "Real Component Statistics" << std::endl; os << " min: " << min << std::endl; os << " max: " << max << std::endl; os << " mean: " << mean << std::endl; os << " mode: " << mode << std::endl; os << "median: " << median << std::endl; os << "stddev: " << stddev << std::endl; if (isComplex()) { statistics (getImaginaryArray(), min, max, mean, mode, median, stddev); os << std::endl << "Imaginary Component Statistics" << std::endl; os << " min: " << min << std::endl; os << " max: " << max << std::endl; os << " mean: " << mean << std::endl; os << " mode: " << mode << std::endl; os << "median: " << median << std::endl; os << "stddev: " << stddev << std::endl; } } void ImageFile::statistics (double& min, double& max, double& mean, double& mode, double& median, double& stddev) const { ImageFileArrayConst v = getArray(); statistics (v, min, max, mean, mode, median, stddev); } void ImageFile::statistics (ImageFileArrayConst v, double& min, double& max, double& mean, double& mode, double& median, double& stddev) const { int nx = m_nx; int ny = m_ny; if (v == NULL || nx == 0 || ny == 0) return; std::vector vecImage; int iVec = 0; vecImage.resize (nx * ny); for (int ix = 0; ix < nx; ix++) { for (int iy = 0; iy < ny; iy++) vecImage[iVec++] = v[ix][iy]; } vectorNumericStatistics (vecImage, nx * ny, min, max, mean, mode, median, stddev); } void ImageFile::getMinMax (double& min, double& max) const { int nx = m_nx; int ny = m_ny; ImageFileArrayConst v = getArray(); if (v == NULL || nx == 0 || ny == 0) return; min = v[0][0]; max = v[0][0]; for (int ix = 0; ix < nx; ix++) { for (int iy = 0; iy < ny; iy++) { if (v[ix][iy] > max) max = v[ix][iy]; if (v[ix][iy] < min) min = v[ix][iy]; } } } bool ImageFile::convertRealToComplex () { if (dataType() != Array2dFile::DATA_TYPE_REAL) return false; if (! reallocRealToComplex()) return false; ImageFileArray vImag = getImaginaryArray(); for (unsigned int ix = 0; ix < m_nx; ix++) { ImageFileColumn vCol = vImag[ix]; for (unsigned int iy = 0; iy < m_ny; iy++) *vCol++ = 0; } return true; } bool ImageFile::convertComplexToReal () { if (dataType() != Array2dFile::DATA_TYPE_COMPLEX) return false; ImageFileArray vReal = getArray(); ImageFileArray vImag = getImaginaryArray(); for (unsigned int ix = 0; ix < m_nx; ix++) { ImageFileColumn vRealCol = vReal[ix]; ImageFileColumn vImagCol = vImag[ix]; for (unsigned int iy = 0; iy < m_ny; iy++) { CTSimComplex c (*vRealCol, *vImagCol); *vRealCol++ = std::abs (c); vImagCol++; } } return reallocComplexToReal(); } bool ImageFile::subtractImages (const ImageFile& rRHS, ImageFile& result) const { if (m_nx != rRHS.nx() || m_ny != rRHS.ny() || m_nx != result.nx() || m_ny != result.ny()) { sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::subtractImage]"); return false; } if (isComplex() || (rRHS.isComplex() && ! result.isComplex())) result.convertRealToComplex(); ImageFileArrayConst vLHS = getArray(); ImageFileArrayConst vLHSImag = getImaginaryArray(); ImageFileArrayConst vRHS = rRHS.getArray(); ImageFileArrayConst vRHSImag = rRHS.getImaginaryArray(); ImageFileArray vResult = result.getArray(); ImageFileArray vResultImag = result.getImaginaryArray(); for (unsigned int ix = 0; ix < m_nx; ix++) { for (unsigned int iy = 0; iy < m_ny; iy++) { vResult[ix][iy] = vLHS[ix][iy] - vRHS[ix][iy]; if (result.isComplex()) { vResultImag[ix][iy] = 0; if (isComplex()) vResultImag[ix][iy] += vLHSImag[ix][iy]; if (rRHS.isComplex()) vResultImag[ix][iy] -= vRHSImag[ix][iy]; } } } return true; } bool ImageFile::addImages (const ImageFile& rRHS, ImageFile& result) const { if (m_nx != rRHS.nx() || m_ny != rRHS.ny() || m_nx != result.nx() || m_ny != result.ny()) { sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::subtractImage]"); return false; } if (isComplex() || (rRHS.isComplex() && ! result.isComplex())) result.convertRealToComplex(); ImageFileArrayConst vLHS = getArray(); ImageFileArrayConst vLHSImag = getImaginaryArray(); ImageFileArrayConst vRHS = rRHS.getArray(); ImageFileArrayConst vRHSImag = rRHS.getImaginaryArray(); ImageFileArray vResult = result.getArray(); ImageFileArray vResultImag = result.getImaginaryArray(); for (unsigned int ix = 0; ix < m_nx; ix++) { for (unsigned int iy = 0; iy < m_ny; iy++) { vResult[ix][iy] = vLHS[ix][iy] + vRHS[ix][iy]; if (result.isComplex()) { vResultImag[ix][iy] = 0; if (isComplex()) vResultImag[ix][iy] += vLHSImag[ix][iy]; if (rRHS.isComplex()) vResultImag[ix][iy] += vRHSImag[ix][iy]; } } } return true; } bool ImageFile::multiplyImages (const ImageFile& rRHS, ImageFile& result) const { if (m_nx != rRHS.nx() || m_ny != rRHS.ny() || m_nx != result.nx() || m_ny != result.ny()) { sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::subtractImage]"); return false; } if (isComplex() || (rRHS.isComplex() && ! result.isComplex())) result.convertRealToComplex(); ImageFileArrayConst vLHS = getArray(); ImageFileArrayConst vLHSImag = getImaginaryArray(); ImageFileArrayConst vRHS = rRHS.getArray(); ImageFileArrayConst vRHSImag = rRHS.getImaginaryArray(); ImageFileArray vResult = result.getArray(); ImageFileArray vResultImag = result.getImaginaryArray(); for (unsigned int ix = 0; ix < m_nx; ix++) { for (unsigned int iy = 0; iy < m_ny; iy++) { if (result.isComplex()) { double dImag = 0; if (isComplex()) dImag = vLHSImag[ix][iy]; std::complex cLHS (vLHS[ix][iy], dImag); dImag = 0; if (rRHS.isComplex()) dImag = vRHSImag[ix][iy]; std::complex cRHS (vRHS[ix][iy], dImag); std::complex cResult = cLHS * cRHS; vResult[ix][iy] = cResult.real(); vResultImag[ix][iy] = cResult.imag(); } else vResult[ix][iy] = vLHS[ix][iy] * vRHS[ix][iy]; } } return true; } bool ImageFile::divideImages (const ImageFile& rRHS, ImageFile& result) const { if (m_nx != rRHS.nx() || m_ny != rRHS.ny() || m_nx != result.nx() || m_ny != result.ny()) { sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::subtractImage]"); return false; } if (isComplex() || (rRHS.isComplex() && ! result.isComplex())) result.convertRealToComplex(); ImageFileArrayConst vLHS = getArray(); ImageFileArrayConst vLHSImag = getImaginaryArray(); ImageFileArrayConst vRHS = rRHS.getArray(); ImageFileArrayConst vRHSImag = rRHS.getImaginaryArray(); ImageFileArray vResult = result.getArray(); ImageFileArray vResultImag = result.getImaginaryArray(); for (unsigned int ix = 0; ix < m_nx; ix++) { for (unsigned int iy = 0; iy < m_ny; iy++) { if (result.isComplex()) { double dImag = 0; if (isComplex()) dImag = vLHSImag[ix][iy]; std::complex cLHS (vLHS[ix][iy], dImag); dImag = 0; if (rRHS.isComplex()) dImag = vRHSImag[ix][iy]; std::complex cRHS (vRHS[ix][iy], dImag); std::complex cResult = cLHS / cRHS; vResult[ix][iy] = cResult.real(); vResultImag[ix][iy] = cResult.imag(); } else { if (vRHS != 0) vResult[ix][iy] = vLHS[ix][iy] / vRHS[ix][iy]; else vResult[ix][iy] = 0; } } } return true; } bool ImageFile::invertPixelValues (ImageFile& result) const { if (m_nx != result.nx() || m_ny != result.ny()) { sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::invertPixelValues]"); return false; } if (isComplex() && ! result.isComplex()) result.convertRealToComplex(); ImageFileArrayConst vLHS = getArray(); ImageFileArray vResult = result.getArray(); for (unsigned int ix = 0; ix < m_nx; ix++) { ImageFileColumnConst in = vLHS[ix]; ImageFileColumn out = vResult[ix]; for (unsigned int iy = 0; iy < m_ny; iy++) *out++ = - *in++; } return true; } bool ImageFile::sqrt (ImageFile& result) const { if (m_nx != result.nx() || m_ny != result.ny()) { sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::invertPixelValues]"); return false; } if (isComplex() && ! result.isComplex()) result.convertRealToComplex(); bool bComplexOutput = result.isComplex(); ImageFileArrayConst vLHS = getArray(); if (! bComplexOutput) { // check if should convert to complex output for (unsigned int ix = 0; ix < m_nx; ix++) { for (unsigned int iy = 0; iy < m_ny; iy++) { if (! bComplexOutput && vLHS[ix][iy] < 0) { result.convertRealToComplex(); bComplexOutput = true; break; } } } } ImageFileArrayConst vLHSImag = getImaginaryArray(); ImageFileArray vResult = result.getArray(); ImageFileArray vResultImag = result.getImaginaryArray(); for (unsigned int ix = 0; ix < m_nx; ix++) { for (unsigned int iy = 0; iy < m_ny; iy++) { if (result.isComplex()) { double dImag = 0; if (isComplex()) dImag = vLHSImag[ix][iy]; std::complex cLHS (vLHS[ix][iy], dImag); std::complex cResult = std::sqrt(cLHS); vResult[ix][iy] = cResult.real(); vResultImag[ix][iy] = cResult.imag(); } else vResult[ix][iy] = ::sqrt (vLHS[ix][iy]); } } return true; } bool ImageFile::log (ImageFile& result) const { if (m_nx != result.nx() || m_ny != result.ny()) { sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::log]"); return false; } if (isComplex() && ! result.isComplex()) result.convertRealToComplex(); ImageFileArrayConst vLHS = getArray(); ImageFileArrayConst vLHSImag = getImaginaryArray(); ImageFileArray vResult = result.getArray(); ImageFileArray vResultImag = result.getImaginaryArray(); for (unsigned int ix = 0; ix < m_nx; ix++) { for (unsigned int iy = 0; iy < m_ny; iy++) { if (result.isComplex()) { double dImag = 0; if (isComplex()) dImag = vLHSImag[ix][iy]; std::complex cLHS (vLHS[ix][iy], dImag); std::complex cResult = std::log (cLHS); vResult[ix][iy] = cResult.real(); vResultImag[ix][iy] = cResult.imag(); } else { if (vLHS[ix][iy] > 0) vResult[ix][iy] = ::log (vLHS[ix][iy]); else vResult[ix][iy] = 0; } } } return true; } bool ImageFile::exp (ImageFile& result) const { if (m_nx != result.nx() || m_ny != result.ny()) { sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::invertPixelValues]"); return false; } if (isComplex() && ! result.isComplex()) result.convertRealToComplex(); ImageFileArrayConst vLHS = getArray(); ImageFileArrayConst vLHSImag = getImaginaryArray(); ImageFileArray vResult = result.getArray(); ImageFileArray vResultImag = result.getImaginaryArray(); for (unsigned int ix = 0; ix < m_nx; ix++) { for (unsigned int iy = 0; iy < m_ny; iy++) { if (result.isComplex()) { double dImag = 0; if (isComplex()) dImag = vLHSImag[ix][iy]; std::complex cLHS (vLHS[ix][iy], dImag); std::complex cResult = std::exp (cLHS); vResult[ix][iy] = cResult.real(); vResultImag[ix][iy] = cResult.imag(); } else vResult[ix][iy] = ::exp (vLHS[ix][iy]); } } return true; } bool ImageFile::scaleImage (ImageFile& result) const { unsigned int nx = m_nx; unsigned int ny = m_ny; unsigned int newNX = result.nx(); unsigned int newNY = result.ny(); double dXScale = static_cast(newNX) / static_cast(nx); double dYScale = static_cast(newNY) / static_cast(ny); if (isComplex() && ! result.isComplex()) result.convertRealToComplex(); ImageFileArrayConst vReal = getArray(); ImageFileArrayConst vImag = getImaginaryArray(); ImageFileArray vResult = result.getArray(); ImageFileArray vResultImag = result.getImaginaryArray(); BilinearInterpolator realInterp (vReal, nx, ny); BilinearInterpolator imagInterp (vImag, nx, ny); for (unsigned int ix = 0; ix < newNX; ix++) { for (unsigned int iy = 0; iy < newNY; iy++) { double dXPos = ix / dXScale; double dYPos = iy / dYScale; vResult[ix][iy] = realInterp.interpolate (dXPos, dYPos); if (result.isComplex()) { if (isComplex()) { vResultImag[ix][iy] = imagInterp.interpolate (dXPos, dYPos); } else { vResultImag[ix][iy] = 0; } } } } return true; } #ifdef HAVE_FFTW bool ImageFile::fft (ImageFile& result) const { if (m_nx != result.nx() || m_ny != result.ny()) { sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::invertPixelValues]"); return false; } if (result.dataType() == Array2dFile::DATA_TYPE_REAL) { if (! result.convertRealToComplex ()) return false; } fftw_complex* in = static_cast (fftw_malloc (sizeof(fftw_complex) * m_nx * m_ny)); ImageFileArrayConst vReal = getArray(); ImageFileArrayConst vImag = getImaginaryArray(); unsigned int ix, iy; unsigned int iArray = 0; for (ix = 0; ix < m_nx; ix++) { for (iy = 0; iy < m_ny; iy++) { in[iArray][0] = vReal[ix][iy]; if (isComplex()) in[iArray][1] = vImag[ix][iy]; else in[iArray][1] = 0; iArray++; } } fftw_plan plan = fftw_plan_dft_2d (m_nx, m_ny, in, in, FFTW_FORWARD, FFTW_ESTIMATE); fftw_execute (plan); ImageFileArray vRealResult = result.getArray(); ImageFileArray vImagResult = result.getImaginaryArray(); iArray = 0; unsigned int iScale = m_nx * m_ny; for (ix = 0; ix < m_nx; ix++) { for (iy = 0; iy < m_ny; iy++) { vRealResult[ix][iy] = in[iArray][0] / iScale; vImagResult[ix][iy] = in[iArray][1] / iScale; iArray++; } } fftw_free(in); fftw_destroy_plan (plan); Fourier::shuffleFourierToNaturalOrder (result); return true; } bool ImageFile::ifft (ImageFile& result) const { if (m_nx != result.nx() || m_ny != result.ny()) { sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::invertPixelValues]"); return false; } if (result.dataType() == Array2dFile::DATA_TYPE_REAL) { if (! result.convertRealToComplex ()) return false; } ImageFileArrayConst vReal = getArray(); ImageFileArrayConst vImag = getImaginaryArray(); ImageFileArray vRealResult = result.getArray(); ImageFileArray vImagResult = result.getImaginaryArray(); unsigned int ix, iy; for (ix = 0; ix < m_nx; ix++) { for (iy = 0; iy < m_ny; iy++) { vRealResult[ix][iy] = vReal[ix][iy]; if (isComplex()) vImagResult[ix][iy] = vImag[ix][iy]; else vImagResult[ix][iy] = 0; } } Fourier::shuffleNaturalToFourierOrder (result); fftw_complex* in = static_cast(fftw_malloc(sizeof(fftw_complex) * m_nx * m_ny)); unsigned int iArray = 0; for (ix = 0; ix < m_nx; ix++) { for (iy = 0; iy < m_ny; iy++) { in[iArray][0] = vRealResult[ix][iy]; in[iArray][1] = vImagResult[ix][iy]; iArray++; } } fftw_plan plan = fftw_plan_dft_2d (m_nx, m_ny, in, in, FFTW_BACKWARD, FFTW_ESTIMATE); fftw_execute (plan); iArray = 0; for (ix = 0; ix < m_nx; ix++) { for (iy = 0; iy < m_ny; iy++) { vRealResult[ix][iy] = in[iArray][0]; vImagResult[ix][iy] = in[iArray][1]; iArray++; } } fftw_destroy_plan (plan); fftw_free(in); return true; } bool ImageFile::fftRows (ImageFile& result) const { if (m_nx != result.nx() || m_ny != result.ny()) { sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::fftRows]"); return false; } if (result.dataType() == Array2dFile::DATA_TYPE_REAL) { if (! result.convertRealToComplex ()) return false; } ImageFileArrayConst vReal = getArray(); ImageFileArrayConst vImag = getImaginaryArray(); fftw_complex* in = static_cast(fftw_malloc(sizeof(fftw_complex) * m_nx)); fftw_plan plan = fftw_plan_dft_1d (m_nx, in, in, FFTW_FORWARD, FFTW_ESTIMATE); std::complex* pcRow = new std::complex [m_nx]; for (unsigned int iy = 0; iy < m_ny; iy++) { unsigned int ix; for (ix = 0; ix < m_nx; ix++) { in[ix][0] = vReal[ix][iy]; if (isComplex()) in[ix][1] = vImag[ix][iy]; else in[ix][1] = 0; } fftw_execute (plan); for (ix = 0; ix < m_nx; ix++) pcRow[ix] = std::complex(in[ix][0], in[ix][1]); Fourier::shuffleFourierToNaturalOrder (pcRow, m_nx); for (ix = 0; ix < m_nx; ix++) { vReal[ix][iy] = pcRow[ix].real() / m_nx; vImag[ix][iy] = pcRow[ix].imag() / m_nx; } } delete [] pcRow; fftw_destroy_plan (plan); fftw_free(in); return true; } bool ImageFile::ifftRows (ImageFile& result) const { if (m_nx != result.nx() || m_ny != result.ny()) { sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::fftRows]"); return false; } if (result.dataType() == Array2dFile::DATA_TYPE_REAL) { if (! result.convertRealToComplex ()) return false; } ImageFileArrayConst vReal = getArray(); ImageFileArrayConst vImag = getImaginaryArray(); fftw_complex* in = static_cast(fftw_malloc(sizeof(fftw_complex) * m_nx)); fftw_plan plan = fftw_plan_dft_1d (m_nx, in, in, FFTW_BACKWARD, FFTW_ESTIMATE); std::complex* pcRow = new std::complex [m_nx]; unsigned int ix, iy; // unsigned int iArray = 0; for (iy = 0; iy < m_ny; iy++) { for (ix = 0; ix < m_nx; ix++) { double dImag = 0; if (isComplex()) dImag = vImag[ix][iy]; pcRow[ix] = std::complex (vReal[ix][iy], dImag); } Fourier::shuffleNaturalToFourierOrder (pcRow, m_nx); for (ix = 0; ix < m_nx; ix++) { in[ix][0] = pcRow[ix].real(); in[ix][1] = pcRow[ix].imag(); } fftw_execute (plan); for (ix = 0; ix < m_nx; ix++) { vReal[ix][iy] = in[ix][0]; vImag[ix][iy] = in[ix][1]; } } delete [] pcRow; fftw_destroy_plan (plan); fftw_free(in); return true; } bool ImageFile::fftCols (ImageFile& result) const { if (m_nx != result.nx() || m_ny != result.ny()) { sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::fftRows]"); return false; } if (result.dataType() == Array2dFile::DATA_TYPE_REAL) { if (! result.convertRealToComplex ()) return false; } ImageFileArrayConst vReal = getArray(); ImageFileArrayConst vImag = getImaginaryArray(); fftw_complex* in = static_cast(fftw_malloc(sizeof(fftw_complex) * m_ny)); fftw_plan plan = fftw_plan_dft_1d (m_ny, in, in, FFTW_FORWARD, FFTW_ESTIMATE); std::complex* pcCol = new std::complex [m_ny]; for (unsigned int ix = 0; ix < m_nx; ix++) { unsigned int iy; for (iy = 0; iy < m_ny; iy++) { in[iy][0] = vReal[ix][iy]; if (isComplex()) in[iy][1] = vImag[ix][iy]; else in[iy][1] = 0; } fftw_execute (plan); for (iy = 0; iy < m_ny; iy++) pcCol[iy] = std::complex(in[iy][0], in[iy][1]); Fourier::shuffleFourierToNaturalOrder (pcCol, m_ny); for (iy = 0; iy < m_ny; iy++) { vReal[ix][iy] = pcCol[iy].real() / m_ny; vImag[ix][iy] = pcCol[iy].imag() / m_ny; } } delete [] pcCol; fftw_destroy_plan (plan); fftw_free(in); return true; } bool ImageFile::ifftCols (ImageFile& result) const { if (m_nx != result.nx() || m_ny != result.ny()) { sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::fftRows]"); return false; } if (result.dataType() == Array2dFile::DATA_TYPE_REAL) { if (! result.convertRealToComplex ()) return false; } ImageFileArrayConst vReal = getArray(); ImageFileArrayConst vImag = getImaginaryArray(); fftw_complex* in = static_cast(fftw_malloc(sizeof(fftw_complex) * m_ny)); fftw_plan plan = fftw_plan_dft_1d (m_ny, in, in, FFTW_BACKWARD, FFTW_ESTIMATE); std::complex* pcCol = new std::complex [m_ny]; unsigned int ix, iy; // unsigned int iArray = 0; for (ix = 0; ix < m_nx; ix++) { for (iy = 0; iy < m_ny; iy++) { double dImag = 0; if (isComplex()) dImag = vImag[ix][iy]; pcCol[iy] = std::complex (vReal[ix][iy], dImag); } Fourier::shuffleNaturalToFourierOrder (pcCol, m_ny); for (iy = 0; iy < m_ny; iy++) { in[iy][0] = pcCol[iy].real(); in[iy][1] = pcCol[iy].imag(); } fftw_execute (plan); for (iy = 0; iy < m_ny; iy++) { vReal[ix][iy] = in[iy][0]; vImag[ix][iy] = in[iy][1]; } } delete [] pcCol; fftw_destroy_plan (plan); fftw_free(in); return true; } #endif // HAVE_FFTW bool ImageFile::fourier (ImageFile& result) const { if (m_nx != result.nx() || m_ny != result.ny()) { sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::invertPixelValues]"); return false; } if (! result.isComplex()) { if (! result.convertRealToComplex ()) { return false; } } ImageFileArrayConst vLHS = getArray(); ImageFileArrayConst vLHSImag = getImaginaryArray(); ImageFileArray vRealResult = result.getArray(); ImageFileArray vImagResult = result.getImaginaryArray(); unsigned int ix, iy; // alloc output matrix CTSimComplex** complexOut = new CTSimComplex* [m_nx]; for (ix = 0; ix < m_nx; ix++) complexOut[ix] = new CTSimComplex [m_ny]; // fourier each x column CTSimComplex* pY = new CTSimComplex [m_ny]; for (ix = 0; ix < m_nx; ix++) { for (iy = 0; iy < m_ny; iy++) { double dImag = 0; if (isComplex()) dImag = vLHSImag[ix][iy]; pY[iy] = std::complex(vLHS[ix][iy], dImag); } ProcessSignal::finiteFourierTransform (pY, complexOut[ix], m_ny, ProcessSignal::FORWARD); } delete [] pY; // fourier each y row CTSimComplex* pX = new CTSimComplex [m_nx]; CTSimComplex* complexOutRow = new CTSimComplex [m_nx]; for (iy = 0; iy < m_ny; iy++) { for (ix = 0; ix < m_nx; ix++) pX[ix] = complexOut[ix][iy]; ProcessSignal::finiteFourierTransform (pX, complexOutRow, m_nx, ProcessSignal::FORWARD); for (ix = 0; ix < m_nx; ix++) complexOut[ix][iy] = complexOutRow[ix]; } delete [] pX; delete [] complexOutRow; for (ix = 0; ix < m_nx; ix++) for (iy = 0; iy < m_ny; iy++) { vRealResult[ix][iy] = complexOut[ix][iy].real(); vImagResult[ix][iy] = complexOut[ix][iy].imag(); } Fourier::shuffleFourierToNaturalOrder (result); // delete complexOut matrix for (ix = 0; ix < m_nx; ix++) delete [] complexOut[ix]; delete [] complexOut; return true; } bool ImageFile::inverseFourier (ImageFile& result) const { if (m_nx != result.nx() || m_ny != result.ny()) { sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::invertPixelValues]"); return false; } if (result.dataType() == Array2dFile::DATA_TYPE_REAL) { if (! result.convertRealToComplex ()) return false; } ImageFileArrayConst vLHSReal = getArray(); ImageFileArrayConst vLHSImag = getImaginaryArray(); ImageFileArray vRealResult = result.getArray(); ImageFileArray vImagResult = result.getImaginaryArray(); unsigned int ix, iy; // alloc 2d complex output matrix CTSimComplex** complexOut = new CTSimComplex* [m_nx]; for (ix = 0; ix < m_nx; ix++) complexOut[ix] = new CTSimComplex [m_ny]; // put input image into result for (ix = 0; ix < m_nx; ix++) { for (iy = 0; iy < m_ny; iy++) { vRealResult[ix][iy] = vLHSReal[ix][iy]; if (isComplex()) vImagResult[ix][iy] = vLHSImag[ix][iy]; else vImagResult[ix][iy] = 0; } } Fourier::shuffleNaturalToFourierOrder (result); // ifourier each x column CTSimComplex* pCol = new CTSimComplex [m_ny]; for (ix = 0; ix < m_nx; ix++) { for (iy = 0; iy < m_ny; iy++) { pCol[iy] = std::complex (vRealResult[ix][iy], vImagResult[ix][iy]); } ProcessSignal::finiteFourierTransform (pCol, complexOut[ix], m_ny, ProcessSignal::BACKWARD); } delete [] pCol; // ifourier each y row CTSimComplex* complexInRow = new CTSimComplex [m_nx]; CTSimComplex* complexOutRow = new CTSimComplex [m_nx]; for (iy = 0; iy < m_ny; iy++) { for (ix = 0; ix < m_nx; ix++) complexInRow[ix] = complexOut[ix][iy]; ProcessSignal::finiteFourierTransform (complexInRow, complexOutRow, m_nx, ProcessSignal::BACKWARD); for (ix = 0; ix < m_nx; ix++) complexOut[ix][iy] = complexOutRow[ix]; } delete [] complexInRow; delete [] complexOutRow; for (ix = 0; ix < m_nx; ix++) for (iy = 0; iy < m_ny; iy++) { vRealResult[ix][iy] = complexOut[ix][iy].real(); vImagResult[ix][iy] = complexOut[ix][iy].imag(); } // delete complexOut matrix for (ix = 0; ix < m_nx; ix++) delete [] complexOut[ix]; delete [] complexOut; return true; } bool ImageFile::magnitude (ImageFile& result) const { if (m_nx != result.nx() || m_ny != result.ny()) { sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::invertPixelValues]"); return false; } ImageFileArray vReal = getArray(); ImageFileArray vImag = getImaginaryArray(); ImageFileArray vRealResult = result.getArray(); for (unsigned int ix = 0; ix < m_nx; ix++) { for (unsigned int iy = 0; iy < m_ny; iy++) { if (isComplex()) vRealResult[ix][iy] = ::sqrt (vReal[ix][iy] * vReal[ix][iy] + vImag[ix][iy] * vImag[ix][iy]); else vRealResult[ix][iy] = ::fabs(vReal[ix][iy]); } } if (result.isComplex()) result.reallocComplexToReal(); return true; } bool ImageFile::phase (ImageFile& result) const { if (m_nx != result.nx() || m_ny != result.ny()) { sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::invertPixelValues]"); return false; } ImageFileArray vReal = getArray(); ImageFileArray vImag = getImaginaryArray(); ImageFileArray vRealResult = result.getArray(); for (unsigned int ix = 0; ix < m_nx; ix++) { for (unsigned int iy = 0; iy < m_ny; iy++) { if (isComplex()) vRealResult[ix][iy] = ::atan2 (vImag[ix][iy], vReal[ix][iy]); else vRealResult[ix][iy] = 0; } } if (result.isComplex()) result.reallocComplexToReal(); return true; } bool ImageFile::real (ImageFile& result) const { if (m_nx != result.nx() || m_ny != result.ny()) { sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::invertPixelValues]"); return false; } ImageFileArray vReal = getArray(); ImageFileArray vRealResult = result.getArray(); for (unsigned int ix = 0; ix < m_nx; ix++) { for (unsigned int iy = 0; iy < m_ny; iy++) { vRealResult[ix][iy] = vReal[ix][iy]; } } if (result.isComplex()) result.reallocComplexToReal(); return true; } bool ImageFile::imaginary (ImageFile& result) const { if (m_nx != result.nx() || m_ny != result.ny()) { sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::invertPixelValues]"); return false; } ImageFileArray vImag = getArray(); ImageFileArray vRealResult = result.getArray(); for (unsigned int ix = 0; ix < m_nx; ix++) { for (unsigned int iy = 0; iy < m_ny; iy++) { if (isComplex()) vRealResult[ix][iy] = vImag[ix][iy]; else vRealResult[ix][iy] = 0; } } if (result.isComplex()) result.reallocComplexToReal(); return true; } bool ImageFile::square (ImageFile& result) const { if (m_nx != result.nx() || m_ny != result.ny()) { sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::invertPixelValues]"); return false; } if (isComplex() && ! result.isComplex()) result.convertRealToComplex(); ImageFileArrayConst vLHS = getArray(); ImageFileArrayConst vLHSImag = getImaginaryArray(); ImageFileArray vResult = result.getArray(); ImageFileArray vResultImag = result.getImaginaryArray(); for (unsigned int ix = 0; ix < m_nx; ix++) { for (unsigned int iy = 0; iy < m_ny; iy++) { if (result.isComplex()) { double dImag = 0; if (isComplex()) dImag = vLHSImag[ix][iy]; std::complex cLHS (vLHS[ix][iy], dImag); std::complex cResult = cLHS * cLHS; vResult[ix][iy] = cResult.real(); vResultImag[ix][iy] = cResult.imag(); } else vResult[ix][iy] = vLHS[ix][iy] * vLHS[ix][iy]; } } return true; } int ImageFile::convertExportFormatNameToID (const char* const formatName) { int formatID = EXPORT_FORMAT_INVALID; for (int i = 0; i < s_iExportFormatCount; i++) { if (strcasecmp (formatName, s_aszExportFormatName[i]) == 0) { formatID = i; break; } } return (formatID); } const char* ImageFile::convertExportFormatIDToName (int formatID) { static const char *formatName = ""; if (formatID >= 0 && formatID < s_iExportFormatCount) { return (s_aszExportFormatName[formatID]); } return (formatName); } const char* ImageFile::convertExportFormatIDToTitle (const int formatID) { static const char *formatTitle = ""; if (formatID >= 0 && formatID < s_iExportFormatCount) return (s_aszExportFormatTitle[formatID]); return (formatTitle); } int ImageFile::convertImportFormatNameToID (const char* const formatName) { int formatID = IMPORT_FORMAT_INVALID; for (int i = 0; i < s_iImportFormatCount; i++) { if (strcasecmp (formatName, s_aszImportFormatName[i]) == 0) { formatID = i; break; } } return (formatID); } const char* ImageFile::convertImportFormatIDToName (int formatID) { static const char *formatName = ""; if (formatID >= 0 && formatID < s_iImportFormatCount) return (s_aszImportFormatName[formatID]); return (formatName); } const char* ImageFile::convertImportFormatIDToTitle (const int formatID) { static const char *formatTitle = ""; if (formatID >= 0 && formatID < s_iImportFormatCount) return (s_aszImportFormatTitle[formatID]); return (formatTitle); } bool ImageFile::importImage (const char* const pszFormat, const char* const pszFilename) { int iFormatID = convertImportFormatNameToID (pszFormat); if (iFormatID == IMPORT_FORMAT_PPM) return readImagePPM (pszFilename); #ifdef HAVE_PNG else if (iFormatID == IMPORT_FORMAT_PNG) return readImagePNG (pszFilename); #endif sys_error (ERR_SEVERE, "Invalid format %s [ImageFile::importImage]", pszFormat); return false; } void ImageFile::skipSpacePPM (FILE* fp) { int c = fgetc (fp); while (isspace (c) || c == '#') { if (c == '#') { // comment until end of line c = fgetc(fp); while (c != 13 && c != 10) c = fgetc(fp); } else c = fgetc(fp); } ungetc (c, fp); } bool ImageFile::readImagePPM (const char* const pszFile) { FILE* fp = fopen (pszFile, "r"); if ((fp = fopen (pszFile, "r")) == NULL) return false; char cSignature = toupper(fgetc(fp)); if (cSignature != 'P') { fclose(fp); return false; } cSignature = fgetc(fp); if (cSignature == '5' || cSignature == '6') { // binary modes fclose(fp); fp = fopen(pszFile, "rb"); // reopen in binary mode fgetc(fp); fgetc(fp); } else if (cSignature != '2' && cSignature != '3') { fclose(fp); return false; } int nRows, nCols, iMaxValue; skipSpacePPM (fp); if (fscanf (fp, "%d", &nCols) != 1) { fclose(fp); return false; } skipSpacePPM (fp); if (fscanf (fp, "%d", &nRows) != 1) { fclose(fp); return false; } skipSpacePPM (fp); if (fscanf (fp, "%d", &iMaxValue) != 1) { fclose(fp); return false; } setArraySize (nRows, nCols); if (cSignature == '5' || cSignature == '6') { // binary modes int c = fgetc(fp); if (c == 13) { c = fgetc(fp); if (c != 10) // read msdos 13-10 newline ungetc(c, fp); } } else skipSpacePPM (fp); // ascii may have comments bool bMonochromeImage = false; double dMaxValue = iMaxValue; double dMaxValue3 = iMaxValue * 3; ImageFileArray v = getArray(); for (int iy = nRows - 1; iy >= 0; iy--) { for (int ix = 0; ix < nCols; ix++) { int iGS, iR, iG, iB; double dR, dG, dB; switch (cSignature) { case '2': if (fscanf(fp, "%d ", &iGS) != 1) { fclose(fp); return false; } v[ix][iy] = iGS / dMaxValue; break; case '5': iGS = fgetc(fp); if (iGS == EOF) { fclose(fp); return false; } v[ix][iy] = iGS / dMaxValue; break; case '3': if (fscanf (fp, "%d %d %d ", &iR, &iG, &iB) != 3) { fclose(fp); return false; } if (ix == 0 && iy == 0 && (iR == iG && iG == iB)) bMonochromeImage = true; if (bMonochromeImage) v[ix][iy] = (iR + iG + iB) / dMaxValue3; else { dR = iR / dMaxValue; dG = iG / dMaxValue; dB = iB / dMaxValue; v[ix][iy] = colorToGrayscale (dR, dG, dB); } break; case '6': iR = fgetc(fp); iG = fgetc(fp); iB = fgetc(fp); if (iB == EOF) { fclose(fp); return false; } if (ix == 0 && iy == 0 && (iR == iG && iG == iB)) bMonochromeImage = true; if (bMonochromeImage) v[ix][iy] = (iR + iG + iB) / dMaxValue3; else { dR = iR / dMaxValue; dG = iG / dMaxValue; dB = iB / dMaxValue; v[ix][iy] = colorToGrayscale (dR, dG, dB); } break; } } } fclose(fp); return true; } #ifdef HAVE_PNG bool ImageFile::readImagePNG (const char* const pszFile) { FILE* fp = fopen(pszFile, "rb"); if (!fp) return false; unsigned char header[8]; int n = fread (header, 1, 8, fp); if (n != 8 || png_sig_cmp (header, 0, 8)) { fclose (fp); return false; } png_structp png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); if (!png_ptr) { fclose(fp); return false; } png_infop info_ptr = png_create_info_struct(png_ptr); if (!info_ptr) { png_destroy_read_struct(&png_ptr, (png_infopp)NULL, (png_infopp)NULL); fclose(fp); return false; } png_infop end_info = png_create_info_struct(png_ptr); if (!end_info) { png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL); fclose(fp); return false; } if (setjmp(png_jmpbuf(png_ptr))) { png_destroy_read_struct(&png_ptr, &info_ptr, &end_info); fclose(fp); return false; } png_init_io(png_ptr, fp); png_set_sig_bytes(png_ptr, 8); png_read_info(png_ptr, info_ptr); int width = png_get_image_width (png_ptr, info_ptr); int height = png_get_image_height (png_ptr, info_ptr); int bit_depth = png_get_bit_depth (png_ptr, info_ptr); int color_type = png_get_color_type (png_ptr, info_ptr); if (color_type == PNG_COLOR_TYPE_PALETTE && bit_depth <= 8) png_set_expand(png_ptr); if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8) png_set_expand(png_ptr); if (bit_depth < 8) png_set_packing(png_ptr); if (color_type & PNG_COLOR_MASK_ALPHA) png_set_strip_alpha(png_ptr); if (bit_depth == 16) png_set_swap(png_ptr); // convert to little-endian format png_read_update_info(png_ptr, info_ptr); // update with transformations int rowbytes = png_get_rowbytes (png_ptr, info_ptr); bit_depth = png_get_bit_depth (png_ptr, info_ptr); color_type = png_get_color_type (png_ptr, info_ptr); png_bytep* row_pointers = new png_bytep [height]; int i; for (i = 0; i < height; i++) row_pointers[i] = new unsigned char [rowbytes]; png_read_image(png_ptr, row_pointers); setArraySize (width, height); ImageFileArray v = getArray(); for (int iy = 0; iy < height; iy++) { for (int ix = 0; ix < width; ix++) { double dV = 0; if (color_type == PNG_COLOR_TYPE_GRAY) { if (bit_depth == 8) dV = row_pointers[iy][ix] / 255.; else if (bit_depth == 16) { int iBase = ix * 2; dV = (row_pointers[iy][iBase] + (row_pointers[iy][iBase+1] << 8)) / 65536.; } else dV = 0; } else if (color_type == PNG_COLOR_TYPE_RGB) { if (bit_depth == 8) { int iBase = ix * 3; double dR = row_pointers[iy][iBase] / 255.; double dG = row_pointers[iy][iBase+1] / 255.; double dB = row_pointers[iy][iBase+2] / 255.; dV = colorToGrayscale (dR, dG, dB); } else dV = 0; } v[ix][height-iy-1] = dV; } } png_read_end(png_ptr, end_info); png_destroy_read_struct(&png_ptr, &info_ptr, &end_info); for (i = 0; i < height; i++) delete row_pointers[i]; delete row_pointers; fclose (fp); return true; } #endif bool ImageFile::exportImage (const char* const pszFormat, const char* const pszFilename, int nxcell, int nycell, double densmin, double densmax) { int iFormatID = convertExportFormatNameToID (pszFormat); if (iFormatID == EXPORT_FORMAT_PGM) return writeImagePGM (pszFilename, nxcell, nycell, densmin, densmax); else if (iFormatID == EXPORT_FORMAT_PGMASCII) return writeImagePGMASCII (pszFilename, nxcell, nycell, densmin, densmax); else if (iFormatID == EXPORT_FORMAT_TEXT) return writeImageText (pszFilename); #ifdef HAVE_PNG else if (iFormatID == EXPORT_FORMAT_PNG) return writeImagePNG (pszFilename, 8, nxcell, nycell, densmin, densmax); else if (iFormatID == EXPORT_FORMAT_PNG16) return writeImagePNG (pszFilename, 16, nxcell, nycell, densmin, densmax); #endif #ifdef HAVE_CTN_DICOM else if (iFormatID == EXPORT_FORMAT_DICOM) { DicomExporter dicomExport (this); bool bSuccess = dicomExport.writeFile (pszFilename); if (! bSuccess) sys_error (ERR_SEVERE, dicomExport.failMessage().c_str()); return bSuccess; } #endif else if (iFormatID == EXPORT_FORMAT_RAW) return writeImageRaw(pszFilename, nxcell, nycell); sys_error (ERR_SEVERE, "Invalid format %s [ImageFile::exportImage]", pszFormat); return false; } bool ImageFile::writeImagePGM (const char* const outfile, int nxcell, int nycell, double densmin, double densmax) { FILE *fp; int nx = m_nx; int ny = m_ny; ImageFileArray v = getArray(); unsigned char* rowp = new unsigned char [nx * nxcell]; if ((fp = fopen (outfile, "wb")) == NULL) return false; fprintf(fp, "P5\n"); fprintf(fp, "%d %d\n", nx, ny); fprintf(fp, "255\n"); for (int irow = ny - 1; irow >= 0; irow--) { for (int icol = 0; icol < nx; icol++) { int pos = icol * nxcell; double dens = (v[icol][irow] - densmin) / (densmax - densmin); dens = clamp (dens, 0., 1.); for (int p = pos; p < pos + nxcell; p++) { rowp[p] = static_cast (dens * 255.); } } for (int ir = 0; ir < nycell; ir++) { for (int ic = 0; ic < nx * nxcell; ic++) fputc( rowp[ic], fp ); } } delete rowp; fclose(fp); return true; } bool ImageFile::writeImagePGMASCII (const char* const outfile, int nxcell, int nycell, double densmin, double densmax) { FILE *fp; int nx = m_nx; int ny = m_ny; ImageFileArray v = getArray(); unsigned char* rowp = new unsigned char [nx * nxcell]; if ((fp = fopen (outfile, "wb")) == NULL) return false; fprintf(fp, "P2\n"); fprintf(fp, "%d %d\n", nx, ny); fprintf(fp, "255\n"); for (int irow = ny - 1; irow >= 0; irow--) { for (int icol = 0; icol < nx; icol++) { int pos = icol * nxcell; double dens = (v[icol][irow] - densmin) / (densmax - densmin); dens = clamp (dens, 0., 1.); for (int p = pos; p < pos + nxcell; p++) { rowp[p] = static_cast (dens * 255.); } } for (int ir = 0; ir < nycell; ir++) { for (int ic = 0; ic < nx * nxcell; ic++) fprintf(fp, "%d ", rowp[ic]); fprintf(fp, "\n"); } } delete rowp; fclose(fp); return true; } bool ImageFile::writeImageText (const char* const outfile) { FILE *fp; int nx = m_nx; int ny = m_ny; ImageFileArray v = getArray(); ImageFileArray vImag = getImaginaryArray(); if ((fp = fopen (outfile, "w")) == NULL) return false; for (int irow = ny - 1; irow >= 0; irow--) { for (int icol = 0; icol < nx; icol++) { if (isComplex()) { if (vImag[icol][irow] >= 0) fprintf (fp, "%.9g+%.9gi ", v[icol][irow], vImag[icol][irow]); else fprintf (fp, "%.9g-%.9gi ", v[icol][irow], -vImag[icol][irow]); } else fprintf (fp, "%12.8g ", v[icol][irow]); } fprintf(fp, "\n"); } fclose(fp); return true; } #ifdef HAVE_PNG bool ImageFile::writeImagePNG (const char* const outfile, int bitdepth, int nxcell, int nycell, double densmin, double densmax) { double max_out_level = (1 << bitdepth) - 1; int nx = m_nx; int ny = m_ny; ImageFileArray v = getArray(); unsigned char* rowp = new unsigned char [nx * nxcell * (bitdepth / 8)]; FILE *fp = fopen (outfile, "wb"); if (! fp) return false; png_structp png_ptr = png_create_write_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); if (! png_ptr) return false; png_infop info_ptr = png_create_info_struct (png_ptr); if (! info_ptr) { png_destroy_write_struct (&png_ptr, (png_infopp) NULL); fclose (fp); return false; } if (setjmp(png_jmpbuf(png_ptr))) { png_destroy_write_struct (&png_ptr, &info_ptr); fclose (fp); return false; } png_init_io(png_ptr, fp); png_set_IHDR (png_ptr, info_ptr, nx * nxcell, ny * nycell, bitdepth, PNG_COLOR_TYPE_GRAY, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); png_write_info(png_ptr, info_ptr); for (int irow = ny - 1; irow >= 0; irow--) { png_bytep row_pointer = rowp; for (int icol = 0; icol < nx; icol++) { int pos = icol * nxcell; double dens = (v[icol][irow] - densmin) / (densmax - densmin); dens = clamp (dens, 0., 1.); unsigned int outval = static_cast (dens * max_out_level); for (int p = pos; p < pos + nxcell; p++) { if (bitdepth == 8) rowp[p] = outval; else { int rowpos = p * 2; rowp[rowpos+1] = (outval >> 8) & 0xFF; rowp[rowpos] = (outval & 0xFF); } } } for (int ir = 0; ir < nycell; ir++) png_write_rows (png_ptr, &row_pointer, 1); } png_write_end (png_ptr, info_ptr); png_destroy_write_struct (&png_ptr, &info_ptr); delete rowp; fclose(fp); return true; } #endif #ifdef HAVE_GD #include "gd.h" static const int N_GRAYSCALE=256; bool ImageFile::writeImageGIF (const char* const outfile, int nxcell, int nycell, double densmin, double densmax) { int gs_indices[N_GRAYSCALE]; int nx = m_nx; int ny = m_ny; ImageFileArray v = getArray(); unsigned char* rowp = new unsigned char [nx * nxcell]; gdImagePtr gif = gdImageCreate(nx * nxcell, ny * nycell); for (int i = 0; i < N_GRAYSCALE; i++) gs_indices[i] = gdImageColorAllocate(gif, i, i, i); int lastrow = ny * nycell - 1; for (int irow = 0; irow < ny; irow++) { int rpos = irow * nycell; for (int ir = rpos; ir < rpos + nycell; ir++) { for (int icol = 0; icol < nx; icol++) { int cpos = icol * nxcell; double dens = (v[icol][irow] - densmin) / (densmax - densmin); dens = clamp(dens, 0., 1.); for (int ic = cpos; ic < cpos + nxcell; ic++) { rowp[ic] = (unsigned int) (dens * (double) (N_GRAYSCALE - 1)); gdImageSetPixel(gif, ic, lastrow - ir, gs_indices[rowp[ic]]); } } } } FILE *out; if ((out = fopen (outfile,"w")) == NULL) { sys_error(ERR_SEVERE, "Error opening output file %s for writing", outfile); return false; } gdImageGif(gif,out); fclose(out); gdImageDestroy(gif); delete rowp; return true; } #endif bool ImageFile::writeImageRaw (const char* const outfile, int nxcell, int nycell) { FILE *fp; int nx = m_nx; int ny = m_ny; ImageFileArray v = getArray(); if ((fp = fopen (outfile, "wb")) == NULL) return false; for (int irow = ny - 1; irow >= 0; irow--) { for (int icol = 0; icol < nx; icol++) { float dens = v[icol][irow]; fwrite(&dens, sizeof(float), 1, fp); } } fclose(fp); return true; } ctsim-6.0.2/libctsim/array2dfile.cpp0000644000175000017500000004212711240454454016377 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: array2dfile.cpp ** Purpose: 2-dimension array file class ** Programmer: Kevin Rosenberg ** Date Started: June 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "array2dfile.h" #include #ifdef MSVC typedef long off_t; #endif #include const kuint16 Array2dFile::m_signature = ('I'*256+'F'); /////////////////////////////////////////////////////////////////////////// // CLASS IMPLEMENTATION // // Name: Array2dFileLabel // Purpose: Labels for Array2dFiles /////////////////////////////////////////////////////////////////////////// void Array2dFileLabel::init (void) { m_calcTime = 0; m_labelType = L_EMPTY; time_t t = time(0); tm* lt = localtime(&t); m_year = lt->tm_year; m_month = lt->tm_mon; m_day = lt->tm_mday; m_hour = lt->tm_hour; m_minute = lt->tm_min; m_second = lt->tm_sec; } Array2dFileLabel::Array2dFileLabel() { init(); } Array2dFileLabel::Array2dFileLabel(const char* const str, double ctime) : m_strLabel (str) { init(); m_labelType = L_USER; m_calcTime = ctime; } Array2dFileLabel::Array2dFileLabel(const int type, const char* const str, double ctime) : m_strLabel (str) { init(); m_labelType = type; m_calcTime = ctime; } Array2dFileLabel::~Array2dFileLabel() { } void Array2dFileLabel::setDateTime (int year, int month, int day, int hour, int minute, int second) { m_year = year; m_month = month; m_day = day; m_hour = hour; m_minute = minute; m_second = second; } void Array2dFileLabel::getDateTime (int& year, int& month, int& day, int& hour, int& minute, int& second) const { year = m_year; month = m_month; day = m_day; hour = m_hour; minute = m_minute; second = m_second; } const std::string& Array2dFileLabel::getDateString (void) const { char szDate [128]; snprintf (szDate, sizeof(szDate), "%2d/%02d/%4d %02d:%02d:%02d", m_month + 1, m_day, m_year + 1900, m_hour, m_minute, m_second); m_strDate = szDate; return m_strDate; } Array2dFileLabel::Array2dFileLabel (const Array2dFileLabel& rhs) { m_calcTime = rhs.m_calcTime; m_labelType = rhs.m_labelType; m_strLabel = rhs.m_strLabel; m_year = rhs.m_year; m_month = rhs.m_month; m_day = rhs.m_day; m_hour = rhs.m_hour; m_minute = rhs.m_minute; m_second = rhs.m_second; } Array2dFileLabel& Array2dFileLabel::operator= (const Array2dFileLabel& rhs) { m_calcTime = rhs.m_calcTime; m_labelType = rhs.m_labelType; m_strLabel = rhs.m_strLabel; m_year = rhs.m_year; m_month = rhs.m_month; m_day = rhs.m_day; m_hour = rhs.m_hour; m_minute = rhs.m_minute; m_second = rhs.m_second; return (*this); } void Array2dFileLabel::print (std::ostream& os) const { if (m_labelType == L_HISTORY) { os << "History: " << std::endl; os << " " << m_strLabel << std::endl; os << " calc time = " << m_calcTime << " secs" << std::endl; os << " Timestamp = " << getDateString() << std::endl; } else if (m_labelType == L_USER) { os << "Note: " << m_strLabel << std::endl; os << " Timestamp = %s" << getDateString() << std::endl; } else { os << "Unknown (" << m_labelType << "): " << m_strLabel << std::endl; os << " Timestamp = %s" << getDateString() << std::endl; } } void Array2dFileLabel::printBrief (std::ostream& os) const { if (m_labelType == L_HISTORY) { os << "History ("; if (m_calcTime > 0) os << m_calcTime << " secs, "; os << getDateString() << "): " << m_strLabel << std::endl; } else if (m_labelType == L_USER) { os << "Note (" << getDateString() << "): " << m_strLabel << std::endl; } else { os << "Unknown (" << getDateString() << "): " << m_strLabel << std::endl; } } void Array2dFileLabel::printBrief (std::ostringstream& os) const { if (m_labelType == L_HISTORY) { os << "History ("; if (m_calcTime > 0) os << m_calcTime << " secs, "; os << getDateString().c_str() << "): " << m_strLabel.c_str() << "\n"; } else if (m_labelType == L_USER) { os << "Note (" << getDateString() << "): " << m_strLabel << "\n"; } else { os << "Unknown (" << getDateString() << "): " << m_strLabel << "\n"; } } /////////////////////////////////////////////////////////////////////////// // CLASS IMPLEMENTATION // // Name: Array2dFile // Purpose: Array2dFiles /////////////////////////////////////////////////////////////////////////// Array2dFile::Array2dFile (int x, int y, int pixelSize, int pixelFormat, int dataType) { init(); setArraySize (x, y, pixelSize, pixelFormat, dataType); } Array2dFile::~Array2dFile (void) { freeArrays (); for (labelIterator l = m_labels.begin(); l != m_labels.end(); l++) delete *l; } Array2dFile::Array2dFile (void) { init(); } void Array2dFile::init (void) { m_pixelSize = 0; m_pixelFormat = PIXEL_INVALID; m_arrayData = NULL; m_imaginaryArrayData = NULL; m_dataType = DATA_TYPE_INVALID; m_nx = 0; m_ny = 0; m_headersize = 0; m_axisIncrementKnown = false; m_axisIncrementX = m_axisIncrementY = 0; m_axisExtentKnown = false; m_minX = m_maxX = m_minY = m_maxY = 0; m_offsetPV = 0; m_scalePV = 1; } void Array2dFile::setArraySize (int x, int y, int pixelSize, int pixelFormat, int dataType) { m_pixelSize = pixelSize; m_pixelFormat = pixelFormat; m_dataType = dataType; setArraySize (x, y); } void Array2dFile::setArraySize (int x, int y) { m_nx = x; m_ny = y; allocArrays (); } bool Array2dFile::reallocComplexToReal () { if (m_dataType != DATA_TYPE_COMPLEX) return false; freeArray (m_imaginaryArrayData); m_dataType = DATA_TYPE_REAL; return true; } bool Array2dFile::reallocRealToComplex () { if (m_dataType != DATA_TYPE_REAL) return false; allocArray (m_imaginaryArrayData); m_dataType = DATA_TYPE_COMPLEX; return true; } void Array2dFile::allocArrays () { if (m_arrayData) freeArray (m_arrayData); if (m_imaginaryArrayData) freeArray (m_imaginaryArrayData); allocArray (m_arrayData); if (m_dataType == DATA_TYPE_COMPLEX) allocArray (m_imaginaryArrayData); } void Array2dFile::allocArray (unsigned char**& rppData) { m_arraySize = m_nx * m_ny * m_pixelSize; rppData = new unsigned char* [m_nx]; int columnBytes = m_ny * m_pixelSize; for (unsigned int i = 0; i < m_nx; i++) rppData[i] = new unsigned char [columnBytes]; } void Array2dFile::freeArrays () { if (m_arrayData) freeArray (m_arrayData); if (m_imaginaryArrayData) freeArray (m_imaginaryArrayData); } void Array2dFile::freeArray (unsigned char**& rppData) { for (unsigned int i = 0; i < m_nx; i++) delete rppData[i]; delete rppData; rppData = NULL; } bool Array2dFile::fileWrite (const std::string& filename) { return fileWrite (filename.c_str()); } bool Array2dFile::fileWrite (const char* const filename) { m_filename = filename; frnetorderstream fs (m_filename.c_str(), std::ios::out | std::ios::in | std::ios::trunc | std::ios::binary); if (fs.fail()) { sys_error (ERR_WARNING, "Error opening file %s for writing [fileCreate]", m_filename.c_str()); return false; } if (! headerWrite(fs)) return false; if (! arrayDataWrite (fs)) return false; if (! labelsWrite (fs)) return false; return true; } bool Array2dFile::fileRead (const std::string& filename) { return fileRead (filename.c_str()); } bool Array2dFile::fileRead (const char* const filename) { m_filename = filename; frnetorderstream fs (m_filename.c_str(), std::ios::out | std::ios::in | std::ios::binary); if (fs.fail()) { sys_error (ERR_WARNING, "Unable to open file %s [fileRead]", m_filename.c_str()); return false; } if (! headerRead(fs)) return false; allocArrays (); if (! arrayDataRead(fs)) return false;; if (! labelsRead (fs)) return false; return true; } void Array2dFile::setAxisIncrement (double incX, double incY) { m_axisIncrementKnown = true; m_axisIncrementX = incX; m_axisIncrementY = incY; } void Array2dFile::setAxisExtent (double minX, double maxX, double minY, double maxY) { m_axisExtentKnown = true; m_minX = minX; m_maxY = maxX; m_minX = minX; m_maxY = maxY; } bool Array2dFile::headerRead (frnetorderstream& fs) { if (! fs) { sys_error (ERR_WARNING, "Tried to read header with file closed [headerRead]"); return false; } fs.seekg (0); kuint16 file_signature; fs.readInt16 (m_headersize); fs.readInt16 (file_signature); fs.readInt16 (m_pixelFormat); fs.readInt16 (m_pixelSize); fs.readInt16 (m_numFileLabels); fs.readInt32 (m_nx); fs.readInt32 (m_ny); fs.readInt16 (m_dataType); fs.readInt16 (m_axisIncrementKnown); fs.readFloat64 (m_axisIncrementX); fs.readFloat64 (m_axisIncrementY); fs.readInt16 (m_axisExtentKnown); fs.readFloat64 (m_minX); fs.readFloat64 (m_maxX); fs.readFloat64 (m_minY); fs.readFloat64 (m_maxY); fs.readFloat64 (m_offsetPV); fs.readFloat64 (m_scalePV); int read_m_headersize = fs.tellg(); if (read_m_headersize != m_headersize) { sys_error (ERR_WARNING, "Read m_headersize %d != file m_headersize %d", read_m_headersize, m_headersize); return false; } if (file_signature != m_signature) { sys_error (ERR_WARNING, "File signature %d != true signature %d", file_signature, m_signature); return false; } return ! fs.fail(); } bool Array2dFile::headerWrite (frnetorderstream& fs) { if (! fs) { sys_error (ERR_WARNING, "Tried to write header with ! fs"); return false; } m_numFileLabels = m_labels.size(); fs.seekp (0); fs.writeInt16 (m_headersize); fs.writeInt16 (m_signature); fs.writeInt16 (m_pixelFormat); fs.writeInt16 (m_pixelSize); fs.writeInt16 (m_numFileLabels); fs.writeInt32 (m_nx); fs.writeInt32 (m_ny); fs.writeInt16 (m_dataType); fs.writeInt16 (m_axisIncrementKnown); fs.writeFloat64 (m_axisIncrementX); fs.writeFloat64 (m_axisIncrementY); fs.writeInt16 (m_axisExtentKnown); fs.writeFloat64 (m_minX); fs.writeFloat64 (m_maxX); fs.writeFloat64 (m_minY); fs.writeFloat64 (m_maxY); fs.writeFloat64 (m_offsetPV); fs.writeFloat64 (m_scalePV); m_headersize = static_cast(fs.tellp()); fs.seekp (0); fs.writeInt16 (m_headersize); return ! fs.fail(); } bool Array2dFile::arrayDataWrite (frnetorderstream& fs) { if (! fs) { sys_error (ERR_WARNING, "Tried to arrayDataWrite with !fs"); return false; } if (! m_arrayData) return false; fs.seekp (m_headersize); int columnSize = m_ny * m_pixelSize; for (unsigned int ix = 0; ix < m_nx; ix++) { unsigned char* ptrColumn = m_arrayData[ix]; if (NativeBigEndian()) { for (unsigned int iy = 0; iy < m_ny; iy++) { ConvertReverseNetworkOrder (ptrColumn, m_pixelSize); fs.write (reinterpret_cast(ptrColumn), m_pixelSize); ptrColumn += m_pixelSize; } } else fs.write (reinterpret_cast(ptrColumn), columnSize); } if (m_dataType == DATA_TYPE_COMPLEX) { for (unsigned int ix = 0; ix < m_nx; ix++) { unsigned char* ptrColumn = m_imaginaryArrayData[ix]; if (NativeBigEndian()) { for (unsigned int iy = 0; iy < m_ny; iy++) { ConvertReverseNetworkOrder (ptrColumn, m_pixelSize); fs.write (reinterpret_cast(ptrColumn), m_pixelSize); ptrColumn += m_pixelSize; } } else fs.write (reinterpret_cast(ptrColumn), columnSize); } } return true; } bool Array2dFile::arrayDataRead (frnetorderstream& fs) { if (! fs) { sys_error (ERR_WARNING, "Tried to arrayDataRead with ! fs"); return false; } if (! m_arrayData) return false; fs.seekg (m_headersize); int columnSize = m_ny * m_pixelSize; for (unsigned int ix = 0; ix < m_nx; ix++) { unsigned char* ptrColumn = m_arrayData[ix]; if (NativeBigEndian()) { for (unsigned int iy = 0; iy < m_ny; iy++) { fs.read (reinterpret_cast(ptrColumn), m_pixelSize); ConvertReverseNetworkOrder (ptrColumn, m_pixelSize); ptrColumn += m_pixelSize; } } else fs.read (reinterpret_cast(ptrColumn), columnSize); } if (m_dataType == DATA_TYPE_COMPLEX) { for (unsigned int ix = 0; ix < m_nx; ix++) { unsigned char* ptrColumn = m_imaginaryArrayData[ix]; if (NativeBigEndian()) { for (unsigned int iy = 0; iy < m_ny; iy++) { fs.read (reinterpret_cast(ptrColumn), m_pixelSize); ConvertReverseNetworkOrder (ptrColumn, m_pixelSize); ptrColumn += m_pixelSize; } } else fs.read (reinterpret_cast(ptrColumn), columnSize); } } return true; } bool Array2dFile::labelsRead (frnetorderstream& fs) { off_t pos = m_headersize + m_arraySize; fs.seekg (pos); if (fs.fail()) return false; for (int i = 0; i < m_numFileLabels; i++) { kuint16 labelType, year, month, day, hour, minute, second; kfloat64 calcTime; fs.readInt16 (labelType); fs.readInt16 (year); fs.readInt16 (month); fs.readInt16 (day); fs.readInt16 (hour); fs.readInt16 (minute); fs.readInt16 (second); fs.readFloat64 (calcTime); kuint16 strLength; fs.readInt16 (strLength); char* pszLabelStr = new char [strLength+1]; fs.read (pszLabelStr, strLength); pszLabelStr[strLength] = 0; Array2dFileLabel* pLabel = new Array2dFileLabel (labelType, pszLabelStr, calcTime); delete pszLabelStr; pLabel->setDateTime (year, month, day, hour, minute, second); m_labels.push_back (pLabel); } return true; } bool Array2dFile::labelsWrite (frnetorderstream& fs) { off_t pos = m_headersize + m_arraySize; fs.seekp (pos); for (constLabelIterator l = m_labels.begin(); l != m_labels.end(); l++) { const Array2dFileLabel& label = **l; kuint16 labelType = label.getLabelType(); kfloat64 calcTime = label.getCalcTime(); const char* const labelString = label.getLabelString().c_str(); int year, month, day, hour, minute, second; kuint16 yearBuf, monthBuf, dayBuf, hourBuf, minuteBuf, secondBuf; label.getDateTime (year, month, day, hour, minute, second); yearBuf = year; monthBuf = month; dayBuf = day; hourBuf = hour; minuteBuf = minute; secondBuf = second; fs.writeInt16 (labelType); fs.writeInt16 (yearBuf); fs.writeInt16 (monthBuf); fs.writeInt16 (dayBuf); fs.writeInt16 (hourBuf); fs.writeInt16 (minuteBuf); fs.writeInt16 (secondBuf); fs.writeFloat64 (calcTime); kuint16 strlength = strlen (labelString); fs.writeInt16 (strlength); fs.write (labelString, strlength); } return true; } void Array2dFile::labelAdd (const char* const lstr, double calc_time) { labelAdd (Array2dFileLabel::L_HISTORY, lstr, calc_time); } void Array2dFile::labelAdd (int type, const char* const lstr, double calc_time) { Array2dFileLabel label (type, lstr, calc_time); labelAdd (label); } void Array2dFile::labelAdd (const Array2dFileLabel& label) { Array2dFileLabel* pLabel = new Array2dFileLabel(label); m_labels.push_back (pLabel); } void Array2dFile::labelsCopy (const Array2dFile& copyFile, const char* const pszId) { std::string id; if (pszId) id = pszId; for (unsigned int i = 0; i < copyFile.getNumLabels(); i++) { Array2dFileLabel l (copyFile.labelGet (i)); std::string lstr = l.getLabelString(); lstr = id + lstr; l.setLabelString (lstr); labelAdd (l); } } void Array2dFile::arrayDataClear (void) { if (m_arrayData) { int columnSize = m_ny * m_pixelSize; for (unsigned int ix = 0; ix < m_nx; ix++) memset (m_arrayData[ix], 0, columnSize); } if (m_imaginaryArrayData) { int columnSize = m_ny * m_pixelSize; for (unsigned int ix = 0; ix < m_nx; ix++) memset (m_arrayData[ix], 0, columnSize); } } void Array2dFile::printLabels (std::ostream& os) const { for (constLabelIterator l = m_labels.begin(); l != m_labels.end(); l++) { const Array2dFileLabel& label = **l; label.print (os); os << std::endl; } } void Array2dFile::printLabelsBrief (std::ostream& os) const { for (constLabelIterator l = m_labels.begin(); l != m_labels.end(); l++) { const Array2dFileLabel& label = **l; label.printBrief (os); } } void Array2dFile::printLabelsBrief (std::ostringstream& os) const { for (constLabelIterator l = m_labels.begin(); l != m_labels.end(); l++) { const Array2dFileLabel& label = **l; label.printBrief (os); } } const Array2dFileLabel& Array2dFile::labelGet (int i) const { return *m_labels[i]; } ctsim-6.0.2/libctsim/procsignal.cpp0000644000175000017500000010011013254502320016310 0ustar kevinkevin/***************************************************************************** ** File IDENTIFICATION ** ** Name: procsignal.cpp ** Purpose: Routines for processing signals and projections ** Progammer: Kevin Rosenberg ** Date Started: Aug 1984 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "ct.h" #ifdef HAVE_WXWINDOWS #include "nographics.h" #endif // FilterMethod ID/Names const int ProcessSignal::FILTER_METHOD_INVALID = -1; const int ProcessSignal::FILTER_METHOD_CONVOLUTION = 0; const int ProcessSignal::FILTER_METHOD_FOURIER = 1; const int ProcessSignal::FILTER_METHOD_FOURIER_TABLE = 2; const int ProcessSignal::FILTER_METHOD_FFT = 3; #if HAVE_FFTW const int ProcessSignal::FILTER_METHOD_FFTW = 4; const int ProcessSignal::FILTER_METHOD_RFFTW =5 ; #endif const char* const ProcessSignal::s_aszFilterMethodName[] = { "convolution", "fourier", "fouier-table", "fft", #if HAVE_FFTW "fftw", "rfftw", #endif }; const char* const ProcessSignal::s_aszFilterMethodTitle[] = { "Convolution", "Fourier", "Fouier Trigometric Table", "FFT", #if HAVE_FFTW "FFTW", "Real/Half-Complex FFTW", #endif }; const int ProcessSignal::s_iFilterMethodCount = sizeof(s_aszFilterMethodName) / sizeof(const char*); // FilterGeneration ID/Names const int ProcessSignal::FILTER_GENERATION_INVALID = -1; const int ProcessSignal::FILTER_GENERATION_DIRECT = 0; const int ProcessSignal::FILTER_GENERATION_INVERSE_FOURIER = 1; const char* const ProcessSignal::s_aszFilterGenerationName[] = { "direct", "inverse-fourier", }; const char* const ProcessSignal::s_aszFilterGenerationTitle[] = { "Direct", "Inverse Fourier", }; const int ProcessSignal::s_iFilterGenerationCount = sizeof(s_aszFilterGenerationName) / sizeof(const char*); // CLASS IDENTIFICATION // ProcessSignal // ProcessSignal::ProcessSignal (const char* szFilterName, const char* szFilterMethodName, double dBandwidth, double dSignalIncrement, int nSignalPoints, double dFilterParam, const char* szDomainName, const char* szFilterGenerationName, int iZeropad, int iPreinterpolationFactor, int iTraceLevel, int iGeometry, double dFocalLength, double dSourceDetectorLength, SGP* pSGP) : m_adFourierCosTable(NULL), m_adFourierSinTable(NULL), m_adFilter(NULL), m_fail(false) { m_idFilterMethod = convertFilterMethodNameToID (szFilterMethodName); if (m_idFilterMethod == FILTER_METHOD_INVALID) { m_fail = true; m_failMessage = "Invalid filter method name "; m_failMessage += szFilterMethodName; return; } m_idFilterGeneration = convertFilterGenerationNameToID (szFilterGenerationName); if (m_idFilterGeneration == FILTER_GENERATION_INVALID) { m_fail = true; m_failMessage = "Invalid frequency filter name "; m_failMessage += szFilterGenerationName; return; } m_idFilter = SignalFilter::convertFilterNameToID (szFilterName); if (m_idFilter == SignalFilter::FILTER_INVALID) { m_fail = true; m_failMessage = "Invalid Filter name "; m_failMessage += szFilterName; return; } m_idDomain = SignalFilter::convertDomainNameToID (szDomainName); if (m_idDomain == SignalFilter::DOMAIN_INVALID) { m_fail = true; m_failMessage = "Invalid domain name "; m_failMessage += szDomainName; return; } init (m_idFilter, m_idFilterMethod, dBandwidth, dSignalIncrement, nSignalPoints, dFilterParam, m_idDomain, m_idFilterGeneration, iZeropad, iPreinterpolationFactor, iTraceLevel, iGeometry, dFocalLength, dSourceDetectorLength, pSGP); } void ProcessSignal::init (const int idFilter, const int idFilterMethod, double dBandwidth, double dSignalIncrement, int nSignalPoints, double dFilterParam, const int idDomain, const int idFilterGeneration, const int iZeropad, const int iPreinterpolationFactor, int iTraceLevel, int iGeometry, double dFocalLength, double dSourceDetectorLength, SGP* pSGP) { int i; m_idFilter = idFilter; m_idDomain = idDomain; m_idFilterMethod = idFilterMethod; m_idFilterGeneration = idFilterGeneration; m_idGeometry = iGeometry; m_dFocalLength = dFocalLength; m_dSourceDetectorLength = dSourceDetectorLength; if (m_idFilter == SignalFilter::FILTER_INVALID || m_idDomain == SignalFilter::DOMAIN_INVALID || m_idFilterMethod == FILTER_METHOD_INVALID || m_idFilterGeneration == FILTER_GENERATION_INVALID) { m_fail = true; return; } m_traceLevel = iTraceLevel; m_nameFilterMethod = convertFilterMethodIDToName (m_idFilterMethod); m_nameFilterGeneration = convertFilterGenerationIDToName (m_idFilterGeneration); m_dBandwidth = dBandwidth; m_nSignalPoints = nSignalPoints; m_dSignalInc = dSignalIncrement; m_dFilterParam = dFilterParam; m_iZeropad = iZeropad; m_iPreinterpolationFactor = iPreinterpolationFactor; // scale signalInc/BW to adjust for imaginary detector through origin of phantom // see Kak-Slaney Fig 3.22, for Collinear diagram if (m_idGeometry == Scanner::GEOMETRY_EQUILINEAR) { double dEquilinearScale = m_dSourceDetectorLength / m_dFocalLength; m_dSignalInc /= dEquilinearScale; m_dBandwidth *= dEquilinearScale; } if (m_idFilterMethod == FILTER_METHOD_FFT) { #if HAVE_FFTW m_idFilterMethod = FILTER_METHOD_RFFTW; #else m_fail = true; m_failMessage = "FFT not yet implemented"; return; #endif } bool m_bFrequencyFiltering = true; if (m_idFilterMethod == FILTER_METHOD_CONVOLUTION) m_bFrequencyFiltering = false; // Spatial-based filtering if (! m_bFrequencyFiltering) { if (m_idFilterGeneration == FILTER_GENERATION_DIRECT) { m_nFilterPoints = 2 * (m_nSignalPoints - 1) + 1; m_dFilterMin = -m_dSignalInc * (m_nSignalPoints - 1); m_dFilterMax = m_dSignalInc * (m_nSignalPoints - 1); m_dFilterInc = (m_dFilterMax - m_dFilterMin) / (m_nFilterPoints - 1); SignalFilter filter (m_idFilter, m_dFilterMin, m_dFilterMax, m_nFilterPoints, m_dBandwidth, m_dFilterParam, SignalFilter::DOMAIN_SPATIAL); m_adFilter = new double[ m_nFilterPoints ]; filter.copyFilterData (m_adFilter, 0, m_nFilterPoints); } else if (m_idFilterGeneration == FILTER_GENERATION_INVERSE_FOURIER) { m_nFilterPoints = 2 * (m_nSignalPoints - 1) + 1; m_dFilterMin = -1. / (2 * m_dSignalInc); m_dFilterMax = 1. / (2 * m_dSignalInc); m_dFilterInc = (m_dFilterMax - m_dFilterMin) / (m_nFilterPoints - 1); SignalFilter filter (m_idFilter, m_dFilterMin, m_dFilterMax, m_nFilterPoints, m_dBandwidth, m_dFilterParam, SignalFilter::DOMAIN_FREQUENCY); m_adFilter = new double[ m_nFilterPoints ]; double* adFrequencyFilter = new double [m_nFilterPoints]; filter.copyFilterData (adFrequencyFilter, 0, m_nFilterPoints); #if defined(HAVE_WXWINDOWS) && (defined(DEBUG) || defined(_DEBUG)) if (g_bRunningWXWindows && m_traceLevel > 0) { EZPlotDialog dlgEZPlot; dlgEZPlot.getEZPlot()->ezset ("title Filter Response: Natural Order"); dlgEZPlot.getEZPlot()->addCurve (adFrequencyFilter, m_nFilterPoints); dlgEZPlot.ShowModal(); } #endif Fourier::shuffleNaturalToFourierOrder (adFrequencyFilter, m_nFilterPoints); #ifdef HAVE_SGP if (g_bRunningWXWindows && m_traceLevel > 0) { EZPlotDialog dlgEZPlot; dlgEZPlot.getEZPlot()->ezset ("title Filter Response: Fourier Order"); dlgEZPlot.getEZPlot()->addCurve (adFrequencyFilter, m_nFilterPoints); dlgEZPlot.ShowModal(); } #endif ProcessSignal::finiteFourierTransform (adFrequencyFilter, m_adFilter, m_nFilterPoints, FORWARD); delete adFrequencyFilter; #if defined(HAVE_WXWINDOWS) && (defined(DEBUG) || defined(_DEBUG)) if (g_bRunningWXWindows && m_traceLevel > 0) { EZPlotDialog dlgEZPlot; dlgEZPlot.getEZPlot()->ezset ("title Inverse Fourier Frequency: Fourier Order"); dlgEZPlot.getEZPlot()->addCurve (m_adFilter, m_nFilterPoints); dlgEZPlot.ShowModal(); } #endif Fourier::shuffleFourierToNaturalOrder (m_adFilter, m_nFilterPoints); #if defined(HAVE_WXWINDOWS) && (defined(DEBUG) || defined(_DEBUG)) if (g_bRunningWXWindows && m_traceLevel > 0) { EZPlotDialog dlgEZPlot; dlgEZPlot.getEZPlot()->ezset ("title Inverse Fourier Frequency: Natural Order"); dlgEZPlot.getEZPlot()->addCurve (m_adFilter, m_nFilterPoints); dlgEZPlot.ShowModal(); } #endif for (i = 0; i < m_nFilterPoints; i++) { m_adFilter[i] /= m_dSignalInc; } } if (m_idGeometry == Scanner::GEOMETRY_EQUILINEAR) { for (i = 0; i < m_nFilterPoints; i++) m_adFilter[i] *= 0.5; } else if (m_idGeometry == Scanner::GEOMETRY_EQUIANGULAR) { for (i = 0; i < m_nFilterPoints; i++) { int iDetFromZero = i - ((m_nFilterPoints - 1) / 2); double sinScale = 1 / SignalFilter::sinc (iDetFromZero * m_dSignalInc); double dScale = 0.5 * sinScale * sinScale; m_adFilter[i] *= dScale; } #if defined(HAVE_WXWINDOWS) && (defined(DEBUG) || defined(_DEBUG)) if (g_bRunningWXWindows && m_traceLevel > 0) { EZPlotDialog dlgEZPlot; dlgEZPlot.getEZPlot()->ezset ("title Scaled Inverse Fourier Frequency: Natural Order"); dlgEZPlot.getEZPlot()->addCurve (m_adFilter, m_nFilterPoints); dlgEZPlot.ShowModal(); } #endif } // if (geometry) } // if (spatial filtering) else if (m_bFrequencyFiltering) { // Frequency-based filtering if (m_idFilterGeneration == FILTER_GENERATION_DIRECT) { // calculate number of filter points with zeropadding m_nFilterPoints = addZeropadFactor (m_nSignalPoints, m_iZeropad); m_nOutputPoints = m_nFilterPoints * m_iPreinterpolationFactor; if (isOdd (m_nFilterPoints)) { // Odd m_dFilterMin = -1. / (2 * m_dSignalInc); m_dFilterMax = 1. / (2 * m_dSignalInc); m_dFilterInc = (m_dFilterMax - m_dFilterMin) / (m_nFilterPoints - 1); } else { // Even m_dFilterMin = -1. / (2 * m_dSignalInc); m_dFilterMax = 1. / (2 * m_dSignalInc); m_dFilterInc = (m_dFilterMax - m_dFilterMin) / m_nFilterPoints; m_dFilterMax -= m_dFilterInc; } SignalFilter filter (m_idFilter, m_dFilterMin, m_dFilterMax, m_nFilterPoints, m_dBandwidth, m_dFilterParam, SignalFilter::DOMAIN_FREQUENCY); m_adFilter = new double [m_nFilterPoints]; filter.copyFilterData (m_adFilter, 0, m_nFilterPoints); #if defined(HAVE_WXWINDOWS) && (defined(DEBUG) || defined(_DEBUG)) if (g_bRunningWXWindows && m_traceLevel > 0) { EZPlotDialog dlgEZPlot; dlgEZPlot.getEZPlot()->ezset ("title Frequency Filter: Natural Order"); dlgEZPlot.getEZPlot()->addCurve (m_adFilter, m_nFilterPoints); dlgEZPlot.ShowModal(); } #endif // This works fairly well. I'm not sure why since scaling for geometries is done on // frequency filter rather than spatial filter as it should be. // It gives values slightly off than freq/inverse filtering if (m_idGeometry == Scanner::GEOMETRY_EQUILINEAR) { for (i = 0; i < m_nFilterPoints; i++) m_adFilter[i] *= 0.5; } else if (m_idGeometry == Scanner::GEOMETRY_EQUIANGULAR) { for (i = 0; i < m_nFilterPoints; i++) { int iDetFromZero = i - ((m_nFilterPoints - 1) / 2); double sinScale = 1 / SignalFilter::sinc (iDetFromZero * m_dSignalInc); double dScale = 0.5 * sinScale * sinScale; m_adFilter[i] *= dScale; } } #if defined(HAVE_WXWINDOWS) && (defined(DEBUG) || defined(_DEBUG)) if (g_bRunningWXWindows && m_traceLevel > 0) { EZPlotDialog dlgEZPlot; dlgEZPlot.getEZPlot()->ezset ("title Filter Geometry Scaled: Natural Order"); dlgEZPlot.getEZPlot()->addCurve (m_adFilter, m_nFilterPoints); dlgEZPlot.ShowModal(); } #endif Fourier::shuffleNaturalToFourierOrder (m_adFilter, m_nFilterPoints); #if defined(HAVE_WXWINDOWS) && (defined(DEBUG) || defined(_DEBUG)) if (g_bRunningWXWindows && m_traceLevel > 0) { EZPlotDialog dlgEZPlot; dlgEZPlot.getEZPlot()->ezset ("title Filter Geometry Scaled: Fourier Order"); dlgEZPlot.getEZPlot()->addCurve (m_adFilter, m_nFilterPoints); dlgEZPlot.ShowModal(); } #endif // FILTERING: FREQUENCY - INVERSE FOURIER } else if (m_idFilterGeneration == FILTER_GENERATION_INVERSE_FOURIER) { // calculate number of filter points with zeropadding int nSpatialPoints = 2 * (m_nSignalPoints - 1) + 1; m_dFilterMin = -m_dSignalInc * (m_nSignalPoints - 1); m_dFilterMax = m_dSignalInc * (m_nSignalPoints - 1); m_dFilterInc = (m_dFilterMax - m_dFilterMin) / (nSpatialPoints - 1); m_nFilterPoints = nSpatialPoints; if (m_iZeropad > 0) { double logBase2 = log(nSpatialPoints) / log(2); int nextPowerOf2 = static_cast(floor(logBase2)); if (logBase2 != floor(logBase2)) nextPowerOf2++; nextPowerOf2 += (m_iZeropad - 1); m_nFilterPoints = 1 << nextPowerOf2; } m_nOutputPoints = m_nFilterPoints * m_iPreinterpolationFactor; #if defined(DEBUG) || defined(_DEBUG) if (m_traceLevel >= Trace::TRACE_CONSOLE) sys_error (ERR_TRACE, "nFilterPoints = %d", m_nFilterPoints); #endif double* adSpatialFilter = new double [m_nFilterPoints]; SignalFilter filter (m_idFilter, m_dFilterMin, m_dFilterMax, nSpatialPoints, m_dBandwidth, m_dFilterParam, SignalFilter::DOMAIN_SPATIAL); filter.copyFilterData (adSpatialFilter, 0, nSpatialPoints); #if defined(HAVE_WXWINDOWS) && (defined(DEBUG) || defined(_DEBUG)) if (g_bRunningWXWindows && m_traceLevel > 0) { EZPlotDialog dlgEZPlot;; dlgEZPlot.getEZPlot()->ezset ("title Spatial Filter: Natural Order"); dlgEZPlot.getEZPlot()->addCurve (adSpatialFilter, nSpatialPoints); dlgEZPlot.ShowModal(); } #endif if (m_idGeometry == Scanner::GEOMETRY_EQUILINEAR) { for (i = 0; i < nSpatialPoints; i++) adSpatialFilter[i] *= 0.5; } else if (m_idGeometry == Scanner::GEOMETRY_EQUIANGULAR) { for (i = 0; i < nSpatialPoints; i++) { int iDetFromZero = i - ((nSpatialPoints - 1) / 2); double sinScale = sin (iDetFromZero * m_dSignalInc); if (fabs(sinScale) < 1E-7) sinScale = 1; else sinScale = (iDetFromZero * m_dSignalInc) / sinScale; double dScale = 0.5 * sinScale * sinScale; adSpatialFilter[i] *= dScale; } } #if defined(HAVE_WXWINDOWS) && (defined(DEBUG) || defined(_DEBUG)) if (g_bRunningWXWindows && m_traceLevel > 0) { EZPlotDialog dlgEZPlot;; dlgEZPlot.getEZPlot()->ezset ("title Scaled Spatial Filter: Natural Order"); dlgEZPlot.getEZPlot()->addCurve (adSpatialFilter, nSpatialPoints); dlgEZPlot.ShowModal(); } #endif for (i = nSpatialPoints; i < m_nFilterPoints; i++) adSpatialFilter[i] = 0; m_adFilter = new double [m_nFilterPoints]; std::complex* acInverseFilter = new std::complex [m_nFilterPoints]; finiteFourierTransform (adSpatialFilter, acInverseFilter, m_nFilterPoints, BACKWARD); delete adSpatialFilter; for (i = 0; i < m_nFilterPoints; i++) m_adFilter[i] = std::abs (acInverseFilter[i]) * m_dSignalInc; delete acInverseFilter; #if defined(HAVE_WXWINDOWS) && (defined(DEBUG) || defined(_DEBUG)) if (g_bRunningWXWindows && m_traceLevel > 0) { EZPlotDialog dlgEZPlot; dlgEZPlot.getEZPlot()->ezset ("title Fourier Scaled Spatial Filter: Fourier Order"); dlgEZPlot.getEZPlot()->addCurve (m_adFilter, m_nFilterPoints); dlgEZPlot.ShowModal(); } #endif } } // precalculate sin and cosine tables for fourier transform if (m_idFilterMethod == FILTER_METHOD_FOURIER_TABLE) { int nFourier = imax (m_nFilterPoints,m_nOutputPoints) * imax (m_nFilterPoints, m_nOutputPoints) + 1; double angleIncrement = (2. * PI) / m_nFilterPoints; m_adFourierCosTable = new double[ nFourier ]; m_adFourierSinTable = new double[ nFourier ]; double angle = 0; for (i = 0; i < nFourier; i++) { m_adFourierCosTable[i] = cos (angle); m_adFourierSinTable[i] = sin (angle); angle += angleIncrement; } } #if HAVE_FFTW if (m_idFilterMethod == FILTER_METHOD_FFTW || m_idFilterMethod == FILTER_METHOD_RFFTW) { for (i = 0; i < m_nFilterPoints; i++) //fftw uses unnormalized fft m_adFilter[i] /= m_nFilterPoints; } if (m_idFilterMethod == FILTER_METHOD_RFFTW) { m_adRealFftInput = static_cast(fftw_malloc (sizeof(double) * m_nFilterPoints)); m_adRealFftOutput = static_cast(fftw_malloc (sizeof(double) * m_nFilterPoints)); m_realPlanForward = fftw_plan_r2r_1d (m_nFilterPoints, m_adRealFftInput, m_adRealFftOutput, FFTW_R2HC, FFTW_ESTIMATE); m_adRealFftSignal = static_cast(fftw_malloc (sizeof(double) * m_nOutputPoints)); m_adRealFftBackwardOutput = static_cast(fftw_malloc (sizeof(double) * m_nOutputPoints)); m_realPlanBackward = fftw_plan_r2r_1d (m_nOutputPoints, m_adRealFftSignal, m_adRealFftBackwardOutput, FFTW_HC2R, FFTW_ESTIMATE); for (i = 0; i < m_nFilterPoints; i++) m_adRealFftInput[i] = 0; } else if (m_idFilterMethod == FILTER_METHOD_FFTW) { m_adComplexFftInput = static_cast(fftw_malloc (sizeof(fftw_complex) * m_nFilterPoints)); m_adComplexFftOutput = static_cast(fftw_malloc (sizeof(fftw_complex) * m_nFilterPoints)); m_complexPlanForward = fftw_plan_dft_1d (m_nFilterPoints, m_adComplexFftInput, m_adComplexFftOutput, FFTW_FORWARD, FFTW_ESTIMATE); m_adComplexFftSignal = static_cast(fftw_malloc (sizeof(fftw_complex) * m_nOutputPoints)); m_adComplexFftBackwardOutput = static_cast(fftw_malloc (sizeof(fftw_complex) * m_nOutputPoints)); m_complexPlanBackward = fftw_plan_dft_1d (m_nOutputPoints, m_adComplexFftSignal, m_adComplexFftBackwardOutput, FFTW_BACKWARD, FFTW_ESTIMATE); for (i = 0; i < m_nFilterPoints; i++) m_adComplexFftInput[i][0] = m_adComplexFftInput[i][1] = 0; for (i = 0; i < m_nOutputPoints; i++) m_adComplexFftSignal[i][0] = m_adComplexFftSignal[i][1] = 0; } #endif } ProcessSignal::~ProcessSignal (void) { delete [] m_adFourierSinTable; delete [] m_adFourierCosTable; delete [] m_adFilter; #if HAVE_FFTW if (m_idFilterMethod == FILTER_METHOD_FFTW) { fftw_destroy_plan(m_complexPlanForward); fftw_destroy_plan(m_complexPlanBackward); fftw_free (m_adComplexFftInput); fftw_free (m_adComplexFftOutput); fftw_free (m_adComplexFftSignal); fftw_free (m_adComplexFftBackwardOutput); } if (m_idFilterMethod == FILTER_METHOD_RFFTW) { fftw_destroy_plan(m_realPlanForward); fftw_destroy_plan(m_realPlanBackward); fftw_free (m_adRealFftInput); fftw_free (m_adRealFftOutput); fftw_free (m_adRealFftSignal); fftw_free (m_adRealFftBackwardOutput); } #endif } int ProcessSignal::convertFilterMethodNameToID (const char* const filterMethodName) { int fmID = FILTER_METHOD_INVALID; for (int i = 0; i < s_iFilterMethodCount; i++) { if (strcasecmp (filterMethodName, s_aszFilterMethodName[i]) == 0) { fmID = i; break; } } return (fmID); } const char * ProcessSignal::convertFilterMethodIDToName (const int fmID) { static const char *name = ""; if (fmID >= 0 && fmID < s_iFilterMethodCount) return (s_aszFilterMethodName [fmID]); return (name); } const char * ProcessSignal::convertFilterMethodIDToTitle (const int fmID) { static const char *title = ""; if (fmID >= 0 && fmID < s_iFilterMethodCount) return (s_aszFilterMethodTitle [fmID]); return (title); } int ProcessSignal::convertFilterGenerationNameToID (const char* const fgName) { int fgID = FILTER_GENERATION_INVALID; for (int i = 0; i < s_iFilterGenerationCount; i++) { if (strcasecmp (fgName, s_aszFilterGenerationName[i]) == 0) { fgID = i; break; } } return (fgID); } const char * ProcessSignal::convertFilterGenerationIDToName (const int fgID) { static const char *name = ""; if (fgID >= 0 && fgID < s_iFilterGenerationCount) return (s_aszFilterGenerationName [fgID]); return (name); } const char * ProcessSignal::convertFilterGenerationIDToTitle (const int fgID) { static const char *name = ""; if (fgID >= 0 && fgID < s_iFilterGenerationCount) return (s_aszFilterGenerationTitle [fgID]); return (name); } void ProcessSignal::filterSignal (const float constInput[], double output[]) const { double* input = new double [m_nSignalPoints]; int i; #if HAVE_OPENMP #pragma omp parallel for #endif for (i = 0; i < m_nSignalPoints; i++) input[i] = constInput[i]; if (m_idGeometry == Scanner::GEOMETRY_EQUILINEAR) { #if HAVE_OPENMP #pragma omp parallel for #endif for (int i = 0; i < m_nSignalPoints; i++) { int iDetFromCenter = i - (m_nSignalPoints / 2); input[i] *= m_dFocalLength / sqrt (m_dFocalLength * m_dFocalLength + iDetFromCenter * iDetFromCenter * m_dSignalInc * m_dSignalInc); } } else if (m_idGeometry == Scanner::GEOMETRY_EQUIANGULAR) { #if HAVE_OPENMP #pragma omp parallel for #endif for (int i = 0; i < m_nSignalPoints; i++) { int iDetFromCenter = i - (m_nSignalPoints / 2); input[i] *= m_dFocalLength * cos (iDetFromCenter * m_dSignalInc); } } if (m_idFilterMethod == FILTER_METHOD_CONVOLUTION) { #if HAVE_OPENMP #pragma omp parallel for #endif for (i = 0; i < m_nSignalPoints; i++) output[i] = convolve (input, m_dSignalInc, i, m_nSignalPoints); } else if (m_idFilterMethod == FILTER_METHOD_FOURIER) { double* inputSignal = new double [m_nFilterPoints]; for (i = 0; i < m_nSignalPoints; i++) inputSignal[i] = input[i]; for (i = m_nSignalPoints; i < m_nFilterPoints; i++) inputSignal[i] = 0; // zeropad std::complex* fftSignal = new std::complex [m_nFilterPoints]; finiteFourierTransform (inputSignal, fftSignal, m_nFilterPoints, FORWARD); delete inputSignal; #if HAVE_OPENMP #pragma omp parallel for #endif for (i = 0; i < m_nFilterPoints; i++) fftSignal[i] *= m_adFilter[i]; double* inverseFourier = new double [m_nFilterPoints]; finiteFourierTransform (fftSignal, inverseFourier, m_nFilterPoints, BACKWARD); delete fftSignal; for (i = 0; i < m_nSignalPoints; i++) output[i] = inverseFourier[i]; delete inverseFourier; } else if (m_idFilterMethod == FILTER_METHOD_FOURIER_TABLE) { double* inputSignal = new double [m_nFilterPoints]; for (i = 0; i < m_nSignalPoints; i++) inputSignal[i] = input[i]; for (i = m_nSignalPoints; i < m_nFilterPoints; i++) inputSignal[i] = 0; // zeropad std::complex* fftSignal = new std::complex [m_nFilterPoints]; finiteFourierTransform (inputSignal, fftSignal, FORWARD); delete inputSignal; #if HAVE_OPENMP #pragma omp parallel for #endif for (i = 0; i < m_nFilterPoints; i++) fftSignal[i] *= m_adFilter[i]; double* inverseFourier = new double [m_nFilterPoints]; finiteFourierTransform (fftSignal, inverseFourier, BACKWARD); delete fftSignal; for (i = 0; i < m_nSignalPoints; i++) output[i] = inverseFourier[i]; delete inverseFourier; } #if HAVE_FFTW else if (m_idFilterMethod == FILTER_METHOD_RFFTW) { for (i = 0; i < m_nSignalPoints; i++) m_adRealFftInput[i] = input[i]; fftw_execute (m_realPlanForward); for (i = 0; i < m_nFilterPoints; i++) m_adRealFftSignal[i] = m_adFilter[i] * m_adRealFftOutput[i]; for (i = m_nFilterPoints; i < m_nOutputPoints; i++) m_adRealFftSignal[i] = 0; fftw_execute (m_realPlanBackward); for (i = 0; i < m_nSignalPoints * m_iPreinterpolationFactor; i++) output[i] = m_adRealFftBackwardOutput[i]; } else if (m_idFilterMethod == FILTER_METHOD_FFTW) { for (i = 0; i < m_nSignalPoints; i++) m_adComplexFftInput[i][0] = input[i]; fftw_execute (m_complexPlanForward); #if HAVE_OPENMP #pragma omp parallel for #endif for (i = 0; i < m_nFilterPoints; i++) { m_adComplexFftSignal[i][0] = m_adFilter[i] * m_adComplexFftOutput[i][0]; m_adComplexFftSignal[i][1] = m_adFilter[i] * m_adComplexFftOutput[i][1]; } fftw_execute (m_complexPlanBackward); for (i = 0; i < m_nSignalPoints * m_iPreinterpolationFactor; i++) output[i] = m_adComplexFftBackwardOutput[i][0]; } #endif delete input; } /* NAME * convolve Discrete convolution of two functions * * SYNOPSIS * r = convolve (f1, f2, dx, n, np, func_type) * double r Convolved result * double f1[], f2[] Functions to be convolved * double dx Difference between successive x values * int n Array index to center convolution about * int np Number of points in f1 array * int func_type EVEN or ODD or EVEN_AND_ODD function f2 * * NOTES * f1 is the projection data, its indices range from 0 to np - 1. * The index for f2, the filter, ranges from -(np-1) to (np-1). * There are 3 ways to handle the negative vertices of f2: * 1. If we know f2 is an EVEN function, then f2[-n] = f2[n]. * All filters used in reconstruction are even. * 2. If we know f2 is an ODD function, then f2[-n] = -f2[n] * 3. If f2 is both ODD AND EVEN, then we must store the value of f2 * for negative indices. Since f2 must range from -(np-1) to (np-1), * if we add (np - 1) to f2's array index, then f2's index will * range from 0 to 2 * (np - 1), and the origin, x = 0, will be * stored at f2[np-1]. */ double ProcessSignal::convolve (const double func[], const double dx, const int n, const int np) const { double sum = 0.0; #if UNOPTIMIZED_CONVOLUTION for (int i = 0; i < np; i++) sum += func[i] * m_adFilter[n - i + (np - 1)]; #else double* f2 = m_adFilter + n + (np - 1); for (int i = 0; i < np; i++) sum += *func++ * *f2--; #endif return (sum * dx); } double ProcessSignal::convolve (const float func[], const double dx, const int n, const int np) const { double sum = 0.0; #if UNOPTIMIZED_CONVOLUTION for (int i = 0; i < np; i++) sum += func[i] * m_adFilter[n - i + (np - 1)]; #else double* f2 = m_adFilter + n + (np - 1); for (int i = 0; i < np; i++) sum += *func++ * *f2--; #endif return (sum * dx); } void ProcessSignal::finiteFourierTransform (const double input[], double output[], const int n, int direction) { std::complex* complexOutput = new std::complex [n]; finiteFourierTransform (input, complexOutput, n, direction); for (int i = 0; i < n; i++) output[i] = complexOutput[i].real(); delete [] complexOutput; } void ProcessSignal::finiteFourierTransform (const double input[], std::complex output[], const int n, int direction) { if (direction < 0) direction = -1; else direction = 1; double angleIncrement = direction * 2 * PI / n; for (int i = 0; i < n; i++) { double sumReal = 0; double sumImag = 0; for (int j = 0; j < n; j++) { double angle = i * j * angleIncrement; sumReal += input[j] * cos(angle); sumImag += input[j] * sin(angle); } if (direction < 0) { sumReal /= n; sumImag /= n; } output[i] = std::complex (sumReal, sumImag); } } void ProcessSignal::finiteFourierTransform (const std::complex input[], std::complex output[], const int n, int direction) { if (direction < 0) direction = -1; else direction = 1; double angleIncrement = direction * 2 * PI / n; for (int i = 0; i < n; i++) { std::complex sum (0,0); for (int j = 0; j < n; j++) { double angle = i * j * angleIncrement; std::complex exponentTerm (cos(angle), sin(angle)); sum += input[j] * exponentTerm; } if (direction < 0) { sum /= n; } output[i] = sum; } } void ProcessSignal::finiteFourierTransform (const std::complex input[], double output[], const int n, int direction) { if (direction < 0) direction = -1; else direction = 1; double angleIncrement = direction * 2 * PI / n; for (int i = 0; i < n; i++) { double sumReal = 0; for (int j = 0; j < n; j++) { double angle = i * j * angleIncrement; sumReal += input[j].real() * cos(angle) - input[j].imag() * sin(angle); } if (direction < 0) { sumReal /= n; } output[i] = sumReal; } } // Table-based routines void ProcessSignal::finiteFourierTransform (const double input[], std::complex output[], int direction) const { if (direction < 0) direction = -1; else direction = 1; for (int i = 0; i < m_nFilterPoints; i++) { double sumReal = 0, sumImag = 0; for (int j = 0; j < m_nFilterPoints; j++) { int tableIndex = i * j; if (direction > 0) { sumReal += input[j] * m_adFourierCosTable[tableIndex]; sumImag += input[j] * m_adFourierSinTable[tableIndex]; } else { sumReal += input[j] * m_adFourierCosTable[tableIndex]; sumImag -= input[j] * m_adFourierSinTable[tableIndex]; } } if (direction < 0) { sumReal /= m_nFilterPoints; sumImag /= m_nFilterPoints; } output[i] = std::complex (sumReal, sumImag); } } // (a+bi) * (c + di) = (ac - bd) + (ad + bc)i void ProcessSignal::finiteFourierTransform (const std::complex input[], std::complex output[], int direction) const { if (direction < 0) direction = -1; else direction = 1; for (int i = 0; i < m_nFilterPoints; i++) { double sumReal = 0, sumImag = 0; for (int j = 0; j < m_nFilterPoints; j++) { int tableIndex = i * j; if (direction > 0) { sumReal += input[j].real() * m_adFourierCosTable[tableIndex] - input[j].imag() * m_adFourierSinTable[tableIndex]; sumImag += input[j].real() * m_adFourierSinTable[tableIndex] + input[j].imag() * m_adFourierCosTable[tableIndex]; } else { sumReal += input[j].real() * m_adFourierCosTable[tableIndex] - input[j].imag() * -m_adFourierSinTable[tableIndex]; sumImag += input[j].real() * -m_adFourierSinTable[tableIndex] + input[j].imag() * m_adFourierCosTable[tableIndex]; } } if (direction < 0) { sumReal /= m_nFilterPoints; sumImag /= m_nFilterPoints; } output[i] = std::complex (sumReal, sumImag); } } void ProcessSignal::finiteFourierTransform (const std::complex input[], double output[], int direction) const { if (direction < 0) direction = -1; else direction = 1; for (int i = 0; i < m_nFilterPoints; i++) { double sumReal = 0; for (int j = 0; j < m_nFilterPoints; j++) { int tableIndex = i * j; if (direction > 0) { sumReal += input[j].real() * m_adFourierCosTable[tableIndex] - input[j].imag() * m_adFourierSinTable[tableIndex]; } else { sumReal += input[j].real() * m_adFourierCosTable[tableIndex] - input[j].imag() * -m_adFourierSinTable[tableIndex]; } } if (direction < 0) { sumReal /= m_nFilterPoints; } output[i] = sumReal; } } int ProcessSignal::addZeropadFactor (int n, int iZeropad) { if (iZeropad > 0) { double dLogBase2 = log(n) / log(2); int iLogBase2 = static_cast(floor (dLogBase2)); int iPaddedN = 1 << (iLogBase2 + iZeropad); #ifdef DEBUG sys_error (ERR_TRACE, "Zeropadding %d to %d", n, iPaddedN); #endif return iPaddedN; } return n; } ctsim-6.0.2/libctsim/projections.cpp0000644000175000017500000013343013254262446016535 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: projections.cpp Projection data classes ** Programmer: Kevin Rosenberg ** Date Started: Aug 84 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "ct.h" #include #include "interpolator.h" const kuint16 Projections::m_signature = ('P'*256 + 'J'); const int Projections::POLAR_INTERP_INVALID = -1; const int Projections::POLAR_INTERP_NEAREST = 0; const int Projections::POLAR_INTERP_BILINEAR = 1; const int Projections::POLAR_INTERP_BICUBIC = 2; const char* const Projections::s_aszInterpName[] = { "nearest", "bilinear", // {"bicubic"}, }; const char* const Projections::s_aszInterpTitle[] = { "Nearest", "Bilinear", // {"Bicubic"}, }; const int Projections::s_iInterpCount = sizeof(s_aszInterpName) / sizeof(char*); /* NAME * Projections Constructor for projections matrix storage * * SYNOPSIS * proj = projections_create (filename, nView, nDet) * Projections& proj Allocated projections structure & matrix * int nView Number of rotated view * int nDet Number of detectors * */ Projections::Projections (const Scanner& scanner) : m_projData(0) { initFromScanner (scanner); } Projections::Projections (const int nView, const int nDet) : m_projData(0) { init (nView, nDet); } Projections::Projections (void) : m_projData(0) { init (0, 0); } Projections::~Projections (void) { deleteProjData(); } int Projections::convertInterpNameToID (const char* const interpName) { int interpID = POLAR_INTERP_INVALID; for (int i = 0; i < s_iInterpCount; i++) { if (strcasecmp (interpName, s_aszInterpName[i]) == 0) { interpID = i; break; } } return (interpID); } const char* Projections::convertInterpIDToName (const int interpID) { static const char *interpName = ""; if (interpID >= 0 && interpID < s_iInterpCount) { return (s_aszInterpName[interpID]); } return (interpName); } const char* Projections::convertInterpIDToTitle (const int interpID) { static const char *interpTitle = ""; if (interpID >= 0 && interpID < s_iInterpCount) { return (s_aszInterpTitle[interpID]); } return (interpTitle); } void Projections::init (const int nView, const int nDet) { m_label.setLabelType (Array2dFileLabel::L_HISTORY); m_nView = nView; m_nDet = nDet; newProjData (); time_t t = time (NULL); tm* lt = localtime (&t); m_year = lt->tm_year; m_month = lt->tm_mon; m_day = lt->tm_mday; m_hour = lt->tm_hour; m_minute = lt->tm_min; m_second = lt->tm_sec; } void Projections::initFromScanner (const Scanner& scanner) { m_label.setLabelType (Array2dFileLabel::L_HISTORY); deleteProjData(); init (scanner.nView(), scanner.nDet()); m_rotInc = scanner.rotInc(); m_detInc = scanner.detInc(); m_detStart = scanner.detStart(); m_geometry = scanner.geometry(); m_dFocalLength = scanner.focalLength(); m_dSourceDetectorLength = scanner.sourceDetectorLength(); m_dViewDiameter = scanner.viewDiameter(); m_rotStart = scanner.offsetView()*scanner.rotInc(); m_dFanBeamAngle = scanner.fanBeamAngle(); } void Projections::setNView (int nView) // used by MPI to reduce # of views { deleteProjData(); init (nView, m_nDet); } // Helical 180 Linear Interpolation. // This member function takes a set of helical scan projections and // performs a linear interpolation between pairs of complementary rays // to produce a single projection data set approximating what would be // measured at a single axial plane. // Complementary rays are rays which traverse the same path through the // phantom in opposite directions. // // For parallel beam geometry, a ray with a given gantry angle beta and a // detector iDet will have a complementary ray at beta + pi and nDet-iDet // // For equiangular or equilinear beam geometry the complementary ray to // gantry angle beta and fan-beam angle gamma is at // beta-hat = beta +2*gamma + pi, and gamma-hat = -gamma. // Note that beta-hat - beta depends on gamma and is not constant. // // The algorithm used here is from Crawford and King, Med. Phys. 17(6) // 1990 p967; what they called method "C", CSH-HH. It uses interpolation only // between pairs of complementary rays on either side of an image plane. // Input data must sample gantry angles from zero to // (2*pi + 2* fan-beam-angle). The data set produced contains gantry // angles from 0 to Pi+fan-beam-angle. This is a "halfscan" data set, // which still contains redundant data, and can be used with a half scan // reconstruction to produce an image. // In this particular implementation a lower triangle from (beta,gamma) = // (0,-fanAngle/2)->(2*fanAngle,-fanAngle/2)->(0,fanAngle/2) contains // zeros, but is actually redundant with data contained in the region // (pi+fanAngle,-fanAngle/2)->(pi+fanAngle, fanAngle/2) ->(pi-fanAngle, // fanAngle/2). // int Projections::Helical180LI(int interpolation_view) { if (m_geometry == Scanner::GEOMETRY_INVALID) { std::cerr << "Invalid geometry " << m_geometry << std::endl; return (2); } else if (m_geometry == Scanner::GEOMETRY_PARALLEL) { std::cerr << "Helical 180LI not yet implemented for PARALLEL geometry" << std::endl; return (2); } else if (m_geometry == Scanner::GEOMETRY_EQUILINEAR) { std::cerr << "Helical 180LI not yet implemented for EQUILINEAR geometry" << std::endl; return (2); } else if (m_geometry == Scanner::GEOMETRY_EQUIANGULAR) { return Helical180LI_Equiangular(interpolation_view); } else { std::cerr << "Invalid geometry in projection data file" << m_geometry << std::endl; return (2); } } int Projections::Helical180LI_Equiangular(int interpView) { double dbeta = m_rotInc; double dgamma = m_detInc; double fanAngle = m_dFanBeamAngle; int offsetView=0; // is there enough data in the data set? Should have 2(Pi+fanAngle) // coverage minimum if ( m_nView < static_cast((2*( PI + fanAngle ) ) / dbeta) -1 ){ std::cerr << "Data set does not include 360 +2*FanBeamAngle views" << std::endl; return (1); } if (interpView < 0) // use default position at PI+fanAngle { interpView = static_cast ((PI+fanAngle)/dbeta); } else { // check if there is PI+fanAngle data on either side of the // of the specified image plane if ( interpView*dbeta < PI+fanAngle || interpView*dbeta + PI + fanAngle > m_nView*dbeta) { std::cerr << "There isn't PI+fanAngle of data on either side of the requested interpolation view" << std::endl; return(1); } offsetView = interpView - static_cast((PI+fanAngle)/dbeta); } int last_interp_view = static_cast ((PI+fanAngle)/dbeta); // make a new array for data... class DetectorArray ** newdetarray = new DetectorArray * [last_interp_view+1]; for ( int i=0 ; i <= last_interp_view ; i++ ){ newdetarray[i] = new DetectorArray (m_nDet); newdetarray[i]->setViewAngle((i+offsetView)*dbeta); DetectorValue* newdetval = (newdetarray[i])->detValues(); // and initialize the data to zero for (int j=0; j < m_nDet; j++) newdetval[j] = 0.; } int last_acq_view = 2*last_interp_view; for ( int iView = 0 ; iView <= last_acq_view; iView++) { double beta = iView * dbeta; for ( int iDet = 0; iDet < m_nDet; iDet++) { double gamma = (iDet -(m_nDet-1)/2)* dgamma ; int newiView, newiDet; if (beta < PI+fanAngle) { //if (PI +fanAngle - beta > dbeta ) //newbeta = beta; //newgamma = gamma; newiDet = iDet; newiView = iView; } else // (beta > PI+fanAngle) { //newbeta = beta +2*gamma - 180; //newgamma = -gamma; newiDet = -iDet + (m_nDet -1); // newiView = nearest((beta + 2*gamma - PI)/dbeta); //newiView = static_cast(( (iView*dbeta) + 2*(iDet-(m_nDet-1)/2)*dgamma - PI)/dbeta); newiView = nearest(( (iView*dbeta) + 2*(iDet-(m_nDet-1)/2)*dgamma - PI)/dbeta); } #ifdef DEBUG //std::cout << beta << " "<< gamma << " " << newbeta << " " << newgamma <<" " << iView-offsetView << " " << iDet << " " << newiView << " " << newiDet << std::endl; //std::cout << iView-offsetView << " " << iDet << " " << newiView << " " << newiDet << std::endl; #endif if ( ( beta > fanAngle - 2*gamma) && ( beta < 2*PI + fanAngle -2*gamma) ) { // not in region 1 or 8 DetectorValue* detval = (m_projData[iView+offsetView])->detValues(); DetectorValue* newdetval = (newdetarray[newiView])->detValues(); if ( beta > fanAngle - 2*gamma && beta <= 2*fanAngle ) { // in region 2 newdetval[newiDet] += (beta +2*gamma - fanAngle)/(PI+2*gamma) * detval[iDet]; } else if ( beta > 2*fanAngle && beta <= PI - 2*gamma) { // in region 3 newdetval[newiDet] += (beta +2*gamma - fanAngle)/(PI+2*gamma) * detval[iDet]; } else if ( beta > PI -2*gamma && beta <= PI + fanAngle ) { // in region 4 newdetval[newiDet] += (beta +2*gamma - fanAngle)/(PI+2*gamma) * detval[iDet]; } else if ( beta > PI + fanAngle && beta <= PI +2*fanAngle -2*gamma) { // in region 5 newdetval[newiDet] += (2*PI - beta - 2*gamma + fanAngle)/(PI-2*gamma) *detval[iDet]; } else if ( beta > PI +2*fanAngle -2*gamma && beta <= 2*PI) { // in region 6 newdetval[newiDet] += (2*PI - beta - 2*gamma + fanAngle)/(PI-2*gamma) *detval[iDet]; } else if ( beta > 2*PI && beta <= 2*PI + fanAngle -2*gamma){ // in region 7 newdetval[newiDet] += (2*PI - beta -2*gamma + fanAngle)/(PI-2*gamma) *detval[iDet]; } else { ; // outside region of interest } } } } deleteProjData(); m_projData = newdetarray; m_nView = last_interp_view+1; return (0); } // HalfScanFeather: // A HalfScan Projection Data Set for equiangular geometry, // covering gantry angles from 0 to pi+fanBeamAngle // and fan angle gamma from -fanBeamAngle/2 to fanBeamAngle/2 // contains redundant information. If one copy of this data is left as // zero, (as in the Helical180LI routine above) overweighting is avoided, // but the discontinuity in the data introduces ringing in the image. // This routine makes a copy of the data and applies a weighting to avoid // over-representation, as given in Appendix C of Crawford and King, Med // Phys 17 1990, p967. int Projections::HalfScanFeather(void) { double dbeta = m_rotInc; double dgamma = m_detInc; double fanAngle = m_dFanBeamAngle; // is there enough data? if ( m_nView != static_cast(( PI+fanAngle ) / dbeta) +1 ){ std::cerr << "Data set does seem have enough data to be a halfscan data set" << std::endl; return (1); } if (m_geometry == Scanner::GEOMETRY_INVALID) { std::cerr << "Invalid geometry " << m_geometry << std::endl; return (2); } if (m_geometry == Scanner::GEOMETRY_PARALLEL) { std::cerr << "HalfScanFeather not yet implemented for PARALLEL geometry"<< std::endl; return (2); } for ( int iView2 = 0 ; iView2 < m_nView; iView2++) { double beta2 = iView2 * dbeta; for ( int iDet2 = 0; iDet2 < m_nDet; iDet2++) { double gamma2 = (iDet2 -(m_nDet-1)/2)* dgamma ; if ( ( beta2 >= PI - 2*gamma2) ) { // in redundant data region int iView1, iDet1; iDet1 = (m_nDet -1) - iDet2; //iView1 = nearest((beta2 + 2*gamma2 - PI)/dbeta); iView1 = nearest(( (iView2*dbeta) + 2*(iDet2-(m_nDet-1)/2)*dgamma - PI)/dbeta); DetectorValue* detval2 = (m_projData[iView2])->detValues(); DetectorValue* detval1 = (m_projData[iView1])->detValues(); detval1[iDet1] = detval2[iDet2] ; double x, w1,w2,beta1, gamma1; beta1= iView1*dbeta; gamma1 = -gamma2; if ( beta1 <= (fanAngle - 2*gamma1) ) x = beta1 / ( fanAngle - 2*gamma1); else if ( (fanAngle - 2*gamma1 <= beta1 ) && beta1 <= PI - 2*gamma1) x = 1; else if ( (PI - 2*gamma1 <= beta1 ) && ( beta1 <=PI + fanAngle) ) x = (PI +fanAngle - beta1)/(fanAngle + 2*gamma1); else { std::cerr << "Shouldn't be here!"<< std::endl; return(4); } w1 = (3*x - 2*x*x)*x; w2 = 1-w1; detval1[iDet1] *= w1; detval2[iDet2] *= w2; } } } // heuristic scaling, why this factor? double scalefactor = m_nView * m_rotInc / PI; for ( int iView = 0 ; iView < m_nView; iView++) { DetectorValue* detval = (m_projData[iView])->detValues(); for ( int iDet = 0; iDet < m_nDet; iDet++) { detval[iDet] *= scalefactor; } } return (0); } // NAME // newProjData void Projections::newProjData (void) { if (m_projData) sys_error(ERR_WARNING, "m_projData != NULL [newProjData]"); if (m_nView > 0 && m_nDet) { m_projData = new DetectorArray* [m_nView]; for (int i = 0; i < m_nView; i++) m_projData[i] = new DetectorArray (m_nDet); } } /* NAME * projections_free Free memory allocated to projections * * SYNOPSIS * projections_free(proj) * Projections& proj Projectionss to be deallocated */ void Projections::deleteProjData (void) { if (m_projData != NULL) { for (int i = 0; i < m_nView; i++) delete m_projData[i]; delete m_projData; m_projData = NULL; } } /* NAME * Projections::headerWwrite Write data header for projections file * */ bool Projections::headerWrite (fnetorderstream& fs) { kuint16 _hsize = m_headerSize; kuint16 _signature = m_signature; kuint32 _nView = m_nView; kuint32 _nDet = m_nDet; kuint32 _geom = m_geometry; kuint16 _remarksize = m_remark.length(); kuint16 _year = m_year; kuint16 _month = m_month; kuint16 _day = m_day; kuint16 _hour = m_hour; kuint16 _minute = m_minute; kuint16 _second = m_second; kfloat64 _calcTime = m_calcTime; kfloat64 _rotStart = m_rotStart; kfloat64 _rotInc = m_rotInc; kfloat64 _detStart = m_detStart; kfloat64 _detInc = m_detInc; kfloat64 _viewDiameter = m_dViewDiameter; kfloat64 _focalLength = m_dFocalLength; kfloat64 _sourceDetectorLength = m_dSourceDetectorLength; kfloat64 _fanBeamAngle = m_dFanBeamAngle; fs.seekp(0); if (! fs) return false; fs.writeInt16 (_hsize); fs.writeInt16 (_signature); fs.writeInt32 (_nView); fs.writeInt32 (_nDet); fs.writeInt32 (_geom); fs.writeFloat64 (_calcTime); fs.writeFloat64 (_rotStart); fs.writeFloat64 (_rotInc); fs.writeFloat64 (_detStart); fs.writeFloat64 (_detInc); fs.writeFloat64 (_viewDiameter); fs.writeFloat64 (_focalLength); fs.writeFloat64 (_sourceDetectorLength); fs.writeFloat64 (_fanBeamAngle); fs.writeInt16 (_year); fs.writeInt16 (_month); fs.writeInt16 (_day); fs.writeInt16 (_hour); fs.writeInt16 (_minute); fs.writeInt16 (_second); fs.writeInt16 (_remarksize); fs.write (m_remark.c_str(), _remarksize); m_headerSize = fs.tellp(); _hsize = m_headerSize; fs.seekp(0); fs.writeInt16 (_hsize); if (! fs) return false; return true; } /* NAME * projections_read_header Read data header for projections file * */ bool Projections::headerRead (fnetorderstream& fs) { kuint16 _hsize, _signature, _year, _month, _day, _hour, _minute, _second, _remarksize = 0; kuint32 _nView, _nDet, _geom; kfloat64 _calcTime, _rotStart, _rotInc, _detStart, _detInc, _focalLength, _sourceDetectorLength, _viewDiameter, _fanBeamAngle; fs.seekg(0); if (! fs) return false; fs.readInt16 (_hsize); fs.readInt16 (_signature); fs.readInt32 (_nView); fs.readInt32 (_nDet); fs.readInt32 (_geom); fs.readFloat64 (_calcTime); fs.readFloat64 (_rotStart); fs.readFloat64 (_rotInc); fs.readFloat64 (_detStart); fs.readFloat64 (_detInc); fs.readFloat64 (_viewDiameter); fs.readFloat64 (_focalLength); fs.readFloat64 (_sourceDetectorLength); fs.readFloat64 (_fanBeamAngle); fs.readInt16 (_year); fs.readInt16 (_month); fs.readInt16 (_day); fs.readInt16 (_hour); fs.readInt16 (_minute); fs.readInt16 (_second); fs.readInt16 (_remarksize); if (! fs) { sys_error (ERR_SEVERE, "Error reading header information , _remarksize=%d [projections_read_header]", _remarksize); return false; } if (_signature != m_signature) { sys_error (ERR_SEVERE, "File %s does not have a valid projection file signature", m_filename.c_str()); return false; } char* pszRemarkStorage = new char [_remarksize+1]; fs.read (pszRemarkStorage, _remarksize); if (! fs) { sys_error (ERR_SEVERE, "Error reading remark, _remarksize = %d", _remarksize); return false; } pszRemarkStorage[_remarksize] = 0; m_remark = pszRemarkStorage; delete pszRemarkStorage; off_t _hsizeread = fs.tellg(); if (!fs || _hsizeread != _hsize) { sys_error (ERR_WARNING, "File header size read %ld != file header size stored %ld [read_projections_header]\n_remarksize=%ld", (long int) _hsizeread, _hsize, _remarksize); return false; } m_headerSize = _hsize; m_nView = _nView; m_nDet = _nDet; m_geometry = _geom; m_calcTime = _calcTime; m_rotStart = _rotStart; m_rotInc = _rotInc; m_detStart = _detStart; m_detInc = _detInc; m_dFocalLength = _focalLength; m_dSourceDetectorLength = _sourceDetectorLength; m_dViewDiameter = _viewDiameter; m_dFanBeamAngle = _fanBeamAngle; m_year = _year; m_month = _month; m_day = _day; m_hour = _hour; m_minute = _minute; m_second = _second; m_label.setLabelType (Array2dFileLabel::L_HISTORY); m_label.setLabelString (m_remark); m_label.setCalcTime (m_calcTime); m_label.setDateTime (m_year, m_month, m_day, m_hour, m_minute, m_second); return true; } bool Projections::read (const std::string& filename) { return read (filename.c_str()); } bool Projections::read (const char* filename) { m_filename = filename; #ifdef MSVC frnetorderstream fileRead (m_filename.c_str(), std::ios::in | std::ios::binary); #else frnetorderstream fileRead (m_filename.c_str(), std::ios::in | std::ios::binary); // | std::ios::nocreate); #endif if (fileRead.fail()) return false; if (! headerRead (fileRead)) return false; deleteProjData (); newProjData(); for (int i = 0; i < m_nView; i++) { if (! detarrayRead (fileRead, *m_projData[i], i)) break; } fileRead.close(); return true; } bool Projections::copyViewData (const std::string& filename, std::ostream& os, int startView, int endView) { return copyViewData (filename.c_str(), os, startView, endView); } bool Projections::copyViewData (const char* const filename, std::ostream& os, int startView, int endView) { frnetorderstream is (filename, std::ios::in | std::ios::binary); kuint16 sizeHeader, signature; kuint32 _nView, _nDet; is.seekg (0); if (is.fail()) { sys_error (ERR_SEVERE, "Unable to read projection file %s", filename); return false; } is.readInt16 (sizeHeader); is.readInt16 (signature); is.readInt32 (_nView); is.readInt32 (_nDet); int nView = _nView; int nDet = _nDet; if (signature != m_signature) { sys_error (ERR_SEVERE, "Illegal signature in projection file %s", filename); return false; } if (startView < 0) startView = 0; if (startView > nView - 1) startView = nView; if (endView < 0 || endView > nView - 1) endView = nView - 1; if (startView > endView) { // swap if start > end int tempView = endView; endView = startView; startView = tempView; } int sizeView = 8 /* view_angle */ + 4 /* nDet */ + (4 * nDet); unsigned char* pViewData = new unsigned char [sizeView]; for (int i = startView; i <= endView; i++) { is.seekg (sizeHeader + i * sizeView); is.read (reinterpret_cast(pViewData), sizeView); os.write (reinterpret_cast(pViewData), sizeView); if (is.fail() || os.fail()) break; } delete pViewData; if (is.fail()) sys_error (ERR_SEVERE, "Error reading projection file"); if (os.fail()) sys_error (ERR_SEVERE, "Error writing projection file"); return (! (is.fail() | os.fail())); } bool Projections::copyHeader (const std::string& filename, std::ostream& os) { return copyHeader (filename.c_str(), os); } bool Projections::copyHeader (const char* const filename, std::ostream& os) { frnetorderstream is (filename, std::ios::in | std::ios::binary); kuint16 sizeHeader, signature; is.readInt16 (sizeHeader); is.readInt16 (signature); is.seekg (0); if (signature != m_signature) { sys_error (ERR_SEVERE, "Illegal signature in projection file %s", filename); return false; } unsigned char* pHdrData = new unsigned char [sizeHeader]; is.read (reinterpret_cast(pHdrData), sizeHeader); if (is.fail()) { sys_error (ERR_SEVERE, "Error reading header"); return false; } os.write (reinterpret_cast(pHdrData), sizeHeader); if (os.fail()) { sys_error (ERR_SEVERE, "Error writing header"); return false; } return true; } bool Projections::write (const std::string& filename) { return write (filename.c_str()); } bool Projections::write (const char* filename) { frnetorderstream fs (filename, std::ios::out | std::ios::binary | std::ios::trunc | std::ios::ate); m_filename = filename; if (! fs) { sys_error (ERR_SEVERE, "Error opening file %s for output [projections_create]", filename); return false; } if (! headerWrite (fs)) return false; if (m_projData != NULL) { for (int i = 0; i < m_nView; i++) { if (! detarrayWrite (fs, *m_projData[i], i)) break; } } if (! fs) return false; fs.close(); return true; } /* NAME * detarrayRead Read a Detector Array structure from the disk * * SYNOPSIS * detarrayRead (proj, darray, view_num) * DETARRAY *darray Detector array storage location to be filled * int view_num View number to read */ bool Projections::detarrayRead (fnetorderstream& fs, DetectorArray& darray, const int iview) { const int detval_bytes = darray.nDet() * sizeof(kfloat32); const int detheader_bytes = sizeof(kfloat64) /* view_angle */ + sizeof(kint32) /* nDet */; const int view_bytes = detheader_bytes + detval_bytes; const off_t start_data = m_headerSize + (iview * view_bytes); DetectorValue* detval_ptr = darray.detValues(); kfloat64 view_angle; kuint32 nDet; fs.seekg (start_data); fs.readFloat64 (view_angle); fs.readInt32 (nDet); darray.setViewAngle (view_angle); // darray.setNDet ( nDet); for (unsigned int i = 0; i < nDet; i++) { kfloat32 detval; fs.readFloat32 (detval); detval_ptr[i] = detval; } if (! fs) return false; return true; } /* NAME * detarrayWrite Write detector array data to the disk * * SYNOPSIS * detarrayWrite (darray, view_num) * DETARRAY *darray Detector array data to be written * int view_num View number to write * * DESCRIPTION * This routine writes the detarray data from the disk sequentially to * the file that was opened with open_projections(). Data is written in * binary format. */ bool Projections::detarrayWrite (fnetorderstream& fs, const DetectorArray& darray, const int iview) { const int detval_bytes = darray.nDet() * sizeof(float); const int detheader_bytes = sizeof(kfloat64) /* view_angle */ + sizeof(kint32) /* nDet */; const int view_bytes = detheader_bytes + detval_bytes; const off_t start_data = m_headerSize + (iview * view_bytes); const DetectorValue* const detval_ptr = darray.detValues(); kfloat64 view_angle = darray.viewAngle(); kuint32 nDet = darray.nDet(); fs.seekp (start_data); if (! fs) { sys_error (ERR_SEVERE, "Error seeking detectory array [detarrayWrite]"); return false; } fs.writeFloat64 (view_angle); fs.writeInt32 (nDet); for (unsigned int i = 0; i < nDet; i++) { kfloat32 detval = detval_ptr[i]; fs.writeFloat32 (detval); } if (! fs) return (false); return true; } /* NAME * printProjectionData Print projections data * * SYNOPSIS * printProjectionData () */ void Projections::printProjectionData () { printProjectionData (0, nView() - 1); } void Projections::printProjectionData (int startView, int endView) { printf("Projections Data\n\n"); printf("Description: %s\n", m_remark.c_str()); printf("Geometry: %s\n", Scanner::convertGeometryIDToName (m_geometry)); printf("nView = %8d nDet = %8d\n", m_nView, m_nDet); printf("focalLength = %8.4f ViewDiameter = %8.4f\n", m_dFocalLength, m_dViewDiameter); printf("fanBeamAngle= %8.4f SourceDetector = %8.4f\n", convertRadiansToDegrees(m_dFanBeamAngle), m_dSourceDetectorLength); printf("rotStart = %8.4f rotInc = %8.4f\n", m_rotStart, m_rotInc); printf("detStart = %8.4f detInc = %8.4f\n", m_detStart, m_detInc); if (m_projData != NULL) { if (startView < 0) startView = 0; if (endView < 0) endView = m_nView - 1; if (startView > m_nView - 1) startView = m_nView - 1; if (endView > m_nView - 1) endView = m_nView - 1; for (int ir = startView; ir <= endView - 1; ir++) { printf("View %d: angle %f\n", ir, m_projData[ir]->viewAngle()); DetectorValue* detval = m_projData[ir]->detValues(); for (int id = 0; id < m_projData[ir]->nDet(); id++) printf("%8.4f ", detval[id]); printf("\n"); } } } void Projections::printScanInfo (std::ostringstream& os) const { os << "Number of detectors: " << m_nDet << "\n"; os << "Number of views: " << m_nView<< "\n"; os << "Description: " << m_remark.c_str()<< "\n"; os << "Geometry: " << Scanner::convertGeometryIDToName (m_geometry)<< "\n"; os << "Focal Length: " << m_dFocalLength<< "\n"; os << "Source Detector Length: " << m_dSourceDetectorLength << "\n"; os << "View Diameter: " << m_dViewDiameter<< "\n"; os << "Fan Beam Angle: " << convertRadiansToDegrees(m_dFanBeamAngle) << "\n"; os << "detStart: " << m_detStart<< "\n"; os << "detInc: " << m_detInc<< "\n"; os << "rotStart: " << m_rotStart<< "\n"; os << "rotInc: " << m_rotInc<< "\n"; } bool Projections::convertPolar (ImageFile& rIF, int iInterpolationID) { unsigned int nx = rIF.nx(); unsigned int ny = rIF.ny(); ImageFileArray v = rIF.getArray(); ImageFileArray vImag = rIF.getImaginaryArray(); if (! v || nx == 0 || ny == 0) return false; Projections* pProj = this; if (m_geometry == Scanner::GEOMETRY_EQUIANGULAR || m_geometry == Scanner::GEOMETRY_EQUILINEAR) pProj = interpolateToParallel(); Array2d adView (nx, ny); Array2d adDet (nx, ny); double** ppdView = adView.getArray(); double** ppdDet = adDet.getArray(); std::complex** ppcDetValue = new std::complex* [pProj->m_nView]; int iView; for (iView = 0; iView < pProj->m_nView; iView++) { ppcDetValue[iView] = new std::complex [pProj->m_nDet]; DetectorValue* detval = pProj->getDetectorArray (iView).detValues(); for (int iDet = 0; iDet < pProj->m_nDet; iDet++) ppcDetValue[iView][iDet] = std::complex(detval[iDet], 0); } pProj->calcArrayPolarCoordinates (nx, ny, ppdView, ppdDet, pProj->m_nDet, 1., pProj->m_detInc); pProj->interpolatePolar (v, vImag, nx, ny, ppcDetValue, ppdView, ppdDet, pProj->m_nView, pProj->m_nDet, pProj->m_nDet, iInterpolationID); for (iView = 0; iView < pProj->m_nView; iView++) delete [] ppcDetValue[iView]; delete [] ppcDetValue; if (m_geometry == Scanner::GEOMETRY_EQUIANGULAR || m_geometry == Scanner::GEOMETRY_EQUILINEAR) delete pProj; return true; } bool Projections::convertFFTPolar (ImageFile& rIF, int iInterpolationID, int iZeropad) { #ifndef HAVE_FFTW rIF.arrayDataClear(); return false; #else unsigned int nx = rIF.nx(); unsigned int ny = rIF.ny(); ImageFileArray v = rIF.getArray(); if (! rIF.isComplex()) rIF.convertRealToComplex(); ImageFileArray vImag = rIF.getImaginaryArray(); if (! v || nx == 0 || ny == 0) return false; Projections* pProj = this; if (m_geometry == Scanner::GEOMETRY_EQUIANGULAR || m_geometry == Scanner::GEOMETRY_EQUILINEAR) pProj = interpolateToParallel(); int iInterpDet = static_cast(static_cast(sqrt(nx*nx+ny*ny))); int iNumInterpDetWithZeros = ProcessSignal::addZeropadFactor (iInterpDet, iZeropad); double dProjScale = iInterpDet / (pProj->viewDiameter() * 0.05); double dZeropadRatio = static_cast(iNumInterpDetWithZeros) / static_cast(iInterpDet); fftw_complex* pcIn = static_cast (fftw_malloc (sizeof(fftw_complex) * iNumInterpDetWithZeros)); fftw_plan plan = fftw_plan_dft_1d (iNumInterpDetWithZeros, pcIn, pcIn, FFTW_FORWARD, FFTW_ESTIMATE); std::complex** ppcDetValue = new std::complex* [pProj->m_nView]; //double dInterpScale = (pProj->m_nDet-1) / static_cast(iInterpDet-1); double dInterpScale = pProj->m_nDet / static_cast(iInterpDet); double dFFTScale = 1. / static_cast(iInterpDet * iInterpDet); int iMidPoint = iInterpDet / 2; double dMidPoint = static_cast(iInterpDet) / 2.; int iZerosAdded = iNumInterpDetWithZeros - iInterpDet; // For each view, interpolate, shift to center at origin, and FFT for (int iView = 0; iView < m_nView; iView++) { DetectorValue* detval = pProj->getDetectorArray(iView).detValues(); LinearInterpolator projInterp (detval, pProj->m_nDet); for (int iDet = 0; iDet < iInterpDet; iDet++) { double dInterpPos = (m_nDet / 2.) + (iDet - dMidPoint) * dInterpScale; pcIn[iDet][0] = projInterp.interpolate (dInterpPos) * dProjScale; pcIn[iDet][1] = 0; } Fourier::shuffleFourierToNaturalOrder (pcIn, iInterpDet); if (iZerosAdded > 0) { for (int iDet1 = iInterpDet -1; iDet1 >= iMidPoint; iDet1--) { pcIn[iDet1+iZerosAdded][0] = pcIn[iDet1][0]; pcIn[iDet1+iZerosAdded][1] = pcIn[iDet1][1]; } for (int iDet2 = iMidPoint; iDet2 < iMidPoint + iZerosAdded; iDet2++) pcIn[iDet2][0] = pcIn[iDet2][1] = 0; } fftw_execute (plan); ppcDetValue[iView] = new std::complex [iNumInterpDetWithZeros]; for (int iD = 0; iD < iNumInterpDetWithZeros; iD++) { ppcDetValue[iView][iD] = std::complex (pcIn[iD][0] * dFFTScale, pcIn[iD][1] * dFFTScale); } Fourier::shuffleFourierToNaturalOrder (ppcDetValue[iView], iNumInterpDetWithZeros); } fftw_free(pcIn) ; fftw_destroy_plan (plan); Array2d adView (nx, ny); Array2d adDet (nx, ny); double** ppdView = adView.getArray(); double** ppdDet = adDet.getArray(); pProj->calcArrayPolarCoordinates (nx, ny, ppdView, ppdDet, iNumInterpDetWithZeros, dZeropadRatio, pProj->m_detInc * dInterpScale); pProj->interpolatePolar (v, vImag, nx, ny, ppcDetValue, ppdView, ppdDet, pProj->m_nView, pProj->m_nDet, iNumInterpDetWithZeros, iInterpolationID); if (m_geometry == Scanner::GEOMETRY_EQUIANGULAR || m_geometry == Scanner::GEOMETRY_EQUILINEAR) delete pProj; for (int i = 0; i < m_nView; i++) delete [] ppcDetValue[i]; delete [] ppcDetValue; return true; #endif } void Projections::calcArrayPolarCoordinates (unsigned int nx, unsigned int ny, double** ppdView, double** ppdDet, int iNumDetWithZeros, double dZeropadRatio, double dDetInc) { double dLength = viewDiameter(); double xMin = -dLength / 2; double xMax = xMin + dLength; double yMin = -dLength / 2; double yMax = yMin + dLength; double xCent = (xMin + xMax) / 2; double yCent = (yMin + yMax) / 2; xMin = (xMin - xCent) * dZeropadRatio + xCent; xMax = (xMax - xCent) * dZeropadRatio + xCent; yMin = (yMin - yCent) * dZeropadRatio + yCent; yMax = (yMax - yCent) * dZeropadRatio + yCent; double xInc = (xMax - xMin) / nx; // size of cells double yInc = (yMax - yMin) / ny; double dDetCenter = (iNumDetWithZeros - 1) / 2.; // index refering to L=0 projection // +1 is correct for frequency data, ndet-1 is correct for projections // if (isEven (iNumDetWithZeros)) // dDetCenter = (iNumDetWithZeros + 0) / 2; // Calculates polar coordinates (view#, det#) for each point on phantom grid double x = xMin + xInc / 2; // Rectang coords of center of pixel for (unsigned int ix = 0; ix < nx; x += xInc, ix++) { double y = yMin + yInc / 2; for (unsigned int iy = 0; iy < ny; y += yInc, iy++) { double r = ::sqrt (x * x + y * y); double phi = atan2 (y, x); if (phi <= -m_rotInc / 2) phi += TWOPI; if (phi >= PI - (m_rotInc / 2)) { phi -= PI; r = -r; } ppdView[ix][iy] = (phi - m_rotStart) / m_rotInc; ppdDet[ix][iy] = (r / dDetInc) + dDetCenter; } } } void Projections::interpolatePolar (ImageFileArray& v, ImageFileArray& vImag, unsigned int nx, unsigned int ny, std::complex** ppcDetValue, double** ppdView, double** ppdDet, unsigned int nView, unsigned int nDet, unsigned int nDetWithZeros, int iInterpolationID) { typedef std::complex complexValue; BilinearPolarInterpolator* pBilinear = NULL; BicubicPolyInterpolator* pBicubic = NULL; if (iInterpolationID == POLAR_INTERP_BILINEAR) pBilinear = new BilinearPolarInterpolator (ppcDetValue, nView, nDetWithZeros); else if (iInterpolationID == POLAR_INTERP_BICUBIC) pBicubic = new BicubicPolyInterpolator (ppcDetValue, nView, nDetWithZeros); for (unsigned int ix = 0; ix < ny; ix++) { for (unsigned int iy = 0; iy < ny; iy++) { if (iInterpolationID == POLAR_INTERP_NEAREST) { unsigned int iView = nearest (ppdView[ix][iy]); unsigned int iDet = nearest (ppdDet[ix][iy]); if (iView == nView) iView = 0; if (iDet >= 0 && iDet < nDetWithZeros && iView >= 0 && iView < nView) { v[ix][iy] = ppcDetValue[iView][iDet].real(); if (vImag) vImag[ix][iy] = ppcDetValue[iView][iDet].imag(); } else { v[ix][iy] = 0; if (vImag) vImag[ix][iy] = 0; } } else if (iInterpolationID == POLAR_INTERP_BILINEAR) { std::complex vInterp = pBilinear->interpolate (ppdView[ix][iy], ppdDet[ix][iy]); v[ix][iy] = vInterp.real(); if (vImag) vImag[ix][iy] = vInterp.imag(); } else if (iInterpolationID == POLAR_INTERP_BICUBIC) { std::complex vInterp = pBicubic->interpolate (ppdView[ix][iy], ppdDet[ix][iy]); v[ix][iy] = vInterp.real(); if (vImag) vImag[ix][iy] = vInterp.imag(); } } } } bool Projections::initFromSomatomAR_STAR (int iNViews, int iNDets, unsigned char* pData, unsigned long lDataLength) { init (iNViews, iNDets); m_geometry = Scanner::GEOMETRY_EQUIANGULAR; m_dFocalLength = 510; m_dSourceDetectorLength = 890; m_detInc = convertDegreesToRadians (3.06976 / 60); m_dFanBeamAngle = iNDets * m_detInc; m_detStart = -(m_dFanBeamAngle / 2); m_rotInc = TWOPI / static_cast(iNViews); m_rotStart = 0; m_dViewDiameter = sin (m_dFanBeamAngle / 2) * m_dFocalLength * 2; if (! ((iNViews == 750 && lDataLength == 1560000L) || (iNViews == 950 && lDataLength == 1976000L) || (iNViews == 1500 && lDataLength == 3120000))) return false; double dCenter = (iNDets - 1.) / 2.; // change from (Nm+1)/2 because of 0 vs. 1 indexing double* pdCosScale = new double [iNDets]; for (int i = 0; i < iNDets; i++) pdCosScale[i] = 1. / cos ((i - dCenter) * m_detInc); long lDataPos = 0; for (int iv = 0; iv < iNViews; iv++) { unsigned char* pArgBase = pData + lDataPos; unsigned char* p = pArgBase+0; SwapBytes4IfLittleEndian (p); // long lProjNumber = *reinterpret_cast(p); p = pArgBase+20; SwapBytes4IfLittleEndian (p); long lEscale = *reinterpret_cast(p); p = pArgBase+28; SwapBytes4IfLittleEndian (p); // long lTime = *reinterpret_cast(p); p = pArgBase + 4; SwapBytes4IfLittleEndian (p); double dAlpha = *reinterpret_cast(p) + HALFPI; p = pArgBase+12; SwapBytes4IfLittleEndian (p); // double dAlign = *reinterpret_cast(p); p = pArgBase + 16; SwapBytes4IfLittleEndian (p); // double dMaxValue = *reinterpret_cast(p); DetectorArray& detArray = getDetectorArray (iv); detArray.setViewAngle (dAlpha); DetectorValue* detval = detArray.detValues(); double dViewScale = 1. / (2294.4871 * ::pow (2.0, -lEscale)); lDataPos += 32; for (int id = 0; id < iNDets; id++) { int iV = pData[lDataPos+1] + (pData[lDataPos] << 8); if (iV > 32767) // two's complement signed conversion iV = iV - 65536; detval[id] = iV * dViewScale * pdCosScale[id]; lDataPos += 2; } #if 1 for (int k = iNDets - 2; k >= 0; k--) detval[k+1] = detval[k]; detval[0] = 0; #endif } delete pdCosScale; return true; } Projections* Projections::interpolateToParallel () const { if (m_geometry == Scanner::GEOMETRY_PARALLEL) return const_cast(this); int nDet = m_nDet; int nView = m_nView; Projections* pProjNew = new Projections (nView, nDet); pProjNew->m_geometry = Scanner::GEOMETRY_PARALLEL; pProjNew->m_dFocalLength = m_dFocalLength; pProjNew->m_dSourceDetectorLength = m_dSourceDetectorLength; pProjNew->m_dViewDiameter = m_dViewDiameter; pProjNew->m_dFanBeamAngle = m_dFanBeamAngle; pProjNew->m_calcTime = 0; pProjNew->m_remark = m_remark; pProjNew->m_remark += "; Interpolate to Parallel"; pProjNew->m_label.setLabelType (Array2dFileLabel::L_HISTORY); pProjNew->m_label.setLabelString (pProjNew->m_remark); pProjNew->m_label.setCalcTime (pProjNew->m_calcTime); pProjNew->m_label.setDateTime (pProjNew->m_year, pProjNew->m_month, pProjNew->m_day, pProjNew->m_hour, pProjNew->m_minute, pProjNew->m_second); pProjNew->m_rotStart = 0; #ifdef CONVERT_PARALLEL_PI pProjNew->m_rotInc = PI / nView;; #else pProjNew->m_rotInc = TWOPI / nView; #endif pProjNew->m_detStart = -m_dViewDiameter / 2; pProjNew->m_detInc = m_dViewDiameter / nDet; if (isEven (nDet)) // even pProjNew->m_detInc = m_dViewDiameter / (nDet - 1); ParallelRaysums parallel (this, ParallelRaysums::THETA_RANGE_NORMALIZE_TO_TWOPI); double* pdThetaValuesForT = new double [pProjNew->nView()]; double* pdRaysumsForT = new double [pProjNew->nView()]; // interpolate to evenly spaced theta (views) double dDetPos = pProjNew->m_detStart; for (int iD = 0; iD < pProjNew->nDet(); iD++, dDetPos += pProjNew->m_detInc) { parallel.getThetaAndRaysumsForT (iD, pdThetaValuesForT, pdRaysumsForT); double dViewAngle = m_rotStart; int iLastFloor = -1; LinearInterpolator interp (pdThetaValuesForT, pdRaysumsForT, pProjNew->nView(), false); for (int iV = 0; iV < pProjNew->nView(); iV++, dViewAngle += pProjNew->m_rotInc) { DetectorValue* detValues = pProjNew->getDetectorArray (iV).detValues(); detValues[iD] = interp.interpolate (dViewAngle, &iLastFloor); } } delete pdThetaValuesForT; delete pdRaysumsForT; // interpolate to evenly space t (detectors) double* pdOriginalDetPositions = new double [pProjNew->nDet()]; parallel.getDetPositions (pdOriginalDetPositions); double* pdDetValueCopy = new double [pProjNew->nDet()]; double dViewAngle = m_rotStart; for (int iV = 0; iV < pProjNew->nView(); iV++, dViewAngle += pProjNew->m_rotInc) { DetectorArray& detArray = pProjNew->getDetectorArray (iV); DetectorValue* detValues = detArray.detValues(); detArray.setViewAngle (dViewAngle); for (int i = 0; i < pProjNew->nDet(); i++) pdDetValueCopy[i] = detValues[i]; double dDetPos = pProjNew->m_detStart; int iLastFloor = -1; LinearInterpolator interp (pdOriginalDetPositions, pdDetValueCopy, pProjNew->nDet(), false); for (int iD = 0; iD < pProjNew->nDet(); iD++, dDetPos += pProjNew->m_detInc) detValues[iD] = interp.interpolate (dDetPos, &iLastFloor); } delete pdDetValueCopy; delete pdOriginalDetPositions; return pProjNew; } /////////////////////////////////////////////////////////////////////////////// // // Class ParallelRaysums // // Used for converting divergent beam raysums into Parallel raysums // /////////////////////////////////////////////////////////////////////////////// ParallelRaysums::ParallelRaysums (const Projections* pProjections, int iThetaRange) : m_pCoordinates(NULL), m_iNumCoordinates(0), m_iNumView(pProjections->nView()), m_iNumDet(pProjections->nDet()), m_iThetaRange (iThetaRange) { int iGeometry = pProjections->geometry(); double dDetInc = pProjections->detInc(); double dDetStart = pProjections->detStart(); double dFocalLength = pProjections->focalLength(); m_iNumCoordinates = m_iNumView * m_iNumDet; m_pCoordinates = new ParallelRaysumCoordinate [m_iNumCoordinates]; m_vecpCoordinates.reserve (m_iNumCoordinates); for (int i = 0; i < m_iNumCoordinates; i++) m_vecpCoordinates[i] = m_pCoordinates + i; int iCoordinate = 0; for (int iV = 0; iV < m_iNumView; iV++) { double dViewAngle = pProjections->getDetectorArray(iV).viewAngle(); const DetectorValue* detValues = pProjections->getDetectorArray(iV).detValues(); double dDetPos = dDetStart; for (int iD = 0; iD < m_iNumDet; iD++) { ParallelRaysumCoordinate* pC = m_vecpCoordinates[iCoordinate++]; if (iGeometry == Scanner::GEOMETRY_PARALLEL) { pC->m_dTheta = dViewAngle; pC->m_dT = dDetPos; } else if (iGeometry == Scanner::GEOMETRY_EQUILINEAR) { double dFanAngle = atan (dDetPos / pProjections->sourceDetectorLength()); pC->m_dTheta = dViewAngle + dFanAngle; pC->m_dT = dFocalLength * sin(dFanAngle); } else if (iGeometry == Scanner::GEOMETRY_EQUIANGULAR) { // fan angle is same as dDetPos pC->m_dTheta = dViewAngle + dDetPos; pC->m_dT = dFocalLength * sin (dDetPos); } if (m_iThetaRange != THETA_RANGE_UNCONSTRAINED) { pC->m_dTheta = normalizeAngle (pC->m_dTheta); if (m_iThetaRange == THETA_RANGE_FOLD_TO_PI && pC->m_dTheta >= PI) { pC->m_dTheta -= PI; pC->m_dT = -pC->m_dT; } } pC->m_dRaysum = detValues[iD]; dDetPos += dDetInc; } } } ParallelRaysums::~ParallelRaysums() { delete m_pCoordinates; } ParallelRaysums::CoordinateContainer& ParallelRaysums::getSortedByTheta() { if (m_vecpSortedByTheta.size() == 0) { m_vecpSortedByTheta.resize (m_iNumCoordinates); for (int i = 0; i < m_iNumCoordinates; i++) m_vecpSortedByTheta[i] = m_vecpCoordinates[i]; std::sort (m_vecpSortedByTheta.begin(), m_vecpSortedByTheta.end(), ParallelRaysumCoordinate::compareByTheta); } return m_vecpSortedByTheta; } ParallelRaysums::CoordinateContainer& ParallelRaysums::getSortedByT() { if (m_vecpSortedByT.size() == 0) { m_vecpSortedByT.resize (m_iNumCoordinates); for (int i = 0; i < m_iNumCoordinates; i++) m_vecpSortedByT[i] = m_vecpCoordinates[i]; std::sort (m_vecpSortedByT.begin(), m_vecpSortedByT.end(), ParallelRaysumCoordinate::compareByT); } return m_vecpSortedByT; } void ParallelRaysums::getLimits (double* dMinT, double* dMaxT, double* dMinTheta, double* dMaxTheta) const { if (m_iNumCoordinates <= 0) return; *dMinT = *dMaxT = m_vecpCoordinates[0]->m_dT; *dMinTheta = *dMaxTheta = m_vecpCoordinates[0]->m_dTheta; for (int i = 0; i < m_iNumCoordinates; i++) { double dT = m_vecpCoordinates[i]->m_dT; double dTheta = m_vecpCoordinates[i]->m_dTheta; if (dT < *dMinT) *dMinT = dT; else if (dT > *dMaxT) *dMaxT = dT; if (dTheta < *dMinTheta) *dMinTheta = dTheta; else if (dTheta > *dMaxTheta) *dMaxTheta = dTheta; } } void ParallelRaysums::getThetaAndRaysumsForT (int iTheta, double* pTheta, double* pRaysum) { const CoordinateContainer& coordsT = getSortedByT(); int iBase = iTheta * m_iNumView; for (int i = 0; i < m_iNumView; i++) { int iPos = iBase + i; pTheta[i] = coordsT[iPos]->m_dTheta; pRaysum[i] = coordsT[iPos]->m_dRaysum; } } void ParallelRaysums::getDetPositions (double* pdDetPos) { const CoordinateContainer& coordsT = getSortedByT(); int iPos = 0; for (int i = 0; i < m_iNumDet; i++) { pdDetPos[i] = coordsT[iPos]->m_dT; iPos += m_iNumView; } } ctsim-6.0.2/libctsim/scanner.cpp0000644000175000017500000005337313254504170015627 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: scanner.cpp ** Purpose: Classes for CT scanner ** Programmer: Kevin Rosenberg ** Date Started: 1984 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "ct.h" const int Scanner::GEOMETRY_INVALID = -1; const int Scanner::GEOMETRY_PARALLEL = 0; const int Scanner::GEOMETRY_EQUIANGULAR = 1; const int Scanner::GEOMETRY_EQUILINEAR = 2; const int Scanner::GEOMETRY_LINOGRAM = 3; const char* const Scanner::s_aszGeometryName[] = { "parallel", "equiangular", "equilinear", "linogram", }; const char* const Scanner::s_aszGeometryTitle[] = { "Parallel", "Equiangular", "Equilinear", "Linogram", }; const int Scanner::s_iGeometryCount = sizeof(s_aszGeometryName) / sizeof(const char*); // NAME // DetectorArray Construct a DetectorArray DetectorArray::DetectorArray (const int nDet) { m_nDet = nDet; m_detValues = new DetectorValue [m_nDet]; } // NAME // ~DetectorArray Free memory allocated to a detector array DetectorArray::~DetectorArray (void) { delete [] m_detValues; } /* NAME * Scanner::Scanner Construct a user specified detector structure * * SYNOPSIS * Scanner (phm, nDet, nView, nSample) * Phantom& phm PHANTOM that we are making detector for * int geomety Geometry of detector * int nDet Number of detector along detector array * int nView Number of rotated views * int nSample Number of rays per detector */ Scanner::Scanner (const Phantom& phm, const char* const geometryName, int nDet, int nView, int offsetView, int nSample, const double rot_anglen, const double dFocalLengthRatio, const double dCenterDetectorRatio, const double dViewRatio, const double dScanRatio) { m_fail = false; m_idGeometry = convertGeometryNameToID (geometryName); if (m_idGeometry == GEOMETRY_INVALID) { m_fail = true; m_failMessage = "Invalid geometry name "; m_failMessage += geometryName; return; } if (nView < 1 || nDet < 1) { m_fail = true; m_failMessage = "nView & nDet must be greater than 0"; return; } if (nSample < 1) m_nSample = 1; m_nDet = nDet; m_nView = nView; m_iOffsetView = offsetView; m_nSample = nSample; m_dFocalLengthRatio = dFocalLengthRatio; m_dCenterDetectorRatio = dCenterDetectorRatio; m_dViewRatio = dViewRatio; m_dScanRatio = dScanRatio; m_dViewDiameter = phm.getDiameterBoundaryCircle() * m_dViewRatio; m_dFocalLength = (m_dViewDiameter / 2) * m_dFocalLengthRatio; m_dCenterDetectorLength = (m_dViewDiameter / 2) * m_dCenterDetectorRatio; m_dSourceDetectorLength = m_dFocalLength + m_dCenterDetectorLength; m_dScanDiameter = m_dViewDiameter * m_dScanRatio; m_dXCenter = phm.xmin() + (phm.xmax() - phm.xmin()) / 2; m_dYCenter = phm.ymin() + (phm.ymax() - phm.ymin()) / 2; m_rotLen = rot_anglen; m_rotInc = m_rotLen / m_nView; if (m_idGeometry == GEOMETRY_PARALLEL) { m_dFanBeamAngle = 0; m_detLen = m_dScanDiameter; m_detStart = -m_detLen / 2; m_detInc = m_detLen / m_nDet; double dDetectorArrayEndOffset = 0; // For even number of detectors, make detInc slightly larger so that center lies // at nDet/2. Also, extend detector array by one detInc so that all of the phantom is scanned if (isEven (m_nDet)) { // Adjust for Even number of detectors m_detInc = m_detLen / (m_nDet - 1); // center detector = (nDet/2) dDetectorArrayEndOffset = m_detInc; } double dHalfDetLen = m_detLen / 2; m_initPos.xs1 = m_dXCenter - dHalfDetLen; m_initPos.ys1 = m_dYCenter + m_dFocalLength; m_initPos.xs2 = m_dXCenter + dHalfDetLen + dDetectorArrayEndOffset; m_initPos.ys2 = m_dYCenter + m_dFocalLength; m_initPos.xd1 = m_dXCenter - dHalfDetLen; m_initPos.yd1 = m_dYCenter - m_dCenterDetectorLength; m_initPos.xd2 = m_dXCenter + dHalfDetLen + dDetectorArrayEndOffset; m_initPos.yd2 = m_dYCenter - m_dCenterDetectorLength; m_initPos.angle = m_iOffsetView * m_rotInc; m_detLen += dDetectorArrayEndOffset; } else if (m_idGeometry == GEOMETRY_EQUILINEAR) { if (m_dScanDiameter / 2 >= m_dFocalLength) { m_fail = true; m_failMessage = "Invalid geometry: Focal length must be larger than scan length"; return; } const double dAngle = asin ((m_dScanDiameter / 2) / m_dFocalLength); const double dHalfDetLen = m_dSourceDetectorLength * tan (dAngle); m_detLen = dHalfDetLen * 2; m_detStart = -dHalfDetLen; m_detInc = m_detLen / m_nDet; double dDetectorArrayEndOffset = 0; if (isEven (m_nDet)) { // Adjust for Even number of detectors m_detInc = m_detLen / (m_nDet - 1); // center detector = (nDet/2) dDetectorArrayEndOffset = m_detInc; m_detLen += dDetectorArrayEndOffset; } m_dFanBeamAngle = dAngle * 2; m_initPos.xs1 = m_dXCenter; m_initPos.ys1 = m_dYCenter + m_dFocalLength; m_initPos.xs2 = m_dXCenter; m_initPos.ys2 = m_dYCenter + m_dFocalLength; m_initPos.xd1 = m_dXCenter - dHalfDetLen; m_initPos.yd1 = m_dYCenter - m_dCenterDetectorLength; m_initPos.xd2 = m_dXCenter + dHalfDetLen + dDetectorArrayEndOffset; m_initPos.yd2 = m_dYCenter - m_dCenterDetectorLength; m_initPos.angle = m_iOffsetView * m_rotInc; } else if (m_idGeometry == GEOMETRY_EQUIANGULAR) { if (m_dScanDiameter / 2 > m_dFocalLength) { m_fail = true; m_failMessage = "Invalid geometry: Focal length must be larger than scan length"; return; } const double dAngle = asin ((m_dScanDiameter / 2) / m_dFocalLength); m_detLen = 2 * dAngle; m_detStart = -dAngle; m_detInc = m_detLen / m_nDet; double dDetectorArrayEndOffset = 0; if (isEven (m_nDet)) { // Adjust for Even number of detectors m_detInc = m_detLen / (m_nDet - 1); // center detector = (nDet/2) dDetectorArrayEndOffset = m_detInc; } // adjust for center-detector length double dA1 = acos ((m_dScanDiameter / 2) / m_dCenterDetectorLength); double dAngularScale = 2 * (HALFPI + dAngle - dA1) / m_detLen; m_dAngularDetLen = dAngularScale * (m_detLen + dDetectorArrayEndOffset); m_dAngularDetIncrement = dAngularScale * m_detInc; m_initPos.dAngularDet = -m_dAngularDetLen / 2; m_dFanBeamAngle = dAngle * 2; m_initPos.angle = m_iOffsetView * m_rotInc; m_initPos.xs1 = m_dXCenter; m_initPos.ys1 = m_dYCenter + m_dFocalLength;; m_initPos.xs2 = m_dXCenter; m_initPos.ys2 = m_dYCenter + m_dFocalLength; m_detLen += dDetectorArrayEndOffset; } // Calculate incrementatal rotation matrix GRFMTX_2D temp; xlat_mtx2 (m_rotmtxIncrement, -m_dXCenter, -m_dYCenter); rot_mtx2 (temp, m_rotInc); mult_mtx2 (m_rotmtxIncrement, temp, m_rotmtxIncrement); xlat_mtx2 (temp, m_dXCenter, m_dYCenter); mult_mtx2 (m_rotmtxIncrement, temp, m_rotmtxIncrement); } Scanner::~Scanner (void) { } const char* Scanner::convertGeometryIDToName (const int geomID) { const char *name = ""; if (geomID >= 0 && geomID < s_iGeometryCount) return (s_aszGeometryName[geomID]); return (name); } const char* Scanner::convertGeometryIDToTitle (const int geomID) { const char *title = ""; if (geomID >= 0 && geomID < s_iGeometryCount) return (s_aszGeometryName[geomID]); return (title); } int Scanner::convertGeometryNameToID (const char* const geomName) { int id = GEOMETRY_INVALID; for (int i = 0; i < s_iGeometryCount; i++) { if (strcasecmp (geomName, s_aszGeometryName[i]) == 0) { id = i; break; } } return (id); } /* NAME * collectProjections Calculate projections for a Phantom * * SYNOPSIS * collectProjections (proj, phm, start_view, nView, bStoreViewPos, trace) * Projectrions& proj Projection storage * Phantom& phm Phantom for which we collect projections * bool bStoreViewPos TRUE then storage proj at normal view position * int trace Trace level */ void Scanner::collectProjections (Projections& proj, const Phantom& phm, const int trace, SGP* pSGP) { collectProjections (proj, phm, m_startView, proj.nView(), m_iOffsetView, true, trace, pSGP); } void Scanner::collectProjections (Projections& proj, const Phantom& phm, const int iStartView, const int iNumViews, const int iOffsetView, bool bStoreAtViewPosition, const int trace, SGP* pSGP) { int iStorageOffset = (bStoreAtViewPosition ? iStartView : 0); collectProjections (proj, phm, iStartView, iNumViews, iOffsetView, iStorageOffset, trace, pSGP); } static void mtx2_offset_rot (GRFMTX_2D m, double angle, double x, double y) { GRFMTX_2D temp; xlat_mtx2 (m, -x, -y); rot_mtx2 (temp, angle); mult_mtx2 (m, temp, m); xlat_mtx2 (temp, x, y); mult_mtx2 (m, temp, m); } void Scanner::collectProjections (Projections& proj, const Phantom& phm, const int iStartView, const int iNumViews, const int iOffsetView, int iStorageOffset, const int trace, SGP* pSGP) { m_trace = trace; double start_angle = (iStartView + iOffsetView) * proj.rotInc(); #ifdef HAVE_OPENMP #pragma omp parallel for #endif for (int iView = 0; iView < iNumViews; iView++) { double viewAngle = start_angle + (iView * proj.rotInc()); // With OpenMP, need to calculate source and detector positions at each view GRFMTX_2D rotmtx; mtx2_offset_rot (rotmtx, viewAngle, m_dXCenter, m_dYCenter); double xd1=0, yd1=0, xd2=0, yd2=0; if (m_idGeometry != GEOMETRY_EQUIANGULAR) { xd1 = m_initPos.xd1; yd1 = m_initPos.yd1; xd2 = m_initPos.xd2; yd2 = m_initPos.yd2; xform_mtx2 (rotmtx, xd1, yd1); // rotate detector endpoints xform_mtx2 (rotmtx, xd2, yd2); // to initial view_angle } double xs1 = m_initPos.xs1, ys1 = m_initPos.ys1; double xs2 = m_initPos.xs2, ys2 = m_initPos.ys2; xform_mtx2 (rotmtx, xs1, ys1); // rotate source endpoints to xform_mtx2 (rotmtx, xs2, ys2); // initial view angle int iStoragePosition = iView + iStorageOffset; DetectorArray& detArray = proj.getDetectorArray( iStoragePosition ); #ifdef HAVE_SGP if (pSGP && m_trace >= Trace::TRACE_PHANTOM) { m_pSGP = pSGP; double dWindowSize = dmax (m_detLen, m_dSourceDetectorLength) * 2; double dHalfWindowSize = dWindowSize / 2; m_dXMinWin = m_dXCenter - dHalfWindowSize; m_dXMaxWin = m_dXCenter + dHalfWindowSize; m_dYMinWin = m_dYCenter - dHalfWindowSize; m_dYMaxWin = m_dYCenter + dHalfWindowSize; m_pSGP->setWindow (m_dXMinWin, m_dYMinWin, m_dXMaxWin, m_dYMaxWin); m_pSGP->setRasterOp (RO_COPY); m_pSGP->setColor (C_RED); m_pSGP->moveAbs (0., 0.); m_pSGP->drawCircle (m_dViewDiameter / 2); m_pSGP->moveAbs (0., 0.); m_pSGP->setColor (C_GREEN); m_pSGP->drawCircle (m_dFocalLength); m_pSGP->setColor (C_BLUE); m_pSGP->setTextPointSize (9); phm.draw (*m_pSGP); m_dTextHeight = m_pSGP->getCharHeight (); traceShowParam ("Phantom:", "%s", PROJECTION_TRACE_ROW_PHANT_ID, C_BLACK, phm.name().c_str()); traceShowParam ("Geometry:", "%s", PROJECTION_TRACE_ROW_GEOMETRY, C_BLUE, convertGeometryIDToName(m_idGeometry)); traceShowParam ("Focal Length Ratio:", "%.2f", PROJECTION_TRACE_ROW_FOCAL_LENGTH, C_BLUE, m_dFocalLengthRatio); // traceShowParam ("Field Of View Ratio:", "%.2f", PROJECTION_TRACE_ROW_FIELD_OF_VIEW, C_BLUE, m_dFieldOfViewRatio); traceShowParam ("Num Detectors:", "%d", PROJECTION_TRACE_ROW_NDET, C_BLUE, proj.nDet()); traceShowParam ("Num Views:", "%d", PROJECTION_TRACE_ROW_NVIEW, C_BLUE, proj.nView()); traceShowParam ("Samples / Ray:", "%d", PROJECTION_TRACE_ROW_SAMPLES, C_BLUE, m_nSample); m_pSGP->setMarker (SGP::MARKER_BDIAMOND); m_pSGP->setColor (C_BLACK); m_pSGP->setPenWidth (2); if (m_idGeometry == GEOMETRY_PARALLEL) { m_pSGP->moveAbs (xs1, ys1); m_pSGP->lineAbs (xs2, ys2); m_pSGP->moveAbs (xd1, yd1); m_pSGP->lineAbs (xd2, yd2); } else if (m_idGeometry == GEOMETRY_EQUILINEAR) { m_pSGP->setPenWidth (4); m_pSGP->moveAbs (xs1, ys1); m_pSGP->lineAbs (xs2, ys2); m_pSGP->setPenWidth (2); m_pSGP->moveAbs (xd1, yd1); m_pSGP->lineAbs (xd2, yd2); } else if (m_idGeometry == GEOMETRY_EQUIANGULAR) { m_pSGP->setPenWidth (4); m_pSGP->moveAbs (xs1, ys1); m_pSGP->lineAbs (xs2, ys2); m_pSGP->setPenWidth (2); m_pSGP->moveAbs (0., 0.); m_pSGP->drawArc (m_dCenterDetectorLength, viewAngle + 3 * HALFPI - (m_dAngularDetLen/2), viewAngle + 3 * HALFPI + (m_dAngularDetLen/2)); } m_pSGP->setPenWidth (1); } if (m_trace > Trace::TRACE_CONSOLE) traceShowParam ("Current View:", "%d (%.0f%%)", PROJECTION_TRACE_ROW_CURR_VIEW, C_RED, iView + iStartView, (iView + iStartView) / static_cast(m_nView) * 100.); #endif if (m_trace == Trace::TRACE_CONSOLE) std::cout << "Current View: " << iView+iStartView << std::endl; projectSingleView (phm, detArray, xd1, yd1, xd2, yd2, xs1, ys1, xs2, ys2, viewAngle + 3 * HALFPI); detArray.setViewAngle (viewAngle); #ifdef HAVE_SGP if (m_pSGP && m_trace >= Trace::TRACE_PHANTOM) { // rs_plot (detArray, xd1, yd1, dXCenter, dYCenter, theta); } #endif } /* for each iView */ } /* NAME * rayview Calculate raysums for a view at any angle * * SYNOPSIS * rayview (phm, detArray, xd1, nSample, yd1, xd2, yd2, xs1, ys1, xs2, ys2) * Phantom& phm Phantom to scan * DETARRAY *detArray Storage of values for detector array * Scanner& det Scanner parameters * double xd1, yd1, xd2, yd2 Beginning & ending detector positions * double xs1, ys1, xs2, ys2 Beginning & ending source positions * * RAY POSITIONING * For each detector, have there are a variable number of rays traced. * The source of each ray is the center of the source x-ray cell. The * detector positions are equally spaced within the cell * * The increments between rays are calculated so that the cells start * at the beginning of a detector cell and they end on the endpoint * of the cell. Thus, the last cell starts at (xd2-ddx),(yd2-ddy). * The exception to this is if there is only one ray per detector. * In that case, the detector position is the center of the detector cell. */ void Scanner::projectSingleView (const Phantom& phm, DetectorArray& detArray, const double xd1, const double yd1, const double xd2, const double yd2, const double xs1, const double ys1, const double xs2, const double ys2, const double dDetAngle) { double sdx = (xs2 - xs1) / detArray.nDet(); // change in coords double sdy = (ys2 - ys1) / detArray.nDet(); // between source double xs_maj = xs1 + (sdx / 2); // put ray source in center of cell double ys_maj = ys1 + (sdy / 2); double ddx=0, ddy=0, ddx2=0, ddy2=0, ddx2_ofs=0, ddy2_ofs=0, xd_maj=0, yd_maj=0; double dAngleInc=0, dAngleSampleInc=0, dAngleSampleOffset=0, dAngleMajor=0; if (m_idGeometry == GEOMETRY_EQUIANGULAR) { dAngleInc = m_dAngularDetIncrement; dAngleSampleInc = dAngleInc / m_nSample; dAngleSampleOffset = dAngleSampleInc / 2; dAngleMajor = dDetAngle - (m_dAngularDetLen/2) + dAngleSampleOffset; } else { ddx = (xd2 - xd1) / detArray.nDet(); // change in coords ddy = (yd2 - yd1) / detArray.nDet(); // between detectors ddx2 = ddx / m_nSample; // Incr. between rays with detector cell ddy2 = ddy / m_nSample; // Doesn't include detector endpoints ddx2_ofs = ddx2 / 2; // offset of 1st ray from start of detector cell ddy2_ofs = ddy2 / 2; xd_maj = xd1 + ddx2_ofs; // Incr. between detector cells yd_maj = yd1 + ddy2_ofs; } DetectorValue* detval = detArray.detValues(); if (phm.getComposition() == P_UNIT_PULSE) { // put unit pulse in center of view for (int d = 0; d < detArray.nDet(); d++) detval[d] = 0; detval[ detArray.nDet() / 2 ] = 1; } else { for (int d = 0; d < detArray.nDet(); d++) { double xs = xs_maj; double ys = ys_maj; double xd=0, yd=0, dAngle=0; if (m_idGeometry == GEOMETRY_EQUIANGULAR) { dAngle = dAngleMajor; } else { xd = xd_maj; yd = yd_maj; } double sum = 0.0; for (unsigned int i = 0; i < m_nSample; i++) { if (m_idGeometry == GEOMETRY_EQUIANGULAR) { xd = m_dCenterDetectorLength * cos (dAngle); yd = m_dCenterDetectorLength * sin (dAngle); } #ifdef HAVE_SGP if (m_pSGP && m_trace >= Trace::TRACE_PROJECTIONS) { m_pSGP->setColor (C_YELLOW); m_pSGP->setRasterOp (RO_AND); m_pSGP->moveAbs (xs, ys); m_pSGP->lineAbs (xd, yd); } #endif sum += projectSingleLine (phm, xd, yd, xs, ys); #ifdef HAVE_SGP // if (m_trace >= Trace::TRACE_CLIPPING) { // traceShowParam ("Attenuation:", "%s", PROJECTION_TRACE_ROW_ATTEN, C_LTMAGENTA, " "); // traceShowParam ("Attenuation:", "%.3f", PROJECTION_TRACE_ROW_ATTEN, C_LTMAGENTA, sum); // } #endif if (m_idGeometry == GEOMETRY_EQUIANGULAR) dAngle += dAngleSampleInc; else { xd += ddx2; yd += ddy2; } } // for each sample in detector detval[d] = sum / m_nSample; xs_maj += sdx; ys_maj += sdy; if (m_idGeometry == GEOMETRY_EQUIANGULAR) dAngleMajor += dAngleInc; else { xd_maj += ddx; yd_maj += ddy; } } /* for each detector */ } /* if not unit pulse */ } void Scanner::traceShowParam (const char *szLabel, const char *fmt, int row, int color, ...) { va_list arg; va_start(arg, color); #ifdef HAVE_SGP traceShowParamRasterOp (RO_COPY, szLabel, fmt, row, color, arg); #else traceShowParamRasterOp (0, szLabel, fmt, row, color, arg); #endif va_end(arg); } void Scanner::traceShowParamXOR (const char *szLabel, const char *fmt, int row, int color, ...) { va_list arg; va_start(arg, color); #ifdef HAVE_SGP traceShowParamRasterOp (RO_XOR, szLabel, fmt, row, color, arg); #else traceShowParamRasterOp (0, szLabel, fmt, row, color, arg); #endif va_end(arg); } void Scanner::traceShowParamRasterOp (int iRasterOp, const char *szLabel, const char *fmt, int row, int color, va_list args) { char szValue[256]; vsnprintf (szValue, sizeof(szValue), fmt, args); #ifdef HAVE_SGP if (m_pSGP) { m_pSGP->setRasterOp (iRasterOp); m_pSGP->setTextColor (color, -1); double dValueOffset = (m_dXMaxWin - m_dXMinWin) / 4; if (row < 4) { double dYPos = m_dYMaxWin - (row * m_dTextHeight); double dXPos = m_dXMinWin; m_pSGP->moveAbs (dXPos, dYPos); m_pSGP->drawText (szLabel); m_pSGP->moveAbs (dXPos + dValueOffset, dYPos); m_pSGP->drawText (szValue); } else { row -= 4; double dYPos = m_dYMaxWin - (row * m_dTextHeight); double dXPos = m_dXMinWin + (m_dXMaxWin - m_dXMinWin) * 0.5; m_pSGP->moveAbs (dXPos, dYPos); m_pSGP->drawText (szLabel); m_pSGP->moveAbs (dXPos + dValueOffset, dYPos); m_pSGP->drawText (szValue); } } else #endif { cio_put_str (szLabel); cio_put_str (szValue); cio_put_str ("\n"); } } /* NAME * projectSingleLine INTERNAL: Calculates raysum along a line for a Phantom * * SYNOPSIS * rsum = phm_ray_attenuation (phm, x1, y1, x2, y2) * double rsum Ray sum of Phantom along given line * Phantom& phm; Phantom from which to calculate raysum * double *x1, *y1, *x2, y2 Endpoints of ray path (in Phantom coords) */ double Scanner::projectSingleLine (const Phantom& phm, const double x1, const double y1, const double x2, const double y2) { // check ray against each pelem in Phantom double rsum = 0.0; for (PElemConstIterator i = phm.listPElem().begin(); i != phm.listPElem().end(); i++) rsum += projectLineAgainstPElem (**i, x1, y1, x2, y2); return (rsum); } /* NAME * pelem_ray_attenuation Calculate raysum of an pelem along one line * * SYNOPSIS * rsum = pelem_ray_attenuation (pelem, x1, y1, x2, y2) * double rsum Computed raysum * PhantomElement& pelem Pelem to scan * double x1, y1, x2, y2 Endpoints of raysum line */ double Scanner::projectLineAgainstPElem (const PhantomElement& pelem, double x1, double y1, double x2, double y2) { if (! pelem.clipLineWorldCoords (x1, y1, x2, y2)) { if (m_trace == Trace::TRACE_CLIPPING) cio_tone (1000., 0.05); return (0.0); } #ifdef HAVE_SGP if (m_pSGP && m_trace == Trace::TRACE_CLIPPING) { m_pSGP->setRasterOp (RO_XOR); m_pSGP->moveAbs (x1, y1); m_pSGP->lineAbs (x2, y2); cio_tone (8000., 0.05); m_pSGP->moveAbs (x1, y1); m_pSGP->lineAbs (x2, y2); m_pSGP->setRasterOp (RO_SET); } #endif double len = lineLength (x1, y1, x2, y2); return (len * pelem.atten()); } ctsim-6.0.2/libctsim/trace.cpp0000644000175000017500000000467411240454454015276 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: trace.cpp Class for trace ** Programmer: Kevin Rosenberg ** Date Started: June 2000 ** ** This is part of the CTSim program ** Copyright (C) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "ct.h" const int Trace::TRACE_INVALID = -1; const int Trace::TRACE_NONE = 0; const int Trace::TRACE_CONSOLE = 1; const int Trace::TRACE_PHANTOM = 2; const int Trace::TRACE_PROJECTIONS = 3; const int Trace::TRACE_PLOT = 4; const int Trace::TRACE_CLIPPING = 5; const int Trace::BIT_CONSOLE = 0x0001; const int Trace::BIT_PHANTOM = 0x0002; const int Trace::BIT_PROJECTIONS = 0x0004; const int Trace::BIT_PLOT = 0x0008; const int Trace::BIT_CLIPPING = 0x0010; const char* Trace::s_aszTraceName[] = { "none", "console", "phantom", "proj", "plot", "clipping", }; const char* Trace::s_aszTraceTitle[] = { "None", "Console", "Phantom", "Projections", "Plot", "Clipping", }; const int Trace::s_iTraceCount = sizeof(s_aszTraceName) / sizeof(const char*); const char* Trace::convertTraceIDToName (const int idTrace) { const char *name = ""; if (idTrace >= 0 && idTrace < s_iTraceCount) return (s_aszTraceName[idTrace]); return (name); } const char* Trace::convertTraceIDToTitle (const int idTrace) { const char *title = ""; if (idTrace >= 0 && idTrace < s_iTraceCount) return (s_aszTraceName[idTrace]); return (title); } int Trace::convertTraceNameToID (const char* const traceName) { int id = Trace::TRACE_INVALID; for (int i = 0; i < s_iTraceCount; i++) if (strcasecmp (traceName, s_aszTraceName[i]) == 0) { id = i; break; } return (id); } ctsim-6.0.2/libctsim/filter.cpp0000644000175000017500000003762713254262315015471 0ustar kevinkevin/***************************************************************************** ** File IDENTIFICATION ** ** Name: filter.cpp ** Purpose: Routines for signal-procesing filters ** Progammer: Kevin Rosenberg ** Date Started: Aug 1984 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "ct.h" int SignalFilter::N_INTEGRAL=500; //static member const int SignalFilter::FILTER_INVALID = -1 ; const int SignalFilter::FILTER_ABS_BANDLIMIT = 0; // filter times |x| const int SignalFilter::FILTER_ABS_G_HAMMING = 1; const int SignalFilter::FILTER_ABS_HANNING = 2; const int SignalFilter::FILTER_ABS_COSINE = 3; const int SignalFilter::FILTER_ABS_SINC = 4; const int SignalFilter::FILTER_SHEPP = 5; const int SignalFilter::FILTER_BANDLIMIT = 6; const int SignalFilter::FILTER_SINC = 7; const int SignalFilter::FILTER_G_HAMMING = 8; const int SignalFilter::FILTER_HANNING = 9; const int SignalFilter::FILTER_COSINE = 10; const int SignalFilter::FILTER_TRIANGLE = 11; const int SignalFilter::s_iReconstructFilterCount = 4; const char* const SignalFilter::s_aszFilterName[] = { "abs_bandlimit", "abs_hamming", "abs_hanning", "abs_cosine", "shepp", "abs_sinc", "bandlimit", "sinc", "hamming", "hanning", "cosine", "triangle" }; const char* const SignalFilter::s_aszFilterTitle[] = { "Abs(w) * Bandlimit", "Abs(w) * Hamming", "Abs(w) * Hanning", "Abs(w) * Cosine", "Shepp", "Abs(w) * Sinc", "Bandlimit", "Sinc", "Hamming", "Hanning", "Cosine", "Triangle" }; const int SignalFilter::s_iFilterCount = sizeof(s_aszFilterName) / sizeof(const char*); const int SignalFilter::DOMAIN_INVALID = -1; const int SignalFilter::DOMAIN_FREQUENCY = 0; const int SignalFilter::DOMAIN_SPATIAL = 1; const char* const SignalFilter::s_aszDomainName[] = { "frequency", "spatial", }; const char* const SignalFilter::s_aszDomainTitle[] = { "Frequency", "Spatial", }; const int SignalFilter::s_iDomainCount = sizeof(s_aszDomainName) / sizeof(const char*); /* NAME * SignalFilter::SignalFilter Construct a signal * * SYNOPSIS * f = SignalFilter (filt_type, bw, filterMin, filterMax, n, param, domain, analytic) * double f Generated filter vector * int filt_type Type of filter wanted * double bw Bandwidth of filter * double filterMin, filterMax Filter limits * int nFilterPoints Number of points in signal * double param General input parameter to filters * int domain FREQUENCY or SPATIAL domain wanted */ SignalFilter::SignalFilter (const char* szFilterName, double dFilterMinimum, double dFilterMaximum, int nFilterPoints, double dBandwidth, double dFilterParam, const char* szDomainName) : m_adFilter(NULL), m_fail(false) { m_idFilter = convertFilterNameToID (szFilterName); if (m_idFilter == FILTER_INVALID) { m_fail = true; m_failMessage = "Invalid Filter name "; m_failMessage += szFilterName; return; } m_idDomain = convertDomainNameToID (szDomainName); if (m_idDomain == DOMAIN_INVALID) { m_fail = true; m_failMessage = "Invalid domain name "; m_failMessage += szDomainName; return; } init (m_idFilter, dFilterMinimum, dFilterMaximum, nFilterPoints, dBandwidth, dFilterParam, m_idDomain); } SignalFilter::SignalFilter (const int idFilter, double dFilterMinimum, double dFilterMaximum, int nFilterPoints, double dBandwidth, double dFilterParam, const int idDomain) : m_adFilter(NULL), m_fail(false) { init (idFilter, dFilterMinimum, dFilterMaximum, nFilterPoints, dBandwidth, dFilterParam, idDomain); } SignalFilter::SignalFilter (const char* szFilterName, const char* szDomainName, double dBandwidth, double dFilterParam) : m_adFilter(NULL), m_fail(false) { m_nFilterPoints = 0; m_dBandwidth = dBandwidth; m_dFilterParam = dFilterParam; m_idFilter = convertFilterNameToID (szFilterName); if (m_idFilter == FILTER_INVALID) { m_fail = true; m_failMessage = "Invalid Filter name "; m_failMessage += szFilterName; return; } m_idDomain = convertDomainNameToID (szDomainName); if (m_idDomain == DOMAIN_INVALID) { m_fail = true; m_failMessage = "Invalid domain name "; m_failMessage += szDomainName; return; } } void SignalFilter::init (const int idFilter, double dFilterMinimum, double dFilterMaximum, int nFilterPoints, double dBandwidth, double dFilterParam, const int idDomain) { m_idFilter = idFilter; m_idDomain = idDomain; if (m_idFilter == FILTER_INVALID || m_idDomain == DOMAIN_INVALID) { m_fail = true; return; } if (nFilterPoints < 2) { m_fail = true; m_failMessage = "Number of filter points "; m_failMessage += nFilterPoints; m_failMessage = " less than 2"; return; } m_nameFilter = convertFilterIDToName (m_idFilter); m_nameDomain = convertDomainIDToName (m_idDomain); m_nFilterPoints = nFilterPoints; m_dFilterParam = dFilterParam; m_dBandwidth = dBandwidth; m_dFilterMin = dFilterMinimum; m_dFilterMax = dFilterMaximum; m_dFilterInc = (m_dFilterMax - m_dFilterMin) / (m_nFilterPoints - 1); m_adFilter = new double [m_nFilterPoints]; if (m_idDomain == DOMAIN_FREQUENCY) createFrequencyFilter (m_adFilter); else if (m_idDomain == DOMAIN_SPATIAL) createSpatialFilter (m_adFilter); } SignalFilter::~SignalFilter (void) { delete [] m_adFilter; } void SignalFilter::createFrequencyFilter (double* adFilter) const { double x; int i; for (x = m_dFilterMin, i = 0; i < m_nFilterPoints; x += m_dFilterInc, i++) adFilter[i] = frequencyResponse (x); } void SignalFilter::createSpatialFilter (double* adFilter) const { if (m_idFilter == FILTER_SHEPP) { double a = 2 * m_dBandwidth; double c = - 4. / (a * a); int center = (m_nFilterPoints - 1) / 2; int sidelen = center; m_adFilter[center] = 4. / (a * a); for (int i = 1; i <= sidelen; i++ ) m_adFilter [center + i] = m_adFilter [center - i] = c / (4 * (i * i) - 1); } else { double x = m_dFilterMin; for (int i = 0; i < m_nFilterPoints; i++, x += m_dFilterInc) { if (haveAnalyticSpatial(m_idFilter)) m_adFilter[i] = spatialResponseAnalytic (x); else m_adFilter[i] = spatialResponseCalc (x); } } } int SignalFilter::convertFilterNameToID (const char *filterName) { int filterID = FILTER_INVALID; for (int i = 0; i < s_iFilterCount; i++) { if (strcasecmp (filterName, s_aszFilterName[i]) == 0) { filterID = i; break; } } return (filterID); } const char * SignalFilter::convertFilterIDToName (const int filterID) { static const char *name = ""; if (filterID >= 0 && filterID < s_iFilterCount) return (s_aszFilterName [filterID]); return (name); } const char * SignalFilter::convertFilterIDToTitle (const int filterID) { static const char *title = ""; if (filterID >= 0 && filterID < s_iFilterCount) { return (s_aszFilterTitle [filterID]); } return (title); } int SignalFilter::convertDomainNameToID (const char* const domainName) { int dID = DOMAIN_INVALID; for (int i = 0; i < s_iDomainCount; i++) { if (strcasecmp (domainName, s_aszDomainName[i]) == 0) { dID = i; break; } } return (dID); } const char * SignalFilter::convertDomainIDToName (const int domainID) { static const char *name = ""; if (domainID >= 0 && domainID < s_iDomainCount) return (s_aszDomainName [domainID]); return (name); } const char * SignalFilter::convertDomainIDToTitle (const int domainID) { static const char *title = ""; if (domainID >= 0 && domainID < s_iDomainCount) return (s_aszDomainTitle [domainID]); return (title); } double SignalFilter::response (double x) { double response = 0; if (m_idDomain == DOMAIN_SPATIAL) response = spatialResponse (m_idFilter, m_dBandwidth, x, m_dFilterParam); else if (m_idDomain == DOMAIN_FREQUENCY) response = frequencyResponse (m_idFilter, m_dBandwidth, x, m_dFilterParam); return (response); } double SignalFilter::spatialResponse (int filterID, double bw, double x, double param) { if (haveAnalyticSpatial(filterID)) return spatialResponseAnalytic (filterID, bw, x, param); else return spatialResponseCalc (filterID, bw, x, param, N_INTEGRAL); } void SignalFilter::copyFilterData (double* pdFilter, const int iStart, const int nPoints) const { int iFirst = clamp (iStart, 0, m_nFilterPoints - 1); int iLast = clamp (iFirst + nPoints - 1, 0, m_nFilterPoints - 1); for (int i = iFirst; i <= iLast; i++) pdFilter[i - iFirst] = m_adFilter[i]; } /* NAME * filter_spatial_response_calc Calculate filter by discrete inverse fourier * transform of filters's frequency * response * * SYNOPSIS * y = filter_spatial_response_calc (filt_type, x, m_bw, param, n) * double y Filter's response in spatial domain * int filt_type Type of filter (definitions in ct.h) * double x Spatial position to evaluate filter * double m_bw Bandwidth of window * double param General parameter for various filters * int n Number of points to calculate integrations */ double SignalFilter::spatialResponseCalc (double x) const { return (spatialResponseCalc (m_idFilter, m_dBandwidth, x, m_dFilterParam, N_INTEGRAL)); } double SignalFilter::spatialResponseCalc (int filterID, double bw, double x, double param, int n) { double zmin, zmax; if (filterID == FILTER_TRIANGLE) { zmin = 0; zmax = bw; } else { zmin = 0; zmax = bw / 2; } double zinc = (zmax - zmin) / (n - 1); double z = zmin; double* q = new double [n]; for (int i = 0; i < n; i++, z += zinc) q[i] = frequencyResponse (filterID, bw, z, param) * cos (TWOPI * z * x); double y = 2 * integrateSimpson (zmin, zmax, q, n); delete q; return (y); } /* NAME * filter_frequency_response Return filter frequency response * * SYNOPSIS * h = filter_frequency_response (filt_type, u, m_bw, param) * double h Filters frequency response at u * int filt_type Type of filter * double u Frequency to evaluate filter at * double m_bw Bandwidth of filter * double param General input parameter for various filters */ double SignalFilter::frequencyResponse (double u) const { return frequencyResponse (m_idFilter, m_dBandwidth, u, m_dFilterParam); } double SignalFilter::frequencyResponse (int filterID, double bw, double u, double param) { double q; double au = fabs (u); double abw = fabs (bw); switch (filterID) { case FILTER_BANDLIMIT: if (au >= (abw / 2) + F_EPSILON) q = 0.; else q = 1; break; case FILTER_ABS_BANDLIMIT: if (au >= (abw / 2) + F_EPSILON) q = 0.; else q = au; break; case FILTER_TRIANGLE: if (au >= (abw / 2) + F_EPSILON) q = 0; else q = 1 - au / abw; break; case FILTER_COSINE: if (au >= (abw / 2) + F_EPSILON) q = 0; else q = cos(PI * au / abw); break; case FILTER_ABS_COSINE: if (au >= (abw / 2) + F_EPSILON) q = 0; else q = au * cos(PI * au / abw); break; case FILTER_SINC: q = abw * sinc (PI * abw * au, 1.); break; case FILTER_ABS_SINC: if (au >= (abw / 2) + F_EPSILON) q = 0; else q = au * abw * sinc (PI * abw * au, 1.); break; case FILTER_HANNING: param = 0.5; // follow through to G_HAMMING case FILTER_G_HAMMING: if (au >= (abw / 2) + F_EPSILON) q = 0; else q = param + (1 - param) * cos (TWOPI * au / abw); break; case FILTER_ABS_HANNING: param = 0.5; // follow through to ABS_G_HAMMING case FILTER_ABS_G_HAMMING: if (au >= (abw / 2) + F_EPSILON) q = 0; else q = au * (param + (1 - param) * cos(TWOPI * au / abw)); break; default: q = 0; sys_error (ERR_WARNING, "Frequency response for filter %d not implemented [filter_frequency_response]", filterID); break; } return (q); } /* NAME * filter_spatial_response_analytic Calculate filter by analytic inverse fourier * transform of filters's frequency * response * * SYNOPSIS * y = filter_spatial_response_analytic (filt_type, x, m_bw, param) * double y Filter's response in spatial domain * int filt_type Type of filter (definitions in ct.h) * double x Spatial position to evaluate filter * double m_bw Bandwidth of window * double param General parameter for various filters */ double SignalFilter::spatialResponseAnalytic (double x) const { return spatialResponseAnalytic (m_idFilter, m_dBandwidth, x, m_dFilterParam); } const bool SignalFilter::haveAnalyticSpatial (int filterID) { bool haveAnalytic = false; switch (filterID) { case FILTER_BANDLIMIT: case FILTER_TRIANGLE: case FILTER_COSINE: case FILTER_G_HAMMING: case FILTER_HANNING: case FILTER_ABS_BANDLIMIT: case FILTER_ABS_COSINE: case FILTER_ABS_G_HAMMING: case FILTER_ABS_HANNING: case FILTER_SHEPP: case FILTER_SINC: haveAnalytic = true; break; default: break; } return (haveAnalytic); } double SignalFilter::spatialResponseAnalytic (int filterID, double bw, double x, double param) { double q, temp; double u = TWOPI * x; double w = bw / 2; double b = PI / bw; double b2 = TWOPI / bw; switch (filterID) { case FILTER_BANDLIMIT: q = bw * sinc(u * w, 1.0); break; case FILTER_TRIANGLE: temp = sinc (u * w, 1.0); q = bw * temp * temp; break; case FILTER_COSINE: q = sinc(b-u,w) + sinc(b+u,w); break; case FILTER_HANNING: param = 0.5; // follow through to G_HAMMING case FILTER_G_HAMMING: q = 2 * param * sin(u*w)/u + (1-param) * (sinc(b2-u, w) + sinc(b2+u, w)); break; case FILTER_ABS_BANDLIMIT: q = 2 * integral_abscos (u, w); break; case FILTER_ABS_COSINE: q = integral_abscos(b-u,w) + integral_abscos(b+u,w); break; case FILTER_ABS_HANNING: param = 0.5; // follow through to ABS_G_HAMMING case FILTER_ABS_G_HAMMING: q = 2 * param * integral_abscos(u,w) + (1-param)*(integral_abscos(u-b2,w)+integral_abscos(u+b2,w)); break; case FILTER_SHEPP: if (fabs (u) < 1E-7) q = 4. / (PI * bw * bw); else q = fabs ((2 / bw) * sin (u * w)) * sinc (u * w, 1.) * sinc (u * w, 1.); break; case FILTER_SINC: if (fabs (x) < bw / 2) q = 1.; else q = 0.; break; case FILTER_ABS_SINC: default: sys_error (ERR_WARNING, "Analytic filter type %d not implemented [filter_spatial_response_analytic]", filterID); q = 0; break; } return (q); } // Functions that are inline in filter.h // sinc Return sin(x)/x function // v = sinc (x, mult) // Calculates sin(x * mult) / x; // integral_abscos Returns integral of u*cos(u) // // q = integral_abscos (u, w) // double q Integral value // double u Integration variable // double w Upper integration boundary // Returns the value of integral of u*cos(u)*dV for V = 0 to w ctsim-6.0.2/helical/0000755000175000017500000000000013254524615013260 5ustar kevinkevinctsim-6.0.2/helical/Makefile.am0000644000175000017500000000010610703552713015305 0ustar kevinkevinCLEANFILES=sample-helical.sh \*.pgm \*.if \*~ \*.pj \.*~ \#\*\# \#\*~ ctsim-6.0.2/helical/Makefile.in0000644000175000017500000003060613254406202015321 0ustar kevinkevin# 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 = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = helical ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/scripts/ax_check_compile_flag.m4 \ $(top_srcdir)/scripts/ax_ext.m4 \ $(top_srcdir)/scripts/ax_gcc_x86_avx_xgetbv.m4 \ $(top_srcdir)/scripts/ax_gcc_x86_cpuid.m4 \ $(top_srcdir)/scripts/ax_openmp.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = sample-helical.sh CONFIG_CLEAN_VPATH_FILES = 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 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/sample-helical.sh.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPUEXT_FLAGS = @CPUEXT_FLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ 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@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIMD_FLAGS = @SIMD_FLAGS@ STRIP = @STRIP@ VERSION = @VERSION@ XMKMF = @XMKMF@ X_BASIC_LIBS = @X_BASIC_LIBS@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ X_TOOLKIT_LIBS = @X_TOOLKIT_LIBS@ 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 = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ cgibindir = @cgibindir@ cgibinurl = @cgibinurl@ cgiprograms = @cgiprograms@ ctlibs = @ctlibs@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldata = @htmldata@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lamdefs = @lamdefs@ lamdir = @lamdir@ lamprograms = @lamprograms@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mpienable = @mpienable@ my_includes = @my_includes@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ webdatadir = @webdatadir@ webdataurl = @webdataurl@ webenabled = @webenabled@ wx_cppflags = @wx_cppflags@ wxcflags = @wxcflags@ wxconfig = @wxconfig@ wxlibs = @wxlibs@ CLEANFILES = sample-helical.sh \*.pgm \*.if \*~ \*.pj \.*~ \#\*\# \#\*~ all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu helical/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu helical/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): sample-helical.sh: $(top_builddir)/config.status $(srcdir)/sample-helical.sh.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @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 check-am: all-am check: check-am all-am: Makefile installdirs: 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: 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) 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-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: 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 Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am 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-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am .PRECIOUS: Makefile # 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: ctsim-6.0.2/helical/sample-helical.sh.in0000644000175000017500000000270713254271503017102 0ustar kevinkevin#!/bin/sh if test "$1" != "" ; then bin=$1 else bin="@prefix@/bin/" fi if test "$1" = "clean" ; then rm -f sample-phm.png sample-phm.if sample-pj.pj sample-pj.if sample-pj.png sample-rec.if sample-rec.png 540-pj.pj 540-pj.if 540-pj.png 540-rec.if 540-rec.png dynphm exit fi # Generate phantom image cc -o dynphm dynphm.c -lm dynphm 100 200 tmpphm ${bin}ctsimtext phm2if sample-phm.if 256 256 --nsample 2 --phmfile tmpphm rm -f tmpphm if [ -f sample-phm.if ] ; then ${bin}ctsimtext ifexport sample-phm.if sample-phm.png --format png fi # Simulate helical CT data collection and generate raysum sinugram for display ${bin}ctsimtext phm2helix sample-pj.pj 367 1080 dynphm --nray 2 --geometry equiangular --rotangle 3 if [ -f sample-pj.pj ]; then ${bin}ctsimtext pj2if sample-pj.pj sample-pj.if fi if [ -f sample-pj.if ]; then ${bin}ctsimtext ifexport sample-pj.if sample-pj.png --format png fi if [ -f sample-pj.pj ]; then ${bin}ctsimtext pjHinterp sample-pj.pj 540-pj.pj --interpview 540 fi if [ -f 540-pj.pj ]; then ${bin}ctsimtext pj2if 540-pj.pj 540-pj.if fi if [ -f sample-pj.if ]; then ${bin}ctsimtext ifexport 540-pj.if 540-pj.png --format png fi # Reconstruct raysums and generate image for display ${bin}ctsimtext pjrec 540-pj.pj 540-rec.if 256 256 if [ -f sample-rec.if ]; then ${bin}ctsimtext ifexport 540-rec.if 540-rec.png --format png # Display comparison statistics ${bin}ctsimtext if2 sample-phm.if 540-rec.if --comp fi ctsim-6.0.2/helical/dynphm.c0000644000175000017500000000236010667176710014730 0ustar kevinkevin#include #include int main(int argc, char *argv[]) { int view, nview; char filename[128]; float mu1=0. , mu2=6., density, afac, s; FILE *fp = (FILE *)NULL; if (argc !=4){ fprintf(stderr, "Usage: %s iview nview phmfilename\n", argv[0]); exit (1); } view = atoi(argv[1]); nview = atoi(argv[2]); sprintf(filename, "%s", argv[3]); s = (float)view/((float)(nview-1)); if ( s < 7./16. ) density = mu1; else if ( s > 9./16. ) density = mu2; else { afac = ( (s - 7./16.) / 2./16.); density = log(1/((1-afac)*exp(-mu1) + afac * exp(-mu2))); } /* density = mu1 + (mu2-mu1)*s; if (s <=0.5) density = mu1; else density = mu2; */ if ( (fp = fopen(filename, "w")) == (FILE *)NULL){ fprintf(stderr,"Error, can not open file \"tmpphmfile\"\n"); exit(2); } fprintf(fp, "rectangle 0 0 11.5 11.5 0 0\n"); fprintf(fp, "ellipse 0 0 11.4 11.4 0 1\n"); fprintf(fp, "ellipse 0 0 1.25 1.25 0 %f\n", density); fclose(fp); exit(0); } ctsim-6.0.2/mkinstalldirs0000744000175000017500000000672211300401174014452 0ustar kevinkevin#! /bin/sh # mkinstalldirs --- make directory hierarchy scriptversion=2009-04-28.21; # UTC # Original author: Noah Friedman # Created: 1993-05-16 # Public domain. # # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' IFS=" "" $nl" errstatus=0 dirmode= usage="\ Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... Create each directory DIR (with mode MODE, if specified), including all leading file name components. Report bugs to ." # process command line arguments while test $# -gt 0 ; do case $1 in -h | --help | --h*) # -h for help echo "$usage" exit $? ;; -m) # -m PERM arg shift test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } dirmode=$1 shift ;; --version) echo "$0 $scriptversion" exit $? ;; --) # stop option processing shift break ;; -*) # unknown option echo "$usage" 1>&2 exit 1 ;; *) # first non-opt arg break ;; esac done for file do if test -d "$file"; then shift else break fi done case $# in 0) exit 0 ;; esac # Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and # mkdir -p a/c at the same time, both will detect that a is missing, # one will create a, then the other will try to create a and die with # a "File exists" error. This is a problem when calling mkinstalldirs # from a parallel make. We use --version in the probe to restrict # ourselves to GNU mkdir, which is thread-safe. case $dirmode in '') if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then echo "mkdir -p -- $*" exec mkdir -p -- "$@" else # On NextStep and OpenStep, the `mkdir' command does not # recognize any option. It will interpret all options as # directories to create, and then abort because `.' already # exists. test -d ./-p && rmdir ./-p test -d ./--version && rmdir ./--version fi ;; *) if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && test ! -d ./--version; then echo "mkdir -m $dirmode -p -- $*" exec mkdir -m "$dirmode" -p -- "$@" else # Clean up after NextStep and OpenStep mkdir. for d in ./-m ./-p ./--version "./$dirmode"; do test -d $d && rmdir $d done fi ;; esac for file do case $file in /*) pathcomp=/ ;; *) pathcomp= ;; esac oIFS=$IFS IFS=/ set fnord $file shift IFS=$oIFS for d do test "x$d" = x && continue pathcomp=$pathcomp$d case $pathcomp in -*) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" mkdir "$pathcomp" || lasterr=$? if test ! -d "$pathcomp"; then errstatus=$lasterr else if test ! -z "$dirmode"; then echo "chmod $dirmode $pathcomp" lasterr= chmod "$dirmode" "$pathcomp" || lasterr=$? if test ! -z "$lasterr"; then errstatus=$lasterr fi fi fi fi pathcomp=$pathcomp/ done done exit $errstatus # 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: "UTC" # time-stamp-end: "; # UTC" # End: ctsim-6.0.2/Makefile.am0000644000175000017500000000125113254272674013717 0ustar kevinkevinif INCLUDED_GETOPT_LONG EXTRA_DIRS1=getopt else EXTRA_DIRS1= endif if HAVE_SGP EXTRA_DIRS2=libctgraphics else EXTRA_DIRS2= endif if HAVE_WXWINDOWS EXTRA_DIRS3=src else EXTRA_DIRS3= endif SUBDIRS=man libctsupport libctsim html cgi-bin include $(EXTRA_DIRS1) $(EXTRA_DIRS2) $(EXTRA_DIRS3) tools helical EXTRA_DIST=acsite.m4 make.bat msvc/ctsim.dsw msvc/ctsimtext/ctsimtext.dsp msvc/libctsim/libctsim.dsp msvc/ctsim/ctsim.dsp CLEANFILES=docs/html/\* config.log configure.in config.h stamp-h1 clean-local: rm -rf docs/html #install-data-hook: # test -d $(datadir) || mkdir -p $(datadir) && chmod 0755 $(datadir) # install -g root -o root -m 0644 docs/ctsim.htb $(datadir) ctsim-6.0.2/README.msvc0000644000175000017500000000101310667176710013505 0ustar kevinkevinGuidelines for using Microsoft Visual C++ to compile CTSim ---------------------------------------------------------- A MSVC v6 workspace is located at msvc/ctsim.dsw. It references several projects included in this CTSim distribution (table 1). It also references projects located outside of the distribution (table 2). Table 1 ------- Projects inside distribution msvc\libctsim\libctsim.dsp msvc\pjrec\pjrec.dsp Table 2 ------- Projects outside distribution ..\wx2 ..\fftw-2.1.3\ ..\fftw-2.1.3\ ..\zlib ..\lpng108\ctsim-6.0.2/config.sub0000744000175000017500000010242511235116500013627 0ustar kevinkevin#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 # Free Software Foundation, Inc. timestamp='2009-06-11' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # 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. # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nios | nios2 \ | ns16k | ns32k \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ | v850 | v850e \ | we32k \ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tic55x | c55x*) basic_machine=tic55x-unknown os=-coff ;; tic6x | c6x*) basic_machine=tic6x-unknown os=-coff ;; tile*) basic_machine=tile-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: ctsim-6.0.2/COPYING0000644000175000017500000004363610667176710012732 0ustar kevinkevinCTSim is covered by the GNU GPL stated below. Additionally, the Herman Phantom defined in libctsim/phantom.cpp is copyright by Gabor T. Herman, Ph.D. Dr. Herman has granted permission for use of the his phantom in CTSim and derivative software products. However, any print or web publication of his phantom requries his explicit approval. GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. ctsim-6.0.2/install-sh0000744000175000017500000003253711300401174013653 0ustar kevinkevin#!/bin/sh # install - install a program, script, or datafile scriptversion=2009-04-28.21; # 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. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # 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_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' 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 no_target_directory= 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 *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done 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 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 trap '(exit $?); exit' 1 2 13 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 starting with `-'. 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 # Protect names starting with `-'. case $dst in -*) dst=./$dst;; esac # 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 -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` 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-writeable 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 eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test -z "$d" && 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` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob 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: "UTC" # time-stamp-end: "; # UTC" # End: ctsim-6.0.2/libctsupport/0000755000175000017500000000000013254524615014411 5ustar kevinkevinctsim-6.0.2/libctsupport/Makefile.nt0000644000175000017500000000122710667176710016477 0ustar kevinkevin# Makefile for libk !include CC=cl LD=link CFLAGS=-O -nologo -I..\include -DENDIAN_HIGH=0 -DENDIAN_LOW=1 LDFLAGS= O=.obj # variables OBJ1 = kbasename$(O) allocnum$(O) fexist$(O) iclip$(O) sysalloc$(O) syserror$(O) sysfopen$(O) sysfree$(O) s_head$(O) s_lower$(O) s_rmtail$(O) s_save$(O) timedate$(O) netorder$(O) all: libk.lib .obj: .c $(CC) -c $(cvarsdll) $(CFLAGS) $*.c libk.lib: $(OBJ1) echo something to del > libk.lib del libk.lib lib /out:libk.lib $(OBJ1) clean: echo dummy > a.obj echo dummy > a.exe echo dummy > a.lib del *.obj del *.exe del *.lib ctsim-6.0.2/libctsupport/plotfile.cpp0000644000175000017500000002315211240454454016732 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: plotfile.cpp ** Purpose: plotfile class ** Programmer: Kevin Rosenberg ** Date Started: Dec 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "ct.h" #include /////////////////////////////////////////////////////////////////////////// // CLASS IMPLEMENTATION // // Name: PlotFile // Purpose: Plot File storage /////////////////////////////////////////////////////////////////////////// PlotFile::PlotFile (int nCurves, int nRecords) { initHeaders (); setCurveSize (nCurves, nRecords); } PlotFile::PlotFile () { initHeaders (); } PlotFile::~PlotFile () { } void PlotFile::initHeaders () { m_iNumColumns = 0; m_iNumRecords = 0; time_t currentTime = time (NULL); m_strDate = ctime (¤tTime); m_vecStrDescriptions.clear(); m_vecStrEzsetCommands.clear(); } void PlotFile::setCurveSize (int nCols, int nRecords, bool bScatterPlot) { m_iNumColumns = nCols; m_iNumRecords = nRecords; m_bScatterPlot = bScatterPlot; m_vecCurves.clear(); m_vecCurves.reserve (m_iNumColumns * m_iNumRecords); } // Storage format // a Column's records are stored sequentially. It begins at iCol * m_iNumRecords bool PlotFile::addColumn (int iCol, const double* const pdColData) { if (iCol < 0 || iCol >= m_iNumColumns) { sys_error (ERR_SEVERE, "Illegal column number %d [PlotFile::addColumn]", iCol); return (false); } for (int iRec = 0; iRec < m_iNumRecords; iRec++) { m_vecCurves[ iRec + (iCol * m_iNumRecords) ] = pdColData [iRec]; #if 0 sys_error (ERR_TRACE, "Storing m_vecCurves[%d] = %f", iRec + (iCol * m_iNumRecords), pdColData [iRec]); #endif } return true; } bool PlotFile::addColumn (int iCol, const float* const pdColData) { if (iCol < 0 || iCol >= m_iNumColumns) { sys_error (ERR_SEVERE, "Illegal column number %d [PlotFile::addColumn]", iCol); return (false); } for (int iRec = 0; iRec < m_iNumRecords; iRec++) m_vecCurves[ iRec + (iCol * m_iNumRecords) ] = pdColData [iRec]; return true; } void PlotFile::getColumn (int iCol, double* pdColData) const { if (iCol < 0 || iCol >= m_iNumColumns) { sys_error (ERR_SEVERE, "Illegal column number %d [PlotFile::addColumn]", iCol); return; } for (int iRec = 0; iRec < m_iNumRecords; iRec++) pdColData[iRec] = m_vecCurves[ iRec + (iCol * m_iNumRecords) ]; } bool PlotFile::getMinMax (int iStartingCol, double& dMin, double& dMax) const { if (iStartingCol >= m_iNumColumns) { sys_error (ERR_WARNING, "iStartingCol >= iNumColumns"); return false; } int iOffset = iStartingCol * m_iNumRecords; dMin = m_vecCurves[ 0 + iOffset ]; dMax = dMin; for (int iCol = iStartingCol; iCol < m_iNumColumns; iCol++) { int iOffset = iCol * m_iNumRecords; for (int iRec = 0; iRec < m_iNumRecords; iRec++) { double dVal = m_vecCurves[ iRec + iOffset ]; if (dVal < dMin) dMin = dVal; else if (dVal > dMax) dMax = dVal; } } // sys_error (ERR_TRACE, "dMin=%f, dMax=%f", dMin, dMax); return true; } bool PlotFile::statistics (int iStartingCol, double& min, double& max, double& mean, double& mode, double& median, double &stddev) const { if (iStartingCol >= m_iNumColumns) { sys_error (ERR_WARNING, "iStartingCol >= iNumColumns"); return false; } int iNPoints = (m_iNumColumns - iStartingCol) * m_iNumRecords; std::vector vec; vec.resize (iNPoints); int iVec = 0; for (int iCol = iStartingCol; iCol < m_iNumColumns; iCol++) { int iOffset = iCol * m_iNumRecords; for (int iRec = 0; iRec < m_iNumRecords; iRec++) vec[iVec++] = m_vecCurves[ iRec + iOffset ]; } vectorNumericStatistics (vec, iNPoints, min, max, mean, mode, median, stddev); return true; } bool PlotFile::fileWrite (const char* const filename) { m_strFilename = filename; fstream fs (m_strFilename.c_str(), std::ios::out | std::ios::trunc); if (fs.fail()) { sys_error (ERR_WARNING, "Error opening file %s for writing [fileCreate]", m_strFilename.c_str()); return false; } if (! headerWrite(fs) || ! columnsWrite (fs)) return false; return true; } bool PlotFile::fileRead (const char* const filename) { m_strFilename = filename; #ifdef MSVC fstream fs (m_strFilename.c_str(), std::ios::in); #else fstream fs (m_strFilename.c_str(), std::ios::in); // | std::ios::nocreate); #endif if (fs.fail()) { sys_error (ERR_WARNING, "Unable to open file %s [fileRead]", m_strFilename.c_str()); return false; } if (! headerRead(fs)) return false; setCurveSize (m_iNumColumns, m_iNumRecords); if (! columnsRead(fs)) return false;; return true; } bool PlotFile::headerRead (std::iostream& fs) { if (! fs) { sys_error (ERR_WARNING, "Tried to read header with file closed [headerRead]"); return false; } initHeaders(); fs.seekg (0); bool bFinishedHeaders = false; fs >> m_iNumColumns; fs >> m_iNumRecords; if (fs.fail() || m_iNumColumns == 0 || m_iNumRecords == 0) return false; while (! bFinishedHeaders && ! fs.eof() && ! fs.fail()) { char line[1024]; fs.getline (line, sizeof(line)); int iSP = 0; while (line[iSP] == ' ') iSP++; if (line[iSP] == '\n' || ! line[iSP]) ; else if (line[iSP] == '#') { iSP++; while (line[iSP] == ' ') iSP++; if (line[iSP] == '\n' || ! line[iSP]) ; else addDescription (&line[iSP]); } else if (strstr (&line[iSP], "") != NULL) { bFinishedHeaders = true; } else addEzsetCommand (&line[iSP]); } return ! fs.fail(); } bool PlotFile::headerWrite (std::iostream& fs) { if (! fs) { sys_error (ERR_WARNING, "Tried to write header with ! fs"); return false; } fs.seekp (0); fs << m_iNumColumns << " " << m_iNumRecords << "\n"; unsigned int i; for (i = 0; i < m_vecStrEzsetCommands.size(); i++) fs << m_vecStrEzsetCommands[i] << "\n"; for (i = 0; i < m_vecStrDescriptions.size(); i++) fs << "# " << m_vecStrDescriptions[i] << "\n"; if (! m_strDate.empty()) fs << "# Date: " << m_strDate << "\n"; return ! fs.fail(); } bool PlotFile::columnsWrite (std::iostream& fs) { if (! fs) { sys_error (ERR_WARNING, "Tried to columnWrite with !fs"); return false; } fs << "\n"; int iStride = m_iNumRecords; for (int iRec = 0; iRec < m_iNumRecords; iRec++) { for (int iCol = 0; iCol < m_iNumColumns; iCol++) fs << m_vecCurves [iRec + (iCol * iStride)] << " "; fs << "\n"; } fs << "\n"; fs << "
\n"; return ! fs.fail(); } bool PlotFile::columnsRead (std::iostream& fs) { if (! fs) { sys_error (ERR_WARNING, "Tried to arrayDataRead with ! fs"); return false; } if (m_iNumColumns == 0 || m_iNumRecords == 0) { sys_error (ERR_WARNING, "Called PlotFile::columnsRead with 0 columns or records"); return false; } bool bTerminateEarly = false; for (int iRec = 0; iRec < m_iNumRecords; iRec++) { for (int iCol = 0; iCol < m_iNumColumns; iCol++) { if (fs.eof()) { bTerminateEarly = true; break; } if (fs.fail()) break; double d; fs >> d; m_vecCurves[ iRec + (iCol * m_iNumRecords) ] = d; } } return ! (bTerminateEarly || fs.fail()); } void PlotFile::printHeaders (std::ostream& os) const { os << "EZSet Commands\n"; for (unsigned int iEZ = 0; iEZ < m_vecStrEzsetCommands.size(); iEZ++) os << m_vecStrEzsetCommands[iEZ] << "\n"; os << "Descriptions\n"; for (unsigned int iDesc = 0; iDesc < m_vecStrDescriptions.size(); iDesc++) os << m_vecStrDescriptions[iDesc] << "\n"; } void PlotFile::printHeaders (std::ostringstream& os) const { os << "EZSet Commands\n"; for (unsigned int iEZ = 0; iEZ < m_vecStrEzsetCommands.size(); iEZ++) os << m_vecStrEzsetCommands[iEZ] << "\n"; os << "Descriptions\n"; for (unsigned int iDesc = 0; iDesc < m_vecStrDescriptions.size(); iDesc++) os << m_vecStrDescriptions[iDesc] << "\n"; } void PlotFile::printHeadersBrief (std::ostream& os) const { os << "EZSet Commands\n"; for (unsigned int iEZ = 0; iEZ < m_vecStrEzsetCommands.size(); iEZ++) os << m_vecStrEzsetCommands[iEZ] << "; "; if (m_vecStrEzsetCommands.size() > 0) os << "\n"; os << "Descriptions\n"; for (unsigned int iDesc = 0; iDesc < m_vecStrDescriptions.size(); iDesc++) os << m_vecStrDescriptions[iDesc] << "\n"; } void PlotFile::printHeadersBrief (std::ostringstream& os) const { os << "EZSet Commands\n"; for (unsigned int iEZ = 0; iEZ < m_vecStrEzsetCommands.size(); iEZ++) os << m_vecStrEzsetCommands[iEZ] << "; "; if (m_vecStrEzsetCommands.size() > 0) os << "\n"; os << "Descriptions\n"; for (unsigned int iDesc = 0; iDesc < m_vecStrDescriptions.size(); iDesc++) os << m_vecStrDescriptions[iDesc] << "\n"; } ctsim-6.0.2/libctsupport/strfuncs.cpp0000644000175000017500000000735711240454454016774 0ustar kevinkevin/***************************************************************************** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include #include "ctsupport.h" /* NAME * str_skip_head Skip leading characters of string * * SYNOPSIS * shortened = str_skip_head (str, charlist) * OUT shortened Start of shortened string * IN char *str String to have beginning skipped * IN char *charlist List of characters to skip over * * NOTES * This routine returns the position in a string (str) of the * first character that is not in an specified string of characters * (charlist). */ char* str_skip_head (const char* str, const char* const charlist) { const char* p = str; while (*p && (strchr (charlist, *p) != NULL)) p++; return (const_cast(p)); } char* str_skip_head (const char* str, char* charlist) { const char* p = str; while (*p && (strchr (charlist, *p) != NULL)) p++; return (const_cast(p)); } /* NAME * str_lower Convert a string to lower case * * SYNOPSIS * str = str_lower (str) * char *str String to be converted */ char * str_lower (char *s) { char *p = s; while (*p) { /* while (*p != EOS) */ *p = tolower(*p); ++p; } return (s); } /* NAME * str_rm_tail Remove characters from end of string * * SYNOPSIS * str = str_rm_tail (str, charlist) * char *str String to have end removed k * char *charlist List of characters to remove from string * */ char * str_rm_tail (char *str, const char* const charlist) { int i; for (i = strlen(str) - 1; i >= 0; i--) if (strchr (charlist, str[i]) != NULL) str[i] = EOS; else break; /* found non-specified char, all done */ return (str); } /* NAME * str_wrm_tail Remove white space from end of string * * SYNOPSIS * str = str_wrm_tail (str) * char *str String to have white space removed * */ char * str_wrm_tail (char *str) { return (str_rm_tail(str, "\b\t\n\r")); } /* NAME * str_upper Convert a string to upper case * * SYNOPSIS * str = str_upper (str) * char *str String to be converted */ char * str_upper (char *s) { char *p = s; while (*p) { /* while (*s != EOS) */ *p = toupper(*p); p++; } return (s); } #ifdef TEST int main (void) { string str, clist; char *skip; printf ("Test program for str_skip_head\n"); printf ("\n"); printf ("Enter string that will have its head skipped -- "); gets (str); printf ("Enter list of characters to be skipped -- "); gets (clist); printf ("\n"); skip = str_skip_head (str, clist); printf ("Shortened string = '%s'\n", skip); } #endif ctsim-6.0.2/libctsupport/interpolator.cpp0000644000175000017500000000726611240454454017646 0ustar kevinkevin/***************************************************************************** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "ctsupport.h" #include "interpolator.h" CubicPolyInterpolator::CubicPolyInterpolator (const double* const y, const int n) : m_pdY(y), m_n(n) { if (m_n < 2) sys_error (ERR_SEVERE, "Too few points (%d) in CubicPolyInterpolator", m_n); } CubicPolyInterpolator::~CubicPolyInterpolator () { } double CubicPolyInterpolator::interpolate (double x) { int lo = static_cast(floor(x)) - 1; int hi = lo + 3; if (lo < -1) { #ifdef DEBUG sys_error (ERR_WARNING, "x=%f, out of range [CubicPolyInterpolator]", x); #endif return (0); } else if (lo == -1) // linear interpolate at between x = 0 & 1 return m_pdY[0] + x * (m_pdY[1] - m_pdY[0]); if (hi > m_n) { #ifdef DEBUG sys_error (ERR_WARNING, "x=%f, out of range [CubicPolyInterpolator]", x); #endif return (0); } else if (hi == m_n) {// linear interpolate between x = (n-2) and (n-1) double frac = x - (lo + 1); return m_pdY[m_n - 2] + frac * (m_pdY[m_n - 1] - m_pdY[m_n - 2]); } // Lagrange formula for N=4 (cubic) double xd_0 = x - lo; double xd_1 = x - (lo + 1); double xd_2 = x - (lo + 2); double xd_3 = x - (lo + 3); static double oneSixth = (1. / 6.); double y = xd_1 * xd_2 * xd_3 * -oneSixth * m_pdY[lo]; y += xd_0 * xd_2 * xd_3 * 0.5 * m_pdY[lo+1]; y += xd_0 * xd_1 * xd_3 * -0.5 * m_pdY[lo+2]; y += xd_0 * xd_1 * xd_2 * oneSixth * m_pdY[lo+3]; return (y); } CubicSplineInterpolator::CubicSplineInterpolator (const double* const y, const int n) : m_pdY(y), m_n(n) { // Precalculate 2nd derivative of y and put in m_pdY2 // Calculated by solving set of simultaneous CubicSpline spline equations // Only n-2 CubicSpline spline equations, but able to make two more // equations by setting second derivative to 0 at ends m_pdY2 = new double [n]; m_pdY2[0] = 0; // second deriviative = 0 at beginning and end m_pdY2[n-1] = 0; double* temp = new double [n - 1]; temp[0] = 0; int i; for (i = 1; i < n - 1; i++) { double t = 2 + (0.5 * m_pdY2[i-1]); temp[i] = y[i+1] + y[i-1] - y[i] - y[i]; temp[i] = (3 * temp[i] - 0.5 * temp[i-1]) / t; m_pdY2[i] = -0.5 / t; } for (i = n - 2; i >= 0; i--) m_pdY2[i] = temp[i] + m_pdY2[i] * m_pdY2[i + 1]; delete temp; } CubicSplineInterpolator::~CubicSplineInterpolator () { delete m_pdY2; } double CubicSplineInterpolator::interpolate (double x) { const static double oneSixth = (1. / 6.); int lo = static_cast(floor(x)); int hi = lo + 1; if (lo < 0 || hi >= m_n) { #ifdef DEBUG sys_error (ERR_SEVERE, "x out of bounds [CubicSplineInterpolator::interpolate]"); #endif return (0); } double loFr = hi - x; double hiFr = 1 - loFr; double y = loFr * m_pdY[lo] + hiFr * m_pdY[hi]; y += oneSixth * ((loFr*loFr*loFr - loFr) * m_pdY2[lo] + (hiFr*hiFr*hiFr - hiFr) * m_pdY2[hi]); return y; } ctsim-6.0.2/libctsupport/Makefile.am0000644000175000017500000000040713254256175016451 0ustar kevinkevinnoinst_LIBRARIES = libctsupport.a AM_CPPFLAGS=@my_includes@ EXTRA_DIST=Makefile.nt libctsupport_a_SOURCES= strfuncs.cpp syserror.cpp fnetorderstream.cpp consoleio.cpp mathfuncs.cpp xform.cpp clip.cpp plotfile.cpp hashtable.cpp interpolator.cpp globalvars.cpp ctsim-6.0.2/libctsupport/hashtable.cpp0000644000175000017500000000672311240454454017054 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Hash Table Class ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "ct.h" #include #include #include #include "ctsupport.h" #include "pol.h" KeywordCodeEntry::KeywordCodeEntry (const char* const pszKeyword, int iCode) : m_iCode (iCode), m_pNext(NULL) { int nLength = strlen (pszKeyword); char* pszCopy = new char [ nLength + 1]; for (int i = 0; i < nLength; i++) pszCopy[i] = tolower (pszKeyword[i]); pszCopy[nLength] = 0; m_strKeyword = pszCopy; delete pszCopy; } bool KeywordCodeEntry::matchesKeyword (const char* const pszCompare) const { int nLength = strlen (pszCompare); char* pszCopy = new char [ nLength + 1]; for (int i = 0; i < nLength; i++) pszCopy[i] = tolower (pszCompare[i]); pszCopy[nLength] = 0; bool bMatch = false; if (m_strKeyword.compare (pszCompare) == 0) bMatch = true; delete pszCopy; return bMatch; } // inittable (table) // clear symbol table void KeywordCodeHashTable::initTable () { int i; for (i = 0; i < HASHSIZE; i++) m_hashTable[i] = NULL; } // freetable (table) // free all memory allocated to table, then clear table void KeywordCodeHashTable::freeTable () { int i; KeywordCodeEntry *p, *np; for (i = 0; i < HASHSIZE; i++) { np = m_hashTable [i]; while (np != NULL) { p = np->getNext(); delete np; np = p; } } initTable (); } // form hash value of string s int KeywordCodeHashTable::hash (const char* s) { int hashval = 0; while (*s != EOS) { hashval += tolower(*s); s++; } return (hashval % HASHSIZE); } /* Look for s in hash table */ KeywordCodeEntry * KeywordCodeHashTable::lookup (const char* const pszLookup) { KeywordCodeEntry *found = NULL; for (KeywordCodeEntry* np = m_hashTable[ hash( pszLookup ) ]; np != NULL; np = np->getNext()) if (np->matchesKeyword (pszLookup)) { found = np; // found it break; } return (found); } void KeywordCodeHashTable::installKeywordCode (const char* const pszKeyword, int iCode) { KeywordCodeEntry *np = lookup (pszKeyword); if (np == NULL) { // not found np = new KeywordCodeEntry (pszKeyword, iCode); int hashval = hash (np->getKeyword()); np->setNext (m_hashTable[ hashval ]); m_hashTable[hashval] = np; } else // already defined np->setCode (iCode); } ctsim-6.0.2/libctsupport/syserror.cpp0000644000175000017500000001203111240454454016776 0ustar kevinkevin/***************************************************************************** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include #include #include #include #include #include #include "ct.h" #ifdef HAVE_WXWINDOWS #include "../src/ctsim.h" #include #endif /* NAME * sys_error System error handler * * SYNOPSIS * sys_error (severity, msg, args . . .) * int severity Severity of error * char *msg Error message * args Argument list, direct transfer to printf stack */ static int s_reportErrorLevel = ERR_TRACE; // Set error reporting level void sys_error (int severity, const char *msg, ...) { va_list arg; va_start(arg, msg); std::string strOutput; sys_verror (strOutput, severity, msg, arg); #ifdef HAVE_WXWINDOWS if (g_bRunningWXWindows) { if (theApp) { wxCommandEvent eventLog (wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT ); wxString msg (wxConvCurrent->cMB2WX(strOutput.c_str())); if (msg.length() > 0) { msg += wxChar('\n'); eventLog.SetString( msg ); wxPostEvent( theApp->getMainFrame(), eventLog ); // send log event, thread safe } } else { wxMutexGuiEnter(); wxLog::OnLog (wxLOG_Message, wxConvCurrent->cMB2WX(strOutput.c_str()), time(NULL)); wxMutexGuiLeave(); } } else std::cout << strOutput << "\n"; #else std::cout << strOutput << "\n"; #endif va_end(arg); } static unsigned long s_nErrorCount = 0; unsigned long int g_lSysErrorMaxCount = 2000; void sys_verror (std::string& strOutput, int severity, const char *msg, va_list arg) { if (severity < s_reportErrorLevel) return; // ignore error if less than reporting level std::ostringstream os; if (severity > ERR_TRACE) s_nErrorCount++; if (severity != ERR_FATAL) { if (s_nErrorCount > g_lSysErrorMaxCount) return; else if (s_nErrorCount == g_lSysErrorMaxCount) { os << "*****************************************************************\n"; os << "*** M A X I M U M E R R O R C O U N T R E A C H E D ***\n"; os << "*** ***\n"; os << "*** No further errors will be reported ***\n"; os << "*****************************************************************\n"; strOutput = os.str(); return; } } switch (severity) { case ERR_FATAL: os << "FATAL ERROR: "; break; case ERR_SEVERE: os << "SEVERE ERROR: "; break; case ERR_WARNING: os << "WARNING ERROR: "; break; case ERR_TRACE: os << "Trace: "; break; default: os << "Illegal error severity #" << severity << ": "; } char errStr[2000]; #if HAVE_VSNPRINTF vsnprintf (errStr, sizeof(errStr), msg, arg); #elif HAVE_VSPRINTF vsprintf (errStr, msg, arg); #else strncpy (errStr, sizeof(errStr), "Error message not available on this platform."); #endif os << errStr; strOutput = os.str(); if (severity == ERR_FATAL) { std::cerr << strOutput << "\n"; throw std::runtime_error (strOutput); } #if INTERACTIVE_ERROR_DISPLAY std::cout << "A - Abort C - Continue W - Turn off warnings? "; // fflush(stderr); do { int c = cio_kb_waitc("AaBbCcWw", TRUE); /* get code from keyboard */ c = tolower (c); fputc (c, stderr); fputc (NEWLINE, stderr); if (c == 'a') exit (1); else if (c == 'c') return; else if (c == 'w') { sys_error_level (ERR_SEVERE); /* report severe & fatal errors */ break; } } while (TRUE); #endif } /* NAME * sys_error_level Set error reporting level * * SYNOPSIS * sys_error_level (severity) * int severity Report all error as serious as severity and beyond * * DESCRIPTION * Causes the system to ignore all error below the level of severity * For example, if severity == ERR_SEVERE, then report severe & fatal * error and ignore warnings */ void sys_error_level (int severity) { if (severity == ERR_FATAL || severity == ERR_SEVERE || severity == ERR_WARNING || severity == ERR_TRACE) s_reportErrorLevel = severity; else s_reportErrorLevel = ERR_WARNING; } ctsim-6.0.2/libctsupport/clip.cpp0000644000175000017500000002470411240454454016047 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: clip.c ** Purpose: Line clipping routines ** Programmer: Kevin Rosenberg ** Date Started: 1984 ** ** OVERVIEW ** Routines to clip lines against objects ** All routines get the endpoints of the line, and ** the SNARK size of the object (u,v) ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "ctsupport.h" /* NAME * clip_segment Clip against a segment of a circle * * SYNOPSIS * clip_segment (x1, y1, x2, y2, u, v) * double& x1,*y1,*x2,*y2 Endpoints of line * double u,v Dimensions of segment */ bool clip_segment (double& x1, double& y1, double& x2, double& y2, const double u, const double v) { double xc1 = x1 * u; double yc1 = y1 * v; double xc2 = x2 * u; double yc2 = y2 * v; if (yc1 > 0. && yc2 > 0.) // reject lines above y-axis return false; double radius = sqrt (u * u + v * v); if (clip_circle (xc1, yc1, xc2, yc2, 0.0, v, radius, 0.0, 0.0) == false) return false; if (yc1 > 0. && yc2 > 0.) // trivial reject above y-axis return false; // clip above x-axis if (yc1 > 0.) { xc1 = xc1 + (xc2-xc1)*(0.0-yc1)/(yc2-yc1); yc1 = 0.0; } else if (yc2 > 0.) { xc2 = xc1 + (xc2-xc1)*(0.0-yc1)/(yc2-yc1); yc2 = 0.0; } x1 = xc1 / u; y1 = yc1 / v; x2 = xc2 / u; y2 = yc2 / v; return true; } /* NAME * clip_sector Clip a line against a sector of a circle * * SYNOPSIS * clip_sector (x1, y1, x2, y2, u, v) * double& x1,*y1,*x2,*y2 Endpoints of line * double u,v Size of sector */ bool clip_sector (double& x1, double& y1, double& x2, double& y2, const double u, const double v) { double xc1 = x1 * u; double yc1 = y1 * v; double xc2 = x2 * u; double yc2 = y2 * v; double radius = sqrt (u * u + v * v); if (clip_circle (xc1, yc1, xc2, yc2, 0.0, v, radius, 0.0, 0.0) == false) return false; if (clip_triangle (xc1, yc1, xc2, yc2, u, v, false) == false) return false; x1 = xc1 / u; y1 = yc1 / v; x2 = xc2 / u; y2 = yc2 / v; return true; } /* NAME * clip_circle Clip a line against a circle * * SYNOPSIS * clip_circle (x1,y1,x2,y2,cx,cy,radius,t1,t2) * double& x1,*y1,*x2,*y2 Endpoints of line to be clipped * double cx,cy Center of circle * double radius Radius of circle * double t1,t2 Starting & stopping angles of clipping */ bool clip_circle (double& x1, double& y1, double& x2, double& y2, const double cx, const double cy, const double radius, double t1, double t2) { double xc1 = x1; double yc1 = y1; double xc2 = x2; double yc2 = y2; double ccx = cx; double ccy = cy; double xtrans = -xc1; // move (x1,y1) to origin double ytrans = -yc1; xc1 += xtrans; yc1 += ytrans; xc2 += xtrans; yc2 += ytrans; ccx += xtrans; ccy += ytrans; double theta = -atan2 (yc2, xc2); // rotate line to lie on x-axis GRFMTX_2D rotmtx; rot_mtx2 (rotmtx, theta); // xc1,yc1 is at origin, no need to rot xform_mtx2 (rotmtx, xc2, yc2); xform_mtx2 (rotmtx, ccx, ccy); t1 += theta; // rotate start and stop angles t2 += theta; t1 = normalizeAngle (t1); t2 = normalizeAngle (t2); if (xc2 < -D_EPSILON || fabs(yc2) > F_EPSILON) { sys_error (ERR_SEVERE, "Internal error in clip_circle\n x1=%6.2f, y1=%6.2f, x2=%6.2f, y2=%6.2f, xc2=%6.2f, yc2=%6.2f, theta=%6.2f", x1, y1, x2, y2, xc2, yc2, theta); return false; } if (fabs(ccy) > radius) /* check if can reject */ return false; double temp = sqrt (radius * radius - ccy * ccy); double xcmin = ccx - temp; double xcmax = ccx + temp; if (fabs(t2 - t1) < D_EPSILON) { if (xc1 < xcmin) xc1 = xcmin; if (xc2 > xcmax) xc2 = xcmax; } else if (t1 < t2) { if (t1 < PI && t2 > PI) if (xc1 < xcmin) xc1 = xcmin; } else if (t1 > t2) { if (t1 < PI) if (xc1 < xcmin) xc1 = xcmin; if (xc2 > xcmax) xc2 = xcmax; } rot_mtx2 (rotmtx, -theta); xform_mtx2 (rotmtx, xc1, yc1); xform_mtx2 (rotmtx, xc2, yc2); xc1 += -xtrans; yc1 += -ytrans; xc2 += -xtrans; yc2 += -ytrans; x1 = xc1; y1 = yc1; x2 = xc2; y2 = yc2; return true; } /* NAME * clip_triangle Clip a line against a triangle * * SYNOPSIS * clip_triangle (x1, y1, x2, y2, u, v, clip_xaxis) * double& x1, *y1, *x2, *y2 Endpoints of line * double u, v Size of 1/2 base len & height * int clip_xaxis Boolean flag whether to clip against x axis * (Use true for all triangles) * (false if used internally by sector clipping routine) * * DESCRIPTION * x * /|\ Note that vertices of triangle are * / | \ (-u, 0) * / | \ (u, 0) * / | \ (0, v) * / | v \ * / | \ * +------+------+ * (0,0) u * * NOTES * 1) Inside of this routine, values of (u,v) are assumed to be (1,1) * * 2) Derivation of clipping equations: * Using parametric equations for the line * xv = x1 + t * (x2 - x1) * yv = y1 + t * (y2 - y1) * so, * t = (xv - x1) / (x2 - x1) * yv = y1 + (xv - x1) * (y2 - y1) / (x2 - x1) * yv = y1 + (xv - x1) * dy / dx * * Now, find the intersections with the following clipping boundries: * yv = v - (v/u) * xv (yv = mx + b) * yv = v + (v/u) * xv (m = v/u, b = v); */ static int tcode (const double x, const double y, const double m, const double b, const int clip_xaxis); bool clip_triangle (double& x1, double& y1, double& x2, double& y2, const double u, const double v, const int clip_xaxis) { double m = v / u; // slope of triangle lines double b = v; // y-intercept of triangle lines int c1 = tcode (x1, y1, m, b, clip_xaxis); int c2 = tcode (x2, y2, m, b, clip_xaxis); #if 0 printf ("x1:%6.2f y1:%6.2f code1:%2d x2:%6.2f y2:%6.2f code2:%2d\n", x1, y1, c1, x2, y2, c2); #endif while ( c1 || c2 ) { if ( c1 & c2 ) { return false; // trivial reject } int c = c1; if (c1 == 0) c = c2; double x = 0, y = 0; if (c & 1) { // below x = x1 + (x2-x1)*(0.0-y1)/(y2-y1); y = 0.0; } else if (c & 2) { // right double dx, dy; dx = x2 - x1; dy = y2 - y1; if (fabs(dx) > D_EPSILON) x = (-y1 + b + x1 * dy/dx) / (m + dy/dx); else x = x1; y = -m * x + b; } else if (c & 4) { /* left */ double dx, dy; dx = x2 - x1; dy = y2 - y1; if (fabs(dx) > D_EPSILON) { x = (y1 - b - x1 * dy/dx); x /= (m - dy/dx); } else x = x1; y = m * x + b; } if (c == c1) { x1=x; y1=y; c1=tcode (x1,y1,m,b,clip_xaxis); } else { x2=x; y2=y; c2=tcode (x2,y2,m,b,clip_xaxis); } #if 0 printf ("x1:%6.2f y1:%6.2f code1:%2d x2:%6.2f y2:%6.2f code2:%2d\n", x1, y1, c1, x2, y2, c2); #endif } return true; /* we have clipped the line, and it is good */ } /* compute region code */ static int tcode (const double x, const double y, const double m, const double b, const int clip_xaxis) { int c = 0; if (clip_xaxis && y < 0.) // below triange c = 1; if (y > -m * x + b + D_EPSILON) // right of triangle c += 2; if (y > m * x + b + D_EPSILON) // left of triangle c += 4; return (c); } /* NAME * clip_rect Clip a line against a rectangle * * SYNOPSIS * clip_rect (x1, y1, x2, y2, rect) * double& x1, *y1, *x2, *y2 Endpoints of line * double rect[4] Rectangle to clip against * ordered xmin, ymin, xmax, ymax */ static int rectcode (double x, double y, const double rect[4]); bool clip_rect (double& x1, double& y1, double& x2, double& y2, const double rect[4]) { double x = 0, y = 0; int c1 = rectcode (x1, y1, rect); int c2 = rectcode (x2, y2, rect); while (c1 || c2) { if (c1 & c2) return false; // trivial reject int c = c1; if (c1 == 0) c = c2; if (c & 1) { // left y = y1 + (y2-y1)*(rect[0]-x1)/(x2-x1); x = rect[0]; } else if (c & 2) { // right y = y1 + (y2-y1)*(rect[2]-x1)/(x2-x1); x = rect[2]; } else if (c & 4) { // bottom x = x1 + (x2-x1)*(rect[1]-y1)/(y2-y1); y = rect[1]; } else if (c & 8) { // top x = x1 + (x2-x1)*(rect[3]-y1)/(y2-y1); y = rect[3]; } if (c == c1) { x1=x; y1=y; c1=rectcode(x1,y1,rect); } else { x2=x; y2=y; c2=rectcode(x2,y2,rect); } } return true; // we have clipped the line, and it is good } /* NAME * rectcode INTERNAL routine to return position of * point relative to a rectangle * * SYNOPSIS * c = rectcode (x, y, rect) * int c Position of point relative to the window * double x, y Point to test against window * double rect[4] Coordinates of rectangle extent * Ordered [xmin, ymin, xmax, ymax] */ static int rectcode (double x, double y, const double rect[4]) { int c = 0; if (x < rect[0]) c = 1; else if (x > rect[2]) c = 2; if (y < rect[1]) c += 4; else if (y > rect[3]) c += 8; return (c); } ctsim-6.0.2/libctsupport/Makefile.in0000644000175000017500000004361113254406203016453 0ustar kevinkevin# 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 = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = libctsupport ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/scripts/ax_check_compile_flag.m4 \ $(top_srcdir)/scripts/ax_ext.m4 \ $(top_srcdir)/scripts/ax_gcc_x86_avx_xgetbv.m4 \ $(top_srcdir)/scripts/ax_gcc_x86_cpuid.m4 \ $(top_srcdir)/scripts/ax_openmp.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LIBRARIES = $(noinst_LIBRARIES) AR = ar ARFLAGS = cru AM_V_AR = $(am__v_AR_@AM_V@) am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) am__v_AR_0 = @echo " AR " $@; am__v_AR_1 = libctsupport_a_AR = $(AR) $(ARFLAGS) libctsupport_a_LIBADD = am_libctsupport_a_OBJECTS = strfuncs.$(OBJEXT) syserror.$(OBJEXT) \ fnetorderstream.$(OBJEXT) consoleio.$(OBJEXT) \ mathfuncs.$(OBJEXT) xform.$(OBJEXT) clip.$(OBJEXT) \ plotfile.$(OBJEXT) hashtable.$(OBJEXT) interpolator.$(OBJEXT) \ globalvars.$(OBJEXT) libctsupport_a_OBJECTS = $(am_libctsupport_a_OBJECTS) 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@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/scripts/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 = SOURCES = $(libctsupport_a_SOURCES) DIST_SOURCES = $(libctsupport_a_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # 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 am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/scripts/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPUEXT_FLAGS = @CPUEXT_FLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ 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@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIMD_FLAGS = @SIMD_FLAGS@ STRIP = @STRIP@ VERSION = @VERSION@ XMKMF = @XMKMF@ X_BASIC_LIBS = @X_BASIC_LIBS@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ X_TOOLKIT_LIBS = @X_TOOLKIT_LIBS@ 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 = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ cgibindir = @cgibindir@ cgibinurl = @cgibinurl@ cgiprograms = @cgiprograms@ ctlibs = @ctlibs@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldata = @htmldata@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lamdefs = @lamdefs@ lamdir = @lamdir@ lamprograms = @lamprograms@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mpienable = @mpienable@ my_includes = @my_includes@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ webdatadir = @webdatadir@ webdataurl = @webdataurl@ webenabled = @webenabled@ wx_cppflags = @wx_cppflags@ wxcflags = @wxcflags@ wxconfig = @wxconfig@ wxlibs = @wxlibs@ noinst_LIBRARIES = libctsupport.a AM_CPPFLAGS = @my_includes@ EXTRA_DIST = Makefile.nt libctsupport_a_SOURCES = strfuncs.cpp syserror.cpp fnetorderstream.cpp consoleio.cpp mathfuncs.cpp xform.cpp clip.cpp plotfile.cpp hashtable.cpp interpolator.cpp globalvars.cpp all: all-am .SUFFIXES: .SUFFIXES: .cpp .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libctsupport/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu libctsupport/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) libctsupport.a: $(libctsupport_a_OBJECTS) $(libctsupport_a_DEPENDENCIES) $(EXTRA_libctsupport_a_DEPENDENCIES) $(AM_V_at)-rm -f libctsupport.a $(AM_V_AR)$(libctsupport_a_AR) libctsupport.a $(libctsupport_a_OBJECTS) $(libctsupport_a_LIBADD) $(AM_V_at)$(RANLIB) libctsupport.a mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clip.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/consoleio.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fnetorderstream.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/globalvars.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hashtable.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interpolator.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mathfuncs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plotfile.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strfuncs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/syserror.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xform.Po@am__quote@ .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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 $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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) '$<'` 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" 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 distdir: $(DISTFILES) @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 check-am: all-am check: check-am all-am: Makefile $(LIBRARIES) installdirs: 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: clean-generic: 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) 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-generic clean-noinstLIBRARIES mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(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: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstLIBRARIES cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ 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-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 tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile # 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: ctsim-6.0.2/libctsupport/globalvars.cpp0000644000175000017500000000227611240454454017254 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: globalvars.cpp ** Purpose: Global variables ** Programmer: Kevin Rosenberg ** Date Started: Jan 2001 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "ct.h" #ifdef HAVE_WXWINDOWS #include "../src/ctsim.h" bool g_bRunningWXWindows = false; CTSimApp* theApp = NULL; #endif ctsim-6.0.2/libctsupport/consoleio.cpp0000644000175000017500000001024411240454454017104 0ustar kevinkevin/***************************************************************************** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include #include #include "ctsupport.h" /* NAME * cio_put_c Put a character on screen * * SYNOPSIS * cio_put_c (c) * char c Character to write * * NOTES * Color of character is determined by the global variable, crtv.text_attr. * * SIDE EFFECTS * Cursor is advanced by one. If necessary, the cursor will wrap around * and maybe the screen will scroll */ void cio_put_c (int c) { fputc(c, stdout); } /* NAME * cio_put_cc Put a char on screen count times * * SYNOPSIS * cio_put_cc (c, count) * char c Character to write * int count Number of characters to write */ void cio_put_cc (int c, int count) { for (int i = 0; i < count; i++) cio_put_c (c); } void cio_put_str (const char *str) { fputs (str, stdout); } /* NAME * kb_getc Get a character from the keyboard * * SYNOPSIS * key = kb_getc() * * DESCRIPTION * 1. This routine returns an EXTENTED ASCII code, * the extended codes have a low byte of 0 and a distinctive * high byte, such as 0x2D00 and 0x3200 * 2. This routine waits until a key has been typed * 2. The keystroke will not be echoed. */ unsigned int cio_kb_getc(void) { return fgetc(stdin); } void cio_kb_ungetc (unsigned int c) { ungetc(c, stdin); } /* NAME * kb_gets Get a string from the keyboard * * SYNOPSIS * str = kb_gets (str, maxlen) * char *str Space to store input string * int maxlen Maximum number of characters to read * (Not including EOS) * NOTES * Backspace - erases character to the right * Escape - erases to beginning of line * Return - ends string (no not cause a linefeed) */ char * cio_kb_gets (char *str, int maxlen) { return fgets(str, maxlen, stdin); } /* NAME * kb_waitc Wait for a character from the keyboard * * SYNOPSIS * key = kb_waitc (astr, estr, beep) * int key Keystroke entered * char *astr String of valid ascii characters * bool beep If TRUE, beep when user hits invalid key * */ unsigned int cio_kb_waitc (const char *astr, int beep_on_error) { unsigned int c; do { c = cio_kb_getc (); if (strchr (astr, c) != NULL) break; if (beep_on_error) cio_beep(); } while (1); return (c); } /* NAME * beep sound a beep to user * * SYNOPSIS * beep() */ void cio_beep (void) { cio_tone (2000.0, 0.3); } /* NAME * tone play a frequency sound for some duration * * SYNOPSIS * tone (freq, length) * double freq frequency to play in Hertz * double length duration to play note in seconds */ void cio_tone (double freq, double length) { #if 1 fprintf(stdout, "\007"); #else cio_spkr_freq (freq); /* Set frequency of tone */ cio_spkr_on (); /* Turn on speaker */ pause (length); /* Pause for length seconds */ cio_spkr_off (); /* Turn off speaker */ #endif } ctsim-6.0.2/libctsupport/mathfuncs.cpp0000644000175000017500000000704311240454454017105 0ustar kevinkevin/***************************************************************************** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "ctsupport.h" /* NAME * integrateSimpson Integrate array of data by Simpson's rule * * SYNOPSIS * double integrateSimpson (xmin, xmax, y, np) * double xmin, xmax Extent of integration * double y[] Function values to be integrated * int np number of data points * (must be an odd number and at least 3) * * RETURNS * integrand of function */ double integrateSimpson (const double xmin, const double xmax, const double *y, const int np) { if (np < 2) return (0.); else if (np == 2) return ((xmax - xmin) * (y[0] + y[1]) / 2); double area = 0; int nDiv = (np - 1) / 2; // number of divisions double width = (xmax - xmin) / (double) (np - 1); // width of cells for (int i = 1; i <= nDiv; i++) { int xr = 2 * i; int xl = xr - 2; // 2 * (i - 1) == 2 * i - 2 == xr - 2 int xm = xr - 1; // (xl+xr)/2 == (xr+xr-2)/2 == (2*xr-2)/2 = xr-1 area += (width / 3.0) * (y[xl] + 4.0 * y[xm] + y[xr]); } if ((np & 1) == 0) /* do last trapazoid */ area += width * (y[np-2] + y[np-1]) / 2; return (area); } /* NAME * normalizeAngle Normalize angle to 0 to 2 * PI range * * SYNOPSIS * t = normalizeAngle (theta) * double t Normalized angle * double theta Input angle */ double normalizeAngle (double theta) { while (theta < 0.) theta += TWOPI; while (theta >= TWOPI) theta -= TWOPI; return (theta); } void vectorNumericStatistics (std::vector vec, const int nPoints, double& min, double& max, double& mean, double& mode, double& median, double& stddev) { if (nPoints <= 0) return; mean = 0; min = vec[0]; max = vec[0]; int i; for (i = 0; i < nPoints; i++) { double v = vec[i]; if (v > max) max = v; if (v < min) min = v; mean += v; } mean /= nPoints; static const int nbin = 1024; int hist[ nbin ] = {0}; double spread = max - min; mode = 0; stddev = 0; for (i = 0; i < nPoints; i++) { double v = vec[i]; int b = static_cast((((v - min) / spread) * (nbin - 1)) + 0.5); hist[b]++; double diff = (v - mean); stddev += diff * diff; } stddev = sqrt (stddev / nPoints); int max_binindex = 0; int max_bin = -1; for (int ibin = 0; ibin < nbin; ibin++) { if (hist[ibin] > max_bin) { max_bin = hist[ibin]; max_binindex = ibin; } } mode = (max_binindex * spread / (nbin - 1)) + min; std::sort(vec.begin(), vec.end()); if (nPoints % 2) // Odd median = vec[((nPoints - 1) / 2)]; else // Even median = (vec[ (nPoints / 2) - 1 ] + vec[ nPoints / 2 ]) / 2; } ctsim-6.0.2/libctsupport/xform.cpp0000644000175000017500000000721413254360476016257 0ustar kevinkevin/***************************************************************************** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "ctsupport.h" /* NAME * rotate2d Rotates an array of 2 dimensional vectors * * SYNOPSIS * rotate2d (x, y, n, angle) * double x[], y[] Array of points * int n Number of points in array * double angle Rotation angle (counter-clockwise) */ void rotate2d (double x[], double y[], int n, double angle) { double cos_theta = cos (angle); double sin_theta = sin (angle); for (int i = 0; i < n; i++) { double xrot = x[i] * cos_theta - y[i] * sin_theta; double yrot = x[i] * sin_theta + y[i] * cos_theta; x[i] = xrot; y[i] = yrot; } } /* NAME * xlat2d Translates an array of 2 dimensional vectors * * SYNOPSIS * xlat2d (x, y, n, xoffset, yoffset) * double x[], y[] Array of points * int n Number of points in array * double xoffset, yoffset Offset to translate points by */ void xlat2d (double x[], double y[], int n, double xoffset, double yoffset) { for (int i = 0; i < n; i++) { x[i] += xoffset; y[i] += yoffset; } } /* NAME * scale2d Scale an array of 2 dimensional vectors * * SYNOPSIS * scale2d (x, y, n, xoffset, yoffset) * double x[], y[] Array of points * int n Number of points in array * double xfact, yfact x & y scaling factors */ void scale2d (double x[], double y[], int n, double xfact, double yfact) { for (int i = 0; i < n; i++) { x[i] *= xfact; y[i] *= yfact; } } void indent_mtx2 (GRFMTX_2D m) { m[0][0] = 1.0; m[0][1] = 0.0; m[0][2] = 0.0; m[1][0] = 0.0; m[1][1] = 1.0; m[1][2] = 0.0; m[2][0] = 0.0; m[2][1] = 0.0; m[2][2] = 1.0; } void xlat_mtx2 (GRFMTX_2D m, const double x, const double y) { indent_mtx2 (m); m[2][0] = x; m[2][1] = y; } void scale_mtx2 (GRFMTX_2D m, const double sx, const double sy) { indent_mtx2 (m); m[0][0] = sx; m[1][1] = sy; } void rot_mtx2 (GRFMTX_2D m, const double theta) { double c = cos(theta); double s = sin(theta); indent_mtx2 (m); m[0][0] = c; m[0][1] = s; m[1][0] = -s; m[1][1] = c; } void copy_mtx2 (GRFMTX_2D to, const GRFMTX_2D from) { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) to[r][c] = from[r][c]; } void mult_mtx2 (const GRFMTX_2D m1, const GRFMTX_2D m2, GRFMTX_2D result) { GRFMTX_2D temp; for (int row = 0; row < 3; row++) { for (int col = 0; col < 3; col++) { temp[row][col] = 0; for (int calc = 0; calc < 3; calc++) temp[row][col] += m1[row][calc] * m2[calc][col]; } } copy_mtx2 (result, temp); } void xform_mtx2 (const GRFMTX_2D m, double& x, double& y) { double xt = x * m[0][0] + y * m[1][0] + m[2][0]; double yt = x * m[0][1] + y * m[1][1] + m[2][1]; x = xt; y = yt; } ctsim-6.0.2/libctsupport/fnetorderstream.cpp0000644000175000017500000001000011240454454020304 0ustar kevinkevin/***************************************************************************** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #if HAVE_CONFIG_H #include "config.h" #endif #if HAVE_UNISTD_H #include #endif #include "ctsupport.h" #include "fnetorderstream.h" void ConvertNetworkOrder (void* buffer, size_t bytes) { #ifndef WORDS_BIGENDIAN if (bytes < 2) return; char* start = static_cast(buffer); char* end = start + bytes - 1; // last byte size_t nSwap = bytes / 2; while (nSwap-- > 0) { unsigned char c = *start; *start++ = *end; *end-- = c; } #endif } void ConvertReverseNetworkOrder (void* buffer, size_t bytes) { #ifdef WORDS_BIGENDIAN if (bytes < 2) return; char* start = static_cast(buffer); char* end = start + bytes - 1; // last byte size_t nSwap = bytes / 2; while (nSwap-- > 0) { unsigned char c = *start; *start++ = *end; *end-- = c; } #endif } void fnetorderstream::writeInt16 (kuint16 n) { #ifndef WORDS_BIGENDIAN SwapBytes2 (&n); #endif write (reinterpret_cast(&n), 2); } void fnetorderstream::writeInt32 (kuint32 n) { #ifndef WORDS_BIGENDIAN SwapBytes4(&n); #endif write (reinterpret_cast(&n), 4); } void fnetorderstream::writeFloat32 (kfloat32 n) { #ifndef WORDS_BIGENDIAN SwapBytes4 (&n); #endif write (reinterpret_cast(&n), 4); } void fnetorderstream::writeFloat64 (kfloat64 n) { #ifndef WORDS_BIGENDIAN SwapBytes8 (&n); #endif write (reinterpret_cast(&n), 8); } void fnetorderstream::readInt16 (kuint16& n) { read (reinterpret_cast(&n), 2); #ifndef WORDS_BIGENDIAN SwapBytes2 (&n); #endif } void fnetorderstream::readInt32 (kuint32& n) { read (reinterpret_cast(&n), 4); #ifndef WORDS_BIGENDIAN SwapBytes4 (&n); #endif } void fnetorderstream::readFloat32 (kfloat32& n) { read (reinterpret_cast(&n), 4); #ifndef WORDS_BIGENDIAN SwapBytes4 (&n); #endif } void fnetorderstream::readFloat64 (kfloat64& n) { read (reinterpret_cast(&n), 8); #ifndef WORDS_BIGENDIAN SwapBytes8 (&n); #endif } void frnetorderstream::writeInt16 (kuint16 n) { #ifdef WORDS_BIGENDIAN SwapBytes2 (&n); #endif write (reinterpret_cast(&n), 2); } void frnetorderstream::writeInt32 (kuint32 n) { #ifdef WORDS_BIGENDIAN SwapBytes4(&n); #endif write (reinterpret_cast(&n), 4); } void frnetorderstream::writeFloat32 (kfloat32 n) { #ifdef WORDS_BIGENDIAN SwapBytes4 (&n); #endif write (reinterpret_cast(&n), 4); } void frnetorderstream::writeFloat64 (kfloat64 n) { #ifdef WORDS_BIGENDIAN SwapBytes8 (&n); #endif write (reinterpret_cast(&n), 8); } void frnetorderstream::readInt16 (kuint16& n) { read (reinterpret_cast(&n), 2); #ifdef WORDS_BIGENDIAN SwapBytes2 (&n); #endif } void frnetorderstream::readInt32 (kuint32& n) { read (reinterpret_cast(&n), 4); #ifdef WORDS_BIGENDIAN SwapBytes4 (&n); #endif } void frnetorderstream::readFloat32 (kfloat32& n) { read (reinterpret_cast(&n), 4); #ifdef WORDS_BIGENDIAN SwapBytes4 (&n); #endif } void frnetorderstream::readFloat64 (kfloat64& n) { read (reinterpret_cast(&n), 8); #ifdef WORDS_BIGENDIAN SwapBytes8 (&n); #endif } ctsim-6.0.2/libctsupport/msvc.cpp0000644000175000017500000000175411240454454016070 0ustar kevinkevin/***************************************************************************** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "ct.h" // Work around bug in VC6 //#ifdef MSVC //const fpos_t std::_Fpz = 0; //#endif ctsim-6.0.2/NEWS0000644000175000017500000000516010667176710012364 0ustar kevinkevinVersion 4.2 Released Mar 2003 * Direct Fourier Reconstructions now supported Version 4.0 Released Jan 2003 * Port to wxWindows 2.4 * Port to Mac OS X Version 3.5 Released May 2002 * New reconstruction technique: Interpolate divergent beams to parallel beams for faster reconstructions. * Multithreading for running length processes in background. Also takes advantage of multiple-CPU's in SMP systems for speed improvements with parallel processing. * Region of interest can be specified for reconstruction zooming. * Import PNG, PPM, and PGM images * DICOM file import/export * Clipboard for cutting and pasting images * Can read and reconstruct SIEMENS AR.STAR DICOM raw data files * Scattergram of T-Theta sampling. Useful for understanding divergent beam scanning. * Startup-tips to help new users learn features. * Ability to place detector at any arbitray position * Histogram plotting of projection files Version 3.0 New Features * Greatly improved dialog boxes * Online and print manuals with context-sensitive help! * 3-d rotating views of image files * Creation of arbitrary filter images * Cubic interpolation for reconstructions * All features of command line tools are now in graphical ctsim program! * Complex-valued image files now supported, lots of image math functions added including Fourier transformations * Visual and statistical image comparision functions * Plotting of row and column data of single and comparison images * Histogram Plotting of Image files. * Conversion of projections to polar images * Improved animation graphics * New Microsoft Windows compatible self-installer with explorer extensions to CTSim files Version 2.5 of CTSim has been released! New Features of CTSim version 2.5: - Now compiles with Microsoft Visual C++. - First Microsoft Windows graphical user interface - Bug fixes and modest documentation and program improvements over version 2.0 New Features of CTSim version 2.0: - Entire code-base cleaned up, re-written, and converted from C to C++. - Graphical user interface now included! Animation of projection and reconstruction processes. Displays projection and image files. Uses platform-independent wxWindows library so can run on UNIX and Microsoft Windows platforms. - Integrated G2 library for graphical display from command line tools (UNIX only) - Added frequency-based filtering. Can provide significant speed-up in reconstructions compared to convolution-based filtering. - Added highly-optimized backprojection method (idiff3) - New command-line tools added for image statistics and comparisons with both text and graphical outputs. ctsim-6.0.2/COPYRIGHT0000644000175000017500000000161010667176710013154 0ustar kevinkevin/***************************************************************************** ** This is part of the CTSim program ** Copyright (C) 1983-2002 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ ctsim-6.0.2/configure.ac0000644000175000017500000003774613254371161014162 0ustar kevinkevindnl ***************************************************************************** dnl FILE IDENTIFICATION dnl Name: ctsim.cpp dnl Purpose: Top-level routines of CTSim program dnl Programmer: Kevin Rosenberg dnl Date Started: July 2000 dnl dnl This is part of the CTSim program dnl Copyright (c) 1983-2009 Kevin Rosenberg dnl dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License (version 2) as dnl published by the Free Software Foundation. dnl dnl This program is distributed in the hope that it will be useful, dnl but WITHOUT ANY WARRANTY; without even the implied warranty of dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the dnl GNU General Public License for more details. dnl dnl You should have received a copy of the GNU General Public License dnl along with this program; if not, write to the Free Software dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA dnl****************************************************************************/ dnl Process this file with autoconf to produce a configure script. dnl Must reset CDPATH so that bash's cd does not print to stdout dnl CDPATH= AC_INIT([CTSim], [6.0.0], [ctsim-users@kpe.io], [ctsim], [http://www.ctsim.org/]) AC_CONFIG_SRCDIR([src/ctsim.cpp]) AC_CONFIG_MACRO_DIR([scripts]) dnl permit auxiliary scripts directory (e.g. config.sub, config.guess, install-sh) AC_CONFIG_AUX_DIR(scripts/) AC_CANONICAL_TARGET AM_MAINTAINER_MODE AM_INIT_AUTOMAKE AM_CONFIG_HEADER(config.h) dnl Checks for programs. AC_PROG_AWK AC_PROG_INSTALL AC_PROG_MAKE_SET AC_PROG_RANLIB AC_PROG_CC AC_PROG_CXX CFLAGS="" CXXFLAGS="" AC_C_BIGENDIAN AC_PATH_PROG(wxconfig,wx-config) dnl Check for C operation AC_CANONICAL_HOST AC_C_INLINE AC_CHECK_SIZEOF(short, 2) AC_CHECK_SIZEOF(int, 4) AC_CHECK_SIZEOF(long, 4) AC_CHECK_SIZEOF(float, 4) AC_CHECK_SIZEOF(double, 8) dnl Checks for libraries. AC_CHECK_LIB(z, deflate, [ zlib="true" ], [ zlib="false" ; AC_MSG_WARN([zlib missing. Will need zlib for PNG support])]) AC_CHECK_LIB(m, sin) AC_CHECK_LIB(curses, main, [curses=true], [curses=false]) AC_CHECK_LIB(ncurses, main, [ncurses=true], [ncurses=false]) AC_CHECK_LIB(readline, main, [readline=true; AC_DEFINE([HAVE_READLINE],1,[Readline library])], [readline=false], [-lcurses]) wxwin=false AC_CHECK_LIB(gtk-x11-2.0, main, [hasx11gtk2=true], []) if test "x$hasx11gtk2" = "x" ; then AC_MSG_NOTICE([Does not have X11 GTK2]) AC_DEFUN([AM_PATH_GLIB_2_0], []) AC_DEFUN([AM_PATH_GTK_2_0], []) fi if test "$hasx11gtk2" = "true" ; then AM_PATH_GLIB_2_0(2.0.0,,AC_MSG_ERROR(You should get glib 2.0.0 or better.)) AM_PATH_GTK_2_0(2.0.0,havegtk_am=yes,havegtk_am=no) CFLAGS="${CFLAGS} ${g76GTK_CFLAGS} ${GLIB_CFLAGS}" fi AC_CHECK_LIB(wx_gtk2u_core-3.0, main, [wxwin=true; wx_gtk=true; AC_DEFINE(HAVE_WXWINDOWS,1,[wxwindows library])], [], [-L/usr/lib64 -L/usr/lib ${GTK_LIBS} ${GLIB_LIBS} ]) AC_CHECK_LIB(wx_mac_core-3.0, main, [wxwin=true; wx_mac=true; AC_DEFINE(HAVE_WXWINDOWS,1,[wxwindows library])]) AC_CHECK_LIB(fftw3, fftw_malloc, [fftw=true; AC_DEFINE(HAVE_FFTW,1,[FFTW library])], [fftw=false], [-L/usr/lib64 -L/usr/lib]) AC_CHECK_LIB(GL, main, [libgl=true], [libgl=false], [-L/usr/X11R6/lib -L/usr/X11R6/lib64]) AC_CHECK_LIB(pthread, main, [pthread=true], [pthread=false]) if test "$zlib" = "true" ; then AC_CHECK_LIB(png, main, [png=true ; AC_DEFINE(HAVE_PNG,1,[PNG library])], [png=false], [-L/opt/local/lib -lz -lm]) fi dnl Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS(fcntl.h unistd.h getopt.h sys/fcntl.h setjmp.h stdarg.h stddef.h sys/types.h sys/stat.h string.h ctype.h math.h stdio.h netinet/in.h inttypes.h sys/param.h stdint.h stdlib.h assert.h sys/time.h sys/resource.h sys/time.h readline.h readline/readline.h) dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_TYPE_OFF_T AC_TYPE_SIZE_T AC_STRUCT_TM dnl Checks for library functions. AC_FUNC_VPRINTF AC_CHECK_FUNCS(strtod strtol snprintf htonl usleep vsprintf vsnprintf basename setjmp setpriority time gettimeofday getenv) AC_CHECK_FUNC(basename) AC_CHECK_FUNC(setjmp) AC_CHECK_FUNC(setpriority) AC_CHECK_FUNC(time) AC_CHECK_FUNC(gettimeofday) AC_CHECK_FUNC(getopt, [ getopt=true ], [ getopt=false ]) if test "${OSTYPE}" = "cygwin" ; then getopt_long=false else AC_CHECK_FUNC(getopt_long, [ getopt_long=true ], [ getopt_long=false ]) fi if test "${getopt_long}" = "false" ; then my_includes="$my_includes -I../getopt" AC_DEFINE(HAVE_GETOPT_LONG,1,[getopt_long library]) ctlibs_base="$ctlibs_base -lgetopt" LDFLAGS="$LDFLAGS -L../getopt" GETOPTLONG=1 fi AM_CONDITIONAL(INCLUDED_GETOPT_LONG, test "$GETOPTLONG"="1") ARCH_OPTION="" case $target_cpu in i386|i486|i586|i686|x86|x86_64) AX_EXT CFLAGS="$CFLAGS $CPUEXT_FLAGS $SIMD_FLAGS" CXXFLAGS="$CXXFLAGS $CPUEXT_FLAGS $SIMD_FLAGS" ;; powerpc*) ARCH_OPTION="-fno-common -faltivec";; armv1*|armv2*|armv3*|armv4*|armv5*|armv6*) ARCH_OPTION="-ffast-math";; armv7*|armv8*) ARCH_OPTION="-ffast-math -mcpu=cortex-a7 -mfloat-abi=hard -mfpu=neon-vfpv4";; *) # unknown architecture : use portable C version ARCH_OPTION="";; esac CPPFLAGS="$CPPFLAGS $ARCH_OPTION" CXXFLAGS="$CPPFLAGS $ARCH_OPTION" if test "${readline}" = "true" ; then ctlibs_base="$ctlibs_base -lreadline" if test "${ncurses}" = "true"; then ctlibs_base="$ctlibs_base -lncurses" elif test "${curses}" = "true"; then ctlibs_base="$ctlibs_base -lcurses" fi fi dnl Check for debug mode AC_MSG_CHECKING([debug]) AC_ARG_ENABLE(debug, [ --enable-debug Turn on debugging], [case "${enableval}" in yes) debug="true" AC_MSG_RESULT(yes) ;; no) debug="false" AC_MSG_RESULT(no) ;; *) AC_MSG_RESULT([bad value ${enableval} for --enable-debug]) ;; esac], [debug=false; AC_MSG_RESULT(no)]) AM_CONDITIONAL(DEBUG, test "$debug" = "true") if test "$datadir" != "" ; then CPPFLAGS="$CPPFLAGS -DDATADIR=\"\\\"$datadir\\\"\"" fi dnl CFLAGS="$CFLAGS -I/usr/local/include" dnl LDFLAGS="$LDFLAGS -L/usr/local/lib" if test "$debug" = "true" ; then CFLAGS="$CFLAGS -g -O0 -DDEBUG" AC_DEFINE(DEBUG,1,[turn on debugging]) else CFLAGS="$CFLAGS -g -O4 -DNDEBUG -fomit-frame-pointer" AC_DEFINE(NDEBUG,1,[no debugging]) fi if test "${pthread}" = "true" ; then dnl CFLAGS="$CFLAGS -D_REENTRANT" AC_DEFINE(HAVE_WXTHREADS,1,[have wxthreads library]) fi AC_MSG_CHECKING(sstream) if [ test -f /usr/include/sstream || test -f /usr/include/g++/sstream || test -f /usr/include/g++-2/sstream || test -f /usr/include/g++-3/sstream || test -f /usr/include/gcc/darwin/3.1/g++-v3/sstream ]; then AC_DEFINE(HAVE_SSTREAM,1,[sstream header]) AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) fi CFLAGS="$CFLAGS -Wall" AC_MSG_CHECKING(whether to enable verbose warnings) AC_ARG_ENABLE(verbose-warnings,AS_HELP_STRING([--enable-verbose-warnings],[Enable verbose compiler warnings.]), [ case "$enableval" in yes) AC_MSG_RESULT(yes) CFLAGS="$CFLAGS -W -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wwrite-strings -Waggregate-return -Wmissing-prototypes -Wstrict-prototypes -pedantic -Wredundant-decls" ;; *) AC_MSG_RESULT(no) ;; esac ], AC_MSG_RESULT(no) ) AC_MSG_CHECKING(static executables) AC_ARG_ENABLE(static,AS_HELP_STRING([--enable-static],[Enable static executables]), [ case "$enableval" in yes) AC_MSG_RESULT(yes) CFLAGS="$CFLAGS --static" ;; *) AC_MSG_RESULT(no) ;; esac ], AC_MSG_RESULT(no) ) dnl Checking if use OpenMP AC_ARG_ENABLE([openmp], AS_HELP_STRING([--disable-openmp],[Disable use of OpenMP])) AS_IF([test "x$enable_openmp" != "xno"], [ AX_OPENMP CFLAGS="$CFLAGS $OPENMP_CFLAGS" CXXFLAGS="$CXXFLAGS $OPENMP_CXXFLAGS" ]) dnl Set LAM path AC_ARG_WITH(lam,AS_HELP_STRING([--with-lam[=PATH]],[Set path of LAM MPI ]), [ if test "$withval" != "no" ; then trylamdir=$withval fi ] ) if test "$withval" != "no" ; then if test "$prefix" != "NONE" ; then trylamdir="$trylamdir $prefix" fi AC_MSG_CHECKING([for LAM MPI installation]) for testlamdir in "." $trylamdir /usr/local /usr/local/lam /usr /usr/lam /opt /opt/lam ; do if test -x "$testlamdir/bin/hcp" ; then if test "$testlamdir" != "/usr"; then LDFLAGS="$LDFLAGS -L$testlamdir/lib" CFLAGS="$CFLAGS -I$testlamdir/include" fi CFLAGS="$CFLAGS -I$testlamdir/include/mpi2c++" lamdir="$testlamdir" AC_SUBST(lamdir) mpienable="true" AC_SUBST(mpienable) break fi done AC_MSG_RESULT($lamdir) else AC_MSG_RESULT([no]) fi dnl Set CTN path AC_ARG_WITH(ctn, [ --with-ctn[=PATH] Set path of CTN DICOM library ], [ if test "$withval" != "no" ; then tryctndir=$withval fi ] ) if test "$withval" = "no" -o "$withval" = "NONE" ; then AC_MSG_CHECKING([for CTN DICOM installation]) AC_MSG_RESULT([disabled]) else AC_MSG_CHECKING([for CTN DICOM installation]) for testctndir in $tryctndir/lib /usr/local/lib /usr/local/ctn/lib /usr/lib /usr/ctn/lib /usr/lib/ctn /opt/ctn/lib ; do if test -f "$testctndir/libctn.a" ; then LDFLAGS="$LDFLAGS -L$testctndir" ctnlib="true" break fi done for testctndir in $tryctndir/include /usr/local/include /usr/local/ctn/include /usr/include /usr/include/ctn /usr/ctn/include /opt/ctn/include ; do if test -f "$testctndir/ctn_os.h" ; then CFLAGS="$CFLAGS -I$testctndir" ctninclude="true" break fi done if test "$ctnlib" = "true" -a "$ctninclude" = "true" ; then ctn="true" AC_DEFINE(HAVE_CTN_DICOM,1,[ctn dicom library]) AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi fi dnl Set CPU AC_MSG_CHECKING([for CPU specification]) AC_ARG_WITH(mcpu, [ --with-mcpu[=CPU] Set name of CPU for gcc -mcpu]) if test "$withval" = "no" -o "$withval" = "yes" -o "$withval" = ""; then AC_MSG_RESULT([no]) else AC_MSG_RESULT([$withval]) CFLAGS="$CFLAGS -mcpu=$withval" fi AC_MSG_CHECKING([for web access]) dnl Set cgi-bin directory AC_ARG_WITH(cgibin-dir, [ --with-cgibin-dir=PATH Set path of CGI binaries directory ], [ cgibindir=$withval ; AC_SUBST(cgibindir) ] ) AC_ARG_WITH(cgibin-url, [ --with-cgibin-url=PATH Set URL path of CGI binaries ], [ cgibinurl=$withval ; AC_SUBST(cgibinurl) ] ) AC_ARG_WITH(webdata-dir, [ --with-webdata-dir=PATH Set path of webdata], [ webdatadir=$withval ; AC_SUBST(webdatadir) ] ) AC_ARG_WITH(webdata-url, [ --with-webdata-url=PATH Set URL path of webdata], [ webdataurl=$withval ; AC_SUBST(webdataurl) ] ) AC_ARG_WITH(html-dir, [ --with-html-dir=PATH Set directory of html files], [ html_%dir=$withval ; AC_SUBST(htmldir) ] ) if test "x$cgibindir" != "x" -o "x$cgibinurl" != "x" ; then cgiprograms="ctsim.cgi ctsim.conf" AC_SUBST(cgiprograms) fi if test "x$html_dir" = "x" ; then htmldata=simulate.html AC_SUBST(htmldata) fi AM_CONDITIONAL(USE_HTML, test "x$html_dir" = "x") if test "x$cgibindir" != "x" -o "x$cgibinurl" != "x" -o "x$webdatadir" != "x" -o "x$webdataurl" != "x" -o "x$html_dir" != "x" ; then webenabled=true AC_SUBST(webenabled) AC_MSG_RESULT([yes]) if test "x$cgibindir" = "x" ; then AC_MSG_ERROR([--with-cgibin-dir not set for web access]) elif test "x$cgibinurl" = "x" ; then AC_MSG_ERROR([--with-cgibin-url not set for web access]) elif test "x$webdatadir" = "x" ; then AC_MSG_ERROR([--with-webdata-dir not set for web access]) elif test "x$webdataurl" = "x" ; then AC_MSG_ERROR([--with-webdata-url not set for web access]) elif test "x$html_dir" = "x" ; then AC_MSG_ERROR([--with-html-dir not set for web access]) fi else AC_MSG_RESULT([no]) fi AM_CONDITIONAL(USE_LAM, test "x$lamdir" != "x") AC_PATH_XTRA AC_SUBST(X_CFLAGS) dnl Following five are concatenated together into a linker specification. AC_SUBST(X_LIBS) AC_SUBST(X_TOOLKIT_LIBS) AC_SUBST(X_PRE_LIBS) AC_SUBST(X_BASIC_LIBS) AC_SUBST(X_EXTRA_LIBS) dnl Our Makefile.am files test the automake variable NO_X to determine dnl whether X should be supported. AM_CONDITIONAL(NO_X, test "x$with_x" = "xno") my_includes="$my_includes -I../include -I.. -I/usr/local/include" LDFLAGS="$LDFLAGS -L/usr/local/lib" AC_MSG_CHECKING([for X]) if test "$with_x" != "no" && test "$wxwin" = "true"; then AC_DEFINE(HAVE_X11,1,[X11 system]) LDFLAGS="$LDFLAGS -L../libctgraphics -L/usr/X11R6/lib -L/usr/X11R6/lib64" my_includes="$my_includes -I/usr/X11R6/include -I/usr/include/X11" ctlib_graphics="$ctlibs_base -lctgraphics" AC_MSG_RESULT(yes) ctlib_graphics="$ctlib_graphics $X_BASIC_LIBS $X_TOOLKIT_LIBS" wx_cppflags="`$wxconfig --cppflags`" if test "$libgl" = "true" ; then dnl Removed "-lglut" for Mac OS X compilation ctlib_graphics="$ctlib_graphics -lGL -lGLU" if test "$wxwin" = "true" ; then wxdebug="" if test "$debug" = "true"; then wxdebug="--debug" fi if test "x$wx_gtk" != "x" ; then ctlib_graphics="$ctlib_graphics `$wxconfig $wxdebug --version=3.0 --libs std,gl` ${GTK_LIBS} ${GLIB_LIBS}" elif test "x$wx_mac" != "x" ; then ctlib_graphics="$ctlib_graphics `$wxconfig $wxdebug --version=3.0 --libs std,gl`" fi fi fi if test "$wxwin" = "true" ; then AC_DEFINE(HAVE_SGP,1,[use sgp library]) fi else AC_MSG_RESULT(no) fi AM_CONDITIONAL(HAVE_SGP, test "$wxwin" = "true") if test "$png" = "true" ; then ctlibs_tools="$ctlibs_tools -lpng" fi if test "$zlib" = "true" ; then ctlibs_tools="$ctlibs_tools -lz" fi if test "$fftw" = "true" ; then ctlibs_tools="$ctlibs_tools -lfftw3" fi if test "$ctn" = "true"; then ctlibs_tools="$ctlibs_tools -lctn" fi dnl Check for dmalloc AC_CHECK_LIB(dmallocxx, main, [dmallocxx=true], [dmallocxx=false]) AC_MSG_CHECKING([for enable-dmalloc]) AC_ARG_ENABLE(dmalloc, [ --enable-dmalloc Use dmalloc memory allocation], [case "${enableval}" in yes) usedmalloc=true AC_MSG_RESULT(yes) ;; no) usedmalloc=false AC_MSG_RESULT(no) ;; *) AC_MSG_RESULT([bad value ${enableval} for --enable-dmalloc]) ;; esac], [usedmalloc=false; AC_MSG_RESULT(no)]) if test "$dmallocxx" = "true" -a "$usedmalloc" = "true" ; then ctlibs_tools="$ctlibs_tools -ldmallocxx" AC_DEFINE(HAVE_DMALLOC,1,[dmalloc library]) AC_MSG_RESULT(Using dmalloc) fi dnl Check for efence AC_CHECK_LIB(efence, main, [efence=true], [efence=false]) AC_MSG_CHECKING([for enable-efence]) AC_ARG_ENABLE(efence, [--enable-efence],[Use ElectricFence memory allocation], [case "${enableval}" in yes) useefence=true AC_MSG_RESULT(yes) ;; no) useefence=false AC_MSG_RESULT(no) ;; *) AC_MSG_RESULT([bad value ${enableval} for --enable-efence]) ;; esac], [useefence=false; AC_MSG_RESULT(no)]) if test "$efence" = "true" -a "$useefence" = "true" ; then ctlibs_tools="$ctlibs_tools -lefence" AC_DEFINE(HAVE_EFENCE,1,[efence library]) AC_MSG_RESULT(Using efence) fi if test "$wxwin" = "true" ; then if test "$wx_gtk" = "true" -o "$wx_mac" = "true" ; then wxcflags=`$wxconfig $wxdebug --cxxflags --version=3.0` #wxlibs=`$wxconfig --libs` else wxcflags="-D__WXMSW__ -D__WIN32__ -D__GNUWIN32__" wxlibs="-lwx -lglui -ljpeg -lxpm -lzlib -ltiff" fi CFLAGS="$CFLAGS -I../include $wxcflags" ctlib_graphics="$ctlib_graphics $wxlibs" fi AC_SUBST(wxcflags) AC_SUBST(wxlibs) AM_CONDITIONAL(HAVE_WXWINDOWS, test "$wxwin"="true") dnl Setting projet libraries and includes LDFLAGS="$LDFLAGS -L../libctsupport -L../libctsim" ctlibs="$ctlibs_base -lctsim $ctlib_graphics -lctsupport $ctlibs_tools" AC_SUBST(ctlibs) if test "x$lamdir" != "x" ; then lamprograms="ctsimtext-lam" AC_SUBST(lamprograms) lamdefs="$CFLAGS" AC_SUBST(lamdefs) fi CXXFLAGS="$CFLAGS" AC_SUBST(my_includes) AC_SUBST(wx_cppflags) AC_CONFIG_FILES([Makefile libctgraphics/Makefile libctsupport/Makefile libctsim/Makefile man/Makefile cgi-bin/ctsim.cgi cgi-bin/Makefile html/simulate.html html/Makefile include/Makefile getopt/Makefile tools/sample-ctsim.sh cgi-bin/ctsim.conf tools/Makefile src/Makefile helical/Makefile helical/sample-helical.sh]) AC_OUTPUT ctsim-6.0.2/scripts/0000755000175000017500000000000013254524615013346 5ustar kevinkevinctsim-6.0.2/scripts/depcomp0000755000175000017500000005601613254271205014725 0ustar kevinkevin#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2013-05-30.07; # UTC # Copyright (C) 1999-2014 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: "UTC" # time-stamp-end: "; # UTC" # End: ctsim-6.0.2/scripts/config.sub0000755000175000017500000010676313254360476015351 0ustar kevinkevin#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2016 Free Software Foundation, Inc. timestamp='2016-11-04' # This file 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 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 Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ kopensolaris*-gnu* | cloudabi*-eabi* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | ba \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | e2k | epiphany \ | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pru \ | pyramid \ | riscv32 | riscv64 \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | visium \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; leon|leon[3-9]) basic_machine=sparc-$basic_machine ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | ba-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | e2k-* | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pru-* \ | pyramid-* \ | riscv32-* | riscv64-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | visium-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; asmjs) basic_machine=asmjs-unknown ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; e500v[12]) basic_machine=powerpc-unknown os=$os"spe" ;; e500v[12]-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` os=$os"spe" ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; leon-*|leon[3-9]-*) basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; moxiebox) basic_machine=moxie-unknown os=-moxiebox ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* | -cloudabi* | -sortix* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ | -onefs* | -tirtos* | -phoenix* | -fuchsia*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -ios) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: ctsim-6.0.2/scripts/ax_gcc_x86_cpuid.m40000644000175000017500000000716713254360476016743 0ustar kevinkevin# =========================================================================== # https://www.gnu.org/software/autoconf-archive/ax_gcc_x86_cpuid.html # =========================================================================== # # SYNOPSIS # # AX_GCC_X86_CPUID(OP) # AX_GCC_X86_CPUID_COUNT(OP, COUNT) # # DESCRIPTION # # On Pentium and later x86 processors, with gcc or a compiler that has a # compatible syntax for inline assembly instructions, run a small program # that executes the cpuid instruction with input OP. This can be used to # detect the CPU type. AX_GCC_X86_CPUID_COUNT takes an additional COUNT # parameter that gets passed into register ECX before calling cpuid. # # On output, the values of the eax, ebx, ecx, and edx registers are stored # as hexadecimal strings as "eax:ebx:ecx:edx" in the cache variable # ax_cv_gcc_x86_cpuid_OP. # # If the cpuid instruction fails (because you are running a # cross-compiler, or because you are not using gcc, or because you are on # a processor that doesn't have this instruction), ax_cv_gcc_x86_cpuid_OP # is set to the string "unknown". # # This macro mainly exists to be used in AX_GCC_ARCHFLAG. # # LICENSE # # Copyright (c) 2008 Steven G. Johnson # Copyright (c) 2008 Matteo Frigo # Copyright (c) 2015 Michael Petch # # 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, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. #serial 10 AC_DEFUN([AX_GCC_X86_CPUID], [AX_GCC_X86_CPUID_COUNT($1, 0) ]) AC_DEFUN([AX_GCC_X86_CPUID_COUNT], [AC_REQUIRE([AC_PROG_CC]) AC_LANG_PUSH([C]) AC_CACHE_CHECK(for x86 cpuid $1 output, ax_cv_gcc_x86_cpuid_$1, [AC_RUN_IFELSE([AC_LANG_PROGRAM([#include ], [ int op = $1, level = $2, eax, ebx, ecx, edx; FILE *f; __asm__ __volatile__ ("xchg %%ebx, %1\n" "cpuid\n" "xchg %%ebx, %1\n" : "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx) : "a" (op), "2" (level)); f = fopen("conftest_cpuid", "w"); if (!f) return 1; fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx); fclose(f); return 0; ])], [ax_cv_gcc_x86_cpuid_$1=`cat conftest_cpuid`; rm -f conftest_cpuid], [ax_cv_gcc_x86_cpuid_$1=unknown; rm -f conftest_cpuid], [ax_cv_gcc_x86_cpuid_$1=unknown])]) AC_LANG_POP([C]) ]) ctsim-6.0.2/scripts/install-sh0000755000175000017500000003546313254360476015370 0ustar kevinkevin#!/bin/sh # install - install a program, script, or datafile scriptversion=2014-09-12.12; # 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. ;; *) # $RANDOM is not portable (e.g. dash); use it when possible to # lower collision chance tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 # As "mkdir -p" follows symlinks and we work in /tmp possibly; so # create the $tmpdir first (and fail if unsuccessful) to make sure # that nobody tries to guess the $tmpdir name. if (umask $mkdir_umask && $mkdirprog $mkdir_mode "$tmpdir" && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/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. test_tmpdir="$tmpdir/a" ls_ld_tmpdir=`ls -ld "$test_tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 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: "UTC" # time-stamp-end: "; # UTC" # End: ctsim-6.0.2/scripts/ax_gcc_x86_avx_xgetbv.m40000644000175000017500000000642113254404457020002 0ustar kevinkevin# =========================================================================== # http://www.gnu.org/software/autoconf-archive/ax_gcc_x86_avx_xgetbv.html # =========================================================================== # # SYNOPSIS # # AX_GCC_X86_AVX_XGETBV # # DESCRIPTION # # On later x86 processors with AVX SIMD support, with gcc or a compiler # that has a compatible syntax for inline assembly instructions, run a # small program that executes the xgetbv instruction with input OP. This # can be used to detect if the OS supports AVX instruction usage. # # On output, the values of the eax and edx registers are stored as # hexadecimal strings as "eax:edx" in the cache variable # ax_cv_gcc_x86_avx_xgetbv. # # If the xgetbv instruction fails (because you are running a # cross-compiler, or because you are not using gcc, or because you are on # a processor that doesn't have this instruction), # ax_cv_gcc_x86_avx_xgetbv_OP is set to the string "unknown". # # This macro mainly exists to be used in AX_EXT. # # LICENSE # # Copyright (c) 2013 Michael Petch # # 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, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. #serial 2 AC_DEFUN([AX_GCC_X86_AVX_XGETBV], [AC_REQUIRE([AC_PROG_CC]) AC_LANG_PUSH([C]) AC_CACHE_CHECK(for x86-AVX xgetbv $1 output, ax_cv_gcc_x86_avx_xgetbv_$1, [AC_RUN_IFELSE([AC_LANG_PROGRAM([#include ], [ int op = $1, eax, edx; FILE *f; /* Opcodes for xgetbv */ __asm__ __volatile__ (".byte 0x0f, 0x01, 0xd0" : "=a" (eax), "=d" (edx) : "c" (op)); f = fopen("conftest_xgetbv", "w"); if (!f) return 1; fprintf(f, "%x:%x\n", eax, edx); fclose(f); return 0; ])], [ax_cv_gcc_x86_avx_xgetbv_$1=`cat conftest_xgetbv`; rm -f conftest_xgetbv], [ax_cv_gcc_x86_avx_xgetbv_$1=unknown; rm -f conftest_xgetbv], [ax_cv_gcc_x86_avx_xgetbv_$1=unknown])]) AC_LANG_POP([C]) ]) ctsim-6.0.2/scripts/ax_gcc_archflag.m40000644000175000017500000003125513254360476016674 0ustar kevinkevin# =========================================================================== # https://www.gnu.org/software/autoconf-archive/ax_gcc_archflag.html # =========================================================================== # # SYNOPSIS # # AX_GCC_ARCHFLAG([PORTABLE?], [ACTION-SUCCESS], [ACTION-FAILURE]) # # DESCRIPTION # # This macro tries to guess the "native" arch corresponding to the target # architecture for use with gcc's -march=arch or -mtune=arch flags. If # found, the cache variable $ax_cv_gcc_archflag is set to this flag and # ACTION-SUCCESS is executed; otherwise $ax_cv_gcc_archflag is set to # "unknown" and ACTION-FAILURE is executed. The default ACTION-SUCCESS is # to add $ax_cv_gcc_archflag to the end of $CFLAGS. # # PORTABLE? should be either [yes] (default) or [no]. In the former case, # the flag is set to -mtune (or equivalent) so that the architecture is # only used for tuning, but the instruction set used is still portable. In # the latter case, the flag is set to -march (or equivalent) so that # architecture-specific instructions are enabled. # # The user can specify --with-gcc-arch= in order to override the # macro's choice of architecture, or --without-gcc-arch to disable this. # # When cross-compiling, or if $CC is not gcc, then ACTION-FAILURE is # called unless the user specified --with-gcc-arch manually. # # Requires macros: AX_CHECK_COMPILE_FLAG, AX_GCC_X86_CPUID # # (The main emphasis here is on recent CPUs, on the principle that doing # high-performance computing on old hardware is uncommon.) # # LICENSE # # Copyright (c) 2008 Steven G. Johnson # Copyright (c) 2008 Matteo Frigo # Copyright (c) 2014 Tsukasa Oi # Copyright (c) 2017 Alexey Kopytov # # 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, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. #serial 20 AC_DEFUN([AX_GCC_ARCHFLAG], [AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_PROG_SED]) AC_REQUIRE([AX_COMPILER_VENDOR]) AC_ARG_WITH(gcc-arch, [AS_HELP_STRING([--with-gcc-arch=], [use architecture for gcc -march/-mtune, instead of guessing])], ax_gcc_arch=$withval, ax_gcc_arch=yes) AC_MSG_CHECKING([for gcc architecture flag]) AC_MSG_RESULT([]) AC_CACHE_VAL(ax_cv_gcc_archflag, [ ax_cv_gcc_archflag="unknown" if test "$GCC" = yes; then if test "x$ax_gcc_arch" = xyes; then ax_gcc_arch="" if test "$cross_compiling" = no; then case $host_cpu in i[[3456]]86*|x86_64*|amd64*) # use cpuid codes AX_GCC_X86_CPUID(0) AX_GCC_X86_CPUID(1) case $ax_cv_gcc_x86_cpuid_0 in *:756e6547:6c65746e:49656e69) # Intel case $ax_cv_gcc_x86_cpuid_1 in *5[[4578]]?:*:*:*) ax_gcc_arch="pentium-mmx pentium" ;; *5[[123]]?:*:*:*) ax_gcc_arch=pentium ;; *0?61?:*:*:*|?61?:*:*:*|61?:*:*:*) ax_gcc_arch=pentiumpro ;; *0?6[[356]]?:*:*:*|?6[[356]]?:*:*:*|6[[356]]?:*:*:*) ax_gcc_arch="pentium2 pentiumpro" ;; *0?6[[78ab]]?:*:*:*|?6[[78ab]]?:*:*:*|6[[78ab]]?:*:*:*) ax_gcc_arch="pentium3 pentiumpro" ;; *0?6[[9d]]?:*:*:*|?6[[9d]]?:*:*:*|6[[9d]]?:*:*:*|*1?65?:*:*:*) ax_gcc_arch="pentium-m pentium3 pentiumpro" ;; *0?6e?:*:*:*|?6e?:*:*:*|6e?:*:*:*) ax_gcc_arch="yonah pentium-m pentium3 pentiumpro" ;; *0?6f?:*:*:*|?6f?:*:*:*|6f?:*:*:*|*1?66?:*:*:*) ax_gcc_arch="core2 pentium-m pentium3 pentiumpro" ;; *1?6[[7d]]?:*:*:*) ax_gcc_arch="penryn core2 pentium-m pentium3 pentiumpro" ;; *1?6[[aef]]?:*:*:*|*2?6e?:*:*:*) ax_gcc_arch="nehalem corei7 core2 pentium-m pentium3 pentiumpro" ;; *2?6[[5cf]]?:*:*:*) ax_gcc_arch="westmere corei7 core2 pentium-m pentium3 pentiumpro" ;; *2?6[[ad]]?:*:*:*) ax_gcc_arch="sandybridge corei7-avx corei7 core2 pentium-m pentium3 pentiumpro" ;; *3?6[[ae]]?:*:*:*) ax_gcc_arch="ivybridge core-avx-i corei7-avx corei7 core2 pentium-m pentium3 pentiumpro" ;; *3?6[[cf]]?:*:*:*|*4?6[[56]]?:*:*:*) ax_gcc_arch="haswell core-avx2 core-avx-i corei7-avx corei7 core2 pentium-m pentium3 pentiumpro" ;; *3?6d?:*:*:*) ax_gcc_arch="broadwell core-avx2 core-avx-i corei7-avx corei7 core2 pentium-m pentium3 pentiumpro" ;; *1?6c?:*:*:*|*2?6[[67]]?:*:*:*|*3?6[[56]]?:*:*:*) ax_gcc_arch="bonnell atom core2 pentium-m pentium3 pentiumpro" ;; *3?67?:*:*:*|*[[45]]?6[[ad]]?:*:*:*) ax_gcc_arch="silvermont atom core2 pentium-m pentium3 pentiumpro" ;; *000?f[[012]]?:*:*:*|?f[[012]]?:*:*:*|f[[012]]?:*:*:*) ax_gcc_arch="pentium4 pentiumpro" ;; *000?f[[346]]?:*:*:*|?f[[346]]?:*:*:*|f[[346]]?:*:*:*) ax_gcc_arch="nocona prescott pentium4 pentiumpro" ;; # fallback *5??:*:*:*) ax_gcc_arch=pentium ;; *??6??:*:*:*) ax_gcc_arch="core2 pentiumpro" ;; *6??:*:*:*) ax_gcc_arch=pentiumpro ;; *00??f??:*:*:*|??f??:*:*:*|?f??:*:*:*|f??:*:*:*) ax_gcc_arch="pentium4 pentiumpro" ;; esac ;; *:68747541:444d4163:69746e65) # AMD case $ax_cv_gcc_x86_cpuid_1 in *5[[67]]?:*:*:*) ax_gcc_arch=k6 ;; *5[[8]]?:*:*:*) ax_gcc_arch="k6-2 k6" ;; *5[[9d]]?:*:*:*) ax_gcc_arch="k6-3 k6" ;; *6[[12]]?:*:*:*) ax_gcc_arch="athlon k7" ;; *6[[34]]?:*:*:*) ax_gcc_arch="athlon-tbird k7" ;; *6[[678a]]?:*:*:*) ax_gcc_arch="athlon-xp athlon-4 athlon k7" ;; *000?f[[4578bcef]]?:*:*:*|?f[[4578bcef]]?:*:*:*|f[[4578bcef]]?:*:*:*|*001?f[[4578bcf]]?:*:*:*|1?f[[4578bcf]]?:*:*:*) ax_gcc_arch="athlon64 k8" ;; *002?f[[13457bcf]]?:*:*:*|2?f[[13457bcf]]?:*:*:*|*004?f[[138bcf]]?:*:*:*|4?f[[138bcf]]?:*:*:*|*005?f[[df]]?:*:*:*|5?f[[df]]?:*:*:*|*006?f[[8bcf]]?:*:*:*|6?f[[8bcf]]?:*:*:*|*007?f[[cf]]?:*:*:*|7?f[[cf]]?:*:*:*|*00c?f1?:*:*:*|c?f1?:*:*:*|*020?f3?:*:*:*|20?f3?:*:*:*) ax_gcc_arch="athlon64-sse3 k8-sse3 athlon64 k8" ;; *010?f[[245689a]]?:*:*:*|10?f[[245689a]]?:*:*:*|*030?f1?:*:*:*|30?f1?:*:*:*) ax_gcc_arch="barcelona amdfam10 k8" ;; *050?f[[12]]?:*:*:*|50?f[[12]]?:*:*:*) ax_gcc_arch="btver1 amdfam10 k8" ;; *060?f1?:*:*:*|60?f1?:*:*:*) ax_gcc_arch="bdver1 amdfam10 k8" ;; *060?f2?:*:*:*|60?f2?:*:*:*|*061?f[[03]]?:*:*:*|61?f[[03]]?:*:*:*) ax_gcc_arch="bdver2 bdver1 amdfam10 k8" ;; *063?f0?:*:*:*|63?f0?:*:*:*) ax_gcc_arch="bdver3 bdver2 bdver1 amdfam10 k8" ;; *07[[03]]?f0?:*:*:*|7[[03]]?f0?:*:*:*) ax_gcc_arch="btver2 btver1 amdfam10 k8" ;; # fallback *0[[13]]??f??:*:*:*|[[13]]??f??:*:*:*) ax_gcc_arch="barcelona amdfam10 k8" ;; *020?f??:*:*:*|20?f??:*:*:*) ax_gcc_arch="athlon64-sse3 k8-sse3 athlon64 k8" ;; *05??f??:*:*:*|5??f??:*:*:*) ax_gcc_arch="btver1 amdfam10 k8" ;; *060?f??:*:*:*|60?f??:*:*:*) ax_gcc_arch="bdver1 amdfam10 k8" ;; *061?f??:*:*:*|61?f??:*:*:*) ax_gcc_arch="bdver2 bdver1 amdfam10 k8" ;; *06??f??:*:*:*|6??f??:*:*:*) ax_gcc_arch="bdver3 bdver2 bdver1 amdfam10 k8" ;; *070?f??:*:*:*|70?f??:*:*:*) ax_gcc_arch="btver2 btver1 amdfam10 k8" ;; *???f??:*:*:*) ax_gcc_arch="amdfam10 k8" ;; esac ;; *:746e6543:736c7561:48727561) # IDT / VIA (Centaur) case $ax_cv_gcc_x86_cpuid_1 in *54?:*:*:*) ax_gcc_arch=winchip-c6 ;; *5[[89]]?:*:*:*) ax_gcc_arch=winchip2 ;; *66?:*:*:*) ax_gcc_arch=winchip2 ;; *6[[78]]?:*:*:*) ax_gcc_arch=c3 ;; *6[[9adf]]?:*:*:*) ax_gcc_arch="c3-2 c3" ;; esac ;; esac if test x"$ax_gcc_arch" = x; then # fallback case $host_cpu in i586*) ax_gcc_arch=pentium ;; i686*) ax_gcc_arch=pentiumpro ;; esac fi ;; sparc*) AC_PATH_PROG([PRTDIAG], [prtdiag], [prtdiag], [$PATH:/usr/platform/`uname -i`/sbin/:/usr/platform/`uname -m`/sbin/]) cputype=`(((grep cpu /proc/cpuinfo | cut -d: -f2) ; ($PRTDIAG -v |grep -i sparc) ; grep -i cpu /var/run/dmesg.boot ) | head -n 1) 2> /dev/null` cputype=`echo "$cputype" | tr -d ' -' | $SED 's/SPARCIIi/SPARCII/' |tr $as_cr_LETTERS $as_cr_letters` case $cputype in *ultrasparciv*) ax_gcc_arch="ultrasparc4 ultrasparc3 ultrasparc v9" ;; *ultrasparciii*) ax_gcc_arch="ultrasparc3 ultrasparc v9" ;; *ultrasparc*) ax_gcc_arch="ultrasparc v9" ;; *supersparc*|*tms390z5[[05]]*) ax_gcc_arch="supersparc v8" ;; *hypersparc*|*rt62[[056]]*) ax_gcc_arch="hypersparc v8" ;; *cypress*) ax_gcc_arch=cypress ;; esac ;; alphaev5) ax_gcc_arch=ev5 ;; alphaev56) ax_gcc_arch=ev56 ;; alphapca56) ax_gcc_arch="pca56 ev56" ;; alphapca57) ax_gcc_arch="pca57 pca56 ev56" ;; alphaev6) ax_gcc_arch=ev6 ;; alphaev67) ax_gcc_arch=ev67 ;; alphaev68) ax_gcc_arch="ev68 ev67" ;; alphaev69) ax_gcc_arch="ev69 ev68 ev67" ;; alphaev7) ax_gcc_arch="ev7 ev69 ev68 ev67" ;; alphaev79) ax_gcc_arch="ev79 ev7 ev69 ev68 ev67" ;; powerpc*) cputype=`((grep cpu /proc/cpuinfo | head -n 1 | cut -d: -f2 | cut -d, -f1 | $SED 's/ //g') ; /usr/bin/machine ; /bin/machine; grep CPU /var/run/dmesg.boot | head -n 1 | cut -d" " -f2) 2> /dev/null` cputype=`echo $cputype | $SED -e 's/ppc//g;s/ *//g'` case $cputype in *750*) ax_gcc_arch="750 G3" ;; *740[[0-9]]*) ax_gcc_arch="$cputype 7400 G4" ;; *74[[4-5]][[0-9]]*) ax_gcc_arch="$cputype 7450 G4" ;; *74[[0-9]][[0-9]]*) ax_gcc_arch="$cputype G4" ;; *970*) ax_gcc_arch="970 G5 power4";; *POWER4*|*power4*|*gq*) ax_gcc_arch="power4 970";; *POWER5*|*power5*|*gr*|*gs*) ax_gcc_arch="power5 power4 970";; 603ev|8240) ax_gcc_arch="$cputype 603e 603";; *) ax_gcc_arch=$cputype ;; esac ax_gcc_arch="$ax_gcc_arch powerpc" ;; aarch64) cpuimpl=`grep 'CPU implementer' /proc/cpuinfo 2> /dev/null | cut -d: -f2 | tr -d " " | head -n 1` cpuarch=`grep 'CPU architecture' /proc/cpuinfo 2> /dev/null | cut -d: -f2 | tr -d " " | head -n 1` cpuvar=`grep 'CPU variant' /proc/cpuinfo 2> /dev/null | cut -d: -f2 | tr -d " " | head -n 1` case $cpuimpl in 0x42) case $cpuarch in 8) case $cpuvar in 0x0) ax_gcc_arch="thunderx2t99 vulcan armv8.1-a armv8-a+lse armv8-a native" ;; esac ;; esac ;; 0x43) case $cpuarch in 8) case $cpuvar in 0x0) ax_gcc_arch="thunderx armv8-a native" ;; 0x1) ax_gcc_arch="thunderx+lse armv8.1-a armv8-a+lse armv8-a native" ;; esac ;; esac ;; esac ;; esac fi # not cross-compiling fi # guess arch if test "x$ax_gcc_arch" != x -a "x$ax_gcc_arch" != xno; then if test "x[]m4_default([$1],yes)" = xyes; then # if we require portable code flag_prefixes="-mtune=" if test "x$ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor" = xclang; then flag_prefixes="-march="; fi # -mcpu=$arch and m$arch generate nonportable code on every arch except # x86. And some other arches (e.g. Alpha) don't accept -mtune. Grrr. case $host_cpu in i*86|x86_64*|amd64*) flag_prefixes="$flag_prefixes -mcpu= -m";; esac else flag_prefixes="-march= -mcpu= -m" fi for flag_prefix in $flag_prefixes; do for arch in $ax_gcc_arch; do flag="$flag_prefix$arch" AX_CHECK_COMPILE_FLAG($flag, [if test "x$ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor" = xclang; then if test "x[]m4_default([$1],yes)" = xyes; then if test "x$flag" = "x-march=$arch"; then flag=-mtune=$arch; fi fi fi; ax_cv_gcc_archflag=$flag; break]) done test "x$ax_cv_gcc_archflag" = xunknown || break done fi fi # $GCC=yes ]) AC_MSG_CHECKING([for gcc architecture flag]) AC_MSG_RESULT($ax_cv_gcc_archflag) if test "x$ax_cv_gcc_archflag" = xunknown; then m4_default([$3],:) else m4_default([$2], [CFLAGS="$CFLAGS $ax_cv_gcc_archflag"]) fi ]) ctsim-6.0.2/scripts/ax_check_compile_flag.m40000644000175000017500000000640313254360476020064 0ustar kevinkevin# =========================================================================== # https://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html # =========================================================================== # # SYNOPSIS # # AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT]) # # DESCRIPTION # # Check whether the given FLAG works with the current language's compiler # or gives an error. (Warnings, however, are ignored) # # ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on # success/failure. # # If EXTRA-FLAGS is defined, it is added to the current language's default # flags (e.g. CFLAGS) when the check is done. The check is thus made with # the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to # force the compiler to issue an error when a bad flag is given. # # INPUT gives an alternative input source to AC_COMPILE_IFELSE. # # NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this # macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG. # # LICENSE # # Copyright (c) 2008 Guido U. Draheim # Copyright (c) 2011 Maarten Bosmans # # 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, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. #serial 5 AC_DEFUN([AX_CHECK_COMPILE_FLAG], [AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [ ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1" AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])], [AS_VAR_SET(CACHEVAR,[yes])], [AS_VAR_SET(CACHEVAR,[no])]) _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags]) AS_VAR_IF(CACHEVAR,yes, [m4_default([$2], :)], [m4_default([$3], :)]) AS_VAR_POPDEF([CACHEVAR])dnl ])dnl AX_CHECK_COMPILE_FLAGS ctsim-6.0.2/scripts/ax_ext.m40000644000175000017500000003606113254360476015111 0ustar kevinkevin# =========================================================================== # https://www.gnu.org/software/autoconf-archive/ax_ext.html # =========================================================================== # # SYNOPSIS # # AX_EXT # # DESCRIPTION # # Find supported SIMD extensions by requesting cpuid. When a SIMD # extension is found, the -m"simdextensionname" is added to SIMD_FLAGS if # compiler supports it. For example, if "sse2" is available then "-msse2" # is added to SIMD_FLAGS. # # Find other supported CPU extensions by requesting cpuid. When a # processor extension is found, the -m"extensionname" is added to # CPUEXT_FLAGS if compiler supports it. For example, if "bmi2" is # available then "-mbmi2" is added to CPUEXT_FLAGS. # # This macro calls: # # AC_SUBST(SIMD_FLAGS) # AC_SUBST(CPUEXT_FLAGS) # # And defines: # # HAVE_RDRND / HAVE_BMI1 / HAVE_BMI2 / HAVE_ADX / HAVE_MPX # HAVE_PREFETCHWT1 / HAVE_ABM / HAVE_MMX / HAVE_SSE / HAVE_SSE2 # HAVE_SSE3 / HAVE_SSSE3 / HAVE_SSE4_1 / HAVE_SSE4_2 / HAVE_SSE4a # HAVE_SHA / HAVE_AES / HAVE_AVX / HAVE_FMA3 / HAVE_FMA4 / HAVE_XOP # HAVE_AVX2 / HAVE_AVX512_F / HAVE_AVX512_CD / HAVE_AVX512_PF # HAVE_AVX512_ER / HAVE_AVX512_VL / HAVE_AVX512_BW / HAVE_AVX512_DQ # HAVE_AVX512_IFMA / HAVE_AVX512_VBMI / HAVE_ALTIVEC / HAVE_VSX # # LICENSE # # Copyright (c) 2007 Christophe Tournayre # Copyright (c) 2013,2015 Michael Petch # Copyright (c) 2017 Rafael de Lucena Valle # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice # and this notice are preserved. This file is offered as-is, without any # warranty. #serial 17 AC_DEFUN([AX_EXT], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_PROG_CC]) CPUEXT_FLAGS="" SIMD_FLAGS="" case $host_cpu in powerpc*) AC_CACHE_CHECK([whether altivec is supported for old distros], [ax_cv_have_altivec_old_ext], [ if test `/usr/sbin/sysctl -a 2>/dev/null| grep -c hw.optional.altivec` != 0; then if test `/usr/sbin/sysctl -n hw.optional.altivec` = 1; then ax_cv_have_altivec_old_ext=yes fi fi ]) if test "$ax_cv_have_altivec_old_ext" = yes; then AC_DEFINE(HAVE_ALTIVEC,,[Support Altivec instructions]) AX_CHECK_COMPILE_FLAG(-faltivec, SIMD_FLAGS="$SIMD_FLAGS -faltivec", []) fi AC_CACHE_CHECK([whether altivec is supported], [ax_cv_have_altivec_ext], [ if test `LD_SHOW_AUXV=1 /bin/true 2>/dev/null|grep -c altivec` != 0; then ax_cv_have_altivec_ext=yes fi ]) if test "$ax_cv_have_altivec_ext" = yes; then AC_DEFINE(HAVE_ALTIVEC,,[Support Altivec instructions]) AX_CHECK_COMPILE_FLAG(-maltivec, SIMD_FLAGS="$SIMD_FLAGS -maltivec", []) fi AC_CACHE_CHECK([whether vsx is supported], [ax_cv_have_vsx_ext], [ if test `LD_SHOW_AUXV=1 /bin/true 2>/dev/null|grep -c vsx` != 0; then ax_cv_have_vsx_ext=yes fi ]) if test "$ax_cv_have_vsx_ext" = yes; then AC_DEFINE(HAVE_VSX,,[Support VSX instructions]) AX_CHECK_COMPILE_FLAG(-mvsx, SIMD_FLAGS="$SIMD_FLAGS -mvsx", []) fi ;; i[[3456]]86*|x86_64*|amd64*) AC_REQUIRE([AX_GCC_X86_CPUID]) AC_REQUIRE([AX_GCC_X86_CPUID_COUNT]) AC_REQUIRE([AX_GCC_X86_AVX_XGETBV]) eax_cpuid0=0 AX_GCC_X86_CPUID(0x00000000) if test "$ax_cv_gcc_x86_cpuid_0x00000000" != "unknown"; then eax_cpuid0=`echo $ax_cv_gcc_x86_cpuid_0x00000000 | cut -d ":" -f 1` fi eax_cpuid80000000=0 AX_GCC_X86_CPUID(0x80000000) if test "$ax_cv_gcc_x86_cpuid_0x80000000" != "unknown"; then eax_cpuid80000000=`echo $ax_cv_gcc_x86_cpuid_0x80000000 | cut -d ":" -f 1` fi ecx_cpuid1=0 edx_cpuid1=0 if test "$((0x$eax_cpuid0))" -ge 1 ; then AX_GCC_X86_CPUID(0x00000001) if test "$ax_cv_gcc_x86_cpuid_0x00000001" != "unknown"; then ecx_cpuid1=`echo $ax_cv_gcc_x86_cpuid_0x00000001 | cut -d ":" -f 3` edx_cpuid1=`echo $ax_cv_gcc_x86_cpuid_0x00000001 | cut -d ":" -f 4` fi fi ebx_cpuid7=0 ecx_cpuid7=0 if test "$((0x$eax_cpuid0))" -ge 7 ; then AX_GCC_X86_CPUID_COUNT(0x00000007, 0x00) if test "$ax_cv_gcc_x86_cpuid_0x00000007" != "unknown"; then ebx_cpuid7=`echo $ax_cv_gcc_x86_cpuid_0x00000007 | cut -d ":" -f 2` ecx_cpuid7=`echo $ax_cv_gcc_x86_cpuid_0x00000007 | cut -d ":" -f 3` fi fi ecx_cpuid80000001=0 edx_cpuid80000001=0 if test "$((0x$eax_cpuid80000000))" -ge "$((0x80000001))" ; then AX_GCC_X86_CPUID(0x80000001) if test "$ax_cv_gcc_x86_cpuid_0x80000001" != "unknown"; then ecx_cpuid80000001=`echo $ax_cv_gcc_x86_cpuid_0x80000001 | cut -d ":" -f 3` edx_cpuid80000001=`echo $ax_cv_gcc_x86_cpuid_0x80000001 | cut -d ":" -f 4` fi fi AC_CACHE_VAL([ax_cv_have_mmx_os_support_ext], [ ax_cv_have_mmx_os_support_ext=yes ]) ax_cv_have_none_os_support_ext=yes AC_CACHE_VAL([ax_cv_have_sse_os_support_ext], [ ax_cv_have_sse_os_support_ext=no, if test "$((0x$edx_cpuid1>>25&0x01))" = 1; then AC_LANG_PUSH([C]) AC_TRY_RUN([ #include #include /* No way at ring1 to ring3 in protected mode to check the CR0 and CR4 control registers directly. Execute an SSE instruction. If it raises SIGILL then OS doesn't support SSE based instructions */ void sig_handler(int signum){ exit(1); } int main(){ signal(SIGILL, sig_handler); /* SSE instruction xorps %xmm0,%xmm0 */ __asm__ __volatile__ (".byte 0x0f, 0x57, 0xc0"); return 0; }], ax_cv_have_sse_os_support_ext=yes, ax_cv_have_sse_os_support_ext=no, ax_cv_have_sse_os_support_ext=no) AC_LANG_POP([C]) fi ]) xgetbv_eax=0 if test "$((0x$ecx_cpuid1>>28&0x01))" = 1; then AX_GCC_X86_AVX_XGETBV(0x00000000) if test x"$ax_cv_gcc_x86_avx_xgetbv_0x00000000" != x"unknown"; then xgetbv_eax=`echo $ax_cv_gcc_x86_avx_xgetbv_0x00000000 | cut -d ":" -f 1` fi AC_CACHE_VAL([ax_cv_have_avx_os_support_ext], [ ax_cv_have_avx_os_support_ext=no if test "$((0x$ecx_cpuid1>>27&0x01))" = 1; then if test "$((0x$xgetbv_eax&0x6))" = 6; then ax_cv_have_avx_os_support_ext=yes fi fi ]) fi AC_CACHE_VAL([ax_cv_have_avx512_os_support_ext], [ ax_cv_have_avx512_os_support_ext=no if test "$ax_cv_have_avx_os_support_ext" = yes; then if test "$((0x$xgetbv_eax&0xe6))" = "$((0xe6))"; then ax_cv_have_avx512_os_support_ext=yes fi fi ]) for ac_instr_info dnl in "none;rdrnd;RDRND;ecx_cpuid1,30;-mrdrnd;HAVE_RDRND;CPUEXT_FLAGS" dnl "none;bmi1;BMI1;ebx_cpuid7,3;-mbmi;HAVE_BMI1;CPUEXT_FLAGS" dnl "none;bmi2;BMI2;ebx_cpuid7,8;-mbmi2;HAVE_BMI2;CPUEXT_FLAGS" dnl "none;adx;ADX;ebx_cpuid7,19;-madx;HAVE_ADX;CPUEXT_FLAGS" dnl "none;mpx;MPX;ebx_cpuid7,14;-mmpx;HAVE_MPX;CPUEXT_FLAGS" dnl "none;prefetchwt1;PREFETCHWT1;ecx_cpuid7,0;-mprefetchwt1;HAVE_PREFETCHWT1;CPUEXT_FLAGS" dnl "none;abm;ABM;ecx_cpuid80000001,5;-mabm;HAVE_ABM;CPUEXT_FLAGS" dnl "mmx;mmx;MMX;edx_cpuid1,23;-mmmx;HAVE_MMX;SIMD_FLAGS" dnl "sse;sse;SSE;edx_cpuid1,25;-msse;HAVE_SSE;SIMD_FLAGS" dnl "sse;sse2;SSE2;edx_cpuid1,26;-msse2;HAVE_SSE2;SIMD_FLAGS" dnl "sse;sse3;SSE3;ecx_cpuid1,1;-msse3;HAVE_SSE3;SIMD_FLAGS" dnl "sse;ssse3;SSSE3;ecx_cpuid1,9;-mssse3;HAVE_SSSE3;SIMD_FLAGS" dnl "sse;sse41;SSE4.1;ecx_cpuid1,19;-msse4.1;HAVE_SSE4_1;SIMD_FLAGS" dnl "sse;sse42;SSE4.2;ecx_cpuid1,20;-msse4.2;HAVE_SSE4_2;SIMD_FLAGS" dnl "sse;sse4a;SSE4a;ecx_cpuid80000001,6;-msse4a;HAVE_SSE4a;SIMD_FLAGS" dnl "sse;sha;SHA;ebx_cpuid7,29;-msha;HAVE_SHA;SIMD_FLAGS" dnl "sse;aes;AES;ecx_cpuid1,25;-maes;HAVE_AES;SIMD_FLAGS" dnl "avx;avx;AVX;ecx_cpuid1,28;-mavx;HAVE_AVX;SIMD_FLAGS" dnl "avx;fma3;FMA3;ecx_cpuid1,12;-mfma;HAVE_FMA3;SIMD_FLAGS" dnl "avx;fma4;FMA4;ecx_cpuid80000001,16;-mfma4;HAVE_FMA4;SIMD_FLAGS" dnl "avx;xop;XOP;ecx_cpuid80000001,11;-mxop;HAVE_XOP;SIMD_FLAGS" dnl "avx;avx2;AVX2;ebx_cpuid7,5;-mavx2;HAVE_AVX2;SIMD_FLAGS" dnl "avx512;avx512f;AVX512-F;ebx_cpuid7,16;-mavx512f;HAVE_AVX512_F;SIMD_FLAGS" dnl "avx512;avx512cd;AVX512-CD;ebx_cpuid7,28;-mavx512cd;HAVE_AVX512_CD;SIMD_FLAGS" dnl "avx512;avx512pf;AVX512-PF;ebx_cpuid7,26;-mavx512pf;HAVE_AVX512_PF;SIMD_FLAGS" dnl "avx512;avx512er;AVX512-ER;ebx_cpuid7,27;-mavx512er;HAVE_AVX512_ER;SIMD_FLAGS" dnl "avx512;avx512vl;AVX512-VL;ebx_cpuid7,31;-mavx512vl;HAVE_AVX512_VL;SIMD_FLAGS" dnl "avx512;avx512bw;AVX512-BW;ebx_cpuid7,30;-mavx512bw;HAVE_AVX512_BW;SIMD_FLAGS" dnl "avx512;avx512dq;AVX512-DQ;ebx_cpuid7,17;-mavx512dq;HAVE_AVX512_DQ;SIMD_FLAGS" dnl "avx512;avx512ifma;AVX512-IFMA;ebx_cpuid7,21;-mavx512ifma;HAVE_AVX512_IFMA;SIMD_FLAGS" dnl "avx512;avx512vbmi;AVX512-VBMI;ecx_cpuid7,1;-mavx512vbmi;HAVE_AVX512_VBMI;SIMD_FLAGS" dnl # do ac_instr_os_support=$(eval echo \$ax_cv_have_$(echo $ac_instr_info | cut -d ";" -f 1)_os_support_ext) ac_instr_acvar=$(echo $ac_instr_info | cut -d ";" -f 2) ac_instr_shortname=$(echo $ac_instr_info | cut -d ";" -f 3) ac_instr_chk_loc=$(echo $ac_instr_info | cut -d ";" -f 4) ac_instr_chk_reg=0x$(eval echo \$$(echo $ac_instr_chk_loc | cut -d "," -f 1)) ac_instr_chk_bit=$(echo $ac_instr_chk_loc | cut -d "," -f 2) ac_instr_compiler_flags=$(echo $ac_instr_info | cut -d ";" -f 5) ac_instr_have_define=$(echo $ac_instr_info | cut -d ";" -f 6) ac_instr_flag_type=$(echo $ac_instr_info | cut -d ";" -f 7) AC_CACHE_CHECK([whether ${ac_instr_shortname} is supported by the processor], [ax_cv_have_${ac_instr_acvar}_cpu_ext], [ eval ax_cv_have_${ac_instr_acvar}_cpu_ext=no if test "$((${ac_instr_chk_reg}>>${ac_instr_chk_bit}&0x01))" = 1 ; then eval ax_cv_have_${ac_instr_acvar}_cpu_ext=yes fi ]) if test x"$(eval echo \$ax_cv_have_${ac_instr_acvar}_cpu_ext)" = x"yes"; then AC_CACHE_CHECK([whether ${ac_instr_shortname} is supported by the processor and OS], [ax_cv_have_${ac_instr_acvar}_ext], [ eval ax_cv_have_${ac_instr_acvar}_ext=no if test x"${ac_instr_os_support}" = x"yes"; then eval ax_cv_have_${ac_instr_acvar}_ext=yes fi ]) if test "$(eval echo \$ax_cv_have_${ac_instr_acvar}_ext)" = yes; then AX_CHECK_COMPILE_FLAG(${ac_instr_compiler_flags}, eval ax_cv_support_${ac_instr_acvar}_ext=yes, eval ax_cv_support_${ac_instr_acvar}_ext=no) if test x"$(eval echo \$ax_cv_support_${ac_instr_acvar}_ext)" = x"yes"; then eval ${ac_instr_flag_type}=\"\$${ac_instr_flag_type} ${ac_instr_compiler_flags}\" AC_DEFINE_UNQUOTED([${ac_instr_have_define}]) else AC_MSG_WARN([Your processor and OS supports ${ac_instr_shortname} instructions but not your compiler, can you try another compiler?]) fi else if test x"${ac_instr_os_support}" = x"no"; then AC_CACHE_VAL(ax_cv_support_${ac_instr_acvar}_ext, eval ax_cv_support_${ac_instr_acvar}_ext=no) AC_MSG_WARN([Your processor supports ${ac_instr_shortname}, but your OS doesn't]) fi fi else AC_CACHE_VAL(ax_cv_have_${ac_instr_acvar}_ext, eval ax_cv_have_${ac_instr_acvar}_ext=no) AC_CACHE_VAL(ax_cv_support_${ac_instr_acvar}_ext, eval ax_cv_support_${ac_instr_acvar}_ext=no) fi done ;; esac AH_TEMPLATE([HAVE_RDRND],[Define to 1 to support Digital Random Number Generator]) AH_TEMPLATE([HAVE_BMI1],[Define to 1 to support Bit Manipulation Instruction Set 1]) AH_TEMPLATE([HAVE_BMI2],[Define to 1 to support Bit Manipulation Instruction Set 2]) AH_TEMPLATE([HAVE_ADX],[Define to 1 to support Multi-Precision Add-Carry Instruction Extensions]) AH_TEMPLATE([HAVE_MPX],[Define to 1 to support Memory Protection Extensions]) AH_TEMPLATE([HAVE_PREFETCHWT1],[Define to 1 to support Prefetch Vector Data Into Caches WT1]) AH_TEMPLATE([HAVE_ABM],[Define to 1 to support Advanced Bit Manipulation]) AH_TEMPLATE([HAVE_MMX],[Define to 1 to support Multimedia Extensions]) AH_TEMPLATE([HAVE_SSE],[Define to 1 to support Streaming SIMD Extensions]) AH_TEMPLATE([HAVE_SSE2],[Define to 1 to support Streaming SIMD Extensions]) AH_TEMPLATE([HAVE_SSE3],[Define to 1 to support Streaming SIMD Extensions 3]) AH_TEMPLATE([HAVE_SSSE3],[Define to 1 to support Supplemental Streaming SIMD Extensions 3]) AH_TEMPLATE([HAVE_SSE4_1],[Define to 1 to support Streaming SIMD Extensions 4.1]) AH_TEMPLATE([HAVE_SSE4_2],[Define to 1 to support Streaming SIMD Extensions 4.2]) AH_TEMPLATE([HAVE_SSE4a],[Define to 1 to support AMD Streaming SIMD Extensions 4a]) AH_TEMPLATE([HAVE_SHA],[Define to 1 to support Secure Hash Algorithm Extension]) AH_TEMPLATE([HAVE_AES],[Define to 1 to support Advanced Encryption Standard New Instruction Set (AES-NI)]) AH_TEMPLATE([HAVE_AVX],[Define to 1 to support Advanced Vector Extensions]) AH_TEMPLATE([HAVE_FMA3],[Define to 1 to support Fused Multiply-Add Extensions 3]) AH_TEMPLATE([HAVE_FMA4],[Define to 1 to support Fused Multiply-Add Extensions 4]) AH_TEMPLATE([HAVE_XOP],[Define to 1 to support eXtended Operations Extensions]) AH_TEMPLATE([HAVE_AVX2],[Define to 1 to support Advanced Vector Extensions 2]) AH_TEMPLATE([HAVE_AVX512_F],[Define to 1 to support AVX-512 Foundation Extensions]) AH_TEMPLATE([HAVE_AVX512_CD],[Define to 1 to support AVX-512 Conflict Detection Instructions]) AH_TEMPLATE([HAVE_AVX512_PF],[Define to 1 to support AVX-512 Conflict Prefetch Instructions]) AH_TEMPLATE([HAVE_AVX512_ER],[Define to 1 to support AVX-512 Exponential & Reciprocal Instructions]) AH_TEMPLATE([HAVE_AVX512_VL],[Define to 1 to support AVX-512 Vector Length Extensions]) AH_TEMPLATE([HAVE_AVX512_BW],[Define to 1 to support AVX-512 Byte and Word Instructions]) AH_TEMPLATE([HAVE_AVX512_DQ],[Define to 1 to support AVX-512 Doubleword and Quadword Instructions]) AH_TEMPLATE([HAVE_AVX512_IFMA],[Define to 1 to support AVX-512 Integer Fused Multiply Add Instructions]) AH_TEMPLATE([HAVE_AVX512_VBMI],[Define to 1 to support AVX-512 Vector Byte Manipulation Instructions]) AC_SUBST(SIMD_FLAGS) AC_SUBST(CPUEXT_FLAGS) ]) ctsim-6.0.2/scripts/make-single-openmp.sh0000755000175000017500000000057513254521632017400 0ustar kevinkevin#!/bin/sh DIR=/tmp rm -rf $DIR/sng $DIR/omp mkdir $DIR/sng $DIR/omp (cd ..; make clean; (./configure --disable-openmp > /dev/null); grep HAVE_OPEN config.h; (make -j 20 > /dev/null); cp tools/ctsimtext src/ctsim $DIR/sng/.) (cd ..; make clean; (./configure --enable-openmp > /dev/null); grep HAVE_OPEN config.h; (make -j 20 > /dev/null); cp tools/ctsimtext src/ctsim $DIR/omp/.) ctsim-6.0.2/scripts/config.guess0000755000175000017500000012564413254360476015705 0ustar kevinkevin#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2016 Free Software Foundation, Inc. timestamp='2016-10-02' # This file 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 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 Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # Please send patches to . me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_SYSTEM}" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval $set_cc_for_build cat <<-EOF > $dummy.c #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` ;; esac # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ /sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || \ echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` machine=${arch}${endian}-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. case "${UNAME_MACHINE_ARCH}" in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # Determine ABI tags. case "${UNAME_MACHINE_ARCH}" in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}${abi}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; *:Sortix:*:*) echo ${UNAME_MACHINE}-unknown-sortix exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") UNAME_MACHINE=alpha ;; "EV5 (21164)") UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/lslpp ] ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = hppa2.0w ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH=hppa2.0w else HP_ARCH=hppa64 fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi else echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; e2k:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; k1om:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; mips64el:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-${LIBC} exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-${LIBC} exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-${LIBC} exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; riscv32:Linux:*:* | riscv64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; SX-ACE:SUPER-UX:*:*) echo sxace-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown eval $set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub # that puts up a graphical alert prompting to install # developer tools. Any system running Mac OS X 10.7 or # later (Darwin 11 and later) is required to have a 64-bit # processor. This is not true of the ARM version of Darwin # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = 386; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; amd64:Isilon\ OneFS:*:*) echo x86_64-unknown-onefs exit ;; esac cat >&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` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: ctsim-6.0.2/scripts/missing0000755000175000017500000001533013254271205014741 0ustar kevinkevin#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2014 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: "UTC" # time-stamp-end: "; # UTC" # End: ctsim-6.0.2/scripts/compile0000755000175000017500000001624513254271205014726 0ustar kevinkevin#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2012-10-14.11; # UTC # Copyright (C) 1999-2014 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 ) 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: "UTC" # time-stamp-end: "; # UTC" # End: ctsim-6.0.2/scripts/test-single-openmp.sh0000755000175000017500000000252613254521675017447 0ustar kevinkevinPR=1651 PV=1441 IX=1151 IY=$IX TIME= DIR=/tmp BIN1=$DIR/omp/ctsimtext BIN2=$DIR/sng/ctsimtext for PHAN in herman; do fbase=${DIR}/${PHAN} rm -f ${fbase}-* echo -n "$BIN1 Prj: "; $TIME $BIN1 phm2pj $fbase-omp.pj $PR $PV --phantom $PHAN --verbose | tail -1 | sed 's/Run time: (.+) /$1/' echo -n "$BIN2 Prj: "; $TIME $BIN2 phm2pj $fbase-sng.pj $PR $PV --phantom $PHAN --verbose | tail -1 | sed 's/Run time: (.+) /$1/' for BP in idiff diff; do for INT in nearest linear cubic; do recbase=${fbase}-${BP}-${INT} echo -n "$BIN1 Rec $BP $INT: "; $TIME $BIN1 pjrec $fbase-omp.pj $recbase-omp.if $IX $IY --verbose --interp $INT --backproj $BP | tail -1 echo -n "$BIN2 Rec $BP $INT: "; $TIME $BIN2 pjrec $fbase-sng.pj $recbase-sng.if $IX $IY --verbose --interp $INT --backproj $BP| tail -1 echo -n "--> Difference Rec $BP $INT: "; $BIN1 if2 $recbase-omp.if $recbase-sng.if --comp echo done done phmbase=${fbase}-phm echo -n "$BIN1 Phm: "; $TIME $BIN1 phm2if ${phmbase}-omp.if $IX $IX --phantom $PHAN --nsample 5 --verbose | tail -1 echo -n "$BIN2 Phm: "; $TIME $BIN2 phm2if ${phmbase}-sng.if $IX $IX --phantom $PHAN --nsample 5 --verbose | tail -1 echo -n "--> Image diff Phantom: "; $BIN1 if2 ${phmbase}-omp.if ${phmbase}-sng.if --comp echo done ctsim-6.0.2/scripts/ax_openmp.m40000644000175000017500000001121413254360476015600 0ustar kevinkevin# =========================================================================== # https://www.gnu.org/software/autoconf-archive/ax_openmp.html # =========================================================================== # # SYNOPSIS # # AX_OPENMP([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) # # DESCRIPTION # # This macro tries to find out how to compile programs that use OpenMP a # standard API and set of compiler directives for parallel programming # (see http://www-unix.mcs/) # # On success, it sets the OPENMP_CFLAGS/OPENMP_CXXFLAGS/OPENMP_F77FLAGS # output variable to the flag (e.g. -omp) used both to compile *and* link # OpenMP programs in the current language. # # NOTE: You are assumed to not only compile your program with these flags, # but also link it with them as well. # # If you want to compile everything with OpenMP, you should set: # # CFLAGS="$CFLAGS $OPENMP_CFLAGS" # #OR# CXXFLAGS="$CXXFLAGS $OPENMP_CXXFLAGS" # #OR# FFLAGS="$FFLAGS $OPENMP_FFLAGS" # # (depending on the selected language). # # The user can override the default choice by setting the corresponding # environment variable (e.g. OPENMP_CFLAGS). # # ACTION-IF-FOUND is a list of shell commands to run if an OpenMP flag is # found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it is # not found. If ACTION-IF-FOUND is not specified, the default action will # define HAVE_OPENMP. # # LICENSE # # Copyright (c) 2008 Steven G. Johnson # Copyright (c) 2015 John W. Peterson # Copyright (c) 2016 Nick R. Papior # # 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, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. #serial 13 AC_DEFUN([AX_OPENMP], [ AC_PREREQ([2.69]) dnl for _AC_LANG_PREFIX AC_CACHE_CHECK([for OpenMP flag of _AC_LANG compiler], ax_cv_[]_AC_LANG_ABBREV[]_openmp, [save[]_AC_LANG_PREFIX[]FLAGS=$[]_AC_LANG_PREFIX[]FLAGS ax_cv_[]_AC_LANG_ABBREV[]_openmp=unknown # Flags to try: -fopenmp (gcc), -mp (SGI & PGI), # -qopenmp (icc>=15), -openmp (icc), # -xopenmp (Sun), -omp (Tru64), # -qsmp=omp (AIX), # none ax_openmp_flags="-fopenmp -openmp -qopenmp -mp -xopenmp -omp -qsmp=omp none" if test "x$OPENMP_[]_AC_LANG_PREFIX[]FLAGS" != x; then ax_openmp_flags="$OPENMP_[]_AC_LANG_PREFIX[]FLAGS $ax_openmp_flags" fi for ax_openmp_flag in $ax_openmp_flags; do case $ax_openmp_flag in none) []_AC_LANG_PREFIX[]FLAGS=$save[]_AC_LANG_PREFIX[] ;; *) []_AC_LANG_PREFIX[]FLAGS="$save[]_AC_LANG_PREFIX[]FLAGS $ax_openmp_flag" ;; esac AC_LINK_IFELSE([AC_LANG_SOURCE([[ @%:@include static void parallel_fill(int * data, int n) { int i; @%:@pragma omp parallel for for (i = 0; i < n; ++i) data[i] = i; } int main() { int arr[100000]; omp_set_num_threads(2); parallel_fill(arr, 100000); return 0; } ]])],[ax_cv_[]_AC_LANG_ABBREV[]_openmp=$ax_openmp_flag; break],[]) done []_AC_LANG_PREFIX[]FLAGS=$save[]_AC_LANG_PREFIX[]FLAGS ]) if test "x$ax_cv_[]_AC_LANG_ABBREV[]_openmp" = "xunknown"; then m4_default([$2],:) else if test "x$ax_cv_[]_AC_LANG_ABBREV[]_openmp" != "xnone"; then OPENMP_[]_AC_LANG_PREFIX[]FLAGS=$ax_cv_[]_AC_LANG_ABBREV[]_openmp fi m4_default([$1], [AC_DEFINE(HAVE_OPENMP,1,[Define if OpenMP is enabled])]) fi ])dnl AX_OPENMP ctsim-6.0.2/Makefile.in0000644000175000017500000006435013254406202013723 0ustar kevinkevin# 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 = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/scripts/ax_check_compile_flag.m4 \ $(top_srcdir)/scripts/ax_ext.m4 \ $(top_srcdir)/scripts/ax_gcc_x86_avx_xgetbv.m4 \ $(top_srcdir)/scripts/ax_gcc_x86_cpuid.m4 \ $(top_srcdir)/scripts/ax_openmp.m4 $(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 = CONFIG_CLEAN_VPATH_FILES = 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 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir dist dist-all distcheck 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 DIST_SUBDIRS = man libctsupport libctsim html cgi-bin include getopt \ libctgraphics src tools helical am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(top_srcdir)/scripts/compile \ $(top_srcdir)/scripts/config.guess \ $(top_srcdir)/scripts/config.sub \ $(top_srcdir)/scripts/install-sh $(top_srcdir)/scripts/missing \ AUTHORS COPYING ChangeLog INSTALL NEWS README TODO \ config.guess config.sub install-sh mkinstalldirs \ scripts//compile scripts//config.guess scripts//config.sub \ scripts//depcomp scripts//install-sh scripts//missing 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) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" 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@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPUEXT_FLAGS = @CPUEXT_FLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ 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@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIMD_FLAGS = @SIMD_FLAGS@ STRIP = @STRIP@ VERSION = @VERSION@ XMKMF = @XMKMF@ X_BASIC_LIBS = @X_BASIC_LIBS@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ X_TOOLKIT_LIBS = @X_TOOLKIT_LIBS@ 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 = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ cgibindir = @cgibindir@ cgibinurl = @cgibinurl@ cgiprograms = @cgiprograms@ ctlibs = @ctlibs@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldata = @htmldata@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lamdefs = @lamdefs@ lamdir = @lamdir@ lamprograms = @lamprograms@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mpienable = @mpienable@ my_includes = @my_includes@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ webdatadir = @webdatadir@ webdataurl = @webdataurl@ webenabled = @webenabled@ wx_cppflags = @wx_cppflags@ wxcflags = @wxcflags@ wxconfig = @wxconfig@ wxlibs = @wxlibs@ @INCLUDED_GETOPT_LONG_FALSE@EXTRA_DIRS1 = @INCLUDED_GETOPT_LONG_TRUE@EXTRA_DIRS1 = getopt @HAVE_SGP_FALSE@EXTRA_DIRS2 = @HAVE_SGP_TRUE@EXTRA_DIRS2 = libctgraphics @HAVE_WXWINDOWS_FALSE@EXTRA_DIRS3 = @HAVE_WXWINDOWS_TRUE@EXTRA_DIRS3 = src SUBDIRS = man libctsupport libctsim html cgi-bin include $(EXTRA_DIRS1) $(EXTRA_DIRS2) $(EXTRA_DIRS3) tools helical EXTRA_DIST = acsite.m4 make.bat msvc/ctsim.dsw msvc/ctsimtext/ctsimtext.dsp msvc/libctsim/libctsim.dsp msvc/ctsim/ctsim.dsp CLEANFILES = docs/html/\* config.log configure.in config.h stamp-h1 all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu 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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(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-recursive 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-recursive 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 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 @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || 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 check: check-recursive all-am: Makefile config.h installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive 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: 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) 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-recursive clean-am: clean-generic clean-local mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) all install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ clean-local 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-generic distclean-hdr \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ 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-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile clean-local: rm -rf docs/html #install-data-hook: # test -d $(datadir) || mkdir -p $(datadir) && chmod 0755 $(datadir) # install -g root -o root -m 0644 docs/ctsim.htb $(datadir) # 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: ctsim-6.0.2/ChangeLog0000644000175000017500000005770113254524511013436 0ustar kevinkevinMar 21, 2018 Version 6.0.2 * Add more OpenMP parallelism * Improve testing script comparing results between OpenMP and non-OpenMP builds * Fix all remaining compiler warnings Mar 20, 2018 Version 6.0.0 * Migrate to wxgtk3.0 * Add OpenMP parallelism and use by default Dec 21, 2012 Version 5.2.1 * tools/phm2helix.cpp: Fix spelling mistake Nov 7, 2010 Version 5.2.0 * tools/ifexport.cpp: Add Text output option (thanks to Christian Thibaudeau) Aug 22, 2009 Version 5.1.3 * src/ctsim.cpp - Improve numbering of unnamed documents. Reduce cut-and-paste code. * configure.ac - Use new AC_INIT form to include package information, email, url Aug 21, 2009 Version 5.1.2 * Conditionalize debugging output Aug 20, 2009 Version 5.1.1 * Use new wxFont constructor. Adjust font sizes. Aug 12, 2009 Version 5.1.0 * All known wxwidgets 2.8 compatibility issues have been fixed Aug 6, 2009 Version 5.0.6 * Use wxWidgets command-line processing rather than existing native processing. * ezset.cpp: Initialize scale settings in constructor * Improve titles of frames * configure.ac: Use wx-config to determine name of wxGL library * src/graph3dview.cpp: wx2.8 compatibility changes to eliminate segv crash when creating 3D objects Aug 3, 2009 Version 5.0.5 * Fix plots when maximum plot value is the same as minimum Aug 3, 2009 Version 5.0.5 * More wx2.8 compatibility fixes. * Fix initial size of Log TextCtrl at start-up. * Fix display of values in Log window by cleaning up string transformtions. Aug 2, 2009 Version 5.0.4 * More wx2.8 compatibility fixes. Ensure that a resize of a window causes a full repaint for phantom, plot, and graph3d canvases. Aug 1, 2009 Version 5.0.1 * missing: Update to latest automake version * configure: make compatible with wxMac * update few source files for non-unicode wxWidgets 2.8 compatibility Aug 1, 2009 Version 5.0.0 * Major revision of wxWidgets code to port from wx2.4 to wx2.8 Currently, code compiles without warnings, but there are GUI visual problems at the momemt running with wx2.8 Sep 17, 2007 Version 4.5.5 * better cleaning in makefiles * use "const char" variables for string literals Sep 10, 2007 Version 4.5.4 * configure.ac: Fix builds with multiple versions of wx-config -- thanks to Steve White Apr 1, 2007 Version 4.5.3 * include/timer.h: Fix building on GCC 4.3 -- thanks to Martin Michlmayr Oct 19, 2006 Version 4.5.2 * src/lipctsim/imagefile.cpp: Change delete to fftw_free -- thanks to Sven Huth Oct 18, 2006 Version 4.5.1 * configure: rebuild from configure.ac Oct 15, 2006 Version 4.5.0 * libctsim/backprojectors.cpp: Fix for iteration bug in backprojection and simply computing rotScale -- thanks to Dan Martin. Mar 16, 2006 Version 4.4.4 * Changes for g++ 4.1 support Aug 22, 2005 Version 4.4.2 * New URL for downloading CTSim Aug 22, 2005 Version 4.4.1 * work-around for compilation problems on Fedora 4 and wxWin 2.4.2 Aug 22, 2005 Version 4.4.0 * Changes in configure.ac for X.org compatibility with Debian Etch and FC4. May not be backward compatibility with XFree86. Aug 10, 2004 Version 4.3.2, Version 4.3.3 * Minor changes in man pages to fix groff warnings Nov 1, 2003 Version 4.3.1 * Add support for SuSE AMD64 Oct 5, 2003 Version 4.3.0 * Ported to incompatible FFTW3 library. CTSim will no longer compile or run with FFTW2. * Save FFTW3 in $HOME/.fftw3-wisdom on platforms where getenv function is available Oct 3, 2003 Version 4.2.7 * Add support for building on RedHat AMD64 Sep 30, 2003 Version 4.2.7 * Fix minor issue with floating point difference backprojection, add optimization * Fix building with newest versions of automake 1.7 * Add support for 8-byte longs [for example, Athlon64] in integer difference backprojection allowing for 64-bit integer math. Mar 22, 2003 Version 4.2.3 * Added Fourier reconstruction method * Support gcc 3.2, wxWindows 2.4, and MacOS X * Fix polar interpolation Jun 26, 2002 Version 3.5.6 * Fix minor color PNG image importing bug * Bug fix for building on Debian alpha platform * Fix g++ compilation warnings Jun 13, 2002 Version 3.5.5 * Fix printing of version number * Minor bug fixes * Updated Win32 compatibility Jun 8, 2002 Version 3.5.4 * Print version number in log window with About command * Fix problem with captions not showing on some windows. Reworked creation of new windows. * Disabled status bar on 3d views * Fix bug in configure.ac that prevented using compiler optimizations. * Updated About splash screen May 29, 2002 Version 3.5.3 * Added support for g++ 3.04 compiler May 8, 2002 Version 3.5.2 * configure: improved CTN (DICOM) installation search * src/ctsim.cpp: Fixed initial image size with import command May 5, 2002 Version 3.5.1 New Features: * ctsim: Added tips to be displayed at startup and via the help menu. * ctsim: Added center-detector concept. Allow for detector array to be any arbitrary distance from center of scanner. As a result, projection files are not incompatible with previous version of CTSim. * ctsim: Added threaded tasks and background manager for background processing as well as taking advantage of multiple-CPU's on SMP systems. (Microsoft Windows only) * ctsim: Added plot t-theta sampling to projection file menu. * ctsim: Added Reconstruction with Rebinning for faster divergent beam reconstructions. * ctsim: Added import and export of DICOM image files. * ctsim: Added PPM, PGM, and PNG file import to imagefile. * ctsim: Added FFT/IFFT of columns of image files. * ctsim: Added clipboard cut/copy/paste for image files. * ctsim: Added region of interest to reconstructions. * ctsim: Added Convert Rectangular Image to Projection files * ctsim: Added "Verbose Logging", "Startup Tips", and "Background processes" options to Preferences dialog. * ctsim: Added plotting of projection file histograms. * plotfile: Added scattergram plot functions * ctsim: Added accelerator key for File-Properties * ctsim: Improved wireframe 3-d display to remove hidden surfaces. * backprojectors.cpp: Added setting of axis extent and increment to reconstructions. * projections.cpp: Can read and reconstruct SIEMENS AR.STAR DICOM projection data files. Bug Fixes: * views.cpp: reduced calls to progress bar update, significant speedup * views.cpp,ctsim.cpp: Fixed bug with window frames sometimes not being displayed on Unix platforms. * views.cpp: Added out-of-memory checks to display for huge image and projection files. * filter.cpp: Fixed Hanning parameter to be 0.5 rather than 0.54 * imagefile.cpp: Fixed scaling factor in fftRows * imagefile.cpp: Fixed bug when performing magnitude() on real-valued image. * sgp.cpp: Fixed bug in drawCircle. * distribution: fixed problem with documentation files not being included with the distribution (Reported by Ian Kay). * sgp.cpp/ezplot.cpp: Improved plotting with markers. * fixed ctsimtext shell when giving no parameters to function-name * phm2if, phm2pj: Updated help messages for renamed phantoms 3.0.3 - Released 2/20/01 * ctsim: Fixed core dump on Linux with OpenGL * ctsim: Fixed context-sensitive help on Linux * ctsim: Fixed About box on Linux 3.0.2 - Released 2/20/01 * scanner.cpp: Fixed bug when number of detectors was even. * ctsim: Improved error handling when trying to convert divergent projections into polar form. 3.0.1 - Released 2/19/01 * ctsim: Fixed dialog box for reconstruction so that rotation angle setting will stay fixed in-between use of the dialog box. * syserror: Fixed display bug for trace messages * ctsim: MSVC optimization bug work-around, compiler options changed. 3.0.0 - Released 2/19/01 * ctsim: Massive update/fix to online help and print manual. * ctsim: Added context-sensitive help to dialog boxes * ctsim: Reformated all dialog boxes, much nicer now. * ctsim: Improved accelerator key handling * global: Added Hanning filter. * global: Improved default parameters to that all defaults give sensible output. 3.0.0beta1 - Released 2/11/01 * ctsim: Added most-recently-used files to File menu with registry storage between executions. * ctsim: Hides arcane features unless enabled by Preferences dialog * ctsim: Added MDI interface for Windows version and made it default for Windows. * ctsim: Added 3-D wireframe view of images (uses OpenGL) * ctsim: Added graphical About box * ctsim: Escape key now removes cursor lines from image file view * ctsim: Added Revert to ImageFile menu * ctsim: Added accelerator (hotkeys) to frames * ctsim: Online help added! * backprojector: Added cubic interpolation * ctsim: Added icons to Frames on X-Window and MS Windows versions * ctsim: Fixed tick-label placement for plots on projection and reconstruction dialogs. * timer.h: Add use of _ftime when compiling on MSVC * global: Projection files are not compatible with previous version due to new scanner definitions. * global: deleted concept of field-of-view and added view ratio and scan ratio concepts. * ctsim: Fixed crash on shutdown bug * pjinfo: Fixed bug when doing --dump and not specifing --endview * phm2pj: Fixed MPI bug with broadcasting of variables * ctsimtext-lam: Changes for first version to compile under lam 3.0.0alpha5 - Released 1/12/00 * ctsim: Added EZPlotDialog, used by debugging plots in procsignal.cpp * ctsimtext: Fixed bugs for MSVC and with empty input lines. Fixed bug in parsing command-line parameters. * views.cpp: Fixed bug in copying of labels from images to plotfiles * syserror.cpp: fixed reporting for fatal errors * projections.cpp: fixed MSVC failure with std:: namespace * procsignal.cpp: fixed bug in equiangular reconstructions for frequency/inverse-fourier filtering 3.0.0alpha4 - Released 1/09/01 * ctsim: Added reset to full-intensity scale menu item * ctsim: Add conversion of projections to polar plot [Thanks to Ian Kay for reference and math hints in polar bilinear scaling] * ctsim: improve bilinear scaling of image size [Thanks to Ian Kay for math tips] * ctsim: imagefile labels are now copied to plotfiles * ctsim: Added more analyze menuitems * ctsimtext: First version. All command-line tools are now accessed through this master shell. Has both command-line and interactive interface * ctsim: Fixed initialization of min/max bug for PlotFiles * ezplot: Cleaned up y-tick label placement * sgp: Added better support for projection/reconstruction animation 3.0.0alpha3 - Released 1/02/01 * ctsim: Added plotting of histograms * imagefile.cpp: fixed bug in generation of 16-bit PNG images * ezplot.cpp: adjusted xtick label displays for better placement 3.0alpha2 - Released 1/02/01 * ctsim: All functions of command-line tools are now in graphical ctsim * ctsim: added generation of filter images * ctsim: Added 2-image math functions (mul, add, div, sub) * ctsim: Added export of imagefiles to graphic file formats * ctsim: Added support for scaling imagefiles in new sizes * ctsim: Added ability to save standard phantom definitions as text files suitable for reading. * ctsim: Add labels for image transformations and display of labels when performing properties of images. * processsignal.cpp: Fixed "off by one" bug in shuffleNaturalToFourierOrder when n is even. Moved functions to fourier.cpp * imagefile.cpp: Added FFTW library to imagefile processing. Converted image math functions to complex-valued math. * phantom.cpp: Added ability to save phantom files as ASCII text. 3.0alpha1 - Released 12/29/00 * Added PlotFile class to system, used by if2 and ctsim for row and column plots and comparison plots * ctsim: Added image comparison statistics and image subtraction * ctsim: Added plotting of rows & columns with y-axis scaling * ctsim: Added row and column plot comparisons between two image files. * ctsim: Added "Process" menu to image file display with math functions. Added 2-dimensional inverse Fourier to math functions. Added support for complex (real/imaginary) images. * mathfuncs.cpp: Reworked statistics algorithm to share between imagefile and plotfile classes. * imagefile.cpp: Fixed scaling bug when rasterizing Phantom with nsamples > 2. Added generic mage math functions, moved from if1.cpp and if2.cpp to imagefile.cpp. Added support complex images. * array2dfile.cpp: Added code to support complex (real/imaginary) images. * if1: Updated to handle error conditions, such as sqrt of a negative number. Converted to use new ImageFile math functions. * if2: Updated to output plot files and use new ImageFile class math functions * if1: Updated to use new ImageFile class math functions * ezplot: Reworked to better store colors/linestyles/symbols with individual curves. Improved display of labels and ticks. Updated to use POL class member variable. Updated to more C++ conventions. * pol: converted to C++ class. Extracted HashTable to separate class. * sgp: Added linestyle settings 2.5.0 - 12/18/00 First Microsoft Windows GUI version Modifications for Microsoft Visual C++ compilation. Improved pjinfo to output binary headers and view data, useful when manually compiling phantoms that vary during projection process. Thanks to Ian Kay for idea and code submission. Improved sorting to find median in ImageFile::statistics Fixed core-dump bug in Array2dFile::labelsCopy() function (Ian Kay) Changed reconstruction dialog to fix onto smaller screens Fixed display of plotting in Projection views Improved animation displays for Projections and Reconstructions Changed code to explicitly use std:: namespace rather than "namespace using std" statements Fixed reconstruction scaling bug introduced in 2.0.6 Renamed if2img to ifexport, if-1 to if1, if-2 to if2 2.0.6 - 12/03/00 Fixed minor compilation problem with procsignal.h Updated README file Fixed bug when simulating projections and Trace == CONSOLE Fixed scaling bug when performing redundant rotations around object 2.0.5 - 12/01/00 Improved compilation on RedHat 7 Changed some of ANSI C header files to C++ header files Removed README.RedHat7 2.0.4 - 11/25/00 Added documentation for --geometry setting Added README.RedHat7 document 2.0.3 - 11/20/00 Fixed bug in generation of binary PGM files Fixed MPI compilation bug in phm2pj.cpp Inverted y-axis output for pj2if (bug alert from Ian Kay) 2.0.2 - 11/8/00 Additions to man pages (Ian Kay) Fix problem with reading of ASCII phantom files (Ian Kay) 2.0.1 - 10/1/00 Fixed syntax error in fftw configuration Slight modifications to support gcc v2.9.6 2.0.0 - 9/7/00 Version 2.0.0 released! ctsim: Added Window menu to Main frame ctsim: Disabled not support reconstruction method Fixed obscure bug in sys_error Fixed compilation in mingw environment not present Fixed compilation in non-graphical environments 2.0.0-b12 - 9/4/00 ctsim: Added animation of reconstruction ctsim: Added saving of dialog parameters for Projection & Reconstruction ctsim: Added progress dialog for rasterization of phantom ctsim: used setpriority to set lower priority ctsim: fixed pReconstruct not being deleted causing scaling problem ctsim: fixed projection animation dialog buttons 2.0.0-b11 - 9/1/00 ctsim: Added projection graph to animation of projection collection ctsim: Added single stepping to projection collection animation ctsim: improved File/Properties display for projection files ctsim: Added progress dialog for reconstructions ctsim: Added file labels for projection and reconstruction images ctsim: Made File/Properties bring up modal dialogs Added reconstruction for Equilinear and Equiangular geometries Changed theta to be -PI/2 to make compliant with Kak-Slaney formulas Separated reconstruction into Reconstructor class Fixed center of detector adjustment for even number of detectors Added --enable-static to generate statically linked programs 2.0.0-b10 - 8/25/00 ctsim: Added animation of projection collection processs ctsim: Added Auto Scaling for image windows ctsim: Change menus from "windowing" to "display scaling" Added FieldOfView and FocalLength ratio parameters to projection collection Added FocalLength & FieldOfView fields to projection data files Added Projection collection for Equilinear and Equiangular geometries Changed name of Rowland Phantom to correct name of Shepp-Logan Fixed bug in backprojection selection 2.0.0-b9 - 8/22/00 Added RCS Id strings to executable files Added RPM Spec file for RPM package creation Added loading of ASCII phanthom definitions from files Fixed compilation for non-SGP architectures Decomposed SignalFilter class into ProcessSignal and SignalFilter classes Added Filter-Generation option to reconstruction to allow direct or inverse_fourier construction of filters Added median to statistics and to auto-windowing 2.0.0-b8 - 8/1/00 Added line color support to SGP Fixed lineAbs bug 2.0.0-b7 - 7/25/00 Finished support for dmallocxx library Fixed bug in SignalFilter::convertFilterMethodNameToID() Rewrote SGP & EZPlot to use C++ object-oriented. SGP can now write to G2 windows and well as WXWindows. ctsim program: "Create Phantom" now shows phantom object Fixed row-plot bug in if-2 Reworked EZPlot's multiple plot operation 2.0.0-b6 - 7/22/00 ctsim program: improved initial size and scroll area for image and projection files ctsim program: added rasterization parameters, projections parameters, and reconstruction parameters dialogs Moved char[] static definition from header files to c++ files Completely reorganized option processing in classes to improve expandability and to assist ctsim graphical user interface. 2.0.0-b5 - 7/17/00 ctsim program: Added dialog to set minimum/maximum display levels Started ctsim.tex document file 2.0.0-b4 - 7/13/00 Fixed compiler warnings at -Wall level Began work on CTSim program to be graphical front-end of all functions Moved current src/*.cpp to tools/*.cpp Made CTSim graphical front-end's home to be src/ 2.0.0-b3 - 7/10/00 Added highly optimized backprojection method idiff3 Moved comparative stats to if-2 program from ifinfo Fixed image display in if2img using G2 library Added column-plot and row-plot options to if-2 Added autoselection of analytic/calculated spatial responses to SignalFilter Added frequency-based preinterpolation to SignalFilter and idiff3 backprojection method. Currently, this technique is still under development and debugging Moved graphic file writing to ImageFile class from if2img program 2.0.0-b2 - 7/07/00 Cleaned up SignalFilter class Added zeropad option to pjrec Added zeropad options to html and cgi files Added fourier_table and rfttw filter methods Added FFTW routines to use real/half-complex transformations 2.0.0-b1 - 7/05/00 Updated trace level processing Added trace level to SignalFilter Fixed magnitude vs. real output bug in FFT/Fourier filter 1.9.9 - 7/04/00 Fixed const issue with ImageFileArray Fixed Array2dFile::labelsCopy() Added copy constructor and assignment for Array2dFileLabel class Added Timer to if-2.cpp and ifinfo.cpp Added beginning of frequency-based (DFT & FFT) filter to SignalFilter Added option processing for filter-method for pjrec to choose between convolution, dft, & fft filtering Fixed format string for EZPlot so axis labels now print Added support for FFTW library 1.9.8 - 6/27/2000 Rewrote Array2dFile class to be non-templated Rewrote Array2dFile class to make reads and writes atomic. No disk files are kept open. Rewrote Array2dFileLabel class to make members private, added access routines Removed timedate.cpp in favor of standard C library time/date functions Renamed ctrec to pjrec, sample-ctrec.sh to sample-ctsim Added signature tag and creation date/time to projection files 1.9.7 - 6/25/2000 Standardized string option processing by classes. All classes use character strings to select options rather than numeric constants. Added fail() and failMessage() methods to verify that objects are created correctly by character strings. Hid C++ assignment and copy constructors in classes that should not have assignment/copy Rewrote ImageFile class Started support for dmallocxx library, not finished Added G.T. Herman image comparision statistics to ifinfo (see imagefile.cpp) Updated ifinfo to show comparative statistics Added printLabels() to Array2dFile class Added printStatistics() to ImageFile class 1.9.6 - 6/22/2000 Moved conversion filter name/id to Filter class Moved conversion backprojection name/id to Backproj class Added MPI broadcasting of strings 1.9.5 - 6/21/2000 Merged proj_reconstr into class Projections Used auto_ptr in Projections::reconstruct to make sure destructor is always called Code cleanup in projections.cpp Moved conversion of phantom names/id to Phantom class 1.9.4 - 6/20/2000 Converted projection files to C++ library with frnetorderstream Converted image files to C++ library with frnetorderstream Converted filter and convolution to object-oriented code Changed default image file to float from double -- Changable in imagefile.h Optimized image file writing on little-endian architectures Updated README and INSTALL 1.9.3 - 6/19/2000 Reorganized source files MPI bug fixed to phm2pj.cpp 1.9.2 - 6/18/2000 Reorganized include files Fixed const pointers in strfuncs 1.9.1 - 6/16/2000 Renamed directories, moved source files, combined source files to change from 6 libraries to 3 libraries (libctsim, libctsupport, and libctgraphics) 1.9.0 - 6/15/2000 Skip versions to make version 2.0 the first fully C++ version Renamed Raysums to Projections throughout files Renamed Detector to Scanner Converted Scanner and Projecions to full object-oriented 0.6.1 - 6/12/2000 Converted Phantom and PhantomElements to Object-Oriented Converted Detector to Object-Oriented 0.6.0-b3 - 6/10/2000 Improved Integer backprojection method Fixed nearest neighbor to be truly nearest neighbor Made linear interpolation more integer arithmetic -> speed improvement Finished converting all C files to C++ Converted all use of malloc/free to C++ new/delete Began object-oriented conversion of Phantom and Projection structures 0.6.0-b2 - 6/8/2000 Converted MPI data structures to C++ object Made ImageFile directly inherit from Array2dFile 0.6.0-b1 - 6/6/2000 First C++ conversions Portable IF (image file) format implemented with objects (SDF removed) - Now all data files are cross-platform compatible Converted from MPI to MPI++ Converted backprojection to object-oriented Removed MTX from libkmath as no longer need -- replaced with C++ matrices 0.5.4 - 6/4/2000 Simpilifed endian handling 0.5.4-b3 - 6/1/2000 Added support for 64-bit (IA64) CPU Removed broken B-spline interpolation Added support for cygwin platform under Windows 2000 Added support for 16-bit PNG graphics 0.5.4-b2 - 5/16/2000 Added compile-time configuration of endian order 0.5.4-b1 - 5/14/2000 Modified the raysum file format to be platform independent 0.5.3 - 5/11/2000 Added Microsoft VC compatibility Cleaned up compilation warnings in libgraph 0.5.2-b5 - 5/7/2000 Continued conversion to ANSI C Removed old CRT routines 0.5.2-b4 - 5/4/2000 Renamed pictures to phantoms, objects to phantom elements Continued code cleanup 0.5.2-b3 - 4/30/200 More code cleanup with reorganizing libraries Added --log and --exp to sdf-1 Allowed negative numbers for window levels in CGI interface 0.5.2-b2 - 4/30/200 Continued code cleanup 0.5.2-b1 - 4/29/2000 Fixed a few MPI bugs Better documented, coded raysum in-memory on on-disk options 0.5.1 - 4/28/2000 Cleaned out library that wasn't being used by CTSim Modified ctsim.cgi to read in configuration file ctsim.conf 0.5.0 - 4/27/2000 First open source distribution for GNU/Linux 6/1999 Converted to GNU/Linux added MPI support via LAM library 1983-84 Developed under MS-DOS and IBM EGA graphics ctsim-6.0.2/libctgraphics/0000755000175000017500000000000013254524615014475 5ustar kevinkevinctsim-6.0.2/libctgraphics/ezset.cpp0000644000175000017500000002734113254272612016337 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** EZSET - Parameter control for EZPLOT ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "ctsupport.h" #include "ezplot.h" #include "pol.h" bool EZPlot::ezset (const std::string& command) { return ezset (command.c_str()); } bool EZPlot::ezset (const char* const command) { return ezcmd (command); } bool EZPlot::ezcmd (const char* const comm) { m_pol.usefile (POL::P_USE_STR, ""); m_pol.set_inputline (comm); char str [POL::MAXTOK+1]; int code; bool retval = true; if (! m_pol.readUserToken (str, &code)) { sys_error (ERR_WARNING, "Illegal EZSET command: %s", str); m_pol.reader(); retval = false; } else retval = do_cmd (code); m_pol.closefile(); /* close input string file */ return (retval); } bool EZPlot::do_cmd (int lx) { char str [1024]; char strIn [1024]; int n; double f; switch (lx) { case S_TEXTSIZE: if (m_pol.readFloat (&f, POL::TT_REAL, FALSE, 0.0, 0.0) == TRUE) { if (f >= 0.0 && f <= 1.0) { v_textsize = f; s_textsize = TRUE; } else s_textsize = FALSE; } break; case S_REPLOT: plot (m_pSGP); break; case S_CLEAR: clearCurves (); break; case S_TITLE: m_pol.readText (strIn, sizeof(strIn)); c_title = strIn; break; case S_LEGEND: m_pol.readText (strIn, sizeof(strIn)); if (m_iCurrentCurve >= 0) setLegend (m_iCurrentCurve, strIn); break; case S_XLABEL: m_pol.readText (strIn, sizeof(strIn)); c_xlabel = strIn; break; case S_YLABEL: m_pol.readText (strIn, sizeof(strIn)); c_ylabel = strIn; break; case S_XCROSS: if (m_pol.readFloat (&f, POL::TT_REAL, FALSE, 0.0, 0.0) == TRUE) { v_xcross = f; s_xcross = TRUE; } else s_xcross = FALSE; break; case S_YCROSS: if (m_pol.readFloat (&f, POL::TT_REAL, FALSE, 0.0, 0.0) == TRUE) { v_ycross = f; s_ycross = TRUE; } else s_ycross = FALSE; break; case S_NOXAXIS: o_xaxis = NOAXIS; break; case S_NOYAXIS: o_yaxis = NOAXIS; break; case S_XLIN: o_xaxis = LINEAR; break; case S_YLIN: o_yaxis = LINEAR; break; case S_XLOG: o_xaxis = LOG; break; case S_YLOG: o_yaxis = LOG; break; case S_XAUTOSCALE: s_xmin = FALSE; s_xmax = FALSE; break; case S_YAUTOSCALE: s_ymin = FALSE; s_ymax = FALSE; break; case S_XMIN: if (m_pol.readFloat (&f, POL::TT_REAL, FALSE, 0.0, 0.0) == TRUE) { v_xmin = f; s_xmin = TRUE; } break; case S_XMAX: if (m_pol.readFloat (&f, POL::TT_REAL, FALSE, 0.0, 0.0) == TRUE) { v_xmax = f; s_xmax = TRUE; } break; case S_YMIN: if (m_pol.readFloat (&f, POL::TT_REAL, FALSE, 0.0, 0.0) == TRUE) { v_ymin = f; s_ymin = TRUE; } break; case S_YMAX: if (m_pol.readFloat (&f, POL::TT_REAL, FALSE, 0.0, 0.0) == TRUE) { v_ymax = f; s_ymax = TRUE; } break; case S_SOLID: o_linestyle = SGP::LS_SOLID; break; case S_DASH: int ls; ls = SGP::LS_DASH1; if (m_pol.readInteger (&n, POL::TT_REAL, FALSE, 0, 0) == TRUE) { if (n == 1) ls = SGP::LS_DASH1; else if (n == 2) ls = SGP::LS_DASH2; else if (n == 3) ls = SGP::LS_DASH3; else if (n == 4) ls = SGP::LS_DASH4; else if (n == 5) ls = SGP::LS_DOTTED; } if (m_iCurrentCurve < 0) o_linestyle = ls; else setLinestyle (m_iCurrentCurve, ls); break; case S_NOLINE: o_linestyle = SGP::LS_NOLINE; break; case S_PEN: case S_COLOR: if (m_pol.readInteger (&n, POL::TT_REAL, FALSE, 0, 0) == TRUE) { if (n >= 0) { if (m_iCurrentCurve < 0) o_color = n; else setColor (m_iCurrentCurve, n); } else bad_option("The color you picked"); } break; case S_BOX: o_box = TRUE; break; case S_NOBOX: o_box = FALSE; break; case S_GRID: o_grid = TRUE; break; case S_NOGRID: o_grid = FALSE; break; case S_XLENGTH: if (m_pol.readFloat (&f, POL::TT_REAL, FALSE, 0.0, 0.0) == TRUE) { if (f > 0.0 && f <= 1.0) { o_xlength = f; } } break; case S_YLENGTH: if (m_pol.readFloat (&f, POL::TT_REAL, FALSE, 0.0, 0.0) == TRUE) { if (f > 0.0 && f <= 1.0) { o_ylength = f; } } break; case S_XPORIGIN: if (m_pol.readFloat (&f, POL::TT_REAL, FALSE, 0.0, 0.0) == TRUE) { if (f >= 0.0 && f < 1.0) { o_xporigin = f; } } break; case S_YPORIGIN: if (m_pol.readFloat (&f, POL::TT_REAL, FALSE, 0.0, 0.0) == TRUE) { if (f >= 0.0 && f < 1.0) { o_yporigin = f; } } break; case S_TAG: if (m_pol.readWord("no", 2) == TRUE) o_tag = FALSE; else if (m_pol.readWord("off", 2) == TRUE) o_tag = FALSE; else o_tag = TRUE; break; case S_LEGENDBOX: if (m_pol.readWord("inside", 2) == TRUE) o_legendbox = INSIDE; else if (m_pol.readWord("outside", 3) == TRUE) o_legendbox = OUTSIDE; else if (m_pol.readWord("none",2) == TRUE) o_legendbox = NOLEGEND; else { m_pol.readText (str, POL::MAXTOK); bad_option(str); } break; case S_XLEGEND: if (m_pol.readFloat (&f, POL::TT_REAL, FALSE, 0.0, 0.0) == TRUE) { if (f >= 0.0 && f < 1.0) { v_xlegend = f; s_xlegend = TRUE; } else s_xlegend = FALSE; } break; case S_YLEGEND: if (m_pol.readFloat (&f, POL::TT_REAL, FALSE, 0.0, 0.0) == TRUE) { if (f >= 0.0 && f < 1.0) { v_ylegend = f; s_ylegend = TRUE; } else s_ylegend = FALSE; } break; case S_SYMBOL: if (m_pol.readInteger (&n, POL::TT_REAL, FALSE, 0, 0) == TRUE) { if (n > 0 && n <= MAXSYMBOL) { if (m_iCurrentCurve < 0) o_symbol = n; else setSymbol (m_iCurrentCurve, n); } } else { if (m_pol.readWord("every",5) == TRUE) { if (m_pol.readInteger (&n, POL::TT_REAL, FALSE, 0, 0) == TRUE) { int sym = 1; if (n > 0) sym = n; if (m_iCurrentCurve < 0) o_symfreq = sym; else setSymbolFreq (m_iCurrentCurve, sym); } } else if (m_pol.readWord ("none",4) == TRUE) { o_symbol = -1; } } break; case S_CURVE: if (m_pol.readInteger (&n, POL::TT_REAL, FALSE, 0, 0) == TRUE) { if (n > 0) m_iCurrentCurve = n - 1; } else { if (m_pol.readWord ("all",3) == TRUE) m_iCurrentCurve = -1; } break; case S_XTICKS: if (m_pol.readUserToken(str,&lx) == FALSE) break; if (lx == S_ABOVE) o_xticks = ABOVE; else if (lx == S_BELOW) o_xticks = BELOW; else if (lx == S_NOLABEL) o_xtlabel = FALSE; else if (lx == S_LABEL) o_xtlabel = TRUE; else if (lx == S_MAJOR) { if (m_pol.readInteger (&n, POL::TT_REAL, FALSE, 0, 0) == TRUE) if (n > 1 && n < 100) o_xmajortick = n; } else if (lx == S_MINOR) if (m_pol.readInteger (&n, POL::TT_REAL, FALSE, 0, 0) == TRUE) { if (n >= 0 && n < 100) { o_xminortick = n; } } break; case S_YTICKS: if (m_pol.readUserToken(str,&lx) == FALSE) break; if (lx == S_RIGHT) o_yticks = RIGHT; else if (lx == S_LEFT) o_yticks = LEFT; else if (lx == S_NOLABEL) o_ytlabel = FALSE; else if (lx == S_LABEL) o_ytlabel = TRUE; else if (lx == S_MAJOR) { if (m_pol.readInteger (&n, POL::TT_REAL, FALSE, 0, 0) == TRUE) { if (n > 1 && n < 100) { o_ymajortick = n; } } } else if (lx == S_MINOR) if (m_pol.readInteger (&n, POL::TT_REAL, FALSE, 0, 0) == TRUE) { if (n >= 0 && n < 100) { o_yminortick = n; } } break; case S_LXFRAC: if (m_pol.readInteger (&n, POL::TT_REAL, FALSE, 0, 0) == TRUE) { if (n >= 0) { v_lxfrac = n; s_lxfrac = TRUE; } } else s_lxfrac = FALSE; break; case S_LYFRAC: if (m_pol.readInteger (&n, POL::TT_REAL, FALSE, 0, 0) == TRUE) { if (n >= 0) { v_lyfrac = n; s_lyfrac = TRUE; } } else s_lyfrac = FALSE; break; break; default: fprintf (stderr, "Unimplemented EZPLOT command\n"); break; } m_pol.reader (); return (true); } void EZPlot::bad_option (const char *opt) { sys_error (ERR_WARNING, "INVALID option: %s", opt); } //---------------------------------------------------------------------- // KEYWORDS / CODES TABLE //---------------------------------------------------------------------- const struct KeywordCodeTable EZPlot::m_sKeywords[] = { {"solid", S_SOLID}, {"dash", S_DASH}, {"curve", S_CURVE}, {"noline", S_NOLINE}, {"black", S_BLACK}, {"red", S_RED}, {"blue", S_BLUE}, {"green", S_GREEN}, {"pen", S_PEN}, {"symbol", S_SYMBOL}, {"every", S_EVERY}, {"none", S_NONE}, {"legend", S_LEGEND}, {"xlegend", S_XLEGEND}, {"ylegend", S_YLEGEND}, {"xlin", S_XLIN}, {"ylin", S_YLIN}, {"xlog", S_XLOG}, {"ylog", S_YLOG}, {"xlabel", S_XLABEL}, {"ylabel", S_YLABEL}, {"xlength", S_XLENGTH}, {"ylength", S_YLENGTH}, {"xticks", S_XTICKS}, {"yticks", S_YTICKS}, {"above", S_ABOVE}, {"label", S_LABEL}, {"below", S_BELOW}, {"nolabel", S_NOLABEL}, {"right", S_RIGHT}, {"left", S_LEFT}, {"xautoscale", S_XAUTOSCALE}, {"yautoscale", S_YAUTOSCALE}, {"xmin", S_XMIN}, {"ymin", S_YMIN}, {"xmax", S_XMAX}, {"ymax", S_YMAX}, {"lxfrac", S_LXFRAC}, {"lyfrac", S_LYFRAC}, {"xcross", S_XCROSS}, {"ycross", S_YCROSS}, {"noxaxis", S_NOXAXIS}, {"noyaxis", S_NOYAXIS}, {"xporigin", S_XPORIGIN}, {"yporigin", S_YPORIGIN}, {"title", S_TITLE}, {"xtitle", S_XTITLE}, {"ytitle", S_YTITLE}, {"replot", S_REPLOT}, {"clear", S_CLEAR}, {"store", S_STORE}, {"restore", S_RESTORE}, {"amark", S_AMARK}, {"units", S_UNITS}, {"inches", S_INCHES}, {"user", S_USER}, {"data", S_DATA}, {"help", S_HELP}, {"exit", S_EXIT}, {"box", S_BOX}, {"nobox", S_NOBOX}, {"grid", S_GRID}, {"nogrid", S_NOGRID}, {"major", S_MAJOR}, {"minor", S_MINOR}, {"color", S_COLOR}, {"legendbox", S_LEGENDBOX}, {"no", S_NO}, {"textsize", S_TEXTSIZE}, }; const int EZPlot::NKEYS = (sizeof(EZPlot::m_sKeywords) / sizeof (struct KeywordCodeTable)); void EZPlot::initKeywords () { for (int i = 0; i < NKEYS; i++) m_pol.addKeyword (m_sKeywords[i].keyword, m_sKeywords [i].code); } ctsim-6.0.2/libctgraphics/Makefile.am0000644000175000017500000000025113254256047016530 0ustar kevinkevinnoinst_LIBRARIES = libctgraphics.a libctgraphics_a_SOURCES=ezplot.cpp ezset.cpp pol.cpp sgp.cpp transformmatrix.cpp AM_CPPFLAGS=@my_includes@ EXTRA_DIST=Makefile.nt ctsim-6.0.2/libctgraphics/ezplot.cpp0000644000175000017500000007562113254272421016524 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** ezplot.cpp ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "ezplot.h" #include #ifdef __GNUWIN32__ int snprintf (char *, size_t, const char*, ...); #endif // Defaults static const double TICKRATIO = 0.4; // ratio of minor to major tick lengths static const int MAXNUMFMT = 15; // maximum length of a numeric format static const int DEF_CURVE_CLR = C_RED; EZPlotCurve::EZPlotCurve (const double* xData, const double* yData, int n) : x(new double[n]), y(new double[n]) { for (int i = 0; i < n; i++) { x[i] = xData[i]; y[i] = yData[i]; } m_iPointCount = n; } EZPlotCurve::~EZPlotCurve () { delete x; delete y; } void EZPlot::addCurve (const double *y, int n) { double* x = new double [n]; for (int i = 0; i < n; i++) x[i] = i; addCurve (x, y, n); delete x; } void EZPlot::addCurve (const float *y, int n) { double* yDouble = new double [n]; for (int i = 0; i < n; i++) yDouble[i] = y[i]; addCurve (yDouble, n); delete yDouble; } void EZPlot::addCurve (const float x[], const double y[], int num) { double* dx = new double [num]; for (int i = 0; i < num; i++) dx[i] = x[i]; addCurve (dx, y, num); delete dx; } void EZPlot::addCurve (const double* const x, const float* const y, int num) { double* dy = new double [num]; for (int i = 0; i < num; i++) dy[i] = y[i]; addCurve (x, dy, num); delete dy; } void EZPlot::addCurve (const double* const x, const double* const y, int num) { if (num < 1) return; EZPlotCurve* pCurve = new EZPlotCurve (x, y, num); m_vecCurves.push_back (pCurve); } EZPlot::~EZPlot () { for (EZPlotCurveIterator i = m_vecCurves.begin(); i != m_vecCurves.end(); i++) delete *i; } void EZPlot::clearCurves () { for (EZPlotCurveIterator i = m_vecCurves.begin(); i != m_vecCurves.end(); i++) delete *i; m_vecCurves.erase (m_vecCurves.begin(), m_vecCurves.end()); initPlotSettings(); } EZPlot::EZPlot () { initKeywords(); m_pol.addSkipWord ("please"); m_pol.addSkipWord ("use"); m_pol.addSkipWord ("are"); m_pol.addSkipWord ("and"); m_pol.addSkipWord ("is"); m_pol.addSkipWord ("the"); m_pol.addSkipWord ("equals"); m_pol.addSkipChar ('='); m_pol.usefile (POL::P_USE_STR,""); m_pol.set_inputline ("!eoc ,"); m_pol.reader (); m_pol.closefile (); initPlotSettings(); } void EZPlot::initPlotSettings () { m_iCurrentCurve = -1; m_pSGP = NULL; c_xlabel = ""; c_ylabel = ""; c_title = ""; o_xporigin = 0.0; o_yporigin = 0.0; o_xlength = 1.0; o_ylength = 1.0; o_xaxis = LINEAR; o_yaxis = LINEAR; o_grid = FALSE; o_box = FALSE; o_xmajortick = 10; o_ymajortick = 8; o_xminortick = 4; o_yminortick = 4; o_color = DEF_CURVE_CLR; o_symfreq = 1; o_symbol = -1; o_linestyle = SGP::LS_SOLID; o_xtlabel = TRUE; o_ytlabel = TRUE; o_xticks = BELOW; o_yticks = LEFT; o_legendbox = INSIDE; o_tag = FALSE; s_xtitle = FALSE; s_ytitle = FALSE; s_xcross = FALSE; s_ycross = FALSE; s_lxfrac = FALSE; s_lyfrac = FALSE; s_xlegend = FALSE; s_ylegend = FALSE; s_textsize = FALSE; s_xmin = FALSE; s_xmax = FALSE; s_ymin = FALSE; s_ymax = FALSE; clr_axis = C_LTGRAY; // set fixed colors clr_title = C_RED; clr_label = C_BLUE; clr_legend = C_CYAN; clr_number = C_GREEN; clr_grid = C_LTGRAY; } void EZPlot::setColor (unsigned int iCurve, int iColor) { if (m_veciColor.size() <= iCurve) { m_veciColor.resize ((m_iCurrentCurve + 1) * 2); m_vecbColorSet.resize ((m_iCurrentCurve + 1) * 2); } m_veciColor [iCurve] = iColor; m_vecbColorSet [iCurve] = true; } void EZPlot::setSymbol (unsigned int iCurve, int iSymbol) { if (m_veciSymbol.size() <= iCurve) { m_veciSymbol.resize ((m_iCurrentCurve + 1) * 2); m_vecbSymbolSet.resize ((m_iCurrentCurve + 1) * 2); } m_veciSymbol [iCurve] = iSymbol; m_vecbSymbolSet [iCurve] = true; } void EZPlot::setSymbolFreq (unsigned int iCurve, int iSymbolFreq) { if (m_veciSymbolFreq.size() <= iCurve) { m_veciSymbolFreq.resize ((m_iCurrentCurve + 1) * 2); m_vecbSymbolFreqSet.resize ((m_iCurrentCurve + 1) * 2); } m_veciSymbolFreq [iCurve] = iSymbolFreq; m_vecbSymbolFreqSet [iCurve] = true; } void EZPlot::setLinestyle (unsigned int iCurve, int iLinestyle) { if (m_veciLinestyle.size() <= iCurve) { m_veciLinestyle.resize ((m_iCurrentCurve + 1) * 2); m_vecbLinestyleSet.resize ((m_iCurrentCurve + 1) * 2); } m_veciLinestyle [iCurve] = iLinestyle; m_vecbLinestyleSet [iCurve] = true; } void EZPlot::setLegend (unsigned int iCurve, const std::string& strLegend) { if (m_vecsLegend.size() <= iCurve) { m_vecsLegend.resize ((m_iCurrentCurve + 1) * 2); m_vecbLegendSet.resize ((m_iCurrentCurve + 1) * 2); } m_vecsLegend [iCurve] = strLegend; m_vecbLegendSet [iCurve] = true; } void EZPlot::setLegend (unsigned int iCurve, const char* const pszLegend) { if (m_vecsLegend.size() <= iCurve) { m_vecsLegend.resize ((m_iCurrentCurve + 1) * 2); m_vecbLegendSet.resize ((m_iCurrentCurve + 1) * 2); } m_vecsLegend [iCurve] = pszLegend; m_vecbLegendSet [iCurve] = true; } int EZPlot::getColor (unsigned int iCurve) const { if (m_veciColor.size() > iCurve && m_vecbColorSet[iCurve]) return m_veciColor[iCurve]; else return o_color; } int EZPlot::getSymbol (unsigned int iCurve) const { if (m_veciSymbol.size() > iCurve && m_vecbSymbolSet[iCurve]) return m_veciSymbol[iCurve]; else return o_symbol; } int EZPlot::getSymbolFreq (unsigned int iCurve) const { if (m_veciSymbolFreq.size() > iCurve && m_vecbSymbolFreqSet[iCurve]) return m_veciSymbolFreq[iCurve]; else return o_symfreq; } int EZPlot::getLinestyle (unsigned int iCurve) const { if (m_veciLinestyle.size() > iCurve && m_vecbLinestyleSet[iCurve]) return m_veciLinestyle[iCurve]; else return o_linestyle; } const std::string* EZPlot::getLegend (unsigned int iCurve) const { if (m_vecsLegend.size() > iCurve && m_vecbLegendSet[iCurve]) return &m_vecsLegend[iCurve]; else return NULL; } /* NAME * plot Plots all curves collected by addCurves () * * SYNOPSIS * plot() * * DESCRIPTION * This routine plots the curves that have stored by addCurves(). * * CALLS * drawAxes() & make_numfmt() */ void EZPlot::plot (SGP* pSGP) { if (m_vecCurves.size() <= 0) return; m_pSGP = pSGP; m_pSGP->setWindow (0., 0., 1., 1.); if (s_textsize == TRUE) m_pSGP->setTextPointSize (v_textsize); charheight = m_pSGP->getCharHeight(); charwidth = m_pSGP->getCharWidth(); double symheight = charheight * 0.3; // size of symbol in NDC double symwidth = symheight; if (m_vecCurves.size() < 1) return; // can't plot if there are no curves to plot // find a curve with at least one point to get base point double xmin, xmax, ymin, ymax; // extent of curves in world coord bool found = false; for (unsigned int iCurve = 0; iCurve < m_vecCurves.size(); iCurve++) { const EZPlotCurve* const pCurve = m_vecCurves [iCurve]; if (pCurve->m_iPointCount > 0) { xmin = pCurve->x[0]; xmax = xmin; ymin = pCurve->y[0]; ymax = ymin; found = true; break; } } if (! found) return; // curve(s) are empty, so no plotting for (unsigned int iCurve = 0; iCurve < m_vecCurves.size(); iCurve++) { const EZPlotCurve* const pCurve = m_vecCurves [iCurve]; for (int ip = 0; ip < pCurve->m_iPointCount; ip++) { if (pCurve->x[ip] > xmax) xmax = pCurve->x[ip]; else if (pCurve->x[ip] < xmin) xmin = pCurve->x[ip]; if (pCurve->y[ip] > ymax) ymax = pCurve->y[ip]; else if (pCurve->y[ip] < ymin) ymin = pCurve->y[ip]; } } // extend graph limits for user defined axis cross positions if (s_xcross == TRUE) { if (v_xcross < xmin) xmin = v_xcross; else if (v_xcross > xmax) xmax = v_xcross; } if (s_ycross == TRUE) { if (v_ycross < ymin) ymin = v_ycross; else if (v_ycross > ymax) ymax = v_ycross; } // find nice endpoints for axes if (! axis_scale (xmin, xmax, o_xmajortick - 1, &xgw_min, &xgw_max, &x_nint) || ! axis_scale (ymin, ymax, o_ymajortick - 1, &ygw_min, &ygw_max, &y_nint)) return; // check if user set x-axis extents if (s_xmin == TRUE) { xgw_min = v_xmin; x_nint = o_xmajortick - 1; } if (s_xmax == TRUE) { xgw_max = v_xmax; x_nint = o_xmajortick - 1; } // check if user set y-axis extents if (s_ymin == TRUE) { ygw_min = v_ymin; y_nint = o_ymajortick - 1; } if (s_ymax == TRUE) { ygw_max = v_ymax; y_nint = o_ymajortick - 1; } // calculate increment between major axis in world coordinates xw_tickinc = (xgw_max - xgw_min) / x_nint; yw_tickinc = (ygw_max - ygw_min) / y_nint; // we have now calcuated xgw_min, xyw_max, ygw_min, & ygw_max // set the number of decimal point to users' setting or default // Two formats for numbers: Fixed: -nnn.f and Exponent: -n.fffE+eee if (s_lxfrac == TRUE) x_frac = v_lxfrac; else x_frac = -1; if (s_lyfrac == TRUE) y_frac = v_lyfrac; else y_frac = -1; make_numfmt (x_numfmt, &x_fldwid, &x_frac, xgw_min, xgw_max, x_nint); make_numfmt (y_numfmt, &y_fldwid, &y_frac, ygw_min, ygw_max, y_nint); xtl_wid = x_fldwid * charwidth; // calc size of tick labels ytl_wid = y_fldwid * charwidth; tl_height = charheight; // calculate the extent of the plot frame xp_min = o_xporigin; yp_min = o_yporigin; xp_max = xp_min + o_xlength; yp_max = yp_min + o_ylength; xp_min = clamp (xp_min, 0., 1.); xp_max = clamp (xp_max, 0., 1.); yp_min = clamp (yp_min, 0., 1.); yp_max = clamp (yp_max, 0., 1.); xa_min = xp_min; // extent of axes xa_max = xp_max; ya_min = yp_min; ya_max = yp_max; // adjust frame for title title_row = ya_max;; if (c_title.length() > 0) ya_max -= 2 * charheight; else ya_max -= 0.7 * charheight; // allow room for yaxis ticklabel // calculate legend box boundaries int max_leg = 0; // longest legend in characters int num_leg = 0; // number of legend titles for (unsigned int iCurve = 0; iCurve < m_vecCurves.size(); iCurve++) { const std::string* pstrLegend = getLegend (iCurve); if (pstrLegend && pstrLegend->length() > 0) { int nLegend = pstrLegend->length(); if (nLegend > 0) { ++num_leg; if (nLegend > max_leg) nLegend = max_leg; } } } if (num_leg > 0 && o_legendbox != NOLEGEND) { double leg_width = (max_leg + 2) * charwidth; // size of legend box double leg_height = num_leg * 3 * charheight; if (s_xlegend == TRUE) xl_max = v_xlegend; else { xl_max = xa_max; if (o_legendbox == OUTSIDE) xa_max -= (leg_width + 0.5 * charwidth); } xl_min = xl_max - leg_width; if (s_ylegend == TRUE) yl_max = v_ylegend; else yl_max = ya_max; yl_min = yl_max - leg_height; m_pSGP->setColor (clr_legend); m_pSGP->drawRect (xl_min, yl_min, xl_max, yl_max); int iLegend = 0; // current legend position for (unsigned int iCurve = 0; iCurve < m_vecCurves.size(); iCurve++) { const std::string* pstrLegend = getLegend (iCurve); if (! pstrLegend || pstrLegend->length() == 0) continue; double xmin = xl_min + 1.0 * charwidth; double xmax = xl_max - 1.0 * charwidth; double y = yl_max - (2.0 + iLegend * 3) * charheight; m_pSGP->moveAbs (xmin, y + 0.5 * charheight); m_pSGP->drawText (pstrLegend->c_str()); m_pSGP->setColor (getColor (iCurve)); int iLS = getLinestyle (iCurve); if (iLS != SGP::LS_NOLINE) { m_pSGP->setLineStyle (iLS); m_pSGP->moveAbs (xmin, y); m_pSGP->lineAbs (xmax, y); } int iSymbol = getSymbol (iCurve); if (iSymbol > 0) { double xinc = (xmax - xmin) / (5 - 1); m_pSGP->setLineStyle (SGP::LS_SOLID); for (int j = 0; j < 5; j++) { m_pSGP->moveAbs (xmin + j * xinc, y); symbol (iSymbol, symwidth, symheight); } } ++iLegend; // move to next legend position } } // end legend printing // calculate the extent of the axes /*-------------------------*/ /* adjust frame for labels */ /*-------------------------*/ // X-Label if (c_xlabel.length() > 0) ya_min += 1.5 * charheight; xlbl_row = xp_min; // put x-label on bottom of plot frame // Y-Label if (c_ylabel.length() > 0) { m_pSGP->setTextAngle (HALFPI); m_pSGP->setTextSize (1.5 * charheight); double xExtent, yExtent; m_pSGP->getTextExtent (c_ylabel.c_str(), &xExtent, &yExtent); m_pSGP->setTextSize (charheight); xa_min += xExtent; m_pSGP->setTextAngle (0.0); } ylbl_col = xp_min; /*------------------------------*/ /* adjust frame for tick labels */ /*------------------------------*/ // Calc offset of tick labels from axes if (o_xaxis == NOAXIS || o_xtlabel == FALSE) xtl_ofs = 0.0; else if (o_xticks == BELOW) xtl_ofs = -0.5 * charheight; else if (o_xticks == ABOVE) xtl_ofs = 0.5 * charheight; if (o_yaxis == NOAXIS || o_ytlabel == FALSE) ytl_ofs = 0.0; else if (o_yticks == LEFT) { double xExtentMin, xExtentMax, yExtent; char s[1024]; snprintf (s, sizeof(s), y_numfmt, ymin); m_pSGP->getTextExtent (s, &xExtentMin, &yExtent); snprintf (s, sizeof(s), y_numfmt, ymax); m_pSGP->getTextExtent (s, &xExtentMax, &yExtent); if (xExtentMin > xExtentMax) xExtentMax = xExtentMin; ytl_ofs = -xExtentMax; } else if (o_yticks == RIGHT) ytl_ofs = 1.5 * charwidth; xa_max -= 0.7 * x_fldwid * charwidth; // make room for last x tick label xt_min = xa_min; yt_min = ya_min; xt_max = xa_max; yt_max = ya_max; // see if need to shrink axis extents and/or tick extents if (xtl_ofs != 0.0 && s_ycross == FALSE) { if (o_xticks == BELOW) { ya_min += 1.5 * charheight; yt_min = ya_min; } else if (o_xticks == ABOVE) { ya_min += 0.0; yt_min = ya_min + 1.5 * charheight; } } else // noaxis, no t-labels, or user set cross yt_min = ya_min; if (ytl_ofs != 0.0 && s_xcross == FALSE) { if (o_yticks == LEFT) { xa_min += 2*charwidth - ytl_ofs; // (2 + y_fldwid) * charwidth; xt_min = xa_min; } else if (o_yticks == RIGHT) { xa_min += 0.0; xt_min = xa_min + ytl_ofs; // + y_fldwid * charwidth; } } else xt_min = xa_min; // decrease size of graph, if necessary, to accommadate space // between axis boundary and boundary of ticks double x_added_ticks = 0; // number of tick spaces added to axis double y_added_ticks = 0; if (o_xaxis == NOAXIS || o_xtlabel == FALSE) x_added_ticks = 0; if (o_yaxis == NOAXIS || o_ytlabel == FALSE) y_added_ticks = 0; if (o_grid == TRUE) { if (x_added_ticks < 0) x_added_ticks = 2; if (y_added_ticks < 0) y_added_ticks = 2; } if (x_added_ticks < 0) { if (o_yticks == LEFT || s_ycross) x_added_ticks = 1; else x_added_ticks = 2; } if (y_added_ticks < 0) { if (o_xticks == BELOW || s_xcross) y_added_ticks = 1; else y_added_ticks = 2; } xn_tickinc = (xt_max - xt_min) / (x_nint + x_added_ticks); yn_tickinc = (yt_max - yt_min) / (y_nint + y_added_ticks); xt_min += 0.5 * x_added_ticks * xn_tickinc; xt_max -= 0.5 * x_added_ticks * xn_tickinc; yt_min += 0.5 * y_added_ticks * yn_tickinc; yt_max -= 0.5 * y_added_ticks * yn_tickinc; xgn_min = xt_min; xgn_max = xt_max; ygn_min = yt_min; ygn_max = yt_max; //------------------------------------------------------------------------ m_xWorldScale = (xgn_max - xgn_min) / (xgw_max - xgw_min); m_yWorldScale = (ygn_max - ygn_min) / (ygw_max - ygw_min); // PLOT CURVES m_pSGP->setLineStyle (SGP::LS_SOLID); drawAxes(); double clipRect[4]; clipRect[0] = xgn_min; clipRect[1] = ygn_min; clipRect[2] = xgn_max; clipRect[3] = ygn_max; for (unsigned int iCurve = 0; iCurve < m_vecCurves.size(); iCurve++) { const EZPlotCurve* const pCurve = m_vecCurves [iCurve]; m_pSGP->setColor (getColor (iCurve)); int iSym = getSymbol (iCurve); int iLS = getLinestyle (iCurve); if (iLS != SGP::LS_NOLINE) { m_pSGP->setLineStyle (iLS); double x1 = convertWorldToNDC_X (pCurve->x[0]); double y1 = convertWorldToNDC_Y (pCurve->y[0]); for (int i = 1; i < pCurve->m_iPointCount; i++) { double x2 = convertWorldToNDC_X (pCurve->x[i]); double y2 = convertWorldToNDC_Y (pCurve->y[i]); double x2Clip = x2; double y2Clip = y2; if (clip_rect (x1, y1, x2Clip, y2Clip, clipRect)) { m_pSGP->moveAbs (x1, y1); m_pSGP->lineAbs (x2Clip, y2Clip); } x1 = x2; y1 = y2; } } if (iSym > 0) { int iSymFreq = getSymbolFreq (iCurve); m_pSGP->setLineStyle (SGP::LS_SOLID); double x = convertWorldToNDC_X (pCurve->x[0]); double y = convertWorldToNDC_Y (pCurve->y[0]); m_pSGP->moveAbs (x, y); symbol (iSym, symwidth, symheight); for (int i = 1; i < pCurve->m_iPointCount; i++) if (i % iSymFreq == 0 || i == pCurve->m_iPointCount - 1) { x = convertWorldToNDC_X (pCurve->x[i]); y = convertWorldToNDC_Y (pCurve->y[i]); if (y >= ygn_min && y <= ygn_max) { m_pSGP->moveAbs (x, y); symbol (iSym, symwidth, symheight); } } } } } /* NAME * drawAxes INTERNAL routine to draw axis & label them * * SYNOPSIS * drawAxes() */ void EZPlot::drawAxes() { double xticklen = 0, yticklen = 0; // length of ticks in NDC double minorinc; // increment between minor axes double xaxispos, yaxispos; // crossing of axes double x, y, x2, y2; bool axis_near; // TRUE if axis too close to print t-label int i, j; char str[256]; char *numstr; m_pSGP->setTextSize (charheight); m_pSGP->setTextColor (1, -1); if (o_xticks == ABOVE) xticklen = 0.5 * charheight; else if (o_xticks == BELOW) xticklen = -0.5 * charheight; if (o_yticks == RIGHT) yticklen = charwidth; else if (o_yticks == LEFT) yticklen = -charwidth; if (c_title.length() > 0) { double wText, hText; m_pSGP->setTextSize (charheight * 2.0); m_pSGP->getTextExtent (c_title.c_str(), &wText, &hText); m_pSGP->moveAbs (xa_min + (xa_max-xa_min)/2 - wText/2, title_row); m_pSGP->setTextColor (clr_title, -1); m_pSGP->drawText (c_title); m_pSGP->setTextSize (charheight); } if (o_grid == TRUE || o_box == TRUE) { m_pSGP->setColor (clr_axis); m_pSGP->moveAbs (xa_min, ya_min); m_pSGP->lineAbs (xa_max, ya_min); m_pSGP->lineAbs (xa_max, ya_max); m_pSGP->lineAbs (xa_min, ya_max); m_pSGP->lineAbs (xa_min, ya_min); } // calculate position of axes // x-axis if (s_ycross == TRUE) { // convert users' world-coord xaxispos = convertWorldToNDC_Y (v_ycross);// axis to its position in NDC x = convertWorldToNDC_X (xgw_min); } else xaxispos = ya_min; // y-axis if (s_xcross == TRUE) { // convert users' world-coord yaxispos = convertWorldToNDC_X (v_xcross);// axis to its NDC position y = convertWorldToNDC_Y (ygw_min); } else yaxispos = xa_min; /*-------------*/ /* draw x-axis */ /*-------------*/ if (o_xaxis == LINEAR) { // draw axis line m_pSGP->setColor (clr_axis); if (o_tag && !o_grid && !o_box && s_xcross) { m_pSGP->moveAbs (xa_min, xaxispos - charheight); m_pSGP->lineAbs (xa_min, xaxispos + charheight); } m_pSGP->moveAbs (xa_min, xaxispos); m_pSGP->lineAbs (xa_max, xaxispos); if (o_tag && !o_grid && !o_box) { m_pSGP->moveAbs (xa_max, xaxispos - charheight); m_pSGP->lineAbs (xa_max, xaxispos + charheight); } if (o_grid == TRUE) { m_pSGP->setColor (clr_grid); for (i = 0; i <= x_nint; i++) { m_pSGP->moveAbs (xt_min + xn_tickinc * i, ya_max); m_pSGP->lineAbs (xt_min + xn_tickinc * i, ya_min); } } m_pSGP->setTextSize (charheight * 1.5); m_pSGP->setTextColor (clr_label, -1); double wText, hText; m_pSGP->getTextExtent (c_xlabel.c_str(), &wText, &hText); m_pSGP->moveAbs (xa_min + (xa_max-xa_min)/2 - wText / 2, xlbl_row + charheight * 1.5); m_pSGP->drawText (c_xlabel); m_pSGP->setTextSize (charheight); minorinc = xn_tickinc / (o_xminortick + 1); for (i = 0; i <= x_nint; i++) { x = xt_min + xn_tickinc * i; m_pSGP->setColor (clr_axis); m_pSGP->moveAbs (x, xaxispos); m_pSGP->lineAbs (x, xaxispos + xticklen); if (i != x_nint) { for (j = 1; j <= o_xminortick; j++) { x2 = x + minorinc * j; m_pSGP->moveAbs (x2, xaxispos); m_pSGP->lineAbs (x2, xaxispos + TICKRATIO * xticklen); } } axis_near = FALSE; if (xaxispos + xtl_ofs > ya_min && o_yaxis != NOAXIS) { double xw = xgw_min + i * xw_tickinc; double x = convertWorldToNDC_X (xw); double d = x - yaxispos; if (o_yticks == RIGHT && d >= 0 && d < 0.9 * xn_tickinc) axis_near = TRUE; if (o_yticks == LEFT && d <= 0 && d > -0.9 * xn_tickinc) axis_near = TRUE; } if (o_xtlabel == TRUE && axis_near == FALSE) { snprintf (str, sizeof(str), x_numfmt, xgw_min + xw_tickinc * i); numstr = str_skip_head (str, " "); double xExtent, yExtent; m_pSGP->getTextExtent (numstr, &xExtent, &yExtent); m_pSGP->moveAbs (x - xExtent/2, xaxispos + xtl_ofs); m_pSGP->setTextColor (clr_number, -1); m_pSGP->drawText (numstr); } } } // X - Axis /*--------*/ /* y-axis */ /*--------*/ if (o_yaxis == LINEAR) { m_pSGP->setColor (clr_axis); if (o_tag && !o_grid && !o_box && s_ycross) { m_pSGP->moveAbs (yaxispos - charwidth, ya_min); m_pSGP->lineAbs (yaxispos + charwidth, ya_min); } m_pSGP->moveAbs (yaxispos, ya_min); m_pSGP->lineAbs (yaxispos, ya_max); if (o_tag && !o_grid && !o_box) { m_pSGP->moveAbs (yaxispos - charwidth, ya_max); m_pSGP->lineAbs (yaxispos + charwidth, ya_max); } if (o_grid == TRUE) { m_pSGP->setColor (clr_grid); for (i = 0; i <= y_nint; i++) { y = yt_min + yn_tickinc * i; m_pSGP->moveAbs (xa_max, y); m_pSGP->lineAbs (xa_min, y); } } m_pSGP->setTextAngle (HALFPI); m_pSGP->setTextSize (1.5 * charheight); m_pSGP->setTextColor (clr_label, -1); double xExtent, yExtent; m_pSGP->getTextExtent (c_ylabel.c_str(), &xExtent, &yExtent); m_pSGP->moveAbs (ylbl_col, ya_min + (ya_max-ya_min)/2 - yExtent / 2); m_pSGP->drawText (c_ylabel); m_pSGP->setTextAngle (0.0); m_pSGP->setTextSize (charheight); minorinc = yn_tickinc / (o_yminortick + 1); for (i = 0; i <= y_nint; i++) { y = yt_min + yn_tickinc * i; m_pSGP->setColor (clr_axis); m_pSGP->moveAbs (yaxispos, y); m_pSGP->lineAbs (yaxispos + yticklen, y); if (i != y_nint) { for (j = 1; j <= o_yminortick; j++) { y2 = y + minorinc * j; m_pSGP->moveAbs (yaxispos, y2); m_pSGP->lineAbs (yaxispos + TICKRATIO * yticklen, y2); } } axis_near = FALSE; if (yaxispos + ytl_ofs > xa_min && o_xaxis != NOAXIS) { double yw = ygw_min + i * yw_tickinc; double y = convertWorldToNDC_Y (yw); double d = y - xaxispos; if (o_xticks == ABOVE && d >= 0 && d < 0.9 * yn_tickinc) axis_near = TRUE; if (o_xticks == BELOW && d <= 0 && d > -0.9 * yn_tickinc) axis_near = TRUE; } if (o_ytlabel == TRUE && axis_near == FALSE) { snprintf (str, sizeof(str), y_numfmt, ygw_min + yw_tickinc * i); double xExtent, yExtent; m_pSGP->getTextExtent (str, &xExtent, &yExtent); if (o_yticks == LEFT) m_pSGP->moveAbs (yaxispos - 1.5 * charwidth - xExtent, y + 0.5 * yExtent); else m_pSGP->moveAbs (yaxispos + 1.5 * charwidth, y + 0.5 * yExtent); m_pSGP->setTextColor (clr_number, -1); m_pSGP->drawText (str); } } } // Y - Axis } void EZPlot::symbol (int sym, double symwidth, double symheight) { if (sym <= 0) return; if (sym == SB_CROSS) { m_pSGP->markerRel (0, 0); // m_pSGP->moveRel (-0.5 * symwidth, -0.5 * symheight); // m_pSGP->lineRel (symwidth, symheight); // m_pSGP->moveRel (-symwidth, 0.0); // m_pSGP->lineRel (symwidth, -symheight); // m_pSGP->moveRel (-0.5 * symwidth, 0.5 * symheight); } else if (sym == SB_PLUS) { m_pSGP->moveRel (-0.5 * symwidth, 0.0); m_pSGP->lineRel (symwidth, 0.0); m_pSGP->moveRel (-0.5 * symwidth, -0.5 * symheight); m_pSGP->lineRel (0.0, symheight); m_pSGP->moveRel (0.0, -0.5 * symheight); } else if (sym == SB_BOX) { m_pSGP->moveRel (-0.5 * symwidth, -0.5 * symheight); m_pSGP->lineRel (symwidth, 0.0); m_pSGP->lineRel (0.0, symheight); m_pSGP->lineRel (-symwidth, 0.0); m_pSGP->lineRel (0.0, -symheight); m_pSGP->moveRel (0.5 * symwidth, 0.5 * symheight); } else if (sym == SB_CIRCLE) { m_pSGP->drawCircle (symwidth); } else if (sym == SB_ERRORBAR) { m_pSGP->moveRel (-0.5 * symwidth, 0.5 * symheight); m_pSGP->lineRel (symwidth, 0.0); m_pSGP->moveRel (-0.5 * symwidth, 0.0); m_pSGP->lineRel (0.0, -symheight); m_pSGP->moveRel (-0.5 * symwidth, 0.0); m_pSGP->lineRel (symwidth, 0.0); m_pSGP->moveRel (-0.5 * symwidth, 0.5 * symheight); } else if (sym == SB_POINT) { m_pSGP->pointRel (0, 0); } } /* NAME * axis_scale calculates graph axis scaling * * SYNOPSIS: * retval = axis_scale (min, max, nint, minp, maxp, nintp, * rec_total, rec_frac) * * INPUT: * double min Smallest value to plot * double max Largest value to plot * int nint Number of intervals desired * * OUTPUT: * int retval FALSE if illegal parameters, else TRUE * double *minp Minimum graph value * double *maxp Maximum graph value * int *nintp Number of intervals for graph * int *rec_total Recommended field width for printing out the number * int *rec_frac Recommended number of digits for print fraction */ int EZPlot::axis_scale (double min, double max, int nint, double *minp, double *maxp, int *nintp) { if (nint < 1) { sys_error (ERR_WARNING, "No intervals to plot: num intervals=%d [axis_scale]", nint); return (FALSE); } if (min >= max) { double scaled = fabs(max) / 10; if (scaled == 0) scaled = 0.1; *minp = min - scaled; *maxp = max + scaled; *nintp = 2; return (TRUE); } double eps = 0.025; double a = fabs(min); if (fabs(min) < fabs(max)) a = fabs(max); double scale = pow (10.0, floor(log10(a))); loop: double mina = min / scale; double maxa = max / scale; double d = (maxa - mina) / nint; double j = d * eps; double e = floor (log10(d)); double f = d / pow (10.0, e); double v = 10.0; if (f < sqrt(2.0)) v = 1.0; else if (f < sqrt (10.0)) v = 2.0; else if (f < sqrt (50.0)) v = 5.0; double wdt = v * pow (10.0, e); double g = floor (mina / wdt); if (fabs(g + 1 - mina / wdt) < j) g = g + 1; #undef TEST1 #ifdef TEST1 g++; #endif *minp = wdt * g; double h = floor (maxa / wdt) + 1.0; if (fabs(maxa / wdt + 1 - h) < j) h = h - 1; #ifdef TEST1 h--; #endif *maxp = wdt * h; *nintp = static_cast(h - g); if (fabs(*maxp) >= 10.0 || fabs(*minp) >= 10.0) { scale = scale * 10.0; goto loop; } *minp *= scale; *maxp *= scale; return (TRUE); } /* NAME * make_numfmt Make a numeric format string * * SYNOPSIS * make_numfmt (fmtstr, fldwid, nfrac, min, max, nint) * char *fmtstr Returned format string for printf() * int *fldwid Returned field width * int *nfrac If < 0, then calculate best number of * fraction places & return that value * If >= 0, then use that number of places * double min Minimum value * double max Maximum value * int nint Number of intervals between min & max * * DESCRIPTION * This routine is written as an INTERNAL routine for EZPLOT */ static inline double my_trunc (double x) { double integer; modf (x, &integer); return (integer); } void EZPlot::make_numfmt (char *fmtstr, int *fldwid, int *nfrac, double minval, double maxval, int nint) { int wid, frac, expon; double delta = (maxval - minval) / nint; double absmin = fabs(minval); double absmax = fabs(maxval); if (absmin > absmax) absmax = absmin; double logt = log10( absmax ); if (fabs(logt) >= 6) { // use exponential format if (fabs(logt) > 99) expon = 5; // E+102 else expon = 4; // E+00 if (*nfrac < 0) { // calculate frac delta /= pow (10., floor(logt)); // scale delta frac = static_cast(fabs(my_trunc(log10(delta)))) + 1; if (frac < 1) frac = 1; // to be safe, add decimal pt } else // use users' frac frac = *nfrac; wid = 2 + frac + expon; if (minval < 0. || maxval < 0.) ++wid; sprintf (fmtstr, "%s%d%s%d%s", "%", wid, ".", frac, "g"); } else { // use fixed format wid = static_cast(my_trunc(logt)) + 1; if (wid < 1) wid = 1; if (minval < 0. || maxval < 0.) ++wid; if (*nfrac < 0) { // calculate frac if (delta >= 0.999999) frac = 1; // add a decimal pt to be safe else frac = static_cast(fabs(my_trunc(log10(delta)))) + 1; } else // use users' frac frac = *nfrac; wid += 1 + frac; sprintf (fmtstr, "%s%d%s%d%s", "%", wid, ".", frac, "f"); } *fldwid = wid; *nfrac = frac; } ctsim-6.0.2/libctgraphics/sgp.cpp0000644000175000017500000005374413254401450015776 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: sgp.cpp Simple Graphics Package ** Programmer: Kevin Rosenberg ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include #include #include "ctsupport.h" #include "sgp.h" SGP_RGBColor SGP::s_aRGBColor[] = { SGP_RGBColor (0, 0, 0), SGP_RGBColor (0, 0, 128), SGP_RGBColor (0, 128, 0), SGP_RGBColor (0, 128, 128), SGP_RGBColor (128, 0, 0), SGP_RGBColor (128, 0, 128), SGP_RGBColor (128, 128, 0), SGP_RGBColor (80, 80, 80), SGP_RGBColor (160, 160, 160), SGP_RGBColor (0, 0, 255), SGP_RGBColor (0, 255, 0), SGP_RGBColor (0, 255, 255), SGP_RGBColor (255, 0, 0), SGP_RGBColor (255, 0, 255), SGP_RGBColor (255, 255, 0), SGP_RGBColor (255, 255, 255), }; int SGP::s_iRGBColorCount = sizeof(s_aRGBColor) / sizeof(class SGP_RGBColor); #ifdef HAVE_WXWINDOWS SGPDriver::SGPDriver (wxDC* pDC, int xsize, int ysize) : m_iPhysicalXSize(xsize), m_iPhysicalYSize(ysize), m_idDriver(0), m_pDC(pDC) { m_idDriver |= SGPDRIVER_WXWINDOWS; } #endif SGPDriver::SGPDriver (const char* szWinTitle, int xsize, int ysize) : m_iPhysicalXSize(xsize), m_iPhysicalYSize(ysize), m_sWindowTitle(szWinTitle), m_idDriver(0) { #ifdef HAVE_G2_H m_idG2 = g2_open_X11X (m_iPhysicalXSize, m_iPhysicalYSize, 10, 10, const_cast(szWinTitle), const_cast(szWinTitle), NULL, -1, -1); m_idDriver |= SGPDRIVER_G2; #endif } SGPDriver::~SGPDriver () { #if HAVE_G2_H if (isG2()) g2_close (m_idG2); #endif } // NAME // SGP::SGP Constructor for Simple Graphics Package SGP::SGP (const SGPDriver& driver) : m_driver (driver) { m_iPhysicalXSize = m_driver.getPhysicalXSize(); m_iPhysicalYSize = m_driver.getPhysicalYSize(); wc_to_ndc.setIdentity (); mc_to_ndc.setIdentity(); ndc_to_mc.setIdentity(); m_ctm.setIdentity(); #ifdef HAVE_WXWINDOWS initFromDC (driver.idWX()); #endif setWindow (0., 0., 1., 1.); setViewport (0., 0., 1., 1.); moveAbs (0., 0.); stylusNDC (0., 0., false); setTextAngle (0.); setTextPointSize (8); setColor (C_BLACK); setLineStyle (LS_SOLID); setMarker (MARKER_POINT); } #ifdef HAVE_WXWINDOWS void SGP::initFromDC (wxDC* pDC) { m_pen.SetWidth (1); if (m_driver.isWX()) { static const double dScreenDPI = 82; static const double dPointsPerInch = 72.; m_dPointsPerPixel = dPointsPerInch / dScreenDPI; const int iTestPointSize = 12; m_pFont = new wxFont (iTestPointSize, wxFONTFAMILY_ROMAN, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL); #ifdef MSVC m_pFont->SetFaceName(wxString("times new roman")); #endif m_driver.idWX()->SetFont (*m_pFont); double dTestCharHeight = m_driver.idWX()->GetCharHeight(); m_dPointsPerPixel = iTestPointSize / dTestCharHeight; m_driver.idWX()->SetBackground (*wxWHITE_BRUSH); } } #endif SGP::~SGP() { #if HAVE_WXWINDOWS if (m_driver.isWX()) { // m_driver.idWX()->SetFont (wxNullFont); delete m_pFont; } #endif } void SGP::stylusNDC (double x, double y, bool beam) { int xp = static_cast(x * (m_iPhysicalXSize - 1) + 0.5); int yp = static_cast(y * (m_iPhysicalYSize - 1) + 0.5); if (m_driver.isWX()) yp = m_iPhysicalYSize - yp; if (beam) { #if HAVE_WXWINDOWS if (m_driver.isWX()) m_driver.idWX()->DrawLine (m_iCurrentPhysicalX, m_iCurrentPhysicalY, xp, yp); #endif #if HAVE_G2_H if (m_driver.isG2()) g2_line (m_driver.idG2(), m_iCurrentPhysicalX, m_iCurrentPhysicalY, xp, yp); #endif } m_iCurrentPhysicalX = xp; m_iCurrentPhysicalY = yp; } void SGP::markerNDC (double x, double y) { int xp = static_cast(x * (m_iPhysicalXSize - 1) + 0.5); int yp = static_cast(y * (m_iPhysicalYSize - 1) + 0.5); if (m_driver.isWX()) yp = m_iPhysicalYSize - yp; #if HAVE_WXWINDOWS if (m_driver.isWX()) { m_driver.idWX()->DrawPoint (xp, yp); m_driver.idWX()->DrawPoint (xp-1, yp-1); m_driver.idWX()->DrawPoint (xp+1, yp+1); m_driver.idWX()->DrawPoint (xp+1, yp-1); m_driver.idWX()->DrawPoint (xp-1, yp+1); } #endif m_iCurrentPhysicalX = xp; m_iCurrentPhysicalY = yp; } void SGP::pointNDC (double x, double y) { int xp = static_cast(x * (m_iPhysicalXSize - 1) + 0.5); int yp = static_cast(y * (m_iPhysicalYSize - 1) + 0.5); if (m_driver.isWX()) yp = m_iPhysicalYSize - yp; #if HAVE_WXWINDOWS if (m_driver.isWX()) m_driver.idWX()->DrawPoint (xp, yp); #endif m_iCurrentPhysicalX = xp; m_iCurrentPhysicalY = yp; } // NAME // clear Clear Window void SGP::eraseWindow () { #if HAVE_G2_H if (m_driver.isG2()) g2_clear (m_driver.idG2()); #endif #if HAVE_WXWINDOWS if (m_driver.isWX()) { wxBrush brushWhite; brushWhite.SetColour(255,255,255); m_driver.idWX()->SetBackground(brushWhite); m_driver.idWX()->Clear(); m_driver.idWX()->SetBackground(wxNullBrush); #if 1 wxPen pen; pen.SetColour(255,255,255); m_driver.idWX()->SetBrush (brushWhite); m_driver.idWX()->DrawRectangle (0, 0, m_iPhysicalXSize, m_iPhysicalYSize); m_driver.idWX()->SetBrush (wxNullBrush); #endif } #endif } // NAME // sgp2_window Set window in world coordinates void SGP::setWindow (double xmin, double ymin, double xmax, double ymax) { if (xmin >= xmax || ymin >= ymax) { sys_error (ERR_WARNING, "Minimum > Maximum [sgp2_window]"); return; } xw_min = xmin; yw_min = ymin; xw_max = xmax; yw_max = ymax; m_bRecalcTransform = true; } // NAME // sgp2_viewport Set viewport in NDC void SGP::setViewport (double xmin, double ymin, double xmax, double ymax) { if (xmin >= xmax || ymin >= ymax) { sys_error (ERR_WARNING, "Minimum > Maximum [sgp2_viewport]"); return; } xv_min = xmin; yv_min = ymin; xv_max = xmax; yv_max = ymax; m_bRecalcTransform = true; viewNDC[0] = xmin; // Array for clip_rect() viewNDC[1] = ymin; viewNDC[2] = xmax; viewNDC[3] = ymax; } void SGP::getViewport (double& xmin, double& ymin, double& xmax, double& ymax) { xmin = xv_min; ymin = yv_min; xmax = xv_max; ymax = yv_max; } void SGP::getWindow (double& xmin, double& ymin, double& xmax, double& ymax) { xmin = xw_min; ymin = yw_min; xmax = xw_max; ymax = yw_max; } // NAME // frameViewport draw box around viewport void SGP::frameViewport (void) { stylusNDC (xv_min, yv_min, false); stylusNDC (xv_max, yv_min, true); stylusNDC (xv_max, yv_max, true); stylusNDC (xv_min, yv_max, true); stylusNDC (xv_min, yv_min, true); } void SGP::setTextColor (int iFGcolor, int iBGcolor) { #if HAVE_WXWINDOWS if (m_driver.isWX()) { if (iFGcolor >= 0) { wxColor colour (s_aRGBColor[iFGcolor].getRed(), s_aRGBColor[iFGcolor].getGreen(), s_aRGBColor[iFGcolor].getBlue()); m_driver.idWX()->SetTextForeground (colour); } if (iBGcolor >= 0) { wxColor colour (s_aRGBColor[iBGcolor].getRed(), s_aRGBColor[iBGcolor].getGreen(), s_aRGBColor[iBGcolor].getBlue()); m_driver.idWX()->SetTextBackground (colour); } } #endif } void SGP::setColor (int icol) { if (icol >= 0 && icol < s_iRGBColorCount) { #if HAVE_G2_H if (m_driver.isG2()) { int iInk = g2_ink (m_driver.idG2(), s_aRGBColor[icol].getRed() / 255., s_aRGBColor[icol].getGreen() / 255., s_aRGBColor[icol].getBlue() / 255.); g2_pen (m_driver.idG2(), iInk); } #endif #if HAVE_WXWINDOWS if (m_driver.isWX()) { wxColor colour (s_aRGBColor[icol].getRed(), s_aRGBColor[icol].getGreen(), s_aRGBColor[icol].getBlue()); m_pen.SetColour (colour); m_driver.idWX()->SetPen (m_pen); } #endif } } void SGP::setPenWidth (int iWidth) { if (iWidth >= 0) { #if HAVE_WXWINDOWS if (m_driver.isWX()) { m_pen.SetWidth (iWidth); m_driver.idWX()->SetPen (m_pen); } #endif } } void SGP::setRasterOp (int ro) { #if HAVE_WXWINDOWS if (m_driver.isWX()) { wxRasterOperationMode wxFxn; switch (ro) { case RO_AND: wxFxn = wxAND; break; case RO_AND_INVERT: wxFxn = wxAND_INVERT; break; case RO_AND_REVERSE: wxFxn = wxAND_REVERSE; break; case RO_CLEAR: wxFxn = wxCLEAR; break; case RO_COPY: wxFxn = wxCOPY; break; case RO_EQUIV: wxFxn = wxEQUIV; break; case RO_INVERT: wxFxn = wxINVERT; break; case RO_NAND: wxFxn = wxNAND; break; case RO_NOR: wxFxn = wxNOR; break; case RO_NO_OP: wxFxn = wxNO_OP; break; case RO_OR: wxFxn = wxOR; break; case RO_OR_INVERT: wxFxn = wxOR_INVERT; break; case RO_OR_REVERSE: wxFxn = wxOR_REVERSE; break; case RO_SET: wxFxn = wxSET; break; case RO_SRC_INVERT: wxFxn = wxSRC_INVERT; break; case RO_XOR: wxFxn = wxXOR; break; default: return; } m_driver.idWX()->SetLogicalFunction (wxFxn); } #endif } void SGP::setMarker (int idMarker) { m_iMarker = idMarker; } //============================================================== // set line style. Pass 16 bit repeating pattern //============================================================== void SGP::setLineStyle (int style) { m_iLinestyle = style; #if HAVE_WXWINDOWS if (m_driver.isWX()) { switch (m_iLinestyle) { case LS_SOLID: m_pen.SetStyle (wxSOLID); break; case LS_DASH1: m_pen.SetStyle (wxLONG_DASH); break; case LS_DASH2: m_pen.SetStyle (wxSHORT_DASH); break; case LS_DASH3: m_pen.SetStyle (wxDOT_DASH); break; case LS_DASH4: m_pen.SetStyle (wxCROSS_HATCH); break; case LS_DOTTED: m_pen.SetStyle (wxDOT); break; default: m_pen.SetStyle (wxSOLID); break; } m_driver.idWX()->SetPen (m_pen); } #endif } //============================================================== // absolute draw to //*============================================================== void SGP::lineAbs (double x, double y) { if (m_bRecalcTransform) calc_transform(); double x1 = m_dCurrentWorldX; double y1 = m_dCurrentWorldY; mc_to_ndc.transformPoint (&x1, &y1); double x2 = x; double y2 = y; mc_to_ndc.transformPoint (&x2, &y2); if (clip_rect (x1, y1, x2, y2, viewNDC) == true) { // clip to viewport stylusNDC (x1, y1, false); // move to first point stylusNDC (x2, y2, true); // draw to second point } m_dCurrentWorldX = x; m_dCurrentWorldY = y; } void SGP::moveAbs (double x, double y) { m_dCurrentWorldX = x; m_dCurrentWorldY = y; /* moves are not clipped */ } void SGP::lineRel (double x, double y) { lineAbs (x + m_dCurrentWorldX, y + m_dCurrentWorldY); } void SGP::moveRel (double x, double y) { moveAbs (x + m_dCurrentWorldX, y + m_dCurrentWorldY); } // Height is in master coordinates void SGP::setTextSize (double height) { height /= (yw_max - yw_min); // convert to NDC #if HAVE_G2_H if (m_driver.isG2()) g2_set_font_size(m_driver.idG2(), (height * m_iPhysicalYSize)); #endif #if HAVE_WXWINDOWS if (m_driver.isWX()) { double dHeightPixels = height * m_iPhysicalYSize; double dHeightPoints = dHeightPixels * m_dPointsPerPixel; m_pFont->SetPointSize (nearest(dHeightPoints)); #if DEBUG sys_error (ERR_TRACE, "Setting text size to %d points", nearest(dHeightPoints)); #endif m_driver.idWX()->SetFont (*m_pFont); } #endif } void SGP::setTextNDCSize (double height) { double dHeightPixels = height * m_iPhysicalYSize; #if HAVE_G2_H if (m_driver.isG2()) g2_set_font_size(m_driver.idG2(), nearest(dHeightPixels)); #endif #if HAVE_WXWINDOWS if (m_driver.isWX()) { double dHeightPoints = dHeightPixels * m_dPointsPerPixel; m_pFont->SetPointSize (nearest(dHeightPoints)); m_driver.idWX()->SetFont (*m_pFont); } #endif } void SGP::setTextPointSize (double height) { #if HAVE_G2_H // if (m_driver.isG2()) // g2_set_font_size(m_driver.idG2(), (height * m_iPhysicalYSize)); #endif #if HAVE_WXWINDOWS if (m_driver.isWX()) { m_iTextPointSize = static_cast(height+0.5); m_pFont->SetPointSize (m_iTextPointSize); #if DEBUG sys_error (ERR_TRACE, "Setting point size to %d", m_iTextPointSize); #endif m_driver.idWX()->SetFont (*m_pFont); } #endif } void SGP::getTextExtent (const char* szText, double* worldW, double* worldH) { #if HAVE_WXWINDOWS if (m_driver.isWX()) { wxCoord deviceW, deviceH; wxString str (wxConvCurrent->cMB2WC(szText)); m_driver.idWX()->GetTextExtent (str, &deviceW, &deviceH); if (m_dTextAngle == 90 || m_dTextAngle == -90) { wxCoord temp = deviceW; deviceW = deviceH; deviceH = temp; } *worldW = (xw_max - xw_min) * deviceW / static_cast(m_iPhysicalXSize);; *worldH = (yw_max - yw_min) * deviceH / static_cast(m_iPhysicalYSize); } #endif } double SGP::getCharHeight () { double dHeight = (1. / 50.); #if HAVE_WXWINDOWS if (m_driver.isWX()) { dHeight = m_driver.idWX()->GetCharHeight(); dHeight /= static_cast(m_iPhysicalYSize); dHeight /= (yv_max - yv_min); // scale to viewport; } #endif dHeight *= (yw_max - yw_min); // scale to world coordinates return dHeight; } double SGP::getCharWidth () { double dWidth = (1. / 80.); #if HAVE_WXWINDOWS if (m_driver.isWX()) { dWidth = m_driver.idWX()->GetCharWidth(); dWidth /= static_cast(m_iPhysicalXSize); dWidth /= (xv_max - xv_min); // scale to viewport } #endif dWidth *= (xw_max - xw_min); //scale to world coordinates return dWidth; } void SGP::setTextAngle (double angle) { m_dTextAngle = convertRadiansToDegrees(angle); } void SGP::polylineAbs (double x[], double y[], int n) { if (m_bRecalcTransform) calc_transform(); double x1 = x[0], y1 = y[0]; mc_to_ndc.transformPoint (&x1, &y1); double x2 = x[1], y2 = y[1]; mc_to_ndc.transformPoint (&x2, &y2); double xt = x2; // don't pass (x2,y2) to clip, we need them double yt = y2; // as the beginning point of the next line if (clip_rect (x1, y1, xt, yt, viewNDC)) { stylusNDC (x1, y1, false); stylusNDC (xt, yt, true); } for (int i = 2; i < n; i++) { x1 = x2; y1 = y2; // NDC endpoint of last line x2 = x[i]; y2 = y[i]; mc_to_ndc.transformPoint (&x2, &y2); xt = x2; yt = y2; if (clip_rect (x1, y1, xt, yt, viewNDC)) { stylusNDC (x1, y1, false); stylusNDC (xt, yt, true); } } } void SGP::markerAbs (double x, double y) { if (m_bRecalcTransform) calc_transform(); double xndc = x; double yndc = y; mc_to_ndc.transformPoint (&xndc, &yndc); markerNDC (xndc, yndc); m_dCurrentWorldX = x; m_dCurrentWorldY = y; } void SGP::markerRel (double x, double y) { markerAbs (x + m_dCurrentWorldX, y + m_dCurrentWorldY); } void SGP::pointAbs (double x, double y) { if (m_bRecalcTransform) calc_transform(); double xndc = x, yndc = y; mc_to_ndc.transformPoint (&xndc, &yndc); pointNDC (xndc, yndc); m_dCurrentWorldX = x; m_dCurrentWorldY = y; } void SGP::pointRel (double x, double y) { pointAbs (x + m_dCurrentWorldX, y + m_dCurrentWorldY); } void SGP::drawText (const std::string& rsMessage) { drawText (rsMessage.c_str()); } void SGP::drawText (const char *pszMessage) { if (m_bRecalcTransform) calc_transform(); double xndc = m_dCurrentWorldX; double yndc = m_dCurrentWorldY; mc_to_ndc.transformPoint (&xndc, &yndc); stylusNDC (xndc, yndc, false); // move to location #if HAVE_G2_H if (m_driver.isG2()) { g2_string (m_driver.idG2(), m_iCurrentPhysicalX, m_iCurrentPhysicalY, const_cast(pszMessage)); } #endif #if HAVE_WXWINDOWS if (m_driver.isWX()) { wxString str(wxConvCurrent->cMB2WC(pszMessage)); m_driver.idWX()->DrawRotatedText (str, m_iCurrentPhysicalX, m_iCurrentPhysicalY, m_dTextAngle); } #endif } // NAME // drawRect Draw box in graphics mode // // SYNOPSIS // drawbox (xmin, ymin, xmax, ymax) // double xmin, ymin Lower left corner of box // double xmax, ymax Upper left corner of box // // NOTES // This routine leaves the current position of graphic cursor at lower // left corner of box. void SGP::drawRect (double xmin, double ymin, double xmax, double ymax) { moveAbs (xmin, ymin); lineAbs (xmax, ymin); lineAbs (xmax, ymax); lineAbs (xmin, ymax); lineAbs (xmin, ymin); } // FUNCTION // sgp2_circle - draw circle of radius r at current center void SGP::drawCircle (const double r) { drawArc (r, 0.0, TWOPI); } //============================================================== // draw arc around current center. angles in radius //============================================================== void SGP::drawArc (const double r, double start, double stop) { if (start > stop) { double temp = start; start = stop; stop = temp; } double xCent = m_dCurrentWorldX; double yCent = m_dCurrentWorldY; double x = r * cos (start); double y = r * sin (start); moveAbs (xCent + x, yCent + y); // move from center to start of arc const double thetaIncrement = (5 * (TWOPI / 360)); // 5 degree increments double cosTheta = cos (thetaIncrement); double sinTheta = sin (thetaIncrement); double angle; for (angle = start; angle < stop; angle += thetaIncrement) { double xp = cosTheta * x - sinTheta * y; // translate point by thetaIncrement double yp = sinTheta * x + cosTheta * y; lineAbs (xCent + xp, yCent + yp); x = xp; y = yp; } double c = cos (stop - angle); double s = sin (stop - angle); double xp = c * x - s * y; double yp = s * x + c * y; lineAbs (xCent + xp, yCent + yp); moveAbs (xCent, yCent); // move back to center of circle } /////////////////////////////////////////////////////////////////////// // Coordinate Transformations /////////////////////////////////////////////////////////////////////// void SGP::transformNDCtoMC (double* x, double* y) { if (m_bRecalcTransform) calc_transform(); ndc_to_mc.transformPoint (x, y); } void SGP::transformMCtoNDC (double* x, double* y) { if (m_bRecalcTransform) calc_transform(); mc_to_ndc.transformPoint (x, y); } void SGP::transformMCtoNDC (double xIn, double yIn, double* x, double* y) { if (m_bRecalcTransform) calc_transform(); *x = xIn; *y = yIn; mc_to_ndc.transformPoint (x, y); } // NAME // calc_transform Calculate transform matrices void SGP::calc_transform () { double scaleX = (xv_max - xv_min) / (xw_max - xw_min); double scaleY = (yv_max - yv_min) / (yw_max - yw_min); wc_to_ndc.setIdentity(); wc_to_ndc.mtx[0][0] = scaleX; wc_to_ndc.mtx[2][0] = xv_min - scaleX * xw_min; wc_to_ndc.mtx[1][1] = scaleY; wc_to_ndc.mtx[2][1] = yv_min - scaleY * yw_min; mc_to_ndc = m_ctm * wc_to_ndc; ndc_to_mc = mc_to_ndc.invert(); m_bRecalcTransform = false; } void SGP::ctmClear () { m_ctm.setIdentity(); calc_transform(); } void SGP::ctmSet (const TransformationMatrix2D& m) { m_ctm = m; calc_transform(); } void SGP::preTranslate (double x, double y) { TransformationMatrix2D m; m.setTranslate (x, y); ctmSet (m * m_ctm); } void SGP::postTranslate (double x, double y) { TransformationMatrix2D m; m.setTranslate (x, y); ctmSet (m_ctm * m); } void SGP::preScale (double sx, double sy) { TransformationMatrix2D m; m.setScale (sx, sy); ctmSet (m * m_ctm); } void SGP::postScale (double sx, double sy) { TransformationMatrix2D m; m.setScale (sx, sy); m_ctm = m_ctm * m; ctmSet (m_ctm * m); } void SGP::preRotate (double theta) { TransformationMatrix2D m; m.setRotate (theta); m_ctm = m * m_ctm; ctmSet (m * m_ctm); } void SGP::postRotate (double theta) { TransformationMatrix2D m; m.setRotate (theta); ctmSet (m_ctm * m); } void SGP::preShear (double shrx, double shry) { TransformationMatrix2D m; m.setShear (shrx, shry); ctmSet (m * m_ctm); } void SGP::postShear (double shrx, double shry) { TransformationMatrix2D m; m.setShear (shrx, shry); ctmSet (m_ctm * m); } //////////////////////////////////////////////////////////////////////// // Bitmap Markers //////////////////////////////////////////////////////////////////////// // Pixel patterns of marker symbols (1x1 to 5x5 matrix) const unsigned char SGP::MARKER_BITMAP[MARK_COUNT][5] = { {'\000', '\000', '\010', '\000', '\000'}, // small dot {'\000', '\034', '\024', '\034', '\000'}, // empty square {'\000', '\034', '\034', '\034', '\000'}, // filled square {'\000', '\010', '\024', '\010', '\000'}, // empty diamond {'\000', '\010', '\034', '\010', '\000'}, // filled diamond {'\010', '\010', '\076', '\010', '\010'}, // cross {'\000', '\024', '\010', '\024', '\000'}, // X {'\034', '\042', '\042', '\042', '\034'}, // open circle {'\034', '\076', '\076', '\076', '\034'}, // filled circle {'\076', '\042', '\042', '\042', '\076'}, // big open square {'\010', '\024', '\042', '\024', '\010'}, // big open diamond }; #if HAVE_WXWINDOWS void SGP::setDC (wxDC* pDC) { if (m_driver.isWX()) { m_driver.setDC(pDC); initFromDC (pDC); setTextPointSize (m_iTextPointSize); } } #endif ctsim-6.0.2/libctgraphics/pol.cpp0000644000175000017500000005131413254360476016002 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** POL - Problem Oriented Language ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "ct.h" #include #include #include #include "ctsupport.h" #include "pol.h" const struct POL::KeywordCodeList POL::cmdlist[] = { { "eoc", PC_EOC,}, { "str", PC_STR,}, { "com", PC_COM,}, { "cmd", PC_CMD,}, { "prg", PC_PRG,}, { "con", PC_CON,}, { "out", PC_OUT,}, { "ter", PC_TER,}, { "inb", PC_INB,}, { "nl_eoc",PC_NL_EOC,}, { "nl_neoc", PC_NL_NEOC,}, { "tron", PC_TRON,}, { "troff", PC_TROFF,}, { "file", PC_FILE,}, { "dump", PC_DUMP,}, }; const unsigned int POL::NUMCMD = (sizeof(POL::cmdlist) / sizeof (struct POL::KeywordCodeList)); POL::POL() { currentf = -1; m_bTrace = false; init(); } POL::~POL() { } void POL::init () { meta.eoc = SEMICOL; meta.str = DQUOTE; meta.com = SHARP; meta.cmd = EXCLAM; meta.prg = ATSIGN; meta.con = AMPERSAND; meta.out = DOLLAR; meta.ter = PERCENT; meta.inb = LBRACK; m_bNewlineIsEOC = true; m_szSkipChars[0] = EOS; for (unsigned int i = 0; i < NUMCMD; i++) cmdtable.installKeywordCode (cmdlist[i].keyword, cmdlist[i].code); token.ready = false; // no token read yet } /* addSkipWord (w) * * char *w - word for pol to ignore and skip over in input * * tok() compares all tokens to words given to this routine. If it finds it, * it will immediately read another token. */ void POL::addSkipWord (const char* const w) { skiptable.installKeywordCode (w, 0); } /* skpchar (s) * * skip all characters that appear in string s */ void POL::addSkipChar (int c) { int n = strlen (m_szSkipChars); if (n < MAXSKIPCHAR) { m_szSkipChars[n] = c; m_szSkipChars[n+1] = 0; } } // installKeyword (str, code) // // char *str - token string to install // int code - code to return for token // // tok() looks for these user defined tokens. If it finds one, // it stores the tokens code in the token structure and returns TT_USERTOK void POL::addKeyword (const char* const str, int code) { usertable.installKeywordCode (str, code); } /* get_word - matches tokens on a letter by letter basis * * char *search - string to search for * int nlet - maximum number of chars to search for match */ bool POL::readWord (const char *search, int nlet) { tok (&token); if (m_bTrace) sys_error (ERR_TRACE, "POL matching current token %s against word %s\n", token.tokstr, search); if (strncasecmp (search, token.tokstr, nlet) == 0) { dumptok (&token); return (true); } else return (false); } /* usertok (str,code) * see if current token is a user defined token set with install() * * char *str - token string as read from input * int *code - returned code for user defined symbol * return value - true if current token has been user defined * false if current token is not user defined */ bool POL::readUserToken (char *str, int *code) { tok (&token); if (m_bTrace) sys_error (ERR_TRACE, "POL checking if current token '%s' is user defined\n", token.tokstr); if (token.type == TT_USERTOK) { *code = token.code; strcpy (str, token.tokstr); dumptok (&token); return (true); } else { *code = 0; return (false); } } /* isstring (s) - returns true if current token is a string * * char *s - pointer to place to store token string */ bool POL::readString (char *str) { tok (&token); if (token.type == TT_STRING) { strcpy (str, token.tokstr); dumptok (&token); return (true); } else return (false); } /* integer - test for an integer * * int *n: returned integer value * int typecode = TT_INT if accept only integer values * = TT_REAL if accept both real and integer values * int boundcode= true if force to lie between boundries * = false can take any value it likes * int bb1: lower bound * int bb2: upper bound */ bool POL::readInteger (int *n, int typecode, bool boundcode, int bb1, int bb2) { tok (&token); if (m_bTrace) sys_error (ERR_TRACE, "POL checking if current token %s is an integer\n", token.tokstr); if (token.type == TT_INT || token.type == TT_REAL) { if (boundcode) { if (token.inum < bb1) *n = bb1; else if (token.inum > bb2) *n = bb2; else *n = token.inum; } else *n = token.inum; dumptok (&token); return (true); } *n = 0; return (false); } bool POL::readFloat (double *n, double typecode, bool boundcode, double bb1, double bb2) { tok (&token); if (m_bTrace) sys_error (ERR_TRACE, "POL checking if current token %s is an floating point number\n", token.tokstr); if (token.type == TT_INT || token.type == TT_REAL) { if (boundcode) { if (token.fnum < bb1) *n = bb1; else if (token.fnum > bb2) *n = bb2; else *n = token.fnum; } else *n = token.fnum; dumptok (&token); return (true); } *n = 0.0; return (false); } /*----------------------------------------------------------------------*/ /* skip() - skip over any token except for end of command sequence */ /* */ /* returns true if succesful skip */ /* returns false if already at end of command or EOF */ /*----------------------------------------------------------------------*/ bool POL::skipTokens() { char term[5]; /* string of characters not to skip */ term[0] = meta.eoc; if (m_bNewlineIsEOC) { term[1] = NEWLINE; term[2] = EOS; } else term[1] = EOS; return (skipSingleToken (term)); } void POL::reader() { while (skipTokens()) ; dumptok (&token); /* skip end of command token */ } /* skiptok (term) - skip a token unless the first character of a token is * in the string of terminators, term. * char *term - string of termination characters, don't skip these characters * skiptok() also does NOT skip TT_EOF * returns (true) if succesful skip of a token * returns (false) if didn't skip, read termination character or TT_EOF */ bool POL::skipSingleToken (char term[]) { tok (&token); if (token.type == TT_EOF || (token.type == TT_SPECLCHAR && strchr(term, token.tokstr[0]) != NULL)) return (false); else { dumptok (&token); return (true); } } int POL::tok (struct token_st *token) { if (token->ready == false) getpol_tok(token); else { if (token->type == TT_EOF && lookchar() != EOF) getpol_tok(token); } return (token->type); } void POL::dumptok (struct token_st *token) { if (token->ready == false) getpol_tok(token); token->ready = false; } int POL::getpol_tok (struct token_st *token) { KeywordCodeEntry* sym; token->ready = false; nexttok: gettok (token); if (token->type == TT_BLANK) goto nexttok; if (token->type == TT_SPECLCHAR) { if (strchr(m_szSkipChars, token->tokstr[0]) != NULL) goto nexttok; if (token->tokstr[0] == NEWLINE) goto nexttok; if (token->tokstr[0] == meta.cmd) { getcmd(); goto nexttok; } if (token->tokstr[0] == meta.com) { /* skip comment */ eatline (); goto nexttok; } if (token->tokstr[0] == meta.out) { getescape(token->tokstr, meta.out, MAXTOK); fputs (token->tokstr, stderr); goto nexttok; } if (token->tokstr[0] == meta.con) { /* continuation across NEWLINE */ while (lookchar() == BLANK || lookchar() == TAB) inchar(); if (lookchar() == NEWLINE) inchar(); } if (token->tokstr[0] == meta.ter) { /* get input from terminal */ usefile (P_USE_FILE, ""); tok (token); closefile(); return (token->type); } } /* look for filler words */ if (skiptable.lookup (token->tokstr) != NULL) /* ignore words in skip table */ goto nexttok; /* look for user defined symbols */ if ((sym = usertable.lookup (token->tokstr)) != NULL) { token->type = TT_USERTOK; token->code = sym->getCode(); } else token->code = 0; if (m_bTrace) sys_error (ERR_TRACE, "POL read token '%s', type = %d\n", token->tokstr, token->type); return (token->type); } int POL::getcmd() { int tt, found; char str[MAXTOK+1]; KeywordCodeEntry *cmd; TOKEN tok; tt = getalpha (str, MAXTOK); if (tt == TT_ERROR) { sys_error (ERR_WARNING, "Error in POL parameter command"); reader(); return(false); } if ((cmd = cmdtable.lookup (str)) == NULL) { sys_error (ERR_WARNING, "POL: Unrecognized command %s", cmd); reader(); return (false); } else { found = false; switch (cmd->getCode()) { case PC_TRON: m_bTrace = true; found = true; break; case PC_TROFF: m_bTrace = false; found = true; break; case PC_FILE: found = true; tt = gettok (&tok); usefile (P_USE_FILE, tok.tokstr); break; case PC_NL_EOC: found = true; m_bNewlineIsEOC = true; break; case PC_NL_NEOC: found = true; m_bNewlineIsEOC = false; break; case PC_DUMP: found = true; printf("eoc = %c str = %c com = %c cmd = %c prg = %c\n", meta.eoc, meta.str, meta.com, meta.cmd, meta.prg); printf("con = %c out = %c ter = %c inb = %c\n", meta.con, meta.out, meta.ter, meta.inb); break; } if (found == false) { tt = gettok (&tok); if (tt != TT_SPECLCHAR) { sys_error (ERR_SEVERE, "POL: Illegal command character"); return (false); } switch(cmd->getCode()) { case PC_EOC: meta.eoc = tok.tokstr[0]; break; case PC_STR: meta.str = tok.tokstr[0]; break; case PC_COM: meta.com = tok.tokstr[0]; break; case PC_CMD: meta.cmd = tok.tokstr[0]; break; case PC_PRG: meta.prg = tok.tokstr[0]; break; case PC_CON: meta.con = tok.tokstr[0]; break; case PC_OUT: meta.out = tok.tokstr[0]; break; case PC_TER: meta.ter = tok.tokstr[0]; break; case PC_INB: meta.inb = tok.tokstr[0]; break; default: printf("command not implemented\n"); break; } /* switch (tok->type) */ } /* if (found == false) */ reader(); /* clean up command */ } /* if legal command */ return (true); } int POL::gettok (TOKEN *tok) { int c, toktype; int inum; double fnum; int toksiz = MAXTOK; /* maximum length of token string */ while ((c = inchar()) == BLANK || c == TAB) ; ungetch (c); c = lookchar(); toktype = type(c); fnum = 0.0; inum = 0; if (c == BLANK || c == TAB) { /* skip white space */ getblank(tok->tokstr, toksiz); toktype = TT_BLANK; } else if (toktype == LETTER) { toktype = getalpha (tok->tokstr, toksiz); } else if (c == meta.str) { /* quoted string */ getquote (tok->tokstr, toksiz); toktype = TT_STRING; } else if (type(c) == DIGIT || c == PLUS || c == HYPHEN || c == PERIOD) { toktype = getnumber (tok->tokstr, toksiz, &fnum, &inum); } else if (c == EOF) { tok->tokstr[0] = EOS; toktype = TT_EOF; } else { c = inchar(); tok->tokstr[0] = c; tok->tokstr[1] = EOS; toktype = TT_SPECLCHAR; } tok->type = toktype; tok->ready = true; if (tok->type == TT_REAL || tok->type == TT_INT) { tok->fnum = fnum; tok->inum = inum; } else { tok->fnum = 0.0; tok->inum = 0; } return (toktype); } void POL::getblank (char *s, int toksiz) { int c; while ((c = inchar()) == BLANK || c == TAB) ; ungetch(c); s[0] = BLANK; s[1] = EOS; } int POL::getalpha (char *s, int toksiz) { int i, chartype, alphatype; if (type(lookchar()) != LETTER) { s[0] = EOS; return (TT_ERROR); } alphatype = TT_ALPHA; for (i = 0; i < toksiz; i++) { /* get alphanumeric token */ s[i] = inchar(); chartype = type (s[i]); if (chartype != LETTER && chartype != DIGIT) break; if (chartype == DIGIT) alphatype = TT_ALPNUM; } ungetch(s[i]); if (i >= toksiz) sys_error (ERR_SEVERE, "POL token too long."); s[i] = EOS; /* terminate token */ return (alphatype); } /* getquote - get quoted string from file */ /* have already gotten delimiter in qs[0] */ void POL::getquote (char *qs, int toksiz) { int delim; delim = inchar(); /* char = delimiter */ getescape(qs, delim, toksiz); } void POL::getescape ( /* reads up to delim */ char *s, int delim, int toksiz ) { int i, c; for (i = 0; (c = inchar()) != delim; i++) { if (c == NEWLINE) { sys_error (ERR_WARNING, "Missing closing delimiter."); break; } if (i >= toksiz) { sys_error (ERR_SEVERE, "string too long."); break; } if (c == EOF) { ungetch(c); sys_error (ERR_SEVERE, "end of file inside quotation"); break; } else if (c == BSLASH) { /* escape character */ s[i++] = c; c = inchar(); /* get escaped character */ } s[i] = c; } s[i] = EOS; } bool POL::readText (char *str, int lim) { int c; while ((c = inchar()) == BLANK || c == TAB) ; ungetch (c); if (c == EOF) { str[0] = 0; return false; } int i; for (i = 0; i < lim && (c = inchar()) != EOF && c != NEWLINE; i++) str[i] = c; ungetch (c); str[i] = 0; return true; } //---------------------------------------------- // Get a number for gettok() //---------------------------------------------- int POL::getnumber ( char str[], /* string to return token in */ int strsize, /* maximum length of token string */ double *fnum, /* floating point value of number read */ int *inum /* integer value of number read */ ) { int sp = 0; double sign = 1.0; bool isSigned = false; /* true if number prefixed by '+' or '-' */ *fnum = 0.0; *inum = 0; str[0] = EOS; int c = inchar(); if (c == HYPHEN) { str[sp++] = c; isSigned = true; sign = -1.0; } else if (c == PLUS) { str[sp++] = c; isSigned = true; sign = 1.0; } else if (c == PERIOD) { if (type(lookchar()) != DIGIT) { str[0] = PERIOD; str[1] = EOS; return (TT_SPECLCHAR); } else ungetch (PERIOD); } else if (type(c) != DIGIT) { ungetch (c); return (TT_ERROR); } else ungetch (c); if (isSigned) { c = lookchar(); if (c == PERIOD) { inchar(); /* get period */ c = lookchar(); /* look at character past period */ ungetch (PERIOD); /* put back period */ if (type(c) != DIGIT) { str[sp] = EOS; return (TT_SPECLCHAR); } } else if (type (c) != DIGIT) { str[sp] = EOS; return (TT_SPECLCHAR); } } double whole = 0.0; while (type(c = inchar()) == DIGIT) { if (sp < strsize) str[sp++] = c; whole = 10.0 * whole + (c - '0'); } ungetch (c); /* put back non-numeric character */ if (c != PERIOD && tolower(c) != 'e') { str[sp] = EOS; *fnum = whole * sign; if (*fnum < MIN_INT) *inum = MIN_INT; else if (*fnum > MAX_INT) *inum = MAX_INT; else *inum = (int) *fnum; return (TT_INT); } if (lookchar() == PERIOD) { inchar(); if (sp < strsize) str[sp++] = PERIOD; } double frac = 0.0; double powerof10 = 10.0; while (type(c = inchar()) == DIGIT) { if (sp < strsize) str[sp++] = c; frac += (double) (c - '0') / powerof10; powerof10 *= 10.0; } ungetch (c); double exp = 0.0; double expsign = 1.0; c = inchar(); if (tolower(c) != 'e') ungetch (c); else { if (sp < strsize) str[sp++] = c; if ((c = inchar()) == PLUS) { if (sp < strsize) str[sp++] = c; expsign = 1.0; } else if (c == HYPHEN) { if (sp < strsize) str[sp++] = c; expsign = -1.0; } else if (type(c) != DIGIT) { --sp; /* erase 'e' */ ungetch (c); ungetch ('e'); goto getnumexit; } else ungetch(c); exp = 0; while (type(c = inchar()) == DIGIT) { if (sp < strsize) str[sp++] = c; exp = 10 * exp + (c - '0'); } ungetch (c); } getnumexit: str[sp] = EOS; *fnum = sign * (whole + frac) * pow (10.0, expsign * exp); if (*fnum < MIN_INT) *inum = MIN_INT; else if (*fnum > MAX_INT) *inum = MAX_INT; else *inum = (int) *fnum; return (TT_REAL); } void POL::eatline () { char term [2]; term[0] = NEWLINE; term[1] = EOS; skipSingleToken (term); } // return type of ASCII character int POL::type (int c) { if (isalpha(c) || c == UNDERLIN) return (LETTER); else if (isdigit(c)) return (DIGIT); else return (c); } //---------------------------------------------------------------------- // POL INPUT //---------------------------------------------------------------------- /* usefile - set source of POL input * * int source - source of input * P_USE_STR - have POL use strings as input * P_USE_FILE - use file. filename is in str * */ void POL::usefile (int source, const char *fn) { FILE *fp; ++currentf; if (currentf >= MAXFILE) { --currentf; sys_error (ERR_SEVERE, "files nested too deeply"); return; } while (! m_stackPushBackInput.empty()) m_stackPushBackInput.pop(); if (source == P_USE_STR) { filep[currentf] = NULL; } else if (source == P_USE_FILE) { if (fn == NULL || strlen(fn) == 0) { fp = stdin; } else if ((fp = fopen(fn, "r")) == NULL) { --currentf; sys_error (ERR_SEVERE, "can't open file"); return; } filep[currentf] = fp; fname[currentf] = strdup (fn); } } void POL::closefile() { if (currentf >= 0) { if (filep[currentf] != NULL) fclose (filep[currentf]); --currentf; } } /*-----------------------------*/ /* Lowest Level Input Routines */ /*-----------------------------*/ int POL::lookchar() { int c; c = inchar(); ungetch (c); return (c); } int POL::inchar() { int c = 0; if (currentf < 0) return (EOF); while (currentf >= 0 && (c = getch(filep[currentf])) == EOF && filep[currentf] != NULL) { closefile (); } return (c); } /*--------------------------------------------------------------*/ /* getch - get a (possibly pushed back) character */ /* if fp == NULL, then get character from inputline */ /*--------------------------------------------------------------*/ int POL::getch (FILE *fp) { int c; if (m_stackPushBackInput.size() > 0) { c = m_stackPushBackInput.top(); m_stackPushBackInput.pop(); return c; } if (fp == NULL) { if ((c = inputline[lineptr]) == EOS) return (EOF); else { ++lineptr; return (c); } } else c = fgetc(fp); return (c); } // push character back on input void POL::ungetch (int c) { m_stackPushBackInput.push (c); } int POL::get_inputline (FILE *fp) { while (! m_stackPushBackInput.empty()) m_stackPushBackInput.pop(); lineptr = 0; if (fgets (inputline, MAXLINE, fp) == NULL) return (EOF); else return (OK); } void POL::set_inputline (const char* const line) { while (! m_stackPushBackInput.empty()) m_stackPushBackInput.pop(); strncpy (inputline, line, MAXLINE); lineptr = 0; } ctsim-6.0.2/libctgraphics/ezsupport.cpp0000644000175000017500000000220411240454454017246 0ustar kevinkevin/***************************************************************************** ** Name: ezsupport.h ** Function: Support routines for EZPlot library ** Programmer: Kevin Rosenberg ** Date Started: 1-22-85 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include #include #include "ctsupport.h" #include "ezplot.h" ctsim-6.0.2/libctgraphics/Makefile.in0000644000175000017500000004236413254406203016543 0ustar kevinkevin# 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 = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = libctgraphics ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/scripts/ax_check_compile_flag.m4 \ $(top_srcdir)/scripts/ax_ext.m4 \ $(top_srcdir)/scripts/ax_gcc_x86_avx_xgetbv.m4 \ $(top_srcdir)/scripts/ax_gcc_x86_cpuid.m4 \ $(top_srcdir)/scripts/ax_openmp.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LIBRARIES = $(noinst_LIBRARIES) AR = ar ARFLAGS = cru AM_V_AR = $(am__v_AR_@AM_V@) am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) am__v_AR_0 = @echo " AR " $@; am__v_AR_1 = libctgraphics_a_AR = $(AR) $(ARFLAGS) libctgraphics_a_LIBADD = am_libctgraphics_a_OBJECTS = ezplot.$(OBJEXT) ezset.$(OBJEXT) \ pol.$(OBJEXT) sgp.$(OBJEXT) transformmatrix.$(OBJEXT) libctgraphics_a_OBJECTS = $(am_libctgraphics_a_OBJECTS) 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@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/scripts/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 = SOURCES = $(libctgraphics_a_SOURCES) DIST_SOURCES = $(libctgraphics_a_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # 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 am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/scripts/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPUEXT_FLAGS = @CPUEXT_FLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ 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@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIMD_FLAGS = @SIMD_FLAGS@ STRIP = @STRIP@ VERSION = @VERSION@ XMKMF = @XMKMF@ X_BASIC_LIBS = @X_BASIC_LIBS@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ X_TOOLKIT_LIBS = @X_TOOLKIT_LIBS@ 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 = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ cgibindir = @cgibindir@ cgibinurl = @cgibinurl@ cgiprograms = @cgiprograms@ ctlibs = @ctlibs@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldata = @htmldata@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lamdefs = @lamdefs@ lamdir = @lamdir@ lamprograms = @lamprograms@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mpienable = @mpienable@ my_includes = @my_includes@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ webdatadir = @webdatadir@ webdataurl = @webdataurl@ webenabled = @webenabled@ wx_cppflags = @wx_cppflags@ wxcflags = @wxcflags@ wxconfig = @wxconfig@ wxlibs = @wxlibs@ noinst_LIBRARIES = libctgraphics.a libctgraphics_a_SOURCES = ezplot.cpp ezset.cpp pol.cpp sgp.cpp transformmatrix.cpp AM_CPPFLAGS = @my_includes@ EXTRA_DIST = Makefile.nt all: all-am .SUFFIXES: .SUFFIXES: .cpp .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libctgraphics/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu libctgraphics/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) libctgraphics.a: $(libctgraphics_a_OBJECTS) $(libctgraphics_a_DEPENDENCIES) $(EXTRA_libctgraphics_a_DEPENDENCIES) $(AM_V_at)-rm -f libctgraphics.a $(AM_V_AR)$(libctgraphics_a_AR) libctgraphics.a $(libctgraphics_a_OBJECTS) $(libctgraphics_a_LIBADD) $(AM_V_at)$(RANLIB) libctgraphics.a mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ezplot.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ezset.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pol.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sgp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/transformmatrix.Po@am__quote@ .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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 $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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) '$<'` 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" 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 distdir: $(DISTFILES) @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 check-am: all-am check: check-am all-am: Makefile $(LIBRARIES) installdirs: 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: clean-generic: 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) 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-generic clean-noinstLIBRARIES mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(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: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstLIBRARIES cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ 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-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 tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile # 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: ctsim-6.0.2/libctgraphics/bresenham.cpp0000644000175000017500000000533311244054213017136 0ustar kevinkevin/***************************************************************************** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ // REFERENCES FOR BRESENHAM'S ALGORITHM // Newman & Sproll, "Principals of Interactive Computer Graphics", page 25. // Foley & van Dam, "Fundementals of Interactive Computer Graphics", page 433 static void bresx (int x, int y, int major_inc, int minor_inc, int count, int d, int dinc1, int dinc2, void(*fn)(const int, const int)) { do { (*fn)(x,y); x += major_inc; if (d < 0) d += dinc2; else { d += dinc1; y += minor_inc; } } while (--count > 0); } static void bresy (int x, int y, int major_inc, int minor_inc, int count, int d, int dinc1, int dinc2, void(*fn)(const int, const int)) { do { (*fn)(x,y); y += major_inc; if (d < 0) d += dinc2; else { d += dinc1; x += minor_inc; } } while (--count > 0); } void bresenham (int x1, int y1, int x2, int y2, void(*fn)(const int, const int)) {0000 int delta_x = x2 - x1; int dx_abs = (delta_x >= 0 ? delta_x : -delta_x); int delta_y = y2 - y1; int dy_abs = (delta_y >= 0 ? delta_y : -delta_y); // draws a line when abs(dx) >= abs(dy) if (dx_abs > dy_abs) { int count = dx_abs + 1; int major_inc = (x1 <= x2 ? 1 : -1); int minor_inc = (delta_y >= 0 ? 1 : -1); // determine direction of minor axis int d = dy_abs * 2 - dx_abs; // Put decision variable in d int dinc1 = (dy_abs - dx_abs) * 2; int dinc2 = 2 * dy_abs; bresx (x1, y1, major_inc, minor_inc, count, d, dinc1, dinc2, fn); } else { //For plotting lines with abs(dy) > abs(sx) int count = dy_abs + 1; int major_inc = (y1 <= y2 ? 1 : -1); int minor_inc = (delta_x >= 0 ? 1 : -1); // check direction of minor axis int d = dx_abs * 2 - dy_abs; int dinc1 = (dx_abs - dy_abs) * 2; int dinc2 = 2 * dx_abs; bresy (x1, y1, major_inc, minor_inc, count, d, dinc1, dinc2, fn); } } ctsim-6.0.2/libctgraphics/transformmatrix.cpp0000644000175000017500000001061311240454454020436 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: transformmatrix.cpp ** Function: Transform Matrix routine for graphic library ** Programmer: Kevin Rosenberg ** Date Started: 1-22-85 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include #include "ctsupport.h" #include "transformmatrix.h" TransformationMatrix2D::TransformationMatrix2D (double m[3][3]) { mtx[0][0] = m[0][0]; mtx[0][1] = m[0][1]; mtx[0][2] = m[0][2]; mtx[1][0] = m[1][0]; mtx[1][1] = m[1][1]; mtx[1][2] = m[1][2]; mtx[2][0] = m[2][0]; mtx[2][1] = m[2][1]; mtx[2][2] = m[2][2]; } void TransformationMatrix2D::setTranslate (double x, double y) { setIdentity(); mtx[2][0] = x; mtx[2][1] = y; } void TransformationMatrix2D::setScale (double sx, double sy) { setIdentity(); mtx[0][0] = sx; mtx[1][1] = sy; } void TransformationMatrix2D::setShear (double shrx, double shry) { setIdentity(); mtx[1][0] = shrx; mtx[0][1] = shry; } void TransformationMatrix2D::setRotate (double theta) { double s = sin (theta); double c = cos (theta); setIdentity(); mtx[0][0] = c; mtx[0][1] = s; mtx[1][0] = -s; mtx[1][1] = c; } void TransformationMatrix2D::setIdentity () { mtx[0][0] = 1.; mtx[0][1] = 0.; mtx[0][2] = 0.; mtx[1][0] = 0.; mtx[1][1] = 1.; mtx[1][2] = 0.; mtx[2][0] = 0.; mtx[2][1] = 0.; mtx[2][2] = 1.; } const TransformationMatrix2D TransformationMatrix2D::invert () const { double b[3][3]; double determ = determinant (); if (fabs(determ) < 1E-6) { sys_error (ERR_WARNING, "Determinant = %g [TransformationMatrix2D::invert]", determ); print (std::cout); std::cout << std::endl; } b[0][0] = (mtx[1][1] * mtx[2][2] - mtx[2][1] * mtx[1][2]) / determ; b[1][0] = -(mtx[1][0] * mtx[2][2] - mtx[2][0] * mtx[1][2]) / determ; b[2][0] = (mtx[1][0] * mtx[2][1] - mtx[2][0] * mtx[1][1]) / determ; b[0][1] = -(mtx[0][1] * mtx[2][2] - mtx[2][1] * mtx[0][2]) / determ; b[1][1] = (mtx[0][0] * mtx[2][2] - mtx[2][0] * mtx[0][2]) / determ; b[2][1] = -(mtx[0][0] * mtx[2][1] - mtx[2][0] * mtx[0][1]) / determ; b[0][2] = (mtx[0][1] * mtx[1][2] - mtx[1][1] * mtx[0][2]) / determ; b[1][2] = -(mtx[0][0] * mtx[1][2] - mtx[1][0] * mtx[0][2]) / determ; b[2][2] = (mtx[0][0] * mtx[1][1] - mtx[1][0] * mtx[0][1]) / determ; return TransformationMatrix2D (b); } double TransformationMatrix2D::determinant () const { return (mtx[0][0] * mtx[1][1] * mtx[2][2] - mtx[0][0] * mtx[2][1] * mtx[1][2] - mtx[0][1] * mtx[1][0] * mtx[2][2] + mtx[0][1] * mtx[2][0] * mtx[1][2] + mtx[0][2] * mtx[1][0] * mtx[2][1] - mtx[0][2] * mtx[2][0] * mtx[1][1]); } void TransformationMatrix2D::transformPoint (double* pX, double *pY) const { double x = *pX * mtx[0][0] + *pY * mtx[1][0] + mtx[2][0]; double y = *pX * mtx[0][1] + *pY * mtx[1][1] + mtx[2][1]; *pX = x; *pY = y; } void TransformationMatrix2D::print (std::ostream& ostr) const { std::cout << mtx[0][0] << " " << mtx[0][1] << " " << mtx[0][2] << std::endl; std::cout << mtx[1][0] << " " << mtx[1][1] << " " << mtx[1][2] << std::endl; std::cout << mtx[2][0] << " " << mtx[2][1] << " " << mtx[2][2] << std::endl; } // Friend of TransformMatrix2D const TransformationMatrix2D operator* (const TransformationMatrix2D& a, const TransformationMatrix2D& b) { double c[3][3]; for (int row = 0; row < 3; row++) for (int col = 0; col < 3; col++) { c[row][col] = 0.; for (int calc = 0; calc < 3; calc++) c[row][col] += a.mtx[row][calc] * b.mtx[calc][col]; } return TransformationMatrix2D (c); } ctsim-6.0.2/AUTHORS0000644000175000017500000000032310667176710012731 0ustar kevinkevinPRIMARY AUTHOR Kevin M. Rosenberg, M.D. CONTRIBUTORS Ian Kay - Additions and updates to man pages - Bug identification and patches for ASCII phantom parsing ctsim-6.0.2/tools/0000755000175000017500000000000013254524615013017 5ustar kevinkevinctsim-6.0.2/tools/if1.cpp0000644000175000017500000001127213254520252014176 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: if1.cpp ** Purpose: Manipulate a single image file ** Programmer: Kevin Rosenberg ** Date Started: Aug 1984 ** ** This is part of the CTSim program ** Copyright (C) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /* FILE * if1.c Filter a single IF file */ #include "ct.h" enum {O_LOG, O_EXP, O_SQRT, O_SQR, O_INVERT, O_VERBOSE, O_HELP, O_VERSION}; static struct option my_options[] = { {"invert", 0, 0, O_INVERT}, {"verbose", 0, 0, O_VERBOSE}, {"log", 0, 0, O_LOG}, {"exp", 0, 0, O_EXP}, {"sqr", 0, 0, O_SQR}, {"sqrt", 0, 0, O_SQRT}, {"help", 0, 0, O_HELP}, {"version", 0, 0, O_VERSION}, {0, 0, 0, 0} }; static const char* g_szIdStr = "$Id$"; void if1_usage (const char *program) { std::cout << "usage: " << fileBasename(program) << " infile outfile [OPTIONS]" << std::endl; std::cout << "Generate a IF file from a IF file" << std::endl; std::cout << std::endl; std::cout << " --invert Invert image" << std::endl; std::cout << " --log Natural logrithm of image" << std::endl; std::cout << " --exp Natural exponential of image" << std::endl; std::cout << " --sqr Square of image" << std::endl; std::cout << " --sqrt Square root of image" << std::endl; std::cout << " --verbose Verbose mode" << std::endl; std::cout << " --version Print version" << std::endl; std::cout << " --help Print this help message" << std::endl; } int if1_main (int argc, char *const argv[]) { char *in_file; char *out_file; int opt_verbose = 0; int opt_invert = 0; int opt_log = 0; int opt_exp = 0; int opt_sqr = 0; int opt_sqrt = 0; UNUSED(opt_verbose); while (1) { int c = getopt_long (argc, argv, "", my_options, NULL); if (c == -1) break; switch (c) { case O_INVERT: opt_invert = 1; break; case O_LOG: opt_log = 1; break; case O_SQR: opt_sqr = 1; break; case O_SQRT: opt_sqrt = 1; break; case O_EXP: opt_exp = 1; break; case O_VERBOSE: opt_verbose = 1; break; case O_VERSION: #ifdef VERSION std::cout << "Version " << VERSION << std::endl << g_szIdStr << std::endl; #else std::cout << "Unknown version number" << std::endl; #endif return (0); case O_HELP: case '?': if1_usage(argv[0]); return (0); default: if1_usage(argv[0]); return (1); } } if (optind + 2 != argc) { if1_usage(argv[0]); return (1); } in_file = argv[optind]; out_file = argv[optind + 1]; std::string histString; if (opt_invert || opt_log || opt_exp || opt_sqr || opt_sqrt) { ImageFile im_in; im_in.fileRead (in_file); int nx = im_in.nx(); int ny = im_in.ny(); ImageFile im_out (nx, ny); if (opt_invert) { im_in.invertPixelValues (im_out); histString = "Invert transformation"; } if (opt_log) { im_in.log (im_out); histString = "Logrithmic transformation"; } if (opt_exp) { im_in.exp (im_out); histString = "Exponential transformation"; } if (opt_sqr) { im_in.square (im_out); histString = "Square transformation"; } if (opt_sqrt) { im_in.sqrt (im_out); histString = "Square root transformation"; } im_out.labelsCopy (im_in); im_out.labelAdd (Array2dFileLabel::L_HISTORY, histString.c_str()); im_out.fileWrite (out_file); } return (0); } #ifndef NO_MAIN int main (int argc, char *const argv[]) { int retval = 1; try { retval = if1_main(argc, argv); } catch (exception e) { std::cerr << "Exception: " << e.what() << std::endl; } catch (...) { std::cerr << "Unknown exception" << std::endl; } return (retval); } #endif ctsim-6.0.2/tools/Makefile.am0000644000175000017500000000372113254403135015047 0ustar kevinkevinbin_PROGRAMS = @lamprograms@ ctsimtext EXTRA_PROGRAMS = ctsimtext-lam AM_CPPFLAGS=@my_includes@ if HAVE_SGP SOURCE_DEPEND=../include/ct.h ../libctsim/libctsim.a ../libctsupport/libctsupport.a ../libctgraphics/libctgraphics.a else SOURCE_DEPEND=../include/ct.h ../libctsim/libctsim.a ../libctsupport/libctsupport.a endif install-exec-hook: ln -sf ctsimtext $(DESTDIR)$(bindir)/if1 ln -sf ctsimtext $(DESTDIR)$(bindir)/if2 ln -sf ctsimtext $(DESTDIR)$(bindir)/ifexport ln -sf ctsimtext $(DESTDIR)$(bindir)/ifinfo ln -sf ctsimtext $(DESTDIR)$(bindir)/phm2if ln -sf ctsimtext $(DESTDIR)$(bindir)/phm2pj ln -sf ctsimtext $(DESTDIR)$(bindir)/phm2helix ln -sf ctsimtext $(DESTDIR)$(bindir)/pj2if ln -sf ctsimtext $(DESTDIR)$(bindir)/pjinfo ln -sf ctsimtext $(DESTDIR)$(bindir)/pjrec ln -sf ctsimtext $(DESTDIR)$(bindir)/pjHinterp ln -sf ctsimtext $(DESTDIR)$(bindir)/linogram ctsimtext_SOURCES = ctsimtext.cpp if1.cpp if2.cpp ifinfo.cpp ifexport.cpp phm2if.cpp phm2pj.cpp pj2if.cpp pjinfo.cpp pjrec.cpp nographics.cpp phm2helix.cpp pjHinterp.cpp linogram.cpp ctsimtext_LDADD=@ctlibs@ ctsimtext_DEPENDENCIES=$(SOURCE_DEPEND) CLEANFILES=\*.pgm \*.if \*~ \*.pj sample-ctsim.sh ctsimtext_lam_SOURCES = ctsimtext.cpp if1.cpp if2.cpp ifinfo.cpp ifexport.cpp phm2if.cpp phm2pj.cpp pj2if.cpp pjinfo.cpp pjrec.cpp nographics.cpp mpiworld.cpp phm2helix.cpp pjHinterp.cpp linogram.cpp ctsimtext_lam_LDADD=@ctlamlibs@ if USE_LAM CC_LAM = $(lamdir)/bin/hcp LAM_EXTRA_SRC = mpiworld.cpp ctsimtext_lam_DEPENDENCIES=$(SOURCE_DEPEND) ctsimtext-lam$(EXEEXT): ctsimtext.cpp if1.cpp if2.cpp ifinfo.cpp ifexport.cpp phm2if.cpp phm2pj.cpp pj2if.cpp pjinfo.cpp pjrec.cpp mpiworld.cpp linogram.cpp ../include/ct.h ../libctsim/libctsim.a ../libctsupport/libctsupport.a $(CC_LAM) @DEFS@ @lamdefs@ $(CFLAGS) $(INCLUDES) -DHAVE_MPI -DNO_MAIN ctsimtext.cpp if1.cpp if2.cpp ifinfo.cpp ifexport.cpp phm2if.cpp phm2pj.cpp pj2if.cpp pjinfo.cpp pjrec.cpp -o ctsimtext-lam $(LDFLAGS) $(LAM_EXTRA_SRC) @ctlibs@ endif ctsim-6.0.2/tools/phm2if.cpp0000644000175000017500000003210113254520505014677 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: phm2if.cpp ** Purpose: Convert an phantom object to an image file ** Programmer: Kevin Rosenberg ** Date Started: 1984 ** ** This is part of the CTSim program ** Copyright (C) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "ct.h" #include "timer.h" enum { O_PHANTOM, O_DESC, O_NSAMPLE, O_FILTER, O_VIEW_RATIO, O_TRACE, O_VERBOSE, O_HELP, O_PHMFILE, O_FILTER_DOMAIN, O_FILTER_BW, O_FILTER_PARAM, O_DEBUG, O_VERSION }; static struct option my_options[] = { {"phantom", 1, 0, O_PHANTOM}, {"phmfile", 1, 0, O_PHMFILE}, {"desc", 1, 0, O_DESC}, {"nsample", 1, 0, O_NSAMPLE}, {"filter", 1, 0, O_FILTER}, {"filter-domain", 1, 0, O_FILTER_DOMAIN}, {"filter-bw", 1, 0, O_FILTER_BW}, {"filter-param", 1, 0, O_FILTER_PARAM}, {"trace", 1, 0, O_TRACE}, {"view-ratio", 1, 0, O_VIEW_RATIO}, {"verbose", 0, 0, O_VERBOSE}, {"debug", 0, 0, O_DEBUG}, {"help", 0, 0, O_HELP}, {"version", 0, 0, O_VERSION}, {0, 0, 0, 0} }; static const char* g_szIdStr = "$Id$"; void phm2if_usage (const char *program) { std::cout << "phm2if_usage: " << fileBasename(program) << " outfile nx ny [--phantom phantom-name] [--phmfile filename] [--filter filter-name] [OPTIONS]\n"; std::cout << "Generate phantom image from a predefined --phantom or a --phmfile\n"; std::cout << std::endl; std::cout << " outfile Name of output file for image\n"; std::cout << " nx Number of pixels X-axis\n"; std::cout << " ny Number of pixels Y-axis\n"; std::cout << " --view-ratio View diameter to phantom diameter ratio (default = 1)\n"; std::cout << " --phantom Phantom to use for projection\n"; std::cout << " herman Herman head phantom\n"; std::cout << " shepp-logan Shepp-Logan head phantom\n"; std::cout << " unit-pulse Unit pulse phantom\n"; std::cout << " --phmfile Generate Phantom from phantom file\n"; std::cout << " --filter Generate Phantom from a filter function\n"; std::cout << " abs_bandlimit Abs * Bandlimiting\n"; std::cout << " abs_sinc Abs * Sinc\n"; std::cout << " abs_cos Abs * Cosine\n"; std::cout << " abs_hamming Abs * Hamming\n"; std::cout << " shepp Shepp-Logan\n"; std::cout << " bandlimit Bandlimiting\n"; std::cout << " sinc Sinc\n"; std::cout << " cos Cosine\n"; std::cout << " triangle Triangle\n"; std::cout << " hamming Hamming\n"; std::cout << " --filter-param Alpha level for Hamming filter\n"; std::cout << " --filter-domain Set domain of filter\n"; std::cout << " spatial Spatial domain (default)\n"; std::cout << " freq Frequency domain\n"; std::cout << " --filter-bw Filter bandwidth (default = 1)\n"; std::cout << " --desc Description of raysum\n"; std::cout << " --nsample Number of samples per axis per pixel (default = 1)\n"; std::cout << " --trace Trace level to use\n"; std::cout << " none No tracing (default)\n"; std::cout << " console Trace text level\n"; std::cout << " --debug Debug mode\n"; std::cout << " --verbose Verbose mode\n"; std::cout << " --version Print version\n"; std::cout << " --help Print this help message\n"; } #ifdef HAVE_MPI void mpi_gather_image (MPIWorld& mpiWorld, ImageFile* pImGlobal, ImageFile* pImLocal, const int optDebug); #endif int phm2if_main (int argc, char* const argv[]) { ImageFile* pImGlobal = NULL; Phantom phm; std::string optPhmName; std::string optFilterName; std::string optDomainName (SignalFilter::convertDomainIDToName (SignalFilter::DOMAIN_SPATIAL)); std::string optOutFilename; std::string optDesc; std::string optPhmFilename; int opt_nx = 0; int opt_ny = 0; int opt_nsample = 1; double optViewRatio = 1.; double optFilterParam = 1.; double optFilterBW = 1.; int optTrace = Trace::TRACE_NONE; bool optVerbose = false; bool optDebug = false; char *endptr = NULL; char *endstr; Timer timerProgram; UNUSED(optDebug); #ifdef HAVE_MPI ImageFile* pImLocal = NULL; MPIWorld mpiWorld (argc, argv); if (mpiWorld.getRank() == 0) { #endif while (1) { int c = getopt_long(argc, argv, "", my_options, NULL); if (c == -1) break; switch (c) { case O_PHANTOM: optPhmName = optarg; break; case O_PHMFILE: optPhmFilename = optarg; break; case O_VERBOSE: optVerbose = true; break; case O_DEBUG: optDebug = true; break; case O_TRACE: if ((optTrace = Trace::convertTraceNameToID(optarg)) == Trace::TRACE_INVALID) { phm2if_usage(argv[0]); return (1); } break; case O_FILTER: optFilterName = optarg; break; case O_FILTER_DOMAIN: optDomainName = optarg; break; case O_DESC: optDesc = optarg; break; case O_FILTER_BW: optFilterBW = strtod(optarg, &endptr); endstr = optarg + strlen(optarg); if (endptr != endstr) { sys_error(ERR_SEVERE,"Error setting --filter-bw to %s\n", optarg); phm2if_usage(argv[0]); return (1); } break; case O_VIEW_RATIO: optViewRatio = strtod(optarg, &endptr); endstr = optarg + strlen(optarg); if (endptr != endstr) { sys_error(ERR_SEVERE,"Error setting --view-ratio to %s\n", optarg); phm2if_usage(argv[0]); return (1); } break; case O_FILTER_PARAM: optFilterParam = strtod(optarg, &endptr); endstr = optarg + strlen(optarg); if (endptr != endstr) { sys_error(ERR_SEVERE,"Error setting --filter-param to %s\n", optarg); phm2if_usage(argv[0]); return (1); } break; case O_NSAMPLE: opt_nsample = strtol(optarg, &endptr, 10); endstr = optarg + strlen(optarg); if (endptr != endstr) { sys_error(ERR_SEVERE,"Error setting --nsample to %s\n", optarg); phm2if_usage(argv[0]); return (1); } break; case O_VERSION: #ifdef VERSION std::cout << "Version " << VERSION << std::endl << g_szIdStr << std::endl; #else std::cerr << "Unknown version number\n"; #endif case O_HELP: case '?': phm2if_usage(argv[0]); return (0); default: phm2if_usage(argv[0]); return (1); } } if (optPhmName == "" && optFilterName == "" && optPhmFilename == "") { std::cerr << "No phantom defined\n" << std::endl; phm2if_usage(argv[0]); return (1); } if (optind + 3 != argc) { phm2if_usage(argv[0]); return (1); } optOutFilename = argv[optind]; opt_nx = strtol(argv[optind+1], &endptr, 10); endstr = argv[optind+1] + strlen(argv[optind+1]); if (endptr != endstr) { sys_error(ERR_SEVERE,"Error setting nx to %s\n", argv[optind+1]); phm2if_usage(argv[0]); return (1); } opt_ny = strtol(argv[optind+2], &endptr, 10); endstr = argv[optind+2] + strlen(argv[optind+2]); if (endptr != endstr) { sys_error(ERR_SEVERE,"Error setting ny to %s\n", argv[optind+2]); phm2if_usage(argv[0]); return (1); } std::ostringstream oss; oss << "phm2if: nx=" << opt_nx << ", ny=" << opt_ny << ", viewRatio=" << optViewRatio << ", nsample=" << opt_nsample << ", "; if (optPhmFilename != "") oss << "phantomFile=" << optPhmFilename; else if (optPhmName != "") oss << "phantom=" << optPhmName; else if (optFilterName != "") { oss << "filter=" << optFilterName << " - " << optDomainName; } if (optDesc != "") oss << ": " << optDesc; optDesc = oss.str(); if (optPhmName != "") { phm.createFromPhantom (optPhmName.c_str()); if (phm.fail()) { std::cout << phm.failMessage() << std::endl << std::endl; phm2if_usage(argv[0]); return (1); } } if (optPhmFilename != "") { phm.createFromFile(optPhmFilename.c_str()); #ifdef HAVE_MPI if (mpiWorld.getRank() == 0) std::cerr << "Can't use phantom from file in MPI mode\n"; return (1); #endif } if (optVerbose) std::cout << "Rasterize Phantom to Image\n" << std::endl; #ifdef HAVE_MPI } #endif #ifdef HAVE_MPI TimerCollectiveMPI timerBcast (mpiWorld.getComm()); mpiWorld.BcastString (optPhmName); mpiWorld.getComm().Bcast (&optVerbose, 1, MPI::INT, 0); mpiWorld.getComm().Bcast (&optDebug, 1, MPI::INT, 0); mpiWorld.getComm().Bcast (&optTrace, 1, MPI::INT, 0); mpiWorld.getComm().Bcast (&opt_nx, 1, MPI::INT, 0); mpiWorld.getComm().Bcast (&opt_ny, 1, MPI::INT, 0); mpiWorld.getComm().Bcast (&opt_nsample, 1, MPI::INT, 0); mpiWorld.getComm().Bcast (&optViewRatio, 1, MPI::DOUBLE, 0); mpiWorld.getComm().Bcast (&optFilterParam, 1, MPI::DOUBLE, 0); mpiWorld.getComm().Bcast (&optFilterBW, 1, MPI::DOUBLE, 0); mpiWorld.BcastString (optFilterName); mpiWorld.BcastString (optDomainName); if (optVerbose) timerBcast.timerEndAndReport ("Time to broadcast variables"); mpiWorld.setTotalWorkUnits (opt_nx); if (mpiWorld.getRank() > 0 && optPhmName != "") phm.createFromPhantom (optPhmName.c_str()); if (mpiWorld.getRank() == 0) { pImGlobal = new ImageFile (opt_nx, opt_ny); } pImLocal = new ImageFile (opt_nx, opt_ny); #else pImGlobal = new ImageFile (opt_nx, opt_ny); #endif ImageFileArray v = NULL; #ifdef HAVE_MPI if (mpiWorld.getRank() == 0) v = pImGlobal->getArray (); if (phm.getComposition() == P_UNIT_PULSE) { if (mpiWorld.getRank() == 0) { v[opt_nx/2][opt_ny/2] = 1.; } } else if (optFilterName != "") { if (mpiWorld.getRank() == 0) { pImGlobal->filterResponse (optDomainName.c_str(), optFilterBW, optFilterName.c_str(), optFilterParam); } } else { TimerCollectiveMPI timerRasterize (mpiWorld.getComm()); phm.convertToImagefile (*pImLocal, optViewRatio, opt_nsample, optTrace, mpiWorld.getMyStartWorkUnit(), mpiWorld.getMyLocalWorkUnits(), false); if (optVerbose) timerRasterize.timerEndAndReport ("Time to rasterize phantom"); TimerCollectiveMPI timerGather (mpiWorld.getComm()); mpi_gather_image (mpiWorld, pImGlobal, pImLocal, optDebug); if (optVerbose) timerGather.timerEndAndReport ("Time to gather image"); } #else v = pImGlobal->getArray (); if (phm.getComposition() == P_UNIT_PULSE) { v[opt_nx/2][opt_ny/2] = 1.; } else if (optFilterName != "") { pImGlobal->filterResponse (optDomainName.c_str(), optFilterBW, optFilterName.c_str(), optFilterParam); } else { phm.convertToImagefile (*pImGlobal, optViewRatio, opt_nsample, optTrace); } #endif #ifdef HAVE_MPI if (mpiWorld.getRank() == 0) #endif { double calctime = timerProgram.timerEnd (); pImGlobal->labelAdd (Array2dFileLabel::L_HISTORY, optDesc.c_str(), calctime); pImGlobal->fileWrite (optOutFilename.c_str()); if (optVerbose) std::cout << "Time to rasterize phantom: " << calctime << " seconds\n"; } delete pImGlobal; #ifdef HAVE_MPI delete pImLocal; #endif return (0); } #ifdef HAVE_MPI void mpi_gather_image (MPIWorld& mpiWorld, ImageFile* pImGlobal, ImageFile* pImLocal, const int optDebug) { ImageFileArray vLocal = pImLocal->getArray(); ImageFileArray vGlobal = NULL; int nyLocal = pImLocal->ny(); if (mpiWorld.getRank() == 0) vGlobal = pImGlobal->getArray(); for (int iw = 0; iw < mpiWorld.getMyLocalWorkUnits(); iw++) mpiWorld.getComm().Send(vLocal[iw], nyLocal, pImLocal->getMPIDataType(), 0, 0); if (mpiWorld.getRank() == 0) { for (int iProc = 0; iProc < mpiWorld.getNumProcessors(); iProc++) { for (int iw = mpiWorld.getStartWorkUnit(iProc); iw <= mpiWorld.getEndWorkUnit(iProc); iw++) { MPI::Status status; mpiWorld.getComm().Recv(vGlobal[iw], nyLocal, pImLocal->getMPIDataType(), iProc, 0, status); } } } } #endif #ifndef NO_MAIN int main (int argc, char* argv[]) { int retval = 1; try { retval = phm2if_main(argc, argv); } catch (exception e) { std::cerr << "Exception: " << e.what() << std::endl; } catch (...) { std::cerr << "Unknown exception\n"; } return (retval); } #endif ctsim-6.0.2/tools/nographics.cpp0000644000175000017500000000254211240454455015660 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: nographics.cpp ** Purpose: Empty functions for duplicates of graphcal functions ** Programmer: Kevin Rosenberg ** Date Started: Mar 2001 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "nographics.h" #ifdef HAVE_WXWINDOWS EZPlotDialog::EZPlotDialog (wxWindow *parent, bool bCancelButton) {} EZPlot* EZPlotDialog::getEZPlot() { return NULL; } int EZPlotDialog::ShowModal() { return 0; } #endif ctsim-6.0.2/tools/ifinfo.cpp0000644000175000017500000001061413254520441014770 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: ifinfo.cpp ** Purpose: Display information about an image file ** Programmer: Kevin Rosenberg ** Date Started: April 2000 ** ** This is part of the CTSim program ** Copyright (C) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /* FILE * ifinfo.c Display info on sdf files */ #include "ct.h" enum { O_LABELS, O_STATS, O_NO_STATS, O_NO_LABELS, O_VERBOSE, O_HELP, O_VERSION, O_DEBUG }; static struct option my_options[] = { {"labels", 0, 0, O_LABELS}, {"no-labels", 0, 0, O_NO_LABELS}, {"stats", 0, 0, O_STATS}, {"no-stats", 0, 0, O_NO_STATS}, {"debug", 0, 0, O_DEBUG}, {"verbose", 0, 0, O_VERBOSE}, {"help", 0, 0, O_HELP}, {"version", 0, 0, O_VERSION}, {0, 0, 0, 0} }; static const char* g_szIdStr = "$Id$"; void ifinfo_usage (const char *program) { std::cout << "usage: " << fileBasename(program) << " image-filename [OPTIONS]\n"; std::cout << "Imagefile information\n"; std::cout << std::endl; std::cout << " infile Name of input IF file\n"; std::cout << " --display Display image\n"; std::cout << " --labels Print image labels (default)\n"; std::cout << " --no-labels Do not print image labels\n"; std::cout << " --stats Print image statistics (default)\n"; std::cout << " --no-stats Do not print image statistics\n"; std::cout << " --debug Debug mode\n"; std::cout << " --verbose Verbose mode\n"; std::cout << " --version Print version\n"; std::cout << " --help Print this help message\n"; } int ifinfo_main (int argc, char *const argv[]) { ImageFile *im = NULL; std::string in_file; int opt_verbose = 0; int opt_stats = 1; int opt_labels = 1; int opt_debug = 0; UNUSED(opt_verbose); UNUSED(opt_debug); while (1) { int c = getopt_long (argc, argv, "", my_options, NULL); if (c == -1) break; switch (c) { case O_LABELS: opt_labels = 1; break; case O_STATS: opt_stats = 1; break; case O_NO_LABELS: opt_labels = 0; break; case O_NO_STATS: opt_stats = 0; break; case O_VERBOSE: opt_verbose = 1; break; case O_DEBUG: opt_debug = 0; break; case O_VERSION: #ifdef VERSION std::cout << "Version " << VERSION << std::endl << g_szIdStr << std::endl; #else std::cout << "Unknown version number\n"; #endif return (0); case O_HELP: case '?': ifinfo_usage(argv[0]); return (0); default: ifinfo_usage(argv[0]); return (1); } } if (optind + 1 != argc) { ifinfo_usage (argv[0]); return (1); } in_file = argv[optind]; im = new ImageFile (); if (! im->fileRead (in_file)) { sys_error (ERR_WARNING, "Unable to read file %s", in_file.c_str()); return (1); } if (opt_labels) im->printLabels (std::cout); if (opt_stats) { std::cout << "Size: (" << im->nx() << "," << im->ny() << ")\n"; std::cout << "Data type: "; if (im->dataType() == Array2dFile::DATA_TYPE_COMPLEX) std::cout << "Complex\n"; else std::cout << "Real\n"; im->printStatistics (std::cout); } return (0); } #ifndef NO_MAIN int main (int argc, char *const argv[]) { int retval = 1; try { retval = ifinfo_main(argc, argv); } catch (exception e) { std::cerr << "Exception: " << e.what() << std::endl; } catch (...) { std::cerr << "Unknown exception\n"; } return (retval); } #endif ctsim-6.0.2/tools/sample-ctsim.sh.in0000644000175000017500000000260213254271554016357 0ustar kevinkevin#!/bin/sh if test "$1" != "" ; then bin=$1 else bin="@prefix@/bin/" fi if test "$1" = "clean" ; then rm -f sample-phm.png sample-phm16.png sample-phm.if sample-pj.pj sample-pj.if sample-pj.png sample-pj16.png sample-rec.if sample-rec.png sample-rec16.png exit fi # Generate phantom image ${bin}ctsimtext phm2if sample-phm.if 256 256 --nsample 2 --phantom herman if [ -f sample-phm.if ] ; then ${bin}ctsimtext ifexport sample-phm.if sample-phm.png --format png ${bin}ctsimtext ifexport sample-phm.if sample-phm16.png --format png16 fi # Simulate CT data collection and generate raysum sinugram for display ${bin}ctsimtext phm2pj sample-pj.pj 367 320 --nray 2 --phantom herman if [ -f sample-pj.pj ]; then ${bin}ctsimtext pj2if sample-pj.pj sample-pj.if fi if [ -f sample-pj.if ]; then ${bin}ctsimtext ifexport sample-pj.if sample-pj.png --format png ${bin}ctsimtext ifexport sample-pj.if sample-pj16.png --format png16 fi # Reconstruct raysums and generate image for display ${bin}ctsimtext pjrec sample-pj.pj sample-rec.if 256 256 if [ -f sample-rec.if ]; then ${bin}ctsimtext ifexport sample-rec.if sample-rec.png --format png ${bin}ctsimtext ifexport sample-rec.if sample-rec16.png --format png16 # Display comparison statistics ${bin}ctsimtext if2 sample-phm.if sample-rec.if --comp fi # Files sample-phm.png, sample-pj.png, and sample-rec.png are ready for display ctsim-6.0.2/tools/Makefile.in0000644000175000017500000005454513254406203015071 0ustar kevinkevin# 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 = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ bin_PROGRAMS = @lamprograms@ ctsimtext$(EXEEXT) EXTRA_PROGRAMS = ctsimtext-lam$(EXEEXT) @USE_LAM_FALSE@ctsimtext_lam_DEPENDENCIES = subdir = tools ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/scripts/ax_check_compile_flag.m4 \ $(top_srcdir)/scripts/ax_ext.m4 \ $(top_srcdir)/scripts/ax_gcc_x86_avx_xgetbv.m4 \ $(top_srcdir)/scripts/ax_gcc_x86_cpuid.m4 \ $(top_srcdir)/scripts/ax_openmp.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = sample-ctsim.sh CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_ctsimtext_OBJECTS = ctsimtext.$(OBJEXT) if1.$(OBJEXT) if2.$(OBJEXT) \ ifinfo.$(OBJEXT) ifexport.$(OBJEXT) phm2if.$(OBJEXT) \ phm2pj.$(OBJEXT) pj2if.$(OBJEXT) pjinfo.$(OBJEXT) \ pjrec.$(OBJEXT) nographics.$(OBJEXT) phm2helix.$(OBJEXT) \ pjHinterp.$(OBJEXT) linogram.$(OBJEXT) ctsimtext_OBJECTS = $(am_ctsimtext_OBJECTS) am_ctsimtext_lam_OBJECTS = ctsimtext.$(OBJEXT) if1.$(OBJEXT) \ if2.$(OBJEXT) ifinfo.$(OBJEXT) ifexport.$(OBJEXT) \ phm2if.$(OBJEXT) phm2pj.$(OBJEXT) pj2if.$(OBJEXT) \ pjinfo.$(OBJEXT) pjrec.$(OBJEXT) nographics.$(OBJEXT) \ mpiworld.$(OBJEXT) phm2helix.$(OBJEXT) pjHinterp.$(OBJEXT) \ linogram.$(OBJEXT) ctsimtext_lam_OBJECTS = $(am_ctsimtext_lam_OBJECTS) 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@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/scripts/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 = SOURCES = $(ctsimtext_SOURCES) $(ctsimtext_lam_SOURCES) DIST_SOURCES = $(ctsimtext_SOURCES) $(ctsimtext_lam_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # 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 am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/sample-ctsim.sh.in \ $(top_srcdir)/scripts/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPUEXT_FLAGS = @CPUEXT_FLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ 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@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIMD_FLAGS = @SIMD_FLAGS@ STRIP = @STRIP@ VERSION = @VERSION@ XMKMF = @XMKMF@ X_BASIC_LIBS = @X_BASIC_LIBS@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ X_TOOLKIT_LIBS = @X_TOOLKIT_LIBS@ 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 = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ cgibindir = @cgibindir@ cgibinurl = @cgibinurl@ cgiprograms = @cgiprograms@ ctlibs = @ctlibs@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldata = @htmldata@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lamdefs = @lamdefs@ lamdir = @lamdir@ lamprograms = @lamprograms@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mpienable = @mpienable@ my_includes = @my_includes@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ webdatadir = @webdatadir@ webdataurl = @webdataurl@ webenabled = @webenabled@ wx_cppflags = @wx_cppflags@ wxcflags = @wxcflags@ wxconfig = @wxconfig@ wxlibs = @wxlibs@ AM_CPPFLAGS = @my_includes@ @HAVE_SGP_FALSE@SOURCE_DEPEND = ../include/ct.h ../libctsim/libctsim.a ../libctsupport/libctsupport.a @HAVE_SGP_TRUE@SOURCE_DEPEND = ../include/ct.h ../libctsim/libctsim.a ../libctsupport/libctsupport.a ../libctgraphics/libctgraphics.a ctsimtext_SOURCES = ctsimtext.cpp if1.cpp if2.cpp ifinfo.cpp ifexport.cpp phm2if.cpp phm2pj.cpp pj2if.cpp pjinfo.cpp pjrec.cpp nographics.cpp phm2helix.cpp pjHinterp.cpp linogram.cpp ctsimtext_LDADD = @ctlibs@ ctsimtext_DEPENDENCIES = $(SOURCE_DEPEND) CLEANFILES = \*.pgm \*.if \*~ \*.pj sample-ctsim.sh ctsimtext_lam_SOURCES = ctsimtext.cpp if1.cpp if2.cpp ifinfo.cpp ifexport.cpp phm2if.cpp phm2pj.cpp pj2if.cpp pjinfo.cpp pjrec.cpp nographics.cpp mpiworld.cpp phm2helix.cpp pjHinterp.cpp linogram.cpp ctsimtext_lam_LDADD = @ctlamlibs@ @USE_LAM_TRUE@CC_LAM = $(lamdir)/bin/hcp @USE_LAM_TRUE@LAM_EXTRA_SRC = mpiworld.cpp @USE_LAM_TRUE@ctsimtext_lam_DEPENDENCIES = $(SOURCE_DEPEND) all: all-am .SUFFIXES: .SUFFIXES: .cpp .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tools/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): sample-ctsim.sh: $(top_builddir)/config.status $(srcdir)/sample-ctsim.sh.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ 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) ctsimtext$(EXEEXT): $(ctsimtext_OBJECTS) $(ctsimtext_DEPENDENCIES) $(EXTRA_ctsimtext_DEPENDENCIES) @rm -f ctsimtext$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(ctsimtext_OBJECTS) $(ctsimtext_LDADD) $(LIBS) @USE_LAM_FALSE@ctsimtext-lam$(EXEEXT): $(ctsimtext_lam_OBJECTS) $(ctsimtext_lam_DEPENDENCIES) $(EXTRA_ctsimtext_lam_DEPENDENCIES) @USE_LAM_FALSE@ @rm -f ctsimtext-lam$(EXEEXT) @USE_LAM_FALSE@ $(AM_V_CXXLD)$(CXXLINK) $(ctsimtext_lam_OBJECTS) $(ctsimtext_lam_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctsimtext.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/if1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/if2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifexport.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifinfo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linogram.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpiworld.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nographics.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/phm2helix.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/phm2if.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/phm2pj.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pj2if.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pjHinterp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pjinfo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pjrec.Po@am__quote@ .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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 $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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) '$<'` 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" 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 distdir: $(DISTFILES) @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 check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; 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: 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) 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-generic mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-exec-hook install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(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 .MAKE: install-am install-exec-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-binPROGRAMS clean-generic cscopelist-am ctags ctags-am \ distclean distclean-compile distclean-generic distclean-tags \ distdir 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-exec-hook install-html install-html-am install-info \ install-info-am install-man 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 tags tags-am uninstall \ uninstall-am uninstall-binPROGRAMS .PRECIOUS: Makefile install-exec-hook: ln -sf ctsimtext $(DESTDIR)$(bindir)/if1 ln -sf ctsimtext $(DESTDIR)$(bindir)/if2 ln -sf ctsimtext $(DESTDIR)$(bindir)/ifexport ln -sf ctsimtext $(DESTDIR)$(bindir)/ifinfo ln -sf ctsimtext $(DESTDIR)$(bindir)/phm2if ln -sf ctsimtext $(DESTDIR)$(bindir)/phm2pj ln -sf ctsimtext $(DESTDIR)$(bindir)/phm2helix ln -sf ctsimtext $(DESTDIR)$(bindir)/pj2if ln -sf ctsimtext $(DESTDIR)$(bindir)/pjinfo ln -sf ctsimtext $(DESTDIR)$(bindir)/pjrec ln -sf ctsimtext $(DESTDIR)$(bindir)/pjHinterp ln -sf ctsimtext $(DESTDIR)$(bindir)/linogram @USE_LAM_TRUE@ctsimtext-lam$(EXEEXT): ctsimtext.cpp if1.cpp if2.cpp ifinfo.cpp ifexport.cpp phm2if.cpp phm2pj.cpp pj2if.cpp pjinfo.cpp pjrec.cpp mpiworld.cpp linogram.cpp ../include/ct.h ../libctsim/libctsim.a ../libctsupport/libctsupport.a @USE_LAM_TRUE@ $(CC_LAM) @DEFS@ @lamdefs@ $(CFLAGS) $(INCLUDES) -DHAVE_MPI -DNO_MAIN ctsimtext.cpp if1.cpp if2.cpp ifinfo.cpp ifexport.cpp phm2if.cpp phm2pj.cpp pj2if.cpp pjinfo.cpp pjrec.cpp -o ctsimtext-lam $(LDFLAGS) $(LAM_EXTRA_SRC) @ctlibs@ # 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: ctsim-6.0.2/tools/pjHinterp.cpp0000644000175000017500000001142613254520675015474 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: pjHinterp.cpp ** Purpose: Interpolate helical data in projection space ** Programmer: Ian Kay and Kevin Rosenberg ** Date Started: Aug 2001 ** ** This is part of the CTSim program ** Copyright (C) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "ct.h" #include "timer.h" enum { O_INTERPVIEW, O_VERBOSE, O_TRACE, O_HELP, O_DEBUG, O_VERSION}; static struct option my_options[] = { {"interpview", 1, 0, O_INTERPVIEW}, {"trace", 1, 0, O_TRACE}, {"debug", 0, 0, O_DEBUG}, {"verbose", 0, 0, O_VERBOSE}, {"help", 0, 0, O_HELP}, {"version", 0, 0, O_VERSION}, {0, 0, 0, 0} }; static const char* g_szIdStr = "$Id$"; void pjHinterp_usage ( const char *program ) { std::cout << "usage: " << fileBasename(program) << " projection-file interp-projection-file [OPTIONS]" << std::endl; std::cout << "Interpolation of helical data in raw data space" << std::endl; std::cout << " projection-file Input projection file" << std::endl; std::cout << " interp-file Output interpolated projection file " << std::endl; std::cout << " --trace Set tracing to level" << std::endl; std::cout << " none No tracing (default)" << std::endl; std::cout << " console Text level tracing" << std::endl; std::cout << " --verbose Turn on verbose mode" << std::endl; std::cout << " --debug Turn on debug mode" << std::endl; std::cout << " --version Print version" << std::endl; std::cout << " --help Print this help message" << std::endl; } int pjHinterp_main(int argc, char * const argv[]) { Projections projGlobal; char* pszProjFilename = NULL; char* pszInterpFilename = NULL; bool bOptVerbose = false; bool bOptDebug = false; int optTrace = Trace::TRACE_NONE; char *endptr = NULL; char *endstr; int opt_interpview=-1; UNUSED(bOptDebug); while (1) { int c = getopt_long(argc, argv, "", my_options, NULL); if (c == -1) break; switch (c) { case O_INTERPVIEW: opt_interpview = strtol(optarg, &endptr, 10); endstr = optarg + strlen(optarg); if (endptr != endstr) { std::cerr << "Error setting --interpview to %s" << optarg << std::endl; pjHinterp_usage(argv[0]); return(1); } break; case O_VERBOSE: bOptVerbose = true; break; case O_DEBUG: bOptDebug = true; break; case O_TRACE: if ((optTrace = Trace::convertTraceNameToID(optarg)) == Trace::TRACE_INVALID) { pjHinterp_usage(argv[0]); return (1); } break; case O_VERSION: #ifdef VERSION std::cout << "Version " << VERSION << std::endl << g_szIdStr << std::endl; #else std::cout << "Unknown version number" << std::endl; #endif return (0); case O_HELP: case '?': pjHinterp_usage(argv[0]); return (0); default: pjHinterp_usage(argv[0]); return (1); } // end switch } // end while if (optind + 2 != argc) { pjHinterp_usage(argv[0]); return (1); } pszProjFilename = argv[optind]; pszInterpFilename = argv[optind + 1]; Projections projections; if ( projections.read(pszProjFilename) != true ){ std::cerr << "Error reading input file " << pszProjFilename << std::endl; return (1); } if (bOptVerbose) { std::ostringstream os; projections.printScanInfo(os); std::cout << os.str(); } int status = projections.Helical180LI(opt_interpview); if ( status != 0 ) return (1); status = projections.HalfScanFeather(); if ( status != 0 ) return (1); projections.write( pszInterpFilename ); return (0); } #ifndef NO_MAIN int main (int argc, char* argv[]) { int retval = 1; try { retval = pjHinterp_main(argc, argv); } catch (exception e) { std::cerr << "Exception: " << e.what() << std::endl; } catch (...) { std::cerr << "Unknown exception" << std::endl; } return (retval); } #endif ctsim-6.0.2/tools/pjrec.cpp0000644000175000017500000003747113254520623014635 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: pjrec.cpp ** Purpose: Reconstruct an image from projections ** Programmer: Kevin Rosenberg ** Date Started: Aug 1984 ** ** This is part of the CTSim program ** Copyright (C) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "ct.h" #include "timer.h" enum {O_INTERP, O_FILTER, O_FILTER_METHOD, O_ZEROPAD, O_FILTER_PARAM, O_FILTER_GENERATION, O_BACKPROJ, O_PREINTERPOLATION_FACTOR, O_VERBOSE, O_TRACE, O_HELP, O_DEBUG, O_VERSION}; static struct option my_options[] = { {"interp", 1, 0, O_INTERP}, {"preinterpolation-factor", 1, 0, O_PREINTERPOLATION_FACTOR}, {"filter", 1, 0, O_FILTER}, {"filter-method", 1, 0, O_FILTER_METHOD}, {"zeropad", 1, 0, O_ZEROPAD}, {"filter-generation", 1, 0, O_FILTER_GENERATION}, {"filter-param", 1, 0, O_FILTER_PARAM}, {"backproj", 1, 0, O_BACKPROJ}, {"trace", 1, 0, O_TRACE}, {"debug", 0, 0, O_DEBUG}, {"verbose", 0, 0, O_VERBOSE}, {"help", 0, 0, O_HELP}, {"version", 0, 0, O_VERSION}, {0, 0, 0, 0} }; static const char* g_szIdStr = "$Id$"; void pjrec_usage (const char *program) { std::cout << "usage: " << fileBasename(program) << " raysum-file image-file nx-image ny-image [OPTIONS]" << std::endl; std::cout << "Image reconstruction from raysum projections" << std::endl; std::cout << std::endl; std::cout << " raysum-file Input raysum file" << std::endl; std::cout << " image-file Output image file in SDF2D format" << std::endl; std::cout << " nx-image Number of columns in output image" << std::endl; std::cout << " ny-image Number of rows in output image" << std::endl; std::cout << " --interp Interpolation method during backprojection" << std::endl; std::cout << " nearest Nearest neighbor interpolation" << std::endl; std::cout << " linear Linear interpolation (default)" << std::endl; std::cout << " cubic Cubic interpolation\n"; #if HAVE_BSPLINE_INTERP std::cout << " bspline B-spline interpolation" << std::endl; #endif std::cout << " --preinterpolate Preinterpolation factor (default = 1)\n"; std::cout << " Used only with frequency-based filtering\n"; std::cout << " --filter Filter name" << std::endl; std::cout << " abs_bandlimit Abs * Bandlimiting (default)" << std::endl; std::cout << " abs_sinc Abs * Sinc" << std::endl; std::cout << " abs_cosine Abs * Cosine" << std::endl; std::cout << " abs_hamming Abs * Hamming" << std::endl; std::cout << " abs_hanning Abs * Hanning" << std::endl; std::cout << " shepp Shepp-Logan" << std::endl; std::cout << " bandlimit Bandlimiting" << std::endl; std::cout << " sinc Sinc" << std::endl; std::cout << " cosine Cosine" << std::endl; std::cout << " triangle Triangle" << std::endl; std::cout << " hamming Hamming" << std::endl; std::cout << " hanning Hanning" << std::endl; std::cout << " --filter-method Filter method before backprojections\n";; std::cout << " convolution Spatial filtering (default)\n"; std::cout << " fourier Frequency filtering with discete fourier\n"; std::cout << " fourier_table Frequency filtering with table lookup fourier\n"; std::cout << " fft Fast Fourier Transform\n"; #if HAVE_FFTW std::cout << " fftw Fast Fourier Transform West library\n"; std::cout << " rfftw Fast Fourier Transform West (real-mode) library\n"; #endif std::cout << " --zeropad n Set zeropad level (default = 0)\n"; std::cout << " set n to number of powers to two to pad\n"; std::cout << " --filter-generation Filter Generation mode\n"; std::cout << " direct Use direct filter in spatial or frequency domain (default)\n"; std::cout << " inverse_fourier Use inverse fourier transform of inverse filter\n"; std::cout << " --backproj Backprojection Method" << std::endl; std::cout << " trig Trigometric functions at every point" << std::endl; std::cout << " table Trigometric functions with precalculated table" << std::endl; std::cout << " diff Difference method" << std::endl; std::cout << " idiff Difference method with integer math [default]" << std::endl; std::cout << " --filter-param Alpha level for Hamming filter" << std::endl; std::cout << " --trace Set tracing to level" << std::endl; std::cout << " none No tracing (default)" << std::endl; std::cout << " console Text level tracing" << std::endl; std::cout << " --verbose Turn on verbose mode" << std::endl; std::cout << " --debug Turn on debug mode" << std::endl; std::cout << " --version Print version" << std::endl; std::cout << " --help Print this help message" << std::endl; } #ifdef HAVE_MPI static void ScatterProjectionsMPI (MPIWorld& mpiWorld, Projections& projGlobal, Projections& projLocal, const bool bDebug); static void ReduceImageMPI (MPIWorld& mpiWorld, ImageFile* imLocal, ImageFile* imGlobal); #endif int pjrec_main (int argc, char * const argv[]) { Projections projGlobal; ImageFile* imGlobal = NULL; char* pszFilenameProj = NULL; char* pszFilenameImage = NULL; std::string sRemark; bool bOptVerbose = false; bool bOptDebug = false; int iOptZeropad = 1; int optTrace = Trace::TRACE_NONE; double dOptFilterParam = -1; std::string sOptFilterName (SignalFilter::convertFilterIDToName (SignalFilter::FILTER_ABS_BANDLIMIT)); std::string sOptFilterMethodName (ProcessSignal::convertFilterMethodIDToName (ProcessSignal::FILTER_METHOD_CONVOLUTION)); std::string sOptFilterGenerationName (ProcessSignal::convertFilterGenerationIDToName (ProcessSignal::FILTER_GENERATION_DIRECT)); std::string sOptInterpName (Backprojector::convertInterpIDToName (Backprojector::INTERP_LINEAR)); std::string sOptBackprojectName (Backprojector::convertBackprojectIDToName (Backprojector::BPROJ_IDIFF)); int iOptPreinterpolationFactor = 1; int nx, ny; char *endptr; UNUSED(bOptDebug); #ifdef HAVE_MPI ImageFile* imLocal; int mpi_nview, mpi_ndet; double mpi_detinc, mpi_rotinc, mpi_phmlen; MPIWorld mpiWorld (argc, argv); #endif Timer timerProgram; #ifdef HAVE_MPI if (mpiWorld.getRank() == 0) { #endif while (1) { int c = getopt_long(argc, argv, "", my_options, NULL); char *endptr = NULL; if (c == -1) break; switch (c) { case O_INTERP: sOptInterpName = optarg; break; case O_PREINTERPOLATION_FACTOR: iOptPreinterpolationFactor = strtol(optarg, &endptr, 10); if (endptr != optarg + strlen(optarg)) { pjrec_usage(argv[0]); return(1); } break; case O_FILTER: sOptFilterName = optarg; break; case O_FILTER_METHOD: sOptFilterMethodName = optarg; break; case O_FILTER_GENERATION: sOptFilterGenerationName = optarg; break; case O_FILTER_PARAM: dOptFilterParam = strtod(optarg, &endptr); if (endptr != optarg + strlen(optarg)) { pjrec_usage(argv[0]); return(1); } break; case O_ZEROPAD: iOptZeropad = strtol(optarg, &endptr, 10); if (endptr != optarg + strlen(optarg)) { pjrec_usage(argv[0]); return(1); } break; case O_BACKPROJ: sOptBackprojectName = optarg; break; case O_VERBOSE: bOptVerbose = true; break; case O_DEBUG: bOptDebug = true; break; case O_TRACE: if ((optTrace = Trace::convertTraceNameToID(optarg)) == Trace::TRACE_INVALID) { pjrec_usage(argv[0]); return (1); } break; case O_VERSION: #ifdef VERSION std::cout << "Version " << VERSION << std::endl << g_szIdStr << std::endl; #else std::cout << "Unknown version number" << std::endl; #endif return (0); case O_HELP: case '?': pjrec_usage(argv[0]); return (0); default: pjrec_usage(argv[0]); return (1); } } if (optind + 4 != argc) { pjrec_usage(argv[0]); return (1); } pszFilenameProj = argv[optind]; pszFilenameImage = argv[optind + 1]; nx = strtol(argv[optind + 2], &endptr, 10); ny = strtol(argv[optind + 3], &endptr, 10); std::ostringstream filterDesc; if (dOptFilterParam >= 0) filterDesc << sOptFilterName << ": alpha=" << dOptFilterParam; else filterDesc << sOptFilterName; std::ostringstream label; label << "pjrec: " << nx << "x" << ny << ", " << filterDesc.str() << ", " << sOptInterpName << ", preinterpolationFactor=" << iOptPreinterpolationFactor << ", " << sOptBackprojectName; sRemark = label.str(); if (bOptVerbose) std::cout << "SRemark: " << sRemark << std::endl; #ifdef HAVE_MPI } #endif #ifdef HAVE_MPI if (mpiWorld.getRank() == 0) { projGlobal.read (pszFilenameProj); if (bOptVerbose) { ostringstream os; projGlobal.printScanInfo (os); std::cout << os.str(); } mpi_ndet = projGlobal.nDet(); mpi_nview = projGlobal.nView(); mpi_detinc = projGlobal.detInc(); mpi_phmlen = projGlobal.phmLen(); mpi_rotinc = projGlobal.rotInc(); } TimerCollectiveMPI timerBcast (mpiWorld.getComm()); mpiWorld.BcastString (sOptBackprojectName); mpiWorld.BcastString (sOptFilterName); mpiWorld.BcastString (sOptFilterMethodName); mpiWorld.BcastString (sOptInterpName); mpiWorld.getComm().Bcast (&bOptVerbose, 1, MPI::INT, 0); mpiWorld.getComm().Bcast (&bOptDebug, 1, MPI::INT, 0); mpiWorld.getComm().Bcast (&optTrace, 1, MPI::INT, 0); mpiWorld.getComm().Bcast (&dOptFilterParam, 1, MPI::DOUBLE, 0); mpiWorld.getComm().Bcast (&iOptZeropad, 1, MPI::INT, 0); mpiWorld.getComm().Bcast (&iOptPreinterpolationFactor, 1, MPI::INT, 0); mpiWorld.getComm().Bcast (&mpi_ndet, 1, MPI::INT, 0); mpiWorld.getComm().Bcast (&mpi_nview, 1, MPI::INT, 0); mpiWorld.getComm().Bcast (&mpi_detinc, 1, MPI::DOUBLE, 0); mpiWorld.getComm().Bcast (&mpi_phmlen, 1, MPI::DOUBLE, 0); mpiWorld.getComm().Bcast (&mpi_rotinc, 1, MPI::DOUBLE, 0); mpiWorld.getComm().Bcast (&nx, 1, MPI::INT, 0); mpiWorld.getComm().Bcast (&ny, 1, MPI::INT, 0); if (bOptVerbose) timerBcast.timerEndAndReport ("Time to broadcast variables"); mpiWorld.setTotalWorkUnits (mpi_nview); Projections projLocal (mpiWorld.getMyLocalWorkUnits(), mpi_ndet); projLocal.setDetInc (mpi_detinc); projLocal.setPhmLen (mpi_phmlen); projLocal.setRotInc (mpi_rotinc); TimerCollectiveMPI timerScatter (mpiWorld.getComm()); ScatterProjectionsMPI (mpiWorld, projGlobal, projLocal, bOptDebug); if (bOptVerbose) timerScatter.timerEndAndReport ("Time to scatter projections"); if (mpiWorld.getRank() == 0) { imGlobal = new ImageFile (nx, ny); } imLocal = new ImageFile (nx, ny); #else if (! projGlobal.read (pszFilenameProj)) { fprintf(stderr, "Unable to read projectfile file %s\n", pszFilenameProj); exit(1); } if (bOptVerbose) { std::ostringstream os; projGlobal.printScanInfo(os); std::cout << os.str(); } imGlobal = new ImageFile (nx, ny); #endif #ifdef HAVE_MPI TimerCollectiveMPI timerReconstruct (mpiWorld.getComm()); Reconstructor reconstruct (projLocal, *imLocal, sOptFilterName.c_str(), dOptFilterParam, sOptFilterMethodName.c_str(), iOptZeropad, sOptFilterGenerationName.c_str(), sOptInterpName.c_str(), iOptPreinterpolationFactor, sOptBackprojectName.c_str(), optTrace); if (reconstruct.fail()) { std::cout << reconstruct.failMessage(); return (1); } reconstruct.reconstructAllViews(); if (bOptVerbose) timerReconstruct.timerEndAndReport ("Time to reconstruct"); TimerCollectiveMPI timerReduce (mpiWorld.getComm()); ReduceImageMPI (mpiWorld, imLocal, imGlobal); if (bOptVerbose) timerReduce.timerEndAndReport ("Time to reduce image"); #else Reconstructor reconstruct (projGlobal, *imGlobal, sOptFilterName.c_str(), dOptFilterParam, sOptFilterMethodName.c_str(), iOptZeropad, sOptFilterGenerationName.c_str(), sOptInterpName.c_str(), iOptPreinterpolationFactor, sOptBackprojectName.c_str(), optTrace); if (reconstruct.fail()) { std::cout << reconstruct.failMessage(); return (1); } reconstruct.reconstructAllViews(); #endif #ifdef HAVE_MPI if (mpiWorld.getRank() == 0) #endif { double dCalcTime = timerProgram.timerEnd(); imGlobal->labelAdd (projGlobal.getLabel()); imGlobal->labelAdd (Array2dFileLabel::L_HISTORY, sRemark.c_str(), dCalcTime); imGlobal->fileWrite (pszFilenameImage); if (bOptVerbose) std::cout << "Run time: " << dCalcTime << " seconds" << std::endl; } #ifdef HAVE_MPI MPI::Finalize(); #endif return (0); } ////////////////////////////////////////////////////////////////////////////////////// // MPI Support Routines // ////////////////////////////////////////////////////////////////////////////////////// #ifdef HAVE_MPI static void ScatterProjectionsMPI (MPIWorld& mpiWorld, Projections& projGlobal, Projections& projLocal, const bool bOptDebug) { if (mpiWorld.getRank() == 0) { for (int iProc = 0; iProc < mpiWorld.getNumProcessors(); iProc++) { for (int iw = mpiWorld.getStartWorkUnit(iProc); iw <= mpiWorld.getEndWorkUnit(iProc); iw++) { DetectorArray& detarray = projGlobal.getDetectorArray( iw ); int nDet = detarray.nDet(); DetectorValue* detval = detarray.detValues(); double viewAngle = detarray.viewAngle(); mpiWorld.getComm().Send(&nDet, 1, MPI::INT, iProc, 0); mpiWorld.getComm().Send(&viewAngle, 1, MPI::DOUBLE, iProc, 0); mpiWorld.getComm().Send(detval, nDet, MPI::FLOAT, iProc, 0); } } } for (int iw = 0; iw < mpiWorld.getMyLocalWorkUnits(); iw++) { MPI::Status status; int nDet; double viewAngle; DetectorValue* detval = projLocal.getDetectorArray(iw).detValues(); mpiWorld.getComm().Recv(&nDet, 1, MPI::INT, 0, 0, status); mpiWorld.getComm().Recv(&viewAngle, 1, MPI::DOUBLE, 0, 0, status); mpiWorld.getComm().Recv(detval, nDet, MPI::FLOAT, 0, 0, status); projLocal.getDetectorArray(iw).setViewAngle( viewAngle ); } } static void ReduceImageMPI (MPIWorld& mpiWorld, ImageFile* imLocal, ImageFile* imGlobal) { ImageFileArray vLocal = imLocal->getArray(); for (unsigned int ix = 0; ix < imLocal->nx(); ix++) { void *recvbuf = NULL; if (mpiWorld.getRank() == 0) { ImageFileArray vGlobal = imGlobal->getArray(); recvbuf = vGlobal[ix]; } mpiWorld.getComm().Reduce (vLocal[ix], recvbuf, imLocal->ny(), imLocal->getMPIDataType(), MPI::SUM, 0); } } #endif #ifndef NO_MAIN int main (int argc, char* argv[]) { int retval = 1; try { retval = pjrec_main(argc, argv); } catch (exception e) { std::cerr << "Exception: " << e.what() << std::endl; } catch (...) { std::cerr << "Unknown exception" << std::endl; } return (retval); } #endif ctsim-6.0.2/tools/phm2helix.cpp0000644000175000017500000003627213254402645015433 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: phm2helix.cpp ** Purpose: Take projections of a phantom object ** Programmers: Ian Kay and Kevin Rosenberg ** Date Started: Aug 2001 ** ** This is part of the CTSim program ** Copyright (C) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "ct.h" #include "timer.h" enum { O_PHANTOMPROG, O_PHMFILE, O_DESC, O_NRAY, O_ROTANGLE, O_GEOMETRY, O_FOCAL_LENGTH, O_CENTER_DETECTOR_LENGTH, O_VIEW_RATIO, O_SCAN_RATIO, O_OFFSETVIEW, O_TRACE, O_VERBOSE, O_HELP, O_DEBUG, O_VERSION }; static struct option phm2helix_options[] = { {"phantom", 1, 0, O_PHANTOMPROG}, {"desc", 1, 0, O_DESC}, {"nray", 1, 0, O_NRAY}, {"rotangle", 1, 0, O_ROTANGLE}, {"geometry", 1, 0, O_GEOMETRY}, {"focal-length", 1, 0, O_FOCAL_LENGTH}, {"center-detector-length", 1, 0, O_CENTER_DETECTOR_LENGTH}, {"view-ratio", 1, 0, O_VIEW_RATIO}, {"scan-ratio", 1, 0, O_SCAN_RATIO}, {"offsetview", 1, 0, O_OFFSETVIEW}, {"trace", 1, 0, O_TRACE}, {"verbose", 0, 0, O_VERBOSE}, {"help", 0, 0, O_HELP}, {"debug", 0, 0, O_DEBUG}, {"version", 0, 0, O_VERSION}, {"phmfile", 1, 0, O_PHMFILE}, {0, 0, 0, 0} }; static const char* g_szIdStr = "$Id$"; void phm2helix_usage (const char *program) { std::cout << "usage: " << fileBasename(program) << " outfile ndet nview phmprog [OPTIONS]\n"; std::cout << "Calculate (projections) through time varying phantom object \n\n"; std::cout << " outfile Name of output file for projectsions\n"; std::cout << " ndet Number of detectors\n"; std::cout << " nview Number of rotated views\n"; std::cout << " phmprog Name of phm generation executable\n"; std::cout << " --phmfile Temp phantom file name \n"; std::cout << " --desc Description of raysum\n"; std::cout << " --nray Number of rays per detector (default = 1)\n"; std::cout << " --rotangle Angle to rotate view through (fraction of a circle)\n"; std::cout << " (default = select appropriate for geometry)\n"; std::cout << " --geometry Geometry of scanning\n"; std::cout << " parallel Parallel scan beams (default)\n"; std::cout << " equilinear Equilinear divergent scan beams\n"; std::cout << " equiangular Equiangular divergent scan beams\n"; std::cout << " --focal-length Focal length ratio (ratio to radius of phantom)\n"; std::cout << " (default = 1)\n"; std::cout << " --view-ratio Length to view (view diameter to phantom diameter)\n"; std::cout << " (default = 1)\n"; std::cout << " --scan-ratio Length to scan (scan diameter to view diameter)\n"; std::cout << " (default = 1)\n"; std::cout << " --offsetview Initial gantry offset in 'views' (default = 0)\n"; std::cout << " --trace Trace level to use\n"; std::cout << " none No tracing (default)\n"; std::cout << " console Trace text level\n"; std::cout << " --verbose Verbose mode\n"; std::cout << " --debug Debug mode\n"; std::cout << " --version Print version\n"; std::cout << " --help Print this help message\n"; } int phm2helix_main (int argc, char* const argv[]) { Phantom phm; std::string optGeometryName = Scanner::convertGeometryIDToName(Scanner::GEOMETRY_PARALLEL); char *opt_outfile = NULL; std::string opt_desc; std::string opt_PhmProg; std::string opt_PhmFileName = "tmpphmfile"; int opt_ndet; int opt_nview; int opt_offsetview = 0; int opt_nray = 1; double dOptFocalLength = 2.; double dOptCenterDetectorLength = 2; double dOptViewRatio = 1.; double dOptScanRatio = 1.; int opt_trace = Trace::TRACE_NONE; int opt_verbose = 0; int opt_debug = 0; double opt_rotangle = -1; char* endptr = NULL; char* endstr; Timer timerProgram; while (1) { int c = getopt_long(argc, argv, "", phm2helix_options, NULL); if (c == -1) break; switch (c) { case O_VERBOSE: opt_verbose = 1; break; case O_DEBUG: opt_debug = 1; break; case O_TRACE: if ((opt_trace = Trace::convertTraceNameToID(optarg)) == Trace::TRACE_INVALID) { phm2helix_usage(argv[0]); return (1); } break; case O_PHMFILE: opt_PhmFileName = optarg; break; case O_DESC: opt_desc = optarg; break; case O_ROTANGLE: opt_rotangle = strtod(optarg, &endptr); endstr = optarg + strlen(optarg); if (endptr != endstr) { std::cerr << "Error setting --rotangle to " << optarg << std::endl; phm2helix_usage(argv[0]); return (1); } break; case O_GEOMETRY: optGeometryName = optarg; break; case O_FOCAL_LENGTH: dOptFocalLength = strtod(optarg, &endptr); endstr = optarg + strlen(optarg); if (endptr != endstr) { std::cerr << "Error setting --focal-length to " << optarg << std::endl; phm2helix_usage(argv[0]); return (1); } break; case O_CENTER_DETECTOR_LENGTH: dOptCenterDetectorLength = strtod(optarg, &endptr); endstr = optarg + strlen(optarg); if (endptr != endstr) { std::cerr << "Error setting --center-detector-length to " << optarg << std::endl; phm2helix_usage(argv[0]); return (1); } break; case O_VIEW_RATIO: dOptViewRatio = strtod(optarg, &endptr); endstr = optarg + strlen(optarg); if (endptr != endstr) { std::cerr << "Error setting --view-ratio to " << optarg << std::endl; phm2helix_usage(argv[0]); return (1); } break; case O_SCAN_RATIO: dOptScanRatio = strtod(optarg, &endptr); endstr = optarg + strlen(optarg); if (endptr != endstr) { std::cerr << "Error setting --scan-ratio to " << optarg << std::endl; phm2helix_usage(argv[0]); return (1); } break; case O_NRAY: opt_nray = strtol(optarg, &endptr, 10); endstr = optarg + strlen(optarg); if (endptr != endstr) { std::cerr << "Error setting --nray to %s" << optarg << std::endl; phm2helix_usage(argv[0]); return (1); } break; case O_OFFSETVIEW: opt_offsetview = strtol(optarg, &endptr, 10); endstr = optarg + strlen(optarg); if (endptr != endstr) { std::cerr << "Error setting --offsetview to %s" << optarg << std::endl; phm2helix_usage(argv[0]); return (1); } break; case O_VERSION: #ifdef VERSION std::cout << "Version: " << VERSION << std::endl << g_szIdStr << std::endl; #else std::cout << "Unknown version number\n"; #endif return (0); case O_HELP: case '?': phm2helix_usage(argv[0]); return (0); default: phm2helix_usage(argv[0]); return (1); } // end of switch } // end of while loop if (optind + 4 != argc) { phm2helix_usage(argv[0]); return (1); } opt_outfile = argv[optind]; opt_ndet = strtol(argv[optind+1], &endptr, 10); endstr = argv[optind+1] + strlen(argv[optind+1]); if (endptr != endstr) { std::cerr << "Error setting --ndet to " << argv[optind+1] << std::endl; phm2helix_usage(argv[0]); return (1); } opt_nview = strtol(argv[optind+2], &endptr, 10); endstr = argv[optind+2] + strlen(argv[optind+2]); if (endptr != endstr) { std::cerr << "Error setting --nview to " << argv[optind+2] << std::endl; phm2helix_usage(argv[0]); return (1); } opt_PhmProg = argv[optind+3]; if (opt_rotangle < 0) { if (optGeometryName.compare ("parallel") == 0) opt_rotangle = 0.5; else opt_rotangle = 1.0; } std::ostringstream desc; desc << "phm2helix: NDet=" << opt_ndet << ", Nview=" << opt_nview << ", NRay=" << opt_nray << ", RotAngle=" << opt_rotangle << ", OffsetView =" << opt_offsetview << ", Geometry=" << optGeometryName << ", PhantomProg=" << opt_PhmProg << ", PhmFileName=" << opt_PhmFileName; if (opt_desc.length()) { desc << ": " << opt_desc; } opt_desc = desc.str(); opt_rotangle *= TWOPI; int stat; char extcommand[100]; if(opt_debug != 0) std::cout << opt_PhmProg << " " << 0 << " " << opt_nview << " " << opt_PhmFileName << std::endl; //extcommand << opt_PhmProg << " " << 0 << " " << opt_nview << " " << opt_PhmFileName ; sprintf(extcommand, "%s %d %d %s", opt_PhmProg.c_str(), 0, opt_nview, opt_PhmFileName.c_str() ); stat = system( extcommand ); if (stat != 0 ) std::cerr << "Error executing external phantom program " << opt_PhmProg << " with command " << extcommand << std::endl; phm.createFromFile (opt_PhmFileName.c_str()); remove(opt_PhmFileName.c_str()); Scanner scanner (phm, optGeometryName.c_str(), opt_ndet, opt_nview, opt_offsetview, opt_nray, opt_rotangle, dOptFocalLength, dOptCenterDetectorLength, dOptViewRatio, dOptScanRatio); if (scanner.fail()) { std::cout << "Scanner Creation Error: " << scanner.failMessage() << std::endl; return (1); } Projections pjGlobal(scanner); for( int iView = 0; iView < opt_nview; iView++ ){ if(opt_debug != 0) std::cout << opt_PhmProg << " " << iView << " " << opt_nview << " " << opt_PhmFileName << std::endl; //extcommand << opt_PhmProg << " " << iView << " " << opt_nview << " " << opt_PhmFileName ; sprintf(extcommand, "%s %d %d %s", opt_PhmProg.c_str(), iView, opt_nview, opt_PhmFileName.c_str() ); stat = system( extcommand ); if (stat != 0 ) std::cerr << "Error executing external phantom program " << opt_PhmProg << " with command " << extcommand << std::endl; Phantom phmtmp; phmtmp.createFromFile (opt_PhmFileName.c_str()); scanner.collectProjections (pjGlobal, phmtmp, iView, 1, scanner.offsetView(), true, opt_trace); remove(opt_PhmFileName.c_str()); } pjGlobal.setCalcTime (timerProgram.timerEnd()); pjGlobal.setRemark (opt_desc); pjGlobal.write (opt_outfile); if (opt_verbose) { phm.print (std::cout); std::cout << std::endl; std::ostringstream os; pjGlobal.printScanInfo (os); std::cout << os.str() << std::endl; std::cout << " Remark: " << pjGlobal.remark() << std::endl; std::cout << "Run time: " << pjGlobal.calcTime() << " seconds\n"; } return (0); } #ifndef NO_MAIN int main (int argc, char* argv[]) { int retval = 1; try { retval = phm2helix_main(argc, argv); #if HAVE_DMALLOC // dmalloc_shutdown(); #endif } catch (exception e) { std::cerr << "Exception: " << e.what() << std::endl; } catch (...) { std::cerr << "Unknown exception\n"; } return (retval); } #endif ctsim-6.0.2/tools/pj2if.cpp0000644000175000017500000000746111240454455014542 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: pj2if.cpp ** Purpose: Convert an projection data file to an image file ** Programmer: Kevin Rosenberg ** Date Started: April 2000 ** ** This is part of the CTSim program ** Copyright (C) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /* FILE * pj2if.c Convert Raysum to image * * DATE * Apr 1999 */ #include "ct.h" #include "timer.h" enum { O_VERBOSE, O_HELP, O_VERSION, O_POLAR }; static struct option my_options[] = { {"polar", 0, 0, O_POLAR}, {"verbose", 0, 0, O_VERBOSE}, {"help", 0, 0, O_HELP}, {"version", 0, 0, O_VERSION}, {0, 0, 0, 0} }; static const char* g_szIdStr = "$Id$"; void pj2if_usage (const char *program) { std::cout << "usage: " << fileBasename(program) << " in-proj-file out-if-file [OPTIONS]\n"; std::cout << "Converts a projection file to a imagefile\n"; std::cout << std::endl; std::cout << " --polar Convert to polar format\n"; std::cout << " --verbose Verbose mode\n"; std::cout << " --version Print version\n"; std::cout << " --help Print this help message\n"; } int pj2if_main (const int argc, char *const argv[]) { char *pj_name, *im_name; bool optVerbose = false; extern int optind; Timer timerProgram; while (1) { int c = getopt_long (argc, argv, "", my_options, NULL); if (c == -1) break; switch (c) { case O_VERBOSE: optVerbose = true; break; case O_VERSION: #ifdef VERSION std::cout << "Version " << VERSION << std::endl << g_szIdStr << std::endl; #else std::cout << "Unknown version number\n"; #endif return (0); case O_HELP: case '?': pj2if_usage(argv[0]); return (0); default: pj2if_usage(argv[0]); return (1); } } if (argc - optind != 2) { pj2if_usage(argv[0]); return (1); } pj_name = argv[optind]; im_name = argv[optind + 1]; Projections pj; if (! pj.read (pj_name)) { sys_error (ERR_SEVERE, "Can not open projection file %s", pj_name); return (1); } if (optVerbose) { std::ostringstream os; pj.printScanInfo (os); std::cout << os.str(); } ImageFile im (pj.nDet(), pj.nView()); ImageFileArray v = im.getArray(); for (int iy = 0; iy < pj.nView(); iy++) { const DetectorArray& detarray = pj.getDetectorArray (pj.nView() - iy - 1); const DetectorValue* detval = detarray.detValues(); for (int ix = 0; ix < pj.nDet(); ix++) { v[ix][iy] = detval[ix]; } } im.labelAdd (pj.getLabel()); im.labelAdd (Array2dFileLabel::L_HISTORY, "Conversion from .pj to .if", timerProgram.timerEnd()); im.fileWrite (im_name); return(0); } #ifndef NO_MAIN int main (const int argc, char *const argv[]) { int retval = 1; try { retval = pj2if_main(argc, argv); } catch (exception e) { std::cerr << "Exception: " << e.what() << std::endl; } catch (...) { std::cerr << "Unknown exception\n"; } return (retval); } #endif ctsim-6.0.2/tools/ctsimtext.cpp0000644000175000017500000002500711240454454015547 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: ctsimtext.cpp ** Purpose: Text mode shell for CTSim ** Programmer: Kevin Rosenberg ** Date Started: Jan 2001 ** ** This is part of the CTSim program ** Copyright (C) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "ct.h" #ifdef HAVE_READLINE_H extern "C" { #include #include }; #elif defined(HAVE_READLINE_READLINE_H) extern "C" { #include #include }; #endif #include // Master shell for all command-line tools // If called as ctsimtext, program will look to next token on command-line as the function name // If linked to ctsimtext, but executed as another name, eg pjrec, then program will use that // linked name as name of function. static const char* const g_szIdStr = "$Id$"; static const char* const s_szProgramName = "ctsimtext"; static const char* const s_szProgramName2 = "ctsimtext.exe"; static const char* const s_szProgramName3 = "ctsimtext-lam"; extern int if1_main (int argc, char* const argv[]); extern int if2_main (int argc, char* const argv[]); extern int ifexport_main (int argc, char* const argv[]); extern int ifinfo_main (int argc, char* const argv[]); extern int phm2if_main (int argc, char* const argv[]); extern int phm2pj_main (int argc, char* const argv[]); extern int phm2helix_main (int argc, char* const argv[]); extern int pjHinterp_main (int argc, char* const argv[]); extern int pj2if_main (int argc, char* const argv[]); extern int pjinfo_main (int argc, char* const argv[]); extern int pjrec_main (int argc, char* const argv[]); extern int linogram_main (int argc, char* const argv[]); static int processCommand (int argc, char* const argv[]); static void convertStringToArgcv (char* szLine, int* piArgc, char*** pppArgv); void ctsimtext_usage (const char *program) { std::cout << "usage: " << fileBasename(program) << " ctsim-function-name ctstim-function-parameters...\n"; std::cout << "CTSim text shell"; #ifdef VERSION std::cout << ", Version " < 1 && (strcmp(s_szProgramName, fileBasename (argv[0])) == 0 || strcmp(s_szProgramName2, fileBasename (argv[0])) == 0 || strcmp(s_szProgramName3, fileBasename (argv[0])) == 0)) { argv++; argc--; iReturn = processCommand (argc, argv); } else if (argc >= 1 && ! (strcmp(s_szProgramName, fileBasename (argv[0])) == 0 || strcmp(s_szProgramName2, fileBasename (argv[0])) == 0 || strcmp(s_szProgramName3, fileBasename (argv[0])) == 0)) { iReturn = processCommand (argc, argv); } else { s_bInteractive = true; char szPrompt[] = "CTSim> "; std::cout << "CTSim Text Shell"; #ifdef VERSION std::cout << ", Version " << VERSION; #endif std::cout << " (Type \"quit\" to end)\n\n"; while (1) { #ifdef HAVE_READLINE char* pszInputLine = readline (szPrompt); if (! pszInputLine) break; if (*pszInputLine != EOS) add_history (pszInputLine); #else // DONT_HAVE_READLINE static const int s_MaxLineLength = 1024; char* pszInputLine = new char [s_MaxLineLength+1]; std::cout << szPrompt; std::cin.getline (pszInputLine, s_MaxLineLength); #ifdef DEBUG std::cout << "#" << pszInputLine << "#\n"; #endif std::cout << std::flush; std::cout << "\n"; #endif // DONT_HAVE_READLINE if (strncasecmp (pszInputLine, "quit", 4) == 0) break; convertStringToArgcv (pszInputLine, &argc, &argv); #ifdef DEBUG for (int i = 0; i < argc; i++) std::cout << "Token " << i << ": " << argv[i] << "\n"; #endif iReturn = processCommand (argc, argv); delete pszInputLine; } } return iReturn; } static void convertStringToArgcv (char* pszLine, int* piArgc, char*** pppArgv) { char* pCurrentPos = pszLine; int nTokens = 0; std::vector vecpszToken; // Process line bool bInDoubleQuote = false; bool bInSingleQuote = false; bool bInToken = false; while (*pCurrentPos) { if (isspace (*pCurrentPos)) { if (! bInToken) *pCurrentPos = 0; else if (bInSingleQuote || bInDoubleQuote) ; else { // in non-quote token *pCurrentPos = 0; bInToken = false; } } else if (*pCurrentPos == '\"') { if (bInSingleQuote) { bInSingleQuote = false; *pCurrentPos = 0; } else { bInSingleQuote = true; if (! bInToken) { bInToken = true; nTokens++; vecpszToken.push_back (pCurrentPos+1); } } } else if (*pCurrentPos == '\'') { if (bInDoubleQuote) { bInDoubleQuote = false; *pCurrentPos = 0; } else { bInDoubleQuote = true; if (! bInToken) { bInToken = true; nTokens++; vecpszToken.push_back (pCurrentPos+1); } } } else if (! bInToken) { // nonwhite, non-quote character bInToken = true; nTokens++; vecpszToken.push_back (pCurrentPos); } pCurrentPos++; } *piArgc = nTokens; if (nTokens > 0) { *pppArgv = new char* [nTokens]; for (unsigned int iToken = 0; iToken < vecpszToken.size(); iToken++) (*pppArgv)[iToken] = vecpszToken[iToken]; } else *pppArgv = NULL; } static int processCommand (int argc, char* const argv[]) { if (argc < 1) return 1; const char* const pszFunction = fileBasename (argv[0]); try { if (strcasecmp (pszFunction, "if1") == 0) return if1_main (argc, argv); else if (strcasecmp (pszFunction, "if2") == 0) return if2_main (argc, argv); else if (strcasecmp (pszFunction, "ifexport") == 0) return ifexport_main (argc, argv); else if (strcasecmp (pszFunction, "ifinfo") == 0) return ifinfo_main (argc, argv); else if (strcasecmp (pszFunction, "phm2if") == 0) return phm2if_main (argc, argv); else if (strcasecmp (pszFunction, "phm2pj") == 0) return phm2pj_main (argc, argv); else if (strcasecmp (pszFunction, "phm2helix") == 0) return phm2helix_main (argc, argv); else if (strcasecmp (pszFunction, "pjHinterp") == 0) return pjHinterp_main (argc, argv); else if (strcasecmp (pszFunction, "pj2if") == 0) return pj2if_main (argc, argv); else if (strcasecmp (pszFunction, "pjinfo") == 0) return pjinfo_main (argc, argv); else if (strcasecmp (pszFunction, "pjrec") == 0) return pjrec_main (argc, argv); else if (strcasecmp (pszFunction, "linogram") == 0) return linogram_main (argc, argv); else { std::cout << "Unknown function name: " << pszFunction << "\n"; if (s_bInteractive) interactive_usage(); else ctsimtext_usage (s_szProgramName); return 1; } } catch (std::exception e) { std::cerr << "Exception: " << e.what() << std::endl; } catch (...) { std::cerr << "Unknown exception caught\n"; } return 1; } int main (int argc, char* argv[]) { #if defined(HAVE_FFTW) && defined(HAVE_GETENV) const char* const pszHome = getenv("HOME"); char* pszWisdom = NULL; if (pszHome) { const char szFileBase[] = ".fftw3-wisdom"; int nHome = strlen(pszHome); int nBase = strlen(szFileBase); int len = nHome + nBase + 1; pszWisdom = new char [ len + 1 ]; strcpy (pszWisdom, pszHome); pszWisdom[nHome] = '/'; strcpy(pszWisdom+nHome+1,szFileBase); pszWisdom[nHome+nBase+2] = 0; FILE *wisdom = fopen(pszWisdom,"r"); if (wisdom) { fftw_import_wisdom_from_file(wisdom); fclose(wisdom); } } #endif int retval = ctsimtext_main(argc, argv); #if defined(HAVE_FFTW) && defined(HAVE_GETENV) if (pszWisdom) { FILE* wisdom = fopen(pszWisdom,"w+"); if (wisdom) { fftw_export_wisdom_to_file(wisdom); fclose(wisdom); delete [] pszWisdom; } } #endif return retval; } ctsim-6.0.2/tools/linogram.cpp0000644000175000017500000001224613254520650015333 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: linogram.cpp ** Purpose: Display linogram sampling ** Programmer: Kevin Rosenberg ** Date Started: April 2003 ** ** This is part of the CTSim program ** Copyright (C) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "ct.h" enum { O_XY, O_POLAR_RT, O_VERBOSE, O_HELP, O_VERSION, O_DEBUG }; static struct option my_options[] = { {"xy", 0, 0, O_XY}, {"polar-rt", 0, 0, O_POLAR_RT}, {"debug", 0, 0, O_DEBUG}, {"verbose", 0, 0, O_VERBOSE}, {"help", 0, 0, O_HELP}, {"version", 0, 0, O_VERSION}, {0, 0, 0, 0} }; static const char* g_szIdStr = "$Id$"; void linogram_usage (const char *program) { std::cout << "usage: " << fileBasename(program) << " n d [OPTIONS]\n"; std::cout << "Imagefile information\n"; std::cout << std::endl; std::cout << " n Linogram N\n"; std::cout << " d Max detector spacing\n"; std::cout << " --xy Output x,y pairs\n"; std::cout << " --polar-rt Output r,t pairs\n"; std::cout << " --debug Debug mode\n"; std::cout << " --verbose Verbose mode\n"; std::cout << " --version Print version\n"; std::cout << " --help Print this help message\n"; } int linogram_main (int argc, char *const argv[]) { int opt_polar_rt = 0; int opt_xy = 0; int opt_verbose = 0; int opt_debug = 0; UNUSED(opt_verbose); UNUSED(opt_debug); while (1) { int c = getopt_long (argc, argv, "", my_options, NULL); if (c == -1) break; switch (c) { case O_XY: opt_xy = 1; break; case O_POLAR_RT: opt_polar_rt = 1; break; case O_VERBOSE: opt_verbose = 1; break; case O_DEBUG: opt_debug = 0; break; case O_VERSION: #ifdef VERSION std::cout << "Version " << VERSION << std::endl << g_szIdStr << std::endl; #else std::cout << "Unknown version number\n"; #endif return (0); case O_HELP: case '?': linogram_usage(argv[0]); return (0); default: linogram_usage(argv[0]); return (1); } } if (optind + 2 != argc) { linogram_usage (argv[0]); return (1); } const char* in_n = argv[optind]; const char* in_d = argv[optind+1]; int n = atol (in_n); double d = atof (in_d); int size = 4 * n + 3; int max = 2 * n + 1; int min = -max; double theta_base = PI/4; // theta_base = 0; double theta_vec [size]; for (int i = 0; i < size; i++) { int m = i - (2 * n + 1); theta_vec[i] = atan (static_cast(2 * m) / size); } if (opt_xy) { int m; for (m = 0; m < size; m++) { double step = d * cos(theta_vec[m]); for (int id = min; id <= max; id++) { double r = id * step; double x = r * cos(theta_vec[m] + theta_base); double y = r * sin(theta_vec[m] + theta_base); printf ("%lf,%lf ", x, y); } printf ("\n"); } for (m = 0; m < size; m++) { double step = d * cos(theta_vec[m]); for (int id = min; id <= max; id++) { double r = id * step; double x = r * cos(theta_vec[m] + PI/2 + theta_base); double y = r * sin(theta_vec[m] + PI/2 + theta_base); printf ("%lf,%lf ", x, y); } printf ("\n"); } } else { int m; for (m = 0; m < size; m++) { if (! opt_polar_rt) printf ("%lf: ", theta_vec[m] + theta_base); double step = d * cos(theta_vec[m]); for (int id = min; id <= max; id++) { if (opt_polar_rt) printf ("%lf,", theta_vec[m] + theta_base); printf ("%lf ", id * step); } printf ("\n"); } for (m = 0; m < size; m++) { if (! opt_polar_rt) printf ("%lf: ", theta_vec[m] + PI/2 + theta_base); double step = d * cos(theta_vec[m]); for (int id = min; id <= max; id++) { if (opt_polar_rt) printf ("%lf,", theta_vec[m] + PI/2 + theta_base); printf ("%lf ", id * step); } printf ("\n"); } } return (0); } #ifndef NO_MAIN int main (int argc, char *const argv[]) { int retval = 1; try { retval = linogram_main(argc, argv); } catch (exception e) { std::cerr << "Exception: " << e.what() << std::endl; } catch (...) { std::cerr << "Unknown exception\n"; } return (retval); } #endif ctsim-6.0.2/tools/if2.cpp0000644000175000017500000002211313254520376014202 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: if2.cpp ** Purpose: Manipulate two image files ** Programmer: Kevin Rosenberg ** Date Started: May 2000 ** ** This is part of the CTSim program ** Copyright (C) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "ct.h" #include "timer.h" enum {O_ADD, O_SUB, O_MUL, O_DIVIDE, O_COMP, O_ROW_PLOT, O_COLUMN_PLOT, O_VERBOSE, O_HELP, O_VERSION}; static struct option my_options[] = { {"add", 0, 0, O_ADD}, {"sub", 0, 0, O_SUB}, {"multiply", 0, 0, O_MUL}, {"divide", 0, 0, O_DIVIDE}, {"comp", 0, 0, O_COMP}, {"column-plot", 1, 0, O_COLUMN_PLOT}, {"row-plot", 1, 0, O_ROW_PLOT}, {"verbose", 0, 0, O_VERBOSE}, {"help", 0, 0, O_HELP}, {"version", 0, 0, O_VERSION}, {0, 0, 0, 0} }; static const char* g_szIdStr = "$Id$"; void if2_usage (const char *program) { std::cout << "usage: " << fileBasename(program) << " infile1 infile2 outfile [OPTIONS]\n"; std::cout << "Perform functions on two input image files\n"; std::cout << std::endl; std::cout << " infile1 Name of first input IF file\n"; std::cout << " infile2 Name of second input IF file\n"; std::cout << " outfile Name of output Image or Plot file\n"; std::cout << " --add Add images\n"; std::cout << " --sub Subtract image 2 from image 1\n"; std::cout << " --mul Multiply images\n"; std::cout << " --comp Compare images\n"; std::cout << " --column-plot n Plot column\n"; std::cout << " --row-plot n Plot row\n"; std::cout << " --verbose Verbose modem\n"; std::cout << " --version Print version\n"; std::cout << " --help Print this help message\n"; } int if2_main (int argc, char *const argv[]) { ImageFile* pim_in1; ImageFile* pim_in2; ImageFile* pim_out = NULL; std::string in_file1; std::string in_file2; std::string strOutFile; int opt_verbose = 0; int opt_add = 0; int opt_sub = 0; int opt_mul = 0; bool opt_divide = false; int opt_comp = 0; bool opt_bImageOutputFile = false; bool opt_bPlotOutputFile = false; int opt_rowPlot = -1; int opt_columnPlot = -1; Timer timerProgram; UNUSED(opt_verbose); while (1) { char* endptr; int c = getopt_long (argc, argv, "", my_options, NULL); if (c == -1) break; switch (c) { case O_ADD: opt_add = 1; opt_bImageOutputFile = true; break; case O_SUB : opt_sub = 1; opt_bImageOutputFile = true; break; case O_MUL: opt_mul = 1; opt_bImageOutputFile = true; break; case O_DIVIDE: opt_divide = true; opt_bImageOutputFile = true; break; case O_ROW_PLOT: opt_rowPlot = strtol(optarg, &endptr, 10); if (endptr != optarg + strlen(optarg)) { if2_usage(argv[0]); } opt_bPlotOutputFile = true; break; case O_COLUMN_PLOT: opt_columnPlot = strtol(optarg, &endptr, 10); if (endptr != optarg + strlen(optarg)) { if2_usage(argv[0]); } opt_bPlotOutputFile = true; break; case O_COMP: opt_comp = 1; break; case O_VERBOSE: opt_verbose = 1; break; case O_VERSION: #ifdef VERSION std::cout << "Version " << VERSION << std::endl << g_szIdStr << std::endl; #else std::cout << "Unknown version number\n"; #endif return (0); case O_HELP: case '?': if2_usage(argv[0]); return (0); default: if2_usage(argv[0]); return (1); } } if ((opt_bImageOutputFile || opt_bPlotOutputFile) && (optind + 3 != argc)) { if2_usage(argv[0]); return (1); } else if (! (opt_bImageOutputFile || opt_bPlotOutputFile) && optind + 2 != argc) { if2_usage(argv[0]); return (1); } in_file1 = argv[optind]; in_file2 = argv[optind + 1]; if (opt_bImageOutputFile || opt_bPlotOutputFile) strOutFile = argv[optind + 2]; pim_in1 = new ImageFile (); pim_in2 = new ImageFile (); ImageFile& im_in1 = *pim_in1; ImageFile& im_in2 = *pim_in2; if (! im_in1.fileRead(in_file1) || ! im_in2.fileRead(in_file2)) { sys_error (ERR_WARNING, "Error reading an image"); return (1); } if (im_in1.nx() != im_in2.nx() || im_in1.ny() != im_in2.ny()) { sys_error (ERR_SEVERE, "Error: Size of image 1 (%d,%d) and image 2 (%d,%d) do not match", im_in1.nx(), im_in1.ny(), im_in2.nx(), im_in2.ny()); return(1); } if (im_in1.nx() < 0 || im_in1.ny() < 0) { sys_error (ERR_SEVERE, "Error: Size of image < 0"); return(1); } if (opt_bImageOutputFile && opt_bPlotOutputFile) { sys_error (ERR_SEVERE, "Both Image and Plot output files can not be selected simultaneously"); return (1); } ImageFileArray v1 = im_in1.getArray(); ImageFileArray v2 = im_in2.getArray(); ImageFileArray vout = NULL; if (opt_bImageOutputFile) { pim_out = new ImageFile (im_in1.nx(), im_in1.ny()); vout = pim_out->getArray(); } UNUSED(vout); std::string strOperation; int nx = im_in1.nx(); int ny = im_in1.ny(); int nx2 = im_in2.nx(); int ny2 = im_in2.ny(); if (opt_add) { strOperation = "Add Images"; im_in1.addImages (im_in2, *pim_out); } else if (opt_sub) { strOperation = "Subtract Images"; im_in1.subtractImages (im_in2, *pim_out); } else if (opt_mul) { strOperation = "Multiply Images"; im_in1.multiplyImages (im_in2, *pim_out); } else if (opt_divide) { strOperation = "Divide Images"; im_in1.divideImages (im_in2, *pim_out); } if (opt_comp) { double d, r, e; im_in1.comparativeStatistics (im_in2, d, r, e); std::cout << "d=" << d << ", r=" << r << ", e=" << e << std::endl; } int i; if (opt_columnPlot > 0) { if (opt_columnPlot >= nx || opt_columnPlot >= nx2) { sys_error (ERR_SEVERE, "column-plot > nx"); return (1); } double* plot_xaxis = new double [nx]; for (i = 0; i < nx; i++) plot_xaxis[i] = i; PlotFile plotFile (3, nx); plotFile.addColumn (0, plot_xaxis); plotFile.addColumn (1, v1[opt_columnPlot]); plotFile.addColumn (2, v2[opt_columnPlot]); std::ostringstream os; os << "Column " << opt_columnPlot << " Comparison"; plotFile.addDescription (os.str().c_str()); std::string title("title "); title += os.str(); plotFile.addEzsetCommand (title.c_str()); plotFile.addEzsetCommand ("xlabel Column"); plotFile.addEzsetCommand ("ylabel Pixel Value"); plotFile.addEzsetCommand ("box"); plotFile.addEzsetCommand ("grid"); plotFile.addEzsetCommand ("xticks major 5"); plotFile.fileWrite (strOutFile.c_str()); delete plot_xaxis; } if (opt_rowPlot > 0) { if (opt_rowPlot >= ny || opt_rowPlot >= ny2) { sys_error (ERR_SEVERE, "row_plot > ny"); return (1); } double* plot_xaxis = new double [ny]; double* v1Row = new double [ny]; double* v2Row = new double [ny2]; for (i = 0; i < ny; i++) plot_xaxis[i] = i; for (i = 0; i < ny; i++) v1Row[i] = v1[i][opt_rowPlot]; for (i = 0; i < ny2; i++) v2Row[i] = v2[i][opt_rowPlot]; PlotFile plotFile (3, ny); plotFile.addColumn (0, plot_xaxis); plotFile.addColumn (1, v1Row); plotFile.addColumn (2, v2Row); std::ostringstream os; os << "Row " << opt_rowPlot << " Comparison"; plotFile.addDescription (os.str().c_str()); std::string title("title "); title += os.str(); plotFile.addEzsetCommand (title.c_str()); plotFile.addEzsetCommand ("xlabel Row"); plotFile.addEzsetCommand ("ylabel Pixel Value"); plotFile.addEzsetCommand ("box"); plotFile.addEzsetCommand ("grid"); plotFile.addEzsetCommand ("xticks major 5"); plotFile.fileWrite (strOutFile.c_str()); delete plot_xaxis; delete v1Row; delete v2Row; } if (opt_bImageOutputFile) { pim_out->labelsCopy (im_in1, "if2 file 1: "); pim_out->labelsCopy (im_in2, "if2 file 2: "); pim_out->labelAdd (Array2dFileLabel::L_HISTORY, strOperation.c_str(), timerProgram.timerEnd()); pim_out->fileWrite (strOutFile); } return (0); } #ifndef NO_MAIN int main (int argc, char *const argv[]) { int retval = 1; try { retval = if2_main(argc, argv); } catch (exception e) { std::cerr << "Exception: " << e.what() << std::endl; } catch (...) { std::cerr << "Unknown exception\n"; } return (retval); } #endif ctsim-6.0.2/tools/pjinfo.cpp0000644000175000017500000001135311240454455015010 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: pjinfo.cpp ** Purpose: Convert an projection data file to an image file ** Programmer: Kevin Rosenberg ** Date Started: April 2000 ** ** This is part of the CTSim program ** Copyright (C) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ /* FILE * pjinfo.c Convert Raysum to image * * DATE * August 2000 */ #include "ct.h" #include "timer.h" enum { O_BINARYHEADER, O_BINARYVIEWS, O_STARTVIEW, O_ENDVIEW, O_DUMP, O_HELP, O_VERSION }; static struct option my_options[] = { {"binaryheader", 0, 0, O_BINARYHEADER}, {"binaryviews", 0, 0, O_BINARYVIEWS}, {"startview", 1, 0, O_STARTVIEW}, {"endview", 1, 0, O_ENDVIEW}, {"dump", 0, 0, O_DUMP}, {"help", 0, 0, O_HELP}, {"version", 0, 0, O_VERSION}, {0, 0, 0, 0} }; static const char* g_szIdStr = "$Id$"; void pjinfo_usage (const char *program) { std::cout << "usage: " << fileBasename(program) << " proj-file [OPTIONS]\n"; std::cout << "Display projection file information\n"; std::cout << "\n"; std::cout << " --binaryheader Dump binary header data\n"; std::cout << " --binaryviews Dump binary view data\n"; std::cout << " --startview n Beginning view number to display (default=0)\n"; std::cout << " --endview n Ending view number to display (default=last view)\n"; std::cout << " --dump Print all scan data ASCII format\n"; std::cout << " --version Print version\n"; std::cout << " --help Print this help message\n"; } int pjinfo_main (const int argc, char *const argv[]) { std::string pj_name; bool optDump = false; bool optBinaryHeader = false; bool optBinaryViews = false; int optStartView = 0; int optEndView = -1; // tells copyViewData to use default last view extern int optind; while (1) { char *endptr, *endstr; int c = getopt_long (argc, argv, "", my_options, NULL); if (c == -1) break; switch (c) { case O_DUMP: optDump = true; break; case O_BINARYHEADER: optBinaryHeader = true; break; case O_BINARYVIEWS: optBinaryViews = true; break; case O_STARTVIEW: optStartView = strtol(optarg, &endptr, 10); endstr = optarg + strlen(optarg); if (endptr != endstr) { std::cerr << "Error setting --startview to %s" << optarg << std::endl; pjinfo_usage(argv[0]); return (1); } break; case O_ENDVIEW: optEndView = strtol(optarg, &endptr, 10); endstr = optarg + strlen(optarg); if (endptr != endstr) { std::cerr << "Error setting --endview to %s" << optarg << std::endl; pjinfo_usage(argv[0]); return (1); } break; case O_VERSION: #ifdef VERSION std::cout << "Version " << VERSION << std::endl << g_szIdStr << std::endl; #else std::cout << "Unknown version number\n"; #endif return (0); case O_HELP: case '?': pjinfo_usage(argv[0]); return (0); default: pjinfo_usage(argv[0]); return (1); } } if (argc - optind != 1) { pjinfo_usage(argv[0]); return (1); } pj_name = argv[optind]; if (optBinaryHeader) Projections::copyHeader (pj_name, std::cout); else if (optBinaryViews) Projections::copyViewData (pj_name, std::cout, optStartView, optEndView); else { Projections pj; if (! pj.read (pj_name)) { sys_error (ERR_SEVERE, "Can not open projection file %s", pj_name.c_str()); return (1); } if (optDump) { pj.printProjectionData (optStartView, optEndView); } else { std::ostringstream os; pj.printScanInfo (os); std::cout << os.str(); } } return(0); } #ifndef NO_MAIN int main (const int argc, char *const argv[]) { int retval = 1; try { retval = pjinfo_main(argc, argv); } catch (exception e) { std::cerr << "Exception: " << e.what() << std::endl; } catch (...) { std::cerr << "Unknown exception\n"; } return (retval); } #endif ctsim-6.0.2/tools/ifexport.cpp0000644000175000017500000003117413254520463015366 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: ifexport.cpp ** Purpose: Convert an image file to a viewable image ** Programmer: Kevin Rosenberg ** Date Started: April 2000 ** ** This is part of the CTSim program ** Copyright (C) 1983-2010 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "ct.h" enum { O_SCALE, O_MIN, O_MAX, O_AUTO, O_CENTER, O_STATS, O_FORMAT, O_LABELS, O_HELP, O_VERBOSE, O_VERSION, O_DEBUG }; static struct option my_options[] = { {"scale", 1, 0, O_SCALE}, {"min", 1, 0, O_MIN}, {"max", 1, 0, O_MAX}, {"auto", 1, 0, O_AUTO}, {"center", 1, 0, O_CENTER}, {"format", 1, 0, O_FORMAT}, {"labels", 0, 0, O_LABELS}, {"stats", 0, 0, O_STATS}, {"verbose", 0, 0, O_VERBOSE}, {"debug", 0, 0, O_DEBUG}, {"help", 0, 0, O_HELP}, {"version", 0, 0, O_VERSION}, {0, 0, 0, 0} }; static const char* g_szIdStr = "$Id$"; enum { O_AUTO_FULL, O_AUTO_STD0_1, O_AUTO_STD0_5, O_AUTO_STD1, O_AUTO_STD2, O_AUTO_STD3 }; static const char O_AUTO_FULL_STR[]="full"; static const char O_AUTO_STD0_1_STR[]="std0.1"; static const char O_AUTO_STD0_5_STR[]="std0.5"; static const char O_AUTO_STD1_STR[]="std1"; static const char O_AUTO_STD2_STR[]="std2"; static const char O_AUTO_STD3_STR[]="std3"; enum { O_CENTER_MEDIAN, O_CENTER_MEAN, O_CENTER_MODE }; static const char O_CENTER_MEAN_STR[]="mean"; static const char O_CENTER_MODE_STR[]="mode"; static const char O_CENTER_MEDIAN_STR[]="median"; enum { O_FORMAT_PNG, O_FORMAT_PNG16, O_FORMAT_PGM, O_FORMAT_PGMASC, O_FORMAT_RAW, O_FORMAT_TEXT }; static const char O_FORMAT_PNG_STR[]="png" ; static const char O_FORMAT_PNG16_STR[]="png16" ; static const char O_FORMAT_PGM_STR[]="pgm"; static const char O_FORMAT_PGMASC_STR[]="pgmasc"; static const char O_FORMAT_TEXT_STR[]="text"; static const char O_FORMAT_RAW_STR[]="raw"; void ifexport_usage (const char *program) { std::cout << "usage: " << fileBasename(program) << " ifname outfile [OPTIONS]\n"; std::cout << "Convert IF file to an image file\n"; std::cout << std::endl; std::cout << " ifname Name of input file\n"; std::cout << " outfile Name of output file\n"; std::cout << " --format Output format\n"; std::cout << " pgm PGM (portable graymap) format (default)\n"; std::cout << " pgmasc PGM (portable graymap) ASCII format\n"; std::cout << " text Text format\n"; std::cout << " raw Raw format\n"; #ifdef HAVE_PNG std::cout << " png PNG (8-bit) format\n"; std::cout << " png16 PNG (16-bit) format\n"; #endif std::cout << " --center Center of window\n"; std::cout << " median Median is center of window (default)\n"; std::cout << " mode Mode is center of window\n"; std::cout << " mean Mean is center of window\n"; std::cout << " --auto Set auto window\n"; std::cout << " full Use full window (default)\n"; std::cout << " std0.1 Use 0.1 standard deviation about center\n"; std::cout << " std0.5 Use 0.5 standard deviation about center\n"; std::cout << " std1 Use one standard deviation about center\n"; std::cout << " std2 Use two standard deviations about center\n"; std::cout << " std3 Use three standard deviations about center\n"; std::cout << " --scale Scaling factor for output size\n"; std::cout << " --min Set minimum intensity\n"; std::cout << " --max Set maximum intensity\n"; std::cout << " --stats Print image statistics\n"; std::cout << " --labels Print image labels\n"; std::cout << " --debug Set debug mode\n"; std::cout << " --verbose Set verbose mode\n"; std::cout << " --version Print version\n"; std::cout << " --help Print this help message\n"; } int ifexport_main (int argc, char *const argv[]) { ImageFile* pim = NULL; double densmin = HUGE_VAL, densmax = -HUGE_VAL; char *in_file, *out_file; int opt_verbose = 0; int opt_scale = 1; int opt_auto = O_AUTO_FULL; int opt_set_max = 0; int opt_set_min = 0; int opt_stats = 0; int opt_debug = 0; int opt_center = O_CENTER_MEDIAN; int opt_format = O_FORMAT_PGM; int opt_labels = 0; UNUSED(opt_verbose); UNUSED(opt_debug); while (1) { int c = getopt_long (argc, argv, "", my_options, NULL); char *endptr = NULL; char *endstr; if (c == -1) break; switch (c) { case O_MIN: opt_set_min = 1; densmin = strtod(optarg, &endptr); endstr = optarg + strlen(optarg); if (endptr != endstr) { sys_error (ERR_SEVERE, "Error setting --min to %s", optarg); ifexport_usage(argv[0]); return (1); } break; case O_MAX: opt_set_max = 1; densmax = strtod(optarg, &endptr); endstr = optarg + strlen(optarg); if (endptr != endstr) { sys_error (ERR_SEVERE, "Error setting --max to %s", optarg); ifexport_usage(argv[0]); return (1); } break; case O_SCALE: opt_scale = strtol(optarg, &endptr, 10); endstr = optarg + strlen(optarg); if (endptr != endstr) { sys_error (ERR_SEVERE, "Error setting --scale to %s", optarg); ifexport_usage(argv[0]); return (1); } break; case O_AUTO: if (strcmp(optarg, O_AUTO_FULL_STR) == 0) opt_auto = O_AUTO_FULL; else if (strcmp(optarg, O_AUTO_STD1_STR) == 0) opt_auto = O_AUTO_STD1; else if (strcmp(optarg, O_AUTO_STD0_5_STR) == 0) opt_auto = O_AUTO_STD0_5; else if (strcmp(optarg, O_AUTO_STD0_1_STR) == 0) opt_auto = O_AUTO_STD0_1; else if (strcmp(optarg, O_AUTO_STD2_STR) == 0) opt_auto = O_AUTO_STD2; else if (strcmp(optarg, O_AUTO_STD3_STR) == 0) opt_auto = O_AUTO_STD3; else { sys_error (ERR_SEVERE, "Invalid auto mode %s", optarg); ifexport_usage(argv[0]); return (1); } break; case O_CENTER: if (strcmp(optarg, O_CENTER_MEDIAN_STR) == 0) opt_center = O_CENTER_MEDIAN; else if (strcmp(optarg, O_CENTER_MEAN_STR) == 0) opt_center = O_CENTER_MEAN; else if (strcmp(optarg, O_CENTER_MODE_STR) == 0) opt_center = O_CENTER_MODE; else { sys_error (ERR_SEVERE, "Invalid center mode %s", optarg); ifexport_usage(argv[0]); return (1); } break; case O_FORMAT: if (strcmp(optarg, O_FORMAT_PGM_STR) == 0) opt_format = O_FORMAT_PGM; else if (strcmp(optarg, O_FORMAT_PGMASC_STR) == 0) opt_format = O_FORMAT_PGMASC; #if HAVE_PNG else if (strcmp(optarg, O_FORMAT_PNG_STR) == 0) opt_format = O_FORMAT_PNG; else if (strcmp(optarg, O_FORMAT_PNG16_STR) == 0) opt_format = O_FORMAT_PNG16; #endif else if (strcmp(optarg, O_FORMAT_TEXT_STR) == 0) opt_format = O_FORMAT_TEXT; else if (strcmp(optarg, O_FORMAT_RAW_STR) == 0) opt_format = O_FORMAT_RAW; #if HAVE_GIF else if (strcmp(optarg, O_FORMAT_GIF_STR) == 0) opt_format = O_FORMAT_GIF; #endif else { sys_error (ERR_SEVERE, "Invalid format mode %s", optarg); ifexport_usage(argv[0]); return (1); } break; case O_LABELS: opt_labels = 1; break; case O_VERBOSE: opt_verbose = 1; break; case O_DEBUG: opt_debug = 1; break; case O_STATS: opt_stats = 1; break; case O_VERSION: #ifdef VERSION std::cout << "Version " << VERSION << std::endl << g_szIdStr << std::endl; #else std::cout << "Unknown version number\n"; #endif return (0); case O_HELP: case '?': ifexport_usage(argv[0]); return (0); default: ifexport_usage(argv[0]); return (1); } } if (optind + 2 != argc) { ifexport_usage(argv[0]); return (1); } in_file = argv[optind]; out_file = argv[optind+1]; pim = new ImageFile (); ImageFile& im = *pim; if (! im.fileRead(in_file)) { sys_error (ERR_FATAL, "File %s does not exist", in_file); return (1); } if (opt_labels) im.printLabels(std::cout); if (opt_stats || (! (opt_set_max && opt_set_min))) { double min, max, mean, mode, median, stddev; double window = 0; im.statistics(min, max, mean, mode, median, stddev); if (opt_auto == O_AUTO_FULL) { if (! opt_set_max) densmax = max; if (! opt_set_min) densmin = min; } if (opt_stats || opt_auto != O_AUTO_FULL) { if (opt_auto == O_AUTO_FULL) ; else if (opt_auto == O_AUTO_STD1) window = stddev; else if (opt_auto == O_AUTO_STD0_1) window = stddev * 0.1; else if (opt_auto == O_AUTO_STD0_5) window = stddev * 0.5; else if (opt_auto == O_AUTO_STD2) window = stddev * 2; else if (opt_auto == O_AUTO_STD3) window = stddev * 3; else { sys_error (ERR_SEVERE, "Internal Error: Invalid auto mode %d", opt_auto); return (1); } } if (opt_stats) { std::cout <<"nx: " << im.nx() << std::endl; std::cout <<"ny: " << im.ny() << std::endl; std::cout <<"min: " << min << std::endl; std::cout <<"max: " << max << std::endl; std::cout <<"mean: " << mean << std::endl; std::cout <<"mode: " << mode << std::endl; std::cout <<"stddev: " << stddev << std::endl; } if (opt_auto != O_AUTO_FULL) { double center; if (opt_center == O_CENTER_MEDIAN) center = median; else if (opt_center == O_CENTER_MODE) center = mode; else if (opt_center == O_CENTER_MEAN) center = mean; else { sys_error (ERR_SEVERE, "Internal Error: Invalid center mode %d", opt_center); return (1); } if (! opt_set_max) densmax = center + window; if (! opt_set_min) densmin = center - window; } } if (opt_stats) { std::cout << "min display: " << densmin << std::endl; std::cout << "max display: " << densmax << std::endl; } if (opt_format == O_FORMAT_PGM) im.writeImagePGM (out_file, opt_scale, opt_scale, densmin, densmax); else if (opt_format == O_FORMAT_PGMASC) im.writeImagePGMASCII (out_file, opt_scale, opt_scale, densmin, densmax); #if HAVE_PNG else if (opt_format == O_FORMAT_PNG) im.writeImagePNG (out_file, 8, opt_scale, opt_scale, densmin, densmax); else if (opt_format == O_FORMAT_PNG16) im.writeImagePNG (out_file, 16, opt_scale, opt_scale, densmin, densmax); #endif #if HAVE_GIF else if (opt_format == O_FORMAT_GIF) im.writeImageGIF (out_file, opt_scale, opt_scale, densmin, densmax); #endif else if (opt_format == O_FORMAT_TEXT) im.writeImageText (out_file); else if (opt_format == O_FORMAT_RAW) im.writeImageRaw (out_file, opt_scale, opt_scale); else { sys_error (ERR_SEVERE, "Internal Error: Invalid format mode %d", opt_format); return (1); } return (0); } #ifndef NO_MAIN int main (int argc, char *const argv[]) { int retval = 1; try { retval = ifexport_main(argc, argv); } catch (exception e) { std::cerr << "Exception: " << e.what() << std::endl; } catch (...) { std::cerr << "Unknown exception\n"; } return (retval); } #endif ctsim-6.0.2/tools/phm2pj.cpp0000644000175000017500000003612613254520561014727 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: phm2pj.cpp ** Purpose: Take projections of a phantom object ** Programmer: Kevin Rosenberg ** Date Started: 1984 ** ** This is part of the CTSim program ** Copyright (C) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "ct.h" #include "timer.h" enum { O_PHANTOM, O_DESC, O_NRAY, O_ROTANGLE, O_PHMFILE, O_GEOMETRY, O_FOCAL_LENGTH, O_CENTER_DETECTOR_LENGTH, O_VIEW_RATIO, O_SCAN_RATIO, O_OFFSETVIEW, O_TRACE, O_VERBOSE, O_HELP, O_DEBUG, O_VERSION }; static struct option phm2pj_options[] = { {"phantom", 1, 0, O_PHANTOM}, {"phmfile", 1, 0, O_PHMFILE}, {"desc", 1, 0, O_DESC}, {"nray", 1, 0, O_NRAY}, {"rotangle", 1, 0, O_ROTANGLE}, {"geometry", 1, 0, O_GEOMETRY}, {"focal-length", 1, 0, O_FOCAL_LENGTH}, {"center-detector-length", 1, 0, O_CENTER_DETECTOR_LENGTH}, {"offsetview", 1, 0, O_OFFSETVIEW}, {"view-ratio", 1, 0, O_VIEW_RATIO}, {"scan-ratio", 1, 0, O_SCAN_RATIO}, {"trace", 1, 0, O_TRACE}, {"verbose", 0, 0, O_VERBOSE}, {"help", 0, 0, O_HELP}, {"debug", 0, 0, O_DEBUG}, {"version", 0, 0, O_VERSION}, {0, 0, 0, 0} }; static const char* g_szIdStr = "$Id$"; void phm2pj_usage (const char *program) { std::cout << "usage: " << fileBasename(program) << " outfile ndet nview [--phantom phantom-name] [--phmfile filename] [OPTIONS]\n"; std::cout << "Calculate (projections) through phantom object, either a predefined --phantom or a --phmfile\n\n"; std::cout << " outfile Name of output file for projections\n"; std::cout << " ndet Number of detectors\n"; std::cout << " nview Number of rotated views\n"; std::cout << " --phantom Phantom to use for projection\n"; std::cout << " herman Herman head phantom\n"; std::cout << " shepp-logan Shepp-Logan head phantom\n"; std::cout << " unit-pulse Unit pulse phantom\n"; std::cout << " --phmfile Get Phantom from phantom file\n"; std::cout << " --desc Description of raysum\n"; std::cout << " --nray Number of rays per detector (default = 1)\n"; std::cout << " --rotangle Angle to rotate view through (fraction of a circle)\n"; std::cout << " (default = select appropriate for geometry)\n"; std::cout << " --geometry Geometry of scanning\n"; std::cout << " parallel Parallel scan beams (default)\n"; std::cout << " equilinear Equilinear divergent scan beams\n"; std::cout << " equiangular Equiangular divergent scan beams\n"; std::cout << " --focal-length Focal length ratio (ratio to radius of view area)\n"; std::cout << " (default = 2)\n"; std::cout << " --center-detector-length Distance from center of phantom to detector array\n"; std::cout << " (ratio to radius of view area) (default = 2)\n"; std::cout << " --view-ratio Length to view (view diameter to phantom diameter)\n"; std::cout << " (default = 1)\n"; std::cout << " --scan-ratio Length to scan (scan diameter to view diameter)\n"; std::cout << " (default = 1)\n"; std::cout << " --offsetview Initial gantry offset in 'views' (default = 0)\n"; std::cout << " --trace Trace level to use\n"; std::cout << " none No tracing (default)\n"; std::cout << " console Trace text level\n"; std::cout << " --verbose Verbose mode\n"; std::cout << " --debug Debug mode\n"; std::cout << " --version Print version\n"; std::cout << " --help Print this help message\n"; } #ifdef HAVE_MPI void GatherProjectionsMPI (MPIWorld& mpiWorld, Projections& pjGlobal, Projections& pjLocal, const int opt_debug); #endif int phm2pj_main (int argc, char* const argv[]) { Phantom phm; std::string optGeometryName = Scanner::convertGeometryIDToName(Scanner::GEOMETRY_PARALLEL); char *opt_outfile = NULL; std::string opt_desc; std::string optPhmName; std::string optPhmFileName; int opt_ndet; int opt_nview; int opt_offsetview = 0; int opt_nray = 1; double dOptFocalLength = 2.; double dOptCenterDetectorLength = 2.; double dOptViewRatio = 1.; double dOptScanRatio = 1.; int opt_trace = Trace::TRACE_NONE; int opt_verbose = 0; int opt_debug = 0; double opt_rotangle = -1; char* endptr = NULL; char* endstr; UNUSED(opt_debug); #ifdef HAVE_MPI MPIWorld mpiWorld (argc, argv); #endif Timer timerProgram; #ifdef HAVE_MPI if (mpiWorld.getRank() == 0) { #endif while (1) { int c = getopt_long(argc, argv, "", phm2pj_options, NULL); if (c == -1) break; switch (c) { case O_PHANTOM: optPhmName = optarg; break; case O_PHMFILE: optPhmFileName = optarg; break; case O_VERBOSE: opt_verbose = 1; break; case O_DEBUG: opt_debug = 1; break; break; case O_TRACE: if ((opt_trace = Trace::convertTraceNameToID(optarg)) == Trace::TRACE_INVALID) { phm2pj_usage(argv[0]); return (1); } break; case O_DESC: opt_desc = optarg; break; case O_ROTANGLE: opt_rotangle = strtod(optarg, &endptr); endstr = optarg + strlen(optarg); if (endptr != endstr) { std::cerr << "Error setting --rotangle to " << optarg << std::endl; phm2pj_usage(argv[0]); return (1); } break; case O_GEOMETRY: optGeometryName = optarg; break; case O_FOCAL_LENGTH: dOptFocalLength = strtod(optarg, &endptr); endstr = optarg + strlen(optarg); if (endptr != endstr) { std::cerr << "Error setting --focal-length to " << optarg << std::endl; phm2pj_usage(argv[0]); return (1); } break; case O_CENTER_DETECTOR_LENGTH: dOptCenterDetectorLength = strtod(optarg, &endptr); endstr = optarg + strlen(optarg); if (endptr != endstr) { std::cerr << "Error setting --center-detector-length to " << optarg << std::endl; phm2pj_usage(argv[0]); return (1); } break; case O_VIEW_RATIO: dOptViewRatio = strtod(optarg, &endptr); endstr = optarg + strlen(optarg); if (endptr != endstr) { std::cerr << "Error setting --view-ratio to " << optarg << std::endl; phm2pj_usage(argv[0]); return (1); } break; case O_SCAN_RATIO: dOptScanRatio = strtod(optarg, &endptr); endstr = optarg + strlen(optarg); if (endptr != endstr) { std::cerr << "Error setting --scan-ratio to " << optarg << std::endl; phm2pj_usage(argv[0]); return (1); } break; case O_NRAY: opt_nray = strtol(optarg, &endptr, 10); endstr = optarg + strlen(optarg); if (endptr != endstr) { std::cerr << "Error setting --nray to %s" << optarg << std::endl; phm2pj_usage(argv[0]); return (1); } break; case O_OFFSETVIEW: opt_offsetview = strtol(optarg, &endptr, 10); endstr = optarg + strlen(optarg); if (endptr != endstr) { std::cerr << "Error setting --offsetview to %s" << optarg << std::endl; phm2pj_usage(argv[0]); return (1); } break; case O_VERSION: #ifdef VERSION std::cout << "Version: " << VERSION << std::endl << g_szIdStr << std::endl; #else std::cout << "Unknown version number\n"; #endif return (0); case O_HELP: case '?': phm2pj_usage(argv[0]); return (0); default: phm2pj_usage(argv[0]); return (1); } } if (optPhmName == "" && optPhmFileName == "") { std::cerr << "No phantom defined\n" << std::endl; phm2pj_usage(argv[0]); return (1); } if (optind + 3 != argc) { phm2pj_usage(argv[0]); return (1); } opt_outfile = argv[optind]; opt_ndet = strtol(argv[optind+1], &endptr, 10); endstr = argv[optind+1] + strlen(argv[optind+1]); if (endptr != endstr) { std::cerr << "Error setting --ndet to " << argv[optind+1] << std::endl; phm2pj_usage(argv[0]); return (1); } opt_nview = strtol(argv[optind+2], &endptr, 10); endstr = argv[optind+2] + strlen(argv[optind+2]); if (endptr != endstr) { std::cerr << "Error setting --nview to " << argv[optind+2] << std::endl; phm2pj_usage(argv[0]); return (1); } if (opt_rotangle < 0) { if (optGeometryName.compare ("parallel") == 0) opt_rotangle = 0.5; else opt_rotangle = 1.0; } std::ostringstream desc; desc << "phm2pj: NDet=" << opt_ndet << ", Nview=" << opt_nview << ", NRay=" << opt_nray << ", RotAngle=" << opt_rotangle << ", OffsetView =" << opt_offsetview << ", Geometry=" << optGeometryName << ", "; if (optPhmFileName.length()) { desc << "PhantomFile=" << optPhmFileName; } else if (optPhmName != "") { desc << "Phantom=" << optPhmName; } if (opt_desc.length()) { desc << ": " << opt_desc; } opt_desc = desc.str(); if (optPhmName != "") { phm.createFromPhantom (optPhmName.c_str()); if (phm.fail()) { std::cout << phm.failMessage() << std::endl << std::endl; phm2pj_usage(argv[0]); return (1); } } if (optPhmFileName != "") { #ifdef HAVE_MPI std::cerr << "Can not read phantom from file in MPI mode\n"; return (1); #endif phm.createFromFile (optPhmFileName.c_str()); } #ifdef HAVE_MPI } #endif #ifdef HAVE_MPI TimerCollectiveMPI timerBcast(mpiWorld.getComm()); mpiWorld.BcastString (optPhmName); mpiWorld.getComm().Bcast (&opt_rotangle, 1, MPI::DOUBLE, 0); mpiWorld.getComm().Bcast (&dOptFocalLength, 1, MPI::DOUBLE, 0); mpiWorld.getComm().Bcast (&dOptCenterDetectorLength, 1, MPI::DOUBLE, 0); mpiWorld.getComm().Bcast (&dOptViewRatio, 1, MPI::DOUBLE, 0); mpiWorld.getComm().Bcast (&dOptScanRatio, 1, MPI::DOUBLE, 0); mpiWorld.getComm().Bcast (&opt_nview, 1, MPI::INT, 0); mpiWorld.getComm().Bcast (&opt_ndet, 1, MPI::INT, 0); mpiWorld.getComm().Bcast (&opt_nray, 1, MPI::INT, 0); mpiWorld.getComm().Bcast (&opt_verbose, 1, MPI::INT, 0); mpiWorld.getComm().Bcast (&opt_debug, 1, MPI::INT, 0); mpiWorld.getComm().Bcast (&opt_trace, 1, MPI::INT, 0); if (opt_verbose) timerBcast.timerEndAndReport ("Time to broadcast variables"); if (mpiWorld.getRank() > 0 && optPhmName != "") phm.createFromPhantom (optPhmName.c_str()); #endif opt_rotangle *= TWOPI; Scanner scanner (phm, optGeometryName.c_str(), opt_ndet, opt_nview, opt_offsetview, opt_nray, opt_rotangle, dOptFocalLength, dOptCenterDetectorLength, dOptViewRatio, dOptScanRatio); if (scanner.fail()) { std::cout << "Scanner Creation Error: " << scanner.failMessage() << std::endl; return (1); } #ifdef HAVE_MPI mpiWorld.setTotalWorkUnits (opt_nview); Projections pjGlobal; if (mpiWorld.getRank() == 0) pjGlobal.initFromScanner (scanner); if (opt_verbose) { std::ostringstream os; pjGlobal.printScanInfo(os); std::cout << os.str(); } Projections pjLocal (scanner); pjLocal.setNView (mpiWorld.getMyLocalWorkUnits()); if (opt_debug) std::cout << "pjLocal->nview = " << pjLocal.nView() << " (process " << mpiWorld.getRank() << ")\n";; TimerCollectiveMPI timerProject (mpiWorld.getComm()); scanner.collectProjections (pjLocal, phm, mpiWorld.getMyStartWorkUnit(), mpiWorld.getMyLocalWorkUnits(), false, opt_trace); if (opt_verbose) timerProject.timerEndAndReport ("Time to collect projections"); TimerCollectiveMPI timerGather (mpiWorld.getComm()); GatherProjectionsMPI (mpiWorld, pjGlobal, pjLocal, opt_debug); if (opt_verbose) timerGather.timerEndAndReport ("Time to gather projections"); #else Projections pjGlobal (scanner); scanner.collectProjections (pjGlobal, phm, 0, opt_nview, opt_offsetview, true, opt_trace); #endif #ifdef HAVE_MPI if (mpiWorld.getRank() == 0) #endif { pjGlobal.setCalcTime (timerProgram.timerEnd()); pjGlobal.setRemark (opt_desc); pjGlobal.write (opt_outfile); if (opt_verbose) { phm.print (std::cout); std::cout << std::endl; std::ostringstream os; pjGlobal.printScanInfo (os); std::cout << os.str() << std::endl; std::cout << " Remark: " << pjGlobal.remark() << std::endl; std::cout << "Run time: " << pjGlobal.calcTime() << " seconds\n"; } } return (0); } /* FUNCTION * GatherProjectionsMPI * * SYNOPSIS * Gather's raysums from all processes in pjLocal in pjGlobal in process 0 */ #ifdef HAVE_MPI void GatherProjectionsMPI (MPIWorld& mpiWorld, Projections& pjGlobal, Projections& pjLocal, const int opt_debug) { for (int iw = 0; iw < mpiWorld.getMyLocalWorkUnits(); iw++) { DetectorArray& detArray = pjLocal.getDetectorArray(iw); double viewAngle = detArray.viewAngle(); int nDet = detArray.nDet(); DetectorValue* detval = detArray.detValues(); mpiWorld.getComm().Send(&viewAngle, 1, MPI::DOUBLE, 0, 0); mpiWorld.getComm().Send(&nDet, 1, MPI::INT, 0, 0); mpiWorld.getComm().Send(detval, nDet, MPI::FLOAT, 0, 0); } if (mpiWorld.getRank() == 0) { for (int iProc = 0; iProc < mpiWorld.getNumProcessors(); iProc++) { for (int iw = mpiWorld.getStartWorkUnit(iProc); iw <= mpiWorld.getEndWorkUnit(iProc); iw++) { MPI::Status status; double viewAngle; int nDet; DetectorArray& detArray = pjGlobal.getDetectorArray(iw); DetectorValue* detval = detArray.detValues(); mpiWorld.getComm().Recv(&viewAngle, 1, MPI::DOUBLE, iProc, 0, status); mpiWorld.getComm().Recv(&nDet, 1, MPI::INT, iProc, 0, status); mpiWorld.getComm().Recv(detval, nDet, MPI::FLOAT, iProc, 0, status); detArray.setViewAngle (viewAngle); } } } } #endif #ifndef NO_MAIN int main (int argc, char* argv[]) { int retval = 1; try { retval = phm2pj_main(argc, argv); #if HAVE_DMALLOC // dmalloc_shutdown(); #endif } catch (exception e) { std::cerr << "Exception: " << e.what() << std::endl; } catch (...) { std::cerr << "Unknown exception\n"; } return (retval); } #endif ctsim-6.0.2/tools/mpiworld.cpp0000644000175000017500000000446311240454455015364 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: mpiworld.cpp ** Purpose: MPI Support class ** Programmer: Kevin Rosenberg ** Date Started: June 2000 ** ** This is part of the CTSim program ** Copyright (C) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include #include MPIWorld::MPIWorld (int& argc, char* const *& argv) { MPI::Init (argc, const_cast(argv)); m_comm = MPI::COMM_WORLD.Dup(); m_nProcessors = m_comm.Get_size(); m_myRank = m_comm.Get_rank(); m_vLocalWorkUnits.reserve (m_nProcessors); m_vStartWorkUnit.reserve (m_nProcessors); m_vEndWorkUnit.reserve (m_nProcessors); } void MPIWorld::setTotalWorkUnits(int totalWorkUnits) { if (m_nProcessors < 1) return; int baseLocalWorkUnits = totalWorkUnits / m_nProcessors; int remainderWorkUnits = totalWorkUnits % m_nProcessors; int currWorkUnits = 0; for (int iProc = 0; iProc < m_nProcessors; iProc++) { m_vLocalWorkUnits[iProc] = baseLocalWorkUnits; if (iProc < remainderWorkUnits) m_vLocalWorkUnits[iProc]++; m_vStartWorkUnit[iProc] = currWorkUnits; m_vEndWorkUnit[iProc] = m_vStartWorkUnit[iProc] + m_vLocalWorkUnits[iProc] - 1; currWorkUnits += m_vLocalWorkUnits[iProc]; } } void MPIWorld::BcastString (string& str) { int len; if (m_myRank == 0) len = str.length(); m_comm.Bcast (&len, 1, MPI::INT, 0); char buf [ len + 1]; if (m_myRank == 0) strcpy (buf, str.c_str()); m_comm.Bcast (buf, len + 1, MPI::CHAR, 0); if (m_myRank > 0) str = buf; } ctsim-6.0.2/getopt/0000755000175000017500000000000013254524615013161 5ustar kevinkevinctsim-6.0.2/getopt/getopt.c0000644000175000017500000010374010667176710014640 0ustar kevinkevin/* Getopt for GNU. NOTE: getopt is now part of the C library, so if you don't know what "Keep this file name-space clean" means, talk to drepper@gnu.org before changing it! Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The GNU C Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the GNU C Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* This tells Alpha OSF/1 not to define a getopt prototype in . Ditto for AIX 3.2 and . */ #ifndef _NO_PROTO # define _NO_PROTO #endif #ifdef HAVE_CONFIG_H //# include #endif #if !defined __STDC__ || !__STDC__ /* This is a separate conditional since some stdc systems reject `defined (const)'. */ # ifndef const # define const # endif #endif #include /* Comment out all this code if we are using the GNU C Library, and are not actually compiling the library itself. This code is part of the GNU C Library, but also included in many other GNU distributions. Compiling and linking in this code is a waste when using the GNU C library (especially if it is a shared library). Rather than having every GNU program understand `configure --with-gnu-libc' and omit the object files, it is simpler to just do this in the source for each such file. */ #define GETOPT_INTERFACE_VERSION 2 #if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2 # include # if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION # define ELIDE_CODE # endif #endif #ifndef ELIDE_CODE /* This needs to come after some library #include to get __GNU_LIBRARY__ defined. */ #ifdef __GNU_LIBRARY__ /* Don't include stdlib.h for non-GNU C libraries because some of them contain conflicting prototypes for getopt. */ # include # include #endif /* GNU C library. */ #ifdef VMS # include # if HAVE_STRING_H - 0 # include # endif #endif #ifndef _ /* This is for other GNU distributions with internationalized messages. When compiling libc, the _ macro is predefined. */ # ifdef HAVE_LIBINTL_H # include # define _(msgid) gettext (msgid) # else # define _(msgid) (msgid) # endif #endif /* This version of `getopt' appears to the caller like standard Unix `getopt' but it behaves differently for the user, since it allows the user to intersperse the options with the other arguments. As `getopt' works, it permutes the elements of ARGV so that, when it is done, all the options precede everything else. Thus all application programs are extended to handle flexible argument order. Setting the environment variable POSIXLY_CORRECT disables permutation. Then the behavior is completely standard. GNU application programs can use a third alternative mode in which they can distinguish the relative order of options and other arguments. */ #include "getopt.h" /* For communication from `getopt' to the caller. When `getopt' finds an option that takes an argument, the argument value is returned here. Also, when `ordering' is RETURN_IN_ORDER, each non-option ARGV-element is returned here. */ #if ! defined(HAVE_GETOPT) && ! defined(HAVE_GETOPT_LONG) char *optarg; #endif /* Index in ARGV of the next element to be scanned. This is used for communication to and from the caller and for communication between successive calls to `getopt'. On entry to `getopt', zero means this is the first call; initialize. When `getopt' returns -1, this is the index of the first of the non-option elements that the caller should itself scan. Otherwise, `optind' communicates from one call to the next how much of ARGV has been scanned so far. */ /* 1003.2 says this must be 1 before any call. */ #if ! defined(HAVE_GETOPT) && ! defined(HAVE_GETOPT_LONG) int optind = 1; #endif /* Formerly, initialization of getopt depended on optind==0, which causes problems with re-calling getopt as programs generally don't know that. */ #if ! defined(HAVE_GETOPT) && ! defined(HAVE_GETOPT_LONG) int __getopt_initialized; #else extern int __getopt_initialized; #endif /* The next char to be scanned in the option-element in which the last option character we returned was found. This allows us to pick up the scan where we left off. If this is zero, or a null string, it means resume the scan by advancing to the next ARGV-element. */ static char *nextchar; /* Callers store zero here to inhibit the error message for unrecognized options. */ #if ! defined(HAVE_GETOPT) && ! defined(HAVE_GETOPT_LONG) int opterr = 1; #endif /* Set to an option character which was unrecognized. This must be initialized on some systems to avoid linking in the system's own getopt implementation. */ #if ! defined(HAVE_GETOPT) && ! defined(HAVE_GETOPT_LONG) int optopt = '?'; #endif /* Describe how to deal with options that follow non-option ARGV-elements. If the caller did not specify anything, the default is REQUIRE_ORDER if the environment variable POSIXLY_CORRECT is defined, PERMUTE otherwise. REQUIRE_ORDER means don't recognize them as options; stop option processing when the first non-option is seen. This is what Unix does. This mode of operation is selected by either setting the environment variable POSIXLY_CORRECT, or using `+' as the first character of the list of option characters. PERMUTE is the default. We permute the contents of ARGV as we scan, so that eventually all the non-options are at the end. This allows options to be given in any order, even with programs that were not written to expect this. RETURN_IN_ORDER is an option available to programs that were written to expect options and other ARGV-elements in any order and that care about the ordering of the two. We describe each non-option ARGV-element as if it were the argument of an option with character code 1. Using `-' as the first character of the list of option characters selects this mode of operation. The special argument `--' forces an end of option-scanning regardless of the value of `ordering'. In the case of RETURN_IN_ORDER, only `--' can cause `getopt' to return -1 with `optind' != ARGC. */ static enum { REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER } ordering; /* Value of POSIXLY_CORRECT environment variable. */ static char *posixly_correct; #ifdef __GNU_LIBRARY__ /* We want to avoid inclusion of string.h with non-GNU libraries because there are many ways it can cause trouble. On some systems, it contains special magic macros that don't work in GCC. */ # include # define my_index strchr #else # if HAVE_STRING_H # include # else # include # endif /* Avoid depending on library functions or files whose names are inconsistent. */ #ifndef getenv extern char *getenv (); #endif static char * my_index (str, chr) const char *str; int chr; { while (*str) { if (*str == chr) return (char *) str; str++; } return 0; } /* If using GCC, we can safely declare strlen this way. If not using GCC, it is ok not to declare it. */ #ifdef __GNUC__ /* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h. That was relevant to code that was here before. */ # if (!defined __STDC__ || !__STDC__) && !defined strlen /* gcc with -traditional declares the built-in strlen to return int, and has done so at least since version 2.4.5. -- rms. */ extern int strlen (const char *); # endif /* not __STDC__ */ #endif /* __GNUC__ */ #endif /* not __GNU_LIBRARY__ */ /* Handle permutation of arguments. */ /* Describe the part of ARGV that contains non-options that have been skipped. `first_nonopt' is the index in ARGV of the first of them; `last_nonopt' is the index after the last of them. */ static int first_nonopt; static int last_nonopt; #ifdef _LIBC /* Bash 2.0 gives us an environment variable containing flags indicating ARGV elements that should not be considered arguments. */ /* Defined in getopt_init.c */ extern char *__getopt_nonoption_flags; static int nonoption_flags_max_len; static int nonoption_flags_len; static int original_argc; static char *const *original_argv; /* Make sure the environment variable bash 2.0 puts in the environment is valid for the getopt call we must make sure that the ARGV passed to getopt is that one passed to the process. */ static void __attribute__ ((unused)) store_args_and_env (int argc, char *const *argv) { /* XXX This is no good solution. We should rather copy the args so that we can compare them later. But we must not use malloc(3). */ original_argc = argc; original_argv = argv; } # ifdef text_set_element text_set_element (__libc_subinit, store_args_and_env); # endif /* text_set_element */ # define SWAP_FLAGS(ch1, ch2) \ if (nonoption_flags_len > 0) \ { \ char __tmp = __getopt_nonoption_flags[ch1]; \ __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \ __getopt_nonoption_flags[ch2] = __tmp; \ } #else /* !_LIBC */ # define SWAP_FLAGS(ch1, ch2) #endif /* _LIBC */ /* Exchange two adjacent subsequences of ARGV. One subsequence is elements [first_nonopt,last_nonopt) which contains all the non-options that have been skipped so far. The other is elements [last_nonopt,optind), which contains all the options processed since those non-options were skipped. `first_nonopt' and `last_nonopt' are relocated so that they describe the new indices of the non-options in ARGV after they are moved. */ #if defined __STDC__ && __STDC__ static void exchange (char **); #endif static void exchange (argv) char **argv; { int bottom = first_nonopt; int middle = last_nonopt; int top = optind; char *tem; /* Exchange the shorter segment with the far end of the longer segment. That puts the shorter segment into the right place. It leaves the longer segment in the right place overall, but it consists of two parts that need to be swapped next. */ #ifdef _LIBC /* First make sure the handling of the `__getopt_nonoption_flags' string can work normally. Our top argument must be in the range of the string. */ if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len) { /* We must extend the array. The user plays games with us and presents new arguments. */ char *new_str = malloc (top + 1); if (new_str == NULL) nonoption_flags_len = nonoption_flags_max_len = 0; else { memset (__mempcpy (new_str, __getopt_nonoption_flags, nonoption_flags_max_len), '\0', top + 1 - nonoption_flags_max_len); nonoption_flags_max_len = top + 1; __getopt_nonoption_flags = new_str; } } #endif while (top > middle && middle > bottom) { if (top - middle > middle - bottom) { /* Bottom segment is the short one. */ int len = middle - bottom; register int i; /* Swap it with the top part of the top segment. */ for (i = 0; i < len; i++) { tem = argv[bottom + i]; argv[bottom + i] = argv[top - (middle - bottom) + i]; argv[top - (middle - bottom) + i] = tem; SWAP_FLAGS (bottom + i, top - (middle - bottom) + i); } /* Exclude the moved bottom segment from further swapping. */ top -= len; } else { /* Top segment is the short one. */ int len = top - middle; register int i; /* Swap it with the bottom part of the bottom segment. */ for (i = 0; i < len; i++) { tem = argv[bottom + i]; argv[bottom + i] = argv[middle + i]; argv[middle + i] = tem; SWAP_FLAGS (bottom + i, middle + i); } /* Exclude the moved top segment from further swapping. */ bottom += len; } } /* Update records for the slots the non-options now occupy. */ first_nonopt += (optind - last_nonopt); last_nonopt = optind; } /* Initialize the internal data when the first call is made. */ #if defined __STDC__ && __STDC__ static const char *_getopt_initialize (int, char *const *, const char *); #endif static const char * _getopt_initialize (argc, argv, optstring) int argc; char *const *argv; const char *optstring; { /* Start processing options with ARGV-element 1 (since ARGV-element 0 is the program name); the sequence of previously skipped non-option ARGV-elements is empty. */ first_nonopt = last_nonopt = optind; nextchar = NULL; posixly_correct = getenv ("POSIXLY_CORRECT"); /* Determine how to handle the ordering of options and nonoptions. */ if (optstring[0] == '-') { ordering = RETURN_IN_ORDER; ++optstring; } else if (optstring[0] == '+') { ordering = REQUIRE_ORDER; ++optstring; } else if (posixly_correct != NULL) ordering = REQUIRE_ORDER; else ordering = PERMUTE; #ifdef _LIBC if (posixly_correct == NULL && argc == original_argc && argv == original_argv) { if (nonoption_flags_max_len == 0) { if (__getopt_nonoption_flags == NULL || __getopt_nonoption_flags[0] == '\0') nonoption_flags_max_len = -1; else { const char *orig_str = __getopt_nonoption_flags; int len = nonoption_flags_max_len = strlen (orig_str); if (nonoption_flags_max_len < argc) nonoption_flags_max_len = argc; __getopt_nonoption_flags = (char *) malloc (nonoption_flags_max_len); if (__getopt_nonoption_flags == NULL) nonoption_flags_max_len = -1; else memset (__mempcpy (__getopt_nonoption_flags, orig_str, len), '\0', nonoption_flags_max_len - len); } } nonoption_flags_len = nonoption_flags_max_len; } else nonoption_flags_len = 0; #endif return optstring; } /* Scan elements of ARGV (whose length is ARGC) for option characters given in OPTSTRING. If an element of ARGV starts with '-', and is not exactly "-" or "--", then it is an option element. The characters of this element (aside from the initial '-') are option characters. If `getopt' is called repeatedly, it returns successively each of the option characters from each of the option elements. If `getopt' finds another option character, it returns that character, updating `optind' and `nextchar' so that the next call to `getopt' can resume the scan with the following option character or ARGV-element. If there are no more option characters, `getopt' returns -1. Then `optind' is the index in ARGV of the first ARGV-element that is not an option. (The ARGV-elements have been permuted so that those that are not options now come last.) OPTSTRING is a string containing the legitimate option characters. If an option character is seen that is not listed in OPTSTRING, return '?' after printing an error message. If you set `opterr' to zero, the error message is suppressed but we still return '?'. If a char in OPTSTRING is followed by a colon, that means it wants an arg, so the following text in the same ARGV-element, or the text of the following ARGV-element, is returned in `optarg'. Two colons mean an option that wants an optional arg; if there is text in the current ARGV-element, it is returned in `optarg', otherwise `optarg' is set to zero. If OPTSTRING starts with `-' or `+', it requests different methods of handling the non-option ARGV-elements. See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above. Long-named options begin with `--' instead of `-'. Their names may be abbreviated as long as the abbreviation is unique or is an exact match for some defined option. If they have an argument, it follows the option name in the same ARGV-element, separated from the option name by a `=', or else the in next ARGV-element. When `getopt' finds a long-named option, it returns 0 if that option's `flag' field is nonzero, the value of the option's `val' field if the `flag' field is zero. The elements of ARGV aren't really const, because we permute them. But we pretend they're const in the prototype to be compatible with other systems. LONGOPTS is a vector of `struct option' terminated by an element containing a name which is zero. LONGIND returns the index in LONGOPT of the long-named option found. It is only valid when a long-named option has been found by the most recent call. If LONG_ONLY is nonzero, '-' as well as '--' can introduce long-named options. */ int _getopt_internal (argc, argv, optstring, longopts, longind, long_only) int argc; char *const *argv; const char *optstring; const struct option *longopts; int *longind; int long_only; { int print_errors = opterr; if (optstring[0] == ':') print_errors = 0; optarg = NULL; if (optind == 0 || !__getopt_initialized) { if (optind == 0) optind = 1; /* Don't scan ARGV[0], the program name. */ optstring = _getopt_initialize (argc, argv, optstring); __getopt_initialized = 1; } /* Test whether ARGV[optind] points to a non-option argument. Either it does not have option syntax, or there is an environment flag from the shell indicating it is not an option. The later information is only used when the used in the GNU libc. */ #ifdef _LIBC # define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \ || (optind < nonoption_flags_len \ && __getopt_nonoption_flags[optind] == '1')) #else # define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0') #endif if (nextchar == NULL || *nextchar == '\0') { /* Advance to the next ARGV-element. */ /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been moved back by the user (who may also have changed the arguments). */ if (last_nonopt > optind) last_nonopt = optind; if (first_nonopt > optind) first_nonopt = optind; if (ordering == PERMUTE) { /* If we have just processed some options following some non-options, exchange them so that the options come first. */ if (first_nonopt != last_nonopt && last_nonopt != optind) exchange ((char **) argv); else if (last_nonopt != optind) first_nonopt = optind; /* Skip any additional non-options and extend the range of non-options previously skipped. */ while (optind < argc && NONOPTION_P) optind++; last_nonopt = optind; } /* The special ARGV-element `--' means premature end of options. Skip it like a null option, then exchange with previous non-options as if it were an option, then skip everything else like a non-option. */ if (optind != argc && !strcmp (argv[optind], "--")) { optind++; if (first_nonopt != last_nonopt && last_nonopt != optind) exchange ((char **) argv); else if (first_nonopt == last_nonopt) first_nonopt = optind; last_nonopt = argc; optind = argc; } /* If we have done all the ARGV-elements, stop the scan and back over any non-options that we skipped and permuted. */ if (optind == argc) { /* Set the next-arg-index to point at the non-options that we previously skipped, so the caller will digest them. */ if (first_nonopt != last_nonopt) optind = first_nonopt; return -1; } /* If we have come to a non-option and did not permute it, either stop the scan or describe it to the caller and pass it by. */ if (NONOPTION_P) { if (ordering == REQUIRE_ORDER) return -1; optarg = argv[optind++]; return 1; } /* We have found another option-ARGV-element. Skip the initial punctuation. */ nextchar = (argv[optind] + 1 + (longopts != NULL && argv[optind][1] == '-')); } /* Decode the current option-ARGV-element. */ /* Check whether the ARGV-element is a long option. If long_only and the ARGV-element has the form "-f", where f is a valid short option, don't consider it an abbreviated form of a long option that starts with f. Otherwise there would be no way to give the -f short option. On the other hand, if there's a long option "fubar" and the ARGV-element is "-fu", do consider that an abbreviation of the long option, just like "--fu", and not "-f" with arg "u". This distinction seems to be the most useful approach. */ if (longopts != NULL && (argv[optind][1] == '-' || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1]))))) { char *nameend; const struct option *p; const struct option *pfound = NULL; int exact = 0; int ambig = 0; int indfound = -1; int option_index; for (nameend = nextchar; *nameend && *nameend != '='; nameend++) /* Do nothing. */ ; /* Test all long options for either exact match or abbreviated matches. */ for (p = longopts, option_index = 0; p->name; p++, option_index++) if (!strncmp (p->name, nextchar, nameend - nextchar)) { if ((unsigned int) (nameend - nextchar) == (unsigned int) strlen (p->name)) { /* Exact match found. */ pfound = p; indfound = option_index; exact = 1; break; } else if (pfound == NULL) { /* First nonexact match found. */ pfound = p; indfound = option_index; } else /* Second or later nonexact match found. */ ambig = 1; } if (ambig && !exact) { if (print_errors) fprintf (stderr, _("%s: option `%s' is ambiguous\n"), argv[0], argv[optind]); nextchar += strlen (nextchar); optind++; optopt = 0; return '?'; } if (pfound != NULL) { option_index = indfound; optind++; if (*nameend) { /* Don't test has_arg with >, because some C compilers don't allow it to be used on enums. */ if (pfound->has_arg) optarg = nameend + 1; else { if (print_errors) { if (argv[optind - 1][1] == '-') /* --option */ fprintf (stderr, _("%s: option `--%s' doesn't allow an argument\n"), argv[0], pfound->name); else /* +option or -option */ fprintf (stderr, _("%s: option `%c%s' doesn't allow an argument\n"), argv[0], argv[optind - 1][0], pfound->name); } nextchar += strlen (nextchar); optopt = pfound->val; return '?'; } } else if (pfound->has_arg == 1) { if (optind < argc) optarg = argv[optind++]; else { if (print_errors) fprintf (stderr, _("%s: option `%s' requires an argument\n"), argv[0], argv[optind - 1]); nextchar += strlen (nextchar); optopt = pfound->val; return optstring[0] == ':' ? ':' : '?'; } } nextchar += strlen (nextchar); if (longind != NULL) *longind = option_index; if (pfound->flag) { *(pfound->flag) = pfound->val; return 0; } return pfound->val; } /* Can't find it as a long option. If this is not getopt_long_only, or the option starts with '--' or is not a valid short option, then it's an error. Otherwise interpret it as a short option. */ if (!long_only || argv[optind][1] == '-' || my_index (optstring, *nextchar) == NULL) { if (print_errors) { if (argv[optind][1] == '-') /* --option */ fprintf (stderr, _("%s: unrecognized option `--%s'\n"), argv[0], nextchar); else /* +option or -option */ fprintf (stderr, _("%s: unrecognized option `%c%s'\n"), argv[0], argv[optind][0], nextchar); } nextchar = (char *) ""; optind++; optopt = 0; return '?'; } } /* Look at and handle the next short option-character. */ { char c = *nextchar++; char *temp = my_index (optstring, c); /* Increment `optind' when we start to process its last character. */ if (*nextchar == '\0') ++optind; if (temp == NULL || c == ':') { if (print_errors) { if (posixly_correct) /* 1003.2 specifies the format of this message. */ fprintf (stderr, _("%s: illegal option -- %c\n"), argv[0], c); else fprintf (stderr, _("%s: invalid option -- %c\n"), argv[0], c); } optopt = c; return '?'; } /* Convenience. Treat POSIX -W foo same as long option --foo */ if (temp[0] == 'W' && temp[1] == ';') { char *nameend; const struct option *p; const struct option *pfound = NULL; int exact = 0; int ambig = 0; int indfound = 0; int option_index; /* This is an option that requires an argument. */ if (*nextchar != '\0') { optarg = nextchar; /* If we end this ARGV-element by taking the rest as an arg, we must advance to the next element now. */ optind++; } else if (optind == argc) { if (print_errors) { /* 1003.2 specifies the format of this message. */ fprintf (stderr, _("%s: option requires an argument -- %c\n"), argv[0], c); } optopt = c; if (optstring[0] == ':') c = ':'; else c = '?'; return c; } else /* We already incremented `optind' once; increment it again when taking next ARGV-elt as argument. */ optarg = argv[optind++]; /* optarg is now the argument, see if it's in the table of longopts. */ for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++) /* Do nothing. */ ; /* Test all long options for either exact match or abbreviated matches. */ for (p = longopts, option_index = 0; p->name; p++, option_index++) if (!strncmp (p->name, nextchar, nameend - nextchar)) { if ((unsigned int) (nameend - nextchar) == strlen (p->name)) { /* Exact match found. */ pfound = p; indfound = option_index; exact = 1; break; } else if (pfound == NULL) { /* First nonexact match found. */ pfound = p; indfound = option_index; } else /* Second or later nonexact match found. */ ambig = 1; } if (ambig && !exact) { if (print_errors) fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"), argv[0], argv[optind]); nextchar += strlen (nextchar); optind++; return '?'; } if (pfound != NULL) { option_index = indfound; if (*nameend) { /* Don't test has_arg with >, because some C compilers don't allow it to be used on enums. */ if (pfound->has_arg) optarg = nameend + 1; else { if (print_errors) fprintf (stderr, _("\ %s: option `-W %s' doesn't allow an argument\n"), argv[0], pfound->name); nextchar += strlen (nextchar); return '?'; } } else if (pfound->has_arg == 1) { if (optind < argc) optarg = argv[optind++]; else { if (print_errors) fprintf (stderr, _("%s: option `%s' requires an argument\n"), argv[0], argv[optind - 1]); nextchar += strlen (nextchar); return optstring[0] == ':' ? ':' : '?'; } } nextchar += strlen (nextchar); if (longind != NULL) *longind = option_index; if (pfound->flag) { *(pfound->flag) = pfound->val; return 0; } return pfound->val; } nextchar = NULL; return 'W'; /* Let the application handle it. */ } if (temp[1] == ':') { if (temp[2] == ':') { /* This is an option that accepts an argument optionally. */ if (*nextchar != '\0') { optarg = nextchar; optind++; } else optarg = NULL; nextchar = NULL; } else { /* This is an option that requires an argument. */ if (*nextchar != '\0') { optarg = nextchar; /* If we end this ARGV-element by taking the rest as an arg, we must advance to the next element now. */ optind++; } else if (optind == argc) { if (print_errors) { /* 1003.2 specifies the format of this message. */ fprintf (stderr, _("%s: option requires an argument -- %c\n"), argv[0], c); } optopt = c; if (optstring[0] == ':') c = ':'; else c = '?'; } else /* We already incremented `optind' once; increment it again when taking next ARGV-elt as argument. */ optarg = argv[optind++]; nextchar = NULL; } } return c; } } #ifndef HAVE_GETOPT int getopt (argc, argv, optstring) int argc; char *const *argv; const char *optstring; { return _getopt_internal (argc, argv, optstring, (const struct option *) 0, (int *) 0, 0); } #endif #endif /* Not ELIDE_CODE. */ #ifdef TEST /* Compile with -DTEST to make an executable for use in testing the above definition of `getopt'. */ int main (argc, argv) int argc; char **argv; { int c; int digit_optind = 0; while (1) { int this_option_optind = optind ? optind : 1; c = getopt (argc, argv, "abc:d:0123456789"); if (c == -1) break; switch (c) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (digit_optind != 0 && digit_optind != this_option_optind) printf ("digits occur in two different argv-elements.\n"); digit_optind = this_option_optind; printf ("option %c\n", c); break; case 'a': printf ("option a\n"); break; case 'b': printf ("option b\n"); break; case 'c': printf ("option c with value `%s'\n", optarg); break; case '?': break; default: printf ("?? getopt returned character code 0%o ??\n", c); } } if (optind < argc) { printf ("non-option ARGV-elements: "); while (optind < argc) printf ("%s ", argv[optind++]); printf ("\n"); } exit (0); } #endif /* TEST */ ctsim-6.0.2/getopt/getopt.h0000644000175000017500000001456610667176710014654 0ustar kevinkevin/* Declarations for getopt. Copyright (C) 1989,90,91,92,93,94,96,97,98 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The GNU C Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the GNU C Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _GETOPT_H #ifdef HAVE_CONFIG_H #include "../config.h" #endif #ifndef __need_getopt # define _GETOPT_H 1 #endif #ifdef __cplusplus extern "C" { #endif /* For communication from `getopt' to the caller. When `getopt' finds an option that takes an argument, the argument value is returned here. Also, when `ordering' is RETURN_IN_ORDER, each non-option ARGV-element is returned here. */ extern char *optarg; /* Index in ARGV of the next element to be scanned. This is used for communication to and from the caller and for communication between successive calls to `getopt'. On entry to `getopt', zero means this is the first call; initialize. When `getopt' returns -1, this is the index of the first of the non-option elements that the caller should itself scan. Otherwise, `optind' communicates from one call to the next how much of ARGV has been scanned so far. */ extern int optind; /* Callers store zero here to inhibit the error message `getopt' prints for unrecognized options. */ extern int opterr; /* Set to an option character which was unrecognized. */ extern int optopt; #ifndef __need_getopt /* Describe the long-named options requested by the application. The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector of `struct option' terminated by an element containing a name which is zero. The field `has_arg' is: no_argument (or 0) if the option does not take an argument, required_argument (or 1) if the option requires an argument, optional_argument (or 2) if the option takes an optional argument. If the field `flag' is not NULL, it points to a variable that is set to the value given in the field `val' when the option is found, but left unchanged if the option is not found. To have a long-named option do something other than set an `int' to a compiled-in constant, such as set a value from `optarg', set the option's `flag' field to zero and its `val' field to a nonzero value (the equivalent single-letter option character, if there is one). For long options that have a zero `flag' field, `getopt' returns the contents of the `val' field. */ struct option { # if defined __STDC__ const char *name; # else char *name; # endif /* has_arg can't be an enum because some compilers complain about type mismatches in all the code that assumes it is an int. */ int has_arg; int *flag; int val; }; /* Names for the values of the `has_arg' field of `struct option'. */ # define no_argument 0 # define required_argument 1 # define optional_argument 2 #endif /* need getopt */ /* Get definitions and prototypes for functions to process the arguments in ARGV (ARGC of them, minus the program name) for options given in OPTS. Return the option character from OPTS just read. Return -1 when there are no more options. For unrecognized options, or options missing arguments, `optopt' is set to the option letter, and '?' is returned. The OPTS string is a list of characters which are recognized option letters, optionally followed by colons, specifying that that letter takes an argument, to be placed in `optarg'. If a letter in OPTS is followed by two colons, its argument is optional. This behavior is specific to the GNU `getopt'. The argument `--' causes premature termination of argument scanning, explicitly telling `getopt' that there are no more options. If OPTS begins with `--', then non-option arguments are treated as arguments to the option '\0'. This behavior is specific to the GNU `getopt'. */ #if defined __STDC__ # ifdef __GNU_LIBRARY__ /* Many other libraries have conflicting prototypes for getopt, with differences in the consts, in stdlib.h. To avoid compilation errors, only prototype getopt for the GNU C library. */ extern int getopt (int __argc, char *const *__argv, const char *__shortopts); # else /* not __GNU_LIBRARY__ */ /* extern int getopt (); */ # endif /* __GNU_LIBRARY__ */ # ifndef __need_getopt extern int getopt_long (int argc, char *const *argv, const char *shortopts, const struct option *longopts, int *longind); extern int getopt_long_only (int __argc, char *const *__argv, const char *__shortopts, const struct option *__longopts, int *__longind); /* Internal only. Users should not call this directly. */ extern int _getopt_internal (int __argc, char *const *__argv, const char *__shortopts, const struct option *__longopts, int *__longind, int __long_only); # endif #else /* not __STDC__ */ extern int getopt (); # ifndef __need_getopt extern int getopt_long (int argc, char *const *argv, const char *shortopts, const struct option *longopts, int *longind); extern int getopt_long_only (int __argc, char *const *__argv, const char *__shortopts, const struct option *__longopts, int *__longind); extern int _getopt_internal (int __argc, char *const *__argv, const char *__shortopts, const struct option *__longopts, int *__longind, int __long_only); # endif #endif /* __STDC__ */ #ifdef __cplusplus } #endif /* Make sure we later can get all the definitions and declarations. */ #undef __need_getopt #endif /* getopt.h */ ctsim-6.0.2/getopt/Makefile.am0000644000175000017500000000021613254256026015212 0ustar kevinkevinnoinst_LIBRARIES=libgetopt.a libgetopt_a_SOURCES=getopt.c getopt1.c noinst_HEADERS=getopt.h AM_CPPFLAGS=@my_includes@ EXTRA_DIST=Makefile.nt ctsim-6.0.2/getopt/depcomp0000744000175000017500000003176710667176710014556 0ustar kevinkevin#! /bin/sh # depcomp - compile a program generating dependencies as side-effects # Copyright 1999, 2000 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # 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 . 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 # `libtool' can also be set to `yes' or `no'. if test -z "$depfile"; then base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'` dir=`echo "$object" | sed 's,/.*$,/,'` if test "$dir" = "$object"; then dir= fi # FIXME: should be _deps on DOS. depfile="$dir.deps/$base" fi tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # 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 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. "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## 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). ## - 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 -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## 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. tr ' ' ' ' < "$tmpdepfile" | ## 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. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -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 -eq 0; then : else 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 ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> $depfile echo >> $depfile # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> $depfile else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. 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. stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'` tmpdepfile="$stripped.u" outname="$stripped.o" if test "$libtool" = yes; then "$@" -Wc,-M else "$@" -M fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi if test -f "$tmpdepfile"; then # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Must come before tru64. # Intel's C compiler understands `-MD -MF file'. However # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" sed -e "s,^[^:]*: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; 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. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1="$dir.libs/$base.lo.d" tmpdepfile2="$dir.libs/$base.d" "$@" -Wc,-MD else tmpdepfile1="$dir$base.o.d" tmpdepfile2="$dir$base.d" "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi if test -f "$tmpdepfile1"; then tmpdepfile="$tmpdepfile1" else tmpdepfile="$tmpdepfile2" fi if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a space and a tab in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; #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 proprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test $1 != '--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:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. 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 $1 != '--mode=compile'; do shift done shift fi # X makedepend shift cleared=no for arg in "$@"; do case $cleared in no) set ""; shift cleared=yes ;; esac 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. -*|$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" cat < "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. 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 proprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test $1 != '--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 '/^# [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 proprocessed file to stdout, regardless of -o, # because we must use -o when running libtool. "$@" || exit $? IFS=" " for arg do case "$arg" in "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 ctsim-6.0.2/getopt/Makefile.in0000644000175000017500000004160013254406202015216 0ustar kevinkevin# 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 = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = getopt ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/scripts/ax_check_compile_flag.m4 \ $(top_srcdir)/scripts/ax_ext.m4 \ $(top_srcdir)/scripts/ax_gcc_x86_avx_xgetbv.m4 \ $(top_srcdir)/scripts/ax_gcc_x86_cpuid.m4 \ $(top_srcdir)/scripts/ax_openmp.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LIBRARIES = $(noinst_LIBRARIES) AR = ar ARFLAGS = cru AM_V_AR = $(am__v_AR_@AM_V@) am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) am__v_AR_0 = @echo " AR " $@; am__v_AR_1 = libgetopt_a_AR = $(AR) $(ARFLAGS) libgetopt_a_LIBADD = am_libgetopt_a_OBJECTS = getopt.$(OBJEXT) getopt1.$(OBJEXT) libgetopt_a_OBJECTS = $(am_libgetopt_a_OBJECTS) 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@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/scripts/depcomp am__depfiles_maybe = depfiles am__mv = mv -f 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 = $(libgetopt_a_SOURCES) DIST_SOURCES = $(libgetopt_a_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac HEADERS = $(noinst_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # 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 am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/scripts/depcomp \ depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPUEXT_FLAGS = @CPUEXT_FLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ 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@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIMD_FLAGS = @SIMD_FLAGS@ STRIP = @STRIP@ VERSION = @VERSION@ XMKMF = @XMKMF@ X_BASIC_LIBS = @X_BASIC_LIBS@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ X_TOOLKIT_LIBS = @X_TOOLKIT_LIBS@ 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 = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ cgibindir = @cgibindir@ cgibinurl = @cgibinurl@ cgiprograms = @cgiprograms@ ctlibs = @ctlibs@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldata = @htmldata@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lamdefs = @lamdefs@ lamdir = @lamdir@ lamprograms = @lamprograms@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mpienable = @mpienable@ my_includes = @my_includes@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ webdatadir = @webdatadir@ webdataurl = @webdataurl@ webenabled = @webenabled@ wx_cppflags = @wx_cppflags@ wxcflags = @wxcflags@ wxconfig = @wxconfig@ wxlibs = @wxlibs@ noinst_LIBRARIES = libgetopt.a libgetopt_a_SOURCES = getopt.c getopt1.c noinst_HEADERS = getopt.h AM_CPPFLAGS = @my_includes@ EXTRA_DIST = Makefile.nt all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu getopt/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu getopt/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLIBRARIES: -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) libgetopt.a: $(libgetopt_a_OBJECTS) $(libgetopt_a_DEPENDENCIES) $(EXTRA_libgetopt_a_DEPENDENCIES) $(AM_V_at)-rm -f libgetopt.a $(AM_V_AR)$(libgetopt_a_AR) libgetopt.a $(libgetopt_a_OBJECTS) $(libgetopt_a_LIBADD) $(AM_V_at)$(RANLIB) libgetopt.a mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` 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" 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 distdir: $(DISTFILES) @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 check-am: all-am check: check-am all-am: Makefile $(LIBRARIES) $(HEADERS) installdirs: 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: clean-generic: 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) 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-generic clean-noinstLIBRARIES mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(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: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-noinstLIBRARIES cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ 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-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 tags tags-am uninstall \ uninstall-am .PRECIOUS: Makefile # 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: ctsim-6.0.2/getopt/getopt1.c0000644000175000017500000001144510667176710014721 0ustar kevinkevin/* getopt_long and getopt_long_only entry points for GNU getopt. Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The GNU C Library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with the GNU C Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H #include #endif #include "getopt.h" #if !defined __STDC__ || !__STDC__ /* This is a separate conditional since some stdc systems reject `defined (const)'. */ #ifndef const #define const #endif #endif #include /* Comment out all this code if we are using the GNU C Library, and are not actually compiling the library itself. This code is part of the GNU C Library, but also included in many other GNU distributions. Compiling and linking in this code is a waste when using the GNU C library (especially if it is a shared library). Rather than having every GNU program understand `configure --with-gnu-libc' and omit the object files, it is simpler to just do this in the source for each such file. */ #define GETOPT_INTERFACE_VERSION 2 #if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2 #include #if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION #define ELIDE_CODE #endif #endif #ifndef ELIDE_CODE /* This needs to come after some library #include to get __GNU_LIBRARY__ defined. */ #ifdef __GNU_LIBRARY__ #include #endif #ifndef NULL #define NULL 0 #endif int getopt_long (argc, argv, options, long_options, opt_index) int argc; char *const *argv; const char *options; const struct option *long_options; int *opt_index; { return _getopt_internal (argc, argv, options, long_options, opt_index, 0); } /* Like getopt_long, but '-' as well as '--' can indicate a long option. If an option that starts with '-' (not '--') doesn't match a long option, but does match a short option, it is parsed as a short option instead. */ int getopt_long_only (argc, argv, options, long_options, opt_index) int argc; char *const *argv; const char *options; const struct option *long_options; int *opt_index; { return _getopt_internal (argc, argv, options, long_options, opt_index, 1); } #endif /* Not ELIDE_CODE. */ #ifdef TEST #include int main (argc, argv) int argc; char **argv; { int c; int digit_optind = 0; while (1) { int this_option_optind = optind ? optind : 1; int option_index = 0; static struct option long_options[] = { {"add", 1, 0, 0}, {"append", 0, 0, 0}, {"delete", 1, 0, 0}, {"verbose", 0, 0, 0}, {"create", 0, 0, 0}, {"file", 1, 0, 0}, {0, 0, 0, 0} }; c = getopt_long (argc, argv, "abc:d:0123456789", long_options, &option_index); if (c == -1) break; switch (c) { case 0: printf ("option %s", long_options[option_index].name); if (optarg) printf (" with arg %s", optarg); printf ("\n"); break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (digit_optind != 0 && digit_optind != this_option_optind) printf ("digits occur in two different argv-elements.\n"); digit_optind = this_option_optind; printf ("option %c\n", c); break; case 'a': printf ("option a\n"); break; case 'b': printf ("option b\n"); break; case 'c': printf ("option c with value `%s'\n", optarg); break; case 'd': printf ("option d with value `%s'\n", optarg); break; case '?': break; default: printf ("?? getopt returned character code 0%o ??\n", c); } } if (optind < argc) { printf ("non-option ARGV-elements: "); while (optind < argc) printf ("%s ", argv[optind++]); printf ("\n"); } exit (0); } #endif /* TEST */ ctsim-6.0.2/configure0000755000175000017500000111202713254406202013561 0ustar kevinkevin#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for CTSim 6.0.0. # # 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 ctsim-users@kpe.io $0: about your system, including any error possibly output $0: before this message. Then install a modern shell, or $0: manually run the script under such a shell if you do $0: 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='CTSim' PACKAGE_TARNAME='ctsim' PACKAGE_VERSION='6.0.0' PACKAGE_STRING='CTSim 6.0.0' PACKAGE_BUGREPORT='ctsim-users@kpe.io' PACKAGE_URL='http://www.ctsim.org/' ac_unique_file="src/ctsim.cpp" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS wx_cppflags my_includes lamdefs lamprograms ctlibs HAVE_WXWINDOWS_FALSE HAVE_WXWINDOWS_TRUE wxlibs wxcflags HAVE_SGP_FALSE HAVE_SGP_TRUE NO_X_FALSE NO_X_TRUE X_BASIC_LIBS X_TOOLKIT_LIBS X_EXTRA_LIBS X_LIBS X_PRE_LIBS X_CFLAGS XMKMF USE_LAM_FALSE USE_LAM_TRUE webenabled USE_HTML_FALSE USE_HTML_TRUE htmldata cgiprograms webdataurl webdatadir cgibinurl cgibindir mpienable lamdir DEBUG_FALSE DEBUG_TRUE CPUEXT_FLAGS SIMD_FLAGS INCLUDED_GETOPT_LONG_FALSE INCLUDED_GETOPT_LONG_TRUE wxconfig EGREP GREP CPP 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 RANLIB 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 MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE target_os target_vendor target_cpu target host_os host_vendor host_cpu host build_os build_vendor build_cpu build 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 runstatedir 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_maintainer_mode enable_silent_rules enable_dependency_tracking enable_debug enable_verbose_warnings enable_static enable_openmp with_lam with_ctn with_mcpu with_cgibin_dir with_cgibin_url with_webdata_dir with_webdata_url with_html_dir with_x enable_dmalloc enable_efence ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CXX CXXFLAGS CCC CPP XMKMF' # 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' runstatedir='${localstatedir}/run' 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 ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -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 runstatedir 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 CTSim 6.0.0 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] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --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/ctsim] --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 X features: --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] --target=TARGET configure for building compilers for TARGET [HOST] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of CTSim 6.0.0:";; 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-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-debug Turn on debugging --enable-verbose-warnings Enable verbose compiler warnings. --enable-static Enable static executables --disable-openmp Disable use of OpenMP --enable-dmalloc Use dmalloc memory allocation --enable-efence Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-lam=PATH Set path of LAM MPI --with-ctn=PATH Set path of CTN DICOM library --with-mcpu=CPU Set name of CPU for gcc -mcpu --with-cgibin-dir=PATH Set path of CGI binaries directory --with-cgibin-url=PATH Set URL path of CGI binaries --with-webdata-dir=PATH Set path of webdata --with-webdata-url=PATH Set URL path of webdata --with-html-dir=PATH Set directory of html files --with-x use the X Window System 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 CPP C preprocessor XMKMF Path to xmkmf, Makefile generator for X Window System 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 . CTSim home page: . _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 CTSim configure 6.0.0 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_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_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" 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_cpp conftest.$ac_ext") 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; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; 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_cpp # 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_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 &5 (eval "$ac_link") 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_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. 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_link # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $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 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## --------------------------------- ## ## Report this to ctsim-users@kpe.io ## ## --------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $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 eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { 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 eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=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 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_type # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { 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. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext 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_func cat >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 CTSim $as_me 6.0.0, 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 ac_aux_dir= for ac_dir in scripts/ "$srcdir"/scripts/; 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 scripts/ \"$srcdir\"/scripts/" "$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. # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 $as_echo_n "checking target system type... " >&6; } if ${ac_cv_target+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$target_alias" = x; then ac_cv_target=$ac_cv_host else ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 $as_echo "$ac_cv_target" >&6; } case $ac_cv_target in *-*-*) ;; *) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; esac target=$ac_cv_target ac_save_IFS=$IFS; IFS='-' set x $ac_cv_target shift target_cpu=$1 target_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: target_os=$* IFS=$ac_save_IFS case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac # The aliases save the names the user supplied, while $host etc. # will get canonicalized. test -n "$target_alias" && test "$program_prefix$program_suffix$program_transform_name" = \ NONENONEs,x,x, && program_prefix=${target_alias}- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then : enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 $as_echo "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE am__api_version='1.15' # 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='ctsim' VERSION='6.0.0' 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 ac_config_headers="$ac_config_headers config.h" 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 if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; 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_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # 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_RANLIB="${ac_tool_prefix}ranlib" $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 RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; 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_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # 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_RANLIB="ranlib" $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_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" 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 RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" 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 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 CFLAGS="" CXXFLAGS="" 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 how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : 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 $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 $as_echo_n "checking whether byte ordering is bigendian... " >&6; } if ${ac_cv_c_bigendian+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_bigendian=unknown # See if we're dealing with a universal compiler. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __APPLE_CC__ not a universal capable compiler #endif typedef int dummy; _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # Check for potential -arch flags. It is not universal unless # there are at least two -arch flags with different values. ac_arch= ac_prev= for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do if test -n "$ac_prev"; then case $ac_word in i?86 | x86_64 | ppc | ppc64) if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then ac_arch=$ac_word else ac_cv_c_bigendian=universal break fi ;; esac ac_prev= elif test "x$ac_word" = "x-arch"; then ac_prev=arch fi done fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_c_bigendian = unknown; then # See if sys/param.h defines the BYTE_ORDER macro. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { #if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ && LITTLE_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # It does; now see whether it defined to BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { #if BYTE_ORDER != BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_bigendian=yes else ac_cv_c_bigendian=no 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 if test $ac_cv_c_bigendian = unknown; then # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # It does; now see whether it defined to _BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #ifndef _BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_bigendian=yes else ac_cv_c_bigendian=no 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 if test $ac_cv_c_bigendian = unknown; then # Compile a test program. if test "$cross_compiling" = yes; then : # Try to guess by grepping values from an object file. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; int use_ascii (int i) { return ascii_mm[i] + ascii_ii[i]; } short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; int use_ebcdic (int i) { return ebcdic_mm[i] + ebcdic_ii[i]; } extern int foo; int main () { return use_ascii (foo) == use_ebcdic (foo); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then ac_cv_c_bigendian=yes fi if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then if test "$ac_cv_c_bigendian" = unknown; then ac_cv_c_bigendian=no else # finding both strings is unlikely to happen, but who knows? ac_cv_c_bigendian=unknown fi fi fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { /* Are we little or big endian? From Harbison&Steele. */ union { long int l; char c[sizeof (long int)]; } u; u.l = 1; return u.c[sizeof (long int) - 1] == 1; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_c_bigendian=no else ac_cv_c_bigendian=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 $as_echo "$ac_cv_c_bigendian" >&6; } case $ac_cv_c_bigendian in #( yes) $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h ;; #( no) ;; #( universal) $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h ;; #( *) as_fn_error $? "unknown endianness presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; esac # Extract the first word of "wx-config", so it can be a program name with args. set dummy wx-config; 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_wxconfig+:} false; then : $as_echo_n "(cached) " >&6 else case $wxconfig in [\\/]* | ?:[\\/]*) ac_cv_path_wxconfig="$wxconfig" # 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_wxconfig="$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 ;; esac fi wxconfig=$ac_cv_path_wxconfig if test -n "$wxconfig"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $wxconfig" >&5 $as_echo "$wxconfig" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 $as_echo_n "checking for inline... " >&6; } if ${ac_cv_c_inline+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; static $ac_kw foo_t static_foo () {return 0; } $ac_kw foo_t foo () {return 0; } #endif _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_inline=$ac_kw fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext test "$ac_cv_c_inline" != no && break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 $as_echo "$ac_cv_c_inline" >&6; } case $ac_cv_c_inline in inline | yes) ;; *) case $ac_cv_c_inline in no) ac_val=;; *) ac_val=$ac_cv_c_inline;; esac cat >>confdefs.h <<_ACEOF #ifndef __cplusplus #define inline $ac_val #endif _ACEOF ;; esac # 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" "$ac_includes_default"; 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" "$ac_includes_default"; 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" "$ac_includes_default"; 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 float" >&5 $as_echo_n "checking size of float... " >&6; } if ${ac_cv_sizeof_float+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (float))" "ac_cv_sizeof_float" "$ac_includes_default"; then : else if test "$ac_cv_type_float" = 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 (float) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_float=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_float" >&5 $as_echo "$ac_cv_sizeof_float" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_FLOAT $ac_cv_sizeof_float _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 double" >&5 $as_echo_n "checking size of double... " >&6; } if ${ac_cv_sizeof_double+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double" "$ac_includes_default"; then : else if test "$ac_cv_type_double" = 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 (double) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_double=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_double" >&5 $as_echo "$ac_cv_sizeof_double" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_DOUBLE $ac_cv_sizeof_double _ACEOF { $as_echo "$as_me:${as_lineno-$LINENO}: checking for deflate in -lz" >&5 $as_echo_n "checking for deflate in -lz... " >&6; } if ${ac_cv_lib_z_deflate+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char deflate (); int main () { return deflate (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_z_deflate=yes else ac_cv_lib_z_deflate=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_deflate" >&5 $as_echo "$ac_cv_lib_z_deflate" >&6; } if test "x$ac_cv_lib_z_deflate" = xyes; then : zlib="true" else zlib="false" ; { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: zlib missing. Will need zlib for PNG support" >&5 $as_echo "$as_me: WARNING: zlib missing. Will need zlib for PNG support" >&2;} fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sin in -lm" >&5 $as_echo_n "checking for sin in -lm... " >&6; } if ${ac_cv_lib_m_sin+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lm $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char sin (); int main () { return sin (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_m_sin=yes else ac_cv_lib_m_sin=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_sin" >&5 $as_echo "$ac_cv_lib_m_sin" >&6; } if test "x$ac_cv_lib_m_sin" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBM 1 _ACEOF LIBS="-lm $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lcurses" >&5 $as_echo_n "checking for main in -lcurses... " >&6; } if ${ac_cv_lib_curses_main+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lcurses $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_curses_main=yes else ac_cv_lib_curses_main=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_main" >&5 $as_echo "$ac_cv_lib_curses_main" >&6; } if test "x$ac_cv_lib_curses_main" = xyes; then : curses=true else curses=false fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lncurses" >&5 $as_echo_n "checking for main in -lncurses... " >&6; } if ${ac_cv_lib_ncurses_main+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lncurses $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_ncurses_main=yes else ac_cv_lib_ncurses_main=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_main" >&5 $as_echo "$ac_cv_lib_ncurses_main" >&6; } if test "x$ac_cv_lib_ncurses_main" = xyes; then : ncurses=true else ncurses=false fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lreadline" >&5 $as_echo_n "checking for main in -lreadline... " >&6; } if ${ac_cv_lib_readline_main+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lreadline -lcurses $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_readline_main=yes else ac_cv_lib_readline_main=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_main" >&5 $as_echo "$ac_cv_lib_readline_main" >&6; } if test "x$ac_cv_lib_readline_main" = xyes; then : readline=true; $as_echo "#define HAVE_READLINE 1" >>confdefs.h else readline=false fi wxwin=false { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lgtk-x11-2.0" >&5 $as_echo_n "checking for main in -lgtk-x11-2.0... " >&6; } if ${ac_cv_lib_gtk_x11_2_0_main+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgtk-x11-2.0 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_gtk_x11_2_0_main=yes else ac_cv_lib_gtk_x11_2_0_main=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gtk_x11_2_0_main" >&5 $as_echo "$ac_cv_lib_gtk_x11_2_0_main" >&6; } if test "x$ac_cv_lib_gtk_x11_2_0_main" = xyes; then : hasx11gtk2=true fi if test "x$hasx11gtk2" = "x" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: Does not have X11 GTK2" >&5 $as_echo "$as_me: Does not have X11 GTK2" >&6;} fi if test "$hasx11gtk2" = "true" ; then CFLAGS="${CFLAGS} ${g76GTK_CFLAGS} ${GLIB_CFLAGS}" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lwx_gtk2u_core-3.0" >&5 $as_echo_n "checking for main in -lwx_gtk2u_core-3.0... " >&6; } if ${ac_cv_lib_wx_gtk2u_core_3_0_main+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lwx_gtk2u_core-3.0 -L/usr/lib64 -L/usr/lib ${GTK_LIBS} ${GLIB_LIBS} $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_wx_gtk2u_core_3_0_main=yes else ac_cv_lib_wx_gtk2u_core_3_0_main=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_wx_gtk2u_core_3_0_main" >&5 $as_echo "$ac_cv_lib_wx_gtk2u_core_3_0_main" >&6; } if test "x$ac_cv_lib_wx_gtk2u_core_3_0_main" = xyes; then : wxwin=true; wx_gtk=true; $as_echo "#define HAVE_WXWINDOWS 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lwx_mac_core-3.0" >&5 $as_echo_n "checking for main in -lwx_mac_core-3.0... " >&6; } if ${ac_cv_lib_wx_mac_core_3_0_main+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lwx_mac_core-3.0 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_wx_mac_core_3_0_main=yes else ac_cv_lib_wx_mac_core_3_0_main=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_wx_mac_core_3_0_main" >&5 $as_echo "$ac_cv_lib_wx_mac_core_3_0_main" >&6; } if test "x$ac_cv_lib_wx_mac_core_3_0_main" = xyes; then : wxwin=true; wx_mac=true; $as_echo "#define HAVE_WXWINDOWS 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fftw_malloc in -lfftw3" >&5 $as_echo_n "checking for fftw_malloc in -lfftw3... " >&6; } if ${ac_cv_lib_fftw3_fftw_malloc+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lfftw3 -L/usr/lib64 -L/usr/lib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char fftw_malloc (); int main () { return fftw_malloc (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_fftw3_fftw_malloc=yes else ac_cv_lib_fftw3_fftw_malloc=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_fftw3_fftw_malloc" >&5 $as_echo "$ac_cv_lib_fftw3_fftw_malloc" >&6; } if test "x$ac_cv_lib_fftw3_fftw_malloc" = xyes; then : fftw=true; $as_echo "#define HAVE_FFTW 1" >>confdefs.h else fftw=false fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lGL" >&5 $as_echo_n "checking for main in -lGL... " >&6; } if ${ac_cv_lib_GL_main+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lGL -L/usr/X11R6/lib -L/usr/X11R6/lib64 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_GL_main=yes else ac_cv_lib_GL_main=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_GL_main" >&5 $as_echo "$ac_cv_lib_GL_main" >&6; } if test "x$ac_cv_lib_GL_main" = xyes; then : libgl=true else libgl=false fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lpthread" >&5 $as_echo_n "checking for main in -lpthread... " >&6; } if ${ac_cv_lib_pthread_main+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpthread $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_pthread_main=yes else ac_cv_lib_pthread_main=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_main" >&5 $as_echo "$ac_cv_lib_pthread_main" >&6; } if test "x$ac_cv_lib_pthread_main" = xyes; then : pthread=true else pthread=false fi if test "$zlib" = "true" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lpng" >&5 $as_echo_n "checking for main in -lpng... " >&6; } if ${ac_cv_lib_png_main+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpng -L/opt/local/lib -lz -lm $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_png_main=yes else ac_cv_lib_png_main=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_png_main" >&5 $as_echo "$ac_cv_lib_png_main" >&6; } if test "x$ac_cv_lib_png_main" = xyes; then : png=true ; $as_echo "#define HAVE_PNG 1" >>confdefs.h else png=false fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi for ac_header in fcntl.h unistd.h getopt.h sys/fcntl.h setjmp.h stdarg.h stddef.h sys/types.h sys/stat.h string.h ctype.h math.h stdio.h netinet/in.h inttypes.h sys/param.h stdint.h stdlib.h assert.h sys/time.h sys/resource.h sys/time.h readline.h readline/readline.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if ${ac_cv_c_const+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __cplusplus /* Ultrix mips cc rejects this sort of thing. */ typedef int charset[2]; const charset cs = { 0, 0 }; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this sort of thing. */ char tx; char *t = &tx; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_const=yes else ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then $as_echo "#define const /**/" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" if test "x$ac_cv_type_off_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define off_t long int _ACEOF fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 $as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } if ${ac_cv_struct_tm+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { struct tm tm; int *p = &tm.tm_sec; return !p; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_struct_tm=time.h else ac_cv_struct_tm=sys/time.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 $as_echo "$ac_cv_struct_tm" >&6; } if test $ac_cv_struct_tm = sys/time.h; then $as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h fi for ac_func in vprintf do : ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf" if test "x$ac_cv_func_vprintf" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_VPRINTF 1 _ACEOF ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt" if test "x$ac_cv_func__doprnt" = xyes; then : $as_echo "#define HAVE_DOPRNT 1" >>confdefs.h fi fi done for ac_func in strtod strtol snprintf htonl usleep vsprintf vsnprintf basename setjmp setpriority time gettimeofday getenv do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done ac_fn_c_check_func "$LINENO" "basename" "ac_cv_func_basename" if test "x$ac_cv_func_basename" = xyes; then : fi ac_fn_c_check_func "$LINENO" "setjmp" "ac_cv_func_setjmp" if test "x$ac_cv_func_setjmp" = xyes; then : fi ac_fn_c_check_func "$LINENO" "setpriority" "ac_cv_func_setpriority" if test "x$ac_cv_func_setpriority" = xyes; then : fi ac_fn_c_check_func "$LINENO" "time" "ac_cv_func_time" if test "x$ac_cv_func_time" = xyes; then : fi ac_fn_c_check_func "$LINENO" "gettimeofday" "ac_cv_func_gettimeofday" if test "x$ac_cv_func_gettimeofday" = xyes; then : fi ac_fn_c_check_func "$LINENO" "getopt" "ac_cv_func_getopt" if test "x$ac_cv_func_getopt" = xyes; then : getopt=true else getopt=false fi if test "${OSTYPE}" = "cygwin" ; then getopt_long=false else ac_fn_c_check_func "$LINENO" "getopt_long" "ac_cv_func_getopt_long" if test "x$ac_cv_func_getopt_long" = xyes; then : getopt_long=true else getopt_long=false fi fi if test "${getopt_long}" = "false" ; then my_includes="$my_includes -I../getopt" $as_echo "#define HAVE_GETOPT_LONG 1" >>confdefs.h ctlibs_base="$ctlibs_base -lgetopt" LDFLAGS="$LDFLAGS -L../getopt" GETOPTLONG=1 fi if test "$GETOPTLONG"="1"; then INCLUDED_GETOPT_LONG_TRUE= INCLUDED_GETOPT_LONG_FALSE='#' else INCLUDED_GETOPT_LONG_TRUE='#' INCLUDED_GETOPT_LONG_FALSE= fi ARCH_OPTION="" case $target_cpu in i386|i486|i586|i686|x86|x86_64) 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 for x86 cpuid output" >&5 $as_echo_n "checking for x86 cpuid output... " >&6; } if ${ax_cv_gcc_x86_cpuid_+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ax_cv_gcc_x86_cpuid_=unknown else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int op = , level = 0, eax, ebx, ecx, edx; FILE *f; __asm__ __volatile__ ("xchg %%ebx, %1\n" "cpuid\n" "xchg %%ebx, %1\n" : "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx) : "a" (op), "2" (level)); f = fopen("conftest_cpuid", "w"); if (!f) return 1; fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx); fclose(f); return 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ax_cv_gcc_x86_cpuid_=`cat conftest_cpuid`; rm -f conftest_cpuid else ax_cv_gcc_x86_cpuid_=unknown; rm -f conftest_cpuid fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_" >&5 $as_echo "$ax_cv_gcc_x86_cpuid_" >&6; } 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 for x86-AVX xgetbv output" >&5 $as_echo_n "checking for x86-AVX xgetbv output... " >&6; } if ${ax_cv_gcc_x86_avx_xgetbv_+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ax_cv_gcc_x86_avx_xgetbv_=unknown else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int op = , eax, edx; FILE *f; /* Opcodes for xgetbv */ __asm__ __volatile__ (".byte 0x0f, 0x01, 0xd0" : "=a" (eax), "=d" (edx) : "c" (op)); f = fopen("conftest_xgetbv", "w"); if (!f) return 1; fprintf(f, "%x:%x\n", eax, edx); fclose(f); return 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ax_cv_gcc_x86_avx_xgetbv_=`cat conftest_xgetbv`; rm -f conftest_xgetbv else ax_cv_gcc_x86_avx_xgetbv_=unknown; rm -f conftest_xgetbv fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_avx_xgetbv_" >&5 $as_echo "$ax_cv_gcc_x86_avx_xgetbv_" >&6; } 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 CPUEXT_FLAGS="" SIMD_FLAGS="" case $host_cpu in powerpc*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether altivec is supported for old distros" >&5 $as_echo_n "checking whether altivec is supported for old distros... " >&6; } if ${ax_cv_have_altivec_old_ext+:} false; then : $as_echo_n "(cached) " >&6 else if test `/usr/sbin/sysctl -a 2>/dev/null| grep -c hw.optional.altivec` != 0; then if test `/usr/sbin/sysctl -n hw.optional.altivec` = 1; then ax_cv_have_altivec_old_ext=yes fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have_altivec_old_ext" >&5 $as_echo "$ax_cv_have_altivec_old_ext" >&6; } if test "$ax_cv_have_altivec_old_ext" = yes; then $as_echo "#define HAVE_ALTIVEC /**/" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -faltivec" >&5 $as_echo_n "checking whether C compiler accepts -faltivec... " >&6; } if ${ax_cv_check_cflags___faltivec+:} false; then : $as_echo_n "(cached) " >&6 else ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS -faltivec" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ax_cv_check_cflags___faltivec=yes else ax_cv_check_cflags___faltivec=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS=$ax_check_save_flags fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___faltivec" >&5 $as_echo "$ax_cv_check_cflags___faltivec" >&6; } if test "x$ax_cv_check_cflags___faltivec" = xyes; then : SIMD_FLAGS="$SIMD_FLAGS -faltivec" else : fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether altivec is supported" >&5 $as_echo_n "checking whether altivec is supported... " >&6; } if ${ax_cv_have_altivec_ext+:} false; then : $as_echo_n "(cached) " >&6 else if test `LD_SHOW_AUXV=1 /bin/true 2>/dev/null|grep -c altivec` != 0; then ax_cv_have_altivec_ext=yes fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have_altivec_ext" >&5 $as_echo "$ax_cv_have_altivec_ext" >&6; } if test "$ax_cv_have_altivec_ext" = yes; then $as_echo "#define HAVE_ALTIVEC /**/" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -maltivec" >&5 $as_echo_n "checking whether C compiler accepts -maltivec... " >&6; } if ${ax_cv_check_cflags___maltivec+:} false; then : $as_echo_n "(cached) " >&6 else ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS -maltivec" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ax_cv_check_cflags___maltivec=yes else ax_cv_check_cflags___maltivec=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS=$ax_check_save_flags fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___maltivec" >&5 $as_echo "$ax_cv_check_cflags___maltivec" >&6; } if test "x$ax_cv_check_cflags___maltivec" = xyes; then : SIMD_FLAGS="$SIMD_FLAGS -maltivec" else : fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether vsx is supported" >&5 $as_echo_n "checking whether vsx is supported... " >&6; } if ${ax_cv_have_vsx_ext+:} false; then : $as_echo_n "(cached) " >&6 else if test `LD_SHOW_AUXV=1 /bin/true 2>/dev/null|grep -c vsx` != 0; then ax_cv_have_vsx_ext=yes fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_have_vsx_ext" >&5 $as_echo "$ax_cv_have_vsx_ext" >&6; } if test "$ax_cv_have_vsx_ext" = yes; then $as_echo "#define HAVE_VSX /**/" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -mvsx" >&5 $as_echo_n "checking whether C compiler accepts -mvsx... " >&6; } if ${ax_cv_check_cflags___mvsx+:} false; then : $as_echo_n "(cached) " >&6 else ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS -mvsx" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ax_cv_check_cflags___mvsx=yes else ax_cv_check_cflags___mvsx=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS=$ax_check_save_flags fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___mvsx" >&5 $as_echo "$ax_cv_check_cflags___mvsx" >&6; } if test "x$ax_cv_check_cflags___mvsx" = xyes; then : SIMD_FLAGS="$SIMD_FLAGS -mvsx" else : fi fi ;; i[3456]86*|x86_64*|amd64*) eax_cpuid0=0 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 for x86 cpuid 0x00000000 output" >&5 $as_echo_n "checking for x86 cpuid 0x00000000 output... " >&6; } if ${ax_cv_gcc_x86_cpuid_0x00000000+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ax_cv_gcc_x86_cpuid_0x00000000=unknown else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int op = 0x00000000, level = 0, eax, ebx, ecx, edx; FILE *f; __asm__ __volatile__ ("xchg %%ebx, %1\n" "cpuid\n" "xchg %%ebx, %1\n" : "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx) : "a" (op), "2" (level)); f = fopen("conftest_cpuid", "w"); if (!f) return 1; fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx); fclose(f); return 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ax_cv_gcc_x86_cpuid_0x00000000=`cat conftest_cpuid`; rm -f conftest_cpuid else ax_cv_gcc_x86_cpuid_0x00000000=unknown; rm -f conftest_cpuid fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0x00000000" >&5 $as_echo "$ax_cv_gcc_x86_cpuid_0x00000000" >&6; } 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 "$ax_cv_gcc_x86_cpuid_0x00000000" != "unknown"; then eax_cpuid0=`echo $ax_cv_gcc_x86_cpuid_0x00000000 | cut -d ":" -f 1` fi eax_cpuid80000000=0 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 for x86 cpuid 0x80000000 output" >&5 $as_echo_n "checking for x86 cpuid 0x80000000 output... " >&6; } if ${ax_cv_gcc_x86_cpuid_0x80000000+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ax_cv_gcc_x86_cpuid_0x80000000=unknown else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int op = 0x80000000, level = 0, eax, ebx, ecx, edx; FILE *f; __asm__ __volatile__ ("xchg %%ebx, %1\n" "cpuid\n" "xchg %%ebx, %1\n" : "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx) : "a" (op), "2" (level)); f = fopen("conftest_cpuid", "w"); if (!f) return 1; fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx); fclose(f); return 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ax_cv_gcc_x86_cpuid_0x80000000=`cat conftest_cpuid`; rm -f conftest_cpuid else ax_cv_gcc_x86_cpuid_0x80000000=unknown; rm -f conftest_cpuid fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0x80000000" >&5 $as_echo "$ax_cv_gcc_x86_cpuid_0x80000000" >&6; } 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 "$ax_cv_gcc_x86_cpuid_0x80000000" != "unknown"; then eax_cpuid80000000=`echo $ax_cv_gcc_x86_cpuid_0x80000000 | cut -d ":" -f 1` fi ecx_cpuid1=0 edx_cpuid1=0 if test "$((0x$eax_cpuid0))" -ge 1 ; then 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 for x86 cpuid 0x00000001 output" >&5 $as_echo_n "checking for x86 cpuid 0x00000001 output... " >&6; } if ${ax_cv_gcc_x86_cpuid_0x00000001+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ax_cv_gcc_x86_cpuid_0x00000001=unknown else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int op = 0x00000001, level = 0, eax, ebx, ecx, edx; FILE *f; __asm__ __volatile__ ("xchg %%ebx, %1\n" "cpuid\n" "xchg %%ebx, %1\n" : "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx) : "a" (op), "2" (level)); f = fopen("conftest_cpuid", "w"); if (!f) return 1; fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx); fclose(f); return 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ax_cv_gcc_x86_cpuid_0x00000001=`cat conftest_cpuid`; rm -f conftest_cpuid else ax_cv_gcc_x86_cpuid_0x00000001=unknown; rm -f conftest_cpuid fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0x00000001" >&5 $as_echo "$ax_cv_gcc_x86_cpuid_0x00000001" >&6; } 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 "$ax_cv_gcc_x86_cpuid_0x00000001" != "unknown"; then ecx_cpuid1=`echo $ax_cv_gcc_x86_cpuid_0x00000001 | cut -d ":" -f 3` edx_cpuid1=`echo $ax_cv_gcc_x86_cpuid_0x00000001 | cut -d ":" -f 4` fi fi ebx_cpuid7=0 ecx_cpuid7=0 if test "$((0x$eax_cpuid0))" -ge 7 ; then 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 for x86 cpuid 0x00000007 output" >&5 $as_echo_n "checking for x86 cpuid 0x00000007 output... " >&6; } if ${ax_cv_gcc_x86_cpuid_0x00000007+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ax_cv_gcc_x86_cpuid_0x00000007=unknown else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int op = 0x00000007, level = 0x00, eax, ebx, ecx, edx; FILE *f; __asm__ __volatile__ ("xchg %%ebx, %1\n" "cpuid\n" "xchg %%ebx, %1\n" : "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx) : "a" (op), "2" (level)); f = fopen("conftest_cpuid", "w"); if (!f) return 1; fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx); fclose(f); return 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ax_cv_gcc_x86_cpuid_0x00000007=`cat conftest_cpuid`; rm -f conftest_cpuid else ax_cv_gcc_x86_cpuid_0x00000007=unknown; rm -f conftest_cpuid fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0x00000007" >&5 $as_echo "$ax_cv_gcc_x86_cpuid_0x00000007" >&6; } 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 "$ax_cv_gcc_x86_cpuid_0x00000007" != "unknown"; then ebx_cpuid7=`echo $ax_cv_gcc_x86_cpuid_0x00000007 | cut -d ":" -f 2` ecx_cpuid7=`echo $ax_cv_gcc_x86_cpuid_0x00000007 | cut -d ":" -f 3` fi fi ecx_cpuid80000001=0 edx_cpuid80000001=0 if test "$((0x$eax_cpuid80000000))" -ge "$((0x80000001))" ; then 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 for x86 cpuid 0x80000001 output" >&5 $as_echo_n "checking for x86 cpuid 0x80000001 output... " >&6; } if ${ax_cv_gcc_x86_cpuid_0x80000001+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ax_cv_gcc_x86_cpuid_0x80000001=unknown else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int op = 0x80000001, level = 0, eax, ebx, ecx, edx; FILE *f; __asm__ __volatile__ ("xchg %%ebx, %1\n" "cpuid\n" "xchg %%ebx, %1\n" : "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx) : "a" (op), "2" (level)); f = fopen("conftest_cpuid", "w"); if (!f) return 1; fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx); fclose(f); return 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ax_cv_gcc_x86_cpuid_0x80000001=`cat conftest_cpuid`; rm -f conftest_cpuid else ax_cv_gcc_x86_cpuid_0x80000001=unknown; rm -f conftest_cpuid fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_cpuid_0x80000001" >&5 $as_echo "$ax_cv_gcc_x86_cpuid_0x80000001" >&6; } 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 "$ax_cv_gcc_x86_cpuid_0x80000001" != "unknown"; then ecx_cpuid80000001=`echo $ax_cv_gcc_x86_cpuid_0x80000001 | cut -d ":" -f 3` edx_cpuid80000001=`echo $ax_cv_gcc_x86_cpuid_0x80000001 | cut -d ":" -f 4` fi fi if ${ax_cv_have_mmx_os_support_ext+:} false; then : $as_echo_n "(cached) " >&6 else ax_cv_have_mmx_os_support_ext=yes fi ax_cv_have_none_os_support_ext=yes if ${ax_cv_have_sse_os_support_ext+:} false; then : $as_echo_n "(cached) " >&6 else ax_cv_have_sse_os_support_ext=no, if test "$((0x$edx_cpuid1>>25&0x01))" = 1; then 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 "$cross_compiling" = yes; then : ax_cv_have_sse_os_support_ext=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include /* No way at ring1 to ring3 in protected mode to check the CR0 and CR4 control registers directly. Execute an SSE instruction. If it raises SIGILL then OS doesn't support SSE based instructions */ void sig_handler(int signum){ exit(1); } int main(){ signal(SIGILL, sig_handler); /* SSE instruction xorps %xmm0,%xmm0 */ __asm__ __volatile__ (".byte 0x0f, 0x57, 0xc0"); return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ax_cv_have_sse_os_support_ext=yes else ax_cv_have_sse_os_support_ext=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext 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 fi fi xgetbv_eax=0 if test "$((0x$ecx_cpuid1>>28&0x01))" = 1; then 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 for x86-AVX xgetbv 0x00000000 output" >&5 $as_echo_n "checking for x86-AVX xgetbv 0x00000000 output... " >&6; } if ${ax_cv_gcc_x86_avx_xgetbv_0x00000000+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ax_cv_gcc_x86_avx_xgetbv_0x00000000=unknown else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int op = 0x00000000, eax, edx; FILE *f; /* Opcodes for xgetbv */ __asm__ __volatile__ (".byte 0x0f, 0x01, 0xd0" : "=a" (eax), "=d" (edx) : "c" (op)); f = fopen("conftest_xgetbv", "w"); if (!f) return 1; fprintf(f, "%x:%x\n", eax, edx); fclose(f); return 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ax_cv_gcc_x86_avx_xgetbv_0x00000000=`cat conftest_xgetbv`; rm -f conftest_xgetbv else ax_cv_gcc_x86_avx_xgetbv_0x00000000=unknown; rm -f conftest_xgetbv fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_x86_avx_xgetbv_0x00000000" >&5 $as_echo "$ax_cv_gcc_x86_avx_xgetbv_0x00000000" >&6; } 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 x"$ax_cv_gcc_x86_avx_xgetbv_0x00000000" != x"unknown"; then xgetbv_eax=`echo $ax_cv_gcc_x86_avx_xgetbv_0x00000000 | cut -d ":" -f 1` fi if ${ax_cv_have_avx_os_support_ext+:} false; then : $as_echo_n "(cached) " >&6 else ax_cv_have_avx_os_support_ext=no if test "$((0x$ecx_cpuid1>>27&0x01))" = 1; then if test "$((0x$xgetbv_eax&0x6))" = 6; then ax_cv_have_avx_os_support_ext=yes fi fi fi fi if ${ax_cv_have_avx512_os_support_ext+:} false; then : $as_echo_n "(cached) " >&6 else ax_cv_have_avx512_os_support_ext=no if test "$ax_cv_have_avx_os_support_ext" = yes; then if test "$((0x$xgetbv_eax&0xe6))" = "$((0xe6))"; then ax_cv_have_avx512_os_support_ext=yes fi fi fi for ac_instr_info in "none;rdrnd;RDRND;ecx_cpuid1,30;-mrdrnd;HAVE_RDRND;CPUEXT_FLAGS" "none;bmi1;BMI1;ebx_cpuid7,3;-mbmi;HAVE_BMI1;CPUEXT_FLAGS" "none;bmi2;BMI2;ebx_cpuid7,8;-mbmi2;HAVE_BMI2;CPUEXT_FLAGS" "none;adx;ADX;ebx_cpuid7,19;-madx;HAVE_ADX;CPUEXT_FLAGS" "none;mpx;MPX;ebx_cpuid7,14;-mmpx;HAVE_MPX;CPUEXT_FLAGS" "none;prefetchwt1;PREFETCHWT1;ecx_cpuid7,0;-mprefetchwt1;HAVE_PREFETCHWT1;CPUEXT_FLAGS" "none;abm;ABM;ecx_cpuid80000001,5;-mabm;HAVE_ABM;CPUEXT_FLAGS" "mmx;mmx;MMX;edx_cpuid1,23;-mmmx;HAVE_MMX;SIMD_FLAGS" "sse;sse;SSE;edx_cpuid1,25;-msse;HAVE_SSE;SIMD_FLAGS" "sse;sse2;SSE2;edx_cpuid1,26;-msse2;HAVE_SSE2;SIMD_FLAGS" "sse;sse3;SSE3;ecx_cpuid1,1;-msse3;HAVE_SSE3;SIMD_FLAGS" "sse;ssse3;SSSE3;ecx_cpuid1,9;-mssse3;HAVE_SSSE3;SIMD_FLAGS" "sse;sse41;SSE4.1;ecx_cpuid1,19;-msse4.1;HAVE_SSE4_1;SIMD_FLAGS" "sse;sse42;SSE4.2;ecx_cpuid1,20;-msse4.2;HAVE_SSE4_2;SIMD_FLAGS" "sse;sse4a;SSE4a;ecx_cpuid80000001,6;-msse4a;HAVE_SSE4a;SIMD_FLAGS" "sse;sha;SHA;ebx_cpuid7,29;-msha;HAVE_SHA;SIMD_FLAGS" "sse;aes;AES;ecx_cpuid1,25;-maes;HAVE_AES;SIMD_FLAGS" "avx;avx;AVX;ecx_cpuid1,28;-mavx;HAVE_AVX;SIMD_FLAGS" "avx;fma3;FMA3;ecx_cpuid1,12;-mfma;HAVE_FMA3;SIMD_FLAGS" "avx;fma4;FMA4;ecx_cpuid80000001,16;-mfma4;HAVE_FMA4;SIMD_FLAGS" "avx;xop;XOP;ecx_cpuid80000001,11;-mxop;HAVE_XOP;SIMD_FLAGS" "avx;avx2;AVX2;ebx_cpuid7,5;-mavx2;HAVE_AVX2;SIMD_FLAGS" "avx512;avx512f;AVX512-F;ebx_cpuid7,16;-mavx512f;HAVE_AVX512_F;SIMD_FLAGS" "avx512;avx512cd;AVX512-CD;ebx_cpuid7,28;-mavx512cd;HAVE_AVX512_CD;SIMD_FLAGS" "avx512;avx512pf;AVX512-PF;ebx_cpuid7,26;-mavx512pf;HAVE_AVX512_PF;SIMD_FLAGS" "avx512;avx512er;AVX512-ER;ebx_cpuid7,27;-mavx512er;HAVE_AVX512_ER;SIMD_FLAGS" "avx512;avx512vl;AVX512-VL;ebx_cpuid7,31;-mavx512vl;HAVE_AVX512_VL;SIMD_FLAGS" "avx512;avx512bw;AVX512-BW;ebx_cpuid7,30;-mavx512bw;HAVE_AVX512_BW;SIMD_FLAGS" "avx512;avx512dq;AVX512-DQ;ebx_cpuid7,17;-mavx512dq;HAVE_AVX512_DQ;SIMD_FLAGS" "avx512;avx512ifma;AVX512-IFMA;ebx_cpuid7,21;-mavx512ifma;HAVE_AVX512_IFMA;SIMD_FLAGS" "avx512;avx512vbmi;AVX512-VBMI;ecx_cpuid7,1;-mavx512vbmi;HAVE_AVX512_VBMI;SIMD_FLAGS" # do ac_instr_os_support=$(eval echo \$ax_cv_have_$(echo $ac_instr_info | cut -d ";" -f 1)_os_support_ext) ac_instr_acvar=$(echo $ac_instr_info | cut -d ";" -f 2) ac_instr_shortname=$(echo $ac_instr_info | cut -d ";" -f 3) ac_instr_chk_loc=$(echo $ac_instr_info | cut -d ";" -f 4) ac_instr_chk_reg=0x$(eval echo \$$(echo $ac_instr_chk_loc | cut -d "," -f 1)) ac_instr_chk_bit=$(echo $ac_instr_chk_loc | cut -d "," -f 2) ac_instr_compiler_flags=$(echo $ac_instr_info | cut -d ";" -f 5) ac_instr_have_define=$(echo $ac_instr_info | cut -d ";" -f 6) ac_instr_flag_type=$(echo $ac_instr_info | cut -d ";" -f 7) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${ac_instr_shortname} is supported by the processor" >&5 $as_echo_n "checking whether ${ac_instr_shortname} is supported by the processor... " >&6; } if eval \${ax_cv_have_${ac_instr_acvar}_cpu_ext+:} false; then : $as_echo_n "(cached) " >&6 else eval ax_cv_have_${ac_instr_acvar}_cpu_ext=no if test "$((${ac_instr_chk_reg}>>${ac_instr_chk_bit}&0x01))" = 1 ; then eval ax_cv_have_${ac_instr_acvar}_cpu_ext=yes fi fi eval ac_res=\$ax_cv_have_${ac_instr_acvar}_cpu_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if test x"$(eval echo \$ax_cv_have_${ac_instr_acvar}_cpu_ext)" = x"yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${ac_instr_shortname} is supported by the processor and OS" >&5 $as_echo_n "checking whether ${ac_instr_shortname} is supported by the processor and OS... " >&6; } if eval \${ax_cv_have_${ac_instr_acvar}_ext+:} false; then : $as_echo_n "(cached) " >&6 else eval ax_cv_have_${ac_instr_acvar}_ext=no if test x"${ac_instr_os_support}" = x"yes"; then eval ax_cv_have_${ac_instr_acvar}_ext=yes fi fi eval ac_res=\$ax_cv_have_${ac_instr_acvar}_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if test "$(eval echo \$ax_cv_have_${ac_instr_acvar}_ext)" = yes; then as_CACHEVAR=`$as_echo "ax_cv_check_cflags__${ac_instr_compiler_flags}" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts ${ac_instr_compiler_flags}" >&5 $as_echo_n "checking whether C compiler accepts ${ac_instr_compiler_flags}... " >&6; } if eval \${$as_CACHEVAR+:} false; then : $as_echo_n "(cached) " >&6 else ax_check_save_flags=$CFLAGS CFLAGS="$CFLAGS ${ac_instr_compiler_flags}" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$as_CACHEVAR=yes" else eval "$as_CACHEVAR=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS=$ax_check_save_flags fi eval ac_res=\$$as_CACHEVAR { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then : eval ax_cv_support_${ac_instr_acvar}_ext=yes else eval ax_cv_support_${ac_instr_acvar}_ext=no fi if test x"$(eval echo \$ax_cv_support_${ac_instr_acvar}_ext)" = x"yes"; then eval ${ac_instr_flag_type}=\"\$${ac_instr_flag_type} ${ac_instr_compiler_flags}\" cat >>confdefs.h <<_ACEOF #define ${ac_instr_have_define} 1 _ACEOF else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Your processor and OS supports ${ac_instr_shortname} instructions but not your compiler, can you try another compiler?" >&5 $as_echo "$as_me: WARNING: Your processor and OS supports ${ac_instr_shortname} instructions but not your compiler, can you try another compiler?" >&2;} fi else if test x"${ac_instr_os_support}" = x"no"; then if eval \${ax_cv_support_${ac_instr_acvar}_ext+:} false; then : $as_echo_n "(cached) " >&6 else eval ax_cv_support_${ac_instr_acvar}_ext=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Your processor supports ${ac_instr_shortname}, but your OS doesn't" >&5 $as_echo "$as_me: WARNING: Your processor supports ${ac_instr_shortname}, but your OS doesn't" >&2;} fi fi else if eval \${ax_cv_have_${ac_instr_acvar}_ext+:} false; then : $as_echo_n "(cached) " >&6 else eval ax_cv_have_${ac_instr_acvar}_ext=no fi if eval \${ax_cv_support_${ac_instr_acvar}_ext+:} false; then : $as_echo_n "(cached) " >&6 else eval ax_cv_support_${ac_instr_acvar}_ext=no fi fi done ;; esac CFLAGS="$CFLAGS $CPUEXT_FLAGS $SIMD_FLAGS" CXXFLAGS="$CXXFLAGS $CPUEXT_FLAGS $SIMD_FLAGS" ;; powerpc*) ARCH_OPTION="-fno-common -faltivec";; armv1*|armv2*|armv3*|armv4*|armv5*|armv6*) ARCH_OPTION="-ffast-math";; armv7*|armv8*) ARCH_OPTION="-ffast-math -mcpu=cortex-a7 -mfloat-abi=hard -mfpu=neon-vfpv4";; *) # unknown architecture : use portable C version ARCH_OPTION="";; esac CPPFLAGS="$CPPFLAGS $ARCH_OPTION" CXXFLAGS="$CPPFLAGS $ARCH_OPTION" if test "${readline}" = "true" ; then ctlibs_base="$ctlibs_base -lreadline" if test "${ncurses}" = "true"; then ctlibs_base="$ctlibs_base -lncurses" elif test "${curses}" = "true"; then ctlibs_base="$ctlibs_base -lcurses" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking debug" >&5 $as_echo_n "checking debug... " >&6; } # Check whether --enable-debug was given. if test "${enable_debug+set}" = set; then : enableval=$enable_debug; case "${enableval}" in yes) debug="true" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } ;; no) debug="false" { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: bad value ${enableval} for --enable-debug" >&5 $as_echo "bad value ${enableval} for --enable-debug" >&6; } ;; esac else debug=false; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$debug" = "true"; then DEBUG_TRUE= DEBUG_FALSE='#' else DEBUG_TRUE='#' DEBUG_FALSE= fi if test "$datadir" != "" ; then CPPFLAGS="$CPPFLAGS -DDATADIR=\"\\\"$datadir\\\"\"" fi if test "$debug" = "true" ; then CFLAGS="$CFLAGS -g -O0 -DDEBUG" $as_echo "#define DEBUG 1" >>confdefs.h else CFLAGS="$CFLAGS -g -O4 -DNDEBUG -fomit-frame-pointer" $as_echo "#define NDEBUG 1" >>confdefs.h fi if test "${pthread}" = "true" ; then $as_echo "#define HAVE_WXTHREADS 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking sstream" >&5 $as_echo_n "checking sstream... " >&6; } if test -f /usr/include/sstream || test -f /usr/include/g++/sstream || test -f /usr/include/g++-2/sstream || test -f /usr/include/g++-3/sstream || test -f /usr/include/gcc/darwin/3.1/g++-v3/sstream ; then $as_echo "#define HAVE_SSTREAM 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi CFLAGS="$CFLAGS -Wall" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable verbose warnings" >&5 $as_echo_n "checking whether to enable verbose warnings... " >&6; } # Check whether --enable-verbose-warnings was given. if test "${enable_verbose_warnings+set}" = set; then : enableval=$enable_verbose_warnings; case "$enableval" in yes) { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } CFLAGS="$CFLAGS -W -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wwrite-strings -Waggregate-return -Wmissing-prototypes -Wstrict-prototypes -pedantic -Wredundant-decls" ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking static executables" >&5 $as_echo_n "checking static executables... " >&6; } # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; case "$enableval" in yes) { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } CFLAGS="$CFLAGS --static" ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Check whether --enable-openmp was given. if test "${enable_openmp+set}" = set; then : enableval=$enable_openmp; fi if test "x$enable_openmp" != "xno"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenMP flag of C compiler" >&5 $as_echo_n "checking for OpenMP flag of C compiler... " >&6; } if ${ax_cv_c_openmp+:} false; then : $as_echo_n "(cached) " >&6 else saveCFLAGS=$CFLAGS ax_cv_c_openmp=unknown # Flags to try: -fopenmp (gcc), -mp (SGI & PGI), # -qopenmp (icc>=15), -openmp (icc), # -xopenmp (Sun), -omp (Tru64), # -qsmp=omp (AIX), # none ax_openmp_flags="-fopenmp -openmp -qopenmp -mp -xopenmp -omp -qsmp=omp none" if test "x$OPENMP_CFLAGS" != x; then ax_openmp_flags="$OPENMP_CFLAGS $ax_openmp_flags" fi for ax_openmp_flag in $ax_openmp_flags; do case $ax_openmp_flag in none) CFLAGS=$saveC ;; *) CFLAGS="$saveCFLAGS $ax_openmp_flag" ;; esac cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include static void parallel_fill(int * data, int n) { int i; #pragma omp parallel for for (i = 0; i < n; ++i) data[i] = i; } int main() { int arr[100000]; omp_set_num_threads(2); parallel_fill(arr, 100000); return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ax_cv_c_openmp=$ax_openmp_flag; break fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext done CFLAGS=$saveCFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_c_openmp" >&5 $as_echo "$ax_cv_c_openmp" >&6; } if test "x$ax_cv_c_openmp" = "xunknown"; then : else if test "x$ax_cv_c_openmp" != "xnone"; then OPENMP_CFLAGS=$ax_cv_c_openmp fi $as_echo "#define HAVE_OPENMP 1" >>confdefs.h fi CFLAGS="$CFLAGS $OPENMP_CFLAGS" CXXFLAGS="$CXXFLAGS $OPENMP_CXXFLAGS" fi # Check whether --with-lam was given. if test "${with_lam+set}" = set; then : withval=$with_lam; if test "$withval" != "no" ; then trylamdir=$withval fi fi if test "$withval" != "no" ; then if test "$prefix" != "NONE" ; then trylamdir="$trylamdir $prefix" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LAM MPI installation" >&5 $as_echo_n "checking for LAM MPI installation... " >&6; } for testlamdir in "." $trylamdir /usr/local /usr/local/lam /usr /usr/lam /opt /opt/lam ; do if test -x "$testlamdir/bin/hcp" ; then if test "$testlamdir" != "/usr"; then LDFLAGS="$LDFLAGS -L$testlamdir/lib" CFLAGS="$CFLAGS -I$testlamdir/include" fi CFLAGS="$CFLAGS -I$testlamdir/include/mpi2c++" lamdir="$testlamdir" mpienable="true" break fi done { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lamdir" >&5 $as_echo "$lamdir" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Check whether --with-ctn was given. if test "${with_ctn+set}" = set; then : withval=$with_ctn; if test "$withval" != "no" ; then tryctndir=$withval fi fi if test "$withval" = "no" -o "$withval" = "NONE" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CTN DICOM installation" >&5 $as_echo_n "checking for CTN DICOM installation... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5 $as_echo "disabled" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CTN DICOM installation" >&5 $as_echo_n "checking for CTN DICOM installation... " >&6; } for testctndir in $tryctndir/lib /usr/local/lib /usr/local/ctn/lib /usr/lib /usr/ctn/lib /usr/lib/ctn /opt/ctn/lib ; do if test -f "$testctndir/libctn.a" ; then LDFLAGS="$LDFLAGS -L$testctndir" ctnlib="true" break fi done for testctndir in $tryctndir/include /usr/local/include /usr/local/ctn/include /usr/include /usr/include/ctn /usr/ctn/include /opt/ctn/include ; do if test -f "$testctndir/ctn_os.h" ; then CFLAGS="$CFLAGS -I$testctndir" ctninclude="true" break fi done if test "$ctnlib" = "true" -a "$ctninclude" = "true" ; then ctn="true" $as_echo "#define HAVE_CTN_DICOM 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CPU specification" >&5 $as_echo_n "checking for CPU specification... " >&6; } # Check whether --with-mcpu was given. if test "${with_mcpu+set}" = set; then : withval=$with_mcpu; fi if test "$withval" = "no" -o "$withval" = "yes" -o "$withval" = ""; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: $withval" >&5 $as_echo "$withval" >&6; } CFLAGS="$CFLAGS -mcpu=$withval" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for web access" >&5 $as_echo_n "checking for web access... " >&6; } # Check whether --with-cgibin-dir was given. if test "${with_cgibin_dir+set}" = set; then : withval=$with_cgibin_dir; cgibindir=$withval ; fi # Check whether --with-cgibin-url was given. if test "${with_cgibin_url+set}" = set; then : withval=$with_cgibin_url; cgibinurl=$withval ; fi # Check whether --with-webdata-dir was given. if test "${with_webdata_dir+set}" = set; then : withval=$with_webdata_dir; webdatadir=$withval ; fi # Check whether --with-webdata-url was given. if test "${with_webdata_url+set}" = set; then : withval=$with_webdata_url; webdataurl=$withval ; fi # Check whether --with-html-dir was given. if test "${with_html_dir+set}" = set; then : withval=$with_html_dir; html_%dir=$withval ; fi if test "x$cgibindir" != "x" -o "x$cgibinurl" != "x" ; then cgiprograms="ctsim.cgi ctsim.conf" fi if test "x$html_dir" = "x" ; then htmldata=simulate.html fi if test "x$html_dir" = "x"; then USE_HTML_TRUE= USE_HTML_FALSE='#' else USE_HTML_TRUE='#' USE_HTML_FALSE= fi if test "x$cgibindir" != "x" -o "x$cgibinurl" != "x" -o "x$webdatadir" != "x" -o "x$webdataurl" != "x" -o "x$html_dir" != "x" ; then webenabled=true { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } if test "x$cgibindir" = "x" ; then as_fn_error $? "--with-cgibin-dir not set for web access" "$LINENO" 5 elif test "x$cgibinurl" = "x" ; then as_fn_error $? "--with-cgibin-url not set for web access" "$LINENO" 5 elif test "x$webdatadir" = "x" ; then as_fn_error $? "--with-webdata-dir not set for web access" "$LINENO" 5 elif test "x$webdataurl" = "x" ; then as_fn_error $? "--with-webdata-url not set for web access" "$LINENO" 5 elif test "x$html_dir" = "x" ; then as_fn_error $? "--with-html-dir not set for web access" "$LINENO" 5 fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$lamdir" != "x"; then USE_LAM_TRUE= USE_LAM_FALSE='#' else USE_LAM_TRUE='#' USE_LAM_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5 $as_echo_n "checking for X... " >&6; } # Check whether --with-x was given. if test "${with_x+set}" = set; then : withval=$with_x; fi # $have_x is `yes', `no', `disabled', or empty when we do not yet know. if test "x$with_x" = xno; then # The user explicitly disabled X. have_x=disabled else case $x_includes,$x_libraries in #( *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #( *,NONE | NONE,*) if ${ac_cv_have_x+:} false; then : $as_echo_n "(cached) " >&6 else # One or both of the vars are not set, and there is no cached value. ac_x_includes=no ac_x_libraries=no rm -f -r conftest.dir if mkdir conftest.dir; then cd conftest.dir cat >Imakefile <<'_ACEOF' incroot: @echo incroot='${INCROOT}' usrlibdir: @echo usrlibdir='${USRLIBDIR}' libdir: @echo libdir='${LIBDIR}' _ACEOF if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. for ac_var in incroot usrlibdir libdir; do eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" done # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. for ac_extension in a so sl dylib la dll; do if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" && test -f "$ac_im_libdir/libX11.$ac_extension"; then ac_im_usrlibdir=$ac_im_libdir; break fi done # Screen out bogus values from the imake configuration. They are # bogus both because they are the default anyway, and because # using them would break gcc on systems where it needs fixed includes. case $ac_im_incroot in /usr/include) ac_x_includes= ;; *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; esac case $ac_im_usrlibdir in /usr/lib | /usr/lib64 | /lib | /lib64) ;; *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; esac fi cd .. rm -f -r conftest.dir fi # Standard set of common directories for X headers. # Check X11 before X11Rn because it is often a symlink to the current release. ac_x_header_dirs=' /usr/X11/include /usr/X11R7/include /usr/X11R6/include /usr/X11R5/include /usr/X11R4/include /usr/include/X11 /usr/include/X11R7 /usr/include/X11R6 /usr/include/X11R5 /usr/include/X11R4 /usr/local/X11/include /usr/local/X11R7/include /usr/local/X11R6/include /usr/local/X11R5/include /usr/local/X11R4/include /usr/local/include/X11 /usr/local/include/X11R7 /usr/local/include/X11R6 /usr/local/include/X11R5 /usr/local/include/X11R4 /usr/X386/include /usr/x386/include /usr/XFree86/include/X11 /usr/include /usr/local/include /usr/unsupported/include /usr/athena/include /usr/local/x11r5/include /usr/lpp/Xamples/include /usr/openwin/include /usr/openwin/share/include' if test "$ac_x_includes" = no; then # Guess where to find include files, by looking for Xlib.h. # First, try using that file with no special directory specified. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # We can compile using X headers with no special include directory. ac_x_includes= else for ac_dir in $ac_x_header_dirs; do if test -r "$ac_dir/X11/Xlib.h"; then ac_x_includes=$ac_dir break fi done fi rm -f conftest.err conftest.i conftest.$ac_ext fi # $ac_x_includes = no if test "$ac_x_libraries" = no; then # Check for the libraries. # See if we find them without any special options. # Don't add to $LIBS permanently. ac_save_LIBS=$LIBS LIBS="-lX11 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { XrmInitialize () ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : LIBS=$ac_save_LIBS # We can link X programs with no special library path. ac_x_libraries= else LIBS=$ac_save_LIBS for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` do # Don't even attempt the hair of trying to link an X program! for ac_extension in a so sl dylib la dll; do if test -r "$ac_dir/libX11.$ac_extension"; then ac_x_libraries=$ac_dir break 2 fi done done fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi # $ac_x_libraries = no case $ac_x_includes,$ac_x_libraries in #( no,* | *,no | *\'*) # Didn't find X, or a directory has "'" in its name. ac_cv_have_x="have_x=no";; #( *) # Record where we found X for the cache. ac_cv_have_x="have_x=yes\ ac_x_includes='$ac_x_includes'\ ac_x_libraries='$ac_x_libraries'" esac fi ;; #( *) have_x=yes;; esac eval "$ac_cv_have_x" fi # $with_x != no if test "$have_x" != yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5 $as_echo "$have_x" >&6; } no_x=yes else # If each of the values was on the command line, it overrides each guess. test "x$x_includes" = xNONE && x_includes=$ac_x_includes test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries # Update the cache value to reflect the command line values. ac_cv_have_x="have_x=yes\ ac_x_includes='$x_includes'\ ac_x_libraries='$x_libraries'" { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5 $as_echo "libraries $x_libraries, headers $x_includes" >&6; } fi if test "$no_x" = yes; then # Not all programs may use this symbol, but it does not hurt to define it. $as_echo "#define X_DISPLAY_MISSING 1" >>confdefs.h X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= else if test -n "$x_includes"; then X_CFLAGS="$X_CFLAGS -I$x_includes" fi # It would also be nice to do this for all -L options, not just this one. if test -n "$x_libraries"; then X_LIBS="$X_LIBS -L$x_libraries" # For Solaris; some versions of Sun CC require a space after -R and # others require no space. Words are not sufficient . . . . { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -R must be followed by a space" >&5 $as_echo_n "checking whether -R must be followed by a space... " >&6; } ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" ac_xsave_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } X_LIBS="$X_LIBS -R$x_libraries" else LIBS="$ac_xsave_LIBS -R $x_libraries" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } X_LIBS="$X_LIBS -R $x_libraries" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: neither works" >&5 $as_echo "neither works" >&6; } fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_c_werror_flag=$ac_xsave_c_werror_flag LIBS=$ac_xsave_LIBS fi # Check for system-dependent libraries X programs must link with. # Do this before checking for the system-independent R6 libraries # (-lICE), since we may need -lsocket or whatever for X linking. if test "$ISC" = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" else # Martyn Johnson says this is needed for Ultrix, if the X # libraries were built with DECnet support. And Karl Berry says # the Alpha needs dnet_stub (dnet does not exist). ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XOpenDisplay (); int main () { return XOpenDisplay (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet" >&5 $as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; } if ${ac_cv_lib_dnet_dnet_ntoa+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dnet_ntoa (); int main () { return dnet_ntoa (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dnet_dnet_ntoa=yes else ac_cv_lib_dnet_dnet_ntoa=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 $as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; } if test "x$ac_cv_lib_dnet_dnet_ntoa" = xyes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" fi if test $ac_cv_lib_dnet_dnet_ntoa = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet_stub" >&5 $as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; } if ${ac_cv_lib_dnet_stub_dnet_ntoa+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet_stub $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dnet_ntoa (); int main () { return dnet_ntoa (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dnet_stub_dnet_ntoa=yes else ac_cv_lib_dnet_stub_dnet_ntoa=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 $as_echo "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; } if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = xyes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" fi fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$ac_xsave_LIBS" # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, # to get the SysV transport functions. # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) # needs -lnsl. # The nsl library prevents programs from opening the X display # on Irix 5.2, according to T.E. Dickey. # The functions gethostbyname, getservbyname, and inet_addr are # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" if test "x$ac_cv_func_gethostbyname" = xyes; then : fi if test $ac_cv_func_gethostbyname = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 $as_echo_n "checking for gethostbyname in -lnsl... " >&6; } if ${ac_cv_lib_nsl_gethostbyname+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_nsl_gethostbyname=yes else ac_cv_lib_nsl_gethostbyname=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 $as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; } if test "x$ac_cv_lib_nsl_gethostbyname" = xyes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" fi if test $ac_cv_lib_nsl_gethostbyname = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lbsd" >&5 $as_echo_n "checking for gethostbyname in -lbsd... " >&6; } if ${ac_cv_lib_bsd_gethostbyname+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lbsd $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_bsd_gethostbyname=yes else ac_cv_lib_bsd_gethostbyname=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_gethostbyname" >&5 $as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; } if test "x$ac_cv_lib_bsd_gethostbyname" = xyes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" fi fi fi # lieder@skyler.mavd.honeywell.com says without -lsocket, # socket/setsockopt and other routines are undefined under SCO ODT # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary # on later versions), says Simon Leinen: it contains gethostby* # variants that don't use the name server (or something). -lsocket # must be given before -lnsl if both are needed. We assume that # if connect needs -lnsl, so does gethostbyname. ac_fn_c_check_func "$LINENO" "connect" "ac_cv_func_connect" if test "x$ac_cv_func_connect" = xyes; then : fi if test $ac_cv_func_connect = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5 $as_echo_n "checking for connect in -lsocket... " >&6; } if ${ac_cv_lib_socket_connect+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char connect (); int main () { return connect (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_socket_connect=yes else ac_cv_lib_socket_connect=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_connect" >&5 $as_echo "$ac_cv_lib_socket_connect" >&6; } if test "x$ac_cv_lib_socket_connect" = xyes; then : X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" fi fi # Guillermo Gomez says -lposix is necessary on A/UX. ac_fn_c_check_func "$LINENO" "remove" "ac_cv_func_remove" if test "x$ac_cv_func_remove" = xyes; then : fi if test $ac_cv_func_remove = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for remove in -lposix" >&5 $as_echo_n "checking for remove in -lposix... " >&6; } if ${ac_cv_lib_posix_remove+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lposix $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char remove (); int main () { return remove (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_posix_remove=yes else ac_cv_lib_posix_remove=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix_remove" >&5 $as_echo "$ac_cv_lib_posix_remove" >&6; } if test "x$ac_cv_lib_posix_remove" = xyes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" fi fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. ac_fn_c_check_func "$LINENO" "shmat" "ac_cv_func_shmat" if test "x$ac_cv_func_shmat" = xyes; then : fi if test $ac_cv_func_shmat = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shmat in -lipc" >&5 $as_echo_n "checking for shmat in -lipc... " >&6; } if ${ac_cv_lib_ipc_shmat+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lipc $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shmat (); int main () { return shmat (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_ipc_shmat=yes else ac_cv_lib_ipc_shmat=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ipc_shmat" >&5 $as_echo "$ac_cv_lib_ipc_shmat" >&6; } if test "x$ac_cv_lib_ipc_shmat" = xyes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" fi fi fi # Check for libraries that X11R6 Xt/Xaw programs need. ac_save_LDFLAGS=$LDFLAGS test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to # check for ICE first), but we must link in the order -lSM -lICE or # we get undefined symbols. So assume we have SM if we have ICE. # These have to be linked with before -lX11, unlike the other # libraries we check for below, so use a different variable. # John Interrante, Karl Berry { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IceConnectionNumber in -lICE" >&5 $as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; } if ${ac_cv_lib_ICE_IceConnectionNumber+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lICE $X_EXTRA_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char IceConnectionNumber (); int main () { return IceConnectionNumber (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_ICE_IceConnectionNumber=yes else ac_cv_lib_ICE_IceConnectionNumber=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 $as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; } if test "x$ac_cv_lib_ICE_IceConnectionNumber" = xyes; then : X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" fi LDFLAGS=$ac_save_LDFLAGS fi if test "x$with_x" = "xno"; then NO_X_TRUE= NO_X_FALSE='#' else NO_X_TRUE='#' NO_X_FALSE= fi my_includes="$my_includes -I../include -I.. -I/usr/local/include" LDFLAGS="$LDFLAGS -L/usr/local/lib" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5 $as_echo_n "checking for X... " >&6; } if test "$with_x" != "no" && test "$wxwin" = "true"; then $as_echo "#define HAVE_X11 1" >>confdefs.h LDFLAGS="$LDFLAGS -L../libctgraphics -L/usr/X11R6/lib -L/usr/X11R6/lib64" my_includes="$my_includes -I/usr/X11R6/include -I/usr/include/X11" ctlib_graphics="$ctlibs_base -lctgraphics" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } ctlib_graphics="$ctlib_graphics $X_BASIC_LIBS $X_TOOLKIT_LIBS" wx_cppflags="`$wxconfig --cppflags`" if test "$libgl" = "true" ; then ctlib_graphics="$ctlib_graphics -lGL -lGLU" if test "$wxwin" = "true" ; then wxdebug="" if test "$debug" = "true"; then wxdebug="--debug" fi if test "x$wx_gtk" != "x" ; then ctlib_graphics="$ctlib_graphics `$wxconfig $wxdebug --version=3.0 --libs std,gl` ${GTK_LIBS} ${GLIB_LIBS}" elif test "x$wx_mac" != "x" ; then ctlib_graphics="$ctlib_graphics `$wxconfig $wxdebug --version=3.0 --libs std,gl`" fi fi fi if test "$wxwin" = "true" ; then $as_echo "#define HAVE_SGP 1" >>confdefs.h fi else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$wxwin" = "true"; then HAVE_SGP_TRUE= HAVE_SGP_FALSE='#' else HAVE_SGP_TRUE='#' HAVE_SGP_FALSE= fi if test "$png" = "true" ; then ctlibs_tools="$ctlibs_tools -lpng" fi if test "$zlib" = "true" ; then ctlibs_tools="$ctlibs_tools -lz" fi if test "$fftw" = "true" ; then ctlibs_tools="$ctlibs_tools -lfftw3" fi if test "$ctn" = "true"; then ctlibs_tools="$ctlibs_tools -lctn" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -ldmallocxx" >&5 $as_echo_n "checking for main in -ldmallocxx... " >&6; } if ${ac_cv_lib_dmallocxx_main+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldmallocxx $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dmallocxx_main=yes else ac_cv_lib_dmallocxx_main=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dmallocxx_main" >&5 $as_echo "$ac_cv_lib_dmallocxx_main" >&6; } if test "x$ac_cv_lib_dmallocxx_main" = xyes; then : dmallocxx=true else dmallocxx=false fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for enable-dmalloc" >&5 $as_echo_n "checking for enable-dmalloc... " >&6; } # Check whether --enable-dmalloc was given. if test "${enable_dmalloc+set}" = set; then : enableval=$enable_dmalloc; case "${enableval}" in yes) usedmalloc=true { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } ;; no) usedmalloc=false { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: bad value ${enableval} for --enable-dmalloc" >&5 $as_echo "bad value ${enableval} for --enable-dmalloc" >&6; } ;; esac else usedmalloc=false; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$dmallocxx" = "true" -a "$usedmalloc" = "true" ; then ctlibs_tools="$ctlibs_tools -ldmallocxx" $as_echo "#define HAVE_DMALLOC 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using dmalloc" >&5 $as_echo "Using dmalloc" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lefence" >&5 $as_echo_n "checking for main in -lefence... " >&6; } if ${ac_cv_lib_efence_main+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lefence $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_efence_main=yes else ac_cv_lib_efence_main=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_efence_main" >&5 $as_echo "$ac_cv_lib_efence_main" >&6; } if test "x$ac_cv_lib_efence_main" = xyes; then : efence=true else efence=false fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for enable-efence" >&5 $as_echo_n "checking for enable-efence... " >&6; } # Check whether --enable-efence was given. if test "${enable_efence+set}" = set; then : enableval=$enable_efence; Use ElectricFence memory allocation else case "${enableval}" in yes) useefence=true { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } ;; no) useefence=false { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: bad value ${enableval} for --enable-efence" >&5 $as_echo "bad value ${enableval} for --enable-efence" >&6; } ;; esac fi if test "$efence" = "true" -a "$useefence" = "true" ; then ctlibs_tools="$ctlibs_tools -lefence" $as_echo "#define HAVE_EFENCE 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using efence" >&5 $as_echo "Using efence" >&6; } fi if test "$wxwin" = "true" ; then if test "$wx_gtk" = "true" -o "$wx_mac" = "true" ; then wxcflags=`$wxconfig $wxdebug --cxxflags --version=3.0` #wxlibs=`$wxconfig --libs` else wxcflags="-D__WXMSW__ -D__WIN32__ -D__GNUWIN32__" wxlibs="-lwx -lglui -ljpeg -lxpm -lzlib -ltiff" fi CFLAGS="$CFLAGS -I../include $wxcflags" ctlib_graphics="$ctlib_graphics $wxlibs" fi if test "$wxwin"="true"; then HAVE_WXWINDOWS_TRUE= HAVE_WXWINDOWS_FALSE='#' else HAVE_WXWINDOWS_TRUE='#' HAVE_WXWINDOWS_FALSE= fi LDFLAGS="$LDFLAGS -L../libctsupport -L../libctsim" ctlibs="$ctlibs_base -lctsim $ctlib_graphics -lctsupport $ctlibs_tools" if test "x$lamdir" != "x" ; then lamprograms="ctsimtext-lam" lamdefs="$CFLAGS" fi CXXFLAGS="$CFLAGS" ac_config_files="$ac_config_files Makefile libctgraphics/Makefile libctsupport/Makefile libctsim/Makefile man/Makefile cgi-bin/ctsim.cgi cgi-bin/Makefile html/simulate.html html/Makefile include/Makefile getopt/Makefile tools/sample-ctsim.sh cgi-bin/ctsim.conf tools/Makefile src/Makefile helical/Makefile helical/sample-helical.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= 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 if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi { $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 "${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 if test -z "${INCLUDED_GETOPT_LONG_TRUE}" && test -z "${INCLUDED_GETOPT_LONG_FALSE}"; then as_fn_error $? "conditional \"INCLUDED_GETOPT_LONG\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${DEBUG_TRUE}" && test -z "${DEBUG_FALSE}"; then as_fn_error $? "conditional \"DEBUG\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_HTML_TRUE}" && test -z "${USE_HTML_FALSE}"; then as_fn_error $? "conditional \"USE_HTML\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_LAM_TRUE}" && test -z "${USE_LAM_FALSE}"; then as_fn_error $? "conditional \"USE_LAM\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${NO_X_TRUE}" && test -z "${NO_X_FALSE}"; then as_fn_error $? "conditional \"NO_X\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_SGP_TRUE}" && test -z "${HAVE_SGP_FALSE}"; then as_fn_error $? "conditional \"HAVE_SGP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_WXWINDOWS_TRUE}" && test -z "${HAVE_WXWINDOWS_FALSE}"; then as_fn_error $? "conditional \"HAVE_WXWINDOWS\" 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 CTSim $as_me 6.0.0, 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 . CTSim home page: ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ CTSim config.status 6.0.0 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" ;; "libctgraphics/Makefile") CONFIG_FILES="$CONFIG_FILES libctgraphics/Makefile" ;; "libctsupport/Makefile") CONFIG_FILES="$CONFIG_FILES libctsupport/Makefile" ;; "libctsim/Makefile") CONFIG_FILES="$CONFIG_FILES libctsim/Makefile" ;; "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; "cgi-bin/ctsim.cgi") CONFIG_FILES="$CONFIG_FILES cgi-bin/ctsim.cgi" ;; "cgi-bin/Makefile") CONFIG_FILES="$CONFIG_FILES cgi-bin/Makefile" ;; "html/simulate.html") CONFIG_FILES="$CONFIG_FILES html/simulate.html" ;; "html/Makefile") CONFIG_FILES="$CONFIG_FILES html/Makefile" ;; "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; "getopt/Makefile") CONFIG_FILES="$CONFIG_FILES getopt/Makefile" ;; "tools/sample-ctsim.sh") CONFIG_FILES="$CONFIG_FILES tools/sample-ctsim.sh" ;; "cgi-bin/ctsim.conf") CONFIG_FILES="$CONFIG_FILES cgi-bin/ctsim.conf" ;; "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "helical/Makefile") CONFIG_FILES="$CONFIG_FILES helical/Makefile" ;; "helical/sample-helical.sh") CONFIG_FILES="$CONFIG_FILES helical/sample-helical.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 } ;; 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 ctsim-6.0.2/INSTALL0000644000175000017500000003420311300401174012672 0ustar kevinkevinCTSim Installation ================== Additional Libraries Recommended -------------------------------- zlib (ftp://ftp.uu.net/pub/archiving/zip/zlib) Tested with version 1.13 This library is required for libpng (see below) libpng (ftp://ftp.uu.net/graphics/png/src) Version 1.0.3 or greater is required. Version 0.89 definitely will not work. fftw (http://www.fftw.org) Fastest Fourier Transform in the West. Currently, this library is the only FFT routines used by CTSim. wxWindows (http://www.wxwindows.org) Used by CTSim (src/*) graphic front-end. Platform independent for GTK, Motif, and Windows32 API's. Requires version 2.4.0 or later. ctn (http://www.erl.wustl.edu/DICOM/ctn.html) Used by CTSim for DICOM file import and export lam (http://www.mpi.nd.edu/lam/) There is support is MPI clustering. I use this code at home for my beowulf cluster. dmalloc (http://www.dmalloc.com) This adds debugging to memory allocation routines perl (http://www.perl.org) apache (http://www.apache.org) There is support for web-driven CT Simulation. To use this, the --with-cgibin-dir=..., --with-cgibin-url=..., --with-webdata-dir=..., --with-webdata-url=..., and --with-html-dir=... must be set. readline (http://www.gnu.org) Used for provide command-line editing in ctsimtext shell CTSim Specific Configuration Help --------------------------------- --enable-verbose-warnings Enable verbose compiler warnings. --enable-debug Turn on debugging --with-lam[=PATH] Set path of LAM MPI --with-cgibin-dir=PATH Set path of CGI binaries directory --with-cgibin-url=PATH Set URL path of CGI binaries --with-webdata-dir=PATH Set path of webdata --with-webdata-url=PATH Set URL path of webdata --with-html-dir=PATH Set directory of html files --with-x use the X Window System for interactive graphics PLATFORM SPECIFIC NOTES ======================= Platforms Tested ---------------- Recent development is with GNU/Linux. I have tested compilation on FreeBSD v4.0, BSD/OS v3.0, and Solaris v8 (gcc 32-bit), and IA64 (gcc) , and Microsoft Windows 2000 (Visual C++ 6.0, cygwin, and mingw32). Visual C++ Installation ----------------------- Run make.bat from the root directory (Note, make.bat is out of date and is currently broken) CYGWIN v1.1.0 ------------- The file /usr/i686-pc-wygwin/include/cygwin/in.h has a bug. The line struct in_addr6 sin6_addr; should be deleted. getopt_long appears broken, configure.in checks for cygwin to use bundled version of getopt_long. Installation Instructions ************************* Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. This file is free documentation; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. Basic Installation ================== Briefly, the shell commands `./configure; make; make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the `README' file for instructions specific to this package. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). It can also use an optional file (typically called `config.cache' and enabled with `--cache-file=config.cache' or simply `-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If you are using the cache, and at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.ac' (or `configure.in') is used to create `configure' by a program called `autoconf'. You need `configure.ac' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. Running `configure' might take a while. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package. 4. Type `make install' to install the programs and any data files and documentation. 5. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. 6. Often, you can also type `make uninstall' to remove the installed files again. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. Run `./configure --help' for details on some of the pertinent environment variables. You can give `configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. With a non-GNU `make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or "universal" binaries--by specifying multiple `-arch' options to the compiler but only a single `-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the `lipo' tool if you have problems. Installation Names ================== By default, `make install' installs the package's commands under `/usr/local/bin', include files under `/usr/local/include', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PREFIX'. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option `--exec-prefix=PREFIX' to `configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=DIR' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Optional Features ================= Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its `' header file. The option `-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn't work, try ./configure CC="cc -nodtk" On Solaris, don't put `/usr/ucb' early in your `PATH'. This directory contains several dysfunctional programs; working variants of these programs are available in `/usr/bin'. So, if you need `/usr/ucb' in your `PATH', put it _after_ `/usr/bin'. On Haiku, software installed for all users goes in `/boot/common', not `/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== There may be some features `configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, `configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the `--build=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option `--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with `--host=TYPE'. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to `configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the `configure' command line, using `VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified `gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for `CONFIG_SHELL' due to an Autoconf bug. Until the bug is fixed you can use this workaround: CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash `configure' Invocation ====================== `configure' recognizes the following options to control how it operates. `--help' `-h' Print a summary of all of the options to `configure', and exit. `--help=short' `--help=recursive' Print a summary of the options unique to this package's `configure', and exit. The `short' variant lists options used only in the top level, while the `recursive' variant lists options also present in any nested packages. `--version' `-V' Print the version of Autoconf used to generate the `configure' script, and exit. `--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally `config.cache'. FILE defaults to `/dev/null' to disable caching. `--config-cache' `-C' Alias for `--cache-file=config.cache'. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--prefix=DIR' Use DIR as the installation prefix. *Note Installation Names:: for more details, including other options available for fine-tuning the installation locations. `--no-create' `-n' Run the configure checks, but stop before creating any output files. `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. ctsim-6.0.2/config.guess0000744000175000017500000013105411235116500014164 0ustar kevinkevin#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 # Free Software Foundation, Inc. timestamp='2009-06-10' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # 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 Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[456]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) case ${UNAME_MACHINE} in pc98) echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:[3456]*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; EM64T | authenticamd | genuineintel) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-gnu else echo ${UNAME_MACHINE}-unknown-linux-gnueabi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) echo frv-unknown-linux-gnu exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^CPU/{ s: ::g p }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo or32-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-gnu exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. # Set LC_ALL=C to ensure ld outputs messages in English. ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 LIBC=gnu # else LIBC=gnulibc1 # endif # else LIBC=gnulibc1 # endif #else #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) LIBC=gnu #else LIBC=gnuaout #endif #endif #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^LIBC/{ s: ::g p }'`" test x"${LIBC}" != x && { echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit } test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp 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` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: ctsim-6.0.2/src/0000755000175000017500000000000013254524615012446 5ustar kevinkevinctsim-6.0.2/src/graph3dview.h0000644000175000017500000001021111240454454015031 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: graph3dview.h ** Purpose: Header file for 3d graph view ** Programmer: Kevin Rosenberg ** Date Started: Jan 2001 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #if !wxUSE_GLCANVAS #error Please set wxUSE_GLCANVAS to 1 in setup.h. #endif #include "wx/timer.h" #include "wx/glcanvas.h" #include #include class Graph3dFileCanvas; class Graph3dFileView : public wxView { friend class Graph3dFileCanvas; private: DECLARE_DYNAMIC_CLASS(Graph3dFileView) DECLARE_EVENT_TABLE() wxMenu* m_pFileMenu; wxMenu *m_pViewMenu; wxStatusBar* m_pStatusBar; Graph3dFileCanvas* m_pCanvas; GLfloat m_dXRotate; GLfloat m_dYRotate; GLfloat m_dZRotate; bool m_bDoubleBuffer; bool m_bSmooth; bool m_bWireframe; bool m_bLighting; bool m_bColor; bool m_bColorScaleMinSet; bool m_bColorScaleMaxSet; enum { DISPLAYLIST_COLOR = 1, DISPLAYLIST_NO_COLOR = 2, }; double m_dGraphMin; double m_dGraphMax; double m_dColorScaleMin; double m_dColorScaleMax; wxGLContext *m_pGLContext; #if CTSIM_MDI wxDocMDIChildFrame* m_pFrame; wxDocMDIChildFrame* CreateChildFrame(wxDocument *doc, wxView *view); #else wxDocChildFrame* m_pFrame; wxDocChildFrame* CreateChildFrame(wxDocument *doc, wxView *view); #endif void Draw(); void DrawSurface(); void CreateDisplayList(); void InitMaterials(); void InitGL(); Graph3dFileCanvas *CreateCanvas (wxFrame* parent); wxWindow* getFrameForChild() #if CTSIM_MDI { return theApp->getMainFrame(); } #else { return m_pFrame; } #endif void intensityToColor (double dIntensity, GLfloat* vecColor); public: Graph3dFileView(); virtual ~Graph3dFileView(); void canvasClosed() { m_pCanvas = NULL; m_pFrame = NULL; } bool OnCreate(wxDocument *doc, long flags); void OnDraw(wxDC* dc); void OnUpdate(wxView *sender, wxObject *hint = NULL); bool OnClose (bool deleteWindow = true); void OnProperties (wxCommandEvent& event); void OnLighting (wxCommandEvent& event); void OnWireframe (wxCommandEvent& event); void OnColor (wxCommandEvent& event); void OnSmooth (wxCommandEvent& event); void OnScaleSet (wxCommandEvent& event); void OnScaleAuto (wxCommandEvent& event); void OnScaleFull (wxCommandEvent& event); void setInitialClientSize(); #if CTSIM_MDI wxDocMDIChildFrame* getFrame() { return m_pFrame; } #else wxDocChildFrame* getFrame() { return m_pFrame; } #endif Graph3dFileCanvas* getCanvas() { return m_pCanvas; } Graph3dFileDocument* GetDocument() { return dynamic_cast(wxView::GetDocument()); } }; class Graph3dFileCanvas: public wxGLCanvas { private: DECLARE_EVENT_TABLE() void Reshape (int width, int height); Graph3dFileView* m_pView; public: Graph3dFileCanvas (Graph3dFileView* view, wxWindow *parent, int* attribList, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0); virtual ~Graph3dFileCanvas(); void OnPaint(wxPaintEvent& event); virtual wxSize GetBestSize() const; void OnSize(wxSizeEvent& event); void OnEraseBackground(wxEraseEvent& event); void OnChar(wxKeyEvent& event); void OnMouseEvent(wxMouseEvent& event); void setView (Graph3dFileView* pView) { m_pView = pView; } }; ctsim-6.0.2/src/threadproj.cpp0000644000175000017500000002202111240454454015305 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: threadproj.cpp ** Purpose: Threaded projection class ** Programmer: Kevin Rosenberg ** Date Started: February 2001 ** ** This is part of the CTSim program ** Copyright (C) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "wx/wxprec.h" #ifndef WX_PRECOMP #include "wx/wx.h" #endif #if defined(HAVE_CONFIG_H) #include "config.h" #endif #include "ct.h" #include "ctsim.h" #include "docs.h" #include "views.h" #include "threadproj.h" #include "backgroundmgr.h" #include "backgroundsupr.h" #ifdef HAVE_WXTHREADS ///////////////////////////////////////////////////////////////////// // // Class ProjectorSupervisorThread -- Thread for Background Supervisor // ///////////////////////////////////////////////////////////////////// ProjectorSupervisorThread::ProjectorSupervisorThread (PhantomFileView* pProjView, int iNDet, int iNView, int iOffsetView, const char* pszGeometry, int iNSample, double dRotation, double dFocalLength, double dCenterDetectorLength, double dViewRatio, double dScanRatio, wxChar const* pszLabel) : SupervisorThread(), m_pPhantomView(pProjView), m_iNDet(iNDet), m_iNView(iNView), m_iOffsetView(iOffsetView), m_strGeometry(pszGeometry), m_iNSample(iNSample), m_dRotation(dRotation), m_dFocalLength(dFocalLength), m_dCenterDetectorLength(dCenterDetectorLength), m_dViewRatio(dViewRatio), m_dScanRatio(dScanRatio), m_strLabel(pszLabel) { } wxThread::ExitCode ProjectorSupervisorThread::Entry() { ProjectorSupervisor projSupervisor (this, m_pPhantomView, m_iNDet, m_iNView, m_iOffsetView, m_strGeometry.c_str(), m_iNSample, m_dRotation, m_dFocalLength, m_dCenterDetectorLength, m_dViewRatio, m_dScanRatio, m_strLabel); projSupervisor.start(); while (! projSupervisor.workersDone() && ! projSupervisor.fail() && ! projSupervisor.cancelled()) { Sleep(100); } if (projSupervisor.fail()) { wxString msg (_T("Error starting Projector supervisor: ")); msg += projSupervisor.getFailMessage(); msg += _T("\n"); wxCommandEvent eventLog (wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT ); eventLog.SetString( msg ); wxPostEvent( theApp->getMainFrame(), eventLog ); // send log event } if (! projSupervisor.cancelled()) projSupervisor.onDone(); projSupervisor.deleteWorkers(); return static_cast(0); } void ProjectorSupervisorThread::OnExit() { } ///////////////////////////////////////////////////////////////////// // // Class ProjectorSupervisor -- A Background Supervisor // ///////////////////////////////////////////////////////////////////// ProjectorSupervisor::ProjectorSupervisor (SupervisorThread* pThread, PhantomFileView* pPhantomView, int iNDet, int iNView, int iOffsetView, const char* pszGeometry, int iNSample, double dRotation, double dFocalLength, double dCenterDetectorLength, double dViewRatio, double dScanRatio, wxChar const* pszLabel) : BackgroundSupervisor (pThread, pPhantomView->GetFrame(), pPhantomView->GetDocument(), _T("Projecting"), iNView), m_pPhantomView(pPhantomView), m_pPhantomDoc(pPhantomView->GetDocument()), m_iNDet(iNDet), m_iNView(iNView), m_iOffsetView(iOffsetView), m_pszGeometry(pszGeometry), m_iNSample(iNSample), m_dRotation(dRotation), m_dFocalLength(dFocalLength), m_dCenterDetectorLength(dCenterDetectorLength), m_dViewRatio(dViewRatio), m_dScanRatio(dScanRatio), m_strLabel(pszLabel) { m_pScanner = new Scanner (m_pPhantomDoc->getPhantom(), m_pszGeometry, m_iNDet, m_iNView, m_iOffsetView, m_iNSample, m_dRotation, m_dFocalLength, m_dCenterDetectorLength, m_dViewRatio, m_dScanRatio); m_vecpChildProjections.reserve (getNumWorkers()); for (int iThread = 0; iThread < getNumWorkers(); iThread++) { m_vecpChildProjections[iThread] = new Projections (*m_pScanner); } } ProjectorSupervisor::~ProjectorSupervisor() { for (int i = 0; i < getNumWorkers(); i++) { delete m_vecpChildProjections[i]; m_vecpChildProjections[i] = NULL; } delete m_pScanner; } BackgroundWorkerThread* ProjectorSupervisor::createWorker (int iThread, int iStartUnit, int iNumUnits) { ProjectorWorker* pThread = new ProjectorWorker (this, iThread, iStartUnit, iNumUnits); m_vecpChildProjections[iThread]->setNView (iNumUnits); pThread->SetParameters (m_pPhantomView, m_vecpChildProjections[iThread], m_pScanner, m_iNDet, m_iNView, m_iOffsetView, m_pszGeometry, m_iNSample, m_dRotation, m_dFocalLength, m_dCenterDetectorLength, m_dViewRatio, m_dScanRatio); return pThread; } void ProjectorSupervisor::onDone() { wxCriticalSection doneSection; wxCriticalSectionLocker critsect (doneSection); Projections* pProjections = getProjections(); pProjections->setRemark (m_strLabel.mb_str(wxConvUTF8)); pProjections->setCalcTime (getTimerEnd()); wxCommandEvent eventLog (wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT ); wxString msg (m_strLabel); msg += _T("\n"); eventLog.SetString( msg ); wxPostEvent( theApp->getMainFrame(), eventLog ); // send log event wxCommandEvent newProjEvent (wxEVT_COMMAND_MENU_SELECTED, NEW_PROJECTIONFILE_EVENT); newProjEvent.SetClientData (pProjections); wxPostEvent (theApp->getMainFrame(), newProjEvent); setDone(); } Projections* ProjectorSupervisor::getProjections() { Projections* pProjections = new Projections (*m_pScanner); int iGlobalView = 0; size_t detArraySize = pProjections->nDet() * sizeof (DetectorValue); for (int iw = 0; iw < getNumWorkers(); iw++) { for (int iView = 0; iView < m_vecpChildProjections[iw]->nView(); iView++) { DetectorArray& childDetArray = m_vecpChildProjections[iw]->getDetectorArray(iView); DetectorArray& globalDetArray = pProjections->getDetectorArray(iGlobalView++); globalDetArray.setViewAngle (childDetArray.viewAngle()); DetectorValue* childDetval = childDetArray.detValues(); DetectorValue* globalDetval = globalDetArray.detValues(); memcpy (globalDetval, childDetval, detArraySize); } } return (pProjections); } ///////////////////////////////////////////////////////////////////// // // Class ProjectorWorker -- A worker thread // ///////////////////////////////////////////////////////////////////// void ProjectorWorker::SetParameters (PhantomFileView* pPhantomView, Projections* pProjections, Scanner* pScanner, int iNDet, int iView, int iOffsetView, const char* pszGeometry, int iNSample, double dRotation, double dFocalLength, double dCenterDetectorLength, double dViewRatio, double dScanRatio) { m_pScanner = pScanner; m_pPhantomView = pPhantomView; m_pProjections = pProjections; m_pszGeometry = pszGeometry; m_iNSample = iNSample; m_dFocalLength = dFocalLength; m_dCenterDetectorLength = dCenterDetectorLength; m_dViewRatio = dViewRatio; m_dScanRatio = dScanRatio; } wxThread::ExitCode ProjectorWorker::Entry () { const Phantom& rPhantom = m_pPhantomView->GetDocument()->getPhantom(); bool bFail = m_pScanner->fail(); wxString failMsg; if (bFail) { failMsg = _T("Unable to make Projector: "); failMsg += wxConvUTF8.cMB2WX(m_pScanner->failMessage().c_str()); wxCommandEvent event( wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT ); event.SetString( failMsg ); wxPostEvent( theApp->getMainFrame(), event ); } else { wxCommandEvent eventProgress (wxEVT_COMMAND_MENU_SELECTED, BackgroundSupervisor::MSG_WORKER_THREAD_UNIT_TICK); for (int iUnit = 0; iUnit < m_iNumUnits; iUnit++) { if (TestDestroy()) { #ifdef DEBUG if (theApp->getVerboseLogging()) { wxString msg; msg.Printf(_T("Worker thread: Received destroy message at work unit #%d\n"), iUnit); wxCommandEvent event( wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT ); event.SetString( msg ); wxPostEvent( theApp->getMainFrame(), event ); } #endif break; } m_pScanner->collectProjections (*m_pProjections, rPhantom, iUnit + m_iStartUnit, 1, m_iOffsetView, iUnit, Trace::TRACE_NONE); m_pSupervisor->onWorkerUnitTick(); } } if (bFail) { m_pSupervisor->onWorkerFail (m_iThread, failMsg); } else { m_pSupervisor->onWorkerDone (m_iThread); } while (! TestDestroy()) Sleep(100); return reinterpret_cast(0); } void ProjectorWorker::OnExit () { } #endif // HAVE_WXTHREADS ctsim-6.0.2/src/Makefile.am0000644000175000017500000000126413254257233014504 0ustar kevinkevinAM_CPPFLAGS=@my_includes@ @wx_cppflags@ bin_PROGRAMS=ctsim ctsim_SOURCES=ctsim.cpp docs.cpp views.cpp dialogs.cpp ctsim.h docs.h \ views.h dialogs.h dlgprojections.cpp dlgprojections.h dlgreconstruct.cpp \ dlgreconstruct.h graph3dview.cpp graph3dview.h ctsim-map.h ctsim.xpm \ splash.xpm tips.cpp tips.h threadrecon.cpp threadrecon.h backgroundmgr.cpp \ backgroundmgr.h backgroundsupr.cpp backgroundsupr.h threadproj.cpp \ threadproj.h threadraster.cpp threadraster.h dlgezplot.cpp dlgezplot.h ctsim_DEPENDENCIES=../libctgraphics/libctgraphics.a ../libctsupport/libctsupport.a ../libctsim/libctsim.a ../include/ct.h ctsim_LDADD=-L../libctgraphics -L../libctsupport -L../libctsim @ctlibs@ ctsim-6.0.2/src/views.h0000644000175000017500000003237211240454454013757 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: view.h ** Purpose: Header file for View & Canvas routines of CTSim program ** Programmer: Kevin Rosenberg ** Date Started: July 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef __VIEWSH__ #define __VIEWSH__ #include "wx/wx.h" #include "docs.h" #include "imagefile.h" #include "threadrecon.h" #if wxUSE_GLCANVAS #include "graph3dview.h" #endif class ImageFileCanvas; class ImageFileView : public wxView { private: DECLARE_DYNAMIC_CLASS(ImageFileView) wxMemoryDC m_memoryDC; wxBitmap* m_pBitmap; wxMenu* m_pMenuAnalyze; ImageFileCanvas *CreateCanvas (wxFrame* parent); #if CTSIM_MDI wxDocMDIChildFrame* m_pFrame; wxDocMDIChildFrame* CreateChildFrame(wxDocument *doc, wxView *view); #else wxDocChildFrame* m_pFrame; wxDocChildFrame* CreateChildFrame(wxDocument *doc, wxView *view); #endif ImageFileCanvas *m_pCanvas; wxMenu* m_pFileMenu; wxMenu* m_pFilterMenu; bool m_bMinSpecified; bool m_bMaxSpecified; double m_dMinPixel; double m_dMaxPixel; double m_dAutoScaleFactor; int m_iDefaultExportFormatID; wxFrame* getFrameForChild() #if CTSIM_MDI { return theApp->getMainFrame(); } #else { return m_pFrame; } #endif public: ImageFileView(); virtual ~ImageFileView(); void canvasClosed() { m_pCanvas = NULL; m_pFrame = NULL; } wxMenu* getFileMenu() { return m_pFileMenu; } bool OnCreate(wxDocument *doc, long flags); void OnDraw(wxDC* dc); void OnUpdate(wxView *sender, wxObject *hint = NULL); bool OnClose (bool deleteWindow = true); void OnEditCopy (wxCommandEvent& event); void OnEditCut (wxCommandEvent& event); void OnEditPaste (wxCommandEvent& event); void OnRevert (wxCommandEvent& event); void OnExport (wxCommandEvent& event); void OnProperties (wxCommandEvent& event); void OnCompare (wxCommandEvent& event); void OnScaleSize (wxCommandEvent& event); void OnInvertValues (wxCommandEvent& event); void OnSquare (wxCommandEvent& event); void OnSquareRoot (wxCommandEvent& event); void OnLog (wxCommandEvent& event); void OnExp (wxCommandEvent& event); void OnAdd (wxCommandEvent& event); void OnSubtract (wxCommandEvent& event); void OnMultiply (wxCommandEvent& event); void OnDivide (wxCommandEvent& event); void OnFourier (wxCommandEvent& event); void OnInverseFourier (wxCommandEvent& event); void OnShuffleNaturalToFourierOrder (wxCommandEvent& event); void OnShuffleFourierToNaturalOrder (wxCommandEvent& event); #if wxUSE_GLCANVAS void OnConvert3d (wxCommandEvent& event); #endif #ifdef HAVE_FFT void OnFFT (wxCommandEvent& event); void OnIFFT (wxCommandEvent& event); void OnFFTRows (wxCommandEvent& event); void OnIFFTRows (wxCommandEvent& event); void OnFFTCols (wxCommandEvent& event); void OnIFFTCols (wxCommandEvent& event); #endif void OnMagnitude (wxCommandEvent& event); void OnPhase (wxCommandEvent& event); void OnReal (wxCommandEvent& event); void OnImaginary (wxCommandEvent& event); void OnScaleAuto (wxCommandEvent& event); void OnScaleMinMax (wxCommandEvent& event); void OnScaleFull (wxCommandEvent& event); void OnPlotRow (wxCommandEvent& event); void OnPlotCol (wxCommandEvent& event); #if HAVE_FFT void OnPlotFFTRow (wxCommandEvent& event); void OnPlotFFTCol (wxCommandEvent& event); #endif void OnPlotHistogram (wxCommandEvent& event); void OnCompareRow (wxCommandEvent& event); void OnCompareCol (wxCommandEvent& event); #if CTSIM_MDI wxDocMDIChildFrame* getFrame() { return m_pFrame; } #else wxDocChildFrame* getFrame() { return m_pFrame; } #endif void setInitialClientSize(); wxMenu* getMenuAnalyze() { return m_pMenuAnalyze; } ImageFileDocument* GetDocument() { return dynamic_cast(wxView::GetDocument()); } DECLARE_EVENT_TABLE() }; class ImageFileCanvas: public wxScrolledWindow { private: ImageFileView* m_pView; int m_xCursor; int m_yCursor; public: ImageFileCanvas (ImageFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style); virtual ~ImageFileCanvas(); virtual void OnDraw(wxDC& dc); void OnChar(wxKeyEvent& event); void OnMouseEvent(wxMouseEvent& event); void DrawRubberBandCursor (wxDC& dc, int x, int y); bool GetCurrentCursor (int& x, int& y); virtual wxSize GetBestSize() const; void setView(ImageFileView* pView) { m_pView = pView; } DECLARE_EVENT_TABLE() }; class ProjectionFileCanvas; class ProjectionFileView : public wxView { private: DECLARE_DYNAMIC_CLASS(ProjectionFileView) wxMemoryDC m_memoryDC; wxBitmap* m_pBitmap; ProjectionFileCanvas *CreateCanvas (wxFrame* parent); #if CTSIM_MDI wxDocMDIChildFrame* m_pFrame; wxDocMDIChildFrame* CreateChildFrame(wxDocument *doc, wxView *view); #else wxDocChildFrame* m_pFrame; wxDocChildFrame* CreateChildFrame(wxDocument *doc, wxView *view); #endif ProjectionFileCanvas *m_pCanvas; wxMenu* m_pFileMenu; wxMenu* m_pReconstructMenu; wxMenu* m_pConvertMenu; int m_iDefaultNX; int m_iDefaultNY; int m_iDefaultFilter; int m_iDefaultFilterMethod; double m_dDefaultFilterParam; int m_iDefaultFilterGeneration; int m_iDefaultZeropad; int m_iDefaultInterpolation; int m_iDefaultInterpParam; int m_iDefaultBackprojector; int m_iDefaultTrace; int m_iDefaultPolarNX; int m_iDefaultPolarNY; int m_iDefaultPolarInterpolation; int m_iDefaultPolarZeropad; wxWindow* getFrameForChild() #if CTSIM_MDI { return theApp->getMainFrame(); } #else { return m_pFrame; } #endif public: ProjectionFileView(); virtual ~ProjectionFileView(); void canvasClosed() { m_pCanvas = NULL; m_pFrame = NULL; } bool OnCreate(wxDocument *doc, long flags); void OnDraw(wxDC* dc); void OnUpdate(wxView *sender, wxObject *hint = NULL); bool OnClose (bool deleteWindow = true); void OnProperties (wxCommandEvent& event); void OnReconstructFBP (wxCommandEvent& event); void OnReconstructFBPRebin (wxCommandEvent& event); void OnReconstructFourier (wxCommandEvent& event); void OnConvertRectangular (wxCommandEvent& event); void OnConvertPolar (wxCommandEvent& event); void OnConvertFFTPolar (wxCommandEvent& event); void OnPlotTThetaSampling (wxCommandEvent& event); void OnPlotHistogram (wxCommandEvent& event); void OnConvertParallel (wxCommandEvent& event); void OnArtifactReduction (wxCommandEvent& event); void doReconstructFBP (const Projections& rProj, bool bRebinToParallel); #if CTSIM_MDI wxDocMDIChildFrame* getFrame() { return m_pFrame; } #else wxDocChildFrame* getFrame() { return m_pFrame; } #endif ProjectionFileCanvas* getCanvas() { return m_pCanvas; } void setInitialClientSize(); wxMenu* getFileMenu() { return m_pFileMenu; } wxMenu* getReconstructMenu() { return m_pReconstructMenu; } ProjectionFileDocument* GetDocument() { return dynamic_cast(wxView::GetDocument()); } DECLARE_EVENT_TABLE() }; class ProjectionFileCanvas: public wxScrolledWindow { private: ProjectionFileView* m_pView; public: ProjectionFileCanvas (ProjectionFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style); virtual ~ProjectionFileCanvas() ; virtual wxSize GetBestSize() const; virtual void OnDraw(wxDC& dc); void setView(ProjectionFileView* pView) { m_pView = pView; } }; class PhantomCanvas; class PhantomFileView : public wxView { private: DECLARE_DYNAMIC_CLASS(PhantomFileView) DECLARE_EVENT_TABLE() PhantomCanvas *CreateCanvas (wxFrame* parent); #if CTSIM_MDI wxDocMDIChildFrame* m_pFrame; wxDocMDIChildFrame* CreateChildFrame(wxDocument *doc, wxView *view); #else wxDocChildFrame* m_pFrame; wxDocChildFrame* CreateChildFrame(wxDocument *doc, wxView *view); #endif PhantomCanvas *m_pCanvas; wxMenu* m_pFileMenu; int m_iDefaultNDet; int m_iDefaultNView; int m_iDefaultOffsetView; int m_iDefaultNSample; int m_iDefaultGeometry; int m_iDefaultTrace; double m_dDefaultRotation; double m_dDefaultFocalLength; double m_dDefaultCenterDetectorLength; double m_dDefaultViewRatio; double m_dDefaultScanRatio; int m_iDefaultRasterNX; int m_iDefaultRasterNY; int m_iDefaultRasterNSamples; double m_dDefaultRasterViewRatio; wxWindow* getFrameForChild() #if CTSIM_MDI { return theApp->getMainFrame(); } #else { return m_pFrame; } #endif public: PhantomFileView(); virtual ~PhantomFileView(); void canvasClosed() { m_pCanvas = NULL; m_pFrame = NULL; } bool OnCreate(wxDocument *doc, long flags); void OnUpdate(wxView *sender, wxObject *hint = NULL); bool OnClose (bool deleteWindow = true); void OnDraw(wxDC* dc); void OnProperties (wxCommandEvent& event); void OnRasterize (wxCommandEvent& event); void OnProjections (wxCommandEvent& event); PhantomFileDocument* GetDocument() { return dynamic_cast(wxView::GetDocument()); } wxMenu* getFileMenu() { return m_pFileMenu; } #if CTSIM_MDI wxDocMDIChildFrame* getFrame() { return m_pFrame; } #else wxDocChildFrame* getFrame() { return m_pFrame; } #endif }; class PhantomCanvas: public wxScrolledWindow { private: PhantomFileView* m_pView; public: PhantomCanvas (PhantomFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style); virtual ~PhantomCanvas(); virtual wxSize GetBestSize() const; void setView(PhantomFileView* pView) { m_pView = pView; } virtual void OnDraw(wxDC& dc); }; class PlotFileCanvas; class PlotFileView : public wxView { DECLARE_DYNAMIC_CLASS(PlotFileView) private: #if CTSIM_MDI wxDocMDIChildFrame* m_pFrame; wxDocMDIChildFrame* CreateChildFrame(wxDocument *doc, wxView *view); #else wxDocChildFrame* m_pFrame; wxDocChildFrame* CreateChildFrame(wxDocument *doc, wxView *view); #endif PlotFileCanvas *m_pCanvas; EZPlot* m_pEZPlot; wxMenu* m_pFileMenu; bool m_bMinSpecified; bool m_bMaxSpecified; double m_dMinPixel; double m_dMaxPixel; double m_dAutoScaleFactor; PlotFileCanvas *CreateCanvas (wxFrame* parent); wxWindow* getFrameForChild() #if CTSIM_MDI { return theApp->getMainFrame(); } #else { return m_pFrame; } #endif public: PlotFileView(); virtual ~PlotFileView(); void canvasClosed() { m_pCanvas = NULL; m_pFrame = NULL; } bool OnCreate(wxDocument *doc, long flags); void OnDraw(wxDC* dc); void OnUpdate(wxView *sender, wxObject *hint = NULL); bool OnClose (bool deleteWindow = true); void OnProperties (wxCommandEvent& event); void OnScaleMinMax (wxCommandEvent& event); void OnScaleAuto (wxCommandEvent& event); void OnScaleFull (wxCommandEvent& event); #if CTSIM_MDI wxDocMDIChildFrame* getFrame() { return m_pFrame; } #else wxDocChildFrame* getFrame() { return m_pFrame; } #endif void setInitialClientSize(); wxMenu* getFileMenu() { return m_pFileMenu; } PlotFileDocument* GetDocument() { return dynamic_cast(wxView::GetDocument()); } DECLARE_EVENT_TABLE() }; class PlotFileCanvas: public wxScrolledWindow { private: PlotFileView* m_pView; public: PlotFileCanvas (PlotFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style); virtual ~PlotFileCanvas(); virtual void OnDraw(wxDC& dc); virtual wxSize GetBestSize() const; void setView (PlotFileView* pView) { m_pView = pView; } }; class TextFileCanvas; class TextFileView: public wxView { private: DECLARE_DYNAMIC_CLASS(TextFileView) #if CTSIM_MDI wxDocMDIChildFrame* m_pFrame; wxDocMDIChildFrame* CreateChildFrame(wxDocument *doc, wxView *view); #else wxDocChildFrame* m_pFrame; wxDocChildFrame* CreateChildFrame(wxDocument *doc, wxView *view); #endif wxMenu* m_pFileMenu; TextFileCanvas *m_pCanvas; public: TextFileView() : wxView() , m_pFrame(0), m_pCanvas(0) {} ~TextFileView(); void canvasClosed() { m_pFrame = NULL; } bool OnCreate (wxDocument *doc, long flags); void OnDraw (wxDC *dc); void OnUpdate (wxView *sender, wxObject *hint = (wxObject *) NULL); bool OnClose (bool deleteWindow = TRUE); TextFileDocument* GetDocument() { return dynamic_cast(wxView::GetDocument()); } TextFileCanvas* getTextCtrl() { return m_pCanvas; } wxMenu* getFileMenu() { return m_pFileMenu; } #if CTSIM_MDI wxDocMDIChildFrame* getFrame() { return m_pFrame; } #else wxDocChildFrame* getFrame() { return m_pFrame; } #endif }; class TextFileCanvas: public wxTextCtrl { TextFileView *m_pView; public: TextFileCanvas (TextFileView *v, wxFrame *frame, const wxPoint& pos, const wxSize& size, long style); ~TextFileCanvas (); virtual wxSize GetBestSize() const; }; #endif ctsim-6.0.2/src/docs.cpp0000644000175000017500000002757711240454454014120 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: docs.cpp ** Purpose: Document routines for CTSim program ** Programmer: Kevin Rosenberg ** Date Started: July 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "wx/wxprec.h" #ifndef WX_PRECOMP #include "wx/wx.h" #endif #include "wx/txtstrm.h" #include "wx/file.h" #include "wx/thread.h" #if !wxUSE_DOC_VIEW_ARCHITECTURE #error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in setup.h! #endif #include "ct.h" #include "ctsim.h" #include "docs.h" #include "views.h" #include "threadrecon.h" // ImageFileDocument IMPLEMENT_DYNAMIC_CLASS(ImageFileDocument, wxDocument) bool ImageFileDocument::OnSaveDocument(const wxString& filename) { if (! m_pImageFile->fileWrite (filename.mb_str(wxConvUTF8))) { *theApp->getLog() << _T("Unable to write image file ") << filename << _T("\n"); return false; } if (theApp->getVerboseLogging()) *theApp->getLog() << _T("Wrote image file ") << filename << _T("\n"); Modify(false); return true; } bool ImageFileDocument::OnOpenDocument(const wxString& filename) { if (! OnSaveModified()) return false; if (! m_pImageFile->fileRead (filename.mb_str(wxConvUTF8))) { *theApp->getLog() << _T("Unable to read image file ") << filename << _T("\n"); m_bBadFileOpen = true; return false; } if (theApp->getVerboseLogging() && filename != _T("")) *theApp->getLog() << _T("Read image file ") << filename << _T("\n"); SetFilename(filename, true); Modify(false); getView()->setInitialClientSize(); this->SetFilename(filename, true); UpdateAllViews(); m_bBadFileOpen = false; return true; } bool ImageFileDocument::IsModified(void) const { return wxDocument::IsModified(); } void ImageFileDocument::Modify(bool mod) { wxDocument::Modify(mod); } ImageFileView* ImageFileDocument::getView() const { return dynamic_cast(GetFirstView()); } bool ImageFileDocument::Revert () { if (IsModified()) { wxString msg (_T("Revert to saved ")); msg += GetFilename(); msg += _T("?"); wxMessageDialog dialog (getView()->getFrame(), msg, _T("Are you sure?"), wxYES_NO | wxNO_DEFAULT); if (dialog.ShowModal() == wxID_YES) { if (theApp->getVerboseLogging()) *theApp->getLog() << _T("Reverting to saved ") << GetFilename() << _T("\n"); Modify (false); OnOpenDocument (GetFilename()); } } UpdateAllViews(); return true; } void ImageFileDocument::Activate() { #if CTSIM_MDI getView()->getFrame()->Activate(); #endif }; // BackgroundProcessingDocument - Base Class IMPLEMENT_DYNAMIC_CLASS(BackgroundProcessingDocument, wxDocument) BEGIN_EVENT_TABLE(BackgroundProcessingDocument, wxDocument) END_EVENT_TABLE() #ifdef HAVE_WXTHREADS void BackgroundProcessingDocument::addBackgroundSupervisor (BackgroundSupervisor* pSupervisor) { wxCriticalSectionLocker locker (m_criticalSection); if (pSupervisor) m_vecpBackgroundSupervisors.push_back (pSupervisor); } void BackgroundProcessingDocument::removeBackgroundSupervisor (BackgroundSupervisor* pSupervisor) { m_criticalSection.Enter(); bool bFound = false; for (BackgroundContainer::iterator i = m_vecpBackgroundSupervisors.begin(); i != m_vecpBackgroundSupervisors.end(); i++) if (*i == pSupervisor) { m_vecpBackgroundSupervisors.erase(i); bFound = true; break; } m_criticalSection.Leave(); if (! bFound) sys_error (ERR_SEVERE, "Could not find background task [OnRemoveBackground]"); } #endif void BackgroundProcessingDocument::cancelRunningTasks() { #ifdef HAVE_WXTHREADS m_criticalSection.Enter(); for (BackgroundContainer::iterator i = m_vecpBackgroundSupervisors.begin(); i != m_vecpBackgroundSupervisors.end(); i++) (*i)->onCancel(); m_criticalSection.Leave(); while (m_vecpBackgroundSupervisors.size() > 0) { ::wxYield(); ::wxMilliSleep(50); } #endif } // ProjectionFileDocument IMPLEMENT_DYNAMIC_CLASS(ProjectionFileDocument, BackgroundProcessingDocument) bool ProjectionFileDocument::OnSaveDocument(const wxString& filename) { if (! m_pProjectionFile->write (filename.mb_str(wxConvUTF8))) { *theApp->getLog() << _T("Unable to write projection file ") << filename << _T("\n"); return false; } if (theApp->getVerboseLogging()) *theApp->getLog() << _T("Wrote projection file ") << filename << _T("\n"); Modify(false); return true; } ProjectionFileDocument::~ProjectionFileDocument() { cancelRunningTasks(); delete m_pProjectionFile; } bool ProjectionFileDocument::OnOpenDocument(const wxString& filename) { if (! OnSaveModified()) return false; if (! m_pProjectionFile->read (filename.mb_str(wxConvUTF8))) { *theApp->getLog() << _T("Unable to read projection file ") << filename << _T("\n"); m_bBadFileOpen = true; return false; } m_bBadFileOpen = false; if (theApp->getVerboseLogging() && filename != _T("")) *theApp->getLog() << _T("Read projection file ") << filename << _T("\n"); SetFilename(filename, true); Modify(false); getView()->setInitialClientSize(); UpdateAllViews(); return true; } bool ProjectionFileDocument::IsModified(void) const { return wxDocument::IsModified(); } void ProjectionFileDocument::Modify(bool mod) { wxDocument::Modify(mod); } ProjectionFileView* ProjectionFileDocument::getView() const { return dynamic_cast(GetFirstView()); } void ProjectionFileDocument::Activate() { #if CTSIM_MDI getView()->getFrame()->Activate(); #endif }; // PhantomFileDocument IMPLEMENT_DYNAMIC_CLASS(PhantomFileDocument, BackgroundProcessingDocument) PhantomFileDocument::~PhantomFileDocument() { cancelRunningTasks(); } bool PhantomFileDocument::OnOpenDocument(const wxString& constFilename) { if (! OnSaveModified()) return false; wxString filename (constFilename); if (wxFile::Exists (filename)) { m_phantom.createFromFile (filename.mb_str(wxConvUTF8)); if (theApp->getVerboseLogging()) *theApp->getLog() << _T("Read phantom file ") << filename << _T("\n"); } else { filename.Replace (_T(".phm"), _T("")); m_phantom.createFromPhantom (filename.mb_str(wxConvUTF8)); } m_namePhantom = filename; SetFilename (filename, true); if (m_phantom.fail()) { *theApp->getLog() << _T("Failure creating phantom ") << filename << _T("\n"); m_bBadFileOpen = true; return false; } m_idPhantom = m_phantom.id(); Modify(false); UpdateAllViews(); m_bBadFileOpen = false; return true; } bool PhantomFileDocument::OnSaveDocument(const wxString& filename) { if (! m_phantom.fileWrite (filename.mb_str(wxConvUTF8))) { *theApp->getLog() << _T("Unable to write phantom file ") << filename << _T("\n"); return false; } if (theApp->getVerboseLogging()) *theApp->getLog() << _T("Wrote phantom file ") << filename << _T("\n"); Modify(false); return true; } bool PhantomFileDocument::IsModified(void) const { return false; } void PhantomFileDocument::Modify(bool mod) { wxDocument::Modify(mod); } PhantomFileView* PhantomFileDocument::getView() const { return dynamic_cast(GetFirstView()); } void PhantomFileDocument::Activate() { #if CTSIM_MDI getView()->getFrame()->Activate(); #endif }; // PlotFileDocument IMPLEMENT_DYNAMIC_CLASS(PlotFileDocument, wxDocument) bool PlotFileDocument::OnSaveDocument(const wxString& filename) { m_namePlot = filename.c_str(); if (! m_plot.fileWrite (filename.mb_str(wxConvUTF8))) { *theApp->getLog() << _T("Unable to write plot file ") << filename << _T("\n"); return false; } if (theApp->getVerboseLogging()) *theApp->getLog() << _T("Wrote plot file ") << filename << _T("\n"); Modify(false); return true; } bool PlotFileDocument::OnOpenDocument(const wxString& filename) { if (! OnSaveModified()) return false; if (! m_plot.fileRead (filename.mb_str(wxConvUTF8))) { *theApp->getLog() << _T("Unable to read plot file ") << filename << _T("\n"); m_bBadFileOpen = true; return false; } m_bBadFileOpen = false; if (theApp->getVerboseLogging() && filename != _T("")) *theApp->getLog() << _T("Read plot file ") << filename << _T("\n"); SetFilename (filename, true); m_namePlot = filename.c_str(); Modify (false); getView()->setInitialClientSize(); UpdateAllViews(); return true; } bool PlotFileDocument::IsModified(void) const { return wxDocument::IsModified(); } void PlotFileDocument::Modify (bool mod) { wxDocument::Modify(mod); } PlotFileView* PlotFileDocument::getView() const { return dynamic_cast(GetFirstView()); } void PlotFileDocument::Activate() { #if CTSIM_MDI getView()->getFrame()->Activate(); #endif }; ////////////////////////////////////////////////////////////////////////// // // TextFileDocument // ////////////////////////////////////////////////////////////////////////// IMPLEMENT_DYNAMIC_CLASS(TextFileDocument, wxDocument) bool TextFileDocument::OnSaveDocument(const wxString& filename) { TextFileView *view = getView(); if (! view->getTextCtrl()->SaveFile(filename)) return false; Modify(false); return true; } bool TextFileDocument::OnOpenDocument(const wxString& filename) { TextFileView *view = getView(); if (! view->getTextCtrl()->LoadFile(filename)) { m_bBadFileOpen = true; return false; } SetFilename (filename, true); Modify (false); UpdateAllViews(); m_bBadFileOpen = false; return true; } bool TextFileDocument::IsModified(void) const { return false; TextFileView *view = getView(); if (view) return (wxDocument::IsModified() || view->getTextCtrl()->IsModified()); else return wxDocument::IsModified(); } TextFileView* TextFileDocument::getView() const { return dynamic_cast(GetFirstView()); } wxTextCtrl* TextFileDocument::getTextCtrl() { return dynamic_cast(GetFirstView())->getTextCtrl(); } ////////////////////////////////////////////////////////////////////////// // // Graph3dFileDocument // ////////////////////////////////////////////////////////////////////////// #if wxUSE_GLCANVAS IMPLEMENT_DYNAMIC_CLASS(Graph3dFileDocument, wxDocument) Graph3dFileDocument::Graph3dFileDocument(void) : m_bBadFileOpen(false), m_nVertices(0), m_pVertices(0), m_pNormals(0),m_nx(0),m_ny(0),m_array(0) { } Graph3dFileDocument::~Graph3dFileDocument() { } bool Graph3dFileDocument::OnSaveDocument(const wxString& filename) { Modify(false); return true; } bool Graph3dFileDocument::OnOpenDocument(const wxString& filename) { SetFilename (filename, true); Modify (false); getView()->setInitialClientSize(); UpdateAllViews(); m_bBadFileOpen = false; return true; } bool Graph3dFileDocument::IsModified(void) const { return wxDocument::IsModified(); } Graph3dFileView* Graph3dFileDocument::getView() const { return dynamic_cast(GetFirstView()); } bool Graph3dFileDocument::createFromImageFile (const ImageFile& rImageFile) { m_nx = rImageFile.nx(); m_ny = rImageFile.ny(); m_array = rImageFile.getArray(); return true; } void Graph3dFileDocument::Activate() { #if CTSIM_MDI getView()->getFrame()->Activate(); #endif }; #endif // wxUSE_GLCANVAS ctsim-6.0.2/src/threadraster.cpp0000644000175000017500000001601011240454454015634 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: threadraster.cpp ** Purpose: Threaded rasterizer class ** Programmer: Kevin Rosenberg ** Date Started: February 2001 ** ** This is part of the CTSim program ** Copyright (C) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #if defined(HAVE_CONFIG_H) #include "config.h" #endif #include "wx/wxprec.h" #ifndef WX_PRECOMP #include "wx/wx.h" #endif #include "ct.h" #include "ctsim.h" #include "docs.h" #include "views.h" #ifdef HAVE_WXTHREADS #include "threadraster.h" #include "backgroundmgr.h" #include "backgroundsupr.h" ///////////////////////////////////////////////////////////////////// // // Class RasterizerSupervisorThread -- Thread for Background Supervisor // ///////////////////////////////////////////////////////////////////// RasterizerSupervisorThread::RasterizerSupervisorThread (PhantomFileView* pProjView, int iNX, int iNY, int iNSample, double dViewRatio, wxChar const* pszLabel) : SupervisorThread(), m_pPhantomView(pProjView), m_iNX(iNX), m_iNY(iNY), m_iNSample(iNSample), m_dViewRatio(dViewRatio), m_strLabel(pszLabel) { } wxThread::ExitCode RasterizerSupervisorThread::Entry() { RasterizerSupervisor rasterSupervisor (this, m_pPhantomView, m_iNX, m_iNY, m_iNSample, m_dViewRatio, m_strLabel); rasterSupervisor.start(); while (! rasterSupervisor.workersDone() && ! rasterSupervisor.fail() && ! rasterSupervisor.cancelled()) { Sleep(100); } if (rasterSupervisor.fail()) { wxString msg (_T("Error starting Rasterizer supervisor: ")); msg += rasterSupervisor.getFailMessage(); msg += _T("\n"); wxCommandEvent eventLog (wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT ); eventLog.SetString( msg ); wxPostEvent( theApp->getMainFrame(), eventLog ); // send log event } if (! rasterSupervisor.cancelled()) rasterSupervisor.onDone(); rasterSupervisor.deleteWorkers(); return static_cast(0); } void RasterizerSupervisorThread::OnExit() { } ///////////////////////////////////////////////////////////////////// // // Class RasterizerSupervisor -- A Background Supervisor // ///////////////////////////////////////////////////////////////////// RasterizerSupervisor::RasterizerSupervisor (SupervisorThread* pThread, PhantomFileView* pPhantomView, int iNX, int iNY, int iNSample, double dViewRatio, wxChar const* pszLabel) : BackgroundSupervisor (pThread, pPhantomView->GetFrame(), pPhantomView->GetDocument(), _T("Rasterizing"), iNX), m_pPhantomView(pPhantomView), m_pPhantomDoc(pPhantomView->GetDocument()), m_iNX(iNX), m_iNY(iNY), m_iNSample(iNSample), m_dViewRatio(dViewRatio), m_strLabel(pszLabel) { m_vecpChildImageFiles.reserve (getNumWorkers()); for (int iThread = 0; iThread < getNumWorkers(); iThread++) { m_vecpChildImageFiles[iThread] = new ImageFile; } } RasterizerSupervisor::~RasterizerSupervisor() { for (int i = 0; i < getNumWorkers(); i++) delete m_vecpChildImageFiles[i]; } BackgroundWorkerThread* RasterizerSupervisor::createWorker (int iThread, int iStartUnit, int iNumUnits) { RasterizerWorker* pThread = new RasterizerWorker (this, iThread, iStartUnit, iNumUnits); m_vecpChildImageFiles[iThread]->setArraySize (iNumUnits, m_iNY); pThread->SetParameters (m_pPhantomView, m_vecpChildImageFiles[iThread], m_iNX, m_iNY, m_iNSample, m_dViewRatio); return pThread; } void RasterizerSupervisor::onDone() { wxCriticalSection doneSection; wxCriticalSectionLocker critsect (doneSection); ImageFile* pImageFile = getImageFile(); pImageFile->labelAdd (m_strLabel.mb_str(wxConvUTF8), getTimerEnd()); wxCommandEvent eventLog (wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT ); wxString msg (m_strLabel); msg += _T("\n"); eventLog.SetString( msg ); wxPostEvent( theApp->getMainFrame(), eventLog ); // send log event wxCommandEvent newImageEvent (wxEVT_COMMAND_MENU_SELECTED, NEW_IMAGEFILE_EVENT); newImageEvent.SetClientData (pImageFile); wxPostEvent (theApp->getMainFrame(), newImageEvent); setDone(); } ImageFile* RasterizerSupervisor::getImageFile() { ImageFile* pImageFile = new ImageFile (m_iNX, m_iNY); size_t iColSize = sizeof(ImageFileValue) * m_iNY; ImageFileArray globalArray = pImageFile->getArray(); int iGlobalCol = 0; for (int iw = 0; iw < getNumWorkers(); iw++) { ImageFileArray childArray = m_vecpChildImageFiles[iw]->getArray(); for (unsigned int iCol = 0; iCol < m_vecpChildImageFiles[iw]->nx(); iCol++) { memcpy (globalArray[iGlobalCol++], childArray[iCol], iColSize); } } return (pImageFile); } ///////////////////////////////////////////////////////////////////// // // Class RasterizerWorker -- A worker thread // ///////////////////////////////////////////////////////////////////// void RasterizerWorker::SetParameters (PhantomFileView* pPhantomView, ImageFile* pImageFile, int iNX, int iNY, int iNSample, double dViewRatio) { m_pImageFile = pImageFile; m_iNX = iNX; m_iNY = iNY; m_pPhantomView = pPhantomView; m_iNSample = iNSample; m_dViewRatio = dViewRatio; } wxThread::ExitCode RasterizerWorker::Entry () { const Phantom& rPhantom = m_pPhantomView->GetDocument()->getPhantom(); wxCommandEvent eventProgress (wxEVT_COMMAND_MENU_SELECTED, BackgroundSupervisor::MSG_WORKER_THREAD_UNIT_TICK); for (int iUnit = 0; iUnit < m_iNumUnits; iUnit++) { if (TestDestroy()) { #ifdef DEBUG if (theApp->getVerboseLogging()) { wxString msg; msg.Printf(_T("Worker thread: Received destroy message at work unit #%d\n"), iUnit); wxCommandEvent event( wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT ); event.SetString( msg ); wxPostEvent( theApp->getMainFrame(), event ); } #endif break; } rPhantom.convertToImagefile (*m_pImageFile, m_iNX, m_dViewRatio, m_iNSample, Trace::TRACE_NONE, iUnit + m_iStartUnit, 1, iUnit); m_pSupervisor->onWorkerUnitTick(); } m_pSupervisor->onWorkerDone (m_iThread); while (! TestDestroy()) Sleep(100); return static_cast(0); } void RasterizerWorker::OnExit () { } #endif // HAVE_WXTHREADS ctsim-6.0.2/src/backgroundmgr.h0000644000175000017500000000702711240454454015446 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: backgroundmgr.h ** Purpose: Header file for background manager ** Programmer: Kevin Rosenberg ** Date Started: February 2001 ** ** This is part of the CTSim program ** Copyright (C) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef _BACKGROUND_MGR_H #include "wx/wxprec.h" #ifndef WX_PRECOMP #include "wx/wx.h" #endif #include "wx/minifram.h" #include "wx/gauge.h" #include "ct.h" #include "ctsim.h" #include "docs.h" #include "views.h" #include "threadrecon.h" #include #ifdef HAVE_WXTHREADS class BackgroundManagerCanvas; class BackgroundManagerTask; class BackgroundManager : public wxMiniFrame { private: DECLARE_DYNAMIC_CLASS(BackgroundManager) wxCriticalSection m_criticalSection; BackgroundManagerCanvas* m_pCanvas; int m_iNumTasks; typedef std::list TaskContainer; TaskContainer m_vecpTasks; void resizeWindow(); BackgroundManagerTask* lookupTask (BackgroundSupervisor* pSupervisor); BackgroundManagerTask* lookupTask (int iButtonID); static int s_iNextButtonID; wxSize m_sizeGauge; wxSize m_sizeLabel; wxSize m_sizeCell; wxSize m_sizeBorder; wxSize m_sizeCellSpacing; wxSize m_sizeButton; public: BackgroundManager (); ~BackgroundManager(); void OnAddTask (wxCommandEvent& event); void OnRemoveTask (wxCommandEvent& event); void OnUnitTick (wxCommandEvent& event); void OnCloseWindow(wxCloseEvent& event); void OnCancelButton(wxCommandEvent& event); DECLARE_EVENT_TABLE() }; class BackgroundSupervisor; class BackgroundManagerTask { private: BackgroundSupervisor* m_pSupervisor; const std::string m_strName; const int m_iPosition; wxGauge* m_pGauge; wxStaticText* m_pLabel; wxButton* m_pButton; const int m_iButtonID; public: BackgroundManagerTask (BackgroundSupervisor* pSupervisor, const char* const pszName, int iPos, wxGauge* pGauge, wxStaticText* pLabel, wxButton* pButton, int iButtonID) : m_pSupervisor(pSupervisor), m_strName(pszName), m_iPosition(iPos), m_pGauge(pGauge), m_pLabel(pLabel), m_pButton(pButton), m_iButtonID(iButtonID) {} int position() const {return m_iPosition;} const std::string& name() const {return m_strName;} BackgroundSupervisor* supervisor() {return m_pSupervisor;} wxGauge* gauge() {return m_pGauge;} wxStaticText* label() {return m_pLabel;} wxButton* button() {return m_pButton;} int buttonID() const {return m_iButtonID;} }; class BackgroundManagerCanvas : public wxPanel { private: DECLARE_DYNAMIC_CLASS(BackgroundManagerCanvas) BackgroundManager* m_pBackgroundManager; public: BackgroundManagerCanvas (BackgroundManager* pBkgdMgr = NULL); DECLARE_EVENT_TABLE() }; #endif // HAVE_WXTHREADS #endif // _BACKGROUNDMGR_H ctsim-6.0.2/src/threadrecon.cpp0000644000175000017500000002306211240454454015447 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: threadrecon.cpp ** Purpose: Threaded reconstruction class ** Programmer: Kevin Rosenberg ** Date Started: February 2001 ** ** This is part of the CTSim program ** Copyright (C) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "wx/wxprec.h" #ifndef WX_PRECOMP #include "wx/wx.h" #endif #include "ct.h" #include "ctsim.h" #include "docs.h" #include "views.h" #include "threadrecon.h" #include "backgroundmgr.h" #include "backgroundsupr.h" #ifdef HAVE_WXTHREADS ///////////////////////////////////////////////////////////////////// // // Class ReconstructorSupervisorThread -- Thread for Background Supervisor // ///////////////////////////////////////////////////////////////////// ReconstructorSupervisorThread::ReconstructorSupervisorThread (ProjectionFileView* pProjView, int iNX, int iNY, const char* pszFilterName, double dFilterParam, const char* pszFilterMethod, int iZeropad, const char* pszFilterGenerationName, const char* pszInterpName, int iInterpParam, const char* pszBackprojectName, wxChar const* pszLabel, ReconstructionROI* pROI, bool bRebinToParallel) : SupervisorThread(), m_pProjView(pProjView), m_iNX(iNX), m_iNY(iNY), m_strFilterName(pszFilterName), m_dFilterParam(dFilterParam), m_strFilterMethod(pszFilterMethod), m_iZeropad(iZeropad), m_strFilterGenerationName(pszFilterGenerationName), m_strInterpName(pszInterpName), m_iInterpParam(iInterpParam), m_strBackprojectName(pszBackprojectName), m_strLabel(pszLabel), m_reconROI(*pROI), m_bRebinToParallel(bRebinToParallel) { } wxThread::ExitCode ReconstructorSupervisorThread::Entry() { Projections* pProj = &m_pProjView->GetDocument()->getProjections(); if (m_bRebinToParallel) pProj = pProj->interpolateToParallel(); ReconstructorSupervisor reconSupervisor (this, pProj, m_pProjView, m_iNX, m_iNY, m_strFilterName.c_str(), m_dFilterParam, m_strFilterMethod.c_str(), m_iZeropad, m_strFilterGenerationName.c_str(), m_strInterpName.c_str(), m_iInterpParam, m_strBackprojectName.c_str(), m_strLabel, &m_reconROI); reconSupervisor.start(); while (! reconSupervisor.workersDone() && ! reconSupervisor.fail() && ! reconSupervisor.cancelled()) { Sleep(100); } if (reconSupervisor.fail()) { wxString msg (_T("Error starting reconstructor supervisor: ")); msg += reconSupervisor.getFailMessage(); msg += _T("\n"); wxCommandEvent eventLog (wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT ); eventLog.SetString( msg ); wxPostEvent( theApp->getMainFrame(), eventLog ); // send log event } if (! reconSupervisor.cancelled()) reconSupervisor.onDone(); reconSupervisor.deleteWorkers(); if (m_bRebinToParallel) delete pProj; return static_cast(0); } void ReconstructorSupervisorThread::OnExit() { } ///////////////////////////////////////////////////////////////////// // // Class ReconstructorSupervisor -- A Background Supervisor // ///////////////////////////////////////////////////////////////////// ReconstructorSupervisor::ReconstructorSupervisor (SupervisorThread* pThread, Projections* pProj, ProjectionFileView* pProjView, int iImageNX, int iImageNY, const char* pszFilterName, double dFilterParam, const char* pszFilterMethod, int iZeropad, const char* pszFilterGenerationName, const char* pszInterpName, int iInterpParam, const char* pszBackprojectName, wxChar const* pszLabel, ReconstructionROI* pROI) : BackgroundSupervisor (pThread, pProjView->GetFrame(), pProjView->GetDocument(), _T("Reconstructing"), pProjView->GetDocument()->getProjections().nView()), m_pProj(pProj), m_pProjView(pProjView), m_pProjDoc(pProjView->GetDocument()), m_iImageNX(iImageNX), m_iImageNY(iImageNY), m_pszFilterName(pszFilterName), m_dFilterParam(dFilterParam), m_pszFilterMethod(pszFilterMethod), m_iZeropad(iZeropad), m_pszFilterGenerationName(pszFilterGenerationName), m_pszInterpName(pszInterpName), m_iInterpParam(iInterpParam), m_pszBackprojectName(pszBackprojectName), m_strLabel(pszLabel), m_pReconROI(pROI) { m_vecpChildImageFile.reserve (getNumWorkers()); for (int iThread = 0; iThread < getNumWorkers(); iThread++) { m_vecpChildImageFile[iThread] = new ImageFile (m_iImageNX, m_iImageNY); } } ReconstructorSupervisor::~ReconstructorSupervisor() { for (int i = 0; i < getNumWorkers(); i++) { delete m_vecpChildImageFile[i]; m_vecpChildImageFile[i] = NULL; } } BackgroundWorkerThread* ReconstructorSupervisor::createWorker (int iThread, int iStartUnit, int iNumUnits) { ReconstructorWorker* pThread = new ReconstructorWorker (this, iThread, iStartUnit, iNumUnits); pThread->SetParameters (m_pProj, m_pProjView, m_vecpChildImageFile[iThread], m_pszFilterName, m_dFilterParam, m_pszFilterMethod, m_iZeropad, m_pszFilterGenerationName, m_pszInterpName, m_iInterpParam, m_pszBackprojectName, m_pReconROI); return pThread; } void ReconstructorSupervisor::onDone() { wxCriticalSection doneSection; wxCriticalSectionLocker critsect (doneSection); ImageFile* pImageFile = getImageFile(); pImageFile->labelAdd (m_pProj->getLabel()); pImageFile->labelAdd (m_strLabel.mb_str(wxConvUTF8), getTimerEnd()); wxCommandEvent eventLog (wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT ); wxString msg (m_strLabel); msg += _T("\n"); eventLog.SetString( msg ); wxPostEvent( theApp->getMainFrame(), eventLog ); // send log event wxCommandEvent newImageEvent (wxEVT_COMMAND_MENU_SELECTED, NEW_IMAGEFILE_EVENT); newImageEvent.SetClientData (pImageFile); wxPostEvent (theApp->getMainFrame(), newImageEvent); setDone(); } ImageFile* ReconstructorSupervisor::getImageFile() { ImageFile* pImageFile = new ImageFile (m_iImageNX, m_iImageNY); pImageFile->arrayDataClear(); ImageFileArray pArray = pImageFile->getArray(); int i; for (i = 0; i < getNumWorkers(); i++) { ImageFileArrayConst pChildArray = m_vecpChildImageFile[i]->getArray(); for (int ix = 0; ix < m_iImageNX; ix++) for (int iy = 0; iy < m_iImageNY; iy++) pArray[ix][iy] += pChildArray[ix][iy]; } return (pImageFile); } ///////////////////////////////////////////////////////////////////// // // Class ReconstructorWorker -- A worker thread // ///////////////////////////////////////////////////////////////////// void ReconstructorWorker::SetParameters (const Projections* pProj, ProjectionFileView* pProjView, ImageFile* pImageFile, const char* pszFilterName, double dFilterParam, const char* pszFilterMethod, int iZeropad, const char* pszFilterGenerationName, const char* pszInterpName, int iInterpParam, const char* pszBackprojectName, ReconstructionROI* pROI) { m_pProj = pProj; m_pProjView = pProjView; m_pImageFile = pImageFile; m_pszFilterName = pszFilterName; m_dFilterParam = dFilterParam; m_pszFilterMethod = pszFilterMethod; m_iZeropad = iZeropad; m_pszFilterGenerationName = pszFilterGenerationName; m_pszInterpName = pszInterpName; m_iInterpParam = iInterpParam; m_pszBackprojectName = pszBackprojectName; m_pReconROI = pROI; } wxThread::ExitCode ReconstructorWorker::Entry () { Reconstructor* pReconstructor = new Reconstructor (*m_pProj, *m_pImageFile, m_pszFilterName, m_dFilterParam, m_pszFilterMethod, m_iZeropad, m_pszFilterGenerationName, m_pszInterpName, m_iInterpParam, m_pszBackprojectName, Trace::TRACE_NONE, m_pReconROI, false); bool bFail = pReconstructor->fail(); wxString failMsg; if (bFail) { failMsg = _T("Unable to make reconstructor: "); failMsg += wxConvUTF8.cMB2WX(pReconstructor->failMessage().c_str()); wxCommandEvent event( wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT ); event.SetString( failMsg ); wxPostEvent( theApp->getMainFrame(), event ); } else { wxCommandEvent eventProgress (wxEVT_COMMAND_MENU_SELECTED, BackgroundSupervisor::MSG_WORKER_THREAD_UNIT_TICK); for (int iUnit = 0; iUnit < m_iNumUnits; iUnit++) { if (TestDestroy()) { #ifdef DEBUG if (theApp->getVerboseLogging()) { wxString msg; msg.Printf(_T("Worker thread: Received destroy message at work unit #%d\n"), iUnit); wxCommandEvent event( wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT ); event.SetString( msg ); wxPostEvent( theApp->getMainFrame(), event ); } #endif break; } pReconstructor->reconstructView (iUnit + m_iStartUnit, 1); m_pSupervisor->onWorkerUnitTick(); } pReconstructor->postProcessing(); } delete pReconstructor; if (bFail) { m_pSupervisor->onWorkerFail (m_iThread, failMsg); } else { m_pSupervisor->onWorkerDone (m_iThread); } while (! TestDestroy()) Sleep(100); return reinterpret_cast(0); } void ReconstructorWorker::OnExit () { } #endif // HAVE_WXTHREADS ctsim-6.0.2/src/docs.h0000644000175000017500000001660111240454454013547 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: docs.h ** Purpose: Header file for Document routines of CTSim program ** Programmer: Kevin Rosenberg ** Date Started: July 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef __DOCSH__ #define __DOCSH__ #include "wx/docview.h" // #include "views.h" #include "imagefile.h" #include "phantom.h" #include "projections.h" #include "plotfile.h" #include "threadrecon.h" class ProjectionFileView; class PhantomFileView; class ImageFileView; class PlotFileView; class TextFileView; class Graph3dFileView; class ImageFileDocument: public wxDocument { private: DECLARE_DYNAMIC_CLASS(ImageFileDocument) ImageFile* m_pImageFile; bool m_bBadFileOpen; public: virtual bool OnSaveDocument (const wxString& filename); virtual bool OnOpenDocument (const wxString& filename); virtual bool IsModified () const; virtual bool Revert (); virtual void Modify (bool mod); ImageFileDocument () : m_bBadFileOpen(false) { m_pImageFile = new ImageFile; } virtual ~ImageFileDocument () { delete m_pImageFile; } const ImageFile& getImageFile() const { return *m_pImageFile; } ImageFile& getImageFile() { return *m_pImageFile; } void setImageFile (ImageFile* pImageFile) { delete m_pImageFile; m_pImageFile = pImageFile; } ImageFileView* getView() const; bool getBadFileOpen() const { return m_bBadFileOpen; } void setBadFileOpen() { m_bBadFileOpen = true; } void Activate(); }; class BackgroundProcessingDocument : public wxDocument { private: DECLARE_DYNAMIC_CLASS(BackgroundProcessingDocument) #ifdef HAVE_WXTHREADS typedef BackgroundSupervisor BackgroundObject; typedef std::vector BackgroundContainer; BackgroundContainer m_vecpBackgroundSupervisors; wxCriticalSection m_criticalSection; #endif public: BackgroundProcessingDocument() : wxDocument() {} void cancelRunningTasks(); #ifdef HAVE_WXTHREADS void addBackgroundSupervisor (BackgroundSupervisor* pSupervisor); void removeBackgroundSupervisor (BackgroundSupervisor* pSupervisor); #endif DECLARE_EVENT_TABLE() }; class ProjectionFileDocument: public BackgroundProcessingDocument { private: DECLARE_DYNAMIC_CLASS(ProjectionFileDocument) Projections* m_pProjectionFile; bool m_bBadFileOpen; public: virtual bool OnSaveDocument (const wxString& filename); virtual bool OnOpenDocument (const wxString& filename); virtual bool IsModified () const; virtual void Modify (bool mod); ProjectionFileDocument () : m_bBadFileOpen(false) { m_pProjectionFile = new Projections; } virtual ~ProjectionFileDocument (); const Projections& getProjections () const { return *m_pProjectionFile; } Projections& getProjections () { return *m_pProjectionFile; } void setProjections (Projections* pProjections) { delete m_pProjectionFile; m_pProjectionFile = pProjections; } ProjectionFileView* getView() const; bool getBadFileOpen() const { return m_bBadFileOpen; } void setBadFileOpen() { m_bBadFileOpen = true; } void Activate(); }; class PhantomFileDocument: public BackgroundProcessingDocument { private: DECLARE_DYNAMIC_CLASS(PhantomFileDocument) Phantom m_phantom; int m_idPhantom; wxString m_namePhantom; bool m_bBadFileOpen; public: PhantomFileDocument () : m_idPhantom(Phantom::PHM_INVALID), m_bBadFileOpen(false) {} virtual ~PhantomFileDocument (); const int getPhantomID () const { return m_idPhantom; } const wxString& getPhantomName () const { return m_namePhantom; } const Phantom& getPhantom () const { return m_phantom; } Phantom& getPhantom () { return m_phantom; } virtual bool OnOpenDocument (const wxString& filename); virtual bool OnSaveDocument (const wxString& filename); virtual bool IsModified () const; virtual void Modify (bool mod); PhantomFileView* getView() const; bool getBadFileOpen() const { return m_bBadFileOpen; } void setBadFileOpen() { m_bBadFileOpen = true; } void Activate(); }; class PlotFileDocument: public wxDocument { private: DECLARE_DYNAMIC_CLASS(PlotFileDocument) PlotFile m_plot; wxString m_namePlot; bool m_bBadFileOpen; public: PlotFileDocument () : m_bBadFileOpen(false) {} virtual ~PlotFileDocument () {} const wxString& getPlotName () const { return m_namePlot; } const PlotFile& getPlotFile () const { return m_plot; } PlotFile& getPlotFile () { return m_plot; } virtual bool OnOpenDocument (const wxString& filename); virtual bool OnSaveDocument (const wxString& filename); virtual bool IsModified () const; virtual void Modify (bool mod); PlotFileView* getView() const; bool getBadFileOpen() const { return m_bBadFileOpen; } void setBadFileOpen() { m_bBadFileOpen = true; } void Activate(); }; class TextFileDocument: public wxDocument { private: DECLARE_DYNAMIC_CLASS(TextFileDocument) bool m_bBadFileOpen; public: TextFileDocument(void) : m_bBadFileOpen(false) {} virtual ~TextFileDocument(void) {} virtual bool OnSaveDocument(const wxString& filename); virtual bool OnOpenDocument(const wxString& filename); virtual bool IsModified(void) const; wxTextCtrl* getTextCtrl(); TextFileView* getView() const; bool getBadFileOpen() const { return m_bBadFileOpen; } void setBadFileOpen() { m_bBadFileOpen = true; } }; #if wxUSE_GLCANVAS #include #include typedef GLfloat glTripleFloat[3]; class Graph3dFileDocument: public wxDocument { friend class Graph3dFileView; private: DECLARE_DYNAMIC_CLASS(Graph3dFileDocument) bool m_bBadFileOpen; GLint m_nVertices; glTripleFloat* m_pVertices; glTripleFloat* m_pNormals; unsigned int m_nx; unsigned int m_ny; ImageFileArray m_array; public: Graph3dFileDocument(void); virtual ~Graph3dFileDocument(void); virtual bool OnSaveDocument (const wxString& filename); virtual bool OnOpenDocument (const wxString& filename); virtual bool IsModified () const; Graph3dFileView* getView() const; bool getBadFileOpen() const { return m_bBadFileOpen; } void setBadFileOpen() { m_bBadFileOpen = true; } bool createFromImageFile (const ImageFile& rImageFile); int nx() const { return m_nx; } int ny() const { return m_ny; } ImageFileArray getArray() { return m_array; } ImageFileArrayConst getArray() const { return m_array; } void Activate(); }; #endif // wxUSE_GLCANVAS #endif ctsim-6.0.2/src/views.cpp0000644000175000017500000037470513254504420014317 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: views.cpp ** Purpose: View & Canvas routines for CTSim program ** Programmer: Kevin Rosenberg ** Date Started: July 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "wx/wxprec.h" #ifndef WX_PRECOMP #include "wx/wx.h" #endif #if !wxUSE_DOC_VIEW_ARCHITECTURE #error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in setup.h! #endif #include "wx/image.h" #include "wx/progdlg.h" #include "wx/clipbrd.h" #include "ct.h" #include "ctsim.h" #include "docs.h" #include "views.h" #include "dialogs.h" #include "dlgprojections.h" #include "dlgreconstruct.h" #include "backprojectors.h" #include "reconstruct.h" #include "timer.h" #include "threadproj.h" #include "threadrecon.h" #include "threadraster.h" #if defined(MSVC) || HAVE_SSTREAM #include #else #include #endif // Used to reduce calls to progress bar update function const short int ITER_PER_UPDATE = 10; // ImageFileCanvas BEGIN_EVENT_TABLE(ImageFileCanvas, wxScrolledWindow) EVT_MOUSE_EVENTS(ImageFileCanvas::OnMouseEvent) EVT_CHAR(ImageFileCanvas::OnChar) END_EVENT_TABLE() ImageFileCanvas::ImageFileCanvas (ImageFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style) : wxScrolledWindow(frame, -1, pos, size, style), m_pView(v), m_xCursor(-1), m_yCursor(-1) { } ImageFileCanvas::~ImageFileCanvas() {} void ImageFileCanvas::OnDraw(wxDC& dc) { if (m_pView) m_pView->OnDraw(& dc); } void ImageFileCanvas::DrawRubberBandCursor (wxDC& dc, int x, int y) { const ImageFile& rIF = m_pView->GetDocument()->getImageFile(); int nx = rIF.nx(); int ny = rIF.ny(); int yPt = ny - y - 1; dc.SetLogicalFunction (wxINVERT); dc.SetPen (*wxGREEN_PEN); dc.DrawLine (0, yPt, nx, yPt); dc.DrawLine (x, 0, x, ny); dc.SetLogicalFunction (wxCOPY); } bool ImageFileCanvas::GetCurrentCursor (int& x, int& y) { x = m_xCursor; y = m_yCursor; if (m_xCursor >= 0 && m_yCursor >= 0) return true; else return false; } void ImageFileCanvas::OnMouseEvent(wxMouseEvent& event) { if (! m_pView) return; wxClientDC dc(this); PrepareDC(dc); wxPoint pt(event.GetLogicalPosition(dc)); const ImageFileDocument* pIFDoc = m_pView->GetDocument(); if (! pIFDoc) return; const ImageFile& rIF = pIFDoc->getImageFile(); ImageFileArrayConst v = rIF.getArray(); int nx = rIF.nx(); int ny = rIF.ny(); const int yPt = ny - 1 - pt.y; if (event.RightIsDown()) { if (pt.x >= 0 && pt.x < nx && pt.y >= 0 && pt.y < ny) { wxString os; os << _T("Image value (") << pt.x << _T(",") << yPt << _T(") = ") << v[pt.x][yPt]; if (rIF.isComplex()) { double dImag = rIF.getImaginaryArray()[pt.x][yPt]; if (dImag < 0) os << _T(" - ") << -dImag; else os << _T(" + ") << dImag; os << _T("i\n"); } else os << _T("\n"); *theApp->getLog() << os; } else *theApp->getLog() << _T("Mouse out of image range (") << pt.x << _T(",") << yPt << _T(")\n"); } else if (event.LeftIsDown() || event.LeftUp() || event.RightUp()) { if (pt.x >= 0 && pt.x < nx && pt.y >= 0 && pt.y < ny) { if (m_xCursor >= 0 && m_yCursor >= 0) { DrawRubberBandCursor (dc, m_xCursor, m_yCursor); } DrawRubberBandCursor (dc, pt.x, yPt); m_xCursor = pt.x; m_yCursor = yPt; wxMenu* pMenu = m_pView->getMenuAnalyze(); if (pMenu && ! pMenu->IsEnabled(IFMENU_PLOT_ROW)) { pMenu->Enable (IFMENU_PLOT_ROW, true); pMenu->Enable (IFMENU_PLOT_COL, true); pMenu->Enable (IFMENU_COMPARE_ROW, true); pMenu->Enable (IFMENU_COMPARE_COL, true); pMenu->Enable (IFMENU_PLOT_FFT_ROW, true); pMenu->Enable (IFMENU_PLOT_FFT_COL, true); } } else *theApp->getLog() << _T("Mouse out of image range (") << pt.x << _T(",") << yPt << _T(")\n"); } if (event.LeftUp()) { wxString os; os << _T("Selected column ") << pt.x << _T(" , row ") << yPt << _T("\n"); *theApp->getLog() << os; } } void ImageFileCanvas::OnChar (wxKeyEvent& event) { if (event.GetKeyCode() == WXK_ESCAPE) { m_xCursor = -1; m_yCursor = -1; if (m_pView) m_pView->OnUpdate (NULL); } else event.Skip(); } wxSize ImageFileCanvas::GetBestSize() const { const int iMinX = 50; const int iMinY = 20; wxSize bestSize (iMinX,iMinY); if (m_pView) { const ImageFile& rIF = m_pView->GetDocument()->getImageFile(); bestSize.Set (rIF.nx(), rIF.ny()); } if (bestSize.x > 800) bestSize.x = 800; if (bestSize.y > 800) bestSize.y = 800; if (bestSize.y < iMinY) bestSize.y = iMinY; if (bestSize.x < iMinX) bestSize.x = iMinX; return bestSize; } // ImageFileView IMPLEMENT_DYNAMIC_CLASS(ImageFileView, wxView) BEGIN_EVENT_TABLE(ImageFileView, wxView) EVT_MENU(IFMENU_FILE_EXPORT, ImageFileView::OnExport) EVT_MENU(IFMENU_FILE_PROPERTIES, ImageFileView::OnProperties) EVT_MENU(IFMENU_EDIT_COPY, ImageFileView::OnEditCopy) EVT_MENU(IFMENU_EDIT_CUT, ImageFileView::OnEditCut) EVT_MENU(IFMENU_EDIT_PASTE, ImageFileView::OnEditPaste) EVT_MENU(IFMENU_VIEW_SCALE_MINMAX, ImageFileView::OnScaleMinMax) EVT_MENU(IFMENU_VIEW_SCALE_AUTO, ImageFileView::OnScaleAuto) EVT_MENU(IFMENU_VIEW_SCALE_FULL, ImageFileView::OnScaleFull) EVT_MENU(IFMENU_COMPARE_IMAGES, ImageFileView::OnCompare) EVT_MENU(IFMENU_COMPARE_ROW, ImageFileView::OnCompareRow) EVT_MENU(IFMENU_COMPARE_COL, ImageFileView::OnCompareCol) EVT_MENU(IFMENU_FILTER_INVERTVALUES, ImageFileView::OnInvertValues) EVT_MENU(IFMENU_FILTER_SQUARE, ImageFileView::OnSquare) EVT_MENU(IFMENU_FILTER_SQRT, ImageFileView::OnSquareRoot) EVT_MENU(IFMENU_FILTER_LOG, ImageFileView::OnLog) EVT_MENU(IFMENU_FILTER_EXP, ImageFileView::OnExp) EVT_MENU(IFMENU_FILTER_FOURIER, ImageFileView::OnFourier) EVT_MENU(IFMENU_FILTER_INVERSE_FOURIER, ImageFileView::OnInverseFourier) EVT_MENU(IFMENU_FILTER_SHUFFLEFOURIERTONATURALORDER, ImageFileView::OnShuffleFourierToNaturalOrder) EVT_MENU(IFMENU_FILTER_SHUFFLENATURALTOFOURIERORDER, ImageFileView::OnShuffleNaturalToFourierOrder) EVT_MENU(IFMENU_IMAGE_ADD, ImageFileView::OnAdd) EVT_MENU(IFMENU_IMAGE_SUBTRACT, ImageFileView::OnSubtract) EVT_MENU(IFMENU_IMAGE_MULTIPLY, ImageFileView::OnMultiply) EVT_MENU(IFMENU_IMAGE_DIVIDE, ImageFileView::OnDivide) EVT_MENU(IFMENU_IMAGE_SCALESIZE, ImageFileView::OnScaleSize) #if wxUSE_GLCANVAS EVT_MENU(IFMENU_IMAGE_CONVERT3D, ImageFileView::OnConvert3d) #endif #ifdef HAVE_FFT EVT_MENU(IFMENU_FILTER_FFT, ImageFileView::OnFFT) EVT_MENU(IFMENU_FILTER_IFFT, ImageFileView::OnIFFT) EVT_MENU(IFMENU_FILTER_FFT_ROWS, ImageFileView::OnFFTRows) EVT_MENU(IFMENU_FILTER_IFFT_ROWS, ImageFileView::OnIFFTRows) EVT_MENU(IFMENU_FILTER_FFT_COLS, ImageFileView::OnFFTCols) EVT_MENU(IFMENU_FILTER_IFFT_COLS, ImageFileView::OnIFFTCols) #endif EVT_MENU(IFMENU_FILTER_MAGNITUDE, ImageFileView::OnMagnitude) EVT_MENU(IFMENU_FILTER_PHASE, ImageFileView::OnPhase) EVT_MENU(IFMENU_FILTER_REAL, ImageFileView::OnReal) EVT_MENU(IFMENU_FILTER_IMAGINARY, ImageFileView::OnImaginary) EVT_MENU(IFMENU_PLOT_ROW, ImageFileView::OnPlotRow) EVT_MENU(IFMENU_PLOT_COL, ImageFileView::OnPlotCol) #ifdef HAVE_FFT EVT_MENU(IFMENU_PLOT_FFT_ROW, ImageFileView::OnPlotFFTRow) EVT_MENU(IFMENU_PLOT_FFT_COL, ImageFileView::OnPlotFFTCol) #endif EVT_MENU(IFMENU_PLOT_HISTOGRAM, ImageFileView::OnPlotHistogram) END_EVENT_TABLE() ImageFileView::ImageFileView() : wxView(), m_pBitmap(0), m_pFrame(0), m_pCanvas(0), m_pFileMenu(0), m_pFilterMenu(0), m_bMinSpecified(false), m_bMaxSpecified(false), m_iDefaultExportFormatID(ImageFile::EXPORT_FORMAT_PNG) {} ImageFileView::~ImageFileView() { GetDocumentManager()->FileHistoryRemoveMenu (m_pFileMenu); GetDocumentManager()->ActivateView(this, FALSE); } void ImageFileView::OnProperties (wxCommandEvent& event) { const ImageFile& rIF = GetDocument()->getImageFile(); if (rIF.nx() == 0 || rIF.ny() == 0) *theApp->getLog() << _T("Properties: empty imagefile\n"); else { const std::string rFilename (m_pFrame->GetTitle().mb_str(wxConvUTF8)); std::ostringstream os; double min, max, mean, mode, median, stddev; rIF.statistics (rIF.getArray(), min, max, mean, mode, median, stddev); os << "Filename: " << rFilename << "\n"; os << "Size: (" << rIF.nx() << "," << rIF.ny() << ")\n"; os << "Data type: "; if (rIF.isComplex()) os << "Complex\n"; else os << "Real\n"; os << "Minimum: "< 0) { rIF.printLabelsBrief (os); } *theApp->getLog() << _T(">>>>\n") << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("<<<<\n"); wxMessageDialog dialogMsg (getFrameForChild(), wxConvUTF8.cMB2WX(os.str().c_str()), _T("Imagefile Properties"), wxOK | wxICON_INFORMATION); dialogMsg.ShowModal(); } GetDocument()->Activate(); } void ImageFileView::OnScaleAuto (wxCommandEvent& event) { const ImageFile& rIF = GetDocument()->getImageFile(); double min, max, mean, mode, median, stddev; rIF.statistics(min, max, mean, mode, median, stddev); DialogAutoScaleParameters dialogAutoScale (getFrameForChild(), mean, mode, median, stddev, m_dAutoScaleFactor); int iRetVal = dialogAutoScale.ShowModal(); if (iRetVal == wxID_OK) { m_bMinSpecified = true; m_bMaxSpecified = true; double dMin, dMax; if (dialogAutoScale.getMinMax (&dMin, &dMax)) { m_dMinPixel = dMin; m_dMaxPixel = dMax; m_dAutoScaleFactor = dialogAutoScale.getAutoScaleFactor(); OnUpdate(this, NULL); GetDocument()->UpdateAllViews (this); } } GetDocument()->Activate(); } void ImageFileView::OnScaleMinMax (wxCommandEvent& event) { const ImageFile& rIF = GetDocument()->getImageFile(); double min, max; if (! m_bMinSpecified || ! m_bMaxSpecified) rIF.getMinMax (min, max); if (m_bMinSpecified) min = m_dMinPixel; if (m_bMaxSpecified) max = m_dMaxPixel; DialogGetMinMax dialogMinMax (getFrameForChild(), _T("Set Image Minimum & Maximum"), min, max); int retVal = dialogMinMax.ShowModal(); if (retVal == wxID_OK) { m_bMinSpecified = true; m_bMaxSpecified = true; m_dMinPixel = dialogMinMax.getMinimum(); m_dMaxPixel = dialogMinMax.getMaximum(); OnUpdate(this, NULL); GetDocument()->UpdateAllViews (this); } GetDocument()->Activate(); } void ImageFileView::OnScaleFull (wxCommandEvent& event) { if (m_bMinSpecified || m_bMaxSpecified) { m_bMinSpecified = false; m_bMaxSpecified = false; OnUpdate(this, NULL); GetDocument()->UpdateAllViews (this); } GetDocument()->Activate(); } void ImageFileView::OnCompare (wxCommandEvent& event) { std::vector vecIF; theApp->getCompatibleImages (GetDocument(), vecIF); if (vecIF.size() == 0) { wxMessageBox(_T("There are no compatible image files open for comparision"), _T("No comparison images")); } else { DialogGetComparisonImage dialogGetCompare(getFrameForChild(), _T("Get Comparison Image"), vecIF, true); if (dialogGetCompare.ShowModal() == wxID_OK) { const ImageFile& rIF = GetDocument()->getImageFile(); ImageFileDocument* pCompareDoc = dialogGetCompare.getImageFileDocument(); const ImageFile& rCompareIF = pCompareDoc->getImageFile(); std::ostringstream os; double min, max, mean, mode, median, stddev; rIF.statistics (min, max, mean, mode, median, stddev); os << m_pFrame->GetTitle().mb_str(wxConvUTF8) << ": minimum=" << min << ", maximum=" << max << ", mean=" << mean << ", mode=" << mode << ", median=" << median << ", stddev=" << stddev << "\n"; rCompareIF.statistics (min, max, mean, mode, median, stddev); os << dynamic_cast(pCompareDoc->GetFirstView()->GetFrame())->GetTitle().mb_str(wxConvUTF8) << ": minimum=" << min << ", maximum=" << max << ", mean=" << mean << ", mode=" << mode << ", median=" << median << ", stddev=" << stddev << "\n"; double d, r, e; rIF.comparativeStatistics (rCompareIF, d, r, e); os << "Comparative Statistics: d=" << d << ", r=" << r << ", e=" << e << "\n"; *theApp->getLog() << _T(">>>>\n") << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("<<<<\n"); if (dialogGetCompare.getMakeDifferenceImage()) { ImageFile* pDifferenceImage = new ImageFile; pDifferenceImage->setArraySize (rIF.nx(), rIF.ny()); if (! rIF.subtractImages (rCompareIF, *pDifferenceImage)) { *theApp->getLog() << _T("Unable to subtract images\n"); delete pDifferenceImage; return; } ImageFileDocument* pDifferenceDoc = theApp->newImageDoc(); if (! pDifferenceDoc) { sys_error (ERR_SEVERE, "Unable to create image file"); return; } pDifferenceDoc->setImageFile (pDifferenceImage); wxString s = m_pFrame->GetTitle() + _T(": "); pDifferenceImage->labelsCopy (rIF, s.mb_str(wxConvUTF8)); s = dynamic_cast(pCompareDoc->GetFirstView()->GetFrame())->GetTitle() + _T(": "); pDifferenceImage->labelsCopy (rCompareIF, s.mb_str(wxConvUTF8)); std::ostringstream osLabel; osLabel << "Compare image " << dynamic_cast(GetDocument()->GetFirstView()->GetFrame())->GetTitle().c_str() << " and " << dynamic_cast(pCompareDoc->GetFirstView()->GetFrame())->GetTitle().c_str() << ": " << os.str().c_str(); pDifferenceImage->labelAdd (os.str().c_str()); if (theApp->getAskDeleteNewDocs()) pDifferenceDoc->Modify (true); OnUpdate(this, NULL); pDifferenceDoc->UpdateAllViews(this); pDifferenceDoc->getView()->setInitialClientSize(); pDifferenceDoc->Activate(); } wxMessageBox(wxConvUTF8.cMB2WX(os.str().c_str()), _T("Image Comparison")); } } } void ImageFileView::OnInvertValues (wxCommandEvent& event) { ImageFile& rIF = GetDocument()->getImageFile(); rIF.invertPixelValues (rIF); rIF.labelAdd ("Invert Pixel Values"); if (theApp->getAskDeleteNewDocs()) GetDocument()->Modify (true); OnUpdate(this, NULL); GetDocument()->UpdateAllViews (this); GetDocument()->Activate(); } void ImageFileView::OnSquare (wxCommandEvent& event) { ImageFile& rIF = GetDocument()->getImageFile(); rIF.square (rIF); rIF.labelAdd ("Square Pixel Values"); if (theApp->getAskDeleteNewDocs()) GetDocument()->Modify (true); OnUpdate(this, NULL); GetDocument()->UpdateAllViews (this); GetDocument()->Activate(); } void ImageFileView::OnSquareRoot (wxCommandEvent& event) { ImageFile& rIF = GetDocument()->getImageFile(); rIF.sqrt (rIF); rIF.labelAdd ("Square-root Pixel Values"); if (theApp->getAskDeleteNewDocs()) GetDocument()->Modify (true); OnUpdate(this, NULL); GetDocument()->UpdateAllViews (this); GetDocument()->Activate(); } void ImageFileView::OnLog (wxCommandEvent& event) { ImageFile& rIF = GetDocument()->getImageFile(); rIF.log (rIF); rIF.labelAdd ("Logrithm base-e Pixel Values"); if (theApp->getAskDeleteNewDocs()) GetDocument()->Modify (true); OnUpdate(this, NULL); GetDocument()->UpdateAllViews (this); GetDocument()->Activate(); } void ImageFileView::OnExp (wxCommandEvent& event) { ImageFile& rIF = GetDocument()->getImageFile(); rIF.exp (rIF); rIF.labelAdd ("Exponent base-e Pixel Values"); if (theApp->getAskDeleteNewDocs()) GetDocument()->Modify (true); OnUpdate(this, NULL); GetDocument()->UpdateAllViews (this); GetDocument()->Activate(); } void ImageFileView::OnAdd (wxCommandEvent& event) { std::vector vecIF; theApp->getCompatibleImages (GetDocument(), vecIF); if (vecIF.size() == 0) { wxMessageBox (_T("There are no compatible image files open for comparision"), _T("No comparison images")); } else { DialogGetComparisonImage dialogGetCompare (getFrameForChild(), _T("Get Image to Add"), vecIF, false); if (dialogGetCompare.ShowModal() == wxID_OK) { ImageFile& rIF = GetDocument()->getImageFile(); ImageFileDocument* pRHSDoc = dialogGetCompare.getImageFileDocument(); const ImageFile& rRHSIF = pRHSDoc->getImageFile(); ImageFileDocument* pNewDoc = theApp->newImageDoc(); if (! pNewDoc) { sys_error (ERR_SEVERE, "Unable to create image file"); return; } ImageFile& newImage = pNewDoc->getImageFile(); newImage.setArraySize (rIF.nx(), rIF.ny()); rIF.addImages (rRHSIF, newImage); std::ostringstream os; os << "Add image " << dynamic_cast(GetDocument()->GetFirstView()->GetFrame())->GetTitle().c_str() << " and " << dynamic_cast(pRHSDoc->GetFirstView()->GetFrame())->GetTitle().c_str(); wxString s = dynamic_cast(GetDocument()->GetFirstView()->GetFrame())->GetTitle() + _T(": "); newImage.labelsCopy (rIF, s.mb_str(wxConvUTF8)); s = dynamic_cast(pRHSDoc->GetFirstView()->GetFrame())->GetTitle() + _T(": "); newImage.labelsCopy (rRHSIF, s.mb_str(wxConvUTF8)); newImage.labelAdd (os.str().c_str()); *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n"); if (theApp->getAskDeleteNewDocs()) pNewDoc->Modify (true); OnUpdate(this, NULL); pNewDoc->UpdateAllViews (this); pNewDoc->getView()->setInitialClientSize(); pNewDoc->Activate(); } } } void ImageFileView::OnSubtract (wxCommandEvent& event) { std::vector vecIF; theApp->getCompatibleImages (GetDocument(), vecIF); if (vecIF.size() == 0) { wxMessageBox (_T("There are no compatible image files open for comparision"), _T("No comparison images")); } else { DialogGetComparisonImage dialogGetCompare (getFrameForChild(), _T("Get Image to Subtract"), vecIF, false); if (dialogGetCompare.ShowModal() == wxID_OK) { ImageFile& rIF = GetDocument()->getImageFile(); ImageFileDocument* pRHSDoc = dialogGetCompare.getImageFileDocument(); const ImageFile& rRHSIF = pRHSDoc->getImageFile(); ImageFileDocument* pNewDoc = theApp->newImageDoc(); if (! pNewDoc) { sys_error (ERR_SEVERE, "Unable to create image file"); return; } ImageFile& newImage = pNewDoc->getImageFile(); newImage.setArraySize (rIF.nx(), rIF.ny()); rIF.subtractImages (rRHSIF, newImage); std::ostringstream os; os << "Subtract image " << dynamic_cast(GetDocument()->GetFirstView()->GetFrame())->GetTitle().c_str() << " and " << dynamic_cast(pRHSDoc->GetFirstView()->GetFrame())->GetTitle().c_str(); wxString s = dynamic_cast(GetDocument()->GetFirstView()->GetFrame())->GetTitle() + _T(": "); newImage.labelsCopy (rIF, s.mb_str(wxConvUTF8)); s = dynamic_cast(pRHSDoc->GetFirstView()->GetFrame())->GetTitle() + _T(": "); newImage.labelsCopy (rRHSIF, s.mb_str(wxConvUTF8)); newImage.labelAdd (os.str().c_str()); *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n"); if (theApp->getAskDeleteNewDocs()) pNewDoc->Modify (true); OnUpdate(this, NULL); pNewDoc->UpdateAllViews (this); pNewDoc->getView()->setInitialClientSize(); pNewDoc->Activate(); } } } void ImageFileView::OnMultiply (wxCommandEvent& event) { std::vector vecIF; theApp->getCompatibleImages (GetDocument(), vecIF); if (vecIF.size() == 0) { wxMessageBox (_T("There are no compatible image files open for comparision"), _T("No comparison images")); } else { DialogGetComparisonImage dialogGetCompare (getFrameForChild(), _T("Get Image to Multiply"), vecIF, false); if (dialogGetCompare.ShowModal() == wxID_OK) { ImageFile& rIF = GetDocument()->getImageFile(); ImageFileDocument* pRHSDoc = dialogGetCompare.getImageFileDocument(); const ImageFile& rRHSIF = pRHSDoc->getImageFile(); ImageFileDocument* pNewDoc = theApp->newImageDoc(); if (! pNewDoc) { sys_error (ERR_SEVERE, "Unable to create image file"); return; } ImageFile& newImage = pNewDoc->getImageFile(); newImage.setArraySize (rIF.nx(), rIF.ny()); rIF.multiplyImages (rRHSIF, newImage); std::ostringstream os; os << "Multiply image " << dynamic_cast(GetDocument()->GetFirstView()->GetFrame())->GetTitle().c_str() << " and " << dynamic_cast(pRHSDoc->GetFirstView()->GetFrame())->GetTitle().c_str(); wxString s = dynamic_cast(GetDocument()->GetFirstView()->GetFrame())->GetTitle() + _T(": "); newImage.labelsCopy (rIF, s.mb_str(wxConvUTF8)); s = dynamic_cast(pRHSDoc->GetFirstView()->GetFrame())->GetTitle() + _T(": "); newImage.labelsCopy (rRHSIF, s.mb_str(wxConvUTF8)); newImage.labelAdd (os.str().c_str()); *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n"); if (theApp->getAskDeleteNewDocs()) pNewDoc->Modify (true); OnUpdate(this, NULL); pNewDoc->UpdateAllViews (this); pNewDoc->getView()->setInitialClientSize(); pNewDoc->Activate(); } } } void ImageFileView::OnDivide (wxCommandEvent& event) { std::vector vecIF; theApp->getCompatibleImages (GetDocument(), vecIF); if (vecIF.size() == 0) { wxMessageBox (_T("There are no compatible image files open for comparision"), _T("No comparison images")); } else { DialogGetComparisonImage dialogGetCompare (getFrameForChild(), _T("Get Image to Divide"), vecIF, false); if (dialogGetCompare.ShowModal() == wxID_OK) { ImageFile& rIF = GetDocument()->getImageFile(); ImageFileDocument* pRHSDoc = dialogGetCompare.getImageFileDocument(); const ImageFile& rRHSIF = pRHSDoc->getImageFile(); ImageFileDocument* pNewDoc = theApp->newImageDoc(); if (! pNewDoc) { sys_error (ERR_SEVERE, "Unable to create image file"); return; } ImageFile& newImage = pNewDoc->getImageFile(); newImage.setArraySize (rIF.nx(), rIF.ny()); rIF.divideImages (rRHSIF, newImage); std::ostringstream os; os << "Divide image " << dynamic_cast(GetDocument()->GetFirstView()->GetFrame())->GetTitle().c_str() << " by " << dynamic_cast(pRHSDoc->GetFirstView()->GetFrame())->GetTitle().c_str(); wxString s = dynamic_cast(GetDocument()->GetFirstView()->GetFrame())->GetTitle() + _T(": "); newImage.labelsCopy (rIF, s.mb_str(wxConvUTF8)); s = dynamic_cast(pRHSDoc->GetFirstView()->GetFrame())->GetTitle() + _T(": "); newImage.labelsCopy (rRHSIF, s.mb_str(wxConvUTF8)); newImage.labelAdd (os.str().c_str()); *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n"); if (theApp->getAskDeleteNewDocs()) pNewDoc->Modify (true); OnUpdate(this, NULL); pNewDoc->UpdateAllViews (this); pNewDoc->getView()->setInitialClientSize(); pNewDoc->Activate(); } } } #ifdef HAVE_FFT void ImageFileView::OnFFT (wxCommandEvent& event) { ImageFile& rIF = GetDocument()->getImageFile(); rIF.fft (rIF); rIF.labelAdd ("FFT Image"); m_bMinSpecified = false; m_bMaxSpecified = false; if (theApp->getAskDeleteNewDocs()) GetDocument()->Modify (true); OnUpdate(this, NULL); GetDocument()->UpdateAllViews (this); GetDocument()->Activate(); } void ImageFileView::OnIFFT (wxCommandEvent& event) { ImageFile& rIF = GetDocument()->getImageFile(); rIF.ifft (rIF); rIF.labelAdd ("IFFT Image"); m_bMinSpecified = false; m_bMaxSpecified = false; if (theApp->getAskDeleteNewDocs()) GetDocument()->Modify (true); OnUpdate(this, NULL); GetDocument()->UpdateAllViews (this); GetDocument()->Activate(); } void ImageFileView::OnFFTRows (wxCommandEvent& event) { ImageFile& rIF = GetDocument()->getImageFile(); rIF.fftRows (rIF); rIF.labelAdd ("FFT Rows"); m_bMinSpecified = false; m_bMaxSpecified = false; if (theApp->getAskDeleteNewDocs()) GetDocument()->Modify (true); OnUpdate(this, NULL); GetDocument()->UpdateAllViews (this); GetDocument()->Activate(); } void ImageFileView::OnIFFTRows (wxCommandEvent& event) { ImageFile& rIF = GetDocument()->getImageFile(); rIF.ifftRows (rIF); rIF.labelAdd ("IFFT Rows"); m_bMinSpecified = false; m_bMaxSpecified = false; if (theApp->getAskDeleteNewDocs()) GetDocument()->Modify (true); OnUpdate(this, NULL); GetDocument()->UpdateAllViews (this); GetDocument()->Activate(); } void ImageFileView::OnFFTCols (wxCommandEvent& event) { ImageFile& rIF = GetDocument()->getImageFile(); rIF.fftCols (rIF); rIF.labelAdd ("FFT Columns"); m_bMinSpecified = false; m_bMaxSpecified = false; if (theApp->getAskDeleteNewDocs()) GetDocument()->Modify (true); OnUpdate(this, NULL); GetDocument()->UpdateAllViews (this); GetDocument()->Activate(); } void ImageFileView::OnIFFTCols (wxCommandEvent& event) { ImageFile& rIF = GetDocument()->getImageFile(); rIF.ifftCols (rIF); rIF.labelAdd ("IFFT Columns"); m_bMinSpecified = false; m_bMaxSpecified = false; if (theApp->getAskDeleteNewDocs()) GetDocument()->Modify (true); OnUpdate(this, NULL); GetDocument()->UpdateAllViews (this); GetDocument()->Activate(); } #endif void ImageFileView::OnFourier (wxCommandEvent& event) { ImageFile& rIF = GetDocument()->getImageFile(); wxProgressDialog dlgProgress (_T("Fourier"), _T("Fourier Progress"), 1, getFrameForChild(), wxPD_APP_MODAL); rIF.fourier (rIF); rIF.labelAdd ("Fourier Image"); m_bMinSpecified = false; m_bMaxSpecified = false; if (theApp->getAskDeleteNewDocs()) GetDocument()->Modify (true); OnUpdate(this, NULL); GetDocument()->UpdateAllViews (this); GetDocument()->Activate(); } void ImageFileView::OnInverseFourier (wxCommandEvent& event) { ImageFile& rIF = GetDocument()->getImageFile(); wxProgressDialog dlgProgress (_T("Inverse Fourier"), _T("Inverse Fourier Progress"), 1, getFrameForChild(), wxPD_APP_MODAL); rIF.inverseFourier (rIF); rIF.labelAdd ("Inverse Fourier Image"); m_bMinSpecified = false; m_bMaxSpecified = false; if (theApp->getAskDeleteNewDocs()) GetDocument()->Modify (true); OnUpdate(this, NULL); GetDocument()->UpdateAllViews (this); GetDocument()->Activate(); } void ImageFileView::OnShuffleNaturalToFourierOrder (wxCommandEvent& event) { ImageFile& rIF = GetDocument()->getImageFile(); Fourier::shuffleNaturalToFourierOrder (rIF); rIF.labelAdd ("Shuffle Natural To Fourier Order"); m_bMinSpecified = false; m_bMaxSpecified = false; if (theApp->getAskDeleteNewDocs()) GetDocument()->Modify (true); OnUpdate(this, NULL); GetDocument()->UpdateAllViews (this); GetDocument()->Activate(); } void ImageFileView::OnShuffleFourierToNaturalOrder (wxCommandEvent& event) { ImageFile& rIF = GetDocument()->getImageFile(); Fourier::shuffleFourierToNaturalOrder (rIF); rIF.labelAdd ("Shuffle Fourier To Natural Order"); m_bMinSpecified = false; m_bMaxSpecified = false; if (theApp->getAskDeleteNewDocs()) GetDocument()->Modify (true); OnUpdate(this, NULL); GetDocument()->UpdateAllViews (this); GetDocument()->Activate(); } void ImageFileView::OnMagnitude (wxCommandEvent& event) { ImageFile& rIF = GetDocument()->getImageFile(); rIF.magnitude (rIF); rIF.labelAdd ("Magnitude"); m_bMinSpecified = false; m_bMaxSpecified = false; if (theApp->getAskDeleteNewDocs()) GetDocument()->Modify (true); OnUpdate(this, NULL); GetDocument()->UpdateAllViews (this); GetDocument()->Activate(); } void ImageFileView::OnPhase (wxCommandEvent& event) { ImageFile& rIF = GetDocument()->getImageFile(); if (rIF.isComplex()) { rIF.phase (rIF); rIF.labelAdd ("Phase of complex-image"); m_bMinSpecified = false; m_bMaxSpecified = false; if (theApp->getAskDeleteNewDocs()) GetDocument()->Modify (true); OnUpdate(this, NULL); GetDocument()->UpdateAllViews (this); } GetDocument()->Activate(); } void ImageFileView::OnReal (wxCommandEvent& event) { ImageFile& rIF = GetDocument()->getImageFile(); if (rIF.isComplex()) { rIF.real (rIF); rIF.labelAdd ("Real component of complex-image"); m_bMinSpecified = false; m_bMaxSpecified = false; if (theApp->getAskDeleteNewDocs()) GetDocument()->Modify (true); OnUpdate(this, NULL); GetDocument()->UpdateAllViews (this); } GetDocument()->Activate(); } void ImageFileView::OnImaginary (wxCommandEvent& event) { ImageFile& rIF = GetDocument()->getImageFile(); if (rIF.isComplex()) { rIF.imaginary (rIF); rIF.labelAdd ("Imaginary component of complex-image"); m_bMinSpecified = false; m_bMaxSpecified = false; if (theApp->getAskDeleteNewDocs()) GetDocument()->Modify (true); OnUpdate(this, NULL); GetDocument()->UpdateAllViews (this); } GetDocument()->Activate(); } ImageFileCanvas* ImageFileView::CreateCanvas (wxFrame* parent) { ImageFileCanvas* pCanvas = new ImageFileCanvas (this, parent, wxPoint(-1,-1), wxSize(-1,-1), 0); pCanvas->SetBackgroundColour(*wxWHITE); pCanvas->ClearBackground(); return pCanvas; } #if CTSIM_MDI wxDocMDIChildFrame* #else wxDocChildFrame* #endif ImageFileView::CreateChildFrame(wxDocument *doc, wxView *view) { #if CTSIM_MDI wxDocMDIChildFrame* subframe = new wxDocMDIChildFrame (doc, view, theApp->getMainFrame(), -1, _T("ImageFile Frame"), wxPoint(-1,-1), wxSize(-1,-1), wxDEFAULT_FRAME_STYLE); #else wxDocChildFrame* subframe = new wxDocChildFrame (doc, view, theApp->getMainFrame(), -1, _T("ImageFile Frame"), wxPoint(-1,-1), wxSize(-1,-1), wxDEFAULT_FRAME_STYLE); #endif theApp->setIconForFrame (subframe); m_pFileMenu = new wxMenu; m_pFileMenu->Append(MAINMENU_FILE_CREATE_PHANTOM, _T("Cr&eate Phantom...\tCtrl-P")); m_pFileMenu->Append(MAINMENU_FILE_CREATE_FILTER, _T("Create &Filter...\tCtrl-F")); m_pFileMenu->Append(wxID_OPEN, _T("&Open...\tCtrl-O")); m_pFileMenu->Append(wxID_SAVE, _T("&Save\tCtrl-S")); m_pFileMenu->Append(wxID_SAVEAS, _T("Save &As...")); m_pFileMenu->Append(wxID_CLOSE, _T("&Close\tCtrl-W")); m_pFileMenu->Append(wxID_REVERT, _T("Re&vert")); m_pFileMenu->AppendSeparator(); m_pFileMenu->Append(IFMENU_FILE_PROPERTIES, _T("P&roperties\tCtrl-I")); m_pFileMenu->Append(IFMENU_FILE_EXPORT, _T("Expor&t...")); m_pFileMenu->AppendSeparator(); m_pFileMenu->Append(wxID_PRINT, _T("&Print...")); m_pFileMenu->Append(wxID_PRINT_SETUP, _T("Print &Setup...")); m_pFileMenu->Append(wxID_PREVIEW, _T("Print Preview")); m_pFileMenu->AppendSeparator(); m_pFileMenu->Append(MAINMENU_IMPORT, _T("&Import...\tCtrl-M")); m_pFileMenu->AppendSeparator(); m_pFileMenu->Append (MAINMENU_FILE_PREFERENCES, _T("Prefere&nces...")); m_pFileMenu->Append(MAINMENU_FILE_EXIT, _T("E&xit")); GetDocumentManager()->FileHistoryAddFilesToMenu(m_pFileMenu); GetDocumentManager()->FileHistoryUseMenu(m_pFileMenu); wxMenu* edit_menu = new wxMenu; edit_menu->Append(IFMENU_EDIT_COPY, _T("Copy\tCtrl-C")); edit_menu->Append(IFMENU_EDIT_CUT, _T("Cut\tCtrl-X")); edit_menu->Append(IFMENU_EDIT_PASTE, _T("Paste\tCtrl-V")); wxMenu *view_menu = new wxMenu; view_menu->Append(IFMENU_VIEW_SCALE_MINMAX, _T("Display Scale S&et...\tCtrl-E")); view_menu->Append(IFMENU_VIEW_SCALE_AUTO, _T("Display Scale &Auto...\tCtrl-A")); view_menu->Append(IFMENU_VIEW_SCALE_FULL, _T("Display F&ull Scale\tCtrl-U")); m_pFilterMenu = new wxMenu; m_pFilterMenu->Append (IFMENU_FILTER_INVERTVALUES, _T("In&vert Values")); m_pFilterMenu->Append (IFMENU_FILTER_SQUARE, _T("&Square")); m_pFilterMenu->Append (IFMENU_FILTER_SQRT, _T("Square &Root")); m_pFilterMenu->Append (IFMENU_FILTER_LOG, _T("&Log")); m_pFilterMenu->Append (IFMENU_FILTER_EXP, _T("E&xp")); m_pFilterMenu->AppendSeparator(); #ifdef HAVE_FFT m_pFilterMenu->Append (IFMENU_FILTER_FFT, _T("2-D &FFT\tCtrl-2")); m_pFilterMenu->Append (IFMENU_FILTER_IFFT, _T("2-D &IFFT\tAlt-2")); m_pFilterMenu->Append (IFMENU_FILTER_FFT_ROWS, _T("FFT Rows")); m_pFilterMenu->Append (IFMENU_FILTER_IFFT_ROWS, _T("IFFT Rows")); m_pFilterMenu->Append (IFMENU_FILTER_FFT_COLS, _T("FFT Columns")); m_pFilterMenu->Append (IFMENU_FILTER_IFFT_COLS, _T("IFFT Columns")); m_pFilterMenu->Append (IFMENU_FILTER_FOURIER, _T("2-D F&ourier")); m_pFilterMenu->Append (IFMENU_FILTER_INVERSE_FOURIER, _T("2-D Inverse Fo&urier")); #else m_pFilterMenu->Append (IFMENU_FILTER_FOURIER, _T("&Fourier")); m_pFilterMenu->Append (IFMENU_FILTER_INVERSE_FOURIER, _T("&Inverse Fourier")); #endif m_pFilterMenu->Append (IFMENU_FILTER_SHUFFLEFOURIERTONATURALORDER, _T("Shuffl&e Fourier to Natural Order")); m_pFilterMenu->Append (IFMENU_FILTER_SHUFFLENATURALTOFOURIERORDER, _T("Shuffle &Natural to Fourier Order")); m_pFilterMenu->AppendSeparator(); m_pFilterMenu->Append (IFMENU_FILTER_MAGNITUDE, _T("&Magnitude")); m_pFilterMenu->Append (IFMENU_FILTER_PHASE, _T("&Phase")); m_pFilterMenu->Append (IFMENU_FILTER_REAL, _T("Re&al")); m_pFilterMenu->Append (IFMENU_FILTER_IMAGINARY, _T("Ima&ginary")); wxMenu* image_menu = new wxMenu; image_menu->Append (IFMENU_IMAGE_ADD, _T("&Add...")); image_menu->Append (IFMENU_IMAGE_SUBTRACT, _T("&Subtract...")); image_menu->Append (IFMENU_IMAGE_MULTIPLY, _T("&Multiply...")); image_menu->Append (IFMENU_IMAGE_DIVIDE, _T("&Divide...")); image_menu->AppendSeparator(); image_menu->Append (IFMENU_IMAGE_SCALESIZE, _T("S&cale Size...")); #if wxUSE_GLCANVAS image_menu->Append (IFMENU_IMAGE_CONVERT3D, _T("Convert &3-D\tCtrl-3")); #endif m_pMenuAnalyze = new wxMenu; m_pMenuAnalyze->Append (IFMENU_PLOT_ROW, _T("Plot &Row")); m_pMenuAnalyze->Append (IFMENU_PLOT_COL, _T("Plot &Column")); m_pMenuAnalyze->Append (IFMENU_PLOT_HISTOGRAM, _T("Plot &Histogram")); m_pMenuAnalyze->AppendSeparator(); m_pMenuAnalyze->Append (IFMENU_PLOT_FFT_ROW, _T("P&lot FFT Row")); m_pMenuAnalyze->Append (IFMENU_PLOT_FFT_COL, _T("Plo&t FFT Column")); m_pMenuAnalyze->AppendSeparator(); m_pMenuAnalyze->Append (IFMENU_COMPARE_IMAGES, _T("Compare &Images...")); m_pMenuAnalyze->Append (IFMENU_COMPARE_ROW, _T("Compare Ro&w")); m_pMenuAnalyze->Append (IFMENU_COMPARE_COL, _T("Compare Colu&mn")); m_pMenuAnalyze->Enable (IFMENU_PLOT_ROW, false); m_pMenuAnalyze->Enable (IFMENU_PLOT_COL, false); m_pMenuAnalyze->Enable (IFMENU_COMPARE_ROW, false); m_pMenuAnalyze->Enable (IFMENU_COMPARE_COL, false); m_pMenuAnalyze->Enable (IFMENU_PLOT_FFT_ROW, false); m_pMenuAnalyze->Enable (IFMENU_PLOT_FFT_COL, false); wxMenu *help_menu = new wxMenu; help_menu->Append(MAINMENU_HELP_CONTENTS, _T("&Contents\tF1")); help_menu->Append (MAINMENU_HELP_TIPS, _T("&Tips")); help_menu->Append (IDH_QUICKSTART, _T("&Quick Start")); help_menu->Append(MAINMENU_HELP_ABOUT, _T("&About")); wxMenuBar *menu_bar = new wxMenuBar; menu_bar->Append(m_pFileMenu, _T("&File")); menu_bar->Append(edit_menu, _T("&Edit")); menu_bar->Append(view_menu, _T("&View")); menu_bar->Append(image_menu, _T("&Image")); menu_bar->Append(m_pFilterMenu, _T("Fi<er")); menu_bar->Append(m_pMenuAnalyze, _T("&Analyze")); menu_bar->Append(help_menu, _T("&Help")); subframe->SetMenuBar(menu_bar); subframe->Centre(wxBOTH); wxAcceleratorEntry accelEntries[10]; accelEntries[0].Set (wxACCEL_CTRL, static_cast('A'), IFMENU_VIEW_SCALE_AUTO); accelEntries[1].Set (wxACCEL_CTRL, static_cast('U'), IFMENU_VIEW_SCALE_FULL); accelEntries[2].Set (wxACCEL_CTRL, static_cast('E'), IFMENU_VIEW_SCALE_MINMAX); accelEntries[3].Set (wxACCEL_CTRL, static_cast('I'), IFMENU_FILE_PROPERTIES); accelEntries[4].Set (wxACCEL_CTRL, static_cast('C'), IFMENU_EDIT_COPY); accelEntries[5].Set (wxACCEL_CTRL, static_cast('X'), IFMENU_EDIT_CUT); accelEntries[6].Set (wxACCEL_CTRL, static_cast('V'), IFMENU_EDIT_PASTE); int iEntry = 7; #ifdef HAVE_FFT accelEntries[iEntry++].Set (wxACCEL_CTRL, static_cast('2'), IFMENU_FILTER_FFT); accelEntries[iEntry++].Set (wxACCEL_ALT, static_cast('2'), IFMENU_FILTER_IFFT); #endif #if wxUSE_GLCANVAS accelEntries[iEntry++].Set (wxACCEL_CTRL, static_cast('3'), IFMENU_IMAGE_CONVERT3D); #endif wxAcceleratorTable accelTable (iEntry, accelEntries); subframe->SetAcceleratorTable (accelTable); return subframe; } bool ImageFileView::OnCreate (wxDocument *doc, long WXUNUSED(flags) ) { m_bMinSpecified = false; m_bMaxSpecified = false; m_dAutoScaleFactor = 1.; m_pFrame = CreateChildFrame(doc, this); SetFrame (m_pFrame); m_pCanvas = CreateCanvas (m_pFrame); m_pFrame->SetClientSize (m_pCanvas->GetBestSize()); m_pCanvas->SetClientSize (m_pCanvas->GetBestSize()); m_pFrame->SetTitle(doc->GetFilename()); m_pFrame->Show(true); Activate(true); return true; } void ImageFileView::setInitialClientSize () { if (m_pFrame && m_pCanvas) { wxSize bestSize = m_pCanvas->GetBestSize(); m_pFrame->SetClientSize (bestSize); m_pFrame->Show (true); m_pFrame->SetFocus(); } } void ImageFileView::OnDraw (wxDC* dc) { if (m_pBitmap && m_pBitmap->Ok()) { #ifdef DEBUG *theApp->getLog() << _T("Drawing bitmap\n"); #endif dc->DrawBitmap(*m_pBitmap, 0, 0, false); } int xCursor, yCursor; if (m_pCanvas->GetCurrentCursor (xCursor, yCursor)) m_pCanvas->DrawRubberBandCursor (*dc, xCursor, yCursor); } void ImageFileView::OnUpdate (wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint) ) { const ImageFile& rIF = GetDocument()->getImageFile(); if (m_pFilterMenu && rIF.isComplex()) { m_pFilterMenu->Enable(IFMENU_FILTER_REAL, true); m_pFilterMenu->Enable(IFMENU_FILTER_IMAGINARY, true); m_pFilterMenu->Enable(IFMENU_FILTER_PHASE, true); } else { m_pFilterMenu->Enable(IFMENU_FILTER_REAL, false); m_pFilterMenu->Enable(IFMENU_FILTER_IMAGINARY, false); m_pFilterMenu->Enable(IFMENU_FILTER_PHASE, false); } ImageFileArrayConst v = rIF.getArray(); int nx = rIF.nx(); int ny = rIF.ny(); if (v != NULL && nx != 0 && ny != 0) { if (! m_bMinSpecified || ! m_bMaxSpecified) { double min, max; rIF.getMinMax (min, max); if (! m_bMinSpecified) m_dMinPixel = min; if (! m_bMaxSpecified) m_dMaxPixel = max; } double scaleWidth = m_dMaxPixel - m_dMinPixel; unsigned char* imageData = new unsigned char [nx * ny * 3]; if (! imageData) { sys_error (ERR_SEVERE, "Unable to allocate memory for Image display"); return; } for (int ix = 0; ix < nx; ix++) { for (int iy = 0; iy < ny; iy++) { double scaleValue = ((v[ix][iy] - m_dMinPixel) / scaleWidth) * 255; int intensity = static_cast(scaleValue + 0.5); intensity = clamp (intensity, 0, 255); int baseAddr = ((ny - 1 - iy) * nx + ix) * 3; imageData[baseAddr] = imageData[baseAddr+1] = imageData[baseAddr+2] = intensity; } } wxImage image (nx, ny, imageData, true); if (m_pBitmap) { delete m_pBitmap; m_pBitmap = NULL; } #ifdef DEBUG *theApp->getLog() << _T("Making new bitmap\n"); #endif m_pBitmap = new wxBitmap (image); delete imageData; m_pCanvas->SetScrollbars(20, 20, nx/20, ny/20); m_pCanvas->SetBackgroundColour(*wxWHITE); } if (m_pCanvas) m_pCanvas->Refresh(); } bool ImageFileView::OnClose (bool deleteWindow) { if (! GetDocument() || ! GetDocument()->Close()) return false; Activate (false); if (m_pCanvas) { m_pCanvas->setView(NULL); m_pCanvas = NULL; } wxString s(theApp->GetAppName()); if (m_pFrame) m_pFrame->SetTitle(s); SetFrame(NULL); if (deleteWindow) { delete m_pFrame; m_pFrame = NULL; if (GetDocument() && GetDocument()->getBadFileOpen()) ::wxYield(); // wxWindows bug workaround } return true; } void ImageFileView::OnEditCopy (wxCommandEvent& event) { wxBitmapDataObject *pBitmapObject = new wxBitmapDataObject; if (m_pBitmap) pBitmapObject->SetBitmap (*m_pBitmap); if (wxTheClipboard->Open()) { wxTheClipboard->SetData (pBitmapObject); wxTheClipboard->Close(); } } void ImageFileView::OnEditCut (wxCommandEvent& event) { OnEditCopy (event); ImageFile& rIF = GetDocument()->getImageFile(); int nx = rIF.nx(); int ny = rIF.ny(); ImageFile* pIF = new ImageFile (nx, ny); pIF->arrayDataClear(); GetDocument()->setImageFile (pIF); // deletes old IF OnUpdate(this, NULL); GetDocument()->UpdateAllViews(); if (theApp->getAskDeleteNewDocs()) GetDocument()->Modify (true); } void ImageFileView::OnEditPaste (wxCommandEvent& event) { ImageFile& rIF = GetDocument()->getImageFile(); if (wxTheClipboard->Open()) { wxBitmap bitmap; if (wxTheClipboard->IsSupported (wxDF_BITMAP)) { wxBitmapDataObject bitmapObject; wxTheClipboard->GetData (bitmapObject); bitmap = bitmapObject.GetBitmap (); } wxTheClipboard->Close(); int nx = rIF.nx(); int ny = rIF.ny(); bool bMonochrome = false; if (bitmap.Ok() == true && bitmap.GetWidth() == nx && bitmap.GetHeight() == ny) { wxImage image (bitmap.ConvertToImage()); double dScale3 = 3 * 255; unsigned char* pixels = image.GetData(); ImageFileArray v = rIF.getArray(); for (unsigned int ix = 0; ix < rIF.nx(); ix++) { for (unsigned int iy = 0; iy < rIF.ny(); iy++) { unsigned int iBase = 3 * (iy * nx + ix); if (ix == 0 && iy == 0 && (pixels[iBase] == pixels[iBase+1] && pixels[iBase+1] == pixels[iBase+2])) bMonochrome = true; if (bMonochrome) { v[ix][ny - 1 - iy] = (pixels[iBase]+pixels[iBase+1]+pixels[iBase+2]) / dScale3; } else { double dR = pixels[iBase] / 255.; double dG = pixels[iBase+1] / 255.; double dB = pixels[iBase+2] / 255.; v[ix][ny - 1 - iy] = ImageFile::colorToGrayscale (dR, dG, dB); } } } OnUpdate(this, NULL); GetDocument()->UpdateAllViews(); if (theApp->getAskDeleteNewDocs()) GetDocument()->Modify(true); } } } void ImageFileView::OnExport (wxCommandEvent& event) { ImageFile& rIF = GetDocument()->getImageFile(); ImageFileArrayConst v = rIF.getArray(); int nx = rIF.nx(); int ny = rIF.ny(); if (v != NULL && nx != 0 && ny != 0) { if (! m_bMinSpecified || ! m_bMaxSpecified) { double min, max; rIF.getMinMax (min, max); if (! m_bMinSpecified) m_dMinPixel = min; if (! m_bMaxSpecified) m_dMaxPixel = max; } DialogExportParameters dialogExport (getFrameForChild(), m_iDefaultExportFormatID); if (dialogExport.ShowModal() == wxID_OK) { wxString strFormatName (dialogExport.getFormatName (), wxConvUTF8); m_iDefaultExportFormatID = ImageFile::convertExportFormatNameToID (strFormatName.mb_str(wxConvUTF8)); wxString strExt; wxString strWildcard; if (m_iDefaultExportFormatID == ImageFile::EXPORT_FORMAT_PGM || m_iDefaultExportFormatID == ImageFile::EXPORT_FORMAT_PGMASCII) { strExt = _T(".pgm"); strWildcard = _T("PGM Files (*.pgm)|*.pgm"); } #ifdef HAVE_PNG else if (m_iDefaultExportFormatID == ImageFile::EXPORT_FORMAT_PNG || m_iDefaultExportFormatID == ImageFile::EXPORT_FORMAT_PNG16) { strExt = _T(".png"); strWildcard = _T("PNG Files (*.png)|*.png"); } #endif #ifdef HAVE_CTN_DICOM else if (m_iDefaultExportFormatID == ImageFile::EXPORT_FORMAT_DICOM) { strExt = _T(""); strWildcard = _T("DICOM Files (*.*)|*.*"); } #endif else if (m_iDefaultExportFormatID == ImageFile::EXPORT_FORMAT_TEXT) { strExt = _T(".txt"); strWildcard = _T("Text (*.txt)|*.txt"); } else { strExt = _T(""); strWildcard = _T("Miscellaneous (*.*)|*.*"); } const wxString& strFilename = wxFileSelector (_T("Export Filename"), _T(""), _T(""), strExt, strWildcard, wxFD_OVERWRITE_PROMPT | wxFD_SAVE); if (! strFilename.empty()) { rIF.exportImage (strFormatName.mb_str(wxConvUTF8), strFilename.mb_str(wxConvUTF8), 1, 1, m_dMinPixel, m_dMaxPixel); *theApp->getLog() << _T("Exported file ") << strFilename << _T("\n"); } } } } void ImageFileView::OnScaleSize (wxCommandEvent& event) { ImageFile& rIF = GetDocument()->getImageFile(); unsigned int iOldNX = rIF.nx(); unsigned int iOldNY = rIF.ny(); DialogGetXYSize dialogGetXYSize (getFrameForChild(), _T("Set New X & Y Dimensions"), iOldNX, iOldNY); if (dialogGetXYSize.ShowModal() == wxID_OK) { unsigned int iNewNX = dialogGetXYSize.getXSize(); unsigned int iNewNY = dialogGetXYSize.getYSize(); std::ostringstream os; os << "Scale Size from (" << iOldNX << "," << iOldNY << ") to (" << iNewNX << "," << iNewNY << ")"; ImageFileDocument* pScaledDoc = theApp->newImageDoc(); if (! pScaledDoc) { sys_error (ERR_SEVERE, "Unable to create image file"); return; } ImageFile& rScaledIF = pScaledDoc->getImageFile(); rScaledIF.setArraySize (iNewNX, iNewNY); rScaledIF.labelsCopy (rIF); rScaledIF.labelAdd (os.str().c_str()); rIF.scaleImage (rScaledIF); *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n"); if (theApp->getAskDeleteNewDocs()) pScaledDoc->Modify (true); OnUpdate(this, NULL); pScaledDoc->UpdateAllViews (this); pScaledDoc->getView()->setInitialClientSize(); pScaledDoc->Activate(); } } #if wxUSE_GLCANVAS void ImageFileView::OnConvert3d (wxCommandEvent& event) { ImageFile& rIF = GetDocument()->getImageFile(); Graph3dFileDocument* pGraph3d = theApp->newGraph3dDoc(); pGraph3d->getView()->getFrame()->Show (false); pGraph3d->setBadFileOpen(); pGraph3d->createFromImageFile (rIF); pGraph3d->UpdateAllViews(); pGraph3d->getView()->getFrame()->Show (true); pGraph3d->getView()->Activate(true); ::wxYield(); pGraph3d->getView()->getCanvas()->SetFocus(); } #endif void ImageFileView::OnPlotRow (wxCommandEvent& event) { int xCursor, yCursor; if (! m_pCanvas->GetCurrentCursor (xCursor, yCursor)) { wxMessageBox (_T("No row selected. Please use left mouse button on image to select column"),_T("Error")); return; } const ImageFile& rIF = GetDocument()->getImageFile(); ImageFileArrayConst v = rIF.getArray(); ImageFileArrayConst vImag = rIF.getImaginaryArray(); int nx = rIF.nx(); int ny = rIF.ny(); if (v != NULL && yCursor < ny) { double* pX = new double [nx]; double* pYReal = new double [nx]; double *pYImag = NULL; double *pYMag = NULL; if (rIF.isComplex()) { pYImag = new double [nx]; pYMag = new double [nx]; } for (int i = 0; i < nx; i++) { pX[i] = i; pYReal[i] = v[i][yCursor]; if (rIF.isComplex()) { pYImag[i] = vImag[i][yCursor]; pYMag[i] = ::sqrt (v[i][yCursor] * v[i][yCursor] + vImag[i][yCursor] * vImag[i][yCursor]); } } PlotFileDocument* pPlotDoc = theApp->newPlotDoc(); if (! pPlotDoc) { sys_error (ERR_SEVERE, "Internal error: unable to create Plot file"); } else { PlotFile& rPlotFile = pPlotDoc->getPlotFile(); std::ostringstream os; os << "Row " << yCursor; std::string title("title "); title += os.str(); rPlotFile.addEzsetCommand (title.c_str()); rPlotFile.addEzsetCommand ("xlabel Column"); rPlotFile.addEzsetCommand ("ylabel Pixel Value"); rPlotFile.addEzsetCommand ("lxfrac 0"); rPlotFile.addEzsetCommand ("box"); rPlotFile.addEzsetCommand ("grid"); rPlotFile.addEzsetCommand ("curve 1"); rPlotFile.addEzsetCommand ("color 1"); if (rIF.isComplex()) { rPlotFile.addEzsetCommand ("dash 1"); rPlotFile.addEzsetCommand ("curve 2"); rPlotFile.addEzsetCommand ("color 4"); rPlotFile.addEzsetCommand ("dash 3"); rPlotFile.addEzsetCommand ("curve 3"); rPlotFile.addEzsetCommand ("color 0"); rPlotFile.addEzsetCommand ("solid"); rPlotFile.setCurveSize (4, nx); } else rPlotFile.setCurveSize (2, nx); rPlotFile.addColumn (0, pX); rPlotFile.addColumn (1, pYReal); if (rIF.isComplex()) { rPlotFile.addColumn (2, pYImag); rPlotFile.addColumn (3, pYMag); } for (unsigned int iL = 0; iL < rIF.nLabels(); iL++) rPlotFile.addDescription (rIF.labelGet(iL).getLabelString().c_str()); os << ": plot of " << wxConvUTF8.cWX2MB(dynamic_cast(GetDocument()->GetFirstView()->GetFrame())->GetTitle().c_str()); *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n"); rPlotFile.addDescription (os.str().c_str()); } delete pX; delete pYReal; if (rIF.isComplex()) { delete pYImag; delete pYMag; } if (theApp->getAskDeleteNewDocs()) pPlotDoc->Modify (true); pPlotDoc->getView()->getFrame()->Show(true); pPlotDoc->UpdateAllViews (); pPlotDoc->Activate(); } } void ImageFileView::OnPlotCol (wxCommandEvent& event) { int xCursor, yCursor; if (! m_pCanvas->GetCurrentCursor (xCursor, yCursor)) { wxMessageBox (_T("No column selected. Please use left mouse button on image to select column"),_T("Error")); return; } const ImageFile& rIF = GetDocument()->getImageFile(); ImageFileArrayConst v = rIF.getArray(); ImageFileArrayConst vImag = rIF.getImaginaryArray(); int nx = rIF.nx(); int ny = rIF.ny(); if (v != NULL && xCursor < nx) { double* const pX = new double [ny]; double* const pYReal = new double [ny]; double* pYImag = NULL; double* pYMag = NULL; if (rIF.isComplex()) { pYImag = new double [ny]; pYMag = new double [ny]; } for (int i = 0; i < ny; i++) { pX[i] = i; pYReal[i] = v[xCursor][i]; if (rIF.isComplex()) { pYImag[i] = vImag[xCursor][i]; pYMag[i] = ::sqrt (v[xCursor][i] * v[xCursor][i] + vImag[xCursor][i] * vImag[xCursor][i]); } } PlotFileDocument* pPlotDoc = theApp->newPlotDoc(); if (! pPlotDoc) { sys_error (ERR_SEVERE, "Internal error: unable to create Plot file"); } else { PlotFile& rPlotFile = pPlotDoc->getPlotFile(); std::ostringstream os; os << "Column " << xCursor; std::string title("title "); title += os.str(); rPlotFile.addEzsetCommand (title.c_str()); rPlotFile.addEzsetCommand ("xlabel Row"); rPlotFile.addEzsetCommand ("ylabel Pixel Value"); rPlotFile.addEzsetCommand ("lxfrac 0"); rPlotFile.addEzsetCommand ("box"); rPlotFile.addEzsetCommand ("grid"); rPlotFile.addEzsetCommand ("curve 1"); rPlotFile.addEzsetCommand ("color 1"); if (rIF.isComplex()) { rPlotFile.addEzsetCommand ("dash 1"); rPlotFile.addEzsetCommand ("curve 2"); rPlotFile.addEzsetCommand ("color 4"); rPlotFile.addEzsetCommand ("dash 3"); rPlotFile.addEzsetCommand ("curve 3"); rPlotFile.addEzsetCommand ("color 0"); rPlotFile.addEzsetCommand ("solid"); rPlotFile.setCurveSize (4, ny); } else rPlotFile.setCurveSize (2, ny); rPlotFile.addColumn (0, pX); rPlotFile.addColumn (1, pYReal); if (rIF.isComplex()) { rPlotFile.addColumn (2, pYImag); rPlotFile.addColumn (3, pYMag); } for (unsigned int iL = 0; iL < rIF.nLabels(); iL++) rPlotFile.addDescription (rIF.labelGet(iL).getLabelString().c_str()); os << " : plot of " << wxConvUTF8.cWX2MB(dynamic_cast(GetDocument()->GetFirstView()->GetFrame())->GetTitle().c_str()); *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n"); rPlotFile.addDescription (os.str().c_str()); } delete pX; delete pYReal; if (rIF.isComplex()) { delete pYImag; delete pYMag; } if (theApp->getAskDeleteNewDocs()) pPlotDoc->Modify (true); pPlotDoc->getView()->getFrame()->Show(true); pPlotDoc->UpdateAllViews (); pPlotDoc->Activate(); } } #ifdef HAVE_FFT void ImageFileView::OnPlotFFTRow (wxCommandEvent& event) { int xCursor, yCursor; if (! m_pCanvas->GetCurrentCursor (xCursor, yCursor)) { wxMessageBox (_T("No row selected. Please use left mouse button on image to select column"),_T("Error")); return; } const ImageFile& rIF = GetDocument()->getImageFile(); ImageFileArrayConst v = rIF.getArray(); ImageFileArrayConst vImag = rIF.getImaginaryArray(); int nx = rIF.nx(); int ny = rIF.ny(); if (v != NULL && yCursor < ny) { fftw_complex* pcIn = static_cast(fftw_malloc (sizeof(fftw_complex) * nx)); int i; for (i = 0; i < nx; i++) { pcIn[i][0] = v[i][yCursor]; if (rIF.isComplex()) pcIn[i][1] = vImag[i][yCursor]; else pcIn[i][1] = 0; } fftw_plan plan = fftw_plan_dft_1d (nx, pcIn, pcIn, FFTW_FORWARD, FFTW_ESTIMATE); fftw_execute (plan); fftw_destroy_plan (plan); double* pX = new double [nx]; double* pYReal = new double [nx]; double* pYImag = new double [nx]; double* pYMag = new double [nx]; for (i = 0; i < nx; i++) { pX[i] = i; pYReal[i] = pcIn[i][0] / nx; pYImag[i] = pcIn[i][1] / nx; pYMag[i] = ::sqrt (pcIn[i][0] * pcIn[i][0] + pcIn[i][1] * pcIn[i][1]); } Fourier::shuffleFourierToNaturalOrder (pYReal, nx); Fourier::shuffleFourierToNaturalOrder (pYImag, nx); Fourier::shuffleFourierToNaturalOrder (pYMag, nx); PlotFileDocument* pPlotDoc = theApp->newPlotDoc(); if (! pPlotDoc) { sys_error (ERR_SEVERE, "Internal error: unable to create Plot file"); } else { PlotFile& rPlotFile = pPlotDoc->getPlotFile(); std::ostringstream os; os << "Row " << yCursor; std::string title("title "); title += os.str(); rPlotFile.addEzsetCommand (title.c_str()); rPlotFile.addEzsetCommand ("xlabel Column"); rPlotFile.addEzsetCommand ("ylabel Pixel Value"); rPlotFile.addEzsetCommand ("lxfrac 0"); rPlotFile.addEzsetCommand ("curve 1"); rPlotFile.addEzsetCommand ("color 1"); rPlotFile.addEzsetCommand ("dash 1"); rPlotFile.addEzsetCommand ("curve 2"); rPlotFile.addEzsetCommand ("color 4"); rPlotFile.addEzsetCommand ("dash 3"); rPlotFile.addEzsetCommand ("curve 3"); rPlotFile.addEzsetCommand ("color 0"); rPlotFile.addEzsetCommand ("solid"); rPlotFile.addEzsetCommand ("box"); rPlotFile.addEzsetCommand ("grid"); rPlotFile.setCurveSize (4, nx); rPlotFile.addColumn (0, pX); rPlotFile.addColumn (1, pYReal); rPlotFile.addColumn (2, pYImag); rPlotFile.addColumn (3, pYMag); for (unsigned int iL = 0; iL < rIF.nLabels(); iL++) rPlotFile.addDescription (rIF.labelGet(iL).getLabelString().c_str()); os << ": FFT plot of " << wxConvUTF8.cWX2MB(dynamic_cast(GetDocument()->GetFirstView()->GetFrame())->GetTitle().c_str()); *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n"); rPlotFile.addDescription (os.str().c_str()); } delete pX; delete pYReal; delete pYImag; delete pYMag; fftw_free(pcIn); if (theApp->getAskDeleteNewDocs()) pPlotDoc->Modify (true); pPlotDoc->getView()->getFrame()->Show(true); pPlotDoc->UpdateAllViews (); pPlotDoc->Activate(); } } void ImageFileView::OnPlotFFTCol (wxCommandEvent& event) { int xCursor, yCursor; if (! m_pCanvas->GetCurrentCursor (xCursor, yCursor)) { wxMessageBox (_T("No column selected. Please use left mouse button on image to select column"),_T("Error")); return; } const ImageFile& rIF = GetDocument()->getImageFile(); ImageFileArrayConst v = rIF.getArray(); ImageFileArrayConst vImag = rIF.getImaginaryArray(); int nx = rIF.nx(); int ny = rIF.ny(); if (v != NULL && xCursor < nx) { fftw_complex* pcIn = new fftw_complex [ny]; double *pdTemp = new double [ny]; int i; for (i = 0; i < ny; i++) pdTemp[i] = v[xCursor][i]; Fourier::shuffleNaturalToFourierOrder (pdTemp, ny); for (i = 0; i < ny; i++) pcIn[i][0] = pdTemp[i]; for (i = 0; i < ny; i++) { if (rIF.isComplex()) pdTemp[i] = vImag[xCursor][i]; else pdTemp[i] = 0; } Fourier::shuffleNaturalToFourierOrder (pdTemp, ny); for (i = 0; i < ny; i++) pcIn[i][1] = pdTemp[i]; fftw_plan plan = fftw_plan_dft_1d (ny, pcIn, pcIn, FFTW_BACKWARD, FFTW_ESTIMATE); fftw_execute (plan); fftw_destroy_plan (plan); double* pX = new double [ny]; double* pYReal = new double [ny]; double* pYImag = new double [ny]; double* pYMag = new double [ny]; for (i = 0; i < ny; i++) { pX[i] = i; pYReal[i] = pcIn[i][0] / ny; pYImag[i] = pcIn[i][1] / ny; pYMag[i] = ::sqrt (pcIn[i][0] * pcIn[i][0] + pcIn[i][1] * pcIn[i][1]); } PlotFileDocument* pPlotDoc = theApp->newPlotDoc(); if (! pPlotDoc) { sys_error (ERR_SEVERE, "Internal error: unable to create Plot file"); } else { PlotFile& rPlotFile = pPlotDoc->getPlotFile(); std::ostringstream os; os << "Column " << xCursor; std::string title("title "); title += os.str(); rPlotFile.addEzsetCommand (title.c_str()); rPlotFile.addEzsetCommand ("xlabel Column"); rPlotFile.addEzsetCommand ("ylabel Pixel Value"); rPlotFile.addEzsetCommand ("lxfrac 0"); rPlotFile.addEzsetCommand ("curve 1"); rPlotFile.addEzsetCommand ("color 1"); rPlotFile.addEzsetCommand ("dash 1"); rPlotFile.addEzsetCommand ("curve 2"); rPlotFile.addEzsetCommand ("color 4"); rPlotFile.addEzsetCommand ("dash 3"); rPlotFile.addEzsetCommand ("curve 3"); rPlotFile.addEzsetCommand ("color 0"); rPlotFile.addEzsetCommand ("solid"); rPlotFile.addEzsetCommand ("box"); rPlotFile.addEzsetCommand ("grid"); rPlotFile.setCurveSize (4, ny); rPlotFile.addColumn (0, pX); rPlotFile.addColumn (1, pYReal); rPlotFile.addColumn (2, pYImag); rPlotFile.addColumn (3, pYMag); for (unsigned int iL = 0; iL < rIF.nLabels(); iL++) rPlotFile.addDescription (rIF.labelGet(iL).getLabelString().c_str()); os << ": FFT plot of " << wxConvUTF8.cWX2MB(dynamic_cast(GetDocument()->GetFirstView()->GetFrame())->GetTitle().c_str()); *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n"); rPlotFile.addDescription (os.str().c_str()); } delete pX; delete pYReal; delete pYImag; delete pYMag; delete pdTemp; delete [] pcIn; if (theApp->getAskDeleteNewDocs()) pPlotDoc->Modify (true); pPlotDoc->getView()->getFrame()->Show(true); pPlotDoc->UpdateAllViews (); pPlotDoc->Activate(); } } #endif void ImageFileView::OnCompareCol (wxCommandEvent& event) { int xCursor, yCursor; if (! m_pCanvas->GetCurrentCursor (xCursor, yCursor)) { wxMessageBox (_T("No column selected. Please use left mouse button on image to select column"),_T("Error")); return; } std::vector vecIFDoc; theApp->getCompatibleImages (GetDocument(), vecIFDoc); if (vecIFDoc.size() == 0) { wxMessageBox (_T("No compatible images for Column Comparison"), _T("Error")); return; } DialogGetComparisonImage dialogGetCompare (getFrameForChild(), _T("Get Comparison Image"), vecIFDoc, false); if (dialogGetCompare.ShowModal() == wxID_OK) { ImageFileDocument* pCompareDoc = dialogGetCompare.getImageFileDocument(); const ImageFile& rIF = GetDocument()->getImageFile(); const ImageFile& rCompareIF = pCompareDoc->getImageFile(); ImageFileArrayConst v1 = rIF.getArray(); ImageFileArrayConst v2 = rCompareIF.getArray(); int nx = rIF.nx(); int ny = rIF.ny(); if (v1 != NULL && xCursor < nx) { double* pX = new double [ny]; double* pY1 = new double [ny]; double* pY2 = new double [ny]; for (int i = 0; i < ny; i++) { pX[i] = i; pY1[i] = v1[xCursor][i]; pY2[i] = v2[xCursor][i]; } PlotFileDocument* pPlotDoc = theApp->newPlotDoc(); if (! pPlotDoc) { sys_error (ERR_SEVERE, "Internal error: unable to create Plot file"); } else { PlotFile& rPlotFile = pPlotDoc->getPlotFile(); std::ostringstream os; os << "Column " << xCursor << ": Comparison"; std::string title("title "); title += os.str(); rPlotFile.addEzsetCommand (title.c_str()); rPlotFile.addEzsetCommand ("xlabel Row"); rPlotFile.addEzsetCommand ("ylabel Pixel Value"); rPlotFile.addEzsetCommand ("lxfrac 0"); rPlotFile.addEzsetCommand ("curve 1"); rPlotFile.addEzsetCommand ("color 2"); rPlotFile.addEzsetCommand ("curve 2"); rPlotFile.addEzsetCommand ("color 4"); rPlotFile.addEzsetCommand ("dash 5"); rPlotFile.addEzsetCommand ("box"); rPlotFile.addEzsetCommand ("grid"); rPlotFile.setCurveSize (3, ny); rPlotFile.addColumn (0, pX); rPlotFile.addColumn (1, pY1); rPlotFile.addColumn (2, pY2); unsigned int iL; for (iL = 0; iL < rIF.nLabels(); iL++) { std::ostringstream os; os << dynamic_cast(GetDocument()->GetFirstView()->GetFrame())->GetTitle().c_str(); os << ": " << rIF.labelGet(iL).getLabelString(); rPlotFile.addDescription (os.str().c_str()); } for (iL = 0; iL < rCompareIF.nLabels(); iL++) { std::ostringstream os; os << dynamic_cast(pCompareDoc->GetFirstView()->GetFrame())->GetTitle().mb_str(wxConvUTF8); os << ": "; os << rCompareIF.labelGet(iL).getLabelString(); rPlotFile.addDescription (os.str().c_str()); } os << " between " << dynamic_cast(GetDocument()->GetFirstView()->GetFrame())->GetTitle().mb_str(wxConvUTF8) << " and " << dynamic_cast(pCompareDoc->GetFirstView()->GetFrame())->GetTitle().mb_str(wxConvUTF8); *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n"); rPlotFile.addDescription (os.str().c_str()); } delete pX; delete pY1; delete pY2; if (theApp->getAskDeleteNewDocs()) pPlotDoc->Modify (true); pPlotDoc->getView()->getFrame()->Show(true); pPlotDoc->UpdateAllViews (); pPlotDoc->Activate(); } } } void ImageFileView::OnCompareRow (wxCommandEvent& event) { int xCursor, yCursor; if (! m_pCanvas->GetCurrentCursor (xCursor, yCursor)) { wxMessageBox (_T("No column selected. Please use left mouse button on image to select column"),_T("Error")); return; } std::vector vecIFDoc; theApp->getCompatibleImages (GetDocument(), vecIFDoc); if (vecIFDoc.size() == 0) { wxMessageBox (_T("No compatible images for Row Comparison"), _T("Error")); return; } DialogGetComparisonImage dialogGetCompare (getFrameForChild(), _T("Get Comparison Image"), vecIFDoc, false); if (dialogGetCompare.ShowModal() == wxID_OK) { ImageFileDocument* pCompareDoc = dialogGetCompare.getImageFileDocument(); const ImageFile& rIF = GetDocument()->getImageFile(); const ImageFile& rCompareIF = pCompareDoc->getImageFile(); ImageFileArrayConst v1 = rIF.getArray(); ImageFileArrayConst v2 = rCompareIF.getArray(); int nx = rIF.nx(); int ny = rIF.ny(); if (v1 != NULL && yCursor < ny) { double* pX = new double [nx]; double* pY1 = new double [nx]; double* pY2 = new double [nx]; for (int i = 0; i < nx; i++) { pX[i] = i; pY1[i] = v1[i][yCursor]; pY2[i] = v2[i][yCursor]; } PlotFileDocument* pPlotDoc = theApp->newPlotDoc(); if (! pPlotDoc) { sys_error (ERR_SEVERE, "Internal error: unable to create Plot file"); } else { PlotFile& rPlotFile = pPlotDoc->getPlotFile(); std::ostringstream os; os << "Row " << yCursor << ": Comparison"; std::string title("title "); title += os.str(); rPlotFile.addEzsetCommand (title.c_str()); rPlotFile.addEzsetCommand ("xlabel Column"); rPlotFile.addEzsetCommand ("ylabel Pixel Value"); rPlotFile.addEzsetCommand ("lxfrac 0"); rPlotFile.addEzsetCommand ("curve 1"); rPlotFile.addEzsetCommand ("color 2"); rPlotFile.addEzsetCommand ("curve 2"); rPlotFile.addEzsetCommand ("color 4"); rPlotFile.addEzsetCommand ("dash 5"); rPlotFile.addEzsetCommand ("box"); rPlotFile.addEzsetCommand ("grid"); rPlotFile.setCurveSize (3, nx); rPlotFile.addColumn (0, pX); rPlotFile.addColumn (1, pY1); rPlotFile.addColumn (2, pY2); unsigned int iL; for (iL = 0; iL < rIF.nLabels(); iL++) { std::ostringstream os; os << dynamic_cast(GetDocument()->GetFirstView()->GetFrame())->GetTitle().mb_str(wxConvUTF8); os << ": "; os << rIF.labelGet(iL).getLabelString(); rPlotFile.addDescription (os.str().c_str()); } for (iL = 0; iL < rCompareIF.nLabels(); iL++) { std::ostringstream os; os << dynamic_cast(pCompareDoc->GetFirstView()->GetFrame())->GetTitle().mb_str(wxConvUTF8) << ": " << rCompareIF.labelGet(iL).getLabelString(); rPlotFile.addDescription (os.str().c_str()); } os << " between " << dynamic_cast(GetDocument()->GetFirstView()->GetFrame())->GetTitle().mb_str(wxConvUTF8) << " and " << dynamic_cast(pCompareDoc->GetFirstView()->GetFrame())->GetTitle().mb_str(wxConvUTF8); *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n"); rPlotFile.addDescription (os.str().c_str()); } delete pX; delete pY1; delete pY2; if (theApp->getAskDeleteNewDocs()) pPlotDoc->Modify (true); pPlotDoc->getView()->getFrame()->Show(true); pPlotDoc->UpdateAllViews (); pPlotDoc->Activate(); } } } static int NUMBER_HISTOGRAM_BINS = 256; void ImageFileView::OnPlotHistogram (wxCommandEvent& event) { const ImageFile& rIF = GetDocument()->getImageFile(); ImageFileArrayConst v = rIF.getArray(); int nx = rIF.nx(); int ny = rIF.ny(); if (v != NULL && nx > 0 && ny > 0) { PlotFileDocument* pPlotDoc = theApp->newPlotDoc(); if (! pPlotDoc) { sys_error (ERR_SEVERE, "Internal error: unable to create Plot file"); return; } double* pX = new double [NUMBER_HISTOGRAM_BINS]; double* pY = new double [NUMBER_HISTOGRAM_BINS]; double dMin, dMax; rIF.getMinMax (dMin, dMax); double dBinWidth = (dMax - dMin) / NUMBER_HISTOGRAM_BINS; for (int i = 0; i < NUMBER_HISTOGRAM_BINS; i++) { pX[i] = dMin + (i + 0.5) * dBinWidth; pY[i] = 0; } for (int ix = 0; ix < nx; ix++) { for (int iy = 0; iy < ny; iy++) { int iBin = nearest ((v[ix][iy] - dMin) / dBinWidth); if (iBin >= 0 && iBin < NUMBER_HISTOGRAM_BINS) pY[iBin] += 1; } } PlotFile& rPlotFile = pPlotDoc->getPlotFile(); std::ostringstream os; os << "Histogram"; std::string title("title "); title += os.str(); rPlotFile.addEzsetCommand (title.c_str()); rPlotFile.addEzsetCommand ("xlabel Pixel Value"); rPlotFile.addEzsetCommand ("ylabel Count"); rPlotFile.addEzsetCommand ("box"); rPlotFile.addEzsetCommand ("grid"); rPlotFile.setCurveSize (2, NUMBER_HISTOGRAM_BINS); rPlotFile.addColumn (0, pX); rPlotFile.addColumn (1, pY); for (unsigned int iL = 0; iL < rIF.nLabels(); iL++) { std::ostringstream os; os << dynamic_cast(GetDocument()->GetFirstView()->GetFrame())->GetTitle().mb_str(wxConvUTF8); os << ": " << rIF.labelGet(iL).getLabelString(); rPlotFile.addDescription (os.str().c_str()); } os << " plot of " << wxConvUTF8.cWX2MB(dynamic_cast(GetDocument()->GetFirstView()->GetFrame())->GetTitle().c_str()); *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n"); rPlotFile.addDescription (os.str().c_str()); delete pX; delete pY; if (theApp->getAskDeleteNewDocs()) pPlotDoc->Modify (true); pPlotDoc->getView()->getFrame()->Show(true); pPlotDoc->UpdateAllViews (); pPlotDoc->Activate(); } } // PhantomCanvas PhantomCanvas::PhantomCanvas (PhantomFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style) : wxScrolledWindow(frame, -1, pos, size, style), m_pView(v) { } PhantomCanvas::~PhantomCanvas () { m_pView = NULL; } void PhantomCanvas::OnDraw (wxDC& dc) { if (m_pView) m_pView->OnDraw(& dc); } wxSize PhantomCanvas::GetBestSize() const { if (! m_pView) return wxSize(0,0); int xSize, ySize; theApp->getMainFrame()->GetClientSize (&xSize, &ySize); xSize = maxValue (xSize, ySize); #ifdef CTSIM_MDI ySize = xSize = (xSize / 4); #else xSize = ySize = static_cast(ySize * .7); #endif return wxSize (xSize, ySize); } // PhantomFileView IMPLEMENT_DYNAMIC_CLASS(PhantomFileView, wxView) BEGIN_EVENT_TABLE(PhantomFileView, wxView) EVT_MENU(PHMMENU_FILE_PROPERTIES, PhantomFileView::OnProperties) EVT_MENU(PHMMENU_PROCESS_RASTERIZE, PhantomFileView::OnRasterize) EVT_MENU(PHMMENU_PROCESS_PROJECTIONS, PhantomFileView::OnProjections) END_EVENT_TABLE() PhantomFileView::PhantomFileView() : wxView(), m_pFrame(NULL), m_pCanvas(NULL), m_pFileMenu(0) { #if defined(DEBUG) || defined(_DEBUG) m_iDefaultNDet = 165; m_iDefaultNView = 180; m_iDefaultNSample = 1; #else m_iDefaultNDet = 367; m_iDefaultNView = 320; m_iDefaultNSample = 2; #endif m_iDefaultOffsetView = 0; m_dDefaultRotation = 1; m_dDefaultFocalLength = 2; m_dDefaultCenterDetectorLength = 2; m_dDefaultViewRatio = 1; m_dDefaultScanRatio = 1; m_iDefaultGeometry = Scanner::GEOMETRY_PARALLEL; m_iDefaultTrace = Trace::TRACE_NONE; #ifdef DEBUG m_iDefaultRasterNX = 115; m_iDefaultRasterNY = 115; m_iDefaultRasterNSamples = 1; #else m_iDefaultRasterNX = 256; m_iDefaultRasterNY = 256; m_iDefaultRasterNSamples = 2; #endif m_dDefaultRasterViewRatio = 1; } PhantomFileView::~PhantomFileView() { GetDocumentManager()->FileHistoryRemoveMenu (m_pFileMenu); GetDocumentManager()->ActivateView(this, FALSE); } void PhantomFileView::OnProperties (wxCommandEvent& event) { const int idPhantom = GetDocument()->getPhantomID(); const wxString& namePhantom = GetDocument()->getPhantomName(); std::ostringstream os; os << "Phantom " << namePhantom.c_str() << " (" << idPhantom << ")" << "\n"; const Phantom& rPhantom = GetDocument()->getPhantom(); rPhantom.printDefinitions (os); #if DEBUG rPhantom.print (os); #endif *theApp->getLog() << _T(">>>>\n") << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("<<<<\n"); wxMessageBox (wxConvUTF8.cMB2WX(os.str().c_str()), _T("Phantom Properties")); GetDocument()->Activate(); } void PhantomFileView::OnProjections (wxCommandEvent& event) { DialogGetProjectionParameters dialogProjection (getFrameForChild(), m_iDefaultNDet, m_iDefaultNView, m_iDefaultOffsetView, m_iDefaultNSample, m_dDefaultRotation, m_dDefaultFocalLength, m_dDefaultCenterDetectorLength, m_dDefaultViewRatio, m_dDefaultScanRatio, m_iDefaultGeometry, m_iDefaultTrace); int retVal = dialogProjection.ShowModal(); if (retVal != wxID_OK) return; m_iDefaultNDet = dialogProjection.getNDet(); m_iDefaultNView = dialogProjection.getNView(); m_iDefaultOffsetView = dialogProjection.getOffsetView(); m_iDefaultNSample = dialogProjection.getNSamples(); m_iDefaultTrace = dialogProjection.getTrace(); m_dDefaultRotation = dialogProjection.getRotAngle(); m_dDefaultFocalLength = dialogProjection.getFocalLengthRatio(); m_dDefaultCenterDetectorLength = dialogProjection.getCenterDetectorLengthRatio(); m_dDefaultViewRatio = dialogProjection.getViewRatio(); m_dDefaultScanRatio = dialogProjection.getScanRatio(); wxString sGeometry (dialogProjection.getGeometry(), wxConvUTF8); m_iDefaultGeometry = Scanner::convertGeometryNameToID (sGeometry.mb_str(wxConvUTF8)); double dRotationRadians = m_dDefaultRotation; m_dDefaultRotation /= TWOPI; // convert back to fraction of a circle if (m_iDefaultNDet <= 0 || m_iDefaultNView <= 0 || sGeometry == _T("")) return; const Phantom& rPhantom = GetDocument()->getPhantom(); Scanner theScanner (rPhantom, sGeometry.mb_str(wxConvUTF8), m_iDefaultNDet, m_iDefaultNView, m_iDefaultOffsetView, m_iDefaultNSample, dRotationRadians, m_dDefaultFocalLength, m_dDefaultCenterDetectorLength, m_dDefaultViewRatio, m_dDefaultScanRatio); if (theScanner.fail()) { wxString msg = _T("Failed making scanner\n"); msg += wxConvUTF8.cMB2WX(theScanner.failMessage().c_str()); *theApp->getLog() << msg << _T("\n"); wxMessageBox (msg, _T("Error")); return; } std::ostringstream os; os << "Projections for " << rPhantom.name().c_str() << ": nDet=" << m_iDefaultNDet << ", nView=" << m_iDefaultNView << ", gantry offset=" << m_iDefaultOffsetView << ", nSamples=" << m_iDefaultNSample << ", RotAngle=" << m_dDefaultRotation << ", FocalLengthRatio=" << m_dDefaultFocalLength << ", CenterDetectorLengthRatio=" << m_dDefaultCenterDetectorLength << ", ViewRatio=" << m_dDefaultViewRatio << ", ScanRatio=" << m_dDefaultScanRatio << ", Geometry=" << sGeometry.mb_str(wxConvUTF8) << ", FanBeamAngle=" << convertRadiansToDegrees (theScanner.fanBeamAngle()); Timer timer; Projections* pProj = NULL; if (m_iDefaultTrace > Trace::TRACE_CONSOLE) { pProj = new Projections; pProj->initFromScanner (theScanner); ProjectionsDialog dialogProjections (theScanner, *pProj, rPhantom, m_iDefaultTrace, dynamic_cast(getFrameForChild())); for (int iView = 0; iView < pProj->nView(); iView++) { ::wxYield(); if (dialogProjections.isCancelled() || ! dialogProjections.projectView (iView)) { delete pProj; return; } ::wxYield(); while (dialogProjections.isPaused()) { ::wxYield(); ::wxMilliSleep(50); } } } else { #if HAVE_WXTHREADS if (theApp->getUseBackgroundTasks()) { ProjectorSupervisorThread* pProjector = new ProjectorSupervisorThread (this, m_iDefaultNDet, m_iDefaultNView, m_iDefaultOffsetView, sGeometry.mb_str(wxConvUTF8), m_iDefaultNSample, dRotationRadians, m_dDefaultFocalLength, m_dDefaultCenterDetectorLength, m_dDefaultViewRatio, m_dDefaultScanRatio, wxConvUTF8.cMB2WX(os.str().c_str())); if (pProjector->Create() != wxTHREAD_NO_ERROR) { sys_error (ERR_SEVERE, "Error creating projector thread"); delete pProjector; return; } pProjector->SetPriority(60); pProjector->Run(); return; } else #endif // HAVE_WXTHREADS { pProj = new Projections; pProj->initFromScanner (theScanner); wxProgressDialog dlgProgress (_T("Projection"), _T("Projection Progress"), pProj->nView() + 1, getFrameForChild(), wxPD_CAN_ABORT ); for (int i = 0; i < pProj->nView(); i++) { //theScanner.collectProjections (*pProj, rPhantom, i, 1, true, m_iDefaultTrace); theScanner.collectProjections (*pProj, rPhantom, i, 1, theScanner.offsetView(), true, m_iDefaultTrace); if ((i + 1) % ITER_PER_UPDATE == 0) if (! dlgProgress.Update (i+1)) { delete pProj; return; } } } } *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n"); pProj->setRemark (os.str()); pProj->setCalcTime (timer.timerEnd()); ProjectionFileDocument* pProjectionDoc = theApp->newProjectionDoc(); if (! pProjectionDoc) { sys_error (ERR_SEVERE, "Unable to create projection document"); return; } pProjectionDoc->setProjections (pProj); if (theApp->getAskDeleteNewDocs()) pProjectionDoc-> Modify(true); OnUpdate(this, NULL); pProjectionDoc->UpdateAllViews (this); pProjectionDoc->getView()->setInitialClientSize(); pProjectionDoc->Activate(); } void PhantomFileView::OnRasterize (wxCommandEvent& event) { DialogGetRasterParameters dialogRaster (getFrameForChild(), m_iDefaultRasterNX, m_iDefaultRasterNY, m_iDefaultRasterNSamples, m_dDefaultRasterViewRatio); int retVal = dialogRaster.ShowModal(); if (retVal != wxID_OK) return; m_iDefaultRasterNX = dialogRaster.getXSize(); m_iDefaultRasterNY = dialogRaster.getYSize(); m_iDefaultRasterNSamples = dialogRaster.getNSamples(); m_dDefaultRasterViewRatio = dialogRaster.getViewRatio(); if (m_iDefaultRasterNSamples < 1) m_iDefaultRasterNSamples = 1; if (m_dDefaultRasterViewRatio < 0) m_dDefaultRasterViewRatio = 0; if (m_iDefaultRasterNX <= 0 || m_iDefaultRasterNY <= 0) return; const Phantom& rPhantom = GetDocument()->getPhantom(); std::ostringstream os; os << "Rasterize Phantom " << rPhantom.name() << ": XSize=" << m_iDefaultRasterNX << ", YSize=" << m_iDefaultRasterNY << ", ViewRatio=" << m_dDefaultRasterViewRatio << ", nSamples=" << m_iDefaultRasterNSamples;; #if HAVE_WXTHREADS if (theApp->getUseBackgroundTasks()) { RasterizerSupervisorThread* pThread = new RasterizerSupervisorThread (this, m_iDefaultRasterNX, m_iDefaultRasterNY, m_iDefaultRasterNSamples, m_dDefaultRasterViewRatio, wxConvUTF8.cMB2WX(os.str().c_str())); if (pThread->Create() != wxTHREAD_NO_ERROR) { *theApp->getLog() << _T("Error creating rasterizer thread\n"); return; } pThread->SetPriority (60); pThread->Run(); } else #endif { ImageFile* pImageFile = new ImageFile (m_iDefaultRasterNX, m_iDefaultRasterNY); wxProgressDialog dlgProgress (_T("Rasterize"), _T("Rasterization Progress"), pImageFile->nx() + 1, getFrameForChild(), wxPD_CAN_ABORT ); Timer timer; for (unsigned int i = 0; i < pImageFile->nx(); i++) { rPhantom.convertToImagefile (*pImageFile, m_dDefaultRasterViewRatio, m_iDefaultRasterNSamples, Trace::TRACE_NONE, i, 1, true); if ((i + 1) % ITER_PER_UPDATE == 0) if (! dlgProgress.Update (i+1)) { delete pImageFile; return; } } ImageFileDocument* pRasterDoc = theApp->newImageDoc(); if (! pRasterDoc) { sys_error (ERR_SEVERE, "Unable to create image file"); return; } pRasterDoc->setImageFile (pImageFile); if (theApp->getAskDeleteNewDocs()) pRasterDoc->Modify (true); *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n"); pImageFile->labelAdd (os.str().c_str(), timer.timerEnd()); pRasterDoc->UpdateAllViews(this); pRasterDoc->getView()->setInitialClientSize(); pRasterDoc->Activate(); } } PhantomCanvas* PhantomFileView::CreateCanvas (wxFrame *parent) { PhantomCanvas* pCanvas = new PhantomCanvas (this, parent, wxPoint(-1,-1), wxSize(-1,-1), wxFULL_REPAINT_ON_RESIZE); pCanvas->SetBackgroundColour(*wxWHITE); pCanvas->ClearBackground(); return pCanvas; } #if CTSIM_MDI wxDocMDIChildFrame* #else wxDocChildFrame* #endif PhantomFileView::CreateChildFrame(wxDocument *doc, wxView *view) { #if CTSIM_MDI wxDocMDIChildFrame *subframe = new wxDocMDIChildFrame (doc, view, theApp->getMainFrame(), -1, _T("Phantom Frame"), wxPoint(-1,-1), wxSize(-1,-1), wxDEFAULT_FRAME_STYLE); #else wxDocChildFrame *subframe = new wxDocChildFrame (doc, view, theApp->getMainFrame(), -1, _T("Phantom Frame"), wxPoint(-1,-1), wxSize(-1,-1), wxDEFAULT_FRAME_STYLE); #endif theApp->setIconForFrame (subframe); m_pFileMenu = new wxMenu; m_pFileMenu->Append(MAINMENU_FILE_CREATE_PHANTOM, _T("Cr&eate Phantom...\tCtrl-P")); m_pFileMenu->Append(MAINMENU_FILE_CREATE_FILTER, _T("Create &Filter...\tCtrl-F")); m_pFileMenu->Append(wxID_OPEN, _T("&Open...\tCtrl-O")); m_pFileMenu->Append(wxID_SAVEAS, _T("Save &As...")); m_pFileMenu->Append(wxID_CLOSE, _T("&Close")); m_pFileMenu->AppendSeparator(); m_pFileMenu->Append(PHMMENU_FILE_PROPERTIES, _T("P&roperties\tCtrl-I")); m_pFileMenu->AppendSeparator(); m_pFileMenu->Append(wxID_PRINT, _T("&Print...")); m_pFileMenu->Append(wxID_PRINT_SETUP, _T("Print &Setup...")); m_pFileMenu->Append(wxID_PREVIEW, _T("Print Pre&view")); m_pFileMenu->AppendSeparator(); m_pFileMenu->Append(MAINMENU_IMPORT, _T("&Import...\tCtrl-M")); m_pFileMenu->AppendSeparator(); m_pFileMenu->Append (MAINMENU_FILE_PREFERENCES, _T("Prefere&nces...")); m_pFileMenu->Append(MAINMENU_FILE_EXIT, _T("E&xit")); GetDocumentManager()->FileHistoryAddFilesToMenu(m_pFileMenu); GetDocumentManager()->FileHistoryUseMenu(m_pFileMenu); wxMenu *process_menu = new wxMenu; process_menu->Append(PHMMENU_PROCESS_RASTERIZE, _T("&Rasterize...\tCtrl-R")); process_menu->Append(PHMMENU_PROCESS_PROJECTIONS, _T("&Projections...\tCtrl-J")); wxMenu *help_menu = new wxMenu; help_menu->Append(MAINMENU_HELP_CONTENTS, _T("&Contents\tF1")); help_menu->Append (MAINMENU_HELP_TIPS, _T("&Tips")); help_menu->Append (IDH_QUICKSTART, _T("&Quick Start")); help_menu->Append(MAINMENU_HELP_ABOUT, _T("&About")); wxMenuBar *menu_bar = new wxMenuBar; menu_bar->Append(m_pFileMenu, _T("&File")); menu_bar->Append(process_menu, _T("&Process")); menu_bar->Append(help_menu, _T("&Help")); subframe->SetMenuBar(menu_bar); subframe->Centre(wxBOTH); wxAcceleratorEntry accelEntries[3]; accelEntries[0].Set (wxACCEL_CTRL, static_cast('J'), PHMMENU_PROCESS_PROJECTIONS); accelEntries[1].Set (wxACCEL_CTRL, static_cast('R'), PHMMENU_PROCESS_RASTERIZE); accelEntries[2].Set (wxACCEL_CTRL, static_cast('I'), PHMMENU_FILE_PROPERTIES); wxAcceleratorTable accelTable (3, accelEntries); subframe->SetAcceleratorTable (accelTable); return subframe; } bool PhantomFileView::OnCreate(wxDocument *doc, long WXUNUSED(flags) ) { m_pFrame = CreateChildFrame(doc, this); SetFrame(m_pFrame); m_pCanvas = CreateCanvas (m_pFrame); m_pFrame->SetClientSize (m_pCanvas->GetBestSize()); m_pCanvas->SetClientSize (m_pCanvas->GetBestSize()); m_pFrame->SetTitle (doc->GetFilename()); m_pFrame->Show(true); Activate(true); return true; } void PhantomFileView::OnUpdate (wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint) ) { if (m_pCanvas) m_pCanvas->Refresh(); } bool PhantomFileView::OnClose (bool deleteWindow) { if (! GetDocument() || ! GetDocument()->Close()) return false; Activate(false); if (m_pCanvas) { m_pCanvas->setView(NULL); m_pCanvas = NULL; } wxString s(wxTheApp->GetAppName()); if (m_pFrame) m_pFrame->SetTitle(s); SetFrame(NULL); if (deleteWindow) { delete m_pFrame; m_pFrame = NULL; if (GetDocument() && GetDocument()->getBadFileOpen()) ::wxYield(); // wxWindows bug workaround } return true; } void PhantomFileView::OnDraw (wxDC* dc) { int xsize, ysize; m_pCanvas->GetClientSize (&xsize, &ysize); SGPDriver driver (dc, xsize, ysize); SGP sgp (driver); const Phantom& rPhantom = GetDocument()->getPhantom(); sgp.setColor (C_RED); rPhantom.show (sgp); } // ProjectionCanvas ProjectionFileCanvas::ProjectionFileCanvas (ProjectionFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style) : wxScrolledWindow(frame, -1, pos, size, style) { m_pView = v; } ProjectionFileCanvas::~ProjectionFileCanvas () { m_pView = NULL; } void ProjectionFileCanvas::OnDraw(wxDC& dc) { if (m_pView) m_pView->OnDraw(& dc); } wxSize ProjectionFileCanvas::GetBestSize () const { const int iMinX = 50; const int iMinY = 20; wxSize bestSize (iMinX,iMinY); if (m_pView) { Projections& rProj = m_pView->GetDocument()->getProjections(); bestSize.Set (rProj.nDet(), rProj.nView()); } if (bestSize.x > 800) bestSize.x = 800; if (bestSize.y > 800) bestSize.y = 800; if (bestSize.x < iMinX) bestSize.x = iMinX; if (bestSize.y < iMinY) bestSize.y = iMinY; return bestSize; } // ProjectionFileView IMPLEMENT_DYNAMIC_CLASS(ProjectionFileView, wxView) BEGIN_EVENT_TABLE(ProjectionFileView, wxView) EVT_MENU(PJMENU_FILE_PROPERTIES, ProjectionFileView::OnProperties) EVT_MENU(PJMENU_RECONSTRUCT_FBP, ProjectionFileView::OnReconstructFBP) EVT_MENU(PJMENU_RECONSTRUCT_FBP_REBIN, ProjectionFileView::OnReconstructFBPRebin) EVT_MENU(PJMENU_RECONSTRUCT_FOURIER, ProjectionFileView::OnReconstructFourier) EVT_MENU(PJMENU_CONVERT_RECTANGULAR, ProjectionFileView::OnConvertRectangular) EVT_MENU(PJMENU_CONVERT_POLAR, ProjectionFileView::OnConvertPolar) EVT_MENU(PJMENU_CONVERT_FFT_POLAR, ProjectionFileView::OnConvertFFTPolar) EVT_MENU(PJMENU_CONVERT_PARALLEL, ProjectionFileView::OnConvertParallel) EVT_MENU(PJMENU_PLOT_TTHETA_SAMPLING, ProjectionFileView::OnPlotTThetaSampling) EVT_MENU(PJMENU_PLOT_HISTOGRAM, ProjectionFileView::OnPlotHistogram) // EVT_MENU(PJMENU_ARTIFACT_REDUCTION, ProjectionFileView::OnArtifactReduction) END_EVENT_TABLE() ProjectionFileView::ProjectionFileView() : wxView(), m_pBitmap(0), m_pFrame(0), m_pCanvas(0), m_pFileMenu(0) { #ifdef DEBUG m_iDefaultNX = 115; m_iDefaultNY = 115; #else m_iDefaultNX = 256; m_iDefaultNY = 256; #endif m_iDefaultFilter = SignalFilter::FILTER_ABS_BANDLIMIT; m_dDefaultFilterParam = 1.; #if HAVE_FFTW m_iDefaultFilterMethod = ProcessSignal::FILTER_METHOD_RFFTW; m_iDefaultFilterGeneration = ProcessSignal::FILTER_GENERATION_INVERSE_FOURIER; #else m_iDefaultFilterMethod = ProcessSignal::FILTER_METHOD_CONVOLUTION; m_iDefaultFilterGeneration = ProcessSignal::FILTER_GENERATION_DIRECT; #endif m_iDefaultZeropad = 2; m_iDefaultBackprojector = Backprojector::BPROJ_IDIFF; m_iDefaultInterpolation = Backprojector::INTERP_LINEAR; m_iDefaultInterpParam = 1; m_iDefaultTrace = Trace::TRACE_NONE; m_iDefaultPolarNX = 256; m_iDefaultPolarNY = 256; m_iDefaultPolarInterpolation = Projections::POLAR_INTERP_BILINEAR; m_iDefaultPolarZeropad = 2; } ProjectionFileView::~ProjectionFileView() { GetDocumentManager()->FileHistoryRemoveMenu (m_pFileMenu); GetDocumentManager()->ActivateView(this, FALSE);; } void ProjectionFileView::OnProperties (wxCommandEvent& event) { const Projections& rProj = GetDocument()->getProjections(); std::ostringstream os; rProj.printScanInfo(os); *theApp->getLog() << _T(">>>>\n") << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("<<<<\n"); wxMessageDialog dialogMsg (getFrameForChild(), wxConvUTF8.cMB2WX(os.str().c_str()), _T("Projection File Properties"), wxOK | wxICON_INFORMATION); dialogMsg.ShowModal(); GetDocument()->Activate(); } void ProjectionFileView::OnConvertRectangular (wxCommandEvent& event) { Projections& rProj = GetDocument()->getProjections(); int nDet = rProj.nDet(); int nView = rProj.nView(); ImageFile* pIF = new ImageFile (nDet, nView); ImageFileArray v = pIF->getArray(); for (int iv = 0; iv < nView; iv++) { DetectorValue* detval = rProj.getDetectorArray(iv).detValues(); for (int id = 0; id < nDet; id++) v[id][iv] = detval[id]; } ImageFileDocument* pRectDoc = theApp->newImageDoc (); if (! pRectDoc) { sys_error (ERR_SEVERE, "Unable to create image file"); return; } pRectDoc->setImageFile (pIF); pIF->labelAdd (rProj.getLabel().getLabelString().c_str(), rProj.calcTime()); std::ostringstream os; os << "Convert projection file " << getFrame()->GetTitle().c_str() << " to rectangular image"; *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n"); pIF->labelAdd (os.str().c_str()); if (theApp->getAskDeleteNewDocs()) pRectDoc->Modify (true); pRectDoc->UpdateAllViews(); pRectDoc->getView()->setInitialClientSize(); pRectDoc->Activate(); } void ProjectionFileView::OnConvertPolar (wxCommandEvent& event) { Projections& rProj = GetDocument()->getProjections(); DialogGetConvertPolarParameters dialogPolar (getFrameForChild(), _T("Convert Polar"), m_iDefaultPolarNX, m_iDefaultPolarNY, m_iDefaultPolarInterpolation, -1, IDH_DLG_POLAR); if (dialogPolar.ShowModal() == wxID_OK) { wxProgressDialog dlgProgress (_T("Convert Polar"), _T("Conversion Progress"), 1, getFrameForChild(), wxPD_APP_MODAL); wxString strInterpolation (dialogPolar.getInterpolationName(), wxConvUTF8); m_iDefaultPolarNX = dialogPolar.getXSize(); m_iDefaultPolarNY = dialogPolar.getYSize(); ImageFile* pIF = new ImageFile (m_iDefaultPolarNX, m_iDefaultPolarNY); m_iDefaultPolarInterpolation = Projections::convertInterpNameToID (strInterpolation.mb_str(wxConvUTF8)); if (! rProj.convertPolar (*pIF, m_iDefaultPolarInterpolation)) { delete pIF; *theApp->getLog() << _T("Error converting to Polar\n"); return; } ImageFileDocument* pPolarDoc = theApp->newImageDoc(); if (! pPolarDoc) { sys_error (ERR_SEVERE, "Unable to create image file"); return; } pPolarDoc->setImageFile (pIF); pIF->labelAdd (rProj.getLabel().getLabelString().c_str(), rProj.calcTime()); std::ostringstream os; os << "Convert projection file " << getFrame()->GetTitle().c_str() << " to polar image: xSize=" << m_iDefaultPolarNX << ", ySize=" << m_iDefaultPolarNY << ", interpolation=" << strInterpolation.c_str(); *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n"); pIF->labelAdd (os.str().c_str()); if (theApp->getAskDeleteNewDocs()) pPolarDoc->Modify (true); pPolarDoc->UpdateAllViews (); pPolarDoc->getView()->setInitialClientSize(); pPolarDoc->Activate(); } } void ProjectionFileView::OnConvertFFTPolar (wxCommandEvent& event) { Projections& rProj = GetDocument()->getProjections(); DialogGetConvertPolarParameters dialogPolar (getFrameForChild(), _T("Convert to FFT Polar"), m_iDefaultPolarNX, m_iDefaultPolarNY, m_iDefaultPolarInterpolation, m_iDefaultPolarZeropad, IDH_DLG_FFT_POLAR); if (dialogPolar.ShowModal() == wxID_OK) { wxProgressDialog dlgProgress (_T("Convert FFT Polar"), _T("Conversion Progress"), 1, getFrameForChild(), wxPD_APP_MODAL); wxString strInterpolation (dialogPolar.getInterpolationName(), wxConvUTF8); m_iDefaultPolarNX = dialogPolar.getXSize(); m_iDefaultPolarNY = dialogPolar.getYSize(); m_iDefaultPolarZeropad = dialogPolar.getZeropad(); ImageFile* pIF = new ImageFile (m_iDefaultPolarNX, m_iDefaultPolarNY); m_iDefaultPolarInterpolation = Projections::convertInterpNameToID (strInterpolation.mb_str(wxConvUTF8)); if (! rProj.convertFFTPolar (*pIF, m_iDefaultPolarInterpolation, m_iDefaultPolarZeropad)) { delete pIF; *theApp->getLog() << _T("Error converting to polar\n"); return; } ImageFileDocument* pPolarDoc = theApp->newImageDoc(); if (! pPolarDoc) { sys_error (ERR_SEVERE, "Unable to create image file"); return; } pPolarDoc->setImageFile (pIF); pIF->labelAdd (rProj.getLabel().getLabelString().c_str(), rProj.calcTime()); std::ostringstream os; os << "Convert projection file " << getFrame()->GetTitle().c_str() << " to FFT polar image: xSize=" << m_iDefaultPolarNX << ", ySize=" << m_iDefaultPolarNY << ", interpolation=" << strInterpolation.c_str() << ", zeropad=" << m_iDefaultPolarZeropad; *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n"); pIF->labelAdd (os.str().c_str()); if (theApp->getAskDeleteNewDocs()) pPolarDoc->Modify (true); pPolarDoc->UpdateAllViews (this); pPolarDoc->getView()->setInitialClientSize(); pPolarDoc->Activate(); } } void ProjectionFileView::OnPlotTThetaSampling (wxCommandEvent& event) { DialogGetThetaRange dlgTheta (this->getFrame(), ParallelRaysums::THETA_RANGE_UNCONSTRAINED); if (dlgTheta.ShowModal() != wxID_OK) return; int iThetaRange = dlgTheta.getThetaRange(); Projections& rProj = GetDocument()->getProjections(); ParallelRaysums parallel (&rProj, iThetaRange); PlotFileDocument* pPlotDoc = theApp->newPlotDoc(); PlotFile& rPlot = pPlotDoc->getPlotFile(); ParallelRaysums::CoordinateContainer& coordContainer = parallel.getCoordinates(); double* pdT = new double [parallel.getNumCoordinates()]; double* pdTheta = new double [parallel.getNumCoordinates()]; for (int i = 0; i < parallel.getNumCoordinates(); i++) { pdT[i] = coordContainer[i]->m_dT; pdTheta[i] = coordContainer[i]->m_dTheta; } rPlot.setCurveSize (2, parallel.getNumCoordinates(), true); rPlot.addEzsetCommand ("title T-Theta Sampling"); rPlot.addEzsetCommand ("xlabel T"); rPlot.addEzsetCommand ("ylabel Theta"); rPlot.addEzsetCommand ("curve 1"); if (rProj.nDet() < 50 && rProj.nView() < 50) rPlot.addEzsetCommand ("symbol 1"); // x symbol else rPlot.addEzsetCommand ("symbol 6"); // point symbol rPlot.addEzsetCommand ("noline"); rPlot.addColumn (0, pdT); rPlot.addColumn (1, pdTheta); delete pdT; delete pdTheta; if (theApp->getAskDeleteNewDocs()) pPlotDoc->Modify (true); pPlotDoc->getView()->getFrame()->Show(true); pPlotDoc->UpdateAllViews (); pPlotDoc->Activate(); } void ProjectionFileView::OnPlotHistogram (wxCommandEvent& event) { Projections& rProj = GetDocument()->getProjections(); int nDet = rProj.nDet(); int nView = rProj.nView(); if (nDet < 1 || nView < 1) return; PlotFileDocument* pPlotDoc = theApp->newPlotDoc(); if (! pPlotDoc) { sys_error (ERR_SEVERE, "Internal error: unable to create Plot file"); return; } DetectorValue* pdDetval = rProj.getDetectorArray(0).detValues(); double dMin = pdDetval[0], dMax = pdDetval[0]; for (int iv = 0; iv < nView; iv++) { pdDetval = rProj.getDetectorArray(iv).detValues(); for (int id = 0; id < nDet; id++) { double dV = pdDetval[id]; if (dV < dMin) dMin = dV; else if (dV > dMax) dMax = dV; } } double* pX = new double [NUMBER_HISTOGRAM_BINS]; double* pY = new double [NUMBER_HISTOGRAM_BINS]; double dBinWidth = (dMax - dMin) / NUMBER_HISTOGRAM_BINS; for (int i = 0; i < NUMBER_HISTOGRAM_BINS; i++) { pX[i] = dMin + (i + 0.5) * dBinWidth; pY[i] = 0; } for (int j = 0; j < nView; j++) { pdDetval = rProj.getDetectorArray(j).detValues(); for (int id = 0; id < nDet; id++) { int iBin = nearest ((pdDetval[id] - dMin) / dBinWidth); if (iBin >= 0 && iBin < NUMBER_HISTOGRAM_BINS) pY[iBin] += 1; } } PlotFile& rPlotFile = pPlotDoc->getPlotFile(); std::ostringstream os; os << "Histogram"; std::string title("title "); title += os.str(); rPlotFile.addEzsetCommand (title.c_str()); rPlotFile.addEzsetCommand ("xlabel Detector Value"); rPlotFile.addEzsetCommand ("ylabel Count"); rPlotFile.addEzsetCommand ("box"); rPlotFile.addEzsetCommand ("grid"); rPlotFile.setCurveSize (2, NUMBER_HISTOGRAM_BINS); rPlotFile.addColumn (0, pX); rPlotFile.addColumn (1, pY); rPlotFile.addDescription (rProj.remark()); os << " plot of " << dynamic_cast(GetDocument()->GetFirstView()->GetFrame())->GetTitle().c_str(); *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n"); rPlotFile.addDescription (os.str().c_str()); delete pX; delete pY; if (theApp->getAskDeleteNewDocs()) pPlotDoc->Modify (true); pPlotDoc->getView()->getFrame()->Show(true); pPlotDoc->UpdateAllViews (); pPlotDoc->Activate(); } void ProjectionFileView::OnConvertParallel (wxCommandEvent& event) { Projections& rProj = GetDocument()->getProjections(); if (rProj.geometry() == Scanner::GEOMETRY_PARALLEL) { wxMessageBox (_T("Projections are already parallel"), _T("Error")); return; } wxProgressDialog dlgProgress (_T("Convert to Parallel"), _T("Conversion Progress"), 1, getFrameForChild(), wxPD_APP_MODAL); Projections* pProjNew = rProj.interpolateToParallel(); ProjectionFileDocument* pProjDocNew = theApp->newProjectionDoc(); pProjDocNew->setProjections (pProjNew); if (ProjectionFileView* projView = pProjDocNew->getView()) { projView->OnUpdate (projView, NULL); if (projView->getCanvas()) projView->getCanvas()->SetClientSize (pProjNew->nDet(), pProjNew->nView()); if (wxFrame* pFrame = projView->getFrame()) { pFrame->Show(true); pFrame->SetFocus(); pFrame->Raise(); } GetDocumentManager()->ActivateView (projView, true); } if (theApp->getAskDeleteNewDocs()) pProjDocNew-> Modify(true); pProjDocNew->UpdateAllViews (this); pProjDocNew->getView()->setInitialClientSize(); pProjDocNew->Activate(); } void ProjectionFileView::OnReconstructFourier (wxCommandEvent& event) { Projections& rProj = GetDocument()->getProjections(); DialogGetConvertPolarParameters dialogPolar (getFrameForChild(), _T("Fourier Reconstruction"), m_iDefaultPolarNX, m_iDefaultPolarNY, m_iDefaultPolarInterpolation, m_iDefaultPolarZeropad, IDH_DLG_RECON_FOURIER); if (dialogPolar.ShowModal() == wxID_OK) { wxProgressDialog dlgProgress (_T("Reconstruction Fourier"), _T("Reconstruction Progress"), 1, getFrameForChild(), wxPD_APP_MODAL); wxString strInterpolation (dialogPolar.getInterpolationName(), wxConvUTF8); m_iDefaultPolarNX = dialogPolar.getXSize(); m_iDefaultPolarNY = dialogPolar.getYSize(); m_iDefaultPolarZeropad = dialogPolar.getZeropad(); ImageFile* pIF = new ImageFile (m_iDefaultPolarNX, m_iDefaultPolarNY); m_iDefaultPolarInterpolation = Projections::convertInterpNameToID (strInterpolation.mb_str(wxConvUTF8)); if (! rProj.convertFFTPolar (*pIF, m_iDefaultPolarInterpolation, m_iDefaultPolarZeropad)) { delete pIF; *theApp->getLog() << _T("Error converting to polar\n"); return; } #ifdef HAVE_FFT pIF->ifft(*pIF); #endif pIF->magnitude(*pIF); Fourier::shuffleFourierToNaturalOrder (*pIF); ImageFileDocument* pPolarDoc = theApp->newImageDoc(); if (! pPolarDoc) { sys_error (ERR_SEVERE, "Unable to create image file"); return; } pPolarDoc->setImageFile (pIF); pIF->labelAdd (rProj.getLabel().getLabelString().c_str(), rProj.calcTime()); std::ostringstream os; os << "Reconstruct Fourier " << getFrame()->GetTitle().mb_str(wxConvUTF8) << ": xSize=" << m_iDefaultPolarNX << ", ySize=" << m_iDefaultPolarNY << ", interpolation=" << strInterpolation.mb_str(wxConvUTF8) << ", zeropad=" << m_iDefaultPolarZeropad; *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n"); pIF->labelAdd (os.str().c_str()); if (theApp->getAskDeleteNewDocs()) pPolarDoc->Modify (true); pPolarDoc->UpdateAllViews (); pPolarDoc->getView()->setInitialClientSize(); pPolarDoc->Activate(); } } void ProjectionFileView::OnReconstructFBPRebin (wxCommandEvent& event) { Projections& rProj = GetDocument()->getProjections(); doReconstructFBP (rProj, true); } void ProjectionFileView::OnReconstructFBP (wxCommandEvent& event) { Projections& rProj = GetDocument()->getProjections(); doReconstructFBP (rProj, false); } void ProjectionFileView::doReconstructFBP (const Projections& rProj, bool bRebinToParallel) { ReconstructionROI defaultROI; defaultROI.m_dXMin = -rProj.phmLen() / 2; defaultROI.m_dXMax = defaultROI.m_dXMin + rProj.phmLen(); defaultROI.m_dYMin = -rProj.phmLen() / 2; defaultROI.m_dYMax = defaultROI.m_dYMin + rProj.phmLen(); DialogGetReconstructionParameters dialogReconstruction (getFrameForChild(), m_iDefaultNX, m_iDefaultNY, m_iDefaultFilter, m_dDefaultFilterParam, m_iDefaultFilterMethod, m_iDefaultFilterGeneration, m_iDefaultZeropad, m_iDefaultInterpolation, m_iDefaultInterpParam, m_iDefaultBackprojector, m_iDefaultTrace, &defaultROI); int retVal = dialogReconstruction.ShowModal(); if (retVal != wxID_OK) return; m_iDefaultNX = dialogReconstruction.getXSize(); m_iDefaultNY = dialogReconstruction.getYSize(); wxString optFilterName (dialogReconstruction.getFilterName(), wxConvUTF8); m_iDefaultFilter = SignalFilter::convertFilterNameToID (optFilterName.mb_str(wxConvUTF8)); m_dDefaultFilterParam = dialogReconstruction.getFilterParam(); wxString optFilterMethodName (dialogReconstruction.getFilterMethodName(), wxConvUTF8); m_iDefaultFilterMethod = ProcessSignal::convertFilterMethodNameToID(optFilterMethodName.mb_str(wxConvUTF8)); m_iDefaultZeropad = dialogReconstruction.getZeropad(); wxString optFilterGenerationName (dialogReconstruction.getFilterGenerationName(), wxConvUTF8); m_iDefaultFilterGeneration = ProcessSignal::convertFilterGenerationNameToID (optFilterGenerationName.mb_str(wxConvUTF8)); wxString optInterpName (dialogReconstruction.getInterpName(), wxConvUTF8); m_iDefaultInterpolation = Backprojector::convertInterpNameToID (optInterpName.mb_str(wxConvUTF8)); m_iDefaultInterpParam = dialogReconstruction.getInterpParam(); wxString optBackprojectName (dialogReconstruction.getBackprojectName(), wxConvUTF8); m_iDefaultBackprojector = Backprojector::convertBackprojectNameToID (optBackprojectName.mb_str(wxConvUTF8)); m_iDefaultTrace = dialogReconstruction.getTrace(); dialogReconstruction.getROI (&defaultROI); if (m_iDefaultNX <= 0 && m_iDefaultNY <= 0) return; std::ostringstream os; os << "Reconstruct " << rProj.getFilename() << ": xSize=" << m_iDefaultNX << ", ySize=" << m_iDefaultNY << ", Filter=" << optFilterName.mb_str(wxConvUTF8) << ", FilterParam=" << m_dDefaultFilterParam << ", FilterMethod=" << optFilterMethodName.mb_str(wxConvUTF8) << ", FilterGeneration=" << optFilterGenerationName.mb_str(wxConvUTF8) << ", Zeropad=" << m_iDefaultZeropad << ", Interpolation=" << optInterpName.mb_str(wxConvUTF8) << ", InterpolationParam=" << m_iDefaultInterpParam << ", Backprojection=" << optBackprojectName.mb_str(wxConvUTF8); if (bRebinToParallel) os << "; Interpolate to Parallel"; Timer timerRecon; ImageFile* pImageFile = NULL; if (m_iDefaultTrace > Trace::TRACE_CONSOLE) { pImageFile = new ImageFile (m_iDefaultNX, m_iDefaultNY); Reconstructor* pReconstructor = new Reconstructor (rProj, *pImageFile, optFilterName.mb_str(wxConvUTF8), m_dDefaultFilterParam, optFilterMethodName.mb_str(wxConvUTF8), m_iDefaultZeropad, optFilterGenerationName.mb_str(wxConvUTF8), optInterpName.mb_str(wxConvUTF8), m_iDefaultInterpParam, optBackprojectName.mb_str(wxConvUTF8), m_iDefaultTrace, &defaultROI, bRebinToParallel); ReconstructDialog* pDlgReconstruct = new ReconstructDialog (*pReconstructor, rProj, *pImageFile, m_iDefaultTrace, getFrameForChild()); for (int iView = 0; iView < rProj.nView(); iView++) { ::wxYield(); if (pDlgReconstruct->isCancelled() || ! pDlgReconstruct->reconstructView (iView, true)) { delete pDlgReconstruct; delete pReconstructor; return; } ::wxYield(); ::wxYield(); while (pDlgReconstruct->isPaused()) { ::wxYield(); ::wxMilliSleep(50); } } pReconstructor->postProcessing(); delete pDlgReconstruct; delete pReconstructor; } else { #if HAVE_WXTHREADS if (theApp->getUseBackgroundTasks()) { ReconstructorSupervisorThread* pReconstructor = new ReconstructorSupervisorThread (this, m_iDefaultNX, m_iDefaultNY, optFilterName.mb_str(wxConvUTF8), m_dDefaultFilterParam, optFilterMethodName.mb_str(wxConvUTF8), m_iDefaultZeropad, optFilterGenerationName.mb_str(wxConvUTF8), optInterpName.mb_str(wxConvUTF8), m_iDefaultInterpParam, optBackprojectName.mb_str(wxConvUTF8), wxConvUTF8.cMB2WX(os.str().c_str()), &defaultROI, bRebinToParallel); if (pReconstructor->Create() != wxTHREAD_NO_ERROR) { sys_error (ERR_SEVERE, "Error creating reconstructor thread"); delete pReconstructor; return; } pReconstructor->SetPriority (60); pReconstructor->Run(); return; } else #endif { pImageFile = new ImageFile (m_iDefaultNX, m_iDefaultNY); wxProgressDialog dlgProgress (_T("Reconstruction"), _T("Reconstruction Progress"), rProj.nView() + 1, getFrameForChild(), wxPD_CAN_ABORT ); Reconstructor* pReconstructor = new Reconstructor (rProj, *pImageFile, optFilterName.mb_str(wxConvUTF8), m_dDefaultFilterParam, optFilterMethodName.mb_str(wxConvUTF8), m_iDefaultZeropad, optFilterGenerationName.mb_str(wxConvUTF8), optInterpName.mb_str(wxConvUTF8), m_iDefaultInterpParam, optBackprojectName.mb_str(wxConvUTF8), m_iDefaultTrace, &defaultROI, bRebinToParallel); for (int iView = 0; iView < rProj.nView(); iView++) { pReconstructor->reconstructView (iView, 1); if ((iView + 1) % ITER_PER_UPDATE == 0) if (! dlgProgress.Update (iView + 1)) { delete pReconstructor; return; // don't make new window, thread will do this } } pReconstructor->postProcessing(); delete pReconstructor; } } ImageFileDocument* pReconDoc = theApp->newImageDoc(); if (! pReconDoc) { sys_error (ERR_SEVERE, "Unable to create image file"); return; } *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n"); pImageFile->labelAdd (rProj.getLabel()); pImageFile->labelAdd (os.str().c_str(), timerRecon.timerEnd()); pReconDoc->setImageFile (pImageFile); if (theApp->getAskDeleteNewDocs()) pReconDoc->Modify (true); pReconDoc->UpdateAllViews(); pReconDoc->getView()->setInitialClientSize(); pReconDoc->Activate(); } void ProjectionFileView::OnArtifactReduction (wxCommandEvent& event) { } ProjectionFileCanvas* ProjectionFileView::CreateCanvas (wxFrame *parent) { ProjectionFileCanvas* pCanvas; int width, height; parent->GetClientSize(&width, &height); pCanvas = new ProjectionFileCanvas (this, parent, wxPoint(-1,-1), wxSize(width, height), 0); pCanvas->SetScrollbars(20, 20, 50, 50); pCanvas->SetBackgroundColour(*wxWHITE); pCanvas->ClearBackground(); return pCanvas; } #if CTSIM_MDI wxDocMDIChildFrame* #else wxDocChildFrame* #endif ProjectionFileView::CreateChildFrame(wxDocument *doc, wxView *view) { #ifdef CTSIM_MDI wxDocMDIChildFrame *subframe = new wxDocMDIChildFrame (doc, view, theApp->getMainFrame(), -1, _T("Projection Frame"), wxPoint(-1,-1), wxSize(-1,-1), wxDEFAULT_FRAME_STYLE); #else wxDocChildFrame *subframe = new wxDocChildFrame (doc, view, theApp->getMainFrame(), -1, _T("Projection Frame"), wxPoint(-1,-1), wxSize(-1,-1), wxDEFAULT_FRAME_STYLE); #endif theApp->setIconForFrame (subframe); m_pFileMenu = new wxMenu; m_pFileMenu->Append(MAINMENU_FILE_CREATE_PHANTOM, _T("Cr&eate Phantom...\tCtrl-P")); m_pFileMenu->Append(MAINMENU_FILE_CREATE_FILTER, _T("Create &Filter...\tCtrl-F")); m_pFileMenu->Append(wxID_OPEN, _T("&Open...\tCtrl-O")); m_pFileMenu->Append(wxID_SAVE, _T("&Save\tCtrl-S")); m_pFileMenu->Append(wxID_SAVEAS, _T("Save &As...")); m_pFileMenu->Append(wxID_CLOSE, _T("&Close\tCtrl-W")); m_pFileMenu->AppendSeparator(); m_pFileMenu->Append(PJMENU_FILE_PROPERTIES, _T("P&roperties\tCtrl-I")); m_pFileMenu->AppendSeparator(); m_pFileMenu->Append(wxID_PRINT, _T("&Print...")); m_pFileMenu->Append(wxID_PRINT_SETUP, _T("Print &Setup...")); m_pFileMenu->Append(wxID_PREVIEW, _T("Print Pre&view")); m_pFileMenu->AppendSeparator(); m_pFileMenu->Append(MAINMENU_IMPORT, _T("&Import...\tCtrl-M")); m_pFileMenu->AppendSeparator(); m_pFileMenu->Append (MAINMENU_FILE_PREFERENCES, _T("Prefere&nces...")); m_pFileMenu->Append(MAINMENU_FILE_EXIT, _T("E&xit")); GetDocumentManager()->FileHistoryAddFilesToMenu(m_pFileMenu); GetDocumentManager()->FileHistoryUseMenu(m_pFileMenu); m_pConvertMenu = new wxMenu; m_pConvertMenu->Append (PJMENU_CONVERT_RECTANGULAR, _T("&Rectangular Image")); m_pConvertMenu->Append (PJMENU_CONVERT_POLAR, _T("&Polar Image...\tCtrl-L")); m_pConvertMenu->Append (PJMENU_CONVERT_FFT_POLAR, _T("FF&T->Polar Image...\tCtrl-T")); m_pConvertMenu->AppendSeparator(); m_pConvertMenu->Append (PJMENU_CONVERT_PARALLEL, _T("&Interpolate to Parallel")); // wxMenu* filter_menu = new wxMenu; // filter_menu->Append (PJMENU_ARTIFACT_REDUCTION, _T("&Artifact Reduction")); wxMenu* analyze_menu = new wxMenu; analyze_menu->Append (PJMENU_PLOT_HISTOGRAM, _T("&Plot Histogram")); analyze_menu->Append (PJMENU_PLOT_TTHETA_SAMPLING, _T("Plot T-T&heta Sampling...\tCtrl-H")); m_pReconstructMenu = new wxMenu; m_pReconstructMenu->Append (PJMENU_RECONSTRUCT_FBP, _T("&Filtered Backprojection...\tCtrl-R"), _T("Reconstruct image using filtered backprojection")); m_pReconstructMenu->Append (PJMENU_RECONSTRUCT_FBP_REBIN, _T("Filtered &Backprojection (Rebin to Parallel)...\tCtrl-B"), _T("Reconstruct image using filtered backprojection")); m_pReconstructMenu->Append (PJMENU_RECONSTRUCT_FOURIER, _T("&Inverse Fourier...\tCtrl-E"), _T("Direct inverse Fourier")); wxMenu *help_menu = new wxMenu; help_menu->Append(MAINMENU_HELP_CONTENTS, _T("&Contents\tF1")); help_menu->Append (MAINMENU_HELP_TIPS, _T("&Tips")); help_menu->Append (IDH_QUICKSTART, _T("&Quick Start")); help_menu->Append(MAINMENU_HELP_ABOUT, _T("&About")); wxMenuBar *menu_bar = new wxMenuBar; menu_bar->Append (m_pFileMenu, _T("&File")); menu_bar->Append (m_pConvertMenu, _T("&Convert")); // menu_bar->Append (filter_menu, _T("Fi<er")); menu_bar->Append (analyze_menu, _T("&Analyze")); menu_bar->Append (m_pReconstructMenu, _T("&Reconstruct")); menu_bar->Append (help_menu, _T("&Help")); subframe->SetMenuBar(menu_bar); subframe->Centre(wxBOTH); wxAcceleratorEntry accelEntries[7]; accelEntries[0].Set (wxACCEL_CTRL, static_cast('L'), PJMENU_CONVERT_POLAR); accelEntries[1].Set (wxACCEL_CTRL, static_cast('T'), PJMENU_CONVERT_FFT_POLAR); accelEntries[2].Set (wxACCEL_CTRL, static_cast('R'), PJMENU_RECONSTRUCT_FBP); accelEntries[3].Set (wxACCEL_CTRL, static_cast('B'), PJMENU_RECONSTRUCT_FBP_REBIN); accelEntries[4].Set (wxACCEL_CTRL, static_cast('E'), PJMENU_RECONSTRUCT_FOURIER); accelEntries[5].Set (wxACCEL_CTRL, static_cast('I'), PJMENU_FILE_PROPERTIES); accelEntries[6].Set (wxACCEL_CTRL, static_cast('H'), PJMENU_PLOT_TTHETA_SAMPLING); wxAcceleratorTable accelTable (7, accelEntries); subframe->SetAcceleratorTable (accelTable); return subframe; } bool ProjectionFileView::OnCreate(wxDocument *doc, long WXUNUSED(flags) ) { m_pFrame = CreateChildFrame(doc, this); SetFrame(m_pFrame); m_pCanvas = CreateCanvas (m_pFrame); m_pFrame->SetClientSize (m_pCanvas->GetBestSize()); m_pCanvas->SetClientSize (m_pCanvas->GetBestSize()); m_pFrame->SetTitle (doc->GetFilename()); m_pFrame->Show(true); Activate(true); return true; } void ProjectionFileView::OnDraw (wxDC* dc) { if (m_pBitmap && m_pBitmap->Ok()) dc->DrawBitmap (*m_pBitmap, 0, 0, false); } void ProjectionFileView::setInitialClientSize () { if (m_pFrame && m_pCanvas) { wxSize bestSize = m_pCanvas->GetBestSize(); m_pFrame->SetClientSize (bestSize); m_pFrame->Show (true); m_pFrame->SetFocus(); } } void ProjectionFileView::OnUpdate (wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint) ) { const Projections& rProj = GetDocument()->getProjections(); const int nDet = rProj.nDet(); const int nView = rProj.nView(); if (rProj.geometry() == Scanner::GEOMETRY_PARALLEL) { m_pReconstructMenu->Enable (PJMENU_RECONSTRUCT_FBP_REBIN, false); m_pConvertMenu->Enable (PJMENU_CONVERT_PARALLEL, false); } else { m_pReconstructMenu->Enable (PJMENU_RECONSTRUCT_FBP_REBIN, true); m_pConvertMenu->Enable (PJMENU_CONVERT_PARALLEL, true); } if (nDet != 0 && nView != 0) { const DetectorArray& detarray = rProj.getDetectorArray(0); const DetectorValue* detval = detarray.detValues(); double min = detval[0]; double max = detval[0]; for (int iy = 0; iy < nView; iy++) { const DetectorArray& detarray = rProj.getDetectorArray(iy); const DetectorValue* detval = detarray.detValues(); for (int ix = 0; ix < nDet; ix++) { if (min > detval[ix]) min = detval[ix]; else if (max < detval[ix]) max = detval[ix]; } } unsigned char* imageData = new unsigned char [nDet * nView * 3]; if (! imageData) { sys_error (ERR_SEVERE, "Unable to allocate memory for image display"); return; } double scale = (max - min) / 255; for (int iy2 = 0; iy2 < nView; iy2++) { const DetectorArray& detarray = rProj.getDetectorArray (iy2); const DetectorValue* detval = detarray.detValues(); for (int ix = 0; ix < nDet; ix++) { int intensity = static_cast(((detval[ix] - min) / scale) + 0.5); intensity = clamp(intensity, 0, 255); int baseAddr = (iy2 * nDet + ix) * 3; imageData[baseAddr] = imageData[baseAddr+1] = imageData[baseAddr+2] = intensity; } } wxImage image (nDet, nView, imageData, true); if (m_pBitmap) { delete m_pBitmap; m_pBitmap = NULL; } m_pBitmap = new wxBitmap (image); delete imageData; } m_pCanvas->SetScrollbars(20, 20, nDet/20, nView/20); m_pCanvas->SetBackgroundColour(*wxWHITE); if (m_pCanvas) m_pCanvas->Refresh(); } bool ProjectionFileView::OnClose (bool deleteWindow) { //GetDocumentManager()->ActivateView (this, false); if (! GetDocument() || ! GetDocument()->Close()) return false; Activate(false); if (m_pCanvas) { m_pCanvas->setView(NULL); m_pCanvas = NULL; } wxString s(wxTheApp->GetAppName()); if (m_pFrame) m_pFrame->SetTitle(s); SetFrame(NULL); if (deleteWindow) { delete m_pFrame; m_pFrame = NULL; if (GetDocument() && GetDocument()->getBadFileOpen()) ::wxYield(); // wxWindows bug workaround } return true; } // PlotFileCanvas PlotFileCanvas::PlotFileCanvas (PlotFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style) : wxScrolledWindow(frame, -1, pos, size, style), m_pView(v) { } PlotFileCanvas::~PlotFileCanvas () { } wxSize PlotFileCanvas::GetBestSize() const { return wxSize (500, 300); } void PlotFileCanvas::OnDraw(wxDC& dc) { if (m_pView) m_pView->OnDraw(& dc); } // PlotFileView IMPLEMENT_DYNAMIC_CLASS(PlotFileView, wxView) BEGIN_EVENT_TABLE(PlotFileView, wxView) EVT_MENU(PLOTMENU_FILE_PROPERTIES, PlotFileView::OnProperties) EVT_MENU(PLOTMENU_VIEW_SCALE_MINMAX, PlotFileView::OnScaleMinMax) EVT_MENU(PLOTMENU_VIEW_SCALE_AUTO, PlotFileView::OnScaleAuto) EVT_MENU(PLOTMENU_VIEW_SCALE_FULL, PlotFileView::OnScaleFull) END_EVENT_TABLE() PlotFileView::PlotFileView() : wxView(), m_pFrame(0), m_pCanvas(0), m_pEZPlot(0), m_pFileMenu(0), m_bMinSpecified(false), m_bMaxSpecified(false) { } PlotFileView::~PlotFileView() { if (m_pEZPlot) delete m_pEZPlot; GetDocumentManager()->FileHistoryRemoveMenu (m_pFileMenu); GetDocumentManager()->ActivateView(this, FALSE); } void PlotFileView::OnProperties (wxCommandEvent& event) { const PlotFile& rPlot = GetDocument()->getPlotFile(); std::ostringstream os; os << "Columns: " << rPlot.getNumColumns() << ", Records: " << rPlot.getNumRecords() << "\n"; rPlot.printHeadersBrief (os); *theApp->getLog() << _T(">>>>\n") << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("<<<<<\n"); wxMessageDialog dialogMsg (getFrameForChild(), wxConvUTF8.cMB2WX(os.str().c_str()), _T("Plot File Properties"), wxOK | wxICON_INFORMATION); dialogMsg.ShowModal(); GetDocument()->Activate(); } void PlotFileView::OnScaleAuto (wxCommandEvent& event) { const PlotFile& rPlotFile = GetDocument()->getPlotFile(); double min, max, mean, mode, median, stddev; rPlotFile.statistics (1, min, max, mean, mode, median, stddev); DialogAutoScaleParameters dialogAutoScale (getFrameForChild(), mean, mode, median, stddev, m_dAutoScaleFactor); int iRetVal = dialogAutoScale.ShowModal(); if (iRetVal == wxID_OK) { m_bMinSpecified = true; m_bMaxSpecified = true; double dMin, dMax; if (dialogAutoScale.getMinMax (&dMin, &dMax)) { m_dMinPixel = dMin; m_dMaxPixel = dMax; m_dAutoScaleFactor = dialogAutoScale.getAutoScaleFactor(); OnUpdate (this, NULL); } } GetDocument()->Activate(); } void PlotFileView::OnScaleMinMax (wxCommandEvent& event) { const PlotFile& rPlotFile = GetDocument()->getPlotFile(); double min, max; if (! m_bMinSpecified || ! m_bMaxSpecified) { if (! rPlotFile.getMinMax (1, min, max)) { *theApp->getLog() << _T("Error: unable to find Min/Max\n"); return; } } if (m_bMinSpecified) min = m_dMinPixel; if (m_bMaxSpecified) max = m_dMaxPixel; DialogGetMinMax dialogMinMax (getFrameForChild(), _T("Set Y-axis Minimum & Maximum"), min, max); int retVal = dialogMinMax.ShowModal(); if (retVal == wxID_OK) { m_bMinSpecified = true; m_bMaxSpecified = true; m_dMinPixel = dialogMinMax.getMinimum(); m_dMaxPixel = dialogMinMax.getMaximum(); OnUpdate (this, NULL); } GetDocument()->Activate(); } void PlotFileView::OnScaleFull (wxCommandEvent& event) { m_bMinSpecified = false; m_bMaxSpecified = false; OnUpdate (this, NULL); GetDocument()->Activate(); } PlotFileCanvas* PlotFileView::CreateCanvas (wxFrame* parent) { PlotFileCanvas* pCanvas; pCanvas = new PlotFileCanvas (this, parent, wxPoint(-1,-1), wxSize(-1,-1), wxFULL_REPAINT_ON_RESIZE); pCanvas->SetBackgroundColour(*wxWHITE); pCanvas->ClearBackground(); return pCanvas; } #if CTSIM_MDI wxDocMDIChildFrame* #else wxDocChildFrame* #endif PlotFileView::CreateChildFrame(wxDocument *doc, wxView *view) { #ifdef CTSIM_MDI wxDocMDIChildFrame *subframe = new wxDocMDIChildFrame (doc, view, theApp->getMainFrame(), -1, _T("Plot Frame"), wxPoint(-1,-1), wxSize(-1,-1), wxDEFAULT_FRAME_STYLE); #else wxDocChildFrame *subframe = new wxDocChildFrame(doc, view, theApp->getMainFrame(), -1, _T("Plot Frame"), wxPoint(-1,-1), wxSize(-1,-1), wxDEFAULT_FRAME_STYLE); #endif theApp->setIconForFrame (subframe); m_pFileMenu = new wxMenu; m_pFileMenu->Append(MAINMENU_FILE_CREATE_PHANTOM, _T("Cr&eate Phantom...\tCtrl-P")); m_pFileMenu->Append(MAINMENU_FILE_CREATE_FILTER, _T("Create &Filter...\tCtrl-F")); m_pFileMenu->Append(wxID_OPEN, _T("&Open...\tCtrl-O")); m_pFileMenu->Append(wxID_SAVE, _T("&Save\tCtrl-S")); m_pFileMenu->Append(wxID_SAVEAS, _T("Save &As...")); m_pFileMenu->Append(wxID_CLOSE, _T("&Close\tCtrl-W")); m_pFileMenu->AppendSeparator(); m_pFileMenu->Append(PLOTMENU_FILE_PROPERTIES, _T("P&roperties\tCtrl-I")); m_pFileMenu->AppendSeparator(); m_pFileMenu->Append(wxID_PRINT, _T("&Print...")); m_pFileMenu->Append(wxID_PRINT_SETUP, _T("Print &Setup...")); m_pFileMenu->Append(wxID_PREVIEW, _T("Print Pre&view")); m_pFileMenu->AppendSeparator(); m_pFileMenu->Append(MAINMENU_IMPORT, _T("&Import...\tCtrl-M")); m_pFileMenu->AppendSeparator(); m_pFileMenu->Append (MAINMENU_FILE_PREFERENCES, _T("Prefere&nces...")); m_pFileMenu->Append(MAINMENU_FILE_EXIT, _T("E&xit")); GetDocumentManager()->FileHistoryAddFilesToMenu(m_pFileMenu); GetDocumentManager()->FileHistoryUseMenu(m_pFileMenu); wxMenu *view_menu = new wxMenu; view_menu->Append(PLOTMENU_VIEW_SCALE_MINMAX, _T("Display Scale &Set...\tCtrl-E")); view_menu->Append(PLOTMENU_VIEW_SCALE_AUTO, _T("Display Scale &Auto...\tCtrl-A")); view_menu->Append(PLOTMENU_VIEW_SCALE_FULL, _T("Display &Full Scale\tCtrl-U")); wxMenu *help_menu = new wxMenu; help_menu->Append(MAINMENU_HELP_CONTENTS, _T("&Contents\tF1")); help_menu->Append (MAINMENU_HELP_TIPS, _T("&Tips")); help_menu->Append (IDH_QUICKSTART, _T("&Quick Start")); help_menu->Append(MAINMENU_HELP_ABOUT, _T("&About")); wxMenuBar *menu_bar = new wxMenuBar; menu_bar->Append(m_pFileMenu, _T("&File")); menu_bar->Append(view_menu, _T("&View")); menu_bar->Append(help_menu, _T("&Help")); subframe->SetMenuBar(menu_bar); subframe->Centre(wxBOTH); wxAcceleratorEntry accelEntries[4]; accelEntries[0].Set (wxACCEL_CTRL, static_cast('E'), PLOTMENU_VIEW_SCALE_MINMAX); accelEntries[1].Set (wxACCEL_CTRL, static_cast('A'), PLOTMENU_VIEW_SCALE_AUTO); accelEntries[2].Set (wxACCEL_CTRL, static_cast('U'), PLOTMENU_VIEW_SCALE_FULL); accelEntries[3].Set (wxACCEL_CTRL, static_cast('I'), PLOTMENU_FILE_PROPERTIES); wxAcceleratorTable accelTable (4, accelEntries); subframe->SetAcceleratorTable (accelTable); return subframe; } bool PlotFileView::OnCreate (wxDocument *doc, long WXUNUSED(flags) ) { m_bMinSpecified = false; m_bMaxSpecified = false; m_dAutoScaleFactor = 1.; m_pFrame = CreateChildFrame(doc, this); SetFrame(m_pFrame); m_pCanvas = CreateCanvas (m_pFrame); m_pFrame->SetClientSize (m_pCanvas->GetBestSize()); m_pCanvas->SetClientSize (m_pCanvas->GetBestSize()); m_pFrame->SetTitle (_T("test")); *theApp->getLog() << _T("Plot doc name: ") << doc->GetDocumentName() << _T("\n"); *theApp->getLog() << _T("Plot file name: ") << doc->GetFilename() << _T("\n"); m_pFrame->SetTitle (doc->GetFilename()); m_pFrame->Show(true); Activate(true); return true; } void PlotFileView::setInitialClientSize () { if (m_pFrame && m_pCanvas) { wxSize bestSize = m_pCanvas->GetBestSize(); m_pFrame->SetClientSize (bestSize); m_pFrame->Show (true); m_pFrame->SetFocus(); } } void PlotFileView::OnDraw (wxDC* dc) { const PlotFile& rPlotFile = GetDocument()->getPlotFile(); const int iNColumns = rPlotFile.getNumColumns(); const int iNRecords = rPlotFile.getNumRecords(); if (iNColumns > 0 && iNRecords > 0) { int xsize, ysize; m_pCanvas->GetClientSize (&xsize, &ysize); SGPDriver driver (dc, xsize, ysize); SGP sgp (driver); if (m_pEZPlot) m_pEZPlot->plot (&sgp); } } void PlotFileView::OnUpdate (wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint) ) { const PlotFile& rPlotFile = GetDocument()->getPlotFile(); const int iNColumns = rPlotFile.getNumColumns(); const int iNRecords = rPlotFile.getNumRecords(); const bool bScatterPlot = rPlotFile.getIsScatterPlot(); if (iNColumns > 0 && iNRecords > 0) { if (m_pEZPlot) delete m_pEZPlot; m_pEZPlot = new EZPlot; for (unsigned int iEzset = 0; iEzset < rPlotFile.getNumEzsetCommands(); iEzset++) m_pEZPlot->ezset (rPlotFile.getEzsetCommand (iEzset)); if (m_bMinSpecified) { std::ostringstream os; os << "ymin " << m_dMinPixel; m_pEZPlot->ezset (os.str()); } if (m_bMaxSpecified) { std::ostringstream os; os << "ymax " << m_dMaxPixel; m_pEZPlot->ezset (os.str()); } m_pEZPlot->ezset("box"); m_pEZPlot->ezset("grid"); double* pdX = new double [iNRecords]; double* pdY = new double [iNRecords]; if (! bScatterPlot) { rPlotFile.getColumn (0, pdX); for (int iCol = 1; iCol < iNColumns; iCol++) { rPlotFile.getColumn (iCol, pdY); m_pEZPlot->addCurve (pdX, pdY, iNRecords); } } else { rPlotFile.getColumn (0, pdX); rPlotFile.getColumn (1, pdY); m_pEZPlot->addCurve (pdX, pdY, iNRecords); } delete pdX; delete pdY; } if (m_pCanvas) { m_pCanvas->Refresh(); } } bool PlotFileView::OnClose (bool deleteWindow) { if (! GetDocument() || ! GetDocument()->Close()) return false; Activate(false); if (m_pCanvas) { m_pCanvas->setView (NULL); m_pCanvas = NULL; } wxString s(wxTheApp->GetAppName()); if (m_pFrame) m_pFrame->SetTitle(s); SetFrame(NULL); if (deleteWindow) { delete m_pFrame; m_pFrame = NULL; if (GetDocument() && GetDocument()->getBadFileOpen()) ::wxYield(); // wxWindows bug workaround } return true; } //////////////////////////////////////////////////////////////// IMPLEMENT_DYNAMIC_CLASS(TextFileView, wxView) TextFileView::~TextFileView() { GetDocumentManager()->FileHistoryRemoveMenu (m_pFileMenu); GetDocumentManager()->ActivateView(this, FALSE);; } bool TextFileView::OnCreate(wxDocument *doc, long WXUNUSED(flags) ) { m_pFrame = CreateChildFrame(doc, this); SetFrame (m_pFrame); int width, height; m_pFrame->GetClientSize(&width, &height); m_pFrame->SetTitle(doc->GetFilename()); m_pCanvas = new TextFileCanvas (this, m_pFrame, wxPoint(-1,-1), wxSize(width, height), wxTE_MULTILINE | wxTE_READONLY); m_pFrame->Show (true); Activate (true); return true; } // Handled by wxTextWindow void TextFileView::OnDraw(wxDC *WXUNUSED(dc) ) { } void TextFileView::OnUpdate (wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint) ) { } bool TextFileView::OnClose (bool deleteWindow) { if (! theApp->getMainFrame()->getShuttingDown()) return false; Activate(false); //GetDocumentManager()->ActivateView (this, false); if (! GetDocument() || ! GetDocument()->Close()) return false; SetFrame(NULL); if (deleteWindow) { delete m_pFrame; m_pFrame = NULL; if (GetDocument() && GetDocument()->getBadFileOpen()) ::wxYield(); // wxWindows bug workaround } return TRUE; } #if CTSIM_MDI wxDocMDIChildFrame* #else wxDocChildFrame* #endif TextFileView::CreateChildFrame (wxDocument *doc, wxView *view) { #if CTSIM_MDI wxDocMDIChildFrame* subframe = new wxDocMDIChildFrame (doc, view, theApp->getMainFrame(), -1, _T("TextFile Frame"), wxPoint(-1, -1), wxSize(-1,-1), wxDEFAULT_FRAME_STYLE, _T("Log")); #else wxDocChildFrame* subframe = new wxDocChildFrame (doc, view, theApp->getMainFrame(), -1, _T("TextFile Frame"), wxPoint(-1, -1), wxSize(300, 150), wxDEFAULT_FRAME_STYLE, _T("Log")); #endif theApp->setIconForFrame (subframe); m_pFileMenu = new wxMenu; m_pFileMenu->Append(MAINMENU_FILE_CREATE_PHANTOM, _T("Cr&eate Phantom...\tCtrl-P")); m_pFileMenu->Append(MAINMENU_FILE_CREATE_FILTER, _T("Create &Filter...\tCtrl-F")); m_pFileMenu->Append(wxID_OPEN, _T("&Open...\tCtrl-O")); m_pFileMenu->Append(wxID_SAVE, _T("&Save\tCtrl-S")); m_pFileMenu->Append(wxID_SAVEAS, _T("Save &As...")); // m_pFileMenu->Append(wxID_CLOSE, _T("&Close\tCtrl-W")); m_pFileMenu->AppendSeparator(); m_pFileMenu->Append(wxID_PRINT, _T("&Print...")); m_pFileMenu->Append(wxID_PRINT_SETUP, _T("Print &Setup...")); m_pFileMenu->Append(wxID_PREVIEW, _T("Print Pre&view")); m_pFileMenu->AppendSeparator(); m_pFileMenu->Append(MAINMENU_IMPORT, _T("&Import...\tCtrl-M")); m_pFileMenu->AppendSeparator(); m_pFileMenu->Append (MAINMENU_FILE_PREFERENCES, _T("Prefere&nces...")); m_pFileMenu->Append(MAINMENU_FILE_EXIT, _T("E&xit")); GetDocumentManager()->FileHistoryAddFilesToMenu(m_pFileMenu); GetDocumentManager()->FileHistoryUseMenu(m_pFileMenu); wxMenu *help_menu = new wxMenu; help_menu->Append(MAINMENU_HELP_CONTENTS, _T("&Contents\tF1")); help_menu->Append (MAINMENU_HELP_TIPS, _T("&Tips")); help_menu->Append (IDH_QUICKSTART, _T("&Quick Start")); help_menu->Append(MAINMENU_HELP_ABOUT, _T("&About")); wxMenuBar *menu_bar = new wxMenuBar; menu_bar->Append(m_pFileMenu, _T("&File")); menu_bar->Append(help_menu, _T("&Help")); subframe->SetMenuBar(menu_bar); subframe->Centre(wxBOTH); return subframe; } // Define a constructor for my text subwindow TextFileCanvas::TextFileCanvas (TextFileView* v, wxFrame* frame, const wxPoint& pos, const wxSize& size, long style) : wxTextCtrl (frame, -1, _T(""), pos, size, style), m_pView(v) { } TextFileCanvas::~TextFileCanvas () { m_pView = NULL; } wxSize TextFileCanvas::GetBestSize() const { int xSize, ySize; theApp->getMainFrame()->GetClientSize (&xSize, &ySize); xSize = maxValue (xSize, ySize); #ifdef CTSIM_MDI ySize = xSize = (xSize / 4); #else ySize = xSize; #endif return wxSize (xSize, ySize); } ctsim-6.0.2/src/dlgprojections.h0000644000175000017500000000653211240454454015647 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: dlgprojections.h ** Purpose: Headers for Projection Collection Animation Dialog ** Programmer: Kevin Rosenberg ** Date Started: August 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef __DLGPROJECTIONS_H_ #define __DLGPROJECTIONS_H_ #include "wx/setup.h" #include "wx/dialog.h" #include "wx/dcmemory.h" class wxButton; class wxStaticText; class Projections; class Phantom; class SGP; class Scanner; class SGPDriver; class ProjectionsDialog : public wxDialog { DECLARE_DYNAMIC_CLASS(ProjectionsDialog) public: ProjectionsDialog (Scanner& rScanner, Projections& rProj, const Phantom& rPhantom, const int iTrace, wxWindow *parent); ~ProjectionsDialog(); /* Perform projection on view number return true if ABORT button has not been pressed */ bool projectView(int iViewNumber); /* Can be called to continue after the cancel button has been pressed, but the program decided to continue the operation (e.g., user didn't confirm it) */ void Resume() { m_state = Continue; } // implementation from now on // callback for optional abort button void OnCancel(wxCommandEvent& event); // callback to disable "hard" window closing void OnClose(wxCloseEvent& event); void OnPaint(wxPaintEvent& event); void OnPause(wxCommandEvent& event); void OnStep(wxCommandEvent& event); bool isPaused() const {return m_state == Paused;} bool isCancelled() const {return m_state == Cancelled;} private: // parent top level window (may be NULL) wxWindow *m_parentTop; int m_iLastView; int m_iClientX; // size of client window int m_iClientY; Scanner& m_rScanner; Projections& m_rProjections; const Phantom& m_rPhantom; SGPDriver* m_pSGPDriver; SGP* m_pSGP; const int m_iTrace; wxDC* m_pDC; wxButton *m_btnAbort; // the abort button (or NULL if none) wxButton *m_btnPause; wxButton *m_btnStep; wxMemoryDC m_memoryDC; // for restoring image on OnPaint wxBitmap m_bitmap; // continue processing or not (return value for Update()) enum { Uncancellable = -1, // dialog can't be canceled Paused, Cancelled, // can be cancelled and, in fact, was Continue, // can be cancelled but wasn't Finished // finished, waiting to be removed from screen } m_state; enum { ID_BTN_PAUSE = 19996, ID_BTN_STEP = 19997 }; void showView (int iViewNumber); DECLARE_EVENT_TABLE() }; #endif ctsim-6.0.2/src/Makefile.in0000644000175000017500000005056013254406203014511 0ustar kevinkevin# 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 = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ bin_PROGRAMS = ctsim$(EXEEXT) subdir = src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/scripts/ax_check_compile_flag.m4 \ $(top_srcdir)/scripts/ax_ext.m4 \ $(top_srcdir)/scripts/ax_gcc_x86_avx_xgetbv.m4 \ $(top_srcdir)/scripts/ax_gcc_x86_cpuid.m4 \ $(top_srcdir)/scripts/ax_openmp.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_ctsim_OBJECTS = ctsim.$(OBJEXT) docs.$(OBJEXT) views.$(OBJEXT) \ dialogs.$(OBJEXT) dlgprojections.$(OBJEXT) \ dlgreconstruct.$(OBJEXT) graph3dview.$(OBJEXT) tips.$(OBJEXT) \ threadrecon.$(OBJEXT) backgroundmgr.$(OBJEXT) \ backgroundsupr.$(OBJEXT) threadproj.$(OBJEXT) \ threadraster.$(OBJEXT) dlgezplot.$(OBJEXT) ctsim_OBJECTS = $(am_ctsim_OBJECTS) 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@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/scripts/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 = $(ctsim_SOURCES) DIST_SOURCES = $(ctsim_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # 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 am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/scripts/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPUEXT_FLAGS = @CPUEXT_FLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ 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@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIMD_FLAGS = @SIMD_FLAGS@ STRIP = @STRIP@ VERSION = @VERSION@ XMKMF = @XMKMF@ X_BASIC_LIBS = @X_BASIC_LIBS@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ X_TOOLKIT_LIBS = @X_TOOLKIT_LIBS@ 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 = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ cgibindir = @cgibindir@ cgibinurl = @cgibinurl@ cgiprograms = @cgiprograms@ ctlibs = @ctlibs@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldata = @htmldata@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lamdefs = @lamdefs@ lamdir = @lamdir@ lamprograms = @lamprograms@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mpienable = @mpienable@ my_includes = @my_includes@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ webdatadir = @webdatadir@ webdataurl = @webdataurl@ webenabled = @webenabled@ wx_cppflags = @wx_cppflags@ wxcflags = @wxcflags@ wxconfig = @wxconfig@ wxlibs = @wxlibs@ AM_CPPFLAGS = @my_includes@ @wx_cppflags@ ctsim_SOURCES = ctsim.cpp docs.cpp views.cpp dialogs.cpp ctsim.h docs.h \ views.h dialogs.h dlgprojections.cpp dlgprojections.h dlgreconstruct.cpp \ dlgreconstruct.h graph3dview.cpp graph3dview.h ctsim-map.h ctsim.xpm \ splash.xpm tips.cpp tips.h threadrecon.cpp threadrecon.h backgroundmgr.cpp \ backgroundmgr.h backgroundsupr.cpp backgroundsupr.h threadproj.cpp \ threadproj.h threadraster.cpp threadraster.h dlgezplot.cpp dlgezplot.h ctsim_DEPENDENCIES = ../libctgraphics/libctgraphics.a ../libctsupport/libctsupport.a ../libctsim/libctsim.a ../include/ct.h ctsim_LDADD = -L../libctgraphics -L../libctsupport -L../libctsim @ctlibs@ all: all-am .SUFFIXES: .SUFFIXES: .cpp .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): 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) ctsim$(EXEEXT): $(ctsim_OBJECTS) $(ctsim_DEPENDENCIES) $(EXTRA_ctsim_DEPENDENCIES) @rm -f ctsim$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(ctsim_OBJECTS) $(ctsim_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backgroundmgr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backgroundsupr.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctsim.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dialogs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dlgezplot.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dlgprojections.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dlgreconstruct.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/docs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/graph3dview.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threadproj.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threadraster.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threadrecon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tips.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/views.Po@am__quote@ .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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 $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.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) '$<'` 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" 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 distdir: $(DISTFILES) @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 check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; 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: clean-generic: 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) 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-generic mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: 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-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(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 .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-binPROGRAMS clean-generic cscopelist-am ctags ctags-am \ distclean distclean-compile distclean-generic distclean-tags \ distdir 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-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 tags tags-am uninstall uninstall-am \ uninstall-binPROGRAMS .PRECIOUS: Makefile # 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: ctsim-6.0.2/src/ctsim.cpp0000644000175000017500000011054613254524334014276 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: ctsim.cpp ** Purpose: Top-level routines of CTSim program ** Programmer: Kevin Rosenberg ** Date Started: July 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifdef MSVC #define strdup _strdup #endif #include "wx/wxprec.h" #ifndef WX_PRECOMP #include "wx/wx.h" #endif #include "wx/image.h" #include "wx/filesys.h" #include "wx/fs_zip.h" #include "wx/cmdline.h" #ifdef __WXMSW__ #include "wx/msw/helpchm.h" #endif #if !wxUSE_DOC_VIEW_ARCHITECTURE #error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in setup.h! #endif #include "ct.h" #include "ctndicom.h" #include "ctsim.h" #include "docs.h" #include "views.h" #include "dialogs.h" #include "tips.h" #include "backgroundmgr.h" #if defined(HAVE_CONFIG_H) #include "config.h" #endif #if defined(HAVE_GETOPT_H) || defined(HAVE_GETOPT_LONG) #ifdef MSVC #define __STDC__ 1 #endif #include "getopt.h" #ifdef MSVC #undef __STDC__ #endif #endif IMPLEMENT_APP(CTSimApp) CTSimApp::CTSimApp() : m_bAdvancedOptions(false), m_bSetModifyNewDocs(true), m_bVerboseLogging(false), m_bShowStartupTips(true), m_iCurrentTip(0), m_bUseBackgroundTasks(false), m_docManager(NULL), m_pFrame(NULL), m_pConfig(0), m_pLog(0), m_pLogDoc(0), m_bPrintCmdLineImages(false), m_bCmdLineVerboseFlag(false) { theApp = this; } #ifdef HAVE_SYS_TIME_H #include #endif #ifdef HAVE_SYS_RESOURCE_H #include #endif void CTSimApp::OnInitCmdLine(wxCmdLineParser& parser) { static const wxCmdLineEntryDesc cmdLineDesc[] = { { wxCMD_LINE_SWITCH, wxT_2("l"), wxT_2("verbose"), wxT_2("verbose logging") }, { wxCMD_LINE_SWITCH, wxT_2("v"), wxT_2("version"), wxT_2("print version") }, { wxCMD_LINE_SWITCH, wxT_2("p"), wxT_2("print"), wxT_2("print images from command line"), wxCMD_LINE_VAL_NONE, wxCMD_LINE_PARAM_OPTIONAL }, { wxCMD_LINE_SWITCH, wxT_2("h"), wxT_2("help"), wxT_2("print this help message"), wxCMD_LINE_VAL_NONE, wxCMD_LINE_PARAM_OPTIONAL | wxCMD_LINE_OPTION_HELP }, { wxCMD_LINE_PARAM, NULL, NULL, wxT_2("input file"), wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL | wxCMD_LINE_PARAM_MULTIPLE }, wxCMD_LINE_DESC_END }; parser.SetDesc(cmdLineDesc); } bool CTSimApp::OnCmdLineParsed(wxCmdLineParser& parser) { if (wxApp::OnCmdLineParsed(parser) == false) return false; if (parser.Found(_T("version"))) { #ifdef VERSION std::cout << "Version: " << VERSION << std::endl; #elif defined(CTSIMVERSION) std::cout << "Version: " << CTSIMVERSION << std::endl; #else std::cout << "Version: " << "Unknown" << std::endl; #endif return false; } if (parser.Found(_T("print"))) { m_bPrintCmdLineImages = true; } if (parser.Found(_T("verbose"))) { m_bCmdLineVerboseFlag = true; } return true; } bool CTSimApp::OnInit() { if (! wxApp::OnInit()) return false; #ifdef HAVE_SETPRIORITY setpriority (PRIO_PROCESS, 0, 15); // set to low scheduling priority #endif openConfig(); g_bRunningWXWindows = true; m_docManager = new wxDocManager (wxDEFAULT_DOCMAN_FLAGS, true); m_pDocTemplImage = new wxDocTemplate (m_docManager, _T("ImageFile"), _T("*.if"), _T(""), _T("if"), _T("ImageFile"), _T("ImageView"), CLASSINFO(ImageFileDocument), CLASSINFO(ImageFileView)); m_pDocTemplProjection = new wxDocTemplate (m_docManager, _T("ProjectionFile"), _T("*.pj"), _T(""), _T("pj"), _T("ProjectionFile"), _T("ProjectionView"), CLASSINFO(ProjectionFileDocument), CLASSINFO(ProjectionFileView)); m_pDocTemplPhantom = new wxDocTemplate (m_docManager, _T("PhantomFile"), _T("*.phm"), _T(""), _T("phm"), _T("PhantomFile"), _T("PhantomView"), CLASSINFO(PhantomFileDocument), CLASSINFO(PhantomFileView)); m_pDocTemplPlot = new wxDocTemplate (m_docManager, _T("PlotFile"), _T("*.plt"), _T(""), _T("plt"), _T("PlotFile"), _T("PlotView"), CLASSINFO(PlotFileDocument), CLASSINFO(PlotFileView)); m_pDocTemplText = new wxDocTemplate (m_docManager, _T("TextFile"), _T("*.txt"), _T(""), _T("txt"), _T("TextFile"), _T("TextView"), CLASSINFO(TextFileDocument), CLASSINFO(TextFileView), wxTEMPLATE_INVISIBLE); #if wxUSE_GLCANVAS m_pDocTemplGraph3d = new wxDocTemplate (m_docManager, _T("Graph3dFile"), _T("*.g3d"), _T(""), _T("g3d"), _T("Graph3dFile"), _T("Graph3dView"), CLASSINFO(Graph3dFileDocument), CLASSINFO(Graph3dFileView), wxTEMPLATE_INVISIBLE); #endif #if wxUSE_GIF wxImage::AddHandler(new wxGIFHandler); // Required for images in the online documentation #endif #if wxUSE_STREAMS && wxUSE_ZIPSTREAM && wxUSE_ZLIB wxFileSystem::AddHandler(new wxZipFSHandler); // Required for advanced HTML help #endif // Create the main frame window int xDisplay, yDisplay; ::wxDisplaySize (&xDisplay, &yDisplay); #ifdef CTSIM_MDI wxSize frameSize(nearest(xDisplay * .75), nearest(yDisplay * .75)); #else wxSize frameSize(nearest(xDisplay * .6), nearest(yDisplay * .4)); #endif m_pFrame = new MainFrame(m_docManager, (wxFrame *) NULL, -1, _T("CTSim"), wxPoint(0, 0), frameSize, wxDEFAULT_FRAME_STYLE); setIconForFrame (m_pFrame); m_pFrame->Centre(wxBOTH); m_pFrame->Show(true); SetTopWindow (m_pFrame); if (m_pConfig) m_docManager->FileHistoryLoad(*m_pConfig); #ifdef CTSIM_MDI m_pLogDoc = newTextDoc(); if (m_pLogDoc) { m_pLog = m_pLogDoc->getTextCtrl(); m_pLogDoc->SetDocumentName(_T("Log.txt")); m_pLogDoc->SetFilename(_T("Log.txt")); m_pLogDoc->getView()->getFrame()->SetTitle(_T("Log")); int xSize, ySize; m_pFrame->GetClientSize(&xSize, &ySize); int yLogSize = ySize / 4; m_pLogDoc->getView()->getFrame()->SetSize (0, ySize - yLogSize, xSize, yLogSize); m_pLogDoc->getView()->getFrame()->Show (true); } else #else m_pLog = new wxTextCtrl (m_pFrame, -1, _T("Log Window\n"), wxPoint(0, 0), frameSize, wxTE_MULTILINE | wxTE_READONLY); #endif wxLog::SetActiveTarget (new wxLogTextCtrl(m_pLog)); wxString helpDir; if (! m_pConfig->Read(_T("HelpDir"), &helpDir)) helpDir = ::wxGetCwd(); #ifdef CTSIM_WINHELP if (! m_pFrame->getWinHelpController().Initialize(helpDir + _T("/ctsim"))) *m_pLog << _T("Cannot initialize the Windows Help system") << _T("\n"); #else #ifdef DATADIR wxString docDir (DATADIR, *wxConvCurrent); #else wxString docDir (::wxGetCwd()); #endif wxString docFile = docDir + _T("ctsim.htb"); if (! m_pFrame->getHtmlHelpController().AddBook(docFile) && ! m_pFrame->getHtmlHelpController().AddBook(_T("/usr/share/ctsim/ctsim.htb")) && ! m_pFrame->getHtmlHelpController().AddBook(_T("/tmp/ctsim.htb"))) *m_pLog << _T("Cannot initialize the HTML Help system") << _T("\n"); else { if (::wxDirExists (_T("/tmp"))) m_pFrame->getHtmlHelpController().SetTempDir(_T("/tmp")); m_pFrame->getHtmlHelpController().UseConfig (m_pConfig); } #endif for (int i = optind + 1; i <= argc; i++) { wxString filename = argv [i - 1]; wxDocument* pNewDoc = m_docManager->CreateDocument (filename, wxDOC_SILENT); if (m_bPrintCmdLineImages) { wxView* pNewView = pNewDoc->GetFirstView(); wxPrintout *printout = pNewView->OnCreatePrintout(); if (printout) { wxPrinter printer; printer.Print(pNewView->GetFrame(), printout, TRUE); delete printout; } wxCommandEvent nullEvent; nullEvent.SetId (wxID_CLOSE); m_docManager->OnFileClose (nullEvent); } } if (m_bPrintCmdLineImages) { wxCommandEvent closeEvent; closeEvent.SetInt (MAINMENU_FILE_EXIT); m_pFrame->GetEventHandler()->ProcessEvent(closeEvent); } if (getStartupTips()) ShowTips(); #ifdef HAVE_WXTHREADS m_pBackgroundMgr = new BackgroundManager; #endif return true; } void CTSimApp::ShowTips() { CTSimTipProvider tipProvider (m_iCurrentTip); setStartupTips (::wxShowTip (m_pFrame, &tipProvider, getStartupTips())); m_iCurrentTip = tipProvider.GetCurrentTip(); } #include "./ctsim.xpm" void CTSimApp::setIconForFrame(wxFrame* pFrame) { wxIcon iconApp (ctsim16_xpm); if (iconApp.Ok()) pFrame->SetIcon (iconApp); } void CTSimApp::usage(const char* program) { std::cout << "usage: " << fileBasename(program) << " [files-to-open...] [OPTIONS]\n"; std::cout << "Computed Tomography Simulator (Graphical Shell)\n"; std::cout << "\n"; std::cout << " --version Display version\n"; std::cout << " --help Display this help message\n"; } int CTSimApp::OnExit() { closeConfig(); #ifdef HAVE_DMALLOC dmalloc_shutdown(); #endif return 0; } void CTSimApp::openConfig() { #ifdef MSVC m_pConfig = new wxConfig(_T("ctsim"), _T("Kevin Rosenberg"), _T(""), _T(""), wxCONFIG_USE_LOCAL_FILE); #else m_pConfig = new wxConfig(_T("ctsim"), _T("Kevin Rosenberg"), _T(".ctsim"), _T(""), wxCONFIG_USE_LOCAL_FILE); #endif wxConfigBase::Set(m_pConfig); m_pConfig->Read (_T("AdvancedOptions"), &m_bAdvancedOptions); m_pConfig->Read (_T("SetModifyNewDocs"), &m_bSetModifyNewDocs); m_pConfig->Read (_T("VerboseLogging"), &m_bVerboseLogging); m_pConfig->Read (_T("StartupTips"), &m_bShowStartupTips); m_pConfig->Read (_T("CurrentTip"), &m_iCurrentTip); m_pConfig->Read (_T("UseBackgroundTasks"), &m_bUseBackgroundTasks); #ifdef HAVE_FFTW wxString strFftwWisdom; m_pConfig->Read (_T("FftwWisdom"), strFftwWisdom); if (strFftwWisdom.size() > 0) fftw_import_wisdom_from_string (strFftwWisdom.mb_str(wxConvUTF8)); #endif } void CTSimApp::closeConfig() { m_pConfig->Write (_T("AdvancedOptions"), m_bAdvancedOptions); m_pConfig->Write (_T("SetModifyNewDocs"), m_bSetModifyNewDocs); m_pConfig->Write (_T("VerboseLogging"), m_bVerboseLogging); m_pConfig->Write (_T("StartupTips"), m_bShowStartupTips); m_pConfig->Write (_T("CurrentTip"), m_iCurrentTip); m_pConfig->Write (_T("UseBackgroundTasks"), m_bUseBackgroundTasks); #ifdef HAVE_FFTW const char* const pszWisdom = fftw_export_wisdom_to_string(); wxString strFftwWisdom (pszWisdom, *wxConvCurrent); fftw_free ((void*) pszWisdom); m_pConfig->Write (_T("FftwWisdom"), strFftwWisdom); #endif delete m_pConfig; } // Top-level window for CTSim #if CTSIM_MDI IMPLEMENT_CLASS(MainFrame, wxMDIParentFrame) BEGIN_EVENT_TABLE(MainFrame, wxMDIParentFrame) #else IMPLEMENT_CLASS(MainFrame, wxDocParentFrame) BEGIN_EVENT_TABLE(MainFrame, wxDocParentFrame) #endif EVT_MENU(MAINMENU_FILE_PREFERENCES, MainFrame::OnPreferences) EVT_MENU(MAINMENU_HELP_ABOUT, MainFrame::OnAbout) EVT_MENU(MAINMENU_HELP_CONTENTS, MainFrame::OnHelpContents) EVT_MENU(MAINMENU_HELP_TIPS, MainFrame::OnHelpTips) EVT_MENU(MAINMENU_IMPORT, MainFrame::OnImport) EVT_MENU(IDH_QUICKSTART, MainFrame::OnHelpButton) EVT_MENU(MAINMENU_LOG_EVENT, MainFrame::OnLogEvent) EVT_MENU(NEW_IMAGEFILE_EVENT, MainFrame::OnNewImageFile) EVT_MENU(NEW_PROJECTIONFILE_EVENT, MainFrame::OnNewProjectionFile) EVT_BUTTON(IDH_DLG_RASTERIZE, MainFrame::OnHelpButton) EVT_BUTTON(IDH_DLG_PROJECTIONS, MainFrame::OnHelpButton) EVT_BUTTON(IDH_DLG_RECONSTRUCTION, MainFrame::OnHelpButton) EVT_BUTTON(IDH_DLG_FILTER, MainFrame::OnHelpButton) EVT_BUTTON(IDH_DLG_MINMAX, MainFrame::OnHelpButton) EVT_BUTTON(IDH_DLG_EXPORT, MainFrame::OnHelpButton) EVT_BUTTON(IDH_DLG_PHANTOM, MainFrame::OnHelpButton) EVT_BUTTON(IDH_DLG_COMPARISON, MainFrame::OnHelpButton) EVT_BUTTON(IDH_DLG_PREFERENCES, MainFrame::OnHelpButton) EVT_BUTTON(IDH_DLG_POLAR, MainFrame::OnHelpButton) EVT_BUTTON(IDH_DLG_AUTOSCALE, MainFrame::OnHelpButton) EVT_SIZE(MainFrame::OnSize) #if defined(CTSIM_WINHELP) && (defined(DEBUG) || defined(_DEBUG)) EVT_MENU(MAINMENU_HELP_SECONDARY, MainFrame::OnHelpSecondary) #endif EVT_MENU(MAINMENU_FILE_CREATE_PHANTOM, MainFrame::OnCreatePhantom) EVT_MENU(MAINMENU_FILE_CREATE_FILTER, MainFrame::OnCreateFilter) EVT_MENU(MAINMENU_FILE_EXIT, MainFrame::OnExit) EVT_MENU_RANGE(wxID_FILE1, wxID_FILE9, MainFrame::OnMRUFile) EVT_MENU(MAINMENU_WINDOW_BASE, MainFrame::OnWindowMenu0) EVT_MENU(MAINMENU_WINDOW_BASE+1, MainFrame::OnWindowMenu1) EVT_MENU(MAINMENU_WINDOW_BASE+2, MainFrame::OnWindowMenu2) EVT_MENU(MAINMENU_WINDOW_BASE+3, MainFrame::OnWindowMenu3) EVT_MENU(MAINMENU_WINDOW_BASE+4, MainFrame::OnWindowMenu4) EVT_MENU(MAINMENU_WINDOW_BASE+5, MainFrame::OnWindowMenu5) EVT_MENU(MAINMENU_WINDOW_BASE+6, MainFrame::OnWindowMenu6) EVT_MENU(MAINMENU_WINDOW_BASE+7, MainFrame::OnWindowMenu7) EVT_MENU(MAINMENU_WINDOW_BASE+8, MainFrame::OnWindowMenu8) EVT_MENU(MAINMENU_WINDOW_BASE+9, MainFrame::OnWindowMenu9) EVT_MENU(MAINMENU_WINDOW_BASE+10, MainFrame::OnWindowMenu10) EVT_MENU(MAINMENU_WINDOW_BASE+11, MainFrame::OnWindowMenu11) EVT_MENU(MAINMENU_WINDOW_BASE+12, MainFrame::OnWindowMenu12) EVT_MENU(MAINMENU_WINDOW_BASE+13, MainFrame::OnWindowMenu13) EVT_MENU(MAINMENU_WINDOW_BASE+14, MainFrame::OnWindowMenu14) EVT_MENU(MAINMENU_WINDOW_BASE+15, MainFrame::OnWindowMenu15) EVT_MENU(MAINMENU_WINDOW_BASE+16, MainFrame::OnWindowMenu16) EVT_MENU(MAINMENU_WINDOW_BASE+17, MainFrame::OnWindowMenu17) EVT_MENU(MAINMENU_WINDOW_BASE+18, MainFrame::OnWindowMenu18) EVT_MENU(MAINMENU_WINDOW_BASE+19, MainFrame::OnWindowMenu19) EVT_UPDATE_UI_RANGE(MAINMENU_WINDOW_BASE, MAINMENU_WINDOW_BASE+20, MainFrame::OnUpdateUI) END_EVENT_TABLE() #if CTSIM_MDI MainFrame::MainFrame(wxDocManager *manager, wxFrame *frame, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, const long type) : wxDocMDIParentFrame(manager, NULL, id, title, pos, size, type, _T("MainFrame")) #else MainFrame::MainFrame(wxDocManager *manager, wxFrame *frame, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, const long type) : wxDocParentFrame(manager, frame, id, title, pos, size, type, _T("MainFrame")) #endif { m_bShuttingDown = false; //// Make a menubar wxMenu *file_menu = new wxMenu; file_menu->Append(MAINMENU_FILE_CREATE_PHANTOM, _T("Cr&eate Phantom...\tCtrl-P")); file_menu->Append(MAINMENU_FILE_CREATE_FILTER, _T("Create &Filter...\tCtrl-F")); file_menu->Append(wxID_OPEN, _T("&Open...\tCtrl-O")); file_menu->AppendSeparator(); file_menu->Append (MAINMENU_IMPORT, _T("&Import...\tCtrl-M")); file_menu->Append (MAINMENU_FILE_PREFERENCES, _T("Prefere&nces...")); file_menu->Append(MAINMENU_FILE_EXIT, _T("E&xit")); // history of files visited theApp->getDocManager()->FileHistoryAddFilesToMenu(file_menu); theApp->getDocManager()->FileHistoryUseMenu(file_menu); #ifndef CTSIM_MDI m_pWindowMenu = new wxMenu; m_pWindowMenu->UpdateUI (this); #endif wxMenu* help_menu = new wxMenu; help_menu->Append (MAINMENU_HELP_CONTENTS, _T("&Contents\tF1")); help_menu->Append (MAINMENU_HELP_TIPS, _T("&Tips")); help_menu->Append (IDH_QUICKSTART, _T("&Quick Start")); #if defined(CTSIM_WINHELP) && (defined(DEBUG) || defined(_DEBUG)) help_menu->Append (MAINMENU_HELP_SECONDARY, _T("&Secondary Help")); #endif help_menu->Append (MAINMENU_HELP_ABOUT, _T("&About")); wxMenuBar* menu_bar = new wxMenuBar; menu_bar->Append(file_menu, _T("&File")); #ifndef CTSIM_MDI menu_bar->Append(m_pWindowMenu, _T("&Window")); #endif menu_bar->Append(help_menu, _T("&Help")); SetMenuBar(menu_bar); #ifndef CTSIM_MDI int i; for (i = 0; i < MAX_WINDOW_MENUITEMS; i++) { m_apWindowMenuItems[i] = new wxMenuItem (m_pWindowMenu, MAINMENU_WINDOW_BASE+i, _T("[EMPTY]")); m_pWindowMenu->Append (m_apWindowMenuItems[i]); m_pWindowMenu->Enable (MAINMENU_WINDOW_BASE+i, false); } #endif m_iDefaultPhantomID = Phantom::PHM_HERMAN; m_iDefaultFilterID = SignalFilter::FILTER_BANDLIMIT; m_iDefaultFilterDomainID = SignalFilter::DOMAIN_FREQUENCY; m_iDefaultFilterXSize = 256; m_iDefaultFilterYSize = 256; m_dDefaultFilterParam = 1.; m_dDefaultFilterBandwidth = 1.; m_dDefaultFilterInputScale = 1.; m_dDefaultFilterOutputScale = 1.; m_iDefaultImportFormat = ImageFile::IMPORT_FORMAT_PNG; wxAcceleratorEntry accelEntries[15]; accelEntries[0].Set (wxACCEL_CTRL, static_cast('O'), wxID_OPEN); accelEntries[1].Set (wxACCEL_CTRL, static_cast('P'), MAINMENU_FILE_CREATE_PHANTOM); accelEntries[2].Set (wxACCEL_CTRL, static_cast('F'), MAINMENU_FILE_CREATE_FILTER); accelEntries[3].Set (wxACCEL_CTRL, static_cast('M'), MAINMENU_IMPORT); accelEntries[4].Set (wxACCEL_NORMAL, WXK_F1, MAINMENU_HELP_CONTENTS); #ifndef CTSIM_MDI for (i = 0; i < 10; i++) accelEntries[i+5].Set (wxACCEL_CTRL, static_cast('0'+i), MAINMENU_WINDOW_BASE+i); wxAcceleratorTable accelTable (15, accelEntries); #else wxAcceleratorTable accelTable (5, accelEntries); #endif SetAcceleratorTable (accelTable); } MainFrame::~MainFrame() { m_bShuttingDown = true; // Currently used so that Log Window will close #if 0 // delete all non-modified documents wxList& rListDocs = theApp->getDocManager()->GetDocuments(); for (wxNode* pNode = rListDocs.GetFirst(); pNode != NULL; pNode = pNode->GetNext()) { wxDocument* pDoc = dynamic_cast(pNode->GetData()); if (pDoc && ! pDoc->IsModified()) { theApp->getDocManager()->RemoveDocument(pDoc); delete pDoc; } } #endif ::wxYield(); if (theApp->getConfig()) theApp->getDocManager()->FileHistorySave (*theApp->getConfig()); ::wxYield(); delete theApp->getDocManager(); } void MainFrame::OnSize (wxSizeEvent& event) { #ifdef CTSIM_MDI if (theApp->getLogDoc()) { int xSize, ySize; GetClientSize(&xSize, &ySize); int yLogSize = ySize / 4; theApp->getLogDoc()->getView()->getFrame()->SetSize (0, ySize - yLogSize, xSize, yLogSize); theApp->getLogDoc()->getView()->getFrame()->Show (true); } #endif #if CTSIM_MDI wxDocMDIParentFrame::OnSize (event); #else wxDocParentFrame::OnSize (event); #endif } void MainFrame::OnCreatePhantom(wxCommandEvent& event) { DialogGetPhantom dialogPhantom (this, m_iDefaultPhantomID); int dialogReturn = dialogPhantom.ShowModal(); if (dialogReturn == wxID_OK) { wxString selection (dialogPhantom.getPhantom(), *wxConvCurrent); if (theApp->getVerboseLogging()) *theApp->getLog() << _T("Selected phantom ") << selection.c_str() << _T("\n"); wxString filename = selection + _T(".phm"); m_iDefaultPhantomID = Phantom::convertNameToPhantomID (selection.mb_str(wxConvUTF8)); theApp->getDocManager()->CreateDocument (filename, wxDOC_SILENT); } } void MainFrame::OnCreateFilter (wxCommandEvent& WXUNUSED(event)) { DialogGetFilterParameters dialogFilter (this, m_iDefaultFilterXSize, m_iDefaultFilterYSize, m_iDefaultFilterID, m_dDefaultFilterParam, m_dDefaultFilterBandwidth, m_iDefaultFilterDomainID, m_dDefaultFilterInputScale, m_dDefaultFilterOutputScale); int dialogReturn = dialogFilter.ShowModal(); if (dialogReturn == wxID_OK) { wxString strFilter (dialogFilter.getFilterName(), *wxConvCurrent); wxString strDomain (dialogFilter.getDomainName(), *wxConvCurrent); m_iDefaultFilterID = SignalFilter::convertFilterNameToID (strFilter.mb_str(wxConvUTF8)); m_iDefaultFilterDomainID = SignalFilter::convertDomainNameToID (strDomain.mb_str(wxConvUTF8)); m_iDefaultFilterXSize = dialogFilter.getXSize(); m_iDefaultFilterYSize = dialogFilter.getYSize(); m_dDefaultFilterBandwidth = dialogFilter.getBandwidth(); m_dDefaultFilterParam= dialogFilter.getFilterParam(); m_dDefaultFilterInputScale = dialogFilter.getInputScale(); m_dDefaultFilterOutputScale = dialogFilter.getOutputScale(); wxString os; os << _T("Generate Filter=") << strFilter << _T(", size=(") << static_cast(m_iDefaultFilterXSize) << _T(",") << static_cast(m_iDefaultFilterYSize) << _T("), domain=") << strDomain.c_str() << _T(", filterParam=") << m_dDefaultFilterParam << _T(", bandwidth=") << m_dDefaultFilterBandwidth << _T(", inputScale=") << m_dDefaultFilterInputScale << _T(", outputScale=") << m_dDefaultFilterOutputScale; *theApp->getLog() << os << _T("\n"); ImageFileDocument* pFilterDoc = theApp->newImageDoc(); pFilterDoc->setBadFileOpen(); if (! pFilterDoc) { sys_error (ERR_SEVERE, "Unable to create filter image"); return; } ImageFile& rIF = pFilterDoc->getImageFile(); rIF.setArraySize (m_iDefaultFilterXSize, m_iDefaultFilterYSize); rIF.filterResponse (strDomain.mb_str(wxConvUTF8), m_dDefaultFilterBandwidth, strFilter.mb_str(wxConvUTF8), m_dDefaultFilterParam, m_dDefaultFilterInputScale, m_dDefaultFilterOutputScale); rIF.labelAdd (os.mb_str(wxConvUTF8)); if (theApp->getAskDeleteNewDocs()) pFilterDoc->Modify (true); pFilterDoc->UpdateAllViews(); pFilterDoc->GetFirstView()->OnUpdate (NULL, NULL); pFilterDoc->getView()->getFrame()->SetClientSize(m_iDefaultFilterXSize, m_iDefaultFilterYSize); pFilterDoc->getView()->getFrame()->Show(true); } } void CTSimApp::getCompatibleImages (const ImageFileDocument* pIFDoc, std::vector& vecIF) { const ImageFile& rIF = pIFDoc->getImageFile(); unsigned int nx = rIF.nx(); unsigned int ny = rIF.ny(); wxList& rListDocs = m_docManager->GetDocuments(); for (wxNode* pNode = rListDocs.GetFirst(); pNode != NULL; pNode = pNode->GetNext()) { wxDocument* pDoc = reinterpret_cast(pNode->GetData()); ImageFileDocument* pIFCompareDoc = dynamic_cast(pDoc); if (pIFCompareDoc && (pIFDoc != pIFCompareDoc)) { const ImageFile& rCompareIF = pIFCompareDoc->getImageFile(); if (rCompareIF.nx() == nx && rCompareIF.ny() == ny) vecIF.push_back (pIFCompareDoc); } } } void MainFrame::OnNewImageFile (wxCommandEvent& event) { ImageFile* pImageFile = reinterpret_cast(event.GetClientData()); ImageFileDocument* pImageDoc = theApp->newImageDoc(); if (! pImageDoc) { sys_error (ERR_SEVERE, "Unable to create image file"); return; } pImageDoc->setImageFile (pImageFile); if (theApp->getAskDeleteNewDocs()) pImageDoc->Modify (true); } void MainFrame::OnNewProjectionFile (wxCommandEvent& event) { Projections* pProjections = reinterpret_cast(event.GetClientData()); ProjectionFileDocument* pProjDoc = theApp->newProjectionDoc(); if (! pProjDoc) { sys_error (ERR_SEVERE, "Unable to create projection file"); return; } pProjDoc->setProjections (pProjections); if (theApp->getAskDeleteNewDocs()) pProjDoc->Modify (true); } void MainFrame::OnLogEvent (wxCommandEvent& event) { *theApp->getLog() << event.GetString(); } void MainFrame::OnHelpTips (wxCommandEvent& event) { theApp->ShowTips(); } void MainFrame::OnHelpContents (wxCommandEvent& event) { showHelp (event.GetId()); } void MainFrame::OnHelpButton (wxCommandEvent& event) { showHelp (event.GetId()); } #if defined(CTSIM_WINHELP) && (defined(DEBUG) || defined(_DEBUG)) void MainFrame::OnHelpSecondary (wxCommandEvent& event) { m_htmlHelp.Display ("Contents"); } #endif void MainFrame::showHelp (int commandID) { switch (commandID) { case MAINMENU_HELP_CONTENTS: #ifdef CTSIM_WINHELP m_winHelp.DisplayContents (); #else m_htmlHelp.Display (_T("Contents")); #endif break; default: #ifdef CTSIM_WINHELP m_winHelp.DisplaySection (commandID); #else m_htmlHelp.Display (commandID); #endif break; } } void MainFrame::OnExit (wxCommandEvent& WXUNUSED(event) ) { Close(true); } void MainFrame::OnUpdateUI (wxUpdateUIEvent& rEvent) { #ifndef CTSIM_MDI int iPos = 0; wxList& rListDocs = theApp->getDocManager()->GetDocuments(); wxNode* pNode = rListDocs.GetFirst(); while (iPos < MAX_WINDOW_MENUITEMS && pNode != NULL) { wxDocument* pDoc = static_cast(pNode->GetData()); wxString strFilename = pDoc->GetFilename(); if (iPos < 10) { strFilename += _T("\tCtrl-"); strFilename += static_cast('0' + iPos); } static_cast(m_apWindowMenuItems[iPos])->SetItemLabel (strFilename); m_apWindowMenuData[iPos] = pDoc; m_pWindowMenu->Enable (MAINMENU_WINDOW_BASE+iPos, true); iPos++; pNode = pNode->GetNext(); } for (int i = iPos; i < MAX_WINDOW_MENUITEMS; i++) { m_pWindowMenu->Enable (MAINMENU_WINDOW_BASE+i, false); static_cast(m_apWindowMenuItems[i])->SetItemLabel (_T("[EMPTY]")); m_apWindowMenuData[i] = NULL; } #endif } void MainFrame::DoWindowMenu (int iMenuPosition, wxCommandEvent& event) { if (wxDocument* pDoc = m_apWindowMenuData [iMenuPosition]) { wxString strFilename = pDoc->GetFilename(); const wxView* pView = pDoc->GetFirstView(); if (pView) { wxWindow* pWindow = pView->GetFrame(); pWindow->SetFocus(); pWindow->Raise(); } } } void MainFrame::OnWindowMenu0 (wxCommandEvent& event) { DoWindowMenu (0, event); } void MainFrame::OnWindowMenu1 (wxCommandEvent& event) { DoWindowMenu (1, event); } void MainFrame::OnWindowMenu2 (wxCommandEvent& event) { DoWindowMenu (2, event); } void MainFrame::OnWindowMenu3 (wxCommandEvent& event) { DoWindowMenu (3, event); } void MainFrame::OnWindowMenu4 (wxCommandEvent& event) { DoWindowMenu (4, event); } void MainFrame::OnWindowMenu5 (wxCommandEvent& event) { DoWindowMenu (5, event); } void MainFrame::OnWindowMenu6 (wxCommandEvent& event) { DoWindowMenu (6, event); } void MainFrame::OnWindowMenu7 (wxCommandEvent& event) { DoWindowMenu (7, event); } void MainFrame::OnWindowMenu8 (wxCommandEvent& event) { DoWindowMenu (8, event); } void MainFrame::OnWindowMenu9 (wxCommandEvent& event) { DoWindowMenu (9, event); } void MainFrame::OnWindowMenu10 (wxCommandEvent& event) { DoWindowMenu (10, event); } void MainFrame::OnWindowMenu11 (wxCommandEvent& event) { DoWindowMenu (11, event); } void MainFrame::OnWindowMenu12 (wxCommandEvent& event) { DoWindowMenu (12, event); } void MainFrame::OnWindowMenu13 (wxCommandEvent& event) { DoWindowMenu (13, event); } void MainFrame::OnWindowMenu14 (wxCommandEvent& event) { DoWindowMenu (14, event); } void MainFrame::OnWindowMenu15 (wxCommandEvent& event) { DoWindowMenu (15, event); } void MainFrame::OnWindowMenu16 (wxCommandEvent& event) { DoWindowMenu (16, event); } void MainFrame::OnWindowMenu17 (wxCommandEvent& event) { DoWindowMenu (17, event); } void MainFrame::OnWindowMenu18 (wxCommandEvent& event) { DoWindowMenu (18, event); } void MainFrame::OnWindowMenu19 (wxCommandEvent& event) { DoWindowMenu (19, event); } class BitmapControl : public wxPanel { private: DECLARE_DYNAMIC_CLASS (BitmapControl) DECLARE_EVENT_TABLE () wxBitmap* m_pBitmap; public: BitmapControl (wxBitmap* pBitmap, wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxSTATIC_BORDER, const wxValidator& validator = wxDefaultValidator, const wxString& name = _T("BitmapCtrl")); virtual ~BitmapControl(); virtual wxSize GetBestSize() const; wxBitmap* getBitmap() { return m_pBitmap; } void OnPaint(wxPaintEvent& event); }; BEGIN_EVENT_TABLE(BitmapControl, wxPanel) EVT_PAINT(BitmapControl::OnPaint) END_EVENT_TABLE() IMPLEMENT_CLASS(BitmapControl, wxPanel) BitmapControl::BitmapControl (wxBitmap* pBitmap, wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, const wxString& name) : m_pBitmap(pBitmap) { Create(parent, id, pos, size, style, name); SetSize (GetBestSize()); } wxSize BitmapControl::GetBestSize () const { if (m_pBitmap) return wxSize (m_pBitmap->GetWidth(), m_pBitmap->GetHeight()); else return wxSize(0,0); } BitmapControl::~BitmapControl() {} void BitmapControl::OnPaint (wxPaintEvent& event) { wxPaintDC dc(this); if (m_pBitmap) dc.DrawBitmap (*m_pBitmap, 0, 0); } class BitmapDialog : public wxDialog { private: BitmapControl* m_pBitmapCtrl; public: BitmapDialog (wxBitmap* pBitmap, char const* pszTitle); virtual ~BitmapDialog(); }; BitmapDialog::BitmapDialog (wxBitmap* pBitmap, char const* pszTitle) : wxDialog(theApp->getMainFrame(), -1, wxString(pszTitle,*wxConvCurrent)) { wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL); pTopSizer->Add (new BitmapControl (pBitmap, this), 0, wxALIGN_CENTER | wxALL, 5); wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL); wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Ok")); pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10); pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER); SetAutoLayout (true); SetSizer (pTopSizer); pTopSizer->Fit (this); pTopSizer->SetSizeHints (this); } BitmapDialog::~BitmapDialog() {} void MainFrame::OnPreferences (wxCommandEvent& WXUNUSED(event) ) { DialogPreferences dlg (this, _T("CTSim Preferences"), theApp->getAdvancedOptions(), theApp->getAskDeleteNewDocs(), theApp->getVerboseLogging(), theApp->getStartupTips(), theApp->getUseBackgroundTasks()); if (dlg.ShowModal() == wxID_OK) { theApp->setAdvancedOptions (dlg.getAdvancedOptions()); theApp->setAskDeleteNewDocs (dlg.getAskDeleteNewDocs()); theApp->setVerboseLogging (dlg.getVerboseLogging()); theApp->setStartupTips (dlg.getStartupTips()); theApp->setUseBackgroundTasks (dlg.getUseBackgroundTasks()); } } void MainFrame::OnImport (wxCommandEvent& WXUNUSED(event) ) { DialogImportParameters dialogImport (this, m_iDefaultImportFormat); if (dialogImport.ShowModal() != wxID_OK) return; wxString strFormatName (dialogImport.getFormatName (), *wxConvCurrent); m_iDefaultImportFormat = ImageFile::convertImportFormatNameToID (strFormatName.mb_str(wxConvUTF8)); wxString strExt; wxString strWildcard; if (m_iDefaultImportFormat == ImageFile::IMPORT_FORMAT_PPM) { strExt = _T(".ppm"); strWildcard = _T("PPM Files (*.ppm)|*.ppm|PGM Files (*.pgm)|*.pgm"); } #ifdef HAVE_PNG else if (m_iDefaultImportFormat == ImageFile::IMPORT_FORMAT_PNG) { strExt = _T(".png"); strWildcard = _T("PNG Files (*.png)|*.png"); } #endif #ifdef HAVE_CTN_DICOM else if (m_iDefaultImportFormat == ImageFile::IMPORT_FORMAT_DICOM) { strExt = _T("*.*"); strWildcard = _T("Dicom Files (*.*)|*.*"); } #endif else { return; } wxString strFilename = wxFileSelector (wxString(wxConvUTF8.cMB2WX("Import Filename")), wxString(wxConvUTF8.cMB2WX("")), wxString(wxConvUTF8.cMB2WX("")), strExt, strWildcard, wxFD_OPEN); if (! strFilename.IsEmpty()) { if (m_iDefaultImportFormat == ImageFile::IMPORT_FORMAT_PPM || m_iDefaultImportFormat == ImageFile::IMPORT_FORMAT_PNG) { ImageFile* pIF = new ImageFile; if (pIF->importImage (strFormatName.mb_str(wxConvUTF8), strFilename.mb_str(wxConvUTF8))) { ImageFileDocument* pIFDoc = theApp->newImageDoc(); pIFDoc->setImageFile(pIF); pIFDoc->getView()->getFrame()->Show(true); std::ostringstream os; os << "Import file " << strFilename.c_str() << " (type " << strFormatName.c_str() << ")"; pIF->labelAdd (os.str().c_str()); if (theApp->getAskDeleteNewDocs()) pIFDoc->Modify (true); pIFDoc->UpdateAllViews(); pIFDoc->GetFirstView()->OnUpdate (NULL, NULL); pIFDoc->getView()->getFrame()->Show(true); } else delete pIF; } #ifdef HAVE_CTN_DICOM else if (m_iDefaultImportFormat == ImageFile::IMPORT_FORMAT_DICOM) { DicomImporter dicomImport (strFilename.mb_str(wxConvUTF8)); if (dicomImport.fail()) { ::wxMessageBox (wxConvUTF8.cMB2WX(dicomImport.failMessage().c_str()), _T("Import Error")); } else if (dicomImport.testImage()) { ImageFileDocument* pIFDoc = theApp->newImageDoc(); ImageFile* pIF = dicomImport.getImageFile(); pIFDoc->setImageFile (pIF); std::ostringstream os; os << "Import file " << strFilename.c_str() << " (type " << strFormatName.c_str() << ")"; pIF->labelAdd (os.str().c_str()); if (theApp->getAskDeleteNewDocs()) pIFDoc->Modify (true); pIFDoc->UpdateAllViews(); pIFDoc->getView()->setInitialClientSize(); pIFDoc->Activate(); } else if (dicomImport.testProjections()) { ProjectionFileDocument* pProjDoc = theApp->newProjectionDoc(); Projections* pProj = dicomImport.getProjections(); pProjDoc->setProjections (pProj); pProjDoc->getView()->getFrame()->Show(true); std::ostringstream os; os << "Import projection file " << strFilename.c_str() << " (type " << strFormatName.c_str() << ")"; pProj->setRemark (os.str().c_str()); if (theApp->getAskDeleteNewDocs()) pProjDoc->Modify (true); pProjDoc->UpdateAllViews(); pProjDoc->getView()->setInitialClientSize(); pProjDoc->Activate(); } else ::wxMessageBox (_T("Unrecognized DICOM file contents"), _T("Import Error")); } #endif else sys_error (ERR_WARNING, "Unknown import format type"); } } #include "./splash.xpm" void MainFrame::OnAbout(wxCommandEvent& WXUNUSED(event) ) { wxString strOSDesc = ::wxGetOsDescription(); *theApp->getLog() << _T("Operating System: ") << strOSDesc; *theApp->getLog() << _T(", wxWindows: ") << wxVERSION_STRING; #ifdef _TIMESTAMP__ *theApp->getLog() << _T(", Build Date: ") << wxConvUTF8.cMB2WX(_TIMESTAMP__); #endif #if defined(DEBUG) *theApp->getLog() << _T(", Debug version"); #else *theApp->getLog() << _T(", Release version"); #endif #ifdef VERSION *theApp->getLog() << _T(" ") << wxConvUTF8.cMB2WX(VERSION); #elif defined(CTSIMVERSION) *theApp->getLog() << _T(" ") << _T(CTSIMVERSION); #endif *theApp->getLog() << _T("\n"); wxBitmap bmp (splash); if (bmp.Ok()) { BitmapDialog dlg (&bmp, "About CTSim"); dlg.ShowModal(); } else { wxString msg = _T("CTSim\nThe Open Source Computed Tomography Simulator\n"); #ifdef VERSION msg << _T("Version: ") << wxConvUTF8.cMB2WX(VERSION) << _T("\n\n"); #elif defined(CTSIMVERSION) msg << _T("Version: ") << wxConvUTF8.cMB2WX(CTSIMVERSION) << _T("\n\n"); #endif msg += _T("Author: Kevin Rosenberg \nUsage: ctsim [files-to-open..] [--help]"); wxMessageBox(msg, _T("About CTSim"), wxOK | wxICON_INFORMATION, this); *theApp->getLog() << msg << wxConvUTF8.cMB2WX("\n"); } } // Create new documents wxDocument* CTSimApp::newDocumentHelper (wxDocTemplate* tmpl) { wxDocument* newDoc = tmpl->CreateDocument (_T("")); if (newDoc) { newDoc->SetDocumentTemplate (tmpl); newDoc->OnNewDocument(); wxString fname = newDoc->GetFilename(); fname += _T("."); fname += tmpl->GetDefaultExtension(); newDoc->SetDocumentName(fname); newDoc->SetTitle(fname); newDoc->SetFilename(fname, true); } return newDoc; } ProjectionFileDocument* CTSimApp::newProjectionDoc() { ProjectionFileDocument* newDoc = dynamic_cast (newDocumentHelper(m_pDocTemplProjection)); if (newDoc) newDoc->getView()->getFrame()->SetTitle(newDoc->GetDocumentName()); return newDoc; } ImageFileDocument* CTSimApp::newImageDoc() { ImageFileDocument* newDoc = dynamic_cast (newDocumentHelper(m_pDocTemplImage)); if (newDoc) newDoc->getView()->getFrame()->SetTitle(newDoc->GetDocumentName()); return newDoc; } PlotFileDocument* CTSimApp::newPlotDoc() { PlotFileDocument* newDoc = dynamic_cast (newDocumentHelper(m_pDocTemplPlot)); if (newDoc) newDoc->getView()->getFrame()->SetTitle(newDoc->GetDocumentName()); return newDoc; } TextFileDocument* CTSimApp::newTextDoc() { TextFileDocument* newDoc = dynamic_cast (newDocumentHelper(m_pDocTemplText)); if (newDoc) newDoc->getView()->getFrame()->SetTitle(newDoc->GetDocumentName()); return newDoc; } PhantomFileDocument* CTSimApp::newPhantomDoc() { PhantomFileDocument* newDoc = dynamic_cast (newDocumentHelper(m_pDocTemplPhantom)); if (newDoc) newDoc->getView()->getFrame()->SetTitle(newDoc->GetDocumentName()); return newDoc; } #if wxUSE_GLCANVAS Graph3dFileDocument* CTSimApp::newGraph3dDoc() { Graph3dFileDocument* newDoc = dynamic_cast (newDocumentHelper(m_pDocTemplGraph3d)); if (newDoc) newDoc->getView()->getFrame()->SetTitle(newDoc->GetDocumentName()); return newDoc; } #endif ctsim-6.0.2/src/splash.xpm0000644000175000017500000075543010703552713014500 0ustar kevinkevin/* XPM */ static const char *splash[] = { /* width height ncolors chars_per_pixel */ "500 500 38 1", /* colors */ " c #000000", ". c #67B26B", "X c #94C997", "o c #800000", "O c #FEF0F2", "+ c #F8A5B1", "@ c #F03E57", "# c #C2E0C4", "$ c #FBD2D8", "% c #F36B7E", "& c #ED203D", "* c #B3D8B5", "= c #E1F0E1", "- c #2A9330", "; c #FDE1E5", ": c #F796A4", "> c #FAC3CB", ", c #F25C71", "< c #EC1130", "1 c #58AB5C", "2 c #49A34D", "3 c #86C289", "4 c #F68898", "5 c #77BA7A", "6 c #A4D1A6", "7 c #D1E8D2", "8 c #FFFFFF", "9 c #F9B4BE", "0 c #FFFF00", "q c #F14D64", "w c #F47A8B", "e c #EE2F4A", "r c #F0F7F0", "t c #008000", "y c #1B8C21", "u c #0C8412", "i c #3A9B3F", "p c None", /* pixels */ "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888863333333333#88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888=*3522222.3X#r8888888888888888888888888888888888888888888888888888888888888888888=#*3333333##788888888888888888888-uuuuuuuuuu#88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888*.-uuuuuuuuuuuuuu-.6r8888888832222222222222222222222222222222222222188888888888r*52uuuuuuuuuuuuuuu-13#88888888888888=uuuuuuuuuuur88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888=5yuuuuuuuuuuuuuuuuuuuuu.#888888-uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu1888888888#1uuuuuuuuuuuuuuuuuuuuuuuu2X=88888888886uuuuuuuuuui888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888=.uuuuuuuuuuuuuuuuuuuuuuuuuu2#888ruuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu38888888#-uuuuuuuuuuuuuuuuuuuuuuuuuuuuu38888888885uuuuuuuuuu5888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888883yuuuuuuuuuuuuuuuuuuuuuuuuuuuu.888*uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu#88888r1uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu3888888888iuuuuuuuuuu6888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888=iuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu68885uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu888887-uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu*88888888ruuuuuuuuuuu=888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888#yuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu=888iuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu288887yuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuur88888888#uuuuuuuuuu-8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888886uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu-8888uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu5888ryuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu-888888888#333333333368888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888886uuuuuuuuuuuuuuu-233332yuuuuuuuuuu.888#uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu*8882uuuuuuuuuuuuuy2.3333.2yuuuuuuuuuuu18888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888887uuuuuuuuuuuuuy5=8888888875yuuuuuuu6888#3333333333333-uuuuuuuuuu23333333333333r88#uuuuuuuuuuuu.78888888888=61uuuuuuuuX8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888ryuuuuuuuuuuuu.r888888888888=1uuuuuu=88888888888888888uuuuuuuuuuu*88888888888888881uuuuuuuuuuy7888888888888888rX-uuuuu#8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888882uuuuuuuuuuuu688888888888888886yuuu-888888888888888887uuuuuuuuuuu=888888888888888ruuuuuuuuuuu#88888888888888888883yuuu88888888888888888888888888888888888888888888888#31221378888888888888=65222.X=888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888Xuuuuuuuuuuuy78888888888888888887yuu.88888888888888888Xuuuuuuuuuu-8888888888888888#uuuuuuuuuu-888888888888888888888=iu288888888862222222222888888888822222222223888r3yuuuuuuuu2788888888862uuuuuuuuu278888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888ryuuuuuuuuuuu6888888888888888888887yu6888888888888888881uuuuuuuuuu.8888888888888888Xuuuuuuuuuu288888888888888888888888X*8888888881uuuuuuuuu-8888888887uuuuuuuuuuX88Xyuuuuuuuuuuuy68888886-uuuuuuuuuuuuu6888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888.uuuuuuuuuuu5888888888888888888888873=88888888888888888-uuuuuuuuuuX88888888888888883uuuuuuuuuu-8888888888888888888888888888888888yuuuuuuuuu.888888888Xuuuuuuuuuu77iuuuuuuuuuuuuuuy788872uuuuuuuuuuuuuuuy788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888=uuuuuuuuuuu-888888888888888888888888888888888888888888=uuuuuuuuuuu788888888888888883uuuuuuuuuuuX888888888888888888888888888888887uuuuuuuuuu68888888881uuuuuuuuuy3uuuuuuuuuuuuuuuuu2883uuuuuuuuuuuuuuuuuu288888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888885uuuuuuuuuuu#8888888888888888888888888888888888888888886uuuuuuuuuuy88888888888888888Xuuuuuuuuuuuu1=888888888888888888888888888888Xuuuuuuuuuu=888888888yuuuuuuuuuuuuuuuuuuuuuuuuuuuuu*iuuuuuuuuuuuuuuuuuuuu=8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888yuuuuuuuuuu28888888888888888888888888888888888888888888.uuuuuuuuuu288888888888888888#uuuuuuuuuuuuuu16r888888888888888888888888888.uuuuuuuuu-888888888=uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu*8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888*uuuuuuuuuuu68888888888888888888888888888888888888888888iuuuuuuuuuu3888888888888888888yuuuuuuuuuuuuuuuu1X=888888888888888888888888-uuuuuuuuu.8888888886uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu38888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888.uuuuuuuuuuy8888888888888888888888888888888888888888888ruuuuuuuuuuu#8888888888888888883uuuuuuuuuuuuuuuuuuu-.*88888888888888888888=uuuuuuuuuuX888888888.uuuuuuuuuuuuui5332uuuuuuuuuuuuuuuu-.33.-uuuuuuuuuuuu38888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888yuuuuuuuuuu18888888888888888888888888888888888888888888*uuuuuuuuuuu8888888888888888888ryuuuuuuuuuuuuuuuuuuuuuy.*888888888888888886uuuuuuuuuu7888888888-uuuuuuuuuuu.7888887uuuuuuuuuuuuu2*888888.uuuuuuuuuuu38888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888887uuuuuuuuuuuX88888888888888888888888888888888888888888883uuuuuuuuuu2888888888888888888887yuuuuuuuuuuuuuuuuuuuuuuu-6r88888888888888.uuuuuuuuuy888888888=uuuuuuuuuu2=888888881uuuuuuuuuui#88888888ruuuuuuuuuuu68888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888886uuuuuuuuuuu#88888888888888888888888888888888888888888882uuuuuuuuuu58888888888888888888887yuuuuuuuuuuuuuuuuuuuuuuuu-68888888888888-uuuuuuuuu18888888886uuuuuuuuuu#8888888883uuuuuuuuuu68888888888uuuuuuuuuuu#8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888885uuuuuuuuuuu88888888888888888888888888888888888888888888uuuuuuuuuuu*8888888888888888888888=2uuuuuuuuuuuuuuuuuuuuuuuuu1r8888888888ruuuuuuuuuuX8888888885uuuuuuuuuu88888888883uuuuuuuuuu=8888888888uuuuuuuuuuu88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888882uuuuuuuuuuy8888888888888888888888888888888888888888888#uuuuuuuuuuur888888888888888888888888#2uuuuuuuuuuuuuuuuuuuuuuuuir888888888*uuuuuuuuuu7888888888iuuuuuuuuu288888888881uuuuuuuuu-88888888888uuuuuuuuuu288888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888882uuuuuuuuuu28888888888888888888888888888888888888888888Xuuuuuuuuuu-888888888888888888888888888#.yuuuuuuuuuuuuuuuuuuuuuu18888888885uuuuuuuuuu888888888ruuuuuuuuuu58888888888iuuuuuuuuu.8888888888#uuuuuuuuuu388888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888uuuuuuuuuuu288888888888888888888888888888888888888888881uuuuuuuuuu.888888888888888888888888888888*.yuuuuuuuuuuuuuuuuuuuu#88888888iuuuuuuuuu2888888888*uuuuuuuuuu*888888888ruuuuuuuuuu688888888883uuuuuuuuuu#88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888uuuuuuuuuuu28888888888888888888888888888888888888888888yuuuuuuuuuu688888888888888888888888888888888873iuuuuuuuuuuuuuuuuu18888888ruuuuuuuuuu38888888885uuuuuuuuuur888888888#uuuuuuuuuu788888888881uuuuuuuuuur88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888uuuuuuuuuuu28888888888888888888888888888888888888888887uuuuuuuuuuu7888888888888888888888888888888888888r62uuuuuuuuuuuuuuu8888888*uuuuuuuuuu#888888888iuuuuuuuuui88888888883uuuuuuuuuy88888888888yuuuuuuuuui888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888uuuuuuuuuuui8888888888888888888888888888888888888888886uuuuuuuuuuy8888888888888888888888888888888888888888=5uuuuuuuuuuuuu78888883uuuuuuuuuu8888888888uuuuuuuuuu588888888882uuuuuuuuu188888888887uuuuuuuuuu5888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888uuuuuuuuuuuu888888888888888888888888888888888888888888.uuuuuuuuuu18888888888888888888888888888888888888888887yuuuuuuuuuuu#8888882uuuuuuuuu2888888888#uuuuuuuuuu68888888888uuuuuuuuuuX8888888888Xuuuuuuuuuu*888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888-uuuuuuuuuuu=88888888888888888888887=88888888888888888-uuuuuuuuuuX8888888888888888888888888888888888888888888#uuuuuuuuuuu#888888uuuuuuuuuu38888888883uuuuuuuuuu=888888888#uuuuuuuuuu788888888881uuuuuuuuuur888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888882uuuuuuuuuuuX888888888888888888888.u*8888888888888888ruuuuuuuuuuu#8888888888888888851r888888888888888888888888uuuuuuuuuuu#88888#uuuuuuuuuu*8888888882uuuuuuuuu-8888888888Xuuuuuuuuuy88888888888-uuuuuuuuui8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888885uuuuuuuuuuu-88888888888888888887iuur8888888888888888*uuuuuuuuuuu888888888888888888uu-788888888888888888888888uuuuuuuuuuu8888883uuuuuuuuuur888888888uuuuuuuuuu.88888888881uuuuuuuuu28888888888=uuuuuuuuuu.8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888886uuuuuuuuuuuuX8888888888888888r3uuui888888888888888885uuuuuuuuuu288888888888888888#uuuu3r88888888888888888888*uuuuuuuuuui8888882uuuuuuuuui888888888#uuuuuuuuuu68888888888yuuuuuuuuu388888888886uuuuuuuuuu68888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888ruuuuuuuuuuuuu6888888888888886-uuuu588888888888888888iuuuuuuuuuu388888888888888888Xuuuuuy3r88888888888888888r-uuuuuuuuuu5888888uuuuuuuuuu58888888883uuuuuuuuuu=8888888887uuuuuuuuuu#8888888888.uuuuuuuuuu=8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888881uuuuuuuuuuuuu5r888888888=3-uuuuuu688888888888888888uuuuuuuuuuu*88888888888888888.uuuuuuuy.788888888888888#iuuuuuuuuuuu=888887uuuuuuuuuu*8888888881uuuuuuuuuy8888888888Xuuuuuuuuuu88888888888-uuuuuuuuu-88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888#uuuuuuuuuuuuuuu13####35iuuuuuuuuu=8888888888888888#uuuuuuuuuuur88888888888888888-uuuuuuuuuuy13##888887#3iuuuuuuuuuuuu.888888Xuuuuuuuuuur888888888yuuuuuuuuu188888888881uuuuuuuuu28888888888=uuuuuuuuuu.88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888882uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu-888888888888888883uuuuuuuuuui88888888888888888ruuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuyr8888881uuuuuuuuu-8888888887uuuuuuuuuuX8888888888-uuuuuuuuu388888888886uuuuuuuuuu688888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888=yuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu.888888888888888882uuuuuuuuuu588888888888888888*uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuy78888888yuuuuuuuuu.888888888Xuuuuuuuuuu7888888888=uuuuuuuuuu*8888888888.uuuuuuuuuu788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888*uuuuuuuuuuuuuuuuuuuuuuuuuuuuuu688888888888888888yuuuuuuuuuu6888888888888888883uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuy788888887uuuuuuuuuu68888888881uuuuuuuuuy88888888886uuuuuuuuuur8888888888-uuuuuuuuuy888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888886uuuuuuuuuuuuuuuuuuuuuuuuuuuuu=88888888888888887uuuuuuuuuuu=888888888888888882uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuui788888888Xuuuuuuuuuu=888888888yuuuuuuuuu28888888888.uuuuuuuuui8888888888=uuuuuuuuuu1888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888887-uuuuuuuuuuuuuuuuuuuuuuuuu-688888888888888888Xuuuuuuuuuu-888888888888888888-uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuy3r888888888.uuuuuuuuu-888888888=uuuuuuuuuu38888888888-uuuuuuuuu588888888886uuuuuuuuuuX888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888r3uuuuuuuuuuuuuuuuuuuuuu.#8888888888888888888.uuuuuuuuuu18888888888888888888#.yuuuuuuuuuuuuuuuuuuuuuuuuuuy3r88888888888-uuuuuuuuu.8888888886uuuuuuuuuu#888888888=uuuuuuuuuu*8888888888.uuuuuuuuuu7888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888r3-uuuuuuuuuuuuuuuu1Xr888888888888888888888-uuuuuuuuuuX8888888888888888888888#52uuuuuuuuuuuuuuuuuuuuy.*8888888888888=uuuuuuuuuuX888888888.uuuuuuuuuu88888888886uuuuuuuuuu=8888888888-uuuuuuuuuy8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888887X52iuuuuuu213#888888888888888888888888888888888888888888888888888888888888888#X322iuuuuuuui213*788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888122=88888888888888888888888888888887##r88888888888888888888888888888888888888888888888888888888###78888888888888888888888888888888888888888888888888888888888888888888888888###r8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888322*888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888885uuuuuuuuuu-8=uuy88888888888888888888888888888=.yuuuu2#888888888888888888888888888888888888888888888888888#1uuuuuui68888888888888888888888888888888888888888888888888888888888888888888#1uuuuui688888888888888888888888888888888888888888888888888888888888#33#88888888888888888888888-uu7888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888882uuuuuuuuuu186uu18888888888888888888888888888Xuuuuuuuuu688888888888888888888888888888888888888888888888886uuuuuuuuu588888888888888888888888888888888888888888888888888888888888888888r.uuuuuuuui888888888888888888888888888888888888888888888888888888888882uu68888888888888888888888=uuy8888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888883333uuu1333#8.uuX8888888888888888888888888883uuu26#3yuuyr88888888888888888888888888888888888888888888888=uuu2*##5-u6888888888888888888888888888888888888888888888888888888888888888881uuu.*#X-u588888888888888888888888888888888888888888888888888888888888uuu=88888888888888888888886uu18888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888=uuu788888-uu#3-u-68888862uuy1#888888888#uuu.88886uuu68862266iuy38888862uuy1#888=221=.yui7888888888883uuu88888837888#1yuu268888X226888122=88322*=52*88=5iuu-.=88862uuy1#8888888883uuu688888.688862uuy1#8888322*6iu-68=.yu1r88862266iuy3888r222888*22383iuuu22188862uuy1#888883iuu12uuX8888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888886uuy88888=uuuyuuuuu=887iuuuuuuu#888888882uui88888ruuu3882uuuuuuuu6887iuuuuuuu#886uuyuuuuu-888888888883uuu.=88888888.uuuuuuu5888iuu#88=uuy888-uu2uuu#83uuuuuuu*87iuuuuuuu#8888888ryuu5888888888riuuuuuuu*888-uuyuuuuu5uuuuu.8882uuuuuuuu688*uu2888.uuX8-uuuuuu187iuuuuuuu#88riuuuuuuuu78888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888.uu1888886uuu132uuu#8riuuXrr.uu.8888888=uuu6888888uuu388uuu.#*yuu18riuuXrr.uu.88.uuy.3-uuu88888888888=uuuuui5=88885uuy6#1uuur8ruuu8886uu188=uuuuuuu83uuy3#*2urriuuXrr.uu.88888886uuu=888888888iuui**iuui88=uuui31uuuy.3yuu2888uuu.#*yuu1885uu3888-uu78#iuu3##=riuuXrr.uu.881uuy6#5uuy88888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888-uuX88888.uuX88=uuu=8Xuu3888#uu288888886uuu=88888=uuu*8#uui8883uu28Xuu3888#uu288-uu788*uu-883uuuuuu=88*yuuuuuu588=uuu#88ruuu#8*uu2888.uuX886uuiX##*=uuu#888868Xuu3888#uu288888885uu-8888888886uuyr88*uuu886uu1888uuu7883uu.88#uui8883uu288iuu#88=uuy888uuu=888Xuu3888#uu28#uuy7886uu188888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888=uuu788888-uu788#uu-88iuuuuuuuuu188888883uuu8888886uuu=83uu58883uu18iuuuuuuuuu18=uuy8883uu.882uuuuu-8888861yuuuu383uui8888uuu#85uuX888-uu788.uuX88883uu18888888iuuuuuuuuu188888882uu28888888882uu5888#uuu88.uuX887uuy8881uu6883uu58883uu18ruuy8886uu188#uu-8888iuuuuuuuuu181uu5888.uuX88888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888886uuy88888=uuy888Xuu.88uuu2222222*88888883uuu888888-uu2882uu*8881uuX8uuu2222222*86uu18881uu6883333336888888886yuu282uu38887uuur8iuu#88=uuy888-uu788882uu38888888uuu2222222*88888882uu2888888888uuu#888Xuui88-uu7886uu1888yuu=882uu*8881uuX8*uu2888.uuX883uu.8888uuu2222222*8yuu*888-uu788888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888.uu1888886uu18881uu688uuur888888888888886uuu68888.uuu#88uuur887uuu=8uuur88888888.uuX888yuu=88888888881X888888iuu182uu3888.uu18ruuu8886uu188=uuy888882uu58888rr8uuur88888888888888.uuu=8888=1=8uuu#888-uuX8=uuy888.uuX887uu-888uuur887uuu=85uu3888-uu7882uu68888uuur88888888uuu#88=uuy888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888-uuX88888.uuX888yuu=88iuui788#5588888888ryuuy3#62uuu388#uu-r8#-uu588iuui788#5588-uu7887uu-88888888888-u-5##*.uuu68.uu-=8Xuuu78#uuuX#X-uuX886uu1888885uuy#8r6yr8iuui788#55888888886uuu-6#*.y-88-uu1rr.uu-r86uu1888-uu788Xuu.88#uu-r8#-uu5882uui#*.uuy888uuu*8888iuui788#5588uuu.8=5uu1888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888=uuu788888-uu7887uu-888#uuuuuuuu68888888886uuuuuuuuuX8883uuuuuuuuir88#uuuuuuuu68=uuy888Xuu.8888888888=uuuuuuuuuu.887uuuuuuuu6887uuuuuuuuu788.uuX88888=yuuuuuui88#uuuuuuuu68888888882uuuuuuuu.88Xuuuuuuuy788.uuX88=uuy8881uu6883uuuuuuuuir881uuuuuuuu1888yuuy2-=8#uuuuuuuu6881uuuuuuuuX888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888886uuy88888=uuy888Xuu.8888#iuuuuu1=8888888888#2uuuuu.788882uu2uuuu5r8888#iuuuuu1=86uu18881uu68888888888r3iuuuuuui68888*-uuuu2#8888.uuu26uuy888-uu788888872uuuu-6888#iuuuuu1=88888888883yuuuu-3=8883yuuuu.=888-uu7886uu1888yuu=882uu2uuuu5r8887yuuy31uuX8886uuuu-888#iuuuuu1=88riuuy3-uu7888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888r##7888888888888888r##78888888uuurr##888888888r##788888888888888888888888888888####888888888=##r8888888=#=88888888888888888888r##78888888r##78888888888888887##=888888887##8888888888888888888888888uuurr##88888888##8888888888r###888888r##78888888##888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888#uui888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888#uui88888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888883uu58888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888883uu588888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888886337888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888633788888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888=##=888888888888888888888888888888888888888r###r8888888888888888888888888888888888###888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888833333333333#88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888882uu*8888888888888888888888888888*5222.378886uuur888888888888888888888888888888888#uui888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888887uuuuuuuuuuu#8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888uuur888888888888888888888888887-uuuuuuuuX885uu-88888888888888888888888888888888883uu588888888888888=uuu888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888886uuuuuuuuuuur888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888#uui88888888888888888888888888=yuuu22iuuu#887##788888888888888888888888888888888882uu*888888888888886uu2888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888883uui8888888r*336=88888###8=X37888*36r888888#33X78888888*33*r##7888###887#88=#333X788888###8=X3#88883uu58*3X=8887##=8888###=888888.uu-=888=3u888###8887##rr63*88873X=88887##r888###888uuur88r#X333#8888#1uu.##=888=633*r8888r##788#7", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888882uu58888883yuuuuu5888#uu-.uuuu**-uuui8888*-uuuuu2r8887iuuuuyuu188#uui6-ui8=uuuuuuu.888=uuu.uuuu58882uu.-uuuy=88.uu.888Xuuy=8888882uu-r88888=88#uu-888uuu5yuuu572uuuy=888yuu=88#uui88#uui888-uuuuuuir8#uuuuuuu*8r.uuuuuy68883uu.3yu5", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888uuu*88888.uuu2-uuu6883uuuuuuuuuuuuuuu#886uuuiiuuu.88=yuuu2-uuuX883uuuuuu.8*uy22yuuu7886uuu-2yuuur88uuuuuuuuu3883uu288ryuuX8888888.uuu-5#8888883uu.88#uuuuuuuuuuuuuuu3887uu-8883uu5883uu588ruu22-uuuX86iuuu222rriuuy2yuuu=882uuuuuu6", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888#uuur88886uuy7882uu1882uu5=81uu-*87uuu#8=uuu6883uuy882uuir88yuu7882uuui2i68#7888ruuu#88.uu5887uuu#8#uu-*8=yuu388*uu-88.uui88888888=yuuuuuy3r8882uu6883uu278Xuuu6rr-uu388Xuu.8882uu*882uu*88=*8888iuu3886uu28888.uuir8ryuuX88uuuu22-=", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888883uui88888-uu38883uu288uuur885uu588ruuu88.uu2888#uuu8=uuu=887uuy888uuur888888=6312uuu888-uu7888uuu#83uu5888yuu#887uuu8#uuu7888888888r5yuuuuuir88uuu=882uu*88*uui888iuu#881uu6888uuur88uuur888r*3.2yuu#88.uu3888=uuu#8882uu38#uui88888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888882uu58888=uuu=8885uu18#uui8882uu*88*uu288-uu6888*uuy86uui888Xuu188#uui8888872uuuuuuu288=uuy888ruuur82uu*88ruuu8888uuuriuu38888888888888#5yuuuX8#uu-888uuur883uu588ruuu888yuur88#uui88#uui88r.uuuuuuuu888-uu#8886uu-8888iuuX83uu588888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888uuu*8888#uuu8888-uu683uu5888uuur885uu388uuu#888.uu.83uu2888.uuX883uu58888ryuu.#r.uu3886uu18886uui88uuur88*uu28888iuu.uui8888888886888888ruuu383uu.88#uui8882uu*88*uu2887uu-8883uu5883uu5882uu2*=6uu288=uuu88883uu2888=uuu=82uu*88888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888#uuur8888#uuu=88Xuuyr82uu*88#uui888iuu#88uuu6887uuu#83uuy78*-uu#882uu*8888Xuui888-uu#88.uuX88=yuu68#uui8885uu388882uuuuu#888888888u2*8888*uuu*82uu6883uu5888uuur885uu388Xuui88riuu*882uu*87uuur88.uu3886uu288883uu-8881uu288uuur88888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888883uui888888yuu-3.uuu*88uuur883uu588ruuu8881uuy55yuu5887uuuuuuuuu888uuur88883uuy**1uuu888-uu235yuu2883uu5888iuu#88883uuuu5888888888#uuuy22-uuui88uuu=882uu*88#uui888iuu#883uuui2uuuur88uuur8#uuuX#5uuu#883uuy*#687uuu232uuy=8#uui888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888882uu5888888*uuuuuuy688#uui8882uu*88*uu2888=yuuuuuu588883uuu-1uu188#uui888887uuuuuiuu288=uuuuuuuu2r882uu*88ruuu888886uuu-r8888888886uuuuuuuuu2r8#uu-888uuur883uu588ruuu888#uuuuu2uui88#uui888yuuuuiuuu888#uuuuu3885uuuuuu-7883uu5888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888833378888888=3221Xr888#33*888333r88#33#8888rX1223=888888r##82uu688#33*888888#12.=#33#886uu1612.68888333r88=33688888Xuuu#88888888888=65222137888#33688=33X888633788=3368888*125=#33*88#33*888=.21#=3368888*122.=888#522.688886337888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888.3##*1uu-888888888888888888888888.uuX88888888888888888888888=yuu5888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tttttttttttttttt8888888888888888888888888888888888888888888888888888888888888888888uuuuuuuy7888888888888888888888888-uu7888888888888888888888882uuyr888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttttttttttt8888888888888888ttttttttttt8888888888888888888888888888888888888888888888888888888=2yuuu23r888888888888888888888888=uuy88888888888888888888888Xuuu*8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tttttttt88888888888888888888888888888888888888tttttttt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tttttt888888888888888888888888888888888888888888888888888888tttttt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttttt888888888888888888888888888888888888888888888888888888888888888888ttttt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttttt8888888888888888888888888888888888888888888888888888888888888888888888888888ttttt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tttt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888tttt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 08888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 000000888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t800000000000888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8880000000000000000000008888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888880000000000000000000000008888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888800000000000000000000000000000888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888800000000000000000000000000000000008888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888800000000000000000000000000000000000008888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888000000000000000000000000000000000000000000888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888880000000000000000000000000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888000000000000000000000000000000000000000000000000008888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888880000000000000000000000000000000000000000000000000000000888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888800000000000000000000000000000000000000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888800000000000000000000000000000000000000000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888800000000000000000000000000000000000000000000000000000000000000000000888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888000000000000000000000000000000000000000000000000000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000008888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000oooooooo0000000888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000oooooooo00000000oooooooo00008888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ooooooo000000000000000000000000ooooooo08888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ooooo00000000000000000000000000000000000000ooooo088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ooo000000000000000000000000000000000000000000000000ooo0008888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000oo000000000000000000000000000000000000000000000000000000oo00000888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ooo0000000000000000000000000000000000000000000000000000000000ooo000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000oo0000000000000000000000000000000000000000000000000000000000000000oo0000000000888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000oo00000000000000000000000000000000000000000000000000000000000000000000oo000000000000888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000ooo000000000000000000000000000000000000000000000000000000000000000000000000ooo000000000000008888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000oo000000000000000000000000000000000000000000000000000000000000000000000000000000oo00000000000000000888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000oo0000000000000000000000000000000000000000000000000000000000000000000000000000000000oo000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000oo00000000000000000000000000000000000000000000000000000000000000000000000000000000000000oo00000000000000000000008888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000oo000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000oo000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o000000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000oo000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000oo0000000000000000000000000000000888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o0000000000000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o000000000000000000000000000000000000008888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000oo00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000oo00000000000000000000000000000000000000000888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000008888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000008888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000088888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000oo00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000oo0000000000000000000000000000000000000000000000000000000000888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000008888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000088888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000008888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000 00000000000000 00000000000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000088888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000 0000000000000000000000 00000000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000008888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000 0000000000000000000000000000 0000000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000 00000000000 00000000000 000000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000 00000000 0000000000 00000000 000000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000 000000 00000000000000000000 000000 0000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088t88888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000 000000 00000000000000000000000000 000000 0000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000 000000 000000000000000000000000000000 000000 000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000o000000000000000000000000000000000000000000000 0000 0000000000000000000000000000000000 0000 000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000o000000000000000000000000000000000000000000000 0000 000000000000000000000000000000000000 0000 000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000o000000000000000000000000000000000000000000000 0000 0000000000000000000000000000000000000000 0000 000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000o000000000000000000000000000000000000000000000 0000 00000000000000000000000000000000000000000000 0000 000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000o00000000000000000000000000000000000000000000 0000 0000000000000000000000000000000000000000000000 0000 00000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000o00000000000000000000000000000000000000000000 0000 000000000000000000000000000000000000000000000000 0000 00000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000o00000000000000000000000000000000000000000000 000 00000000000000000000000000000000000000000000000000 000 00000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000o0000000000000000000000000000000000000000000 000 0000000000000000000000000000000000000000000000000000 000 0000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000o0000000000000000000000000000000000000000000 0000 000000000000000000000000000000000000000000000000000000 0000 0000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000o0000000000000000000000000000000000000000000 00 00000000000000000000000000000000000000000000000000000000 00 0000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000o0000000000000000000000000000000000000000000 000 0000000000000000000000000000000000000000000000000000000000 000 0000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000o000000000000000000000000000000000000000000 000 000000000000000000000000000000000000000000000000000000000000 000 000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000o0000000000000000000000000000000000000000000 00 000000000000000000000000000 000000000000000000000000000 00 0000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000o000000000000000000000000000000000000000000 000 0000000000000000000000000 0000 0000000000000000000000000 000 000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000o000000000000000000000000000000000000000000 0 000000000000000000000000 0000000000 000000000000000000000000 0 000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000o000000000000000000000000000000000000000000 00 000000000000000000000000 00000000000000 000000000000000000000000 00 000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000o00000000000000000000000000000000000000000 00 000000000000000000000000 0000000000000000 000000000000000000000000 00 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000o000000000000000000000000000000000000000000 00 00000000000000000000000 000000000000000000 00000000000000000000000 00 000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000o00000000000000000000000000000000000000000 00 000000000000000000000000 00000000000000000000 000000000000000000000000 00 00000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000o000000000000000000000000000000000000000000 00 00000000000000000000000 0000000000000000000000 00000000000000000000000 00 000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000o00000000000000000000000000000000000000000 00 00000000000000000000000 0000000000000000000000 00000000000000000000000 00 00000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000o000000000000000000000000000000000000000000 00 00000000000000000000000 000000000000000000000000 00000000000000000000000 00 000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888800000000000000000000o00000000000000000000000000000000000000000 00 000000000000000000000000 000000000000000000000000 000000000000000000000000 00 00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888800000000000000000000o00000000000000000000000000000000000000000 00 00000000000000000000000 00000000000000000000000000 00000000000000000000000 00 00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888880000000000000000000o00000000000000000000000000000000000000000 0 000000000000000000000000 00000000000000000000000000 000000000000000000000000 0 00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888000000000000000000o00000000000000000000000000000000000000000 00 000000000000000000000000 00000000000000000000000000 000000000000000000000000 00 00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888800000000000000000o000000000000000000000000000000000000000000 0 000000000000000 00000 00000000000000000000000000 0000000000000000000000000 0 00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888800000000000000000o00000000000000000000000000000000000000000 00 0000000000000 000 000 00000000000000000000000000 000000000000000000000000 00 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888880000000000000000o00000000000000000000000000000000000000000 00 0000000000000 0000000 0 0000000000000000000000000000 000000000000000000000000 00 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888000000000000000o000000000000000000000000000000000000000000 0 0000000000000 000000000 0000000000000000000000000000 0000000000000000000000000 0 000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888000000000000000o00000000000000000000000000000000000000000 00 0000000000000 0000000000 0000000000000000000000000000 0000000000000000000000000 00 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888800000000000000o00000000000000000000000000000000000000000 00 000000000000 00000000000 00000000000000000000000000 0000000000000000000000000 00 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888800000000000000o00000000000000000000000000000000000000000 0 0000000000000 0000000000000 00000000000000000000000000 000000000000000000000000000 0 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888800000000000000o0000000000000000000000000000000000000000 00 0000000000000 0000000000000 0000000000000000000000000 000 000000000000000000 00 0000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888000000000000o00000000000000000000000000000000000000000 00 0000000000000 0000000000000 0 000000000000000000000000 00 0000 00000000000000000 00 00000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888000000000000o00000000000000000000000000000000000000000 0 00000000000000 0000000000000 0 00000000000000000000000 0 000000 000000000000000000 0 00000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888000000000000o00000000000000000000000000000000000000000 0 0000000000000 00000000000000 0 0000000000000000000000 0 0000000 000000000000000000 0 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888800000000000o00000000000000000000000000000000000000000 0 0000000000000 000000000000000 0 000000000000000000000 0 00000000 00000000000000000 0 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888800000000000o00000000000000000000000000000000000000000 0 0000000000000 000000000000000 0 00000000000000000000 0000000000 00000000000000000 0 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888800000000000o0000000000000000000000000000000000000000 00 0000000000000 0000000000000000 00 0000000000000000000 0000000000 00000000000000000 00 0000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888880000000000o0000000000000000000000000000000000000000 0 00000000000000 00000000000000000 0 000000000000000000 0 00000000000 000000000000000000 0 0000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888000000000o00000000000000000000000000000000000000000 0 000000000000000 0000000000000000 0 0000000000000000 000000000000 000000000000000000 0 0000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888000000000o00000000000000000000000000000000000000000 0 000000000000000 00000000000000000 000000000000000 000000000000 000000000000000000 0 00000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888800000000o00000000000000000000000000000000000000000 0 000000000000000 000000000000000000 000 0000 0 0000000000000 000000000000000000 0 00000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888800000000o00000000000000000000000000000000000000000 0 000000000000000 0000000000000000000 00 0000 00 00 0000000000000 000000000000000000 0 00000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888800000000o00000000000000000000000000000000000000000 0 000000000000000 00000000000000000000 0000 000 0000000000000 000000000000000000 0 00000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888880000000o0000000000000000000000000000000000000000 0 0000000000000000 000000000000000000000 0 00000 0000000000000 00000000000000000000 0 0000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888880000000o0000000000000000000000000000000000000000 0 0000000000000000 000000000000000000000 00 0000 00000 00000000000000 00000000000000000000 0 0000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888880000000o0000000000000000000000000000000000000000 0 0000000000000000 00000000000000000000 0 00 00000 00000000000000 00000000000000000000 0 0000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888800000o00000000000000000000000000000000000000000 0 00000000000000000 000000000000000000000 00 000000 00000000000000 00000000000000000000 0 00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888800000o00000000000000000000000000000000000000000 0 00000000000000000 000000000000000000000 00000000000 000000000000000 00000000000000000000 0 00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888800000o00000000000000000000000000000000000000000 0 00000000000000000 000000000000000000000 0000000000 00000000000000 000000000000000000000 0 00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888880000o00000000000000000000000000000000000000000 0 00000000000000000 0000000000000000000000 0000000000 00000000000000 000000000000000000000 0 00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888880000o00000000000000000000000000000000000000000 0 000000000000000000 000000000000000000000 000000000 00000000000000 000000000000000000000 0 00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888880000o00000000000000000000000000000000000000000 0 000000000000000000 000000000000000000000 000000000 00000000000000 000000000000000000000 0 00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888000o00000000000000000000000000000000000000000 0 000000000000000000 000000000000000000000 00000000 00000000000000 0000000000000000000000 0 00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888000o00000000000000000000000000000000000000000 0 0000000000000000000 000000000000000000000 0000 00000000000000 0000000000000000000000 0 0000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888880000o0000000000000000000000000000000000000000 0 0000000000000000000 000000000000000000000 00 00 0000000000000 0000000000000000000000 0 0000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888880000o0000000000000000000000000000000000000000 0 0000000000000000000 000000000000000000000 0000 00 00000000000000 00000000000000000000000 0 0000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888000o0000000000000000000000000000000000000000 0 0000000000000000000 0000000000000000000 00000 0 00000000000000 00000000000000000000000 0 0000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888000o00000000000000000000000000000000000000000 00000000000000000000 0000000000000000000 000 0 0000000000000 00000000000000000000000 00000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888000o00000000000000000000000000000000000000000 00000000000000000000 0000000000000000000 000 00 0000000000000 000000000000000000000000 00000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888800o00000000000000000000000000000000000000000 000000000000000000000 0000000000000000000 00 000000000000 000000000000000000000000 00000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888800o00000000000000000000000000000000000000000 0 00000000000000000000 00000000000000000000 000000 000000000000 000000000000000000000000 0 00000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888800o00000000000000000000000000000000000000000 0 000000000000000000000 0000000000000000000 000000 00000000000 000000000000000000000000 0 0000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888800o0000000000000000000000000000000000000000 0 000000000000000000000 0000000000000000000 000000 0000000000 0000000000000000000000 0 0 0000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888800o0000000000000000000000000000000000000000 0 0000000000000000000000 000000000000000000 000000 0000000000 0000000000000000000000 0 0 0000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888800o00000000000000000000000000000000000000000 0000000000000000000000 000000000000000000 000000 000000000 0000000000000000000000 0 0 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888880o00000000000000000000000000000000000000000 00000000000000000000000 00000000000000000 000000 000000000 0000000000000000000000 0 0 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888880o00000000000000000000000000000000000000000 0 0000000000000000000000 0000000000000000 000000 00000000 00000000000000000000000 00 0 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888880o00000000000000000000000000000000000000000 0 00000000000000000000000 0000000000000000 0000000 000000 0000000000000000000000 00 0 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888o00000000000000000000000000000000000000000 0 00000000000000000000000 000000000000000 0000000 000 000000000000000000000000 000 0 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888880o0000000000000000000000000000000000000000 0 000000000000000000000000 0000000000000 00000000 000000000000000000000000 000 0 0000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000t 88888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888880o00000000000000000000000000000000000000000 0000000000000000000000000 000000000000 00000000000000000000000000000000000000 000 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000t 88888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888o00000000000000000000000000000000000000000 0 0000000000000000000000000 000000000000 00000000000000000000000000000000000000 000 0 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888o00000000000000000000000000000000000000000 0 00000000000000000000000000 00000000000 0000000000000000000000000000000000000 000 0 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888o000000000000000000000000000000000000000000 000000000000000000000000000 00000000 00000000000000000000000000000000000000 0000 000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888o00000000000000000000000000000000000000000 0 000000000000000000000000000 000000 00000000000000000000000000000000000000 000 0 00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888o00000000000000000000000000000000000000000 0 0000000000000000000000000000 000 00000000000000000000000000000000000000 000 0 00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888o000000000000000000000000000000000000000000 00000000000000000000000000000 000000000000000000000000000000000000000 0000 00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888o00000000000000000000000000000000000000000 0 0000000000000000000000000000000000000000000000000000000000000000000000000 000 0 00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888o00000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000 00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880o00000000000000000000000000000000000000000 0 00000000000000000000000000000000000000000000000000000000000000000000000 0000 0 00000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888o00000000000000000000000000000000000000000 0 00000000000000000000000000000000000000000000000000000000000000000000000 000 0 00000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888o000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000 000 000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880o00000000000000000000000000000000000000000 0 000000000000000000000000000000000000000000000000000000000000000000000 00 0 00000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888o000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000 000 000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880o00000000000000000000000000000000000000000 0 00000000000000000000000000000000000000000000000000000000000000000000 000 0 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880o000000000000000000000000000000000000000000 0 0000000000000000000000000000000000000000000000000000000000000000000 00 0 000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880o00000000000000000000000000000000000000000 0 0000000000000000000000000000000000000000000000000000000000000000000 0 0 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880o000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000 0 000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880o000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880o000000000000000000000000000000000000000000 0 000000000000000000000000 00000000000000000000000000 0 000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880o0000000000000000000000000000000000000000000 000000000000000000000000 00000 00 00 000000000000000000000000000 0000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800o000000000000000000000000000000000000000000 0 0000000000000000000000 0 0000000000000000000000000 0 000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880o0000000000000000000000000000000000000000000 0 000000000000000000000000 000 00 00000000000000000000000000 0 0000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800o0000000000000000000000000000000000000000000 0 000000000000000000000000000000000000000000000000000000000000 0 0000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800o0000000000000000000000000000000000000000000 0 0000000000000000000000000000000000000000000000000000000000 0 0000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800o0000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800o00000000000000000000000000000000000000000000 0 000000000000000000000000000000000000000000000000000000 0 00000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888000o00000000000000000000000000000000000000000000 0 000000000000000000000000000000000000000000000000000000 0 00000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888000o00000000000000000000000000000000000000000000 0 0000000000000000000000000000000000000000000000000000 0 00000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888000o000000000000000000000000000000000000000000000 0 000000000000000000000000000000000000000000000000 0 000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000o000000000000000000000000000000000000000000000 0 0000000000000000000000000000000000000000000000 0 000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000o000000000000000000000000000000000000000000000 00 00000000000000000000000000000000000000000000 00 000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000o000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000o0000000000000000000000000000000000000000000000 00 00000000000000000000000000000000000000 00 000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888000000o0000000000000000000000000000000000000000000000 00 000000000000000000000000000000000000 00 0000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888000000o0000000000000000000000000000000000000000000000 0 00000000000000000000000000000000 0 0000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000o000000000000000000000000000000000000000000000000 00 0000000000000000000000000000 00 000000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000o000000000000000000000000000000000000000000000000 00 0000000000000000000000 00 000000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000o0000000000000000000000000000000000000000000000000 000 0000000000000000 000 0000000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000o000000000000000000000000000000000000000000000000000 000 000 00000000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888000000000o00000000000000000000000000000000000000000000000000000 00000000000000 00000000000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888000000000o00000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000000oo0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000oo000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000oo0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000oo0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000oo000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000oo0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000oo000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000oo000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000t 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000000000000000000oo00000000000000000000000000000000000000000000000000000000000000000000000000000000000000oo00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000oo0000000000000000000000000000000000000000000000000000000000000000000000000000000000oo000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000t 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000oo000000000000000000000000000000000000000000000000000000000000000000000000000000oo00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000ooo000000000000000000000000000000000000000000000000000000000000000000000000ooo000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000t 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000oo00000000000000000000000000000000000000000000000000000000000000000000oo000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000oo0000000000000000000000000000000000000000000000000000000000000000oo0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000t 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000ooo0000000000000000000000000000000000000000000000000000000000ooo000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000ooo0000000000000000000000000000000000000000000000000000ooo00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000t 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000oo000000000000000000000000000000000000000000000000oo00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000ooooo00000000000000000000000000000000000000ooooo000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000oooooooo0000000000000000000000oooooooo00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000ooooooo0000000oooooooo000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000ooooooo0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt88888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt88888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt88888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt8888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tttt8888800000000000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttttt800000000000000000000000000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t 000000000000000000000000000000000000000000000000000000000000 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 00000000000000000000000000000000000000000000000000 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 tt00000000000000000000000000000000000 88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888222788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888887222888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888;>>;888888888888;>>>>>>>;8888888888888888888888888", "8888888888#uuu#8885uuu68888888888888888888888888uuu#8888888888888888888883uuu.8888#uuuu8888888888888888uuuuuuu-.=888888888888888888888888888888888888888888888888888#uuu8888888888888888888888888888888888888888888888888888888#uuu-8888ryuuu#8888888882uuuuuu2Xr88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888O<@8888888w<988888888888888888888888888884<>8888888888888888888888888888888:e<<<>w>>>>;8888888888888888888888888", "8888888888#uuu#87yuu.88888888888888888888888888888888888888888888888888883uuuu388=uuuuu8888888888888888uuu2332uuu.88888888888888888888888888888888888888888888888888#uuu8888888888888888888888888888888888888888888888888888888#uuuu2888-uuuu#8888888882uu-331uuuu#8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888+<488888><%888888888888888888888888888888888888888888888888888888888888888>88888%<>8888888884<>8888888888888888888888888888888", "8888888888#uuu#riuui88888862uuy1#88.22X888r222r82227885226*iuy588888888883uuuu-883uuuuu8888888888888888uuu3888iuu28888#1yuu268888862uuui.7888=.-uui3r88822273-u-6888#uuu=.uui78888r3iuu-.=8885226=52688*iuu15225888888888888888#uuuuu=8#uuuuu#8888888882uu28887yuu-88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888&e88888%<$88O4e<<,;888+q$>%q+8;%&<&,988+q$888$,<8888888888888O,q$888O,q$8888888", "8888888888#uuu#1uu-r8888riuuuuuuu*83uu-8886uu288uuu#882uuyuuuuu38888888883uuyuu68-uyuuu8888888888888888uuu3888iuu18886uuuuuuu.888iuuuuuuu3886uuuuuuui888uuuyuuuuu#88#uuuyuuuuy=887yuuuuuuy=882uu2yuu386uuuuuuuu2888888888888888#uuuyu.8.uyuuu#8888888882uu288886uuu#8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888%<$8888&e888@&:>+&&O884<,<<<4;&&w4%eq884<>88$&&w4q<%8884<&ew4&<>88888888888888>&,88888888884<:>>O88888888888>8889<:884<&+88;:<98888>884<>88q<$888,<>884<%88888888888$qee4888888888884<<<<8888:8O<,8888$8888+>>9,8888O&<&,4$8884<>8><4888888888>>>>>$884<>88888O:q&<<%884<>8><4888888888<488888888888%888888888$@<$84<>8;<%8888;<%884<>8888<48888888888888889<48888888888:<%8888$O88884<>84<>88e&O8884<+884<>8888<,8w<4888888888", "8888888888#uuu#883uuuir87yuuuuuuuu8888iuuuyr8888uuu#882uu388#uuu8888888883uu28888883uuu8882uu3888888888uuu388=yuuu*88.uuuuuuuir83uuuuuuuu388.uuuuuuuu388uuu#883uu288#uuuuuuuuyr886uuuuuuuu2882uu3888886uuuuuyuu288#uu2888888888#uuu888888#uuu#883uu28882uuuuuuuuy*8888uuu#888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888O<&<98888;&<%>>:e4884<>88884&w>>:&e884<>889<@9>4<@8884<>8888<,+>9,9,<%8888<<888;&&O88@<988888888", "8888888888#uuu#8882uuu.88=.uuuuuy.88886uuu.88888uuu#882uu388#uuu8888888883uu28888883uuu8882uu3888888888uuu3888*uuuy7883yuuuu.r88#iuuuuu-*88886-uuuuui#88uuu#883uu288#uuu2uuu278888#2uuuuu-X882uu3888888#.2163uu2883uu*888888888#uuu888888#uuu#883uu28882uuuuuu2Xr88888uuu#8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888,<&888888$q<<<<@>884<>8888>@<<<888+&<<8888>O8888888888888O>>;888888888888>>;8888888888888888888888888$>>888888888888888$>>88888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888883u-22uuuu=8ruu688888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888883uuuuuuy*88*u-888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888=#X333#8888=#=888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "8888888888=##7888888888888888888888888888888887##=88888888888888888888888888888888888888888888888888888888888888###r888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888", "88888888883uu2888888888888888888888888888888882uu38888888888888888888=32223=888888888888888888888888888888888888uuu#888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888884+88888888888888888888888888888888888888888888888888888888888888", "88888888883uu2888888888888888888888888888888882uu388888888888888888r.uui2iuu5r8888888888888883uu2888888888888888uuu#8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888884<>8888888888888888888888888888>$88888888888888888888888888888888888888888888888888888888888888", "88888888883uu2888###78888#33X78887##788887##=87##=88=##787337888881u68rX3#366u5888888#333#887.uui##=888#333*=888###r887##=8*3Xr88=X3*8888888888888#33X788888###r8=#r88r63X=7##=8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888>$8888>;888;>OO>;888O>O888$>8;>O888;>8888>$88888888889449O8;%<:>>;88O+44>8888>$88O>;894:O88944;888888888888O+44$8888O>;8O>$888$449;>O88888888", "88888888883uu288Xuuy788*-uuuuu2r8Xuuy8888yuu782uu3883uui1uuuu6888#u187yuuuu281u=888*-uuuuu-82uuuuuu38*-uuuuuuX88uuu#882uu1iuuuy73yuuu.88888888887-uuuuu2r888uuu*2uu#87yuuuuyuu38888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888@<888><%888q<,e<<8888888888$&<<<<%888><4w<88888888", "88888888883uu287uuu*88#uuui2uuu.8ruuu688*uui882uu3883uuuuuuuuy888.u=ryu.#5u28*uX88*uuuy2iuu82uuuuuu3=uuu-22uu388uuu#882uuuuuuuuyuuuuuu788888888=yuu-2yuui888uuuuuuu#ryuuu22uuu38888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888w<>88w<&888&@88@<888@<,88$;%<:>>;O<@;8O9q888<<4O84<<,;8>8O%<488><<&w4484<%;8$q<>88888888", "88888888883uu2ryuuX888-uu688#uuur81uu188.uu6882uu3883uu-78Xuuu#88--8*uy88#u28ru188-uu1r88#-883uu28883uui888r6688uuu#882uu2=8.uuu*8=yuu388888888.uu288ryuu688uuu.*#*=Xuuy7882uu38888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888><:88e%<98;888><4888O88888888", "88888888883uu2iuu.888=uuu3333uuu#8*uuurryuur882uu3883uu2888uuu#88u283u288#u288u287uuu=88888883uu2888Xuuu-13*8888uuu#882uu388#uuu8882uu388888888yuu6888.uu188uuu#88882uu58882uu388888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888<,8$<;e%89<>88><:8:e;<+8w<8884<$8,%+<;8@q88888888,888O&&w>888888<48888<48888>88888888", "88888888883uuuuuu5888#uuuuuuuuuu#88-uu66uu.8882uu3883uu2888uuu#88u283u288#u288u28#uuu888888883uu2888riuuuuuuy788uuu#882uu388#uuu8882uu388888888uuu#8883uu288uuu#88882uu38882uu388888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888qe8w@8w&84<8888<%8@w8@,8qq888><+O<9O<:8<488888888q<888888884<>88889e<<<@9888<488888><48888><488884<>88888888", "88888888883uuu5uuu#88#uuu#######r883uu11uu#8882uu3883uu2888uuu#88-y8*uy88#u28#u58#uuur88888883uu28888861-uuuu-88uuu#882uu388#uuu8882uu388888888uuu#8883uu288uuu#88881uu.8882uu388888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888:<;e:8$<9qq8888,e;<$8:<>88888888q<888888884<>888888$+%&<>88<488888><48888>88888888", "88888888883uui85uu-r88yuuX888886888=uuuuu-88882uu3883uu2888uuu#88.u7ryu23-ui#.u*88yuu3888r5883uui88866888r3uuu88uuu#882uu388#uuu8882uu3882uu3881uu.888-uuX88uuu#8888Xuuu3#6yuu388888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888$8888,e,%88+<%<8888888884<988888884<>8888888889<488<48888<48888888888888", "88888888883uu28r-uu1883uuui33.yu88881uuuuX88882uu3883uu2888uuu#88#u28#yuuiuuuu-8883uuu235-u88Xuuu.363u-.332uu288uuu#882uu388#uuu8882uu3882uu388#uuu.32uuyr88uuu#8888ryuuuuuuuu3888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888&<@888w&<$8888$<8:<4888>%;888:<+88<48888<488888w<,>9%<<>88888888", "88888888883uu288#uuu*885uuuuuuuu88886uuuur88882uu3883uu2888uuu#888.u58r#78####=88885uuuuuuu88=yuuuu33uuuuuuui788uuu#882uu388#uuu8882uu3882uu38886uuuuuuy7888uuu#888887-uuu2iuu3888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888,<:888$<&888888&<$888:<,88888$<&8888,<:8888<<8888+<8;&<<@qe<@888<48888<488888O,<<88888888", "8888888888#336888633X888=31221X=88888333688888633#88#336888333=888riu2*r88#*88888888=322237888=5221#8*3222.68888333=88633#88=333888633#88633#8888=3221Xr8888333=88888887#=8-uuX888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888>4;88884+888888+48888;4>8888884+8888>4;88884488888;wqqw$888$%q,>8$4qq,+88884+88;4>88884+8888+488884488888>%qq:O888;4>8888888;>$84<$88888888", "888888888888888888888888888888888888888888888888888888888888888888883yuuuuu28888888888888888888888888888888888888888888888888888888888888888888888888888888888888888853*#*1uuu=8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888Oe&888888888", "8888888888888888888888888888888888888888888888888888888888888888888888#33367888888888888888888888888888888888888888888888888888888888888888888888888888888888888888882uuuuuuu5888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888>@%44e<+888888888", "88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888852uuuy1*8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888$q<<getMainFrame(), -1, _T("Background Tasks"), wxPoint(0,0), wxSize(210, 50)) { m_iNumTasks = 0; m_pCanvas = new BackgroundManagerCanvas (this); theApp->setIconForFrame (this); m_sizeGauge.Set (70, 20); m_sizeLabel.Set (140, 20); m_sizeBorder.Set (4, 4); m_sizeCellSpacing.Set (3, 3); m_sizeButton.Set (70, 20); m_sizeCell.Set (m_sizeGauge.x + m_sizeLabel.x + m_sizeCellSpacing.x + m_sizeButton.x, 25); theApp->getMainFrame()->SetFocus(); Show(false); } BackgroundManager::~BackgroundManager() { } void BackgroundManager::OnCloseWindow (wxCloseEvent& event) { if (theApp->getMainFrame()->getShuttingDown()) wxMiniFrame::OnCloseWindow (event); else event.Veto(); } void BackgroundManager::OnUnitTick (wxCommandEvent& event) { int iUnits = event.GetInt(); BackgroundSupervisor* pSupervisor = reinterpret_cast(event.GetClientData()); if (pSupervisor == NULL) { sys_error (ERR_SEVERE, "Received NULL task [BackgroundManager::OnUnitTick]"); return; } BackgroundManagerTask* pTask = lookupTask (pSupervisor); if (pTask == NULL) { sys_error (ERR_SEVERE, "Error looking up task [BackgroundManager::OnUnitTick]"); return; } pTask->gauge()->SetValue (iUnits); } void BackgroundManager::OnAddTask (wxCommandEvent& event) { int iNumUnits = event.GetInt(); const char* const pszTaskName = event.GetString().mb_str(wxConvUTF8); BackgroundSupervisor* pSupervisor = reinterpret_cast(event.GetClientData()); if (pSupervisor == NULL) { sys_error (ERR_SEVERE, "Received NULL supervisor [BackgroundManager::OnAddTask]"); return; } wxCriticalSectionLocker locker (m_criticalSection); int iNumTasks = m_vecpTasks.size(); std::vector vecPositionUsed (iNumTasks); //vector of used table positions for (int iP = 0; iP < iNumTasks; iP++) vecPositionUsed[iP] = false; for (TaskContainer::iterator iT = m_vecpTasks.begin(); iT != m_vecpTasks.end(); iT++) { int iPosUsed = (*iT)->position(); if (iPosUsed < iNumTasks) vecPositionUsed[iPosUsed] = true; } int iFirstUnusedPos = iNumTasks; // default is just past current number of tasks for (int i = 0; i < iNumTasks; i++) if (! vecPositionUsed[i]) { iFirstUnusedPos = i; break; } wxPoint posGauge (m_sizeBorder.x, m_sizeBorder.y + iFirstUnusedPos * m_sizeCell.y); wxPoint posLabel (m_sizeBorder.x + m_sizeGauge.x, m_sizeBorder.y + iFirstUnusedPos * m_sizeCell.y); wxPoint posButton (m_sizeBorder.x + m_sizeGauge.x + m_sizeLabel.x, m_sizeBorder.y + iFirstUnusedPos * m_sizeCell.y); wxGauge* pGauge = new wxGauge (m_pCanvas, -1, iNumUnits, posGauge, m_sizeGauge); wxStaticText* pLabel = new wxStaticText (m_pCanvas, -1, wxConvUTF8.cMB2WX(pszTaskName), posLabel, m_sizeLabel); wxButton* pButton = new wxButton (m_pCanvas, s_iNextButtonID, _T("Cancel"), posButton, m_sizeButton, wxBU_LEFT); BackgroundManagerTask* pTask = new BackgroundManagerTask (pSupervisor, pszTaskName, iFirstUnusedPos, pGauge, pLabel, pButton, s_iNextButtonID); m_vecpTasks.push_back (pTask); m_iNumTasks++; s_iNextButtonID++; resizeWindow(); if (m_iNumTasks == 1) { m_pCanvas->SetFocus(); Show(true); } } void BackgroundManager::OnRemoveTask (wxCommandEvent& event) { BackgroundSupervisor* pSupervisor = reinterpret_cast(event.GetClientData()); if (pSupervisor == NULL) { sys_error (ERR_SEVERE, "Received NULL task [BackgroundManager::OnRemoveTask]"); return; } wxCriticalSectionLocker locker (m_criticalSection); bool bFound = false; for (TaskContainer::iterator iTask = m_vecpTasks.begin(); iTask != m_vecpTasks.end(); iTask++) { if ((*iTask)->supervisor() == pSupervisor) { delete (*iTask)->gauge(); delete (*iTask)->label(); delete (*iTask)->button(); delete *iTask; m_vecpTasks.erase (iTask); m_iNumTasks--; bFound = true; break; } } if (! bFound) { sys_error (ERR_SEVERE, "Unable to find supervisor [BackgroundManager::OnRemoveTask]"); return; } pSupervisor->ackRemoveBackgroundManager(); resizeWindow(); if (m_iNumTasks <= 0) { m_pCanvas->SetFocus(); Show(false); } } void BackgroundManager::OnCancelButton (wxCommandEvent& event) { BackgroundManagerTask* pTask = lookupTask (event.GetId()); if (! pTask) { sys_error (ERR_SEVERE, "Unable to lookup task for button"); return; } pTask->supervisor()->onCancel(); } BackgroundManagerTask* BackgroundManager::lookupTask (BackgroundSupervisor* pSupervisor) { BackgroundManagerTask* pTask = NULL; wxCriticalSectionLocker locker (m_criticalSection); for (TaskContainer::iterator iTask = m_vecpTasks.begin(); iTask != m_vecpTasks.end(); iTask++) { if ((*iTask)->supervisor() == pSupervisor) { pTask = *iTask; break; } } return pTask; } BackgroundManagerTask* BackgroundManager::lookupTask (int iButtonID) { BackgroundManagerTask* pTask = NULL; wxCriticalSectionLocker locker (m_criticalSection); for (TaskContainer::iterator iTask = m_vecpTasks.begin(); iTask != m_vecpTasks.end(); iTask++) { if ((*iTask)->buttonID() == iButtonID) { pTask = *iTask; break; } } return pTask; } void BackgroundManager::resizeWindow() { int iHighestPosition = -1; wxCriticalSectionLocker lock (m_criticalSection); for (TaskContainer::iterator i = m_vecpTasks.begin(); i != m_vecpTasks.end(); i++) if (iHighestPosition < (*i)->position()) iHighestPosition = (*i)->position(); wxSize sizeWindow (m_sizeCell.x, m_sizeCell.y * (iHighestPosition + 1)); SetClientSize (sizeWindow); m_pCanvas->Refresh(); } IMPLEMENT_DYNAMIC_CLASS(BackgroundManagerCanvas, wxPanel) BEGIN_EVENT_TABLE(BackgroundManagerCanvas, wxPanel) END_EVENT_TABLE() BackgroundManagerCanvas::BackgroundManagerCanvas (BackgroundManager* pMgr) : wxPanel (pMgr), m_pBackgroundManager(pMgr) { } #endif // HAVE_WXTHREADS ctsim-6.0.2/src/graph3dview.cpp0000644000175000017500000006756313254360476015421 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: graph3dview.cpp ** Purpose: 3d graph view classes ** Programmer: Kevin Rosenberg ** Date Started: Jan 2001 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "wx/wxprec.h" #ifndef WX_PRECOMP #include "wx/wx.h" #endif #if wxUSE_GLCANVAS #if !wxUSE_GLCANVAS #error Please set wxUSE_GLCANVAS to 1 in setup.h. #endif #include "wx/timer.h" #include "wx/glcanvas.h" #include #include #include "ct.h" #include "ctsim.h" #include "docs.h" #include "views.h" #include "dialogs.h" #include "dlgprojections.h" #include "dlgreconstruct.h" #include "backprojectors.h" #include "reconstruct.h" #include "timer.h" #if defined(MSVC) || HAVE_SSTREAM #include #else #include #endif inline void Graph3dFileView::intensityToColor (double dIntensity, GLfloat* vecColor) { if (dIntensity < 0 || dIntensity > 1) { vecColor[0] = vecColor[1] = vecColor[2] = 1; return; } float fRange = dIntensity * 5; int iRange = static_cast(floor (fRange)); float fFrac = fRange - iRange; // Rainbow: Purple->Blue->Cyan->Green->Yellow->Red = (1,0,1)-(0,0,1)-(0,1,1)-(0,1,0)-(1,1,0)-(1,0,0) switch (iRange) { case 0: vecColor[0] = 1.0f - fFrac; vecColor[1] = 0.0f; vecColor[2] = 1.0f; break; case 1: vecColor[0] = 0.0f; vecColor[1] = fFrac; vecColor[2] = 1.0f; break; case 2: vecColor[0] = 0.0f; vecColor[1] = 1.0f; vecColor[2] = 1.0f - fFrac; break; case 3: vecColor[0] = fFrac; vecColor[1] = 1.0f; vecColor[2] = 0.0f; break; case 4: vecColor[0] = 1.0f; vecColor[1] = 1.0f - fFrac; vecColor[2] = 0.0f; break; case 5: vecColor[0] = 1.0f; vecColor[1] = 0.0f; vecColor[2] = 0.0f; break; } } //*********************************************************************** // Function: CalculateVectorNormal // // Purpose: Given three points of a 3D plane, this function calculates // the normal vector of that plane. // // Parameters: // fVert1[] == array for 1st point (3 elements are x, y, and z). // fVert2[] == array for 2nd point (3 elements are x, y, and z). // fVert3[] == array for 3rd point (3 elements are x, y, and z). // // Returns: // fNormalX == X vector for the normal vector // fNormalY == Y vector for the normal vector // fNormalZ == Z vector for the normal vector //************************************************************************* template static void CalculateVectorNormal (T fVert1[], T fVert2[], T fVert3[], T *fNormalX, T *fNormalY, T *fNormalZ) { T Qx = fVert2[0] - fVert1[0]; T Qy = fVert2[1] - fVert1[1]; T Qz = fVert2[2] - fVert1[2]; T Px = fVert3[0] - fVert1[0]; T Py = fVert3[1] - fVert1[1]; T Pz = fVert3[2] - fVert1[2]; *fNormalX = Py*Qz - Pz*Qy; *fNormalY = Pz*Qx - Px*Qz; *fNormalZ = Px*Qy - Py*Qx; } IMPLEMENT_DYNAMIC_CLASS(Graph3dFileView, wxView) BEGIN_EVENT_TABLE(Graph3dFileView, wxView) EVT_MENU(IFMENU_FILE_PROPERTIES, Graph3dFileView::OnProperties) EVT_MENU(GRAPH3D_VIEW_LIGHTING, Graph3dFileView::OnLighting) EVT_MENU(GRAPH3D_VIEW_COLOR, Graph3dFileView::OnColor) EVT_MENU(GRAPH3D_VIEW_SMOOTH, Graph3dFileView::OnSmooth) EVT_MENU(GRAPH3D_VIEW_WIREFRAME, Graph3dFileView::OnWireframe) EVT_MENU(GRAPH3D_VIEW_SCALE_MINMAX, Graph3dFileView::OnScaleSet) EVT_MENU(GRAPH3D_VIEW_SCALE_AUTO, Graph3dFileView::OnScaleAuto) EVT_MENU(GRAPH3D_VIEW_SCALE_FULL, Graph3dFileView::OnScaleFull) END_EVENT_TABLE() Graph3dFileView::Graph3dFileView () : m_pFileMenu(NULL), m_pViewMenu(NULL), m_pStatusBar(NULL), m_pCanvas(NULL), m_dXRotate(-180), m_dYRotate(-210), m_dZRotate(195), m_bDoubleBuffer(true), m_bSmooth(true), m_bWireframe(false), m_bLighting(false), m_bColor(true), m_bColorScaleMinSet(false), m_bColorScaleMaxSet(false), m_pGLContext(NULL), m_pFrame(NULL) {} Graph3dFileView::~Graph3dFileView() { GetDocumentManager()->FileHistoryRemoveMenu (m_pFileMenu); GetDocumentManager()->ActivateView(this, false); if (m_pGLContext) delete m_pGLContext; } bool Graph3dFileView::OnCreate (wxDocument *doc, long WXUNUSED(flags) ) { m_pFrame = CreateChildFrame(doc, this); SetFrame (m_pFrame); m_pViewMenu->Check (GRAPH3D_VIEW_COLOR, m_bColor); m_pViewMenu->Check (GRAPH3D_VIEW_LIGHTING, m_bLighting); m_pViewMenu->Check (GRAPH3D_VIEW_SMOOTH, m_bSmooth); m_pViewMenu->Check (GRAPH3D_VIEW_WIREFRAME, m_bWireframe); m_pFrame->SetFocus(); m_pFrame->Show(true); Activate(true); #if 1 m_pCanvas = CreateCanvas (m_pFrame); m_pGLContext = new wxGLContext (m_pCanvas); m_pFrame->SetClientSize (m_pCanvas->GetBestSize()); m_pCanvas->SetClientSize (m_pCanvas->GetBestSize()); m_pFrame->SetTitle(doc->GetFilename()); m_pCanvas->SetCurrent(*m_pGLContext); InitGL(); // Crash m_pCanvas->SwapBuffers(); #endif return true; } Graph3dFileCanvas* Graph3dFileView::CreateCanvas (wxFrame* parent) { Graph3dFileCanvas* pCanvas = new Graph3dFileCanvas (this, parent, NULL, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE); pCanvas->SetBackgroundColour(*wxWHITE); pCanvas->ClearBackground(); return pCanvas; } void Graph3dFileView::DrawSurface() { if (! GetDocument()) return; if (m_bSmooth) { glShadeModel (GL_SMOOTH); } else { glShadeModel (GL_FLAT); } if (m_bLighting) { glEnable (GL_LIGHTING); } else { glDisable (GL_LIGHTING); } unsigned int nx = GetDocument()->nx(); unsigned int ny = GetDocument()->ny(); glRotated (m_dZRotate, 0.0, 1.0, 0.0); glRotated (m_dXRotate, 0.0, 0.0, 1.0); glRotated (m_dYRotate, 1.0, 0.0, 0.0); glTranslated (-static_cast(nx - 1) / 2, 0.0, -static_cast(ny - 1) / 2); InitMaterials(); if (m_bWireframe) { if (! m_bColor) glColor3f (1.0f, 1.0f, 1.0f); glPolygonOffset (1.0f, 1.0f); glEnable (GL_POLYGON_OFFSET_FILL); glPolygonMode (GL_FRONT_AND_BACK, GL_FILL); glCallList (DISPLAYLIST_COLOR); glEnable (GL_DEPTH_TEST); glColor3f (1.0f, 1.0f, 1.0f); glPolygonOffset (0.0f, 0.0f); glPolygonMode (GL_FRONT_AND_BACK, GL_LINE); glCallList (DISPLAYLIST_NO_COLOR); } else { glPolygonMode (GL_FRONT_AND_BACK, GL_FILL); if (! m_bColor) { glColor3f (1.0f, 1.0f, 1.0f); glCallList (DISPLAYLIST_NO_COLOR); } else { glColorMaterial (GL_FRONT_AND_BACK, GL_DIFFUSE); glEnable (GL_COLOR_MATERIAL); glShadeModel (GL_FLAT); glCallList (DISPLAYLIST_COLOR); } } } void Graph3dFileView::CreateDisplayList() { if (! GetDocument()) return; unsigned int nx = GetDocument()->nx(); unsigned int ny = GetDocument()->ny(); const ImageFileArrayConst v = GetDocument()->getArray(); if (nx == 0 || ny == 0 || ! v) return; glNewList (DISPLAYLIST_COLOR, GL_COMPILE); double dMin = m_dColorScaleMin; double dIntensityScale = m_dColorScaleMax - m_dColorScaleMin; double actOffset = m_dGraphMin; double actScale = 0.4 * sqrt(nx*nx+ny*ny) / (m_dGraphMax - m_dGraphMin); double dXOffset = -(static_cast(nx) - 1) / 2.; double dYOffset = -(static_cast(ny) - 1) / 2.; dXOffset = 0; dYOffset = 0; double dXPos = -dXOffset; unsigned int ix; for (ix = 0; ix < nx - 1; ix++, dXPos++) { double dYPos = -dYOffset; glBegin(GL_QUAD_STRIP); double p1[3], p2[3], p3[3], n1[3]; p1[0] = dXPos; p1[1] = actScale * (v[ix][0] + actOffset); p1[2] = dYPos; p2[0] = dXPos+1; p2[1] = actScale * (v[ix+1][0] + actOffset); p2[2] = dYPos; p3[0] = dXPos; p3[1] = actScale * (v[ix][1] + actOffset); p3[2] = dYPos + 1; CalculateVectorNormal (p1, p2, p3, &n1[0], &n1[1], &n1[2]); double dIntensity1 = 0., dIntensity2 = 0.; if (m_bColor) { dIntensity1 = (v[ix][0] - dMin) / dIntensityScale; dIntensity2 = (v[ix+1][0] - dMin) / dIntensityScale; } float vecColor[3]; if (m_bColor) { intensityToColor (dIntensity1, vecColor); glColor3fv (vecColor); } glVertex3dv (p1); glNormal3dv (n1); if (m_bColor) { intensityToColor (dIntensity2, vecColor); glColor3fv (vecColor); } glVertex3dv (p2); glNormal3dv (n1); double lastP[3]; lastP[0] = ix; lastP[1] = actScale * (v[ix][0] + actOffset); lastP[2] = 0; for (unsigned int iy = 1; iy < ny - 1; iy++, dYPos++) { p1[0] = dXPos; p1[1] = actScale * (v[ix][iy] + actOffset); p1[2] = dYPos; p2[0] = dXPos+1; p2[1] = actScale * (v[ix+1][iy] + actOffset); p2[2] = dYPos; CalculateVectorNormal (p1, p2, lastP, &n1[0], &n1[1], &n1[2]); lastP[0] = p1[0]; lastP[1] = p1[1]; lastP[2] = p1[2]; if (m_bColor) { dIntensity1 = (v[ix][iy] - dMin) / dIntensityScale; dIntensity2 = (v[ix+1][iy] - dMin) / dIntensityScale; intensityToColor (dIntensity1, vecColor); glColor3fv (vecColor); } glVertex3dv (p1); glNormal3dv (n1); if (m_bColor) { intensityToColor (dIntensity2, vecColor); glColor3fv (vecColor); } glVertex3dv (p2); glNormal3dv (n1); } glEnd(); // QUAD_STRIP } glEndList(); glNewList (DISPLAYLIST_NO_COLOR, GL_COMPILE); dXPos = -dXOffset; for (ix = 0; ix < nx - 1; ix++, dXPos++) { double dYPos = -dYOffset; glBegin(GL_QUAD_STRIP); double p1[3], p2[3], p3[3], n1[3]; p1[0] = dXPos; p1[1] = actScale * (v[ix][0] + actOffset); p1[2] = dYPos; p2[0] = dXPos+1; p2[1] = actScale * (v[ix+1][0] + actOffset); p2[2] = dYPos; p3[0] = dXPos; p3[1] = actScale * (v[ix][1] + actOffset); p3[2] = dYPos + 1; CalculateVectorNormal (p1, p2, p3, &n1[0], &n1[1], &n1[2]); glVertex3dv (p1); glNormal3dv (n1); glVertex3dv (p2); glNormal3dv (n1); double lastP[3]; lastP[0] = ix; lastP[1] = actScale * (v[ix][0] + actOffset); lastP[2] = 0; for (unsigned int iy = 1; iy < ny - 1; iy++, dYPos++) { p1[0] = dXPos; p1[1] = actScale * (v[ix][iy] + actOffset); p1[2] = dYPos; p2[0] = dXPos+1; p2[1] = actScale * (v[ix+1][iy] + actOffset); p2[2] = dYPos; CalculateVectorNormal (p1, p2, lastP, &n1[0], &n1[1], &n1[2]); lastP[0] = p1[0]; lastP[1] = p1[1]; lastP[2] = p1[2]; glVertex3dv (p1); glNormal3dv (n1); glVertex3dv (p2); glNormal3dv (n1); } glEnd(); // QUAD_STRIP } glEndList(); } void Graph3dFileView::OnProperties (wxCommandEvent& event) { wxString os; *theApp->getLog() << _T(">>>>\n") << os << _T("<<<<\n"); wxMessageDialog dialogMsg (getFrameForChild(), os, _T("Imagefile Properties"), wxOK | wxICON_INFORMATION); dialogMsg.ShowModal(); } void Graph3dFileView::OnLighting (wxCommandEvent& event) { m_bLighting = ! m_bLighting; m_pViewMenu->Check (GRAPH3D_VIEW_LIGHTING, m_bLighting); m_pCanvas->Refresh(); } void Graph3dFileView::OnWireframe (wxCommandEvent& event) { m_bWireframe = ! m_bWireframe; m_pViewMenu->Check (GRAPH3D_VIEW_WIREFRAME, m_bWireframe); m_pCanvas->Refresh(); } void Graph3dFileView::OnColor (wxCommandEvent& event) { m_bColor = ! m_bColor; m_pViewMenu->Check (GRAPH3D_VIEW_COLOR, m_bColor); m_pCanvas->Refresh(); } void Graph3dFileView::OnSmooth (wxCommandEvent& event) { m_bSmooth = ! m_bSmooth; m_pViewMenu->Check (GRAPH3D_VIEW_SMOOTH, m_bSmooth); m_pCanvas->Refresh(); } void Graph3dFileView::OnDraw (wxDC* dc) { if (m_pCanvas) { m_pCanvas->SetCurrent(*m_pGLContext); #ifdef DEBUG *theApp->getLog() << _T("Drawing 3d surface\n"); #endif Draw(); m_pCanvas->SwapBuffers(); } if (m_pStatusBar) { wxString os; os << _T("Xangle=") << m_dXRotate << _T(", Yangle=") << m_dYRotate << _T(", Zangle=") << m_dZRotate; m_pStatusBar->SetStatusText (os); } } void Graph3dFileView::Draw () { glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glPushMatrix(); DrawSurface(); glPopMatrix(); glFlush(); } void Graph3dFileView::InitMaterials() { if (! GetDocument()) return; int nx = GetDocument()->nx(); int ny = GetDocument()->ny(); #if 1 static float position0[] = {nx/2.0f, ny*2.0f, -ny*2.0f, 0.0f,}; static float ambient0[] = {.1f, .1f, .1f, 1.0f}; static float diffuse0[] = {1.0f, 1.0f, 1.0f, 1.0f}; static float position1[] = {-nx/2.0f, -ny*2.0f, -ny*2.0f, 0.0f,}; static float ambient1[] = {.1f, .1f, .1f, .1f}; static float diffuse1[] = {1.0f, 1.0f, 1.0f, 1.0f}; // static float position0[] = {0.0f, 0.0f, 20.0f, 0.0f}; // static float position1[] = {0.0f, 0.0f, -20.0f, 0.0f}; static float front_mat_shininess[] = {60.0f}; static float front_mat_specular[] = {0.2f, 0.2f, 0.2f, 1.0f}; static float front_mat_diffuse[] = {0.3f, 0.3f, 0.3f, 1.0f}; static float back_mat_shininess[] = {10.0f}; static float back_mat_specular[] = {0.1f, 0.1f, 0.1f, 1.0f}; static float back_mat_diffuse[] = {1.0f, 1.0f, 1.0f, 1.0f}; static float lmodel_ambient[] = {1.0f, 1.0f, 1.0f, 1.0f}; static float lmodel_twoside[] = {GL_TRUE}; //glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); glHint(GL_LINE_SMOOTH, GL_DONT_CARE); glEnable(GL_NORMALIZE); glLightfv (GL_LIGHT0, GL_AMBIENT, ambient0); glLightfv (GL_LIGHT0, GL_DIFFUSE, diffuse0); glLightfv (GL_LIGHT0, GL_POSITION, position0); glEnable (GL_LIGHT0); glLightfv (GL_LIGHT1, GL_AMBIENT, ambient1); glLightfv (GL_LIGHT1, GL_DIFFUSE, diffuse1); glLightfv (GL_LIGHT1, GL_POSITION, position1); glEnable (GL_LIGHT1); glLightModelfv (GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); glLightModelfv (GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside); glMaterialfv (GL_FRONT_AND_BACK, GL_SHININESS, front_mat_shininess); glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, front_mat_specular); glMaterialfv (GL_FRONT_AND_BACK, GL_DIFFUSE, front_mat_diffuse); glMaterialfv (GL_BACK, GL_SHININESS, back_mat_shininess); glMaterialfv (GL_BACK, GL_SPECULAR, back_mat_specular); glMaterialfv (GL_BACK, GL_DIFFUSE, back_mat_diffuse); glColorMaterial (GL_FRONT_AND_BACK, GL_DIFFUSE); glColorMaterial (GL_FRONT_AND_BACK, GL_SPECULAR); glEnable(GL_COLOR_MATERIAL); #else GLfloat impLPos[] = {1.0f, 1.0f, 1.0f, 0.0f}; GLfloat defaultLightAmb [] = {.2f, .2f, .2f, 1.0f}; GLfloat defaultLightDiff [] = {.2f, .2f, .2f, 1.0f}; GLfloat defaultLightSpec [] = { .3f, .3f, .3f, 1.0f}; GLfloat defaultGlobalAmb [] = {.3f, .3f, .3f, 1.0f}; GLfloat defaultGlobalDiff[] = {.3f, .3f, .3f, 1.0f}; GLfloat defaultMatShine[] = { 30.0f }; GLfloat defaultMatSpec[] = { .4f, .4f, .4f, 1.0f}; GLfloat defaultMatAmb[] = { .3f, .3f, .3f, 1.0f}; GLfloat defaultMatDiff[] = { .5f, .5f, .5f, 1.0f}; GLfloat brassMatAmb[] = { .33f, .22f, .03f, 1.0f}; GLfloat brassMatDiff[] = { .78f, .57f, .11f, 1.0f}; GLfloat brassMatSpec[] = { .99f, .91f, .81f, 1.0f}; GLfloat brassMatShine[] = { 27.8f }; GLfloat emeraldMatAmb[] = { .02f1, .1745f , .021f, 1.0f }; GLfloat emeraldMatDiff[] = { .075f, .6142f , .075f, 1.0f }; GLfloat emeraldMatSpec[] = { .633f, .7278f , .633f, 1.0f }; GLfloat emeraldMatShine[] = { 76.8f }; GLfloat slateMatAmb[] = { .02f, .02f , .02f, 1.0f }; GLfloat slateMatDiff[] = { .02f, .01f , .01f, 1.0f }; GLfloat slateMatSpec[] = { .4f, .4f , .4f , 1.0f }; GLfloat slateMatShine[] = { .768f }; // double opnX = nx, opnY = ny, opnZ = z; // eyeX = 1; eyeY = 1, eyeZ = 1; impLPos[0] = nx/2.; impLPos[1]= ny/2.; impLPos[2] = 0.; //opnListNum = 1; //impGraphicsFlag = IMP__3D; // glutInitDisplayMode (GLUT_DOUBLE| GLUT_RGB | GLUT_DEPTH | GLUT_ACCUM); // glutInitWindowSize (IMP_WIN_X, IMP_WIN_Y); // glutInitWindowPosition (100, 100); // glutCreateWindow ("- imp3D graphics -" ); glClearColor (0.0f, 0.0f, 0.0f, 0.0f); glShadeModel (GL_SMOOTH); glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); glHint(GL_LINE_SMOOTH, GL_DONT_CARE); glEnable(GL_NORMALIZE); glEnable(GL_DEPTH_TEST); glLightfv(GL_LIGHT0, GL_AMBIENT, defaultLightAmb); glLightfv(GL_LIGHT0, GL_DIFFUSE, defaultLightDiff); glLightfv(GL_LIGHT0, GL_SPECULAR,defaultLightSpec); glLightfv(GL_LIGHT1, GL_AMBIENT, defaultLightAmb); glLightfv(GL_LIGHT1, GL_DIFFUSE, defaultLightDiff); glLightfv(GL_LIGHT1, GL_SPECULAR,defaultLightSpec); glLightfv(GL_LIGHT2, GL_AMBIENT , defaultLightAmb); glLightfv(GL_LIGHT2, GL_DIFFUSE , defaultLightDiff); glLightfv(GL_LIGHT2, GL_SPECULAR, defaultLightSpec); glLightfv(GL_LIGHT0, GL_POSITION,impLPos); glLightfv(GL_LIGHT1, GL_POSITION,impLPos); glLightfv(GL_LIGHT2, GL_POSITION,impLPos); glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT , defaultMatAmb); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE , defaultMatDiff); glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR , defaultMatSpec); glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, defaultMatShine); glLightModelfv(GL_LIGHT_MODEL_AMBIENT, defaultGlobalAmb); glColorMaterial(GL_FRONT_AND_BACK, GL_DIFFUSE); glEnable(GL_COLOR_MATERIAL); glEnable(GL_LIGHTING); glEnable(GL_LIGHT1); glEnable(GL_LIGHT2); glEnable(GL_LIGHT0); #endif } void Graph3dFileView::InitGL () { glClearColor (0.0f, 0.0f, 0.0f, 0.0f); glDisable (GL_CULL_FACE); glEnable (GL_DEPTH_TEST); } void Graph3dFileView::OnUpdate (wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint) ) { if (! GetDocument()) return; unsigned int nx = GetDocument()->nx(); unsigned int ny = GetDocument()->ny(); const ImageFileArrayConst v = GetDocument()->getArray(); if (v != NULL && nx != 0 && ny != 0) { double min = v[0][0]; double max = min; for (unsigned int ix = 0; ix < nx; ix++) { for (unsigned int iy = 0; iy < ny; iy++) { double dVal = v[ix][iy]; if (min > dVal) min = dVal; else if (max < dVal) max = dVal; } } m_dGraphMin = min; m_dGraphMax = max; if (! m_bColorScaleMinSet) m_dColorScaleMin = min; if (! m_bColorScaleMaxSet) m_dColorScaleMax = max; } double dRadius = maxValue (nx, ny) * SQRT2 / 2; if (m_pCanvas) m_pCanvas->SetCurrent(*m_pGLContext); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho (-dRadius, dRadius, -dRadius, dRadius, dRadius*5, -dRadius*5); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); #if 0 GLfloat eyep[3], lookp[3], up[3]; eyep[0] = -nx/2; eyep[1] = 0; eyep[2] = -ny/2; lookp[0] = 0; lookp[1] = 0, lookp[2] = 0; up[0] = 0; up[1] = 1; up[2] = 0; gluLookAt (eyep[0], eyep[1], eyep[2], lookp[0], lookp[1], lookp[2], up[0], up[1], up[2]); #endif CreateDisplayList(); if (m_pCanvas) { m_pCanvas->SwapBuffers(); m_pCanvas->Refresh(); } } bool Graph3dFileView::OnClose (bool deleteWindow) { if (! GetDocument() || ! GetDocument()->Close()) return false; Activate (false); if (m_pCanvas) { m_pCanvas->setView(NULL); m_pCanvas = NULL; } wxString s(theApp->GetAppName()); if (m_pFrame) m_pFrame->SetTitle(s); SetFrame(NULL); if (deleteWindow) { delete m_pFrame; m_pFrame = NULL; if (GetDocument() && GetDocument()->getBadFileOpen()) ::wxYield(); // wxWindows bug workaround } return true; } void Graph3dFileView::setInitialClientSize () { if (m_pFrame && m_pCanvas) { wxSize bestSize = m_pCanvas->GetBestSize(); m_pFrame->SetClientSize (bestSize); m_pFrame->Show (true); m_pFrame->SetFocus(); } } void Graph3dFileView::OnScaleAuto (wxCommandEvent& event) { #if 0 const ImageFile& rIF = GetDocument()->getImageFile(); double min, max, mean, mode, median, stddev; rIF.statistics(min, max, mean, mode, median, stddev); DialogAutoScaleParameters dialogAutoScale (getFrameForChild(), mean, mode, median, stddev, m_dAutoScaleFactor); int iRetVal = dialogAutoScale.ShowModal(); if (iRetVal == wxID_OK) { m_bMinSpecified = true; m_bMaxSpecified = true; double dMin, dMax; if (dialogAutoScale.getMinMax (&dMin, &dMax)) { m_dMinPixel = dMin; m_dMaxPixel = dMax; m_dAutoScaleFactor = dialogAutoScale.getAutoScaleFactor(); OnUpdate (this, NULL); } } #endif } void Graph3dFileView::OnScaleSet (wxCommandEvent& event) { if (! GetDocument()) return; unsigned int nx = GetDocument()->nx(); unsigned int ny = GetDocument()->ny(); const ImageFileArrayConst v = GetDocument()->getArray(); double dMin = 0., dMax = 0.; if (! m_bColorScaleMinSet && ! m_bColorScaleMaxSet) { dMax = dMin = v[0][0]; for (unsigned ix = 0; ix < nx; ix++) for (unsigned int iy = 0; iy < ny; iy++) if (v[ix][iy] < dMin) dMin = v[ix][iy]; else if (v[ix][iy] > dMax) dMax = v[ix][iy]; } if (m_bColorScaleMinSet) dMin = m_dColorScaleMin; if (m_bColorScaleMaxSet) dMax = m_dColorScaleMax; DialogGetMinMax dialogMinMax (getFrameForChild(), _T("Set Color Scale Minimum & Maximum"), dMin, dMax); int retVal = dialogMinMax.ShowModal(); if (retVal == wxID_OK) { m_bColorScaleMinSet = true; m_bColorScaleMaxSet = true; m_dColorScaleMin = dialogMinMax.getMinimum(); m_dColorScaleMax = dialogMinMax.getMaximum(); OnUpdate (this, NULL); } } void Graph3dFileView::OnScaleFull (wxCommandEvent& event) { if (m_bColorScaleMinSet || m_bColorScaleMaxSet) { m_bColorScaleMinSet = false; m_bColorScaleMaxSet = false; OnUpdate (this, NULL); } } #if CTSIM_MDI wxDocMDIChildFrame* #else wxDocChildFrame* #endif Graph3dFileView::CreateChildFrame (wxDocument *doc, wxView *view) { #if CTSIM_MDI wxDocMDIChildFrame* subframe = new wxDocMDIChildFrame (doc, view, theApp->getMainFrame(), -1, _T("Graph3dFile Frame"), wxPoint(-1,-1), wxSize(-1,-1), wxDEFAULT_FRAME_STYLE); #else wxDocChildFrame* subframe = new wxDocChildFrame (doc, view, theApp->getMainFrame(), -1, _T("Graph3dFile Frame"), wxPoint(-1,-1), wxSize(-1,-1), wxDEFAULT_FRAME_STYLE); #endif theApp->setIconForFrame (subframe); // status bar text not showing tested with enlightenment. disabling for now... #if 0 m_pStatusBar = new wxStatusBar (subframe, -1); subframe->SetStatusBar (m_pStatusBar); m_pStatusBar->Show(true); #endif m_pFileMenu = new wxMenu; m_pFileMenu->Append(MAINMENU_FILE_CREATE_PHANTOM, _T("Cr&eate Phantom...\tCtrl-P")); m_pFileMenu->Append(MAINMENU_FILE_CREATE_FILTER, _T("Create &Filter...\tCtrl-F")); m_pFileMenu->Append(wxID_OPEN, _T("&Open...\tCtrl-O")); m_pFileMenu->Append(wxID_CLOSE, _T("&Close\tCtrl-W")); m_pFileMenu->AppendSeparator(); m_pFileMenu->Append(IFMENU_FILE_PROPERTIES, _T("P&roperties")); m_pFileMenu->AppendSeparator(); m_pFileMenu->Append(wxID_PRINT, _T("&Print...")); m_pFileMenu->Append(wxID_PRINT_SETUP, _T("Print &Setup...")); m_pFileMenu->Append(wxID_PREVIEW, _T("Print Preview")); m_pFileMenu->AppendSeparator(); m_pFileMenu->Append (MAINMENU_FILE_PREFERENCES, _T("Prefere&nces...")); m_pFileMenu->Append(MAINMENU_FILE_EXIT, _T("E&xit")); GetDocumentManager()->FileHistoryAddFilesToMenu(m_pFileMenu); GetDocumentManager()->FileHistoryUseMenu(m_pFileMenu); m_pViewMenu = new wxMenu; m_pViewMenu->Append(GRAPH3D_VIEW_WIREFRAME, _T("Wi&reframe\tCtrl-R"), _T(""), true); m_pViewMenu->Append(GRAPH3D_VIEW_SMOOTH, _T("S&mooth\tCtrl-M"), _T(""), true); m_pViewMenu->Append(GRAPH3D_VIEW_COLOR, _T("Co&lor\tCtrl-L"), _T(""), true); m_pViewMenu->Append(GRAPH3D_VIEW_LIGHTING, _T("Li&ghting\tCtrl-G"), _T(""), true); m_pViewMenu->AppendSeparator(); m_pViewMenu->Append(GRAPH3D_VIEW_SCALE_MINMAX, _T("Color Scale S&et Min/Max...\tCtrl-E")); m_pViewMenu->Append(GRAPH3D_VIEW_SCALE_AUTO, _T("Color Scale &Auto...\tCtrl-A")); m_pViewMenu->Append(GRAPH3D_VIEW_SCALE_FULL, _T("Color F&ull Scale\tCtrl-U")); wxMenu *help_menu = new wxMenu; help_menu->Append(MAINMENU_HELP_CONTENTS, _T("&Contents\tF1")); help_menu->Append(MAINMENU_HELP_ABOUT, _T("&About")); wxMenuBar *menu_bar = new wxMenuBar; menu_bar->Append(m_pFileMenu, _T("&File")); menu_bar->Append(m_pViewMenu, _T("&View")); menu_bar->Append(help_menu, _T("&Help")); subframe->SetMenuBar(menu_bar); subframe->Centre(wxBOTH); wxAcceleratorEntry accelEntries[7]; accelEntries[0].Set (wxACCEL_CTRL, static_cast('R'), GRAPH3D_VIEW_WIREFRAME); accelEntries[1].Set (wxACCEL_CTRL, static_cast('L'), GRAPH3D_VIEW_COLOR); accelEntries[2].Set (wxACCEL_CTRL, static_cast('G'), GRAPH3D_VIEW_LIGHTING); accelEntries[3].Set (wxACCEL_CTRL, static_cast('M'), GRAPH3D_VIEW_SMOOTH); accelEntries[4].Set (wxACCEL_CTRL, static_cast('E'), GRAPH3D_VIEW_SCALE_MINMAX); accelEntries[5].Set (wxACCEL_CTRL, static_cast('A'), GRAPH3D_VIEW_SCALE_AUTO); accelEntries[6].Set (wxACCEL_CTRL, static_cast('U'), GRAPH3D_VIEW_SCALE_FULL); wxAcceleratorTable accelTable (7, accelEntries); subframe->SetAcceleratorTable (accelTable); return subframe; } BEGIN_EVENT_TABLE(Graph3dFileCanvas, wxGLCanvas) EVT_PAINT(Graph3dFileCanvas::OnPaint) EVT_SIZE(Graph3dFileCanvas::OnSize) EVT_CHAR(Graph3dFileCanvas::OnChar) EVT_MOUSE_EVENTS(Graph3dFileCanvas::OnMouseEvent) EVT_ERASE_BACKGROUND(Graph3dFileCanvas::OnEraseBackground) END_EVENT_TABLE() Graph3dFileCanvas::Graph3dFileCanvas (Graph3dFileView* view, wxWindow *parent, int* attribList, const wxPoint& pos, const wxSize& size, long style) : wxGLCanvas (parent, wxID_ANY, attribList, pos, size, style), m_pView(view) { } Graph3dFileCanvas::~Graph3dFileCanvas() { } void Graph3dFileCanvas::OnPaint (wxPaintEvent& event) { wxPaintDC dc(this); if (m_pView) m_pView->OnDraw(& dc); } wxSize Graph3dFileCanvas::GetBestSize() const { return wxSize (400,400); } void Graph3dFileCanvas::OnSize (wxSizeEvent& event) { #ifndef __WXMOTIF__ // if (!GetContext()) return; #endif int width, height; GetClientSize (&width, &height); Reshape (width, height); // Crash } void Graph3dFileCanvas::OnChar(wxKeyEvent& event) { if (! m_pView) return; wxCommandEvent dummyEvent; switch (event.GetKeyCode()) { case WXK_LEFT: m_pView->m_dZRotate += 15.0; Refresh (false); break; case WXK_RIGHT: m_pView->m_dZRotate -= 15.0; Refresh (false); break; case WXK_UP: m_pView->m_dXRotate += 15.0; Refresh (false); break; case WXK_DOWN: m_pView->m_dXRotate -= 15.0; Refresh (false); break; case 'y': case 'Y': m_pView->m_dYRotate += 15.0; Refresh (false); break; case 't': case 'T': m_pView->m_dYRotate -= 15.0; Refresh (false); break; case 'w': case 'W': m_pView->OnWireframe (dummyEvent); break; case 's': case 'S': m_pView->OnSmooth (dummyEvent); break; case 'l': case 'L': m_pView->OnLighting (dummyEvent); break; case 'c': case 'C': m_pView->OnColor (dummyEvent); break; default: event.Skip(); return; } } void Graph3dFileCanvas::Reshape (int width, int height) { SetCurrent(*m_pView->m_pGLContext); glViewport (0, 0, (GLint)width, (GLint)height); SwapBuffers(); } void Graph3dFileCanvas::OnMouseEvent(wxMouseEvent& event) { static int dragging = 0; static float last_x, last_y; if (! m_pView) return; if(event.LeftIsDown()) { if(! dragging) { dragging = 1; } else { m_pView->m_dXRotate -= (event.GetY() - last_y)*1.0; m_pView->m_dZRotate += (event.GetX() - last_x)*1.0; Refresh (false); } last_x = event.GetX(); last_y = event.GetY(); } else dragging = 0; } void Graph3dFileCanvas::OnEraseBackground(wxEraseEvent& event) { // Do nothing: avoid flashing. } #endif // wxUSE_GLCANVAS ctsim-6.0.2/src/backgroundsupr.h0000644000175000017500000001074111240454454015647 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: backgroundsupr.h ** Purpose: Header file for background supervisors ** Programmer: Kevin Rosenberg ** Date Started: February 2001 ** ** This is part of the CTSim program ** Copyright (C) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef _BACKGROUNDSUPR_H #define _BACKGROUNDSUPR_H #include #include #include #include "timer.h" // This thread creates a SupervisorTask event handler object // The thread is detached and terminates when SupervisorTask terminates class SupervisorThread : public wxThread { private: public: SupervisorThread() : wxThread(wxTHREAD_DETACHED) {} }; // Pure virtual class for BackgroundSupervisor that can communication with BackgroundManager via messages class BackgroundWorkerThread; class BackgroundProcessingDocument; class BackgroundSupervisor : public wxEvtHandler { private: DECLARE_DYNAMIC_CLASS(BackgroundSupervisor) SupervisorThread* m_pMyThread; wxWindow* m_pParentFrame; BackgroundProcessingDocument* m_pDocument; const wxString m_strProcessTitle; const unsigned int m_iTotalUnits; int m_iNumThreads; volatile bool m_bDone; volatile bool m_bFail; wxString m_strFailMessage; volatile bool m_bCancelled; volatile int m_iRunning; volatile unsigned int m_iUnitsDone; Timer* m_pTimer; volatile bool m_bWorkersDeleted; volatile bool m_bBackgroundManagerAdded; typedef std::vector ThreadContainer; ThreadContainer m_vecpThreads; wxCriticalSection m_critsectThreads; public: enum { MSG_BACKGROUND_SUPERVISOR_ADD = 7500, // sends to BackgroundManager and Document MSG_BACKGROUND_SUPERVISOR_REMOVE = 7501, // sends to BackgroundManager and Document MSG_BACKGROUND_SUPERVISOR_UNIT_TICK = 7502, // sends to BackgroundManager for progress bars MSG_BACKGROUND_SUPERVISOR_CANCEL = 7503, // *sent* to Supervisor to cancel process MSG_DOCUMENT_ACK_REMOVE = 7504, MSG_WORKER_THREAD_UNIT_TICK = 7505, MSG_WORKER_THREAD_DONE = 7506, MSG_WORKER_THREAD_FAIL = 7507, // sent by workers when they fail }; BackgroundSupervisor (SupervisorThread* pMyThread, wxWindow* pParentFrame, BackgroundProcessingDocument* pDocument, wxChar const* pszProcessTitle, int iTotalUnits); BackgroundSupervisor () : wxEvtHandler(), m_iTotalUnits(0) {} virtual ~BackgroundSupervisor(); virtual BackgroundWorkerThread* createWorker (int iThread, int iStartUnit, int iNumUnits) { return NULL; } bool start(); virtual void onDone() {}; virtual void onCancel(); virtual void onWorkerFail(int iThread, const wxString& strFailMessage); virtual void onWorkerUnitTick(); virtual void onWorkerDone(int iThread); void deleteWorkers(); void ackRemoveBackgroundManager(); bool workersDone() const { return m_iRunning == 0; } bool workersDeleted() const { return m_bWorkersDeleted; } bool isDone() const {return m_bDone;} void setDone() { m_bDone = true; } bool fail() const {return m_bFail;} const wxString& getFailMessage() const { return m_strFailMessage; } bool cancelled() const {return m_bCancelled;} int getNumWorkers() const { return m_iNumThreads; } double getTimerEnd() { return m_pTimer->timerEnd(); } DECLARE_EVENT_TABLE() }; class BackgroundWorkerThread : public wxThread { protected: BackgroundSupervisor* m_pSupervisor; const int m_iThread; const int m_iStartUnit; const int m_iNumUnits; public: BackgroundWorkerThread (BackgroundSupervisor* pSupervisor, int iThread, int iStartUnit, int iNumUnits) : wxThread (wxTHREAD_DETACHED), m_pSupervisor(pSupervisor), m_iThread(iThread), m_iStartUnit(iStartUnit), m_iNumUnits(iNumUnits) {} }; #endif // _BACKGROUNDSUPR_H_ ctsim-6.0.2/src/threadproj.h0000644000175000017500000001017611240454454014762 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: threadproj.h ** Purpose: Header file for thread reconstructions ** Programmer: Kevin Rosenberg ** Date Started: February 2001 ** ** This is part of the CTSim program ** Copyright (C) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef _THREADPROJ_H #define _THREADPROJ_H #ifdef HAVE_WXTHREADS #include #include #include #include "timer.h" #include "backgroundsupr.h" class Reconstructor; class ImageFile; class PhantomFileDocument; class ProjectorWorker; class ProjectionFileView; class ProjectorSupervisorThread : public SupervisorThread { private: PhantomFileView* m_pPhantomView; const int m_iNDet; const int m_iNView; const int m_iOffsetView; const std::string m_strGeometry; const int m_iNSample; const double m_dRotation; const double m_dFocalLength; const double m_dCenterDetectorLength; const double m_dViewRatio; const double m_dScanRatio; const wxString m_strLabel; public: ProjectorSupervisorThread(PhantomFileView* pProjView, int iNDet, int iNView, int iOffsetView, const char* pszGeometry, int iNSample, double dRotation, double dFocalLength, double dCenterDetectorLength, double dViewRatio, double dScanRatio, wxChar const* strLabel); virtual wxThread::ExitCode Entry(); virtual void OnExit(); }; class ProjectorSupervisor : public BackgroundSupervisor { private: std::vector m_vecpChildProjections; PhantomFileView* m_pPhantomView; PhantomFileDocument* m_pPhantomDoc; Scanner* m_pScanner; const int m_iNDet; const int m_iNView; const int m_iOffsetView; const char* const m_pszGeometry; const int m_iNSample; const double m_dRotation; const double m_dFocalLength; const double m_dCenterDetectorLength; const double m_dViewRatio; const double m_dScanRatio; const wxString m_strLabel; public: ProjectorSupervisor (SupervisorThread* pThread, PhantomFileView* pProjView, int iNDet, int iNView, int iOffsetView, const char* pszGeometry, int iNSample, double dRotation, double dFocalLength, double dCenterDetectorLength, double dViewRatio, double dScanRatio, wxChar const* pszLabel); virtual BackgroundWorkerThread* createWorker (int iThread, int iStartUnit, int iNumUnits); virtual ~ProjectorSupervisor (); void onDone(); Projections* getProjections(); }; class ProjectorWorker : public BackgroundWorkerThread { private: PhantomFileView* m_pPhantomView; Projections* m_pProjections; Scanner* m_pScanner; int m_iNDet; int m_iNView; int m_iOffsetView; const char* m_pszGeometry; int m_iNSample; double m_dRotation; double m_dFocalLength; double m_dCenterDetectorLength; double m_dViewRatio; double m_dScanRatio; public: ProjectorWorker (ProjectorSupervisor* pSupervisor, int iThread, int iStartView, int iNumViews) : BackgroundWorkerThread (pSupervisor, iThread, iStartView, iNumViews) {} void SetParameters (PhantomFileView* pPhantomFile, Projections* pProjections, Scanner* pScanner, int iNDet, int iView, int iOffsetView, const char* const pszGeometry, int iNSample, double dRotation, double dFocalLength, double dCenterDetectorLength, double dViewRatio, double dScanRatio); virtual wxThread::ExitCode Entry(); // thread execution starts here virtual void OnExit(); }; #endif // HAVE_WXTHREADS #endif // _THREADPROJ_H_ ctsim-6.0.2/src/ctsim.rc0000644000175000017500000000003010667176710014110 0ustar kevinkevin#include "wx/msw/wx.rc" ctsim-6.0.2/src/dlgreconstruct.h0000644000175000017500000000710611240454454015661 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: dlgreconstruct.h ** Purpose: Headers for Reconstruction Animation Dialog ** Programmer: Kevin Rosenberg ** Date Started: August 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef __DLGRECONSTRUCT_H_ #define __DLGRECONSTRUCT_H_ #include "wx/setup.h" #include "wx/dialog.h" #include "wx/dcmemory.h" class wxButton; class wxStaticText; class Projections; class ImageFile; class SGP; class SGPDriver; class Reconstructor; class ReconstructDialog : public wxDialog { DECLARE_DYNAMIC_CLASS(ReconstructDialog) public: ReconstructDialog (Reconstructor& rReconstruct, const Projections& rProj, ImageFile& rIF, const int iTrace, wxWindow *parent); ~ReconstructDialog(); /* Perform projection on view number return true if ABORT button has not been pressed */ bool reconstructView (int iViewNumber, bool bBackproject = true); /* Can be called to continue after the cancel button has been pressed, but the program decided to continue the operation (e.g., user didn't confirm it) */ void Resume() { m_state = Continue; } // implementation from now on // callback for optional abort button void OnCancel(wxCommandEvent& event); // callback to disable "hard" window closing void OnClose(wxCloseEvent& event); void OnPaint(wxPaintEvent& event); void OnPause(wxCommandEvent& event); void OnStep(wxCommandEvent& event); bool isPaused() const {return m_state == Paused;} bool isCancelled() const {return m_state == Cancelled;} private: // parent top level window (may be NULL) wxWindow *m_parentTop; int m_iLastView; int m_iClientX; // size of client window int m_iClientY; Reconstructor& m_rReconstructor; const Projections& m_rProjections; ImageFile& m_rImageFile; SGPDriver* m_pSGPDriver; SGP* m_pSGP; const int m_iTrace; wxDC* m_pDC; wxButton *m_btnAbort; // the abort button (or NULL if none) wxButton *m_btnPause; wxButton *m_btnStep; wxMemoryDC m_memoryDC; // for restoring image on OnPaint wxBitmap m_bitmap; int m_nxImage; int m_nyImage; int m_nxGraph; int m_nyGraph; // continue processing or not (return value for Update()) enum { Uncancellable = -1, // dialog can't be canceled Paused, Cancelled, // can be cancelled and, in fact, was Continue, // can be cancelled but wasn't Finished // finished, waiting to be removed from screen } m_state; const static int ID_BTN_PAUSE; const static int ID_BTN_STEP; const static int MAX_IMAGE_X; const static int MAX_IMAGE_Y; void showView (int iViewNumber, bool bBackprojectView = true); DECLARE_EVENT_TABLE() }; #endif ctsim-6.0.2/src/threadrecon.h0000644000175000017500000001127411240454454015116 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: threadrecon.h ** Purpose: Header file for thread reconstructions ** Programmer: Kevin Rosenberg ** Date Started: February 2001 ** ** This is part of the CTSim program ** Copyright (C) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef _THREADRECON_H #define _THREADRECON_H #ifdef HAVE_WXTHREADS #include #include #include #include "timer.h" #include "backgroundsupr.h" class Reconstructor; class ImageFile; class ProjectionFileDocument; class ReconstructorWorker; class ProjectionFileView; struct ReconstructionROI; class ReconstructorSupervisorThread : public SupervisorThread { private: ProjectionFileView* m_pProjView; ImageFile* m_pImageFile; const int m_iNX; const int m_iNY; const std::string m_strFilterName; const double m_dFilterParam; const std::string m_strFilterMethod; const int m_iZeropad; const std::string m_strFilterGenerationName; const std::string m_strInterpName; const int m_iInterpParam; const std::string m_strBackprojectName; const wxString m_strLabel; ReconstructionROI m_reconROI; const bool m_bRebinToParallel; public: ReconstructorSupervisorThread(ProjectionFileView* pProjView, int iNX, int iNY, const char* pszFilterName, double dFilterParam, const char* pszFilterMethod, int iZeropad, const char* pszFilterGenerationName, const char* pszInterpName, int iInterpParam, const char* pszBackprojectName, wxChar const* pszLabel, ReconstructionROI* pROI, bool bRebinToParallel); virtual wxThread::ExitCode Entry(); virtual void OnExit(); }; class ReconstructorSupervisor : public BackgroundSupervisor { private: std::vector m_vecpChildImageFile; const Projections* m_pProj; ProjectionFileView* m_pProjView; ProjectionFileDocument* m_pProjDoc; const int m_iImageNX; const int m_iImageNY; const char* const m_pszFilterName; const double m_dFilterParam; const char* const m_pszFilterMethod; const int m_iZeropad; const char* const m_pszFilterGenerationName; const char* const m_pszInterpName; const int m_iInterpParam; const char* const m_pszBackprojectName; const wxString m_strLabel; ReconstructionROI* m_pReconROI; public: ReconstructorSupervisor (SupervisorThread* pMyThread, Projections* pProj, ProjectionFileView* pProjView, int iNX, int iNY, const char* pszFilterName, double dFilterParam, const char* pszFilterMethod, int iZeropad, const char* pszFilterGenerationName, const char* pszInterpName, int iInterpParam, const char* pszBackprojectName, wxChar const* pszLabel, ReconstructionROI* pReconROI); virtual BackgroundWorkerThread* createWorker (int iThread, int iStartUnit, int iNumUnits); virtual ~ReconstructorSupervisor (); void onDone(); ImageFile* getImageFile(); }; class ReconstructorWorker : public BackgroundWorkerThread { private: const Projections* m_pProj; ProjectionFileView* m_pProjView; ImageFile* m_pImageFile; const char* m_pszFilterName; double m_dFilterParam; const char* m_pszFilterMethod; int m_iZeropad; const char* m_pszFilterGenerationName; const char* m_pszInterpName; int m_iInterpParam; const char* m_pszBackprojectName; ReconstructionROI* m_pReconROI; public: ReconstructorWorker (ReconstructorSupervisor* pSupervisor, int iThread, int iStartView, int iNumViews) : BackgroundWorkerThread (pSupervisor, iThread, iStartView, iNumViews) {} void SetParameters (const Projections* pProj, ProjectionFileView* pProjFile, ImageFile* pImageFile, const char* const pszFilterName, double dFilterParam, const char* const pszFilterMethod, int iZeropad, const char* const pszFilterGenerationName, const char* const pszInterpName, int iInterpParam, const char* pszBackprojectName, ReconstructionROI* pROI); virtual wxThread::ExitCode Entry(); // thread execution starts here virtual void OnExit(); }; #endif // HAVE_WXTHREADS #endif // _THREADRECON_H_ ctsim-6.0.2/src/dialogs.h0000644000175000017500000003064311240454454014243 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: dialogs.h ** Purpose: Header file for Dialogs of CTSim program ** Programmer: Kevin Rosenberg ** Date Started: July 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef __DIALOGSH__ #define __DIALOGSH__ #include "wx/wx.h" #include #include "ctsupport.h" #include "scanner.h" #include "phantom.h" #include "procsignal.h" #include "filter.h" #include "projections.h" #include "ctsim-map.h" class CTSimHelpButton : public wxButton { public: CTSimHelpButton (wxWindow* parent, int id) : wxButton (parent, id, _T("Help")) {} }; // CLASS StringValueAndTitleListBox // // A superclass of wxListBox that can handle string values and titles // and by displaying the title in the list box and returning the string value class StringValueAndTitleListBox : public wxListBox { public: StringValueAndTitleListBox (wxDialog* pParent, int nChoices, wxChar const* const* asTitle, char const* const aszValue[]); #if 0 StringValueAndTitleListBox (wxDialog* pParent, int nChoices, wxChar const* title, char const* const* aszTitle, char const* const* aszValue); #endif StringValueAndTitleListBox (wxDialog* pParent, int nChoices, wxChar const* title, wxChar const* const* asTitle, char const* const* aszValue); const char* getSelectionStringValue () const; private: const char* const* m_ppszValues; }; class StringValueAndTitleRadioBox : public wxRadioBox { public: StringValueAndTitleRadioBox (wxDialog* pParent, wxChar const* strTitle, int nChoices, const char* const aszTitle[], const char* const aszValue[]); const char* getSelectionStringValue () const; private: const char* const* m_ppszValues; }; class DialogGetPhantom : public wxDialog { public: DialogGetPhantom (wxWindow* pParent, int iDefaultPhantom = Phantom::PHM_HERMAN); virtual ~DialogGetPhantom () {} const char* getPhantom (); private: StringValueAndTitleRadioBox* m_pRadioBoxPhantom; }; class DialogGetThetaRange : public wxDialog { public: DialogGetThetaRange (wxWindow* pParent, int iDefaultThetaRange = ParallelRaysums::THETA_RANGE_UNCONSTRAINED); virtual ~DialogGetThetaRange () {} int getThetaRange (); private: wxRadioBox* m_pRadioBoxThetaRange; }; #include class ImageFileDocument; class DialogGetComparisonImage : public wxDialog { public: DialogGetComparisonImage (wxWindow* pParent, wxChar const * pwszTitle, const std::vector& rVecIF, bool bShowMakeDifference); virtual ~DialogGetComparisonImage () {} ImageFileDocument* getImageFileDocument (); bool getMakeDifferenceImage(); private: wxListBox* m_pListBoxImageChoices; wxCheckBox* m_pMakeDifferenceImage; const std::vector& m_rVecIF; }; class DialogPreferences : public wxDialog { public: DialogPreferences (wxWindow* pParent, wxChar const* pszTitle, bool bAdvanced, bool bAskNewDocs, bool bVerboseLogging, bool bStartupTips, bool bUseBackgroundTasks); virtual ~DialogPreferences (); bool getAdvancedOptions (); bool getAskDeleteNewDocs (); bool getVerboseLogging (); bool getStartupTips (); bool getUseBackgroundTasks(); private: wxCheckBox* m_pCBAdvancedOptions; wxCheckBox* m_pCBAskDeleteNewDocs; wxCheckBox* m_pCBVerboseLogging; wxCheckBox* m_pCBStartupTips; wxCheckBox* m_pCBUseBackgroundTasks; }; class ImageFile; class DialogGetMinMax : public wxDialog { public: DialogGetMinMax (wxWindow* pParent, wxChar const* pszTitle, double dDefaultMin = 0., double dDefaultMax = 0.); virtual ~DialogGetMinMax (); double getMinimum (); double getMaximum (); private: wxTextCtrl* m_pTextCtrlMin; wxTextCtrl* m_pTextCtrlMax; double m_dDefaultMin; double m_dDefaultMax; }; class DialogGetRasterParameters : public wxDialog { public: DialogGetRasterParameters (wxWindow* pParent, int iDefaultXSize = 0, int iDefaultYSize = 0, int iDefaultNSamples = 1, double dDefaultViewRatio = 1); virtual ~DialogGetRasterParameters (); unsigned int getXSize (); unsigned int getYSize (); unsigned int getNSamples (); double getViewRatio(); private: wxTextCtrl* m_pTextCtrlXSize; wxTextCtrl* m_pTextCtrlYSize; wxTextCtrl* m_pTextCtrlNSamples; wxTextCtrl* m_pTextCtrlViewRatio; int m_iDefaultXSize; int m_iDefaultYSize; int m_iDefaultNSamples; double m_dDefaultViewRatio; }; class DialogGetProjectionParameters : public wxDialog { public: DialogGetProjectionParameters (wxWindow* pParent, int iDefaultNDet = 0, int iDefaultNView = 0, int iDefaultOffsetView = 0, int iDefaultNSamples = 1, double dDefaultRotAngle = 1., double dDefaultFocalLength = 1, double dDefaultCenterDetectorLength = 1, double dDefaultViewRatio = 1., double dDefaultScanRatio = 1., int iDefaultGeometry = Scanner::GEOMETRY_PARALLEL, int iDefaultTrace = Trace::TRACE_NONE); ~DialogGetProjectionParameters (); unsigned int getNDet (); unsigned int getNView (); unsigned int getOffsetView (); unsigned int getNSamples (); int getTrace (); double getRotAngle (); double getViewRatio (); double getScanRatio (); double getFocalLengthRatio (); double getCenterDetectorLengthRatio (); const char* getGeometry(); private: wxTextCtrl* m_pTextCtrlNDet; wxTextCtrl* m_pTextCtrlNView; wxTextCtrl* m_pTextCtrlOffsetView; wxTextCtrl* m_pTextCtrlNSamples; wxTextCtrl* m_pTextCtrlRotAngle; wxTextCtrl* m_pTextCtrlFocalLength; wxTextCtrl* m_pTextCtrlCenterDetectorLength; wxTextCtrl* m_pTextCtrlViewRatio; wxTextCtrl* m_pTextCtrlScanRatio; StringValueAndTitleRadioBox* m_pRadioBoxGeometry; StringValueAndTitleRadioBox* m_pRadioBoxTrace; int m_iDefaultNDet; int m_iDefaultNView; int m_iDefaultOffsetView; int m_iDefaultNSamples; int m_iDefaultTrace; int m_iDefaultGeometry; double m_dDefaultRotAngle; double m_dDefaultFocalLength; double m_dDefaultCenterDetectorLength; double m_dDefaultViewRatio; double m_dDefaultScanRatio; }; #include "backprojectors.h" class DialogGetReconstructionParameters : public wxDialog { public: DialogGetReconstructionParameters (wxWindow* pParent, int iDefaultXSize = 0, int iDefaultYSize = 0, int iDefaultFilterID = SignalFilter::FILTER_ABS_BANDLIMIT, double dDefaultFilterParam = 1., int iDefaultFilterMethodID = ProcessSignal::FILTER_METHOD_CONVOLUTION, int iDefaultFilterGeneration = ProcessSignal::FILTER_GENERATION_DIRECT, int iDefaultZeropad = 3, int iDefaultInterpID = Backprojector::INTERP_LINEAR, int iDefaultInterpParam = 1, int iDefaultBackprojectID = Backprojector::BPROJ_IDIFF, int iDefaultTrace = Trace::TRACE_NONE, ReconstructionROI* pROI = NULL); virtual ~DialogGetReconstructionParameters (); unsigned int getXSize(); unsigned int getYSize(); const char* getFilterName(); double getFilterParam(); const char* getFilterMethodName(); unsigned int getZeropad(); const char* getFilterGenerationName(); const char* getInterpName(); unsigned int getInterpParam(); const char* getBackprojectName(); void getROI (ReconstructionROI* pROI); int getTrace (); private: wxTextCtrl* m_pTextCtrlXSize; wxTextCtrl* m_pTextCtrlYSize; wxTextCtrl* m_pTextCtrlZeropad; wxTextCtrl* m_pTextCtrlFilterParam; wxTextCtrl* m_pTextCtrlInterpParam; wxTextCtrl* m_pTextCtrlRoiXMin; wxTextCtrl* m_pTextCtrlRoiXMax; wxTextCtrl* m_pTextCtrlRoiYMin; wxTextCtrl* m_pTextCtrlRoiYMax; StringValueAndTitleRadioBox* m_pRadioBoxFilter; StringValueAndTitleRadioBox* m_pRadioBoxFilterMethod; StringValueAndTitleRadioBox* m_pRadioBoxFilterGeneration; StringValueAndTitleRadioBox* m_pRadioBoxInterp; StringValueAndTitleRadioBox* m_pRadioBoxBackproject; StringValueAndTitleRadioBox* m_pRadioBoxTrace; int m_iDefaultXSize; int m_iDefaultYSize; double m_dDefaultFilterParam; int m_iDefaultZeropad; int m_iDefaultInterpParam; double m_dDefaultRoiXMin; double m_dDefaultRoiXMax; double m_dDefaultRoiYMin; double m_dDefaultRoiYMax; }; class DialogGetFilterParameters : public wxDialog { public: DialogGetFilterParameters (wxWindow* pParent, int iDefaultXSize = 0, int iDefaultYSize = 0, int iDefaultFilterID = SignalFilter::FILTER_BANDLIMIT, double dDefaultFilterParam = 1., double dDefaultBandwidth = 1., int iDefaultDomain = SignalFilter::DOMAIN_SPATIAL, double dDefaultInputScale = 1., double dDefaultOutputScale = 1.); virtual ~DialogGetFilterParameters (); unsigned int getXSize(); unsigned int getYSize(); const char* getFilterName(); const char* getDomainName(); double getFilterParam(); double getInputScale(); double getOutputScale(); double getBandwidth(); private: wxTextCtrl* m_pTextCtrlXSize; wxTextCtrl* m_pTextCtrlYSize; wxTextCtrl* m_pTextCtrlFilterParam; wxTextCtrl* m_pTextCtrlOutputScale; wxTextCtrl* m_pTextCtrlInputScale; wxTextCtrl* m_pTextCtrlBandwidth; StringValueAndTitleRadioBox* m_pRadioBoxFilter; StringValueAndTitleRadioBox* m_pRadioBoxDomain; int m_iDefaultXSize; int m_iDefaultYSize; double m_dDefaultFilterParam; double m_dDefaultBandwidth; double m_dDefaultOutputScale; double m_dDefaultInputScale; int m_iDefaultDomain; }; class DialogExportParameters : public wxDialog { public: DialogExportParameters (wxWindow* pParent, int iDefaultFormatID); virtual ~DialogExportParameters () {} const char* getFormatName(); private: StringValueAndTitleRadioBox* m_pRadioBoxFormat; }; class DialogImportParameters : public wxDialog { public: DialogImportParameters (wxWindow* pParent, int iDefaultFormatID); virtual ~DialogImportParameters () {} const char* getFormatName(); private: StringValueAndTitleRadioBox* m_pRadioBoxFormat; }; class DialogAutoScaleParameters : public wxDialog { public: DialogAutoScaleParameters (wxWindow* pParent, double mean, double mode, double median, double stddev, double dDefaultScaleFactor = 1.); virtual ~DialogAutoScaleParameters() {} bool getMinMax (double* pMin, double* pMax); double getAutoScaleFactor (); private: const double m_dMean; const double m_dMode; const double m_dMedian; const double m_dStdDev; wxTextCtrl* m_pTextCtrlStdDevFactor; wxRadioBox* m_pRadioBoxCenter; }; class DialogGetXYSize : public wxDialog { public: DialogGetXYSize (wxWindow* pParent, wxChar const * pwszTitle, int iDefaultXSize = 1, int iDefaultYSize = 1); virtual ~DialogGetXYSize (); unsigned int getXSize (); unsigned int getYSize (); private: wxTextCtrl* m_pTextCtrlXSize; wxTextCtrl* m_pTextCtrlYSize; unsigned int m_iDefaultXSize; unsigned int m_iDefaultYSize; }; class DialogGetConvertPolarParameters : public wxDialog { public: DialogGetConvertPolarParameters (wxWindow* pParent, wxChar const * pwszTitle, int iDefaultXSize = 0, int iDefaultYSize = 0, int iDefaultInterpolationID = Projections::POLAR_INTERP_BILINEAR, int iDefaultZeropad = 3, int iHelpID = IDH_DLG_POLAR); virtual ~DialogGetConvertPolarParameters (); unsigned int getXSize(); unsigned int getYSize(); const char* getInterpolationName(); unsigned int getZeropad(); private: wxTextCtrl* m_pTextCtrlXSize; wxTextCtrl* m_pTextCtrlYSize; wxTextCtrl* m_pTextCtrlZeropad; StringValueAndTitleRadioBox* m_pRadioBoxInterpolation; int m_iDefaultXSize; int m_iDefaultYSize; int m_iDefaultZeropad; }; #endif ctsim-6.0.2/src/dlgprojections.cpp0000644000175000017500000002144011243324671016175 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: dlgprojections.cpp ** Purpose: Projection Collection Animation Dialog ** Programmer: Kevin Rosenberg ** Date Started: August 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "wx/wxprec.h" #ifndef WX_PRECOMP #include "wx/utils.h" #include "wx/frame.h" #include "wx/button.h" #include "wx/stattext.h" #include "wx/layout.h" #include "wx/event.h" #include "wx/intl.h" #include "wx/settings.h" #include "wx/dcclient.h" #include "wx/timer.h" #endif #include "dlgprojections.h" #include "ct.h" static const int LAYOUT_X_MARGIN = 4; static const int LAYOUT_Y_MARGIN = 4; BEGIN_EVENT_TABLE(ProjectionsDialog, wxDialog) EVT_BUTTON(wxID_CANCEL, ProjectionsDialog::OnCancel) EVT_BUTTON(ProjectionsDialog::ID_BTN_PAUSE, ProjectionsDialog::OnPause) EVT_BUTTON(ProjectionsDialog::ID_BTN_STEP, ProjectionsDialog::OnStep) EVT_CLOSE(ProjectionsDialog::OnClose) EVT_PAINT(ProjectionsDialog::OnPaint) END_EVENT_TABLE() IMPLEMENT_CLASS(ProjectionsDialog, wxDialog) ProjectionsDialog::ProjectionsDialog (Scanner& rScanner, Projections& rProj, const Phantom& rPhantom, const int iTrace, wxWindow *parent) : wxDialog(parent, -1, _T("Collect Projections"), wxDefaultPosition), m_rScanner(rScanner), m_rProjections(rProj), m_rPhantom(rPhantom), m_pSGPDriver(NULL), m_pSGP(NULL), m_iTrace(iTrace), m_pDC(NULL), m_btnAbort(0), m_btnPause(0), m_btnStep(0) { m_state = Continue; m_iLastView = -1; m_parentTop = parent; while ( m_parentTop && m_parentTop->GetParent() ) m_parentTop = m_parentTop->GetParent(); m_btnAbort = new wxButton(this, wxID_CANCEL, _("Cancel")); wxLayoutConstraints* c = new wxLayoutConstraints; c->right.SameAs(this, wxRight, 2*LAYOUT_X_MARGIN); c->bottom.SameAs(this, wxBottom, 2*LAYOUT_Y_MARGIN); wxSize sizeBtn = wxButton::GetDefaultSize(); c->width.Absolute(sizeBtn.x); c->height.Absolute(sizeBtn.y); m_btnAbort->SetConstraints(c); m_btnPause = new wxButton (this, ID_BTN_PAUSE, _T("Pause")); wxLayoutConstraints* cPause = new wxLayoutConstraints; cPause->right.SameAs(this, wxRight, 3*LAYOUT_X_MARGIN + sizeBtn.x); cPause->bottom.SameAs(this, wxBottom, 2*LAYOUT_Y_MARGIN); cPause->width.Absolute(sizeBtn.x); cPause->height.Absolute(sizeBtn.y); m_btnPause->SetConstraints(cPause); m_btnStep = new wxButton (this, ID_BTN_STEP, _T("Step")); wxLayoutConstraints* cStep = new wxLayoutConstraints; cStep->right.SameAs(this, wxRight, 5*LAYOUT_X_MARGIN + sizeBtn.x * 2); cStep->bottom.SameAs(this, wxBottom, 2*LAYOUT_Y_MARGIN); cStep->width.Absolute(sizeBtn.x); cStep->height.Absolute(sizeBtn.y); m_btnStep->SetConstraints(cStep); SetAutoLayout(TRUE); Layout(); wxSize sizeDlg (500,500); if (sizeDlg.x != sizeDlg.y) { sizeDlg.x = imax(sizeDlg.x,sizeDlg.y); sizeDlg.y = imax(sizeDlg.x,sizeDlg.y); } if (m_iTrace >= Trace::TRACE_PLOT) sizeDlg.x += 250; m_iClientX = sizeDlg.x; m_iClientY = sizeDlg.y; SetClientSize(sizeDlg); Centre(wxCENTER_FRAME | wxBOTH); if ( m_parentTop ) m_parentTop->Enable(FALSE); Show(TRUE); Enable(TRUE); // enable this window m_bitmap.Create (m_iClientX, m_iClientY); // save a copy of screen m_pDC = dynamic_cast (new wxClientDC (this)); int x, y; this->GetClientSize(&x, &y); m_pSGPDriver = new SGPDriver (m_pDC, x, y); m_pSGP = new SGP (*m_pSGPDriver); wxYield(); // Update the display m_pSGP->setTextPointSize(7); #ifdef __WXMAC__ // MacUpdateImmediately(); #endif } void ProjectionsDialog::showView (int iViewNumber) { if ( iViewNumber < m_rProjections.nView() ) { m_iLastView = iViewNumber; ::wxYield(); // update the display m_pSGP->eraseWindow(); m_btnPause->Refresh(); m_btnStep->Refresh(); m_btnAbort->Refresh(); if (m_iTrace >= Trace::TRACE_PLOT) m_pSGP->setViewport (0, 0, 0.66, 1); ::wxYield(); // update the display m_rScanner.collectProjections (m_rProjections, m_rPhantom, iViewNumber, 1, m_rScanner.offsetView(), true, m_iTrace, m_pSGP); ::wxYield(); // update the display if (m_iTrace >= Trace::TRACE_PLOT) { const DetectorArray& detArray = m_rProjections.getDetectorArray (iViewNumber); const DetectorValue* detValues = detArray.detValues(); double* detPos = new double [detArray.nDet()]; for (int i = 0; i < detArray.nDet(); i++) detPos[i] = i; EZPlot ezplot; ezplot.ezset ("grid"); ezplot.ezset ("box"); ezplot.ezset ("yticks left"); ezplot.ezset ("xticks major 5"); ezplot.ezset ("yticks major 10"); ezplot.addCurve (detValues, detPos, detArray.nDet()); #if 1 ezplot.ezset ("xporigin 0.67"); ezplot.ezset ("yporigin 0.10"); ezplot.ezset ("xlength 0.33"); ezplot.ezset ("ylength 0.90"); m_pSGP->setViewport (0., 0., 1., 1.); #else m_pSGP->setViewport (0.67, 0.1, 1., 1.); #endif ezplot.plot (m_pSGP); delete detPos; } } } bool ProjectionsDialog::projectView (int iViewNumber) { if (iViewNumber <= m_iLastView) // already done this view return true; if (iViewNumber < m_rProjections.nView()) { showView (iViewNumber); wxYield(); // update the display if (m_iTrace >= Trace::TRACE_PLOT) { ::wxMilliSleep(500); } } else { m_state = Finished; // so that we return TRUE below and // that [Cancel] handler knew what to do } #ifdef __WXMAC__ // MacUpdateImmediately(); #endif return m_state != Cancelled; } // EVENT HANDLERS void ProjectionsDialog::OnCancel (wxCommandEvent& event) { if ( m_state == Finished ) { // this means that the count down is already finished and we're being // shown as a modal dialog - so just let the default handler do the job event.Skip(); } else { // request to cancel was received, the next time Update() is called we // will handle it m_state = Cancelled; // update the button state immediately so that the user knows that the // request has been noticed m_btnAbort->Disable(); } } void ProjectionsDialog::OnPause (wxCommandEvent& event) { if ( m_state == Finished ) { event.Skip(); } else if (m_state == Continue) { m_memoryDC.SelectObject (m_bitmap); // in memoryDC m_pSGP->setDC (&m_memoryDC); showView (m_iLastView); m_state = Paused; m_btnPause->SetLabel (_T("Resume")); m_pSGP->setDC (m_pDC); m_memoryDC.SelectObject(wxNullBitmap); } else if (m_state == Paused) { m_state = Continue; m_btnPause->SetLabel (_T("Pause")); } } void ProjectionsDialog::OnStep (wxCommandEvent& event) { if ( m_state == Finished ) { event.Skip(); } else if (m_state == Continue) { m_memoryDC.SelectObject (m_bitmap); // in memoryDC m_pSGP->setDC (&m_memoryDC); showView (m_iLastView); // m_rScanner.collectProjections (m_rProjections, m_rPhantom, m_iLastView, 1, true, m_iTrace, m_pSGP); m_state = Paused; m_btnPause->SetLabel (_T("Resume")); m_pSGP->setDC (m_pDC); m_memoryDC.SelectObject(wxNullBitmap); Refresh(); } else if (m_state == Paused) { m_memoryDC.SelectObject (m_bitmap); // in memoryDC m_pSGP->setDC (&m_memoryDC); projectView (m_iLastView + 1); m_pSGP->setDC (m_pDC); m_memoryDC.SelectObject(wxNullBitmap); Refresh(); } } void ProjectionsDialog::OnClose(wxCloseEvent& event) { if ( m_state == Uncancellable ) event.Veto(TRUE); // can't close this dialog else if ( m_state == Finished ) event.Skip(); // let the default handler close the window as we already terminated else m_state = Cancelled; // next Update() will notice it } void ProjectionsDialog::OnPaint (wxPaintEvent& event) { wxPaintDC paintDC (this); if (m_state == Paused) { paintDC.DrawBitmap (m_bitmap, 0, 0, false); } } ///////////////////////////////////////////////////// // destruction ProjectionsDialog::~ProjectionsDialog() { if ( m_parentTop ) m_parentTop->Enable(TRUE); delete m_pSGP; delete m_pSGPDriver; delete m_pDC; } ctsim-6.0.2/src/dlgezplot.cpp0000644000175000017500000001002413254401733015146 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: dlgezplot.cpp ** Purpose: EZPlot Dialog ** Programmer: Kevin Rosenberg ** Date Started: Jan 2001 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifdef HAVE_CONFIG_H #include "config.h" #endif #ifdef HAVE_WXWINDOWS // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" #ifndef WX_PRECOMP #include "wx/utils.h" #include "wx/frame.h" #include "wx/button.h" #include "wx/stattext.h" #include "wx/layout.h" #include "wx/event.h" #include "wx/intl.h" #include "wx/settings.h" #include "wx/dcclient.h" #include "wx/timer.h" #endif #include "ct.h" #include "../src/ctsim.h" #include "dlgezplot.h" static const int LAYOUT_X_MARGIN = 4; static const int LAYOUT_Y_MARGIN = 4; BEGIN_EVENT_TABLE(EZPlotControl, wxPanel) EVT_PAINT(EZPlotControl::OnPaint) END_EVENT_TABLE() IMPLEMENT_CLASS(EZPlotControl, wxPanel) EZPlotControl::EZPlotControl (wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, const wxString& name) : m_pEZPlot(0), m_pSGPDriver(0), m_pSGP(0), m_pDC(0) { Create(parent, id, pos, size, style, name); SetSize (GetBestSize()); m_pEZPlot = new EZPlot; } wxSize EZPlotControl::GetBestSize () const { return wxSize (500,500); } EZPlotControl::~EZPlotControl() { delete m_pEZPlot; delete m_pSGP; delete m_pSGPDriver; delete m_pDC; } void EZPlotControl::OnPaint (wxPaintEvent& event) { wxPaintDC dc(this); GetClientSize (&m_iClientX, &m_iClientY); m_pSGPDriver = new SGPDriver (&dc, m_iClientX, m_iClientY); m_pSGP = new SGP (*m_pSGPDriver); m_pSGP->setTextPointSize(10); // m_pSGP->setViewport (0, 0, 1., 0.5); // for debugging testing only if (m_pEZPlot && m_pSGP) { m_pSGP->eraseWindow(); m_pEZPlot->plot (m_pSGP); } } wxEZPlotDialog::wxEZPlotDialog (wxWindow *parent, bool bCancelButton) : wxDialog((parent ? parent : theApp->getMainFrame()), -1, _T("EZPlot")), m_parentTop(0) { if (! parent) parent = theApp->getMainFrame(); m_parentTop = parent; while ( m_parentTop && m_parentTop->GetParent() ) m_parentTop = m_parentTop->GetParent(); wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL); pTopSizer->Add (m_pEZPlotCtrl = new EZPlotControl (this), 0, wxALIGN_CENTER | wxALL, 5); wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL); wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Ok")); pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10); if (bCancelButton) { wxButton* pButtonCancel = new wxButton (this, wxID_CANCEL, _T("Cancel")); pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10); } pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER); SetAutoLayout (true); SetSizer (pTopSizer); pTopSizer->Fit (this); pTopSizer->SetSizeHints (this); } EZPlotDialog::EZPlotDialog(wxWindow* parent, bool bCancelButton) : m_pDialog(new wxEZPlotDialog(parent, bCancelButton)) { } EZPlot* EZPlotDialog::getEZPlot() { return m_pDialog->getEZPlot(); } int EZPlotDialog::ShowModal() { return m_pDialog->ShowModal(); } wxEZPlotDialog::~wxEZPlotDialog() { if ( m_parentTop ) m_parentTop->Enable(TRUE); } #endif // HAVE_WXWINDOWS ctsim-6.0.2/src/dlgreconstruct.cpp0000644000175000017500000002752411240454454016222 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: dlgreconstruct.cpp ** Purpose: Reconstruction Animation Dialog ** Programmer: Kevin Rosenberg ** Date Started: August 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "wx/wxprec.h" #include "wx/utils.h" #include "wx/frame.h" #include "wx/button.h" #include "wx/stattext.h" #include "wx/layout.h" #include "wx/event.h" #include "wx/intl.h" #include "wx/settings.h" #include "wx/dcclient.h" #include "wx/timer.h" #include "wx/image.h" #include "dlgreconstruct.h" #include #include "ct.h" static const int LAYOUT_X_MARGIN = 4; static const int LAYOUT_Y_MARGIN = 4; const int ReconstructDialog::ID_BTN_PAUSE = 19998; const int ReconstructDialog::ID_BTN_STEP = 19999; const int ReconstructDialog::MAX_IMAGE_X = 400; const int ReconstructDialog::MAX_IMAGE_Y = 400; BEGIN_EVENT_TABLE(ReconstructDialog, wxDialog) EVT_BUTTON(wxID_CANCEL, ReconstructDialog::OnCancel) EVT_BUTTON(ID_BTN_PAUSE, ReconstructDialog::OnPause) EVT_BUTTON(ID_BTN_STEP, ReconstructDialog::OnStep) EVT_CLOSE(ReconstructDialog::OnClose) EVT_PAINT(ReconstructDialog::OnPaint) END_EVENT_TABLE() IMPLEMENT_CLASS(ReconstructDialog, wxDialog) ReconstructDialog::ReconstructDialog (Reconstructor& rReconstruct, const Projections& rProj, ImageFile& rIF, const int iTrace, wxWindow *parent) : wxDialog(parent, -1, _T("Reconstruction"), wxDefaultPosition), m_rReconstructor(rReconstruct), m_rProjections(rProj), m_rImageFile(rIF), m_pSGPDriver(NULL), m_pSGP(NULL), m_iTrace(iTrace), m_pDC(NULL), m_btnAbort(0), m_btnPause(0), m_btnStep(0) { m_state = Continue; m_iLastView = -1; m_parentTop = parent; while ( m_parentTop && m_parentTop->GetParent() ) m_parentTop = m_parentTop->GetParent(); m_btnAbort = new wxButton(this, wxID_CANCEL, _T("Cancel")); wxLayoutConstraints* c = new wxLayoutConstraints; c->right.SameAs(this, wxRight, 2*LAYOUT_X_MARGIN); c->bottom.SameAs(this, wxBottom, 2*LAYOUT_Y_MARGIN); wxSize sizeBtn = wxButton::GetDefaultSize(); c->width.Absolute(sizeBtn.x); c->height.Absolute(sizeBtn.y); m_btnAbort->SetConstraints(c); m_btnPause = new wxButton (this, ID_BTN_PAUSE, _T("Pause")); wxLayoutConstraints* cPause = new wxLayoutConstraints; cPause->right.SameAs(this, wxRight, 3*LAYOUT_X_MARGIN + sizeBtn.x); cPause->bottom.SameAs(this, wxBottom, 2*LAYOUT_Y_MARGIN); cPause->width.Absolute(sizeBtn.x); cPause->height.Absolute(sizeBtn.y); m_btnPause->SetConstraints(cPause); m_btnStep = new wxButton (this, ID_BTN_STEP, _T("Step")); wxLayoutConstraints* cStep = new wxLayoutConstraints; cStep->right.SameAs(this, wxRight, 5*LAYOUT_X_MARGIN + sizeBtn.x * 2); cStep->bottom.SameAs(this, wxBottom, 2*LAYOUT_Y_MARGIN); cStep->width.Absolute(sizeBtn.x); cStep->height.Absolute(sizeBtn.y); m_btnStep->SetConstraints(cStep); SetAutoLayout(TRUE); Layout(); m_nxGraph = 500; m_nyGraph = 500; wxSize sizeDlg (m_nxGraph, m_nyGraph); m_nxImage = m_rImageFile.nx(); if (m_nxImage > MAX_IMAGE_X) m_nxImage = MAX_IMAGE_X; m_nyImage = m_rImageFile.ny(); if (m_nyImage > MAX_IMAGE_Y) m_nyImage = MAX_IMAGE_Y; sizeDlg.x += m_nxImage; sizeDlg.y = imax (sizeDlg.y, m_nyImage); m_iClientX = sizeDlg.x; m_iClientY = sizeDlg.y; SetClientSize (sizeDlg); Centre(wxCENTER_FRAME | wxBOTH); if ( m_parentTop ) m_parentTop->Enable(FALSE); Show(TRUE); Enable(TRUE); // enable this window m_bitmap.Create (m_iClientX, m_iClientY); // save a copy of screen m_pDC = dynamic_cast (new wxClientDC (this)); int x, y; this->GetClientSize(&x, &y); m_pSGPDriver = new SGPDriver (m_pDC, x, y); m_pSGP = new SGP (*m_pSGPDriver); wxYield(); // Update the display m_pSGPDriver->idWX()->SetFont(*wxSWISS_FONT); } void ReconstructDialog::showView (int iViewNumber, bool bBackprojectView) { if ( iViewNumber < m_rProjections.nView() ) { m_iLastView = iViewNumber; ::wxYield(); // update the display m_pSGP->eraseWindow(); m_btnPause->Refresh(); m_btnStep->Refresh(); m_btnAbort->Refresh(); char szProgress [256]; snprintf (szProgress, sizeof(szProgress), "Reconstructing View %d (%.1f%%)", iViewNumber, 100 * iViewNumber / static_cast(m_rProjections.nView())); m_pSGP->setViewport (0, 0, 1, 1); m_pSGP->setWindow (0, 0, 1, 1); m_pSGP->setTextColor (C_LTRED, -1); m_pSGP->setTextPointSize (20.); m_pSGP->moveAbs(0., m_pSGP->getCharHeight()); m_pSGP->drawText (szProgress); m_pSGP->setTextPointSize (10.); int iXDialog, iYDialog; GetClientSize (&iXDialog, &iYDialog); double dGraphWidth = (iXDialog - m_nxImage) / static_cast(iXDialog); m_rReconstructor.reconstructView (iViewNumber, 1, m_pSGP, bBackprojectView, dGraphWidth); ::wxYield(); ::wxYield(); ::wxYield(); ::wxYield(); ImageFileArrayConst v = m_rImageFile.getArray(); int xBase = m_nxGraph; int yBase = 0; if (m_nyGraph > m_nyImage) yBase = (m_nyGraph - m_nyImage) / 2; double minValue = v[0][0]; double maxValue = v[0][0]; for (int ix = 0; ix < m_nxImage; ix++) { for (int iy = 0; iy < m_nyImage; iy++) { double dPixel = v[ix][iy]; if (dPixel < minValue) minValue = dPixel; else if (dPixel > maxValue) maxValue = dPixel; } } unsigned char* imageData = new unsigned char [m_nxImage * m_nyImage * 3]; double dScale = 255 / (maxValue - minValue); for (int ix2 = 0; ix2 < m_nxImage; ix2++) { for (int iy = 0; iy < m_nyImage; iy++) { double dPixel = v[ix2][iy]; dPixel = (dPixel - minValue) * dScale; int intensity = nearest(dPixel); intensity = clamp (intensity, 0, 255); int baseAddr = ((m_nyImage - 1 - iy) * m_nxImage + ix2) * 3; imageData[baseAddr] = imageData[baseAddr+1] = imageData[baseAddr+2] = intensity; } } wxImage image (m_nxImage, m_nyImage, imageData, true); wxBitmap bitmap (image); m_pSGP->getDriver().idWX()->DrawBitmap(bitmap, xBase, yBase, false); delete imageData; } ::wxYield(); } bool ReconstructDialog::reconstructView (int iViewNumber, bool bBackproject) { if (iViewNumber <= m_iLastView) // have already done this view return true; if (iViewNumber < m_rProjections.nView()) { ::wxYield(); // update the display showView (iViewNumber, bBackproject); ::wxYield(); // update the display if (m_iTrace >= Trace::TRACE_PLOT) { ::wxMilliSleep(250); } } else { m_state = Finished; // so that we return TRUE below and } // that [Cancel] handler knew what to do ::wxYield(); // update the display return m_state != Cancelled; } // EVENT HANDLERS void ReconstructDialog::OnCancel (wxCommandEvent& event) { if ( m_state == Finished ) { // this means that the count down is already finished and we're being // shown as a modal dialog - so just let the default handler do the job event.Skip(); } else { // request to cancel was received, the next time Update() is called we // will handle it m_state = Cancelled; // update the button state immediately so that the user knows that the // request has been noticed m_btnAbort->Disable(); } } void ReconstructDialog::OnPause (wxCommandEvent& event) { if ( m_state == Finished ) { // this means that the count down is already finished and we're being // shown as a modal dialog - so just let the default handler do the job event.Skip(); } else if (m_state == Continue) { m_memoryDC.SelectObject (m_bitmap); // in memoryDC m_pSGP->setDC (&m_memoryDC); m_memoryDC.SetFont (*wxSWISS_FONT); showView (m_iLastView, false); m_state = Paused; m_btnPause->SetLabel (_T("Resume")); m_pSGP->setDC (m_pDC); m_memoryDC.SelectObject(wxNullBitmap); } else if (m_state == Paused) { m_state = Continue; m_btnPause->SetLabel (_T("Pause")); } } void ReconstructDialog::OnStep (wxCommandEvent& event) { if ( m_state == Finished ) { event.Skip(); } else if (m_state == Continue) { m_memoryDC.SelectObject (m_bitmap); // in memoryDC m_pSGP->setDC (&m_memoryDC); m_memoryDC.SetFont (*wxSWISS_FONT); showView (m_iLastView, false); m_state = Paused; m_btnPause->SetLabel (_T("Resume")); m_pSGP->setDC (m_pDC); m_memoryDC.SelectObject(wxNullBitmap); Refresh(); } else if (m_state == Paused) { m_memoryDC.SelectObject (m_bitmap); // in memoryDC m_pSGP->setDC (&m_memoryDC); m_memoryDC.SetFont (*wxSWISS_FONT); reconstructView (m_iLastView + 1); m_pSGP->setDC (m_pDC); m_memoryDC.SelectObject(wxNullBitmap); Refresh(); } } void ReconstructDialog::OnClose(wxCloseEvent& event) { if ( m_state == Uncancellable ) event.Veto(TRUE); // can't close this dialog else if ( m_state == Finished ) event.Skip(); // let the default handler close the window as we already terminated else m_state = Cancelled; // next Update() will notice it } void ReconstructDialog::OnPaint (wxPaintEvent& event) { wxPaintDC paintDC (this); if (m_state == Paused) { paintDC.DrawBitmap (m_bitmap, 0, 0, false); } } ///////////////////////////////////////////////////// // destruction ReconstructDialog::~ReconstructDialog() { if ( m_parentTop ) m_parentTop->Enable(TRUE); delete m_pSGP; delete m_pSGPDriver; delete m_pDC; } ctsim-6.0.2/src/dlgezplot.h0000644000175000017500000000502111240454454014615 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: dlgezplot.h ** Purpose: Headers for EZPlot Dialog ** Programmer: Kevin Rosenberg ** Date Started: Jan 2001 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef __DLGEZPLOT_H_ #define __DLGEZPLOT_H_ #include "wx/setup.h" #include "wx/dialog.h" #include "wx/dcmemory.h" class wxButton; class SGP; class SGPDriver; class EZPlot; class EZPlotControl : public wxPanel { private: DECLARE_DYNAMIC_CLASS (EZPlotControl) DECLARE_EVENT_TABLE () EZPlot* m_pEZPlot; int m_iClientX; // size of client window int m_iClientY; SGPDriver* m_pSGPDriver; SGP* m_pSGP; wxDC* m_pDC; public: EZPlotControl (wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxSTATIC_BORDER, const wxValidator& validator = wxDefaultValidator, const wxString& name = _T("EZPlotCtrl")); virtual ~EZPlotControl(); virtual wxSize GetBestSize() const; EZPlot* getEZPlot() { return m_pEZPlot; } void OnPaint(wxPaintEvent& event); }; class wxEZPlotDialog : public wxDialog { private: wxWindow *m_parentTop; // parent top level window (may be NULL) EZPlotControl* m_pEZPlotCtrl; public: wxEZPlotDialog (wxWindow *parent = NULL, bool bCancelButton = false); ~wxEZPlotDialog(); EZPlot* getEZPlot () { if (m_pEZPlotCtrl) return m_pEZPlotCtrl->getEZPlot(); else return NULL; } }; class EZPlotDialog { private: wxEZPlotDialog* m_pDialog; public: EZPlotDialog (wxWindow *parent = NULL, bool bCancelButton = false); EZPlot* getEZPlot (); int ShowModal(); }; #endif ctsim-6.0.2/src/ctsim-map.h0000644000175000017500000000121710667176710014516 0ustar kevinkevin#define IDH_QUICKSTART 8601 #define IDH_INTRODUCTION 8602 #define IDH_DLG_PROJECTIONS 8603 #define IDH_DLG_RASTERIZE 8604 #define IDH_DLG_RECONSTRUCTION 8605 #define IDH_DLG_FILTER 8606 #define IDH_DLG_MINMAX 8607 #define IDH_DLG_AUTOSCALE 8608 #define IDH_DLG_EXPORT 8609 #define IDH_DLG_PHANTOM 8610 #define IDH_DLG_COMPARISON 8611 #define IDH_DLG_PREFERENCES 8612 #define IDH_DLG_POLAR 8613 #define IDH_DLG_FFT_POLAR 8614 #define IDH_DLG_RECON_FOURIER 8615 #define IDH_DLG_RECONSTRUCTION_REBIN 8617 #define IDH_DLG_IMPORT 8618 #define IDH_DLG_THETA_RANGE 8619 ctsim-6.0.2/src/tips.cpp0000644000175000017500000000737011240454454014134 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: tips.cpp ** Purpose: User tips for CTSim ** Programmer: Kevin Rosenberg ** Date Started: February 2001 ** ** This is part of the CTSim program ** Copyright (C) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "wx/wxprec.h" #ifndef WX_PRECOMP #include "wx/wx.h" #endif #include "tips.h" #if defined(HAVE_CONFIG_H) #include "config.h" #endif const char* const CTSimTipProvider::s_aszTips[] = { "You can create a geometric phantom using the \"File - Create Phantom\" menu command.", "You can create a gray-scale, rasterized image of a phantom by using the \"Process - Rasterize\" menu command on a geometric phantom.", "You can simulate the x-ray process by using the \"Process - Projections\" menu command on a geometric phantom.", "You can simulate first, second, and third-fourth-fifth generation CT scanners by using different scanner geometries.", "You can reconstruct an image from the x-ray data by using the \"Reconstruction\" menu on a projection file.", "You can specify different levels of smoothing by using different filters in the \"Reconstruction\" dialog.", "You can select a row and column of an image by left-mouse button clicking on an image.", "You can plot a column or row of an image by using the \"Analyze - Plot\" command.", "You can save your plots to a disk file by using the \"File - Save\" command.", "You can create your own phantoms using a text editor. Please see the manual for the simple file format.", "You can perform 2-dimension Fourier transform of images using the \"Filter\" menu commands.", "You can create an image of a filter by using the \"File - Create Filter\" menu command.", "You can add two images by using the \"Image - Add\" menu command.", "You can display the value of a pixel in an image by right-mouse button clicking on an image.", "You can view a 3-dimensional view of an image using the \"Image - 3D\" menu command.", "You can scale an image to any size using the \"Image - Scale Size\" menu command.", "You can display context-sensitive help by using the \"Help\" button on dialog boxes.", "You can compare two images by using the \"Analyze - Compare Images\" menu command.", "You can display these tips at any time by using the \"Help - Tips\" menu command.", "You can control CTSim's operation using the \"File - Preferences\" menu command.", }; const size_t CTSimTipProvider::s_iNumTips = sizeof(s_aszTips) / sizeof(const char *); CTSimTipProvider::CTSimTipProvider (size_t iCurrentTip) : wxTipProvider (iCurrentTip) { if (iCurrentTip >= s_iNumTips) iCurrentTip = 0; m_iCurrentTip = iCurrentTip; } wxString CTSimTipProvider::GetTip() { if (m_iCurrentTip >= s_iNumTips) m_iCurrentTip = 0; size_t iThisTip = m_iCurrentTip; ++m_iCurrentTip; return wxString (wxConvUTF8.cMB2WX(s_aszTips[iThisTip])); } size_t CTSimTipProvider::GetCurrentTip() { if (m_iCurrentTip >= s_iNumTips) m_iCurrentTip = 0; return m_iCurrentTip; } ctsim-6.0.2/src/dialogs.cpp0000644000175000017500000017217711240454454014607 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: dialogs.cpp ** Purpose: Dialog routines for CTSim program ** Programmer: Kevin Rosenberg ** Date Started: July 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "wx/wxprec.h" #ifndef WX_PRECOMP #include "wx/wx.h" #endif #if !wxUSE_DOC_VIEW_ARCHITECTURE #error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in setup.h! #endif #include "wx/statline.h" #include "wx/sizer.h" #include "dialogs.h" #include "ctsim.h" #include "ct.h" #include "docs.h" #include "views.h" #include "imagefile.h" #include "projections.h" #if defined(MSVC) || HAVE_SSTREAM #include #else #include #endif /////////////////////////////////////////////////////////////////////// // CLASS IMPLEMENTATION // StringValueAndTitleListBox /////////////////////////////////////////////////////////////////////// #if 0 StringValueAndTitleListBox::StringValueAndTitleListBox (wxDialog* pParent, int nChoices, wxChar const* const* asTitle, char const* const* aszValue) : wxListBox () { wxString* psTitle = new wxString [nChoices]; for (int i = 0; i < nChoices; i++) psTitle[i] = asTitle[i]; Create (pParent, -1, wxDefaultPosition, wxSize(-1,-1), nChoices, psTitle, wxLB_SINGLE | wxLB_NEEDED_SB); m_ppszValues = aszValue; delete [] psTitle; }; #endif const char* StringValueAndTitleListBox::getSelectionStringValue () const { return m_ppszValues[GetSelection()]; } StringValueAndTitleRadioBox::StringValueAndTitleRadioBox (wxDialog* pParent, wxChar const* strTitle, int nChoices, char const* const* aszTitle, char const* const* aszValue) : wxRadioBox () { wxString* psTitle = new wxString [nChoices]; for (int i = 0; i < nChoices; i++) psTitle[i] = wxConvUTF8.cMB2WX(aszTitle[i]); Create (pParent, -1, strTitle, wxDefaultPosition, wxDefaultSize, nChoices, psTitle, 1, wxRA_SPECIFY_COLS); m_ppszValues = aszValue; delete [] psTitle; }; const char* StringValueAndTitleRadioBox::getSelectionStringValue () const { return m_ppszValues[GetSelection()]; } /////////////////////////////////////////////////////////////////////// // CLASS IMPLEMENTATION // DialogGetPhantom /////////////////////////////////////////////////////////////////////// DialogGetPhantom::DialogGetPhantom (wxWindow* pParent, int iDefaultPhantom) : wxDialog (pParent, -1, _T("Select Phantom"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) { wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL); pTopSizer->Add (new wxStaticText (this, -1, _T("Select Phantom")), 0, wxCENTER | wxALL, 5); pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5); m_pRadioBoxPhantom = new StringValueAndTitleRadioBox (this, _T("Phantom"), Phantom::getPhantomCount(), Phantom::getPhantomTitleArray(), Phantom::getPhantomNameArray()); m_pRadioBoxPhantom->SetSelection (iDefaultPhantom); pTopSizer->Add (m_pRadioBoxPhantom, 0, wxALL | wxALIGN_CENTER); pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5); wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL); wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Okay")); pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10); wxButton* pButtonCancel = new wxButton (this, wxID_CANCEL, _T("Cancel")); pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10); CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_PHANTOM); pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10); pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER); pButtonOk->SetDefault(); SetAutoLayout (true); SetSizer (pTopSizer); pTopSizer->Fit (this); pTopSizer->SetSizeHints (this); } const char* DialogGetPhantom::getPhantom() { return m_pRadioBoxPhantom->getSelectionStringValue(); } /////////////////////////////////////////////////////////////////////// // CLASS IMPLEMENTATION // DialogGetThetaRange /////////////////////////////////////////////////////////////////////// DialogGetThetaRange::DialogGetThetaRange (wxWindow* pParent, int iDefaultThetaRange) : wxDialog (pParent, -1, _T("Select Phantom"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) { wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL); pTopSizer->Add (new wxStaticText (this, -1, _T("Select Theta Range")), 0, wxCENTER | wxALL, 5); pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5); wxString asTitle[] = {_T("Unconstrained"), _T("Normalized to 2pi"), _T("Fold to pi")}; m_pRadioBoxThetaRange = new wxRadioBox (this, -1, _T("Theta Range"), wxDefaultPosition, wxDefaultSize, 3, asTitle, 1, wxRA_SPECIFY_COLS); if (iDefaultThetaRange == ParallelRaysums::THETA_RANGE_UNCONSTRAINED) m_pRadioBoxThetaRange->SetSelection (0); else if (iDefaultThetaRange == ParallelRaysums::THETA_RANGE_NORMALIZE_TO_TWOPI) m_pRadioBoxThetaRange->SetSelection (1); else if (iDefaultThetaRange == ParallelRaysums::THETA_RANGE_FOLD_TO_PI) m_pRadioBoxThetaRange->SetSelection (2); pTopSizer->Add (m_pRadioBoxThetaRange, 0, wxALL | wxALIGN_CENTER); pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5); wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL); wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Okay")); pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10); wxButton* pButtonCancel = new wxButton (this, wxID_CANCEL, _T("Cancel")); pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10); CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_THETA_RANGE); pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10); pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER); pButtonOk->SetDefault(); SetAutoLayout (true); SetSizer (pTopSizer); pTopSizer->Fit (this); pTopSizer->SetSizeHints (this); } int DialogGetThetaRange::getThetaRange() { int iSelection = m_pRadioBoxThetaRange->GetSelection(); if (iSelection == 0) return ParallelRaysums::THETA_RANGE_UNCONSTRAINED; else if (iSelection == 1) return ParallelRaysums::THETA_RANGE_NORMALIZE_TO_TWOPI; else return ParallelRaysums::THETA_RANGE_FOLD_TO_PI; } /////////////////////////////////////////////////////////////////////// // CLASS IMPLEMENTATION // DialogGetComparisonImage /////////////////////////////////////////////////////////////////////// DialogGetComparisonImage::DialogGetComparisonImage (wxWindow* pParent, wxChar const* pwszTitle, const std::vector& rVecIF, bool bShowMakeDifference) : wxDialog (pParent, -1, pwszTitle, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION), m_rVecIF(rVecIF) { wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL); pTopSizer->Add (new wxStaticText (this, -1, pwszTitle), 0, wxALIGN_CENTER | wxALL, 5); pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxALL, 5); int iNImages = m_rVecIF.size(); wxString* pstrImages = new wxString [iNImages]; for (int i = 0; i < iNImages; i++) { ImageFileView* pView = dynamic_cast(m_rVecIF[i]->GetFirstView()); if (pView) pstrImages[i] = pView->getFrame()->GetTitle(); } m_pListBoxImageChoices = new wxListBox (this, -1, wxDefaultPosition, wxDefaultSize, iNImages, pstrImages, wxLB_SINGLE); delete [] pstrImages; m_pListBoxImageChoices->SetSelection (0); pTopSizer->Add (m_pListBoxImageChoices, 0, wxALL | wxALIGN_CENTER | wxEXPAND); if (bShowMakeDifference) { m_pMakeDifferenceImage = new wxCheckBox (this, -1, _T("Make Difference Image")); m_pMakeDifferenceImage->SetValue (FALSE); pTopSizer->Add (m_pMakeDifferenceImage, 0, wxALL | wxALIGN_CENTER | wxEXPAND); } else m_pMakeDifferenceImage = NULL; pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5); wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL); wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Okay")); pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10); wxButton* pButtonCancel = new wxButton (this, wxID_CANCEL, _T("Cancel")); pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10); CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_COMPARISON); pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10); pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER); pButtonOk->SetDefault(); SetAutoLayout (true); SetSizer (pTopSizer); pTopSizer->Fit (this); pTopSizer->SetSizeHints (this); } ImageFileDocument* DialogGetComparisonImage::getImageFileDocument() { return m_rVecIF[ m_pListBoxImageChoices->GetSelection() ]; } bool DialogGetComparisonImage::getMakeDifferenceImage() { if (m_pMakeDifferenceImage) return m_pMakeDifferenceImage->GetValue(); else return false; } ///////////////////////////////////////////////////////////////////// // CLASS DiaglogPreferences Implementation ///////////////////////////////////////////////////////////////////// DialogPreferences::DialogPreferences (wxWindow* pParent, wxChar const* pwszTitle, bool bAdvancedOptions, bool bAskDeleteNewDocs, bool bVerboseLogging, bool bStartupTips, bool bUseBackgroundTasks) : wxDialog (pParent, -1, pwszTitle, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) { wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL); pTopSizer->Add (new wxStaticText (this, -1, pwszTitle), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5); pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5); m_pCBAdvancedOptions = new wxCheckBox (this, -1, _T("Advanced Options"), wxDefaultPosition, wxSize(250, 25), 0); m_pCBAdvancedOptions->SetValue (bAdvancedOptions); pTopSizer->Add (m_pCBAdvancedOptions, 0, wxALIGN_CENTER_VERTICAL); m_pCBAskDeleteNewDocs = new wxCheckBox (this, -1, _T("Ask \"Save New Documents\" Before Closing"), wxDefaultPosition, wxSize(250, 25), 0); m_pCBAskDeleteNewDocs->SetValue (bAskDeleteNewDocs); pTopSizer->Add (m_pCBAskDeleteNewDocs, 0, wxALIGN_CENTER_VERTICAL); m_pCBVerboseLogging = new wxCheckBox (this, -1, _T("Verbose Logging"), wxDefaultPosition, wxSize(250, 25), 0); m_pCBVerboseLogging->SetValue (bVerboseLogging); pTopSizer->Add (m_pCBVerboseLogging, 0, wxALIGN_CENTER_VERTICAL); m_pCBStartupTips = new wxCheckBox (this, -1, _T("Show Tips at Start"), wxDefaultPosition, wxSize(250, 25), 0); m_pCBStartupTips->SetValue (bStartupTips); pTopSizer->Add (m_pCBStartupTips, 0, wxALIGN_CENTER_VERTICAL); #if HAVE_WXTHREADS && MSVC m_pCBUseBackgroundTasks = new wxCheckBox (this, -1, _T("Put Tasks in Background"), wxDefaultPosition, wxSize(250, 25), 0); m_pCBUseBackgroundTasks->SetValue (bUseBackgroundTasks); pTopSizer->Add (m_pCBUseBackgroundTasks, 0, wxALIGN_CENTER_VERTICAL); #endif pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5); wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL); wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Okay")); pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10); wxButton* pButtonCancel = new wxButton (this, wxID_CANCEL, _T("Cancel")); pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10); CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_PREFERENCES); pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10); pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER); pButtonOk->SetDefault(); SetAutoLayout (true); SetSizer (pTopSizer); pTopSizer->Fit (this); pTopSizer->SetSizeHints (this); } DialogPreferences::~DialogPreferences () { } bool DialogPreferences::getAdvancedOptions () { return static_cast(m_pCBAdvancedOptions->GetValue()); } bool DialogPreferences::getAskDeleteNewDocs () { return static_cast(m_pCBAskDeleteNewDocs->GetValue()); } bool DialogPreferences::getVerboseLogging () { return static_cast(m_pCBVerboseLogging->GetValue()); } bool DialogPreferences::getStartupTips () { return static_cast(m_pCBStartupTips->GetValue()); } bool DialogPreferences::getUseBackgroundTasks () { #if HAVE_WXTHREADS && MSVC return static_cast(m_pCBUseBackgroundTasks->GetValue()); #else return false; #endif } ///////////////////////////////////////////////////////////////////// // CLASS DiaglogGetMinMax Implementation ///////////////////////////////////////////////////////////////////// DialogGetMinMax::DialogGetMinMax (wxWindow* pParent, wxChar const* pwszTitle, double dDefaultMin, double dDefaultMax) : wxDialog (pParent, -1, pwszTitle, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) { wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL); pTopSizer->Add (new wxStaticText (this, -1, pwszTitle), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5); pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5); wxString sMin; sMin << dDefaultMin; m_pTextCtrlMin = new wxTextCtrl (this, -1, sMin, wxDefaultPosition, wxSize(100, 25), 0); wxString sMax; sMax << dDefaultMax; m_pTextCtrlMax = new wxTextCtrl (this, -1, sMax, wxDefaultPosition, wxSize(100, 25), 0); wxFlexGridSizer *pGridSizer = new wxFlexGridSizer (2); pGridSizer->Add (new wxStaticText (this, -1, _T("Minimum")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pGridSizer->Add (m_pTextCtrlMin, 0, wxALIGN_CENTER_VERTICAL); pGridSizer->Add (new wxStaticText (this, -1, _T("Maximum")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pGridSizer->Add (m_pTextCtrlMax, 0, wxALIGN_CENTER_VERTICAL); pTopSizer->Add (pGridSizer, 1, wxALL, 10); pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5); wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL); wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Okay")); pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10); wxButton* pButtonCancel = new wxButton (this, wxID_CANCEL, _T("Cancel")); pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10); CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_MINMAX); pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10); pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER); pButtonOk->SetDefault(); SetAutoLayout (true); SetSizer (pTopSizer); pTopSizer->Fit (this); pTopSizer->SetSizeHints (this); } DialogGetMinMax::~DialogGetMinMax () { } double DialogGetMinMax::getMinimum () { wxString strCtrl = m_pTextCtrlMin->GetValue(); double dValue; if (strCtrl.ToDouble (&dValue)) return dValue; else return (m_dDefaultMin); } double DialogGetMinMax::getMaximum () { wxString strCtrl = m_pTextCtrlMax->GetValue(); double dValue; if (strCtrl.ToDouble (&dValue)) return dValue; else return (m_dDefaultMax); } ///////////////////////////////////////////////////////////////////// // CLASS DialogAutoScaleParameters IMPLEMENTATION ///////////////////////////////////////////////////////////////////// DialogAutoScaleParameters::DialogAutoScaleParameters (wxWindow *pParent, double mean, double mode, double median, double stddev, double dDefaultScaleFactor) : wxDialog (pParent, -1, _T("Auto Scale Parameters"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION), m_dMean(mean), m_dMode(mode), m_dMedian(median), m_dStdDev(stddev) { wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL); pTopSizer->Add (new wxStaticText (this, -1, _T("Auto Scale Parameters")), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5); pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5); wxString asTitle[] = {_T("Mode"), _T("Median"), _T("Mean")}; m_pRadioBoxCenter = new wxRadioBox (this, -1, _T("Center"), wxDefaultPosition, wxDefaultSize, 3, asTitle, 1, wxRA_SPECIFY_COLS); m_pRadioBoxCenter->SetSelection (0); pTopSizer->Add (m_pRadioBoxCenter, 0, wxALL | wxALIGN_CENTER); wxGridSizer *pGridSizer = new wxGridSizer (2); pGridSizer->Add (new wxStaticText (this, -1, _T("Standard Deviation Factor")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); wxString sDefaultFactor; sDefaultFactor << dDefaultScaleFactor; m_pTextCtrlStdDevFactor = new wxTextCtrl (this, -1, sDefaultFactor, wxDefaultPosition, wxSize(100, 25), 0); pGridSizer->Add (m_pTextCtrlStdDevFactor, 0, wxALIGN_CENTER_VERTICAL); pTopSizer->Add (pGridSizer, 1, wxALL, 10); pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5); wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL); wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Okay")); pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10); wxButton* pButtonCancel = new wxButton (this, wxID_CANCEL, _T("Cancel")); pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10); CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_AUTOSCALE); pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10); pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER); pButtonOk->SetDefault(); SetAutoLayout (true); SetSizer (pTopSizer); pTopSizer->Fit (this); pTopSizer->SetSizeHints (this); } bool DialogAutoScaleParameters::getMinMax (double* pMin, double* pMax) { int iCenter = m_pRadioBoxCenter->GetSelection(); double dCenter = m_dMode; if (iCenter == 1) dCenter = m_dMedian; else if (iCenter == 2) dCenter = m_dMean; wxString sStddevFactor = m_pTextCtrlStdDevFactor->GetValue(); double dValue; if (! sStddevFactor.ToDouble (&dValue)) { *theApp->getLog() << _T("Error: Non-numeric Standard Deviation Factor of ") << sStddevFactor << _T("\n"); return false; } double dHalfWidth = dValue * m_dStdDev / 2; *pMin = dCenter - dHalfWidth; *pMax = dCenter + dHalfWidth; *theApp->getLog() << _T("Setting minimum to ") << *pMin << _T(" and maximum to ") << *pMax << _T("\n"); return true; } double DialogAutoScaleParameters::getAutoScaleFactor () { wxString sStddevFactor = m_pTextCtrlStdDevFactor->GetValue(); double dValue = 1.; if (! sStddevFactor.ToDouble (&dValue)) { *theApp->getLog() << _T("Error: Non-numeric Standard Deviation Factor of ") << sStddevFactor << _T("\n"); } return dValue; } ///////////////////////////////////////////////////////////////////// // CLASS IDENTIFICATION // // DialogGetRasterParameters ///////////////////////////////////////////////////////////////////// DialogGetRasterParameters::DialogGetRasterParameters (wxWindow* pParent, int iDefaultXSize, int iDefaultYSize, int iDefaultNSamples, double dDefaultViewRatio) : wxDialog (pParent, -1, _T("Rasterization Parameters"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) { wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL); pTopSizer->Add (new wxStaticText (this, -1, _T("Rasterization Parameters")), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5); pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5); wxFlexGridSizer *pGridSizer = new wxFlexGridSizer (2); wxString sXSize; sXSize << iDefaultXSize; m_pTextCtrlXSize = new wxTextCtrl (this, -1, sXSize, wxDefaultPosition, wxSize(100, 25), 0); pGridSizer->Add (new wxStaticText (this, -1, _T("X Size")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pGridSizer->Add (m_pTextCtrlXSize, 0, wxALIGN_CENTER_VERTICAL); wxString sYSize; sYSize << iDefaultYSize; m_pTextCtrlYSize = new wxTextCtrl (this, -1, sYSize, wxDefaultPosition, wxSize(100, 25), 0); pGridSizer->Add (new wxStaticText (this, -1, _T("Y Size")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pGridSizer->Add (m_pTextCtrlYSize, 0, wxALIGN_CENTER_VERTICAL); wxString sViewRatio; sViewRatio << dDefaultViewRatio; m_pTextCtrlViewRatio = new wxTextCtrl (this, -1, sViewRatio, wxDefaultPosition, wxSize(100, 25), 0); pGridSizer->Add (new wxStaticText (this, -1, _T("View Ratio")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pGridSizer->Add (m_pTextCtrlViewRatio, 0, wxALIGN_CENTER_VERTICAL); wxString sNSamples; sNSamples << iDefaultNSamples; m_pTextCtrlNSamples = new wxTextCtrl (this, -1, sNSamples, wxDefaultPosition, wxSize(100, 25), 0); pGridSizer->Add (new wxStaticText (this, -1, _T("Samples per Pixel")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pGridSizer->Add (m_pTextCtrlNSamples, 0, wxALIGN_CENTER_VERTICAL); pTopSizer->Add (pGridSizer, 1, wxALL, 10); pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5); wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL); wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Okay")); pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10); wxButton* pButtonCancel = new wxButton (this, wxID_CANCEL, _T("Cancel")); pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10); CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_RASTERIZE); pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10); pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER); pButtonOk->SetDefault(); SetAutoLayout (true); SetSizer (pTopSizer); pTopSizer->Fit (this); pTopSizer->SetSizeHints (this); } DialogGetRasterParameters::~DialogGetRasterParameters () { } unsigned int DialogGetRasterParameters::getXSize () { wxString strCtrl = m_pTextCtrlXSize->GetValue(); unsigned long lValue; if (strCtrl.ToULong (&lValue)) return lValue; else return (m_iDefaultXSize); } unsigned int DialogGetRasterParameters::getYSize () { wxString strCtrl = m_pTextCtrlYSize->GetValue(); unsigned long lValue; if (strCtrl.ToULong (&lValue)) return lValue; else return (m_iDefaultYSize); } unsigned int DialogGetRasterParameters::getNSamples () { wxString strCtrl = m_pTextCtrlNSamples->GetValue(); unsigned long lValue; if (strCtrl.ToULong (&lValue)) return lValue; else return (m_iDefaultNSamples); } double DialogGetRasterParameters::getViewRatio () { wxString strCtrl = m_pTextCtrlViewRatio->GetValue(); double dValue; if (strCtrl.ToDouble (&dValue)) return dValue; else return (m_dDefaultViewRatio); } ///////////////////////////////////////////////////////////////////// // CLASS IDENTIFICATION // // DialogGetProjectionParameters ///////////////////////////////////////////////////////////////////// DialogGetProjectionParameters::DialogGetProjectionParameters (wxWindow* pParent, int iDefaultNDet, int iDefaultNView, int iDefaultOffsetView, int iDefaultNSamples, double dDefaultRotAngle, double dDefaultFocalLength, double dDefaultCenterDetectorLength, double dDefaultViewRatio, double dDefaultScanRatio, int iDefaultGeometry, int iDefaultTrace) : wxDialog (pParent, -1, _T("Projection Parameters"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) { wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL); m_dDefaultRotAngle = dDefaultRotAngle; m_dDefaultFocalLength = dDefaultFocalLength; m_dDefaultCenterDetectorLength = dDefaultCenterDetectorLength; m_dDefaultViewRatio = dDefaultViewRatio; m_dDefaultScanRatio = dDefaultScanRatio; m_iDefaultNSamples = iDefaultNSamples; m_iDefaultNView = iDefaultNView; m_iDefaultNDet = iDefaultNDet; m_iDefaultTrace = iDefaultTrace; m_iDefaultGeometry = iDefaultGeometry; pTopSizer->Add (new wxStaticText (this, -1, _T("Projection Parameters")), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5); pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5); wxFlexGridSizer* pGridSizer = new wxFlexGridSizer (2); m_pRadioBoxGeometry = new StringValueAndTitleRadioBox (this, _T("Geometry"), Scanner::getGeometryCount(), Scanner::getGeometryTitleArray(), Scanner::getGeometryNameArray()); m_pRadioBoxGeometry->SetSelection (iDefaultGeometry); pGridSizer->Add (m_pRadioBoxGeometry, 0, wxALL | wxALIGN_CENTER | wxEXPAND); m_pRadioBoxTrace = new StringValueAndTitleRadioBox (this, _T("Trace Level"), Trace::getTraceCount(), Trace::getTraceTitleArray(), Trace::getTraceNameArray()); m_pRadioBoxTrace->SetSelection (iDefaultTrace); pGridSizer->Add (m_pRadioBoxTrace, 0, wxALL | wxALIGN_CENTER | wxEXPAND); wxFlexGridSizer* pText1Sizer = new wxFlexGridSizer(2); wxString sNDet; sNDet << iDefaultNDet; m_pTextCtrlNDet = new wxTextCtrl (this, -1, sNDet, wxDefaultPosition, wxSize(100, 25), 0); pText1Sizer->Add (new wxStaticText (this, -1, _T("Detectors")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pText1Sizer->Add (m_pTextCtrlNDet, 0, wxALIGN_CENTER_VERTICAL); wxString sNView; sNView << iDefaultNView; m_pTextCtrlNView = new wxTextCtrl (this, -1, sNView, wxDefaultPosition, wxSize(100, 25), 0); pText1Sizer->Add (new wxStaticText (this, -1, _T("Views")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pText1Sizer->Add (m_pTextCtrlNView, 0, wxALIGN_CENTER_VERTICAL); wxString sNSamples; sNSamples << iDefaultNSamples; m_pTextCtrlNSamples = new wxTextCtrl (this, -1, sNSamples, wxDefaultPosition, wxSize(100, 25), 0); pText1Sizer->Add (new wxStaticText (this, -1, _T("Samples per Detector")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pText1Sizer->Add (m_pTextCtrlNSamples, 0, wxALIGN_CENTER_VERTICAL); pGridSizer->Add (pText1Sizer); wxFlexGridSizer* pText2Sizer = new wxFlexGridSizer(2); wxString sViewRatio; sViewRatio << dDefaultViewRatio; m_pTextCtrlViewRatio = new wxTextCtrl (this, -1, sViewRatio, wxDefaultPosition, wxSize(100, 25), 0); pText2Sizer->Add (new wxStaticText (this, -1, _T("View Ratio")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pText2Sizer->Add (m_pTextCtrlViewRatio, 0, wxALIGN_CENTER_VERTICAL); wxString sScanRatio; sScanRatio << dDefaultScanRatio; m_pTextCtrlScanRatio = new wxTextCtrl (this, -1, sScanRatio, wxDefaultPosition, wxSize(100, 25), 0); pText2Sizer->Add (new wxStaticText (this, -1, _T("Scan Ratio")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pText2Sizer->Add (m_pTextCtrlScanRatio, 0, wxALIGN_CENTER_VERTICAL); wxString sFocalLength; sFocalLength << dDefaultFocalLength; m_pTextCtrlFocalLength = new wxTextCtrl (this, -1, sFocalLength, wxDefaultPosition, wxSize(100, 25), 0); pText2Sizer->Add (new wxStaticText (this, -1, _T("Focal Length Ratio")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pText2Sizer->Add (m_pTextCtrlFocalLength, 0, wxALIGN_CENTER_VERTICAL); if (theApp->getAdvancedOptions()) { wxString sCenterDetectorLength; sCenterDetectorLength << dDefaultCenterDetectorLength; m_pTextCtrlCenterDetectorLength = new wxTextCtrl (this, -1, sCenterDetectorLength, wxDefaultPosition, wxSize(100, 25), 0); pText2Sizer->Add (new wxStaticText (this, -1, _T("Center-Detector Length Ratio")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pText2Sizer->Add (m_pTextCtrlCenterDetectorLength, 0, wxALIGN_CENTER_VERTICAL); wxString sRotAngle; sRotAngle << dDefaultRotAngle; m_pTextCtrlRotAngle = new wxTextCtrl (this, -1, sRotAngle, wxDefaultPosition, wxSize(100, 25), 0); pText2Sizer->Add (new wxStaticText (this, -1, _T("Rotation Angle (Fraction of circle)")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pText2Sizer->Add (m_pTextCtrlRotAngle, 0, wxALIGN_CENTER_VERTICAL); wxString sOffsetView; sOffsetView << iDefaultOffsetView; m_pTextCtrlOffsetView = new wxTextCtrl (this, -1, sOffsetView, wxDefaultPosition, wxSize(100, 25), 0); pText2Sizer->Add (new wxStaticText (this, -1, _T("Gantry offset in units of 'views' ")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pText2Sizer->Add (m_pTextCtrlOffsetView, 0, wxALIGN_CENTER_VERTICAL); } pGridSizer->Add (pText2Sizer); pTopSizer->Add (pGridSizer, 1, wxALL, 10); pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5); wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL); wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Okay")); pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10); wxButton* pButtonCancel = new wxButton (this, wxID_CANCEL, _T("Cancel")); pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10); CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_PROJECTIONS); pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10); pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER); pButtonOk->SetDefault(); SetAutoLayout (true); SetSizer (pTopSizer); pTopSizer->Fit (this); pTopSizer->SetSizeHints (this); m_pRadioBoxGeometry->SetFocus(); } DialogGetProjectionParameters::~DialogGetProjectionParameters () { } unsigned int DialogGetProjectionParameters::getNDet () { wxString strCtrl = m_pTextCtrlNDet->GetValue(); unsigned long lValue; if (strCtrl.ToULong (&lValue)) return lValue; else return (m_iDefaultNDet); } unsigned int DialogGetProjectionParameters::getNView () { wxString strCtrl = m_pTextCtrlNView->GetValue(); unsigned long lValue; if (strCtrl.ToULong (&lValue)) return lValue; else return (m_iDefaultNView); } unsigned int DialogGetProjectionParameters::getOffsetView () { if (theApp->getAdvancedOptions()) { wxString strCtrl = m_pTextCtrlOffsetView->GetValue(); unsigned long lValue; if (strCtrl.ToULong (&lValue)) return lValue; else return (m_iDefaultOffsetView); } else return 0; } unsigned int DialogGetProjectionParameters::getNSamples () { wxString strCtrl = m_pTextCtrlNSamples->GetValue(); unsigned long lValue; if (strCtrl.ToULong (&lValue)) return lValue; else return (m_iDefaultNSamples); } double DialogGetProjectionParameters::getRotAngle () { if (theApp->getAdvancedOptions()) { wxString strCtrl = m_pTextCtrlRotAngle->GetValue(); double dValue; if (strCtrl.ToDouble (&dValue)) return (dValue * TWOPI); else return (m_dDefaultRotAngle); } else { if (Scanner::convertGeometryNameToID (m_pRadioBoxGeometry->getSelectionStringValue()) == Scanner::GEOMETRY_PARALLEL) return (PI); else return (TWOPI); } } double DialogGetProjectionParameters::getFocalLengthRatio () { wxString strCtrl = m_pTextCtrlFocalLength->GetValue(); double dValue; if (strCtrl.ToDouble (&dValue)) return (dValue); else return (m_dDefaultFocalLength); } double DialogGetProjectionParameters::getCenterDetectorLengthRatio () { if (theApp->getAdvancedOptions()) { wxString strCtrl = m_pTextCtrlCenterDetectorLength->GetValue(); double dValue; if (strCtrl.ToDouble (&dValue)) return (dValue); else return (m_dDefaultCenterDetectorLength); } else return getFocalLengthRatio(); // default is to set equal to focal-length } double DialogGetProjectionParameters::getViewRatio () { wxString strCtrl = m_pTextCtrlViewRatio->GetValue(); double dValue; if (strCtrl.ToDouble (&dValue)) return (dValue); else return (m_dDefaultViewRatio); } double DialogGetProjectionParameters::getScanRatio () { wxString strCtrl = m_pTextCtrlScanRatio->GetValue(); double dValue; if (strCtrl.ToDouble (&dValue)) return (dValue); else return (m_dDefaultScanRatio); } const char* DialogGetProjectionParameters::getGeometry () { return m_pRadioBoxGeometry->getSelectionStringValue(); } int DialogGetProjectionParameters::getTrace () { return Trace::convertTraceNameToID(m_pRadioBoxTrace->getSelectionStringValue()); } ///////////////////////////////////////////////////////////////////// // CLASS IDENTIFICATION // // DialogGetReconstructionParameters ///////////////////////////////////////////////////////////////////// DialogGetReconstructionParameters::DialogGetReconstructionParameters (wxWindow* pParent, int iDefaultXSize, int iDefaultYSize, int iDefaultFilterID, double dDefaultHammingParam, int iDefaultFilterMethodID, int iDefaultFilterGenerationID, int iDefaultZeropad, int iDefaultInterpID, int iDefaultInterpParam, int iDefaultBackprojectID, int iTrace, ReconstructionROI* pDefaultROI) : wxDialog (pParent, -1, _T("Reconstruction Parameters"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) { wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL); m_iDefaultXSize = iDefaultXSize; m_iDefaultYSize = iDefaultYSize; m_dDefaultFilterParam = dDefaultHammingParam; m_iDefaultZeropad = iDefaultZeropad; m_iDefaultInterpParam = iDefaultInterpParam; m_dDefaultRoiXMin = pDefaultROI->m_dXMin; m_dDefaultRoiXMax = pDefaultROI->m_dXMax; m_dDefaultRoiYMin = pDefaultROI->m_dYMin; m_dDefaultRoiYMax = pDefaultROI->m_dYMax; pTopSizer->Add (new wxStaticText (this, -1, _T("Filtered Backprojection Parameters")), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5); pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5); wxFlexGridSizer* pGridSizer = NULL; if (theApp->getAdvancedOptions()) pGridSizer = new wxFlexGridSizer (4); else pGridSizer = new wxFlexGridSizer (3); if (theApp->getAdvancedOptions()) m_pRadioBoxFilter = new StringValueAndTitleRadioBox (this, _T("Filter"), SignalFilter::getFilterCount(), SignalFilter::getFilterTitleArray(), SignalFilter::getFilterNameArray()); else m_pRadioBoxFilter = new StringValueAndTitleRadioBox (this, _T("Filter"), SignalFilter::getReconstructFilterCount(), SignalFilter::getFilterTitleArray(), SignalFilter::getFilterNameArray()); m_pRadioBoxFilter->SetSelection (iDefaultFilterID); pGridSizer->Add (m_pRadioBoxFilter, 0, wxALL | wxALIGN_LEFT | wxEXPAND); if (theApp->getAdvancedOptions()) { m_pRadioBoxFilterMethod = new StringValueAndTitleRadioBox (this, _T("Filter Method"), ProcessSignal::getFilterMethodCount(), ProcessSignal::getFilterMethodTitleArray(), ProcessSignal::getFilterMethodNameArray()); m_pRadioBoxFilterMethod->SetSelection (iDefaultFilterMethodID); pGridSizer->Add (m_pRadioBoxFilterMethod, 0, wxALL | wxALIGN_LEFT | wxEXPAND); } else { #if HAVE_FFTW static const char* aszFilterMethodTitle[] = {"Convolution", "FFT"}; static const char* aszFilterMethodName[] = {"convolution", "rfftw"}; #else static const char* aszFilterMethodTitle[] = {"Convolution", "Fourier"}; static const char* aszFilterMethodName[] = {"convolution", "fourier-table"}; #endif m_pRadioBoxFilterMethod = new StringValueAndTitleRadioBox (this, _T("Filter Method"), 2, aszFilterMethodTitle, aszFilterMethodName); #if HAVE_FFTW m_pRadioBoxFilterMethod->SetSelection (1); #else m_pRadioBoxFilterMethod->SetSelection (0); #endif pGridSizer->Add (m_pRadioBoxFilterMethod, 0, wxALL | wxALIGN_LEFT | wxEXPAND); } if (theApp->getAdvancedOptions()) { m_pRadioBoxFilterGeneration = new StringValueAndTitleRadioBox (this, _T("Filter Generation"), ProcessSignal::getFilterGenerationCount(), ProcessSignal::getFilterGenerationTitleArray(), ProcessSignal::getFilterGenerationNameArray()); m_pRadioBoxFilterGeneration->SetSelection (iDefaultFilterGenerationID); pGridSizer->Add (m_pRadioBoxFilterGeneration, 0, wxALL | wxALIGN_LEFT | wxEXPAND); m_pRadioBoxBackproject = new StringValueAndTitleRadioBox (this, _T("Backprojection"), Backprojector::getBackprojectCount(), Backprojector::getBackprojectTitleArray(), Backprojector::getBackprojectNameArray()); m_pRadioBoxBackproject->SetSelection (iDefaultBackprojectID); pGridSizer->Add (m_pRadioBoxBackproject, 0, wxALL | wxALIGN_RIGHT | wxEXPAND); } m_pRadioBoxInterp = new StringValueAndTitleRadioBox (this, _T("Interpolation"), Backprojector::getInterpCount(), Backprojector::getInterpTitleArray(), Backprojector::getInterpNameArray()); m_pRadioBoxInterp->SetSelection (iDefaultInterpID); pGridSizer->Add (m_pRadioBoxInterp, 0, wxALL | wxALIGN_RIGHT | wxEXPAND); static const char* aszTraceTitle[] = {"None", "Full"}; static const char* aszTraceName[] = {"none", "full"}; m_pRadioBoxTrace = new StringValueAndTitleRadioBox (this, _T("Trace Level"), 2, aszTraceTitle, aszTraceName); iTrace = clamp(iTrace, 0, 1); m_pRadioBoxTrace->SetSelection (iTrace); pGridSizer->Add (m_pRadioBoxTrace); wxFlexGridSizer* pTextGridSizer = new wxFlexGridSizer (2); wxString sXSize; sXSize << iDefaultXSize; m_pTextCtrlXSize = new wxTextCtrl (this, -1, sXSize, wxDefaultPosition, wxSize(100, 25), 0); pTextGridSizer->Add (new wxStaticText (this, -1, _T("X Size")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pTextGridSizer->Add (m_pTextCtrlXSize, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); wxString sYSize; sYSize << iDefaultYSize; m_pTextCtrlYSize = new wxTextCtrl (this, -1, sYSize, wxDefaultPosition, wxSize(100, 25), 0); pTextGridSizer->Add (new wxStaticText (this, -1, _T("Y Size")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pTextGridSizer->Add (m_pTextCtrlYSize, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); wxString sHammingParam; sHammingParam << dDefaultHammingParam; m_pTextCtrlFilterParam = new wxTextCtrl (this, -1, sHammingParam, wxDefaultPosition, wxSize(100, 25), 0); pTextGridSizer->Add (new wxStaticText (this, -1, _T("Hamming Parameter")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pTextGridSizer->Add (m_pTextCtrlFilterParam, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); if (theApp->getAdvancedOptions()) { wxString sZeropad; sZeropad << iDefaultZeropad; m_pTextCtrlZeropad = new wxTextCtrl (this, -1, sZeropad, wxDefaultPosition, wxSize(100, 25), 0); pTextGridSizer->Add (new wxStaticText (this, -1, _T("Zeropad")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pTextGridSizer->Add (m_pTextCtrlZeropad, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); } pGridSizer->Add (pTextGridSizer); #if HAVE_FREQ_PREINTERP wxString sInterpParam; sInterpParam << iDefaultInterpParam; m_pTextCtrlInterpParam = new wxTextCtrl (this, -1, sInterpParam, wxDefaultPosition, wxSize(100, 25), 0); pGridSizer->Add (new wxStaticText (this, -1, _T("Interpolation Parameter")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pGridSizer->Add (m_pTextCtrlInterpParam, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); #endif if (theApp->getAdvancedOptions()) { wxFlexGridSizer* pROIGridSizer = new wxFlexGridSizer (2); wxString sRoiXMin; sRoiXMin << m_dDefaultRoiXMin; m_pTextCtrlRoiXMin = new wxTextCtrl (this, -1, sRoiXMin, wxDefaultPosition, wxSize(100, 25), 0); pROIGridSizer->Add (new wxStaticText (this, -1, _T("ROI XMin")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pROIGridSizer->Add (m_pTextCtrlRoiXMin, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); wxString sRoiXMax; sRoiXMax << m_dDefaultRoiXMax; m_pTextCtrlRoiXMax = new wxTextCtrl (this, -1, sRoiXMax, wxDefaultPosition, wxSize(100, 25), 0); pROIGridSizer->Add (new wxStaticText (this, -1, _T("ROI XMax")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pROIGridSizer->Add (m_pTextCtrlRoiXMax, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); wxString sRoiYMin; sRoiYMin << m_dDefaultRoiYMin; m_pTextCtrlRoiYMin = new wxTextCtrl (this, -1, sRoiYMin, wxDefaultPosition, wxSize(100, 25), 0); pROIGridSizer->Add (new wxStaticText (this, -1, _T("ROI YMin")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pROIGridSizer->Add (m_pTextCtrlRoiYMin, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); wxString sRoiYMax; sRoiYMax << m_dDefaultRoiYMax; m_pTextCtrlRoiYMax = new wxTextCtrl (this, -1, sRoiYMax, wxDefaultPosition, wxSize(100, 25), 0); pROIGridSizer->Add (new wxStaticText (this, -1, _T("ROI YMax")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pROIGridSizer->Add (m_pTextCtrlRoiYMax, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); pGridSizer->Add (pROIGridSizer); } pTopSizer->Add (pGridSizer, 1, wxALL, 3); pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5); wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL); wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Okay")); pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10); wxButton* pButtonCancel = new wxButton (this, wxID_CANCEL, _T("Cancel")); pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10); CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_RECONSTRUCTION); pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10); pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER); pButtonOk->SetDefault(); SetAutoLayout (true); SetSizer (pTopSizer); pTopSizer->Layout(); pTopSizer->Fit (this); pTopSizer->SetSizeHints (this); } DialogGetReconstructionParameters::~DialogGetReconstructionParameters () { } unsigned int DialogGetReconstructionParameters::getXSize () { wxString strCtrl = m_pTextCtrlXSize->GetValue(); unsigned long lValue; if (strCtrl.ToULong (&lValue)) return lValue; else return (m_iDefaultXSize); } unsigned int DialogGetReconstructionParameters::getYSize () { wxString strCtrl = m_pTextCtrlYSize->GetValue(); unsigned long lValue; if (strCtrl.ToULong (&lValue)) return lValue; else return (m_iDefaultYSize); } unsigned int DialogGetReconstructionParameters::getZeropad () { if (theApp->getAdvancedOptions()) { wxString strCtrl = m_pTextCtrlZeropad->GetValue(); unsigned long lValue; if (strCtrl.ToULong (&lValue)) return lValue; else return (m_iDefaultZeropad); } else return 1; } unsigned int DialogGetReconstructionParameters::getInterpParam () { #if HAVE_FREQ_PREINTERP wxString strCtrl = m_pTextCtrlInterpParam->GetValue(); unsigned long lValue; if (strCtrl.ToULong (&lValue)) return lValue; else return (m_iDefaultInterpParam); #else return 1; #endif } double DialogGetReconstructionParameters::getFilterParam () { wxString strCtrl = m_pTextCtrlFilterParam->GetValue(); double dValue; if (strCtrl.ToDouble (&dValue)) return (dValue); else return (m_dDefaultFilterParam); } const char* DialogGetReconstructionParameters::getFilterName () { return m_pRadioBoxFilter->getSelectionStringValue(); } const char* DialogGetReconstructionParameters::getFilterMethodName () { return m_pRadioBoxFilterMethod->getSelectionStringValue(); } const char* DialogGetReconstructionParameters::getInterpName () { return m_pRadioBoxInterp->getSelectionStringValue(); } int DialogGetReconstructionParameters::getTrace () { int iTrace = 0; if (strcmp("full", m_pRadioBoxTrace->getSelectionStringValue()) == 0) iTrace = Trace::TRACE_PLOT; return iTrace; } const char* DialogGetReconstructionParameters::getBackprojectName () { if (theApp->getAdvancedOptions()) { return m_pRadioBoxBackproject->getSelectionStringValue(); } else return "idiff"; } const char* DialogGetReconstructionParameters::getFilterGenerationName () { if (theApp->getAdvancedOptions()) { return m_pRadioBoxFilterGeneration->getSelectionStringValue(); } else { if (ProcessSignal::convertFilterMethodNameToID(m_pRadioBoxFilterMethod->getSelectionStringValue()) == ProcessSignal::FILTER_METHOD_CONVOLUTION) return "direct"; else return "inverse-fourier"; } } void DialogGetReconstructionParameters::getROI (ReconstructionROI* pROI) { if (theApp->getAdvancedOptions()) { double dValue; if (m_pTextCtrlRoiXMin->GetValue().ToDouble (&dValue)) pROI->m_dXMin = dValue; else pROI->m_dXMin = m_dDefaultRoiXMin; if (m_pTextCtrlRoiXMax->GetValue().ToDouble (&dValue)) pROI->m_dXMax = dValue; else pROI->m_dXMax = m_dDefaultRoiXMax; if (m_pTextCtrlRoiYMin->GetValue().ToDouble (&dValue)) pROI->m_dYMin = dValue; else pROI->m_dYMin = m_dDefaultRoiYMin; if (m_pTextCtrlRoiYMax->GetValue().ToDouble (&dValue)) pROI->m_dYMax = dValue; else pROI->m_dYMax = m_dDefaultRoiYMax; } else { pROI->m_dXMin = m_dDefaultRoiXMin; pROI->m_dXMax = m_dDefaultRoiXMax; pROI->m_dYMin = m_dDefaultRoiYMin; pROI->m_dYMax = m_dDefaultRoiYMax; } } ///////////////////////////////////////////////////////////////////// // CLASS IDENTIFICATION // // DialogGetFilterParameters ///////////////////////////////////////////////////////////////////// DialogGetFilterParameters::DialogGetFilterParameters (wxWindow* pParent, int iDefaultXSize, int iDefaultYSize, int iDefaultFilterID, double dDefaultFilterParam, double dDefaultBandwidth, int iDefaultDomainID, double dDefaultInputScale, double dDefaultOutputScale) : wxDialog (pParent, -1, _T("Filter Parameters"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) { wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL); pTopSizer->Add (new wxStaticText (this, -1, _T("Filter Parameters")), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5); pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5); wxFlexGridSizer* pGridSizer = new wxFlexGridSizer (2); m_pRadioBoxFilter = new StringValueAndTitleRadioBox (this, _T("Filter"), SignalFilter::getFilterCount(), SignalFilter::getFilterTitleArray(), SignalFilter::getFilterNameArray()); m_pRadioBoxFilter->SetSelection (iDefaultFilterID); pGridSizer->Add (m_pRadioBoxFilter, 0, wxALL | wxALIGN_LEFT | wxEXPAND); m_pRadioBoxDomain = new StringValueAndTitleRadioBox (this, _T("Domain"), SignalFilter::getDomainCount(), SignalFilter::getDomainTitleArray(), SignalFilter::getDomainNameArray()); m_pRadioBoxDomain->SetSelection (iDefaultDomainID); pGridSizer->Add (m_pRadioBoxDomain, 0, wxALL | wxALIGN_LEFT | wxEXPAND); wxString sXSize; sXSize << iDefaultXSize; m_pTextCtrlXSize = new wxTextCtrl (this, -1, sXSize, wxDefaultPosition, wxSize(100, 25), 0); pGridSizer->Add (new wxStaticText (this, -1, _T("X Size")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pGridSizer->Add (m_pTextCtrlXSize, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); wxString sYSize; sYSize << iDefaultYSize; m_pTextCtrlYSize = new wxTextCtrl (this, -1, sYSize, wxDefaultPosition, wxSize(100, 25), 0); pGridSizer->Add (new wxStaticText (this, -1, _T("Y Size")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pGridSizer->Add (m_pTextCtrlYSize, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); wxString sFilterParam; sFilterParam << dDefaultFilterParam; m_pTextCtrlFilterParam = new wxTextCtrl (this, -1, sFilterParam, wxDefaultPosition, wxSize(100, 25), 0); pGridSizer->Add (new wxStaticText (this, -1, _T("Filter Parameter")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pGridSizer->Add (m_pTextCtrlFilterParam, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); wxString sBandwidth; sBandwidth << dDefaultBandwidth; m_pTextCtrlBandwidth = new wxTextCtrl (this, -1, sBandwidth, wxDefaultPosition, wxSize(100, 25), 0); pGridSizer->Add (new wxStaticText (this, -1, _T("Bandwidth")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pGridSizer->Add (m_pTextCtrlBandwidth, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); wxString sInputScale; sInputScale << dDefaultInputScale; m_pTextCtrlInputScale = new wxTextCtrl (this, -1, sInputScale, wxDefaultPosition, wxSize(100, 25), 0); pGridSizer->Add (new wxStaticText (this, -1, _T("Axis (input) Scale")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pGridSizer->Add (m_pTextCtrlInputScale, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); wxString sOutputScale; sOutputScale << dDefaultOutputScale; m_pTextCtrlOutputScale = new wxTextCtrl (this, -1, sOutputScale, wxDefaultPosition, wxSize(100, 25), 0); pGridSizer->Add (new wxStaticText (this, -1, _T("Filter Output Scale")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pGridSizer->Add (m_pTextCtrlOutputScale, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); pTopSizer->Add (pGridSizer, 1, wxALL, 3); pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5); wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL); wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Okay")); pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10); wxButton* pButtonCancel = new wxButton (this, wxID_CANCEL, _T("Cancel")); pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10); CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_FILTER); pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10); pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER); pButtonOk->SetDefault(); SetAutoLayout (true); SetSizer (pTopSizer); pTopSizer->Layout(); pTopSizer->Fit (this); pTopSizer->SetSizeHints (this); } DialogGetFilterParameters::~DialogGetFilterParameters () { } unsigned int DialogGetFilterParameters::getXSize () { wxString strCtrl = m_pTextCtrlXSize->GetValue(); unsigned long lValue; if (strCtrl.ToULong (&lValue)) return lValue; else return (m_iDefaultXSize); } unsigned int DialogGetFilterParameters::getYSize () { wxString strCtrl = m_pTextCtrlYSize->GetValue(); unsigned long lValue; if (strCtrl.ToULong (&lValue)) return lValue; else return (m_iDefaultYSize); } double DialogGetFilterParameters::getBandwidth () { wxString strCtrl = m_pTextCtrlBandwidth->GetValue(); double dValue; if (strCtrl.ToDouble (&dValue)) return dValue; else return (m_dDefaultBandwidth); } double DialogGetFilterParameters::getFilterParam () { wxString strCtrl = m_pTextCtrlFilterParam->GetValue(); double dValue; if (strCtrl.ToDouble (&dValue)) return (dValue); else return (m_dDefaultFilterParam); } double DialogGetFilterParameters::getInputScale () { wxString strCtrl = m_pTextCtrlInputScale->GetValue(); double dValue; if (strCtrl.ToDouble (&dValue)) return dValue; else return (m_dDefaultInputScale); } double DialogGetFilterParameters::getOutputScale () { wxString strCtrl = m_pTextCtrlOutputScale->GetValue(); double dValue; if (strCtrl.ToDouble (&dValue)) return dValue; else return (m_dDefaultOutputScale); } const char* DialogGetFilterParameters::getFilterName () { return m_pRadioBoxFilter->getSelectionStringValue(); } const char* DialogGetFilterParameters::getDomainName () { return m_pRadioBoxDomain->getSelectionStringValue(); } /////////////////////////////////////////////////////////////////////// // CLASS IMPLEMENTATION // DialogExportParameters /////////////////////////////////////////////////////////////////////// DialogExportParameters::DialogExportParameters (wxWindow* pParent, int iDefaultFormatID) : wxDialog (pParent, -1, _T("Select ExportParameters"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) { wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL); pTopSizer->Add (new wxStaticText (this, -1, _T("Select Export Format")), 0, wxALIGN_CENTER | wxALL, 5); pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxALL, 5); m_pRadioBoxFormat = new StringValueAndTitleRadioBox (this, _T("File Type"), ImageFile::getExportFormatCount(), ImageFile::getExportFormatTitleArray(), ImageFile::getExportFormatNameArray()); m_pRadioBoxFormat->SetSelection (iDefaultFormatID); pTopSizer->Add (m_pRadioBoxFormat, 0, wxALL | wxALIGN_CENTER); pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5); wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL); wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Okay")); pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10); wxButton* pButtonCancel = new wxButton (this, wxID_CANCEL, _T("Cancel")); pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10); CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_EXPORT); pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10); pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER); pButtonOk->SetDefault(); SetAutoLayout (true); SetSizer (pTopSizer); pTopSizer->Fit (this); pTopSizer->SetSizeHints (this); } const char* DialogExportParameters::getFormatName() { return m_pRadioBoxFormat->getSelectionStringValue(); } /////////////////////////////////////////////////////////////////////// // CLASS IMPLEMENTATION // DialogImportParameters /////////////////////////////////////////////////////////////////////// DialogImportParameters::DialogImportParameters (wxWindow* pParent, int iDefaultFormatID) : wxDialog (pParent, -1, _T("Select Import Parameters"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) { wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL); pTopSizer->Add (new wxStaticText (this, -1, _T("Select Import Format")), 0, wxALIGN_CENTER | wxALL, 5); pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxALL, 5); m_pRadioBoxFormat = new StringValueAndTitleRadioBox (this, _T("File Type"), ImageFile::getImportFormatCount(), ImageFile::getImportFormatTitleArray(), ImageFile::getImportFormatNameArray()); m_pRadioBoxFormat->SetSelection (iDefaultFormatID); pTopSizer->Add (m_pRadioBoxFormat, 0, wxALL | wxALIGN_CENTER); pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5); wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL); wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Okay")); pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10); wxButton* pButtonCancel = new wxButton (this, wxID_CANCEL, _T("Cancel")); pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10); CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_IMPORT); pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10); pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER); pButtonOk->SetDefault(); SetAutoLayout (true); SetSizer (pTopSizer); pTopSizer->Fit (this); pTopSizer->SetSizeHints (this); } const char* DialogImportParameters::getFormatName() { return m_pRadioBoxFormat->getSelectionStringValue(); } ///////////////////////////////////////////////////////////////////// // CLASS DiaglogGetXYSize Implementation ///////////////////////////////////////////////////////////////////// DialogGetXYSize::DialogGetXYSize (wxWindow* pParent, wxChar const * pwszTitle, int iDefaultXSize, int iDefaultYSize) : wxDialog (pParent, -1, pwszTitle, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) { m_iDefaultXSize = iDefaultXSize; m_iDefaultYSize = iDefaultYSize; wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL); pTopSizer->Add (new wxStaticText (this, -1, pwszTitle), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5); pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5); wxString sXSize; sXSize << iDefaultXSize; m_pTextCtrlXSize = new wxTextCtrl (this, -1, sXSize, wxDefaultPosition, wxSize(100, 25), 0); wxString sYSize; sYSize << iDefaultYSize; m_pTextCtrlYSize = new wxTextCtrl (this, -1, sYSize, wxDefaultPosition, wxSize(100, 25), 0); wxFlexGridSizer *pGridSizer = new wxFlexGridSizer (2); pGridSizer->Add (new wxStaticText (this, -1, _T("X Size")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pGridSizer->Add (m_pTextCtrlXSize, 0, wxALIGN_CENTER_VERTICAL); pGridSizer->Add (new wxStaticText (this, -1, _T("Y Size")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pGridSizer->Add (m_pTextCtrlYSize, 0, wxALIGN_CENTER_VERTICAL); pTopSizer->Add (pGridSizer, 1, wxALL, 10); pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5); wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL); wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Okay")); pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10); wxButton* pButtonCancel = new wxButton (this, wxID_CANCEL, _T("Cancel")); pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10); pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER); pButtonOk->SetDefault(); SetAutoLayout (true); SetSizer (pTopSizer); pTopSizer->Fit (this); pTopSizer->SetSizeHints (this); } DialogGetXYSize::~DialogGetXYSize () { } unsigned int DialogGetXYSize::getXSize () { wxString strCtrl = m_pTextCtrlXSize->GetValue(); long lValue; if (strCtrl.ToLong (&lValue)) return lValue; else return (m_iDefaultXSize); } unsigned int DialogGetXYSize::getYSize () { wxString strCtrl = m_pTextCtrlYSize->GetValue(); long lValue; if (strCtrl.ToLong (&lValue)) return lValue; else return (m_iDefaultYSize); } ///////////////////////////////////////////////////////////////////// // CLASS IDENTIFICATION // // DialogGetConvertPolarParameters ///////////////////////////////////////////////////////////////////// DialogGetConvertPolarParameters::DialogGetConvertPolarParameters (wxWindow* pParent, wxChar const * pwszTitle, int iDefaultXSize, int iDefaultYSize, int iDefaultInterpolationID, int iDefaultZeropad, int iHelpID) : wxDialog (pParent, -1, pwszTitle, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION) { m_iDefaultXSize = iDefaultXSize; m_iDefaultYSize = iDefaultYSize; m_iDefaultZeropad = iDefaultZeropad; wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL); pTopSizer->Add (new wxStaticText (this, -1, pwszTitle), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5); pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5); wxFlexGridSizer* pGridSizer = new wxFlexGridSizer (1); m_pRadioBoxInterpolation = new StringValueAndTitleRadioBox (this, _T("Interpolation"), Projections::getInterpCount(), Projections::getInterpTitleArray(), Projections::getInterpNameArray()); m_pRadioBoxInterpolation->SetSelection (iDefaultInterpolationID); pGridSizer->Add (m_pRadioBoxInterpolation, 0, wxALL | wxALIGN_CENTER); wxFlexGridSizer* pTextGridSizer = new wxFlexGridSizer (2); wxString sXSize; sXSize << iDefaultXSize; m_pTextCtrlXSize = new wxTextCtrl (this, -1, sXSize, wxDefaultPosition, wxSize(100, 25), 0); pTextGridSizer->Add (new wxStaticText (this, -1, _T("X Size")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pTextGridSizer->Add (m_pTextCtrlXSize, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); wxString sYSize; sYSize << iDefaultYSize; m_pTextCtrlYSize = new wxTextCtrl (this, -1, sYSize, wxDefaultPosition, wxSize(100, 25), 0); pTextGridSizer->Add (new wxStaticText (this, -1, _T("Y Size")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pTextGridSizer->Add (m_pTextCtrlYSize, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); if (m_iDefaultZeropad >= 0) { wxString sZeropad; sZeropad << iDefaultZeropad; m_pTextCtrlZeropad = new wxTextCtrl (this, -1, sZeropad, wxDefaultPosition, wxSize(100, 25), 0); pTextGridSizer->Add (new wxStaticText (this, -1, _T("Zeropad")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL); pTextGridSizer->Add (m_pTextCtrlZeropad, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); } pGridSizer->Add (pTextGridSizer, 0, wxALIGN_CENTER | wxALL); pTopSizer->Add (pGridSizer, 1, wxALL | wxALIGN_CENTER, 3); pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5); wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL); wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Okay")); pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10); wxButton* pButtonCancel = new wxButton (this, wxID_CANCEL, _T("Cancel")); pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10); CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, iHelpID); pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10); pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER); pButtonOk->SetDefault(); SetAutoLayout (true); SetSizer (pTopSizer); pTopSizer->Layout(); pTopSizer->Fit (this); pTopSizer->SetSizeHints (this); } DialogGetConvertPolarParameters::~DialogGetConvertPolarParameters () { } unsigned int DialogGetConvertPolarParameters::getXSize () { wxString strCtrl = m_pTextCtrlXSize->GetValue(); unsigned long lValue; if (strCtrl.ToULong (&lValue)) return lValue; else return (m_iDefaultXSize); } unsigned int DialogGetConvertPolarParameters::getYSize () { wxString strCtrl = m_pTextCtrlYSize->GetValue(); unsigned long lValue; if (strCtrl.ToULong (&lValue)) return lValue; else return (m_iDefaultYSize); } unsigned int DialogGetConvertPolarParameters::getZeropad () { if (m_iDefaultZeropad >= 0) { wxString strCtrl = m_pTextCtrlZeropad->GetValue(); unsigned long lValue; if (strCtrl.ToULong (&lValue)) return lValue; else return (m_iDefaultZeropad); } else return 0; } const char* DialogGetConvertPolarParameters::getInterpolationName () { return m_pRadioBoxInterpolation->getSelectionStringValue(); } ctsim-6.0.2/src/backgroundsupr.cpp0000644000175000017500000001401011240454454016173 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: BackgroundSupr.cpp ** Purpose: Background Supervisor classes ** Programmer: Kevin Rosenberg ** Date Started: February 2001 ** ** This is part of the CTSim program ** Copyright (C) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include "wx/wxprec.h" #ifndef WX_PRECOMP #include "wx/wx.h" #endif // pragma line required for Fedora 4 and wxWin 2.4.2 #pragma implementation "timer.h" #include "ct.h" #include "ctsim.h" #include "docs.h" #include "views.h" #include "backgroundsupr.h" #include "backgroundmgr.h" #ifdef HAVE_WXTHREADS #define USE_BKGMGR 1 //////////////////////////////////////////////////////////////////////////// // // Class BackgroundSupervisor -- An event handler run by a SupervisorThread // //////////////////////////////////////////////////////////////////////////// IMPLEMENT_DYNAMIC_CLASS(BackgroundSupervisor, wxEvtHandler) BEGIN_EVENT_TABLE(BackgroundSupervisor, BackgroundSupervisor) END_EVENT_TABLE() BackgroundSupervisor::BackgroundSupervisor (SupervisorThread* pMyThread, wxWindow* pParentFrame, BackgroundProcessingDocument* pDocument, wxChar const* pszProcessTitle, int iTotalUnits) : wxEvtHandler(), m_pMyThread(pMyThread), m_pParentFrame(pParentFrame), m_pDocument(pDocument), m_strProcessTitle(pszProcessTitle), m_iTotalUnits(iTotalUnits), m_iNumThreads(0), m_bDone(false), m_bFail(false), m_bCancelled(false), m_iRunning(0), m_pTimer(NULL), m_bWorkersDeleted(false), m_bBackgroundManagerAdded(false) { m_iNumThreads = theApp->getNumberCPU(); // ++m_iNumThreads; m_vecpThreads.resize (m_iNumThreads); for (int iThread = 0; iThread < m_iNumThreads; iThread++) m_vecpThreads[iThread] = NULL; } BackgroundSupervisor::~BackgroundSupervisor() { m_pDocument->removeBackgroundSupervisor (this); delete m_pTimer; } void BackgroundSupervisor::deleteWorkers() { wxCriticalSectionLocker lock (m_critsectThreads); if (m_bWorkersDeleted) return; for (int i = 0; i < m_iNumThreads; i++) if (m_vecpThreads[i]) m_vecpThreads[i]->Delete(); // send Destroy message to workers #ifdef USE_BKGMGR wxCommandEvent doneEvent (wxEVT_COMMAND_MENU_SELECTED, MSG_BACKGROUND_SUPERVISOR_REMOVE); doneEvent.SetClientData (this); wxPostEvent (theApp->getBackgroundManager(), doneEvent); #endif while (m_iRunning > 0 || m_bBackgroundManagerAdded) m_pMyThread->Sleep(50); m_bWorkersDeleted = true; } void BackgroundSupervisor::ackRemoveBackgroundManager() { m_bBackgroundManagerAdded = false; } bool BackgroundSupervisor::start() { int iBaseUnits = m_iTotalUnits / m_iNumThreads; int iExtraUnits = m_iTotalUnits % m_iNumThreads; int iStartUnit = 0; for (int iThread = 0; iThread < m_iNumThreads; iThread++) { int iNumUnits = iBaseUnits; if (iThread < iExtraUnits) ++iNumUnits; m_vecpThreads[iThread] = createWorker (iThread, iStartUnit, iNumUnits); if (! m_vecpThreads[iThread]) { m_bFail = true; m_strFailMessage = _T("createWorker returned NULL [BackgroundSupervisor]"); break; } if (m_vecpThreads[iThread]->Create () != wxTHREAD_NO_ERROR) { m_bFail = true; m_strFailMessage = _T("Thread creation failed [BackgroundSupervisor]"); break; } m_vecpThreads[iThread]->SetPriority (40); iStartUnit += iNumUnits; } if (m_bFail) return false; m_pTimer = new Timer; wxString strLabel (m_strProcessTitle); strLabel += _T(" "); strLabel += dynamic_cast(m_pParentFrame)->GetTitle(); #ifdef USE_BKGMGR wxCommandEvent addTaskEvent (wxEVT_COMMAND_MENU_SELECTED, MSG_BACKGROUND_SUPERVISOR_ADD); addTaskEvent.SetString (strLabel); addTaskEvent.SetInt (m_iTotalUnits); addTaskEvent.SetClientData (this); wxPostEvent (theApp->getBackgroundManager(), addTaskEvent); #endif m_pDocument->addBackgroundSupervisor (this); m_bBackgroundManagerAdded = true; m_iRunning = m_iNumThreads; m_iUnitsDone = 0; for (int i = 0; i < m_iNumThreads; i++) m_vecpThreads[i]->Run(); return true; } void BackgroundSupervisor::onCancel() { m_bCancelled = true; m_bDone = true; } void BackgroundSupervisor::onWorkerUnitTick () { ++m_iUnitsDone; #ifdef USE_BKGMGR wxCommandEvent addTaskEvent (wxEVT_COMMAND_MENU_SELECTED, MSG_BACKGROUND_SUPERVISOR_UNIT_TICK); addTaskEvent.SetInt (m_iUnitsDone - 1); addTaskEvent.SetClientData (this); wxPostEvent (theApp->getBackgroundManager(), addTaskEvent); #endif } void BackgroundSupervisor::onWorkerDone (int iThread) { wxCriticalSection critsectDone; critsectDone.Enter(); m_iRunning--; #ifdef DEBUG if (theApp->getVerboseLogging()) { wxString msg; msg.Printf(_T("Background Supervisor: Thread finished. Remaining threads: %d\n"), m_iRunning); wxCommandEvent eventLog (wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT ); eventLog.SetString( msg ); wxPostEvent( theApp->getMainFrame(), eventLog ); // send log event } #endif critsectDone.Leave(); } void BackgroundSupervisor::onWorkerFail (int iThread, const wxString& strFailMessage) { m_iRunning--; wxCommandEvent eventLog( wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT ); eventLog.SetString( strFailMessage ); wxPostEvent( theApp->getMainFrame(), eventLog ); // send log event onCancel(); } #endif // HAVE_WXTHREADS ctsim-6.0.2/src/ctsim.xpm0000644000175000017500000000533410703552713014314 0ustar kevinkevinstatic const char *ctsim16_xpm[] = { /* width height ncolors chars_per_pixel */ "16 16 130 2", /* colors */ " c #F5F502", " . c #D8DA00", " X c #FEFDA3", " o c #FAFAFF", " O c #FCFBF7", " + c #F7F2D1", " @ c #FAF5F5", " # c #F8F3F3", " $ c #F0EB00", " % c #FFFF3D", " & c #FFFFFD", " * c #FEFC07", " = c #E6E200", " - c #FDFBFB", " ; c #F7F200", " : c #F8F001", " > c #F6F294", " , c #FFFF7F", " < c #EDED00", " 1 c #E6E66D", " 2 c #EDE900", " 3 c #FFFE0B", " 4 c #FFFE36", " 5 c #FEFD00", " 6 c #FCF9FD", " 7 c #FDFC5F", " 8 c #F3F3F4", " 9 c #EAEB00", " 0 c #FEFD6D", " q c #FBFBFF", " w c #FFFF2F", " e c #FBFB00", " r c #FBF900", " t c #F8F2F2", " y c #EFEFC8", " u c #E9E9C2", " i c #FFFEFC", " p c #E3E366", " a c #FFFFF2", " s c #F8F100", " d c #FFFFB3", " f c #FFFF49", " g c #E8E839", " h c #FFFEFF", " j c #FEFEFE", " k c #FFFE00", " l c #FCFAFC", " z c #E9E91C", " x c #EBEB35", " c c #EBEC00", " v c #FFFFF8", " b c #E1E100", " n c #FCFC00", " m c #E1DB00", " M c #FFFF24", " N c #F9F4FC", " B c #FFFFB9", " V c #F2ED00", " C c #FFFF66", " Z c #FFFFFB", " A c #F9F800", " S c #FBF7F7", " D c #F9F5F5", " F c #E5E549", " G c #E9E939", " H c #EFEB00", " J c #FEFDFD", " K c #EBEB13", " L c #FFFF80", " P c #ECED00", " I c #E2E200", " U c #FDFD00", " Y c #E2DE00", " T c #FEFDC1", " R c #EBEB6C", " E c #FFFF6F", " W c #FFFF9A", " Q c #F2F202", " ! c #F9F4F4", " ~ c #FFFFB1", " ^ c #F0EC00", " / c #FFFD72", " ( c #FFFF08", " ) c #E6E700", " _ c #FFFFF3", " ` c #FCFAFA", " ' c #DCDC00", " ] c #F7F300", " [ c #F7F3C0", " { c #F4F4F2", " } c #EDEE00", " | c #EDE800", ". c #FEFEFF", ".. c #E3E500", ".X c #FDFCFE", ".o c #FEFE00", ".O c #FEFC00", ".+ c #E9E91D", ".@ c #FFFFE2", ".# c #FFFFCE", ".$ c #FBF6FF", ".% c #F9F3F3", ".& c #E6E669", ".* c #E7E800", ".= c #FCF9F9", ".- c #FFFFFF", ".; c #E4E400", ".: c #FFFF00", ".> c #FFFD00", "., c #FBF7FB", ".< c #FAF5FA", ".1 c #F5F600", ".2 c #FBF927", ".3 c #FCF9FF", ".4 c #E1DC00", ".5 c #F2F200", ".6 c #FFFFDA", ".7 c #FFFF06", ".8 c #FEFD30", ".9 c #EBEB1A", ".0 c #F9F700", ".q c #FAF6F6", ".w c #F9F100", ".e c #EFEA00", ".r c #FFFEFE", ".t c #E5E500", ".y c #FCFAFB", ".u c #FEFEE9", ".i c #F6F100", ".p c #E2DD00", /* pixels */ ".-.-.-. S !.% ! # t # S J.-.-.-", ".-.- O N.3 h.-.-.-.-.r.= @ -.-.-", ".-.X [ 7 d a.-.-.-.-.-.- j.q -.-", " j.<.u (.: M E B _.-.-.-.- J @ j", " S.y.- f.: 5.> r.2 / T v.-.- l S", " D j.- , 5.w ^ Y.p H :.8 L.# i.$", " D.-.- ~.O ].. }.5 ) ;.O.:.7 % >", " D.-.-.@ 3 $.t I ' c | k.:.:.: K", " D.-.- & 4.e P.; b.* = k.:.:.:.9", " D.-.-.- 0.i 9 <.1 . V 5.:.:.: x", " D j.-.- X s 2.4 m |.w U.:.:.o R", " S `.-.-.6 *.> A.0.>.O.:.:.: y", " j @ J.- Z w.:.:.:.:.:.:.: n.& q", ".- -.q J.- C.:.:.:.:.:.: e F {.-", ".-.- - @ 6 W.:.:.:.:.: Q p 8.-.-", ".-.-.- j., + G z.+ g 1 u o.-.-.-" }; ctsim-6.0.2/src/ctsim.h0000644000175000017500000002517313254402034013734 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: ctsim.h ** Purpose: Header file for CTSim ** Programmer: Kevin Rosenberg ** Date Started: July 2000 ** ** This is part of the CTSim program ** Copyright (c) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef __CTSIMH__ #define __CTSIMH__ #ifdef HAVE_CONFIG_H #include "config.h" #endif #ifdef HAVE_DMALLOC #include #endif #ifdef MSVC #define HAVE_WXTHREADS 1 #endif #ifndef WX_PRECOMP #include "wx/wx.h" #endif #include "wx/config.h" #ifdef __WXMSW__ #include "wx/msw/helpchm.h" #endif #ifdef MSVC #define CTSIM_MDI 1 #endif #if defined(CTSIM_MDI) && !wxUSE_MDI_ARCHITECTURE #error You must set wxUSE_MDI_ARCHITECTURE to 1 in setup.h! #endif #ifdef CTSIM_MDI #include "wx/docmdi.h" #endif class wxMenu; class wxDocument; class ImageFileDocument; class ProjectionFileDocument; class PhantomFileDocument; class PlotFileDocument; class TextFileDocument; class BackgroundManager; #if wxUSE_GLCANVAS class Graph3dFileDocument; #endif #include #include "wx/docview.h" #include "wx/textctrl.h" #include "wx/menu.h" #include "wx/help.h" #include "wx/html/helpctrl.h" #include "dlgezplot.h" #include "ctsim-map.h" #if defined(__WXMSW__) || defined (MSVC) // #define CTSIM_WINHELP 1 #endif // Define a new frame for main window #if CTSIM_MDI class MainFrame: public wxDocMDIParentFrame #else class MainFrame: public wxDocParentFrame #endif { private: DECLARE_CLASS(MainFrame) DECLARE_EVENT_TABLE() #ifndef CTSIM_MDI wxMenu* m_pWindowMenu; #endif enum { MAX_WINDOW_MENUITEMS = 20 }; wxMenuItem* m_apWindowMenuItems[MAX_WINDOW_MENUITEMS]; wxDocument* m_apWindowMenuData[MAX_WINDOW_MENUITEMS]; int m_iDefaultImportFormat; int m_iDefaultPhantomID; int m_iDefaultFilterID; int m_iDefaultFilterDomainID; unsigned int m_iDefaultFilterXSize; unsigned int m_iDefaultFilterYSize; double m_dDefaultFilterParam; double m_dDefaultFilterBandwidth; double m_dDefaultFilterInputScale; double m_dDefaultFilterOutputScale; bool m_bShuttingDown; #if CTSIM_WINHELP wxCHMHelpController m_winHelp; #endif wxHtmlHelpController m_htmlHelp; public: MainFrame(wxDocManager *manager, wxFrame *frame, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, const long type); virtual ~MainFrame(); #if wxCHECK_VERSION(2,9,0) // Needed for wx3.0 void OnMRUFile(wxCommandEvent& event) { if (m_docManager) m_docManager->OnMRUFile(event); } #endif void OnSize (wxSizeEvent& event); #if CTSIM_WINHELP wxCHMHelpController& getWinHelpController() {return m_winHelp; } #endif wxHtmlHelpController& getHtmlHelpController() { return m_htmlHelp; } void showHelp (int commandID); void OnAbout (wxCommandEvent& event); void OnHelpContents (wxCommandEvent& event); void OnHelpTips (wxCommandEvent& event); void OnCreatePhantom (wxCommandEvent& event); void OnPreferences (wxCommandEvent& event); void OnLogEvent (wxCommandEvent& event); // used by thread children void OnNewImageFile (wxCommandEvent& event); void OnNewProjectionFile (wxCommandEvent& event); void OnHelpButton (wxCommandEvent& event); void OnImport (wxCommandEvent& event); #if defined(CTSIM_WINHELP) && (defined(DEBUG) || defined(_DEBUG)) void OnHelpSecondary (wxCommandEvent& event); #endif void OnCreateFilter (wxCommandEvent& event); void OnExit (wxCommandEvent& event); void OnUpdateUI (wxUpdateUIEvent& event); void OnWindowMenu0 (wxCommandEvent& event); void OnWindowMenu1 (wxCommandEvent& event); void OnWindowMenu2 (wxCommandEvent& event); void OnWindowMenu3 (wxCommandEvent& event); void OnWindowMenu4 (wxCommandEvent& event); void OnWindowMenu5 (wxCommandEvent& event); void OnWindowMenu6 (wxCommandEvent& event); void OnWindowMenu7 (wxCommandEvent& event); void OnWindowMenu8 (wxCommandEvent& event); void OnWindowMenu9 (wxCommandEvent& event); void OnWindowMenu10 (wxCommandEvent& event); void OnWindowMenu11 (wxCommandEvent& event); void OnWindowMenu12 (wxCommandEvent& event); void OnWindowMenu13 (wxCommandEvent& event); void OnWindowMenu14 (wxCommandEvent& event); void OnWindowMenu15 (wxCommandEvent& event); void OnWindowMenu16 (wxCommandEvent& event); void OnWindowMenu17 (wxCommandEvent& event); void OnWindowMenu18 (wxCommandEvent& event); void OnWindowMenu19 (wxCommandEvent& event); void DoWindowMenu (int iMenuPosition, wxCommandEvent& event); bool getShuttingDown() const { return m_bShuttingDown; } }; class wxDocManager; class CTSimApp: public wxApp { private: enum { O_HELP, O_PRINT, O_VERSION }; static struct option ctsimOptions[]; bool m_bAdvancedOptions; bool m_bSetModifyNewDocs; bool m_bVerboseLogging; bool m_bShowStartupTips; long m_iCurrentTip; bool m_bUseBackgroundTasks; wxDocManager* m_docManager; MainFrame* m_pFrame; wxConfig* m_pConfig; wxTextCtrl* m_pLog; TextFileDocument* m_pLogDoc; wxDocTemplate* m_pDocTemplImage; wxDocTemplate* m_pDocTemplProjection; wxDocTemplate* m_pDocTemplPhantom; wxDocTemplate* m_pDocTemplPlot; wxDocTemplate* m_pDocTemplText; #if wxUSE_GLCANVAS wxDocTemplate* m_pDocTemplGraph3d; #endif void usage (const char* program); void openConfig(); void closeConfig(); BackgroundManager* m_pBackgroundMgr; bool m_bPrintCmdLineImages; bool m_bCmdLineVerboseFlag; wxDocument* newDocumentHelper (wxDocTemplate* tmpl); public: CTSimApp(); void OnInitCmdLine(wxCmdLineParser& parser); bool OnCmdLineParsed(wxCmdLineParser& parser); bool OnInit(); int OnExit(); MainFrame* getMainFrame() const { return m_pFrame; } wxTextCtrl* getLog() { return m_pLog; } wxDocManager* getDocManager() { return m_docManager; } int getNumberCPU() const { return wxThread::GetCPUCount(); } EZPlotDialog* makeEZPlotDialog() { return new EZPlotDialog (m_pFrame); } void getCompatibleImages (const ImageFileDocument* pIFDoc, std::vector& vecIF); bool getAdvancedOptions() const { return m_bAdvancedOptions; } void setAdvancedOptions (bool bAdv) { m_bAdvancedOptions = bAdv; } bool getVerboseLogging() const { return m_bVerboseLogging || m_bCmdLineVerboseFlag; } void setVerboseLogging (bool bVerbose) { m_bVerboseLogging = bVerbose; } bool getStartupTips() const { return m_bShowStartupTips; } void setStartupTips(bool bTips) { m_bShowStartupTips = bTips; } bool getUseBackgroundTasks() const { return m_bUseBackgroundTasks; } void setUseBackgroundTasks(bool bBkgd) { m_bUseBackgroundTasks = bBkgd; } BackgroundManager* getBackgroundManager() {return m_pBackgroundMgr;} void ShowTips(); void setIconForFrame (wxFrame* pFrame); wxConfig* getConfig() { return m_pConfig; } bool getAskDeleteNewDocs() const { return m_bSetModifyNewDocs; } void setAskDeleteNewDocs(bool bAsk) { m_bSetModifyNewDocs = bAsk; } wxDocTemplate* getDocTemplImage() { return m_pDocTemplImage; } wxDocTemplate* getDocTemplProjection() { return m_pDocTemplProjection; } wxDocTemplate* getDocTemplPhantom() { return m_pDocTemplPhantom; } wxDocTemplate* getDocTemplPlot() { return m_pDocTemplPlot; } wxDocTemplate* getDocTemplText() { return m_pDocTemplText; } #if wxUSE_GLCANVAS wxDocTemplate* getDocTemplGraph3d() { return m_pDocTemplGraph3d; } #endif TextFileDocument* getLogDoc() { return m_pLogDoc; } ProjectionFileDocument* newProjectionDoc(); ImageFileDocument* newImageDoc(); PhantomFileDocument* newPhantomDoc(); PlotFileDocument* newPlotDoc(); TextFileDocument* newTextDoc(); #if wxUSE_GLCANVAS Graph3dFileDocument* newGraph3dDoc(); #endif }; DECLARE_APP(CTSimApp) extern class CTSimApp* theApp; enum { MAINMENU_WINDOW_BASE = 500, MAINMENU_HELP_ABOUT = 600, MAINMENU_HELP_CONTENTS, MAINMENU_HELP_TIPS, #if defined(CTSIM_WINHELP) && (defined(DEBUG) || defined(_DEBUG)) MAINMENU_HELP_SECONDARY, #endif MAINMENU_FILE_CREATE_PHANTOM, MAINMENU_FILE_CREATE_FILTER, MAINMENU_FILE_EXIT, MAINMENU_FILE_PREFERENCES, MAINMENU_LOG_EVENT, MAINMENU_IMPORT, PJMENU_FILE_PROPERTIES, PJMENU_RECONSTRUCT_FBP, PJMENU_RECONSTRUCT_FBP_REBIN, PJMENU_RECONSTRUCT_FOURIER, PJMENU_CONVERT_RECTANGULAR, PJMENU_CONVERT_POLAR, PJMENU_CONVERT_FFT_POLAR, PJMENU_CONVERT_PARALLEL, PJMENU_PLOT_TTHETA_SAMPLING, PJMENU_PLOT_HISTOGRAM, PJMENU_ARTIFACT_REDUCTION, IFMENU_FILE_EXPORT, IFMENU_FILE_PROPERTIES, IFMENU_EDIT_COPY, IFMENU_EDIT_CUT, IFMENU_EDIT_PASTE, IFMENU_PLOT_ROW, IFMENU_PLOT_COL, IFMENU_PLOT_FFT_ROW, IFMENU_PLOT_FFT_COL, IFMENU_PLOT_HISTOGRAM, IFMENU_VIEW_SCALE_AUTO, IFMENU_VIEW_SCALE_MINMAX, IFMENU_VIEW_SCALE_FULL, IFMENU_COMPARE_IMAGES, IFMENU_COMPARE_ROW, IFMENU_COMPARE_COL, IFMENU_IMAGE_SCALESIZE, IFMENU_IMAGE_ADD, IFMENU_IMAGE_SUBTRACT, IFMENU_IMAGE_MULTIPLY, IFMENU_IMAGE_DIVIDE, #ifdef wxUSE_GLCANVAS IFMENU_IMAGE_CONVERT3D, #endif IFMENU_FILTER_INVERTVALUES, IFMENU_FILTER_SQRT, IFMENU_FILTER_SQUARE, IFMENU_FILTER_LOG, IFMENU_FILTER_EXP, IFMENU_FILTER_FOURIER, IFMENU_FILTER_INVERSE_FOURIER, IFMENU_FILTER_FFT, IFMENU_FILTER_IFFT, IFMENU_FILTER_FFT_ROWS, IFMENU_FILTER_FFT_COLS, IFMENU_FILTER_IFFT_ROWS, IFMENU_FILTER_IFFT_COLS, IFMENU_FILTER_MAGNITUDE, IFMENU_FILTER_PHASE, IFMENU_FILTER_REAL, IFMENU_FILTER_IMAGINARY, IFMENU_FILTER_SHUFFLENATURALTOFOURIERORDER, IFMENU_FILTER_SHUFFLEFOURIERTONATURALORDER, PHMMENU_FILE_PROPERTIES, PHMMENU_PROCESS_RASTERIZE, PHMMENU_PROCESS_PROJECTIONS, PLOTMENU_FILE_PROPERTIES, PLOTMENU_VIEW_SCALE_MINMAX, PLOTMENU_VIEW_SCALE_AUTO, PLOTMENU_VIEW_SCALE_FULL, GRAPH3D_VIEW_WIREFRAME, GRAPH3D_VIEW_COLOR, GRAPH3D_VIEW_LIGHTING, GRAPH3D_VIEW_SMOOTH, GRAPH3D_VIEW_SCALE_AUTO, GRAPH3D_VIEW_SCALE_MINMAX, GRAPH3D_VIEW_SCALE_FULL, RECONSTRUCTION_THREAD_EVENT, NEW_IMAGEFILE_EVENT, NEW_PROJECTIONFILE_EVENT, }; #endif ctsim-6.0.2/src/threadraster.h0000644000175000017500000000615111240454454015306 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: threadraster.h ** Purpose: Header file for threaded rasterizations ** Programmer: Kevin Rosenberg ** Date Started: February 2001 ** ** This is part of the CTSim program ** Copyright (C) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #ifndef _THREADRASTER_H #define _THREADRASTER_H #ifdef HAVE_WXTHREADS #include #include #include #include "timer.h" #include "backgroundsupr.h" class Reconstructor; class ImageFile; class PhantomFileDocument; class RasterizerWorker; class ImageFileView; class RasterizerSupervisorThread : public SupervisorThread { private: PhantomFileView* m_pPhantomView; const int m_iNX; const int m_iNY; const int m_iNSample; const double m_dViewRatio; const wxString m_strLabel; public: RasterizerSupervisorThread(PhantomFileView* pProjView, int iNX, int iNY, int iNSample, double dViewRatio, wxChar const* strLabel); virtual wxThread::ExitCode Entry(); virtual void OnExit(); }; class RasterizerSupervisor : public BackgroundSupervisor { private: PhantomFileView* m_pPhantomView; std::vector m_vecpChildImageFiles; PhantomFileDocument* m_pPhantomDoc; const int m_iNX; const int m_iNY; const int m_iNSample; const double m_dViewRatio; const wxString m_strLabel; public: RasterizerSupervisor (SupervisorThread* pThread, PhantomFileView* pProjView, int iNX, int iNY, int iNSample, double dViewRatio, wxChar const* pszLabel); virtual BackgroundWorkerThread* createWorker (int iThread, int iStartUnit, int iNumUnits); virtual ~RasterizerSupervisor (); void onDone(); ImageFile* getImageFile(); }; class RasterizerWorker : public BackgroundWorkerThread { private: PhantomFileView* m_pPhantomView; ImageFile* m_pImageFile; int m_iNX; int m_iNY; int m_iNSample; double m_dViewRatio; public: RasterizerWorker (RasterizerSupervisor* pSupervisor, int iThread, int iStartView, int iNumViews) : BackgroundWorkerThread (pSupervisor, iThread, iStartView, iNumViews) {} void SetParameters (PhantomFileView* pPhantomFile, ImageFile* pImageFile, int iNX, int iY, int iNSample, double dViewRatio); virtual wxThread::ExitCode Entry(); // thread execution starts here virtual void OnExit(); }; #endif // HAVE_WXTHREADS #endif // _THREADRASTER_H_ ctsim-6.0.2/src/tips.h0000644000175000017500000000252611240454454013577 0ustar kevinkevin/***************************************************************************** ** FILE IDENTIFICATION ** ** Name: tips.h ** Purpose: Header file for user tips ** Programmer: Kevin Rosenberg ** Date Started: February 2001 ** ** This is part of the CTSim program ** Copyright (C) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as ** published by the Free Software Foundation. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ #include class CTSimTipProvider : public wxTipProvider { private: static const char* const s_aszTips[]; static const size_t s_iNumTips; size_t m_iCurrentTip; public: CTSimTipProvider(size_t currentTip); virtual wxString GetTip(); size_t GetCurrentTip(); }; ctsim-6.0.2/doc/0000755000175000017500000000000013254524615012424 5ustar kevinkevinctsim-6.0.2/doc/ctsimfig3.eps0000644000175000017500000001403710667176710015036 0ustar kevinkevin%!PS-Adobe-2.0 EPSF-2.0 %%Title: ctsimfig3.eps %%Creator: fig2dev Version 3.2.3 Patchlevel %%CreationDate: Mon Jan 22 20:02:56 2001 %%For: kay@flay.here (Ian Kay) %%BoundingBox: 0 0 315 400 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 400 moveto 0 0 lineto 315 0 lineto 315 400 lineto closepath clip newpath % Fill background color 0 0 moveto 315 0 lineto 315 400 lineto 0 400 lineto closepath 1.00 1.00 1.00 setrgbcolor fill 7.0 389.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin %%Page: 1 1 10 setmiterlimit 0.06000 0.06000 sc % Arc 7.500 slw n 1805.7 2587.0 189.1 -28.4 66.2 arc gs col0 s gr % Polyline [15 45] 45 sd n 1545 1905 m 2325 0 l gs col0 s gr [] 0 sd /Symbol ff 210.00 scf sf 2047 2767 m gs 1 -1 sc (a) col0 sh gr /Palatino-BoldItalic ff 300.00 scf sf 3125 840 m gs 1 -1 sc (l) col0 sh gr /Palatino-BoldItalic ff 210.00 scf sf 3223 915 m gs 1 -1 sc (p) col0 sh gr % Polyline n 2720 697 m 2810 697 l 2847 862 l 2885 592 l 3110 585 l gs col0 s gr /Palatino-BoldItalic ff 300.00 scf sf 2892 847 m gs 1 -1 sc (2) col0 sh gr /Palatino-BoldItalic ff 300.00 scf sf 3365 877 m gs 1 -1 sc (/2 = f) col0 sh gr /Palatino-BoldItalic ff 210.00 scf sf 4212 1005 m gs 1 -1 sc (l) col0 sh gr /Palatino-BoldItalic ff 300.00 scf sf 3380 3052 m gs 1 -1 sc (l) col0 sh gr /Palatino-BoldItalic ff 210.00 scf sf 3478 3127 m gs 1 -1 sc (p) col0 sh gr % Polyline n 2975 2909 m 3065 2909 l 3102 3074 l 3140 2804 l 3365 2797 l gs col0 s gr /Palatino-BoldItalic ff 300.00 scf sf 3147 3059 m gs 1 -1 sc (2) col0 sh gr /Palatino-BoldItalic ff 300.00 scf sf 3620 3089 m gs 1 -1 sc ( = f) col0 sh gr /Palatino-BoldItalic ff 210.00 scf sf 4129 3202 m gs 1 -1 sc (v) col0 sh gr /Palatino-BoldItalic ff 300.00 scf sf 3022 2065 m gs 1 -1 sc (l) col0 sh gr /Palatino-BoldItalic ff 210.00 scf sf 3120 2140 m gs 1 -1 sc (p) col0 sh gr % Polyline gs clippath 2850 2530 m 2910 2530 l 2910 2378 l 2880 2498 l 2850 2378 l cp 2910 1300 m 2850 1300 l 2850 1452 l 2880 1332 l 2910 1452 l cp eoclip n 2880 1315 m 2880 2515 l gs col0 s gr gr % arrowhead n 2910 1452 m 2880 1332 l 2850 1452 l col0 s % arrowhead n 2850 2378 m 2880 2498 l 2910 2378 l col0 s % Polyline n 2895 1750 m 2985 1855 l 2930 1840 l 3030 1965 l gs col0 s gr % Arc gs clippath 1510 1908 m 1569 1915 l 1588 1765 l 1544 1881 l 1529 1758 l cp eoclip n 2532.7 1963.8 992.9 -137.8 -176.1 arcn gs col0 s gr gr % arrowhead n 1529 1758 m 1544 1881 l 1588 1765 l col0 s % Arc [15 45] 45 sd n 2391.1 1912.5 851.1 -134.5 135.2 arc gs col0 s gr [] 0 sd % Polyline n 1947 1462 m 2345 990 l 2277 1162 l 2577 802 l gs col0 s gr % Polyline n 2982 1312 m 1805 2497 l gs col0 s gr % Polyline n 2135 2182 m 2720 2700 l 2540 2625 l 2877 2925 l gs col0 s gr % Polyline n 1790 1305 m 2397 1905 l gs col0 s gr % Polyline n 1665 2000 m 1205 2470 l 1370 2365 l 1060 2670 l gs col0 s gr % Polyline [15 45] 45 sd n 2405 1899 m 3258 1894 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 3255 0 m 3255 6292 l gs col0 s gr [] 0 sd % Polyline n 1535 1908 m 2388 1903 l gs col0 s gr % Polyline [15 45] 45 sd n 1545 1905 m 3240 6277 l gs col0 s gr [] 0 sd % Polyline n 4800 3975 m 4800 6300 l gs col0 s gr % Polyline gs clippath 4845 210 m 4755 210 l 4755 422 l 4800 242 l 4845 422 l cp eoclip n 4800 2400 m 4800 225 l gs col0 s gr gr % arrowhead n 4845 422 m 4800 242 l 4755 422 l col0 s % Polyline n 4650 6300 m 4950 6300 l gs col0 s gr % Polyline n 1790 1305 m 2990 1305 l 2990 2505 l 1790 2505 l cp gs col0 s gr /Palatino-Roman ff 210.00 scf sf 1734 2001 m gs 1 -1 sc 90.0 rot ({) col0 sh gr /Palatino-BoldItalic ff 210.00 scf sf 60 2812 m gs 1 -1 sc (dFocalPastPhm) col0 sh gr /Palatino-BoldItalic ff 210.00 scf sf 4875 3675 m gs 1 -1 sc 90.0 rot (detectors) col0 sh gr /Palatino-BoldItalic ff 210.00 scf sf 755 1975 m gs 1 -1 sc (source) col0 sh gr $F2psEnd rs ctsim-6.0.2/doc/ctsim-web.tex0000644000175000017500000000222010667176710015040 0ustar kevinkevin\chapter{The Web Interface}\label{webinterface}\index{Web interface}% \setheader{{\it CHAPTER \thechapter}}{}{}{\ctsimheadtitle}{}{{\it CHAPTER \thechapter}}% \ctsimfooter% \section{Overview} \ctsim\ can also be executed via a web browser. The Perl program \texttt{ctsim.cgi} takes projections of a standard phantom object, performs reconstruction, and then compares the rasterized phantom object with the reconstruction. The comparison is performed both visually by an image subtraction as well as by statistical analysis. The \texttt{ctsim.cgi} program is invoked from the HTML file \texttt{simulate.html}. \section{Requirements} \begin{itemize}\itemsep=0pt \item \urlref{Apache}{http://www.apache.org} or other CGI-compatible web server \item Perl (version 4.0 or higher) \item A client web browser than can display PNG files. Most current web browsers support PNG. \item A knowledgable system administrator. \end{itemize} \section{Installation} Installation is rather automatic on Linux and UNIX systems. The \texttt{configure} script needs to be given options that specify the directory for web pages and for CGI programs. ctsim-6.0.2/doc/equilinear.ai0000644000175000017500000035653710667176710015124 0ustar kevinkevin%PDF-1.4 %âãÏÓ 1 0 obj << /Type /Catalog /Pages 2 0 R >> endobj 2 0 obj << /Type /Pages /Kids [ 3 0 R ] /Count 1 >> endobj 3 0 obj << /Type /Page /MediaBox [ 206 296 406 496 ] /Parent 2 0 R /Rotate 0 /PieceInfo << /Illustrator 6 1 R >> /LastModified (D:20010228225046-06'00') /ArtBox [ 208.5 298.5 400.5 492 ] /Group 182 0 R /Thumb 185 0 R /TrimBox [ 206 296 406 496 ] /Contents 187 0 R /Resources << /ExtGState << /R1 4 1 R /R2 23 1 R /R3 33 1 R >> /XObject << /Fm1 25 1 R /Fm2 40 1 R /Fm3 48 1 R /Fm4 54 1 R /Fm5 58 1 R /Fm6 63 1 R /Fm10 82 1 R /Fm14 107 1 R /Fm18 178 0 R >> /Font << /F1 46 1 R /F2 88 1 R >> /ProcSet [ /PDF /Text ] >> >> endobj 4 1 obj << /SA false /OP false /op false /AIS false /ca 1 /CA 1 /BM /Normal /HT /Default >> endobj 5 0 obj << /CreationDate (D:20010212143412-06'00') /Creator (Adobe Illustrator 9.0) /Producer (Adobe PDF library 4.800) /Title (equilinear.ai) /ModDate (D:20010228225046-06'00') >> endobj 6 1 obj << /Private 7 1 R /LastModified (D:20010228225046-06'00') >> endobj 7 1 obj << /CreatorVersion 9 /ContainerVersion 9 /RoundtripVersion 9 /AIMetaData 8 1 R /AIPrivateData1 9 1 R /AIPrivateData2 10 1 R /AIPrivateData3 12 1 R /AIPrivateData4 14 1 R /AIPrivateData5 16 1 R /AIPrivateData6 18 1 R /AIPrivateData7 20 1 R /NumBlock 7 >> endobj 8 1 obj << /Length 1445 >> stream %!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 9.0 %%AI8_CreatorVersion: 9.0 %%For: (Kevin Rosenberg) ( ) %%Title: (C:\\ctsim\\doc\\equilinear.ai) %%CreationDate: 2/28/2001 10:50 PM %%BoundingBox: 208 298 401 492 %%HiResBoundingBox: 208.5 298.5 400.5 492 %%DocumentProcessColors: Cyan Magenta Yellow Black %%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0 %%+ procset AGM_Gradient 1.0 0 %%+ procset Adobe_ColorImage_AI6 1.3 0 %%+ procset Adobe_Illustrator_AI5 1.3 0 %%+ procset Adobe_pattern_AI5 1.0 0 %%+ procset Adobe_cshow 2.0 8 %%+ procset Adobe_shading_AI8 1.0 0 %AI5_FileFormat 5.0 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) %%+ Options: 1 16 0 1 0 1 0 0 0 0 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 2 3 4 %%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 () %AI3_TemplateBox: 306.5 395.5 306.5 395.5 %AI3_TileBox: 219 -283 805 483 %AI3_DocumentPreview: None %AI5_ArtSize: 200 200 %AI5_RulerUnits: 2 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI9_OpenToView: 23 607 2 1345 943 26 0 1 11 225 1 0 1 1 1 1 %AI5_OpenViewLayers: 7 %%PageOrigin:219 -283 %%AI3_PaperRect:-13 779 599 -13 %%AI3_Margin:13 -13 -13 13 %AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 0 %%EndComments endstream endobj 9 1 obj << /Length 9666 >> stream %%BoundingBox: 208 298 401 492 %%HiResBoundingBox: 208.5 298.5 400.5 492 %AI7_Thumbnail: 128 128 8 %%BeginData: 9068 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD3CFFA87DFD0BA87DFD04A8FD68FFA8A87DA87DA8A8FD11FF7D7D %7DA87DA8FD5FFFA87D7DA8FD1CFFA8A87DA8FD59FF7D7D7DFD24FFA87D7D %A8FD52FFA8A87DFD2AFFA87DA8FD4EFFA87DA8FD2EFFA87D7DFD4AFFA87D %A8FD33FF7DA8FD46FFA87DFD37FFA87D7DFD43FF7DA8FD3BFF7DA8FD3FFF %7DA8FD3EFF7D52FFFFFF7DFD39FF7DFD3FFF7D7D27FFFF7DF8FD37FF7D7D %FD3DFFA87D7DFF7D27FFFFF8F87DFD35FF7DFD3EFF7D7DFFFFFFA827FF52 %27F827FD33FFA87DFD3DFFA87DFD05FF7D27A8A8FFA87DA8FD31FFA8A8FD %3CFFA87DA8FD06FFA827FFFFFFA8FD32FF7DA8FD3CFF7DA8FD08FF7D27FF %FFFFA8FD04FF7DA8A8FD2AFF7DFD3CFFA87DFD0AFFA827FFFFFFA8FFFFA8 %A8A87D7D7DFD28FF7DFD3BFF7D7DA8FD0BFF527DFFFFFFA8FD08FF7DFD26 %FF7DFD3AFFA87DFD0EFF7D52FFFFFF7DFFFFFF52A8FD29FF52FD39FFA87D %7DFD0FFF527DFFFF7DFFFFFF527D7DA8FF52FD25FF7DFD39FF7DA8FD11FF %7D52FFFFA8FFFFFFA8A8FFFFA87DFD24FF7DA8FD37FFA87DFD13FF527DFF %FF7DFFFFFF7D7DA8FFA87DFD23FFA8A8FD36FFA87DA8FD14FF7D52FFFFA8 %FD04FFA87D7DFD24FFA8A8FD35FFA852FD17FF527DFFFF7DFD06FFA852A8 %FD22FF7DFD35FF7DA8FD18FF527DFFFFA8FD05FF7D7DFFA8FD21FF7DFD34 %FF7DA8FD1AFF27A8FFFF7DFD05FF7DA8527DFD20FFA8A8FD32FFA87DFD1C %FF277DFFFFA8FD05FFA8A8FF7DFD20FF7DFD31FFA87DA8FD1DFF27A8FFFF %7DFFFFFFA8FFFF7D527DFD1FFF7DFD31FF7DA8FD1FFF52A8FFFFA8FD04FF %7DA8FD21FF7DA8FD2EFFA87D7DFD21FF27A8FFFF7DFD05FF7D7D277D7DFD %1CFFA87DFD2EFF7D7DFD23FF52A8FFFFA8FD05FF7D7DFD1FFF7DFD2DFFA8 %7DFD25FFF8A8FFFF7DFD05FF527D527DFD1DFFA8FD2BFFA87DA8FFFFFFFD %08A8FD1BFFF8FFFFFFA8FD05FF527DFD1EFF7DFD2BFF7DA87DA87DA8A8FD %08FFA87D7D7DA8FD16FFF8FFFFFF7DFD05FFA87D52A8FD1BFFA8A8FD29FF %7D52A87DFD11FFA87D7DFD14FFF8FFFFFFA8FD05FF7DA8FFA8FD1BFF7DFD %28FF7D7D7DFD17FF7D7DA8FD11FFF8FFFFFF7DFD05FF7D7D277DFD1BFFA8 %FD26FFA852A8FD1BFFA87DFD10FFF8FFFFFFA8FD05FF7DA8FF7DFD1AFF7D %FD25FFA87D52FD1FFF7D7DFD0EFFF8FFFFFF7DFD05FFA87D527DFD19FFA8 %A8FD24FF7D7D7DFD22FF7DA8FD0BFFA8F8FFFFFFA8FD04FF7D527DA8A8FD %19FF7DFD23FF7D7D7DA8FD24FF7DA8FD0AFFA8F8FFFFFF7DFD05FFA8A852 %7DFD19FF7DFD21FFA87DA87DFD27FFA8A8FD09FFA852FFFFFFA8FD21FFA8 %A8FD1FFFA852FFA87DFD12FFA8A87DA87DA8FD11FFA87DFD08FFA827FFFF %FF7DFD21FF7DFD1EFFA87DA8FFFF7DFD10FFA852F8FD042752272727A8FD %0FFFA8A8FD07FFA827FFFFFFA8FD04FFA8A8A8FD1AFF7DFD1DFF7D7DFFFF %FF7DA8FD0EFFA827F852A8FD06FFA87DF8277DFD0EFFA8A8FD06FFA827FF %FFFF7DFFFFFF7DA87D7D527DFD17FFA8FD1CFFA87DFD04FF7DFD0FFF7DF8 %7DFD0CFF7D2727FD0EFF7DFD06FFA852FFFFFFA8FD05FFA8FFFFFFA8FD16 %FF7DFD1AFFA87DA8FD04FFA87DFD0EFF52F8A8FD0EFFA85227FD0EFF7DFD %05FFA827FFFFFF7DFD05FF52FFA8A8FD17FF7DFD19FF7DA8FD06FF7DFD0E %FF5227FD12FF52F8FD0DFFA8A8FD04FF527DFFFFFFA8FD05FF7DA8FF7DFD %16FFA8A8FD16FFA87D7DFD07FF7DFD0EFF5227FD14FF52F8FD0DFF7DFD04 %FF7D52FFFFFF7DFD05FFA87D27A8FD16FFA8FD16FF7DA8FD08FFA8A8FD0D %FFA8F8FD16FF5227FD0DFF7DFFFFFF527DFFFFFFA8FD06FF7DFD18FF7DFD %14FFA87DFD0AFF7DFD0DFFA8F8A8FD16FFA8277DFD0CFFA8A8FFFF7D52FF %FFFF7DFD06FF7DFD18FFA8FD12FFA87DA8FD0BFF7DFD0DFF2752FD06FF52 %52FD08FF7D527DFD05FF7D27FD0DFF7DFFFF527DFFFFFFA8FD04FF7D7D27 %527DFD16FF7DFD11FF7DA8FD0CFF7DFD0DFF7DF8A8FD05FF5227277DFD06 %FFA8272752A8FD05FF277DFD0CFF7DA8FF7D52FFFFFF7DFFFFFFA8FFFF7D %FD17FFA8FD10FF7D7DFD0EFFA8FD0DFF5252FD06FF52275252FD06FFA827 %5227A8FD06FFF8FD0DFF7DFF277DFFFFFFA8FFFFFF7DFFA8A8FD17FFA8FD %0EFF7D7DA8FD0EFFA8FD0DFFA8F8FD06FFA8FD0427FD06FF522727277DFD %06FF527DFD0CFF7DFF277DFFFFFF7DFFFFFFA87D527DA8FD16FF7DFD0CFF %A87DFD11FF7DFD0DFF5252FD06FF7D52275227FD06FF7D2752277DFD06FF %7D27FD0CFFA8A827A8FFFFFFA8FD05FFA87D7D52A8FD14FF7DFD0AFFA87D %A8FD07FFA8A852FD08FF7DFD0DFF27A8FD06FF7DFD0427A8FD05FF522727 %2752FD07FFF8A8FD0CFF7D277DFFFFFF7DFFFFFFA8FD05FF7DFD14FFA8FD %09FF7DA8FD08FF7DFF7D7D52FD06FFA8FD0EFFF8FD07FF7D52275227A8FD %05FF7D2752277DFD07FF5252FD0CFFA827A8FFFFFFA8FD04FF7DA8FFFFFF %A8FD14FF7DFD07FF7D7DFD05FF527D7D52FF7DFFFFFF52FD06FF7DFD0DFF %5252FD07FFA8FD0427FD06FF5227272752FD07FF7D27FD0CFF7D277DFFFF %FF7DFD05FF5252527DA8FD14FFA8FD05FF7D7DA8A87DA87DFF52A8FF527D %FF7DFFFFA8A8FD06FFA8FD0DFF527DFD07FFA852275227FD06FF7D275227 %7DFD08FFF8FD0DFF27A8FFFFA8FD1FFFA8FD04FF52A8FD05FF7DFF7D7DFF %27FF7DFFFFA87DFD07FF7DFD0DFF27A8FD08FF27272752FD06FF7D272727 %A8FD08FFF8A8FD0CFF27FFFFFFA8FD1FFFA8FFFFA8A8FD06FFA8A8FFA8FD %057DFFFF527D7DFD06FFA8FD0DFFF8FD09FFA82752A8FD07FF275252FD09 %FF27A8FD0CFF52FFFFFFA8FD1EFFA8FF7D7DFD07FF7DA8FD13FF7DFD0DFF %F8FD0AFFA8A8FD08FFA87DFD0AFF277DFD0CFF52FFFFFFA8FD1EFFA852A8 %A8A87DA8A8A87D7D7DA87DA8A8FD0FFFA8FD0DFFA8F8FD20FF527DFD0CFF %52FFA8FF7DFD1EFF7DFF525252FD0AFFA87DA87DA87DA87DA87D7D7DA87D %A87D7D7DA87DA8FD09FFA8F8FD20FF7D52FD0CFF7DFFFFF8272727FD1CFF %7D5227F87DA8FD19FFA8FD04FFFD09A87D52FD04A87DFD04A8FD17FF527D %FD0CFF7DFFFF7DF8F8A8FD1CFF7D52F8277D7D52A87DA87DA87DA87DA87D %FD0EFFA8FD0EFFF8FD09FF7DA87DA87D7D7DA87DA87DA87DA87DA87DA87D %A8A8FFFF7D52FD0CFF7DFFFFFF2752FD1DFFA8A8A8F8A8FFFF7DFD09FFA8 %A87DA87DA87DA87DA87DA87DA87DA8A8FD0CFFF8FD0EFFA8A8FD0EFFA8A8 %277D7DA87DA8A8A87DA8A8A87DA87DFFFFFF52FD1FFFA8FFFFA8FFFFFF7D %7DFD16FF7DA87DA87DA87DA87DA87DA87DA827A87DA8FD0CFFF87DFD04FF %5252FD09FF277DFD0CFF52FD23FFA8FD08FF7DA8FD14FFA8FD0DFF52A8FF %FFA8A8A87DA8A8A87DFD04A827F8527D7DF8F8A8FD09FFF8FD09FFA87DFF %FF52FD23FFA8FD09FFA87DFD13FF7DFD05FF7DFD07FF527DFD0EFFF8F852 %A852F8F8A87DA87DA87DA87DA87D277DA87DA8FD06FFF827A852FD23FF7D %FD0BFF7DA8FD11FFA8FD04FF52FD08FF7D52FD07FFA8FD05FF7D7DFD04FF %A8277DFFFFA8FD05FF7D27FFFFFFA8A87DA87DA87D27F8F827FD23FFA8FD %0CFF7D7DFD10FF7DFFFFFFA852A8FD07FFA8F8FD06FF2752A8FD0CFFA8FF %52277DFD04FF277DFD09FFA8F8525252FD23FF7DFD0EFF7DA8FD0EFFA8FF %FFFFA87DFD09FF27A8FD04FFA85227A8FD0EFF7D527DFD04FF27A8FD09FF %A8FFFF7D52FD23FFA8FD0FFFA87DFD0DFFA87DFFFF7DA8FD09FF5252FD05 %FFA8FD11FFA8FD04FF7DF8FD0DFF527DFD23FF7DFD11FF7DA8FD0CFF7DFF %FF7DFD0AFFA827FD1CFF277DFD06FF7D7DFD04FFA87D52FD23FFA8A8FD11 %FFA87DA8FD0AFFA8FFFF52FD0BFF277DFD1AFFA8F8A8FD05FF52FFA8FD04 %FF7D527DFD24FFA8FD13FF7DA8FD0AFFA87DA8FD0BFFA8F8FD1AFF5252FD %06FF7DFD06FF7D7D52FD24FF7DFD14FFA852FD09FF7DFD0EFF5252FD18FF %A8F8FD07FF52A8A8FFFFFF7DA8277DFD24FFA8FD16FF7DA8FD08FFA8FD0D %FFA827A8FD17FF277DFD0DFF7DFF277DFD24FF7DFD17FFA87DA8FD06FF7D %FD0EFF7DF8A8FD15FF2752FD0DFFA8A8FF27A8FD25FFA8FD18FFA87DFD05 %FFA8A8FD0EFF5227FD14FF5227FD0EFF7DFFFF52A8FD25FFA8FD1AFF52FD %05FF7DFD0FFF5227A8FD11FF52F8A8FD0DFF7DFFFFFF27A8FD25FF7DFD1B %FF7D7DFD04FF7DFD0FFF5227A8FD0FFF2727FD0EFFA87DFFFFFF52A8FD25 %FFA8A8FD1BFFA87DA8FFFFA8A8FD0FFF52F852FD0CFF7DF852A8FD0EFF7D %FD04FFF8FD27FFA8FD1DFFA87DFFFF7DFD10FFA852F87DA8FD07FF7D2727 %A8FD0FFF7DFD05FFF8FD27FF7DFD1FFF7DA8FF7DFD11FFA85227F8FD0527 %F8527DFD10FFA8A8FD05FFF8FD27FFA8A8FD1FFF7D7DFF7DFD14FF7DFD04 %A8FD12FFA87DFD06FFF8FD28FF7DFD20FFA87D7D7DFD29FFA87DFD07FFF8 %FD28FF7DFD22FFA87D7DFD27FFA87DFD08FFF8FD29FF7DFD23FF7D7DA8FD %24FF7DA8FD08FFA827FD29FF7DFD24FFA87D7DFD21FFA87DFD0AFF7D52FD %29FFA8A8FD25FF7D52FD1FFF7D7DFD0BFFA827FD2AFF7DFD26FFA852A8FD %1CFF7DFD0DFFA852FD2AFFA87DFD27FF7D7D7DFD17FFA87D7DFD0EFFA827 %FD2BFF7DFD28FFA87D7DA87DFD11FFA8A87DFD11FF7D52FD2BFFA8A8FD29 %FF7D7DFF7DA87DA8A8FD08FFA87D7D7DA8FD13FF7D52FD2CFF7DFD2BFF7D %FD04FFFD07A87DA8A8FD17FF527DFD2DFF7DFD2BFF7D7DFD23FF7D52FD2D %FFA8A8FD2BFFA87DA8FD21FF527DFD2EFF7DFD2DFFA87DFD20FF5252FD2F %FFA8FD2EFF7DFD1FFF27A8FD2FFF7DFD2FFF7D7DFD1DFF277DFD30FF7DFD %2FFFA87DA8FD1BFF27A8FD31FF52FD30FFA87DFD1AFF277DFD32FF7DFD31 %FF7DFD19FF27A8FD32FFA8A8FD31FF7D7DA8FD16FFF8A8FD33FFA8A8FD32 %FF7DA8FD15FFF8FD35FF7DA8FD32FFA87DFD14FFF8FD36FF7DFD34FF7DA8 %FD12FFF8FD37FF7DA8FD33FFA87DA8FD0FFFA8F8FD38FF7DA8FD34FF7DA8 %FD0EFFA827FD39FF7DA8FD35FF52FD0DFF7D27FD3AFFA8A8FD35FF7DA8FD %0BFFA827FD3BFFA87DFD35FFA87DA8FD09FF7D27FD3CFFA87DFD36FFA87D %FD08FF7D52FD3EFF52A8FD36FF52A8FD06FF527DFD3FFF7DA8FD36FFA8A8 %FD05FF7D52FD40FFA87DA8FD35FFA87DA8FFFFFF527DFD42FF7D7DFD36FF %A87DFFFF527DFD44FF7DA8FD36FF7DA827A8FD45FFA8A8A8FD35FFA852A8 %FD47FFA87DA8FD32FFA87D7DFD4AFFA87D7DFD2FFF7DA8FD4EFFA87DA8A8 %FD29FF7D7DA8FD53FFA87DA8A8FD23FF7DA87DFD59FFA87D7D7DFD1CFFA8 %7D7D7DFD60FF7DA87DA87DFD12FFA87DA87DA8A8FD68FF7DA87DA87DA87D %A87DA87DA87DA87DA87DA8A8FD30FFFF %%EndData endstream endobj 10 1 obj << /Filter [ /FlateDecode ] /Length 11 1 R >> stream H‰ìïoë¸í{þÚ‡Zl­b;I“`_’6í²»þ@›Þöîu([M„Ú–Ÿ,·/ï¯IÉ?ò®Eï† +[¢HФHŠþáO7wGÓD¯äQtÜcû{?üpj¤°ÚL¡Ù"M«ÒDܲñq‰¦‹Ñ£'üYšRé|R/#ïÁòEåìV—2_I³>dìW—ʦÖO'±-UöðèøáA~©Tªr)̱P‡ øLX`y8âa¯° 7ôØÍ%ÒÌt•'*_ÏôW éX8±>õÇ!®ÿMÝÊò{¢ã’Á³ßëáÓ‘žé¸ÊdnoŒŽeYžêT›rÂN·"g—b +‚}’iª_Ù,ñs—ç\çh/·F‰äèVg"Çå?³»m¶Ò©/U&Ë£…©Š»ÌWR&2ùD€©º2 ü„`D)­;ÂÇT¾È4|œ.,8YÏ Û¥±ÛB¯(6[O×cÁwt—F$ 6¤õ7åß8 ä .z›®V~Ãw a­4y£Õ›Dq¹s ayôÖr¹ cÔÈyç*•®™°lp쑳ྠàôqLø“G2êNZ ’ÀŤÇíŬ/€%8ø|+׊̃þס˘¡}' á@Ø„A@³tÕ™|UjÝž¬¥‚¡=dάë1%q a£ÀÿF ¢†£ÿ[²_p²ˆõÝ>77g¸Gè†=Ö‡œ~ÅÖÂ)‰\ʬH!k)á¢Þ’,ðÙŽkR8——Á˜…£ˆz’£È¯·Y õD¾NؕΥ?½©±wêÖ†^}[¥ÒÜç Ó)$ÜØ9þR'2PX{öóTÐQv¬¢§§X ³–Ó*­,•¸Q³ËU•ý$¶KDà7¹.d¾Ô?“ša^;AEàºq?b¡;¯¼üÁxȼµÔ<‰¹k£Ö*ŸÔr±=ÞˆBš[ÛÉQ±““1Œ"h.A{àƒÅ#ÿ "ÊF%m$Ÿ„lädüñ¨ó×?o#x Ò1÷á?Ï“Sáù”T!èsȇT¯qºÈã´Jd]–~KUú€å½"õ>Û›5ëƒ]Þ+a°½[Ñ>à{³À}Àó]½û€ú­ò‡g×DDUìï}Þß‹ÆüK¥­,+•l<äàõ Ôë,¬D)ùøJ囬nIU” b‚'b½–Æ¿`ÇÊ@F?¥ò+‡øµ]•"Oø],ŒÎùš’Ê'˯ç,èœlD€<CBll³%‘Ö·´ªk¹ÌQn¸ÌèeUšH”ÈL¸¿yùݦŽYKžhhRÊR±`0æŸ z X\2^"/ û<®Œ‘y¼…ɯŒ~†6GÀM G¼¦ç±.¶^¦Ižd¦rhpXprp»ŠEškË7Ûb#snèÂÆ„g"FµÀ­p6¼€¨ΪäöU—8MiÃíÆHÙÌD\Yɳ jÄ —Äñ$-–‰JS’ r6 P&ʸJI£Ñ¿TÂ7"}r{xdÉ‚qȧ jêvœvNsêü;m¬Ÿ¢|:ç§^>'v>'f2ï°Ï¾…£Z¸-šEC3·~E‚˜kÇpí®; ×N§ë†/ƒ Vé–_—)ÆÄ}mнc¾ï0ß7\ŸÜâr£ D‹„~!‡P+¹p‹ÚÑánkÑä!y\»C:vé¤Ë–DɆO9*å¨Tg ÕÐHpGî6ÔŽ\×:éƒö$ _¢^"œ3*ÇZ¹ª}ª†gë–-9c[£÷÷–sw‘ þþ¸,áÎî\ÕÑ#Õ—yk¬CöØms¿ëy?óU¾Cênèå/û$JX-ÓUºå¶¿C ×Z7ög~ ™È'°÷ÿ£ÿdDõ£÷kœŠ Ã&W/P<x—çU¶ÂOÅuNXí fi ŠÖ+L¡¬@ú®AA㡜åÆív»AËïÔš¤.’Þ7{–ˆˆ[®‘àŸÈ{Sâó'`eDü,­?ÐÄÈ'md»RŸœô·‰‚¯IŒÎ9v´Ø ÁmH…Fx¬Ü1ÙxÈF·‚ðkïG«œ?` •~öÞHkod!{ãBÕD5È¥÷†%oTÍŽÔxEÞ‚¼ñ­õFݨP7à0µJ•)gý?SÿWFóŠÙmàsžn>ÌÄ: Ÿà|ò©ü ú0»E,õ®eiµÂ0S"ÓTz6ºž}*hÔbcôëJS¡±?ecÓìFMUÂI¢_sŠÝµ+,M#G#vùúPëY÷'Hnt¡ *íJ$(Å2QOh¶kpIe¼Á1°¡ÿõBà­^ rªÅFmÖÚÖœ”„êl]Þá îtõ¦Ðõ ½|˜œòRhý\ùl©DÞ¶ÃW }~üPñÃÎ!•[Âg™v[’ö {Tð…?¸-\V‚é€Ç^ÕÑAUêÐA€µeµrãšzµKë§™«´9}Eø‰Àò¿û8$F×—°èã¦{¯ͧC€“*¶mÃÑÖßEmßNÜÅæ'Ú4¡Nàò5ibõ7Ngî-Õßd¾–µq^Bc•ÈˣܼµÉÍ¡gõý1Ô—®-º3Šf¶²û;×ÑvæDÝ™7ôr‡šf™JºÓ–”„´IOöÕ^À‚SL;C’ZOˆ·ž¬vˆÖ0š¶–Ñ´kZKÞEtÛe‘» nÚ±¯¥nÍòý(÷miàêu—*“åÑŠTŬ;¡Ž»‹à;¤¿¹ãv;>‚ 7PT-}¼^ýc6Ë»>ã&ì`–‚çþÂþ±QV²[@‹ôpïM4貸ïóþ^¯þÿ+<ß_ð.„@b¸Qú;0èÀÐɇÁ$Ž{S3‚S€3‚9À9)áþB€  †'£` 0˜íï³à48˜ç¤f†aÐá0<…ãpÎÂÓð,œ‡ç ~QÔÑ0:‰FÑ8šF³è4:‹àË-:“‚þ¿Ù/›9n# ßè?ìÅ@r1úƒÍ Ðl6\r°9l¾È€$?OU‘==Ó#k#Hš2¼ÚÙé²X|ß§&7;ç¼ .ºÅ%·ºÍ·»Ê&'?{çƒ~ñÉg¿ùâ+›žÂ|a )ä°…`ÄqŽ>†¸Ä5n±ÄºŒË¼ø%.iÉKY*Û™“O1­iK;Å™W¿Æu]·µæ1»sÊ[®Û´ù-nëÛ7,”LÉܾìE›ª«¡Æšj®¥Ö·oþ¤=QkÝù}ãÝ•¿-|"TÏggžë°×}ß˾íy_÷D®¸‡Ý“uÞ§}܇RË^JÙJ.kIeá›#ßì‹+s™(û°Õmßʶmy[·´-¬/°J·Í¬v܆\óž «Ïye { Ù³§9OìÖ]뺯…½fvœÖ…öï¨ÂÄ!©¦=*“©OJ u TËQ³‰Ê K]vª¸QË•Š²F*¨¯£Êµb;ußbæç9 ç2ÑPC¨a…óÊaåä–9C§9Ñt¬ÑW¿sÆg½râ '¼§fzaôƒ«tF¡C2}’è—Hßxúg¦F7ÌuÞé®.[é6ÖHßúÏчý8L•Þ,ôh¦W=é^OÏôó8 c¥Ã ½žéûĈÜÏ͘¹#ã(*Àqr(9·‹²p÷÷‘/çZŒÃð¥'¾ôÄ—žøÒ¯ê ÷òÕ»ü‹1FïQczñò ý”y÷ôù×þÔØþ¬ ÷Ãs—?Ë“¹4F‚°¾9f’§Ôô—Ÿÿù½`’þ$ÛܹHphib8âÛ!æ²<‹@Æ[ËtGî’ïÃõ¯š±ç{ŒáÔ³µŒþ#^±ºSÎÓ®_áãùÉø°êÓ õxV‘UÈ»~ÌøÉÑvý<^[‹»Õ’ñ5{zó³ ãåó£¿Snƒí½AvÇk§hmX­P­@m8­0ýöÂô ¤£ï@ú¥×N?À´à40¾¬H`jEêtHeÐ0°^ZDUðzTÀž\쨘â ¤¹jcˆõŒh{…ãzVøÆ¹ð¹g;¿ÃH„,˜®‚=lر‹ÊÔ"ÓÆ„‰ ×ØId˜KÂdV¬fÃr ÆSuª±"¶†-ì)’N>¶bY¸V°°¨—ÙgÄØ(Ç61;ˆí‘”׆Âøcåà8Œ’¢b™ó ö€•&Róa̵`±x¸ÎS#¶;a¿ŽòáYØqdS²X!‰‹¼vŒ»Êä…‰X9C–>cì”›R2,ÁøÓ¾¶È|!X`!¯Ú£=€‹ñˆéˆùîá%ÈèïC;ø:³È CáçCͬj–'Xó[`ó!´ipƒÙ5¼Q¸yÄ›Ày@œ{Èi˜óöM3ê; uN°sÂðܧCŒ¯|:útøéøÓRêÔ!È0¨ƒz¢0d8ÔÈȠȰÈÀÈÐHá¨á‘’!’@RÇ$%¯j$°$¸dÀ$ÈdÐ$Ødà$è$ð$ød%%%Å®ÅÔ¦§¨©²*dR°´¸ X‚XY³ªª½„¦ªâAcÅ®MÑ+«& €%…°å ¯ø‹tÚÔ¬Ñ~ÇËîÁÞþ¨&afi†°è×™3Í1ªt3èvš˜!¨%haÔ±Oùb3³‡L™ËI˜MÌjbf‹ÞÊá‰]d=Ô¢\Õ6Ä8F=üYí£H =­²¡PbŽÖ»È¨•˜ FcŠ9` jbbbbUå_¤_dUÁ©ŸTâEÞMÚMÖ§•Œ*ê&è"æù!á&Þ&Û*ØÇTeòäTrf•© ¡õE—Ëþ*§Ø®8÷ß$w?É­IlSùnn.²Ç† Ô!ì!ï –*Š¡­³¯ñ´ÊËïWyYk[c~ˆõi¤K,—`j@=ô½K„½öGƳaÝÖ™Û·Ë“buȽX!b/Ö˜y±Î‰û*¶šÕjÅr"‚^8k±êˆ};º`W¥3•ì™{-Bé$‘ç™.‚œé6 'Œ°VzQÜ`ArEÁ6@3ñ¯’: ¤¤C>H&‡ZÚô˜T(ƒÞˆC"¹I7Ì*‹ cÅQ5DäPnèMo"¨ò§‡/’ÇÝDDèDàDÚLÒúô¸¨¢œÐ¾h—˜†¦ûaì‚ö¦[ŠãñÀÙ¥‰¦Am>ÀÖô¬ãíÐDx:”í¤mì댻7à½×¶ ÚfØ»êÿϵ2»´ZÈûa÷æà›9tcè–Pš¬'XÎã×Ýèe&p;/•=4çs ç‚<…J=AžÏsÜQØé¨ƒ–Ö êÜÎæœ!G§Î oXcÛn´é`ӱƠ¦áŒÁŒ¡Œ kT1Œ1ˆ‰ÀL ]öv×Kß¼ó»ÿzúÐx,¯#i¼Är ½3dL§XŸD¾Äv‰r‹†5vóî£>Ƶ(ãõÅ¢7åó%\Sí­Ê7Þ‰wÖðŽo¼³4ÞE`_xt “*½&ílª¥7Ö™”u:étÎY•s²Ž0Nç›Î6kUö•®$.:‡U¥œ‘¾›Eîé ³­§ïéLñ‡LŸrEéØª 1Ê"ée'ÔMgG1ú|UwÙè|±Êªl4r#f%$Ñå¤Ef\nNÖá p—!¥¦‰ 9%Ìk;kþU&0 à^ø1¦ðbóØËð2ÃËô2/_S͉óÄwoß|õîÕä_5û8.ò©0,çúa?¼DÿõÄŸÓ¿ò ËVʧ†IV4E/?†YÞ›Ú›q‘ÕrÞžGÍOßöiÏËwgúí«õÏþÝþþ‡o~ùþ‡Ÿ~|ÿöNþñï?½ïïýáåwß~“_¾ýþ§÷ûù_¿ûæîWv^òzbטN11Ü¡éøÎh×á­ÃX8LäÞFš‰ÒíÃÌC ÊÌC­£‡Ù†™Æ¬h%vafaV!F1ˆµE•±‚ªÖ Æ`¦ –Ð ¡ÛA7ƒnffÍÔ.Ùªòoâ/ÒoÂ/³jTü½ŠBWj³¨L¡£âV‡-Ï%ð0žæËM'Ët`CŸ&m’¼!C9ÍŽ† 'Tx>/N_áý³âUûU·æäwqîÝ[G»ç¡7Á?‰pñK‹ô4è[ŸÚðŽŒ÷7îñv ·ë4V±ëO=Tоƒ5>Vî¡jÚƒþ× ÔìÓÌÓ¬ÓŒÓlÓLÓ†™>—Ã(§œ8çnÍÍÍÅÍÍÍÍÍ Í Åé 5B³A3ÁE ÐìÏÌo<ŒÏlÏLÏ,Ï oêfY£ZÚ\39³¸€‚,èÈ hn¨ÊNC è„Ö8'à’ €º¢BZ´'ÖÈÕÁØ•òhUD³Ê•Q°‚ŽU®ïˆªÍ±Gã"€œP¼ 0ô¯ÂW#j8ãÿmd vB-3ªYÐΊ Œ øŒ¢z”5¢¯ Í@{áºUØkD…gôØ£ËNèuF»å.VíŒQ{Àé-ˆÚé,±¡H=ÚÿÊë2>aÆû±çcŸøOãÿ2ãÃè@Æë8ñYññŒÚã÷hAλÔö;ÂÔ¿è4¹éDi±a¿o­qÁ»æ Ú¸Öºk›Vϸ!ÀqÌ­ŠGèBduæsr2_Pµí õŒ÷VÞ“Ü‹æô-Û9ìÉó«‚8pP‡ t Ðr¬0ê3}ýíÙã©[XÆv1YÝ|ºr%’ÚŒS#uËz­·ÃfOz6ƒ&ÿóÕ· ¯Wþxރăt39$ãjs&û?‘Œë1ðq-|‹Ð c¼‹›ÑíXÜŒ½E¬-ckK›±3™÷ÄȰ±'&&“X˜ؤæÕ¸6ÝFìêßì—ÍÛ¶Å÷ò?x Ýú )²xx€DIEÖYv˜A ˜E’÷ÿ¿sÏ%©Ëžqš )`ß:±5×2yù;çˆX‰T‰P©L©H‰D‰@‰<‰8‰4eaRYZDi‘$¤ˆÑ)j!C"B=h†ø¨ô¨ð¨ìPt1JNG¹±™)4"3$FFäEÅ%Ÿìµ°Ô«3™HS¾ñXjÜŒŸ«?¢ã÷=ÿ’Ž™àÍ”ˆ£¼éHCó\Ó(+í†Äÿ5§—˜sЄ‚t%l6%nŽ)p̹N£‘iJCgL±Ó§ài=k97ŒŸc  !EPËÚ0†Î ¢‘Q4à,vŒ£†´FF›!I†RÜc ¦F£)2œ†ÓXâiWjS"ê˜BjH1Õæ êp «£ÄUØáÀ¸êR`mYçZÆVŸ‚«Ñ芼¨á5¦øŠ{LÖhˆE’ÔSõed›e·AVc¬†X™ °‘ñU£«c`•˜Z§™ØŒL–Îj+©W$™Èr©l)³«ö¬šK…Žß#*[âÒ™–Ÿ»Xƒ ͘Å{“ÛÎSo>ù@ä#‘ Q¾w9+K„C‘ØÞŠ-“ ÕŠ­LT¾‡)÷ñX­ò¶üêntÝò¬Í`¶åyp=Ž®–+e—Êb¢Ôø¦+³ÊÆRÙ’0+¬}RòHpCd˜R¬–­Üm.Ô%’‘e[’a„e™dÊ1¡X[A¯r0«Â\DʃR„ª°+dò ’‘*Ì^‘C M °§w„:öPxÈ#œ!c"ù"t¶Y„+B0gב)Bá‰Ðă$ÂP„ ‚?”Ê%GæÆ–W™‘¨Qý,iõgèøo0Aß½c‹š¹À0¬ýþˆéšquik1ušÕafqÀDŽ˜Ì¡¢Æœ¶˜V‹©Å”czó@”D€Xuž &`*˜˜ jèlËlà ½žù`€’ ßÎRƒe˜:¦…žyaL‰¡N™Á25xæ†Éabv¨™LÉ>%ˆ¸ÊÍ*Exæˆ,A„™i¢g1ð.Ž™"€sÅpÈuJ6å‹ƨ~©o’”á@#Ϥ10kLHóFËÄá"î )wŒLUʦ¤°ÉU#•¢.‰hЙҩ9wrû”s'!ý7³ Ó ó ¡3‘§b=»Éøéfãúd\Ÿ£ÉxÁ\ÈT`6n‹4›™è–yÀlMÄz&òTLŨ4Ũd«²2[ɲd“¸¶ÉXæLJ¬ËœU»ªfU>?ú÷Žß¥cž‰ f·ßÕÁT‘MZù1 ©Ôì‹ß°ÚT†eS9V—ʧ ©z-°oØTÜÕxPûk6…ŽWß¶Î>õ§é°¾­sÿÊÇó·Adâ2ŒžÀÒú7«¼¶¶üî¢éLAÓOË?Ó’í·4þ ÐYa§'°0¨=°êWÌà¶vq›˜ Žr0{ÚÔÀn èfhÊ#Þíˆw@½ò ¿Â¬M°‚€Ðà=cƒƒTHFÃð0ƒ²#Äd`„ðRc$j8ö$'zˆ“g¤°«Vb…Ã=2ZŒ´ñÂ3`XFŒ†!cf̈ A¢¤Ò2j4 3ãFdà-îBë;Z à´D‘á£güèRiS™SJ q» 2_"ÙqV[ƒ‘…â\FrÙ³r— ¯¼{U¶¶Ÿ¶íØÔQ×£Z®K‰Ž·wÚõØ;n{³«]ÖÐ1‹ù"àyŸ–NÇ}v½´Ïj¯Û6¶]|BÝ”Rä7$F-’@N” %Ç–{z  éQر&GæÆ·¢ÆW1Ãc¿Šˆ!¼5öÄPfã2/H á¨!ÄØ3c!ÆKyAbˆ¶c&”J å†/óÃ91ù-ÔmGtÜ#ë=²DÖ•¨ü)óRU?allNª>¥×êSs²ø½ªäòw¯_½yÿ²«‡ÏœCë‚\ÙÃ+õj^äׯ_§½<&+¿‰k®H׸u¯ë×¥ûj¬ÕOÿòm³¹¥K—hÌ»‘þup'=o¼¬\Ølìù‹S׺æÊºÊ¯/¬ò…›¦Ï^+=¸ä7ý[û~zzøãÓ‡‡O_Ò+Ãã_Ÿòk¿Ÿ~y÷åññïÓðáÓéíÛ__¿ÚþŽvíixÐyÉÿýçæ U_¬$šèØlj+‚—ŒÎ^¨=+H¡c ,{"o ö|#á7¥ØT‚5A((T ˆŠD"°¬*33 Q7Rq ‘ ø’ ÇŒF£`Q (H 'A!ðׄ΀_ ðu€ÞàÍø:-@×q ©€5 ¤õ€Ù Œà+\3€e±`«VUÀŒ!bð2&´ÜcÌ=ÆìcÌ}&î3qŸ‰ûL<7Ù“® †dÄ€‡Á`T!¨°í{lªÅÍØÆ€ 4¸‡Öc«,¶©ÂElN‡mi„[2b;6Âbjl€,¥—…o¹è\–[[–ZR¢.r^b]`ñÒy_´¼Ï/.òÕ²Ài‰Ë"ë2´"!-vG›bÓ’çÌ(ª$Ç™fGm&È!¥HM’Z¾$Êœ*S²,•ì:êOkƒÖÖeÓ·y÷™¸ÏÄ}&ž›‰l0þÄlœ¤ê“þ¿9YüRUòþ»×¯Þ¼¿ðöð9ÿ¥¼)Å·Lõ›±»¿=¸`ùëM㫟ªŸ9Œx»kßOO|úððññéKzexüëãS~í÷Ó/ïþ÷ôéãçÇ__¿*?¢‰; üÞ8tÕ#õ¶ÆTúU«¸¬²° W–×p‰-—Y Û‰åÖ²´hêÝõúâÝŽ«7ôð— æ"]%Û}¹Lúw)ý{I5ÝÎÌ/„Œ€l 9I¦IA³‚¤…¥êUU«Q,‹}£yë&ÆÍ0kX° Š\jZ°­ûÍþWp‹±hÎ Ñ?yÛ-|W™ç–†Kžã=ÀpŒìÖMòüx¼~uÛ€\|­Ýe݇ÞIŸî‡…ŽÃêÞÆRS©üÐß–+â¦R¿Žv÷ÎxXÓA]x ã7~<ßqce¾öQŸ:¼úOê+;6—‹®©öÆ2ç…Ž¯Ò æçõr{^£ãžÙ×ȽØË­Å\lf¤É·F“lÍ&³˜³yæ9ˆ<ŧ×ñ´¶%cN̘Cɘš/5júSîCêƒñÑÔg˜øëpl&H^„2öPH#å ˜ÊÙªÚEPÖ ë¡´Šk ¼ öG|‚&GhsöÐjÍ6Ðî^T=BÝ{¨¼‡Ú;¨¾ú7p1ÁD¸ƒ.÷¿àà üCüW@ˉŽð=|†‡ßpp¤HTÀÏgáPz8C뜅{iášk‡{¦&}´|N€ãéà|,P 'Tc,fü4À+8¦ÎÉÂAµÀ}ä5ÃŒpXœVhqð]ŽLoÁ÷™l&õ#@ÔÀSD'ZêKE=©V¢`Úæ¨)b&rÔøçSô3 |õyæ¹ÐqÍ÷Ìöÿ³_5=’ÛFô¾Àþ‡¹H.QE1è3È9È)ÃÀ. ²'ÿyõªHQjõlÏd`ç0*Øcw«Kùê}ô…Ï=uÂN6jÈBM™ /ÉœL¤³ †Ïìàš$PAÐB_$(IôL½a©£“j)¿x¸­Vh1d ¶]‚/E˜`LQÖR¾’újh¼)âsX#q'ÈSìy&'CE‘ …‚CE¢`QÑ(xTD:Jñ˜”ÜŰ)èT| B£‚RÅiËD×PàVë V1 ÔÜ r»‚^â—V ŠÇ‚dŲ Yñ,ˆVL;!„3AöJß=Ó†pÁ8P~AÎ4•‰LiíŠCeMoŠëú+ ícŸ‹.õZH¨¹Ó™ÐÏ]†’SË8_³Žóõ0_Ž2FX†™ã\†YÆyæ}”dXÔV‡™„®Ã¬ã¬=”=À[–qVK§Õkç+‹u6Xµ…ëÏÎŒ[[†ß©¾œP}-Vs©ÉŠf´²«ÃÝ*¶Ø™[#ðsÇ|¼Éý:ËÅ÷r|µ:«¾GR_jVíÀŠ=bϪ+LmV•¬ÚkûCRÍ9USª&TI§8fˆ™Éa³Ì y¡'Œ’åqÇÛ‹°Y(q7Y(9!£`"šñØÄUâá€ñ†.ìÇn@^² * •$ЂœìG:ÚÊ|¤BìJéÙx˜í" ül;v²ŠéP˱)ï†ÃW E~‚ñPŽŠ?)C)?¥³QsTe8X`)°Vf*µ-#fcœµš ™‹IÆ`bGÔ“)—IáØÉhkaµÉ˜M¸m(ü̬xý™°GI™Ž^…ã–&c=e¾dì—+îfÆÖRVC~͵–Ún«Ê ¶$iƒŽrqcø®Þy¯þ¢bUCUºw%ì£Öd5WµX­V[®"j®”- gØú|éI†R½U´¬’ÕXj²š©eø7#µZ©ŒìRÔ-éì±\Á Ûу‘xk “® (€Uº<èêª2C3¡°ÍË—Fz‰"GýP@GÌÁhEf«…µZ G5U¹ªOÐöþT]]†³Fé¯ït¬ç^Â=Ù0t çôy‘7S©ñ”0-_Ú(¢˜4ת¶ºª%ÖW™'çEü€.ø×(!×á”\¬ª¿S™R¤cM+·Ä²±Ìf§¦B/éD.»e=šÞÚöÖûßêQóqY¦¢Š3Ç“îxŽ‘'6òtä,6îvËý Ü«T;‚tgðJbs¤°Ž„…·1:I=B5i¥%}’Å@j˜H+‡ÞqÌ;m5‡£Œá^9ÂŽ£Ûq\uT‡sæ8n¾–Cz¹"¤.!L¾¹dÃf;ð&¬/¸ªC‹if€XŽÍiGœÁ†£qxi ˆ.¸r› »2ÔÞxŒl롈·†TG§uòZg·Uû­£ã¢ç‚aP×U|sgö]»óRï53½fÿµ;°ìÁàÂhjć™+^LÝXwi Ô“©+kÌòg³y7&M=š¸4ñi }û–ÝÚs¯éaÇ n˜psb6è™<ÝC§¿Ð·ôjêӺʣ™Cë¤iK2êGËí¾?w6aƒ+‡†í‡Cö;LëÑ¥áì> ³¼;µ1%sk=À nÍ¿µlŠk vÏ–]Ûb¾M\ÛHfçÖï¶š{Å¿AI²‡+)ó”3÷¤)>N´nϚǴI?‡SGW§Îµ8º=uª›ËN.»¸ÅüÛ¸»7Ð@¨¼[S’hvm£9¶ìײ[s‡Dº…bâtȤ™3æÔSç‚í"Gæì˜³A¹¼#¨,HÝq âÀKì͹b¯=mÔYC‡ê&{ZZݧ¿•ßìÉd/ i&m 6±­aU‘ª(UŒ BŸ#‘€JÁä , wƒ DA¡bPñ'èkˆ:Áœ M±¦8” Â_‡'¸š‰¨H$aŽˆ"AÐhØÉÈÜf1‚–Ðúì{šì~ÔŠ“R\êU‚ÑæJ'îjÄ}(ꀱÎúp«m]à º›ÿN„’öOÍ“Ã?ÍsË¿íSÀM#·ýýó§~|ù®éßÒ'a·ä»&òõsƒ3àÝ]¾7ÄgLJWu}ü7ú (x'·q1ÏÉùÈ5•Õ„ðÜ»¡zÀƒ?°îmÄÓŸÁœ­ÜÜ9ùÓ4>qm}þM×?÷ ˜ú)¯û¡>mÀ}øKòòÊ|í?hŸ°íðÜàÀêxäö|rÏ30Ê­-o ò?õö¿x£t›`|~ÿ~\¿}ùë¯?}ùåë·ÿØ'Óןù–?ûÓÓþñíÛOÿúúåégûèÉù?~þtù1Ÿ1}QV÷N)£\ïØñaS«ð»¬ñ£ãGÇŽv™éwo±üß5ý°ü0þ¦ÿÖöŸŒÿ=ëª Ùþ‹ù¯ìÿb,T!às°0PâÀba@ã@jÅ44 4h0€©ÂÆ Œ «… bÚc‚‰ jà$. 0Àm´rÄÐíÁA¢ƒ„9@H„Бc„ ‰&°F8±)*ä‡]WbEËháèÚ·0Ä JÈÈ1#1jˆa„e„ÛhÅXåƒU>XåƒUÞ‘U:‰g¿j0²LæX-B^Þ®¾´ëhîúf¨3o“c(–Xg×îþ_ƒ`{™[‰}Ž’þò!ÜV®ó±†Ó± _øöEpŸvì/ê>ðî­6žàûšN§ÇbÇcë7{±KÝóÈìãÏiïtÝçÔKûTg­}Î]†"±‚š‹ìJfk(±*²Yfǃ̞…v‚ÄŽ‘Í+›åõ ­a5Y­%õó§"©» ªœRJ‹ªŒRDM@)Ÿ&ž*"œ8A g—E“’¹˜\&Ê`"éL J£ÊbOIô”ÃF„‚¸PUwùkMôVÊHˆ\Oqóµ†r¶PÈTÆ“¯,\"Y ¥j¡8%JR ‰ô4”›…3RP"%¤3Áp*”†Åd@i?“|Áá_„ß„£ð7G;0§#;bØÁ/Gô˜Ñmm6p²ÃS<žð܈ç'¬cÂz¬k˜Öé±ÞEk¬?á=&î‚·ÚQ‡·ôxÛÑŽØ„˜°' öf¤öÊcÏö.bvrÂŽ.ØY¼ï°×;°ógpÎdIÙð‚§åqj§qŠ §9Áð,8Û ›àpÖgpöX#P€† ¨X€Ž [å€Ô 'G xš€«øÚ žxóÀ]þ"p˜€Ç ¸\€O¬[î€XÜà7Ç xž€ëøÞ Êˆ÷@~ÀDLBÂDL˜Œ²áà&Æcr&kÄ$%LÔãº`¾6h½Ã¼yL]ÀôELaÂ4N°¿ ¦sƒ+p˜V© ˜ßˆ9N˜ç “½`ƱFÀèÀ ØXîë‡Ã†¯Û¦ÙUTà1  …EF 8þïàñ28^†Ç8€†ðx-4 XÄ€Ç(jXd`(4Obˆô„‰Pùü‰k´šªšµ²¨¼Ê^yÀ7ù»×\«ŽÄÎm§º@éI+_›øHCF. tÞJíL°êYÑj°JV£èo:Ô|ªå¢Î÷ _üþ»uóyí2Nd]ùs±rRNË̉9—~®mA1®ƒ¼þá.¥ç)Ýç´-+ÉkÈÏ9µ‰‰QfWr£V_*ìu$Žßе2»9_5b$m%R×@uéI` 0tì¨E­ÜÍÑéFÝ#3Òّ̰ABg™Ì”ʄȖ²€ÀÈ«m5ÀÅ ²@THªÁ©Ì §ÄÔ”`o2"ÐÐÙ/××HŽ+Šèè/ 6Ä¢_Õë§qpŒYc²°±Db£$žYÆ$}Î=÷ÞêêÑk…7k%hj%íÌôT×T{îïˆ -0 ±ŸÖ#Æ“ã ÅrzÚM-VC›™h1b0b/b.b-b,°ÔnC[SKC‘H+V#¡ˆ‰ˆ…¨¨}¨y¸uìãAÛ0ãÈ=­~bÀy–3¿n`Æ_9Ãs˜Ñû‰Ê¢€Z*¨&@=­eÖÑòª¤Uͪ[RÝåÔg–RÃ#9õ¡”ZÞ™SçIª@!dÕ''ÕÁ³*:M«Í„5n‰õμº¥Uͪ«åToE­5Qo +[gÁ$P“ü[’þ@žnVúLƒ­%½Ó¬­ÏƲkZ[ÛâØš'Û&fLWÙp…ºFo×iÃö–]¦íÚ _›¯F…ë从¸ÁÊïW&è*3çÞÃñAjû¼%,̘BÓ¸d˜Ò'éì8³ 6£VW%;ï9ªgo¬ ëÃú å<çY¾Ó„ƒÍ†B¥å»ý4mÙ:ôvfhû3;ôíáiõXôÝv]Ú¨8jÁFc¥ŽÛÝØm—Uð±6¿VxWßjáYâXð«;Üjò‹W‰S•t©–5‰;Á™*º’x’8’ú‘º‘x‘8‘ø¸x;úÏæ>›÷ˆóL–xN¿·è4+\F=FFý…îrzwoié+â*+Eü¤…—¨“ˆ¨‹xe§R$5Ñ0´·4¾EÙéÂãÿ 1~„ÿ»õð?2£»3‚:ŽúMK—©ýûSêoîåþžAhÇý¤þ%roäÈþ%ôŸÃêÔ„N; 2:ÔGƒ*©Ñ‰Ktd¬AeA³šPKzv‡ÊjÐÃkÔY‰žž#Â,¨½ Ý~@×ïP ª²Fm–¨Ð&º€&ÐrC×194¨å5]2?¬(¤¬12EtÈ | f–(í+ÞÌD1À/:¦Šÿ¨$Y4X#ÓÅ w™0:fŒÀ”Q2g¬L³F/i$˜6J敉cbæè+¬ÎÖ0yT’=$}ÌÌHk¤²²Zci޲ÈúpqèLÚKuÏ(“QÄ¡ /·¸XÃdxd«b+îo!…k/-V•KÊ‚$0LE9™˜TJ*¤Š¡re¬,[FËŠÒáŒ/ƒm€`f ™&ÊÄDâq¸rOè²ü¬orþ)ª6˳?yVfAþàâïOO^ȵãOœ“Éå}“^WøuånÒÇ/ÖYû2„x¿øvÎuï%:C×â[¹Ü0¯zÞ‡×4é4_g« M/ë-ûÚ/õkºÝ’¼Îö+o¹¡¡ì}åúš]|H7ì®–yG´öWÃ×á|9\|uýîâêòpc¯Œ—ï¯þÚ—Ùg?ï~¼¼ÈÞÛKYÕ~~zrç˼ËxAõÀ_àq5ãDàhâhùÓÆçú~ÍQ‘KD†%G,.ªaDRI Ÿ•HR2’ IåI!Ê-”W*YJ0a4Â<=a@YP„55¤HLiÑ4¨yJX‘¸²0®Jd‘Kå6ÃÈ‚ÐB•Ø¢DêÁe”é\ .%°n±à2XpÑØ‚æJØÓÈ‚À‚¾Ø2²HhJÁ…ÑE‹«‰0b4Æ¿J”‘0S‘d1PålŠÚqÒ‘†€n­cbäÑ1Øíèl´ä`D¢`£f,ÒGG!1‰?y„”…c¶¡‡>’¤1Àüýl:Õö¸íÞøZ˜QÙJéª7º¶Z e«Òت![ Y [­´ß‚dU Y«„¬L¸#3ÉÊÙª2¶rº¾šyjÊWÇ„åŒEʹ 4e g)e cЙ3VAÖä«6ò•ÓUEºjDðP4Öm;Y•”…pUƒšÈUR+K¤ªPÕ¸Q•Ô¢3K B¨J¸j"WÍä*%«’d%lÕ­6ºšÅ)Ä1ÈWÝKg m£’´ßi~ªíÄóUK*V.˜Ã&f²ÅøØ ¹bzSJƼ…”û`¬<1ñíiYxYÏõ>^®Ó3E-¥Ìœ³f+þ„„œ7v&=ók8=×<[ghäãèHÒ<ç"ò´µ<:Ruí•“W¶vºv¾†ƒà¯Q¶1¶ölŒ½vOÆVÂv¾®É×N×¢‚UœØTvç/L½»ð´œ÷(4M–ösn¢G¡haèÓÚ˜P´0tG†žYWt²Q‚n ¡-u% ‹†².-W=7OzxÆûh³Jê`«­¯¯ :fÜj#©Ž¤>¼BBÌ‘âvš%=Mn‚=5çûðQñ'ò(là[—y±Ú{Í6&®€€ÑÛ`³¶ÑØ6j¨ñÊ†ßÆqSs ÷CƼS42ì#«’ÌBâí›»«l¿¹|žØåÛÄíqJîøô†ÍÔª?Ð!èîêê97§”ø„:Eb°áN±yEAÒ‘Ž!^È?­ö8ˆ¸Æ€þ1Ñ;fòÒjþQHd?Ñž"ìè&Ú[FR;L‡ˆ Éé/yMP¥¶ŽÓç:ú8Žöñ™ô·Z*ˆ;‘ö¢Àn$ í¢' àJïK‹øSìNêSrhuÒ¥Zº{v0ÿš¬g‰íxßÊɼeÒ¿6n–m’/Ì…ËíéuÐЄ‡+i]a[3Æ„)‡U¾X‡-mV9̈W²,r¸Û"F¿ñd:l¿^ / š j “É…óœxðéIâ·=ø¶ùï‘÷Ây¡2÷ÞÔySßÝ\×<7ñ[w[÷Z8-jËV}V]6˜Ãº·¾hâE/šxÑÄcšHL ø¤o“ÐÝo“­2Sñ+È“ýçŽÞ|„“ðÊù·ÿ8|w}u¸¹:¼ÿâ‹”ŸÒwNO¾ý'ß«ô½ïÞÝÜ\^€Vÿ¾¾Ì^㚟„¬Ò§YYžý:û%+ýùTV[ðÛåÙ›éêÿÿ¯þ’ÕÙ²·ʳ ^÷æµ¼¿Mõc|ÊI¿‘§qúä)/ùfÿY>=pÚ×J}h„3¡è:ÛvðÍ kòSÐ5gmÈ~Á§ëÜoÇÅði§œ\•gu÷Ù8¯–;nx‚Üá@ÔúncdMr€±1NóàEâû»Dñ#µÆ†aÀžéâˆd‰,QÝd¤¤ôô‰æ¦%-NIâѲJC˜âR‹„£'Z'©ÈB1ÅËÒÂÿ„³ _9+åƒ1ÅCW*aб~oÿ[mè‡xÙê0ý0Â—ß [gÍWèFÄ)m\¨ä~çlº±ÚI*²Ìºú…³œM‡OÕ¡ô˜Ü¶Í/…ñGÑØëÆ† tY¼¬ÿ¦ ÉFò/ã¸Ó6m”N+me}gq¹5„ž¤ÑÛNoUØ*D$ÄËîœMs¹ß9›üÌWIñº‰uVÞï´´;m+¬xÙj¥mý Ú³uÜkêжÿE®í¨›ÌŽÍ>Ú¢Zc ‘ld¡âe«wÚ¦‚Òn¥­¬ÒÂYÇÇÞ“}¬;½Ua«‘/#¸s6…Ìå~çlÇkaÓֲޛ^÷iÐ…ÜΘd³ˆ—qTÚÿöß´¸ùž}ÿêýýíëë㯗o¯ŸÞ¾üÿï¸~ï¦yŸEüûÕ‹wxòmçJñôÑÏ'/ózýó‡×ëË{×+º"™ŠÄ”ð¦;5NiâWŠ©pÕ¶åD Ž¡ª¯GH|Ȥøœ¼R±ñ1–>ó¦*l ,C¥Ç0†jœc¤ÁɃlüjc¬¥ù·PRåÑ’pJ0vy²0IÇl@-[©“RS¸²›Ž¼ÅôôÞ&Œ¹†Èš+dwÇ[#Ô8›•Ôҩݬ1NM”!¨Pq¾¼ K¤>ZTs:ñª`µ±ÊSFUz9ðvTÔÈç)ÑÈÏ'^¥uÂࢌ­Ÿx9bäÁ]–ÂP&NîPK¶L0–§0ÿ®º‚JG‹—âJï9Å]H™³kãäÝ1‚C¯â$FL{Çžü¸ï[m+/F¼x‡4¶è¿ 0+…þç endstream endobj 11 1 obj 16237 endobj 12 1 obj << /Filter [ /FlateDecode ] /Length 13 1 R >> stream H‰œW[oG~G:ÿa^"Á­¾_ò‰@Dh-E²°Ã:‹O"Çñï÷«®êÛ/‹ƒ°=US·®úºªF…èÂæ³2>—-jÅ´WÁh·½?<úî]gj•KÚBQŦtJº¤lö–U:Ó©tÞBT.F»£mQÙÄ"J•NøÒÂ;Ú*ç‚—à„i²ŠÙØ-Xµ {:(m£(u¦QÎÂr*ùhvtRÑÆ :Âsª¤L§Ö)ØÍ«è³ï¤Ù~ YoTN0¿õûá»wo/ðøìG÷îÅñòõÅÝÝÕíQϯ>\…õýöø‡~>nÏîî.ÞÿçÉáÑJoAÕ°7xÀƒOdÿìk8Ó›ÅÏùâéí'<ÿîçÍo?o¿þ¦·Ë*wþ¦žFìÜtÂ'޶Yž)#' 3q¬æ^Uo¨vÁ¿Ï/8 æ´°LRµ40s3h˜5¦Ô¹7c%ÏÊCÍ~V%Z/œ8)ÅnáÒ"æœÍ&:Ö‰9~¨bÍ•¼K“ÖâûV=­´FÑqÌ`K?¢‘Cv^™v,áÀbq8.CpVÈ8 YA¼ñð¾¾±CÞ6c,2ÂáSä]©…`cL°¨xb–D!ºK”óÉŒ©'‹ºþ1.õ:òñœ¦Èb;HÜZŸq-²=–(‹¸¦õl©gÙ-Ù—ö¾Ðu[Šb G8¨Hµ)º.¨nº>³¬x® P´F¬ó ñ´Äù„¥ðE‘¡çIùœ¤ÏÛœ!·Y]±R(=”DŠß9iå åÕ@ç©ÚëšklwÀ®{­,‰H4§x§c¢Ê…΄ÈuQ~#”¡†åkCö6 }ÆšÈIìYN,T9Õ]S«[dÉJ¶ÕÔl‹x¨Rͽˆ]¼Ç6ÅäŒ^†¢*Y®Õ IS±ôÒÒ•”úøÍD{•½«ó¢èˆr8¹æÛ• Å9æðµozBõtQ‰q¸uÅ2¬5°Ì. gnÒ›bœ]pSÕzÝRmÆ®Ž“›ÁÁ4Í÷ ¤å]w‰@æ½1jhTB v Ñü·–kRµ‚©He“L´ VÌ’èDw‰uß:qû ÁÓ%Ç †jÙŽ™åbŒ.Ã\KŽ2Â" UŸ†Ÿ8 ç‰ß5iHÛè­€èí–{"kÕŠ6“ãòuüžciºs¬K­í%È1{U¾h ÜàjṲ̈QF3zŒOuÍ¢¬3Ú„h­Æ…Á3BWR6°NÒ’VgëºÊãn¢{ª¨÷È29xZ#‰}0 'bësuýŠ9rÑ@ñ±˜¨nÐlhïdNîj¹™äÍ Ž3"ŽžÓÕg>Ÿøâ·Và]õ–0ç†zÿNãÏ)>‘P.™jmêW±ÔT õ^no´nº«¢HO®!šÀ«µÝDØq%Åš›€'î„%‘°nò!sÐ8AEk6€pÎŽÊ…’'¹ÓÕàýsBÌYô&«|ÂJ£’1Qóæ6›Gf™EÑœšåC:ÅÙ-Øœ#´¹bGÑtç >&Òé”X‡„íý|Üî0J·Í:ÃÞ˜5ïc>˜aÏ ƒÍ³Ì¢hN¬~u¦§y¤§i¢‡e ï湙ǹnJº^Ýæ±YFùn’‡y§iŽ·ÀöÃÁ×µZvÌ8‡5!ÐgID!³ô5fÀ®H̲Öyl…º"¡Dú ºí*ÚÑ×_ÂÒœòd¤Ñâ©ïãÂ,±¤­A!l˜< Ý:U[RYhœœœ©'ãíáŸýèÞ½8^¾¾¸»»º= ãùՇ룰¾ß¿þr{qs}ù÷“ãñ\QÍ3¿Èè'ÊpÅ…%l|áþ„ç?Àý¼ùíçí×ßôvYåÎßðà—,‹­³öY¹#å¹=«‘WÕÇøâ-tù°Ñù?~¸Ä ¾-@ñË1h¹øýq äã$ûqÀ) œ2¾MÇŸ”) ÛúLè§Ýy›Éå쟅Ì_ÿÈvcâq'?âãkæsÌ|© sÑ“IW‡©²ÜÁ|ÿ™ñÿ2voö†¹7W—Û/w·×]ê&ŠF°)[r[øÇ¨c2[`‡!UMöGœ Ù sos_û€{v/ÒòöùPíáÿxÁcMÎ/_KN Æ»—_ß^ﮞ>~MÚüæðèå_õ]æwÏo?ýýïnëñ˫ϛP6ȬÞë§Ãëýéãä=MèÎÌM¥´U:ì³–öxÊFøUñ+Ç+r¯·) ‹*ˆÝO»Å&»G{ó¦ZQãÓ|`ųSñ¬bðÏNÌ÷S`÷¬§¢5äÕê$:±üßoe{üd;ÿ×áÑÛC-Ê»ê› hÓ?+`ŠA9‡6‚p­ò ç2Ϭ³Áʉ©IñÖ¤øÕR’ŠÇg©`:æØ}Š˜T%×,ºšEðƽq™3ž &'13ÏE0#š~„`g k&3Û;I6C"ajúr³h•­&/ ÖTücv0 d9êuᨊwAÆÏ>È‚)-dt;¯Ù°ÇC!oŒŠžxŸöfë™nZ`Ê6pŒÖH`&¯2m•™tg: 3s)yŽØÇc ပÄAâã݉„ƒ«{*Žc:âY…[’Äî‹ärŒ¶¦É wºž†–ˆ\™‰–_J‡ \)ï˜o8Ϩh²|/$p.0Úq–M1-û “81?>‹°óÞ¶gܶbIÒ9 ÎúV•šl.QBˆÁn÷"ðýÿ@æGº°Ëä­¶N1 òO@†ÏZ0c$OQh£×aE- [cVÔ‚é­Ë;Ø‚å2¬°EÀ¾»ÂˆÐI»lÁ·9›¶¨gÈ%wÜB-1ïÀ ï)³‚7 –¾¬ØÏûl÷ØÅ§€uvÅn´|Ö¼Ñ`-ra^jïaÅnÀ‡Î+tmÚ:ì ‹Èb2eÅ.Ý‚]$!ÑM=Å.ñ£K+v)c©ffÂ.˜wØß8—WðêLØîEâ)v]¤ y÷;ìFÝÚÝ„ÝØ]èFÀÃú}Ã?ØäVè‚ib)+tÉjjmg‚n¬5t+t¯4Ì\ð"ºÆ¹àgî0¹(3Î’:ráD—”vÈE¤Î¥²"ÌTr^¡ f)Ñü—ôjÇ#·'Ø;Ì ôH€ÈXé¤>€ß³3¯:¿ ²Ùݳûve%Ò”8l( /êŠB5ƒûu¾PYÔßà·ùE]IrÞ¸+þ.òâ«x7¿ÈkÑPÑ;y­äì1äEh¬äΕú¼+鼓×ÎÒøE^«Î ¹“×bš_rñÉÞ…¿Ù‹túx±w.Õ;Ø«×7/úôáø¤¯Rس}ípãN_€×¸?è æ¤>è;·p^üÅ+ªŒ}sˆÌE_Trn;}qFš¼]>>†è¾x7Õ;}b´Í}†‰Ê|Ðá=l’ÙúÒ½ƒ¾¸¡×н‹¾ ”P΋¾¨ËRÿƒ¾ˆ Eíú¢[Œ 7ú"ÃÚõI_Ãå²A_KšªÞé °u®/úÇjwúª/{úñ%Ÿô]øô`C©/ú"3©|}ÇõÍ‹¾™ÖÐ>è \HïìF¢rg¯Ýº§þÉ^ä»úØ;Ø‹ï.ñ<Ø;pò+úÌœºM_¼†Xø¢ï„Ýëü¢/¢j˜„wú³õ;}æÁ\¾ç />9eê¾ySgÃAßñ6¼ˆÐÃ4 8æžš²™‹ÏÏ/ü.`®£Ý‰kÕf¢qap¬Q_Ä5ÛRèA\+ȃ¸ÐºÓu,Þ¢,:ùÁ[„ ô0 ‹…/Þ&þŸÿwCýÇÿüýßÿúµÕ䱄¦»Hýhþ@@ŸÝw¥Ïë¿€âüV Âù¯}ßÖRÔ‡n äÝSxZ„ßš‚|¶A‘Á­"±´t›»²Pe"Dèš©<‚íÀª¶0V”– JÕ0¤.×ß×üsák³ÐoœS F‘ܨb»”[¥ú‘æDÛ?ð}1Ÿö4?J5eƽ¯7n ;¬‘;¶$ žä¹#mžËH!Ù_+w¯Hvî ,ŽOA1Àp1»‘ÕŒÅå¢ÄùF‹&ö$¼jD·[7ÙÂã-œÛ N‚äöl„$^7ÜñÏUo<°Å\ªRW ]ÜCïêH n›‚j;ó´¯ã"²’ënÿŒÄ(·Û-'´oYóšj~U«©O>›TMÑ­}çë ï{•c¼s8¤ñL÷oP—ž àW¤øßdóí-˜»°&[ïHb#››ŠÝ¨`‹F…‡¶FõŸm|ð&Û™¶ßÓvæZû:qèÄ÷§jämötϸ–•ðÙ]ä=áT)áGÍXúº—¦fuÓM>‰a9Á`¬–ï<Nž!×0P¸G¢†ý_µ¿VbД½Ï[bбð`%&™0Ÿ?ÿnW+ÏꊾxR°REû`"þRz#Ïìcûö| ã1`ùÏäák-ð'Uâ†ÊÑÅ×XÁ·ŽÐÞx††ˆrtÉŽxù°Ê1/ÝÊ_·£O¹{àŸ»F¥¥#W)Kᤓo¤µ<«¹yáMQƒÓÝxÑØÉ‚2£QDì¿*V€dÅû{ôBÐý‰ŒÎE¯–ÚCšÍ½»w®™êºá‰îŠJÕNÏL]‚,Vl†ÎØ‘³ ú|¤1ùjÏmóüù–¤'´oA²iޱ~µøX¶JŒ"·œF eIJôÙ>Ôiç—ì3ökÞë£^îklßów\Áׇ‰nñø EÁêZ”ðç&øp<ä¹¼åðãš¿…3ów¨Áц ©DíÆòÀ‹x¹"¨ÝÓÛP®(\³ï(}üŒÃØ0¼³ÆŠàÔž`/Р}¸v7_l«Eh>×(À¯‡y‡»M)7ÑìNß[¥›0»(6ó“x|†æ´1#¼Òº‡áRæžý3pÿ8p[˺÷[ÇæR|GèKJÆÓÝœ§ë@ñ„sÙg¯õ’5PžÂ]Ôhùfˆ–ÏÃj‹ ÅS*‡;¼@ƞµ]‡ûôÉÆ‚xÂÓ„¥ž‘!™´C$¦oFl>A<Ífƒc±­c}§Ùö!×F.Vˆ¸UõÝð/ž«€bAjp–Ùoøò®'Q®E²ëÌÇg²ÇÅkB°?7Ã+É £Bme œbõCØZ†äêôB]©ëŽ„Á³Ù›˜^*€S0Ìó¬ín’‘hÎY#¶ôÀf×ëh¸Ó£¨×µûóûÍþ¡-‚-G‘ó(æˆjäIÌÒ*#0´ØŠá­°.‘‘A}5Ì|@žEK‹}ÐÚB_Ú¢l×¹£5ûÙ³lbêh’Y—?'ì°ökqØì†;Ùu‡aæ/jp„ÚN¬É¾§ Åé¨äÇœ6Îw 9#@k™%1ð¸2B=jÛ(¶X•lgÕÒ3ir VD}'qrZ/ô-¸@FÑ+dòï5t:óqµ6.T36™ì)a²m¶š{+ô"ÙÎäNf‹¹ŽOcnȦe‹¼X`ò#›®¨†aÕÙŽ¦ø¹\D 85Ãà„z²ó¶#†zzËÊ ‚ÚŽ¼ï ¤·äúÚX–:ZçY|zºF˜‚É™6ÆT¸Ä+m4l ~CÆÌT´`ÏÖø™ŠCžal\éùš'÷›2œT´.ù¹¬S-‹>3÷ óSÝ F€«‘àSÊi B›èàôíì±sB!Wëp îLËsø“éNó®Á¯_Uk9vŒáY 4jL9€˜Lrå =Ž &I>ðZñØ»éËc¸CK0ü>ž ´Ñ^M ZÊ3ÂUÚ¢ ‡îaÞ¦ÍZ÷bæÌÞ_g{_É5ÕG=S¾¯¹ì–>˜zMvÄÆºž|ù<—?¾4)?ÍÃáØ<‹¹@ü˜ö¸ÈL+H5 –‹“©yá·u|ˆ{·©/-§â< ˆÃ°­bÆa«¥zQžWUÌÌàOà­ˆ¿†¥Ã£ ´,¡ãÜ"#³åÍö{<^1£½Uf (Â+{çú¼XGQûÑVµj(›Êùz ìÑAî7f²(ˆA¶x&TxO$2¡¯€ß¡;è…¹ÎÖh$¤aö˜ß”VÑA<|¥Lïía`ÈšÉ8 ÐãγæµüÍx,†[õÚƒ-Ä}±žÒYú”9â0Š˜âaÿš;ŠôGáÙiOf4¢w5|bžÍqæQÀ'Žä=¹SD E󃼠îLËâÕ›`qžE¶ãì³Sƈ4SU/>8vÏ îu %ñƦµóÁíóŒ‚ùÊÅ!ÑljmˆåaQþzöQk$hø\/æåà ԇ)»ÃÑCX‡ÛOêÎEáãž­îF$n@§rŒu‚ñ¿ÊG1Ç0{©Ð YcâTs¥;$Õj ˆP$K¢Úçàk¡£§¹u?Ù*®—ˆÕÇzϨ¦t13£3ÃAÂÆµbŽvi&È9.öÿ}÷ôõWgw÷_¿¿ºÿûñòîÏá¯(Ïëg)ž_ýt÷þønxöâÅÙÕÕÃí«ßï/éáç×ôèßèJ…×!bŒª£oåe"å¯ ³o””‰WPx†ŽÞyÔ†n ÄQ@Å€{•ˆ¢rÆIÔ”‚zòd™ 1â !KPϺ(²L±,jþk–ÁÒ–à¿y°˜£"æ%ž$a=ªUû'ŽÖzCa"EœbWQQUåo‹VÔjÃqbŠJÁÎÉ-âœÆ¿ÏÌò‰#üÔy†#,$]Y÷–™¢Ò%®2‰¤·ž/0ÚŠ|9BCiLJ*¤‚Ä6±úß0¡žn,ïùŒïP¬Qm¶©47ÖxV³UÃ'—/Å©t¦˜²Æ…Iì«Ç.‹p;+‚Kõ”;l¸|XwØhÝ9.£{Xç¯ùãBÚs\H¾s$@Šã>'$ÁhytÒh‡tþƒü±,B7dÎÐçdh6zqµÃV-Ÿ´óÎwyxö|¸øyöãçj!û™ZY ¡èæDÙÂ-Ô%P Ã¡üÑ'ÍÐ>½…w&Ž[É‹Ä~9™Oî‘¢“ð¡”Ú>¥/!ß}ªº eƒþ¸«ÕD綘¬‡˜qâàþðO's”WÈÆr¥¨­uñšÖKÅ…¯ Ž8_¼Ð ÝÁ‡¾™Ã ì‚´5N&]WÐfH¹­¦.xgçd)úü9pŸ}P¾=˜!è~íùÔx2í]2ábâ°´úØ@'‹ îÓG \ªŠÈ\(“ÏÝ×謫×'Ç…!Ñ1uøa†Oƒt»ÆßÄñ“¶y™Œ ¼{ïÛSe䋇å:O%=u;£ó#ì䛈•„}–ß§!™·†/R—•É1/@O»ñª­˜†GH~XÅÀ·Y† •åqÓÖ%±€ó-k^ÐØ³Õ@H„ âW3#‰á¥x`Lû‚¶a5¹F´)VÑÁ*©PÃÍÁd“ñ±«_AW!2}Xï½-wÌZ ƒ‘Dq³ 8"NÙóÚ8«€ÐâXrÖv [P{ìÛ97è# ±¦‹·Õ'‡§LF³IÙ8k›*gÝP~•Sü ¶)2Œâ*f"íöyÆñ°ƒä‡.M0`e-Þ_Àà1&±àlÄH’OK N‰¼’© ®èþaD+ ˆŒbð¶U*)ÚêX97 s¨Œ©/Çî3(|lo°Ýû5¿)[ÒBÿ[@n&F¬u‘öÙLE_€ˆxŒ<'Êf•M] ð(À/«kǹ¥ø^;§%è¯à‡9‘ï½0…µ!××%íü¬¸y]{9›kpâ_L9Ž8D›f ¯]×,Œ¸ôRg6 d%>(§ fÚd-?VçR߈fÍY¸FG >û8Lh42U]mÐëÍ)iþ¼R=ÅåqÂXYK¦É$(¶¤y_i®$—x‡iωÁ)“) W¨™*íuHvÌ×ÄeHAu¨i TÜÒc²â‘R…îaãâÔ,ÀèùÁ0v9(„2ä­õY#SBq2 ˆJÆn©{`‚.¼ÜZŸ;¼ZÖÁóÛ¸Ãh’-ç&Œû {]X‰lÔk›8Û9lØÿ÷7?màlù -ZûV¯pxÁUãbMcø@yÈTÈ0UyÀ (_ð…ùS†x¾{zömzýÍñÍ‹»‡?~ûñòþþúîˆÿ#ôÅõ»÷Ç)þìüx¼¼½~3hÿ ÎvOv»Zvúºø“àïðÓ`7|?üò«Þà™‹WuVË–B¾RšQ2ð>b…]·'™±„ߎ°ÿ•,”âý+­Ø>.×ê­´– ‰¯[Ü5†/Lñ,W«c§u«Dîö’e7‚b2‹@ôLb6*\-š¹;-ò;ùäËÆÄa@áòn®ŸO˜Y‘Ü7pÉCbŽצÈŠ+gy~äSOÙzÚâÿ•/äC—%íÝ—Òa&×»w.~.r°ÁU[³´tONAÜ/®iù ñª^z–Ú_®¥Š&½ýxc(~–,Ù,ç¢"\êBS^ÃB¬¶] . ù¾(/Çמ4B(¢0$™Qü¥—íY¯3Ôêí¶µÿ·ÕÿV[IÉD4âowç»<<{>\üü¯°j8«¢Ót.ynd9B<‡ÿ®²êÃnÉØ”Q¨F¥Þ~^ƒé—ÆÚÍ5°«b-ìCÈmÚ=-~q)×vL844+>HÂRt 7›­¬ó2$ÛØéåáHsPZ,QãêÚv¥«¾ Éð8@H‹Áp©„|$x“gÃÙ×±ˆkŸ§­› I7¹^@Ȥ­Œé‹lÀÄrmQ·ãirPŽ<<0byJž–ÎÏr4âc¹&ÿ%g¶/Lýz:ÚEÓláSÚC!²Õ†½Ñ¾Î7^¬}®Yö*o–E½bÞXà÷o… VÂ\KÈföVS½V“­ú­{­+6;h­ÛVÛr£‡W~u4VS¾YŸµJ.Ëþr[nF¦0fN?%†'^Rê Ø5~>»’Ë2-·3ÁáÂru°êQìÁG&ì­ötøØQÕ²{ôdªõ/ö{\X¼e ; GGüíÝ=|ý©g‘F†:D;?‹`šàÖ],jS04L0šAËh¢1œm[]SVƒ­ ÀÓ» „ÞzC[å’Ê´ÍCV *áJJaöpÜ»X¶Ì&<ˆdÙ6´Ž;5U!³ÚÕ×—² BÊÅ zƒx›‚ÿƒòji±ó8¢ûûî&`o†~?–¶“…ƒ! "!ˆ‘HlF³°-Bþ}NuUwWõ7³0ÂX:ô­¯ººêœS…}’$\ª„Í‘M#®V1¶ \u€…ñÇa­ûÎaÁRéާXšãUTpcóÁç ˜]ê;B©^VŒµËáî“¡”#Ÿf;l|ÄbÐ¥ñÂ(i—Á§ºK æ’T;´Ìåp*SZOó¾ô¤@‰à&ýéÃ]äs¡åpGÇ®·Þ-quɾ2‰S­+l]BÈVŸÝS!7ÆöZÇøˆ;…¿»âïr0ðs6ÞHtäÿ“oû…zÌ^ÒHi¾ÐœbT"†t»0áÎ -Ä!Èd,\yåèÅYã`Ü—k$6öp‚¤¸p„Ý IAÃ+]Zqòq¯„eÆÇk"ÿ¥`°ÁñRÚ ê÷A5¥ëû`MK­  ¦Ml5^[,ж?ΖG”Ê ¹AÛ½_­N^añ ¤Ð½¿N¨3U›Ã)åv fÆâ齺îŠàØ´éÃ0¥Õƒ4¨ œ‰ï4ÁÈçZ/?åéÎ,—)xñ^f[irg`éTã‹{ó¢ÅÒ¤|UƒúhX<}¸-ϵ•BFV€÷à“Õ Æè.ZµR ‘6…oDØÊöY)&²Å(õ‹¼Rë¸zœÅ}j ‡h£`ðºW…ß3¡ìÀáí4¦_b¡àïNÕ ìTµºNß*Ó)@eh9‡éUk¶Þ`Y«–2"ÀÃrÇë0è%‡ÃßP™!…oçDaʼnoE9ä¦=ûuuxŶyCž"®+¹gÐxEƒOà 0÷iº§5˜š¿¸X‚]w;-ïám5ÖõÏ݆Xuñ°æƒA­…7¤z0.Ö¤ÉõóG_&žúh”œÀË:¡A•±…årÎjUa€kÙÚ%#¼8oW%ñ†ö!,8^í‡aîO‚?3®÷-i k÷¦w°5€ò¥Ñïí< ÚÖRÄí«AÝë—ÁQ¥GÖr¨ç¼rî—Ãã­ôèâ$‚=ótáÒfëðr/›J,¸§…ðæºæ#ù\ž‡…ÎŒq²Ææ>‹ QRØœB›ƒ¦_‹ W:¤lH½šËo¡œùP ÑôÉhеþÔ„µÉó,U5áEs0š¦0­ ^ZI!Säõo©êÈ´G ®úM³¬£5bmFÙGDè´ Ð³°<ƒÞi.,¦`Ÿvü_g|-ÕdÜ~ÂmœÆ<昌ÇÍ%¢¶Ì˜·sÓ¸×}4ÃN?HXlWÃ=² £6ÛgŽ{…#U4jLÿ+ôºØÝÿ8è9£J3šâ±ñ-ÈÙsJSFä^ÐiþV° »ä!8ÌŽ•N¼¢sá¢1 ‡Rv?Íìp&Ny< ørEHk1O+ç[£&È|$ÖÓØƒH,Èp€Rh˼¶Àgi“š"Rj—(ä§£p}‡ý›e™^”;RèVÇ5Úʸ\½–É$Ûàoø…p”óaF¨^ÔØµ(X]”Œµ.ˆýF¾Í¹Æ—@U½¼„¦…u%變`â×S}Q¯Ð¢à¨z¼ÏÊ&ÑŠ¹À`L¦Ãß í’À˜Ë$~ZA€)­6æ¨ËK–]©‡<Í’}8 ˆ…)„µŠ]tÈ6vû0?Kyö,µ'™IU©Ž\$‡Y®°; Ԟ̨‘\æ;w­ GxÇÃ*†¡ ”ÆP@ñëPl€ˆ5SˆïñæxÒ8¿4“Ih^ÀÞyç…½HE!ä™Âà c)BÙ3ˆÓ3˜j,;B–½ïàÊ<s——L!wˆîÊ%ΡQp3F˜æjEA¸YLþšË0„r€h¡¹(ê·Ê0ÜÙ| ‡½Oê(‹k+3«ÔÈÇ)Üæ4Í2°]›†>6n&4CaJ@õ;¸8œÞX ó,c AÆt”ƒ›1I3ÁÒ/ºÐÈ×I³bd†$]¼o©£¶äó|þB§Ì‡¾ Õ¤aL_(U­¾ªO$ jæ%£`ä³QŽšñˆ0ìæÙ*Æ_O娙ô 7£•F½c”ƒ@çü)5ƒJƒ¯F8j¦6sÅGÅ s€QŽZð¯:¾¶•£C»PŒrT(ÇÜÌ´rT¢m&½­öÞŒpP½¤÷Œpîk™+" A aÞÂAéÊÓm~¢‡Élå øœÛ©T0˜–f”ƒKë¬rÔLÚW󩄃²’QKpÓH hÓ>øÙ(Çh›Ê¶f)7X6ÊQAŽ[É(G¥O¸µrÔJÓÓ²QŽJ85*á}1™(~ °ဠñt(Gí‚¢VŽÚ ²eØÊáÐr¾û‹r8ªW5Âá‚0¹Ò `…¸äÔ à¨l1ºQ{ŸÔ¶uO=ÆèFíyÊÔŽÚ—»ÛÂA 8=ÂA5@Á¥×f„c€®öS8ÏÞêah5otUE‘â)ðÞÓß)þÁŪÏÑÈU!3;Ù ¼ûbecÔ¶+.NM¶²Axçeoˆ#ýîpÊ:!ÊØ(Ý]Øo,ÝàöšîPtƒz7œºÚçvÕºéDLåݨ ŒC9uƒðib&£Ð¨d7²ñŠ8 ÙÀ Ò:ã”aáþøñ߇ǶRhÉÁÂôåÄiÙ}¯µmTÞÂ%λ7â¿“¬"~‹ÿy˜êUÊi!¹ÇðJr0‡~½$G«¿æð,Q.©müwlPðÌ NòüðküúÌEá¿¿L?¶ÚKJé±F—¯I¼8—ä6N†¤ p€#’,²‡Ì¤Ä  l—e§ˆ"AÉlH\ LIù8[9–ºAIa8ðç+>¦Ð| šrd& Þ×P‡u!VÔKužÎêìÔF=ÉUçÞ96øO^Rãi­s´ ÉŠ†02SªQbÁaBb*ö0@ØÆ`Ã*PrXüùŠl¤wû¹ðØZ©GnŠ;ßQ‡u)fØk}žÎúì܆eÎôŠ.jqy0sb³¸ž– ‘+!Ÿ}@x1‡!Oþ«ÁݯàÏ'¾ú\nM„ÎMO¾ˆ:¼¯¬Â^êót­îQ’ðV\;{Ôâò`$ s]OK a?ûî¿+å8ŒÑl9a5¸ûàüùÄW£ëÏ­‘йéùÑQ‡÷•UØK}ž®õÙ=úþÖïß|{ÿð÷ÛÃûÛ¾û±ýëO/Ÿ¾ÿåë¯ÿùëÇß~ûüËËía ßþ÷O/ÿæýËËÇ/Ÿ?Ý}ûööàîßݾ޾ÞX°èχÿügüíg`ÿ½§û_îÿø§»™cÎÿ?íå¶b×q„á{Á~‡}cL"÷ù\Iv.¶Q°„`ÄøÏ ã·Ï_]ÕÝÕkí5Û BbôM¯îêê:üÕ±DÊR:#ê¸3 ÎBqáÞ·¸ìwºÃ/`˽­UŸÙÛbír©óˆ¯§£û»ÔŠÏ!'†7ÜÝ‫s¿?}úþôÈž¿h×ùpwæ]xüƒz†ú•[“HfÞ&&2ÑŒ´ƒŒ¤@\!)bg{Ñ<ó¬G°Ë[*¶3#È£PÊ÷° T 1‡Dþž ê9 Ζ4[èœÉ"°±±s!)þãàµÊ†A—-³vŒm¤GBõºà”»9¼U›ÅMBñNô~á£6˜¸kÿ$*¾ÙÛî.&[” £C¨»Å¾fÞÕž ‰9[ÔmÇûÔTÊf1âÄV9-q¯[Xsã°ÀÔ¢Ý+§ù¾Ø{',É ›ŸÆùõ„ZFVº†¨Î…°9]à0rÛ5˜íS]ެçå± Þô„"n¬…Ö)ò®®º ƒù6†§%»~ƒj9b ë¶ix’ïF‡®>ÉYÙ9ÇM¦ºÌ>…¡Å&GÙX¶‹.ŠŒfähñYúeðNÅ@Ï„È{­‰›:Åî z•{Â/[Ñ‘B‘MZ‚73æ Í£óPãŸá”ùùÀ®¸þ9¢GôZ¥‰’Ï(x Ê™b­l£¤äe[髚%²Áä‘z\/;sA¹†Wç#LN yé7ƒ„MkžRµÊŒð·öÛú,°iïq±Ê˜¸±¡{!”5qÁÞ:›§gŒÙ.ÆÜrɪ*ï…©«ªèÍõâ:ª¯}ü!¹Ÿ[hõ¡âpþ 8ioH˜ þ£ðÁG.<{Ô$¡Wý³ħ ߟ.öåcjµ£ßPqó&*~ÜõqÁõ6w—I= ç1†â15æýõŽø´ðûÓh²R¶s%8ÍÔ:ðˆjÂ=Zõì…*ê=˜dY\æJ{/&KúÃÜeÐ2 }[þßnùbÑÑH«¸ìs9ØÿW„ u¹ê  Öå†<ñµå6¸)ý,€C»â…û[7qj»"Eßì|·}³í婞?9¿úÇéÑËÓ'ÏþZ¾ùËÝ·Ïß¾ÿï¿ÿþúÝ»ïÞÞ5úü»ÞÜ­üñË»»×·ß}{væ eù³Ó£÷'úÃ^§?¯~¡_ü ?ýìçs8yþç¿Ìù[¬yõÕÌðUͤ/=”2åz«›G¼oqÙï t‡_|° ©S¨Ç¢úŠA4(墸eÃQXœeŸ®VpµŠäûfÙCbÄJÐ7é[zþ5í7erWcZO»"â»vñ=Ô?‚C uQÀ~Qô)l é 0¿×“BéòU"ñÜ2~Ìîá–Y…[ ]‹g+jRYYb£>ïßÛh5ÿqχnszëÚÞ-C[HJ|ª O„[XfÁše:H¬;¼ÙgêXœig™GE¾Nù:9͹%Ê„R¸;ãצÊÈ@Ú?3‹¶Æi‚`¨‘*æÙ3b|‘{¹Ò¬Ãá„æ’uñ|KÚžôÛCŒœ©Qq†ÉÖ~ËšvÔ¬gˆyÞ8·È“«M6ÁÅycÀb“§Tú¹¶yÒ ïЃÜ5]“‰Ê„+kcàðÈxGׯ€Œó Ê›ËfqèM#“<–1BáÒ…˜q¼Yfá~¾ Î4‡‚ß,žÙ ·èBÚ;q¤Ÿà˧’û,Vªµ¼o+V¼¯1­szˆ’ù8&'ñm =¾zî®Ĭ6¨Ò9\Cº—MȹÏ}VF¼QCÁrž%l[Z‡~]u©\§”ÓÂ*+hauû&Χ˜SŠPc%]Õ¼ã&”òÒ"í½¸Ýh§ 'ÿ °Ú·áÛ-'A„ñu'ÍxÓá1ìývÄYpEA¬cƒ?®JŠPúšÉþÍ4¯½w÷UwÐ%Ã}|UOûý,¡ÔQ‹„Bßp±U™UBM¾J%eÚÿJm,ùÛ9Á¦VP¸äÖª¢àR‚ÞëÁZÃRØÀBæâºAðØ"WL2«w’^Y5kEøóþ¹‹Ná;¶9÷Ò*õ½ŒV6R?ªº¸3Ûµ–盥)¨šÖB{£=‹Ík'$|Ü·MðêÛ,n½Ì®ÝÐÆ {ÙM¯+Ñä²[œb?® ‚ªÆGËyUtšOy‘$°•ÔÛV½,¸+ŠìÓª‰”‹€ZxW[eHì)Ëpn¸“pˆêšF-5¤‰Óª \5d}šZÒr 0t᦮*vr%y+·°ESfVÖ‹’.c¦Ñ‹ñc´nèä-y¯EÍ«d˜Ò_%î¨ßa$ŸàËÏY… FчõŽËTHb{ñN—(²/çe®ZàœÁ¶:šú®s²,†åá2–1Õ¨‘‘.–¸%ÙRa©T7µU‹¨,Rh+¢&_Å7ñ+Hk$vâNQîk§BZ_ã«Fj÷I{í´p%žö7|ˆxÚwáÛ-_DRv}"=â«Hb§]A‹8ÒYþ·N“åtUN||åä~‡rŠ(bÙV¶úvƒ’ã,·16¸{ø¸ø²k“JdÖW$I€èå!Ì[ %ÂËùîà`/dòþüóéª5·óÔ’Vk¾FhÊ_(käˆDÁõl*êVê•E‚ =V|+¥_6þÇn:iÛtÜoh:oå’ͪé(äÿGv•#K–Û@"æc+B?¸€i·Ìvu‚±ÇÔý•XH‚UVÿÎâA,‰}€o$ ,£ò¡ù@&[ª³¼íKéúùJ*¦_~ºV@0@gì®Ão²‰¾£J‰^«7Í+a,Aî*8~ ½­Î ŽQiRCò¼RåUÛrÜ*^»ªÿTéÓA½ÍUC­«^ìj­µ?GQtíÓ$*’Ä ý½_ûÓ;89;1kËøxD·/V ³[£ BØz¬«fû©³ÚeÐ:T9Àètj?è¹`«¦0‰Ñ4Ö€Ð9j”ÖO!¿^“9êOGì»$+>›•†ƒ2ÚѾqíÃ÷Ú"Eïð¶Î¶}œ–%€Í£ ¬‰µ]`ñ½~5>Ž"sJعˆ’‹ƒµ¯ãÞRZàe‘Äáx°â¼©‡¿¬±yY*•µ"PD«ùs±`Õ1¦‡94«àdÂN‚™· è¤Õ,6¨YÁrÒÌ/$¯ÌTµ<ˆýÚóœzç Ÿ•3ˆ-YûÍ0Є)°V¼‘Q&âYg¸éWö¶ê#ÛÆ‹!Ý£ã×OƒüE¯úýë”&=†Ï8Bmº÷Ú<9M¤n†c¨1–º»Š­Æ{&¬ÆÒØ­¢3ªY«‘\€5æß:ý«7LhãýRûMW—EŽ“–²ƒ‘ƒ©Äå ü€ëLµ×Óìɪ¶Òút]S{½Â]k Úâaõ½O û{ËRá5ž£ØâÀ• d‹ªu¢]„i}¤i«5£UüpEY}Œ‚_B´‹ù÷C´²¼GGòÛDÎÂüåÀÀAŽޒ6¨ϳÐ}}F@YÎÛë9zýßQ% <÷+4Bq¤t)VÇz›À\,é¬Ee5š  û¬÷á­hÛ†ó¬¨ù'O XÁ’Ú3sz¸V¦åÝÅÍl*ÛÇAíÄC[J¸>3µm«w"ÀÓÞ»;/LðkÿòÆï¸ B«‡…(C€ Ö~­MoÒÆq ù6Q”ã–Ï$¼k~r!†ÚÄ|ýdSKãD¼¿w¸cª% ôüÝËicµ3‰³<<7òUö¤ƒ)nÍBÓå*â#¶»ÆVÊ ¯A•³Ð¡1Bý(2tPQ@dÕ1wo\Å’â⥭°hƒ1<]“wΪðÊÓW¡‘¾Þ£Û´Ž=èó*kæäW¬m¼ê!cIdîK|ÈÝ»|•@`íØ^¡ªë›Qêõ4“BKÜjðª¦O‰ùKÕý¿ETx =×{wí)  Íù…ÓÝhŽÀÜ.‚ ¬ ޶™ ´‰}b†¦8Œ,‚²ž„ÒÀÊ" óï—1ásr)§Îõš\]•4Ý¿ª¤ô×Ù…p Ëóª…ú­^,¾Ÿé²}Tåt ,f¬‚½QØDïÈ5@-ÞrÍÀÕÄÁQ™¿À™=Ø062®Ç€¸~‚&u l qαb5ù<£¹í «9„Ò­û¨oý埣dš¯Ð$c¹³ÃûÏÀ G 6­<„G ™õ†O.âzQ…‚T׊cáâC ÍAž¶¡Jo-ÀU\nj‡ð¼…€™Ü³Òv¸¸…‚Ÿ«hs ¹YoÒšMÌw4å î¬à±b=bç!ðyîÆ‹ÕŽ‚fáÆ¬}]F ¨X†û Zi.ÖUÈÁ*5ŧбpqû˯ÃÈž¬"`‹Ìé‚ô÷~ËžåÙª?¡œŠžúãê‚ߔޢÒ\|ÏèÅ0Uâó{@e3¯\L‹¸p_¦Ú´ÌÙ‰QA2²½ ‘ÁÔz¨²‹[_cEü0ÆÓ±šîÆG-çÃG¾®£†ªßm§u¯{K^c›ÉwÛtž5¸·sÚbs:MKÉÞ&Áz+Ÿ³n´žT&hâä@8«ë¶Ç¿žgݽìFàYá­¹ê»í!¬0ëâ¡Ô"$ç_Ÿ;$=f[Z8ÁÝ¡RîfZ¼Z?vØÂ.PŸ“¨ð2ä5Ypë2îxï/¨ñ¹wУ¼Ð.¥q~•©±u €*ŒE}¾GA½¾;¬‚â•ùì°Š³õóÝa3)žwØ ¦xa¹gÃèÙa³y‡MÞÞ6=ëì°)¹ 4XcîÕvï°+îj娴 ¾]Xªj‰–-âÓ³¦æ¶ÂyÁ`‚_ÛÂe޶Ãß[•ë}HñKd<´¤jŸÝc%°ár{A!²|9‰}Aue Ü,ûÆ1¸?‚C#ñªÉ‰ƒNRWp(Ø;¯OÅ¡x,âP°ð gˆd0Ëõ÷lmŸ1&Vƒ>gž¹šå HIú3t¿w¶¿u™û×ÿþü£þõ3¥.ؘ(LÕÂÿ|Àä›bèL6Mu;ÉW-•b•Í Ž)[Ðc#mÆ Ýáì*zŲ9Å„&·ïô•ô„ùç¸rXÞ£¸µY«Ü-ñù¦ßAÜÂDªm$ µÁ«gYŸèµŠuƒXtn¦uáErP­öއüþ€÷1¶ÞWŒ=,þT̤j{Ž6Ü8;ÜååSK{³ÔxX©\wûžƒÀ#Åý³ã5¾„^r†Òá—E†n3ý›rìý‰šFW¶¡—Ãðò]‚/7z 4]üíõ21ó}Î¥ðûò‡íQ)\½G!³½$ÓAB¶—yÜ\ÛxF“0Ê´í‹/ Þ¶çòwºö<Eb¬×" j¿nW¡4¨¿®Š*7~‡r¸FývšÅ)ë9 ¬Õú*1À¿ä†˜Ì‘ñhÃÛ#b2˜³ÿÀ»R’Õ#£² Yr%œŽÀD'üð`[4˜¬(!) ´/´”¡ûÿù€!àbÆ•Ÿ±8Ú‰t¡UŠböƒ‹ëönÜH‚8&Ó.z9‚z….vokEÞ£kO$m:+À餮ª¢ýä•Ú£U˜f= }ÏNÊSŠ þ©(à ÕZ?î%j[§t¯cüU£ïõw¯MýùÊa@u9̾˜RZ- Ì(I¯ýbg*ƒ?Žv,Nm„´L#.5~ú{'•}Øl-%Áδ¦,¢òU®DÿûçIBicôèÿÙ®rd;r–»jîàLi¥¤Ø©oáø‡sÿIPËûNÑj‰ID/zíf¥~8¦HfóжsJ2õ»A=hñž.äßÖ\5X^%±èãi µS!ê&'ÑQ­ød‹ö™bÅ’t†Y&t5D9ƒÅ–»‚zéwFÚétöÒ³f¢tu®F.@ΑèªBÄX;‹˜²ðVc¹;àó7Bÿ¾wm²§²ÐW‰+œp•LF²νêvêç êmêñZµ˜ÿßKÅ[ǰ§Ïƒ)ƒ›`dqH;üúċըbX‘‹¦­Aî8W%k:»`ÕÉsœÛ²Åè}Éâ‹{ §ÐÀî"Š VWk‡˜bôÒÊ+•½ª±%l€Ð¯R«Ÿ?Ú‹\P…ݺ ÁNjp)®¦l''É |r|p„ϳíP'ÒÞàSÊPN¼cn‹u.fjü>!¾à~¬³ò¼ªnYÖzS ç—*Ñf;_kfwbÕ¯‹Y‹¿TÁ¦|­èÌÕ9€Vmò¯ÀÓòyîxY=hw&nRlwñƒæk%·…ÊŒ-ãüä^foP–¯ù¾ î›,£… ®õ`ü4¶œ†ÏR;MñÔ?4?~…îÛ(ÚNu‹È°ÃQ‚½‡Ú81Á§üÛãïsy%BZïJpÅz7Õ¯ïqÎîZšCž0uü[fYÎu ཆ$ž›ëø7L螥cÎÊ"ÄæJò;àµÌÅ©â.?}\ÉÌ­~bM%‡¿_ð¨£þŒ-Íð¢Ä¬ãøBðÞ¡ú;Äœb­ ¨òÜ^ä`¿ü÷ Ñ2šÄË9M_4§Ñ´nRP‡R»'Þ]ç§eARg¦Ü¯ÂÏæ4Û‹ 5W=XÇ­Z9ø\ð@?´È¿Tãô;„¤3,èÁµ‚ò¼*|Pã@IJÈkÞ,b¯ížù&-¶RŸ¥x5,18+©~)(¨Å<œpr.{èWY$œ\³/Æ(êé†WMþÚSº©80[½tOJ[f¥ g+í85Ü ^†³›Ó[ :ÓP¯ ú¡9Zh¯•Ú_¦NÅèƒ@šLªéIvO7P–Kž¥”LJP;eáwÒ‚ùIíÞ_A(´€ ÓÐk]k±{Yé©Ýx`k³FªÙøP+¤ÎÌÅ0<Œ—j*–bü_m¹MGÏÒ´ÏBtŒÈ'Õè`Ô…;/À»{ò(HÐ7,iœû÷’[£±“ 4³º{3¨ø6îß1÷Øï¸_îqTç8Õ1ÕPŒ×vÜþõìQÔññItú»FC>‚r®„®Dñ Ïe½& ýØå²x,=•ê:ž•¢•#Í1Z0þð§«â>ÝÿW—9XºLý¨©p&«nD9gŽìÅ‹s£x”_ÜÆ5LuO¯Å?9*ø 'p×¥Yîqc ÄPŠÖG³æEÄ–)Øs:¼ÌtQ9Ø;T ®.Õ†ݳ۠£V…D?3õÄPòÖ$„Z«=?,=HÐï:µÌ€ÔáÌ D!ù³â)à5¢|†ê'Uqs+:ÊÀpGFªÅèWc)»ýU ,ÚydI´“íµö¤">øÔ[Pk4îY…׃#NêKXyÌ2Ž0ïÆÚS3+•a8a‘“N{_ÓÁAEƒB ¸…•XÌ Žä£!Àƒtˆ#A:•ÿÄ´¯½x2¥xrYî [„@Àx\"~Àê#­'QSjÛŒ Ô˜¶6#Èv“È?•^mŸ·9ÀÐÙc«°Íä1—éDšéŸ¿;d÷Ïÿýó#û Õõ)¥¤ú¸Ø<ŽcÕ ÀáÍð‚ÛËÝpŽÆ1Ð;ꀻb׿ àÚ¬m‘-aá–Ñb¶Ž6v f[r0þ‰Æ;ÿZ çij(½ÚŸ¦vPbšºéV#ž›/óYy;¬4ùˆÿ×ÃZy—®°(מªVô=O]«#ðˆ”EKz®Õ1'¹{^péåseu/ GMÉÛÈÄêüßçbÅ=’‚høÎÄŽoà]£`®,˜V­Ðí¨ÖÖÅh{‡6f§wLû&ýcùØÅ«¶DÙÒ ; E·‚L™í:lI0¹()˜ÓjÎ vWð¿¹;gÝ endstream endobj 13 1 obj 18784 endobj 14 1 obj << /Filter [ /FlateDecode ] /Length 15 1 R >> stream H‰lW»®m9 Ì[ºÿ°ã–fÉŒMÜžt¾àJ“u8ÿ?…Á6^»³£:Þ^€¡¨úWo­>T+FëãÉÇç_LR‡‚ýié ä§ÉàÏï_¼ñR{õÙ'Öž>¨8V35K•z. N¢8=,´.àR Ë©ëÓ)—Ï_vA{¸ýGÚøüL˜å©)}Á==cŒ®·”G þr<#ää·7nô1°²FÜk¹eÃ:Rò<€3öü¤‹î•hU‚ó ddW ïJµ>Gƒ«’Ú,’±`ÇC=÷uCzHhÆ Oªc~…È©5‘Î| æg*ªcµÜs¦æõÆ-“ƒmt}µ‘ìK¿×ªÁTh]в{aú8ç׆æ§tÞ'{ªrÚ ÷u×sAG /Oñzk®2_àJª?©ôz0ÿ=Z%•zEQ+WǪœgÉ%û‡zjëð3^ì7DçΖ†½`ÃͱqÌްªäûè@#~]‰çÙ†ïkÙ™Æ 6³Fz+©:‹20¢%í¢to€ —/Œ®šL¨½«§(½ ­Sþºpäð‘ý󒾿]Jîï+Ѻå¾^¨–ï£ô}%ñwæôŽð*ñ“×W91ˆ´›,Ô^¾Jò¢¡ó¢‚¿¬yãÛ ˜´s¹OÆ ö•`š¿ß^ú3ŒaC£ ¦7ŸU…SBR¨Ô¬'pIÕRs{@4ÎŒàfD#“HÁÊ2ùCÁÑç[qyú¼7c¾Ç|€‡â9cp¥hÂŒNÌÒçaÐo< ÐË„}cŸÊ!°+ó7ÜôóÆÛâló¨ÙØUR6œn㎠Cô}EVV˜2.),Ü2’^“öµ8ÝX_î’qæùr–QJ¹øRÁŠMøæKÅ [ƒnœ`º óÂ6a1‡“~%VÉx}„‰ö9x°³—hÝàY…žYùÇ™ÓîîÒ‡Ýcàm¨¯‚¨Û»gñ™G:ÝäÆ,<¤ÇIà’1‰ò&Lˆðø÷ѨmÝYúzÔ;€‚wûж¢pò*@¢£¿+xxaãQ‘U,ßBX J½¿W–âY‡*î7 I»6ac\ðj—p+úª¿B@ö\O/:V7Å•°–Hî\S€r•<ç[†&KjaÛä}L¦nÖ  ‰ÊXSH¼Þ„š›Ol+ÙßëÌ6:¢¼@D ñ¿ÖŽRã;AЋ|â×ÍK–í ú©žæ°ª CÜlŘ@nÝ…X!þz5`´i¾» ·ìy™Ú!ßͼ¶wLœÛ „Ü©õ«9ªj+æ»9.‚ !4Ô…úWs°k3ß»†ý^Íá³tŽêÐ¥¼~.{BskÃ?T΄‚:’ø¼Æ¹¨±pÐ[¶ ý;ËÁœbð¶uÖëûëÊÜ é¦º¿Ý/•;X\J³‹NVs'м °cJñ¨®ê^&íé³TÓ©Xö®©ÑBiùÑ]8—AL›ŠÁÇyËç/¬£À+‚€7•‡ó[I_E“jjƒ’l]ÂúÔÌ­leB¶ªo ¨¦Ý‰.îb¨ÓÊóVˆî´´ÕVFêñöÀÏÂSiî„J7Í3pŸdg šÝ­’+×á†'i;yføYâfødSr›» b:oP—Û¡¼ãÒ¥Ò}ÓWÖ ÿó×ਲ਼XL,ûi4B7\¼Í+þ¤Òœº’ÍœþY«QWA ûv¯²²Åê†ýÙ0 ‡Ñ¯Ó´¡ÒÜ@’¼ÀÚ›aµ£},²¦"ÕZœLØjéÎYP,›esÌ'Õ*ÝGí·bÝw¶gÇ¿i’ÙK1Ö†ŸåþÊ `æP+ ˜˜EJ(˜UT,yŠWô’¸ÅÔáY.Žw¾ØqÌÊà•ÐU+2L\¶ÄðÀiÌnÆhf›w‚›ÔŠÑU^ëNáÜ¢èS¬'¹4ŸbÂíÖ|ÿý•>ÿ6^¨OÓ’jOÇßoAé°(£û&ãî:ÿ—VÒÎ"bÓ«în[{* [ó]´xŒya[$~­êB}¦Ršƒ}XC"mê›2µ=ÄÖiée)Àµ‹Ábl =€jRÿRüÍväüÅV à¬%s~†tÐK£áö©–³P§àŸ‹«Õ ’m]¯Á€ )€[1Kªã>ŒŠÛóë„©°²×qÉÝÔ°ÉR; ‹¶¥ê,›?דƒAh/põÇl›C)“ áÔàg­qÔtÕj9's>61Œ²$¡sügMø}Ë^ÿç~ýñçÿ~ý‘­K d*PZviJ˜Ó¿ß8æ~d­:Ž{̇:¸¶"¬š2ù”v Up³¡XŸ~¾Ì F†g¨›uP/´–ÌÆ8©™Ž‚ Rr,CzL"©T¿3u¬¿;˜f¬ÃUç̪² tëÛZÅ^/edl£«U·ûóÆ"*á÷Bp¸ÆRÙ#1*C,x§YæÛ”jºäg·)Åh£GÓAMÅÁå *)A¥~3@W—+UœúË•Npý±¶I@·+WnW¿]iö¸ÒÕvZ¡Ñ”i±ÒíÉ´¦ÅZóø<}*4z–Ո%÷on …¥_N³åæc=iË[Ü…“`9µûÊ’×Öº¿Å›Ë;Ö©3òåIl‹++ý2öâ‰Gcù‰žTÁnDyRű±ó'zÒ z´Û“F0vÀ¯f ·nOCˆž4Ä»=iÈëxÒPƒk LŒ,ÿêžT ‹~”O4¥­@Ý–Éþ—+m°l¯pl©‚g¸Ý–F0ÚÒ€ëvSAÿóÆUÚ§u ›ÁÒœBÊc›kûµ—ÜOƒTjÝ—±êlËØ%‚ÓDí®N4¦¡’ǘ†’ocžç2¦á-1 ¯~Œiƒ1½a7¦ñÖmLcјÆp[솕Ø6[¡Á—… G±!È?µ/#ñæàñ…:Òu°ûB^,Ñ·˜]nSY¢¤š濯PoË„®£èZ¡®;ÁR•¾˜»ªÐ-V 3_Ia".~åOð ŒâQ‚dóYx¶©¡¡ŽˆŠuìšËLÝöGÑ>÷TÐP¯„ÿ|þQDD%¬[Ÿü7Úε¹Æ8”îìœèS=a¦ÀXóÕ“J SÇ`!dµ*tÊ)n|¡ªr¹¤­n‹"òߪ¡k¯“}í%;j⫽µëæ>ÎóHÉk ‡ð­%tôÙw“\1>ŠðÂf´gÕW àô|–ËÞ•V¼ÂÊï”–x[õÝßëŽ~ŸßýNÍÚ1uÉa–XôÖ"óiS~÷~ÎG½®]ZhÏAã|âv5>q!Bqñ¡¸‹5w±“ßPHׇÞègAÜfžAÜ®ŸwÜA(¦ß_.qK/é¸=¡bFg.Zã=»•QdH€±iXª´»Ïª5r4¿$ÍǘÞX¿êçwÕp ¯Ÿzq»¢²¨Î'”a™ùcL b{»;èÅ´äCBÜ©Ê#ÎÄ_hÍ}øÄO ¶ÄáfKì8gK,6gKþûã·Q0ÉëËÄú¼wAXI Ëë R¦ Ö+Ð9V-¸k£RãRŒ÷qŒ®cÙ3÷ˆZÓÊÙ^ØüË k¼*.—u±°OAB¥:L¾‡r*T).ÅéÄz÷„”­óC¬— ï«Åhçú9s´+e†V®oÛa¶tµÕ:¨=^uO“ëŒgM×•ë ¢cÖ——ëœÁW®oP½Í•ëû(I¡—릤r[ègG+Œhr}ßUf¦—ëe¡Øz¯7Ôê—äuÖݨWÎYATË^¹~®Z}”̦ZÀ³§ªVòÔbFi·DäZlÃ[g‡JmJã¤B¤`¯û²[êÓv˜›A¯™«†›÷u+¨t®¢˜NFîRÞT“Ñw!6ôkEñH÷&T@-g9HþÂKcÃÞI\^Âtj»›ÄÌ¥)¨-Vç«é•±.^´†€DëA®CháÅóÚig°oÅS@¥o^á`!Ƥv80­®îmR–;Ô[ÎÈT5èPXðy€kOÎþ Vêže^éPEW.̉• fÐ*ï"ž]N3ûê@ou¬}æw½éCðíëã½½î/ÖÜÅNp¾ ((.¹¯1'Õ¦<”düU3áñÓdW3Ó} ¬ˆLâ·ú(B?Ë–„ëÃÉì­;Ÿÿ¸@c%Íxš7«þþ€iÄ ÂXY# %Æ@©'ÿ<Áî÷}?¼ÕBºV &¿ªV@§?ÿÀV-¶é%Ï@ÚŽ#°§ ö§Ü)î”ë÷ñ¶!ée*Ï™KCqI»åºªæhý±2,÷þ,¸òém=ï‡4 e€Fvçuó0‘6!sö~X˜:LX: uñhXn† ¨2gXP°£í*ŽJ)Ãñ´Ù¿‚cAU•e§íQÆCø0h5Às¥Ç±äv̧9`™ŽV4ÃX[Ù…N  ©U›aq»ša±‚_±`_±k™· ½Žlõׯ ­uVõ@—4Pk2Âæ;<.|̘HйæÇ?ñ+ ù”'¼KËBù×ó¹îY,P¹½ç—Å 7GòeSÍÕߊ•˜N9Ÿ†û,ù]Ú^ÃÂ`ý4, —×°0H¯añ +[[^Ãâ"ð†ÅEk†Å]ë—ß,Ð ‰‹¸†¥,Ç~­ëW8ÓM^0t!rÎúàËÛƬµÕ®xÐÛ‡ƒ7h!…ßG‘'0ú«xXÀÜg %Vú2<™½šeä)ëð€äÚP«‘Q„€—l,f£$¢ 7ج´<ú«SCiM/7¶×’2¹±]Ñèrƒ]Ôª¿jcc©Ž0?<è•z€›[ÛE@Ü ö'~m;¹þX_ÿÇ×ïÿúñ·ÿý€ïƒã¢Z„«£!ñþÄ< §ø;ã/ûõû¿9ˆÉN·èlÚ?O¥&à¶¼ŒáîÔŽ]à °² :Škõªý©Ó—ÕäÖ9¹³%¦)M.µ áâãŒAÒ§½ +,ì<—{‹41ªþãt!k¹ÎÂ…1¹4sÚšµ42ŽöÞ¦b¢[w¬(íTvƒ7P̬ŠÕ-ú[áG×Ât0:fn2š{²ìHk·Ÿ3תV4£;Ÿ†îÐ{¢lÙ¿ñÑKM/‚üç\¿ šÏ:ŒERˆæS+º_Ÿù޾=œ5Ž€£ Øj_ ‚­ô| ,:£6J—TÕ¾ysnu!Î Ÿ­!Ûœ­mañ3Í+Ö­ba§R^§„òLj†º–UǸYÕ0‰ c7˜Tƒ¿Æí§g;à6íšYÞõÛÛ")J™¬®!–àí®•¬üŸ¹E oÝó8Q½íí÷ã‚}êuîâ!!„@I‚G%”œn³ÝææWÔX¦¢i£)Ög“¨PMɉ»Ï¡36é³ìÒK9£ºzÓÐÞÜè <اFا,n¬£÷bÐØ±&ßs ñ4KéÆìöL(ŸÚ?¨¬ÍÊŠÑr­Òï•P3‹Ôºß6GÃ/±˜OöÖºÇjL5ðRrŽï²‹¾Öø‚tgH¶òì‰úé}>p—%À‰¾îçJôÜúyí‡ýÐ £$¹:RH›Ð¸k¤pM]ˆ36ªë Ã-ÙJÖ·±®¥!ío9ÿ‡ ¾Iàá!'iÅ`úD:ÔþQ.¬„ÎWê*Âu–0Š«(va-Ï‘H ÍÃ|Æ‘¤ *·ò%¬‚!Dû$VsT6Èîו°x<ËðB€¨©-h¡$%ßòO­ˆ”ÚËúŒç3› ¿ÒDK &O]¸ö§Î¤îà±UÎTF±XüTd{Þñ =5…uÅ}z¦1Às¡0º dq9ÎùÂu\¢ 0,hÀ< ‡\vØÚ*‹Ë¶¥©`*³t`ñ7ª:£ÒÑ~åÊ<“DrüÅŠô·1Xô^g"Ú’r %¨ÌXÆôU­¬44¸g©©rL—ôpfj;Êül€'Li9¡vÅ/Í ýz3^X™SGû-ØH™ÃÙŠN±ÿg»Ê‘,»q ¯Ý¡ì1*‚«Ý2åÎ d·9÷ŸÄF‚¿dUT~>k"q-Åv¥:2{´»UâÁüû~ËGÇØá¨ÍN%‡2ÆÌ½ÀWL°ÝÉ“Rú?@Î\x ­q¶Ú­2HUèK`/ÝÁ”n®¶n·¾Vk»!‹ …WÄ~L<ýe_£+VwZ¡Bf+R=šS…󢆺W?¹ëœ7ÜšS[+ʘbóîéq¹ ÔÌà{Cà 6ìæ‡IÛ¥ÉPmÕ1î»Eg¬u/Ð#Š÷Êqä&vÏjÕÁÛ†}cÝYГ«ÊÍCØ{n'Ͳ-Ô~xðaÖ!UˆÐ—a{Öi wÓftº«=“x'é:E„àÃgΪ|$õ^˜ÒY)ˆ<œô©Íís’ 2äŒ=u‚éÝ@~¬_ÿÈ^öŸÿýù}ý¥WaoSªè«ˆÛß/: ºYk—ÑïU›j2À@ ±¦¿Úú`Š:Ô,n¼.ØÄ :}Æø6ó°­¦ ÙÇØkÛVGîAL®Õ*]“ãJl ¦Ä¿Ç‘ª‚¸®N('•>y--¼Ž¶ ƒj™^¢ÐÁ¹ì…{P|[ÙâJ4[óîáÞݨ=ÙYÝg]Nm·èÊjÀS?Lg“ë$Ómå>b‡ ºŒ½öÁ]Úø¹tY§ÖKD‚ú ¬ìéëÎt2x4ø2=ÿk²õ2qrèÓçTeÌv õs2 +aÝ3FP¢°÷8¨ÐI–GÆ,F츟K‘­÷¤°÷÷ÊYd=¥ÏOð<Ñzm¨áÑ®ÏYö3Ŧ´Hoùö*E }ÊÁMÆ_i!Xx4È ¦§/q¯<(?ŸÅR¶ÕuUvçè¯ìv”÷„s‹Ö£ç$†`ôWù͉Q@õ‡LÄÚ SèÕ”F˺ö¼Ð3Äm +èaïøƒ²íþ k™‚à6í6-­A€uð¼EÀ5•j6suÏêrÚø¨„wPðÝÍ …ù¬)%ϺqÓw7“”ç<¨2˜U†Ï˜9—že7ðl»ÉØ»î&·Òœ:È+_j™tªÆH;½…XìXMKjd˜3‹J "¶/y 5úükëlü,˜Ãk¾v‘QãÇÆk3GK8™ŠQ6l\Ÿ0»Íþì=”ʶ?'¥”ª6€ho¼ÚQÒVTó*Œlhºib }££ãxïñ@¡T$Mœ¥ˆ1ã~?(þ΢Ӱ‰QyŠ6*²t }ÐÈ•]/–õFôL±ÞÄëT4±ð¢Ýeûû@þ1"8cå­1|Ȉ(\sû|®FÙÒ˜²øž´ìÒ£‹™F–ˆT)s=ÐÒûʃ!ÜÏô!Ùj¡8¦¯Louº¬ E0ÝVƒOPªYÀ{®är·ÃüåYÚ)Žù÷BŒDïQ AÒôã­<’‘í*®Qð§$φ·LÔfì2ß‘: Ég1˜œüïŸ$I9–´ƒÅ·É’Y­f Ѫ¼¡_Íž!“aëjÏ`Ç‹ åu1wšñ[ÙT˜Ì½Ö¿Ì„E¥ù¯CHC-[d!=ë’:ØaºHºå 'ÛnWÕ½">ÔMéÇ‘Š‚âæªhøpªÃv0{´sä†Q¥UÕ:,,^œè¹6­:àK3 •Àìx»ŒJ×ÞçÚ¶ÏÎsm@ì‰[Ôü5X$;UµázÅ!´¯ï|¹DHöÏtP"Ù‹ªy!"[äþ%ó™JÆFã–’óúûG©5íÇÕ¶Mµ e\m²Æ’ZUƒóÚ·»n èhr‘\øl•å›êqoèôrÌÓ‹îiû=ŠàŒNÛï„ÐWp¢îÊvÖ‘K[›µì£àž·ƒŒ/ø¦8áÓŠç¹vŠÞ¯ 1ó.×ÞuwØë˜ˆµÏ8fßßp£)®r'Ìy“ Œ>" 'c0vuÕ;9åp«¬ñõ¯upx¿Vè’®" SyËÒû;pðŽãV„€vF…©‘Œ¹iáÐ,ù:t•¸.Þf,ç°±ï¹\×tL¯ä‚Ù±V ö)KEÒs ŒÕuª ¢µ2ÐW>×¾c!¯ÓB9b`ÀaãQgý¿ìmÿÚWè= övO Mm¿—€s†Rq~®I z “M­s²¾‹æù: Z§d'et·éwÙÖ)id[»ìŠ¥úÜâæÇN¶†û1]bÏç7ýÂPqeuP«ËŸöQÚ>.¨ÌÚZã,±UFO>w ä—} þÝÛùn%!Ä¿ÄnÛ£=·AcAZ2s=‘PÄÞq°£úT½´ƒÊ%ÑÞöþ…ÑЦDŒš­:ô©m½M‚lFÊÔ`} Xœrð0"Ð}ÆœsñÃh“½™H x꽟£è󯱷 ¶1¯éU-"ÁmQεœHÔ­žß‡G†m· ƒs…íÖeù—;GYFÐÄ5 ÀÓÓØœD ø”„£((óŠ\aƈÐâѪÈÃY‹]ôžÝ´]Ç66ú6-ËÕyiAäÒÐ\í{„eè.;šh¹åÃ~™\´&ûBbuÔ¥ àéù“©¯u.¥\¬®d©£ÂîR/ë@é5SeéÞ)`7nÓ^ïŽUê óïeCÜí=ŠGûÃIoFLŰq\‘LàÇÙáu-^Ñøu1ô|?fݦSM 6[™@¢àb •Àº¼+jc‚±ÏxlÛ6‡d`àÄnó+ÂçRž·¶Ó=~‰6G`žÕÎS{Œ %45Ú´­ùh/ˆýbÅEZ—ù[³šÐøÝÒŽû\Xɪ{–ÚQšfÕéÅIá,cM8±LÖ !QJÖ ¨ÿBQ6S}nÁì»kÝÍ)»[ØÍ!ÐÕ,MëÝ5jd |µ¡­o Æ«*Ê%ŽZ«m<ØÇvPî,€:6[·m¶ê±»hs[ ¢4Ã:×ú?ÛUŽdWŽ}Eè²Û¨à‚¤=c–;'PD{2ûþظýñêgñ‘ $2åsÜêÖ>GUX!ᯂŸ ¢€KF¼4Rä¿Ë¤¤f×]±2Š- Ã\ƒŒú w!“WçcRj^Ç1‹F[“N:ÜÆ¯mM„n¼[m¨¦“w"³ìÑQÆþº°K*üà` ÃSnìmé‚ð2%vÑÒý¯µŽ—âÜ|†ø›ôÑ0µ Ï~y'Ç.€‹í)ñ~¥šؘ 3¼êŠÀálŽàû†ñÍ(P6^æ]K¢ÅŒP"ÈÐb€ºÔ!Uî"år"›ø1[Ñ·µÁ–†® ‰D¸þTº¦ƒÿùù#›ej²{ö¼+énº¿OÞiêJ0ØjÏV¬nÐ/wƒ}¯¤Í"¥`:QÀ0RxÁЖ¼•ÕSfÝ`îlóß5±t|‡ Oª;} ô[®¾T¥ o*›—õ±Ì%¯a¶¬a`1¬ˆÛ¢Ùç$g•r/á1ʳçr±÷ù"ø*Ñ,&y†ì7|r9/ ¨§y®yÆö(ÎZýÐ5¾eHƒîgfÓ=ÚÜÆó¹ð¼°¶?^X„lØS”N×VÐzÐIj”] ®à+¢þÈ0ž]/T¬þ%+œ§S€ÏJ¡ûB%§ИIêýlŒž™œ/zZŽM¨Ã‚O&™.l¡tµv\ gV_Ì:wAǬ®t亿ŸÊ€„$Z:úKÓ•)1ê‘Pÿ0njFLB':unÁP“6À¥,¦& ÷n;çÔõŽÂ.›e­a³k?J°òÔv?öÀGš0§úCM‚àv)ó½ƒãsuˆGV Ô«ƒú§Ñ¾tµïЇìgGš=À -¤ ‰^ïg!‰Za/-ûé)•9dSZA¢“$ý`º R¬c7®ØýpÑ8&Ç»ßnE‰¯Ø|¿úV®RS»›`uŠmþÛÌ“+dÚ4Õξ¤dœ#Àc±ï"(¼ÕÌsÞl†2«¹^¬…“Ú‰Ùç6ˆ.ßKÁ]P–Ï–©äu>j Sl¤ÚmJöDL‚`"úà]9<ó†içL_ô*ŽÒüÞZÁ%ñ» tyÙØþÔè½´rm7ç{bw¾Œ%=•A³ë.#®˜EäŽ'˜!\ç73óHòè/2F°Ê~ºãÐÏÑhßO$°Æèö¥óŒ*öœâ©úg³}-)9÷ȶß}„D “Ce)JZ•¢ µ"°‡Ò/¤DÀ w¬ú„ª–’ú¯4äÿÝÔÒæiN(°¦U'M¾”ÅÚcj@ªM`@Ú¼ømmHh{¢¿_|é Ȥ¡ž‰Ìàéý+RgiZ9Ü—™&ÇÂïu:=ö¢y’ÛÃg¶ƒñ™%(Oò†ØúEyšÌÊ”'x/5_¼' ³µàâ½lûó ö½2ö\Âð à†g´KžWzo½NÆ$ªKJ)¥ygˆÇüÁzœ@-·.äÌx¥q‰=ÎPÜ_ÚW€…ùbH.å ¨Ø³ÐzÁ+€Âèž7X(çųnT!g¸Ç3ƒìÏ%ÔBṵ́ù>瀼ܯi$`×ÙcëÂŽ“ql¸„áyú© ÏP]ž·YÒð¼uÔw¦éÉjNˆ…#]¨b10‡cT#áé%ôÚ¼§™;¼ÍÑ´l4r€l¦ËCX8±©ÏïÇS#©¿®ã¨~a†Œ+4ñ"§w%Ø5(!_¨ZêJ ŒÔמ’¸¦|×¥(Ðý0À”ôÞ²¨ðsó)`œj{1)Ù§0ª”ïà»0Ä€•ñœ°î…ü¨¿Uí_ÞL;ŽyWÛì¥E冾ú‹¤‡ttsùª<<°;¤p”ª&Ñ ç0“ ·½PèÅNß‚ŠF/ùãtŒ ¨¾~‡ŠEÏíuÀ zoŸgWµ·–Ê¸Í R“nJr–¼¨)ð\¨uèÓZ¬c 5¢H ±:Ñ›âvë¡. ÷b²›¦¦ŠNðDK]ØÍD,y1lð¶¹:¤DA1Èô• ÎÙ5%})F…¥I!‘–ÀQã•Â$ ¶›j‹’ª«¤&>PÉ@T…`¡Éd_suSª„" ø«„)í­¸v+cøüžâw-².„†¯U’’SïK¶ì‚nœõ°S]¯íNÁ†¥ìòP:ú°U³žk½`¯àYä§[JŽë¢@ fÑ÷‚SórÊî•“îUb¬ÊÜÖF`ó îuElZ=¢Ù<5MjòÅVŒMºNƒAþ5tWÎt-„~@æž «RÍÇá˜7­¼"Ù68®„!Ôëq}ËŠ4&2wdËÒ‚E•{±Ô’»@œM¥yÅd¹Œ€¸õË5EdU\ÜpÍ–[Òb®"u`.’Z…ˆ ³>ñVÕ§VxWüÎþs5°”÷÷Ïôë¿AƒŠßp|ÇÂ?N’$¥€HïEèÙ¥bmeðº†@P*9“¸ÐËÕ•‘ŸhîZŠo1Ï…l l4vsÑ\ˆ}LfQÿ‹%»±,ð‘×â¾ÕHì›ñÍ«ÝÙFâ’înÌ–„9'—4 ìžÄ‹QîŒÔ÷üTé®Wîu+÷6S8-a&¬^Ò<Àß¡ß+çñ,&yûf`eãºA"ÇûÈ`Rój-Í\À.HS&Ÿå¡Õc ‰é¢1 5ž?Öhx·¡yG'ª‰±>ÉR´–G[ß»|Ëöýïç¿þùù#[‘‚’1uâ£;•œþ¼8ºmôK@²Ò×<¸˜"~·D‚Êô§ ˜ÒRÈM ™ % TªÛE£¤1C3,ÈZ7‰ÿ±à×ÂjšÌ Ô”¿“¨êlg$Û?G¥êx+M»UÌÀêÓï ë+Kò =`q—âV¿_cuöØÃúAmmÍ#2·‚!2‘WLLJP’yK½¬¯]Þ²¡ìw ñ°® µì#ÅVÀ©P¹M¥€Åü2•‚C<ߦRÀp¹Ê<ŽÞ —ùçò•g§¯<£u_yÜgÙÊóÚQÛÈLmn ÝUJ Y¦Îé*¼´Ïúm+O–ïm+åqv·º­<ÁÓV¸ +‘ªß/ŽÉ6Kñ0²©Ì@CN©y ×¾ka$™äRÙn·#~ âô•;‰ÛV¹^¶òx—ËV¸måñÜÛWÞà2–7ìÎòÜu9Ë#„ËYáng¹ïµýÒÎÀi­ŽÎ9–¢Å~VMžJéãë|á º]eƒ3 5êfâ#m£é_#¿Ôç¹ ҺÞÂRžŸ§ëÜ™w¤¢(Ê}è†Ù‰Ÿ› dêZðk)Á¥%³HxŽlí"s#¯ZA©ý° ÐÌà{ÅÁYGÎ1Þ¡Açä -pêY‰dú¿¥Œ›ë’=›ºzxNW~)µ© þ›kDÌóˆp®lŠœM1Ützm‘*Ó@‰þвšÇ–絬Ŭ-;út°óˆÖlscÔpŸÑÇ5ó­ ±$Zî…¸~(–öÇ_¯R`q¡D¡¬Œ!–Ø›±U«NQP»éDÛ˜ßdð±ùQA &ëRFĦªêÑ´"0]ÆRMõ`À5¾‹YM–Ìñ,âVÉ®êÍ»šéÜÿ[¿Ckâ¿UæNs·1J^7pbJ§V°9iTÈýÌó¢E*#”ïI‹s[¼Øci^ŠI" ÜseÙ­¼¦ä´æ¦EÀBª:6/Þà¿„WK«^É Üîø6™@L¿Ë™K  3†‚‰؋ɘŸRKj©Ï¹žà]îOG­–JU»Ä'í¬F¥¼k:SXRt)H¾D̬îb6óVƒƒòÞ9v—ådŒ]ŠTSº²SÁ‘ÜûÁd—YnͯÐ,AÆžÔXhŽùúûº¢œÄüº23Ÿ.óõ¾¥¦Yefý}*‘?ouÀMz=:[Pæ5Sà„PŽtÝI„ÇËþ"Ì^TßãíõX;e]ªÅv-g°ûXÌœîšÜ½ÄݵlÛ»@Î1…&Ó2ãúØ.+U.ŒÍјÁôPöOxÉÔf•³¡®×/ª}=ÖØm>kÁáNÅybh±YûWApà ø}.B˜±ß9¯’–Í*äÿ2€Ê#| àb:€ÞŠh1ã¤3ÓH·*NìK'ºqàh„nÓã¸ÑH¥q é¤E ¸æð k$Gw¶«Q±N±|ì{¹ùØ8F Õº‰ŒF«5\X¤µ £Ü†Ãuî;¹¾êX:üÊ"FÆÉ.‚°(y%ùxëÊ÷­\¦3=§“HÈC1×ùË(”˜ûy""·~òÀTo,4·œOh/ªïq€ÙÿÞ).ªÑˆ&p’ˆåj$bwr$²¯t? •…oŒCFØj3UyÍÃYt‘÷õýpEÑjp©òXn®áF/àA#†«'{sÅ·sŸ3«çr;|¡»ˆ™Hwe³›V5¥®ˆf^]µÕãîgÐbη¾>{»´d9ö~¹÷®¤ŸvhLÌL9»4{¾u],x¶Å8bìÏ{¶pVgË‘Dä=µÀ›Nížî±×ɦäç›/줋 i,t~ß(Ë%kÜ6.8ÿ2QŽ ù¯ð­œÌKu¦Õr%àaÆqò<¯Ë3àú]C¸˜‰ÌÛ¸$øM®Ô<ÎAn”.wÖæ¶9H&å|Y¥4-ܲ¶vÏɲMcXfzÛœ6ö+(Óý|YýH†žöÍES|>9ÂáÆ$l–Yt]bo·‹o«me•rœ'E˜ Ûe4µæ8ÂdÝæS€'K˜\t,aÂÒ7…ïÔ±ÄÖµŽ$LŸ4a‚ÙÑ„»ÔE€ÛÈlÎG¶èt“gºÿÓíÜHo'a£o–ã`‰L_êí8ŠÅm„¤!ÍñœŸ‡=ZâáÈ•|T Æf·ö•Í•í#bÝM˜Ï;iÂL¡£ ³Ž&ðn4]G¸˜F.ƒ&\¶FîJérkmð_çØæÉß›IG†›6SÖûÎx‘²<Šã ¼Zá ç¬ƒåæ¬Ãßž~Õ36n#v êO›ðÊLh‚šÀÖfñJ‘°ÊUT掹ñe<¿‹*ׄaš±E”üQ& ÑÓÄm8d²SÈú†qÕİüm¥°gpÛ¸ºeˆß\ðÓ|8ÜÌ@‘`Î} c¡PËM"ÑX:•¦Çªýxcê<\@³öñÃy¸4Íy¸ ÕËÝŒï!DÕ ÛP,Ò»{ô!¼GçQô²^£)mcCÌp³ybíÓÖö¹.1GÑ -U“»2!‘5í>®ÎƒÄÅ|Áy>®ÎƒÀ~u'Xíçýê<|Ìí<|Þyøl·óðWJç¥U; ,É׌ªæ|Gžè|y*?X„·QëÃûz7¯ì;<è}‡ÃAäÂCOê­=¯&Ú>Ìj›iH³•1(iíj÷u¨Œ+¶É ÌåµÀu+0âm¼‚ ×1{iWAf¤]$0Ÿ‹„ {“U8 <ËÂ1 pqü!!Ð]ÁÃÑÎ.å7Ó Îky²·OóñÍ·w?<½zûô‹ï~3þòëϾÿñË¿ÿñ‡÷?ýôñÇÏO¯úýÇ¿ÿóó‰óöóç÷Ÿ>~xäoŸ^…ÇwO¯¾<}y øëÏ»ÿü[üí_Àþó(ß=þôçðø€3ïþHéƒpëÕ• !x‡XƒxÏÅžãz¯áº#Ž˜@>¯œ~O©ÐŸÜ{þ}U§:Hg`…}Rv¤ Þ—X`Yòš@íXô#ÞøÙ+Ê‹jaÜ.Öµ[_Èà™Þå¼[¿a2>éAä’J1%L޽(˜çÏç–ëÔOÆÜý¡[4¦øx1…ÒÆQžìæ°Âö3ã‹üß(ÞÆJ…&t®±X`^ÜIÖf-è%²ûfS(& ìn{¬ÌÍA‹¼Uû&Ôm—ós Ã/qÞÈ*(­¯y$öÍÐüÂSéŒ/3Â`šz¸Î4Ìqq íiïópÞŸŒTØÎ[`ºô“ $–ñƒH8®÷ØXHX¸`{JÂÜ`™¨ßÄáš%‚p!‡mz8w/9hÉËÜ­vÆ JvÀkåù€ˆL:Že °¦Çûêpçpɳâê3ÖZÕƒµ:ä‹À; [àüÁ ¸Zv` ¡ XZ•m© ÄøGd‰$X•Mjÿ3ÐÜ*d,ú…[“6=á½ ÆQè.åÎ)©- ¬r³V0/~¶öu„mE#¼»C£`‡ÆPµÚz€¥H—Fe2€ËnîîaUƒð¸¼ÎSUP‘RdYòAÏ–€ÏKû¹ ¬Ò(Õ_{F:x›Š‡%C\«}¡lPDöòºÏ:qêó2ß(^F½Ó Ä4Fa‘I‡¹[î©í*58¨?|ƒ6ðÔ–°0…s–U4ˆ›IöV½i™ ¬ý ¼µ¢baöÔ/¦p´@¨:ß#úØc_Òãvêïq=KuOXŠ’‰^„Ä_¼ý Áô¬#™ó¦(]’t8¿Vbÿ§ŒKq{õÜŒpÓJƒà8ç¦VÁ þCÛL7›o…›Iäe¹@^œt˜-Ð=ÿKDÐ×PZB–òzª«Ì³TÁbTþÍajOÐÙ¢UoJCsêSÀ]ÅŸç¡d‘ªÝ÷"„ªy‚g Ðñé. &þY5GšU9~/ÏDuzÂ"K„’/& ©Ñ*Ì% #—ètöŽoDñM­ÕÔ­Ä¥UX7˜ÊãÅÀúI’÷x=þŸi:‰pq*´c–}\ l­ÂtDM"VsiÚÝÇϵ[Ö·†î=xÁÇ‹ ¬Ô~ù…ãüî*É–$…aW̸îmÞÿ<-cÉDõ°©úOt€Y‚aUƒ½RS¸ ï‹>æ&ÖEä‹uâ›þ¥pVÀzkº ¿ê0pµ©­üê· (whwÞ½çáêÃinyÙÔ‹  3¸áÏI­6OD‹ÓÔ yë—Ýa·æÎ¸dIYüõ'`0@ò´’eµN:Ïúä"",kT50|ÆÏ…t¿× æV§&l•o€:âm虾ßßqý»l¥e÷'B9Zÿ}$§yäe[ôS—‚ìÉ R[ž†R©*`o>‘§)ò4F˜<Åå:A.å‡V®3Ë»A»ÐŠ·ØŠÄ¯0xÑ:mLá<¾^w×áÉ*Áx,æ²[HÁ •ÐÕIŒ¿¡(âÆ>V?á¥h²° c˜VôΈƒ=~•SØÙ¥–lºx¡EÊ PƒGý`lœ>SOΞU+©¹J|–ÈÁp0Þf JŽ,üL\¡‡ Áa°•´/µNJ/”P…[ÎW¹W‡¹q&j‚qB¬CmÖVÿ¬.8˜è(|&“^[¨¦é4b)·ƒF®“ èƧdëöô¸Y[P(Í_h¤ñ‡y¶Á#¬Ê,nÇáD²ç?ê°‹E®CÉGÔ0)à9„{±‘²ú0 6»–3NS…Ф\Glxh ‘ÛÖ4Ösý !ïÃ]ÌBÔ{…ËY±Êý¤ 4/Ô»Cm¢Èº”H|ÄâpçÚ–š tlià€«I|Ç÷<ìò0¨…LÅv²3?®dáDm‘¬Ÿ¯ZÆw8·UåÑç ôi‡¾7³Åެfû…-³“2 ÕÀÀ—û‘é –úßÂ+_`¬O6Ú¬®>MK2d¤![G¶“n›$fVäœ\¯ý»¢"Þ§ˆóh€¶¥g=ºþqÃe¾VT¡Ëra‰å3‚&G„×(‚QFßEnkE“5Ž•›6žÕܸÃõ«ÔH9!ø<ê±.& KD·¥#¿Ö7´†d”dœ/@c½ÐjÖ3‘Ž/²Î]/QßîëJ†êßyþ^”‡{aGµf àZ„5ùÐá­Õê~_ñöÙ º’‹ І´RfkZ}û2žê¾©¸ÛýŠš²…œ½g¥#å¤î­rÜÙÌÀC²É^/p™2xbÕ¾Üuéu+tÀÒ‡†{§EÞªŸe)‚ÜI´~`èýó‘ /@—.r»È­™7Z¸OÜ0MÛ8û(ug^1†{%Þ8ム°Ôbð;lœ¤p †É,¹Òc<’„c›!ìæûp¸3•íÔI ︮l§èke4>zQýÞƒiž‰pܦ̪'#ÀÛ¸Ö}k€LéÛ, ðÂmæ/öêX‡õíéÐð½çs¡ |M0BÏæ5¬< ×gÒMØRmÙ `ÍøÊÉŸp¼Tš¶…TöÃc±Ñ*G »ŒÛZ ÇûTŒµè¾rù¶ëTÄþ™©ÊŸRö¯йZs`EÙy¾–5ˆÞCt9B^uß`ܶRËuWŒ;wìz`½É‚Bl‚¶%¯¬¾²;­qŒvéKs½ÈýÀs‰!µ¿öª/‚Ä p<‡o³ãê’ÝsY4ÀÞT{µ:ÀVRÑv ,À6ø ¨¹Ê£Ùè‰Kõí`;×1ì\Ó8ŽåB`؉§•2yò®¾÷d«œÍYbÞ̹ݖ"¼°Ù$×bf„ÞRˆÙ‹#‹ÏyTø³&¥ý,c¼Ê·2Ù:·ZŒë×ÁWÍ ®SOÚ?¥Ÿ"Ös^$‹!Fâe {êguë/Á5è¬Ü?˜Þ…jIÀ‹4¬äÎâ1À¦Îk=¹ p·¦, ×_\±{9À*Án|¯cÕ¶À3?9Wèïë·m…Y0J ¿î¾~ÌÓøÞëÖë~m!#­Å+fvjºCY”*Ñ»Œ[+pD©<<ÌèÓF›ŠeÇ{ýMxµäV–ë°ôj]ðW¶ÇÕû‹Þ,ûŸ>Ê"un*ô$@x}dYŠº š°Äxs×ÖŽ®o³"à –,ƒ±±‘š C›7M›âª63i(+님1ŽxD± ÀðÒÓbç€Í½+w!-×ÖR Âo?~§ ®ÍØ›zË!êb.­ZnX6raÀáØkc x 9¾äÆÑnÁĨW¼ð²›Å'C±ȣ¿Ë“K.è¹!1»3ô ³î•Ëë[1{?¥è[M~?záŠf\æöYL"W?|cP†X«a1Ã/x‡*®{¼½€1\è…íþªÐ^8»bX#gÞ-Ê_0“~pEo먚µ8ßÎáîx8°ÛQ"ïø;·ÂÛf <ã-ž¥3 œg™Ç+Ô…é¦éù ôr¾«1þÚ‹úÓ‚,-FðR~Že”øB}êa°Ð:}(/MLUm‰1 èiqȩǭn½«Ë…¾›¢Õ¦| ¹—$ªã·,hËu¾]á¥d sA³¦™‘:0¸v*2¹×ç*Vrⲫ‰ÙOA)îîPÒ ñ¼­5TæAÍn5øÚó³ŽÜ… arº¯Pia"í¬]ºnÞ‰µY”õQnpU)°[•:þxÑŠj†g±b¨FŸF©¥Í‡+l^5/N]ªçFÇQ…í+ƒÖ`o­9!»Þ(Á Tþ´Bʇ¤›¬Pz ,Ð ¶‡«ùKx«‹øvá›øbo)ÛîBóÜ Q0Ö®.cB6ž §Ýiàx‹…ÍÁSøè’ [àò­­œ·AÇ ¡Øó‡ÆŽ² ÒˆiçOCÛoj]|ºiè¶Í³›KŽ?aˆ_]Îç÷O•f£Û«T‹@ÈÆ`?ÚÅ{µ‰g¸÷FÔBâè,S‚`·©zt!u?` ƒTÐn`Ÿ¿¡~Ý iÀ`Ùql‚v¤Ág,²^d²­qWooo-¥aƒr8|Ù8E † ¸BÄ@—LEœûzØ%§›aé7”W(øD`aÉ€tö~S0}ÈÊz“F¬ôM•¸záðö9¿Ã>ª`–ÍKA™qvK}yŠ9ì³OÉA6\8G]!3#TÚp.—ßûŒ)Ð*ŽHFÔ=4¼Èm{ƒ«'Á½ ddÇmÉÂÞ ºäû×W¼¿¯†ô®º|ßJ=ÐvCç`YïŒ °·¼È,PyŽ[awY4³=•1[÷Œýi¹‚‡\d(v³ÆÃО[—±u¾¸•ñùãm¯÷™î¶¶ÊýF*ŸjáD®Å¬&wtïìæ>³é¶¯WñNTç¨ëíä¯ÿ²,â[Y§çª¿úüiÖ®‰ë?;Á~ÇW¢[2¯¤Nh}Ï?åáÂɼÂkmЖ+ñ5 ¢"Æ0‘°MÿÇVÓqÛÇOÛþ›a]JTéáÐU‰µq˜­S‘÷—ñ[Æ´—¼:)`<Õ“‡µaç½¢qîœqÖº‡üûšàS*ÿ óN¾ endstream endobj 15 1 obj 20419 endobj 16 1 obj << /Filter [ /FlateDecode ] /Length 17 1 R >> stream H‰¬WÑŽ\· }7°ÿp_ØE3‘DJ”Ú'{Ó‡´HaÄAQÆÚM]`7Àv"ßC‘ÔÙ;/ÏÝsu)Š"¿–^å@)õ­×žyô²Ý]=ûzâR+ž8o7Yp¯cÇŸ˜þ¯«´};_·qÈ¥ÚÛ–%6œF&Åó!5áÍ@Ið.c8ÖkóuÄe»Žï+ó0»#çìkKâæ`•íÒþ×ê]vï„%7wžG ÷„MD ‡péYÜÅ‘ÚfFrÅÉr.ÙOpõ:v¬±]÷…{ü:•í¢[×Ç1ÜP©~NîÄáµÀ'wšrçpËÝZ>å|„Ÿš™7go2—ù¦˜+í”2 ®z&Ãê°P•Cé#;Èî âD‡?³{s|zE°`_IE|îçR»}Ö4Ô7k=Ü0\J‘#üÔNL-%)ö&’mí@4ØðB4ÓqF1U™¤:X†hMü`šúR|G¤Í ŒÃöÜz‹î$º“‡yõPz‰µ£&߬J"w µæ®rû÷£{ºqÊìßwÎ~ñ9SxÕ$ÇQEèÈFdÁLÒ–·¥”sXæìa¯yAiv2: ûZ„‹†[%­Ä/ÅZx[‹Äi9Õ•»2¶‹·x‰ÛQu‹àšçm?[tPcfXéÝ×J^_g@µ¾¢ œR"µŒrÃ^¼êIénd?Hj•·Kž-Ã<²%qxV¥{Þ€C²ƒ-j8Jû÷QÃH§&-ì4©É âEÄàí#¸­ZÞÖG@7vXs³ ä·ûЛWui£®Å\ÝlçˆLrHd7€¾ÁÁ+QÞÈ3¢e¬È׎Ù/_M«"q =Öôšì¼¦gÀy*Œ£»©Y"CRœ€[¶æÑ>w·;[ÏLò”BQ,ÂiCÜN1ÒTÌÙQk|ÕŠ‹Ö§&Þ*–>:Þ¤FBÎŒ‰&]r˜èˆ„{‡žxuÚS8Œ³ Hw[/Ö=•x «# Q)ä 1{GÌ úˆh²Ì³H¶:‘öŸèæL¹¹‘1Š©‰,µJ"þÌ=ô€hùõâ¾5çZXàäÁÃèìp'·Uû¢W¸Þâ¾—°Ô»å°^ý0•Œ rë52¼ŽiËh¥–XÊ©xÖeŸmr1ÐZÃØBË@vï€[ƒÄ®à£™ª{x’²1ƒb*P Ôü¸Þ1Žï£»Â•dmª½9@Ôw4Šã‘c+ñÅÃxWÍæ¸)–"G.¤”ýlÄíÔõ—jù•Càv[D§ˆ/y ¹Ä)žÄñ$G×Ó×{>fÎÚ,{[Eâ³//Ô)ð33!Cš2Ötâ*DajÅð±ôoªâ‡J9/Q;¹U%j~ÅÙC‹Ðó¼FíÆ¢³Y¹*ÆNyÊÙ¬å¯a€×÷Uo˜Vœè`££ï“¸]ö~¦`mË-ê¿âAS·`k&ñÀh¦?§ÀÝ}(“Lft×mìq@®öÒwüô.–®HÈIëÒ éÖ|¼›ƒbmÖ±N–D6\]qÁ_«¯ToaXÐSon@œç›ñÓENØ 5´­Hì*=bBÅDÖ‘ÌQdFoˆƒQYçeœK¤@Þµ6p1¹¤íÞ–Ú0œzßT/ÀAæÖênVTœ„ÙME³Y%Π¬-Bª§À–=@éÈ]W­€Ùk^Ï`úPêv1Z·'3•‡¹–¶Æ)˜qꀩV¿Tb#\cæ¸éà.$BK5è!ë˜uŸ`Á«OM¬Uoz˘t»ƒÕîÞæd ÓðysÏÜóçnðÔ¬7Ÿ1?óÿw¯¯ží¡[Ù¥Üñ¸‰S‡Qà-"1(¤{ÓÆÅçKÁèJ‰¹ !+9ÄÚ"`Oö¹_axôÙBÉ$ž÷Õ¬øb˜ R¬ú$"HkÕ™Î!&&î:×§…¨86Tn^Ü~9V-™çD!”â­ùÌ6g*¨Ýa_ì Ûà£+KÌ‰Š“I(:x“d%«ê+-ykà8÷,ø®ÈÑØ2‡óxŽX–’æ=•ÙÙc„Ë&b²Ò¬°/,f÷’n ž»-h'R}‚+2‚뀃Xça StÔql*jÃ0}ºZ“´â¡ksq)-C„ŽÐkîñ™ ·{äjWJ Ì¾Gnf•ÙvRˆ2 Pˆ¿èwrË3¸vtö Ý"t”•}CÈì(àèþÅpÑMxl96ÔFüc,Žº†ÒÎÖØ±¸ÏÌæF ^d•$­;%ÄÄ3H±œÃ`µÞqîj„˜Pù~Hý˜#[/σnˆµä¦‹I3Öo×Ë@äЍøZ §aÀiû܃ëÝ7É•"f‹I™bøhT1ÎN3`Š:|ÃÔSv0 »VoÊÙ˹ÞB+Oi 2!t9™J»è/.1S–fé­ˆnalOçã2”)+:§UÀ‡e2@"v~ší'À¤³k~Öt±›"»ï›À1L8ML»‘–%ÜðiâÜ·åu­X ‘u8ZxHQd¬3 À •ÊiÛ™ 9ˆ¯/ù¦xfg.*=†Øó ƒY9ƒ‹“둎A4\A‘d—4cÔe0÷À» † vÓm 7j¸KÉÑRÜúù†Ë:êc“îÜmÑVdpè3]ïFÖ…ï›ÁJç–×MTÈ9Y­¬w3tK鞡Աžk‰~Xe‡Ÿ˜Y‡jZ^.:F‘• PL‘ µ® TJNÍ£ ±üÌÎØpøÖüͱÔ&È× ÀìêßÖä$X“I €‹K[Þtÿ‰—\AÓõ‘Úvуë}N™¢ÞÞ@ÐìsÊìR–¿{xuÔ@µûíQ>j¸Ö‹­âÎ-Ï=__íù‹íÍWÏN¿zùçþöO÷ï_=|úï¿ÿöîññÃÃýÕ³‰¾úðÓÇûSüùëûûwwÞoüB¥æË«gŸ®>]å„Çò–æ¿7¿è_ÁÓ€ýoãí»íÿLÛ{H÷7ßÏáv‹X»®vR'`HÞt ßœÂ„Ž®åsóÄÊçð#3÷ð5m…kèÀà üdhxÐi¶³#›ðY<ô‡ †ðÓíoÞ]v i”&Sâ‰k^ã2¡ÎÔlJ.iÖaK&‡'Ø“OÚÞF¬lkR‚ðë“=+ôœß:*pÊ’^ñ4š¥ê$ëIKxÊHÊh%1IOSí˜ê¬áyÓÅgg›ióÕÛo^><~ûñöñãÏ÷ï~Ùþ€äxû•ɘ3éÅöÍß>Þÿ´=õêåíí§»ï~|§k_l¿×•Ôÿ4àž4à9“h¤uîÄ"ŽÔ¶¾ƒ’àø9 xávq=î˜ã pÉv„Žk´4Ƙ¦~ŒÛÙá‘ci©“LôÉEÞù5^)õÎåpN jq^<Åío#üÔ2ŽBœ«þˆ%ºHÓ —žVlÏSf1üy~]JÄÏ&í8N{†-ýŸöjkÑã8¢ï‚ï?Ì‹A2‰ÜÕ÷Nž¤ub6$È(QAˆ•ã(d× H1þ÷>uë™ýf>]ˆƒØ=ê©®ª®:uJÄ2@Y^õu 2¢{¿(u‚S+c¥_¬ð_,‰NdÅ2˜ 4ŸòÙã,ÉSÇ›»”Ô­ÓÈ»±ê UšÅa‘Ô,¤Ú…×§’‚#àùtëâá#½r·ª¦q|S*Ã@)(¾ŸKË>Çd*RÁë ˆôä1JªGyÉu¹Ç•ü\û:?[À캡ô)Õ\ä!™÷ǧ¥Ž ã.ã³&×Ã>hGƒRÝÀ}´efý‰¨!âDú1@ C,Jnl³€ù0E¬¢2÷ ¶`%άÖmÕ” (SÙ T(”nó>Gš‡s̪æ£såýsD—p¹¯1 æ àHE³Ã‹š.¥\™nBßüj5‰ÜCR…Œ,ŒªócŸKjâ •0²'•é¡2Á®y=¿ÜÒºóõÚŸÁh+!F–7‘èl-¸Pð… ¥ipE«Ö˜ Äà) fŽõj«Î5¶UcqÕú®Å\&ìJæFHÕ'’…]ÌWš/4W]KhnÍ—¤oMtqh²u•¨u1•yÖf+?Ë_=…oxôØnòä¡õ 3ÇWô•“ªagU|• Ÿ+–Åå0 «—ÎýÕ·¬`R¥¤ÉOJÂÜ%þJ!–l¼4Y»ÈO+/Õšì©­9Ì"Uäq-‡EaÉŠÐÃQ<kóryíx«²öQ·x·@z2"ê)Z^'™À.˜<ªo¹×¹†"¬Ši%¹$Ï$Û#.CRv{Ï>•£‘‚Z¤x¹å—¿õm C&©,ª•¼> ¡¯§ªØ’¾DåZj¦¡j® ÎIï‘¿»-3™ÓÑuD±b3/ø6œ3Ï®>µä/ÅtpË‘7=G¹l†¥6$õH8òmíZKÈn! _ î@ˆ>¹8Q9ñu%(?ZÁ5÷\p\+ö0ZŒFYIcÞ5'æË÷§´|Í¢rèV90E4Cø3³s±Šñ²E;ŸEKBG c¨d®HJ“¥³Yh,„®f~º”&Fшٷà¶nûxfÁ2ßôl{œ™¶ô¬i8[:örkzö¿Ë­ÞEI@'p Œ[+YÝÅàƒñâ ÌÂLwyR /nF¹,ÿ=š—¹ðå!øQe®)¢©˜kpõõÿ—‚¾|Ž‚Ôªü8í8çörÁ+§§“ö)60yôPңІ¼Š;iA ßxÉ*Úx\ã€þÌ"N9…!å0=ÆÜ;F¿v¼Ùk¹¥£êh6R³5?\v]MbNBtfŸWp4iÌ(ù›O¼,+FæFé:¯vY»º'%S@çl¤ä=&8‹j2ÁA Žru!¯GopüXGÿ!êÛQå¤DªR‘ð8†fVÊV鲕~Hj‰sÁ±ë©«ÏžŸÆòðÑòâ/§ÏO_<ù}ù»»×Oß¾ÿÏ?ÿôêÝ»ïÞÞúô»ïßÜÝÇ>¿»{uûÝë¥<â®zrzðþôþÔ~|Ë€õÕòâ'þíüô/`?.yùÃò·¿‡åõ ÿ÷Lœëaê<[-ÚÛ¯8à”„=•q ù×׬¿;}ñò«'oß}ýææÝ›î^½ýiù b|ùÏ’Q éÑòÕ·ïÞ¾¹û~yøôé“››÷·Ï~x÷ŠÏ>Z~Å'ËÿpHϘG\òÏéf’Ÿ¹ärBàí”–O÷âýßñÖAªÑñë3Üø÷…À€{)0bE Æ,ŸÙ¯uU­J䎣‹h¹xÃg§ É%–,_”œ ±¸|sºäÂ=œç=/d»¤\Ây@b&­8µý%ñsCü%úªnûêsú bPy^šäö âå.M9Ôó1äÝuß–4;óGöÁµmXÂ,‰8êx'äÌY¼ò<ŠoJœÏWQ2Œ÷éÃÞεï=ÕVE‘¸õP!%™‹AÁRkA‹ÏÂzz½ÝÖdq,,£îQ˜@£ÆÍa7Ç®üó¤Z ')?™0EŒÆ+5sJUÁLD«…¢²8H~ØáÆ{Þ9ØMóŸ[Àn”O!úu˜’´sì, 7þäoƒødݘé‰IÖÆu3ƒád³ŒF÷œÅ&ê`l#m24-ƒÒ³'Ce)ƒ½ºË%Γmc ÖXÍp-ó1ºM¾A3ë÷Cðà ¾G—¥t ÆŠÑð¦2s`÷b†9DEÀÜT¤F¦Ñ\yZ€ð\ÇT¤è7†î†UÊùsèÚ•9Íê"ö¡‹‘è¡[פœj]µ*v”üœí\Ø1ÜÓ•S”• [£²¦ НÞS´P\IÁN-ïAî+·³4›o; Â…¬à H;°§@«ˆ5³Œ¢~ØÜ—üX©i1!êÞgop¬¡¸Äžô:hʠуæô=¶¸p®}ÅÖâç£E_GÝ¿½›Z_óB`ý@ÅJU4«$^…°¬—Ë9H¬.ä´dv´ô Ã£î ©ˆªe³=ƒÝëâg¬TÔ²kYSÁ·¥V dE~„‡×ÑÀZ+…û-x3^´í ¿v¼Ve;®²,æF `Š ´e ††;͸Öðku IçÀÜ‚M2o¦”úÎB3“³»ÿ'Ÿ94¹%Ù.ÃÇRõ‹Ï’âéŠê0Hcà¾Ô}¥b¼µfxÔ!Ùk™¢+˜YVG;FÒ•[(Ý cWôñÊÇIàq$3!I,Yßc,»APà }¡Ø-h> Ö7¬jå”ÕÉ ðŽ'Ë¡QØÞ€ͯਵ¯šupÖ©÷ÍbS«Ê½xyZ¡zÖ ´U€c¶T‹Ìš—’9’xŸ¾ZH!ôe;<‚ù³¿ ‚šUñ\¿0p°Íú@ëy¼¶YËa¤Qüå±€(Øsn˃ìé{/þœ+Øx¥=¬¾ÙÆÐA4A—Ô)7„‰A,ªT¢aVª¡Lª£ÎfÅá ÏI ­OÅ05=>ÍlâÍ,D\<6·];L¡s¸i ÂðàÂS0+_ïC›AcëIÛŸ+nãÏú¬ ¶Ö7ld`êiOQ[\⟺b´l¤ØRqÿXy¨V£a©Ètf:ãz!©4e«Ã­b@§å(¶›U[Ÿ-ü}nîmHe̓5“x’y&ÊS×îXsì~Î _ø8[›sràÆžNX3Î öúÂù‰·Ú-s!÷Íù–‚Ju±¸1žt{Ø[ž£œµX‘ã½, l”ƒ€T¹®Q‡ö3á½ÅˆÆEÙ Ÿ]Ca<‹”e\e:cIšïþ]g~¹ÇµÏ¶dæ žUÆÃ06 IŸ`žXwh=GLWóûA†Ç Œ °’“ìä¡q`¡V§Îõ¶f²›ù_‡Â>„„¯M&46‘÷/ð¬z xMš„A qsXÁÔÈù¨ÁG)&ê}g!EmTö!”ü3ßUŽ$i¯¯2'øCZìrëí¾¹¿û‘ ÕÒãtTdëC€ I.ðÇ-tÝÚÞ÷”îë¾FqÅWvÁB‘©PŠè²1ªâFö]Bl¡H ’PnZÑtíÆk5&ƒÕdÓ`+Ósf:ɱ<«ã¤Ì8¹Q¬~ Hö²+¿¾ÄÁ[®ÄÔìÝ£ õxPt/a"taÏͳ‘¢˜´zü C)¾/…Êt@xýy¿hâ!‚øK-ùmß"ˆÐ‹ÓZg¹4çbÅÙˆÕ¸P‚í¬kyµYÜ91QöÚòbúϺ³8võ¼ª00J a“z»JvÞBþDé&j¾%ÙɰVŒ9–B¹*\]¹®"þj%_ñÅ@%šjÙ çŵµ…Ü8ú¢RÜdà¬úžÅÖ2j™Ú'šÉÇq箋 c€‡{íãXè­Ë…??çe-·¼Õ¾Í rm«ø³Ÿ= ˆU=@'RU¶FvWËwzŸ®mAÌàTƒ½ƒo ޲EŠ‘9f-ÍËé.½¼dp69¹5â ïSõ7¢j/çÑÖlv¹¤â J¾-Ý¥ÞèÚ–ð‹Óvñ¶þâ ¯ÄεUl„—‡°+}ÑÃÐ÷¸‰Ù"ù ®ÙO|Çrv f×7¦î³ E3Àrh²>.«½q{Ø;Ì×~NtIì:èçVãñª«UÅUMì¦Ç!ØçrÛ)×a`nÖòÄg!\“;—»m¹Ô^‰„Um¼“¦ .ô·­îþ®žÿ| "ÏÁÔÝÞ\<µ«Ù@Y¾xåi&|Õv¥îr}KóIL‰QÅÉ®~§Gü}§|ËÈúk Á©–³k&” I¯€ßÜÌbitby¹Ï)_‹{§8W·jÍ2e˜ Õ¡ìS¨Ÿ…xéòþ=öÉ”˜ßa¬?ç3¯ÅõdÏn DjmÔÕX>grnL1ò€Ù\Ac,¥¾?j&9(©®ƒ“G‹hk‘žBh‹ŠËõû2€¥:öåFAdí ì¼å¡6°˜MÆ•0Wï>Fs0ÌgļDÐem3]¹3J';iCº¤âÖk¶¼c,ëlyõ™`\9L©a õÙ`à¢3À-gÖ$Fåè§k_×W5 Ö]¯a þ„pF]'*æ»sç¸VÍóë¿ï°M'›(²ê§©h°+'$‹ ™&º%íY1¥μ÷Ô¾l—SP•i4<¡l¶g`s*SŽáµx,¸Ý=k t»?Nm8Kw“ƒQEüi[+‘½û|Ëò j;»«™Lþ§¯áëâɆpGLbü¹Lé8¸^@c{‰Ìè4!ÑM5òû•ø=–ë¸ãÁ@!äà=ÊÃåWÂÎbêú˜ûðN «ÇÂàÃÇ}ž àÁÇ75R½À¶‚9×÷àÔ N>äAÅ1­æY_“£à¨lÍ¡4|,ŒÄÃ]¦Wâðæ±¯ô„¼õCàÉè l5íí:„;Çâu5À‘ˆU,:Ç@Ç>Kœ£üÅjãhzOâï5£œ'ŸÉ.¥]¹z~ý Ê?HYŸhmy2š=ÛßÀ·…+Xß ªàäÔDûµn  žœhÞ‰íH CÇÌG).[ºëe½ÛìUlp`ËϽÞ?²T~?"‚fòs@tq×ýLÁÏÑÆ²{F2{VHãVöÀ;¶%jÐaÔ¯ æ‘ Ó¼Öu2¤mm«¾ëß@±ýQ¯Ó)g G½èl‘OÐox®Í§&Îw(1žWn¤_»$a~wø5¸Øt*qînÙǨõcbà:Û L$ÌW°™,\¶<ÜB*{ò*{’HÌ= å ¹  %å|/rÃπͅ½¬²—0Òbqž‡ƒôm–Я¹æ1Ü cC·»Ý Ízeç[ÆþÑ×(Ò6×gv›½–á`åóžØuËuþù‹ß{\&R<˜·­&íN¦x O1ˆ_þ$‰KšiÓoÙTQpegcBá휽)@Ÿ¹ËºÂ@é…é<“\”sMO¼(}8¨;,Á*C­“ÚOqÒ `u¿­öÊJ©ÅïܵgdÎÇÙü­0ºÅc¨eÑê¦öYÅßcÓi×úyúsØxvœ²¿R3VÑו¯'úúžWëŠ-dޱѻÐ(“x¾ ü:þ ¬VžÇ~ë»DLL…ý:w¨Š×å]¾©nGp.Z˜mŒÓƒ¶5 öÌ–«m¿ÐãªesäÇEÂ(ËCÛkô)NÅfŒ‚áõÞÕŽåppï=Çq’×Lùr'M¾\ƒâç¨Qs?3àZ4» ã݇fw1LJs˜2[A­–ðø[þ…¦‡×ÍÌ×Û* ÛÝêÏ;µ™?Ò°»É@ŠtÓVÈž›°Ð8ÑèZ<é¹P ?ß ƒ~D-&¨Ò½ò¥“ß¿ž¿žœí«ø¹0˜—MšÅÊ%vVRÿóÕ°·#•®€®§2Ã_oõ&Fo°ÝHoèji<Ü« ÆM8¦zUÔy¸¥KÛ¸€‚Ww"²Ûu ­‘.ìÇpáxÎLÚîL5YªS͉`{úpo‘ù³à™zÝ»Ù`w1f‹–F¼ó·/?[¦8f‹BѼÿø÷”`U'RÑ+Øg#ØÒ¦ €]·€‡m:ÃU¯ÓÛ–h¶§î(åü®°ñè>XE(fš\Ý]¥88ç Ô¤*#šÇ»iæ|ËbÔÆR5±¤«k s_ðt4MŸWElæêÀ›^Ŷ] Ë5´I.Àe¦8‹f4p'“cÔØ^AéõÌ\1‰à8+¸ð¶Þ§Ïái|¡Wµz L[û^œõBO¦¼¾æàqªÏ‡hA_Œqª;©â¥x’£¤Ð%ñ¼¯&WõEM­brR1Îæl‚‰ 5&.J+ôH M\—Ïgv8{Ó£ò~‰7ÐHÚ DM±]3ˆ9>¾ËÌUQ¥Ó¬R ‰¨¨œÅñìO¿ƒVñ«ÙuY î±C×:˜u+ॵì‡ón€­FE%“ ¦QNEeSæÀk_^[ë¾áÁ‹jüÞ7þ çòâ4ƺVèܤJèv3Á¹U£‚hË+¼0œŠ4†,l<,)@£n6,Ô½Î*\§ e«‡,“3­Ö,í<~n¡õxéaM°{~ÄŨ‚1Œõ³2©4zË¡QqÍòÓy”÷²·ü’,ÝóÃAkRò[¡ ½ãxܵ­ïu¸…Á×T{y¶ë=)6zÁõëA‘øBÜ ¾Ý- ¬¦æ–KßE¥ ŒËµ Ï£ ÙŽÿÂåw+ƒJ!›­åÔñË}3ÏË4 Þ"×0l& º­h¥d‹ï‡“¡ËJU€¹LïÜÔÇU{ï3Üß9а+7fŸ•½vz "’«2M•ª599.³ˆÂW@TfÞòÉã «f?ìë^÷… ¤1?¢›E¶­Çq‚(t‚­zl%s«Ç€ÃÛ³çg¥mÏo”º_g-~§aW¹Wê*W/¶õ«K¶nå­ ¾ Ù鿯Sn÷þÝ éfVÏ)§*Š‹øœ¡ µ 4ŠgrŸjW‚ðµ5¢id|޵ôYeäC4Mu‚ x˨+ž… ÄX«ÎXâD²Êz^íÌ:ãâûZ&J+¦h“Bª|hx¹†øð­¹B«3Ù–oéýäõóŸÿFÞ" =ûåˆYæî­©Ýý5C?¡wêàýý½¿÷¬’ëM§ôi[’¼2óŒVš½ éJ *9‹5ÝU+zê5·ú˜=gÓÄ °Õö(Ì ÔßvëƒÄ=§Ývå´.”¬’ýêôëKø¯ú>&OÒ W FÍ*öÈ(”@í¸&Yêf‡£2…:0yG_pš+UÛš4ªaÚ©W•­Ô®r6×D Þõ˜m9«°yµ Ó4Î)Å%^;4«LÁq6«VµFõø>ôÖÊ^™‚³-ÁË$WÒJ…-\ò_ô² ½¹ð¡Ö0PV%pÆ O95õÇ¿î’Eƒ'F¸†Å¶¼¤A3Ì'Ž–yÄ•ªL2>Èn£# (…ÌLÙP®A®>¤Q„{:2^©ºfe*î ¶­ µáçB´“]+Ž‡â­ƒRôOUVVŽÄL}œ8ž,“ïjxô1Úå\ ¥”8y„WîÀÛ((f«“+@⊛¥é7/×@=ã¶ |×Ú ‡”TØ/MÙ4E~²³níÏû3û ò¦U0É%Ö0”¸oV(8û°› e&æt³8w– àƒvîi¯.$‚¹3§8¯>\~ÿž‘Mi³*³ß\xè.m|{²üËîo¦\jö³+(_p—ÿ%³mHî3ܯcøÄ¼×XBsÅU°é–3¡Ìךô Â*pšîza(`?8õ1ÊŽ™| âäçæ° ŒŒ×h† OÜM· ­ù˜fÕð<ä©YÕi²â<œ Aþ]¶fjÈG×=öTà'Ògt}ài,ÓºêxØ1q÷Ý©¾iTa²Å) Ù„UÐÞ¬ööé5ððÚkQðãd kƒe€8#ERé^ä£χeìW¤€¹?2* LM S5!Ùšq)ážž)/'õíÜ#jo_ ÅOa¦C©r´àÌ6ØIò:}DYþkÙÇ®ªŽëé'š© Çkk§.·õ5?%³ïM¨)õ¹5`? ž÷”º†%P8u·¡V2°î3 Ë‘–°+gˆ>¾çá,ÁP²k¶ZÀ²•¦*˜8À$Z”`U¢Ñ6ûÍs×bÒ`,K¼~%œ‘ª<ò«_Œn‹VP¶c22ÇK‹ÀeŽc¸¼¤;ýÄ»‰‚ ‡?ÔX¨>կݮây‡•\Vòã¡z˜­-å_Œå4£}ÿxm|äÝ™ÒoÍKI„­+Kž&áë×E$ ðnÍÞkH­ììR0L!«%°Æ¶E•ÕÆÖÖîfYׯúc @ý^Sÿ¦Áç€h˜Í5pîn AAœgÝÖZhŒ×j!Ûû„c-œÀÑ­¯ö÷:}O1öRé2%[ôQÙñÑÿܲ’ íÄ#›Gábœy Eá‚T Þœ3êÊo(¬¦Û ¯l³ OùPµÙ}­qT•A‚jŸ®»²W2†Ùǃ˜FªYÙ­³è+ˆm}™¼œÞc2žÃ«v%FïùÚRp”ût¹T:(Îî²uFl—Ë„êܨÄ8Õæ£ú‘¥èSYö¦ž£RèSÁÙÞ\¢ô ­UÙTÐH¿‚£G7œxÖ¥E‡S¼œp2gš2WrÝc] ®û«ÉáLó%§•ÞðEO•ŽÛ,+ q5& ’"µãhLºk^þ¹l7?QkLO•Ãq¡8P"ç!®»”;9¸"Á²˜èP¬ûéi—+н’´˱ðXhbQ­Kà²ü…ôÕ³{.|Õeà½Xfå·<­ëåWjJj€[ÀKô?ÂA·-`ô‚{_} ¬}Ö½Bö”àÜ˶z•ýV²q£ynøÿ•OW¼#“",sf»ëÌÞ×¶ivuÚCz)¸°X•åâ Ý€nY|/^¿å Ç¡êúáF$n‡ l ŠË_ƒ:ŠJÁ?Á^kÙ¦y¿îûôÊ)elæÓ‰[Ã#×ÿzE^¦”iÑNÝ]‹Ì})臞ßÏ¿:Œ'®îZñüÇq™¶-¥U¸–œ1L–!Ù%I'ô+4Ü6wU‚_054пb5(ë§Æ.Úï“d Íê y(à†iĺQ ÜÃä°@—û7¶0Sõá§ò1׋.êv?7e2}³m /G yÚ¾±ïŒ^/ú4RÇ›ƒez2éüñ •¤GÊ* ’‰½DÃlo“Æ»’œ_¼ª¹Ë vl5á,²|½Â“äVÃW@S êÌ4°Sév![ðJqüxwÓº.ÈÀ¥4¡G9܆­º–[ÔqáV5j¸šúE~áx³­ªÑpL‹êgì^¿7±89&œ)Y´ã\ÆË\ïþ~¶%`¯½Ê# L3ÚJñ0–jóµ£(î6¶±}̱7‹îXÏd­!«Sõª£C[)FÜAbAª¶#ï±Í1^•jL†ÈÊ›GLØ z¤çÌ[ÃÆ©E.ZË¥ë#æm w¹¥Ã†>6°N~€ìÝ7°o°¶#ÃÆ ßY'jþ=× f*Gí§Ôaî×ÕEÙ–ŠÙœå“A ÜDŸáÿ#¼\’ì¸q(º­@Aðrìi- §µÿi_$3_Uw8ì°Žø ˆÏ… _¹_ MØ‚»±j¡™ äÕŸ™fhCe\FXƒ-Þ £H¯¬‘(«Ç³ŠËŒkG€Pï¥Éuçmá:Œò>¾óƒCÛºÑìù#t’Úg”OëÂ;K¯…ôI.ЭŶ,Ÿ¹†Ö©ñ~‹ŸÞ™µ\üm¤ö+[# 8'Ôm×r¾zÆCr?à·ðä†Ynã¥X‹Z‹ª—Lt8F)×IZÐK`/Ë_Á§¤|ùüa™û€ùJ,g%±Ã%VZPmõ:ì°{*X`IRÓ_ïîÆ˜„gFD§Zïd(cËä$ÊEæwÑͮɀ+C€Ÿ7¹×§o8´FAûM…Ó­òéÑÂk\Ïý°A‡gv©È‘ÞQy·}ã¹8–$gQBX”'GéÇ@k]ôáÑÒט*Ç¿oµÏóûéËÞt 7`«_ü~j#‹-ÖúZüáåQi-Ú”nt*1n92ob‡¹\]úÛˆÇ[HÞ±r‚úñ·o-Ýü+x]pò2DãH¹é)ÈÂ7˜SÈx/ 4âð\ÂÍ`Mù%0h‡càD~x;Lá–Û†×Ƕgj¹üg}–ëÆÉeƒ§1èú°voH‚i‡)̤H[£~h!{Ë-X«5 Dɨk¸m &K/^Þ’vÛÔ¹!k¾š}8|Ü{‰íä½å—BËÅ tlGÝÛYö¹á£Â¿6²o5ÿW2a4¹™ˆü®EŸ›è= DòDZ0ÖË/,’eP ¥w¤¹ Íw¾Ž:¬CùûžNFáyšß ¼m-aç}›a‰0PŸ›ÛðÔÔ\OFE柌bòàvc†e”ãPÓ¾ò%m RêÍåîí`浸½ÿ|TáÃ[1]ù·Òf¾/$üùÄvzÎ=î“d}:Éì8¿/ÂÄw±‡ dXéqOIZ_iwn…5Á~ª-¼ÔËrž‘¦ø÷z³RÂøZ=ßFVWzuÈ–ä³m ×N§míZ³Eeã%í[ .“qBOÙM离}>û¿é÷šõØÚ2Z-go‚> ¾3&ý–Ì/ižh=Ë´BN-„=‘©-o^Þyº q.<™{뎆­2c±*x賈áÙ«+w¸ëÉkg§pC­¹ Â%¾D'Û"ÕÄ­¯b•ha!ÖÙꛯÕ2-hU9æ¬Á‡î]pþsеk`X(ko¾‡gÕp»û°Ã©2ÀEZýõùBëáÒ/ÿGÖ?ÿù7äF<2úœ•ÝßoxÛucZfæþ¸ÙùúÁþ×ñEèQøRb)D©óßo¸í)„}²œÿ 8 “[õ¨º‡Ñ8ÌÕrM$ïû€Ã£¹ÆQÇß{U{ÃÇlO³~Àu‹]6VPuFÏÑ­Z¡”$Ó¶ZI~m¾”²T ÆÆ+WXÎýNëª2}éAC¬]:$„Ëÿ‡ÓÎ×ïÜåé“ZÿrKöR`µ…ŠúR­3æ°—9ÒÅÆZ+„µjdŠm„ÛBh¢gf‰_ßyfÞÎ>cº†k£Ä×®Õ´ÜçZMí¼z,.—1zä÷v­>ßwÛa›‡ï÷ÌRi Jâél‡òaŠÉñ뙈f?«×iÞàg/™= %{ö°8L=\~å`dg.Ñ“í†yïTm»KHäÝïTÉÎ*¼^§û¡tf¹0 ÈØ¡hd±ÑX ©^¿·UŽÊ Ç¥Á[Šw5iIÖãzž…9 h;†—¢ðÜ ù÷ …¸|p¦=Þ3Q ÕŽ`EYUX19ïmCNÏÕ`y™ãp,±ÓSŸ~í4YiûçuMž);8KY¹e[~fY ‹Ãyöx¶"+ŒaaG§æ‘ÉÙ' ÎÎÏ¡ ré4xÚ=†vZ¶Ç\Ÿû€õÊœ^ÛuçG6ØQʨ“Óyz} ôÈÔÕO‰Ï´TúêhßÀz/gYû7蘌ÅR>ûrÚEÏé¯omü<žeøV£Íïð÷“WŒ‘Pš#„°·ÏáÚÆ,}dÂìf0ïξÏyM.K­#ñpž3 ¶¥™Í‡yVή¤¯îÍLYæ†K®ô"yÓ½‡k\ W ×lʹ–’ÝÃËùiá\nU⟞º?g=p‡ }«\.R·Ý,ð“.ô–êq- ·¹„¡¥«áÇ{þœiöóñ]yý÷“÷™êõö)"ñ¿êãÓþÿÈCõõg´‘= ƒûÓáEWoÅ'¦C$Nq˜¥‡X1 .bÁKfèñ¹%?ž¬÷8˜1T¦›qŒŠg¯ÐKŸ—ˆ9,5”†fÿ ¯®K·g ?ƒuLÂXÜK-¯~ žü›àiº†•êÈ ; 5—Yè¸ïW|zùç”>ܰè˜ÖðOX½ñpãTyøÐâ‘еöëä¹×1XvM FeeL}èLE®@n¯EèKdBvÝ¡§ÐŒ¥FŒ–òqØS\=›Ž¤Ó†€ÕWKœµöäpUÃ:7”&— ÛÂ˵ítGA¯¿@V' —;&Šw8T€N° YI–R',X{ ¥ì‡—¥¤ìþ-¬¨a eZ-Iv1o/àêj×\` ¬Öj#lÃáv¡Ã#r[pñôa ù°°;îØ|ýÜààXßf¶vk.ãºÝ×¾]Ó8_õæ;Xµvû†Ëðv­•¸œô0°f×Ëè˱??wF´8] £B{j?é›!ñˆœù .Œ/¸ËW3áûXnÙ³â³×áP ¿â^{û;#UÆž’Ûõ»YJ‹„W,aq–ƒïù.…xã묔Azѯך谤y \Ü{×\FtÞz¾xJ^#Qîb\‡¿+ò-ònIõ¡Ï‘VÝ5pÅ(å׬0z~…í[ÖÜ–‹íE'% y™ñÐþ$¿!vvb‡ÝýÌR}ƒK‰w–¹¶"@$Zx¶²Ùͦ&§H'µnõfÆÃ–K &,–¯J4aÑûe=Á6/6<ñbu³…Jé4Ûæ¤ Èvu Z£©”:äu A™)oÝpÿ^zÊ7ˆmÌG9‚a3Þ•¿·5¯ç.V$¿B˜ ¦zHp;¿ƒHõ„I#´ž©7Ãöôw«“`¬Û|cþX¬`¥Ïï; "ñÏ5D¯³ÏÇÆ¦ÕP¿ï"À:ŠÈ¼ÇÓ¿©æ$·ˆY—!yy^à©ïQמy¸f²büzסR‚b‘ºŒŠÐñjc[j]ø43/æòæ|Mº=Ê, õ&ÍKdtvÎríñ±žn“é>öÅ•†~ªZ39 3×ô½FÅ­„‹(@Ñ˹«®ó«Í§x$¼~ÿšG梊\%¼Ûµ[¯ôéA´:™h0pÚ¶—;w×”äÓ常ü9}X¦³ÞL(ÊÚ†e:ëÐ\û˦Y ƒžFHùØÃÒ¦³LôtóùÕb Üf!(‰–õVN«øóÛÑT 7¯F÷”VÑò`o½œß÷Y§[g¹Uöë:—ÊE?o±45ZÈXQœ_°ÅPN«4œ¸š–¤ÄާD\}mkpïN€1°¶ »A2ß³Àá›î— V%6Æ,‡ÀçÎb ±pž}WU¿Ek,…´v5sVâ{ìiݽsuŽ–G7!ƒP+Ê¢™Èîuã츊é!ÀYœtbÆ¿r¦fƒAgáa¥Ë[`£ Ýã…/Ñ|ëÛ-^-ç~þ‰×ÌâÛc‰ýcá`5ïJ’pî×¥ºs—T¯:)sŽ 7°ö9¯ðž•¦·ïxâËXäQË9Þ·îÙñ¬):£kýÐ:fæ!.Ø*O~&Eíƒ7'æY Óœ”åÒתôÊæ‘‚¡;¹&¾üèxéÀ¤!F”U]>CrÉQe¹ê2|?s›^U\ü’È ™ÜàâQ{>ÄG({™p-¦T¨ù>œ¸•Lõ«ÔñÎ,)Æ$C+É¥ö%÷1ðÿº{¤«•ð"„ׄ6L±!2³Îð7~¼º®d`Kq¸ÚZ ÍÔE;šÛž´f~ChE<Üàëט{«ìpük(Æ”£¹_8g;@ÚÍ^·s&V¶(,¬Ë•ùf¡AxyuBÂtý*L‚ÅŸÚ ?˜\¦v‚¹¸"Œ^ƒcMU>¼3Ï‹7Ïñ9ê”!h86üó Áù¹Yköü&:²«þðûhŒ ki¿ŠíMI›k ‚å¬V“®ÊÛg¿åûØã8AJDhú¹½8m08Ž»·‰… øžíÕÁãIµ–ë¶­ã°°Êy[ ¶=y6áû°¬’7Ýß#hƒ1W¶ ÔãÅ3{ ÒôCι\7ûƒ¯¶/…*Ã’;‘ÜÉ[€5n1QWµ]1ü8>zwl,.·ËÉÀ.~No^8;k?¼gpoQ · ÙÁýiÓC©óûA*0Y™‡Ðï¢ æ[ì÷áâ3 ÎÏÇ8+žàÌ­žß« µj’Ï·öd"¸¦¢£÷‹€ÄŠËfEn´ÙÞ|¾Ó°ö©ì‘ÍY§2Ê™§øÏǼõºöD®$éçs­=B6;¸úíN´Ûÿ=rSmñˆGÃ’1 Ë:½o1JjpæSg –æ8ŠgÝœ¨æ?:¶çÏWkŠfêe*lxœSÞykù³ÙÚž¨OqhØ O/6l&TçÙi=ÜlæQ †ÿ~ï!q¹›¨§îÑR7!ña#j&£Ù@WÔfã”ò¯W™v0güÖo ‰ûfÿÚ`óàk½Å´â†÷ÁGÛIØãcRäC°uLìäImñ8g¾—ùžÄ|áç|o ºŒ@Êã] —¿Ø‡Ÿ¿G4·Bþk`yÒ;ƒGéÓS-¤ GFÕ}Y¬»to‡„6Éo[EIÛûn¨Ëèá`ëWdîŽÏÆIY{Žëž“§ûo×K<îæ~2gØSúG€u”³è¼b£C&Ä´éu9 ¿Û[€yºÉ?‘e8–Ã;çd~ÒÈ—ï%Q­WR¤Zü‘_›†ï #^öþÙÔ§p¼<»¡u›š…Y=K­ÇRãAYñŸÿ>CÞ 7k¼ ó±€fR«lG°WØ+ÏîMíÇaæx›±¬[Ø6vŽ‹  2Ì÷?~/§¦žï&Ë~¾bÓóoº"ˆ3ïÕoE¶dœ‰Äÿ¬WdÕÃçÓ~y |)V0¿cž‡èÀ%$áu÷äût ¥Å’ôýfDÓÑcƒ¹‰Ñt·œ ·&\˜t>fÊ­;èO)ê£Ûb ¸C^ª¦ñ/PÒ XJ¿ævpÀgïQ"ÝGØÂkš$éjÏÖm½ (Ͱ¾D-ˆ{Ë$ÞRĵ*©’•°ôó6ú £´ð![J€7Óù¼æŽG1Ôd ¯ÇsÛIÄïnûu5Ì¢mQ–‹“î-À@Å3ýÁrÐÏ7[|¬ÎÿÏ{µ­ØuÑ÷óûÅ A»ºúšÒF[Ò?¯> ø~û/°·²ýeûÇ?Óög^½PïF±zØ7ñ[+þÊŒ:šÊf?¿gQê3ÆÆnç>üÈÎîÿ®A`u‚d”$ɾPñ[ZÛDžBRŠôò/’“¯.ä=/ä/ù³ž‰gžIx&¾«q?J«,QVeÙJÞÞV½ìUÕLZªŸ”¤œ>%‰ôý ‡ñédÊú=G Y;×â5Ê\&z[2²SP©ÅW@5±— 7P’Ó<Íe?|ëgÿ:àÉšMÒ“?Àëò¯da„¾œ¿,ÿ/ô‰NÌa)¦ððA$9‡¹a_‚B²XmEÿ%Œ¢>üh©Ë`:7——²«Ý ¼j§eqº²‘`3fq-k´0d}í†é²`³‰spg•q\”$*xšJÂ3«’: õvÄüàÙê9”ŸòtA¡MMS“8ïd¬OÇéf ƒ<»®„ÏÔÝRb8Ó©* ”»-ž¨ I‹:±e å‘ÔÝ2P(&Ò‘Îi#¯Ê¾Ò  ô`ß#¤m*GF4ˆ“J` Buž¯K¼lo¢Ê«í¨Hv—ŸT@×"b/ÕÑ"¼çuÍÔ‹á*^¼Ø{uptë,k Û[ˆ.Öb¶ØxŸ!ýyaˆ©‚Ð sò­ êt°]ŽÖ{%{¨jÏ£¨L€Õ< Ìà· ÞºOFØÒDêÊÛ‚ª©ëÃzCôÈE>\˜aaŠ€ Y% ZK6Ô5¸òjvàñÚ«h!Y™ì{´¿¥ ™45çÀzÕÑ,•ŸlÒáY wÔÐ!°X‡Ê`´R*&:(U`—d n—2ÔÛ¥eÿsïÑ,Ãa"›Ôx¾Î\½­ [gdË,j€ õ|ä6éKQ¨ªs$CE«ZU®tlêj[&¬Žð@¦žÍzôO  ËhÕ£+§¯UÅÍ¥g[VϤ­½ q«<ñ‘†_£&°H·H*ε6šœFN÷)“}ßš9…ÒžCYƒ%Ó“Žú`š¨ÓêÏ¿ÕËÂIŽÕ©tÄ0`šâ/ãJoÅDÚŠ¹[ŸÈ4bŒ®us`ÕwYººNX@§¹Ðz2 •5†H2Ž{ªŠÂÓR+šr­)í 0î)+H!W`÷…¡údU Ù.C¢GÓÕ Q N.#z¶€9;ªÜ xѶeÖbë J¢«›Nk¤–%å³Zë²<£KdgôÃÓÖmˆéN]c^EY`ûáŒÏ*Û†ÁB‰½#œ­‘lÏ5EØCd”Me;»äª¹= ÿæ“Í.Ãd+£µ@J$ÙD2N]‰ZcY-ÙvKÐv­1TÁò˜8ÙÚ¨3E¹dV2ænéù!ýœ*ZP/Ý—9ÜUâgdU-‡_Š‹Ì¢´ £E~MqF]lMUwU¶ûˆÀsôûX Ë©hÖÐÁ½wU^©õ m©×žE`É(v˜°ø@ 6¤{Z¢lЪ‹"òÔ‹>Ëö–l¥ùòð«åüØåü/ôˆÓlÝ„»Gb‡™Úqm.©×¹!ãO¬º‚ŽÞRÇ]…¨–Möÿ¬¢å;T—êñÛ~\Æ}©k…ÜòÃñÞ>Üpæyøâõ—O?^ÿñý›ë÷ß_]|ü¼ý~ýHŽ`DåÇÛ—/¯?¾¿ún{t~þôÍ›O—/¾¿¾³·ßÉÉ?È_v8’ŠË,TôG¥S\h“¶„¿·!òÒ¼}u¸ïÛ’ü1n?æ¼M+øO™ì°JûÿwÈù«‹NöžiI2³@¿`6â~~†¸h´ç{Y¹ßÍ\©‹_ßZ/ì¦Ô!Ãe7» ÜgàX¹¤ujc ÉE–2ü$\‰Iœd‰¨~8×õ}3„«Îq¹zÖ?Wáú,Pݯ¸¯6¶™,6[ïx,üû¾"ák¿ È¦óî7qŠAœ yw‘­ I™; vè(@»ä³ø\¼áÅx7ÑÑcȃ€Ã6 ¼T½0vz–‡mY]„~¸pã"ÙÈ¢\¸ŸÞ× f Ót·±ÐUSK Íý,,ìžçVšÆDÉR˜=uáá« . ’°A¬*è&ûåBDÖx í©õf––rtŠšZÔ|÷r»³z¡èÓšýè˜3:oš ¿7Àr8ESÎÜÂ}_G»m(wà·‹°ë"à½D€¹E™½ôÉ#4— ×ŽŒhÄ^«½×ýÕKÜoó@äsZ虞ˆLZ]BÉ`óf-+e¥¤i ‹\ð$B•pÀ[ˆÚ9ûe¾È¤ H5ÀVÂv ÒŠBÙê¨z@’¹fBÙÎ~¸q°×,\¶;ƒþðYÕª´päÜ‚çî)Ø,Ü™Âþš2–ƒ÷=±NöðW&ŽÃ>¯¤‡Æ R7Ú2âŽ,âÀy† ¹†[FÇ‚xˆªÊ»è2à<ëﳜÛvg šã¸2ùJNòR®ÍŸ˜§NTJƵ^]9²Ž|+ÏZ‚âsmŽsIÃÏ––W{s°µ¨ÙRê‘›rY·™l.Ôm¦ •èèÄÁ°À]ÛŽ'I’gXëÕϦNìà¬%N ‘¹PB¥‡ËR¥x°4¡¹rø•£P ¯ sî#::íà\´”‡àÐK5bžÃîÙæ¹ûÐWKY/¨U·ÐIJ?­Åán:LÂà^W—‰‹çA×X·ÙgP v¸Ÿq ¤tG)žP"¼êŽæˆAX+)Á€i$3yþúï!ò‚ìÍÝÞåUòXÈFˆfÄJ‚Ö&µèó$ðɘ…Ñ49×­K~/ñßí6+¶Qb°·äëtý~¨@6]mÙYžËíEŒ_”¶ZòÉ¿¥“º«qÜä\F= ŒªÉ³îÍÍ% LUôŠÛ‡—s5xÆE€:d†l‹®çè6Ú~˜ÀKå©j ž HéNPóz`bZ§YnÊLE3÷’Á"ž ;—‡àÖÚ-s‚Bço«ã 6·›…>Ò À¼‹ ¸ñ_êBL8í®½"?_ª&»V’0ø¥ÖÓ6¨L‚—}Kg®;üÓ¦œÕ¶å—9q¯\ãS[u×\K×¥Y ùþšõë7ƒ½WŽíVãwðì­ìg1ö €½ûxÿ]3¿"íÜÁ–;î*¬Î,Ø·§Yxó"aÑÌ‘üœ%.¾‹3^/ph?›³×ØÇ¤_*x(÷ñ`ŸY ¿xkzÄb¾ýØqDê[û­Å»pÜ>RkÁíÍÜþSÁCÓÛû¦…ïÂyQÙ¿KòQ¼Ÿ”¾2ÃO.ä [luZl)‡HËÈŽ³ï Í*1ãoC¬sïpÕ§ÆÜè¥Ì!fn·$»v1> stream H‰¼WÛnÉ} ˜ú~Iž$;Nv³kÖ:ë  ššµ¸ H¢Öp¾>§ºªçBÑt¬Aâè°¦ºêtuÕéf~|t“O­RÚ7ÉG×*gs0à1C o­UšÀ¨Ú¤\M›U2 {ˆ¶µÉ&Æ•O¡§VG/ × &Õ†à žÉñêFë²z2­‰&˜°ºLkgóÁùú®jU %d^ÛEïã[m8¸O%xò”r}?FX¤b«[¥#“‰ ´Xn³É±p’[—;°ÖKòÁ#]àòj xbñgñ„Ôˆc„4aàUù,ïzb™ßEtΔà½icÎÖŒ¼nmp‘Aíà•£w¶ÍÖP  û”Á @Râ`’4ôzq«Mé—D Õ±,fàÊøÈïJ^ƶø—³6Ûú>¸ÐÊ3Ž=dªÍ.ZáÀ¹²©Lj*h+ :acBÅm(¥¦C›¸¤à6ä\Üjßz§31Ö4ÒuFBpÞ²”Ÿ ²ÝQ«BRI<`SêR¼ÆJrY;-ÆÊšÈ…Œ¯&;ǘõÖ!ä˜Ö6•ræ’v®§ ;ˆÏŒ ëû¡uõýœPΜmrÑ0è=ï@­jµÔJuàP450{pm²ZÒUVW0D[×2.UGS"‹Š3IÙh>F.º  qÙ3G} xÍgËxS ƒVgYL™Ìàû¬‚°CâžÀ¹™ìÅØº$Æ&Z'  ’¬±¾…íMAhïÊj£2¡2à Ðk®9l}ÆÞôBЂG¥ªqÔÌ-£RCß!p@.KçAùTÚcÆq!¨„ bhr¨§a¯í~Ÿ_Zo°{ÓÚÏNN6²œ“Þ§<”³W"·å9Äz•ëFîv‰ONÁJ‰(‡”À> G^ÅAhU¶bìѶ$„¬|õ`m©F{@¨Ë¡zˆè†FbPA<àDÚ̘5I –¸±˜úã èDø1>Ȧ©Ò‹Sn¶…®rÌA¦QÔ;p^ÆjXrˆ4ãx°kTZËRŠzOcÈu⥺•è6HÂтܿWc«Œ,‡¡dÄØrh¹´C”ScQWÜ‚”Ãt©„Å”‹2›ºGŒª;,%5£•c<ß?Ž~9~öþüb³}±˜oëÕló¹ùãñѳ÷'ªõ9ÅN›óëíf±úØœ\^^ÌçwoÖÛÙž6 Ë?ÑŸ¾ï¹2Yi‹AtWñ`Ëd%\* Ë62¨cŒZç+HM£ï¨2׺ödgêf÷mÖ·ãW@ck;¢—ýsYÕft/mBß“w²˜ÿŽ4½=ÎÍÉióîçÇgߥ÷^Ý\nn_϶Ûn³Â„^v«)~òvµšÝu7MÁOTsq|ôx¬ݨÆà÷Ýg¿ÇÓ¯À>5®ù±ùç¿Ts›woÁ‡®Î›hxYF~˜"!Ð\Ë—×ö@üÞêX7÷´öþЙJ :[PåCcã9FD1#+~æxÇkÆ€Þü“àh.j#JPúSªÚÒæÈÿŠ$FÇEÀÂ×M=°â•…æ#Œ•yv.jÆã•*&"´hd;$48}’ä¡B»UØõíì¾»\v«ìüíw/¤ÄNþöE›Ÿ>ßwÓBTe{Ðfš‹ ïú5Ä’eWÐPCÿA{E“B*j ’ ùX·§Ç1­p ³\TL`¾’ªÔe—â¶J.ƒ1¤($ešºÀƒìÜ€“pañ4¸ ‘¿žÄPA‰¡xdG  L¸æá2q‹øTP~@E$€>Ô‘å(©ÁçS*³Åè,qç¨+3åú…uVi„Þ´eä:¾5ÜíÀèð$IÎÊ…2@&Ô«œAå=.35æ;OšºBÏcÅAIä»ÃàÙÒ,“*(1ôŒ‡Ì¯OH˜‰ ›!Úv›æjsÓmN¿öeÃß>Ÿ-—‹›Ùýíb.¦?­×Ëó&4÷Ûæår¶mΘž6ˆü¤¼ ½qõÛlyè65Õtìœ}íÃü÷Î!Tî·ì«y³~\ÝL ¼âUM¶š^ÏËv+öUm/—]óºÜ«}æÕð/›ÙÃÌg7Ý`ƾžÿu¶º¹§-øŠËû®ù¡›ýBVÂýl_­7ÛÛæz;Ûòxýøa¶]ß-Ø×÷ÛÍv1_v}hvW+êQ“×ì |±YÚkžzÛç·³Í|=lÜ~/šFìkl·ØÀàáö°·ëùf½\6¯»ÕÈŽ}í±Fû]—²ø\­å°î‹s³èþÝK}}Íú ¢ ~ÿóì·î‹¾wøz¹ì7g7ÝÙrñ€uZ9ýèÓ³ÿ úÈÓ ¡N1©xtsþvµšÝu7Ãá!™V~Ó/ò£¯–Âv?òsð«â$~ï膖(ѽê>ÕãØh]ø-?ç…†‹¡†|V Uü-Ȭ½yÔ•wXe{ɀ§P!QÙÃ'“ ô¡fukø% LsA›ÆŒN¦¶NÙÿoçÙׯ)Ù:h$ñ¦¯'uÞü‡ýjmjÉ¢ßS•ÿЙªÙ2»AVë­¤fªl6µe˜šlfgSm«±•É%ɰða~ûÞn=,[`lƒYý¼ÏsÏM~Õ(Zà<ä{bmï“2‰’r¶*‘¼(Št.nR”¤®Š¢mA”yŠV©ææÅXÔýD˜lŠKz6h’T‡ÁMÍ‚a¬IÒ–d°ã»m–á;¤®”îy6›©ed‡GA†ºä2VÏ|W2ߌ1pæ»Z¬h@b]®ªÔƒ“¼œ«¤ŒÔrf<ó]]|5â ´U jI*ù³´3燌ˆRÖÚ"1R4]Cֺ㬤Yãê¤Í`¤ü±TùGùŸôTóV]¿è^£ûLéHQÙ‡ÝÚäÝÒŠêð}°("EDF$À“ÈSÕõ*»~èÍ]+ÖókÙíì¯iõU®þ±CÂèv¸Z‹nâ«( ƒiän-¹:Ö\AÓ>&ÿÛ“{2É3GŸÉ¤œéÄ *˜NxϤui$ä&&£Àsæ!MgR"D®aG¸<æS§·ÖÒaÛšÐàYPs$x§‰ó #±ˆ ±'üß]ú³§ ñ"@z@‚]L‰åÝîPozžPùŸ!Ïá°bjŠžiCuIå½)ŒÁf›0SW…®ÃTË5i›F)†ÛcŸRt ËóÃ<èfgË‘wùŒrø…^(ÉÀ‹ÓN%%;x!²!fqÑJ¯\:SŠVJª”,:S.Z)G+MIPuœžka,«$›Vd);nÊgfpéž¼è0˜ æD‡Á¼èlðfƒ‡ µ±š³WÍÍ×ò|ûÊ·Us§ªæ.UuëEÄÒù}j‡ô-ê;àòèÚC“-Á™’ÔŸ°mý~cEæÉP£6˜¥­¿wÎ߯fÜ݀ߠ‚nðÊ!z[³Š.ŸYE UDU— X¡iºišyV¨X0 U+`…ù=yÙ¿Ã 3²ï+Ü >uLÜ×-ŸjùT­õ5ñþ”×Úß\‚ËBŸX6uC$ CQ%ÍdOY‚Þª¯ i‚„gV†1ÞLÞ°PãŠ!(š!CD(¢¦?³ˆhÞ›effÔÓ>B4Ž¼Ûƒø„fóx ´ï…Ó½+ÎÃ*RôÖ‰K¼ç5¢pNÑ%9tìðøÙá+g€ó‹žEfðöeÆÛ¤/?(h«þ]DZï©`ô‹»ªÌ¢Š¦ 'òN¼¨+€›N¡u,’ ¾— jGP·w18=5Ô#:ö,~àoàçíßÞNïöOr‡½ÿ㯟™Îü”§è6v‡yýÏÆ”¸hhÏf`tUl€ìª5, k³Àû‡'¿.,ðwöþËâýàAÙ7Œ?'¡o{¡=?FžÛܯڭgy#Іì$4ð|—úA>–¦bÏŠClå”òSQwH £{ó "%jªN‘––ÿ@1gS°pߟSt ±^€(Å Ë5ÏoȪÿȺ'ˆHLMä,ëi˜–—AQó>ªvOÎF_‡0ýuTÍ Ú9ðö{Ö‹ ›)ó¤Edf˜ì9LI۠ΑÌr½®‡ÏÒ‹þ‹+ݦ´nÛ!·¥YÇɯ`TºP©.\‹þÖÍcÎFs†n[ÊJº1÷ ¢ó¹eqN¸­¥`ªšÉ²\2´€ê=j2Sþ7™R·ù±‰JÎí,e{)Ù ’îAIF,èÈøN !SÉ¥A$l4LFçÌCšÎ¤‡‚:÷k×¢³««€†èö´ ZL–«½tB©ê‡©˜Þë\³º_;öõAº¼Áúꆳ54y*ªž±ð— Cbá¯kj\à´(È: Àw4¼{€ÂCHÚ‘w‹Îb[{‡ÂO(îÙšp²Žt[;¡ú#fÓÎð¤â(‰n5£~BLíן°Mý~]9Ø@¦‰‚ÚX®í*s­ÕéMû| –‘P‚Rgï€6ÆÐŒö‡än-“–¢?å9ý«wCС((º$ñ§,êèPQÅ4%„Y–ôÍûùEÏ"3xû2ã,÷ˉï¢<)>ñÁê‚1º*¦Ã|º‚ãDƉÑ÷„ôZ$$I_ÐíÛÑÔí] NO õˆŽ=‹øãøùÁ¸üÛïW÷û'¹ÃÞ§Úgáµxÿ¯îÛ§°îmcÿŽÿú™Ù‚ß´Á‚§4ˆw/(A$#ǨO|tzº™J×&AÛyÅtÀµ¨…>Xì!¨)§{–7¢ˆëˆžïR?ȇôÒ´@ìYqh¯œRâ*ê)÷‰eσ5R°$Q6y«¡`Uç_ ¦± ¡Oä1µ bÝ Ý nATd¨‚Èí#HÜ$E ƒQ03Š”XæUÔÜÍM•TWr²»€;B{ŒÎ©ûâÐvû]›Ödד³yèØ.Ó’‘¯&gWW Ñ9 §åµdõÒb²ŽdP &SVŽMT–¶hg©rRÔ‚„£)Ɉ')qác±äÒ ª}8&£Àsæ!MgÒCAûÇÖŽuà¥öŠûðbš‹ÁÆŠé‹@É‹±oFÎ]¹ùäQsɃŢì‰" ¸§k£Rl/Šøþò–’oyMòkÊ•*:ïûúM=?Êãtä†úa‚‘zÄO—GXøô$·/{ó°Â.,}›¤¢"6r ª©1"jbY’MP*‹šÔdQÛ*|ò†Å”ul ›ãäfd…w.Órg»–—´ßh8ž6³Ûå¢;‹b)ñù?ûÕúÛ6rÄ¿Ðÿ° Ô*bz_|!‡RœäÜ:ŽjçšF`¬DÚbC‘ÎYú·wv—oI‘’ØéÅ'ÅÙyíÌìofï0K`¬”ÐÛ¡ÜøÉOq1ýÒ1øVÐÛØ(v¶+°]í ì')°?Ô ·ýd¶´õÝdöÅÉ,¾ÊЙï¡_ƒëiŸì3¤ý ÓöµõnCwŠógRz'‘Ÿ¤ËßZ^î-kT°š/ÈÓ¯Ñ]Üù¾ú:7—¸‹Ñp*kiÿ·(‚]{èZîÀ2DX`ÃÄ”Ë'æ˜cpfÛˆZØÕßÃk©s8¼Húr uÊ’xŽÎ§Â‹?/'¼±¸>Ý- k“m/õj{U¯>†îÃÈk³ŒÃ\÷]‚«qÀɧRLS⹘´[ú\_Ó¯d¿óÏòŠòd×®ïÿöG·‰˜^Ú/ਠœü¿h`ÔG4ÿ´¼<»ó# MçþÎèÏØ±˜ žܦT6,îRf….aìÇu¬‡‰ÈEÌÿ8P|G(ô°®·÷P{øÞjïáõ#š]@€ “»ê‰4˜kÉ5ÛßÄjI÷‰QFœE„8;¬ý¹°V_Fž‡IžúB¦Ýûh{}ý•´«gí­´¼qJ¾K!%ZÑLaƒlWwÏt"~@ßËY¦\þÿ?¡ôO€I@y˜}l"Òy0›‡5"­ÍÊwŸÎ"Y#À›¬åæÓÁ±{ù2òI¦ÜHÉ”¤ËÓ8% D×}èÃAÑg™¯»Îí_œWš%BFåc_-}XÈ tF“UûÝ? 2¿¹ZmT¨r°-V fRWÍjV ”™ðÀ–eÃê>Jîu"nK1â8rÄ Ôåòå †vú£¤N‚ëi†š²3jz­½Jã0ÌýÊ7‡+FàIŲÄ^ø„1“[Áj+ÊJFƽ%‚±-]uUŠ8¼ÿ bHR‡Ñ"®U2¼íJG€Ú2’D]Ú'%å´œé1ÂU ¥yc´‹™û·†BK:Y:ìVÉ ~5¼êˆ””ˆž )«áU[ˆ:Dß°u®]=O V Zà{TeC3˜º¾lì:*‘.-ÊCê¢2ªÍl6Q|\ Ë ’Â(of´)æš–4è*o«"+ ¿Î¼Î¤abSg¾0T²¾Ì?+ª‹¨í…ÕȦX.0iW£ÊhuÏäm¶,1U·–®4®Ë—TŽ5ÂÔ"¦<©\ËRn“B¨qn߈ü¦rÈe6«AUö?NüTžS߯BéÕî;úG™ѧ°[KLW.,Ty&´}O6ë¤Tž‘ íH3“o]w °À![É8T¥Qo¿#Wâ—2Æà¯iÌ©¨…U›†c9FëNô -§†üº) ¯e“˶U1—ZÊC<œ*jõR¼èLx7*^)Óðò<óý E‚Ž7*k37´œ½‚ò KèÜ ¤Å»f§§ñبH35÷’GIú›·QòIYè‡þ$Œ³i¿%«ÿ/Š>¢ù*!¥jt›ˆY o Û訹•ð`‘'"˜˜¶”o (€Ž0ë&ÁÜßNC“_)x½/Bƒ,«jv“ж„V"fq~Šë-½hòK£a=HVãb=A6gËÞÞé¼DÕZ9ŠžÀ¤ØœeÊ‚ÅB$q¿<²— #‘Ný´¯ºX”‰tLúÆ¡Qîy] +!LqL ÞãqIZQÄhŠÀS„8d+|é]k瓸Ã[õ;¾Rí ý ¨JäP"y*•Ž|¥ñÿ{9õ4*+©O~6™*/4©ó©ðàÜhc×S¤N¤r?‘e? hq\é}@cH3e¿;¬ëmž×WFÛ¹…9,¾Nâ|~]Ų½x Ù©ûÔdAÓ¯H‹õ$¸)‰†æý *_ˆ•ˆù5LòtŠÞÁí°R¿b½2µFv³°¸ Fo#½¥e»C×$XËlc¤b^e¿KùùDy¸Ju{©R¿,QÛYW'ÅÉ;Š'ù̲#‘Ak|zyXäåT¾yqÉ­&X¦ SÞá10ìƒ$’l‹ÄC“8Œ€‡DNz϶b½ÖÓËvÌc5¢*^“rê¬ç¥ 6²6}ØÈÜð¬å+hƒ!ƒ)#‹Ä&·`1ðP,JM!cšs.æÇ4˜å¡q/x®3_\oólž*²À ¶Pœ€Qiæ !b¶„ÞøPDšN¿ eQEP1蟹ƒìø7€ZU´ÛŸÇ#ÑÅéËÙØ÷aø*޲ôþí™ÏóqêgŠuè«Û›f®7»ŽýLú_«Ç…ÛË®Œ’ø*ý ¬0eM¦K¬‡Ã@×=:œ¿8>vÌ#{¾Z}Oä×ã…üþËâÑ/¿üõñB¾<ѤÇòƒ ý²H÷€‹=y$Ååóž¿vfvfvfvf~B35ÿû7 ÃÏËáç½?FoçY0+Û×9\1ô-ê™f„®1‰9Ê?[^Ðáiœµ×[7ŠQ|ã's9%¡ ‚^>›Çi­jøÕŒäshÚQÕŸ¯°ó¼ã;ãÖS )ÍÑýDÜúIo R]Áä·í"ã 5Mx1%õd 3£âF¤N"µg5:3[Ís(oÐÐaÀw í¯_»xÙÛÃhÐÛË{ À#úð ‘Ä·ò W—B‚>ˆš‚ч[ùöwøõXûŒ8zƒ.>bäõ`í¬·ÇLnØØF ;†Ë̀ƩA¸ËH Ó¶(bÔ10f.¢®‹aæDý†«%µˆA0 ˆòXqìÊpÈ×4¨©øàsÇàØ¦¨â.1ÌJ¥~fưá0RR· nÙâŽepÎÄ@e2†¸mÃ×–R¯`SgåîI¤F<ÔžÏ{¿õÔÆ¼Þž…öûèÃ{5•®Ø#P¿j—0sn¹Oàüš‚#ß´×§—§PÿûƒŒë½æ½­Á²Â™&2—ƒ£6LæÄLÛ ƒè:àI7’Û…wA:nwj_&]žæò$/§•5Mþ{Àk X¡ÐÚÀ¯ iä.åŽòpjI¡Š 1„k (ìí ÈëžaàäL!‡Š±˜ gE´lñ s`{°)nŒRµH N¬š O)eÑ‘Z¦a;©Õ”Òž‚‚È)1059ªTq.q*ƒAtíUÍT:^)ZÞÈ{:î ¸Ll;œ,f«Ð {ˆC"(.›*§]”Îdå–-aˆ3ÑY›bëÁÈ.ëAž;ŽF«›Òl?üh’cðªk«Èj?Ãñ샚êâQ[P¦Žc¿3•Ù¡ÇÅØ@¬ ¾7õxŽ{dá¡ò³["N±3‚÷ã‡Ug2Ī39bÕ™,s‘>7qJƒkI´Ê -Ï{­q¯5L!xÐ NëhqÏLM7.]UnŠ F)¢ÇåÓZ Å™èu SÆ£è ,9…åpw]Ö†Ô uQCÛ“Û' ˜³o‚–¼;1¹ýœC kÎ#‡CGÏÿ›v”ºe/0—˜­Dþ‡È§3ºd›¬ðã¼mûú!"G•2n(†Éyg†¦:¤x|™[»âÐ7ÌJoÊãKÍÐcAD± ¬ë‚ïL=žã>èò³c/:ÁÎÞVÉPî€gqĪ3Y*¹øËf³¾~ý*Ó¢ëåMµ0ec9ä>tÎL”üx+"W‹åòuÇÏ[[qÍÖñáñýSµ8¾øááîÝúÕÑÏ7×ëMm¨N*“ê#[/߈¡{xÕ°€ÿËyÏ6ÄjÁW€œ|ëýwϯnßž¸¼ÿUÝŸÝl^×ýò¤ø_}/¦~“ç¯ØQ<‰ÕeµXæ˜}½üº÷Lì,àçí¤–ïD{ÍOS£–Öú­`AÔáýG–]^ úRž«Å³ßᆲ—ÿ-Ë?ÁÙ‹‰¨ë“Û‰ì…ÿ­Äãinʘ÷6aqC®Ê*oÀ.62Y¥c$øšœ“—%~Ù$ù´/9æƒ#Á’¬½66<¹ê|œpÇç×—7W¼Øø;âÈYì„[—ön¸Ô˜Ò³õ1 Y-m«úIÂæSe“ÇéQ»Ð(GÚ1Q§áÖgJT4è¹LzP†KޱÙ&ÖXÜmI€—•õ‘­Ú$]ô¤¼¸ì´‚ýëÌü1è!=›ì> stream H‰¬UÛn7}_`ÿ/d´¢x¿´Or›Ò:HÔ„íz- vÕÚ‰þ¾gH9ðUi€@°L ÏÌœáÌ! lSJ.¬ LGÁ…:wÂ%7Q+¦”à°zXB¦dà*`KGͽõÕeqU~.“,ÿ]ìËBÐÿ˲pl|Â.þ)‹{€x 0ZRz›âZ¶%ƒ–ÉãÑòïR²ñ¬íZ¢•›we‘ãJ¦ R•Åt9_o›Ýäl¨6ëšIŤà6ÚÈ&t:²ùUYŒ¯NØü+ÃbÑcuÕüü…*nË[úñY¢YYhçQñ‡ò´³©ZË•¥ú>•¯$ âRW„r&{îÑÀt\BS?KáSH«ZëWÒS=Q¥V¥´RgXFQní^Q4Ç#f#ÁWÈ4*ÀÃ9.}< C¤äϨ¥a O'‚A±ž{¥efŒÁ‰&Âh¹—^Ã;r¢Ng¢d¤æ îƒR°Hî,ÚYg&8‚!­ÉóKõKåcBå]6‚iŒ)žVR'ÆA sZ$Ní§ï“þ’áq‡M° ÷C¡Ÿ3–F߈@¾Û§¾ñáôC¿h.ØM@0¯!‚ `¸ÖBþ˜$Æ‹ñÕ/õâ„ U»WSµ8yqúGËé¬þ\×úk«~Ï~#ÛXrë¤3èôÓЯÛŸžÎêúvû±*ž°_ ù;}½(¢Ĉ}’hDƒ?ÈÒÝ@GŒ³}{Dw¯:½.9Ê Ô<•==—!’»áNÓÕi±°cÐs%°e!FÉÒ <š_ÀŒq:çÕ*+HƒîÐíņȼÏt® JŠá&´' ¥xB-+Nº,òôh<ÆM¤H(‡ú°©$ׯQ|(ÏS-¸r£*=^BÛu:0n­Î4ÏÜèr¶Ñ¥òñFä*€”RåÒL48h$…¬\"ŒÓBЧÔ~žà6?¶ö —Ïm[m›K&ïåöøÁІnºã<®S«ðé×ÿïQx B³3»|Ó^¾¯öM?™À0úP­šy_­7 R¬vÕ]ê¶%‰47Øb«¾Ù ]ß°Ýu÷…,äôÍavÙýÛ,Ï6›ÛÝÐWÀ-‘M‡¦ß®[„`«f`Íצ¾‡î®«Kˆ°p öG·éú³-ÒéŽ!oª›í‘¼ïþZ¾ë‘µi‡c†ýM·ê«›ëý÷j¨é(Ž6Í]³Q¯‡Þœ¿-‹ÿ† úš endstream endobj 21 1 obj 949 endobj 23 1 obj << /Type /ExtGState /ca 0 /CA 0 /BM /Normal /AIS false >> endobj 25 1 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm1 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 218.75537 396.89893 361.16992 477.57861 ] /Length 26 1 R /Resources << /ExtGState << /R1 4 1 R >> >> /Group 32 1 R >> stream 1 1 1 rg 0 0 0 RG 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 360.9248 477.1426 m 219.0005 397.335 l B endstream endobj 26 1 obj 118 endobj 32 1 obj << /Type /Group /S /Transparency /I true /K false /CS /DeviceRGB >> endobj 33 1 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 40 1 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm2 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 229.74463 396.60156 238.8335 404.36279 ] /Length 42 1 R /Resources << /ExtGState << /R1 4 1 R >> >> /Group 43 1 R >> stream 1 1 1 rg 0 0 0 RG 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 229.7773 403.5112 m 235.5 403.75 244.5 405.75 232.75 397 c B endstream endobj 42 1 obj 138 endobj 43 1 obj << /Type /Group /S /Transparency /I true /K false /CS /DeviceRGB >> endobj 46 1 obj << /Type /Font /Subtype /Type1 /BaseFont /NWLTXZ+Symbol /FirstChar 0 /LastChar 255 /FontDescriptor 47 1 R /Widths [ 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 333 713 500 549 833 778 439 333 333 500 549 250 549 250 278 500 500 500 500 500 500 500 500 500 500 278 278 549 549 549 444 549 722 667 722 612 611 763 603 722 333 631 722 686 889 722 722 768 741 556 592 611 690 439 768 645 795 611 333 863 333 658 500 500 631 549 549 494 439 521 411 603 329 603 549 549 576 521 549 549 521 549 603 439 576 713 686 493 686 494 480 200 480 549 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 750 620 247 549 167 713 500 753 753 753 753 1042 987 603 987 603 400 549 411 549 549 713 494 460 549 549 549 549 1000 603 1000 658 823 686 795 987 768 768 823 768 768 713 713 713 713 713 713 713 768 713 790 790 890 823 549 250 713 603 603 1042 987 603 987 603 494 329 790 790 786 713 384 384 384 384 384 384 494 494 494 494 250 329 274 686 686 686 384 384 384 384 384 384 494 494 494 250 ] >> endobj 47 1 obj << /Type /FontDescriptor /FontName /NWLTXZ+Symbol /FontBBox [ -180 -293 1090 1010 ] /Flags 6 /CapHeight 672 /Ascent 1010 /Descent -293 /StemV 120 /ItalicAngle 0 /XHeight 771 /FontFile3 191 0 R >> endobj 48 1 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm3 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 395.25 476.42041 395.25 476.42041 ] /Length 50 1 R /Resources << /ExtGState << /R1 4 1 R >> >> /Group 51 1 R >> stream 1 1 1 rg 0 0 0 RG 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 395.25 476.4204 m B endstream endobj 50 1 obj 97 endobj 51 1 obj << /Type /Group /S /Transparency /I true /K false /CS /DeviceRGB >> endobj 54 1 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm4 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 219.04004 309.00781 354.85059 398.23438 ] /Length 55 1 R /Resources << /ExtGState << /R1 4 1 R >> >> /Group 56 1 R >> stream 1 1 1 rg 0 0 0 RG 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 219.3135 397.8159 m 354.5771 309.4268 l 219.3135 397.8159 l h B endstream endobj 55 1 obj 141 endobj 56 1 obj << /Type /Group /S /Transparency /I true /K false /CS /DeviceRGB >> endobj 58 1 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm5 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 219.28906 390.50098 358.27441 398.31543 ] /Length 59 1 R /Resources << /ExtGState << /R1 4 1 R >> >> /Group 60 1 R >> stream 1 1 1 rg 0 0 0 RG 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 358.25 391 m 219.3135 397.8159 l B endstream endobj 59 1 obj 112 endobj 60 1 obj << /Type /Group /S /Transparency /I true /K false /CS /DeviceRGB >> endobj 63 1 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm6 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 245.25 400.75 245.25 400.75 ] /Length 64 1 R /Resources << /ExtGState << /R1 4 1 R >> >> /Group 66 1 R >> stream 1 1 1 rg 0 0 0 RG 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 245.25 400.75 m B endstream endobj 64 1 obj 95 endobj 66 1 obj << /Type /Group /S /Transparency /I true /K false /CS /DeviceRGB >> endobj 68 1 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm7 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 222.46973 387.50098 312.53027 393.99902 ] /Length 70 1 R /Resources << /ExtGState << /R1 4 1 R >> >> /Group 71 1 R >> stream 0 0 0 RG 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 222.5 393.5 m 312.5 388 l S endstream endobj 70 1 obj 96 endobj 71 1 obj << /Type /Group /S /Transparency /I false /K false >> endobj 72 1 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 73 1 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm8 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 310.54199 384.78516 316.7168 391.42969 ] /Length 74 1 R /Resources << /ExtGState << /R1 4 1 R >> >> /Group 75 1 R >> stream 0 0 0 rg 0 i /RelativeColorimetric ri /R1 gs 316.7168 387.7422 m 314.6875 387.127 312.1494 386.0215 310.542 384.7852 c 311.9463 388.0342 l 310.9482 391.4297 l 312.3926 390.0068 314.7773 388.5996 316.7168 387.7422 c h f endstream endobj 74 1 obj 220 endobj 75 1 obj << /Type /Group /S /Transparency /I false /K false >> endobj 77 1 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm9 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 218.2832 390.07031 224.45801 396.71484 ] /Length 78 1 R /Resources << /ExtGState << /R1 4 1 R >> >> /Group 80 1 R >> stream 0 0 0 rg 0 i /RelativeColorimetric ri /R1 gs 218.2832 393.7578 m 220.3125 394.373 222.8511 395.4785 224.458 396.7148 c 223.0532 393.4658 l 224.0518 390.0703 l 222.6074 391.4932 220.2227 392.9004 218.2832 393.7578 c h f endstream endobj 78 1 obj 220 endobj 80 1 obj << /Type /Group /S /Transparency /I false /K false >> endobj 82 1 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm10 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 218.2832 384.78516 316.7168 396.71484 ] /Length 84 1 R /Resources << /ExtGState << /R1 4 1 R /R4 72 1 R >> /XObject << /Fm7 68 1 R /Fm8 73 1 R /Fm9 77 1 R >> >> /Group 85 1 R >> stream q /RelativeColorimetric ri /R4 gs /Fm7 Do Q q /R4 gs /Fm8 Do Q q /R4 gs /Fm9 Do Q endstream endobj 84 1 obj 82 endobj 85 1 obj << /Type /Group /S /Transparency /I false /K true >> endobj 88 1 obj << /Type /Font /Subtype /Type1 /BaseFont /WXPZXZ+Times-Italic /FirstChar 0 /LastChar 255 /Encoding /WinAnsiEncoding /FontDescriptor 90 1 R /Widths [ 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 333 420 500 500 833 778 214 333 333 500 675 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 675 675 675 500 920 611 611 667 722 611 611 722 722 333 444 667 556 833 667 722 611 722 611 500 556 722 611 833 611 556 556 389 278 389 422 500 333 500 500 444 500 444 278 500 500 278 278 444 278 722 500 500 500 500 389 389 278 500 444 667 444 444 389 400 275 400 541 250 250 250 333 500 556 889 500 500 333 1000 500 333 944 250 556 250 250 333 333 556 556 350 500 889 333 980 389 333 667 250 389 556 250 389 500 500 500 500 275 500 333 760 276 500 675 333 760 333 400 675 300 300 333 500 523 250 333 300 310 500 750 750 750 500 611 611 611 611 611 611 889 667 611 611 611 611 333 333 333 333 722 667 722 722 722 722 722 675 722 722 722 722 722 556 611 500 500 500 500 500 500 500 667 444 444 444 444 444 278 278 278 278 500 500 500 500 500 500 500 675 500 500 500 500 500 444 500 444 ] >> endobj 90 1 obj << /Type /FontDescriptor /FontName /WXPZXZ+Times-Italic /FontBBox [ -169 -217 1010 883 ] /Flags 32 /CapHeight 653 /Ascent 883 /Descent -217 /StemV 76 /ItalicAngle 0 /XHeight 441 /FontFile3 189 0 R >> endobj 91 1 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm11 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 365 395.2373 368 473.5127 ] /Length 92 1 R /Resources << /ExtGState << /R1 4 1 R >> >> /Group 93 1 R >> stream 0 0 0 RG 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 367.5 473.5 m 365.5 395.25 l S endstream endobj 92 1 obj 99 endobj 93 1 obj << /Type /Group /S /Transparency /I false /K false >> endobj 94 1 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 95 1 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm12 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 362.21777 391.02637 368.87207 397.09277 ] /Length 96 1 R /Resources << /ExtGState << /R1 4 1 R >> >> /Group 97 1 R >> stream 0 0 0 rg 0 i /RelativeColorimetric ri /R1 gs 365.3916 391.0264 m 364.7051 393.0332 363.5107 395.5308 362.2178 397.0928 c 365.5137 395.8042 l 368.8721 396.9224 l 367.501 395.4287 366.1797 392.9951 365.3916 391.0264 c h f endstream endobj 96 1 obj 221 endobj 97 1 obj << /Type /Group /S /Transparency /I false /K false >> endobj 99 1 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm13 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 364.12793 471.65723 370.78223 477.72314 ] /Length 104 1 R /Resources << /ExtGState << /R1 4 1 R >> >> /Group 105 1 R >> stream 0 0 0 rg 0 i /RelativeColorimetric ri /R1 gs 367.6084 477.7231 m 368.2949 475.7173 369.4893 473.2192 370.7822 471.6572 c 367.4863 472.9458 l 364.1279 471.8276 l 365.499 473.3213 366.8203 475.7549 367.6084 477.7231 c h f endstream endobj 104 1 obj 221 endobj 105 1 obj << /Type /Group /S /Transparency /I false /K false >> endobj 107 1 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm14 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 362.21777 391.02637 370.78223 477.72314 ] /Length 108 1 R /Resources << /ExtGState << /R1 4 1 R /R5 94 1 R >> /XObject << /Fm11 91 1 R /Fm12 95 1 R /Fm13 99 1 R >> >> /Group 112 1 R >> stream q /RelativeColorimetric ri /R5 gs /Fm11 Do Q q /R5 gs /Fm12 Do Q q /R5 gs /Fm13 Do Q endstream endobj 108 1 obj 85 endobj 112 1 obj << /Type /Group /S /Transparency /I false /K true >> endobj 122 1 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm15 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 320.9707 385.00098 355.0293 387.99902 ] /Length 126 1 R /Resources << /ExtGState << /R1 4 1 R >> >> /Group 130 1 R >> stream 0 0 0 RG 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 321 387.5 m 355 385.5 l S endstream endobj 126 1 obj 94 endobj 130 1 obj << /Type /Group /S /Transparency /I false /K false >> endobj 138 1 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 142 1 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm16 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 353.0498 382.28027 359.21777 388.92578 ] /Length 146 1 R /Resources << /ExtGState << /R1 4 1 R >> >> /Group 156 1 R >> stream 0 0 0 rg 0 i /RelativeColorimetric ri /R1 gs 359.2178 385.252 m 357.1895 384.6318 354.6533 383.5205 353.0498 382.2803 c 354.4463 385.5322 l 353.4404 388.9258 l 354.8877 387.5059 357.2764 386.1045 359.2178 385.252 c h f endstream endobj 146 1 obj 220 endobj 156 1 obj << /Type /Group /S /Transparency /I false /K false >> endobj 164 1 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm17 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 316.78223 384.07422 322.9502 390.71973 ] /Length 166 1 R /Resources << /ExtGState << /R1 4 1 R >> >> /Group 176 0 R >> stream 0 0 0 rg 0 i /RelativeColorimetric ri /R1 gs 316.7822 387.748 m 318.8105 388.3682 321.3467 389.4795 322.9502 390.7197 c 321.5537 387.4678 l 322.5596 384.0742 l 321.1123 385.4941 318.7236 386.8955 316.7822 387.748 c h f endstream endobj 166 1 obj 220 endobj 176 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 178 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm18 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 316.78223 382.28027 359.21777 390.71973 ] /Length 179 0 R /Resources << /ExtGState << /R1 4 1 R /R6 138 1 R >> /XObject << /Fm15 122 1 R /Fm16 142 1 R /Fm17 164 1 R >> >> /Group 180 0 R >> stream q /RelativeColorimetric ri /R6 gs /Fm15 Do Q q /R6 gs /Fm16 Do Q q /R6 gs /Fm17 Do Q endstream endobj 179 0 obj 85 endobj 180 0 obj << /Type /Group /S /Transparency /I false /K true >> endobj 182 0 obj << /Type /Group /S /Transparency /I false /K false /CS /DeviceRGB >> endobj 184 0 obj /DeviceRGB endobj 185 0 obj << /Filter /FlateDecode /Length 186 0 R /Height 128 /Width 128 /BitsPerComponent 8 /ColorSpace 184 0 R >> stream H‰ì—=kOÆÏ7H)Vñ Hì,“BlR¤ƒvG ¤M# D1 ߢ_J1¢)S9…Øü!ˆU:-üûÿ={?gžùÏîÎÎÌξœ<^ÅawÏìì=×}ÝoI2~‡{{{Ãê" cÍïß¿Û6|,o¡ ˜I^|óæÚêÇ‘ =]øþý;t á5í¯|ú74ZÑç_GÀ¶¨½Ý´€˜Ah´hCÃPi¹mCþ%†¶ ©Â|gë ¹è´zAjkg™×qʼ ÇéT¶qÁ˜šm`Ü…ôòåË[·n©[ŽÓž-~ Õ<~üx|»;©È;;;ÓÓÓò„ÛÉÉÉ6mrÆXG®žyøþy811Ñëõ:~.ìkÙË8 nÿƒÁþÏœ9Óå&§m+!½±¡ះRŸ墛ÚØÖ¶!R•Û+ý«Û¦ŒòCgUaGi“içÿ ů_¿ê²Ï aÉwéY377§nÿ‡‡‡BþîîîÒÒÒÚÚZ[^Çj››ês±’B±he+0väK‡›êsQÄ?T£yÄ/×qtÄx‘/ó”oÕùç]u^! {nIAMuÁ‘_Zd-0øWÏaþøø8IÅO-ÀÕítÇu;Æ<å‹"þ‘½ª¹’‹ªéÌ òÝ‹¬EüôíÛÛÛUö÷ÌwȲÌS¾°ð/ ùü¥ Ô ´Ä¹øP0ª¤ú\ uäì¶R…É?Íðßqò]æ)_LOO+Ú³üKÿ³°°Ð@ÿÃ×£Dtˆ’êsaçÿ E’:"ú§uH\×ú‰0øÎS¾(â_šÏ$eý×Ýÿt0ó„ÍS¾Ðù7’›Ì_Ò‚&iª®ã¢k™'z‘µ 4ÿ ü~¿OZS îZæ©8OùÂÎ?äC;¹¨&å'iSQÓξ¨¯ÈZ055eçåÓüÔTI;Í„y©ú‘Âæ;ÿ$”/ýOsЖøI0ÿêÕ«è™<¬|—ò/ÍOôæ³yñãñ­­-ȯµÃñm_íüC>õ7zÿa)7øspòüùóf"ŽÏ­¬¬¸x™5:ÿ'’yø%ù㈈6I¾Ro/›-mÐý¿~k,€v2Lqm‹¸[$!ÿüùòžªÒÍZðïôô´~[³Eÿª¨[Šjž‚v.‚7jëöyËì­ð_«ø%Õ«ƒc‹‹‹“““ÓäÉÜÜœoòdÃ"bíüKÛ½ó©/ùË4¤n}Ó‚‡ H†ÿ\µKXM¦ð:‹s7´ð0™Ÿþ‡àþ9 øD©8Û{û¶â óŽ} ›K,¸"מÒü£ÆÞX#@ô䃮²³§%äs1 ´W†‡Lø§{qwA6vþEö«ÿŒ˜|à\Oõ RÜ÷|/w Çw¥ ëOVR¨ÛìYH>Â|”ù ºF‘5Ðù;Y¨””O\¹rE%¢*ˆ"~™§ŠþÍjÌIãÕëÑ\ ÇÅz2øÏå'bÿS‘ÿl‘ÍÂ]üx ò£´Ü˜Dùpü4_TÕªTÿɨDA0ÿjž*]æÎ'Š¥Ï4žœœ\¿~=û\áýû÷³³³ûûûÆs¾ëJÊSvþQ¾$Ÿ…… ËÎvˆÍžê ¸‹¿ˆ®ååå™ðœ} ïÈ¿¸àÏŸ?Æ¿8T'Ót(Z²ð¯~,ýSyKlÀ˜§ì€L÷Åt}Y® tf„ÜÀ)jA6$¡9†€˜ŠËtÍèü í„@+§KªÞ¿ˆ(2£!û¢Š°¹¹™]ŸÙ&?B;2Ð97ô $óDqcæ}#%ñámÓ4fŸ#i²MöE{€`…ØÅiÅ-ü ð‚T¥¥¥ŠP)?2Oå¿Rˆ%\„í¯P4êòuÿìšRþ‘å8ã`°…ÿ¬æ „¢³»À¢ÿÒ"+1ȯ„dîæŽÉ r (÷¯(üYîUØÎ?çÕÇ®Š#X‘>³óŸ&Üvww|¿ßç ×êß\þÝÅO~ÎM>àëׯöü¯óO-ÈÝ„³Àª‹%vþ“4êEok)ªˆ?»¹<ÙÚÚúòåËpqß’\ǧ…yÅ?¹ÅÈÈ/*‘GGGŠ^:Ìì‚ÕÕUµ ¨×•âîb +¯^½ªh è½ ó_4Oü3z$)çâz˜/ªA^§%ÑA»EÞz¶$yøwdòâÅ‹ê:`8ò‚ìoIõp(‡‚g\°BB/IƒÑ‰îÆ÷z=K¥P% —^qÐüü¼åvë¸y󦺮• .˽ø·/`È¢ýKŽÂT~-;À¿c<6Æ?‘{ûöí?JžÇ¼¡‚ýóçÏêÖ7 º[ާJù¯Ž•.+¹ìÇ—/_V·¹ŽÀ‰8Gôû}ŸSVBéHR%ŒÍ×ÖÖ~¥È®„|hÌ>g¶=991bÌëÙóh•T˜k²¯À­¾>ë&v?ž?Þñ€Õá˜"ÂAßüððpaaáøø8w%„ gã!ÌÏÏÏÏÎÎ:z_–QfffVWWõ¿p®½ù!"`že=ÊUBM(Õ¿‚‚{J76‡ôoYLø<yñ/ØÜÜ„#TƒW„á¨S¥ùtlS£À‹Ï$Õ^pœX¦\À¹,‹ÑmVx¹ù§Æ+Ø€sß½ÿ~“ü»ë_‡{ ¨ýíâOF]e”Q×3fnq§0¬Â†ååå&ù—,ìE—@þ©¹¥ü'iýìEn•fÀ¨GX»’"® vø¦ ¥ )ˆÃ’ÿ],‰ˆ?—Ï\=HgÕ0ÿa)HÝÒ¼'è²±^°8”!‹z¤«Bæ ¨2ò "ÿK p(÷“tQ%$ ²ëN¦¬$Fùº;¢ðŸXÁKQ,Ž’…æR8.ñ'mðÏwÃÆÛ\àÍ,Û^!¤ãÓhøî lnžÿ$^85`´U¾IµŠ x×+‚8¾ZÜ ÿuTN¡oË\@÷ŠM¾BÎñrœaX+üóÅ:#øŠo¢ãu”LGäbžø÷:‹1š±CØ@TqS=\F6°&Å ¹î“º?™Â÷Y{z½ž×±PkÓ+1.ìzsïÂ? ãˆi òÍè'7ÛâKêŽ; IJÁ›H+¥ܹñb®ËÚâ?©9ß¾}«â‚ê("?i•ÿúJ€t»½½½±±QGÑwùºå¤-ò¹ IÃíÞ½{ »@•¡\àz׿¬É ¤*îܹ³¿¿ßÀ·¤îØÝ ÿÔôŒ)‚T·†?J"Z__¯5Œaв¬]þ“ÆC@ ðîÝ»è;ËtàØÚuÿVB@@Q&¨AQbŸ¢%¯³tÿ¤¥ˆ\ „½a;ð"Ggx‹Q.à£qÑbD·Ò ä¶h½ôó‚à‰ ¬¤~="Z A6oËÀ+¾PÛ©ç¢;üË Ú¶®}K,t‡ÿ$={,]UôíÍXÒ)þoÛ„ÿ¢™@X\\ìÿÉB‚æ³ÝÆ#‹Žd!…Z¡ƒü']ÊB‰Ê*}fºÉ¿~ÛV˜¨#ºÉ2*Û¶ÂDô@è,ÿIª·:B¾:$ðEõ­z½^”}j!ÐM\P]ºðÖKiumT4¯ûü'i;ÔY$Õa,øO:ï‚°@`ý¸ðŸtÞ‰ °˜þ§.kj@MCPDÐ6»ëdìøOºÝ)8Â8òŸ¤fwp43 À¯e͘òŸŒê]ÛV”C&µ¢qÐ`0hΚ¨ Ç– ¬ °Ø¹’¢iƒ¢"ÊÚráðŸx¶- þítð/àhÝ/ÊÉ¿ärÚ´&*D`ÝOG*h~ºo­/¤5ê~]†ù~¿úøH˜wÖ ;;;Ý/[U ±Ð)!‰q)U± ŽÜn8`€Ñÿü¿@ØKѤ#öF8Ý©Æ ’—दÔÄþiw䨠w„Ñ%›´_§ ŠIý" cM7Eþ['!^ endstream endobj 186 0 obj 3411 endobj 187 0 obj << /Filter /FlateDecode /Length 188 0 R >> stream H‰äWÙn7ý‚ù>Ú(Ìá¾A€ÚNZ´ êZB^’<(òÈ™@K:gûúž;ä,’Œ$(úTC4<¼¼ëò²¼Ü-ï7Õ¶Uíý‡'OÊ«ÅmõgSßÖ[öJÉÈÎTÐìMy}¿®š?SÂa":öæéSvyU”,¾T VÏëv]±“nÈäiù²¾«ßi›ûŠ•WMõ±®>åѳ›º]L'ëm[ÝäÑe½Ù`°Z¬ï0ºØ­w üJ¦•w9kµ…c«õ¢Mæ²ì¼Ylï>,šj»ü’18y~yQHFŸæ¶¬fEy]aiý±ê”×›ªmê%kjL(v{Ç´5Ü Ï´<ê`Ù¦ÐFqi"\Š[ï| \™Š‘i©¹0²{^ÊI.|¤!e’V‹¨BDË•%1 Œ ܯذÆDÉí 0–…Ö‚-{@Ïó™à¸1:0õÎjÍŒ÷xˆ‹V—>׿ Ÿ˜a/0xïoìÕÁn(òÿðl¨àÑ$"¦£A'¸ÕQ"lÏ¥Óx0ˆ?†pœJ¢Bî^Éý„ýwúgÅ߬¼Ö¤µ|¾‘ìrWüÕ•ë°DùÑ”Mƒ8MÌy’ªu€EØ1Žk¥4Òª¸‘nPdÐ95Á”³Ü'G=#Ò[£"gÌ(É…²† šŒ!ŽÈ0˜*dri”é½ôǶ,Þç…†€’ ‡ö!ŸgJãUV †W‘Cˆøfûíi_Œ¦t%M¤wªµÃr^}nq}±À}î3Zö®S¤sAPÃ@]y¤‹kù²jÚz¹XïßË«Û;qQ<Ëßi_®R_þM;ÊPéUgPHí¿oŠžïšÍ‚ôý¼®o·›jÛB/¯ŠòâÝ¢çïÛÝïU³­··ý÷×]óuõEœ¯S^:_¼Ý[yYßµ‹í²B"Xy±»‡ÁÊY»ûp‡«FZt>ÛëüB•Ï%Ü™¯Î—ôó‰~VHê¾K±«‚ŸoŠ“Åéü=z2ºaÕMqR&äÉ€"àÙüÁ¤ë”ô)dŽ!{ ¹\­Bw ]σ ˜à=[ÛBáè ³Œî—wwÕ4JÏÄE} ‰)úûÒéð‰€øëôàtê®±¶œöî¼4MùëÚP…^†éÎ]•hQ€Ðjÿ(~„l´}ûø}Š=XS•jzTĬ”J·úFa¤ù†‡(¿ÀAqFQçgèä!:¤ñ"£ø!·³·G?|ê]=ƒŸ€dwç8TKŽ¿>IÓZgŽ­&¤ƒC$ô§ÌMT+‰-`pÙHÀëÓCM,kê—´‡t΄ïç·ûÃ=×FO•º«TÔg ™¦>)øD2k»íÔ“,üÉ´Á©«à€ö¬ÖÿŽn$;VJU[„Cßîæn„ endstream endobj 188 0 obj 1487 endobj 189 0 obj << /Filter /FlateDecode /Length 190 0 R /Length1 1218 /Subtype /Type1C >> stream H‰,}LwÇïZî(JNÇY_®ìîX– nJ•9ÁicNÑ D!2A¡´Š”+×J¡¼XJki7^œÈ`€â tÓÍwäecLÜ0dC4ÎéÐ0³-Ù³å¹úcÉ ÛóÇ'O¾É÷›çûàXˆ Ãq|Éž¬{³ö¾ža0êÍ«S,šbƒvN_%©0)—^–I¬\ZÂNïÍ —¡ÍÈøÂñ"”€S‹àêKÑ!-XŽ+ü—GÔêukÔju²`ª …>ZïMˆ_ÿÆ7Ì3aŽ êyÆÍsŸ¤òõüî ³Eo4ó)%ZA4 ¢Æ¢×­áù¤âb~×\š™ß¥7ëŲ :*o0óÞ"jtz£F<È ø÷ %‚¥Â¤_½Mt%må5%ºXAä A³ùP¾Ù 3hDƒÞüÀ]çw,88†-À±Å½ƒ½‹mÅÒ°L,<ø$LŽØ{X-ö9v_Žwã¿É d¿ÈwòO™¯XÏX#.NÐy‡’•Ù°Èýôs»"ÏCK÷ CäØõáQWÓA í(v3R£f‡½öŠgƒk­8˜&äýh›¢a!„ÀFHg`© –$C[î NgœŒæ™¸Jž(v?Z–žš»OAÁ÷=e`Çáæ¸nÂ9%R@@¦q00Ž0¥Ô&oY ÑŠo—öÈa<°F9Ký“HL’H$(÷=éÔ$.ɦåÒ«À) l•¦Úõ1 AÀbXÜwå3µûY”ˆ–5"u&ÛSOôøzbFu(탢ÆtÄ£@Â: Ë Ê>’=&Q½NkDçcÈšttÒƒtޤ™2w¿U¬Rihn|¿zsõ^‚L­w:ks ésÎS¡h5JC+K¼ëþäè/n]êçq•©ŽCÆæ.½xé˳wo±³ Û”33Á®a,=Øï+ÏŽ‰AÅQA‹©¨ëG=±Ÿ•¸|`Ä'rxþ·R[“Ÿ¦J5^¹ÿûl¥]ÝŽ*ÎVÕPÊX:ªûúz»|ƒâèØàQhÅ#ñ»¿nNùûXjÒöHüPÞ‹£•÷¤7ÈÏH¼r†Œ›'´GJµCu¸¾µ•û¤ÍÝÉô•¶We \n½“Ù×|¡fPa7`=P>î˜$'›ýÂȱ¶Øò“ªýXãÎ^ë>ÄØ›Mþ“]ÝÝÝ•W’Qć(á­R6–¤ê®ÚÊ$f,çÓ8?uô!]H÷Ky¦Ì9 ´ª\ÕžŽÖ üîKÌEË©}ñ±ˆKÊa]žoAïôtV¦=³6³VQzý˜½ªlª)F7E^€ÈöKC ZwãìíéaÕgÍÕݯMBN3Sâ1]?3tg4ØÝ>/ü_=ÜÇé ‘•o“¾çžVW[½kE§±®Ñ¡  ³÷ÙluB}CÓáv45(î’ÉÈG4V–§V1F_m÷7ç.ßckZˆƒbaŽUew´¶yÝž&/÷¦‰Ç$UшêDŽv8ÜBBwÖòQhõ‰Àª¨ì˜Ý èh­j ó/¸·Pr.€ò_¼µ endstream endobj 190 0 obj 1183 endobj 191 0 obj << /Filter /FlateDecode /Length 192 0 R /Length1 528 /Subtype /Type1C >> stream H‰bd`ab`ddäó ÷ ‰ˆÒ®ÌMÊω¨ýaø!ËøCŽé‡óq–ß¿wþºö«õ»·À÷þïá‚3~Lb`addãÍÈKÌ)ÈH400Ô30°pÎ/¨,ÊLÏ(QÐHÖT0´´0Õ‘æ`ÒDZ€IsÇ”ü¤T…àÊâ’ÔÜbϼäü¢‚ü¢Ä’Ô=Çœ°1Å E©Å©Ee@A¨ó˜õ„ÛÁ>``ae(`4ùÞÇ÷}U_c÷÷IÌÛ+E¿§ýÔagûöW‡•ïGG÷õzåßåo3~ð”ùGþwYѺ ¬>))Ò¿Ù¾G|yûí«Ôw^ÇóJƺѿµså´±\¸òâ3éïì cÌCT4•åëý¶d­ÿ!ËÎ÷“»rmÎ¥šÊ…¶|þ?Gxðœí?ªE½»±v² ¯iÛT»¹buÉÆÔÕ1“'4ä”9G„7:Õüf™ï±4n~æòâ UgóöLÛ9ëÉŠ…æ¬àŽYì5;cqÉܪ…ÍË.[8uSϼÞc•lu]Ùee99…K§TÌ«]Þ¼û;û÷‹¿Ó~¿^SŸ]U^UZQÒTÕSÐ[7±tañâÆÕm+·žthÒéÛ–¬^¸|îœcU+š–Î.äXš8ÍvR$_żŸ¦³~ÇÎ`{Îõ€ ÀŠÝ endstream endobj 192 0 obj 532 endobj xref 0 193 0000000022 65535 f 0000000016 00000 n 0000000069 00000 n 0000000133 00000 n 0000000674 00001 n 0000000783 00000 n 0000000973 00001 n 0000001052 00001 n 0000001335 00001 n 0000002833 00001 n 0000012552 00001 n 0000028871 00001 n 0000028894 00001 n 0000047760 00001 n 0000047783 00001 n 0000068284 00001 n 0000068307 00001 n 0000088249 00001 n 0000088272 00001 n 0000097689 00001 n 0000097711 00001 n 0000098742 00001 n 0000000024 00002 f 0000098763 00001 n 0000000027 00002 f 0000098844 00001 n 0000099205 00001 n 0000000028 00002 f 0000000029 00002 f 0000000030 00002 f 0000000031 00002 f 0000000034 00002 f 0000099226 00001 n 0000099317 00001 n 0000000035 00002 f 0000000036 00002 f 0000000037 00002 f 0000000038 00002 f 0000000039 00002 f 0000000041 00002 f 0000099398 00001 n 0000000044 00002 f 0000099778 00001 n 0000099799 00001 n 0000000045 00002 f 0000000049 00002 f 0000099890 00001 n 0000101079 00001 n 0000101304 00001 n 0000000052 00002 f 0000101638 00001 n 0000101658 00001 n 0000000053 00002 f 0000000057 00002 f 0000101749 00001 n 0000102133 00001 n 0000102154 00001 n 0000000061 00002 f 0000102245 00001 n 0000102600 00001 n 0000102621 00001 n 0000000062 00002 f 0000000065 00002 f 0000102712 00001 n 0000103038 00001 n 0000000067 00002 f 0000103058 00001 n 0000000069 00002 f 0000103149 00001 n 0000000076 00002 f 0000103488 00001 n 0000103508 00001 n 0000103584 00001 n 0000103665 00001 n 0000104127 00001 n 0000104148 00001 n 0000000079 00002 f 0000104224 00001 n 0000104686 00001 n 0000000081 00002 f 0000104707 00001 n 0000000083 00002 f 0000104783 00001 n 0000000086 00002 f 0000105169 00001 n 0000105189 00001 n 0000000087 00002 f 0000000089 00002 f 0000105264 00001 n 0000000098 00002 f 0000106484 00001 n 0000106713 00001 n 0000107042 00001 n 0000107062 00001 n 0000107138 00001 n 0000107219 00001 n 0000107684 00001 n 0000107705 00001 n 0000000100 00002 f 0000107781 00001 n 0000000101 00001 f 0000000102 00001 f 0000000103 00001 f 0000000106 00001 f 0000108248 00001 n 0000108270 00001 n 0000000109 00002 f 0000108347 00001 n 0000108745 00001 n 0000000110 00001 f 0000000111 00001 f 0000000113 00001 f 0000108766 00001 n 0000000114 00001 f 0000000115 00001 f 0000000116 00001 f 0000000117 00001 f 0000000118 00001 f 0000000119 00002 f 0000000120 00001 f 0000000121 00001 f 0000000123 00001 f 0000108842 00001 n 0000000124 00001 f 0000000125 00001 f 0000000127 00001 f 0000109181 00001 n 0000000128 00001 f 0000000129 00001 f 0000000131 00001 f 0000109202 00001 n 0000000132 00001 f 0000000133 00001 f 0000000134 00001 f 0000000135 00001 f 0000000136 00001 f 0000000137 00001 f 0000000139 00001 f 0000109279 00001 n 0000000140 00001 f 0000000141 00001 f 0000000143 00001 f 0000109361 00001 n 0000000144 00001 f 0000000145 00001 f 0000000147 00001 f 0000109827 00001 n 0000000148 00001 f 0000000149 00001 f 0000000150 00001 f 0000000151 00001 f 0000000152 00001 f 0000000153 00001 f 0000000154 00001 f 0000000155 00001 f 0000000157 00001 f 0000109849 00001 n 0000000158 00001 f 0000000159 00001 f 0000000160 00001 f 0000000161 00002 f 0000000162 00001 f 0000000163 00001 f 0000000165 00001 f 0000109926 00001 n 0000000167 00001 f 0000110392 00001 n 0000000168 00001 f 0000000169 00001 f 0000000170 00001 f 0000000171 00001 f 0000000172 00001 f 0000000173 00001 f 0000000174 00001 f 0000000175 00001 f 0000000177 00001 f 0000110414 00000 n 0000000181 00001 f 0000110491 00000 n 0000110893 00000 n 0000110914 00000 n 0000000183 00001 f 0000110990 00000 n 0000000000 00001 f 0000111083 00000 n 0000111112 00000 n 0000114667 00000 n 0000114690 00000 n 0000116257 00000 n 0000116280 00000 n 0000117574 00000 n 0000117597 00000 n 0000118239 00000 n trailer << /Size 193 /Info 5 0 R /Root 1 0 R >> startxref 118261 %%EOF ctsim-6.0.2/doc/ctsim-algorithms.tex0000644000175000017500000002023210667176710016437 0ustar kevinkevin\chapter{Algorithms}\label{algorihms}\index{Algorithms} \setheader{{\it Appendix \thechapter}}{}{}{\ctsimheadtitle}{}{{\it Appendix \thechapter}}% \ctsimfooter% \ctsim\ uses a number of interesting algorithms. This appendix details some of the techniques that \ctsim\ uses. \section{Phantom Processing}\label{phantomprocessing} \textbf{Key Concepts}\\ \hspace*{1cm}\texttt{Geometric transformations}\\ \hspace*{1cm}\texttt{Matrix algebra}\\ Phantom objects are processed in two different ways: rasterization and projections. \ctsim\ uses optimized techniques to perform those procedures. The primary tool used to optimize these processes is \emph{Geometric transformations}. For every primitive \helpref{phantom element}{phantomelements}, a standardized configuration is defined. This standard configuration is used to speed the process of collecting projections. In general, to transform an object into the standard configuration, the following sequence of transformations occur. When this sequence is performed, the coordinates are termed the \emph{normalized phantom element} coordinates. \begin{itemize} \item Scaling by the inverse of its size, that is usually scaling by \texttt{(1/dx,1/dy)}. \item Translating the object to the origin, that is usually translation by \texttt{(-cx,-cy)}. \item Rotating the object by \texttt{-r}. \end{itemize} These steps can by combined into a single matrix multiplication which involves only 4 multiplications and 6 additions to transform both \texttt{x} and \texttt{y} coordinates. This matrix is precalculated and stored when the phantom is created. Similarly, the inverse of the matrix is precalculated and store to perform the inverse of this transformation. As an example of this technique, consider the problem of finding the length of an arbitrary line that may intersect an arbitary ellipse. Define the endpoints of the line by \texttt{(x1,y1)} and \texttt{(x2,y2)}. \begin{enumerate} \item First, transform the coordinates into the normalized phantom element coordinates. At this point, the ellipse will have been transformed into a unit circle centered at \texttt{(0,0)}. \item Translate the coordinates by \texttt{(-x1,-y2)}. The line now has the endpoint centered at the origin. The ellipse will now have its center at \texttt{(-x1,-y1)}. \item Rotate the coordinates by the negative of angle of the line with respect to the x-axis. \end{enumerate} At this point the line will now lie along the positive x-axis with one end at \texttt{(0,0)}. The circle will be rotated around the origin as well. At this point, it is fairly trivial to calculate the length of the intersection of the line with the unit circle. For example, if the \texttt{y} coordinate for the center of the circle is greater than \texttt{1} or less than \texttt{-1}, then we know that the unit circle doesn't intersect the line at all and stop further processing. Otherwise, the endpoints of the intersection of the line with the unit circle is a simple calculation. Those new, intersected endpoints are then inverse transformed by reverse of the above transformation sequence. After the inverse translation, the transformed endpoints will be the endpoints of the line that intersect the actual ellipse prior to any transformations. Though this sequence of events is somewhat complex, it is quite fast since the multiple transformations can be combined into a single matrix multiplication. Further, this technique is amendable to rapidly calculating the intersection of a line with any of the phantom elements that \ctsim\ supports. \section{Background Processing}\label{backgroundprocessing}\index{Background processing} \textbf{Key Concepts}\\ \hspace*{1cm}\texttt{Multithreading}\\ \hspace*{1cm}\texttt{Critical sections}\\ \hspace*{1cm}\texttt{Message passing}\\ \hspace*{1cm}\texttt{Re-entrant code}\\ The \ctsim\ graphical shell can optionally perform background processing. \ctsim\ uses threads as tools to achieve this functionality. Using multiple threads, termed \emph{multithreading}, allows \ctsim\ to: \begin{itemize} \item Execute a lengthy calculation in the background while the graphical shell remains available for use. \item Automatically take advantage of multiple central processing units (CPU's) in a symmetric multiprocessing (SMP) computer. \end{itemize} When background processing option is turned on or when \ctsim\ is running on a SMP computer, and \ctsim\ is directed to perform reconstruction, rasterization, or projections, \ctsim\ will spawn a \emph{Background Supervisor} thread. This supervisor thread then creates a \emph{Supervisor Event Handler} (supervisor). The supervisor communicates with the rest of graphical user interface of \ctsim\ by using message passing to avoid issues with re-entrant code. The supervisor registers itself via message passing with the \emph{Background Manager} which will display the execution progress in a pop-up window. The supervisor also registers itself with the document being processed. This is done so that if the document is closed, the document can send a message to the supervisor directing the supervisor to cancel the calculation. After registering with \ctsim\ components, the supervisor creates \emph{Worker Threads}. These worker threads are the processes that actually perform the calculations. By default, \ctsim\ will create one worker thread for every CPU in the system. As the workers complete unit blocks, they notify the supervisor. The supervisor then sends progress messages to background manager which displays a gauge of the progress. As the worker threads directly call the supervisor, it is crucial to lock the class data structures with \emph{Critical Sections}. Critical sections lock areas of code and prevent more than one thread to access a section of code at a time. This is used when maintaining the tables of worker threads in the supervisor. After the workers have completed their tasks, they notify the supervisor. When all the workers have finished, the supervisor kills the worker threads. The supervisor then collates the work units from the workers and sends a message to \ctsim\ to create a new window to display the finished work. The supervisor then deregisters itself via messages with the background manager and the document. The background manager removes the progress gauge from its display and resizes its window. Finally, the background supervisor exits and background supervisor thread terminates. This functionality has been compartmentalized into inheritable C++ classes \texttt{BackgroundSupervisor}, \texttt{BackgroundWorkerThread}, and \texttt{BackgroundProcessingDocument}. These classes serve as base classes for the reconstruction, rasterization, and projection multithreading classes. \subsection{Advantages} This structure may seem more complex than is necessary, but it has several advantages: \begin{itemize} \item Since the background threads do not directly call objects in the graphical user interface thread, problems with re-entrant code in the graphical interface are eliminated. \item A supervisor can parallel process with any number of worker threads to take advantage of potentially large numbers of CPU's in SMP computers. \item Allows for continued user-interaction with \ctsim\ while lengthy calculations are performed in the background. \end{itemize} \subsection{Disadvantages} The above advantages are not free of cost. The disadvantages include: \begin{itemize} \item Increased memory usage.\\ The workers threads allocate memory to store their intermediate results. When the worker threads finish, the supervisor allocates memory for the final result and collates the results for the workers. This collation results in a doubling of the memory requirements. Of course, after collation the supervisor releases the memory used by the workers. \item Slower execution on single CPU systems. \\ Creating multiple threads, sending progress messages to the background manager, and collation of results for worker threads adds overhead compared to simply calculating the result directly in the foreground. On single CPU systems this results in slower processing compared to foreground processing. On dual-CPU and greater SMP systems, though, the advantage of using multiple CPU's in parallel exceeds the overhead of background processing. \end{itemize} ctsim-6.0.2/doc/ctsim-concepts.tex0000644000175000017500000004650710667176710016121 0ustar kevinkevin\chapter{Concepts} \setheader{{\it CHAPTER \thechapter}}{}{}{\ctsimheadtitle}{}{{\it CHAPTER \thechapter}} \ctsimfooter \section{Conceptual Overview}\index{Conceptual overview} The operation of \ctsim\ begins with the phantom object. A phantom object consists of geometric elements. A scanner is specified and the collection of x-ray data, or projections, is simulated. This projection data can be reconstructed using various user-controlled algorithms producing an image of the phantom object. These reconstructions can be visually and statistically compared to the original phantom object. In order to use \ctsim\ effectively, some knowledge of how \ctsim\ works and the approach taken is required. \ctsim\ deals with a variety of object, but the two primary objects that we need to be concerned with are the \helprefn{phantom}{conceptphantom} and the \helprefn{scanner}{conceptscanner}. \section{Phantoms}\label{conceptphantom} \ctsim\ uses geometrical objects to describe the object being scanned. A phantom is composed of one or more phantom elements. These elements are simple geometric shapes, specifically, rectangles, triangles, ellipses, sectors and segments. With these elements, the standard phantoms used in the CT literature can be constructed. In fact, \ctsim\ provides a shortcut to load the published phantoms of Herman\cite{HERMAN80} and Shepp-Logan\cite{SHEPP74}. \ctsim\ also reads text files of user-defined phantoms. The types of phantom elements and their definitions are taken with permission from G.T. Herman's publication\cite{HERMAN80}. \subsection{Phantom File}\label{phantomfile}\index{Phantom!File syntax} Each line in the text file describes an element of the phantom. Each line contains seven entries, in the following form: \begin{verbatim} element-type cx cy dx dy r a \end{verbatim} The first entry defines the type of the element, either \texttt{rectangle}, \texttt{ellipse}, \texttt{triangle}, \texttt{sector}, or \texttt{segment}. For all phantom elements, \texttt{r} is the rotation applied to the object in degrees counterclockwise and \texttt{a} is the X-ray attenuation coefficient of the object. Where objects overlap, the attenuations of the overlapped objects are summed. As opposed to the \texttt{r} and \texttt{a} fields, the \texttt{cx}, \texttt{cy}, \texttt{dx} and \texttt{dy} fields have different meanings depending on the element type. \subsection{Phantom Elements}\label{phantomelements}\index{Phantom!Elements} \subsubsection{ellipse} Ellipses use \texttt{dx} and \texttt{dy} to define the semi-major and semi-minor axis lengths with the center of the ellipse at \texttt{(cx,cy)}. Of note, the commonly used phantom described by Shepp and Logan\cite{SHEPP74} uses only ellipses. \subsubsection{rectangle} Rectangles use \texttt{(cx,cy)} to define the position of the center of the rectangle with respect to the origin. \texttt{dx} and \texttt{dy} are the half-width and half-height of the rectangle. \subsubsection{triangle} Triangles are drawn with the center of the base at \texttt{(cx,cy)} and a base half-width of \texttt{dx} and a height of \texttt{dy}. Rotations are then applied about the center of the base. \subsubsection{segment} Segments are complex. They are the portion of an circle between a chord and the perimeter of the circle. \texttt{dy} sets the radius of the circle. Segments start with the center of the chord located at \texttt{(0,0)} and the chord horizontal. The half-width of the chord is set by \texttt{dx}. The portion of an circle lying below the chord is then added. The imaginary center of this circle is located at \texttt{(0,-dy)}. The segment is then rotated by \texttt{r} and then translated by \texttt{(cx,cy)}. \subsubsection{sector} Sectors are the like a ``pie slice'' from a circle. The radius of the circle is set by \texttt{dy}. Sectors are defined similarly to segments. In this case, though, a chord is not drawn. Instead, the lines are drawn from the origin of the circle \texttt{(0,-dy)} to the points \texttt{(-dx,0)} and \texttt{(dx,0)}. The perimeter of the circle is then drawn between those two points and lies below the x-axis. The sector is then rotated and translated the same as a segment. \subsection{Phantom Size}\index{Phantom!Size} The overall dimensions of the phantom are increased by 1\% above the specified sizes to avoid clipping due to round-off errors from sampling the polygons of the phantom elements. So, if the phantom is defined as a rectangle of size 0.1 by 0.1, the phantom size is 0.101 in each direction. \section{Scanner}\label{conceptscanner}\index{Scanner!Concepts}% Understanding the scanning geometry is the most complicated aspect of using \ctsim. For real-world CT simulators, this is actually quite simple. The geometry is fixed by the manufacturer during the construction of the scanner and can not be changed. \ctsim, being a very flexible simulator, gives tremendous options in setting up the geometry for a scan. \subsection{Dimensions} The geometry for a scan starts with the size of the phantom being scanned. This is because \ctsim\ allows for statistical comparisons between the original phantom image and it's reconstructions. Since CT scanners scan a circular area, the first important variable is the diameter of the circle surround the phantom, the \emph{phantom diameter}. Remember, as mentioned above, the phantom dimensions are padded by 1\%. The other important geometry variables for scanning phantoms are the \emph{view diameter}, \emph{scan diameter}, \emph{focal length}, and \emph{center-detector length}. These variables are input into \ctsim\ in terms of ratios rather than absolute values. \subsubsection{Phantom Diameter}\index{Phantom!Diameter} The phantom diameter is automatically calculated by \ctsim\ from the phantom definition. The maximum of the phantom length and height is used to define the square that completely surrounds the phantom. Let \latexonly{$p_l$}\latexignore{\emph{Pl}} be the width and height of this square. The diameter of this boundary box, \latexonly{$p_d$,}\latexignore{\emph{Pd},} is given by the Pythagorean theorem and is \latexignore{\\\centerline{\emph{Pl x sqrt(2)}}\\} \latexonly{\begin{equation}p_d = p_l \sqrt{2}\end{equation}} CT scanners collect projections around a circle rather than a square. The diameter of this circle is the diameter of the boundary square \latexonly{$p_d$.} \latexignore{\emph{Pd}.} \latexonly{These relationships are diagrammed in figure~\ref{phantomgeomfig}.} \begin{figure} \centerline{\image{8cm;0cm}{scangeometry.eps}} \latexonly{\caption{\label{phantomgeomfig} Phantom Geometry}} \end{figure} \subsubsection{View Diameter}\index{View diameter} The \emph{view diameter} is the area that is being processed during scanning of phantoms as well as during rasterization of phantoms. By default, the \emph{view diameter} is set equal to the \emph{phantom diameter}. It may be useful, especially for experimental reasons, to process an area larger (and maybe even smaller) than the phantom. Thus, during rasterization or during projections, \ctsim\ will ask for a \emph{view ratio}, \latexonly{$v_r$.}\latexignore{\rtfsp \emph{VR}.} The \emph{view diameter} is then calculated as \latexonly{\begin{equation}v_d = p_dv_r\end{equation}} \latexignore{\\\centerline{\emph{Vd = Pd x VR}}\\} By using a \latexonly{$v_r$}\latexignore{\emph{VR}} less than 1, \ctsim\ will allow for a \emph{view diameter} less than \emph{phantom diameter}. This will lead to significant artifacts. Physically, this would be impossible and is analogous to inserting an object into the CT scanner that is larger than the scanner itself! \subsubsection{Scan Diameter}\index{Scan diameter} By default, the entire \emph{view diameter} is scanned. For experimental purposes, it may be desirable to scan an area either larger or smaller than the \emph{view diameter}. Thus, the concept of \emph{scan ratio}, \latexonly{$s_r$,}\latexignore{\emph{SR},} arises. The scan diameter, \latexonly{$s_d$,}\latexignore{\emph{Sd},} is the diameter over which x-rays are collected and is defined as \latexonly{\begin{equation}s_d =v_d s_r\end{equation}} \latexignore{\\\centerline{\emph{Sd = Vd x SR}}\\} By default and for all ordinary scanning, the \emph{scan ratio} is to \texttt{1}. If the \emph{scan ratio} is less than \texttt{1}, you can expect significant artifacts. \subsubsection{Focal Length}\index{Focal length} The \emph{focal length}, \latexonly{$f$,}\latexignore{\emph{F},} is the distance of the X-ray source to the center of the phantom. The focal length is set as a ratio, \latexonly{$f_r$,}\latexignore{\emph{FR},} of the view radius. Focal length is calculated as \latexonly{\begin{equation}f = (v_d / 2) f_r\end{equation}} \latexignore{\\\centerline{\emph{F = (Vd / 2) x FR}}} For parallel geometry scanning, the focal length doesn't matter. However, for divergent geometry scanning (equilinear and equiangular), the \emph{focal length ratio} should be set at \texttt{2} or more to avoid artifacts. Moreover, a value of less than \texttt{1} is physically impossible and it analagous to having the x-ray source inside of the \emph{view diameter}. \subsubsection{Center-Detector Length}\index{Center-Detector length} The \emph{center-detector length}, \latexonly{$c$,}\latexignore{\emph{C},} is the distance from the center of the phantom to the center of the detector array. The center-detector length is set as a ratio, \latexonly{$c_r$,}\latexignore{\emph{CR},} of the view radius. The center-detector length is calculated as \latexonly{\begin{equation}f = (v_d / 2) c_r\end{equation}} \latexignore{\\\centerline{\emph{F = (Vd / 2) x CR}}} For parallel geometry scanning, the center-detector length doesn't matter. A value of less than \texttt{1} is physically impossible and it analagous to having the detector array inside of the \emph{view diameter}. \subsection{Parallel Geometry}\label{geometryparallel}\index{Parallel geometry}\index{Scanner!Parallel} The simplest geometry, parallel, was used in first generation scanners. As mentioned above, the focal length is not used in this simple geometry. The detector array is set to be the same size as the \emph{scan diameter}. For optimal scanning in this geometry, the \emph{scan diameter} should be equal to the \emph{phantom diameter}. This is accomplished by using the default values of \texttt{1} for the \emph{view ratio} and the \emph{scan ratio}. If values of less than \texttt{1} are used for these two variables, significant distortions will occur. \subsection{Divergent Geometries}\label{geometrydivergent}\index{Equilinear geometry}\index{Equiangular geometry} \index{Scanner!Equilinear}\index{Scanner!Equiangular} For both equilinear (second generation) and equiangular (third, fourth, and fifth generation) geometries, the x-ray beams diverge from a single source to a detector array. In the equilinear mode, a single source produces a fan beam which is read by a linear array of detectors. If the detectors occupy an arc of a circle, then the geometry is equiangular. \latexonly{These configurations are shown in figure~\ref{divergentfig}.} \begin{figure} \centerline{\image{10cm;0cm}{divergent.eps}} \latexonly{\caption{\label{divergentfig} Equilinear and equiangular geometries.}} \end{figure} \subsubsection{Fan Beam Angle}\index{Fan beam angle} For these divergent beam geometries, the \emph{fan beam angle} needs to be calculated. For real-world CT scanners, this is fixed at the time of manufacture. \ctsim, however, calculates the \emph{fan beam angle}, $\alpha$, from the \emph{scan diameter} and the \emph{focal length} as \latexignore{\centerline{\emph{alpha = 2 x asin ( (Sd / 2) / f)}}} \latexonly{\begin{equation}\label{alphacalc}\alpha = 2 \sin^{-1} ((s_d / 2) / f)\end{equation}} \latexonly{This is illustrated in figure~\ref{alphacalcfig}.} \begin{figure} \centerline{\image{10cm;0cm}{alphacalc.eps}} \latexonly{\caption{\label{alphacalcfig} Calculation of $\alpha$}} \end{figure} Empiric testing with \ctsim\ shows that for very large \emph{fan beam angles}, greater than approximately \latexonly{$120^\circ$,}\latexignore{120 degrees,} there are significant artifacts. The primary way to manage the \emph{fan beam angle} is by varying the \emph{focal length} since the \emph{scan diameter} is usually fixed at the size of the phantom. To illustrate, the \emph{scan diameter} can be defined as \latexonly{\begin{equation}s_d = s_r v_r p_d\end{equation}} \latexignore{\\\centerline{\emph{Sd = Sr x Vr x Pd}}\\} Further, the \emph{focal length} can be defined as \latexonly{\begin{equation} f = f_r (v_r p_d / 2)\end{equation}} \latexignore{\\\centerline{\emph{F = FR x (VR x Pd)$$\\}}} Substituting these equations into \latexignore{the above equation,}\latexonly{equation~\ref{alphacalc},} We have, \latexonly{ \begin{eqnarray} \alpha &=& 2\,\sin^{-1} \frac{\displaystyle s_r v_r p_d / 2}{\displaystyle f_r v_r (p_d / 2)} \nonumber \\ &=& 2\,\sin^{-1} (s_r / f_r) \end{eqnarray} } \latexignore{\\\centerline{\emph{\alpha = 2 sin (Sr / Fr)}}\\} Since in normal scanning $s_r$ = 1, $\alpha$ depends only upon the \emph{focal length ratio} in normal scanning. \subsubsection{Detector Array Size} In general, you do not need to be concerned with the detector array size -- it is automatically calculated by \ctsim. For the particularly interested, this section explains how the detector array size is calculated. For parallel geometry, the detector length is simply the scan diameter. For divergent beam geometries, the size of the detector array also depends upon the \emph{focal length}: increasing the \emph{focal length} decreases the size of the detector array. For equiangular geometry, the detectors are equally spaced around a arc covering an angular distance of $\alpha$ as viewed from the source. When viewed from the center of the scanning, the angular distance is \latexonly{$$\pi + \alpha - 2 \, \cos^{-1} \Big( \frac{s_d / 2}{c} \Big)$$} \latexignore{\\\emph{pi + \alpha - 2 x acos ((Sd / 2) / C))}\\} The dotted circle \latexonly{in figure~\ref{equiangularfig}} indicates the positions of the detectors in this case. \begin{figure} \centerline{\image{10cm;0cm}{equiangular.eps}} \latexonly{\caption{\label{equiangularfig}Equiangular geometry}} \end{figure} For equilinear geometry, the detectors are equally spaced along a straight line. The detector length depends upon \latexonly{$\alpha$}\latexignore{\emph{alpha}} and the \emph{focal length}. This length, \latexonly{$d_l$,}\latexignore{Dl,} is calculated as \latexonly{\begin{equation} d_l = 2\,(f + c) \tan (\alpha / 2)\end{equation}} \latexignore{\\\centerline{\emph{2 x (F + C) x tan(\alpha/2)}}} \latexonly{This geometry is shown in figure~\ref{equilinearfig}.} \begin{figure} \centerline{\image{10cm;0cm}{equilinear.eps}} \latexonly{\caption{\label{equilinearfig} Equilinear geometry}} \end{figure} \section{Reconstruction}\label{conceptreconstruction}\index{Reconstruction overview}% \subsection{Direct Inverse Fourier} This method is not currently implemented in \ctsim; however, it is planned for a future release. This method does not give results as accurate as filtered backprojection. This is due primarily to interpolation occurring in the frequency domain rather than the spatial domain. \subsection{Filtered Backprojection}\index{Filtered backprojection}\index{Symmetric multiprocessing}\index{SMP} The technique is comprised of two sequential steps: filtering projections followed by backprojecting the filtered projections. Though these two steps are sequential, each view position can be processed independently. \subsubsection{Parallel Computer Processing}\index{Parallel processing} Since each view can be processed independently, filtered backprojection is amendable to parallel processing. Indeed, this has been used in commercial scanners to speed reconstruction. This parallelism is exploited both in the \ctsim\ graphical shell and in the \helpref{LAM}{ctsimtextlam} version of \ctsimtext. \ctsim\ can distribute it's workload amongst multiple processors working in parallel. The graphical shell will automatically take advantage of multiple CPU's when running on a \emph{Symmetric Multiprocessing} computer. Dual-CPU computers are commonly available which provide a near doubling in reconstruction speeds. \ctsim, though, has no limits on the number of CPU's that can be used in parallel. The \emph{LAM} version of \ctsimtext\ is designed to work in a cluster of computers. This has been testing with a cluster of 16 computers in a \urlref{Beowulf-class}{http://www.beowulf.org} cluster with excellent results. \subsubsection{Filter projections} The first step in filtered backprojection reconstructions is the filtering of each projection. The projections for a each view have their frequency data multipled by a filter of $|w|$. \ctsim\ permits four different ways to accomplish this filtering. Two of the methods use convolution of the projection data with the inverse Fourier transform of $|w|$. The other two methods perform an Fourier transform of the projection data and multiply that by the $|w|$ filter and then perform an inverse fourier transform. Though multiplying by $|w|$ gives the sharpest reconstructions, in practice, superior results are obtained by reducing the higher frequencies. This is performed by mutiplying the $|w|$ filter by another filter that attenuates the higher frequencies. \ctsim\ has multiple filters for this purpose. \subsubsection{Backprojection of filtered projections} Backprojection is the process of ``smearing'' the filtered projections over the reconstructing image. Various levels of interpolation can be specified. \section{Image Comparison}\label{conceptimagecompare}\index{Image!Comparison} Images can be compared statistically. Three measurements can be calculated by \ctsim. They are taken from the standard measurements used by Herman\cite{HERMAN80}. They are: \begin{itemize}\itemsep=0pt \item[]\textbf{$d$}\quad The normalized root mean squared distance measure. \item[]\textbf{$r$}\quad The normalized mean absolute distance measure. \item[]\textbf{$e$}\quad The worst case distance measure over a \latexonly{$2\times2$}\latexignore{\emph{2 x 2}} pixel area. \end{itemize} These measurements are defined in equations \ref{dequation} through \ref{bigrequation}. In these equations, $p$ denotes the phantom image, $r$ denotes the reconstruction image, and $\bar{p}$ denotes the average pixel value of $p$. Each of the images have a size of $m \times n$. In equation \ref{eequation} $[n/2]$ and $[m/2]$ denote the largest integers less than $n/2$ and $m/2$, respectively. \latexignore{These formulas are shown in the print documentation of \ctsim.} % %Tex2RTF can not handle the any subscripts or superscripts for the inner summation unless % have a space character before the \sum \latexonly{\begin{equation}\label{dequation} d =\sqrt{\frac{\displaystyle \sum_{i=1}^{n}{ \sum_{j=1}^{m}{(p_{i,j} - r_{i,j})^2}}}{\displaystyle \sum_{i=1}^{n}{ \sum_{j=1}^{m}{(p_{i,j} - \bar{p})^2}}}}\end{equation}} \latexonly{\begin{equation}\label{requation}r = \frac{ \displaystyle \sum_{i=1}^{n}{ \sum_{j=1}^{m}{|p_{i,j} - r_{i,j}|}}}{ \displaystyle \sum_{i=1}^{n}{ \sum_{j=1}^{m}{|p_{i,j}|}}}\end{equation}} \latexonly{\begin{equation}\label{eequation}e = \max_{1 \le k \le [n/2] \atop 1 \le l \le [m/2]}(|P_{k,l} - R_{k,l}|)\end{equation}} \latexonly{where} \latexonly{\begin{equation}\label{bigpequation}P_{k,l} = \textstyle \frac{1}{4} (p_{2k,2l} + p_{2k+1,2l} + p_{2k,2l+l} + p_{2k+1,2l+1})\end{equation}} \latexonly{\begin{equation}\label{bigrequation}R_{k,l} = \textstyle \frac{1}{4} (r_{2k,2l} + r_{2k+1,2l} + r_{2k,2l+1} + r_{2k+1,2l+1})\end{equation}} \begin{comment} \end{comment} ctsim-6.0.2/doc/makeidx.sty0000644000175000017500000000053710667176710014620 0ustar kevinkevin% makeidx.sty 20-Jan-87 modified for international usage % % Modified by J.Schrod (TeXsys). % according to the suggestion of H.Partl (TU Wien) in german.sty % to make caption names adaptable to other languages. \@ifundefined{seeterm}{\def\seeterm{see}}{} % <----------- \def\see#1#2{{\em \seeterm\/} #1} \def\printindex{\@input{\jobname.ind}} ctsim-6.0.2/doc/ctsimfig1.eps0000644000175000017500000002201410667176710015026 0ustar kevinkevin%!PS-Adobe-2.0 EPSF-2.0 %%Title: ctsimfig1.eps %%Creator: fig2dev Version 3.2.3 Patchlevel %%CreationDate: Tue Jan 23 11:14:55 2001 %%For: kay@fenrir.cancerboard.ab.ca (Ian Kay) %%BoundingBox: 0 0 547 257 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 257 moveto 0 0 lineto 547 0 lineto 547 257 lineto closepath clip newpath % Fill background color 0 0 moveto 547 0 lineto 547 257 lineto 0 257 lineto closepath 1.00 1.00 1.00 setrgbcolor fill -27.0 275.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin %%Page: 1 1 10 setmiterlimit 0.06299 0.06299 sc % Polyline 15.000 slw n 984 1905 m 984 3165 l gs col0 s gr % Polyline gs clippath 1199 1955 m 1199 1865 l 1085 1865 l 1175 1910 l 1085 1955 l cp eoclip n 960 1910 m 1184 1910 l gs col0 s gr gr % arrowhead 7.500 slw n 1085 1955 m 1175 1910 l 1085 1865 l col0 s % Polyline 15.000 slw gs clippath 1199 3215 m 1199 3125 l 1085 3125 l 1175 3170 l 1085 3215 l cp eoclip n 960 3170 m 1184 3170 l gs col0 s gr gr % arrowhead 7.500 slw n 1085 3215 m 1175 3170 l 1085 3125 l col0 s % Polyline 15.000 slw gs clippath 1199 2630 m 1199 2540 l 1085 2540 l 1175 2585 l 1085 2630 l cp eoclip n 959 2585 m 1184 2585 l gs col0 s gr gr % arrowhead 7.500 slw n 1085 2630 m 1175 2585 l 1085 2540 l col0 s % Polyline 15.000 slw gs clippath 1199 2316 m 1199 2226 l 1085 2226 l 1175 2271 l 1085 2316 l cp eoclip n 960 2271 m 1184 2271 l gs col0 s gr gr % arrowhead 7.500 slw n 1085 2316 m 1175 2271 l 1085 2226 l col0 s % Polyline 15.000 slw gs clippath 1199 2945 m 1199 2855 l 1085 2855 l 1175 2900 l 1085 2945 l cp eoclip n 960 2900 m 1184 2900 l gs col0 s gr gr % arrowhead 7.500 slw n 1085 2945 m 1175 2900 l 1085 2855 l col0 s % Polyline gs clippath 849 1960 m 789 1960 l 789 2112 l 819 1992 l 849 2112 l cp eoclip n 819 3184 m 819 1975 l gs col0 s gr gr % arrowhead n 849 2112 m 819 1992 l 789 2112 l col0 s % Polyline 15.000 slw gs clippath 3209 1794 m 3149 1794 l 3149 1946 l 3179 1826 l 3209 1946 l cp eoclip n 3179 1809 m 3179 3069 l gs col0 s gr gr % arrowhead 7.500 slw n 3209 1946 m 3179 1826 l 3149 1946 l col0 s % Polyline gs clippath 3780 3071 m 3840 3071 l 3840 2919 l 3810 3039 l 3780 2919 l cp 3840 1781 m 3780 1781 l 3780 1933 l 3810 1813 l 3840 1933 l cp eoclip n 3810 1796 m 3810 3056 l gs col0 s gr gr % arrowhead n 3840 1933 m 3810 1813 l 3780 1933 l col0 s % arrowhead n 3780 2919 m 3810 3039 l 3840 2919 l col0 s % Polyline gs clippath 1014 1500 m 1015 1560 l 1167 1559 l 1047 1530 l 1166 1499 l cp eoclip n 1030 1530 m 2155 1529 l gs col0 s gr gr % arrowhead n 1166 1499 m 1047 1530 l 1167 1559 l col0 s % Polyline n 2155 1529 m 2155 1720 l gs col0 s gr % Polyline n 1010 1535 m 1010 1656 l gs col0 s gr /Palatino-Italic ff 300.00 scf sf 755 3184 m gs 1 -1 sc 90.0 rot (source) col0 sh gr /Palatino-Italic ff 300.00 scf sf 3524 3088 m gs 1 -1 sc 90.0 rot (detector) col0 sh gr /Palatino-Italic ff 300.00 scf sf 4096 2770 m gs 1 -1 sc 90.0 rot (fov) col0 sh gr /Palatino-Italic ff 300.00 scf sf 1125 1170 m gs 1 -1 sc (focal length) col0 sh gr /Palatino-Italic ff 300.00 scf sf 1395 1440 m gs 1 -1 sc (\(arbitrary\)) col0 sh gr % Rotated Ellipse gs 2151 2516 tr -90.000 rot n 0 0 90 90 0 360 DrawEllipse 90.000 rot gs col0 s gr gr % Rotated Ellipse gs 2151 2786 tr -90.000 rot n 0 0 90 90 0 360 DrawEllipse 90.000 rot gs col0 s gr gr % Polyline n 1701 2696 m 1881 2966 l 2151 3056 l 2420 2876 l 2601 2607 l 2421 2337 l 2150 2156 l 1881 2246 l 1701 2606 l cp gs col0 s gr % Polyline n 1701 2158 m 1701 3056 l 2599 3056 l 2601 2157 l cp gs col0 s gr % Polyline 15.000 slw n 6286 1372 m 5395 2263 l gs col0 s gr % Polyline gs clippath 6402 1560 m 6466 1496 l 6386 1416 l 6418 1512 l 6322 1480 l cp eoclip n 6265 1359 m 6424 1518 l gs col0 s gr gr % arrowhead 7.500 slw n 6322 1480 m 6418 1512 l 6386 1416 l col0 s % Polyline 15.000 slw gs clippath 5511 2451 m 5575 2387 l 5495 2307 l 5527 2403 l 5431 2371 l cp eoclip n 5374 2250 m 5533 2409 l gs col0 s gr gr % arrowhead 7.500 slw n 5431 2371 m 5527 2403 l 5495 2307 l col0 s % Polyline 15.000 slw gs clippath 5924 2037 m 5988 1973 l 5908 1893 l 5940 1989 l 5844 1957 l cp eoclip n 5787 1836 m 5946 1995 l gs col0 s gr gr % arrowhead 7.500 slw n 5844 1957 m 5940 1989 l 5908 1893 l col0 s % Polyline 15.000 slw gs clippath 6147 1815 m 6211 1751 l 6131 1671 l 6163 1767 l 6067 1735 l cp eoclip n 6010 1614 m 6169 1773 l gs col0 s gr gr % arrowhead 7.500 slw n 6067 1735 m 6163 1767 l 6131 1671 l col0 s % Polyline 15.000 slw gs clippath 5702 2260 m 5766 2196 l 5686 2116 l 5718 2212 l 5622 2180 l cp eoclip n 5565 2059 m 5724 2218 l gs col0 s gr gr % arrowhead 7.500 slw n 5622 2180 m 5718 2212 l 5686 2116 l col0 s % Ellipse n 6840 2610 90 90 0 360 DrawEllipse gs col0 s gr % Ellipse n 6570 2610 90 90 0 360 DrawEllipse gs col0 s gr % Polyline n 6660 2160 m 6390 2340 l 6300 2610 l 6480 2880 l 6750 3060 l 7020 2880 l 7200 2610 l 7110 2340 l 6750 2160 l cp gs col0 s gr % Polyline n 7199 2160 m 6300 2160 l 6300 3059 l 7200 3060 l cp gs col0 s gr % Polyline gs clippath 6151 1315 m 6109 1273 l 6001 1380 l 6108 1317 l 6044 1423 l cp eoclip n 5265 2160 m 6120 1305 l gs col0 s gr gr % arrowhead n 6044 1423 m 6108 1317 l 6001 1380 l col0 s % Polyline 15.000 slw gs clippath 7937 2867 m 7895 2825 l 7787 2932 l 7894 2869 l 7830 2975 l cp eoclip n 7906 2857 m 7015 3748 l gs col0 s gr gr % arrowhead 7.500 slw n 7830 2975 m 7894 2869 l 7787 2932 l col0 s % Polyline gs clippath 7438 4174 m 7480 4216 l 7588 4109 l 7482 4173 l 7545 4066 l cp 8392 3304 m 8350 3262 l 8242 3369 l 8349 3306 l 8285 3412 l cp eoclip n 8361 3294 m 7470 4185 l gs col0 s gr gr % arrowhead n 8285 3412 m 8349 3306 l 8242 3369 l col0 s % arrowhead n 7545 4066 m 7482 4173 l 7588 4109 l col0 s % Polyline n 7380 1935 m 7245 2070 l gs col0 s gr % Polyline n 6570 1125 m 6480 1215 l gs col0 s gr % Polyline gs clippath 6580 1093 m 6538 1135 l 6645 1243 l 6582 1137 l 6688 1200 l cp eoclip n 6570 1125 m 7380 1935 l gs col0 s gr gr % arrowhead n 6688 1200 m 6582 1137 l 6645 1243 l col0 s /Palatino-Italic ff 300.00 scf sf 5220 2115 m gs 1 -1 sc 45.0 rot (source) col0 sh gr /Palatino-Italic ff 300.00 scf sf 7245 4005 m gs 1 -1 sc 45.0 rot (detector) col0 sh gr /Palatino-Italic ff 300.00 scf sf 7875 4185 m gs 1 -1 sc 45.0 rot (fov) col0 sh gr /Palatino-Italic ff 300.00 scf sf 7200 1785 m gs 1 -1 sc (\(arbitrary\)) col0 sh gr /Palatino-Italic ff 300.00 scf sf 7200 1440 m gs 1 -1 sc (focal length) col0 sh gr /Palatino-Italic ff 300.00 scf sf 675 675 m gs 1 -1 sc (A) col0 sh gr /Palatino-Italic ff 300.00 scf sf 5130 675 m gs 1 -1 sc (B) col0 sh gr $F2psEnd rs ctsim-6.0.2/doc/divergent.gif0000644000175000017500000003075010667176710015113 0ustar kevinkevinGIF89aëOÄooo¿¿¿ïïŸßßßÏÏϯ¯¯___???OOO///ÿÿÿÿÿÿ!ù,ëOÿ $Ždižhª®lë¾p,Ïtmßx®ï|ïÿÀ pH,K‘£rÉl:ŸÐ¨tJ­Z¯XQ2Ëíz¿à°xL.›gÛ³zÍn»ß𸼗žÛïø¼~Ïï»ê~‚ƒ„…†‡:€ˆ‹ŒŽbŠ‘”•–—D =#˜O“¢¥¦§L¬­¬5 G  :    ¨J¤ÃÆÇÈ6¬Ÿ5J 8»¡ØÉCÅã)ÕU æîVÑ#Â4šÞFÍ5áJàׄ@¶Kå©rå –¬o <áW“ 8°µÀÄw £D b€É~aÿ|´±oÁ ‹KâÍBøhÙoÏæÍ˜–n =4™æ Ù€ˆ0C*]ÒàÀLìHèr@6 tƒ À‚Ÿ,Öq‚ è5₯>aÕjϧԱh«u]€`­K²ÀØë 3 *²3€X˜G’<ˆ*BlÅlñ2ˆ–€ Œ‘ÀAÛ@ Ê#QÏŸoñ «e²ÏA>Ò-1@r©9¬`])"ã¬}—ý]&¬ò &C°õúÚƒÏÏ¿i44Û²yÀíņހ]DN¦ylZbqT{+Â@¡TB¤z•Ù ÐKËTÇËkD´Ðÿ¬òI, ’Z »Dhf:Dt×4€’Pv„}ú– QðXûÌ4ÍbDxˆ‚AQT»ˆ0Ð[Œgc¼èx@o GûD¥¡ÓLV€ˆÓVz ÇÕ-P` ;û0PF˜%¾°Ã@¡\£Û.EðI<éÀ‰„4¥$” ¼UÕUY°Õ^?u V ÌrV¢‘=p§$–Ö‘1À€¸¤géQE•°Jo*˜•¨a½µ'fZšmœêÆ•¤æ±B¡Û8à•mߨjb$¶À£ÌQ$˜7 ,nÅSÞÍØB–a€jÿSÍ4ðѲ< “-¤’\ 4%L¹7 ÐÀ¡Pç¥`«àÜjÞthŒG5pÐ>ý4åêÔê$È„}Ì+\t%‡dŒW.7ä7Ù×›ºL[ÞÙ!ùÃÕfϹÌ-°Êi6Ai‚Ø6MI.l@›md-UA2i-PÉ…#€œÅ¢5r‘ þµk#ùh”Í,›ãó d‘-Í\a…¸­¤á?ÏB°K(îÕ÷°ÖôBÊ1Àl¢ÐT‰#0S­· 4ÐJdT(ÅÚchS½(Ð+÷š€6jŽ ¨"©-Ò£Œ7/z>b]ÉBÞ Å.šA­ÿÌà†šElð [lH|¼pÕÀˆ¦¶°jëC_Ř&$˜@ïFFŠ/ô˜2<Îy"0T”ÔGšy‘L»6=²cd'Ôã'"Â7CŽÀ‰TJ.å|¤dWþ\‰ìòÞ½BãMÀ¥Q @LåËž úÒQ8êÒHÙáˆÏƘ¼fIÉ%H±­tú7ž ÿªì%ð9 ç¬IXÀRˆÏÚ¡£õOGÊ1uáÖ+2ª¯¨ª£u}-#èS@á´Ôdá'>ñ-å 0Ò” 0@}·½E["S‘ì¡ÏV…ÔWB± ‰L2 =^¸¼48íZbö—ôÖ#éPÂsìZ„yá[S®ÅÃ¥@‹©ˆDáÈÕÏ£!V|îšÒ©{#Œ‡Lä9𸠮ìôL\ä&;ù G„ŒécJLòÉXÎr¢¬å.{ùËDæ2˜ÇLæ2ƒDÌfN³š×l 4³ùÍpŽ3áäLç:ÛYÅwγž÷Œ7óùÏ€´ü,èBúÐ5 4›ëš]D;Z_mÿô½f›¬(B~´¦)%ÚN;§‘æ3¥¿Üi+c…!ò€¤7mgUZ¹*µp<ÓiW¯‚!¹Ñó¨‡L ÁÁÖ mÒ\ÑL³úÎ@bUªìU«À»€ 3ç]Çж)ªŠ ³z21iôØoFGþômp;ÏÖVŠ&Rô͜܂.À™ílx· Ý¿!À¸GJm{ z P@UÊíoàÛ@w_ ÎjÆœà GC–®ðzGüÏóîàÅéàd >|ãšN-û rœ_kÉíÝ’|å&÷pÊ-s;÷HL4¯¹ÄMÙ£oæ\çrÆÈ„“Bã~7Ñÿëð/F„¨nùt@÷\²UßAÔý t¥gýÍÏÈè×…°õ=ÔãÊc¿ó3Tv²ƒD,Xo;œ×þs¹ï|»ÝºïÝàx×ûßéœwˆe‡CáOçHñ>H|y8;GÇ•çäÕàøÌÃ9E/÷|¢MQZŠ¾Òž<=ÔE1€ª„^õNn}‡a¯uL€~§=ŒëáuÝß= z¼ï»,ûᯞ 7>˜#Ó{åÇ`ó]ˆTó_ÙQÿÐÇBñ¯¯åmžû¿G„ôÁŸåH½žü/È~:‹~'³¿ý‰Xóáßä£|Ÿþ0Pô}~ü+%A¹ç) ÿNpÂ'€¦ôDý‡€*@€LÈ€É 8ƒÀXY¶”9à€G°C­7}!ˆ˜ NU‚»" $¨‚&p‚B° è‚§p3Hƒ$ƒ@ o8h" rƒ=¨|€˜„ã ƒFsz [IHØ„€ZP…ïð„T˜ Å-x…`…\øw`ƒä'8XqC^ø…÷f‘„Œ—:A‘VD&†jˆ…r†Ê§oU‘a‡2dtX‡éw‡|è|óv€³<â†\¨ƒ5ÀÔ— v¢‡84SˆÏŽh|¼ár,0‰&R‰–h‡m ÃDv~ž¸fŠQÈÿx˜y3'©HÄŠ­¨™¡ˆD×#ã}èbf‹,Àˆ/ð‡™§‡[(:<7ˆÂ†j`ŒŒWˆ;0‹î€{Íx‰j …•‰xÔ8#Uy¢åtg@Œ,"Œ·‰T÷߈ P„m7D ànÁ( gð+ƒgŠëíˆpäew"'%ÞðŽj`Ž*ÐU‹;X%µ¸+¯ñwê˜XíqX`™Ç‹l'\ Ó×8úHrÌh͈ŒC€tÈÍà‘é ÉÛ`ùwÒ¹$À’-y=ÇF2€[f‰Ü¨‘ðq’¸“W€‘É"KÙ3ùu‰YÁ r- “Hùÿ¹Ô”¤‹Äp…! 7¹€Vy•¹0ninõ˜O©s/Ù E9t40–dÙˆÁp†3@ ª”z`°–%‡‘¾¸(I•6 —s Qé» æ|yq&éa9…I”ÈÄ•'°‰Uiiéo5é–FÙ„9™V”‚¹lj&‘“ ylCéù—Hš:à—"vp©!v¯ùh‡‰šzˆ“üh›6 ”>ÀÈôs]ñ¿ih_É·›F0šs9o­é7r3‘\ðœ€Ö–90›G`:hœ/ð™:p‘xœÿș臛Â9nÄI6/ÖyÁ™ʹp:`C]žÿwö˜ëù–Ù9žÙ¦ –Ÿ¬Ørõé¹ô 8ЛS  r¦ž8@ž´ ™Æ u(ž6Àžg9žv9 š(p# ‘i]a–/ç¡W˜*§yý©•0€j©{û¢º¡. 0š„È™Û)¡=0D›¤¨zÑ™¡SI›/Тv„JŠƒz"jp,4ÝP‘ž¢3°¢'É¡8P¥%ˆ¡t‰L6Ú[JŸIh:zo¨‡Pú =jŸf*™HYíyEj™+ð¦ºeq_ Ÿƒw¥5 ¡B ¥ÆÆŽ-¹£w©›)Š„ªq/¾¹wj*d Ž*¨G)ŒéÁ4:•mªuÿþÙ¢º¤i›<š º§ÕÙ ¦ ¥úª&PW צšZª]’Œú¡êsÊ}77£2à«úÐÚª;p¨útM:¦ÃÉ«¬a«O°¬Ê7¤X†©:`zH­²Y¢G0¬»"¦™š§Èê­Cñ+;®¾pèhÇ­:r®åÊïéìªnvª OZ«?*À@R¬FØ©™ª‡•z—þÚ  ®E0°ï ¨*º­ñš°P°°ã†Lg·’A(r‹‡®ëY±¨JãD› ÛÓy .¬!«‡$;ª*X¬.°¯"–wl ÿÀ ŸÃ²NYp²ú“Û:ë";•­i¯ÿùèJFºК²Å8oáX€R:q× n@»ŸŠ  û€<  ;‘îÊ+û¯Îàµ8{›aû(`­&ºiÙú®´ª¶S*µm{·&`µcד(´¨i·N·¯·°R0³•·*p¬*¯ZZ¸>€¸O'®0°µ<š_»âFo4@¡ëzhòÙ±ô)ªQ;"œ+ž tY9sÛ¸ûf¸Ê ›¿r§Îº”Û;ðš¹k[SÛ³å‰~5{¯{›Ž«§û»"¶™ hÏ‹˜»¨šƒ³;ܧœ +½»« +pvr§+€½D0¼„д-¶4»C°¼n+µËpg«²ÿäZ–(*»ËFtËìšÈ½€KÞ›¼A ¿¼K»¥hš ȸ7€¿@ ²)’ÀO@¶}g ˜O« ß›œáÛýËj–۫狼ƒ›¿úÖÁl;h–—«Åè±& Á(<²û«Â#U¯§×ºnÀ|Â; oÙ¦´TàÁK«fF¬µÇ;Ü,n5 ¬Q+lh Ëøšµ-pÅK¬lÄX J%¿E—fÅ˽%lÅJÌŸ)Ìòjßä­çt_hرÁÀµ'`Æ9ÀÄ 7ÁÔ;T<(°d¶½ ÀÃtìÃ:Å^€mË6R÷Ç{É”‚Д† ¨Ë”ÆŠ\’"ÿ \ p'P,¼_F¿)p³Ã?Lµ]°ÅßÄlwËÉvö¿R!p˜JÇ(ʯ붻üŠ·‚#pÒ¦·(DŽœeÀ )s £ÜˆwLyÌnVá̃™vz¾ª„LojKîKCËɦÊׂnŒ}O6Â&`¿e\Çæ–ÍR€Éª@àË‹¦Ãr ÊÉx©é\ë|Û¼o|Œ|»ºDÖÂx¸9‹Ï2`ÉT ËªlÍ»‹T€ µ\ÊoW° î¬ÉÈZΰª]S\ÈÕ|Ï”œÏ@|Êë‰ÜÜÐʪsal®ƒŒ»º9Ìã黂¥Í-ºÊ6íñÌq•Ç‘ÌÀQjÑ/€ÑÿPÀÏwÐg sNýÉßÔ‚#­Õ[ÔQ  ˬmÞ¼K­y h–TLÑ€)ÕnªÏêÛ»L¯_ÐZÉcìw_¡DÕ¸«lý\ÃÒÌ 84²l>1}¹p=¨rÊ8 ÝlØÿq~:¢ãLÈ}m¬[„í Mn”¡,}ò²P]Ï’Ì××5ý¸¾ÖÏ€Í:9Û0ö¿Ê¡[”èl©3ìÙO€Ò™ìÏe —¨s‹æ@Ï:RÅŒ=Ó.@ÕZJ×ÔW “«pÃfVªY»×‚œÆZÙÙ¯|©œÉíi}2Š)ŠÉ·Ý˽}™-­‘½ÇgÍ,3€[IJ )VfÿqË‹äÜÝN ÚóÜJ@ÖÙÖÌ£]ž6t_ÊaGÑ+pÚ™P°|µÚçðÞ%ÝÛW­n…D\,çÑPaò°"cÖ¬«¶¥] Ú.{—h¬Æù+Øï,x)·–ámÍœ AGx qLˬ­á”ß; Ñ¼|!kªÜÍ^J•:™2M1΀Ý~èÔGsÓšŒˆlÊFÚÝ ®åfý’{¿Á FðîÛÞæƒäY¢ä8°Ðô½à#‚Ò)-å1 “ÿq8¡º†¯Y…‘•úå2ÞÄÔ}¹6ÞஈmƒÞl1pÞí¡-²ŠC. ‰mÏÝêÜ*ËçÿÊàá*=Š‚žÉ„®£iòdë⺭µ1^Œ-úM“>`GÝäfã  k´Æ§üÉ/‡mÍ ©Fžá¦~2¨Ž»Ò ìgðäƒ^ìD “®„¡èâmÛY€²(Ðå¸þ«1p̗̾oÓ6šÙPnCõíœNWFXq†[µ Y3ïm0Âx)ïÍá}>ß“]ÖîêØþ­3н¾žpî ?’êèhp¼®¢ Å6>RŸÍnE†®®Jà^•ˆFøú²e£ q ž¤ÎMð©žÒÄ  å :é\pvô5ï’XûF¶~n¤ÛšènÒÒÙäæ®ðÿ;óó†ûå+„/a #WŸSÜì&ÐÚõín:íví9Oìll:‰úm­aŸðn¢äŽI¥ÍÂ"–ž”gþkÍìï]Ícºh7á0p[˜±-”%ŠŠçbOó1àçi?kkoßù-mu¹&mÇSÚR ¸äòÂ|5½¬½÷‡üëgŸÑ˜>ò7ÿVé9AŽÉþ¾àóÄòLb žöÜÚ”¥ª>û Ûê:¿ù| “‰qk‘¯û¼ö°SdÆG÷ª¹¬œ˜lÖ€®µªåjÿñVPïÚ¡pžµŸu´ò€Acд`ï¦>ürköå™ÿê‹ÐóÿŸÂ4Ç¡©º²­û²Äq4Ìs°¾ó}š†0@(´E€`g (€Ò×2$R©`hýêB 0#Æ0»íþÜ'ˆ à˜5_ðP¢å½ ò­¡Ô) T©h$ º<.~i)L‚d™Iyމ®²¶B¬ 举,̘Ðê%¨ ö²(2éTjx±i–ê:Éžm5Fgk§À®Á챉n Š0 þª¯<‡®T¥±MW `›£šV§ÂÄoàÀn|ÔdÖ%!›B fõCÐiY bQΖŒ¢•R§ÒìÓ¦éÑ©3Ÿ8ÿ2LÉ €<+¤Pê±"CÊL¡qñ$I”€ÕÃxìQ') „FóGÍLÀšN³]BaÐåŸZ:pæÓ+í&Ç3ÞÏ-ÊÀh*yÔ9gKÓ”ë*w)¤îP€ë0âz8X`ĹìTQ„3¼HXéEíÑŒS*¬­”–l:wsrcL-ýÃwªÀHxÀ5¥€ÀX®©Á: }÷ÄZ K½ÕIðII{ÐK;1ÑÇy¹Ë1cÊœá„ËÁmD¹s€¦_+ X,À›èÃîåfÙ|f”ë ð“xæ]={ŒŽjiôäÎY°i€©€ GÿP)ó80×lU 5æÓ »AÂ!¼½ç[šüÃÔIö‘x×sýíÇ”IÎÁ—B!½ˆpO_pÝùÀG|ç/è@ ʳ^}@QSù…|"ªBbMø¦¢•þEéÊ€<À¶B'sÙ‚MFsXaaCä…¼ ! “=C&m1BR2dâ&ú¡Ø}×вåÌóÀpµ×&4 ’Qô¢Xbé¹Td.ÀÙÉ' öð$*ôá™ •}òÙ‹rš#¨JÊÃ\ (Š)V‘8B) Jdx¤G[€DÜ4™ª+zBÇŸ²+—ª00ZT·ÿ¢<èµ}&Tˆß|E‡®F¾à!5â§Y{sU¦˜"–¨’øì Œ>P˜«]Ð@BÊÒÀÑD„Q,£æ®1[ZÕ¬õa~åa»W°˜¬•)þÙâÅ,ÄÁÛ5b\8`€Ë öz3‚2 ).YHZꦋD™±“CI/s£–ºì¼kÙÆu40€=‚©Ý  KËE,¦°4ü›qÅ÷¨ØéófÈ’ºlÇQÍË/èu€†(z²d Àél30‹<ìÍ–ØœieÖñ¼®Ø ½¬¼§¦ÝÕÚ. Ð6 ó3€=P,€Ø6Þq«O?´ÿÆÕÅÄ¥ft²PÅ-…J³ö‘´•g7îÔã.$pà L»p­%îõÞP›¹ŒmýÚ7«»bð®$¾qCמöí*à9œ$@.üÐ#‰@;HŒŸz(Í"4:€Øúw»â~²¸|õÌ]ïbÈHªNn=°÷Þ ( Ôˆ„,—‡$-Igê)œó½xMqûÛ úÇ€<ÕrJ¿ú‡–›˜¯MˆÐùÈP * ï#óʼnÀ veÃ~Ò‹í8èCü¯SœCNŽä;D¡€_‚ rÍ‚ÛÔ<(¨™V\°lÖ`Ñ»¸ŠþÍÆÿÀ”¸¹êÂrÈ” @€N I‚FXG¬ºA‡äaþ¼èG7˜P©y‚£<`È—að¨< ‰ ¸[ቒÀÇS‹à¥Eêý1”©…ÛþPƒ»ÍE`€ žç `À* o´Dûìœ""~™¡ᜣ±=:ïu¢fÑÀ €8íˆ[Lr¤2쌰S Ä$°4Xå, Í»âoÞ¥ÅÅq‘˜âœ‹ !0&qÝâ{üR™ÛÃ`$2†XÀÝ2„:,¹ 8 /¿‰?çèoœÕF9ð_(@wë&ô Ô¨S2Ð5t·ÌÍG ô§©ÿÂ9ж«œÃ`WNð§Ñ+Çl=à¯Xtž ÄZ OüR‹=)OëåÒµàˆ/(@(êÄ7!ÀiϼC"3÷I ö4ªÕã‚Tî±€…2¥Ž9ƒT¥þZdSïÆ±>J5­D{8D€TB•ÌÜØi×$mzzÝ+_ûê׿6°‚,a kØÃ"6±ŠM¬î`20€•ig‘RuW•)s±šÝ,g;ëÙÏ‚6´‰•ïQ‚e5¨V '¼ ü"ìD&XéY ÙÁe \U+oŸ ײˆ»r@\Í¡ÊÐIGsš(2Ÿé¶¤9õ~Ñ9ŠsÙÿÛëäEk('¡pHlQ3´‰RiàkÚTúÅHì(Ý3ä–¤Øo6ÊÙ¥íË) èÛrW\$¨9/Nß§Âe§š0™T]úB8ÜÍ/à›¹bÊ*®hDÑE XÀX#µHbÿ‰EÆ‘]Šâ»Û_·œ@/8ü”°Re&ô–!B„†n’w ç[st~,².Œ¥*Ò`õQ¶Ö8ð€ù ¢`=Сئ4¨Å #áOؘ $'ù†Îyq“(Rü«<“dnú_P Ž#XZÖݵj¬9®ÃãÌâþP×Èm¨H½§­5ÿ@`$„é´ÅŠ:À4QN¯è¼6ÍpÌuR³™S윿Wͺ]tíD:ÙÎ µ*@(ìVêµ#,d Á*³VDó™_ã0[aèT'¨¬©P•,Ã,$8´M7ÁË›Ø'÷);¢>±¢ÍÑÞa¥ÚÅË®‰HQ@æÖ—v›ßfÌŠZÕe8X± CÓqˆ 6SŠÍcïPÉ^7Cdíƒð)r×F´½T'Â4@!^€!C¸iŽ9³Ø¸‹nÙ ùÐÑQ7ÃÙ†“Ëe4˜Î2¥5ˆZ W,”ç Câg%Ù +tÚ¥|å‚ð'[ÿÞËé ¿PqLˆÚy€6:%µvçàø8¨Y`®`If d&u»Îê„«ºè‹.ç-à˜«ä;‚è”W¡Fœ¨ô[åkÇ,µ‡åÌWâ˜Ú¥tt-&½åå4À ʈ‚‰Sü b¸³fÓ@§P,\·Ù¯G ÷¡Š}Ô(Þ ÙÓÌòž–“/.]ŽñD sßDŽJšPDZÇ»àWšÛà™BÝ.^v‰Gý=:ñ/„ç»í1‰l”¤Ž°¬AëØ<^Dn6_(ôäþ<K¯rø²ûËaû’†@ž –;åE>äæ¼/Ò§Ãí=ôs®q¿Ÿ‘7‡üe ßTÝÿC\Ç@ƒLÚŒÌ^¸R-|E¾µVíé¸u[}|¡¡…ö™œÒÕŽ÷¥[ømF9%Õ`"ðÎS(U¬8J¸@š¸Hæ%†„åžQ<&õ_OýŸ• oµ”½Â,$_3@A ØCÔ®Äß žÏštülBœp ¸iàzU¡y ÚÞJ´œÙTؘJ´ÆQ(Ûdá(@Ê N„éÀ`¥˜ÅnyÄ’ÞÎlÓèEئHŠB£™€ù@À\YêïôÁ´ß.B@ŸN  P_§ÀÃÈECÉaaËÙ©™bí½BghG`D”SÈ‚#,\üÈ®xN(ÿ!™ŽFÌ ˆ3€[Zb™ab"°ƒ!Þ’™N:`Ýõ€ ±Ô LÜÓ¥€…­€wmF­ôÖQÄü±@$Îͧ]6Ü"Ùå"¦¤5ìE¸A˜’øÑ¬€V£ÔÏ€Ü>´âyÀáFŒÂ$Ú`%^!.nc¹ìbäXj¤Ÿ#É…Q™8›@œ a@TAºá¶5>ÜÖâ@d#æã ØEU¡LÂ4`+À + ã”GCf×éJ<ÁáèÞ¹äÍ=nQ"¶€‚YÇÿh‚Å c °úå’ȃ°ã!ÌÃbJ6=f$CTd¹å¢Ù-Çu4€BJE»UÿÝ»QeEØFK(LFD!'ÑâàTN 2ÜŽ $â¤×ôãdV9ß$@ JHcQ~%\ LºŸKZd“Ñ0@&€ã)Ý@:‚Oì½C;êßIB¢QÖRÒäXNaYêåG•SÊ ’$DNÊÕ;¥Ó}] çLC¥CdJLXR¿ð%S:)9Í)äS À49ÖÇ <æD !EWN£j¾¹0Áe ÂÐbz‘Ãå$Ñ31”#WzÑVG#ªQ¾‰pd*§+,eþyQ9ShÇîqiž#Pðf®ÌŒ]‚\GžkЧqõ*ðÒ@1'üœÿÀ7x•"xü Dˆ€'nPÁÌ4R‚vnç]§5šåS„g:‹((}Þƒ-CÄgÚ8DJJ¹8fpbM~‚w2‡‡’+<Á¡ì€¡¨€ 5†ÒÊHB¢m¼@]Âw¾Á·‰¥”\h«5„'pÆÔ5y&Ñ¤â…ø& '7¦(†æ¥áY¨¤MŒ´AÜ™´…I ,à•éŦՅv^„©„Ò‹^Ì‘údÅ P'»‚VÌ@'Ü€qnƒ›6æ|B èhDâ§ŽË–îS*©äÓxšB€˜Ú(h¦«8[(eƒê›#¹é›Ö§.di—¾f¢JpAÿÀÈ4V0jœAOÒ@_†9£W´‰‡Té½ ê«Z_Rަõ%A°ÄË=U¥òµ@"ÙMŸ®À ×…ø(¨¢¦déO-êþÐ)A±4Dà©U ‚ ÀÍä¹’È­Nc ¥ß®òꕊ p€ ¦D·ê¥‚¢\jtÂ@èØ96Ê8¹'ž±à†ê@d|Èi÷jr—¤Q ç@ô£j¬À¬D«b&L+•žè¡R{êûŒÞkÄ‚U2q=–¥!Rƒ/$HY'%8è1,,Ãf«+”jáë¸Uj<QÙTWdmÌƒÛ T§^ÁÎÙÈÿÙíÙ«|§ƒ¸drD Gèë½Ü@Òzϳää2¢FH“ NcµòìµvØÏ‚§D©é:¶[¨Ì[>Å$ÍÀ«þd¶m0¬ÕVmÏ ÄýÙÉÕ6#Y\•äœCy]XåÁCZ±+ ¥ô,4ìæ<ì0‰Ú^<Ö‡$”î„NT,îÀ­‰jGXmB ,¸“ÜKyÂÖÀ-Hœ²æ£šþ¨Ô¾í#2ƒÜFCІRrhd‡-ÜE*!á:ÒìÉ¡áÊìæ ‡¤ÎÖn&„mî­šœí²AíàâJ§t.¶Â©¹ÑmkþÑõ;© ô¦D”bÊÞü#n@Ê­O;pÿ¯×ÜR×üÐ÷EùcŒ/ÃIkˆâÚæBúªï¨:JèîÏõ”—¤ÒoM܊Ÿ`X„ßÔ,N–JÔ “TO9 ì]ñígf°# ®z/ç¾îñ®¯‚P(ㄌŒDÄ ük [‚jÂÈÖl–‰ðÿ¾\ÖÖa÷æï €•;(AÛ°Lçcξ‰Û¢ï Ó°“Pû¢*CÜN­ÈvqV¼›;ÝËVÊâØ'2Äâ}p”u]]ÞþX1ô²í êsqw\üj(qËú@XÆÈ¤î3¬ÇêÕP1PÕ*ÀñûÈàuÂd&ÿÀ[ â Wª#Öï§:ÿ gò*á ÛŽ@ë ð)óËi0pv®c“ÎeÅ ;ñì±ä@xr²æ^ÅÎ,-ï€ðÂ[‡*¯r £Ü¶òÃí@l”2ò C{ƒ'+Ó 3j<1Ôýç³À“rùú±6²ñz8§D!27Àò¢„Ô&6¯ O®cò734?E!wä0KÅf¶Ä,?wX\B 7s ©<“¡+#r°“94gØ/üLé8ô@{±}¬dq¢Lèít(hÌóGפg±ô6„3 2çq‘º¯ÜN©';9€\¬L«Èʉy˜%±IsA#Kž8Ÿÿ#$ª- ÌÏ4…×D‰‡:5óÀ»Nç´Ê–#·ÀíLpQõ¬™ò Ôƒ^25YS ¼† ¡ÁväAž~Á£Ã³mu[ BƒD‡5EÂçÞ PëC±”`Û‡™tØHwFI§Q¯^̺MøÐ‚y@`K¶ä½uMŸo‰õ‡Xt&“.„‡ºö[¶l@òœ€µ.Wò¼Úõd/ÃmfL7ôlwFBÞÙm6<ŸìjÛuõŒ ·‘ÞD#y‹“ô.oÃè<µ”Œ0-U>÷ ñKv*#v<t~÷Gµ®DÙt8b¶nÿ˜É>B³W§7$BôÃ1³Ñ¤ÿvEŸ7»Ý7H­·mÁ-ãvSW]ÅQVÐ÷*Øw€›Ž;¬„“7rc£r{+„ƒTHK*ç{oƒ‚Ë·6lwJ<¸†;B{wÊxBŸ†·l£8”ª¸dì÷e[·‚`ïowʼnÏxûŒiÒ…‹¿øÇøGUi÷€qó¤kì¸7ȸø8’k¥!ˆ“·xys7ŒÁ”[ùÇd®x±û99‚wÌÄñP·‰‡9-(³“°øMsy—ù—¿¹TYN`Â$¸ø³7_wK³(óC•ç9U‡7ZÜx-¹ûy9€$zZ±³äX:ÈÕ³uú <)A ú¤ãwÈ.…óÿw'÷Kº¨Sz~ßt™gz®t§³ËUÈE¨³z„Ó4™ º(é½®6˜çzã ¸,6úú¦»„F Y«6x+àú°§øi3zûú£³‚bC´÷Ö£üyH2w'{I˜à0•sû6v©ïº%c{¶W 9vº_‡§r.·BÎõzJú@D;½¿–ל;:ª‹D oG]¦¿õ[?îÇþ9»ÓK‰ë¹ þ( ½Õs±÷Ÿ¿%ý€¾üó¼S˜ÿû·3pÿþñÓ>Á,èʶî ÇòL×öçúÎ÷þÏ+„°e(†£Kጲ"ÒªõŠÍjw‚¨)MˆŠ[—¡q8( ª²û Ëç@ÃØ(-x‰(@@gCHXhxÓµt"•¤€æ&0)„x‰™©Yh Ðg•àIÀ°9…ªºÊŠS€ðXê¤' ×Öš«»›+öyeË´£€§:È›¬ŒÉFdåKV†»\m}­%)ÕU{#€ÐŠŒ]nŽe7òìä©E}/?ÿâ½-ûÂKNÿ°†€oVhý²/ Â…ɺ0 /J0OMÈ6Ž¡Æ(|ºm„Kÿš<ô*‡´±Ôï¤Lzö¸5RâîÉ™<{nyÅ@Z• Š:0À@$*>›*S‹A[:v:½ŠÕG:¡?ÆÌ vWJ¡ÝÉa5¬Úµ1ì±SS¶t/5ãZ¥Íiëúe닪PxÍý‹8ÐV¥³¼ä›82b?î–Œ¹ÐÀÇøÎBxÖ7³hž5w$—ìðèÕY(kiW‚QhÖ´9–¶Q pêÚ¼·ÜÎRÍf÷>plÙI—©F½ÔåG&p=ºv“ÊaXVö|»øÝß?ÏPȈ¨! `-<úù1î2bœ¾þdÒ˜°s|û ¸ÂbUäÿG`‚¨Þ÷•‚°™`#Mˆ!f8 krây†¨ßoU‘ˆbt#¦Hßt'²#m+Æ8_y5 HcŽXͨ#zöÑ€cBÎÄãçCF.©Q‘LŽWá J>I%=NV)ž/ ˜€Â”X~‰Í•`j7Ài¨àå˜j^¶&‡\ðµI§•uÞ‰gžˆ©gŸ~þ韀Jh‚Šh¢Tªh£ŽÒÈ裒Nša¤”^Š)}–fÊi§Èmêi¨¢fꨦžÊV©¨®ÊªOª¶ k¬MÊJk­~½jk{åºdn„+¯4 À€WÂ.)ʯ³;RÔ1cœWÿ m œRíÄëj¶ef¡·0 ÐÜŽâf!Àçæ8@í™»n7¤/zìڵǦ‹o½€­ZúæÚ.½þŠ× ·` \+¿§Xð­ëÛ»s(ʳð^|cÊrL_A%Æ0«¢( r‚¼qÊ-¤;§Ë¬±À2³›Á7³F€(ÿU²F° ð3]B·ó` |RsX= 4tý¥áÀ#ý^u4ËIËP€i4° h=ÓÓ2FG€piXœ¹Ho}±i|MvIÅùÌ[Ð1÷Õ<‘3ÜQL}@¹Y©ç·dzÛæõ¼|`­Ô‚û@@K¾4­‘(Q}*^»xˆÿ±¹L c>9Á pO©k·xO)á¥[á–^Æ@ $7¡³ž ’ÿ8;íq˜H‡ãµŽUHñ¸E–ð˜Ø#9/Šp†ò`9‚ÑS{ï<"öRM0_$h½Zöä´Ê¾üÑ=/IÔRw³°Œ@:ï,ôGüè8Æ~û× wáÎ àX=`ó"@ô¢À kŒôŸX®#‚?ÔïH@ó—¢ò‰¦ƒJv&ñîÀ-x"€J@%~`6ð!o :h^*aMxD"Múƒ¡BrˆÄ"QŠI,¢ +":q‹„Ò"¿Ø'/e‚qŒ†"£¡%Æ3ª±Ji\£ÔÆ7Ê1Gqœ£CxÇ<†ªŽz죄øèÇ@î'„,¤!‰ÈD*r‘Œl¤# ÉHJr’”¬¤%/‰ÉLjr“œì¤'? ÊPŠr”¤,¥)O‰ÊD†;ctsim-6.0.2/doc/equilinear.gif0000644000175000017500000001131410667176710015255 0ustar kevinkevinGIF89aÁÂÕ,@@@€€€ÀÀÀðððààà   ÐÐп¿¿???``` ppp000PPP°°°ïïŸÏÏÏ///___ßßßooo¯¯¯OOOKKKçççÛÛÛóóó···«««cccWWWÃÃÃ{{{“““‡‡‡ÿÿÿÿÿÿ!ù,,ÁÂÿ@–pH,ȤrÉl²‚@@¨ª®Øl  ΰxL.›Ïçƒ!X¨Ü@ä+ ôH p¼ h„…†‡ˆDQƒˆn`‰›œ…* žF ~’¨±²ž  v³I  °¼ÅÆM¶ÂšÇLµ ÂÄÍÓ¼¸ÌÔNÀºÛáœÉß»âcŒ §èîe * ÒïbÀÚöüFŒÎõ+3 €£}ßý#0a¡‚ºÃÇP D4´»x¬ Š9òR$/Ž6šDTà+=h!f§>‰`“Pÿ%{&2à(L!T Êdæ‚¥LÍ€&@ÝQòD ƒ2èV43_ ‰¢é•_ V3홵* ±*ÄÏnp d^'Ù!ËÂVƒybÿ 骘Œ8KéJRÁÂWãŸm;ù·àª¿Ú(kV° žf$,¡;Dôßø=]Ä£‚ÙŠ@9° È¯-ÄLýWÿÌA¤©¯î;å­/P­c#{š Ѐèž@Èx3©Áä¿WO9< ò& qüD]1<*¡8ôÏ X¯>åp@m3¶¦¯ƒ`œˆðµ„·Þë÷Ï÷@W‚D„ãÁf°, Ðíª ›ÿ&86 X€QMˆŸ÷Ö¤€‰@5;„âøñ  }LáØ&pï„¡{œsÆö0¢‚ºÉb*¨Š ( ÂŽMšJÎ} h‰¹ƒYb1€xØÃ à‰à_ )D&Ī`öø†8Ö’9%JÑЀV† |‚T — D„Ô¡XD ž°Ã Nÿ€LÂÀÇäñ Ð@ïÖ—Æ%ÄŠTËÂ^wˆd-aÒ˜¸¾;Jo_“`Ñ ?j@“ÕÓ°FC?êå&0¾Yp¦Z°AáúÇl`u­ä-×wá¾<‡dB€f˜ìNà€ÿ4€·]þc<]%-`«Rz©xó™áŒX ’„$¥ï&€+|² ¸‚Ä©º H`)°BOT¸É"8Å(¡•ÌòÅßM`ŒK¤ .¹NõQ1$;‘0¯&O¨@›RY@“àYVïŸ*@?ûçNÔzÈÕºšE#$8 vð* àY ÑSÿ°@ÿÊ©Qvô£þ|g*"$ìgf6$CÈ .K- žõ˜YS® £P_¸"¢:R _*4t“9*AQUß®@I§"€¬ê³À©xªÙ¯åá‚AæTpªØÒ)»â’瘒ÐÖD ¥†¥IÀº>x”oÁê"Ë·r&@} ð¯ZTXYÅ⪇8æ=ꪾ³ª`£CAFP9Õ€µdÃÀœé;v.„–?ȈŠ>dWÒjc1+M²}À[ø@ߎ›Ü½¥3˜=Êæ:ÛÙCLÔ'È„üŠËŒ²s#ØRÐ7 ˆ{›ÿÀ%˺: 4c“:eu ñ=1àð­G0Àe‰kQ±‘@¼%èÛ·`çJO}DªµFÀ_ˆUÉðR48€½««À¾»ñVA¹{ó0@¼ÂK*ÕwÐ |ƒõ/0˜ìiDwª÷íÅ%[DŒÚ§ò˜oÌTfõ*PÌéæˆ„ÀŒÃ0_µxõ ²õLÌ·{¶c³²xEÀ7ÙÖØzXÓÕJèPÌPK^BµI¬ `À°êÆ Ý*‹XÎ+0Áû6F<÷MbÌŠÔŸv¨‚Ïk‚Ô®£Ø¯ÆQðÀ—­‡ã¼ÚÙÃx6/¦ûÖÝYÂsÛÿæC#4y †[‚hwj‘ïTÊ,¶€LÕÇ´MË[À3®«àg£]A}qô¨çã€(y`›¨o‘€kØ<€• xõmvñÂZzȥܮÀe‹Ø”cÚ‰W—¾cÑ)ú úpT¸*á'/¡3HS?À¤³«a@[ßQÀÓ}ÁÉ&pÛzh8î¯ê`(• {,_Hôfë7ì±~D,rÅ;LxÍI wUÇL…MÄ!àÊ)×i)ûnŽÈÃ]é˗ƶ˜ ªÎ´Òð=²6*X_9ÇM6 øÏâ%ë[=Ùæhæ7D‘Qí°Bj áÙ,HŠâqÿäªÝËÙï”IK9×òºoá͵ê~m½¦ý¿r]Ï¿† ¶ÆGˆöÌì ,ˆ´pùïØN¹ H9ß _…Ä«î’#§œyÝiti®E šéÆA b€É+§á:Wð@·žúÕSnèÖ+w”= Kˆ"¸BÚ@‰jÑ—Vb׫ï`_½^Î>»…()^JÁ9?ƒ:ðûà _uŽíµsØÚËb XUvC‡JHA ;Ú‚X&Þó{AÞ "ºêÎjýëS.£ïªÃ¨àw;ªáJAnT~îÇ[`e„qÀÈEÿ:ôg¾ƒÖÃ"µ~{gy*s Ìã @=ˆ€q—„€q‚p‚×§Õ³‚­4 ¦³2|ñç}p§hò·t àDPD)x÷GW€q ‚?C6¶%·' 0V{Cu÷op~TP Ø4[ð,RP?_0'%X}•DI“‚P¸2€q>Ã40PtpCƒƒàS€ÔÐ%{Aqƒ8%xðæ'͇ëR° ðD|(6XI“86'Øxt:+ØGNxq|ƒ €Ç%•¡@)R1Ÿçç/èGzÔG¢THx´†gw´:cT„ÿCs4I™Åó´.±!qMà{bŒ „¨}MêÔG@óD‘‡c¼#6ØV•ƒ‹Ã7‚ÔPŒEð¸W!‚ç;ctO$‡}Ô‚ÒÓGLH 08Wy˘m$§T BÆ@Ž;ÕCÈP·vpÙ÷;Hˆ 0Št(8ƒP4VI6c…B¡ÃqÔæ˜f©t?„cú‡Wýƒ‡JEK¿FšLÈGÒèQ ùD+€7ÿV²à}™† rË(+à‹EÉtÖs9¨•NÎT=VN<ä’“ 0“3ÆWÚ "™.´õ7À‡°a{ct€^ÿÔ7œ44'P$ xE“«ãe`P7 wé%.±ƒLfQÐ3“•ÞÖ\êSpUÐOtæ;Pj}—K€Ús`}`”DÓr·ާ>Œ÷abSi6 lŠÂHJ€ïC“ækUø‹d96# ný)puI—(6&jïZ”¹¤RàL0kª3FÔ‡dóo¦§c#Ç UQ÷á'ŽIÞ¨Þh9æœcSN£÷—Æ]Èh3>¹pT@”CcKãDeâI4¦ÅNp™+PËø¦ù`wbpa_£œ«“Ny}åôEÃÿ ºWc˜\…SœïÆI£éuIýf¦y VܕÒÏ22¬¸’æ¡'8FZ40=Ðoбb°…hPˆL ×vQL“=Ôi`cšÈ] À§fL8× »ÂHñùš{3V§…ÕœCv[=jŽÉ ÌRyGHJ9ŽNׇQ ª¦ªÑ!á[ä³!KZILó¦þƒcyúi·%XA5³àPA¤uI5JA8¦˜YYÂS9¥²’#Ù›Ïy‹Ú?ª}ÿ³» ¨1¦£C¤Ä§×£©XZ9ZI’ÊCu ’i ॥N0Ê>ÿåTGëct#Å{üÀRÍ šÕ‚§˜J6•Q¸ú;”Q!úršXI ÓÚ µš&8¥>Ыð¨›ä­ÉZw¯ x¹% W¬{9°©¿Ó-h`cp9ô8A“÷Z³) GÈ·º—£h@:ªw{ [sNO‹¸ö 0¡?àŸâ‰8vŽŠÛ!(‘Q¨#¢8ÖPe¥—+¸ 3Còê²”ƒ7ºHu[UBá +® ÐãºIªÆZ¿Òj»\¤ ÐÑ´Q8v4o Y¢P²óžHQ ;Ò€|”GŽ„oĶÉÛI±žk H o$%$£¼àë‘ëÛ©Ò¸è@±–Ë kË+Bj7º±¸²Uêlÿ’½qÀþšÀ[¹ëv¼ ³nÁia¨Ô AþÒ/ia©ÇеL!ûÚ"l $üD±¶Ái§Å ÂQ$¯±®³Ãi‘wŠ‘­±¦i!” Á<ü)âá¿!Äœ@Änóû!ðÛ$KlDQÅñ¯‰OֱŚA±G±ÚÀÀÅ]œ¿„°½§‘ƧáY¼&ûkp|L¿Þ;Q« lgLbLy ;ç*!DáÄZcÃöeÁ‚e/œ‡"¼ñs—ÁÈéÈ!fk“¬8 ÀÐÂ+Aª(µœD1ÇH¼šH0Ê2ˆ«ÌP xh"éCpÅ´a¬gš¸º<lL TœºÌ©ÉËqÌËRŒÌЦl^ìYμ?¡ºcœ3aŠÕì%òÀÁyCøÔÍÈ4,‡±Çäìæ<Æ¡¡ë¼ ѵ<ïÍÝŒÆ+Á“jLÎ ¹Lµ ÐõÏCð MsJ¯›HÇ‹Ð7‘H®pÐ…Pc¼ Ѩ` .! ÇV¬;“8­ÑŰ£ÐAø¼j€$MÃÉ$í¯ãÅfofx°ÏöèûÒQ¶÷AŽPhè~R €Œp`)ÍÓÛp€ÃBÔçGÝA;ctsim-6.0.2/doc/ctsimfig2.fig0000644000175000017500000000672110667176710015014 0ustar kevinkevin#FIG 3.2 Portrait Center Metric Letter 74.50 Single -2 1200 2 6 450 450 5850 5625 5 1 0 1 0 7 45 0 -1 0.000 0 0 1 0 3303.409 3467.045 1350 1800 2250 1125 3375 900 1 1 1.00 60.00 120.00 5 1 0 1 0 7 45 0 -1 0.000 0 0 1 0 3202.500 3337.500 4500 4950 3375 5400 2250 5175 1 1 1.00 60.00 120.00 2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 30.00 60.00 900 3150 5400 1575 2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 30.00 60.00 900 3150 5400 1800 2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 30.00 60.00 900 3150 5400 2025 2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 30.00 60.00 900 3150 5400 2250 2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 30.00 60.00 900 3150 5400 2475 2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 30.00 60.00 900 3150 5400 2700 2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 30.00 60.00 900 3150 5400 2925 2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 30.00 60.00 900 3150 5400 3150 2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 30.00 60.00 900 3150 5400 3375 2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 30.00 60.00 900 3150 5400 3600 2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 30.00 60.00 900 3150 5400 3825 2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 30.00 60.00 900 3150 5400 4050 2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 30.00 60.00 900 3150 5400 4275 2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 30.00 60.00 900 3150 5400 4500 2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 30.00 60.00 900 3150 5400 4725 2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 0 0 2 5400 1575 5400 4725 4 0 0 45 0 29 20 0.0000 4 285 3030 450 675 Equilinear Geometry \001 4 0 0 45 0 29 20 1.5708 4 225 1320 5850 3825 Detectors\001 4 0 0 45 0 29 20 1.5708 4 225 1050 675 3600 Source \001 -6 6 6555 450 11955 5408 5 1 0 1 0 7 45 0 -1 0.000 0 0 1 0 9307.500 3337.500 10605 4950 9480 5400 8355 5175 1 1 1.00 60.00 120.00 5 1 0 1 0 7 45 0 -1 0.000 0 0 0 0 9291.818 3150.000 11010 1755 11505 3150 11010 4545 5 1 0 1 0 7 45 0 -1 0.000 0 0 1 0 9260.625 3134.531 7455 1800 8355 1080 9480 900 1 1 1.00 60.00 120.00 2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 30.00 60.00 7005 3150 11505 2925 2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 30.00 60.00 7005 3150 11505 3150 2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 30.00 60.00 7005 3150 11505 3375 2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 30.00 60.00 7005 3150 11010 1755 2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 30.00 60.00 7005 3155 11135 1915 2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 30.00 60.00 7010 3160 11235 2095 2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 30.00 60.00 7010 3160 11325 2285 2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 30.00 60.00 7010 3160 11400 2495 2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 30.00 60.00 7000 3160 11450 2700 2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 30.00 60.00 7010 3155 11450 3595 2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 30.00 60.00 7005 3145 11395 3805 2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 30.00 60.00 7005 3155 11325 4010 2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 30.00 60.00 7010 3145 11235 4205 2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 30.00 60.00 7005 3150 11125 4380 2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 30.00 60.00 7005 3160 11010 4550 4 0 0 45 0 29 20 1.5708 4 225 1320 11955 3825 Detectors\001 4 0 0 45 0 29 20 1.5708 4 225 1050 6780 3600 Source \001 4 0 0 45 0 29 20 0.0000 4 285 3345 6555 675 Equiangular Geometry \001 -6 ctsim-6.0.2/doc/logo.eps0000644000175000017500000104632210667176710014111 0ustar kevinkevin%!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Photoshop Version 6.0 %%Title: logo-huge.eps %%CreationDate: Mon Feb 19 2001 14:02:03 %%BoundingBox: 0 0 180 180 %%HiResBoundingBox: 0 0 180 180 %%SuppressDotGainCompensation %%EndComments %%BeginProlog %%EndProlog %%BeginSetup %%EndSetup %ImageData: 180 180 8 3 1 180 2 "beginimage" %BeginPhotoshop: 7098 % 3842494D03ED0A5265736F6C7574696F6E000000001000480000000100010048 % 0000000100013842494D040D18465820476C6F62616C204C69676874696E6720 % 416E676C650000000004000000783842494D041912465820476C6F62616C2041 % 6C74697475646500000000040000001E3842494D03F30B5072696E7420466C61 % 677300000009000000000000000001003842494D040A0E436F70797269676874 % 20466C6167000000000100003842494D2710144A6170616E657365205072696E % 7420466C616773000000000A000100000000000000023842494D03F517436F6C % 6F722048616C66746F6E652053657474696E677300000048002F66660001006C % 66660006000000000001002F6666000100A1999A000600000000000100320000 % 0001005A00000006000000000001003500000001002D00000006000000000001 % 3842494D03F817436F6C6F72205472616E736665722053657474696E67730000 % 00700000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03E800000000 % FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03E800000000FFFFFFFF % FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03E800000000FFFFFFFFFFFFFFFF % FFFFFFFFFFFFFFFFFFFFFFFFFFFF03E800003842494D04080647756964657300 % 00000010000000010000024000000240000000003842494D041E0D55524C206F % 766572726964657300000004000000003842494D041A06536C69636573000000 % 0061000000060000000000000000000000B4000000B400000000000000010000 % 0000000000000000000000000000000000010000000000000000000000B40000 % 00B4000000000000000000000000000000000000000000000000000000000000 % 000000003842494D04111149434320556E74616767656420466C616700000001 % 01003842494D0414174C617965722049442047656E657261746F722042617365 % 00000004000000013842494D040C154E65772057696E646F7773205468756D62 % 6E61696C00000ED0000000010000007000000070000001500000930000000EB4 % 00180001FFD8FFE000104A46494600010201004800480000FFEE000E41646F62 % 6500648000000001FFDB0084000C08080809080C09090C110B0A0B11150F0C0C % 0F1518131315131318110C0C0C0C0C0C110C0C0C0C0C0C0C0C0C0C0C0C0C0C0C % 0C0C0C0C0C0C0C0C0C0C0C0C0C010D0B0B0D0E0D100E0E10140E0E0E14140E0E % 0E0E14110C0C0C0C0C11110C0C0C0C0C0C110C0C0C0C0C0C0C0C0C0C0C0C0C0C % 0C0C0C0C0C0C0C0C0C0C0C0C0C0CFFC000110800700070030122000211010311 % 01FFDD00040007FFC4013F000001050101010101010000000000000003000102 % 0405060708090A0B010001050101010101010000000000000001000203040506 % 0708090A0B1000010401030204020507060805030C3301000211030421123105 % 4151611322718132061491A1B14223241552C16233347282D14307259253F0E1 % F163733516A2B283264493546445C2A3743617D255E265F2B384C3D375E3F346 % 2794A485B495C4D4E4F4A5B5C5D5E5F55666768696A6B6C6D6E6F63747576777 % 8797A7B7C7D7E7F7110002020102040403040506070706053501000211032131 % 12044151617122130532819114A1B14223C152D1F0332462E172829243531563 % 7334F1250616A2B283072635C2D2449354A317644555367465E2F2B384C3D375 % E3F34694A485B495C4D4E4F4A5B5C5D5E5F55666768696A6B6C6D6E6F6273747 % 5767778797A7B7C7FFDA000C03010002110311003F00F554924925290AFC9A31 % C036BB69718634025CE3FBB5D6CDCFB3FB0D43BAEB5EF3462C7A823D4B1DAB6B % 075E3FC25AEFF45FF5CB3FC17AB2C7C4AA871B35B2E7FD3B9F05E47EEEE86ED6 % 7FC157FA24948FD4EA17FF00355B7159FBD77BDFFF006CD4EDADFEDDDFF5A4E3 % 0776B7645D69FEBFA63EEC6F43FE92B4924A6B0E9B81DE96BFFAFEFF00FCF9B9 % 23D3703B50C67F506CFF00CF7B5594925357EC01BAD37DD51FEB9B07F9B93EB3 % 7FCD4DBFA851FCE31B955FEF55ECB07FD6AC77A6FF00FB7ABFF8A56D2494871F % 2A8C807D277B99F4D8E05AF693FE92B7ED7B3FB48C83918955E5AE74B2D67F37 % 730C3DB3FBAEFDDFF837FE8DE8755F6D56368CB82E76955C346BFF0092E6FF00 % 83BBF91FE13E9D7FE8AA4A6D24924929FFD0F5554F35F75A4E162DAEA2F7B773 % B21A1AE353274786DADB2A759639BB2AF519FE92CFF05B158C8BDB8F4BEE7024 % 304ED1C93F9AC6FF002DEEF6B1430E87555975B06FB4FA973871B8FE6B7F915B % 436A624A434DE2860ADAC01A27404CC932E738BB76E7B9DF4DC8CDCBA8F32D40 % C96EDB4F83B51F3425C64FE31F11E57364C32C832FB5230FD6C41BE13BF14782 % 7EAFEF363DB84803557D9D06DB5BB8705359882FEA0CA9E6AA8BADB844D556A4 % 4FFA4E2BABFEBCF62B983FE3348E99797BEF2C52AFF993FF00D58B4E1EC5D949 % 64B73BAA9E29A9A3B7A961247F66BAFF00F46A237A8750681BF1EB7C72596104 % FC18FABFF46AD2C3F1DE47269299C47B64FF00BEC7EE4161C521E2E924A955D5 % F11EF1559BB1EE768DAEE1B67FA8F6EEA6CFFADD8ADB5CD77D120FC15FC7CCE0 % C95EDE584EFA465191FB169046E19285B557756EAEC6EE63B91FC47EEB9AA692 % 990D6A2D7D76FD92F76E7C6EA6C3F9EC1F4B77FC357FE13FEDCFF83AACA065D0 % EBAAFD19DB75677D2F3D9E07B67F90E9F4EDFF008252C6BDB91432D00B770F73 % 4F2D70F6BEB77F2AB7FB1C929FFFD1F4ABFF004D994E3FE6543D7B7CC83B71D8 % EFFAE6FBBFF41D5B5530FDF7E5DDE360ADA7F935B5AD8FFB75D72B6929AF98C9 % 687F8183F02AA2D1B1BBD8E6F88591996BEAA0FA7FCF3C8AEA9FDF77B5A63F75 % 9FCE3FF90B8FFF008C7CB70F370CB11A7311FF00C731FA25FF0033DB6C613E9A % ECC1EF7E4BDD4D4E2CA99EDBAD6FD227BD353BF37FE12DFCCFA15FE97F993555 % 554D619534318DEC3409534B28A9B533E8B0409E4FF29DFCA77E72A59C6CCBCA % 674EA9C58C0D1765B84CFA64EDAAA6B87D1F5DEC7FFD6EB58C0711E106A03527 % C07E91645FF6A8B9C5B8553B243496B9E0ED6C8FCDDD0EFF00A499DD5BD023ED % B4BB1DA4801FF49B27F3776D6FFE07BD3FDA7D53563F4AB292C82EB2E07D46B1 % 83DBB5ADADC37DD63FF79FFE92CFF83B2743F23D77E1E66CB439BBEAB1A36EE6 % 821B636CA897ED7D6E7B3DCDF63FD4FCC4F3180DE1E3C2647DDE1FDEFDC4365E % CAAFACB1ED6D95BC6A0C1047280C7598B636BB1C5F43CEDAAC7125CD77E6D56B % CFD3DFFE0AD77FC5D9FA4FA60C32EC2CD774F7BB7536836E19324800FE9A82E7 % 13BBD3DEC757FC857EDA99756EAAC1B98F05AE1E45308E13577097A81FFBA1FD % 64A56DD6B7871FCA88DCBB072015470AC7BE9D9699B6926BB0F896F0FF00FAEB % 365BFDB4753E3E7F9CC06A19E62BA717143FC49FA506313B80DB6E630FD2691F % 0D5031EFA6BEA366335C3F5961C8AD9C1961655931FC9FD263BFFE32D7A1AA59 % C7D1CCE9B991A5592DA9E7F9190D7E206FFEC4DB8CEFEC2D8F867C779AC9CCE2 % C39CC270CB2E0E2E1E09F14BE4F97861F3FF00518E78A20123A3FFD2F4BE9DAE % 3177EFDB7387C1D6D8E6FF00D156955E9DFD18B470CB6E68F836DB1ADFFA2AD2 % 4A52C7CF61FDA58CCEC3D4BBEE6FA5FF00A3D6C2CDEA8DDB9587778B9F51FED3 % 7D51FF009E1657C7797F779394C0F560BC83FBBC2633FF00BF5F88D4BCD658E2 % 6EA3AD5C2773DCFA9B1CEDAAA6D7B5BFF5DF596C2CEE9915E5F52C63CB7205A1 % A7F72EAEB7EEFEAFAEDC867F6171988D4667A8113FE0F1C7FF00416C945D403F % 0ADABABE155EAD61829CAA2B003ACA891F667D731BACC4B1DECAFF00D06464FF % 0084F4EA55EC7E6E7FAD9D607E0D7898EE1552D70179B9ED6DEEFB439BED636B % D98FE8E3EEFD26FF00D6BFD0A2E559553D372BA5E4B8D6EF45F56338B86EB6B7 % 37655E84FF00397337B31DECFA7EAECFF4F529D583788C12D77D99B77AD7643C % B5C6D6822CA6A6FE77D315B2DDF5ECF429F419F98A789118826B88122390EE70 % FF00D194BD5C084DD53730E0E47E755935B5DF0BA715C3FCEB98B4163757CB7D % 9D4FA774BAC02DBAE16DCFEE0521D975ED8FE5D0D6DBBBFD2D3FE956CA832448 % C78AF7909487FB3E2F4FFCFF007123AB5AAF6E7E437F7D95D9F3FD2567FF003D % B55955A9F76764BBB35B5D73E603EDFF00D1CD565327B8F28FFD152951EB5FF2 % 73DDDD8FAAC6FF005996D7633FE9B55E547AD98E9B60824BDF531A06A4B9F6D7 % 5B07F9EE537257F7AE5EBFCEE3FF00A7144BE53E4FFFD3F4AC4F664E5D3C7BDB % 6B7FAB635AD9FF00B76AB95B55327F4395464FE6B8FA16FC1E47A2EFECDFFA2F % FAFAB69294ABE7E3BB2711F530816E8EA89E058C3BEA27F93BDBEF56124D9444 % A328CB58C8189F2929C8C7B9B7D2DB5A0B7772D3CB5C3DAF63BF94C7FB151EA0 % DB3132ABEAB4B0D8D6B7D1CDAD8097BA99DF5DCC6B7F9C7E1D8FB1FE9FFA0BB2 % 7D3FD37A75ABB998F6E3E53EFC76EE0F836D3A0DDA7D3AC9DAD6DDF99EFF00E7 % 13D3914DED26A7076D30E1C39A7F75EC77BD8EFEBAF3CCB8E5CBE69C08B1094B % 1CE3FF003784FF00DC49B60D808722DBADC5AEFE9CCA32CBB6BEA36585B59691 % A5ACBAAAB27C7F358A74DD7B713D6EA0DAB1EC6073AE0CB0BEB6B5A4FBBD7B6B % C7F6FA7EF7EEA98AB9E8F55763ACC2BEDC12F25CF6525A6B2E71DCF7FA17B2EA % 5AF7BBE9BEB657BD31E8F5DC41CFBEDCE6B608AAED82A907734BA8A2BA6AB76F % FC37AA9B58AAB8B4BBDA5EF7F77FCCAB56BF4AC7765F52C8EB5608AAC1E974F6 % B9A5AEF488AFD7C87CBBFED5D9457E8FB19FAB554FFA55AB75CCA6A75AFF00A2 % D130393E0D6FEF39DF4589AEBE9A1BBAD7068261A3924FEEB1A3DCF7FF002188 % 55D76DF636FC86EC6B35A6930483FE96D896FA9FB8DFF07FF9EC4E5C678A5A42 % 204623FAB0DA11FF00BA4B2C3A9F5503D4FE76C26CB63F79C7739BFD8FE6DA8E % 924A326C927AA94A966B7D7CEE9B853FCE640BEC03F73181C90EFEAFDA9988CF % FAE2BAABF48032FAAE5E70F7558CD18541991BC1F5B3DCDFEDFD9B1DDFF0B896 % 2D3F8172E7373F8CD7A70FEBA5FE07F37FF8EF02CCA6A27C747FFFD4F51BE965 % F4BE9B35658D2D7473AF821E1DCF7B5D55DFD2283B2DED3FB97347EE5CDF7FFE % 05FE0D5855F229B37B7231E3D760883A07B3FD13FF00EAAB7FF837FF0023D5DE % 94D8490A8BEBBEBDEC91076BDAED1CD70FA4C7B7F79152535B319A35FF0022B3 % EEC4C7B9C1EF6C5834163496BC0F0F519B5FB7F92B5AD66FADCDEF1A7C567AE3 % 7FE316038B9C1963A0CF1E2B1FBF0F44FF00EE1B188DC6BB35BECD96DFA194E3 % E56318E1FF00818A5C97D9F2DDF4F29CDFF8B631BFF9F45CACA4B1B8CF87F8B1 % 64434E1E3D2FF51ADDD69106D792F7C787A8FDCEDBFC84649240927526D4A492 % 41CACAA312875F7BB6B1B00000B9CE738ECAEBAEB64BEDB6D79F4EAAABFD2596 % 7B18946264446209913400DC92A43D472EDA595E3E206BB3F2DDE96231D25BBA % 373EFB76FF00DA7C5AF75F77FDB35FE9EEA56B74DC0A7A6E0D3854173994B60B % DE65EF713BEDBAD769BAEBED73EEB9FF00E95EA9746E9D92DB2CEA7D45A1B9B9 % 036574C877D9E89DCDC66B9BB99EB58E1EB66D95FF003976CABD4B68C5C65ACB % B9F83FC3BEE7CBFABF9ECB52CBFD5FDCC5FE07FD36B649F11F01B3FFD5F55492 % 492535EFC6797FDA319C2BBE20CFD0781F9970FF00A8B1BEFAFF00F024D4E6D6 % EB0517034641E2A7C7BA3BD2FF00A3737FA9FF005D656ACA85D4D37D66BB98DB % 18796B8023F1494CD67DECD96B876E47CD17ECB9540FD56FDCCFF457CBC7C197 % 4FACDFFAEFDA154EA197954B5B65983759076BCE3EDB801FBDB37577BBFB342C % 8F8EF273E679507144CF2E290946311739465E89C63FF4FF00C064C52A96BB16 % 692A03AD61EB35E5020C10EC3CA07EE763A7FDB388746D596E3E0DC3C927F0C7 % 5C97DC39CFFC4D9BFF000AC9FF007ACFC51EE3ED6F24A8B72BAB5F1F64E95680 % E3A5996FAE8AE3F94D6BB2731BFF00B0688CE89D532F5EA79DE8D462717026B9 % 1FB96E73FF005A77F5F13F67D8AEF2FF0001E7F29F540618FEF653C3FF008D8F % D67FCC5A72C475BF24795D5595DE70B0EB7677518918B4C7B644B5F9773BF458 % 74BBF7EFFE73FED3D77D9FA356BA7744B59943A9754B1B919CD04515B27D0C60 % E1B5EDC56BBDD65CF6FB2DCDB7F4D67F82662D167D9D5FC2C0C2E9F40C7C2A59 % 8F4833B18225C7E93DFF00BF63FF003EC7FE91EAC2E97E1FF08E5F93F50FD6E6 % AD72CFA7FB287F93FF00A6C33C865E03B2924925A4B1FFD93842494D04211A56 % 657273696F6E20636F6D7061746962696C69747920696E666F00000000550000 % 0001010000000F00410064006F00620065002000500068006F0074006F007300 % 68006F00700000001300410064006F00620065002000500068006F0074006F00 % 730068006F007000200036002E003000000001003842494D0FA016506C75672D % 696E207265736F7572636520626C6F636B00000004826D6F7074000000030000 % 0001000000000000000700000000010000000000000000000000000000800000 % 000000000000000000000000000000000000000000000000000100000000FFFF % FFFF0000000004FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FF % FFFFFF0000000000000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF % 000000FF000000FF000000000000000000000000000000003842494D0FA11650 % 6C75672D696E207265736F7572636520626C6F636B00000004A46D7365740000 % 000000000010000000010000000000046E756C6C000000030000001648544D4C % 4261636B67726F756E6453657474696E67734F626A6300000001000000000004 % 6E756C6C00000006000000124261636B67726F756E64436F6C6F725265646C6F % 6E67000000FF000000144261636B67726F756E64436F6C6F72477265656E6C6F % 6E67000000FF000000134261636B67726F756E64436F6C6F72426C75656C6F6E % 67000000FF000000134261636B67726F756E64496D6167655061746854455854 % 00000001000000000014557365496D61676541734261636B67726F756E64626F % 6F6C00000000144261636B67726F756E64436F6C6F7253746174656C6F6E6700 % 0000010000000756657273696F6E6C6F6E67000000000000000C48544D4C5365 % 7474696E67734F626A63000000010000000000046E756C6C0000001000000007 % 546167436173656C6F6E67000000000000001246696C65536176696E67536574 % 74696E67734F626A63000000010000000000046E756C6C000000080000001049 % 6E636C756465436F70797269676874626F6F6C0100000017536C69636546696C % 654E616D65436F6D706F6E656E7473566C4C73000000066C6F6E67000000006C % 6F6E67000000136C6F6E67000000096C6F6E67000000186C6F6E67000000186C % 6F6E670000001800000018536176696E6746696C654E616D65436F6D706F6E65 % 6E7473566C4C73000000096C6F6E67000000016C6F6E67000000146C6F6E6700 % 0000026C6F6E67000000136C6F6E67000000066C6F6E67000000186C6F6E6700 % 0000186C6F6E67000000186C6F6E6700000016000000114E616D65436F6D7061 % 746962696C6974794F626A63000000010000000000046E756C6C000000030000 % 00114E616D65436F6D70617457696E646F7773626F6F6C010000000D4E616D65 % 436F6D7061744D6163626F6F6C010000000E4E616D65436F6D706174554E4958 % 626F6F6C0100000012496D616765537562666F6C6465724E616D655445585400 % 0000070069006D00610067006500730000000000194475706C69636174654669 % 6C654E616D654265686176696F726C6F6E67000000010000000E436F70794261 % 636B67726F756E64626F6F6C0100000011557365496D616765537562666F6C64 % 6572626F6F6C0100000010496D6167654D61704C6F636174696F6E6C6F6E6700 % 0000020000000D544457696474684865696768746C6F6E67000000010000000C % 496D6167654D6170547970656C6F6E670000000000000010476F4C697665436F % 6D70617469626C65626F6F6C000000001153706163657273456D70747943656C % 6C736C6F6E67000000000000000F496E636C756465436F6D6D656E7473626F6F % 6C010000001153706163657273486F72697A6F6E74616C6C6F6E670000000100 % 00000C5374796C6573466F726D61746C6F6E67000000000000001251756F7465 % 416C6C41747472696275746573626F6F6C000000000F53706163657273566572 % 746963616C6C6F6E670000000100000006557365435353626F6F6C000000000D % 417474726962757465436173656C6F6E67000000000000000B4C696E65456E64 % 696E67736C6F6E670000000100000006496E64656E746C6F6E67FFFFFFFF3842 % 494D03FD0845505320496E666F00000000070000000000000100 %EndPhotoshop gsave % EPS gsave /hascolor /deviceinfo where {pop deviceinfo /Colors known {deviceinfo /Colors get exec 1 gt} {false} ifelse} {/statusdict where {pop statusdict /processcolors known {statusdict /processcolors get exec 1 gt} {false} ifelse} {false} ifelse} ifelse def 40 dict begin /_image systemdict /image get def /_setgray systemdict /setgray get def /_currentgray systemdict /currentgray get def /_settransfer systemdict /settransfer get def /_currenttransfer systemdict /currenttransfer get def /blank 0 _currenttransfer exec 1 _currenttransfer exec eq def /negative blank {0 _currenttransfer exec 0.5 lt} {0 _currenttransfer exec 1 _currenttransfer exec gt} ifelse def /inverted? negative def /level2 systemdict /languagelevel known {languagelevel 2 ge} {false} ifelse def /level3 systemdict /languagelevel known {languagelevel 3 ge} {false} ifelse def /foureq {4 index eq 8 1 roll 4 index eq 8 1 roll 4 index eq 8 1 roll 4 index eq 8 1 roll pop pop pop pop and and and} def hascolor {/band 0 def} {/band 5 def} ifelse /setcmykcolor where {pop 1 0 0 0 setcmykcolor _currentgray 1 exch sub 0 1 0 0 setcmykcolor _currentgray 1 exch sub 0 0 1 0 setcmykcolor _currentgray 1 exch sub 0 0 0 1 setcmykcolor _currentgray 1 exch sub 4 {4 copy} repeat 1 0 0 0 foureq {/band 1 store} if 0 1 0 0 foureq {/band 2 store} if 0 0 1 0 foureq {/band 3 store} if 0 0 0 1 foureq {/band 4 store} if 0 0 0 0 foureq {/band 6 store} if} if blank {/band 6 store} if gsave % Image Header gsave /rows 180 def /cols 180 def 180 180 scale level2 { band 0 eq { /DeviceRGB } {/DeviceGray} ifelse setcolorspace currentdict /PhotoshopDuotoneColorSpace undef currentdict /PhotoshopDuotoneAltColorSpace undef } if /picstr1 180 string def /picstr2 180 string def /picstr3 180 string def /picstr4 180 string def /_rowpadstr 180 string def /rawreaddata {currentfile exch readhexstring pop} def /padreaddata { _topPad 0 gt { /_topPad _topPad 1 sub def pop _rowpadstr } { _subImageRows 0 gt { /_subImageRows _subImageRows 1 sub def dup _leftPad _picsubstr rawreaddata putinterval } { pop _rowpadstr } ifelse } ifelse } def /image2 level2 {/image load def} {{begin Width Height BitsPerComponent ImageMatrix Decode length 2 eq {/DataSource load image} if Decode length 6 eq {DataSource 0 get DataSource 1 get DataSource 2 get true 3 colorimage} if Decode length 8 eq {DataSource 0 get DataSource 1 get DataSource 2 get DataSource 3 get true 4 colorimage} if end} def} ifelse /_image2 level2 {/_image load def} {{begin Width Height BitsPerComponent ImageMatrix /DataSource load _image end} def} ifelse /beginimage { band 0 eq band 4 eq or band 5 eq or {image2} {negative {{pop 0}} {{pop 1}} ifelse _settransfer _image2} ifelse } def /readdata /rawreaddata load bind def 12 dict begin /ImageType 1 def /Width cols def /Height rows def /ImageMatrix [cols 0 0 rows neg 0 rows] def /BitsPerComponent 8 def /Interpolate true def band 0 eq {/Decode [0 1 0 1 0 1] def /MultipleDataSources true def /DataSource [ {picstr1 readdata} {picstr2 readdata} {picstr3 readdata picstr4 readdata pop} ] def} {/Decode [0 1] def /DataSource { picstr1 readdata pop picstr2 readdata pop picstr3 readdata pop picstr4 readdata } def} ifelse currentdict end %%BeginBinary: 267313 beginimage FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0E0E0E0E0A796969696969696CCE0 E0E0E0E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFE0E0E0E0E0A796969696969696CCE0E0E0E0E9FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0E0E0E0E0A796 969696969696CCE0E0E0E0E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFE0E0E0E0E0A796969696969696CCE0E0E0E0E9 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0E0CA919191 908D8D8D8D8DC9DBDBDBDBDBDBDBA28D8D8D8D8E919191A2E0E0E9FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFE0E0CA919191908D8D8D8D8DC9DBDBDBDBDB DBDBA28D8D8D8D8E919191A2E0E0E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFE0E0CA919191908D8D8D8D8DC9DBDBDBDBDBDBDBA28D8D8D8D8E919191A2 E0E0E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0E0CA919191908D8D8D 8D8DC9DBDBDBDBDBDBDBA28D8D8D8D8E919191A2E0E0E9FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFE0E0A191908D8DA3DBDBDBE9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFDBDBDBCA8D8D8E9191C9E0E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0E0A191908D8D A3DBDBDBE9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDBDBDBCA8D8D8E91 91C9E0E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFE0E0A191908D8DA3DBDBDBE9FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFDBDBDBCA8D8D8E9191C9E0E9FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFE0E0A191908D8DA3DBDBDBE9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DBDBDBCA8D8D8E9191C9E0E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7C691908D8DCBDBEAFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDBDBA48D8E 91A0E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFE7C691908D8DCBDBEAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDBDBA48D8E91A0E0FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7C691908D8DCB DBEAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFDBDBA48D8E91A0E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFE7C691908D8DCBDBEAFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDBDBA48D8E91A0E0FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9C7 93879FD9E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9C98C8C9BE3FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9C793879FD9E8FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFD9C98C8C9BE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFE9C793879FD9E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9C98C8C9BE3FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9C793879FD9 E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFD9C98C8C9BE3FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFE9C79387A0D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFE8C98C8C9BE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 C79387A0D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8C98C8C9BE3FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9C79387A0D9FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFE8C98C8C9BE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFE9C79387A0D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8 C98C8C9BE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE99D82A0D9FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8C98C89BFFDFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFE99D82A0D9FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFE8C98C89BFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFE99D82A0D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8C9 8C89BFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE99D82A0D9FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8C98C89BFFDFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFC7958AC4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFE59A879BECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7958AC4FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE59A87 9BECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7958AC4FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE59A879BECFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFC7958AC4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFE59A879BECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAC3839CD6FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7C386A1E5 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFEAC3839CD6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7C386A1E5FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAC3839C D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFE7C386A1E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAC3839CD6FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7C386A1E5FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFEC9F819EE6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFC88A89C0FEFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC9F819EE6FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFC88A89C0FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFEC9F819EE6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC88A89C0FEFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC9F 819EE6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFC88A89C0FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEA286C3FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF E49984C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFEEA286C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE49984C3FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEA286C3FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFE49984C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFEEA286C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE49984C3 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDA1 86C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE59983C2FCFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDA186C3FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFE59983C2FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFEDA186C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE59983C2FCFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDA186C3FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFE59983C2FCFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFC783C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFE69995E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFC783C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE69995E7FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC783C5FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFE69995E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFC783C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF E69995E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB849AFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD883A2FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB849AFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFD883A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFCB849AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD883 A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB849AFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD883A2FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF9C9FE4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFBE8AC9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C9F E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE8AC9FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C9FE4FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE8AC9FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF9C9FE4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFBE8AC9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC58CBCFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE19E9DF0FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFEC58CBCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFE19E9DF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE C58CBCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFE19E9DF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC58CBCFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE19E9DF0FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFEB9596E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFC182CAFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB9596E2FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1 82CAFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFEB9596E2FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC182CAFEFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFEB9596E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFC182CAFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD07FD8FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9A95FA FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFD07FD8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9A95FAFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD07FD8 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFE9A95FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD07FD8FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9A95FAFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFD9EA1FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFD28ACCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9EA1FEFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFD28ACCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFD9EA1FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD28ACCFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD 9EA1FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFD28ACCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC9DBBFEFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 9AC4FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFEC9DBBFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE19AC4FEFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC9DBBFEFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFE19AC4FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFEC9DBBFEFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE19AC4FEFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFD17ED8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9A94F8FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD17ED8FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFD9A94F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFD17ED8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9A94F8FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD17ED8 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFD9A94F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9DFDFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFD29AF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFCC9DFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD29AF9FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9DFDFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFD29AF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFCC9DFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD29A F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC 9DFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD29AF8FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9DFCFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFD29AF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFCC9DFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD29AF8FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9DFCFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD29AF8FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFCA9DFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFD29AF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFCA9DFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD29AF8FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA9DFCFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFD29AF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFCA9DFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF D29AF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9EFB FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD29AF9FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9EFBFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFD29AF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFCC9EFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD29AF9 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9EFBFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD29AF9FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFCC9EFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFD29AF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF CC9EFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD29AF9FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9EFCFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFD29AF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFCC9EFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFD29AF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9EFCFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD29AF9FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9EFCFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFD29AF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFCC9EFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2 9AF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9EFCFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD29AF9FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFCE9CFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFD09BFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9C FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD09BFAFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9CFBFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD09BFAFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFCE9CFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFD09BFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9CFBFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD09BF9FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFCC9CFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFD09BF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFD39DFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFD09BF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD9CFBFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD09BF9FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFA11F94FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFD09BF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA11F94FBFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD09B F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1256EFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD09BF9FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFA12090FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFD09BF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF883AF2FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD09BFAFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFF883AF2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD09BFAFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 161230319EAEFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFD09BFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8936D9E8E8F4F6FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD09BFAFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFCDA3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFD09BFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDA3FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF D09BFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFCDB5940000000000272E61ACADFAFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD09BFAFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFCDA5F3E3E3E3E3E3E7E8EEF6F6FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFD09BFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD39CFAFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9DFC FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFD39CFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9DFCFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD39CFE E6100000000000000000002A339FB0D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFCE9DFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD39CFAFCE5E3E3E3E3E3E3E3E3E3E8 E9F4F6FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9DFCFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFEE82FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF9BC9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE82FAFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFF9BC9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFEE82FAFFFE42000000000000000000000000000A 32329EB0F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9BC9FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EE82FAFFFFEAE3E3E3E3E3E3E3E3E3E3E3E3E3E4E8E8F4F6FEFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF9BC9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99FD2FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9B D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF99FD2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9BD2FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99FD2FFFF FF99000000000000000000000000000000000000283261B0B0F8FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFB9BD2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99FD2FFFFFFF4E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E7E8EEF6F6FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9BD2FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFA1BEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE487FBFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1BEFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFE487FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFA1BEFFFFFFFFE51000000000000000000000000000 0000000000000000002A35A0B4D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE487FBFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1 BEFFFFFFFFFCE5E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E8E9F5 F7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFE487FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD39EF9FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF D29DFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFD39EF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD29DFBFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD39EF9FFFFFF FFFF400000000000000000000000000000000000000000000000000000083535 9EB4F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFD29DFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFD39EF9FFFFFFFFFFEAE3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E4E9E9F4F7FEFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD29DFBFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFEE82FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9BC8FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE82FAFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFF9BC8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFEE82FAFFFFFFFFFFFF9800000000000000000000000000 0000000000000000000000000000000000002A355EB4B4F8FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9BC8FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE82FA FFFFFFFFFFFFF4E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E8E9EDF7F7FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF9BC8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9FD0FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFA9BD5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFC9FD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9BD5FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9FD0FFFFFFFFFF FFFFE31000000000000000000000000000000000000000000000000000000000 000000000000002C389FB8D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFA9BD5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFC9FD0FFFFFFFFFFFFFFFCE5E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E8E9F4F7FA FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9BD5 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF CE99FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE589FCFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE99FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFE589FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFCE99FFFFFFFFFFFFFFFFFF3F000000000000000000000000 0000000000000000000000000000000000000000000000000000000838389DB8 F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE589FCFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE99FFFF FFFFFFFFFFFFFFEAE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E4E9E9F4F7FEFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFE589FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8BE6FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF9DCEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFB8BE6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9DCEFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8BE6FFFFFFFFFFFF FFFFFF9700000000000000000000000000000000000000000000000000000000 000000000000000000000000000000002A385EB8B8F7FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFF9DCEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFB8BE6FFFFFFFFFFFFFFFFFFF4E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E8E9EDF7F7FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3 C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF983EFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3C2FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF983EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFA3C2FFFFFFFFFFFFFFFFFFFFE2150000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000002C3CA0BBD1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF983EFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3C2FFFFFF FFFFFFFFFFFFFFFCE5E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E8EAF5F8FAFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF983EFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFD69BF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFCEA0FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFD69BF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCEA0FBFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD69BF9FFFFFFFFFFFFFF FFFFFFFE18000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000073C3C9EBBF7FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFCEA0FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFD69BF9FFFFFFFFFFFFFFFFFFFFFFE6E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E4EAEAF4F8FEFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF CEA0FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB89E4 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98CDFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB89E4FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF98CDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFB89E4FFFFFFFFFFFFFFFFFFFFFFFE730000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000002B3C5CBBBBF6FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98CDFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB89E4FFFFFFFF FFFFFFFFFFFFFFFFF0E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E8EAEDF8F8FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98CDFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFCE9BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6B3B3B3ECFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFE48AFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFCE9BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFC6B3B3B3ECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE48AFCFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9BFFFFFFFFFFFFFFFFFF FFFFFFFFB3070000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000002D409DBFD1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFE48AFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFCE9BFFFFFFFFFFFFFFFFFFFFFFFFFFF7E4E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B09F9FA4D9F4F8FAFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFE48AFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE86F8FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EAB3B3B38C808080A6B3B3B38D808080A5B3B3C4FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9DCEFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE86F8FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAB3B3B38C808080A6B3B3B3 8D808080A5B3B3C4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF9DCEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFEE86F8FFFFFFFFFFFFFFFFFFFFFFFFFFFF1800000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000640409CBFF6FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9DCE FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE86F8FFFFFFFFFF FFFFFFFFFFFFFFFFFFE6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D09F9F9F 7D727272949F9F9F7D7272739AA6B0C3FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9DCEFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFA7C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFECB68C808DB1B1B1EBFDFDFDFFFFFFFFFFFDFDFD C5B1B1A68080A4C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFE58AFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF A7C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ECB68C808DB1B1B1EBFDFDFDFFFFFFFFFFFDFDFDC5B1B1A68080A4C3FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE58AFCFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7C2FFFFFFFFFFFFFFFFFFFF FFFFFFFFFE700000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000002E445FC3C3F7FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFE58AFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFA7C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFE3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3D2A27D727D9E9E9ED1E1E1E1E3E3E3E3E3E1E1E1AF9E9E94 77799CC3F8FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFE58AFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE86F9FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC29C86B1EDFD FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDC39C87B6EBFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9CCFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE86F9FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFC29C86B1EDFDFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFDFDC39C87B6EBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFF9CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFEE86F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB207000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 002C449DC3D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE86F9FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF7E4E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3AD8B779ED3E1E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E1E1AE8B78A7D9F4F8FAFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9CCFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFA7C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFC3849DC4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFEDB1879BE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFE58AFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7 C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3849DC4 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDB1879B E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE58AFCFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7C2FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFE1700000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000544449BC3F5FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE58AFCFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFA7C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3AE758CAEE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3D39E788ACEE4EAEAF4F8FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFE58AFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF86F8FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7A480A2E8FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC08482C5FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9BD1FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFEF86F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFE7A480A2E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC08482C5FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF9BD1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFEF86F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000002E475EC7C7F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 9BD1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF86F8FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFEFE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CE927290CEE3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3AB7574AFE3E3E3E8EB EDF9F9FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9BD1FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFA8C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFE79C82C0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFE89E85C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFE48BFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8C1 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE79C82C0FCFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFE89E85C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE48BFCFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8C1FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFB107000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000002D 479BC7D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE48BFCFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFA8C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E4E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CE 8B74ABE0E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3CE8D76AFE3E3E3E3E3E3E8EBF4F9FAFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFE48BFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE87F8FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE82C1FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 9E83E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9BD1FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFEE87F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFAE82C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE99E83E9FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF9BD1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFEE87F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1A0000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000447479BC7F4FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF9BD1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE87F8FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFE6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E39B74ACE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CF8D75CFE3 E3E3E3E3E3E3E3E3EBEBF4F9FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9BD1FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFD19AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EC82B6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE683AEFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFE38CFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD19AFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC82B6FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFE683AEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE38CFD FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD19AFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFE70000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000002D4B5FCACAF5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE38CFDFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFD19AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFE3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D274A2E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3CD759BE3E3E3E3E3E3E3E3E3E3E3E3E8EBEDF9 F9FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFE38CFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8CE3FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC395E6FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFB59EEAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9AD2FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFD8CE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFC395E6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB59EEAFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF9AD2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FD8CE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB30600000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000002C4B9B CAD4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFF9AD2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8CE3FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFF7E4E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3AE85CDE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3A1 8DD0E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E8EBF4F9FAFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9AD2FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFD19CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB39A EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC090E8FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFE38FF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD19CFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB39AEFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFC090E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE38F F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD19CFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF190000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000044B4B99CAF4FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE38FF9FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFD19CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E39F89D5E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3AB80CEE3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3EBEBF4F9FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFE38FF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91D9FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFB1B3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFEC93E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87E4FFFFFF FFFFFFFFFFFFFFFFFFFFFFFF91D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFB1B3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC93E8FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 91D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6F00000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000002E4F5ECCCDF4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF87E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91D9FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFEFE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E39E9FE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3D283CEE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E8ECEDF9FAFE FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87E4FFFFFFFFFFFFFF FFFFFFFFFFFFFFEE89F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE82B7FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB84B0FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFBFAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE89F3FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE82B7FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFEB84B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE89F3FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFB20600000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000002C4F98CDD5 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFAAFFFFFFFFFFFFFFFFFFFFFF FFFFFFEE89F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E4E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D474A3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D1759DE3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E8ECF4FAFAFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFBFAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8BEFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFE793E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFB3AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF785EEFFFF FFFFFFFFFFFFFFFFFFFFFFA8BEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE793 E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3AFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF785EEFFFFFFFFFFFFFFFFFFFFFFFFFFA8 BEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000034D4F98CDF2FFFFFFFFFFFFFFFFFFFFFF FFFFFFF785EEFFFFFFFFFFFFFFFFFFFFFFFFFFA8BEFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFE6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3CE83CCE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E39F9CE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3EBECF4FAFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFF785EEFFFFFFFFFFFF FFFFFFFFFFFFED87F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB93EAFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C1B081818181818190C1D1 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4B5FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFC0A9FFFFFFFFFFFFFFFFFFFFFFFFED87F7FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFEB93EAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF3C1B081818181818190C1D1FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFB4B5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF C0A9FFFFFFFFFFFFFFFFFFFFFFFFED87F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFE6D00000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000002C535FCDD1F3FFFFFFFFFFFFFFFFFFFFC0A9FFFFFFFFFFFFFFFFFFFF FFFFED87F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFE3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D183D0E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D8AC9D73737373737380ACBAE3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3A0A1E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E8ECEDFAFAFEFFFF FFFFFFFFFFFFFFFFC0A9FFFFFFFFFFFFFFFFFFFFFFFFD09BFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFE84EBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFCE8785AEC6FFFDFDFDFDFEEDB0A081ACEFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF85E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE68CF9FF FFFFFFFFFFFFFFFFFFFFD09BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE84EBFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE8785AEC6FFFDFDFDFD FEEDB0A081ACEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85E5 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE68CF9FFFFFFFFFFFFFFFFFFFFFFD09B FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1060000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000002B5398D1D6FFFF FFFFFFFFE68CF9FFFFFFFFFFFFFFFFFFFFFFD09BFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF6E4E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E275D1E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B778 769BB0E3E1E1E1E1E2D39D8E7399D5E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E376CCE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E8ECF4FAFAFFFFFFFFFFFFE68CF9FFFFFFFFFF FFFFFFFFFFFF90DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2B5FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28995E6FFE1CEB48383838393C7D1FD FDBD80BAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB93EAFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF8CE6FFFFFFFFFFFFFFFFFFFFFF90DAFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFB2B5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF28995E6FFE1CEB48383838393C7D1FDFDBD80BAFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFEB93EAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF8CE6FFFFFFFFFFFFFFFFFFFFFF90DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFD18000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000453579AD4F4FFFF90E5FFFFFFFFFFFFFFFFFF FFFF90DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E39EA1E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3D77A85CDE3C8B7A07575757583B1BAE1E1A872A6 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D183D0E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3ECEDF4FAFEFFFF8CE6FFFFFFFFFFFFFFFFFFFFED8BF3FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFB5B2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF669 86E7FAB3829CA4B8F4F4F4F4E0A4A48589DCFFBA71B0FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFE994ECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5ACFF FFFFFFFFFFFFFFFFFFED8BF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5B2FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66986E7FAB3829CA4B8F4F4F4F4 E0A4A48589DCFFBA71B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 94ECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5ACFFFFFFFFFFFFFFFFFFFFED8BF3 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6B0000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00002D576295B3FFFFFFFFFFFFFFFFFFFFED8BF3FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFEFE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3A19EE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DB5D77CEDF9F 748B92A4D9D9D9D9C79292767AC4E3A6659DE3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3CF84D2E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E8EDEEA3ADFFFFFFFFFF FFFFFFFFFFD19AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFA4FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF074B9F1AD81B5F4FFFFFFFFFFFFFFFFFFFFFA DD928AD9EA83A9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC96FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFBF34F8FFFFFFFFFFFFFFFFFFD19AFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFBFA4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF074B9F1AD81B5F4FFFFFFFFFFFFFFFFFFFFFADD928AD9EA83A9FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC96FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFBF34F8FFFFFFFFFFFFFFFFFFD19AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFB0050000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000135FAFFFFFFFFFFFFFFFF FFD19AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E4 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3AA92E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3D667A5D69A73A1D9E3E3E3E3E3E3E3E3E3E3DFC5827BC1 D07596E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B686E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3AA34F8FFFFFFFFFFFFFFFFFF91D9FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFEE90EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF293BCBC 5697FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC5471E290BDFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFB5B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF326DA FFFFFFFFFFFFFFFFFF91D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE90EDFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF293BCBC5697FAFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFDC5471E290BDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFB5B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF326DAFFFFFFFFFFFFFFFFFF91D9FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1700000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000008E0FFFFFFFFFFFFFFFFFF91D9FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3D480D3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D783A7A74D86DFE3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3C44B65C980A8E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3A1A3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D823DBFFFFFFFF FFFFFFFFEE8BF2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD86E8FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFF096EDC98DDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFAC97FCB2BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3BE FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF6574FFFFFFFFFFFFFFFFEE8BF2FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFD86E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 96EDC98DDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC97FCB2BBFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3BEFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFF6574FFFFFFFFFFFFFFFFEE8BF2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFE6A0000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000087FFFFFFFFFFFFFFFF EE8BF2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E177CEE3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3D686D3B37DC6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 9986E09EA6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E391A9E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E35A76FFFFFFFFFFFFFFFFD299FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFB7B3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF398DAB2AAFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE495DBAFBFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFED92EBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D65 FCFFFFFFFFFFFFFFD299FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7B3FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFF398DAB2AAFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFE495DBAFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFED92EBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D65FCFFFFFFFFFFFFFFD299FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF05000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000072FDFFFFFFFFFFFFFFD299FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E4E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 A39FE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D887C29E97E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CB85C39CAAE3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3D382D1E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E36F66FCFFFFFF FFFFFFFF91DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE786FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF46EDAAE8EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFE365FA73BDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD 9AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFE81CF2FFFFFFFFFFFFFF91DAFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFE786FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46EDA AE8EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE365FA73BDFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD9AFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFE81CF2FFFFFFFFFFFFFF91DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFC1B00000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000012F6FFFFFFFFFFFFFF 91DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF E6E3E3E3E3E3E3E3E3E3E3E3E3E3E3CE77E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3D962C29B7EE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3CA5ADF66A8E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B689E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3CE1BF2FFFFFFFFFFFFFB90E1FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF9BCEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1CA88AFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE973CE8BF1FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8AE7FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC29 DCFFFFFFFFFFFFFB90E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9BCEFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFA1CA88AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFE973CE8BF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF8AE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC29DCFFFFFFFFFFFFFB90E1FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD31000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000FE2FFFFFFFFFFFFFB90E1FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E3E3E3E3E3E3E3E3E3E3E3E3E3E38A B7E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E38FB4799CE3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CF66B77CD6E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E37BCEE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D226DDFFFFFF FFFFFFE08DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE78AFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFCEAEB996FFFFFFFFFFFFFFFFFFFFFFFFFBCBC9DDFFFFFFFF FFFFFFFFFFFFFFFFDF7BE291FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF CE9BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6574FFFFFFFFFFFFE08DFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFE78AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCEAEB996 FFFFFFFFFFFFFFFFFFFFFFFFFBCBC9DDFFFFFFFFFFFFFFFFFFFFFFFFDF7BE291 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9BFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF6574FFFFFFFFFFFFE08DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF9100000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000087FFFFFFFFFFFFE0 8DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F3E3E3E3E3E3E3E3E3E3E3E3E3E3CE7BE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3B79BA586E3E3E3E3E3E3E3E3E3E3E3E3DFB5B3C5E3E3E3E3E3E3E3E3 E3E3E3E3C66DC981E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B78AE3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E35A76FFFFFFFFFFFFE588FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFD9ECDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27CCA64EAFFFFFFFF FFFFFFFFFFFFDF7A6C7E9D5A78AEFFFFFFFFFFFFFFFFFFFFFF909D9DB4FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8CE7FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A 66FCFFFFFFFFFFE588FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9ECDFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFF27CCA64EAFFFFFFFFFFFFFFFFFFFFDF7A6C7E9D5A 78AEFFFFFFFFFFFFFFFFFFFFFF909D9DB4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFF8CE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A66FCFFFFFFFFFFE588FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6110000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000074FDFFFFFFFFFFE588FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE5E3E3E3E3E3E3E3E3E3E3E3E18DB6 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D76EB459D0E3E3E3E3E3E3E3E3 E3E3C66D60708C506B9BE3E3E3E3E3E3E3E3E3E3E3808C8CA0E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E37DCEE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E36D68FCFFFF FFFFFFB0BDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87EFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFA58875EAFFFFFFFFFFFFFFFFFFFFB941A5F2FFFFFDD6765CFB FFFFFFFFFFFFFFFFFFFF98916EF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFC2A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE71FEBFFFFFFFFFFB0BDFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF87EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA58875EAFF FFFFFFFFFFFFFFFFFFB941A5F2FFFFFDD6765CFBFFFFFFFFFFFFFFFFFFFF9891 6EF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2A4FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFE71FEBFFFFFFFFFFB0BDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF34000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000012F0FFFFFFFFFFB0 BDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFE9E3E3E3E3E3E3E3E3E3E3E3DD70E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3937968D0E3E3E3E3E3E3E3E3E3E3A53A93D7E3E3E1BE6952DFE3E3E3E3 E3E3E3E3E3E3878162D8E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3AD92E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3CE1EECFFFFFFFFFF8CDFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFC3A8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF193B0C8FFFFFFFFFFFF FFFFFFFFD43CE2FFFFFFFFFFFFFF8669FFFFFFFFFFFFFFFFFFFFFF93BBA7FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE98AFDFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7 19F4FFFFFFFFFF8CDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3A8FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF193B0C8FFFFFFFFFFFFFFFFFFFFD43CE2FFFFFFFFFF FFFF8669FFFFFFFFFFFFFFFFFFFFFF93BBA7FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFE98AFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE719F4FFFFFFFFFF8CDFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF950000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000013F8FFFFFFFFFF8CDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E3E3E3E3E3E3E3E3E3E3E3AE96E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D6839DB2E3E3E3E3E3E3E3E3E3E3 BD35C9E3E3E3E3E3E3E3775DE3E3E3E3E3E3E3E3E3E3E383A695E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3CF7BE1E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CE18F4FFFF FFFFFB91DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD86ECFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFA8B68FFFFFFFFFFFFFFFFFFFFFF47DE0FFFFFFFFFFFFFFFFFF92 BBFFFFFFFFFFFFFFFFFFFFC2AA92EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFA5C4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64BA0FFFFFFFFFB91DFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFD86ECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8B68FFFFFFF FFFFFFFFFFFFFFF47DE0FFFFFFFFFFFFFFFFFF92BBFFFFFFFFFFFFFFFFFFFFC2 AA92EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5C4FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFF64BA0FFFFFFFFFB91DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFD7110000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000007ADFFFFFFFFFB91 DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFBE5E3E3E3E3E3E3E3E3E3E177D2E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E396A27FE3E3E3E3E3E3E3E3E3E3D96FC7E3E3E3E3E3E3E3E3E382A6E3E3E3 E3E3E3E3E3E3E3AD9782D5E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E393AE E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3DB44A1FFFFFFFFDE8DFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF C2A7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF294AAC2FFFFFFFFFFFFFF FFFFFFB47BFFFFFFFFFFFFFFFFFFFFE659FFFFFFFFFFFFFFFFFFFFFF8FB6A9FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC89F8FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 6A68FFFFFFFFDE8DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2A7FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF294AAC2FFFFFFFFFFFFFFFFFFFFB47BFFFFFFFFFFFFFF FFFFFFE659FFFFFFFFFFFFFFFFFFFFFF8FB6A9FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFEC89F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A68FFFFFFFFDE8DFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3300 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000007CFFFFFFFFDE8DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E3E3E3E3E3E3E3E3E3AD95E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D78497ADE3E3E3E3E3E3E3E3E3E3A0 6DE3E3E3E3E3E3E3E3E3E3CD4FE3E3E3E3E3E3E3E3E3E3E37FA296E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3D27ADDE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E35E6AFFFF FFFFE08BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97D1FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFF97A991FFFFFFFFFFFFFFFFFFFFFE93E9FFFFFFFFFFFFFFFFFFFFFF A4D0FFFFFFFFFFFFFFFFFFFFC2AB7DEDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF89E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7864FDFFFFFFE08BFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF97D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97A991FFFFFFFF FFFFFFFFFFFFFE93E9FFFFFFFFFFFFFFFFFFFFFFA4D0FFFFFFFFFFFFFFFFFFFF C2AB7DEDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89E5FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF7864FDFFFFFFE08BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF940000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000072FDFFFFFFE08B FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF3E3E3E3E3E3E3E3E3E386BAE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3869681E3E3E3E3E3E3E3E3E3E3E283CFE3E3E3E3E3E3E3E3E3E3E392B9E3E3 E3E3E3E3E3E3E3E3AD986FD3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E37A CCE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E36B66FDFFFFFFD596FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7 8BFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6590C6FFFFFFFFFFFFE3D1 E7FFFF7EFFFFFFFFFFFFFFFFFFFFFFFFB7B3FFFFFFFFFFFFFFFFFFFFFE9576AC FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1A2FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF E620EBFFFFFFD596FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE78BFEFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF6590C6FFFFFFFFFFFFE3D1E7FFFF7EFFFFFFFFFFFFFFFF FFFFFFFFB7B3FFFFFFFFFFFFFFFFFFFFFE9576ACFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFC1A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE620EBFFFFFFD596FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD610 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000011F0FFFFFFD596FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE5E3E3E3E3E3E3E3CE7CE2E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E35A80B0E3E3E3E3E3E3CABACEE3E370 E3E3E3E3E3E3E3E3E3E3E3E3A39FE3E3E3E3E3E3E3E3E3E3E2856999E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3AC90E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CD1EECFF FFFF90DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFCAA689FEFFFFFFFFFF8A549953C5D465FFFFFFFFFFFFFFFFFFFFFFFF BF6FFFFFFFFFFFFFFFFFFFFFFFB99C9EFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFE88AFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE819F4FFFFFF90DAFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFA2C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCAA689FEFFFFFFFF FF8A549953C5D465FFFFFFFFFFFFFFFFFFFFFFFFBF6FFFFFFFFFFFFFFFFFFFFF FFB99C9EFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE88AFCFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFE819F4FFFFFF90DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3200000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000FF8FFFFFF90DA FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFE8E3E3E3E3E3E3E390ABE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 B4947AE2E3E3E3E3E37B4B884AAFBD5AE3E3E3E3E3E3E3E3E3E3E3E3AA63E3E3 E3E3E3E3E3E3E3E3E3A58B8DE1E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CE 7BE0E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3CE18F4FFFFFF8EDCFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78F E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA896A9FFFFFFFFFFD78EF8FF F68925C0FFFFFFFFFFFFFFFFFFFFFFFFFF78FCFFFFFFFFFFFFFFFFFFFFE19A88 F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9C1FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F54CA4FFFFFF8EDCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78FE7FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFEA896A9FFFFFFFFFFD78EF8FFF68925C0FFFFFFFFFFFFFFFF FFFFFFFFFF78FCFFFFFFFFFFFFFFFFFFFFE19A88F0FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFA9C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54CA4FFFFFF8EDCFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000007B1FFFFFF8EDCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E3E3E3E3E3E3DC7FCEE3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E2968696E3E3E3E3E3BF7EDDE3DB7A21AB E3E3E3E3E3E3E3E3E3E3E3E3E36BE0E3E3E3E3E3E3E3E3E3E3C88979D6E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E396ACE3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DA44A5FF FFFF8FDAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFF180FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFE8AA3C6FFFFFFFFFF69C6FFFFFFFF777CFFFFFFFFFFFFFFFFFFFFFFFF D760FFFFFFFFFFFFFFFFFFFFFFFF8FA7AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFCC9AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7366FFFFFF8FDAFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF180FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8AA3C6FFFFFFFFFF 69C6FFFFFFFF777CFFFFFFFFFFFFFFFFFFFFFFFFD760FFFFFFFFFFFFFFFFFFFF FFFF8FA7AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9AFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFF7366FFFFFF8FDAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD510000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000079FFFFFF8FDA FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFAE5E3E3E3E3E3D672E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E2 7B91B0E3E3E3E3E35DB0E3E3E3E36A6EE3E3E3E3E3E3E3E3E3E3E3E3BF55E3E3 E3E3E3E3E3E3E3E3E3E37F959CE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 B689E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E36668FFFFFC8FDFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE88B FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCBA286FDFFFFFFFFFC77FDFFFF FFFFFF4ED5FFFFFFFFFFFFFFFFFFFFFFB2B6D67A8986F6FFFFFFFFFFFFFFBC95 A0FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9CFEFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF6B70FFFFFC8FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE88BFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFCBA286FDFFFFFFFFFC77FDFFFFFFFFFF4ED5FFFFFFFFFFFFFF FFFFFFFFB2B6D67A8986F6FFFFFFFFFFFFFFBC95A0FBFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFCE9CFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B70FFFFFC8FDFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 3000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000083FFFFFC8FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E3E3E3E3E3CE7CE3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B59077E1E3E3E3E3E06AE1E3E3E3E3E345 BEE3E3E3E3E3E3E3E3E3E3E39EA2BE6D7A77DBE3E3E3E3E3E3E3A7858EDFE3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B78BE2E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E35F72FF FFDF8FFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFA2C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFAB90ACFFFFFFFFFFF271FFFFFFFFFFFE8259E0FFFFFFFFFFFFFFFFFFFF BB8646C2E570B7FFFFFFFFFFFFFFE29C80F8FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFD85F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7967FDFFDF8FFEFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFA2C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB90ACFFFFFFFFFFF2 71FFFFFFFFFFFE8259E0FFFFFFFFFFFFFFFFFFFFBB8646C2E570B7FFFFFFFFFF FFFFE29C80F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD85F1FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFF7967FDFFDF8FFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000076FEFFDF8FFE FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF3E3E3E3E3E390B1E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E398 8099E3E3E3E3E3D765E3E3E3E3E3E2744FC7E3E3E3E3E3E3E3E3E3E3A6773EAD CC64A3E3E3E3E3E3E3E3C98B72DDE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E176D6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E36C69FDFFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9ECA FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA5FCBFFFFFFFFFFAD82FFFFFF FFFFFFB6537CFFFFFFFFFFFFFFFFFFFB7A5DD1FFFFC96FFFFFFFFFFFFFFFFF82 76FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84F0FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFE722EDFFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9ECAFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFBA5FCBFFFFFFFFFFAD82FFFFFFFFFFFFB6537CFFFFFFFFFFFF FFFFFFFB7A5DD1FFFFC96FFFFFFFFFFFFFFFFF8276FEFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF84F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE722EDFFDE8FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF D310000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000013F2FFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE5E3E3E3E38DB4E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3A655B5E3E3E3E3E39A74E3E3E3E3E3E3A2 4A6EE3E3E3E3E3E3E3E3E3DF6D53BAE3E3B363E3E3E3E3E3E3E3E37469E2E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E375D6E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CE20EE FFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFA1C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFB9E8BC8FFFFFFFFFFA6C5FFFFFFFFFFFFDB6A93DEFFFFFFFFFFFFFFFFC8 0AC3FFFFFFFD75FCFFFFFFFFFFFFFF8E94CEFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFF82F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED1EECFFDE8FFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFA1C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9E8BC8FFFFFFFFFFA6 C5FFFFFFFFFFFFDB6A93DEFFFFFFFFFFFFFFFFC80AC3FFFFFFFD75FCFFFFFFFF FFFFFF8E94CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82F2FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFED1EECFFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F0000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000EF1FFDE8FFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFE8E3E3E3E38FAFE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DF8D 7CB2E3E3E3E3E394AFE3E3E3E3E3E3C35E83C6E3E3E3E3E3E3E3E3B209AEE3E3 E3E168E0E3E3E3E3E3E3E37E84B7E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E374D7E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3D31CEDFFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF791E6 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8788DFCFFFFFFFFFFD69BFFFFFF FFFFFFFFBF489CFFFFFFFFFFFFFFD33493FCFFFFFFFF81FCFFFFFFFFFFFFFFC6 70B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89EAFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFEB1FECFFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF791E6FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFF8788DFCFFFFFFFFFFD69BFFFFFFFFFFFFFFBF489CFFFFFFFFFF FFFFD33493FCFFFFFFFF81FCFFFFFFFFFFFFFFC670B0FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF89EAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB1FECFFDE8FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF90000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000FF1FFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E3E3E3DC81CDE3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3DD6B7DE0E3E3E3E3E3BE8AE3E3E3E3E3E3E3 AA408BE3E3E3E3E3E3E3BC2E83E0E3E3E3E373E0E3E3E3E3E3E3E3B0649DE3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E37AD0E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D11DED FFE489FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFEF82FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFA7A84FFFFFFFFFFFFFF7CFFFFFFFFFFFFFFFB7B13DAEF8991A6FFBB473D E4FFFFFFFFFF83FCFFFFFFFFFFFFFFC866B7FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFC6A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB1FECFFE489FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFEF82FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7A84FFFFFFFFFFFFFF 7CFFFFFFFFFFFFFFFB7B13DAEF8991A6FFBB473DE4FFFFFFFFFF83FCFFFFFFFF FFFFFFC866B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6A2FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFEB1FECFFE489FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD21100000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000FF1FFE489FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFAE5E3E3D574E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DF6D 75E3E3E3E3E3E3E36EE3E3E3E3E3E3E3DF6D11C2D57A8194E3A63F36CBE3E3E3 E3E375E0E3E3E3E3E3E3E3B25BA3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3B090E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3D11DEDFFB4B9FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF084FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4798BFFFFFFFFFFFFFA82FFFFFF FFFFFFFFFFFF782D5586BD466771BAA4FFFFFFFFFFDB5FFEFFFFFFFFFFFFFFCC 6AB1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA9EFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFEB1FECFFB4B9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF084FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFF4798BFFFFFFFFFFFFFA82FFFFFFFFFFFFFFFFFF782D5586BD46 6771BAA4FFFFFFFFFFDB5FFEFFFFFFFFFFFFFFCC6AB1FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFCA9EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB1FECFFB4B9FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFF310000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000FF1FFB4B9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E3E3D675E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3D96C7CE3E3E3E3E3E3DF74E3E3E3E3E3E3E3 E3E36B284C77A83E5C65A692E3E3E3E3E3C355E2E3E3E3E3E3E3E3B65E9EE3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B48DE3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D11DED FF8AE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF67FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFB969C5FFFFFFFFFFFFFA71FAFFFFFFFFFFFFFFFFFF705F5F9931C8FF9CDB FFFFFFFFFFB4A2FFFFFFFFFFFFFFFFFC847DF9FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFC5A1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB1FECFF8AE3FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF67FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB969C5FFFFFFFFFFFFFA 71FAFFFFFFFFFFFFFFFFFF705F5F9931C8FF9CDBFFFFFFFFFFB4A2FFFFFFFFFF FFFFFFFC847DF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5A1FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFEB1FECFF8AE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9300000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000FF1FF8AE3FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFF3E3E3DB71E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3A55D AFE3E3E3E3E3E3DF65DFE3E3E3E3E3E3E3E3E3645555882CB2E38BC3E3E3E3E3 E3A090E3E3E3E3E3E3E3E3E0756FDEE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3AF8FE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3D11DEDFF8FDEFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6A8FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB568C9FFFFFFFFFFFFFF75BDFFFF FFFFFFFFFFFFFF80A8677F8CFFFB7FFFFFFFFFFFFFBDAAFFFFFFFFFFFFFFFFFF 8679F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE591F7FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFEB1FECFF8FDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6A8FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFB568C9FFFFFFFFFFFFFF75BDFFFFFFFFFFFFFFFFFF80A8677F8C FFFB7FFFFFFFFFFFFFBDAAFFFFFFFFFFFFFFFFFF8679F9FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFE591F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB1FECFF8FDEFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFD31100000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000FF1FF8FDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE5E3B096E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3A15DB3E3E3E3E3E3E3E368A8E3E3E3E3E3E3 E3E3E372965C717DE3DF71E3E3E3E3E3E3A897E3E3E3E3E3E3E3E3E3776CDEE3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CC81DCE3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D11DED FF8FDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF99CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFB668C8FFFFFFFFFFFFFFB0BCFFFFFFFFFFFFFFFFFFBF7CF4E4FFFFC1ADFF FFFFFFFFFF9DD6FFFFFFFFFFFFFFFFFF867AF9FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF82EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB1FECFF8FDEFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF99CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB668C8FFFFFFFFFFFFFF B0BCFFFFFFFFFFFFFFFFFFBF7CF4E4FFFFC1ADFFFFFFFFFFFF9DD6FFFFFFFFFF FFFFFFFF867AF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82EFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFEB1FECFF8FDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000FF1FF8FDEFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFE8E388B7E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3A25D B2E3E3E3E3E3E3E39DA7E3E3E3E3E3E3E3E3E3AA6ED9CBE3E3AC9AE3E3E3E3E3 E38CBEE3E3E3E3E3E3E3E3E3776DDEE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E374D5E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3D11DEDFF8FDEFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9FC9FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB668C8FFFFFFFFFFFFFFD59CFFFF FFFFFFFFFFFFFFFA75FFFFFFFF7AB6FFFFFFFFFFFB6EFFFFFFFFFFFFFFFFFFFF 867AF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84F0FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFEB1FECFF8FDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9FC9FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFB668C8FFFFFFFFFFFFFFD59CFFFFFFFFFFFFFFFFFFFA75FFFFFF FF7AB6FFFFFFFFFFFB6EFFFFFFFFFFFFFFFFFFFF867AF9FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF84F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB1FECFF8FDEFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF9200000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000FF1FF8FDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E38EB3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3A25DB2E3E3E3E3E3E3E3BE8BE3E3E3E3E3E3 E3E3E3DF68E3E3E3E36DA2E3E3E3E3E3DF62E3E3E3E3E3E3E3E3E3E3776DDEE3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E375D6E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D11DED FF8FDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF99CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFB668C8FFFFFFFFFFFFFFFF7FFBFFFFFFFFFFFFFFFFFF65C8E1FFFF76F8FF FFFFFFFFC672FFFFFFFFFFFFFFFFFFFF867AF9FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFC86F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB1FECFF8FDEFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF99CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB668C8FFFFFFFFFFFFFF FF7FFBFFFFFFFFFFFFFFFFFF65C8E1FFFF76F8FFFFFFFFFFC672FFFFFFFFFFFF FFFFFFFF867AF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC86F1FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFEB1FECFF8FDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2130000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000FF1FF8FDEFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFAE588B7E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3A25D B2E3E3E3E3E3E3E3E371DFE3E3E3E3E3E3E3E3E35AB2C8E3E369DDE3E3E3E3E3 B065E3E3E3E3E3E3E3E3E3E3776DDEE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E077D6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3D11DEDFF8FDEFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6A8FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB569C8FFFFFFFFFFFFFFFFAAC6FF FFFFFFFFFFFFFFFFB32E7288E561FFFFFFFFFFFF7FB8FFFFFFFFFFFFFFFFFFFF 8779F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD9DFEFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFEB1FECFF8FDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6A8FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFB569C8FFFFFFFFFFFFFFFFAAC6FFFFFFFFFFFFFFFFFFB32E7288 E561FFFFFFFFFFFF7FB8FFFFFFFFFFFFFFFFFFFF8779F9FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFCD9DFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB1FECFF8FDEFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF1F000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000FF1FF8FDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6B096E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3A15DB2E3E3E3E3E3E3E3E397B0E3E3E3E3E3 E3E3E3E39F296579CC56E3E3E3E3E3E371A4E3E3E3E3E3E3E3E3E3E3786CDEE3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B68CE2E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D11DED FF8AE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF67FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFBA65C8FFFFFFFFFFFFFFFFB181FFFFFFFFFFFFFFFFFF6EA6FF8A86A9FFFF FFFFFFFE65F6FFFFFFFFFFFFFFFFFFFF827CF9FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFC8A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB1FECFF8AE3FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF67FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA65C8FFFFFFFFFFFFFF FFB181FFFFFFFFFFFFFFFFFF6EA6FF8A86A9FFFFFFFFFFFE65F6FFFFFFFFFFFF FFFFFFFF827CF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8A0FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFEB1FECFF8AE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F0000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000FF1FF8AE3FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFEDDB71E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3A65A B2E3E3E3E3E3E3E3E39E73E3E3E3E3E3E3E3E3E36294E37B7796E3E3E3E3E3E2 5ADBE3E3E3E3E3E3E3E3E3E3746EDEE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3B28EE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3D11DEDFFB5B8FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF084FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2AC8FFFFFFFFFFFFFFFFF850DF FFFFFFFFFFFFFFFF6534E16388BBFFFFFFFFFFB56EFFFFFFFFFFFFFFFFFFFFFF 419EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA9EFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFEB1FECFFB5B8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF084FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFA2AC8FFFFFFFFFFFFFFFFF850DFFFFFFFFFFFFFFFFF6534E163 88BBFFFFFFFFFFB56EFFFFFFFFFFFFFFFFFFFFFF419EFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFCA9EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB1FECFFB5B8FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFAE020000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000FF1FFB5B8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D675E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3DF25B2E3E3E3E3E3E3E3E3DD47C6E3E3E3E3 E3E3E3E35A2EC85879A6E3E3E3E3E3A162E3E3E3E3E3E3E3E3E3E3E33A8DE3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B48DE3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D11DED FFE489FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFEF82FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFE4FA6FFFFFFFFFFFFFFFFFFA3B1FFFFFFFFFFFFFFFFE53D8CA7BEB0FFFF FFFFFF56D9FFFFFFFFFFFFFFFFFFFFEB50ACFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFC6A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB1FECFFE489FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFEF82FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4FA6FFFFFFFFFFFFFF FFFFA3B1FFFFFFFFFFFFFFFFE53D8CA7BEB0FFFFFFFFFF56D9FFFFFFFFFFFFFF FFFFFFEB50ACFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6A2FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFEB1FECFFE489FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71A00000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000FF1FFE489FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFED874E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E246 94E3E3E3E3E3E3E3E3E3919EE3E3E3E3E3E3E3E3CC367D95A99DE3E3E3E3E34D C1E3E3E3E3E3E3E3E3E3E3D14799E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3B090E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3D11DEDFFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF791E6 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87D87FFFFFFFFFFFFFFFFFFF985 FDFFFFFFFFFFFFFFFF88FFFFB2B1FFFFFFFF8A75FFFFFFFFFFFFFFFFFFFF9F9A 76B2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89EAFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFEB1FECFFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF791E6FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFF87D87FFFFFFFFFFFFFFFFFFF985FDFFFFFFFFFFFFFFFF88FFFF B2B1FFFFFFFF8A75FFFFFFFFFFFFFFFFFFFF9F9A76B2FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF89EAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB1FECFFDE8FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFF5E0000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000FF1FFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE681CDE3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3DD6F78E3E3E3E3E3E3E3E3E3DE76E1E3E3E3 E3E3E3E3E379E3E39E9EE3E3E3E37B68E3E3E3E3E3E3E3E3E3E38E89699EE3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E37AD0E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D11DED FFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFA1C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFC8B62FFFFFFFFFFFFFFFFFFFFACC0FFFFFFFFFFFFFFFF80FFFFB2B2FFFF FFE24AFEFFFFFFFFFFFFFFFFFFC3287755D9FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFF83F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB1FECFFDE8FFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFA1C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8B62FFFFFFFFFFFFFF FFFFFFACC0FFFFFFFFFFFFFFFF80FFFFB2B2FFFFFFE24AFEFFFFFFFFFFFFFFFF FFC3287755D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83F2FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFEB1FECFFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD02000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000FF1FFDE8FFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF690AFE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E07C 57E3E3E3E3E3E3E3E3E3E399ABE3E3E3E3E3E3E3E372E3E39E9EE3E3E3C942E2 E3E3E3E3E3E3E3E3E3AE246A4CC1E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E375D7E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3D11DEDFFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9ECA FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE4CE6FFFFFFFFFFFFFFFFFFF7 62E9FFFFFFFFFFFFFF81FFFFB6B3FFFFFF88C2FFFFFFFFFFFFFFFFFFFF649759 57FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84F0FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFEC1FECFFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9ECAFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFAE4CE6FFFFFFFFFFFFFFFFFFF762E9FFFFFFFFFFFFFF81FFFF B6B3FFFFFF88C2FFFFFFFFFFFFFFFFFFFF64975957FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF84F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC1FECFFDE8FFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF61900000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000FF1FFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8FB4E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E39B44CDE3E3E3E3E3E3E3E3E3DC57CFE3E3 E3E3E3E3E373E3E3A29FE3E3E379ADE3E3E3E3E3E3E3E3E3E359864F4DE3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E375D6E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D21DED FFDF8FFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFA2C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFB36EC5FFFFFFFFFFFFFFFFFFFF9D71FFFFFFFFFFFFFC75FFFFF864C8CC 8191FFFFFFFFFFFFFFFFFFFFBA74DA2D8AF8FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFD85F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE71DECFFDF8FFEFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFA2C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB36EC5FFFFFFFFFFFF FFFFFFFF9D71FFFFFFFFFFFFFC75FFFFF864C8CC8191FFFFFFFFFFFFFFFFFFFF BA74DA2D8AF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD85F1FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFE71DECFFDF8FFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000EF1FFDF8FFE FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF9AB1E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E39F 62AFE3E3E3E3E3E3E3E3E3E38C65E3E3E3E3E3E3E068E3E3DD59B2B67381E3E3 E3E3E3E3E3E3E3E3A667C2287BDDE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E176D6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3CE1BEDFFFC8FDEFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE98A FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD74FC5FFFFFFFFFFFFFFFFFFFF FA6182FFFFFFFFFFBA73FFFFFFCB7F80C2FFFFFFFFFFFFFFFFFFFFFF68DC971E 99FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9DFEFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF8507F1FFFC8FDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE98AFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFD74FC5FFFFFFFFFFFFFFFFFFFFFA6182FFFFFFFFFFBA73FFFF FFCB7F80C2FFFFFFFFFFFFFFFFFFFFFF68DC971E99FCFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFCE9DFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8507F1FFFC8FDEFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFAC01000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000013F2FFFC8FDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE27BE3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3BF46AFE3E3E3E3E3E3E3E3E3E3DF5674E3 E3E3E3E3A666E3E3E3B57172ADE3E3E3E3E3E3E3E3E3E3E35DC4861B88E0E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B78CE2E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E37608F1 FFFF8FDAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFF180FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF6D87FFFFFFFFFFFFFFFFFFFFFFFE85D2FFFFFFFFB3BCFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFE460FF424CBCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFCC9AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C62FEFFFF8FDAFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF180FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D87FFFFFFFFFFFF FFFFFFFFFFFE85D2FFFFFFFFB3BCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4 60FF424CBCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9AFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFF6C62FEFFFF8FDAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6190000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000075FEFFFF8FDA FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF275E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 6178E3E3E3E3E3E3E3E3E3E3E3E276BBE3E3E3E39FA7E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3CB55E33B44A7E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 B689E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E36064FEFFFF8EDCFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78F E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA45AEEFFFFFFFFFFFFFFFFFF FFFFFD7279F7FFD862F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF98EA3E55 F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9C1FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF7369FFFFFF8EDCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78FE7FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFEA45AEEFFFFFFFFFFFFFFFFFFFFFFFD7279F7FFD862F7FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF98EA3E55F5FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFA9C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7369FFFFFF8EDCFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF5A000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000007BFFFFFF8EDCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF889CEE3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E29250D4E3E3E3E3E3E3E3E3E3E3E3E165 6CDCE3C057DCE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E39C87D0374CDAE3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E396ACE3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3666BFF FFFF91D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFD8528DFFFFFFFFFFFFFFFFFFFFFFFFFD80539745C1FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFF6AD7C3219EFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFE78AFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54CA4FFFFFF91D9FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFA3C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8528DFFFFFFFFFF FFFFFFFFFFFFFFFD80539745C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A D7C3219EFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE78AFCFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF54CA4FFFFFF91D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB0100000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000007B1FFFFFF91D9 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFA4ABE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 C0497DE3E3E3E3E3E3E3E3E3E3E3E3E1724A863DACE3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E35EBFAE1D8DE1E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CE 7BE0E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3DA44A5FFFFFFD596FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7 8BFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A58FEFFFFFFFFFFFFFFFF FFFFFFFFFFE4D1E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE460FF5E2BB8 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1A2FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF E819F4FFFFFFD596FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE78BFEFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF4A58FEFFFFFFFFFFFFFFFFFFFFFFFFFFE4D1E7FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFE460FF5E2BB8FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFC1A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE819F4FFFFFFD596FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF51C0000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000FF8FFFFFFD596FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE97FE2E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3424EE2E3E3E3E3E3E3E3E3E3E3E3E3 E3CBBACEE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CB55E35426A4E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3AC90E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CE18F4FF FFFFE08BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98D1FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFA45AD1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFBE9CF2516DF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF88E6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE620EBFFFFFFE08BFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF98D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA45AD1FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE9C F2516DF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88E6FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFE620EBFFFFFFE08BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C00000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000011F0FFFFFFE08B FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF91BAE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E39250BAE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3A98BD74861D6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E379 CDE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3CD1EECFFFFFFDE8DFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF C2A7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF854A3FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88BC9923B3FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC89F8FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 7864FDFFFFFFDE8DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2A7FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF854A3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF88BC9923B3FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFEC89F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7864FDFFFFFFDE8DFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFAE0000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000072FDFFFFFFDE8DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC095E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DD4B91E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E379A7881F9FE3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3D27ADDE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E36B66FDFF FFFFFB91DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD86ECFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFAD52E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF6FFD5656F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFA5C4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A68FFFFFFFFFB91DFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFD86ECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD52E8FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6FFD 5656F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5C4FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF6A68FFFFFFFFFB91DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41B000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000007CFFFFFFFFFB91 DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFC7AD2E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E39A49CEE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E363E14D4DDBE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E393AE E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E35E6AFFFFFFFFFF8CDFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFC4A7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5798AFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF929A6BB6FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE98AFDFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6 4BA0FFFFFFFFFF8CDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4A7FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFF5798AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF929A6BB6FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFE98AFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64BA0FFFFFFFFFF8CDFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF5B00000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000007ADFFFFFFFFFF8CDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB895E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DA6C7BE3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E382895FA2E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3CF7BE1E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DB44A1FFFF FFFFFFB0BDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87EFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFA72AEEFFFFFFFFFFFFFFFFFFFFFFFFF4EFF4FAF3FAF3FFFFFF FFFFFFFFFFFFFFFFFFFF6F1E30F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFC2A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE15F3FFFFFFFFFFB0BDFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF87EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA72AEEFFFF FFFFFFFFFFFFFFFFFFFFF4EFF4FAF3FAF3FFFFFFFFFFFFFFFFFFFFFFFFFF6F1E 30F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2A4FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFEE15F3FFFFFFFFFFB0BDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000CF7FFFFFFFFFFB0 BDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF070E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E39525D4E3E3E3E3E3E3E3E3E3E3E3E3D9D5D9DFD8DFD8E3E3E3E3E3E3E3 E3E3E3E3E3E3631B2BDDE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3AD92E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3D414F3FFFFFFFFFFE588FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFD9ECDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5716CFBFFFFFFFFFF FFFFFFFFFFBC5C8A5A2E662E67BCFFFFFFFFFFFFFFFFFFFFFFFF6D39C1FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8CE7FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7 3FF3FFFFFFFFFFE588FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9ECDFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFF5716CFBFFFFFFFFFFFFFFFFFFFFBC5C8A5A2E662E 67BCFFFFFFFFFFFFFFFFFFFFFFFF6D39C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFF8CE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB73FF3FFFFFFFFFFE588FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF31B000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000003EF6FFFFFFFFFFE588FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC90B6 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DA6560DFE3E3E3E3E3E3E3E3E3 E3A7527B50295B295CA7E3E3E3E3E3E3E3E3E3E3E3E36133ACE3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E37DCEE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3A33FF3FFFF FFFFFFE08DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE88AFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFD76078FFFFFFFFFFFFFFFFFFFFD1666A6B4F384F34D1FFFF FFFFFFFFFFFFFFFFFFCF608EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF CD9CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6570FFFFFFFFFFFFE08DFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFE88AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD76078FF FFFFFFFFFFFFFFFFFFD1666A6B4F384F34D1FFFFFFFFFFFFFFFFFFFFFFCF608E FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD9CFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF6570FFFFFFFFFFFFE08DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF590000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000085FFFFFFFFFFFFE0 8DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFD87BE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3BF556BE3E3E3E3E3E3E3E3E3E3BA5B5E5F4632462EBAE3E3E3E3E3E3 E3E3E3E3E3B8557EE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B68BE3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E35A72FFFFFFFFFFFFFB90E1FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF9BCEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB35F9DFFFFFFFF FFFFFFFFFFFFFCCDFFFFE2FFDFFFFFFFFFFFFFFFFFFFFFFFF06578F7FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8AE7FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64D A0FFFFFFFFFFFFFB90E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9BCEFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFB35F9DFFFFFFFFFFFFFFFFFFFFFCCDFFFFE2FF DFFFFFFFFFFFFFFFFFFFFFFFF06578F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF8AE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64DA0FFFFFFFFFFFFFB90E1FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFAC000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000007ADFFFFFFFFFFFFFB90E1FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68A B7E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E39F558CE3E3E3E3E3E3E3E3 E3E3E0B6E3E3C9E3C6E3E3E3E3E3E3E3E3E3E3E3D65A6BDCE3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E37BCEE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DB45A1FFFFFF FFFFFFFF91DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE786FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF7653FBBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFEA892EC9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD 9AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFEE15F6FFFFFFFFFFFFFF91DAFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFE786FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7653F BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA892EC9FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD9AFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFEE15F6FFFFFFFFFFFFFF91DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21B00000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000CF9FFFFFFFFFFFFFF 91DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFED177E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3DC5A38A6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3D07A29B3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B689E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3D414F6FFFFFFFFFFFFFFD398FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFB8B1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9060E6FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA459D2FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFEC91ECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB93D F4FFFFFFFFFFFFFFD398FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8B1FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9060E6FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFA459D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFEC91ECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB93DF4FFFFFFFFFFFFFFD398FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFF570000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000003CF7FFFFFFFFFFFFFFD398FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED A49EE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DF8055CDE3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3924FBBE3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3D281D2E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3A53DF4FFFFFF FFFFFFFFEE8BF2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD86E8FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFF79554A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFEF616DCAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3BE FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF6176FFFFFFFFFFFFFFFFEE8BF2FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFD86E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7 9554A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF616DCAFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3BEFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFF6176FFFFFFFFFFFFFFFFEE8BF2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA700000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000008BFFFFFFFFFFFFFFFF EE8BF2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E177CEE3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3DC854B92E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3D55661B4E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E391A9E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E35678FFFFFFFFFFFFFFFFFF91D9FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFEE90EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79353A1 FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE66366C6FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFB5B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF326DA FFFFFFFFFFFFFFFFFF91D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE90EDFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79353A1FAFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFE66366C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFB5B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF326DAFFFFFFFFFFFFFFFFFF91D9FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFC40E00000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000009E0FFFFFFFFFFFFFFFFFF91D9FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 E4D480D3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DC834A8FDFE3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CD585BB0E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3A1A3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D823DBFFFFFFFF FFFFFFFFFFD299FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0A3FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF7796381E0FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFBB36C5FB5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB97FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFBA3AF8FFFFFFFFFFFFFFFFFFD299FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFC0A3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF7796381E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB36C5FB5FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB97FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFBA3AF8FFFFFFFFFFFFFFFFFFD299FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000003BFAFFFFFFFFFFFFFFFF FFD299FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E3AB91E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3DC6C5873C7E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DF9F 6055A1E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B586E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3A63AF8FFFFFFFFFFFFFFFFFFED8BF3FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFB5B2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF875 7D719FE1FAFFFFFFFFFFFFFFFFFFFFFFF5C0847578B7FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFE994ECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6276FF FFFFFFFFFFFFFFFFFFED8BF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5B2FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8757D719FE1FAFFFFFFFFFFFFFF FFFFFFFFF5C0847578B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 94ECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6276FFFFFFFFFFFFFFFFFFFFED8BF3 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF8A00000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000008AFFFFFFFFFFFFFFFFFFFFED8BF3FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F2E3E3A19EE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DD686F658EC8 DFE3E3E3E3E3E3E3E3E3E3E3DAAB75686BA3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3CF84D2E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E35778FFFFFFFFFF FFFFFFFFFFFF90DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2B5FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4936C7085B2ECF5F5F5F5F5F5F8C3A0 776B79C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB93EAFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF327D8FFFFFFFFFFFFFFFFFFFFFF90DAFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFB2B5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF4936C7085B2ECF5F5F5F5F5F5F8C3A0776B79C3FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFEB93EAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F327D8FFFFFFFFFFFFFFFFFFFFFF90DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC80E0000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000009DFFFFFFFFFFFFFFFFFFF FFFF90DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E4E3E39EA1E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3D9836064769ED2DADADADADADADDAE8E6A5F6CAE E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D183D0E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3D824D9FFFFFFFFFFFFFFFFFFFFFFD19AFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFE85E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFD8947E684C777777777777645A7389B8F4FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF84E6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC38F8FF FFFFFFFFFFFFFFFFFFFFD19AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE85E9FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8947E684C7777777777 77645A7389B8F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84E6 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC38F8FFFFFFFFFFFFFFFFFFFFFFD19A FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF2C000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000039FAFFFFFFFFFFFFFFFFFFFFFFD19AFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFE8E3E3E276CFE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3C084 705D446A6A6A6A6A6A5950667AA4D9E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E375CDE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3A738F8FFFFFFFFFF FFFFFFFFFFFFED87F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB93EAFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5CAB788888888888896CAD8 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3B5FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF6375FFFFFFFFFFFFFFFFFFFFFFFFED87F7FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFEB93EAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF5CAB788888888888896CAD8FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFB3B5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 6375FFFFFFFFFFFFFFFFFFFFFFFFED87F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D0000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000089FFFFFFFFFFFFFFFFFFFF FFFFED87F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E3E3E3D183D0E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DAB4A379797979797986B4C0E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E39FA1E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E35877FFFFFFFFFFFFFFFFFFFFFFFFFFA9BDFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFE990BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFEC96B5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF128D7FFFF FFFFFFFFFFFFFFFFFFFFFFA9BDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE990 BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC96B5FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF128D7FFFFFFFFFFFFFFFFFFFFFFFFFFA9 BDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFC90E0000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000008DDFFFFFFFFFFFFFFFFFFFFFFFFFFA9BDFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF9E4E3E3E3CF80A6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3D286A1E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D624D8FFFFFFFFFFFF FFFFFFFFFFFFFFEE89F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBA0B4FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB94C5FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFBC36F8FFFFFFFFFFFFFFFFFFFFFFFFFFEE89F3FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBA0B4FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFEB94C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC 36F8FFFFFFFFFFFFFFFFFFFFFFFFFFEE89F3FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A00 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000036FAFFFFFFFFFFFFFFFFFFFF FFFFFFEE89F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E3E3E3E3D18EA0E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D184AFE3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3A736F8FFFFFFFFFFFFFFFFFFFFFFFFFFFF91D9FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFB1B3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFE593E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F74FFFFFF FFFFFFFFFFFFFFFFFFFFFFFF91D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFB1B3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE593E9FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F74FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 91D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF8B0000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000088FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91D9FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF2E3E3E3E3E3E39E9FE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3CC83CFE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E35576FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFD39BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB084 EBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB782EEFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFEE2AD5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD39BFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB084EBFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFB782EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE2A D5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD39BFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC80D 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000DDCFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFD39BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E4E3E3E3E3E3E39D75D1E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3A374D4E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3D427D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8CE3FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE693E6FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFB5B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF815DFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFD8CE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFE693E6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5B0FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFF815DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FD8CE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2900000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000006DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8CE3FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFE7E3E3E3E3E3E3E3CD83CDE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3A1 9DE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3735FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFD19AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EC82B6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE683AEFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFEF23DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD19AFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC82B6FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFE683AEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF23DA FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD19AFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000AE2FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFD19AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E3E3E3E3E3E3E3E3D274A2E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3CD759BE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3D520DBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF87F8FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB081BEFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7 9C84EBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8722FCFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFEF87F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFB081BEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE79C84EBFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFF8722FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFEF87F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC70D000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000031FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF87F8FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFF9E4E3E3E3E3E3E3E3E3E39D73A9E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CE8B75D1E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E37824FCFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFA8C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFE79C82C0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFE89E85C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF315A3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8C1 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE79C82C0FCFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFE89E85C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF315A3FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8C1FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 2900000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000ACFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFA8C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E3E3E3E3E3E3E3E3E3E3CE 8B74ABE0E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3CE8D76AFE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3D813A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF86F8FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7A480A2E8FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC08482C5FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8921FDFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFEF86F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFE7A480A2E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC08482C5FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF8921FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFEF86F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0030FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF86F8FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF2E3E3E3E3E3E3E3E3E3E3E3E3CE927290CEE3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3AB7574AFE3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E37A23FDFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFA8C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFC6859BC1FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFECAE869DE9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF315A3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8 C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6859BC1 FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECAE869D E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF315A3FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8C1FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF C60C000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000ACFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFA8C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E4E3E3E3E3E3E3E3E3E3E3 E3E3E3E3B0768AACE0E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3D29B778CCFE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3D813A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE86F9FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2A380A3E9FD FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDC28484B6EBFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B1FFCFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE86F9FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFC2A380A3E9FDFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFDFDC28484B6EBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFF8B1FFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFEE86F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF280000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 2FFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE86F9FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFE7E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3AD917291CFE1E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E1E1AD7575A2D1E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E37C21FCFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFA7C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFC488808DB1B1B1C5FDFDFDFFFFFFFFFDFDFDEB B1B1B1A68080A3E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFF816A1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF A7C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFC488808DB1B1B1C5FDFDFDFFFFFFFFFDFDFDEBB1B1B1A68080A3E8FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF816A1FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7C2FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FF86000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFA7C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3AE79727D9E9E9EAFE1E1E1E3E3E3E3E1E1E1D19E9E9E94 727291CEE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3DD14A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE87F7FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ECB6B6B6A7808080A4B1B1A48080808CB6B6B6C6FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF625DFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE87F7FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECB6B6B6A7808080A4B1B1A4 8080808CB6B6B6C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF625DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFEE87F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC50B00000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000069 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE87F7FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF9E4E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D2A2A2A2 95727272929E9E927272727DA2A2A2B0E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3575EFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFCE9BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6B3B3C6FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFC51DDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFCE9BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFC6B3B3C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC51DDDFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9BFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFF270000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000027E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFCE9BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B09F9FB0E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3AF1EDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8AE3 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4699FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8AE3FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFE4699FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFC8AE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8500000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000A9FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8AE3FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFF2E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E23E9BFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFD69BF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF8C1FFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFD69BF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C1FFBFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD69BF9FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFC30B00000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000002EFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFD69BF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E4E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 7D21FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3 C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD21AD7FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3C2FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFD21AD7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFA3C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000006DEFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3C2FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFE8E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3BB18D8FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8BE5FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF4A73FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFC8BE5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A73FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8BE5FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF8B00000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000087FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFC8BE5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E342 75FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF CE99FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F21FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE99FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF6F21FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFCE99FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000002CFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE99FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFF6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E36322FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9FD0FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFCA1CDCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFC9FD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA1CDCFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9FD0FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFE81C000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000026DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFC9FD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE6E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B41DDC FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFEE82FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF817A1FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE82FAFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFF817A1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFEE82FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C0000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000A9FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE82FA FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFEBE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3DD14A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD39EF9FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 6C58FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFD39EF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C58FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD39EF9FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFAB000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000064FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFD39EF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E36059FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFA1BEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F0CDDFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1BEFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFF8F0CDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFA1BEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE71B00000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000022DFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1 BEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFCE6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E37F0EDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA0D0FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD51A D4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFAA0D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD51AD4FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA0D0FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFF4B0000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000006DBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA0D0FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBE3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3BE18D5FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFEE82FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF81B74FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE82FAFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF81B74FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFEE82FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA00000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000080FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EE82FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3DD1875FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD39CFAFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C59FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFD39CFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C59FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD39CFA FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFE51B00000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000065FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD39CFAFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE6E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3605AFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFCF9CFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF910CDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF9CFAFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 910CDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFCF9CFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000022E0FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFCF9CFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFEBE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3810EDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD9DFBFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA1CD2FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFCD9DFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA1CD2FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD 9DFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFA900000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000005DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD9DFBFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3C219D3FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFCD9BFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFDB1371FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD9BFBFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB13 71FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD9BFBFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE41A0000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000007DFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFCD9BFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFCE6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3C31172FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9CFBFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD146BFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFCE9CFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFDD146BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFCE9CFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF46000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000079FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9CFBFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBE3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3C5126DFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFCE9CFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFDD1470FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9C FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD1470FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9CFBFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA80000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000007CFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFCE9CFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFF5E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3C51271FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9CFBFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD1470FFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9CFBFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFDD1470FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFCE9CFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFE31A0000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 007CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9CFBFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE6E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3C51271FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFCC9EFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFDF166CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF CC9EFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF166CFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9EFCFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4400000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000079FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFCC9EFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFEAE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3C6146DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9EFB FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF166CFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9EFBFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFDF166CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFCC9EFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFA80000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000079 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9EFBFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3C6146DFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9CFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF87166DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFCC9CFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87166DFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9CFBFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE21C000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000079FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFCC9CFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFCE6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 78146EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC 9DFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C0CA1FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9DFDFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFF7C0CA1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFCC9DFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFF4700000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000001EA8FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9DFDFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBE3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E36E0EA2FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC99DFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF0780ED7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFCC99DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0780ED7FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC99DFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000001ED9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFCC99DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D66B10 D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFCE8BD2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF1B2AD8FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE8BD2FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFDF1B2AD8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFCE8BD2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFE21B000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000033D9FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE8BD2 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE6E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3C6182BD8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB949AFDFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E 1869FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFB949AFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E1869FEFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB949AFDFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF460000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000076FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFB949AFDFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFEBE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E37E156AFEFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFEC499E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFE048129FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC499E0FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFE048129FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFEC499E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFAA000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000001CA7FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE C499E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3C74013A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE8AD2FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C1A5FD8 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFCE8AD2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C1A5FD8FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE8AD2 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE11B00000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000006CD8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE8AD2FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E37D1760D8FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFB9596E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFE24C129DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9596E2FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE24C 129DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9596E2FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFF440000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000001CA5FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFB9596E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3C944139EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC58CBCFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18B1C5BD7FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFEC58CBCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFF18B1C5BD7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE C58CBCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC00000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00000069D8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC58CBCFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D67C195DD7FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFF9E9EE1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFCA21279EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E9E E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA21279EFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E9EE1FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFBB0600000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000031A5FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF9E9EE1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8 E4E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3B41D289FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB8497E4FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD4E0D6EFCFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB8497E4FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFCD4E0D6EFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFCB8497E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE28000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000B 76FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB8497E4FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B6450D6FFCFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFC48497E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFF2800D59D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFC48497E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2800D59D2FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC48497E3FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF7900000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000B67D4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFC48497E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F0E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D7 720D5BD2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2 8499E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4912125CFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC28499E5FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFF4912125CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFC28499E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0050000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000002BD1FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC28499E5FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E4E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3D9811D26CFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC38499E5FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4 91212498FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFC38499E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF491212498FBFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC38499E5FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFD28000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000002CA0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFC38499E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFE7E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D9811D2599 FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFC38498E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFF38F212498FBFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC38498E4FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF38F212498FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFC38498E4FFFFFFFFFFFFFFFFFFFFFFFFFFFF780000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000002CA0FCFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3 8498E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3D87F1D2599FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC2839CD6FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE493222294 F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFEC2839CD6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE493222294F9FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC2839C D6FFFFFFFFFFFFFFFFFFFFFFFFC0050000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000002B9DFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC2839CD6FFFFFFFFFFFFFFFFFFFFFF FFF8E4E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CB831E2395F9FFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFC7958AC4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFF4934F122296FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7958AC4FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4934F12 2296FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7958AC4FFFFFFFFFFFFFFFFFFFFFC2A00 0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000092B9EFBFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFC7958AC4FFFFFFFFFFFFFFFFFFFFFFE8E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3D98346112397FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBA0819ED6FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4CD6521227DCFFAFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFEBA0819ED6FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFF4CD6521227DCFFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFEBA0819ED6FFFFFFFFFFFFFFFF7A0000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 002B8CD2FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBA0819ED6FFFFFFFFFFFF FFFFF0E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D9B65A1D237FCFFAFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFE9C79387A0D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFF6E59565231A5193F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 C79387A0D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E59565231A5193F8FFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9C79387A0D9FFFFFFFFFFC304 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000014629BF9FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFE9C79387A0D9FFFFFFFFFFF8E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DBCC85 5A1F195394F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9C7 93879FD9E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFE7CF69221F217693F1FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9C793879FD9E8FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFE7CF69221F217693F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFE9C793879FD9E8FFFF2F00000000000000000000000000000000 00000000000000000000000000000000000000000000000000001429889BF4FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9C793879FD9 E8FFFFE8E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3CEB85D1E1E227894F1FFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9C993908C8CCCE5E5F5FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E591654F131A 5295F0F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFE9C993908C8CCCE5E5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFE7E591654F131A5295F0F8FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9C993908C8F4D 0000000000000000000000000000000000000000000000000000000000000000 0000000000000814649DF4F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFE9C993908C8CBECCCCDAE3E3E3E3E3E3E3E3E3 E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CECC815A4612195496F0F8 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFE0E0801F1F23696DCFE8ECF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFF6E8E8E8936952141F217275CCEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0E0801F1F2369 6DCFE8ECF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E8E8E8936952141F21 7275CCEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFE0E18512120000000000000000000000000000 00000000000000000000000000000000000712298484D0F2FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFE0E0811E1E1F5D61B8CED2DCE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DBCE CECE835D49131E227477CCEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEEE927252181F03 1A6969696969696969696969696969696969221F1F1F227275CDEEF7FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFEEEE927252181F031A6969696969696969696969 696969696969221F1F1F227275CDEEF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F2F29B8464121200000000000000000000000000000000000000001212122B84 84D1F2F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEEE937454171E03175D5D5D 5D5D5D5D5D5D5D5D5D5D5D5D5D5D1E1E1E1E237477CDEEF7FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFEFEE987C727272727272727272727272727272 727294EEEEEEF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFEFEE987C727272727272727272727272727272727294EEEEEEF8FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F29C8484848484848484 848484848484848484849CF2F2F2F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFEFEE987D747474747474747474747474747474747495EE EEEEF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF %%EndBinary grestore end % Image Trailer grestore grestore % EPS grestore ctsim-6.0.2/doc/ctsimfig5.eps0000644000175000017500000001267510667176710015046 0ustar kevinkevin%!PS-Adobe-2.0 EPSF-2.0 %%Title: ctsimfig5.eps %%Creator: fig2dev Version 3.2.3 Patchlevel %%CreationDate: Mon Jan 22 20:52:35 2001 %%For: kay@flay.here (Ian Kay) %%BoundingBox: 0 0 455 257 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 257 moveto 0 0 lineto 455 0 lineto 455 257 lineto closepath clip newpath % Fill background color 0 0 moveto 455 0 lineto 455 257 lineto 0 257 lineto closepath 1.00 1.00 1.00 setrgbcolor fill -25.0 411.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin %%Page: 1 1 10 setmiterlimit 0.06299 0.06299 sc /Palatino-BoldItalic ff 300.00 scf sf 4592 5053 m gs 1 -1 sc (l) col0 sh gr /Palatino-BoldItalic ff 210.00 scf sf 4686 5124 m gs 1 -1 sc (p) col0 sh gr % Polyline 7.500 slw gs clippath 4428 5496 m 4485 5496 l 4485 5349 l 4457 5464 l 4428 5349 l cp 4485 4323 m 4428 4323 l 4428 4469 l 4457 4355 l 4485 4469 l cp eoclip n 4457 4338 m 4457 5481 l gs col0 s gr gr % arrowhead n 4485 4469 m 4457 4355 l 4428 4469 l col0 s % arrowhead n 4428 5349 m 4457 5464 l 4485 5349 l col0 s % Polyline n 4471 4752 m 4557 4852 l 4505 4838 l 4600 4957 l gs col0 s gr /Palatino-BoldItalic ff 300.00 scf sf 3985 3042 m gs 1 -1 sc (l) col0 sh gr /Palatino-BoldItalic ff 210.00 scf sf 4078 3114 m gs 1 -1 sc (p) col0 sh gr % Polyline n 3599 2906 m 3685 2906 l 3720 3063 l 3756 2806 l 3970 2800 l gs col0 s gr /Palatino-BoldItalic ff 300.00 scf sf 3763 3049 m gs 1 -1 sc (2) col0 sh gr /Palatino-BoldItalic ff 300.00 scf sf 4242 3022 m gs 1 -1 sc (=f) col0 sh gr /Palatino-BoldItalic ff 210.00 scf sf 4527 3157 m gs 1 -1 sc (l) col0 sh gr /Palatino-BoldItalic ff 300.00 scf sf 3352 3041 m gs 1 -1 sc (2) col-1 sh gr % Polyline gs clippath 7420 3466 m 7351 3466 l 7351 3634 l 7386 3498 l 7420 3634 l cp eoclip n 7386 4405 m 7386 3481 l gs col0 s gr gr % arrowhead n 7420 3634 m 7386 3498 l 7351 3634 l col0 s % Polyline gs clippath 7362 6360 m 7431 6360 l 7431 6191 l 7397 6328 l 7362 6191 l cp eoclip n 7397 6345 m 7397 5684 l gs col0 s gr gr % arrowhead n 7362 6191 m 7397 6328 l 7431 6191 l col0 s /Palatino-BoldItalic ff 165.00 scf sf 7455 5432 m gs 1 -1 sc 90.0 rot (detectors) col0 sh gr % Arc n 4203.3 5006.3 3447.8 -136.3 -178.3 arcn gs col4 s gr % Arc [15 45] 45 sd n 4028.5 4909.6 3208.5 -25.3 24.6 arc gs col4 s gr [] 0 sd % Polyline [15 45] 45 sd n 4005 4894 m 4817 4890 l gs col0 s gr [] 0 sd % Polyline n 3419 4329 m 4562 4329 l 4562 5472 l 3419 5472 l cp gs col0 s gr % Polyline [15 45] 45 sd n 4812 4894 m 5625 4890 l gs col0 s gr [] 0 sd % Polyline n 2689 3598 m 3068 3148 l 3004 3312 l 3289 2969 l gs col0 s gr % Polyline n 1710 2617 m 3997 4905 l gs col-1 s gr % Polyline n 1009 3666 m 3997 4905 l gs col-1 s gr % Polyline [15 45] 45 sd n 757 4897 m 7237 3480 l gs col0 s gr [] 0 sd % Polyline n 762 4904 m 3997 4905 l gs col-1 s gr % Polyline n 3995 4897 m 7230 4898 l gs col-1 s gr % Polyline [15 45] 45 sd n 7230 3480 m 7230 6307 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 751 4904 m 7230 6307 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 3175 4905 m 3982 5718 l 4802 4905 l 3982 4091 l 3172 4901 l cp gs col0 s gr [] 0 sd /Palatino-BoldItalic ff 210.00 scf sf 664 5220 m gs 1 -1 sc 90.0 rot (source) col0 sh gr $F2psEnd rs ctsim-6.0.2/doc/ctsim.prj0000644000175000017500000000260210667176710014264 0ustar kevinkevin143 Patch Control 1 1 1 ctsim.tex 21 0 0 ctsim-algorithms.tex TeX 268439547 0 179 17 187 1 44 44 960 631 ctsim-concepts.tex TeX 268447738 0 302 40 280 44 110 110 1187 697 ctsim.tex TeX 402665466 0 50 12 33 1 22 22 1099 609 ctsim-install.tex TeX 268447738 0 70 62 71 1 110 110 1187 697 tex2rtf.ini DATA 273777330 0 0 1 26 8 22 22 938 609 ctsim-gui.tex TeX 268447738 0 145 21 144 1 176 176 1253 763 psbox.tex TeX 268439546 0 0 1 0 1 88 88 1004 675 ctsim-sgp.tex TeX 268439546 0 1 1 0 1 44 44 960 631 ctsim-appendix.tex TeX 268447738 0 0 1 0 2 44 44 1121 631 ctsim-textui.tex TeX 12282 0 38 45 38 46 198 198 1275 785 mytitle.sty DATA 273679026 0 9 1 8 22 66 66 1143 653 ctsim-web.tex TeX 268447739 0 24 50 0 60 88 88 1165 675 C:\Program Files\SecureCRT 3.0\download\ct.tex TeX 268439546 0 3 1 600 1 132 132 1048 719 texhelp.sty DATA 273679026 0 112 14 92 1 176 176 1253 763 makeidx.sty DATA 273679026 0 0 1 0 1 110 110 1187 697 verbatim.sty DATA 273679026 0 0 1 150 2 88 88 1165 675 mysober.sty DATA 273679026 0 0 1 153 1 22 22 1099 609 fancyhea.sty DATA 273679026 0 0 1 144 1 264 264 1341 851 ctsim-gui.aux DATA 273679026 0 0 1 0 1 154 154 1231 741 C:\Program Files\WinEdt\WinEdt.txt ASCII 273688506 0 0 1 936 20 0 0 1077 587 cut TeX 268447739 0 3 1 3 1 66 66 1143 653 *ctsim.tex > *psbox.tex > *psbjoin.aux < *ctsim-concepts *ctsim-gui *ctsim-textui *ctsim-web *ctsim-install *ctsim-algorithms *ctsim-sgp < ctsim-6.0.2/doc/alphacalc.eps0000644000175000017500000122535010667176710015061 0ustar kevinkevin%!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(TM) 7.0 %%AI8_CreatorVersion: 9.0 %%For: (Kevin Rosenberg) ( ) %%Title: (alphacalc.eps) %%CreationDate: 2/21/2001 12:57 PM %%BoundingBox: 131 279 490 504 %%HiResBoundingBox: 131.7148 279.0898 489.9043 503.4688 %%DocumentProcessColors: Cyan Magenta Yellow Black %%DocumentFonts: Symbol %%+ Times-Italic %%DocumentSuppliedFonts: Symbol %%+ Times-Italic %%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0 %%+ procset Adobe_typography_AI5 1.0 1 %%+ procset AGM_Gradient 1.0 0 %%+ procset Adobe_ColorImage_AI6 1.1 0 %%+ procset Adobe_Illustrator_AI5 1.3 0 %%+ procset Adobe_pattern_AI5 1.0 0 %%+ procset Adobe_cshow 2.0 8 %AI5_FileFormat 3.0 %AI3_ColorUsage: Color %AI3_IncludePlacedImages %AI7_ImageSettings: 1 %%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) %%+ Options: 1 16 0 1 0 1 0 0 0 0 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 %%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 () %AI3_TemplateBox: 306.5 395.5 306.5 395.5 %AI3_TileBox: 134 -263 720 503 %AI3_DocumentPreview: Header %AI5_ArtSize: 370 240 %AI5_RulerUnits: 2 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI5_OpenToView: -49 619 1.5 1345 943 18 0 1 11 68 1 0 %AI5_OpenViewLayers: 77 %%PageOrigin:134 -263 %%AI3_PaperRect:-13 779 599 -13 %%AI3_Margin:13 -13 -13 13 %AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 1 %AI7_Thumbnail: 128 80 8 %%BeginData: 5330 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD67FFA85227A8FD79FFA8522752A8FD79FF7D27527DFD79FFA827 %2752FD7AFF522727FD7AFF522727A8FD79FFA852277DA8FD78FFA852F852 %A8FD79FF7D2727FD045227275252527DA8FD6FFFA82727F82752A87DFD06 %FFA87D52272752A8FD69FF2727F827A8FD10FFA8522752FD64FF5227F827 %527DF827A8FD12FFA82727A8FD5EFF7D5227522752275252F827A8FD14FF %A82752FD5AFFA852277D7D277DFFA8FF27527D52FD17FFA8277DFD56FF7D %2752A8FF5252FD06FF27FF52FD19FF5252FD52FF7D27277DFFFFFF27A8FD %07FF27A8A852FD19FF7D27A8FD4DFFA852277DFD05FF27A8FD08FF7D7DFF %52FD1AFFA827A8FD4AFF522752FD06FFA8F8FD0B27F852FD1E277DFD46FF %7D2727A8FD07FFA8277DFD0BFF7D7DFF27FD1AFF7DFF27A8FD42FF7D5227 %7DA8FD09FF27FF52FD0BFFA827FF7D7DFD19FF52FFA827A8FD3EFFA85227 %52A8FD0BFF27FFFF7DFD0CFF52FFA852FD0CFF7DFD0CFF7DFFFFA852FD3C %FF7D27527DFD0DFF527DFFFF52FD0CFFA827FF52A8FD0AFF277D27A8FD0A %FF52FFFFFF527DFD38FFA827527DFD0FFFA852FFFFFF7DFD0DFF52A8A852 %FFFFFF5227FD04FFA852A87D52FD0AFF7DFD04FF27FD36FF522752FD12FF %27A8FFFFFF52FD0DFF7D7DFF52A8FFFF277DFFA852FF277DFF27FD0BFF52 %FD04FFA827FD32FF525252A8FD13FFA852FD04FF7DFD0EFF27FF7D7DFF7D %527DFF7D52A852FF527DA8FD0AFF7DFD05FF7D7DFD2EFF7D52277DA8FD15 %FF27FD05FF52FD0EFF7D7DFF27FF7D7DFF7DF8A852A8A87D52A8FD0AFF52 %FD05FFA827FD2BFFA852277DA8FD17FF7D7DFD05FF7DFD0FFF52FF7DA8FF %FFFF52527DFD10FF7DFD06FF52A8FD27FFA87D2752A8FD1AFF27A8FD05FF %52FD0FFF27A8A852FD16FF52FD06FFA827FD25FFA827527DFD1DFF52FD06 %FF7DFD10FF52FF52FD16FF7DFD07FF52FD22FFA8275252A8FD1EFF52A8FD %06FF52FD10FF27A8A852FD15FF52FD07FF7D7DFD1FFF522752A8FD21FF52 %FD07FF7DFD10FF7D7DFF52FD15FF7DFD08FF27FD1CFF7D52277DFD1CFFA8 %A8FD06FF27FD07FF52FD11FF27FF7D7DFD14FF52FD08FF27FD19FFA85227 %7DFD06FF52FFA8FD16FF527DFD05FF7DA8FD07FF7DFD11FF7DA8FF27FD14 %FF7DFD08FF7DA8FD15FFA8522752A8FFFFA852A87DFFA8275227A8FD13FF %A82727FD06FF52A8FD07FF52FD11FFA852FF7D7DFD13FF52FD08FFA852FD %13FF7D27527DFD05FF27A82727FF277DFF27A8FD14FF27FF52FD05FF27FD %08FF7DFD12FF52FFA852FD13FF7DFD09FF52FD10FFA82727527DFD07FFF8 %FF5252A827FF7D7DFD15FF27FF52FD05FF52FD08FF52FD12FFA852FF277D %52FD11FF52FD09FF27FD0EFF525252FFFFFF27FD07FFF8A82752F8FFA827 %27FD14FFA852FF27FD05FF27FD08FF7DFD13FF527D27F8A8FD11FF7DFD09 %FF52FD0BFF522727A8FD05FF52FD07FFA852A87D7DFFA87DA8FD13FF7D27 %FF7D52FD05FF52FD08FF52FD13FF7D7D52F87DFD11FF52FD09FF27FD08FF %A852277DFD07FF7D7DFD23FFA8FD09FF52FD08FF7DFD14FF27FF7DFD12FF %7DFD09FF27FD07FFF8F827FD0952F8FD2E5227527D5252527D5252277D52 %52527D5252527D5252527D5252527D525252277DFD13FF52FD09FF27FD07 %FFA8272752FD37FF52FD08FF7DFD29FF7DFD09FF52FD0AFF7D272752FD34 %FF27FD08FF52FD29FF52FD09FF27FD0CFFA87D2752A8FD31FF27FD08FF7D %FD29FF7DFD09FF52FD0FFFA852F852A8FD2EFF52FD08FF52FD29FF52FD09 %FF27FD12FFA852277DFD2CFF27FD08FF7DFD29FF7DFD09FF52FD15FF7D27 %277DFD29FF52A8FD07FF52FD29FF52FD08FFA852FD18FF522727A8FD26FF %7D7DFD07FF7DFD29FF7DFD08FF52A8FD1AFFA8272727A8FD24FF27FD07FF %52FD29FF52FD08FF27FD1EFFA8272752FD22FF52FD07FF7DFD29FF7DFD08 %FF27FD21FF7D27277DFD1FFF52A8FD06FF52FD29FF52FD07FF7D7DFD24FF %7D2752A8FD1DFF27FD06FF7DFD29FF7DFD07FF52FD27FFA852F852A8FD1A %FF27A8FD05FF52FD29FF52FD06FFA827FD2AFF7D52277DFD18FFA852FD05 %FF7DFD29FF7DFD06FF52FD2EFF5227277DFD16FFF8FD05FF52FD29FF52FD %05FFA827FD31FF522727A8FD13FFA827FD04FF7DFD29FF7DFD05FF27A8FD %34FF272727FD12FF527DFFFFFF52FD29FF52FD04FF7D27FD37FFA8272752 %FD10FF27FFFFFF7DFD29FF7DFD04FF27FD3AFFA87D27277DFD0DFF7D52FF %FF52FD29FF52FFFFFF27A8FD3DFFA8522752A8FD0BFF527DFF7DFD29FF7D %FFFF7D7DFD41FFA8522752A8FD09FF27A852FD29FF52FF7D27FD45FF7D52 %277DFD08FF2752FD29FF7DA827FD49FF522727A8FD06FFF8FD2927F827A8 %FD4CFF522727FD05FF277DFD26FF7D52FD50FFA8272752FFFFFF2752FD24 %FF2752FD54FF7D27277DFF5252A8FD20FFA8277DFD57FFA87D27277D2752 %FD1DFFA87D27FD5CFFA8522727277DFD1AFF52277DFD60FF7D52F82752FD %15FFA852277DFD65FF7D27F8277DFD0FFFA87D2752A8FD6AFF5227F82727 %5252A87DA87DA87D52525227527DFD70FF272752A87D7D52527DA8A8FD77 %FFA8272752FD7FFF7D27277DFD7EFFA87DF827A8FD7EFFA8522752A8FD7E %FF7D27F87DA8FD7EFF7D27277DFD7FFF522727A8FD7FFF272752FD7FFFA8 %272752FD10FFFF %%EndData %%EndComments %%BeginProlog %%BeginResource: procset Adobe_level2_AI5 1.2 0 %%Title: (Adobe Illustrator (R) Version 5.0 Level 2 Emulation) %%Version: 1.2 0 %%CreationDate: (04/10/93) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) userdict /Adobe_level2_AI5 26 dict dup begin put /packedarray where not { userdict begin /packedarray { array astore readonly } bind def /setpacking /pop load def /currentpacking false def end 0 } if pop userdict /defaultpacking currentpacking put true setpacking /initialize { Adobe_level2_AI5 begin } bind def /terminate { currentdict Adobe_level2_AI5 eq { end } if } bind def mark /setcustomcolor where not { /findcmykcustomcolor { (AI8_CMYK_CustomColor) 6 packedarray } bind def /findrgbcustomcolor { (AI8_RGB_CustomColor) 5 packedarray } bind def /setcustomcolor { exch aload pop dup (AI8_CMYK_CustomColor) eq { pop pop 4 { 4 index mul 4 1 roll } repeat 5 -1 roll pop setcmykcolor } { dup (AI8_RGB_CustomColor) eq { pop pop 3 { 1 exch sub 3 index mul 1 exch sub 3 1 roll } repeat 4 -1 roll pop setrgbcolor } { pop 4 { 4 index mul 4 1 roll } repeat 5 -1 roll pop setcmykcolor } ifelse } ifelse } def } if /setAIseparationgray { false setoverprint 0 setgray /setseparationgray where{ pop setseparationgray }{ /setcolorspace where{ pop [/Separation (All) /DeviceCMYK {dup dup dup}] setcolorspace 1 exch sub setcolor }{ setgray }ifelse }ifelse } def /gt38? mark {version cvr cvx exec} stopped {cleartomark true} {38 gt exch pop} ifelse def userdict /deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt put userdict /level2? systemdict /languagelevel known dup { pop systemdict /languagelevel get 2 ge } if put /level2ScreenFreq { begin 60 HalftoneType 1 eq { pop Frequency } if HalftoneType 2 eq { pop GrayFrequency } if HalftoneType 5 eq { pop Default level2ScreenFreq } if end } bind def userdict /currentScreenFreq level2? {currenthalftone level2ScreenFreq} {currentscreen pop pop} ifelse put level2? not { /setcmykcolor where not { /setcmykcolor { exch .11 mul add exch .59 mul add exch .3 mul add 1 exch sub setgray } def } if /currentcmykcolor where not { /currentcmykcolor { 0 0 0 1 currentgray sub } def } if /setoverprint where not { /setoverprint /pop load def } if /selectfont where not { /selectfont { exch findfont exch dup type /arraytype eq { makefont } { scalefont } ifelse setfont } bind def } if /cshow where not { /cshow { [ 0 0 5 -1 roll aload pop ] cvx bind forall } bind def } if } if cleartomark /anyColor? { add add add 0 ne } bind def /testColor { gsave setcmykcolor currentcmykcolor grestore } bind def /testCMYKColorThrough { testColor anyColor? } bind def userdict /composite? 1 0 0 0 testCMYKColorThrough 0 1 0 0 testCMYKColorThrough 0 0 1 0 testCMYKColorThrough 0 0 0 1 testCMYKColorThrough and and and put composite? not { userdict begin gsave /cyan? 1 0 0 0 testCMYKColorThrough def /magenta? 0 1 0 0 testCMYKColorThrough def /yellow? 0 0 1 0 testCMYKColorThrough def /black? 0 0 0 1 testCMYKColorThrough def grestore /isCMYKSep? cyan? magenta? yellow? black? or or or def /customColor? isCMYKSep? not def end } if end defaultpacking setpacking %%EndResource %%BeginResource: procset Adobe_typography_AI5 1.0 1 %%Title: (Typography Operators) %%Version: 1.0 1 %%CreationDate:(6/10/1996) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_typography_AI5 68 dict dup begin put /initialize { begin begin Adobe_typography_AI5 begin Adobe_typography_AI5 { dup xcheck { bind } if pop pop } forall end end end Adobe_typography_AI5 begin } def /terminate { currentdict Adobe_typography_AI5 eq { end } if } def /modifyEncoding { /_tempEncode exch ddef /_pntr 0 ddef { counttomark -1 roll dup type dup /marktype eq { pop pop exit } { /nametype eq { _tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll put } { /_pntr exch ddef } ifelse } ifelse } loop _tempEncode } def /havefont { systemdict /languagelevel known { /Font resourcestatus dup { exch pop exch pop } if } { systemdict /FontDirectory get 1 index known { pop true } { systemdict /fileposition known { dup length 6 add exch Ss 6 250 getinterval cvs pop Ss exch 0 exch getinterval status { pop pop pop pop true } { false } ifelse } { pop false } ifelse } ifelse } ifelse } def /TE { StandardEncoding 256 array copy modifyEncoding /_nativeEncoding exch def } def /subststring { exch 2 index exch search { exch pop exch dup () eq { pop exch concatstring } { 3 -1 roll exch concatstring concatstring } ifelse exch pop true } { pop pop false } ifelse } def /concatstring { 1 index length 1 index length 1 index add string dup 0 5 index putinterval dup 2 index 4 index putinterval 4 1 roll pop pop pop } def % /TZ { dup type /arraytype eq { /_wv exch def } { /_wv 0 def } ifelse /_useNativeEncoding exch def 2 index havefont { 3 index 255 string cvs dup (_Symbol_) eq { pop 2 index findfont } { 1 index 0 eq { dup length 1 sub 1 exch getinterval cvn findfont } { pop 2 index findfont } ifelse } ifelse } { dup 1 eq { 2 index 64 string cvs dup (-90pv-RKSJ-) (-83pv-RKSJ-) subststring { exch pop dup havefont { findfont false } { pop true } ifelse } { pop dup (-90ms-RKSJ-) (-Ext-RKSJ-) subststring { exch pop dup havefont { findfont false } { pop true } ifelse } { pop pop true } ifelse } ifelse { 1 index 1 eq { /Ryumin-Light-Ext-RKSJ-V havefont {/Ryumin-Light-Ext-RKSJ-V} {/Courier} ifelse } { /Ryumin-Light-83pv-RKSJ-H havefont {/Ryumin-Light-83pv-RKSJ-H} {/Courier} ifelse } ifelse findfont [1 0 0.5 1 0 0] makefont } if } { /Courier findfont } ifelse } ifelse _wv type /arraytype eq { _wv makeblendedfont } if dup length 10 add dict begin mark exch { 1 index /FID ne { def } if cleartomark mark } forall pop /FontScript exch def /FontDirection exch def /FontRequest exch def /FontName exch def counttomark 0 eq { 1 _useNativeEncoding eq { /Encoding _nativeEncoding def } if cleartomark } { /Encoding load 256 array copy modifyEncoding /Encoding exch def } ifelse FontName currentdict end definefont pop } def /tr { _ax _ay 3 2 roll } def /trj { _cx _cy _sp _ax _ay 6 5 roll } def /a0 { /Tx { dup currentpoint 3 2 roll tr _psf newpath moveto tr _ctm _pss } ddef /Tj { dup currentpoint 3 2 roll trj _pjsf newpath moveto trj _ctm _pjss } ddef } def /a1 { W B } def /e0 { /Tx { tr _psf } ddef /Tj { trj _pjsf } ddef } def /e1 { W F } def /i0 { /Tx { tr sp } ddef /Tj { trj jsp } ddef } def /i1 { W N } def /o0 { /Tx { tr sw rmoveto } ddef /Tj { trj swj rmoveto } ddef } def /r0 { /Tx { tr _ctm _pss } ddef /Tj { trj _ctm _pjss } ddef } def /r1 { W S } def /To { pop _ctm currentmatrix pop } def /TO { iTe _ctm setmatrix newpath } def /Tp { pop _tm astore pop _ctm setmatrix _tDict begin /W { } def /h { } def } def /TP { end iTm 0 0 moveto } def /Tr { _render 3 le { currentpoint newpath moveto } if dup 8 eq { pop 0 } { dup 9 eq { pop 1 } if } ifelse dup /_render exch ddef _renderStart exch get load exec } def /iTm { _ctm setmatrix _tm concat _shift aload pop _lineorientation 1 eq { exch } if translate _scale aload pop _lineorientation 1 eq _yokoorientation 1 eq or { exch } if scale } def /Tm { _tm astore pop iTm 0 0 moveto } def /Td { _mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto } def /iTe { _render -1 eq { } { _renderEnd _render get dup null ne { load exec } { pop } ifelse } ifelse /_render -1 ddef } def /Ta { pop } def /Tf { 1 index type /nametype eq { dup 0.75 mul 1 index 0.25 mul neg } if /_fontDescent exch ddef /_fontAscent exch ddef /_fontSize exch ddef /_fontRotateAdjust _fontAscent _fontDescent add 2 div neg ddef /_fontHeight _fontSize ddef findfont _fontSize scalefont setfont } def /Tl { pop neg 0 exch _leading astore pop } def /Tt { pop } def /TW { 3 npop } def /Tw { /_cx exch ddef } def /TC { 3 npop } def /Tc { /_ax exch ddef } def /Ts { 0 exch _shift astore pop currentpoint iTm moveto } def /Ti { 3 npop } def /Tz { count 1 eq { 100 } if 100 div exch 100 div exch _scale astore pop iTm } def /TA { pop } def /Tq { pop } def /Tg { pop } def /TG { pop } def /Tv { /_lineorientation exch ddef } def /TV { /_charorientation exch ddef } def /Ty { dup /_yokoorientation exch ddef 1 sub neg Tv } def /TY { pop } def /T~ { Tx } def /Th { pop pop pop pop pop } def /TX { pop } def /Tk { _fontSize mul 1000 div _lineorientation 0 eq { neg 0 } { 0 exch } ifelse rmoveto pop } def /TK { 2 npop } def /T* { _leading aload pop _lineorientation 0 ne { exch } if Td } def /T*- { _leading aload pop _lineorientation 0 ne { exch } if exch neg exch neg Td } def /T- { _ax neg 0 rmoveto _lineorientation 1 eq _charorientation 0 eq and { 1 TV _hyphen Tx 0 TV } { _hyphen Tx } ifelse } def /T+ { } def /TR { _ctm currentmatrix pop _tm astore pop iTm 0 0 moveto } def /TS { currentfont 3 1 roll /_Symbol_ findfont _fontSize scalefont setfont 0 eq { Tx } { Tj } ifelse setfont } def /Xb { pop pop } def /Tb /Xb load def /Xe { pop pop pop pop } def /Te /Xe load def /XB { } def /TB /XB load def currentdict readonly pop end setpacking % /X^ { currentfont 5 1 roll dup havefont { findfont _fontSize scalefont setfont } { pop exch } ifelse 2 index 0 eq { Tx } { Tj } ifelse pop pop setfont } def /T^ /X^ load def %%EndResource %%BeginResource: procset AGM_Gradient_Sep 1.0 0 %%Title: (AGM Gradient Procset) %%Version: 1.0 0 %%CreationDate: (4/26/96) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) userdict /defaultpacking currentpacking put true setpacking userdict /AGM_Gradient_Sep 5 dict dup begin put /AGM_Gradient_Sep_private 100 dict def /initialize{ AGM_Gradient_Sep begin AGM_Gradient_Sep_private begin _compositeJob{ initializeSinglePassSeps }{ initializeMultiPassSeps }ifelse initializeSeps AGM_Gradient_private begin /_fillSD newSpotDict def /_rampSD newSpotDict def /_nCustomColorSD nd end AGM_Gradient_Sep_private { dup xcheck 1 index type /arraytype eq and { bind }if pop pop }forall AGM_Gradient_Sep { dup xcheck 1 index type /arraytype eq and { bind }if pop pop }forall end currentdict readonly pop end }def /terminate{ currentdict AGM_Gradient_Sep eq{ end }if }def AGM_Gradient_Sep_private begin /initializeSeps{ /currentoverprint { _of } def _noImage not _level2PS not and{ /linealFill{ currentoverprint{ 0 0 1 1 rectfill }{ mySave 8 setImageParms _color{ _nCustomColorSD begin cyan magenta yellow black _spotColor{ spot1/tintImage spot1/tintValue get 1 exch sub makeByte8 put spot2/tintImage spot2/tintValue get 1 exch sub makeByte8 put }if end 4{ makeByte8 4 1 roll }repeat true 4 _nCustomColorSD ncolorimage }{ _nCustomColorSD/black get 1 exch sub makeByte8 _nCustomColorSD bwImage }ifelse myRestore }ifelse }def }if /_whiteBytes 1 makeByte8 pt /knockOut{ _noImage _level2PS or currentoverprint or{ gsave false setoverprint 1 setgray 0 0 1 1 rectfill grestore }{ 8 setImageParms _whiteBytes /_image load 5 execImage }ifelse }def /newSpotDict{ 11 dict dup begin /nSpots 2 def /spot1 7 dict def /spot2 7 dict def end }def /initSpotData { begin /name nd /tintImage nd /tintValue nd /spot_C nd /spot_M nd /spot_Y nd /spot_K nd end }def /initSpotDict{ begin /cyanInk nd /magentaInk nd /yellowInk nd /blackInk nd /cyan nd /magenta nd /yellow nd /black nd spot1 initSpotData spot2 initSpotData end }def /copySpotDict{ /_dst xp begin cyanInk magentaInk yellowInk blackInk cyan magenta yellow black spot1 spot2 end _dst begin /spot1 spot1 maxlength dict def /spot2 spot2 maxlength dict def spot2 copy pop spot1 copy pop /black xd /yellow xd /magenta xd /cyan xd /blackInk xd /yellowInk xd /magentaInk xd /cyanInk xd end }def /setCustomColor { 1 index /Black eq{ 6 1 roll 5 npop 1 exch sub setgray }{ 6 1 roll _ccAry1 astore exch dup null eq{ pop 0 }if setcustomcolor }ifelse }def /setCStop{ /_colorStyle exch pt _colorStyle 0 eq{ 0 0 0 4 -1 roll 1 exch sub _spotColor{ /_colorStyle 3 pt /Black 1 index 1 exch sub }if }if _colorStyle 2 eq{ 3 npop }if _rampSD _fillSD copySpotDict _colorStyle 4 eq{ pop 9 2 roll 3 npop 6 -2 roll } if _colorStyle 3 eq _colorStyle 4 eq or{ _fillSD begin /_spot1 spot1 pt /_spot2 spot2 pt end exch dup _spot1/name get eq{ _spot1 _spot2 }{ _spot2 _spot1 }ifelse begin begin /name xd 1 exch sub /tintValue xd 4{ tintValue mul 4 1 roll }repeat _spotColor not{ /tintValue null def }if end /tintValue 0 def end }if _fillSD nsetcustomcolor }def /renderCMYK{ spot1/name get null eq spot2/name get null eq and dup not{ pop spot1 spotConverted }if dup not{ pop spot2 spotConverted }if }def /currentInk{ true _inRipSep{ currentcolorspace 0 get dup /DeviceGray eq 1 index /DeviceCMYK eq or{ pop currentcmykcolor add add add 0 eq{ pop false }if }{ /Separation eq{ currentcolor 0 eq{ pop false }if }if }ifelse }{ currentgray 1 eq{ pop false }if }ifelse }def /currentInkN{ _nCustomColorSD begin /_spot1 spot1 pt /_spot2 spot2 pt renderCMYK end { currentInk }{ gsave _spot1 begin name null ne{ spot_C spot_M spot_Y spot_K name tintValue setCustomColor currentInk }{ false }ifelse end _spot2 begin name null ne{ spot_C spot_M spot_Y spot_K name tintValue setCustomColor currentInk }{ false }ifelse end grestore or } ifelse }def /fill_ /fill load def /fillOvp{ currentoverprint{ _inRipSep{ currentcolorspace 0 get dup /DeviceGray eq 1 index /DeviceCMYK eq or{ pop currentcmykcolor add add add 0 eq{ newpath }if }{ /Separation eq{ currentcolor 0 eq{ newpath }if }if }ifelse }{ currentgray 1 eq{ newpath }if }ifelse }if fill_ }def /fill{ _nCustomColorSD begin /_spot1 spot1 pt /_spot2 spot2 pt renderCMYK end { fillOvp }{ _spot1 begin gsave name null ne{ spot_C spot_M spot_Y spot_K name tintValue setCustomColor }{ 1 setgray }ifelse fillOvp grestore end _spot2 begin name null ne{ gsave true setoverprint spot_C spot_M spot_Y spot_K name tintValue setCustomColor fillOvp grestore }if end newpath }ifelse }def /expandSpot{ _spotColor{ /_len xp _rampSD begin spot1 begin tintImage null ne{ tintImage _len expandOne /tintImage xd }if end spot2 begin tintImage null ne{ tintImage _len expandOne /tintImage xd }if end end }{ pop }ifelse }def /rampImage{ currentoverprint{ rectImage }{ _enabledSmoothShade{ fillRamp }{ _color{ _rampSD begin /cyanInk _cyanData 0 ne def /magentaInk _magentaData 0 ne def /yellowInk _yellowData 0 ne def /blackInk _blackData 0 ne def end _nSamples setImageParms _nSamples expandSpot _cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor true 4 _rampSD ncolorimage }{ _rampSD begin /cyanInk false def /magentaInk false def /yellowInk false def /blackInk true def end _nSamples setImageParms _blackData _rampSD bwImage }ifelse }ifelse }ifelse }def /nsetcustomcolor where{ pop }{ /nsetcustomcolor { /_nCustomColorSD xp _nCustomColorSD begin 4 copy /black xd /yellow xd /magenta xd /cyan xd 4 copy 0 ne /blackInk xd 0 ne /yellowInk xd 0 ne /magentaInk xd 0 ne /cyanInk xd end setcmykcolor }def }ifelse /nsetcustomcolorend where{ pop }{ /nsetcustomcolorend { /_nCustomColorSD null pt }def }ifelse }def /initializeSinglePassSeps{ /_decodeNorm [0 1] pt /_decodeInvert [1 0] pt /spotConverted { begin name null eq{ false }{ tintValue null eq tintImage null eq and{ true }{ _inDistiller{ false }{ false currentpagedevice/SeparationColorNames get{name eq or}forall not }ifelse }ifelse }ifelse end }def /dictImage { 20 dict dup begin /Dict xd /Decode xd /DataSource xd /ImageMatrix xd /BitsPerComponent xd /Height xd /Width xd /ImageType 1 def Dict end /_image load 1 execImage }def /bwImage{ begin gsave currentoverprint{ blackInk{ [/Separation /Black /DeviceGray{}] setcolorspace _decodeInvert dictImage }{ 5 npop }ifelse }{ /DeviceGray setcolorspace _decodeNorm dictImage }ifelse grestore end }def /ncolorimage where{ pop }{ /ncolorimage{ begin renderCMYK{ cyanInk magentaInk and yellowInk and blackInk and not currentoverprint and{ pop pop gsave cyanInk{ 8 copy [/Separation /Cyan /DeviceGray{}] setcolorspace 3 npop _decodeNorm dictImage }if magentaInk{ 8 copy [/Separation /Magenta /DeviceGray{}] setcolorspace 4 -1 roll 3 npop _decodeNorm dictImage }if yellowInk{ 8 copy [/Separation /Yellow /DeviceGray{}] setcolorspace 4 -2 roll 3 npop _decodeNorm dictImage }if blackInk{ 4 -3 roll [/Separation /Black /DeviceGray{}] setcolorspace 3 npop _decodeNorm dictImage }{ 8 npop }ifelse grestore }{ /_colorimage load 10 execImage }ifelse }{ 6 npop gsave spot1 begin name null ne tintImage null ne and{ [/Separation name /DeviceGray{}] setcolorspace 4 copy tintImage name /Black eq{ _decodeNorm }{ _decodeInvert }ifelse dictImage }{ 1 setgray fill }ifelse end spot2 begin true setoverprint name null ne tintImage null ne and{ [/Separation name /DeviceGray{}] setcolorspace tintImage name /Black eq{ _decodeNorm }{ _decodeInvert }ifelse dictImage }{ 4 npop 1 setgray fill }ifelse end grestore }ifelse end }def }ifelse /getRampColorSpace{ /_renderCMYK _rampSD begin renderCMYK end pt _renderCMYK not{ _rampSD begin [/DeviceN [ spot1 begin name null ne tintImage null ne and{ name }if end spot2 begin name null ne tintImage null ne and{ name }if end ] _inDistiller { /DeviceCMYK [ spot1 begin name null ne tintImage null ne and{ spot_C spot_M spot_Y spot_K 1 }{ 0 0 0 0 0 }ifelse end spot2 begin name null ne tintImage null ne and{ spot_C spot_M spot_Y spot_K 2 }{ 0 0 0 0 0 }ifelse end 5 1 roll 6 -2 roll add dup 1 eq { pop 8 /index cvx 1 /exch cvx /sub cvx 9 1 /roll cvx }{ 2 eq { 8 /index cvx 1 /exch cvx /sub cvx 10 1 /roll cvx }if }ifelse 4 1 /roll cvx 5 -2 /roll cvx 8 /index cvx /mul cvx /exch cvx 9 /index cvx /mul cvx /add cvx 7 1 /roll cvx 3 1 /roll cvx 4 -2 /roll cvx 7 /index cvx /mul cvx /exch cvx 8 /index cvx /mul cvx /add cvx 6 1 /roll cvx 2 1 /roll cvx 3 -2 /roll cvx 6 /index cvx /mul cvx /exch cvx 7 /index cvx /mul cvx /add cvx 5 1 /roll cvx 5 /index cvx /mul cvx /exch cvx 6 /index cvx /mul cvx /add cvx 4 1 /roll cvx 6 -2 /roll cvx /pop cvx /pop cvx ] cvx bind }{ /DeviceCMYK {} }ifelse ] setcolorspace end /_nColorSpace currentcolorspace pt }if _nSamples 1 gt{ /_ndx 0 pt [blendColor] cvx exec }if _renderCMYK{ /_C0 [currentcolor] pt /_C0_Space currentcolorspace pt }{ /_C0 [ _nCustomColorSD begin spot1 begin name null ne{ tintValue }if end spot2 begin name null ne{ tintValue }if end end ] pt /_C0_Space _nColorSpace pt }ifelse _nSamples 1 gt{ /_ndx _nSamples 1 sub pt [blendColor] cvx exec }if _renderCMYK{ /_C1 [currentcolor] pt /_C1_Space currentcolorspace pt }{ /_C1 [ _nCustomColorSD begin spot1 begin name null ne{ tintValue }if end spot2 begin name null ne{ tintValue }if end end ] pt /_C1_Space _nColorSpace pt }ifelse /_rampColorSpace _C0_Space pt _spotColor{ nsetcustomcolorend }if }def }def /initializeMultiPassSeps{ /invertXfer{ [ { 1 exch sub }/exec load systemdict /currenttransfer get exec /exec load ] cvx systemdict /settransfer get exec }def /ccThrough{ gsave 1 setCustomColor currentcmykcolor grestore add add add 0 ne }def /spotConverted { begin _isCMYKSep not{ false }{ name null eq{ false }{ tintValue null eq tintImage null eq and{ true }{ spot_C spot_M spot_Y spot_K name ccThrough }ifelse }ifelse }ifelse end }def /spotChannel { _isCMYKSep{ pop false }{ /_spotDict xp _spotDict/name get null eq{ false }{ _spotDict/spot_C get _spotDict/spot_M get _spotDict/spot_Y get _spotDict/spot_K get _spotDict/name get ccThrough }ifelse }ifelse }def /getChannelData { _isCMYKSep dup{ pop renderCMYK }if { _blackPlate{ 4 1 roll 3 npop blackInk }{ _yellowPlate{ 4 2 roll 3 npop yellowInk }{ _magentaPlate{ 4 3 roll 3 npop magentaInk }{ 3 npop cyanInk }ifelse }ifelse }ifelse { true /nonZeroData }{ true /zeroData }ifelse }{ 4 npop spot1/name get null ne spot1 spotChannel and{ spot1/tintImage get dup null ne{ false /nonZeroData }{ pop false /noData }ifelse }{ spot2/name get null ne spot2 spotChannel and{ spot2/tintImage get dup null ne{ false /nonZeroData }{ pop false /noData }ifelse }{ false /noData }ifelse }ifelse }ifelse }def /renderChannelData { /_tmp xp _tmp /nonZeroData ne currentoverprint and{ pop _tmp /zeroData eq{pop}if 4 npop }{ _tmp /nonZeroData eq{ { invertXfer }if systemdict/image get 5 execImage }{ pop _tmp /zeroData eq{pop}if 4 npop knockOut }ifelse }ifelse }def /bwImage{ begin gsave dup dup dup getChannelData exch pop false exch renderChannelData grestore end }def /ncolorimage{ begin pop pop gsave spot2/name get null ne spot2 spotChannel and{ true setoverprint }if getChannelData renderChannelData grestore end }def /getRampColorSpace{ /_renderCMYK _rampSD begin renderCMYK end pt _nSamples 1 gt{ /_ndx 0 pt [blendColor] cvx exec }if _renderCMYK{ /_C0 [currentcolor] pt /_C0_Space currentcolorspace pt }{ /_C0 [ _nCustomColorSD begin 0 spot1 begin name null ne tintValue null ne and spot1 spotChannel and{ pop tintValue }if end spot2 begin name null ne tintValue null ne and spot2 spotChannel and{ pop tintValue }if end 1 exch sub end ] pt /_C0_Space /DeviceGray pt }ifelse _nSamples 1 gt{ /_ndx _nSamples 1 sub pt [blendColor] cvx exec }if _renderCMYK{ /_C1 [currentcolor] pt /_C1_Space currentcolorspace pt }{ /_C1 [ _nCustomColorSD begin 0 spot1 begin name null ne tintValue null ne and spot1 spotChannel and{ pop tintValue }if end spot2 begin name null ne tintValue null ne and spot2 spotChannel and{ pop tintValue }if end 1 exch sub end ] pt /_C1_Space /DeviceGray pt }ifelse /_rampColorSpace _C0_Space pt _spotColor{ nsetcustomcolorend }if }def }def end end defaultpacking setpacking %%EndResource %%BeginResource: procset AGM_Gradient 1.0 0 %%Title: (AGM Gradient Procset) %%Version: 1.0 0 %%CreationDate: (4/26/96) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) userdict /defaultpacking currentpacking put true setpacking userdict /AGM_Gradient 20 dict dup begin put /AGM_Gradient_private 201 dict def /initialize { AGM_Gradient begin AGM_Gradient_private begin initializeVars /bd systemdict/mark get def /ed _level2PS { (>>) }{ (counttomark 2 idiv dup dict begin {def} repeat pop currentdict end) } ifelse cvx def _level2PS{ initializeLev2 }{ initializeLev1 }ifelse queryDevice initializeRectFill initializeShading initializeOps _producingSeps{ AGM_Gradient_Sep/initialize get exec }{ initializeComposite }ifelse _illustrator{ /f{}def /F{}def /s{}def /S{}def /b{}def /B{}def }if /image where{ /image get /_image xd }if /colorimage where{ /colorimage get /_colorimage xd }if AGM_Gradient_private { dup xcheck 1 index type /arraytype eq and { bind }if pop pop }forall AGM_Gradient { dup xcheck 1 index type /arraytype eq and { bind }if pop pop }forall end currentdict readonly pop end }def /initializeAI { pop pop AGM_Gradient/AGM_Gradient_private get /_illustrator true put AGM_Gradient/initialize get exec AGM_Gradient begin }def /unload{ systemdict/languagelevel known{ systemdict/languagelevel get 2 ge{ userdict/AGM_Gradient_Sep 2 copy known{ undef }{ pop pop }ifelse userdict/AGM_Gradient 2 copy known{ undef }{ pop pop }ifelse }if }if }def /terminate{ currentdict AGM_Gradient eq{ end }if }def AGM_Gradient_private begin /initializeVars{ /_d255 256 array def 0 1 255{ _d255 exch dup 255 div put }bind for /_d255- 256 array def 0 1 255{ _d255- exch 1 _d255 2 index get sub put }bind for /_sSave nd /_dUserSpace matrix defaultmatrix def /_bUMatrix matrix def /_imageMatrix matrix def /_saveMatrix matrix def /_xm matrix def /_ccAry1 5 array def /_bbox 4 array pt /_level2PS systemdict/languagelevel known dup{ pop systemdict/languagelevel get 2 ge }if def /_level3PS _level2PS systemdict/shfill known and def currentdict /_illustrator known not{ /_illustrator false def }if }def /initializeOps { AGM_Gradient begin currentdict/Bc known not{ /Bc{ _renderFlag 2 eq _enabledSmoothShade or{ 6 npop }{ pushBSpace _rampIndex 0 eq{ pop pop setCStop }if linealFill popBSpace }ifelse }def }if currentdict/Bg known not{ /Bg{ 10 npop /_gradName xp /_renderFlag xp /_enabledSmoothShade false pt _renderFlag 2 ne{ _illustrator{ _of setoverprint }if /_enabledSmoothShade _level3PS{ _usingSmoothShade _producingSeps not currentoverprint not or and _noImage not and }{ false }ifelse pt _illustrator _eo and _renderFlag 3 eq or{ eoclip }{ clip }ifelse _gradNames _gradName 2 copy known{ get mark exch aload pop /_gradType xp 1 sub dup /_rampIndex xp /_maxRampIndex xp mark exch aload pop 0 0 }if pop pop getRampData }{ mark mark }ifelse }def }if currentdict/Bm known not{ /Bm{ _renderFlag 2 ne{ _gradType 0 eq{ linealRamp }{ radialGrad }ifelse }{ 6 npop }ifelse }def }if currentdict/Bh known not{ /Bh{ 2 npop /_yHi xp /_xHi xp /_radHilite _xHi 0 ne _yHi 0 ne or pt }def }if currentdict/Bn known not{ /Bn{ AGM_Gradient_private begin dict /_gradNames xp end }def }if currentdict/Bd known not{ /Bd{ AGM_Gradient begin AGM_Gradient_private begin /_nColorsBd xp /_gradType xp /_gradName xp }def }if currentdict/BD known not{ /BD{ currentdict/_gradNames known not{ /_gradNames 20 dict def }if ] _nColorsBd _gradType ] _gradName exch /_gradNames xput end end }def }if currentdict/Bb known not{ /Bb{ AGM_Gradient/AGM_Gradient_private get /_illustrator get not{ AGM_Gradient begin }if AGM_Gradient_private begin _producingSeps{ AGM_Gradient_Sep/AGM_Gradient_Sep_private get begin }if mySave }def }if currentdict/BB known not{ /BB{ /_tmp xp cleartomark cleartomark _tmp dup _renderFlag myRestore _producingSeps{ end }if _illustrator dup end not { end }if { 2 ne exch 0 gt and{ 2 eq{ s }{ S }ifelse }{ pop newpath }ifelse }{ pop newpath }ifelse }def }if currentdict/Xm known not{ /Xm{ _xm astore pop }def }if end }def /queryDevice{ /_inDistiller systemdict /currentdistillerparams known def /_inRipSep _level2PS{ currentpagedevice/Separations 2 copy known{ get }{ pop pop false }ifelse }{ false }ifelse _inDistiller or def /_noImage /lv1Fix where{ pop lv1Fix }{ false }ifelse def /_useShells where{ /_useShells get /_usingShells xp }{ /_usingShells false def }ifelse /_useSmoothShade where{ pop }{ /_useSmoothShade false def }ifelse /_forceToCMYK where{ pop }{ /_forceToCMYK false def }ifelse /_cyanPlate 1 0 0 0 testCMYKColorThrough def /_magentaPlate 0 1 0 0 testCMYKColorThrough def /_yellowPlate 0 0 1 0 testCMYKColorThrough def /_blackPlate 0 0 0 1 testCMYKColorThrough def /_compositeJob _cyanPlate _magentaPlate and _yellowPlate and _blackPlate and def /_isCMYKSep _cyanPlate _magentaPlate or _yellowPlate or _blackPlate or def /_compositeSpotDevice where{ pop }{ /_compositeSpotDevice _compositeJob not _inRipSep or{ 1 }{ 0 }ifelse def }ifelse /_producingSeps _compositeSpotDevice 0 ne def /_deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt def /_dpiThreshold where{ pop }{ /_dpiThreshold 600 def }ifelse /_screenFreqThreshold where{ pop }{ /_screenFreqThreshold 150 def }ifelse /_contoneDevice where{ pop }{ /_contoneDevice false def }ifelse /_subSampleOK _deviceDPI _dpiThreshold le currentScreenFreq _screenFreqThreshold le and _contoneDevice not and def }def /initializeRectFill{ /rectfill where dup{ exch pop not _producingSeps or }{ not }ifelse { /rectfill{ gsave newpath 4 2 roll moveto 1 index 0 rlineto 0 1 index rlineto 1 index neg 0 rlineto pop pop closepath fill grestore }def }if }def /initializeLev1{ /currentScreenFreq{ currentscreen pop pop }def /_byte 1 string def /colorimage where{ pop }{ /colorimage{ pop pop /_blackTmp xp /_yellowTmp xp /_magentaTmp xp /_cyanTmp xp /_cnt 0 pt [ _byte dup 0 _cyanTmp /_cnt cvx /get cvx _d255 /exch cvx /get cvx .3 /mul cvx _magentaTmp /_cnt cvx /get cvx _d255 /exch cvx /get cvx .59 /mul cvx _yellowTmp /_cnt cvx /get cvx _d255 /exch cvx /get cvx .11 /mul cvx _blackTmp /_cnt cvx /get cvx _d255 /exch cvx /get cvx /add cvx /add cvx /add cvx 1 /exch cvx /sub cvx /dup cvx 0 /lt cvx{ pop 0 }/if cvx /dup cvx 1 /gt cvx{ pop 1 }/if cvx 255 /mul cvx /cvi cvx 256 /mod cvx /dup cvx 0 /lt cvx{ pop 0 }/if cvx /put cvx /_cnt dup cvx 1 /add cvx /pt cvx ] cvx bind /_image load 5 execImage }def }ifelse }def /initializeLev2{ /level2ScreenFreq{ begin 60 HalftoneType 1 eq{ pop Frequency }if HalftoneType 2 eq{ pop GrayFrequency }if HalftoneType 5 eq{ pop Default level2ScreenFreq }if end }def /currentScreenFreq{ currenthalftone level2ScreenFreq }def }def /initializeShading{ _useSmoothShade _level3PS and{ /_usingSmoothShade true pt initializeLev3_Ops }{ /_usingSmoothShade false pt }ifelse }def /initializeLev3_Ops { /initShFill{ /_index _gradType 0 eq {0}{_maxRampIndex 1 sub} ifelse pt /_rampFuncsArray _maxRampIndex array pt /_boundsArray _maxRampIndex 1 sub array pt /_encodeArray _maxRampIndex 2 mul array pt /_beginCoord _rampPoint pt /_colorSpace null pt /_firstFill _rampIndex _maxRampIndex eq pt /_lastFill false pt }def /linealShFill{ popBSpace _xm aload pop pushBSpace /_size _index 1 add pt _size _maxRampIndex lt { /_rampFuncsArray _rampFuncsArray 0 _size getinterval pt /_boundsArray _boundsArray 0 _size 1 sub getinterval pt /_encodeArray _encodeArray 0 _size 2 mul getinterval pt }if bd /ShadingType 2 /ColorSpace _colorSpace _rgbInCMYK{ /Function [ _cData sampFunc _mData sampFunc _yData sampFunc _kData sampFunc ] }{ /Function bd /FunctionType 3 /Domain [0 1] /Functions _rampFuncsArray /Bounds _boundsArray /Encode _encodeArray ed }ifelse /Extend [_firstFill _lastFill] /Domain [0 1] /Coords [_beginCoord 0 _endCoord 0] ed shfill }def /radialShFill{ /_size _maxRampIndex _index sub pt _size _maxRampIndex lt { /_rampFuncsArray _rampFuncsArray _index _size getinterval pt /_boundsArray _boundsArray _index _size 1 sub getinterval pt /_encodeArray _encodeArray _index 2 mul _size 2 mul getinterval pt }if /_rampLen _beginCoord _endCoord sub pt bd /ShadingType 3 /ColorSpace _colorSpace _rgbInCMYK{ /Function [ _cData sampFunc _mData sampFunc _yData sampFunc _kData sampFunc ] }{ /Function bd /FunctionType 3 /Domain [0 1] /Functions _rampFuncsArray /Bounds _boundsArray /Encode _encodeArray ed }ifelse /Extend [_lastFill _firstFill] /Domain [0 1] /Coords [_xHi _rampLen mul _yHi _rampLen mul _endCoord 0 0 _beginCoord] ed shfill _radHilite{ _xHi _rampLen mul _yHi _rampLen mul translate }if }def % /sampFunc{ /_tmp exch pt bd _tmp length 1 eq { _tmp 0 get /_tmp 2 string pt dup _tmp 0 3 -1 roll put _tmp 1 3 -1 roll put }if /FunctionType 0 /Order 1 /Size [_tmp length] /Domain [0 1] /BitsPerSample 8 /DataSource _tmp /Range [0 1] ed }def /fillRamp{ /_invert _midPoint 0.5 lt pt _rampIndex _maxRampIndex eq { initShFill }if getRampColorSpace _colorSpace null eq{ /_colorSpace _rampColorSpace pt }{ _colorSpace _rampColorSpace ne _rgbInCMYK or{ /_index _index 1 _gradType 0 eq{ sub pt linealShFill }{ add pt radialShFill }ifelse initShFill /_colorSpace _rampColorSpace pt } if }ifelse /_endCoord _endPoint pt /_rgbInCMYK false pt _producingSeps _forceToCMYK or _rgbRamp and { _spotColor{ _renderCMYK }{ _isCMYKSep }ifelse }{ false }ifelse { _compositeJob{ /_rgbInCMYK true pt _cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor dup length string copy /_kData exch pt dup length string copy /_yData exch pt dup length string copy /_mData exch pt dup length string copy /_cData exch pt }{ _rampFuncsArray _index _cyanPlate{_cyanData}if _magentaPlate{_magentaData}if _yellowPlate{_yellowData}if _blackPlate{_blackData}if _nSamples expandOne sampFunc dup begin /Decode [1 0] def end put /_invert false pt }ifelse }{ _rampFuncsArray _index bd /FunctionType 2 /Domain [0 1] /N 0.5 log _invert{1 _midPoint sub}{_midPoint}ifelse log div _gradType 0 eq{ _invert{/C1}{/C0}ifelse _C0 _invert{/C0}{/C1}ifelse _C1 }{ _invert{/C0}{/C1}ifelse _C1 _invert{/C1}{/C0}ifelse _C0 }ifelse ed put }ifelse _rampIndex 1 ne{ _boundsArray _index _gradType 1 eq{1 sub}if _endCoord put } if 0 1 _invert {exch}if _encodeArray _index 2 mul 1 add 3 -1 roll put _encodeArray _index 2 mul 3 -1 roll put _rampIndex 1 eq { /_lastFill true pt _gradType 0 eq{ linealShFill }{ radialShFill }ifelse }if /_index _index 1 _gradType 0 eq{ add pt }{ sub pt }ifelse }def }def /initializeComposite{ /bwImage{ pop /_image load 5 execImage }def /rampImage{ _enabledSmoothShade{ fillRamp }{ _color{ _nSamples setImageParms _rgbRamp _forceToCMYK not and{ _redData _greenData _blueData _nSamples 3 expandColor true 3 null ncolorimage }{ _cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor true 4 null ncolorimage }ifelse }{ _nSamples setImageParms _blackData null bwImage }ifelse }ifelse }def /setCStop{ /_colorStyle exch pt _colorStyle 0 eq{ 1 exch sub 0 0 0 4 -1 roll }if _colorStyle 2 eq{ _forceToCMYK{ 3 npop setcmykcolor }{ setrgbcolor 4 npop }ifelse }if _colorStyle 3 eq{ 1 exch sub /_tmp xp pop 4{ _tmp mul 4 1 roll }repeat }if _colorStyle 4 eq{ _forceToCMYK{ 6 npop setcmykcolor }{ 3 -1 roll pop pop 1 exch sub /_tmp xp 3{ 1 exch sub _tmp mul 1 exch sub 3 1 roll }repeat setrgbcolor 4 npop }ifelse }if _colorStyle 2 ne _colorStyle 4 ne and{ null nsetcustomcolor }if }def /nsetcustomcolor { pop setcmykcolor }def /nsetcustomcolorend { }def /ncolorimage{ pop /_colorimage load 10 execImage }def _noImage not _level2PS not and{ /linealFill{ 8 setImageParms _color{ currentcmykcolor 4{ makeByte8 4 1 roll }repeat true 4 null ncolorimage }{ currentgray makeByte8 null bwImage }ifelse }def }if /getRampColorSpace{ _nSamples 1 gt{ /_ndx 0 pt [blendColor] cvx exec }if /_C0 [currentcolor] pt /_C0_Space currentcolorspace pt _nSamples 1 gt{ /_ndx _nSamples 1 sub pt [blendColor] cvx exec }if /_C1 [currentcolor] pt /_C1_Space currentcolorspace pt /_rampColorSpace _C0_Space pt _spotColor{ nsetcustomcolorend }if }def }def /npop{ {pop}repeat }def /xd{ exch def }def /nd{ null def }def /pt{ AGM_Gradient_private 3 1 roll put }def /xp{ exch pt }def /xput{ dup load dup length exch maxlength eq{ dup dup load dup length 2 mul dict copy def }if load begin def end }def /mySave{ save /_sSave xp }def /myRestore{ _sSave type /savetype eq{ _sSave restore }if }def /gMark{ counttomark 2 add -1 roll }def /execImage{ /_tmp xp { exec }stopped{ $error /errorname get /undefinedresult ne{ stop }{ _tmp npop }ifelse }if }def /pushBSpace{ newpath gsave _bUMatrix astore concat }def /popBSpace{ grestore }def /makeByte8{ /_tmp 0 pt 255 mul cvi 8 string 8{ dup _tmp 3 index put /_tmp _tmp 1 add pt }repeat exch pop }def /setImageParms{ 1 8 2 index 0 0 1 0 0 _imageMatrix astore }def /linealFill{ 0 0 1 1 rectfill }def /testCMYKColorThrough{ gsave setcmykcolor currentcmykcolor grestore add add add 0 ne }def /expandOne { /_tmp xp dup type /stringtype ne{ _tmp string exch dup 0 ne{ 255 mul cvi 0 1 _tmp 1 sub{ 3 copy exch put pop }for }if pop }if }def /expandColor{ /_channels xp /_len xp _channels{ _len expandOne _channels 1 roll }repeat }def /blendColor{ _color{ _rgbRamp _producingSeps not and _forceToCMYK not and{ _redData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _greenData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _blueData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if /setrgbcolor cvx }{ _cyanData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _magentaData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _yellowData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _blackData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _spotColor{ _rampSD begin /_rampSD cvx /begin cvx spot1 begin tintImage dup type /stringtype eq{ /_ndx cvx /get cvx _d255- /exch cvx /get cvx }{ dup null ne{ name type /nametype ne{ 1 exch sub }if }if }ifelse end /spot1 cvx /tintValue 3 -1 /roll cvx /put cvx spot2 begin tintImage dup type /stringtype eq{ /_ndx cvx /get cvx _d255- /exch cvx /get cvx }{ dup null ne{ name type /nametype ne{ 1 exch sub }if }if }ifelse end /spot2 cvx /tintValue 3 -1 /roll cvx /put cvx /end cvx end /_rampSD cvx /nsetcustomcolor cvx }{ /setcmykcolor cvx }ifelse }ifelse }{ _blackData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _enabledSmoothShade{ 1 /exch cvx /sub cvx 0 0 0 4 -1 /roll cvx /setcmykcolor cvx }{ /setgray cvx }ifelse }ifelse }def /useRectImage{ _subSampleOK _enabledSmoothShade not and{ { mark 0 1 dtransform atan cvi 90 mod 0 eq 1 0 dtransform atan cvi 90 mod 0 eq } stopped { cleartomark false } { and exch pop } ifelse }{ false }ifelse }def /linealImage{ _noImage{ rectImage }{ _producingSeps{ AGM_Gradient_Sep/AGM_Gradient_Sep_private get /rampImage get exec }{ useRectImage{ rectImage }{ rampImage }ifelse }ifelse }ifelse }def /linealRamp{ pushBSpace _ramp{ linealImage }{ linealFill }ifelse popBSpace /_rampIndex _rampIndex 1 sub pt _rampIndex 0 gt{ getRampData }if }def /radialGrad{ /_usingShells currentoverprint _producingSeps and _usingShells or pt /_firstShell true pt _enabledSmoothShade not{ currentoverprint _producingSeps and{ newpath clippath pathbbox 1 add 4 1 roll 1 add 4 1 roll 1 sub 4 1 roll 1 sub 4 1 roll _bbox astore pop newpath _bbox 0 get _bbox 1 get moveto _bbox 2 get _bbox 1 get lineto _bbox 2 get _bbox 3 get lineto _bbox 0 get _bbox 3 get lineto closepath 6 copy gsave _bUMatrix astore concat 1 0 moveto 0 0 1 0 360 arc closepath eoclip fill popBSpace }{ fill }ifelse }if pushBSpace _radHilite{ _xHi _yHi _bUMatrix idtransform /_yHi xp /_xHi xp _rampPoint 1 lt{ 1 _rampPoint sub dup _xHi mul exch _yHi mul translate }if }if _rampIndex{ radialRamp /_rampIndex _rampIndex 1 sub pt _rampIndex 0 gt{ getRampData }if }repeat popBSpace }def /getNSamples{ 0 exch { dup type /stringtype eq{ length exch pop exit }if pop }forall dup 0 eq{ pop 1 }if }def /getRampData{ /_rampType gMark pt /_color _rampType 0 gt pt /_ccRGB _rampType 5 eq _rampType 6 eq or pt /_rgbRamp _rampType 4 eq _ccRGB or pt /_ccProcess _rampType 2 eq _rampType 3 eq or pt _producingSeps{ _rampSD initSpotDict /_spotColor _ccProcess _ccRGB or pt }{ /_spotColor false pt }ifelse /_ramp true pt 100 div /_rampPoint xp 100 div /_midPoint xp dup /_colorStyle xp _colorStyle 0 eq{ 2 }{ _colorStyle 1 eq{ 5 }{ _colorStyle 2 eq{ 8 }{ _colorStyle 3 eq{ _producingSeps{ _rampSD /spot1 get begin /name 3 index def /spot_K 4 index def /spot_Y 5 index def /spot_M 6 index def /spot_C 7 index def end }if 7 }{ _producingSeps{ _rampSD/spot1 get begin /name 4 index def /spot_K 8 index def /spot_Y 9 index def /spot_M 10 index def /spot_C 11 index def end }if 11 } ifelse }ifelse }ifelse }ifelse /_tmp xp _tmp index 100 div /_endPoint xp _gradType 1 eq{ _tmp 1 add index 100 div /_midPoint xp }if _producingSeps{ _tmp 2 add index /_nextColorStyle xp _nextColorStyle 3 eq{ /_tmp _tmp 4 add pt _tmp index dup _rampSD/spot1 get /name get ne{ _rampSD /spot2 get begin /name xd /spot_K _tmp 2 add index def /spot_Y _tmp 3 add index def /spot_M _tmp 4 add index def /spot_C _tmp 5 add index def end }{ pop }ifelse }if _nextColorStyle 4 eq{ /_tmp _tmp 5 add pt _tmp index dup _rampSD/spot1 get /name get ne{ _rampSD /spot2 get begin /name xd /spot_K _tmp 5 add index def /spot_Y _tmp 6 add index def /spot_M _tmp 7 add index def /spot_C _tmp 8 add index def end }{ pop }ifelse }if }if _rampType 3 eq _rampType 6 eq or{ /_tint2Data gMark pt }if _ccProcess _ccRGB or{ /_tint1Data gMark pt }if _rgbRamp{ /_blueData gMark pt /_greenData gMark pt /_redData gMark pt }if _producingSeps{ _ccProcess _ccRGB or{ _rampType 3 eq _rampType 6 eq or{ _rampSD /spot2 get begin /tintImage _gradType 0 eq{ _tint2Data }{ _tint1Data }ifelse def name null eq{ /name /Black def }if end }if _rampSD /spot1 get begin /tintImage _gradType 0 eq _rampType 2 eq or _rampType 5 eq or{ _tint1Data }{ _tint2Data }ifelse def _rampType 2 eq _rampType 5 eq or{ name null eq{ /name _rampSD/spot2 get /name get def /spot_C _rampSD/spot2 get /spot_C get def /spot_M _rampSD/spot2 get /spot_M get def /spot_Y _rampSD/spot2 get /spot_Y get def /spot_K _rampSD/spot2 get /spot_K get def _rampSD/spot2 get /name null put }if }{ name null eq{ /name /Black def }if }ifelse end }if }if /_blackData gMark pt _rampType 0 gt{ counttomark 4 add -3 roll /_yellowData xp /_magentaData xp /_cyanData xp }if _ramp{ /_nSamples [ _rampType 0 eq {_blackData}if _rampType 1 eq {_cyanData _magentaData _yellowData _blackData}if _rampType 2 eq {_cyanData _magentaData _yellowData _blackData _tint1Data}if _rampType 3 eq {_cyanData _magentaData _yellowData _blackData _tint1Data _tint2Data}if _rampType 4 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData}if _rampType 5 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData _tint1Data}if _rampType 6 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData _tint1Data _tint2Data}if ] getNSamples pt _enabledSmoothShade not {/_ramp _nSamples 1 gt pt} if } if setCStop }def /rectImage{ gsave /_sInc 1 pt /_bInc 1 _nSamples div pt /_nSubSamples _nSamples pt /_optimize false pt _subSampleOK{ /_uRampLen 1 0 dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt pt /_pChange _uRampLen 0 eq{0}{_nSamples _uRampLen div}ifelse pt _pChange .5 gt dup /_optimize xp{ /_nSubSamples _uRampLen 2 div round cvi dup 1 le{pop 2}if pt /_bInc 1 _nSubSamples div pt /_sInc _nSamples 1 sub _nSubSamples 1 sub div pt }if }if 0 _nSubSamples [ /dup cvx _optimize { /round cvx /cvi cvx } if /_ndx /exch cvx /pt cvx blendColor 0 0 _bInc 1 /rectfill cvx _bInc 0 /translate cvx _sInc /add cvx ] cvx bind repeat pop _spotColor{ nsetcustomcolorend }if grestore }def /radialInit{ /_nRadSamples _nSamples dup 0 eq{pop 1}if pt /_sInc -1 pt /_rampLen _rampPoint _endPoint sub pt /_bInc _rampLen _nSamples div neg pt /_optimize false pt _subSampleOK{ /_uRampLen _rampLen 0 dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt 0 _rampLen dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt 2 copy lt{ exch }if pop pt /_pChange _uRampLen 0 eq{ 0 }{ _nSamples _uRampLen div }ifelse pt _pChange .5 gt dup /_optimize xp{ /_nRadSamples _uRampLen 2 div round cvi dup 1 le{pop 2}if pt /_bInc _rampLen _nRadSamples div neg pt /_sInc _nSamples 1 sub _nRadSamples 1 sub div neg pt }if }if _radHilite{ /_xBCInc _xHi _rampLen mul _nRadSamples div pt /_yBCInc _yHi _rampLen mul _nRadSamples div pt }if }def /radialRamp{ _enabledSmoothShade{ fillRamp }{ /_saveMatrix _saveMatrix currentmatrix def radialInit % % true _producingSeps _rgbRamp not and{ _nSamples 1 gt{ pop /_ndx 0 pt [blendColor] cvx exec currentInkN /_ndx _nSamples 1 sub pt [blendColor] cvx exec currentInkN or }if }if { _rampPoint _nSamples 1 sub _nRadSamples [ /dup cvx _optimize{ /round cvx /cvi cvx }if /_ndx /exch cvx /pt cvx _usingShells{ /_firstShell cvx{ /_firstShell false pt }{ 0 0 3 index 360 0 arcn fill }/ifelse cvx }if blendColor _usingShells{ 0 0 3 /index cvx 0 360 /arc cvx }{ 0 0 3 /index cvx 0 360 /arc cvx /fill cvx }ifelse /exch cvx _bInc /add cvx /exch cvx _sInc /add cvx _radHilite{ _xBCInc _yBCInc /translate cvx }if ] cvx bind repeat pop pop }{ _usingShells{ 0 0 _rampPoint 360 0 arcn fill }if }ifelse _saveMatrix setmatrix _radHilite{ _xHi _rampLen mul _yHi _rampLen mul translate }if _usingShells _rampIndex 1 eq and{ fill }if _spotColor{ nsetcustomcolorend }if }ifelse }def end end defaultpacking setpacking %%EndResource %%BeginProcSet: Adobe_ColorImage_AI6 1.2 0 userdict /Adobe_ColorImage_AI6 known not { userdict /Adobe_ColorImage_AI6 50 dict put } if userdict /Adobe_ColorImage_AI6 get begin /initialize { Adobe_ColorImage_AI6 begin Adobe_ColorImage_AI6 { dup type /arraytype eq { dup xcheck { bind } if } if pop pop } forall } def /terminate { end } def currentdict /Adobe_ColorImage_AI6_Vars known not { /Adobe_ColorImage_AI6_Vars 40 dict def } if Adobe_ColorImage_AI6_Vars begin /plateindex -1 def /_newproc null def /_proc1 null def /_proc2 null def /channelcount 0 def /sourcecount 0 def /sourcearray 4 array def /_ptispace null def /_ptiname null def /_pti0 0 def /_pti1 0 def /_ptiproc null def /_ptiscale 0 def /_pticomps 0 def /_ptibuf 0 string def /_gtigray 0 def /_cticmyk null def /_rtirgb null def /XIEnable true def /XIType 0 def /XIEncoding 0 def /XICompression 0 def /XIChannelCount 0 def /XIBitsPerPixel 0 def /XIImageHeight 0 def /XIImageWidth 0 def /XIImageMatrix null def /XIRowBytes 0 def /XIFile null def /XIBuffer1 null def /XIBuffer2 null def /XIDataProc null def /XIVersion 6 def /XIColorSpace /DeviceGray def /XIColorValues 0 def end currentdict /_colorimage known not { /colorimage where { /colorimage get /_colorimage exch def }{ /_colorimage null def } ifelse } if /_image systemdict /image get def /_currenttransfer systemdict /currenttransfer get def /FourEqual { 4 index ne { pop pop pop false }{ 4 index ne { pop pop false }{ 4 index ne { pop false }{ 4 index eq } ifelse } ifelse } ifelse } def /TestPlateIndex { Adobe_ColorImage_AI6_Vars begin /plateindex -1 def /setcmykcolor where { pop gsave 1 0 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub 0 1 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub 0 0 1 0 setcmykcolor systemdict /currentgray get exec 1 exch sub 0 0 0 1 setcmykcolor systemdict /currentgray get exec 1 exch sub grestore 1 0 0 0 FourEqual { /plateindex 0 def }{ 0 1 0 0 FourEqual { /plateindex 1 def }{ 0 0 1 0 FourEqual { /plateindex 2 def }{ 0 0 0 1 FourEqual { /plateindex 3 def }{ 0 0 0 0 FourEqual { /plateindex 5 def } if } ifelse } ifelse } ifelse } ifelse pop pop pop pop } if plateindex end } def /concatprocs { /packedarray where { pop dup type /packedarraytype eq 2 index type /packedarraytype eq or }{ false } ifelse { /_proc2 exch cvlit def /_proc1 exch cvlit def _proc1 aload pop _proc2 aload pop _proc1 length _proc2 length add packedarray cvx }{ /_proc2 exch cvlit def /_proc1 exch cvlit def /_newproc _proc1 length _proc2 length add array def _newproc 0 _proc1 putinterval _newproc _proc1 length _proc2 putinterval _newproc cvx } ifelse } def /clrspaceissepn { type /arraytype eq } def /clrspacegetname { dup clrspaceissepn {dup length 2 sub get}{pop ()} ifelse } def /clrspacegetalt { aload pop pop pop colormake } def /clrspacegetcomps { dup /DeviceGray eq { pop 1 }{ dup /DeviceRGB eq { pop 3 }{ /DeviceCMYK eq { 4 }{ 1 } ifelse } ifelse } ifelse } def /clrspacemarksplate { dup /DeviceGray eq { pop plateindex 3 eq }{ dup /DeviceRGB eq { pop plateindex 5 ne }{ dup /DeviceCMYK eq { pop plateindex 5 ne }{ /findcmykcustomcolor where { pop dup length 2 sub get 0.1 0.1 0.1 0.1 5 -1 roll findcmykcustomcolor 1 setcustomcolor systemdict /currentgray get exec 1 ne }{ pop plateindex 5 ne } ifelse } ifelse } ifelse } ifelse } def /colormake { dup clrspacegetcomps exch 1 index 2 add 1 roll dup 1 eq {pop}{array astore} ifelse exch } def /colorexpand { dup clrspacegetname exch dup clrspaceissepn { clrspacegetalt exch 4 1 roll }{ 1 3 1 roll } ifelse } def /colortint { dup /DeviceGray eq { 3 1 roll 1 exch sub mul 1 exch sub exch }{ dup /DeviceRGB eq { 3 1 roll {1 exch sub 1 index mul 1 exch sub exch} forall pop 3 array astore exch }{ dup /DeviceCMYK eq { 3 1 roll {1 index mul exch} forall pop 4 array astore exch }{ 3 1 roll mul exch } ifelse } ifelse } ifelse } def /colortocmyk { dup /DeviceGray eq { pop 1 exch sub 0 0 0 4 -1 roll 4 array astore }{ dup /DeviceRGB eq { pop aload pop _rgbtocmyk 4 array astore }{ dup /DeviceCMYK eq { pop }{ clrspacegetalt colortint colortocmyk } ifelse } ifelse } ifelse } def /makeimagedict { 7 dict begin /ImageType 1 def /Decode exch def /DataSource exch def /ImageMatrix exch def /BitsPerComponent exch def /Height exch def /Width exch def currentdict end } def /stringinvert { 0 1 2 index length 1 sub { dup 2 index exch get 255 exch sub 2 index 3 1 roll put } for } def /stringknockout { 0 1 2 index length 1 sub { 255 2 index 3 1 roll put } for } def /stringapply { 0 1 4 index length 1 sub { dup 4 index exch get 3 index 3 1 roll 3 index exec } for pop exch pop } def /WalkRGBString { 0 3 index dup length 1 sub 0 3 3 -1 roll { 3 getinterval {} forall 5 index exec 3 index } for 5 {pop} repeat } def /WalkCMYKString { 0 3 index dup length 1 sub 0 4 3 -1 roll { 4 getinterval {} forall 6 index exec 3 index } for 5 { pop } repeat } def /StuffRGBIntoGrayString { .11 mul exch .59 mul add exch .3 mul add cvi 3 copy put pop 1 add } def /StuffCMYKIntoGrayString { exch .11 mul add exch .59 mul add exch .3 mul add dup 255 gt { pop 255 } if 255 exch sub cvi 3 copy put pop 1 add } def /RGBToGrayImageProc { Adobe_ColorImage_AI6_Vars begin sourcearray 0 get exec dup length 3 idiv string dup 3 1 roll /StuffRGBIntoGrayString load exch WalkRGBString end } def /CMYKToGrayImageProc { Adobe_ColorImage_AI6_Vars begin sourcearray 0 get exec dup length 4 idiv string dup 3 1 roll /StuffCMYKIntoGrayString load exch WalkCMYKString end } def /SeparateCMYKImageProc { Adobe_ColorImage_AI6_Vars begin sourcecount 0 ne { sourcearray plateindex get exec }{ sourcearray 0 get exec dup length 4 idiv string 0 2 index plateindex 4 2 index length 1 sub { get 255 exch sub 3 copy put pop 1 add 2 index } for pop pop exch pop } ifelse end } def /ColorImageCompositeEmulator { pop true eq { Adobe_ColorImage_AI6_Vars /sourcecount get 5 add { pop } repeat }{ Adobe_ColorImage_AI6_Vars /channelcount get 1 ne { Adobe_ColorImage_AI6_Vars begin sourcearray 0 3 -1 roll put channelcount 3 eq {/RGBToGrayImageProc}{/CMYKToGrayImageProc} ifelse load end } if image } ifelse } def /colorimage { Adobe_ColorImage_AI6_Vars begin /channelcount 1 index def /sourcecount 2 index 1 eq { channelcount 1 sub } { 0 } ifelse def 4 sourcecount add index end dup 8 eq exch 1 eq or not { /_colorimage load null ne { _colorimage }{ Adobe_ColorImage_AI6_Vars /sourcecount get 7 add { pop } repeat } ifelse }{ dup 3 eq TestPlateIndex dup -1 eq exch 5 eq or or { /_colorimage load null eq { ColorImageCompositeEmulator }{ dup 1 eq { pop pop image }{ Adobe_ColorImage_AI6_Vars /plateindex get 5 eq { gsave 0 _currenttransfer exec 1 _currenttransfer exec eq { 0 _currenttransfer exec 0.5 lt } { 0 _currenttransfer exec 1 _currenttransfer exec gt } ifelse { { pop 0 } } { { pop 1 } } ifelse systemdict /settransfer get exec } if _colorimage Adobe_ColorImage_AI6_Vars /plateindex get 5 eq { grestore } if } ifelse } ifelse }{ dup 1 eq { pop pop image }{ pop pop Adobe_ColorImage_AI6_Vars begin sourcecount -1 0 { exch sourcearray 3 1 roll put } for /SeparateCMYKImageProc load end systemdict /image get exec } ifelse } ifelse } ifelse } def /proctintimage { /_ptispace exch store /_ptiname exch store /_pti1 exch store /_pti0 exch store /_ptiproc exch store /_pticomps _ptispace clrspacegetcomps store /_ptiscale _pti1 _pti0 sub store level2? { _ptiname length 0 gt version cvr 2012 ge and { [/Separation _ptiname _ptispace {_ptiproc}] setcolorspace [_pti0 _pti1] makeimagedict _image }{ [/Indexed _ptispace 255 {255 div _ptiscale mul _pti0 add _ptiproc}] setcolorspace [0 255] makeimagedict _image } ifelse }{ _pticomps 1 eq { { dup { 255 div _ptiscale mul _pti0 add _ptiproc 255 mul cvi put } stringapply } concatprocs _image }{ { dup length _pticomps mul dup _ptibuf length ne {/_ptibuf exch string store}{pop} ifelse _ptibuf { exch _pticomps mul exch 255 div _ptiscale mul _pti0 add _ptiproc _pticomps 2 add -2 roll _pticomps 1 sub -1 0 { 1 index add 2 index exch 5 -1 roll 255 mul cvi put } for pop pop } stringapply } concatprocs false _pticomps /_colorimage load null eq {7 {pop} repeat}{_colorimage} ifelse } ifelse } ifelse } def /graytintimage { /_gtigray 5 -1 roll store {1 _gtigray sub mul 1 exch sub} 4 1 roll /DeviceGray proctintimage } def /cmyktintimage { /_cticmyk 5 -1 roll store {_cticmyk {1 index mul exch} forall pop} 4 1 roll /DeviceCMYK proctintimage } def /rgbtintimage { /_rtirgb 5 -1 roll store {_rtirgb {1 exch sub 1 index mul 1 exch sub exch} forall pop} 4 1 roll /DeviceRGB proctintimage } def /tintimage { TestPlateIndex -1 eq { colorexpand 3 -1 roll 5 -1 roll {0}{0 exch} ifelse 4 2 roll dup /DeviceGray eq { pop graytintimage }{ dup /DeviceRGB eq { pop rgbtintimage }{ pop cmyktintimage } ifelse } ifelse }{ dup clrspacemarksplate { plateindex 5 lt { colortocmyk plateindex get 1 exch sub exch {1 0}{0 1} ifelse () graytintimage }{ pop exch {0}{0 exch} ifelse 0 3 1 roll () graytintimage } ifelse }{ pop pop pop {pop 1} 0 1 () /DeviceGray proctintimage } ifelse } ifelse } def /XINullImage { } def /XIImageMask { XIImageWidth XIImageHeight false [XIImageWidth 0 0 XIImageHeight neg 0 0] /XIDataProc load imagemask } def /XIImageTint { 0 setgray XIImageWidth XIImageHeight XIBitsPerPixel [XIImageWidth 0 0 XIImageHeight neg 0 0] /XIDataProc load XIType 3 eq XIColorValues XIColorSpace tintimage } def /XIImage { 0 setgray XIImageWidth XIImageHeight XIBitsPerPixel [XIImageWidth 0 0 XIImageHeight neg 0 0] /XIDataProc load XIChannelCount 1 eq {image}{false XIChannelCount colorimage} ifelse } def /XG { pop pop } def /XF { 13 {pop} repeat } def /Xh { Adobe_ColorImage_AI6_Vars begin gsave /XIType exch def /XIImageHeight exch def /XIImageWidth exch def /XIImageMatrix exch def 0 0 moveto XIImageMatrix concat XIImageWidth XIImageHeight scale XIType 1 eq { /_lp /null ddef _fc /_lp /imagemask ddef } if /XIVersion 7 def end } def /XH { Adobe_ColorImage_AI6_Vars begin /XIVersion 6 def grestore end } def /XIEnable { Adobe_ColorImage_AI6_Vars /XIEnable 3 -1 roll put } def /XC { Adobe_ColorImage_AI6_Vars begin colormake /XIColorSpace exch def /XIColorValues exch def end } def /XI { Adobe_ColorImage_AI6_Vars begin gsave /XIType exch def cvi dup 256 idiv /XICompression exch store 256 mod /XIEncoding exch store pop pop /XIChannelCount exch def /XIBitsPerPixel exch def /XIImageHeight exch def /XIImageWidth exch def pop pop pop pop /XIImageMatrix exch def XIBitsPerPixel 1 eq { XIImageWidth 8 div ceiling cvi }{ XIImageWidth XIChannelCount mul } ifelse /XIRowBytes exch def XIEncoding 0 ne XIVersion 6 le and { currentfile 128 string readline pop pop } if XICompression 0 eq { /XIBuffer1 XIRowBytes string def XIEncoding 0 eq { {currentfile XIBuffer1 readhexstring pop} }{ {currentfile XIBuffer1 readstring pop} } ifelse }{ /XIBuffer1 256 string def /XIBuffer2 XIRowBytes string def {currentfile XIBuffer1 readline pop (%) anchorsearch {pop} if} /ASCIIHexDecode filter /DCTDecode filter /XIFile exch def {XIFile XIBuffer2 readstring pop} } ifelse /XIDataProc exch def XIVersion 6 le { 0 0 moveto XIImageMatrix concat XIImageWidth XIImageHeight scale XIType 1 eq { /_lp /null ddef _fc /_lp /imagemask ddef } if } if XIEnable { XIType 1 eq { XIImageMask }{ XIType 2 eq XIType 3 eq or { XIImageTint }{ XIImage } ifelse } ifelse }{ XINullImage } ifelse grestore end } def end %%EndProcSet %%BeginResource: procset Adobe_Illustrator_AI5 1.2 0 %%Title: (Adobe Illustrator (R) Version 7.0 Full Prolog) %%Version: 1.2 0 %%CreationDate: (3/7/1994) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_Illustrator_AI5_vars 107 dict dup begin put /_eo false def /_lp /none def /_pf { } def /_ps { } def /_psf { } def /_pss { } def /_pjsf { } def /_pjss { } def /_pola 0 def /_doClip 0 def /cf currentflat def /_lineorientation 0 def /_charorientation 0 def /_yokoorientation 0 def /_tm matrix def /_renderStart [ /e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0 ] def /_renderEnd [ null null null null /i1 /i1 /i1 /i1 ] def /_render -1 def /_shift [0 0] def /_ax 0 def /_ay 0 def /_cx 0 def /_cy 0 def /_leading [ 0 0 ] def /_ctm matrix def /_mtx matrix def /_sp 16#020 def /_hyphen (-) def /_fontSize 0 def /_fontAscent 0 def /_fontDescent 0 def /_fontHeight 0 def /_fontRotateAdjust 0 def /Ss 256 string def Ss 0 (fonts/) putinterval /_cnt 0 def /_scale [1 1] def /_nativeEncoding 0 def /_useNativeEncoding 0 def /_tempEncode 0 def /_pntr 0 def /_tDict 2 dict def /_hfname 100 string def /_hffound false def /Tx { } def /Tj { } def /CRender { } def /_AI3_savepage { } def /_gf null def /_cf 4 array def /_rgbf 3 array def /_if null def /_of false def /_fc { } def /_gs null def /_cs 4 array def /_rgbs 3 array def /_is null def /_os false def /_sc { } def /_pd 1 dict def /_ed 15 dict def /_pm matrix def /_fm null def /_fd null def /_fdd null def /_sm null def /_sd null def /_sdd null def /_i null def /_lobyte 0 def /_hibyte 0 def /_cproc null def /_cscript 0 def /_hvax 0 def /_hvay 0 def /_hvwb 0 def /_hvcx 0 def /_hvcy 0 def /_bitfont null def /_bitlobyte 0 def /_bithibyte 0 def /_bitkey null def /_bitdata null def /_bitindex 0 def /discardSave null def /buffer 256 string def /beginString null def /endString null def /endStringLength null def /layerCnt 1 def /layerCount 1 def /perCent (%) 0 get def /perCentSeen? false def /newBuff null def /newBuffButFirst null def /newBuffLast null def /clipForward? false def end userdict /Adobe_Illustrator_AI5 known not { userdict /Adobe_Illustrator_AI5 95 dict put } if userdict /Adobe_Illustrator_AI5 get begin /initialize { Adobe_Illustrator_AI5 dup begin Adobe_Illustrator_AI5_vars begin discardDict { bind pop pop } forall dup /nc get begin { dup xcheck 1 index type /operatortype ne and { bind } if pop pop } forall end newpath } def /terminate { end end } def /_ null def /ddef { Adobe_Illustrator_AI5_vars 3 1 roll put } def /xput { dup load dup length exch maxlength eq { dup dup load dup length 2 mul dict copy def } if load begin def end } def /npop { { pop } repeat } def /hswj { dup stringwidth 3 2 roll { _hvwb eq { exch _hvcx add exch _hvcy add } if exch _hvax add exch _hvay add } cforall } def /vswj { 0 0 3 -1 roll { dup 255 le _charorientation 1 eq and { dup cstring stringwidth 5 2 roll _hvwb eq { exch _hvcy sub exch _hvcx sub } if exch _hvay sub exch _hvax sub 4 -1 roll sub exch 3 -1 roll sub exch } { _hvwb eq { exch _hvcy sub exch _hvcx sub } if exch _hvay sub exch _hvax sub _fontHeight sub } ifelse } cforall } def /swj { 6 1 roll /_hvay exch ddef /_hvax exch ddef /_hvwb exch ddef /_hvcy exch ddef /_hvcx exch ddef _lineorientation 0 eq { hswj } { vswj } ifelse } def /sw { 0 0 0 6 3 roll swj } def /vjss { 4 1 roll { dup cstring dup length 1 eq _charorientation 1 eq and { -90 rotate currentpoint _fontRotateAdjust add moveto gsave false charpath currentpoint 5 index setmatrix stroke grestore _fontRotateAdjust sub moveto _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto 90 rotate } { currentpoint _fontHeight sub 5 index sub 3 index _sp eq { 9 index sub } if currentpoint exch 4 index stringwidth pop 2 div sub exch _fontAscent sub moveto gsave 2 index false charpath 6 index setmatrix stroke grestore moveto pop pop } ifelse } cforall 6 npop } def /hjss { 4 1 roll { dup cstring gsave false charpath currentpoint 5 index setmatrix stroke grestore moveto _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto } cforall 6 npop } def /jss { _lineorientation 0 eq { hjss } { vjss } ifelse } def /ss { 0 0 0 7 3 roll jss } def /vjsp { 4 1 roll { dup cstring dup length 1 eq _charorientation 1 eq and { -90 rotate currentpoint _fontRotateAdjust add moveto false charpath currentpoint _fontRotateAdjust sub moveto _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto 90 rotate } { currentpoint _fontHeight sub 5 index sub 3 index _sp eq { 9 index sub } if currentpoint exch 4 index stringwidth pop 2 div sub exch _fontAscent sub moveto 2 index false charpath moveto pop pop } ifelse } cforall 6 npop } def /hjsp { 4 1 roll { dup cstring false charpath _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto } cforall 6 npop } def /jsp { matrix currentmatrix _lineorientation 0 eq {hjsp} {vjsp} ifelse } def /sp { matrix currentmatrix 0 0 0 7 3 roll _lineorientation 0 eq {hjsp} {vjsp} ifelse } def /pl { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform } def /setstrokeadjust where { pop true setstrokeadjust /c { curveto } def /C /c load def /v { currentpoint 6 2 roll curveto } def /V /v load def /y { 2 copy curveto } def /Y /y load def /l { lineto } def /L /l load def /m { moveto } def } { /c { pl curveto } def /C /c load def /v { currentpoint 6 2 roll pl curveto } def /V /v load def /y { pl 2 copy curveto } def /Y /y load def /l { pl lineto } def /L /l load def /m { pl moveto } def } ifelse /d { setdash } def /cf { } def /i { dup 0 eq { pop cf } if setflat } def /j { setlinejoin } def /J { setlinecap } def /M { setmiterlimit } def /w { setlinewidth } def /XR { 0 ne /_eo exch ddef } def /H { } def /h { closepath } def /N { _pola 0 eq { _doClip 1 eq { _eo {eoclip} {clip} ifelse /_doClip 0 ddef } if newpath } { /CRender { N } ddef } ifelse } def /n { N } def /F { _pola 0 eq { _doClip 1 eq { gsave _pf grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _fc /_doClip 0 ddef } { _pf } ifelse } { /CRender { F } ddef } ifelse } def /f { closepath F } def /S { _pola 0 eq { _doClip 1 eq { gsave _ps grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc /_doClip 0 ddef } { _ps } ifelse } { /CRender { S } ddef } ifelse } def /s { closepath S } def /B { _pola 0 eq { _doClip 1 eq gsave F grestore { gsave S grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc /_doClip 0 ddef } { S } ifelse } { /CRender { B } ddef } ifelse } def /b { closepath B } def /W { /_doClip 1 ddef } def /* { count 0 ne { dup type /stringtype eq { pop } if } if newpath } def /u { } def /U { } def /q { _pola 0 eq { gsave } if } def /Q { _pola 0 eq { grestore } if } def /*u { _pola 1 add /_pola exch ddef } def /*U { _pola 1 sub /_pola exch ddef _pola 0 eq { CRender } if } def /D { pop } def /*w { } def /*W { } def /` { /_i save ddef clipForward? { nulldevice } if 6 1 roll 4 npop concat pop userdict begin /showpage { } def 0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit [] 0 setdash /setstrokeadjust where {pop false setstrokeadjust} if newpath 0 setgray false setoverprint } def /~ { end _i restore } def /O { 0 ne /_of exch ddef /_lp /none ddef } def /R { 0 ne /_os exch ddef /_lp /none ddef } def /g { /_gf exch ddef /_fc { _lp /fill ne { _of setoverprint _gf setgray /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /G { /_gs exch ddef /_sc { _lp /stroke ne { _os setoverprint _gs setgray /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /k { _cf astore pop /_fc { _lp /fill ne { _of setoverprint _cf aload pop setcmykcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /K { _cs astore pop /_sc { _lp /stroke ne { _os setoverprint _cs aload pop setcmykcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /Xa { _rgbf astore pop /_fc { _lp /fill ne { _of setoverprint _rgbf aload pop setrgbcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /XA { _rgbs astore pop /_sc { _lp /stroke ne { _os setoverprint _rgbs aload pop setrgbcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /_rgbtocmyk { 3 { 1 exch sub 3 1 roll } repeat 3 copy 1 4 1 roll 3 { 3 index 2 copy gt { exch } if pop 4 1 roll } repeat pop pop pop 4 1 roll 3 { 3 index sub 3 1 roll } repeat 4 -1 roll } def /Xx { exch /_gf exch ddef 0 eq { findcmykcustomcolor } { /findrgbcustomcolor where not { 4 1 roll _rgbtocmyk 5 -1 roll findcmykcustomcolor } { pop findrgbcustomcolor } ifelse } ifelse /_if exch ddef /_fc { _lp /fill ne { _of setoverprint _if _gf 1 exch sub setcustomcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /XX { exch /_gs exch ddef 0 eq { findcmykcustomcolor } { /findrgbcustomcolor where not { 4 1 roll _rgbtocmyk 5 -1 roll findcmykcustomcolor } { pop findrgbcustomcolor } ifelse } ifelse /_is exch ddef /_sc { _lp /stroke ne { _os setoverprint _is _gs 1 exch sub setcustomcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /x { /_gf exch ddef findcmykcustomcolor /_if exch ddef /_fc { _lp /fill ne { _of setoverprint _if _gf 1 exch sub setcustomcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /X { /_gs exch ddef findcmykcustomcolor /_is exch ddef /_sc { _lp /stroke ne { _os setoverprint _is _gs 1 exch sub setcustomcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /A { pop } def /annotatepage { userdict /annotatepage 2 copy known {get exec} {pop pop} ifelse } def /XT { pop pop } def /discard { save /discardSave exch store discardDict begin /endString exch store gt38? { 2 add } if load stopped pop end discardSave restore } bind def userdict /discardDict 7 dict dup begin put /pre38Initialize { /endStringLength endString length store /newBuff buffer 0 endStringLength getinterval store /newBuffButFirst newBuff 1 endStringLength 1 sub getinterval store /newBuffLast newBuff endStringLength 1 sub 1 getinterval store } def /shiftBuffer { newBuff 0 newBuffButFirst putinterval newBuffLast 0 currentfile read not { stop } if put } def 0 { pre38Initialize mark currentfile newBuff readstring exch pop { { newBuff endString eq { cleartomark stop } if shiftBuffer } loop } { stop } ifelse } def 1 { pre38Initialize /beginString exch store mark currentfile newBuff readstring exch pop { { newBuff beginString eq { /layerCount dup load 1 add store } { newBuff endString eq { /layerCount dup load 1 sub store layerCount 0 eq { cleartomark stop } if } if } ifelse shiftBuffer } loop } if } def 2 { mark { currentfile buffer readline not { stop } if endString eq { cleartomark stop } if } loop } def 3 { /beginString exch store /layerCnt 1 store mark { currentfile buffer readline not { stop } if dup beginString eq { pop /layerCnt dup load 1 add store } { endString eq { layerCnt 1 eq { cleartomark stop } { /layerCnt dup load 1 sub store } ifelse } if } ifelse } loop } def end userdict /clipRenderOff 15 dict dup begin put { /n /N /s /S /f /F /b /B } { { _doClip 1 eq { /_doClip 0 ddef _eo {eoclip} {clip} ifelse } if newpath } def } forall /Tr /pop load def /Bb {} def /BB /pop load def /Bg {12 npop} def /Bm {6 npop} def /Bc /Bm load def /Bh {4 npop} def end /Lb { 4 npop 6 1 roll pop 4 1 roll pop pop pop 0 eq { 0 eq { (%AI5_BeginLayer) 1 (%AI5_EndLayer--) discard } { /clipForward? true def /Tx /pop load def /Tj /pop load def currentdict end clipRenderOff begin begin } ifelse } { 0 eq { save /discardSave exch store } if } ifelse } bind def /LB { discardSave dup null ne { restore } { pop clipForward? { currentdict end end begin /clipForward? false ddef } if } ifelse } bind def /Pb { pop pop 0 (%AI5_EndPalette) discard } bind def /Np { 0 (%AI5_End_NonPrinting--) discard } bind def /Ln /pop load def /Ap /pop load def /Ar { 72 exch div 0 dtransform dup mul exch dup mul add sqrt dup 1 lt { pop 1 } if setflat } def /Mb { q } def /Md { } def /MB { Q } def /nc 4 dict def nc begin /setgray { pop } bind def /setcmykcolor { 4 npop } bind def /setrgbcolor { 3 npop } bind def /setcustomcolor { 2 npop } bind def currentdict readonly pop end end setpacking %%EndResource %%BeginResource: procset Adobe_pattern_AI5 1.1 0 %%Title: (Adobe Illustrator (R) Version 5.0 Pattern Operators) %%Version: 1.1 0 %%CreationDate: (03/26/93) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_Illustrator_AI5 known not { userdict /Adobe_Illustrator_AI5 95 dict put } if userdict /Adobe_Illustrator_AI5 get begin /@ { } def /& { } def /dp { dup null eq { pop _dp 0 ne { 0 1 _dp 1 sub _dl mod { _da exch get 3 get } for _dp 1 sub _dl mod 1 add packedarray _da 0 get aload pop 8 -1 roll 5 -1 roll pop 4 1 roll definepattern pop } if } { _dp 0 ne _dp _dl mod 0 eq and { null dp } if 7 packedarray _da exch _dp _dl mod exch put _dp _dl mod _da 0 get 4 get 2 packedarray /_dp _dp 1 add def } ifelse } def /E { _ed begin dup 0 get type /arraytype ne { 0 { dup 1 add index type /arraytype eq { 1 add } { exit } ifelse } loop array astore } if /_dd exch def /_ury exch def /_urx exch def /_lly exch def /_llx exch def /_n exch def /_y 0 def /_dl 4 def /_dp 0 def /_da _dl array def 0 1 _dd length 1 sub { /_d exch _dd exch get def 0 2 _d length 2 sub { /_x exch def /_c false def /_r _d _x 1 add get cvlit def _r _ ne { _urx _llx sub _ury _lly sub [ 1 0 0 1 0 0 ] [ /save cvx _llx neg _lly neg /translate cvx _c { nc /begin cvx } if _r dup type /stringtype eq { cvx } { { exec } /forall cvx } ifelse _c { /end cvx } if /restore cvx ] cvx /_fn 12 _n length add string def _y _fn cvs pop /_y _y 1 add def _fn 12 _n putinterval _fn _c false dp _d exch _x 1 add exch put } if } for } for null dp _n _dd /_pd end xput } def /fc { _fm dup concatmatrix pop } def /p { /_fm exch ddef 9 -2 roll _pm translate fc 7 -2 roll _pm scale fc 5 -1 roll _pm rotate fc 4 -2 roll exch 0 ne { dup _pm rotate fc 1 -1 _pm scale fc neg _pm rotate fc } { pop } ifelse dup _pm rotate fc exch dup sin exch cos div 1 0 0 1 0 6 2 roll _pm astore fc neg _pm rotate fc _pd exch get /_fdd exch ddef /_pf { save /_doClip 0 ddef 0 1 _fdd length 1 sub { /_fd exch _fdd exch get ddef _fd 0 2 _fd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _fc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _fm patternfill } { pop fill } ifelse grestore pop } for pop } for restore newpath } ddef /_psf { save /_doClip 0 ddef 0 1 _fdd length 1 sub { /_fd exch _fdd exch get ddef _fd 0 2 _fd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _fc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _fm 9 copy 6 npop patternashow } { pop 6 copy 3 npop hvashow } ifelse grestore pop } for pop } for restore sw rmoveto } ddef /_pjsf { save /_doClip 0 ddef 0 1 _fdd length 1 sub { /_fd exch _fdd exch get ddef _fd 0 2 _fd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _fc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _fm 12 copy 6 npop patternawidthshow } { pop 9 copy 3 npop hvawidthshow } ifelse grestore pop } for pop } for restore swj rmoveto } ddef /_lp /none ddef } def /sc { _sm dup concatmatrix pop } def /P { /_sm exch ddef 9 -2 roll _pm translate sc 7 -2 roll _pm scale sc 5 -1 roll _pm rotate sc 4 -2 roll exch 0 ne { dup _pm rotate sc 1 -1 _pm scale sc neg _pm rotate sc } { pop } ifelse dup _pm rotate sc exch dup sin exch cos div 1 0 0 1 0 6 2 roll _pm astore sc neg _pm rotate sc _pd exch get /_sdd exch ddef /_ps { save /_doClip 0 ddef 0 1 _sdd length 1 sub { /_sd exch _sdd exch get ddef _sd 0 2 _sd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _sc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _sm patternstroke } { pop stroke } ifelse grestore pop } for pop } for restore newpath } ddef /_pss { save /_doClip 0 ddef 0 1 _sdd length 1 sub { /_sd exch _sdd exch get ddef _sd 0 2 _sd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _sc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _sm 10 copy 6 npop patternashowstroke } { pop 7 copy 3 npop ss } ifelse grestore pop } for pop } for restore pop sw rmoveto } ddef /_pjss { save /_doClip 0 ddef 0 1 _sdd length 1 sub { /_sd exch _sdd exch get ddef _sd 0 2 _sd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _sc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _sm 13 copy 6 npop patternawidthshowstroke } { pop 10 copy 3 npop jss } ifelse grestore pop } for pop } for restore pop swj rmoveto } ddef /_lp /none ddef } def end userdict /Adobe_pattern_AI5 18 dict dup begin put /initialize { /definepattern where { pop pop pop } { begin begin Adobe_pattern_AI5 begin Adobe_pattern_AI5 { dup xcheck { bind } if pop pop } forall mark cachestatus 7 1 roll pop pop pop pop exch pop exch { { 10000 add dup 2 index gt { exit } if dup setcachelimit } loop } stopped cleartomark end end end Adobe_pattern_AI5 begin } ifelse } def /terminate { currentdict Adobe_pattern_AI5 eq { end } if } def errordict /nocurrentpoint { pop stop } put errordict /invalidaccess { pop stop } put /patternencoding 256 array def 0 1 255 { patternencoding exch ( ) 2 copy exch 0 exch put cvn put } for /definepattern { 17 dict begin /uniform exch def /cache exch def /key exch def /procarray exch def /mtx exch matrix invertmatrix def /height exch def /width exch def /ctm matrix currentmatrix def /ptm matrix def /str 32 string def /slice 9 dict def slice /s 1 put slice /q 256 procarray length div sqrt floor cvi put slice /b 0 put /FontBBox [ 0 0 0 0 ] def /FontMatrix mtx matrix copy def /Encoding patternencoding def /FontType 3 def /BuildChar { exch begin /setstrokeadjust where {pop true setstrokeadjust} if slice begin dup q dup mul mod s idiv /i exch def dup q dup mul mod s mod /j exch def q dup mul idiv procarray exch get /xl j width s div mul def /xg j 1 add width s div mul def /yl i height s div mul def /yg i 1 add height s div mul def uniform { 1 1 } { width 0 dtransform dup mul exch dup mul add sqrt dup 1 add exch div 0 height dtransform dup mul exch dup mul add sqrt dup 1 add exch div } ifelse width 0 cache { xl 4 index mul yl 4 index mul xg 6 index mul yg 6 index mul setcachedevice } { setcharwidth } ifelse gsave scale newpath xl yl moveto xg yl lineto xg yg lineto xl yg lineto closepath clip newpath end end exec grestore } def key currentdict definefont end } def /patterncachesize { gsave newpath 0 0 moveto width 0 lineto width height lineto 0 height lineto closepath patternmatrix setmatrix pathbbox exch ceiling 4 -1 roll floor sub 3 1 roll ceiling exch floor sub mul 1 add grestore } def /patterncachelimit { cachestatus 7 1 roll 6 npop 8 mul } def /patternpath { exch dup begin setfont ctm setmatrix concat slice exch /b exch slice /q get dup mul mul put FontMatrix concat uniform { width 0 dtransform round width div exch round width div exch 0 height dtransform round height div exch height div exch 0 0 transform round exch round exch ptm astore setmatrix } { ptm currentmatrix pop } ifelse { currentpoint } stopped not { 2 npop pathbbox true 4 index 3 index eq 4 index 3 index eq and { pop false { { 2 npop } { 3 npop true } { 7 npop true } { pop true } pathforall } stopped { 5 npop true } if } if { height div ceiling height mul 4 1 roll width div ceiling width mul 4 1 roll height div floor height mul 4 1 roll width div floor width mul 4 1 roll 2 index sub height div ceiling cvi exch 3 index sub width div ceiling cvi exch 4 2 roll moveto FontMatrix mtx invertmatrix dup dup 4 get exch 5 get rmoveto ptm ptm concatmatrix pop slice /s patterncachesize patterncachelimit div ceiling sqrt ceiling cvi dup slice /q get gt { pop slice /q get } if put 0 1 slice /s get dup mul 1 sub { slice /b get add gsave 0 1 str length 1 sub { str exch 2 index put } for pop dup { gsave ptm setmatrix 1 index str length idiv { str show } repeat 1 index str length mod str exch 0 exch getinterval show grestore 0 height rmoveto } repeat grestore } for 2 npop } { 4 npop } ifelse } if end } def /patternclip { _eo {eoclip} {clip} ifelse } def /patternstrokepath { strokepath } def /patternmatrix matrix def /patternfill { dup type /dicttype eq { Adobe_pattern_AI5 /patternmatrix get } if gsave patternclip Adobe_pattern_AI5 /patternpath get exec grestore newpath } def /patternstroke { dup type /dicttype eq { Adobe_pattern_AI5 /patternmatrix get } if gsave patternstrokepath true { { { newpath moveto } { lineto } { curveto } { closepath 3 copy Adobe_pattern_AI5 /patternfill get exec } pathforall 3 npop } stopped { 5 npop patternclip Adobe_pattern_AI5 /patternfill get exec } if } { patternclip Adobe_pattern_AI5 /patternfill get exec } ifelse grestore newpath } def /vpatternawidthshow { 6 1 roll /_hvay exch ddef /_hvax exch ddef /_hvwb exch ddef /_hvcy exch ddef /_hvcx exch ddef { dup cstring dup length 1 eq _charorientation 1 eq and { -90 rotate currentpoint _fontRotateAdjust add moveto gsave false charpath currentpoint 5 index 5 index 5 index Adobe_pattern_AI5 /patternfill get exec grestore _fontRotateAdjust sub moveto _hvwb eq { _hvcx _hvcy rmoveto } if _hvax _hvay rmoveto 90 rotate } { currentpoint _fontHeight sub _hvax sub 3 index _hvwb eq { _hvcx sub } if currentpoint exch 4 index stringwidth pop 2 div sub exch _fontAscent sub moveto gsave 2 index false charpath 6 index 6 index 6 index Adobe_pattern_AI5 /patternfill get exec grestore newpath moveto pop pop } ifelse } cforall 3 npop } def /hpatternawidthshow { { dup cstring exch gsave 3 index eq { 5 index 5 index rmoveto } if false charpath currentpoint 9 index 9 index 9 index Adobe_pattern_AI5 /patternfill get exec grestore newpath moveto 2 copy rmoveto } cforall 8 npop } def /patternashow { 0 0 0 6 3 roll patternawidthshow } def /patternawidthshow { 6 index type /dicttype eq { Adobe_pattern_AI5 /patternmatrix get 7 1 roll } if _lineorientation 0 eq { hpatternawidthshow } { vpatternawidthshow } ifelse } def /vpatternawidthshowstroke { 7 1 roll 6 1 roll /_hvay exch ddef /_hvax exch ddef /_hvwb exch ddef /_hvcy exch ddef /_hvcx exch ddef { dup cstring dup length 1 eq _charorientation 1 eq and { -90 rotate currentpoint _fontRotateAdjust add moveto gsave false charpath currentpoint 3 index setmatrix 6 index 6 index 6 index Adobe_pattern_AI5 /patternstroke get exec grestore _fontRotateAdjust sub moveto _hvwb eq { _hvcx _hvcy rmoveto } if _hvax _hvay rmoveto 90 rotate } { currentpoint _fontHeight sub _hvax sub 3 index _hvwb eq { _hvcx sub } if currentpoint exch 4 index stringwidth pop 2 div sub exch _fontAscent sub moveto gsave 2 index false charpath 4 index setmatrix 7 index 7 index 7 index Adobe_pattern_AI5 /patternstroke get exec grestore newpath moveto pop pop } ifelse } cforall 4 npop } def /hpatternawidthshowstroke { 7 1 roll { dup cstring exch gsave 3 index eq { 5 index 5 index rmoveto } if false charpath currentpoint 7 index setmatrix 10 index 10 index 10 index Adobe_pattern_AI5 /patternstroke get exec grestore newpath moveto 2 copy rmoveto } cforall 9 npop } def /patternashowstroke { 0 0 0 7 3 roll patternawidthshowstroke } def /patternawidthshowstroke { 7 index type /dicttype eq { patternmatrix /patternmatrix get 8 1 roll } if _lineorientation 0 eq { hpatternawidthshowstroke } { vpatternawidthshowstroke } ifelse } def end setpacking %%EndResource %%BeginResource: procset Adobe_cshow 2.0 8 %%Title: (Writing System Operators) %%Version: 2.0 8 %%CreationDate: (1/23/89) () %%Copyright: ((C) 1992-1996 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_cshow 14 dict dup begin put /initialize { Adobe_cshow begin Adobe_cshow { dup xcheck { bind } if pop pop } forall end Adobe_cshow begin } def /terminate { currentdict Adobe_cshow eq { end } if } def /cforall { /_lobyte 0 ddef /_hibyte 0 ddef /_cproc exch ddef /_cscript currentfont /FontScript known { currentfont /FontScript get } { -1 } ifelse ddef { /_lobyte exch ddef _hibyte 0 eq _cscript 1 eq _lobyte 129 ge _lobyte 159 le and _lobyte 224 ge _lobyte 252 le and or and _cscript 2 eq _lobyte 161 ge _lobyte 254 le and and _cscript 3 eq _lobyte 161 ge _lobyte 254 le and and _cscript 25 eq _lobyte 161 ge _lobyte 254 le and and _cscript -1 eq or or or or and { /_hibyte _lobyte ddef } { _hibyte 256 mul _lobyte add _cproc /_hibyte 0 ddef } ifelse } forall } def /cstring { dup 256 lt { (s) dup 0 4 3 roll put } { dup 256 idiv exch 256 mod (hl) dup dup 0 6 5 roll put 1 4 3 roll put } ifelse } def /clength { 0 exch { 256 lt { 1 } { 2 } ifelse add } cforall } def /hawidthshow { { dup cstring show _hvax _hvay rmoveto _hvwb eq { _hvcx _hvcy rmoveto } if } cforall } def /vawidthshow { { dup 255 le _charorientation 1 eq and { -90 rotate 0 _fontRotateAdjust rmoveto cstring _hvcx _hvcy _hvwb _hvax _hvay 6 -1 roll awidthshow 0 _fontRotateAdjust neg rmoveto 90 rotate } { currentpoint _fontHeight sub exch _hvay sub exch _hvax sub 2 index _hvwb eq { exch _hvcy sub exch _hvcx sub } if 3 2 roll cstring dup stringwidth pop 2 div neg _fontAscent neg rmoveto show moveto } ifelse } cforall } def /hvawidthshow { 6 1 roll /_hvay exch ddef /_hvax exch ddef /_hvwb exch ddef /_hvcy exch ddef /_hvcx exch ddef _lineorientation 0 eq { hawidthshow } { vawidthshow } ifelse } def /hvwidthshow { 0 0 3 -1 roll hvawidthshow } def /hvashow { 0 0 0 6 -3 roll hvawidthshow } def /hvshow { 0 0 0 0 0 6 -1 roll hvawidthshow } def currentdict readonly pop end setpacking %%EndResource %%EndProlog %%BeginSetup userdict /_useSmoothShade true put Adobe_level2_AI5 /initialize get exec Adobe_cshow /initialize get exec Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 Adobe_typography_AI5 /initialize get exec Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 AGM_Gradient /initializeAI get exec Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 Adobe_pattern_AI5 /initialize get exec Adobe_ColorImage_AI6 /initialize get exec Adobe_Illustrator_AI5 /initialize get exec %AI3_BeginRider currentpacking true setpacking %%BeginFont: Symbol %!PS-AdobeFont-1.0: Symbol 001.008 %%CreationDate: Fri Mar 28 22:03:48 1997 %%VMusage: 30820 39997 11 dict begin /FontInfo 10 dict dup begin /version (001.008) readonly def /Notice (Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All rights reserved.) readonly def /FullName (Symbol) readonly def /FamilyName (Symbol) readonly def /Weight (Medium) readonly def /isFixedPitch false def /ItalicAngle 0 def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /FontName /Symbol def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 32 /space put dup 33 /exclam put dup 34 /universal put dup 35 /numbersign put dup 36 /existential put dup 37 /percent put dup 38 /ampersand put dup 39 /suchthat put dup 40 /parenleft put dup 41 /parenright put dup 42 /asteriskmath put dup 43 /plus put dup 44 /comma put dup 45 /minus put dup 46 /period put dup 47 /slash put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 56 /eight put dup 57 /nine put dup 58 /colon put dup 59 /semicolon put dup 60 /less put dup 61 /equal put dup 62 /greater put dup 63 /question put dup 64 /congruent put dup 65 /Alpha put dup 66 /Beta put dup 67 /Chi put dup 68 /Delta put dup 69 /Epsilon put dup 70 /Phi put dup 71 /Gamma put dup 72 /Eta put dup 73 /Iota put dup 74 /theta1 put dup 75 /Kappa put dup 76 /Lambda put dup 77 /Mu put dup 78 /Nu put dup 79 /Omicron put dup 80 /Pi put dup 81 /Theta put dup 82 /Rho put dup 83 /Sigma put dup 84 /Tau put dup 85 /Upsilon put dup 86 /sigma1 put dup 87 /Omega put dup 88 /Xi put dup 89 /Psi put dup 90 /Zeta put dup 91 /bracketleft put dup 92 /therefore put dup 93 /bracketright put dup 94 /perpendicular put dup 95 /underscore put dup 96 /radicalex put dup 97 /alpha put dup 98 /beta put dup 99 /chi put dup 100 /delta put dup 101 /epsilon put dup 102 /phi put dup 103 /gamma put dup 104 /eta put dup 105 /iota put dup 106 /phi1 put dup 107 /kappa put dup 108 /lambda put dup 109 /mu put dup 110 /nu put dup 111 /omicron put dup 112 /pi put dup 113 /theta put dup 114 /rho put dup 115 /sigma put dup 116 /tau put dup 117 /upsilon put dup 118 /omega1 put dup 119 /omega put dup 120 /xi put dup 121 /psi put dup 122 /zeta put dup 123 /braceleft put dup 124 /bar put dup 125 /braceright put dup 126 /similar put dup 160 /Euro put dup 161 /Upsilon1 put dup 162 /minute put dup 163 /lessequal put dup 164 /fraction put dup 165 /infinity put dup 166 /florin put dup 167 /club put dup 168 /diamond put dup 169 /heart put dup 170 /spade put dup 171 /arrowboth put dup 172 /arrowleft put dup 173 /arrowup put dup 174 /arrowright put dup 175 /arrowdown put dup 176 /degree put dup 177 /plusminus put dup 178 /second put dup 179 /greaterequal put dup 180 /multiply put dup 181 /proportional put dup 182 /partialdiff put dup 183 /bullet put dup 184 /divide put dup 185 /notequal put dup 186 /equivalence put dup 187 /approxequal put dup 188 /ellipsis put dup 189 /arrowvertex put dup 190 /arrowhorizex put dup 191 /carriagereturn put dup 192 /aleph put dup 193 /Ifraktur put dup 194 /Rfraktur put dup 195 /weierstrass put dup 196 /circlemultiply put dup 197 /circleplus put dup 198 /emptyset put dup 199 /intersection put dup 200 /union put dup 201 /propersuperset put dup 202 /reflexsuperset put dup 203 /notsubset put dup 204 /propersubset put dup 205 /reflexsubset put dup 206 /element put dup 207 /notelement put dup 208 /angle put dup 209 /gradient put dup 210 /registerserif put dup 211 /copyrightserif put dup 212 /trademarkserif put dup 213 /product put dup 214 /radical put dup 215 /dotmath put dup 216 /logicalnot put dup 217 /logicaland put dup 218 /logicalor put dup 219 /arrowdblboth put dup 220 /arrowdblleft put dup 221 /arrowdblup put dup 222 /arrowdblright put dup 223 /arrowdbldown put dup 224 /lozenge put dup 225 /angleleft put dup 226 /registersans put dup 227 /copyrightsans put dup 228 /trademarksans put dup 229 /summation put dup 230 /parenlefttp put dup 231 /parenleftex put dup 232 /parenleftbt put dup 233 /bracketlefttp put dup 234 /bracketleftex put dup 235 /bracketleftbt put dup 236 /bracelefttp put dup 237 /braceleftmid put dup 238 /braceleftbt put dup 239 /braceex put dup 241 /angleright put dup 242 /integral put dup 243 /integraltp put dup 244 /integralex put dup 245 /integralbt put dup 246 /parenrighttp put dup 247 /parenrightex put dup 248 /parenrightbt put dup 249 /bracketrighttp put dup 250 /bracketrightex put dup 251 /bracketrightbt put dup 252 /bracerighttp put dup 253 /bracerightmid put dup 254 /bracerightbt put readonly def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] def /UniqueID 42996 def /FontBBox{-180 -293 1090 1010}readonly def currentdict end currentfile eexec 8dda0385bbe2e28975521ce366a1efbcd19951c755b299f7de57699ffa32088176bbcfeb9d3d075a656fc2d3ffadac652e0956194030c65b6ac7dfb4cce0096cf30964c72ac7742ef0dfd71d6aeda00d45b6c86f2ebeadafcc658a64b076f436a780849440223f266d2dab36e19a62bf7550db533ad06fe9bb6bb7ebaf6f78 06f6852f23ff339a8c1fa991f1bf47f71268b6727020001c8171cb3acdb4eebea4d340dbfb5d95d8d24eb1c831a51121a967305aec34b69ab5a3a0c21ee4192997502d726972f6ccea2c58f4e7ccd90e299cdb76cdba9c42084edd3a07ecf08d5d8459c87f2d392b866eb9ca8d6b8e8cb4cf97599599df0d1c87704f3532f9 44b58dfe91e713ff665bc5a1d74808d77591d2989951c76bc0cb73e1b40597b250c9776948f8d60bead8cf0d4fb39c205662436ac4a6187b00b5645538a68c6ce44e7231c7492f6b4677329a9823d5510077ae7874e5cbd15e8a39797dd2b269d030912cbd063fcd5befc5065c16972fc994aef7110c16634aa476dd2beaf8 9a89a81b20101bbb2942dac0e7bd0e6fffb56a851127ee061e3e97515730d3f92d488ba61997e88e50520e778b6e4fdc856126a03bae52db2584ff2d7852ba528fa91db625ecf87d97c1198ac22a8cfb2f19e377c558112ac6c2603dcc29d9402998e7e5c749c156b98f8424ee10395dcd7141d8dce9bbea1888b389ad7288 38348d4c0f924643d9fccde61c5c46f99939f2eb3dc0002137e456161b54f58a06299bd20184d58981613c285aca7dcd5736db403c92e9fde31f3ec14c2e3e67f9648387c1d2fb251fc8310c35608177e05052764505a7e054c1568429017d5af318ba6f39d33cf88dac226b1e3f3d3a3b1dd7d3a8c67367ffb00a7568e1a6 fda2907236f77bdb618fa1f04e5317fa2d8f5da3f48fd88d77c73f439b7a68b9a7970ba0108da48bd1fb6284d94470ac957d679cc7665a6f0d3a1abce3352866b459ea0aa6678f00277172daf4c5aa545ae425b2ab530c7404a04ddd891ffb0b3cbfc6e5b8614986d7216e4bc571590cdf32ead925c0afc93110751b5c6a95 025bb9b74a00e941bb7714525646d584d0565c0106ee006d10ec7e289ab250d6e99c3072afb4c15e1ddebe02a78b508517f985a4406b0bfb74c7011010b1f801217c1fa21f60c4e50ddee045e69c9c40075683c68dfeedd25ce02dca55b96c246670c9e84e586360077921ab65d0836eae8675227b3c40e10cbd7c410f2999 2f1bad2fdb649626271df074e58d4754a3877316f32f9f6d891bacd719b3de29707622f725d5508a268a40a5896e06ad92d2e133389bb0ded7dcf837635377dc16fe2e5ba97c6f04f751911f82fab56def6221c8029dc6fc0878c36954a92d4001000cf48949e772a8fd21de1922a2e546ceaaa2f8e464fc6e82e114b5fa17 ee00bac6a27e96ae49775f26f1cc6dd494b16fa60fb976e5cdffac370a977dd1ca8468c45c9919cd17113a811073516589fd5bcb5c5a50fee1df5cbb0fee6a71756e08d144d082f7714fd797f75adfbfd7a4ce0b2a8e25bba46fef859bf88afcfedb408fcfe3a0c517af7065d93bc9534ea318ea2fc45e0ddb427287b6f4c2 9b1bf79b82021ebcdbfcbdb93254c3f7e9a8c431d8d7bb617b9c8c9b1d78b70cf24ac4b1dd4edb7b4629d5061f0f1cb86698afebd44fb08afb198ceec07d799f426cfee1bc9913e7a997c7c136a9b8571194349a8e960615de021415355640c3e3855873a38c726eefe0d9addccc89ea1e4446ef4365478d26c2cf094f8596 29ccd6f433f42b5eb3f065a96dca95297e406d97f60d3490dc6c2ec0830d16b502ee1832ed29356a16c94f2f74bef5bda000b36a1b7c228958ecf8df388909038fefa348b2394fd6018206aefe6ff3b7362a9f65cdc181ab7a9f1b9abb5c36321e9faa8e081b583035c34d3a0eec08e7b08f182c67de2efdb4c68ab169ec5a 89df851a3b53019c2c604b560a58ea246c8444f9380f19b553611fd2cb4ab5c99740289a947ffb7e2b4670efc0fbf28a631c93c0b9e84cb738f93ec6c7f78e247419676a3ec643169f01465c032cbbf6f62fdaf66495105d30538708eb93e58474374b8826a64292753bfdda20b265105fd7c4b1d57993b063b752e890fc9d 2453595f50fb0c16deb4ca009d581de07767a8afac5fdce02ffb4874a806e38df9ee47d963c9f7cb3e650335a1c85237e83ea2dabff0d2fe93e82a00329c607b76d45425344d5fe894e55394775409fa582a50b06130034ac92f03b63939da92fb22f192d2579517aa7141f28bbb58c3aa7951c9615fbeb1b76d04ad6ff685 d4887d9cec6e1ec2355ba1ed9bad56dbf58426a9964cb84cabbc307614ecd83f47e3856f09719c82246c7f987a6e820e88353adee2f7c58084991a3020ee034b67d0f16b921a8d992d407177abd6027b85b5abb4053dd5a1c54e1cc679a63a59b5327332860dabdcddbd29e976a242792b320ca11581d5d71ca398673ba4ca a3a2764fbc2ff807f0c05f5fcbad49877f9abe090324b0673e366a6d9cbf120e7b50036c363b6188d8f5e2c8cf6ee4e0146bbecdb0283dbdc3f4fda4a757c916eda66f627ded80d3906ab023c318128512ea33999ba08c604c372f742605c884864c3fce5de17320ffbce73ccf9d1b293643bfb587d97e73f91c3dc8707551 a9626fe765901e9e15f3128efa8c133c2ee55a5f1622aa143fd2d32541badf67dc1dbe132b3d5d3d28cd83dc7311bb1fafc0477ce525737191bc318a3d6f6cdf80bfd8289d0e9a984a2b43fae6894748fa4ddc3a4015dbf9cb8778e7b957ddb126b75dcadaae6c41c48072d767f4d533bcc3692608e4153e4c51b077e0f867 357de6624ae6abfe9d7c77638ef25a8bb685f8a8f736c91556bb9fbf31e97df1aa45eff70ddc64c3da1ec15962e34f62c9281b78970d09a069e31ca5239a449b68f97fd45453f8c74575d93ba32d7de8e7023cfc69a565ce01af28ae06949b826c32f4d899c90665dd666a4a3a887961d02d220c30014391153158c6eae0fe 6ce5d67c4e4a4f014ce2ae331d1ac04e9131e7683843ac285253f8f211e47547bced470d3da3af611cf3eaf64373e7922488522c9dc6250e0d45951d4c5d81aff239392924b613d82f75e12739db4e4d61a98b72e912647e74a243877c6b5044041051b67446aef3aaaac555970651b44b3f3f2f38c7b1d4f806ff6bfb09a7 0b81365831aa9de761222d9dbc17ee4e2a5f3dd9d6115b4b234efbaaf7e6e0bc29176bedfce51c2fd6a49a8214be6ab282b236219849b6497fa6d9ecbd4a3ac6dd1906829a3eb83a3011c918d1d4f7f5443f03cf7c7a4c6b0a4863be4227d96d547f700f0a0165352a9485c752182b7657d199cdc8b4d492db7bd201348d60 41f092b3111efc8e534238eab160e439d9bd2f2881fa51378380fb7442edd63ec35fab38896e8f355fd0cfce5d5626d7e58a7c359611f6d5ee1baeab9695d26c2716b20157e7337c5a9eac8278ca2243a70d4ab9a597f457bffe8dbf1185865a9b4551d602bfae5259a6bcfe0359ad33a02e0bbd8a16061f918a31c5701820 1195a528a6bff4042304f184a93385d98ee591a489184706152fba680ae7cc46ce18c3988c8be0597786d87de3c3a6b87e54664f7b9688d6c04e6090bdb1538913ae3513a858bcb6acf336e03f1776e93b74604723db8bcc746e8f117b1aaa7bd834f328d3ddbee4960cd7d2227f5e373bfaf1704ec5911607e66ffcf877fd 84978f5eda69ad33715b9005104d888baca0e810c2d9bb5c3333e92a7b5d7ec5065a44cbfebb070a32e492469ccad1067d5bccc7fdae294087f9688991aaf6beba1e771e15fb03b8f867806c6e4dd7e872f370025f11ea8d0a4098d6f335c75019138502e9ade27a170257c0566ea3c0cee8b4fcb7a6ec5491ac346b35f97b 224b3fd13965f1d5bee6ea025f1a97c51c2d5d46ba6f48eed37c5a8bac8a36ed6f0cc72340f02646ea4c67568ccab4bd233266ae8d83623303f9c6ee79da6dc347d26251c5599a52096b795a24a82e6c4b2cabe150758e9358615ffeddc218d8f81bbc32e4780d925ae0b79688c146798a6bc81f308dd00067c94d2094b1cb 254a5c041ecaf70ae06fe53b7beaeac1cd4e44fb503144eedca7414e184e37cda24f88a290d075e278a09d9e826d666eae1312a6f5abcb55d2b88ba3e6c4b95e08246c2123d0f7552e5c975fb8afc67bf7617c922943be76dd670c50df969f3b5bf2c077e4cdc27d910bfd2d81300ce868953e39b279eb823fff40fe2f7ed1 23ac4ce9b33883bc666e8ff0c73372918ae7b3bf76c373a3e978d32971791b36c99e0e011ca35d529ab7a5c8612f27d25fb43ea881ec3db171cbeb3a3a2d08a0aa6cbd8ee26ca957ddd557cbabe0dc969323ffea0750984dfae620b9ade74bee70f9800dea62e3d182da5bbd35b37d52d710b2e31f959836723d9acf104590 33c48108c6acc641cb25259ef387af8c2f5476847e415a9b37abe9a9bb0c35d3177d47b826a07d4680056afd60afece29e29f8ace87416c7343df851931534e2e92e2407e709dfa25be5d31961161705e23abf87e800ab49ca6b61e18e4835cf9807d0f360835ce12b8bc11e2057402f913ba0cb9cb921383c956ef7e38993 6d8c63c9652cd307cf356edf8266dcdcffd162822b3d5745e839d5aead8fe07a3d4e2136e90797c5d0d73c82a2d5d5c9962d02ac784b7b20174bdd47fc0a1dce504cd9fd139719df3c9d9a119667ad3e8a8967f17c044961104de938f14f0aaca0513ea9081ecb27348cc77536729efb2aa5a3daa54371207b36c5fd352a98 cc4896b537b30fee8165b7233569a418d297531dbcb3a14c78a3d85462c5f58167a9bbabc3e81563c7bd4d67e28b9eb4a9e8e0aaa5bac958e0b098ed48c81e5f05095f4d4076a37eb859fbb32e3594131b547a0b2be52f68c98cc688aefb1f498108cc425fd9eb6668f50da7d11602b3644e1243ca05b68b86993b1d3d564f 93ecacf6c7bf2d967da77e395e4d761bc04a170c35d1cb9040cc824a33564c11b579a113f598f6063e20b1a90bfdacb5f9d7bef4009c7dde9f0548efa4b84704e4c7db807bb6c45a59442b2f5cc505d2f708a07791a8377299f9a93d5b020635f62a1698f90487692e7c4dbce5a89830c9383ef38c35e1c4da5e6d8c82ca71 da2e066c7d0be8775e1597ee3790b341d04ace82f8793a8699f40f4c215b740a4ddd7ed6f633dd7bc5bdfe382ba44d8da0af288d27c5ac2275afd98c0f6dcef689d6c18dd05444197c235d6c4fffd0d4ae738f708583370ab97e23fe3487e9a1448997f5ae85f0333b7acede3c2e017cc5959844057a30571d5c105cd70060 598e46b1338b252f106fb414673fbf5769918ba184b2721c4f346bf811701118dd7bc87b99d94030f089651cfaeaa67ce98fde391c4ffaad4b461749595c359aa3a29fd8eac363034a441bbde61658a968359309e8cfa46713c28573a8ffcfca320a9b261b924d0b3594752eab93d3ae412e42498cea914b060bf2a3f873b6 1d70d50ceed77d7e8dfc8afd686749bc2a1172723a9489c1ed7e50bb32887efb97721c2095ca934ebf0c5a560989c726986287e6e5aa8f8b41cfd7966973de9fefd7a951343da41ef7deda1a90a736ecc23791220058140a9765a68da3a05410feae05e892ab98480fb9a0683927443ce0ee6a3d41af55e6360f365e87d3b3 66f49aa22a96948b63efbff46f2877a5c82db0e3350f875f6e06008eca65b9abd3aa46393e634e864a2467d03fcba30c0d901fadcc4f32be09123a3097b8668039b2ddaf65d9fc0f162762633b2be257c3b6d1e219495303bfeed7585fdbd773a3bcf9a9216701ed906134b72ecf116cfc158e567e86bb094dd75f7a31aef3 95b57f96cc4ac739312fb475491a51a87141cb9b69d26ab25ad0cc2db3f5fbe2f4ac62f763d0e07c68a90b3f080cc4439cc9203cc35f1cc1b05c8b15fc8da648aaeaa7c6e9be25bd4ab0e546cdb4fde2d3e37492a0d1870427d2a5512ad4a4404fca76525662bea2f092a3e459a57c43bfe967f825b337a149b4548fcc6092 833e3601a7174d65428b0fc127b395079ccc41eb0783ae6a59f27deea923ea1218004b28ae86ba9fd1ac220164e56cba287866e237994f7b3c9f87c89273e87ca37ad2a7e4b49f8725eaff5945bc1e8a38ec762a1698f90487692794b8863b8829a12f0173cff77206de0c51863f9486b535195b402e6756fbe9aae85b0fdd cd37bc42e77755eac8c9112fe050d4ff4f85b0593e5ac5fd15ccab06d233fdde2c4273fe4100613a6e216246c50dbfea5ae4d73c9011cb57354bb5a7367877f8b713109953752e71de96469b5e7962cfca0a2801a7cdc744ac8eddd3faf50dea43fc847271bfadd691b25d725ea0c048d9bf3a647a28490e28dbcbd776dadb a506f4b9e48a19f6b8c88563974d27bbedc8f90ae194a515887b33acb58310d8d9a6bd66517239ada895df2b76947eefbdd95d5b4d4249338d5d4e79fcaaf80e6021e3168d31d46f250a21045bc26ffeb66de912d2f65bfdfec70f40fa1fca155be79e19ef3c47449aa13aa2cc4608ca8cb46dea76314364250fa7b18fa096 accb689cda9be75c1c97c54d163d900f3a2df0b149096f267e5188eb70a72516d7902ceb4d2b53196e97fde812842eb18bd8b81fdca020aa6fe0423256d62c239db9b468865de7308e892a9c3ad9de5cddea3377b83c5525fdf7c68092a6fa1f4dde10ffeede3d575db8c76304e4693ef0997a01d76c8babc93435dc47d5d9 2d4978d73a5eee6d1c3faff112ec24f2e9ba1b7fb6b77d1a17b4218807d52f2b9b19dbcf792de9e0cae5a63b5d19876c8747b85820ed5156dd76e40047d604f956eaa13f088a40cfe12d7bdb48dcef4d55bc9d1a36f1fe388b3a18b08c6c814f95e576fd37cb04ac2a808ee2463beac694d5242b0ed37d7ad39f5fedf6d24d e9250097259ef8b2fc7876267b6e4185f011699e91aabdc29d8b6a7b2a591bd24a20558c0f4acdbc90c55a2d946b1ca6462f2e4c6a1f6bddbbb22c71db352cd5875dfcca9eb600f40b5773647bff7062e3a70007b1b67ab5082ac00fb543829efa14c2de67f82af0c1dd2df76f3ecd59cac53780c7a170b66066b1d2424263 9d001bb68503f68c73b18ada215459efc7892b32dcfaffe8e5fd689e264115274a289b99a16f3394e746f09481cf2a654946b67b1a689b73c8ac076925338161fbc0f7e562286cc287afb9798a54d9fff7aec4f29c792e455f803b855898899d4703504f00a83b937f92b429634732f116a69ce1276006e63b2058e59e3879 5816de7cc7b75d480e72660527a72d87dd111c6a598899f8a4f6a61b071e349b61b55293da28c5db5a3e3284d8ca5d90ca4826dc140172a5f5ac7d839256ee9be9cd45eeac3aee11a1fc4949acd796c52de69320310cd143210458cf31c32413b180af54f2a08d4211e0407de959a46b569371a4cc573ad77d6fc07a6932d0 1ac150d96fb3f028aab2fade0823d2b606ce517257883042d716c016f4377b8448fd461a0f710467c429c99db02dcc30a54d6e8ee952d68856c5f47538ff793a38d6fa34cb798b204e7525e898bf96edf9f5664a07d91c16a8e8b4138364fd615701e40cf9a8e0ef1b8d531d544053b3d78665f4fdccaa3a2dcb61fe360752 a79a19da5db010b0d319b97ca6682400de421739901efa66f9a88ae97cadfd155d359948d21fdce3b4722e49d5989e2d5d6fd1e6a3964ebf12e2c72ac5035360cbbefb77bf83bf5e983ad39a5695a64e0584e5e5ea60fc4018ff70d6b725e51a82dc5575759d6130ad57e2f0aff28484beba6106c854df1552da18e6a886f2 f75611885814fafc8a7befcf6afbba04809175281d78f9de0f3574e19584a7133d3a879acc2a76fbbbd9c1dd69eeb348ac699b5c23637c5842d6d3b8852a3864e44afbf1ad6dc72892bc4042e8d4a83cf5006849b4fda58b27200212e40f7b33410366a19349eee37d5db96cd5a9a7a2ec739ec3716300d1963bcd6a327afc a6d3d0ea4a530373c0433418c133942597fd01baffa24fb7eca9ca8925ad3eaf574c3590d52f450a808f81a0c17e1735b7a0b33e9bb87da1d4b1fe5982b5e67d998074e92eb42c9b89a397bbea6640ccd8b85c5db458fee3e9d7afc5e62c372bb5df0931f807b0d9685db68cb86180f30d09471424e233e882fdeb3dedb235 ee5aaf4fcf963a215a0611d5737941b404f56f5a09c1257cf81f1fa5e4c259644fe058f0ed1e5ff03f2812e341f1c32aaa2eec7378146817aa946f974090fdfd8ef644874a77930b7507532e89a92e9b8bebbe2b4f4cfd90ffc1a12d05e40b30d81bd636e56012e6c1aa6c0a0ce10261303b7b87ccc39a78e178492489fae2 dbdf46a22da38c23da154ab5b2040b05a2ac11e0a33d34b5ed1e4bf958873bafba0d0c9c1a43a566eee422f47431b6a6958a34bef02b91b868eeed9e38a6d20d7af1ea66c21dbb0d42f273633f87ced2554519dc51368ed60ccb752090b5e3c756dcd024b7c2c3de9c02a79142cc23b1bb5fcc08e6c9777e1a41e86d8b0f07 03811b3790eb224a6f752883bfe0860715e334946a1c8ea440cd6710674caccfd90db1897f020b7307ba2793036ec96347ccb1dbf78c000e49c8110fa5597e2fd2a0c48ba0b96b18b318756488db3ca3215e958b34f1fe9aea94a1a7aee7f697848a2cc07675822783c9c5807ebcb069f1d070943dd926de12d88c35592789 1a420c985b969e986e0192f662e886d2a5513dea2d839b35d9902d4bdc6752295b761292a63e997c20051a040314c6a86fd3f2f791d7b5371914e343e61428833dfd3eeadbdf6cf368fe636212877d348e95c2882a5661ec1ec028e76e944ef033662cb1677ff63df2a537e89222348d7ce4579b5fbfac2a71b3cf584c0acb e2dead719b06874a7b4f725fff17e1f5935aff4d50691ff781d6772e4e916430f66dbcc522aa88af24b2e30b5e3264558624ef3e8792c142371320bc6d31b0706dc458d81b860e293d47d70e1c12fce97acd06fef46aeb22c8384a7aa66d307867d7b3c90544febf15254b5639724280c08495ef3198afae50c4a64ca1082c 34d1b181053c346314cac3497f15f32946e0f30fcd48ad64ce05db65812e9b256acd53afcd3900add856cc73b2bdbcee4b905f72845e4046a055b441d7e23bdf8de57cd6b7449d28bfc1376bfa7c1deb0aaeece95e9818feb14f5ee6cef4ce55553f6a314ea042c8a3b4f038eb223e03dde23d4dfc21b04afe0130db1be221 639aba016be874d16f50ef548a33c9aaabc701acb0b0e1a806d81d0a4cb21c0f8b7e064027febb8d9b98c0caefe7bc2073009c9f55d10f4b2653e08262f2dbedb6b3dc5b0649abbfd7a3be625944fae5064bab68f7267f8cd3bdc732537f8dbba779e3f50f607720fefcf3a2505bdc44eebe30d8b35a59417693a5d62158d3 5dc42758b7656cb7331761802483a156c5d47ba1926f1abcedacd4ba24a60488459e5a55fde0f56682d3abd004b29438a735b7484afcf057cd4f32733a9caa3ba2ebb778097e30ed2ff7b56dab7e58b4aadb109fb8ba2ba69f1e661849d7c8638faa40318f7e15cff2cfa260da0451cf0fda569461f10319431ee42aedee83 df31f72d5923751745713a3b71fb7b5a7ee2de6583aafff1a77be181a5459e59e8071b6aa9a992e67f7d34a826be2d664002abe68c4d09f21799e33f31e86e2d48b250910d5da3862fd2ba75bb48dee55a88b6f68cfa91bbbb0f08b77c56b43ed295578043dd3675f9cfb7ff2c6cb843abe28974c2e8fecaf0ca923da144f2 d91ee185df2c0e9e1c7ea35a38daf6cbdac67db999ae9b83fac72b22be42a2f63b470c2f86eb552d482294b95f01053abaf7f079d51782d9d0eb7ce9595228a50d9f2646277e8d9df31e26c2c8a434efecd49b53341afdfb41d5d86dcb2ca9a3f48ec48eaa82983cbc69397b76431110f6724e7cc0f7b4546bf41d073ff25a 6ad6a43b8a8f50062cbbd6c5f9b3d09e0f161e942823dd28e01cac4e51f7ef5eadaf6a8dec6853b2b412ddfb8dee2dfb58e4be766cbcf1e8a954c8b67f28d7a6675bfbd581301ec31dfe47bdaef075e73769fb768686e19fe0d5333e5825b0b98b9753bd00a5b18d6c595b5199a1004b745b205db48e43d2e65a4b6bcb7f69 3711f07e367eef6588bb98c5ecc3a951f1826a0db31a440df73d1e8eff42d31322d0730360a4af1c318529cb3faba1f219d0dbe62d2aa5fb998ddbf78ed7dff1169e3c2b32bbf926be863c5dc357bf95a378ff104c9634c2489f944d5070795cbfef6822f991157cbf1267310922db6a8700a85ce19816af9f5009791a1db8 72f04ef6227850bbed40f105effa93ae747f237ebc35996a17def8c2c553bdcb87fdbfc73c562e619d0e22e8734992934cb13c8f5bb6546a519cacb85974919daeed4cc39315d964837dc7120c16faf23d339b39d8ae5fc555ce04db33e77fd890af32d3c21507cd181336b9b1e8de43ffc805843364e19fe9a91c89161403 99ed0ce9322db840d2d559e6e2676cffef5ccda610a41a36e17a3851a9b6a3b196a16d60ac56ae04a23be73f1bf2b6ea6a4dd5dd8fa498c0bd9dd7d64bf26227dbfc0ad2da8b617200762678036f0553f3bc7551cfa19ed13673b7ea9a6386fcfe0a3c18521a2e3335fb4c2aca5b9d10616c657c900c5c7709dd6519406ee7 09189406a7d3afb767e251ff11d55feac2cb7aa8fc7ff10b9758bf12cad01b78f802875cef9e8c25a876a11269ff1c9236e4b9d2010ace6270a23b035ac333d409aa96598a093fd97d73d3574e4ee7b39069daf9608b1e1b910792cbd5bd6b41cc20d10e8eb7afeea758913e8b7e243dbc33a760aa8f73400b3f8b4d4d8175 d4ddd12b49a7157d1f078a77460229f29d8af315e29e5ecb386fc32b41871efc789ada932f6ffea4fbffa07055cd5d47a3fd8c17dfc956132b8117345e17292080efb5bfe77ed2a956866509ac8e896b737639b6eb6dfa5ad97a27996df5ee0ec807ba74511f6a382fbf1606cd813a8b92ea5bce7c127614d8c9cb19369772 00fc8c5b8a615f8a3e583a440860c8602f8803c391ace1c88573dff597e1e1e86a7fa09b762a1743d10e2ad991fc020fa9034f7ab37bfcd9d8add572f89e7dd7132972042f8f80de3300f4424c45449e80cfb9a7c6cb3ced41d03dac06967b92822a15735e0b4b3e856107a6f5dfe5f87c88e83184462df50e2b3dc73cbbbc e7e2527fef7928efa85f72a6645788480996fd1fa5b20f6ad38f20f1fe92de35ef7f078faf9780bccb95795cea7da36a0a59ccba9cf04eabb9cf608f13d30d9d5060f11ccd07240e2cbf82eaa10fa069a9ff5df33cc5f04291b62944d9c541f976021d73d34ef99677bf0c77d976ad480af40a182375d75d8799cc3a98c1d3 db6669237461d98c2c94b47e5d5a16848d161bc6b8d6bb49ceaedf19e0a1445b2b43b5db1ee6e7e8a56ac3e39308adfacc682297cd27dabfa64f4859121654cd4bb804b75d6a2aab1ae308e37c8764ff9a50dbc77d4980780405fe1794527b7b9dace056d7d27076955cb9084426d1318991e40c2c1f7c98445f324e74fa3d d56bf9658fe5100e29d2815142f22c8b0a0179c89389737e4b11b18eb05acee9d75d0d52a14bd709648947c7ef660267aef6ae23fce6ffb75ee208f0afa915fffe85966de1e8aa6dc68d9844e3cabd469f058164af943d7aee1b80e7edab46117cf4e5a804a981404232462c647cdb1dc827aba92f3b45960e791696aa7157 7de6a00c47b6bd5bbc565363fec2b112048790d9f880dc1547eeb9611b4273d434cf00c460134f9903dfa2512bd1d87be35cad3dfdd73409802e40834a9684e8450695956e1e9af26de84a6927db278ece1a728e742e626063b237a101505d908e1d9715f9d0e2a14b5405a8ed94748e2b773b40e25acb42241b241a1a7425 54c9d2f89ac539ca78e0a7e70cac1dc181aa3268d3799f001000f4063d315a7c780dd68a431b156ce363fff3d6c41e24602658868f38d7e6925b226b6a11c7f1e2b5fb67df7e1fa5ed7fa683393ee2b7834276926494ee47562b2f05f17ad122c3e1d91c073f0800ba544e8a40627112d2ede2e24becfff9af3898f7b736c8 cb62c91206aa2964a70c6e079e1c5fcf73478409c4779840ff0ee47fabed23fa3dcc495b43a13f89febfc454c3d0839ca36095af09c48a197370e7b978f7f29fd2e61e782efb3a78d780f62faad43f67ed07340ca8bd96d41f2f2367c57748bc2205df12a4321db5487249674f8daf15014ffaa6c890f5c7d9fbc97a0eb021 93b541f4f3268803a6261f6408009f0a655a5f2aca3bf7c69e344f1d706b2b4ce2e4fe45759cff8461efb66f320e8e5b585261fe966cba1f021f93b0ac8490ea015eb1fbd1f7b5c2a1203480d45661826479c3afb67e7619b8bbdc3202232cbd84b5048d84ae60de9c27e42d08213a7e6c6a89e2ed1c9fe24896194ea93bab 993c754fabb973193ad4cd3b3349f7501ec9da3bef61bc9c37ae15e0a39f7927d931fbb3904e841a61258dc6f9f817f8968e1b56cff47280572390142c3506fad50c1eaa389af430823b1d50d6bbb8a7bf0bcaf00f09a9c416d7b6eadbf3bad6c66681b63e8e982b923eded93676928803ee7ef1a92361c8d463a50dec7611 16fb36b1e5645d6d11b6d9d5915dda307c45768b40ef3eab0a3cd47795857ebc906df50d62a348f1b50e78ab823bb9ca6c5c3d79e4a727d2bb4c7e0158f789a06a5ef10fc678b94678a1494817474ff3eff2e4365abec2ede8803a52ae223bd44a9f6de006f25411203a252d3f0a7d31433a67ba37fdf5c19cb1dfa8f6f2f7 0a20e40940b1e2649b409d89bda82d225da83f7d7262b2e833dc39109a9f7c52d2908410feab8bace469cd5582d69f83c127cbf94b2ba18a5f693e8addcacae9fee9efcf00b43426908aac0d211988aa456890b250072e47c849ac5a2dd3ae7aa094d2fe2fd31b283e58bd247f13dcfe7aaf7051a9d780aec1971985fb6c64 83ad6e7e1d7802bb6d249182642b478a1cda88d141b25e82ba91ef65fdabdddae37e9dfcbe015cea798f895f9c3f2aacb14022edd5a5b613b7c6dd2d1095bbb107b03af6955cd516db4c0f6bf2fbad7da9984948dbd8261a0da69898e70666a1f0ce8f0f657635f50e55248cad29a7e737277b54bbc9a6879839c1652f871f 2f2f37b979dd0129cae254d20ffe4ef7aae24e07191c0a264c162360e328cde396d7717c5e45a27cbe06430b4e35d1b8559c34b81a7ce00ff0efc1c98a07526dbcc28231b1fcd32a3a8afd2f757a4e5867ea67b01c8989da742222c8cbdb568f8c38796f8ea3b9c782ec1fd018284179897d1c09f184b486a61fad60490c5d 474459d960927e73a3a0f884cbe6f1df3e6b7ab90422e701432722286919c4ba13e1292a8f87acfa353622a10115e7899f204b5358fc8b9ed670e4bcf55e76e10284d2912c9a00b36f391477de60caee3c239f990343ec10d47fd989f3719ba0020beb04fcc3601fdb5b19254abe0a3026d47b85c6b2b206213adbc8dad30a 7fa9eded4e736787646900bd08eb1d57ff1af0a67b83f6c61894197659e0d6563fdbadffc51c190338fc5ffad81173827f1bc7a00db84479250daa018efe4ac6fe33b26bd3765dd0d996890b77a82ac9555eb388d6ac131c03790add0e0b5aa0fa2ed569d3ebf276a7aeb9ae7f0746f56148668120fd65d221e670d6519877 52adf0dc0369bbd0025f9c43bbff1adde52942885e9afdadf8dc452b845a1a37eb622c08a7bc0460d4b1b417b36e091edc6302fea4e47939f30d5e4d67db5cf35c9ccccab5c393d4c61b8e88c3dc14c6efa5cdd534593167aed46d9e2f758703cd272ebf5ad2dbfc2dbc7cdb82a4d88253e47dbd33abbcf72381ae994b6b5e d750dab87b87aef008d5a76f5251bc35921c22c51aed2f73bb9da6a9a5d43ef6910e25730556cbe8b05a3578109ca2dcc8821b223ab51ee27112951825028b7d48de5590c4aee2a94c50d589644cd34f4a8c027f98d769236f6203344994b05b4ffe317137d0dd6bb13c32bd8a066d2ee7915fb51d5ec2a2b73605a68a6a9a 65c1521ddb30b74e5d760778f1b1763c0c935fc8119e41799b76304fd3d2da90155109fd20b31cd661dba5decf444ef8431b3edf47ea1754a2ac96d27342a5cb09611b90126c884ffe27f7cefa08f6b84b023d3095ded200a24fa692e84d3ea4159d90ed93e2cdd131faf7ae0ef6367915c47ba9029e58550a36097ae25c8e df5fc9e8a3568d36d08e826b377044214415bb82271aa769160959d78e972cf5a637fea493fa0291703e6c922e0a4684fcea3e0c8ce794fca23a154413b095c0a2bef152ba57d911fc3d9849e7024afdbe703b4c7c959cbc01802f413236999b1a749d3a12bc3c190881322fbda197a84859f1d4d7ee7652a5dfcfaac40f30 dd003f807e9893e2c6e7892fda5a67c90c344f7220b1025b61fba8651219c6499080e37513bf84135e95ccf1069b3296df6c6b4bbe46f064cec3fd60a0607393b9f29353f3cac0ed86ea823d2ce65174c9d69500a4bc25fd8ffaba8813116c621d3da8735a0e13caeacd7a8931b358f75df4d5574e0461327b943bba799c67 993fe07bb180375cc36d07734ea13a92a3d7afc1136938e8d4059c919b41c7545ca5d469cab0edede80b627d31e987235f2350ff0c9b75a9e050b0537331e70f0df6aac3c5581bffdef5d1b24735d15976566621ab52b15a1bd4d6725e5d5a69d5e2867d209929f1184b8478ca85fe04dfc6fdc0164a76ff9e5da5d3a68d54 e96463f64d34c9e0cf7133df9a8c18a6689497adf6a86e82f71d89c2c8ccbfc81ed616d66ef3f29468bb57b236a3772889b4ca39bd70d3b9022b15830bf43c462a493eb29b9b2ae43f07dc29542d426e659c682f89f2d655e7d94cfb508b25f57dda601e1df6c5cec8f8565ec110bdfd1ae69a3a84c4cbf12929929ebf575d 7082d2428dc0fdb93472f793865a325f3ccd66ecf9072df98b55c6a788264f0848bca0bf864f4a0d4ec941bfe339f60ee9e6c3ac5f43031c7aaeab97f1e4831306f8911ee45ed10148b51efecce6b7293b8f40b4642af614f204af6c072b48c47e7074822570f317a5fe730e59d725cfb698db0ca73c95a532771ed2cf19e2 729dccffc76b4c9b32280cc6cbb1e20bc5a016ead5820d841d61614c604c7e4e50ef845e90c140d0c1c7a312634c59fde56c147a1c394280f01b78d28e70f31bacddf09cd5efb4bb51f956280aef96e617b6fdd5b2c3e9e625680a34dc2422fa6efb7865ea061c8088681532d8103b7781294b028efe0b64900a9c240bee05 e73683859f5515b3076c435324e2e2c914b76570852a7b7f562efb6121a92ceb9f1d37fd2b1cebcde72824d0a6c1e91a451be797cfbc3b6d47759ae09b1edba945970648030686fd859afa8a6765ee025134bda9c2d6b13c22fc48412c9039537a03f831f3d292d43958526b9340a0489d9d7808e2904ec531c7d56e17592b f62d1c9047be95c0cae9be1785428ec40897fc27dad0714654ff8fec5d7188b396304161dd65ecb626ed34364d4b06610107c20cf25338a3160ed462c2746b21f774e8621a1b7a11b6ab41a727a03011516a993a8bffe2b72ef23c0f30f23a6a0d41c579ccaf0c97c19580f3f0185a223e526f83a19b4477e877c67851df59 0d1e29ec76b7ea84bbc7958f4fafcee76bc0602e09756e324c67466dd46721c92010a3881514b25aa093c1f4709d60df96bf47f2c50065253f2f3cb16d66b5d7d8d8281db3632a6adc24df76a72d4ac515157347ea5ef7defced3beeccc46345efc52c6b2fb3a06b8d6d65258ea44fd63ef9f553882f09c83a776664ab569f 3ec7d69b8730b36a2ae6ebfc3fe3646e286ed25cc8325154057ebc9edabf2812fb8fd247d942f254e5594b5e4ff122af8f04c9d8cdab08003df911456236397c51b4efaefc1011e3b3c5d64dcd35091626b951cec80e89c6cbb9b471b4314e5ae0797f7d10c5505f4a421d02af13304eec5414d548c36d3c99c8efe624b310 792bb3b5fa229b08479ea9385c55ec505270902e5568228d5332574eb1d22b27b9fdc57537852245a273de669d25019f771a7a5c30d8d337c151cd2b776cbc2ee89351ca5c4ec2555062cfa668bb75f3203411a71bc2ab5825b9ebd0621893348fa4b8e8b4d9e458a429d6d26ebea99dfa01b279210c3ef464426627bb2c6a 8f4ffb219ce04a4564015575888d0d76e013f79ea964187a0d6ceae8753e18bc7f0fe928037c1eabf3769214975c73f5ad3f0b49cc80d8617e500802437d9020a4a0a0e98e43b9c16cea472c0d5e4bbbb7d54c634e97228f3c513550d63c51df10b22f710ba41de00e3d209372c276f7b7530260b16f0c8bf273cc6980f6d3 63b94a94d8ca813eb601a2f07328cea787abf0e00a5005ee49805e58d3c33a5cf090759df241ec4c871257dcd3fc0e7d083a967fdb3fe8383341452716ddff24799d651bc1e7fd4931c0e7c1a868846c77ede5c091a13a18c09d6d13d103bcdb5a77c16296ff63263f0dd68b8f88d3ed3bc2e48ea51c5c18029720be5a64cc def3cd0c101b4275d973be1310960788860c4b6c05eeac7d827bd9963cb0bb5e169b79c146614c4a4842d5d588672eedeb304a89e2ceaa93d42b601d5aeaf79f9bf8a9fbf18b926cb2e626771cd7e2e07447d355e0257c22848f48906b58408a8137ea44e90ec5c804aa9700ffe0677bd26479d01317eda6821efa7f341846 d3d844e272385add9ed441c15b8d54eb50614bf2e70351a328b55997cb0e3db12320bbedfa1044579bbfdbe7380b6a3056bcaea088c85b97613f13ffdbbf6c237c25dd8e7b3df00cca0effbdc389cd5937ebb2395ba7d9c11253d8b7fae27f30895b1107dd460c78bf21c2022b328cae888ade147afbcb01a477d1561a322c 22b422281444c30d7319627c12f5775b7ca56cf58c0982aace7ae0ce84b5c4b20a664c8efb1183e3e673e0b689e43c45a7754c3c1a30a3094ae9ed82f5286293ad4e5e92ec9ce384ddb545f9a00723800acd1669706e0a5708679bffc0f3be2831c28be5ae64f8535c28844f5db6ccc8eddaf97a85aa2b0786012da0d69945 13d31e7dc3b4f1611db18db7ec703facf71326f9acf586f0bd32aff925abaf86682819f37e8f6904027cb5731228a512094e166b149d9f3b0d0eabcc8ca6ca6c41f20985e8eaa0ed74a3f7c7982aa1a4f247eb08f6f087bd8ec8d789c6fde9bb75e294ee405de885b33d192b0cd0d0f51903fd55453666bc10072579b21b3e c25b6f0ee17043d7c83ce1ec05994da4c403bb51ea25d27b084fecd5e596a43d37fb6f2f2d5cee95e7138a4ded8cd60a9eb83771f1f011975e2cfc4f1ea033b7240a5d87e349831cfd7e0bb965df052282298bb25d0c5e72ae086ecb80a5919a0066f2ea5885d112fc08d5ff78308aab9477f3eb94f23a9af9166901d79ff2 a3ffd58d7a8062b50f4b1ef73ece442aba266ecc05d275750f17ca0af60872f9472e327b5a5b781eae92fca9589289297fc04498891b33a732b60eeda5e8941ed72db22cd99aec7687fdae7d2239ab496803fb7f4521e3e1b1e5df3cd5559fff7ca4f014a7ab3c712689117a1f66ca2cab11b1a930336d56947746c2c2ebcd e8fc576c053ab8625061f909243adb5691c22bab9e8307f1aff9596ccb5304b1aa8451132b22171dd9b0d104022e3fc253ee07e73fc297f75ecd4646ee6a21742e033056e7a826a04f7b525402656f8500556e6e378b7051bada5a095948a1fc651a681d854fa51825033233b26c4ce62c905bd1a7d5a4668301759b2f7a02 b944cfec5c21b918e4b29cb3af1469392eda968c5b4df27a5e623661f6105f7746c4150d005b6c1d38c731fe6f49ca4fbd6a282322806f7c0907b4d6fea19153f465fae3dabc3ef1f9ae170653ac71bcaff7a315cad72204077b92d508b23cb237604859ef8c2ad8490dca4f622e16a60871214b719406e0937a14e7754fcd c286d6746d8d299203d9578655cfc574a0fe027b3ca449e19facc444859f51ff4a3e7947e76b941bfcde9e91bf49e424dacfc7f3f2d57d764234604908d44e9cec3cbb1a5976cd882697f2ae69b46888edd364f47a528bd092954772b3592b7108cd1bb60de961ee82220f4cb2521f6fb64ad02161bf3c3055ffc7d97b24a1 e1552a5e7f3d3abda7779b7f4df6f76a25258cd609a959e66f301ebea94faf846fc6c3b7484d4fd1f2e34c1840944579a4710e7889dce62f1aebfa5693e3333f1f9afaf41439c9babbf49acf54571630ca58ff3daca297839d4384c77d00d3f656da064b7095a18290f52e66a6020b4c0d0e0e6d5d3af818670c51c0b5e5d0 d20f125c0f4405627ab5a0c4a6d74a77ba732afcebd7e9c8b091ab697c53e3bd5fc00dd745b80a3521ccd233df15f7fe9c40d34a3ce3ebb52f2c729975902d6fc955a6fef71d4dca28a8b36c1bf9898fdcef49546e82492554940a17cff78d5e59cbc295b5082458ccb0e81ae519e382ff1fda6caeddf25fcf96b7b35bd7f6 dc16a78361c8f0cda9c88e29175bce6722a5a82cf04c712c5404af8262d00b2dd59074f26cd668c2e5b0cb8f158e18d20fda399ac84533ac81a904b1ec24c082cfc266c6b28b15c4e563a94e52e5230251850122eaa893d6533eece0d6b59ac1d669900cf4a347b74fcd44aa62f4d4684672d7602ce25106be3234494c4b01 c17919d8507e7491902ee48e8999a9658b97ffcad2e9eb49eeaebd9143f556ac9c0d9ff4fd73f084cc133af1315a0fee2248520a812f0551de463a24afc6809a68b50bd49b329d9a83792331330a1cd3002df4067518b88628779584e2ab85fd4fd9a35777b518ddbaf58abaf95c932db9c357984aa5ea5ec4b0f211693ce5 6db21538d1477195221f4326bbf99a4bfaa9218ecac3fbebb492d36f75068093cf55fbfbb8187ef5af1d826c8882c499749bebf3ba5c515e97de3f0c222e81f03fb2d2bf4b2932ebcbf154ea1714225d6fd78ffa775de98dd6c34b07342d950e73f9c1e779d19ad24f07b27b7129c5db28bb5a729727eb6c1f0d0dbf87732c d7d49c7b0d7159315ce0694a86dadee6caa516ccd24d35333855666a4e59660aba220b351a8c88e731b0d74d3813fd56eeb24adeabe6ac2787f6d76aee2787f53e8238aef7950be2ed09abd13a18da9267f83de74522855f0cf1c584ecf29d139a14f0c6432b1ac22ffed104590e14742df17847e1ea3be0c387273bb8e121 e4ebea0be5c3f8dfeef4fce37c98edb6ac1a69ecb31ca57fdc725013de578c9d313f47b3f120d09f3d0492f9bd5da8c890005e82eccc396d550b8e35ebabe2a8633772518d10d28a7e8981cb07b9ce1f9889e3d03ab6f3f0fdbac1d305c617f9a50777075977b2612deed34e1296ccb8891c7c242965a397404e00be6e8274 22cdaf8da6357fbbe3fcaa932cfcc8336bd56ac33950900ec0d5a843faa9dc64b77b3a993987c14350faabd948b3987a87060914724d9735b264ea522ec6df689c232e05c90512c0f12d5560de1890866f09ec2cb4967cfef0656260f54ed8f0245e3c2bded20c3d743028214b4ca73c7b0d535d70689039ee0a8019cbf62b 18b029f48e022f1ff1f12ac795ae12734ec3d0b7899259cfd31184c428c761cfcfc1c0a477999e7d3595225bfc500e681f29a1ea66fa80f98bdf39a89d5aa56644162aa4ce28842a529b16f780eef2e2dee7511331804a58680c81a0da811283e1d572bfe58ad58fb563ba903f5a27ece9bf6df047bf61d7cbb12dc63ee348 a8d4f4166827cbdc406327395ec555902b51e8f03850da8f9542f0d253fbbb24b0fb992572dedb700ba3dd338cddee0e532256f2c29ff22e41eaecf8cea2090fc8ae42a0dd2406d3742ff95dc236d83b3243b45d2aecff891525a0d429dfa9fa47d658cd0b47bf508daeba39be9126f6435fd3e21ed77b884291a52b1299c4 13df2bd32349ce7ad44d88719bcb3452646f5bac6d04c51700c96e55608484ced972b512418b7eb9bb6c7873f3d1477a12364b9b27f6feef2e3607022abdabb8249149acd7ba821f811af603efe20409f9acd261e53abbf3503d914db79164cd7ac0d02af00fa9eaf159c6ee1d4e6645c1db7998141e647c1bc3b2243bf3bc 6ca9b4643147fafb0e0aae1fe24569f4615857487f1be9865131764f8c6f0675ef6798f18ad4e9d5ec26dcdc5a7889a31a4e3a2c97933617b94e188d2dbb67b860e85e0b210aec97820c5a15f57f3ec6c846f6582d9f0bf99ee05b07abf64ccd3471a3010a63ebcc7cc39c7720f46d91e4d5b7b59c88da8bca5917877939ca 96763ee87f73cb61edd167d5d13eb6175c084cfac84ba56c6390455e42f474967dfeebc63a996fd4e849dd8f9692ad4a28e754f6774d37fabec8005429d3dfaab837707138266056d79e3be5ab060f6a0947a2db1220cb7b298e2969f2e8f4c14ee511834d7cf6ffe465cfb8f7c739e4526b13bd9aafc6c7f6852095aaf1a1 9c9ec78afd3239a5fabe695b35b631c50aaccc8c4124cd9022dfce5cdd83a7c1f5cf0e8646fdeee883831f2b720e507c722c32655dea19a26e4f4dafa3f824c2abccf063ef765a6480956f88e58aba6fc8768fa7648f75633b55808d08e64b9186d6c71de1e6bd50c290db15a4c89014472934ef315500666aa515d38262ba 069d0581681441740a4b7c1d1ca361929ec8734af8630400feb0ba59d8432543e85c5b2649c024eeef3f30042eac1bd6648b0e83dc53215058cb828f2a7cb910a080e3fdce7312e66b529bf17d4e5a86d52e206906e431f83051b401265f0445f0bb1f69ddf256a0408e0b8ad9ceffd32a9ccdf7b9402d821d739e06074425 8c8ee9bcf7e1d23369276e58afbb0482d9eb85add648fc2b726400f4a5918494e6e14b1d46bd01ad303464b4367364d5755cb7cb4c5f32bbb37f3b7177be38f825d370936b3d291a81019a46ec2bb79a3edd0ba525a5e016f0883d0987d97e8e6b00620bbce266fd14978bcdeb8bd70cb0997cf11f40266a7e5056217917d2 e720e55a923b7cfb5756028d34e57d775de86c7aa56cf7aba899d0e77a72e25dd80dd8adcce7c1512eda0453c760cf36a2cfa296e43cfff0a6dec28113a1889db68f0258dfd69c291b581bb5b40502f9e18801d434f92f7d03b6ec16254357b57ba5a4bb0e4d85297e8c4dbc1cdc80dab172421cc1c1dfb10cf2c96d524a8e 99638bd38eab05614784f94ef1a4ecfbd816092e18c9ab3daff5738efd79b51db9a93d2ac0e80479fcd08054e0f5399deaf6398a0838da62bbf4ebba55b244c7f965af5f3f641a39455a725091cd0bb3c16c9edde9269b586955e5a866c9a530598aa54957dac68549ff77cf685173061a2430dfe5adae6a12896d5952cf37 53459b93cd30e9bc76b0edca624c3d85313bc5bdf4cc76ebb82e9a43d95bcbf7325a8182f07aa4f056043340dbf8ce6a187c1705a3897551bd0e1dcc8f3fb09ac53c7227e85c070aa696fd3f66bb9dbf2610ffaec4ba0d37e6acd1c340ab5729c1fa46caab96fd94d4e212ba097252b701d72855fdd72c861de1d69d0df79b a57fa6ebf631574a83664223d95faf416468fae864dabcd2a71da5095410d6495d2ef4868fc7dfe72d77d7f30f09ea3a4009d399e9998b37b7745bfa5b78465c523984057aa9c17ca428787c7c070deebb7e4e3e3c7429cb697b91f5af5a46114b788df2cc256eabed34c857e1b1e5634d19b7efdfe2ac2bbb4285e5f72b65 aa9cba9cc7a9af330f1b7cdece551d71278f8ccc3461ccd7c6e4ba4d693751d2f04cb01c4afd6c34d89fbfd7123f562e57845156214554a9480d600ae594442cf92821b3b0bad2c77f1d84cd90abc3686c7b6f8fe8c9e623b1e5fb5cf14f374ff0730e8d51fb6c30a3dcf3540683d0e6ba226e35e4aa80e6d45305d49b0a59 5f84e36b367c2b1662cab9e4e5f359cbf8bea18af2da7a2353aab63814f21813f0145d8fcded42fe56ec9b90c973c7e9ed3f2f7b462a91787d5d34b8a30fa2c762410e727d8544bfdb12cdb62d95df6fb0afdc872a78d268c3665733e153bcb09176b22093dc16863793e3be3034855d0ef240d26680c9906debadd330bf92 ee93ccb0099c2701a2e71b6861199207c79a30624f1e773b3fb5ad8403d23a25f6c53d49b16640410dfa2ded167385430aede652a61150852546634b92d2d2a0a99d6a0467de61f35cc49c29bb3771bb235fd6339cd257b0e09c96574cdae1182f09d27d3be66602f220f9aba917c0d3cbdc9bbf4d20f93c11a501b4cf6c67 974824fc79f3cdf59d6d10772df8e005ba2b70dd5161310dff02b12f1d488b8c07de7842c33f753bcb3cc10523beeaf1a0f655194cd977311669bc368fbefc526d81c88693b293b5a64580422ee11c776b1e7d4436cd18af8f1dbc50a4a5106bc781a1d458bc7752e0f06ad07b63cfde6abef355a42158fcb308b2d0e25861 88b57974a2d301378b9fc9de13114392c9142fd4078fcc33b809be833f46e9de93c2abb2c6fa5119ea357e992f1e879fcd80b7405693cffe7ec5bc4ee461640606672f82754e481e01c5dbe0af11f18d17dfabbe342e190e7f2ea46d0e1b32ef57176257cba464850a66d7761322ccc2dfdff00ef4e1032081cd01973e8233 31404d4e40c08ba9dea78025aa6830004412d72390e69cd74aacd88692a880f6e9d2a00a77c52c9f96861a2393b732f31d34198d88a2b7e138416d3201a0bf6b23f6d0b5e57176f88edfb439c4a3df4786ae8802e29d674b05f2098d6e864acbd1cd5a1d9214106e4d85f95dab48095f8fbd9268073df742cbe68577aee0fd 1d7f84673fb1ed400822c6dc31d56a22d150eb7b01bd431637f7e263900860114079fd7e0bb2dca152575eb5586bbe1aa71bb75febb12b5c39aeed0e85790c2843cde0562f196e8f1610bdbddf21080a38add8da17ee311b52fa4f92ec20ac43c7f10bc189a92bec2d26baa9ca95ce5b950af2dc1feff04955e9bddec88369 95028eb37b408c1afc08782a1af6fbb3e0641834f37e2ed272bb37a8e92b553a7bd93eaaf597404d87d45d0c31c234fb11d0d723fdf8e9d5546112caeddd83b729c91cf2d2aac2b4e002be7b0c6b214ba0e16c860790ee5e1a753a4ddf0e1b29ecfa534bb43a7cf8fd1030049708cbceb014950f8e7f367128e57680aadda9 a05e546f62cb32cc19e963ffe2f374ea3bf7ed9a5affa4de339f60e3e1aa7d55361705f0d3f8dce36704be4b500ec2af47fb7266ca37ef664cc33c3b3bd2dc644477b0c228eb3512b18da8d56ee1da0ddb38c757181a9e70f7588fcac1eba97531337cfe68e781c292ecaf5def97b4038732a9ac7d52c6f76ba36b888f8ee7 6d6db5094d638d8551e3d3e268c3ff1038e1677defa587e988a574eb7b598511f91cce21ec212675dfb11c9a9fded970c837fc270ffc5a5a7b0b07d789933e5e49bf8962902b0992c9f133872ac632cf9bee9de570f5314c1169bca817cf36bce129c3fdbf4da6227420e3d1408fd1099e19fad087fa89d9f2bbd8e0067ba6 935e8b349ca5f1c7b43d4e69318472985ee36368641d180fdde6f6044fa6764ca2834b873f137c071f4c197f9d1a5476c59e2629ad57b539b489154e2e9ecf8196ff7e48fb4d9f9ca73eb11b8a72652ee4baf29735f3b38e630dace9ad3207812cee35810ddeb466a9768dfa90d63b5696687824bf63b3f20ff57c7f6d0745 b6f6d4f7f6e397f79e655c5991dc4a9d65045ac0d7dac4eff8e71b9095ea8994a053bdcffd375411ffb1113f494fd4fa8dd83f9bdbe43533bf9a2e961f93a47ee6dd8818edbc810391caf25d8f13053d86a4d264b0a03832c372fb1d194e45d8265757b5573cf9d988e5d5b164c44d2ee7ce02e6b394c7ea709c63ea793e3c bc7d5dfe6b5af6b32cf1a0303a8db5b1d9b0593416427efc5cb5fa968c35decaa8262610637679db3865faa20a700b4cbd53dad08ba0f20fa0e79f9eebc4df5e77ef74bf50b341b30cbd1623933210a9c5aaae69c3a9cd55038878d221f80f98840d249d066e03acca0787018e35e9299e26118a787fdd9085f9374a49c5b9 6dd39968a836ebe7203388d39431ce67c38b5d8e3207c672ceaf4ffcaa946932fe26b7d4604d365c72d581b5d9940a4b65039cd9a0b79101c0302662d10cff4c36d8876fd34affd9f7696f6ac97a4d535fcfd57d4e3c3ac34410d87443850fb19e0b988193de149fe0540aa5ddc8bc71ec35cee91ddee93af5d297158e8e9f 138c5b22d5b525724118dd2f1b7d77466b76464bfcd45967ef53cf3ad2dbcace50c65d22a459bef414e170491587596cfede9767750dba43ddffb58d5ec0b5d4bad84bd8e01e2bbb102128a2975def0d7a5823760c697d522a53567d479dc5c3c7b1ca78942a1ea8706c4d51b05d01888e0ac3d25c2fc1532cb9c286f3d6c0 cfc8a0bd5b0e6b3bfddf15b62a8f5042b4f8d74c14c545845f6eca4acaf9f7c202da7c4827fb23dd7f362dd9a0bffcb3b38ee7e3bedeeec45fc799780a7ff895ff706e031ae6ad7dd27dca4d25ee572b3d275cb26cb80593878f394cbde2f2670138802144698d137f7f61467ddcc66ff36ff5ac38fcfa506d7f6e7ceab11a 04b3c9d5571f5fca27f46dfbce4c3e6606cde136d78ed979afed5d956bcb25f3016b03180fc57f4cd1c8bd8ff46d25fc6fcc4ae5dca59317e0622a31cb39810c09061c36c9e18f35faff8590442fd9f02e4fe62a03d85266ba883e1061473dbec136c6d25cfd509269f171fa4b534a0c1c78b0182e5ccd4490bbe57728fb05 45b1b1dee107bebb0fe8d43708d334806f1dc2ca81c5dfc42b7d81c94dcc94e84267e94c1c3c51abf261dec41cfc8cb5cec2ba4e0b2d396d6ebe64cc0a12d0dee8cd816de9a88cd5290e09568d4835815f85c10eefcb158282e82637783ff09b804e5bae910d4a10835a16732b59da547c887e91e77dcdc14a03d0103e6dac 4a71de3a186c2b80619e4e662bcf456ab0881bfceb432d9a5cf87885738a2ebcc644cc47464e6be60002a7e3353b20306834bb3adc80a2f449bfcd0483499cb41e5f83f58a90eb3ac8ac39d18622b94d9827ffe5b4198079d523877f80f7fccc976967d679f05b58eb75c337ac6b33f99cfe113bf0944b585516258e26eb5b 576503f990d3bb07c0fd1e7701a1d5d35b356b532481f31e759a7a085c46298ca5cae19975ac550cc30177fbd684c75a8b3f5aa3e4c963e0a4abcd7ff6174149818996eac898cefdc91b402d270bcbf5ddaa851b6cc07fc6d145dbce645f590716ab70bcab3764988d64622c901e8ce8cb596de839e4f01881ca22fe064b71 42807945ed70ef2fce6a550d410c7de6ad4a8be9c0141ce4e3e0f4986b0d14279be49bf06d2fdb333abea4178c782eb0ccbb09679a791a9c7c671820863ac8e1b542718d543f9a90a10f67ae8dfe91348522e631eea42176e1114167a8733224f8e666ca972398c5d1b88e632132a9913789bf74210dd112634687d0446d05 8167805a14ac50e36d00ae9335981a158e09fda16d2ac66969e02269c428aab24ba9a7df8176ffe857a19765b62684e5f0886cb1e55d6c67fb8d27f0ff020607f2c8f64d12c5f0861da372a0a58e36831e9856338c9b5150af16ffa247199d93d9b36477f066b1eb1e7fb9fc6279c7840585faebf9e3eb4e998a52352ad94a 4a45d002aa19fc2ba8266ca466682915632bc3cc85acc844d4497cd9ab2472498fb1f2a36b79ac2a6e1818087842648d1797a952c5da3cd33e18fc11f87599983bfbb8f32fe3d4d94460715e1b27f0ad7260b49acb60768a868fb80c437624271683a1b34151b439e5a843f1f3d8dddd02d3ce58d8d97232714428ae036df4 f6e5a7e3ddcbfca8540341171a0c0a07269f7090477d9c6a67a2ee5ffb3a7028fbc0e95b3e1ea725e1595eb4fddfe71b34743e7f4ce5fcb5947ebb249beefa621b9a9992f46edf5956b8169181ec67391c190efd17e30e6f3ceb3a8c9f40f0672865137265bec25b2394b4d8b5962b91d47b5b99f383745fdc2202b81999ae b07d34aef93e722caa9f1d8a6d360f41a59bd4ca0695c98e227496c01a39508cb86d3596ae706738fc44f0fa2bd53e5ed35f5a21928d91468b1d1d3799d1d7d2ce47db2997078b34bd8566578fc6097df820385c7333af6499c5c32e37488e4a4bfa48031c5e7a5773cd783e31cb5a47aff0633d40cc82fecc80b4107fb35d 12fab16b86856bf8b484fda78e1aa962b06d046659a4a52f3c3e473f2739a3b2191d38b0bbb47cbef3eb7872cf7a3ece0517db01d9f8c226767a3cad9251649234ab3c653f00a03323c668a1c4d3bb5e22a4ce389414b62375f25902c00d69d34036315b5d581f509b8ae92f8bd67bc5a84e6f0ea6d1631794d60dd1fb58ba 569a4df3141ef04f642d63a4e89d96c01ce9b0c5586f41a5dfaf2d269edaf135bf06ba8649e14e93f9acdfcc5492c335357cfcf305e5107a965830cd18cfd8ac6a0b5c6011152843e3b4bcb8f71470aa5d99e7ccdbb507c80d2ed8f70a5f6328080515fa6eab20fb154499ab9bb39318b8dccfb2bbf9be94e32dabbe3a2d28 e6436f72e59cce23dfab1eba104222c6a0784d51fb0afa5cd0e6894d75144fe1b59a3013a5d803d54ce702b0fec134fa764776e72367af0c5eb20e6d0affb7171dac5ee7a73d56b1625584dc79228d40a28bbd05c494b4bfe672eda6faa95c9dc1f35f0e16bec2f87a2ffe558bfa047964cc58c1d7a4e16d4c6ed27948593f c4f608370a8d01c89c0de9b300469c2dd99acd189e0a8cb56ed5dabdc6feb9b61b594458100f93f9243b90761a37b04a12312ebf7e91f68882e38c1cac8172c57d72e9c4dc50154227254e424831dd418ff4e28b1f3fcaac56c5d8ac68fb5407a94018a97dece53afe9095178a9f8802c6706aefe9ab5309d5f13142ef2c04 4df751d282135e65cb0f0e1f1872220526e247e00bfbc79f27e5db089db13bfbd73acaff9e8b19f1722d5487779f2eeffa470a0f2386e03160737675ab5ef85b15818f8681a32939b4f87eeee7912d829619050404ec25e1f21bfabaae220cf98a98fff0dbfe554ca6eb01836e79764ee984ba03621b439e7fbba1ccb1616b 28e7f9871380fb554f076e677a049d59952b134c7a7cd1c9c637e5337cb5f356d9861c7c7ab7f4efd96c8fdedfaa7144c48e22be3a2cd989ffff2cb6b4ddaa6c6ebad073dc111e3794ec58c30d9a3a7028778b3b04b4e8af09243d0788389819ef286cb9eb496923a9dba38861d332db79fa25c06e69cd34786ae0b92c22cf 8ad20cf9277d53fbc4a6b8c77e9033ff33db0b781a633833f6767a4aec343694c8bda1e70caf773217ee5bb1ba945ad687d9ed151b5e61369ac7f13b9630b85aecfa68d8dad1027c0d25219c6b068077fdf1b62681f3d624702793b1471193843e5604e3e0dc657bd8e850a33b1746c0c6d831a80155f978f10517ef843c12 54054a4804d221dcd3a3b78052733e0ddfbdb3041ed9a07318c7e74ce851e9b4abdcfbeede6eb780051407b9e5db01e3fca882f0bc4f560dc041b97ff12bb2cfcbe8c0d779dc839f8ca0ceb68e27f37583232d2563f054b8dcdd737a48f709c930de8ae87837eb3c2cd55b2bcdd143df870334b3290e275a268dffbafdacd0 8bb5d8ea5c2e35fecb63c4d0d5924a413baad8a6d9099089c6f8330d9a9c39888cbc2a147daac2e81e07059c3659718516e1d71eeb0d29204256078b6a3eb0772c6e3135617a2a9c4cfe2170c4e66a56ad8721c08140805dca7494cce6b530644beb677cba28fb62de4c5a784ca5fd40246321c4148844219926b246bbe86f fb642d251912e64ae152bcbb834df0d6745138ca65bbe7cbbb3017323450dbc0b47f4388299799c252933fdec374fe93457e94224db816a7c458bd99b27a32c7054f302518fbd6050df1ddd7b6a05565395458968a436f66fb42776ab4cbf93f6271a0d6a1976e01332ae00d13e3bb6b789b1e152b934979ca6ffc0e2638b7 6b265a118d64236e2fb8caee7c5c870e73aadce6896ddd9b9908c1dba575cdb5dedf66eb8cd563ace22069b88c277774032f78e206598042207b1a249393294f792566bd6e7aa539588e2a9c34b9e00e8854a9a091f13bb7948a8185595228250eb4f02ee93ffc0c25b590ceb82946ffd98d52f92b90ef81f62b64b16dfb6e 8efaeea6fbf813ae76176f3b67f457cc4fed4b492b94b786b294bab88a3c961d191b4d8175827e788f5bdfa0f5974858020010dabc8c504204c43d1a9bbf7079eaa2b80f544cc746322831442282d81875587eac06135308d67adcb2da1500f77938b6c9db8fdbc7f197162fc167422ac4eee1780af60ef4b4a6cfae913933 d3f5b5a1d8d528678627339bef3c00d89ffd0b0330852e73674cd267bc1ac47827b04e3634794829a485140ed03c6b819895c14138fbf11a0cd1d13afb99fdfdb737f674a9074a17e0d2059fa05fff30b00fd1d2690c93a302a56bfa4bffe9cce42534429ad260fd9c8b0e2256dc44ca584a657f0de052c9de62a821c885e0 ce9c591a34c263e8da2cded07ec24f8d5d329b9737b1fe831c7c3b7e3d6ea7d0be02bca48450dfb6dd69a43492f84bdf7ec0ae34d39041757d87c1cba9bfa5951930227a67089629a6603ab6431b3887b581bce57d4209252fee3e51726e22799b0132fbd263855e69e25aa4ea992e9b547d4704163e01598d24d43b43ecc5 4605b817844f37454eef1d6d5c6f4b602a35417c234ec9b9ab9f26339d0cbd39aaf696c44774f65dbc64d70cadbfe02c20f965da9f57eb02c8ed6d9cb883d2defc824e8e7999ea2e928c523052af0c64a997664c2acc9934aa5c954f00ba1d86286301e13e2e682dae8e006c52665bc637083795b91876090b3b23199364fc 6062a9d919f462b2e5daff3a1aa368397bc496e3fa6b42bbc17fc37665dbed43ee6b1fff57425b87fbecb0ba02dcd2109c7f0bf7b3e19594f3b2d1d91614fd8aad2a833e538a90263b6b7e87f534e4dc907ad019d92ca41f056c99bc1e106cc3466c0ba6b04f2c82609e88f236d1109d1c18d033253126c843f5137e2d5090 cf568d78e31ac03bfbd4c472dcd6dfdc24d97811c168a983af25f6b4a1add72fbde130c5400e517a2df5ce122eb79a225c4b6833842cb9467c8f9ed591cfafcdfdae91b8390dec86408afad08352e259cbe898f62ee66640647d017e16f2b15f898f51d488d91057080f660af85d313e7a089c497000bfbbc4d52fccbfa314 9b22c7c520d15dfb8743c3ddbdfee9379ce5f3fac1af3dc1bad4c17f24bb87ad43c92e339128b95c42ba692a8a65858161562e4dcfc5e0ab661ba96341d000d71a0453d9e32fed21dbf05290fd7a6772730f5bbbcb680f31b566a0906f0a1f91d463a1f20103a6e1a422d49b578ad89a1b06648113a1c4470ff421475bc427 7cd96cb5e75a33702dda7ce2d99511adcb4b08f8c5a99f775408d61226455234ea792ec345a34404c7e8b7db8524306bd6ba2000f85d5665c5414c734feb27e41e898b2b226ceb7c09c45fb97be9c8da15aa56009380589c42509a7e8f6574e930b20b69f5cfec97dc753a03e93c5ef69811a32f4b1d23a9fa09d615760e85 bd9a553e07b04630a99b41a3c4080b90f176b7ef933d8e4113c8095b7672c0a2bfceef163775b2fc753f4293c39874d3b58ad3df54fcf04c073063306a313c63983b836c5454875166566d9d8679ff1f7316f21bf55e845330bb25d2a166f4527203e1c3d0d7925f08341ba23a49c01201d4a6e62efdc12a02b7d55d1ec231 eec6b63e30405f3ce78aaeb2102c2527121906368ece6b0a912ebee20086e095b7f1e9deffaf29f7a94bc87702e2dfa7356b154a562598cdeaeb53783ced9f15e01924ffa370cf055a45a23deda4a4a561d66d46bc4d0c1d258f65a342cddf3b981768677c78f0b7f0f9937eb88e925ddd347e36fef8cb0f75316c64409212 537af7c22d72c558cd94c52b5a8f8636e8f4097de899193556034a3aaa2ae72549b5a7622e7af2a72516282e7b0411f411da79ca95393d5ff9488a41dca4081f2a742f3d6678662cf590fff1a4241bc6cad596fb5a162dce70ba3501f24be6cf3c022e4b23f175664bc2d422019e5af0c1ecd823141a9046ca0b095e81e88f 1ff817eb6a7cf04ef5f053361d954da1072336c22c6f8bc733cb54801c0bcb121511baaae113ce384b3245f141f4389c3df3a58922ee64574c5f75d74f76b11d21747c3c6578754dcb2b4451938c78f44957029f9f84e4204d0d5835ff585327e25061bfb78288fe6ece19ed731afcc42521d1050c0ae5ab768b6d3f73a5c8 465c03ce4698e0ebb3d7ae9e4a21120f83c71f3fa6d080626ec03b93d39ff727fa467d95892e684c36725fa237b3fd09b282014a55c90bcace8f71af2296b9701c778a65b94252bf7c878d568732a261a57716fc7a15e11678dfdd83875cdf9ff7269e4982313a7dbccd9df2182e274b7f6bcd59d6502f3c1d6388aa70a19e dbd780f5bedf5e8a37a60987e0937ccdc4818ddd153eb7e4c0aef785d28234a58bc1bd6919391f396af1f64b08fe1c55992857c5dfab5fe40e96d51ffd64637f234248dea2df8991a54091ce147b8c5f595bb2cc52ae168311bb94d8621d01fad463bb04971f56c03e0ea5b7d2f5313cae80690f373bef77a24e9f95c487fd 197e167061b2847394d1ef5afe8295efec99cf30ff9af53dbb8840cac09601aa48ba690bb33da784ccec09ea4aa5a8cc76e58281b484c4eba15ab80e640f49d1c6330a7c44ebad76a62e70a2a4b123d2f30ddc392327e642d2bc4372ee905259fe6e94b14667220a615d55bb054cafbcf58681e70226348dc17c8783322478 81585d36e9f25b27d16d490062a6f4fa514d129002d1f74f6fbcd67b010d1529e8a389e61c16d4ee65aabc838588df52c6c019e5aa64021aeff593b8c12845c0c99b27f0b489453e9f41d4031e583aa9ae9321c46628e18e45a39f52f2e4be9053f498735e1dd686d2de1cb19bb2c00858a4bb2fb38079cfef3990f5c220cc 8948ad96c91edc85443c6ed5e0677721f0826b078f322bb6a712a9ff06c9325384bb029ad30dd93af96a22dceb410be33ab0d9189a60eb5c762a0e93284fbaf6b70016217051b11cddf61bc5582b1f6d06c187fcf6f02010378cd10469d264fa7867e1443cbef0349c2b5959e4ceafc24fd83fa6243ac6df53c0186f4637fa 56399bcf8fcabf87efcf951f39284074ff308a0bd43bdf4b7e7b3d846f90e21a4021aa513db14d818e2974d4d5d74380b89eee28ae0207aeda518eece871e37541a21164db6db0c7fea838345b3570bf7194963946aa9b8a8675d903c2d9feb22918e52647374018e19b6c58be78403cefc9be9501136a7a760a3dd6c58da6 04ccde96d2e4807dd056ec112af1642830c2536b4c38d934c063757867a11bc8524bf33480be5e91b72ee66e3f4cff1bab803c30b265f771202ca0d25e499e93e1e36b3ede2d1712841faae096fcc635d2961e2ab193e61fa920ba9907f3c2968b103f925d8d0bec39492e3015d60d4c773a42d9cd038fe3b305bcc663e191 38e0870180945598200497bd709e8707aa26cdf1a0c9812d60cf322c62d3c43afe8b3745273d6f01ad9871242d27fc1749b8705ecc94707149c51adab96d45f52b675a898bd629a2af3d960a9d003b8ffec63f52a51863c007f49fc666275bd0098ca5f12d6a961b2134d0d9e5c8982d9bf78b02e04c86700f232d4aeb7b8c d53690d9e2ee2397b725e7e436eb8913d4153d4d414695cae9e26e822f36874716a948da62ffab00827eb5e9aa60f6b34dd16e4e7dd42a0d9dc92bbeffdd921f4867f86566923dc1472c200e8b253e619072c613c6f3557cf49617001135de0b417342a389fb70f556dce6a3bdcccc641072fee406d83e3a85c1271d99c4a7 23a3936d954e2a9567746695328ec626544aabfdcbca1268dd48b6e0e842ec4e196aac5e229f4b95dc12a82188bd53e443dc0d4a23b40cb13e883b67ea19411986f5bcb88cf29ffbba591046dbec9f47a6698fc04ef697f377523e99ae95ab7e64f9079333eb7e002782db3040e12606fe5e1698af41b829684e2f3bcc5ccb 39a5b77f834496bafdfea0e8f8baba1090c5b115b97c3341bcb158199386a171598b34e137b1574f51f09c5bf785db93104d465c4d945c4652cdc36d59567b18d0907e89b98b3a67eecb7a1cb69558d9a2f286bb7ab1bdde51bfbd7efcd67ece3821d0bb5419ba7177739eee8d12680cb18ca1757fb438e5820c4bffa6f419 162b0a0b7a843ca00e37ec3a4a4b04f4ed8e7f424b4a9d1456c6fe6287860ba088a47635ea731abb80cc67c3322cc67c551171219db9fe95e002ef4f54b3328ef32239e09b3ba1c972941231dc51cb0d5d8dd4b833d898a40048fa9cf12c2f73e7fd8871779431f0ffb6024c357a1cfafb5ae2a352f7cc78263846d13837f1 58f38ad0cbabed46fd47c5719fff252d4ddc1b50fea6a5d8aa61a1a1c2da888e6bd22fbec6e3543de95a9dd209a2706c5430c5a7331577025079cd8e08b550712c7286a07189284e22ca946fbea2524a17e26b38148d2f77aa2e7f61434abaa9dd7ed442b430e636ae49ba382eaa6a4bcc70033f6b96e29339fcc95afe2f48 0cd004f967c37174b3fe213af666aa615bda747723ccc90b1366750ff3f1b09d3d5e0b2e111ce46ae9cb279ca786663e2c20db407508f5a9053112f1cbe4f6c9aaf0f3dc6de9f4d3b535a64525b168854f37f7edc9174fc782bc933bf5d83e988ded92de45f3299d83088aec2ffa01ade2030177661d276715ce7ab7818c32 a48c4ef1c6bfbedd338834293893c1717f1ef6466a6b16c5c0260f4a42a9785868999167774a4df80df627564bc3e33a7495ab3b8b2a11c929420bea1830002de2f6db17a1130b75eec1ed2a74191676dab58c68bf16a8fc0457621a2669ea1e7acb4bf8adbc2289c086f47f1e01351653fc5629f146ea101fa72015552958 7fa014fbf31f02e5844242e406d71ab3b06c71ce3c1207bd2081afcf58c3dab9e39ebd87ebb6e0db0ab6f81da96a20110af0e56b45f1463ac3120db679ea2eda282c339220031c93fb244eb1d73a405b8de455700071a1a25400d42785dc6b8bff374163356ede39c4efa063298ced265eb8372569da1e2e325e5447d10b94 acc11caf5089cfc95ffac6cf7aab564ed58d35f1a6b2e4046a186cd831a1827a8913b6b6369ba327683b080f4884456cad8fae0773c3e2718099436c684188683338e7b001ecf5ca61e0edda0e2e95550f5f8902092a651dd429312a1bf4ee918e2fa21454dd7329dc99e039b33e04759352db0380cbdc986906aa16ab9fe7 7d74103970722a22e130c1f4585ba9ad6b619c60612aff65915e5fb8831fba02032d33addabde16415933ba05b1daeb3aa34fa2b03f1055e3a378eafee5d8614a778b4e6c6e8d25d900b1e2552c6513d074b398abc6ec23dd9c302912452332bbe524688d7a2881196a499726792c493c5e3f5f52de45e338a5dd5a5f85463 630434e841b81634460a830d5e7f00ecd2df1fd289e8e15bd1b2222670be241199a8e62127631639e76855b90b438d5253884f4cc6cf425ecb8f6e41c39e2918975d603d7e5922ef8bb3bbec384cdd1a1a937d247cd9a6f64c6ab9a408035a16d38dd93f2bf7ec9ca002687e302d0bc5576603e21c214b787e16f94dd95b45 cf1ac5bfa8043280edcf2612f27fc933ea521edff0a2cb7c7ba103ea444e0bc28909eb0f258f084d4dfe1149da6523a83616cbe90cff7af60603cb8a1c4ed5eddd796e2a2e10f9462b48f90fe7e493330cd308e3815e7b140ad562d82c8dd1e72ec7e782691a2816197fd605098edab5dcebb16f1649c27cb0addd69862efb 52e3dcd0a497fbd2873f204c48236b96175c760c432d5e275c8c634612d2e07cbceea765bfe0c54dbde6d31343bcfbb7adb32163228cf43d9ca6ee5cbb81edfa30c1da85febbf19672043daf93e6923f0ae7dc0286819445c7f327a20388290488eb04f47762919675592510fe299f813804e2b68a22b62776a2424c04abde 79876d5b041f903bbe92c88902563ad910ea7f3df74a17174b186b4bc5b12b7880853478a5b6540281b971ffc8b0ba2f6869ee528cffb1b984b036a6a3793e42973445428f25253dd251bb71a5be536220cf3ff8677b6198fc5643d623820df45f31448f1c959bdbeb7081bf5ac582b08dd28909aa1def6360608f2b4aadf7 7b9a92c20a86ccd50579c3162616231da3b27336a0d3e8d94907c09b1f73c46cf2145ad44606248988c17727a1067833f3eac3dfaafc1ea7c64b5cd4762a87cdecac4d2787debd03897ccb467eac59708339e11e9cb1961d3d254e6a6ab7722822b59d342a2e79e030f45ac2a3890cc7e2a95abcd3e7daa2f4cdc5c3246148 1e5acb93655df9e8e538c14feab325016bd5d54fb767331cbbec874268bfd8faac9eb0a46c1501c81a4039181337df1f5d11294226bba2976796262a82f335440dd28687c166b78398305e1c73d0513c4aa0387d20461bb69bccb1a4ac804cdeabe6ac2787f6d7252b1b69e2bcc8a4adfdbaddbdc454e896c489989d47095f cced9823c951938a9d962debe96473d9e4447b761e69e486be14a447e5e899061b6463a9733fd5d483016456954bcff2f7eebc48f934d7ec4ccb133e19b7528c371f85bc0aab2c33464843cc7bcfd34eadefa744bffadc9d7eaa246bad45616d9340a8bc72a2a75911c866974e1306e13cd618f770092d81e8c590944ddd0f f482d24fd677dc8b22ca4c08b0fe423d0931382938a40b79c13fceb09e6389669ea69d6268a2d40ec37b5fad440c49904d9f09df089e5c173ea5943e676274e69eb0da19a46de72249bb6b9af96ef17b509e4a71b531ae45d89608d14937d68f8f9d0320919bf78c58f8e65fa4c5c21dba0546c6836c117d58dccceb7e9b40 e363866482ba02eb7ab974656af5d6cc97ce1b6d08c20596434f49183a6a232c339b477e5dbf2bf03be77a43646ee958c40d4b7ed6f7aaf6258b3d046dcc1379b1a52adc89bb768939f9ea57cde21dcba5e859f960cf8ce7da2b30f671d8bd623588e5cd3b99220ec66f881f99e9d71db48ac4eaab96bd93d1176399dd1ac8 dfcc5ba4f0010fd576e236a4306a4fd694aab6c881b7ddd00e6f0c83fd02f43d011f48d443572c0abdf7f5c90700998899103f64f84a096be5a12e1d44734fdf15de9e59bfefec1c4116cbb97711f518d39e35f067809d88f563952d5558757b2bd5fe145b8fd6fcb095dcdf7c4bc3f5b98b2d0e79f5f1d967c36a9b865be1 356e91e3afa02cad97bbc52ff6e1dce666469e72864105ff51c62c9be04ff17330f4c09572376ce69601f488a50775dbdde2a9a5eee389b654ef1aa48bfd5b5b26127ca482d88247b0eb260a802c87a9cef4347fb2d041f8404997de3145dbe722264da369f5b3eb837df9f8bf0b283a05590aa4eea782c4ee5097f415431b 69c3eeee0e41b579df3eae3c557c19b10e952d5ed87acf5b804aa11030159fbdfa01dbd7ba84eca8100250e4c55b191e3b529e6dce055d49e6bf1ca48fff4e28c5255b4323518e8775df0efb5370b6d0c5980e3963d511b2f08aa1ad9e0f2727fb7f43cf8806f33f6af01a4f13063281323e008497cf1da4b7eb772f7eda1e a059cd3ecd558c03f8a808d7be311f8088aeb5605510671a8d03157e1137858a0faeed64b251a7c96549d830fb59c8c1268c0c48b1ea8ad0f5295c285bf8420167cc5da484b8e200af03d615764aee51f8768a0cd123928f1b3f3e91a46f5130b000176f520cd3f7d48378882578810a7c494d840272b2243e2ca830fa9195 7bf05deb8963a12991ad48db5f07f5caa61d6aa8e9f9ed895f9734cf9cfc01882d03c85a9ff3963f67d489640a2b989133c7cb307d5cfec8f31f6e35c87292410b3d1f301fd5adb11e33e2f2029c5e3dc0484b1d88ea400d7fa461146135ffa5f1824e8a57a986b53ea059b3c8998373e2673968ca99f89d46eff589806c12 b706be71c1db78f29444608a0b886b8a59df8e2271205f0e008b96ef616a239492e0108687ad56b4314b888d4dfab64ccebe5351ec3556b8e3a2ccef716d809d7e23bd74d75ad6abde177933553322be0c1275e91982d19e15169ef293cfc447421b5641b00dfff942d73ee56f4e79a114138238d498c117ed72326bb96052 8fb884d59c8d2e2e83296523f6061fa5be37a84d4f1bd4d88d2f27dd7d3fc04b1bac8f74dfcfd58eeff5dc8749a0f5981f854f7680a7c847c7742530dbd627829d96d0a6d3e4f7ba14dca3601ce354ed7c9d3f49ce07cee46c82da679153945115ab50a33d49da938395f29387b4d908f040739038e75b44f9f560d780a8c4 8ceaf9d47cf592c447a567fd6634c7392ecf31091c34af2d7b31dd14070539989f11fd916e5dd02ddfa41f76e0ced99c785f0c8a1aa6e43cd26db4ed7a36ebe9ee2f958fe94f42b675e199c3b2e6e5f959f6acd00948de268e326535ce3b356b28d818e1c1644a7b649f13a81f3186a9dd95a30ec99d429ebe0e13119c1369 42c023108721edcc376a6e1ba8380cb0ef9ffa8a00b13a0e74704e29a71902d9f33cbc56cc47b4d9fb96aba13009f0059b3c53f26aedea73f3346f0e809bbe904cccdc75c4228a6a9d3f56477903dc1dfc2fbb3426945620f94fae7e6af622c8444b8941a549acda534f9e0c125967aed7bd7c832cad33a6c57a0d8f539ca8 00f84fd2c87618a003e94c88ed328b711206de3bee0124402f5574035fc7d3ddcb519ea0670392c12e476aff9f59e9b8569078e236c49afa100d58b8de81f2e4ed1bab63dcb0f2c180f6c60ea76782579c83f331eacb9cd75f912ea12ca6d49e4deb77ea81257dde8c5bcfc67d3bc115c55baece396a42eda8b8752f79f8a2 9058a4dcd2f9e1188b4a36c00ba3a5a6e851424b86f95ae3f2d8765340143dc6663cb0bada459e0760a7a49ac621eb1799c51a8cd7d76bb9cd2f679de03b06022563edf64abed6eeff3780c20e965ea2111e7e7fe11f75864a3fc54233ecfc518c8cb17f0183873e66625be2feb0ecb79cb834a6ac7945c9068712bd9a335a 6f195ec6e712764bee0edbf50bca12c98e87539c8b17800f29b115fb8d58fc4b11b0837dfa9f62b73e9ddf08033d0a15dca7d3eb21a0851179755bdba76ae61e6bdc17882213915fc865bc8c44c5c9ff3ef1ee7611dfc261f582c6f1092bcdb4d22c3c8a7a41e48100b1b76a5657b013a9e4691108bd08997d3a808af31445 5d78fec3ad7b712b5f8e780ba22de1eaad1520ec63d092d44cd822760cff8ffde07c4a74013eec441d4309f5d3d1f8f6921735a1a3f2f491eda6c72b78ff3ad2ca83bf992a9fb90527eb3e5346a41e8560b9c285bd32bbd2bb0b2434bd4f7c1327db96f9687c8c7ea6888bcb5737ce1e4d20660337f0731869f34e101404d5 214d56075a7ebea66dd483314691c64bd5143b2499f78983bf152ed573f5747c1ec8fdcd5c4b38cb20eca2985076d9920dae4bb9a806115106108b329bc3f524c22d89608080677593d2073ee5e2786c7bf858fe688cd272d42b0be8b8eba87ff96725f0c1725bdee0ef988abb27c200c9dbd33d471f4717744ecb928b9279 eb98bd03d1a569435aeeb2996916f116c031b0bd5457c30d3da7ca79e85071a4d91c885a4092c1622e631fe30a2a06de75f02f185ad726fb1612a3bede5e46e01268aadf558dd34f3bda7efb6d9e499d7e113efd536d0482eb6b8c5594396a75af2c2f9e0387661ac30dbb10d88d76c092e68bb80688c975fa1a9a9a12f225 5711514cbd91aeca9cc10166894cfceb7339fcd34f7e2521485b96d7c29c0f42321d09b24f6f1e462ac7e49a98e3a66e63e8a71f37c4ba4786ee6f9eaf559655fa419bc584883ba9ff033bd2861e028d81664b89df81019faf15a555e37e551b45da582c99362bcc39f03709aa0fae6f5bd36c856e79d0fe920601c798314d 2058884895e84a14a124daca885fbb0a79559d909dcec4696cecd393a4a3a6aab414af6f7b5eae63122c373065593b666290e5dd93836f7f9828ddbeb6479aea667d78bb4674af1296a55747f711cfe5b9b90e5191242153922b58da07f768cd9489cc60973882410d43d2c27d7b3b2b23a3e93039db6f4c55b057ffd10e7f 3c02a9f005d1dd464d06c8bc8dffb311e67ad0103fd5356c7a962540a37ca57e52d3f2b279f4a53d28670c80696ed53bb9dd15d9798563ac88b47af1f6783589df59642e31b047413d5b45cccc5b4c384b05530880b94db8b26a5636938172a121d284a8edd61414a4a62f4a6c97d946306525393e25ef97a6cbab7e0379e7 aa8b16f449445c3bdc76ff117bbf29420d5c8149d61559888336db54a0b0be97b0556844a762cf9f214edfa472db4633e7ff124fdddc9ed01d063cb0cc9a9a00f070077b6bd40c0aeb42eb7c76ed2e286618563d5a9985734264c875b4beff341766edb6d2c91e5872b3114f2266c64edcc03336c0c1870a25edba86f5b1e9 4831baaefe75c6726bde39cf57551d4f71248d20ca5b78ecf22616a5f769302eb5e751a8e4a11c6640f28c8c78d57132e974a868028eb1508698fdb3690da78f4622074720f9b45cb61649b23dc976b63261bbcba2a679f8b46669fae207d39e131be1d8788261f693bca225b4e26cf9bad7746ee7d540e52a4ada888d58f1 db373e7152b8a9ad861dc7efb71ce0eabbc7ce577e7e562531df032fa713bea60c1f57c1f9fc43f22a4528abd17144311e5df980591d082a488e75f1379314ba2fc6f21dba4a285354e54e1321aa21db86561eecf7fc5c53b3a157e9f069ac687f7c11ea9a35b108df5e1ed6472e8d7e4c0867ad8283052fe1ac4f0e5de2e9 abc5d8d17040a98a2c9c535a654ffa3dbc5d94113894c3be63e6a0eaa78b944caf2670c53c820b1a687de8a54b998df371d11f8b46b1c4e348bead1a66ce23707e02f86a34c1258fdde754b564aae79cd4536cda7ac5b3ae17c82c1af518d2d406c38b1defe8404a40c762b7f38b25037dda6b0784131d4da2735c6118d1b4 de068dcdcfe2243791dc30d657f3f9ae0859e458be107a96204096fa5427dc763542cf1e87f994d0c67cba07fa26b605fd1f27fafd1dd4ef1ec6f1d76930b121c4e2791a914650bedc4cbed048f8a877a048d20ede5adcc0b87d7f25ea5a94ec0f8dc8eca2307ab2a0d98a8947bf8b5be2d793b2b6183ec35db38c1d3e5f40 78e4d5178ab8fa36cf239e561c81b95a46655f11a43ceebe3ac762344a551c4e6358b943cb667a4b2de4f9f7f12f8d7f1b655076cf77ec115796d0470ff54d26db7e155839232a54898766fa03888b378b2e600fbad5613f0b09a9d07c1965c13734f5c678b2c236b4ef6cacd4e2b4dbabd69d5df78450ae14e6311a37de72 ad54be4ff1f0650690808d7f699e4ed39ee0d2752bbd07dffe96815754a0babbbc8ac0a4cf3f2452f92ce72a2570184f794a6c932fa3849b782c2a0bf9e6e4b0cd0e301a5306a191ac79c9d709f21541cbb35154d3ae8aa8ac721181bd5032c215bf834585d7df29811707c500fc8240cec005ded2190d4e497267bc1b57ad ce81880c49ce082d47d0d22a2bb7748653f2473e20790697880c4a3a34c3444ed12382d7f2da965d50e18145a9c4792a819fcd16ede8ffc9de2ce783e8d9600113dbfcc05210df22eaf4fbded7d3f6153d4a7b8a271520b8e4ee91457250bc82b3dba929f09a95bf93798a975ab5d11f4a24b77917dba13783b1456a84bb63 6d86df0b0c631ce1c56bfd80c85a8f92f37b3f8aee7d4cb0ec3ac88b89a34bc2293800a7a56591e4f88949de7ca2d359a8b765b9c8f0292e5008362735b803d54738350ee653bd7b2fe2902c2a90f5daead13e95b4cb72511bebb45b240435458653930362510822e0744eba54ceaf9d2d7039fb01b56e6b8aa3da917d6e8a 6773d86b61874e30ffbc61f28eb8434595618ea6d4fa941ff2ce7a80ff8edc1f5fba4554f942fbd2403b954a8cd71b6a65bd7d396e76d83ad2cfa48041a33841fd3bc29cfbe3c69c77b8ef2598a96934d3ec7453a2e728b04f6671db5494bdf4c364e7d8d356acad2d1ed7e2efa6a67a76542b614ac0f791b753a2b1a2c755 e54b3333ba72b932b6bb843bcbd14fe4df9b19eb9eb33a5393fe5a0903b3dcc125784f09f2cbeea3f92577bbae102155e090fcf2be95a24a2b0b509581c891c20195b82af9d707f30e4850b4b270990980628b007af7cff19577cc7e5cad2c069d0fe2da4e0dc4088309890b215927353266d201b829c2be7ae637148ba502 adf9d2d689a99a9d43d7aa6b82683c5b13cbb41229f74d4963b828c9bd861e65059803505c10cc52ee2e669975fd7c6e27bcaf98693d8790d1b659ea307c10ab46196e7868ae642880673699addbb1991ec395d00e86e48c0b88ffc715a7c59e4ea45f6898f075d8480b4baa4cc7d154e2d239b850783b9719d21674e563af 40d77a3dd00798be4df1c00d6ee23c4f1c592af7e3611f6d650b438a96d583b68336ba6291fdf189f591b66d5805345238fd71d3b119abaf891cc9e999287e2f754b7f4e0cac0aab57c942e75b1ec9f49de5192403a5e770fb5b370c74f239dc546e56953d068ad94b51fef63bc6dd635a9d49b767fb9fa52d6eb64fda3362 6f0e9e6c348c17167384430531af663b57b61b42aad800c28e1edfd5511dfc8275a0a6b50a9b2a9083d5e78fb70fa29708444365a0ce9d668616fd44a6c50f419c72123b92faf44b6426af0e4a167b901c79f11208eb03fbb0858fb807bd5d92dc2984f4085931dba69152641c8893918e71274fdb9888798887481a9c536c 1270aec13cbd8c3c76345188cc81113ec8590a8cae306d799b02b20000d68b3313502bcc880a7d1704a286fd394f588f995f1aa461e88def58e23be9b129b83b2e8c6eb9e45618b274a4519cb48ed1bcf737d7fb55e203c2c60b1a073d31ccce703cf59716bc46a145125a92be1ea039b6b32440b7efe1f784f6bf6746ab20 cf3e0af7267c4b5c5c6ad8ec418da49f71ef9c4c14156d216228d0805fd1965e5e1b100922fc025329f6f3f3dbec35b47c77b8e38769fd6b9597395a72bf613488776482b9dfc35777b9f6886aa9ac573b4de7be7ace63f58add64a0a82c179cbed927e8802c8a93f0d6dedf18d89be10b396961832c4978fa7b1c78344ab0 32d3ff72e4840f502c26fd6e5912223184098fecc3f2efccd48b0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: Times-Italic %!PS-AdobeFont-1.0: Times-Italic 002.000 %%CreationDate: Thu May 1 14:20:19 1997 %%VMusage: 37530 44422 %% The digitally encoded machine readable software for producing the %% Typefaces licensed to you is copyrighted (c) 1985, 1987, 1989, 1990, 1993, %% 1997 Adobe Systems. All Rights Reserved. This software is the property of %% Adobe Systems Incorporated and its licensors, and may not be reproduced, %% used, displayed, modified, disclosed or transferred without the express %% written approval of Adobe. The digitally encoded machine readable %% outline data for producing the Typefaces licensed to you is copyrighted (c) %% 1981, 1997 Linotype-Hell AG and/or its subsidiaries. All Rights Reserved. %% This data is the property of Linotype-Hell AG and/or its subsidiaries and %% may not be reproduced, used, displayed, modified, disclosed or transferred %% without the express written approval of Linotype-Hell AG and/or its %% subsidiaries. %% Times is a trademark of Linotype-Hell AG and/or its subsidiaries. 11 dict begin /FontInfo 10 dict dup begin /version (002.000) readonly def /Notice (Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries.) readonly def /Copyright ( The digitally encoded machine readable software for producing the Typefaces licensed to you is copyrighted (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems. All Rights Reserved. This software is the property of Adobe Systems Incorporated and its licensors, and may not be reproduced, used, displayed, modified, disclosed or transferred without the express written approval of Adobe. The digitally encoded machine readable outline data for producing the Typefaces licensed to you is copyrighted (c) 1981, 1997 Linotype-Hell AG and/or its subsidiaries. All Rights Reserved. This data is the property of Linotype-Hell AG and/or its subsidiaries and may not be reproduced, used, displayed, modified, disclosed or transferred without the express written approval of Linotype-Hell AG and/or its subsidiaries. ) readonly def /FullName (Times Italic) readonly def /FamilyName (Times) readonly def /Weight (Medium) readonly def /isFixedPitch false def /ItalicAngle -15.5 def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /FontName /Times-Italic def /Encoding StandardEncoding def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] def /UniqueID 43148 def /FontBBox{-169 -217 1010 883}readonly def currentdict end currentfile eexec a6b9a629f232c2f7dbf1d3c363ba134897c3ce34dbaa9ec37bab446de4e350515336169bc75297ff1289d5c1290fc38fc78e4318cfd0b8d7f9a7e9f1a776f374e31179ac39a918ba448c0b8b82dd50958f71df52ad394cc70c6a3ee01b0b67a58dd0baa8d0564a0761b74d0c66fb54f4ae2f555a7b619dc94a9ce75c17000e 7d25b43cdad97e1023f0477fd1579f82401e30776bb03081a76d3061379c3afa6c985b9660da504ed8ac4f31ed315db59b3e606dfe9680a793e3612db011e1684d793fd5eebebf167e83b4fa5371a015d677e9a50e8d5d2f227635b21af5310214ae40efaa3134d407587ad5a6634e5f19c1805984142c9bd01bc20f6c29a7 353976a5fd5754898c355df32a493b4f6a3398f9ae8182831f3b18146d370f82fda2dbc50b81f477cb91bf61fd13b4cd1267da3bced4cc13b7d3b3e3add1fee10364829c131e7d24b830ec2f0fc89e5eb3802a37e5817e95d4a7138ca230cbb0cf63ae16476be2a3d40e2b0f567c5fb4922cc7a0877a54439c9ad463880ac5 cc4a388675ee7fc141e0da37ae821ea708aa55f21f836bfd50bacb95368040d6779e41515ab67adb002a88e2ab77cf9ccf1f56a03df21a13a1ce6d0356dad38fd6c4303463b753cedf6d2e9de189e698afe9b8edced2ac1bad1f2161320e4549f6feeef8f856637a10db086da5dc851b107dccf2a6f7825e4f0f921e3b46a1 fef31bc4957c26bc03d01188bb5e0b81ad7b972d1ef27c75544e80eb39a11e41d5e40360e42c564b15dcc7475eb4f945936315d9929c2503ab233189d6cc6519eada430f07edc00ab554dec9afac3d903fd46a3b13836bde0df7bb1f6fdb793dcff76c93a846787623071182324017d7758cd809cd4fc454e9cb77cc595380 1c0bcb170f7fa45300c3ca8aa1582e4fc5b9ef347de4576ff19cb1b66657f2ae18086f088145ff5a5ebb7ddcc1b8c0dca636396389f743ea78a45b6086b8a876d16efbf75cd68b93c6e521743050442ea6328f92e2ebc1b41b0395cc2c4c331194cb847556dad8d9b01001201f5b8203011d049eec892ab294ac1add721de7 f9e5636e40002f56d467ad03e1781d26b5e32b6cb7b57e3a6e9f1e90c8c5bd05e992d7530cde08fc88159a3c423ceee28342d3de57c6ffbab99bea7338b9e4e62da6804b56f52785e152a9fe0bd8ff687702b02e6e31ea190137bd6a3e3cf3953271fe257822d94cd2ce847f2273d5c02ddc41bd53badc09f830dbb0735529 e4901dd854d2709ce3a3d4a303ce353ee479bfedaf0dede1218ea6ccb76bba914bfde56bced74642e36d2c0afa614945dbaf16cb022cb9ed09cb1d5fab258da255bd287bb71ee34427e4e5d04fde93e9e41621cd2a060fa8daf7c205e25ef6e763b3239068055a40be53b11a70755276e4171a7fa5c6940892d9d68cc537f7 7e1b69b90ecd4faaf4bb610e93fbcd13ccab963e41e688524de70c2800f0f558f9d6973812e50702829d88cff7733b15445a218a8089878dd4983d5052d66c935e42d5532de8c160b043607dd2d90508d06f9ccb48a42b5543b62e1243ee3a8d4366b28feb00b2c73e29a912fca0d1e7f614679459508679091d7ceae748dc 30284cc307608f276c3c4abb6f15bd9e213e4794b973a5d73a1c3e4afdc754b6616f852d75b8191bb16daf65d29e71c8d1a4272fcf1193effc1e348dbcbe50075398c472f3efcc04295f97098b7a81b157e8bc7f4ecb0b208f4f0c823fe8a38c7a56394ed09dad376f41202e7d7c987d9bdb9870de195110b77f95a9714e79 2bc98f10e2561848cdf73b26f661bf320c773e46aa9ad2c8e359e3420edbbecc9ad03ffe262a1222965e2fa5a875ba9a5dedf753d937d3ad22fb96306ac8809aca037e24cc8986f75d93912ce89fbd64f7a93709a39c2c4bd94b65663902100a315fec69ddaddc995014ef4cd5635fa1a026cd283391c768e5dc9a972846ae a9991562d0f5a7e9e4ae933cfcf8d50819396e21ea48faf7aad10fd43125dc38a4ecdf24fe77a8a3132c245e7fb3d96d090eab0f4f8a44f2716ff7c53b38a308ceaa5f34af0200eaf231c72439dcf3854f48164f31e145c4fd75fe1a7505c50c4fe6229625bcb3cb6f212e00dad478ca08c3ab38ff8c1299f15b12af7d82aa 72458cd2af5dc0c8d7471f15ccbaf96da0cc39c0b51c6be5a2ccd61da6549d32519c5e4213f2bb8c638a92fbb0736cfa263a932caf4636c62e4b461ba8eb77683cbc2fd387c62cd250e70887417144ae922d8ad5035185c3a6b25cbe0369e60a795d7824db7cb4e572558a17cb11357b6c91d95c727c7d1d91db9f56450208 cab09fd17d34a9111612675d202e136095605b66095104619bc023b5538245f2c637f78ddb1198aaae07180ef9a524c60272499de2e3448657dd5b17db055e4f39da32e800ae3543a93e2cad811274767a240279b566c16b0c212ea6126c2587c900cbf17e8709d868e25a81025f00b52f6b5dcef38356d9c6c171a168595e 935812a0efb5e9f6a457e7ce7e7206c4f1125d280bfef3c5fa2e46f7b2d23744d52ed92162db40b78bf85b3751ecfb97b0356aba62c6010805f2607054e0cc028b2852e920a0207d16d93f833f072778eec2e4553bb7f6e393cbea406a490f8b53a4625c9cfc27b9fd937b6633e352885043e4f830dfd721fef3c5e151d2dd 8d87ccf94732da41c7e59c9c594684c6d24b44600d653b1915dcac06e1faedcfae380ea98d9f0a5b231b69233a4e4ee4e208f288a43e687dcd4f4d9284a4d79148000277ec92912daf0b6f5fa16b324a9cfb5bb659a00a0d09ebd60e71d294d8f9a6f044ccc491a3fdf98c9af8dc0c94b8db830427ddabc7ec2c2a483a2fb2 78bb5ff7b27fdc9280e401923f7d2a6f48c441aee30bd31f0db6fb93e49ff4ea14e49f75ec083e42fea24496dd28c9fafe111c836e2f62193e7a29766fb0c0d5f5212bf5ba597849d734064f44db9e8265271b4392b07375e0b8cccc255e05eb61e89c313517724b33b1b79ce5333b9f21bb9c372e01976b9911470aaf59c6 667eb5ae7fd3780f834108155d21e78ab31c2e883d0c1fb98a62abf0c144c7a0ab62ad28b99b763436c8e5d278bd02f153177da3040e909e25b0166f5c9d6a73c1d8ac9f2599c9c376a744b1fcfa5d32de5ecf30a3c90163b9d50d989a9e38d19bc86c7488aa236d42fa19595faa3e1870413c694fa750f8cfead8fd5de6aa 458c3dad1ee47c3a2bb4deaf35424d8e06d9452cdb73c82d72299d49b30b385a07200f2203ce45bfa033f84ea6e7e6e714a00a1dca211e9f09f6f365763ec4b3921924a784aed68f035042fa27dcf6344542e7323268fb6b678c3d2eff80d466c9c675ae7e95cf3d49736eeee951bc7dde934d051fb6e1cb6f5769e5f9969a 64d59d633fcb9412993af9efc89f7e13c6e2f35be57009772904595b6531e0abfd6e7c7e90390c732f7168c8afe794f6dafccccc7de0273bae11d781a05ef8fac2f904f1a717e2cb2b6acae96b8af623f99084067cec1cad6e06dea70c000fc01d39ba0d98d8d57ee7bb1c189d865b75b467c512526a6dde0e0b3f472a3697 60c80b1eb32c3a8525a728a447bc811df4a3627e9f4d0d44545e961abc809543133e547129a63fce00b18f0d1ee2899514f9e421d1aeb33843ee084c8561f69d00a02e04b0ef833dc280ba7b1def444b4dd589d00970cf561f411e29409901e5125042df042cc7dd92d21dd718cb10253c910b6e2dab43ffcd899ee81144da b0f52a321c12319b8245b01c700203284d68cb91de62be389af59def29d24c563bc305df8dae50f75120c5385aeba8def10bcacc94f1660e4d3916729b353c7eef302a4cc13816aa0bd26e6b38bafb9c39bc0c9811e6a7a8c5fc1582cc96a850e111c791a3afab2eefc1b613603fcff9dca956f1d0fca02247db36646e8f60 b6668b39793f56621d2738933d7299364ad42dd988f488b61e070282f8b05c99f232a2d8850a6af37599ea382ae5c04df20cab9c758aca2bdb1a81ee3dfe9a0ce92924a74c4daa6c8f44a03c2f5ba4652d7abc83fe0bfe4c5815e0fff7b9d09ed1b683205e359d8f367013f487dd30ef1861e48f48fbcc9d9fd642e16f41ff 2fd663fab21d5e44574966722891cb85e9b0d0a357a43fdb5c0e2146ecfde2f773ad5f9dc08bfb98f7761f88641bcd7330e99c605fcf8bfd556536067d543b1ded66a920221c9ebf86fade0e9530d3d2d66c366c167320a8f4e8b290253444b6644367e2ea4d4c50198240e7b2ee1f0ea504f1cf42f71606c6553aad6e4bc2 cb628b04b42402ddba8ba5e8e7f6b3a15e695e9a281e5f0322356e1dc1b253fab021add52eb6c43bb8263708060ba90a953b8659bdf1290d306242ab30a29b58d7c43d4b579534973dff998629c3c7be7f18689752fa1cde08289190c49d355b82da736714ba072082f3a7ebd9524ac4d4e37fbcd7073a0e974f63dc7a31f6 5bdddbdadf51c58a8c03f7e5fa2c397ba8e919d49f72acaa04d5fe473534345bd101459b94976a477a0867510eb71395736fd82dbd2e16e51ae49fc9119cb9218b43b9f7cb382d2ab92157add6a86bb9946706637e2574de75d5a9f53dc0cf92a67d9f0262b48913d940b5b7dad66def3dc136c7ef88570b70ca3d41d0301c 736b54199a351e8137b7d59c6d695ff86ca2369d0702a3b131cd5ef63684d1c689f182f0b2e8e79d32c6e6f8a81fd42819658dd85e560289498c3ed5d4b3d9224f0adf9558660d23cf1c39beb5f63aca618f7f9cd1f50904dabaa31d6d9cc30b7c258675cb4e70427663484d025456f1c74fbd3fd7e35ccb03beac3ac4bfb4 92ea69f77dcb116d13d49ed5cfd3e2fb855cabd23ce9c8239c077a5991296b24d553946bf6dfdd121bac62380e3f55efb9c43216877cf541bcb364c27f792e68b3bbe7ecd6f25f527ceac773703db71a113de1af13c1240e07251a9019c9aa9ebfde2bfc8b28fda478931d825c8319036355d70fa87adedf363905f6f3a68d 91b4ced1bf9e09825205a533af4199d0ad5da448228d170cdd1f6df35f41bc588efc24857cb6da20cb02284dfcf103887ab4cb66311a4f0db54129524a65b7f930ddb4cd33ba87844851918dda631123354b462f6a62f413d16be8c789e570d918daa2b4a6d996c6e882c2e4f4641be64cd2631dd5b709a21cd1f849c52a63 e6b5fd6f620e0da1790f7ccf56394ecfcc83a1e0241ca66bb367a1a7036b2dc6ff7083b48560e6d630dedb07f3ca0327d12c01313b7271f7b619c0d671e6b481a8d662574455d44f3e3ee5ad16278e1bbd6821fee496df23a84d996fdcaef6126d47e4e00757cebf21a5523ea7b9b825192f3bd76627723e2aa55079ba3fc0 77932e6e8aee9eeab93add4bfdc262a5d9fd962c5119487e3978b09e032fe96c0e6d614d145502bf9fd5a0529ec4677f9745a93a475eb42a39c9c7c8e2721df1596c684dd6757747644f0df95351d7fb7a99bae4909645c6da5bc8266d212e1be1d619289b228121b922e1069a188be77ec82b6903f41fedb80b856bddc8d3 447e644151c356813479baffb68d204894de0cf118df39e943cedf8751e998c677ac19048ac5806d5bbdbf5ef1e095d43077df16f990800ac65be3b07c96f17fde9db5c83ba93622909fb3e03251e9aed3b59a6f1a07da7fb37838764288c4b20be767d2dcceaef40bd77b545473f85b60274bb4a25f563e0b747b8f7b478e a802910276c78f7e2020a0a607f4711871d83495b19b45b369d514770d3cc01628ffe7f43e35b0b6b4a8e7bfe53a386556ba3c2499c82e7d266619a9a100d132230dd655bd2eb379e8aab4520f54eca98fd74875027ca90ba451103e26f218a84af8b7f14fd3f58ce7ed5b5eb5cafccb804236bded0d3c77691288de8f2335 ef156364c68c23b90689b518fb7bb9da5dfbee18eeef341dabd74c4040094307f31d2162b48eb7adeebea15ef2f48641efc3df83de80203b5717d99e1679bdcec2bdb4fd0efca25dfe81aadde108e6bf6b8e42d887fd6ec38a9cb92c962360b0906681c01703568f575b1b45cd9ff31670a8e1b61928ef6140f41bce10e832 1f7c217c4122064e0e6b4d64a39fd8bc37f600e7253d7e3479b0d4123af07ed7373bebe19f12a8688058462b87fbc3d8c611d892f911164b53b481acf4af562a11e5a12f414f82489fd138391b8d63b887595e3d8b5758a5f889a5f63aa96c74018ddd25bb6d01f9204e5f97473564f2d8b3ab51f2fd36368d84ef4c04d378 501cdc68b00721f5664aa1d441fe750e175f872727b7996cfd9b804fa1443ee8f07978b074a28cb39effe38ce53c5ac26ef8202918191ecf1668486a268f45c3d19c5d194efb695aecae578c5bd5318b8791873d92ba5a04e4b5cfb7dc7a7488e0275dd2cbf07cf3c5bc658a8056611bf30d2dc0100066e149089163228c2e c1083e331de3de4eef963bde5e8c6f6fb7506e63566fee34a550835da6b72c194bb3943c7ac3d8d83cb228ef8209770e01a35ededba62de9a66c31bec893ff8bc1eeed2eb62322075e87071d27e364f998698b03cf6f673aca20f660147bce5c0f7ca29414c556a93cf4120c8b1396ba0a0f333c178485877e5f4442c9a840 0ed8b6c023724908c4122bd51b506a3b542b0e4158bca16d4ab4944dcacb286cc1c4f048288dedee76dfb6cfd83c3ec0029333f29af1f153c0e692b62adeb3f4f8017c50b87ebccb8732b2e67b589156611076a3c322fb4bd509977ba5a1c724e6b0f03e44a19733cfaf9d6f382c011ffeb6ac14c1324ce16fdd7e2db73f20 474217f8cd6cacb36ffb66baedc093daa664c63cde2346f20b13f39ee53d6c1c07d45ef66ae29af2e45f8e27b497c37d75d03ad6df381879c48397b366c705803e0cadeaaad4bdfa280e92b7635dc1159d7b9715f96ae389637510800d4c8a2199ec1c81c774214b6b3b0cf3056a8587de0fc180ecb020c6c96d366f026f66 4f2cad516facdae32ca43f4609f4789238e34facbecbafc9e6183f82eb2fa5e5b3fc75b51ee2d90efb3d72f6ad6ce79cbdf48c10177638754dab403a13df5e22169db8e19652f5bf7b8b5bdf43d5422d093221fd2b6e2d181b4b33127e9ada085afee0f3c18a63855b307666c0d18a7e64c21dc1c83a5f0e3b2edd2479bdb8 1ab77d726cceccdf7f926bcafce2a8eb8f5ca9b32f370a192a0e043a981437da8adb9cf94b72da24e1630ec6fe8d04a6ec839c504183661736330084cc7b2188a293f2536234d2f10615185218349115d7ca81d2377c0eee17115ba31abb597d1eaeaa55b7f3b4bee147621df098dfd06b20670e1c8d15a064a1af8aa4ac70 2cd6eb52fdc8addf9633f1204ef11a813957e9469cffeb621ac33b42149cca7713c5657bd1147fa1fe7a7ca0013aecf241b019bb3bb5ef44ad898346a0dafe9bbdb5dcb526b40482aa88cc2b6065d7d8ed2a752f63f827398598e67b2a31c24be0186eb4ee8ab5e2051a5712d12a384aa4d27e4c26be290d116a71bc8e5922 27a0c411075fe94c4dc225404f3bc2911a0255fc2daa79ee596cdd48f0f0c340e712d7c25854fe0e87edfa6a4c603f3f77935f24edf4d28f537e4ed87cb1099d8c0937a9ef551134ec7edf3fba6d9e75a52fe2e1ced82957ce44699387dbc2d8bf8ffe9f6af6dd6458669c2b94e9066e8aeb02df9b69742bb8a572f9fbdbe2 78aa1a70605e35ea269ad8115bd56d063ad44926dbf6d776bcf6e11025bd638846861de1c15442f4eda2e7250cad26be98d8677daf1100f50eb9890ee4270d89585b1d76d8c526815bd2bb96c6757f1c16d789f1ca2b67cbb8838897ef038d4cf8d09352243df52f9cc8cbe35a16bafa6a67696b92298a3999d91c8efa3f47 3a4d0d7c87517ec694bdc9d239f09183d34f1a0e65dc89b142e4c62e6fb78cc2745ac3c8b660c4377562bcfc606b422e8c1b792f42d18299a2c98e8744f400140123d249ea7ae1f575bfedd05b7f50aea36a628ffcb7cda2e20a770c676b224deca5ca8983605cbd00971dd79fa5ff635ef3c33cdc3329b511d2292675b924 0a6e17f35c4be46ed74333e111704d2c44480b005ce620e83fec4b1fe6d637d9a6e2323e377d167e19edcb65f8d40c7435c3ed4960624b2cabe1649db2f6f544926f30ecf95fd8168f28d98d6e8930a8484ad1b392019c86daa74f0db4e8e993ab36ad69b03575faf26fc66533aa39183eb324ba30174574351bde5deda9c4 8137965ec9f3f14c54326bfe6467f6c282b6ed5cbc056788d696a3d8e8dcbfd8a0ed9793e18ac5e791641887027007a5a0c73392c9dd1157f88a307c0798d6d4b7346864e6af64429f66992100729c3f2154365acc90eb70a48980610f14d8d536b048f6718bc6c5b704b270a3dd6b0cc290f40e3137cb8bda7a927286c03d 12dc4088b5e36a74a349ec673994ea142aa06770d991acef5efea1338c22daed229aa2fe4f56e786932cea4c39503db16e32dd716c1a27cb0d78be21cf58efecb60099a5edaf3b0609efb52849b3c021ff564fc8e7cba25dd24995e9c164121be15bc4122216f17292e641c8c65551a44d4cee4803ced8605a36205d223e9c 748585e7e0db3c2227a513689d21d3a2861cdbfee4cfb36bf74f31a6bded1f0cf28dfa996f821103a889883389d02cb1112f643e2248db05aaeab02f5b5353b0fd66b65742c2c6cc7a7848171511b86b3f0c71e4a882c055a09077830f9f099b38d156a7afe5eeef4aea65f75ba912618a31bcbe1cc838072c8d0bdb954b5e b845c9aac14a1fc4c6e91bf3298ecc4d66709d91eacd2cda6a11b984887d2bd3c377fa55126dc4955e31e0d894c2668bb22430fa4efa8a0317e182084706fcc7382a9202d4d24905025e8600bef91e71cebf96d0756cfcb80189719f12dda753d648f3e880899ad5bdba7cc775433b40a02b381a0aed6788940c2e931f07e7 1c9a519abba74f600620bb189019ffb25f5ca920f832e1f7493976b10510ab64a8b8e65214879e9f1081c87de0784e40da248699a43bbc32c5e037705608d0af9ffdbb33c73cde820743bae3ba2dfdad6b61d3bb88e0cc72c3fb52ba8c4f0de7d1f2fd32c072bfb217f02188745ca88093b5ace2f81b8e012a50dd3c399107 28d8092fccb81ac1f78f01facd379dddb6327342a3b0ef8889686e02df57875a68deb17bcd08bdbcbcfe5f55999aa2fcae12bb2dedab0675304e8cc2d1d601d775905759c0c5cf9bdd6fd8559daf3a98b62341a0897c4d695e7743ae01a5a00dd1ed7c7df30788f4ca24a0f82aac4b24143909b4ad3bb84a6e8e81032cf3e0 a750dfebb3440e2e65290ad429aae20b38f6f80e5dc479c09b8dd6da5e0b3f525a18f6dd3f90c0394e6b635cb63d98ff480ab56a34ff7a20740c3640d8e07a9c3bc1839fd7a7da78ef5743a7238461042bcc6b1bd395715862bd35cb8c2361235bb4a80a25d5bad2a356d8ad61a7807738d360d07d8a7de628e932fb78f63e 12270b26fba34879a2cecf6b61cb4f3d460a8cd37d9b695dae2d7888052238e2694422a446c533252a416bcce1e3ba8b94568aa7f11f34c2470b9811a0f02c9ea344e4df9b19dffb3e2dbd51411f6386454d40fd1174067c7b33e7ce75acbcc06cad15184cf623f224848575ffb52746dff0f6bce94ed8aaa162eb8020572c b0f955556ff87b56a37c3ab237e52a4936440b588359337c48c92348cf3afa958c0e007f6bfbfcf7bbdb7354a405e5df07a600bbc391074f0e01ecae7dfc4114b05ed33f048d4bb50358395043976f8f8d5526ab7cc7a503d9dfbc4c0a1b352c6ee6a29c30b39e7d5a530643d59a68ad7aae841f95a1a779a9b3e3d9b57b5e 8e826a17be18ee4c4f5bfefa32611ce07e9393b0b1373af60cd30e569e496d07fd86aa790fc94e17a67f9c97e667be5253adc946cc6a2bcd662c7aff5e77432c37e4b4dccb0ac499804758babbdaf34c42570b74d42953224b1036d056118301448046053c847df44cbb17b5abb4c4e94b5a824a320693a37f47b6127b1738 268903e4721b0cfd1d64e90bd77b5f93e8d13cea8f30a9bc3ae9e58468aca69bdb7d1f18e21359762549db5c89046a7d55ac9bf3f90ba1dff2eb9b5931de99ef05d38f3a520fe0d0c800997cca41ad00d3caddbbf6e6240ae3a3f18b5cbd3ff75853d6d15ab56ff23094edc855b8a6e39b1f91ce9d5db388638596c9e4a9b6 8f056731eee5f74b7603038d6e1278abfe08011cdf54fce87119f087537f6e79313d5539a18e4b8e015f36e00d98d135ee1ff992d00d67a81bfd7e3350aec3e8c533f8f6ff10e0bc9eb542a1fa7f8109e7a51c78570a06026754fdc0f8adc65288965d876d929af1a2a1aca0475a655bcb950589759b98209de4bd952f4a31 2a14d5d7ab9a221744ef2102af933b7c40bac7a173ffb23d87385cb223fd39455d6d3b6840bae8b208b1e2a27877199ea5f4db699c50017cda00305c04d87a730c2701da915f1a2804c8e0191f8ed22f8d627bc8bbcdd48b7f26f83bc9564d81d046ecfee8a725e3cbd99d37783b91fd2e68b4ecb27f84e42062eec67d217d c09e50dccefa314db45b3d4d23a18943b085fe9ba70ad17970e0b5d8c326337646b05f9125d7ed3fba3478e43113e1f753e9eae84a927e084de8bcf3a56d06fbc210a0779c33a50ca8f86497fadd17213aacaf785be6c0b7f1254847e44e87921525fa83044824abcafa99839629cf7a5ed7e4c126b01d93529b32b7bd151f fd9aae121f349b81c79f4ff6c382ada0131b1066bf92a02791b39dfb9e3e91822a761e778cc46de07e170f95d6191f3282fee93e57e5f78708e45632a7e162d442f42aeb9f177b6e5d13f4534004a915c10f7921a6db090f6a7525e4d5ea4ce717b88aeb96cd304576d24a193b419792eab95d0e7df08890768787599ff814 17f4066a791db68005c7965759f2ad91fde7385c1811435a23375a61acfb430705b8bcffa56744397e0673ad1f1898faecbbc95cb2f7cf2d8e64a0442276e0737e3af8d448f2a53ed0299c1a45279883bf1ec9fede95de82cd3376554d8464b3f0aae61b6f38e040fcfba03fb3e43fe7b11d2b35bf3f3ca22efd1d29dd9b6a f3d41c5ea2929e502d18347028eea275244b6b1cffa4c17b17d6695e350e81826780a8dfba0201cbe1cf3c1c43dc6387646f6ba421934633fd3955c63cf0c8b7115a5a66e5a03e9c5a5793e033399b70edc30afcf839b2ec263483d3f3d8764f3b2b55179c7dad9339d360e948c68ae2947493f4b0a4e61f04e09fb81b0e77 da90531386bfc57a0507a285f67a23bff25a79725137ab0d3dba371f4cf2448ae1fcb236b23f71564e53342f8688d7f40f3986c2779539456bc23e44395003b8097547e3505abaad403dfb147680609ce540e52929c83ba833c99623de2e0b1aab95e930f4a61cb069d75ccab1ca5a3fa737f89a0b31193b84821a693166b0 f97300e0f5079650dc8f907d799c102b69e716050ab526c0dfc7eecb75e4f866caa3c2232abcfe363ae6b5c2bc92e5ed714508656372e422bac1e1b341e89ba11ad3dcba27fd080aded42be6e8c6a870365d44eac6fe43c103eb63b58cab88d474f4c42e46edbbedf6d4f764cfc865e80cae7360b31e3b75a4f0f369a8e3ca d3a5bfcc93cad8f1916bdf3f259c4a5892b65a83704f8dd6ffcf2e57cbe4cc7f8e95420f07fe24d2a9c46c5a77032ed2fde68dcd66bdbe667dd187a94cabff1f9f10416cd2affb898de59ad102eb2c973de95bab961c2570e5d836d48a2b341de3ddc7d0b0b71d3570b6d81b8bedb8b3d0739449d7c52cfc41cc8cb7fb93a0 1af28525b0a53320e220317b90e499c00cba76b56c61076120c37d6934e7a356b1ebae6810541dc2c630a542193632b6afd64af76ad61650b2bc150c812b153e075422b20b5e3964a71b12be2072728c607505429d5e715893d07e6b9a35771cfbd538f5d44017f4520add4af9f7fd8c17ae5c26270bac6693d81ce2a831cb 380e2f1a0ebf1fea8a58b15399984009138c48bf12cee4c9af3bc911a829303f538a0f52850b2bfbaaf9d72558215b49ac3c1de809ccc50ec3720c90a0c4a0286f118d1f1220b58d791a5582e4b187b0988052b367a4fcb1ba8da53fe734699f908c34323dc6cbcfdb8fc93b6d1a11257fcf87ddd65d3f01c63078ad69dbc7 2490eceef26b2b4a36571e70ab8068a9224dba2bfe3902aff31d7164e9af4cbb7ca830d35e151f6cf72a2e5f144d38bbc8b8377f390e730212143a452adaf9682410c1e9416e6d7d24c048ef65e580491591924807ba88a85ac6064c5ade510ffdbe719ddd38b256ca77a5d892913a16da4a1481f4a4e9d0d61c03e32ff5f3 db0dc8d50ad7ebfb09845d4c6ecd7a677b760d1e499df8b35e6bde600928d0555d56db1a00aa761a7e09ad5809244a52e70fcc1221b057742ea227598a2b320419fee1f8f0ead01061e2e805dd0700c5ffeafd678a8651771910dd7cf8a9a814589ef600815f178ad546017fde5e333d64fa7b3a79e231306d55df09a01c21 fcf83de1b06982bca10da8881bb31378f77054e843f6a6faf686a5dc9084920206002f211a69c1d136e81ad1e4a3348aae77cc3fb23230cd44f8ac0c34b1e861486f0dc8906a153efd9f774acc9533fdaefc238df9bf56c98626ebb8351d75b4e76d510035a60df8b9dcd5f9566991dcc897b0dd3b98541cc19f581ec026de 5bd7b316981eb4fa5c6e0e8555568c768448fef2f66ba7281d8ea05d632ac772c8a42123315a7bd43af7052a534eebd8507801a32386e6aa4cb32f2cccd88f70564d77edd99221251284e6521b1af01dfd8abee459f994fb653e051a5cd35b62bb4c2ca86f9e2bc51444ea8513a5dfaab452f39a41a1fbd4b596174d6920c8 d78f5eee345216a4888260840594a822de5b59f8d61485d359417c5369d5a49fd977b759d431fbc95992607c9fedfed9408603a0a52aaa54bba54f3a5d98996837dd4a01931235dee4b84d92d27154a125a3f529151213af89da7feb9e4f1293774740d74f803541aeff8333dd58613362c57094fe45f727a4cd2943edce7a 697c6b1c89c78f739242d118394f20707cf861bca046a8f86b1b6d00980b90e0d3a9e04319a2f1c34069e2c7efd65000fbd250ec0b25514864c91a7a4b8eb983dc0c246f68c306abe147008877221a877ea7f0e9234329e89b85465b25547461aeca513f35b54d64ccd040fbd316f01db500e3cf7d8ce9f77a490edc67af23 ba88ece1f02e1601cc73d895c11c68e709f276f88660178b7b0b9be402e8ed4401056d0b4b59c5e53a91ccbb53246888b39efc1b2bd4c9b5963979a62b5e34fefb06f11b8bea7f6dd41bd22d40c2e7b176f0c11044ad39b5aa0d6f103102ab7dd4a49b269b93e15333419135dab9ff044650bc214afeb95f897bbc81ca1c07 a2967e6607678affe433aaca13b8a3a3293c8285b7890aadcc8504d88ad1b1d507a416bf68357880ccc2b3b2bfe6aba7c0eede89ffbd383b6b3ef1869f4b80825d21e2bb3ed6e586379d9ba26ef5f61dc226377e72b068416ae28ce608fbe7da8ebf491ec59422699c1877cefbe113856d9291f3ee19fba2ad42d16954d4fb b581f15dd6476f03e92663c41e57538e8e002a2a3e6693aa9a05c49d57765baf324d4569eb7bb664ec0dcd6e8cb109f5e21dbb168aef008eb338d6785e2dea86ea733c485f2cc8e86efbd8173efe88de6b0574a7c7f51fca091258185a0691840e47ea94401e41bd95e41c04bf1188c30548455b53f900fc769f87a5510520 61db98e5d149df129a25573aa8206a483ac63c8e4c8a5e51e59a43474f9adc05bc1e1bdd796dfdc68f340580e87da8e45ada31ae51c67dcfd8e886844b2b25c3f138963121554efa1ad1db48cd8deae6617678f827cb3559a4c5ec736b0055abcea816521a12998da7b66b5c8dd2504cb17df50270a2d989d7b0a81e580cee 8c39c6d5fe296a2b8cd298ec84ec4c9c17c39a3852d55c125a4d8770a3e0ea4668d97578b94f099ee92544ea2138308c388d94938329c7747f40a49b1880e6edcacfcbdf6d27c06741f0f204150058e224360c664fd49392669a5e6adf6714043ac941598ce467feab295ab712a6ec17a5c7100cdb2641fed1eab4784dbcd6 6b383ecdbbe955788731a27dd7da80fd8ce314cf6bdf10ba612ced20e89787ab9c4262ac3e7860d63a2c4d0257c6d51189f6c6851847d0602226fe91d7fadcdf66efe32e8fb9f8e907e7ecaaca3c14b5af665f57fcdc2414e978dd83625098c42e53103c720c96f2eb2233a1ab567563d090fa95b170cfc10804fc21ff068c 2d806c25d142f5422b15f55885761dfb48203117169ae6fabc96ed8284ffe6dd1d0b9fce0363fd03a43004ecf25f7998095ffcbcdb1e83ebbeb305c103d6a4ab57d02c0f9a0ed125d87fbabf6f78880ab96c4dda1779fa45172a9c4528b035435a18684a6bf8fe68738d6650f7cd40233dee61191d97f0f93e0b239cb775f2 7c0256e0eb280728ba50baaf7c50c240f1962172834bfab118c2ae6dfadf3518805dc0f291b299358f3c6bbd771ba74eb228de51237640c0ab5fc066ac74245031256c820816e91af3d618db058b030c4aa6b421b33a4c40a13b0506c67c280bf725373ba45b5ccd76bd0a2b25ab4f05bae6d2052a93d9997f399b5555f87c 73b615d27626c19e2751fa3dc83d297525cb7ab920031cd62f9f046987618de990620485490275957a834315ca92b68c06f6b3e18b84b9766154a2f52f9ff6be208809bbe27b9ef95468cd1ec05763685d4c57c6422c11c1bfe232eeb39f74c320bd282148c34006fecbd68a794f67112ad8eba168edf50e5cc7b5d1bd77c2 773201595b996d77f4e5894402934bd2eb54ff7cb55dc242cb9cead58c0165af15a37c8cd9d3371c9bdfb1dc4411f94905ede644239afdf18b31e45a62bc8aaf47c01f33b90a2b0ee9253a99b9d9648d5ea5f95d79f7e5d7d6eca513082a5caad32896c76795efb5b23152b80cf798d7b2efb75ae8f42867137d2837e5a6c4 d890d4c8a5c1e3e185085ab487212186acd09ecf3d88748223bd158e21e5ff572093cf5435a776caf7501d36f36c95a434bda55bc253b9ecb870dcd891e8fd42adf8c5e17103a040f401708041b07891d90b279f4302df9c9d4bca1b60726737ae5b85bc4a0171548c7dff1669fa4c86d9b96239829ea2e0363b4a02f34df1 c5fc7724273abe2bd0bfc9ca1333002ea38f173d2f82eb3125d441a5b1a10bb97acd1018672e85e96e406a9192c68570635a1e4941d3e167b4fd9ec0423f951e6471c27fc4b2d8df8a1f6dfcd7e75093ea4f121e36a885a3763f4b80af1160012635fa58e59a00b3975941c3dde1b34d524ce5e68ad11b58b46a6f9f1ff219 3303849968fb27677f0332c06c4f5a13522cfa6c99808381cd36caf4da498152eef447ca03d0b02fd071fb0138b950b5ad8c87cbc5ea961f48a9a45f0e55c1159adeda0e788018d7b14ae8c457574f60e61f9b5c20a455951c4ad5aee44b66f384937c9b4001cbf9a9ef60d0d0c43e0f9f0686bb8f951e336745bb03148722 c81593b9859d92d9e34f77bc952e6e4aa2d688687cda330096f7cbe56d64bcb694c25e7f3c7d646710634e68c533e572c9ce3c0991c2969f60c8c3d6d1d1049ac62a60093216a18b108277516b208e79413a74dfaf5dd0ce70fd61650c8bef74d4029234c7c652f9c0c5cebd3edda8a0a9aba4f521803de9c0a632ca1902b7 54e61f19acc6c216cc82a2e12225341dc83ab069f4bf1729dc6df64afdbb2d4f60b2f0a52b03ce289201aca4e1fc60a021b54756b10def2e443e34fd4a269c886687dac6be9fc0d0960d1fbffe1de76735493c89b2f29cf335a71f00119286fd50798f00a39d28e56b89217659d63e92b0548251b5971afffdf087fb5bf370 58d263e6462e488392b08bcb5613c007bbede052b5d39f93fe3263088088578743b905306a49e28df7231f24079d91fef8b0c090bb4efef2f05bd5bcadef3af64db04faf7588cfbbfa4fc5909ef5b4c5de609a0a84c703aa121fbefc33f44375a2ee0534f1c75ff76dab5c95bffc853f0ee109b4d6b3b11c72fa1977e1e165 0b12ecac216a1a61614c2136728b4ed70fa6627ef98e766f23fe00320ee8035bfe0e09594f2c4c816e986ef705bad8d0b578a230f1e33c5e20514038f1ccee985babb1f677ea603467cbe7fd47386fe1677e9ebd3a9f00a683b123a056b21715ebbb938429cad7bb02c8a3ddf91b679ef5135f702a296eeaf210c765e73e70 e9766c37d1e5387cfc8450b4eb86b546f97ffba4dd7638030f71f4bf01f279cfe56e514a8806ca9077655dc7d7d55062b2bf3e3519bd10998d62839b37458ee67fbc105022a26a0098c7eb70e5961d305e9786bb328437b9ba26ef1154302e52661651549c3dd56627354c1d5e7fed1f4f3810b61b620f2e8b21a4794b833a d3c282e0a206b48250a051636be8626dd033606e1fcbae179a8d9f5ba5444c59f5153855873c4933b03466d36ff8b273d5d5902633c6357c045405d6f9c2849513ee118cb292a8af7567b4bf956ce44054e62f75295ef83f46bd3a1c88552cdadb720ef6b51474a501202bed66749e1f0db82e5610df391bd28758ca9911d2 e20ddf4bd1c293a75860e50c596ed05696856bcbc8c198d5af463ea96607aeea101209729030631a441d6a340c7221a80d7c0e2982db4a16f68440375c3b89738ef5b0e7e687a0d3e059fff24a61d7204f71dae933b39292b021f91f77bceab6638e34292d53d7e1418f7043d5db65c0142e7ed8891c13c10c40adac81baf0 af4378a54e55d17c5305a9c7d7dc5bda8c28a9009815620f9bd6a633111a092c88581a27fa340c41990c4dadf312bb8a9e0c5c0c9df100ae709749a24b0f454d336452693c7bcebc04f5430c1abed166db771f767e63b96a2ebe6f23a0b62482835dd69709df3308f5038670175c83352e32812b068efe017c7395fdb2dc3f c8841c4d72f861023d7d497491cae9f6f102c9ccc360b1cfacb86768eff68e4692793c7035d3d0a8283e5b68f46240bae308c049e3b1b029d08ed3022054ff8eac199eedb532191466feee01f9794dc82ae2acabf654c1cd5294ea65835b0e6e411ff027288619774c4d1f9ce3fe473ccd0c90f2b95394d95ca4ec035bc640 a824fc4fbb5abfaf60bb5f00b791c83807e99f681d69978024de8a06f70a2b4e5a14eea4bf8435caa32808a4a532d409ced0983a214bec5ec2a1b49ec5c41de690aa579655b65706687b35a07b900ce8cd623f42ebefa5cad3902745ed58bd6b8a3a71257368bb271530a5f2c4f5a0b8da21a4979881eae1349c8601e381ec 47b317a439af49b518244030f37a54a7fa56c62c1b0d9c8de4c39f9cc647c051ce648313d31f15e9fe4241fcc7d8dc20a36012c37a84f46623077b9d30c3c656f2eca1c8b7a477ff2e40470209a3c071de7b9e84821730d9f9cee3ce08738dffad0e3f3f3a46eb3977e9b2d336695dcf04ef5114a880777cf0c3130b847f9d 1aa9f608a676020455968657e766928a105828524290f34fe2208c31cd6e4caa0e3c075036cc57681b4c5b8625f26591b32d322983963c099375fe4b6f3081443830fd270487f4978fdbd9917313949115db90a7c535b39d925afc2ef0786c75ec148f283bd707667bffc2c5696e7d798c0f1e12574888d17c68defc6c160b 882e1951de1078adc7e15ca59f616fc1f4fab9032760ed90cd84c7bb931494d07e5593978ee2e0eb59b50ec0b04fe694e896a57bf2abd14069b0f7f5d32c3711a3e23af66e3d02531a0b8b24efb310ec815d47c2a0ec269c4dda06a3b3bc0225a242708a7e7e8c4cd18bd046e1c5bea25255953d021bc02e1aa330a6239855 f8bfbab1ee78abe350e3294a075f1b24990b9056632ff2c7694646ce2fc425528f1743baf3f85d8cd0283dfd33bb2ec2ffa0cee4f7d549ce3d7bcd582b28e5c71288563323dd1aa834aaa617e5413fabe3997e294c6dae0e4a5f9f3b0637442dfa1b907d6b0fbd0a950a342495f378253624cc024b2fc96c8527575cbb06aa 64726133522021c1426c11bff8084020d0c533a939c97532d9d3a913fa9055bc554bf084a4fb708614771dec91cf724b8cd1e1208d1af6dfaf0ec7b061d0e1abc09de920462603834015f38c858f97d420edd88cb71677fd6a403c036b56bad3a8b5ad10e9144cb7ac11a50607d75e211376b04486a6ea3db25a3a032e8911 c287f91d14596b73d43aeed0e5849be2e281154e5ec7c8794d587b0f7b994da8df33f2afdf9b3e581f44b8e4051e5bf5af7881c8b124110bead6fc8b28256b9775b8e35174f2247de594ae4015dc35480d2419ea4fd43302a4305f1f351af63712c577421ff4aaf4b91ee104d03efadafb70c1bd73fbd31a8eb5e2edc0ea33 f0bc3c54ad8d6e335a0e7ba311d0e2c72707d73d04549f5ea29b6b26058f5ae1585ab04a87a01b6ecc9036520ac6d1a85cca1168458d0838cc6c485bcf6bc3f7f631879291d3f692a5dc46112fefad575ac80c1848e98aea842b97d893914a731d19ad4e9e0c871c852ffb061b5890ab40431bbc29c814dca5dbde2e572fb3 d20862c6127effae496341cc18571a9315e7b205d172943c2f3e7221c768d9c34ce12c431f8957adf28a62c2b051effddccd029ed82ce9c241aeb23638622c0e5529649015eba08410f42d8f2a77c3d3ee91714b5d9ddf0d9d6e26bb5873e91b42fa0888a2c446c0bd15a80585290a8b1843081b9995f2342ff5e620f6d509 9232f08b75f2349b42a50699379975bdb6166eeafea964b4a023a45761b02ebd3f696ac75eede1d0781bc26ee888649249aa6bd47e38ee52ff8b568ee8291e60dc73ca009dd280bbf4c3068dafd2a5aa84e0f7dc2f882b5a8927f6c3d25778b83fcbda79ddc8facf28b5b5131e7e0a7251e1f1a792167430a99e1d731691cb 31dfea8d3f4b7e72920fc239f97e12b40bfad7a1f25b405e1873339518ffbf587b7489bc54c01ca52b031d8b7f9c0dc9cdc8152c3216bf7c518e0454fb676723509636e1c2332866d87347330513f7d25384b0d1e0749e663d4d32f435fa10d838d26979baca31ec4199c5ca3a43e343ef00d20afbe66e8ca7f0cefb58ab19 42d37053a64df2ca946a0a5dc79bb3c762c9c7ba744c7665b5a4bd877d7256cc7507ed492b8dc2bad29446c3a4261eafaa4dea8b03d1cbbdd556c3515907c90f18cad511a6a01d280b8171aaf8f21ffaa6b60954cc0439ced08f3e22f7575edc8ffd9957010c0953e2b0056289d41af031281d84c3693e3eca86e3086aff45 27a8f6d8639b62974fbd6a8c79edba5cde8e3a6bffa1aa41577c6d9da3c7e6a7d0067e307d859a5a658a7bdff9bc0c4a42490f1d43f87a0b91e690626bab5aef94e49577762b2b315520534dd4ac942f6f484507488381c7c8209b817e594f9080e37527579e6357dfd0bc16d4c7b2f688d4115c2c084ef305d8f5f42f4a72 c28489ef50069564f9f25968631e9dc643a786febaf83bbfa2a0cc997d4801468ed3e677699c93b637d31498283d7c79fbdc85490aff5c8e955ed8dbe53abfcec51f059c9b99d59c7d7c2dd22d88a00e6e5b59990ec3ef1ba0e0f8e6a454c2f272dd79f123c0808339c2f9597dffdd18cc118eb43f38965836a161d9e59c34 f2a11ae2321500b121e0a945e02079a2957b02d9d75f8debddc47dc8d7ad29de804e370969529276ba3a8d034e306e3b9a8969ba8a68801a913aebf55528a5170087a657517216ea9d6f6b968d9b55e6eeab9f201e2f0713d3c85de08b96c3de50faca2a44b24f642e1ccdf1cf6fef79d28afdd4831c4246bbb731fbbf90b1 481f074be75110850f19732972f60b6d5f6ab51c62ab9f74e030683dead495c8528189ecfcf38c0681132847f464837c4043ca44013465b46c21e0e7b6a6f70fca09b6cf44b6fe87eacf92d60bc1b92d54322b5909f661a9465dabe508694e25a74c464691a58ec118b65ed8cf2110f5ec017a29469e2184fa280da19e2d86 04d4535fa385b40151ff1a38d8ac977c761d34bbc89c613e5de31376976fb964ec7df6cd8fb18e2c53b05e5cfc74083d0c4bf3c2715f371a8fcc65ff7ba4daf9bf648ee5df3329bd91637c4174d25033681ccbd9c4882e5c49075c5ad6c72089e75e5e3a6221356003802829e21b04ca060c04812a177ad0e5ec0fbc07452b 837dc5b791d905b00ad96e7c7b48bd03ee91983aa59ce3433a912a0b8735bbaf50f7960f54f54802a345350a0df6717dafb3f8cb60e183208088b334c083958c05c907f29a6109796d1855fb0ac4f16a42eacd23ad06e26f1f19d4fff21f29809a8cfcf6b10b23c314992aa41b396debeee22350293c3661f2d5eabaebe5ae cc0d3feb50e34d6a981c7773504d189869a68a87b71945c49dd483633abf5d96a5bbccb91505ddc815f72651037d66e538bba025067980736a12b3a4d59de18b88ffa0a5e0381f0d987f001089be7d738003b66fe8532b2cd4139f0471ca2282ff41c8972dfeb0eabccb92d957075acc6724dce6f2ac6ea076ef12390d5f3e cbb910a9a7f7ba00590e68bad46f2b2420cbfe0c0a3db3bc668ec79e54fcd950465457f9f4ecd771eca2296507e309c4ef19558ca7782f12f1c991bb8a9b15f981ee2188cee49c34a68e505c7c1a0202d2b5c3733f0e45f2765eaa8bfe9f953bf2a20ba8b2ec4d9227e13d248c81c8cf1399da3a62f95cbf8bea36ccf55a3e cecc0c52170f0ae102cd20a35e38e22084267b96de41e51031b88a8c40f029b77221dd09909cccc1266ee5b2f05306ec1a0b71434a133c3d40de6ab73e6fbbc1e505f094a937c23eef51384d94f29ccc14e1f12637e40d5a2fdf12f201d9e55b2e3ae28cbf193cd0dd15cf6475d56c59c8d23e149df5dbd432467db24ba02e ad3e829a70f499bbf31277765150157f069239889bb8983b45d2306abf6f5fdf45335e363165100585be45a7789aead01aba3c35628f72a91b346554ffe3072f05fea72d43ad253cc4448ba7ec02d4da3661afd54bd49e5b8c2172af61c10e08fd2064a45e3f43e8a31d4b6473b725819e9dcb49dbf229e6b1f6117c82c2f5 6c8988796ea7a8f0454956386577a63832489fc1372c9ae848770211b4e0a6f90d80bbcfbfc0fe8c5e82c415e07c32a08de452c392e12c768dbb4cd3ed3aa4bf8000a248a366d5e067fbcb38a7331e027f6cc37b781ac6914d636d5b7d2451630b0fe5a3c6fac0fbf15f7dbb2f77a7eac6d04a19769c7b8276282f7c931826 a17be59bfaaf5dac88279a04f3e104754359b8edd3efeeaae9dc088512c5e6957f063f6acb85d55430f0e869e68cc809b8ffa6b19930afae2410fe3dd02af8a914d9463dff9ba07425e79c695160e4c365641d97da5ec0519c7c9fcb02a3a4a60336a65dd0a3604fee687be4199a9844aeab72cd6e492b1cf30c0ce813d753 10332c52b6ce10424468ddd06572c82c6424ee65daa62ec2d49758a83e01fe4307a7e84f8b3db123f44569af4f1d6df7b82323a56e568f96e144be65f5974f77dbc5dccf1468b2542908a6d964fe2285e3198b0b6e7aa8fbd7fd1adb3f7e7b9f5ddb69c2cd8a487579162f546f4ac7e9d531edea94cef13b801bd17cf20596 0ff1b3d905efded894d03b18b1e799edecde3aac30681e4c9146eb5d59cd72de470e2d0b7b0af2c2ac0c446d6bf541ce1cb63d2961db8582a931ef4c06d4cd7076391d18827a504ad28bc1fe3f0e4457b0dee2021d3696f1b71e62ea8ecc4f4b4ab04cc6a6c7073ac0d7ba5ce482480343bf3ff6ae63b4123124bf504851a8 58aa67f098388ca962040d0f4d896ff0ebc22a44966fa10e7ed55e9cca83cbc31f9d64f122bac80f52ac93a16a60adf3a9118553a962950fe294bd69093cc28c485cad9513a52a275cddbacafbfbe38cf1d0366e3ad523de33bd22fe47ffd0bd0348fc10e6e9a6d1d51d02761e76c29a97099af558d7dbd919d91cbcf393c9 e4b258201cb08e3bbf8fe891823cb81cb999af7f99dd0ad704aa55920c90af094ab40f8d36b5d3e3e84c7a3ed074d7b32ca8abaf8d8d7c66ba3470fd434eeb0910a9ae55e8302ed7c944be3ad43fcb7e8b0939bc7a278af34f5640860eedb6a7a8714909caae98f627c11685d4a60cf56e304cd15ee1290e258ff5934e4bd6 5aebde771cabd4d268877c3a39a79373c982a944ff1db9515df434269ae69711a94ee61bbc6f9a8dfeaec2c6859c4be67fba85683216ab4a53aa62d8b638001b041b07b786faa84a223ea6bdd3a3d7cd578729bf41647eff45e40c332e49bb9fcbf1abbbf87a7faab6ea942e2e9bf904c5969c7075d4e5124e0b1e5155f783 8f754b580a05657392db64f65c63d743fa39b3a046b5175eecb6e90c5e111664b195f31eac75dda9034f40380a4ead2a7c711101606cc88148b1d9ce8953c3c440ad2d1f63b41f13c0173660e9573b597f809c19915c2575e3708438fb68abe46d5ecddbbd2e87dde05f2f7afce39298effd658c6e70609979471dbdaa41eb c44a836a75c2b7e71db3114f7c6c1c8ca6bf0d333e3487b3d8c9838ffcebeeef7aae32e41b12f9a3e410d469a7862e52a2c796078d0845d90881cf062190b3bdeca3c36c7c02f02d3e7b33bf30143c2d7bc0355be7e848b84fb44db79aafc1e17026f620e1a05fca7bbdc1c516371a29a1ff152b1e0e382f837f4a4e2215ee b992a4c59976aa01468166f8a31040d450f1685b72f9c406cb82cc87feeaca48453a118e20963cc4410f8eda396a323a20399cb34d2601285240de61eccf04129596a829b236f72515e515a0e9d05a8e09b44efd6798b0441024a31ee582f1818ba408476db61a35ebcad5841d92a37821a883cb9edf1b7f3875f44f06d9e6 e25048933af89684b9c7ce577e4a80ecc617dc713550f8acfedd0530ee95abae6658a29365a3506a092bf587501c519fa2e5416fb161c7d4f9e06c5fde5ab5e90460f7addffcf49541002a8a3c7b75e44b6a9d2da9d574f9441604cd3e5d4c8f93b44c167203997d992d7e7f8bdce60e28381f68f43e72be4986fe9acc6130 a67f04d188611b5ba328e85c96b8695ec664ec45d12a8ea8b349b1cab4284eadb2adfb42dead4d233ec3af7e29501c77c814cc97d1085ea6f4c388405873fae70b9bb20455577555c0eeb329c9791a6fcd349e7ef96aeb0e813cbd945dda5547f684d95e4be523a10bbb7f294d4bf3c4087e7f671b62f89b1b931796531f9e bd02423277cf47a1c5dcb65999f5bfda115e04a091a0041432a7aa245858344bd73a01b81529e6d981a5da1e895c7accd96abb6c0a11a0326a0e19b6afc5d1e5c56351ea83a47cbe42e8a580006e1049e388a2c04e1afdf964d36ed0790707d0df13ebcf8cb4a7137f6a5b42570aba0b1015233a6d79ff1bb18266682d9edb fd1c5f0978cb1117ab8e01dfc61175dcc7f572e1577a6e0bb2915943a530890978cda080960027fe0ef6b329e5ab32876eca5f71f912d3a7bc8ebe17b47bccd2df44cfba736831c3015c799d3df76a79a499a929fd28b5750d60c38771607a6e5fd0077a9107289c50eb698679e68e3decffd25d76914e578710f80827423f 76b63d933a50194eccc3c6654822963f8d4afdb824ad6e171a0bd45188d901d09e6c45e6b7a4bedd478b6eb7be7bbd8752a46d29c6802ceece9d08a0393159a7784bf047b2002cf30319be0ee1bfac9cd6897c8f5068bab7d0ac618011e948916a63ca47b21b85e2d8da8c075c01be4543ec35385fc0b9686d4d8b6efd08cb 8b5f5258dff550f97a021ac7216b8449d340db55522eef35abb75dcc489514327a182a1e987a5caea48390ec816a4775906cc3d93a4a762792282b44445d8337e8866a72d749ff2848675be49cfad0d080f55c89355a821a9b68cbbe05c39e871648e8f6d2700308857347d0e0e897a92770295df6e0cb7d0695b356517c99 604597dc6d6309c0d8140fed555de57d1fdd7587c638577ab1ffe187efc32fb3875c001e76ebe96abbff89a8848efd004f489f3515de319c41f209fcb3f17ea0d5ed7582f9c4b9ad1f72e3ebbd5ca2346d213e014c54d03f7b1355be529789ca897822e8259ca101c52f7a0a8063649df85389a88fa74b2c06819a6a2e051a 9f5bad5dddf654cff0db8fae46a34674213fc29a0fe8b684892f4560928ea6e61c1877cb1e74ad3bffffc6e9386e0e1255a83a4382bb418528ee9a27d76233e9a131c40619ea480074b260e4d49c7720b5870639c93a94af73516cd61a66d9907de8232348d8d6afb7f965ee2810d755de854c85cbbface3c03d8c706c7f93 237ef29eff8a168eafb91afe474b54218c72289d9053b3d0a76ae8183c7e7882aeb0ea6f86728e7f15811a92b883923f3cc032f942ca392413275c8a38d2051a6f273cf6833098efbe6ba2cdfaa759c909ca62c57bf44d226b7c4d17e0ffcae7c2be3e65bbd54069b19319f86e9bfdbddfbad2eb023a281171588c5174dd42 cf3e621fafb81f355f296389c9de19ecce620d6a0d1dfc8a3d5342dfd01faf90a098cdeb687cc8abbbb37af0e3f24de7eb9b53714cc02f685ce3fab001714de1edc3fd7c185b0df0b8d41356f751116965d9df979d094d214595c8ff53b472a8b023b67c3a1151c3d52f6b7b2990cb04c85fdcf9407ac7434de4ac2b00731d 8b3c97ce81bfa2cb5de6ff983162face7fbbb4ae5afe0e8ac460de97c9bf1ee4e1eac2bf93d8c3bda89b806a7f8008709730ee4a895b12abdb76d76e8f2caca3cdbaa6b4ea9e73641eb9377c8500ce185b885b76c2aaad1205067b59998bc7cca8c6f6b67488b85e7a881cac110f0de4e4ecefc8ea8bd619e76a57ba862a41 a942cfaf5934e41dcbe37a2524c533d83117533640c73fb941045c3f50c45353a10fce75fb1d0bb800d3f6dcbece51d5e40c7fe5076c4fb38722c947d054d84929c5f2c9aae8b34557b6538c71629bdb1b9c9535399b0ee4dd4db52e7945ce74b3370f5556e82bf673b3d5f64f263cb986925747948eaa0ba1dfdcbde06290 572444aa5226923053c6dc2208eb440c9cead338cf5513a08945689c302978fcf4fc6ccf15736001ce168755184c4d673d4a3b547e3a740ff958e3b8301cbdbbf7049751954fde9448451ca1e1462d3cf1b3f7340f4422c2405657c1e4fd7c7636d4b893eea7119c046c1baf3d1c3b445039e83afa25b34f88fd5d58b2c223 b89e02a713270c4166e9defd15394f605d4eee3cd3e682c24cbfa557f4e43e2cd5414a17e8913ae97b4178744e316f1d589546e49b280c34b5e55122b4cf984a11baa7a20ea7a97c8cae3bbe26f1e1ec1b9cf98ea602ee2658084a1abd67729c6d7cd427fe18b1c58e69eb6599ad5baaf2e60d4f5981f6fc5030e57d13ac26 44544a923ba836d44551fe962fe30baf7208e9275f3c5f6291764adecc1d03b891c9640213b9738c89627baad05559eace7da50b1ddc4cc0c5d67f2b7fa2476161b3bc494a4012dd7d24320ecb4694b40877362a5dcdf49244a0351a5316b2404ea7a0b01bdeef039335023362d5badef4df9de48926732999d47d9cf0529f 7f9b99a7c221182fcbbcf005aa6327003df684765252ca52a8cee4063fc08b1802fcfbc78ba7d5f113d31950258822c9ace597172a5127e9cac20bb130c89e391fc1d9c1c0f4fa3e282a28b3d2730ff031ecfa503f9a4dd66e6463a091aa48027a07385f1e4ecb2d0c80fdd0cda458080379c6ec8684b864d55c0afa7373f1 41490a1a658a09df81e34b1e3bd3d752772d170807a0c000be413a8259cf20584e994a016f15b3041671ef27267643bae59c34a71778e8aa9a60f1bfd86eec0e8546d92fe715cb01fd22182f476d2e93f099c7482a6319a8f2353acb138717191da0b0a7ef8114bfb266cdf5689691f4d7f93e4f1e9335393ad1ae8eb9da09 730e9d12a5fcdac260f6945f47785cc367d81560c5fdcfd1cc41dcdd84480a62cb9a4f6f445540689f972bb06c4069e325d715ee2ce3fbf374802f1496ea120a3468dad441bfe17e247629f9ceab782c8ed9c9a58a5f19cbf36f86e4fe4d287c61aec9c4f6116fd5a6d7b2b099faa9126f6f2ebac45394fb232055088f5b4f 3bc970f70be7a5a7a10a484b4ed217cdebc6cae1b94015bdfc19dc7814d30b3f5075899f93632e5640a59650e354b4ad63ebb0c9a23c118eaad1bb9464829eb1b1d4c411f8daa7b50d88d03cef5ad14082e2d3b0a466a25e6f42ecb99af98da44cee5727ee8b1ac81f793450784a3ee72321cbc212e30ce4533065acb49ae2 cb251b2de6a0ed30f0265f7551fabdc927fe5615cd5499a0cd6f0b8fd251bd807906de4174619b2315df3c51161e7d3a5a9018f87b5d65293753055f65e52c65e99b01b89b04ad613469d1a531fa02078106b4062f8d91ce21d63dfd002c8c4413b0c20540def307e5c3496c1fd890b50d10e8ccb5c0ce7f3c96aead7e3823 6b2950a5b7a7759dcbae61cb141c975524a524019f48b318de9ef53c318c6c4e27881ee7716e20775928c1566e1b56ffafe19385ae98735aad93ee9a4321909ae4956981579cf13d717b21e04fc6a981e30d7a45f18cedf227df86aef69a3a7ad492b05938c9c60b9ef419569e899da62d9035106ea0fea09317830da5af3d cd2a5e797f4ee92e1d6805a42f7890c995fc2bf9b9de33fa08d38d42bc4ec60192c05cb7ee251be2e06ca3db9ef9530f002a6b265fc743cef548eef8059d6e41261e5842133ddc039ef59629a55cb974b9cff274ec1a55704bcdbaa99aace05cfc58567607f5ba9255184079ac409763a9deff5913040ab4103ba1b4251400 6d41cbbf01b78f9d724893c7e98307a41847cb9d3cadc8d111e9c7fd57975863ab3622d525ca297408e38bc48cf951c80aa9d63f9e06b4fa4fc58cff857d7e5f4e9e628e30b25f3baed6f7fdfd0b983c6c7623699934a7804ee716254020afe93d48dec5a227b2e794041ac21f503d4d1a8581e8322918748bc728db1e97fd 5e457667b7a380391bd3dd0b718fc8eb5d883e7f3836017fe74a493a0d3bbbbd6fda8e9657f77796c61f61d9b856f0ef2ce89bfdc61919d69d37f4461e05d85ffe670e8791855e1771afb49a880135c7216fd8aef5a561f0b98942b59f4dc42cd7f650effae8afb30a17ade96d282221faf67dac59ff8b402b990cd71e57f3 637b6299b0f0a99946a5e4b36e062dc6e0f306a24d81af801814e68e4812871af085b12363b4e844eb3654a0ad32b107cf99f92d8f8de656c60adae684e53dcf7fef52b532f4167a990d2a3364a95e7f7d0e38100d06e02392ff8d9f180673a8be2d0b6cfd9bc1c47524579d63f6f06fa01b68648f98e0a9a200c51aeaa60c a496a1c3137ac9a44090434c690e7a973ad8de9d439ce7e00699eff7730206c5556bbb30cd2087bf423a37f9ffddb53f81592d8cdedef06390a55255e12f8194e2afa6f51ab2bc595799cacce3149d5b8608f01cedec0b0cd6c74e703397507496ed4cdeecc76d0bc74b698d1be363f6d9e199ccd8fe9cf5bb68e648d40419 9620aa88bbe3b6667f5fa45e11c2f5ce2bf9b86b57c7f246acc4d78c52f2b4496c5fdadb0e4b73f2f4e9141aa416e3f7cdcfa17cd809c0935a6eb5379641978855efa1ac452a45ee7b9cd27992c66bffb970d33ea2a4e65a81daff6cdaa0237b334326144171bde6c8e12f348dc1f59fb30bb82d081bbd2d36efb44000f909 e67cd2d1ce2bf499da6b8391914d88179d3cb08f44ce3215441c50feeb26b1533931b1c86000db4d34bfeeaaec6e7c36e24fbc61c789e1b07210967951cc51de4005cbaf2b30135a5316be4f1af952018765c1b015038e94825478abe64e479b55e13f40b507069cda9d06eb04cbdac1dd27707adf8310d395b0549ad4eb42 a29855a4ffb796b64a940db6ce4b8f4d560e00d5ef43bd6d4a43414ad30a68252347d6c445faaae70c60e225ad937e401c181500b14f4a641929f2930b3cb13c8c755f64e4aa9e937c7c547302d857ea5f1e3749220c6da931598dc8971e392b0a7406b5d174b1ac4cb74bbd1e2415eb1cc72b6adee85e970b17c3f3c707fb 428445f5e6f7b09dbe3e40bb47e3d9c5f5a2de646b7d01d73e0bcf490ce0f59f5222209453472e7d1ba46302be823e217910d46d8bbd87e4f566fea0f2fe733908301e014a54d1ca7b59261cb23b29a3580f3a3b3c2cca988a75b2cedb1a884f770b7808aaab610b6dbd1c0193c16df20d041befea2ab4d7b3011fa82edc6a d4ac63ada457d40de197de5459fb4099748e9ab3a35c8f81a5aaa749be783c1812a317f64c565ca0186f759b234f7f3cf0aa2eaa480aeadea979a0a0adb3eac0f084b27bf65255e7e839b7e6b57bec728c9d21abc144feb2e3e4bd6dd116629d07fc18d57609582bf7834e3d700625ff808a63a99cd52884f434ae138b81ca 638517c43134c4fcd6b990f00de1feb4ad24827b27abbc6616564eb5b7b1e695592e67ffe53adee116e4b6598331491d57e985e843b3b6b113570b6bfec6af7dd0a958318ad72dc63a0d9d6ea1e6702264d8273f4d3a1071c43fc58b5905ff4db1a2023fad6f4a222db6f10910863af109b707022f96e1b78449a2f46cb26e 423a54cb805686eaa483cc48e1227d9ccdaea355df599b4372956b82a67cf0b9576a0adaf921db52ae57276fec54f9fd2edb25528f4472bf6c700e4038729f80ff7630c7650a898f6b7a448e7ef38c644f942104ff9e13040de3ad6216311eaaabb5ed84f42b8d4dc3fae8a470a1b2656239d510fcff96edd202e4498d94de 10b5d7f5fc8eefbede2e736dcba84ab291005506c706e39d0b75d66651fc2451041ea3c64c4e94039f6a1683ee0d67341c327a1ff88c31340200e3e03010889438ed31cbbc69509570e55c72b84ad41cc49160ac523e821a5d3045598fcf2e3fcea7d0898c27f5f358973b1cdd53ee77f00efeb7b84ef312df3c140dd804e4 645a4ef2ddea29d13e49fcf0ee7a9617f71b034a809475d3d0792af97ef99e58cefad2a5655b9a3ba60c7d7d80508885e80f5f7121ca82f6d7f2f0d98ff1726b3ed671a98762d630f621ca48de7ec601512285cc61cf0b5d1ac1b642d749cbac7d1aaf2928f4fa57c2d095e3b1fb1e4d01866e5f1329116d1bdb3977ae4693 5980b5817afd76531112442d3828469081f38e23bb96be6b173a2a41b445257b1683fd56ac4591822a11c4ba1fffd2d99916801d93958310ef0de2544995b10da3ab82ee2754646ab23c4d230e8ee875d1680556b91fbb4b100bf6d05e06836ca84a7982d4a962dad722fb6ef05019d1f1e5fbb197964338522967669784aa 118164e04cb7e823ec08843be040f007655eabf6510e3c75089bf4bcfb1dfe5a2fad3ef14f435a10df3fe3b697663f7ff2fc6110ef20f6f06889665eb67c376fb29d5b0a9b24ca9fbb9257a03b959b1e7032abd562bb5dad79564531cfe562028b179aa95a815dc15a8497a0ee80ef7808d11597e2599e88fb870ebce549d0 9add22921b8c0990c4c04f72311bf51ceba61c0674d71ccfcd8b782f92eb61ec0af3a82be103bab31acb8393248be431e93daca6ca6c8f5abd3181e7f22ad7bb603fe521d6a1cdf5f847326e50c3c3d40b0c96dd15005b4078ba5d984ce500b3d731581be895e047c379b8f4ea10f7eb61c46c385ea0ddc851f2a912b72b19 d318b76dcec04893709febca6f4a0e709f591052955fbdd02c49e00ed2a01b96c978227f5dd07cf09438ea40f9716e5200e3f1acf64403b16293c4c23ad8bf498071e3fa6d31f04a04381040f69850d660a751ecef31f20cae79616f4674004f33f9386a6d0841bbee8a0af8b8ab376af6ab2ee705a5973b8e7ada5d47bb6a 3cf6b1104e82c60849863e2e847e2e56adc4bf1c872707332cd9d2d562c97bb792752f53461edcc6a4fadb464b06659305d9ff0620888d60609b74c43dde4d21dd19686a6b3cc92b85a063ce6140ceeb9ddfbf1ed5b88b1dc7e08420a98782e444ac7bc85a08fbc8ecc96d5192b6d14dcd0962ca88fb6e7c1d400a1284370b f9082b666de1349ccf1745e4ea793d6bbc39503ee1680b9775c51fe83afcae3c3a4cb7f862b29a4d8cb0b2ffeb6f0c672237eb6eab31e1394d5d8b191bd62217cc2b761e6f6100e5745542e9b2e0796a971541433418f39394390c644d9169c508c454b681eceb68040504920948614fafde8485980b4aad9b37dd84140418 1d1c2a8fb611e611148d18aded8bf62dbea02212cca62961ca2f71d6118129fa7ea6ffc0882aa0dd10273e2e6985e5096f8219e8c204ff1c6b440dd9b64eeffe6982a640454beda3e6087c249308744651aa65dfd07b24f412277fdbc8db267ccbb238fae0290c313d958ea98be1c2c23b226445ac6bbbc31c581d882119ec 5591852239fe03769ca1bc989c421a116f154b6c2cbb8a8baea95a30de70fa1a17e2c1a18221e9860417b9302f17fbd945e4370b125fc9f02af79573e5aff62a564a7ec733e44f6def5fe13e2533c1c8d0e9f12097b0421d3ffae7159950453089259ead88c50f8ff7602521de5a1a38186779bf127ccf7bc7c5a684489ad1 5830cd14914d03fa99e3ecd4cc6bf7e608de4fd35d2e50d2ef40d9d1404d78524bc2a62ba35c746e13a50afef0e52f7828431d56d6dc125bd87d1ba3a4503381236ed360a9f862a5fef5480c85506db099073e1e2bc7ad9695638051efe8e5c78a93348fa4b8e8f5220fb5c636161a8383f51b70745caf1d6c965095eb7b13 c7699d4082089e4b44ef9dc3a22c191f802553c35dae51c4c63032ae0230850fe5fd33ad68e56197001bcf39d4f235ee27db989bdfdf6536b590f9b11395a8524c11b2b4c7660bea430fd5ae566cbbcf0a3314286aefcbb54b835488e488512c2343aaae26e160cd84b4748810727ffa3d7cab9e1c7415b69d2968870b7ac1 19e2983db24b20284af50b5484ae7e6dba2f1a30705b5d629c2e3bb532f8b93fc764a3e84d54bfd4f8aa1ee1882fc655643ff7aa73f347ca9377a0a6f6d88b3a5e9c86bcffe108342dceb6ace0c76297fbf7cd474ffe31c5166829301d65b4761180c8af07db8bc83fa8db6e3ed3149361c218ccbc38fd8422f37733e8bf62 09c783d62c8c2b6a5435f1138fdca30df04eb7d72e9626e431a89c88094cd093c75b6abe18d4e71c5e718464ac49eb92db3d8d3de3d496cb854438138bd96f26a16ae05e7b6e54398f62dbab283e981872f4edd8ba33ceb60d9e57865c1ec8b593d6b5336b97992227314241e7fcdd81e34fc2b433509d1b18e81a71abcaf8 0bc5e4b017265cd82c3acbca4340460160e66f8a1c319347440a6a060697fbad16486d07620f5e009e92c1172c6314dcbc17454b05b32ab392c324b99a946b6f542824fed49d95ddd62772454b881ed3de66d8db723e55099f2ae32bd22756d06b3c6c9d3e2736259e187ba56a884f2084e1c3cf1212450eabb935799d3fcc 5e7ce4f84b880c76a8c401963b80d66bd0e436c0c3f5a36fbefdfe50bc200534f9abb7c29adec48ee54ff1d9ed7bfa0cfc40d5be3ad70741380ed4d77c4d3beee40c27d0912cb91d0b4f4b46ced92c5e53a4e2cedb48ed7f9940084388efd357e7700499c811d4b99a384229d524bda0db5f31a2da390b16175ec3c7239835 b319c51f81dc4308eb022b99513d18a1d66bf0de810dbd8c31e9886f1999db821558198a477ed4f76c980d0d95cbc96b0629a3ed38b9583593d06b08a1e7fcefcd79379bef54bde4e9e8df6adfa2bfa1d5ed54e7543cd5e58ad0540359bd67ff21a517cecd8655177ff0ea09c4cbbb5ed408b382feee6187f3c33fa06d994f 1595c627d8347b0004ae028c7cc9e127cb122e83cb3ca6ae22288c7256a8e77a72ced6b03c4ffb8f292d5925f405f64ede2472dd96142e208eb1f773c05d2d254bb3681321d9962493a1fdda6536e402c6295b274c05af99ab0ba663d0360f96280ea6ef0fba83e8f69d253e8391c0d34163d278bd41627f1c847b24794239 bd4a9223aceaa12b0f3fb46049df74bce9d540342242e98bfd4565a39207b1374f1a277e6b824f1b307c6635618d623bef5dd091d1460c97eb8e4664850268583c235acffff28a3b779bbe36e07725ab551bba51e32b7a2758385c36fc86b6c4a147858f5cd69d364ee8f4cb158bb6dae04c59948c2c37bf5b6cffb842fa65 0f3b9d28b77953c91bb29297e44f7fcb71febe4e0fe7f7df23cb92ab9bf861a6b04423a018d38c2da603ebc27a378fc6c8d6184acd6ee7bd0ba1a1f7a8c889cd3f0892349ec04827b43971cb4232cd64d23fd2c0e53a0c1e74f441e587912f7a65cf3ddfffe7ce7853674f00ca3bae2431d77515ea657af3ff600e8f7fa845 ff3eed6c0bff25384c4385689c662e70b65693f0959a837a5c80866f5ff7adbff14dcee31b9475c16938700138552030cd0b02ba33fc850ae3d7e49c3f16c2d8b11e1ab9387fe8c52e636e69bc861c17b252e3399e40e3f0c5ab055fd3556ff066868f372d2c31532b599604358a22a35a870fbb6501a6e7c359d0181419c5 6123c60686f1b78164a54b8c680265f5b7bcff2282d2e4b7d54fa9c6bef82fba60e88e28e09ea231873d20375411b866f39017584c3d3ec84c9413da030b7a66367a71b8ea1d79de5d091ab9db127c8b5929d021683ab4d95a05ac88f8b0a508379d70dad6beaed8ad016d6956dff90a1413e4bcd42a55d76658d6a3336827 e04157405a25d247cab32e19ae93e54483043392615f6a0cf0d8054c2bf8049d6559e04b324a926751951542722a68ee11de942ea17e1549946b0d0d13697083595f6499a295ca76b8fd3c26873ba1082be163a21d754e0de5825caa71246bf3fcf7b0f056bf33a73964c794c3c3f0178fe18536cc51ff0aa7d6bafac4ed6c 8e520d4f7ed96d558008f82f88e972b1f7d374fc9db6d41d5b4c7927e639e30811c979d68527294f858808e9c7b520ccefe03a29a147155450828a39aa512755fd59cf62f312ddab44e91f210905d41714b5b36a98a23f73e6d0ec32e1ebd358bda6f46efeb53f3fef7fd096284c5fbd1315915b0395cc1d28bf69cc8df7a2 079393cf1761d9b85b0ed46efd63ea7da7b5cb8afee9180682f3f5740e117dfedd94c61d99c40314eb3f3efcbc9eef584c46b2d66a340c4045c42de0885637114c7a28d17d00a4b15cd47a9636a4fd777fd0cd3203d3dcdcb3ac6d5ca56edd39049672d0591390c2470e28d9b8a946ebadd65f47f9b077e99c8816c9f20976 abe19e50889400f0c0e4d089e8b05c97596ec4747a6c302d12f30c7d047277abc4f5b4e9efcc44c7d17ba83e1c4f92aea889494adc0272681e1a3ddec8634a51a09f0ed7349d1ec1c10dc4c7600d3263fe1205c8724b9bfaed0fff85e6f4beed3e93f860b70a13094c8acf49dad5bbb86a433fda139f4e20b1d72f922c5e29 de19f13b5180a0b7edd6775baef8e1510cdfca5f3cacd31dfbf50e9e41abd9c90cf60571eda75350afeabe51a72cacde8b77723c5f6bb88f6a0d94d319f03c625263c94ab494e373d9ac1afb667b545eb03f9dc1b868d5f55cfc559ae7c31e2f10800506d0b664b28a624b126b9773a9b8d629330ed3a046ca94ec1b889ed3 d26cd6dfbfbd94ccd2a91a1f37efb61f5f06ddbc1c021c87297f391a2d8720e08a104b16d398c91f4ee2083a08a378b9c5d0bf1f447fa7d5c36aae44439f91fbb3414b06d22e6cf1c96fbecb5fd3efd23efb4bc8e356103123ca144986e4ca0f59a99e2c477075440ae0de9eea5f836fba6831117bd787341b86fa991185c9 a47281a277c8b04df60439897f67b7f42ab08aa7e8ee931e52dc165fb9b20c1de9fbff7100e30ebe292750a3a84681bab07f03fb5ac13afc1659f15e488c796c715d85aa36a5bacf473a9c02957091c3b01cf45ad5af307a551ae5d34caf531af09a7959f42e8151fd791d93d229243f735b47ae6a0d2bd3a32e979e0d77e6 953967318216bfa573bf0290e65835028967a394e271063d84a389b56ad68a638649d2e6399e5f7a8a0afd3b4502ab36fbf3dfa5ec5e12bcb35d193cdab02c3a5be1333adb3f68737822670ba7d3e99188723111660303038c1defbec34c35ba5dc2d39f637b40a823f19acb1f4cd3531ef90898fa6b7c95148437c97fb3fc 1014edec32ae56f264bdb4a47385756a794d017f5f6a9721f91c7f07bc307b09ae3b7599f443eb82135428485a126ce82d8e814c148cfdc6175e19c92f18864857525b5c392b1f5135ed33d6c0bc3d3a08f466a3f3372a99699804d0a9f9f2cee6287c0257229a2a47339a0be3826cc7a9719762a12669c535b98ab76da8d8 4ffc909c0def3be50d70de61af275f11f53a34e8e68d2eda360e395171225aa26f59d22273be17ec5304a48e3786800c21e4fb8c7dd7ad6338442e146241dfab2da393e78ff830c85732906b9a43df31839e3112f3d07f41c6587f07ae11928f0e10a8b8423a71549a09bf31e65867ade7274b92d7df34c0eeba9dce565d28 f2ece0d58ccd777b45133f16b24f17334117d2d76f1e29a4c28c10423d940c01bd6afb4beb37d66311b785808cefb236bddeb7ac290a23fe13a12430e27bde2895963763bc689b1e7f66441f20b64f23a30d288e35f73bf515a99c1bf2cfc402c4249c468a337db21a39ffd13f94ca3b8a77feec434d23cce5d7287e8dc9b6 5eda1fdd705bc12e21efe88a93af0b8429a8bc20dc4afba8bf21ff75e9e6150cc0964a38bf07918fd13781256875d37e7b62a946ba1c83610319edc2725589ff986de5bb6044b325f43311af056e19cb6e42c3d353f401252cb4c6e8947d1b06921bb744b34079dc15fb4795d3706008629f752a0995f2a51957455351a3f3 d658c6c28cc09cff2b10ba498eef1ab18fcaa42b33dbcc3219acadf0f77e7a60dcef1b81103664079b74eb268772b65f5fb06a51ff7821445afe99a713776c698a9e41126b43e3e09edcc3946d4370acea0685605e01153cccb97060a84dcb4654810bfab85a1a58e3e172d6c5db42fa47502cdda77aea0098fb3894c7b4be 4c6fc4edda4d3b48c53f106616a9f966e5d9d5fdd4d3207aa982be50cb55dd2a3cfa94db55a95fa3ce853f4c03a60b4a6ed849b9e99d02dc9bee016ace463bc48f647aa43d17eaf37eab30776c9be089db0f48e6f67bdd86e787d7004c1c1a55b943bbedd841f34701d977d7229cafd3fcb2dbd874d275de66f74dce69a188 0d438436836ff12e3e6f3fa374ccd9193cf87b1ebd36c7bd9e5a2a7a0407f2a66bce1fd3f88bcc7eaf43bf74e832aaf03d2317b256a8c55a913286ca17147ca17ff54b547d36f8f782981db4a37cf7e837489709aa4894549664cec9455e0c80a47959c611256619dc12eb3afa6697accc30a6a9cea866db86e04fb0f4cfd3 1998990d66348736b780bff28825b2c4791d432feff4a424e231fa2d7803460ae16827fab8c0655b0fabb3e6af5534d617cb7c3aa831b5ca42f3d8a116c1546cfbe5a432f09340865a2ebe7e7395136689cca98264a8e7b52f43c9c75410758d3ab9d596f1d82ab9d41d2e98d1dd97b85263474314740ff8273e5e0f662a02 b275ed1a74c160b2dcf5664f892cfbaea308f50be93e46be711644fd5d7efaadd8206ca3a4d19bf1fed84309662f88bf310bb34c9bda5dabca7d0495aad060093f08ffa810db94836a21e6255dbbbc39671abd878fb5add80c1202ec95c1e4f1ac91ec0f03e1e90168d2715af3f992b8afa9c66ab9cd5f9127fc50c815cf79 4761414e6f8f319ecf9615bd108f8842e9676f8ec4b4e5e55922fe632049f32cccc422a3b76d85dfb2704a8e3a9e8e6cfcd237d2e0e5d37d7faee1ca94421a935896385ab24a479132a41a49e5ec1c2b21dd0b810f070d98da3b6195ce98fdd06828a63df15e981dd9347e7baba830ebb415dace42c1c5f9b8adf060585c71 50e83c5d83f03669a5e1186bb8c39aa1982e456279a70fd44f93558ca7c26c64dfe0678765ada8db36bbee77c1574b387f671c3ae9f644a41c3cfd840dc5860b9859a6fe00da5e9d268407d6b91b2c214c325fe025d6c17bba68989720eb6bb48de0416365e3be5bf15dcd452c175809a30f92f49e2eca95086a76a141c411 aaf2e88d0ab209aecae24d3d018df75ae87cd1334df46ed0c2293b1884348e6134e0fe0613331d9c84498736813888b1c4a1fdc02ff0d0c10e9dd5d119a04a9a993ec845772cb5ab449aab262efcb6ce37700db9136233466e5ad9a5e8742918f7fa2202c9066cd5c52817f63e2c133bf0723616b63713f2d2ddbcdc2334c6 1b17376073c36e75b69553b05d6f7a1ac73193c536160ca665d690411ba1236edee6342b8e6799b957f8b958e4a7e5d2d03c64842d6e594de767dd7d4a22585cde954ccadd79e829a8521bb41710b6ceb5065edb0adfc099863236a2e34700c4eac0c2620c1db815c814ce20ca6ab422f5c1e959cde1fdbc4e0a943d52c9d1 e3e6df53b24a5352b4b5da61553ed0e486f98e4641f9314e368a0fc33b2c6791fb1b17da7c47aaeeeb6e6ae41c304eca860a1434b22a90a6e4240db67bb69181f6549fa53a6b01201edda18c3b1a6024f705325fb9b4713b29ebbc712ba83e6837e719bff8ca649537ac8734d1348104660d8fbf5451f1e183e8105955f1a6 f1da5c8a47c6104c245260d617ae578c646a323096d1ac8f45f2a5f0eb68687038ffb492bf46712297a6ea3c422f6054d4cd80356a5b130b9ea53f7dff3b1e86cb2af6e9b354ae744e28f6015c01a0ac7f65692079387af2aef55a364078dcc6aff821ccde68416d7712a639d43259fc6ad747dd3c212626fb89f9989bc795 ae80571325375fff6cf916c69ba656c54b9d41cc5d9b1ee6f0b6dea2d8c00f9ecb75afcfd440833ccf4f9e35e9de774969af81a13264b413bc15148a4b955865c49771b9ebe6102816c136dfa91317e69b60e772b1adeebea15ef2f486163f1cc7b94827ed9930b2900d57564669e8e5191612dad2b4eae34b6c3afdb02b1b d609eb21e05e8379fa26dae4456148664844327c4d7efe99e4a9fe775c3455f2531c96e70150e2a5767b5dd01850d201c4262f5df212dfc10c3881f509b38533f9eca0f8002e5367adfc35538619760bbc557baf640455d4d6fcca4934d390a4fade569b09a39952326c8ef62d6333f66ca496966024ac805b52c66aecb09e db11240c3b9b1a91b0eb89e71b71375c69d4603a62ef79ecac75e60b16de26f66bbd6eed1ddaf766131f3238d83569dbde77d526be735a280a424157971a743a79198fb44436a1bc5975d136ac15ed2f60b3dea57b05791ae25e643cdecf2fc62af35974c573309949c5745195b7e2e67ba81aa2fbb46cc36b761cdbd766ef b8f6a6200e2d336cac52d2b30f96d09118a06b1119b4782be39bf95f1b8bce462b88ea2917be4c7372236874c5edf1c15b453715f066f0a5933dc74711a5ec406ba38f8c8cdd1cb60187f3e33e57d1661897c1e5890ad9b496051fdc0f3c64cf7108b44a43c7cb5bc6792c2889437d0f1d8b3a7955c5b6bf709a7fa0235669 267c6ff05bb99bbca98029970ee69e99ef64cac31d66944ff22594cf4bdd778861e8afde3a757ab9f799f0f42e2ea55c74d92cd5507e4e5a49c624f5f0f6cdd79fda70af7e7c24f6f673e7df8b88702f5481f31267f6ccd54e2744d29a8920b59343355476867e3c57ae5c3a2a8e7558ee3be01e300363bf2d2fbb12d68d54 73b2718c436d23a09f0420bd61d0a0ba5206ab91832a0c307a7eeaf1f13bb78bd6b15b62e6da1a93e160dd2252cdd70b6d7d42e8994625f7ada31918ebb7433e480f88320dab83876a64039209203d93320b03da8da5843888d86f7e4982cb73067a5f2ae2499d5ba278faeb28e2a60fdaee428bbbcbd0d2b3647a32a78967 486e4ac39e4552c68ec5c8ddf78ff58a6b16f03c24bd6da4a155ec0f9568ac9b85fd0b14d63e2d1f141b299ee2d73dccdcfc8761821309a0ffbe49001a4dd09fe275b8bdd826266c0a2b3d9d687b4526b76c18961581bb89df3548f1cced34848c0b8e990ee7bac79cdde4e4dfc9621e46e70c112c4079043d290d9c08943d 7a05d8378022dfac5856fa36593438e887f2777fa91c6096304d8cd6cc14d38300a2e7efe63e801b8240c60fb599a2f8ed36a090f5339965fd1f602314025398ea549acbfd2d0dc013027e00fd0f9257c96473cb36ed2cef5a4476803ae50875269edc245b8a7bb138707d068d4721278ac89a3e26b226f3db2b7e0d203058 7cac5f7d460f63a71d586dab0f87e279251419f93f4ba97343ab3852054a8ebf3d92dbb0b0b051b5d758bf3c3e330663edaf390bfc0dc8be7d6b9f6cc2e9e25a5da38adbdca2a1780eecf48733d1e1fb49bfc746fe9ffbf1c2e69f4d7e26296f6bcc6c9db726ee29b0d24e3d5e01c9ceadbc370c8092588e525295a110cbc5 b40111c8aee7efe855947f83c6ea3196ddcd2b99c9209e52f83786fdca847a5b5fab76a6c9746d04555d9435b28dbab1396fb06a3ca5de76067e0fabcb410e2e84db713d4259a21358bd5f8963ac0941fa5c1ae5f5ad090af3cf0f17e8e06b483fe3b63149519f59b2d50c9c305407e0b4e55fa4fadc967ee7eebd3c38d2a7 cbc34c566eae21777e825afe698ef3085bcf69bc3db2c9680a65e343d04d891296e8e1d2afd44293199c55bc63655514af44fde2a3017f43ca6ff61331c1ca83d776fdd08a55d8d05741549cc87b7ff3e6b87c2ce19a8ee8abea1a67d98b04662b36c49b3d1e7c1c040117d087cdeee2c25f62d65ac8c57349f48fe7a08e21 9f2c790aad9e4b767d6822fb50ac1ffae69a3844a77eda3eab87f8f81b3b21cb9d889703e142f390e041afaffa6d9ae97c59ea696fd2c9650f282fd5f0e6bf6435f076cf452aa67e5c2e3b0ac0cb4ae92c2a2bd44c86442646386139d16f0ca1205971c029371b5b3439824c356e863edddcf18b0b6c3fb2c1eafc1470d895 06cfac69278d77cb0387d430f525a87bd698ea96b967b029e62065557ec3e0f76b3efb6319ecf33f4d6f967a09a0bdf2a11478539b3e450cb53d58899d76a8315bb19a53c69af37ea4212cd092c6eac21142e3574380df2c27f7601c94c6d32624d60995e5c8004d3d24da9a36750cd078379096bed0ec55d2d91c50390bc4 f8ed990efe82ce026e5084760cb5396c4dde5d25b50187f2050c184a55ac010a75667bd361e3bc9453289b90d77f0fc48b328ade44af26a79aa5fd242cb2ccb095e2aa554028f60327047775d7f2de1e8eaf2b455f33dc8d66ab96697db6065dbc11fe24a0ff0ecd1d968dd3eb753c1068ba4f91747f4c53c66ebbf35a13e3 139ce0f6eba5cf8bd16dd266ac976651f965de2708f82a17ebdf82658ac57e3cfa9b6ca04b06d7e5a3d3483d930c7c7172c8ae1458cd2c324bfbde742799e0457f3f10f005394baa97efe60c688fb6d8bd24fb462b29422f27eb815930598e3a1e491f8db67dc125f113df83d8cf07cc6cc5e30be937523d6f07d98f0b709d 3ebe97ff8000eb7316725034caf648ba92e390a6b831bd59ae8e49726762801f3863a526f729d144fa99fb93211bc1930b8532867706c5ca0f9857a9052d0519870c956ee57bae5ef1891794c6643f05177c6ebb2cf2e8d0ba203144d6771e0d7fbf20911c04348b3a92fb2afe0756a4ed2569e1ccc147b0fffcbbc1922869 25c7b71becf788086914edee5383e7baef74c5eaab1faaedf41b5d51f34b7ca9aed2435f0b007b6035e6b75eaa8d800047edcd08c00f2479e6cda0a8c484d68c18c0b98d0bea519848de347f6cfecc0893d1ba4cecbc271fae1dd91593108994a2ff6b2b97a4789a74178b668a6557e0fd68f3cfeaaf086a7243173a4b90b2 27a8ded16db61013ab37b20f0fa00eda27f0fafe431aa01657103bdbff1847388a4da88e8326eaa79bbf447703d40f2ad30385f26c4c340d1f186032545db93ffc8a24d544cfbfd2dbb85e05ce1dfd99b78aaed9fcb7c762e7b2cd5c017ebad4fe0ff4393433bca499a932c467110bf3c393c06568c29f56ec634f702fd3a5 a7e938f9605e9ebd9cfda6358b26127ba15ab501153193040093ff4f9c92e430b67c9ee442fe74cf2112929bed5a727d28e4d59f7b842694a5fe679d6caaee651986892242f5fdff3d58d59a8f9740bd6577e4c20d503d5e30b7f1beed6b89f3ea32053e25ec2816eb35af725204852cb1bb0d59edf7e0797246f1bc6c0ad6 ebc71ce0e0d19a27fe16b0e16a75954949dd328204732eee295220c0e712e9f0454cd105f169b1e3b1bc10c1bece935dac0fcd98afb6a8d1c87c3a8464b29e7108b64f8059228f2f10dd206dc51d524a5fccf2356e5675347cd8c8cb2aa415becdbb5a22909d14c99f6e6489ecaf049c210abd60b83f1151332b418b57ed46 a4a4cf822172dbff7df1eb097f0ad59efb9fb8480af397099efce740277d8198428be21fce503324d8b1a6ad3ef5043cf9ac34a00a40753453b03816869112fb4295cbfbc758a47666133fdcafdd96f3fb5c2daa31f4eba4215d317c2b375f924b7390bd68c156dbf54ce83493f50ee8aa277ba6ed02880d0ebbb07815b96e e8302e75226b93920e52ab6f242b72810b241c5048082cfce7844c5864649b05c6c2402122b199061dbee27e1dd36563e719d7d3897c8fb89ecbd0fe2ffe4e8d0a1bccc2171b7eb30b19921faf6bf873bf239c98cbe50273f71fcffd9ea3d38b1b960d072f0d8f005fd00accfb45a697bce1cd0d903ee16b5d90c9557e8019 cc33a5478ea54f59869e42f5272932c15e91d38aad908d80b5f3aa1f6411c15c4928f32015eab85b9e0f453241f5e85ab468986d1d529f49f194a9ee3d595f27984cc7d7ec3c2c304581e90aed20f4f099fa972fef65f75dca92f90014045704f728ffab80943a5539a2a8dbbe41e8b129125eb81f0064fce1ebd0e37a33b6 29b111974caf65d12c96b255b63af0767fe939d564ca5e09508903af675696c683f4414c49ea4634aae487937a8b77c0c3610cb810ccadeff9206a2e74ddfe4466c172787ad69bf4ea353147723ab9dfe2fe458e6081c5d442945357b3887a1d61da48ba1db009ca0f98c9b7043822322a482c5cbcd627b8fc36720796a1ca 15395876f9009e2d43df877f9905c0efa126b4926e8d3bdcf0a34e930c1b4bb051da7797fd627b234043d64b3c5741e5a4a396a405f1f0db51c9719be746ed76f95dd921f4e166b5a6b7a98685535f4bab5365882cd54c2a7ed3d6e8f0d8328dde26e6cd6affe97eac17b3f6fdca245cce3dc2571a7f79eb889c339b8bc536 c7d676abd92998d84f6524baca177ba6ee9768aeb5c29536f61281fde6d8c1f381cdb291cd950f13fc59b5a5ac5f21b93e6dcc70f6e42102e2d304aa0b3145dbdb3b061453c6a07ff1333a4b1c997a6f77699393c0784f6340e4b80d0185de76cf5c7fb5a57d9e3d412a0fcad6c7e172c0a88c3acf619478c46c7510b537d1 114c71393ff4f3ac306cdd60a3c59985a658fd40eb12b409b3d9c02dfcc7fb4a820fe7129ad82fa8e9e3e3d2972bae9ca1ee7fa09f6cd4b5dc16d99a12f3e37dfc51338af1020e64720b8692c648ed66bd8c2c97a476b5ad74f6da942c95c662d5666361c1bcbb9952052970253a8ca6586856647c8779fb68be40aa54cce1 1173e5e11b1cb2d788bba809b3fe3c9254717140af47f1c70d06f65a4e410836a85238f8f296aa5a22223151721e65ecbf1b3bbbde39c716bf80936ca80e0967e4ffc8cef3bd6bfc879537ed5fbbd23c37977693d8ff383f36ed5a7395c79bf831784d63f18f08aad9933c5da9f9b20367bce078b2f70ddc949fa90df4a702 01cf4e540286131b53befec008f63442e9a36f18f9ee8fc936f47c1fc0af66dbe306c3c9294f18cfb1ac87489808c8917ccd322ce78862bcb1a9e9d53054740b3390de5448e07189f195989ace1d4439b978d831ac1bddca934cb6b39a2b7d501ea51b05a8bf01512669bc0b8f9f2cb0fbc71058894a1dd054fc2a40e60e2b 7eb9e2ac6bd906b303694a58b9c7b85598ab41d3a2a3bdd92e5f1f006858f96226986afa48c75fce2e31049fdbf66fc94eca52e7f67153c8746318469b3b523d53404b48353458fadd743aa78752e149aca3bbc23e34aecb1061d3968d066896426d4ce3440de3b0dd8e2c07fe7bd07a50586f596a1fa5f7d7b796ec6b6ad9 2321c18820763719d4fa56bbd35f5eaf31bdab3f18441984d4bdd039dbe59474167935435e50baeb2aaa44c168f0f3872d4bcc38afc99a87dd7f2dd58ff7be453b7dfa318983cb420bf235b590439b9f5f52c2c2c84e47b11a0431a014c2f159ed770e9772fc2a307feb95f4636ba0de66958ddcd2b134f540b8578e76d73f 45b9f24b38113ecf15d9cbf0458c90c222609573d2a1a00c38eab5c62a595e0a05a4412c384e6390e926ee16aafa80ee80e03f293eeb6f18866482a2407c3c5ebf7fb7a992d76177efd297ff8bb89fff41bc1c9b064e030a45749b1811795877985162ce316b8a9b320a94d935af83b2dec1a52bd64239b2f9b7cfb8258083 97c1945d3c95390bec313bbe406f6b46cf74a5a384baecfa2b12cec10ae4af8da26c77faf0d9e6ae4de442c4a3ed36751111fd9dca5f38b95c8cb942b7ab1cbdc68d03cd6727f8337b918b57633a8c3c9fdbb96dd6cb3aec86a4cb3e6ffdfab52b03ceaab6a366e486a85e2c96610a960885900989b0647d4f3aa944e8bd0d 69d63daa8a409375d8f752d4094e7ee1d02c2b2422fa7d6911b0ab46b02618f8f8c21e0e6bf6a2d414f4a25d5e23e8aea77eafa69e246436f3c9aafc6b5b341f3f6af922e5deadf8a9f45a3dd6830bdb2eecc299c1ff58582d6fc1693a2517d0a0f204adf2c0dea6d1fab1453ab212971d6696f11261b70082c488b2dc7057 e6f313581b5cad0bf0985d4256cd30a85d172f26c0b1287844f716bb601f18da7ec50dc4bea5d5b3724f634a087a58d656e2550fa0dc709713448233a787610c57d0e77c70ff6a517c669dd38df90d8d25d661ce53638fc227ddbfbb7bfe14090ccbe886ec20920bff3d59323c9b752802cc8e40e0b61047f6e8befaf682e4 9340b007012b2785d456d621cd0947636efd22189b85c20340432d57e20730bba1ea9e24ffcbcf9d33b0cc8fb719cb0ffd2f6da8c8bf0d5b67f1e07c740dc375c0b11a706d453977757805af5b89c0735110628a8f69c7c12f22d499ff3dc7d333a8355f8db4a94e828452a1e4d145b5daa1b0c3e7de56221c7713848f8592 8adec3a4b3b29d499463b669202adbbe73318f0dbe808e99355d2b6e71d43287b3d8c9838ffcebb923978f638255bbcd70d984b964463413144dc59d7a7fc7519260922744ccd93f8176c16c5972483184277d56c42827ebb55e1c198c5b66ddf90c50d8e9e5a30151cc1b5952f8156e4890f4153538817742f8400d7c5e94 222685e440fa64c8be9bbfcf562b8bf3cd350fa2d00a1f996dd197cf2ada35597bf04c6200c085775ecd391ce34f68d39564a319ef8b02fb4f270b88856cf17997792af773ccbbe429bd472d203c3622c922d19a7f5cc3f02d826b472838c733d8db9f3cc4e3ea22ad36e35d7dbf00e9da71a133c0c60ebed4a99bf49af445 25545fa676cf9415c49e3ad5870cc40f74a7e2bb44e0d1941ccbdd4c4b03ac3163383f624d9f4d3a4cecaad34852afc93a67fdeffe29ac348332f0268fc113f80391cff84e924508a660931df301dfa094dd872504d2aa5b7d98a6e84fd4420a65682a440453ebf878bed8d7bc1555fafac512a77f4791dc2bce8c0ccf06e2 bbf93ff51c7946724b47e66768ab813cb5c4bf38ac126a5a39569374ab485e3c46f8e7c03eba4f1ff1203fe7995e8df4b482bde8e2df88adfea0944634121dcfc44ea247dcd53503cdb57b379129a30d57e499fde8a6315632cc917db23dfe741630db2b9e15a8eb1374be91f698ef7e126f8ffbbd8ca859acb172cd35f7f0 2a08f39f5d39417f8bd8a62443465ef186b8545ec6838eccaa956ed276d62b3bb1ae8a44d5a57e429d1f28c2d100f73f17fb97ed0641a19fe5ad131c6f5f4f05e1a5b3a1eb60ba7fe7921cfda00b7eade836bef345fc1ad896ffbbf16da7c3259fd9161c18dcd5db6c38443b48b3dd71dbbf6265a2d112ddb90efa1b1f497c bd4d4b93aa6c9c6b5badc6340799eb1fcfd04b98e495a01e375ea2e842f47dedb5424aad1e188ba1cc50bca92b816b6f666d5bbcd5791b8544098d45c3d648f03a867f705bb50ace4646c058230234fab94585b101d203e88329e89df0217b1f997b1c5f74600dfa3ed7aaed9a087e35bbdc610760c22df91145deed5d9d6a 8278741094b247998d53550dd1580f220a9d55bbb1311fb0d35f8cd98220865f05f4e514a6c3fa0cfcc17af53385840c8ea9ccc45eeeb0d2228068df772433557f9191115c42617b3d3bf47a99a5838e151cab0fedb3f47b27d65cc50c68b6a3ffacca5ccbe7484eac9f90ac1915a2a2d1fe98f234e5891ec4e7f6df4f97c4 9198eb6765f896ed68a453989f29e7d2d771a46d44d4811c82de954218f6ff434e06a851a1b838a6c13de0c5fafa67483d36dacf752354eaa756c30acce76503607a6385465e2a8c1faadcee4959d3060f3fa5881a6c6d73d8f5742f7e637a0d25e334d4ec53315665430642d79a2f96071e62198351a6184734479e4e14d6 6aa935bf6d27a6453c47f00a37fc83cadec53366d6a13efcbd29c25f85540227bbe2f397f0f0bda2dea965755e2bab0bc35a36ce56ec0d06927c5945c23a416b50491ab5661b3e3308692369d605b954ba056abc22c3008f346310a81511140f1d100ea17bebe853c2aad908d50320fde954595ef9d9893ed7e4fb163ca2e5 d6846d026827b8a9bc37a3a1669d0cb9226e63fff2cae3ee0c571abeb147f4230edbbf41772d35cc0e46b80212f45a23db0c63c172bee06e3eea8603033b3949ade75891f44f5543fc646f7fe3b094063cdee7ff9decff8ca1f16adc818abdaff24a6eb0b8bf41d6b8a5848ecfc923d20610efb6f4c57e08f34fe540b4e642 a852df8c9a863af17f68ed3e47b78a59a52d1e1e048cb82db85dff7e1d32685e9b0b4c5085b66df5016446585af3e7bc87f3131995832367c4403a04eaf2b72c26bd676ebfcb3ff78c67bbc562bf6fe5e71f4df7787a5e6c05777fdcf7125a1e848b338aacd97e388344e09a2b5eb1e99efca830f39bc6d453dc590a85e955 eda1d70cf1294af3c4d948db5a4e3de8324888353d8f8e5fc193abcc3725f6e2206fb522cbbe3940b4ea6ce2a803603503d749b5b2d4dde112940af184b35142b5aee8691ca80eb9d375d6c4849218889ffa04b8fcf9d828c42f4fd4cc98cac27d04b9f5b340c47cd2896989d58ac59a2dfd5f1fe0dfe000cb52219d1da308 109553300546d20c3364b17d5f124601e31d5269123af8a37c3be83ca76d110f6cfebd51f331352233241df94d46cbe6e884ad7724b5da987dc82f6f3366b6d2b51d13f98a0b025c2c28e8aae2acede6c78f379206df705d7ba811ae6b9fc93f8a2c7eae596b7e93db1ef774b8855d1e3b5b9abc8d74ad22e0d3b180158d8d 3fd70e04a426c14b4a0c9c354f08f1a280b641cb16f59800948bd6e2ed89a8d1e0c55231b41729437c57589602e7fddc3ef962f7250357b8d8b1df59cd1639a75d14c51506657fc739502eee276c56b5c9012043d38ac17893de11a32fa2f44ae4404710d0006fa76675360f8ca99980bf88ca306664b79a4b2ec8df968fdd 48c92548317571c2b214de9f18de2a1c87263a4a74d75c5bd3db8cf32c63c4031808d6fbf9739ba38e2ae55b9c01f29aff821208a3bb575d9db63188d7c3aef23aee75190d519cdfc53152e6633e27a2e453152c6bee8b1643c3de1ad820cc37fba98bf5e38ac8d9b6148f97b8be9abf9518adf5fb2075f0ff26e721660784 5a524fedf00dc69e863655f025e9acf77783a80f39ad5f35d00ac0126714251640c3ac6eb3d83bdda164788526e17eb93469fbfa292947ab01ae659d3c6280359277e060b3ea52f14380e2c64ebe9cc2457a818e9e2a75f8d2dfc093aeedd4f371acab7729440100994b541287ce556fdfcba8a22a089529e92d84dccddbad 7cedd550b244bf7a779288d3cc83c5eacf5b4febe68131a8285454bd302348dbc10c6d55e21c6345124bacbe10f2c3f5c87bf783ac97e14aec056f94ae22640b5272dbfc7e047e36f1f6f04e49628eb42250f4fbf59bd2b3e7e0487c947c8a2649cc7ab00742cfbb9311e62113a763e1f097c699171daef1ebf75e3ea01a3e 5519ebf0001e21d1a46be196ccb8b94a8929f9aacec6edcfd179d97250fe4b551b778af01de5c28c23b18a45c6eaf32390533ac5eca73a85903a6dbf878e2399de6b1b9b5966bdc07b11752e37fa66df0b7575ec024e3dd6062e95409f73068c6e2444d5d115b54827104c9c6e00cdc02d8dc158bc10fdfbcf7ebb71d26ef1 05a67ce876f328aeed0c55835ef52a0889ca194f9a811c0cf330bee371795e25d6e900a5d0aee0bd561b0bf7dd46a7a39ca3aa3652435ee937340fae76166b062182a4632c8c2f05107b16f4906de07c1b225f56886f5eae6eec85cfd455dfd5b923d84712faee2d7eb1a44a615559735422d03c95e8c1c4f271ec2f0ad748 0c44ee1d644a4244cc67d91b1c1a2d4a2303cc7ae4d9dde96af3abc8eb690fe2d0115c78676766513e468d49b3217cb32a53b6bd3b4c8f44c174574a505f3fb67b744fb93a5463912ec5eba7e3c0c7940d0ec64ffd70ab5bc9b30fd938b4d54979244abfe918d5f78d61c4f4e98095c9087d39bc8534b627a158f0471a6858 25177cc0188206a64376cf1103683fe1dcd1966055548e4396b097a6826554b46e49d3fdffdc43513c9d6717dcfb030643c27bc6aedbc6efeca6182e59c9f76ddf74c24512d15a199e8e7e471918899c8e2a89a4b3287c6699788da6f7029c820914e96e1caf8aad254ea3b76bfdd4a562c237e4f4345afb0134eaa8f512b4 2cb7d6f1dd801be8e938703131bbbcb7c10ca12fb5d6efd1422bc13abe9070a491cd0b5b599aaba5eead5cba8a43b7680bb067297c1b44da35b9a68b1bc70c58a0e5756e214f87be1419b8aa820c75bb38c9828ddab14205c598b99c79ac5ddfa631d07353e0b6f21a9104e3d1e05154cb2ee65775f9abeb59e026d115150c b11c4469f6239283f7e4cbc06de8cc942b9ea041805c34d36086ee93018864abf68e6b69a66949526d75ab054fc19fcf7527841e12f7b62d92ae56818fc7e1a62837b33b9b350b8db2b599bcd41c3e513aa7751f9c4e4db9e215b50b831f84abb27e8c64112ee952ebaecaf450b29c41bc4e4e107869b66856d6c4ffc7624e 744a34d47a3d13d339a671ddcbcb1742423a1cf2b2d66b0f2bd8c115b54573b9ef705d5d683ef8856b3af26ed035ca9e50e460c8cf4453ab558b5940c6fade3b3bc7eccf5c35057e6cce69e6fd52bcf7d6ee48501213f266a9da4297edf7fa971fd342b4ec0e15bdf25205b746a5f044482a5390ec635b14e8c63d36d64c96 6f29401768f30853ebf878bed8d7bc2568714b7e489fe03429481644e0f94eef0a5372378a60f8c3bc6b684783df4fb0d97f510d1b43ef0f04d03e02e8b2c0413b00b827b319a0e3436a0a3fa061217625d0bbcaaa0f9cfb73395db8fe305b9b6bd1d342bc89841b84fc14e76d31f3bbfba6346be7533420f29a56ed41b2f2 799149d756916fe2f575dabbda2a493ffc07996d9d8978aacf82df84e31ad1d6d5ec0aa2004aa7e5378b1402fea3666e5231517b4620324c25e008fa0c85531e21e4d275a4ebf1f2c589e869f3eb4196c25c47a4c6668c1d7ae5717f7389ab1f7bc4a6c6059058f7ff1f83668d61a48429d3bd77cbe284fd083eb8ff37ceee 42795a08c7e4f959de9de18eef332655d405f8d9e4f41819e10c522283c95e1437b293d92ae6f9092e51982bfb5fb8f64d585a32fb7ae55e44e8facbb2d5fc59a0c35ca6b7c8aa086fd0cc2f307de69832997212f0b812c21b43f69557afdfceebb12727d33b818cba79430ea967e45b92d647b8cfcd369100963ff1d08857 2983d8cb92a91d8ba5444dd746de45fc736d3c5f976a5265af3df003842b793371635ef55f498d97c3db8a1b681616f7df308d2a18e3452b7669b43ca02d08755813c2e94371e82c2a918be917bcaf3babf119429798510d902efd2ac64fb0316f4ec6ed5296d815b980b914b65d472141a60ddce3d80699ec8b8107a296e9 a195be9ab35827f635115159373f916f5fa3fa0f62c4067b5c2389a51283bdc04a805660a857a450b8696885b152835c0ce585c26f96b905e33f623637824ca8dd01b0e8c3feaee10c7e6d46c2993d5a8ea4cfcf0cd97c3e500ae6b6997d33d8a0a96450493c8d2b49461192d472fc15b1ff2752629fd04cba6d23a27062bd 7df42ba7f529957ff25665cbfb3335f61a00e60f8c261c819742396096f91b8ca6b50bd6489174a1551d7be277da24a982a85d2295b756aac2ba7876f183e3f00b4f53f8fd3f0117d44ca3a1a027f51cd44517899a2b4ae471bd09b03b82c9b9b64ef19e1d05887cd52121fbada29c24213336fbb54cc2ac1b624414eb540c e6102bd6dd82b52ce62ea547d62478b7865c2febc4f4783ba8d504705c5eccfe43fee04f49cc6602e3d71045326bdfa44ed2412b242e4115793934072ce6b36fbd12ef46e0ff96142eca6e57f707760059d5cc7b93a78d9b6ec2c91259995ca847c60e02a7698b4df8bb55d8529e1e345aaad22b23521d720cdbac6557b66c e0e3f9a139fc3237531eef771edc04dbd7779575efc7b6d5e569eb438aac79d3cac32a76073c843024988344ad7b9200c78e04a4e1817383cc0eb15eaae8b60992d62caecee9d51a04c90fb5c0e50ea09e836b3d6f92f5016492a8b14450d65e012d5e25701c3a204f72df59ff1b1919665cb744ff9cc14334579b5d2a2a4a d311c739dc0a3b9bbdb8e29e0ceeccfd63b156999734261131a18227aa4d9190f69e7e74cf9dae95596d691dcff8762e7817101eff0a03dfab9da89936d76335054b9b2e54e30730ac67f6b6c8dd47d2db1719e888f85a1979ccdaf5ebd9484b819bbc87dd983e8211813ec26e8f33bb846876b5a0fb09f6a0a96e893b9124 085cde323272271840c235ff6e411027b7b73ec957428397d8e28ef39e740145ec57ffbc41f3f29c36d534ad02187963af2e69944be7f8ac09fcd848481c4e1208e5d50236e32de0c4f2b0e1b2255995e2d1d139c345b2cf99ea50a2498372788985b883ce35f61499b67dc68589b8dd05ce01cfe85fa1eed553028bf47e2f a36efc6da18dc2aff683da8fb46d4b41ddad477e446cb364a3aac376139814fb6beca17e9006ca7a0e639e314313e65eb48eda5a1fa0c1c2a3a9c951cc7429b9b7c0c84501f349db92ca1ecd3b8d8f784420ab18f5557747e428786ec8b26f5ea5d9f77357fbb7ad468a8f5d617807b616d1d3a5e56ed1dc7d75737e3198fd d0ff43f6f6deb433b824b31172fc1b19a04e9d7775d2fa27df5d0b153ab6f4b059563290edeaae5097a1b1a43f252493af8b468dca77789590b6c60e4afd4a21040faaab9c629b508a340d9c71095632d639d3bb7682c438c4ba07730868e3db29ad74cdeb15029a36c02f24ca41009c16e3e81533387afb3f509cea9da457 a825171becd2526dde3e8875cc7e9b9a347f12654ee7923b2e858791928b69e700b48663f447ba8868b3232b2a9840078a43ddb6406e1f9d6754b8eadc5405462fdd487eaacbb16abbd959c66f83c93dbac0ab44ba08bfddb12bf01c7f992026b13f75bec85c720790aaf43b0623cfacb180af53ff447daf44168020c0ac67 419e20a8b345e23c0ce39fdf4c3a37406b8b31df8b2027b78ec38dc4b622f1f54206e32a31db28a585585c23526cfe862f7a6931c66cf62cbafa61e27e21fb398f3fe6ab25fbeebaa49d78a2723eb07acd09c38d7b528a85e94829a92acea66caadee39ec6b038b4deed794cfc45ac644f28ce17877f840977fbea676af84a fafb81b533092bccb82a13885287f5ce670699081c3b4b87e3e353c1f6d32b00f4a5308cbda4a85664c1c8f2f6d354ec13db2e5d6b1d0a28885cf6c30795d1a126e090344147447fd2ab21abdcad7a6cdc4a1b97a5d90f5542a2bfda0db44edfd195c740678a70d510b456fce402876e3764a3abd52cc5752c05c7900479cd 0967e5706162c5cab7cc32f13c3b555b67511d3624db4163588607955a85143fc64213da1b9b70919cc53ca737862cf80c87b94618e7bc1c96df314d43b796c66921865609be4a026177e545fdb5e3c1478e3d5306572d34e7a289bb1099ca1ded68661aa96a680d8677b62e32943d8bb7dec73aadd2fbcd822f923ede9043 436414383251ebeab9b973c231050487fd9eb28eb535967f7d50edf1c0efc093c40ce0ece2c9cfd0b77651f22ecde3bda6e3a94d745798649c708dd50727f270e5b1365ec1ba1be3bc4a9080e37527579e6309887d6e6ed495443ea9a7d91dc590750ade3a135d36e28721035bd94dfc7c547b01c44d2bca220a4f50a63019 9b7b6bc65748961f745d8d93d094d25798a2ed3fe0bf08def17274d8b08802c6d6422a31bb1b99f212d51db7a0d05ff6eadd7a3fa1bb59d3c5491f449cf271e697962427cc60d1fa55e79bb64abc88ad68d82fc14fce7133a15dea32b45c0fa96e61bcf3e394e140f116d705066bab05c70c2a98d6432d1250a1a649941d02 92fa3c7ef8367bdac8d92bdc1ba8d91c95f4ea46461610770e56f3d7d3562fbccb35e21855142fd6f5da8e0918e412d53d51c7fabdcd21eae9749f0dba1cba266be0600ae99c593bece16d9a2bc024929dc84cd385676bb7e7b0f34a826e53caacca9091f5155e7460a3d4139cc155ed3c8c4856a41a198b17918a94099058 588b02f4eddb515e50e86450bcddce9cec3109e22186e92c02dd15d7c1e41f3b3596ecf642163c71fe885446cd6525dc43569b0c218b4a1549e288a1ccb847f79ff6d4fdb8469d9ac6ebe1f6f8aa32b5a6ea9638c42bdf0e9ebddc8f29f96f1c5407a12304bff65d96241b9d384d8bfa5ff8df7d067bbf90d8083e3e13eb8c e3c19535c2a9a2e4415a27685372054bcb0f00528125ebf5cffdd1b316785815f7f678803ddee69f7c0119e6978927a98fde01fe6d6e5dd315f1816b312de0b96121ab6d43bacbb496b6df8d99923e1dba7d0718e60a1583264e90357ada3978e983906aa9e0dcc25fca1086d5106ded9201b9d3e19f00d5e6ed7743baf095 12068c2a6b91ed91fd4fed83df00810aef1b4d7b8b80d4d328d0a7b7e8e55a51c009b8953c0658be094d66c98f9a7bb192b27c285c186bddf558a31d73c7f3f383631f10981b02f5c1c0433ae4a9b2864368cb6bebf1c12cb22219daa695f63999e81ba0a19be77ab5eb6ee94f41c38731ba8f3bbb35a2d2e7f299c6ff46d3 43428d7b9a9da075f019de2b9d8e37d6f9b337fa2d9ba182d1cc53e832b8bc60ebfe3f2673701699b16c81a4c6ee9b5248437e441d79164e4c99d2453c004b91510a9020ec3f12eaed811fb67ae4c3ae4b9e29970851d91d73e884286622c591665225b83991f9e4b0bdd9d87332c1a2f48c749898556491dd4b3b11ab0b59 8c56e3d586389d64daecd63675e77485e33e89f8cbaa856e3742383fd7a301f237c43f6af9f360938eb3f9376f5cb6e00502d6b9125ce9a21c6ed87640273e91bea63b522e23d3c6e557a69ef65ef0735eefb88d786b87164b303b71d34b9a78242de1605054c8aaa5295b450183f63d852f5192289dca6c55254b063ddadd 4923c1cbb127df60f3029909230a77538919d858b24cd6be486a549e20e627a18d3b926004cd0162e683cbaaeb682ffaf45f60530fbfd1dc228ff8265eb46d728eef891a2dce2eb37e1724a9c41d0f5bf378ab40b7437def988c068f6155b1c98ad1d05f07f61ed94f1daadf2ddcbddde4d2579d9027776d828733dbdf6f52 b52ad8d6ee508c2662113577d320781424c5483d9c8025bbec08752fd22b131da887f9d1e3566552e0ce4234f06982302ca02e425e6df8e44538a071c90a6f850284bf6ae6275f58dacbe5241f90e611f2a51571dec7225b3fb6616b78f84ed448b8dd309e85ee13aae8d7c64857aeaed97affe2e1da461077b1fcad237cc2 0302ca6379ede96e9817a6116f6953f92ab4916fcbe33caeaa5ebd7a6bbc6761c1712679755647f0598daa1726b41cccba179ac2138e712cde448b5e67f0d2c72ffd2b6d631bee0396e6323627e66352290d8ff1e85f29a00f412a16d826a09be2ff8f7c06e4d7ba61ba51c67b0d03baa07529e7a2b991d1c24c31417a3266 52f6508de6c17d3b45c55408bed0946e83632b95a42af2dd4c9d5b63e58154f5f7093fcff7b9f2a1bf0c300828b340f770e523bdc9db94aa7ce54521ec57832e0f199b27cea1716cec165ef2a639c2d0067daf7205204a35da5a4324d74efc53b5c0ee17ce50dc7ef4d3b50e4f4d309a369a6186aefcf3bfc8afba22f76f83 b17bad6ee5ae81bbc246e147a65a14898485df43f48c83d439b34b2b23b6af7e5d28794f25cc8f9faf54d7d9ef395e465260f5cbdb2ad4c9f3186c605bbba5f0cfdf8b99138a6663293a358c39915512cda76ceb45880a9086d02bf3333889c38693e62aeba70a87836699448b6a55ae6d813736584039936b6103a5cd4392 949ef8f4852d3b5baceb81fd7b598d96389208ed1630efd2e973cfde145fb08bc2d83cb7801f21cba988c5e564bb77ed0b7f2ce08f18e59edbd482b02e9a14a86c02ce1fc473ba28b6813be843e309307a3216a04b3d5d99ba0f7528f96b85159cf7c85f53dbfafe9fe9f5dd5029fac48f3687b7540ac30e101a313f0eaa09 4b3163f7a612f229dd12d58a1d8ca3b281f8b1b806a3455979294df6801e1a941bb7c14f381902f39c88d2f93c17eb51cbea2d416e26e9af99b589552004c5267ded0c4dd64a8f827a011794ddfe58bebb0d37077eb333dd840f34afba2811ed5c828d64b7eef00064f0ee507092cf7809066338277a9fe3d38b61fbd9a6e0 afd2fd692cee830f13cce21a41f1dec1c4cc904e14a8968221d463a2ba2aafa3a7a2a8be208d741002d8fc074022cc4237df4fa0cf0e4fec7e407e96dd1ebd2194a1db2857536000d6a2169ecc6300175919966f3f7194b926de9d67cb05b25c8f107c7e536f8c862a8530ac3d36101f957f394661c9b5a4b9d03803136134 9bda9da163effc8f3dace76348961fdc32db2c858270982e1bf2d828d01306dbd35be662a58fd8e13db4d18d0641bb84c778f2f85e3c20cc35129b34fb0837ad0590c073a6f201ca67e7ced31630c1257b270f14b931459a5a57b000752384c94eda5e0565586b6d159e26e04727ba63f92de73d5e7baf6d9db367c5d41984 7777167389c2f5b9597409a11581d5d728c6ac35d81be3a4c43697a06e59da2085f1d12ae2c3c5c5c41bf33373d94637978b639f4507de729cf9579afaa4fff01605d4adca0db3848ded041fa9bca0fe281126005c711c9ed6ff10328854ad65f60aee35aefd2503a457a1658d329ced870907c719252aed451347ecbca138 c6f3309c63786c664096b089bc409d0ddde101a17e424a0dbe03fed41610d763e10389ef90eb4f63efe9fba574ef15608df56545b394539dd8f7b64a7e3d3947e46fe4fe822e3785b2d1c6f4219f8fd001cd24dc83da4dcbbe4f53103fa53f5064d98995b934c5f77dfee71f00d58e0fea3b0b24f5e92f099ff563a0b2c283 2e3081ffca49bffe55021d85582420593dcb19b3bb410564a58b0a8e1a3d37f44aca0fe62534e44b4240e59c432c56daa3222763a63e5273040996f7c41146988713351c60c9da01b51cfd21a4967abd1b54c48aa22a02a931545d5bbe3465e6a9c673b10b6517a6e290a41b448137fea8edc0d880ea0badcd30a66339bba0 dbdb2ed85ef6e4427ecec897c6a4fbcf15b4d830d07b102089e16875b7fc732b0e1be352f9612f2f6ebf85c022cd32656939812e75b6009834bd62d1645d86199965651fe06083bd482d075cb2660f82933fd0fff54dce09310db2af4efda90dbb23ef2bfefba6235339d6b275b7c59a44369c22e3d2531d36e13dccd25035 610e58f770251a28eb69782f978231de41d039169e413158693778d412254f060d99356fa3293792e9f980ad8ec41f095367ae9859f49e45d7ac997c1f554e86f69f0f3b1de14681fe9a5738bee4379b782616f9613ace00cd40e5627de3c9c1edd88e037bb2f36bec76701f630deb8cf306b219de304524ee4df12772a4ae 0450419513e76d03582fa48070da3aeff7f42bfbe07bf2dfc27aa41e1a65e5b3a78a9f2178d71914fb3330f3edddd3c23508d0f4dfa702520a31b355b10c6481c5d910a198006229ffac0f908638cec552c4812302082e110d3a2fdbae4bfb4e90215100bb3aee1a9b9f565855263ec4525bc1c85c6b9ea59884a7133ddf30 17a0ce9899abdb97221c3e4c5cf4ad095a718c670622173d7c8f50ea6074249bda5e9e0a3352a5ea80f2305fac989c8c08642a998b0be5b303ae5945d8aeb9027f71d5109c20d4c9ff45da2c3f7b81ee5f7b957e7a6d46d91b5e7fde35a94cb3abb516ea3cca205389006506b1c2d35b8c85d0f037a53bf392f9eb75593e82 3d87c03e04fec3c7f97ffb6c3d5f15426c7afa2de1f85cd5d27a59881a6fc2c0b7193824e830aa74f570d8cb1db8604fd4cf8bb01cda9a2c5b9602d1ee3b44b4863bf60905b327f7b448a739ead0c34f6d2f01be5361464c4e258e1cd4d86fb4646da04baa26f4c2fd0701986f6b26160fc83d255b852d7afa6f9409213a27 1d5adb46efca6deb92140c4ff36765537d48d4270de75287fd8b4728b34269ba55d99582da3e9dcfabf13a2c3ab3ef472b221d462c7bce73afcd63dcc25bfbcf2f8ce7044cca0a0c780b0835d43c0d1d2636e3a1255415bfe25fd0189dc466d9bd0b70067b5fcfd2f8a100ded7fa3aea04a7e3472932144697b3251c819705 2631180e2e1b4993a433ae2ef1780237ea6b931761abeac9d7534a047d9149f771484c59e94b8bb037ee8bc0de61f7334a874bbfa8c6e407e0dca7871c279ee7d2aba18cd31fa5f45e34be401a2b4df5ad1fbf280edd1c868f1c92ec7f3884aeec3dd5e2b8a6d1ec42f238f4798ecfcbd1af39b0d4a49516848449a7c764eb 5f4405bb49f60d6ff76173e75c27fd84cebc63d2187f29d758718c8167b05cb11faff21d79db6aca0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont setpacking %AI3_EndRider [ 39/quotesingle 96/grave 130/quotesinglbase/florin/quotedblbase/ellipsis /dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft /quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark /scaron/guilsinglright/oe/dotlessi 159/Ydieresis /space 164/currency 166/brokenbar 168/dieresis/copyright/ordfeminine 172/logicalnot/hyphen/registered/macron/ring /plusminus/twosuperior/threesuperior/acute/mu 183/periodcentered/cedilla /onesuperior/ordmasculine 188/onequarter/onehalf/threequarters 192/Agrave /Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute /Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde /Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave /Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute /acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex /edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute /ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex /udieresis/yacute/thorn/ydieresis TE %AI55J_Tsume: None %AI3_BeginEncoding: _Symbol Symbol [/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /universal /numbersign /existential /percent /ampersand /suchthat /parenleft /parenright /asteriskmath /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /congruent /Alpha /Beta /Chi /Delta /Epsilon /Phi /Gamma /Eta /Iota /theta1 /Kappa /Lambda /Mu /Nu /Omicron /Pi /Theta /Rho /Sigma /Tau /Upsilon /sigma1 /Omega /Xi /Psi /Zeta /bracketleft /therefore /bracketright /perpendicular /underscore /radicalex /alpha /beta /chi /delta /epsilon /phi /gamma /eta /iota /phi1 /kappa /lambda /mu /nu /omicron /pi /theta /rho /sigma /tau /upsilon /omega1 /omega /xi /psi /zeta /braceleft /bar /braceright /similar /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /Euro /Upsilon1 /minute /lessequal /fraction /infinity /florin /club /diamond /heart /spade /arrowboth /arrowleft /arrowup /arrowright /arrowdown /degree /plusminus /second /greaterequal /multiply /proportional /partialdiff /bullet /divide /notequal /equivalence /approxequal /ellipsis /arrowvertex /arrowhorizex /carriagereturn /aleph /Ifraktur /Rfraktur /weierstrass /circlemultiply /circleplus /emptyset /intersection /union /propersuperset /reflexsuperset /notsubset /propersubset /reflexsubset /element /notelement /angle /gradient /registerserif /copyrightserif /trademarkserif /product /radical /dotmath /logicalnot /logicaland /logicalor /arrowdblboth /arrowdblleft /arrowdblup /arrowdblright /arrowdbldown /lozenge /angleleft /registersans /copyrightsans /trademarksans /summation /parenlefttp /parenleftex /parenleftbt /bracketlefttp /bracketleftex /bracketleftbt /bracelefttp /braceleftmid /braceleftbt /braceex /.notdef /angleright /integral /integraltp /integralex /integralbt /parenrighttp /parenrightex /parenrightbt /bracketrighttp /bracketrightex /bracketrightbt /bracerighttp /bracerightmid /bracerightbt /.notdef /_Symbol/Symbol 0 0 0 TZ %AI3_EndEncoding AdobeType %AI55J_Tsume: None %AI3_BeginEncoding: _Times-Italic Times-Italic [/_Times-Italic/Times-Italic 0 0 1 TZ %AI3_EndEncoding AdobeType %AI5_Begin_NonPrinting Np 9 Bn %AI5_BeginGradient: (Black, White Radial) (Black, White Radial) 1 2 Bd [ 0 0 0 < 00000000000000000000000000000000000000000000000101010101010101010101010102020202 02020202020202030303030303040404040404040505050505050606060607070707080808090909 090A0A0A0A0B0B0B0C0C0D0D0D0E0E0F0F0F101011111112121313141515161617171819191A1A1B 1B1C1D1D1E1F202021222323242526272728292A2B2C2D2E2F303132333435363738393A3B3C3D3E 3F404142434445464748494A4C4D4E4F50525354565758595B5C5D5F606263656668696B6C6E7071 737576787A7C7D7F81838587898B8D8F919395979A9C9EA0A3A5A7AAACAFB1B4B7B9BCBFC2C5C7CA D0D6DBE0E4E8ECF0F2F4F6F7F9FBFDFF > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 4 %_Br [ 0 0 0 0 1 1 1 2 50 0 %_Bs 0 0 0 1 0 0 0 2 50 100 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Nova) (Nova) 1 3 Bd [ < 08070707060606050504030303030303030404050506060606070707070707070707070707070706 06060505040403030202020202020304040405050606060606070707070707070707070707060606 06050504040404040404040404050505050606060607070707070707070707070707070606060606 05050505050505050505050505050505060606060606070707070707070707070707070706060606 06060505050505050505050505050505050505050505060606060606060707070707070707070707 07070706060606060606060505050505050404040404040404040404040404040404040505050505 05050506060606060606060606060606060606060606060606060606060606060606060606060606 06060606060606060606060606050505050505050505050505050505050505050504040404040404 04040404040404040404040404040404040404040404040404040404040303030303030303030303 0303030303030303 > < 0505060607070808090A0A0B0C0C0D0E0F0F10111212131415161718191A1A1B1C1D1E1F20212223 24252728292A2B2D2E2F2F30313233343435363738393A3A3A3B3C3D3E3F40414243444545464849 4A4B4C4D4E4F4F50515254555656565758595A5B5C5D5D5E5F6061626363646566676869696A6B6D 6E6F707071727374757576777879797A7B7C7D7E7E7F8081828283848586868788898A8A8B8C8D8D 8E8F909191929394949596979798999A9A9B9C9D9D9E9FA0A0A1A2A4A4A5A6A7A7A8A9A9AAABACAC ADAEAEAFB0B0B1B2B3B3B4B5B5B6B7B7B8B9B9BABBBBBCBDBDBEBFBFC0C1C1C2C3C3C4C5C5C6C6C8 C9C9CACBCBCDCDCECFCFD0D0D1D2D2D4D4D5D6D6D7D7D8D9D9DADADBDBDDDDDEDFDFE0E0E1E1E2E2 E3E3E4E4E4E5E5E6E6E7E7E8E8E9E9EAEAEAEAEBEBEBECECEDEDEDEDEEEEEFEFEFEFEFF0F0F0F0F0 F1F1F1F1F1F2F2F2F2F2F3F3F3F3F3F3F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F5F5F5 F5F5F5F5F5F5F5F5 > 0.9137 0 1 < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E2E1E0DFDEDDDCDBDAD9 D8D7D6D5D4D3D2D1D0CFCFCECDCCCBCAC9C8C7C6C5C4C3C2C2C1C0BFBEBDBCBBBAB9B8B7B7B6B5B4 B3B2B1B0AFAEAEADACABAAA9A8A7A7A6A5A4A3A2A1A0A09F9E9D9C9B9A9A99989796959494939291 908F8E8E8D8C8B8A898988878685858483828180807F7E7D7C7C7B7A797878777675747473727171 706F6E6D6D6C6B6A6A696867676665646463626161605F5E5E5D5C5B5B5A59585857565655545353 525151504F4F4E4D4C4C4B4A4A4948484746464544444342424140403F3E3E3D3C3C3B3A3A393938 373736353534343332323131302F2F2E2E2D2C2C2B2B2A2929282827272626252424232322222121 20201F1E1E1D1D1C1C1B1B1A1A191918181717161616151514141313121211111110100F0F0E0E0E 0D0D0C0C0C0B0B0A0A0A090909080808070707060606050505040404040303030302020202010101 0101010000000000 > 0 4 %_Br < 030404050606070809090A0B0C0D0D0E0F10101112131314151616171819191A1B1C1C1D1E1E1F20 20212223232425252627272829292A2B2B2C2D2D2E2F2F303131323333343535363637383839393A 3A3B3B3C3C3D3E3E3F3F404041414242434344444545464647494A4C4E5051545658595B5E606163 6668696B6D707173747677797A7C7D7F8182848587888A8C8D8F9092949597989A9B9C9E9FA0A2A3 A4A5A7A8A9ABACADAEB0B1B2B3B5B6B7B9BABBBDBEBF > < F5F5F5F4F4F3F3F3F2F2F1F1F1F0F0F0EFEFEFEFEEEEEEEEEDEDEDEDEDEDECECECECECECECECECEC ECECECECEDEDEDEEEEEEEFEFF0F0F0F1F1F2F3F3F4F4F5F5F6F6F7F7F8F8F9F9FAFAFAFAFAF8F8F7 F7F6F6F5F5F4F3F3F2F2F2F1F1F1F0F0EFEFEFEFEEEEEEEEEEEDEDEDEDEDEDEDEDEDECECECECECEC ECECEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E8E8E8E8E8E8E8E8E8E7 E7E7E7E7E7E7E8E8E7E7E7E7E7E7E7E7E7E6E6E6E6E6 > < E9E9E9E9EAEAEAEAEBEBECECECECECEBEAE9E9E7E6E4E4E2E1DFDFDDDBDBD9D7D4D4D2D0CDCDCBC8 C6C6C4C2C0BFBDBBB9B9B7B4B4B2B0ADADABA8A6A5A3A09E9D9B98969593908E8D8B888686848281 7F7D7B7B78757373706E6B6B68656362605D5A5A575452514F4D4D4C4B4949484645454443424241 3F3E3E3D3C3B3B3A383737353434333130302F2E2C2D2B2A29292827262625242222211F1F1D1C1A 1A18171515131210100F0D0C0B0A0807080707070707 > < 00000000010101010101010101020202020202020303030303030404040404040505050505050606 060707070808080909090A0A0B0B0B0C0C0D0D0D0E0E0F0F10101111111212131314141516161718 18191A1A1B1C1C1D1E1F202021222323242526262728292A2A292A282726262524232322201F1F1E 1D1C1C1B191818171716161515151413121211100F0F0E0D0C0C0B0A090908080808070707070606 06060505050404030403030202010101010101010101 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A > < 00000000000101010101010101010202020202020202020303030303030303030404040404040404 04050505050505050505060606060606060606070707070707070707080808080808080808090909 0909090909090A0A0A0A0A0A0A0A0A0A0B0B0B0B0B0B0B0B0B0C0C0C0C0C0C0C0C0C0D0D0D0D0D0D 0D0D0D0E0E0E0E0E0E0E0E0E0F0F0F0F0F0F0F0F0F10101010101010101011111111111111111112 12121212121212121313131313131313131414141414 > < 000101020304040506070708090A0A0B0C0D0D0E0F10101112131314151516171818191A1B1B1C1D 1E1E1F20212122232424252626272829292A2B2C2C2D2E2F2F303132323334353536373838393A3A 3B3C3D3D3E3F40404142434344454646474849494A4B4C4C4D4E4E4F505151525354545556575758 595A5A5B5C5D5D5E5F60606162626364656566676868696A6B6B6C6D6E6E6F707171727373747576 76777879797A7B7C7C7D7E7F7F808182828384858586 > 4 %_Br [ 0.0314 0.0196 0.9137 0 1 1 0 2 38.2022 0 %_Bs 0.0118 0.9608 0.9137 0 1 0 0 2 50 75.2809 %_Bs 0.749 0.902 0.0275 0.0039 0.2902 0.0784 0.5255 2 50 100 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (RGB Rainbow) (RGB Rainbow) 0 6 Bd [ < F4F4F4F3F3F3F3F3F3F3F3F3F3F3F3F2F2F2F2F2F2F1F1F1F1F1F0F0F0F0EFEFEFEEEEEEEDEDEDEC ECECEBEBEAEAE9E9E8E8E7E7E6E6E5E4E3E3E2E1E0DFDEDDDBDAD9D8D6D5D4D3D1D0CFCECCCBCAC8 C7C6C5C3C2C1BFBEBDBBBAB9B7B6B5B3B2B0AFAEACABAAA8A7A6A4A3A1A09E9D9B9A989695939290 8F8D8C8A898786858382817F7E7D7B7A79787675747371706F6E6C6B6A686766646362615F5E5C5B 5A585755545351504E4D4C4A494746454342413F3E3D3B3A393736353332312F2E2D2B2A29272625 242321201F1E1E1D1C1B1A191817171615141413121111100F0F0E0D0D0C0B0B0A0A090908070706 06060505040404030303030202020202 > < EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEF EFEFF0F0F0F0F0F0F0F0F1F1F1F1F1F1F1F2F2F2F2F2F2F3F3F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4 F4F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F7F7F7F7F7F7F8F8F8F8F9F9F9F9F9F9F9F9F9F9F9F8 F8F8F7F7F6F6F6F5F5F5F5F4F4F4F3F3F3F3F2F2F2F2F1F1F1F1F0F0F0F0F0EFEFEFEFEFEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFF0F0F0 F0F0F0F1F1F1F1F1F2F2F2F2F2F2F3F3 > 0 0 < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000001010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010202020202020202 02020202020202020202020202020202020202020202020202020202020202020202020202020202 02020202020202020202020202020202 > 1 4 %_Br < D5D5D6D7D8D9DADBDDDEDFDFDFDFDFDEDEDEDDDDDCDCDCDBDBDBDBDADADADADADBDBDBDCDCDDDEDE DFE0E1E2E3E4E6E8E9E9EAEBEAEAE9E8E8E7E7E6E6E5E5E4E4E3E2E1E0E0DFDFDFDFDFDFE0E0E1E2 E3E5E7E8EBEDEFF1F2F4F5F4F3F1EFEDEBEAE8E7E6E5E4E3E2E2E2E2E2E2E2E3E4E5E7E8EAEBEBEB EBEBEAEAEAEAE9E9E9E9E9E8E8E8E8E8E7E7E7E7E8E8E9E9EAEAEBEBEBEAEAEAEAEAEAEAEAEAEBEB ECEDEEEFF1F3F5F6F7F8F9FBFCFCFCF9F7F6F4F2F1F0EEEEEDECECEBEBEBEBECECEDEDEEEEEFEFEF EFEFEFEFEFF0F0F0F1F1F2F3F3F4F5F6F7F8F9FBFCFDFDFEFFFFFFFFFFFDFCFBFBFAF9F8F8F7F7F6 F6F6F5F5F5F5F4F4F4F4F4F4F4F4F4F4 > < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000101010101020202020303030404040405050505060606060707 0707070707070708090A0B0C0E11131517191B1D1F21232527282A2B2D2E3031323334353637383A 3C3D3F4042444547494A4C4E4F5153555658595B5C5E5F606263646667696A6C6D6F707273757677 797A7B7D7E7F80818384858687898A8C8E9091939597989A9C9D9FA0A2A3A4A6A7A8AAABACAEAFB0 B2B4B5B7B9BABCBDBFC1C2C4C5C7C8CACBCCCECFD1D2D3D5D6D7D8DADBDCDDDEDFE1E2E2E3E4E5E6 E7E7E8E9E9EAEAEBEBEBECECECECECED > 0 0 < 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 1 4 %_Br < ECECECECECECECECECECEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAE9E9E9E9E9E8E8E8E8E8E7E7E7E7 E7E6E6E6E6E5E5E5E5E5E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E2E2E2E2E2E2E2E2E2E2E2E2E2 E2E2E2E2E2E2E2E2E2E2E2E2E2E2E3E3E3E4E4E4E5E5E6E6E7E7E8E8E9EAEAEBEBECEDEEEEEFF0F0 F0F0F0F0F0F1F1F1F1F1F1F1F0EFEEEDEDECEBEAEAE9E8E7E7E6E6E5E4E4E3E3E2E1E1E0E0DFDFDF DEDEDDDDDDDCDCDCDBDBDBDBDBDBDBDBDBDCDCDCDDDDDDDEDEDFDFE0E0E1E1E2E3E3E4E5E6E6E7E8 E9E9E9E9E9E9E9E9E9E9E9E9E8E7E6E6E5E4E3E2E2E1E0E0DFDEDEDDDDDCDCDBDBDADAD9D9D9D8D8 D8D7D7D7D7D6D6D6D6D6D5D5D5D5D5D5 > 0 < FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFDFDFDFDFCFCFCFBFBFBFAFAF9F9F9F8F8F7F7F6F6F5F5F4 F4F3F3F2F1F1F0F0EFEEEDEDECEBEAE9E8E7E5E4E3E2E1E0DFDEDDDCDBDADAD9D8D7D6D5D4D3D2D1 D0CFCDCCCBCAC8C7C6C4C3C1BFBDBBB9B7B4B2B0AEACAAA8A6A4A2A09E9C9A98969492908E8C8A89 87858381807E7C7A7977757372706E6C6B6967666462615F5E5C5A595756545351504E4D4B4A4847 46444341403E3D3B3A3837353432312F2E2C2B29282625242221201E1D1C1A191817151413121110 0E0D0C0B0A0908070605040302010000 > 0 < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101 > 1 < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 4 %_Br < 0808090A0A0B0C0C0D0E0E0F101011121313141516171818191A1B1C1D1E1F1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F6061626364666768696A6B6C6D6E6F707172737474757677 78797A7B7C7D7E7F8081838485868788898A8B8C8E8F909192939495969798999A9B9C9D9E9FA0A1 A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BBBCBDBEC0C1C2C3C4C5C7C8C9CACBCC CDCECFD0D1D2D3D4D5D6D6D7D8D9DADBDBDCDDDEDEDFE0E0E1E2E2E3E3E4E4E5E6E6E6E7E7E8E8E9 E9E9EAEAEAEAEBEBEBEBEBEBECECECEC > < 05050505050505040404040404040404030303030303020202020202010101010000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 > < E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEBEBEBEBEBEBECECECECECEDEDEDEDEEEEEEEEEFEF EFF0F0F0F1F1F1F2F2F2F3F3F3F3F4F4F4F5F5F5F5F6F6F6F7F7F7F7F8F8F8F8F9F9F9F9FAFAFAFA FBFBFBFBFBFBFBFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFD FDFDFDFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF > 0 < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 1 0 4 %_Br < 03030303040404040404040404040404040505050505050505050606060606060606060606060606 06060606060606060606060606060505050505040404040404040404040404050505050606060606 06070707070707070707070606060606050505050505050505050505050505060606060607070707 07070707070707060606060605050505050505050505050505060606060707070707070707070707 07060606060505050404040404040404040505060606060707070707070707070707060606060505 04040403020202020203030404050506060607070707070707070707070707060606060505040403 03030303030304050506060607070708 > < F5F5F4F4F4F4F4F3F3F3F2F2F1F1F0F0EFEFEEEDEDECEBEAEAE9E8E7E6E5E4E4E3E2E1E0DFDEDDDB DAD9D8D7D6D5D4D2D1D0CFCECDCBCAC9C8C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A898887 868584838281807F7E7D7C7B7A797877767574737271706F6E6D6B6A696867666564636261605F5E 5D5C5B5A595857565655545251504F4E4D4C4B4A4948464544434241403F3E3D3C3B3A3A39383736 353434333231302F2E2D2B2A2928272524232221201F1E1D1C1B1A19181716151413121211100F0F 0E0D0C0C0B0A0A090808070706060505 > 0.9137 0 1 < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 0 4 %_Br [ 0.0078 0.9529 0 0 1 0.0078 1 2 50 100 %_Bs 0.9569 0.9294 0 0 0 0 1 2 50 80 %_Bs 0.8353 0 0 0 0.0039 1 1 2 50 60 %_Bs 0.9255 0 1 0 0 1 0 2 50 40 %_Bs 0.0314 0.0196 0.9137 0 1 1 0 2 50 20 %_Bs 0.0118 0.9608 0.9137 0 1 0 0 2 50 0 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Steel Bar II) (Steel Bar II) 0 3 Bd [ 0 0 0 < 00000000000000000000000000000000000000000000000101010101010101010101010102020202 02020202020202030303030303040404040404040505050505050606060607070707080808090909 090A0A0A0A0B0B0B0C0C0D0D0D0E0E0F0F0F101011111112121313141515161617171819191A1A1B 1B1C1D1D1E1F202021222323242526272728292A2B2C2D2E2F303132333435363738393A3B3C3D3E 3F404142434445464748494A4C4D4E4F50525354565758595B5C5D5F606263656668696B6C6E7071 737576787A7C7D7F81838587898B8D8F919395979A9C9EA0A3A5A7AAACAFB1B4B7B9BCBFC2C5C7CA D0D6DBE0E4E8ECF0F2F4F6F7F9FBFDFF > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 4 %_Br 0 0 0 < FFFDFBF9F7F6F4F2F0ECE8E4E0DBD6D0CAC7C5C2BFBCB9B7B4B1AFACAAA7A5A3A09E9C9A97959391 8F8D8B89878583817F7D7C7A7876757371706E6C6B696866656362605F5D5C5B5958575654535250 4F4E4D4C4A494847464544434241403F3E3D3C3B3A393837363534333231302F2E2D2C2B2A292827 272625242323222120201F1E1D1D1C1B1B1A1A191918171716161515141313121211111110100F0F 0F0E0E0D0D0D0C0C0B0B0B0A0A0A0A09090909080808070707070606060605050505050504040404 04040403030303030302020202020202020202020101010101010101010101010100000000000000 00000000000000000000000000000000 > < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 4 %_Br [ 0 0 0 1 0 0 0 2 50 100 %_Bs 0 0 0 0 1 1 1 2 50 40.45 %_Bs 0 0 0 1 0 0 0 2 50 0 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Sunrise) (Sunrise) 0 6 Bd [ < EEEDEDEDECECECECECECECECEDEDEDEDEEEEEEEFEFF0F0F1F1F2F2F2F3F3F4F4F4F5F5F5F6F6F6F7 F7F7F7F7F5F4F2F1F0EFEDEDECEAEAE9E8E7E7E6E6E5E4E4E4E3E3E3E3E3E3E3E3E3E3E3E3E3E3E4 E4E4E4E4E5E5E5E5E5E5E5E5E5E5E5E5E5E5E4E5E5E4E4E4E4E4E4E3E3E3E2E1E1E0E0DFDEDEDDDC DCDBDADAD9D8D7D7D6D5D5D4D3D3D2D2D2D2D2D2D1D1D1D1D1D1D0D1D1D0D1D1D1D1 > < 35343332312F2E2C2B2928262422211F1D1B1917151311100F0E0D0C0B0A09080807060505040303 02010100000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000 > 1 < 131211100F0F0E0D0C0C0B0B0A090908070706050504040303030302020202020101010101010100 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000 > < 00000101010202020303030404040505050606060707070808080909090A0A0A0B0B0B0C0C0C0D0D 0D0E0E0E0F0F0F1010101111111212121313131414141515151616161717171818181919191A1A1A 1B1B1B1C1C1C1D1D1D1E1E1E1F1F1F20202021212122222223232324242425252526262627272728 28282929292A2A2A2B2B2B2C2C2C2D2D2D2E2E2E2F2F2F3030303131313232323333 > < 666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D 8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5 B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDD DEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 0 4 %_Br < 080809090A0A0A0B0C0C0D0D0E0E0F10101112131415161718191A1B1C1D1E1F2021222324252627 2828292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F4041424344454648484A4B4C4D4E4F 505152535455565758595A5A5C5D5E5F5F616163636466666868696B6B6D6D6E6F70717273747576 7778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E 9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C5C5C7 C8C9CACBCDCDCED0D0D2D3D3D5D5D7D7D8D9DADBDCDCDDDEDFE0E0E1E2E3E3E4E4E5E6E6E7E7E8E8 E9E9EAEAEAEBEBEBECECECECEDEDEDEE > < 05050506060606060706070707070708080808080808080808080908090809090909090909090909 090909090909090909080909090909090A0A0A0A0A0A0A0A0A0A0B0A0B0A0B0B0B0B0B0B0C0B0C0B 0C0C0C0C0C0D0D0D0D0D0E0E0E0E0E0F0F0F100F1010101110111211121112131213121313131313 13141314131414141414141514141414151414141515151515161616161617171717171818181918 191A191A191A1B1A1B1A1B1C1B1C1C1C1D1D1D1D1E1E1E1F1E1F201F201F20212021212122212221 2222222221222322222222232222222223222222222322232223242425242627262727282A292A2A 2B2D2C2E2D2F30303131323433353435 > < E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEBEBEBECECEDEDEDEEEEEFEFF0F0F1F2F2F3F3F4F5F5F6F7 F8F9F9FAFAFBFCFCFCFCFCFBFBFAFAF9F9F9F8F8F7F7F7F6F6F6F5F5F5F5F5F4F4F4F4F4F3F3F3F3 F3F3F3F3F3F3F3F3F3F3F4F4F4F4F4F4F5F5F5F5F6F6F6F7F7F8F8F8F9F9F9FAFAFAFAFAFBFBFBFB FBFBFCFCFCFCFDFDFDFDFDFEFEFEFEFEFFFFFFFFFEFEFEFDFDFDFDFDFCFCFCFCFCFCFCFBFBFBFBFC FCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF > < 00000000000000000000000000000000000000000000000000000000000001010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010202020202020202020202020202 02020202020203030303030303030303030303030303030303030303030304040404040404040404 04040404040404040404040504050405050505050505050505050505050505060505050606060606 06070607070707070707070808080808080808080808080909090A090A0A0A0B0B0B0B0B0C0C0C0C 0D0D0D0E0E0E0F0F0F0F101111121213 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFEFDFDFCFBFBFAFAF9F8F8F7F7F6F5F5F4F4F3F2F2F1F1F0EFEFEEEEEDECECEBEBEAE9E9E8E8 E7E6E6E5E5E4E3E3E2E2E1E0E0DFDFDEDDDDDCDCDBDADAD9D9D8D7D7D6D6D5D4D4D3D3D2D1D1D0D0 CFCECECDCDCCCBCBCACAC9C8C8C7C7C6C5C5C4C4C3C2C2C1C1C0BFBFBEBEBDBCBCBBBBBAB9B9B8B8 B7B6B6B5B5B4B3B3B2B2B1B0B0AFAFAEADADACACABAAAAA9A9A8A7A7A6A6A5A4A4A3A3A2A1A1A0A0 9F9E9E9D9D9C9B9B9A9A999898979796959594949392929191908F8F8E8E8D8C8C8B8B8A89898888 878686858584838382828180807F7F7E7D7D7C7C7B7A7A7979787777767675747473737271717070 6F6E6E6D6D6C6B6B6A6A696868676766 > 0 4 %_Br < 07070707070707070606060605050504040404040404040405050606060607070707070707070707 07060606060505040404030202020203030404050506060607070707070707070707070707060606 06050504040303030303030304050506060607070708 > < 64636261605F5E5D5C5B5A595857565655545251504F4E4D4C4B4A4948464544434241403F3E3D3C 3B3A3A393837363534343331302F2E2D2B2A2928272524232221201F1E1D1C1B1A19181716151413 121211100F0F0E0D0C0C0B0A0A090808070706060505 > < F0F0F1F1F1F1F2F2F2F3F3F3F4F4F5F5F5F6F6F6F7F7F8F8F8F7F7F7F6F6F6F6F5F5F5F5F4F4F4F4 F3F3F2F2F2F1F1F1F0F0F0EFEFEFEFEFEFEFEEEEEEEEEEEEEDEDEDEDECECECECECEBEBEBEBEAEAEA E9E9E9E9E8E8E8E8E8E8E8E8E8E8E8E8E8E9E9E9E9E9 > < 01010101010101010100000000000000000000000000000000010101010101010101010101010101 01010101010000000000000000000000000000000000010101010101010101010101010100000000 00000000000000000000000000000000000000000000 > 1 < 999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0 C1C2C3C4C5C6C7C8C9CACBCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9 EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 0 4 %_Br < E4E5E5E6E7E7E8E9EAEAEBECEBEBEBEBEAEAEAE9E9E8E8E7E7E6E5E5E4E3E3E2E1E0DFDFDEDDDCDB DADAD8D7D6D5D4D3D2D1D0CFCFCECDCCCBCBCAC9C8C7C6C5C4C3C2C1C0BFBEBEBDBCBAB9B8B7B6B5 B3B2B1AFAEADACABAAA9A9A7A6A5A4A3A2A19F9E9D9C9B9998979796949392908F8E8D8B8A898887 878584838281807F7E7C7B7A7A79787675747371706F6F6D6C6B696867666563636261605F5D5C5B 5B5A5957565554525151504F4D4C4B4949484746454443424241403F3E3D3D3C3B3A393838383736 3635343434333232313130302F2E2E2E2D2C2C2C2B2A292929282727262625242423232221212120 1F1E1E1E1D1C1B1B1B1A19191818181716151515141313121212111010100F0F0E0E0E0D0D0D0C0B 0B0B0A0A0A0A0909090808080808080700 > < 2323222221212120201F1F1F1F1F1E1E1E1E1E1F1F1F1F1F1F1F1F1F1F2020202020212121212222 22222323232424242525252525252626262626262626262627272727272728282828282829292929 2A2A2A2A2B2B2B2B2C2C2C2C2C2C2D2D2D2D2E2E2E2E2F2F2F2F2F30303030313131313132323232 32333333333434343535353535363636363737373738383838393939393A3A3A3A3A3B3B3B3B3C3C 3C3C3D3D3D3D3E3E3E3E3F3F3F404040404041414242424343434344444545454546464747474849 494A4A4A4B4B4C4D4D4D4E4E4F4F4F50505151515252535353535454555555565657575758585859 595A5A5A5A5B5B5B5C5C5C5C5D5D5D5E5E5E5E5F5F60606060606061616161616162626262626262 6263636363636363636464646464646400 > 0 < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000101010101010202020202030303030303030404040404040505 05050505060606060607070707070808080809090909090A0A0A0A0B0B0B0B0C0C0C0C0D0D0D0D0D 0D0E0E0E0E0E0E0F0F0F0F0F0F0F1010101010111111111111121212121213131313131313141414 14141415151515151515161616161616161717171717171616161616161616161616161515151414 131312121211111010100F0F0E0E0E0E0D0D0C0C0C0C0B0B0B0B0A0A090909090808080807070707 06060606050505050404040404030303030303020202020202020101010101010101010101010101 01010101010101010101010101010101FF > < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 2828292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F40414243444545464748494A4B4C4D 4E4F50515253545556575758595A5B5C5D5E5F60616263646566666768696A6B6C6D6E6F70717273 737475767778797A7B7C7D7E7E7F80818283848586878788898A8B8C8D8E8F909091929394959697 9798999A9B9C9D9E9F9FA0A1A2A3A4A5A5A6A7A8A9AAABACACADAEAFB0B1B1B2B3B4B5B6B7B7B8B9 BABBBCBCBDBEBFC0C1C1C2C3C4C5C5C6C7C8C9C9CACBCCCDCDCECFD0D1D1D2D3D4D5D5D6D7D8D8D9 DADBDCDCDDDEDFDFE0E1E2E2E3E4E4E5E6E7E7E8E9EAEAEBECECEDEEEEEFF0F0F1F2F2F3F4F4F5F6 F6F7F8F8F9F9FAFBFBFCFCFDFDFEFEFFFF > 0.6 < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBABAB9B8B7B6B5B4B3B2 B1B0AFAEADACABAAA9A8A8A7A6A5A4A3A2A1A09F9E9D9C9B9A99999897969594939291908F8E8D8C 8C8B8A89888786858483828181807F7E7D7C7B7A79787877767574737271706F6F6E6D6C6B6A6968 686766656463626160605F5E5D5C5B5A5A59585756555453535251504F4E4E4D4C4B4A4948484746 454443434241403F3E3E3D3C3B3A3A3938373636353433323231302F2E2E2D2C2B2A2A2928272726 25242323222120201F1E1D1D1C1B1B1A19181817161515141313121111100F0F0E0D0D0C0B0B0A09 0908070706060504040303020201010000 > 4 %_Br < EFEFEFEFEFEFEFEFEEEEEDEDECECEBEBEBEBECECEDEEEEF0F1F2F4F6F7F9FCFCFCFBF9F8F7F6F5F3 F1EFEEEDECEBEBEAEAEAEAEAEAEAEAEBEBEBEAEAE9E9E8E8E7E7E7E7E8E8E8E8E8E9E9E9E9E9EAEA EAEAEBEBEBEBEBEAE8E7E5E4E3E3E2E2E2E2E2E2E3E4 > < B9B7B5B4B2B0AFAEACABAAA8A7A6A4A3A2A09F9D9C9A9897959391908E8C8A89878685848381807F 7E7D7B7A797776757372706D6C6A696766646362605F5E5C5B5958565553514F4E4C4A4947454442 403F3D3C3A3837363534333231302E2D2B2A28272523 > 0 0 0 < 333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A 5B5C5D5E5F6061626364656768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F80818283 8485868788898A8B8C8D8E8F90919293949596979899 > 1 4 %_Br [ 0.8196 0 1 0 0.2 1 0 2 50 100 %_Bs 0.9333 0.2078 1 0.0745 0 0.4 0 2 50 57.3034 %_Bs 0.0314 0.0196 0.9137 0 1 1 0 2 50 55.618 %_Bs 0.0275 0.3922 0.9412 0.0039 1 0.6 0 2 50 46.6292 %_Bs 0.8941 0.1373 0 0 0 0.6 1 2 45 28.0899 %_Bs 0.9373 0.7255 0 0 0 0.2 1 2 50 0 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Unnamed gradient 13) (Unnamed gradient 13) 1 2 Bd [ 0 0 0 < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000001010101 01010101010101010101010101010101010000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000FF > 1 < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9 D9D8D7D6D5D4D3D2D1D0CFCFCECDCCCBCAC9C8C7C7C6C5C4C3C2C1C0C0BFBEBDBCBBBABAB9B8B7B6 B5B5B4B3B2B1B0B0AFAEADACACABAAA9A8A7A7A6A5A4A3A3A2A1A0A09F9E9D9C9C9B9A9999989796 9695949393929190908F8E8D8D8C8B8A8A89888887868585848383828180807F7E7E7D7C7C7B7A7A 7978787776767574747372727170706F6E6E6D6C6C6B6A6A69696867676665656464636262616160 5F5F5E5E5D5C5C5B5B5A5A59585857575656555454535352525151504F4F4E4E4D4D4C4C4B4B4A4A 49494848474746454544444343424242414140403F3F3E3E3D3D3C3C3B3B3A3A3939393838373736 3635353534343333323232313130302F2F2F2E2E2D2D2D2C2C2B2B2B2A2A29292928282827272626 2625252524242423232222222121212020201F1F1F1E1E1E1D1D1D1C1C1C1C1B1B1B1A1A1A191919 19181818171717171616161515151514141414131313131212121211111111101010100F0F0F0F0F 0E0E0E0E0D0D0D0D0D0C0C0C0C0C0B0B0B0B0B0A0A0A0A0A0A090909090908080808080808070707 07070706060606060606050505050505050504040404040404040403030303030303030303030202 02020202020202020202010101010101010101010101010101010101010100000000000000000000 000000000000000000000000000000000000 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9 D9D8D7D6D5D4D3D2D1D0CFCFCECDCCCBCAC9C8C7C7C6C5C4C3C2C1C0C0BFBEBDBCBBBABAB9B8B7B6 B5B5B4B3B2B1B0B0AFAEADACACABAAA9A8A7A7A6A5A4A3A3A2A1A0A09F9E9D9C9C9B9A9999989796 9695949393929190908F8E8D8D8C8B8A8A89888887868585848383828180807F7E7E7D7C7C7B7A7A 7978787776767574747372727170706F6E6E6D6C6C6B6A6A69696867676665656464636262616160 5F5F5E5E5D5C5C5B5B5A5A59585857575656555454535352525151504F4F4E4E4D4D4C4C4B4B4A4A 49494848474746454544444343424242414140403F3F3E3E3D3D3C3C3B3B3A3A3939393838373736 3635353534343333323232313130302F2F2F2E2E2D2D2D2C2C2B2B2B2A2A29292928282827272626 2625252524242423232222222121212020201F1F1F1E1E1E1D1D1D1C1C1C1C1B1B1B1A1A1A191919 19181818171717171616161515151514141414131313131212121211111111101010100F0F0F0F0F 0E0E0E0E0D0D0D0D0D0C0C0C0C0C0B0B0B0B0B0A0A0A0A0A0A090909090908080808080808070707 07070706060606060606050505050505050504040404040404040403030303030303030303030202 02020202020202020202010101010101010101010101010101010101010100000000000000000000 000000000000000000000000000000000000 > 4 %_Br [ 0 0 0 0 1 1 1 2 28 0 %_Bs 0.0118 0.9608 0.9137 0 1 0 0 2 50 100 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Unnamed gradient 2) (Unnamed gradient 2) 1 6 Bd [ < 03030303040404040404040404040404040505050505050505050606060606060606060606060606 06060606060606060606060606060505050505040404040404040404040404050505050606060606 06070707070707070707070606060606050505050505050505050505050505060606060607070707 07070707070707060606060605050505050505050505050505060606060707070707070707070707 07060606060505050404040404040404040505060606060707070707070707070707060606060505 04040403020202020203030404050506060607070707070707070707070707060606060505040403 03030303030304050506060607070708 > < F5F5F4F4F4F4F4F3F3F3F2F2F1F1F0F0EFEFEEEDEDECEBEAEAE9E8E7E6E5E4E4E3E2E1E0DFDEDDDB DAD9D8D7D6D5D4D2D1D0CFCECDCBCAC9C8C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A898887 868584838281807F7E7D7C7B7A797877767574737271706F6E6D6B6A696867666564636261605F5E 5D5C5B5A595857565655545251504F4E4D4C4B4A4948464544434241403F3E3D3C3B3A3A39383736 353434333231302F2E2D2B2A2928272524232221201F1E1D1C1B1A19181716151413121211100F0F 0E0D0C0C0B0A0A090808070706060505 > 0.9137 0 1 < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 0 4 %_Br < 0808090A0A0B0C0C0D0E0E0F101011121313141516171818191A1B1C1D1E1F1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F6061626364666768696A6B6C6D6E6F707172737474757677 78797A7B7C7D7E7F8081838485868788898A8B8C8E8F909192939495969798999A9B9C9D9E9FA0A1 A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BBBCBDBEC0C1C2C3C4C5C7C8C9CACBCC CDCECFD0D1D2D3D4D5D6D6D7D8D9DADBDBDCDDDEDEDFE0E0E1E2E2E3E3E4E4E5E6E6E6E7E7E8E8E9 E9E9EAEAEAEAEBEBEBEBEBEBECECECEC > < 05050505050505040404040404040404030303030303020202020202010101010000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 > < E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEBEBEBEBEBEBECECECECECEDEDEDEDEEEEEEEEEFEF EFF0F0F0F1F1F1F2F2F2F3F3F3F3F4F4F4F5F5F5F5F6F6F6F7F7F7F7F8F8F8F8F9F9F9F9FAFAFAFA FBFBFBFBFBFBFBFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFD FDFDFDFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF > 0 < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 1 0 4 %_Br < ECECECECECECECECECECEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAE9E9E9E9E9E8E8E8E8E8E7E7E7E7 E7E6E6E6E6E5E5E5E5E5E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E2E2E2E2E2E2E2E2E2E2E2E2E2 E2E2E2E2E2E2E2E2E2E2E2E2E2E2E3E3E3E4E4E4E5E5E6E6E7E7E8E8E9EAEAEBEBECEDEEEEEFF0F0 F0F0F0F0F0F1F1F1F1F1F1F1F0EFEEEDEDECEBEAEAE9E8E7E7E6E6E5E4E4E3E3E2E1E1E0E0DFDFDF DEDEDDDDDDDCDCDCDBDBDBDBDBDBDBDBDBDCDCDCDDDDDDDEDEDFDFE0E0E1E1E2E3E3E4E5E6E6E7E8 E9E9E9E9E9E9E9E9E9E9E9E9E8E7E6E6E5E4E3E2E2E1E0E0DFDEDEDDDDDCDCDBDBDADAD9D9D9D8D8 D8D7D7D7D7D6D6D6D6D6D5D5D5D5D5D5 > 0 < FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFDFDFDFDFCFCFCFBFBFBFAFAF9F9F9F8F8F7F7F6F6F5F5F4 F4F3F3F2F1F1F0F0EFEEEDEDECEBEAE9E8E7E5E4E3E2E1E0DFDEDDDCDBDADAD9D8D7D6D5D4D3D2D1 D0CFCDCCCBCAC8C7C6C4C3C1BFBDBBB9B7B4B2B0AEACAAA8A6A4A2A09E9C9A98969492908E8C8A89 87858381807E7C7A7977757372706E6C6B6967666462615F5E5C5A595756545351504E4D4B4A4847 46444341403E3D3B3A3837353432312F2E2C2B29282625242221201E1D1C1A191817151413121110 0E0D0C0B0A0908070605040302010000 > 0 < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101 > 1 < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 4 %_Br < D5D5D6D7D8D9DADBDDDEDFDFDFDFDFDEDEDEDDDDDCDCDCDBDBDBDBDADADADADADBDBDBDCDCDDDEDE DFE0E1E2E3E4E6E8E9E9EAEBEAEAE9E8E8E7E7E6E6E5E5E4E4E3E2E1E0E0DFDFDFDFDFDFE0E0E1E2 E3E5E7E8EBEDEFF1F2F4F5F4F3F1EFEDEBEAE8E7E6E5E4E3E2E2E2E2E2E2E2E3E4E5E7E8EAEBEBEB EBEBEAEAEAEAE9E9E9E9E9E8E8E8E8E8E7E7E7E7E8E8E9E9EAEAEBEBEBEAEAEAEAEAEAEAEAEAEBEB ECEDEEEFF1F3F5F6F7F8F9FBFCFCFCF9F7F6F4F2F1F0EEEEEDECECEBEBEBEBECECEDEDEEEEEFEFEF EFEFEFEFEFF0F0F0F1F1F2F3F3F4F5F6F7F8F9FBFCFDFDFEFFFFFFFFFFFDFCFBFBFAF9F8F8F7F7F6 F6F6F5F5F5F5F4F4F4F4F4F4F4F4F4F4 > < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000101010101020202020303030404040405050505060606060707 0707070707070708090A0B0C0E11131517191B1D1F21232527282A2B2D2E3031323334353637383A 3C3D3F4042444547494A4C4E4F5153555658595B5C5E5F606263646667696A6C6D6F707273757677 797A7B7D7E7F80818384858687898A8C8E9091939597989A9C9D9FA0A2A3A4A6A7A8AAABACAEAFB0 B2B4B5B7B9BABCBDBFC1C2C4C5C7C8CACBCCCECFD1D2D3D5D6D7D8DADBDCDDDEDFE1E2E2E3E4E5E6 E7E7E8E9E9EAEAEBEBEBECECECECECED > 0 0 < 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 1 4 %_Br < F4F4F4F3F3F3F3F3F3F3F3F3F3F3F3F2F2F2F2F2F2F1F1F1F1F1F0F0F0F0EFEFEFEEEEEEEDEDEDEC ECECEBEBEAEAE9E9E8E8E7E7E6E6E5E4E3E3E2E1E0DFDEDDDBDAD9D8D6D5D4D3D1D0CFCECCCBCAC8 C7C6C5C3C2C1BFBEBDBBBAB9B7B6B5B3B2B0AFAEACABAAA8A7A6A4A3A1A09E9D9B9A989695939290 8F8D8C8A898786858382817F7E7D7B7A79787675747371706F6E6C6B6A686766646362615F5E5C5B 5A585755545351504E4D4C4A494746454342413F3E3D3B3A393736353332312F2E2D2B2A29272625 242321201F1E1E1D1C1B1A191817171615141413121111100F0F0E0D0D0C0B0B0A0A090908070706 06060505040404030303030202020202 > < EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEF EFEFF0F0F0F0F0F0F0F0F1F1F1F1F1F1F1F2F2F2F2F2F2F3F3F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4 F4F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F7F7F7F7F7F7F8F8F8F8F9F9F9F9F9F9F9F9F9F9F9F8 F8F8F7F7F6F6F6F5F5F5F5F4F4F4F3F3F3F3F2F2F2F2F1F1F1F1F0F0F0F0F0EFEFEFEFEFEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFF0F0F0 F0F0F0F1F1F1F1F1F2F2F2F2F2F2F3F3 > 0 0 < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000001010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010202020202020202 02020202020202020202020202020202020202020202020202020202020202020202020202020202 02020202020202020202020202020202 > 1 4 %_Br [ 0.0118 0.9608 0.9137 0 1 0 0 2 50 0 %_Bs 0.0314 0.0196 0.9137 0 1 1 0 2 50 20 %_Bs 0.9255 0 1 0 0 1 0 2 50 40 %_Bs 0.8353 0 0 0 0.0039 1 1 2 50 60 %_Bs 0.9569 0.9294 0 0 0 0 1 2 50 80 %_Bs 0.0078 0.9529 0 0 1 0.0078 1 2 50 100 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Unnamed gradient 37) (Unnamed gradient 37) 1 2 Bd [ < C4C4C5C4C5C5C5C6C6C6C6C6C7C6C7C7C6C6C6C6C5C5C5C4C4C4C3C3C2C2C2C1C1C0C0BFBFBEBDBD BCBCBBBABAB9B9B8B7B7B5B5B4B2B2B1B1AFAFAEACACABABAAA9A8A7A7A6A6A4A3A3A2A2A1A0A09E 9F9E9E9C9B9B9A9A9998989797959594939392929191908E8E8D8D8C8C8B89898888878785848483 8281817F7E7E7D7C7B7B797977767674737272706E6E6D6C6A6A6968666564626260605E5D5C5A59 575756565555545453525150504F4F4E4E4D4D4C4B4B4A4A49484847464645454444434343424242 424141404040403F3F3F3F3E3E3E3D3D3D3D3C3C3B3B3B3B3A3A3A3A393938383838373736363636 3535353534343333333332323232323131303130302F2F2F2F2E2E2E2D2D2D2D2C2C2C2B2B2A2A2A 2A2A > < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000101010101010101020303 03040505060709090A0B0D0E0E101112121415161618191B1C1C1D1F20202123242426272828292B 2C2C2D2F3030313233333536373738393A3A3B3D3E3E3F4041414243444546474848494A4B4B4C4D 4E4E5051515254555658595B5A5C5D5E5F61626264666767696A6B6C6E6F7071737374767878797B 7B7D7E7F80828383858686888A8A8B8D8D8E909192939595969798999B9B9C9D9E9FA0A0A2A3A4A5 A6A6A8A9A9AAACACADADAFB0B0B1B2B2B4B5B5B6B6B8B9B9BABBBCBDBDBFBFC0C0C2C3C3C4C4C6C6 C7C7 > < 0202020303030404050505060607070808090A0A0B0B0C0D0D0E0E0F101011121313141415161717 18181A1A1B1C1C1E1E1F2021222324252526262728292A2B2C2D2E2F30313233343436373738393A 3B3C3D3E3F40404242434243454546474849494A4B4C4D4D4E4F5050515253545454555556575858 595A5B5B5C5D5E5F5F616160616263636465666666686869696B6A6B6B6C6D6D6E6F707071727372 727475767778797A7C7D7E7D7F808183848586878988898B8C8D8F9091929494959798999A9C9D9F 9FA0A2A3A5A6A8A9A9AAACAEAFB1B2B2B4B5B7B8BABBBBBDBEC0C1C3C4C4C6C7C9CACBCBCDCED0D1 D3D3D4D5D7D8D8DADBDDDEDEDFE1E2E4E3E5E6E7E7E9EAEBEBECEDEEEEEEEFEFF0F0F0F1F1F2F2F2 F2F3 > < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000101010101010102020202020303030304040404050505050606060607070708080909090A 0A0A0B0B0C0C0D0D0E0E0F0F101011121213131415151617181819191A1B1B1C1D1E1E1F20212222 23242424242424242424242424242424242424242424242423242323232323232322222121212120 201F1F1F1F1E1E1D1D1D1D1C1B1B1B1B1A1A19191919181817171717161616161515151514141414 13131313121212121111111110101010100F0F0F0F0E0E0E0E0D0D0D0D0D0D0D0C0C0C0C0C0B0B0B 0B0B > < 33343435353637373838393A3A3B3B3C3D3D3E3E3F40404141424343444445464647474848494A4A 4B4B4C4D4D4E4E4F50505151525353545455555657575858595A5A5B5B5C5C5D5E5E5F5F60616162 626363646565666667686869696A6A6B6C6C6D6D6E6E6F7070717172727374747575767677787879 797A7A7B7C7C7D7D7E7E7F7F80818182828383848585868687878888898A8A8B8B8C8C8D8D8E8F8F 909091919292939394959596969797989899999A9B9B9C9C9D9D9E9E9F9FA0A0A1A2A2A3A3A4A4A5 A5A6A6A7A7A8A8A9A9AAAAABACACADADAEAEAFAFB0B0B1B1B2B2B3B3B4B4B5B5B6B6B7B7B8B8B9B9 BABABBBBBCBCBDBDBEBEBFBFC0C0C0C1C1C2C2C3C3C4C4C5C5C6C6C6C7C7C8C8C9C9C9CACACBCBCB CCCC > < FFFEFDFDFCFBFAF9F9F8F7F6F5F5F4F3F2F1F1F0EFEEEDEDECEBEAE9E9E8E7E6E6E5E4E3E2E2E1E0 DFDEDEDDDCDBDADAD9D8D7D7D6D5D4D3D3D2D1D0CFCFCECDCCCCCBCAC9C8C8C7C6C5C5C4C3C2C1C1 C0BFBEBEBDBCBBBBBAB9B8B7B7B6B5B4B4B3B2B1B1B0AFAEADADACABAAAAA9A8A7A7A6A5A4A4A3A2 A1A1A09F9E9E9D9C9B9B9A999898979695959493929291908F8F8E8D8C8C8B8A8989888786868584 8383828181807F7E7E7D7C7B7B7A79797877767675747373727171706F6E6E6D6C6C6B6A69696867 67666565646362626160605F5E5E5D5C5C5B5A5959585757565555545353525151504F4F4E4D4D4C 4B4B4A494948474746464544444342424140403F3F3E3D3D3C3C3B3A3A3939383837363635353434 3333 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1 B0AFAEADACABAAA9A8A7A7A6A5A4A3A2A1A09F9E9D9C9B9A99989796959493929191908F8E8D8C8B 8A89888786858483828180807F7E7D7C7B7A79787776757473727271706F6E6D6C6B6A6968676666 6564636261605F5E5D5C5B5B5A59585756555453525251504F4E4D4C4B4A49494847464544434241 41403F3E3D3C3B3A3A39383736353434333231302F2E2E2D2C2B2A2928282726252423232221201F 1E1E1D1C1B1A1A1918171616151413121211100F0F0E0D0C0C0B0A09090807060605040403020201 0100 > 4 %_Br [ 0.7686 0 0.0078 0 0.2 1 1 2 46.6292 0.5618 %_Bs 0.1647 0.7804 0.9529 0.0431 0.8 0.2 0 2 50 100 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (White, Black) (White, Black) 0 2 Bd [ 0 0 0 < 00000000000000000000000000000000000000000000000101010101010101010101010102020202 02020202020202030303030303040404040404040505050505050606060607070707080808090909 090A0A0A0A0B0B0B0C0C0D0D0D0E0E0F0F0F101011111112121313141515161617171819191A1A1B 1B1C1D1D1E1F202021222323242526272728292A2B2C2D2E2F303132333435363738393A3B3C3D3E 3F404142434445464748494A4C4D4E4F50525354565758595B5C5D5F606263656668696B6C6E7071 737576787A7C7D7F81838587898B8D8F919395979A9C9EA0A3A5A7AAACAFB1B4B7B9BCBFC2C5C7CA D0D6DBE0E4E8ECF0F2F4F6F7F9FBFDFF > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 4 %_Br [ 0 0 0 1 0 0 0 2 50 100 %_Bs 0 0 0 0 1 1 1 2 50 0 %_Bs BD %AI5_EndGradient %AI5_End_NonPrinting-- %AI5_Begin_NonPrinting Np %AI3_BeginPattern: (Azure Rings) (Azure Rings) 22.5 22.5 58.5 58.5 [ %AI3_Tile (0 O 0 R 0 0 1 Xa 0 0 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1.75 w 4 M []0 d 0 XR 40.5 58.5 m 40.5 48.5586 32.4409 40.5 22.5 40.5 c 12.5591 40.5 4.5 48.5586 4.5 58.5 c 4.5 68.4414 12.5591 76.5 22.5 76.5 c 32.4409 76.5 40.5 68.4414 40.5 58.5 c s 40.5 22.5 m 40.5 12.5586 32.4409 4.5 22.5 4.5 c 12.5591 4.5 4.5 12.5586 4.5 22.5 c 4.5 32.4414 12.5591 40.5 22.5 40.5 c 32.4409 40.5 40.5 32.4414 40.5 22.5 c s 40.5 40.5 m 40.5 30.5586 32.4409 22.5 22.5 22.5 c 12.5591 22.5 4.5 30.5586 4.5 40.5 c 4.5 50.4414 12.5591 58.5 22.5 58.5 c 32.4409 58.5 40.5 50.4414 40.5 40.5 c s 58.5 58.5 m 58.5 48.5586 50.4409 40.5 40.5 40.5 c 30.5591 40.5 22.5 48.5586 22.5 58.5 c 22.5 68.4414 30.5591 76.5 40.5 76.5 c 50.4409 76.5 58.5 68.4414 58.5 58.5 c s 58.5 22.5 m 58.5 12.5586 50.4409 4.5 40.5 4.5 c 30.5591 4.5 22.5 12.5586 22.5 22.5 c 22.5 32.4414 30.5591 40.5 40.5 40.5 c 50.4409 40.5 58.5 32.4414 58.5 22.5 c s 58.5 40.5 m 58.5 30.5586 50.4409 22.5 40.5 22.5 c 30.5591 22.5 22.5 30.5586 22.5 40.5 c 22.5 50.4414 30.5591 58.5 40.5 58.5 c 50.4409 58.5 58.5 50.4414 58.5 40.5 c s 76.5 58.5 m 76.5 48.5586 68.4409 40.5 58.5 40.5 c 48.5591 40.5 40.5 48.5586 40.5 58.5 c 40.5 68.4414 48.5591 76.5 58.5 76.5 c 68.4409 76.5 76.5 68.4414 76.5 58.5 c s 76.5 22.5 m 76.5 12.5586 68.4409 4.5 58.5 4.5 c 48.5591 4.5 40.5 12.5586 40.5 22.5 c 40.5 32.4414 48.5591 40.5 58.5 40.5 c 68.4409 40.5 76.5 32.4414 76.5 22.5 c s 76.5 40.5 m 76.5 30.5586 68.4409 22.5 58.5 22.5 c 48.5591 22.5 40.5 30.5586 40.5 40.5 c 40.5 50.4414 48.5591 58.5 58.5 58.5 c 68.4409 58.5 76.5 50.4414 76.5 40.5 c s %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Blue Tablecloth) (Blue Tablecloth) 0 0 12 12 [ %AI3_Tile (0 O 0 R 0 0 1 Xa 0 0 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 6 6 m 0 6 L 0 12 L 6 12 L 6 6 L f %AI6_EndPatternLayer ) & (0 O 0 R 0.6 0.6 1 Xa 0.6 0.6 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 12 6 m 6 6 L 6 12 L 12 12 L 12 6 L f %AI6_EndPatternLayer ) & (0 O 0 R 1 1 1 Xa 1 1 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 12 0 m 6 0 L 6 6 L 12 6 L 12 0 L f %AI6_EndPatternLayer ) & (0 O 0 R 0.6 0.6 1 Xa 0.6 0.6 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 6 0 m 0 0 L 0 6 L 6 6 L 6 0 L f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Camouflage) (Camouflage) 1 1 73 73 [ %AI3_Tile (0 O 0 R 0.3922 0.6039 0.1451 Xa 0.3922 0.6039 0.1451 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 1 73 m 1 1 L 73 1 L 73 73 L 1 73 L f %AI6_EndPatternLayer ) & (0 O 0 R 0.4039 0.4 0.0745 Xa 0.4039 0.4 0.0745 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 18.5449 73 m 18.5449 1 L 46.7832 1 L 46.7832 73 L 18.5449 73 L f %AI6_EndPatternLayer ) & (0 O 0 R 0.8 0.8 0.1059 Xa 0.8 0.8 0.1059 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 11.9512 1 m 11.9512 4.7129 9.2314 2.8813 9.2314 6.5938 c 9.2314 10.2334 4.25 10.2334 4.25 13.8735 c 4.25 17.4858 10.0313 17.4858 10.0313 21.0991 c 10.0313 24.832 10.208 24.832 10.208 28.5654 c 10.208 32.3071 5.5205 32.3071 5.5205 36.0469 c 5.5205 39.7021 11.8838 39.7021 11.8838 43.356 c 11.8838 47.0566 7.4609 47.0566 7.4609 50.7568 c 7.4609 54.4043 5.7959 54.4043 5.7959 58.0542 c 5.7959 61.7686 4.6631 61.7686 4.6631 65.4805 c 4.6631 69.1636 11.9512 69.3184 11.9512 73 C 27.9268 73 L 27.9268 69.3184 22.0635 69.1636 22.0635 65.4805 c 22.0635 61.7686 28.6631 61.7686 28.6631 58.0542 c 28.6631 54.4043 25.1553 54.4043 25.1553 50.7568 c 25.1553 47.0566 28.8145 47.0566 28.8145 43.356 c 28.8145 39.7021 22.1191 39.7021 22.1191 36.0469 c 22.1191 32.3071 26.3945 32.3071 26.3945 28.5654 c 26.3945 24.832 24.4248 24.832 24.4248 21.0991 c 24.4248 17.4858 20.3838 17.4858 20.3838 13.8735 c 20.3838 10.2334 24.6055 10.2334 24.6055 6.5938 c 24.6055 2.8813 27.9268 4.7129 27.9268 1 C 11.9512 1 L f %AI6_EndPatternLayer ) & (0 O 0 R 0.0784 0.4157 0.1647 Xa 0.0784 0.4157 0.1647 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 41.875 1 m 41.875 4.7134 42.3867 2.8818 42.3867 6.5938 c 42.3867 10.2334 40.5947 10.2334 40.5947 13.8735 c 40.5947 17.4858 41.5742 17.4858 41.5742 21.0991 c 41.5742 24.832 43.6484 24.832 43.6484 28.5659 c 43.6484 32.3076 39.1709 32.3076 39.1709 36.0469 c 39.1709 39.7026 39.7549 39.7026 39.7549 43.356 c 39.7549 47.0566 45.3896 47.0566 45.3896 50.7568 c 45.3896 54.4043 40.1055 54.4043 40.1055 58.0542 c 40.1055 61.7686 40.6289 61.7686 40.6289 65.4805 c 40.6289 69.1636 41.875 69.3184 41.875 73 C 59.0752 73 L 59.0752 69.4219 53.4805 70.1934 53.4805 66.6143 c 53.4805 62.9136 55.8945 62.9136 55.8945 59.2153 c 55.8945 55.502 61.0059 55.502 61.0059 51.7886 c 61.0059 48.1489 60.5635 48.1489 60.5635 44.5103 c 60.5635 40.897 59.9277 40.897 59.9277 37.2842 c 59.9277 33.5508 56.3662 33.5508 56.3662 29.8169 c 56.3662 26.0762 61.0908 26.0762 61.0908 22.3354 c 61.0908 18.6812 52.6025 18.6812 52.6025 15.0264 c 52.6025 11.3262 55.7461 11.3262 55.7461 7.6265 c 55.7461 3.978 59.0752 4.6484 59.0752 1 C 41.875 1 L f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Clown Attack) (Clown Attack) 5.25 11 41.25 47 [ %AI3_Tile (0 O 0 R 0 1 0 Xa 0 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 17.5 18.25 m 17.5 15.2119 15.0376 12.75 12 12.75 c 8.9624 12.75 6.5 15.2119 6.5 18.25 c 6.5 21.2881 8.9624 23.75 12 23.75 c 15.0376 23.75 17.5 21.2881 17.5 18.25 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 0 1 Xa 1 0 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 22.25 34.125 m 22.25 31.2939 19.9556 29 17.125 29 c 14.2944 29 12 31.2939 12 34.125 c 12 36.9561 14.2944 39.25 17.125 39.25 c 19.9556 39.25 22.25 36.9561 22.25 34.125 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 0 0 Xa 1 0 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 30 31.625 m 30 29.4854 28.2646 27.75 26.125 27.75 c 23.9849 27.75 22.25 29.4854 22.25 31.625 c 22.25 33.7646 23.9849 35.5 26.125 35.5 c 28.2646 35.5 30 33.7646 30 31.625 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 1 0 Xa 1 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 23.25 24.5 m 23.25 22.4287 21.5713 20.75 19.5 20.75 c 17.4287 20.75 15.75 22.4287 15.75 24.5 c 15.75 26.5713 17.4287 28.25 19.5 28.25 c 21.5713 28.25 23.25 26.5713 23.25 24.5 c f %AI6_EndPatternLayer ) & (0 O 0 R 0 0 1 Xa 0 0 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 36 22.25 m 36 19.0742 33.4258 16.5 30.25 16.5 c 27.0742 16.5 24.5 19.0742 24.5 22.25 c 24.5 25.4258 27.0742 28 30.25 28 c 33.4258 28 36 25.4258 36 22.25 c f %AI6_EndPatternLayer ) & (0 O 0 R 0.8 0.7922 0.2078 Xa 0.8 0.7922 0.2078 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 24.25 16.5 m 24.25 14.8438 22.9067 13.5 21.25 13.5 c 19.5933 13.5 18.25 14.8438 18.25 16.5 c 18.25 18.1563 19.5933 19.5 21.25 19.5 c 22.9067 19.5 24.25 18.1563 24.25 16.5 c f %AI6_EndPatternLayer ) & (0 O 0 R 0 1 1 Xa 0 1 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 37.25 43.875 m 37.25 39.5264 33.7236 36 29.375 36 c 25.0264 36 21.5 39.5264 21.5 43.875 c 21.5 48.2236 25.0264 51.75 29.375 51.75 c 33.7236 51.75 37.25 48.2236 37.25 43.875 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 0.8 0 Xa 1 0.8 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 38.75 26.625 m 38.75 25.7275 38.0225 25 37.125 25 c 36.2275 25 35.5 25.7275 35.5 26.625 c 35.5 27.5225 36.2275 28.25 37.125 28.25 c 38.0225 28.25 38.75 27.5225 38.75 26.625 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 0.4 0 Xa 1 0.4 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 19.875 42 m 19.875 41.1025 19.1475 40.375 18.25 40.375 c 17.3525 40.375 16.625 41.1025 16.625 42 c 16.625 42.8975 17.3525 43.625 18.25 43.625 c 19.1475 43.625 19.875 42.8975 19.875 42 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 0 0 Xa 1 0 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 12.75 28.125 m 12.75 26.8135 11.6865 25.75 10.375 25.75 c 9.0635 25.75 8 26.8135 8 28.125 c 8 29.4365 9.0635 30.5 10.375 30.5 c 11.6865 30.5 12.75 29.4365 12.75 28.125 c f %AI6_EndPatternLayer ) & (0 O 0 R 0 1 0 Xa 0 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 43.25 33 m 43.25 30.998 41.627 29.375 39.625 29.375 c 37.623 29.375 36 30.998 36 33 c 36 35.002 37.623 36.625 39.625 36.625 c 41.627 36.625 43.25 35.002 43.25 33 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 1 0 Xa 1 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 13.25 43.75 m 13.25 40.9883 11.0117 38.75 8.25 38.75 c 5.4883 38.75 3.25 40.9883 3.25 43.75 c 3.25 46.5117 5.4883 48.75 8.25 48.75 c 11.0117 48.75 13.25 46.5117 13.25 43.75 c f %AI6_EndPatternLayer ) & (0 O 0 R 0.6 0 0.8 Xa 0.6 0 0.8 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 6.5 22.25 m 6.5 20.7314 5.2686 19.5 3.75 19.5 c 2.2314 19.5 1 20.7314 1 22.25 c 1 23.7686 2.2314 25 3.75 25 c 5.2686 25 6.5 23.7686 6.5 22.25 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 1 0.4 Xa 1 1 0.4 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 34.4883 32.75 m 34.4883 31.9277 33.8223 31.2617 33 31.2617 c 32.1777 31.2617 31.5117 31.9277 31.5117 32.75 c 31.5117 33.5723 32.1777 34.2383 33 34.2383 c 33.8223 34.2383 34.4883 33.5723 34.4883 32.75 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 1 0 Xa 1 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 49.25 43.75 m 49.25 40.9883 47.0117 38.75 44.25 38.75 c 41.4883 38.75 39.25 40.9883 39.25 43.75 c 39.25 46.5117 41.4883 48.75 44.25 48.75 c 47.0117 48.75 49.25 46.5117 49.25 43.75 c f %AI6_EndPatternLayer ) & (0 O 0 R 0.6 0 0.8 Xa 0.6 0 0.8 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 42.5 22.25 m 42.5 20.7314 41.2686 19.5 39.75 19.5 c 38.2314 19.5 37 20.7314 37 22.25 c 37 23.7686 38.2314 25 39.75 25 c 41.2686 25 42.5 23.7686 42.5 22.25 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 1 0 Xa 1 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 49.25 7.752 m 49.25 4.9902 47.0117 2.752 44.25 2.752 c 41.4883 2.752 39.25 4.9902 39.25 7.752 c 39.25 10.5137 41.4883 12.752 44.25 12.752 c 47.0117 12.752 49.25 10.5137 49.25 7.752 c f %AI6_EndPatternLayer ) & (0 O 0 R 0 1 1 Xa 0 1 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 37.25 7.875 m 37.25 3.5264 33.7236 0 29.375 0 c 25.0264 0 21.5 3.5264 21.5 7.875 c 21.5 12.2236 25.0264 15.75 29.375 15.75 c 33.7236 15.75 37.25 12.2236 37.25 7.875 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 1 0 Xa 1 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 13.25 7.75 m 13.25 4.9883 11.0117 2.75 8.25 2.75 c 5.4883 2.75 3.25 4.9883 3.25 7.75 c 3.25 10.5117 5.4883 12.75 8.25 12.75 c 11.0117 12.75 13.25 10.5117 13.25 7.75 c f %AI6_EndPatternLayer ) & (0 O 0 R 0 1 0 Xa 0 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 7.25 33 m 7.25 30.998 5.627 29.375 3.625 29.375 c 1.623 29.375 0 30.998 0 33 c 0 35.002 1.623 36.625 3.625 36.625 c 5.627 36.625 7.25 35.002 7.25 33 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 0.6 1 Xa 1 0.6 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 39.6533 16.0381 m 39.6533 15.1064 38.8975 14.3506 37.9658 14.3506 c 37.0342 14.3506 36.2783 15.1064 36.2783 16.0381 c 36.2783 16.9697 37.0342 17.7256 37.9658 17.7256 c 38.8975 17.7256 39.6533 16.9697 39.6533 16.0381 c f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Pyramids) (Pyramids) 1 1 19.5 19.5 [ %AI3_Tile (0 O 0 R 0.8 0.8 0.8 Xa 0.8 0.8 0.8 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 1 19.5 m 10.25 10.25 l 19.5 19.5 l 1 19.5 l f %AI6_EndPatternLayer ) & (0 O 0 R 0.2 0.2 0.2 Xa 0.2 0.2 0.2 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 19.5 1 m 10.25 10.25 l 1 1 l 19.5 1 l f %AI6_EndPatternLayer ) & (0 O 0 R 0.6 0.6 0.6 Xa 0.6 0.6 0.6 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 1 1 m 10.25 10.25 l 1 19.5 l 1 1 l f %AI6_EndPatternLayer ) & (0 O 0 R 0.4 0.4 0.4 Xa 0.4 0.4 0.4 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 19.5 19.5 m 10.25 10.25 l 19.5 1 l 19.5 19.5 l f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Red Stripe) (Red Stripe) 37 19 73 55 [ %AI3_Tile (0 O 0 R 1 0 0 Xa 1 0 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 18 w 4 M []0 d 0 XR 37 37 m 73 37 l S %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI5_End_NonPrinting-- %AI5_BeginPalette 0 0 Pb 0 0 0 Xa ([Registration]) Pc 1 1 1 Xa (White) Pc 0 0 0 Xa (Black) Pc 0.6 0.6 0.6 Xa (Gray) Pc 0.8 0.8 0.8 Xa (Light Gray) Pc 0 1 1 Xa (Bright Blue) Pc 0.6 1 1 Xa (Light Blue) Pc 0.8 1 1 Xa (Pale Blue) Pc 1 0 1 Xa (Violet) Pc 1 0.4 1 Xa (Light Violet) Pc 1 0.8 1 Xa (Pale Violet) Pc 1 1 0 Xa (Yellow) Pc 1 1 0.4 Xa (Light Yellow) Pc 1 1 0.6 Xa (Pale Yellow) Pc 0.6 0.2 0 Xa (Brown) Pc 0.8 0.4 0.2078 Xa (Light Brown) Pc 1 0.6 0.4 Xa (Pale Brown) Pc 0 0 1 Xa (Blue) Pc 0.4 0.4 1 Xa (Faded Blue) Pc 0.8 0.8 1 Xa (Faded Pale Blue) Pc 1 0 0 Xa (Red) Pc 1 0.4 0.4 Xa (Light Red) Pc 1 0.6 0.6 Xa (Mauve) Pc 0 0.6 0 Xa (Forest Green) Pc 0.2 0.8 0.2 Xa (Green) Pc 0.6 1 0.4 Xa (Pale Green) Pc 0 1 0 Xa (Bright Green) Pc 0.4 1 0.4 Xa (Light Bright Green) Pc 0.5922 1 0.6 Xa (Pale Light Green) Pc 0.6 0 0.8 Xa (Purple) Pc 0.6 0.4 0.8 Xa (Periwinkle) Pc 0.8 0.6 0.8 Xa (Lavender) Pc 1 0.6 0 Xa (Orange) Pc 1 0.8 0.2 Xa (Light Orange) Pc 1 0.8 0.6 Xa (Light Pale Orange) Pc Bb 2 (White, Black) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (White, Black) Pc Bb 0 0 0 0 Bh 2 (Black, White Radial) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (Black, White Radial) Pc Bb 2 (Steel Bar II) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (Steel Bar II) Pc Bb 2 (RGB Rainbow) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (RGB Rainbow) Pc Bb 0 0 0 0 Bh 2 (Nova) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (Nova) Pc Bb 2 (Sunrise) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (Sunrise) Pc (Blue Tablecloth) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Blue Tablecloth) Pc (Pyramids) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Pyramids) Pc (Azure Rings) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Azure Rings) Pc (Red Stripe) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Red Stripe) Pc (Clown Attack) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Clown Attack) Pc (Camouflage) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Camouflage) Pc PB %AI5_EndPalette %%EndSetup %AI5_BeginLayer 1 1 1 1 0 0 1 255 79 79 Lb (Layer 2) Ln 0 A u *u 0 O 1 1 1 Xa 0 J 0 j 1 w 4 M []0 d 0 XR 324.6348 331.335 m 441.4766 331.335 L 441.4766 331.8389 L 441.9814 331.8389 L 441.9814 454.3018 L 441.9814 454.7969 L 441.4766 454.7969 L 441.4766 454.3018 L 441.4766 454.7969 L 364.3877 454.7969 L 358.4785 468.4741 L 362.9971 468.7559 L 360.6035 469.8906 357.8506 472.0996 355.8008 474.1406 C 364.4795 477.1089 373.7861 478.7188 383.4717 478.7188 C 383.4717 479.2231 L 383.4717 478.7188 L 407.0605 478.7188 428.418 469.1611 443.8799 453.6992 C 459.3418 438.2368 468.9004 416.8799 468.9092 393.2822 C 468.9004 369.6836 459.3418 348.3359 443.8799 332.874 C 428.418 317.4121 407.0605 307.8447 383.4717 307.8447 C 360.668 307.8447 339.9551 316.7803 324.6348 331.335 C F 1 D 441.4766 331.335 m 441.9814 331.335 L 441.9814 331.8389 L 441.4766 331.8389 L 441.4766 331.335 L F 0 D 298.0459 391.9229 m 322.8115 391.9229 L 322.8115 333.1182 L 307.7891 348.2617 298.4033 368.9883 298.0459 391.9229 C F 357.3711 454.7969 m 351.333 468.9092 L 350.042 471.9346 L 351.7568 472.6641 353.499 473.3389 355.2695 473.957 C 355.2793 473.6221 355.2842 473.2788 355.2842 472.9292 C 355.2813 470.25 354.9766 467.2207 354.2666 464.9761 C 357.5605 468.0767 L 363.2979 454.7969 L 357.3711 454.7969 L F *U *u 0 0 0 Xa 323.1895 331.335 m 323.3164 331.335 L 324.6348 331.335 L 339.9551 316.7803 360.668 307.8447 383.4717 307.8447 C 407.0605 307.8447 428.418 317.4121 443.8799 332.874 C 459.3418 348.3359 468.9004 369.6836 468.9092 393.2822 C 468.9004 416.8799 459.3418 438.2368 443.8799 453.6992 C 428.418 469.1611 407.0605 478.7188 383.4717 478.7188 C 383.4717 479.7178 L 431.208 479.7178 469.8994 441.0181 469.9082 393.2822 C 469.8994 345.5459 431.208 306.8457 383.4717 306.8457 C 383.4717 307.3496 L 383.4717 306.8457 L 360.0254 306.8457 338.7588 316.1816 323.1895 331.335 C F 383.4717 479.2231 m 383.4717 479.7178 L 383.4717 479.2231 L F 297.0469 391.9229 m 298.0459 391.9229 L 298.4033 368.9883 307.7891 348.2617 322.8115 333.1182 C 322.8115 331.8389 L 323.3164 331.8389 L 322.8115 331.8389 L 322.8115 331.7041 L 307.2012 347.0859 297.4106 368.3633 297.0469 391.9229 C F 349.6504 472.8511 m 350.3916 473.1665 351.1396 473.4727 351.8916 473.7681 C 352.6289 474.043 353.5635 474.3906 354.748 474.8315 C 363.7354 477.9971 373.4004 479.7178 383.4717 479.7178 C 383.4717 478.7188 L 373.7861 478.7188 364.4795 477.1089 355.8008 474.1406 C 355.6074 474.3335 355.4189 474.5254 355.2393 474.7139 C 355.252 474.4678 355.2627 474.2148 355.2695 473.957 C 353.499 473.3389 351.7568 472.6641 350.042 471.9346 C 349.6504 472.8511 L F *U *u 1 1 1 Xa 323.8105 332.334 m 323.8105 391.9229 L 383.5166 391.9229 L 383.5166 392.4229 L 383.5166 391.9229 L 384.2734 391.9229 L 383.9756 392.6162 L 357.7988 453.7979 L 363.7295 453.7979 L 386.082 402.0605 L 381.5732 401.7871 L 384.1826 400.5361 387.2344 398.0161 389.3223 395.8198 C 389.292 396.3872 389.2764 396.9863 389.2764 397.605 C 389.2793 400.2837 389.585 403.313 390.2939 405.5581 C 387 402.4575 L 364.8193 453.7979 L 440.9727 453.7979 L 440.9727 332.334 L 323.8105 332.334 L F 1 D 390.8701 430.5332 m 390.7529 430.0562 390.6992 429.7412 390.6992 429.4258 C 390.6992 429.1382 390.8164 428.7871 391.3467 428.7871 C 391.8057 428.7871 392.6973 429.4351 393.291 430.3618 C 393.1201 430.4971 L 392.5439 429.8398 392.2646 429.5161 391.9951 429.5161 C 391.8604 429.5161 391.7432 429.6152 391.7432 429.8218 C 391.7432 430.0381 393.4082 435.897 394.002 438.291 C 393.9297 438.3628 L 393.2275 438.21 392.5352 438.1108 391.833 438.0479 C 391.833 437.814 L 392.5889 437.7959 392.6787 437.7241 392.6787 437.4092 C 392.6787 437.2202 392.5889 436.8779 392.4717 436.4912 C 391.8867 434.3042 L 391.8604 434.2769 L 391.8057 434.583 391.707 435.0332 390.9326 435.0332 C 389.2949 435.0332 386.9639 432.5132 386.9639 430.4429 C 386.9639 429.7231 387.252 428.814 388.3945 428.814 C 389.0791 428.814 389.8525 429.0479 390.8428 430.5688 C 390.8701 430.5332 L F 395.7656 432.0449 m 397.2334 432.0449 L 404.8203 445.7881 L 403.3525 445.7881 L 395.7656 432.0449 L F 379.0615 432.1348 m 379.3945 432.1348 L 379.5215 432.3691 379.6016 432.5762 379.8896 432.5762 C 380.4844 432.5762 381.3115 432.1802 381.9326 432.1802 C 383.085 432.1802 385.002 432.6929 385.002 434.9429 C 385.002 436.6982 382.4824 438.5342 382.4824 439.8301 C 382.4824 440.8472 383.1484 441.0269 383.5977 441.0269 C 384.9395 441.0269 385.4336 439.8301 385.542 438.6602 C 385.8662 438.6602 L 386.2803 441.522 L 385.9922 441.522 L 385.8926 441.3599 385.7666 441.1528 385.416 441.1528 C 384.7949 441.1528 384.3809 441.5039 383.4541 441.5039 C 381.2666 441.5039 380.9785 439.8569 380.9785 439.209 C 380.9785 437.625 383.4355 435.645 383.4355 434.2861 C 383.4355 433.6021 383.1025 432.6118 381.9512 432.6118 C 380.2773 432.6118 379.9531 434.5107 379.8086 435.4199 C 379.4756 435.4199 L 379.0615 432.1348 L F 409.0859 440.8652 m 409.0859 440.2798 409.0137 439.2632 406.5566 436.644 C 402.8672 432.7021 L 402.8672 432.4048 L 409.1035 432.4048 L 409.9863 434.7271 L 409.6895 434.853 L 409.3828 434.2139 409.1035 433.7461 407.9434 433.7461 C 404.6035 433.7461 L 404.6035 433.8271 L 407.9785 437.2021 L 410.1572 439.3892 410.5977 440.1812 410.5977 441.3511 C 410.5977 442.6738 409.6172 444.2939 407.7539 444.2939 C 407.3125 444.2939 405.0088 444.2222 404.0645 441.4771 C 404.4326 441.3511 L 404.6758 441.792 405.3418 443.0068 406.9258 443.0068 C 408.2764 443.0068 409.0859 441.9541 409.0859 440.8652 C F 0 D 388.1611 430.4971 m 388.1611 431.748 389.4658 434.7178 391.0049 434.7178 C 391.6533 434.7178 391.6533 434.1152 391.6533 433.7998 C 391.6533 432.0898 390.3027 429.48 388.998 429.48 C 388.1611 429.48 388.1611 430.2632 388.1611 430.4971 C F *U *u 0 0 0 Xa 441.4766 331.335 m 441.4766 331.8389 L 441.9814 331.8389 L 441.9814 331.335 L 441.4766 331.335 L F 323.3164 331.335 m 322.8115 331.335 L 322.8115 331.8389 L 323.3164 331.8389 L 322.8115 331.8389 L 322.8115 391.9229 L 323.8105 391.9229 L 323.8105 332.334 L 440.9727 332.334 L 440.9727 453.7979 L 364.8193 453.7979 L 364.3877 454.7969 L 441.4766 454.7969 L 441.4766 454.3018 L 441.4766 454.7969 L 441.9814 454.7969 L 441.9814 454.3018 L 441.9814 331.8389 L 441.4766 331.8389 L 441.4766 331.335 L 323.3164 331.335 L F 357.7988 453.7979 m 357.3711 454.7969 L 363.2979 454.7969 L 363.7295 453.7979 L 357.7988 453.7979 L F *U *u 1 1 1 Xa 167.7378 392.9219 m 169.2417 394.3164 170.0005 396.7065 170.1719 399.0781 C 170.3271 401.5459 169.8667 404.0601 168.5366 405.5371 C 348.6641 472.5972 L 348.7266 472.4517 L 347.29 471.8203 345.8779 471.1528 344.4834 470.4473 C 344.2324 470.8799 L 343.7998 470.6279 L 343.3682 470.376 L 343.5928 469.9897 L 315.9229 455.5776 297.0361 426.6367 297.0361 393.2822 C 297.0361 393.1621 297.0366 393.041 297.0371 392.9219 C 167.7378 392.9219 L F 1 D 270.9448 398.5107 m 270.1982 398.4751 270.1982 397.6919 270.1982 397.6289 C 270.3242 396.6841 271.1699 396.4141 271.8091 396.4141 C 274.2212 396.4141 275.3818 399.7349 275.958 402.2461 C 277.4429 408.8521 L 279.6929 408.8521 L 279.8101 409.5088 L 277.5869 409.5088 L 277.7671 410.562 278.3882 414.207 280.0801 414.207 C 280.3501 414.207 280.5571 414.126 280.5571 413.9639 C 280.5571 413.7388 280.3501 413.7388 280.3501 413.2798 C 280.3501 413.0552 280.4761 412.4971 281.1328 412.4971 C 281.6099 412.4971 281.979 412.9111 281.979 413.3252 C 281.979 413.7388 281.646 414.666 280.1611 414.666 C 277.5601 414.666 276.5342 411.2642 275.9941 409.5088 C 274.104 409.5088 L 273.9512 408.8521 L 275.814 408.8521 L 273.9961 400.1851 L 273.834 399.3569 273.2939 396.8462 271.9712 396.8462 C 271.728 396.8462 271.584 397.0078 271.584 397.1792 C 271.584 397.4038 271.7729 397.4038 271.7729 397.7549 C 271.7729 398.2446 271.2813 398.5127 270.9858 398.5127 C 270.9717 398.5127 270.958 398.5122 270.9448 398.5107 C F 281.52 405.7021 m 281.52 405.4141 279.5313 398.2319 279.5313 397.9438 C 279.5313 397.5571 279.585 397.0889 280.188 397.0889 C 281.043 397.0889 281.583 397.7549 282.2852 398.8081 C 282.105 398.9341 L 281.4302 398.0698 281.1421 397.6831 280.7998 397.6831 C 280.5928 397.6831 280.5928 397.8721 280.5928 397.9619 C 280.5928 398.106 280.7012 398.4839 280.728 398.6011 C 282.8071 406.5659 L 282.7349 406.6382 L 282.0151 406.4668 281.3042 406.3501 280.5928 406.2598 C 280.5928 406.0439 L 280.6416 406.0454 280.6943 406.0464 280.749 406.0464 C 281.0918 406.0464 281.52 406.0044 281.52 405.7021 C F 192.8789 409.0591 m 191.394 408.042 190.8359 406.9712 190.6289 405.4678 C 190.3232 403.1548 190.7368 401.7778 191.2681 400.8418 C 191.6821 400.1489 192.2578 399.6538 193.0229 399.3027 C 194.3818 398.7002 195.3989 398.9248 196.3438 399.2402 C 198.1802 399.834 198.6299 401.2559 198.981 401.8589 C 199.4761 400.5181 199.8091 399.7979 200.3042 399.3208 C 200.6196 399.021 201.001 398.8594 201.4536 399.0996 C 201.3569 398.9248 L 202.8599 398.9248 L 210.6538 413.0371 L 209.1509 413.0371 L 202.4741 400.9478 L 202.5088 402.1289 L 202.1401 402.1289 L 202.0952 401.8589 202.0771 401.1929 201.645 400.7607 C 201.0059 400.1221 200.4658 400.6621 200.2588 400.8418 C 199.8721 401.2378 199.584 401.814 199.4131 402.8042 C 201.7891 409.3472 L 199.9712 409.3472 L 198.6572 405.6748 L 198.6118 405.6748 L 198.5132 406.4761 198.2251 407.3042 197.8291 407.9609 C 197.3521 408.7441 196.5688 409.4009 195.5972 409.5718 C 195.4204 409.6016 195.2295 409.6152 195.0313 409.6152 C 194.2607 409.6152 193.3877 409.4028 192.8789 409.0591 C F 214.8662 407.7539 m 214.8662 407.1777 214.7939 406.1519 212.3369 403.5332 C 208.6382 399.6001 L 208.6382 399.3027 L 214.8838 399.3027 L 215.7568 401.6162 L 215.46 401.7422 L 215.1631 401.1118 214.8838 400.6348 213.7231 400.6348 C 210.3838 400.6348 L 210.3838 400.7251 L 213.7588 404.1001 L 215.937 406.2778 216.3779 407.0698 216.3779 408.249 C 216.3779 409.563 215.3882 411.1831 213.5249 411.1831 C 213.084 411.1831 210.7891 411.1108 209.835 408.3662 C 210.2041 408.249 L 210.4561 408.6899 211.1221 409.896 212.7061 409.896 C 214.0562 409.896 214.8662 408.8428 214.8662 407.7539 C F 0 D 134.6528 392.9219 m 167.5083 405.1538 L 168.7104 404.1611 169.3677 401.6553 169.1729 399.1411 C 169.0112 396.4771 167.9219 393.8848 166.2568 393.084 C 166.3389 392.9219 L 134.6528 392.9219 L F 194.958 399.627 m 194.4092 399.6719 194.1392 399.7979 193.6802 400.248 C 193.1851 400.7432 192.978 401.3999 192.8789 402.0029 C 192.6719 403.1548 192.5908 404.3071 192.7349 405.4409 C 192.8789 406.5391 193.1221 407.4209 193.644 408.0869 C 194.0938 408.6631 194.4629 409.0142 195.687 408.6631 C 196.2808 408.4741 196.8389 407.9429 197.1719 407.4028 C 197.7031 406.5391 197.9282 404.9277 198.0718 403.9019 C 197.46 402.21 L 197.208 401.5439 196.6499 400.5361 196.2451 400.1851 C 195.8062 399.8149 195.3506 399.626 195.0044 399.626 C 194.9888 399.626 194.9731 399.626 194.958 399.627 C F *U *u 298.0361 392.9219 m 298.0356 393.041 298.0352 393.1621 298.0352 393.2822 C 298.0352 416.7563 307.4932 438.0122 322.8115 453.4546 C 322.8115 392.9219 L 298.0361 392.9219 L F 324.1729 454.7969 m 330.0635 460.4766 336.7676 465.3174 344.0938 469.1274 C 345.3662 466.938 L 345.7998 467.1909 L 345.3662 466.938 L 345.7979 467.1899 L 345.7998 467.1909 L 345.7998 467.1909 L 345.7979 467.1899 L 345.7998 467.1909 L 346.0137 466.731 L 350.3066 468.7378 L 349.8838 469.647 L 346.0029 467.8325 L 344.9854 469.5845 L 346.3428 470.2705 347.7217 470.9209 349.1201 471.5356 C 350.415 468.522 L 356.2871 454.7969 L 324.1729 454.7969 L F *U *u 0 0 0 Xa 297.0371 392.9219 m 297.0366 393.041 297.0361 393.1621 297.0361 393.2822 C 297.0361 426.6367 315.9229 455.5776 343.5928 469.9897 C 344.0938 469.1274 L 336.7676 465.3174 330.0635 460.4766 324.1729 454.7969 C 323.3164 454.7969 L 322.8115 454.7969 L 322.8115 454.3018 L 322.8115 453.4546 L 307.4932 438.0122 298.0352 416.7563 298.0352 393.2822 C 298.0352 393.1621 298.0356 393.041 298.0361 392.9219 C 297.0371 392.9219 L F 344.4834 470.4473 m 345.8779 471.1528 347.29 471.8203 348.7266 472.4517 C 349.1201 471.5356 L 347.7217 470.9209 346.3428 470.2705 344.9854 469.5845 C 344.4834 470.4473 L F *U 1 1 1 Xa 323.8105 392.9219 m 323.8105 453.7979 L 356.7148 453.7979 L 382.7617 392.9219 L 323.8105 392.9219 L F 0 0 0 Xa 322.8115 392.9219 m 322.8115 454.3018 L 322.8115 454.7969 L 323.3164 454.7969 L 356.2871 454.7969 L 356.7148 453.7979 L 323.8105 453.7979 L 323.8105 392.9219 L 322.8115 392.9219 L F *u 383.5166 391.9229 m 383.5166 392.4229 L 383.5166 391.9229 L 134.7295 391.9229 L 132.0659 392.8945 L 131.8936 392.4307 L 131.7148 392.8945 L 428.6973 503.46 L 429.0479 502.5239 L 389.0879 487.6289 369.1084 480.186 359.1182 476.46 C 354.123 474.5972 351.6211 473.6699 350.3789 473.2021 C 350.043 473.0771 349.7998 472.9858 349.6211 472.9194 C 351.333 468.9092 L 383.9756 392.6162 L 384.2734 391.9229 L 383.5166 391.9229 L F 1 D 166.707 392.1934 m 167.0835 392.3877 167.4268 392.6338 167.7378 392.9219 C 382.7617 392.9219 L 350.415 468.522 L 348.6641 472.5972 L 168.5366 405.5371 L 168.3242 405.7729 168.0898 405.9824 167.832 406.1611 C 167.2739 405.3242 L 167.3545 405.2734 167.4321 405.2168 167.5083 405.1538 C 134.6528 392.9219 L 166.3389 392.9219 L 166.707 392.1934 L F 0 D 350.415 468.522 m 350.874 468.7197 L 350.415 468.522 L F 131.7148 392.8945 m 131.8911 392.4248 L 131.8315 392.2646 L 131.7148 392.8945 L F *U *u 345.7998 467.1909 m 345.7979 467.1899 L 345.3662 466.938 L 345.7998 467.1909 L F 343.3682 470.376 m 344.2324 470.8799 L 346.0029 467.8325 L 345.5908 467.6401 L 345.7998 467.1909 L 345.3662 466.938 L 343.3682 470.376 L F *U 1 1 1 Xa 345.7998 467.1909 m 345.7979 467.1899 L 345.7998 467.1909 L F 0 0 0 Xa 345.5908 467.6401 m 349.8838 469.647 L 350.3066 468.7378 L 346.0137 466.731 L 345.5908 467.6401 L F 379.0615 432.1348 m 379.4756 435.4199 L 379.8086 435.4199 L 379.9531 434.5107 380.2773 432.6118 381.9512 432.6118 C 383.1025 432.6118 383.4355 433.6021 383.4355 434.2861 C 383.4355 435.645 380.9785 437.625 380.9785 439.209 C 380.9785 439.8569 381.2666 441.5039 383.4541 441.5039 C 384.3809 441.5039 384.7949 441.1528 385.416 441.1528 C 385.7666 441.1528 385.8926 441.3599 385.9922 441.522 C 386.2803 441.522 L 385.8662 438.6602 L 385.542 438.6602 L 385.4336 439.8301 384.9395 441.0269 383.5977 441.0269 C 383.1484 441.0269 382.4824 440.8472 382.4824 439.8301 C 382.4824 438.5342 385.002 436.6982 385.002 434.9429 C 385.002 432.6929 383.085 432.1802 381.9326 432.1802 C 381.3115 432.1802 380.4844 432.5762 379.8896 432.5762 C 379.6016 432.5762 379.5215 432.3691 379.3945 432.1348 C 379.0615 432.1348 L F *u 390.6992 429.4258 m 390.6992 429.7412 390.7529 430.0562 390.8701 430.5332 C 390.8428 430.5688 L 389.8525 429.0479 389.0791 428.814 388.3945 428.814 C 387.252 428.814 386.9639 429.7231 386.9639 430.4429 C 386.9639 432.5132 389.2949 435.0332 390.9326 435.0332 C 391.707 435.0332 391.8057 434.583 391.8604 434.2769 C 391.8867 434.3042 L 392.4717 436.4912 L 392.5889 436.8779 392.6787 437.2202 392.6787 437.4092 C 392.6787 437.7241 392.5889 437.7959 391.833 437.814 C 391.833 438.0479 L 392.5352 438.1108 393.2275 438.21 393.9297 438.3628 C 394.002 438.291 L 393.4082 435.897 391.7432 430.0381 391.7432 429.8218 C 391.7432 429.6152 391.8604 429.5161 391.9951 429.5161 C 392.2646 429.5161 392.5439 429.8398 393.1201 430.4971 C 393.291 430.3618 L 392.6973 429.4351 391.8057 428.7871 391.3467 428.7871 C 390.8164 428.7871 390.6992 429.1382 390.6992 429.4258 C F 1 D 388.1611 430.4971 m 388.1611 430.2632 388.1611 429.48 388.998 429.48 C 390.3027 429.48 391.6533 432.0898 391.6533 433.7998 C 391.6533 434.1152 391.6533 434.7178 391.0049 434.7178 C 389.4658 434.7178 388.1611 431.748 388.1611 430.4971 C F *U 0 D 395.7656 432.0449 m 403.3525 445.7881 L 404.8203 445.7881 L 397.2334 432.0449 L 395.7656 432.0449 L F 402.8672 432.4048 m 402.8672 432.7021 L 406.5566 436.644 L 409.0137 439.2632 409.0859 440.2798 409.0859 440.8652 C 409.0859 441.9541 408.2764 443.0068 406.9258 443.0068 C 405.3418 443.0068 404.6758 441.792 404.4326 441.3511 C 404.0645 441.4771 L 405.0088 444.2222 407.3125 444.2939 407.7539 444.2939 C 409.6172 444.2939 410.5977 442.6738 410.5977 441.3511 C 410.5977 440.1812 410.1572 439.3892 407.9785 437.2021 C 404.6035 433.8271 L 404.6035 433.7461 L 407.9434 433.7461 L 409.1035 433.7461 409.3828 434.2139 409.6895 434.853 C 409.9863 434.7271 L 409.1035 432.4048 L 402.8672 432.4048 L F 270.1982 397.6289 m 270.1982 397.6919 270.1982 398.4751 270.9448 398.5107 C 271.2329 398.5381 271.7729 398.2681 271.7729 397.7549 C 271.7729 397.4038 271.584 397.4038 271.584 397.1792 C 271.584 397.0078 271.728 396.8462 271.9712 396.8462 C 273.2939 396.8462 273.834 399.3569 273.9961 400.1851 C 275.814 408.8521 L 273.9512 408.8521 L 274.104 409.5088 L 275.9941 409.5088 L 276.5342 411.2642 277.5601 414.666 280.1611 414.666 C 281.646 414.666 281.979 413.7388 281.979 413.3252 C 281.979 412.9111 281.6099 412.4971 281.1328 412.4971 C 280.4761 412.4971 280.3501 413.0552 280.3501 413.2798 C 280.3501 413.7388 280.5571 413.7388 280.5571 413.9639 C 280.5571 414.126 280.3501 414.207 280.0801 414.207 C 278.3882 414.207 277.7671 410.562 277.5869 409.5088 C 279.8101 409.5088 L 279.6929 408.8521 L 277.4429 408.8521 L 275.958 402.2461 L 275.3818 399.7349 274.2212 396.4141 271.8091 396.4141 C 271.1699 396.4141 270.3242 396.6841 270.1982 397.6289 C F 279.5313 397.9438 m 279.5313 398.2319 281.52 405.4141 281.52 405.7021 C 281.52 406.0527 280.9438 406.0527 280.5928 406.0439 C 280.5928 406.2598 L 281.3042 406.3501 282.0151 406.4668 282.7349 406.6382 C 282.8071 406.5659 L 280.728 398.6011 L 280.7012 398.4839 280.5928 398.106 280.5928 397.9619 C 280.5928 397.8721 280.5928 397.6831 280.7998 397.6831 C 281.1421 397.6831 281.4302 398.0698 282.105 398.9341 C 282.2852 398.8081 L 281.583 397.7549 281.043 397.0889 280.188 397.0889 C 279.585 397.0889 279.5313 397.5571 279.5313 397.9438 C F 0.0118 0.0118 0.0118 Xa 166.3389 392.9219 m 166.2568 393.084 L 167.9219 393.8848 169.0112 396.4771 169.1729 399.1411 C 169.3677 401.6553 168.7104 404.1611 167.5083 405.1538 C 168.5366 405.5371 L 169.8667 404.0601 170.3271 401.5459 170.1719 399.0781 C 170.0005 396.7065 169.2417 394.3164 167.7378 392.9219 C 166.3389 392.9219 L F *u 0 0 0 Xa 166.3389 392.9219 m 167.7378 392.9219 L 167.4268 392.6338 167.0835 392.3877 166.707 392.1934 C 166.3389 392.9219 L F 167.2739 405.3242 m 167.832 406.1611 L 168.0898 405.9824 168.3242 405.7729 168.5366 405.5371 C 167.5083 405.1538 L 167.4321 405.2168 167.3545 405.2734 167.2739 405.3242 C F *U *u 193.0229 399.3027 m 192.2578 399.6538 191.6821 400.1489 191.2681 400.8418 C 190.7368 401.7778 190.3232 403.1548 190.6289 405.4678 C 190.8359 406.9712 191.394 408.042 192.8789 409.0591 C 193.5181 409.4912 194.7329 409.7158 195.5972 409.5718 C 196.5688 409.4009 197.3521 408.7441 197.8291 407.9609 C 198.2251 407.3042 198.5132 406.4761 198.6118 405.6748 C 198.6572 405.6748 L 199.9712 409.3472 L 201.7891 409.3472 L 199.4131 402.8042 L 199.584 401.814 199.8721 401.2378 200.2588 400.8418 C 200.4658 400.6621 201.0059 400.1221 201.645 400.7607 C 202.0771 401.1929 202.0952 401.8589 202.1401 402.1289 C 202.5088 402.1289 L 202.4741 400.9478 L 201.4536 399.0996 L 201.001 398.8594 200.6196 399.021 200.3042 399.3208 C 199.8091 399.7979 199.4761 400.5181 198.981 401.8589 C 198.6299 401.2559 198.1802 399.834 196.3438 399.2402 C 195.8311 399.0688 195.2974 398.9248 194.6987 398.9248 C 194.1943 398.9248 193.6445 399.0273 193.0229 399.3027 C F 1 D 193.644 408.0869 m 193.1221 407.4209 192.8789 406.5391 192.7349 405.4409 C 192.5908 404.3071 192.6719 403.1548 192.8789 402.0029 C 192.978 401.3999 193.1851 400.7432 193.6802 400.248 C 194.1392 399.7979 194.4092 399.6719 194.958 399.627 C 195.3091 399.6089 195.7861 399.7979 196.2451 400.1851 C 196.6499 400.5361 197.208 401.5439 197.46 402.21 C 198.0718 403.9019 L 197.9282 404.9277 197.7031 406.5391 197.1719 407.4028 C 196.8389 407.9429 196.2808 408.4741 195.687 408.6631 C 195.3491 408.7598 195.0767 408.8032 194.8496 408.8032 C 194.2534 408.8032 193.9697 408.5039 193.644 408.0869 C F *U 0 D 201.3569 398.9248 m 209.1509 413.0371 L 210.6538 413.0371 L 202.8599 398.9248 L 201.3569 398.9248 L F 208.6382 399.3027 m 208.6382 399.6001 L 212.3369 403.5332 L 214.7939 406.1519 214.8662 407.1777 214.8662 407.7539 C 214.8662 408.8428 214.0562 409.896 212.7061 409.896 C 211.1221 409.896 210.4561 408.6899 210.2041 408.249 C 209.835 408.3662 L 210.7891 411.1108 213.084 411.1831 213.5249 411.1831 C 215.3882 411.1831 216.3779 409.563 216.3779 408.249 C 216.3779 407.0698 215.937 406.2778 213.7588 404.1001 C 210.3838 400.7251 L 210.3838 400.6348 L 213.7231 400.6348 L 214.8838 400.6348 215.1631 401.1118 215.46 401.7422 C 215.7568 401.6162 L 214.8838 399.3027 L 208.6382 399.3027 L F 131.7148 391.9502 m 132.0659 392.8945 L 441.3604 280.0264 L 441.0176 279.0898 L 131.7148 391.9502 L F 355.2842 472.9292 m 355.2813 470.25 354.9766 467.2207 354.2666 464.9761 C 354.9766 467.2207 355.2813 470.25 355.2842 472.9292 C F 357.5605 468.0767 m 357.9482 468.4409 L 358.4785 468.4741 L 387 402.4575 L 386.6133 402.0928 L 386.082 402.0605 L 357.5605 468.0767 L F 381.5732 401.7871 m 386.6133 402.0928 L 390.2939 405.5581 L 389.4209 402.7949 389.1602 398.8438 389.3223 395.8198 C 387.2344 398.0161 384.1826 400.5361 381.5732 401.7871 C F 355.2393 474.7139 m 357.3271 472.5269 360.3779 469.998 362.9971 468.7559 C 357.9482 468.4409 L 354.2666 464.9761 L 355.1396 467.7388 355.4014 471.6899 355.2393 474.7139 C F U LB %AI5_EndLayer-- %%PageTrailer gsave annotatepage grestore showpage %%Trailer Adobe_Illustrator_AI5 /terminate get exec Adobe_ColorImage_AI6 /terminate get exec Adobe_pattern_AI5 /terminate get exec AGM_Gradient /terminate get exec Adobe_typography_AI5 /terminate get exec Adobe_cshow /terminate get exec Adobe_level2_AI5 /terminate get exec %%EOF ctsim-6.0.2/doc/ctsimfig4.eps0000644000175000017500000001454210667176710015040 0ustar kevinkevin%!PS-Adobe-2.0 EPSF-2.0 %%Title: ctsimfig4.eps %%Creator: fig2dev Version 3.2.3 Patchlevel %%CreationDate: Mon Jan 22 20:27:39 2001 %%For: kay@flay.here (Ian Kay) %%BoundingBox: 0 0 322 250 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 250 moveto 0 0 lineto 322 0 lineto 322 250 lineto closepath clip newpath % Fill background color 0 0 moveto 322 0 lineto 322 250 lineto 0 250 lineto closepath 1.00 1.00 1.00 setrgbcolor fill -90.0 433.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin %%Page: 1 1 10 setmiterlimit 0.06000 0.06000 sc /Symbol ff 210.00 scf sf 3892 5907 m gs 1 -1 sc (a) col0 sh gr /Palatino-BoldItalic ff 300.00 scf sf 5180 6292 m gs 1 -1 sc (l) col0 sh gr /Palatino-BoldItalic ff 210.00 scf sf 5278 6367 m gs 1 -1 sc (p) col0 sh gr % Polyline 7.500 slw n 4775 6149 m 4865 6149 l 4902 6314 l 4940 6044 l 5165 6037 l gs col0 s gr /Palatino-BoldItalic ff 300.00 scf sf 4947 6299 m gs 1 -1 sc (2) col0 sh gr /Palatino-BoldItalic ff 300.00 scf sf 5420 6329 m gs 1 -1 sc ( = f) col0 sh gr /Palatino-BoldItalic ff 210.00 scf sf 5929 6442 m gs 1 -1 sc (v) col0 sh gr /Palatino-BoldItalic ff 300.00 scf sf 4822 5305 m gs 1 -1 sc (l) col0 sh gr /Palatino-BoldItalic ff 210.00 scf sf 4920 5380 m gs 1 -1 sc (p) col0 sh gr % Polyline gs clippath 4650 5770 m 4710 5770 l 4710 5618 l 4680 5738 l 4650 5618 l cp 4710 4540 m 4650 4540 l 4650 4692 l 4680 4572 l 4710 4692 l cp eoclip n 4680 4555 m 4680 5755 l gs col0 s gr gr % arrowhead n 4710 4692 m 4680 4572 l 4650 4692 l col0 s % arrowhead n 4650 5618 m 4680 5738 l 4710 5618 l col0 s % Polyline n 4695 4990 m 4785 5095 l 4730 5080 l 4830 5205 l gs col0 s gr /Palatino-BoldItalic ff 300.00 scf sf 4357 3600 m gs 1 -1 sc (l) col0 sh gr /Palatino-BoldItalic ff 210.00 scf sf 4455 3675 m gs 1 -1 sc (p) col0 sh gr % Polyline n 3952 3457 m 4042 3457 l 4079 3622 l 4117 3352 l 4342 3345 l gs col0 s gr /Palatino-BoldItalic ff 300.00 scf sf 4124 3607 m gs 1 -1 sc (2) col0 sh gr /Palatino-BoldItalic ff 300.00 scf sf 4627 3578 m gs 1 -1 sc (=f) col0 sh gr /Palatino-BoldItalic ff 210.00 scf sf 4927 3720 m gs 1 -1 sc (l) col0 sh gr % Arc n 3797.1 4965.1 1303.4 -129.0 172.4 arcn gs col4 s gr % Arc [15 45] 45 sd n 4205.7 5134.4 1696.3 -57.0 58.8 arc gs col4 s gr [] 0 sd % Arc n 3670.5 5782.5 178.5 -12.1 33.1 arc gs col-1 s gr % Polyline n 4782 4552 m 3605 5737 l gs col0 s gr % Polyline n 3935 5422 m 4520 5940 l 4340 5865 l 4677 6165 l gs col0 s gr % Polyline [15 45] 45 sd n 4205 5139 m 5058 5134 l gs col0 s gr [] 0 sd % Polyline gs clippath 6645 3255 m 6555 3255 l 6555 3467 l 6600 3287 l 6645 3467 l cp eoclip n 6600 4485 m 6600 3270 l gs col0 s gr gr % arrowhead n 6645 3467 m 6600 3287 l 6555 3467 l col0 s % Polyline n 3335 5148 m 4188 5143 l gs col0 s gr % Polyline n 2487 5148 m 3340 5143 l gs col0 s gr % Polyline [15 45] 45 sd n 5902 3240 m 5902 7035 l gs col0 s gr [] 0 sd % Polyline n 3590 4545 m 4197 5145 l gs col0 s gr % Polyline n 3590 4545 m 4790 4545 l 4790 5745 l 3590 5745 l cp gs col0 s gr % Polyline [15 45] 45 sd n 5053 5139 m 5906 5134 l gs col0 s gr [] 0 sd % Polyline n 2986 3949 m 3593 4549 l gs col0 s gr % Polyline n 3269 4207 m 3667 3735 l 3599 3907 l 3899 3547 l gs col0 s gr % Polyline n 2490 5205 m 2512 5302 l 3547 5302 l 3570 5167 l gs col4 s gr % Polyline n 2962 5310 m 2835 5625 l 2932 5520 l 2745 5917 l gs col0 s gr % Polyline n 4200 5400 m 4605 5872 l 4545 5685 l 4777 6022 l gs col4 s gr % Polyline [15 45] 45 sd n 2497 5152 m 5902 7035 l 5895 7035 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 2497 5122 m 5895 3285 l gs col0 s gr [] 0 sd % Polyline [15 45] 45 sd n 4194 4294 m 4200 5137 l 4189 5986 l gs col4 s gr [] 0 sd % Polyline gs clippath 6570 7050 m 6660 7050 l 6660 6838 l 6615 7018 l 6570 6838 l cp eoclip n 6615 7035 m 6615 6165 l gs col0 s gr gr % arrowhead n 6570 6838 m 6615 7018 l 6660 6838 l col0 s /Palatino-BoldItalic ff 210.00 scf sf 1860 6052 m gs 1 -1 sc (dFocalPastPhm) col0 sh gr /Palatino-BoldItalic ff 210.00 scf sf 1677 5216 m gs 1 -1 sc (source) col0 sh gr /Palatino-BoldItalic ff 210.00 scf sf 6690 5835 m gs 1 -1 sc 90.0 rot (detectors) col0 sh gr $F2psEnd rs ctsim-6.0.2/doc/fancyhea.sty0000644000175000017500000001334510667176710014755 0ustar kevinkevin% fancyheadings.sty version 1.92 % Fancy headers and footers. % Piet van Oostrum, Dept of Computer Science, University of Utrecht % Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands % Telephone: +31-30-531806. piet@cs.ruu.nl (mcvax!sun4nl!ruuinf!piet) % Sep 16, 1994 % version 1.4: Correction for use with \reversemargin % Sep 29, 1994: % version 1.5: Added the \iftopfloat, \ifbotfloat and \iffloatpage commands % Oct 4, 1994: % version 1.6: Reset single spacing in headers/footers for use with % setspace.sty or doublespace.sty % Oct 4, 1994: % version 1.7: changed \let\@mkboth\markboth to % \def\@mkboth{\protect\markboth} to make it more robust % Dec 5, 1994: % version 1.8: corrections for amsbook/amsart: define \@chapapp and (more % importantly) use the \chapter/sectionmark definitions from ps@headings if % they exist (which should be true for all standard classes). % May 31, 1995: % version 1.9: The proposed \renewcommand{\headrulewidth}{\iffloatpage... % construction in the doc did not work properly with the fancyplain style. % June 1, 1995: % version 1.91: The definition of \@mkboth wasn't restored on subsequent % \pagestyle{fancy}'s. % June 1, 1995: % version 1.92: The sequence \pagestyle{fancyplain} \pagestyle{plain} % \pagestyle{fancy} would erroneously select the plain version. \def\lhead{\@ifnextchar[{\@xlhead}{\@ylhead}} \def\@xlhead[#1]#2{\gdef\@elhead{#1}\gdef\@olhead{#2}} \def\@ylhead#1{\gdef\@elhead{#1}\gdef\@olhead{#1}} \def\chead{\@ifnextchar[{\@xchead}{\@ychead}} \def\@xchead[#1]#2{\gdef\@echead{#1}\gdef\@ochead{#2}} \def\@ychead#1{\gdef\@echead{#1}\gdef\@ochead{#1}} \def\rhead{\@ifnextchar[{\@xrhead}{\@yrhead}} \def\@xrhead[#1]#2{\gdef\@erhead{#1}\gdef\@orhead{#2}} \def\@yrhead#1{\gdef\@erhead{#1}\gdef\@orhead{#1}} \def\lfoot{\@ifnextchar[{\@xlfoot}{\@ylfoot}} \def\@xlfoot[#1]#2{\gdef\@elfoot{#1}\gdef\@olfoot{#2}} \def\@ylfoot#1{\gdef\@elfoot{#1}\gdef\@olfoot{#1}} \def\cfoot{\@ifnextchar[{\@xcfoot}{\@ycfoot}} \def\@xcfoot[#1]#2{\gdef\@ecfoot{#1}\gdef\@ocfoot{#2}} \def\@ycfoot#1{\gdef\@ecfoot{#1}\gdef\@ocfoot{#1}} \def\rfoot{\@ifnextchar[{\@xrfoot}{\@yrfoot}} \def\@xrfoot[#1]#2{\gdef\@erfoot{#1}\gdef\@orfoot{#2}} \def\@yrfoot#1{\gdef\@erfoot{#1}\gdef\@orfoot{#1}} \newdimen\headrulewidth \newdimen\footrulewidth \newdimen\plainheadrulewidth \newdimen\plainfootrulewidth \newdimen\headwidth \newif\if@fancyplain \def\fancyplain#1#2{\if@fancyplain#1\else#2\fi} % Command to reset various things in the headers: % a.o. single spacing (taken from setspace.sty) % and the catcode of ^^M (so that epsf files in the header work if a % verbatim crosses a page boundary) \def\fancy@reset{\restorecr \def\baselinestretch{1}% \ifx\undefined\@newbaseline% NFSS not present; 2.09 or 2e \ifx\@currsize\normalsize\@normalsize\else\@currsize\fi% \else% NFSS (2.09) present \@newbaseline% \fi} % Initialization of the head and foot text. \headrulewidth 0.4pt \footrulewidth\z@ \plainheadrulewidth\z@ \plainfootrulewidth\z@ \lhead[\fancyplain{}{\sl\rightmark}]{\fancyplain{}{\sl\leftmark}} % i.e. empty on ``plain'' pages, \rightmark on even, \leftmark on odd pages \chead{} \rhead[\fancyplain{}{\sl\leftmark}]{\fancyplain{}{\sl\rightmark}} % i.e. empty on ``plain'' pages, \leftmark on even, \rightmark on odd pages \lfoot{} \cfoot{\rm\thepage} % page number \rfoot{} % Put together a header or footer given the left, center and % right text, fillers at left and right and a rule. % The \lap commands put the text into an hbox of zero size, % so overlapping text does not generate an errormessage. \def\@fancyhead#1#2#3#4#5{#1\hbox to\headwidth{\fancy@reset\vbox{\hbox {\rlap{\parbox[b]{\headwidth}{\raggedright#2\strut}}\hfill \parbox[b]{\headwidth}{\centering#3\strut}\hfill \llap{\parbox[b]{\headwidth}{\raggedleft#4\strut}}}\headrule}}#5} \def\@fancyfoot#1#2#3#4#5{#1\hbox to\headwidth{\fancy@reset\vbox{\footrule \hbox{\rlap{\parbox[t]{\headwidth}{\raggedright#2\strut}}\hfill \parbox[t]{\headwidth}{\centering#3\strut}\hfill \llap{\parbox[t]{\headwidth}{\raggedleft#4\strut}}}}}#5} \def\headrule{{\if@fancyplain\let\headrulewidth\plainheadrulewidth\fi \hrule\@height\headrulewidth\@width\headwidth \vskip-\headrulewidth}} \def\footrule{{\if@fancyplain\let\footrulewidth\plainfootrulewidth\fi \vskip-0.3\normalbaselineskip\vskip-\footrulewidth \hrule\@width\headwidth\@height\footrulewidth\vskip0.3\normalbaselineskip}} \def\ps@fancy{% \@ifundefined{@chapapp}{\let\@chapapp\chaptername}{}%for amsbook \@ifundefined{chapter}{\def\sectionmark##1{\markboth {\uppercase{\ifnum \c@secnumdepth>\z@ \thesection\hskip 1em\relax \fi ##1}}{}}% \def\subsectionmark##1{\markright {\ifnum \c@secnumdepth >\@ne \thesubsection\hskip 1em\relax \fi ##1}}}% {\def\chaptermark##1{\markboth {\uppercase{\ifnum \c@secnumdepth>\m@ne \@chapapp\ \thechapter. \ \fi ##1}}{}} \def\sectionmark##1{\markright{\uppercase{\ifnum \c@secnumdepth >\z@ \thesection. \ \fi ##1}}}}% \csname ps@headings\endcsname % use \ps@headings defaults if they exist \ps@@fancy \gdef\ps@fancy{\@fancyplainfalse\ps@@fancy}% \headwidth\textwidth} \def\ps@fancyplain{\ps@fancy \let\ps@plain\ps@plain@fancy} \def\ps@plain@fancy{\@fancyplaintrue\ps@@fancy} \def\ps@@fancy{% \def\@mkboth{\protect\markboth}% \def\@oddhead{\@fancyhead\@lodd\@olhead\@ochead\@orhead\@rodd}% \def\@oddfoot{\@fancyfoot\@lodd\@olfoot\@ocfoot\@orfoot\@rodd}% \def\@evenhead{\@fancyhead\@rodd\@elhead\@echead\@erhead\@lodd}% \def\@evenfoot{\@fancyfoot\@rodd\@elfoot\@ecfoot\@erfoot\@lodd}% } \def\@lodd{\if@reversemargin\hss\else\relax\fi} \def\@rodd{\if@reversemargin\relax\else\hss\fi} \let\latex@makecol\@makecol \def\@makecol{\let\topfloat\@toplist\let\botfloat\@botlist\latex@makecol} \def\iftopfloat#1#2{\ifx\topfloat\empty #2\else #1\fi} \def\ifbotfloat#1#2{\ifx\botfloat\empty #2\else #1\fi} \def\iffloatpage#1#2{\if@fcolmade #1\else #2\fi} ctsim-6.0.2/doc/ctsim-latex.bib0000644000175000017500000000206710667176710015345 0ustar kevinkevin\bibliography{ctsim} \bibliographystyle{plain} @book{KAK87, author = {A. Kak and M. Slaney}, title = {Principles of Computerized Tomographic Imaging}, publisher = {IEEE Press, New York}, year = {1987} } @book{HERMAN80, author = {G.T. Herman}, title = {Image Reconstruction from Projections: The Fundamentals of Computerized Tomography}, year = {1980}, publisher = {Academic Press, New York, 1980} } @book{PRESS92, author = {W.H. Press, S.A. Teukolsky, W.T. Vellerling, and B.P. Flannery}, title = {Numerical Recipes in C: The Art of Scientific Computing}, publisher = {Cambridge University Press, Cambridge}, edition = {Second}, year = {1992} } @book{FOLEY82, author = {J.D. Foley and A. van Dam}, title = {Fundamentals of Interactive Computer Graphics}, publisher = {Addison-Wesley}, year = {1982} } @article{SHEPP74, author = {L. Shepp and B. Logan}, title = {The Fourier Reconstruction of a Head Section}, journal = {IEEE Transactions in Nuclear Science}, volume = {NS-21}, number = {6}, pages = {21-43}, year = {1974} } ctsim-6.0.2/doc/texhelp.sty0000644000175000017500000002024010667176710014640 0ustar kevinkevin% LaTeX style file % Name: texhelp.sty % Author: Julian Smart % % Purpose % ------- % Style file to enable the simultaneous preparation of printed LaTeX and on-line % hypertext manuals. % Use in conjunction with Tex2RTF (see Tex2RTF documentation). % % Note that if a non-ASCII character starts a newline and there should be a space % between the last word on the previous line and the first word on this line, % you need to use \rtfsp to generate a space in Windows Help. \rtfsp is ignored % in all other formats. % % Julian Smart % Artificial Intelligence Applications Institute % % % ============== C++/CLIPS Documentation Facilities ============== % % Each class definition should be typeset with e.g. % % \section{\class{Name}: Parent} % % followed by a description of the class. % Each member should follow: % % \membersection{wxName::Member} % % with a description of what this member does. % Then, one (or more if overloaded) member (function) in detail: % % \func{return type}{name}{args} % or % \member{type}{name} % % where args is a list of \param{type}{name}, ... % Function, e.g. % e.g. to typeset % % void DoIt(char *string); % % write: % % \func{void}{DoIt}{\param{char *}{string}} % \newcommand{\func}[3]{\hangafter=1\noindent\hangindent=10mm {{\it #1} {\bf #2}\index{#2}}(#3)} % For function/type definition where the name is a pointer, % e.g. to typeset % % typedef void (*wxFunction)(wxObject&) % % write: % % \pfunc{typedef void}{wxFunction}{param{wxObject&}} \newcommand{\pfunc}[3]{\hangafter=1\noindent\hangindent=10mm {{\it #1} ({\bf *#2})\index{#2}}(#3)} % Use an ordinary \section command for class name definitions. % This is used for a member, such as wxBitmap: GetDepth \newcommand{\membersection}[1]{\subsection*{#1}\index{#1}} % CLIPS function \newcommand{\clipsfunc}[3]{\hangafter=1\noindent\hangindent=10mm {{\bf #1} ({\bf #2}\index{#2}}#3)} \newcommand{\clipssection}[1]{\chapter{#1}} % This is used for a CLIPS function name \newcommand{\functionsection}[1]{\subsection*{#1}} % Member: a type and a name \newcommand{\member}[2]{{\bf #1 \it #2}} % C++ Parameter: a type and a name (no intervening space) \newcommand{\param}[2]{{\it #1}{\bf #2}} % CLIPS Parameter: a type and a name (one intervening space) \newcommand{\cparam}[2]{{\bf #1} {\it #2}} % Class: puts in index \newcommand{\class}[1]{#1\index{#1}} % Void type \newcommand{\void}{{\it void}} % Typeset destructor \newcommand{\destruct}[1]{{$\sim$}#1} % Typeset insert/extract operators \newcommand{\cinsert}{$<<$} \newcommand{\cextract}{$>>$} % =================== Hypertext facilities =================== % % To insert hyperlinks (or references, in Latex), \label the sections % or membersections \label{ref-label} immediately after the section, on the same line, % and use \helpref{text-to-show}{ref-label} to make a reference. % % Type text with section reference \newcommand{\helpref}[2]{{\it #1} (section \ref{#2}) } % Type text with URL in verbatim mode %\newcommand{\urlref}[2]{#1 (\verb$#2$)} \newcommand{\urlref}[2]{#1 ($#2$)} %\newcommand{\urlref}[2]{#1 \begin{verbatim}(#2)\end{verbatim}} % Don't typeset section number in LaTeX \newcommand{\helprefn}[2]{{\it #1}} % Like helpref, but popup text in WinHelp instead of hyperlinked \newcommand{\popref}[2]{{\it #1}} % Like footnote, but popup text. \newcommand{\footnotepopup}[2]{{\it #1}\footnote{#2}} % =================== On-line help specific macros =================== % % Global document font size/family, help only. \newcommand{\helpfontsize}[1]{} \newcommand{\helpfontfamily}[1]{} % Ignore in all on-line help \newcommand{\helpignore}[1]{#1} % Only print in all on-line help \newcommand{\helponly}[1]{} % Ignore in LaTeX \newcommand{\latexignore}[1]{} % Only print in LaTeX \newcommand{\latexonly}[1]{#1} % Ignore in linear RTF \newcommand{\rtfignore}[1]{#1} % Only print in linear RTF \newcommand{\rtfonly}[1]{} % Ignore in WinHelp RTF \newcommand{\winhelpignore}[1]{#1} % Only print in WinHelp RTF \newcommand{\winhelponly}[1]{} % Ignore in wxHelp \newcommand{\xlpignore}[1]{#1} % Only print in wxHelp \newcommand{\xlponly}[1]{} % Ignore in HTML \newcommand{\htmlignore}[1]{#1} % Only print in HTML \newcommand{\htmlonly}[1]{} % Input a file only for help system (binder thickness is not a limitation % in help systems!) \newcommand{\helpinput}[1]{} \newcommand{\rtfsp}{ } % Force a space in RTF, ignore in Latex % =================== Miscellaneous macros =================== % % Headings consistent with generated ones \newcommand{\myheading}[1]{\vspace*{25pt} \begin{flushleft} {\LARGE \bf #1} \end{flushleft} \vskip 20pt } % Heading with entry in contents page. \newcommand{\chapterheading}[1]{\myheading{#1} \addcontentsline{toc}{chapter}{#1}} \newcommand{\sectionheading}[1]{\myheading{#1} \addcontentsline{toc}{section}{#1}} % Glossary environment \newenvironment{helpglossary}{\newpage\chapterheading{Glossary}\begin{description}}{\end{description}} % Glossary entry \newcommand{\gloss}[1]{\item[#1]\index{#1}} % Image: EPS in Latex, BMP or MF (whatever's available) in RTF. Requires psbox. \newcommand{\image}[2]{\psboxto(#1){#2}} % Image, left aligned (HTML) \newcommand{\imager}[2]{\psboxto(#1){#2}} % Image, right aligned (HTML) \newcommand{\imagel}[2]{\psboxto(#1){#2}} % Imagemap: principally for HTML only. In Latex, % acts like \image. \newcommand{\imagemap}[3]{\psboxto(#1){#2}} % Headers and footers % \setheader{EvenPageLeft}{EvenPageCentre}{EvenPageRight} % {OddPageLeft}{OddPageCentre}{OddPageRight} \newcommand{\setheader}[6]{ \lhead[\fancyplain{}{#1}]{\fancyplain{}{#4}} \chead[\fancyplain{}{#2}]{\fancyplain{}{#5}} \rhead[\fancyplain{}{#3}]{\fancyplain{}{#6}} } % \setfooter{EvenPageLeft}{EvenPageCentre}{EvenPageRight} % {OddPageLeft}{OddPageCentre}{OddPageRight} \newcommand{\setfooter}[6]{ \lfoot[\fancyplain{#1}{#1}]{\fancyplain{#4}{#4}} \cfoot[\fancyplain{#2}{#2}]{\fancyplain{#5}{#5}} \rfoot[\fancyplain{#3}{#3}]{\fancyplain{#6}{#6}} } % Needed for telling RTF where margin paragraph should go % in mirrored margins mode. \newcommand{\marginpareven}[1]{\hspace*{0pt}\marginpar{#1}} \newcommand{\marginparodd}[1]{\hspace*{0pt}\marginpar{#1}} % Environment for two-column table popular in WinHelp and manuals. \newcommand{\twocolwidtha}[1]{\def\twocolwidthaval{#1}} \newcommand{\twocolwidthb}[1]{\def\twocolwidthbval{#1}} \newcommand{\twocolspacing}[1]{\def\twocolspacingval{#1}} \twocolwidtha{3cm} \twocolwidthb{8.5cm} \twocolspacing{2} \newcommand{\twocolitem}[2]{#1 & #2\\} \newcommand{\twocolitemruled}[2]{#1 & #2\\\hline} \newenvironment{twocollist}{\renewcommand{\arraystretch}{\twocolspacingval}\begin{tabular}{lp{\twocolwidthbval}}}% {\end{tabular}\renewcommand{\arraystretch}{1}} % Specifying table rows for RTF compatibility \newcommand{\row}[1]{#1\\} % Use for the last ruled row for correct RTF generation. \newcommand{\ruledrow}[1]{#1\\\hline} % Indentation environment. Arg1 is left margin size \newenvironment{indented}[1]{\begin{list}{}{\leftmargin=#1}\item[]}% {\end{list}} % Framed box of text, normal formatting. \newcommand{\normalbox}[1]{\fbox{\vbox{#1}}} % Double-framed box of text. \newcommand{\normalboxd}[1]{\fbox{\fbox{\vbox{#1}}}} % WITHDRAWN -- can't do in RTF, easily. % Framed box of text, horizontally centred. Ragged right within box. % \newcommand{\centeredbox}[2]{\begin{center}\fbox{\parbox{#1}{\raggedright#2}}\end{center}} % Double-framed box of text, horizontally centred. Ragged right within box. % \newcommand{\centeredboxd}[2]{\begin{center}\fbox{\fbox{\parbox{#1}{\raggedright#2}}}\end{center}} % toocomplex environment: simply prints the argument in LaTeX, % comes out verbatim in all generated formats. \newenvironment{toocomplex}{}{} % Colour: dummy commands since LaTeX doesn't support colour. % \definecolour{name}{red}{blue}{green} % \fcol{name}{text} ; Foreground % \bcol{name}{text} ; Background \newcommand{\definecolour}[4]{} \newcommand{\definecolor}[4]{} \newcommand{\fcol}[2]{#2} \newcommand{\bcol}[2]{#2} \newcommand{\sethotspotcolour}[1]{} \newcommand{\sethotspotunderline}[1]{} \newcommand{\settransparency}[1]{} \newcommand{\backslashraw}[0]{} \newcommand{\lbraceraw}[0]{} \newcommand{\rbraceraw}[0]{} \newcommand{\registered}[0]{(r)} \newcommand{\background}[1]{} \newcommand{\textcolour}[1]{} \newcommand{\overview}[2]{See \helpref{#1}{#2}.} ctsim-6.0.2/doc/ctsim.bib0000644000175000017500000000200713254404563014217 0ustar kevinkevin@book{KAK87, author = {A. Kak and M. Slaney}, title = {Principles of Computerized Tomographic Imaging}, publisher = {IEEE Press, New York}, year = {1987} } @book{HERMAN80, author = {G.T. Herman}, title = {Image Reconstruction from Projections: The Fundamentals of Computerized Tomography}, year = {1980}, publisher = {Academic Press, New York, 1980} } @book{PRESS92, author = {W.H. Press, S.A. Teukolsky, W.T. Vellerling, and B.P. Flannery}, title = {Numerical Recipes in C: The Art of Scientific Computing}, publisher = {Cambridge University Press, Cambridge}, edition = {Second}, year = {1992} } @book{FOLEY82, author = {J.D. Foley and A. van Dam}, title = {Fundamentals of Interactive Computer Graphics}, publisher = {Addison-Wesley}, year = {1982} } @article{SHEPP74, author = {L. Shepp and B. Logan}, title = {The Fourier Reconstruction of a Head Section}, journal = {IEEE Transactions in Nuclear Science}, volume = {NS-21}, number = {6}, pages = {21-43}, year = {1974} } ctsim-6.0.2/doc/tex2rtf.ini0000644000175000017500000000102010667176710014520 0ustar kevinkevinwinHelpVersion = 4 winHelpContents = yes #generateHPJ = yes htmlWorkshopFiles = true #combineSubSections = true runTwice = yes useUpButton = yes winHelpTitle = "CTSim Manual" aliasFileName = "ctsim.alias" mapFileName = "../src/ctsim-map.h" \parbox [2]{} \mathrms [1]{} \sqrt [1]{} \sin [0]{} \tan [0]{} \hyphenation [1]{} \circ [0]{} \includeonly [1]{} \frac [2]{} \nonumber [0]{} \sum [0]{} \max [0]{} \atop [0]{} \setlength [2]{} \displaystyle [0]{} \textstyle [0]{} \[ [0]{} \] [0]{} \bar [1]{} \toocomplex [1]{} \quad [0]{} ctsim-6.0.2/doc/ctsimfig1.fig0000644000175000017500000000672510667176710015017 0ustar kevinkevin#FIG 3.2 Portrait Center Metric Letter 100.00 Single -2 1200 2 6 590 930 4156 3240 6 590 930 4156 3240 6 900 1845 1215 3240 2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2 984 1905 984 3165 2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2 0 0 1.00 90.00 90.00 960 1910 1184 1910 2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2 0 0 1.00 90.00 90.00 960 3170 1184 3170 2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2 0 0 1.00 90.00 90.00 959 2585 1184 2585 2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2 0 0 1.00 90.00 90.00 960 2271 1184 2271 2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2 0 0 1.00 90.00 90.00 960 2900 1184 2900 -6 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 819 3184 819 1975 2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 1 2 0 0 1.00 60.00 120.00 3179 1809 3179 3069 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 1 2 0 0 1.00 60.00 120.00 0 0 1.00 60.00 120.00 3810 1796 3810 3056 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2 0 0 1.00 60.00 120.00 1030 1530 2155 1529 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 2155 1529 2155 1720 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 1010 1535 1010 1656 4 0 0 50 0 29 20 1.5708 4 165 930 755 3184 source\001 4 0 0 50 0 29 20 1.5708 4 225 1140 3524 3088 detector\001 4 0 0 50 0 29 20 1.5708 4 300 450 4096 2770 fov\001 4 0 0 50 0 29 20 0.0000 4 300 1710 1125 1170 focal length\001 4 0 0 50 0 29 20 0.0000 4 285 1485 1395 1440 (arbitrary)\001 -6 6 1665 2115 2610 3060 1 1 0 1 0 7 50 0 -1 0.000 1 1.5708 2151 2516 90 90 2151 2516 2241 2426 1 1 0 1 0 7 50 0 -1 0.000 1 1.5708 2151 2786 90 90 2151 2786 2241 2696 2 3 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 10 1701 2696 1881 2966 2151 3056 2420 2876 2601 2607 2421 2337 2150 2156 1881 2246 1701 2606 1701 2696 2 3 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 1701 2158 1701 3056 2599 3056 2601 2157 1701 2158 -6 -6 6 5085 1125 8910 4230 6 5355 1305 6480 2430 2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2 6286 1372 5395 2263 2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2 0 0 1.00 90.00 90.00 6265 1359 6424 1518 2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2 0 0 1.00 90.00 90.00 5374 2250 5533 2409 2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2 0 0 1.00 90.00 90.00 5787 1836 5946 1995 2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2 0 0 1.00 90.00 90.00 6010 1614 6169 1773 2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2 0 0 1.00 90.00 90.00 5565 2059 5724 2218 -6 1 1 0 1 0 7 50 0 -1 0.000 1 0.0000 6840 2610 90 90 6840 2610 6930 2700 1 1 0 1 0 7 50 0 -1 0.000 1 0.0000 6570 2610 90 90 6570 2610 6660 2700 2 3 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 10 6660 2160 6390 2340 6300 2610 6480 2880 6750 3060 7020 2880 7200 2610 7110 2340 6750 2160 6660 2160 2 3 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 7199 2160 6300 2160 6300 3059 7200 3060 7199 2160 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 5265 2160 6120 1305 2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 1 2 0 0 1.00 60.00 120.00 7906 2857 7015 3748 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 1 2 0 0 1.00 60.00 120.00 0 0 1.00 60.00 120.00 8361 3294 7470 4185 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 7380 1935 7245 2070 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 6570 1125 6480 1215 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2 0 0 1.00 60.00 120.00 6570 1125 7380 1935 4 0 0 50 0 29 20 0.7854 4 165 930 5220 2115 source\001 4 0 0 50 0 29 20 0.7854 4 225 1140 7245 4005 detector\001 4 0 0 50 0 29 20 0.7854 4 300 450 7875 4185 fov\001 4 0 0 50 0 29 20 0.0000 4 285 1485 7200 1785 (arbitrary)\001 4 0 0 50 0 29 20 0.0000 4 300 1710 7200 1440 focal length\001 -6 4 0 0 50 0 29 20 0.0000 4 225 225 675 675 A\001 4 0 0 50 0 29 20 0.0000 4 225 180 5130 675 B\001 ctsim-6.0.2/doc/bullet.bmp0000644000175000017500000000021210667176710014412 0ustar kevinkevinBMŠv(¿¿¿¿¿¿¿¿¿ÀÀÀ€€€ÿÿÿÿÿÿÿÿÿÿÿÿctsim-6.0.2/doc/scangeometry.gif0000644000175000017500000001363210667176710015624 0ustar kevinkevinGIF89a3ìæDPPP???¿¿¿ïïï@@@ŸŸŸ___ÏÏÏ///ßßßOOOoooðððÀÀÀ€€€   ¯¯¯000 ÐÐÐ```pppààà{{{°°°ÓÓÓ§§§½½½‘‘‘222ZZZÞÞÞôôôœœœKKKéééAAAÛÛÛóóó²²²···ÈÈȆ††eeeWWWccc‡‡‡çççÃÃÓ““GGG###«««gggäää333777ÿÿÿÿÿÿ!ùD,3ìÿ€D‚ƒ„…†‡ˆ‰Š‹ŒŽ‚’•–—•’žŸ ¡¢£¤¥¦§¨…•B°²µ¶·² °©ÅÆÇÈÉÊËŒ‘B CÚÛÜÝÞÛ  BÌíîïðñ¤ÐB  ßýþÿÜT G`B:bò*\Èн 8а¢E‹ <0—ŽSà C*Ä !ÚÄSª¬X ‚2x€ ²¦Í›£0hˆˆ ÂÊŸ@&h`š8“*UºABÄ(ƒJúQ!2—jݺ‚=©ŠÛÍê‚ Øq]˶Ø ÿàG¶®Ýðж¯_OAÕ®a»œí€ô¯ãÇD(XX0€îáˆ+˜ ¡1äÏZ)\Xp³iÌx±ªͺ¦hÒ§ccf€«çÖ¸åE˜\Z¶ïË´9ßÎM<†¯½+?œ`3…âÐAÐ ¤òòë—,°€0º÷Q&8Ȇ½üá ÿÎ^ÑñÌË?\Á„íó+’P}¾ÿÃÚ°š~úa`…ý§ YÜG ~ü °à„w) àƒÞm`‚vHVLð†Äy0Á–y¨âTÁz$þ¥>­h#U`G1:ÁäÝ(¤T ŽØc_L€@ÿŠC6¹Rhpd[‘œ“X®”€êM¹ÕŒñe)æJ8`Á€^Ú”‡c¶©’}<¦Ò 0éæÿ0_r‚ôã’xjÑBÙ§B ªhE `è¡ð$I.”Vj饘fªé¦œvêé§ž:P(¤ñ$Y,`ªêªœ"°Ë«²°*묖¾ä(©î˜:,¼.€Àû 9”.½ðjì± ÐRAY @£âjÌJjs,,”Ù¹àP\ ¬²˜s­¯saéìÐJ‹L¢ÖŠ+l*&ð@±ØÒ"@‚þ Q·Æ:P®ç¢{«º©°kí¨:àa¸ ÖÌ%ÀîæÿŠ -Á¡l­Ò0€Ï„ <@ªaf•»ðz˜ñ'Ç¡¬éôWÀÈþÑÆ«\ÚÚUòÉï^¹àËCè93ÍhPçÍC@ÞÎÈW±\ì[bÅ.PãÑxÓÀ02­R#ÌÜP]ÞD õupDZ|Hkƒ€e›mHBà»ÍÚÞ¸­üÂ÷ßÕ¼Jø_ÞÚ(ßPk47„γlèIãø‚ˆÃÂ&ÞaSÀøQ®ˆü“yá`Å–£Ý*B KóA®M£Ý©^ˆÍ®ÿÓhÕ˜µ( î6– ‹A˦»6z¢é;ÚÍ[+—Eè=‚«Ø€èÝ;_ºÿ?Xà;!Iέ6£Øv* N6*úâW¤€ç bÁçÁ³Ÿ=PÊë˜v‹ÿ™æyÛ`zç7§]äuÂkŽÌ!Á1Õ§€ËAà6ôÔ7\E m` h |X: £Ám8”ƒÀB•4j…þ0! ³¤Âß´P Ÿ˜¦ñÕІL‰•4 Öï"˜@åôÁ»õO%1Ãa7(¸Ã6õ06?t! if>(„úZEjsB&rãTô³K¸@ŽI@?áEàÖEm<qTûÈ"#Šlê¢!»¡Ç=¶1ONtãßU=ªÌqÀŸ´Ðºp€"PÁXÌñN²Xt8蔺P†ÚET ¨?D€žö4˜1| ”@,BMSòÒm(€žò§M]º¼§IDÿõ) .ìU¥Tù£4]*Õ<É´GX*@8z‘^´VýI ¼ÚS˜À0! +8 – êÒ’eýFcD<Š…­!TNõW•tU¯ °‹ H W•*ŠÕi¾ë„“DÐâTqt23ÂU³s­¬]ë’×Êj`¥•JS¹ñÌE`¬‡eл¼qZ•ð´²pA]d\Õ’°°b79ëü’@àßT›Ã“]ngeûÚ±¤¸(K·ˆ×̾²òAÀY¨Û„ᶔɺ ŠÛS°R«Å•ÁX@&å2•¹þ@€&!DÞ܊ź9ÜÜ?P@_ËŽe¨ôµïÿTº%ÝŸÌ–˜ÀƒÒZözƒPï5‚ûáâŠ`, vð@¥¡Ùn\ø¢CdB¼Q±ô‡†óGŠ»;•¤øÄcéÅ:—[—<÷;¨ðt‘»X–Œ˜>N±X\b¾jo·²p…0EÐ$Ô¿@ñ°1…0J'˜­m0I§Â`)“ådýïMS÷ÂFÌèL®JrÌ ü6x«Sylƒï:–?¶ÔÂZîìg½€!טH§üÉéÎ<„ß68²S)1}×,èYb‰îGÎZ‰ô÷ÎS¹1P†× AÓÓRIqO9-–n9Ú"/î†è ;£:(%€TnÈ W›˜*²n]ÿeXDƳH¾õ’ƒòGJ#19Æ®•c-kX››ÎF —½30 S*½ˆóµµ±Ýo;(Éö¶XDUf9ÆPýÌm/#æ`…ØÉ~·\ãmfƒúâJ<ç~ˆ¼ÊÈîö³#q÷ 7õZò½C“ÅB9}Ã;•d_¶.4÷³ P (y,Nùa80!áÕ9O1­ÉÒ µ‚Cèþðtq,`öråd‹ô-Fp‚WÞ?ÑtqÇ^èØV$×ßh9qÔËïÿŸøû0ø¥»Ý+Ë÷•d»²„¶K̘ xÞò4höaØ[ôËÌ·§Šgê%XŸ—A—j–ƒH!ÚHmÃFÿ°OØÑ€ãi'ù{°yn»Ç~þñž° ÈÃ0½@ •ÿÍÈBÕiDÙ®‡…„ç;óH°ô‚9 в!~ˆ»ùËYš+A|ñÌ’áðz¸è|êô¤Ù‘œü‡TÚQ+* ŒoÔ¥‡¡ž~ˆŸjªŸ*Ñ¡Yò Á¤¦G]M¹k¸!˜,˜‡·"ôžãð¥kĦdA(”W’hˆI–™+Q¡ÿƆ±ÙÐ"Ï’z:-ðª, °‡zw¶z¾¤*ñ|Sq6à ®ð£*šÑy‘”¼•]/°ê Ð@á¦oZ°h Ñ’Z§îD,À«½ê /@É‚} W/𬰠¤i·­™zå‰Cúÿ›)uS1Øê )¬e„Ûà¬çš+Ñy¦Šr*”…iÁ*ùê,p®°­‹32ÿ ° š¬z¢d‡’—©­±¹Õ6l{°™ë™—£šqÅášw—«& RQ°+°ÈˆðŠ­&;(‘X¯Ú#Œæ®ƒ Gm;êš8°5° «°ba ÐaýêIW‘Ñ5€­)0«²38²ð9[B  ¦v‘¢Å!HË¢!K¦@Ñ`®06p„ª;Ð:Àà´³Ô².K °Ž¹¬_‰nVQm£ûˆ«L™ ð­Å1–*sD·£Ù´ÿ“?AsØçƒOå‘*®3wµ|‹”@ahYf9#}á±y+ôÆ·Ý ™,g›[p0‹åF¹ÝÄb¤‡ Iþ´¢›o¿¸)!ˆB»²[½›º2nߺ ûI.껦û 1ÓdAÁ{°º¹a¸Ç›j{ë»Û°¼Ý@a€e€»­‘{“Sá^Øû»õ»å5žæ¹`¨RáWª¹(e@ÜÛ½ B¸ì1N3+æ{¾t½.¦¾ëkc\‰ªÿ‹#Á+ÀÒ)8½p¦2I1õ ¦¦±™åÀÐ3 Qþ,ÓäNnàâðÒh¾ælÞænþæpçr>çt^çvµá5.ŽÀMæ`æ7Í/}äU‰*ÖA(}îçŽÆ‚Ü„c‰®èD !~阞难éœÞéžþé þé“NéDà¯À+ŽþègÈ+œ˜¤¾Ô±<ªã¼r&¯> Ur}³>/mý}ëƒ$½ëËÑ Ö ìŸ°“âÄþß3êÈŽAÝì¿QÐÚÑÞ €ÿ¨Ön[âëÛ^ pÀìÍŽ«8î¦0í4Ò$>áP BÑp:ÍîŸ`"xj#ÍáNÔ`À6%]¢ïÉ 87RÄ3 Dê{bðí`"Ìc# Ðd/pSðÏ o×*âiäÕ Pq}Íïp `äcñ=52Ä3ñøG±ò !Jã^ŠI ´Åò¢óˆ’Õî)1 zóH °ÄÊñØ*oô ±0)J/Ò  Jº ¶š;pÐNõÈ_Á®Øñ=ô3Y¸Bö6aöXÝÒÓÐöö9÷8Hßõ×.ÄÙëótg1÷ö|o1ÀÜ«* (lC³‰Ïð@øÏy›‘Ú^ù7á÷qñ/‹"yaGúqù‚aßx"/g‘ª_j К-‘hñù³ï¬? ð ¾" 0ã ¾ÿûú&¯ 1D:1i|úÌ#¬ðÞÀâ 01Ð  àêÙ!àÑ@âÕp Ý,ßCæ`ÐùžþGBBŒŒŒ ‰B†DžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³ ··„„¸¸´¿ÀÁÂò;ctsim-6.0.2/doc/equiangular.gif0000644000175000017500000003742310667176710015445 0ustar kevinkevinGIF89aÊIÕ:@@@???¿¿¿ïïŸ___ÀÀÀ€€€ðððßßßÏÏÏ///¯¯¯ààà ```000   ÐÐÐOOOooopppPPP°°°–––222ddd »»»¢¢¢}}}%%%WWW>>>KKK‰‰‰(((<<<,,,444888$$$îîîÈÈÈÿÿÿÿÿÿ!ù:,ÊIÿ@pH,ȤrÉl:ŸÐ¨tJ­Z¯Ø¬vËíz¿à°xL.›Ïè´zÍn»ßð¸|N¯Ûïø¼~Ïïûÿ€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™}šžŸ ¡¢£uE ¤®¯°±²²  G» §³ÃÄÅÆÇx I»Ð»€ ½¸ÈÚÛÜÝ}  KÑÓ†µ»Þíîïðb èLÐä‡Ï ûñ H°ˆ…Z9i°+C}ˆ&¬+H±¢Åc &Ü’€„摌H*D«p±¥Ë—š.,c7…9@.iG‚5ÿ¤Œ¶ë'O˜H“*$‚qUxÀ™SÃN< ˆ®Ü€+€ KÊ[g ©Ì™ãÀU;©¢`à!mVdóêÝK¦BjYض}[ØQ“?§ò]̸1 *dó"Øíä> t„vÓ±çÏž˜@Œà ôñÀágQh€AËžTBkdN Î9Ú®:ÌhF»¸ñŠ tmH+F7Û;›ýmàé×ñëØÝÍ[À!vsç9ë0€F܈5 ÙÓ«/9Àå3àÃÏù Éæëóë÷Tk‚bÊò!_€pHôÕ~&8Š2Ì|Þæ0>þ0`Blà‚vhÿHSOá`„Ρ@A6áÔçá‹0²=¹‘!‡™xMŒ<öˆÇA ¥A"U๕£ýçã’L¦‘ÑFk (D„FâÑqÁ{Mvé%¢‘æÆƒRIýìÓ@*±ôå›p6"Toèf‰ L "ætàWþ ç „ aZrØY„í鯕r•Vè¤_úÀ†mœv£ÅÑ€ÑMÀ¦”– c{\Ʊۦ68D‚šjkaJZǪwÚXµªÑ€@YÐÀxݪ¬‡¶=ÅÇsú*€„lT°€†D¨¤ë²Ü¦ÎWŽÒ-«6Ž›†wW¾ÚÿíºØÍHªÔ&Q.¯p0ä»øÒ†ª ñF;o¿p„ƒ[¾7ÖŸ’ŒükîÕ©[ðÃdÉÔ $ ÈðGB¬1Es†«Hųñikùl»ñÉð¸{ È«AV»tŠòÌí™1$,·lF*ÁœÍ@oãAd©RÂò&“ÑsQxpŠm$ôÔ£ä ÈpóãEg¸IõØ :õõ',»åq"Š„.dÇýÉ¡kW’s£gìRæÈÝΖÀtÀÀà„£˜âᇮ¸À””=ÝÁ’óÁޱ£Ïdé7,[Z0xŠK#0Àè`úé úêªG€úé£n@Q)úBÿ—ãíKÎ °·â(Á3EonI xÎÁ2ˆ^º¨^@Îÿ: ú¦Ë~Š·“eõ09?`@ñ\p ¶hk<&$1€â.”~Po?‰ @àOè€êf ŒÔsË»²€¬ÈáeR[Ÿ".` ,ÃÈ€0½ûy0|@ü7¹8­ ß:ø¨—™…¡k@œJÈ<P‚zJ:‚€ÒE ~ ¢sðì ÀùÅ e¡2mØo(ƒ.|¦•ßáÐè&€Aèupˆ` cp€ ø¯07t·–AtÏ*wÅúQ0!<âÒ¸ÀPÌ<ø³Ä:ÎAÀcÄ?Zò’DÔ ð›ºpn&ðp#©9Gbf(Ø#&WÉÊœ„Ð`…(: Ž!.…4å>åd ­ ¦0 p€pr«DbË0Üa °¢.×02@@•¦6…ù€  É„„¥¶Öf‚Á'1[À)¬AÎi‚¡š8À·IÏm>@g$†&‹˜ó œ’ZäN4ÀSžõL¨BLjO}.â{þügµ€‚–áOÖDèB7ªPxó7íÌ¡ÙYN!¦A}è&€d“£ÿ0MèŒYc "9g!i;‚h€jáJ¥L)@e€ ¦Hé0pò‰‡;¹H5 §3Ø+ªBuÆ&õ«u€0èô lTJ)‡s0«Rð@ŠÊG°Ú©@=|zˆ†%ˆ0@8ÁP À5 kb©æyׯ†5@ÑÀ iª5ˆPç$âÔà DPt¬h¿JL²šµ )@kfèÈd-šÜå:÷»`u@¢+†'uv,CÿÀùÄ€õÂÕ@ÀÀK_»ŠÕ4ڂĶ›0Bà­aÀe238›:rhò­¯‚íZàWºH %m†ø˜!ºÊ $â,Š&Á 1Xü`+üv6b|c¸ºÛ±%W"Ž1ƒÇ›ß'X Âý c„sÞÙF¹Ì•±Ãš€=Ÿ=vLŠaµ ×N §ò§¼Ñèu¸CðkvúØ… ðUÐPí²èÛRùÌ% „¾Ûˆ™/\ÞB{ Ì{ojCÀQÑÌç¯ ²ÔÀérg-Ä%P „vi¦ Ì·ÏNjƒÁ¥Èá4…΂W6 ÉîÉ?©èÌÿÌâÝH›©Ðk “|?ná.èaM“Ñ8PEÀ˳™OÍëzª¸Ô‹úX€7Ãûˆ³çëÇîµ´šjÀxÒ*DÔ*tMWZ/›/¿DyÚèÞfÆ[êœX™Í„c`É…~8yÈ3 Ê.Pì9Ý_%‰m  `Р㪚á\š]ã™VÀ'~É? ®ñq@oìôq¸¦…BN3~CãO9 ì“(à€±+FÜ+ Ö0.Õ"®òžSøˆÑžW6ÞqãôQ÷¦Â¯õðR¥ïä>úýÄ äœÁáë!6ŠÞÿ„|G“ÕËò‹Ä¥NöŠM:RþW0/+YŒ`¸”8B¬@€ËËÎw|»f™ÁInô^ S„Àþ&,iï»äsø;Œ€€°ÓãG›7]ÊGŠ¢á"e1ÀÑ“O½s0÷1Wð€†ïG¨ÀhÒ õt”«>õW.&¯Îù?fAîÕRPlê üþùÈνJ@ Ÿ_Š%±•nÁ'¦:=0ŸŸz—Y›°ç:c.‰ /!ùoj@ NþÉ@t{&ÌÿvãcÁ/p$`X…r€võ'y¿6~2¥y3ì‡#“Dÿ„³EEñ€êq0–€|Wm¸QëÖv…çWp"Ñá3XÖ#`ùÇ*'^Ðn0eü¥˜„>CÀ”}Ù!x.p'„ µÅV` AÁ8¥Âo8„>gq¾÷U™ç6˜¦„T°Hîa*Žç|RØs,§w¸µv.ä–än‡ ð˜øtap¬çz¹Udkˆ–t»'§@`tñ†ÅqzU8‡ÓFu2Ø\VÁxzhIPƒLàZÑ…KBPˆ†Èkgy£õg¨}´pšFEX"ˆ„œ˜‰}öwF˜[âÃè刟x¡÷“<áp† Â3§Šÿèvz6dâãl9æG¢h^aYéÓ‡ù‘> à‹ÓV‡r(c¿BŒ±øGhn%<ýÄ!‹ôŒÐÈkÁ7vgö+ºXŒ~DHWâT¬á ðáiÑ7}©(bfhŠïpIHSÏ 5ʆ" ²HÓ8TV„½†7ÕeIêh+µ'›ÁŒ×A iÀØ‚‘¦pfIýXP9âê7qX‘|¶€§‘6ÈpôPcÈ“‡¹i’"feÖ–ry"“ÁJWð)>è%i“C†ˆ÷xjx¸‘Zh+CI”1†QWdúÈ «´ ÔAMé”!F…|§’׸}%ÈlÐ@‰ÿØA‘^b•G†’'–uƒV€,¤(s¹5¹–¹%¿——%—TàAq‹™Ñ&SYj©—àe”äç—IQ• ä–>Þ׉©˜Íµ‰è˜™S@KÀ3Œ˜©@Ž˜‰[v~.XèH‚ˆ‹`yÁ3àxš¸u‘sÈšcI–~(wH ŸA›¶‰[|™‰º—üxV)Q4f!‘dÁ0œ¢5Žá(>³8˜”°˜¹¸ WI2gñG)ô´n1xžõgbI jì(GD¡sÑÀžèLPY‘™Å“ˆÄ×i˦XÈ`˜¸Ÿ …›N©@ÈŠÿëhíC[9‹„‘ êk€ è•-t˜³°J0šØáy¹¡Ú„“)j’ àœIÜæ#©¢ ضyœhIpsjJ¢Ë#iÐi£ ÕŸÃXº—”¥lr{QÑP¤Á扤õ–z]J•—ôòYo*ñVèÔi(1¡Já Ê¥ÛTy—‡¤º£–MÊëµ"‚K±H §«TœpÊ™1zIÑ#ro¥h"–HÁ3¦)¨ihL‰È¥Àò˜žü†1Ðp@ȲÁ ©'}QHª9À¤˜ ˜Q€?!6 6HÑ Ÿ¨ 2©ÙŠÿ6 ¦vÊ›õ&Gš¥¶ñ J, š«ä Ê*T%¢®à“TÐ)‚ub‘ -Ú¬,C¨Ú*P™«•©ëÁµÙ­Tm‘j®©ê;ɪXI†s8Þy¡®`«¸ª®º¡ž•НD´h.!­W`k¤¸ ô Èʯ¼ã`‡°Îñ¬/°"g–Û3îó‘ÒP°™0,òȰó¬«lõ¯â 2 Ü!@Jp" Ф¯@Ñù±ó2† ³óö°#Û! EÚÐ: nz¯øÊ¢0ûrÃz«”4F¶©¨C«8ú´ÒZ6kIð‰º`—bå*µ‚¡¤^ ½“‚µTqÿðG‹+Kö¶§ÁŠlk#ñ‰±¤°JK¸7>1³+§zû¶‚t"kIPê^‡;ï`ȶÜê·6d뤖wVÉi“¨•í°¶aµŒ[.d*·¢@¢: 35Å y¶õH}›«0€k´—”Q’h²s!@„é> &ÈÀ‰û´»ºº,3¶®kIÀ¦O  œa¹LÀž«?+µ ¼·Ã‹XªŽw £‚ à´ûkÙ*½x®¡ôº²iþð¸î°/û±(¾T³Id Ý׳  À«¨ª¯@ ¿º±pø« ˜tÇ;1-QéÚ­` ÀOªÿ%å®Jp½Ý`«kq}ëÀ ãyµ”³¹,¨2«ÁaÔº‡êÁS€ ×®•mšP×è™×óÓzOÝg•=Ùw ؤٛÝGv<ÓbeJ, .=œˆ˜W¨çsB,˜ýÚ°ÝÓ~»Rƒ©[2€4äŒ]£P[M½¯)'´ Õ+$رFÐE k¤D »™÷ ËÚ'iy«ŒÖ R²(~TªÁ¢g;Œ݈À~†Ér÷|wª¶É‡]ßD€Âÿ‘ˆ]°Ý Ð6)C÷Ûä—ᩎä\ %Ò+®ù¢á õÉ=NˆËñ†Ôùg½è‚à†¸ÒÄäâjjaÎ|â;È8íÜÉ&™ºøíË+^vÑ—“§Ù£Í[CrãK&Éc;N®º½pÇD‰0‡àaÈr/®˜ƒ+ 6â/™ÖÈs•(BŸâ`L”¸¹n@ÓR(çG>‡`Ÿ¯PæPåe {¶† yàÞRs½ë•ðÖ–P.ò2âñ@ÚóÓm!|6i}[º–’+9Onæ~2Á,ë`áxN©_dLwî‚®®—%ºç|>égÿÊv þ] 0ÖЧ°•ô+A¨˜@“k©†éµ.ê:f…õãfäÐè¥î–GŠþ{â£êþÙ 0/KÐyð¤±6gúÐá’×–{s…®—¿’èN©æ¼ìÌXM¡Ls3ã!ÞðٸɆîŽn’ ù¹Þþí}4ëW`¤ I#üîÐèÜæëDiLï‚[w5ÿÒ}äÖXPÿX¥ëœÛ~Ðëu^Ý^ž p‰HjpŸ€Èò’.òb”óX` ¥!°)jMžRè`€#tí†øg7O~6í‰òTÞ\Óé®òûý,Ø6 ¤g˜Š-ëÐ ’ ¾,°P"£ þeÜã Ú<0°J£À„ %e¼õ¾$YR  4q~Cà¡bOfu@[¶‰ƒ… ‡(è@¡Â¦ù”ÿ:h¾œW‹gΓå°") åÊ–gá½üb@CX# `t;w²©wÙ ú‹™‚k@tê4€ ¼R»Ñ ‹çž¸ ‰`à‹ ³h1ßúâ «n€<:¤Àç üÄ·™„M¿Y@Á0êž “Ö_Yö.àÀ‰™‘³Ü âK[Å|Ö=}‚£¶QëUÆZ[Ò À3èP{Ï $©§;‰À<3Ý>@ð%Drûò"p€>V ÂÒ 0‡ 6(ï°=–ÊÀ—‘ÀÁáÈ£þœ€N:¬øÂ„ãîëž ¾@àœBꘀÁ©Lð•ÿ6@<¢Z‘ r;ñ­ÉŽpŽ.²Há2‘Dƒ„]Ds .tÔÍ€ël,¨EMÈ‚Ø*q¼«ü$€ö¢Æ º²Ã&Å @ €ú’Œ³–RøʹDú­L·è L+µû)Ëmˆq‚Øœš € P€Ê?i ÷tO =-¥”&¸Ø)AÎOk)ǰþÓ´R¨Òmø æÅŠ.P¼`CE7xtU,0ñÔ=Ö#s#0͉SHUÙ4Jˆ‰®5ŪÚUÐ@±$å4 ”b€Öز±–!£ÍÂrîôc¹â›Ùeá=£Ùçú ½ri`"kÿ·»²™R``An¿ €~©ß#Æà£I4àÇIŠ;2^eçõªÉL] ÂEø’Vµ)倃E®ò‚=^B+®H Ma8=Áâ‹1vÖ-h[þçS™ä’OQ5èqìŠKMY·^ŠExç©qÈØÉ‘”þgÊ£óÚÕI¦Š[ðhäÚ„Í:Pwf'Yª©ž7mœxëXíRú4{‘>*Å0º@0§*Ø×lÒÌzœ&KùªXšÈz—nºCøâÞœHwïoNöû¯‰þcò´´õ‹ tEXoÔ–ðá_2¸É­ ðôòËëÉ#,ÿÑ–O<àÇ yÀ•bFZé–CB’›.ˆA`ðŒSNådBЂu"'š fáùjѳžöL¦ÊêÇ xN@çb M܆èà–A— ú¬@N( D3‚Ú's°»Êÿ*™Ñ:@@Ÿüú¨2I·",ÀO+ Àæ¨Ó°Ù¡Ê§?-R‡@`œ(LÒ\ð‚­@ºKÎvAÒ’°M¨}PžÙ&q Ž2¨Pœ¨Ò˜(œ­x'N 4w„u¬X€Y±ª¨±VÀjF¯BĶÚA[DæQ‘Š-5À‹vµÑ4ĘFöŽn™“£­¶«Hª¨X [Ö¥C˜¬Rĵ¸Êu™ÝñΉ„‰Ÿéa6±’µ¾½d‰fPØÀ¸ –É ÁC¥[ƒÞ‡…Í ±n[,^³M*3:°€\-âÔ;Ôê°g ‘NçqOÔð†©ÿ“mÚg"n`l€ÿœ+Î,7#p`x™@Tòö/s¥† ²€P <1ªÕ&Mýo4dœ‹ƒÃRQ$8(P¬ta°SY>å¿M¹ ‡ü¿ÖÂvÏìPXØ€óT€ÄY •l@òŠäZµÉ9Lÿ‹`nj¸Æp‡ÜÀà` ¨>VýR¶[Ûð¡ ìÉÀJÃÐd˜™02¼ùëX Ð¸Æ Àqr\\cZÀCÅŠŸÍl’ YÍCÆí¤)¨AÛÎe„£%‘˜ÿA†r—Ë5¶A•1,K÷@Ò.ìëßÿEš R™×ŒÛyfš °]0 Yá„0'À€Ôî³ìÖ¸ÛM`[c Û> ÚtN2À.Z+a£ÖÂu®í0^^d¾WqK¼yNï$UôæØÖ¶Ú‰€ð*QîtHzærô‘eª¥¬›š+!ìÆ Y¶î!Öÿ÷ðÈ=¾eŸ$7X=ÍÇýwò¥/¨h¾2Ê ŽîÉœЀ›à¹@Ÿ9dWÛ ¬Ãù–¿=M/N¦Oºª/3®OѲI@ÄñýhMîl„÷zo  íÎ ò†À(‘‚®ÿm>N/zcx&´©öê`ÊPOõVç ËõZâk,=„ö°⾯4)LJaUè /`ù€¥mPILˆ/hÏù CHXP’o ‹xÂâ¢Oúd°1ÃONvª2Bðû~/ÇoE4«¯Šá$ Ç ˆÄ•È¡a m ¤ãɢð.²àÐÚxn¢ÐB ¥«F IP‘ÐŽezPŒi÷$üT!ê^ÁÄã 6§ê(£ s –àÉ(Q@­ŒíSvß\-9Và礫ìâdD+f­‰ Ë µ€/A<‘xÄGè€öLÿ1 €xþ¯(¦— ô^ IbQÑfqèl±°p1I­3‚+qm,p-Ìí6‘aóLaÏðÌÖâÜäØŠ@1 €nè`Z‚,„î>T ð-`03H@xŽ ‘õ1'4@ø"-lܰ p àÑäÑŒÚF4€þ0@¹ 8п€óq…•%°°N",æƒïƒk1cÇ !QߨÿpO÷*È„#;’ĨNÂLòFR}ž1 8XRg:^’ ¢>ï `3bZ¾1Ãq«¼ì>ºNî%t‘ó2ÂI.ü417ÿr—rÒ·P¨üí2@€d« ûí& â ÐñŠTßhÀãì#Z@ÑTÊ+°±!ÜÚqòð2/a/·À@†‰G¾QÈò5sÝ’à1ü@D°âɺpõ¢«Æd`ðqµþ«Ù”eRòà+·í3- )•. HS. ÷ªŒ?ƒsm`Z .ÐG¬³ýd³$¼€2añ2 L:ä’ãÔSNê„û>Æ"ÍìÙÑ9ŸÓ ¢3ŽÐR¬i€„ÁJ‘\´I l' CÌP<á#ì“PÁ&YJYÆn8Í> KÚ€Þ„ÿ'j2×4ϋҠó? !@³àîÌDâB¸ “/2„ÌRÓ (%”þè/· Ãâ –%\ Æh€â#RºkYÞò*’D1ï44’àœÀ@E ¡ÉšÀ¤”Ó÷à’H<ƒ#ZHHqÎäˆQÄ2­1 c!?åØs¬¬-m¡üKºX`7“„ 0K¢Õ®Dy+4oÍ @†K á<‘ÑP… ùœ¢Ä2Nr`àSATË“àEÿ¡¢x2NJà,çìï㥠«Õ¨íS¾+´Ùî(G·$ÍQ RÛ¯:‰¡T•À`ræÀXýÿn :“&t^hÕJ¦pÒÏr6Tva&¡1¿ï­Ô.Ó¬ ÀÕQU6Ðè/=ÎÕ© “d9ÆŠ²õ>Èâ *Ž-^8ƒ[_a]}qYD\• Ê•Kõ¸üU 4ªÚµP¢ZµoÙC¢ô4VÀ bJà5Iê!Nï3v`õhzÕW?’&ƒmBû Y#£BmõBãÅ¡`«Iº ¦f`¡p&s@öF´s+\ù® V`I3eɳ#ŠÏFÕ`]r4‚6'ëbèÄ@NàCMD`8vj@?Áf+Ñ(ÍëD©¨Ö¦è?S6MŽ“ žÿ$=€lÃH©&>€kãä>àb“ƒ…àòÖÌÐ6³€‚åš qóò#·‚Ïü‘, ÷41€(#`¯Bo#©ss¬rûáp}Ìq¥h×v H·#7¯šF« Þ€e• ø#@4'æÔsqwpwqs—žRw JÖŽ˜àw‰ñ~„­S3 MÕ)“÷x©£a¯°R5w©jõ*\–äˆ÷kÔ6Ó†×Wu@0·Ût0¤àS}TŽ•dnÀTIãVET«·~Yâz9ga‰i{ÿ¥{½uÁWiý17íŽuþè¯D>µT1ÀG`}OD~iBzí÷‚o-I1‰³ÿå ŸŽ tE‰ïŽõ|>õáTM’æŽun¿‚׊~18‡Ñ@ƒó…ƒçȃûeWçN„}•Þ”a¼v¿t}§2@5MÏw]èO}õi›Î‡O‡ux‹y¸$lX{I„‡x À×4› "5€  T>õé/‚µwsà‹3‚·˜‹E@‰… ˆ¡ÁW Êøg‰€†ý…÷o…Aõ èSc8f ðØî´x1¸‹5¢v‹R*¹“à‰ÉXu*ÕçS¡T“79×׊IA5y“ûøÑ`2gzUˆ…Õ‘R:‚VúoÞ‘4‘`„+q¦ósmaê¥~êÿ:qs ˆÃÈ‚¨·~j8!9NÐÙ¸ð¡8 <Æc}¡ÞÞ~ÊfÀ·î¦çcèÏøª:d6€–B "©÷%’ÛT€Ë­—R3¢Ö·Mò!V¤ç;Àƒò9œ?•QÀ#Ÿ¤çΜ½y8@„@À6`í—rä1),·ÀØn^ €Ç=¹Ih```dÀtýrH@XÀëb€n6”zH¯=ì—|®ƒ¤'<¼¡L¸ŠÌ?íY¼#K©6F©Î~ŽØœ h~U±h<"q%W%àtÖD¤$µj½R#¢ÖóÙE°G ‘;£Óê5»í^ ÿï9½n¿ãóm Eçÿê¼ úI($Z00n§D²y2ŠK¢ OfÁIÉÒhÖ|4‚ ˆ°€ î©f%¤)”p6/ñg€/OæÀY$$°oJLò Ê‘LÀv}ÊåÁyarØAL™ÐÚÔ(¦¥g‘‰Þ`! ÁJÁü·›à„F¡«BÁ‚²«'%º#o²ñ@yáÈÒV+\¬°b™wQ>9Þ\hlåän ˜#«´ú4ÀÁ Ób+U­b`Ûì¢,q˜Â°ç¢k„8ô†;¦„ÐÀÅ^Øâ›¯¾¯t`ì¶ßPª)90›1}Vº _ZÿB‡üåÆc[õzƸ·0ݾsܱÜý`.›ªÁ!È+Dï1ܲе˜¿Ãxœ³ÎÓVr€:H‘)º\tX@2o(ß¼•§â¹³ÔS÷¹ÀÅ>ßÆÙ…f´×@•ßE¼#‘ÌÌT³Ý¶´bí].¸ @¤_ãÅûñ‡ì޼†Ðº]¸á– ÷³ÞòÇušyCžDØic|5€'ཇsÞy:T¬xf<]7~‘£NÄÞ·]z€ã‰­FuzÀµžãž{!ŠîÝ»rÍrêOþ3ã&ŒÀ¦@@y\ø¨»ôÓ¥tïu àÿ¼fã =|Þ«ÓÍÛgÖÈ!D@€tÌõïKËõ·!½Xzo´ ˜}­ëKb)ÛM¢¿n™›_\0°À;E¢RùkÙ[’ ´+QÈàw6‡Àº t ÔL§¸€¶LpaÆÀÁƨfÆv œ!Û$ Ú-ü޶ò¸¦+ÝÒvˆCª z4\âξ#Æä®ó/ºÄs­ÀQ*!ã²6&‚Ñc0bYò;ÑË\WÖ ¸›¸±Œ I@RÂhG}1`lr„‰Ö..üpbâ ùC îQ&øÍ)+2‘ 9ãå¸ÿ"AªÈa°Üã(Ip|Æ‘¢œ–J>É Ñ;A&á#"þèä3%8§QârUp£eB(Éí¨ •­6RÙI^.„p¹\&ŸòˆÌ„H^‘¤0/"DDn›Ï ÄÌoJ’ÛÈHÅVó#!Ðb€ p¼qþ"”àœ§„J Onn–¼Òé Mšs7Ѽg-oIσg—½oF/ùS «Óžf À´…nƒŽÝhe.ƒÑ_俉߱hEˆÑ$¼’¢š€1?ЇEr4¦PáKm‘(7%=)J×}Òo“5µÅ Ó£:ʼnC¥ÅÄ8 ÿB”§ExåOw4=.5_D*WõÁwfµRên jÒˆR•¬šÉgXg t5®ŸÃi[ëÐPAõ’þ\OÕš™‰ °®Ò˜\  8K°uè!'ɶ•~úS“ðkf0@Wž!1,gCQÀb¶ ˆ$òè%j rKexR´Ú7(³³²ŠJ_›ƒ»J "ÂhåÂ˦ֶk€él‹ˆ ÜP¸nè¡S/d¾èu‚AZpùcYåÎzÆÝ. …]7h@y‰j-—P‹ºá|ýNx)ûÚ ô»ÜÝV¿›†ëj^'Œ.ä>°?±¹73¹i®}çåùrWÿS,°EÁŠ!À)rP­//Äú4Ø¿_XXßé¤ûñw±àË›[v¿aÃOü54ÙŠ½V@@ã ÝÿÉü៼9@ù @šÒˆ…Êÿµþ žr•ÿY 4ßùm“LZv   v– œ N`0$ÿ÷¢ ø‰ŸÓI‘•-”– nÞ Ö g©à ²A €à6@ùÅ ^àñ¡\qÀ nÞ–AÔ]Ï@J`ÈM_rï9ár1uá“8@º VìýgЉ2™Ò ZມaI€èá¤áÉüÚõèÙh¸Ä °Þ–äý¡<@âíñPÀœøàNŒ71bÒ->bD"€Kdb]@Ћ)†â†¸O'œÞµâ8€$Ààá8€ú@„¯Qâ,~ÆÑÁbá©ß,~‹-EÀ.ÎB/z½#"áè\1 aü!ãÿ8@¹5ßù8ÐÀ)º¨Oáù$€€â6ÂÁu`£lq@ê¹#À€¨5Kºe€¹ùc»iÀ?š›¨}ãù\U»9c=¢Æ#z™BrC/š£@ :‘@²£»A¤8Àf5däMÞFŠä¶ô'~dÒMÀŽäJþL|d j#KÊ$ÔÀãKÊ#ÎdNZ…EµŸM:d;êdPR…"údqu€, eRR¸cQÊ*eTÖ$ SÖŸ$¤Tj%h€GZ¥l1imåX‚’o|¥qU’åZÎ5ž¥qa%[Ê¥-hÀdà[ÊUXÎå^æAnx^rVZòå`ÒÿUæv]À'æb®AG&w%52æH‚Ë_>&gNNfNZT]fq…^0n¦N&À"~æly€›Œæ\@Mžævm€X®fT–äk"XÐãl%\£mnWЦnÖcx¥o™j gR¶fS'ÉfrR¦˜ds¢¥fB'2OUR§q…žJ^§b€inçv)€Â}'DÖå]Žçlu@LžçêŸe®§qQÀs¾çæFOÎçmZç}zóôæ~rXè£þà+ (—%fp(Â%@¨g‚—4]ƒ–àrJ¨©µ§dZ(vEÀÈg†ÊW}rh‡¾V~Š(·q@Hšh£õÿ~¦¨‘5@ôg‹Úó¸dŒšÚŒæ¦~Žê¨À%¦wúèk…g:ÜéÏA(’&éé’†ÕƒF¨“Ƙ˜§”ÚWØ¥•–…f¥–Tk†¨—ΘŠ)v‘©™îš¦ék­)›¶i…¾i]Å©œÎi˜ÖéÝ)žæéžfUŸú韪K ê j¡”€(¢…F©¢2P4ª£>* Iê6=h™ZjÆ)i¦Ò•vjë%¦Z‚jž @“Ž*©.@žªÄ@€µ¬*òÍhö½* ‘^ŽÎjëͨÚݪâäF€îªîÕ§žþjÖŒkëmkÈ0j¢-+ÿai¤>«]P*ÿ§N+á%f^ëHA€ªn«J@Üß·âP@•ŽëçU +º†Ckyf»Ö Ìž¼^ÎH«½F¡,€©êk8@ªj«¿RßTÀð ìó¨+»"ì÷5 @¼6¬X@½FìJF^¬-ÌN¥nl1^ÀœëÇ&Ä @@ìÈj`µ8ÊÖ‚d¬Ë¾d¬ÌnùõƒÍÚ¤ÂjžÎÒÂ!­«Ïe³z¬Ð¢]ð«ÑZ¥˜l‰Þj§s:mCNl¾*íÀhìÕ%ÀžìÖ¦éU-Øfµh-ÙÓ~-Ú~%Ô9NíÊZ-Ü:e ­Î†ìÛâ-^*@àÿÇ ™¬þ­o2@«J­…>ÀLÀtîgJT൶-hgäÚ&Ôî¯îÝjîiâl‚jÀ¤U€4°ÿ«@иc-"€l¬ lÐ/0èZ"ô+‡®lÀÀ ®`!N ±ø^@#@x0‘)qtÀ7qè>±'@ WÁŒ†cqï0$t Ý*ÖŒp€Œ1‹¯X,@{ñG̤M(‰r (À@Mñ8@¨"@Üp 7qÀp<rXuã"¨/$sr H€òùd€.x×dò&wò*‚N0€/£²$™²°@;2+ë2A|24È`Å82ДÐK…´ð.3ó'èD8‚r¬›,ërÃÿ˜2KÑ P`‚*7ó7„N,Â;DBéaEFªq-`s¹åc:Ž…%Ø8Ë3Ÿ$B; F(GD¤›@šc?ûó?û3;›[‹¡[³¬ÇadÂ#ÏóB É_(À‚0Y=h²b0ôEctFkôFstG{ôGƒtH‹ôH“tI›ôI£tJ«ôJ³tK»ôKÃtLËôLÓtMÛôMãtNëôNótOûôOuP õPuQõQ#uR+õR3uS;õSCuTKõTSuU[õUcuVkõVsuW{õWƒuX‹õX“uY›õY£uZ«õZ³u[»õ[Ãu\Ëõ\Óu]Ûõ]ãu^ëõ^óu_ûõ_v0` ö`vaöa#vb+öb3vc;öcCvdKödSve[öecvfköfsvg{¶´;ctsim-6.0.2/doc/ctsim-tex2rtf.bib0000644000175000017500000000200710667176710015620 0ustar kevinkevin@book{KAK87, author = {A. Kak and M. Slaney}, title = {Principles of Computerized Tomographic Imaging}, publisher = {IEEE Press, New York}, year = {1987} } @book{HERMAN80, author = {G.T. Herman}, title = {Image Reconstruction from Projections: The Fundamentals of Computerized Tomography}, year = {1980}, publisher = {Academic Press, New York, 1980} } @book{PRESS92, author = {W.H. Press, S.A. Teukolsky, W.T. Vellerling, and B.P. Flannery}, title = {Numerical Recipes in C: The Art of Scientific Computing}, publisher = {Cambridge University Press, Cambridge}, edition = {Second}, year = {1992} } @book{FOLEY82, author = {J.D. Foley and A. van Dam}, title = {Fundamentals of Interactive Computer Graphics}, publisher = {Addison-Wesley}, year = {1982} } @article{SHEPP74, author = {L. Shepp and B. Logan}, title = {The Fourier Reconstruction of a Head Section}, journal = {IEEE Transactions in Nuclear Science}, volume = {NS-21}, number = {6}, pages = {21-43}, year = {1974} } ctsim-6.0.2/doc/alphacalc.bmp0000644000175000017500000020576410667176710015056 0ustar kevinkevinBMô 6(Æs  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÐа°°€€€```@@@@@@ @@@@@@€€€ÀÀÀðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀ€€€@@@???¿¿¿¿¿¿ïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÏÏ¿¿¿¯¯¯___??? ```   àààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððð   PPP///ooo¯¯¯ïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÏÏOOO pppÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀ```///ßßßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯¯¯___ ðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ   000ßßßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯¯¯OOO```àààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ    ŸŸŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßßß___```àààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀ ŸŸŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßßß___pppðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿààà@@@ŸŸŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßßßOOOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿoooïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿@@@àààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððð@@@¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïooo   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀ___ïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿```ðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ   ŸŸŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïï???000ðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ```ÏÏÏÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ___ÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ```///ïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸŸŸÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPP///??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????ÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ```¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿ŸŸŸÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ```//////¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸŸŸÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿppp///ïïï???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸŸŸàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ   ßßßÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿooo000ðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÐÐÏÏÏÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿOOOPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððð ÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPOOOÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÏÏÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°°°ïïïÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ000ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðð𯯯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ///€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ```OOOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÏÏàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÐÐßßßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿoooPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@@@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@@@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@@@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@@@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ```ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàààïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿooo```ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€___ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßßßðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ¯¯¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ///   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðððàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿppp___ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßßßðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ ÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ000¯¯¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ///°°°ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÐÐPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿpppÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿppp```ðððÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°°°???ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿000ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿpppÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿpppÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPP000ÿÿÿààààààÿÿÿÿÿÿ€€€€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@@@¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???ÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ   °°°pppÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿooo€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿààà@@@€€€000ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ```ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ```ÿÿÿÀÀÀÿÿÿðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀ???ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿@@@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿpppÿÿÿÿÿÿÿÿÿ```ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ___ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßßßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿààà@@@000@@@ @@@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿpppÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@@@¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???ÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@@@¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???ÀÀÀ   €€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ ______¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???ÀÀÀppp ppp€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€AAA€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ ______oooßßßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???ÀÀÀÿÿÿððð   PPP```°°°ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððð###¡¡¡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@@@¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???ÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿààà pppÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‘‘‘RRRÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@@@¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯¯¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???ÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÐÐ```000ðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀBBBÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðððÀÀÀÀÀÀÿÿÿÿÿÿÀÀÀÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@@@¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯¯¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???ÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ   PPPPPP°°°ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÐÐBBBÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððð PPP€€€ ÀÀÀÿÿÿÿÿÿ000°°°ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿpppÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿààà pppÐÐÐÿÿÿÿÿÿÿÿÿÀÀÀBBBÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðððÿÿÿ@@@ððð000000ÿÿÿÿÿÿððð```ðððððð°°°ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßßßïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÐÐppp000àààrrrbbbÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPP ÿÿÿÿÿÿ   ðððÿÿÿ    ÿÿÿÿÿÿÐÐÐ@@@ðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ___ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ______ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßßßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°°°PPP€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿpppÿÿÿÿÿÿ      ÿÿÿ    ÿÿÿÿÿÿÿÿÿÐÐÐ@@@ðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀ???ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïßßßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿@@@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððð000```ÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ   àààÿÿÿ@@@@@@PPPÿÿÿÿÿÿ@@@€€€ÿÿÿÿÿÿÿÿÿ€€€@@@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ```ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÐÐppp àààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ``` @@@```°°°àààÿÿÿÀÀÀÐÐÐÐÐÐÿÿÿ°°°ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯¯¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿooo€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°°°```PPP   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPP``` €€€ 000ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@@@¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯¯¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???ÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððð   000```ÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàààÀÀÀ€€€€€€àààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿpppÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàààppp €€€àààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°°°???ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßßßïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿000ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°°°```@@@   ðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ______ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿpppÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððð   000```ÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ000¯¯¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïßßßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ///°°°ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿààà€€€ pppàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿppp___ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßßßðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀ```000   ðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯¯¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððð   @@@```°°°ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ¯¯¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯¯¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ///   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿààà€€€ pppàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€€€___ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßßßðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÐÐ```000   ðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàààïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßßßïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿooo```ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ   PPPPPP°°°ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ______ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿààà pppÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïßßßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿ïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@@@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÐÐ```000ðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@@@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿///ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ   PPPPPP°°°ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯¯¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßß߯¯¯ÿÿÿßßßÿÿÿ///ßßßïïïïïïÿÿÿÿÿÿ¿¿¿¿¿¿¿¿¿¿¿¿ÏÏÏÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@@@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððð000```ÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ@@@ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯¯¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïOOO___ÿÿÿŸŸŸ___oooÿÿÿOOOoooÿÿÿÿÿÿ??????ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÐÐppp àààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÐÐßßßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???ÿÿÿÿÿÿ¿¿¿ÿÿÿÿÿÿ¿¿¿oooOOOÿÿÿßßßßßßÿÿÿÿÿÿ___ŸŸŸÿÿÿÏÏÏßßßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿoooPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°°°PPPPPP   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ```OOOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßßßïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßßßÿÿÿÿÿÿOOOÿÿÿÿÿÿÿÿÿßßßÿÿÿÿÿÿ___OOOÿÿÿÿÿÿÿÿÿ___ŸŸŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÏÏàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððð000```ÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðð𯯯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ______ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ___ÿÿÿÿÿÿÿÿÿßßß¿¿¿ÿÿÿÿÿÿïïï¿¿¿ÿÿÿÿÿÿÿÿÿOOOŸŸŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ///€€€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàààppp àààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°°°ïïïÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïßßßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ___ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???ÿÿÿÿÿÿÿÿÿïïï¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ000ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°°°```@@@   ðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPPPOOOÿÿÿÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ??????ÿÿÿÿÿÿŸŸŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïŸßßßÿÿÿÿÿÿ???oooÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÏÏÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððð   000```ÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððð ÿÿÿÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯¯¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿOOO___ÿÿÿ¿¿¿???ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸŸŸ///¯¯¯¯¯¯oooÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàààppp €€€àààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÐÐÏÏÏÿÿÿÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯¯¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßßßOOOoooOOO???ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿOOO//////ïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿOOOPPPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°°°```@@@   ðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ   ßßßÿÿÿ???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ???ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿooo000ðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððð   @@@```°°°ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿppp///ïïï???¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßßßïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸŸŸàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿààà€€€ pppàààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ```//////¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ______ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸŸŸÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀ```000   ðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ```______ŸŸŸÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððð   PPP```°°°ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ```ooo???//////ÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿààà pppÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ```///ïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯¯¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸŸŸÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÐÐ```000ðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ```ÏÏÏÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ___ÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ   PPPPPP°°°ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ   ŸŸŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿOOOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïï???000ðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿààà000pppÐÐÐÿÿÿÿÿÿÿÿÿÀÀÀ___ïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßßßïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿```ðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÐÐppp000àààÿÿÿððð@@@¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿooo___ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïooo   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°°°PPPPPP   ÿÿÿoooïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïßßßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿¿¿@@@àààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððð000```°°°@@@ŸŸŸÿÿÿOOO???ŸŸŸŸŸŸ???ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßßßOOOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÐÐppp PPPŸŸŸŸŸŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßßß___pppðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°°°```ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßßß___```àààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððð   000ßßßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯¯¯OOO```àààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàààppp ///ßßßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯¯¯___ ðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°°°```///ooo¯¯¯ïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÏÏOOO pppÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððð   @@@???¿¿¿¿¿¿ïïïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÏÏ¿¿¿¯¯¯___??? ```   àààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿààà€€€ @@@€€€```@@@@@@ @@@@@@€€€ÀÀÀðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÀÀ```000   ðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððð   @@@```°°°ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿààà€€€ pppÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÐÐ```000ðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ   PPPPPP°°°ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿààà pppÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÐÐ```000ðððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°°°PPPPPP   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððð000```ÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐÐÐppp àààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°°°PPPPPP   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððð000```ÐÐÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàààppp €€€àààÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°°°```ÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿctsim-6.0.2/doc/ctsim.hlp0000644000175000017500000025640210667176710014265 0ustar kevinkevin?_ÿÿÿÿ]ú");","')")(("(`),,`-.aAnalyzeandareasautomaticallyavailableback@ground projectio„nB  beby7culatedcanCBBcentercircl`ecommg@splex-valuedConvertcoord in@ pscts imCTS0mT(ext t'currddatadefaultde=tG@sdiÐalogm^stanceEB€equiang¯r linear`fileFs ¾Ä 0ingForforFouriromf„un!sgeob Pygraph!MHamm;hl€p'image sininsiÄtyrpo;XisJIlengthobkofopt7lonO s 0soutp utPar³elJp`rï0sp»o@rmphanÜP0 @spixelÀPlotpo…Ó€Process@îî pøAr(`tórºrænstDru "rotÏ sOÇanïgsett…tdsuA visorôh@niquetªh€attheTh en6hisTtotransÔ`6! °sUpuXsed_"d"sas¶viewwillwindowW swith!"")'(&()(-),).):+,&,---...]/00,0@0.10.5411.1.010€1161980322.2.033.44.06:://=[[],@]].Aab§A veabs_BbulimisÜ_ch*2 01!,e±3oluteAcknow@ledgem_sFaŒQctuµA(ddadÎ!al‡ @Ñdjusœy0sA /t• s`saf…ÁAagaiÛalgorihmès'A t 0 0vl;PA yÊlá|alsohQamM†lag(ousoPys isAND›leÆA¥Canoû€yANYapp®AliedAy 0>p§ach pri“arcUäa² eäA `aÝ$Arraya0tifWsAsASCIIAskaMk˜gnDtÖAݾuã2A;?uvoidAxisÏ#;uE5Rs'BR bØbasp¸B icbatchB54b ejeb$egbe“berbeowulf bestbcerw-PryB €bitBMPbGôyboxbrerBdbuÊttÜyCÍUô™ `on €×lc°Õç5-zUC0D‰E6ÉgingçÈdchíclPälickClipâpbCloSyÂl²rcodA\ÿ ŠŠ@t0?¯ @# >umÞn C0m9ÐmboC¡¦-@ ­m¬Äonlyÿ*iÓÔxÄ^/ Ppë&UbctyÏ P' on) ÿ V èV ð¾0PÓ<ÁptÓE'@|µž'S$,P%erP ,E rý nfigîuÁ%TsŠaµöl¨ rüol·7U÷ €Ë'Ò'ÙŒ!nv¹2Càg pSpyright"C%CPU'sxCRC“ @ dý 0s — v‡µ€cross-p‚óCTCTMct žA'4hcubiÌcC88@lyHH ŒWvzxcydDDamDAMAÀGESDBDdXk(>ss>0 E'depgree±pç÷+¶ib'A4°h s-Sdev»­^ D D½HDICOMdiffS¾ @tdiãàalD Pü p9œtD 0plyÁ0oryDiü…, ÌcužMsk9 Xï)  s1 Y§ß¸rgû Dp videdÂlo€cdodocu»ÇPõ(Psdo:Ôn' mtdÍ+toub§ gDownloadDr DrawdnDE ueDumpd ªdxdyeE»häˆl7':E0s@}sec@qdpož ztÅ¥e6ronp €4se1qw ly PØpec vl å yexa_ûùs!pÍ eÞc Pd0UþxLõ Ñ ê‰ ½?$E 0@gFDz anFanfastÎ YuresFFTfftw`field ôJešdö:esF– ‹ ásKfirJQ= dFo- fF)/yf¤oZ gF¼OR¥8<£9©9sA vm% Á uJ G;N;-áÿ FRfrÔ•™kûR F @yPp-/'FŠtpful\lF•[[a{F»ª[dÍ rVÀGgaugeµéúl0t@¯ PÏæKÜcGpø[@y\ c'g£ nsGlÄobD nuG\&L:s@s6 : ûrh [-+M widthHJ;hasha ve[eadhêeFh H He n0'sh±herHF mO+`ryhowH0htmlhttDpilifI1 if2if^2I7¢iúfoIÎl-;nne  ³ aŸyIÿÞ! @¢‰ _ ]@InINinædÉ*5%\ØKU%’i¾nê  l`’ YI˜*w=M  p'{ 1 ed:@Ù ŒgerIÿ“­ ¢@¥-å  ­-ó0¸=ngpµ ~(‹P o`rod"=ÞI?'à P2-CokÏ Itiüt'™0,ÅBfÛKayK?n€KeyKIND¾@elsLAMãg*e r} d rnɆ stétLj.p>2yösl¬ bp@ngLibr1 e6sy¹,ne~L8 nsí`5 m8m—óFµdO uM@™!ssª@sM—Fo!psMiooøftm½àr © ˜ifyZ^stì ˜seMõ õtiù?@ú— P0yM3@/ th´ 3 gne[N¶al7 N DCwñ need¡sNeg- nhÀnewNon‚l0izedN `OO R dfyUNud rn€sob/ëc) OFOfoffonO]^e »oèOÿì=0„@ŠPØsopë Ðp•éPdO@s¶!!¾>ORorrOùor‡ 0iÜ·`”jrO• YûpP“ ´p$nÜgp¬Ì `9PPÞ Q vpñngPdxPDCÈ qtÊeüdP0ä`„ Fg šmiæ onPG˜MPh¬KnX'P¼;fsFhm[pXjPhY p@l„ypglspj"’jtpjë PlçZŽ-8…ûZ« otPÇ „ÍPNGÔ(Ù8^P¨­$²ýmcPgž¡=(on,rüe-µ07 ^  é$re–Js3;.QryP‘ t‰o~rÿNOO0“Pÿi0P00Š– `tfpX¤ < tœw…@spub>p ‰ÅóQué‡qu]ruÈ%¨usr³R¸rA)é0izë%R @@fûl R = @¢ adÔ l-val´ world¼Reª×ÒÊRÕ}çà7í}ng%€± ®ãMsgleKÕþR¨a£ »  ˜» ïý!™·R0¶"ÔŸ Š? 0srGROIrootR=¿n<ü Û ow(Rowssr€pmRPMruÃ(úsØ S+m  nv… âd Ì Sÿ, E o ŠÃ Ì0ÿÇäëNPúT"áMenSdŽGPØorS€-’g<0þS`/,Pn0@ç4в*eS@0¿Îs· Þ?etI?M  !,” gp½ª a2&à rx €llShepp r-L'shQ 9 u¾ É . ! sShxuffÔq° %tæS¹lyvŸ(€.Ý3PsS¢ ß× 0MŠSª®Ë'sàhS “ 0©MP*-tue5w¹SOF@TWAREsA sß 7 o d˜9!E£ ã sqrž@3helicsÊÀbug¨\s>+pacheBsF%#Gabõ l­µ¢ ®[pubI–0 ]È ;i nspir 3ifnvßôŠ(¸@­¸KŠcio€uslyCp× t˜$µEhisŒSˆdG¨ªÏ%ˆM#ê×?—%/£ÂFži  €……&ãÞ„¿‰‚ã¦“× gß•!ãêØ Bÿ¨{Íù«ˆµ"b@rÑ!)1^N0ÈB7n館Æ6/á/Î /ÚÖÙA ¹  0 ÛÐ/G/ 1Ÿ {/ à/:ûØ1uÕ1 Ø€E á‘G)žP%nn¶á$Ø%@#Y×D*i#h}T¶G³ [ K o êC„dlogoK]“j%ü DÀ V€ÕÓv “&c“ÿ;Compu‰&ŸÒ­KestimS!óØÚOQ€”v %[€ ǯ”â2,A?rojeJcØ&ˆ¸3eNBv“,0  6à ±¤¦K.@[ û2]&@2Ü ØPCj~ ‚¾D0Ki>Dtí;nuˆmerÁ Ï};analyti0c ¬ ,…ƒÄ[7roÌdut»à—ãcept6H .Next*…~ÁºÐ Ú+s²ls( ­oÑCiÞŽI#iE +€ &€F´„­DÿIhopeï# enjoyR#!á :ü  1h  ¨  Î8J) E ¨ % ÉÎ\R  F \€¤azãà!ž3Ñò €³fô„“¾ºxeW)ÁoÀ‡PÐ y/ / / Ü/¿Á/B%¨ F 1ŸJˆ@‹F w å ÆsÿJ1 w %Ü >ܹýs?§F ¶ oÀ ¬€O0–ãA;Vãxîr–卨ùy 0~0*¨0Õ"0ø) ÿ/#õ!" &ß Ø8H3üB ¼Ç ô (¶& ó õ r ) ìÃBÚB0ŽÄ% ˆ1üGTK7€gtk9),ÜdMotifeW€CEnm_@~J„+ XH/ Ä W/f ª/› *»/¬ &+« ¸ /w å )° "Ý4¹ÿ¹%ÿ²:B#¶ ' 1:e' X À¦œuàL1å X Ð%½ :àÑÓU¤' ok ¤€&Iàáí&ïÎ!¡¡¤§¼lD¸s&E0ÔÓRS!ªB߈‹ºlZB¹ Éó¤%J9Ü1 Ý1Y ºQ± ó¨ 7›$x¡$ Þ@€Pb,7 ˜ kì~KcapabilitfyÚ €dFC`scripiD¤ºÃQñ/¢¸/º/»/¼/¾/ ’/ ‘/ –/7X ¦0` 0=r4ˆþÐr7:Ú¥Û —/ ˜/?oå1sõåURGžN.¦@%{ (žÓ†'B,åU8 ¨@€Xj„'±1(¸1R)¿!ÿ/YåÅ:1Žõ± ¸ÐHO)U¸€%¶÷Ð]V? N€¬…˜:G½¼*]2Vd2 ØY2/Õü  ô/”… I/:¸O1¿Úþ  Ox€GåN) xP%ååÎGŽ¢O @¿E|ICÕ ð1¨‹ é÷ ïÑD³ jU?S_r÷ "Hæ;apgdi€x  G”'¬ v®Ô'¼õ/¬¦x«@ xF1è™ ¸’ Fu0,¤YÜO/u%4ÿ4Ü¿ÙY·F,;€ D€ $®TãP4Q4xd2Z ÕçH(.ö/íËŽ0;modú¬Cš[hypoth&e`3 žÍ1u)Áü( +è…O , š5  /‹/Þ /:uf1§÷ˆÿÿÿÿ fÙA àB) ,@%ò à$f³@#Ú ’'@2€ 2€%<-ðP´NQV*Å:œ**Žf›<8á UÜ‘*º%ÝŒ"[eJrizZ KTˆomou phy ;Acad& ³'@,c#PressNewYork$³K@# €€‚ÿ/¿”'@ A8 >€)$Pä´N+€170 0‚ÿ [*L 'B  .1974Út Ü–Head3SectionIEEE[@Transa sˆ3Nuclear)cience ,#NS-21 ($ } 21 43.$K@.€A#âЇk AµA1 2€Öáð!Û0 Û J ûuÞ,!çÁüá@82 ÆŒÞSInterÅveÊŸàkAddison-Wesley$.AÙA#Ñ1µA B1Tÿÿÿÿÿÿÿÿ ÿÿÿÿ B-B#ÙA-B" ¤1â!ÿHA BuB1õ1 ¾ƒ uB¡BeDÐ y^ì4ì F‚ “,-B¡B% €,Mœ(œ€O<  ›uBADK d€7uzr€ ‚@@ ãÑò €‰ãfô“¾‰‚ÿÚ fDH…þت ”,;Bc:istsg”D Ž L•ر‚ ùP o¾5â¼P2, Ú ¾3varioussuser-VtrolledHCproducingQ„Ó…0Þ$ ÝD Ð [ ¿ä¢ tƒ¥¡Ç p„ µÂ Seffvely G@CknowfgJeÁ²æ î¸0aÈ rÇ ä0ý@#dealsQ¬0ety\”ì• ¨ ® WÖ Ù BF†,Ñ02ª  6$¡Be€D#ÔE6ADªD1C ¸”ªDÓDåF 4ò) eDÓD%44² zéªDMF7€ <€Ó1Ò/’¿.¼Sgeometricalä;des cribe/”À† Ã;BŽ3mposÚ–È _ 6T;IÏD0 2L+ shapeY[s`pecif]µKBrÇanglCu PF3sQäorsæ( ~–·Î®îæ“íK„li5ture…"SÈtructeHd5fI÷" ¿C )YloHØubl(ishž®ù­X(Žƒ( „+03N#rz@s yhŠ[ÁÜ"defin:B˜¦ÓDåF; D€M&&6‚‚ã%:‰à‰‚ã„ñw!æÛêA›3#ty"ä?{S-^ iÔ5Kr´ ‹vŽ l‘N®S¾ ca  ¹#]ˬf /¬C </E5MF*G1sÑ*GSG•H ´ô) åFSG% ´´´ B¡*G•HG€ \€CòA·DãTîr üYØ`vf7­cUndersd-ØÊ|Ë‹7âmpö UÔ+aTt›¾Ü7p Õ"simˆulaEàÉà8 Å”SMr.[ma nu%Cr:_Ebg¦$ æ zP£ITQÆ;flexib0leCt`ÇšKtremend…žšÌ ¯zH|rН/¢—/%–/E<SGÚH1púíÚHIBI Üdö)•HI %d"/ÄÜ?6ÚHBI@1Ôl)ÛxãR 1S§!ÿ/ât/m*/H>IŠI1öU‰Ž ŠI¶I{L¿Á÷,BI¶I% &·< z¦ŠI0J, &h£WÿÁ›&N [#Three %M°&0ý12 €`3v[]$î D+ :X¬´¶IÜJ@KŽiä9¡€c„Hò  ƒƒßIp@Y@úÛ N ì #€ R\ $ ÆP#5€=4 ðD.  w  ö@°dÑ'0JK&  ´J¦0· BÜJL- (€¤…'€å:¦%d O¨ ˆÕ Ç™%OPzW(„#Æ% 0Ä  3aFvà ¡°ð3z… >(†¦›=J´ @\ N`( @'+@ (  @+denotš3large st;iD g9àýÔC7U ?30‚ã /8(ù'K+L&'ñ/PAL{L(p €‚l‡9";Xforw´%,§&#Dpr—*€):G;+LÂL1JŽ ÆŒÂLíLN@ XHLÊð+{LíLÀ%çó;uÂLN\ †€þëé1K:”ƒ;,S¡.ÀÜçõv!— à ΄^ "…kkSX’`0R ]' È¢t @ N³ €‡ JG BúÅø i Š$Èš Ë D, ¢<š<"&6£ƒ  $bP ,KëÏN˜QPÀ n€×y+}ñ¯ga}ñ“a" qº¾ðó^!»0 6Ÿñaº l<g6å7 nÑ•#Tyej ~à#watcËðö+Ê5ª(0 Üö?–ðOQ3äT¾On`#ag8ainƒ`ºñÕ“MP'SVÀ z€'ö.Èò·JÁÎòPQ$òâÚò-òÄò¢# 7Þ)"¾ÁOÃñÇ-R#b&gÅ!Æ"o' zÀí‚"N)5î madeN ¡Make„€#checkõ!+You'llÐÜsÿØzk%;0MJ±S‹–PôÄdïF˜QTEà X€#(Wô^T aÎ8ì*+Tha„t'žç !Á³øË †©Ëg˜AÆ;— ÃN¦A+ ̼ú%Ý1(¨3U 9sÈ Se xperik ts8&´¥  u Ï9T g=Aî6-Mÿ 3Øc< S''S=T&9ù/G7T„T1}ÆŒs „T¯TûTf ªÁ÷+ =T¯€T%ù Á·;L+„TûTAP R€V`®zN={U=|\=}»;O¬/¿/ ¸/²/KA¯T €1C6þ €;€M› *»÷öûT €ûT/ûT;€% €.€œœ€‚ÿ› *» €Mz €//4‚‚‚ã‹Ê¡m‰‚ãÒ0„j'‰¨ ]JMªîrª¡0¢ 0£0ª¤0¥"0¦)0§0 ÿÞ+global<3present ]Ø#menus–I3windows.‘f@å¬/@l) à 0 c 0û$0¨ @k(/«?×0 A0 Ä W@./G:;€”1zoΔ¿‚¬ +^ì4ì F‚ð+M¿Ð%‡ ‡±;I>”‚8 @€|‚qã©d1Z«B?‡&‹À©A/(À/¶õÍ0º/H8¿P‚1¨~j P‚|‚ó‚¿»ð»,‚|‚%CCÂ<wdP‚ó‚T@ x€È¼€Ì¡!2Ö=º‡DÍ/2*Ï62Ó=2÷D2#ì,‡¸ØåÀÙ1^/ È/¿/l/ ú² ¾/H=|‚;ƒ1ùW€ ƒ;ƒgƒ/„ ¸¦ñ¦,ó‚gƒ% .&.³< È4;ƒ/„c ”€i+ƒãù… 3ú3HyŠí7ªû"3ü)3ý03þ73æjÛ9Z¹Ì^†ôùpÖ@ ßPH£/@ h P Ûä¢1°@ m ù/D Ùm* pH Ö0)ÕG7gƒv„1oÉ%v„¡„ß„²áòá+ /„¡€„%ii´;>#v„ß„1 2€Fá‚+ïF$&" R Ȧ/GC¡„&…1xc ð&…R…™‰ Xñ’ÃL,ß„R…Ð%*µ; D;&…–…* $€vu€%ÿ/J2,æ Ç ‡  0«6™R…̆W€ |€3ŠP¡€c„H¢ –ƒ€ƒR0Ï@  põ %w X éZ¦ÇÖ  ,+offers”º)#YerXkfunction-names {<Ú mØ:ŽJ L• "Ø™AiJ .$ &+exited.Øq€uit:" ¼Sthereadline (¶& óœ €r ) á ®y  › Æ ¾v±º5'–…ó†& €&01ú*̆‡)  "€æ[(@‚ÿ?ÃÝó†à‡F` Z€»†ñ†ñ%uquqNð+calläW)f :â>P ·r€hKcontaining :Õ$!<&@æ@3D€ñcœ¡€¦3...õ'‡ˆ&ñ/*à‡1ˆ) ñA´ˆr‰Zà ‚€išòšòš¢A' û ½ e k‘ f sofØo€hard3 k– such Rþ0VdP"Y cê‰#³"e1"0Ñ ´ÇØ ó  ‰R µ“"þ;0 BA˜ ,]‡ç´#X: ˜¦jJ É)o KeÚvÄal“:ž'+’'1ˆ™‰&¥ò/EDr‰Þ‰1«e Þ‰ Š…@Œ¢¸·ä-™‰ Š(€ €,Ñ)8œœDÔ)<'Þ‰2Š&>ó/üa Š.‹Bà R€Ãö9f#Œôž„B 4#éº wiª[Specifi¥yŠ4 hÑô „mpi nd@la mô$MPI€I ^¢þ8ÔǤ!adŽç°Ñ–àüŽcctsimtext-O ¬x}q*@Ù$¤¦î'2ŠU‹&aô/i%.‹¾‹_ Ž€P½å†"l€,9D‚ð#ðÿO ‘_ ’_ ˜/'U‹å‹@&ñô/y‚¾‹^Œ- (€7Ç$Uaâï ;¥€ƒ+tes±aNT écâ3Beowulf«…ˆ«EªÇ'å‹…€Œ&‘õ/D4^ŒÉŒ1ðÍ ÉŒòŒÏº¢ç)…ŒòŒ% ¼ ¼Ìº¬ÖÉŒžM@ h€­ÔE-À×~‚-½<]7±7Àƒ‰ ‡\ .!È„< î< "Ó&>†€, ²?ºÎ @v(ž;¢])œ/ -+invert€ H°ò+òŒÉP(¿ ª6-¨@ÿM2žŽ14' dÕк` -t  p` C 3 w@+ÉAŽ(wðw O2ŽŽ1†wðwðexpy@]yp+AŽ»€Ž(ñðñ L(Žà1 eCñð‘y`sqró Pðp+»Ž20(hñh!M.14 \hñh± O t@ ìhq)2¨( ²(à‘/'Ï&Ûx&`D4¨1| i<‡ ”»ìê)Ï<%Ió»Éà‘MôIÁIóIóY³Ióh¨†Y:IóIS»sinput-¬fih‘ 1Ð2hóÁh3:91en+<0‘`(fóf#J$‘z‘1hŽ HfótÒub dt€+0‘¥‘(ÛóÛ#H)z‘퀑1 †RÛóÛÃ= >ç€+¥‘’0(NôN$M%í‘e’14NJNôN´+divide&_+’’`(ÆôÆ$zle’ “7€ >€ØÆôÁ÷,ãoÀ‡öÌDcompcSÀtatistI8( 1areðA°În \ % ãs+’5“(kõk%m] “¢€“1kºkõkµScolu@mn-ploÓ @²µò‰ P€´™(œ¾ Ž( ü +5“Í“( ö&jW¢“7”1 ®ö¶;row3”ð” ï”ð )Í“`”( ·ôŒ'7”‡”&·ô/D9`”Ë”1ýÍ S‚Ë”ô”/ ļ¤ï) ‡”ô”%¤·Ä¼”Ë”•N€ j€)øø·Ô^Q„v ä3Îhždïg¼ï÷ïgy/ï×ô”p–v º€·cNÍc€†-uÍ’0úBúTúfúÿ7? Ÿ ¦3network¸yˆ>ØRÕ 7O#png<16+õš@pgmAPgraym„ap>Œ70"+asc8 l  +• À(ÑøÑ(p– À‡”H1p–TÀ2 4€b€P- ×~‚- €ƒ‚‚ÿ - -6 6–Šú/u0 ÀÉÀc –€fG0Íc@†-uÍKƒ€†"€O V0‚ð#ðÿ7?€ &7O 4#+TÀôÀ(Ð € ¼¼º09][ÉÀQ€Á2ç¶çðçÀauto ë£ì0  :ùØÎ üÍbôÀ™ øÐüðZüðñ ñ2ñDñVáÿG?‡GO+std¨0.1 `5+2@3T+QÁIÂ( TñT!¨ºÂñÂ>à J€u=ò="\1KœPHBÈH =I „,ð–ŽRè˜Qp ö* zÍ-pø+do€ubleØO ØQ.+IÂÃ( 'ò'"L,ñÂhÃ1p 2€Xó3SXmin¢3ðv+ÓÃ`(žòž"L,hÃßÃ1vðvðma xv@!vP)“ÃÄ(Ó/'ßÃ/Ä&$ (0&`D7ÄsÄ1¨icƒsÄœÄÆ¾^ì4ì F‚L) /ÄœÄ% €fœœ€­¾¯ÑsÄKÅM h€£Râ‚‚è‚€<$‚5CÀ›"Ë"-@„d]—R±óY„ \ $ ²?¾Î(@ž;...]¤œ/îCno-labels i@0Y+œÄv€Å(ô$M+KÅÃÅ 1YViõ…Y²;ystatx ±Ñ)vÅìÅÀ(ãñã'ÃÅÆ&ãñ/D7ìÅWÆ1S‚ˈ WÆ€ÆaÍ ’ãá) Æ€Æ@%ãñ ’œ¬WÆÇ@>6Y6$‚ÜñÜÿCSimulates±€ ûP€¾ g™ª”ÍQ ’ ¹{number-detect ors[@vi ewCí‘?H+€ÆdÇ2¥ñת ΪL"…/ÇéÇcúd÷öö$ö¿O+herman_Sshepp-log Kunit-pulse/)dÇÈ0( ô _2éÇqÈ1<õ­@õôX3phmfile# Reads[u¢skcreŸdŒd*È›È) "€§Ç‚ÿ?T@qÈïÈ24ހ޸ŽÈ|  |#Validò%/r?›ÈaÉcèš„šø÷÷W¯÷Jš¤™`b—*ïÈ‹É`)ïðïO1aÉÚÉ18n~ùnÆn€ray T€ ø …?T*‹É€Ê)hñh¼ ÚÉÀÊ >ºøùº÷šdrotangÿÚÆV )€ 8p¤z Nµ/  §Ñrb×`à ˆ.ÚôŽä7äbX0} ]p |Î*ÊêÊ)NòN}“ÀÊgË8 8>€'Mæ ¨ãj É©U2jç öø)Â÷)Zý)ª7p PMÊ RˆH¶˜u*êÊ‘€Ë)õòõŽgËÌ 8¦¦ð¦ðŠ Kscan-°rati¨ ’– bÊ®€öZªðª*‘Ë<Ì) ó Õ%ÌÍDà V€K7òòù=Â[focal-l ength¾3\„‹åÇ Hù "Ø`,Ø”z Èé0'^"Œ x‘u u7à *,qù Nvjšb"ð] 6  )<Ì:Í0(1ù1 'ÍaÍ&1ù/D7:Í¥Í1òcƒ Š!¥ÍÎÍ€Ï ‘1é) aÍÎÍ%M÷ ‘ßݥͭÎÐM1 »1ù1ùƒA¹1CGeneJ{\å Ë5|CZXg‘{phantom-þnameÀ[x-image-size8[y TùÚsa@mplesÈTˆ öò Õ°+ÎÍØÎ(ãýã-gd­Î?Ï@7íÈÇËþìóìsöÂD"××ó)ØÎhÏ(_û_ '?ÏÏ@&_û/D6hÏÓÏ1fˈ4‹"ÓÏüÏ1Ñ –_ë)ÏüÏ%_ {É––ÐÓÏ’Ð>z² ¡_+þ&òX‹ÿ”@û¼àRK#w…ý? Vï/1"Õ¼– va+ :ö’i®¹*c«?O6üÏá€Ð1u l¹ñu½9 ¯(Ik äÔï)’Ð Ñ`(ý 'áÐ1Ñ&ý/D7 ÑuÑ1¤ Šõ#uÑžÑÕ —í) 1ÑžÑ %û —Ñ+uÑoÒ M W™çߨñÏó}·!†a—çü”binaryhAÎ er8SŒi b!Π⚠aî Þ $é/Ç"v  !(h}+žÑšÒ0(Áó„·oÒÓÐ2}o¯÷~ÏÞK¶0Ñ´²öB®ð®ð® +šÒIÓÀ(®ðÒ-k@Ó´Óð7^­ú]øRYÕ rt² » ; i„nghä« ÿ¢&¢&+IÓßÓ(Dñh.fF´ÓEÔ@1hŒ‡õó(hn3endP+ ‹àØlastö2+ßÓpÔ(Õñù.O6EÔ¿€Ô1ÝóÝóÝóÝ#)pÔè€Ô(ÝóÝ'¿ÔÕ@& ûþD6èÔSÕ1 4‹7 $SÕ|Õ! ˜ûî)Õ|Õ% õ˜—¦SÕ€Ö>ûMõ0Bæcÿ[ReconstrÐucts™Ú‰ ‰V”i%ᓘhEK‘7cHols Proöî=|ÕPÖ7¨( .:'wnR.p$ƒwD¯/œ/)Öy€Ö(nõn£PÖ× 3\ tüšBÞmj  (áj_ ?¼ ƒ¼ —÷ŒòjôÓž+ 5*\†ƒ m <$.”B*˜Dnl<:ô‚GyÖž×u€ º€–C8=,þ€“¯,þ>þPþÿO0_1_2_3/+×É×(¼,ßÿñ7ž×ºØJ€ b€oñøWŒû˜‹Eo{Ìt¿parÒ U?MDþµ €úú P~>lB-€•2 ÉhËMrE ÌÛ]¶,,@I N¯{†&€&ð€¤ú§*É×äØÀ) "áXš¯ºØS? L€_n ú§ìvrcA hoäØSÕd Øn /põ V–V êŽ$˜ ?pÝ 2,Žf.'äØSŽ ê€Y€PÍc†- u̓†"€5ƒ€: ‚ð#ð5à€;ðM ÿOÝ_} »€ 2tæ+¥~ k. « ¦TxPi2@> þå =@S j Ó ¢Z)S|( ¡0-‚-ø‚ÿ/'S£&H Ê0&`¤¼|G? L€yáO1-×~R0.1QM1‚ÿ - -ƒfilter-generationí1j“ æ݉ççØ ×@/ä 0Z؃ 0 ,ä%0‰*ó!X#£ŸQ rd€JòñòñòÿO_ä/*GÉ)€ "€KÁ‚ÿ?Æ<Ÿ> xJ€yuB%ñ%‘$QŒÝÒ:( .ò¥˜ Ã( ÞP @%-A X6 t ¾@ o ¾  €BjÇ!B4@ @PCNšŠ é„? ‹5€ÔòŒ;'ɶ&ò/*à) ñ¯¡¶dð –€I ¶’ E<" ô 1w » (ô  ú 2ÅÒ) ¯  %õ2Ýÿô ú DÝùÿúàòö‘eêástôdH 6,@ÔVÓ"H«¶,Kdownloaded'%;official7´Ú Š;i„Fc)‡‚0#~D•F xZ€ý.TñèöV1 2ªüDd+SimplyWàhä#bPegin³Ñõ ?!øÞcacceŒss‡%‹ WÃ* «â µ‡ubmenuÌ.!OŽÄü 98Me NT.4ü2¨000ò 62µ+-€+OpenGLè ;htmlhel0p < Q PT0Ø#stock] 5A/KHrà1W» ~ *àÀšm ôëò/•€%y.›á?  à`° Ž€%œñ¬/EM=}/¸ú¶aÌ ô¸do.wó„# 3follÈ:eóUvh+ct-- *. „óOæJÓQÔˆË / ¿‡ b in÷(` ªlûhhp€ø4Pi5man‡8KFc1¯U Ú+c’”… Inô/’€%ü *ü¹?P~kc.P ,€Öq‚ã Mïr‰÷#ReferGØ3@INSTALX À;incluF‰a[dhibu¦) r[inxuµ)sñ, l /FC’V1¿ Ü õ†,V€;F¬¸ïÊF*€0%òð:!ÉV¡P€ n€“ðš>j‚PùZ |"ã„ñw/ñÎ/•ê/+Maòx3algebra?¬H W# ²- ¨ ×P% ÌŽ¾#4 €¼ j v˜¨ ‚KprPoced¶sÍ: ®toolî» iw ³Žq .pRCprimitiveªBò[standardizÞÒN⃠P Mv±!š °¾€â€!,À &€Å~—~#A%ÇTæ[›‘àD^Tv ô ê Y½U ß*ÐD<$ w N BD/òÉ¡bð ’€™þ'Núàž4ûGûÏ?3ScalXingQ úã—  ì =Ž À k (; <;)/,S`TransD AØ®  s=p£.(-ø „ù6`;Rot3p!_- ƃ'!:&‘û/àWG@3p 4€¯Ç6¹K¿°Þ ]Ÿ 9 ·›œ : É ; Bá³volvy @a"s tàiplic5 ¥ž €$CaddYƒæ! ö %¼³OQ† ª}:G@` ÞØªŽç „0 ã–  ª@ _ä¨Pàè.':n@& €€€„H ‚ÿ/ÆÇG@4A3 4€'€50‚ÿkQSl Ò;considerª3problem¢3findhingÀ’±2Carbitrary Ö Ð"ÞK; €E+De: eêGê0. ( ü ) x€2 #)ì'n@[A&ìð/^²4A¹BY€ €€e@P¡€c1ƒÔ€'ƒò@‚°Ð Fs#Fir stæ³Dà¥N½B Dr› ¡Â!Eø¦ ƒ ¡( ¬8 Dqé3Ø ÍCTra nslatD (- ü H ÚP S¥.;enÀdpointO@+s"u $¦Xì6jE`n` a<+RotkpQn€egativeÇBV“Qþ çyØ øq'[AàB&qò/‡0¹BgD? Lü€aq!qò}òF12Ï €lieLùposi§ øž¸_ Sa*A8|@, î› @s  ÝŸço+fairly3trivialbCcalcîu„AÒ‹ß qÃXpD¸¸@B6´#8É¡Ô oý - ,Ü ÙÀknowO08-$#I…ð^\urthr ºCO wi|se$33™ðDf2š'àBŽD&ô/¨ gD6E@'FG´#Thos€e JSyersectedÁÖ³è.3revÁ$/Pè DÖ4 ¶£ßG¢!”Ö1`+actuA B°öZêî'ŽD]E&îô/·.6EF-` (€]Πèd ’ƒM nQ‚;somewha…WÅ%B Ål‚9:ê2X·ÑC:£ ;°)ÅOª@3rapid[z™BRO3ÍÚ1DH hÌ']E;F&Ìõ/GFF‚F1 þ r -‚F­F…Px¸^ì4ì F‚F+;F­F% €0:0œœ€&;ò(‚FŸGc€ ”€Q2;/&J5C6P °‚‚&zUÿ/ñÎ/kMult@ithreaT/ë /3M essagx/ÀKRe-en^ø«?Ú?!~ &i• m &,T!¼( †õacLhi•8Šc½É † w$ ?•JŠ!ä::Óç­FrHC T €Ó0'C¦†"€Âƒ@ €ÿ?3 ExecuË$üˆä& âë° &mains$; µ+ &cAutomׇ‡™ @ x3cø lº @­ã R€CsymmeÀ°csm>œc0” C É*'ŸG™H &*ø/-ÇrHÆIK€ d€='/*øÎÁÔ‘YßšÁØ § ] ê[ñÔõC Ãà0;dirT4í Ä Ìo¾)#ø#sp˜awnK› e<À…âÐYè e#Ev&3HandlerÐÚ'[comˆmun_tesÑ%`restn F¹@Ø–”.  ¾ B€v+issu1 Ñz~'™HíI&~ù/åoÆIÒJ@-ß´´)x £ ápí Ç@v‰3˜ManÌ áZB'Y ·"+pop-upúaÐNE@³€)† ²)Á›0 sol¾SclÙdy*)YàsR°,û'Ð,C—1é9Њ +c`anceláj&'íIùJ&Šú/žÒJ L9à @€=_ò"´ DSregis+wpþ:%KÍpons6÷è+Work¨ 3TH$„s ; Þ ìJT³– 8M+"›³ —R^Ræ P+…ÑRRâ¸# jÛ kía mple¦ Ï + block| ¸ R+1åšÄ -· & Ø Ô*! Ú;·Á'ùJ0L&Áû/õ; L%M-=ÒwBò»K¯ ï œÁñH3cr$ucé8 u #classPKästtu Zy|;Sðõ ?‰%2#êaœsê«• ëY„ 6ï9…aöcð )0ð ý yÕîðSûtÿ<<\ oï ¢1'ÐÝ'0LLM&Ýü/À*%M N-zîUî÷FBÄ!˜ CÇQd { uOἆ *Pp]2#`kills]QéQƬ«­v"2¯ >SV&XÿJúÆ ¹3p2Ä'LM3N&Äý/¯ Nâ€N'ë ¶+¤Ù|2S© ,CsKTö-¿*‹"$/š"ŠÜov– v<`sáiz)M Z o& exit.s™ |K minUš'3N €O&šþ/õâNþO 9'«ù] ÞâÉ ^ ƒaÈrtmal­’ à¢; qª˜ ++¥›BackgroundSupervisor,<«p@4>4² Û5pP_gDocu§s`4\#sOej |k+ÂF¼ ?€¶' O%P&¶ÿ/0þOU€P,Ç ‚ÝoãNïrꉂÿA/0%P…P,¨÷ $/pO/p/HBUPÍP1 ‹Ç“.ÍPùPÐQ   JÊ ",…PùP%J 4Jº< $ÍPQ#0 ÓC¾4/ïùP¬Q0€ .€ß})o*-7 ÿ "  Mìþ(^x óu H ï Ø0§E ä@!ýOÀ PD )@Ì0“Pƒw$QÐQ#²ÐE4¬QR1¡¸’T/R>R®R‹Gñ) ÐQ>R% ’ G±‹p³R®RG€ \€g 1 &ãR‰‚ãSU0T 0U0 ÿr/7!x/  EäB2!ê/Þ· x/ Y H=>RöR1iÁ†'ˆ0öR"S ZS< (ò,®R"S %s *sÌ<8öRZS1 2T€6â€yâ0zÍ@/{/1"S‹S1Tÿÿÿÿÿÿÿÿ1ÿÿÿÿ‹S®S#ZS®S"0 Ð<Þ!ÿFB‹SôS1¾ƒ…2ôSTø€¬fqÝÌ*®ST%xq Î#q}:²úôSL€Z ‚€õó„;ù2€u rm‘ûZ]15µ>gÑ(ydÖ escribA QB™>2&0ÕÑH 3siec Åv@form+ [elew-typfA ù;< Æ/Úq*± y3 define& © ò/BbA Þ‘dE ¤ xù  : p4 ÆBØÆ] *‚”] {cÖòÍ ckwiseW+0 úSa ttenu\ onScoeffici'TL€®S–Ø”#Where W3overlaDpsK@ped!+summed.¬…Tø€J b€ €ñ‚€ @  p‚‚ÿk hä Ækˆø,ù ,$; <¦;meaningsC@depend  ]ÝB ©ªGFL€?1‰¸”lŠ3?j¬C^ì4ì F‚Ì+ø€j% €&ñœœ€ ‚ÿ;X9?ÂH€ `€rq‚‚ãáÛêA‰¨‚ãâ0ã 0ä0å ÿOE/ Þ/ ¤/ / /GBj ‚1"2X†4 ‚4‚%ƒ¬ <Éð+Â4‚ %ÉÉÐ <ñ% ‚%€ƒ&ôDKÊÿÚ?2a ll<"ª/Cincreas?.%/w L#sizesôv@;clipp·7Cround-off+er rors#samplÛØ;p@olygon¤2ªD So¸w Ž  ÞAÆ =~ÙªŽ#0.101ˆ?7irection,"E@4‚jƒ1-X†ü5jƒ“ƒ …*ÒÏ) %ƒ“ƒP%**²˜‹jƒ+…Q pì€:#F£.30@G N3‰|rü ®tarts þs=•A† â&3becauseHJ6 Z ‹ t„é Ý 8í X³irc€ulard1qÅ;v€ariableƒ¨ØZD$8»uÆÓÕ#ªZ .;Remember® (‡¢1Akpadd8B„%qÚ ud| ÂáÊ®{‘3öLð0˜t’/Hž .Þ3Íàí ˆ#tˆermç+raüs ÏÔ5òÞd^“ƒ…F \€¼ÝtãKîTr¾L0M 0N%0O ÿ/H/ È  s û/ŸGG+…Ö…1¥Y6Ö…†u‡¢—kò+…†% –(–´;PÖ…Q‡Qòm —”aò’m²?Ú 3|¤ ÕîËQ “'×ÔQ“˜ P# à 2|ÚTHi° ÿ,Euö° ØÎA.ðp˜ë3f0 *-L46ƒMBÑ[acco($shs$ ¾æR€ò–]/"Âdm"‡b¹!ý' ÃÉ ~ ¨lÚ/Sdistor&sø Y$†u‡€# ª37ÿ/HJQ‡½‡1~û>7½‡é‡6‰%–Rô,u‡é‡@%}.RÄ<”½‡ñˆ% P€)œ'wGpb+seco“ |`#thirÖ+fourth’#fift h" z! ù#ˆbea@3di8 ge¤t: H…ÊØ!Çf b 4`;p roducüc‚ á-Ò"²–V•ØV+occupy Qc–P8ܽ|è` .[ K@ o êø„È$K]E+é‡6‰2 4¤€V†‡ãPÆ3Q±3?d€W/ h=/JSñˆ€‰1 ˆ 8€‰®‰‰ŠˆØât@ØÍ.6‰®‰@%@2Æ>0Û€‰‰Š, &€3y‡Cyâ ‚/_3õSi+)Znt¸ ˆÝ P;³ çõp0lannÒ %+futu 3rel'¨I,ªgQÚ éL;Xu…(eXl(@6A¯Cprimõl"yÁ ŒC­rr…„ˆƒƒ.Y5 öK )GT®‰Њ1îír‚9ЊûЏ‹m*Oñ+‰ŠûŠ@% 4eÇ;½:Њ¸‹; HD€uƨãÒ5v­Ù5wÄ5ÛÒSCXriËT ]%n¾€;followæ( kbackãjS«¯(/¾?ƒPT]I  ®?ö´2ø ²Ê«*¢Ê¸/2/*“D6ûŠü‹1•– :ü‹$Œ€õŒ¬¼Ê ”( ¸‹$€Œ%¼ ¼ÊÑü‹õ€Œ,uò¹K3BesidÇ 3loay+ªh ­ | (­(H*Ó (  µ;built-inõ .¬[7!Òì -ò,l /`¬ Ô2a y\, ²y di•YäLZæ= ¼hü+E4$Œ:1Ûs #;:c ¿=ñ)õŒc€%ú ÏÉ¿Ý:Ž&M# »y5.k¿'3 uta+arraysÖ _ "byn;fCZH" ¡òQÁA)AA Óö>CTypic| yI†Aª ÔU †O) ƒc.tKtransfoü¢' 2@Z>8 #àtwice1ZF/ 69)O Ó Æ¤ F°' ` ß9@ Êx=  ZaBÓ*Ž †-ލc +€ $€Q2~næ07 Z ‚UÇyóª*¤ ¼›óç Cº orô-±ËYga0ÇêMc`modif»7–†.E9ŽR1Û– 6<R{@% ¸Uó) {%çû ¸ªR%&(; FÍ ¸Yí"çò J ?¼ ±;NuDme sž‰$?Ë(ßÇëL(ƒŒƒ%ø ìà +litt˜  Kbig-(ancarchit þ s,/D3{i1¿#=•=i‘@‘²lô(%‘%()±²ŽÁi‘Ð,âƒr↠²Q.¯,:ÊTa „û €=ô=$«<$ 7h Ž¡Lì f 3?\"KD‘j‘1{=•€>j‘™‘ Àfåmå•/‘™‘%`0²?P•Þj‘.’,4ê½ñê':!ÞX’´ +ç®4ò©Ý<ÁZDCsÒƒ6D _~® ¨JúÖ¡øs ðCgen¸*C V :C%™‘q’. ,€J­P-€×~‚-€:, ƒÌ­(­¨ªõ).’š’(è ;B@$+K4q’å’Ð.khkðk  (khß'0& ^ó)š’“( sð› …gå’““:eÎßðƒƒOcOUnb#pul¨se‰ªd¥!6ðòil6qO‡Ke' ywhen e9g)“¼“(!ñI'““ À& jLHa¼“ À‘KC¼“WÀ1íþb‡?WÀ†ÀâÈfål^ì4ì F‚ •/ À†À% €.€œœ€‚ÿ?P¸9WÀ>Á. P*€s/4‚€ ‚‚‚ÿâ:!X’ +Ø ©n–H .B øæ"@„Ø jÚ6 jŽq;0„.ÞE2,çˆ { Cƒ. ‚o0ã K-JE†ÀˆÁ. ,€ŠæP-€×~‚-€õBƒïl x ä(‘ˆ$´:'>Á¯Á& h€!Eÿ/*ˆÁÙÁ) "€Wp(@‚ÿ?•¯Áó¾ JC›0Íc†-uÍYƒ†"È€jƒ‚  ð?#ð;ðGð_ðkðƒ€ÿ#ö| ÒJz €€€¤%á2€ 7? '?z?€?¤?á?;Triangle)ÙÁÃ( j1Cÿ/¹áóÂÕÃ;€ D€ÃBAÞ±Ÿ2¥Bÿ+DomainðAŸ‚C3S€patialT³‹µ¦Àe2 sR' h"¥ XD[analyticallyKperformingDQ™tèÅ)ÃþÃ(áðNH1ÕÃFÄ.¿b¿ò¿" ÷ < Tg¶Ø 63)þÃoÄ(Rñ¿H.FÄ·€Ä.0&\0ó0#p` ñp)oÄàÄ`(Ãñ0Ê ·ÄªÅG€ \€Y$ÃñÃqÏÁ€ AW ~>JBQ$€E0 É@vÚ¤ƒr Ì’U,,@Ž«öçØØ{&€&ð¤úš)àÄÓÅ(¶ò#S/ªÅ&Æ@.”^”ô”$CBandw€idth ICbP%5)ÓÅOÆ(2óŸ'&Æv€Æ&Æô/x OÆîÇS t€>)%Yó•ñ§ÑLwÍ  þ‘Ç0Èrä%ÍdЗRdÍzù5ÈØ\á •·f1( ;ch'Sà ð _ lÈ@€p`S¸3J`.0VÀthus^vm6 (#50,5(0)Üð ‡ ¡+„10 ñƒÀ 50 ­ €.0—`íïÈ –]Ü&ÖA7 ÿ`5;ÀÞ)vÆÈ€( úôÿ/{€îÇ’È5 8€úôúdß €!KMultip¨lie nG.Q,Pq›¥Ä !$ð&3‚)È»È( £ð '’ÈâÈ&2÷/I<»È+É1B€±ˆ@+ÉXÉiHÊÕÃÓø-âÈXÉ%(Ó ÓøÃ?+ÉiÊP n€žÑèsôÝòóXJŸ@importô–non-Hdzàþ(PPM¢˜  gz Ò'@age@fileú³† Cconv ertedžCgraysie€¹¾€ Õ  þyour&ôrIÊ9 NÄí.¼h„h*)IAXɲÊ1Ob‡èA²ÊßÊ@ýÐ\ ¬Zú-iÊßÊ@%Z *Zú ¬õA²ÊÔË8p >€ƒ†ñnñbŠÖIz º· Øl ;behaviorpjÞž ü+across‡ ;sessions#Under 1üJ . `C';registry ^ ®P %à+user'shomeN‚ˆÅna–Y.F#@¶ßÊŠÌ;4·'óö·ø?ž_ š Ì § &%JÓå;adva nc#ï P äf MSsimLulÙî ß ?ˆœb  !€ø 6(0:ʪ èØ Ä´ ¾z*ÔË´Ì) ÚúÚ ZŠÌ·€Í;— µÓ÷ßðm„¨©Ò +é°]ép” æýš»€n7@ +i± ƒ;Àmodifi0 L IþCo&3ðturn™@JQO&J6- Ó úÇ d +Q'll| Sredsp7ib£5ý(ZLÖbæ§*´ÌáÍ`),ñºß·Í›Î;hÄ ¿ÄúÄú3Verboseð3logò/ñç@ ëQÔ# usual}À#extra<"$Å£ ËM3tDypØ fÒH&*áÍÅÎ`)ò땟›ÎZÏ;h¨ ?¨û¨ûShow3startup Œ'ý²òÏ¢¬1 JÞï#ŽF@edJ*Å΄Ï)Ïòª(ßZϬÐAÀ P€¿FþglS.mlRun&8 uºóÐò.W@ü›Ä+&U… ,>ú3\Í ³Íõ0à øCdisappea°Lm$ CexhecuuC ¶-­OtýÊ·-I/ NOTE :6ÁSlimi)$ ¼ ô)à‰Ñõa >]5%œ*„ÏÖÐ0)!ôü'¬ÐýÐ&Mÿ/I:ÖÐFÑ1걈ÉBFÑsÑ ,Ò“&c“ö-ýÐsÑP%““ö c¹ÓFÑ,Ò, &€§™/˜‡V#opfe& &)[‘³pecIc¹æÔ|Õ1jž’9“F|ÕªÕãÕ «×Éú.2ÕªÕ% É $5´>@9+|ÕãÕ%:÷ Vó· Ç`ªy+J:ªÕ-Ö1{ü’†“G-Ö[Ö¥Ö° zû.ãÕ[Ö0%æô>@J?-Ö¥Ö+hç~æôn«þ3Q‹ ¾[ Ð:MA[Ö 1•9“oH =€¡r! Ä W?ü¥Ö ¥Ö1¥Ö=% €*€œœ€‚ÿ« Ä WdZ ¡+ &€Š´05‚€ ‚ÿâ:!Crecommendaä3helping J ºø µ@H#.FJ;=ë1}†“.IëeŸ .^ì4ì F‚ •.¡%ÞÞð>LPëe+4Û ÛðÛ0 -Øô U eI–Ã`D9©1.jJ©Ñ§À½Ð–( eÑ%(œœ±ÀE9©Ð%Är“q$"­ ½£ª á;includes:ßjQÑ€A R€¦ P¡€c„H ƒ†"$€ƒ‚ ÿ?3Overalld0?, listIÆwD'§&€ €B"e0‚ÿ/IB€ð1ÒÎ~Kð€¾¶¤ÍFñ-§@%ã,ã²=0ºÍð×€&›L±âèQ„dvPSTechnicy@ç;cont s%ª% +vec torzfiniteKresolution@ ”à. Cdi.siVkfloat2-point •Ú"¦7À!C*.@ ,€TÀ1-×~‚-€Ù­ ÷ =ˆ T›¶ˆÉ)×C€( ™1B@›!C'†.MkNkðk k` ñk@)C¯À(kð¿Ô†n; D€©‘!ØÐ|4‚Dÿ ÷ …°3N@umbers€ø˜ r ôÁ ö¿@pS¼¸DØ;PŽcä ,@ÜrR= ؉þ!9S H€ ;agedÍ)¯—(Sñï'n¾€&szaID—1!j|L4$ #º]ô-¾4% ú0ó ºNr‚%¨'äÓ:¼sÚž$ Þ°¾ªBIH4Ë/ .€ªòd— "©|÷$z%/‡?‚Rc€ –€„´4Íc†-u|Ͷ¸„¢Fð#ðÿ7?¢7OSEquiangu(larKline )Ë{(7óÓNKRÉ€.£î–£ó£##Vû0e u"TZ*{ó)0 "€®ÃšL8É?.4pôwp ÍIx€ Ͷ®Ð*ói)uðuQP?º.Þ‘O'‘ô¬CTD¯o?TK*iä)ðððr{ºV 4` 8€ö õé È Ði2jË(ö ¼ÂÕØZ ªp Mʯð@–µ*ä€ )ŒñŒnvV î 4Z›ì¨õ››`’ÅfÊš€öZ¸–°®—0*€  À)$ò$± î É ;hAö)hås–Â¥3\„‹jÇ H ˜Ø6;1M ÈNAap¤z³pn˜Î uà *€,qù„†vjZ) ò 0(®öJ'É  &Zõ//ò H )p "€(u=' ?œ/' o &°õ/ÐH ü 3 4¼€¡Q8ØEý8·fÞ4€ Î aŒo ¥ƒH z&f“¬@XÞ R!W ˜ ‹ / Ff 7=ÀU.\g 'o # &dö/±ýü Ô ;4sûs÷s÷;R,otª¹W¶5ƤPJ#€}*8öA‹C3V¯"[ bL `à .À ½Z2 0ø÷” ")# ý ( ¹øU 'Ô $ &e÷/H@ý l 1*|~ Ml ˜ ‘Âë—,$ ˜ %x_ R"_}< Òúl jÀP nta‚{Ž‚x«ûœ;ÿÀ „hÉ :/3Whether·(Ž Ó o>?eric \ 3 !•#& 4Þ @Î *HÎ oryó  y[> crŒip¿]غ à„)É '˜ ‘&éû/I<jÚ1j ¾ NÚ ðú^mñ-‘ %Í mñ^±Ú¸€,Éî$î=ãwWH”ª‰ÙhJú`R!äÕžþ yâ $ ¬å ÚÓÎq<Ä Ø YSappl" îÀNŠÈaî![ØdØ g3graph”ë¡-fQ.à ¢àû<8  ¦3Netwo rkŸ©@ ¼€8bi˜ 256 # º ¯)¸G(IóŸ dQ«À.Žðol€+PNG-16IÂŽâŽ;  ‹[!#6553Œ )GÔ`(Öó,aN«5.hü œüüX9Œ!Graymaó CÂA¡ commt y’ ] ® kÆ)Ô^€(‰ð¶B#5 . ,€F†ý‰@l l 1Œ1)^É(ôð!' ð@&1ü/E3É51€~ ŠO5^­ ÈÈô)ð^%ÈD¿ ÈO)5­?@ N€RUããàœÂÊ™K‚ Îîr‰ö× þ/ /t/ˆ/E4^ò1Á`³Pò«¿…õ)­€%……µ¿¹ò«; D€sý¯ãÐ)ª ãÑ0Ò¸0Þ <æÞ JA} °ûN„?r G`<NâÀ£"9J dr>v&/¿ ÷,c×Ð%>">·< ™ú«$@ '?õ»¡ÊÚ§ œ ñ ) ¶) † }n <Ö¨€hê °> ¬ žü}ï,T´œÆ¦#ú  8Âw1 ×$@cö ¡.Ú$ œ<:ŒO×°@e š€¨€P¡€ c„H  ƒ†@"€ ‚  ðàÿ?² ð+ColumÒn°h0'$@×@& H€‹‡0‚ÿ/I@°@ A1iîS AMA…C¾^ì4ì F‚ —-×@MA% €(ûœœ€n=0ƒÃ AÐA'dœ‡ .‚‚‚‚ÿâ: ˆ Z‹ ¨† AnšN+existsr’„vØ&͆ 1 ‡\;measures ã«1¬´MA|BK d€i‚ ¬¡ƒ€‘ p@L1¦úÚ N ì # R s $! Æ!P#5€=A4 ð.  wÅ ö°de'ÐA£€B&Ëñ/»#|B^C 'òGAó± }><8À ž– ñ¶>c1⎠Ŭ ÞCcomparin"geªäkÄ kþ< ¦}ú 8ÔSw  -35+choose  á ïn´J œG'£B…€C&­ò/H@^CÍC1îÕƒTÍCùCÜD(f­À¬Ò›,…CùC0%¬ò< 5&ÍC.D%(ØLª’ÿÚ  ½É‡ŠùCµDNà j€]ò ôòóˆ? T¢VˆÛ$¾#v ÍÁ 0Ú¦î¨ !#ªž'.DÜD&ô/KLµD'E1} ƒU„U'EVE¢E¶@ ßYñ/ ÜDVE@%@´?PL`'E¢€E%5BÀ\Ñ< sؼ„P¦èQêPd ¾0KFVEíE1'ՃDžVíEFHÅ@£ò/¢E€F%Ì4Åð?VtíErF%]ûè"²Ìºpþ§ °¤Ú|Ø @B¦[ C"F-F¸F.€ ,€ZM6-×~‚-€›$ ÷ <)"Lj „¡)rFáF€( 2EC &J+¸F+G. nVnðn #àSsizer0?r`)áFTG0(rð|n€+GÂG5À 8€ƒEâ°€m5Ý BåŒ /…ôñ;bili near ¿3highes@t ÃŒ«)TGëG( ñ'ÂGH&:w0aNJëG`H1­U„š†W`H’HàI@5#¨rò2H’H %?¨A=8n$7$€` ob ç[interpo(lat ×Ê Ö;.imjD¸N%had ƒ¯ð¤|m$KGŒI[J1tš†Ú‡Y[JŠJÍ8J8«ö/JŠJ%4: 6:ùëC7[JÍJ%(i n¶  Ch ogra&mâ<s*%NNŠJK1爇áZKM€KL¼0 m ùM÷2"ÍJMK%4ú D¿ðB@¶íKL?€ L€Ûÿ‰î3@ú3‚ã¼DCx‰ÜP@  + l ôò?*u2\%ÐPSins€tructivˆØÞÊà zý7 ˆÂ÷#cl¦"äŠ #n  Ê/LTMKOL1ä áÉ[OLL€@ƒ Ùõm*ø0(LL% . P.»@`b±OLáL&Š^ còò! JXI6Øö# Û07v2'l(Òq6$nF™ÿLzM0 ¸.€ÿŒõ¶Ë l†5j_ r¼B 7 ¼ Ø¢'qj *Ó£æ&5ðn \§ €ƒ S<.¾ Bj-˜´µG‚GáLüMu@ º€–U=Íc†-u~ÍÇY/Fð#ð5ðÿO0_2_3_1/+zM'N( CC×Û3üMOG \€gµ÷ÒVéò( € ~ 1Mþâ €ú– ~T>ãB8(€ 2 Éù L¶2Ìr Ì+Û  ,,@Žþu{p&€&ðϤúë)'N+O`(IøS)§OTPM h€O¹øa—.ó£\Ml .ð7nð'p0õ VùCFFT-basedëCprefHerr à &?,@X Ý),f¦ßh ?œ¦Û § \® ) a -F>3µ ices%A0 h,´)ÞEà] ;Kseleeons%F$n¿+nexU œ)+O}P(›ù¥Á=TP>Q; 8D€{UòUÂ.9ÝÒ:( Ð.òò¥d …Ú ØQ Ž @¸RA XŒ 5 qH 3e S ÇÃ4{@P0 AŒŠ4 éAŽ–: ‹AeÔò{9'}PeQ&ˆ|ƒj*>QQ)0 "€hÓ ¯¡eQ>RdÀ –€I¾Oôô'ô9´ÿO Ea KŒ E5Ç+~-÷|»Ïa Œ@` ûÜ ¥;)QgRÀ(…û '>RŽR&(ñ//gR½R)ü(À.O1,vä/'ŽRäR &~ñ/нRqS3€ 4€¡–7GùJª“ÖÞž' ®Î5/ TS¥T#².H/ ¬X ÞªRZ˜ As/ Fi,@=U\ ºn'äR˜S&2ò/ ÌqS8T6 ø:€™CüCT4Uô ;comm€ents- P~™;Rvious¶#" ìllñêæCTô(ʇ¼– 0ô½&'˜S8UŽ ê€Yþ¾ö¾ö¾öÐöâö;UÖö!ÖÝ_}ºB 2¥ß æÐB~ë"kŽ « ¦xµPiíB> »T SêC üÓ0¢Z5)8TaU( þ VZ8U·U5ÝÈ´îþ nU * >Í(D,î6·ì ˜¨,éØaU €v º€~¹'ô=ø=øOøaø=( Š¥$³D!q’„=t n@ ªfœ o„Q¿6 ëSê ç„£QØ0Öë;techique·U €L*·U6€) "€€-‚- ‚‚ÿ?–¸ €Ì€< F€qJ*P*×~,q9ƒ€@0<lKGeneration Øj“ æÝ@Ž » /ä "0Z–+ƒ 0 ,ä %0‰%.X#6€$Q r€J”0Íc†-uÍц"X€4ŸP‚ðÿO_ä/*Ì€N)ñÀñ$‚Aà P€ãñÁqPb Þ ¾„n,DÌû˜  à@;disables |G ¡Ô/ ¨ö3am`ounts?"  • éP /3bŒfitB*N8‚`)ò·è‚ï‚5€ 8€ÑòÝ@ ëÞ| Ø€Ø+reg×;intere strÄÚRò# matchöý1Hª—[constrain¨ing,ë),@ ? PCøCmagnifiedà*8‚ƒ)âòâ'ï‚@ƒ& É0 Cÿ/Vhƒ–ƒ1Ëéˆ5\–ƒуk„ Ùßm* ÖÜ¢ )^ì4ì F‚ ›;<@ƒу% €x‰œœ€M!JÐ)š –ƒk„&d:A¸ ƒ3‚ÿÚ:[reD1ucؼP Çl(B/a{k h„h/ :à8N@ ×$1 ä`¤ °¦³â3greatlPy N€–$|¾ž#H@у³„1T54]³„ß„ †f)ÀÁœ,k„߀„%(±< 5&³„…%HL Ñ  ½ É:GÇÏ߄ۅN@ j€¥ÝD¡À€c„H D´>”)  ÿ?ÈU¹÷ÄˆÔœÛ ¢ …#c urve#ÁØ+EZPlot<îúy20¡!0±óv4Sorig inF„sB Y0œ‰Ì'…†&8ÁrÁ0ÁH8Û…J†1¬%P^J†v†ñ† È *–ñ, †v†%³³²< {šJ†ñ†;À D€5?&¤Rã#ïr‰‚ã*$0% ÿ@<’ B *$9R€!S¦"ž8rA/ØŠÈL†& /t/ˆ/M?v†>‡1Æ~ Ü _>‡j‡ÿ l …Â+build',ñ†j‡ %§*§ÃAR>‡yˆZ ‚쀧˜#U’‚0·˜¦Q'NQ7@! ";$opRala P( ä;#© H3 H«´ À:Š^ |CinclusŽSAmmend95? ô ¶ % š~ÂØ¦~ôœaÀ;requiÅ%  . Û ; (¶& ó õ  r§'j‡ ˆ&ò/,yˆ̈)e“ “8¡€ÆBV/°Ì ˆ|‰J b€›·óQñQ±OFFTW7ì e(tê{¾¹†73Withoutä Y!ø µ >Sdi—„A47ÑiQ'̈£‰& ó/,|‰ω) ñ1k£‰PŠCp V€Ø¹ôSÒûpÿwå!  dX_ÄðÄÿLj ÀŸµÖ!'ωw€Š&tô/,PŠ£Š`)ÖñÖ1šwwŠ=‹CèÓðõÓðÈYÓð›Ò‚fo-hzipÚ`3Czl€ib_docsìP'£Šd‹&aõ/,=‹‹) ÃòÃ2‹`d‹ŒI=ÃÂzöô²ŒadlineÆBJSe)activ°e &žòžœ¡S'‹BŒ&?ö/,ŒnŒ) ¡ó¡3†aBŒôŒC]žÄX÷òÔž‚'—CC debugg 'KalloŽcS,uóu'Ïz$'nŒ &÷/,ôŒG)zôz4‘‚ØCà T€2øÌõl\Àï7Sù  fÄY_DhGäerl#wustl@ƒï‡S'Gÿ &ü÷/EFØDŽ1Eõ†™ `DŽpŽ„AÉy, ÿpŽ(@ €­* œœ,°*A'DŽ—Ž&”ø/eYpŽüŽ& } ²»¸âC¾:ure "seem 6Åÿ ŽCnecessaryóç¥@ !Bè '—Ž#& ù/:µüŽ]VÀ z€qúz'ª[þC 8ø& †(®@œ W%*~ ¹^ … ;proÞ msàþ ÑÁ!@€Kelim(ed+A*,Ð:2”±0ã }* ìCiKq@GS€potenti5€yõ V¢‚㢠CËKPKgi c uedÀ{user-Dd¹ þZ( âü¤›§ †æ*&N'#„&`ñ/EI]É1™r ‹aÉòZ“„ò)„ò@%2 2½ZJÉL‘%M[ ”Ýî BÐP@freePcost™crdÀvantagw7L_òZ“ÐD|Ãý.7üÞ$ß©ÿ?CI4ncB smÕ#uNsaI  í,; çDï'&_ {„[=/medi šé ß!ô!+f#DshÐC>Ps›4j#2 è— ”¬né‚/ íÏ”­ˆW1€/j7æ) ts [+courlsed<­h lÇÆXžî.S ¤B@+Slowe[ Y  ] R†k;C?…Ó%:3s‚ !ã%· -ˆ.&è ­­C­Ý2addÖxB¿@4™=èÓZzx¬^m`¤!Ú >º20xº" ;dual-CPU« ¡4 k3 „C># ¾Ÿ/#¤3exc,eezª x' &ºû IJL‘£“1Ǔ݂b£“Ó“ÇÅ BxïÞž0Z“Ó“(0 €<^å@0'£“ú“&Öô/YCÓ“S”. ,€†ä>-`×~‚-Š<ÅCsetWindow€É  úq #wori D)ú“|”(;¯w.XVy.Q:S”Í”.4tð 3moveAbs öy 9 žö(5´)|”ö€”(yð^SDÍ”I• .ûˆûðypRel;¤÷>W4KÇËÇ.4Äh>÷Ä•NDCxndcLyÊ¥ DD)tÇôÇ(¾÷¾'ËÇÈ& SòPdôÇkÈ1ÙÝ‚ †dkÈŸÈ@GÍ Sä( ïZêZò48ÈŸÈ%À €pZÂDMYkÈìÈ+ &€²arž8‚‚ÿÞèx d ]Øó î#)..W1ŸÈCÉ.<b¶ø¶8±arCPTM(†Tî4Q;ide ntity`)ìÈlÉ(6ù6 Q.CɽÉ.¼\6ù6)[preTranslateÁx^ £»î)lÉæ€É(°ù° R/½É8Ê .6 ^°ùÁ°)cpostzðz)æÉaÊ0(+ú+ L$8Ê­Ê.4± H+ú+JreXSca+ðÈï0)aÊÖÊ( ú  M%­Ê#Ë.ú& J ú&9ïuðu@)ÖÊLË0(û J*#Ë–Ë.4œ Tûu@reHRotÜVÙAÆØ1)LË¿Ë`(‰û‰ K+–Ë Ì.è V‰û 8ØsðL")¿Ë3ÌÀ(ýûý M$ ̰̀.ÑñѱhI²%Â2)3Ì©€Ì(süs N%€Ì÷Ìà.ù ÒñÒ‘vðv@)©Ì ÍÀ(êüê '÷ÌGÍ&+õ/IR ÍÍ1‚çƒÁ†eͽÍÏ­$÷-&GͽÍ@%$L·=0$ÍáÍ# ÇZB½Í;Π.1 „«ý «-{tqformMCtosC <=@8 DñD)áÍd€Î(.þ.ZB;ξÎ`.‚ð‚ðmqòtoM‚ð€ ‡)dÎçÎ0(±þ±'¾ÎÏ&òö/G>çÎUÏ1Ï ††”fUÏ€Ï€Ó YDùž+Ï€Ï@%é$D¹;$UϤ€Ï#ÂÑM#€ÏñÏÐ.ôFnÿ=eraseWinHdowº&+CÈs )¤ÏÐ(äÿäJ)ñÏdÐ@.jRäÿä?setCol or²¶)V„²)ÐÐ(rðqN-dÐÛ€Ð.`.Zrð 7rLàst y/bv b)ÐÑ(éðèN-ÛÐRÑ.vðvàwidth ãv ã)Ñ{Ñ( `ñ_ T8RÑÏÑ.P)íðí TexdA`x&gAÌczs){Ñø€Ñ(ÝñÜ T.ÏÑLÒà.‹øÏÝÂMÒ/ ©áa} Cattibutes)øÑu€Ò(ZòY Y-LÒÎÒà.çñÑZRasterOp;Ü ‚PË;opòtor)uÒ÷Ò(ÜòÛ 'ÎÒÓ&û/E9÷ÒcÓ1þ†”÷ˆgcÓŒÓ@ÔRÝŸ) ÓŒÓ% €R½‚ÃcÓÔ)½‡O}!ê äf ß J A Ý   P ÿ" &  “CPh€ysicial%` þD ?E7ŒÓSÔ1P'ˆ©hSÔ|Ô›Õ{ïð) Ô|Ô %ïïÀ{NcSÔÊÔ+ &t€ÆÛ.î ÝKñŽhÛû~&c D„%ä ^Nç+/Ñú|Ô›Õ 'Õ õ=‘;!I@ ØÆ& : ýÝ Vÿ4  X_wc  "_ 0#Yž_… 2 2 2@ Y2@=2@ Æ.ÀP='ƒÀ%G#X_pG0€ þGWp 1ÊÔÌÕ1XÿÿÿÿÿÿÿÿiÿÿÿÿÌÕóÕ'›ÕóÕ &× Ž‚' _1ÌÕ$Ö1Xÿÿÿÿÿÿÿÿjÿÿÿÿ$ÖKÖ'óÕKÖ$ € W€ÿ/1$Ö|Ö1Tÿÿÿÿÿÿÿÿkÿÿÿÿ|ÖŸÖ#KÖŸÖ" €W`ÿE>|ÖäÖ1…ØläÖ ÞEŽÇ Ž) ŸÖ %€€ÃEäÖ ŸÖÒØäÖÞ8 >€±@€‚€ @ ‚‚ÿ;Ellipses µ;<äØKsemi-majLor @in axis3le€ngthsþ,6–2Eq (øù). [noteQ½îª€. 'n (* ¼ aF.³E@ #1ÔlŠ–m#Lï Þ^ì4ì F‚ Ž) ÞL% €œœ€‚ÿ Þ£²#ï8h?e?ñE‚?KRectanŒglA1õP )AQ&´!1 Þ' çc\ spoA9£}Shalf€-height4@!E?L41ÚØNn4] ¤ñ) ï]%&q ¤©­4Ð8P[PòÁCTriA25‚|’!õ–zR© < 6CRo@tationKÜÀ]-N€'"E>]K1£–2oKtæ 'ò) t%'ÁN×KÂIÀ `€¯gómÓ!y£ÿ òÅ €û! §<€Q8‹Ö¤ˆ0‰R#8*”* ) È@C V¡a‘¤ |SƒCJKhorizontalÚÃq1. Ž ‡ø oÚ…€ ‡$PÜ#addTed< Âç#੎An€ <ì#ÚH 3 îZ ÂÆSÜ ¢ðT#$tæ# €´tÿ/E=Â+1„NÑp+T§ ô) æT€%ö SÁ+§>p J€ƒßñMõÔ AÇ#likeÜpie+slice'vñ·gÃA€qð"? Csimilarly‡ HÇpï„2{P_3€Instead[ô t3v_$b@a”x$¢(-ð;#2« ¾AtRø! ‚ :¨9Ü-" øiM íQäåö$ Ú È%G?Tî1æ4qîάÊÅ ‘+§%hÊ&¹´;`î>ÄÁ 'n ‡i"o2v2ÚEZ"0HVN!±¹!!ä&ªl’)¬ŽÍ+G PÖKcom plete»Csurrounds@LetЙ,=ãA0K P—ZW#‘’ , ‚ $,¡™)ØSPythagorean3th e m­Ž ™ ö O)íÁ©+p $€ƒ 8ÿìpí ®¾g ÏÜÔ½‘€éØ ¾‘ç ‚.[ K o êr„@d[sc eometryK]%Î$ €›x‚ÿ?H<© 1Kü< r B \ 0 È'ò',ÎB %4ò áÆ<Bß „ V€ z€¿Í5?(2"‚.B:â°4@’öHZ4!dކ ²(:Ê" ® Ý# Ì8—R9P–L '( è "8 ·P¡n[3 s2® ±>oö#maybeeven0 ? Ôƒ" ‰O>w ¶¾â"ø¨nºÂw° Ñ‚ËpÜ  Ä' qÑ/ØB \ @` N€3j3W#‚CQrãö÷ ¾‘mýxPÀ#allow“PNK Qâ°÷/jKPhysic2yNñaÆSË Cinsertingc”à{‰ûž!2 í!0 H<„ ¤ 1Ú4# s¤ Ð €y  µôµ,\ Ð `%ò< A¤ á J b€ƒŸ¶”òÂôÕMBHPr½p3;purpoñ FçR2Cde€sirablenÚGRAJÜ?<"Ô¤&AØ3conècep¢23ÂS²+ariP &», É4C w á+x-ray"¯¥!;ô\ \bÎS/˜–Ð y Ð>Œ-Ô|´EÍ¥ÚlRÍ rI;ordinapryÊe#± äÐ]#¹Š" ,2 Zi2š,H;á Á 1Á< YtÁ í }sûÒö,y í€ % Œ»< ±ÊÁ ž>˜•Óuªô’´t€’,aVÏ\­- ú H,½=¦ +:ȹŒŒÝȦs a  ‹/ß]í } >I »t´‡Wp¤|ƒ¬1Œ -  ´ù$bq¬`6± Ò *"I› 6Ìv'$;BM?overEðw®éQ­ 3*R§ãùÏ Ú.×#¹HEžÅ1q# ûuÅñ1ŸòÖ,}ñ@%¡2½< ¸þÅ©€>œ Nýò×ø–6ž2˜b*ùA‚TÎi)0²ä¢"` ò 2ä/ˆÎñ12à 2€Kþþñ¾ ó‚þA,´ñ´ñ¾0³ñKG©|1eúv|«?dWGϘ/1«%G"ºÃ?@(|ÁYÀ €€SÚõ—šhø,†"€Fp ~!‚z?(cA V G— ,¤0ö Õì&+P q¾ŠHSmanufactureí s³Ç alculatíì ØU`å%—bøç¨^$ M ’asðinØ4#f+¥5t«öSÀ t€é§‹¨ûAÈ{É/3EmpiÀric x¼ -• r ÆõQ+£ lesë ¡î {approximîly120 |‡Œ _H® Öé â+/age®º rÃq 921`Àpq=;<û ŽKillustr·c”V5 2º ‡TÜ VÁŒ‚/hJÁ^5À :€”Û{‘Ä‚æ+?2¤!a`º5> Ña0œAuZöÓ. ,D€´C}€ °Uÿ[Substi,tuc)“OdI/N We€¦BŽ"Þ6 Fr¹,lj^?3 6€ÔMªƒ8 8ˆÄ MY s_ì|Cg a< °¿F)0Å'KLÓŠ1”>ˆwй=B€ h < ô/?¹Ð%›,ÈÇ?@2ÒŠ @; D€6¥v<…‚0«ÿ@Ç”€( P Få#œÑí÷De Û‹Â~¶pÒ[pa ÖržKinte@rested4+ €;expla+ ø²N€è²“'‘úT84Äá 0„„çB9…%N‡„‚8 ú:xc¹Ž:d„  oA,¹ @?>¹ A: B€}@€‚€ €€  ‚‚ÿp`|ØVM Jgc;coveringQX\–  Êv2 H ßÅ P6ØÊK, Ž pi 3  öacos €((   ˜))Ú+dottedscircleindicatesŸCposi tionsg Vˆà.á@1 @LA# € bþ þÿ [ K o êr„d`K]Ìÿ AB@ Nè€ÿ@p‚319AF‘¡E/pbEáLE a ÚT’ °Mot’ .â’ DlŽ0 "'1a:˜ 5tan ( /)ËðbË@%LA=B$ € r‚ÿ?IKB†B1” †x†B³BE¢Ê¸^ì4ì F‚ ’-=B³B% €>xœœ€ {=0?„†BòD]` ˆ€ š"¦B²ã¡¡§¼‰ 00a0 0ÿ 8?ö2€, ²‰l(VO䤺+€Indeed:€¥ƒîFKcommerc@ial * MÄ—SparallelismCexplo2iŸ~ÃH`~ &Ð Ðôô%JØ2#é;workload3amongst :Kprocessors3!lˆ¤ ÔÚY0ø"` q@|1ã Þ õ„ ]¤CSyºtricsMultiP@´É;Dual-@CPUËß½$ á ¾ánear1HÄ NÍ , „7€¥ L e°Ø UøxÖZ!-1¤Ò퀻­9ë–<ª1ËC¡f1 xþ`ŒˆkaBeowulf-clas¶& óˆ r )GþT é$³BEÀ#åË$ä4ÿ/FAòD\E14r‚U‰y\E†E€‰Gl¾Õò*E†EÐ%Õ*Õ²: ÿ\E¦F- (€ÿÒÒ‚lÚ€qstep½‰œ" ÝöØnZU¼¼*¾œÊ2¦ {ƒPPCmÞ!l.žj‹ Ò„3permits|ˆ ×ðKacØ*p¼h)nSTwo¥% 0 µ¨ݲ%¼^þ@ãtæXpÚ@ u ¨,¨‡0/0 =.8† ‘ÜC(0H}æÅã)†E‰G,€ &€S™–£àCÁƒSæ@yv.[Pš ;sharpe9Ýý;practiceuior)Æ X#;reduc½Ù¯BÑŽ †?K mud`À€.YÍYÖ:…nuyF=@Cì:n?à Â|&KU¦FÔG1¤†JˆzÔGHÀvH*ìwòM/)‰GH %MRMµ?Ps›ÔGvH@&|7K¶6ub*b" ±ÅCsmöÔ'#óÿ wåÛ „3Vous+level%kŒQ% Li'H>H¾H1™¾ ;Œ{¾HêHRJ× þ7Ö˜,vHêH%h7$7¶< D ¾H.J' €FæÊÞ<ÃΊÈä\ ËÙÖmP10„P¹(Û3bðx ¼¸² Á#blaTck8p8Ö*ðYè0z!2`Ø92pwh2 Ä;Cphang„2‘i·ÃÀJamin[®„gÇq lc‡;meúinÜ9P#ofQ”£Ì3?0eboh ighð,Å D+>um gM$êHRJ#;ÕE2.J—J1Š™Œ|—JÀJK Øñ)RJÀJ%  ¸ NX—JK%(9°»²â…n! X’ A ±òÖ*E3ÀJSK1ê;Œ`}SK|K5Nt”ò)K|K %Ì̸tx©SKôK2 82€Sxƒ¼¸ÈðJå=(äÞ `°(æ¦fV G³ã "uÊ:É ¯|KL5@ 8€_§*P-×~‚- €#ƒY+CeðnterK=!§;n `ô ,ÃŒBøµAñ# 4o :&Ö+„õ :€ *ôK«L)Ð "h:‹‰m:fLM. ,€þµðƒ- #WiÈdth®P£¯p?j£­Lƒ @qÎ 0)«L:M( ê<€ÿ/'MaM&,OG8&`­Ü:MN?À L€¹<'@W£š!œ'k 'S† ¸ &$ GA€ ãL4]Ž$øÀ /33 |U0w$P@ 'aM5N@&Óð/E3NzN1w™Œî ~zN£NéNˆ»õ)5N£N%&óˆFLzNéN%¥ ˜âó æ²E䇇»t"Ü-QN£N:O1øî ‘:OoO€6P9©)ã > &³Ü™5"éNoOÐ%³ DæÃE Ç1:O6P 2òcÈèÎxÞQ 2el Þ+ø®ËT +I2/õ +open÷„.hf ã$÷=t#7 ˜Dseleóo/£Ä„À3nø¡ vif³;¶ †…¤'J èLAH9oO~P1ϳù‘€~PªPHQ@¿ €µRòKöCg 0r¡* ãúNª»Oß  ‡<%ú¨#r*t#ar rowÂ+z€-axisÆÇ‹¯Îdown+$ Xè øRÆ÷(Ž5n8tro‘ü lkeys#O@therž’­QK> ÈÛ)0ÉÒ&½ÂQ„SZ ‚€ ÒF¡€c„H †"€4ƒ‚ ððÿ?3@Surfac~œCwirefram#¹ A ÅflÌat 0;L"Ëe\.0³T P£'ÇR«Sà&Iv·0”E9„SðS1Ù¯ ΂ðST‚f“Þš) «ST%qóf˜ÄðS€5ô$‰$È’.tg<+ dð?„÷kpixel-byF-  asiÖÚg f ¢Ó>†Ÿ$è ¼©+Invert H°òT€«S.+T:€( € €@-‚- ‚ÿF.€€€.P ,€\*P*×*~,9ƒ0Log p C –°òp+:€«€€(pðp F.€€ñ€À. pðp`HExpp@]pp+«€(áðá A'ñ€].špNpðp Qß PÜp+ˆ€(MñM!G1]Ï .ÜbÜð‘k@ ìn@ ìNq)ˆøP(¿¿Ñ/'Ï‚@& (0&`H>øg‚14쓃g‚“‚–…‚~^ì4ì F‚ š,‚“‚% €$Wœœ€ã< Œãg‚„K` d€Ç› ‰‚6€ 0‚   ÿÞ<¨tPãêx†—RØø"Û †‹%ä+orders ;expectedpSûhøæA? ¢àÑ"pCPtæH 0Zã.p½ˆ ,i3reZ 580v7@ä>„,`7 ­èk ñZ Ö3un˜goƒn¹,>uÔn€Only‘ÓÆŽ ,.H .´¸H,¦ž@rÜ;„!¼ Ô Ç! ) `<ž8:“‚W„%*·tŠq‚eÚ$„”¼:AÕ„o…º Bì3¡€ c„H †"Ȁ׃‚  ð?#ð;ðGð_ðkðƒ€ÿ?ãQP½?h ò?½ h®µ  2t1Pâ „ .F2B q à!q? ? 'W„–…À&vs1N:o…ä…1…ڇ鈄䅆d†€  ÊvÃ3topic58,–…† %||³B Taä…d†@%¨Âð±âX’JDKconsÀtraintÖˆòbØ m ù /E2†©†1v4—…©†Ò†‡ AÔ)d†Ò†% A ÄÀEA©†‡%j‚ÁÐ: §±  "¶ E3Ò†\‡1°P:†\‡…‡ˆt²ð)‡…€‡%ôô´tœ\‡ˆ2` 2€9-#ñ4ãЙKö‰ñ$¿0"ÁðÁ +Please#re fpäë„d@ Èp*£! ì E3…‡Iˆ1‡—c ‡IˆrˆȈˆŸñ)ˆrˆ %ìðˆVoIˆȈ# €ÆÞÝuP: a¦–!Ë 3³!i÷ .1rˆùˆ1Tÿÿÿÿÿÿÿÿˆÿÿÿÿùˆ‰#Ȉ‰"` >8d&ÿ1ùˆM‰1Tÿÿÿÿÿÿÿÿ‰ÿÿÿÿM‰p‰#‰p‰@"S€ S1M‰ÿÿÿÿ1ÿÿÿÿÿÿÿÿŠÿÿÿÿÿÿÿÿÿÿÿÿ  ˆTimes New RomanArialCourierSymbol$‹‚ !™Œ!鈜!j¤!±ˆš!h¢!þ«!á¡!~ ž!€ª!b‡›!~£!W€Ÿ!;Œ¥!U„©!É™!ÆŒ ù‘Õ³r Ü Ü W€ˆ‡Ú‡ì“™Œ—™Œõ†õ†U‰~ YYc 1 Ç…š††” †CŽ c ú€þ±ˆ~jéˆÉ'ˆí™ ± ± lŠ>>j‘€þ~ b‡è±ˆj % ƒÉž’••¯ †  # # ÷ˆÎ`:Ç“Ž oü’9“  Í Í iiS‚S‚î – Jˆ|‘W€Jˆ~ ¯ w õw U » ŠŠhðTçƒðÝ‚Úr‚ûûr‚ððs ü…¸”.þ Ñü…¸”ѾƒËˆˈcƒcƒ Š Š4‹4‹õõ65U„U„Õƒ~j#îÎƌƌéˆÉˆˆØ©¹< < X†X†û2NP;Œ‹‹ ~ @‹eÁ† c Ž 7 Ḓ–¾ 4447 Y/&;)F24ÿÿœYÿÿ3-D ConversionAcknowledgementsAdd, Subtract, Multiply, DivideAdvantages AlgorithmsAnalyze - CompareAnalyze - PlotAnalyze - Plot Histogram Analyze - Plot T-Theta Sampling$Arithmetic(Auto,Auto scale4Background processing8Backprojection of filtered projections@Build From SourcesDCenter-Detector lengthHCommand line interfacePConceptsTConceptual overviewXContents`Convert - Convert FFT PolardConvert - Interpolate to ParallelhCoordinate MappinglCoordinate transformation functionspCopyright noticetctsimxctsimtext|Detector Array Size€Dialog, Create filter„Dialog, Create phantomˆDialog, PreferencesŒDialog, ProjectionsDialog, Rasterize”Dialog, Reconstruction˜Dialog, ReconstructionRebinœDimensions Direct Inverse Fourier¨Disadvantages¬Divergent Geometries°Download´ellipse¼Equiangular geometryÀEquilinear geometryÄFan beam angleÈFile - CloseÐFile - Create FilterÔFile - Create PhantomØFile - ExportÜFile - ImportàFile - OpenäFile - PreferencesèFile - PropertiesìFile - SaveøFile - Save AsüFile typesFilterFilter projections Filtered backprojectionFocal lengthFormulas Frequency Based$Full(Functions0Global Menu Commands4Graphical interface8Help - About<Help - Contents@Help - Quick StartDHelp - TipsHif1Lif2Tifexport\ifinfodImagelImage ComparisontImage MenusxImage Size|Image, Comparison€Image, ExportˆImage, FilterŒInstallationInstalling Linux RPMœInstalling Windows Binary Intensity scale¤Introduction¬LAM°Master coordinate functions´Master coordinate to World coordinate transformations¸MPI¼"CÿÿNormalized coordinate functionsÀOptional LibrariesÄOverviewÈParallel Computer ProcessingÌParallel geometryÐParallel processingØPhantomäPhantom DiameterèPhantom ElementsìPhantom FileðPhantom MenusôPhantom ProcessingøPhantom SizeüPhantom, DiameterPhantom, ElementsPhantom, File syntaxPhantom, Size Phantomsphm2ifphm2pjpj2if$pjinfo,pjrec4Plot<Plot Menus@Polar conversionDProcess - Convert PolarHProcess - Convert RectangularLProcess - ProjectionsPProcess - RasterizeTProjectionXProjection Menus\Properties`Quick StartdReconstruct - Filtered BackprojectionlReconstruct - Filtered Backprojection (Rebin to Parallel)pReconstructiontReconstruction overviewxrectangle|References€Requirements„Scan diameterˆScannerScanner, Concepts”Scanner, Equiangular˜Scanner, EquilinearœScanner, Parallel sector¤segment¨Set¬Simple Graphics Package´SMP¼Source code buildÀStarting CTSimÄStarting ctsimtextÈState functionsÌSymmetric multiprocessingÐThe Command Line InterfaceÔThe Graphical User InterfaceØThe Web InterfaceÜTheta RangeàTransformation SequenceätriangleèViewìView diameterðView MenuøWeb interfaceünu Commands4Graphical interface8Help - About<Help - Contents@Help - Quick StartDHelp - TipsHif1Lif2Tifexport\ifinfodImagelImage ComparisontImage MenusxImage Size|Image, Comparison€Image, ExportˆImage, FilterŒInstallationInstalling Linux RPMœInstalling Windows Binary Intensity scale¤Introduction¬LAM°Master coordinate functions´Master coordinate to World coordinate transformations¸MPI¼ØNormalized coordinate functions/&;)Lzÿÿ‹-dÿÿContentsCCopyright noticeÕAcknowledgementshIntroduction1 ConceptsŽ The Graphical User Interfacec The Command Line Interface7 The Web Interfacew InstallationÜ Algorithms‹Simple Graphics Package©References Conceptual Overview¾ƒPhantomsX†ScannerˆReconstructionJˆImage Comparison@‹Starting CTSimÆŒQuick Start•File Types=•Global Menu Commands.Phantom Menus|Image MenusîProjection Menus5Plot MenuseStarting ctsimtextðParallel Processing if1Í if2iifexportS‚ifinfocƒphm2pjˈphm2if Špj2if4‹pjinfoõpjrecOverview¹RequirementsõInstallation± Download» Installing Windows BinaryU Installing Linux RPM~ Build From Sourcesþ Phantom Processingõ†Background Processing¸’Transformation SequenceÇ“Functions†”Coordinate Mapping¶”¸”Phantom File…Phantom ElementsÑPhantom SizeDimensionsûParallel GeometryDivergent GeometriesíDirect Inverse Fourier Filtered Backprojections Phantom– Image#Projection6PlotþFile - Create Phantom€File - Create Filterb‡File - Import±ˆFile - PreferencesèFile - OpenÉFile - Savej‘File - Closež’File - Save Asü’Help - Contents9“Help - Tips†“Help - Quick StartoHelp - AboutÎPropertiesjProcess - Rasterize~Process - Projectionsj File - Properties~ File - Export¾ Viewî Image¯ FilterAnalyze - PlotW€Analyze - Compare ƒFile - PropertiesÕƒProcess - Convert RectangularU„Process - Convert PolarÇ…Convert - Convert FFT Polarš†Convert - Interpolate to Parallelˆ‡Analyze - Plot HistogramÚ‡Analyze - Plot T-Theta SamplingéˆReconstruct - Filtered BackprojectionÉReconstruct - Filtered Backprojection (Rebin to Parallel)%File - Properties4View MenuÚOptional Librariesr Advantages™ DisadvantagesTMaster coordinate functionsÝ‚Normalized coordinate functionsV'ÿÿçƒMaster coordinate to World coordinate transformations †Coordinate transformation functionsÁ†State functions'ˆDimensions÷ˆFormulas_ŠeŠjŠlŠellipseØrectangle–triangleNsegment2sectorüPhantom Diameter4View Diameter< Scan Diameter# Focal LengthYCenter-Detector Length>Fan Beam AngleúDetector Array Sizer‚Parallel Computer Processing†Filter projectionsU‰Backprojection of filtered projectionsŠIntensity Scale;ŒSet™ŒAuto`Full³Add, Subtract, Multiply, Divide‘Image Sizeù‘3-D Conversionì“ArithmeticÎFrequency BasedáTheta RangePSet—Auto:Full°²´Download» Installing Windows BinaryU Installing Linux RPM~ Build From Sourcesþ Phantom Processingõ†Background Processing¸’Transformation SequenceÇ“Functions†”Coordinate Mapping¶”¸”Phantom File…Phantom ElementsÑPhantom SizeDimensionsûParallel GeometryDivergent GeometriesíDirect Inverse Fourier Filtered Backprojections Phantom– Image#Projection6PlotþFile - Create Phantom€File - Create Filterb‡File - Import±ˆFile - PreferencesèFile - OpenÉFile - Savej‘File - Closež’File - Save Asü’Help - Contents9“Help - Tips†“Help - Quick StartoHelp - AboutÎPropertiesjProcess - Rasterize~Process - Projectionsj File - Properties~ File - Export¾ Viewî Image¯ FilterAnalyze - PlotW€Analyze - Compare ƒFile - PropertiesÕƒProcess - Convert RectangularU„Process - Convert PolarÇ…Convert - Convert FFT Polarš†Convert - Interpolate to Parallelˆ‡Analyze - Plot HistogramÚ‡Analyze - Plot T-Theta SamplingéˆReconstruct - Filtered BackprojectionÉReconstruct - Filtered Backprojection (Rebin to Parallel)%File - Properties4View MenuÚOptional Librariesr Advantages™ DisadvantagesTMaster coordinate functionsÝ‚Normalized coordinate functionsôçƒ/&;)L4ÿÿƒàƒÿÿÿÿÑò €¾ƒÖ=º‡~ oÀ‡JˆÒ0j€wWH”Šð1¨þ '‰¨b‡&‹À©~ù«ˆµ7 #쇸W€¡¡§¼ð˜:G½± fô“¾X†àœÂÊ;Œÿ¨{Íc b@rÑw üYØûn館©S!ªßS‚%:‰à¸”HyŠíU„é÷ ïõ†¹Ì^ôÉåØùÆŒD¸ E¸Í È‹™K™Œ Ø~ êØ Ž Éó¤ Š:Ú¥õKîrüLîr4Mîr< Nîr# OîrYPîr>QîrúRîríSîr Tîrvîr†wîrU‰xîr@‹yîr•zîrs {îr– |îr#}îr6~îrîrr‚¡îrÉ¢îrj‘£îrž’¤îrü’¥îr9“¦îr§îro¨îr.©îrΪîrèÌîrj Íîr¾ Îîr`Ïîrî Ðîr³Ñîr‘Òîrù‘Óîr¯ Ôîrì“Õîr|÷îrøîrîùîr ƒúîrÕƒûîrÇ…üîrš†ýîrˆ‡þîrÚ‡ÿîr5ïrÎ"ïr4#ïrP$ïr—%ïr:&ïre'ïr(ïr¹)ïrõ*ïr» +ïr%MïrÚNïrr Oïr™ Pïr¸’QïrÇ“RïrTSïrÝ‚TïrçƒUïr †VïrU xïr†”yïr'ˆzïr÷ˆïrÁ†Z¹lˈ‹ºlcƒ4þÐ4‹ŠUô%xeW)ˆ`vf7æjÛ9éˆZ«?jÞÛêAÕßÛêA1 àÛêA áÛêAlŠâÛêAØãÛêA–äÛêANåÛêA2æÛêAÑçÛêAC]JM±ˆ1^NÜ ÔÓRi¦“×gh‹Ê¡mþ„ñw…¼DCxáoflP \¿¿¿¿¿¿¿¿¿ÀÀÀ€€€ÿÿÿÿÿÿÿÿÿÿÿÿÚ Ñ lPF(0ŒæZÿÿÿа€`@@ @ Àð{ÿ‚$0ÿ€@?@¿ïÏп¯_<€` ào8pPÿðP8/$o*ï<4O.pÐf ept`( ßT ÿW_$ ð])ŠPyÿ`0„Dßf"Otà*W«Ps  ¥Ÿu¨ÿß—QÊPFmÈ ÿ PpðKëPgÿà5ç A`H) QdÿÉï(ÿÿüàB)Q^î@#¿ÿ ÿïò j?HQ[F,=)¥=0ð9gQXÜ•y 2;?èð6„QUÿ\Ïÿ„;ÿnÐ3ŸQ R/’AÿŸ%0ºQOÿ{1?¬G?q5-ÕQLP€¿J¿×•7 *òQIm/Æ,JÿôV@'RFÿ?ºq "@èyà$54RCÌ0ß;$` ÿ+Ô!YR@|¦Ï&I` ÿP"`b=A ;"$€PO9…`›ÐÄRÄ:ÿåï$Ö(0"`7¬&¯;×`ÿ¸€q"€`O hàº-S4Pø$øbP"@Z ïéÀsS1q®$ú®@"EZ E ú¹S.E@$ðE"8`Z ‹à EÿS+ï$!ÅÊ`"€_K ß›ð E€ ¯Õ"$[  `(8!XQ PA@bJà*?y_$Àß—ð&`€ˆÐg0¯M'ʰ&pÐPŒð‡ $pK@VMæ@ð” ¹°D?,À¿0x@P ÿŠpwPÐ9•W*Fð*`PÅÿàÿ¢€,@¿,À?5W` w°”— ÷[‹[ÀoÀ†`¬Å´0BÌ÷†¤Ù5S‘ jð˜hÀ?,À¿ó,`pÁ`Á_/UÀ뀀)0/ ¢@ð€„-R$í\F"*!àðp=ÀðР€D€ _'·_àf¿`" Ñ¶&p-€A$€_.€`±Fß2°Ðv`°Rð€#¡ÿ\§€ac?c«Ôàñ&:‘R±2à¯2 yÐOŽîAÀB1ðÀ4Àÿ#õ]-q×w7ˆP°¾ÐB²MIP#ÅJÄ0 \ÿ ‡Nø?N@‹1«Àá¹ãÐÈÕ2ê î`ðûP@÷aZ‹|R`ZÐ!ààrb=TPã9u j AÐxðŽ'wbZÐÿ_iy²6àhø€¬H ¾_|H@êébWx5ß·L@ïR$i]оÅ‚à±@PÓ# ¿Ë 7!ccLølg³ÖEæPÉàI `=óR0Ðbs(Ýco›N@áSNÇ&PÔ – ðš PR õÎ0´(MdD)oQ´Y ’Ú0Àþ ÛÀ€üàñ(·d <@»T]hàm.5…QßâAm…¤ ®0@ Äê,q…QÄrsµ;œ€%)Åeùª!2@ËUç àü€Z#Áu f*‡û #¶~h:X’ Ç wfï]‡2@{vÆ:ÿõ¨ÿˆK{#xÏÖÿ< –€ #G0]0#Çïˆ ˜€  w‡HCC8@}wWh écÛPÍWH#{ýÏ÷&É£% !ˆ« #ÝbÙ ïn1¸/¿–¤[ƒhèö¿Â+Ø<“È8–„À¯ãˆ'· ßQ cv 5ßK ï€ÿ ¿Ï0 Ùþ>­£x]iÄ è mŽ O¨ "_‹ ^Oo¡ ?ìV‡ÉG»£ÅÙ‰¿\$Ää A  oØ µ8ßú _ #ßñÿª,¬4Å‚SjÞ(%»v @O3+:L O? uR3uúV®¤"ÇŠ?×*ä L ¿” lb¿Ž OŸMåª_ãS•t5‹» ,%ˆ õ _*?Õ N ÖQ«>hû£Œ£k!ÿZ;Ÿc Ο3!?ìo¿Ën´¤¶)lQ;ÇÝ1¿?n ⟨/¯eN 1ÌþwÆ„7ƒŒ¹ I¼*U¦?u O°/Â.ïëL@¡œ‘5â4œ÷Œï I]'ýüU¤ SmïË/'80[íò„Õ ©-î6>F­Ý𤹠e_6ö_:ýíä¨I–o0ãëIËIž¸ ÿÜhé ‹.ã ÐC/‘¾Ø ïÖˆ'ÕI+r/Û¾¶ ÆhÓ /7 ‘ÿÿ%ÿP¦ ¦Xo/: PAÿÊwß수Ãoµ-T‡Éßr¿cMoïŸtL(aÍ: àBÛPx°U Ç€$?Ÿ ?¦oH­0Pa6xÔ.¦…°ßÌ#pðK]PÖj(È 7S"0P`àQ€PpöG¢Rß, ¯r u$W¥PyÞ'‚ ë4ß@(_ƒÿð]YÌPÿ®(p/I¯Ôï< Ï´O* ã ®f*pô;' ?×P¿ïzÏa¯-ç_ó„`aàoWcpØ7@ €å@« € Àðî{ŽpÒ§)©põ*º‡#Äp“ 9 WÿÇßpc|‹ÿúp' ÿXk6am-"k¾.a#ÝË‹xGq¡ fr^q/ Ý~ŠiwqT LŠ`qt =PfZ§q^ ÇŠ bÿÈisbÿÿÿ°`ÀHÿ‚ü:Base ctsim.hlp 1 Copyright notice 2 Copyright notice=topic0 1 Acknowledgements 2 Acknowledgements=topic1 1 Introduction 2 Introduction=IDH_INTRODUCTION 1 Concepts 2 Concepts=topic2 2 Conceptual Overview=topic3 2 Phantoms 3 Phantoms=conceptphantom 3 Phantom File=phantomfile 3 Phantom Elements 4 Phantom Elements=phantomelements 4 ellipse=topic4 4 rectangle=topic5 4 triangle=topic6 4 segment=topic7 4 sector=topic8 3 Phantom Size 4 Phantom Size=topic9 2 Scanner 3 Scanner=conceptscanner 3 Dimensions 4 Dimensions=topic10 4 Phantom Diameter=topic11 4 View Diameter=topic12 4 Scan Diameter=topic13 4 Focal Length=topic14 4 Center-Detector Length=topic15 3 Parallel Geometry 4 Parallel Geometry=geometryparallel 3 Divergent Geometries 4 Divergent Geometries=geometrydivergent 4 Fan Beam Angle=topic16 4 Detector Array Size=topic17 2 Reconstruction 3 Reconstruction=conceptreconstruction 3 Direct Inverse Fourier=topic18 3 Filtered Backprojection 4 Filtered Backprojection=topic19 4 Parallel Computer Processing=topic20 4 Filter projections=topic21 4 Backprojection of filtered projections=topic22 2 Image Comparison 3 Image Comparison=conceptimagecompare 1 The Graphical User Interface 2 The Graphical User Interface=ctsim 2 Starting CTSim=topic23 2 Quick Start=IDH_QUICKSTART 2 File Types 3 File Types=topic24 3 Phantom=topic25 3 Image=topic26 3 Projection=topic27 3 Plot=topic28 2 Global Menu Commands 3 Global Menu Commands=topic29 3 File - Create Phantom=IDH_DLG_PHANTOM 3 File - Create Filter=IDH_DLG_FILTER 3 File - Import=IDH_DLG_IMPORT 3 File - Preferences=IDH_DLG_PREFERENCES 3 File - Open=topic30 3 File - Save=topic31 3 File - Close=topic32 3 File - Save As=topic33 3 Help - Contents=topic34 3 Help - Tips=topic35 3 Help - Quick Start=topic36 3 Help - About=topic37 2 Phantom Menus 3 Phantom Menus=topic38 3 Properties=topic39 3 Process - Rasterize=IDH_DLG_RASTERIZE 3 Process - Projections=IDH_DLG_PROJECTIONS 2 Image Menus 3 Image Menus=topic40 3 File - Properties=topic41 3 File - Export=IDH_DLG_EXPORT 3 View 4 View=topic42 4 Intensity Scale=intensityscale 4 Set=IDH_DLG_MINMAX 4 Auto=IDH_DLG_AUTOSCALE 4 Full=topic43 3 Image 4 Image=topic44 4 Add, Subtract, Multiply, Divide=topic45 4 Image Size=topic46 4 3-D Conversion=topic47 3 Filter 4 Filter=topic48 4 Arithmetic=topic49 4 Frequency Based=topic50 3 Analyze - Plot 4 Analyze - Plot=topic51 3 Analyze - Compare 4 Analyze - Compare=IDH_DLG_COMPARISON 2 Projection Menus 3 Projection Menus=topic52 3 File - Properties=topic53 3 Process - Convert Rectangular=topic54 3 Process - Convert Polar=IDH_DLG_POLAR 3 Convert - Convert FFT Polar=topic55 3 Convert - Interpolate to Parallel=topic56 3 Analyze - Plot Histogram=topic57 3 Analyze - Plot T-Theta Sampling 4 Analyze - Plot T-Theta Sampling=topic58 4 Theta Range=IDH_DLG_THETA_RANGE 3 Reconstruct - Filtered Backprojection 4 Reconstruct - Filtered Backprojection=IDH_DLG_RECONSTRUCTION 3 Reconstruct - Filtered Backprojection (Rebin to Parallel) 4 Reconstruct - Filtered Backprojection (Rebin to Parallel)=IDH_DLG_RECONSTRUCTION_REBIN 2 Plot Menus 3 Plot Menus=topic59 3 File - Properties=topic60 3 View Menu 4 View Menu=topic61 4 Set=topic62 4 Auto=topic63 4 Full=topic64 1 The Command Line Interface 2 The Command Line Interface=ctsimtext 2 Starting ctsimtext=topic65 2 Parallel Processing=ctsimtextlam 2 if1=if1 2 if2=if2 2 ifexport=ifexport 2 ifinfo=ifinfo 2 phm2pj=phm2pj 2 phm2if=phm2if 2 pj2if=pj2if 2 pjinfo=pjinfo 2 pjrec=pjrec 1 The Web Interface 2 The Web Interface=webinterface 2 Overview=topic66 2 Requirements=topic67 2 Installation=topic68 1 Installation 2 Installation=installation 2 Download=download 2 Installing Windows Binary=topic69 2 Installing Linux RPM=topic70 2 Build From Sources 3 Build From Sources=build 3 Optional Libraries=topic71 1 Algorithms 2 Algorithms=algorihms 2 Phantom Processing=phantomprocessing 2 Background Processing 3 Background Processing=backgroundprocessing 3 Advantages=topic72 3 Disadvantages=topic73 1 Simple Graphics Package 2 Simple Graphics Package=sgp 2 Transformation Sequence=topic74 2 Functions 3 Functions=topic75 3 Master coordinate functions=topic76 3 Normalized coordinate functions=topic77 3 Master coordinate to World coordinate transformations=topic78 3 Coordinate transformation functions=topic79 3 State functions=topic80 2 Coordinate Mapping 3 Coordinate Mapping=topic81 3 Dimensions=topic82 3 Formulas=topic83 1 References 2 References=bibliography ctsim-6.0.2/doc/ctsim-gui.tex0000644000175000017500000007113110667176710015056 0ustar kevinkevin\chapter{The Graphical User Interface}\label{ctsim}\index{ctsim}\index{Graphical interface}% \setheader{{\it CHAPTER \thechapter}}{}{}{\ctsimheadtitle}{}{{\it CHAPTER \thechapter}}% \ctsimfooter% \ctsim\ is the graphical shell for the CTSim project. This shell uses the \urlref{wxWindows}{http://www.wxwindows.org} library for cross-platform compatibility. The graphical shell is compatible with Microsoft Windows, \urlref{GTK}{http://www.gtk.org}, and \urlref{Motif}{http://www.openmotif.org} graphical environments. \section{Starting CTSim} \usage \texttt{ctsim [files to open...]} You can invoke \ctsim\ by itself on the command line, or include any number of files that you want \ctsim\ to automatically open. \ctsim\ can open projection files, image files, phantom files, and plot files. On Microsoft Windows platforms, the simplest way to invoke \ctsim\ is via the \emph{Start} menu under the \emph{Programs} sub-menu. \section{Quick Start}\label{IDH_QUICKSTART}\index{Quick Start} The fastest way to put \ctsim\ through it's basic operation is: \begin{enumerate}\itemsep=0pt \item \texttt{File - Create Phantom...} \\ This creates a window with the geometric phantom. Choose the \texttt{Herman} head phantom. \item \texttt{Process - Rasterize...} \\ This creates an image file of the phantom by converting it from a geometric definition into a rasterized image. You may use the defaults shown in the dialog box. \item \texttt{View - Auto...} \\ Use this command on the new rasterized image window. This will optimize the intensity scale for viewing the soft-tissue details of the phantom. Select the \texttt{median} center and a standard deviation factor of \texttt{0.1}. \item \texttt{Process - Projections...} \\ Use this command on the geometric phantom window. This simulates the collection of x-ray data. You may use the defaults shown in the dialog box. Additionally, you may wish to turn on \texttt{Trace - Projections} to watch to x-ray data being simulated. \item \texttt{Reconstruction - Filtered Backprojection...} \\ Use this command on the projection window. This will reconstruct an image from the projections. Once again, you may use the defaults shown in the dialog box. \item \texttt{View - Auto...} \\ Use this command on the new reconstructed image window. This will optimize the intensity scale for viewing the soft-tissue details of the reconstruction. Select the \texttt{median} center and a standard deviation factor of \texttt{0.1}. \item \texttt{Analyze - Compare Images...} \\ Use this command on the rasterized phantom image window. This will bring up a dialog box asking for the comparison image. Select the reconstruction image that you just made and also select the "Make difference image" check box. You'll then see the image distance measurements and also a new window with the difference between the rasterized phantom and the reconstruction. \item \textbf{That's it!} You have just performed the basic operations with \ctsim. By varying the parameters of the rasterization, projection, and reconstructions you perform endless computed tomography experiments. \ctsim\ also has many other visualization and analysis features that you learn more about by reading the manual. \end{enumerate} \section{File Types}\index{File types} \subsection{Phantom} Besides loading phantom files from the disk, the Herman\cite{HERMAN80} and Shepp-Logan\cite{SHEPP74} phantoms are built-in to \ctsim. Phantom files can be read from and written to the disk. Phantom files are stored in a simple ASCII format. A text editor is required to create and edit these files. \subsection{Image} Image files contain 2-dimensional arrays that store 4-byte floating point values. Images files can be either real or complex-valued. Typically, all images are real-valued except for images that have been processed by Fourier transforms. As you might expect, complex-valued images are twice the size of real-valued images since both a real and imaginary component need to be stored. When complex-valued images are viewed on the screen, only the real component is displayed. Images files can store any number of text labels. \ctsim\ uses these labels for recording history information regarding the creation and modifications of images. \subsection{Projection} Projection files are created from phantom files via the projection process. Numerous options are available for the creation of the these files. The files are stored in a binary format with cross-platform compatibility on little and big-endian architectures. \subsection{Plot} Plot files are created by \ctsim\ during analysis of image files. They can be read from and written to the disk. They are stored as ASCII files for easy cross-platform support and editing. \section{Global Menu Commands} These global commands are present on the menus of all windows. \subsection{File - Create Phantom}\label{IDH_DLG_PHANTOM}\index{Dialog!Create phantom} This command displays a dialog box showing the phantoms that are pre-programmed into \ctsim. After selecting one of these phantoms, the new window with that phantom will be generated. The pre-programmed phantoms are: \begin{twocollist} \twocolitem{\textbf{Herman}}{The Herman head phantom\cite{HERMAN80}} \twocolitem{\textbf{Shepp-Logan}}{The head phantom of Shepp \& Logan\cite{SHEPP74}} \twocolitem{\textbf{Unit pulse}}{A phantom that has a value of \texttt{1} for the center of the phantom and \texttt{0} everywhere else.} \end{twocollist} \subsection{File - Create Filter}\label{IDH_DLG_FILTER}\index{Dialog!Create filter} This command displays a dialog box showing the pre-programmed filters of \ctsim. This command will create a 2-dimensional image of the selected filter. The center of the filter is at the center of the image. These filters can be created in their natural frequency domain or in their inverse spatial domain. \begin{twocollist} \twocolitem{\textbf{Filter}}{Selects the filter to generate. The available filters are: \begin{itemize}\itemsep=0pt \item $|w|$ Bandlimit \item $|w|$ Hamming \item $|w|$ Hanning \item $|w|$ Cosine \item $|w|$ Sinc \item Shepp \item Bandlimit \item Sinc \item Hamming \item Hanning \item Cosine \item Triangle \end{itemize} } \twocolitem{\textbf{Domain}}{Selects either the \texttt{Frequency} or \texttt{Spatial} domain. The filters have the frequency domain as their natural domain. The spatial domain is obtained either analytically or performing an inverse Fourier transformation.} \twocolitem{\textbf{X Size}}{Number of columns in the output image.} \twocolitem{\textbf{Y Size}}{Number of rows in the output image.} \twocolitem{\textbf{Hamming Parameter}}{ This parameter adjusts the smoothing of the Hamming filter and can range from \texttt{0} to \texttt{1}. At a setting of \texttt{1}, the Hamming filter is the same as the bandlimit filter. At a setting of \texttt{0.54}, the Hamming filter is the same as the Hanning window.} \twocolitem{\textbf{Bandwidth}}{Sets the bandwidth of the filter.} \end{twocollist} \begin{twocollist} \twocolitem{\textbf{Axis (input) Scale}}{Sets the scale for the filter input. By default, the input to the filter is the distance in pixels from the center of the image. By changing this value, one can set a scale the input to the filter. For example, if the output image is \texttt{101} by \texttt{101} pixels and thus the center of the image is at \texttt{(50,50)}, then a pixel lying at point \texttt{100,50} would be 50 units from the center of the filter. By applying an \texttt{Axis scale} of \texttt{0.1}, then that point would be scaled to 5 units from the center of the filter.} \twocolitem{\textbf{Filter (output) Scale}}{Multiplies the output of the filter by this amount. By default, the filter has a maximum value of \texttt{1}.} \end{twocollist} \subsection{File - Import}\label{IDH_DLG_IMPORT} This command allows the importing of non-\ctsim\ file formats into \ctsim. \texttt{PPM} and \texttt{PNG} formats will be read into an imagefile window. Color images will be converted to grayscale. If a \texttt{DICOM} library was linked in with your version of \ctsim, then you can also import \texttt{DICOM} projection files and image files. \subsection{File - Preferences}\label{IDH_DLG_PREFERENCES}\index{Dialog!Preferences} This command displays a dialog box that allows users to control the behavior of \ctsim. These options are saved across \ctsim\ sessions. Under Microsoft Windows environments, they are stored in the registry. On UNIX and Linux environments, they are stored in the user's home directory with the filename of \texttt{.ctsim}. \begin{twocollist} \twocolitem{\textbf{Advanced options}}{This option is initially turned off in new installations. These advanced options are not required for normal simulations. When \texttt{Advanced Options} is set, \ctsim\ will display more options during scanning of phantoms and the reconstruction of projections.} \twocolitem{\textbf{Ask before closing new documents}}{This option is initially turned on in new installations. With this option set, \ctsim\ will ask before closing documents that have been modified or never saved on disk. By turning off this option, \ctsim\ will never ask if you want to save a file -- you'll be responsible for saving any files that you create.} \twocolitem{\textbf{Verbose logging}}{This option is initially turned off in new installations. With this option set, \ctsim\ will log more events than usual. There extra events are not important for viewing with typical operation of \ctsim.} \twocolitem{\textbf{Show startup tips}}{This option is initially turned on in new installations. With this option set, \ctsim\ will display helpful tips when \ctsim\ is started.} \twocolitem{\textbf{Run background tasks}}{This option is initially turned off in new installations. With this option set, \ctsim\ execute lengthy calculations in the background. A background window will appear when processes are running in the background and will disappear when no background processes are executing. This background window shows the status and progress of all background processes. \textbf{NOTE:} Due to limitations of \texttt{wxWindows}, this function is only supported on Microsoft Windows. } \end{twocollist} \subsection{File - Open} This command opens a file section dialog box. Of special consideration is the \texttt{File Type} combo box on the bottom of the dialog. You need to set the this combo box to the type of file that you wish to open. \subsection{File - Save} This command saves the contents of the active window. If the window hasn't been named, a dialog box will open asking for the file name to use. \subsection{File - Close} As one would expect, this closes the active window. If the contents of the window have not been saved and the \emph{Advanced Preferences} option \texttt{Ask before closing new documents} is turned on, then you will be prompted if decide if you want to save the contents of the window prior to closing. \subsection{File - Save As} Allows the saving of the contents of the active window to any file name. \subsection{Help - Contents} This command displays the online help. \subsection{Help - Tips} This command displays a dialog with tips on using \ctsim. \subsection{Help - Quick Start} This command displays a recommend approach to helping new users learn to use \ctsim. \subsection{Help - About} This command shows the version number and operating environment of \ctsim. \section{Phantom Menus} \subsection{Properties} Displays the properties of a phantom which includes: \begin{itemize}\itemsep=0pt \item Overall dimensions of a phantom \item A list of all component phantom elements \end{itemize} \subsection{Process - Rasterize}\label{IDH_DLG_RASTERIZE}\index{Dialog!Rasterize} This creates an image file from a phantom. Technically, it converts the phantom from a vector (infinite resolution) object into a 2-dimension array of floating-point pixels. The parameters to set are: \begin{twocollist} \twocolitem{\textbf{X size}}{Number of columns in image file} \twocolitem{\textbf{Y size}}{Number of rows in image file} \twocolitem{\textbf{Samples per pixel}}{Numbers of samples taken per pixel in both the x and y directions. For example, if the \texttt{Samples per pixel} is set to \texttt{3}, then for every pixel in the image file 9 samples \latexonly{($3\times3$)}\latexignore{(3 x 3)} are averaged.} \end{twocollist} \subsection{Process - Projections}\label{IDH_DLG_PROJECTIONS}\index{Dialog!Projections} This command creates a projection file from a phantom. The options available when collecting projections are: \begin{twocollist} \twocolitem{\textbf{Geometry}}{Sets the scanner geometry. The available geometries are: \begin{itemize}\itemsep=0pt \item \texttt{Parallel} \item \texttt{Equiangular} \item \texttt{Equilinear} \end{itemize}} \twocolitem{\textbf{Number of detectors}}{Sets the number of detectors in the detector array.} \twocolitem{\textbf{Number of views}}{Sets the number of views to collect.} \twocolitem{\textbf{Samples per detector}}{Sets the number of samples collected for each detector.} \twocolitem{\textbf{View Ratio}}{Sets the field of view as a ratio of the diameter of the phantom. For normal scanning, use a value of \texttt{1.0}.} \twocolitem{\textbf{Scan Ratio}}{Sets the length of scanning as a ratio of the view diameter. For normal scanning, use a value of \texttt{1.0}.} \twocolitem{\textbf{Focal length ratio}}{Sets the distance between the radiation source and the center of the phantom as a ratio of the radius of the phantom. For parallel geometries, a value of \texttt{1.0} is optimal. For other geometries, this should be at least \texttt{2.0} to avoid artifacts.} \end{twocollist} \textbf{Advanced Options} These options are visible only if \emph{Advanced Options} has been selected in the \texttt{File - Preferences} dialog. These parameters default to optimal settings and don't need to be adjusted except by expert users. \begin{twocollist} \twocolitem{\textbf{Rotation Angle}}{Sets the rotation amount as a fraction of a circle. For parallel geometries use a rotation angle of \texttt{0.5} and for equilinear and equiangular geometries use a rotation angle of \texttt{1}. Using any other rotation angle will lead to artifacts.} \end{twocollist} \section{Image Menus} \subsection{File - Properties} Properties of image files include: \begin{itemize}\itemsep=0pt \item Whether the image is real or complex-valued. \item Numeric statistics (minimum, maximum, mean, median, mode, and standard deviation). \item History labels (text descriptions of the processing for this image). \end{itemize} \subsection{File - Export}\label{IDH_DLG_EXPORT}\index{Image!Export} This command allows for exporting image files to a standard graphics file format. This is helpful when you want to take an image and import it into another application. The current \helprefn{intensity scale}{intensityscale} is used when exporting the file. The supported graphic formats are: \begin{twocollist} \twocolitem{\textbf{PNG}}{Portable Network Graphics format. This uses 8-bits or 256 shades of gray.} \twocolitem{\textbf{PNG-16}}{This is a 16-bit version of PNG which allows for 65536 shades of gray.} \twocolitem{\textbf{PGM}}{Portable Graymap format. This is a common format used on UNIX systems.} \twocolitem{\textbf{PGM ASCII}}{ASCII version of PGM.} \end{twocollist} \subsection{View} \subsubsection{Intensity Scale}\label{intensityscale}\index{Intensity scale} These commands are used change the intensity scale for viewing the image. These commands do not change the image data. When the minimum value is set, then the color pure black is assigned to that image value. Similarly, when the maximum value is set, the the color pure white is assigned to that image value. Changing the intensity scale is useful when examining different image features. In clinical medicine, the intensity scale is often changed to examine bone (high value) versus soft-tissue (medium value) features. \subsubsection{Set}\label{IDH_DLG_MINMAX} This command displays a dialog box that sets the lower and upper values to display. \subsubsection{Auto}\label{IDH_DLG_AUTOSCALE}\index{Auto scale} This command displays a dialog box that allows \ctsim\ to automatically make an intensity scale. The parameters that \ctsim\ needs to make this automatic scale are: \begin{twocollist} \twocolitem{\textbf{Center}}{This sets the center of the intensity scale. Currently, \ctsim\ allows you to use either the mean, mode, or median of the image as the center of the intensity scale.} \twocolitem{\textbf{Width}}{This sets the half-width of the intensity scale. The half-width is specified as a multiple of the standard deviation.} \end{twocollist} As an example, if \texttt{median} is selected as the center and \texttt{0.5} is selected as the width, the the minimum value will be \latexonly{$median - 0.5 \times standardDeviation$}\latexignore{\emph{median - 0.5 x standardDeviation}} and the maximum value will be \latexonly{$median + 0.5 \times standardDeviation$.}\latexignore{\emph{ median + 0.5 x standardDeviation}.} \subsubsection{Full} This command resets the intensity scale to the full scale of the image. \subsection{Image} These commands create a new image based upon the current image, and for some commands, also upon a comparison image. \subsubsection{Add, Subtract, Multiply, Divide} These are simple arithmetic operations. \ctsim\ will display a dialog box showing all of the currently opened image files that are the same size as the active image. After the selection of a compatible image, \ctsim\ will perform the arithmetic operation on the two images and make a new result image. \subsubsection{Image Size} This command will generate a new image based on the current image. The new image can be scaled to any size. A dialog appears asking for the size of the new image. Bilinear interpolation is used when calculating the new image. \subsubsection{3-D Conversion} This command generates a 3-dimensional view of the current phantom. This view can be rotated in three dimensions. The left and right arrow control the z-axis rotation and the up and down arrows control the x-axis rotation. The y-axis rotation is controlled by the \texttt{T} and \texttt{Y} keys. Other options are presented on the \texttt{View} menu and include: \begin{itemize}\itemsep=0pt \item Surface plot versus wireframe plot. \item Smooth shading versus flat shading. \item Lighting on or off. \item Color scale on or off. \end{itemize} \subsection{Filter}\index{Image!Filter} These commands filter and modify the image \subsubsection{Arithmetic} These commands operate on the image on a pixel-by-pixel basis. The commands support both real and complex-valued images. The available arithmetic commards are: \begin{twocollist} \twocolitem{\textbf{Invert}}{Negate pixel values.} \twocolitem{\textbf{Log}}{Take natural logrithm of pixel values.} \twocolitem{\textbf{Exp}}{Take natural exponent of pixel values.} \twocolitem{\textbf{Square}}{Take square of pixel values.} \twocolitem{\textbf{Square root}}{Take square root of pixel values.} \end{twocollist} \subsubsection{Frequency Based} These commands perform Fourier and inverse Fourier transformations of images. By default, the transformations will automatically convert images between Fourier to natural orders as expected. For example, \texttt{2-D FFT} will transform the points into natural order after the Fourier transform. Similarly the inverse, \texttt{2-D IFFT}, will reorder the points from natural order to Fourier order before applying the inverse Fourier transformation. As you would expect, images that undergo frequency filtering will be complex-valued after than filtering. Only the real component is shown by \ctsim. However, \ctsim\ does have options for converting a complex-valued image into a real-valued image via the \texttt{Magnitude} and \texttt{Phase} filtering commands. The available frequency-based filtering commards are: \begin{itemize}\itemsep=0pt \item 2-D FFT \item 2-D IFFT \item FFT Rows \item IFFT Rows \item FFT Columns \item IFFT Columns \item 2-D Fourier \item 2-D Inverse Fourier \item Shuffle Fourier to Natural Order \item Shuffle Natural to Fourier Order \item Magnitude \item Phase \end{itemize} \subsection{Analyze - Plot} The commands plot rows and columns of images. There are commands that perform FFT transformations prior to plotting. To select the row or column to plot, click the left mouse button over the desired cursor point. The available plot commands are: \begin{itemize}\itemsep=0pt \item Plot Row \item Plot Column \item Plot Histogram \item Plot FFT Row \item Plot FFT Col \end{itemize} \subsection{Analyze - Compare}\label{IDH_DLG_COMPARISON}\index{Image!Comparison} This command performs statistical comparisons between two images. An option also exists for generating a difference image from the two input images. The three distance measures reported are: \begin{itemize}\itemsep=0pt \item[] \textbf{$d$}\quad The normalized root mean squared distance measure. \item[] \textbf{$r$}\quad The normalized mean absolute distance measure. \item[] \textbf{$e$}\quad The worst case distance measure over a \latexonly{$2\times2$}\latexignore{\emph{2 x 2}} pixel area. \end{itemize} There are also commands for comparison plotting of rows and columns from two images. This is quite helpful when comparing a phantom to a reconstruction. As with plotting of rows and columns, click the left mouse button over the desired cursor point to choose which row and column to plot. \section{Projection Menus} \subsection{File - Properties} The displayed properties include: \begin{itemize}\itemsep=0pt \item Number of detectors in the projections. \item Number of views. \item The parameters used when generating the projections from the phantom. \end{itemize} \subsection{Process - Convert Rectangular} The commands takes the projection data and creates an image file using the projection data. \subsection{Process - Convert Polar}\label{IDH_DLG_POLAR}\index{Polar conversion} This command creates an image file with the polar conversion of the projection data. The parameters to set are: \begin{twocollist} \twocolitem{\textbf{X Size}}{Number of columns in output image.} \twocolitem{\textbf{Y Ssize}}{Number of rows in output image.} \twocolitem{\textbf{Interpolation}}{Selects the interpolation method. Currently, the \texttt{bilinear} option provides the highest quality interpolation.} \end{twocollist} \subsection{Convert - Convert FFT Polar} The parameters for this option are the same as the \helprefn{Convert Polar Dialog}{convertpolardialog}. For this command, though, the projections are Fourier transformed prior to conversion to polar image. \subsection{Convert - Interpolate to Parallel} This command filters divergent projection data (equiangular or equilinear) and interpolates (or rebins) to estimate the projection data if the projections had been collected with parallel geometry. \subsection{Analyze - Plot Histogram} Plots a histogram of projection data attenuations. \subsection{Analyze - Plot T-Theta Sampling} Plots a 2-dimensional scattergram showing the \texttt{T} and \texttt{Theta} values for each data point in the projection data. This is especially instructive when scanning with divergent geometries and the scan ratio is close to \texttt{1}. \subsubsection{Theta Range}\label{IDH_DLG_THETA_RANGE} This dialog box allows the constraint of Theta values for the T-Theta Sampling scattergram. \subsection{Reconstruct - Filtered Backprojection}\label{IDH_DLG_RECONSTRUCTION}\index{Dialog!Reconstruction} This command displays a dialog to set the parameters for reconstructing an image from projections using the filtered backprojection technique. The parameters available are: \begin{twocollist} \twocolitem{\textbf{Filter}}{Selects the filter to apply to each projection. To properly reconstruct an image, this filter should consist of the the absolute value of distance from zero frequency optionally multiplied by a smoothing filter. The optimal filters to use are: \begin{itemize}\itemsep=0pt \item \texttt{abs\_bandlimit} \item \texttt{abs\_hamming} \item \texttt{abs\_hanning} \item \texttt{abs\_cosine} \end{itemize} } \twocolitem{\textbf{Hamming parameter}}{Sets the alpha level for Hamming window. This parameter adjusts the smoothing of the Hamming filter and can range from \texttt{0} to \texttt{1}. At a setting of \texttt{1}, the Hamming filter is the same as the bandlimit filter. At a setting of \texttt{0.54}, the Hamming filter is the same as the Hanning window.} \twocolitem{\textbf{Filter Method}}{Selects the filtering method. For large numbers of detectors, the FFT-based filters are preferred whereas for smaller numbers of detectors \texttt{convolution} can be faster. When \emph{Advanced Options} have been turned off, this menu only shows the two basic choices: \texttt{convolution} and \texttt{FFT}. However, when \emph{Advanced Options} have been turned on, additional selections are available as discussed in the next section. } \twocolitem{\textbf{Interpolation}}{Interpolation technique during backprojection. \texttt{cubic} has optimal quality when the data is smooth. Smooth data is obtained by taking many projections and/or using a smoothing filter. In the absence of smooth data, \texttt{linear} gives better results and is also many times faster than cubic interpolation. \begin{itemize}\itemsep=0pt \item \texttt{nearest} - No interpolation, selects nearest point. \item \texttt{linear} - Uses fast straight line interpolation. \item \texttt{cubic} - Uses cubic interpolating polynomial. \end{itemize} } \end{twocollist} \textbf{Advanced Options} These options are visible only if \emph{Advanced Options} has been selected in the \texttt{File - Preferences} dialog. These parameters default to optimal settings and don't need to be adjusted except by expert users. \begin{twocollist} \twocolitem{\textbf{Filter Method}}{Selects the filtering method. The general comments about this parameter given the previous section still apply. With \emph{Advanced Options} on, the full set of filter methods are available: \begin{itemize}\itemsep=0pt \item \texttt{convolution} \item \texttt{fourier} - Uses simple Fourier transform. \item \texttt{fourier-table} - Optimizes Fourier transform by precalculating trigometric functions. \item \texttt{fftw} - Uses complex-valued Fourier transform with the \emph{fftw} library. \item \texttt{rfftw} - Uses optimized real/half-complex Fourier transform. \end{itemize} } \twocolitem{\textbf{Backprojection}}{Selects the backprojection technique. A setting of \texttt{idiff} is optimal. \begin{itemize}\itemsep=0pt \item \texttt{trig} - Use trigometric functions at each image point. \item \texttt{table} - Use precalculated trigometric tables. \item \texttt{diff} - Use difference method to iterate within image. \item \texttt{idiff} - Use integer iteration techique. \end{itemize} } \twocolitem{\textbf{Filter Generation}}{Selects the filter generation. With convolution, \texttt{direct} is the proper method to select. With any of the frequency methods, \texttt{inverse-fourier} is the best method. \begin{itemize}\itemsep=0pt \item \texttt{direct} \item \texttt{inverse-fourier} \end{itemize} } \twocolitem{\textbf{Zeropad}}{Zeropad factor when using frequency-based filtering. A setting of \texttt{1} is optimal whereas a setting of \texttt{0} disables zero padding. Settings greater than \texttt{1} perform larger amounts of zero padding but without any significant benefit.} \twocolitem{\textbf{ROI}}{These four settings control the \textit{region of interest} for the reconstruction. The default values match the dimensions of the entire phantom. By constraining the ROI to be a smaller square, the reconstruction will be magnified.} \end{twocollist} \subsection{Reconstruct - Filtered Backprojection (Rebin to Parallel)}\label{IDH_DLG_RECONSTRUCTION_REBIN}\index{Dialog!ReconstructionRebin} The command reconstructs the projection data via filtered backprojection as described above. As opposed to the above command, this command also rebins divergent projection data to parallel prior to reconstruction. This greatly speeds reconstruction of divergent geometry projections. \section{Plot Menus} \subsection{File - Properties} The displayed properties include: \begin{itemize}\itemsep=0pt \item the number of curves in the plot and the number of points per curve. \item the EZPlot commands used to format the plot are displayed. \item history labels from the originating image(s) and the plot function. \end{itemize} \subsection{View Menu} These commands set the scaling for the y-axis. They are analogous to the options used for setting the intensity scale for images. \subsubsection{Set} This command sets the upper and lower limits for the y-axis. \subsubsection{Auto} This command automatically sets the upper and lower limits for the y-axis. Please refer to the image file \helpref{\texttt{View - Auto}}{IDH_DLG_AUTOSCALE} documentation for the details. \subsubsection{Full} The command resets the upper and lower limits of the y-axis to the minimum and maximum values of the curves. ctsim-6.0.2/doc/ctsim.tex0000644000175000017500000001122610667176710014273 0ustar kevinkevin\documentclass[letterpaper,11pt]{report} \usepackage{graphicx} \usepackage{texhelp} \usepackage{fancyhea} \usepackage{mysober} \usepackage{mytitle} \usepackage{verbatim} \usepackage{makeidx} %\usepackage{times} \usepackage{hyperref} \input{psbox.tex} \latexonly{\includeonly{ctsim-concepts,ctsim-install,ctsim-gui,ctsim-textui,ctsim-web,ctsim-algorithms,ctsim-sgp}} \hyphenation{poly-gon-al multi-thread-ing} \newcommand{\ctsim}{\texttt{CTSim}} \newcommand{\ctsimtext}{\texttt{CTSimText}} \newcommand{\usage}{\textbf{Usage}\par} \newcommand{\commandref}[2]{\helpref{{\tt $\backslash$#1}}{#2}}% \newcommand{\commandrefn}[2]{\helprefn{{\tt $\backslash$#1}}{#2}\index{#1}}% \newcommand{\commandpageref}[2]{\latexignore{\helprefn{{\tt $\backslash$#1}}{#2}}\latexonly{{\tt $\backslash$#1} {\it page \pageref{#2}}}\index{#1}} \newcommand{\indexit}[1]{#1\index{#1}}% \newcommand{\inioption}[1]{{\bf {\tt #1}}\index{#1}}% \newcommand{\manvernum}[0]{1.0} \newcommand{\manver}[0]{v\manvernum} \newcommand{\mandate}[0]{May 1, 2002} \newcommand{\ctsimfooter}{\setfooter{\thepage}{}{}{\small Manual \manver}{\small \mandate}{\thepage}} \newcommand{\doublehyphen}[1]{-\,-\texttt{#1}} \newcommand{\ctsimvernum}[0]{3.5.0} \newcommand{\ctsimver}[0]{CTSim \ctsimvernum} \newcommand{\ctsimheadtitle}{\ctsimver\ Manual} \latexignore{\newcommand{\sqrt}[2]{sqrt(#2)}} \parskip=10pt% \parindent=0pt% %\backgroundcolour{255;255;255}\textcolour{0;0;0}% Has an effect in HTML only \title{CTSim 3.5 User Manual}% \author{Kevin M. Rosenberg, M.D.}% \makeindex% \textheight=9in \textwidth=6.0in \evensidemargin=0in \oddsidemargin=0in \begin{document} \maketitle \pagestyle{fancyplain} \pagenumbering{roman} \chapter*{Copyright notice}% \setheader{{\it COPYRIGHT}}{}{}{\ctsimheadtitle}{}{{\it COPYRIGHT}}% \ctsimfooter Copyright (c) 1983-2002 Kevin M. Rosenberg, M.D. Permission to use, copy, modify, and distribute this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice, author statement and this permission notice appear in all copies of this software and related documentation. THE SOFTWARE IS PROVIDED ``AS-IS'' AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL KEVIN M. ROSENBERG BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. \chapter*{Acknowledgements} \setheader{{\it COPYRIGHT}}{}{}{\ctsimheadtitle}{}{{\it COPYRIGHT}}% \setfooter{\thepage}{}{}{}{\manver}{\thepage}% \textbf{Ian Kay, Ph.D.}\\ Special thanks to Dr. Kay for contributing portions to this manual. Dr. Kay has assisted the development of \ctsim\ with the addition of helical scanning, bug reports, and paches. \textbf{Gabor T. Herman, Ph.D.}\\ Dr. Herman's publications on computed tomography inspired the initial version \ctsim\ in 1983. Dr. Herman has graciously permitted use of his copyrighted head phantom for use in \ctsim. \setheader{{\it CONTENTS}}{}{}{\ctsimheadtitle}{}{{\it CONTENTS}}% \ctsimfooter \parskip=2pt \tableofcontents% \parskip=10pt \chapter{Introduction}\label{IDH_INTRODUCTION} \pagenumbering{arabic} \setheader{{\it CHAPTER \thechapter}}{}{}{\ctsimheadtitle}{}{{\it CHAPTER \thechapter}}% \ctsimfooter \centerline{\image{3cm;3cm}{logo.eps}} Computed tomography is a technique for estimating the interior of an object from measurements of radiation collected around the object. This radiation can be either projected through or emitted from the object. \ctsim\ simulates the process of projecting X-rays through a phantom object. \ctsim\ can then reconstruct the interior of the object from those projections. \ctsim\ integrates numerous visualization and analytic tools. This manual begins with an introduction into the concepts of \ctsim. Next, the graphical, command-line, and web shells are presented. Finally, the installation of \ctsim\ is discussed. I hope that you enjoy \ctsim! \include{ctsim-concepts} \include{ctsim-gui} \include{ctsim-textui} \include{ctsim-web} \include{ctsim-install} \appendix \include{ctsim-algorithms} \include{ctsim-sgp} \newpage \bibliographystyle{plain} \bibliography{ctsim} \addcontentsline{toc}{chapter}{Bibliography} \setheader{{\it REFERENCES}}{}{}{\ctsimheadtitle}{}{{\it REFERENCES}} \ctsimfooter \newpage \addcontentsline{toc}{chapter}{Index} \setheader{{\it INDEX}}{}{}{\ctsimheadtitle}{}{{\it INDEX}} % \ctsimfooter \printindex \end{document} ctsim-6.0.2/doc/equiangular.eps0000644000175000017500000132060210667176710015462 0ustar kevinkevin%!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(TM) 7.0 %%AI8_CreatorVersion: 9.0 %%For: (Kevin Rosenberg) ( ) %%Title: (equiangular.eps) %%CreationDate: 3/1/2001 12:01 AM %%BoundingBox: -8 48 706 633 %%HiResBoundingBox: -7.3828 48.3843 705.4785 632.3408 %%DocumentProcessColors: Cyan Magenta Yellow Black %%DocumentFonts: Myriad-Roman %%+ Symbol %%+ Times-Italic %%DocumentSuppliedFonts: Myriad-Roman %%+ Symbol %%+ Times-Italic %%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0 %%+ procset Adobe_typography_AI5 1.0 1 %%+ procset AGM_Gradient 1.0 0 %%+ procset Adobe_ColorImage_AI6 1.1 0 %%+ procset Adobe_Illustrator_AI5 1.3 0 %%+ procset Adobe_pattern_AI5 1.0 0 %%+ procset Adobe_cshow 2.0 8 %AI5_FileFormat 3.0 %AI3_ColorUsage: Color %AI3_IncludePlacedImages %AI7_ImageSettings: 1 %%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) %%+ Options: 1 16 0 1 0 1 0 0 0 0 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 %%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 () %AI3_TemplateBox: 306.5 395.5 306.5 395.5 %AI3_TileBox: 219 -283 805 483 %AI3_DocumentPreview: Header %AI5_ArtSize: 200 200 %AI5_RulerUnits: 2 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI5_OpenToView: -197.5 899.5 1 1345 943 26 0 1 11 68 1 0 %AI5_OpenViewLayers: 7 %%PageOrigin:219 -283 %%AI3_PaperRect:-13 779 599 -13 %%AI3_Margin:13 -13 -13 13 %AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 1 %AI7_Thumbnail: 128 108 8 %%BeginData: 6254 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD59FFA8FD7CFF7DA8FF2752FD0CFF7DFD6CFFA87DFFFFFF7DA8FD %0AFF7D7D7DA8FD69FFA8A8A8FD11FF527D52FD68FFA8FD0BFFA8FD08FFA8 %A8FD66FFA8A8A8FD0CFFA8A8FD08FFA852A8FD63FFA8A8FD18FF7D7DFD62 %FFA87DFD1BFFA87DFD3BFFFD0AA8FD1AFFA8A8FD1CFF7D7DA8A8FD34FFA8 %7DA87DA8A8FD0AFFA87DA87DA8A8FD12FFA87DFD17FFA8FD06FFA87D7D7D %FD31FFA87DA8FD16FF7DA8A8FD0DFFA8A8A8FD20FF7DA8FD2FFFA87DA8FD %1CFF7DA8A8FD09FF7DA8FD1CFF7DFD07FF7DFD2CFFA8A8FD22FFA8FD06FF %A8A8FD1FFF7DFD06FF7DFD2AFFA87DFD25FFA8A8A8FFA8A8FD28FFA8FFA8 %A8FD25FFA8A8FD29FFA87DFD2AFF7D7DA852FD24FF7DA8FD28FFA8A8A8FF %7DFD24FFA8FD04FF52A87DFD24FFA8FD29FFA8FD05FFA8A8FD22FFA8FD05 %FF52A8A8FD21FFA8A8FD28FFA8A8FD08FFA8A8FD26FF7D52A8FD20FFA8FD %28FFA8A8FD0BFFA8A8FD21FFA8FD04FFA8A8FD1FFFA8A8FD26FFA87DFD0E %FFA8A8FD20FFA8FD04FF52A87DFD1DFFA8FD26FFA8A8FD12FFA8FD1FFFA8 %FD04FFA8A8A8FD1CFFA8FD26FF7DFD15FFA8FD23FFA87D7DFD1BFFA8FD25 %FFA8A8FD17FFA8FD1FFFA8FFFFFF7D7D7DFD19FFA8A8FD23FF7DA8FD19FF %A8A8FD1EFFA8FD1FFFA8FD23FFA8FD1CFFA8FD1EFFA8FFFFFF7DA87DA8FD %17FFA8FD21FFA8A8A8FD1EFFA8FD22FF7DA87DFD16FFA8FD21FF7DFD22FF %A8FD1DFFA8FFFFA87DA8A87DFD14FFA8FD1FFFA8A8A8FD23FFA8FD1DFFA8 %FFFFFFA87DA8FFA8FD32FFA8FD27FFA8FD1DFFA8FD19FFA8FD1DFFA87DFF %FFA87DA87DA8A8FD20FFA8A8FD20FFA87D7D7DFD12FFA8FD1BFFA8A87DA8 %A8A8FD05FFA8A8A87DA8FD1DFFA8FD1DFFA8FFFFFF7DFD13FF7DFD1AFFA8 %7DA8A8FD0DFFA8A87DFD1BFFA8A8FD1CFF7DFFFFFF527D7DFD10FFA8FD1A %FFA87DFD13FFA8FD1BFFA8FD20FF7D7DFD11FFA8FD18FF7DA8A8FD15FFA8 %A8A8FD18FFA8A8FD20FFA87D7D7DFD0EFFA8FD16FFA87DA8FD19FFA8A8FD %18FFA8FD1CFFA8FD06FFA8FD0DFF7DFD15FFFD04A8FD1CFFA8FD17FF7DFD %1CFFA8FD04FF7DA87DFD0DFFA8FD14FFA8FD0DFFA8FD087DFD0BFFA8FD17 %FFA8FD1BFFA8FD04FFA8FD0FFFA8FD11FFA8A8A8FFFFA8FD0AFF7D7DFD08 %A852A8FD09FFA8A8FD16FFA8FD20FF7DA852A8FD0BFFA8FD11FF7DA8FFFF %FFA8FD0AFF52FD0BA87DA8FD09FFA8FD16FFA8FD21FFA8A87DA8A8FD09FF %A8FD0FFFA87DFD04FFA8A8FD09FF52A87DA8A8A87DA8A8A87DA8A8A87D7D %FD09FFA8FD16FFA8FD1BFFA8FD05FFA8A8FD0BFFA8FD0DFFA8A8FD06FFA8 %FD09FF7DFD0FA87DA8FD08FFA8FD16FFA8FD1BFFA8FD05FF7DA8A8FD09FF %A8FD0DFF7DFD07FFA8FD09FF7D7DA8A8A87D27FD05A852527DA8A8A852FD %09FF7DFD15FF7DFD1BFFA8FD05FF7DFF7DFFA8FD07FFA8FD0BFFA8A8FD08 %FFA8FD09FF7DFD04A8275252FD04A8272752FD04A87DFD08FFA8A8FD14FF %A8FD21FFA87D7DA8FD08FF7DFD09FF7DA8FD0AFFA8FD08FFA87DA87DA852 %272752A8A87D7D272727A8A8A87D7DFD09FFA8FD14FFA8FD1BFF7DFD11FF %A8FD07FFA8A8FD06FFA8FD04FFA8FD09FF7DFD04A87D275227A8A8A85252 %2727FD04A87DA8FD08FFA8FD15FFA8FD1AFFA8FD11FF7DFD05FFA8A8FFFF %A8A87DA87DA852A8FFFFFFA8FD09FF7DFD04A852272752A8A8A87D272727 %FD05A852FD08FFA8A8FD14FFA8FD1AFFA8FD11FFA8FFFFFFA87DA87DA8FF %7DFF52FFA8FFA8FD04FFA8FD08FFA87DFD04A87D275227A8A8A87D272752 %FD06A8FD09FFA8FD14FF7DFD2CFF7DFFA8A8A8FD04FFA87D7D527DA87D52 %A8FFFFFFA8FD08FF7DA87DA8A8A87D2727527DA8A8A8272727A87DA8A8A8 %52FD09FF7DFD14FFA8FD1AFFA8FD11FFA8A8FF7DFD05FFA8FD0AFFA8FD09 %FFFD07A852527DFD04A87D277DFD05A87DFD09FFA8FD14FFA8FD1AFFA8FD %11FF7DFF52277DA87DA852A8A8FD09FF7DFD09FF7DFD15A87DA8FD08FF7D %FD14FFA8FD1AFFA8FD11FFA8FFFF7DFD07FFA8A87DA8A8A87DA8A87D7DFD %04A8FD04FFFD17A87DFD08FFA8FD14FFA8FD2CFF7DFD13FF7DFD04FFA87D %A87DA8527D7D7D527D7D7D527D277D277DA8A87DA8A8A87DA87DA8FD08FF %7DFD14FFA8FD1AFFA8FD11FFA8FD13FFA8FD04FFA8A8FFFFFFFD0AA8277D %27FD0A7DFD05A8FD04FFA8FD14FFA8FD1BFFA8FD10FF7DFD13FFA8A8FFFF %A852A8FFFFFF7DFD15A852FD05FFA8A87DA852A87DA87DA87DA87DA87DA8 %7DFD08FFA8FD1BFFA8FD10FFA8FD14FFA8FFFFFF7DFD05FF7DFD04A87DFD %0AA87D7DA8A8A87DFD09FFA8FD0CFF7DA8A8A87DA8A8A87DA8A8A87DFD04 %A8FD12FFA87DFD10FF7DFD14FFA8FFFF7DA8FD05FF7D7DA8A852277DA8A8 %7DA8A8A87DA8A82727A8A8A87DFD09FFA8FD14FFA8FD08FF7DA87DA87DA8 %7DA87DA87DA87DA87D2752FF5252FD10FFA8FD14FFA8FFA8A8FD06FF7DA8 %A8A87D7DFD0AA87D7DA8A87DFD09FFA8FD0BFF7DFD09FFA8FD17FF52A8FD %13FF7DFD14FFA8A8FFA8FD06FFA87DFD12A87DFD09FFA8FD0AFF7DFD09FF %7DFD2DFFA8FD15FFA8FD09FF7DFD12A87DFD09FFA8FD0AFF7DA8FD08FFA8 %FD2DFFA8A8FD14FF7DFD09FFA87D7DA8A8A87DA8A8A87DA8A8A87DA8A8A8 %52FD09FF7DFD15FF7DFD2EFFA8FD15FFA8FD09FF7DFD0FA852FD0AFFA8FD %15FFA8FD2EFFA8FD15FFA8A8FD09FF52FD0DA852A8FD09FFA8FD15FFA8A8 %FD2EFFA8FD16FFA8FD0AFF7D7DFD0AA852A8FD0AFFA8FD15FFA8FD30FF7D %FD15FFA8A8FD0AFF7D7D7DA87DA8A8A87D7D52FD0BFFA8FD16FFA8FD30FF %A8FD16FFA8FD0CFFA8FD057DA8FD0CFFA8FD17FFA8FD30FFA8FD17FFA8A8 %FD1CFF7DFD17FF7DFD32FFA8FD17FFA8FD1BFFA8FD18FFA8FD32FFA8FD18 %FFA8A8FD17FFA8A8FD18FFA8A8FD33FFA8FD19FFA8A8FD14FFA8A8FD19FF %A8FD34FF7DFD1BFF7DA8FD10FF7DA8FD1AFFA8FD36FFA8FD1CFFA87DA8FD %0AFF7DA8A8FD1CFFA8FD36FFA8FD1EFFA8A87DA87DA87DA87DA8A8FD1EFF %A8A8FD37FFA8FD46FFA8FD38FFA8A8FD44FF7DFD3AFFA8FD43FFA8FD3CFF %7DFD41FFA8A8FD3DFFA8FD40FFA8FD3EFFA8A8FD3EFFA8FD41FFA8FD3CFF %A8FD42FFA8A8FD3AFFA8A8FD44FFA8FD38FFA8FD47FFA8FD36FFA8A8FD48 %FFA8FD34FFA8FD4BFF7DFD31FFA8A8FD4DFFA8FD2FFFA8FD50FFA8A8FD2C %FF7DFD53FFA8A8FD28FFA8A8FD56FF7DA8FD24FF7DA8FD5AFFA8A8FD1FFF %A8A8A8FD5EFF7DA8A8FD19FFA8A87DFD64FF7DA8A8FD13FFA8A87DA8FD69 %FFA8A87DA87DA87DFD05FF7DA87DA87DA87DFD74FFFD05A8FDFCFFFDFCFF %FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDEFFFFF %%EndData %%EndComments %%BeginProlog %%BeginResource: procset Adobe_level2_AI5 1.2 0 %%Title: (Adobe Illustrator (R) Version 5.0 Level 2 Emulation) %%Version: 1.2 0 %%CreationDate: (04/10/93) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) userdict /Adobe_level2_AI5 26 dict dup begin put /packedarray where not { userdict begin /packedarray { array astore readonly } bind def /setpacking /pop load def /currentpacking false def end 0 } if pop userdict /defaultpacking currentpacking put true setpacking /initialize { Adobe_level2_AI5 begin } bind def /terminate { currentdict Adobe_level2_AI5 eq { end } if } bind def mark /setcustomcolor where not { /findcmykcustomcolor { (AI8_CMYK_CustomColor) 6 packedarray } bind def /findrgbcustomcolor { (AI8_RGB_CustomColor) 5 packedarray } bind def /setcustomcolor { exch aload pop dup (AI8_CMYK_CustomColor) eq { pop pop 4 { 4 index mul 4 1 roll } repeat 5 -1 roll pop setcmykcolor } { dup (AI8_RGB_CustomColor) eq { pop pop 3 { 1 exch sub 3 index mul 1 exch sub 3 1 roll } repeat 4 -1 roll pop setrgbcolor } { pop 4 { 4 index mul 4 1 roll } repeat 5 -1 roll pop setcmykcolor } ifelse } ifelse } def } if /setAIseparationgray { false setoverprint 0 setgray /setseparationgray where{ pop setseparationgray }{ /setcolorspace where{ pop [/Separation (All) /DeviceCMYK {dup dup dup}] setcolorspace 1 exch sub setcolor }{ setgray }ifelse }ifelse } def /gt38? mark {version cvr cvx exec} stopped {cleartomark true} {38 gt exch pop} ifelse def userdict /deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt put userdict /level2? systemdict /languagelevel known dup { pop systemdict /languagelevel get 2 ge } if put /level2ScreenFreq { begin 60 HalftoneType 1 eq { pop Frequency } if HalftoneType 2 eq { pop GrayFrequency } if HalftoneType 5 eq { pop Default level2ScreenFreq } if end } bind def userdict /currentScreenFreq level2? {currenthalftone level2ScreenFreq} {currentscreen pop pop} ifelse put level2? not { /setcmykcolor where not { /setcmykcolor { exch .11 mul add exch .59 mul add exch .3 mul add 1 exch sub setgray } def } if /currentcmykcolor where not { /currentcmykcolor { 0 0 0 1 currentgray sub } def } if /setoverprint where not { /setoverprint /pop load def } if /selectfont where not { /selectfont { exch findfont exch dup type /arraytype eq { makefont } { scalefont } ifelse setfont } bind def } if /cshow where not { /cshow { [ 0 0 5 -1 roll aload pop ] cvx bind forall } bind def } if } if cleartomark /anyColor? { add add add 0 ne } bind def /testColor { gsave setcmykcolor currentcmykcolor grestore } bind def /testCMYKColorThrough { testColor anyColor? } bind def userdict /composite? 1 0 0 0 testCMYKColorThrough 0 1 0 0 testCMYKColorThrough 0 0 1 0 testCMYKColorThrough 0 0 0 1 testCMYKColorThrough and and and put composite? not { userdict begin gsave /cyan? 1 0 0 0 testCMYKColorThrough def /magenta? 0 1 0 0 testCMYKColorThrough def /yellow? 0 0 1 0 testCMYKColorThrough def /black? 0 0 0 1 testCMYKColorThrough def grestore /isCMYKSep? cyan? magenta? yellow? black? or or or def /customColor? isCMYKSep? not def end } if end defaultpacking setpacking %%EndResource %%BeginResource: procset Adobe_typography_AI5 1.0 1 %%Title: (Typography Operators) %%Version: 1.0 1 %%CreationDate:(6/10/1996) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_typography_AI5 68 dict dup begin put /initialize { begin begin Adobe_typography_AI5 begin Adobe_typography_AI5 { dup xcheck { bind } if pop pop } forall end end end Adobe_typography_AI5 begin } def /terminate { currentdict Adobe_typography_AI5 eq { end } if } def /modifyEncoding { /_tempEncode exch ddef /_pntr 0 ddef { counttomark -1 roll dup type dup /marktype eq { pop pop exit } { /nametype eq { _tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll put } { /_pntr exch ddef } ifelse } ifelse } loop _tempEncode } def /havefont { systemdict /languagelevel known { /Font resourcestatus dup { exch pop exch pop } if } { systemdict /FontDirectory get 1 index known { pop true } { systemdict /fileposition known { dup length 6 add exch Ss 6 250 getinterval cvs pop Ss exch 0 exch getinterval status { pop pop pop pop true } { false } ifelse } { pop false } ifelse } ifelse } ifelse } def /TE { StandardEncoding 256 array copy modifyEncoding /_nativeEncoding exch def } def /subststring { exch 2 index exch search { exch pop exch dup () eq { pop exch concatstring } { 3 -1 roll exch concatstring concatstring } ifelse exch pop true } { pop pop false } ifelse } def /concatstring { 1 index length 1 index length 1 index add string dup 0 5 index putinterval dup 2 index 4 index putinterval 4 1 roll pop pop pop } def % /TZ { dup type /arraytype eq { /_wv exch def } { /_wv 0 def } ifelse /_useNativeEncoding exch def 2 index havefont { 3 index 255 string cvs dup (_Symbol_) eq { pop 2 index findfont } { 1 index 0 eq { dup length 1 sub 1 exch getinterval cvn findfont } { pop 2 index findfont } ifelse } ifelse } { dup 1 eq { 2 index 64 string cvs dup (-90pv-RKSJ-) (-83pv-RKSJ-) subststring { exch pop dup havefont { findfont false } { pop true } ifelse } { pop dup (-90ms-RKSJ-) (-Ext-RKSJ-) subststring { exch pop dup havefont { findfont false } { pop true } ifelse } { pop pop true } ifelse } ifelse { 1 index 1 eq { /Ryumin-Light-Ext-RKSJ-V havefont {/Ryumin-Light-Ext-RKSJ-V} {/Courier} ifelse } { /Ryumin-Light-83pv-RKSJ-H havefont {/Ryumin-Light-83pv-RKSJ-H} {/Courier} ifelse } ifelse findfont [1 0 0.5 1 0 0] makefont } if } { /Courier findfont } ifelse } ifelse _wv type /arraytype eq { _wv makeblendedfont } if dup length 10 add dict begin mark exch { 1 index /FID ne { def } if cleartomark mark } forall pop /FontScript exch def /FontDirection exch def /FontRequest exch def /FontName exch def counttomark 0 eq { 1 _useNativeEncoding eq { /Encoding _nativeEncoding def } if cleartomark } { /Encoding load 256 array copy modifyEncoding /Encoding exch def } ifelse FontName currentdict end definefont pop } def /tr { _ax _ay 3 2 roll } def /trj { _cx _cy _sp _ax _ay 6 5 roll } def /a0 { /Tx { dup currentpoint 3 2 roll tr _psf newpath moveto tr _ctm _pss } ddef /Tj { dup currentpoint 3 2 roll trj _pjsf newpath moveto trj _ctm _pjss } ddef } def /a1 { W B } def /e0 { /Tx { tr _psf } ddef /Tj { trj _pjsf } ddef } def /e1 { W F } def /i0 { /Tx { tr sp } ddef /Tj { trj jsp } ddef } def /i1 { W N } def /o0 { /Tx { tr sw rmoveto } ddef /Tj { trj swj rmoveto } ddef } def /r0 { /Tx { tr _ctm _pss } ddef /Tj { trj _ctm _pjss } ddef } def /r1 { W S } def /To { pop _ctm currentmatrix pop } def /TO { iTe _ctm setmatrix newpath } def /Tp { pop _tm astore pop _ctm setmatrix _tDict begin /W { } def /h { } def } def /TP { end iTm 0 0 moveto } def /Tr { _render 3 le { currentpoint newpath moveto } if dup 8 eq { pop 0 } { dup 9 eq { pop 1 } if } ifelse dup /_render exch ddef _renderStart exch get load exec } def /iTm { _ctm setmatrix _tm concat _shift aload pop _lineorientation 1 eq { exch } if translate _scale aload pop _lineorientation 1 eq _yokoorientation 1 eq or { exch } if scale } def /Tm { _tm astore pop iTm 0 0 moveto } def /Td { _mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto } def /iTe { _render -1 eq { } { _renderEnd _render get dup null ne { load exec } { pop } ifelse } ifelse /_render -1 ddef } def /Ta { pop } def /Tf { 1 index type /nametype eq { dup 0.75 mul 1 index 0.25 mul neg } if /_fontDescent exch ddef /_fontAscent exch ddef /_fontSize exch ddef /_fontRotateAdjust _fontAscent _fontDescent add 2 div neg ddef /_fontHeight _fontSize ddef findfont _fontSize scalefont setfont } def /Tl { pop neg 0 exch _leading astore pop } def /Tt { pop } def /TW { 3 npop } def /Tw { /_cx exch ddef } def /TC { 3 npop } def /Tc { /_ax exch ddef } def /Ts { 0 exch _shift astore pop currentpoint iTm moveto } def /Ti { 3 npop } def /Tz { count 1 eq { 100 } if 100 div exch 100 div exch _scale astore pop iTm } def /TA { pop } def /Tq { pop } def /Tg { pop } def /TG { pop } def /Tv { /_lineorientation exch ddef } def /TV { /_charorientation exch ddef } def /Ty { dup /_yokoorientation exch ddef 1 sub neg Tv } def /TY { pop } def /T~ { Tx } def /Th { pop pop pop pop pop } def /TX { pop } def /Tk { _fontSize mul 1000 div _lineorientation 0 eq { neg 0 } { 0 exch } ifelse rmoveto pop } def /TK { 2 npop } def /T* { _leading aload pop _lineorientation 0 ne { exch } if Td } def /T*- { _leading aload pop _lineorientation 0 ne { exch } if exch neg exch neg Td } def /T- { _ax neg 0 rmoveto _lineorientation 1 eq _charorientation 0 eq and { 1 TV _hyphen Tx 0 TV } { _hyphen Tx } ifelse } def /T+ { } def /TR { _ctm currentmatrix pop _tm astore pop iTm 0 0 moveto } def /TS { currentfont 3 1 roll /_Symbol_ findfont _fontSize scalefont setfont 0 eq { Tx } { Tj } ifelse setfont } def /Xb { pop pop } def /Tb /Xb load def /Xe { pop pop pop pop } def /Te /Xe load def /XB { } def /TB /XB load def currentdict readonly pop end setpacking % /X^ { currentfont 5 1 roll dup havefont { findfont _fontSize scalefont setfont } { pop exch } ifelse 2 index 0 eq { Tx } { Tj } ifelse pop pop setfont } def /T^ /X^ load def %%EndResource %%BeginResource: procset AGM_Gradient_Sep 1.0 0 %%Title: (AGM Gradient Procset) %%Version: 1.0 0 %%CreationDate: (4/26/96) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) userdict /defaultpacking currentpacking put true setpacking userdict /AGM_Gradient_Sep 5 dict dup begin put /AGM_Gradient_Sep_private 100 dict def /initialize{ AGM_Gradient_Sep begin AGM_Gradient_Sep_private begin _compositeJob{ initializeSinglePassSeps }{ initializeMultiPassSeps }ifelse initializeSeps AGM_Gradient_private begin /_fillSD newSpotDict def /_rampSD newSpotDict def /_nCustomColorSD nd end AGM_Gradient_Sep_private { dup xcheck 1 index type /arraytype eq and { bind }if pop pop }forall AGM_Gradient_Sep { dup xcheck 1 index type /arraytype eq and { bind }if pop pop }forall end currentdict readonly pop end }def /terminate{ currentdict AGM_Gradient_Sep eq{ end }if }def AGM_Gradient_Sep_private begin /initializeSeps{ /currentoverprint { _of } def _noImage not _level2PS not and{ /linealFill{ currentoverprint{ 0 0 1 1 rectfill }{ mySave 8 setImageParms _color{ _nCustomColorSD begin cyan magenta yellow black _spotColor{ spot1/tintImage spot1/tintValue get 1 exch sub makeByte8 put spot2/tintImage spot2/tintValue get 1 exch sub makeByte8 put }if end 4{ makeByte8 4 1 roll }repeat true 4 _nCustomColorSD ncolorimage }{ _nCustomColorSD/black get 1 exch sub makeByte8 _nCustomColorSD bwImage }ifelse myRestore }ifelse }def }if /_whiteBytes 1 makeByte8 pt /knockOut{ _noImage _level2PS or currentoverprint or{ gsave false setoverprint 1 setgray 0 0 1 1 rectfill grestore }{ 8 setImageParms _whiteBytes /_image load 5 execImage }ifelse }def /newSpotDict{ 11 dict dup begin /nSpots 2 def /spot1 7 dict def /spot2 7 dict def end }def /initSpotData { begin /name nd /tintImage nd /tintValue nd /spot_C nd /spot_M nd /spot_Y nd /spot_K nd end }def /initSpotDict{ begin /cyanInk nd /magentaInk nd /yellowInk nd /blackInk nd /cyan nd /magenta nd /yellow nd /black nd spot1 initSpotData spot2 initSpotData end }def /copySpotDict{ /_dst xp begin cyanInk magentaInk yellowInk blackInk cyan magenta yellow black spot1 spot2 end _dst begin /spot1 spot1 maxlength dict def /spot2 spot2 maxlength dict def spot2 copy pop spot1 copy pop /black xd /yellow xd /magenta xd /cyan xd /blackInk xd /yellowInk xd /magentaInk xd /cyanInk xd end }def /setCustomColor { 1 index /Black eq{ 6 1 roll 5 npop 1 exch sub setgray }{ 6 1 roll _ccAry1 astore exch dup null eq{ pop 0 }if setcustomcolor }ifelse }def /setCStop{ /_colorStyle exch pt _colorStyle 0 eq{ 0 0 0 4 -1 roll 1 exch sub _spotColor{ /_colorStyle 3 pt /Black 1 index 1 exch sub }if }if _colorStyle 2 eq{ 3 npop }if _rampSD _fillSD copySpotDict _colorStyle 4 eq{ pop 9 2 roll 3 npop 6 -2 roll } if _colorStyle 3 eq _colorStyle 4 eq or{ _fillSD begin /_spot1 spot1 pt /_spot2 spot2 pt end exch dup _spot1/name get eq{ _spot1 _spot2 }{ _spot2 _spot1 }ifelse begin begin /name xd 1 exch sub /tintValue xd 4{ tintValue mul 4 1 roll }repeat _spotColor not{ /tintValue null def }if end /tintValue 0 def end }if _fillSD nsetcustomcolor }def /renderCMYK{ spot1/name get null eq spot2/name get null eq and dup not{ pop spot1 spotConverted }if dup not{ pop spot2 spotConverted }if }def /currentInk{ true _inRipSep{ currentcolorspace 0 get dup /DeviceGray eq 1 index /DeviceCMYK eq or{ pop currentcmykcolor add add add 0 eq{ pop false }if }{ /Separation eq{ currentcolor 0 eq{ pop false }if }if }ifelse }{ currentgray 1 eq{ pop false }if }ifelse }def /currentInkN{ _nCustomColorSD begin /_spot1 spot1 pt /_spot2 spot2 pt renderCMYK end { currentInk }{ gsave _spot1 begin name null ne{ spot_C spot_M spot_Y spot_K name tintValue setCustomColor currentInk }{ false }ifelse end _spot2 begin name null ne{ spot_C spot_M spot_Y spot_K name tintValue setCustomColor currentInk }{ false }ifelse end grestore or } ifelse }def /fill_ /fill load def /fillOvp{ currentoverprint{ _inRipSep{ currentcolorspace 0 get dup /DeviceGray eq 1 index /DeviceCMYK eq or{ pop currentcmykcolor add add add 0 eq{ newpath }if }{ /Separation eq{ currentcolor 0 eq{ newpath }if }if }ifelse }{ currentgray 1 eq{ newpath }if }ifelse }if fill_ }def /fill{ _nCustomColorSD begin /_spot1 spot1 pt /_spot2 spot2 pt renderCMYK end { fillOvp }{ _spot1 begin gsave name null ne{ spot_C spot_M spot_Y spot_K name tintValue setCustomColor }{ 1 setgray }ifelse fillOvp grestore end _spot2 begin name null ne{ gsave true setoverprint spot_C spot_M spot_Y spot_K name tintValue setCustomColor fillOvp grestore }if end newpath }ifelse }def /expandSpot{ _spotColor{ /_len xp _rampSD begin spot1 begin tintImage null ne{ tintImage _len expandOne /tintImage xd }if end spot2 begin tintImage null ne{ tintImage _len expandOne /tintImage xd }if end end }{ pop }ifelse }def /rampImage{ currentoverprint{ rectImage }{ _enabledSmoothShade{ fillRamp }{ _color{ _rampSD begin /cyanInk _cyanData 0 ne def /magentaInk _magentaData 0 ne def /yellowInk _yellowData 0 ne def /blackInk _blackData 0 ne def end _nSamples setImageParms _nSamples expandSpot _cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor true 4 _rampSD ncolorimage }{ _rampSD begin /cyanInk false def /magentaInk false def /yellowInk false def /blackInk true def end _nSamples setImageParms _blackData _rampSD bwImage }ifelse }ifelse }ifelse }def /nsetcustomcolor where{ pop }{ /nsetcustomcolor { /_nCustomColorSD xp _nCustomColorSD begin 4 copy /black xd /yellow xd /magenta xd /cyan xd 4 copy 0 ne /blackInk xd 0 ne /yellowInk xd 0 ne /magentaInk xd 0 ne /cyanInk xd end setcmykcolor }def }ifelse /nsetcustomcolorend where{ pop }{ /nsetcustomcolorend { /_nCustomColorSD null pt }def }ifelse }def /initializeSinglePassSeps{ /_decodeNorm [0 1] pt /_decodeInvert [1 0] pt /spotConverted { begin name null eq{ false }{ tintValue null eq tintImage null eq and{ true }{ _inDistiller{ false }{ false currentpagedevice/SeparationColorNames get{name eq or}forall not }ifelse }ifelse }ifelse end }def /dictImage { 20 dict dup begin /Dict xd /Decode xd /DataSource xd /ImageMatrix xd /BitsPerComponent xd /Height xd /Width xd /ImageType 1 def Dict end /_image load 1 execImage }def /bwImage{ begin gsave currentoverprint{ blackInk{ [/Separation /Black /DeviceGray{}] setcolorspace _decodeInvert dictImage }{ 5 npop }ifelse }{ /DeviceGray setcolorspace _decodeNorm dictImage }ifelse grestore end }def /ncolorimage where{ pop }{ /ncolorimage{ begin renderCMYK{ cyanInk magentaInk and yellowInk and blackInk and not currentoverprint and{ pop pop gsave cyanInk{ 8 copy [/Separation /Cyan /DeviceGray{}] setcolorspace 3 npop _decodeNorm dictImage }if magentaInk{ 8 copy [/Separation /Magenta /DeviceGray{}] setcolorspace 4 -1 roll 3 npop _decodeNorm dictImage }if yellowInk{ 8 copy [/Separation /Yellow /DeviceGray{}] setcolorspace 4 -2 roll 3 npop _decodeNorm dictImage }if blackInk{ 4 -3 roll [/Separation /Black /DeviceGray{}] setcolorspace 3 npop _decodeNorm dictImage }{ 8 npop }ifelse grestore }{ /_colorimage load 10 execImage }ifelse }{ 6 npop gsave spot1 begin name null ne tintImage null ne and{ [/Separation name /DeviceGray{}] setcolorspace 4 copy tintImage name /Black eq{ _decodeNorm }{ _decodeInvert }ifelse dictImage }{ 1 setgray fill }ifelse end spot2 begin true setoverprint name null ne tintImage null ne and{ [/Separation name /DeviceGray{}] setcolorspace tintImage name /Black eq{ _decodeNorm }{ _decodeInvert }ifelse dictImage }{ 4 npop 1 setgray fill }ifelse end grestore }ifelse end }def }ifelse /getRampColorSpace{ /_renderCMYK _rampSD begin renderCMYK end pt _renderCMYK not{ _rampSD begin [/DeviceN [ spot1 begin name null ne tintImage null ne and{ name }if end spot2 begin name null ne tintImage null ne and{ name }if end ] _inDistiller { /DeviceCMYK [ spot1 begin name null ne tintImage null ne and{ spot_C spot_M spot_Y spot_K 1 }{ 0 0 0 0 0 }ifelse end spot2 begin name null ne tintImage null ne and{ spot_C spot_M spot_Y spot_K 2 }{ 0 0 0 0 0 }ifelse end 5 1 roll 6 -2 roll add dup 1 eq { pop 8 /index cvx 1 /exch cvx /sub cvx 9 1 /roll cvx }{ 2 eq { 8 /index cvx 1 /exch cvx /sub cvx 10 1 /roll cvx }if }ifelse 4 1 /roll cvx 5 -2 /roll cvx 8 /index cvx /mul cvx /exch cvx 9 /index cvx /mul cvx /add cvx 7 1 /roll cvx 3 1 /roll cvx 4 -2 /roll cvx 7 /index cvx /mul cvx /exch cvx 8 /index cvx /mul cvx /add cvx 6 1 /roll cvx 2 1 /roll cvx 3 -2 /roll cvx 6 /index cvx /mul cvx /exch cvx 7 /index cvx /mul cvx /add cvx 5 1 /roll cvx 5 /index cvx /mul cvx /exch cvx 6 /index cvx /mul cvx /add cvx 4 1 /roll cvx 6 -2 /roll cvx /pop cvx /pop cvx ] cvx bind }{ /DeviceCMYK {} }ifelse ] setcolorspace end /_nColorSpace currentcolorspace pt }if _nSamples 1 gt{ /_ndx 0 pt [blendColor] cvx exec }if _renderCMYK{ /_C0 [currentcolor] pt /_C0_Space currentcolorspace pt }{ /_C0 [ _nCustomColorSD begin spot1 begin name null ne{ tintValue }if end spot2 begin name null ne{ tintValue }if end end ] pt /_C0_Space _nColorSpace pt }ifelse _nSamples 1 gt{ /_ndx _nSamples 1 sub pt [blendColor] cvx exec }if _renderCMYK{ /_C1 [currentcolor] pt /_C1_Space currentcolorspace pt }{ /_C1 [ _nCustomColorSD begin spot1 begin name null ne{ tintValue }if end spot2 begin name null ne{ tintValue }if end end ] pt /_C1_Space _nColorSpace pt }ifelse /_rampColorSpace _C0_Space pt _spotColor{ nsetcustomcolorend }if }def }def /initializeMultiPassSeps{ /invertXfer{ [ { 1 exch sub }/exec load systemdict /currenttransfer get exec /exec load ] cvx systemdict /settransfer get exec }def /ccThrough{ gsave 1 setCustomColor currentcmykcolor grestore add add add 0 ne }def /spotConverted { begin _isCMYKSep not{ false }{ name null eq{ false }{ tintValue null eq tintImage null eq and{ true }{ spot_C spot_M spot_Y spot_K name ccThrough }ifelse }ifelse }ifelse end }def /spotChannel { _isCMYKSep{ pop false }{ /_spotDict xp _spotDict/name get null eq{ false }{ _spotDict/spot_C get _spotDict/spot_M get _spotDict/spot_Y get _spotDict/spot_K get _spotDict/name get ccThrough }ifelse }ifelse }def /getChannelData { _isCMYKSep dup{ pop renderCMYK }if { _blackPlate{ 4 1 roll 3 npop blackInk }{ _yellowPlate{ 4 2 roll 3 npop yellowInk }{ _magentaPlate{ 4 3 roll 3 npop magentaInk }{ 3 npop cyanInk }ifelse }ifelse }ifelse { true /nonZeroData }{ true /zeroData }ifelse }{ 4 npop spot1/name get null ne spot1 spotChannel and{ spot1/tintImage get dup null ne{ false /nonZeroData }{ pop false /noData }ifelse }{ spot2/name get null ne spot2 spotChannel and{ spot2/tintImage get dup null ne{ false /nonZeroData }{ pop false /noData }ifelse }{ false /noData }ifelse }ifelse }ifelse }def /renderChannelData { /_tmp xp _tmp /nonZeroData ne currentoverprint and{ pop _tmp /zeroData eq{pop}if 4 npop }{ _tmp /nonZeroData eq{ { invertXfer }if systemdict/image get 5 execImage }{ pop _tmp /zeroData eq{pop}if 4 npop knockOut }ifelse }ifelse }def /bwImage{ begin gsave dup dup dup getChannelData exch pop false exch renderChannelData grestore end }def /ncolorimage{ begin pop pop gsave spot2/name get null ne spot2 spotChannel and{ true setoverprint }if getChannelData renderChannelData grestore end }def /getRampColorSpace{ /_renderCMYK _rampSD begin renderCMYK end pt _nSamples 1 gt{ /_ndx 0 pt [blendColor] cvx exec }if _renderCMYK{ /_C0 [currentcolor] pt /_C0_Space currentcolorspace pt }{ /_C0 [ _nCustomColorSD begin 0 spot1 begin name null ne tintValue null ne and spot1 spotChannel and{ pop tintValue }if end spot2 begin name null ne tintValue null ne and spot2 spotChannel and{ pop tintValue }if end 1 exch sub end ] pt /_C0_Space /DeviceGray pt }ifelse _nSamples 1 gt{ /_ndx _nSamples 1 sub pt [blendColor] cvx exec }if _renderCMYK{ /_C1 [currentcolor] pt /_C1_Space currentcolorspace pt }{ /_C1 [ _nCustomColorSD begin 0 spot1 begin name null ne tintValue null ne and spot1 spotChannel and{ pop tintValue }if end spot2 begin name null ne tintValue null ne and spot2 spotChannel and{ pop tintValue }if end 1 exch sub end ] pt /_C1_Space /DeviceGray pt }ifelse /_rampColorSpace _C0_Space pt _spotColor{ nsetcustomcolorend }if }def }def end end defaultpacking setpacking %%EndResource %%BeginResource: procset AGM_Gradient 1.0 0 %%Title: (AGM Gradient Procset) %%Version: 1.0 0 %%CreationDate: (4/26/96) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) userdict /defaultpacking currentpacking put true setpacking userdict /AGM_Gradient 20 dict dup begin put /AGM_Gradient_private 201 dict def /initialize { AGM_Gradient begin AGM_Gradient_private begin initializeVars /bd systemdict/mark get def /ed _level2PS { (>>) }{ (counttomark 2 idiv dup dict begin {def} repeat pop currentdict end) } ifelse cvx def _level2PS{ initializeLev2 }{ initializeLev1 }ifelse queryDevice initializeRectFill initializeShading initializeOps _producingSeps{ AGM_Gradient_Sep/initialize get exec }{ initializeComposite }ifelse _illustrator{ /f{}def /F{}def /s{}def /S{}def /b{}def /B{}def }if /image where{ /image get /_image xd }if /colorimage where{ /colorimage get /_colorimage xd }if AGM_Gradient_private { dup xcheck 1 index type /arraytype eq and { bind }if pop pop }forall AGM_Gradient { dup xcheck 1 index type /arraytype eq and { bind }if pop pop }forall end currentdict readonly pop end }def /initializeAI { pop pop AGM_Gradient/AGM_Gradient_private get /_illustrator true put AGM_Gradient/initialize get exec AGM_Gradient begin }def /unload{ systemdict/languagelevel known{ systemdict/languagelevel get 2 ge{ userdict/AGM_Gradient_Sep 2 copy known{ undef }{ pop pop }ifelse userdict/AGM_Gradient 2 copy known{ undef }{ pop pop }ifelse }if }if }def /terminate{ currentdict AGM_Gradient eq{ end }if }def AGM_Gradient_private begin /initializeVars{ /_d255 256 array def 0 1 255{ _d255 exch dup 255 div put }bind for /_d255- 256 array def 0 1 255{ _d255- exch 1 _d255 2 index get sub put }bind for /_sSave nd /_dUserSpace matrix defaultmatrix def /_bUMatrix matrix def /_imageMatrix matrix def /_saveMatrix matrix def /_xm matrix def /_ccAry1 5 array def /_bbox 4 array pt /_level2PS systemdict/languagelevel known dup{ pop systemdict/languagelevel get 2 ge }if def /_level3PS _level2PS systemdict/shfill known and def currentdict /_illustrator known not{ /_illustrator false def }if }def /initializeOps { AGM_Gradient begin currentdict/Bc known not{ /Bc{ _renderFlag 2 eq _enabledSmoothShade or{ 6 npop }{ pushBSpace _rampIndex 0 eq{ pop pop setCStop }if linealFill popBSpace }ifelse }def }if currentdict/Bg known not{ /Bg{ 10 npop /_gradName xp /_renderFlag xp /_enabledSmoothShade false pt _renderFlag 2 ne{ _illustrator{ _of setoverprint }if /_enabledSmoothShade _level3PS{ _usingSmoothShade _producingSeps not currentoverprint not or and _noImage not and }{ false }ifelse pt _illustrator _eo and _renderFlag 3 eq or{ eoclip }{ clip }ifelse _gradNames _gradName 2 copy known{ get mark exch aload pop /_gradType xp 1 sub dup /_rampIndex xp /_maxRampIndex xp mark exch aload pop 0 0 }if pop pop getRampData }{ mark mark }ifelse }def }if currentdict/Bm known not{ /Bm{ _renderFlag 2 ne{ _gradType 0 eq{ linealRamp }{ radialGrad }ifelse }{ 6 npop }ifelse }def }if currentdict/Bh known not{ /Bh{ 2 npop /_yHi xp /_xHi xp /_radHilite _xHi 0 ne _yHi 0 ne or pt }def }if currentdict/Bn known not{ /Bn{ AGM_Gradient_private begin dict /_gradNames xp end }def }if currentdict/Bd known not{ /Bd{ AGM_Gradient begin AGM_Gradient_private begin /_nColorsBd xp /_gradType xp /_gradName xp }def }if currentdict/BD known not{ /BD{ currentdict/_gradNames known not{ /_gradNames 20 dict def }if ] _nColorsBd _gradType ] _gradName exch /_gradNames xput end end }def }if currentdict/Bb known not{ /Bb{ AGM_Gradient/AGM_Gradient_private get /_illustrator get not{ AGM_Gradient begin }if AGM_Gradient_private begin _producingSeps{ AGM_Gradient_Sep/AGM_Gradient_Sep_private get begin }if mySave }def }if currentdict/BB known not{ /BB{ /_tmp xp cleartomark cleartomark _tmp dup _renderFlag myRestore _producingSeps{ end }if _illustrator dup end not { end }if { 2 ne exch 0 gt and{ 2 eq{ s }{ S }ifelse }{ pop newpath }ifelse }{ pop newpath }ifelse }def }if currentdict/Xm known not{ /Xm{ _xm astore pop }def }if end }def /queryDevice{ /_inDistiller systemdict /currentdistillerparams known def /_inRipSep _level2PS{ currentpagedevice/Separations 2 copy known{ get }{ pop pop false }ifelse }{ false }ifelse _inDistiller or def /_noImage /lv1Fix where{ pop lv1Fix }{ false }ifelse def /_useShells where{ /_useShells get /_usingShells xp }{ /_usingShells false def }ifelse /_useSmoothShade where{ pop }{ /_useSmoothShade false def }ifelse /_forceToCMYK where{ pop }{ /_forceToCMYK false def }ifelse /_cyanPlate 1 0 0 0 testCMYKColorThrough def /_magentaPlate 0 1 0 0 testCMYKColorThrough def /_yellowPlate 0 0 1 0 testCMYKColorThrough def /_blackPlate 0 0 0 1 testCMYKColorThrough def /_compositeJob _cyanPlate _magentaPlate and _yellowPlate and _blackPlate and def /_isCMYKSep _cyanPlate _magentaPlate or _yellowPlate or _blackPlate or def /_compositeSpotDevice where{ pop }{ /_compositeSpotDevice _compositeJob not _inRipSep or{ 1 }{ 0 }ifelse def }ifelse /_producingSeps _compositeSpotDevice 0 ne def /_deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt def /_dpiThreshold where{ pop }{ /_dpiThreshold 600 def }ifelse /_screenFreqThreshold where{ pop }{ /_screenFreqThreshold 150 def }ifelse /_contoneDevice where{ pop }{ /_contoneDevice false def }ifelse /_subSampleOK _deviceDPI _dpiThreshold le currentScreenFreq _screenFreqThreshold le and _contoneDevice not and def }def /initializeRectFill{ /rectfill where dup{ exch pop not _producingSeps or }{ not }ifelse { /rectfill{ gsave newpath 4 2 roll moveto 1 index 0 rlineto 0 1 index rlineto 1 index neg 0 rlineto pop pop closepath fill grestore }def }if }def /initializeLev1{ /currentScreenFreq{ currentscreen pop pop }def /_byte 1 string def /colorimage where{ pop }{ /colorimage{ pop pop /_blackTmp xp /_yellowTmp xp /_magentaTmp xp /_cyanTmp xp /_cnt 0 pt [ _byte dup 0 _cyanTmp /_cnt cvx /get cvx _d255 /exch cvx /get cvx .3 /mul cvx _magentaTmp /_cnt cvx /get cvx _d255 /exch cvx /get cvx .59 /mul cvx _yellowTmp /_cnt cvx /get cvx _d255 /exch cvx /get cvx .11 /mul cvx _blackTmp /_cnt cvx /get cvx _d255 /exch cvx /get cvx /add cvx /add cvx /add cvx 1 /exch cvx /sub cvx /dup cvx 0 /lt cvx{ pop 0 }/if cvx /dup cvx 1 /gt cvx{ pop 1 }/if cvx 255 /mul cvx /cvi cvx 256 /mod cvx /dup cvx 0 /lt cvx{ pop 0 }/if cvx /put cvx /_cnt dup cvx 1 /add cvx /pt cvx ] cvx bind /_image load 5 execImage }def }ifelse }def /initializeLev2{ /level2ScreenFreq{ begin 60 HalftoneType 1 eq{ pop Frequency }if HalftoneType 2 eq{ pop GrayFrequency }if HalftoneType 5 eq{ pop Default level2ScreenFreq }if end }def /currentScreenFreq{ currenthalftone level2ScreenFreq }def }def /initializeShading{ _useSmoothShade _level3PS and{ /_usingSmoothShade true pt initializeLev3_Ops }{ /_usingSmoothShade false pt }ifelse }def /initializeLev3_Ops { /initShFill{ /_index _gradType 0 eq {0}{_maxRampIndex 1 sub} ifelse pt /_rampFuncsArray _maxRampIndex array pt /_boundsArray _maxRampIndex 1 sub array pt /_encodeArray _maxRampIndex 2 mul array pt /_beginCoord _rampPoint pt /_colorSpace null pt /_firstFill _rampIndex _maxRampIndex eq pt /_lastFill false pt }def /linealShFill{ popBSpace _xm aload pop pushBSpace /_size _index 1 add pt _size _maxRampIndex lt { /_rampFuncsArray _rampFuncsArray 0 _size getinterval pt /_boundsArray _boundsArray 0 _size 1 sub getinterval pt /_encodeArray _encodeArray 0 _size 2 mul getinterval pt }if bd /ShadingType 2 /ColorSpace _colorSpace _rgbInCMYK{ /Function [ _cData sampFunc _mData sampFunc _yData sampFunc _kData sampFunc ] }{ /Function bd /FunctionType 3 /Domain [0 1] /Functions _rampFuncsArray /Bounds _boundsArray /Encode _encodeArray ed }ifelse /Extend [_firstFill _lastFill] /Domain [0 1] /Coords [_beginCoord 0 _endCoord 0] ed shfill }def /radialShFill{ /_size _maxRampIndex _index sub pt _size _maxRampIndex lt { /_rampFuncsArray _rampFuncsArray _index _size getinterval pt /_boundsArray _boundsArray _index _size 1 sub getinterval pt /_encodeArray _encodeArray _index 2 mul _size 2 mul getinterval pt }if /_rampLen _beginCoord _endCoord sub pt bd /ShadingType 3 /ColorSpace _colorSpace _rgbInCMYK{ /Function [ _cData sampFunc _mData sampFunc _yData sampFunc _kData sampFunc ] }{ /Function bd /FunctionType 3 /Domain [0 1] /Functions _rampFuncsArray /Bounds _boundsArray /Encode _encodeArray ed }ifelse /Extend [_lastFill _firstFill] /Domain [0 1] /Coords [_xHi _rampLen mul _yHi _rampLen mul _endCoord 0 0 _beginCoord] ed shfill _radHilite{ _xHi _rampLen mul _yHi _rampLen mul translate }if }def % /sampFunc{ /_tmp exch pt bd _tmp length 1 eq { _tmp 0 get /_tmp 2 string pt dup _tmp 0 3 -1 roll put _tmp 1 3 -1 roll put }if /FunctionType 0 /Order 1 /Size [_tmp length] /Domain [0 1] /BitsPerSample 8 /DataSource _tmp /Range [0 1] ed }def /fillRamp{ /_invert _midPoint 0.5 lt pt _rampIndex _maxRampIndex eq { initShFill }if getRampColorSpace _colorSpace null eq{ /_colorSpace _rampColorSpace pt }{ _colorSpace _rampColorSpace ne _rgbInCMYK or{ /_index _index 1 _gradType 0 eq{ sub pt linealShFill }{ add pt radialShFill }ifelse initShFill /_colorSpace _rampColorSpace pt } if }ifelse /_endCoord _endPoint pt /_rgbInCMYK false pt _producingSeps _forceToCMYK or _rgbRamp and { _spotColor{ _renderCMYK }{ _isCMYKSep }ifelse }{ false }ifelse { _compositeJob{ /_rgbInCMYK true pt _cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor dup length string copy /_kData exch pt dup length string copy /_yData exch pt dup length string copy /_mData exch pt dup length string copy /_cData exch pt }{ _rampFuncsArray _index _cyanPlate{_cyanData}if _magentaPlate{_magentaData}if _yellowPlate{_yellowData}if _blackPlate{_blackData}if _nSamples expandOne sampFunc dup begin /Decode [1 0] def end put /_invert false pt }ifelse }{ _rampFuncsArray _index bd /FunctionType 2 /Domain [0 1] /N 0.5 log _invert{1 _midPoint sub}{_midPoint}ifelse log div _gradType 0 eq{ _invert{/C1}{/C0}ifelse _C0 _invert{/C0}{/C1}ifelse _C1 }{ _invert{/C0}{/C1}ifelse _C1 _invert{/C1}{/C0}ifelse _C0 }ifelse ed put }ifelse _rampIndex 1 ne{ _boundsArray _index _gradType 1 eq{1 sub}if _endCoord put } if 0 1 _invert {exch}if _encodeArray _index 2 mul 1 add 3 -1 roll put _encodeArray _index 2 mul 3 -1 roll put _rampIndex 1 eq { /_lastFill true pt _gradType 0 eq{ linealShFill }{ radialShFill }ifelse }if /_index _index 1 _gradType 0 eq{ add pt }{ sub pt }ifelse }def }def /initializeComposite{ /bwImage{ pop /_image load 5 execImage }def /rampImage{ _enabledSmoothShade{ fillRamp }{ _color{ _nSamples setImageParms _rgbRamp _forceToCMYK not and{ _redData _greenData _blueData _nSamples 3 expandColor true 3 null ncolorimage }{ _cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor true 4 null ncolorimage }ifelse }{ _nSamples setImageParms _blackData null bwImage }ifelse }ifelse }def /setCStop{ /_colorStyle exch pt _colorStyle 0 eq{ 1 exch sub 0 0 0 4 -1 roll }if _colorStyle 2 eq{ _forceToCMYK{ 3 npop setcmykcolor }{ setrgbcolor 4 npop }ifelse }if _colorStyle 3 eq{ 1 exch sub /_tmp xp pop 4{ _tmp mul 4 1 roll }repeat }if _colorStyle 4 eq{ _forceToCMYK{ 6 npop setcmykcolor }{ 3 -1 roll pop pop 1 exch sub /_tmp xp 3{ 1 exch sub _tmp mul 1 exch sub 3 1 roll }repeat setrgbcolor 4 npop }ifelse }if _colorStyle 2 ne _colorStyle 4 ne and{ null nsetcustomcolor }if }def /nsetcustomcolor { pop setcmykcolor }def /nsetcustomcolorend { }def /ncolorimage{ pop /_colorimage load 10 execImage }def _noImage not _level2PS not and{ /linealFill{ 8 setImageParms _color{ currentcmykcolor 4{ makeByte8 4 1 roll }repeat true 4 null ncolorimage }{ currentgray makeByte8 null bwImage }ifelse }def }if /getRampColorSpace{ _nSamples 1 gt{ /_ndx 0 pt [blendColor] cvx exec }if /_C0 [currentcolor] pt /_C0_Space currentcolorspace pt _nSamples 1 gt{ /_ndx _nSamples 1 sub pt [blendColor] cvx exec }if /_C1 [currentcolor] pt /_C1_Space currentcolorspace pt /_rampColorSpace _C0_Space pt _spotColor{ nsetcustomcolorend }if }def }def /npop{ {pop}repeat }def /xd{ exch def }def /nd{ null def }def /pt{ AGM_Gradient_private 3 1 roll put }def /xp{ exch pt }def /xput{ dup load dup length exch maxlength eq{ dup dup load dup length 2 mul dict copy def }if load begin def end }def /mySave{ save /_sSave xp }def /myRestore{ _sSave type /savetype eq{ _sSave restore }if }def /gMark{ counttomark 2 add -1 roll }def /execImage{ /_tmp xp { exec }stopped{ $error /errorname get /undefinedresult ne{ stop }{ _tmp npop }ifelse }if }def /pushBSpace{ newpath gsave _bUMatrix astore concat }def /popBSpace{ grestore }def /makeByte8{ /_tmp 0 pt 255 mul cvi 8 string 8{ dup _tmp 3 index put /_tmp _tmp 1 add pt }repeat exch pop }def /setImageParms{ 1 8 2 index 0 0 1 0 0 _imageMatrix astore }def /linealFill{ 0 0 1 1 rectfill }def /testCMYKColorThrough{ gsave setcmykcolor currentcmykcolor grestore add add add 0 ne }def /expandOne { /_tmp xp dup type /stringtype ne{ _tmp string exch dup 0 ne{ 255 mul cvi 0 1 _tmp 1 sub{ 3 copy exch put pop }for }if pop }if }def /expandColor{ /_channels xp /_len xp _channels{ _len expandOne _channels 1 roll }repeat }def /blendColor{ _color{ _rgbRamp _producingSeps not and _forceToCMYK not and{ _redData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _greenData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _blueData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if /setrgbcolor cvx }{ _cyanData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _magentaData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _yellowData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _blackData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _spotColor{ _rampSD begin /_rampSD cvx /begin cvx spot1 begin tintImage dup type /stringtype eq{ /_ndx cvx /get cvx _d255- /exch cvx /get cvx }{ dup null ne{ name type /nametype ne{ 1 exch sub }if }if }ifelse end /spot1 cvx /tintValue 3 -1 /roll cvx /put cvx spot2 begin tintImage dup type /stringtype eq{ /_ndx cvx /get cvx _d255- /exch cvx /get cvx }{ dup null ne{ name type /nametype ne{ 1 exch sub }if }if }ifelse end /spot2 cvx /tintValue 3 -1 /roll cvx /put cvx /end cvx end /_rampSD cvx /nsetcustomcolor cvx }{ /setcmykcolor cvx }ifelse }ifelse }{ _blackData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _enabledSmoothShade{ 1 /exch cvx /sub cvx 0 0 0 4 -1 /roll cvx /setcmykcolor cvx }{ /setgray cvx }ifelse }ifelse }def /useRectImage{ _subSampleOK _enabledSmoothShade not and{ { mark 0 1 dtransform atan cvi 90 mod 0 eq 1 0 dtransform atan cvi 90 mod 0 eq } stopped { cleartomark false } { and exch pop } ifelse }{ false }ifelse }def /linealImage{ _noImage{ rectImage }{ _producingSeps{ AGM_Gradient_Sep/AGM_Gradient_Sep_private get /rampImage get exec }{ useRectImage{ rectImage }{ rampImage }ifelse }ifelse }ifelse }def /linealRamp{ pushBSpace _ramp{ linealImage }{ linealFill }ifelse popBSpace /_rampIndex _rampIndex 1 sub pt _rampIndex 0 gt{ getRampData }if }def /radialGrad{ /_usingShells currentoverprint _producingSeps and _usingShells or pt /_firstShell true pt _enabledSmoothShade not{ currentoverprint _producingSeps and{ newpath clippath pathbbox 1 add 4 1 roll 1 add 4 1 roll 1 sub 4 1 roll 1 sub 4 1 roll _bbox astore pop newpath _bbox 0 get _bbox 1 get moveto _bbox 2 get _bbox 1 get lineto _bbox 2 get _bbox 3 get lineto _bbox 0 get _bbox 3 get lineto closepath 6 copy gsave _bUMatrix astore concat 1 0 moveto 0 0 1 0 360 arc closepath eoclip fill popBSpace }{ fill }ifelse }if pushBSpace _radHilite{ _xHi _yHi _bUMatrix idtransform /_yHi xp /_xHi xp _rampPoint 1 lt{ 1 _rampPoint sub dup _xHi mul exch _yHi mul translate }if }if _rampIndex{ radialRamp /_rampIndex _rampIndex 1 sub pt _rampIndex 0 gt{ getRampData }if }repeat popBSpace }def /getNSamples{ 0 exch { dup type /stringtype eq{ length exch pop exit }if pop }forall dup 0 eq{ pop 1 }if }def /getRampData{ /_rampType gMark pt /_color _rampType 0 gt pt /_ccRGB _rampType 5 eq _rampType 6 eq or pt /_rgbRamp _rampType 4 eq _ccRGB or pt /_ccProcess _rampType 2 eq _rampType 3 eq or pt _producingSeps{ _rampSD initSpotDict /_spotColor _ccProcess _ccRGB or pt }{ /_spotColor false pt }ifelse /_ramp true pt 100 div /_rampPoint xp 100 div /_midPoint xp dup /_colorStyle xp _colorStyle 0 eq{ 2 }{ _colorStyle 1 eq{ 5 }{ _colorStyle 2 eq{ 8 }{ _colorStyle 3 eq{ _producingSeps{ _rampSD /spot1 get begin /name 3 index def /spot_K 4 index def /spot_Y 5 index def /spot_M 6 index def /spot_C 7 index def end }if 7 }{ _producingSeps{ _rampSD/spot1 get begin /name 4 index def /spot_K 8 index def /spot_Y 9 index def /spot_M 10 index def /spot_C 11 index def end }if 11 } ifelse }ifelse }ifelse }ifelse /_tmp xp _tmp index 100 div /_endPoint xp _gradType 1 eq{ _tmp 1 add index 100 div /_midPoint xp }if _producingSeps{ _tmp 2 add index /_nextColorStyle xp _nextColorStyle 3 eq{ /_tmp _tmp 4 add pt _tmp index dup _rampSD/spot1 get /name get ne{ _rampSD /spot2 get begin /name xd /spot_K _tmp 2 add index def /spot_Y _tmp 3 add index def /spot_M _tmp 4 add index def /spot_C _tmp 5 add index def end }{ pop }ifelse }if _nextColorStyle 4 eq{ /_tmp _tmp 5 add pt _tmp index dup _rampSD/spot1 get /name get ne{ _rampSD /spot2 get begin /name xd /spot_K _tmp 5 add index def /spot_Y _tmp 6 add index def /spot_M _tmp 7 add index def /spot_C _tmp 8 add index def end }{ pop }ifelse }if }if _rampType 3 eq _rampType 6 eq or{ /_tint2Data gMark pt }if _ccProcess _ccRGB or{ /_tint1Data gMark pt }if _rgbRamp{ /_blueData gMark pt /_greenData gMark pt /_redData gMark pt }if _producingSeps{ _ccProcess _ccRGB or{ _rampType 3 eq _rampType 6 eq or{ _rampSD /spot2 get begin /tintImage _gradType 0 eq{ _tint2Data }{ _tint1Data }ifelse def name null eq{ /name /Black def }if end }if _rampSD /spot1 get begin /tintImage _gradType 0 eq _rampType 2 eq or _rampType 5 eq or{ _tint1Data }{ _tint2Data }ifelse def _rampType 2 eq _rampType 5 eq or{ name null eq{ /name _rampSD/spot2 get /name get def /spot_C _rampSD/spot2 get /spot_C get def /spot_M _rampSD/spot2 get /spot_M get def /spot_Y _rampSD/spot2 get /spot_Y get def /spot_K _rampSD/spot2 get /spot_K get def _rampSD/spot2 get /name null put }if }{ name null eq{ /name /Black def }if }ifelse end }if }if /_blackData gMark pt _rampType 0 gt{ counttomark 4 add -3 roll /_yellowData xp /_magentaData xp /_cyanData xp }if _ramp{ /_nSamples [ _rampType 0 eq {_blackData}if _rampType 1 eq {_cyanData _magentaData _yellowData _blackData}if _rampType 2 eq {_cyanData _magentaData _yellowData _blackData _tint1Data}if _rampType 3 eq {_cyanData _magentaData _yellowData _blackData _tint1Data _tint2Data}if _rampType 4 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData}if _rampType 5 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData _tint1Data}if _rampType 6 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData _tint1Data _tint2Data}if ] getNSamples pt _enabledSmoothShade not {/_ramp _nSamples 1 gt pt} if } if setCStop }def /rectImage{ gsave /_sInc 1 pt /_bInc 1 _nSamples div pt /_nSubSamples _nSamples pt /_optimize false pt _subSampleOK{ /_uRampLen 1 0 dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt pt /_pChange _uRampLen 0 eq{0}{_nSamples _uRampLen div}ifelse pt _pChange .5 gt dup /_optimize xp{ /_nSubSamples _uRampLen 2 div round cvi dup 1 le{pop 2}if pt /_bInc 1 _nSubSamples div pt /_sInc _nSamples 1 sub _nSubSamples 1 sub div pt }if }if 0 _nSubSamples [ /dup cvx _optimize { /round cvx /cvi cvx } if /_ndx /exch cvx /pt cvx blendColor 0 0 _bInc 1 /rectfill cvx _bInc 0 /translate cvx _sInc /add cvx ] cvx bind repeat pop _spotColor{ nsetcustomcolorend }if grestore }def /radialInit{ /_nRadSamples _nSamples dup 0 eq{pop 1}if pt /_sInc -1 pt /_rampLen _rampPoint _endPoint sub pt /_bInc _rampLen _nSamples div neg pt /_optimize false pt _subSampleOK{ /_uRampLen _rampLen 0 dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt 0 _rampLen dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt 2 copy lt{ exch }if pop pt /_pChange _uRampLen 0 eq{ 0 }{ _nSamples _uRampLen div }ifelse pt _pChange .5 gt dup /_optimize xp{ /_nRadSamples _uRampLen 2 div round cvi dup 1 le{pop 2}if pt /_bInc _rampLen _nRadSamples div neg pt /_sInc _nSamples 1 sub _nRadSamples 1 sub div neg pt }if }if _radHilite{ /_xBCInc _xHi _rampLen mul _nRadSamples div pt /_yBCInc _yHi _rampLen mul _nRadSamples div pt }if }def /radialRamp{ _enabledSmoothShade{ fillRamp }{ /_saveMatrix _saveMatrix currentmatrix def radialInit % % true _producingSeps _rgbRamp not and{ _nSamples 1 gt{ pop /_ndx 0 pt [blendColor] cvx exec currentInkN /_ndx _nSamples 1 sub pt [blendColor] cvx exec currentInkN or }if }if { _rampPoint _nSamples 1 sub _nRadSamples [ /dup cvx _optimize{ /round cvx /cvi cvx }if /_ndx /exch cvx /pt cvx _usingShells{ /_firstShell cvx{ /_firstShell false pt }{ 0 0 3 index 360 0 arcn fill }/ifelse cvx }if blendColor _usingShells{ 0 0 3 /index cvx 0 360 /arc cvx }{ 0 0 3 /index cvx 0 360 /arc cvx /fill cvx }ifelse /exch cvx _bInc /add cvx /exch cvx _sInc /add cvx _radHilite{ _xBCInc _yBCInc /translate cvx }if ] cvx bind repeat pop pop }{ _usingShells{ 0 0 _rampPoint 360 0 arcn fill }if }ifelse _saveMatrix setmatrix _radHilite{ _xHi _rampLen mul _yHi _rampLen mul translate }if _usingShells _rampIndex 1 eq and{ fill }if _spotColor{ nsetcustomcolorend }if }ifelse }def end end defaultpacking setpacking %%EndResource %%BeginProcSet: Adobe_ColorImage_AI6 1.2 0 userdict /Adobe_ColorImage_AI6 known not { userdict /Adobe_ColorImage_AI6 50 dict put } if userdict /Adobe_ColorImage_AI6 get begin /initialize { Adobe_ColorImage_AI6 begin Adobe_ColorImage_AI6 { dup type /arraytype eq { dup xcheck { bind } if } if pop pop } forall } def /terminate { end } def currentdict /Adobe_ColorImage_AI6_Vars known not { /Adobe_ColorImage_AI6_Vars 40 dict def } if Adobe_ColorImage_AI6_Vars begin /plateindex -1 def /_newproc null def /_proc1 null def /_proc2 null def /channelcount 0 def /sourcecount 0 def /sourcearray 4 array def /_ptispace null def /_ptiname null def /_pti0 0 def /_pti1 0 def /_ptiproc null def /_ptiscale 0 def /_pticomps 0 def /_ptibuf 0 string def /_gtigray 0 def /_cticmyk null def /_rtirgb null def /XIEnable true def /XIType 0 def /XIEncoding 0 def /XICompression 0 def /XIChannelCount 0 def /XIBitsPerPixel 0 def /XIImageHeight 0 def /XIImageWidth 0 def /XIImageMatrix null def /XIRowBytes 0 def /XIFile null def /XIBuffer1 null def /XIBuffer2 null def /XIDataProc null def /XIVersion 6 def /XIColorSpace /DeviceGray def /XIColorValues 0 def end currentdict /_colorimage known not { /colorimage where { /colorimage get /_colorimage exch def }{ /_colorimage null def } ifelse } if /_image systemdict /image get def /_currenttransfer systemdict /currenttransfer get def /FourEqual { 4 index ne { pop pop pop false }{ 4 index ne { pop pop false }{ 4 index ne { pop false }{ 4 index eq } ifelse } ifelse } ifelse } def /TestPlateIndex { Adobe_ColorImage_AI6_Vars begin /plateindex -1 def /setcmykcolor where { pop gsave 1 0 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub 0 1 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub 0 0 1 0 setcmykcolor systemdict /currentgray get exec 1 exch sub 0 0 0 1 setcmykcolor systemdict /currentgray get exec 1 exch sub grestore 1 0 0 0 FourEqual { /plateindex 0 def }{ 0 1 0 0 FourEqual { /plateindex 1 def }{ 0 0 1 0 FourEqual { /plateindex 2 def }{ 0 0 0 1 FourEqual { /plateindex 3 def }{ 0 0 0 0 FourEqual { /plateindex 5 def } if } ifelse } ifelse } ifelse } ifelse pop pop pop pop } if plateindex end } def /concatprocs { /packedarray where { pop dup type /packedarraytype eq 2 index type /packedarraytype eq or }{ false } ifelse { /_proc2 exch cvlit def /_proc1 exch cvlit def _proc1 aload pop _proc2 aload pop _proc1 length _proc2 length add packedarray cvx }{ /_proc2 exch cvlit def /_proc1 exch cvlit def /_newproc _proc1 length _proc2 length add array def _newproc 0 _proc1 putinterval _newproc _proc1 length _proc2 putinterval _newproc cvx } ifelse } def /clrspaceissepn { type /arraytype eq } def /clrspacegetname { dup clrspaceissepn {dup length 2 sub get}{pop ()} ifelse } def /clrspacegetalt { aload pop pop pop colormake } def /clrspacegetcomps { dup /DeviceGray eq { pop 1 }{ dup /DeviceRGB eq { pop 3 }{ /DeviceCMYK eq { 4 }{ 1 } ifelse } ifelse } ifelse } def /clrspacemarksplate { dup /DeviceGray eq { pop plateindex 3 eq }{ dup /DeviceRGB eq { pop plateindex 5 ne }{ dup /DeviceCMYK eq { pop plateindex 5 ne }{ /findcmykcustomcolor where { pop dup length 2 sub get 0.1 0.1 0.1 0.1 5 -1 roll findcmykcustomcolor 1 setcustomcolor systemdict /currentgray get exec 1 ne }{ pop plateindex 5 ne } ifelse } ifelse } ifelse } ifelse } def /colormake { dup clrspacegetcomps exch 1 index 2 add 1 roll dup 1 eq {pop}{array astore} ifelse exch } def /colorexpand { dup clrspacegetname exch dup clrspaceissepn { clrspacegetalt exch 4 1 roll }{ 1 3 1 roll } ifelse } def /colortint { dup /DeviceGray eq { 3 1 roll 1 exch sub mul 1 exch sub exch }{ dup /DeviceRGB eq { 3 1 roll {1 exch sub 1 index mul 1 exch sub exch} forall pop 3 array astore exch }{ dup /DeviceCMYK eq { 3 1 roll {1 index mul exch} forall pop 4 array astore exch }{ 3 1 roll mul exch } ifelse } ifelse } ifelse } def /colortocmyk { dup /DeviceGray eq { pop 1 exch sub 0 0 0 4 -1 roll 4 array astore }{ dup /DeviceRGB eq { pop aload pop _rgbtocmyk 4 array astore }{ dup /DeviceCMYK eq { pop }{ clrspacegetalt colortint colortocmyk } ifelse } ifelse } ifelse } def /makeimagedict { 7 dict begin /ImageType 1 def /Decode exch def /DataSource exch def /ImageMatrix exch def /BitsPerComponent exch def /Height exch def /Width exch def currentdict end } def /stringinvert { 0 1 2 index length 1 sub { dup 2 index exch get 255 exch sub 2 index 3 1 roll put } for } def /stringknockout { 0 1 2 index length 1 sub { 255 2 index 3 1 roll put } for } def /stringapply { 0 1 4 index length 1 sub { dup 4 index exch get 3 index 3 1 roll 3 index exec } for pop exch pop } def /WalkRGBString { 0 3 index dup length 1 sub 0 3 3 -1 roll { 3 getinterval {} forall 5 index exec 3 index } for 5 {pop} repeat } def /WalkCMYKString { 0 3 index dup length 1 sub 0 4 3 -1 roll { 4 getinterval {} forall 6 index exec 3 index } for 5 { pop } repeat } def /StuffRGBIntoGrayString { .11 mul exch .59 mul add exch .3 mul add cvi 3 copy put pop 1 add } def /StuffCMYKIntoGrayString { exch .11 mul add exch .59 mul add exch .3 mul add dup 255 gt { pop 255 } if 255 exch sub cvi 3 copy put pop 1 add } def /RGBToGrayImageProc { Adobe_ColorImage_AI6_Vars begin sourcearray 0 get exec dup length 3 idiv string dup 3 1 roll /StuffRGBIntoGrayString load exch WalkRGBString end } def /CMYKToGrayImageProc { Adobe_ColorImage_AI6_Vars begin sourcearray 0 get exec dup length 4 idiv string dup 3 1 roll /StuffCMYKIntoGrayString load exch WalkCMYKString end } def /SeparateCMYKImageProc { Adobe_ColorImage_AI6_Vars begin sourcecount 0 ne { sourcearray plateindex get exec }{ sourcearray 0 get exec dup length 4 idiv string 0 2 index plateindex 4 2 index length 1 sub { get 255 exch sub 3 copy put pop 1 add 2 index } for pop pop exch pop } ifelse end } def /ColorImageCompositeEmulator { pop true eq { Adobe_ColorImage_AI6_Vars /sourcecount get 5 add { pop } repeat }{ Adobe_ColorImage_AI6_Vars /channelcount get 1 ne { Adobe_ColorImage_AI6_Vars begin sourcearray 0 3 -1 roll put channelcount 3 eq {/RGBToGrayImageProc}{/CMYKToGrayImageProc} ifelse load end } if image } ifelse } def /colorimage { Adobe_ColorImage_AI6_Vars begin /channelcount 1 index def /sourcecount 2 index 1 eq { channelcount 1 sub } { 0 } ifelse def 4 sourcecount add index end dup 8 eq exch 1 eq or not { /_colorimage load null ne { _colorimage }{ Adobe_ColorImage_AI6_Vars /sourcecount get 7 add { pop } repeat } ifelse }{ dup 3 eq TestPlateIndex dup -1 eq exch 5 eq or or { /_colorimage load null eq { ColorImageCompositeEmulator }{ dup 1 eq { pop pop image }{ Adobe_ColorImage_AI6_Vars /plateindex get 5 eq { gsave 0 _currenttransfer exec 1 _currenttransfer exec eq { 0 _currenttransfer exec 0.5 lt } { 0 _currenttransfer exec 1 _currenttransfer exec gt } ifelse { { pop 0 } } { { pop 1 } } ifelse systemdict /settransfer get exec } if _colorimage Adobe_ColorImage_AI6_Vars /plateindex get 5 eq { grestore } if } ifelse } ifelse }{ dup 1 eq { pop pop image }{ pop pop Adobe_ColorImage_AI6_Vars begin sourcecount -1 0 { exch sourcearray 3 1 roll put } for /SeparateCMYKImageProc load end systemdict /image get exec } ifelse } ifelse } ifelse } def /proctintimage { /_ptispace exch store /_ptiname exch store /_pti1 exch store /_pti0 exch store /_ptiproc exch store /_pticomps _ptispace clrspacegetcomps store /_ptiscale _pti1 _pti0 sub store level2? { _ptiname length 0 gt version cvr 2012 ge and { [/Separation _ptiname _ptispace {_ptiproc}] setcolorspace [_pti0 _pti1] makeimagedict _image }{ [/Indexed _ptispace 255 {255 div _ptiscale mul _pti0 add _ptiproc}] setcolorspace [0 255] makeimagedict _image } ifelse }{ _pticomps 1 eq { { dup { 255 div _ptiscale mul _pti0 add _ptiproc 255 mul cvi put } stringapply } concatprocs _image }{ { dup length _pticomps mul dup _ptibuf length ne {/_ptibuf exch string store}{pop} ifelse _ptibuf { exch _pticomps mul exch 255 div _ptiscale mul _pti0 add _ptiproc _pticomps 2 add -2 roll _pticomps 1 sub -1 0 { 1 index add 2 index exch 5 -1 roll 255 mul cvi put } for pop pop } stringapply } concatprocs false _pticomps /_colorimage load null eq {7 {pop} repeat}{_colorimage} ifelse } ifelse } ifelse } def /graytintimage { /_gtigray 5 -1 roll store {1 _gtigray sub mul 1 exch sub} 4 1 roll /DeviceGray proctintimage } def /cmyktintimage { /_cticmyk 5 -1 roll store {_cticmyk {1 index mul exch} forall pop} 4 1 roll /DeviceCMYK proctintimage } def /rgbtintimage { /_rtirgb 5 -1 roll store {_rtirgb {1 exch sub 1 index mul 1 exch sub exch} forall pop} 4 1 roll /DeviceRGB proctintimage } def /tintimage { TestPlateIndex -1 eq { colorexpand 3 -1 roll 5 -1 roll {0}{0 exch} ifelse 4 2 roll dup /DeviceGray eq { pop graytintimage }{ dup /DeviceRGB eq { pop rgbtintimage }{ pop cmyktintimage } ifelse } ifelse }{ dup clrspacemarksplate { plateindex 5 lt { colortocmyk plateindex get 1 exch sub exch {1 0}{0 1} ifelse () graytintimage }{ pop exch {0}{0 exch} ifelse 0 3 1 roll () graytintimage } ifelse }{ pop pop pop {pop 1} 0 1 () /DeviceGray proctintimage } ifelse } ifelse } def /XINullImage { } def /XIImageMask { XIImageWidth XIImageHeight false [XIImageWidth 0 0 XIImageHeight neg 0 0] /XIDataProc load imagemask } def /XIImageTint { 0 setgray XIImageWidth XIImageHeight XIBitsPerPixel [XIImageWidth 0 0 XIImageHeight neg 0 0] /XIDataProc load XIType 3 eq XIColorValues XIColorSpace tintimage } def /XIImage { 0 setgray XIImageWidth XIImageHeight XIBitsPerPixel [XIImageWidth 0 0 XIImageHeight neg 0 0] /XIDataProc load XIChannelCount 1 eq {image}{false XIChannelCount colorimage} ifelse } def /XG { pop pop } def /XF { 13 {pop} repeat } def /Xh { Adobe_ColorImage_AI6_Vars begin gsave /XIType exch def /XIImageHeight exch def /XIImageWidth exch def /XIImageMatrix exch def 0 0 moveto XIImageMatrix concat XIImageWidth XIImageHeight scale XIType 1 eq { /_lp /null ddef _fc /_lp /imagemask ddef } if /XIVersion 7 def end } def /XH { Adobe_ColorImage_AI6_Vars begin /XIVersion 6 def grestore end } def /XIEnable { Adobe_ColorImage_AI6_Vars /XIEnable 3 -1 roll put } def /XC { Adobe_ColorImage_AI6_Vars begin colormake /XIColorSpace exch def /XIColorValues exch def end } def /XI { Adobe_ColorImage_AI6_Vars begin gsave /XIType exch def cvi dup 256 idiv /XICompression exch store 256 mod /XIEncoding exch store pop pop /XIChannelCount exch def /XIBitsPerPixel exch def /XIImageHeight exch def /XIImageWidth exch def pop pop pop pop /XIImageMatrix exch def XIBitsPerPixel 1 eq { XIImageWidth 8 div ceiling cvi }{ XIImageWidth XIChannelCount mul } ifelse /XIRowBytes exch def XIEncoding 0 ne XIVersion 6 le and { currentfile 128 string readline pop pop } if XICompression 0 eq { /XIBuffer1 XIRowBytes string def XIEncoding 0 eq { {currentfile XIBuffer1 readhexstring pop} }{ {currentfile XIBuffer1 readstring pop} } ifelse }{ /XIBuffer1 256 string def /XIBuffer2 XIRowBytes string def {currentfile XIBuffer1 readline pop (%) anchorsearch {pop} if} /ASCIIHexDecode filter /DCTDecode filter /XIFile exch def {XIFile XIBuffer2 readstring pop} } ifelse /XIDataProc exch def XIVersion 6 le { 0 0 moveto XIImageMatrix concat XIImageWidth XIImageHeight scale XIType 1 eq { /_lp /null ddef _fc /_lp /imagemask ddef } if } if XIEnable { XIType 1 eq { XIImageMask }{ XIType 2 eq XIType 3 eq or { XIImageTint }{ XIImage } ifelse } ifelse }{ XINullImage } ifelse grestore end } def end %%EndProcSet %%BeginResource: procset Adobe_Illustrator_AI5 1.2 0 %%Title: (Adobe Illustrator (R) Version 7.0 Full Prolog) %%Version: 1.2 0 %%CreationDate: (3/7/1994) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_Illustrator_AI5_vars 107 dict dup begin put /_eo false def /_lp /none def /_pf { } def /_ps { } def /_psf { } def /_pss { } def /_pjsf { } def /_pjss { } def /_pola 0 def /_doClip 0 def /cf currentflat def /_lineorientation 0 def /_charorientation 0 def /_yokoorientation 0 def /_tm matrix def /_renderStart [ /e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0 ] def /_renderEnd [ null null null null /i1 /i1 /i1 /i1 ] def /_render -1 def /_shift [0 0] def /_ax 0 def /_ay 0 def /_cx 0 def /_cy 0 def /_leading [ 0 0 ] def /_ctm matrix def /_mtx matrix def /_sp 16#020 def /_hyphen (-) def /_fontSize 0 def /_fontAscent 0 def /_fontDescent 0 def /_fontHeight 0 def /_fontRotateAdjust 0 def /Ss 256 string def Ss 0 (fonts/) putinterval /_cnt 0 def /_scale [1 1] def /_nativeEncoding 0 def /_useNativeEncoding 0 def /_tempEncode 0 def /_pntr 0 def /_tDict 2 dict def /_hfname 100 string def /_hffound false def /Tx { } def /Tj { } def /CRender { } def /_AI3_savepage { } def /_gf null def /_cf 4 array def /_rgbf 3 array def /_if null def /_of false def /_fc { } def /_gs null def /_cs 4 array def /_rgbs 3 array def /_is null def /_os false def /_sc { } def /_pd 1 dict def /_ed 15 dict def /_pm matrix def /_fm null def /_fd null def /_fdd null def /_sm null def /_sd null def /_sdd null def /_i null def /_lobyte 0 def /_hibyte 0 def /_cproc null def /_cscript 0 def /_hvax 0 def /_hvay 0 def /_hvwb 0 def /_hvcx 0 def /_hvcy 0 def /_bitfont null def /_bitlobyte 0 def /_bithibyte 0 def /_bitkey null def /_bitdata null def /_bitindex 0 def /discardSave null def /buffer 256 string def /beginString null def /endString null def /endStringLength null def /layerCnt 1 def /layerCount 1 def /perCent (%) 0 get def /perCentSeen? false def /newBuff null def /newBuffButFirst null def /newBuffLast null def /clipForward? false def end userdict /Adobe_Illustrator_AI5 known not { userdict /Adobe_Illustrator_AI5 95 dict put } if userdict /Adobe_Illustrator_AI5 get begin /initialize { Adobe_Illustrator_AI5 dup begin Adobe_Illustrator_AI5_vars begin discardDict { bind pop pop } forall dup /nc get begin { dup xcheck 1 index type /operatortype ne and { bind } if pop pop } forall end newpath } def /terminate { end end } def /_ null def /ddef { Adobe_Illustrator_AI5_vars 3 1 roll put } def /xput { dup load dup length exch maxlength eq { dup dup load dup length 2 mul dict copy def } if load begin def end } def /npop { { pop } repeat } def /hswj { dup stringwidth 3 2 roll { _hvwb eq { exch _hvcx add exch _hvcy add } if exch _hvax add exch _hvay add } cforall } def /vswj { 0 0 3 -1 roll { dup 255 le _charorientation 1 eq and { dup cstring stringwidth 5 2 roll _hvwb eq { exch _hvcy sub exch _hvcx sub } if exch _hvay sub exch _hvax sub 4 -1 roll sub exch 3 -1 roll sub exch } { _hvwb eq { exch _hvcy sub exch _hvcx sub } if exch _hvay sub exch _hvax sub _fontHeight sub } ifelse } cforall } def /swj { 6 1 roll /_hvay exch ddef /_hvax exch ddef /_hvwb exch ddef /_hvcy exch ddef /_hvcx exch ddef _lineorientation 0 eq { hswj } { vswj } ifelse } def /sw { 0 0 0 6 3 roll swj } def /vjss { 4 1 roll { dup cstring dup length 1 eq _charorientation 1 eq and { -90 rotate currentpoint _fontRotateAdjust add moveto gsave false charpath currentpoint 5 index setmatrix stroke grestore _fontRotateAdjust sub moveto _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto 90 rotate } { currentpoint _fontHeight sub 5 index sub 3 index _sp eq { 9 index sub } if currentpoint exch 4 index stringwidth pop 2 div sub exch _fontAscent sub moveto gsave 2 index false charpath 6 index setmatrix stroke grestore moveto pop pop } ifelse } cforall 6 npop } def /hjss { 4 1 roll { dup cstring gsave false charpath currentpoint 5 index setmatrix stroke grestore moveto _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto } cforall 6 npop } def /jss { _lineorientation 0 eq { hjss } { vjss } ifelse } def /ss { 0 0 0 7 3 roll jss } def /vjsp { 4 1 roll { dup cstring dup length 1 eq _charorientation 1 eq and { -90 rotate currentpoint _fontRotateAdjust add moveto false charpath currentpoint _fontRotateAdjust sub moveto _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto 90 rotate } { currentpoint _fontHeight sub 5 index sub 3 index _sp eq { 9 index sub } if currentpoint exch 4 index stringwidth pop 2 div sub exch _fontAscent sub moveto 2 index false charpath moveto pop pop } ifelse } cforall 6 npop } def /hjsp { 4 1 roll { dup cstring false charpath _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto } cforall 6 npop } def /jsp { matrix currentmatrix _lineorientation 0 eq {hjsp} {vjsp} ifelse } def /sp { matrix currentmatrix 0 0 0 7 3 roll _lineorientation 0 eq {hjsp} {vjsp} ifelse } def /pl { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform } def /setstrokeadjust where { pop true setstrokeadjust /c { curveto } def /C /c load def /v { currentpoint 6 2 roll curveto } def /V /v load def /y { 2 copy curveto } def /Y /y load def /l { lineto } def /L /l load def /m { moveto } def } { /c { pl curveto } def /C /c load def /v { currentpoint 6 2 roll pl curveto } def /V /v load def /y { pl 2 copy curveto } def /Y /y load def /l { pl lineto } def /L /l load def /m { pl moveto } def } ifelse /d { setdash } def /cf { } def /i { dup 0 eq { pop cf } if setflat } def /j { setlinejoin } def /J { setlinecap } def /M { setmiterlimit } def /w { setlinewidth } def /XR { 0 ne /_eo exch ddef } def /H { } def /h { closepath } def /N { _pola 0 eq { _doClip 1 eq { _eo {eoclip} {clip} ifelse /_doClip 0 ddef } if newpath } { /CRender { N } ddef } ifelse } def /n { N } def /F { _pola 0 eq { _doClip 1 eq { gsave _pf grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _fc /_doClip 0 ddef } { _pf } ifelse } { /CRender { F } ddef } ifelse } def /f { closepath F } def /S { _pola 0 eq { _doClip 1 eq { gsave _ps grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc /_doClip 0 ddef } { _ps } ifelse } { /CRender { S } ddef } ifelse } def /s { closepath S } def /B { _pola 0 eq { _doClip 1 eq gsave F grestore { gsave S grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc /_doClip 0 ddef } { S } ifelse } { /CRender { B } ddef } ifelse } def /b { closepath B } def /W { /_doClip 1 ddef } def /* { count 0 ne { dup type /stringtype eq { pop } if } if newpath } def /u { } def /U { } def /q { _pola 0 eq { gsave } if } def /Q { _pola 0 eq { grestore } if } def /*u { _pola 1 add /_pola exch ddef } def /*U { _pola 1 sub /_pola exch ddef _pola 0 eq { CRender } if } def /D { pop } def /*w { } def /*W { } def /` { /_i save ddef clipForward? { nulldevice } if 6 1 roll 4 npop concat pop userdict begin /showpage { } def 0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit [] 0 setdash /setstrokeadjust where {pop false setstrokeadjust} if newpath 0 setgray false setoverprint } def /~ { end _i restore } def /O { 0 ne /_of exch ddef /_lp /none ddef } def /R { 0 ne /_os exch ddef /_lp /none ddef } def /g { /_gf exch ddef /_fc { _lp /fill ne { _of setoverprint _gf setgray /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /G { /_gs exch ddef /_sc { _lp /stroke ne { _os setoverprint _gs setgray /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /k { _cf astore pop /_fc { _lp /fill ne { _of setoverprint _cf aload pop setcmykcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /K { _cs astore pop /_sc { _lp /stroke ne { _os setoverprint _cs aload pop setcmykcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /Xa { _rgbf astore pop /_fc { _lp /fill ne { _of setoverprint _rgbf aload pop setrgbcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /XA { _rgbs astore pop /_sc { _lp /stroke ne { _os setoverprint _rgbs aload pop setrgbcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /_rgbtocmyk { 3 { 1 exch sub 3 1 roll } repeat 3 copy 1 4 1 roll 3 { 3 index 2 copy gt { exch } if pop 4 1 roll } repeat pop pop pop 4 1 roll 3 { 3 index sub 3 1 roll } repeat 4 -1 roll } def /Xx { exch /_gf exch ddef 0 eq { findcmykcustomcolor } { /findrgbcustomcolor where not { 4 1 roll _rgbtocmyk 5 -1 roll findcmykcustomcolor } { pop findrgbcustomcolor } ifelse } ifelse /_if exch ddef /_fc { _lp /fill ne { _of setoverprint _if _gf 1 exch sub setcustomcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /XX { exch /_gs exch ddef 0 eq { findcmykcustomcolor } { /findrgbcustomcolor where not { 4 1 roll _rgbtocmyk 5 -1 roll findcmykcustomcolor } { pop findrgbcustomcolor } ifelse } ifelse /_is exch ddef /_sc { _lp /stroke ne { _os setoverprint _is _gs 1 exch sub setcustomcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /x { /_gf exch ddef findcmykcustomcolor /_if exch ddef /_fc { _lp /fill ne { _of setoverprint _if _gf 1 exch sub setcustomcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /X { /_gs exch ddef findcmykcustomcolor /_is exch ddef /_sc { _lp /stroke ne { _os setoverprint _is _gs 1 exch sub setcustomcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /A { pop } def /annotatepage { userdict /annotatepage 2 copy known {get exec} {pop pop} ifelse } def /XT { pop pop } def /discard { save /discardSave exch store discardDict begin /endString exch store gt38? { 2 add } if load stopped pop end discardSave restore } bind def userdict /discardDict 7 dict dup begin put /pre38Initialize { /endStringLength endString length store /newBuff buffer 0 endStringLength getinterval store /newBuffButFirst newBuff 1 endStringLength 1 sub getinterval store /newBuffLast newBuff endStringLength 1 sub 1 getinterval store } def /shiftBuffer { newBuff 0 newBuffButFirst putinterval newBuffLast 0 currentfile read not { stop } if put } def 0 { pre38Initialize mark currentfile newBuff readstring exch pop { { newBuff endString eq { cleartomark stop } if shiftBuffer } loop } { stop } ifelse } def 1 { pre38Initialize /beginString exch store mark currentfile newBuff readstring exch pop { { newBuff beginString eq { /layerCount dup load 1 add store } { newBuff endString eq { /layerCount dup load 1 sub store layerCount 0 eq { cleartomark stop } if } if } ifelse shiftBuffer } loop } if } def 2 { mark { currentfile buffer readline not { stop } if endString eq { cleartomark stop } if } loop } def 3 { /beginString exch store /layerCnt 1 store mark { currentfile buffer readline not { stop } if dup beginString eq { pop /layerCnt dup load 1 add store } { endString eq { layerCnt 1 eq { cleartomark stop } { /layerCnt dup load 1 sub store } ifelse } if } ifelse } loop } def end userdict /clipRenderOff 15 dict dup begin put { /n /N /s /S /f /F /b /B } { { _doClip 1 eq { /_doClip 0 ddef _eo {eoclip} {clip} ifelse } if newpath } def } forall /Tr /pop load def /Bb {} def /BB /pop load def /Bg {12 npop} def /Bm {6 npop} def /Bc /Bm load def /Bh {4 npop} def end /Lb { 4 npop 6 1 roll pop 4 1 roll pop pop pop 0 eq { 0 eq { (%AI5_BeginLayer) 1 (%AI5_EndLayer--) discard } { /clipForward? true def /Tx /pop load def /Tj /pop load def currentdict end clipRenderOff begin begin } ifelse } { 0 eq { save /discardSave exch store } if } ifelse } bind def /LB { discardSave dup null ne { restore } { pop clipForward? { currentdict end end begin /clipForward? false ddef } if } ifelse } bind def /Pb { pop pop 0 (%AI5_EndPalette) discard } bind def /Np { 0 (%AI5_End_NonPrinting--) discard } bind def /Ln /pop load def /Ap /pop load def /Ar { 72 exch div 0 dtransform dup mul exch dup mul add sqrt dup 1 lt { pop 1 } if setflat } def /Mb { q } def /Md { } def /MB { Q } def /nc 4 dict def nc begin /setgray { pop } bind def /setcmykcolor { 4 npop } bind def /setrgbcolor { 3 npop } bind def /setcustomcolor { 2 npop } bind def currentdict readonly pop end end setpacking %%EndResource %%BeginResource: procset Adobe_pattern_AI5 1.1 0 %%Title: (Adobe Illustrator (R) Version 5.0 Pattern Operators) %%Version: 1.1 0 %%CreationDate: (03/26/93) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_Illustrator_AI5 known not { userdict /Adobe_Illustrator_AI5 95 dict put } if userdict /Adobe_Illustrator_AI5 get begin /@ { } def /& { } def /dp { dup null eq { pop _dp 0 ne { 0 1 _dp 1 sub _dl mod { _da exch get 3 get } for _dp 1 sub _dl mod 1 add packedarray _da 0 get aload pop 8 -1 roll 5 -1 roll pop 4 1 roll definepattern pop } if } { _dp 0 ne _dp _dl mod 0 eq and { null dp } if 7 packedarray _da exch _dp _dl mod exch put _dp _dl mod _da 0 get 4 get 2 packedarray /_dp _dp 1 add def } ifelse } def /E { _ed begin dup 0 get type /arraytype ne { 0 { dup 1 add index type /arraytype eq { 1 add } { exit } ifelse } loop array astore } if /_dd exch def /_ury exch def /_urx exch def /_lly exch def /_llx exch def /_n exch def /_y 0 def /_dl 4 def /_dp 0 def /_da _dl array def 0 1 _dd length 1 sub { /_d exch _dd exch get def 0 2 _d length 2 sub { /_x exch def /_c false def /_r _d _x 1 add get cvlit def _r _ ne { _urx _llx sub _ury _lly sub [ 1 0 0 1 0 0 ] [ /save cvx _llx neg _lly neg /translate cvx _c { nc /begin cvx } if _r dup type /stringtype eq { cvx } { { exec } /forall cvx } ifelse _c { /end cvx } if /restore cvx ] cvx /_fn 12 _n length add string def _y _fn cvs pop /_y _y 1 add def _fn 12 _n putinterval _fn _c false dp _d exch _x 1 add exch put } if } for } for null dp _n _dd /_pd end xput } def /fc { _fm dup concatmatrix pop } def /p { /_fm exch ddef 9 -2 roll _pm translate fc 7 -2 roll _pm scale fc 5 -1 roll _pm rotate fc 4 -2 roll exch 0 ne { dup _pm rotate fc 1 -1 _pm scale fc neg _pm rotate fc } { pop } ifelse dup _pm rotate fc exch dup sin exch cos div 1 0 0 1 0 6 2 roll _pm astore fc neg _pm rotate fc _pd exch get /_fdd exch ddef /_pf { save /_doClip 0 ddef 0 1 _fdd length 1 sub { /_fd exch _fdd exch get ddef _fd 0 2 _fd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _fc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _fm patternfill } { pop fill } ifelse grestore pop } for pop } for restore newpath } ddef /_psf { save /_doClip 0 ddef 0 1 _fdd length 1 sub { /_fd exch _fdd exch get ddef _fd 0 2 _fd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _fc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _fm 9 copy 6 npop patternashow } { pop 6 copy 3 npop hvashow } ifelse grestore pop } for pop } for restore sw rmoveto } ddef /_pjsf { save /_doClip 0 ddef 0 1 _fdd length 1 sub { /_fd exch _fdd exch get ddef _fd 0 2 _fd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _fc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _fm 12 copy 6 npop patternawidthshow } { pop 9 copy 3 npop hvawidthshow } ifelse grestore pop } for pop } for restore swj rmoveto } ddef /_lp /none ddef } def /sc { _sm dup concatmatrix pop } def /P { /_sm exch ddef 9 -2 roll _pm translate sc 7 -2 roll _pm scale sc 5 -1 roll _pm rotate sc 4 -2 roll exch 0 ne { dup _pm rotate sc 1 -1 _pm scale sc neg _pm rotate sc } { pop } ifelse dup _pm rotate sc exch dup sin exch cos div 1 0 0 1 0 6 2 roll _pm astore sc neg _pm rotate sc _pd exch get /_sdd exch ddef /_ps { save /_doClip 0 ddef 0 1 _sdd length 1 sub { /_sd exch _sdd exch get ddef _sd 0 2 _sd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _sc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _sm patternstroke } { pop stroke } ifelse grestore pop } for pop } for restore newpath } ddef /_pss { save /_doClip 0 ddef 0 1 _sdd length 1 sub { /_sd exch _sdd exch get ddef _sd 0 2 _sd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _sc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _sm 10 copy 6 npop patternashowstroke } { pop 7 copy 3 npop ss } ifelse grestore pop } for pop } for restore pop sw rmoveto } ddef /_pjss { save /_doClip 0 ddef 0 1 _sdd length 1 sub { /_sd exch _sdd exch get ddef _sd 0 2 _sd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _sc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _sm 13 copy 6 npop patternawidthshowstroke } { pop 10 copy 3 npop jss } ifelse grestore pop } for pop } for restore pop swj rmoveto } ddef /_lp /none ddef } def end userdict /Adobe_pattern_AI5 18 dict dup begin put /initialize { /definepattern where { pop pop pop } { begin begin Adobe_pattern_AI5 begin Adobe_pattern_AI5 { dup xcheck { bind } if pop pop } forall mark cachestatus 7 1 roll pop pop pop pop exch pop exch { { 10000 add dup 2 index gt { exit } if dup setcachelimit } loop } stopped cleartomark end end end Adobe_pattern_AI5 begin } ifelse } def /terminate { currentdict Adobe_pattern_AI5 eq { end } if } def errordict /nocurrentpoint { pop stop } put errordict /invalidaccess { pop stop } put /patternencoding 256 array def 0 1 255 { patternencoding exch ( ) 2 copy exch 0 exch put cvn put } for /definepattern { 17 dict begin /uniform exch def /cache exch def /key exch def /procarray exch def /mtx exch matrix invertmatrix def /height exch def /width exch def /ctm matrix currentmatrix def /ptm matrix def /str 32 string def /slice 9 dict def slice /s 1 put slice /q 256 procarray length div sqrt floor cvi put slice /b 0 put /FontBBox [ 0 0 0 0 ] def /FontMatrix mtx matrix copy def /Encoding patternencoding def /FontType 3 def /BuildChar { exch begin /setstrokeadjust where {pop true setstrokeadjust} if slice begin dup q dup mul mod s idiv /i exch def dup q dup mul mod s mod /j exch def q dup mul idiv procarray exch get /xl j width s div mul def /xg j 1 add width s div mul def /yl i height s div mul def /yg i 1 add height s div mul def uniform { 1 1 } { width 0 dtransform dup mul exch dup mul add sqrt dup 1 add exch div 0 height dtransform dup mul exch dup mul add sqrt dup 1 add exch div } ifelse width 0 cache { xl 4 index mul yl 4 index mul xg 6 index mul yg 6 index mul setcachedevice } { setcharwidth } ifelse gsave scale newpath xl yl moveto xg yl lineto xg yg lineto xl yg lineto closepath clip newpath end end exec grestore } def key currentdict definefont end } def /patterncachesize { gsave newpath 0 0 moveto width 0 lineto width height lineto 0 height lineto closepath patternmatrix setmatrix pathbbox exch ceiling 4 -1 roll floor sub 3 1 roll ceiling exch floor sub mul 1 add grestore } def /patterncachelimit { cachestatus 7 1 roll 6 npop 8 mul } def /patternpath { exch dup begin setfont ctm setmatrix concat slice exch /b exch slice /q get dup mul mul put FontMatrix concat uniform { width 0 dtransform round width div exch round width div exch 0 height dtransform round height div exch height div exch 0 0 transform round exch round exch ptm astore setmatrix } { ptm currentmatrix pop } ifelse { currentpoint } stopped not { 2 npop pathbbox true 4 index 3 index eq 4 index 3 index eq and { pop false { { 2 npop } { 3 npop true } { 7 npop true } { pop true } pathforall } stopped { 5 npop true } if } if { height div ceiling height mul 4 1 roll width div ceiling width mul 4 1 roll height div floor height mul 4 1 roll width div floor width mul 4 1 roll 2 index sub height div ceiling cvi exch 3 index sub width div ceiling cvi exch 4 2 roll moveto FontMatrix mtx invertmatrix dup dup 4 get exch 5 get rmoveto ptm ptm concatmatrix pop slice /s patterncachesize patterncachelimit div ceiling sqrt ceiling cvi dup slice /q get gt { pop slice /q get } if put 0 1 slice /s get dup mul 1 sub { slice /b get add gsave 0 1 str length 1 sub { str exch 2 index put } for pop dup { gsave ptm setmatrix 1 index str length idiv { str show } repeat 1 index str length mod str exch 0 exch getinterval show grestore 0 height rmoveto } repeat grestore } for 2 npop } { 4 npop } ifelse } if end } def /patternclip { _eo {eoclip} {clip} ifelse } def /patternstrokepath { strokepath } def /patternmatrix matrix def /patternfill { dup type /dicttype eq { Adobe_pattern_AI5 /patternmatrix get } if gsave patternclip Adobe_pattern_AI5 /patternpath get exec grestore newpath } def /patternstroke { dup type /dicttype eq { Adobe_pattern_AI5 /patternmatrix get } if gsave patternstrokepath true { { { newpath moveto } { lineto } { curveto } { closepath 3 copy Adobe_pattern_AI5 /patternfill get exec } pathforall 3 npop } stopped { 5 npop patternclip Adobe_pattern_AI5 /patternfill get exec } if } { patternclip Adobe_pattern_AI5 /patternfill get exec } ifelse grestore newpath } def /vpatternawidthshow { 6 1 roll /_hvay exch ddef /_hvax exch ddef /_hvwb exch ddef /_hvcy exch ddef /_hvcx exch ddef { dup cstring dup length 1 eq _charorientation 1 eq and { -90 rotate currentpoint _fontRotateAdjust add moveto gsave false charpath currentpoint 5 index 5 index 5 index Adobe_pattern_AI5 /patternfill get exec grestore _fontRotateAdjust sub moveto _hvwb eq { _hvcx _hvcy rmoveto } if _hvax _hvay rmoveto 90 rotate } { currentpoint _fontHeight sub _hvax sub 3 index _hvwb eq { _hvcx sub } if currentpoint exch 4 index stringwidth pop 2 div sub exch _fontAscent sub moveto gsave 2 index false charpath 6 index 6 index 6 index Adobe_pattern_AI5 /patternfill get exec grestore newpath moveto pop pop } ifelse } cforall 3 npop } def /hpatternawidthshow { { dup cstring exch gsave 3 index eq { 5 index 5 index rmoveto } if false charpath currentpoint 9 index 9 index 9 index Adobe_pattern_AI5 /patternfill get exec grestore newpath moveto 2 copy rmoveto } cforall 8 npop } def /patternashow { 0 0 0 6 3 roll patternawidthshow } def /patternawidthshow { 6 index type /dicttype eq { Adobe_pattern_AI5 /patternmatrix get 7 1 roll } if _lineorientation 0 eq { hpatternawidthshow } { vpatternawidthshow } ifelse } def /vpatternawidthshowstroke { 7 1 roll 6 1 roll /_hvay exch ddef /_hvax exch ddef /_hvwb exch ddef /_hvcy exch ddef /_hvcx exch ddef { dup cstring dup length 1 eq _charorientation 1 eq and { -90 rotate currentpoint _fontRotateAdjust add moveto gsave false charpath currentpoint 3 index setmatrix 6 index 6 index 6 index Adobe_pattern_AI5 /patternstroke get exec grestore _fontRotateAdjust sub moveto _hvwb eq { _hvcx _hvcy rmoveto } if _hvax _hvay rmoveto 90 rotate } { currentpoint _fontHeight sub _hvax sub 3 index _hvwb eq { _hvcx sub } if currentpoint exch 4 index stringwidth pop 2 div sub exch _fontAscent sub moveto gsave 2 index false charpath 4 index setmatrix 7 index 7 index 7 index Adobe_pattern_AI5 /patternstroke get exec grestore newpath moveto pop pop } ifelse } cforall 4 npop } def /hpatternawidthshowstroke { 7 1 roll { dup cstring exch gsave 3 index eq { 5 index 5 index rmoveto } if false charpath currentpoint 7 index setmatrix 10 index 10 index 10 index Adobe_pattern_AI5 /patternstroke get exec grestore newpath moveto 2 copy rmoveto } cforall 9 npop } def /patternashowstroke { 0 0 0 7 3 roll patternawidthshowstroke } def /patternawidthshowstroke { 7 index type /dicttype eq { patternmatrix /patternmatrix get 8 1 roll } if _lineorientation 0 eq { hpatternawidthshowstroke } { vpatternawidthshowstroke } ifelse } def end setpacking %%EndResource %%BeginResource: procset Adobe_cshow 2.0 8 %%Title: (Writing System Operators) %%Version: 2.0 8 %%CreationDate: (1/23/89) () %%Copyright: ((C) 1992-1996 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_cshow 14 dict dup begin put /initialize { Adobe_cshow begin Adobe_cshow { dup xcheck { bind } if pop pop } forall end Adobe_cshow begin } def /terminate { currentdict Adobe_cshow eq { end } if } def /cforall { /_lobyte 0 ddef /_hibyte 0 ddef /_cproc exch ddef /_cscript currentfont /FontScript known { currentfont /FontScript get } { -1 } ifelse ddef { /_lobyte exch ddef _hibyte 0 eq _cscript 1 eq _lobyte 129 ge _lobyte 159 le and _lobyte 224 ge _lobyte 252 le and or and _cscript 2 eq _lobyte 161 ge _lobyte 254 le and and _cscript 3 eq _lobyte 161 ge _lobyte 254 le and and _cscript 25 eq _lobyte 161 ge _lobyte 254 le and and _cscript -1 eq or or or or and { /_hibyte _lobyte ddef } { _hibyte 256 mul _lobyte add _cproc /_hibyte 0 ddef } ifelse } forall } def /cstring { dup 256 lt { (s) dup 0 4 3 roll put } { dup 256 idiv exch 256 mod (hl) dup dup 0 6 5 roll put 1 4 3 roll put } ifelse } def /clength { 0 exch { 256 lt { 1 } { 2 } ifelse add } cforall } def /hawidthshow { { dup cstring show _hvax _hvay rmoveto _hvwb eq { _hvcx _hvcy rmoveto } if } cforall } def /vawidthshow { { dup 255 le _charorientation 1 eq and { -90 rotate 0 _fontRotateAdjust rmoveto cstring _hvcx _hvcy _hvwb _hvax _hvay 6 -1 roll awidthshow 0 _fontRotateAdjust neg rmoveto 90 rotate } { currentpoint _fontHeight sub exch _hvay sub exch _hvax sub 2 index _hvwb eq { exch _hvcy sub exch _hvcx sub } if 3 2 roll cstring dup stringwidth pop 2 div neg _fontAscent neg rmoveto show moveto } ifelse } cforall } def /hvawidthshow { 6 1 roll /_hvay exch ddef /_hvax exch ddef /_hvwb exch ddef /_hvcy exch ddef /_hvcx exch ddef _lineorientation 0 eq { hawidthshow } { vawidthshow } ifelse } def /hvwidthshow { 0 0 3 -1 roll hvawidthshow } def /hvashow { 0 0 0 6 -3 roll hvawidthshow } def /hvshow { 0 0 0 0 0 6 -1 roll hvawidthshow } def currentdict readonly pop end setpacking %%EndResource %%EndProlog %%BeginSetup userdict /_useSmoothShade true put Adobe_level2_AI5 /initialize get exec Adobe_cshow /initialize get exec Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 Adobe_typography_AI5 /initialize get exec Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 AGM_Gradient /initializeAI get exec Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 Adobe_pattern_AI5 /initialize get exec Adobe_ColorImage_AI6 /initialize get exec Adobe_Illustrator_AI5 /initialize get exec %AI3_BeginRider currentpacking true setpacking %%BeginFont: Myriad-Roman %!PS-AdobeFont-1.0: Myriad-Roman 001.000 %%CreationDate: Mon Jul 25 16:15:04 1994 %%VMusage: 28005 34897 %% Myriad is a trademark of Adobe Systems Incorporated may be registered in %% certain jurisdictions. 11 dict begin /FontInfo 10 dict dup begin /version (001.000) readonly def /Notice (Copyright (c) 1992, 1994 Adobe Systems Incorporated. All Rights Reserved.Myriad is a trademark of Adobe Systems Incorporated may be registered in certain jurisdictions.) readonly def /FullName (Myriad Roman) readonly def /FamilyName (Myriad) readonly def /Weight (Regular) readonly def /isFixedPitch false def /ItalicAngle 0 def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /FontName /Myriad-Roman def /Encoding StandardEncoding def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /UniqueID 41987 def /FontBBox{-46 -250 1126 831}readonly def currentdict end currentfile eexec fcecc98c2aefb25089edad915372f7632807d0d80113c0fbda4614dda7560bffacbeaa4f371815c991f0682cbc45f51895a8e6fc33b63b87db33f2f141b34c80b26ba7d9f30c5d0811a31c14ca6d1250d33478395ee2096ad1b742ed78b95145f606e652e4d2bd83f4cf7d67cdca3268c1d165c3cf471a6094892362712d5e 19b5084335eaca009edef0af8bc976eadf7c336b76887cf63653a555e0538ab47d8bf6a8c45725720630bc185740fdab20647654dd2e6d2db3254e482024a1dd45e865357b140bacb98f0a8066087af1076333e21e51e77d70bad81d05e6b7e6f4d3a88423efbdf6eb3b9d4ca66e9ad97e0bde315f13542863a4a6b71a9c35 60eaea09bb5a75ea3eaf84bfd6a5549a045e20540ac787976353c114cca7c97ce57501589cc846a1320ba2c618644bd7ead0f736873e8d07e7f550df45b51deefee29c13aa19896638a8f580a26665a8d50511d6a0a1d8822fe99e3d82a19244ed668b2d510ea6ef05c17002e01d0a4c4154288c2156ae5fba08cfb2394c78 221f1b67ca0c6dd8bc930eb9cd6d5b77619e5cfb0e19da187d81124f0793bc0eac6aff145fd8deb6b9100aad8798983107b205f36eb8f7c6b46c6149ccda404549845c5177d0b318b4e621f7c02260faf5e4af8463b776c5b12e6fb1d6735ef91f91d9132268c0c67f18915d0807f99694d4ae8c6d9d495b000604d311a9b9 6d2520458341a4efa4fa686e80300f18d6681a99a5c3eaeb4767306554865d708a58419b05c24200c59454847988d50b7abbe83a2756cc5781be5b71c28318750549b21f7ce539909e8425c5c38a4a24cad2cb70396b88777346c838c7c8ae27833df843db788ca8a3f0594707a2e54f427a416d3e07d838039d5edc835b68 ea0aac86f3bd470b37f7ba7c53045a8460d1e7a3175fc90d877ed022ba3f45622569455e31a3d1dc8261541bcd25c8b52845ce4a9dc2e3eedadbcbca781989cf5c51284a4e74b7c0d163c25a608196e89ca4e3444395562311d405ab1707e3dbcba475c61e3774137432519b9e0384112c5da682e59ed4c7e1db1ee381d8fe a4ced481f9823b96b719e51b5f059d26949588d5d33c4149ac36cfcac4ca83210c06b15377d9911bca684f27ab16f18ba374261a00514f0ff70163c0d5c41093cc02725b828f004cd04c5297bfc77d3185475d17569f430472d6d67aed94ebcf0b9808ed4489c233e69eb9139561dd741605b62511aaa09a44fc841851ccd7 80f15c71bdea5386f1bdcc7e30fc4b07b461f21bab5fc313d3424519359f17a4f5f44332ebc0bc269892cb1d91a414817b152a77192c21a0501b586a667f3a5352940ca13f840f5377f30c60b6740ff7fa07964332c76def2b8925245fab5de0ae53a0226fab8218c703a4bbc6733de7a68114d6048f85e7ba1aa4f3b044fa 052182ccc1b98e9a33ee688bcc29d195ee42d78d814b058abcf57d8970241d14c21f66107ae839a4b3a8ba06f6300d6b1199f3c255140776c5e1b9db2cfe374926e90bfa7ed45dc371ea7a3a9715347b17c9cf2ce89fbd64f7a932146cf5f766a702936791071ce8d01c7c36f77c1796da835f45b43ffef471feac9f548c39 ee0d15805da6381d46062e084c3aca65b9abd3aa4636bdee45cb6ae316302385bfe24279f27d9017d98233d0839a17c34c40a140b9ebb38bece8bb0ea78b602573d457bcba967cba9191fc3e689c2204f798b8ce4785d908a20a8b7af26a59da060b181c1375745de477c32b46e059157e1bff21058709f5ed1e8a561505f0 ed7fbe0212099e9dbe1c02412f63eb6274f62db5075d74c2aad39a2305a52c4267fefc948faeb4afa2de78ec35e2cb02f212e5f772ccb07ca14636535ca1330c44afb15689daca6808c32592bab5c1427f87572983d82ca79707177e7d2799df80faeb622efdd1afcfdf20dc7a6c18d0f3ac98e9cabe609d0ddd71ff2cf57d 438e3caf3933449994fa51703c49ccbe30982ad2ac4e09f1e10dc393eca013bab3de6205e7c78ebbdc19f8d30d6087acc505ef874f28f299993aa81f21bdc769e0d238dfc42057eb50fdf73b9a637425fbb2e79876941d51720e5cd95e42ee0d8d0c3c2460272508530ecdb2a086f11fa43560f6dbe830f455b26684f6927c b653a092af8c202f39c31cccd2f0ac5de6d5b03b66e97872e4eae9451a3162514a6a7b4e6f55d1742b3fd1cbcf8b0f75ec005244759bd68e7781459a2519d59b16f9c88d4cd4fb37d6ba5fa740ddfb7dbccf5a6a95f7c4c7d1e62ca9ab6cc08dfd08ca2f1aa9dd44012de2be0b26c222d43eeb3f987a396e498f028ddc3528 dd3d956a9e14e6776c4ca5ae0dbad3227b1dc293df5a68679fcf7463b0f5107469f31f688e241e4058437bcaa3debe0a522a797088521405d8e5ca15c23d77701e441d10b92c5a6e0f731d6073e328f89051625b4f788222062ffcccb5ad208805c17b28e97167510b891b65b6f3583fd60945081fbfe0e78f317947230517 545be57c398e2a60f51c622473fcb3fdd659a5cf4c6d8f2337bc3cd617d3aa6d080d4247a7d78c7b1963ad2ac7e0924e29f5184dd1082e58b0e8218c7b390d07412a2cc18239a8ed7414f9372375ad6d546aa06c9735867665cea3619b0912399adb32995b6dff08ce7ccff0320ed318a5a609259895d00948876707bc9631 c4c5fe755c4c884b09f3f7e6694ad188dd3a7d61d1ebe85c61eb3067c7a12ac3719b1f1f9d099fdb0a6b118fdddb67ed0107415894e427c5f5895f5258dbbb6395504d93f9012d76ecd59ba1f134430c92e944cdac08f57a19341161acd1d7ded4b4aae204bdb10f9fc3684a47a4958f815bb544e6abf7f9bd2afe96e2dd7e eef096bb1654faa5c80fc2c66d09968a1238b9671bc6d96fcdd6aa2a402d0fa9db18650556a2ae8c44550a03d98cfc02730d8cf948f1a84e3a0edf4c209cdadef9d780e408d8d161965249e48856cf33de593276b50e82abe13b81ee3d67bef7eea9562563238d539b3a256dfaa10c4867bb48c67795a15160d54973d84a49 19fb5855b5f11e5e51a64ee190a25b3beb482c07e61b8663c3d79f4b3a2f5b8c749d3603e6eadab1e89fb73c426f12cc026791ac66fd1dd83ad47eaa9a9aa23f304ea10e6862f4fb0d41d676f7a42f5512f3b8098c8b6fe7c50dd0af3222c8b4b00aa57199354998ab52ac54d30d17b24e22306b74744c42b434eaebddbf8d 1d3d3f1504d6caab0446b8ffa56ccecc8ec9976d19d0d9b6a6e0ea7e44c6fdb29f0b50ae017aa453deb992db2ae3087b78beaf7211b00200c65089f5ed726d4251dd284d22fa28e28fbe0f1b064723d3196af84cb1644e39f61fbfbdde02cbf70465789380e1912b7d3cc8118428ed9af4f633790b4d219f09c13c3e8f3f73 9def2f967c7bfeecd25daf9b5a747eb281d2535b31c7dc99e34ee537a478ecc8174c6a3a1ed0c2c74b871493599be9a2ecccee1136fc7eaaa6f30758b607700faa7d19b586fa6aa4dc5a813ac33fc3e28d226b6665dac7de35a014f89a31195a416833e9a13123be1ae1518effefc0523499f54377362bbcf9d91650d6d283 e1bc19a5f2e53e5e1973c406bc3b4878d4a4b8278b878d9bce540ca936d369af2d1c31850d5abd466083845e1479b51d368df23c5243c131db75853e962c66db13f8ffc95affaf6336abce1cd0a699e733aa64b29ebe04915471de4d165e4d85573ec24ff0e09bd7ea8cba8169299eeabfdbdff58bb12460e20b9145b67872 484d911af649e1d39fb9a44aeba926f3a83dd87202020f674613001107a5d1f184b9ed1c1f8eb24a32f41defee4874b4ecf3d9897c00c2a859ba745e11304823f59c0aea5bfa21081b2eafad4c4c94ef891ce7c97f388ff1753e1d53d485e9d5b18e333f9436572eced77d9197c3deee53a26dea76f0a738aa979f4f2a358b 725eb5b2321e717ff9bec75804606fd0489a36852ff5474df878831431a0257d2b6909e5b954afc9a49dab3aca5b02e02e3565e762d240542917fc4cc781bceab43f7c53950ad992e596582bf87ee042f4bc7f9e91ea20ba6561019e184a34c8a5e17d7912edc431fcea320c7066afc23bdb5f64c3606b11b1fe9e810a9c82 2e60bb187be38c7b87b35539048b8a507233a86f6b8b363656eaca0f8de48f3cdfba3616a743c579a7ef6b922d2d282b1c77cbda888177ba7037513b64d21a8a6a09ffc1e3d46769ae279e68799e520a412ff61d952aa3b552159e3814c8f185731c7269bb375c1a1e266dd2f73c7708635c2ed5a52d362c124a76c92410dd 3f00f21fe81977c80051eb8bf67997efcafb1593ca9307301c2ecf27c08b568e404d1d1414dc2220d73c6a352a2624c916ada967c3d189a1b893d41139c948b04d6f808452fcfde55603527e598a6590ed920be0d75cfe65e105bfee9cddaa6fc9934c42f611ae55681be92fc300e7249af0d7f863e2b69ce5bd4ea2ceab04 8dbf1548639ced835beca4cb4da0fd79e7936a451691f23c1859231f2bd61d239a352d33e063142ef8844b777e28eef2f286bdf4ea7326ea3ac9719a4cdb181640727493a2b94b7a9df5cf6844064558c63f27a72892b19812828d32c8c76a52636f16fce7c04a3a38c78abe0179e533746e1e1c8ac3e3bbe106ba78b05e6a 27f6fa044cf6281acfc616fbd096d15b607b86a61644947c5caf286f43223ecd23873e67c555f614759a4ae0bc8b78c136a1b050e79c682e1545e2d3c018b7321e63ab4f61f7173fc172d563a90b072b2fab9bf4d184650c1b6fbb6b14cc43c354fb4dd10fe294f9e7e2d1ad12e49f517775962e6edb08dc6fd08e554d014f 57bd2707948f910e79946e5992a7152893e562c4adef8b17f8e9c642e0cba85fd3998de2336908f3bc7d6f1c7af67020d5398b4356837e256fab4d507221db4772022b13022e02f3c72f91fe55758a990143fb641fc74b8968bd9c66c9829a7ec6898d0216d33aec6ce97e6d408712b81130fced7a2f83078a2a25fb6ccf74 ee3a76ef72a4eb35cda2e35aef2d203fc37d2d5497725c5491fc2029f90f19973512c8ca94e560780075b41f8cd42aa5a2b43261a0008201f4fdbf34b768f0e033692725bd196ab644a5c4680102d5b665b7061097844c1a663bbf1be878a2991c98fecc4b67508d7fe91b50c0aa373b02a19040bf72e6dd84a54dd0385f35 4af7b9288f434a80e79982107b31272e902cdd8d5306da0d306bb9ed2986d3498373442927a5c774769daf503c30616f24001cb17caf8d14d426c9d768b2ced9286ff6b0d1a932056e25aed939e893f4d9dbbbcb5f9817c6d0b0c469f1a9f6e2af3c5046808dc130e18673ae7bb5ee973229bbcd78a193e0360c9d4729bc92 933a65866eaa926fd9d7031ff212f3c770dff6740640dadc6238d1fa2b44e979edf743f2ce2227491776ea376dd1f833d7d4099cc8914e92decda2cb2bc9c82987ddad25097e7db47c4c4237f879085866856c68079bb837c87af84429bee7052a7e4e1a609a235501ea40c921bd5ce7050bbfa2c8cabd184c109d14d9e359 5603efbbd39715fa6959290eddd302be9417190a47c8d1e6d7b05bbe50bdaab53d8164413d28c2f2b684640f5cc8768e564023892b9f573b37ed8b4a49a82de14b097ee47c0edd61a0694820cee6afb2b9b836a06a420833976dbc30f081cb44876ce406261794ba472afa4e42a57784052f19cf1e9d46605044235ee32394 9e6d09c83b087fcd55dcd7245b717f09b5b584fe9fcc06ea9f785b790f5efefc8fe8bdf26e1ace1c05033c4dae7d271738159ed7d8da8145da39d7a73c7b54424c52424a60746a738fd4ff0c4af80ee7976790c7d4af15d1bd9dff8b21e21ea965feeca5c241be2b5b8ef1715596e3a5492ee5f67fba7f2532513ec40dd18b 03656b3f75c5d8515c1d14d385043418ea8d34b54e19e68264ff8c3d3c94bb9e41a47e2689ff90ab1c8eebc4ef16753017766cfaa4b583e48f8f6649eeb4aaaf7ccf549f2bccd421c7ec43d0a3e58f5fcf41da55255c38dcafbab0550fd7bcc7988a49d4efa19e96f83460cf1078dce4574b6feace55e587282addad042a77 7ad11b356ffd95af1cdd79982839a3d9835c78cadde2b7911fa4b9d3d8fef1736cc4e946942f887b023118f9d510c391b54d26728d7a2ecc75fdbc3183671c97d0139691723f07096829c8d3b74e0ca32b5b1ba45d2d429f2b3c1f7408bbadf1109e6aad96a464dc16bdfeefa0b15286ade98d69ba0f664f19c2abf7b5947c 9db71aebb11ffa9d0471db01dfa4849a90ddcb5cdc833984c119a66b5cf4b43b193a4d061a9f8b95cda62837c2c6b54f8de5bdaf9e20bb2c31cae1e23ec3fab581ffcd25915fd2a54b61f5d316a3443a2d417f65f4b9baea2309f1b7d610c5c412048be7e47ef4e48dd21b3b1627e06d530b07f5bb21723b26f51d1a2646c8 834a6f5ec1e736dead4ad042a09bb6c117fad1a3605e77ce6204aab04610a3af8efcf6f015bc26a6a937b0bf790e751a5829112b26122059ccd4972fd902f44b7efd3abf42a8b837aa1c36b6e38ce39bac31d6e187b24809f2f65aea0f98f8bbe1c28d2e27852d80a307c3878a481f0a3c1850d92d7f68fdfaaf22f87b79c8 73cf9b85ff3de77c2d479d996533689c53374262a28a5e2b27d375490ca2ceaa6e5f6c1ad2a4b044591c243dadf5a7f04788cb4138f263710cb535d5d1d3bdcc58a2cc2b978000aabb4d82de04523952b02232b5686034641dab18ef3c9fb8fb72e32361d62679fc0b79b638df933f2683650c9129f349952ffa0339f30bb0 efb733ec3c0592417801dee756fcf0e0cafcbaf192a31ae4bd2c5a450d578364446aaeb6e6dc70d633b4aa814ca0dd22b134eaac110f8e97830c71a7668a6af257b1920e45b49e407e0e4edc260d5efd2e5af984a24a292474ddb97859dd52f0777df04a38fa8162484a0bb509326a2c69557053f667a718e74f6961923b77 d0bf2e78f70c0c054080dc950a656d7f66a191f36b9fdc39d1ca58bbb7775eb6a74dc7cc5aeecad4d5be08ced461a2df18c79e93a79eaa9a30e75c5430c4dcbd3c0df71184dffdc78aa6163611ec6415c3e75919bf9f61d1a48b1c8c1d694236703e7f512cd94b48f05b231de1b00077a2c764b2ded73c07c12c5f4f1e5cca 80cd905364cede8535d12b83677f886644aee1e500deb52302d9eab6b8da7040b0e38cc8691a201b970bef3a61affc8016e345c9295f60cf8496d39021e1c8998b83cc0d5ba59ce7d0d39537dd4aca4d8709f2687ec57e82f8cfbc8ed01efa020d27dc30da72995a7f1ef26aeb85dd1cbe5565d38d407bee29356516615c12 d451f2792018fb7fd733841c6844ac937f0100235c70b4e0cad08b1e0eb2559972df3a06d387cb172876c7c886af2fe8997ec131ec9d5f0054d10a6da33de7cefc93d28625fd0b31c0c51d87a07e3ff150cbed0aa53658e3d5ca68a9dbad920f3fbeb7a669fa44287d41f43e70239748e7b86cd7f56d8747c942e91f031216 9f13b0d6a0b48e156772b09198024c4899334e9bac261eb9d2a12baf043beb9146c0f317684ed59f5102e168c8ebc1457a426f761bbd0ae6732de783d77b1ede35edac6c9c806cdaec4d2d1f2b0e0989c92c63de9406ed690199a3a6c92eaf35328ece2afe2259e98da23976049eeeb8904715e0c30ddc9f83cf9e9330d57c 375a91df767405b685faffd062575fa32d28b488bb21a9e9dd64146c5302385c01b3b32fc557d731a7365d556c229e02dbeee87f16190ee17b1d6610e49ba9ce2da2790646a0f4135fb1c7d4050a58668704ce08a45454f6272d38412e43fbd141a5a2fae3d78267bbef02b79ff6052307c55c0c08e0dfb447be19944306be f250e552d87bdf34b06d7b9f5e15633b1a7c9a1c4ad5ae03d603f596a0f84a65c09c6bffa6284b6eac429799ac6e834ff8b2c749e04049b8c28c81966af8d9f8dc3b872a86754ee4fc2a6dc78b3d7ec8eedf585d54bbf8548314e65465ea1fe463f4788a7d26701b77c35e4f4ecbc8dfd5645313cba4ae9fd8708776104aa9 53c5ced171062cd919bf5430506de264b09359bb0d32c59484f369e05e402c86f9872c35a43aacfdede6619e16c206fc306e65b89f96ce9c591c64936d58ff343922e0650acbe34dce279d3f31dea0e7b467fef530816ca58264eaa8bf46576dc6a4c466d7603d033ff17b8a634ace8d0c12d742d1bceb2423b4802a5d9146 10e5f54c5bf9330950b24668f0727faab92b8da23923caba71b9d519c1df5867ec5696796d5c800cbd7dca45a3ee712087f07cb8320474783a2e8a89ce3bc5dc0fe83ec18c1d75695a0d13688ee8f59c7a6855ba80f4c8faf1051fa9511cdfd5bac786bd7226eef6c10aac0982fdd596934c2acceb044927b1f8b47eb0a730 eaba241abaddaecc1f565084df13ba16f70435a947b40cba85c8ff103d65829575a95b844709ea6c7cefa992e9984179ae4aee2b20ac658e4c45ac5c0d4109c7087545bb7ebd0856ba283e122286dea2f7e7a6de5e1974ca5c3ab3f3b36a3f1065f9fc6dd3c80c419762bcbfde2f2368b6714dc2d972ce96cd0001b5069df7 612f079f06115d0513916db8e31005001f81e7e45c8f9cf7376fb1073280aac3a28374f346c30d069e5e3227169b77be94de1fae88bd533a12fdd8b723ea665ed68eca303f8f7e67c704a4e754d569381322d18b2736999231b5a9146dd6777fa62fb92a61ddbfb8b5fac877de4d7b7a32f65cfee163e31790354ed262e66d f841b21f5af794026d03973d586cc48ec892fda6ed2195ad5994e179d72b63b3615e1c8b37c5b4a35d5b9114848fa9b256e1aee627d3d2555f6f1155fa56d641701e83e9d0a0dea236ebb1cd06ba5df6b3d180e75f3a5d5bab694b50565f8d94096f007cb435e5012d11d50ff06b11e4627c2a68942b8e22afcf1fda80213a 49609d7f37135d7be8dd9c07a5fe279d02d2a4942ec98ba46a6161f9adc3403b77a2dafe021ba37e0a0ad63dcb1aa6ab490b5d7a716c1ec09de7a9d4d06eaad43b64cfb40c8e834a2467d0ec68d441ee0a9a67d0c4ce2f6e1b973a3b8d35e9c9f21a4885fc671cb022360d426146426ce1b48f7013d98a4c4ba74cbc07468b de59944b07a91b3632b275e02b02b83f3d14678960165159c46a9a1919304814c608b4ddd708168181a5c4d6152eadf5fe8aa5a0ba3a4510dee18ebff1c1e2e222082b38378f7242f1a6635cc2e8dc10b6e8266df9da6d2b001990ad0559dc329f0623bc40925e4c075873ffecda33956174b95e5946dfb89d9c13c9791580 8517aba5b443d75a673d23e23aabe3ce8680a444047f106951bfd2a9c609bc4cade57d8d74872f89b31b98d54e2d382f16a56d8fed0583070443f386d564388495d48def25dcde0139cd2103b993ed7f2f0a42ebeef52e4e536fe0e77d4c7d2dd24979b3bc0dfb0c4fd798dbae91cd584f794eacae55b1693f98c24e807f32 82a17271c022e29e45c07f4a9343c6725466269c0b84c8fb7257630404df5fb9462ac1ca783b3c236d2b71aeea329950a0d596bf473d86eda8250258cff33b85a2d5fd39bb9576350f6da89756b9ad50f14a9209de8a4d5ddb1541c6d892a3c71d4769fb8668779a140fb2f7f3b9118304c403a3670c45bca56946ad2314d0 2345f6e8f6441f3d4fa11dcbdeb0cfde771d98b4a3c229c598c3930dce9bdac57de5c92d51e3dbc43ade500a4a4bc7ae95a377ae8789828660d5ce612b0a3fbd04cb47c8256d8c45cd883898719e04ddf66345d752a0d5807c08b69fe5aec2d62a1b03780c55b2d264f84205261e4042530a9d1cd83648b2f0fc092a1f3dd5 16d6d5ef68bf5959b1808646af474ac98eb91f1aa2a27c29b26cbf398b0543d161d6335ead1357f379e9be619f524416069f4fceb98bc9ae2b90b58bc2ae1cb4d783b961e15ae4914db5bce4b3661fb755d29d8be343c716213f9f08dfc1efe3cb5f8b6ead9f54512c9248798af5e963b56cf72fe0dd4cbd1f2875c2709c3b 5fdcb3a32f653a372373113ed1ad4e63e99dc9650a230b76caa23db7681bc2b8968bb436d734f7c52f7dbb5c407d6c78de709d020a7db6f5d87061e463c61dc847519241d3d83064ad3f4e276f6cd3786a66529acad1869f895ae59cd940b46a533fb77bf2fe875e86cf33dc6d153c486d9c3322b7b4e7534071ad001bcaac d3ecdda204ad751101606c2f8a87e0d78439d82e8ced891ff633f7d47fe7c1d36ea903f635c68d3a43a6ec347a5c3a53217ff9854755efb34b9c2c86b8578a4b433a2e44e326f21d697adc5c78fae3ff19b0974c5a18da8f12dab89d9d496c867036b7184c6ff88779eef5a7f6138cc73ff6c17c243c96883233a17a31dca2 e6dbbd5cfae9ebf98c80f81ca4e4ef04e37fadffab35506d9e406f24ac7904e9f8704ec591c5c117b5a2444952301202c43a62d4782672bab9114b3f340503e3b5211fb545ff86dcde7f2b58acfbb9866a40ae1bd6a6b0254c5830c70762da6ab4eb2bb2ccb1ca03392c6d0cd411f2b8827f7e06b9bf43ea2db210f7fe3c37 02e902a1c8b0cdd52e9d170df67a90b642af92c779570a61d203d40dd619095807cac1786696b28c7ab139150c7abac724fcdb6ce755d5e85a6b55798d41b8ae80d073bc484c694e7b6dba32453d515d5807606d460303b065bf316c06ba6ce5d8fc13ad261028620ae820001c9f5288a3d9669dd2b630d789083eefbbccca d7034813255e0658200d73f2e773934e66c52f2dcb56e4a8051bf67e5018fe7743087410c5bc3a55e8af500f10de3c88a43a18f5f7247652df8b028e4f2cd63ca29e638c11cbe5d479d3a907b17d1b88f5b8e89f1471421b74e3740e76a374d5f5a9fd81078d4d8aa385f5c6069bf62feb6e077c039076baae312feeb68b0f e5929ab8547f064a2de9fd89c82be2ca99d83e8f7e344d9fb3b74111ec9c2ca79ef5430dcf3d07fd591f59a84c679b0b0c0f4245770bfc1b94c985d26a208f1f7386868c1d244f6399a859583db75106dce52efb8b0c4d1e6824cf11b13f6b82cce7256d444801484365b00c3076e1f7d0b913616c5db904f66ecfebac4211 dfe3111e1d1826e3f2fa44e3607b839c14ed218810587b6dd483fdbb3395452eb6243acc612b2bf43289ce69e86c650cd5e5a0f96a265c2617b2d2d6ec2759dc4ae6e32c94978932671c1e0d72aaeae835c447912f66a39925da78528b43d567f9ba003bd952e2de86df8660274919c4c1f2ea9c2967d30d8326a838df881d 35adbe41ac3b1680c0fde52c3f1c1e2d6d568f7822baeeb16e1f2b959dc637e0194e7dfb1cacf3018b39d0d2c5e954a58cfd002cdbf390d1bf281df3eaba5fd82b542d6faaf3664a89523a5d0e95d7fdf91a1999822094b0666a6e91be0eb2236a85e6ec4dc8cb561984eeb99e52ad0dafcad0acfccbfd62af62150c749438 8a77e8ef10a09c5c88c511e5e3d25d0f54e53f100c87810f3a9d50bc6a04368e024c896e2ab00ef625c5754801705b9c8abd0e1d2dbe0d5de2e9c3c2281781ce2f2c917f424ed45168e81e639491e952cd670226059fa5e248f9ba9d8d683d9cb975fc09d8a50c89aa00ea7755eac81a11320cf74eae634cf3866dd1b3673c 9a58c91e9e8b94581f7628d2ae0f97485b590b5f3ebd7c268044ba7f8f9b07fe50989081f1ac50e6ba5d02577601bfea699ac59432de6e125001de032169ddbb10854b0f90f55d3b3a85e461c7944c5ffa1a3250f71f3c535cc142cd16c4fc8c9c1de0761f87cb840136719e63b342011d02486b75bf81997f9e7849bebfa8 71370b7414491cc16f38d5d4eaedc34047d3ee80256aea589585f063d056eb62a6849eb56b488d0d646dc22bed4d316bafb5428d5049bf5400a7a1b69c463a80ee16906eff9beabc7bae61a7edcffdaf1a57fe269155f7a7113bdb3cf70a5c8c8509d8bd1e3c5126ed4e1a4853a25939b01a03673a4275571e6db4dfff36ca 6ea232bff15e576bf012b5a946a81e48bbff414a94db7968a1f0d4bf163873c842cfaaf83554775fbd7428d8286d97fc546e899c88a16bbcd93bcb5b78939539b0cafc14b68344e42c70c182804bc63fb0eb6ef54bb5f316d45155e20beaa7fd4684ce238004cdb5d23adc7c2e618667e88fee3c5d7a1fa67deb9fd654ef75 479056d32a7bddefc6332b1d430b862cbb02757ab5d9eb079e053d509eff800232c195e8e3518cf9e2dd4102f59fa55b2686b0d7d39adf9ac37f55bf9882184293c3a216730d26426986ce6633ec5fa6820fb8243dc46fae0deda0580864045aebc5b25a3747c43bb9d8f7374e4ff01593985121efcdc51dad1fad55f8a750 93859cc5b08f83dfd3bb4990011db4712420c2d941dee159227656e5e54ef1d33320554ab70ec8b70f73ff31f84f50ae38fcfbf4a7957290d21d5232a3e230ca7453125cf6f799ab62312a12ed8444e837a854374b33d43904f5cb9f4163d716fcd8fc025200d4388fcc4075b166273ece9bd55699bfbf1dfb9afb47a17797 75e6ed5648874afac0f5199bb65472bbc0492863a4d2df2b9d7b0c91ad8509382f6eb68b236b8127acf3c37b3b3e2119bfb5766591e152d794b3ebd3f295989836ee729141047139efbc409fc46aaecf32bda5692dd28664b0636f89be326b72b1a79dcec126fafea7150b99df8d57006cc11d29982fb55dd7ce5972da22f8 baff4c43f94f0e4616a2929e3849c8425ae6dc950a626d6137da8985f4692f61b5c37a0640b09e841db4f86ac7fd66d5af3a95259125bae1999d9fa5fb21eeac7926a7f6fc9940b19b0f81c8a94e26e8677decc980c4b7f28016a31153b745eec51a8661266d37a09f9c64255649e64090856cdac677a66647a9ebf427dd1d 222c8150a86b8f7d12ec27b5a119ba6ffc942b0f34623875d640e79535ba6fdc5f9e936549e949ab53323ea863afdff2911a91d1bde89ee15da1a752738a7744e9aba6ecf3ac402fecb52e2851eb82bacbb125c2dfa5f2797ed1b15aa6f5bcbc2686c7c7ee3376b9d7645399cd2fa28a4c7b6d68c043b8241e55a75bd99a23 2109044ebe7796199b97309d62c6b677d78d98e982adde52016d1dd3f232d57f0cf66325dbf2f338a27530d01ddb87865a792c827d7ea48b07f7d35a00a236c87f97ec486f7c1b518969d7498009f8a6ac1dcf052c167697aecbc1e35758694df075f85e5d07a08c2a0c3b0785dd39b31faf36b7902eb150d1b4c0f13af878 605995bddc766dbb1776381eebec65924a450b3965110753df533d38a414c1af4e58825cd6bdb803c4dcb49617811fd9274d0ca8b3a10efc1635fa81b8d4ce892f321d7e5eacf5f26e7c07fe8ff9daf3cc7c33e1df1c3f795bd427a977f5bbe6ae6e001852922ff4a30098c38aa7b9b9b0fc5862dbfeae46295a8da3eebd0f 0c372039bdec907bf3407146b485469fa08fc11c2619360cad71d6dede0f8b49fc7bf3fc6a158252a228ce6930cdfc0fc07d18dc4cdc4cfdc7854bac54e0c2949fe16f2736e9005538bdaad95ff396d3969b6d5a2ad0c99ee9a4a6eb5f548e659a766f69b6395852719629cc135a01c30f55002efcff8091a2477f752c3365 771790d5b7ef5a9bdb5c88096f497563166a3969190db41181098e8dde06b54cbc40842aa08a6947071a49c3d02f4655d49b4fb3a3f164858c15cf813f800c0def66135e1d15edd4314f75949db00b28bcb41428a3e1a58e8edefee9d21774c336323bea90826e7bf07fc0478e5f4a6500660b95379474543ff2d482a68276 f38710ee5407ccc3aaa27d21c28ed3f60879e14723060ac34e91568de52d8f34baf046f2bea349471fd3eaa6cd12e377e37bb7fc103058169df4f595f3ca6b15e343f59437770ccc36ec393debf2defb3ac1846eeb9532e862e0acd98b36605bc535b88a5e5e3b6b6e86f95b8ba093c68bab5fe5588f1c3edfc51e55b512e4 a3f1a61b4cb72ae51494802cabbcdc1fcbee06ee21b64c35045d9fed344fa9facc0a539b5148d7dd255771c76f4892f1a398811404730e7dea2717760943c78ab7975a422507b7e2bcbf2de6bd7756d098942a1e4bf2185f74af7febf2e29062f05deb585f0ef1d57bd10a5eef0e56ff2804ede0576269ce93ad23d2c501e0 4e5644847a026dce845c5f38ec0c155b67bb0df4e672706d08b35c8578485809c06526464e1d7575394386c2b77583fd56851ddf67e0ffafba970256907d069bc545863e2e847e9a52ba27fa0c60838b92b11883363d8aa8bdd4be8edef5f1c074d4a6fb068101805b4318a586a9409664a48a49639d1bb19083e77931ff92 bd724a761b5300ba8332b8412248296f3b89045603988c1162fc0d917f614c6ef84112554f8bae7ae6dc9dc73193c0dfe72d77040c1e632686eb8d87071f3bdb3d2c72c97ef1e8874e657bc36f9ac3551ea37a56827bdc66809d5fcee7cf651e4e65ec1889723f803adb69930eb509d788003c63fb158c764db263778f7152 3ce577e8ae531258b5a33886624205fed4f56e3ef9d3c994298edcd2d59a3633aa63f831e99ee4e20dc4735eb17aeae03e31cf9b35ccb512035bbde359a1d123752fad616a095e2fb1a246755c699e073fd33a77d1e391a765639eacb04a27ec5e70523a296c6f9127aab3b380aaee76af3c9c8ca147a00b860fd235839ebf cb9105dacd64668f62247562457053617ec79486ed91fad906f38147f988b84caedeb9c6acbd6575ce2971053b79bec5c7ddc1c0a05e1e42e6ec0e4dbd180cc00e6b6aa8c458a2fb0787542c674580cf4a70b88f30af08005eb3d4ebebefc88e4af65b3cd9fbf680d770b79e150eebd0a41941e3f01535dee3e8244e4a50a0 0b993973be46564bb69f73c229b60e72aa023826515083bb65a70dfbc8f246320c97a9bcf123765499d116ef7281eeacdd55ff71f0831be417925d9656b545d8e56de71b656342f1b3100e9099dfb4394ee7235e9246e81ed09558555ffae7f7a2cc47ecf963e9ad959d2e2c95bcb4c5bebcf3018d505f697cec50acd2cf6c b43e7b60314d35a2c14b025d66b8a68b1de9ec53f72a00ac8e7010dce365eb9bf8705c92f4f8fddf91d56c4bffbf8f342679bc3059df5df6e919e3443f3597f60189c1f9b1a47cf4266b48f6d8b0cbccf9347682ef3d85651b235b2cbff0db7153bfbc2cf59094c5e682a83cac5d58cab9e2f4e9d30c5bd8c92d5f874131b5 1d273a3b6f57c210291bf0294f0f2016b80871381ae47ec95d63bdb757b28a14e3cc9431747879791ab83e7ee5ecd0d226f7b5f42079633b42f31d007ea2fe4728f353530434eae7f5f03f1ea03ff081768a4dfe815783d44a9662322f0fbf2e21b6ab07c6af457848d49e37783bcf4d4ee852d603eb60cf8b520f5f32deaf 8934badd620d40fc52fe047275fc4468571c084f5910e1f5f88b1e1d50d03f7b13b2579a046c0b0d6f03544a81ef4559e15c740854e95fbc1bcf1e6d2696f12f6b7146c82f77e9ae591c9b9252cefa2d6d534cae5e16621698f441e0463e70705b982fffb7fc23d39469a3b213c3479f5f9263f68c36af3c58fba33bb1c0d9 d2c59e3037c787dc2210548ee9749a42af9d34b470f53eca9f4d614b87df34d5bf4cd5e88c19815d7049c12b2c8a1ac3d6d82503218aa54b71550602ddc6aac54c7558c79650d2a15cad3ebc6a2f9d6288f8b63bb3ae1c83c9f24f8a50b15181ea9fd71fd34bb21c11e668c0ac538bf610156268a779f1a750c6d962788900 504d6a88f8d1457c3d23dff4b7c7dc4ffd29b1ad888377539f41bba722fb39427e94a1a53c1c50d63bde4740097cc6f835226dbb52af3f82bc614d2ab4febbf8b138609e8bb957446d75d5cc9132fbcb193172bf20fdf15bd0276dfb957dcdcd495a9ea845122ad8416372632ea58ee4c98c61ee314873a9cbf6a90a6d9fd3 f0b3d951e7818ca95888142b926b49fe6fe30cd86c176155ef7e078259a8b765b9cb9858ba7af634cd66e5a7194468ef8b9bd22de3e83855760fa9d73d29bfae16352cbe2bf4546d0aa5a303d9b621a637d380b556f7d8b671675626f35a4d814ddc8d636cd80ec82d0587b70923b9cd0be206d6498de7ede78a407f66379f c5a1a21ffcc003671d2966f6d88329e2641be547e9f86d36eae5da176532792f2e78733262956950b59025d82550b217e68a7ca0904708495e1f1a8500b85afb12fdb3441e282ff674b11f10b9d95937f6a5216af24c21bb9e3ead9d36910092c9db7c11be221331da36c6435406e6f579945a5a11ae59c67460b17d197e49 c70ac5f20eb8225e50de3b9327c04c94c4a1b0bca1913429df6740d7193a24232289a807d815f1530442f7cf7975c848354128b85ee05b4cdb538268649adb30af9105e58e98bddd4047a3e39032ee1749828ff1811691ae5e83aaa0ee912927dbfcd857366ce53647e67ccd7e6db5a8f02664be0500a8d04072f8e125c615 81dfa16c04fd17bfe43a40042d8fa7d63da86c60302c17a51c7d4585f3f54abe6aee02bf03f8d1b9edc1a3e07f4d1101d6464dbc099b09837e6eefd90a52e36678dfce40f58feabbbd9e5e71747abd6bd9dff1de4a31e1ca6d3768285db207a0e61c635f5bc404ebb89d19c01afa54bee15049035b40d2aabfd9c6e942cd06 559507ecbf5bbfff1a9ab8171f0991f434fc4dcd20b6ca6ebf1cfa6fce43ad5f51b30aa67b88986f3090c636fda5c7555a25f4f30a18c7d310dba00a34fa6dee95e17b97687dce089f929df1e7ed3581c38ad304df967148291783f91904085b4707d56f761a6518c5c7312e55aa34b874e792d8950ac99c760aa08d601724 b1522fe0c72980b05986affd302f757b37e0a176c05b356e8ce0881584595a5710146bf39a92d43ee8f1774e795cadb6823a70e090609f40a6afd3b3c41699b36f0717154b6d90878547ecf0223a17e250fb729d43cd48f0d57b05f6206e618357589c26259e6da00804d9e1d931010bb59b7ecf9337592b79d9a41b21fb85 92659d537e1a38f9b0716b8a53d9a7b7c8591db7e2bc85b47a3fb704d27fe6f369c34c363737332f48d0b3442bbb27dd083799b791145dbdf33490ffd9251ecaa1239ce5376e7d7faf69cc6091685fb4576649cf27743e25e451df78b850e6066d727b015ef813a685e49b0749dea9e07c506ef37a6139500550cd52967d0c 179dc78da3c5e06bc884d93e21d3c7da599f78b779a9ed1a87673216ee02165aa4a0cd8ff637d229a96177affc8b39b73bdd04f953fe354bf97da3edcf922ae8c99fff0b535e79722ed84e1970834834d0f81952fdc90f308402e514e25b67a5bd7d8f89e41a1d2b5e6d50517f98bd2b6051609d21fedced4667a11b331264 8f2d369939775a283118249f3ac136114642b0a3003738570d9e6d820e84b32f41aa07bb689e3a2e9b8b71f5f16e7ff5bfe5d7cef61af8d4e1f66ac8fd4ebb15b81667a6777fd2c65911970f47547eca714e07379c0eebc77f902cf1d7a8fb26d918281f9ffda2e9f3fcf13c4692b856b653fb96d8db4cb0520ab224f650f6 b54df1bf2361a7008d2f9b398426458fc7d554b21cc49a21b679b6814784698bb5c9002a093910389839620bc24c57dccdd8e5673d05c5a9cd91c15690b8b6d0a4ad689ebb091bf16a19a1198a710843b85548e601315ff75737a353dcd3578ea91a9165d9310175a769ea6bf1188f044586a4751340aeb95774eddbfb9271 5cd1e13ac0c25ba33e81834d25b4eba8766364ca2c02d757e2eb93830c57f24fd15aeac44d5e4e01e99ca27eef2883a952f5c52bed754012b3ec587d4db775e6444370ca98376418827a19aae7d113cab6689da95a0e4447bb3496510cec640083bc7884c08750bdadd254e6910ec02fdb3ddf07f0fc8e61e227030c9dd6be c917684bd7f20cf8dcf79ee2c84c4d3affd15559e9e7adc2f3363fdc9840d01ea65dc2c7a1a677a21f723df4d2b63dd8cb1badf58f63c1dd590fab21a0107babe7c06270e247353615b4fb8cbae6f6f4d68d29b8e8ea5eaf6cd0283563bc5da66df1cce125a62f02848cf6fe379f33d11250b30f4ae202abba92519b91b223 851bb68fa5363aa745f76ec3bae67661d21c604014f10db45049781c2f1fcaa906910b973c938c2c799876613444a0264a5f3309288a47b1f2df72e90f519860d78b1c7a021b63936ccb9723ae4172c10264861c2e3e842663fe623457143375cbfd670739f2f01f4e9332e139a78e65036e414e9a0856027b14fa015c3029 14cd58d042240dfc711759fffc0f7e0af71294012247a3f827e494a4ade47cf78de8561158a3318ae38753cd6ecf82777ed916949684f63d0c7d56fb3d5fa891cae1cc2417fbe734954b52d7b1baa1510c943997ca78c8e5bba26a5e6c2ecd5e204647377991f2bad8234cf28f71c30e8b0cb51354b4461a99737cf4122988 25ff9706b1865a997456e22cdc981136d641207d56b7ab203f15a2b48fc6ad499ce3529ff67319b64fc87d5e1ed9ea7f359d0446fb34da085b3fce1749c56498ac103019cf7e06ce15aaf9e9833047a8d06a0b9792a821ea0e6bf23f4cd71072795d9fa50bd3a343f1a01fcf313741ff1ce9e485561a124b60979207d83abc 64e33258b8a4499d1fb2e9fe64cc9d451ea5c9883dbb90d62e1d37c5cdd3fb5c7f3769a3beaa44e81540b4223835ec1513e40f6bca362d8e370766c2c09b3f65bc908b2242a83b532a42d5e2be1b88b1bdf2f2ebba0c6c00b041ece7c628b424b4129e3c7ecf1686fe7df96e8069eba24806d225b487057ca45c51ed184542 157e396ee15896d3218715bff7a7d3c6b7225281fe0731799f85930c52eca4ff4d52033398143df84ac8dbdda872379074d34bdd818043485c97005ef1291e36d6cc0a0247e03e7ea59397ede235f9e5a667661ce2f89391a68937d18dd1248b81c45e4427433d1cef0500636b83c8a82becb3d62a9d750742a91817039387 3cb3a317188a7d875a0ac68b1e3dceedf2c24f34a73b4f8ec0a593414e740aa05f92260fe3936eb0bcf95d2c20b8d186f2740d8d80084b43130483cdfd5e1fd72fff02ade4021e7044fc567ac7484ae84be004137ad4370f68b7015a115c4c74638b147384115429045904b90dce5e0e1126eead8a7e3aa07e88686fa61ff3 46303a9cf00cc7ed566cd9eb55587bca1363faa6d936aec23fb900df32b485943775df0d3dacd78abce4336b85a6a6d3c34a2dfe82c98eebd8cfa48683417b87d87fc6cb7490da544c002eb61d5f8c9394f64a39c33b6fc32c5c68d533569654c3aa7750b76e42dbb58e9315577c1af2eb97b04a060b953f4274d59e2269ff fa486d3fe9fe292e767f2c32c35b69d62e6905ba4511cc4997865d372006d2f47b13e1d00ae9e21881c5c35ac7744ff4b6155f44f683e15ce7e94aa45ed01c0d93fef9b413a3686ba410dd1997a13a8b6acb56f98501be1250743e102936cd53f0b0ca4aac60c8e45b396377cc1ae9d429787a2bb4e58946cd27c44676f7be c6712ca15771851a335bd1907454f1aa48fcb9e144dc108d25a2a0a29da3b6889dc243e58cf4f0effea3bfd9390e9ef435ca0bde273117c7067a4e3139e0bb8a7a42398383e82a9158668d8ae9b0f853d403388533688ede1d4e39323095b62193fee792fba05595f89d5e885fa854421430486d068efd99a3019f903b631f ac37f5939b9cc09e9fb55e8770248a8e171a4927c55c0550c954bf29fdcfe104a4d8c5f4b8cee2c181208492b54a7b8e9d9c1851077ce831a3809c34db39ffaa95e7f268a7d1d8b00a3655a9d8bd0795b6efbd2673e5ffab8bd809cff4ab0cea8a46bd6d378a4d678ad8195dff91bff775dcec4907e115381056342ba78e1f 5ba0b768349e2af84b9df227085f0b0976dedb08cf3fd45c54af2b7fee33eb56e4170c7485ffe29b05b08ff1f5a502c86fe044e05ab61522ecccadbdda74d2e9577b9384f41c933756e6789305929756e8523c13ffdfcc6553718357506f1cb5e0bfa99b95e4afdf622ba483391d96e9ff449b297613b5be941b6e2e10bc00 7ce716000a5f0b848fc8d0da6b3c3943eb1577aed337d6c1bc090ea7af28b703123b338db4ae1bc9ca0c49029bee08ce3f2ab94e225fba22ce399bc15e8951e3c889ac4a77486466fa1e109035e5eb9c0b478d705011653cd7619bb47cd2319ee29a82a4e624d1f95e09c134d78e1d9a2a267653f2aace82066f27172d26bd 9247e2fdb867488d4bdd55bc354ca0ac96e1639b5de0626620aea95739fca1e6739e4c60f8db618b01235562f79aa3b11875d5e6a7edebeca38051670607f11e49fb82a7568bbb280618740dedd55a79fee1036482b326934c0a5e16a1ab4701926467b81485caf16f0a8cb9c6678ed81e8638cbfa410aefbedcd3d18c3d4d c07eb131e6f35cfc86f9d0157a677d0c2d7e3b4abe3a59e07893817b939c734963c3e6abc86003b6383c6c5ac4f2462f87fb69bddac42c0e1f0845d24b1b909fbe03a93a4ea55c923acd4238a6aa20a384d300eb44a4e33c5867c3f82855b2621108419dcfc5845730d99c031e29d2ec3999f24564c9f7fdb687ee7f7469d2 7e8c06d3f5b99f3fba2b431e1b016f7c0777b1d7cb209374e54a1e9ebadb0fe0405335bdf6f0ab285d1b3d6bf53a9fcd2e6748e5f76ca45a49c2ab5dd68edc59cd42f38f28427b01a3a2a3df74a442be1bcf7bcba6af7b539b1d148e6c75b5c35c4d7483c1209a753c510709be09dcddfd3dedc18cb976fa5389cc960211f8 7e2dd57e86fd0158b2a0822d81f32ab0e6be3aba720ad374bfa454577b44cc8c9d96b2d5dfc95fbfb528d7e76a60486d33ff9afa2f16f7b4c09c69377adfb9863b6cb5f75f00fea2648de40dbd89e46a59d50a522e8cf5eaedb1946d4344b00430603ac426817e2b376acd0974b3c37f65230b8b5d9eb500ff8e52610b7c2f b3097e380fe2752ec948b46b323fa0ab178f34bcdb6c471c8cefb5635564d5d7a8d9b869a56ee5e7f97d2e240d94b689204cd44ab2aa067a7a4b09e71bc475d3edce56f03356937ec1ffaa4eda180da13396859c5c85a0f71313ed8d4858ca9394d4df8d2d9b95fb2be76b8a3d08d662aaad760f2730efc2f6782a6234bec7 900b93ef744f05dc53021c01b456ab653cccd32528a76a974a24d93a67de276b0c7a6eadb306a420fb5c14db4a19671b6256e2f1239457c5b9808fcff5ac7ff494f457ee0a04788256a4f079affd0bd880ffcfc98fa12197c9fa128500ad5a416d7888297d5348cad355511b44f9a4ba1f2fda06b8f0e5e53715ca8230f740 b12c9c4ce34deea8dd6e10093dba924d182e27d87e24e85f2da026d332651afda0afc7ef42cfeafa0aac976fa04ea29eeaf4243cde03edfc0bbfb10259ca2005d1ffe7af6b4b9b9f271c805bedb30c9016e8129a013b662240de6a9b3c64305cd8fc2dfa746c5a6a836714f04ad67287b30a21d53d484d44d263ff9d697ede 9d0250ced442ae69c1af297cac6c5a67c24f5659e4ebb64af3297e481ce55a19016d510aa5bdf6fd8f27fb8002683d3d2e0c73a4caa3b9a71c35a1798034126c1760ef65c20ff02b5f971d4c843c327424fc9ed7e714439c17f339a1b7486330b3446f4ddb020714129780f88d0365509c481ca8474fe8552630ef36146556 e1f3ca751363169d50190b0db124e2230b46e42475bddd584435f0fca6aa65533841253a9ee250c378ac22f56e1eedbeaf6788f82ce806bfa2c3208da57be3eec807ffb8e86a1cdd83f95b8812c07ebb36f2fcf3641d9c3f3ad1d7c604ba85891fbd97063dcc52164488e9aaae40821bbddcb6512980d01be2a8197a67e264 dbfc76642eb69909da9c0d32a2a08de62a5fe165be73d5811d0f0172e1c3d95cd1bcf7f006b03bdb011d59f115a1b03e9e510a2be83e0c303e78085c6399f73000340810da2eed9b889c5e7f44fd479cd7a5cba4f1d1a8df20fc31d73d13f88ca5ced625e0b76d70461e39786ac20680790ea9e836c6082eff9b15b6540878 f7ba0dd194cc93818013214156ac9278fba4d25c276d413834e2c077c5ffd45f0367e6099fb76618c276daa565ff8b47d70725dd1d612733b23a244f315a96548281df0df7c1a6141713107fd777f3150d4012eec5f8dd4442f95c6788c3fcad4b1d75c6a46eab03c412d5194b4e90f9a6607a04577824f5495d359761878a b1b0da9fb29884579f2cb4708ea65ca4601c7d8063975caa43e18f9c28f9daf31f92e2536fde729b4a620a786339f9cab5117d38e7d08d035c01a8a652880b776d64e61bc1abeffe61992da6593016aa7e8d9c42c7f126e574048a653d12a9300b0864ad905eb22a86bc81235836882b113b75d44a95b1f6ee0084172ad703 6b7c2b1a5b8d79d1854519692a15705979f3492e2ba0638f6056b134386af0443610871f3bdae7fd150d394c4315e8bbe54578e91172352541fc1bb6b7219d19cc4c17d611c9c7ac1f6f5bc7022debde0f953a235f4d3901a9d800a00cee7d2879d7b8517c0d8e77f5e03918afb64895e67ee07aa92ffb4d0fa06ef55ab615 681ae8983607c1c26aa24e2d32f9cc3cbef9a442010962f13447b5f451ccf6517bda24a53ae49e391df43eb21a55a21736074518cc79b9e67cc0f955274eeb5043beec6eb65bab1a452b28cd0eadc43b5d8f019acf3e458303dd62f4f78f3eaea23012866ca9da905a6441a09a7ccc86707fbdcaa77dee19d0d5db9643dead e7e829e24d1095e07848b4316309a1e0e7e1004135cc5119b19fe6a739407fd6782c36b2b082f150c617dcc453ebfee07e1dfb8dc1105237405f89b41a81f461cf03dfb5d9d13db21757878642c4373b946f052f7c094ada92115c9fcc25a374f42bb1fe7830f1909b78d9abb2461f84280f2ccc6dac98a0c64862b6353e7c e2354ef01fe572059d6ae25af308e20cd36508345411e41aace28e4fa8e02edea172dc99c7a200048a7de4dddef619fd90f4dbf7255b7fe188794e42d7cdb8eea28c0d886a1435ece7e4681adbc8aafd7c4250865c5550c06fbe2db519fa9ae8d4f455df4660c9506e60c6baebdc61bcff8e249a26c495420901e548b7d2fb f978741c3fdb26636120b8bc93677814e55a871a428d81fc6ac23ee71edb85739a92c20a86c84d6fbfeabd86462fb3b249440ea7c0517e230d567eaea7fc73ae495843221ebf44d2ee5ace164c8d09749227d1e09669e4addb6750479ca45dab1fafaa0e961f11a0eae6fdfb8edead318a477c3b480d6e642ca3c3e2927253 6b304d374f66cfb416ff4baf24217d011a5e57638103db4a466baa95ff8aad9650931fd179c3f9c80a1b57b6a080ae49b110a5c1b4733381615a85efb8dac06b2f770572c3d1826ee972f43387694d3ab4ac73231d97ffe98f01bf83ff20aa623ce57ff5a8aa1b4203d6992761bcd10322f9bd8ed075c94ecffe6d10bb1934 05fb314a363280de060657b19a72b9e1869b97b999ceb2dee4aac63485fe96b5b550db2e98c0a1d0511e741a12becfe5d59e968f7833c1eba2ab4f0111d19025ec745dfde1d18803de29f4ca4810b0c68de3d57f174ef5b9f648b507e0e0e1fbe4121f0b7ca4116f037bad6091f9a91cc64c8ee02caad6e4634488e4288c83 f34dc8ddb91a2a1f01a49f4e48de607f8375ec953d5ee22e28c9f3aa8e4f6074254c770bcc2f6739c24d30455bc9dce6f87084af762acfc547b5e56d88f0b97a22c777baaebb6a9eb1c3d42420da473f8dc0ece39b20484125b0d62a27982f9616aa74dfb89ad704689e901d5c84f07c8951b2c4b869dba939e99cec5cdf45 3a97246c6255a8f349f07a669c66c0013b105a0f58ab84e5e014712c7d91425d61a3c15ab358686ffbff9797e020fd43fc6141298910010cae25e8fdd0d574a55f699ec3a4015d9baaeb12df1fbbab16361eb92479dd3dc22810827151eec3174c22a94c8841b94446b74c22fd1932535c7c7e1107d6e1a1bba0ea8155dc41 f6e2c725f98669de5569f33514b6528a61a534d22d7ceb6babb2f824771862299cf6369c2847f88aee2a76417bf51d81ca6a390663501b9215b4861a644efad6e15e3ce4dea623e8bd06c220f372cc7d836beb72bbda20288afce2ed884e9178fd9995e528a38c0293690054f0047c629b5dfe85baf65be877a1ef133e7bd1 1204ac206c8dbccb7d3e55113b24872f9034257cfa15fcc7ece44b821b8c74288c147c37bdf27a595e65f2037416bf9a78a245c93c4c7c8aa9444c20ef3021ad783fe5835889c5fe99c3e1856e58902655571432d49f43bccb0440498d8eb41fc07b9fcdfa44a2fcf5d3327109287f816285140c471308cc4499adc95977a8 71f8fbe0d43e3c1bd9ffea8d68695c1cb83673c7d4710829394d0e0fecd1016f1145ed219f60411cc2bdd628f72f60aaaec58187032dbb6543b3a138d45c5cdc955abb05c1fecfeed4011168a0c93fdb2d454c66a25a81fab137e70ec07787dcc132144c53a15cf0909bf10134ba9205a65545b441f1280239409d3bc95f1b 0251d408e32b36a1d5f146928dce90c91f815d3ff79bf3a6e53726122e8c2b2d30e7092fb07e1a736b51cf13fde2a940154fc9e67568c7dda81c1d49072b4987af38584dee02328ad9476876ac02a1637dbf13fa61596588f25f20c08dc982ce453cf27b40bce8ecbb9a064da740f5c75497ac7e915d0d90904fc4dd614af5 5e66151efeb466b98423ff03fe3a8472c9a6a09965a81c831ca8ed875489a729c2d54b0d496d83cd009f9cc027eb116a865020e2159909a3210c0c6f5c04a5418e53f49ad35fa915e3bf11361e1808b22ab4ad96cb70771e9894f2b2853be3af22df08168e67fddd7abddce1ee95cb7e9e2bd075ecafcc4acb6ca79aacb2de df98ce002babddb84b832197f0e4592c0c24bc97477416885713d49c5e54bd834db02d4977d8287f1e268d765e61c41b64f8f32bd9b961c72963a226d0bcd1f412f35b140bc547de69d7cb48019b9d939d9bee291693a4b1d787b12b4d8607ecb54c1109ba0d3b2579d5a4eb71c43859e996e87f8f62f03a4fdca481e1597d 18d91245aa1102629c3a87268f2c526c5281f8d8a5f1fb4896a55232319791654bea0c5dadfa2cf56b1a9cd344d3225759f778e86c03a19fa1bb9272d99d7e4ce5254d321379f6febb97619eda6493e50a932db686e48a2c08415f1039baa1c62a46b960c078e7ee5e1a928578e491d622abd370d75aeb126e60667b8c2a4e 8f6f079742d805aaac642341612d5a4da0056770b0d241f85bcbe26946363b1d0654fae73e66dd77d19e4c616b3a5b2fff244e6de6ec051bea09444c83b691e3933bf18e606193b242e5f26a53fde3621e5ff648ed9b2e133315fa72bfe9a2145de0911d277ce0ba118f32af9b3e3981da06d88ebfd936d675d35c47f09d69 1f68bdc2b864f41cf16680a60613839d9110fa6d3cad642242577c17f64ec3ccde2f532fe397e6299d0ffc4e4c82c82ed6ac813fc8afdec88302a0fa6c6b9dbd0a5bb5fc129686e8c9d60d3c8c024bfa8a82d0b70f2cb541cf08f3205d991129f26354596f09d84b81af4d11a4311fca55782cc7ab91c43570a9f93f910878 9ed61a3ad1916d48c84241c8b939fa5749f57c13f67e46c2b1f6990deb284f22988ed3ff87f3a4893319b8a1e124b704171602db712c6531b3c7d6e573a9d8825fc78a42acfd014f87302515bcc12b98fea057c668620e4089b85c9efda576f029cce97ba5709191e2a4850235ca0a7f76e6565c375740771bc3556cf654c7 2681550517c0daaa38193efd335baadb8d74945507b1c205af82e3828c0e49636abaddf24554634b268717a20b4a0ee9153fd69243e470cb86f82e327a6b4c10576fba94a720650bec7491e6d8ab927d78eb9724c3bb0e57c2f7635064cefd39be742f14572d15eb3c071db19b21c395666303e86b74f2ba59d314e4b1a78a f52250ae13fd9947c38322ef9eb2545a518bdd6246f3923a03133fadcb08bd3ab2f54f8f65cee6bb23b072f8637e63d075d55fd70c2013bc6c7baae4da712e71fa07ea68b32b58e832e9bc8e3f8cc1d562552fb916f35e8a47d0d8f33acfd33a93e0949a4d8087413f837a672c84b9daa42154fbad948b310559bac30aa416 348091e77490c006ffd37deab8144f53738d4005b73b532a0f9f181b6cbf8844b01f0c86bd2f4281187bb4186c2a4425d9255aaccc99cb9586a9564e11b4be5cdfe521e581b23c02319ea62ff36da19bc72ef3245fb76da03b3f570d8b86187659c05658077b53a7aa4c4b36cbe4ceccb7a45c031e8104cb489b4e2f8e434e e0a7e5088a33b9b95c58fc59e94ffabdf1428db844cfadc0de0c70f87df940694053347db6f55e330a28dbe62ad81c4f134b0be88454ef7fde8b83a50fe0697a6ae22a2008d13126cfb25bcd52bf0f4d66ce2090fcb74227d7747a798b52aabcc30672436430cd296a861db99271792d196740bf3f40ffa32095a68f20d3e2 d6ae11e58d4492914212b71a9fd24a2c43aeaecb2e38811029681691b7d30555d7c2acef4889768d0ae02d2c640567553ad3c8370dc471091278cdb8f4fdf83441a69c885ae7c2df863a23a3c8a8ab3f324a3f6b0413790114ee923ac731335c71075bbec27c9cecb5ed78d50e4445ca13aa222fa5f3f57b1f37ea9558a93b 03c6b217bfc62c6cf642f3473352377865cd47fe599f79062bdbc5a1ce07081b0742ff5a918a3b976e303ea68e60098aba208b6932a7415d833316b42fc552643262e8dacda5cb399796ac53d321b7c1ff5b7d536025924d7912b776e33de08f747ff7d938aad9f7b9c8e222f2dfc36a9935fd9776503d3255704be2f87681 5a1800afb6e0e088a881fdcb8fa06519b31f1882c75bc12edfe8ee10a682ccccabf1b7590f64b8b2364fa2f770ef0a9a3cb22202989bc412c0f0b16ee45b059ce22568d04d191c658aa94417db08e26016ded5da8b13886981ebd6d97b8dd73b878447d1993dae50ab57eec31f5a4aa0ef531a86493372eb77951c9825409f b74ca8b2d93f37549cec4fef92df3f6094b3480ffb4b576c8b0155530645212e265465916017323259d276a4b81ba014439bc3bbc55a2498cfdf411594503bec04237d96333ad872c29dadbc62202c17f6346af9556733a64564deaf61b24d84e657b138c37c3604c5c1da709053f7a75bddac0bc3229a00040e6d1f9ee207 465717e9f33a1b11c095efd75486665ca6e7e1e6b82c06a26586a38ad0bbd4e0f8eea6128281b39665d47325f10d28820fcc900650ee330616538cee7454f1c807574cc9cf6a55ddfc428f9e7c107af7f44f02ed3be9a1047584c927e4a9970c55094afa481b82c8c40e91fe96791699f9128e0ef9da59b1d7dd3c20cc2803 5d5571e3e5dbc0ed14e00f31dcc0d6abc1b19c48926b82a7d61cdc95d29fbbd9b81dce9c518954d1a2c6c518452b6de06e9c65ce5c90baf0493f31022493cd05041e05a7a0f8eb0bafdcb41169cbfa504255cdf2bd13cb167482fed8750189169b951e54a18ef428e9ccdfe2ed0dc7a39dc85e480a9c7f47c3de2744c2a9c0 3dc40a63c62a8aac041036e295cdb1dbdd70a47cf0ce18257a258aba254fe866590bc7ef46f7154df46a8e4117068656e7126d7053506daa3dcd7b66e53bfa99cdfb82fbe5ca1e5ec177fdaf04f25ae27142e2b040afa421474c181c7943643b0976e3805af1a3f47600a2d8912f1ff654c41f826522c07d0e35099b283a65 9fe3241cad8cdcaf551a1f31fd7eb2abb2eaa65f2a15aed783718f86f56966b0b2d21ceb722b8ac38957f38932acf9a19e4ee9a609259eb0f6b9de75c1b29d87790563e79f425091966b936a4428df2aa1c281ecb8401e3f8f3c67f6dc631634832ef74a8c94ad979439b30bc8ec1c99b1e54c99f26d09974b5d92e96be88e ad84918267a050f2c6ff91508f6e045fc9bf267f6464c901c6b2ee48fbe4f7696d26da1fceac4a2e9d6cbb9d7ed7660b4011beb631b80f6b97297a20ee5e52719a3db2732129fd8eacec5b84d94363f4de595556494b89d26e70bc33f5da1031505674602aa5391a649c4220e1b14f2d8312e445a15276a52f1d7f45cdbcb3 c95786779a266651cfba24926fcb2b44b5116273e67aa1c6ed0b4ce53a946e74d4c291ebf7e9d1c1ab84b09126b081978c2b0fb3feda78703cdca556f178febdf0153c6615cabf44ec1400ff8c02370c9ed1086e7b4cebafc2acce977568b8e3ab6c334e55b850e5e35262e9ac4eb201bcc21bafa2e342ae824b79c9728527 315e32a7ebf413af7aaf2d87c73d97f100b06a940a98816ec4c26fd451673caf4abd2dbace36898a853ba4c3acfcc14042676e65d69979aa1543d0965578c64ecfd194ce21fc8314fef29e35d5597a539d4bd67b077e880ebc4d41b072b8462dc63584bb256094eb353e355b346d6313fb265b8f713015642d61c843b1358b fcfebe5a86307bae9b574c71371509fd56ace646d61e0a328a707e3cee1c3e3e9c40c42ac453ef5b692a1c2f24626d0cf130c3a819c54d798dc577ff7956bf27f2b6110af08f0301f44008739ecad974aaa7d68e6883dc7ca3ca0b95ba226d819904cbf79b11ff35831c7258bc605c97582aeccbd2a5e64d6ede5f4d5445d6 e83641b35ddc7cc6778e3ac7eef59b688a3d247306caec81765246ed6106b3ca3feb27e066de66b65e792548a57d9aa20e60f6a6f0de006845f8d75252ed9122728971f33120b49265cbdd1d8b0f42f3e673d99915684038c49e5ce0eda876c2f8f1ded27b035263256f986ad7aa8020f24e25731884e026c4e4c93b385a4f ec7fb1fde9e7dcc5ad30bd18c739bf39f72ec5b2c36a98575bec2105560c733d7e074e0289cfe0b374bd89bc94e3110ec7fa6d117c012319870bbb612ec2c75a838a07a7cf229140d5ad195aec2cd0c980955953bb8009348a5b4c700b123b00156f57257c1d06a7d5d175167aef7095e63dd7da9dfa591dca1c59db066ad3 dd36d2e1162acef1c20cea01052c010e89276c8ddfac9ad719214eb3aea6089edd5b66193a5efbb6eb71ab1d2ff19f1931bcf5f2aa54b7f40da7114b49fff966de7f5b972aa76d02e31aa6d6b36b61157d0150e89d4d4c116ba19bf10bb33e2ef1fbd14009cae33d03248507083dccdf90d4e3dafba0b5b480f74b8fe3a71e 4020707a940b3053bdc7a8db04706dd04029f9180564a829480dfb462619f48bf91b55567896a8dce27e4d324c8e2b4e669cf659c16c0f6b82dc72823d0a4b7e992a8f80ad0386473fc407dfda4e7f18d614369631e8d241aaa48dca013c4368ae87faa94a6fbc4a7e425a53bda770bbce6b524c07a517e9367f611857f6d2 5dc35589ae182d098797f9312ea7874f03c5d19746425aebb87d803182d98a8b43528131aa077596d4e37e091567165cec8192466d21d21c97dca1daa89285afa44fbfec5c8c369e3f6eb4e7538a831964e68e7dd069d4816337a07a5983c954e48a09e8638b060040614e1b9d7f745c74a1b50973e831916789c540af9fc2 55cf152aa8ab85ce2d47502abdc31f3d2efe0ef16a7593a8bf5facaf83cc8dd8f7bb53e73a869e114a352393d3ff15846f1203442ddb1189903b3a0d772de82728cb3dd36cb06a5a7feec342105c3fcae9acb6c39ad706772835370df24e865e52f504701ef0a739952d2704e3e1f3c7e74091c3b3fd4a7330ea94744d4f1e 1aecdf1e733ec1e4efa24ee73121f6b4ee0df14ac0f859e56fca07db9b41e79e9d144c7df44970f0137795e8d5c80fa2e3978bdbdaafe4b4c71973d6e20a60e8211529bb5b96286d8065b65d4ca9124fad2a4b935863b3f886edbd9bf7a57cebd03a3358cd90cf5cb91babfd8757565e9680cb800869674e4c356ce76fa50c aaa6e0dd75a61aed50acc2373609972d065263dfc6b9326c41b967b61e78b8d3442e8d30c50155aa7ca9cd1cb9247f306206ca691b0d5b1b8fdae901fd66a04eb6ceea6b8495f5061e0efbc0017e95623e196b88ebb9b74cb283f006cdd5f6e7687c6cacf1223f09658b2a1b0e1430beee0cd6936a93dc037dbbefdfb2cc1a 2c84036ef6b567d8926e6b524586143a6689266ac7c00cc11830a8d1a2bc3ca74356863bdb535398037b77b82472cdc5e0c4bc80bcedee7fe043aaf1e5ea75615c46dd2a5ca22d3e032f7c0b33523a2d5613f3eba692d641b0a0a33b5cab39cf4ccd8fe72bb4ab6ca71cabb4e13625231f81857ce493fabadb25280f209f75 f1adb15ce277f7cf3e0ccb79293c3871cf1fb2b516a2f87a84bf8aecdf84cae2582076a2af591c19cd604bb2b56e65371bd062db57035de806bc6e864e27d7a27c72e175b9122cc656e8b71bacc85d8e20bba92322a50063ef7f91fb05597a8221ed0d542e42d58d6f8e50de5377ff027da0127bc9661a2ae255fe1a844063 29d44a50c68a0903f4669c4324af974a97de6b60365f992de322fb446da39ea54e3e33660d0ce7f0b31504109f954f11eeb823bb4eb4d893b8c1190a1c9fb9dd71c3f0302dfe9ba1305e52f67afa320459ed0b6f870d7585d53790261dc14e26c26791bd9c99740158cc333c36f4230d12737e8c8a688ef66a51f80962dc0b 5492e2443ac24ba132954aacaedeebd9cc62bff8f8e5e08c14187629f13b6a94568e5d4f2b55463c70f863b407cebafae6ac9566ec05d48ffaddb7a567d5a2816634d1c5f79280de20d78387e23db4303144454e3a437015747b048a170c497e8433dc28361e610e5a2b503cb51f5dbc63a292f16fc267fdedd7925c58d314 dd6705cfa8f1612defe39682c12d47ef0c3d9b5ec686ffa4fbd04742974cb6a9483b5e03cad1f0d140aad97d74e456c75e6642151d167c1a822dcfe56c247e0af1af264aecbc735e218f42d9f817cc1a5394bea937965f7afb1313ad55e1f317c53b535882120a2230d00dade248ae0f7981031bea25dbb72dbe2e8547ee40 02a0c251387c68ecc120adad0f0748e19edc9dbf3a4566ae5e2f38c74f6b731a4a97600534c29aa689e4551421aa5ca24d32abdf485a12df2701fbd1745230271757cea59b63de1ab59113bb574ad553d98955e41c6df5c7e91636eace1e5a0603e10253fcdaaf8ccb8a2e28eeb2ca9c7231f5d1e420110bbb7ac464e131c1 78312efe0a67b81bd80c4d428286eb9a149cd7b9909ff160b057d9ea89528a00206f5228a3dd8581ace94ca99fedbd7b21154e0e7509dcc0e107c0fe2f45b0fefd1ddf56ae11d7f17713c989095a5c046745f4d801f19fe0e248635f8c57b5028096e7f12f5b2f28c38f8d8403828b7cfc9c9da1c8ddc94b99688a050afd26 58870b4fa3dd87eb75fc0f38cb2fc2b949042f1008d1cd2887d9977663064865c6df078abcf76b0faa79aa3657acc916cee0668ba5888f6d497c318a1aa53849eeb939c3696e1b18224b789dbd87495f007bc11b86db8e9bdc4249e1f7c9c40a0de26a580d28aedbda4313fa07b53cdae3d5abe5e580c79c1ed42736dfb824 660a10eb0e9412339624b21bba4ef66196dfcd89bd539fc6e9a660a05b3c73a315fc48f8d68d7de440d8c7a1c8bccc4e09657445b3f5dc43b52763b21354fef400f9bbc0d1bba85802e4ed2baa3d11aead44ddc825c755ac4ccb6a1f1a6f65365f609f5cb3fe0ab0ec9b0428f8aeafed197d05874a80b87e3b0afcdd7bba62 2c4c416c110f8627ea81643efe6181686ae0b70f80cdc5a1cdad97ece8f77b87d52ad6cbee78642fa2c9a6504f2a17cd6861b050a90fde964831d4c43af525bb043d7e78af1deb2fdd442c43cebe9e91c04420b2029dc4541662999e750574d4fd387c88306fb654def8a3eb995729d20e1b730e61f697d5ffa998714251c8 18f5c0aebc7c45475163a859d9541c2282d9ffa97a310cae7fe9b35e635a8a7df366040b480fd578e21f7b2b5d1088b8487c34c028ef3baaba0cdd7c1e7e694b17c5f25b29a2de9d8f29220c9ac477fe369838b3537bb49b1fe9ad1549580bf7799bfb709eada7c3c8614207c28c9c654420c1b16d7f0bd461f61ccfd93402 4c3033fbb6b3dc15f9956f6bac3ab1dc43c7785d42a084d3ea583258ef531202056ee73cc09f137994322bb00085e97fc204224c96b0f5843a171326901e49a94a4e46d00364f177adcc2ea9e5b4760b6ceaa0849a7cb2c232b91f4ef3898ae87a796f62f1a96e31188d12ba2c21089e227594fa35b40bcbb1570321e1657d a8abef8e1ac37cbacf67d719f1605af599dbf37b7d083f45a80063fb9f8ba01ce9a63ef25413ba5fb0454131b586aae594edbefef70242552762989968614b1b50cf8339166dc97ca1fd7e4382c53fab164c0e469ec39704d6dc6f49d18463e944438eda86183311e340062ef76bbc0fde1905f5fc0968e17292ff4d1efcad 1f1d12d5986ed3812214ca855370c635c39edbc0761aeab87f4651a8a28b0965fd5da6d2d45a2e5a517377cc80d81527912f9f4c163d05c1239a3d4389a78b6047f34e2011fa62d61433bc3c5c6b7dc5aaa5c7b3156d396975b372f51ce56ad05a3c55f24a22712eb86aeaf45c1bb268398b3e790869da81cb0017909eb08b 7274550445adb6439ce0898acf8928e681ac0f7a7f94a52ced2ab6f43d526f399a5b3b911d7cd38a66b65bdebaaa16d82de09a532665d8d17b1a1a33c33017e68b4f0dc14d5b7740e634e62212205071ded125590c91a34e81843970b0c444e9adb434e09a20d005b6605087d2a87277dc0e94d319f088748f51525141a681 b129e5aaef51c21af8dbc19cdd19aced661ed7a6c7b9821d9eb4742036d2e69223bde8bf108a1aaebf3eb87d689effeb55dfc86c1bd3a68cf998aaabfc85b54cf4cb78cb673f9bef76034ce010a2b4e845b056ed1aa51354e65ea1321f60ba829b4e9426c2101bf0015f3b85b31d0255d4d6fc2d054b6b4e6bbebb89a25bc9 c510318116ea5e1b8710b42761a18d283eb1a5ab154b034ff30d2b829f552653fa000aead47603a4740e90a54b13734e94dbb6a030823d29c1e68a75c3f361cf9efab4691d65cb4ca6382826e1db005ea774c3ac9b85256d626a7bd1fe8612726b07dc7ceab780192aff9a436d7324952dfc994bd670b2f271d142fc84c8d6 52efa5353518a52817c019ac2cbd31111bb7e560dfea2e81a2e55cc1110278204761073fb0a40bfc89ec3cd9d34b5d59affbc6930b09b8226ffce9a8a93fe28c5ce2bc536953a91b2bf6195460c8677f2bf314a16a7b4311f969ad289ed2c65177193db462719db6680e1cc03c2c3154e60dbdf7db0e270b0154bcace82bbb 2616f8a418d898da0ae875514b7c4327c66c0b6826515f29b972eb52e220429d27e16b9b5ceabe45aff2ef9f645f196886cb989687e951f608e738f1ea6cf2a79e507be7f080485c3668af2c8c3cb8a9d4e0ca896c5ae8a19702d64c71bc4c89a414576b07ae2e38d6a655de7d336b2b1927a156e0850e6594bde58480a07c 0f3c026467cf9b96b873c8bb203002e2b69ba3445fd368780c425360ba831766a37ea41c03f69454823b46e55170aa82c194be95cd4f6f32fd93f3701c5cd730038e8ea9b6a1e563bccb223e9d86751123671c0b92f7fac56d296bf09f5eeef39c32dedd67034fb718034ad4ee1252a80529e5e119b48d5a1dca82e04fa906 d3fe0eec976ba1ecec8992d0c2f9594d790da7b52d71687c3a15c4a325594207bf603e2dc80cf93f71958724ccbc53b3b514b1108d6fe912ad5531dd8a294ba705b1ad011d35cd6a0e80b7d8b345e0795498295b18a622708751e8f961104e7871c5e78f0011d936e6e86dcb8ba738be88c899b81df3feca87c2bec0282e26 242f22fc596b83be010e8799eab36e37674a2d25f507c734801be5fd0166c3605206e5038b95ec649de2cd85e970935cf3822fae2b92de3d88343c9a03e0a775f2760a422e468b7b6e0714a2eea42a675d18eaf42fedd9544742a9f8cc4a9eaf3d77629ef815904799cc0917badc507cb247b808e543524d903c2437050f2f 8d5dae66f994a88e334398d5fd17dd9f9c50f6002b0e52ad911532b9022fb3a83de7359b9b57457fbe91471e2e31685e7bd8ab907cbf527200efd0d55b7745b9feabadbbd037c8e05f5d38196d3abfce6dc605c9f8e9543c9b364af5f0bb4146cfa84af9ea4906515a37d9aecff4305d7fa0d4c82440a01a5eb66abe43cbbd 6ea131c43a16cd0433c39abacee00a58638872d90a349dadc0debc1f64ce060f05956b989b084ea5c42fc7933ccfdce2d538c45df01ddc4d025f450994168f7b00bbcf5fbaa45c396c84e67db0463c0422d830ccddd69fac0434eb4f6f6db9a4fcbe063ca705f3d2ac8b38ab65fb32789313db034852f172f9ee3bbfe0a4ec ff0275b06bf586fea2fc5bbcea05f0777aa8306e5cb7eaf97547430a79c8a74185abc137c7e30cec2f61ffca8c38bd34a20dee0388ef6dfd2d68612c37fe50a3fadbfd1efb17b04ecd5173b37a85ccd63e6e6bc83acdde36b27e8827a54badf3822d9eed4afa49839ee1a49828f9e7d945b4545a85178febab85903940fc65 8bf53669e12735d351a2858c5be4270ef9cfb187161278216e2eb359a0f01ce0326b6152c56f44600e3152c07f00ce0b766ca8192c6e2cef6a9bfba1a6b042de3ee0f793da682d07628baf6f60961336bb4f09e7ae7fb5a37064bfa5e2d9390f78d7976575b82e27510219a0f3a7e0ef06536255b9e9a545f8c6ba2f746426 d6f7f0d43b84abb4a0ecf66edbdef6724bb060bcbcc13124a1dd801768fcacdd51f7d13ac3cf5ebc3965127f4772ae3c296fc955da79143d65290d99d2b8204d5227ade3cde4a2e523c88b93eb089707226777565c7bf63b5cfe1fa261ba54d692f3a9bb4a10e08e6335bc73fe3a4abef58baba568da69911064bc5790251a 618638c4906151100d57e5dd8f05c804c29370822a95903e6feca634e70be1adbc0e0f4bb5cb68b995c0c17433bd9d039b89e202f278a829143fb7fccdb7e9ef900aaf2daec6b25e9edcb1ffefd889ebf80fc69a5e817b45bdc4f5afed089ad32256c50b0de86b1797ebc6108cf3fce226c7866e92dda1b8a1a9b225988f5c e866118085ea4356c3a77fb3e3a9a847039aec345344af70b8fca478a3b79fe3c1ed74210789937232ebceb92e5ae683d7713dd39252ac439b969a2509fa6dd60c57c863bf06488b290a23121fd0900e6821f33bc4c41f23323c711ccce1edfa5116f569dc5fec01cd92c04818ce8a17b912bc4f62d9f72f4c0567c965d7d1 266706031d6d8b3f4b65a8ed125994275219223d5e2289c5dad045df1d912bdf7bcbd2666148f981273eed4fc85d190afec3843451d12900feeed5f42d357cbddc01579eac9fdf9adb6e212547733d3a22d2f65be27038c2c3fb5b2f51a3ea26751d0e12f64b4e6d6a8551d23080a8ff23d23e5cb0857e653a859246812efa 4dbf873f78813f4b5ebec1529768371f919c5b67c6458092590ec328be8bccdc238f103c7e166daa869758b517d9cd869820e0633beba0386b2e33965335740787530458a698a1664bedca0b586afb5482b2f580e7adfd584314144e3adc41b2b08bdff70789c06a87fd49ab7dfd4949c088464f296a8f1f69d60abf17850b 5a254dff8d52c9c4b8860b651e92a5973113f56f1c030ebd02417dc181029099007fba17e649ebcd1e1d044bdfcc279430f56e80eb54f921aea09dc18689beb9f34bf4005490373b98ed62ed66f887ea252160a6b15f91a0652288f55b704203d285ae011c79270bd5d21114334fb466ef469fde9df95a3e11914c69ba2abe a27c2c5e43baae066c5b329dcd72cab79a214af8fdef80a2201082df01a595b21807a6a3342e8ae626c0e4598fec95553be69f8882d7378b3280665efee8e5ef126cccc2eacdb561fc84c491c227bdd2323198f73c8de2ca9068b0f8e4245da4645abb5d3fc748f70542314f06fe52befe20239e5e0eeabdeaeb0fd4299886 1463aab51c77bc0fd59900fac5ce1773e0b71ffd32410a02063a152104b211530e3692a794f794073e75d7b05dc2f78c0ad588aa76064d888b500e950d2f4553f9bf23b0c22ac95771c291140fbb45541f381999a18b0dbc0656f58493098c61007db73a88a35dced73ddc40b636becd3259ee495e8e90f76a40023e5d8c48 dc98a2ae34edfac225855620c93365bb8b10eb2f7943f1016e3099e6ea05474750ef6e6e32b2d49fb82662238f0a33a1f9260215fee59f8a7762f8b395d601e66c0627b4dde3c681e7e1323e1fc72f2a26a068f6a00c07a9862bcb41deb978c09ca94f01ab0449a159620c7987bf9501023955b27089b7f95af916c319ed37 819f4796e917101031aae8a271189cec405c5ec0195da3b965047a69f1d2df83cacd4f320a94b5abd2bb6f2c06f7292b0c43421567587f793e043fdc07231e2ed763642791842a73730e76da849297ac6f5c60ce4be1a4d64a42282cf1e049c80df994d78d488e03ba101e8520715e68a5159cf00427a7ec0d46971d881f68 256e2e9a4addf369a03252b0fdda0c05650279f72349ebbecc1431697f87df7d87d3726a4916609fb3674cfbf8bc59e2af9d855bd5f8d991e53bcbcde373df266e5998fff0064f4abacd91894f0b76e337e416ee7632e88aa7adcc56430a022f85bbd2e802339441aeadd92efd87f160a8f98368fe8b5061f5a4aaaefdfdb3 31bfd109a6d9641be4ed21eaa90561f84f9114d8187af6e0d231254fd4184efcbe11ac4ac0c4f2ef4ebee729356f6819cf9180fe32a4827c201970fa382c93363e11594980747e1323589e0f9fce87048c1c1b659c277f001bcc05525680c6778ebdc2b88658ac7f14a1866b8be9dcb50f2f6c3360b62fb95a1417db555e07 89bb6b213291e6fc13dbc15e1421e8225799cd65afbffb899e8819fba810b6129fcb43b3552cf6f42c1a836a3397d6fbca416896e97ccf3e00f8932b8a19e3245d9f8a19dff4dcd8fe9f8e068a87cae658b7cf4c613ad3e73d818ec217f3e604f0d5499e0eee62153829a6d22ef926606e87dc1a5f8c5449e3f7991bdf6b9c a20fcde4ba519679575586ed701e777b3948b640b0c18aa62c326f0c73517dfc91ba5cc0dc1aa51256d2c9d330e822090b94012a13360ca15567ec72634f29477bf0d9f71162c9a9b138d62e17118eb12c5f7ff3ef464e6dcb0f9709dd6ef1fce7cebe59d7eeb9ecaba1dc08613a6206cb151513b55912d02dbbaeb3310bc8 ff725234dbe12ecbfe5e7680d6fbc60864ee0c07f89224326afe09b33ae142b7072715a120ddf29fdecddaa02d9616bc7962d6a0740ce050076b3461be5f12cb4a9fd2aa18a5ac8b67e9d6d13ff94ce18fce66225621c8f867bb66c741958b9e5b4c1cf7d1efbbd585284ea6e175d50c4e4cda2efe8f88aa6f004daa8e976f 37f1320c55a8679964077e3e800af1ed4333c6cb5b30301cb2812f228b1d196d3d87cf8035bdcf34d0a53ee1d3af0376143a02a762718fc97a777d6bada4877bfc0561d31af67e29ee7b81c15d676925fdca3f2d0c625b07bd4085dbde0b30610b05227d097364fdb30443cc1bc0227a76233871db622155052c294307a792 0fbec7a44784cb5dc6a4ab34a252fa948cb3e242d4bba9a821d0a04a9ef8ef1f5a40a1c623a26db245d9a4506a092b1261e647f553305e24db2358847f752e439ed4c15411c44620e78d01051db8c8d5408ebc2204f75e69ebb5d02ed0e82b0de812b31b882dad2506b6fed15be0c3f97e3b791f4e21eb9f21f873eb8045bc e7352ec5207bc1bddf135d3f1de8d2fe86746566dbf2478faec9c41ab6d47da56798af8a67a213b9495cbbf3d0e309ec288c65ed73c16e6e8506e8067dd991bd4364a0eccaa1612f172a8d361408b8fe9313e2a4271e8f2ac9e9fccf76b71a8f445a3c362995c1b74b62abaa9408c4e7a1985754eed14d1948e7faf378fd05 750d6a616701de0b8bc6606398dd43e174ef7733723aee91bb18f4cda2e8eaecb92f5dfc4b51eab336fe9fc88609a7db57fe87ad076386a7c9e7ec95264192f004d3968779df827d365898a4090fa77584de6b0bb385397b2f3d0aadcb1b055ababba9c57b44f46d1bee53fe9b4aa7942b736a10f0cd996050f721a2c31190 9fc6e5714dbc0ef077ab022c586574087bf9e04ec2de91717e9fec8156ea0cf5a0d42c135d4f3765766018166110e0b977637644b7b5b3ead9e4daac9075d89e5e04d6b7412f287c4f232d50666973f4800dec6c0a3e7929ada06c760a0c032ba7e12016011074220c0b5a8521712e105ab165dfa64e20508aad153a5f3e66 748c2f592bd0ac23405952a6bb5f324d5d3508ee50168d3e42fd5bf68ab658818b94283e16eb124cd29f6a69a6a5f9058b93285a858d54a9e2937ceacc276a1f95ad867d159037f86acff2fb4179f2079a1d53f99cc875379478bb5fba5892eb50d5c516288f8c49735897331235eec56b25211b32b03a58ae893081ac8742 9f0139b15a23793b4d764e985f38d4f9a381e15c845742b1557e5e671697125ebc6ba21f7a141950c1ea22091a3bf12f2142c2375c57768136903a4152eb856c2aee37a20c3c51c4ba923ef61ad50f9a1352d14141faf2e2ce08e472801d0fe34576228bbf84f65bede6b126ee490f30c4641db47fb652fb05c16b8738c1eb 62ebdd7c9a31f7e92a568ab77cd097ac8dc57e97aa6327cfcc0c6792cbc6ada1087f2f0e561de05c9703048ea484338144401aff886af73af6f7133f203cee5c1fa43ea9cd751e5427784ccfa901329ff8e451f0b22669235f9b9ea9fd13ad0b1c57b554068dedda8745b6cc1bafdcdb2deea3827fbe52aa8a360e7859c5e1 899f8439431fe772ba668b3a3b1a99b57310bf0870f86d3b5d8d617ccd085fdfbb530a88d65a978e96f1b54137d4bbfbea1173253dd1d5fffa52b7fbce0882f521f17f4d4a9693c6f033588bb619a3dadfe922b97fe2047e9931447d372bd1bc802b53bdd2ab1b155da7ce01d01a47b490432cefbbe67ffed4078470c7e4dd 7ac8e76d57c5470f010c137f816da5425174cde833909dff07facb63580a034ace2d7ffc08d32c0ded750206dd0444f1f1e769474de065112b4877bfd30867ad9f3fb0d1f3e9cf2fcb25ce6990215d241e0b6d8e64a71f0b5178234afcb03373e09e7e35e71bdaf68551b2e3f900598b57ab6c61b0b1bffd256510864cb71a 4d7a2b742a78d380759bf7069b5f1ff4e34bff04b7ed7c0e023e4776d27c8d7fda75c358261031c68924835b83438e43dc7f5d357b4a719e7ee153438313c45a900e608a37d123de26b4bdaac57dc756d2de11281e723e09607255b080765755811e2040c158f7c664585666f2c87866e56ef03d74aaa183398329d3937162 651686f32cb9047a47edf42d294693ee311872c8ae8722c597673a52d3652ddab08ddf261f0c61b02e7542230a50e589518584173116ee4a3c76bc1a40df112d4eb97caaf7a650221127101328e4155780ee76be090a9fdfdaf29c0cd9ec37555f8cb4ffc61852249ba7ea3b4d251c61c7e8eae9f98866b669516c81d83a7a 391f9d8f34535db519e6e6a61ff5470203e604bd0a8e0c5778ba95875929f4f49b8d2ec26e0c8d030ec93b77e8a25b832f3373ce61a4b43491ee40edf057d4596efb3ad61cc29c1b6980b0e5039146d61934ca28b4dc8313f03dce37736b556c7107a55bd9729695e56939880ddf5004d93cbcdc9f68c95de59e38795adb2a 502fe8247259f82334ca32a2fb3dde620e303c3ead6650478dbb7f4afaab4805db2154600ec0b02fe926c9f42007ac24ced38df61f3889ae41825fb89c30e0eb5ef8b2dda787e6c75991013c5cdbcc10355e8bffeb473116c623ccdf2346afa7c739d0ad42f69ca0b7e68319c130ed981fd6c370e0d6369e6ee97e32752b86 10ae94de09bd96502c4e34e86610ccab2dc2cb527799df784d5643a6ff1aa4d3d9cd0b7798964fa330bbc3351243be6a3b1519211004acbb08f4b41ea396e485ac1de0613ab29174b61ae361c517bed30bd293e42d36853803e3c16766197024bf16d0d8dbd260ee5ba76cbae75890b66d5bb7ff72d1630f059f863c4a0f0c 207683e7eda064e6c8596759595735025ad9b3af08180bb722fa713e428fba0f98d82499cc7c747183f6ae4fb6bcf978bb7574c4a569618571e50dce8ffb78d4603295fbabbcbd02237ef2a213492a6b41ed0a7f9aad38f3825926688f7fe4426c590f5479bd22a451c342a564ab02ef8169f967d1ca87a238ddd6cfd5696c 8f97ae4870ca2d814005fa376e1376bdca52b732391c5b71f51ede618ad9370fdb2a89d95276df695b6db060f2d683aa9b80a40770a1c76cbff7bfc7628c155e0fec88ab4c5ce051c8681190c8e60970230a52c428b1b1043ea5df17d5c10b25a5c6ddd941a023b00a9f61e89a4760cfcb0851eeea9c393d8b7dddfb9efb64 f1118b3fb9d45b610b5ec92449c72a451540f25b407d5162d85bb57dd1864d69bf7dda142767d6397437e950ed071793b63fa5ec834ab66ea827f2801fb7f33a2445587fb17a431b9a89a512db355e4b2f0290f8528112fe52e3f30e8748c2f2125aa2e4d8781f74d173066e1cceb94931d004e11c916f5d60800000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: Symbol %!PS-AdobeFont-1.0: Symbol 001.008 %%CreationDate: Fri Mar 28 22:03:48 1997 %%VMusage: 30820 39997 11 dict begin /FontInfo 10 dict dup begin /version (001.008) readonly def /Notice (Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All rights reserved.) readonly def /FullName (Symbol) readonly def /FamilyName (Symbol) readonly def /Weight (Medium) readonly def /isFixedPitch false def /ItalicAngle 0 def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /FontName /Symbol def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 32 /space put dup 33 /exclam put dup 34 /universal put dup 35 /numbersign put dup 36 /existential put dup 37 /percent put dup 38 /ampersand put dup 39 /suchthat put dup 40 /parenleft put dup 41 /parenright put dup 42 /asteriskmath put dup 43 /plus put dup 44 /comma put dup 45 /minus put dup 46 /period put dup 47 /slash put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 56 /eight put dup 57 /nine put dup 58 /colon put dup 59 /semicolon put dup 60 /less put dup 61 /equal put dup 62 /greater put dup 63 /question put dup 64 /congruent put dup 65 /Alpha put dup 66 /Beta put dup 67 /Chi put dup 68 /Delta put dup 69 /Epsilon put dup 70 /Phi put dup 71 /Gamma put dup 72 /Eta put dup 73 /Iota put dup 74 /theta1 put dup 75 /Kappa put dup 76 /Lambda put dup 77 /Mu put dup 78 /Nu put dup 79 /Omicron put dup 80 /Pi put dup 81 /Theta put dup 82 /Rho put dup 83 /Sigma put dup 84 /Tau put dup 85 /Upsilon put dup 86 /sigma1 put dup 87 /Omega put dup 88 /Xi put dup 89 /Psi put dup 90 /Zeta put dup 91 /bracketleft put dup 92 /therefore put dup 93 /bracketright put dup 94 /perpendicular put dup 95 /underscore put dup 96 /radicalex put dup 97 /alpha put dup 98 /beta put dup 99 /chi put dup 100 /delta put dup 101 /epsilon put dup 102 /phi put dup 103 /gamma put dup 104 /eta put dup 105 /iota put dup 106 /phi1 put dup 107 /kappa put dup 108 /lambda put dup 109 /mu put dup 110 /nu put dup 111 /omicron put dup 112 /pi put dup 113 /theta put dup 114 /rho put dup 115 /sigma put dup 116 /tau put dup 117 /upsilon put dup 118 /omega1 put dup 119 /omega put dup 120 /xi put dup 121 /psi put dup 122 /zeta put dup 123 /braceleft put dup 124 /bar put dup 125 /braceright put dup 126 /similar put dup 160 /Euro put dup 161 /Upsilon1 put dup 162 /minute put dup 163 /lessequal put dup 164 /fraction put dup 165 /infinity put dup 166 /florin put dup 167 /club put dup 168 /diamond put dup 169 /heart put dup 170 /spade put dup 171 /arrowboth put dup 172 /arrowleft put dup 173 /arrowup put dup 174 /arrowright put dup 175 /arrowdown put dup 176 /degree put dup 177 /plusminus put dup 178 /second put dup 179 /greaterequal put dup 180 /multiply put dup 181 /proportional put dup 182 /partialdiff put dup 183 /bullet put dup 184 /divide put dup 185 /notequal put dup 186 /equivalence put dup 187 /approxequal put dup 188 /ellipsis put dup 189 /arrowvertex put dup 190 /arrowhorizex put dup 191 /carriagereturn put dup 192 /aleph put dup 193 /Ifraktur put dup 194 /Rfraktur put dup 195 /weierstrass put dup 196 /circlemultiply put dup 197 /circleplus put dup 198 /emptyset put dup 199 /intersection put dup 200 /union put dup 201 /propersuperset put dup 202 /reflexsuperset put dup 203 /notsubset put dup 204 /propersubset put dup 205 /reflexsubset put dup 206 /element put dup 207 /notelement put dup 208 /angle put dup 209 /gradient put dup 210 /registerserif put dup 211 /copyrightserif put dup 212 /trademarkserif put dup 213 /product put dup 214 /radical put dup 215 /dotmath put dup 216 /logicalnot put dup 217 /logicaland put dup 218 /logicalor put dup 219 /arrowdblboth put dup 220 /arrowdblleft put dup 221 /arrowdblup put dup 222 /arrowdblright put dup 223 /arrowdbldown put dup 224 /lozenge put dup 225 /angleleft put dup 226 /registersans put dup 227 /copyrightsans put dup 228 /trademarksans put dup 229 /summation put dup 230 /parenlefttp put dup 231 /parenleftex put dup 232 /parenleftbt put dup 233 /bracketlefttp put dup 234 /bracketleftex put dup 235 /bracketleftbt put dup 236 /bracelefttp put dup 237 /braceleftmid put dup 238 /braceleftbt put dup 239 /braceex put dup 241 /angleright put dup 242 /integral put dup 243 /integraltp put dup 244 /integralex put dup 245 /integralbt put dup 246 /parenrighttp put dup 247 /parenrightex put dup 248 /parenrightbt put dup 249 /bracketrighttp put dup 250 /bracketrightex put dup 251 /bracketrightbt put dup 252 /bracerighttp put dup 253 /bracerightmid put dup 254 /bracerightbt put readonly def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] def /UniqueID 42996 def /FontBBox{-180 -293 1090 1010}readonly def currentdict end currentfile eexec 8dda0385bbe2e28975521ce366a1efbcd19951c755b299f7de57699ffa32088176bbcfeb9d3d075a656fc2d3ffadac652e0956194030c65b6ac7dfb4cce0096cf30964c72ac7742ef0dfd71d6aeda00d45b6c86f2ebeadafcc658a64b076f436a780849440223f266d2dab36e19a62bf7550db533ad06fe9bb6bb7ebaf6f78 06f6852f23ff339a8c1fa991f1bf47f71268b6727020001c8171cb3acdb4eebea4d340dbfb5d95d8d24eb1c831a51121a967305aec34b69ab5a3a0c21ee4192997502d726972f6ccea2c58f4e7ccd90e299cdb76cdba9c42084edd3a07ecf08d5d8459c87f2d392b866eb9ca8d6b8e8cb4cf97599599df0d1c87704f3532f9 44b58dfe91e713ff665bc5a1d74808d77591d2989951c76bc0cb73e1b40597b250c9776948f8d60bead8cf0d4fb39c205662436ac4a6187b00b5645538a68c6ce44e7231c7492f6b4677329a9823d5510077ae7874e5cbd15e8a39797dd2b269d030912cbd063fcd5befc5065c16972fc994aef7110c16634aa476dd2beaf8 9a89a81b20101bbb2942dac0e7bd0e6fffb56a851127ee061e3e97515730d3f92d488ba61997e88e50520e778b6e4fdc856126a03bae52db2584ff2d7852ba528fa91db625ecf87d97c1198ac22a8cfb2f19e377c558112ac6c2603dcc29d9402998e7e5c749c156b98f8424ee10395dcd7141d8dce9bbea1888b389ad7288 38348d4c0f924643d9fccde61c5c46f99939f2eb3dc0002137e456161b54f58a06299bd20184d58981613c285aca7dcd5736db403c92e9fde31f3ec14c2e3e67f9648387c1d2fb251fc8310c35608177e05052764505a7e054c1568429017d5af318ba6f39d33cf88dac226b1e3f3d3a3b1dd7d3a8c67367ffb00a7568e1a6 fda2907236f77bdb618fa1f04e5317fa2d8f5da3f48fd88d77c73f439b7a68b9a7970ba0108da48bd1fb6284d94470ac957d679cc7665a6f0d3a1abce3352866b459ea0aa6678f00277172daf4c5aa545ae425b2ab530c7404a04ddd891ffb0b3cbfc6e5b8614986d7216e4bc571590cdf32ead925c0afc93110751b5c6a95 025bb9b74a00e941bb7714525646d584d0565c0106ee006d10ec7e289ab250d6e99c3072afb4c15e1ddebe02a78b508517f985a4406b0bfb74c7011010b1f801217c1fa21f60c4e50ddee045e69c9c40075683c68dfeedd25ce02dca55b96c246670c9e84e586360077921ab65d0836eae8675227b3c40e10cbd7c410f2999 2f1bad2fdb649626271df074e58d4754a3877316f32f9f6d891bacd719b3de29707622f725d5508a268a40a5896e06ad92d2e133389bb0ded7dcf837635377dc16fe2e5ba97c6f04f751911f82fab56def6221c8029dc6fc0878c36954a92d4001000cf48949e772a8fd21de1922a2e546ceaaa2f8e464fc6e82e114b5fa17 ee00bac6a27e96ae49775f26f1cc6dd494b16fa60fb976e5cdffac370a977dd1ca8468c45c9919cd17113a811073516589fd5bcb5c5a50fee1df5cbb0fee6a71756e08d144d082f7714fd797f75adfbfd7a4ce0b2a8e25bba46fef859bf88afcfedb408fcfe3a0c517af7065d93bc9534ea318ea2fc45e0ddb427287b6f4c2 9b1bf79b82021ebcdbfcbdb93254c3f7e9a8c431d8d7bb617b9c8c9b1d78b70cf24ac4b1dd4edb7b4629d5061f0f1cb86698afebd44fb08afb198ceec07d799f426cfee1bc9913e7a997c7c136a9b8571194349a8e960615de021415355640c3e3855873a38c726eefe0d9addccc89ea1e4446ef4365478d26c2cf094f8596 29ccd6f433f42b5eb3f065a96dca95297e406d97f60d3490dc6c2ec0830d16b502ee1832ed29356a16c94f2f74bef5bda000b36a1b7c228958ecf8df388909038fefa348b2394fd6018206aefe6ff3b7362a9f65cdc181ab7a9f1b9abb5c36321e9faa8e081b583035c34d3a0eec08e7b08f182c67de2efdb4c68ab169ec5a 89df851a3b53019c2c604b560a58ea246c8444f9380f19b553611fd2cb4ab5c99740289a947ffb7e2b4670efc0fbf28a631c93c0b9e84cb738f93ec6c7f78e247419676a3ec643169f01465c032cbbf6f62fdaf66495105d30538708eb93e58474374b8826a64292753bfdda20b265105fd7c4b1d57993b063b752e890fc9d 2453595f50fb0c16deb4ca009d581de07767a8afac5fdce02ffb4874a806e38df9ee47d963c9f7cb3e650335a1c85237e83ea2dabff0d2fe93e82a00329c607b76d45425344d5fe894e55394775409fa582a50b06130034ac92f03b63939da92fb22f192d2579517aa7141f28bbb58c3aa7951c9615fbeb1b76d04ad6ff685 d4887d9cec6e1ec2355ba1ed9bad56dbf58426a9964cb84cabbc307614ecd83f47e3856f09719c82246c7f987a6e820e88353adee2f7c58084991a3020ee034b67d0f16b921a8d992d407177abd6027b85b5abb4053dd5a1c54e1cc679a63a59b5327332860dabdcddbd29e976a242792b320ca11581d5d71ca398673ba4ca a3a2764fbc2ff807f0c05f5fcbad49877f9abe090324b0673e366a6d9cbf120e7b50036c363b6188d8f5e2c8cf6ee4e0146bbecdb0283dbdc3f4fda4a757c916eda66f627ded80d3906ab023c318128512ea33999ba08c604c372f742605c884864c3fce5de17320ffbce73ccf9d1b293643bfb587d97e73f91c3dc8707551 a9626fe765901e9e15f3128efa8c133c2ee55a5f1622aa143fd2d32541badf67dc1dbe132b3d5d3d28cd83dc7311bb1fafc0477ce525737191bc318a3d6f6cdf80bfd8289d0e9a984a2b43fae6894748fa4ddc3a4015dbf9cb8778e7b957ddb126b75dcadaae6c41c48072d767f4d533bcc3692608e4153e4c51b077e0f867 357de6624ae6abfe9d7c77638ef25a8bb685f8a8f736c91556bb9fbf31e97df1aa45eff70ddc64c3da1ec15962e34f62c9281b78970d09a069e31ca5239a449b68f97fd45453f8c74575d93ba32d7de8e7023cfc69a565ce01af28ae06949b826c32f4d899c90665dd666a4a3a887961d02d220c30014391153158c6eae0fe 6ce5d67c4e4a4f014ce2ae331d1ac04e9131e7683843ac285253f8f211e47547bced470d3da3af611cf3eaf64373e7922488522c9dc6250e0d45951d4c5d81aff239392924b613d82f75e12739db4e4d61a98b72e912647e74a243877c6b5044041051b67446aef3aaaac555970651b44b3f3f2f38c7b1d4f806ff6bfb09a7 0b81365831aa9de761222d9dbc17ee4e2a5f3dd9d6115b4b234efbaaf7e6e0bc29176bedfce51c2fd6a49a8214be6ab282b236219849b6497fa6d9ecbd4a3ac6dd1906829a3eb83a3011c918d1d4f7f5443f03cf7c7a4c6b0a4863be4227d96d547f700f0a0165352a9485c752182b7657d199cdc8b4d492db7bd201348d60 41f092b3111efc8e534238eab160e439d9bd2f2881fa51378380fb7442edd63ec35fab38896e8f355fd0cfce5d5626d7e58a7c359611f6d5ee1baeab9695d26c2716b20157e7337c5a9eac8278ca2243a70d4ab9a597f457bffe8dbf1185865a9b4551d602bfae5259a6bcfe0359ad33a02e0bbd8a16061f918a31c5701820 1195a528a6bff4042304f184a93385d98ee591a489184706152fba680ae7cc46ce18c3988c8be0597786d87de3c3a6b87e54664f7b9688d6c04e6090bdb1538913ae3513a858bcb6acf336e03f1776e93b74604723db8bcc746e8f117b1aaa7bd834f328d3ddbee4960cd7d2227f5e373bfaf1704ec5911607e66ffcf877fd 84978f5eda69ad33715b9005104d888baca0e810c2d9bb5c3333e92a7b5d7ec5065a44cbfebb070a32e492469ccad1067d5bccc7fdae294087f9688991aaf6beba1e771e15fb03b8f867806c6e4dd7e872f370025f11ea8d0a4098d6f335c75019138502e9ade27a170257c0566ea3c0cee8b4fcb7a6ec5491ac346b35f97b 224b3fd13965f1d5bee6ea025f1a97c51c2d5d46ba6f48eed37c5a8bac8a36ed6f0cc72340f02646ea4c67568ccab4bd233266ae8d83623303f9c6ee79da6dc347d26251c5599a52096b795a24a82e6c4b2cabe150758e9358615ffeddc218d8f81bbc32e4780d925ae0b79688c146798a6bc81f308dd00067c94d2094b1cb 254a5c041ecaf70ae06fe53b7beaeac1cd4e44fb503144eedca7414e184e37cda24f88a290d075e278a09d9e826d666eae1312a6f5abcb55d2b88ba3e6c4b95e08246c2123d0f7552e5c975fb8afc67bf7617c922943be76dd670c50df969f3b5bf2c077e4cdc27d910bfd2d81300ce868953e39b279eb823fff40fe2f7ed1 23ac4ce9b33883bc666e8ff0c73372918ae7b3bf76c373a3e978d32971791b36c99e0e011ca35d529ab7a5c8612f27d25fb43ea881ec3db171cbeb3a3a2d08a0aa6cbd8ee26ca957ddd557cbabe0dc969323ffea0750984dfae620b9ade74bee70f9800dea62e3d182da5bbd35b37d52d710b2e31f959836723d9acf104590 33c48108c6acc641cb25259ef387af8c2f5476847e415a9b37abe9a9bb0c35d3177d47b826a07d4680056afd60afece29e29f8ace87416c7343df851931534e2e92e2407e709dfa25be5d31961161705e23abf87e800ab49ca6b61e18e4835cf9807d0f360835ce12b8bc11e2057402f913ba0cb9cb921383c956ef7e38993 6d8c63c9652cd307cf356edf8266dcdcffd162822b3d5745e839d5aead8fe07a3d4e2136e90797c5d0d73c82a2d5d5c9962d02ac784b7b20174bdd47fc0a1dce504cd9fd139719df3c9d9a119667ad3e8a8967f17c044961104de938f14f0aaca0513ea9081ecb27348cc77536729efb2aa5a3daa54371207b36c5fd352a98 cc4896b537b30fee8165b7233569a418d297531dbcb3a14c78a3d85462c5f58167a9bbabc3e81563c7bd4d67e28b9eb4a9e8e0aaa5bac958e0b098ed48c81e5f05095f4d4076a37eb859fbb32e3594131b547a0b2be52f68c98cc688aefb1f498108cc425fd9eb6668f50da7d11602b3644e1243ca05b68b86993b1d3d564f 93ecacf6c7bf2d967da77e395e4d761bc04a170c35d1cb9040cc824a33564c11b579a113f598f6063e20b1a90bfdacb5f9d7bef4009c7dde9f0548efa4b84704e4c7db807bb6c45a59442b2f5cc505d2f708a07791a8377299f9a93d5b020635f62a1698f90487692e7c4dbce5a89830c9383ef38c35e1c4da5e6d8c82ca71 da2e066c7d0be8775e1597ee3790b341d04ace82f8793a8699f40f4c215b740a4ddd7ed6f633dd7bc5bdfe382ba44d8da0af288d27c5ac2275afd98c0f6dcef689d6c18dd05444197c235d6c4fffd0d4ae738f708583370ab97e23fe3487e9a1448997f5ae85f0333b7acede3c2e017cc5959844057a30571d5c105cd70060 598e46b1338b252f106fb414673fbf5769918ba184b2721c4f346bf811701118dd7bc87b99d94030f089651cfaeaa67ce98fde391c4ffaad4b461749595c359aa3a29fd8eac363034a441bbde61658a968359309e8cfa46713c28573a8ffcfca320a9b261b924d0b3594752eab93d3ae412e42498cea914b060bf2a3f873b6 1d70d50ceed77d7e8dfc8afd686749bc2a1172723a9489c1ed7e50bb32887efb97721c2095ca934ebf0c5a560989c726986287e6e5aa8f8b41cfd7966973de9fefd7a951343da41ef7deda1a90a736ecc23791220058140a9765a68da3a05410feae05e892ab98480fb9a0683927443ce0ee6a3d41af55e6360f365e87d3b3 66f49aa22a96948b63efbff46f2877a5c82db0e3350f875f6e06008eca65b9abd3aa46393e634e864a2467d03fcba30c0d901fadcc4f32be09123a3097b8668039b2ddaf65d9fc0f162762633b2be257c3b6d1e219495303bfeed7585fdbd773a3bcf9a9216701ed906134b72ecf116cfc158e567e86bb094dd75f7a31aef3 95b57f96cc4ac739312fb475491a51a87141cb9b69d26ab25ad0cc2db3f5fbe2f4ac62f763d0e07c68a90b3f080cc4439cc9203cc35f1cc1b05c8b15fc8da648aaeaa7c6e9be25bd4ab0e546cdb4fde2d3e37492a0d1870427d2a5512ad4a4404fca76525662bea2f092a3e459a57c43bfe967f825b337a149b4548fcc6092 833e3601a7174d65428b0fc127b395079ccc41eb0783ae6a59f27deea923ea1218004b28ae86ba9fd1ac220164e56cba287866e237994f7b3c9f87c89273e87ca37ad2a7e4b49f8725eaff5945bc1e8a38ec762a1698f90487692794b8863b8829a12f0173cff77206de0c51863f9486b535195b402e6756fbe9aae85b0fdd cd37bc42e77755eac8c9112fe050d4ff4f85b0593e5ac5fd15ccab06d233fdde2c4273fe4100613a6e216246c50dbfea5ae4d73c9011cb57354bb5a7367877f8b713109953752e71de96469b5e7962cfca0a2801a7cdc744ac8eddd3faf50dea43fc847271bfadd691b25d725ea0c048d9bf3a647a28490e28dbcbd776dadb a506f4b9e48a19f6b8c88563974d27bbedc8f90ae194a515887b33acb58310d8d9a6bd66517239ada895df2b76947eefbdd95d5b4d4249338d5d4e79fcaaf80e6021e3168d31d46f250a21045bc26ffeb66de912d2f65bfdfec70f40fa1fca155be79e19ef3c47449aa13aa2cc4608ca8cb46dea76314364250fa7b18fa096 accb689cda9be75c1c97c54d163d900f3a2df0b149096f267e5188eb70a72516d7902ceb4d2b53196e97fde812842eb18bd8b81fdca020aa6fe0423256d62c239db9b468865de7308e892a9c3ad9de5cddea3377b83c5525fdf7c68092a6fa1f4dde10ffeede3d575db8c76304e4693ef0997a01d76c8babc93435dc47d5d9 2d4978d73a5eee6d1c3faff112ec24f2e9ba1b7fb6b77d1a17b4218807d52f2b9b19dbcf792de9e0cae5a63b5d19876c8747b85820ed5156dd76e40047d604f956eaa13f088a40cfe12d7bdb48dcef4d55bc9d1a36f1fe388b3a18b08c6c814f95e576fd37cb04ac2a808ee2463beac694d5242b0ed37d7ad39f5fedf6d24d e9250097259ef8b2fc7876267b6e4185f011699e91aabdc29d8b6a7b2a591bd24a20558c0f4acdbc90c55a2d946b1ca6462f2e4c6a1f6bddbbb22c71db352cd5875dfcca9eb600f40b5773647bff7062e3a70007b1b67ab5082ac00fb543829efa14c2de67f82af0c1dd2df76f3ecd59cac53780c7a170b66066b1d2424263 9d001bb68503f68c73b18ada215459efc7892b32dcfaffe8e5fd689e264115274a289b99a16f3394e746f09481cf2a654946b67b1a689b73c8ac076925338161fbc0f7e562286cc287afb9798a54d9fff7aec4f29c792e455f803b855898899d4703504f00a83b937f92b429634732f116a69ce1276006e63b2058e59e3879 5816de7cc7b75d480e72660527a72d87dd111c6a598899f8a4f6a61b071e349b61b55293da28c5db5a3e3284d8ca5d90ca4826dc140172a5f5ac7d839256ee9be9cd45eeac3aee11a1fc4949acd796c52de69320310cd143210458cf31c32413b180af54f2a08d4211e0407de959a46b569371a4cc573ad77d6fc07a6932d0 1ac150d96fb3f028aab2fade0823d2b606ce517257883042d716c016f4377b8448fd461a0f710467c429c99db02dcc30a54d6e8ee952d68856c5f47538ff793a38d6fa34cb798b204e7525e898bf96edf9f5664a07d91c16a8e8b4138364fd615701e40cf9a8e0ef1b8d531d544053b3d78665f4fdccaa3a2dcb61fe360752 a79a19da5db010b0d319b97ca6682400de421739901efa66f9a88ae97cadfd155d359948d21fdce3b4722e49d5989e2d5d6fd1e6a3964ebf12e2c72ac5035360cbbefb77bf83bf5e983ad39a5695a64e0584e5e5ea60fc4018ff70d6b725e51a82dc5575759d6130ad57e2f0aff28484beba6106c854df1552da18e6a886f2 f75611885814fafc8a7befcf6afbba04809175281d78f9de0f3574e19584a7133d3a879acc2a76fbbbd9c1dd69eeb348ac699b5c23637c5842d6d3b8852a3864e44afbf1ad6dc72892bc4042e8d4a83cf5006849b4fda58b27200212e40f7b33410366a19349eee37d5db96cd5a9a7a2ec739ec3716300d1963bcd6a327afc a6d3d0ea4a530373c0433418c133942597fd01baffa24fb7eca9ca8925ad3eaf574c3590d52f450a808f81a0c17e1735b7a0b33e9bb87da1d4b1fe5982b5e67d998074e92eb42c9b89a397bbea6640ccd8b85c5db458fee3e9d7afc5e62c372bb5df0931f807b0d9685db68cb86180f30d09471424e233e882fdeb3dedb235 ee5aaf4fcf963a215a0611d5737941b404f56f5a09c1257cf81f1fa5e4c259644fe058f0ed1e5ff03f2812e341f1c32aaa2eec7378146817aa946f974090fdfd8ef644874a77930b7507532e89a92e9b8bebbe2b4f4cfd90ffc1a12d05e40b30d81bd636e56012e6c1aa6c0a0ce10261303b7b87ccc39a78e178492489fae2 dbdf46a22da38c23da154ab5b2040b05a2ac11e0a33d34b5ed1e4bf958873bafba0d0c9c1a43a566eee422f47431b6a6958a34bef02b91b868eeed9e38a6d20d7af1ea66c21dbb0d42f273633f87ced2554519dc51368ed60ccb752090b5e3c756dcd024b7c2c3de9c02a79142cc23b1bb5fcc08e6c9777e1a41e86d8b0f07 03811b3790eb224a6f752883bfe0860715e334946a1c8ea440cd6710674caccfd90db1897f020b7307ba2793036ec96347ccb1dbf78c000e49c8110fa5597e2fd2a0c48ba0b96b18b318756488db3ca3215e958b34f1fe9aea94a1a7aee7f697848a2cc07675822783c9c5807ebcb069f1d070943dd926de12d88c35592789 1a420c985b969e986e0192f662e886d2a5513dea2d839b35d9902d4bdc6752295b761292a63e997c20051a040314c6a86fd3f2f791d7b5371914e343e61428833dfd3eeadbdf6cf368fe636212877d348e95c2882a5661ec1ec028e76e944ef033662cb1677ff63df2a537e89222348d7ce4579b5fbfac2a71b3cf584c0acb e2dead719b06874a7b4f725fff17e1f5935aff4d50691ff781d6772e4e916430f66dbcc522aa88af24b2e30b5e3264558624ef3e8792c142371320bc6d31b0706dc458d81b860e293d47d70e1c12fce97acd06fef46aeb22c8384a7aa66d307867d7b3c90544febf15254b5639724280c08495ef3198afae50c4a64ca1082c 34d1b181053c346314cac3497f15f32946e0f30fcd48ad64ce05db65812e9b256acd53afcd3900add856cc73b2bdbcee4b905f72845e4046a055b441d7e23bdf8de57cd6b7449d28bfc1376bfa7c1deb0aaeece95e9818feb14f5ee6cef4ce55553f6a314ea042c8a3b4f038eb223e03dde23d4dfc21b04afe0130db1be221 639aba016be874d16f50ef548a33c9aaabc701acb0b0e1a806d81d0a4cb21c0f8b7e064027febb8d9b98c0caefe7bc2073009c9f55d10f4b2653e08262f2dbedb6b3dc5b0649abbfd7a3be625944fae5064bab68f7267f8cd3bdc732537f8dbba779e3f50f607720fefcf3a2505bdc44eebe30d8b35a59417693a5d62158d3 5dc42758b7656cb7331761802483a156c5d47ba1926f1abcedacd4ba24a60488459e5a55fde0f56682d3abd004b29438a735b7484afcf057cd4f32733a9caa3ba2ebb778097e30ed2ff7b56dab7e58b4aadb109fb8ba2ba69f1e661849d7c8638faa40318f7e15cff2cfa260da0451cf0fda569461f10319431ee42aedee83 df31f72d5923751745713a3b71fb7b5a7ee2de6583aafff1a77be181a5459e59e8071b6aa9a992e67f7d34a826be2d664002abe68c4d09f21799e33f31e86e2d48b250910d5da3862fd2ba75bb48dee55a88b6f68cfa91bbbb0f08b77c56b43ed295578043dd3675f9cfb7ff2c6cb843abe28974c2e8fecaf0ca923da144f2 d91ee185df2c0e9e1c7ea35a38daf6cbdac67db999ae9b83fac72b22be42a2f63b470c2f86eb552d482294b95f01053abaf7f079d51782d9d0eb7ce9595228a50d9f2646277e8d9df31e26c2c8a434efecd49b53341afdfb41d5d86dcb2ca9a3f48ec48eaa82983cbc69397b76431110f6724e7cc0f7b4546bf41d073ff25a 6ad6a43b8a8f50062cbbd6c5f9b3d09e0f161e942823dd28e01cac4e51f7ef5eadaf6a8dec6853b2b412ddfb8dee2dfb58e4be766cbcf1e8a954c8b67f28d7a6675bfbd581301ec31dfe47bdaef075e73769fb768686e19fe0d5333e5825b0b98b9753bd00a5b18d6c595b5199a1004b745b205db48e43d2e65a4b6bcb7f69 3711f07e367eef6588bb98c5ecc3a951f1826a0db31a440df73d1e8eff42d31322d0730360a4af1c318529cb3faba1f219d0dbe62d2aa5fb998ddbf78ed7dff1169e3c2b32bbf926be863c5dc357bf95a378ff104c9634c2489f944d5070795cbfef6822f991157cbf1267310922db6a8700a85ce19816af9f5009791a1db8 72f04ef6227850bbed40f105effa93ae747f237ebc35996a17def8c2c553bdcb87fdbfc73c562e619d0e22e8734992934cb13c8f5bb6546a519cacb85974919daeed4cc39315d964837dc7120c16faf23d339b39d8ae5fc555ce04db33e77fd890af32d3c21507cd181336b9b1e8de43ffc805843364e19fe9a91c89161403 99ed0ce9322db840d2d559e6e2676cffef5ccda610a41a36e17a3851a9b6a3b196a16d60ac56ae04a23be73f1bf2b6ea6a4dd5dd8fa498c0bd9dd7d64bf26227dbfc0ad2da8b617200762678036f0553f3bc7551cfa19ed13673b7ea9a6386fcfe0a3c18521a2e3335fb4c2aca5b9d10616c657c900c5c7709dd6519406ee7 09189406a7d3afb767e251ff11d55feac2cb7aa8fc7ff10b9758bf12cad01b78f802875cef9e8c25a876a11269ff1c9236e4b9d2010ace6270a23b035ac333d409aa96598a093fd97d73d3574e4ee7b39069daf9608b1e1b910792cbd5bd6b41cc20d10e8eb7afeea758913e8b7e243dbc33a760aa8f73400b3f8b4d4d8175 d4ddd12b49a7157d1f078a77460229f29d8af315e29e5ecb386fc32b41871efc789ada932f6ffea4fbffa07055cd5d47a3fd8c17dfc956132b8117345e17292080efb5bfe77ed2a956866509ac8e896b737639b6eb6dfa5ad97a27996df5ee0ec807ba74511f6a382fbf1606cd813a8b92ea5bce7c127614d8c9cb19369772 00fc8c5b8a615f8a3e583a440860c8602f8803c391ace1c88573dff597e1e1e86a7fa09b762a1743d10e2ad991fc020fa9034f7ab37bfcd9d8add572f89e7dd7132972042f8f80de3300f4424c45449e80cfb9a7c6cb3ced41d03dac06967b92822a15735e0b4b3e856107a6f5dfe5f87c88e83184462df50e2b3dc73cbbbc e7e2527fef7928efa85f72a6645788480996fd1fa5b20f6ad38f20f1fe92de35ef7f078faf9780bccb95795cea7da36a0a59ccba9cf04eabb9cf608f13d30d9d5060f11ccd07240e2cbf82eaa10fa069a9ff5df33cc5f04291b62944d9c541f976021d73d34ef99677bf0c77d976ad480af40a182375d75d8799cc3a98c1d3 db6669237461d98c2c94b47e5d5a16848d161bc6b8d6bb49ceaedf19e0a1445b2b43b5db1ee6e7e8a56ac3e39308adfacc682297cd27dabfa64f4859121654cd4bb804b75d6a2aab1ae308e37c8764ff9a50dbc77d4980780405fe1794527b7b9dace056d7d27076955cb9084426d1318991e40c2c1f7c98445f324e74fa3d d56bf9658fe5100e29d2815142f22c8b0a0179c89389737e4b11b18eb05acee9d75d0d52a14bd709648947c7ef660267aef6ae23fce6ffb75ee208f0afa915fffe85966de1e8aa6dc68d9844e3cabd469f058164af943d7aee1b80e7edab46117cf4e5a804a981404232462c647cdb1dc827aba92f3b45960e791696aa7157 7de6a00c47b6bd5bbc565363fec2b112048790d9f880dc1547eeb9611b4273d434cf00c460134f9903dfa2512bd1d87be35cad3dfdd73409802e40834a9684e8450695956e1e9af26de84a6927db278ece1a728e742e626063b237a101505d908e1d9715f9d0e2a14b5405a8ed94748e2b773b40e25acb42241b241a1a7425 54c9d2f89ac539ca78e0a7e70cac1dc181aa3268d3799f001000f4063d315a7c780dd68a431b156ce363fff3d6c41e24602658868f38d7e6925b226b6a11c7f1e2b5fb67df7e1fa5ed7fa683393ee2b7834276926494ee47562b2f05f17ad122c3e1d91c073f0800ba544e8a40627112d2ede2e24becfff9af3898f7b736c8 cb62c91206aa2964a70c6e079e1c5fcf73478409c4779840ff0ee47fabed23fa3dcc495b43a13f89febfc454c3d0839ca36095af09c48a197370e7b978f7f29fd2e61e782efb3a78d780f62faad43f67ed07340ca8bd96d41f2f2367c57748bc2205df12a4321db5487249674f8daf15014ffaa6c890f5c7d9fbc97a0eb021 93b541f4f3268803a6261f6408009f0a655a5f2aca3bf7c69e344f1d706b2b4ce2e4fe45759cff8461efb66f320e8e5b585261fe966cba1f021f93b0ac8490ea015eb1fbd1f7b5c2a1203480d45661826479c3afb67e7619b8bbdc3202232cbd84b5048d84ae60de9c27e42d08213a7e6c6a89e2ed1c9fe24896194ea93bab 993c754fabb973193ad4cd3b3349f7501ec9da3bef61bc9c37ae15e0a39f7927d931fbb3904e841a61258dc6f9f817f8968e1b56cff47280572390142c3506fad50c1eaa389af430823b1d50d6bbb8a7bf0bcaf00f09a9c416d7b6eadbf3bad6c66681b63e8e982b923eded93676928803ee7ef1a92361c8d463a50dec7611 16fb36b1e5645d6d11b6d9d5915dda307c45768b40ef3eab0a3cd47795857ebc906df50d62a348f1b50e78ab823bb9ca6c5c3d79e4a727d2bb4c7e0158f789a06a5ef10fc678b94678a1494817474ff3eff2e4365abec2ede8803a52ae223bd44a9f6de006f25411203a252d3f0a7d31433a67ba37fdf5c19cb1dfa8f6f2f7 0a20e40940b1e2649b409d89bda82d225da83f7d7262b2e833dc39109a9f7c52d2908410feab8bace469cd5582d69f83c127cbf94b2ba18a5f693e8addcacae9fee9efcf00b43426908aac0d211988aa456890b250072e47c849ac5a2dd3ae7aa094d2fe2fd31b283e58bd247f13dcfe7aaf7051a9d780aec1971985fb6c64 83ad6e7e1d7802bb6d249182642b478a1cda88d141b25e82ba91ef65fdabdddae37e9dfcbe015cea798f895f9c3f2aacb14022edd5a5b613b7c6dd2d1095bbb107b03af6955cd516db4c0f6bf2fbad7da9984948dbd8261a0da69898e70666a1f0ce8f0f657635f50e55248cad29a7e737277b54bbc9a6879839c1652f871f 2f2f37b979dd0129cae254d20ffe4ef7aae24e07191c0a264c162360e328cde396d7717c5e45a27cbe06430b4e35d1b8559c34b81a7ce00ff0efc1c98a07526dbcc28231b1fcd32a3a8afd2f757a4e5867ea67b01c8989da742222c8cbdb568f8c38796f8ea3b9c782ec1fd018284179897d1c09f184b486a61fad60490c5d 474459d960927e73a3a0f884cbe6f1df3e6b7ab90422e701432722286919c4ba13e1292a8f87acfa353622a10115e7899f204b5358fc8b9ed670e4bcf55e76e10284d2912c9a00b36f391477de60caee3c239f990343ec10d47fd989f3719ba0020beb04fcc3601fdb5b19254abe0a3026d47b85c6b2b206213adbc8dad30a 7fa9eded4e736787646900bd08eb1d57ff1af0a67b83f6c61894197659e0d6563fdbadffc51c190338fc5ffad81173827f1bc7a00db84479250daa018efe4ac6fe33b26bd3765dd0d996890b77a82ac9555eb388d6ac131c03790add0e0b5aa0fa2ed569d3ebf276a7aeb9ae7f0746f56148668120fd65d221e670d6519877 52adf0dc0369bbd0025f9c43bbff1adde52942885e9afdadf8dc452b845a1a37eb622c08a7bc0460d4b1b417b36e091edc6302fea4e47939f30d5e4d67db5cf35c9ccccab5c393d4c61b8e88c3dc14c6efa5cdd534593167aed46d9e2f758703cd272ebf5ad2dbfc2dbc7cdb82a4d88253e47dbd33abbcf72381ae994b6b5e d750dab87b87aef008d5a76f5251bc35921c22c51aed2f73bb9da6a9a5d43ef6910e25730556cbe8b05a3578109ca2dcc8821b223ab51ee27112951825028b7d48de5590c4aee2a94c50d589644cd34f4a8c027f98d769236f6203344994b05b4ffe317137d0dd6bb13c32bd8a066d2ee7915fb51d5ec2a2b73605a68a6a9a 65c1521ddb30b74e5d760778f1b1763c0c935fc8119e41799b76304fd3d2da90155109fd20b31cd661dba5decf444ef8431b3edf47ea1754a2ac96d27342a5cb09611b90126c884ffe27f7cefa08f6b84b023d3095ded200a24fa692e84d3ea4159d90ed93e2cdd131faf7ae0ef6367915c47ba9029e58550a36097ae25c8e df5fc9e8a3568d36d08e826b377044214415bb82271aa769160959d78e972cf5a637fea493fa0291703e6c922e0a4684fcea3e0c8ce794fca23a154413b095c0a2bef152ba57d911fc3d9849e7024afdbe703b4c7c959cbc01802f413236999b1a749d3a12bc3c190881322fbda197a84859f1d4d7ee7652a5dfcfaac40f30 dd003f807e9893e2c6e7892fda5a67c90c344f7220b1025b61fba8651219c6499080e37513bf84135e95ccf1069b3296df6c6b4bbe46f064cec3fd60a0607393b9f29353f3cac0ed86ea823d2ce65174c9d69500a4bc25fd8ffaba8813116c621d3da8735a0e13caeacd7a8931b358f75df4d5574e0461327b943bba799c67 993fe07bb180375cc36d07734ea13a92a3d7afc1136938e8d4059c919b41c7545ca5d469cab0edede80b627d31e987235f2350ff0c9b75a9e050b0537331e70f0df6aac3c5581bffdef5d1b24735d15976566621ab52b15a1bd4d6725e5d5a69d5e2867d209929f1184b8478ca85fe04dfc6fdc0164a76ff9e5da5d3a68d54 e96463f64d34c9e0cf7133df9a8c18a6689497adf6a86e82f71d89c2c8ccbfc81ed616d66ef3f29468bb57b236a3772889b4ca39bd70d3b9022b15830bf43c462a493eb29b9b2ae43f07dc29542d426e659c682f89f2d655e7d94cfb508b25f57dda601e1df6c5cec8f8565ec110bdfd1ae69a3a84c4cbf12929929ebf575d 7082d2428dc0fdb93472f793865a325f3ccd66ecf9072df98b55c6a788264f0848bca0bf864f4a0d4ec941bfe339f60ee9e6c3ac5f43031c7aaeab97f1e4831306f8911ee45ed10148b51efecce6b7293b8f40b4642af614f204af6c072b48c47e7074822570f317a5fe730e59d725cfb698db0ca73c95a532771ed2cf19e2 729dccffc76b4c9b32280cc6cbb1e20bc5a016ead5820d841d61614c604c7e4e50ef845e90c140d0c1c7a312634c59fde56c147a1c394280f01b78d28e70f31bacddf09cd5efb4bb51f956280aef96e617b6fdd5b2c3e9e625680a34dc2422fa6efb7865ea061c8088681532d8103b7781294b028efe0b64900a9c240bee05 e73683859f5515b3076c435324e2e2c914b76570852a7b7f562efb6121a92ceb9f1d37fd2b1cebcde72824d0a6c1e91a451be797cfbc3b6d47759ae09b1edba945970648030686fd859afa8a6765ee025134bda9c2d6b13c22fc48412c9039537a03f831f3d292d43958526b9340a0489d9d7808e2904ec531c7d56e17592b f62d1c9047be95c0cae9be1785428ec40897fc27dad0714654ff8fec5d7188b396304161dd65ecb626ed34364d4b06610107c20cf25338a3160ed462c2746b21f774e8621a1b7a11b6ab41a727a03011516a993a8bffe2b72ef23c0f30f23a6a0d41c579ccaf0c97c19580f3f0185a223e526f83a19b4477e877c67851df59 0d1e29ec76b7ea84bbc7958f4fafcee76bc0602e09756e324c67466dd46721c92010a3881514b25aa093c1f4709d60df96bf47f2c50065253f2f3cb16d66b5d7d8d8281db3632a6adc24df76a72d4ac515157347ea5ef7defced3beeccc46345efc52c6b2fb3a06b8d6d65258ea44fd63ef9f553882f09c83a776664ab569f 3ec7d69b8730b36a2ae6ebfc3fe3646e286ed25cc8325154057ebc9edabf2812fb8fd247d942f254e5594b5e4ff122af8f04c9d8cdab08003df911456236397c51b4efaefc1011e3b3c5d64dcd35091626b951cec80e89c6cbb9b471b4314e5ae0797f7d10c5505f4a421d02af13304eec5414d548c36d3c99c8efe624b310 792bb3b5fa229b08479ea9385c55ec505270902e5568228d5332574eb1d22b27b9fdc57537852245a273de669d25019f771a7a5c30d8d337c151cd2b776cbc2ee89351ca5c4ec2555062cfa668bb75f3203411a71bc2ab5825b9ebd0621893348fa4b8e8b4d9e458a429d6d26ebea99dfa01b279210c3ef464426627bb2c6a 8f4ffb219ce04a4564015575888d0d76e013f79ea964187a0d6ceae8753e18bc7f0fe928037c1eabf3769214975c73f5ad3f0b49cc80d8617e500802437d9020a4a0a0e98e43b9c16cea472c0d5e4bbbb7d54c634e97228f3c513550d63c51df10b22f710ba41de00e3d209372c276f7b7530260b16f0c8bf273cc6980f6d3 63b94a94d8ca813eb601a2f07328cea787abf0e00a5005ee49805e58d3c33a5cf090759df241ec4c871257dcd3fc0e7d083a967fdb3fe8383341452716ddff24799d651bc1e7fd4931c0e7c1a868846c77ede5c091a13a18c09d6d13d103bcdb5a77c16296ff63263f0dd68b8f88d3ed3bc2e48ea51c5c18029720be5a64cc def3cd0c101b4275d973be1310960788860c4b6c05eeac7d827bd9963cb0bb5e169b79c146614c4a4842d5d588672eedeb304a89e2ceaa93d42b601d5aeaf79f9bf8a9fbf18b926cb2e626771cd7e2e07447d355e0257c22848f48906b58408a8137ea44e90ec5c804aa9700ffe0677bd26479d01317eda6821efa7f341846 d3d844e272385add9ed441c15b8d54eb50614bf2e70351a328b55997cb0e3db12320bbedfa1044579bbfdbe7380b6a3056bcaea088c85b97613f13ffdbbf6c237c25dd8e7b3df00cca0effbdc389cd5937ebb2395ba7d9c11253d8b7fae27f30895b1107dd460c78bf21c2022b328cae888ade147afbcb01a477d1561a322c 22b422281444c30d7319627c12f5775b7ca56cf58c0982aace7ae0ce84b5c4b20a664c8efb1183e3e673e0b689e43c45a7754c3c1a30a3094ae9ed82f5286293ad4e5e92ec9ce384ddb545f9a00723800acd1669706e0a5708679bffc0f3be2831c28be5ae64f8535c28844f5db6ccc8eddaf97a85aa2b0786012da0d69945 13d31e7dc3b4f1611db18db7ec703facf71326f9acf586f0bd32aff925abaf86682819f37e8f6904027cb5731228a512094e166b149d9f3b0d0eabcc8ca6ca6c41f20985e8eaa0ed74a3f7c7982aa1a4f247eb08f6f087bd8ec8d789c6fde9bb75e294ee405de885b33d192b0cd0d0f51903fd55453666bc10072579b21b3e c25b6f0ee17043d7c83ce1ec05994da4c403bb51ea25d27b084fecd5e596a43d37fb6f2f2d5cee95e7138a4ded8cd60a9eb83771f1f011975e2cfc4f1ea033b7240a5d87e349831cfd7e0bb965df052282298bb25d0c5e72ae086ecb80a5919a0066f2ea5885d112fc08d5ff78308aab9477f3eb94f23a9af9166901d79ff2 a3ffd58d7a8062b50f4b1ef73ece442aba266ecc05d275750f17ca0af60872f9472e327b5a5b781eae92fca9589289297fc04498891b33a732b60eeda5e8941ed72db22cd99aec7687fdae7d2239ab496803fb7f4521e3e1b1e5df3cd5559fff7ca4f014a7ab3c712689117a1f66ca2cab11b1a930336d56947746c2c2ebcd e8fc576c053ab8625061f909243adb5691c22bab9e8307f1aff9596ccb5304b1aa8451132b22171dd9b0d104022e3fc253ee07e73fc297f75ecd4646ee6a21742e033056e7a826a04f7b525402656f8500556e6e378b7051bada5a095948a1fc651a681d854fa51825033233b26c4ce62c905bd1a7d5a4668301759b2f7a02 b944cfec5c21b918e4b29cb3af1469392eda968c5b4df27a5e623661f6105f7746c4150d005b6c1d38c731fe6f49ca4fbd6a282322806f7c0907b4d6fea19153f465fae3dabc3ef1f9ae170653ac71bcaff7a315cad72204077b92d508b23cb237604859ef8c2ad8490dca4f622e16a60871214b719406e0937a14e7754fcd c286d6746d8d299203d9578655cfc574a0fe027b3ca449e19facc444859f51ff4a3e7947e76b941bfcde9e91bf49e424dacfc7f3f2d57d764234604908d44e9cec3cbb1a5976cd882697f2ae69b46888edd364f47a528bd092954772b3592b7108cd1bb60de961ee82220f4cb2521f6fb64ad02161bf3c3055ffc7d97b24a1 e1552a5e7f3d3abda7779b7f4df6f76a25258cd609a959e66f301ebea94faf846fc6c3b7484d4fd1f2e34c1840944579a4710e7889dce62f1aebfa5693e3333f1f9afaf41439c9babbf49acf54571630ca58ff3daca297839d4384c77d00d3f656da064b7095a18290f52e66a6020b4c0d0e0e6d5d3af818670c51c0b5e5d0 d20f125c0f4405627ab5a0c4a6d74a77ba732afcebd7e9c8b091ab697c53e3bd5fc00dd745b80a3521ccd233df15f7fe9c40d34a3ce3ebb52f2c729975902d6fc955a6fef71d4dca28a8b36c1bf9898fdcef49546e82492554940a17cff78d5e59cbc295b5082458ccb0e81ae519e382ff1fda6caeddf25fcf96b7b35bd7f6 dc16a78361c8f0cda9c88e29175bce6722a5a82cf04c712c5404af8262d00b2dd59074f26cd668c2e5b0cb8f158e18d20fda399ac84533ac81a904b1ec24c082cfc266c6b28b15c4e563a94e52e5230251850122eaa893d6533eece0d6b59ac1d669900cf4a347b74fcd44aa62f4d4684672d7602ce25106be3234494c4b01 c17919d8507e7491902ee48e8999a9658b97ffcad2e9eb49eeaebd9143f556ac9c0d9ff4fd73f084cc133af1315a0fee2248520a812f0551de463a24afc6809a68b50bd49b329d9a83792331330a1cd3002df4067518b88628779584e2ab85fd4fd9a35777b518ddbaf58abaf95c932db9c357984aa5ea5ec4b0f211693ce5 6db21538d1477195221f4326bbf99a4bfaa9218ecac3fbebb492d36f75068093cf55fbfbb8187ef5af1d826c8882c499749bebf3ba5c515e97de3f0c222e81f03fb2d2bf4b2932ebcbf154ea1714225d6fd78ffa775de98dd6c34b07342d950e73f9c1e779d19ad24f07b27b7129c5db28bb5a729727eb6c1f0d0dbf87732c d7d49c7b0d7159315ce0694a86dadee6caa516ccd24d35333855666a4e59660aba220b351a8c88e731b0d74d3813fd56eeb24adeabe6ac2787f6d76aee2787f53e8238aef7950be2ed09abd13a18da9267f83de74522855f0cf1c584ecf29d139a14f0c6432b1ac22ffed104590e14742df17847e1ea3be0c387273bb8e121 e4ebea0be5c3f8dfeef4fce37c98edb6ac1a69ecb31ca57fdc725013de578c9d313f47b3f120d09f3d0492f9bd5da8c890005e82eccc396d550b8e35ebabe2a8633772518d10d28a7e8981cb07b9ce1f9889e3d03ab6f3f0fdbac1d305c617f9a50777075977b2612deed34e1296ccb8891c7c242965a397404e00be6e8274 22cdaf8da6357fbbe3fcaa932cfcc8336bd56ac33950900ec0d5a843faa9dc64b77b3a993987c14350faabd948b3987a87060914724d9735b264ea522ec6df689c232e05c90512c0f12d5560de1890866f09ec2cb4967cfef0656260f54ed8f0245e3c2bded20c3d743028214b4ca73c7b0d535d70689039ee0a8019cbf62b 18b029f48e022f1ff1f12ac795ae12734ec3d0b7899259cfd31184c428c761cfcfc1c0a477999e7d3595225bfc500e681f29a1ea66fa80f98bdf39a89d5aa56644162aa4ce28842a529b16f780eef2e2dee7511331804a58680c81a0da811283e1d572bfe58ad58fb563ba903f5a27ece9bf6df047bf61d7cbb12dc63ee348 a8d4f4166827cbdc406327395ec555902b51e8f03850da8f9542f0d253fbbb24b0fb992572dedb700ba3dd338cddee0e532256f2c29ff22e41eaecf8cea2090fc8ae42a0dd2406d3742ff95dc236d83b3243b45d2aecff891525a0d429dfa9fa47d658cd0b47bf508daeba39be9126f6435fd3e21ed77b884291a52b1299c4 13df2bd32349ce7ad44d88719bcb3452646f5bac6d04c51700c96e55608484ced972b512418b7eb9bb6c7873f3d1477a12364b9b27f6feef2e3607022abdabb8249149acd7ba821f811af603efe20409f9acd261e53abbf3503d914db79164cd7ac0d02af00fa9eaf159c6ee1d4e6645c1db7998141e647c1bc3b2243bf3bc 6ca9b4643147fafb0e0aae1fe24569f4615857487f1be9865131764f8c6f0675ef6798f18ad4e9d5ec26dcdc5a7889a31a4e3a2c97933617b94e188d2dbb67b860e85e0b210aec97820c5a15f57f3ec6c846f6582d9f0bf99ee05b07abf64ccd3471a3010a63ebcc7cc39c7720f46d91e4d5b7b59c88da8bca5917877939ca 96763ee87f73cb61edd167d5d13eb6175c084cfac84ba56c6390455e42f474967dfeebc63a996fd4e849dd8f9692ad4a28e754f6774d37fabec8005429d3dfaab837707138266056d79e3be5ab060f6a0947a2db1220cb7b298e2969f2e8f4c14ee511834d7cf6ffe465cfb8f7c739e4526b13bd9aafc6c7f6852095aaf1a1 9c9ec78afd3239a5fabe695b35b631c50aaccc8c4124cd9022dfce5cdd83a7c1f5cf0e8646fdeee883831f2b720e507c722c32655dea19a26e4f4dafa3f824c2abccf063ef765a6480956f88e58aba6fc8768fa7648f75633b55808d08e64b9186d6c71de1e6bd50c290db15a4c89014472934ef315500666aa515d38262ba 069d0581681441740a4b7c1d1ca361929ec8734af8630400feb0ba59d8432543e85c5b2649c024eeef3f30042eac1bd6648b0e83dc53215058cb828f2a7cb910a080e3fdce7312e66b529bf17d4e5a86d52e206906e431f83051b401265f0445f0bb1f69ddf256a0408e0b8ad9ceffd32a9ccdf7b9402d821d739e06074425 8c8ee9bcf7e1d23369276e58afbb0482d9eb85add648fc2b726400f4a5918494e6e14b1d46bd01ad303464b4367364d5755cb7cb4c5f32bbb37f3b7177be38f825d370936b3d291a81019a46ec2bb79a3edd0ba525a5e016f0883d0987d97e8e6b00620bbce266fd14978bcdeb8bd70cb0997cf11f40266a7e5056217917d2 e720e55a923b7cfb5756028d34e57d775de86c7aa56cf7aba899d0e77a72e25dd80dd8adcce7c1512eda0453c760cf36a2cfa296e43cfff0a6dec28113a1889db68f0258dfd69c291b581bb5b40502f9e18801d434f92f7d03b6ec16254357b57ba5a4bb0e4d85297e8c4dbc1cdc80dab172421cc1c1dfb10cf2c96d524a8e 99638bd38eab05614784f94ef1a4ecfbd816092e18c9ab3daff5738efd79b51db9a93d2ac0e80479fcd08054e0f5399deaf6398a0838da62bbf4ebba55b244c7f965af5f3f641a39455a725091cd0bb3c16c9edde9269b586955e5a866c9a530598aa54957dac68549ff77cf685173061a2430dfe5adae6a12896d5952cf37 53459b93cd30e9bc76b0edca624c3d85313bc5bdf4cc76ebb82e9a43d95bcbf7325a8182f07aa4f056043340dbf8ce6a187c1705a3897551bd0e1dcc8f3fb09ac53c7227e85c070aa696fd3f66bb9dbf2610ffaec4ba0d37e6acd1c340ab5729c1fa46caab96fd94d4e212ba097252b701d72855fdd72c861de1d69d0df79b a57fa6ebf631574a83664223d95faf416468fae864dabcd2a71da5095410d6495d2ef4868fc7dfe72d77d7f30f09ea3a4009d399e9998b37b7745bfa5b78465c523984057aa9c17ca428787c7c070deebb7e4e3e3c7429cb697b91f5af5a46114b788df2cc256eabed34c857e1b1e5634d19b7efdfe2ac2bbb4285e5f72b65 aa9cba9cc7a9af330f1b7cdece551d71278f8ccc3461ccd7c6e4ba4d693751d2f04cb01c4afd6c34d89fbfd7123f562e57845156214554a9480d600ae594442cf92821b3b0bad2c77f1d84cd90abc3686c7b6f8fe8c9e623b1e5fb5cf14f374ff0730e8d51fb6c30a3dcf3540683d0e6ba226e35e4aa80e6d45305d49b0a59 5f84e36b367c2b1662cab9e4e5f359cbf8bea18af2da7a2353aab63814f21813f0145d8fcded42fe56ec9b90c973c7e9ed3f2f7b462a91787d5d34b8a30fa2c762410e727d8544bfdb12cdb62d95df6fb0afdc872a78d268c3665733e153bcb09176b22093dc16863793e3be3034855d0ef240d26680c9906debadd330bf92 ee93ccb0099c2701a2e71b6861199207c79a30624f1e773b3fb5ad8403d23a25f6c53d49b16640410dfa2ded167385430aede652a61150852546634b92d2d2a0a99d6a0467de61f35cc49c29bb3771bb235fd6339cd257b0e09c96574cdae1182f09d27d3be66602f220f9aba917c0d3cbdc9bbf4d20f93c11a501b4cf6c67 974824fc79f3cdf59d6d10772df8e005ba2b70dd5161310dff02b12f1d488b8c07de7842c33f753bcb3cc10523beeaf1a0f655194cd977311669bc368fbefc526d81c88693b293b5a64580422ee11c776b1e7d4436cd18af8f1dbc50a4a5106bc781a1d458bc7752e0f06ad07b63cfde6abef355a42158fcb308b2d0e25861 88b57974a2d301378b9fc9de13114392c9142fd4078fcc33b809be833f46e9de93c2abb2c6fa5119ea357e992f1e879fcd80b7405693cffe7ec5bc4ee461640606672f82754e481e01c5dbe0af11f18d17dfabbe342e190e7f2ea46d0e1b32ef57176257cba464850a66d7761322ccc2dfdff00ef4e1032081cd01973e8233 31404d4e40c08ba9dea78025aa6830004412d72390e69cd74aacd88692a880f6e9d2a00a77c52c9f96861a2393b732f31d34198d88a2b7e138416d3201a0bf6b23f6d0b5e57176f88edfb439c4a3df4786ae8802e29d674b05f2098d6e864acbd1cd5a1d9214106e4d85f95dab48095f8fbd9268073df742cbe68577aee0fd 1d7f84673fb1ed400822c6dc31d56a22d150eb7b01bd431637f7e263900860114079fd7e0bb2dca152575eb5586bbe1aa71bb75febb12b5c39aeed0e85790c2843cde0562f196e8f1610bdbddf21080a38add8da17ee311b52fa4f92ec20ac43c7f10bc189a92bec2d26baa9ca95ce5b950af2dc1feff04955e9bddec88369 95028eb37b408c1afc08782a1af6fbb3e0641834f37e2ed272bb37a8e92b553a7bd93eaaf597404d87d45d0c31c234fb11d0d723fdf8e9d5546112caeddd83b729c91cf2d2aac2b4e002be7b0c6b214ba0e16c860790ee5e1a753a4ddf0e1b29ecfa534bb43a7cf8fd1030049708cbceb014950f8e7f367128e57680aadda9 a05e546f62cb32cc19e963ffe2f374ea3bf7ed9a5affa4de339f60e3e1aa7d55361705f0d3f8dce36704be4b500ec2af47fb7266ca37ef664cc33c3b3bd2dc644477b0c228eb3512b18da8d56ee1da0ddb38c757181a9e70f7588fcac1eba97531337cfe68e781c292ecaf5def97b4038732a9ac7d52c6f76ba36b888f8ee7 6d6db5094d638d8551e3d3e268c3ff1038e1677defa587e988a574eb7b598511f91cce21ec212675dfb11c9a9fded970c837fc270ffc5a5a7b0b07d789933e5e49bf8962902b0992c9f133872ac632cf9bee9de570f5314c1169bca817cf36bce129c3fdbf4da6227420e3d1408fd1099e19fad087fa89d9f2bbd8e0067ba6 935e8b349ca5f1c7b43d4e69318472985ee36368641d180fdde6f6044fa6764ca2834b873f137c071f4c197f9d1a5476c59e2629ad57b539b489154e2e9ecf8196ff7e48fb4d9f9ca73eb11b8a72652ee4baf29735f3b38e630dace9ad3207812cee35810ddeb466a9768dfa90d63b5696687824bf63b3f20ff57c7f6d0745 b6f6d4f7f6e397f79e655c5991dc4a9d65045ac0d7dac4eff8e71b9095ea8994a053bdcffd375411ffb1113f494fd4fa8dd83f9bdbe43533bf9a2e961f93a47ee6dd8818edbc810391caf25d8f13053d86a4d264b0a03832c372fb1d194e45d8265757b5573cf9d988e5d5b164c44d2ee7ce02e6b394c7ea709c63ea793e3c bc7d5dfe6b5af6b32cf1a0303a8db5b1d9b0593416427efc5cb5fa968c35decaa8262610637679db3865faa20a700b4cbd53dad08ba0f20fa0e79f9eebc4df5e77ef74bf50b341b30cbd1623933210a9c5aaae69c3a9cd55038878d221f80f98840d249d066e03acca0787018e35e9299e26118a787fdd9085f9374a49c5b9 6dd39968a836ebe7203388d39431ce67c38b5d8e3207c672ceaf4ffcaa946932fe26b7d4604d365c72d581b5d9940a4b65039cd9a0b79101c0302662d10cff4c36d8876fd34affd9f7696f6ac97a4d535fcfd57d4e3c3ac34410d87443850fb19e0b988193de149fe0540aa5ddc8bc71ec35cee91ddee93af5d297158e8e9f 138c5b22d5b525724118dd2f1b7d77466b76464bfcd45967ef53cf3ad2dbcace50c65d22a459bef414e170491587596cfede9767750dba43ddffb58d5ec0b5d4bad84bd8e01e2bbb102128a2975def0d7a5823760c697d522a53567d479dc5c3c7b1ca78942a1ea8706c4d51b05d01888e0ac3d25c2fc1532cb9c286f3d6c0 cfc8a0bd5b0e6b3bfddf15b62a8f5042b4f8d74c14c545845f6eca4acaf9f7c202da7c4827fb23dd7f362dd9a0bffcb3b38ee7e3bedeeec45fc799780a7ff895ff706e031ae6ad7dd27dca4d25ee572b3d275cb26cb80593878f394cbde2f2670138802144698d137f7f61467ddcc66ff36ff5ac38fcfa506d7f6e7ceab11a 04b3c9d5571f5fca27f46dfbce4c3e6606cde136d78ed979afed5d956bcb25f3016b03180fc57f4cd1c8bd8ff46d25fc6fcc4ae5dca59317e0622a31cb39810c09061c36c9e18f35faff8590442fd9f02e4fe62a03d85266ba883e1061473dbec136c6d25cfd509269f171fa4b534a0c1c78b0182e5ccd4490bbe57728fb05 45b1b1dee107bebb0fe8d43708d334806f1dc2ca81c5dfc42b7d81c94dcc94e84267e94c1c3c51abf261dec41cfc8cb5cec2ba4e0b2d396d6ebe64cc0a12d0dee8cd816de9a88cd5290e09568d4835815f85c10eefcb158282e82637783ff09b804e5bae910d4a10835a16732b59da547c887e91e77dcdc14a03d0103e6dac 4a71de3a186c2b80619e4e662bcf456ab0881bfceb432d9a5cf87885738a2ebcc644cc47464e6be60002a7e3353b20306834bb3adc80a2f449bfcd0483499cb41e5f83f58a90eb3ac8ac39d18622b94d9827ffe5b4198079d523877f80f7fccc976967d679f05b58eb75c337ac6b33f99cfe113bf0944b585516258e26eb5b 576503f990d3bb07c0fd1e7701a1d5d35b356b532481f31e759a7a085c46298ca5cae19975ac550cc30177fbd684c75a8b3f5aa3e4c963e0a4abcd7ff6174149818996eac898cefdc91b402d270bcbf5ddaa851b6cc07fc6d145dbce645f590716ab70bcab3764988d64622c901e8ce8cb596de839e4f01881ca22fe064b71 42807945ed70ef2fce6a550d410c7de6ad4a8be9c0141ce4e3e0f4986b0d14279be49bf06d2fdb333abea4178c782eb0ccbb09679a791a9c7c671820863ac8e1b542718d543f9a90a10f67ae8dfe91348522e631eea42176e1114167a8733224f8e666ca972398c5d1b88e632132a9913789bf74210dd112634687d0446d05 8167805a14ac50e36d00ae9335981a158e09fda16d2ac66969e02269c428aab24ba9a7df8176ffe857a19765b62684e5f0886cb1e55d6c67fb8d27f0ff020607f2c8f64d12c5f0861da372a0a58e36831e9856338c9b5150af16ffa247199d93d9b36477f066b1eb1e7fb9fc6279c7840585faebf9e3eb4e998a52352ad94a 4a45d002aa19fc2ba8266ca466682915632bc3cc85acc844d4497cd9ab2472498fb1f2a36b79ac2a6e1818087842648d1797a952c5da3cd33e18fc11f87599983bfbb8f32fe3d4d94460715e1b27f0ad7260b49acb60768a868fb80c437624271683a1b34151b439e5a843f1f3d8dddd02d3ce58d8d97232714428ae036df4 f6e5a7e3ddcbfca8540341171a0c0a07269f7090477d9c6a67a2ee5ffb3a7028fbc0e95b3e1ea725e1595eb4fddfe71b34743e7f4ce5fcb5947ebb249beefa621b9a9992f46edf5956b8169181ec67391c190efd17e30e6f3ceb3a8c9f40f0672865137265bec25b2394b4d8b5962b91d47b5b99f383745fdc2202b81999ae b07d34aef93e722caa9f1d8a6d360f41a59bd4ca0695c98e227496c01a39508cb86d3596ae706738fc44f0fa2bd53e5ed35f5a21928d91468b1d1d3799d1d7d2ce47db2997078b34bd8566578fc6097df820385c7333af6499c5c32e37488e4a4bfa48031c5e7a5773cd783e31cb5a47aff0633d40cc82fecc80b4107fb35d 12fab16b86856bf8b484fda78e1aa962b06d046659a4a52f3c3e473f2739a3b2191d38b0bbb47cbef3eb7872cf7a3ece0517db01d9f8c226767a3cad9251649234ab3c653f00a03323c668a1c4d3bb5e22a4ce389414b62375f25902c00d69d34036315b5d581f509b8ae92f8bd67bc5a84e6f0ea6d1631794d60dd1fb58ba 569a4df3141ef04f642d63a4e89d96c01ce9b0c5586f41a5dfaf2d269edaf135bf06ba8649e14e93f9acdfcc5492c335357cfcf305e5107a965830cd18cfd8ac6a0b5c6011152843e3b4bcb8f71470aa5d99e7ccdbb507c80d2ed8f70a5f6328080515fa6eab20fb154499ab9bb39318b8dccfb2bbf9be94e32dabbe3a2d28 e6436f72e59cce23dfab1eba104222c6a0784d51fb0afa5cd0e6894d75144fe1b59a3013a5d803d54ce702b0fec134fa764776e72367af0c5eb20e6d0affb7171dac5ee7a73d56b1625584dc79228d40a28bbd05c494b4bfe672eda6faa95c9dc1f35f0e16bec2f87a2ffe558bfa047964cc58c1d7a4e16d4c6ed27948593f c4f608370a8d01c89c0de9b300469c2dd99acd189e0a8cb56ed5dabdc6feb9b61b594458100f93f9243b90761a37b04a12312ebf7e91f68882e38c1cac8172c57d72e9c4dc50154227254e424831dd418ff4e28b1f3fcaac56c5d8ac68fb5407a94018a97dece53afe9095178a9f8802c6706aefe9ab5309d5f13142ef2c04 4df751d282135e65cb0f0e1f1872220526e247e00bfbc79f27e5db089db13bfbd73acaff9e8b19f1722d5487779f2eeffa470a0f2386e03160737675ab5ef85b15818f8681a32939b4f87eeee7912d829619050404ec25e1f21bfabaae220cf98a98fff0dbfe554ca6eb01836e79764ee984ba03621b439e7fbba1ccb1616b 28e7f9871380fb554f076e677a049d59952b134c7a7cd1c9c637e5337cb5f356d9861c7c7ab7f4efd96c8fdedfaa7144c48e22be3a2cd989ffff2cb6b4ddaa6c6ebad073dc111e3794ec58c30d9a3a7028778b3b04b4e8af09243d0788389819ef286cb9eb496923a9dba38861d332db79fa25c06e69cd34786ae0b92c22cf 8ad20cf9277d53fbc4a6b8c77e9033ff33db0b781a633833f6767a4aec343694c8bda1e70caf773217ee5bb1ba945ad687d9ed151b5e61369ac7f13b9630b85aecfa68d8dad1027c0d25219c6b068077fdf1b62681f3d624702793b1471193843e5604e3e0dc657bd8e850a33b1746c0c6d831a80155f978f10517ef843c12 54054a4804d221dcd3a3b78052733e0ddfbdb3041ed9a07318c7e74ce851e9b4abdcfbeede6eb780051407b9e5db01e3fca882f0bc4f560dc041b97ff12bb2cfcbe8c0d779dc839f8ca0ceb68e27f37583232d2563f054b8dcdd737a48f709c930de8ae87837eb3c2cd55b2bcdd143df870334b3290e275a268dffbafdacd0 8bb5d8ea5c2e35fecb63c4d0d5924a413baad8a6d9099089c6f8330d9a9c39888cbc2a147daac2e81e07059c3659718516e1d71eeb0d29204256078b6a3eb0772c6e3135617a2a9c4cfe2170c4e66a56ad8721c08140805dca7494cce6b530644beb677cba28fb62de4c5a784ca5fd40246321c4148844219926b246bbe86f fb642d251912e64ae152bcbb834df0d6745138ca65bbe7cbbb3017323450dbc0b47f4388299799c252933fdec374fe93457e94224db816a7c458bd99b27a32c7054f302518fbd6050df1ddd7b6a05565395458968a436f66fb42776ab4cbf93f6271a0d6a1976e01332ae00d13e3bb6b789b1e152b934979ca6ffc0e2638b7 6b265a118d64236e2fb8caee7c5c870e73aadce6896ddd9b9908c1dba575cdb5dedf66eb8cd563ace22069b88c277774032f78e206598042207b1a249393294f792566bd6e7aa539588e2a9c34b9e00e8854a9a091f13bb7948a8185595228250eb4f02ee93ffc0c25b590ceb82946ffd98d52f92b90ef81f62b64b16dfb6e 8efaeea6fbf813ae76176f3b67f457cc4fed4b492b94b786b294bab88a3c961d191b4d8175827e788f5bdfa0f5974858020010dabc8c504204c43d1a9bbf7079eaa2b80f544cc746322831442282d81875587eac06135308d67adcb2da1500f77938b6c9db8fdbc7f197162fc167422ac4eee1780af60ef4b4a6cfae913933 d3f5b5a1d8d528678627339bef3c00d89ffd0b0330852e73674cd267bc1ac47827b04e3634794829a485140ed03c6b819895c14138fbf11a0cd1d13afb99fdfdb737f674a9074a17e0d2059fa05fff30b00fd1d2690c93a302a56bfa4bffe9cce42534429ad260fd9c8b0e2256dc44ca584a657f0de052c9de62a821c885e0 ce9c591a34c263e8da2cded07ec24f8d5d329b9737b1fe831c7c3b7e3d6ea7d0be02bca48450dfb6dd69a43492f84bdf7ec0ae34d39041757d87c1cba9bfa5951930227a67089629a6603ab6431b3887b581bce57d4209252fee3e51726e22799b0132fbd263855e69e25aa4ea992e9b547d4704163e01598d24d43b43ecc5 4605b817844f37454eef1d6d5c6f4b602a35417c234ec9b9ab9f26339d0cbd39aaf696c44774f65dbc64d70cadbfe02c20f965da9f57eb02c8ed6d9cb883d2defc824e8e7999ea2e928c523052af0c64a997664c2acc9934aa5c954f00ba1d86286301e13e2e682dae8e006c52665bc637083795b91876090b3b23199364fc 6062a9d919f462b2e5daff3a1aa368397bc496e3fa6b42bbc17fc37665dbed43ee6b1fff57425b87fbecb0ba02dcd2109c7f0bf7b3e19594f3b2d1d91614fd8aad2a833e538a90263b6b7e87f534e4dc907ad019d92ca41f056c99bc1e106cc3466c0ba6b04f2c82609e88f236d1109d1c18d033253126c843f5137e2d5090 cf568d78e31ac03bfbd4c472dcd6dfdc24d97811c168a983af25f6b4a1add72fbde130c5400e517a2df5ce122eb79a225c4b6833842cb9467c8f9ed591cfafcdfdae91b8390dec86408afad08352e259cbe898f62ee66640647d017e16f2b15f898f51d488d91057080f660af85d313e7a089c497000bfbbc4d52fccbfa314 9b22c7c520d15dfb8743c3ddbdfee9379ce5f3fac1af3dc1bad4c17f24bb87ad43c92e339128b95c42ba692a8a65858161562e4dcfc5e0ab661ba96341d000d71a0453d9e32fed21dbf05290fd7a6772730f5bbbcb680f31b566a0906f0a1f91d463a1f20103a6e1a422d49b578ad89a1b06648113a1c4470ff421475bc427 7cd96cb5e75a33702dda7ce2d99511adcb4b08f8c5a99f775408d61226455234ea792ec345a34404c7e8b7db8524306bd6ba2000f85d5665c5414c734feb27e41e898b2b226ceb7c09c45fb97be9c8da15aa56009380589c42509a7e8f6574e930b20b69f5cfec97dc753a03e93c5ef69811a32f4b1d23a9fa09d615760e85 bd9a553e07b04630a99b41a3c4080b90f176b7ef933d8e4113c8095b7672c0a2bfceef163775b2fc753f4293c39874d3b58ad3df54fcf04c073063306a313c63983b836c5454875166566d9d8679ff1f7316f21bf55e845330bb25d2a166f4527203e1c3d0d7925f08341ba23a49c01201d4a6e62efdc12a02b7d55d1ec231 eec6b63e30405f3ce78aaeb2102c2527121906368ece6b0a912ebee20086e095b7f1e9deffaf29f7a94bc87702e2dfa7356b154a562598cdeaeb53783ced9f15e01924ffa370cf055a45a23deda4a4a561d66d46bc4d0c1d258f65a342cddf3b981768677c78f0b7f0f9937eb88e925ddd347e36fef8cb0f75316c64409212 537af7c22d72c558cd94c52b5a8f8636e8f4097de899193556034a3aaa2ae72549b5a7622e7af2a72516282e7b0411f411da79ca95393d5ff9488a41dca4081f2a742f3d6678662cf590fff1a4241bc6cad596fb5a162dce70ba3501f24be6cf3c022e4b23f175664bc2d422019e5af0c1ecd823141a9046ca0b095e81e88f 1ff817eb6a7cf04ef5f053361d954da1072336c22c6f8bc733cb54801c0bcb121511baaae113ce384b3245f141f4389c3df3a58922ee64574c5f75d74f76b11d21747c3c6578754dcb2b4451938c78f44957029f9f84e4204d0d5835ff585327e25061bfb78288fe6ece19ed731afcc42521d1050c0ae5ab768b6d3f73a5c8 465c03ce4698e0ebb3d7ae9e4a21120f83c71f3fa6d080626ec03b93d39ff727fa467d95892e684c36725fa237b3fd09b282014a55c90bcace8f71af2296b9701c778a65b94252bf7c878d568732a261a57716fc7a15e11678dfdd83875cdf9ff7269e4982313a7dbccd9df2182e274b7f6bcd59d6502f3c1d6388aa70a19e dbd780f5bedf5e8a37a60987e0937ccdc4818ddd153eb7e4c0aef785d28234a58bc1bd6919391f396af1f64b08fe1c55992857c5dfab5fe40e96d51ffd64637f234248dea2df8991a54091ce147b8c5f595bb2cc52ae168311bb94d8621d01fad463bb04971f56c03e0ea5b7d2f5313cae80690f373bef77a24e9f95c487fd 197e167061b2847394d1ef5afe8295efec99cf30ff9af53dbb8840cac09601aa48ba690bb33da784ccec09ea4aa5a8cc76e58281b484c4eba15ab80e640f49d1c6330a7c44ebad76a62e70a2a4b123d2f30ddc392327e642d2bc4372ee905259fe6e94b14667220a615d55bb054cafbcf58681e70226348dc17c8783322478 81585d36e9f25b27d16d490062a6f4fa514d129002d1f74f6fbcd67b010d1529e8a389e61c16d4ee65aabc838588df52c6c019e5aa64021aeff593b8c12845c0c99b27f0b489453e9f41d4031e583aa9ae9321c46628e18e45a39f52f2e4be9053f498735e1dd686d2de1cb19bb2c00858a4bb2fb38079cfef3990f5c220cc 8948ad96c91edc85443c6ed5e0677721f0826b078f322bb6a712a9ff06c9325384bb029ad30dd93af96a22dceb410be33ab0d9189a60eb5c762a0e93284fbaf6b70016217051b11cddf61bc5582b1f6d06c187fcf6f02010378cd10469d264fa7867e1443cbef0349c2b5959e4ceafc24fd83fa6243ac6df53c0186f4637fa 56399bcf8fcabf87efcf951f39284074ff308a0bd43bdf4b7e7b3d846f90e21a4021aa513db14d818e2974d4d5d74380b89eee28ae0207aeda518eece871e37541a21164db6db0c7fea838345b3570bf7194963946aa9b8a8675d903c2d9feb22918e52647374018e19b6c58be78403cefc9be9501136a7a760a3dd6c58da6 04ccde96d2e4807dd056ec112af1642830c2536b4c38d934c063757867a11bc8524bf33480be5e91b72ee66e3f4cff1bab803c30b265f771202ca0d25e499e93e1e36b3ede2d1712841faae096fcc635d2961e2ab193e61fa920ba9907f3c2968b103f925d8d0bec39492e3015d60d4c773a42d9cd038fe3b305bcc663e191 38e0870180945598200497bd709e8707aa26cdf1a0c9812d60cf322c62d3c43afe8b3745273d6f01ad9871242d27fc1749b8705ecc94707149c51adab96d45f52b675a898bd629a2af3d960a9d003b8ffec63f52a51863c007f49fc666275bd0098ca5f12d6a961b2134d0d9e5c8982d9bf78b02e04c86700f232d4aeb7b8c d53690d9e2ee2397b725e7e436eb8913d4153d4d414695cae9e26e822f36874716a948da62ffab00827eb5e9aa60f6b34dd16e4e7dd42a0d9dc92bbeffdd921f4867f86566923dc1472c200e8b253e619072c613c6f3557cf49617001135de0b417342a389fb70f556dce6a3bdcccc641072fee406d83e3a85c1271d99c4a7 23a3936d954e2a9567746695328ec626544aabfdcbca1268dd48b6e0e842ec4e196aac5e229f4b95dc12a82188bd53e443dc0d4a23b40cb13e883b67ea19411986f5bcb88cf29ffbba591046dbec9f47a6698fc04ef697f377523e99ae95ab7e64f9079333eb7e002782db3040e12606fe5e1698af41b829684e2f3bcc5ccb 39a5b77f834496bafdfea0e8f8baba1090c5b115b97c3341bcb158199386a171598b34e137b1574f51f09c5bf785db93104d465c4d945c4652cdc36d59567b18d0907e89b98b3a67eecb7a1cb69558d9a2f286bb7ab1bdde51bfbd7efcd67ece3821d0bb5419ba7177739eee8d12680cb18ca1757fb438e5820c4bffa6f419 162b0a0b7a843ca00e37ec3a4a4b04f4ed8e7f424b4a9d1456c6fe6287860ba088a47635ea731abb80cc67c3322cc67c551171219db9fe95e002ef4f54b3328ef32239e09b3ba1c972941231dc51cb0d5d8dd4b833d898a40048fa9cf12c2f73e7fd8871779431f0ffb6024c357a1cfafb5ae2a352f7cc78263846d13837f1 58f38ad0cbabed46fd47c5719fff252d4ddc1b50fea6a5d8aa61a1a1c2da888e6bd22fbec6e3543de95a9dd209a2706c5430c5a7331577025079cd8e08b550712c7286a07189284e22ca946fbea2524a17e26b38148d2f77aa2e7f61434abaa9dd7ed442b430e636ae49ba382eaa6a4bcc70033f6b96e29339fcc95afe2f48 0cd004f967c37174b3fe213af666aa615bda747723ccc90b1366750ff3f1b09d3d5e0b2e111ce46ae9cb279ca786663e2c20db407508f5a9053112f1cbe4f6c9aaf0f3dc6de9f4d3b535a64525b168854f37f7edc9174fc782bc933bf5d83e988ded92de45f3299d83088aec2ffa01ade2030177661d276715ce7ab7818c32 a48c4ef1c6bfbedd338834293893c1717f1ef6466a6b16c5c0260f4a42a9785868999167774a4df80df627564bc3e33a7495ab3b8b2a11c929420bea1830002de2f6db17a1130b75eec1ed2a74191676dab58c68bf16a8fc0457621a2669ea1e7acb4bf8adbc2289c086f47f1e01351653fc5629f146ea101fa72015552958 7fa014fbf31f02e5844242e406d71ab3b06c71ce3c1207bd2081afcf58c3dab9e39ebd87ebb6e0db0ab6f81da96a20110af0e56b45f1463ac3120db679ea2eda282c339220031c93fb244eb1d73a405b8de455700071a1a25400d42785dc6b8bff374163356ede39c4efa063298ced265eb8372569da1e2e325e5447d10b94 acc11caf5089cfc95ffac6cf7aab564ed58d35f1a6b2e4046a186cd831a1827a8913b6b6369ba327683b080f4884456cad8fae0773c3e2718099436c684188683338e7b001ecf5ca61e0edda0e2e95550f5f8902092a651dd429312a1bf4ee918e2fa21454dd7329dc99e039b33e04759352db0380cbdc986906aa16ab9fe7 7d74103970722a22e130c1f4585ba9ad6b619c60612aff65915e5fb8831fba02032d33addabde16415933ba05b1daeb3aa34fa2b03f1055e3a378eafee5d8614a778b4e6c6e8d25d900b1e2552c6513d074b398abc6ec23dd9c302912452332bbe524688d7a2881196a499726792c493c5e3f5f52de45e338a5dd5a5f85463 630434e841b81634460a830d5e7f00ecd2df1fd289e8e15bd1b2222670be241199a8e62127631639e76855b90b438d5253884f4cc6cf425ecb8f6e41c39e2918975d603d7e5922ef8bb3bbec384cdd1a1a937d247cd9a6f64c6ab9a408035a16d38dd93f2bf7ec9ca002687e302d0bc5576603e21c214b787e16f94dd95b45 cf1ac5bfa8043280edcf2612f27fc933ea521edff0a2cb7c7ba103ea444e0bc28909eb0f258f084d4dfe1149da6523a83616cbe90cff7af60603cb8a1c4ed5eddd796e2a2e10f9462b48f90fe7e493330cd308e3815e7b140ad562d82c8dd1e72ec7e782691a2816197fd605098edab5dcebb16f1649c27cb0addd69862efb 52e3dcd0a497fbd2873f204c48236b96175c760c432d5e275c8c634612d2e07cbceea765bfe0c54dbde6d31343bcfbb7adb32163228cf43d9ca6ee5cbb81edfa30c1da85febbf19672043daf93e6923f0ae7dc0286819445c7f327a20388290488eb04f47762919675592510fe299f813804e2b68a22b62776a2424c04abde 79876d5b041f903bbe92c88902563ad910ea7f3df74a17174b186b4bc5b12b7880853478a5b6540281b971ffc8b0ba2f6869ee528cffb1b984b036a6a3793e42973445428f25253dd251bb71a5be536220cf3ff8677b6198fc5643d623820df45f31448f1c959bdbeb7081bf5ac582b08dd28909aa1def6360608f2b4aadf7 7b9a92c20a86ccd50579c3162616231da3b27336a0d3e8d94907c09b1f73c46cf2145ad44606248988c17727a1067833f3eac3dfaafc1ea7c64b5cd4762a87cdecac4d2787debd03897ccb467eac59708339e11e9cb1961d3d254e6a6ab7722822b59d342a2e79e030f45ac2a3890cc7e2a95abcd3e7daa2f4cdc5c3246148 1e5acb93655df9e8e538c14feab325016bd5d54fb767331cbbec874268bfd8faac9eb0a46c1501c81a4039181337df1f5d11294226bba2976796262a82f335440dd28687c166b78398305e1c73d0513c4aa0387d20461bb69bccb1a4ac804cdeabe6ac2787f6d7252b1b69e2bcc8a4adfdbaddbdc454e896c489989d47095f cced9823c951938a9d962debe96473d9e4447b761e69e486be14a447e5e899061b6463a9733fd5d483016456954bcff2f7eebc48f934d7ec4ccb133e19b7528c371f85bc0aab2c33464843cc7bcfd34eadefa744bffadc9d7eaa246bad45616d9340a8bc72a2a75911c866974e1306e13cd618f770092d81e8c590944ddd0f f482d24fd677dc8b22ca4c08b0fe423d0931382938a40b79c13fceb09e6389669ea69d6268a2d40ec37b5fad440c49904d9f09df089e5c173ea5943e676274e69eb0da19a46de72249bb6b9af96ef17b509e4a71b531ae45d89608d14937d68f8f9d0320919bf78c58f8e65fa4c5c21dba0546c6836c117d58dccceb7e9b40 e363866482ba02eb7ab974656af5d6cc97ce1b6d08c20596434f49183a6a232c339b477e5dbf2bf03be77a43646ee958c40d4b7ed6f7aaf6258b3d046dcc1379b1a52adc89bb768939f9ea57cde21dcba5e859f960cf8ce7da2b30f671d8bd623588e5cd3b99220ec66f881f99e9d71db48ac4eaab96bd93d1176399dd1ac8 dfcc5ba4f0010fd576e236a4306a4fd694aab6c881b7ddd00e6f0c83fd02f43d011f48d443572c0abdf7f5c90700998899103f64f84a096be5a12e1d44734fdf15de9e59bfefec1c4116cbb97711f518d39e35f067809d88f563952d5558757b2bd5fe145b8fd6fcb095dcdf7c4bc3f5b98b2d0e79f5f1d967c36a9b865be1 356e91e3afa02cad97bbc52ff6e1dce666469e72864105ff51c62c9be04ff17330f4c09572376ce69601f488a50775dbdde2a9a5eee389b654ef1aa48bfd5b5b26127ca482d88247b0eb260a802c87a9cef4347fb2d041f8404997de3145dbe722264da369f5b3eb837df9f8bf0b283a05590aa4eea782c4ee5097f415431b 69c3eeee0e41b579df3eae3c557c19b10e952d5ed87acf5b804aa11030159fbdfa01dbd7ba84eca8100250e4c55b191e3b529e6dce055d49e6bf1ca48fff4e28c5255b4323518e8775df0efb5370b6d0c5980e3963d511b2f08aa1ad9e0f2727fb7f43cf8806f33f6af01a4f13063281323e008497cf1da4b7eb772f7eda1e a059cd3ecd558c03f8a808d7be311f8088aeb5605510671a8d03157e1137858a0faeed64b251a7c96549d830fb59c8c1268c0c48b1ea8ad0f5295c285bf8420167cc5da484b8e200af03d615764aee51f8768a0cd123928f1b3f3e91a46f5130b000176f520cd3f7d48378882578810a7c494d840272b2243e2ca830fa9195 7bf05deb8963a12991ad48db5f07f5caa61d6aa8e9f9ed895f9734cf9cfc01882d03c85a9ff3963f67d489640a2b989133c7cb307d5cfec8f31f6e35c87292410b3d1f301fd5adb11e33e2f2029c5e3dc0484b1d88ea400d7fa461146135ffa5f1824e8a57a986b53ea059b3c8998373e2673968ca99f89d46eff589806c12 b706be71c1db78f29444608a0b886b8a59df8e2271205f0e008b96ef616a239492e0108687ad56b4314b888d4dfab64ccebe5351ec3556b8e3a2ccef716d809d7e23bd74d75ad6abde177933553322be0c1275e91982d19e15169ef293cfc447421b5641b00dfff942d73ee56f4e79a114138238d498c117ed72326bb96052 8fb884d59c8d2e2e83296523f6061fa5be37a84d4f1bd4d88d2f27dd7d3fc04b1bac8f74dfcfd58eeff5dc8749a0f5981f854f7680a7c847c7742530dbd627829d96d0a6d3e4f7ba14dca3601ce354ed7c9d3f49ce07cee46c82da679153945115ab50a33d49da938395f29387b4d908f040739038e75b44f9f560d780a8c4 8ceaf9d47cf592c447a567fd6634c7392ecf31091c34af2d7b31dd14070539989f11fd916e5dd02ddfa41f76e0ced99c785f0c8a1aa6e43cd26db4ed7a36ebe9ee2f958fe94f42b675e199c3b2e6e5f959f6acd00948de268e326535ce3b356b28d818e1c1644a7b649f13a81f3186a9dd95a30ec99d429ebe0e13119c1369 42c023108721edcc376a6e1ba8380cb0ef9ffa8a00b13a0e74704e29a71902d9f33cbc56cc47b4d9fb96aba13009f0059b3c53f26aedea73f3346f0e809bbe904cccdc75c4228a6a9d3f56477903dc1dfc2fbb3426945620f94fae7e6af622c8444b8941a549acda534f9e0c125967aed7bd7c832cad33a6c57a0d8f539ca8 00f84fd2c87618a003e94c88ed328b711206de3bee0124402f5574035fc7d3ddcb519ea0670392c12e476aff9f59e9b8569078e236c49afa100d58b8de81f2e4ed1bab63dcb0f2c180f6c60ea76782579c83f331eacb9cd75f912ea12ca6d49e4deb77ea81257dde8c5bcfc67d3bc115c55baece396a42eda8b8752f79f8a2 9058a4dcd2f9e1188b4a36c00ba3a5a6e851424b86f95ae3f2d8765340143dc6663cb0bada459e0760a7a49ac621eb1799c51a8cd7d76bb9cd2f679de03b06022563edf64abed6eeff3780c20e965ea2111e7e7fe11f75864a3fc54233ecfc518c8cb17f0183873e66625be2feb0ecb79cb834a6ac7945c9068712bd9a335a 6f195ec6e712764bee0edbf50bca12c98e87539c8b17800f29b115fb8d58fc4b11b0837dfa9f62b73e9ddf08033d0a15dca7d3eb21a0851179755bdba76ae61e6bdc17882213915fc865bc8c44c5c9ff3ef1ee7611dfc261f582c6f1092bcdb4d22c3c8a7a41e48100b1b76a5657b013a9e4691108bd08997d3a808af31445 5d78fec3ad7b712b5f8e780ba22de1eaad1520ec63d092d44cd822760cff8ffde07c4a74013eec441d4309f5d3d1f8f6921735a1a3f2f491eda6c72b78ff3ad2ca83bf992a9fb90527eb3e5346a41e8560b9c285bd32bbd2bb0b2434bd4f7c1327db96f9687c8c7ea6888bcb5737ce1e4d20660337f0731869f34e101404d5 214d56075a7ebea66dd483314691c64bd5143b2499f78983bf152ed573f5747c1ec8fdcd5c4b38cb20eca2985076d9920dae4bb9a806115106108b329bc3f524c22d89608080677593d2073ee5e2786c7bf858fe688cd272d42b0be8b8eba87ff96725f0c1725bdee0ef988abb27c200c9dbd33d471f4717744ecb928b9279 eb98bd03d1a569435aeeb2996916f116c031b0bd5457c30d3da7ca79e85071a4d91c885a4092c1622e631fe30a2a06de75f02f185ad726fb1612a3bede5e46e01268aadf558dd34f3bda7efb6d9e499d7e113efd536d0482eb6b8c5594396a75af2c2f9e0387661ac30dbb10d88d76c092e68bb80688c975fa1a9a9a12f225 5711514cbd91aeca9cc10166894cfceb7339fcd34f7e2521485b96d7c29c0f42321d09b24f6f1e462ac7e49a98e3a66e63e8a71f37c4ba4786ee6f9eaf559655fa419bc584883ba9ff033bd2861e028d81664b89df81019faf15a555e37e551b45da582c99362bcc39f03709aa0fae6f5bd36c856e79d0fe920601c798314d 2058884895e84a14a124daca885fbb0a79559d909dcec4696cecd393a4a3a6aab414af6f7b5eae63122c373065593b666290e5dd93836f7f9828ddbeb6479aea667d78bb4674af1296a55747f711cfe5b9b90e5191242153922b58da07f768cd9489cc60973882410d43d2c27d7b3b2b23a3e93039db6f4c55b057ffd10e7f 3c02a9f005d1dd464d06c8bc8dffb311e67ad0103fd5356c7a962540a37ca57e52d3f2b279f4a53d28670c80696ed53bb9dd15d9798563ac88b47af1f6783589df59642e31b047413d5b45cccc5b4c384b05530880b94db8b26a5636938172a121d284a8edd61414a4a62f4a6c97d946306525393e25ef97a6cbab7e0379e7 aa8b16f449445c3bdc76ff117bbf29420d5c8149d61559888336db54a0b0be97b0556844a762cf9f214edfa472db4633e7ff124fdddc9ed01d063cb0cc9a9a00f070077b6bd40c0aeb42eb7c76ed2e286618563d5a9985734264c875b4beff341766edb6d2c91e5872b3114f2266c64edcc03336c0c1870a25edba86f5b1e9 4831baaefe75c6726bde39cf57551d4f71248d20ca5b78ecf22616a5f769302eb5e751a8e4a11c6640f28c8c78d57132e974a868028eb1508698fdb3690da78f4622074720f9b45cb61649b23dc976b63261bbcba2a679f8b46669fae207d39e131be1d8788261f693bca225b4e26cf9bad7746ee7d540e52a4ada888d58f1 db373e7152b8a9ad861dc7efb71ce0eabbc7ce577e7e562531df032fa713bea60c1f57c1f9fc43f22a4528abd17144311e5df980591d082a488e75f1379314ba2fc6f21dba4a285354e54e1321aa21db86561eecf7fc5c53b3a157e9f069ac687f7c11ea9a35b108df5e1ed6472e8d7e4c0867ad8283052fe1ac4f0e5de2e9 abc5d8d17040a98a2c9c535a654ffa3dbc5d94113894c3be63e6a0eaa78b944caf2670c53c820b1a687de8a54b998df371d11f8b46b1c4e348bead1a66ce23707e02f86a34c1258fdde754b564aae79cd4536cda7ac5b3ae17c82c1af518d2d406c38b1defe8404a40c762b7f38b25037dda6b0784131d4da2735c6118d1b4 de068dcdcfe2243791dc30d657f3f9ae0859e458be107a96204096fa5427dc763542cf1e87f994d0c67cba07fa26b605fd1f27fafd1dd4ef1ec6f1d76930b121c4e2791a914650bedc4cbed048f8a877a048d20ede5adcc0b87d7f25ea5a94ec0f8dc8eca2307ab2a0d98a8947bf8b5be2d793b2b6183ec35db38c1d3e5f40 78e4d5178ab8fa36cf239e561c81b95a46655f11a43ceebe3ac762344a551c4e6358b943cb667a4b2de4f9f7f12f8d7f1b655076cf77ec115796d0470ff54d26db7e155839232a54898766fa03888b378b2e600fbad5613f0b09a9d07c1965c13734f5c678b2c236b4ef6cacd4e2b4dbabd69d5df78450ae14e6311a37de72 ad54be4ff1f0650690808d7f699e4ed39ee0d2752bbd07dffe96815754a0babbbc8ac0a4cf3f2452f92ce72a2570184f794a6c932fa3849b782c2a0bf9e6e4b0cd0e301a5306a191ac79c9d709f21541cbb35154d3ae8aa8ac721181bd5032c215bf834585d7df29811707c500fc8240cec005ded2190d4e497267bc1b57ad ce81880c49ce082d47d0d22a2bb7748653f2473e20790697880c4a3a34c3444ed12382d7f2da965d50e18145a9c4792a819fcd16ede8ffc9de2ce783e8d9600113dbfcc05210df22eaf4fbded7d3f6153d4a7b8a271520b8e4ee91457250bc82b3dba929f09a95bf93798a975ab5d11f4a24b77917dba13783b1456a84bb63 6d86df0b0c631ce1c56bfd80c85a8f92f37b3f8aee7d4cb0ec3ac88b89a34bc2293800a7a56591e4f88949de7ca2d359a8b765b9c8f0292e5008362735b803d54738350ee653bd7b2fe2902c2a90f5daead13e95b4cb72511bebb45b240435458653930362510822e0744eba54ceaf9d2d7039fb01b56e6b8aa3da917d6e8a 6773d86b61874e30ffbc61f28eb8434595618ea6d4fa941ff2ce7a80ff8edc1f5fba4554f942fbd2403b954a8cd71b6a65bd7d396e76d83ad2cfa48041a33841fd3bc29cfbe3c69c77b8ef2598a96934d3ec7453a2e728b04f6671db5494bdf4c364e7d8d356acad2d1ed7e2efa6a67a76542b614ac0f791b753a2b1a2c755 e54b3333ba72b932b6bb843bcbd14fe4df9b19eb9eb33a5393fe5a0903b3dcc125784f09f2cbeea3f92577bbae102155e090fcf2be95a24a2b0b509581c891c20195b82af9d707f30e4850b4b270990980628b007af7cff19577cc7e5cad2c069d0fe2da4e0dc4088309890b215927353266d201b829c2be7ae637148ba502 adf9d2d689a99a9d43d7aa6b82683c5b13cbb41229f74d4963b828c9bd861e65059803505c10cc52ee2e669975fd7c6e27bcaf98693d8790d1b659ea307c10ab46196e7868ae642880673699addbb1991ec395d00e86e48c0b88ffc715a7c59e4ea45f6898f075d8480b4baa4cc7d154e2d239b850783b9719d21674e563af 40d77a3dd00798be4df1c00d6ee23c4f1c592af7e3611f6d650b438a96d583b68336ba6291fdf189f591b66d5805345238fd71d3b119abaf891cc9e999287e2f754b7f4e0cac0aab57c942e75b1ec9f49de5192403a5e770fb5b370c74f239dc546e56953d068ad94b51fef63bc6dd635a9d49b767fb9fa52d6eb64fda3362 6f0e9e6c348c17167384430531af663b57b61b42aad800c28e1edfd5511dfc8275a0a6b50a9b2a9083d5e78fb70fa29708444365a0ce9d668616fd44a6c50f419c72123b92faf44b6426af0e4a167b901c79f11208eb03fbb0858fb807bd5d92dc2984f4085931dba69152641c8893918e71274fdb9888798887481a9c536c 1270aec13cbd8c3c76345188cc81113ec8590a8cae306d799b02b20000d68b3313502bcc880a7d1704a286fd394f588f995f1aa461e88def58e23be9b129b83b2e8c6eb9e45618b274a4519cb48ed1bcf737d7fb55e203c2c60b1a073d31ccce703cf59716bc46a145125a92be1ea039b6b32440b7efe1f784f6bf6746ab20 cf3e0af7267c4b5c5c6ad8ec418da49f71ef9c4c14156d216228d0805fd1965e5e1b100922fc025329f6f3f3dbec35b47c77b8e38769fd6b9597395a72bf613488776482b9dfc35777b9f6886aa9ac573b4de7be7ace63f58add64a0a82c179cbed927e8802c8a93f0d6dedf18d89be10b396961832c4978fa7b1c78344ab0 32d3ff72e4840f502c26fd6e5912223184098fecc3f2efccd48b0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: Times-Italic %!PS-AdobeFont-1.0: Times-Italic 002.000 %%CreationDate: Thu May 1 14:20:19 1997 %%VMusage: 37530 44422 %% The digitally encoded machine readable software for producing the %% Typefaces licensed to you is copyrighted (c) 1985, 1987, 1989, 1990, 1993, %% 1997 Adobe Systems. All Rights Reserved. This software is the property of %% Adobe Systems Incorporated and its licensors, and may not be reproduced, %% used, displayed, modified, disclosed or transferred without the express %% written approval of Adobe. The digitally encoded machine readable %% outline data for producing the Typefaces licensed to you is copyrighted (c) %% 1981, 1997 Linotype-Hell AG and/or its subsidiaries. All Rights Reserved. %% This data is the property of Linotype-Hell AG and/or its subsidiaries and %% may not be reproduced, used, displayed, modified, disclosed or transferred %% without the express written approval of Linotype-Hell AG and/or its %% subsidiaries. %% Times is a trademark of Linotype-Hell AG and/or its subsidiaries. 11 dict begin /FontInfo 10 dict dup begin /version (002.000) readonly def /Notice (Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries.) readonly def /Copyright ( The digitally encoded machine readable software for producing the Typefaces licensed to you is copyrighted (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems. All Rights Reserved. This software is the property of Adobe Systems Incorporated and its licensors, and may not be reproduced, used, displayed, modified, disclosed or transferred without the express written approval of Adobe. The digitally encoded machine readable outline data for producing the Typefaces licensed to you is copyrighted (c) 1981, 1997 Linotype-Hell AG and/or its subsidiaries. All Rights Reserved. This data is the property of Linotype-Hell AG and/or its subsidiaries and may not be reproduced, used, displayed, modified, disclosed or transferred without the express written approval of Linotype-Hell AG and/or its subsidiaries. ) readonly def /FullName (Times Italic) readonly def /FamilyName (Times) readonly def /Weight (Medium) readonly def /isFixedPitch false def /ItalicAngle -15.5 def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /FontName /Times-Italic def /Encoding StandardEncoding def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] def /UniqueID 43148 def /FontBBox{-169 -217 1010 883}readonly def currentdict end currentfile eexec a6b9a629f232c2f7dbf1d3c363ba134897c3ce34dbaa9ec37bab446de4e350515336169bc75297ff1289d5c1290fc38fc78e4318cfd0b8d7f9a7e9f1a776f374e31179ac39a918ba448c0b8b82dd50958f71df52ad394cc70c6a3ee01b0b67a58dd0baa8d0564a0761b74d0c66fb54f4ae2f555a7b619dc94a9ce75c17000e 7d25b43cdad97e1023f0477fd1579f82401e30776bb03081a76d3061379c3afa6c985b9660da504ed8ac4f31ed315db59b3e606dfe9680a793e3612db011e1684d793fd5eebebf167e83b4fa5371a015d677e9a50e8d5d2f227635b21af5310214ae40efaa3134d407587ad5a6634e5f19c1805984142c9bd01bc20f6c29a7 353976a5fd5754898c355df32a493b4f6a3398f9ae8182831f3b18146d370f82fda2dbc50b81f477cb91bf61fd13b4cd1267da3bced4cc13b7d3b3e3add1fee10364829c131e7d24b830ec2f0fc89e5eb3802a37e5817e95d4a7138ca230cbb0cf63ae16476be2a3d40e2b0f567c5fb4922cc7a0877a54439c9ad463880ac5 cc4a388675ee7fc141e0da37ae821ea708aa55f21f836bfd50bacb95368040d6779e41515ab67adb002a88e2ab77cf9ccf1f56a03df21a13a1ce6d0356dad38fd6c4303463b753cedf6d2e9de189e698afe9b8edced2ac1bad1f2161320e4549f6feeef8f856637a10db086da5dc851b107dccf2a6f7825e4f0f921e3b46a1 fef31bc4957c26bc03d01188bb5e0b81ad7b972d1ef27c75544e80eb39a11e41d5e40360e42c564b15dcc7475eb4f945936315d9929c2503ab233189d6cc6519eada430f07edc00ab554dec9afac3d903fd46a3b13836bde0df7bb1f6fdb793dcff76c93a846787623071182324017d7758cd809cd4fc454e9cb77cc595380 1c0bcb170f7fa45300c3ca8aa1582e4fc5b9ef347de4576ff19cb1b66657f2ae18086f088145ff5a5ebb7ddcc1b8c0dca636396389f743ea78a45b6086b8a876d16efbf75cd68b93c6e521743050442ea6328f92e2ebc1b41b0395cc2c4c331194cb847556dad8d9b01001201f5b8203011d049eec892ab294ac1add721de7 f9e5636e40002f56d467ad03e1781d26b5e32b6cb7b57e3a6e9f1e90c8c5bd05e992d7530cde08fc88159a3c423ceee28342d3de57c6ffbab99bea7338b9e4e62da6804b56f52785e152a9fe0bd8ff687702b02e6e31ea190137bd6a3e3cf3953271fe257822d94cd2ce847f2273d5c02ddc41bd53badc09f830dbb0735529 e4901dd854d2709ce3a3d4a303ce353ee479bfedaf0dede1218ea6ccb76bba914bfde56bced74642e36d2c0afa614945dbaf16cb022cb9ed09cb1d5fab258da255bd287bb71ee34427e4e5d04fde93e9e41621cd2a060fa8daf7c205e25ef6e763b3239068055a40be53b11a70755276e4171a7fa5c6940892d9d68cc537f7 7e1b69b90ecd4faaf4bb610e93fbcd13ccab963e41e688524de70c2800f0f558f9d6973812e50702829d88cff7733b15445a218a8089878dd4983d5052d66c935e42d5532de8c160b043607dd2d90508d06f9ccb48a42b5543b62e1243ee3a8d4366b28feb00b2c73e29a912fca0d1e7f614679459508679091d7ceae748dc 30284cc307608f276c3c4abb6f15bd9e213e4794b973a5d73a1c3e4afdc754b6616f852d75b8191bb16daf65d29e71c8d1a4272fcf1193effc1e348dbcbe50075398c472f3efcc04295f97098b7a81b157e8bc7f4ecb0b208f4f0c823fe8a38c7a56394ed09dad376f41202e7d7c987d9bdb9870de195110b77f95a9714e79 2bc98f10e2561848cdf73b26f661bf320c773e46aa9ad2c8e359e3420edbbecc9ad03ffe262a1222965e2fa5a875ba9a5dedf753d937d3ad22fb96306ac8809aca037e24cc8986f75d93912ce89fbd64f7a93709a39c2c4bd94b65663902100a315fec69ddaddc995014ef4cd5635fa1a026cd283391c768e5dc9a972846ae a9991562d0f5a7e9e4ae933cfcf8d50819396e21ea48faf7aad10fd43125dc38a4ecdf24fe77a8a3132c245e7fb3d96d090eab0f4f8a44f2716ff7c53b38a308ceaa5f34af0200eaf231c72439dcf3854f48164f31e145c4fd75fe1a7505c50c4fe6229625bcb3cb6f212e00dad478ca08c3ab38ff8c1299f15b12af7d82aa 72458cd2af5dc0c8d7471f15ccbaf96da0cc39c0b51c6be5a2ccd61da6549d32519c5e4213f2bb8c638a92fbb0736cfa263a932caf4636c62e4b461ba8eb77683cbc2fd387c62cd250e70887417144ae922d8ad5035185c3a6b25cbe0369e60a795d7824db7cb4e572558a17cb11357b6c91d95c727c7d1d91db9f56450208 cab09fd17d34a9111612675d202e136095605b66095104619bc023b5538245f2c637f78ddb1198aaae07180ef9a524c60272499de2e3448657dd5b17db055e4f39da32e800ae3543a93e2cad811274767a240279b566c16b0c212ea6126c2587c900cbf17e8709d868e25a81025f00b52f6b5dcef38356d9c6c171a168595e 935812a0efb5e9f6a457e7ce7e7206c4f1125d280bfef3c5fa2e46f7b2d23744d52ed92162db40b78bf85b3751ecfb97b0356aba62c6010805f2607054e0cc028b2852e920a0207d16d93f833f072778eec2e4553bb7f6e393cbea406a490f8b53a4625c9cfc27b9fd937b6633e352885043e4f830dfd721fef3c5e151d2dd 8d87ccf94732da41c7e59c9c594684c6d24b44600d653b1915dcac06e1faedcfae380ea98d9f0a5b231b69233a4e4ee4e208f288a43e687dcd4f4d9284a4d79148000277ec92912daf0b6f5fa16b324a9cfb5bb659a00a0d09ebd60e71d294d8f9a6f044ccc491a3fdf98c9af8dc0c94b8db830427ddabc7ec2c2a483a2fb2 78bb5ff7b27fdc9280e401923f7d2a6f48c441aee30bd31f0db6fb93e49ff4ea14e49f75ec083e42fea24496dd28c9fafe111c836e2f62193e7a29766fb0c0d5f5212bf5ba597849d734064f44db9e8265271b4392b07375e0b8cccc255e05eb61e89c313517724b33b1b79ce5333b9f21bb9c372e01976b9911470aaf59c6 667eb5ae7fd3780f834108155d21e78ab31c2e883d0c1fb98a62abf0c144c7a0ab62ad28b99b763436c8e5d278bd02f153177da3040e909e25b0166f5c9d6a73c1d8ac9f2599c9c376a744b1fcfa5d32de5ecf30a3c90163b9d50d989a9e38d19bc86c7488aa236d42fa19595faa3e1870413c694fa750f8cfead8fd5de6aa 458c3dad1ee47c3a2bb4deaf35424d8e06d9452cdb73c82d72299d49b30b385a07200f2203ce45bfa033f84ea6e7e6e714a00a1dca211e9f09f6f365763ec4b3921924a784aed68f035042fa27dcf6344542e7323268fb6b678c3d2eff80d466c9c675ae7e95cf3d49736eeee951bc7dde934d051fb6e1cb6f5769e5f9969a 64d59d633fcb9412993af9efc89f7e13c6e2f35be57009772904595b6531e0abfd6e7c7e90390c732f7168c8afe794f6dafccccc7de0273bae11d781a05ef8fac2f904f1a717e2cb2b6acae96b8af623f99084067cec1cad6e06dea70c000fc01d39ba0d98d8d57ee7bb1c189d865b75b467c512526a6dde0e0b3f472a3697 60c80b1eb32c3a8525a728a447bc811df4a3627e9f4d0d44545e961abc809543133e547129a63fce00b18f0d1ee2899514f9e421d1aeb33843ee084c8561f69d00a02e04b0ef833dc280ba7b1def444b4dd589d00970cf561f411e29409901e5125042df042cc7dd92d21dd718cb10253c910b6e2dab43ffcd899ee81144da b0f52a321c12319b8245b01c700203284d68cb91de62be389af59def29d24c563bc305df8dae50f75120c5385aeba8def10bcacc94f1660e4d3916729b353c7eef302a4cc13816aa0bd26e6b38bafb9c39bc0c9811e6a7a8c5fc1582cc96a850e111c791a3afab2eefc1b613603fcff9dca956f1d0fca02247db36646e8f60 b6668b39793f56621d2738933d7299364ad42dd988f488b61e070282f8b05c99f232a2d8850a6af37599ea382ae5c04df20cab9c758aca2bdb1a81ee3dfe9a0ce92924a74c4daa6c8f44a03c2f5ba4652d7abc83fe0bfe4c5815e0fff7b9d09ed1b683205e359d8f367013f487dd30ef1861e48f48fbcc9d9fd642e16f41ff 2fd663fab21d5e44574966722891cb85e9b0d0a357a43fdb5c0e2146ecfde2f773ad5f9dc08bfb98f7761f88641bcd7330e99c605fcf8bfd556536067d543b1ded66a920221c9ebf86fade0e9530d3d2d66c366c167320a8f4e8b290253444b6644367e2ea4d4c50198240e7b2ee1f0ea504f1cf42f71606c6553aad6e4bc2 cb628b04b42402ddba8ba5e8e7f6b3a15e695e9a281e5f0322356e1dc1b253fab021add52eb6c43bb8263708060ba90a953b8659bdf1290d306242ab30a29b58d7c43d4b579534973dff998629c3c7be7f18689752fa1cde08289190c49d355b82da736714ba072082f3a7ebd9524ac4d4e37fbcd7073a0e974f63dc7a31f6 5bdddbdadf51c58a8c03f7e5fa2c397ba8e919d49f72acaa04d5fe473534345bd101459b94976a477a0867510eb71395736fd82dbd2e16e51ae49fc9119cb9218b43b9f7cb382d2ab92157add6a86bb9946706637e2574de75d5a9f53dc0cf92a67d9f0262b48913d940b5b7dad66def3dc136c7ef88570b70ca3d41d0301c 736b54199a351e8137b7d59c6d695ff86ca2369d0702a3b131cd5ef63684d1c689f182f0b2e8e79d32c6e6f8a81fd42819658dd85e560289498c3ed5d4b3d9224f0adf9558660d23cf1c39beb5f63aca618f7f9cd1f50904dabaa31d6d9cc30b7c258675cb4e70427663484d025456f1c74fbd3fd7e35ccb03beac3ac4bfb4 92ea69f77dcb116d13d49ed5cfd3e2fb855cabd23ce9c8239c077a5991296b24d553946bf6dfdd121bac62380e3f55efb9c43216877cf541bcb364c27f792e68b3bbe7ecd6f25f527ceac773703db71a113de1af13c1240e07251a9019c9aa9ebfde2bfc8b28fda478931d825c8319036355d70fa87adedf363905f6f3a68d 91b4ced1bf9e09825205a533af4199d0ad5da448228d170cdd1f6df35f41bc588efc24857cb6da20cb02284dfcf103887ab4cb66311a4f0db54129524a65b7f930ddb4cd33ba87844851918dda631123354b462f6a62f413d16be8c789e570d918daa2b4a6d996c6e882c2e4f4641be64cd2631dd5b709a21cd1f849c52a63 e6b5fd6f620e0da1790f7ccf56394ecfcc83a1e0241ca66bb367a1a7036b2dc6ff7083b48560e6d630dedb07f3ca0327d12c01313b7271f7b619c0d671e6b481a8d662574455d44f3e3ee5ad16278e1bbd6821fee496df23a84d996fdcaef6126d47e4e00757cebf21a5523ea7b9b825192f3bd76627723e2aa55079ba3fc0 77932e6e8aee9eeab93add4bfdc262a5d9fd962c5119487e3978b09e032fe96c0e6d614d145502bf9fd5a0529ec4677f9745a93a475eb42a39c9c7c8e2721df1596c684dd6757747644f0df95351d7fb7a99bae4909645c6da5bc8266d212e1be1d619289b228121b922e1069a188be77ec82b6903f41fedb80b856bddc8d3 447e644151c356813479baffb68d204894de0cf118df39e943cedf8751e998c677ac19048ac5806d5bbdbf5ef1e095d43077df16f990800ac65be3b07c96f17fde9db5c83ba93622909fb3e03251e9aed3b59a6f1a07da7fb37838764288c4b20be767d2dcceaef40bd77b545473f85b60274bb4a25f563e0b747b8f7b478e a802910276c78f7e2020a0a607f4711871d83495b19b45b369d514770d3cc01628ffe7f43e35b0b6b4a8e7bfe53a386556ba3c2499c82e7d266619a9a100d132230dd655bd2eb379e8aab4520f54eca98fd74875027ca90ba451103e26f218a84af8b7f14fd3f58ce7ed5b5eb5cafccb804236bded0d3c77691288de8f2335 ef156364c68c23b90689b518fb7bb9da5dfbee18eeef341dabd74c4040094307f31d2162b48eb7adeebea15ef2f48641efc3df83de80203b5717d99e1679bdcec2bdb4fd0efca25dfe81aadde108e6bf6b8e42d887fd6ec38a9cb92c962360b0906681c01703568f575b1b45cd9ff31670a8e1b61928ef6140f41bce10e832 1f7c217c4122064e0e6b4d64a39fd8bc37f600e7253d7e3479b0d4123af07ed7373bebe19f12a8688058462b87fbc3d8c611d892f911164b53b481acf4af562a11e5a12f414f82489fd138391b8d63b887595e3d8b5758a5f889a5f63aa96c74018ddd25bb6d01f9204e5f97473564f2d8b3ab51f2fd36368d84ef4c04d378 501cdc68b00721f5664aa1d441fe750e175f872727b7996cfd9b804fa1443ee8f07978b074a28cb39effe38ce53c5ac26ef8202918191ecf1668486a268f45c3d19c5d194efb695aecae578c5bd5318b8791873d92ba5a04e4b5cfb7dc7a7488e0275dd2cbf07cf3c5bc658a8056611bf30d2dc0100066e149089163228c2e c1083e331de3de4eef963bde5e8c6f6fb7506e63566fee34a550835da6b72c194bb3943c7ac3d8d83cb228ef8209770e01a35ededba62de9a66c31bec893ff8bc1eeed2eb62322075e87071d27e364f998698b03cf6f673aca20f660147bce5c0f7ca29414c556a93cf4120c8b1396ba0a0f333c178485877e5f4442c9a840 0ed8b6c023724908c4122bd51b506a3b542b0e4158bca16d4ab4944dcacb286cc1c4f048288dedee76dfb6cfd83c3ec0029333f29af1f153c0e692b62adeb3f4f8017c50b87ebccb8732b2e67b589156611076a3c322fb4bd509977ba5a1c724e6b0f03e44a19733cfaf9d6f382c011ffeb6ac14c1324ce16fdd7e2db73f20 474217f8cd6cacb36ffb66baedc093daa664c63cde2346f20b13f39ee53d6c1c07d45ef66ae29af2e45f8e27b497c37d75d03ad6df381879c48397b366c705803e0cadeaaad4bdfa280e92b7635dc1159d7b9715f96ae389637510800d4c8a2199ec1c81c774214b6b3b0cf3056a8587de0fc180ecb020c6c96d366f026f66 4f2cad516facdae32ca43f4609f4789238e34facbecbafc9e6183f82eb2fa5e5b3fc75b51ee2d90efb3d72f6ad6ce79cbdf48c10177638754dab403a13df5e22169db8e19652f5bf7b8b5bdf43d5422d093221fd2b6e2d181b4b33127e9ada085afee0f3c18a63855b307666c0d18a7e64c21dc1c83a5f0e3b2edd2479bdb8 1ab77d726cceccdf7f926bcafce2a8eb8f5ca9b32f370a192a0e043a981437da8adb9cf94b72da24e1630ec6fe8d04a6ec839c504183661736330084cc7b2188a293f2536234d2f10615185218349115d7ca81d2377c0eee17115ba31abb597d1eaeaa55b7f3b4bee147621df098dfd06b20670e1c8d15a064a1af8aa4ac70 2cd6eb52fdc8addf9633f1204ef11a813957e9469cffeb621ac33b42149cca7713c5657bd1147fa1fe7a7ca0013aecf241b019bb3bb5ef44ad898346a0dafe9bbdb5dcb526b40482aa88cc2b6065d7d8ed2a752f63f827398598e67b2a31c24be0186eb4ee8ab5e2051a5712d12a384aa4d27e4c26be290d116a71bc8e5922 27a0c411075fe94c4dc225404f3bc2911a0255fc2daa79ee596cdd48f0f0c340e712d7c25854fe0e87edfa6a4c603f3f77935f24edf4d28f537e4ed87cb1099d8c0937a9ef551134ec7edf3fba6d9e75a52fe2e1ced82957ce44699387dbc2d8bf8ffe9f6af6dd6458669c2b94e9066e8aeb02df9b69742bb8a572f9fbdbe2 78aa1a70605e35ea269ad8115bd56d063ad44926dbf6d776bcf6e11025bd638846861de1c15442f4eda2e7250cad26be98d8677daf1100f50eb9890ee4270d89585b1d76d8c526815bd2bb96c6757f1c16d789f1ca2b67cbb8838897ef038d4cf8d09352243df52f9cc8cbe35a16bafa6a67696b92298a3999d91c8efa3f47 3a4d0d7c87517ec694bdc9d239f09183d34f1a0e65dc89b142e4c62e6fb78cc2745ac3c8b660c4377562bcfc606b422e8c1b792f42d18299a2c98e8744f400140123d249ea7ae1f575bfedd05b7f50aea36a628ffcb7cda2e20a770c676b224deca5ca8983605cbd00971dd79fa5ff635ef3c33cdc3329b511d2292675b924 0a6e17f35c4be46ed74333e111704d2c44480b005ce620e83fec4b1fe6d637d9a6e2323e377d167e19edcb65f8d40c7435c3ed4960624b2cabe1649db2f6f544926f30ecf95fd8168f28d98d6e8930a8484ad1b392019c86daa74f0db4e8e993ab36ad69b03575faf26fc66533aa39183eb324ba30174574351bde5deda9c4 8137965ec9f3f14c54326bfe6467f6c282b6ed5cbc056788d696a3d8e8dcbfd8a0ed9793e18ac5e791641887027007a5a0c73392c9dd1157f88a307c0798d6d4b7346864e6af64429f66992100729c3f2154365acc90eb70a48980610f14d8d536b048f6718bc6c5b704b270a3dd6b0cc290f40e3137cb8bda7a927286c03d 12dc4088b5e36a74a349ec673994ea142aa06770d991acef5efea1338c22daed229aa2fe4f56e786932cea4c39503db16e32dd716c1a27cb0d78be21cf58efecb60099a5edaf3b0609efb52849b3c021ff564fc8e7cba25dd24995e9c164121be15bc4122216f17292e641c8c65551a44d4cee4803ced8605a36205d223e9c 748585e7e0db3c2227a513689d21d3a2861cdbfee4cfb36bf74f31a6bded1f0cf28dfa996f821103a889883389d02cb1112f643e2248db05aaeab02f5b5353b0fd66b65742c2c6cc7a7848171511b86b3f0c71e4a882c055a09077830f9f099b38d156a7afe5eeef4aea65f75ba912618a31bcbe1cc838072c8d0bdb954b5e b845c9aac14a1fc4c6e91bf3298ecc4d66709d91eacd2cda6a11b984887d2bd3c377fa55126dc4955e31e0d894c2668bb22430fa4efa8a0317e182084706fcc7382a9202d4d24905025e8600bef91e71cebf96d0756cfcb80189719f12dda753d648f3e880899ad5bdba7cc775433b40a02b381a0aed6788940c2e931f07e7 1c9a519abba74f600620bb189019ffb25f5ca920f832e1f7493976b10510ab64a8b8e65214879e9f1081c87de0784e40da248699a43bbc32c5e037705608d0af9ffdbb33c73cde820743bae3ba2dfdad6b61d3bb88e0cc72c3fb52ba8c4f0de7d1f2fd32c072bfb217f02188745ca88093b5ace2f81b8e012a50dd3c399107 28d8092fccb81ac1f78f01facd379dddb6327342a3b0ef8889686e02df57875a68deb17bcd08bdbcbcfe5f55999aa2fcae12bb2dedab0675304e8cc2d1d601d775905759c0c5cf9bdd6fd8559daf3a98b62341a0897c4d695e7743ae01a5a00dd1ed7c7df30788f4ca24a0f82aac4b24143909b4ad3bb84a6e8e81032cf3e0 a750dfebb3440e2e65290ad429aae20b38f6f80e5dc479c09b8dd6da5e0b3f525a18f6dd3f90c0394e6b635cb63d98ff480ab56a34ff7a20740c3640d8e07a9c3bc1839fd7a7da78ef5743a7238461042bcc6b1bd395715862bd35cb8c2361235bb4a80a25d5bad2a356d8ad61a7807738d360d07d8a7de628e932fb78f63e 12270b26fba34879a2cecf6b61cb4f3d460a8cd37d9b695dae2d7888052238e2694422a446c533252a416bcce1e3ba8b94568aa7f11f34c2470b9811a0f02c9ea344e4df9b19dffb3e2dbd51411f6386454d40fd1174067c7b33e7ce75acbcc06cad15184cf623f224848575ffb52746dff0f6bce94ed8aaa162eb8020572c b0f955556ff87b56a37c3ab237e52a4936440b588359337c48c92348cf3afa958c0e007f6bfbfcf7bbdb7354a405e5df07a600bbc391074f0e01ecae7dfc4114b05ed33f048d4bb50358395043976f8f8d5526ab7cc7a503d9dfbc4c0a1b352c6ee6a29c30b39e7d5a530643d59a68ad7aae841f95a1a779a9b3e3d9b57b5e 8e826a17be18ee4c4f5bfefa32611ce07e9393b0b1373af60cd30e569e496d07fd86aa790fc94e17a67f9c97e667be5253adc946cc6a2bcd662c7aff5e77432c37e4b4dccb0ac499804758babbdaf34c42570b74d42953224b1036d056118301448046053c847df44cbb17b5abb4c4e94b5a824a320693a37f47b6127b1738 268903e4721b0cfd1d64e90bd77b5f93e8d13cea8f30a9bc3ae9e58468aca69bdb7d1f18e21359762549db5c89046a7d55ac9bf3f90ba1dff2eb9b5931de99ef05d38f3a520fe0d0c800997cca41ad00d3caddbbf6e6240ae3a3f18b5cbd3ff75853d6d15ab56ff23094edc855b8a6e39b1f91ce9d5db388638596c9e4a9b6 8f056731eee5f74b7603038d6e1278abfe08011cdf54fce87119f087537f6e79313d5539a18e4b8e015f36e00d98d135ee1ff992d00d67a81bfd7e3350aec3e8c533f8f6ff10e0bc9eb542a1fa7f8109e7a51c78570a06026754fdc0f8adc65288965d876d929af1a2a1aca0475a655bcb950589759b98209de4bd952f4a31 2a14d5d7ab9a221744ef2102af933b7c40bac7a173ffb23d87385cb223fd39455d6d3b6840bae8b208b1e2a27877199ea5f4db699c50017cda00305c04d87a730c2701da915f1a2804c8e0191f8ed22f8d627bc8bbcdd48b7f26f83bc9564d81d046ecfee8a725e3cbd99d37783b91fd2e68b4ecb27f84e42062eec67d217d c09e50dccefa314db45b3d4d23a18943b085fe9ba70ad17970e0b5d8c326337646b05f9125d7ed3fba3478e43113e1f753e9eae84a927e084de8bcf3a56d06fbc210a0779c33a50ca8f86497fadd17213aacaf785be6c0b7f1254847e44e87921525fa83044824abcafa99839629cf7a5ed7e4c126b01d93529b32b7bd151f fd9aae121f349b81c79f4ff6c382ada0131b1066bf92a02791b39dfb9e3e91822a761e778cc46de07e170f95d6191f3282fee93e57e5f78708e45632a7e162d442f42aeb9f177b6e5d13f4534004a915c10f7921a6db090f6a7525e4d5ea4ce717b88aeb96cd304576d24a193b419792eab95d0e7df08890768787599ff814 17f4066a791db68005c7965759f2ad91fde7385c1811435a23375a61acfb430705b8bcffa56744397e0673ad1f1898faecbbc95cb2f7cf2d8e64a0442276e0737e3af8d448f2a53ed0299c1a45279883bf1ec9fede95de82cd3376554d8464b3f0aae61b6f38e040fcfba03fb3e43fe7b11d2b35bf3f3ca22efd1d29dd9b6a f3d41c5ea2929e502d18347028eea275244b6b1cffa4c17b17d6695e350e81826780a8dfba0201cbe1cf3c1c43dc6387646f6ba421934633fd3955c63cf0c8b7115a5a66e5a03e9c5a5793e033399b70edc30afcf839b2ec263483d3f3d8764f3b2b55179c7dad9339d360e948c68ae2947493f4b0a4e61f04e09fb81b0e77 da90531386bfc57a0507a285f67a23bff25a79725137ab0d3dba371f4cf2448ae1fcb236b23f71564e53342f8688d7f40f3986c2779539456bc23e44395003b8097547e3505abaad403dfb147680609ce540e52929c83ba833c99623de2e0b1aab95e930f4a61cb069d75ccab1ca5a3fa737f89a0b31193b84821a693166b0 f97300e0f5079650dc8f907d799c102b69e716050ab526c0dfc7eecb75e4f866caa3c2232abcfe363ae6b5c2bc92e5ed714508656372e422bac1e1b341e89ba11ad3dcba27fd080aded42be6e8c6a870365d44eac6fe43c103eb63b58cab88d474f4c42e46edbbedf6d4f764cfc865e80cae7360b31e3b75a4f0f369a8e3ca d3a5bfcc93cad8f1916bdf3f259c4a5892b65a83704f8dd6ffcf2e57cbe4cc7f8e95420f07fe24d2a9c46c5a77032ed2fde68dcd66bdbe667dd187a94cabff1f9f10416cd2affb898de59ad102eb2c973de95bab961c2570e5d836d48a2b341de3ddc7d0b0b71d3570b6d81b8bedb8b3d0739449d7c52cfc41cc8cb7fb93a0 1af28525b0a53320e220317b90e499c00cba76b56c61076120c37d6934e7a356b1ebae6810541dc2c630a542193632b6afd64af76ad61650b2bc150c812b153e075422b20b5e3964a71b12be2072728c607505429d5e715893d07e6b9a35771cfbd538f5d44017f4520add4af9f7fd8c17ae5c26270bac6693d81ce2a831cb 380e2f1a0ebf1fea8a58b15399984009138c48bf12cee4c9af3bc911a829303f538a0f52850b2bfbaaf9d72558215b49ac3c1de809ccc50ec3720c90a0c4a0286f118d1f1220b58d791a5582e4b187b0988052b367a4fcb1ba8da53fe734699f908c34323dc6cbcfdb8fc93b6d1a11257fcf87ddd65d3f01c63078ad69dbc7 2490eceef26b2b4a36571e70ab8068a9224dba2bfe3902aff31d7164e9af4cbb7ca830d35e151f6cf72a2e5f144d38bbc8b8377f390e730212143a452adaf9682410c1e9416e6d7d24c048ef65e580491591924807ba88a85ac6064c5ade510ffdbe719ddd38b256ca77a5d892913a16da4a1481f4a4e9d0d61c03e32ff5f3 db0dc8d50ad7ebfb09845d4c6ecd7a677b760d1e499df8b35e6bde600928d0555d56db1a00aa761a7e09ad5809244a52e70fcc1221b057742ea227598a2b320419fee1f8f0ead01061e2e805dd0700c5ffeafd678a8651771910dd7cf8a9a814589ef600815f178ad546017fde5e333d64fa7b3a79e231306d55df09a01c21 fcf83de1b06982bca10da8881bb31378f77054e843f6a6faf686a5dc9084920206002f211a69c1d136e81ad1e4a3348aae77cc3fb23230cd44f8ac0c34b1e861486f0dc8906a153efd9f774acc9533fdaefc238df9bf56c98626ebb8351d75b4e76d510035a60df8b9dcd5f9566991dcc897b0dd3b98541cc19f581ec026de 5bd7b316981eb4fa5c6e0e8555568c768448fef2f66ba7281d8ea05d632ac772c8a42123315a7bd43af7052a534eebd8507801a32386e6aa4cb32f2cccd88f70564d77edd99221251284e6521b1af01dfd8abee459f994fb653e051a5cd35b62bb4c2ca86f9e2bc51444ea8513a5dfaab452f39a41a1fbd4b596174d6920c8 d78f5eee345216a4888260840594a822de5b59f8d61485d359417c5369d5a49fd977b759d431fbc95992607c9fedfed9408603a0a52aaa54bba54f3a5d98996837dd4a01931235dee4b84d92d27154a125a3f529151213af89da7feb9e4f1293774740d74f803541aeff8333dd58613362c57094fe45f727a4cd2943edce7a 697c6b1c89c78f739242d118394f20707cf861bca046a8f86b1b6d00980b90e0d3a9e04319a2f1c34069e2c7efd65000fbd250ec0b25514864c91a7a4b8eb983dc0c246f68c306abe147008877221a877ea7f0e9234329e89b85465b25547461aeca513f35b54d64ccd040fbd316f01db500e3cf7d8ce9f77a490edc67af23 ba88ece1f02e1601cc73d895c11c68e709f276f88660178b7b0b9be402e8ed4401056d0b4b59c5e53a91ccbb53246888b39efc1b2bd4c9b5963979a62b5e34fefb06f11b8bea7f6dd41bd22d40c2e7b176f0c11044ad39b5aa0d6f103102ab7dd4a49b269b93e15333419135dab9ff044650bc214afeb95f897bbc81ca1c07 a2967e6607678affe433aaca13b8a3a3293c8285b7890aadcc8504d88ad1b1d507a416bf68357880ccc2b3b2bfe6aba7c0eede89ffbd383b6b3ef1869f4b80825d21e2bb3ed6e586379d9ba26ef5f61dc226377e72b068416ae28ce608fbe7da8ebf491ec59422699c1877cefbe113856d9291f3ee19fba2ad42d16954d4fb b581f15dd6476f03e92663c41e57538e8e002a2a3e6693aa9a05c49d57765baf324d4569eb7bb664ec0dcd6e8cb109f5e21dbb168aef008eb338d6785e2dea86ea733c485f2cc8e86efbd8173efe88de6b0574a7c7f51fca091258185a0691840e47ea94401e41bd95e41c04bf1188c30548455b53f900fc769f87a5510520 61db98e5d149df129a25573aa8206a483ac63c8e4c8a5e51e59a43474f9adc05bc1e1bdd796dfdc68f340580e87da8e45ada31ae51c67dcfd8e886844b2b25c3f138963121554efa1ad1db48cd8deae6617678f827cb3559a4c5ec736b0055abcea816521a12998da7b66b5c8dd2504cb17df50270a2d989d7b0a81e580cee 8c39c6d5fe296a2b8cd298ec84ec4c9c17c39a3852d55c125a4d8770a3e0ea4668d97578b94f099ee92544ea2138308c388d94938329c7747f40a49b1880e6edcacfcbdf6d27c06741f0f204150058e224360c664fd49392669a5e6adf6714043ac941598ce467feab295ab712a6ec17a5c7100cdb2641fed1eab4784dbcd6 6b383ecdbbe955788731a27dd7da80fd8ce314cf6bdf10ba612ced20e89787ab9c4262ac3e7860d63a2c4d0257c6d51189f6c6851847d0602226fe91d7fadcdf66efe32e8fb9f8e907e7ecaaca3c14b5af665f57fcdc2414e978dd83625098c42e53103c720c96f2eb2233a1ab567563d090fa95b170cfc10804fc21ff068c 2d806c25d142f5422b15f55885761dfb48203117169ae6fabc96ed8284ffe6dd1d0b9fce0363fd03a43004ecf25f7998095ffcbcdb1e83ebbeb305c103d6a4ab57d02c0f9a0ed125d87fbabf6f78880ab96c4dda1779fa45172a9c4528b035435a18684a6bf8fe68738d6650f7cd40233dee61191d97f0f93e0b239cb775f2 7c0256e0eb280728ba50baaf7c50c240f1962172834bfab118c2ae6dfadf3518805dc0f291b299358f3c6bbd771ba74eb228de51237640c0ab5fc066ac74245031256c820816e91af3d618db058b030c4aa6b421b33a4c40a13b0506c67c280bf725373ba45b5ccd76bd0a2b25ab4f05bae6d2052a93d9997f399b5555f87c 73b615d27626c19e2751fa3dc83d297525cb7ab920031cd62f9f046987618de990620485490275957a834315ca92b68c06f6b3e18b84b9766154a2f52f9ff6be208809bbe27b9ef95468cd1ec05763685d4c57c6422c11c1bfe232eeb39f74c320bd282148c34006fecbd68a794f67112ad8eba168edf50e5cc7b5d1bd77c2 773201595b996d77f4e5894402934bd2eb54ff7cb55dc242cb9cead58c0165af15a37c8cd9d3371c9bdfb1dc4411f94905ede644239afdf18b31e45a62bc8aaf47c01f33b90a2b0ee9253a99b9d9648d5ea5f95d79f7e5d7d6eca513082a5caad32896c76795efb5b23152b80cf798d7b2efb75ae8f42867137d2837e5a6c4 d890d4c8a5c1e3e185085ab487212186acd09ecf3d88748223bd158e21e5ff572093cf5435a776caf7501d36f36c95a434bda55bc253b9ecb870dcd891e8fd42adf8c5e17103a040f401708041b07891d90b279f4302df9c9d4bca1b60726737ae5b85bc4a0171548c7dff1669fa4c86d9b96239829ea2e0363b4a02f34df1 c5fc7724273abe2bd0bfc9ca1333002ea38f173d2f82eb3125d441a5b1a10bb97acd1018672e85e96e406a9192c68570635a1e4941d3e167b4fd9ec0423f951e6471c27fc4b2d8df8a1f6dfcd7e75093ea4f121e36a885a3763f4b80af1160012635fa58e59a00b3975941c3dde1b34d524ce5e68ad11b58b46a6f9f1ff219 3303849968fb27677f0332c06c4f5a13522cfa6c99808381cd36caf4da498152eef447ca03d0b02fd071fb0138b950b5ad8c87cbc5ea961f48a9a45f0e55c1159adeda0e788018d7b14ae8c457574f60e61f9b5c20a455951c4ad5aee44b66f384937c9b4001cbf9a9ef60d0d0c43e0f9f0686bb8f951e336745bb03148722 c81593b9859d92d9e34f77bc952e6e4aa2d688687cda330096f7cbe56d64bcb694c25e7f3c7d646710634e68c533e572c9ce3c0991c2969f60c8c3d6d1d1049ac62a60093216a18b108277516b208e79413a74dfaf5dd0ce70fd61650c8bef74d4029234c7c652f9c0c5cebd3edda8a0a9aba4f521803de9c0a632ca1902b7 54e61f19acc6c216cc82a2e12225341dc83ab069f4bf1729dc6df64afdbb2d4f60b2f0a52b03ce289201aca4e1fc60a021b54756b10def2e443e34fd4a269c886687dac6be9fc0d0960d1fbffe1de76735493c89b2f29cf335a71f00119286fd50798f00a39d28e56b89217659d63e92b0548251b5971afffdf087fb5bf370 58d263e6462e488392b08bcb5613c007bbede052b5d39f93fe3263088088578743b905306a49e28df7231f24079d91fef8b0c090bb4efef2f05bd5bcadef3af64db04faf7588cfbbfa4fc5909ef5b4c5de609a0a84c703aa121fbefc33f44375a2ee0534f1c75ff76dab5c95bffc853f0ee109b4d6b3b11c72fa1977e1e165 0b12ecac216a1a61614c2136728b4ed70fa6627ef98e766f23fe00320ee8035bfe0e09594f2c4c816e986ef705bad8d0b578a230f1e33c5e20514038f1ccee985babb1f677ea603467cbe7fd47386fe1677e9ebd3a9f00a683b123a056b21715ebbb938429cad7bb02c8a3ddf91b679ef5135f702a296eeaf210c765e73e70 e9766c37d1e5387cfc8450b4eb86b546f97ffba4dd7638030f71f4bf01f279cfe56e514a8806ca9077655dc7d7d55062b2bf3e3519bd10998d62839b37458ee67fbc105022a26a0098c7eb70e5961d305e9786bb328437b9ba26ef1154302e52661651549c3dd56627354c1d5e7fed1f4f3810b61b620f2e8b21a4794b833a d3c282e0a206b48250a051636be8626dd033606e1fcbae179a8d9f5ba5444c59f5153855873c4933b03466d36ff8b273d5d5902633c6357c045405d6f9c2849513ee118cb292a8af7567b4bf956ce44054e62f75295ef83f46bd3a1c88552cdadb720ef6b51474a501202bed66749e1f0db82e5610df391bd28758ca9911d2 e20ddf4bd1c293a75860e50c596ed05696856bcbc8c198d5af463ea96607aeea101209729030631a441d6a340c7221a80d7c0e2982db4a16f68440375c3b89738ef5b0e7e687a0d3e059fff24a61d7204f71dae933b39292b021f91f77bceab6638e34292d53d7e1418f7043d5db65c0142e7ed8891c13c10c40adac81baf0 af4378a54e55d17c5305a9c7d7dc5bda8c28a9009815620f9bd6a633111a092c88581a27fa340c41990c4dadf312bb8a9e0c5c0c9df100ae709749a24b0f454d336452693c7bcebc04f5430c1abed166db771f767e63b96a2ebe6f23a0b62482835dd69709df3308f5038670175c83352e32812b068efe017c7395fdb2dc3f c8841c4d72f861023d7d497491cae9f6f102c9ccc360b1cfacb86768eff68e4692793c7035d3d0a8283e5b68f46240bae308c049e3b1b029d08ed3022054ff8eac199eedb532191466feee01f9794dc82ae2acabf654c1cd5294ea65835b0e6e411ff027288619774c4d1f9ce3fe473ccd0c90f2b95394d95ca4ec035bc640 a824fc4fbb5abfaf60bb5f00b791c83807e99f681d69978024de8a06f70a2b4e5a14eea4bf8435caa32808a4a532d409ced0983a214bec5ec2a1b49ec5c41de690aa579655b65706687b35a07b900ce8cd623f42ebefa5cad3902745ed58bd6b8a3a71257368bb271530a5f2c4f5a0b8da21a4979881eae1349c8601e381ec 47b317a439af49b518244030f37a54a7fa56c62c1b0d9c8de4c39f9cc647c051ce648313d31f15e9fe4241fcc7d8dc20a36012c37a84f46623077b9d30c3c656f2eca1c8b7a477ff2e40470209a3c071de7b9e84821730d9f9cee3ce08738dffad0e3f3f3a46eb3977e9b2d336695dcf04ef5114a880777cf0c3130b847f9d 1aa9f608a676020455968657e766928a105828524290f34fe2208c31cd6e4caa0e3c075036cc57681b4c5b8625f26591b32d322983963c099375fe4b6f3081443830fd270487f4978fdbd9917313949115db90a7c535b39d925afc2ef0786c75ec148f283bd707667bffc2c5696e7d798c0f1e12574888d17c68defc6c160b 882e1951de1078adc7e15ca59f616fc1f4fab9032760ed90cd84c7bb931494d07e5593978ee2e0eb59b50ec0b04fe694e896a57bf2abd14069b0f7f5d32c3711a3e23af66e3d02531a0b8b24efb310ec815d47c2a0ec269c4dda06a3b3bc0225a242708a7e7e8c4cd18bd046e1c5bea25255953d021bc02e1aa330a6239855 f8bfbab1ee78abe350e3294a075f1b24990b9056632ff2c7694646ce2fc425528f1743baf3f85d8cd0283dfd33bb2ec2ffa0cee4f7d549ce3d7bcd582b28e5c71288563323dd1aa834aaa617e5413fabe3997e294c6dae0e4a5f9f3b0637442dfa1b907d6b0fbd0a950a342495f378253624cc024b2fc96c8527575cbb06aa 64726133522021c1426c11bff8084020d0c533a939c97532d9d3a913fa9055bc554bf084a4fb708614771dec91cf724b8cd1e1208d1af6dfaf0ec7b061d0e1abc09de920462603834015f38c858f97d420edd88cb71677fd6a403c036b56bad3a8b5ad10e9144cb7ac11a50607d75e211376b04486a6ea3db25a3a032e8911 c287f91d14596b73d43aeed0e5849be2e281154e5ec7c8794d587b0f7b994da8df33f2afdf9b3e581f44b8e4051e5bf5af7881c8b124110bead6fc8b28256b9775b8e35174f2247de594ae4015dc35480d2419ea4fd43302a4305f1f351af63712c577421ff4aaf4b91ee104d03efadafb70c1bd73fbd31a8eb5e2edc0ea33 f0bc3c54ad8d6e335a0e7ba311d0e2c72707d73d04549f5ea29b6b26058f5ae1585ab04a87a01b6ecc9036520ac6d1a85cca1168458d0838cc6c485bcf6bc3f7f631879291d3f692a5dc46112fefad575ac80c1848e98aea842b97d893914a731d19ad4e9e0c871c852ffb061b5890ab40431bbc29c814dca5dbde2e572fb3 d20862c6127effae496341cc18571a9315e7b205d172943c2f3e7221c768d9c34ce12c431f8957adf28a62c2b051effddccd029ed82ce9c241aeb23638622c0e5529649015eba08410f42d8f2a77c3d3ee91714b5d9ddf0d9d6e26bb5873e91b42fa0888a2c446c0bd15a80585290a8b1843081b9995f2342ff5e620f6d509 9232f08b75f2349b42a50699379975bdb6166eeafea964b4a023a45761b02ebd3f696ac75eede1d0781bc26ee888649249aa6bd47e38ee52ff8b568ee8291e60dc73ca009dd280bbf4c3068dafd2a5aa84e0f7dc2f882b5a8927f6c3d25778b83fcbda79ddc8facf28b5b5131e7e0a7251e1f1a792167430a99e1d731691cb 31dfea8d3f4b7e72920fc239f97e12b40bfad7a1f25b405e1873339518ffbf587b7489bc54c01ca52b031d8b7f9c0dc9cdc8152c3216bf7c518e0454fb676723509636e1c2332866d87347330513f7d25384b0d1e0749e663d4d32f435fa10d838d26979baca31ec4199c5ca3a43e343ef00d20afbe66e8ca7f0cefb58ab19 42d37053a64df2ca946a0a5dc79bb3c762c9c7ba744c7665b5a4bd877d7256cc7507ed492b8dc2bad29446c3a4261eafaa4dea8b03d1cbbdd556c3515907c90f18cad511a6a01d280b8171aaf8f21ffaa6b60954cc0439ced08f3e22f7575edc8ffd9957010c0953e2b0056289d41af031281d84c3693e3eca86e3086aff45 27a8f6d8639b62974fbd6a8c79edba5cde8e3a6bffa1aa41577c6d9da3c7e6a7d0067e307d859a5a658a7bdff9bc0c4a42490f1d43f87a0b91e690626bab5aef94e49577762b2b315520534dd4ac942f6f484507488381c7c8209b817e594f9080e37527579e6357dfd0bc16d4c7b2f688d4115c2c084ef305d8f5f42f4a72 c28489ef50069564f9f25968631e9dc643a786febaf83bbfa2a0cc997d4801468ed3e677699c93b637d31498283d7c79fbdc85490aff5c8e955ed8dbe53abfcec51f059c9b99d59c7d7c2dd22d88a00e6e5b59990ec3ef1ba0e0f8e6a454c2f272dd79f123c0808339c2f9597dffdd18cc118eb43f38965836a161d9e59c34 f2a11ae2321500b121e0a945e02079a2957b02d9d75f8debddc47dc8d7ad29de804e370969529276ba3a8d034e306e3b9a8969ba8a68801a913aebf55528a5170087a657517216ea9d6f6b968d9b55e6eeab9f201e2f0713d3c85de08b96c3de50faca2a44b24f642e1ccdf1cf6fef79d28afdd4831c4246bbb731fbbf90b1 481f074be75110850f19732972f60b6d5f6ab51c62ab9f74e030683dead495c8528189ecfcf38c0681132847f464837c4043ca44013465b46c21e0e7b6a6f70fca09b6cf44b6fe87eacf92d60bc1b92d54322b5909f661a9465dabe508694e25a74c464691a58ec118b65ed8cf2110f5ec017a29469e2184fa280da19e2d86 04d4535fa385b40151ff1a38d8ac977c761d34bbc89c613e5de31376976fb964ec7df6cd8fb18e2c53b05e5cfc74083d0c4bf3c2715f371a8fcc65ff7ba4daf9bf648ee5df3329bd91637c4174d25033681ccbd9c4882e5c49075c5ad6c72089e75e5e3a6221356003802829e21b04ca060c04812a177ad0e5ec0fbc07452b 837dc5b791d905b00ad96e7c7b48bd03ee91983aa59ce3433a912a0b8735bbaf50f7960f54f54802a345350a0df6717dafb3f8cb60e183208088b334c083958c05c907f29a6109796d1855fb0ac4f16a42eacd23ad06e26f1f19d4fff21f29809a8cfcf6b10b23c314992aa41b396debeee22350293c3661f2d5eabaebe5ae cc0d3feb50e34d6a981c7773504d189869a68a87b71945c49dd483633abf5d96a5bbccb91505ddc815f72651037d66e538bba025067980736a12b3a4d59de18b88ffa0a5e0381f0d987f001089be7d738003b66fe8532b2cd4139f0471ca2282ff41c8972dfeb0eabccb92d957075acc6724dce6f2ac6ea076ef12390d5f3e cbb910a9a7f7ba00590e68bad46f2b2420cbfe0c0a3db3bc668ec79e54fcd950465457f9f4ecd771eca2296507e309c4ef19558ca7782f12f1c991bb8a9b15f981ee2188cee49c34a68e505c7c1a0202d2b5c3733f0e45f2765eaa8bfe9f953bf2a20ba8b2ec4d9227e13d248c81c8cf1399da3a62f95cbf8bea36ccf55a3e cecc0c52170f0ae102cd20a35e38e22084267b96de41e51031b88a8c40f029b77221dd09909cccc1266ee5b2f05306ec1a0b71434a133c3d40de6ab73e6fbbc1e505f094a937c23eef51384d94f29ccc14e1f12637e40d5a2fdf12f201d9e55b2e3ae28cbf193cd0dd15cf6475d56c59c8d23e149df5dbd432467db24ba02e ad3e829a70f499bbf31277765150157f069239889bb8983b45d2306abf6f5fdf45335e363165100585be45a7789aead01aba3c35628f72a91b346554ffe3072f05fea72d43ad253cc4448ba7ec02d4da3661afd54bd49e5b8c2172af61c10e08fd2064a45e3f43e8a31d4b6473b725819e9dcb49dbf229e6b1f6117c82c2f5 6c8988796ea7a8f0454956386577a63832489fc1372c9ae848770211b4e0a6f90d80bbcfbfc0fe8c5e82c415e07c32a08de452c392e12c768dbb4cd3ed3aa4bf8000a248a366d5e067fbcb38a7331e027f6cc37b781ac6914d636d5b7d2451630b0fe5a3c6fac0fbf15f7dbb2f77a7eac6d04a19769c7b8276282f7c931826 a17be59bfaaf5dac88279a04f3e104754359b8edd3efeeaae9dc088512c5e6957f063f6acb85d55430f0e869e68cc809b8ffa6b19930afae2410fe3dd02af8a914d9463dff9ba07425e79c695160e4c365641d97da5ec0519c7c9fcb02a3a4a60336a65dd0a3604fee687be4199a9844aeab72cd6e492b1cf30c0ce813d753 10332c52b6ce10424468ddd06572c82c6424ee65daa62ec2d49758a83e01fe4307a7e84f8b3db123f44569af4f1d6df7b82323a56e568f96e144be65f5974f77dbc5dccf1468b2542908a6d964fe2285e3198b0b6e7aa8fbd7fd1adb3f7e7b9f5ddb69c2cd8a487579162f546f4ac7e9d531edea94cef13b801bd17cf20596 0ff1b3d905efded894d03b18b1e799edecde3aac30681e4c9146eb5d59cd72de470e2d0b7b0af2c2ac0c446d6bf541ce1cb63d2961db8582a931ef4c06d4cd7076391d18827a504ad28bc1fe3f0e4457b0dee2021d3696f1b71e62ea8ecc4f4b4ab04cc6a6c7073ac0d7ba5ce482480343bf3ff6ae63b4123124bf504851a8 58aa67f098388ca962040d0f4d896ff0ebc22a44966fa10e7ed55e9cca83cbc31f9d64f122bac80f52ac93a16a60adf3a9118553a962950fe294bd69093cc28c485cad9513a52a275cddbacafbfbe38cf1d0366e3ad523de33bd22fe47ffd0bd0348fc10e6e9a6d1d51d02761e76c29a97099af558d7dbd919d91cbcf393c9 e4b258201cb08e3bbf8fe891823cb81cb999af7f99dd0ad704aa55920c90af094ab40f8d36b5d3e3e84c7a3ed074d7b32ca8abaf8d8d7c66ba3470fd434eeb0910a9ae55e8302ed7c944be3ad43fcb7e8b0939bc7a278af34f5640860eedb6a7a8714909caae98f627c11685d4a60cf56e304cd15ee1290e258ff5934e4bd6 5aebde771cabd4d268877c3a39a79373c982a944ff1db9515df434269ae69711a94ee61bbc6f9a8dfeaec2c6859c4be67fba85683216ab4a53aa62d8b638001b041b07b786faa84a223ea6bdd3a3d7cd578729bf41647eff45e40c332e49bb9fcbf1abbbf87a7faab6ea942e2e9bf904c5969c7075d4e5124e0b1e5155f783 8f754b580a05657392db64f65c63d743fa39b3a046b5175eecb6e90c5e111664b195f31eac75dda9034f40380a4ead2a7c711101606cc88148b1d9ce8953c3c440ad2d1f63b41f13c0173660e9573b597f809c19915c2575e3708438fb68abe46d5ecddbbd2e87dde05f2f7afce39298effd658c6e70609979471dbdaa41eb c44a836a75c2b7e71db3114f7c6c1c8ca6bf0d333e3487b3d8c9838ffcebeeef7aae32e41b12f9a3e410d469a7862e52a2c796078d0845d90881cf062190b3bdeca3c36c7c02f02d3e7b33bf30143c2d7bc0355be7e848b84fb44db79aafc1e17026f620e1a05fca7bbdc1c516371a29a1ff152b1e0e382f837f4a4e2215ee b992a4c59976aa01468166f8a31040d450f1685b72f9c406cb82cc87feeaca48453a118e20963cc4410f8eda396a323a20399cb34d2601285240de61eccf04129596a829b236f72515e515a0e9d05a8e09b44efd6798b0441024a31ee582f1818ba408476db61a35ebcad5841d92a37821a883cb9edf1b7f3875f44f06d9e6 e25048933af89684b9c7ce577e4a80ecc617dc713550f8acfedd0530ee95abae6658a29365a3506a092bf587501c519fa2e5416fb161c7d4f9e06c5fde5ab5e90460f7addffcf49541002a8a3c7b75e44b6a9d2da9d574f9441604cd3e5d4c8f93b44c167203997d992d7e7f8bdce60e28381f68f43e72be4986fe9acc6130 a67f04d188611b5ba328e85c96b8695ec664ec45d12a8ea8b349b1cab4284eadb2adfb42dead4d233ec3af7e29501c77c814cc97d1085ea6f4c388405873fae70b9bb20455577555c0eeb329c9791a6fcd349e7ef96aeb0e813cbd945dda5547f684d95e4be523a10bbb7f294d4bf3c4087e7f671b62f89b1b931796531f9e bd02423277cf47a1c5dcb65999f5bfda115e04a091a0041432a7aa245858344bd73a01b81529e6d981a5da1e895c7accd96abb6c0a11a0326a0e19b6afc5d1e5c56351ea83a47cbe42e8a580006e1049e388a2c04e1afdf964d36ed0790707d0df13ebcf8cb4a7137f6a5b42570aba0b1015233a6d79ff1bb18266682d9edb fd1c5f0978cb1117ab8e01dfc61175dcc7f572e1577a6e0bb2915943a530890978cda080960027fe0ef6b329e5ab32876eca5f71f912d3a7bc8ebe17b47bccd2df44cfba736831c3015c799d3df76a79a499a929fd28b5750d60c38771607a6e5fd0077a9107289c50eb698679e68e3decffd25d76914e578710f80827423f 76b63d933a50194eccc3c6654822963f8d4afdb824ad6e171a0bd45188d901d09e6c45e6b7a4bedd478b6eb7be7bbd8752a46d29c6802ceece9d08a0393159a7784bf047b2002cf30319be0ee1bfac9cd6897c8f5068bab7d0ac618011e948916a63ca47b21b85e2d8da8c075c01be4543ec35385fc0b9686d4d8b6efd08cb 8b5f5258dff550f97a021ac7216b8449d340db55522eef35abb75dcc489514327a182a1e987a5caea48390ec816a4775906cc3d93a4a762792282b44445d8337e8866a72d749ff2848675be49cfad0d080f55c89355a821a9b68cbbe05c39e871648e8f6d2700308857347d0e0e897a92770295df6e0cb7d0695b356517c99 604597dc6d6309c0d8140fed555de57d1fdd7587c638577ab1ffe187efc32fb3875c001e76ebe96abbff89a8848efd004f489f3515de319c41f209fcb3f17ea0d5ed7582f9c4b9ad1f72e3ebbd5ca2346d213e014c54d03f7b1355be529789ca897822e8259ca101c52f7a0a8063649df85389a88fa74b2c06819a6a2e051a 9f5bad5dddf654cff0db8fae46a34674213fc29a0fe8b684892f4560928ea6e61c1877cb1e74ad3bffffc6e9386e0e1255a83a4382bb418528ee9a27d76233e9a131c40619ea480074b260e4d49c7720b5870639c93a94af73516cd61a66d9907de8232348d8d6afb7f965ee2810d755de854c85cbbface3c03d8c706c7f93 237ef29eff8a168eafb91afe474b54218c72289d9053b3d0a76ae8183c7e7882aeb0ea6f86728e7f15811a92b883923f3cc032f942ca392413275c8a38d2051a6f273cf6833098efbe6ba2cdfaa759c909ca62c57bf44d226b7c4d17e0ffcae7c2be3e65bbd54069b19319f86e9bfdbddfbad2eb023a281171588c5174dd42 cf3e621fafb81f355f296389c9de19ecce620d6a0d1dfc8a3d5342dfd01faf90a098cdeb687cc8abbbb37af0e3f24de7eb9b53714cc02f685ce3fab001714de1edc3fd7c185b0df0b8d41356f751116965d9df979d094d214595c8ff53b472a8b023b67c3a1151c3d52f6b7b2990cb04c85fdcf9407ac7434de4ac2b00731d 8b3c97ce81bfa2cb5de6ff983162face7fbbb4ae5afe0e8ac460de97c9bf1ee4e1eac2bf93d8c3bda89b806a7f8008709730ee4a895b12abdb76d76e8f2caca3cdbaa6b4ea9e73641eb9377c8500ce185b885b76c2aaad1205067b59998bc7cca8c6f6b67488b85e7a881cac110f0de4e4ecefc8ea8bd619e76a57ba862a41 a942cfaf5934e41dcbe37a2524c533d83117533640c73fb941045c3f50c45353a10fce75fb1d0bb800d3f6dcbece51d5e40c7fe5076c4fb38722c947d054d84929c5f2c9aae8b34557b6538c71629bdb1b9c9535399b0ee4dd4db52e7945ce74b3370f5556e82bf673b3d5f64f263cb986925747948eaa0ba1dfdcbde06290 572444aa5226923053c6dc2208eb440c9cead338cf5513a08945689c302978fcf4fc6ccf15736001ce168755184c4d673d4a3b547e3a740ff958e3b8301cbdbbf7049751954fde9448451ca1e1462d3cf1b3f7340f4422c2405657c1e4fd7c7636d4b893eea7119c046c1baf3d1c3b445039e83afa25b34f88fd5d58b2c223 b89e02a713270c4166e9defd15394f605d4eee3cd3e682c24cbfa557f4e43e2cd5414a17e8913ae97b4178744e316f1d589546e49b280c34b5e55122b4cf984a11baa7a20ea7a97c8cae3bbe26f1e1ec1b9cf98ea602ee2658084a1abd67729c6d7cd427fe18b1c58e69eb6599ad5baaf2e60d4f5981f6fc5030e57d13ac26 44544a923ba836d44551fe962fe30baf7208e9275f3c5f6291764adecc1d03b891c9640213b9738c89627baad05559eace7da50b1ddc4cc0c5d67f2b7fa2476161b3bc494a4012dd7d24320ecb4694b40877362a5dcdf49244a0351a5316b2404ea7a0b01bdeef039335023362d5badef4df9de48926732999d47d9cf0529f 7f9b99a7c221182fcbbcf005aa6327003df684765252ca52a8cee4063fc08b1802fcfbc78ba7d5f113d31950258822c9ace597172a5127e9cac20bb130c89e391fc1d9c1c0f4fa3e282a28b3d2730ff031ecfa503f9a4dd66e6463a091aa48027a07385f1e4ecb2d0c80fdd0cda458080379c6ec8684b864d55c0afa7373f1 41490a1a658a09df81e34b1e3bd3d752772d170807a0c000be413a8259cf20584e994a016f15b3041671ef27267643bae59c34a71778e8aa9a60f1bfd86eec0e8546d92fe715cb01fd22182f476d2e93f099c7482a6319a8f2353acb138717191da0b0a7ef8114bfb266cdf5689691f4d7f93e4f1e9335393ad1ae8eb9da09 730e9d12a5fcdac260f6945f47785cc367d81560c5fdcfd1cc41dcdd84480a62cb9a4f6f445540689f972bb06c4069e325d715ee2ce3fbf374802f1496ea120a3468dad441bfe17e247629f9ceab782c8ed9c9a58a5f19cbf36f86e4fe4d287c61aec9c4f6116fd5a6d7b2b099faa9126f6f2ebac45394fb232055088f5b4f 3bc970f70be7a5a7a10a484b4ed217cdebc6cae1b94015bdfc19dc7814d30b3f5075899f93632e5640a59650e354b4ad63ebb0c9a23c118eaad1bb9464829eb1b1d4c411f8daa7b50d88d03cef5ad14082e2d3b0a466a25e6f42ecb99af98da44cee5727ee8b1ac81f793450784a3ee72321cbc212e30ce4533065acb49ae2 cb251b2de6a0ed30f0265f7551fabdc927fe5615cd5499a0cd6f0b8fd251bd807906de4174619b2315df3c51161e7d3a5a9018f87b5d65293753055f65e52c65e99b01b89b04ad613469d1a531fa02078106b4062f8d91ce21d63dfd002c8c4413b0c20540def307e5c3496c1fd890b50d10e8ccb5c0ce7f3c96aead7e3823 6b2950a5b7a7759dcbae61cb141c975524a524019f48b318de9ef53c318c6c4e27881ee7716e20775928c1566e1b56ffafe19385ae98735aad93ee9a4321909ae4956981579cf13d717b21e04fc6a981e30d7a45f18cedf227df86aef69a3a7ad492b05938c9c60b9ef419569e899da62d9035106ea0fea09317830da5af3d cd2a5e797f4ee92e1d6805a42f7890c995fc2bf9b9de33fa08d38d42bc4ec60192c05cb7ee251be2e06ca3db9ef9530f002a6b265fc743cef548eef8059d6e41261e5842133ddc039ef59629a55cb974b9cff274ec1a55704bcdbaa99aace05cfc58567607f5ba9255184079ac409763a9deff5913040ab4103ba1b4251400 6d41cbbf01b78f9d724893c7e98307a41847cb9d3cadc8d111e9c7fd57975863ab3622d525ca297408e38bc48cf951c80aa9d63f9e06b4fa4fc58cff857d7e5f4e9e628e30b25f3baed6f7fdfd0b983c6c7623699934a7804ee716254020afe93d48dec5a227b2e794041ac21f503d4d1a8581e8322918748bc728db1e97fd 5e457667b7a380391bd3dd0b718fc8eb5d883e7f3836017fe74a493a0d3bbbbd6fda8e9657f77796c61f61d9b856f0ef2ce89bfdc61919d69d37f4461e05d85ffe670e8791855e1771afb49a880135c7216fd8aef5a561f0b98942b59f4dc42cd7f650effae8afb30a17ade96d282221faf67dac59ff8b402b990cd71e57f3 637b6299b0f0a99946a5e4b36e062dc6e0f306a24d81af801814e68e4812871af085b12363b4e844eb3654a0ad32b107cf99f92d8f8de656c60adae684e53dcf7fef52b532f4167a990d2a3364a95e7f7d0e38100d06e02392ff8d9f180673a8be2d0b6cfd9bc1c47524579d63f6f06fa01b68648f98e0a9a200c51aeaa60c a496a1c3137ac9a44090434c690e7a973ad8de9d439ce7e00699eff7730206c5556bbb30cd2087bf423a37f9ffddb53f81592d8cdedef06390a55255e12f8194e2afa6f51ab2bc595799cacce3149d5b8608f01cedec0b0cd6c74e703397507496ed4cdeecc76d0bc74b698d1be363f6d9e199ccd8fe9cf5bb68e648d40419 9620aa88bbe3b6667f5fa45e11c2f5ce2bf9b86b57c7f246acc4d78c52f2b4496c5fdadb0e4b73f2f4e9141aa416e3f7cdcfa17cd809c0935a6eb5379641978855efa1ac452a45ee7b9cd27992c66bffb970d33ea2a4e65a81daff6cdaa0237b334326144171bde6c8e12f348dc1f59fb30bb82d081bbd2d36efb44000f909 e67cd2d1ce2bf499da6b8391914d88179d3cb08f44ce3215441c50feeb26b1533931b1c86000db4d34bfeeaaec6e7c36e24fbc61c789e1b07210967951cc51de4005cbaf2b30135a5316be4f1af952018765c1b015038e94825478abe64e479b55e13f40b507069cda9d06eb04cbdac1dd27707adf8310d395b0549ad4eb42 a29855a4ffb796b64a940db6ce4b8f4d560e00d5ef43bd6d4a43414ad30a68252347d6c445faaae70c60e225ad937e401c181500b14f4a641929f2930b3cb13c8c755f64e4aa9e937c7c547302d857ea5f1e3749220c6da931598dc8971e392b0a7406b5d174b1ac4cb74bbd1e2415eb1cc72b6adee85e970b17c3f3c707fb 428445f5e6f7b09dbe3e40bb47e3d9c5f5a2de646b7d01d73e0bcf490ce0f59f5222209453472e7d1ba46302be823e217910d46d8bbd87e4f566fea0f2fe733908301e014a54d1ca7b59261cb23b29a3580f3a3b3c2cca988a75b2cedb1a884f770b7808aaab610b6dbd1c0193c16df20d041befea2ab4d7b3011fa82edc6a d4ac63ada457d40de197de5459fb4099748e9ab3a35c8f81a5aaa749be783c1812a317f64c565ca0186f759b234f7f3cf0aa2eaa480aeadea979a0a0adb3eac0f084b27bf65255e7e839b7e6b57bec728c9d21abc144feb2e3e4bd6dd116629d07fc18d57609582bf7834e3d700625ff808a63a99cd52884f434ae138b81ca 638517c43134c4fcd6b990f00de1feb4ad24827b27abbc6616564eb5b7b1e695592e67ffe53adee116e4b6598331491d57e985e843b3b6b113570b6bfec6af7dd0a958318ad72dc63a0d9d6ea1e6702264d8273f4d3a1071c43fc58b5905ff4db1a2023fad6f4a222db6f10910863af109b707022f96e1b78449a2f46cb26e 423a54cb805686eaa483cc48e1227d9ccdaea355df599b4372956b82a67cf0b9576a0adaf921db52ae57276fec54f9fd2edb25528f4472bf6c700e4038729f80ff7630c7650a898f6b7a448e7ef38c644f942104ff9e13040de3ad6216311eaaabb5ed84f42b8d4dc3fae8a470a1b2656239d510fcff96edd202e4498d94de 10b5d7f5fc8eefbede2e736dcba84ab291005506c706e39d0b75d66651fc2451041ea3c64c4e94039f6a1683ee0d67341c327a1ff88c31340200e3e03010889438ed31cbbc69509570e55c72b84ad41cc49160ac523e821a5d3045598fcf2e3fcea7d0898c27f5f358973b1cdd53ee77f00efeb7b84ef312df3c140dd804e4 645a4ef2ddea29d13e49fcf0ee7a9617f71b034a809475d3d0792af97ef99e58cefad2a5655b9a3ba60c7d7d80508885e80f5f7121ca82f6d7f2f0d98ff1726b3ed671a98762d630f621ca48de7ec601512285cc61cf0b5d1ac1b642d749cbac7d1aaf2928f4fa57c2d095e3b1fb1e4d01866e5f1329116d1bdb3977ae4693 5980b5817afd76531112442d3828469081f38e23bb96be6b173a2a41b445257b1683fd56ac4591822a11c4ba1fffd2d99916801d93958310ef0de2544995b10da3ab82ee2754646ab23c4d230e8ee875d1680556b91fbb4b100bf6d05e06836ca84a7982d4a962dad722fb6ef05019d1f1e5fbb197964338522967669784aa 118164e04cb7e823ec08843be040f007655eabf6510e3c75089bf4bcfb1dfe5a2fad3ef14f435a10df3fe3b697663f7ff2fc6110ef20f6f06889665eb67c376fb29d5b0a9b24ca9fbb9257a03b959b1e7032abd562bb5dad79564531cfe562028b179aa95a815dc15a8497a0ee80ef7808d11597e2599e88fb870ebce549d0 9add22921b8c0990c4c04f72311bf51ceba61c0674d71ccfcd8b782f92eb61ec0af3a82be103bab31acb8393248be431e93daca6ca6c8f5abd3181e7f22ad7bb603fe521d6a1cdf5f847326e50c3c3d40b0c96dd15005b4078ba5d984ce500b3d731581be895e047c379b8f4ea10f7eb61c46c385ea0ddc851f2a912b72b19 d318b76dcec04893709febca6f4a0e709f591052955fbdd02c49e00ed2a01b96c978227f5dd07cf09438ea40f9716e5200e3f1acf64403b16293c4c23ad8bf498071e3fa6d31f04a04381040f69850d660a751ecef31f20cae79616f4674004f33f9386a6d0841bbee8a0af8b8ab376af6ab2ee705a5973b8e7ada5d47bb6a 3cf6b1104e82c60849863e2e847e2e56adc4bf1c872707332cd9d2d562c97bb792752f53461edcc6a4fadb464b06659305d9ff0620888d60609b74c43dde4d21dd19686a6b3cc92b85a063ce6140ceeb9ddfbf1ed5b88b1dc7e08420a98782e444ac7bc85a08fbc8ecc96d5192b6d14dcd0962ca88fb6e7c1d400a1284370b f9082b666de1349ccf1745e4ea793d6bbc39503ee1680b9775c51fe83afcae3c3a4cb7f862b29a4d8cb0b2ffeb6f0c672237eb6eab31e1394d5d8b191bd62217cc2b761e6f6100e5745542e9b2e0796a971541433418f39394390c644d9169c508c454b681eceb68040504920948614fafde8485980b4aad9b37dd84140418 1d1c2a8fb611e611148d18aded8bf62dbea02212cca62961ca2f71d6118129fa7ea6ffc0882aa0dd10273e2e6985e5096f8219e8c204ff1c6b440dd9b64eeffe6982a640454beda3e6087c249308744651aa65dfd07b24f412277fdbc8db267ccbb238fae0290c313d958ea98be1c2c23b226445ac6bbbc31c581d882119ec 5591852239fe03769ca1bc989c421a116f154b6c2cbb8a8baea95a30de70fa1a17e2c1a18221e9860417b9302f17fbd945e4370b125fc9f02af79573e5aff62a564a7ec733e44f6def5fe13e2533c1c8d0e9f12097b0421d3ffae7159950453089259ead88c50f8ff7602521de5a1a38186779bf127ccf7bc7c5a684489ad1 5830cd14914d03fa99e3ecd4cc6bf7e608de4fd35d2e50d2ef40d9d1404d78524bc2a62ba35c746e13a50afef0e52f7828431d56d6dc125bd87d1ba3a4503381236ed360a9f862a5fef5480c85506db099073e1e2bc7ad9695638051efe8e5c78a93348fa4b8e8f5220fb5c636161a8383f51b70745caf1d6c965095eb7b13 c7699d4082089e4b44ef9dc3a22c191f802553c35dae51c4c63032ae0230850fe5fd33ad68e56197001bcf39d4f235ee27db989bdfdf6536b590f9b11395a8524c11b2b4c7660bea430fd5ae566cbbcf0a3314286aefcbb54b835488e488512c2343aaae26e160cd84b4748810727ffa3d7cab9e1c7415b69d2968870b7ac1 19e2983db24b20284af50b5484ae7e6dba2f1a30705b5d629c2e3bb532f8b93fc764a3e84d54bfd4f8aa1ee1882fc655643ff7aa73f347ca9377a0a6f6d88b3a5e9c86bcffe108342dceb6ace0c76297fbf7cd474ffe31c5166829301d65b4761180c8af07db8bc83fa8db6e3ed3149361c218ccbc38fd8422f37733e8bf62 09c783d62c8c2b6a5435f1138fdca30df04eb7d72e9626e431a89c88094cd093c75b6abe18d4e71c5e718464ac49eb92db3d8d3de3d496cb854438138bd96f26a16ae05e7b6e54398f62dbab283e981872f4edd8ba33ceb60d9e57865c1ec8b593d6b5336b97992227314241e7fcdd81e34fc2b433509d1b18e81a71abcaf8 0bc5e4b017265cd82c3acbca4340460160e66f8a1c319347440a6a060697fbad16486d07620f5e009e92c1172c6314dcbc17454b05b32ab392c324b99a946b6f542824fed49d95ddd62772454b881ed3de66d8db723e55099f2ae32bd22756d06b3c6c9d3e2736259e187ba56a884f2084e1c3cf1212450eabb935799d3fcc 5e7ce4f84b880c76a8c401963b80d66bd0e436c0c3f5a36fbefdfe50bc200534f9abb7c29adec48ee54ff1d9ed7bfa0cfc40d5be3ad70741380ed4d77c4d3beee40c27d0912cb91d0b4f4b46ced92c5e53a4e2cedb48ed7f9940084388efd357e7700499c811d4b99a384229d524bda0db5f31a2da390b16175ec3c7239835 b319c51f81dc4308eb022b99513d18a1d66bf0de810dbd8c31e9886f1999db821558198a477ed4f76c980d0d95cbc96b0629a3ed38b9583593d06b08a1e7fcefcd79379bef54bde4e9e8df6adfa2bfa1d5ed54e7543cd5e58ad0540359bd67ff21a517cecd8655177ff0ea09c4cbbb5ed408b382feee6187f3c33fa06d994f 1595c627d8347b0004ae028c7cc9e127cb122e83cb3ca6ae22288c7256a8e77a72ced6b03c4ffb8f292d5925f405f64ede2472dd96142e208eb1f773c05d2d254bb3681321d9962493a1fdda6536e402c6295b274c05af99ab0ba663d0360f96280ea6ef0fba83e8f69d253e8391c0d34163d278bd41627f1c847b24794239 bd4a9223aceaa12b0f3fb46049df74bce9d540342242e98bfd4565a39207b1374f1a277e6b824f1b307c6635618d623bef5dd091d1460c97eb8e4664850268583c235acffff28a3b779bbe36e07725ab551bba51e32b7a2758385c36fc86b6c4a147858f5cd69d364ee8f4cb158bb6dae04c59948c2c37bf5b6cffb842fa65 0f3b9d28b77953c91bb29297e44f7fcb71febe4e0fe7f7df23cb92ab9bf861a6b04423a018d38c2da603ebc27a378fc6c8d6184acd6ee7bd0ba1a1f7a8c889cd3f0892349ec04827b43971cb4232cd64d23fd2c0e53a0c1e74f441e587912f7a65cf3ddfffe7ce7853674f00ca3bae2431d77515ea657af3ff600e8f7fa845 ff3eed6c0bff25384c4385689c662e70b65693f0959a837a5c80866f5ff7adbff14dcee31b9475c16938700138552030cd0b02ba33fc850ae3d7e49c3f16c2d8b11e1ab9387fe8c52e636e69bc861c17b252e3399e40e3f0c5ab055fd3556ff066868f372d2c31532b599604358a22a35a870fbb6501a6e7c359d0181419c5 6123c60686f1b78164a54b8c680265f5b7bcff2282d2e4b7d54fa9c6bef82fba60e88e28e09ea231873d20375411b866f39017584c3d3ec84c9413da030b7a66367a71b8ea1d79de5d091ab9db127c8b5929d021683ab4d95a05ac88f8b0a508379d70dad6beaed8ad016d6956dff90a1413e4bcd42a55d76658d6a3336827 e04157405a25d247cab32e19ae93e54483043392615f6a0cf0d8054c2bf8049d6559e04b324a926751951542722a68ee11de942ea17e1549946b0d0d13697083595f6499a295ca76b8fd3c26873ba1082be163a21d754e0de5825caa71246bf3fcf7b0f056bf33a73964c794c3c3f0178fe18536cc51ff0aa7d6bafac4ed6c 8e520d4f7ed96d558008f82f88e972b1f7d374fc9db6d41d5b4c7927e639e30811c979d68527294f858808e9c7b520ccefe03a29a147155450828a39aa512755fd59cf62f312ddab44e91f210905d41714b5b36a98a23f73e6d0ec32e1ebd358bda6f46efeb53f3fef7fd096284c5fbd1315915b0395cc1d28bf69cc8df7a2 079393cf1761d9b85b0ed46efd63ea7da7b5cb8afee9180682f3f5740e117dfedd94c61d99c40314eb3f3efcbc9eef584c46b2d66a340c4045c42de0885637114c7a28d17d00a4b15cd47a9636a4fd777fd0cd3203d3dcdcb3ac6d5ca56edd39049672d0591390c2470e28d9b8a946ebadd65f47f9b077e99c8816c9f20976 abe19e50889400f0c0e4d089e8b05c97596ec4747a6c302d12f30c7d047277abc4f5b4e9efcc44c7d17ba83e1c4f92aea889494adc0272681e1a3ddec8634a51a09f0ed7349d1ec1c10dc4c7600d3263fe1205c8724b9bfaed0fff85e6f4beed3e93f860b70a13094c8acf49dad5bbb86a433fda139f4e20b1d72f922c5e29 de19f13b5180a0b7edd6775baef8e1510cdfca5f3cacd31dfbf50e9e41abd9c90cf60571eda75350afeabe51a72cacde8b77723c5f6bb88f6a0d94d319f03c625263c94ab494e373d9ac1afb667b545eb03f9dc1b868d5f55cfc559ae7c31e2f10800506d0b664b28a624b126b9773a9b8d629330ed3a046ca94ec1b889ed3 d26cd6dfbfbd94ccd2a91a1f37efb61f5f06ddbc1c021c87297f391a2d8720e08a104b16d398c91f4ee2083a08a378b9c5d0bf1f447fa7d5c36aae44439f91fbb3414b06d22e6cf1c96fbecb5fd3efd23efb4bc8e356103123ca144986e4ca0f59a99e2c477075440ae0de9eea5f836fba6831117bd787341b86fa991185c9 a47281a277c8b04df60439897f67b7f42ab08aa7e8ee931e52dc165fb9b20c1de9fbff7100e30ebe292750a3a84681bab07f03fb5ac13afc1659f15e488c796c715d85aa36a5bacf473a9c02957091c3b01cf45ad5af307a551ae5d34caf531af09a7959f42e8151fd791d93d229243f735b47ae6a0d2bd3a32e979e0d77e6 953967318216bfa573bf0290e65835028967a394e271063d84a389b56ad68a638649d2e6399e5f7a8a0afd3b4502ab36fbf3dfa5ec5e12bcb35d193cdab02c3a5be1333adb3f68737822670ba7d3e99188723111660303038c1defbec34c35ba5dc2d39f637b40a823f19acb1f4cd3531ef90898fa6b7c95148437c97fb3fc 1014edec32ae56f264bdb4a47385756a794d017f5f6a9721f91c7f07bc307b09ae3b7599f443eb82135428485a126ce82d8e814c148cfdc6175e19c92f18864857525b5c392b1f5135ed33d6c0bc3d3a08f466a3f3372a99699804d0a9f9f2cee6287c0257229a2a47339a0be3826cc7a9719762a12669c535b98ab76da8d8 4ffc909c0def3be50d70de61af275f11f53a34e8e68d2eda360e395171225aa26f59d22273be17ec5304a48e3786800c21e4fb8c7dd7ad6338442e146241dfab2da393e78ff830c85732906b9a43df31839e3112f3d07f41c6587f07ae11928f0e10a8b8423a71549a09bf31e65867ade7274b92d7df34c0eeba9dce565d28 f2ece0d58ccd777b45133f16b24f17334117d2d76f1e29a4c28c10423d940c01bd6afb4beb37d66311b785808cefb236bddeb7ac290a23fe13a12430e27bde2895963763bc689b1e7f66441f20b64f23a30d288e35f73bf515a99c1bf2cfc402c4249c468a337db21a39ffd13f94ca3b8a77feec434d23cce5d7287e8dc9b6 5eda1fdd705bc12e21efe88a93af0b8429a8bc20dc4afba8bf21ff75e9e6150cc0964a38bf07918fd13781256875d37e7b62a946ba1c83610319edc2725589ff986de5bb6044b325f43311af056e19cb6e42c3d353f401252cb4c6e8947d1b06921bb744b34079dc15fb4795d3706008629f752a0995f2a51957455351a3f3 d658c6c28cc09cff2b10ba498eef1ab18fcaa42b33dbcc3219acadf0f77e7a60dcef1b81103664079b74eb268772b65f5fb06a51ff7821445afe99a713776c698a9e41126b43e3e09edcc3946d4370acea0685605e01153cccb97060a84dcb4654810bfab85a1a58e3e172d6c5db42fa47502cdda77aea0098fb3894c7b4be 4c6fc4edda4d3b48c53f106616a9f966e5d9d5fdd4d3207aa982be50cb55dd2a3cfa94db55a95fa3ce853f4c03a60b4a6ed849b9e99d02dc9bee016ace463bc48f647aa43d17eaf37eab30776c9be089db0f48e6f67bdd86e787d7004c1c1a55b943bbedd841f34701d977d7229cafd3fcb2dbd874d275de66f74dce69a188 0d438436836ff12e3e6f3fa374ccd9193cf87b1ebd36c7bd9e5a2a7a0407f2a66bce1fd3f88bcc7eaf43bf74e832aaf03d2317b256a8c55a913286ca17147ca17ff54b547d36f8f782981db4a37cf7e837489709aa4894549664cec9455e0c80a47959c611256619dc12eb3afa6697accc30a6a9cea866db86e04fb0f4cfd3 1998990d66348736b780bff28825b2c4791d432feff4a424e231fa2d7803460ae16827fab8c0655b0fabb3e6af5534d617cb7c3aa831b5ca42f3d8a116c1546cfbe5a432f09340865a2ebe7e7395136689cca98264a8e7b52f43c9c75410758d3ab9d596f1d82ab9d41d2e98d1dd97b85263474314740ff8273e5e0f662a02 b275ed1a74c160b2dcf5664f892cfbaea308f50be93e46be711644fd5d7efaadd8206ca3a4d19bf1fed84309662f88bf310bb34c9bda5dabca7d0495aad060093f08ffa810db94836a21e6255dbbbc39671abd878fb5add80c1202ec95c1e4f1ac91ec0f03e1e90168d2715af3f992b8afa9c66ab9cd5f9127fc50c815cf79 4761414e6f8f319ecf9615bd108f8842e9676f8ec4b4e5e55922fe632049f32cccc422a3b76d85dfb2704a8e3a9e8e6cfcd237d2e0e5d37d7faee1ca94421a935896385ab24a479132a41a49e5ec1c2b21dd0b810f070d98da3b6195ce98fdd06828a63df15e981dd9347e7baba830ebb415dace42c1c5f9b8adf060585c71 50e83c5d83f03669a5e1186bb8c39aa1982e456279a70fd44f93558ca7c26c64dfe0678765ada8db36bbee77c1574b387f671c3ae9f644a41c3cfd840dc5860b9859a6fe00da5e9d268407d6b91b2c214c325fe025d6c17bba68989720eb6bb48de0416365e3be5bf15dcd452c175809a30f92f49e2eca95086a76a141c411 aaf2e88d0ab209aecae24d3d018df75ae87cd1334df46ed0c2293b1884348e6134e0fe0613331d9c84498736813888b1c4a1fdc02ff0d0c10e9dd5d119a04a9a993ec845772cb5ab449aab262efcb6ce37700db9136233466e5ad9a5e8742918f7fa2202c9066cd5c52817f63e2c133bf0723616b63713f2d2ddbcdc2334c6 1b17376073c36e75b69553b05d6f7a1ac73193c536160ca665d690411ba1236edee6342b8e6799b957f8b958e4a7e5d2d03c64842d6e594de767dd7d4a22585cde954ccadd79e829a8521bb41710b6ceb5065edb0adfc099863236a2e34700c4eac0c2620c1db815c814ce20ca6ab422f5c1e959cde1fdbc4e0a943d52c9d1 e3e6df53b24a5352b4b5da61553ed0e486f98e4641f9314e368a0fc33b2c6791fb1b17da7c47aaeeeb6e6ae41c304eca860a1434b22a90a6e4240db67bb69181f6549fa53a6b01201edda18c3b1a6024f705325fb9b4713b29ebbc712ba83e6837e719bff8ca649537ac8734d1348104660d8fbf5451f1e183e8105955f1a6 f1da5c8a47c6104c245260d617ae578c646a323096d1ac8f45f2a5f0eb68687038ffb492bf46712297a6ea3c422f6054d4cd80356a5b130b9ea53f7dff3b1e86cb2af6e9b354ae744e28f6015c01a0ac7f65692079387af2aef55a364078dcc6aff821ccde68416d7712a639d43259fc6ad747dd3c212626fb89f9989bc795 ae80571325375fff6cf916c69ba656c54b9d41cc5d9b1ee6f0b6dea2d8c00f9ecb75afcfd440833ccf4f9e35e9de774969af81a13264b413bc15148a4b955865c49771b9ebe6102816c136dfa91317e69b60e772b1adeebea15ef2f486163f1cc7b94827ed9930b2900d57564669e8e5191612dad2b4eae34b6c3afdb02b1b d609eb21e05e8379fa26dae4456148664844327c4d7efe99e4a9fe775c3455f2531c96e70150e2a5767b5dd01850d201c4262f5df212dfc10c3881f509b38533f9eca0f8002e5367adfc35538619760bbc557baf640455d4d6fcca4934d390a4fade569b09a39952326c8ef62d6333f66ca496966024ac805b52c66aecb09e db11240c3b9b1a91b0eb89e71b71375c69d4603a62ef79ecac75e60b16de26f66bbd6eed1ddaf766131f3238d83569dbde77d526be735a280a424157971a743a79198fb44436a1bc5975d136ac15ed2f60b3dea57b05791ae25e643cdecf2fc62af35974c573309949c5745195b7e2e67ba81aa2fbb46cc36b761cdbd766ef b8f6a6200e2d336cac52d2b30f96d09118a06b1119b4782be39bf95f1b8bce462b88ea2917be4c7372236874c5edf1c15b453715f066f0a5933dc74711a5ec406ba38f8c8cdd1cb60187f3e33e57d1661897c1e5890ad9b496051fdc0f3c64cf7108b44a43c7cb5bc6792c2889437d0f1d8b3a7955c5b6bf709a7fa0235669 267c6ff05bb99bbca98029970ee69e99ef64cac31d66944ff22594cf4bdd778861e8afde3a757ab9f799f0f42e2ea55c74d92cd5507e4e5a49c624f5f0f6cdd79fda70af7e7c24f6f673e7df8b88702f5481f31267f6ccd54e2744d29a8920b59343355476867e3c57ae5c3a2a8e7558ee3be01e300363bf2d2fbb12d68d54 73b2718c436d23a09f0420bd61d0a0ba5206ab91832a0c307a7eeaf1f13bb78bd6b15b62e6da1a93e160dd2252cdd70b6d7d42e8994625f7ada31918ebb7433e480f88320dab83876a64039209203d93320b03da8da5843888d86f7e4982cb73067a5f2ae2499d5ba278faeb28e2a60fdaee428bbbcbd0d2b3647a32a78967 486e4ac39e4552c68ec5c8ddf78ff58a6b16f03c24bd6da4a155ec0f9568ac9b85fd0b14d63e2d1f141b299ee2d73dccdcfc8761821309a0ffbe49001a4dd09fe275b8bdd826266c0a2b3d9d687b4526b76c18961581bb89df3548f1cced34848c0b8e990ee7bac79cdde4e4dfc9621e46e70c112c4079043d290d9c08943d 7a05d8378022dfac5856fa36593438e887f2777fa91c6096304d8cd6cc14d38300a2e7efe63e801b8240c60fb599a2f8ed36a090f5339965fd1f602314025398ea549acbfd2d0dc013027e00fd0f9257c96473cb36ed2cef5a4476803ae50875269edc245b8a7bb138707d068d4721278ac89a3e26b226f3db2b7e0d203058 7cac5f7d460f63a71d586dab0f87e279251419f93f4ba97343ab3852054a8ebf3d92dbb0b0b051b5d758bf3c3e330663edaf390bfc0dc8be7d6b9f6cc2e9e25a5da38adbdca2a1780eecf48733d1e1fb49bfc746fe9ffbf1c2e69f4d7e26296f6bcc6c9db726ee29b0d24e3d5e01c9ceadbc370c8092588e525295a110cbc5 b40111c8aee7efe855947f83c6ea3196ddcd2b99c9209e52f83786fdca847a5b5fab76a6c9746d04555d9435b28dbab1396fb06a3ca5de76067e0fabcb410e2e84db713d4259a21358bd5f8963ac0941fa5c1ae5f5ad090af3cf0f17e8e06b483fe3b63149519f59b2d50c9c305407e0b4e55fa4fadc967ee7eebd3c38d2a7 cbc34c566eae21777e825afe698ef3085bcf69bc3db2c9680a65e343d04d891296e8e1d2afd44293199c55bc63655514af44fde2a3017f43ca6ff61331c1ca83d776fdd08a55d8d05741549cc87b7ff3e6b87c2ce19a8ee8abea1a67d98b04662b36c49b3d1e7c1c040117d087cdeee2c25f62d65ac8c57349f48fe7a08e21 9f2c790aad9e4b767d6822fb50ac1ffae69a3844a77eda3eab87f8f81b3b21cb9d889703e142f390e041afaffa6d9ae97c59ea696fd2c9650f282fd5f0e6bf6435f076cf452aa67e5c2e3b0ac0cb4ae92c2a2bd44c86442646386139d16f0ca1205971c029371b5b3439824c356e863edddcf18b0b6c3fb2c1eafc1470d895 06cfac69278d77cb0387d430f525a87bd698ea96b967b029e62065557ec3e0f76b3efb6319ecf33f4d6f967a09a0bdf2a11478539b3e450cb53d58899d76a8315bb19a53c69af37ea4212cd092c6eac21142e3574380df2c27f7601c94c6d32624d60995e5c8004d3d24da9a36750cd078379096bed0ec55d2d91c50390bc4 f8ed990efe82ce026e5084760cb5396c4dde5d25b50187f2050c184a55ac010a75667bd361e3bc9453289b90d77f0fc48b328ade44af26a79aa5fd242cb2ccb095e2aa554028f60327047775d7f2de1e8eaf2b455f33dc8d66ab96697db6065dbc11fe24a0ff0ecd1d968dd3eb753c1068ba4f91747f4c53c66ebbf35a13e3 139ce0f6eba5cf8bd16dd266ac976651f965de2708f82a17ebdf82658ac57e3cfa9b6ca04b06d7e5a3d3483d930c7c7172c8ae1458cd2c324bfbde742799e0457f3f10f005394baa97efe60c688fb6d8bd24fb462b29422f27eb815930598e3a1e491f8db67dc125f113df83d8cf07cc6cc5e30be937523d6f07d98f0b709d 3ebe97ff8000eb7316725034caf648ba92e390a6b831bd59ae8e49726762801f3863a526f729d144fa99fb93211bc1930b8532867706c5ca0f9857a9052d0519870c956ee57bae5ef1891794c6643f05177c6ebb2cf2e8d0ba203144d6771e0d7fbf20911c04348b3a92fb2afe0756a4ed2569e1ccc147b0fffcbbc1922869 25c7b71becf788086914edee5383e7baef74c5eaab1faaedf41b5d51f34b7ca9aed2435f0b007b6035e6b75eaa8d800047edcd08c00f2479e6cda0a8c484d68c18c0b98d0bea519848de347f6cfecc0893d1ba4cecbc271fae1dd91593108994a2ff6b2b97a4789a74178b668a6557e0fd68f3cfeaaf086a7243173a4b90b2 27a8ded16db61013ab37b20f0fa00eda27f0fafe431aa01657103bdbff1847388a4da88e8326eaa79bbf447703d40f2ad30385f26c4c340d1f186032545db93ffc8a24d544cfbfd2dbb85e05ce1dfd99b78aaed9fcb7c762e7b2cd5c017ebad4fe0ff4393433bca499a932c467110bf3c393c06568c29f56ec634f702fd3a5 a7e938f9605e9ebd9cfda6358b26127ba15ab501153193040093ff4f9c92e430b67c9ee442fe74cf2112929bed5a727d28e4d59f7b842694a5fe679d6caaee651986892242f5fdff3d58d59a8f9740bd6577e4c20d503d5e30b7f1beed6b89f3ea32053e25ec2816eb35af725204852cb1bb0d59edf7e0797246f1bc6c0ad6 ebc71ce0e0d19a27fe16b0e16a75954949dd328204732eee295220c0e712e9f0454cd105f169b1e3b1bc10c1bece935dac0fcd98afb6a8d1c87c3a8464b29e7108b64f8059228f2f10dd206dc51d524a5fccf2356e5675347cd8c8cb2aa415becdbb5a22909d14c99f6e6489ecaf049c210abd60b83f1151332b418b57ed46 a4a4cf822172dbff7df1eb097f0ad59efb9fb8480af397099efce740277d8198428be21fce503324d8b1a6ad3ef5043cf9ac34a00a40753453b03816869112fb4295cbfbc758a47666133fdcafdd96f3fb5c2daa31f4eba4215d317c2b375f924b7390bd68c156dbf54ce83493f50ee8aa277ba6ed02880d0ebbb07815b96e e8302e75226b93920e52ab6f242b72810b241c5048082cfce7844c5864649b05c6c2402122b199061dbee27e1dd36563e719d7d3897c8fb89ecbd0fe2ffe4e8d0a1bccc2171b7eb30b19921faf6bf873bf239c98cbe50273f71fcffd9ea3d38b1b960d072f0d8f005fd00accfb45a697bce1cd0d903ee16b5d90c9557e8019 cc33a5478ea54f59869e42f5272932c15e91d38aad908d80b5f3aa1f6411c15c4928f32015eab85b9e0f453241f5e85ab468986d1d529f49f194a9ee3d595f27984cc7d7ec3c2c304581e90aed20f4f099fa972fef65f75dca92f90014045704f728ffab80943a5539a2a8dbbe41e8b129125eb81f0064fce1ebd0e37a33b6 29b111974caf65d12c96b255b63af0767fe939d564ca5e09508903af675696c683f4414c49ea4634aae487937a8b77c0c3610cb810ccadeff9206a2e74ddfe4466c172787ad69bf4ea353147723ab9dfe2fe458e6081c5d442945357b3887a1d61da48ba1db009ca0f98c9b7043822322a482c5cbcd627b8fc36720796a1ca 15395876f9009e2d43df877f9905c0efa126b4926e8d3bdcf0a34e930c1b4bb051da7797fd627b234043d64b3c5741e5a4a396a405f1f0db51c9719be746ed76f95dd921f4e166b5a6b7a98685535f4bab5365882cd54c2a7ed3d6e8f0d8328dde26e6cd6affe97eac17b3f6fdca245cce3dc2571a7f79eb889c339b8bc536 c7d676abd92998d84f6524baca177ba6ee9768aeb5c29536f61281fde6d8c1f381cdb291cd950f13fc59b5a5ac5f21b93e6dcc70f6e42102e2d304aa0b3145dbdb3b061453c6a07ff1333a4b1c997a6f77699393c0784f6340e4b80d0185de76cf5c7fb5a57d9e3d412a0fcad6c7e172c0a88c3acf619478c46c7510b537d1 114c71393ff4f3ac306cdd60a3c59985a658fd40eb12b409b3d9c02dfcc7fb4a820fe7129ad82fa8e9e3e3d2972bae9ca1ee7fa09f6cd4b5dc16d99a12f3e37dfc51338af1020e64720b8692c648ed66bd8c2c97a476b5ad74f6da942c95c662d5666361c1bcbb9952052970253a8ca6586856647c8779fb68be40aa54cce1 1173e5e11b1cb2d788bba809b3fe3c9254717140af47f1c70d06f65a4e410836a85238f8f296aa5a22223151721e65ecbf1b3bbbde39c716bf80936ca80e0967e4ffc8cef3bd6bfc879537ed5fbbd23c37977693d8ff383f36ed5a7395c79bf831784d63f18f08aad9933c5da9f9b20367bce078b2f70ddc949fa90df4a702 01cf4e540286131b53befec008f63442e9a36f18f9ee8fc936f47c1fc0af66dbe306c3c9294f18cfb1ac87489808c8917ccd322ce78862bcb1a9e9d53054740b3390de5448e07189f195989ace1d4439b978d831ac1bddca934cb6b39a2b7d501ea51b05a8bf01512669bc0b8f9f2cb0fbc71058894a1dd054fc2a40e60e2b 7eb9e2ac6bd906b303694a58b9c7b85598ab41d3a2a3bdd92e5f1f006858f96226986afa48c75fce2e31049fdbf66fc94eca52e7f67153c8746318469b3b523d53404b48353458fadd743aa78752e149aca3bbc23e34aecb1061d3968d066896426d4ce3440de3b0dd8e2c07fe7bd07a50586f596a1fa5f7d7b796ec6b6ad9 2321c18820763719d4fa56bbd35f5eaf31bdab3f18441984d4bdd039dbe59474167935435e50baeb2aaa44c168f0f3872d4bcc38afc99a87dd7f2dd58ff7be453b7dfa318983cb420bf235b590439b9f5f52c2c2c84e47b11a0431a014c2f159ed770e9772fc2a307feb95f4636ba0de66958ddcd2b134f540b8578e76d73f 45b9f24b38113ecf15d9cbf0458c90c222609573d2a1a00c38eab5c62a595e0a05a4412c384e6390e926ee16aafa80ee80e03f293eeb6f18866482a2407c3c5ebf7fb7a992d76177efd297ff8bb89fff41bc1c9b064e030a45749b1811795877985162ce316b8a9b320a94d935af83b2dec1a52bd64239b2f9b7cfb8258083 97c1945d3c95390bec313bbe406f6b46cf74a5a384baecfa2b12cec10ae4af8da26c77faf0d9e6ae4de442c4a3ed36751111fd9dca5f38b95c8cb942b7ab1cbdc68d03cd6727f8337b918b57633a8c3c9fdbb96dd6cb3aec86a4cb3e6ffdfab52b03ceaab6a366e486a85e2c96610a960885900989b0647d4f3aa944e8bd0d 69d63daa8a409375d8f752d4094e7ee1d02c2b2422fa7d6911b0ab46b02618f8f8c21e0e6bf6a2d414f4a25d5e23e8aea77eafa69e246436f3c9aafc6b5b341f3f6af922e5deadf8a9f45a3dd6830bdb2eecc299c1ff58582d6fc1693a2517d0a0f204adf2c0dea6d1fab1453ab212971d6696f11261b70082c488b2dc7057 e6f313581b5cad0bf0985d4256cd30a85d172f26c0b1287844f716bb601f18da7ec50dc4bea5d5b3724f634a087a58d656e2550fa0dc709713448233a787610c57d0e77c70ff6a517c669dd38df90d8d25d661ce53638fc227ddbfbb7bfe14090ccbe886ec20920bff3d59323c9b752802cc8e40e0b61047f6e8befaf682e4 9340b007012b2785d456d621cd0947636efd22189b85c20340432d57e20730bba1ea9e24ffcbcf9d33b0cc8fb719cb0ffd2f6da8c8bf0d5b67f1e07c740dc375c0b11a706d453977757805af5b89c0735110628a8f69c7c12f22d499ff3dc7d333a8355f8db4a94e828452a1e4d145b5daa1b0c3e7de56221c7713848f8592 8adec3a4b3b29d499463b669202adbbe73318f0dbe808e99355d2b6e71d43287b3d8c9838ffcebb923978f638255bbcd70d984b964463413144dc59d7a7fc7519260922744ccd93f8176c16c5972483184277d56c42827ebb55e1c198c5b66ddf90c50d8e9e5a30151cc1b5952f8156e4890f4153538817742f8400d7c5e94 222685e440fa64c8be9bbfcf562b8bf3cd350fa2d00a1f996dd197cf2ada35597bf04c6200c085775ecd391ce34f68d39564a319ef8b02fb4f270b88856cf17997792af773ccbbe429bd472d203c3622c922d19a7f5cc3f02d826b472838c733d8db9f3cc4e3ea22ad36e35d7dbf00e9da71a133c0c60ebed4a99bf49af445 25545fa676cf9415c49e3ad5870cc40f74a7e2bb44e0d1941ccbdd4c4b03ac3163383f624d9f4d3a4cecaad34852afc93a67fdeffe29ac348332f0268fc113f80391cff84e924508a660931df301dfa094dd872504d2aa5b7d98a6e84fd4420a65682a440453ebf878bed8d7bc1555fafac512a77f4791dc2bce8c0ccf06e2 bbf93ff51c7946724b47e66768ab813cb5c4bf38ac126a5a39569374ab485e3c46f8e7c03eba4f1ff1203fe7995e8df4b482bde8e2df88adfea0944634121dcfc44ea247dcd53503cdb57b379129a30d57e499fde8a6315632cc917db23dfe741630db2b9e15a8eb1374be91f698ef7e126f8ffbbd8ca859acb172cd35f7f0 2a08f39f5d39417f8bd8a62443465ef186b8545ec6838eccaa956ed276d62b3bb1ae8a44d5a57e429d1f28c2d100f73f17fb97ed0641a19fe5ad131c6f5f4f05e1a5b3a1eb60ba7fe7921cfda00b7eade836bef345fc1ad896ffbbf16da7c3259fd9161c18dcd5db6c38443b48b3dd71dbbf6265a2d112ddb90efa1b1f497c bd4d4b93aa6c9c6b5badc6340799eb1fcfd04b98e495a01e375ea2e842f47dedb5424aad1e188ba1cc50bca92b816b6f666d5bbcd5791b8544098d45c3d648f03a867f705bb50ace4646c058230234fab94585b101d203e88329e89df0217b1f997b1c5f74600dfa3ed7aaed9a087e35bbdc610760c22df91145deed5d9d6a 8278741094b247998d53550dd1580f220a9d55bbb1311fb0d35f8cd98220865f05f4e514a6c3fa0cfcc17af53385840c8ea9ccc45eeeb0d2228068df772433557f9191115c42617b3d3bf47a99a5838e151cab0fedb3f47b27d65cc50c68b6a3ffacca5ccbe7484eac9f90ac1915a2a2d1fe98f234e5891ec4e7f6df4f97c4 9198eb6765f896ed68a453989f29e7d2d771a46d44d4811c82de954218f6ff434e06a851a1b838a6c13de0c5fafa67483d36dacf752354eaa756c30acce76503607a6385465e2a8c1faadcee4959d3060f3fa5881a6c6d73d8f5742f7e637a0d25e334d4ec53315665430642d79a2f96071e62198351a6184734479e4e14d6 6aa935bf6d27a6453c47f00a37fc83cadec53366d6a13efcbd29c25f85540227bbe2f397f0f0bda2dea965755e2bab0bc35a36ce56ec0d06927c5945c23a416b50491ab5661b3e3308692369d605b954ba056abc22c3008f346310a81511140f1d100ea17bebe853c2aad908d50320fde954595ef9d9893ed7e4fb163ca2e5 d6846d026827b8a9bc37a3a1669d0cb9226e63fff2cae3ee0c571abeb147f4230edbbf41772d35cc0e46b80212f45a23db0c63c172bee06e3eea8603033b3949ade75891f44f5543fc646f7fe3b094063cdee7ff9decff8ca1f16adc818abdaff24a6eb0b8bf41d6b8a5848ecfc923d20610efb6f4c57e08f34fe540b4e642 a852df8c9a863af17f68ed3e47b78a59a52d1e1e048cb82db85dff7e1d32685e9b0b4c5085b66df5016446585af3e7bc87f3131995832367c4403a04eaf2b72c26bd676ebfcb3ff78c67bbc562bf6fe5e71f4df7787a5e6c05777fdcf7125a1e848b338aacd97e388344e09a2b5eb1e99efca830f39bc6d453dc590a85e955 eda1d70cf1294af3c4d948db5a4e3de8324888353d8f8e5fc193abcc3725f6e2206fb522cbbe3940b4ea6ce2a803603503d749b5b2d4dde112940af184b35142b5aee8691ca80eb9d375d6c4849218889ffa04b8fcf9d828c42f4fd4cc98cac27d04b9f5b340c47cd2896989d58ac59a2dfd5f1fe0dfe000cb52219d1da308 109553300546d20c3364b17d5f124601e31d5269123af8a37c3be83ca76d110f6cfebd51f331352233241df94d46cbe6e884ad7724b5da987dc82f6f3366b6d2b51d13f98a0b025c2c28e8aae2acede6c78f379206df705d7ba811ae6b9fc93f8a2c7eae596b7e93db1ef774b8855d1e3b5b9abc8d74ad22e0d3b180158d8d 3fd70e04a426c14b4a0c9c354f08f1a280b641cb16f59800948bd6e2ed89a8d1e0c55231b41729437c57589602e7fddc3ef962f7250357b8d8b1df59cd1639a75d14c51506657fc739502eee276c56b5c9012043d38ac17893de11a32fa2f44ae4404710d0006fa76675360f8ca99980bf88ca306664b79a4b2ec8df968fdd 48c92548317571c2b214de9f18de2a1c87263a4a74d75c5bd3db8cf32c63c4031808d6fbf9739ba38e2ae55b9c01f29aff821208a3bb575d9db63188d7c3aef23aee75190d519cdfc53152e6633e27a2e453152c6bee8b1643c3de1ad820cc37fba98bf5e38ac8d9b6148f97b8be9abf9518adf5fb2075f0ff26e721660784 5a524fedf00dc69e863655f025e9acf77783a80f39ad5f35d00ac0126714251640c3ac6eb3d83bdda164788526e17eb93469fbfa292947ab01ae659d3c6280359277e060b3ea52f14380e2c64ebe9cc2457a818e9e2a75f8d2dfc093aeedd4f371acab7729440100994b541287ce556fdfcba8a22a089529e92d84dccddbad 7cedd550b244bf7a779288d3cc83c5eacf5b4febe68131a8285454bd302348dbc10c6d55e21c6345124bacbe10f2c3f5c87bf783ac97e14aec056f94ae22640b5272dbfc7e047e36f1f6f04e49628eb42250f4fbf59bd2b3e7e0487c947c8a2649cc7ab00742cfbb9311e62113a763e1f097c699171daef1ebf75e3ea01a3e 5519ebf0001e21d1a46be196ccb8b94a8929f9aacec6edcfd179d97250fe4b551b778af01de5c28c23b18a45c6eaf32390533ac5eca73a85903a6dbf878e2399de6b1b9b5966bdc07b11752e37fa66df0b7575ec024e3dd6062e95409f73068c6e2444d5d115b54827104c9c6e00cdc02d8dc158bc10fdfbcf7ebb71d26ef1 05a67ce876f328aeed0c55835ef52a0889ca194f9a811c0cf330bee371795e25d6e900a5d0aee0bd561b0bf7dd46a7a39ca3aa3652435ee937340fae76166b062182a4632c8c2f05107b16f4906de07c1b225f56886f5eae6eec85cfd455dfd5b923d84712faee2d7eb1a44a615559735422d03c95e8c1c4f271ec2f0ad748 0c44ee1d644a4244cc67d91b1c1a2d4a2303cc7ae4d9dde96af3abc8eb690fe2d0115c78676766513e468d49b3217cb32a53b6bd3b4c8f44c174574a505f3fb67b744fb93a5463912ec5eba7e3c0c7940d0ec64ffd70ab5bc9b30fd938b4d54979244abfe918d5f78d61c4f4e98095c9087d39bc8534b627a158f0471a6858 25177cc0188206a64376cf1103683fe1dcd1966055548e4396b097a6826554b46e49d3fdffdc43513c9d6717dcfb030643c27bc6aedbc6efeca6182e59c9f76ddf74c24512d15a199e8e7e471918899c8e2a89a4b3287c6699788da6f7029c820914e96e1caf8aad254ea3b76bfdd4a562c237e4f4345afb0134eaa8f512b4 2cb7d6f1dd801be8e938703131bbbcb7c10ca12fb5d6efd1422bc13abe9070a491cd0b5b599aaba5eead5cba8a43b7680bb067297c1b44da35b9a68b1bc70c58a0e5756e214f87be1419b8aa820c75bb38c9828ddab14205c598b99c79ac5ddfa631d07353e0b6f21a9104e3d1e05154cb2ee65775f9abeb59e026d115150c b11c4469f6239283f7e4cbc06de8cc942b9ea041805c34d36086ee93018864abf68e6b69a66949526d75ab054fc19fcf7527841e12f7b62d92ae56818fc7e1a62837b33b9b350b8db2b599bcd41c3e513aa7751f9c4e4db9e215b50b831f84abb27e8c64112ee952ebaecaf450b29c41bc4e4e107869b66856d6c4ffc7624e 744a34d47a3d13d339a671ddcbcb1742423a1cf2b2d66b0f2bd8c115b54573b9ef705d5d683ef8856b3af26ed035ca9e50e460c8cf4453ab558b5940c6fade3b3bc7eccf5c35057e6cce69e6fd52bcf7d6ee48501213f266a9da4297edf7fa971fd342b4ec0e15bdf25205b746a5f044482a5390ec635b14e8c63d36d64c96 6f29401768f30853ebf878bed8d7bc2568714b7e489fe03429481644e0f94eef0a5372378a60f8c3bc6b684783df4fb0d97f510d1b43ef0f04d03e02e8b2c0413b00b827b319a0e3436a0a3fa061217625d0bbcaaa0f9cfb73395db8fe305b9b6bd1d342bc89841b84fc14e76d31f3bbfba6346be7533420f29a56ed41b2f2 799149d756916fe2f575dabbda2a493ffc07996d9d8978aacf82df84e31ad1d6d5ec0aa2004aa7e5378b1402fea3666e5231517b4620324c25e008fa0c85531e21e4d275a4ebf1f2c589e869f3eb4196c25c47a4c6668c1d7ae5717f7389ab1f7bc4a6c6059058f7ff1f83668d61a48429d3bd77cbe284fd083eb8ff37ceee 42795a08c7e4f959de9de18eef332655d405f8d9e4f41819e10c522283c95e1437b293d92ae6f9092e51982bfb5fb8f64d585a32fb7ae55e44e8facbb2d5fc59a0c35ca6b7c8aa086fd0cc2f307de69832997212f0b812c21b43f69557afdfceebb12727d33b818cba79430ea967e45b92d647b8cfcd369100963ff1d08857 2983d8cb92a91d8ba5444dd746de45fc736d3c5f976a5265af3df003842b793371635ef55f498d97c3db8a1b681616f7df308d2a18e3452b7669b43ca02d08755813c2e94371e82c2a918be917bcaf3babf119429798510d902efd2ac64fb0316f4ec6ed5296d815b980b914b65d472141a60ddce3d80699ec8b8107a296e9 a195be9ab35827f635115159373f916f5fa3fa0f62c4067b5c2389a51283bdc04a805660a857a450b8696885b152835c0ce585c26f96b905e33f623637824ca8dd01b0e8c3feaee10c7e6d46c2993d5a8ea4cfcf0cd97c3e500ae6b6997d33d8a0a96450493c8d2b49461192d472fc15b1ff2752629fd04cba6d23a27062bd 7df42ba7f529957ff25665cbfb3335f61a00e60f8c261c819742396096f91b8ca6b50bd6489174a1551d7be277da24a982a85d2295b756aac2ba7876f183e3f00b4f53f8fd3f0117d44ca3a1a027f51cd44517899a2b4ae471bd09b03b82c9b9b64ef19e1d05887cd52121fbada29c24213336fbb54cc2ac1b624414eb540c e6102bd6dd82b52ce62ea547d62478b7865c2febc4f4783ba8d504705c5eccfe43fee04f49cc6602e3d71045326bdfa44ed2412b242e4115793934072ce6b36fbd12ef46e0ff96142eca6e57f707760059d5cc7b93a78d9b6ec2c91259995ca847c60e02a7698b4df8bb55d8529e1e345aaad22b23521d720cdbac6557b66c e0e3f9a139fc3237531eef771edc04dbd7779575efc7b6d5e569eb438aac79d3cac32a76073c843024988344ad7b9200c78e04a4e1817383cc0eb15eaae8b60992d62caecee9d51a04c90fb5c0e50ea09e836b3d6f92f5016492a8b14450d65e012d5e25701c3a204f72df59ff1b1919665cb744ff9cc14334579b5d2a2a4a d311c739dc0a3b9bbdb8e29e0ceeccfd63b156999734261131a18227aa4d9190f69e7e74cf9dae95596d691dcff8762e7817101eff0a03dfab9da89936d76335054b9b2e54e30730ac67f6b6c8dd47d2db1719e888f85a1979ccdaf5ebd9484b819bbc87dd983e8211813ec26e8f33bb846876b5a0fb09f6a0a96e893b9124 085cde323272271840c235ff6e411027b7b73ec957428397d8e28ef39e740145ec57ffbc41f3f29c36d534ad02187963af2e69944be7f8ac09fcd848481c4e1208e5d50236e32de0c4f2b0e1b2255995e2d1d139c345b2cf99ea50a2498372788985b883ce35f61499b67dc68589b8dd05ce01cfe85fa1eed553028bf47e2f a36efc6da18dc2aff683da8fb46d4b41ddad477e446cb364a3aac376139814fb6beca17e9006ca7a0e639e314313e65eb48eda5a1fa0c1c2a3a9c951cc7429b9b7c0c84501f349db92ca1ecd3b8d8f784420ab18f5557747e428786ec8b26f5ea5d9f77357fbb7ad468a8f5d617807b616d1d3a5e56ed1dc7d75737e3198fd d0ff43f6f6deb433b824b31172fc1b19a04e9d7775d2fa27df5d0b153ab6f4b059563290edeaae5097a1b1a43f252493af8b468dca77789590b6c60e4afd4a21040faaab9c629b508a340d9c71095632d639d3bb7682c438c4ba07730868e3db29ad74cdeb15029a36c02f24ca41009c16e3e81533387afb3f509cea9da457 a825171becd2526dde3e8875cc7e9b9a347f12654ee7923b2e858791928b69e700b48663f447ba8868b3232b2a9840078a43ddb6406e1f9d6754b8eadc5405462fdd487eaacbb16abbd959c66f83c93dbac0ab44ba08bfddb12bf01c7f992026b13f75bec85c720790aaf43b0623cfacb180af53ff447daf44168020c0ac67 419e20a8b345e23c0ce39fdf4c3a37406b8b31df8b2027b78ec38dc4b622f1f54206e32a31db28a585585c23526cfe862f7a6931c66cf62cbafa61e27e21fb398f3fe6ab25fbeebaa49d78a2723eb07acd09c38d7b528a85e94829a92acea66caadee39ec6b038b4deed794cfc45ac644f28ce17877f840977fbea676af84a fafb81b533092bccb82a13885287f5ce670699081c3b4b87e3e353c1f6d32b00f4a5308cbda4a85664c1c8f2f6d354ec13db2e5d6b1d0a28885cf6c30795d1a126e090344147447fd2ab21abdcad7a6cdc4a1b97a5d90f5542a2bfda0db44edfd195c740678a70d510b456fce402876e3764a3abd52cc5752c05c7900479cd 0967e5706162c5cab7cc32f13c3b555b67511d3624db4163588607955a85143fc64213da1b9b70919cc53ca737862cf80c87b94618e7bc1c96df314d43b796c66921865609be4a026177e545fdb5e3c1478e3d5306572d34e7a289bb1099ca1ded68661aa96a680d8677b62e32943d8bb7dec73aadd2fbcd822f923ede9043 436414383251ebeab9b973c231050487fd9eb28eb535967f7d50edf1c0efc093c40ce0ece2c9cfd0b77651f22ecde3bda6e3a94d745798649c708dd50727f270e5b1365ec1ba1be3bc4a9080e37527579e6309887d6e6ed495443ea9a7d91dc590750ade3a135d36e28721035bd94dfc7c547b01c44d2bca220a4f50a63019 9b7b6bc65748961f745d8d93d094d25798a2ed3fe0bf08def17274d8b08802c6d6422a31bb1b99f212d51db7a0d05ff6eadd7a3fa1bb59d3c5491f449cf271e697962427cc60d1fa55e79bb64abc88ad68d82fc14fce7133a15dea32b45c0fa96e61bcf3e394e140f116d705066bab05c70c2a98d6432d1250a1a649941d02 92fa3c7ef8367bdac8d92bdc1ba8d91c95f4ea46461610770e56f3d7d3562fbccb35e21855142fd6f5da8e0918e412d53d51c7fabdcd21eae9749f0dba1cba266be0600ae99c593bece16d9a2bc024929dc84cd385676bb7e7b0f34a826e53caacca9091f5155e7460a3d4139cc155ed3c8c4856a41a198b17918a94099058 588b02f4eddb515e50e86450bcddce9cec3109e22186e92c02dd15d7c1e41f3b3596ecf642163c71fe885446cd6525dc43569b0c218b4a1549e288a1ccb847f79ff6d4fdb8469d9ac6ebe1f6f8aa32b5a6ea9638c42bdf0e9ebddc8f29f96f1c5407a12304bff65d96241b9d384d8bfa5ff8df7d067bbf90d8083e3e13eb8c e3c19535c2a9a2e4415a27685372054bcb0f00528125ebf5cffdd1b316785815f7f678803ddee69f7c0119e6978927a98fde01fe6d6e5dd315f1816b312de0b96121ab6d43bacbb496b6df8d99923e1dba7d0718e60a1583264e90357ada3978e983906aa9e0dcc25fca1086d5106ded9201b9d3e19f00d5e6ed7743baf095 12068c2a6b91ed91fd4fed83df00810aef1b4d7b8b80d4d328d0a7b7e8e55a51c009b8953c0658be094d66c98f9a7bb192b27c285c186bddf558a31d73c7f3f383631f10981b02f5c1c0433ae4a9b2864368cb6bebf1c12cb22219daa695f63999e81ba0a19be77ab5eb6ee94f41c38731ba8f3bbb35a2d2e7f299c6ff46d3 43428d7b9a9da075f019de2b9d8e37d6f9b337fa2d9ba182d1cc53e832b8bc60ebfe3f2673701699b16c81a4c6ee9b5248437e441d79164e4c99d2453c004b91510a9020ec3f12eaed811fb67ae4c3ae4b9e29970851d91d73e884286622c591665225b83991f9e4b0bdd9d87332c1a2f48c749898556491dd4b3b11ab0b59 8c56e3d586389d64daecd63675e77485e33e89f8cbaa856e3742383fd7a301f237c43f6af9f360938eb3f9376f5cb6e00502d6b9125ce9a21c6ed87640273e91bea63b522e23d3c6e557a69ef65ef0735eefb88d786b87164b303b71d34b9a78242de1605054c8aaa5295b450183f63d852f5192289dca6c55254b063ddadd 4923c1cbb127df60f3029909230a77538919d858b24cd6be486a549e20e627a18d3b926004cd0162e683cbaaeb682ffaf45f60530fbfd1dc228ff8265eb46d728eef891a2dce2eb37e1724a9c41d0f5bf378ab40b7437def988c068f6155b1c98ad1d05f07f61ed94f1daadf2ddcbddde4d2579d9027776d828733dbdf6f52 b52ad8d6ee508c2662113577d320781424c5483d9c8025bbec08752fd22b131da887f9d1e3566552e0ce4234f06982302ca02e425e6df8e44538a071c90a6f850284bf6ae6275f58dacbe5241f90e611f2a51571dec7225b3fb6616b78f84ed448b8dd309e85ee13aae8d7c64857aeaed97affe2e1da461077b1fcad237cc2 0302ca6379ede96e9817a6116f6953f92ab4916fcbe33caeaa5ebd7a6bbc6761c1712679755647f0598daa1726b41cccba179ac2138e712cde448b5e67f0d2c72ffd2b6d631bee0396e6323627e66352290d8ff1e85f29a00f412a16d826a09be2ff8f7c06e4d7ba61ba51c67b0d03baa07529e7a2b991d1c24c31417a3266 52f6508de6c17d3b45c55408bed0946e83632b95a42af2dd4c9d5b63e58154f5f7093fcff7b9f2a1bf0c300828b340f770e523bdc9db94aa7ce54521ec57832e0f199b27cea1716cec165ef2a639c2d0067daf7205204a35da5a4324d74efc53b5c0ee17ce50dc7ef4d3b50e4f4d309a369a6186aefcf3bfc8afba22f76f83 b17bad6ee5ae81bbc246e147a65a14898485df43f48c83d439b34b2b23b6af7e5d28794f25cc8f9faf54d7d9ef395e465260f5cbdb2ad4c9f3186c605bbba5f0cfdf8b99138a6663293a358c39915512cda76ceb45880a9086d02bf3333889c38693e62aeba70a87836699448b6a55ae6d813736584039936b6103a5cd4392 949ef8f4852d3b5baceb81fd7b598d96389208ed1630efd2e973cfde145fb08bc2d83cb7801f21cba988c5e564bb77ed0b7f2ce08f18e59edbd482b02e9a14a86c02ce1fc473ba28b6813be843e309307a3216a04b3d5d99ba0f7528f96b85159cf7c85f53dbfafe9fe9f5dd5029fac48f3687b7540ac30e101a313f0eaa09 4b3163f7a612f229dd12d58a1d8ca3b281f8b1b806a3455979294df6801e1a941bb7c14f381902f39c88d2f93c17eb51cbea2d416e26e9af99b589552004c5267ded0c4dd64a8f827a011794ddfe58bebb0d37077eb333dd840f34afba2811ed5c828d64b7eef00064f0ee507092cf7809066338277a9fe3d38b61fbd9a6e0 afd2fd692cee830f13cce21a41f1dec1c4cc904e14a8968221d463a2ba2aafa3a7a2a8be208d741002d8fc074022cc4237df4fa0cf0e4fec7e407e96dd1ebd2194a1db2857536000d6a2169ecc6300175919966f3f7194b926de9d67cb05b25c8f107c7e536f8c862a8530ac3d36101f957f394661c9b5a4b9d03803136134 9bda9da163effc8f3dace76348961fdc32db2c858270982e1bf2d828d01306dbd35be662a58fd8e13db4d18d0641bb84c778f2f85e3c20cc35129b34fb0837ad0590c073a6f201ca67e7ced31630c1257b270f14b931459a5a57b000752384c94eda5e0565586b6d159e26e04727ba63f92de73d5e7baf6d9db367c5d41984 7777167389c2f5b9597409a11581d5d728c6ac35d81be3a4c43697a06e59da2085f1d12ae2c3c5c5c41bf33373d94637978b639f4507de729cf9579afaa4fff01605d4adca0db3848ded041fa9bca0fe281126005c711c9ed6ff10328854ad65f60aee35aefd2503a457a1658d329ced870907c719252aed451347ecbca138 c6f3309c63786c664096b089bc409d0ddde101a17e424a0dbe03fed41610d763e10389ef90eb4f63efe9fba574ef15608df56545b394539dd8f7b64a7e3d3947e46fe4fe822e3785b2d1c6f4219f8fd001cd24dc83da4dcbbe4f53103fa53f5064d98995b934c5f77dfee71f00d58e0fea3b0b24f5e92f099ff563a0b2c283 2e3081ffca49bffe55021d85582420593dcb19b3bb410564a58b0a8e1a3d37f44aca0fe62534e44b4240e59c432c56daa3222763a63e5273040996f7c41146988713351c60c9da01b51cfd21a4967abd1b54c48aa22a02a931545d5bbe3465e6a9c673b10b6517a6e290a41b448137fea8edc0d880ea0badcd30a66339bba0 dbdb2ed85ef6e4427ecec897c6a4fbcf15b4d830d07b102089e16875b7fc732b0e1be352f9612f2f6ebf85c022cd32656939812e75b6009834bd62d1645d86199965651fe06083bd482d075cb2660f82933fd0fff54dce09310db2af4efda90dbb23ef2bfefba6235339d6b275b7c59a44369c22e3d2531d36e13dccd25035 610e58f770251a28eb69782f978231de41d039169e413158693778d412254f060d99356fa3293792e9f980ad8ec41f095367ae9859f49e45d7ac997c1f554e86f69f0f3b1de14681fe9a5738bee4379b782616f9613ace00cd40e5627de3c9c1edd88e037bb2f36bec76701f630deb8cf306b219de304524ee4df12772a4ae 0450419513e76d03582fa48070da3aeff7f42bfbe07bf2dfc27aa41e1a65e5b3a78a9f2178d71914fb3330f3edddd3c23508d0f4dfa702520a31b355b10c6481c5d910a198006229ffac0f908638cec552c4812302082e110d3a2fdbae4bfb4e90215100bb3aee1a9b9f565855263ec4525bc1c85c6b9ea59884a7133ddf30 17a0ce9899abdb97221c3e4c5cf4ad095a718c670622173d7c8f50ea6074249bda5e9e0a3352a5ea80f2305fac989c8c08642a998b0be5b303ae5945d8aeb9027f71d5109c20d4c9ff45da2c3f7b81ee5f7b957e7a6d46d91b5e7fde35a94cb3abb516ea3cca205389006506b1c2d35b8c85d0f037a53bf392f9eb75593e82 3d87c03e04fec3c7f97ffb6c3d5f15426c7afa2de1f85cd5d27a59881a6fc2c0b7193824e830aa74f570d8cb1db8604fd4cf8bb01cda9a2c5b9602d1ee3b44b4863bf60905b327f7b448a739ead0c34f6d2f01be5361464c4e258e1cd4d86fb4646da04baa26f4c2fd0701986f6b26160fc83d255b852d7afa6f9409213a27 1d5adb46efca6deb92140c4ff36765537d48d4270de75287fd8b4728b34269ba55d99582da3e9dcfabf13a2c3ab3ef472b221d462c7bce73afcd63dcc25bfbcf2f8ce7044cca0a0c780b0835d43c0d1d2636e3a1255415bfe25fd0189dc466d9bd0b70067b5fcfd2f8a100ded7fa3aea04a7e3472932144697b3251c819705 2631180e2e1b4993a433ae2ef1780237ea6b931761abeac9d7534a047d9149f771484c59e94b8bb037ee8bc0de61f7334a874bbfa8c6e407e0dca7871c279ee7d2aba18cd31fa5f45e34be401a2b4df5ad1fbf280edd1c868f1c92ec7f3884aeec3dd5e2b8a6d1ec42f238f4798ecfcbd1af39b0d4a49516848449a7c764eb 5f4405bb49f60d6ff76173e75c27fd84cebc63d2187f29d758718c8167b05cb11faff21d79db6aca0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont setpacking %AI3_EndRider [ 39/quotesingle 96/grave 130/quotesinglbase/florin/quotedblbase/ellipsis /dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft /quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark /scaron/guilsinglright/oe/dotlessi 159/Ydieresis /space 164/currency 166/brokenbar 168/dieresis/copyright/ordfeminine 172/logicalnot/hyphen/registered/macron/ring /plusminus/twosuperior/threesuperior/acute/mu 183/periodcentered/cedilla /onesuperior/ordmasculine 188/onequarter/onehalf/threequarters 192/Agrave /Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute /Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde /Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave /Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute /acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex /edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute /ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex /udieresis/yacute/thorn/ydieresis TE %AI55J_Tsume: None %AI3_BeginEncoding: _Myriad-Roman Myriad-Roman [/_Myriad-Roman/Myriad-Roman 0 0 1 TZ %AI3_EndEncoding AdobeType %AI55J_Tsume: None %AI3_BeginEncoding: _Symbol Symbol [/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /universal /numbersign /existential /percent /ampersand /suchthat /parenleft /parenright /asteriskmath /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /congruent /Alpha /Beta /Chi /Delta /Epsilon /Phi /Gamma /Eta /Iota /theta1 /Kappa /Lambda /Mu /Nu /Omicron /Pi /Theta /Rho /Sigma /Tau /Upsilon /sigma1 /Omega /Xi /Psi /Zeta /bracketleft /therefore /bracketright /perpendicular /underscore /radicalex /alpha /beta /chi /delta /epsilon /phi /gamma /eta /iota /phi1 /kappa /lambda /mu /nu /omicron /pi /theta /rho /sigma /tau /upsilon /omega1 /omega /xi /psi /zeta /braceleft /bar /braceright /similar /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /Euro /Upsilon1 /minute /lessequal /fraction /infinity /florin /club /diamond /heart /spade /arrowboth /arrowleft /arrowup /arrowright /arrowdown /degree /plusminus /second /greaterequal /multiply /proportional /partialdiff /bullet /divide /notequal /equivalence /approxequal /ellipsis /arrowvertex /arrowhorizex /carriagereturn /aleph /Ifraktur /Rfraktur /weierstrass /circlemultiply /circleplus /emptyset /intersection /union /propersuperset /reflexsuperset /notsubset /propersubset /reflexsubset /element /notelement /angle /gradient /registerserif /copyrightserif /trademarkserif /product /radical /dotmath /logicalnot /logicaland /logicalor /arrowdblboth /arrowdblleft /arrowdblup /arrowdblright /arrowdbldown /lozenge /angleleft /registersans /copyrightsans /trademarksans /summation /parenlefttp /parenleftex /parenleftbt /bracketlefttp /bracketleftex /bracketleftbt /bracelefttp /braceleftmid /braceleftbt /braceex /.notdef /angleright /integral /integraltp /integralex /integralbt /parenrighttp /parenrightex /parenrightbt /bracketrighttp /bracketrightex /bracketrightbt /bracerighttp /bracerightmid /bracerightbt /.notdef /_Symbol/Symbol 0 0 0 TZ %AI3_EndEncoding AdobeType %AI55J_Tsume: None %AI3_BeginEncoding: _Times-Italic Times-Italic [/_Times-Italic/Times-Italic 0 0 1 TZ %AI3_EndEncoding AdobeType %AI5_Begin_NonPrinting Np 6 Bn %AI5_BeginGradient: (Black, White Radial) (Black, White Radial) 1 2 Bd [ 0 0 0 < 00000000000000000000000000000000000000000000000101010101010101010101010102020202 02020202020202030303030303040404040404040505050505050606060607070707080808090909 090A0A0A0A0B0B0B0C0C0D0D0D0E0E0F0F0F101011111112121313141515161617171819191A1A1B 1B1C1D1D1E1F202021222323242526272728292A2B2C2D2E2F303132333435363738393A3B3C3D3E 3F404142434445464748494A4C4D4E4F50525354565758595B5C5D5F606263656668696B6C6E7071 737576787A7C7D7F81838587898B8D8F919395979A9C9EA0A3A5A7AAACAFB1B4B7B9BCBFC2C5C7CA D0D6DBE0E4E8ECF0F2F4F6F7F9FBFDFF > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 4 %_Br [ 0 0 0 0 1 1 1 2 50 0 %_Bs 0 0 0 1 0 0 0 2 50 100 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Nova) (Nova) 1 3 Bd [ < 08070707060606050504030303030303030404050506060606070707070707070707070707070706 06060505040403030202020202020304040405050606060606070707070707070707070707060606 06050504040404040404040404050505050606060607070707070707070707070707070606060606 05050505050505050505050505050505060606060606070707070707070707070707070706060606 06060505050505050505050505050505050505050505060606060606060707070707070707070707 07070706060606060606060505050505050404040404040404040404040404040404040505050505 05050506060606060606060606060606060606060606060606060606060606060606060606060606 06060606060606060606060606050505050505050505050505050505050505050504040404040404 04040404040404040404040404040404040404040404040404040404040303030303030303030303 0303030303030303 > < 0505060607070808090A0A0B0C0C0D0E0F0F10111212131415161718191A1A1B1C1D1E1F20212223 24252728292A2B2D2E2F2F30313233343435363738393A3A3A3B3C3D3E3F40414243444545464849 4A4B4C4D4E4F4F50515254555656565758595A5B5C5D5D5E5F6061626363646566676869696A6B6D 6E6F707071727374757576777879797A7B7C7D7E7E7F8081828283848586868788898A8A8B8C8D8D 8E8F909191929394949596979798999A9A9B9C9D9D9E9FA0A0A1A2A4A4A5A6A7A7A8A9A9AAABACAC ADAEAEAFB0B0B1B2B3B3B4B5B5B6B7B7B8B9B9BABBBBBCBDBDBEBFBFC0C1C1C2C3C3C4C5C5C6C6C8 C9C9CACBCBCDCDCECFCFD0D0D1D2D2D4D4D5D6D6D7D7D8D9D9DADADBDBDDDDDEDFDFE0E0E1E1E2E2 E3E3E4E4E4E5E5E6E6E7E7E8E8E9E9EAEAEAEAEBEBEBECECEDEDEDEDEEEEEFEFEFEFEFF0F0F0F0F0 F1F1F1F1F1F2F2F2F2F2F3F3F3F3F3F3F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F5F5F5 F5F5F5F5F5F5F5F5 > 0.9137 0 1 < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E2E1E0DFDEDDDCDBDAD9 D8D7D6D5D4D3D2D1D0CFCFCECDCCCBCAC9C8C7C6C5C4C3C2C2C1C0BFBEBDBCBBBAB9B8B7B7B6B5B4 B3B2B1B0AFAEAEADACABAAA9A8A7A7A6A5A4A3A2A1A0A09F9E9D9C9B9A9A99989796959494939291 908F8E8E8D8C8B8A898988878685858483828180807F7E7D7C7C7B7A797878777675747473727171 706F6E6D6D6C6B6A6A696867676665646463626161605F5E5E5D5C5B5B5A59585857565655545353 525151504F4F4E4D4C4C4B4A4A4948484746464544444342424140403F3E3E3D3C3C3B3A3A393938 373736353534343332323131302F2F2E2E2D2C2C2B2B2A2929282827272626252424232322222121 20201F1E1E1D1D1C1C1B1B1A1A191918181717161616151514141313121211111110100F0F0E0E0E 0D0D0C0C0C0B0B0A0A0A090909080808070707060606050505040404040303030302020202010101 0101010000000000 > 0 4 %_Br < 030404050606070809090A0B0C0D0D0E0F10101112131314151616171819191A1B1C1C1D1E1E1F20 20212223232425252627272829292A2B2B2C2D2D2E2F2F303131323333343535363637383839393A 3A3B3B3C3C3D3E3E3F3F404041414242434344444545464647494A4C4E5051545658595B5E606163 6668696B6D707173747677797A7C7D7F8182848587888A8C8D8F9092949597989A9B9C9E9FA0A2A3 A4A5A7A8A9ABACADAEB0B1B2B3B5B6B7B9BABBBDBEBF > < F5F5F5F4F4F3F3F3F2F2F1F1F1F0F0F0EFEFEFEFEEEEEEEEEDEDEDEDEDEDECECECECECECECECECEC ECECECECEDEDEDEEEEEEEFEFF0F0F0F1F1F2F3F3F4F4F5F5F6F6F7F7F8F8F9F9FAFAFAFAFAF8F8F7 F7F6F6F5F5F4F3F3F2F2F2F1F1F1F0F0EFEFEFEFEEEEEEEEEEEDEDEDEDEDEDEDEDEDECECECECECEC ECECEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E8E8E8E8E8E8E8E8E8E7 E7E7E7E7E7E7E8E8E7E7E7E7E7E7E7E7E7E6E6E6E6E6 > < E9E9E9E9EAEAEAEAEBEBECECECECECEBEAE9E9E7E6E4E4E2E1DFDFDDDBDBD9D7D4D4D2D0CDCDCBC8 C6C6C4C2C0BFBDBBB9B9B7B4B4B2B0ADADABA8A6A5A3A09E9D9B98969593908E8D8B888686848281 7F7D7B7B78757373706E6B6B68656362605D5A5A575452514F4D4D4C4B4949484645454443424241 3F3E3E3D3C3B3B3A383737353434333130302F2E2C2D2B2A29292827262625242222211F1F1D1C1A 1A18171515131210100F0D0C0B0A0807080707070707 > < 00000000010101010101010101020202020202020303030303030404040404040505050505050606 060707070808080909090A0A0B0B0B0C0C0D0D0D0E0E0F0F10101111111212131314141516161718 18191A1A1B1C1C1D1E1F202021222323242526262728292A2A292A282726262524232322201F1F1E 1D1C1C1B191818171716161515151413121211100F0F0E0D0C0C0B0A090908080808070707070606 06060505050404030403030202010101010101010101 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A > < 00000000000101010101010101010202020202020202020303030303030303030404040404040404 04050505050505050505060606060606060606070707070707070707080808080808080808090909 0909090909090A0A0A0A0A0A0A0A0A0A0B0B0B0B0B0B0B0B0B0C0C0C0C0C0C0C0C0C0D0D0D0D0D0D 0D0D0D0E0E0E0E0E0E0E0E0E0F0F0F0F0F0F0F0F0F10101010101010101011111111111111111112 12121212121212121313131313131313131414141414 > < 000101020304040506070708090A0A0B0C0D0D0E0F10101112131314151516171818191A1B1B1C1D 1E1E1F20212122232424252626272829292A2B2C2C2D2E2F2F303132323334353536373838393A3A 3B3C3D3D3E3F40404142434344454646474849494A4B4C4C4D4E4E4F505151525354545556575758 595A5A5B5C5D5D5E5F60606162626364656566676868696A6B6B6C6D6E6E6F707171727373747576 76777879797A7B7C7C7D7E7F7F808182828384858586 > 4 %_Br [ 0.0314 0.0196 0.9137 0 1 1 0 2 38.2022 0 %_Bs 0.0118 0.9608 0.9137 0 1 0 0 2 50 75.2809 %_Bs 0.749 0.902 0.0275 0.0039 0.2902 0.0784 0.5255 2 50 100 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (RGB Rainbow) (RGB Rainbow) 0 6 Bd [ < F4F4F4F3F3F3F3F3F3F3F3F3F3F3F3F2F2F2F2F2F2F1F1F1F1F1F0F0F0F0EFEFEFEEEEEEEDEDEDEC ECECEBEBEAEAE9E9E8E8E7E7E6E6E5E4E3E3E2E1E0DFDEDDDBDAD9D8D6D5D4D3D1D0CFCECCCBCAC8 C7C6C5C3C2C1BFBEBDBBBAB9B7B6B5B3B2B0AFAEACABAAA8A7A6A4A3A1A09E9D9B9A989695939290 8F8D8C8A898786858382817F7E7D7B7A79787675747371706F6E6C6B6A686766646362615F5E5C5B 5A585755545351504E4D4C4A494746454342413F3E3D3B3A393736353332312F2E2D2B2A29272625 242321201F1E1E1D1C1B1A191817171615141413121111100F0F0E0D0D0C0B0B0A0A090908070706 06060505040404030303030202020202 > < EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEF EFEFF0F0F0F0F0F0F0F0F1F1F1F1F1F1F1F2F2F2F2F2F2F3F3F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4 F4F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F7F7F7F7F7F7F8F8F8F8F9F9F9F9F9F9F9F9F9F9F9F8 F8F8F7F7F6F6F6F5F5F5F5F4F4F4F3F3F3F3F2F2F2F2F1F1F1F1F0F0F0F0F0EFEFEFEFEFEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFF0F0F0 F0F0F0F1F1F1F1F1F2F2F2F2F2F2F3F3 > 0 0 < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000001010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010202020202020202 02020202020202020202020202020202020202020202020202020202020202020202020202020202 02020202020202020202020202020202 > 1 4 %_Br < D5D5D6D7D8D9DADBDDDEDFDFDFDFDFDEDEDEDDDDDCDCDCDBDBDBDBDADADADADADBDBDBDCDCDDDEDE DFE0E1E2E3E4E6E8E9E9EAEBEAEAE9E8E8E7E7E6E6E5E5E4E4E3E2E1E0E0DFDFDFDFDFDFE0E0E1E2 E3E5E7E8EBEDEFF1F2F4F5F4F3F1EFEDEBEAE8E7E6E5E4E3E2E2E2E2E2E2E2E3E4E5E7E8EAEBEBEB EBEBEAEAEAEAE9E9E9E9E9E8E8E8E8E8E7E7E7E7E8E8E9E9EAEAEBEBEBEAEAEAEAEAEAEAEAEAEBEB ECEDEEEFF1F3F5F6F7F8F9FBFCFCFCF9F7F6F4F2F1F0EEEEEDECECEBEBEBEBECECEDEDEEEEEFEFEF EFEFEFEFEFF0F0F0F1F1F2F3F3F4F5F6F7F8F9FBFCFDFDFEFFFFFFFFFFFDFCFBFBFAF9F8F8F7F7F6 F6F6F5F5F5F5F4F4F4F4F4F4F4F4F4F4 > < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000101010101020202020303030404040405050505060606060707 0707070707070708090A0B0C0E11131517191B1D1F21232527282A2B2D2E3031323334353637383A 3C3D3F4042444547494A4C4E4F5153555658595B5C5E5F606263646667696A6C6D6F707273757677 797A7B7D7E7F80818384858687898A8C8E9091939597989A9C9D9FA0A2A3A4A6A7A8AAABACAEAFB0 B2B4B5B7B9BABCBDBFC1C2C4C5C7C8CACBCCCECFD1D2D3D5D6D7D8DADBDCDDDEDFE1E2E2E3E4E5E6 E7E7E8E9E9EAEAEBEBEBECECECECECED > 0 0 < 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 1 4 %_Br < ECECECECECECECECECECEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAE9E9E9E9E9E8E8E8E8E8E7E7E7E7 E7E6E6E6E6E5E5E5E5E5E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E2E2E2E2E2E2E2E2E2E2E2E2E2 E2E2E2E2E2E2E2E2E2E2E2E2E2E2E3E3E3E4E4E4E5E5E6E6E7E7E8E8E9EAEAEBEBECEDEEEEEFF0F0 F0F0F0F0F0F1F1F1F1F1F1F1F0EFEEEDEDECEBEAEAE9E8E7E7E6E6E5E4E4E3E3E2E1E1E0E0DFDFDF DEDEDDDDDDDCDCDCDBDBDBDBDBDBDBDBDBDCDCDCDDDDDDDEDEDFDFE0E0E1E1E2E3E3E4E5E6E6E7E8 E9E9E9E9E9E9E9E9E9E9E9E9E8E7E6E6E5E4E3E2E2E1E0E0DFDEDEDDDDDCDCDBDBDADAD9D9D9D8D8 D8D7D7D7D7D6D6D6D6D6D5D5D5D5D5D5 > 0 < FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFDFDFDFDFCFCFCFBFBFBFAFAF9F9F9F8F8F7F7F6F6F5F5F4 F4F3F3F2F1F1F0F0EFEEEDEDECEBEAE9E8E7E5E4E3E2E1E0DFDEDDDCDBDADAD9D8D7D6D5D4D3D2D1 D0CFCDCCCBCAC8C7C6C4C3C1BFBDBBB9B7B4B2B0AEACAAA8A6A4A2A09E9C9A98969492908E8C8A89 87858381807E7C7A7977757372706E6C6B6967666462615F5E5C5A595756545351504E4D4B4A4847 46444341403E3D3B3A3837353432312F2E2C2B29282625242221201E1D1C1A191817151413121110 0E0D0C0B0A0908070605040302010000 > 0 < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101 > 1 < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 4 %_Br < 0808090A0A0B0C0C0D0E0E0F101011121313141516171818191A1B1C1D1E1F1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F6061626364666768696A6B6C6D6E6F707172737474757677 78797A7B7C7D7E7F8081838485868788898A8B8C8E8F909192939495969798999A9B9C9D9E9FA0A1 A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BBBCBDBEC0C1C2C3C4C5C7C8C9CACBCC CDCECFD0D1D2D3D4D5D6D6D7D8D9DADBDBDCDDDEDEDFE0E0E1E2E2E3E3E4E4E5E6E6E6E7E7E8E8E9 E9E9EAEAEAEAEBEBEBEBEBEBECECECEC > < 05050505050505040404040404040404030303030303020202020202010101010000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 > < E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEBEBEBEBEBEBECECECECECEDEDEDEDEEEEEEEEEFEF EFF0F0F0F1F1F1F2F2F2F3F3F3F3F4F4F4F5F5F5F5F6F6F6F7F7F7F7F8F8F8F8F9F9F9F9FAFAFAFA FBFBFBFBFBFBFBFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFD FDFDFDFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF > 0 < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 1 0 4 %_Br < 03030303040404040404040404040404040505050505050505050606060606060606060606060606 06060606060606060606060606060505050505040404040404040404040404050505050606060606 06070707070707070707070606060606050505050505050505050505050505060606060607070707 07070707070707060606060605050505050505050505050505060606060707070707070707070707 07060606060505050404040404040404040505060606060707070707070707070707060606060505 04040403020202020203030404050506060607070707070707070707070707060606060505040403 03030303030304050506060607070708 > < F5F5F4F4F4F4F4F3F3F3F2F2F1F1F0F0EFEFEEEDEDECEBEAEAE9E8E7E6E5E4E4E3E2E1E0DFDEDDDB DAD9D8D7D6D5D4D2D1D0CFCECDCBCAC9C8C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A898887 868584838281807F7E7D7C7B7A797877767574737271706F6E6D6B6A696867666564636261605F5E 5D5C5B5A595857565655545251504F4E4D4C4B4A4948464544434241403F3E3D3C3B3A3A39383736 353434333231302F2E2D2B2A2928272524232221201F1E1D1C1B1A19181716151413121211100F0F 0E0D0C0C0B0A0A090808070706060505 > 0.9137 0 1 < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 0 4 %_Br [ 0.0078 0.9529 0 0 1 0.0078 1 2 50 100 %_Bs 0.9569 0.9294 0 0 0 0 1 2 50 80 %_Bs 0.8353 0 0 0 0.0039 1 1 2 50 60 %_Bs 0.9255 0 1 0 0 1 0 2 50 40 %_Bs 0.0314 0.0196 0.9137 0 1 1 0 2 50 20 %_Bs 0.0118 0.9608 0.9137 0 1 0 0 2 50 0 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Steel Bar II) (Steel Bar II) 0 3 Bd [ 0 0 0 < 00000000000000000000000000000000000000000000000101010101010101010101010102020202 02020202020202030303030303040404040404040505050505050606060607070707080808090909 090A0A0A0A0B0B0B0C0C0D0D0D0E0E0F0F0F101011111112121313141515161617171819191A1A1B 1B1C1D1D1E1F202021222323242526272728292A2B2C2D2E2F303132333435363738393A3B3C3D3E 3F404142434445464748494A4C4D4E4F50525354565758595B5C5D5F606263656668696B6C6E7071 737576787A7C7D7F81838587898B8D8F919395979A9C9EA0A3A5A7AAACAFB1B4B7B9BCBFC2C5C7CA D0D6DBE0E4E8ECF0F2F4F6F7F9FBFDFF > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 4 %_Br 0 0 0 < FFFDFBF9F7F6F4F2F0ECE8E4E0DBD6D0CAC7C5C2BFBCB9B7B4B1AFACAAA7A5A3A09E9C9A97959391 8F8D8B89878583817F7D7C7A7876757371706E6C6B696866656362605F5D5C5B5958575654535250 4F4E4D4C4A494847464544434241403F3E3D3C3B3A393837363534333231302F2E2D2C2B2A292827 272625242323222120201F1E1D1D1C1B1B1A1A191918171716161515141313121211111110100F0F 0F0E0E0D0D0D0C0C0B0B0B0A0A0A0A09090909080808070707070606060605050505050504040404 04040403030303030302020202020202020202020101010101010101010101010100000000000000 00000000000000000000000000000000 > < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 4 %_Br [ 0 0 0 1 0 0 0 2 50 100 %_Bs 0 0 0 0 1 1 1 2 50 40.45 %_Bs 0 0 0 1 0 0 0 2 50 0 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Sunrise) (Sunrise) 0 6 Bd [ < EEEDEDEDECECECECECECECECEDEDEDEDEEEEEEEFEFF0F0F1F1F2F2F2F3F3F4F4F4F5F5F5F6F6F6F7 F7F7F7F7F5F4F2F1F0EFEDEDECEAEAE9E8E7E7E6E6E5E4E4E4E3E3E3E3E3E3E3E3E3E3E3E3E3E3E4 E4E4E4E4E5E5E5E5E5E5E5E5E5E5E5E5E5E5E4E5E5E4E4E4E4E4E4E3E3E3E2E1E1E0E0DFDEDEDDDC DCDBDADAD9D8D7D7D6D5D5D4D3D3D2D2D2D2D2D2D1D1D1D1D1D1D0D1D1D0D1D1D1D1 > < 35343332312F2E2C2B2928262422211F1D1B1917151311100F0E0D0C0B0A09080807060505040303 02010100000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000 > 1 < 131211100F0F0E0D0C0C0B0B0A090908070706050504040303030302020202020101010101010100 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000 > < 00000101010202020303030404040505050606060707070808080909090A0A0A0B0B0B0C0C0C0D0D 0D0E0E0E0F0F0F1010101111111212121313131414141515151616161717171818181919191A1A1A 1B1B1B1C1C1C1D1D1D1E1E1E1F1F1F20202021212122222223232324242425252526262627272728 28282929292A2A2A2B2B2B2C2C2C2D2D2D2E2E2E2F2F2F3030303131313232323333 > < 666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D 8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5 B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDD DEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 0 4 %_Br < 080809090A0A0A0B0C0C0D0D0E0E0F10101112131415161718191A1B1C1D1E1F2021222324252627 2828292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F4041424344454648484A4B4C4D4E4F 505152535455565758595A5A5C5D5E5F5F616163636466666868696B6B6D6D6E6F70717273747576 7778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E 9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C5C5C7 C8C9CACBCDCDCED0D0D2D3D3D5D5D7D7D8D9DADBDCDCDDDEDFE0E0E1E2E3E3E4E4E5E6E6E7E7E8E8 E9E9EAEAEAEBEBEBECECECECEDEDEDEE > < 05050506060606060706070707070708080808080808080808080908090809090909090909090909 090909090909090909080909090909090A0A0A0A0A0A0A0A0A0A0B0A0B0A0B0B0B0B0B0B0C0B0C0B 0C0C0C0C0C0D0D0D0D0D0E0E0E0E0E0F0F0F100F1010101110111211121112131213121313131313 13141314131414141414141514141414151414141515151515161616161617171717171818181918 191A191A191A1B1A1B1A1B1C1B1C1C1C1D1D1D1D1E1E1E1F1E1F201F201F20212021212122212221 2222222221222322222222232222222223222222222322232223242425242627262727282A292A2A 2B2D2C2E2D2F30303131323433353435 > < E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEBEBEBECECEDEDEDEEEEEFEFF0F0F1F2F2F3F3F4F5F5F6F7 F8F9F9FAFAFBFCFCFCFCFCFBFBFAFAF9F9F9F8F8F7F7F7F6F6F6F5F5F5F5F5F4F4F4F4F4F3F3F3F3 F3F3F3F3F3F3F3F3F3F3F4F4F4F4F4F4F5F5F5F5F6F6F6F7F7F8F8F8F9F9F9FAFAFAFAFAFBFBFBFB FBFBFCFCFCFCFDFDFDFDFDFEFEFEFEFEFFFFFFFFFEFEFEFDFDFDFDFDFCFCFCFCFCFCFCFBFBFBFBFC FCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF > < 00000000000000000000000000000000000000000000000000000000000001010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010202020202020202020202020202 02020202020203030303030303030303030303030303030303030303030304040404040404040404 04040404040404040404040504050405050505050505050505050505050505060505050606060606 06070607070707070707070808080808080808080808080909090A090A0A0A0B0B0B0B0B0C0C0C0C 0D0D0D0E0E0E0F0F0F0F101111121213 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFEFDFDFCFBFBFAFAF9F8F8F7F7F6F5F5F4F4F3F2F2F1F1F0EFEFEEEEEDECECEBEBEAE9E9E8E8 E7E6E6E5E5E4E3E3E2E2E1E0E0DFDFDEDDDDDCDCDBDADAD9D9D8D7D7D6D6D5D4D4D3D3D2D1D1D0D0 CFCECECDCDCCCBCBCACAC9C8C8C7C7C6C5C5C4C4C3C2C2C1C1C0BFBFBEBEBDBCBCBBBBBAB9B9B8B8 B7B6B6B5B5B4B3B3B2B2B1B0B0AFAFAEADADACACABAAAAA9A9A8A7A7A6A6A5A4A4A3A3A2A1A1A0A0 9F9E9E9D9D9C9B9B9A9A999898979796959594949392929191908F8F8E8E8D8C8C8B8B8A89898888 878686858584838382828180807F7F7E7D7D7C7C7B7A7A7979787777767675747473737271717070 6F6E6E6D6D6C6B6B6A6A696868676766 > 0 4 %_Br < 07070707070707070606060605050504040404040404040405050606060607070707070707070707 07060606060505040404030202020203030404050506060607070707070707070707070707060606 06050504040303030303030304050506060607070708 > < 64636261605F5E5D5C5B5A595857565655545251504F4E4D4C4B4A4948464544434241403F3E3D3C 3B3A3A393837363534343331302F2E2D2B2A2928272524232221201F1E1D1C1B1A19181716151413 121211100F0F0E0D0C0C0B0A0A090808070706060505 > < F0F0F1F1F1F1F2F2F2F3F3F3F4F4F5F5F5F6F6F6F7F7F8F8F8F7F7F7F6F6F6F6F5F5F5F5F4F4F4F4 F3F3F2F2F2F1F1F1F0F0F0EFEFEFEFEFEFEFEEEEEEEEEEEEEDEDEDEDECECECECECEBEBEBEBEAEAEA E9E9E9E9E8E8E8E8E8E8E8E8E8E8E8E8E8E9E9E9E9E9 > < 01010101010101010100000000000000000000000000000000010101010101010101010101010101 01010101010000000000000000000000000000000000010101010101010101010101010100000000 00000000000000000000000000000000000000000000 > 1 < 999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0 C1C2C3C4C5C6C7C8C9CACBCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9 EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 0 4 %_Br < E4E5E5E6E7E7E8E9EAEAEBECEBEBEBEBEAEAEAE9E9E8E8E7E7E6E5E5E4E3E3E2E1E0DFDFDEDDDCDB DADAD8D7D6D5D4D3D2D1D0CFCFCECDCCCBCBCAC9C8C7C6C5C4C3C2C1C0BFBEBEBDBCBAB9B8B7B6B5 B3B2B1AFAEADACABAAA9A9A7A6A5A4A3A2A19F9E9D9C9B9998979796949392908F8E8D8B8A898887 878584838281807F7E7C7B7A7A79787675747371706F6F6D6C6B696867666563636261605F5D5C5B 5B5A5957565554525151504F4D4C4B4949484746454443424241403F3E3D3D3C3B3A393838383736 3635343434333232313130302F2E2E2E2D2C2C2C2B2A292929282727262625242423232221212120 1F1E1E1E1D1C1B1B1B1A19191818181716151515141313121212111010100F0F0E0E0E0D0D0D0C0B 0B0B0A0A0A0A0909090808080808080700 > < 2323222221212120201F1F1F1F1F1E1E1E1E1E1F1F1F1F1F1F1F1F1F1F2020202020212121212222 22222323232424242525252525252626262626262626262627272727272728282828282829292929 2A2A2A2A2B2B2B2B2C2C2C2C2C2C2D2D2D2D2E2E2E2E2F2F2F2F2F30303030313131313132323232 32333333333434343535353535363636363737373738383838393939393A3A3A3A3A3B3B3B3B3C3C 3C3C3D3D3D3D3E3E3E3E3F3F3F404040404041414242424343434344444545454546464747474849 494A4A4A4B4B4C4D4D4D4E4E4F4F4F50505151515252535353535454555555565657575758585859 595A5A5A5A5B5B5B5C5C5C5C5D5D5D5E5E5E5E5F5F60606060606061616161616162626262626262 6263636363636363636464646464646400 > 0 < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000101010101010202020202030303030303030404040404040505 05050505060606060607070707070808080809090909090A0A0A0A0B0B0B0B0C0C0C0C0D0D0D0D0D 0D0E0E0E0E0E0E0F0F0F0F0F0F0F1010101010111111111111121212121213131313131313141414 14141415151515151515161616161616161717171717171616161616161616161616161515151414 131312121211111010100F0F0E0E0E0E0D0D0C0C0C0C0B0B0B0B0A0A090909090808080807070707 06060606050505050404040404030303030303020202020202020101010101010101010101010101 01010101010101010101010101010101FF > < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 2828292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F40414243444545464748494A4B4C4D 4E4F50515253545556575758595A5B5C5D5E5F60616263646566666768696A6B6C6D6E6F70717273 737475767778797A7B7C7D7E7E7F80818283848586878788898A8B8C8D8E8F909091929394959697 9798999A9B9C9D9E9F9FA0A1A2A3A4A5A5A6A7A8A9AAABACACADAEAFB0B1B1B2B3B4B5B6B7B7B8B9 BABBBCBCBDBEBFC0C1C1C2C3C4C5C5C6C7C8C9C9CACBCCCDCDCECFD0D1D1D2D3D4D5D5D6D7D8D8D9 DADBDCDCDDDEDFDFE0E1E2E2E3E4E4E5E6E7E7E8E9EAEAEBECECEDEEEEEFF0F0F1F2F2F3F4F4F5F6 F6F7F8F8F9F9FAFBFBFCFCFDFDFEFEFFFF > 0.6 < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBABAB9B8B7B6B5B4B3B2 B1B0AFAEADACABAAA9A8A8A7A6A5A4A3A2A1A09F9E9D9C9B9A99999897969594939291908F8E8D8C 8C8B8A89888786858483828181807F7E7D7C7B7A79787877767574737271706F6F6E6D6C6B6A6968 686766656463626160605F5E5D5C5B5A5A59585756555453535251504F4E4E4D4C4B4A4948484746 454443434241403F3E3E3D3C3B3A3A3938373636353433323231302F2E2E2D2C2B2A2A2928272726 25242323222120201F1E1D1D1C1B1B1A19181817161515141313121111100F0F0E0D0D0C0B0B0A09 0908070706060504040303020201010000 > 4 %_Br < EFEFEFEFEFEFEFEFEEEEEDEDECECEBEBEBEBECECEDEEEEF0F1F2F4F6F7F9FCFCFCFBF9F8F7F6F5F3 F1EFEEEDECEBEBEAEAEAEAEAEAEAEAEBEBEBEAEAE9E9E8E8E7E7E7E7E8E8E8E8E8E9E9E9E9E9EAEA EAEAEBEBEBEBEBEAE8E7E5E4E3E3E2E2E2E2E2E2E3E4 > < B9B7B5B4B2B0AFAEACABAAA8A7A6A4A3A2A09F9D9C9A9897959391908E8C8A89878685848381807F 7E7D7B7A797776757372706D6C6A696766646362605F5E5C5B5958565553514F4E4C4A4947454442 403F3D3C3A3837363534333231302E2D2B2A28272523 > 0 0 0 < 333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A 5B5C5D5E5F6061626364656768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F80818283 8485868788898A8B8C8D8E8F90919293949596979899 > 1 4 %_Br [ 0.8196 0 1 0 0.2 1 0 2 50 100 %_Bs 0.9333 0.2078 1 0.0745 0 0.4 0 2 50 57.3034 %_Bs 0.0314 0.0196 0.9137 0 1 1 0 2 50 55.618 %_Bs 0.0275 0.3922 0.9412 0.0039 1 0.6 0 2 50 46.6292 %_Bs 0.8941 0.1373 0 0 0 0.6 1 2 45 28.0899 %_Bs 0.9373 0.7255 0 0 0 0.2 1 2 50 0 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (White, Black) (White, Black) 0 2 Bd [ 0 0 0 < 00000000000000000000000000000000000000000000000101010101010101010101010102020202 02020202020202030303030303040404040404040505050505050606060607070707080808090909 090A0A0A0A0B0B0B0C0C0D0D0D0E0E0F0F0F101011111112121313141515161617171819191A1A1B 1B1C1D1D1E1F202021222323242526272728292A2B2C2D2E2F303132333435363738393A3B3C3D3E 3F404142434445464748494A4C4D4E4F50525354565758595B5C5D5F606263656668696B6C6E7071 737576787A7C7D7F81838587898B8D8F919395979A9C9EA0A3A5A7AAACAFB1B4B7B9BCBFC2C5C7CA D0D6DBE0E4E8ECF0F2F4F6F7F9FBFDFF > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 4 %_Br [ 0 0 0 1 0 0 0 2 50 100 %_Bs 0 0 0 0 1 1 1 2 50 0 %_Bs BD %AI5_EndGradient %AI5_End_NonPrinting-- %AI5_Begin_NonPrinting Np %AI3_BeginPattern: (Azure Rings) (Azure Rings) 22.5 22.5 58.5 58.5 [ %AI3_Tile (0 O 0 R 0 0 1 Xa 0 0 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1.75 w 4 M []0 d 0 XR 40.5 58.5 m 40.5 48.5586 32.4409 40.5 22.5 40.5 c 12.5591 40.5 4.5 48.5586 4.5 58.5 c 4.5 68.4414 12.5591 76.5 22.5 76.5 c 32.4409 76.5 40.5 68.4414 40.5 58.5 c s 40.5 22.5 m 40.5 12.5586 32.4409 4.5 22.5 4.5 c 12.5591 4.5 4.5 12.5586 4.5 22.5 c 4.5 32.4414 12.5591 40.5 22.5 40.5 c 32.4409 40.5 40.5 32.4414 40.5 22.5 c s 40.5 40.5 m 40.5 30.5586 32.4409 22.5 22.5 22.5 c 12.5591 22.5 4.5 30.5586 4.5 40.5 c 4.5 50.4414 12.5591 58.5 22.5 58.5 c 32.4409 58.5 40.5 50.4414 40.5 40.5 c s 58.5 58.5 m 58.5 48.5586 50.4409 40.5 40.5 40.5 c 30.5591 40.5 22.5 48.5586 22.5 58.5 c 22.5 68.4414 30.5591 76.5 40.5 76.5 c 50.4409 76.5 58.5 68.4414 58.5 58.5 c s 58.5 22.5 m 58.5 12.5586 50.4409 4.5 40.5 4.5 c 30.5591 4.5 22.5 12.5586 22.5 22.5 c 22.5 32.4414 30.5591 40.5 40.5 40.5 c 50.4409 40.5 58.5 32.4414 58.5 22.5 c s 58.5 40.5 m 58.5 30.5586 50.4409 22.5 40.5 22.5 c 30.5591 22.5 22.5 30.5586 22.5 40.5 c 22.5 50.4414 30.5591 58.5 40.5 58.5 c 50.4409 58.5 58.5 50.4414 58.5 40.5 c s 76.5 58.5 m 76.5 48.5586 68.4409 40.5 58.5 40.5 c 48.5591 40.5 40.5 48.5586 40.5 58.5 c 40.5 68.4414 48.5591 76.5 58.5 76.5 c 68.4409 76.5 76.5 68.4414 76.5 58.5 c s 76.5 22.5 m 76.5 12.5586 68.4409 4.5 58.5 4.5 c 48.5591 4.5 40.5 12.5586 40.5 22.5 c 40.5 32.4414 48.5591 40.5 58.5 40.5 c 68.4409 40.5 76.5 32.4414 76.5 22.5 c s 76.5 40.5 m 76.5 30.5586 68.4409 22.5 58.5 22.5 c 48.5591 22.5 40.5 30.5586 40.5 40.5 c 40.5 50.4414 48.5591 58.5 58.5 58.5 c 68.4409 58.5 76.5 50.4414 76.5 40.5 c s %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Blue Tablecloth) (Blue Tablecloth) 0 0 12 12 [ %AI3_Tile (0 O 0 R 0 0 1 Xa 0 0 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 6 6 m 0 6 L 0 12 L 6 12 L 6 6 L f %AI6_EndPatternLayer ) & (0 O 0 R 0.6 0.6 1 Xa 0.6 0.6 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 12 6 m 6 6 L 6 12 L 12 12 L 12 6 L f %AI6_EndPatternLayer ) & (0 O 0 R 1 1 1 Xa 1 1 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 12 0 m 6 0 L 6 6 L 12 6 L 12 0 L f %AI6_EndPatternLayer ) & (0 O 0 R 0.6 0.6 1 Xa 0.6 0.6 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 6 0 m 0 0 L 0 6 L 6 6 L 6 0 L f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Camouflage) (Camouflage) 1 1 73 73 [ %AI3_Tile (0 O 0 R 0.3922 0.6039 0.1451 Xa 0.3922 0.6039 0.1451 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 1 73 m 1 1 L 73 1 L 73 73 L 1 73 L f %AI6_EndPatternLayer ) & (0 O 0 R 0.4039 0.4 0.0745 Xa 0.4039 0.4 0.0745 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 18.5449 73 m 18.5449 1 L 46.7832 1 L 46.7832 73 L 18.5449 73 L f %AI6_EndPatternLayer ) & (0 O 0 R 0.8 0.8 0.1059 Xa 0.8 0.8 0.1059 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 11.9512 1 m 11.9512 4.7129 9.2314 2.8813 9.2314 6.5938 c 9.2314 10.2334 4.25 10.2334 4.25 13.8735 c 4.25 17.4858 10.0313 17.4858 10.0313 21.0991 c 10.0313 24.832 10.208 24.832 10.208 28.5654 c 10.208 32.3071 5.5205 32.3071 5.5205 36.0469 c 5.5205 39.7021 11.8838 39.7021 11.8838 43.356 c 11.8838 47.0566 7.4609 47.0566 7.4609 50.7568 c 7.4609 54.4043 5.7959 54.4043 5.7959 58.0542 c 5.7959 61.7686 4.6631 61.7686 4.6631 65.4805 c 4.6631 69.1636 11.9512 69.3184 11.9512 73 C 27.9268 73 L 27.9268 69.3184 22.0635 69.1636 22.0635 65.4805 c 22.0635 61.7686 28.6631 61.7686 28.6631 58.0542 c 28.6631 54.4043 25.1553 54.4043 25.1553 50.7568 c 25.1553 47.0566 28.8145 47.0566 28.8145 43.356 c 28.8145 39.7021 22.1191 39.7021 22.1191 36.0469 c 22.1191 32.3071 26.3945 32.3071 26.3945 28.5654 c 26.3945 24.832 24.4248 24.832 24.4248 21.0991 c 24.4248 17.4858 20.3838 17.4858 20.3838 13.8735 c 20.3838 10.2334 24.6055 10.2334 24.6055 6.5938 c 24.6055 2.8813 27.9268 4.7129 27.9268 1 C 11.9512 1 L f %AI6_EndPatternLayer ) & (0 O 0 R 0.0784 0.4157 0.1647 Xa 0.0784 0.4157 0.1647 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 41.875 1 m 41.875 4.7134 42.3867 2.8818 42.3867 6.5938 c 42.3867 10.2334 40.5947 10.2334 40.5947 13.8735 c 40.5947 17.4858 41.5742 17.4858 41.5742 21.0991 c 41.5742 24.832 43.6484 24.832 43.6484 28.5659 c 43.6484 32.3076 39.1709 32.3076 39.1709 36.0469 c 39.1709 39.7026 39.7549 39.7026 39.7549 43.356 c 39.7549 47.0566 45.3896 47.0566 45.3896 50.7568 c 45.3896 54.4043 40.1055 54.4043 40.1055 58.0542 c 40.1055 61.7686 40.6289 61.7686 40.6289 65.4805 c 40.6289 69.1636 41.875 69.3184 41.875 73 C 59.0752 73 L 59.0752 69.4219 53.4805 70.1934 53.4805 66.6143 c 53.4805 62.9136 55.8945 62.9136 55.8945 59.2153 c 55.8945 55.502 61.0059 55.502 61.0059 51.7886 c 61.0059 48.1489 60.5635 48.1489 60.5635 44.5103 c 60.5635 40.897 59.9277 40.897 59.9277 37.2842 c 59.9277 33.5508 56.3662 33.5508 56.3662 29.8169 c 56.3662 26.0762 61.0908 26.0762 61.0908 22.3354 c 61.0908 18.6812 52.6025 18.6812 52.6025 15.0264 c 52.6025 11.3262 55.7461 11.3262 55.7461 7.6265 c 55.7461 3.978 59.0752 4.6484 59.0752 1 C 41.875 1 L f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Clown Attack) (Clown Attack) 5.25 11 41.25 47 [ %AI3_Tile (0 O 0 R 0 1 0 Xa 0 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 17.5 18.25 m 17.5 15.2119 15.0376 12.75 12 12.75 c 8.9624 12.75 6.5 15.2119 6.5 18.25 c 6.5 21.2881 8.9624 23.75 12 23.75 c 15.0376 23.75 17.5 21.2881 17.5 18.25 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 0 1 Xa 1 0 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 22.25 34.125 m 22.25 31.2939 19.9556 29 17.125 29 c 14.2944 29 12 31.2939 12 34.125 c 12 36.9561 14.2944 39.25 17.125 39.25 c 19.9556 39.25 22.25 36.9561 22.25 34.125 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 0 0 Xa 1 0 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 30 31.625 m 30 29.4854 28.2646 27.75 26.125 27.75 c 23.9849 27.75 22.25 29.4854 22.25 31.625 c 22.25 33.7646 23.9849 35.5 26.125 35.5 c 28.2646 35.5 30 33.7646 30 31.625 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 1 0 Xa 1 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 23.25 24.5 m 23.25 22.4287 21.5713 20.75 19.5 20.75 c 17.4287 20.75 15.75 22.4287 15.75 24.5 c 15.75 26.5713 17.4287 28.25 19.5 28.25 c 21.5713 28.25 23.25 26.5713 23.25 24.5 c f %AI6_EndPatternLayer ) & (0 O 0 R 0 0 1 Xa 0 0 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 36 22.25 m 36 19.0742 33.4258 16.5 30.25 16.5 c 27.0742 16.5 24.5 19.0742 24.5 22.25 c 24.5 25.4258 27.0742 28 30.25 28 c 33.4258 28 36 25.4258 36 22.25 c f %AI6_EndPatternLayer ) & (0 O 0 R 0.8 0.7922 0.2078 Xa 0.8 0.7922 0.2078 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 24.25 16.5 m 24.25 14.8438 22.9067 13.5 21.25 13.5 c 19.5933 13.5 18.25 14.8438 18.25 16.5 c 18.25 18.1563 19.5933 19.5 21.25 19.5 c 22.9067 19.5 24.25 18.1563 24.25 16.5 c f %AI6_EndPatternLayer ) & (0 O 0 R 0 1 1 Xa 0 1 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 37.25 43.875 m 37.25 39.5264 33.7236 36 29.375 36 c 25.0264 36 21.5 39.5264 21.5 43.875 c 21.5 48.2236 25.0264 51.75 29.375 51.75 c 33.7236 51.75 37.25 48.2236 37.25 43.875 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 0.8 0 Xa 1 0.8 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 38.75 26.625 m 38.75 25.7275 38.0225 25 37.125 25 c 36.2275 25 35.5 25.7275 35.5 26.625 c 35.5 27.5225 36.2275 28.25 37.125 28.25 c 38.0225 28.25 38.75 27.5225 38.75 26.625 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 0.4 0 Xa 1 0.4 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 19.875 42 m 19.875 41.1025 19.1475 40.375 18.25 40.375 c 17.3525 40.375 16.625 41.1025 16.625 42 c 16.625 42.8975 17.3525 43.625 18.25 43.625 c 19.1475 43.625 19.875 42.8975 19.875 42 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 0 0 Xa 1 0 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 12.75 28.125 m 12.75 26.8135 11.6865 25.75 10.375 25.75 c 9.0635 25.75 8 26.8135 8 28.125 c 8 29.4365 9.0635 30.5 10.375 30.5 c 11.6865 30.5 12.75 29.4365 12.75 28.125 c f %AI6_EndPatternLayer ) & (0 O 0 R 0 1 0 Xa 0 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 43.25 33 m 43.25 30.998 41.627 29.375 39.625 29.375 c 37.623 29.375 36 30.998 36 33 c 36 35.002 37.623 36.625 39.625 36.625 c 41.627 36.625 43.25 35.002 43.25 33 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 1 0 Xa 1 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 13.25 43.75 m 13.25 40.9883 11.0117 38.75 8.25 38.75 c 5.4883 38.75 3.25 40.9883 3.25 43.75 c 3.25 46.5117 5.4883 48.75 8.25 48.75 c 11.0117 48.75 13.25 46.5117 13.25 43.75 c f %AI6_EndPatternLayer ) & (0 O 0 R 0.6 0 0.8 Xa 0.6 0 0.8 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 6.5 22.25 m 6.5 20.7314 5.2686 19.5 3.75 19.5 c 2.2314 19.5 1 20.7314 1 22.25 c 1 23.7686 2.2314 25 3.75 25 c 5.2686 25 6.5 23.7686 6.5 22.25 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 1 0.4 Xa 1 1 0.4 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 34.4883 32.75 m 34.4883 31.9277 33.8223 31.2617 33 31.2617 c 32.1777 31.2617 31.5117 31.9277 31.5117 32.75 c 31.5117 33.5723 32.1777 34.2383 33 34.2383 c 33.8223 34.2383 34.4883 33.5723 34.4883 32.75 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 1 0 Xa 1 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 49.25 43.75 m 49.25 40.9883 47.0117 38.75 44.25 38.75 c 41.4883 38.75 39.25 40.9883 39.25 43.75 c 39.25 46.5117 41.4883 48.75 44.25 48.75 c 47.0117 48.75 49.25 46.5117 49.25 43.75 c f %AI6_EndPatternLayer ) & (0 O 0 R 0.6 0 0.8 Xa 0.6 0 0.8 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 42.5 22.25 m 42.5 20.7314 41.2686 19.5 39.75 19.5 c 38.2314 19.5 37 20.7314 37 22.25 c 37 23.7686 38.2314 25 39.75 25 c 41.2686 25 42.5 23.7686 42.5 22.25 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 1 0 Xa 1 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 49.25 7.752 m 49.25 4.9902 47.0117 2.752 44.25 2.752 c 41.4883 2.752 39.25 4.9902 39.25 7.752 c 39.25 10.5137 41.4883 12.752 44.25 12.752 c 47.0117 12.752 49.25 10.5137 49.25 7.752 c f %AI6_EndPatternLayer ) & (0 O 0 R 0 1 1 Xa 0 1 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 37.25 7.875 m 37.25 3.5264 33.7236 0 29.375 0 c 25.0264 0 21.5 3.5264 21.5 7.875 c 21.5 12.2236 25.0264 15.75 29.375 15.75 c 33.7236 15.75 37.25 12.2236 37.25 7.875 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 1 0 Xa 1 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 13.25 7.75 m 13.25 4.9883 11.0117 2.75 8.25 2.75 c 5.4883 2.75 3.25 4.9883 3.25 7.75 c 3.25 10.5117 5.4883 12.75 8.25 12.75 c 11.0117 12.75 13.25 10.5117 13.25 7.75 c f %AI6_EndPatternLayer ) & (0 O 0 R 0 1 0 Xa 0 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 7.25 33 m 7.25 30.998 5.627 29.375 3.625 29.375 c 1.623 29.375 0 30.998 0 33 c 0 35.002 1.623 36.625 3.625 36.625 c 5.627 36.625 7.25 35.002 7.25 33 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 0.6 1 Xa 1 0.6 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 39.6533 16.0381 m 39.6533 15.1064 38.8975 14.3506 37.9658 14.3506 c 37.0342 14.3506 36.2783 15.1064 36.2783 16.0381 c 36.2783 16.9697 37.0342 17.7256 37.9658 17.7256 c 38.8975 17.7256 39.6533 16.9697 39.6533 16.0381 c f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Pyramids) (Pyramids) 1 1 19.5 19.5 [ %AI3_Tile (0 O 0 R 0.8 0.8 0.8 Xa 0.8 0.8 0.8 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 1 19.5 m 10.25 10.25 l 19.5 19.5 l 1 19.5 l f %AI6_EndPatternLayer ) & (0 O 0 R 0.2 0.2 0.2 Xa 0.2 0.2 0.2 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 19.5 1 m 10.25 10.25 l 1 1 l 19.5 1 l f %AI6_EndPatternLayer ) & (0 O 0 R 0.6 0.6 0.6 Xa 0.6 0.6 0.6 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 1 1 m 10.25 10.25 l 1 19.5 l 1 1 l f %AI6_EndPatternLayer ) & (0 O 0 R 0.4 0.4 0.4 Xa 0.4 0.4 0.4 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 19.5 19.5 m 10.25 10.25 l 19.5 1 l 19.5 19.5 l f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Red Stripe) (Red Stripe) 37 19 73 55 [ %AI3_Tile (0 O 0 R 1 0 0 Xa 1 0 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 18 w 4 M []0 d 0 XR 37 37 m 73 37 l S %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI5_End_NonPrinting-- %AI5_BeginPalette 0 0 Pb 0 0 0 Xa ([Registration]) Pc 0 0 0 Xa ([Registration]) Pc 1 1 1 Xa (White) Pc 0 0 0 Xa (Black) Pc 0.6 0.6 0.6 Xa (Gray) Pc 0.8 0.8 0.8 Xa (Light Gray) Pc 0 1 1 Xa (Bright Blue) Pc 0.6 1 1 Xa (Light Blue) Pc 0.8 1 1 Xa (Pale Blue) Pc 1 0 1 Xa (Violet) Pc 1 0.4 1 Xa (Light Violet) Pc 1 0.8 1 Xa (Pale Violet) Pc 1 1 0 Xa (Yellow) Pc 1 1 0.4 Xa (Light Yellow) Pc 1 1 0.6 Xa (Pale Yellow) Pc 0.6 0.2 0 Xa (Brown) Pc 0.8 0.4 0.2078 Xa (Light Brown) Pc 1 0.6 0.4 Xa (Pale Brown) Pc 0 0 1 Xa (Blue) Pc 0.4 0.4 1 Xa (Faded Blue) Pc 0.8 0.8 1 Xa (Faded Pale Blue) Pc 1 0 0 Xa (Red) Pc 1 0.4 0.4 Xa (Light Red) Pc 1 0.6 0.6 Xa (Mauve) Pc 0 0.6 0 Xa (Forest Green) Pc 0.2 0.8 0.2 Xa (Green) Pc 0.6 1 0.4 Xa (Pale Green) Pc 0 1 0 Xa (Bright Green) Pc 0.4 1 0.4 Xa (Light Bright Green) Pc 0.5922 1 0.6 Xa (Pale Light Green) Pc 0.6 0 0.8 Xa (Purple) Pc 0.6 0.4 0.8 Xa (Periwinkle) Pc 0.8 0.6 0.8 Xa (Lavender) Pc 1 0.6 0 Xa (Orange) Pc 1 0.8 0.2 Xa (Light Orange) Pc 1 0.8 0.6 Xa (Light Pale Orange) Pc Bb 2 (White, Black) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (White, Black) Pc Bb 0 0 0 0 Bh 2 (Black, White Radial) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (Black, White Radial) Pc Bb 2 (Steel Bar II) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (Steel Bar II) Pc Bb 2 (RGB Rainbow) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (RGB Rainbow) Pc Bb 0 0 0 0 Bh 2 (Nova) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (Nova) Pc Bb 2 (Sunrise) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (Sunrise) Pc (Blue Tablecloth) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Blue Tablecloth) Pc (Pyramids) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Pyramids) Pc (Azure Rings) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Azure Rings) Pc (Red Stripe) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Red Stripe) Pc (Clown Attack) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Clown Attack) Pc (Camouflage) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Camouflage) Pc PB %AI5_EndPalette %%EndSetup %AI5_BeginLayer 1 1 1 1 0 0 0 79 128 255 Lb (Layer 1) Ln 0 A 1 Ap 0 O 1 1 1 Xa 0 R 0 0 0 XA 0 J 0 j 1 w 4 M []0 d 0 XR 472.584 48.3843 m B u u 493.2539 623.1951 m 570.5947 552.7881 610.7168 456.6304 610.7168 343.8013 c 610.7168 334.7676 611.8232 334.3691 611.2114 325.4922 c F 0 Ap 610.7964 319.4712 m 609.9404 322.377 608.3892 326.0156 606.6406 328.3247 c 611.2656 326.2822 l 616.1279 327.6709 l 614.0786 325.6235 612.0425 322.2319 610.7964 319.4712 c f 488.791 627.2578 m 491.6006 626.1252 495.416 625.0828 498.312 625.0205 c 493.8398 622.6619 l 491.9102 617.9883 l 491.5771 620.8655 490.1821 624.5674 488.791 627.2578 c f U u 1 Ap 0 R 0 0 0 XA [12 ]0 d 493.2539 623.1951 m 570.5947 552.7881 610.7168 456.6304 610.7168 343.8013 c 610.7168 334.7676 611.8232 334.3691 611.2114 325.4922 c S 0 Ap 0 O 0 0 0 Xa []0 d 610.7964 319.4712 m 609.9404 322.377 608.3892 326.0156 606.6406 328.3247 c 611.2656 326.2822 l 616.1279 327.6709 l 614.0786 325.6235 612.0425 322.2319 610.7964 319.4712 c f 488.791 627.2578 m 491.6006 626.1252 495.416 625.0828 498.312 625.0205 c 493.8398 622.6619 l 491.9102 617.9883 l 491.5771 620.8655 490.1821 624.5674 488.791 627.2578 c f U U u u 1 Ap 1 1 1 Xa 555.3281 468.4214 m 555.3281 402.4556 528.4761 351.5308 477.3071 322.8345 c F 493.4214 603.6865 m F 0 Ap 468.6987 318.0063 m 471.959 321.8828 475.6377 327.437 477.3262 332.082 c 478.4375 323.4658 l 484.4551 317.6074 l 479.9136 318.7563 473.5381 318.6738 468.6987 318.0063 c f 485.3345 609.4517 m 490.085 608.2456 496.415 607.4502 501.0435 608.0864 c 494.4834 602.9292 l 492.5322 594.4902 l 491.3086 599.2964 488.1978 605.2339 485.3345 609.4517 c f U u 1 Ap 0 R 0 0 0 XA [12 ]0 d 533.7319 323.271 m S 404.1377 592.7217 m S U U u 0 O 1 1 1 Xa []0 d 328.2549 143.6665 m 297.2422 128.3174 262.3071 119.6855 225.3574 119.6855 c 97.0942 119.6855 -6.8828 223.6646 -6.8828 351.9287 c -6.8828 480.1919 97.0942 584.1694 225.3574 584.1694 c 269.292 584.1694 310.377 571.9697 345.4097 550.7754 c F 0 R 0 0 0 XA 328.2549 143.6665 m 297.2422 128.3174 262.3071 119.6855 225.3574 119.6855 c 97.0942 119.6855 -6.8828 223.6646 -6.8828 351.9287 c -6.8828 480.1919 97.0942 584.1694 225.3574 584.1694 c 269.292 584.1694 310.377 571.9697 345.4097 550.7754 c S U u 0 O 1 1 1 Xa 345.4097 550.7754 m 412.6563 510.0894 457.6001 436.2573 457.6001 351.9287 c 457.6001 260.6143 404.8999 181.6079 328.2549 143.6665 c F 0 R 0 0 0 XA 345.4097 550.7754 m 412.6563 510.0894 457.6001 436.2573 457.6001 351.9287 c 457.6001 260.6143 404.8999 181.6079 328.2549 143.6665 c S U 0 Ap 0 O 1 1 1 Xa 481.1245 626.0842 m -6.8823 356.9585 l B 1 Ap 340.8975 349.9883 m 340.8975 285.8589 288.9126 233.8701 224.7798 233.8701 c 160.646 233.8701 108.6582 285.8589 108.6582 349.9883 c 108.6582 414.1226 160.646 466.1108 224.7798 466.1108 c 288.9126 466.1108 340.8975 414.1226 340.8975 349.9883 c b 0 Ap 246.2617 395.6626 m B 0 0 0 Xa 172.7188 362.2793 m F u 1 Ap 0.7843 0.7843 0.7843 Xa 288.062 351.9248 m 288.062 307.8833 259.9897 272.1899 225.3555 272.1899 c 190.7285 272.1899 162.6533 307.8833 162.6533 351.9248 c 162.6533 395.9639 190.7285 431.6606 225.3555 431.6606 c 259.9897 431.6606 288.062 395.9639 288.062 351.9248 c f 0 R 0 0 0 XA 2 w 288.062 351.9248 m 288.062 307.8833 259.9897 272.1899 225.3555 272.1899 c 190.7285 272.1899 162.6533 307.8833 162.6533 351.9248 c 162.6533 395.9639 190.7285 431.6606 225.3555 431.6606 c 259.9897 431.6606 288.062 395.9639 288.062 351.9248 c s U u 0 O 0.251 0.251 0.251 Xa 1 w 253.2305 381.728 m 253.2305 370.4004 249.5908 361.2153 245.1011 361.2153 c 240.6094 361.2153 236.9736 370.4004 236.9736 381.728 c 236.9736 393.0605 240.6094 402.2441 245.1011 402.2441 c 249.5908 402.2441 253.2305 393.0605 253.2305 381.728 c f 0 R 0 0 0 XA 253.2305 381.728 m 253.2305 370.4004 249.5908 361.2153 245.1011 361.2153 c 240.6094 361.2153 236.9736 370.4004 236.9736 381.728 c 236.9736 393.0605 240.6094 402.2441 245.1011 402.2441 c 249.5908 402.2441 253.2305 393.0605 253.2305 381.728 c s U u 0 O 0.251 0.251 0.251 Xa 213.748 381.7271 m 213.748 370.397 210.1108 361.2134 205.6211 361.2134 c 201.1294 361.2134 197.4917 370.397 197.4917 381.7271 c 197.4917 393.0571 201.1294 402.2422 205.6211 402.2422 c 210.1108 402.2422 213.748 393.0571 213.748 381.7271 c f 0 R 0 0 0 XA 213.748 381.7271 m 213.748 370.397 210.1108 361.2134 205.6211 361.2134 c 201.1294 361.2134 197.4917 370.397 197.4917 381.7271 c 197.4917 393.0571 201.1294 402.2422 205.6211 402.2422 c 210.1108 402.2422 213.748 393.0571 213.748 381.7271 c s U u 0 O 0.251 0.251 0.251 Xa 200.5894 322.6997 m 200.5894 320.2388 198.249 318.249 195.3643 318.249 c 192.4756 318.249 190.1377 320.2388 190.1377 322.6997 c 190.1377 325.1553 192.4756 327.1504 195.3643 327.1504 c 198.249 327.1504 200.5894 325.1553 200.5894 322.6997 c f 0 R 0 0 0 XA 200.5894 322.6997 m 200.5894 320.2388 198.249 318.249 195.3643 318.249 c 192.4756 318.249 190.1377 320.2388 190.1377 322.6997 c 190.1377 325.1553 192.4756 327.1504 195.3643 327.1504 c 198.249 327.1504 200.5894 325.1553 200.5894 322.6997 c s U u 0 O 0.251 0.251 0.251 Xa 265.2295 323.0908 m 265.2295 320.6299 262.8911 318.6377 260.0015 318.6377 c 257.1172 318.6377 254.7769 320.6299 254.7769 323.0908 c 254.7769 325.5474 257.1172 327.5415 260.0015 327.5415 c 262.8911 327.5415 265.2295 325.5474 265.2295 323.0908 c f 0 R 0 0 0 XA 265.2295 323.0908 m 265.2295 320.6299 262.8911 318.6377 260.0015 318.6377 c 257.1172 318.6377 254.7769 320.6299 254.7769 323.0908 c 254.7769 325.5474 257.1172 327.5415 260.0015 327.5415 c 262.8911 327.5415 265.2295 325.5474 265.2295 323.0908 c s U 0 To 1 0 0 1 441.3438 268.3198 0 Tp 0 Tv TP 0 Tr 0 O 0 0 0 Xa %_ 0 50 XQ /_Myriad-Roman 12 9.9719 -3 Tf 0 Ts 100 100 Tz 0 Tt %_0 0 100 100 Xu %AI55J_GlyphSubst: GlyphSubstNone 1 TA %_ 0 XL 0 TY 0 TV 36 0 Xb XB 0 0 5 TC 100 100 200 TW 25 TG 0 0 0 Ti 0 Ta 0 1 2 2 3 Th 0 Tq 0 Tg 0 0 Tl 0 Tc 0 Tw (\r) Tx 1 0 Tk TO 0 Ap 1 1 1 Xa 0 R 0 0 0 XA 19.7302 371.8618 m 43.5864 381.0112 52.9358 359.7275 37.1704 356.6313 c B 0 To 1 0 0 1 50.24 366.4585 0 Tp 0 Tv TP 0 Tr 0 0 0 Xa /_Symbol 30.7945 30.7945 -9.0228 Tf 0 TA (a) Tx (/) Tx /_Symbol 25.662 25.662 -7.519 Tf (2) Tx (\r) Tx TO 1 1 1 Xa 0 R 0 0 0 XA 428.376 547.7837 m B 0 To 0.3568 -0.9342 0.9342 0.3568 556.2471 621.3533 0 Tp 0 Tv TP 0 Tr 0 0 0 Xa /_Symbol 30.7944 30.7944 -9.0228 Tf 99.9275 100 Tz 1 TA 0 0 -5 Ti (p+a-2) Tx 1 0 Tk /_Times-Italic 30.7944 27.1914 -6.6822 Tf (acos\(\(s) Tx 1 0 Tk /_Times-Italic 22.4682 19.8393 -4.8755 Tf -3.7447 Ts 1 Tt 0 TA 22.4682 0 Tl 0.0225 Tc (d) Tx /_Times-Italic 30.7944 27.1914 -6.6822 Tf 0 Ts 0 Tt 1 TA 0 0 Tl 0 Tc (/) Tx 1 0 Tk /_Times-Italic 24.3405 21.4926 -5.2818 Tf (2) Tx 1 0 Tk /_Times-Italic 30.7944 27.1914 -6.6822 Tf (\)/c\)) Tx 1 0 Tk (\r) Tx 1 0 Tk TO 2 To 1 0 0 1 -4013.5 4715.5 0.6909 Tp 0 Tv 221.9375 343.8013 m 8.9431 357.915 l N TP 0 Tr 0 O 0 0 0 Xa /_Times-Italic 12.0005 10.5964 -2.6041 Tf 97.7054 100 Tz 0 TA 0 0 0 Ti 0 Tg (\r) TX TO 1 1 1 Xa 0 R 0 0 0 XA 477.2744 343.8013 m B u u 1 g 5.4883 357.0415 m 8.3933 357.8999 12.0308 359.4541 14.3386 361.2046 c 12.2998 356.5776 l 13.6924 351.7168 l 11.6431 353.7642 8.25 355.7979 5.4883 357.0415 c f 225.021 342.0898 m 222.1162 341.2314 218.479 339.6772 216.1709 337.9268 c 218.21 342.5537 l 216.8174 347.4146 l 218.8662 345.3672 222.2593 343.3335 225.021 342.0898 c f U u 0 R 0 G 219 342.5 m 11.5095 356.6313 l S 0 O 0 g 5.4883 357.0415 m 8.3933 357.8999 12.0308 359.4541 14.3386 361.2046 c 12.2998 356.5776 l 13.6924 351.7168 l 11.6431 353.7642 8.25 355.7979 5.4883 357.0415 c f 225.021 342.0898 m 222.1162 341.2314 218.479 339.6772 216.1709 337.9268 c 218.21 342.5537 l 216.8174 347.4146 l 218.8662 345.3672 222.2593 343.3335 225.021 342.0898 c f U U 0 To 1 0 0 1 128.2715 319.4219 0 Tp 0 Tv TP 0 Tr 0 0 0 Xa /_Times-Italic 30.7945 27.1914 -6.6822 Tf 100 100 Tz 0 Tg (f) Tx (\r) Tx TO 2 To 1 0 0 1 -4013.5 4715.5 0.6909 Tp 0 Tv 693.478 69.2178 m 480.4824 83.3315 l N TP 2 Tr 0 O 0 0 0 Xa 0 R 0 G /_Times-Italic 12.0005 10.5964 -2.6041 Tf 97.7054 100 Tz 0 Tg (\r) TX TO u u 1 g 224.4756 342.8623 m 227.3735 343.7437 230.999 345.3267 233.293 347.0957 c 231.2905 342.4526 l 232.7217 337.603 l 230.6563 339.6338 227.2471 341.6406 224.4756 342.8623 c f 598.7783 320.3433 m 595.8804 319.4619 592.2549 317.8789 589.9609 316.1104 c 591.9634 320.7529 l 590.5322 325.6025 l 592.5977 323.5718 596.0068 321.5649 598.7783 320.3433 c f U u 0 R 0 G 592.7539 320.7056 m 230.5 342.5 l S 0 O 0 g 224.4756 342.8623 m 227.3735 343.7437 230.999 345.3267 233.293 347.0957 c 231.2905 342.4526 l 232.7217 337.603 l 230.6563 339.6338 227.2471 341.6406 224.4756 342.8623 c f 598.7783 320.3433 m 595.8804 319.4619 592.2549 317.8789 589.9609 316.1104 c 591.9634 320.7529 l 590.5322 325.6025 l 592.5977 323.5718 596.0068 321.5649 598.7783 320.3433 c f U U 0 R 0 0 0 XA [12 ]0 d 893 459.2793 m S 0 To 1 0 0 1 391.7344 305.3076 0 Tp 0 Tv TP 0 Tr 0 O 0 0 0 Xa []0 d /_Times-Italic 30.7945 27.1914 -6.6822 Tf 100 100 Tz 0 Tg (c) Tx (\r) Tx TO 0 To 1 0 0 1 684.5 392.5 0 Tp 0 Tv TP 0 Tr /_Symbol 12 12 -3.516 Tf 1 TA (\r) Tx 1 0 Tk TO 0 To 1 0 0 1 -0.5 570.5117 0 Tp 0 Tv TP 0 Tr /_Times-Italic 12 10.5959 -2.6039 Tf -2 Ts 99.9275 100 Tz 1 Tt 0 TA 0 0 -5 Ti 12 0 Tl 0.012 Tc (\r) Tx TO LB %AI5_EndLayer-- %%PageTrailer gsave annotatepage grestore showpage %%Trailer Adobe_Illustrator_AI5 /terminate get exec Adobe_ColorImage_AI6 /terminate get exec Adobe_pattern_AI5 /terminate get exec AGM_Gradient /terminate get exec Adobe_typography_AI5 /terminate get exec Adobe_cshow /terminate get exec Adobe_level2_AI5 /terminate get exec %%EOF ctsim-6.0.2/doc/ctsimfig5.fig0000644000175000017500000000415710667176710015020 0ustar kevinkevin#FIG 3.2 Landscape Center Metric Letter 100.00 Single -2 1200 2 6 540 2610 7470 6345 5 1 0 1 4 7 50 0 -1 3.000 0 1 0 0 4203.333 5006.338 1710 2625 1020 3682 757 4905 5 1 2 1 4 7 50 0 -1 3.000 0 0 0 0 4028.509 4909.619 6930 3540 7237 4900 6945 6247 6 4429 4338 4814 5481 6 4592 4838 4814 5167 4 0 0 50 0 31 20 0.0000 4 225 90 4592 5053 l\001 4 0 0 50 0 31 14 0.0000 4 150 135 4686 5124 p\001 -6 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 1 2 0 0 1.00 57.15 114.30 0 0 1.00 57.15 114.30 4457 4338 4457 5481 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 4 4471 4752 4557 4852 4505 4838 4600 4957 -6 6 3352 2782 4587 3157 6 3985 2828 4206 3157 4 0 0 50 0 31 20 0.0000 4 225 90 3985 3042 l\001 4 0 0 50 0 31 14 0.0000 4 150 135 4078 3114 p\001 -6 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 3599 2906 3685 2906 3720 3063 3756 2806 3970 2800 4 0 0 50 0 31 20 0.0000 4 225 195 3763 3049 2\001 4 0 0 50 0 31 20 0.0000 4 300 300 4242 3022 =f\001 4 0 0 50 0 31 14 0.0000 4 150 60 4527 3157 l\001 4 0 -1 50 0 31 20 0.0000 4 225 195 3352 3041 2\001 -6 6 7335 3481 7455 6345 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2 0 0 1.00 68.46 136.93 7386 4405 7386 3481 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2 0 0 1.00 68.46 136.93 7397 6345 7397 5684 4 0 0 50 0 31 11 1.5708 4 135 750 7455 5432 detectors\001 -6 2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2 4005 4894 4817 4890 2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 3419 4329 4562 4329 4562 5472 3419 5472 3419 4329 2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2 4812 4894 5625 4890 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 4 2689 3598 3068 3148 3004 3312 3289 2969 2 1 0 1 -1 7 50 0 -1 0.000 0 0 -1 0 0 2 1710 2617 3997 4905 2 1 0 1 -1 7 50 0 -1 0.000 0 0 -1 0 0 2 1009 3666 3997 4905 2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2 757 4897 7237 3480 2 1 0 1 -1 7 50 0 -1 0.000 0 0 -1 0 0 2 762 4904 3997 4905 2 1 0 1 -1 7 50 0 -1 0.000 0 0 -1 0 0 2 3995 4897 7230 4898 2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2 7230 3480 7230 6307 2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2 751 4904 7230 6307 2 3 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 6 3175 4905 3982 5718 4802 4905 3982 4091 3172 4901 3175 4905 4 0 0 50 0 31 14 1.5708 4 105 690 664 5220 source\001 -6 ctsim-6.0.2/doc/equilinear.eps0000644000175000017500000155116510667176710015315 0ustar kevinkevin%!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(TM) 7.0 %%AI8_CreatorVersion: 9.0 %%For: (Kevin Rosenberg) ( ) %%Title: (equilinear.eps) %%CreationDate: 2/28/2001 10:51 PM %%BoundingBox: 208 298 401 492 %%HiResBoundingBox: 208.5 298.4941 400.5 492 %%DocumentProcessColors: Cyan Magenta Yellow Black %%DocumentFonts: Myriad-Roman %%+ Symbol %%+ Times-Italic %%DocumentSuppliedFonts: Myriad-Roman %%+ Symbol %%+ Times-Italic %%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0 %%+ procset Adobe_typography_AI5 1.0 1 %%+ procset AGM_Gradient 1.0 0 %%+ procset Adobe_ColorImage_AI6 1.1 0 %%+ procset Adobe_Illustrator_AI5 1.3 0 %%+ procset Adobe_pattern_AI5 1.0 0 %%+ procset Adobe_cshow 2.0 8 %AI5_FileFormat 3.0 %AI3_ColorUsage: Color %AI3_IncludePlacedImages %AI7_ImageSettings: 1 %%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) %%+ Options: 1 16 0 1 0 1 0 0 0 0 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 %%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 () %AI3_TemplateBox: 306.5 395.5 306.5 395.5 %AI3_TileBox: 219 -283 805 483 %AI3_DocumentPreview: Header %AI5_ArtSize: 200 200 %AI5_RulerUnits: 2 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI5_OpenToView: 23 607 1.5 1345 943 18 0 1 11 225 1 0 %AI5_OpenViewLayers: 77 %%PageOrigin:219 -283 %%AI3_PaperRect:-13 779 599 -13 %%AI3_Margin:13 -13 -13 13 %AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 1 %AI7_Thumbnail: 128 128 8 %%BeginData: 10188 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD3AFFA87D522727F8F8F8272752FD0427F8272727527DA8FD66FF %7D27F8F8275252A8A8FD0CFFA87D7D5227F827277DA8FD5DFFA85227F852 %7DFD19FFA8A85227F8277DFD57FFA827F8F87DA8FD21FF7D52F82752FD52 %FF5227277DA8FD27FF7D52F852A8FD4CFFA852F852A8FD2DFF52F827A8FD %49FF272752FD32FF7DF827A8FD44FFA852F87DA8FD35FF7D2727A8FD41FF %7D2752FD3AFF7DF852FD3EFFA8F827A8FD3CFFA82727FFFFFF52FD38FF7D %F87DFD3DFF7DF85252FFFF52F8FD36FFA82727FD3DFF7D2727FF7D27FFFF %F8F852FD34FF7D277DFD3DFF2727A8FFFF7DF8FF27F8F827FD33FF2727A8 %FD3BFFA852F87DFD04FF7D27A87DFF7D52A8FD31FF2727A8FD3BFF522752 %FD06FF7D27FFFFFF7DFD32FFF852FD3BFF7DF852A8FD07FF5227FFFFFF7D %FFFFA87D272727A8FD28FFA8F87DFD3AFFA82727A8FD09FF7D27FFFFFF7D %FFFF7D7DA85252277DFD26FFA8F87DFD3AFF27277DFD0BFF7D27FFFFFF7D %FD08FF52A8FD24FFA8F87DFD39FF52F87DFD0DFF5252FFFFFF7DFFFFA8F8 %27A87D52FD25FFA8F87DFD38FF52F852FD0FFF5227FFFF52A8FFFFF8527D %52A827FD25FF277DFD37FFA8F852A8FD10FF5227FFFF7DFFFFFF5227FFFF %5227FD24FFF87DFD36FFA82727A8FD12FF5227FFFF7DFFFFFF52F87DFFA8 %52FD23FF2752FD36FF52277DFD14FF5227FFFF7DFD04FFA852F8A8FD23FF %5227FD34FFA852F87DA8FD15FF2727FFFF52FD05FFA8A8F827FD21FF7D27 %FD34FF7D2752FD18FF2727FFFF7DFD05FF27F85227FD20FFA8F87DFD32FF %A8F8277DFD19FF2752FFFF52FD05FFF827F852FD20FF2752FD31FFA852F8 %A8FD1BFF527DFFFF7DFD05FF7DF82727FD1FFF7D27FD31FF52F852FD1DFF %2752FFFF52FFFFFF7DFFFF7D2752FD1FFFF8FD30FF7DF852FD1FFF2752FF %FF7DFFFFFFA8277DA8FFFFA8FD1DFF277DFD2EFF7D2727FD21FF2752FFFF %7DFD04FFA827F8F82752FD1CFF7D27FD2DFFA82727A8FD21FFA8527DFFFF %7DFD05FF52527DA8FD1CFFA8F87DFD2BFFA852F87DFD23FFA8F852FFFF52 %FD05FF2727F827FD1CFF7D52FD2BFF522752A87D7D522727522727277D7D %A8FD18FFA8277DFFFF7DFD05FF27F8A8FD1DFFF8A8FD29FF7DF82727F827 %5252A87DA87DA87DA8527D27F8F87DA8FD14FFA827A8FFFF52FD05FF5252 %F827FD1BFF5252FD28FFA827F827527DA8FD0EFFA85227F87DA8FD11FFA8 %27A8FFFF7DFD05FF2727527DFD1AFFA8F8A8FD26FFA827F8F87DA8FD14FF %A827F852FD10FFA8F8A8FFFF52FD05FFF827F852FD1AFF7D52FD26FF52F8 %277DFD19FFA852F87DFD0EFFA827A8FFFF7DFD05FF27F85252FD1AFFF8A8 %FD24FF5227F87DFD1EFF2727A8FD0CFFA827A8FFFF7DFD05FF7D27F852FD %19FF7D52FD23FFA8F82727FD21FF7D277DFD0BFF7D27A8FFFF7DFD04FF27 %2752527DFD19FF277DFD21FF7D27F8F852FD23FFA82727FD0AFF7DF8A8FF %FF52FD05FF5252F827FD18FFA8F8FD21FF522752277DFD26FF2752FD09FF %7D27FFFFFF7DFD21FF277DFD1EFFA87DF87D7DF8A8FD10FFA85252272752 %527DFD10FF5227FD08FFA827FFFFFF52FD21FF27A8FD1DFF7D2752FFA827 %A8FD0FFF5227FD09F852A8FD0EFF5252FD07FF7D27FFFFFF7DFFFFFFA827 %272752A8FD17FF7D27FD1CFFA8F8277DFFA8F87DFD0EFF52F8F8F8527DFD %04FFA85227F8F827FD0EFF2752FD06FF7DF8FFFFFF52FFFFFF527D7D5227 %277DFD16FF277DFD1AFFA852F8A8FFFFFF277DFD0EFF27F8277DFD0BFF27 %F8F8A8FD0DFF277DFD05FF5227FFFFFF7DFD05FF7DFFFFFF7DFD16FF27A8 %FD19FF52F852FD04FF5227FD0DFFA8F8F852FD0EFF7DF8F87DFD0CFFA8F8 %A8FD04FF7D27FFFFFF7DFD04FFA827FF7DA8FD16FFA827FD18FF7DF852FD %05FFA8F8FD0DFFA8F8F87DFD10FFA827F87DFD0CFF7D27FD04FF7D27FFFF %FF7DFD05FF277DA827FD16FF5252FD16FF7D2727A8FD06FFF8A8FD0CFFA8 %27F87DFD12FFA827F8A8FD0CFFF87DFFFFFF5227FFFFFF52FD05FF7D27F8 %7DFD16FF527DFD14FFA82727A8FD07FF5252FD0DFF52F87DFD14FFA827F8 %FD0CFFA8F8FFFFFF2727FFFFFF7DFD06FF52FD18FFF8FD13FFA852F87DFD %08FFA8F8A8FD0CFF7DF852FD16FF7DF827FD0CFF5252FFFF7D27FFFFFF52 %FD06FF27FD17FFA827FD12FF522752FD0AFF7D27FD0DFFF827A8FD05FF52 %52FD08FF7D527DFD05FF27F87DFD0BFFA827A8FF7D52FFFFFF7DFD04FF27 %27F82752FD15FFA827FD10FF7DF852A8FD0BFFF8A8FD0CFF52F87DFD05FF %5227277DFD06FFA8272752A8FD05FFF827FD0CFF277DFF2727FFFFFF52FF %FFFFA8FFFF27FD17FF527DFD0EFFA82727A8FD0CFF7D52FD0DFFF827FD06 %FF52275252FD06FF7D275227A8FD05FF7DF87DFD0BFFA8F8FFF827FFFFFF %7DFFFFFF27FFA852FD17FF277DFD0CFFA827277DFD0EFF527DFD0CFF7DF8 %A8FD05FFA827272752FD06FF522727277DFD05FFA8F827FD0CFF27A8527D %FFFFFF7DFFFFFF5227F87DA8FD16FF27FD0BFFA852F87DFD10FFF8FD0DFF %F827FD06FF7D52275252FD06FF7D27522752FD06FF27F8A8FD0BFF525252 %7DFFFFFF7DFD04FF7D27F82752A8FD14FFF8FD0AFF52F852FD06FFA8A87D %52FD07FF7D52FD0CFFA8F852FD06FF7DFD0427A8FD05FF5227272752FD06 %FFA8F87DFD0BFFA8F82752FFFFFF52FFFFFF52FFA8FFFFA827A8FD13FF27 %FD08FFA8F827A8FFFFFFA8FFA8FF527D522752FD06FF527DFD0CFF7DF8A8 %FD06FF7D52275227A8FD05FF7D2752277DFD07FF2727FD0CFF27F852FFFF %FF7DFFFFFF7D277DA8FFA827FD13FF7D27FD06FF7D27F87D7DFFFFFF2752 %2727FF52A8FF7D27FD06FF27A8FD0CFF27F8FD07FFA827272752FD06FF52 %27272752FD07FF27F8FD0CFF272752FFFFFF52FD04FFA82727F8277DFD13 %FFA827FD05FF27F8F8272727F8FF5227FF2752FF52FFFF27A8FD06FF27FD %0DFFF827FD07FFA852275227FD06FF7D2752277DFD07FF7DF8A8FD0BFF7D %277DFFFF7DFD1EFF7D52FFFFA87DF852A8FFFFFFA827A8A827FFF87D52A8 %FF7D7DA8A8FD04FFA827FD0DFFF852FD08FF27272752FD06FF7D272752A8 %FD07FF7DF852FD0BFF7DF87DFFFF7DFD1EFF7D52FF7D2752FD06FF2752FF %A827527DF827FFA8F8F8F8FD05FF7D52FD0CFFA8F87DFD08FF7D2752A8FD %07FF275252FD09FFF87DFD0CFFF8A8FFFF7DFD1EFF525227277DFD05FFA8 %2752FD12FF7D52FD0CFFA8F8A8FD09FF7D7DFD08FFA87DA8FD09FFF827FD %0CFFF8A8FFFF7DFD1EFF52F827FD04F8FD05277D527D527D7DA8A8A87DFD %09FF527DFD0CFF52F8A8FD1FFFF827FD0CFFF8FFA8FF7DFFA8FD1CFF2752 %272752FFFFFFA8A87DA87D7D527D525252FD0527F8F8F8FD0627FD04527D %7DA87DA8A8FFFF52F8A8FD1FFF2727FD0CFFF8A8FFFD04F8FD1CFF522727 %F82752FD17FFA8A8527DA87D527D527D272727522727F8F8F82727522752 %527D527D7DFD05A8FD10FF2727FD0CFFF8A8FF52F8F8A8FD1CFF2727F8F8 %2727FD05F8FD04277D527D7DA87DA8A8FD08FF7D7DFD0CFF7DF8A8FFA87D %A87DA8527DFD0452FD0427FD04F8FD052752527D527D7DF8F8A87DFD0AFF %F8A8FFFFF827FD1DFF5252A8F8A8FF7DF87DFFFFFD04A87D7D527D52FD04 %27F8F8FD0427522752527D7DA8A8A8FD06FFA8F87DFD0DFFA8A8FD06FFA8 %A87DA8A8A8527D527DF8FD0527F8F8F8FD0527F8FFFFFF27A8FD1DFF5252 %FFFFA8FFFFA82727A8FD11FF7DA87D52277D5252FD0427F8F8F8272727F8 %FD04527D7DA87DFD07FFF87DFD04FF5252FD08FFA8F852FD09FF7DA87DF8 %FD22FFA852FD07FF7D2752FD13FF7D7DFD0CFF7DF8527D527D5252FD0427 %F8F8F8522727F8277D7DF8F87DA8A8FD06FFA8F87DFD08FFA87DFFFFF8FD %22FF7D52FD08FFA852F8A8FD11FFA827FD05FF52A8FD06FFF827FD0CFFA8 %A8F8F852A827F8F8FD0427FD04F82727F8277D525252A87DA87DFFF8277D %F8FD22FFA827FD0AFFA8F852FD11FF27FD04FF52A8FD07FF27F8FD07FFA8 %FD05FF7D7DFD04FFA8277DFFFFA8FD04FFA852F8A87D7D527D52FD0527F8 %F8F8FD22FFA827FD0CFF27277DFD0FFFF8A8FFFF52F87DFD07FF52F8A8FD %05FF5252A8FD0CFFA8FF7D277DFD04FFF827FD09FFA8F8522727FD23FFF8 %FD0DFFA82752FD0EFF527DFFFF7D52FD09FFF852FD04FFA87D52A8FD0EFF %7D52A8FFFFFFA8F87DFD09FFA8FFFF2727FD23FF27A8FD0DFFA852F8A8FD %0CFF7D52FFFF527DFD09FF27F8FD05FFA8FD11FFA8FD04FF52F8FD0CFFA8 %F827FD23FF27A8FD0FFFA8F852FD0CFFF8FFFF52FD0AFF7DF87DFD1BFFF8 %27FD05FF7D5252A8FFFFFF7D2727FD23FF5252FD11FF52F87DFD0AFF527D %7D7DFD0BFFF827FD1AFF52F87DFD05FFF8FFA8FD04FF275252FD23FF7D52 %FD12FFA82727FD09FF7D527DFD0CFF7DF8A8FD19FF27F8FD05FFA827A8A8 %FFFFFFA8F85227FD24FF27FD14FF7DF87DFD08FFF8A8FD0CFFA8F8F8FD18 %FF52F8A8FD06FF2752A8FFFFFF277D2752FD24FF27FD15FFA82752A8FD06 %FF7D52FD0DFF7DF852FD16FFA8F827FD0CFFA827FF5252FD24FF27A8FD16 %FF52F852FD05FFA8F8A8FD0DFF27F87DFD14FFA8F8F8A8FD0CFF5252FF27 %7DFD24FF7D52FD17FFA82727FD05FF5252FD0EFFF8F87DFD13FF27F8A8FD %0DFFF8FFFF2752FD24FFA827FD19FF7DF87DFD04FFF8A8FD0DFFA8F8F87D %FD10FFA8F8F87DFD0DFF277DFFFF2752FD25FFF8FD1BFF2727A8FFFFA8F8 %FD0EFFA8F8F852FD0EFFA8F8F87DFD0DFF7D27FFFFA8527DFD25FF2752FD %1BFF52F852FFFF5252FD0FFFF8F8F87DFD0AFFA827F8F87DFD0DFFA827A8 %FFFFA8F87DFD25FF7D27FD1CFFA85227FFFF277DFD0FFF5227F82752A8FD %04FFA87D27F8F852FD0FFF277DFFFFFFA827A8FD26FFF8FD1EFF7DF852A8 %F8A8FD0FFFA87DFD0AF827FD10FF5252FD04FFA8F8A8FD26FF527DFD1FFF %272752F8A8FD11FFA87D5252277D52A8FD11FF5227FD05FFA852A8FD26FF %A827FD20FF7DF827F8A8FD28FF52F8FD07FF27A8FD27FF27A8FD21FF52F8 %27A8FD26FF5227FD07FF7D27A8FD27FF7D27FD22FFA8F82752FD23FFA827 %27FD08FF7DF8A8FD28FFF8A8FD23FF52F827FD21FF7D277DFD09FF7D52FD %29FF5252FD24FF7D27F87DFD1EFF2727A8FD0AFFA827FD2AFFF8FD26FF7D %F827A8FD1AFF7DF87DFD0CFF7D27FD2AFF5252FD26FFA8F8F8277DFD16FF %27F827FD0EFF52F8FD2BFFF8A8FD27FF52FD0427A8FD10FF7D27F87DFD10 %FF5227FD2BFF5252FD28FFA827275227F8275252A87DA8FFFF7DA87D7D27 %27F8527DFD12FF7D27FD2CFFF8A8FD29FF7DF87DFFA87D7D272727522727 %277D52A8FD16FF7D52FD2CFF7DF8FD2AFFA82727A8FD22FF27F8FD2DFF27 %7DFD2BFF7D2752FD21FF5227FD2DFFA8F8A8FD2BFFA827F8A8FD1FFF2727 %FD2EFF5252FD2DFF7DF87DFD1EFF527DFD2FFF277DFD2EFF27277DFD1CFF %2727FD30FFF8A8FD2EFF7D2752FD1BFF277DFD30FF7DF8FD2FFFA852F8A8 %FD19FF2752FD31FF7D27FD30FFA8F87DFD18FF277DFD32FF2752FD31FF52 %277DFD15FFA8277DFD32FFA82752FD31FF7D2727FD14FFA827A8FD33FFA8 %277DFD31FFA852F87DFD12FFA827A8FD34FFA8277DFD32FFA8F852FD11FF %A8F8FD36FFA8F87DFD33FF52F87DFD0FFF7D27A8FD36FFA8F87DFD33FFA8 %2727FD0EFF7D27FD38FFA8F852FD34FF7DF87DFD0CFF7D52FD3AFF2752FD %34FFA82752A8FD0AFFA827FD3AFFA82727FD35FF52277DFD09FF7D27FD3C %FF52F8A8FD34FFA85227A8FD07FF27F8FD3DFF7DF87DFD35FF7DF852FD06 %FF5252FD3FFFF852A8FD35FF2727A8FD04FF7D52FD40FF52F87DFD35FF7D %F852FFFFFF7D27FD41FFA82727A8FD34FFA852F8A8FFF827FD43FF7DF852 %A8FD34FFA8F852F852FD45FF522752FD35FF27277DFD46FFA852F87DA8FD %31FF7D27F8A8FD49FF27F827A8FD2CFFA87DF827A8FD4CFFA852F82752A8 %FD27FF7D27F827A8FD51FFA852F8277DFD22FFA85227277DFD57FF7D52F8 %27277DA8FD19FF7D7D27F8277DA8FD5CFFA87D2727F827527DA8A8FD0CFF %A8A87D7D2727F82752A8FD65FF7D7DFD0427F8F8FD0627F8F8F827F85252 %A8A8FD2EFFFF %%EndData %%EndComments %%BeginProlog %%BeginResource: procset Adobe_level2_AI5 1.2 0 %%Title: (Adobe Illustrator (R) Version 5.0 Level 2 Emulation) %%Version: 1.2 0 %%CreationDate: (04/10/93) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) userdict /Adobe_level2_AI5 26 dict dup begin put /packedarray where not { userdict begin /packedarray { array astore readonly } bind def /setpacking /pop load def /currentpacking false def end 0 } if pop userdict /defaultpacking currentpacking put true setpacking /initialize { Adobe_level2_AI5 begin } bind def /terminate { currentdict Adobe_level2_AI5 eq { end } if } bind def mark /setcustomcolor where not { /findcmykcustomcolor { (AI8_CMYK_CustomColor) 6 packedarray } bind def /findrgbcustomcolor { (AI8_RGB_CustomColor) 5 packedarray } bind def /setcustomcolor { exch aload pop dup (AI8_CMYK_CustomColor) eq { pop pop 4 { 4 index mul 4 1 roll } repeat 5 -1 roll pop setcmykcolor } { dup (AI8_RGB_CustomColor) eq { pop pop 3 { 1 exch sub 3 index mul 1 exch sub 3 1 roll } repeat 4 -1 roll pop setrgbcolor } { pop 4 { 4 index mul 4 1 roll } repeat 5 -1 roll pop setcmykcolor } ifelse } ifelse } def } if /setAIseparationgray { false setoverprint 0 setgray /setseparationgray where{ pop setseparationgray }{ /setcolorspace where{ pop [/Separation (All) /DeviceCMYK {dup dup dup}] setcolorspace 1 exch sub setcolor }{ setgray }ifelse }ifelse } def /gt38? mark {version cvr cvx exec} stopped {cleartomark true} {38 gt exch pop} ifelse def userdict /deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt put userdict /level2? systemdict /languagelevel known dup { pop systemdict /languagelevel get 2 ge } if put /level2ScreenFreq { begin 60 HalftoneType 1 eq { pop Frequency } if HalftoneType 2 eq { pop GrayFrequency } if HalftoneType 5 eq { pop Default level2ScreenFreq } if end } bind def userdict /currentScreenFreq level2? {currenthalftone level2ScreenFreq} {currentscreen pop pop} ifelse put level2? not { /setcmykcolor where not { /setcmykcolor { exch .11 mul add exch .59 mul add exch .3 mul add 1 exch sub setgray } def } if /currentcmykcolor where not { /currentcmykcolor { 0 0 0 1 currentgray sub } def } if /setoverprint where not { /setoverprint /pop load def } if /selectfont where not { /selectfont { exch findfont exch dup type /arraytype eq { makefont } { scalefont } ifelse setfont } bind def } if /cshow where not { /cshow { [ 0 0 5 -1 roll aload pop ] cvx bind forall } bind def } if } if cleartomark /anyColor? { add add add 0 ne } bind def /testColor { gsave setcmykcolor currentcmykcolor grestore } bind def /testCMYKColorThrough { testColor anyColor? } bind def userdict /composite? 1 0 0 0 testCMYKColorThrough 0 1 0 0 testCMYKColorThrough 0 0 1 0 testCMYKColorThrough 0 0 0 1 testCMYKColorThrough and and and put composite? not { userdict begin gsave /cyan? 1 0 0 0 testCMYKColorThrough def /magenta? 0 1 0 0 testCMYKColorThrough def /yellow? 0 0 1 0 testCMYKColorThrough def /black? 0 0 0 1 testCMYKColorThrough def grestore /isCMYKSep? cyan? magenta? yellow? black? or or or def /customColor? isCMYKSep? not def end } if end defaultpacking setpacking %%EndResource %%BeginResource: procset Adobe_typography_AI5 1.0 1 %%Title: (Typography Operators) %%Version: 1.0 1 %%CreationDate:(6/10/1996) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_typography_AI5 68 dict dup begin put /initialize { begin begin Adobe_typography_AI5 begin Adobe_typography_AI5 { dup xcheck { bind } if pop pop } forall end end end Adobe_typography_AI5 begin } def /terminate { currentdict Adobe_typography_AI5 eq { end } if } def /modifyEncoding { /_tempEncode exch ddef /_pntr 0 ddef { counttomark -1 roll dup type dup /marktype eq { pop pop exit } { /nametype eq { _tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll put } { /_pntr exch ddef } ifelse } ifelse } loop _tempEncode } def /havefont { systemdict /languagelevel known { /Font resourcestatus dup { exch pop exch pop } if } { systemdict /FontDirectory get 1 index known { pop true } { systemdict /fileposition known { dup length 6 add exch Ss 6 250 getinterval cvs pop Ss exch 0 exch getinterval status { pop pop pop pop true } { false } ifelse } { pop false } ifelse } ifelse } ifelse } def /TE { StandardEncoding 256 array copy modifyEncoding /_nativeEncoding exch def } def /subststring { exch 2 index exch search { exch pop exch dup () eq { pop exch concatstring } { 3 -1 roll exch concatstring concatstring } ifelse exch pop true } { pop pop false } ifelse } def /concatstring { 1 index length 1 index length 1 index add string dup 0 5 index putinterval dup 2 index 4 index putinterval 4 1 roll pop pop pop } def % /TZ { dup type /arraytype eq { /_wv exch def } { /_wv 0 def } ifelse /_useNativeEncoding exch def 2 index havefont { 3 index 255 string cvs dup (_Symbol_) eq { pop 2 index findfont } { 1 index 0 eq { dup length 1 sub 1 exch getinterval cvn findfont } { pop 2 index findfont } ifelse } ifelse } { dup 1 eq { 2 index 64 string cvs dup (-90pv-RKSJ-) (-83pv-RKSJ-) subststring { exch pop dup havefont { findfont false } { pop true } ifelse } { pop dup (-90ms-RKSJ-) (-Ext-RKSJ-) subststring { exch pop dup havefont { findfont false } { pop true } ifelse } { pop pop true } ifelse } ifelse { 1 index 1 eq { /Ryumin-Light-Ext-RKSJ-V havefont {/Ryumin-Light-Ext-RKSJ-V} {/Courier} ifelse } { /Ryumin-Light-83pv-RKSJ-H havefont {/Ryumin-Light-83pv-RKSJ-H} {/Courier} ifelse } ifelse findfont [1 0 0.5 1 0 0] makefont } if } { /Courier findfont } ifelse } ifelse _wv type /arraytype eq { _wv makeblendedfont } if dup length 10 add dict begin mark exch { 1 index /FID ne { def } if cleartomark mark } forall pop /FontScript exch def /FontDirection exch def /FontRequest exch def /FontName exch def counttomark 0 eq { 1 _useNativeEncoding eq { /Encoding _nativeEncoding def } if cleartomark } { /Encoding load 256 array copy modifyEncoding /Encoding exch def } ifelse FontName currentdict end definefont pop } def /tr { _ax _ay 3 2 roll } def /trj { _cx _cy _sp _ax _ay 6 5 roll } def /a0 { /Tx { dup currentpoint 3 2 roll tr _psf newpath moveto tr _ctm _pss } ddef /Tj { dup currentpoint 3 2 roll trj _pjsf newpath moveto trj _ctm _pjss } ddef } def /a1 { W B } def /e0 { /Tx { tr _psf } ddef /Tj { trj _pjsf } ddef } def /e1 { W F } def /i0 { /Tx { tr sp } ddef /Tj { trj jsp } ddef } def /i1 { W N } def /o0 { /Tx { tr sw rmoveto } ddef /Tj { trj swj rmoveto } ddef } def /r0 { /Tx { tr _ctm _pss } ddef /Tj { trj _ctm _pjss } ddef } def /r1 { W S } def /To { pop _ctm currentmatrix pop } def /TO { iTe _ctm setmatrix newpath } def /Tp { pop _tm astore pop _ctm setmatrix _tDict begin /W { } def /h { } def } def /TP { end iTm 0 0 moveto } def /Tr { _render 3 le { currentpoint newpath moveto } if dup 8 eq { pop 0 } { dup 9 eq { pop 1 } if } ifelse dup /_render exch ddef _renderStart exch get load exec } def /iTm { _ctm setmatrix _tm concat _shift aload pop _lineorientation 1 eq { exch } if translate _scale aload pop _lineorientation 1 eq _yokoorientation 1 eq or { exch } if scale } def /Tm { _tm astore pop iTm 0 0 moveto } def /Td { _mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto } def /iTe { _render -1 eq { } { _renderEnd _render get dup null ne { load exec } { pop } ifelse } ifelse /_render -1 ddef } def /Ta { pop } def /Tf { 1 index type /nametype eq { dup 0.75 mul 1 index 0.25 mul neg } if /_fontDescent exch ddef /_fontAscent exch ddef /_fontSize exch ddef /_fontRotateAdjust _fontAscent _fontDescent add 2 div neg ddef /_fontHeight _fontSize ddef findfont _fontSize scalefont setfont } def /Tl { pop neg 0 exch _leading astore pop } def /Tt { pop } def /TW { 3 npop } def /Tw { /_cx exch ddef } def /TC { 3 npop } def /Tc { /_ax exch ddef } def /Ts { 0 exch _shift astore pop currentpoint iTm moveto } def /Ti { 3 npop } def /Tz { count 1 eq { 100 } if 100 div exch 100 div exch _scale astore pop iTm } def /TA { pop } def /Tq { pop } def /Tg { pop } def /TG { pop } def /Tv { /_lineorientation exch ddef } def /TV { /_charorientation exch ddef } def /Ty { dup /_yokoorientation exch ddef 1 sub neg Tv } def /TY { pop } def /T~ { Tx } def /Th { pop pop pop pop pop } def /TX { pop } def /Tk { _fontSize mul 1000 div _lineorientation 0 eq { neg 0 } { 0 exch } ifelse rmoveto pop } def /TK { 2 npop } def /T* { _leading aload pop _lineorientation 0 ne { exch } if Td } def /T*- { _leading aload pop _lineorientation 0 ne { exch } if exch neg exch neg Td } def /T- { _ax neg 0 rmoveto _lineorientation 1 eq _charorientation 0 eq and { 1 TV _hyphen Tx 0 TV } { _hyphen Tx } ifelse } def /T+ { } def /TR { _ctm currentmatrix pop _tm astore pop iTm 0 0 moveto } def /TS { currentfont 3 1 roll /_Symbol_ findfont _fontSize scalefont setfont 0 eq { Tx } { Tj } ifelse setfont } def /Xb { pop pop } def /Tb /Xb load def /Xe { pop pop pop pop } def /Te /Xe load def /XB { } def /TB /XB load def currentdict readonly pop end setpacking % /X^ { currentfont 5 1 roll dup havefont { findfont _fontSize scalefont setfont } { pop exch } ifelse 2 index 0 eq { Tx } { Tj } ifelse pop pop setfont } def /T^ /X^ load def %%EndResource %%BeginResource: procset AGM_Gradient_Sep 1.0 0 %%Title: (AGM Gradient Procset) %%Version: 1.0 0 %%CreationDate: (4/26/96) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) userdict /defaultpacking currentpacking put true setpacking userdict /AGM_Gradient_Sep 5 dict dup begin put /AGM_Gradient_Sep_private 100 dict def /initialize{ AGM_Gradient_Sep begin AGM_Gradient_Sep_private begin _compositeJob{ initializeSinglePassSeps }{ initializeMultiPassSeps }ifelse initializeSeps AGM_Gradient_private begin /_fillSD newSpotDict def /_rampSD newSpotDict def /_nCustomColorSD nd end AGM_Gradient_Sep_private { dup xcheck 1 index type /arraytype eq and { bind }if pop pop }forall AGM_Gradient_Sep { dup xcheck 1 index type /arraytype eq and { bind }if pop pop }forall end currentdict readonly pop end }def /terminate{ currentdict AGM_Gradient_Sep eq{ end }if }def AGM_Gradient_Sep_private begin /initializeSeps{ /currentoverprint { _of } def _noImage not _level2PS not and{ /linealFill{ currentoverprint{ 0 0 1 1 rectfill }{ mySave 8 setImageParms _color{ _nCustomColorSD begin cyan magenta yellow black _spotColor{ spot1/tintImage spot1/tintValue get 1 exch sub makeByte8 put spot2/tintImage spot2/tintValue get 1 exch sub makeByte8 put }if end 4{ makeByte8 4 1 roll }repeat true 4 _nCustomColorSD ncolorimage }{ _nCustomColorSD/black get 1 exch sub makeByte8 _nCustomColorSD bwImage }ifelse myRestore }ifelse }def }if /_whiteBytes 1 makeByte8 pt /knockOut{ _noImage _level2PS or currentoverprint or{ gsave false setoverprint 1 setgray 0 0 1 1 rectfill grestore }{ 8 setImageParms _whiteBytes /_image load 5 execImage }ifelse }def /newSpotDict{ 11 dict dup begin /nSpots 2 def /spot1 7 dict def /spot2 7 dict def end }def /initSpotData { begin /name nd /tintImage nd /tintValue nd /spot_C nd /spot_M nd /spot_Y nd /spot_K nd end }def /initSpotDict{ begin /cyanInk nd /magentaInk nd /yellowInk nd /blackInk nd /cyan nd /magenta nd /yellow nd /black nd spot1 initSpotData spot2 initSpotData end }def /copySpotDict{ /_dst xp begin cyanInk magentaInk yellowInk blackInk cyan magenta yellow black spot1 spot2 end _dst begin /spot1 spot1 maxlength dict def /spot2 spot2 maxlength dict def spot2 copy pop spot1 copy pop /black xd /yellow xd /magenta xd /cyan xd /blackInk xd /yellowInk xd /magentaInk xd /cyanInk xd end }def /setCustomColor { 1 index /Black eq{ 6 1 roll 5 npop 1 exch sub setgray }{ 6 1 roll _ccAry1 astore exch dup null eq{ pop 0 }if setcustomcolor }ifelse }def /setCStop{ /_colorStyle exch pt _colorStyle 0 eq{ 0 0 0 4 -1 roll 1 exch sub _spotColor{ /_colorStyle 3 pt /Black 1 index 1 exch sub }if }if _colorStyle 2 eq{ 3 npop }if _rampSD _fillSD copySpotDict _colorStyle 4 eq{ pop 9 2 roll 3 npop 6 -2 roll } if _colorStyle 3 eq _colorStyle 4 eq or{ _fillSD begin /_spot1 spot1 pt /_spot2 spot2 pt end exch dup _spot1/name get eq{ _spot1 _spot2 }{ _spot2 _spot1 }ifelse begin begin /name xd 1 exch sub /tintValue xd 4{ tintValue mul 4 1 roll }repeat _spotColor not{ /tintValue null def }if end /tintValue 0 def end }if _fillSD nsetcustomcolor }def /renderCMYK{ spot1/name get null eq spot2/name get null eq and dup not{ pop spot1 spotConverted }if dup not{ pop spot2 spotConverted }if }def /currentInk{ true _inRipSep{ currentcolorspace 0 get dup /DeviceGray eq 1 index /DeviceCMYK eq or{ pop currentcmykcolor add add add 0 eq{ pop false }if }{ /Separation eq{ currentcolor 0 eq{ pop false }if }if }ifelse }{ currentgray 1 eq{ pop false }if }ifelse }def /currentInkN{ _nCustomColorSD begin /_spot1 spot1 pt /_spot2 spot2 pt renderCMYK end { currentInk }{ gsave _spot1 begin name null ne{ spot_C spot_M spot_Y spot_K name tintValue setCustomColor currentInk }{ false }ifelse end _spot2 begin name null ne{ spot_C spot_M spot_Y spot_K name tintValue setCustomColor currentInk }{ false }ifelse end grestore or } ifelse }def /fill_ /fill load def /fillOvp{ currentoverprint{ _inRipSep{ currentcolorspace 0 get dup /DeviceGray eq 1 index /DeviceCMYK eq or{ pop currentcmykcolor add add add 0 eq{ newpath }if }{ /Separation eq{ currentcolor 0 eq{ newpath }if }if }ifelse }{ currentgray 1 eq{ newpath }if }ifelse }if fill_ }def /fill{ _nCustomColorSD begin /_spot1 spot1 pt /_spot2 spot2 pt renderCMYK end { fillOvp }{ _spot1 begin gsave name null ne{ spot_C spot_M spot_Y spot_K name tintValue setCustomColor }{ 1 setgray }ifelse fillOvp grestore end _spot2 begin name null ne{ gsave true setoverprint spot_C spot_M spot_Y spot_K name tintValue setCustomColor fillOvp grestore }if end newpath }ifelse }def /expandSpot{ _spotColor{ /_len xp _rampSD begin spot1 begin tintImage null ne{ tintImage _len expandOne /tintImage xd }if end spot2 begin tintImage null ne{ tintImage _len expandOne /tintImage xd }if end end }{ pop }ifelse }def /rampImage{ currentoverprint{ rectImage }{ _enabledSmoothShade{ fillRamp }{ _color{ _rampSD begin /cyanInk _cyanData 0 ne def /magentaInk _magentaData 0 ne def /yellowInk _yellowData 0 ne def /blackInk _blackData 0 ne def end _nSamples setImageParms _nSamples expandSpot _cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor true 4 _rampSD ncolorimage }{ _rampSD begin /cyanInk false def /magentaInk false def /yellowInk false def /blackInk true def end _nSamples setImageParms _blackData _rampSD bwImage }ifelse }ifelse }ifelse }def /nsetcustomcolor where{ pop }{ /nsetcustomcolor { /_nCustomColorSD xp _nCustomColorSD begin 4 copy /black xd /yellow xd /magenta xd /cyan xd 4 copy 0 ne /blackInk xd 0 ne /yellowInk xd 0 ne /magentaInk xd 0 ne /cyanInk xd end setcmykcolor }def }ifelse /nsetcustomcolorend where{ pop }{ /nsetcustomcolorend { /_nCustomColorSD null pt }def }ifelse }def /initializeSinglePassSeps{ /_decodeNorm [0 1] pt /_decodeInvert [1 0] pt /spotConverted { begin name null eq{ false }{ tintValue null eq tintImage null eq and{ true }{ _inDistiller{ false }{ false currentpagedevice/SeparationColorNames get{name eq or}forall not }ifelse }ifelse }ifelse end }def /dictImage { 20 dict dup begin /Dict xd /Decode xd /DataSource xd /ImageMatrix xd /BitsPerComponent xd /Height xd /Width xd /ImageType 1 def Dict end /_image load 1 execImage }def /bwImage{ begin gsave currentoverprint{ blackInk{ [/Separation /Black /DeviceGray{}] setcolorspace _decodeInvert dictImage }{ 5 npop }ifelse }{ /DeviceGray setcolorspace _decodeNorm dictImage }ifelse grestore end }def /ncolorimage where{ pop }{ /ncolorimage{ begin renderCMYK{ cyanInk magentaInk and yellowInk and blackInk and not currentoverprint and{ pop pop gsave cyanInk{ 8 copy [/Separation /Cyan /DeviceGray{}] setcolorspace 3 npop _decodeNorm dictImage }if magentaInk{ 8 copy [/Separation /Magenta /DeviceGray{}] setcolorspace 4 -1 roll 3 npop _decodeNorm dictImage }if yellowInk{ 8 copy [/Separation /Yellow /DeviceGray{}] setcolorspace 4 -2 roll 3 npop _decodeNorm dictImage }if blackInk{ 4 -3 roll [/Separation /Black /DeviceGray{}] setcolorspace 3 npop _decodeNorm dictImage }{ 8 npop }ifelse grestore }{ /_colorimage load 10 execImage }ifelse }{ 6 npop gsave spot1 begin name null ne tintImage null ne and{ [/Separation name /DeviceGray{}] setcolorspace 4 copy tintImage name /Black eq{ _decodeNorm }{ _decodeInvert }ifelse dictImage }{ 1 setgray fill }ifelse end spot2 begin true setoverprint name null ne tintImage null ne and{ [/Separation name /DeviceGray{}] setcolorspace tintImage name /Black eq{ _decodeNorm }{ _decodeInvert }ifelse dictImage }{ 4 npop 1 setgray fill }ifelse end grestore }ifelse end }def }ifelse /getRampColorSpace{ /_renderCMYK _rampSD begin renderCMYK end pt _renderCMYK not{ _rampSD begin [/DeviceN [ spot1 begin name null ne tintImage null ne and{ name }if end spot2 begin name null ne tintImage null ne and{ name }if end ] _inDistiller { /DeviceCMYK [ spot1 begin name null ne tintImage null ne and{ spot_C spot_M spot_Y spot_K 1 }{ 0 0 0 0 0 }ifelse end spot2 begin name null ne tintImage null ne and{ spot_C spot_M spot_Y spot_K 2 }{ 0 0 0 0 0 }ifelse end 5 1 roll 6 -2 roll add dup 1 eq { pop 8 /index cvx 1 /exch cvx /sub cvx 9 1 /roll cvx }{ 2 eq { 8 /index cvx 1 /exch cvx /sub cvx 10 1 /roll cvx }if }ifelse 4 1 /roll cvx 5 -2 /roll cvx 8 /index cvx /mul cvx /exch cvx 9 /index cvx /mul cvx /add cvx 7 1 /roll cvx 3 1 /roll cvx 4 -2 /roll cvx 7 /index cvx /mul cvx /exch cvx 8 /index cvx /mul cvx /add cvx 6 1 /roll cvx 2 1 /roll cvx 3 -2 /roll cvx 6 /index cvx /mul cvx /exch cvx 7 /index cvx /mul cvx /add cvx 5 1 /roll cvx 5 /index cvx /mul cvx /exch cvx 6 /index cvx /mul cvx /add cvx 4 1 /roll cvx 6 -2 /roll cvx /pop cvx /pop cvx ] cvx bind }{ /DeviceCMYK {} }ifelse ] setcolorspace end /_nColorSpace currentcolorspace pt }if _nSamples 1 gt{ /_ndx 0 pt [blendColor] cvx exec }if _renderCMYK{ /_C0 [currentcolor] pt /_C0_Space currentcolorspace pt }{ /_C0 [ _nCustomColorSD begin spot1 begin name null ne{ tintValue }if end spot2 begin name null ne{ tintValue }if end end ] pt /_C0_Space _nColorSpace pt }ifelse _nSamples 1 gt{ /_ndx _nSamples 1 sub pt [blendColor] cvx exec }if _renderCMYK{ /_C1 [currentcolor] pt /_C1_Space currentcolorspace pt }{ /_C1 [ _nCustomColorSD begin spot1 begin name null ne{ tintValue }if end spot2 begin name null ne{ tintValue }if end end ] pt /_C1_Space _nColorSpace pt }ifelse /_rampColorSpace _C0_Space pt _spotColor{ nsetcustomcolorend }if }def }def /initializeMultiPassSeps{ /invertXfer{ [ { 1 exch sub }/exec load systemdict /currenttransfer get exec /exec load ] cvx systemdict /settransfer get exec }def /ccThrough{ gsave 1 setCustomColor currentcmykcolor grestore add add add 0 ne }def /spotConverted { begin _isCMYKSep not{ false }{ name null eq{ false }{ tintValue null eq tintImage null eq and{ true }{ spot_C spot_M spot_Y spot_K name ccThrough }ifelse }ifelse }ifelse end }def /spotChannel { _isCMYKSep{ pop false }{ /_spotDict xp _spotDict/name get null eq{ false }{ _spotDict/spot_C get _spotDict/spot_M get _spotDict/spot_Y get _spotDict/spot_K get _spotDict/name get ccThrough }ifelse }ifelse }def /getChannelData { _isCMYKSep dup{ pop renderCMYK }if { _blackPlate{ 4 1 roll 3 npop blackInk }{ _yellowPlate{ 4 2 roll 3 npop yellowInk }{ _magentaPlate{ 4 3 roll 3 npop magentaInk }{ 3 npop cyanInk }ifelse }ifelse }ifelse { true /nonZeroData }{ true /zeroData }ifelse }{ 4 npop spot1/name get null ne spot1 spotChannel and{ spot1/tintImage get dup null ne{ false /nonZeroData }{ pop false /noData }ifelse }{ spot2/name get null ne spot2 spotChannel and{ spot2/tintImage get dup null ne{ false /nonZeroData }{ pop false /noData }ifelse }{ false /noData }ifelse }ifelse }ifelse }def /renderChannelData { /_tmp xp _tmp /nonZeroData ne currentoverprint and{ pop _tmp /zeroData eq{pop}if 4 npop }{ _tmp /nonZeroData eq{ { invertXfer }if systemdict/image get 5 execImage }{ pop _tmp /zeroData eq{pop}if 4 npop knockOut }ifelse }ifelse }def /bwImage{ begin gsave dup dup dup getChannelData exch pop false exch renderChannelData grestore end }def /ncolorimage{ begin pop pop gsave spot2/name get null ne spot2 spotChannel and{ true setoverprint }if getChannelData renderChannelData grestore end }def /getRampColorSpace{ /_renderCMYK _rampSD begin renderCMYK end pt _nSamples 1 gt{ /_ndx 0 pt [blendColor] cvx exec }if _renderCMYK{ /_C0 [currentcolor] pt /_C0_Space currentcolorspace pt }{ /_C0 [ _nCustomColorSD begin 0 spot1 begin name null ne tintValue null ne and spot1 spotChannel and{ pop tintValue }if end spot2 begin name null ne tintValue null ne and spot2 spotChannel and{ pop tintValue }if end 1 exch sub end ] pt /_C0_Space /DeviceGray pt }ifelse _nSamples 1 gt{ /_ndx _nSamples 1 sub pt [blendColor] cvx exec }if _renderCMYK{ /_C1 [currentcolor] pt /_C1_Space currentcolorspace pt }{ /_C1 [ _nCustomColorSD begin 0 spot1 begin name null ne tintValue null ne and spot1 spotChannel and{ pop tintValue }if end spot2 begin name null ne tintValue null ne and spot2 spotChannel and{ pop tintValue }if end 1 exch sub end ] pt /_C1_Space /DeviceGray pt }ifelse /_rampColorSpace _C0_Space pt _spotColor{ nsetcustomcolorend }if }def }def end end defaultpacking setpacking %%EndResource %%BeginResource: procset AGM_Gradient 1.0 0 %%Title: (AGM Gradient Procset) %%Version: 1.0 0 %%CreationDate: (4/26/96) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) userdict /defaultpacking currentpacking put true setpacking userdict /AGM_Gradient 20 dict dup begin put /AGM_Gradient_private 201 dict def /initialize { AGM_Gradient begin AGM_Gradient_private begin initializeVars /bd systemdict/mark get def /ed _level2PS { (>>) }{ (counttomark 2 idiv dup dict begin {def} repeat pop currentdict end) } ifelse cvx def _level2PS{ initializeLev2 }{ initializeLev1 }ifelse queryDevice initializeRectFill initializeShading initializeOps _producingSeps{ AGM_Gradient_Sep/initialize get exec }{ initializeComposite }ifelse _illustrator{ /f{}def /F{}def /s{}def /S{}def /b{}def /B{}def }if /image where{ /image get /_image xd }if /colorimage where{ /colorimage get /_colorimage xd }if AGM_Gradient_private { dup xcheck 1 index type /arraytype eq and { bind }if pop pop }forall AGM_Gradient { dup xcheck 1 index type /arraytype eq and { bind }if pop pop }forall end currentdict readonly pop end }def /initializeAI { pop pop AGM_Gradient/AGM_Gradient_private get /_illustrator true put AGM_Gradient/initialize get exec AGM_Gradient begin }def /unload{ systemdict/languagelevel known{ systemdict/languagelevel get 2 ge{ userdict/AGM_Gradient_Sep 2 copy known{ undef }{ pop pop }ifelse userdict/AGM_Gradient 2 copy known{ undef }{ pop pop }ifelse }if }if }def /terminate{ currentdict AGM_Gradient eq{ end }if }def AGM_Gradient_private begin /initializeVars{ /_d255 256 array def 0 1 255{ _d255 exch dup 255 div put }bind for /_d255- 256 array def 0 1 255{ _d255- exch 1 _d255 2 index get sub put }bind for /_sSave nd /_dUserSpace matrix defaultmatrix def /_bUMatrix matrix def /_imageMatrix matrix def /_saveMatrix matrix def /_xm matrix def /_ccAry1 5 array def /_bbox 4 array pt /_level2PS systemdict/languagelevel known dup{ pop systemdict/languagelevel get 2 ge }if def /_level3PS _level2PS systemdict/shfill known and def currentdict /_illustrator known not{ /_illustrator false def }if }def /initializeOps { AGM_Gradient begin currentdict/Bc known not{ /Bc{ _renderFlag 2 eq _enabledSmoothShade or{ 6 npop }{ pushBSpace _rampIndex 0 eq{ pop pop setCStop }if linealFill popBSpace }ifelse }def }if currentdict/Bg known not{ /Bg{ 10 npop /_gradName xp /_renderFlag xp /_enabledSmoothShade false pt _renderFlag 2 ne{ _illustrator{ _of setoverprint }if /_enabledSmoothShade _level3PS{ _usingSmoothShade _producingSeps not currentoverprint not or and _noImage not and }{ false }ifelse pt _illustrator _eo and _renderFlag 3 eq or{ eoclip }{ clip }ifelse _gradNames _gradName 2 copy known{ get mark exch aload pop /_gradType xp 1 sub dup /_rampIndex xp /_maxRampIndex xp mark exch aload pop 0 0 }if pop pop getRampData }{ mark mark }ifelse }def }if currentdict/Bm known not{ /Bm{ _renderFlag 2 ne{ _gradType 0 eq{ linealRamp }{ radialGrad }ifelse }{ 6 npop }ifelse }def }if currentdict/Bh known not{ /Bh{ 2 npop /_yHi xp /_xHi xp /_radHilite _xHi 0 ne _yHi 0 ne or pt }def }if currentdict/Bn known not{ /Bn{ AGM_Gradient_private begin dict /_gradNames xp end }def }if currentdict/Bd known not{ /Bd{ AGM_Gradient begin AGM_Gradient_private begin /_nColorsBd xp /_gradType xp /_gradName xp }def }if currentdict/BD known not{ /BD{ currentdict/_gradNames known not{ /_gradNames 20 dict def }if ] _nColorsBd _gradType ] _gradName exch /_gradNames xput end end }def }if currentdict/Bb known not{ /Bb{ AGM_Gradient/AGM_Gradient_private get /_illustrator get not{ AGM_Gradient begin }if AGM_Gradient_private begin _producingSeps{ AGM_Gradient_Sep/AGM_Gradient_Sep_private get begin }if mySave }def }if currentdict/BB known not{ /BB{ /_tmp xp cleartomark cleartomark _tmp dup _renderFlag myRestore _producingSeps{ end }if _illustrator dup end not { end }if { 2 ne exch 0 gt and{ 2 eq{ s }{ S }ifelse }{ pop newpath }ifelse }{ pop newpath }ifelse }def }if currentdict/Xm known not{ /Xm{ _xm astore pop }def }if end }def /queryDevice{ /_inDistiller systemdict /currentdistillerparams known def /_inRipSep _level2PS{ currentpagedevice/Separations 2 copy known{ get }{ pop pop false }ifelse }{ false }ifelse _inDistiller or def /_noImage /lv1Fix where{ pop lv1Fix }{ false }ifelse def /_useShells where{ /_useShells get /_usingShells xp }{ /_usingShells false def }ifelse /_useSmoothShade where{ pop }{ /_useSmoothShade false def }ifelse /_forceToCMYK where{ pop }{ /_forceToCMYK false def }ifelse /_cyanPlate 1 0 0 0 testCMYKColorThrough def /_magentaPlate 0 1 0 0 testCMYKColorThrough def /_yellowPlate 0 0 1 0 testCMYKColorThrough def /_blackPlate 0 0 0 1 testCMYKColorThrough def /_compositeJob _cyanPlate _magentaPlate and _yellowPlate and _blackPlate and def /_isCMYKSep _cyanPlate _magentaPlate or _yellowPlate or _blackPlate or def /_compositeSpotDevice where{ pop }{ /_compositeSpotDevice _compositeJob not _inRipSep or{ 1 }{ 0 }ifelse def }ifelse /_producingSeps _compositeSpotDevice 0 ne def /_deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt def /_dpiThreshold where{ pop }{ /_dpiThreshold 600 def }ifelse /_screenFreqThreshold where{ pop }{ /_screenFreqThreshold 150 def }ifelse /_contoneDevice where{ pop }{ /_contoneDevice false def }ifelse /_subSampleOK _deviceDPI _dpiThreshold le currentScreenFreq _screenFreqThreshold le and _contoneDevice not and def }def /initializeRectFill{ /rectfill where dup{ exch pop not _producingSeps or }{ not }ifelse { /rectfill{ gsave newpath 4 2 roll moveto 1 index 0 rlineto 0 1 index rlineto 1 index neg 0 rlineto pop pop closepath fill grestore }def }if }def /initializeLev1{ /currentScreenFreq{ currentscreen pop pop }def /_byte 1 string def /colorimage where{ pop }{ /colorimage{ pop pop /_blackTmp xp /_yellowTmp xp /_magentaTmp xp /_cyanTmp xp /_cnt 0 pt [ _byte dup 0 _cyanTmp /_cnt cvx /get cvx _d255 /exch cvx /get cvx .3 /mul cvx _magentaTmp /_cnt cvx /get cvx _d255 /exch cvx /get cvx .59 /mul cvx _yellowTmp /_cnt cvx /get cvx _d255 /exch cvx /get cvx .11 /mul cvx _blackTmp /_cnt cvx /get cvx _d255 /exch cvx /get cvx /add cvx /add cvx /add cvx 1 /exch cvx /sub cvx /dup cvx 0 /lt cvx{ pop 0 }/if cvx /dup cvx 1 /gt cvx{ pop 1 }/if cvx 255 /mul cvx /cvi cvx 256 /mod cvx /dup cvx 0 /lt cvx{ pop 0 }/if cvx /put cvx /_cnt dup cvx 1 /add cvx /pt cvx ] cvx bind /_image load 5 execImage }def }ifelse }def /initializeLev2{ /level2ScreenFreq{ begin 60 HalftoneType 1 eq{ pop Frequency }if HalftoneType 2 eq{ pop GrayFrequency }if HalftoneType 5 eq{ pop Default level2ScreenFreq }if end }def /currentScreenFreq{ currenthalftone level2ScreenFreq }def }def /initializeShading{ _useSmoothShade _level3PS and{ /_usingSmoothShade true pt initializeLev3_Ops }{ /_usingSmoothShade false pt }ifelse }def /initializeLev3_Ops { /initShFill{ /_index _gradType 0 eq {0}{_maxRampIndex 1 sub} ifelse pt /_rampFuncsArray _maxRampIndex array pt /_boundsArray _maxRampIndex 1 sub array pt /_encodeArray _maxRampIndex 2 mul array pt /_beginCoord _rampPoint pt /_colorSpace null pt /_firstFill _rampIndex _maxRampIndex eq pt /_lastFill false pt }def /linealShFill{ popBSpace _xm aload pop pushBSpace /_size _index 1 add pt _size _maxRampIndex lt { /_rampFuncsArray _rampFuncsArray 0 _size getinterval pt /_boundsArray _boundsArray 0 _size 1 sub getinterval pt /_encodeArray _encodeArray 0 _size 2 mul getinterval pt }if bd /ShadingType 2 /ColorSpace _colorSpace _rgbInCMYK{ /Function [ _cData sampFunc _mData sampFunc _yData sampFunc _kData sampFunc ] }{ /Function bd /FunctionType 3 /Domain [0 1] /Functions _rampFuncsArray /Bounds _boundsArray /Encode _encodeArray ed }ifelse /Extend [_firstFill _lastFill] /Domain [0 1] /Coords [_beginCoord 0 _endCoord 0] ed shfill }def /radialShFill{ /_size _maxRampIndex _index sub pt _size _maxRampIndex lt { /_rampFuncsArray _rampFuncsArray _index _size getinterval pt /_boundsArray _boundsArray _index _size 1 sub getinterval pt /_encodeArray _encodeArray _index 2 mul _size 2 mul getinterval pt }if /_rampLen _beginCoord _endCoord sub pt bd /ShadingType 3 /ColorSpace _colorSpace _rgbInCMYK{ /Function [ _cData sampFunc _mData sampFunc _yData sampFunc _kData sampFunc ] }{ /Function bd /FunctionType 3 /Domain [0 1] /Functions _rampFuncsArray /Bounds _boundsArray /Encode _encodeArray ed }ifelse /Extend [_lastFill _firstFill] /Domain [0 1] /Coords [_xHi _rampLen mul _yHi _rampLen mul _endCoord 0 0 _beginCoord] ed shfill _radHilite{ _xHi _rampLen mul _yHi _rampLen mul translate }if }def % /sampFunc{ /_tmp exch pt bd _tmp length 1 eq { _tmp 0 get /_tmp 2 string pt dup _tmp 0 3 -1 roll put _tmp 1 3 -1 roll put }if /FunctionType 0 /Order 1 /Size [_tmp length] /Domain [0 1] /BitsPerSample 8 /DataSource _tmp /Range [0 1] ed }def /fillRamp{ /_invert _midPoint 0.5 lt pt _rampIndex _maxRampIndex eq { initShFill }if getRampColorSpace _colorSpace null eq{ /_colorSpace _rampColorSpace pt }{ _colorSpace _rampColorSpace ne _rgbInCMYK or{ /_index _index 1 _gradType 0 eq{ sub pt linealShFill }{ add pt radialShFill }ifelse initShFill /_colorSpace _rampColorSpace pt } if }ifelse /_endCoord _endPoint pt /_rgbInCMYK false pt _producingSeps _forceToCMYK or _rgbRamp and { _spotColor{ _renderCMYK }{ _isCMYKSep }ifelse }{ false }ifelse { _compositeJob{ /_rgbInCMYK true pt _cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor dup length string copy /_kData exch pt dup length string copy /_yData exch pt dup length string copy /_mData exch pt dup length string copy /_cData exch pt }{ _rampFuncsArray _index _cyanPlate{_cyanData}if _magentaPlate{_magentaData}if _yellowPlate{_yellowData}if _blackPlate{_blackData}if _nSamples expandOne sampFunc dup begin /Decode [1 0] def end put /_invert false pt }ifelse }{ _rampFuncsArray _index bd /FunctionType 2 /Domain [0 1] /N 0.5 log _invert{1 _midPoint sub}{_midPoint}ifelse log div _gradType 0 eq{ _invert{/C1}{/C0}ifelse _C0 _invert{/C0}{/C1}ifelse _C1 }{ _invert{/C0}{/C1}ifelse _C1 _invert{/C1}{/C0}ifelse _C0 }ifelse ed put }ifelse _rampIndex 1 ne{ _boundsArray _index _gradType 1 eq{1 sub}if _endCoord put } if 0 1 _invert {exch}if _encodeArray _index 2 mul 1 add 3 -1 roll put _encodeArray _index 2 mul 3 -1 roll put _rampIndex 1 eq { /_lastFill true pt _gradType 0 eq{ linealShFill }{ radialShFill }ifelse }if /_index _index 1 _gradType 0 eq{ add pt }{ sub pt }ifelse }def }def /initializeComposite{ /bwImage{ pop /_image load 5 execImage }def /rampImage{ _enabledSmoothShade{ fillRamp }{ _color{ _nSamples setImageParms _rgbRamp _forceToCMYK not and{ _redData _greenData _blueData _nSamples 3 expandColor true 3 null ncolorimage }{ _cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor true 4 null ncolorimage }ifelse }{ _nSamples setImageParms _blackData null bwImage }ifelse }ifelse }def /setCStop{ /_colorStyle exch pt _colorStyle 0 eq{ 1 exch sub 0 0 0 4 -1 roll }if _colorStyle 2 eq{ _forceToCMYK{ 3 npop setcmykcolor }{ setrgbcolor 4 npop }ifelse }if _colorStyle 3 eq{ 1 exch sub /_tmp xp pop 4{ _tmp mul 4 1 roll }repeat }if _colorStyle 4 eq{ _forceToCMYK{ 6 npop setcmykcolor }{ 3 -1 roll pop pop 1 exch sub /_tmp xp 3{ 1 exch sub _tmp mul 1 exch sub 3 1 roll }repeat setrgbcolor 4 npop }ifelse }if _colorStyle 2 ne _colorStyle 4 ne and{ null nsetcustomcolor }if }def /nsetcustomcolor { pop setcmykcolor }def /nsetcustomcolorend { }def /ncolorimage{ pop /_colorimage load 10 execImage }def _noImage not _level2PS not and{ /linealFill{ 8 setImageParms _color{ currentcmykcolor 4{ makeByte8 4 1 roll }repeat true 4 null ncolorimage }{ currentgray makeByte8 null bwImage }ifelse }def }if /getRampColorSpace{ _nSamples 1 gt{ /_ndx 0 pt [blendColor] cvx exec }if /_C0 [currentcolor] pt /_C0_Space currentcolorspace pt _nSamples 1 gt{ /_ndx _nSamples 1 sub pt [blendColor] cvx exec }if /_C1 [currentcolor] pt /_C1_Space currentcolorspace pt /_rampColorSpace _C0_Space pt _spotColor{ nsetcustomcolorend }if }def }def /npop{ {pop}repeat }def /xd{ exch def }def /nd{ null def }def /pt{ AGM_Gradient_private 3 1 roll put }def /xp{ exch pt }def /xput{ dup load dup length exch maxlength eq{ dup dup load dup length 2 mul dict copy def }if load begin def end }def /mySave{ save /_sSave xp }def /myRestore{ _sSave type /savetype eq{ _sSave restore }if }def /gMark{ counttomark 2 add -1 roll }def /execImage{ /_tmp xp { exec }stopped{ $error /errorname get /undefinedresult ne{ stop }{ _tmp npop }ifelse }if }def /pushBSpace{ newpath gsave _bUMatrix astore concat }def /popBSpace{ grestore }def /makeByte8{ /_tmp 0 pt 255 mul cvi 8 string 8{ dup _tmp 3 index put /_tmp _tmp 1 add pt }repeat exch pop }def /setImageParms{ 1 8 2 index 0 0 1 0 0 _imageMatrix astore }def /linealFill{ 0 0 1 1 rectfill }def /testCMYKColorThrough{ gsave setcmykcolor currentcmykcolor grestore add add add 0 ne }def /expandOne { /_tmp xp dup type /stringtype ne{ _tmp string exch dup 0 ne{ 255 mul cvi 0 1 _tmp 1 sub{ 3 copy exch put pop }for }if pop }if }def /expandColor{ /_channels xp /_len xp _channels{ _len expandOne _channels 1 roll }repeat }def /blendColor{ _color{ _rgbRamp _producingSeps not and _forceToCMYK not and{ _redData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _greenData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _blueData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if /setrgbcolor cvx }{ _cyanData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _magentaData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _yellowData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _blackData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _spotColor{ _rampSD begin /_rampSD cvx /begin cvx spot1 begin tintImage dup type /stringtype eq{ /_ndx cvx /get cvx _d255- /exch cvx /get cvx }{ dup null ne{ name type /nametype ne{ 1 exch sub }if }if }ifelse end /spot1 cvx /tintValue 3 -1 /roll cvx /put cvx spot2 begin tintImage dup type /stringtype eq{ /_ndx cvx /get cvx _d255- /exch cvx /get cvx }{ dup null ne{ name type /nametype ne{ 1 exch sub }if }if }ifelse end /spot2 cvx /tintValue 3 -1 /roll cvx /put cvx /end cvx end /_rampSD cvx /nsetcustomcolor cvx }{ /setcmykcolor cvx }ifelse }ifelse }{ _blackData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _enabledSmoothShade{ 1 /exch cvx /sub cvx 0 0 0 4 -1 /roll cvx /setcmykcolor cvx }{ /setgray cvx }ifelse }ifelse }def /useRectImage{ _subSampleOK _enabledSmoothShade not and{ { mark 0 1 dtransform atan cvi 90 mod 0 eq 1 0 dtransform atan cvi 90 mod 0 eq } stopped { cleartomark false } { and exch pop } ifelse }{ false }ifelse }def /linealImage{ _noImage{ rectImage }{ _producingSeps{ AGM_Gradient_Sep/AGM_Gradient_Sep_private get /rampImage get exec }{ useRectImage{ rectImage }{ rampImage }ifelse }ifelse }ifelse }def /linealRamp{ pushBSpace _ramp{ linealImage }{ linealFill }ifelse popBSpace /_rampIndex _rampIndex 1 sub pt _rampIndex 0 gt{ getRampData }if }def /radialGrad{ /_usingShells currentoverprint _producingSeps and _usingShells or pt /_firstShell true pt _enabledSmoothShade not{ currentoverprint _producingSeps and{ newpath clippath pathbbox 1 add 4 1 roll 1 add 4 1 roll 1 sub 4 1 roll 1 sub 4 1 roll _bbox astore pop newpath _bbox 0 get _bbox 1 get moveto _bbox 2 get _bbox 1 get lineto _bbox 2 get _bbox 3 get lineto _bbox 0 get _bbox 3 get lineto closepath 6 copy gsave _bUMatrix astore concat 1 0 moveto 0 0 1 0 360 arc closepath eoclip fill popBSpace }{ fill }ifelse }if pushBSpace _radHilite{ _xHi _yHi _bUMatrix idtransform /_yHi xp /_xHi xp _rampPoint 1 lt{ 1 _rampPoint sub dup _xHi mul exch _yHi mul translate }if }if _rampIndex{ radialRamp /_rampIndex _rampIndex 1 sub pt _rampIndex 0 gt{ getRampData }if }repeat popBSpace }def /getNSamples{ 0 exch { dup type /stringtype eq{ length exch pop exit }if pop }forall dup 0 eq{ pop 1 }if }def /getRampData{ /_rampType gMark pt /_color _rampType 0 gt pt /_ccRGB _rampType 5 eq _rampType 6 eq or pt /_rgbRamp _rampType 4 eq _ccRGB or pt /_ccProcess _rampType 2 eq _rampType 3 eq or pt _producingSeps{ _rampSD initSpotDict /_spotColor _ccProcess _ccRGB or pt }{ /_spotColor false pt }ifelse /_ramp true pt 100 div /_rampPoint xp 100 div /_midPoint xp dup /_colorStyle xp _colorStyle 0 eq{ 2 }{ _colorStyle 1 eq{ 5 }{ _colorStyle 2 eq{ 8 }{ _colorStyle 3 eq{ _producingSeps{ _rampSD /spot1 get begin /name 3 index def /spot_K 4 index def /spot_Y 5 index def /spot_M 6 index def /spot_C 7 index def end }if 7 }{ _producingSeps{ _rampSD/spot1 get begin /name 4 index def /spot_K 8 index def /spot_Y 9 index def /spot_M 10 index def /spot_C 11 index def end }if 11 } ifelse }ifelse }ifelse }ifelse /_tmp xp _tmp index 100 div /_endPoint xp _gradType 1 eq{ _tmp 1 add index 100 div /_midPoint xp }if _producingSeps{ _tmp 2 add index /_nextColorStyle xp _nextColorStyle 3 eq{ /_tmp _tmp 4 add pt _tmp index dup _rampSD/spot1 get /name get ne{ _rampSD /spot2 get begin /name xd /spot_K _tmp 2 add index def /spot_Y _tmp 3 add index def /spot_M _tmp 4 add index def /spot_C _tmp 5 add index def end }{ pop }ifelse }if _nextColorStyle 4 eq{ /_tmp _tmp 5 add pt _tmp index dup _rampSD/spot1 get /name get ne{ _rampSD /spot2 get begin /name xd /spot_K _tmp 5 add index def /spot_Y _tmp 6 add index def /spot_M _tmp 7 add index def /spot_C _tmp 8 add index def end }{ pop }ifelse }if }if _rampType 3 eq _rampType 6 eq or{ /_tint2Data gMark pt }if _ccProcess _ccRGB or{ /_tint1Data gMark pt }if _rgbRamp{ /_blueData gMark pt /_greenData gMark pt /_redData gMark pt }if _producingSeps{ _ccProcess _ccRGB or{ _rampType 3 eq _rampType 6 eq or{ _rampSD /spot2 get begin /tintImage _gradType 0 eq{ _tint2Data }{ _tint1Data }ifelse def name null eq{ /name /Black def }if end }if _rampSD /spot1 get begin /tintImage _gradType 0 eq _rampType 2 eq or _rampType 5 eq or{ _tint1Data }{ _tint2Data }ifelse def _rampType 2 eq _rampType 5 eq or{ name null eq{ /name _rampSD/spot2 get /name get def /spot_C _rampSD/spot2 get /spot_C get def /spot_M _rampSD/spot2 get /spot_M get def /spot_Y _rampSD/spot2 get /spot_Y get def /spot_K _rampSD/spot2 get /spot_K get def _rampSD/spot2 get /name null put }if }{ name null eq{ /name /Black def }if }ifelse end }if }if /_blackData gMark pt _rampType 0 gt{ counttomark 4 add -3 roll /_yellowData xp /_magentaData xp /_cyanData xp }if _ramp{ /_nSamples [ _rampType 0 eq {_blackData}if _rampType 1 eq {_cyanData _magentaData _yellowData _blackData}if _rampType 2 eq {_cyanData _magentaData _yellowData _blackData _tint1Data}if _rampType 3 eq {_cyanData _magentaData _yellowData _blackData _tint1Data _tint2Data}if _rampType 4 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData}if _rampType 5 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData _tint1Data}if _rampType 6 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData _tint1Data _tint2Data}if ] getNSamples pt _enabledSmoothShade not {/_ramp _nSamples 1 gt pt} if } if setCStop }def /rectImage{ gsave /_sInc 1 pt /_bInc 1 _nSamples div pt /_nSubSamples _nSamples pt /_optimize false pt _subSampleOK{ /_uRampLen 1 0 dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt pt /_pChange _uRampLen 0 eq{0}{_nSamples _uRampLen div}ifelse pt _pChange .5 gt dup /_optimize xp{ /_nSubSamples _uRampLen 2 div round cvi dup 1 le{pop 2}if pt /_bInc 1 _nSubSamples div pt /_sInc _nSamples 1 sub _nSubSamples 1 sub div pt }if }if 0 _nSubSamples [ /dup cvx _optimize { /round cvx /cvi cvx } if /_ndx /exch cvx /pt cvx blendColor 0 0 _bInc 1 /rectfill cvx _bInc 0 /translate cvx _sInc /add cvx ] cvx bind repeat pop _spotColor{ nsetcustomcolorend }if grestore }def /radialInit{ /_nRadSamples _nSamples dup 0 eq{pop 1}if pt /_sInc -1 pt /_rampLen _rampPoint _endPoint sub pt /_bInc _rampLen _nSamples div neg pt /_optimize false pt _subSampleOK{ /_uRampLen _rampLen 0 dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt 0 _rampLen dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt 2 copy lt{ exch }if pop pt /_pChange _uRampLen 0 eq{ 0 }{ _nSamples _uRampLen div }ifelse pt _pChange .5 gt dup /_optimize xp{ /_nRadSamples _uRampLen 2 div round cvi dup 1 le{pop 2}if pt /_bInc _rampLen _nRadSamples div neg pt /_sInc _nSamples 1 sub _nRadSamples 1 sub div neg pt }if }if _radHilite{ /_xBCInc _xHi _rampLen mul _nRadSamples div pt /_yBCInc _yHi _rampLen mul _nRadSamples div pt }if }def /radialRamp{ _enabledSmoothShade{ fillRamp }{ /_saveMatrix _saveMatrix currentmatrix def radialInit % % true _producingSeps _rgbRamp not and{ _nSamples 1 gt{ pop /_ndx 0 pt [blendColor] cvx exec currentInkN /_ndx _nSamples 1 sub pt [blendColor] cvx exec currentInkN or }if }if { _rampPoint _nSamples 1 sub _nRadSamples [ /dup cvx _optimize{ /round cvx /cvi cvx }if /_ndx /exch cvx /pt cvx _usingShells{ /_firstShell cvx{ /_firstShell false pt }{ 0 0 3 index 360 0 arcn fill }/ifelse cvx }if blendColor _usingShells{ 0 0 3 /index cvx 0 360 /arc cvx }{ 0 0 3 /index cvx 0 360 /arc cvx /fill cvx }ifelse /exch cvx _bInc /add cvx /exch cvx _sInc /add cvx _radHilite{ _xBCInc _yBCInc /translate cvx }if ] cvx bind repeat pop pop }{ _usingShells{ 0 0 _rampPoint 360 0 arcn fill }if }ifelse _saveMatrix setmatrix _radHilite{ _xHi _rampLen mul _yHi _rampLen mul translate }if _usingShells _rampIndex 1 eq and{ fill }if _spotColor{ nsetcustomcolorend }if }ifelse }def end end defaultpacking setpacking %%EndResource %%BeginProcSet: Adobe_ColorImage_AI6 1.2 0 userdict /Adobe_ColorImage_AI6 known not { userdict /Adobe_ColorImage_AI6 50 dict put } if userdict /Adobe_ColorImage_AI6 get begin /initialize { Adobe_ColorImage_AI6 begin Adobe_ColorImage_AI6 { dup type /arraytype eq { dup xcheck { bind } if } if pop pop } forall } def /terminate { end } def currentdict /Adobe_ColorImage_AI6_Vars known not { /Adobe_ColorImage_AI6_Vars 40 dict def } if Adobe_ColorImage_AI6_Vars begin /plateindex -1 def /_newproc null def /_proc1 null def /_proc2 null def /channelcount 0 def /sourcecount 0 def /sourcearray 4 array def /_ptispace null def /_ptiname null def /_pti0 0 def /_pti1 0 def /_ptiproc null def /_ptiscale 0 def /_pticomps 0 def /_ptibuf 0 string def /_gtigray 0 def /_cticmyk null def /_rtirgb null def /XIEnable true def /XIType 0 def /XIEncoding 0 def /XICompression 0 def /XIChannelCount 0 def /XIBitsPerPixel 0 def /XIImageHeight 0 def /XIImageWidth 0 def /XIImageMatrix null def /XIRowBytes 0 def /XIFile null def /XIBuffer1 null def /XIBuffer2 null def /XIDataProc null def /XIVersion 6 def /XIColorSpace /DeviceGray def /XIColorValues 0 def end currentdict /_colorimage known not { /colorimage where { /colorimage get /_colorimage exch def }{ /_colorimage null def } ifelse } if /_image systemdict /image get def /_currenttransfer systemdict /currenttransfer get def /FourEqual { 4 index ne { pop pop pop false }{ 4 index ne { pop pop false }{ 4 index ne { pop false }{ 4 index eq } ifelse } ifelse } ifelse } def /TestPlateIndex { Adobe_ColorImage_AI6_Vars begin /plateindex -1 def /setcmykcolor where { pop gsave 1 0 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub 0 1 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub 0 0 1 0 setcmykcolor systemdict /currentgray get exec 1 exch sub 0 0 0 1 setcmykcolor systemdict /currentgray get exec 1 exch sub grestore 1 0 0 0 FourEqual { /plateindex 0 def }{ 0 1 0 0 FourEqual { /plateindex 1 def }{ 0 0 1 0 FourEqual { /plateindex 2 def }{ 0 0 0 1 FourEqual { /plateindex 3 def }{ 0 0 0 0 FourEqual { /plateindex 5 def } if } ifelse } ifelse } ifelse } ifelse pop pop pop pop } if plateindex end } def /concatprocs { /packedarray where { pop dup type /packedarraytype eq 2 index type /packedarraytype eq or }{ false } ifelse { /_proc2 exch cvlit def /_proc1 exch cvlit def _proc1 aload pop _proc2 aload pop _proc1 length _proc2 length add packedarray cvx }{ /_proc2 exch cvlit def /_proc1 exch cvlit def /_newproc _proc1 length _proc2 length add array def _newproc 0 _proc1 putinterval _newproc _proc1 length _proc2 putinterval _newproc cvx } ifelse } def /clrspaceissepn { type /arraytype eq } def /clrspacegetname { dup clrspaceissepn {dup length 2 sub get}{pop ()} ifelse } def /clrspacegetalt { aload pop pop pop colormake } def /clrspacegetcomps { dup /DeviceGray eq { pop 1 }{ dup /DeviceRGB eq { pop 3 }{ /DeviceCMYK eq { 4 }{ 1 } ifelse } ifelse } ifelse } def /clrspacemarksplate { dup /DeviceGray eq { pop plateindex 3 eq }{ dup /DeviceRGB eq { pop plateindex 5 ne }{ dup /DeviceCMYK eq { pop plateindex 5 ne }{ /findcmykcustomcolor where { pop dup length 2 sub get 0.1 0.1 0.1 0.1 5 -1 roll findcmykcustomcolor 1 setcustomcolor systemdict /currentgray get exec 1 ne }{ pop plateindex 5 ne } ifelse } ifelse } ifelse } ifelse } def /colormake { dup clrspacegetcomps exch 1 index 2 add 1 roll dup 1 eq {pop}{array astore} ifelse exch } def /colorexpand { dup clrspacegetname exch dup clrspaceissepn { clrspacegetalt exch 4 1 roll }{ 1 3 1 roll } ifelse } def /colortint { dup /DeviceGray eq { 3 1 roll 1 exch sub mul 1 exch sub exch }{ dup /DeviceRGB eq { 3 1 roll {1 exch sub 1 index mul 1 exch sub exch} forall pop 3 array astore exch }{ dup /DeviceCMYK eq { 3 1 roll {1 index mul exch} forall pop 4 array astore exch }{ 3 1 roll mul exch } ifelse } ifelse } ifelse } def /colortocmyk { dup /DeviceGray eq { pop 1 exch sub 0 0 0 4 -1 roll 4 array astore }{ dup /DeviceRGB eq { pop aload pop _rgbtocmyk 4 array astore }{ dup /DeviceCMYK eq { pop }{ clrspacegetalt colortint colortocmyk } ifelse } ifelse } ifelse } def /makeimagedict { 7 dict begin /ImageType 1 def /Decode exch def /DataSource exch def /ImageMatrix exch def /BitsPerComponent exch def /Height exch def /Width exch def currentdict end } def /stringinvert { 0 1 2 index length 1 sub { dup 2 index exch get 255 exch sub 2 index 3 1 roll put } for } def /stringknockout { 0 1 2 index length 1 sub { 255 2 index 3 1 roll put } for } def /stringapply { 0 1 4 index length 1 sub { dup 4 index exch get 3 index 3 1 roll 3 index exec } for pop exch pop } def /WalkRGBString { 0 3 index dup length 1 sub 0 3 3 -1 roll { 3 getinterval {} forall 5 index exec 3 index } for 5 {pop} repeat } def /WalkCMYKString { 0 3 index dup length 1 sub 0 4 3 -1 roll { 4 getinterval {} forall 6 index exec 3 index } for 5 { pop } repeat } def /StuffRGBIntoGrayString { .11 mul exch .59 mul add exch .3 mul add cvi 3 copy put pop 1 add } def /StuffCMYKIntoGrayString { exch .11 mul add exch .59 mul add exch .3 mul add dup 255 gt { pop 255 } if 255 exch sub cvi 3 copy put pop 1 add } def /RGBToGrayImageProc { Adobe_ColorImage_AI6_Vars begin sourcearray 0 get exec dup length 3 idiv string dup 3 1 roll /StuffRGBIntoGrayString load exch WalkRGBString end } def /CMYKToGrayImageProc { Adobe_ColorImage_AI6_Vars begin sourcearray 0 get exec dup length 4 idiv string dup 3 1 roll /StuffCMYKIntoGrayString load exch WalkCMYKString end } def /SeparateCMYKImageProc { Adobe_ColorImage_AI6_Vars begin sourcecount 0 ne { sourcearray plateindex get exec }{ sourcearray 0 get exec dup length 4 idiv string 0 2 index plateindex 4 2 index length 1 sub { get 255 exch sub 3 copy put pop 1 add 2 index } for pop pop exch pop } ifelse end } def /ColorImageCompositeEmulator { pop true eq { Adobe_ColorImage_AI6_Vars /sourcecount get 5 add { pop } repeat }{ Adobe_ColorImage_AI6_Vars /channelcount get 1 ne { Adobe_ColorImage_AI6_Vars begin sourcearray 0 3 -1 roll put channelcount 3 eq {/RGBToGrayImageProc}{/CMYKToGrayImageProc} ifelse load end } if image } ifelse } def /colorimage { Adobe_ColorImage_AI6_Vars begin /channelcount 1 index def /sourcecount 2 index 1 eq { channelcount 1 sub } { 0 } ifelse def 4 sourcecount add index end dup 8 eq exch 1 eq or not { /_colorimage load null ne { _colorimage }{ Adobe_ColorImage_AI6_Vars /sourcecount get 7 add { pop } repeat } ifelse }{ dup 3 eq TestPlateIndex dup -1 eq exch 5 eq or or { /_colorimage load null eq { ColorImageCompositeEmulator }{ dup 1 eq { pop pop image }{ Adobe_ColorImage_AI6_Vars /plateindex get 5 eq { gsave 0 _currenttransfer exec 1 _currenttransfer exec eq { 0 _currenttransfer exec 0.5 lt } { 0 _currenttransfer exec 1 _currenttransfer exec gt } ifelse { { pop 0 } } { { pop 1 } } ifelse systemdict /settransfer get exec } if _colorimage Adobe_ColorImage_AI6_Vars /plateindex get 5 eq { grestore } if } ifelse } ifelse }{ dup 1 eq { pop pop image }{ pop pop Adobe_ColorImage_AI6_Vars begin sourcecount -1 0 { exch sourcearray 3 1 roll put } for /SeparateCMYKImageProc load end systemdict /image get exec } ifelse } ifelse } ifelse } def /proctintimage { /_ptispace exch store /_ptiname exch store /_pti1 exch store /_pti0 exch store /_ptiproc exch store /_pticomps _ptispace clrspacegetcomps store /_ptiscale _pti1 _pti0 sub store level2? { _ptiname length 0 gt version cvr 2012 ge and { [/Separation _ptiname _ptispace {_ptiproc}] setcolorspace [_pti0 _pti1] makeimagedict _image }{ [/Indexed _ptispace 255 {255 div _ptiscale mul _pti0 add _ptiproc}] setcolorspace [0 255] makeimagedict _image } ifelse }{ _pticomps 1 eq { { dup { 255 div _ptiscale mul _pti0 add _ptiproc 255 mul cvi put } stringapply } concatprocs _image }{ { dup length _pticomps mul dup _ptibuf length ne {/_ptibuf exch string store}{pop} ifelse _ptibuf { exch _pticomps mul exch 255 div _ptiscale mul _pti0 add _ptiproc _pticomps 2 add -2 roll _pticomps 1 sub -1 0 { 1 index add 2 index exch 5 -1 roll 255 mul cvi put } for pop pop } stringapply } concatprocs false _pticomps /_colorimage load null eq {7 {pop} repeat}{_colorimage} ifelse } ifelse } ifelse } def /graytintimage { /_gtigray 5 -1 roll store {1 _gtigray sub mul 1 exch sub} 4 1 roll /DeviceGray proctintimage } def /cmyktintimage { /_cticmyk 5 -1 roll store {_cticmyk {1 index mul exch} forall pop} 4 1 roll /DeviceCMYK proctintimage } def /rgbtintimage { /_rtirgb 5 -1 roll store {_rtirgb {1 exch sub 1 index mul 1 exch sub exch} forall pop} 4 1 roll /DeviceRGB proctintimage } def /tintimage { TestPlateIndex -1 eq { colorexpand 3 -1 roll 5 -1 roll {0}{0 exch} ifelse 4 2 roll dup /DeviceGray eq { pop graytintimage }{ dup /DeviceRGB eq { pop rgbtintimage }{ pop cmyktintimage } ifelse } ifelse }{ dup clrspacemarksplate { plateindex 5 lt { colortocmyk plateindex get 1 exch sub exch {1 0}{0 1} ifelse () graytintimage }{ pop exch {0}{0 exch} ifelse 0 3 1 roll () graytintimage } ifelse }{ pop pop pop {pop 1} 0 1 () /DeviceGray proctintimage } ifelse } ifelse } def /XINullImage { } def /XIImageMask { XIImageWidth XIImageHeight false [XIImageWidth 0 0 XIImageHeight neg 0 0] /XIDataProc load imagemask } def /XIImageTint { 0 setgray XIImageWidth XIImageHeight XIBitsPerPixel [XIImageWidth 0 0 XIImageHeight neg 0 0] /XIDataProc load XIType 3 eq XIColorValues XIColorSpace tintimage } def /XIImage { 0 setgray XIImageWidth XIImageHeight XIBitsPerPixel [XIImageWidth 0 0 XIImageHeight neg 0 0] /XIDataProc load XIChannelCount 1 eq {image}{false XIChannelCount colorimage} ifelse } def /XG { pop pop } def /XF { 13 {pop} repeat } def /Xh { Adobe_ColorImage_AI6_Vars begin gsave /XIType exch def /XIImageHeight exch def /XIImageWidth exch def /XIImageMatrix exch def 0 0 moveto XIImageMatrix concat XIImageWidth XIImageHeight scale XIType 1 eq { /_lp /null ddef _fc /_lp /imagemask ddef } if /XIVersion 7 def end } def /XH { Adobe_ColorImage_AI6_Vars begin /XIVersion 6 def grestore end } def /XIEnable { Adobe_ColorImage_AI6_Vars /XIEnable 3 -1 roll put } def /XC { Adobe_ColorImage_AI6_Vars begin colormake /XIColorSpace exch def /XIColorValues exch def end } def /XI { Adobe_ColorImage_AI6_Vars begin gsave /XIType exch def cvi dup 256 idiv /XICompression exch store 256 mod /XIEncoding exch store pop pop /XIChannelCount exch def /XIBitsPerPixel exch def /XIImageHeight exch def /XIImageWidth exch def pop pop pop pop /XIImageMatrix exch def XIBitsPerPixel 1 eq { XIImageWidth 8 div ceiling cvi }{ XIImageWidth XIChannelCount mul } ifelse /XIRowBytes exch def XIEncoding 0 ne XIVersion 6 le and { currentfile 128 string readline pop pop } if XICompression 0 eq { /XIBuffer1 XIRowBytes string def XIEncoding 0 eq { {currentfile XIBuffer1 readhexstring pop} }{ {currentfile XIBuffer1 readstring pop} } ifelse }{ /XIBuffer1 256 string def /XIBuffer2 XIRowBytes string def {currentfile XIBuffer1 readline pop (%) anchorsearch {pop} if} /ASCIIHexDecode filter /DCTDecode filter /XIFile exch def {XIFile XIBuffer2 readstring pop} } ifelse /XIDataProc exch def XIVersion 6 le { 0 0 moveto XIImageMatrix concat XIImageWidth XIImageHeight scale XIType 1 eq { /_lp /null ddef _fc /_lp /imagemask ddef } if } if XIEnable { XIType 1 eq { XIImageMask }{ XIType 2 eq XIType 3 eq or { XIImageTint }{ XIImage } ifelse } ifelse }{ XINullImage } ifelse grestore end } def end %%EndProcSet %%BeginResource: procset Adobe_Illustrator_AI5 1.2 0 %%Title: (Adobe Illustrator (R) Version 7.0 Full Prolog) %%Version: 1.2 0 %%CreationDate: (3/7/1994) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_Illustrator_AI5_vars 107 dict dup begin put /_eo false def /_lp /none def /_pf { } def /_ps { } def /_psf { } def /_pss { } def /_pjsf { } def /_pjss { } def /_pola 0 def /_doClip 0 def /cf currentflat def /_lineorientation 0 def /_charorientation 0 def /_yokoorientation 0 def /_tm matrix def /_renderStart [ /e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0 ] def /_renderEnd [ null null null null /i1 /i1 /i1 /i1 ] def /_render -1 def /_shift [0 0] def /_ax 0 def /_ay 0 def /_cx 0 def /_cy 0 def /_leading [ 0 0 ] def /_ctm matrix def /_mtx matrix def /_sp 16#020 def /_hyphen (-) def /_fontSize 0 def /_fontAscent 0 def /_fontDescent 0 def /_fontHeight 0 def /_fontRotateAdjust 0 def /Ss 256 string def Ss 0 (fonts/) putinterval /_cnt 0 def /_scale [1 1] def /_nativeEncoding 0 def /_useNativeEncoding 0 def /_tempEncode 0 def /_pntr 0 def /_tDict 2 dict def /_hfname 100 string def /_hffound false def /Tx { } def /Tj { } def /CRender { } def /_AI3_savepage { } def /_gf null def /_cf 4 array def /_rgbf 3 array def /_if null def /_of false def /_fc { } def /_gs null def /_cs 4 array def /_rgbs 3 array def /_is null def /_os false def /_sc { } def /_pd 1 dict def /_ed 15 dict def /_pm matrix def /_fm null def /_fd null def /_fdd null def /_sm null def /_sd null def /_sdd null def /_i null def /_lobyte 0 def /_hibyte 0 def /_cproc null def /_cscript 0 def /_hvax 0 def /_hvay 0 def /_hvwb 0 def /_hvcx 0 def /_hvcy 0 def /_bitfont null def /_bitlobyte 0 def /_bithibyte 0 def /_bitkey null def /_bitdata null def /_bitindex 0 def /discardSave null def /buffer 256 string def /beginString null def /endString null def /endStringLength null def /layerCnt 1 def /layerCount 1 def /perCent (%) 0 get def /perCentSeen? false def /newBuff null def /newBuffButFirst null def /newBuffLast null def /clipForward? false def end userdict /Adobe_Illustrator_AI5 known not { userdict /Adobe_Illustrator_AI5 95 dict put } if userdict /Adobe_Illustrator_AI5 get begin /initialize { Adobe_Illustrator_AI5 dup begin Adobe_Illustrator_AI5_vars begin discardDict { bind pop pop } forall dup /nc get begin { dup xcheck 1 index type /operatortype ne and { bind } if pop pop } forall end newpath } def /terminate { end end } def /_ null def /ddef { Adobe_Illustrator_AI5_vars 3 1 roll put } def /xput { dup load dup length exch maxlength eq { dup dup load dup length 2 mul dict copy def } if load begin def end } def /npop { { pop } repeat } def /hswj { dup stringwidth 3 2 roll { _hvwb eq { exch _hvcx add exch _hvcy add } if exch _hvax add exch _hvay add } cforall } def /vswj { 0 0 3 -1 roll { dup 255 le _charorientation 1 eq and { dup cstring stringwidth 5 2 roll _hvwb eq { exch _hvcy sub exch _hvcx sub } if exch _hvay sub exch _hvax sub 4 -1 roll sub exch 3 -1 roll sub exch } { _hvwb eq { exch _hvcy sub exch _hvcx sub } if exch _hvay sub exch _hvax sub _fontHeight sub } ifelse } cforall } def /swj { 6 1 roll /_hvay exch ddef /_hvax exch ddef /_hvwb exch ddef /_hvcy exch ddef /_hvcx exch ddef _lineorientation 0 eq { hswj } { vswj } ifelse } def /sw { 0 0 0 6 3 roll swj } def /vjss { 4 1 roll { dup cstring dup length 1 eq _charorientation 1 eq and { -90 rotate currentpoint _fontRotateAdjust add moveto gsave false charpath currentpoint 5 index setmatrix stroke grestore _fontRotateAdjust sub moveto _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto 90 rotate } { currentpoint _fontHeight sub 5 index sub 3 index _sp eq { 9 index sub } if currentpoint exch 4 index stringwidth pop 2 div sub exch _fontAscent sub moveto gsave 2 index false charpath 6 index setmatrix stroke grestore moveto pop pop } ifelse } cforall 6 npop } def /hjss { 4 1 roll { dup cstring gsave false charpath currentpoint 5 index setmatrix stroke grestore moveto _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto } cforall 6 npop } def /jss { _lineorientation 0 eq { hjss } { vjss } ifelse } def /ss { 0 0 0 7 3 roll jss } def /vjsp { 4 1 roll { dup cstring dup length 1 eq _charorientation 1 eq and { -90 rotate currentpoint _fontRotateAdjust add moveto false charpath currentpoint _fontRotateAdjust sub moveto _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto 90 rotate } { currentpoint _fontHeight sub 5 index sub 3 index _sp eq { 9 index sub } if currentpoint exch 4 index stringwidth pop 2 div sub exch _fontAscent sub moveto 2 index false charpath moveto pop pop } ifelse } cforall 6 npop } def /hjsp { 4 1 roll { dup cstring false charpath _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto } cforall 6 npop } def /jsp { matrix currentmatrix _lineorientation 0 eq {hjsp} {vjsp} ifelse } def /sp { matrix currentmatrix 0 0 0 7 3 roll _lineorientation 0 eq {hjsp} {vjsp} ifelse } def /pl { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform } def /setstrokeadjust where { pop true setstrokeadjust /c { curveto } def /C /c load def /v { currentpoint 6 2 roll curveto } def /V /v load def /y { 2 copy curveto } def /Y /y load def /l { lineto } def /L /l load def /m { moveto } def } { /c { pl curveto } def /C /c load def /v { currentpoint 6 2 roll pl curveto } def /V /v load def /y { pl 2 copy curveto } def /Y /y load def /l { pl lineto } def /L /l load def /m { pl moveto } def } ifelse /d { setdash } def /cf { } def /i { dup 0 eq { pop cf } if setflat } def /j { setlinejoin } def /J { setlinecap } def /M { setmiterlimit } def /w { setlinewidth } def /XR { 0 ne /_eo exch ddef } def /H { } def /h { closepath } def /N { _pola 0 eq { _doClip 1 eq { _eo {eoclip} {clip} ifelse /_doClip 0 ddef } if newpath } { /CRender { N } ddef } ifelse } def /n { N } def /F { _pola 0 eq { _doClip 1 eq { gsave _pf grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _fc /_doClip 0 ddef } { _pf } ifelse } { /CRender { F } ddef } ifelse } def /f { closepath F } def /S { _pola 0 eq { _doClip 1 eq { gsave _ps grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc /_doClip 0 ddef } { _ps } ifelse } { /CRender { S } ddef } ifelse } def /s { closepath S } def /B { _pola 0 eq { _doClip 1 eq gsave F grestore { gsave S grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc /_doClip 0 ddef } { S } ifelse } { /CRender { B } ddef } ifelse } def /b { closepath B } def /W { /_doClip 1 ddef } def /* { count 0 ne { dup type /stringtype eq { pop } if } if newpath } def /u { } def /U { } def /q { _pola 0 eq { gsave } if } def /Q { _pola 0 eq { grestore } if } def /*u { _pola 1 add /_pola exch ddef } def /*U { _pola 1 sub /_pola exch ddef _pola 0 eq { CRender } if } def /D { pop } def /*w { } def /*W { } def /` { /_i save ddef clipForward? { nulldevice } if 6 1 roll 4 npop concat pop userdict begin /showpage { } def 0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit [] 0 setdash /setstrokeadjust where {pop false setstrokeadjust} if newpath 0 setgray false setoverprint } def /~ { end _i restore } def /O { 0 ne /_of exch ddef /_lp /none ddef } def /R { 0 ne /_os exch ddef /_lp /none ddef } def /g { /_gf exch ddef /_fc { _lp /fill ne { _of setoverprint _gf setgray /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /G { /_gs exch ddef /_sc { _lp /stroke ne { _os setoverprint _gs setgray /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /k { _cf astore pop /_fc { _lp /fill ne { _of setoverprint _cf aload pop setcmykcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /K { _cs astore pop /_sc { _lp /stroke ne { _os setoverprint _cs aload pop setcmykcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /Xa { _rgbf astore pop /_fc { _lp /fill ne { _of setoverprint _rgbf aload pop setrgbcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /XA { _rgbs astore pop /_sc { _lp /stroke ne { _os setoverprint _rgbs aload pop setrgbcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /_rgbtocmyk { 3 { 1 exch sub 3 1 roll } repeat 3 copy 1 4 1 roll 3 { 3 index 2 copy gt { exch } if pop 4 1 roll } repeat pop pop pop 4 1 roll 3 { 3 index sub 3 1 roll } repeat 4 -1 roll } def /Xx { exch /_gf exch ddef 0 eq { findcmykcustomcolor } { /findrgbcustomcolor where not { 4 1 roll _rgbtocmyk 5 -1 roll findcmykcustomcolor } { pop findrgbcustomcolor } ifelse } ifelse /_if exch ddef /_fc { _lp /fill ne { _of setoverprint _if _gf 1 exch sub setcustomcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /XX { exch /_gs exch ddef 0 eq { findcmykcustomcolor } { /findrgbcustomcolor where not { 4 1 roll _rgbtocmyk 5 -1 roll findcmykcustomcolor } { pop findrgbcustomcolor } ifelse } ifelse /_is exch ddef /_sc { _lp /stroke ne { _os setoverprint _is _gs 1 exch sub setcustomcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /x { /_gf exch ddef findcmykcustomcolor /_if exch ddef /_fc { _lp /fill ne { _of setoverprint _if _gf 1 exch sub setcustomcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /X { /_gs exch ddef findcmykcustomcolor /_is exch ddef /_sc { _lp /stroke ne { _os setoverprint _is _gs 1 exch sub setcustomcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /A { pop } def /annotatepage { userdict /annotatepage 2 copy known {get exec} {pop pop} ifelse } def /XT { pop pop } def /discard { save /discardSave exch store discardDict begin /endString exch store gt38? { 2 add } if load stopped pop end discardSave restore } bind def userdict /discardDict 7 dict dup begin put /pre38Initialize { /endStringLength endString length store /newBuff buffer 0 endStringLength getinterval store /newBuffButFirst newBuff 1 endStringLength 1 sub getinterval store /newBuffLast newBuff endStringLength 1 sub 1 getinterval store } def /shiftBuffer { newBuff 0 newBuffButFirst putinterval newBuffLast 0 currentfile read not { stop } if put } def 0 { pre38Initialize mark currentfile newBuff readstring exch pop { { newBuff endString eq { cleartomark stop } if shiftBuffer } loop } { stop } ifelse } def 1 { pre38Initialize /beginString exch store mark currentfile newBuff readstring exch pop { { newBuff beginString eq { /layerCount dup load 1 add store } { newBuff endString eq { /layerCount dup load 1 sub store layerCount 0 eq { cleartomark stop } if } if } ifelse shiftBuffer } loop } if } def 2 { mark { currentfile buffer readline not { stop } if endString eq { cleartomark stop } if } loop } def 3 { /beginString exch store /layerCnt 1 store mark { currentfile buffer readline not { stop } if dup beginString eq { pop /layerCnt dup load 1 add store } { endString eq { layerCnt 1 eq { cleartomark stop } { /layerCnt dup load 1 sub store } ifelse } if } ifelse } loop } def end userdict /clipRenderOff 15 dict dup begin put { /n /N /s /S /f /F /b /B } { { _doClip 1 eq { /_doClip 0 ddef _eo {eoclip} {clip} ifelse } if newpath } def } forall /Tr /pop load def /Bb {} def /BB /pop load def /Bg {12 npop} def /Bm {6 npop} def /Bc /Bm load def /Bh {4 npop} def end /Lb { 4 npop 6 1 roll pop 4 1 roll pop pop pop 0 eq { 0 eq { (%AI5_BeginLayer) 1 (%AI5_EndLayer--) discard } { /clipForward? true def /Tx /pop load def /Tj /pop load def currentdict end clipRenderOff begin begin } ifelse } { 0 eq { save /discardSave exch store } if } ifelse } bind def /LB { discardSave dup null ne { restore } { pop clipForward? { currentdict end end begin /clipForward? false ddef } if } ifelse } bind def /Pb { pop pop 0 (%AI5_EndPalette) discard } bind def /Np { 0 (%AI5_End_NonPrinting--) discard } bind def /Ln /pop load def /Ap /pop load def /Ar { 72 exch div 0 dtransform dup mul exch dup mul add sqrt dup 1 lt { pop 1 } if setflat } def /Mb { q } def /Md { } def /MB { Q } def /nc 4 dict def nc begin /setgray { pop } bind def /setcmykcolor { 4 npop } bind def /setrgbcolor { 3 npop } bind def /setcustomcolor { 2 npop } bind def currentdict readonly pop end end setpacking %%EndResource %%BeginResource: procset Adobe_pattern_AI5 1.1 0 %%Title: (Adobe Illustrator (R) Version 5.0 Pattern Operators) %%Version: 1.1 0 %%CreationDate: (03/26/93) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_Illustrator_AI5 known not { userdict /Adobe_Illustrator_AI5 95 dict put } if userdict /Adobe_Illustrator_AI5 get begin /@ { } def /& { } def /dp { dup null eq { pop _dp 0 ne { 0 1 _dp 1 sub _dl mod { _da exch get 3 get } for _dp 1 sub _dl mod 1 add packedarray _da 0 get aload pop 8 -1 roll 5 -1 roll pop 4 1 roll definepattern pop } if } { _dp 0 ne _dp _dl mod 0 eq and { null dp } if 7 packedarray _da exch _dp _dl mod exch put _dp _dl mod _da 0 get 4 get 2 packedarray /_dp _dp 1 add def } ifelse } def /E { _ed begin dup 0 get type /arraytype ne { 0 { dup 1 add index type /arraytype eq { 1 add } { exit } ifelse } loop array astore } if /_dd exch def /_ury exch def /_urx exch def /_lly exch def /_llx exch def /_n exch def /_y 0 def /_dl 4 def /_dp 0 def /_da _dl array def 0 1 _dd length 1 sub { /_d exch _dd exch get def 0 2 _d length 2 sub { /_x exch def /_c false def /_r _d _x 1 add get cvlit def _r _ ne { _urx _llx sub _ury _lly sub [ 1 0 0 1 0 0 ] [ /save cvx _llx neg _lly neg /translate cvx _c { nc /begin cvx } if _r dup type /stringtype eq { cvx } { { exec } /forall cvx } ifelse _c { /end cvx } if /restore cvx ] cvx /_fn 12 _n length add string def _y _fn cvs pop /_y _y 1 add def _fn 12 _n putinterval _fn _c false dp _d exch _x 1 add exch put } if } for } for null dp _n _dd /_pd end xput } def /fc { _fm dup concatmatrix pop } def /p { /_fm exch ddef 9 -2 roll _pm translate fc 7 -2 roll _pm scale fc 5 -1 roll _pm rotate fc 4 -2 roll exch 0 ne { dup _pm rotate fc 1 -1 _pm scale fc neg _pm rotate fc } { pop } ifelse dup _pm rotate fc exch dup sin exch cos div 1 0 0 1 0 6 2 roll _pm astore fc neg _pm rotate fc _pd exch get /_fdd exch ddef /_pf { save /_doClip 0 ddef 0 1 _fdd length 1 sub { /_fd exch _fdd exch get ddef _fd 0 2 _fd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _fc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _fm patternfill } { pop fill } ifelse grestore pop } for pop } for restore newpath } ddef /_psf { save /_doClip 0 ddef 0 1 _fdd length 1 sub { /_fd exch _fdd exch get ddef _fd 0 2 _fd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _fc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _fm 9 copy 6 npop patternashow } { pop 6 copy 3 npop hvashow } ifelse grestore pop } for pop } for restore sw rmoveto } ddef /_pjsf { save /_doClip 0 ddef 0 1 _fdd length 1 sub { /_fd exch _fdd exch get ddef _fd 0 2 _fd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _fc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _fm 12 copy 6 npop patternawidthshow } { pop 9 copy 3 npop hvawidthshow } ifelse grestore pop } for pop } for restore swj rmoveto } ddef /_lp /none ddef } def /sc { _sm dup concatmatrix pop } def /P { /_sm exch ddef 9 -2 roll _pm translate sc 7 -2 roll _pm scale sc 5 -1 roll _pm rotate sc 4 -2 roll exch 0 ne { dup _pm rotate sc 1 -1 _pm scale sc neg _pm rotate sc } { pop } ifelse dup _pm rotate sc exch dup sin exch cos div 1 0 0 1 0 6 2 roll _pm astore sc neg _pm rotate sc _pd exch get /_sdd exch ddef /_ps { save /_doClip 0 ddef 0 1 _sdd length 1 sub { /_sd exch _sdd exch get ddef _sd 0 2 _sd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _sc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _sm patternstroke } { pop stroke } ifelse grestore pop } for pop } for restore newpath } ddef /_pss { save /_doClip 0 ddef 0 1 _sdd length 1 sub { /_sd exch _sdd exch get ddef _sd 0 2 _sd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _sc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _sm 10 copy 6 npop patternashowstroke } { pop 7 copy 3 npop ss } ifelse grestore pop } for pop } for restore pop sw rmoveto } ddef /_pjss { save /_doClip 0 ddef 0 1 _sdd length 1 sub { /_sd exch _sdd exch get ddef _sd 0 2 _sd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _sc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _sm 13 copy 6 npop patternawidthshowstroke } { pop 10 copy 3 npop jss } ifelse grestore pop } for pop } for restore pop swj rmoveto } ddef /_lp /none ddef } def end userdict /Adobe_pattern_AI5 18 dict dup begin put /initialize { /definepattern where { pop pop pop } { begin begin Adobe_pattern_AI5 begin Adobe_pattern_AI5 { dup xcheck { bind } if pop pop } forall mark cachestatus 7 1 roll pop pop pop pop exch pop exch { { 10000 add dup 2 index gt { exit } if dup setcachelimit } loop } stopped cleartomark end end end Adobe_pattern_AI5 begin } ifelse } def /terminate { currentdict Adobe_pattern_AI5 eq { end } if } def errordict /nocurrentpoint { pop stop } put errordict /invalidaccess { pop stop } put /patternencoding 256 array def 0 1 255 { patternencoding exch ( ) 2 copy exch 0 exch put cvn put } for /definepattern { 17 dict begin /uniform exch def /cache exch def /key exch def /procarray exch def /mtx exch matrix invertmatrix def /height exch def /width exch def /ctm matrix currentmatrix def /ptm matrix def /str 32 string def /slice 9 dict def slice /s 1 put slice /q 256 procarray length div sqrt floor cvi put slice /b 0 put /FontBBox [ 0 0 0 0 ] def /FontMatrix mtx matrix copy def /Encoding patternencoding def /FontType 3 def /BuildChar { exch begin /setstrokeadjust where {pop true setstrokeadjust} if slice begin dup q dup mul mod s idiv /i exch def dup q dup mul mod s mod /j exch def q dup mul idiv procarray exch get /xl j width s div mul def /xg j 1 add width s div mul def /yl i height s div mul def /yg i 1 add height s div mul def uniform { 1 1 } { width 0 dtransform dup mul exch dup mul add sqrt dup 1 add exch div 0 height dtransform dup mul exch dup mul add sqrt dup 1 add exch div } ifelse width 0 cache { xl 4 index mul yl 4 index mul xg 6 index mul yg 6 index mul setcachedevice } { setcharwidth } ifelse gsave scale newpath xl yl moveto xg yl lineto xg yg lineto xl yg lineto closepath clip newpath end end exec grestore } def key currentdict definefont end } def /patterncachesize { gsave newpath 0 0 moveto width 0 lineto width height lineto 0 height lineto closepath patternmatrix setmatrix pathbbox exch ceiling 4 -1 roll floor sub 3 1 roll ceiling exch floor sub mul 1 add grestore } def /patterncachelimit { cachestatus 7 1 roll 6 npop 8 mul } def /patternpath { exch dup begin setfont ctm setmatrix concat slice exch /b exch slice /q get dup mul mul put FontMatrix concat uniform { width 0 dtransform round width div exch round width div exch 0 height dtransform round height div exch height div exch 0 0 transform round exch round exch ptm astore setmatrix } { ptm currentmatrix pop } ifelse { currentpoint } stopped not { 2 npop pathbbox true 4 index 3 index eq 4 index 3 index eq and { pop false { { 2 npop } { 3 npop true } { 7 npop true } { pop true } pathforall } stopped { 5 npop true } if } if { height div ceiling height mul 4 1 roll width div ceiling width mul 4 1 roll height div floor height mul 4 1 roll width div floor width mul 4 1 roll 2 index sub height div ceiling cvi exch 3 index sub width div ceiling cvi exch 4 2 roll moveto FontMatrix mtx invertmatrix dup dup 4 get exch 5 get rmoveto ptm ptm concatmatrix pop slice /s patterncachesize patterncachelimit div ceiling sqrt ceiling cvi dup slice /q get gt { pop slice /q get } if put 0 1 slice /s get dup mul 1 sub { slice /b get add gsave 0 1 str length 1 sub { str exch 2 index put } for pop dup { gsave ptm setmatrix 1 index str length idiv { str show } repeat 1 index str length mod str exch 0 exch getinterval show grestore 0 height rmoveto } repeat grestore } for 2 npop } { 4 npop } ifelse } if end } def /patternclip { _eo {eoclip} {clip} ifelse } def /patternstrokepath { strokepath } def /patternmatrix matrix def /patternfill { dup type /dicttype eq { Adobe_pattern_AI5 /patternmatrix get } if gsave patternclip Adobe_pattern_AI5 /patternpath get exec grestore newpath } def /patternstroke { dup type /dicttype eq { Adobe_pattern_AI5 /patternmatrix get } if gsave patternstrokepath true { { { newpath moveto } { lineto } { curveto } { closepath 3 copy Adobe_pattern_AI5 /patternfill get exec } pathforall 3 npop } stopped { 5 npop patternclip Adobe_pattern_AI5 /patternfill get exec } if } { patternclip Adobe_pattern_AI5 /patternfill get exec } ifelse grestore newpath } def /vpatternawidthshow { 6 1 roll /_hvay exch ddef /_hvax exch ddef /_hvwb exch ddef /_hvcy exch ddef /_hvcx exch ddef { dup cstring dup length 1 eq _charorientation 1 eq and { -90 rotate currentpoint _fontRotateAdjust add moveto gsave false charpath currentpoint 5 index 5 index 5 index Adobe_pattern_AI5 /patternfill get exec grestore _fontRotateAdjust sub moveto _hvwb eq { _hvcx _hvcy rmoveto } if _hvax _hvay rmoveto 90 rotate } { currentpoint _fontHeight sub _hvax sub 3 index _hvwb eq { _hvcx sub } if currentpoint exch 4 index stringwidth pop 2 div sub exch _fontAscent sub moveto gsave 2 index false charpath 6 index 6 index 6 index Adobe_pattern_AI5 /patternfill get exec grestore newpath moveto pop pop } ifelse } cforall 3 npop } def /hpatternawidthshow { { dup cstring exch gsave 3 index eq { 5 index 5 index rmoveto } if false charpath currentpoint 9 index 9 index 9 index Adobe_pattern_AI5 /patternfill get exec grestore newpath moveto 2 copy rmoveto } cforall 8 npop } def /patternashow { 0 0 0 6 3 roll patternawidthshow } def /patternawidthshow { 6 index type /dicttype eq { Adobe_pattern_AI5 /patternmatrix get 7 1 roll } if _lineorientation 0 eq { hpatternawidthshow } { vpatternawidthshow } ifelse } def /vpatternawidthshowstroke { 7 1 roll 6 1 roll /_hvay exch ddef /_hvax exch ddef /_hvwb exch ddef /_hvcy exch ddef /_hvcx exch ddef { dup cstring dup length 1 eq _charorientation 1 eq and { -90 rotate currentpoint _fontRotateAdjust add moveto gsave false charpath currentpoint 3 index setmatrix 6 index 6 index 6 index Adobe_pattern_AI5 /patternstroke get exec grestore _fontRotateAdjust sub moveto _hvwb eq { _hvcx _hvcy rmoveto } if _hvax _hvay rmoveto 90 rotate } { currentpoint _fontHeight sub _hvax sub 3 index _hvwb eq { _hvcx sub } if currentpoint exch 4 index stringwidth pop 2 div sub exch _fontAscent sub moveto gsave 2 index false charpath 4 index setmatrix 7 index 7 index 7 index Adobe_pattern_AI5 /patternstroke get exec grestore newpath moveto pop pop } ifelse } cforall 4 npop } def /hpatternawidthshowstroke { 7 1 roll { dup cstring exch gsave 3 index eq { 5 index 5 index rmoveto } if false charpath currentpoint 7 index setmatrix 10 index 10 index 10 index Adobe_pattern_AI5 /patternstroke get exec grestore newpath moveto 2 copy rmoveto } cforall 9 npop } def /patternashowstroke { 0 0 0 7 3 roll patternawidthshowstroke } def /patternawidthshowstroke { 7 index type /dicttype eq { patternmatrix /patternmatrix get 8 1 roll } if _lineorientation 0 eq { hpatternawidthshowstroke } { vpatternawidthshowstroke } ifelse } def end setpacking %%EndResource %%BeginResource: procset Adobe_cshow 2.0 8 %%Title: (Writing System Operators) %%Version: 2.0 8 %%CreationDate: (1/23/89) () %%Copyright: ((C) 1992-1996 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_cshow 14 dict dup begin put /initialize { Adobe_cshow begin Adobe_cshow { dup xcheck { bind } if pop pop } forall end Adobe_cshow begin } def /terminate { currentdict Adobe_cshow eq { end } if } def /cforall { /_lobyte 0 ddef /_hibyte 0 ddef /_cproc exch ddef /_cscript currentfont /FontScript known { currentfont /FontScript get } { -1 } ifelse ddef { /_lobyte exch ddef _hibyte 0 eq _cscript 1 eq _lobyte 129 ge _lobyte 159 le and _lobyte 224 ge _lobyte 252 le and or and _cscript 2 eq _lobyte 161 ge _lobyte 254 le and and _cscript 3 eq _lobyte 161 ge _lobyte 254 le and and _cscript 25 eq _lobyte 161 ge _lobyte 254 le and and _cscript -1 eq or or or or and { /_hibyte _lobyte ddef } { _hibyte 256 mul _lobyte add _cproc /_hibyte 0 ddef } ifelse } forall } def /cstring { dup 256 lt { (s) dup 0 4 3 roll put } { dup 256 idiv exch 256 mod (hl) dup dup 0 6 5 roll put 1 4 3 roll put } ifelse } def /clength { 0 exch { 256 lt { 1 } { 2 } ifelse add } cforall } def /hawidthshow { { dup cstring show _hvax _hvay rmoveto _hvwb eq { _hvcx _hvcy rmoveto } if } cforall } def /vawidthshow { { dup 255 le _charorientation 1 eq and { -90 rotate 0 _fontRotateAdjust rmoveto cstring _hvcx _hvcy _hvwb _hvax _hvay 6 -1 roll awidthshow 0 _fontRotateAdjust neg rmoveto 90 rotate } { currentpoint _fontHeight sub exch _hvay sub exch _hvax sub 2 index _hvwb eq { exch _hvcy sub exch _hvcx sub } if 3 2 roll cstring dup stringwidth pop 2 div neg _fontAscent neg rmoveto show moveto } ifelse } cforall } def /hvawidthshow { 6 1 roll /_hvay exch ddef /_hvax exch ddef /_hvwb exch ddef /_hvcy exch ddef /_hvcx exch ddef _lineorientation 0 eq { hawidthshow } { vawidthshow } ifelse } def /hvwidthshow { 0 0 3 -1 roll hvawidthshow } def /hvashow { 0 0 0 6 -3 roll hvawidthshow } def /hvshow { 0 0 0 0 0 6 -1 roll hvawidthshow } def currentdict readonly pop end setpacking %%EndResource %%EndProlog %%BeginSetup userdict /_useSmoothShade true put Adobe_level2_AI5 /initialize get exec Adobe_cshow /initialize get exec Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 Adobe_typography_AI5 /initialize get exec Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 AGM_Gradient /initializeAI get exec Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 Adobe_pattern_AI5 /initialize get exec Adobe_ColorImage_AI6 /initialize get exec Adobe_Illustrator_AI5 /initialize get exec %AI3_BeginRider currentpacking true setpacking %%BeginFont: Myriad-Roman %!PS-AdobeFont-1.0: Myriad-Roman 001.000 %%CreationDate: Mon Jul 25 16:15:04 1994 %%VMusage: 28005 34897 %% Myriad is a trademark of Adobe Systems Incorporated may be registered in %% certain jurisdictions. 11 dict begin /FontInfo 10 dict dup begin /version (001.000) readonly def /Notice (Copyright (c) 1992, 1994 Adobe Systems Incorporated. All Rights Reserved.Myriad is a trademark of Adobe Systems Incorporated may be registered in certain jurisdictions.) readonly def /FullName (Myriad Roman) readonly def /FamilyName (Myriad) readonly def /Weight (Regular) readonly def /isFixedPitch false def /ItalicAngle 0 def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /FontName /Myriad-Roman def /Encoding StandardEncoding def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /UniqueID 41987 def /FontBBox{-46 -250 1126 831}readonly def currentdict end currentfile eexec fcecc98c2aefb25089edad915372f7632807d0d80113c0fbda4614dda7560bffacbeaa4f371815c991f0682cbc45f51895a8e6fc33b63b87db33f2f141b34c80b26ba7d9f30c5d0811a31c14ca6d1250d33478395ee2096ad1b742ed78b95145f606e652e4d2bd83f4cf7d67cdca3268c1d165c3cf471a6094892362712d5e 19b5084335eaca009edef0af8bc976eadf7c336b76887cf63653a555e0538ab47d8bf6a8c45725720630bc185740fdab20647654dd2e6d2db3254e482024a1dd45e865357b140bacb98f0a8066087af1076333e21e51e77d70bad81d05e6b7e6f4d3a88423efbdf6eb3b9d4ca66e9ad97e0bde315f13542863a4a6b71a9c35 60eaea09bb5a75ea3eaf84bfd6a5549a045e20540ac787976353c114cca7c97ce57501589cc846a1320ba2c618644bd7ead0f736873e8d07e7f550df45b51deefee29c13aa19896638a8f580a26665a8d50511d6a0a1d8822fe99e3d82a19244ed668b2d510ea6ef05c17002e01d0a4c4154288c2156ae5fba08cfb2394c78 221f1b67ca0c6dd8bc930eb9cd6d5b77619e5cfb0e19da187d81124f0793bc0eac6aff145fd8deb6b9100aad8798983107b205f36eb8f7c6b46c6149ccda404549845c5177d0b318b4e621f7c02260faf5e4af8463b776c5b12e6fb1d6735ef91f91d9132268c0c67f18915d0807f99694d4ae8c6d9d495b000604d311a9b9 6d2520458341a4efa4fa686e80300f18d6681a99a5c3eaeb4767306554865d708a58419b05c24200c59454847988d50b7abbe83a2756cc5781be5b71c28318750549b21f7ce539909e8425c5c38a4a24cad2cb70396b88777346c838c7c8ae27833df843db788ca8a3f0594707a2e54f427a416d3e07d838039d5edc835b68 ea0aac86f3bd470b37f7ba7c53045a8460d1e7a3175fc90d877ed022ba3f45622569455e31a3d1dc8261541bcd25c8b52845ce4a9dc2e3eedadbcbca781989cf5c51284a4e74b7c0d163c25a608196e89ca4e3444395562311d405ab1707e3dbcba475c61e3774137432519b9e0384112c5da682e59ed4c7e1db1ee381d8fe a4ced481f9823b96b719e51b5f059d26949588d5d33c4149ac36cfcac4ca83210c06b15377d9911bca684f27ab16f18ba374261a00514f0ff70163c0d5c41093cc02725b828f004cd04c5297bfc77d3185475d17569f430472d6d67aed94ebcf0b9808ed4489c233e69eb9139561dd741605b62511aaa09a44fc841851ccd7 80f15c71bdea5386f1bdcc7e30fc4b07b461f21bab5fc313d3424519359f17a4f5f44332ebc0bc269892cb1d91a414817b152a77192c21a0501b586a667f3a5352940ca13f840f5377f30c60b6740ff7fa07964332c76def2b8925245fab5de0ae53a0226fab8218c703a4bbc6733de7a68114d6048f85e7ba1aa4f3b044fa 052182ccc1b98e9a33ee688bcc29d195ee42d78d814b058abcf57d8970241d14c21f66107ae839a4b3a8ba06f6300d6b1199f3c255140776c5e1b9db2cfe374926e90bfa7ed45dc371ea7a3a9715347b17c9cf2ce89fbd64f7a932146cf5f766a702936791071ce8d01c7c36f77c1796da835f45b43ffef471feac9f548c39 ee0d15805da6381d46062e084c3aca65b9abd3aa4636bdee45cb6ae316302385bfe24279f27d9017d98233d0839a17c34c40a140b9ebb38bece8bb0ea78b602573d457bcba967cba9191fc3e689c2204f798b8ce4785d908a20a8b7af26a59da060b181c1375745de477c32b46e059157e1bff21058709f5ed1e8a561505f0 ed7fbe0212099e9dbe1c02412f63eb6274f62db5075d74c2aad39a2305a52c4267fefc948faeb4afa2de78ec35e2cb02f212e5f772ccb07ca14636535ca1330c44afb15689daca6808c32592bab5c1427f87572983d82ca79707177e7d2799df80faeb622efdd1afcfdf20dc7a6c18d0f3ac98e9cabe609d0ddd71ff2cf57d 438e3caf3933449994fa51703c49ccbe30982ad2ac4e09f1e10dc393eca013bab3de6205e7c78ebbdc19f8d30d6087acc505ef874f28f299993aa81f21bdc769e0d238dfc42057eb50fdf73b9a637425fbb2e79876941d51720e5cd95e42ee0d8d0c3c2460272508530ecdb2a086f11fa43560f6dbe830f455b26684f6927c b653a092af8c202f39c31cccd2f0ac5de6d5b03b66e97872e4eae9451a3162514a6a7b4e6f55d1742b3fd1cbcf8b0f75ec005244759bd68e7781459a2519d59b16f9c88d4cd4fb37d6ba5fa740ddfb7dbccf5a6a95f7c4c7d1e62ca9ab6cc08dfd08ca2f1aa9dd44012de2be0b26c222d43eeb3f987a396e498f028ddc3528 dd3d956a9e14e6776c4ca5ae0dbad3227b1dc293df5a68679fcf7463b0f5107469f31f688e241e4058437bcaa3debe0a522a797088521405d8e5ca15c23d77701e441d10b92c5a6e0f731d6073e328f89051625b4f788222062ffcccb5ad208805c17b28e97167510b891b65b6f3583fd60945081fbfe0e78f317947230517 545be57c398e2a60f51c622473fcb3fdd659a5cf4c6d8f2337bc3cd617d3aa6d080d4247a7d78c7b1963ad2ac7e0924e29f5184dd1082e58b0e8218c7b390d07412a2cc18239a8ed7414f9372375ad6d546aa06c9735867665cea3619b0912399adb32995b6dff08ce7ccff0320ed318a5a609259895d00948876707bc9631 c4c5fe755c4c884b09f3f7e6694ad188dd3a7d61d1ebe85c61eb3067c7a12ac3719b1f1f9d099fdb0a6b118fdddb67ed0107415894e427c5f5895f5258dbbb6395504d93f9012d76ecd59ba1f134430c92e944cdac08f57a19341161acd1d7ded4b4aae204bdb10f9fc3684a47a4958f815bb544e6abf7f9bd2afe96e2dd7e eef096bb1654faa5c80fc2c66d09968a1238b9671bc6d96fcdd6aa2a402d0fa9db18650556a2ae8c44550a03d98cfc02730d8cf948f1a84e3a0edf4c209cdadef9d780e408d8d161965249e48856cf33de593276b50e82abe13b81ee3d67bef7eea9562563238d539b3a256dfaa10c4867bb48c67795a15160d54973d84a49 19fb5855b5f11e5e51a64ee190a25b3beb482c07e61b8663c3d79f4b3a2f5b8c749d3603e6eadab1e89fb73c426f12cc026791ac66fd1dd83ad47eaa9a9aa23f304ea10e6862f4fb0d41d676f7a42f5512f3b8098c8b6fe7c50dd0af3222c8b4b00aa57199354998ab52ac54d30d17b24e22306b74744c42b434eaebddbf8d 1d3d3f1504d6caab0446b8ffa56ccecc8ec9976d19d0d9b6a6e0ea7e44c6fdb29f0b50ae017aa453deb992db2ae3087b78beaf7211b00200c65089f5ed726d4251dd284d22fa28e28fbe0f1b064723d3196af84cb1644e39f61fbfbdde02cbf70465789380e1912b7d3cc8118428ed9af4f633790b4d219f09c13c3e8f3f73 9def2f967c7bfeecd25daf9b5a747eb281d2535b31c7dc99e34ee537a478ecc8174c6a3a1ed0c2c74b871493599be9a2ecccee1136fc7eaaa6f30758b607700faa7d19b586fa6aa4dc5a813ac33fc3e28d226b6665dac7de35a014f89a31195a416833e9a13123be1ae1518effefc0523499f54377362bbcf9d91650d6d283 e1bc19a5f2e53e5e1973c406bc3b4878d4a4b8278b878d9bce540ca936d369af2d1c31850d5abd466083845e1479b51d368df23c5243c131db75853e962c66db13f8ffc95affaf6336abce1cd0a699e733aa64b29ebe04915471de4d165e4d85573ec24ff0e09bd7ea8cba8169299eeabfdbdff58bb12460e20b9145b67872 484d911af649e1d39fb9a44aeba926f3a83dd87202020f674613001107a5d1f184b9ed1c1f8eb24a32f41defee4874b4ecf3d9897c00c2a859ba745e11304823f59c0aea5bfa21081b2eafad4c4c94ef891ce7c97f388ff1753e1d53d485e9d5b18e333f9436572eced77d9197c3deee53a26dea76f0a738aa979f4f2a358b 725eb5b2321e717ff9bec75804606fd0489a36852ff5474df878831431a0257d2b6909e5b954afc9a49dab3aca5b02e02e3565e762d240542917fc4cc781bceab43f7c53950ad992e596582bf87ee042f4bc7f9e91ea20ba6561019e184a34c8a5e17d7912edc431fcea320c7066afc23bdb5f64c3606b11b1fe9e810a9c82 2e60bb187be38c7b87b35539048b8a507233a86f6b8b363656eaca0f8de48f3cdfba3616a743c579a7ef6b922d2d282b1c77cbda888177ba7037513b64d21a8a6a09ffc1e3d46769ae279e68799e520a412ff61d952aa3b552159e3814c8f185731c7269bb375c1a1e266dd2f73c7708635c2ed5a52d362c124a76c92410dd 3f00f21fe81977c80051eb8bf67997efcafb1593ca9307301c2ecf27c08b568e404d1d1414dc2220d73c6a352a2624c916ada967c3d189a1b893d41139c948b04d6f808452fcfde55603527e598a6590ed920be0d75cfe65e105bfee9cddaa6fc9934c42f611ae55681be92fc300e7249af0d7f863e2b69ce5bd4ea2ceab04 8dbf1548639ced835beca4cb4da0fd79e7936a451691f23c1859231f2bd61d239a352d33e063142ef8844b777e28eef2f286bdf4ea7326ea3ac9719a4cdb181640727493a2b94b7a9df5cf6844064558c63f27a72892b19812828d32c8c76a52636f16fce7c04a3a38c78abe0179e533746e1e1c8ac3e3bbe106ba78b05e6a 27f6fa044cf6281acfc616fbd096d15b607b86a61644947c5caf286f43223ecd23873e67c555f614759a4ae0bc8b78c136a1b050e79c682e1545e2d3c018b7321e63ab4f61f7173fc172d563a90b072b2fab9bf4d184650c1b6fbb6b14cc43c354fb4dd10fe294f9e7e2d1ad12e49f517775962e6edb08dc6fd08e554d014f 57bd2707948f910e79946e5992a7152893e562c4adef8b17f8e9c642e0cba85fd3998de2336908f3bc7d6f1c7af67020d5398b4356837e256fab4d507221db4772022b13022e02f3c72f91fe55758a990143fb641fc74b8968bd9c66c9829a7ec6898d0216d33aec6ce97e6d408712b81130fced7a2f83078a2a25fb6ccf74 ee3a76ef72a4eb35cda2e35aef2d203fc37d2d5497725c5491fc2029f90f19973512c8ca94e560780075b41f8cd42aa5a2b43261a0008201f4fdbf34b768f0e033692725bd196ab644a5c4680102d5b665b7061097844c1a663bbf1be878a2991c98fecc4b67508d7fe91b50c0aa373b02a19040bf72e6dd84a54dd0385f35 4af7b9288f434a80e79982107b31272e902cdd8d5306da0d306bb9ed2986d3498373442927a5c774769daf503c30616f24001cb17caf8d14d426c9d768b2ced9286ff6b0d1a932056e25aed939e893f4d9dbbbcb5f9817c6d0b0c469f1a9f6e2af3c5046808dc130e18673ae7bb5ee973229bbcd78a193e0360c9d4729bc92 933a65866eaa926fd9d7031ff212f3c770dff6740640dadc6238d1fa2b44e979edf743f2ce2227491776ea376dd1f833d7d4099cc8914e92decda2cb2bc9c82987ddad25097e7db47c4c4237f879085866856c68079bb837c87af84429bee7052a7e4e1a609a235501ea40c921bd5ce7050bbfa2c8cabd184c109d14d9e359 5603efbbd39715fa6959290eddd302be9417190a47c8d1e6d7b05bbe50bdaab53d8164413d28c2f2b684640f5cc8768e564023892b9f573b37ed8b4a49a82de14b097ee47c0edd61a0694820cee6afb2b9b836a06a420833976dbc30f081cb44876ce406261794ba472afa4e42a57784052f19cf1e9d46605044235ee32394 9e6d09c83b087fcd55dcd7245b717f09b5b584fe9fcc06ea9f785b790f5efefc8fe8bdf26e1ace1c05033c4dae7d271738159ed7d8da8145da39d7a73c7b54424c52424a60746a738fd4ff0c4af80ee7976790c7d4af15d1bd9dff8b21e21ea965feeca5c241be2b5b8ef1715596e3a5492ee5f67fba7f2532513ec40dd18b 03656b3f75c5d8515c1d14d385043418ea8d34b54e19e68264ff8c3d3c94bb9e41a47e2689ff90ab1c8eebc4ef16753017766cfaa4b583e48f8f6649eeb4aaaf7ccf549f2bccd421c7ec43d0a3e58f5fcf41da55255c38dcafbab0550fd7bcc7988a49d4efa19e96f83460cf1078dce4574b6feace55e587282addad042a77 7ad11b356ffd95af1cdd79982839a3d9835c78cadde2b7911fa4b9d3d8fef1736cc4e946942f887b023118f9d510c391b54d26728d7a2ecc75fdbc3183671c97d0139691723f07096829c8d3b74e0ca32b5b1ba45d2d429f2b3c1f7408bbadf1109e6aad96a464dc16bdfeefa0b15286ade98d69ba0f664f19c2abf7b5947c 9db71aebb11ffa9d0471db01dfa4849a90ddcb5cdc833984c119a66b5cf4b43b193a4d061a9f8b95cda62837c2c6b54f8de5bdaf9e20bb2c31cae1e23ec3fab581ffcd25915fd2a54b61f5d316a3443a2d417f65f4b9baea2309f1b7d610c5c412048be7e47ef4e48dd21b3b1627e06d530b07f5bb21723b26f51d1a2646c8 834a6f5ec1e736dead4ad042a09bb6c117fad1a3605e77ce6204aab04610a3af8efcf6f015bc26a6a937b0bf790e751a5829112b26122059ccd4972fd902f44b7efd3abf42a8b837aa1c36b6e38ce39bac31d6e187b24809f2f65aea0f98f8bbe1c28d2e27852d80a307c3878a481f0a3c1850d92d7f68fdfaaf22f87b79c8 73cf9b85ff3de77c2d479d996533689c53374262a28a5e2b27d375490ca2ceaa6e5f6c1ad2a4b044591c243dadf5a7f04788cb4138f263710cb535d5d1d3bdcc58a2cc2b978000aabb4d82de04523952b02232b5686034641dab18ef3c9fb8fb72e32361d62679fc0b79b638df933f2683650c9129f349952ffa0339f30bb0 efb733ec3c0592417801dee756fcf0e0cafcbaf192a31ae4bd2c5a450d578364446aaeb6e6dc70d633b4aa814ca0dd22b134eaac110f8e97830c71a7668a6af257b1920e45b49e407e0e4edc260d5efd2e5af984a24a292474ddb97859dd52f0777df04a38fa8162484a0bb509326a2c69557053f667a718e74f6961923b77 d0bf2e78f70c0c054080dc950a656d7f66a191f36b9fdc39d1ca58bbb7775eb6a74dc7cc5aeecad4d5be08ced461a2df18c79e93a79eaa9a30e75c5430c4dcbd3c0df71184dffdc78aa6163611ec6415c3e75919bf9f61d1a48b1c8c1d694236703e7f512cd94b48f05b231de1b00077a2c764b2ded73c07c12c5f4f1e5cca 80cd905364cede8535d12b83677f886644aee1e500deb52302d9eab6b8da7040b0e38cc8691a201b970bef3a61affc8016e345c9295f60cf8496d39021e1c8998b83cc0d5ba59ce7d0d39537dd4aca4d8709f2687ec57e82f8cfbc8ed01efa020d27dc30da72995a7f1ef26aeb85dd1cbe5565d38d407bee29356516615c12 d451f2792018fb7fd733841c6844ac937f0100235c70b4e0cad08b1e0eb2559972df3a06d387cb172876c7c886af2fe8997ec131ec9d5f0054d10a6da33de7cefc93d28625fd0b31c0c51d87a07e3ff150cbed0aa53658e3d5ca68a9dbad920f3fbeb7a669fa44287d41f43e70239748e7b86cd7f56d8747c942e91f031216 9f13b0d6a0b48e156772b09198024c4899334e9bac261eb9d2a12baf043beb9146c0f317684ed59f5102e168c8ebc1457a426f761bbd0ae6732de783d77b1ede35edac6c9c806cdaec4d2d1f2b0e0989c92c63de9406ed690199a3a6c92eaf35328ece2afe2259e98da23976049eeeb8904715e0c30ddc9f83cf9e9330d57c 375a91df767405b685faffd062575fa32d28b488bb21a9e9dd64146c5302385c01b3b32fc557d731a7365d556c229e02dbeee87f16190ee17b1d6610e49ba9ce2da2790646a0f4135fb1c7d4050a58668704ce08a45454f6272d38412e43fbd141a5a2fae3d78267bbef02b79ff6052307c55c0c08e0dfb447be19944306be f250e552d87bdf34b06d7b9f5e15633b1a7c9a1c4ad5ae03d603f596a0f84a65c09c6bffa6284b6eac429799ac6e834ff8b2c749e04049b8c28c81966af8d9f8dc3b872a86754ee4fc2a6dc78b3d7ec8eedf585d54bbf8548314e65465ea1fe463f4788a7d26701b77c35e4f4ecbc8dfd5645313cba4ae9fd8708776104aa9 53c5ced171062cd919bf5430506de264b09359bb0d32c59484f369e05e402c86f9872c35a43aacfdede6619e16c206fc306e65b89f96ce9c591c64936d58ff343922e0650acbe34dce279d3f31dea0e7b467fef530816ca58264eaa8bf46576dc6a4c466d7603d033ff17b8a634ace8d0c12d742d1bceb2423b4802a5d9146 10e5f54c5bf9330950b24668f0727faab92b8da23923caba71b9d519c1df5867ec5696796d5c800cbd7dca45a3ee712087f07cb8320474783a2e8a89ce3bc5dc0fe83ec18c1d75695a0d13688ee8f59c7a6855ba80f4c8faf1051fa9511cdfd5bac786bd7226eef6c10aac0982fdd596934c2acceb044927b1f8b47eb0a730 eaba241abaddaecc1f565084df13ba16f70435a947b40cba85c8ff103d65829575a95b844709ea6c7cefa992e9984179ae4aee2b20ac658e4c45ac5c0d4109c7087545bb7ebd0856ba283e122286dea2f7e7a6de5e1974ca5c3ab3f3b36a3f1065f9fc6dd3c80c419762bcbfde2f2368b6714dc2d972ce96cd0001b5069df7 612f079f06115d0513916db8e31005001f81e7e45c8f9cf7376fb1073280aac3a28374f346c30d069e5e3227169b77be94de1fae88bd533a12fdd8b723ea665ed68eca303f8f7e67c704a4e754d569381322d18b2736999231b5a9146dd6777fa62fb92a61ddbfb8b5fac877de4d7b7a32f65cfee163e31790354ed262e66d f841b21f5af794026d03973d586cc48ec892fda6ed2195ad5994e179d72b63b3615e1c8b37c5b4a35d5b9114848fa9b256e1aee627d3d2555f6f1155fa56d641701e83e9d0a0dea236ebb1cd06ba5df6b3d180e75f3a5d5bab694b50565f8d94096f007cb435e5012d11d50ff06b11e4627c2a68942b8e22afcf1fda80213a 49609d7f37135d7be8dd9c07a5fe279d02d2a4942ec98ba46a6161f9adc3403b77a2dafe021ba37e0a0ad63dcb1aa6ab490b5d7a716c1ec09de7a9d4d06eaad43b64cfb40c8e834a2467d0ec68d441ee0a9a67d0c4ce2f6e1b973a3b8d35e9c9f21a4885fc671cb022360d426146426ce1b48f7013d98a4c4ba74cbc07468b de59944b07a91b3632b275e02b02b83f3d14678960165159c46a9a1919304814c608b4ddd708168181a5c4d6152eadf5fe8aa5a0ba3a4510dee18ebff1c1e2e222082b38378f7242f1a6635cc2e8dc10b6e8266df9da6d2b001990ad0559dc329f0623bc40925e4c075873ffecda33956174b95e5946dfb89d9c13c9791580 8517aba5b443d75a673d23e23aabe3ce8680a444047f106951bfd2a9c609bc4cade57d8d74872f89b31b98d54e2d382f16a56d8fed0583070443f386d564388495d48def25dcde0139cd2103b993ed7f2f0a42ebeef52e4e536fe0e77d4c7d2dd24979b3bc0dfb0c4fd798dbae91cd584f794eacae55b1693f98c24e807f32 82a17271c022e29e45c07f4a9343c6725466269c0b84c8fb7257630404df5fb9462ac1ca783b3c236d2b71aeea329950a0d596bf473d86eda8250258cff33b85a2d5fd39bb9576350f6da89756b9ad50f14a9209de8a4d5ddb1541c6d892a3c71d4769fb8668779a140fb2f7f3b9118304c403a3670c45bca56946ad2314d0 2345f6e8f6441f3d4fa11dcbdeb0cfde771d98b4a3c229c598c3930dce9bdac57de5c92d51e3dbc43ade500a4a4bc7ae95a377ae8789828660d5ce612b0a3fbd04cb47c8256d8c45cd883898719e04ddf66345d752a0d5807c08b69fe5aec2d62a1b03780c55b2d264f84205261e4042530a9d1cd83648b2f0fc092a1f3dd5 16d6d5ef68bf5959b1808646af474ac98eb91f1aa2a27c29b26cbf398b0543d161d6335ead1357f379e9be619f524416069f4fceb98bc9ae2b90b58bc2ae1cb4d783b961e15ae4914db5bce4b3661fb755d29d8be343c716213f9f08dfc1efe3cb5f8b6ead9f54512c9248798af5e963b56cf72fe0dd4cbd1f2875c2709c3b 5fdcb3a32f653a372373113ed1ad4e63e99dc9650a230b76caa23db7681bc2b8968bb436d734f7c52f7dbb5c407d6c78de709d020a7db6f5d87061e463c61dc847519241d3d83064ad3f4e276f6cd3786a66529acad1869f895ae59cd940b46a533fb77bf2fe875e86cf33dc6d153c486d9c3322b7b4e7534071ad001bcaac d3ecdda204ad751101606c2f8a87e0d78439d82e8ced891ff633f7d47fe7c1d36ea903f635c68d3a43a6ec347a5c3a53217ff9854755efb34b9c2c86b8578a4b433a2e44e326f21d697adc5c78fae3ff19b0974c5a18da8f12dab89d9d496c867036b7184c6ff88779eef5a7f6138cc73ff6c17c243c96883233a17a31dca2 e6dbbd5cfae9ebf98c80f81ca4e4ef04e37fadffab35506d9e406f24ac7904e9f8704ec591c5c117b5a2444952301202c43a62d4782672bab9114b3f340503e3b5211fb545ff86dcde7f2b58acfbb9866a40ae1bd6a6b0254c5830c70762da6ab4eb2bb2ccb1ca03392c6d0cd411f2b8827f7e06b9bf43ea2db210f7fe3c37 02e902a1c8b0cdd52e9d170df67a90b642af92c779570a61d203d40dd619095807cac1786696b28c7ab139150c7abac724fcdb6ce755d5e85a6b55798d41b8ae80d073bc484c694e7b6dba32453d515d5807606d460303b065bf316c06ba6ce5d8fc13ad261028620ae820001c9f5288a3d9669dd2b630d789083eefbbccca d7034813255e0658200d73f2e773934e66c52f2dcb56e4a8051bf67e5018fe7743087410c5bc3a55e8af500f10de3c88a43a18f5f7247652df8b028e4f2cd63ca29e638c11cbe5d479d3a907b17d1b88f5b8e89f1471421b74e3740e76a374d5f5a9fd81078d4d8aa385f5c6069bf62feb6e077c039076baae312feeb68b0f e5929ab8547f064a2de9fd89c82be2ca99d83e8f7e344d9fb3b74111ec9c2ca79ef5430dcf3d07fd591f59a84c679b0b0c0f4245770bfc1b94c985d26a208f1f7386868c1d244f6399a859583db75106dce52efb8b0c4d1e6824cf11b13f6b82cce7256d444801484365b00c3076e1f7d0b913616c5db904f66ecfebac4211 dfe3111e1d1826e3f2fa44e3607b839c14ed218810587b6dd483fdbb3395452eb6243acc612b2bf43289ce69e86c650cd5e5a0f96a265c2617b2d2d6ec2759dc4ae6e32c94978932671c1e0d72aaeae835c447912f66a39925da78528b43d567f9ba003bd952e2de86df8660274919c4c1f2ea9c2967d30d8326a838df881d 35adbe41ac3b1680c0fde52c3f1c1e2d6d568f7822baeeb16e1f2b959dc637e0194e7dfb1cacf3018b39d0d2c5e954a58cfd002cdbf390d1bf281df3eaba5fd82b542d6faaf3664a89523a5d0e95d7fdf91a1999822094b0666a6e91be0eb2236a85e6ec4dc8cb561984eeb99e52ad0dafcad0acfccbfd62af62150c749438 8a77e8ef10a09c5c88c511e5e3d25d0f54e53f100c87810f3a9d50bc6a04368e024c896e2ab00ef625c5754801705b9c8abd0e1d2dbe0d5de2e9c3c2281781ce2f2c917f424ed45168e81e639491e952cd670226059fa5e248f9ba9d8d683d9cb975fc09d8a50c89aa00ea7755eac81a11320cf74eae634cf3866dd1b3673c 9a58c91e9e8b94581f7628d2ae0f97485b590b5f3ebd7c268044ba7f8f9b07fe50989081f1ac50e6ba5d02577601bfea699ac59432de6e125001de032169ddbb10854b0f90f55d3b3a85e461c7944c5ffa1a3250f71f3c535cc142cd16c4fc8c9c1de0761f87cb840136719e63b342011d02486b75bf81997f9e7849bebfa8 71370b7414491cc16f38d5d4eaedc34047d3ee80256aea589585f063d056eb62a6849eb56b488d0d646dc22bed4d316bafb5428d5049bf5400a7a1b69c463a80ee16906eff9beabc7bae61a7edcffdaf1a57fe269155f7a7113bdb3cf70a5c8c8509d8bd1e3c5126ed4e1a4853a25939b01a03673a4275571e6db4dfff36ca 6ea232bff15e576bf012b5a946a81e48bbff414a94db7968a1f0d4bf163873c842cfaaf83554775fbd7428d8286d97fc546e899c88a16bbcd93bcb5b78939539b0cafc14b68344e42c70c182804bc63fb0eb6ef54bb5f316d45155e20beaa7fd4684ce238004cdb5d23adc7c2e618667e88fee3c5d7a1fa67deb9fd654ef75 479056d32a7bddefc6332b1d430b862cbb02757ab5d9eb079e053d509eff800232c195e8e3518cf9e2dd4102f59fa55b2686b0d7d39adf9ac37f55bf9882184293c3a216730d26426986ce6633ec5fa6820fb8243dc46fae0deda0580864045aebc5b25a3747c43bb9d8f7374e4ff01593985121efcdc51dad1fad55f8a750 93859cc5b08f83dfd3bb4990011db4712420c2d941dee159227656e5e54ef1d33320554ab70ec8b70f73ff31f84f50ae38fcfbf4a7957290d21d5232a3e230ca7453125cf6f799ab62312a12ed8444e837a854374b33d43904f5cb9f4163d716fcd8fc025200d4388fcc4075b166273ece9bd55699bfbf1dfb9afb47a17797 75e6ed5648874afac0f5199bb65472bbc0492863a4d2df2b9d7b0c91ad8509382f6eb68b236b8127acf3c37b3b3e2119bfb5766591e152d794b3ebd3f295989836ee729141047139efbc409fc46aaecf32bda5692dd28664b0636f89be326b72b1a79dcec126fafea7150b99df8d57006cc11d29982fb55dd7ce5972da22f8 baff4c43f94f0e4616a2929e3849c8425ae6dc950a626d6137da8985f4692f61b5c37a0640b09e841db4f86ac7fd66d5af3a95259125bae1999d9fa5fb21eeac7926a7f6fc9940b19b0f81c8a94e26e8677decc980c4b7f28016a31153b745eec51a8661266d37a09f9c64255649e64090856cdac677a66647a9ebf427dd1d 222c8150a86b8f7d12ec27b5a119ba6ffc942b0f34623875d640e79535ba6fdc5f9e936549e949ab53323ea863afdff2911a91d1bde89ee15da1a752738a7744e9aba6ecf3ac402fecb52e2851eb82bacbb125c2dfa5f2797ed1b15aa6f5bcbc2686c7c7ee3376b9d7645399cd2fa28a4c7b6d68c043b8241e55a75bd99a23 2109044ebe7796199b97309d62c6b677d78d98e982adde52016d1dd3f232d57f0cf66325dbf2f338a27530d01ddb87865a792c827d7ea48b07f7d35a00a236c87f97ec486f7c1b518969d7498009f8a6ac1dcf052c167697aecbc1e35758694df075f85e5d07a08c2a0c3b0785dd39b31faf36b7902eb150d1b4c0f13af878 605995bddc766dbb1776381eebec65924a450b3965110753df533d38a414c1af4e58825cd6bdb803c4dcb49617811fd9274d0ca8b3a10efc1635fa81b8d4ce892f321d7e5eacf5f26e7c07fe8ff9daf3cc7c33e1df1c3f795bd427a977f5bbe6ae6e001852922ff4a30098c38aa7b9b9b0fc5862dbfeae46295a8da3eebd0f 0c372039bdec907bf3407146b485469fa08fc11c2619360cad71d6dede0f8b49fc7bf3fc6a158252a228ce6930cdfc0fc07d18dc4cdc4cfdc7854bac54e0c2949fe16f2736e9005538bdaad95ff396d3969b6d5a2ad0c99ee9a4a6eb5f548e659a766f69b6395852719629cc135a01c30f55002efcff8091a2477f752c3365 771790d5b7ef5a9bdb5c88096f497563166a3969190db41181098e8dde06b54cbc40842aa08a6947071a49c3d02f4655d49b4fb3a3f164858c15cf813f800c0def66135e1d15edd4314f75949db00b28bcb41428a3e1a58e8edefee9d21774c336323bea90826e7bf07fc0478e5f4a6500660b95379474543ff2d482a68276 f38710ee5407ccc3aaa27d21c28ed3f60879e14723060ac34e91568de52d8f34baf046f2bea349471fd3eaa6cd12e377e37bb7fc103058169df4f595f3ca6b15e343f59437770ccc36ec393debf2defb3ac1846eeb9532e862e0acd98b36605bc535b88a5e5e3b6b6e86f95b8ba093c68bab5fe5588f1c3edfc51e55b512e4 a3f1a61b4cb72ae51494802cabbcdc1fcbee06ee21b64c35045d9fed344fa9facc0a539b5148d7dd255771c76f4892f1a398811404730e7dea2717760943c78ab7975a422507b7e2bcbf2de6bd7756d098942a1e4bf2185f74af7febf2e29062f05deb585f0ef1d57bd10a5eef0e56ff2804ede0576269ce93ad23d2c501e0 4e5644847a026dce845c5f38ec0c155b67bb0df4e672706d08b35c8578485809c06526464e1d7575394386c2b77583fd56851ddf67e0ffafba970256907d069bc545863e2e847e9a52ba27fa0c60838b92b11883363d8aa8bdd4be8edef5f1c074d4a6fb068101805b4318a586a9409664a48a49639d1bb19083e77931ff92 bd724a761b5300ba8332b8412248296f3b89045603988c1162fc0d917f614c6ef84112554f8bae7ae6dc9dc73193c0dfe72d77040c1e632686eb8d87071f3bdb3d2c72c97ef1e8874e657bc36f9ac3551ea37a56827bdc66809d5fcee7cf651e4e65ec1889723f803adb69930eb509d788003c63fb158c764db263778f7152 3ce577e8ae531258b5a33886624205fed4f56e3ef9d3c994298edcd2d59a3633aa63f831e99ee4e20dc4735eb17aeae03e31cf9b35ccb512035bbde359a1d123752fad616a095e2fb1a246755c699e073fd33a77d1e391a765639eacb04a27ec5e70523a296c6f9127aab3b380aaee76af3c9c8ca147a00b860fd235839ebf cb9105dacd64668f62247562457053617ec79486ed91fad906f38147f988b84caedeb9c6acbd6575ce2971053b79bec5c7ddc1c0a05e1e42e6ec0e4dbd180cc00e6b6aa8c458a2fb0787542c674580cf4a70b88f30af08005eb3d4ebebefc88e4af65b3cd9fbf680d770b79e150eebd0a41941e3f01535dee3e8244e4a50a0 0b993973be46564bb69f73c229b60e72aa023826515083bb65a70dfbc8f246320c97a9bcf123765499d116ef7281eeacdd55ff71f0831be417925d9656b545d8e56de71b656342f1b3100e9099dfb4394ee7235e9246e81ed09558555ffae7f7a2cc47ecf963e9ad959d2e2c95bcb4c5bebcf3018d505f697cec50acd2cf6c b43e7b60314d35a2c14b025d66b8a68b1de9ec53f72a00ac8e7010dce365eb9bf8705c92f4f8fddf91d56c4bffbf8f342679bc3059df5df6e919e3443f3597f60189c1f9b1a47cf4266b48f6d8b0cbccf9347682ef3d85651b235b2cbff0db7153bfbc2cf59094c5e682a83cac5d58cab9e2f4e9d30c5bd8c92d5f874131b5 1d273a3b6f57c210291bf0294f0f2016b80871381ae47ec95d63bdb757b28a14e3cc9431747879791ab83e7ee5ecd0d226f7b5f42079633b42f31d007ea2fe4728f353530434eae7f5f03f1ea03ff081768a4dfe815783d44a9662322f0fbf2e21b6ab07c6af457848d49e37783bcf4d4ee852d603eb60cf8b520f5f32deaf 8934badd620d40fc52fe047275fc4468571c084f5910e1f5f88b1e1d50d03f7b13b2579a046c0b0d6f03544a81ef4559e15c740854e95fbc1bcf1e6d2696f12f6b7146c82f77e9ae591c9b9252cefa2d6d534cae5e16621698f441e0463e70705b982fffb7fc23d39469a3b213c3479f5f9263f68c36af3c58fba33bb1c0d9 d2c59e3037c787dc2210548ee9749a42af9d34b470f53eca9f4d614b87df34d5bf4cd5e88c19815d7049c12b2c8a1ac3d6d82503218aa54b71550602ddc6aac54c7558c79650d2a15cad3ebc6a2f9d6288f8b63bb3ae1c83c9f24f8a50b15181ea9fd71fd34bb21c11e668c0ac538bf610156268a779f1a750c6d962788900 504d6a88f8d1457c3d23dff4b7c7dc4ffd29b1ad888377539f41bba722fb39427e94a1a53c1c50d63bde4740097cc6f835226dbb52af3f82bc614d2ab4febbf8b138609e8bb957446d75d5cc9132fbcb193172bf20fdf15bd0276dfb957dcdcd495a9ea845122ad8416372632ea58ee4c98c61ee314873a9cbf6a90a6d9fd3 f0b3d951e7818ca95888142b926b49fe6fe30cd86c176155ef7e078259a8b765b9cb9858ba7af634cd66e5a7194468ef8b9bd22de3e83855760fa9d73d29bfae16352cbe2bf4546d0aa5a303d9b621a637d380b556f7d8b671675626f35a4d814ddc8d636cd80ec82d0587b70923b9cd0be206d6498de7ede78a407f66379f c5a1a21ffcc003671d2966f6d88329e2641be547e9f86d36eae5da176532792f2e78733262956950b59025d82550b217e68a7ca0904708495e1f1a8500b85afb12fdb3441e282ff674b11f10b9d95937f6a5216af24c21bb9e3ead9d36910092c9db7c11be221331da36c6435406e6f579945a5a11ae59c67460b17d197e49 c70ac5f20eb8225e50de3b9327c04c94c4a1b0bca1913429df6740d7193a24232289a807d815f1530442f7cf7975c848354128b85ee05b4cdb538268649adb30af9105e58e98bddd4047a3e39032ee1749828ff1811691ae5e83aaa0ee912927dbfcd857366ce53647e67ccd7e6db5a8f02664be0500a8d04072f8e125c615 81dfa16c04fd17bfe43a40042d8fa7d63da86c60302c17a51c7d4585f3f54abe6aee02bf03f8d1b9edc1a3e07f4d1101d6464dbc099b09837e6eefd90a52e36678dfce40f58feabbbd9e5e71747abd6bd9dff1de4a31e1ca6d3768285db207a0e61c635f5bc404ebb89d19c01afa54bee15049035b40d2aabfd9c6e942cd06 559507ecbf5bbfff1a9ab8171f0991f434fc4dcd20b6ca6ebf1cfa6fce43ad5f51b30aa67b88986f3090c636fda5c7555a25f4f30a18c7d310dba00a34fa6dee95e17b97687dce089f929df1e7ed3581c38ad304df967148291783f91904085b4707d56f761a6518c5c7312e55aa34b874e792d8950ac99c760aa08d601724 b1522fe0c72980b05986affd302f757b37e0a176c05b356e8ce0881584595a5710146bf39a92d43ee8f1774e795cadb6823a70e090609f40a6afd3b3c41699b36f0717154b6d90878547ecf0223a17e250fb729d43cd48f0d57b05f6206e618357589c26259e6da00804d9e1d931010bb59b7ecf9337592b79d9a41b21fb85 92659d537e1a38f9b0716b8a53d9a7b7c8591db7e2bc85b47a3fb704d27fe6f369c34c363737332f48d0b3442bbb27dd083799b791145dbdf33490ffd9251ecaa1239ce5376e7d7faf69cc6091685fb4576649cf27743e25e451df78b850e6066d727b015ef813a685e49b0749dea9e07c506ef37a6139500550cd52967d0c 179dc78da3c5e06bc884d93e21d3c7da599f78b779a9ed1a87673216ee02165aa4a0cd8ff637d229a96177affc8b39b73bdd04f953fe354bf97da3edcf922ae8c99fff0b535e79722ed84e1970834834d0f81952fdc90f308402e514e25b67a5bd7d8f89e41a1d2b5e6d50517f98bd2b6051609d21fedced4667a11b331264 8f2d369939775a283118249f3ac136114642b0a3003738570d9e6d820e84b32f41aa07bb689e3a2e9b8b71f5f16e7ff5bfe5d7cef61af8d4e1f66ac8fd4ebb15b81667a6777fd2c65911970f47547eca714e07379c0eebc77f902cf1d7a8fb26d918281f9ffda2e9f3fcf13c4692b856b653fb96d8db4cb0520ab224f650f6 b54df1bf2361a7008d2f9b398426458fc7d554b21cc49a21b679b6814784698bb5c9002a093910389839620bc24c57dccdd8e5673d05c5a9cd91c15690b8b6d0a4ad689ebb091bf16a19a1198a710843b85548e601315ff75737a353dcd3578ea91a9165d9310175a769ea6bf1188f044586a4751340aeb95774eddbfb9271 5cd1e13ac0c25ba33e81834d25b4eba8766364ca2c02d757e2eb93830c57f24fd15aeac44d5e4e01e99ca27eef2883a952f5c52bed754012b3ec587d4db775e6444370ca98376418827a19aae7d113cab6689da95a0e4447bb3496510cec640083bc7884c08750bdadd254e6910ec02fdb3ddf07f0fc8e61e227030c9dd6be c917684bd7f20cf8dcf79ee2c84c4d3affd15559e9e7adc2f3363fdc9840d01ea65dc2c7a1a677a21f723df4d2b63dd8cb1badf58f63c1dd590fab21a0107babe7c06270e247353615b4fb8cbae6f6f4d68d29b8e8ea5eaf6cd0283563bc5da66df1cce125a62f02848cf6fe379f33d11250b30f4ae202abba92519b91b223 851bb68fa5363aa745f76ec3bae67661d21c604014f10db45049781c2f1fcaa906910b973c938c2c799876613444a0264a5f3309288a47b1f2df72e90f519860d78b1c7a021b63936ccb9723ae4172c10264861c2e3e842663fe623457143375cbfd670739f2f01f4e9332e139a78e65036e414e9a0856027b14fa015c3029 14cd58d042240dfc711759fffc0f7e0af71294012247a3f827e494a4ade47cf78de8561158a3318ae38753cd6ecf82777ed916949684f63d0c7d56fb3d5fa891cae1cc2417fbe734954b52d7b1baa1510c943997ca78c8e5bba26a5e6c2ecd5e204647377991f2bad8234cf28f71c30e8b0cb51354b4461a99737cf4122988 25ff9706b1865a997456e22cdc981136d641207d56b7ab203f15a2b48fc6ad499ce3529ff67319b64fc87d5e1ed9ea7f359d0446fb34da085b3fce1749c56498ac103019cf7e06ce15aaf9e9833047a8d06a0b9792a821ea0e6bf23f4cd71072795d9fa50bd3a343f1a01fcf313741ff1ce9e485561a124b60979207d83abc 64e33258b8a4499d1fb2e9fe64cc9d451ea5c9883dbb90d62e1d37c5cdd3fb5c7f3769a3beaa44e81540b4223835ec1513e40f6bca362d8e370766c2c09b3f65bc908b2242a83b532a42d5e2be1b88b1bdf2f2ebba0c6c00b041ece7c628b424b4129e3c7ecf1686fe7df96e8069eba24806d225b487057ca45c51ed184542 157e396ee15896d3218715bff7a7d3c6b7225281fe0731799f85930c52eca4ff4d52033398143df84ac8dbdda872379074d34bdd818043485c97005ef1291e36d6cc0a0247e03e7ea59397ede235f9e5a667661ce2f89391a68937d18dd1248b81c45e4427433d1cef0500636b83c8a82becb3d62a9d750742a91817039387 3cb3a317188a7d875a0ac68b1e3dceedf2c24f34a73b4f8ec0a593414e740aa05f92260fe3936eb0bcf95d2c20b8d186f2740d8d80084b43130483cdfd5e1fd72fff02ade4021e7044fc567ac7484ae84be004137ad4370f68b7015a115c4c74638b147384115429045904b90dce5e0e1126eead8a7e3aa07e88686fa61ff3 46303a9cf00cc7ed566cd9eb55587bca1363faa6d936aec23fb900df32b485943775df0d3dacd78abce4336b85a6a6d3c34a2dfe82c98eebd8cfa48683417b87d87fc6cb7490da544c002eb61d5f8c9394f64a39c33b6fc32c5c68d533569654c3aa7750b76e42dbb58e9315577c1af2eb97b04a060b953f4274d59e2269ff fa486d3fe9fe292e767f2c32c35b69d62e6905ba4511cc4997865d372006d2f47b13e1d00ae9e21881c5c35ac7744ff4b6155f44f683e15ce7e94aa45ed01c0d93fef9b413a3686ba410dd1997a13a8b6acb56f98501be1250743e102936cd53f0b0ca4aac60c8e45b396377cc1ae9d429787a2bb4e58946cd27c44676f7be c6712ca15771851a335bd1907454f1aa48fcb9e144dc108d25a2a0a29da3b6889dc243e58cf4f0effea3bfd9390e9ef435ca0bde273117c7067a4e3139e0bb8a7a42398383e82a9158668d8ae9b0f853d403388533688ede1d4e39323095b62193fee792fba05595f89d5e885fa854421430486d068efd99a3019f903b631f ac37f5939b9cc09e9fb55e8770248a8e171a4927c55c0550c954bf29fdcfe104a4d8c5f4b8cee2c181208492b54a7b8e9d9c1851077ce831a3809c34db39ffaa95e7f268a7d1d8b00a3655a9d8bd0795b6efbd2673e5ffab8bd809cff4ab0cea8a46bd6d378a4d678ad8195dff91bff775dcec4907e115381056342ba78e1f 5ba0b768349e2af84b9df227085f0b0976dedb08cf3fd45c54af2b7fee33eb56e4170c7485ffe29b05b08ff1f5a502c86fe044e05ab61522ecccadbdda74d2e9577b9384f41c933756e6789305929756e8523c13ffdfcc6553718357506f1cb5e0bfa99b95e4afdf622ba483391d96e9ff449b297613b5be941b6e2e10bc00 7ce716000a5f0b848fc8d0da6b3c3943eb1577aed337d6c1bc090ea7af28b703123b338db4ae1bc9ca0c49029bee08ce3f2ab94e225fba22ce399bc15e8951e3c889ac4a77486466fa1e109035e5eb9c0b478d705011653cd7619bb47cd2319ee29a82a4e624d1f95e09c134d78e1d9a2a267653f2aace82066f27172d26bd 9247e2fdb867488d4bdd55bc354ca0ac96e1639b5de0626620aea95739fca1e6739e4c60f8db618b01235562f79aa3b11875d5e6a7edebeca38051670607f11e49fb82a7568bbb280618740dedd55a79fee1036482b326934c0a5e16a1ab4701926467b81485caf16f0a8cb9c6678ed81e8638cbfa410aefbedcd3d18c3d4d c07eb131e6f35cfc86f9d0157a677d0c2d7e3b4abe3a59e07893817b939c734963c3e6abc86003b6383c6c5ac4f2462f87fb69bddac42c0e1f0845d24b1b909fbe03a93a4ea55c923acd4238a6aa20a384d300eb44a4e33c5867c3f82855b2621108419dcfc5845730d99c031e29d2ec3999f24564c9f7fdb687ee7f7469d2 7e8c06d3f5b99f3fba2b431e1b016f7c0777b1d7cb209374e54a1e9ebadb0fe0405335bdf6f0ab285d1b3d6bf53a9fcd2e6748e5f76ca45a49c2ab5dd68edc59cd42f38f28427b01a3a2a3df74a442be1bcf7bcba6af7b539b1d148e6c75b5c35c4d7483c1209a753c510709be09dcddfd3dedc18cb976fa5389cc960211f8 7e2dd57e86fd0158b2a0822d81f32ab0e6be3aba720ad374bfa454577b44cc8c9d96b2d5dfc95fbfb528d7e76a60486d33ff9afa2f16f7b4c09c69377adfb9863b6cb5f75f00fea2648de40dbd89e46a59d50a522e8cf5eaedb1946d4344b00430603ac426817e2b376acd0974b3c37f65230b8b5d9eb500ff8e52610b7c2f b3097e380fe2752ec948b46b323fa0ab178f34bcdb6c471c8cefb5635564d5d7a8d9b869a56ee5e7f97d2e240d94b689204cd44ab2aa067a7a4b09e71bc475d3edce56f03356937ec1ffaa4eda180da13396859c5c85a0f71313ed8d4858ca9394d4df8d2d9b95fb2be76b8a3d08d662aaad760f2730efc2f6782a6234bec7 900b93ef744f05dc53021c01b456ab653cccd32528a76a974a24d93a67de276b0c7a6eadb306a420fb5c14db4a19671b6256e2f1239457c5b9808fcff5ac7ff494f457ee0a04788256a4f079affd0bd880ffcfc98fa12197c9fa128500ad5a416d7888297d5348cad355511b44f9a4ba1f2fda06b8f0e5e53715ca8230f740 b12c9c4ce34deea8dd6e10093dba924d182e27d87e24e85f2da026d332651afda0afc7ef42cfeafa0aac976fa04ea29eeaf4243cde03edfc0bbfb10259ca2005d1ffe7af6b4b9b9f271c805bedb30c9016e8129a013b662240de6a9b3c64305cd8fc2dfa746c5a6a836714f04ad67287b30a21d53d484d44d263ff9d697ede 9d0250ced442ae69c1af297cac6c5a67c24f5659e4ebb64af3297e481ce55a19016d510aa5bdf6fd8f27fb8002683d3d2e0c73a4caa3b9a71c35a1798034126c1760ef65c20ff02b5f971d4c843c327424fc9ed7e714439c17f339a1b7486330b3446f4ddb020714129780f88d0365509c481ca8474fe8552630ef36146556 e1f3ca751363169d50190b0db124e2230b46e42475bddd584435f0fca6aa65533841253a9ee250c378ac22f56e1eedbeaf6788f82ce806bfa2c3208da57be3eec807ffb8e86a1cdd83f95b8812c07ebb36f2fcf3641d9c3f3ad1d7c604ba85891fbd97063dcc52164488e9aaae40821bbddcb6512980d01be2a8197a67e264 dbfc76642eb69909da9c0d32a2a08de62a5fe165be73d5811d0f0172e1c3d95cd1bcf7f006b03bdb011d59f115a1b03e9e510a2be83e0c303e78085c6399f73000340810da2eed9b889c5e7f44fd479cd7a5cba4f1d1a8df20fc31d73d13f88ca5ced625e0b76d70461e39786ac20680790ea9e836c6082eff9b15b6540878 f7ba0dd194cc93818013214156ac9278fba4d25c276d413834e2c077c5ffd45f0367e6099fb76618c276daa565ff8b47d70725dd1d612733b23a244f315a96548281df0df7c1a6141713107fd777f3150d4012eec5f8dd4442f95c6788c3fcad4b1d75c6a46eab03c412d5194b4e90f9a6607a04577824f5495d359761878a b1b0da9fb29884579f2cb4708ea65ca4601c7d8063975caa43e18f9c28f9daf31f92e2536fde729b4a620a786339f9cab5117d38e7d08d035c01a8a652880b776d64e61bc1abeffe61992da6593016aa7e8d9c42c7f126e574048a653d12a9300b0864ad905eb22a86bc81235836882b113b75d44a95b1f6ee0084172ad703 6b7c2b1a5b8d79d1854519692a15705979f3492e2ba0638f6056b134386af0443610871f3bdae7fd150d394c4315e8bbe54578e91172352541fc1bb6b7219d19cc4c17d611c9c7ac1f6f5bc7022debde0f953a235f4d3901a9d800a00cee7d2879d7b8517c0d8e77f5e03918afb64895e67ee07aa92ffb4d0fa06ef55ab615 681ae8983607c1c26aa24e2d32f9cc3cbef9a442010962f13447b5f451ccf6517bda24a53ae49e391df43eb21a55a21736074518cc79b9e67cc0f955274eeb5043beec6eb65bab1a452b28cd0eadc43b5d8f019acf3e458303dd62f4f78f3eaea23012866ca9da905a6441a09a7ccc86707fbdcaa77dee19d0d5db9643dead e7e829e24d1095e07848b4316309a1e0e7e1004135cc5119b19fe6a739407fd6782c36b2b082f150c617dcc453ebfee07e1dfb8dc1105237405f89b41a81f461cf03dfb5d9d13db21757878642c4373b946f052f7c094ada92115c9fcc25a374f42bb1fe7830f1909b78d9abb2461f84280f2ccc6dac98a0c64862b6353e7c e2354ef01fe572059d6ae25af308e20cd36508345411e41aace28e4fa8e02edea172dc99c7a200048a7de4dddef619fd90f4dbf7255b7fe188794e42d7cdb8eea28c0d886a1435ece7e4681adbc8aafd7c4250865c5550c06fbe2db519fa9ae8d4f455df4660c9506e60c6baebdc61bcff8e249a26c495420901e548b7d2fb f978741c3fdb26636120b8bc93677814e55a871a428d81fc6ac23ee71edb85739a92c20a86c84d6fbfeabd86462fb3b249440ea7c0517e230d567eaea7fc73ae495843221ebf44d2ee5ace164c8d09749227d1e09669e4addb6750479ca45dab1fafaa0e961f11a0eae6fdfb8edead318a477c3b480d6e642ca3c3e2927253 6b304d374f66cfb416ff4baf24217d011a5e57638103db4a466baa95ff8aad9650931fd179c3f9c80a1b57b6a080ae49b110a5c1b4733381615a85efb8dac06b2f770572c3d1826ee972f43387694d3ab4ac73231d97ffe98f01bf83ff20aa623ce57ff5a8aa1b4203d6992761bcd10322f9bd8ed075c94ecffe6d10bb1934 05fb314a363280de060657b19a72b9e1869b97b999ceb2dee4aac63485fe96b5b550db2e98c0a1d0511e741a12becfe5d59e968f7833c1eba2ab4f0111d19025ec745dfde1d18803de29f4ca4810b0c68de3d57f174ef5b9f648b507e0e0e1fbe4121f0b7ca4116f037bad6091f9a91cc64c8ee02caad6e4634488e4288c83 f34dc8ddb91a2a1f01a49f4e48de607f8375ec953d5ee22e28c9f3aa8e4f6074254c770bcc2f6739c24d30455bc9dce6f87084af762acfc547b5e56d88f0b97a22c777baaebb6a9eb1c3d42420da473f8dc0ece39b20484125b0d62a27982f9616aa74dfb89ad704689e901d5c84f07c8951b2c4b869dba939e99cec5cdf45 3a97246c6255a8f349f07a669c66c0013b105a0f58ab84e5e014712c7d91425d61a3c15ab358686ffbff9797e020fd43fc6141298910010cae25e8fdd0d574a55f699ec3a4015d9baaeb12df1fbbab16361eb92479dd3dc22810827151eec3174c22a94c8841b94446b74c22fd1932535c7c7e1107d6e1a1bba0ea8155dc41 f6e2c725f98669de5569f33514b6528a61a534d22d7ceb6babb2f824771862299cf6369c2847f88aee2a76417bf51d81ca6a390663501b9215b4861a644efad6e15e3ce4dea623e8bd06c220f372cc7d836beb72bbda20288afce2ed884e9178fd9995e528a38c0293690054f0047c629b5dfe85baf65be877a1ef133e7bd1 1204ac206c8dbccb7d3e55113b24872f9034257cfa15fcc7ece44b821b8c74288c147c37bdf27a595e65f2037416bf9a78a245c93c4c7c8aa9444c20ef3021ad783fe5835889c5fe99c3e1856e58902655571432d49f43bccb0440498d8eb41fc07b9fcdfa44a2fcf5d3327109287f816285140c471308cc4499adc95977a8 71f8fbe0d43e3c1bd9ffea8d68695c1cb83673c7d4710829394d0e0fecd1016f1145ed219f60411cc2bdd628f72f60aaaec58187032dbb6543b3a138d45c5cdc955abb05c1fecfeed4011168a0c93fdb2d454c66a25a81fab137e70ec07787dcc132144c53a15cf0909bf10134ba9205a65545b441f1280239409d3bc95f1b 0251d408e32b36a1d5f146928dce90c91f815d3ff79bf3a6e53726122e8c2b2d30e7092fb07e1a736b51cf13fde2a940154fc9e67568c7dda81c1d49072b4987af38584dee02328ad9476876ac02a1637dbf13fa61596588f25f20c08dc982ce453cf27b40bce8ecbb9a064da740f5c75497ac7e915d0d90904fc4dd614af5 5e66151efeb466b98423ff03fe3a8472c9a6a09965a81c831ca8ed875489a729c2d54b0d496d83cd009f9cc027eb116a865020e2159909a3210c0c6f5c04a5418e53f49ad35fa915e3bf11361e1808b22ab4ad96cb70771e9894f2b2853be3af22df08168e67fddd7abddce1ee95cb7e9e2bd075ecafcc4acb6ca79aacb2de df98ce002babddb84b832197f0e4592c0c24bc97477416885713d49c5e54bd834db02d4977d8287f1e268d765e61c41b64f8f32bd9b961c72963a226d0bcd1f412f35b140bc547de69d7cb48019b9d939d9bee291693a4b1d787b12b4d8607ecb54c1109ba0d3b2579d5a4eb71c43859e996e87f8f62f03a4fdca481e1597d 18d91245aa1102629c3a87268f2c526c5281f8d8a5f1fb4896a55232319791654bea0c5dadfa2cf56b1a9cd344d3225759f778e86c03a19fa1bb9272d99d7e4ce5254d321379f6febb97619eda6493e50a932db686e48a2c08415f1039baa1c62a46b960c078e7ee5e1a928578e491d622abd370d75aeb126e60667b8c2a4e 8f6f079742d805aaac642341612d5a4da0056770b0d241f85bcbe26946363b1d0654fae73e66dd77d19e4c616b3a5b2fff244e6de6ec051bea09444c83b691e3933bf18e606193b242e5f26a53fde3621e5ff648ed9b2e133315fa72bfe9a2145de0911d277ce0ba118f32af9b3e3981da06d88ebfd936d675d35c47f09d69 1f68bdc2b864f41cf16680a60613839d9110fa6d3cad642242577c17f64ec3ccde2f532fe397e6299d0ffc4e4c82c82ed6ac813fc8afdec88302a0fa6c6b9dbd0a5bb5fc129686e8c9d60d3c8c024bfa8a82d0b70f2cb541cf08f3205d991129f26354596f09d84b81af4d11a4311fca55782cc7ab91c43570a9f93f910878 9ed61a3ad1916d48c84241c8b939fa5749f57c13f67e46c2b1f6990deb284f22988ed3ff87f3a4893319b8a1e124b704171602db712c6531b3c7d6e573a9d8825fc78a42acfd014f87302515bcc12b98fea057c668620e4089b85c9efda576f029cce97ba5709191e2a4850235ca0a7f76e6565c375740771bc3556cf654c7 2681550517c0daaa38193efd335baadb8d74945507b1c205af82e3828c0e49636abaddf24554634b268717a20b4a0ee9153fd69243e470cb86f82e327a6b4c10576fba94a720650bec7491e6d8ab927d78eb9724c3bb0e57c2f7635064cefd39be742f14572d15eb3c071db19b21c395666303e86b74f2ba59d314e4b1a78a f52250ae13fd9947c38322ef9eb2545a518bdd6246f3923a03133fadcb08bd3ab2f54f8f65cee6bb23b072f8637e63d075d55fd70c2013bc6c7baae4da712e71fa07ea68b32b58e832e9bc8e3f8cc1d562552fb916f35e8a47d0d8f33acfd33a93e0949a4d8087413f837a672c84b9daa42154fbad948b310559bac30aa416 348091e77490c006ffd37deab8144f53738d4005b73b532a0f9f181b6cbf8844b01f0c86bd2f4281187bb4186c2a4425d9255aaccc99cb9586a9564e11b4be5cdfe521e581b23c02319ea62ff36da19bc72ef3245fb76da03b3f570d8b86187659c05658077b53a7aa4c4b36cbe4ceccb7a45c031e8104cb489b4e2f8e434e e0a7e5088a33b9b95c58fc59e94ffabdf1428db844cfadc0de0c70f87df940694053347db6f55e330a28dbe62ad81c4f134b0be88454ef7fde8b83a50fe0697a6ae22a2008d13126cfb25bcd52bf0f4d66ce2090fcb74227d7747a798b52aabcc30672436430cd296a861db99271792d196740bf3f40ffa32095a68f20d3e2 d6ae11e58d4492914212b71a9fd24a2c43aeaecb2e38811029681691b7d30555d7c2acef4889768d0ae02d2c640567553ad3c8370dc471091278cdb8f4fdf83441a69c885ae7c2df863a23a3c8a8ab3f324a3f6b0413790114ee923ac731335c71075bbec27c9cecb5ed78d50e4445ca13aa222fa5f3f57b1f37ea9558a93b 03c6b217bfc62c6cf642f3473352377865cd47fe599f79062bdbc5a1ce07081b0742ff5a918a3b976e303ea68e60098aba208b6932a7415d833316b42fc552643262e8dacda5cb399796ac53d321b7c1ff5b7d536025924d7912b776e33de08f747ff7d938aad9f7b9c8e222f2dfc36a9935fd9776503d3255704be2f87681 5a1800afb6e0e088a881fdcb8fa06519b31f1882c75bc12edfe8ee10a682ccccabf1b7590f64b8b2364fa2f770ef0a9a3cb22202989bc412c0f0b16ee45b059ce22568d04d191c658aa94417db08e26016ded5da8b13886981ebd6d97b8dd73b878447d1993dae50ab57eec31f5a4aa0ef531a86493372eb77951c9825409f b74ca8b2d93f37549cec4fef92df3f6094b3480ffb4b576c8b0155530645212e265465916017323259d276a4b81ba014439bc3bbc55a2498cfdf411594503bec04237d96333ad872c29dadbc62202c17f6346af9556733a64564deaf61b24d84e657b138c37c3604c5c1da709053f7a75bddac0bc3229a00040e6d1f9ee207 465717e9f33a1b11c095efd75486665ca6e7e1e6b82c06a26586a38ad0bbd4e0f8eea6128281b39665d47325f10d28820fcc900650ee330616538cee7454f1c807574cc9cf6a55ddfc428f9e7c107af7f44f02ed3be9a1047584c927e4a9970c55094afa481b82c8c40e91fe96791699f9128e0ef9da59b1d7dd3c20cc2803 5d5571e3e5dbc0ed14e00f31dcc0d6abc1b19c48926b82a7d61cdc95d29fbbd9b81dce9c518954d1a2c6c518452b6de06e9c65ce5c90baf0493f31022493cd05041e05a7a0f8eb0bafdcb41169cbfa504255cdf2bd13cb167482fed8750189169b951e54a18ef428e9ccdfe2ed0dc7a39dc85e480a9c7f47c3de2744c2a9c0 3dc40a63c62a8aac041036e295cdb1dbdd70a47cf0ce18257a258aba254fe866590bc7ef46f7154df46a8e4117068656e7126d7053506daa3dcd7b66e53bfa99cdfb82fbe5ca1e5ec177fdaf04f25ae27142e2b040afa421474c181c7943643b0976e3805af1a3f47600a2d8912f1ff654c41f826522c07d0e35099b283a65 9fe3241cad8cdcaf551a1f31fd7eb2abb2eaa65f2a15aed783718f86f56966b0b2d21ceb722b8ac38957f38932acf9a19e4ee9a609259eb0f6b9de75c1b29d87790563e79f425091966b936a4428df2aa1c281ecb8401e3f8f3c67f6dc631634832ef74a8c94ad979439b30bc8ec1c99b1e54c99f26d09974b5d92e96be88e ad84918267a050f2c6ff91508f6e045fc9bf267f6464c901c6b2ee48fbe4f7696d26da1fceac4a2e9d6cbb9d7ed7660b4011beb631b80f6b97297a20ee5e52719a3db2732129fd8eacec5b84d94363f4de595556494b89d26e70bc33f5da1031505674602aa5391a649c4220e1b14f2d8312e445a15276a52f1d7f45cdbcb3 c95786779a266651cfba24926fcb2b44b5116273e67aa1c6ed0b4ce53a946e74d4c291ebf7e9d1c1ab84b09126b081978c2b0fb3feda78703cdca556f178febdf0153c6615cabf44ec1400ff8c02370c9ed1086e7b4cebafc2acce977568b8e3ab6c334e55b850e5e35262e9ac4eb201bcc21bafa2e342ae824b79c9728527 315e32a7ebf413af7aaf2d87c73d97f100b06a940a98816ec4c26fd451673caf4abd2dbace36898a853ba4c3acfcc14042676e65d69979aa1543d0965578c64ecfd194ce21fc8314fef29e35d5597a539d4bd67b077e880ebc4d41b072b8462dc63584bb256094eb353e355b346d6313fb265b8f713015642d61c843b1358b fcfebe5a86307bae9b574c71371509fd56ace646d61e0a328a707e3cee1c3e3e9c40c42ac453ef5b692a1c2f24626d0cf130c3a819c54d798dc577ff7956bf27f2b6110af08f0301f44008739ecad974aaa7d68e6883dc7ca3ca0b95ba226d819904cbf79b11ff35831c7258bc605c97582aeccbd2a5e64d6ede5f4d5445d6 e83641b35ddc7cc6778e3ac7eef59b688a3d247306caec81765246ed6106b3ca3feb27e066de66b65e792548a57d9aa20e60f6a6f0de006845f8d75252ed9122728971f33120b49265cbdd1d8b0f42f3e673d99915684038c49e5ce0eda876c2f8f1ded27b035263256f986ad7aa8020f24e25731884e026c4e4c93b385a4f ec7fb1fde9e7dcc5ad30bd18c739bf39f72ec5b2c36a98575bec2105560c733d7e074e0289cfe0b374bd89bc94e3110ec7fa6d117c012319870bbb612ec2c75a838a07a7cf229140d5ad195aec2cd0c980955953bb8009348a5b4c700b123b00156f57257c1d06a7d5d175167aef7095e63dd7da9dfa591dca1c59db066ad3 dd36d2e1162acef1c20cea01052c010e89276c8ddfac9ad719214eb3aea6089edd5b66193a5efbb6eb71ab1d2ff19f1931bcf5f2aa54b7f40da7114b49fff966de7f5b972aa76d02e31aa6d6b36b61157d0150e89d4d4c116ba19bf10bb33e2ef1fbd14009cae33d03248507083dccdf90d4e3dafba0b5b480f74b8fe3a71e 4020707a940b3053bdc7a8db04706dd04029f9180564a829480dfb462619f48bf91b55567896a8dce27e4d324c8e2b4e669cf659c16c0f6b82dc72823d0a4b7e992a8f80ad0386473fc407dfda4e7f18d614369631e8d241aaa48dca013c4368ae87faa94a6fbc4a7e425a53bda770bbce6b524c07a517e9367f611857f6d2 5dc35589ae182d098797f9312ea7874f03c5d19746425aebb87d803182d98a8b43528131aa077596d4e37e091567165cec8192466d21d21c97dca1daa89285afa44fbfec5c8c369e3f6eb4e7538a831964e68e7dd069d4816337a07a5983c954e48a09e8638b060040614e1b9d7f745c74a1b50973e831916789c540af9fc2 55cf152aa8ab85ce2d47502abdc31f3d2efe0ef16a7593a8bf5facaf83cc8dd8f7bb53e73a869e114a352393d3ff15846f1203442ddb1189903b3a0d772de82728cb3dd36cb06a5a7feec342105c3fcae9acb6c39ad706772835370df24e865e52f504701ef0a739952d2704e3e1f3c7e74091c3b3fd4a7330ea94744d4f1e 1aecdf1e733ec1e4efa24ee73121f6b4ee0df14ac0f859e56fca07db9b41e79e9d144c7df44970f0137795e8d5c80fa2e3978bdbdaafe4b4c71973d6e20a60e8211529bb5b96286d8065b65d4ca9124fad2a4b935863b3f886edbd9bf7a57cebd03a3358cd90cf5cb91babfd8757565e9680cb800869674e4c356ce76fa50c aaa6e0dd75a61aed50acc2373609972d065263dfc6b9326c41b967b61e78b8d3442e8d30c50155aa7ca9cd1cb9247f306206ca691b0d5b1b8fdae901fd66a04eb6ceea6b8495f5061e0efbc0017e95623e196b88ebb9b74cb283f006cdd5f6e7687c6cacf1223f09658b2a1b0e1430beee0cd6936a93dc037dbbefdfb2cc1a 2c84036ef6b567d8926e6b524586143a6689266ac7c00cc11830a8d1a2bc3ca74356863bdb535398037b77b82472cdc5e0c4bc80bcedee7fe043aaf1e5ea75615c46dd2a5ca22d3e032f7c0b33523a2d5613f3eba692d641b0a0a33b5cab39cf4ccd8fe72bb4ab6ca71cabb4e13625231f81857ce493fabadb25280f209f75 f1adb15ce277f7cf3e0ccb79293c3871cf1fb2b516a2f87a84bf8aecdf84cae2582076a2af591c19cd604bb2b56e65371bd062db57035de806bc6e864e27d7a27c72e175b9122cc656e8b71bacc85d8e20bba92322a50063ef7f91fb05597a8221ed0d542e42d58d6f8e50de5377ff027da0127bc9661a2ae255fe1a844063 29d44a50c68a0903f4669c4324af974a97de6b60365f992de322fb446da39ea54e3e33660d0ce7f0b31504109f954f11eeb823bb4eb4d893b8c1190a1c9fb9dd71c3f0302dfe9ba1305e52f67afa320459ed0b6f870d7585d53790261dc14e26c26791bd9c99740158cc333c36f4230d12737e8c8a688ef66a51f80962dc0b 5492e2443ac24ba132954aacaedeebd9cc62bff8f8e5e08c14187629f13b6a94568e5d4f2b55463c70f863b407cebafae6ac9566ec05d48ffaddb7a567d5a2816634d1c5f79280de20d78387e23db4303144454e3a437015747b048a170c497e8433dc28361e610e5a2b503cb51f5dbc63a292f16fc267fdedd7925c58d314 dd6705cfa8f1612defe39682c12d47ef0c3d9b5ec686ffa4fbd04742974cb6a9483b5e03cad1f0d140aad97d74e456c75e6642151d167c1a822dcfe56c247e0af1af264aecbc735e218f42d9f817cc1a5394bea937965f7afb1313ad55e1f317c53b535882120a2230d00dade248ae0f7981031bea25dbb72dbe2e8547ee40 02a0c251387c68ecc120adad0f0748e19edc9dbf3a4566ae5e2f38c74f6b731a4a97600534c29aa689e4551421aa5ca24d32abdf485a12df2701fbd1745230271757cea59b63de1ab59113bb574ad553d98955e41c6df5c7e91636eace1e5a0603e10253fcdaaf8ccb8a2e28eeb2ca9c7231f5d1e420110bbb7ac464e131c1 78312efe0a67b81bd80c4d428286eb9a149cd7b9909ff160b057d9ea89528a00206f5228a3dd8581ace94ca99fedbd7b21154e0e7509dcc0e107c0fe2f45b0fefd1ddf56ae11d7f17713c989095a5c046745f4d801f19fe0e248635f8c57b5028096e7f12f5b2f28c38f8d8403828b7cfc9c9da1c8ddc94b99688a050afd26 58870b4fa3dd87eb75fc0f38cb2fc2b949042f1008d1cd2887d9977663064865c6df078abcf76b0faa79aa3657acc916cee0668ba5888f6d497c318a1aa53849eeb939c3696e1b18224b789dbd87495f007bc11b86db8e9bdc4249e1f7c9c40a0de26a580d28aedbda4313fa07b53cdae3d5abe5e580c79c1ed42736dfb824 660a10eb0e9412339624b21bba4ef66196dfcd89bd539fc6e9a660a05b3c73a315fc48f8d68d7de440d8c7a1c8bccc4e09657445b3f5dc43b52763b21354fef400f9bbc0d1bba85802e4ed2baa3d11aead44ddc825c755ac4ccb6a1f1a6f65365f609f5cb3fe0ab0ec9b0428f8aeafed197d05874a80b87e3b0afcdd7bba62 2c4c416c110f8627ea81643efe6181686ae0b70f80cdc5a1cdad97ece8f77b87d52ad6cbee78642fa2c9a6504f2a17cd6861b050a90fde964831d4c43af525bb043d7e78af1deb2fdd442c43cebe9e91c04420b2029dc4541662999e750574d4fd387c88306fb654def8a3eb995729d20e1b730e61f697d5ffa998714251c8 18f5c0aebc7c45475163a859d9541c2282d9ffa97a310cae7fe9b35e635a8a7df366040b480fd578e21f7b2b5d1088b8487c34c028ef3baaba0cdd7c1e7e694b17c5f25b29a2de9d8f29220c9ac477fe369838b3537bb49b1fe9ad1549580bf7799bfb709eada7c3c8614207c28c9c654420c1b16d7f0bd461f61ccfd93402 4c3033fbb6b3dc15f9956f6bac3ab1dc43c7785d42a084d3ea583258ef531202056ee73cc09f137994322bb00085e97fc204224c96b0f5843a171326901e49a94a4e46d00364f177adcc2ea9e5b4760b6ceaa0849a7cb2c232b91f4ef3898ae87a796f62f1a96e31188d12ba2c21089e227594fa35b40bcbb1570321e1657d a8abef8e1ac37cbacf67d719f1605af599dbf37b7d083f45a80063fb9f8ba01ce9a63ef25413ba5fb0454131b586aae594edbefef70242552762989968614b1b50cf8339166dc97ca1fd7e4382c53fab164c0e469ec39704d6dc6f49d18463e944438eda86183311e340062ef76bbc0fde1905f5fc0968e17292ff4d1efcad 1f1d12d5986ed3812214ca855370c635c39edbc0761aeab87f4651a8a28b0965fd5da6d2d45a2e5a517377cc80d81527912f9f4c163d05c1239a3d4389a78b6047f34e2011fa62d61433bc3c5c6b7dc5aaa5c7b3156d396975b372f51ce56ad05a3c55f24a22712eb86aeaf45c1bb268398b3e790869da81cb0017909eb08b 7274550445adb6439ce0898acf8928e681ac0f7a7f94a52ced2ab6f43d526f399a5b3b911d7cd38a66b65bdebaaa16d82de09a532665d8d17b1a1a33c33017e68b4f0dc14d5b7740e634e62212205071ded125590c91a34e81843970b0c444e9adb434e09a20d005b6605087d2a87277dc0e94d319f088748f51525141a681 b129e5aaef51c21af8dbc19cdd19aced661ed7a6c7b9821d9eb4742036d2e69223bde8bf108a1aaebf3eb87d689effeb55dfc86c1bd3a68cf998aaabfc85b54cf4cb78cb673f9bef76034ce010a2b4e845b056ed1aa51354e65ea1321f60ba829b4e9426c2101bf0015f3b85b31d0255d4d6fc2d054b6b4e6bbebb89a25bc9 c510318116ea5e1b8710b42761a18d283eb1a5ab154b034ff30d2b829f552653fa000aead47603a4740e90a54b13734e94dbb6a030823d29c1e68a75c3f361cf9efab4691d65cb4ca6382826e1db005ea774c3ac9b85256d626a7bd1fe8612726b07dc7ceab780192aff9a436d7324952dfc994bd670b2f271d142fc84c8d6 52efa5353518a52817c019ac2cbd31111bb7e560dfea2e81a2e55cc1110278204761073fb0a40bfc89ec3cd9d34b5d59affbc6930b09b8226ffce9a8a93fe28c5ce2bc536953a91b2bf6195460c8677f2bf314a16a7b4311f969ad289ed2c65177193db462719db6680e1cc03c2c3154e60dbdf7db0e270b0154bcace82bbb 2616f8a418d898da0ae875514b7c4327c66c0b6826515f29b972eb52e220429d27e16b9b5ceabe45aff2ef9f645f196886cb989687e951f608e738f1ea6cf2a79e507be7f080485c3668af2c8c3cb8a9d4e0ca896c5ae8a19702d64c71bc4c89a414576b07ae2e38d6a655de7d336b2b1927a156e0850e6594bde58480a07c 0f3c026467cf9b96b873c8bb203002e2b69ba3445fd368780c425360ba831766a37ea41c03f69454823b46e55170aa82c194be95cd4f6f32fd93f3701c5cd730038e8ea9b6a1e563bccb223e9d86751123671c0b92f7fac56d296bf09f5eeef39c32dedd67034fb718034ad4ee1252a80529e5e119b48d5a1dca82e04fa906 d3fe0eec976ba1ecec8992d0c2f9594d790da7b52d71687c3a15c4a325594207bf603e2dc80cf93f71958724ccbc53b3b514b1108d6fe912ad5531dd8a294ba705b1ad011d35cd6a0e80b7d8b345e0795498295b18a622708751e8f961104e7871c5e78f0011d936e6e86dcb8ba738be88c899b81df3feca87c2bec0282e26 242f22fc596b83be010e8799eab36e37674a2d25f507c734801be5fd0166c3605206e5038b95ec649de2cd85e970935cf3822fae2b92de3d88343c9a03e0a775f2760a422e468b7b6e0714a2eea42a675d18eaf42fedd9544742a9f8cc4a9eaf3d77629ef815904799cc0917badc507cb247b808e543524d903c2437050f2f 8d5dae66f994a88e334398d5fd17dd9f9c50f6002b0e52ad911532b9022fb3a83de7359b9b57457fbe91471e2e31685e7bd8ab907cbf527200efd0d55b7745b9feabadbbd037c8e05f5d38196d3abfce6dc605c9f8e9543c9b364af5f0bb4146cfa84af9ea4906515a37d9aecff4305d7fa0d4c82440a01a5eb66abe43cbbd 6ea131c43a16cd0433c39abacee00a58638872d90a349dadc0debc1f64ce060f05956b989b084ea5c42fc7933ccfdce2d538c45df01ddc4d025f450994168f7b00bbcf5fbaa45c396c84e67db0463c0422d830ccddd69fac0434eb4f6f6db9a4fcbe063ca705f3d2ac8b38ab65fb32789313db034852f172f9ee3bbfe0a4ec ff0275b06bf586fea2fc5bbcea05f0777aa8306e5cb7eaf97547430a79c8a74185abc137c7e30cec2f61ffca8c38bd34a20dee0388ef6dfd2d68612c37fe50a3fadbfd1efb17b04ecd5173b37a85ccd63e6e6bc83acdde36b27e8827a54badf3822d9eed4afa49839ee1a49828f9e7d945b4545a85178febab85903940fc65 8bf53669e12735d351a2858c5be4270ef9cfb187161278216e2eb359a0f01ce0326b6152c56f44600e3152c07f00ce0b766ca8192c6e2cef6a9bfba1a6b042de3ee0f793da682d07628baf6f60961336bb4f09e7ae7fb5a37064bfa5e2d9390f78d7976575b82e27510219a0f3a7e0ef06536255b9e9a545f8c6ba2f746426 d6f7f0d43b84abb4a0ecf66edbdef6724bb060bcbcc13124a1dd801768fcacdd51f7d13ac3cf5ebc3965127f4772ae3c296fc955da79143d65290d99d2b8204d5227ade3cde4a2e523c88b93eb089707226777565c7bf63b5cfe1fa261ba54d692f3a9bb4a10e08e6335bc73fe3a4abef58baba568da69911064bc5790251a 618638c4906151100d57e5dd8f05c804c29370822a95903e6feca634e70be1adbc0e0f4bb5cb68b995c0c17433bd9d039b89e202f278a829143fb7fccdb7e9ef900aaf2daec6b25e9edcb1ffefd889ebf80fc69a5e817b45bdc4f5afed089ad32256c50b0de86b1797ebc6108cf3fce226c7866e92dda1b8a1a9b225988f5c e866118085ea4356c3a77fb3e3a9a847039aec345344af70b8fca478a3b79fe3c1ed74210789937232ebceb92e5ae683d7713dd39252ac439b969a2509fa6dd60c57c863bf06488b290a23121fd0900e6821f33bc4c41f23323c711ccce1edfa5116f569dc5fec01cd92c04818ce8a17b912bc4f62d9f72f4c0567c965d7d1 266706031d6d8b3f4b65a8ed125994275219223d5e2289c5dad045df1d912bdf7bcbd2666148f981273eed4fc85d190afec3843451d12900feeed5f42d357cbddc01579eac9fdf9adb6e212547733d3a22d2f65be27038c2c3fb5b2f51a3ea26751d0e12f64b4e6d6a8551d23080a8ff23d23e5cb0857e653a859246812efa 4dbf873f78813f4b5ebec1529768371f919c5b67c6458092590ec328be8bccdc238f103c7e166daa869758b517d9cd869820e0633beba0386b2e33965335740787530458a698a1664bedca0b586afb5482b2f580e7adfd584314144e3adc41b2b08bdff70789c06a87fd49ab7dfd4949c088464f296a8f1f69d60abf17850b 5a254dff8d52c9c4b8860b651e92a5973113f56f1c030ebd02417dc181029099007fba17e649ebcd1e1d044bdfcc279430f56e80eb54f921aea09dc18689beb9f34bf4005490373b98ed62ed66f887ea252160a6b15f91a0652288f55b704203d285ae011c79270bd5d21114334fb466ef469fde9df95a3e11914c69ba2abe a27c2c5e43baae066c5b329dcd72cab79a214af8fdef80a2201082df01a595b21807a6a3342e8ae626c0e4598fec95553be69f8882d7378b3280665efee8e5ef126cccc2eacdb561fc84c491c227bdd2323198f73c8de2ca9068b0f8e4245da4645abb5d3fc748f70542314f06fe52befe20239e5e0eeabdeaeb0fd4299886 1463aab51c77bc0fd59900fac5ce1773e0b71ffd32410a02063a152104b211530e3692a794f794073e75d7b05dc2f78c0ad588aa76064d888b500e950d2f4553f9bf23b0c22ac95771c291140fbb45541f381999a18b0dbc0656f58493098c61007db73a88a35dced73ddc40b636becd3259ee495e8e90f76a40023e5d8c48 dc98a2ae34edfac225855620c93365bb8b10eb2f7943f1016e3099e6ea05474750ef6e6e32b2d49fb82662238f0a33a1f9260215fee59f8a7762f8b395d601e66c0627b4dde3c681e7e1323e1fc72f2a26a068f6a00c07a9862bcb41deb978c09ca94f01ab0449a159620c7987bf9501023955b27089b7f95af916c319ed37 819f4796e917101031aae8a271189cec405c5ec0195da3b965047a69f1d2df83cacd4f320a94b5abd2bb6f2c06f7292b0c43421567587f793e043fdc07231e2ed763642791842a73730e76da849297ac6f5c60ce4be1a4d64a42282cf1e049c80df994d78d488e03ba101e8520715e68a5159cf00427a7ec0d46971d881f68 256e2e9a4addf369a03252b0fdda0c05650279f72349ebbecc1431697f87df7d87d3726a4916609fb3674cfbf8bc59e2af9d855bd5f8d991e53bcbcde373df266e5998fff0064f4abacd91894f0b76e337e416ee7632e88aa7adcc56430a022f85bbd2e802339441aeadd92efd87f160a8f98368fe8b5061f5a4aaaefdfdb3 31bfd109a6d9641be4ed21eaa90561f84f9114d8187af6e0d231254fd4184efcbe11ac4ac0c4f2ef4ebee729356f6819cf9180fe32a4827c201970fa382c93363e11594980747e1323589e0f9fce87048c1c1b659c277f001bcc05525680c6778ebdc2b88658ac7f14a1866b8be9dcb50f2f6c3360b62fb95a1417db555e07 89bb6b213291e6fc13dbc15e1421e8225799cd65afbffb899e8819fba810b6129fcb43b3552cf6f42c1a836a3397d6fbca416896e97ccf3e00f8932b8a19e3245d9f8a19dff4dcd8fe9f8e068a87cae658b7cf4c613ad3e73d818ec217f3e604f0d5499e0eee62153829a6d22ef926606e87dc1a5f8c5449e3f7991bdf6b9c a20fcde4ba519679575586ed701e777b3948b640b0c18aa62c326f0c73517dfc91ba5cc0dc1aa51256d2c9d330e822090b94012a13360ca15567ec72634f29477bf0d9f71162c9a9b138d62e17118eb12c5f7ff3ef464e6dcb0f9709dd6ef1fce7cebe59d7eeb9ecaba1dc08613a6206cb151513b55912d02dbbaeb3310bc8 ff725234dbe12ecbfe5e7680d6fbc60864ee0c07f89224326afe09b33ae142b7072715a120ddf29fdecddaa02d9616bc7962d6a0740ce050076b3461be5f12cb4a9fd2aa18a5ac8b67e9d6d13ff94ce18fce66225621c8f867bb66c741958b9e5b4c1cf7d1efbbd585284ea6e175d50c4e4cda2efe8f88aa6f004daa8e976f 37f1320c55a8679964077e3e800af1ed4333c6cb5b30301cb2812f228b1d196d3d87cf8035bdcf34d0a53ee1d3af0376143a02a762718fc97a777d6bada4877bfc0561d31af67e29ee7b81c15d676925fdca3f2d0c625b07bd4085dbde0b30610b05227d097364fdb30443cc1bc0227a76233871db622155052c294307a792 0fbec7a44784cb5dc6a4ab34a252fa948cb3e242d4bba9a821d0a04a9ef8ef1f5a40a1c623a26db245d9a4506a092b1261e647f553305e24db2358847f752e439ed4c15411c44620e78d01051db8c8d5408ebc2204f75e69ebb5d02ed0e82b0de812b31b882dad2506b6fed15be0c3f97e3b791f4e21eb9f21f873eb8045bc e7352ec5207bc1bddf135d3f1de8d2fe86746566dbf2478faec9c41ab6d47da56798af8a67a213b9495cbbf3d0e309ec288c65ed73c16e6e8506e8067dd991bd4364a0eccaa1612f172a8d361408b8fe9313e2a4271e8f2ac9e9fccf76b71a8f445a3c362995c1b74b62abaa9408c4e7a1985754eed14d1948e7faf378fd05 750d6a616701de0b8bc6606398dd43e174ef7733723aee91bb18f4cda2e8eaecb92f5dfc4b51eab336fe9fc88609a7db57fe87ad076386a7c9e7ec95264192f004d3968779df827d365898a4090fa77584de6b0bb385397b2f3d0aadcb1b055ababba9c57b44f46d1bee53fe9b4aa7942b736a10f0cd996050f721a2c31190 9fc6e5714dbc0ef077ab022c586574087bf9e04ec2de91717e9fec8156ea0cf5a0d42c135d4f3765766018166110e0b977637644b7b5b3ead9e4daac9075d89e5e04d6b7412f287c4f232d50666973f4800dec6c0a3e7929ada06c760a0c032ba7e12016011074220c0b5a8521712e105ab165dfa64e20508aad153a5f3e66 748c2f592bd0ac23405952a6bb5f324d5d3508ee50168d3e42fd5bf68ab658818b94283e16eb124cd29f6a69a6a5f9058b93285a858d54a9e2937ceacc276a1f95ad867d159037f86acff2fb4179f2079a1d53f99cc875379478bb5fba5892eb50d5c516288f8c49735897331235eec56b25211b32b03a58ae893081ac8742 9f0139b15a23793b4d764e985f38d4f9a381e15c845742b1557e5e671697125ebc6ba21f7a141950c1ea22091a3bf12f2142c2375c57768136903a4152eb856c2aee37a20c3c51c4ba923ef61ad50f9a1352d14141faf2e2ce08e472801d0fe34576228bbf84f65bede6b126ee490f30c4641db47fb652fb05c16b8738c1eb 62ebdd7c9a31f7e92a568ab77cd097ac8dc57e97aa6327cfcc0c6792cbc6ada1087f2f0e561de05c9703048ea484338144401aff886af73af6f7133f203cee5c1fa43ea9cd751e5427784ccfa901329ff8e451f0b22669235f9b9ea9fd13ad0b1c57b554068dedda8745b6cc1bafdcdb2deea3827fbe52aa8a360e7859c5e1 899f8439431fe772ba668b3a3b1a99b57310bf0870f86d3b5d8d617ccd085fdfbb530a88d65a978e96f1b54137d4bbfbea1173253dd1d5fffa52b7fbce0882f521f17f4d4a9693c6f033588bb619a3dadfe922b97fe2047e9931447d372bd1bc802b53bdd2ab1b155da7ce01d01a47b490432cefbbe67ffed4078470c7e4dd 7ac8e76d57c5470f010c137f816da5425174cde833909dff07facb63580a034ace2d7ffc08d32c0ded750206dd0444f1f1e769474de065112b4877bfd30867ad9f3fb0d1f3e9cf2fcb25ce6990215d241e0b6d8e64a71f0b5178234afcb03373e09e7e35e71bdaf68551b2e3f900598b57ab6c61b0b1bffd256510864cb71a 4d7a2b742a78d380759bf7069b5f1ff4e34bff04b7ed7c0e023e4776d27c8d7fda75c358261031c68924835b83438e43dc7f5d357b4a719e7ee153438313c45a900e608a37d123de26b4bdaac57dc756d2de11281e723e09607255b080765755811e2040c158f7c664585666f2c87866e56ef03d74aaa183398329d3937162 651686f32cb9047a47edf42d294693ee311872c8ae8722c597673a52d3652ddab08ddf261f0c61b02e7542230a50e589518584173116ee4a3c76bc1a40df112d4eb97caaf7a650221127101328e4155780ee76be090a9fdfdaf29c0cd9ec37555f8cb4ffc61852249ba7ea3b4d251c61c7e8eae9f98866b669516c81d83a7a 391f9d8f34535db519e6e6a61ff5470203e604bd0a8e0c5778ba95875929f4f49b8d2ec26e0c8d030ec93b77e8a25b832f3373ce61a4b43491ee40edf057d4596efb3ad61cc29c1b6980b0e5039146d61934ca28b4dc8313f03dce37736b556c7107a55bd9729695e56939880ddf5004d93cbcdc9f68c95de59e38795adb2a 502fe8247259f82334ca32a2fb3dde620e303c3ead6650478dbb7f4afaab4805db2154600ec0b02fe926c9f42007ac24ced38df61f3889ae41825fb89c30e0eb5ef8b2dda787e6c75991013c5cdbcc10355e8bffeb473116c623ccdf2346afa7c739d0ad42f69ca0b7e68319c130ed981fd6c370e0d6369e6ee97e32752b86 10ae94de09bd96502c4e34e86610ccab2dc2cb527799df784d5643a6ff1aa4d3d9cd0b7798964fa330bbc3351243be6a3b1519211004acbb08f4b41ea396e485ac1de0613ab29174b61ae361c517bed30bd293e42d36853803e3c16766197024bf16d0d8dbd260ee5ba76cbae75890b66d5bb7ff72d1630f059f863c4a0f0c 207683e7eda064e6c8596759595735025ad9b3af08180bb722fa713e428fba0f98d82499cc7c747183f6ae4fb6bcf978bb7574c4a569618571e50dce8ffb78d4603295fbabbcbd02237ef2a213492a6b41ed0a7f9aad38f3825926688f7fe4426c590f5479bd22a451c342a564ab02ef8169f967d1ca87a238ddd6cfd5696c 8f97ae4870ca2d814005fa376e1376bdca52b732391c5b71f51ede618ad9370fdb2a89d95276df695b6db060f2d683aa9b80a40770a1c76cbff7bfc7628c155e0fec88ab4c5ce051c8681190c8e60970230a52c428b1b1043ea5df17d5c10b25a5c6ddd941a023b00a9f61e89a4760cfcb0851eeea9c393d8b7dddfb9efb64 f1118b3fb9d45b610b5ec92449c72a451540f25b407d5162d85bb57dd1864d69bf7dda142767d6397437e950ed071793b63fa5ec834ab66ea827f2801fb7f33a2445587fb17a431b9a89a512db355e4b2f0290f8528112fe52e3f30e8748c2f2125aa2e4d8781f74d173066e1cceb94931d004e11c916f5d60800000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: Symbol %!PS-AdobeFont-1.0: Symbol 001.008 %%CreationDate: Fri Mar 28 22:03:48 1997 %%VMusage: 30820 39997 11 dict begin /FontInfo 10 dict dup begin /version (001.008) readonly def /Notice (Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All rights reserved.) readonly def /FullName (Symbol) readonly def /FamilyName (Symbol) readonly def /Weight (Medium) readonly def /isFixedPitch false def /ItalicAngle 0 def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /FontName /Symbol def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 32 /space put dup 33 /exclam put dup 34 /universal put dup 35 /numbersign put dup 36 /existential put dup 37 /percent put dup 38 /ampersand put dup 39 /suchthat put dup 40 /parenleft put dup 41 /parenright put dup 42 /asteriskmath put dup 43 /plus put dup 44 /comma put dup 45 /minus put dup 46 /period put dup 47 /slash put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 56 /eight put dup 57 /nine put dup 58 /colon put dup 59 /semicolon put dup 60 /less put dup 61 /equal put dup 62 /greater put dup 63 /question put dup 64 /congruent put dup 65 /Alpha put dup 66 /Beta put dup 67 /Chi put dup 68 /Delta put dup 69 /Epsilon put dup 70 /Phi put dup 71 /Gamma put dup 72 /Eta put dup 73 /Iota put dup 74 /theta1 put dup 75 /Kappa put dup 76 /Lambda put dup 77 /Mu put dup 78 /Nu put dup 79 /Omicron put dup 80 /Pi put dup 81 /Theta put dup 82 /Rho put dup 83 /Sigma put dup 84 /Tau put dup 85 /Upsilon put dup 86 /sigma1 put dup 87 /Omega put dup 88 /Xi put dup 89 /Psi put dup 90 /Zeta put dup 91 /bracketleft put dup 92 /therefore put dup 93 /bracketright put dup 94 /perpendicular put dup 95 /underscore put dup 96 /radicalex put dup 97 /alpha put dup 98 /beta put dup 99 /chi put dup 100 /delta put dup 101 /epsilon put dup 102 /phi put dup 103 /gamma put dup 104 /eta put dup 105 /iota put dup 106 /phi1 put dup 107 /kappa put dup 108 /lambda put dup 109 /mu put dup 110 /nu put dup 111 /omicron put dup 112 /pi put dup 113 /theta put dup 114 /rho put dup 115 /sigma put dup 116 /tau put dup 117 /upsilon put dup 118 /omega1 put dup 119 /omega put dup 120 /xi put dup 121 /psi put dup 122 /zeta put dup 123 /braceleft put dup 124 /bar put dup 125 /braceright put dup 126 /similar put dup 160 /Euro put dup 161 /Upsilon1 put dup 162 /minute put dup 163 /lessequal put dup 164 /fraction put dup 165 /infinity put dup 166 /florin put dup 167 /club put dup 168 /diamond put dup 169 /heart put dup 170 /spade put dup 171 /arrowboth put dup 172 /arrowleft put dup 173 /arrowup put dup 174 /arrowright put dup 175 /arrowdown put dup 176 /degree put dup 177 /plusminus put dup 178 /second put dup 179 /greaterequal put dup 180 /multiply put dup 181 /proportional put dup 182 /partialdiff put dup 183 /bullet put dup 184 /divide put dup 185 /notequal put dup 186 /equivalence put dup 187 /approxequal put dup 188 /ellipsis put dup 189 /arrowvertex put dup 190 /arrowhorizex put dup 191 /carriagereturn put dup 192 /aleph put dup 193 /Ifraktur put dup 194 /Rfraktur put dup 195 /weierstrass put dup 196 /circlemultiply put dup 197 /circleplus put dup 198 /emptyset put dup 199 /intersection put dup 200 /union put dup 201 /propersuperset put dup 202 /reflexsuperset put dup 203 /notsubset put dup 204 /propersubset put dup 205 /reflexsubset put dup 206 /element put dup 207 /notelement put dup 208 /angle put dup 209 /gradient put dup 210 /registerserif put dup 211 /copyrightserif put dup 212 /trademarkserif put dup 213 /product put dup 214 /radical put dup 215 /dotmath put dup 216 /logicalnot put dup 217 /logicaland put dup 218 /logicalor put dup 219 /arrowdblboth put dup 220 /arrowdblleft put dup 221 /arrowdblup put dup 222 /arrowdblright put dup 223 /arrowdbldown put dup 224 /lozenge put dup 225 /angleleft put dup 226 /registersans put dup 227 /copyrightsans put dup 228 /trademarksans put dup 229 /summation put dup 230 /parenlefttp put dup 231 /parenleftex put dup 232 /parenleftbt put dup 233 /bracketlefttp put dup 234 /bracketleftex put dup 235 /bracketleftbt put dup 236 /bracelefttp put dup 237 /braceleftmid put dup 238 /braceleftbt put dup 239 /braceex put dup 241 /angleright put dup 242 /integral put dup 243 /integraltp put dup 244 /integralex put dup 245 /integralbt put dup 246 /parenrighttp put dup 247 /parenrightex put dup 248 /parenrightbt put dup 249 /bracketrighttp put dup 250 /bracketrightex put dup 251 /bracketrightbt put dup 252 /bracerighttp put dup 253 /bracerightmid put dup 254 /bracerightbt put readonly def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] def /UniqueID 42996 def /FontBBox{-180 -293 1090 1010}readonly def currentdict end currentfile eexec 8dda0385bbe2e28975521ce366a1efbcd19951c755b299f7de57699ffa32088176bbcfeb9d3d075a656fc2d3ffadac652e0956194030c65b6ac7dfb4cce0096cf30964c72ac7742ef0dfd71d6aeda00d45b6c86f2ebeadafcc658a64b076f436a780849440223f266d2dab36e19a62bf7550db533ad06fe9bb6bb7ebaf6f78 06f6852f23ff339a8c1fa991f1bf47f71268b6727020001c8171cb3acdb4eebea4d340dbfb5d95d8d24eb1c831a51121a967305aec34b69ab5a3a0c21ee4192997502d726972f6ccea2c58f4e7ccd90e299cdb76cdba9c42084edd3a07ecf08d5d8459c87f2d392b866eb9ca8d6b8e8cb4cf97599599df0d1c87704f3532f9 44b58dfe91e713ff665bc5a1d74808d77591d2989951c76bc0cb73e1b40597b250c9776948f8d60bead8cf0d4fb39c205662436ac4a6187b00b5645538a68c6ce44e7231c7492f6b4677329a9823d5510077ae7874e5cbd15e8a39797dd2b269d030912cbd063fcd5befc5065c16972fc994aef7110c16634aa476dd2beaf8 9a89a81b20101bbb2942dac0e7bd0e6fffb56a851127ee061e3e97515730d3f92d488ba61997e88e50520e778b6e4fdc856126a03bae52db2584ff2d7852ba528fa91db625ecf87d97c1198ac22a8cfb2f19e377c558112ac6c2603dcc29d9402998e7e5c749c156b98f8424ee10395dcd7141d8dce9bbea1888b389ad7288 38348d4c0f924643d9fccde61c5c46f99939f2eb3dc0002137e456161b54f58a06299bd20184d58981613c285aca7dcd5736db403c92e9fde31f3ec14c2e3e67f9648387c1d2fb251fc8310c35608177e05052764505a7e054c1568429017d5af318ba6f39d33cf88dac226b1e3f3d3a3b1dd7d3a8c67367ffb00a7568e1a6 fda2907236f77bdb618fa1f04e5317fa2d8f5da3f48fd88d77c73f439b7a68b9a7970ba0108da48bd1fb6284d94470ac957d679cc7665a6f0d3a1abce3352866b459ea0aa6678f00277172daf4c5aa545ae425b2ab530c7404a04ddd891ffb0b3cbfc6e5b8614986d7216e4bc571590cdf32ead925c0afc93110751b5c6a95 025bb9b74a00e941bb7714525646d584d0565c0106ee006d10ec7e289ab250d6e99c3072afb4c15e1ddebe02a78b508517f985a4406b0bfb74c7011010b1f801217c1fa21f60c4e50ddee045e69c9c40075683c68dfeedd25ce02dca55b96c246670c9e84e586360077921ab65d0836eae8675227b3c40e10cbd7c410f2999 2f1bad2fdb649626271df074e58d4754a3877316f32f9f6d891bacd719b3de29707622f725d5508a268a40a5896e06ad92d2e133389bb0ded7dcf837635377dc16fe2e5ba97c6f04f751911f82fab56def6221c8029dc6fc0878c36954a92d4001000cf48949e772a8fd21de1922a2e546ceaaa2f8e464fc6e82e114b5fa17 ee00bac6a27e96ae49775f26f1cc6dd494b16fa60fb976e5cdffac370a977dd1ca8468c45c9919cd17113a811073516589fd5bcb5c5a50fee1df5cbb0fee6a71756e08d144d082f7714fd797f75adfbfd7a4ce0b2a8e25bba46fef859bf88afcfedb408fcfe3a0c517af7065d93bc9534ea318ea2fc45e0ddb427287b6f4c2 9b1bf79b82021ebcdbfcbdb93254c3f7e9a8c431d8d7bb617b9c8c9b1d78b70cf24ac4b1dd4edb7b4629d5061f0f1cb86698afebd44fb08afb198ceec07d799f426cfee1bc9913e7a997c7c136a9b8571194349a8e960615de021415355640c3e3855873a38c726eefe0d9addccc89ea1e4446ef4365478d26c2cf094f8596 29ccd6f433f42b5eb3f065a96dca95297e406d97f60d3490dc6c2ec0830d16b502ee1832ed29356a16c94f2f74bef5bda000b36a1b7c228958ecf8df388909038fefa348b2394fd6018206aefe6ff3b7362a9f65cdc181ab7a9f1b9abb5c36321e9faa8e081b583035c34d3a0eec08e7b08f182c67de2efdb4c68ab169ec5a 89df851a3b53019c2c604b560a58ea246c8444f9380f19b553611fd2cb4ab5c99740289a947ffb7e2b4670efc0fbf28a631c93c0b9e84cb738f93ec6c7f78e247419676a3ec643169f01465c032cbbf6f62fdaf66495105d30538708eb93e58474374b8826a64292753bfdda20b265105fd7c4b1d57993b063b752e890fc9d 2453595f50fb0c16deb4ca009d581de07767a8afac5fdce02ffb4874a806e38df9ee47d963c9f7cb3e650335a1c85237e83ea2dabff0d2fe93e82a00329c607b76d45425344d5fe894e55394775409fa582a50b06130034ac92f03b63939da92fb22f192d2579517aa7141f28bbb58c3aa7951c9615fbeb1b76d04ad6ff685 d4887d9cec6e1ec2355ba1ed9bad56dbf58426a9964cb84cabbc307614ecd83f47e3856f09719c82246c7f987a6e820e88353adee2f7c58084991a3020ee034b67d0f16b921a8d992d407177abd6027b85b5abb4053dd5a1c54e1cc679a63a59b5327332860dabdcddbd29e976a242792b320ca11581d5d71ca398673ba4ca a3a2764fbc2ff807f0c05f5fcbad49877f9abe090324b0673e366a6d9cbf120e7b50036c363b6188d8f5e2c8cf6ee4e0146bbecdb0283dbdc3f4fda4a757c916eda66f627ded80d3906ab023c318128512ea33999ba08c604c372f742605c884864c3fce5de17320ffbce73ccf9d1b293643bfb587d97e73f91c3dc8707551 a9626fe765901e9e15f3128efa8c133c2ee55a5f1622aa143fd2d32541badf67dc1dbe132b3d5d3d28cd83dc7311bb1fafc0477ce525737191bc318a3d6f6cdf80bfd8289d0e9a984a2b43fae6894748fa4ddc3a4015dbf9cb8778e7b957ddb126b75dcadaae6c41c48072d767f4d533bcc3692608e4153e4c51b077e0f867 357de6624ae6abfe9d7c77638ef25a8bb685f8a8f736c91556bb9fbf31e97df1aa45eff70ddc64c3da1ec15962e34f62c9281b78970d09a069e31ca5239a449b68f97fd45453f8c74575d93ba32d7de8e7023cfc69a565ce01af28ae06949b826c32f4d899c90665dd666a4a3a887961d02d220c30014391153158c6eae0fe 6ce5d67c4e4a4f014ce2ae331d1ac04e9131e7683843ac285253f8f211e47547bced470d3da3af611cf3eaf64373e7922488522c9dc6250e0d45951d4c5d81aff239392924b613d82f75e12739db4e4d61a98b72e912647e74a243877c6b5044041051b67446aef3aaaac555970651b44b3f3f2f38c7b1d4f806ff6bfb09a7 0b81365831aa9de761222d9dbc17ee4e2a5f3dd9d6115b4b234efbaaf7e6e0bc29176bedfce51c2fd6a49a8214be6ab282b236219849b6497fa6d9ecbd4a3ac6dd1906829a3eb83a3011c918d1d4f7f5443f03cf7c7a4c6b0a4863be4227d96d547f700f0a0165352a9485c752182b7657d199cdc8b4d492db7bd201348d60 41f092b3111efc8e534238eab160e439d9bd2f2881fa51378380fb7442edd63ec35fab38896e8f355fd0cfce5d5626d7e58a7c359611f6d5ee1baeab9695d26c2716b20157e7337c5a9eac8278ca2243a70d4ab9a597f457bffe8dbf1185865a9b4551d602bfae5259a6bcfe0359ad33a02e0bbd8a16061f918a31c5701820 1195a528a6bff4042304f184a93385d98ee591a489184706152fba680ae7cc46ce18c3988c8be0597786d87de3c3a6b87e54664f7b9688d6c04e6090bdb1538913ae3513a858bcb6acf336e03f1776e93b74604723db8bcc746e8f117b1aaa7bd834f328d3ddbee4960cd7d2227f5e373bfaf1704ec5911607e66ffcf877fd 84978f5eda69ad33715b9005104d888baca0e810c2d9bb5c3333e92a7b5d7ec5065a44cbfebb070a32e492469ccad1067d5bccc7fdae294087f9688991aaf6beba1e771e15fb03b8f867806c6e4dd7e872f370025f11ea8d0a4098d6f335c75019138502e9ade27a170257c0566ea3c0cee8b4fcb7a6ec5491ac346b35f97b 224b3fd13965f1d5bee6ea025f1a97c51c2d5d46ba6f48eed37c5a8bac8a36ed6f0cc72340f02646ea4c67568ccab4bd233266ae8d83623303f9c6ee79da6dc347d26251c5599a52096b795a24a82e6c4b2cabe150758e9358615ffeddc218d8f81bbc32e4780d925ae0b79688c146798a6bc81f308dd00067c94d2094b1cb 254a5c041ecaf70ae06fe53b7beaeac1cd4e44fb503144eedca7414e184e37cda24f88a290d075e278a09d9e826d666eae1312a6f5abcb55d2b88ba3e6c4b95e08246c2123d0f7552e5c975fb8afc67bf7617c922943be76dd670c50df969f3b5bf2c077e4cdc27d910bfd2d81300ce868953e39b279eb823fff40fe2f7ed1 23ac4ce9b33883bc666e8ff0c73372918ae7b3bf76c373a3e978d32971791b36c99e0e011ca35d529ab7a5c8612f27d25fb43ea881ec3db171cbeb3a3a2d08a0aa6cbd8ee26ca957ddd557cbabe0dc969323ffea0750984dfae620b9ade74bee70f9800dea62e3d182da5bbd35b37d52d710b2e31f959836723d9acf104590 33c48108c6acc641cb25259ef387af8c2f5476847e415a9b37abe9a9bb0c35d3177d47b826a07d4680056afd60afece29e29f8ace87416c7343df851931534e2e92e2407e709dfa25be5d31961161705e23abf87e800ab49ca6b61e18e4835cf9807d0f360835ce12b8bc11e2057402f913ba0cb9cb921383c956ef7e38993 6d8c63c9652cd307cf356edf8266dcdcffd162822b3d5745e839d5aead8fe07a3d4e2136e90797c5d0d73c82a2d5d5c9962d02ac784b7b20174bdd47fc0a1dce504cd9fd139719df3c9d9a119667ad3e8a8967f17c044961104de938f14f0aaca0513ea9081ecb27348cc77536729efb2aa5a3daa54371207b36c5fd352a98 cc4896b537b30fee8165b7233569a418d297531dbcb3a14c78a3d85462c5f58167a9bbabc3e81563c7bd4d67e28b9eb4a9e8e0aaa5bac958e0b098ed48c81e5f05095f4d4076a37eb859fbb32e3594131b547a0b2be52f68c98cc688aefb1f498108cc425fd9eb6668f50da7d11602b3644e1243ca05b68b86993b1d3d564f 93ecacf6c7bf2d967da77e395e4d761bc04a170c35d1cb9040cc824a33564c11b579a113f598f6063e20b1a90bfdacb5f9d7bef4009c7dde9f0548efa4b84704e4c7db807bb6c45a59442b2f5cc505d2f708a07791a8377299f9a93d5b020635f62a1698f90487692e7c4dbce5a89830c9383ef38c35e1c4da5e6d8c82ca71 da2e066c7d0be8775e1597ee3790b341d04ace82f8793a8699f40f4c215b740a4ddd7ed6f633dd7bc5bdfe382ba44d8da0af288d27c5ac2275afd98c0f6dcef689d6c18dd05444197c235d6c4fffd0d4ae738f708583370ab97e23fe3487e9a1448997f5ae85f0333b7acede3c2e017cc5959844057a30571d5c105cd70060 598e46b1338b252f106fb414673fbf5769918ba184b2721c4f346bf811701118dd7bc87b99d94030f089651cfaeaa67ce98fde391c4ffaad4b461749595c359aa3a29fd8eac363034a441bbde61658a968359309e8cfa46713c28573a8ffcfca320a9b261b924d0b3594752eab93d3ae412e42498cea914b060bf2a3f873b6 1d70d50ceed77d7e8dfc8afd686749bc2a1172723a9489c1ed7e50bb32887efb97721c2095ca934ebf0c5a560989c726986287e6e5aa8f8b41cfd7966973de9fefd7a951343da41ef7deda1a90a736ecc23791220058140a9765a68da3a05410feae05e892ab98480fb9a0683927443ce0ee6a3d41af55e6360f365e87d3b3 66f49aa22a96948b63efbff46f2877a5c82db0e3350f875f6e06008eca65b9abd3aa46393e634e864a2467d03fcba30c0d901fadcc4f32be09123a3097b8668039b2ddaf65d9fc0f162762633b2be257c3b6d1e219495303bfeed7585fdbd773a3bcf9a9216701ed906134b72ecf116cfc158e567e86bb094dd75f7a31aef3 95b57f96cc4ac739312fb475491a51a87141cb9b69d26ab25ad0cc2db3f5fbe2f4ac62f763d0e07c68a90b3f080cc4439cc9203cc35f1cc1b05c8b15fc8da648aaeaa7c6e9be25bd4ab0e546cdb4fde2d3e37492a0d1870427d2a5512ad4a4404fca76525662bea2f092a3e459a57c43bfe967f825b337a149b4548fcc6092 833e3601a7174d65428b0fc127b395079ccc41eb0783ae6a59f27deea923ea1218004b28ae86ba9fd1ac220164e56cba287866e237994f7b3c9f87c89273e87ca37ad2a7e4b49f8725eaff5945bc1e8a38ec762a1698f90487692794b8863b8829a12f0173cff77206de0c51863f9486b535195b402e6756fbe9aae85b0fdd cd37bc42e77755eac8c9112fe050d4ff4f85b0593e5ac5fd15ccab06d233fdde2c4273fe4100613a6e216246c50dbfea5ae4d73c9011cb57354bb5a7367877f8b713109953752e71de96469b5e7962cfca0a2801a7cdc744ac8eddd3faf50dea43fc847271bfadd691b25d725ea0c048d9bf3a647a28490e28dbcbd776dadb a506f4b9e48a19f6b8c88563974d27bbedc8f90ae194a515887b33acb58310d8d9a6bd66517239ada895df2b76947eefbdd95d5b4d4249338d5d4e79fcaaf80e6021e3168d31d46f250a21045bc26ffeb66de912d2f65bfdfec70f40fa1fca155be79e19ef3c47449aa13aa2cc4608ca8cb46dea76314364250fa7b18fa096 accb689cda9be75c1c97c54d163d900f3a2df0b149096f267e5188eb70a72516d7902ceb4d2b53196e97fde812842eb18bd8b81fdca020aa6fe0423256d62c239db9b468865de7308e892a9c3ad9de5cddea3377b83c5525fdf7c68092a6fa1f4dde10ffeede3d575db8c76304e4693ef0997a01d76c8babc93435dc47d5d9 2d4978d73a5eee6d1c3faff112ec24f2e9ba1b7fb6b77d1a17b4218807d52f2b9b19dbcf792de9e0cae5a63b5d19876c8747b85820ed5156dd76e40047d604f956eaa13f088a40cfe12d7bdb48dcef4d55bc9d1a36f1fe388b3a18b08c6c814f95e576fd37cb04ac2a808ee2463beac694d5242b0ed37d7ad39f5fedf6d24d e9250097259ef8b2fc7876267b6e4185f011699e91aabdc29d8b6a7b2a591bd24a20558c0f4acdbc90c55a2d946b1ca6462f2e4c6a1f6bddbbb22c71db352cd5875dfcca9eb600f40b5773647bff7062e3a70007b1b67ab5082ac00fb543829efa14c2de67f82af0c1dd2df76f3ecd59cac53780c7a170b66066b1d2424263 9d001bb68503f68c73b18ada215459efc7892b32dcfaffe8e5fd689e264115274a289b99a16f3394e746f09481cf2a654946b67b1a689b73c8ac076925338161fbc0f7e562286cc287afb9798a54d9fff7aec4f29c792e455f803b855898899d4703504f00a83b937f92b429634732f116a69ce1276006e63b2058e59e3879 5816de7cc7b75d480e72660527a72d87dd111c6a598899f8a4f6a61b071e349b61b55293da28c5db5a3e3284d8ca5d90ca4826dc140172a5f5ac7d839256ee9be9cd45eeac3aee11a1fc4949acd796c52de69320310cd143210458cf31c32413b180af54f2a08d4211e0407de959a46b569371a4cc573ad77d6fc07a6932d0 1ac150d96fb3f028aab2fade0823d2b606ce517257883042d716c016f4377b8448fd461a0f710467c429c99db02dcc30a54d6e8ee952d68856c5f47538ff793a38d6fa34cb798b204e7525e898bf96edf9f5664a07d91c16a8e8b4138364fd615701e40cf9a8e0ef1b8d531d544053b3d78665f4fdccaa3a2dcb61fe360752 a79a19da5db010b0d319b97ca6682400de421739901efa66f9a88ae97cadfd155d359948d21fdce3b4722e49d5989e2d5d6fd1e6a3964ebf12e2c72ac5035360cbbefb77bf83bf5e983ad39a5695a64e0584e5e5ea60fc4018ff70d6b725e51a82dc5575759d6130ad57e2f0aff28484beba6106c854df1552da18e6a886f2 f75611885814fafc8a7befcf6afbba04809175281d78f9de0f3574e19584a7133d3a879acc2a76fbbbd9c1dd69eeb348ac699b5c23637c5842d6d3b8852a3864e44afbf1ad6dc72892bc4042e8d4a83cf5006849b4fda58b27200212e40f7b33410366a19349eee37d5db96cd5a9a7a2ec739ec3716300d1963bcd6a327afc a6d3d0ea4a530373c0433418c133942597fd01baffa24fb7eca9ca8925ad3eaf574c3590d52f450a808f81a0c17e1735b7a0b33e9bb87da1d4b1fe5982b5e67d998074e92eb42c9b89a397bbea6640ccd8b85c5db458fee3e9d7afc5e62c372bb5df0931f807b0d9685db68cb86180f30d09471424e233e882fdeb3dedb235 ee5aaf4fcf963a215a0611d5737941b404f56f5a09c1257cf81f1fa5e4c259644fe058f0ed1e5ff03f2812e341f1c32aaa2eec7378146817aa946f974090fdfd8ef644874a77930b7507532e89a92e9b8bebbe2b4f4cfd90ffc1a12d05e40b30d81bd636e56012e6c1aa6c0a0ce10261303b7b87ccc39a78e178492489fae2 dbdf46a22da38c23da154ab5b2040b05a2ac11e0a33d34b5ed1e4bf958873bafba0d0c9c1a43a566eee422f47431b6a6958a34bef02b91b868eeed9e38a6d20d7af1ea66c21dbb0d42f273633f87ced2554519dc51368ed60ccb752090b5e3c756dcd024b7c2c3de9c02a79142cc23b1bb5fcc08e6c9777e1a41e86d8b0f07 03811b3790eb224a6f752883bfe0860715e334946a1c8ea440cd6710674caccfd90db1897f020b7307ba2793036ec96347ccb1dbf78c000e49c8110fa5597e2fd2a0c48ba0b96b18b318756488db3ca3215e958b34f1fe9aea94a1a7aee7f697848a2cc07675822783c9c5807ebcb069f1d070943dd926de12d88c35592789 1a420c985b969e986e0192f662e886d2a5513dea2d839b35d9902d4bdc6752295b761292a63e997c20051a040314c6a86fd3f2f791d7b5371914e343e61428833dfd3eeadbdf6cf368fe636212877d348e95c2882a5661ec1ec028e76e944ef033662cb1677ff63df2a537e89222348d7ce4579b5fbfac2a71b3cf584c0acb e2dead719b06874a7b4f725fff17e1f5935aff4d50691ff781d6772e4e916430f66dbcc522aa88af24b2e30b5e3264558624ef3e8792c142371320bc6d31b0706dc458d81b860e293d47d70e1c12fce97acd06fef46aeb22c8384a7aa66d307867d7b3c90544febf15254b5639724280c08495ef3198afae50c4a64ca1082c 34d1b181053c346314cac3497f15f32946e0f30fcd48ad64ce05db65812e9b256acd53afcd3900add856cc73b2bdbcee4b905f72845e4046a055b441d7e23bdf8de57cd6b7449d28bfc1376bfa7c1deb0aaeece95e9818feb14f5ee6cef4ce55553f6a314ea042c8a3b4f038eb223e03dde23d4dfc21b04afe0130db1be221 639aba016be874d16f50ef548a33c9aaabc701acb0b0e1a806d81d0a4cb21c0f8b7e064027febb8d9b98c0caefe7bc2073009c9f55d10f4b2653e08262f2dbedb6b3dc5b0649abbfd7a3be625944fae5064bab68f7267f8cd3bdc732537f8dbba779e3f50f607720fefcf3a2505bdc44eebe30d8b35a59417693a5d62158d3 5dc42758b7656cb7331761802483a156c5d47ba1926f1abcedacd4ba24a60488459e5a55fde0f56682d3abd004b29438a735b7484afcf057cd4f32733a9caa3ba2ebb778097e30ed2ff7b56dab7e58b4aadb109fb8ba2ba69f1e661849d7c8638faa40318f7e15cff2cfa260da0451cf0fda569461f10319431ee42aedee83 df31f72d5923751745713a3b71fb7b5a7ee2de6583aafff1a77be181a5459e59e8071b6aa9a992e67f7d34a826be2d664002abe68c4d09f21799e33f31e86e2d48b250910d5da3862fd2ba75bb48dee55a88b6f68cfa91bbbb0f08b77c56b43ed295578043dd3675f9cfb7ff2c6cb843abe28974c2e8fecaf0ca923da144f2 d91ee185df2c0e9e1c7ea35a38daf6cbdac67db999ae9b83fac72b22be42a2f63b470c2f86eb552d482294b95f01053abaf7f079d51782d9d0eb7ce9595228a50d9f2646277e8d9df31e26c2c8a434efecd49b53341afdfb41d5d86dcb2ca9a3f48ec48eaa82983cbc69397b76431110f6724e7cc0f7b4546bf41d073ff25a 6ad6a43b8a8f50062cbbd6c5f9b3d09e0f161e942823dd28e01cac4e51f7ef5eadaf6a8dec6853b2b412ddfb8dee2dfb58e4be766cbcf1e8a954c8b67f28d7a6675bfbd581301ec31dfe47bdaef075e73769fb768686e19fe0d5333e5825b0b98b9753bd00a5b18d6c595b5199a1004b745b205db48e43d2e65a4b6bcb7f69 3711f07e367eef6588bb98c5ecc3a951f1826a0db31a440df73d1e8eff42d31322d0730360a4af1c318529cb3faba1f219d0dbe62d2aa5fb998ddbf78ed7dff1169e3c2b32bbf926be863c5dc357bf95a378ff104c9634c2489f944d5070795cbfef6822f991157cbf1267310922db6a8700a85ce19816af9f5009791a1db8 72f04ef6227850bbed40f105effa93ae747f237ebc35996a17def8c2c553bdcb87fdbfc73c562e619d0e22e8734992934cb13c8f5bb6546a519cacb85974919daeed4cc39315d964837dc7120c16faf23d339b39d8ae5fc555ce04db33e77fd890af32d3c21507cd181336b9b1e8de43ffc805843364e19fe9a91c89161403 99ed0ce9322db840d2d559e6e2676cffef5ccda610a41a36e17a3851a9b6a3b196a16d60ac56ae04a23be73f1bf2b6ea6a4dd5dd8fa498c0bd9dd7d64bf26227dbfc0ad2da8b617200762678036f0553f3bc7551cfa19ed13673b7ea9a6386fcfe0a3c18521a2e3335fb4c2aca5b9d10616c657c900c5c7709dd6519406ee7 09189406a7d3afb767e251ff11d55feac2cb7aa8fc7ff10b9758bf12cad01b78f802875cef9e8c25a876a11269ff1c9236e4b9d2010ace6270a23b035ac333d409aa96598a093fd97d73d3574e4ee7b39069daf9608b1e1b910792cbd5bd6b41cc20d10e8eb7afeea758913e8b7e243dbc33a760aa8f73400b3f8b4d4d8175 d4ddd12b49a7157d1f078a77460229f29d8af315e29e5ecb386fc32b41871efc789ada932f6ffea4fbffa07055cd5d47a3fd8c17dfc956132b8117345e17292080efb5bfe77ed2a956866509ac8e896b737639b6eb6dfa5ad97a27996df5ee0ec807ba74511f6a382fbf1606cd813a8b92ea5bce7c127614d8c9cb19369772 00fc8c5b8a615f8a3e583a440860c8602f8803c391ace1c88573dff597e1e1e86a7fa09b762a1743d10e2ad991fc020fa9034f7ab37bfcd9d8add572f89e7dd7132972042f8f80de3300f4424c45449e80cfb9a7c6cb3ced41d03dac06967b92822a15735e0b4b3e856107a6f5dfe5f87c88e83184462df50e2b3dc73cbbbc e7e2527fef7928efa85f72a6645788480996fd1fa5b20f6ad38f20f1fe92de35ef7f078faf9780bccb95795cea7da36a0a59ccba9cf04eabb9cf608f13d30d9d5060f11ccd07240e2cbf82eaa10fa069a9ff5df33cc5f04291b62944d9c541f976021d73d34ef99677bf0c77d976ad480af40a182375d75d8799cc3a98c1d3 db6669237461d98c2c94b47e5d5a16848d161bc6b8d6bb49ceaedf19e0a1445b2b43b5db1ee6e7e8a56ac3e39308adfacc682297cd27dabfa64f4859121654cd4bb804b75d6a2aab1ae308e37c8764ff9a50dbc77d4980780405fe1794527b7b9dace056d7d27076955cb9084426d1318991e40c2c1f7c98445f324e74fa3d d56bf9658fe5100e29d2815142f22c8b0a0179c89389737e4b11b18eb05acee9d75d0d52a14bd709648947c7ef660267aef6ae23fce6ffb75ee208f0afa915fffe85966de1e8aa6dc68d9844e3cabd469f058164af943d7aee1b80e7edab46117cf4e5a804a981404232462c647cdb1dc827aba92f3b45960e791696aa7157 7de6a00c47b6bd5bbc565363fec2b112048790d9f880dc1547eeb9611b4273d434cf00c460134f9903dfa2512bd1d87be35cad3dfdd73409802e40834a9684e8450695956e1e9af26de84a6927db278ece1a728e742e626063b237a101505d908e1d9715f9d0e2a14b5405a8ed94748e2b773b40e25acb42241b241a1a7425 54c9d2f89ac539ca78e0a7e70cac1dc181aa3268d3799f001000f4063d315a7c780dd68a431b156ce363fff3d6c41e24602658868f38d7e6925b226b6a11c7f1e2b5fb67df7e1fa5ed7fa683393ee2b7834276926494ee47562b2f05f17ad122c3e1d91c073f0800ba544e8a40627112d2ede2e24becfff9af3898f7b736c8 cb62c91206aa2964a70c6e079e1c5fcf73478409c4779840ff0ee47fabed23fa3dcc495b43a13f89febfc454c3d0839ca36095af09c48a197370e7b978f7f29fd2e61e782efb3a78d780f62faad43f67ed07340ca8bd96d41f2f2367c57748bc2205df12a4321db5487249674f8daf15014ffaa6c890f5c7d9fbc97a0eb021 93b541f4f3268803a6261f6408009f0a655a5f2aca3bf7c69e344f1d706b2b4ce2e4fe45759cff8461efb66f320e8e5b585261fe966cba1f021f93b0ac8490ea015eb1fbd1f7b5c2a1203480d45661826479c3afb67e7619b8bbdc3202232cbd84b5048d84ae60de9c27e42d08213a7e6c6a89e2ed1c9fe24896194ea93bab 993c754fabb973193ad4cd3b3349f7501ec9da3bef61bc9c37ae15e0a39f7927d931fbb3904e841a61258dc6f9f817f8968e1b56cff47280572390142c3506fad50c1eaa389af430823b1d50d6bbb8a7bf0bcaf00f09a9c416d7b6eadbf3bad6c66681b63e8e982b923eded93676928803ee7ef1a92361c8d463a50dec7611 16fb36b1e5645d6d11b6d9d5915dda307c45768b40ef3eab0a3cd47795857ebc906df50d62a348f1b50e78ab823bb9ca6c5c3d79e4a727d2bb4c7e0158f789a06a5ef10fc678b94678a1494817474ff3eff2e4365abec2ede8803a52ae223bd44a9f6de006f25411203a252d3f0a7d31433a67ba37fdf5c19cb1dfa8f6f2f7 0a20e40940b1e2649b409d89bda82d225da83f7d7262b2e833dc39109a9f7c52d2908410feab8bace469cd5582d69f83c127cbf94b2ba18a5f693e8addcacae9fee9efcf00b43426908aac0d211988aa456890b250072e47c849ac5a2dd3ae7aa094d2fe2fd31b283e58bd247f13dcfe7aaf7051a9d780aec1971985fb6c64 83ad6e7e1d7802bb6d249182642b478a1cda88d141b25e82ba91ef65fdabdddae37e9dfcbe015cea798f895f9c3f2aacb14022edd5a5b613b7c6dd2d1095bbb107b03af6955cd516db4c0f6bf2fbad7da9984948dbd8261a0da69898e70666a1f0ce8f0f657635f50e55248cad29a7e737277b54bbc9a6879839c1652f871f 2f2f37b979dd0129cae254d20ffe4ef7aae24e07191c0a264c162360e328cde396d7717c5e45a27cbe06430b4e35d1b8559c34b81a7ce00ff0efc1c98a07526dbcc28231b1fcd32a3a8afd2f757a4e5867ea67b01c8989da742222c8cbdb568f8c38796f8ea3b9c782ec1fd018284179897d1c09f184b486a61fad60490c5d 474459d960927e73a3a0f884cbe6f1df3e6b7ab90422e701432722286919c4ba13e1292a8f87acfa353622a10115e7899f204b5358fc8b9ed670e4bcf55e76e10284d2912c9a00b36f391477de60caee3c239f990343ec10d47fd989f3719ba0020beb04fcc3601fdb5b19254abe0a3026d47b85c6b2b206213adbc8dad30a 7fa9eded4e736787646900bd08eb1d57ff1af0a67b83f6c61894197659e0d6563fdbadffc51c190338fc5ffad81173827f1bc7a00db84479250daa018efe4ac6fe33b26bd3765dd0d996890b77a82ac9555eb388d6ac131c03790add0e0b5aa0fa2ed569d3ebf276a7aeb9ae7f0746f56148668120fd65d221e670d6519877 52adf0dc0369bbd0025f9c43bbff1adde52942885e9afdadf8dc452b845a1a37eb622c08a7bc0460d4b1b417b36e091edc6302fea4e47939f30d5e4d67db5cf35c9ccccab5c393d4c61b8e88c3dc14c6efa5cdd534593167aed46d9e2f758703cd272ebf5ad2dbfc2dbc7cdb82a4d88253e47dbd33abbcf72381ae994b6b5e d750dab87b87aef008d5a76f5251bc35921c22c51aed2f73bb9da6a9a5d43ef6910e25730556cbe8b05a3578109ca2dcc8821b223ab51ee27112951825028b7d48de5590c4aee2a94c50d589644cd34f4a8c027f98d769236f6203344994b05b4ffe317137d0dd6bb13c32bd8a066d2ee7915fb51d5ec2a2b73605a68a6a9a 65c1521ddb30b74e5d760778f1b1763c0c935fc8119e41799b76304fd3d2da90155109fd20b31cd661dba5decf444ef8431b3edf47ea1754a2ac96d27342a5cb09611b90126c884ffe27f7cefa08f6b84b023d3095ded200a24fa692e84d3ea4159d90ed93e2cdd131faf7ae0ef6367915c47ba9029e58550a36097ae25c8e df5fc9e8a3568d36d08e826b377044214415bb82271aa769160959d78e972cf5a637fea493fa0291703e6c922e0a4684fcea3e0c8ce794fca23a154413b095c0a2bef152ba57d911fc3d9849e7024afdbe703b4c7c959cbc01802f413236999b1a749d3a12bc3c190881322fbda197a84859f1d4d7ee7652a5dfcfaac40f30 dd003f807e9893e2c6e7892fda5a67c90c344f7220b1025b61fba8651219c6499080e37513bf84135e95ccf1069b3296df6c6b4bbe46f064cec3fd60a0607393b9f29353f3cac0ed86ea823d2ce65174c9d69500a4bc25fd8ffaba8813116c621d3da8735a0e13caeacd7a8931b358f75df4d5574e0461327b943bba799c67 993fe07bb180375cc36d07734ea13a92a3d7afc1136938e8d4059c919b41c7545ca5d469cab0edede80b627d31e987235f2350ff0c9b75a9e050b0537331e70f0df6aac3c5581bffdef5d1b24735d15976566621ab52b15a1bd4d6725e5d5a69d5e2867d209929f1184b8478ca85fe04dfc6fdc0164a76ff9e5da5d3a68d54 e96463f64d34c9e0cf7133df9a8c18a6689497adf6a86e82f71d89c2c8ccbfc81ed616d66ef3f29468bb57b236a3772889b4ca39bd70d3b9022b15830bf43c462a493eb29b9b2ae43f07dc29542d426e659c682f89f2d655e7d94cfb508b25f57dda601e1df6c5cec8f8565ec110bdfd1ae69a3a84c4cbf12929929ebf575d 7082d2428dc0fdb93472f793865a325f3ccd66ecf9072df98b55c6a788264f0848bca0bf864f4a0d4ec941bfe339f60ee9e6c3ac5f43031c7aaeab97f1e4831306f8911ee45ed10148b51efecce6b7293b8f40b4642af614f204af6c072b48c47e7074822570f317a5fe730e59d725cfb698db0ca73c95a532771ed2cf19e2 729dccffc76b4c9b32280cc6cbb1e20bc5a016ead5820d841d61614c604c7e4e50ef845e90c140d0c1c7a312634c59fde56c147a1c394280f01b78d28e70f31bacddf09cd5efb4bb51f956280aef96e617b6fdd5b2c3e9e625680a34dc2422fa6efb7865ea061c8088681532d8103b7781294b028efe0b64900a9c240bee05 e73683859f5515b3076c435324e2e2c914b76570852a7b7f562efb6121a92ceb9f1d37fd2b1cebcde72824d0a6c1e91a451be797cfbc3b6d47759ae09b1edba945970648030686fd859afa8a6765ee025134bda9c2d6b13c22fc48412c9039537a03f831f3d292d43958526b9340a0489d9d7808e2904ec531c7d56e17592b f62d1c9047be95c0cae9be1785428ec40897fc27dad0714654ff8fec5d7188b396304161dd65ecb626ed34364d4b06610107c20cf25338a3160ed462c2746b21f774e8621a1b7a11b6ab41a727a03011516a993a8bffe2b72ef23c0f30f23a6a0d41c579ccaf0c97c19580f3f0185a223e526f83a19b4477e877c67851df59 0d1e29ec76b7ea84bbc7958f4fafcee76bc0602e09756e324c67466dd46721c92010a3881514b25aa093c1f4709d60df96bf47f2c50065253f2f3cb16d66b5d7d8d8281db3632a6adc24df76a72d4ac515157347ea5ef7defced3beeccc46345efc52c6b2fb3a06b8d6d65258ea44fd63ef9f553882f09c83a776664ab569f 3ec7d69b8730b36a2ae6ebfc3fe3646e286ed25cc8325154057ebc9edabf2812fb8fd247d942f254e5594b5e4ff122af8f04c9d8cdab08003df911456236397c51b4efaefc1011e3b3c5d64dcd35091626b951cec80e89c6cbb9b471b4314e5ae0797f7d10c5505f4a421d02af13304eec5414d548c36d3c99c8efe624b310 792bb3b5fa229b08479ea9385c55ec505270902e5568228d5332574eb1d22b27b9fdc57537852245a273de669d25019f771a7a5c30d8d337c151cd2b776cbc2ee89351ca5c4ec2555062cfa668bb75f3203411a71bc2ab5825b9ebd0621893348fa4b8e8b4d9e458a429d6d26ebea99dfa01b279210c3ef464426627bb2c6a 8f4ffb219ce04a4564015575888d0d76e013f79ea964187a0d6ceae8753e18bc7f0fe928037c1eabf3769214975c73f5ad3f0b49cc80d8617e500802437d9020a4a0a0e98e43b9c16cea472c0d5e4bbbb7d54c634e97228f3c513550d63c51df10b22f710ba41de00e3d209372c276f7b7530260b16f0c8bf273cc6980f6d3 63b94a94d8ca813eb601a2f07328cea787abf0e00a5005ee49805e58d3c33a5cf090759df241ec4c871257dcd3fc0e7d083a967fdb3fe8383341452716ddff24799d651bc1e7fd4931c0e7c1a868846c77ede5c091a13a18c09d6d13d103bcdb5a77c16296ff63263f0dd68b8f88d3ed3bc2e48ea51c5c18029720be5a64cc def3cd0c101b4275d973be1310960788860c4b6c05eeac7d827bd9963cb0bb5e169b79c146614c4a4842d5d588672eedeb304a89e2ceaa93d42b601d5aeaf79f9bf8a9fbf18b926cb2e626771cd7e2e07447d355e0257c22848f48906b58408a8137ea44e90ec5c804aa9700ffe0677bd26479d01317eda6821efa7f341846 d3d844e272385add9ed441c15b8d54eb50614bf2e70351a328b55997cb0e3db12320bbedfa1044579bbfdbe7380b6a3056bcaea088c85b97613f13ffdbbf6c237c25dd8e7b3df00cca0effbdc389cd5937ebb2395ba7d9c11253d8b7fae27f30895b1107dd460c78bf21c2022b328cae888ade147afbcb01a477d1561a322c 22b422281444c30d7319627c12f5775b7ca56cf58c0982aace7ae0ce84b5c4b20a664c8efb1183e3e673e0b689e43c45a7754c3c1a30a3094ae9ed82f5286293ad4e5e92ec9ce384ddb545f9a00723800acd1669706e0a5708679bffc0f3be2831c28be5ae64f8535c28844f5db6ccc8eddaf97a85aa2b0786012da0d69945 13d31e7dc3b4f1611db18db7ec703facf71326f9acf586f0bd32aff925abaf86682819f37e8f6904027cb5731228a512094e166b149d9f3b0d0eabcc8ca6ca6c41f20985e8eaa0ed74a3f7c7982aa1a4f247eb08f6f087bd8ec8d789c6fde9bb75e294ee405de885b33d192b0cd0d0f51903fd55453666bc10072579b21b3e c25b6f0ee17043d7c83ce1ec05994da4c403bb51ea25d27b084fecd5e596a43d37fb6f2f2d5cee95e7138a4ded8cd60a9eb83771f1f011975e2cfc4f1ea033b7240a5d87e349831cfd7e0bb965df052282298bb25d0c5e72ae086ecb80a5919a0066f2ea5885d112fc08d5ff78308aab9477f3eb94f23a9af9166901d79ff2 a3ffd58d7a8062b50f4b1ef73ece442aba266ecc05d275750f17ca0af60872f9472e327b5a5b781eae92fca9589289297fc04498891b33a732b60eeda5e8941ed72db22cd99aec7687fdae7d2239ab496803fb7f4521e3e1b1e5df3cd5559fff7ca4f014a7ab3c712689117a1f66ca2cab11b1a930336d56947746c2c2ebcd e8fc576c053ab8625061f909243adb5691c22bab9e8307f1aff9596ccb5304b1aa8451132b22171dd9b0d104022e3fc253ee07e73fc297f75ecd4646ee6a21742e033056e7a826a04f7b525402656f8500556e6e378b7051bada5a095948a1fc651a681d854fa51825033233b26c4ce62c905bd1a7d5a4668301759b2f7a02 b944cfec5c21b918e4b29cb3af1469392eda968c5b4df27a5e623661f6105f7746c4150d005b6c1d38c731fe6f49ca4fbd6a282322806f7c0907b4d6fea19153f465fae3dabc3ef1f9ae170653ac71bcaff7a315cad72204077b92d508b23cb237604859ef8c2ad8490dca4f622e16a60871214b719406e0937a14e7754fcd c286d6746d8d299203d9578655cfc574a0fe027b3ca449e19facc444859f51ff4a3e7947e76b941bfcde9e91bf49e424dacfc7f3f2d57d764234604908d44e9cec3cbb1a5976cd882697f2ae69b46888edd364f47a528bd092954772b3592b7108cd1bb60de961ee82220f4cb2521f6fb64ad02161bf3c3055ffc7d97b24a1 e1552a5e7f3d3abda7779b7f4df6f76a25258cd609a959e66f301ebea94faf846fc6c3b7484d4fd1f2e34c1840944579a4710e7889dce62f1aebfa5693e3333f1f9afaf41439c9babbf49acf54571630ca58ff3daca297839d4384c77d00d3f656da064b7095a18290f52e66a6020b4c0d0e0e6d5d3af818670c51c0b5e5d0 d20f125c0f4405627ab5a0c4a6d74a77ba732afcebd7e9c8b091ab697c53e3bd5fc00dd745b80a3521ccd233df15f7fe9c40d34a3ce3ebb52f2c729975902d6fc955a6fef71d4dca28a8b36c1bf9898fdcef49546e82492554940a17cff78d5e59cbc295b5082458ccb0e81ae519e382ff1fda6caeddf25fcf96b7b35bd7f6 dc16a78361c8f0cda9c88e29175bce6722a5a82cf04c712c5404af8262d00b2dd59074f26cd668c2e5b0cb8f158e18d20fda399ac84533ac81a904b1ec24c082cfc266c6b28b15c4e563a94e52e5230251850122eaa893d6533eece0d6b59ac1d669900cf4a347b74fcd44aa62f4d4684672d7602ce25106be3234494c4b01 c17919d8507e7491902ee48e8999a9658b97ffcad2e9eb49eeaebd9143f556ac9c0d9ff4fd73f084cc133af1315a0fee2248520a812f0551de463a24afc6809a68b50bd49b329d9a83792331330a1cd3002df4067518b88628779584e2ab85fd4fd9a35777b518ddbaf58abaf95c932db9c357984aa5ea5ec4b0f211693ce5 6db21538d1477195221f4326bbf99a4bfaa9218ecac3fbebb492d36f75068093cf55fbfbb8187ef5af1d826c8882c499749bebf3ba5c515e97de3f0c222e81f03fb2d2bf4b2932ebcbf154ea1714225d6fd78ffa775de98dd6c34b07342d950e73f9c1e779d19ad24f07b27b7129c5db28bb5a729727eb6c1f0d0dbf87732c d7d49c7b0d7159315ce0694a86dadee6caa516ccd24d35333855666a4e59660aba220b351a8c88e731b0d74d3813fd56eeb24adeabe6ac2787f6d76aee2787f53e8238aef7950be2ed09abd13a18da9267f83de74522855f0cf1c584ecf29d139a14f0c6432b1ac22ffed104590e14742df17847e1ea3be0c387273bb8e121 e4ebea0be5c3f8dfeef4fce37c98edb6ac1a69ecb31ca57fdc725013de578c9d313f47b3f120d09f3d0492f9bd5da8c890005e82eccc396d550b8e35ebabe2a8633772518d10d28a7e8981cb07b9ce1f9889e3d03ab6f3f0fdbac1d305c617f9a50777075977b2612deed34e1296ccb8891c7c242965a397404e00be6e8274 22cdaf8da6357fbbe3fcaa932cfcc8336bd56ac33950900ec0d5a843faa9dc64b77b3a993987c14350faabd948b3987a87060914724d9735b264ea522ec6df689c232e05c90512c0f12d5560de1890866f09ec2cb4967cfef0656260f54ed8f0245e3c2bded20c3d743028214b4ca73c7b0d535d70689039ee0a8019cbf62b 18b029f48e022f1ff1f12ac795ae12734ec3d0b7899259cfd31184c428c761cfcfc1c0a477999e7d3595225bfc500e681f29a1ea66fa80f98bdf39a89d5aa56644162aa4ce28842a529b16f780eef2e2dee7511331804a58680c81a0da811283e1d572bfe58ad58fb563ba903f5a27ece9bf6df047bf61d7cbb12dc63ee348 a8d4f4166827cbdc406327395ec555902b51e8f03850da8f9542f0d253fbbb24b0fb992572dedb700ba3dd338cddee0e532256f2c29ff22e41eaecf8cea2090fc8ae42a0dd2406d3742ff95dc236d83b3243b45d2aecff891525a0d429dfa9fa47d658cd0b47bf508daeba39be9126f6435fd3e21ed77b884291a52b1299c4 13df2bd32349ce7ad44d88719bcb3452646f5bac6d04c51700c96e55608484ced972b512418b7eb9bb6c7873f3d1477a12364b9b27f6feef2e3607022abdabb8249149acd7ba821f811af603efe20409f9acd261e53abbf3503d914db79164cd7ac0d02af00fa9eaf159c6ee1d4e6645c1db7998141e647c1bc3b2243bf3bc 6ca9b4643147fafb0e0aae1fe24569f4615857487f1be9865131764f8c6f0675ef6798f18ad4e9d5ec26dcdc5a7889a31a4e3a2c97933617b94e188d2dbb67b860e85e0b210aec97820c5a15f57f3ec6c846f6582d9f0bf99ee05b07abf64ccd3471a3010a63ebcc7cc39c7720f46d91e4d5b7b59c88da8bca5917877939ca 96763ee87f73cb61edd167d5d13eb6175c084cfac84ba56c6390455e42f474967dfeebc63a996fd4e849dd8f9692ad4a28e754f6774d37fabec8005429d3dfaab837707138266056d79e3be5ab060f6a0947a2db1220cb7b298e2969f2e8f4c14ee511834d7cf6ffe465cfb8f7c739e4526b13bd9aafc6c7f6852095aaf1a1 9c9ec78afd3239a5fabe695b35b631c50aaccc8c4124cd9022dfce5cdd83a7c1f5cf0e8646fdeee883831f2b720e507c722c32655dea19a26e4f4dafa3f824c2abccf063ef765a6480956f88e58aba6fc8768fa7648f75633b55808d08e64b9186d6c71de1e6bd50c290db15a4c89014472934ef315500666aa515d38262ba 069d0581681441740a4b7c1d1ca361929ec8734af8630400feb0ba59d8432543e85c5b2649c024eeef3f30042eac1bd6648b0e83dc53215058cb828f2a7cb910a080e3fdce7312e66b529bf17d4e5a86d52e206906e431f83051b401265f0445f0bb1f69ddf256a0408e0b8ad9ceffd32a9ccdf7b9402d821d739e06074425 8c8ee9bcf7e1d23369276e58afbb0482d9eb85add648fc2b726400f4a5918494e6e14b1d46bd01ad303464b4367364d5755cb7cb4c5f32bbb37f3b7177be38f825d370936b3d291a81019a46ec2bb79a3edd0ba525a5e016f0883d0987d97e8e6b00620bbce266fd14978bcdeb8bd70cb0997cf11f40266a7e5056217917d2 e720e55a923b7cfb5756028d34e57d775de86c7aa56cf7aba899d0e77a72e25dd80dd8adcce7c1512eda0453c760cf36a2cfa296e43cfff0a6dec28113a1889db68f0258dfd69c291b581bb5b40502f9e18801d434f92f7d03b6ec16254357b57ba5a4bb0e4d85297e8c4dbc1cdc80dab172421cc1c1dfb10cf2c96d524a8e 99638bd38eab05614784f94ef1a4ecfbd816092e18c9ab3daff5738efd79b51db9a93d2ac0e80479fcd08054e0f5399deaf6398a0838da62bbf4ebba55b244c7f965af5f3f641a39455a725091cd0bb3c16c9edde9269b586955e5a866c9a530598aa54957dac68549ff77cf685173061a2430dfe5adae6a12896d5952cf37 53459b93cd30e9bc76b0edca624c3d85313bc5bdf4cc76ebb82e9a43d95bcbf7325a8182f07aa4f056043340dbf8ce6a187c1705a3897551bd0e1dcc8f3fb09ac53c7227e85c070aa696fd3f66bb9dbf2610ffaec4ba0d37e6acd1c340ab5729c1fa46caab96fd94d4e212ba097252b701d72855fdd72c861de1d69d0df79b a57fa6ebf631574a83664223d95faf416468fae864dabcd2a71da5095410d6495d2ef4868fc7dfe72d77d7f30f09ea3a4009d399e9998b37b7745bfa5b78465c523984057aa9c17ca428787c7c070deebb7e4e3e3c7429cb697b91f5af5a46114b788df2cc256eabed34c857e1b1e5634d19b7efdfe2ac2bbb4285e5f72b65 aa9cba9cc7a9af330f1b7cdece551d71278f8ccc3461ccd7c6e4ba4d693751d2f04cb01c4afd6c34d89fbfd7123f562e57845156214554a9480d600ae594442cf92821b3b0bad2c77f1d84cd90abc3686c7b6f8fe8c9e623b1e5fb5cf14f374ff0730e8d51fb6c30a3dcf3540683d0e6ba226e35e4aa80e6d45305d49b0a59 5f84e36b367c2b1662cab9e4e5f359cbf8bea18af2da7a2353aab63814f21813f0145d8fcded42fe56ec9b90c973c7e9ed3f2f7b462a91787d5d34b8a30fa2c762410e727d8544bfdb12cdb62d95df6fb0afdc872a78d268c3665733e153bcb09176b22093dc16863793e3be3034855d0ef240d26680c9906debadd330bf92 ee93ccb0099c2701a2e71b6861199207c79a30624f1e773b3fb5ad8403d23a25f6c53d49b16640410dfa2ded167385430aede652a61150852546634b92d2d2a0a99d6a0467de61f35cc49c29bb3771bb235fd6339cd257b0e09c96574cdae1182f09d27d3be66602f220f9aba917c0d3cbdc9bbf4d20f93c11a501b4cf6c67 974824fc79f3cdf59d6d10772df8e005ba2b70dd5161310dff02b12f1d488b8c07de7842c33f753bcb3cc10523beeaf1a0f655194cd977311669bc368fbefc526d81c88693b293b5a64580422ee11c776b1e7d4436cd18af8f1dbc50a4a5106bc781a1d458bc7752e0f06ad07b63cfde6abef355a42158fcb308b2d0e25861 88b57974a2d301378b9fc9de13114392c9142fd4078fcc33b809be833f46e9de93c2abb2c6fa5119ea357e992f1e879fcd80b7405693cffe7ec5bc4ee461640606672f82754e481e01c5dbe0af11f18d17dfabbe342e190e7f2ea46d0e1b32ef57176257cba464850a66d7761322ccc2dfdff00ef4e1032081cd01973e8233 31404d4e40c08ba9dea78025aa6830004412d72390e69cd74aacd88692a880f6e9d2a00a77c52c9f96861a2393b732f31d34198d88a2b7e138416d3201a0bf6b23f6d0b5e57176f88edfb439c4a3df4786ae8802e29d674b05f2098d6e864acbd1cd5a1d9214106e4d85f95dab48095f8fbd9268073df742cbe68577aee0fd 1d7f84673fb1ed400822c6dc31d56a22d150eb7b01bd431637f7e263900860114079fd7e0bb2dca152575eb5586bbe1aa71bb75febb12b5c39aeed0e85790c2843cde0562f196e8f1610bdbddf21080a38add8da17ee311b52fa4f92ec20ac43c7f10bc189a92bec2d26baa9ca95ce5b950af2dc1feff04955e9bddec88369 95028eb37b408c1afc08782a1af6fbb3e0641834f37e2ed272bb37a8e92b553a7bd93eaaf597404d87d45d0c31c234fb11d0d723fdf8e9d5546112caeddd83b729c91cf2d2aac2b4e002be7b0c6b214ba0e16c860790ee5e1a753a4ddf0e1b29ecfa534bb43a7cf8fd1030049708cbceb014950f8e7f367128e57680aadda9 a05e546f62cb32cc19e963ffe2f374ea3bf7ed9a5affa4de339f60e3e1aa7d55361705f0d3f8dce36704be4b500ec2af47fb7266ca37ef664cc33c3b3bd2dc644477b0c228eb3512b18da8d56ee1da0ddb38c757181a9e70f7588fcac1eba97531337cfe68e781c292ecaf5def97b4038732a9ac7d52c6f76ba36b888f8ee7 6d6db5094d638d8551e3d3e268c3ff1038e1677defa587e988a574eb7b598511f91cce21ec212675dfb11c9a9fded970c837fc270ffc5a5a7b0b07d789933e5e49bf8962902b0992c9f133872ac632cf9bee9de570f5314c1169bca817cf36bce129c3fdbf4da6227420e3d1408fd1099e19fad087fa89d9f2bbd8e0067ba6 935e8b349ca5f1c7b43d4e69318472985ee36368641d180fdde6f6044fa6764ca2834b873f137c071f4c197f9d1a5476c59e2629ad57b539b489154e2e9ecf8196ff7e48fb4d9f9ca73eb11b8a72652ee4baf29735f3b38e630dace9ad3207812cee35810ddeb466a9768dfa90d63b5696687824bf63b3f20ff57c7f6d0745 b6f6d4f7f6e397f79e655c5991dc4a9d65045ac0d7dac4eff8e71b9095ea8994a053bdcffd375411ffb1113f494fd4fa8dd83f9bdbe43533bf9a2e961f93a47ee6dd8818edbc810391caf25d8f13053d86a4d264b0a03832c372fb1d194e45d8265757b5573cf9d988e5d5b164c44d2ee7ce02e6b394c7ea709c63ea793e3c bc7d5dfe6b5af6b32cf1a0303a8db5b1d9b0593416427efc5cb5fa968c35decaa8262610637679db3865faa20a700b4cbd53dad08ba0f20fa0e79f9eebc4df5e77ef74bf50b341b30cbd1623933210a9c5aaae69c3a9cd55038878d221f80f98840d249d066e03acca0787018e35e9299e26118a787fdd9085f9374a49c5b9 6dd39968a836ebe7203388d39431ce67c38b5d8e3207c672ceaf4ffcaa946932fe26b7d4604d365c72d581b5d9940a4b65039cd9a0b79101c0302662d10cff4c36d8876fd34affd9f7696f6ac97a4d535fcfd57d4e3c3ac34410d87443850fb19e0b988193de149fe0540aa5ddc8bc71ec35cee91ddee93af5d297158e8e9f 138c5b22d5b525724118dd2f1b7d77466b76464bfcd45967ef53cf3ad2dbcace50c65d22a459bef414e170491587596cfede9767750dba43ddffb58d5ec0b5d4bad84bd8e01e2bbb102128a2975def0d7a5823760c697d522a53567d479dc5c3c7b1ca78942a1ea8706c4d51b05d01888e0ac3d25c2fc1532cb9c286f3d6c0 cfc8a0bd5b0e6b3bfddf15b62a8f5042b4f8d74c14c545845f6eca4acaf9f7c202da7c4827fb23dd7f362dd9a0bffcb3b38ee7e3bedeeec45fc799780a7ff895ff706e031ae6ad7dd27dca4d25ee572b3d275cb26cb80593878f394cbde2f2670138802144698d137f7f61467ddcc66ff36ff5ac38fcfa506d7f6e7ceab11a 04b3c9d5571f5fca27f46dfbce4c3e6606cde136d78ed979afed5d956bcb25f3016b03180fc57f4cd1c8bd8ff46d25fc6fcc4ae5dca59317e0622a31cb39810c09061c36c9e18f35faff8590442fd9f02e4fe62a03d85266ba883e1061473dbec136c6d25cfd509269f171fa4b534a0c1c78b0182e5ccd4490bbe57728fb05 45b1b1dee107bebb0fe8d43708d334806f1dc2ca81c5dfc42b7d81c94dcc94e84267e94c1c3c51abf261dec41cfc8cb5cec2ba4e0b2d396d6ebe64cc0a12d0dee8cd816de9a88cd5290e09568d4835815f85c10eefcb158282e82637783ff09b804e5bae910d4a10835a16732b59da547c887e91e77dcdc14a03d0103e6dac 4a71de3a186c2b80619e4e662bcf456ab0881bfceb432d9a5cf87885738a2ebcc644cc47464e6be60002a7e3353b20306834bb3adc80a2f449bfcd0483499cb41e5f83f58a90eb3ac8ac39d18622b94d9827ffe5b4198079d523877f80f7fccc976967d679f05b58eb75c337ac6b33f99cfe113bf0944b585516258e26eb5b 576503f990d3bb07c0fd1e7701a1d5d35b356b532481f31e759a7a085c46298ca5cae19975ac550cc30177fbd684c75a8b3f5aa3e4c963e0a4abcd7ff6174149818996eac898cefdc91b402d270bcbf5ddaa851b6cc07fc6d145dbce645f590716ab70bcab3764988d64622c901e8ce8cb596de839e4f01881ca22fe064b71 42807945ed70ef2fce6a550d410c7de6ad4a8be9c0141ce4e3e0f4986b0d14279be49bf06d2fdb333abea4178c782eb0ccbb09679a791a9c7c671820863ac8e1b542718d543f9a90a10f67ae8dfe91348522e631eea42176e1114167a8733224f8e666ca972398c5d1b88e632132a9913789bf74210dd112634687d0446d05 8167805a14ac50e36d00ae9335981a158e09fda16d2ac66969e02269c428aab24ba9a7df8176ffe857a19765b62684e5f0886cb1e55d6c67fb8d27f0ff020607f2c8f64d12c5f0861da372a0a58e36831e9856338c9b5150af16ffa247199d93d9b36477f066b1eb1e7fb9fc6279c7840585faebf9e3eb4e998a52352ad94a 4a45d002aa19fc2ba8266ca466682915632bc3cc85acc844d4497cd9ab2472498fb1f2a36b79ac2a6e1818087842648d1797a952c5da3cd33e18fc11f87599983bfbb8f32fe3d4d94460715e1b27f0ad7260b49acb60768a868fb80c437624271683a1b34151b439e5a843f1f3d8dddd02d3ce58d8d97232714428ae036df4 f6e5a7e3ddcbfca8540341171a0c0a07269f7090477d9c6a67a2ee5ffb3a7028fbc0e95b3e1ea725e1595eb4fddfe71b34743e7f4ce5fcb5947ebb249beefa621b9a9992f46edf5956b8169181ec67391c190efd17e30e6f3ceb3a8c9f40f0672865137265bec25b2394b4d8b5962b91d47b5b99f383745fdc2202b81999ae b07d34aef93e722caa9f1d8a6d360f41a59bd4ca0695c98e227496c01a39508cb86d3596ae706738fc44f0fa2bd53e5ed35f5a21928d91468b1d1d3799d1d7d2ce47db2997078b34bd8566578fc6097df820385c7333af6499c5c32e37488e4a4bfa48031c5e7a5773cd783e31cb5a47aff0633d40cc82fecc80b4107fb35d 12fab16b86856bf8b484fda78e1aa962b06d046659a4a52f3c3e473f2739a3b2191d38b0bbb47cbef3eb7872cf7a3ece0517db01d9f8c226767a3cad9251649234ab3c653f00a03323c668a1c4d3bb5e22a4ce389414b62375f25902c00d69d34036315b5d581f509b8ae92f8bd67bc5a84e6f0ea6d1631794d60dd1fb58ba 569a4df3141ef04f642d63a4e89d96c01ce9b0c5586f41a5dfaf2d269edaf135bf06ba8649e14e93f9acdfcc5492c335357cfcf305e5107a965830cd18cfd8ac6a0b5c6011152843e3b4bcb8f71470aa5d99e7ccdbb507c80d2ed8f70a5f6328080515fa6eab20fb154499ab9bb39318b8dccfb2bbf9be94e32dabbe3a2d28 e6436f72e59cce23dfab1eba104222c6a0784d51fb0afa5cd0e6894d75144fe1b59a3013a5d803d54ce702b0fec134fa764776e72367af0c5eb20e6d0affb7171dac5ee7a73d56b1625584dc79228d40a28bbd05c494b4bfe672eda6faa95c9dc1f35f0e16bec2f87a2ffe558bfa047964cc58c1d7a4e16d4c6ed27948593f c4f608370a8d01c89c0de9b300469c2dd99acd189e0a8cb56ed5dabdc6feb9b61b594458100f93f9243b90761a37b04a12312ebf7e91f68882e38c1cac8172c57d72e9c4dc50154227254e424831dd418ff4e28b1f3fcaac56c5d8ac68fb5407a94018a97dece53afe9095178a9f8802c6706aefe9ab5309d5f13142ef2c04 4df751d282135e65cb0f0e1f1872220526e247e00bfbc79f27e5db089db13bfbd73acaff9e8b19f1722d5487779f2eeffa470a0f2386e03160737675ab5ef85b15818f8681a32939b4f87eeee7912d829619050404ec25e1f21bfabaae220cf98a98fff0dbfe554ca6eb01836e79764ee984ba03621b439e7fbba1ccb1616b 28e7f9871380fb554f076e677a049d59952b134c7a7cd1c9c637e5337cb5f356d9861c7c7ab7f4efd96c8fdedfaa7144c48e22be3a2cd989ffff2cb6b4ddaa6c6ebad073dc111e3794ec58c30d9a3a7028778b3b04b4e8af09243d0788389819ef286cb9eb496923a9dba38861d332db79fa25c06e69cd34786ae0b92c22cf 8ad20cf9277d53fbc4a6b8c77e9033ff33db0b781a633833f6767a4aec343694c8bda1e70caf773217ee5bb1ba945ad687d9ed151b5e61369ac7f13b9630b85aecfa68d8dad1027c0d25219c6b068077fdf1b62681f3d624702793b1471193843e5604e3e0dc657bd8e850a33b1746c0c6d831a80155f978f10517ef843c12 54054a4804d221dcd3a3b78052733e0ddfbdb3041ed9a07318c7e74ce851e9b4abdcfbeede6eb780051407b9e5db01e3fca882f0bc4f560dc041b97ff12bb2cfcbe8c0d779dc839f8ca0ceb68e27f37583232d2563f054b8dcdd737a48f709c930de8ae87837eb3c2cd55b2bcdd143df870334b3290e275a268dffbafdacd0 8bb5d8ea5c2e35fecb63c4d0d5924a413baad8a6d9099089c6f8330d9a9c39888cbc2a147daac2e81e07059c3659718516e1d71eeb0d29204256078b6a3eb0772c6e3135617a2a9c4cfe2170c4e66a56ad8721c08140805dca7494cce6b530644beb677cba28fb62de4c5a784ca5fd40246321c4148844219926b246bbe86f fb642d251912e64ae152bcbb834df0d6745138ca65bbe7cbbb3017323450dbc0b47f4388299799c252933fdec374fe93457e94224db816a7c458bd99b27a32c7054f302518fbd6050df1ddd7b6a05565395458968a436f66fb42776ab4cbf93f6271a0d6a1976e01332ae00d13e3bb6b789b1e152b934979ca6ffc0e2638b7 6b265a118d64236e2fb8caee7c5c870e73aadce6896ddd9b9908c1dba575cdb5dedf66eb8cd563ace22069b88c277774032f78e206598042207b1a249393294f792566bd6e7aa539588e2a9c34b9e00e8854a9a091f13bb7948a8185595228250eb4f02ee93ffc0c25b590ceb82946ffd98d52f92b90ef81f62b64b16dfb6e 8efaeea6fbf813ae76176f3b67f457cc4fed4b492b94b786b294bab88a3c961d191b4d8175827e788f5bdfa0f5974858020010dabc8c504204c43d1a9bbf7079eaa2b80f544cc746322831442282d81875587eac06135308d67adcb2da1500f77938b6c9db8fdbc7f197162fc167422ac4eee1780af60ef4b4a6cfae913933 d3f5b5a1d8d528678627339bef3c00d89ffd0b0330852e73674cd267bc1ac47827b04e3634794829a485140ed03c6b819895c14138fbf11a0cd1d13afb99fdfdb737f674a9074a17e0d2059fa05fff30b00fd1d2690c93a302a56bfa4bffe9cce42534429ad260fd9c8b0e2256dc44ca584a657f0de052c9de62a821c885e0 ce9c591a34c263e8da2cded07ec24f8d5d329b9737b1fe831c7c3b7e3d6ea7d0be02bca48450dfb6dd69a43492f84bdf7ec0ae34d39041757d87c1cba9bfa5951930227a67089629a6603ab6431b3887b581bce57d4209252fee3e51726e22799b0132fbd263855e69e25aa4ea992e9b547d4704163e01598d24d43b43ecc5 4605b817844f37454eef1d6d5c6f4b602a35417c234ec9b9ab9f26339d0cbd39aaf696c44774f65dbc64d70cadbfe02c20f965da9f57eb02c8ed6d9cb883d2defc824e8e7999ea2e928c523052af0c64a997664c2acc9934aa5c954f00ba1d86286301e13e2e682dae8e006c52665bc637083795b91876090b3b23199364fc 6062a9d919f462b2e5daff3a1aa368397bc496e3fa6b42bbc17fc37665dbed43ee6b1fff57425b87fbecb0ba02dcd2109c7f0bf7b3e19594f3b2d1d91614fd8aad2a833e538a90263b6b7e87f534e4dc907ad019d92ca41f056c99bc1e106cc3466c0ba6b04f2c82609e88f236d1109d1c18d033253126c843f5137e2d5090 cf568d78e31ac03bfbd4c472dcd6dfdc24d97811c168a983af25f6b4a1add72fbde130c5400e517a2df5ce122eb79a225c4b6833842cb9467c8f9ed591cfafcdfdae91b8390dec86408afad08352e259cbe898f62ee66640647d017e16f2b15f898f51d488d91057080f660af85d313e7a089c497000bfbbc4d52fccbfa314 9b22c7c520d15dfb8743c3ddbdfee9379ce5f3fac1af3dc1bad4c17f24bb87ad43c92e339128b95c42ba692a8a65858161562e4dcfc5e0ab661ba96341d000d71a0453d9e32fed21dbf05290fd7a6772730f5bbbcb680f31b566a0906f0a1f91d463a1f20103a6e1a422d49b578ad89a1b06648113a1c4470ff421475bc427 7cd96cb5e75a33702dda7ce2d99511adcb4b08f8c5a99f775408d61226455234ea792ec345a34404c7e8b7db8524306bd6ba2000f85d5665c5414c734feb27e41e898b2b226ceb7c09c45fb97be9c8da15aa56009380589c42509a7e8f6574e930b20b69f5cfec97dc753a03e93c5ef69811a32f4b1d23a9fa09d615760e85 bd9a553e07b04630a99b41a3c4080b90f176b7ef933d8e4113c8095b7672c0a2bfceef163775b2fc753f4293c39874d3b58ad3df54fcf04c073063306a313c63983b836c5454875166566d9d8679ff1f7316f21bf55e845330bb25d2a166f4527203e1c3d0d7925f08341ba23a49c01201d4a6e62efdc12a02b7d55d1ec231 eec6b63e30405f3ce78aaeb2102c2527121906368ece6b0a912ebee20086e095b7f1e9deffaf29f7a94bc87702e2dfa7356b154a562598cdeaeb53783ced9f15e01924ffa370cf055a45a23deda4a4a561d66d46bc4d0c1d258f65a342cddf3b981768677c78f0b7f0f9937eb88e925ddd347e36fef8cb0f75316c64409212 537af7c22d72c558cd94c52b5a8f8636e8f4097de899193556034a3aaa2ae72549b5a7622e7af2a72516282e7b0411f411da79ca95393d5ff9488a41dca4081f2a742f3d6678662cf590fff1a4241bc6cad596fb5a162dce70ba3501f24be6cf3c022e4b23f175664bc2d422019e5af0c1ecd823141a9046ca0b095e81e88f 1ff817eb6a7cf04ef5f053361d954da1072336c22c6f8bc733cb54801c0bcb121511baaae113ce384b3245f141f4389c3df3a58922ee64574c5f75d74f76b11d21747c3c6578754dcb2b4451938c78f44957029f9f84e4204d0d5835ff585327e25061bfb78288fe6ece19ed731afcc42521d1050c0ae5ab768b6d3f73a5c8 465c03ce4698e0ebb3d7ae9e4a21120f83c71f3fa6d080626ec03b93d39ff727fa467d95892e684c36725fa237b3fd09b282014a55c90bcace8f71af2296b9701c778a65b94252bf7c878d568732a261a57716fc7a15e11678dfdd83875cdf9ff7269e4982313a7dbccd9df2182e274b7f6bcd59d6502f3c1d6388aa70a19e dbd780f5bedf5e8a37a60987e0937ccdc4818ddd153eb7e4c0aef785d28234a58bc1bd6919391f396af1f64b08fe1c55992857c5dfab5fe40e96d51ffd64637f234248dea2df8991a54091ce147b8c5f595bb2cc52ae168311bb94d8621d01fad463bb04971f56c03e0ea5b7d2f5313cae80690f373bef77a24e9f95c487fd 197e167061b2847394d1ef5afe8295efec99cf30ff9af53dbb8840cac09601aa48ba690bb33da784ccec09ea4aa5a8cc76e58281b484c4eba15ab80e640f49d1c6330a7c44ebad76a62e70a2a4b123d2f30ddc392327e642d2bc4372ee905259fe6e94b14667220a615d55bb054cafbcf58681e70226348dc17c8783322478 81585d36e9f25b27d16d490062a6f4fa514d129002d1f74f6fbcd67b010d1529e8a389e61c16d4ee65aabc838588df52c6c019e5aa64021aeff593b8c12845c0c99b27f0b489453e9f41d4031e583aa9ae9321c46628e18e45a39f52f2e4be9053f498735e1dd686d2de1cb19bb2c00858a4bb2fb38079cfef3990f5c220cc 8948ad96c91edc85443c6ed5e0677721f0826b078f322bb6a712a9ff06c9325384bb029ad30dd93af96a22dceb410be33ab0d9189a60eb5c762a0e93284fbaf6b70016217051b11cddf61bc5582b1f6d06c187fcf6f02010378cd10469d264fa7867e1443cbef0349c2b5959e4ceafc24fd83fa6243ac6df53c0186f4637fa 56399bcf8fcabf87efcf951f39284074ff308a0bd43bdf4b7e7b3d846f90e21a4021aa513db14d818e2974d4d5d74380b89eee28ae0207aeda518eece871e37541a21164db6db0c7fea838345b3570bf7194963946aa9b8a8675d903c2d9feb22918e52647374018e19b6c58be78403cefc9be9501136a7a760a3dd6c58da6 04ccde96d2e4807dd056ec112af1642830c2536b4c38d934c063757867a11bc8524bf33480be5e91b72ee66e3f4cff1bab803c30b265f771202ca0d25e499e93e1e36b3ede2d1712841faae096fcc635d2961e2ab193e61fa920ba9907f3c2968b103f925d8d0bec39492e3015d60d4c773a42d9cd038fe3b305bcc663e191 38e0870180945598200497bd709e8707aa26cdf1a0c9812d60cf322c62d3c43afe8b3745273d6f01ad9871242d27fc1749b8705ecc94707149c51adab96d45f52b675a898bd629a2af3d960a9d003b8ffec63f52a51863c007f49fc666275bd0098ca5f12d6a961b2134d0d9e5c8982d9bf78b02e04c86700f232d4aeb7b8c d53690d9e2ee2397b725e7e436eb8913d4153d4d414695cae9e26e822f36874716a948da62ffab00827eb5e9aa60f6b34dd16e4e7dd42a0d9dc92bbeffdd921f4867f86566923dc1472c200e8b253e619072c613c6f3557cf49617001135de0b417342a389fb70f556dce6a3bdcccc641072fee406d83e3a85c1271d99c4a7 23a3936d954e2a9567746695328ec626544aabfdcbca1268dd48b6e0e842ec4e196aac5e229f4b95dc12a82188bd53e443dc0d4a23b40cb13e883b67ea19411986f5bcb88cf29ffbba591046dbec9f47a6698fc04ef697f377523e99ae95ab7e64f9079333eb7e002782db3040e12606fe5e1698af41b829684e2f3bcc5ccb 39a5b77f834496bafdfea0e8f8baba1090c5b115b97c3341bcb158199386a171598b34e137b1574f51f09c5bf785db93104d465c4d945c4652cdc36d59567b18d0907e89b98b3a67eecb7a1cb69558d9a2f286bb7ab1bdde51bfbd7efcd67ece3821d0bb5419ba7177739eee8d12680cb18ca1757fb438e5820c4bffa6f419 162b0a0b7a843ca00e37ec3a4a4b04f4ed8e7f424b4a9d1456c6fe6287860ba088a47635ea731abb80cc67c3322cc67c551171219db9fe95e002ef4f54b3328ef32239e09b3ba1c972941231dc51cb0d5d8dd4b833d898a40048fa9cf12c2f73e7fd8871779431f0ffb6024c357a1cfafb5ae2a352f7cc78263846d13837f1 58f38ad0cbabed46fd47c5719fff252d4ddc1b50fea6a5d8aa61a1a1c2da888e6bd22fbec6e3543de95a9dd209a2706c5430c5a7331577025079cd8e08b550712c7286a07189284e22ca946fbea2524a17e26b38148d2f77aa2e7f61434abaa9dd7ed442b430e636ae49ba382eaa6a4bcc70033f6b96e29339fcc95afe2f48 0cd004f967c37174b3fe213af666aa615bda747723ccc90b1366750ff3f1b09d3d5e0b2e111ce46ae9cb279ca786663e2c20db407508f5a9053112f1cbe4f6c9aaf0f3dc6de9f4d3b535a64525b168854f37f7edc9174fc782bc933bf5d83e988ded92de45f3299d83088aec2ffa01ade2030177661d276715ce7ab7818c32 a48c4ef1c6bfbedd338834293893c1717f1ef6466a6b16c5c0260f4a42a9785868999167774a4df80df627564bc3e33a7495ab3b8b2a11c929420bea1830002de2f6db17a1130b75eec1ed2a74191676dab58c68bf16a8fc0457621a2669ea1e7acb4bf8adbc2289c086f47f1e01351653fc5629f146ea101fa72015552958 7fa014fbf31f02e5844242e406d71ab3b06c71ce3c1207bd2081afcf58c3dab9e39ebd87ebb6e0db0ab6f81da96a20110af0e56b45f1463ac3120db679ea2eda282c339220031c93fb244eb1d73a405b8de455700071a1a25400d42785dc6b8bff374163356ede39c4efa063298ced265eb8372569da1e2e325e5447d10b94 acc11caf5089cfc95ffac6cf7aab564ed58d35f1a6b2e4046a186cd831a1827a8913b6b6369ba327683b080f4884456cad8fae0773c3e2718099436c684188683338e7b001ecf5ca61e0edda0e2e95550f5f8902092a651dd429312a1bf4ee918e2fa21454dd7329dc99e039b33e04759352db0380cbdc986906aa16ab9fe7 7d74103970722a22e130c1f4585ba9ad6b619c60612aff65915e5fb8831fba02032d33addabde16415933ba05b1daeb3aa34fa2b03f1055e3a378eafee5d8614a778b4e6c6e8d25d900b1e2552c6513d074b398abc6ec23dd9c302912452332bbe524688d7a2881196a499726792c493c5e3f5f52de45e338a5dd5a5f85463 630434e841b81634460a830d5e7f00ecd2df1fd289e8e15bd1b2222670be241199a8e62127631639e76855b90b438d5253884f4cc6cf425ecb8f6e41c39e2918975d603d7e5922ef8bb3bbec384cdd1a1a937d247cd9a6f64c6ab9a408035a16d38dd93f2bf7ec9ca002687e302d0bc5576603e21c214b787e16f94dd95b45 cf1ac5bfa8043280edcf2612f27fc933ea521edff0a2cb7c7ba103ea444e0bc28909eb0f258f084d4dfe1149da6523a83616cbe90cff7af60603cb8a1c4ed5eddd796e2a2e10f9462b48f90fe7e493330cd308e3815e7b140ad562d82c8dd1e72ec7e782691a2816197fd605098edab5dcebb16f1649c27cb0addd69862efb 52e3dcd0a497fbd2873f204c48236b96175c760c432d5e275c8c634612d2e07cbceea765bfe0c54dbde6d31343bcfbb7adb32163228cf43d9ca6ee5cbb81edfa30c1da85febbf19672043daf93e6923f0ae7dc0286819445c7f327a20388290488eb04f47762919675592510fe299f813804e2b68a22b62776a2424c04abde 79876d5b041f903bbe92c88902563ad910ea7f3df74a17174b186b4bc5b12b7880853478a5b6540281b971ffc8b0ba2f6869ee528cffb1b984b036a6a3793e42973445428f25253dd251bb71a5be536220cf3ff8677b6198fc5643d623820df45f31448f1c959bdbeb7081bf5ac582b08dd28909aa1def6360608f2b4aadf7 7b9a92c20a86ccd50579c3162616231da3b27336a0d3e8d94907c09b1f73c46cf2145ad44606248988c17727a1067833f3eac3dfaafc1ea7c64b5cd4762a87cdecac4d2787debd03897ccb467eac59708339e11e9cb1961d3d254e6a6ab7722822b59d342a2e79e030f45ac2a3890cc7e2a95abcd3e7daa2f4cdc5c3246148 1e5acb93655df9e8e538c14feab325016bd5d54fb767331cbbec874268bfd8faac9eb0a46c1501c81a4039181337df1f5d11294226bba2976796262a82f335440dd28687c166b78398305e1c73d0513c4aa0387d20461bb69bccb1a4ac804cdeabe6ac2787f6d7252b1b69e2bcc8a4adfdbaddbdc454e896c489989d47095f cced9823c951938a9d962debe96473d9e4447b761e69e486be14a447e5e899061b6463a9733fd5d483016456954bcff2f7eebc48f934d7ec4ccb133e19b7528c371f85bc0aab2c33464843cc7bcfd34eadefa744bffadc9d7eaa246bad45616d9340a8bc72a2a75911c866974e1306e13cd618f770092d81e8c590944ddd0f f482d24fd677dc8b22ca4c08b0fe423d0931382938a40b79c13fceb09e6389669ea69d6268a2d40ec37b5fad440c49904d9f09df089e5c173ea5943e676274e69eb0da19a46de72249bb6b9af96ef17b509e4a71b531ae45d89608d14937d68f8f9d0320919bf78c58f8e65fa4c5c21dba0546c6836c117d58dccceb7e9b40 e363866482ba02eb7ab974656af5d6cc97ce1b6d08c20596434f49183a6a232c339b477e5dbf2bf03be77a43646ee958c40d4b7ed6f7aaf6258b3d046dcc1379b1a52adc89bb768939f9ea57cde21dcba5e859f960cf8ce7da2b30f671d8bd623588e5cd3b99220ec66f881f99e9d71db48ac4eaab96bd93d1176399dd1ac8 dfcc5ba4f0010fd576e236a4306a4fd694aab6c881b7ddd00e6f0c83fd02f43d011f48d443572c0abdf7f5c90700998899103f64f84a096be5a12e1d44734fdf15de9e59bfefec1c4116cbb97711f518d39e35f067809d88f563952d5558757b2bd5fe145b8fd6fcb095dcdf7c4bc3f5b98b2d0e79f5f1d967c36a9b865be1 356e91e3afa02cad97bbc52ff6e1dce666469e72864105ff51c62c9be04ff17330f4c09572376ce69601f488a50775dbdde2a9a5eee389b654ef1aa48bfd5b5b26127ca482d88247b0eb260a802c87a9cef4347fb2d041f8404997de3145dbe722264da369f5b3eb837df9f8bf0b283a05590aa4eea782c4ee5097f415431b 69c3eeee0e41b579df3eae3c557c19b10e952d5ed87acf5b804aa11030159fbdfa01dbd7ba84eca8100250e4c55b191e3b529e6dce055d49e6bf1ca48fff4e28c5255b4323518e8775df0efb5370b6d0c5980e3963d511b2f08aa1ad9e0f2727fb7f43cf8806f33f6af01a4f13063281323e008497cf1da4b7eb772f7eda1e a059cd3ecd558c03f8a808d7be311f8088aeb5605510671a8d03157e1137858a0faeed64b251a7c96549d830fb59c8c1268c0c48b1ea8ad0f5295c285bf8420167cc5da484b8e200af03d615764aee51f8768a0cd123928f1b3f3e91a46f5130b000176f520cd3f7d48378882578810a7c494d840272b2243e2ca830fa9195 7bf05deb8963a12991ad48db5f07f5caa61d6aa8e9f9ed895f9734cf9cfc01882d03c85a9ff3963f67d489640a2b989133c7cb307d5cfec8f31f6e35c87292410b3d1f301fd5adb11e33e2f2029c5e3dc0484b1d88ea400d7fa461146135ffa5f1824e8a57a986b53ea059b3c8998373e2673968ca99f89d46eff589806c12 b706be71c1db78f29444608a0b886b8a59df8e2271205f0e008b96ef616a239492e0108687ad56b4314b888d4dfab64ccebe5351ec3556b8e3a2ccef716d809d7e23bd74d75ad6abde177933553322be0c1275e91982d19e15169ef293cfc447421b5641b00dfff942d73ee56f4e79a114138238d498c117ed72326bb96052 8fb884d59c8d2e2e83296523f6061fa5be37a84d4f1bd4d88d2f27dd7d3fc04b1bac8f74dfcfd58eeff5dc8749a0f5981f854f7680a7c847c7742530dbd627829d96d0a6d3e4f7ba14dca3601ce354ed7c9d3f49ce07cee46c82da679153945115ab50a33d49da938395f29387b4d908f040739038e75b44f9f560d780a8c4 8ceaf9d47cf592c447a567fd6634c7392ecf31091c34af2d7b31dd14070539989f11fd916e5dd02ddfa41f76e0ced99c785f0c8a1aa6e43cd26db4ed7a36ebe9ee2f958fe94f42b675e199c3b2e6e5f959f6acd00948de268e326535ce3b356b28d818e1c1644a7b649f13a81f3186a9dd95a30ec99d429ebe0e13119c1369 42c023108721edcc376a6e1ba8380cb0ef9ffa8a00b13a0e74704e29a71902d9f33cbc56cc47b4d9fb96aba13009f0059b3c53f26aedea73f3346f0e809bbe904cccdc75c4228a6a9d3f56477903dc1dfc2fbb3426945620f94fae7e6af622c8444b8941a549acda534f9e0c125967aed7bd7c832cad33a6c57a0d8f539ca8 00f84fd2c87618a003e94c88ed328b711206de3bee0124402f5574035fc7d3ddcb519ea0670392c12e476aff9f59e9b8569078e236c49afa100d58b8de81f2e4ed1bab63dcb0f2c180f6c60ea76782579c83f331eacb9cd75f912ea12ca6d49e4deb77ea81257dde8c5bcfc67d3bc115c55baece396a42eda8b8752f79f8a2 9058a4dcd2f9e1188b4a36c00ba3a5a6e851424b86f95ae3f2d8765340143dc6663cb0bada459e0760a7a49ac621eb1799c51a8cd7d76bb9cd2f679de03b06022563edf64abed6eeff3780c20e965ea2111e7e7fe11f75864a3fc54233ecfc518c8cb17f0183873e66625be2feb0ecb79cb834a6ac7945c9068712bd9a335a 6f195ec6e712764bee0edbf50bca12c98e87539c8b17800f29b115fb8d58fc4b11b0837dfa9f62b73e9ddf08033d0a15dca7d3eb21a0851179755bdba76ae61e6bdc17882213915fc865bc8c44c5c9ff3ef1ee7611dfc261f582c6f1092bcdb4d22c3c8a7a41e48100b1b76a5657b013a9e4691108bd08997d3a808af31445 5d78fec3ad7b712b5f8e780ba22de1eaad1520ec63d092d44cd822760cff8ffde07c4a74013eec441d4309f5d3d1f8f6921735a1a3f2f491eda6c72b78ff3ad2ca83bf992a9fb90527eb3e5346a41e8560b9c285bd32bbd2bb0b2434bd4f7c1327db96f9687c8c7ea6888bcb5737ce1e4d20660337f0731869f34e101404d5 214d56075a7ebea66dd483314691c64bd5143b2499f78983bf152ed573f5747c1ec8fdcd5c4b38cb20eca2985076d9920dae4bb9a806115106108b329bc3f524c22d89608080677593d2073ee5e2786c7bf858fe688cd272d42b0be8b8eba87ff96725f0c1725bdee0ef988abb27c200c9dbd33d471f4717744ecb928b9279 eb98bd03d1a569435aeeb2996916f116c031b0bd5457c30d3da7ca79e85071a4d91c885a4092c1622e631fe30a2a06de75f02f185ad726fb1612a3bede5e46e01268aadf558dd34f3bda7efb6d9e499d7e113efd536d0482eb6b8c5594396a75af2c2f9e0387661ac30dbb10d88d76c092e68bb80688c975fa1a9a9a12f225 5711514cbd91aeca9cc10166894cfceb7339fcd34f7e2521485b96d7c29c0f42321d09b24f6f1e462ac7e49a98e3a66e63e8a71f37c4ba4786ee6f9eaf559655fa419bc584883ba9ff033bd2861e028d81664b89df81019faf15a555e37e551b45da582c99362bcc39f03709aa0fae6f5bd36c856e79d0fe920601c798314d 2058884895e84a14a124daca885fbb0a79559d909dcec4696cecd393a4a3a6aab414af6f7b5eae63122c373065593b666290e5dd93836f7f9828ddbeb6479aea667d78bb4674af1296a55747f711cfe5b9b90e5191242153922b58da07f768cd9489cc60973882410d43d2c27d7b3b2b23a3e93039db6f4c55b057ffd10e7f 3c02a9f005d1dd464d06c8bc8dffb311e67ad0103fd5356c7a962540a37ca57e52d3f2b279f4a53d28670c80696ed53bb9dd15d9798563ac88b47af1f6783589df59642e31b047413d5b45cccc5b4c384b05530880b94db8b26a5636938172a121d284a8edd61414a4a62f4a6c97d946306525393e25ef97a6cbab7e0379e7 aa8b16f449445c3bdc76ff117bbf29420d5c8149d61559888336db54a0b0be97b0556844a762cf9f214edfa472db4633e7ff124fdddc9ed01d063cb0cc9a9a00f070077b6bd40c0aeb42eb7c76ed2e286618563d5a9985734264c875b4beff341766edb6d2c91e5872b3114f2266c64edcc03336c0c1870a25edba86f5b1e9 4831baaefe75c6726bde39cf57551d4f71248d20ca5b78ecf22616a5f769302eb5e751a8e4a11c6640f28c8c78d57132e974a868028eb1508698fdb3690da78f4622074720f9b45cb61649b23dc976b63261bbcba2a679f8b46669fae207d39e131be1d8788261f693bca225b4e26cf9bad7746ee7d540e52a4ada888d58f1 db373e7152b8a9ad861dc7efb71ce0eabbc7ce577e7e562531df032fa713bea60c1f57c1f9fc43f22a4528abd17144311e5df980591d082a488e75f1379314ba2fc6f21dba4a285354e54e1321aa21db86561eecf7fc5c53b3a157e9f069ac687f7c11ea9a35b108df5e1ed6472e8d7e4c0867ad8283052fe1ac4f0e5de2e9 abc5d8d17040a98a2c9c535a654ffa3dbc5d94113894c3be63e6a0eaa78b944caf2670c53c820b1a687de8a54b998df371d11f8b46b1c4e348bead1a66ce23707e02f86a34c1258fdde754b564aae79cd4536cda7ac5b3ae17c82c1af518d2d406c38b1defe8404a40c762b7f38b25037dda6b0784131d4da2735c6118d1b4 de068dcdcfe2243791dc30d657f3f9ae0859e458be107a96204096fa5427dc763542cf1e87f994d0c67cba07fa26b605fd1f27fafd1dd4ef1ec6f1d76930b121c4e2791a914650bedc4cbed048f8a877a048d20ede5adcc0b87d7f25ea5a94ec0f8dc8eca2307ab2a0d98a8947bf8b5be2d793b2b6183ec35db38c1d3e5f40 78e4d5178ab8fa36cf239e561c81b95a46655f11a43ceebe3ac762344a551c4e6358b943cb667a4b2de4f9f7f12f8d7f1b655076cf77ec115796d0470ff54d26db7e155839232a54898766fa03888b378b2e600fbad5613f0b09a9d07c1965c13734f5c678b2c236b4ef6cacd4e2b4dbabd69d5df78450ae14e6311a37de72 ad54be4ff1f0650690808d7f699e4ed39ee0d2752bbd07dffe96815754a0babbbc8ac0a4cf3f2452f92ce72a2570184f794a6c932fa3849b782c2a0bf9e6e4b0cd0e301a5306a191ac79c9d709f21541cbb35154d3ae8aa8ac721181bd5032c215bf834585d7df29811707c500fc8240cec005ded2190d4e497267bc1b57ad ce81880c49ce082d47d0d22a2bb7748653f2473e20790697880c4a3a34c3444ed12382d7f2da965d50e18145a9c4792a819fcd16ede8ffc9de2ce783e8d9600113dbfcc05210df22eaf4fbded7d3f6153d4a7b8a271520b8e4ee91457250bc82b3dba929f09a95bf93798a975ab5d11f4a24b77917dba13783b1456a84bb63 6d86df0b0c631ce1c56bfd80c85a8f92f37b3f8aee7d4cb0ec3ac88b89a34bc2293800a7a56591e4f88949de7ca2d359a8b765b9c8f0292e5008362735b803d54738350ee653bd7b2fe2902c2a90f5daead13e95b4cb72511bebb45b240435458653930362510822e0744eba54ceaf9d2d7039fb01b56e6b8aa3da917d6e8a 6773d86b61874e30ffbc61f28eb8434595618ea6d4fa941ff2ce7a80ff8edc1f5fba4554f942fbd2403b954a8cd71b6a65bd7d396e76d83ad2cfa48041a33841fd3bc29cfbe3c69c77b8ef2598a96934d3ec7453a2e728b04f6671db5494bdf4c364e7d8d356acad2d1ed7e2efa6a67a76542b614ac0f791b753a2b1a2c755 e54b3333ba72b932b6bb843bcbd14fe4df9b19eb9eb33a5393fe5a0903b3dcc125784f09f2cbeea3f92577bbae102155e090fcf2be95a24a2b0b509581c891c20195b82af9d707f30e4850b4b270990980628b007af7cff19577cc7e5cad2c069d0fe2da4e0dc4088309890b215927353266d201b829c2be7ae637148ba502 adf9d2d689a99a9d43d7aa6b82683c5b13cbb41229f74d4963b828c9bd861e65059803505c10cc52ee2e669975fd7c6e27bcaf98693d8790d1b659ea307c10ab46196e7868ae642880673699addbb1991ec395d00e86e48c0b88ffc715a7c59e4ea45f6898f075d8480b4baa4cc7d154e2d239b850783b9719d21674e563af 40d77a3dd00798be4df1c00d6ee23c4f1c592af7e3611f6d650b438a96d583b68336ba6291fdf189f591b66d5805345238fd71d3b119abaf891cc9e999287e2f754b7f4e0cac0aab57c942e75b1ec9f49de5192403a5e770fb5b370c74f239dc546e56953d068ad94b51fef63bc6dd635a9d49b767fb9fa52d6eb64fda3362 6f0e9e6c348c17167384430531af663b57b61b42aad800c28e1edfd5511dfc8275a0a6b50a9b2a9083d5e78fb70fa29708444365a0ce9d668616fd44a6c50f419c72123b92faf44b6426af0e4a167b901c79f11208eb03fbb0858fb807bd5d92dc2984f4085931dba69152641c8893918e71274fdb9888798887481a9c536c 1270aec13cbd8c3c76345188cc81113ec8590a8cae306d799b02b20000d68b3313502bcc880a7d1704a286fd394f588f995f1aa461e88def58e23be9b129b83b2e8c6eb9e45618b274a4519cb48ed1bcf737d7fb55e203c2c60b1a073d31ccce703cf59716bc46a145125a92be1ea039b6b32440b7efe1f784f6bf6746ab20 cf3e0af7267c4b5c5c6ad8ec418da49f71ef9c4c14156d216228d0805fd1965e5e1b100922fc025329f6f3f3dbec35b47c77b8e38769fd6b9597395a72bf613488776482b9dfc35777b9f6886aa9ac573b4de7be7ace63f58add64a0a82c179cbed927e8802c8a93f0d6dedf18d89be10b396961832c4978fa7b1c78344ab0 32d3ff72e4840f502c26fd6e5912223184098fecc3f2efccd48b0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: Times-Italic %!PS-AdobeFont-1.0: Times-Italic 002.000 %%CreationDate: Thu May 1 14:20:19 1997 %%VMusage: 37530 44422 %% The digitally encoded machine readable software for producing the %% Typefaces licensed to you is copyrighted (c) 1985, 1987, 1989, 1990, 1993, %% 1997 Adobe Systems. All Rights Reserved. This software is the property of %% Adobe Systems Incorporated and its licensors, and may not be reproduced, %% used, displayed, modified, disclosed or transferred without the express %% written approval of Adobe. The digitally encoded machine readable %% outline data for producing the Typefaces licensed to you is copyrighted (c) %% 1981, 1997 Linotype-Hell AG and/or its subsidiaries. All Rights Reserved. %% This data is the property of Linotype-Hell AG and/or its subsidiaries and %% may not be reproduced, used, displayed, modified, disclosed or transferred %% without the express written approval of Linotype-Hell AG and/or its %% subsidiaries. %% Times is a trademark of Linotype-Hell AG and/or its subsidiaries. 11 dict begin /FontInfo 10 dict dup begin /version (002.000) readonly def /Notice (Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries.) readonly def /Copyright ( The digitally encoded machine readable software for producing the Typefaces licensed to you is copyrighted (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems. All Rights Reserved. This software is the property of Adobe Systems Incorporated and its licensors, and may not be reproduced, used, displayed, modified, disclosed or transferred without the express written approval of Adobe. The digitally encoded machine readable outline data for producing the Typefaces licensed to you is copyrighted (c) 1981, 1997 Linotype-Hell AG and/or its subsidiaries. All Rights Reserved. This data is the property of Linotype-Hell AG and/or its subsidiaries and may not be reproduced, used, displayed, modified, disclosed or transferred without the express written approval of Linotype-Hell AG and/or its subsidiaries. ) readonly def /FullName (Times Italic) readonly def /FamilyName (Times) readonly def /Weight (Medium) readonly def /isFixedPitch false def /ItalicAngle -15.5 def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /FontName /Times-Italic def /Encoding StandardEncoding def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] def /UniqueID 43148 def /FontBBox{-169 -217 1010 883}readonly def currentdict end currentfile eexec a6b9a629f232c2f7dbf1d3c363ba134897c3ce34dbaa9ec37bab446de4e350515336169bc75297ff1289d5c1290fc38fc78e4318cfd0b8d7f9a7e9f1a776f374e31179ac39a918ba448c0b8b82dd50958f71df52ad394cc70c6a3ee01b0b67a58dd0baa8d0564a0761b74d0c66fb54f4ae2f555a7b619dc94a9ce75c17000e 7d25b43cdad97e1023f0477fd1579f82401e30776bb03081a76d3061379c3afa6c985b9660da504ed8ac4f31ed315db59b3e606dfe9680a793e3612db011e1684d793fd5eebebf167e83b4fa5371a015d677e9a50e8d5d2f227635b21af5310214ae40efaa3134d407587ad5a6634e5f19c1805984142c9bd01bc20f6c29a7 353976a5fd5754898c355df32a493b4f6a3398f9ae8182831f3b18146d370f82fda2dbc50b81f477cb91bf61fd13b4cd1267da3bced4cc13b7d3b3e3add1fee10364829c131e7d24b830ec2f0fc89e5eb3802a37e5817e95d4a7138ca230cbb0cf63ae16476be2a3d40e2b0f567c5fb4922cc7a0877a54439c9ad463880ac5 cc4a388675ee7fc141e0da37ae821ea708aa55f21f836bfd50bacb95368040d6779e41515ab67adb002a88e2ab77cf9ccf1f56a03df21a13a1ce6d0356dad38fd6c4303463b753cedf6d2e9de189e698afe9b8edced2ac1bad1f2161320e4549f6feeef8f856637a10db086da5dc851b107dccf2a6f7825e4f0f921e3b46a1 fef31bc4957c26bc03d01188bb5e0b81ad7b972d1ef27c75544e80eb39a11e41d5e40360e42c564b15dcc7475eb4f945936315d9929c2503ab233189d6cc6519eada430f07edc00ab554dec9afac3d903fd46a3b13836bde0df7bb1f6fdb793dcff76c93a846787623071182324017d7758cd809cd4fc454e9cb77cc595380 1c0bcb170f7fa45300c3ca8aa1582e4fc5b9ef347de4576ff19cb1b66657f2ae18086f088145ff5a5ebb7ddcc1b8c0dca636396389f743ea78a45b6086b8a876d16efbf75cd68b93c6e521743050442ea6328f92e2ebc1b41b0395cc2c4c331194cb847556dad8d9b01001201f5b8203011d049eec892ab294ac1add721de7 f9e5636e40002f56d467ad03e1781d26b5e32b6cb7b57e3a6e9f1e90c8c5bd05e992d7530cde08fc88159a3c423ceee28342d3de57c6ffbab99bea7338b9e4e62da6804b56f52785e152a9fe0bd8ff687702b02e6e31ea190137bd6a3e3cf3953271fe257822d94cd2ce847f2273d5c02ddc41bd53badc09f830dbb0735529 e4901dd854d2709ce3a3d4a303ce353ee479bfedaf0dede1218ea6ccb76bba914bfde56bced74642e36d2c0afa614945dbaf16cb022cb9ed09cb1d5fab258da255bd287bb71ee34427e4e5d04fde93e9e41621cd2a060fa8daf7c205e25ef6e763b3239068055a40be53b11a70755276e4171a7fa5c6940892d9d68cc537f7 7e1b69b90ecd4faaf4bb610e93fbcd13ccab963e41e688524de70c2800f0f558f9d6973812e50702829d88cff7733b15445a218a8089878dd4983d5052d66c935e42d5532de8c160b043607dd2d90508d06f9ccb48a42b5543b62e1243ee3a8d4366b28feb00b2c73e29a912fca0d1e7f614679459508679091d7ceae748dc 30284cc307608f276c3c4abb6f15bd9e213e4794b973a5d73a1c3e4afdc754b6616f852d75b8191bb16daf65d29e71c8d1a4272fcf1193effc1e348dbcbe50075398c472f3efcc04295f97098b7a81b157e8bc7f4ecb0b208f4f0c823fe8a38c7a56394ed09dad376f41202e7d7c987d9bdb9870de195110b77f95a9714e79 2bc98f10e2561848cdf73b26f661bf320c773e46aa9ad2c8e359e3420edbbecc9ad03ffe262a1222965e2fa5a875ba9a5dedf753d937d3ad22fb96306ac8809aca037e24cc8986f75d93912ce89fbd64f7a93709a39c2c4bd94b65663902100a315fec69ddaddc995014ef4cd5635fa1a026cd283391c768e5dc9a972846ae a9991562d0f5a7e9e4ae933cfcf8d50819396e21ea48faf7aad10fd43125dc38a4ecdf24fe77a8a3132c245e7fb3d96d090eab0f4f8a44f2716ff7c53b38a308ceaa5f34af0200eaf231c72439dcf3854f48164f31e145c4fd75fe1a7505c50c4fe6229625bcb3cb6f212e00dad478ca08c3ab38ff8c1299f15b12af7d82aa 72458cd2af5dc0c8d7471f15ccbaf96da0cc39c0b51c6be5a2ccd61da6549d32519c5e4213f2bb8c638a92fbb0736cfa263a932caf4636c62e4b461ba8eb77683cbc2fd387c62cd250e70887417144ae922d8ad5035185c3a6b25cbe0369e60a795d7824db7cb4e572558a17cb11357b6c91d95c727c7d1d91db9f56450208 cab09fd17d34a9111612675d202e136095605b66095104619bc023b5538245f2c637f78ddb1198aaae07180ef9a524c60272499de2e3448657dd5b17db055e4f39da32e800ae3543a93e2cad811274767a240279b566c16b0c212ea6126c2587c900cbf17e8709d868e25a81025f00b52f6b5dcef38356d9c6c171a168595e 935812a0efb5e9f6a457e7ce7e7206c4f1125d280bfef3c5fa2e46f7b2d23744d52ed92162db40b78bf85b3751ecfb97b0356aba62c6010805f2607054e0cc028b2852e920a0207d16d93f833f072778eec2e4553bb7f6e393cbea406a490f8b53a4625c9cfc27b9fd937b6633e352885043e4f830dfd721fef3c5e151d2dd 8d87ccf94732da41c7e59c9c594684c6d24b44600d653b1915dcac06e1faedcfae380ea98d9f0a5b231b69233a4e4ee4e208f288a43e687dcd4f4d9284a4d79148000277ec92912daf0b6f5fa16b324a9cfb5bb659a00a0d09ebd60e71d294d8f9a6f044ccc491a3fdf98c9af8dc0c94b8db830427ddabc7ec2c2a483a2fb2 78bb5ff7b27fdc9280e401923f7d2a6f48c441aee30bd31f0db6fb93e49ff4ea14e49f75ec083e42fea24496dd28c9fafe111c836e2f62193e7a29766fb0c0d5f5212bf5ba597849d734064f44db9e8265271b4392b07375e0b8cccc255e05eb61e89c313517724b33b1b79ce5333b9f21bb9c372e01976b9911470aaf59c6 667eb5ae7fd3780f834108155d21e78ab31c2e883d0c1fb98a62abf0c144c7a0ab62ad28b99b763436c8e5d278bd02f153177da3040e909e25b0166f5c9d6a73c1d8ac9f2599c9c376a744b1fcfa5d32de5ecf30a3c90163b9d50d989a9e38d19bc86c7488aa236d42fa19595faa3e1870413c694fa750f8cfead8fd5de6aa 458c3dad1ee47c3a2bb4deaf35424d8e06d9452cdb73c82d72299d49b30b385a07200f2203ce45bfa033f84ea6e7e6e714a00a1dca211e9f09f6f365763ec4b3921924a784aed68f035042fa27dcf6344542e7323268fb6b678c3d2eff80d466c9c675ae7e95cf3d49736eeee951bc7dde934d051fb6e1cb6f5769e5f9969a 64d59d633fcb9412993af9efc89f7e13c6e2f35be57009772904595b6531e0abfd6e7c7e90390c732f7168c8afe794f6dafccccc7de0273bae11d781a05ef8fac2f904f1a717e2cb2b6acae96b8af623f99084067cec1cad6e06dea70c000fc01d39ba0d98d8d57ee7bb1c189d865b75b467c512526a6dde0e0b3f472a3697 60c80b1eb32c3a8525a728a447bc811df4a3627e9f4d0d44545e961abc809543133e547129a63fce00b18f0d1ee2899514f9e421d1aeb33843ee084c8561f69d00a02e04b0ef833dc280ba7b1def444b4dd589d00970cf561f411e29409901e5125042df042cc7dd92d21dd718cb10253c910b6e2dab43ffcd899ee81144da b0f52a321c12319b8245b01c700203284d68cb91de62be389af59def29d24c563bc305df8dae50f75120c5385aeba8def10bcacc94f1660e4d3916729b353c7eef302a4cc13816aa0bd26e6b38bafb9c39bc0c9811e6a7a8c5fc1582cc96a850e111c791a3afab2eefc1b613603fcff9dca956f1d0fca02247db36646e8f60 b6668b39793f56621d2738933d7299364ad42dd988f488b61e070282f8b05c99f232a2d8850a6af37599ea382ae5c04df20cab9c758aca2bdb1a81ee3dfe9a0ce92924a74c4daa6c8f44a03c2f5ba4652d7abc83fe0bfe4c5815e0fff7b9d09ed1b683205e359d8f367013f487dd30ef1861e48f48fbcc9d9fd642e16f41ff 2fd663fab21d5e44574966722891cb85e9b0d0a357a43fdb5c0e2146ecfde2f773ad5f9dc08bfb98f7761f88641bcd7330e99c605fcf8bfd556536067d543b1ded66a920221c9ebf86fade0e9530d3d2d66c366c167320a8f4e8b290253444b6644367e2ea4d4c50198240e7b2ee1f0ea504f1cf42f71606c6553aad6e4bc2 cb628b04b42402ddba8ba5e8e7f6b3a15e695e9a281e5f0322356e1dc1b253fab021add52eb6c43bb8263708060ba90a953b8659bdf1290d306242ab30a29b58d7c43d4b579534973dff998629c3c7be7f18689752fa1cde08289190c49d355b82da736714ba072082f3a7ebd9524ac4d4e37fbcd7073a0e974f63dc7a31f6 5bdddbdadf51c58a8c03f7e5fa2c397ba8e919d49f72acaa04d5fe473534345bd101459b94976a477a0867510eb71395736fd82dbd2e16e51ae49fc9119cb9218b43b9f7cb382d2ab92157add6a86bb9946706637e2574de75d5a9f53dc0cf92a67d9f0262b48913d940b5b7dad66def3dc136c7ef88570b70ca3d41d0301c 736b54199a351e8137b7d59c6d695ff86ca2369d0702a3b131cd5ef63684d1c689f182f0b2e8e79d32c6e6f8a81fd42819658dd85e560289498c3ed5d4b3d9224f0adf9558660d23cf1c39beb5f63aca618f7f9cd1f50904dabaa31d6d9cc30b7c258675cb4e70427663484d025456f1c74fbd3fd7e35ccb03beac3ac4bfb4 92ea69f77dcb116d13d49ed5cfd3e2fb855cabd23ce9c8239c077a5991296b24d553946bf6dfdd121bac62380e3f55efb9c43216877cf541bcb364c27f792e68b3bbe7ecd6f25f527ceac773703db71a113de1af13c1240e07251a9019c9aa9ebfde2bfc8b28fda478931d825c8319036355d70fa87adedf363905f6f3a68d 91b4ced1bf9e09825205a533af4199d0ad5da448228d170cdd1f6df35f41bc588efc24857cb6da20cb02284dfcf103887ab4cb66311a4f0db54129524a65b7f930ddb4cd33ba87844851918dda631123354b462f6a62f413d16be8c789e570d918daa2b4a6d996c6e882c2e4f4641be64cd2631dd5b709a21cd1f849c52a63 e6b5fd6f620e0da1790f7ccf56394ecfcc83a1e0241ca66bb367a1a7036b2dc6ff7083b48560e6d630dedb07f3ca0327d12c01313b7271f7b619c0d671e6b481a8d662574455d44f3e3ee5ad16278e1bbd6821fee496df23a84d996fdcaef6126d47e4e00757cebf21a5523ea7b9b825192f3bd76627723e2aa55079ba3fc0 77932e6e8aee9eeab93add4bfdc262a5d9fd962c5119487e3978b09e032fe96c0e6d614d145502bf9fd5a0529ec4677f9745a93a475eb42a39c9c7c8e2721df1596c684dd6757747644f0df95351d7fb7a99bae4909645c6da5bc8266d212e1be1d619289b228121b922e1069a188be77ec82b6903f41fedb80b856bddc8d3 447e644151c356813479baffb68d204894de0cf118df39e943cedf8751e998c677ac19048ac5806d5bbdbf5ef1e095d43077df16f990800ac65be3b07c96f17fde9db5c83ba93622909fb3e03251e9aed3b59a6f1a07da7fb37838764288c4b20be767d2dcceaef40bd77b545473f85b60274bb4a25f563e0b747b8f7b478e a802910276c78f7e2020a0a607f4711871d83495b19b45b369d514770d3cc01628ffe7f43e35b0b6b4a8e7bfe53a386556ba3c2499c82e7d266619a9a100d132230dd655bd2eb379e8aab4520f54eca98fd74875027ca90ba451103e26f218a84af8b7f14fd3f58ce7ed5b5eb5cafccb804236bded0d3c77691288de8f2335 ef156364c68c23b90689b518fb7bb9da5dfbee18eeef341dabd74c4040094307f31d2162b48eb7adeebea15ef2f48641efc3df83de80203b5717d99e1679bdcec2bdb4fd0efca25dfe81aadde108e6bf6b8e42d887fd6ec38a9cb92c962360b0906681c01703568f575b1b45cd9ff31670a8e1b61928ef6140f41bce10e832 1f7c217c4122064e0e6b4d64a39fd8bc37f600e7253d7e3479b0d4123af07ed7373bebe19f12a8688058462b87fbc3d8c611d892f911164b53b481acf4af562a11e5a12f414f82489fd138391b8d63b887595e3d8b5758a5f889a5f63aa96c74018ddd25bb6d01f9204e5f97473564f2d8b3ab51f2fd36368d84ef4c04d378 501cdc68b00721f5664aa1d441fe750e175f872727b7996cfd9b804fa1443ee8f07978b074a28cb39effe38ce53c5ac26ef8202918191ecf1668486a268f45c3d19c5d194efb695aecae578c5bd5318b8791873d92ba5a04e4b5cfb7dc7a7488e0275dd2cbf07cf3c5bc658a8056611bf30d2dc0100066e149089163228c2e c1083e331de3de4eef963bde5e8c6f6fb7506e63566fee34a550835da6b72c194bb3943c7ac3d8d83cb228ef8209770e01a35ededba62de9a66c31bec893ff8bc1eeed2eb62322075e87071d27e364f998698b03cf6f673aca20f660147bce5c0f7ca29414c556a93cf4120c8b1396ba0a0f333c178485877e5f4442c9a840 0ed8b6c023724908c4122bd51b506a3b542b0e4158bca16d4ab4944dcacb286cc1c4f048288dedee76dfb6cfd83c3ec0029333f29af1f153c0e692b62adeb3f4f8017c50b87ebccb8732b2e67b589156611076a3c322fb4bd509977ba5a1c724e6b0f03e44a19733cfaf9d6f382c011ffeb6ac14c1324ce16fdd7e2db73f20 474217f8cd6cacb36ffb66baedc093daa664c63cde2346f20b13f39ee53d6c1c07d45ef66ae29af2e45f8e27b497c37d75d03ad6df381879c48397b366c705803e0cadeaaad4bdfa280e92b7635dc1159d7b9715f96ae389637510800d4c8a2199ec1c81c774214b6b3b0cf3056a8587de0fc180ecb020c6c96d366f026f66 4f2cad516facdae32ca43f4609f4789238e34facbecbafc9e6183f82eb2fa5e5b3fc75b51ee2d90efb3d72f6ad6ce79cbdf48c10177638754dab403a13df5e22169db8e19652f5bf7b8b5bdf43d5422d093221fd2b6e2d181b4b33127e9ada085afee0f3c18a63855b307666c0d18a7e64c21dc1c83a5f0e3b2edd2479bdb8 1ab77d726cceccdf7f926bcafce2a8eb8f5ca9b32f370a192a0e043a981437da8adb9cf94b72da24e1630ec6fe8d04a6ec839c504183661736330084cc7b2188a293f2536234d2f10615185218349115d7ca81d2377c0eee17115ba31abb597d1eaeaa55b7f3b4bee147621df098dfd06b20670e1c8d15a064a1af8aa4ac70 2cd6eb52fdc8addf9633f1204ef11a813957e9469cffeb621ac33b42149cca7713c5657bd1147fa1fe7a7ca0013aecf241b019bb3bb5ef44ad898346a0dafe9bbdb5dcb526b40482aa88cc2b6065d7d8ed2a752f63f827398598e67b2a31c24be0186eb4ee8ab5e2051a5712d12a384aa4d27e4c26be290d116a71bc8e5922 27a0c411075fe94c4dc225404f3bc2911a0255fc2daa79ee596cdd48f0f0c340e712d7c25854fe0e87edfa6a4c603f3f77935f24edf4d28f537e4ed87cb1099d8c0937a9ef551134ec7edf3fba6d9e75a52fe2e1ced82957ce44699387dbc2d8bf8ffe9f6af6dd6458669c2b94e9066e8aeb02df9b69742bb8a572f9fbdbe2 78aa1a70605e35ea269ad8115bd56d063ad44926dbf6d776bcf6e11025bd638846861de1c15442f4eda2e7250cad26be98d8677daf1100f50eb9890ee4270d89585b1d76d8c526815bd2bb96c6757f1c16d789f1ca2b67cbb8838897ef038d4cf8d09352243df52f9cc8cbe35a16bafa6a67696b92298a3999d91c8efa3f47 3a4d0d7c87517ec694bdc9d239f09183d34f1a0e65dc89b142e4c62e6fb78cc2745ac3c8b660c4377562bcfc606b422e8c1b792f42d18299a2c98e8744f400140123d249ea7ae1f575bfedd05b7f50aea36a628ffcb7cda2e20a770c676b224deca5ca8983605cbd00971dd79fa5ff635ef3c33cdc3329b511d2292675b924 0a6e17f35c4be46ed74333e111704d2c44480b005ce620e83fec4b1fe6d637d9a6e2323e377d167e19edcb65f8d40c7435c3ed4960624b2cabe1649db2f6f544926f30ecf95fd8168f28d98d6e8930a8484ad1b392019c86daa74f0db4e8e993ab36ad69b03575faf26fc66533aa39183eb324ba30174574351bde5deda9c4 8137965ec9f3f14c54326bfe6467f6c282b6ed5cbc056788d696a3d8e8dcbfd8a0ed9793e18ac5e791641887027007a5a0c73392c9dd1157f88a307c0798d6d4b7346864e6af64429f66992100729c3f2154365acc90eb70a48980610f14d8d536b048f6718bc6c5b704b270a3dd6b0cc290f40e3137cb8bda7a927286c03d 12dc4088b5e36a74a349ec673994ea142aa06770d991acef5efea1338c22daed229aa2fe4f56e786932cea4c39503db16e32dd716c1a27cb0d78be21cf58efecb60099a5edaf3b0609efb52849b3c021ff564fc8e7cba25dd24995e9c164121be15bc4122216f17292e641c8c65551a44d4cee4803ced8605a36205d223e9c 748585e7e0db3c2227a513689d21d3a2861cdbfee4cfb36bf74f31a6bded1f0cf28dfa996f821103a889883389d02cb1112f643e2248db05aaeab02f5b5353b0fd66b65742c2c6cc7a7848171511b86b3f0c71e4a882c055a09077830f9f099b38d156a7afe5eeef4aea65f75ba912618a31bcbe1cc838072c8d0bdb954b5e b845c9aac14a1fc4c6e91bf3298ecc4d66709d91eacd2cda6a11b984887d2bd3c377fa55126dc4955e31e0d894c2668bb22430fa4efa8a0317e182084706fcc7382a9202d4d24905025e8600bef91e71cebf96d0756cfcb80189719f12dda753d648f3e880899ad5bdba7cc775433b40a02b381a0aed6788940c2e931f07e7 1c9a519abba74f600620bb189019ffb25f5ca920f832e1f7493976b10510ab64a8b8e65214879e9f1081c87de0784e40da248699a43bbc32c5e037705608d0af9ffdbb33c73cde820743bae3ba2dfdad6b61d3bb88e0cc72c3fb52ba8c4f0de7d1f2fd32c072bfb217f02188745ca88093b5ace2f81b8e012a50dd3c399107 28d8092fccb81ac1f78f01facd379dddb6327342a3b0ef8889686e02df57875a68deb17bcd08bdbcbcfe5f55999aa2fcae12bb2dedab0675304e8cc2d1d601d775905759c0c5cf9bdd6fd8559daf3a98b62341a0897c4d695e7743ae01a5a00dd1ed7c7df30788f4ca24a0f82aac4b24143909b4ad3bb84a6e8e81032cf3e0 a750dfebb3440e2e65290ad429aae20b38f6f80e5dc479c09b8dd6da5e0b3f525a18f6dd3f90c0394e6b635cb63d98ff480ab56a34ff7a20740c3640d8e07a9c3bc1839fd7a7da78ef5743a7238461042bcc6b1bd395715862bd35cb8c2361235bb4a80a25d5bad2a356d8ad61a7807738d360d07d8a7de628e932fb78f63e 12270b26fba34879a2cecf6b61cb4f3d460a8cd37d9b695dae2d7888052238e2694422a446c533252a416bcce1e3ba8b94568aa7f11f34c2470b9811a0f02c9ea344e4df9b19dffb3e2dbd51411f6386454d40fd1174067c7b33e7ce75acbcc06cad15184cf623f224848575ffb52746dff0f6bce94ed8aaa162eb8020572c b0f955556ff87b56a37c3ab237e52a4936440b588359337c48c92348cf3afa958c0e007f6bfbfcf7bbdb7354a405e5df07a600bbc391074f0e01ecae7dfc4114b05ed33f048d4bb50358395043976f8f8d5526ab7cc7a503d9dfbc4c0a1b352c6ee6a29c30b39e7d5a530643d59a68ad7aae841f95a1a779a9b3e3d9b57b5e 8e826a17be18ee4c4f5bfefa32611ce07e9393b0b1373af60cd30e569e496d07fd86aa790fc94e17a67f9c97e667be5253adc946cc6a2bcd662c7aff5e77432c37e4b4dccb0ac499804758babbdaf34c42570b74d42953224b1036d056118301448046053c847df44cbb17b5abb4c4e94b5a824a320693a37f47b6127b1738 268903e4721b0cfd1d64e90bd77b5f93e8d13cea8f30a9bc3ae9e58468aca69bdb7d1f18e21359762549db5c89046a7d55ac9bf3f90ba1dff2eb9b5931de99ef05d38f3a520fe0d0c800997cca41ad00d3caddbbf6e6240ae3a3f18b5cbd3ff75853d6d15ab56ff23094edc855b8a6e39b1f91ce9d5db388638596c9e4a9b6 8f056731eee5f74b7603038d6e1278abfe08011cdf54fce87119f087537f6e79313d5539a18e4b8e015f36e00d98d135ee1ff992d00d67a81bfd7e3350aec3e8c533f8f6ff10e0bc9eb542a1fa7f8109e7a51c78570a06026754fdc0f8adc65288965d876d929af1a2a1aca0475a655bcb950589759b98209de4bd952f4a31 2a14d5d7ab9a221744ef2102af933b7c40bac7a173ffb23d87385cb223fd39455d6d3b6840bae8b208b1e2a27877199ea5f4db699c50017cda00305c04d87a730c2701da915f1a2804c8e0191f8ed22f8d627bc8bbcdd48b7f26f83bc9564d81d046ecfee8a725e3cbd99d37783b91fd2e68b4ecb27f84e42062eec67d217d c09e50dccefa314db45b3d4d23a18943b085fe9ba70ad17970e0b5d8c326337646b05f9125d7ed3fba3478e43113e1f753e9eae84a927e084de8bcf3a56d06fbc210a0779c33a50ca8f86497fadd17213aacaf785be6c0b7f1254847e44e87921525fa83044824abcafa99839629cf7a5ed7e4c126b01d93529b32b7bd151f fd9aae121f349b81c79f4ff6c382ada0131b1066bf92a02791b39dfb9e3e91822a761e778cc46de07e170f95d6191f3282fee93e57e5f78708e45632a7e162d442f42aeb9f177b6e5d13f4534004a915c10f7921a6db090f6a7525e4d5ea4ce717b88aeb96cd304576d24a193b419792eab95d0e7df08890768787599ff814 17f4066a791db68005c7965759f2ad91fde7385c1811435a23375a61acfb430705b8bcffa56744397e0673ad1f1898faecbbc95cb2f7cf2d8e64a0442276e0737e3af8d448f2a53ed0299c1a45279883bf1ec9fede95de82cd3376554d8464b3f0aae61b6f38e040fcfba03fb3e43fe7b11d2b35bf3f3ca22efd1d29dd9b6a f3d41c5ea2929e502d18347028eea275244b6b1cffa4c17b17d6695e350e81826780a8dfba0201cbe1cf3c1c43dc6387646f6ba421934633fd3955c63cf0c8b7115a5a66e5a03e9c5a5793e033399b70edc30afcf839b2ec263483d3f3d8764f3b2b55179c7dad9339d360e948c68ae2947493f4b0a4e61f04e09fb81b0e77 da90531386bfc57a0507a285f67a23bff25a79725137ab0d3dba371f4cf2448ae1fcb236b23f71564e53342f8688d7f40f3986c2779539456bc23e44395003b8097547e3505abaad403dfb147680609ce540e52929c83ba833c99623de2e0b1aab95e930f4a61cb069d75ccab1ca5a3fa737f89a0b31193b84821a693166b0 f97300e0f5079650dc8f907d799c102b69e716050ab526c0dfc7eecb75e4f866caa3c2232abcfe363ae6b5c2bc92e5ed714508656372e422bac1e1b341e89ba11ad3dcba27fd080aded42be6e8c6a870365d44eac6fe43c103eb63b58cab88d474f4c42e46edbbedf6d4f764cfc865e80cae7360b31e3b75a4f0f369a8e3ca d3a5bfcc93cad8f1916bdf3f259c4a5892b65a83704f8dd6ffcf2e57cbe4cc7f8e95420f07fe24d2a9c46c5a77032ed2fde68dcd66bdbe667dd187a94cabff1f9f10416cd2affb898de59ad102eb2c973de95bab961c2570e5d836d48a2b341de3ddc7d0b0b71d3570b6d81b8bedb8b3d0739449d7c52cfc41cc8cb7fb93a0 1af28525b0a53320e220317b90e499c00cba76b56c61076120c37d6934e7a356b1ebae6810541dc2c630a542193632b6afd64af76ad61650b2bc150c812b153e075422b20b5e3964a71b12be2072728c607505429d5e715893d07e6b9a35771cfbd538f5d44017f4520add4af9f7fd8c17ae5c26270bac6693d81ce2a831cb 380e2f1a0ebf1fea8a58b15399984009138c48bf12cee4c9af3bc911a829303f538a0f52850b2bfbaaf9d72558215b49ac3c1de809ccc50ec3720c90a0c4a0286f118d1f1220b58d791a5582e4b187b0988052b367a4fcb1ba8da53fe734699f908c34323dc6cbcfdb8fc93b6d1a11257fcf87ddd65d3f01c63078ad69dbc7 2490eceef26b2b4a36571e70ab8068a9224dba2bfe3902aff31d7164e9af4cbb7ca830d35e151f6cf72a2e5f144d38bbc8b8377f390e730212143a452adaf9682410c1e9416e6d7d24c048ef65e580491591924807ba88a85ac6064c5ade510ffdbe719ddd38b256ca77a5d892913a16da4a1481f4a4e9d0d61c03e32ff5f3 db0dc8d50ad7ebfb09845d4c6ecd7a677b760d1e499df8b35e6bde600928d0555d56db1a00aa761a7e09ad5809244a52e70fcc1221b057742ea227598a2b320419fee1f8f0ead01061e2e805dd0700c5ffeafd678a8651771910dd7cf8a9a814589ef600815f178ad546017fde5e333d64fa7b3a79e231306d55df09a01c21 fcf83de1b06982bca10da8881bb31378f77054e843f6a6faf686a5dc9084920206002f211a69c1d136e81ad1e4a3348aae77cc3fb23230cd44f8ac0c34b1e861486f0dc8906a153efd9f774acc9533fdaefc238df9bf56c98626ebb8351d75b4e76d510035a60df8b9dcd5f9566991dcc897b0dd3b98541cc19f581ec026de 5bd7b316981eb4fa5c6e0e8555568c768448fef2f66ba7281d8ea05d632ac772c8a42123315a7bd43af7052a534eebd8507801a32386e6aa4cb32f2cccd88f70564d77edd99221251284e6521b1af01dfd8abee459f994fb653e051a5cd35b62bb4c2ca86f9e2bc51444ea8513a5dfaab452f39a41a1fbd4b596174d6920c8 d78f5eee345216a4888260840594a822de5b59f8d61485d359417c5369d5a49fd977b759d431fbc95992607c9fedfed9408603a0a52aaa54bba54f3a5d98996837dd4a01931235dee4b84d92d27154a125a3f529151213af89da7feb9e4f1293774740d74f803541aeff8333dd58613362c57094fe45f727a4cd2943edce7a 697c6b1c89c78f739242d118394f20707cf861bca046a8f86b1b6d00980b90e0d3a9e04319a2f1c34069e2c7efd65000fbd250ec0b25514864c91a7a4b8eb983dc0c246f68c306abe147008877221a877ea7f0e9234329e89b85465b25547461aeca513f35b54d64ccd040fbd316f01db500e3cf7d8ce9f77a490edc67af23 ba88ece1f02e1601cc73d895c11c68e709f276f88660178b7b0b9be402e8ed4401056d0b4b59c5e53a91ccbb53246888b39efc1b2bd4c9b5963979a62b5e34fefb06f11b8bea7f6dd41bd22d40c2e7b176f0c11044ad39b5aa0d6f103102ab7dd4a49b269b93e15333419135dab9ff044650bc214afeb95f897bbc81ca1c07 a2967e6607678affe433aaca13b8a3a3293c8285b7890aadcc8504d88ad1b1d507a416bf68357880ccc2b3b2bfe6aba7c0eede89ffbd383b6b3ef1869f4b80825d21e2bb3ed6e586379d9ba26ef5f61dc226377e72b068416ae28ce608fbe7da8ebf491ec59422699c1877cefbe113856d9291f3ee19fba2ad42d16954d4fb b581f15dd6476f03e92663c41e57538e8e002a2a3e6693aa9a05c49d57765baf324d4569eb7bb664ec0dcd6e8cb109f5e21dbb168aef008eb338d6785e2dea86ea733c485f2cc8e86efbd8173efe88de6b0574a7c7f51fca091258185a0691840e47ea94401e41bd95e41c04bf1188c30548455b53f900fc769f87a5510520 61db98e5d149df129a25573aa8206a483ac63c8e4c8a5e51e59a43474f9adc05bc1e1bdd796dfdc68f340580e87da8e45ada31ae51c67dcfd8e886844b2b25c3f138963121554efa1ad1db48cd8deae6617678f827cb3559a4c5ec736b0055abcea816521a12998da7b66b5c8dd2504cb17df50270a2d989d7b0a81e580cee 8c39c6d5fe296a2b8cd298ec84ec4c9c17c39a3852d55c125a4d8770a3e0ea4668d97578b94f099ee92544ea2138308c388d94938329c7747f40a49b1880e6edcacfcbdf6d27c06741f0f204150058e224360c664fd49392669a5e6adf6714043ac941598ce467feab295ab712a6ec17a5c7100cdb2641fed1eab4784dbcd6 6b383ecdbbe955788731a27dd7da80fd8ce314cf6bdf10ba612ced20e89787ab9c4262ac3e7860d63a2c4d0257c6d51189f6c6851847d0602226fe91d7fadcdf66efe32e8fb9f8e907e7ecaaca3c14b5af665f57fcdc2414e978dd83625098c42e53103c720c96f2eb2233a1ab567563d090fa95b170cfc10804fc21ff068c 2d806c25d142f5422b15f55885761dfb48203117169ae6fabc96ed8284ffe6dd1d0b9fce0363fd03a43004ecf25f7998095ffcbcdb1e83ebbeb305c103d6a4ab57d02c0f9a0ed125d87fbabf6f78880ab96c4dda1779fa45172a9c4528b035435a18684a6bf8fe68738d6650f7cd40233dee61191d97f0f93e0b239cb775f2 7c0256e0eb280728ba50baaf7c50c240f1962172834bfab118c2ae6dfadf3518805dc0f291b299358f3c6bbd771ba74eb228de51237640c0ab5fc066ac74245031256c820816e91af3d618db058b030c4aa6b421b33a4c40a13b0506c67c280bf725373ba45b5ccd76bd0a2b25ab4f05bae6d2052a93d9997f399b5555f87c 73b615d27626c19e2751fa3dc83d297525cb7ab920031cd62f9f046987618de990620485490275957a834315ca92b68c06f6b3e18b84b9766154a2f52f9ff6be208809bbe27b9ef95468cd1ec05763685d4c57c6422c11c1bfe232eeb39f74c320bd282148c34006fecbd68a794f67112ad8eba168edf50e5cc7b5d1bd77c2 773201595b996d77f4e5894402934bd2eb54ff7cb55dc242cb9cead58c0165af15a37c8cd9d3371c9bdfb1dc4411f94905ede644239afdf18b31e45a62bc8aaf47c01f33b90a2b0ee9253a99b9d9648d5ea5f95d79f7e5d7d6eca513082a5caad32896c76795efb5b23152b80cf798d7b2efb75ae8f42867137d2837e5a6c4 d890d4c8a5c1e3e185085ab487212186acd09ecf3d88748223bd158e21e5ff572093cf5435a776caf7501d36f36c95a434bda55bc253b9ecb870dcd891e8fd42adf8c5e17103a040f401708041b07891d90b279f4302df9c9d4bca1b60726737ae5b85bc4a0171548c7dff1669fa4c86d9b96239829ea2e0363b4a02f34df1 c5fc7724273abe2bd0bfc9ca1333002ea38f173d2f82eb3125d441a5b1a10bb97acd1018672e85e96e406a9192c68570635a1e4941d3e167b4fd9ec0423f951e6471c27fc4b2d8df8a1f6dfcd7e75093ea4f121e36a885a3763f4b80af1160012635fa58e59a00b3975941c3dde1b34d524ce5e68ad11b58b46a6f9f1ff219 3303849968fb27677f0332c06c4f5a13522cfa6c99808381cd36caf4da498152eef447ca03d0b02fd071fb0138b950b5ad8c87cbc5ea961f48a9a45f0e55c1159adeda0e788018d7b14ae8c457574f60e61f9b5c20a455951c4ad5aee44b66f384937c9b4001cbf9a9ef60d0d0c43e0f9f0686bb8f951e336745bb03148722 c81593b9859d92d9e34f77bc952e6e4aa2d688687cda330096f7cbe56d64bcb694c25e7f3c7d646710634e68c533e572c9ce3c0991c2969f60c8c3d6d1d1049ac62a60093216a18b108277516b208e79413a74dfaf5dd0ce70fd61650c8bef74d4029234c7c652f9c0c5cebd3edda8a0a9aba4f521803de9c0a632ca1902b7 54e61f19acc6c216cc82a2e12225341dc83ab069f4bf1729dc6df64afdbb2d4f60b2f0a52b03ce289201aca4e1fc60a021b54756b10def2e443e34fd4a269c886687dac6be9fc0d0960d1fbffe1de76735493c89b2f29cf335a71f00119286fd50798f00a39d28e56b89217659d63e92b0548251b5971afffdf087fb5bf370 58d263e6462e488392b08bcb5613c007bbede052b5d39f93fe3263088088578743b905306a49e28df7231f24079d91fef8b0c090bb4efef2f05bd5bcadef3af64db04faf7588cfbbfa4fc5909ef5b4c5de609a0a84c703aa121fbefc33f44375a2ee0534f1c75ff76dab5c95bffc853f0ee109b4d6b3b11c72fa1977e1e165 0b12ecac216a1a61614c2136728b4ed70fa6627ef98e766f23fe00320ee8035bfe0e09594f2c4c816e986ef705bad8d0b578a230f1e33c5e20514038f1ccee985babb1f677ea603467cbe7fd47386fe1677e9ebd3a9f00a683b123a056b21715ebbb938429cad7bb02c8a3ddf91b679ef5135f702a296eeaf210c765e73e70 e9766c37d1e5387cfc8450b4eb86b546f97ffba4dd7638030f71f4bf01f279cfe56e514a8806ca9077655dc7d7d55062b2bf3e3519bd10998d62839b37458ee67fbc105022a26a0098c7eb70e5961d305e9786bb328437b9ba26ef1154302e52661651549c3dd56627354c1d5e7fed1f4f3810b61b620f2e8b21a4794b833a d3c282e0a206b48250a051636be8626dd033606e1fcbae179a8d9f5ba5444c59f5153855873c4933b03466d36ff8b273d5d5902633c6357c045405d6f9c2849513ee118cb292a8af7567b4bf956ce44054e62f75295ef83f46bd3a1c88552cdadb720ef6b51474a501202bed66749e1f0db82e5610df391bd28758ca9911d2 e20ddf4bd1c293a75860e50c596ed05696856bcbc8c198d5af463ea96607aeea101209729030631a441d6a340c7221a80d7c0e2982db4a16f68440375c3b89738ef5b0e7e687a0d3e059fff24a61d7204f71dae933b39292b021f91f77bceab6638e34292d53d7e1418f7043d5db65c0142e7ed8891c13c10c40adac81baf0 af4378a54e55d17c5305a9c7d7dc5bda8c28a9009815620f9bd6a633111a092c88581a27fa340c41990c4dadf312bb8a9e0c5c0c9df100ae709749a24b0f454d336452693c7bcebc04f5430c1abed166db771f767e63b96a2ebe6f23a0b62482835dd69709df3308f5038670175c83352e32812b068efe017c7395fdb2dc3f c8841c4d72f861023d7d497491cae9f6f102c9ccc360b1cfacb86768eff68e4692793c7035d3d0a8283e5b68f46240bae308c049e3b1b029d08ed3022054ff8eac199eedb532191466feee01f9794dc82ae2acabf654c1cd5294ea65835b0e6e411ff027288619774c4d1f9ce3fe473ccd0c90f2b95394d95ca4ec035bc640 a824fc4fbb5abfaf60bb5f00b791c83807e99f681d69978024de8a06f70a2b4e5a14eea4bf8435caa32808a4a532d409ced0983a214bec5ec2a1b49ec5c41de690aa579655b65706687b35a07b900ce8cd623f42ebefa5cad3902745ed58bd6b8a3a71257368bb271530a5f2c4f5a0b8da21a4979881eae1349c8601e381ec 47b317a439af49b518244030f37a54a7fa56c62c1b0d9c8de4c39f9cc647c051ce648313d31f15e9fe4241fcc7d8dc20a36012c37a84f46623077b9d30c3c656f2eca1c8b7a477ff2e40470209a3c071de7b9e84821730d9f9cee3ce08738dffad0e3f3f3a46eb3977e9b2d336695dcf04ef5114a880777cf0c3130b847f9d 1aa9f608a676020455968657e766928a105828524290f34fe2208c31cd6e4caa0e3c075036cc57681b4c5b8625f26591b32d322983963c099375fe4b6f3081443830fd270487f4978fdbd9917313949115db90a7c535b39d925afc2ef0786c75ec148f283bd707667bffc2c5696e7d798c0f1e12574888d17c68defc6c160b 882e1951de1078adc7e15ca59f616fc1f4fab9032760ed90cd84c7bb931494d07e5593978ee2e0eb59b50ec0b04fe694e896a57bf2abd14069b0f7f5d32c3711a3e23af66e3d02531a0b8b24efb310ec815d47c2a0ec269c4dda06a3b3bc0225a242708a7e7e8c4cd18bd046e1c5bea25255953d021bc02e1aa330a6239855 f8bfbab1ee78abe350e3294a075f1b24990b9056632ff2c7694646ce2fc425528f1743baf3f85d8cd0283dfd33bb2ec2ffa0cee4f7d549ce3d7bcd582b28e5c71288563323dd1aa834aaa617e5413fabe3997e294c6dae0e4a5f9f3b0637442dfa1b907d6b0fbd0a950a342495f378253624cc024b2fc96c8527575cbb06aa 64726133522021c1426c11bff8084020d0c533a939c97532d9d3a913fa9055bc554bf084a4fb708614771dec91cf724b8cd1e1208d1af6dfaf0ec7b061d0e1abc09de920462603834015f38c858f97d420edd88cb71677fd6a403c036b56bad3a8b5ad10e9144cb7ac11a50607d75e211376b04486a6ea3db25a3a032e8911 c287f91d14596b73d43aeed0e5849be2e281154e5ec7c8794d587b0f7b994da8df33f2afdf9b3e581f44b8e4051e5bf5af7881c8b124110bead6fc8b28256b9775b8e35174f2247de594ae4015dc35480d2419ea4fd43302a4305f1f351af63712c577421ff4aaf4b91ee104d03efadafb70c1bd73fbd31a8eb5e2edc0ea33 f0bc3c54ad8d6e335a0e7ba311d0e2c72707d73d04549f5ea29b6b26058f5ae1585ab04a87a01b6ecc9036520ac6d1a85cca1168458d0838cc6c485bcf6bc3f7f631879291d3f692a5dc46112fefad575ac80c1848e98aea842b97d893914a731d19ad4e9e0c871c852ffb061b5890ab40431bbc29c814dca5dbde2e572fb3 d20862c6127effae496341cc18571a9315e7b205d172943c2f3e7221c768d9c34ce12c431f8957adf28a62c2b051effddccd029ed82ce9c241aeb23638622c0e5529649015eba08410f42d8f2a77c3d3ee91714b5d9ddf0d9d6e26bb5873e91b42fa0888a2c446c0bd15a80585290a8b1843081b9995f2342ff5e620f6d509 9232f08b75f2349b42a50699379975bdb6166eeafea964b4a023a45761b02ebd3f696ac75eede1d0781bc26ee888649249aa6bd47e38ee52ff8b568ee8291e60dc73ca009dd280bbf4c3068dafd2a5aa84e0f7dc2f882b5a8927f6c3d25778b83fcbda79ddc8facf28b5b5131e7e0a7251e1f1a792167430a99e1d731691cb 31dfea8d3f4b7e72920fc239f97e12b40bfad7a1f25b405e1873339518ffbf587b7489bc54c01ca52b031d8b7f9c0dc9cdc8152c3216bf7c518e0454fb676723509636e1c2332866d87347330513f7d25384b0d1e0749e663d4d32f435fa10d838d26979baca31ec4199c5ca3a43e343ef00d20afbe66e8ca7f0cefb58ab19 42d37053a64df2ca946a0a5dc79bb3c762c9c7ba744c7665b5a4bd877d7256cc7507ed492b8dc2bad29446c3a4261eafaa4dea8b03d1cbbdd556c3515907c90f18cad511a6a01d280b8171aaf8f21ffaa6b60954cc0439ced08f3e22f7575edc8ffd9957010c0953e2b0056289d41af031281d84c3693e3eca86e3086aff45 27a8f6d8639b62974fbd6a8c79edba5cde8e3a6bffa1aa41577c6d9da3c7e6a7d0067e307d859a5a658a7bdff9bc0c4a42490f1d43f87a0b91e690626bab5aef94e49577762b2b315520534dd4ac942f6f484507488381c7c8209b817e594f9080e37527579e6357dfd0bc16d4c7b2f688d4115c2c084ef305d8f5f42f4a72 c28489ef50069564f9f25968631e9dc643a786febaf83bbfa2a0cc997d4801468ed3e677699c93b637d31498283d7c79fbdc85490aff5c8e955ed8dbe53abfcec51f059c9b99d59c7d7c2dd22d88a00e6e5b59990ec3ef1ba0e0f8e6a454c2f272dd79f123c0808339c2f9597dffdd18cc118eb43f38965836a161d9e59c34 f2a11ae2321500b121e0a945e02079a2957b02d9d75f8debddc47dc8d7ad29de804e370969529276ba3a8d034e306e3b9a8969ba8a68801a913aebf55528a5170087a657517216ea9d6f6b968d9b55e6eeab9f201e2f0713d3c85de08b96c3de50faca2a44b24f642e1ccdf1cf6fef79d28afdd4831c4246bbb731fbbf90b1 481f074be75110850f19732972f60b6d5f6ab51c62ab9f74e030683dead495c8528189ecfcf38c0681132847f464837c4043ca44013465b46c21e0e7b6a6f70fca09b6cf44b6fe87eacf92d60bc1b92d54322b5909f661a9465dabe508694e25a74c464691a58ec118b65ed8cf2110f5ec017a29469e2184fa280da19e2d86 04d4535fa385b40151ff1a38d8ac977c761d34bbc89c613e5de31376976fb964ec7df6cd8fb18e2c53b05e5cfc74083d0c4bf3c2715f371a8fcc65ff7ba4daf9bf648ee5df3329bd91637c4174d25033681ccbd9c4882e5c49075c5ad6c72089e75e5e3a6221356003802829e21b04ca060c04812a177ad0e5ec0fbc07452b 837dc5b791d905b00ad96e7c7b48bd03ee91983aa59ce3433a912a0b8735bbaf50f7960f54f54802a345350a0df6717dafb3f8cb60e183208088b334c083958c05c907f29a6109796d1855fb0ac4f16a42eacd23ad06e26f1f19d4fff21f29809a8cfcf6b10b23c314992aa41b396debeee22350293c3661f2d5eabaebe5ae cc0d3feb50e34d6a981c7773504d189869a68a87b71945c49dd483633abf5d96a5bbccb91505ddc815f72651037d66e538bba025067980736a12b3a4d59de18b88ffa0a5e0381f0d987f001089be7d738003b66fe8532b2cd4139f0471ca2282ff41c8972dfeb0eabccb92d957075acc6724dce6f2ac6ea076ef12390d5f3e cbb910a9a7f7ba00590e68bad46f2b2420cbfe0c0a3db3bc668ec79e54fcd950465457f9f4ecd771eca2296507e309c4ef19558ca7782f12f1c991bb8a9b15f981ee2188cee49c34a68e505c7c1a0202d2b5c3733f0e45f2765eaa8bfe9f953bf2a20ba8b2ec4d9227e13d248c81c8cf1399da3a62f95cbf8bea36ccf55a3e cecc0c52170f0ae102cd20a35e38e22084267b96de41e51031b88a8c40f029b77221dd09909cccc1266ee5b2f05306ec1a0b71434a133c3d40de6ab73e6fbbc1e505f094a937c23eef51384d94f29ccc14e1f12637e40d5a2fdf12f201d9e55b2e3ae28cbf193cd0dd15cf6475d56c59c8d23e149df5dbd432467db24ba02e ad3e829a70f499bbf31277765150157f069239889bb8983b45d2306abf6f5fdf45335e363165100585be45a7789aead01aba3c35628f72a91b346554ffe3072f05fea72d43ad253cc4448ba7ec02d4da3661afd54bd49e5b8c2172af61c10e08fd2064a45e3f43e8a31d4b6473b725819e9dcb49dbf229e6b1f6117c82c2f5 6c8988796ea7a8f0454956386577a63832489fc1372c9ae848770211b4e0a6f90d80bbcfbfc0fe8c5e82c415e07c32a08de452c392e12c768dbb4cd3ed3aa4bf8000a248a366d5e067fbcb38a7331e027f6cc37b781ac6914d636d5b7d2451630b0fe5a3c6fac0fbf15f7dbb2f77a7eac6d04a19769c7b8276282f7c931826 a17be59bfaaf5dac88279a04f3e104754359b8edd3efeeaae9dc088512c5e6957f063f6acb85d55430f0e869e68cc809b8ffa6b19930afae2410fe3dd02af8a914d9463dff9ba07425e79c695160e4c365641d97da5ec0519c7c9fcb02a3a4a60336a65dd0a3604fee687be4199a9844aeab72cd6e492b1cf30c0ce813d753 10332c52b6ce10424468ddd06572c82c6424ee65daa62ec2d49758a83e01fe4307a7e84f8b3db123f44569af4f1d6df7b82323a56e568f96e144be65f5974f77dbc5dccf1468b2542908a6d964fe2285e3198b0b6e7aa8fbd7fd1adb3f7e7b9f5ddb69c2cd8a487579162f546f4ac7e9d531edea94cef13b801bd17cf20596 0ff1b3d905efded894d03b18b1e799edecde3aac30681e4c9146eb5d59cd72de470e2d0b7b0af2c2ac0c446d6bf541ce1cb63d2961db8582a931ef4c06d4cd7076391d18827a504ad28bc1fe3f0e4457b0dee2021d3696f1b71e62ea8ecc4f4b4ab04cc6a6c7073ac0d7ba5ce482480343bf3ff6ae63b4123124bf504851a8 58aa67f098388ca962040d0f4d896ff0ebc22a44966fa10e7ed55e9cca83cbc31f9d64f122bac80f52ac93a16a60adf3a9118553a962950fe294bd69093cc28c485cad9513a52a275cddbacafbfbe38cf1d0366e3ad523de33bd22fe47ffd0bd0348fc10e6e9a6d1d51d02761e76c29a97099af558d7dbd919d91cbcf393c9 e4b258201cb08e3bbf8fe891823cb81cb999af7f99dd0ad704aa55920c90af094ab40f8d36b5d3e3e84c7a3ed074d7b32ca8abaf8d8d7c66ba3470fd434eeb0910a9ae55e8302ed7c944be3ad43fcb7e8b0939bc7a278af34f5640860eedb6a7a8714909caae98f627c11685d4a60cf56e304cd15ee1290e258ff5934e4bd6 5aebde771cabd4d268877c3a39a79373c982a944ff1db9515df434269ae69711a94ee61bbc6f9a8dfeaec2c6859c4be67fba85683216ab4a53aa62d8b638001b041b07b786faa84a223ea6bdd3a3d7cd578729bf41647eff45e40c332e49bb9fcbf1abbbf87a7faab6ea942e2e9bf904c5969c7075d4e5124e0b1e5155f783 8f754b580a05657392db64f65c63d743fa39b3a046b5175eecb6e90c5e111664b195f31eac75dda9034f40380a4ead2a7c711101606cc88148b1d9ce8953c3c440ad2d1f63b41f13c0173660e9573b597f809c19915c2575e3708438fb68abe46d5ecddbbd2e87dde05f2f7afce39298effd658c6e70609979471dbdaa41eb c44a836a75c2b7e71db3114f7c6c1c8ca6bf0d333e3487b3d8c9838ffcebeeef7aae32e41b12f9a3e410d469a7862e52a2c796078d0845d90881cf062190b3bdeca3c36c7c02f02d3e7b33bf30143c2d7bc0355be7e848b84fb44db79aafc1e17026f620e1a05fca7bbdc1c516371a29a1ff152b1e0e382f837f4a4e2215ee b992a4c59976aa01468166f8a31040d450f1685b72f9c406cb82cc87feeaca48453a118e20963cc4410f8eda396a323a20399cb34d2601285240de61eccf04129596a829b236f72515e515a0e9d05a8e09b44efd6798b0441024a31ee582f1818ba408476db61a35ebcad5841d92a37821a883cb9edf1b7f3875f44f06d9e6 e25048933af89684b9c7ce577e4a80ecc617dc713550f8acfedd0530ee95abae6658a29365a3506a092bf587501c519fa2e5416fb161c7d4f9e06c5fde5ab5e90460f7addffcf49541002a8a3c7b75e44b6a9d2da9d574f9441604cd3e5d4c8f93b44c167203997d992d7e7f8bdce60e28381f68f43e72be4986fe9acc6130 a67f04d188611b5ba328e85c96b8695ec664ec45d12a8ea8b349b1cab4284eadb2adfb42dead4d233ec3af7e29501c77c814cc97d1085ea6f4c388405873fae70b9bb20455577555c0eeb329c9791a6fcd349e7ef96aeb0e813cbd945dda5547f684d95e4be523a10bbb7f294d4bf3c4087e7f671b62f89b1b931796531f9e bd02423277cf47a1c5dcb65999f5bfda115e04a091a0041432a7aa245858344bd73a01b81529e6d981a5da1e895c7accd96abb6c0a11a0326a0e19b6afc5d1e5c56351ea83a47cbe42e8a580006e1049e388a2c04e1afdf964d36ed0790707d0df13ebcf8cb4a7137f6a5b42570aba0b1015233a6d79ff1bb18266682d9edb fd1c5f0978cb1117ab8e01dfc61175dcc7f572e1577a6e0bb2915943a530890978cda080960027fe0ef6b329e5ab32876eca5f71f912d3a7bc8ebe17b47bccd2df44cfba736831c3015c799d3df76a79a499a929fd28b5750d60c38771607a6e5fd0077a9107289c50eb698679e68e3decffd25d76914e578710f80827423f 76b63d933a50194eccc3c6654822963f8d4afdb824ad6e171a0bd45188d901d09e6c45e6b7a4bedd478b6eb7be7bbd8752a46d29c6802ceece9d08a0393159a7784bf047b2002cf30319be0ee1bfac9cd6897c8f5068bab7d0ac618011e948916a63ca47b21b85e2d8da8c075c01be4543ec35385fc0b9686d4d8b6efd08cb 8b5f5258dff550f97a021ac7216b8449d340db55522eef35abb75dcc489514327a182a1e987a5caea48390ec816a4775906cc3d93a4a762792282b44445d8337e8866a72d749ff2848675be49cfad0d080f55c89355a821a9b68cbbe05c39e871648e8f6d2700308857347d0e0e897a92770295df6e0cb7d0695b356517c99 604597dc6d6309c0d8140fed555de57d1fdd7587c638577ab1ffe187efc32fb3875c001e76ebe96abbff89a8848efd004f489f3515de319c41f209fcb3f17ea0d5ed7582f9c4b9ad1f72e3ebbd5ca2346d213e014c54d03f7b1355be529789ca897822e8259ca101c52f7a0a8063649df85389a88fa74b2c06819a6a2e051a 9f5bad5dddf654cff0db8fae46a34674213fc29a0fe8b684892f4560928ea6e61c1877cb1e74ad3bffffc6e9386e0e1255a83a4382bb418528ee9a27d76233e9a131c40619ea480074b260e4d49c7720b5870639c93a94af73516cd61a66d9907de8232348d8d6afb7f965ee2810d755de854c85cbbface3c03d8c706c7f93 237ef29eff8a168eafb91afe474b54218c72289d9053b3d0a76ae8183c7e7882aeb0ea6f86728e7f15811a92b883923f3cc032f942ca392413275c8a38d2051a6f273cf6833098efbe6ba2cdfaa759c909ca62c57bf44d226b7c4d17e0ffcae7c2be3e65bbd54069b19319f86e9bfdbddfbad2eb023a281171588c5174dd42 cf3e621fafb81f355f296389c9de19ecce620d6a0d1dfc8a3d5342dfd01faf90a098cdeb687cc8abbbb37af0e3f24de7eb9b53714cc02f685ce3fab001714de1edc3fd7c185b0df0b8d41356f751116965d9df979d094d214595c8ff53b472a8b023b67c3a1151c3d52f6b7b2990cb04c85fdcf9407ac7434de4ac2b00731d 8b3c97ce81bfa2cb5de6ff983162face7fbbb4ae5afe0e8ac460de97c9bf1ee4e1eac2bf93d8c3bda89b806a7f8008709730ee4a895b12abdb76d76e8f2caca3cdbaa6b4ea9e73641eb9377c8500ce185b885b76c2aaad1205067b59998bc7cca8c6f6b67488b85e7a881cac110f0de4e4ecefc8ea8bd619e76a57ba862a41 a942cfaf5934e41dcbe37a2524c533d83117533640c73fb941045c3f50c45353a10fce75fb1d0bb800d3f6dcbece51d5e40c7fe5076c4fb38722c947d054d84929c5f2c9aae8b34557b6538c71629bdb1b9c9535399b0ee4dd4db52e7945ce74b3370f5556e82bf673b3d5f64f263cb986925747948eaa0ba1dfdcbde06290 572444aa5226923053c6dc2208eb440c9cead338cf5513a08945689c302978fcf4fc6ccf15736001ce168755184c4d673d4a3b547e3a740ff958e3b8301cbdbbf7049751954fde9448451ca1e1462d3cf1b3f7340f4422c2405657c1e4fd7c7636d4b893eea7119c046c1baf3d1c3b445039e83afa25b34f88fd5d58b2c223 b89e02a713270c4166e9defd15394f605d4eee3cd3e682c24cbfa557f4e43e2cd5414a17e8913ae97b4178744e316f1d589546e49b280c34b5e55122b4cf984a11baa7a20ea7a97c8cae3bbe26f1e1ec1b9cf98ea602ee2658084a1abd67729c6d7cd427fe18b1c58e69eb6599ad5baaf2e60d4f5981f6fc5030e57d13ac26 44544a923ba836d44551fe962fe30baf7208e9275f3c5f6291764adecc1d03b891c9640213b9738c89627baad05559eace7da50b1ddc4cc0c5d67f2b7fa2476161b3bc494a4012dd7d24320ecb4694b40877362a5dcdf49244a0351a5316b2404ea7a0b01bdeef039335023362d5badef4df9de48926732999d47d9cf0529f 7f9b99a7c221182fcbbcf005aa6327003df684765252ca52a8cee4063fc08b1802fcfbc78ba7d5f113d31950258822c9ace597172a5127e9cac20bb130c89e391fc1d9c1c0f4fa3e282a28b3d2730ff031ecfa503f9a4dd66e6463a091aa48027a07385f1e4ecb2d0c80fdd0cda458080379c6ec8684b864d55c0afa7373f1 41490a1a658a09df81e34b1e3bd3d752772d170807a0c000be413a8259cf20584e994a016f15b3041671ef27267643bae59c34a71778e8aa9a60f1bfd86eec0e8546d92fe715cb01fd22182f476d2e93f099c7482a6319a8f2353acb138717191da0b0a7ef8114bfb266cdf5689691f4d7f93e4f1e9335393ad1ae8eb9da09 730e9d12a5fcdac260f6945f47785cc367d81560c5fdcfd1cc41dcdd84480a62cb9a4f6f445540689f972bb06c4069e325d715ee2ce3fbf374802f1496ea120a3468dad441bfe17e247629f9ceab782c8ed9c9a58a5f19cbf36f86e4fe4d287c61aec9c4f6116fd5a6d7b2b099faa9126f6f2ebac45394fb232055088f5b4f 3bc970f70be7a5a7a10a484b4ed217cdebc6cae1b94015bdfc19dc7814d30b3f5075899f93632e5640a59650e354b4ad63ebb0c9a23c118eaad1bb9464829eb1b1d4c411f8daa7b50d88d03cef5ad14082e2d3b0a466a25e6f42ecb99af98da44cee5727ee8b1ac81f793450784a3ee72321cbc212e30ce4533065acb49ae2 cb251b2de6a0ed30f0265f7551fabdc927fe5615cd5499a0cd6f0b8fd251bd807906de4174619b2315df3c51161e7d3a5a9018f87b5d65293753055f65e52c65e99b01b89b04ad613469d1a531fa02078106b4062f8d91ce21d63dfd002c8c4413b0c20540def307e5c3496c1fd890b50d10e8ccb5c0ce7f3c96aead7e3823 6b2950a5b7a7759dcbae61cb141c975524a524019f48b318de9ef53c318c6c4e27881ee7716e20775928c1566e1b56ffafe19385ae98735aad93ee9a4321909ae4956981579cf13d717b21e04fc6a981e30d7a45f18cedf227df86aef69a3a7ad492b05938c9c60b9ef419569e899da62d9035106ea0fea09317830da5af3d cd2a5e797f4ee92e1d6805a42f7890c995fc2bf9b9de33fa08d38d42bc4ec60192c05cb7ee251be2e06ca3db9ef9530f002a6b265fc743cef548eef8059d6e41261e5842133ddc039ef59629a55cb974b9cff274ec1a55704bcdbaa99aace05cfc58567607f5ba9255184079ac409763a9deff5913040ab4103ba1b4251400 6d41cbbf01b78f9d724893c7e98307a41847cb9d3cadc8d111e9c7fd57975863ab3622d525ca297408e38bc48cf951c80aa9d63f9e06b4fa4fc58cff857d7e5f4e9e628e30b25f3baed6f7fdfd0b983c6c7623699934a7804ee716254020afe93d48dec5a227b2e794041ac21f503d4d1a8581e8322918748bc728db1e97fd 5e457667b7a380391bd3dd0b718fc8eb5d883e7f3836017fe74a493a0d3bbbbd6fda8e9657f77796c61f61d9b856f0ef2ce89bfdc61919d69d37f4461e05d85ffe670e8791855e1771afb49a880135c7216fd8aef5a561f0b98942b59f4dc42cd7f650effae8afb30a17ade96d282221faf67dac59ff8b402b990cd71e57f3 637b6299b0f0a99946a5e4b36e062dc6e0f306a24d81af801814e68e4812871af085b12363b4e844eb3654a0ad32b107cf99f92d8f8de656c60adae684e53dcf7fef52b532f4167a990d2a3364a95e7f7d0e38100d06e02392ff8d9f180673a8be2d0b6cfd9bc1c47524579d63f6f06fa01b68648f98e0a9a200c51aeaa60c a496a1c3137ac9a44090434c690e7a973ad8de9d439ce7e00699eff7730206c5556bbb30cd2087bf423a37f9ffddb53f81592d8cdedef06390a55255e12f8194e2afa6f51ab2bc595799cacce3149d5b8608f01cedec0b0cd6c74e703397507496ed4cdeecc76d0bc74b698d1be363f6d9e199ccd8fe9cf5bb68e648d40419 9620aa88bbe3b6667f5fa45e11c2f5ce2bf9b86b57c7f246acc4d78c52f2b4496c5fdadb0e4b73f2f4e9141aa416e3f7cdcfa17cd809c0935a6eb5379641978855efa1ac452a45ee7b9cd27992c66bffb970d33ea2a4e65a81daff6cdaa0237b334326144171bde6c8e12f348dc1f59fb30bb82d081bbd2d36efb44000f909 e67cd2d1ce2bf499da6b8391914d88179d3cb08f44ce3215441c50feeb26b1533931b1c86000db4d34bfeeaaec6e7c36e24fbc61c789e1b07210967951cc51de4005cbaf2b30135a5316be4f1af952018765c1b015038e94825478abe64e479b55e13f40b507069cda9d06eb04cbdac1dd27707adf8310d395b0549ad4eb42 a29855a4ffb796b64a940db6ce4b8f4d560e00d5ef43bd6d4a43414ad30a68252347d6c445faaae70c60e225ad937e401c181500b14f4a641929f2930b3cb13c8c755f64e4aa9e937c7c547302d857ea5f1e3749220c6da931598dc8971e392b0a7406b5d174b1ac4cb74bbd1e2415eb1cc72b6adee85e970b17c3f3c707fb 428445f5e6f7b09dbe3e40bb47e3d9c5f5a2de646b7d01d73e0bcf490ce0f59f5222209453472e7d1ba46302be823e217910d46d8bbd87e4f566fea0f2fe733908301e014a54d1ca7b59261cb23b29a3580f3a3b3c2cca988a75b2cedb1a884f770b7808aaab610b6dbd1c0193c16df20d041befea2ab4d7b3011fa82edc6a d4ac63ada457d40de197de5459fb4099748e9ab3a35c8f81a5aaa749be783c1812a317f64c565ca0186f759b234f7f3cf0aa2eaa480aeadea979a0a0adb3eac0f084b27bf65255e7e839b7e6b57bec728c9d21abc144feb2e3e4bd6dd116629d07fc18d57609582bf7834e3d700625ff808a63a99cd52884f434ae138b81ca 638517c43134c4fcd6b990f00de1feb4ad24827b27abbc6616564eb5b7b1e695592e67ffe53adee116e4b6598331491d57e985e843b3b6b113570b6bfec6af7dd0a958318ad72dc63a0d9d6ea1e6702264d8273f4d3a1071c43fc58b5905ff4db1a2023fad6f4a222db6f10910863af109b707022f96e1b78449a2f46cb26e 423a54cb805686eaa483cc48e1227d9ccdaea355df599b4372956b82a67cf0b9576a0adaf921db52ae57276fec54f9fd2edb25528f4472bf6c700e4038729f80ff7630c7650a898f6b7a448e7ef38c644f942104ff9e13040de3ad6216311eaaabb5ed84f42b8d4dc3fae8a470a1b2656239d510fcff96edd202e4498d94de 10b5d7f5fc8eefbede2e736dcba84ab291005506c706e39d0b75d66651fc2451041ea3c64c4e94039f6a1683ee0d67341c327a1ff88c31340200e3e03010889438ed31cbbc69509570e55c72b84ad41cc49160ac523e821a5d3045598fcf2e3fcea7d0898c27f5f358973b1cdd53ee77f00efeb7b84ef312df3c140dd804e4 645a4ef2ddea29d13e49fcf0ee7a9617f71b034a809475d3d0792af97ef99e58cefad2a5655b9a3ba60c7d7d80508885e80f5f7121ca82f6d7f2f0d98ff1726b3ed671a98762d630f621ca48de7ec601512285cc61cf0b5d1ac1b642d749cbac7d1aaf2928f4fa57c2d095e3b1fb1e4d01866e5f1329116d1bdb3977ae4693 5980b5817afd76531112442d3828469081f38e23bb96be6b173a2a41b445257b1683fd56ac4591822a11c4ba1fffd2d99916801d93958310ef0de2544995b10da3ab82ee2754646ab23c4d230e8ee875d1680556b91fbb4b100bf6d05e06836ca84a7982d4a962dad722fb6ef05019d1f1e5fbb197964338522967669784aa 118164e04cb7e823ec08843be040f007655eabf6510e3c75089bf4bcfb1dfe5a2fad3ef14f435a10df3fe3b697663f7ff2fc6110ef20f6f06889665eb67c376fb29d5b0a9b24ca9fbb9257a03b959b1e7032abd562bb5dad79564531cfe562028b179aa95a815dc15a8497a0ee80ef7808d11597e2599e88fb870ebce549d0 9add22921b8c0990c4c04f72311bf51ceba61c0674d71ccfcd8b782f92eb61ec0af3a82be103bab31acb8393248be431e93daca6ca6c8f5abd3181e7f22ad7bb603fe521d6a1cdf5f847326e50c3c3d40b0c96dd15005b4078ba5d984ce500b3d731581be895e047c379b8f4ea10f7eb61c46c385ea0ddc851f2a912b72b19 d318b76dcec04893709febca6f4a0e709f591052955fbdd02c49e00ed2a01b96c978227f5dd07cf09438ea40f9716e5200e3f1acf64403b16293c4c23ad8bf498071e3fa6d31f04a04381040f69850d660a751ecef31f20cae79616f4674004f33f9386a6d0841bbee8a0af8b8ab376af6ab2ee705a5973b8e7ada5d47bb6a 3cf6b1104e82c60849863e2e847e2e56adc4bf1c872707332cd9d2d562c97bb792752f53461edcc6a4fadb464b06659305d9ff0620888d60609b74c43dde4d21dd19686a6b3cc92b85a063ce6140ceeb9ddfbf1ed5b88b1dc7e08420a98782e444ac7bc85a08fbc8ecc96d5192b6d14dcd0962ca88fb6e7c1d400a1284370b f9082b666de1349ccf1745e4ea793d6bbc39503ee1680b9775c51fe83afcae3c3a4cb7f862b29a4d8cb0b2ffeb6f0c672237eb6eab31e1394d5d8b191bd62217cc2b761e6f6100e5745542e9b2e0796a971541433418f39394390c644d9169c508c454b681eceb68040504920948614fafde8485980b4aad9b37dd84140418 1d1c2a8fb611e611148d18aded8bf62dbea02212cca62961ca2f71d6118129fa7ea6ffc0882aa0dd10273e2e6985e5096f8219e8c204ff1c6b440dd9b64eeffe6982a640454beda3e6087c249308744651aa65dfd07b24f412277fdbc8db267ccbb238fae0290c313d958ea98be1c2c23b226445ac6bbbc31c581d882119ec 5591852239fe03769ca1bc989c421a116f154b6c2cbb8a8baea95a30de70fa1a17e2c1a18221e9860417b9302f17fbd945e4370b125fc9f02af79573e5aff62a564a7ec733e44f6def5fe13e2533c1c8d0e9f12097b0421d3ffae7159950453089259ead88c50f8ff7602521de5a1a38186779bf127ccf7bc7c5a684489ad1 5830cd14914d03fa99e3ecd4cc6bf7e608de4fd35d2e50d2ef40d9d1404d78524bc2a62ba35c746e13a50afef0e52f7828431d56d6dc125bd87d1ba3a4503381236ed360a9f862a5fef5480c85506db099073e1e2bc7ad9695638051efe8e5c78a93348fa4b8e8f5220fb5c636161a8383f51b70745caf1d6c965095eb7b13 c7699d4082089e4b44ef9dc3a22c191f802553c35dae51c4c63032ae0230850fe5fd33ad68e56197001bcf39d4f235ee27db989bdfdf6536b590f9b11395a8524c11b2b4c7660bea430fd5ae566cbbcf0a3314286aefcbb54b835488e488512c2343aaae26e160cd84b4748810727ffa3d7cab9e1c7415b69d2968870b7ac1 19e2983db24b20284af50b5484ae7e6dba2f1a30705b5d629c2e3bb532f8b93fc764a3e84d54bfd4f8aa1ee1882fc655643ff7aa73f347ca9377a0a6f6d88b3a5e9c86bcffe108342dceb6ace0c76297fbf7cd474ffe31c5166829301d65b4761180c8af07db8bc83fa8db6e3ed3149361c218ccbc38fd8422f37733e8bf62 09c783d62c8c2b6a5435f1138fdca30df04eb7d72e9626e431a89c88094cd093c75b6abe18d4e71c5e718464ac49eb92db3d8d3de3d496cb854438138bd96f26a16ae05e7b6e54398f62dbab283e981872f4edd8ba33ceb60d9e57865c1ec8b593d6b5336b97992227314241e7fcdd81e34fc2b433509d1b18e81a71abcaf8 0bc5e4b017265cd82c3acbca4340460160e66f8a1c319347440a6a060697fbad16486d07620f5e009e92c1172c6314dcbc17454b05b32ab392c324b99a946b6f542824fed49d95ddd62772454b881ed3de66d8db723e55099f2ae32bd22756d06b3c6c9d3e2736259e187ba56a884f2084e1c3cf1212450eabb935799d3fcc 5e7ce4f84b880c76a8c401963b80d66bd0e436c0c3f5a36fbefdfe50bc200534f9abb7c29adec48ee54ff1d9ed7bfa0cfc40d5be3ad70741380ed4d77c4d3beee40c27d0912cb91d0b4f4b46ced92c5e53a4e2cedb48ed7f9940084388efd357e7700499c811d4b99a384229d524bda0db5f31a2da390b16175ec3c7239835 b319c51f81dc4308eb022b99513d18a1d66bf0de810dbd8c31e9886f1999db821558198a477ed4f76c980d0d95cbc96b0629a3ed38b9583593d06b08a1e7fcefcd79379bef54bde4e9e8df6adfa2bfa1d5ed54e7543cd5e58ad0540359bd67ff21a517cecd8655177ff0ea09c4cbbb5ed408b382feee6187f3c33fa06d994f 1595c627d8347b0004ae028c7cc9e127cb122e83cb3ca6ae22288c7256a8e77a72ced6b03c4ffb8f292d5925f405f64ede2472dd96142e208eb1f773c05d2d254bb3681321d9962493a1fdda6536e402c6295b274c05af99ab0ba663d0360f96280ea6ef0fba83e8f69d253e8391c0d34163d278bd41627f1c847b24794239 bd4a9223aceaa12b0f3fb46049df74bce9d540342242e98bfd4565a39207b1374f1a277e6b824f1b307c6635618d623bef5dd091d1460c97eb8e4664850268583c235acffff28a3b779bbe36e07725ab551bba51e32b7a2758385c36fc86b6c4a147858f5cd69d364ee8f4cb158bb6dae04c59948c2c37bf5b6cffb842fa65 0f3b9d28b77953c91bb29297e44f7fcb71febe4e0fe7f7df23cb92ab9bf861a6b04423a018d38c2da603ebc27a378fc6c8d6184acd6ee7bd0ba1a1f7a8c889cd3f0892349ec04827b43971cb4232cd64d23fd2c0e53a0c1e74f441e587912f7a65cf3ddfffe7ce7853674f00ca3bae2431d77515ea657af3ff600e8f7fa845 ff3eed6c0bff25384c4385689c662e70b65693f0959a837a5c80866f5ff7adbff14dcee31b9475c16938700138552030cd0b02ba33fc850ae3d7e49c3f16c2d8b11e1ab9387fe8c52e636e69bc861c17b252e3399e40e3f0c5ab055fd3556ff066868f372d2c31532b599604358a22a35a870fbb6501a6e7c359d0181419c5 6123c60686f1b78164a54b8c680265f5b7bcff2282d2e4b7d54fa9c6bef82fba60e88e28e09ea231873d20375411b866f39017584c3d3ec84c9413da030b7a66367a71b8ea1d79de5d091ab9db127c8b5929d021683ab4d95a05ac88f8b0a508379d70dad6beaed8ad016d6956dff90a1413e4bcd42a55d76658d6a3336827 e04157405a25d247cab32e19ae93e54483043392615f6a0cf0d8054c2bf8049d6559e04b324a926751951542722a68ee11de942ea17e1549946b0d0d13697083595f6499a295ca76b8fd3c26873ba1082be163a21d754e0de5825caa71246bf3fcf7b0f056bf33a73964c794c3c3f0178fe18536cc51ff0aa7d6bafac4ed6c 8e520d4f7ed96d558008f82f88e972b1f7d374fc9db6d41d5b4c7927e639e30811c979d68527294f858808e9c7b520ccefe03a29a147155450828a39aa512755fd59cf62f312ddab44e91f210905d41714b5b36a98a23f73e6d0ec32e1ebd358bda6f46efeb53f3fef7fd096284c5fbd1315915b0395cc1d28bf69cc8df7a2 079393cf1761d9b85b0ed46efd63ea7da7b5cb8afee9180682f3f5740e117dfedd94c61d99c40314eb3f3efcbc9eef584c46b2d66a340c4045c42de0885637114c7a28d17d00a4b15cd47a9636a4fd777fd0cd3203d3dcdcb3ac6d5ca56edd39049672d0591390c2470e28d9b8a946ebadd65f47f9b077e99c8816c9f20976 abe19e50889400f0c0e4d089e8b05c97596ec4747a6c302d12f30c7d047277abc4f5b4e9efcc44c7d17ba83e1c4f92aea889494adc0272681e1a3ddec8634a51a09f0ed7349d1ec1c10dc4c7600d3263fe1205c8724b9bfaed0fff85e6f4beed3e93f860b70a13094c8acf49dad5bbb86a433fda139f4e20b1d72f922c5e29 de19f13b5180a0b7edd6775baef8e1510cdfca5f3cacd31dfbf50e9e41abd9c90cf60571eda75350afeabe51a72cacde8b77723c5f6bb88f6a0d94d319f03c625263c94ab494e373d9ac1afb667b545eb03f9dc1b868d5f55cfc559ae7c31e2f10800506d0b664b28a624b126b9773a9b8d629330ed3a046ca94ec1b889ed3 d26cd6dfbfbd94ccd2a91a1f37efb61f5f06ddbc1c021c87297f391a2d8720e08a104b16d398c91f4ee2083a08a378b9c5d0bf1f447fa7d5c36aae44439f91fbb3414b06d22e6cf1c96fbecb5fd3efd23efb4bc8e356103123ca144986e4ca0f59a99e2c477075440ae0de9eea5f836fba6831117bd787341b86fa991185c9 a47281a277c8b04df60439897f67b7f42ab08aa7e8ee931e52dc165fb9b20c1de9fbff7100e30ebe292750a3a84681bab07f03fb5ac13afc1659f15e488c796c715d85aa36a5bacf473a9c02957091c3b01cf45ad5af307a551ae5d34caf531af09a7959f42e8151fd791d93d229243f735b47ae6a0d2bd3a32e979e0d77e6 953967318216bfa573bf0290e65835028967a394e271063d84a389b56ad68a638649d2e6399e5f7a8a0afd3b4502ab36fbf3dfa5ec5e12bcb35d193cdab02c3a5be1333adb3f68737822670ba7d3e99188723111660303038c1defbec34c35ba5dc2d39f637b40a823f19acb1f4cd3531ef90898fa6b7c95148437c97fb3fc 1014edec32ae56f264bdb4a47385756a794d017f5f6a9721f91c7f07bc307b09ae3b7599f443eb82135428485a126ce82d8e814c148cfdc6175e19c92f18864857525b5c392b1f5135ed33d6c0bc3d3a08f466a3f3372a99699804d0a9f9f2cee6287c0257229a2a47339a0be3826cc7a9719762a12669c535b98ab76da8d8 4ffc909c0def3be50d70de61af275f11f53a34e8e68d2eda360e395171225aa26f59d22273be17ec5304a48e3786800c21e4fb8c7dd7ad6338442e146241dfab2da393e78ff830c85732906b9a43df31839e3112f3d07f41c6587f07ae11928f0e10a8b8423a71549a09bf31e65867ade7274b92d7df34c0eeba9dce565d28 f2ece0d58ccd777b45133f16b24f17334117d2d76f1e29a4c28c10423d940c01bd6afb4beb37d66311b785808cefb236bddeb7ac290a23fe13a12430e27bde2895963763bc689b1e7f66441f20b64f23a30d288e35f73bf515a99c1bf2cfc402c4249c468a337db21a39ffd13f94ca3b8a77feec434d23cce5d7287e8dc9b6 5eda1fdd705bc12e21efe88a93af0b8429a8bc20dc4afba8bf21ff75e9e6150cc0964a38bf07918fd13781256875d37e7b62a946ba1c83610319edc2725589ff986de5bb6044b325f43311af056e19cb6e42c3d353f401252cb4c6e8947d1b06921bb744b34079dc15fb4795d3706008629f752a0995f2a51957455351a3f3 d658c6c28cc09cff2b10ba498eef1ab18fcaa42b33dbcc3219acadf0f77e7a60dcef1b81103664079b74eb268772b65f5fb06a51ff7821445afe99a713776c698a9e41126b43e3e09edcc3946d4370acea0685605e01153cccb97060a84dcb4654810bfab85a1a58e3e172d6c5db42fa47502cdda77aea0098fb3894c7b4be 4c6fc4edda4d3b48c53f106616a9f966e5d9d5fdd4d3207aa982be50cb55dd2a3cfa94db55a95fa3ce853f4c03a60b4a6ed849b9e99d02dc9bee016ace463bc48f647aa43d17eaf37eab30776c9be089db0f48e6f67bdd86e787d7004c1c1a55b943bbedd841f34701d977d7229cafd3fcb2dbd874d275de66f74dce69a188 0d438436836ff12e3e6f3fa374ccd9193cf87b1ebd36c7bd9e5a2a7a0407f2a66bce1fd3f88bcc7eaf43bf74e832aaf03d2317b256a8c55a913286ca17147ca17ff54b547d36f8f782981db4a37cf7e837489709aa4894549664cec9455e0c80a47959c611256619dc12eb3afa6697accc30a6a9cea866db86e04fb0f4cfd3 1998990d66348736b780bff28825b2c4791d432feff4a424e231fa2d7803460ae16827fab8c0655b0fabb3e6af5534d617cb7c3aa831b5ca42f3d8a116c1546cfbe5a432f09340865a2ebe7e7395136689cca98264a8e7b52f43c9c75410758d3ab9d596f1d82ab9d41d2e98d1dd97b85263474314740ff8273e5e0f662a02 b275ed1a74c160b2dcf5664f892cfbaea308f50be93e46be711644fd5d7efaadd8206ca3a4d19bf1fed84309662f88bf310bb34c9bda5dabca7d0495aad060093f08ffa810db94836a21e6255dbbbc39671abd878fb5add80c1202ec95c1e4f1ac91ec0f03e1e90168d2715af3f992b8afa9c66ab9cd5f9127fc50c815cf79 4761414e6f8f319ecf9615bd108f8842e9676f8ec4b4e5e55922fe632049f32cccc422a3b76d85dfb2704a8e3a9e8e6cfcd237d2e0e5d37d7faee1ca94421a935896385ab24a479132a41a49e5ec1c2b21dd0b810f070d98da3b6195ce98fdd06828a63df15e981dd9347e7baba830ebb415dace42c1c5f9b8adf060585c71 50e83c5d83f03669a5e1186bb8c39aa1982e456279a70fd44f93558ca7c26c64dfe0678765ada8db36bbee77c1574b387f671c3ae9f644a41c3cfd840dc5860b9859a6fe00da5e9d268407d6b91b2c214c325fe025d6c17bba68989720eb6bb48de0416365e3be5bf15dcd452c175809a30f92f49e2eca95086a76a141c411 aaf2e88d0ab209aecae24d3d018df75ae87cd1334df46ed0c2293b1884348e6134e0fe0613331d9c84498736813888b1c4a1fdc02ff0d0c10e9dd5d119a04a9a993ec845772cb5ab449aab262efcb6ce37700db9136233466e5ad9a5e8742918f7fa2202c9066cd5c52817f63e2c133bf0723616b63713f2d2ddbcdc2334c6 1b17376073c36e75b69553b05d6f7a1ac73193c536160ca665d690411ba1236edee6342b8e6799b957f8b958e4a7e5d2d03c64842d6e594de767dd7d4a22585cde954ccadd79e829a8521bb41710b6ceb5065edb0adfc099863236a2e34700c4eac0c2620c1db815c814ce20ca6ab422f5c1e959cde1fdbc4e0a943d52c9d1 e3e6df53b24a5352b4b5da61553ed0e486f98e4641f9314e368a0fc33b2c6791fb1b17da7c47aaeeeb6e6ae41c304eca860a1434b22a90a6e4240db67bb69181f6549fa53a6b01201edda18c3b1a6024f705325fb9b4713b29ebbc712ba83e6837e719bff8ca649537ac8734d1348104660d8fbf5451f1e183e8105955f1a6 f1da5c8a47c6104c245260d617ae578c646a323096d1ac8f45f2a5f0eb68687038ffb492bf46712297a6ea3c422f6054d4cd80356a5b130b9ea53f7dff3b1e86cb2af6e9b354ae744e28f6015c01a0ac7f65692079387af2aef55a364078dcc6aff821ccde68416d7712a639d43259fc6ad747dd3c212626fb89f9989bc795 ae80571325375fff6cf916c69ba656c54b9d41cc5d9b1ee6f0b6dea2d8c00f9ecb75afcfd440833ccf4f9e35e9de774969af81a13264b413bc15148a4b955865c49771b9ebe6102816c136dfa91317e69b60e772b1adeebea15ef2f486163f1cc7b94827ed9930b2900d57564669e8e5191612dad2b4eae34b6c3afdb02b1b d609eb21e05e8379fa26dae4456148664844327c4d7efe99e4a9fe775c3455f2531c96e70150e2a5767b5dd01850d201c4262f5df212dfc10c3881f509b38533f9eca0f8002e5367adfc35538619760bbc557baf640455d4d6fcca4934d390a4fade569b09a39952326c8ef62d6333f66ca496966024ac805b52c66aecb09e db11240c3b9b1a91b0eb89e71b71375c69d4603a62ef79ecac75e60b16de26f66bbd6eed1ddaf766131f3238d83569dbde77d526be735a280a424157971a743a79198fb44436a1bc5975d136ac15ed2f60b3dea57b05791ae25e643cdecf2fc62af35974c573309949c5745195b7e2e67ba81aa2fbb46cc36b761cdbd766ef b8f6a6200e2d336cac52d2b30f96d09118a06b1119b4782be39bf95f1b8bce462b88ea2917be4c7372236874c5edf1c15b453715f066f0a5933dc74711a5ec406ba38f8c8cdd1cb60187f3e33e57d1661897c1e5890ad9b496051fdc0f3c64cf7108b44a43c7cb5bc6792c2889437d0f1d8b3a7955c5b6bf709a7fa0235669 267c6ff05bb99bbca98029970ee69e99ef64cac31d66944ff22594cf4bdd778861e8afde3a757ab9f799f0f42e2ea55c74d92cd5507e4e5a49c624f5f0f6cdd79fda70af7e7c24f6f673e7df8b88702f5481f31267f6ccd54e2744d29a8920b59343355476867e3c57ae5c3a2a8e7558ee3be01e300363bf2d2fbb12d68d54 73b2718c436d23a09f0420bd61d0a0ba5206ab91832a0c307a7eeaf1f13bb78bd6b15b62e6da1a93e160dd2252cdd70b6d7d42e8994625f7ada31918ebb7433e480f88320dab83876a64039209203d93320b03da8da5843888d86f7e4982cb73067a5f2ae2499d5ba278faeb28e2a60fdaee428bbbcbd0d2b3647a32a78967 486e4ac39e4552c68ec5c8ddf78ff58a6b16f03c24bd6da4a155ec0f9568ac9b85fd0b14d63e2d1f141b299ee2d73dccdcfc8761821309a0ffbe49001a4dd09fe275b8bdd826266c0a2b3d9d687b4526b76c18961581bb89df3548f1cced34848c0b8e990ee7bac79cdde4e4dfc9621e46e70c112c4079043d290d9c08943d 7a05d8378022dfac5856fa36593438e887f2777fa91c6096304d8cd6cc14d38300a2e7efe63e801b8240c60fb599a2f8ed36a090f5339965fd1f602314025398ea549acbfd2d0dc013027e00fd0f9257c96473cb36ed2cef5a4476803ae50875269edc245b8a7bb138707d068d4721278ac89a3e26b226f3db2b7e0d203058 7cac5f7d460f63a71d586dab0f87e279251419f93f4ba97343ab3852054a8ebf3d92dbb0b0b051b5d758bf3c3e330663edaf390bfc0dc8be7d6b9f6cc2e9e25a5da38adbdca2a1780eecf48733d1e1fb49bfc746fe9ffbf1c2e69f4d7e26296f6bcc6c9db726ee29b0d24e3d5e01c9ceadbc370c8092588e525295a110cbc5 b40111c8aee7efe855947f83c6ea3196ddcd2b99c9209e52f83786fdca847a5b5fab76a6c9746d04555d9435b28dbab1396fb06a3ca5de76067e0fabcb410e2e84db713d4259a21358bd5f8963ac0941fa5c1ae5f5ad090af3cf0f17e8e06b483fe3b63149519f59b2d50c9c305407e0b4e55fa4fadc967ee7eebd3c38d2a7 cbc34c566eae21777e825afe698ef3085bcf69bc3db2c9680a65e343d04d891296e8e1d2afd44293199c55bc63655514af44fde2a3017f43ca6ff61331c1ca83d776fdd08a55d8d05741549cc87b7ff3e6b87c2ce19a8ee8abea1a67d98b04662b36c49b3d1e7c1c040117d087cdeee2c25f62d65ac8c57349f48fe7a08e21 9f2c790aad9e4b767d6822fb50ac1ffae69a3844a77eda3eab87f8f81b3b21cb9d889703e142f390e041afaffa6d9ae97c59ea696fd2c9650f282fd5f0e6bf6435f076cf452aa67e5c2e3b0ac0cb4ae92c2a2bd44c86442646386139d16f0ca1205971c029371b5b3439824c356e863edddcf18b0b6c3fb2c1eafc1470d895 06cfac69278d77cb0387d430f525a87bd698ea96b967b029e62065557ec3e0f76b3efb6319ecf33f4d6f967a09a0bdf2a11478539b3e450cb53d58899d76a8315bb19a53c69af37ea4212cd092c6eac21142e3574380df2c27f7601c94c6d32624d60995e5c8004d3d24da9a36750cd078379096bed0ec55d2d91c50390bc4 f8ed990efe82ce026e5084760cb5396c4dde5d25b50187f2050c184a55ac010a75667bd361e3bc9453289b90d77f0fc48b328ade44af26a79aa5fd242cb2ccb095e2aa554028f60327047775d7f2de1e8eaf2b455f33dc8d66ab96697db6065dbc11fe24a0ff0ecd1d968dd3eb753c1068ba4f91747f4c53c66ebbf35a13e3 139ce0f6eba5cf8bd16dd266ac976651f965de2708f82a17ebdf82658ac57e3cfa9b6ca04b06d7e5a3d3483d930c7c7172c8ae1458cd2c324bfbde742799e0457f3f10f005394baa97efe60c688fb6d8bd24fb462b29422f27eb815930598e3a1e491f8db67dc125f113df83d8cf07cc6cc5e30be937523d6f07d98f0b709d 3ebe97ff8000eb7316725034caf648ba92e390a6b831bd59ae8e49726762801f3863a526f729d144fa99fb93211bc1930b8532867706c5ca0f9857a9052d0519870c956ee57bae5ef1891794c6643f05177c6ebb2cf2e8d0ba203144d6771e0d7fbf20911c04348b3a92fb2afe0756a4ed2569e1ccc147b0fffcbbc1922869 25c7b71becf788086914edee5383e7baef74c5eaab1faaedf41b5d51f34b7ca9aed2435f0b007b6035e6b75eaa8d800047edcd08c00f2479e6cda0a8c484d68c18c0b98d0bea519848de347f6cfecc0893d1ba4cecbc271fae1dd91593108994a2ff6b2b97a4789a74178b668a6557e0fd68f3cfeaaf086a7243173a4b90b2 27a8ded16db61013ab37b20f0fa00eda27f0fafe431aa01657103bdbff1847388a4da88e8326eaa79bbf447703d40f2ad30385f26c4c340d1f186032545db93ffc8a24d544cfbfd2dbb85e05ce1dfd99b78aaed9fcb7c762e7b2cd5c017ebad4fe0ff4393433bca499a932c467110bf3c393c06568c29f56ec634f702fd3a5 a7e938f9605e9ebd9cfda6358b26127ba15ab501153193040093ff4f9c92e430b67c9ee442fe74cf2112929bed5a727d28e4d59f7b842694a5fe679d6caaee651986892242f5fdff3d58d59a8f9740bd6577e4c20d503d5e30b7f1beed6b89f3ea32053e25ec2816eb35af725204852cb1bb0d59edf7e0797246f1bc6c0ad6 ebc71ce0e0d19a27fe16b0e16a75954949dd328204732eee295220c0e712e9f0454cd105f169b1e3b1bc10c1bece935dac0fcd98afb6a8d1c87c3a8464b29e7108b64f8059228f2f10dd206dc51d524a5fccf2356e5675347cd8c8cb2aa415becdbb5a22909d14c99f6e6489ecaf049c210abd60b83f1151332b418b57ed46 a4a4cf822172dbff7df1eb097f0ad59efb9fb8480af397099efce740277d8198428be21fce503324d8b1a6ad3ef5043cf9ac34a00a40753453b03816869112fb4295cbfbc758a47666133fdcafdd96f3fb5c2daa31f4eba4215d317c2b375f924b7390bd68c156dbf54ce83493f50ee8aa277ba6ed02880d0ebbb07815b96e e8302e75226b93920e52ab6f242b72810b241c5048082cfce7844c5864649b05c6c2402122b199061dbee27e1dd36563e719d7d3897c8fb89ecbd0fe2ffe4e8d0a1bccc2171b7eb30b19921faf6bf873bf239c98cbe50273f71fcffd9ea3d38b1b960d072f0d8f005fd00accfb45a697bce1cd0d903ee16b5d90c9557e8019 cc33a5478ea54f59869e42f5272932c15e91d38aad908d80b5f3aa1f6411c15c4928f32015eab85b9e0f453241f5e85ab468986d1d529f49f194a9ee3d595f27984cc7d7ec3c2c304581e90aed20f4f099fa972fef65f75dca92f90014045704f728ffab80943a5539a2a8dbbe41e8b129125eb81f0064fce1ebd0e37a33b6 29b111974caf65d12c96b255b63af0767fe939d564ca5e09508903af675696c683f4414c49ea4634aae487937a8b77c0c3610cb810ccadeff9206a2e74ddfe4466c172787ad69bf4ea353147723ab9dfe2fe458e6081c5d442945357b3887a1d61da48ba1db009ca0f98c9b7043822322a482c5cbcd627b8fc36720796a1ca 15395876f9009e2d43df877f9905c0efa126b4926e8d3bdcf0a34e930c1b4bb051da7797fd627b234043d64b3c5741e5a4a396a405f1f0db51c9719be746ed76f95dd921f4e166b5a6b7a98685535f4bab5365882cd54c2a7ed3d6e8f0d8328dde26e6cd6affe97eac17b3f6fdca245cce3dc2571a7f79eb889c339b8bc536 c7d676abd92998d84f6524baca177ba6ee9768aeb5c29536f61281fde6d8c1f381cdb291cd950f13fc59b5a5ac5f21b93e6dcc70f6e42102e2d304aa0b3145dbdb3b061453c6a07ff1333a4b1c997a6f77699393c0784f6340e4b80d0185de76cf5c7fb5a57d9e3d412a0fcad6c7e172c0a88c3acf619478c46c7510b537d1 114c71393ff4f3ac306cdd60a3c59985a658fd40eb12b409b3d9c02dfcc7fb4a820fe7129ad82fa8e9e3e3d2972bae9ca1ee7fa09f6cd4b5dc16d99a12f3e37dfc51338af1020e64720b8692c648ed66bd8c2c97a476b5ad74f6da942c95c662d5666361c1bcbb9952052970253a8ca6586856647c8779fb68be40aa54cce1 1173e5e11b1cb2d788bba809b3fe3c9254717140af47f1c70d06f65a4e410836a85238f8f296aa5a22223151721e65ecbf1b3bbbde39c716bf80936ca80e0967e4ffc8cef3bd6bfc879537ed5fbbd23c37977693d8ff383f36ed5a7395c79bf831784d63f18f08aad9933c5da9f9b20367bce078b2f70ddc949fa90df4a702 01cf4e540286131b53befec008f63442e9a36f18f9ee8fc936f47c1fc0af66dbe306c3c9294f18cfb1ac87489808c8917ccd322ce78862bcb1a9e9d53054740b3390de5448e07189f195989ace1d4439b978d831ac1bddca934cb6b39a2b7d501ea51b05a8bf01512669bc0b8f9f2cb0fbc71058894a1dd054fc2a40e60e2b 7eb9e2ac6bd906b303694a58b9c7b85598ab41d3a2a3bdd92e5f1f006858f96226986afa48c75fce2e31049fdbf66fc94eca52e7f67153c8746318469b3b523d53404b48353458fadd743aa78752e149aca3bbc23e34aecb1061d3968d066896426d4ce3440de3b0dd8e2c07fe7bd07a50586f596a1fa5f7d7b796ec6b6ad9 2321c18820763719d4fa56bbd35f5eaf31bdab3f18441984d4bdd039dbe59474167935435e50baeb2aaa44c168f0f3872d4bcc38afc99a87dd7f2dd58ff7be453b7dfa318983cb420bf235b590439b9f5f52c2c2c84e47b11a0431a014c2f159ed770e9772fc2a307feb95f4636ba0de66958ddcd2b134f540b8578e76d73f 45b9f24b38113ecf15d9cbf0458c90c222609573d2a1a00c38eab5c62a595e0a05a4412c384e6390e926ee16aafa80ee80e03f293eeb6f18866482a2407c3c5ebf7fb7a992d76177efd297ff8bb89fff41bc1c9b064e030a45749b1811795877985162ce316b8a9b320a94d935af83b2dec1a52bd64239b2f9b7cfb8258083 97c1945d3c95390bec313bbe406f6b46cf74a5a384baecfa2b12cec10ae4af8da26c77faf0d9e6ae4de442c4a3ed36751111fd9dca5f38b95c8cb942b7ab1cbdc68d03cd6727f8337b918b57633a8c3c9fdbb96dd6cb3aec86a4cb3e6ffdfab52b03ceaab6a366e486a85e2c96610a960885900989b0647d4f3aa944e8bd0d 69d63daa8a409375d8f752d4094e7ee1d02c2b2422fa7d6911b0ab46b02618f8f8c21e0e6bf6a2d414f4a25d5e23e8aea77eafa69e246436f3c9aafc6b5b341f3f6af922e5deadf8a9f45a3dd6830bdb2eecc299c1ff58582d6fc1693a2517d0a0f204adf2c0dea6d1fab1453ab212971d6696f11261b70082c488b2dc7057 e6f313581b5cad0bf0985d4256cd30a85d172f26c0b1287844f716bb601f18da7ec50dc4bea5d5b3724f634a087a58d656e2550fa0dc709713448233a787610c57d0e77c70ff6a517c669dd38df90d8d25d661ce53638fc227ddbfbb7bfe14090ccbe886ec20920bff3d59323c9b752802cc8e40e0b61047f6e8befaf682e4 9340b007012b2785d456d621cd0947636efd22189b85c20340432d57e20730bba1ea9e24ffcbcf9d33b0cc8fb719cb0ffd2f6da8c8bf0d5b67f1e07c740dc375c0b11a706d453977757805af5b89c0735110628a8f69c7c12f22d499ff3dc7d333a8355f8db4a94e828452a1e4d145b5daa1b0c3e7de56221c7713848f8592 8adec3a4b3b29d499463b669202adbbe73318f0dbe808e99355d2b6e71d43287b3d8c9838ffcebb923978f638255bbcd70d984b964463413144dc59d7a7fc7519260922744ccd93f8176c16c5972483184277d56c42827ebb55e1c198c5b66ddf90c50d8e9e5a30151cc1b5952f8156e4890f4153538817742f8400d7c5e94 222685e440fa64c8be9bbfcf562b8bf3cd350fa2d00a1f996dd197cf2ada35597bf04c6200c085775ecd391ce34f68d39564a319ef8b02fb4f270b88856cf17997792af773ccbbe429bd472d203c3622c922d19a7f5cc3f02d826b472838c733d8db9f3cc4e3ea22ad36e35d7dbf00e9da71a133c0c60ebed4a99bf49af445 25545fa676cf9415c49e3ad5870cc40f74a7e2bb44e0d1941ccbdd4c4b03ac3163383f624d9f4d3a4cecaad34852afc93a67fdeffe29ac348332f0268fc113f80391cff84e924508a660931df301dfa094dd872504d2aa5b7d98a6e84fd4420a65682a440453ebf878bed8d7bc1555fafac512a77f4791dc2bce8c0ccf06e2 bbf93ff51c7946724b47e66768ab813cb5c4bf38ac126a5a39569374ab485e3c46f8e7c03eba4f1ff1203fe7995e8df4b482bde8e2df88adfea0944634121dcfc44ea247dcd53503cdb57b379129a30d57e499fde8a6315632cc917db23dfe741630db2b9e15a8eb1374be91f698ef7e126f8ffbbd8ca859acb172cd35f7f0 2a08f39f5d39417f8bd8a62443465ef186b8545ec6838eccaa956ed276d62b3bb1ae8a44d5a57e429d1f28c2d100f73f17fb97ed0641a19fe5ad131c6f5f4f05e1a5b3a1eb60ba7fe7921cfda00b7eade836bef345fc1ad896ffbbf16da7c3259fd9161c18dcd5db6c38443b48b3dd71dbbf6265a2d112ddb90efa1b1f497c bd4d4b93aa6c9c6b5badc6340799eb1fcfd04b98e495a01e375ea2e842f47dedb5424aad1e188ba1cc50bca92b816b6f666d5bbcd5791b8544098d45c3d648f03a867f705bb50ace4646c058230234fab94585b101d203e88329e89df0217b1f997b1c5f74600dfa3ed7aaed9a087e35bbdc610760c22df91145deed5d9d6a 8278741094b247998d53550dd1580f220a9d55bbb1311fb0d35f8cd98220865f05f4e514a6c3fa0cfcc17af53385840c8ea9ccc45eeeb0d2228068df772433557f9191115c42617b3d3bf47a99a5838e151cab0fedb3f47b27d65cc50c68b6a3ffacca5ccbe7484eac9f90ac1915a2a2d1fe98f234e5891ec4e7f6df4f97c4 9198eb6765f896ed68a453989f29e7d2d771a46d44d4811c82de954218f6ff434e06a851a1b838a6c13de0c5fafa67483d36dacf752354eaa756c30acce76503607a6385465e2a8c1faadcee4959d3060f3fa5881a6c6d73d8f5742f7e637a0d25e334d4ec53315665430642d79a2f96071e62198351a6184734479e4e14d6 6aa935bf6d27a6453c47f00a37fc83cadec53366d6a13efcbd29c25f85540227bbe2f397f0f0bda2dea965755e2bab0bc35a36ce56ec0d06927c5945c23a416b50491ab5661b3e3308692369d605b954ba056abc22c3008f346310a81511140f1d100ea17bebe853c2aad908d50320fde954595ef9d9893ed7e4fb163ca2e5 d6846d026827b8a9bc37a3a1669d0cb9226e63fff2cae3ee0c571abeb147f4230edbbf41772d35cc0e46b80212f45a23db0c63c172bee06e3eea8603033b3949ade75891f44f5543fc646f7fe3b094063cdee7ff9decff8ca1f16adc818abdaff24a6eb0b8bf41d6b8a5848ecfc923d20610efb6f4c57e08f34fe540b4e642 a852df8c9a863af17f68ed3e47b78a59a52d1e1e048cb82db85dff7e1d32685e9b0b4c5085b66df5016446585af3e7bc87f3131995832367c4403a04eaf2b72c26bd676ebfcb3ff78c67bbc562bf6fe5e71f4df7787a5e6c05777fdcf7125a1e848b338aacd97e388344e09a2b5eb1e99efca830f39bc6d453dc590a85e955 eda1d70cf1294af3c4d948db5a4e3de8324888353d8f8e5fc193abcc3725f6e2206fb522cbbe3940b4ea6ce2a803603503d749b5b2d4dde112940af184b35142b5aee8691ca80eb9d375d6c4849218889ffa04b8fcf9d828c42f4fd4cc98cac27d04b9f5b340c47cd2896989d58ac59a2dfd5f1fe0dfe000cb52219d1da308 109553300546d20c3364b17d5f124601e31d5269123af8a37c3be83ca76d110f6cfebd51f331352233241df94d46cbe6e884ad7724b5da987dc82f6f3366b6d2b51d13f98a0b025c2c28e8aae2acede6c78f379206df705d7ba811ae6b9fc93f8a2c7eae596b7e93db1ef774b8855d1e3b5b9abc8d74ad22e0d3b180158d8d 3fd70e04a426c14b4a0c9c354f08f1a280b641cb16f59800948bd6e2ed89a8d1e0c55231b41729437c57589602e7fddc3ef962f7250357b8d8b1df59cd1639a75d14c51506657fc739502eee276c56b5c9012043d38ac17893de11a32fa2f44ae4404710d0006fa76675360f8ca99980bf88ca306664b79a4b2ec8df968fdd 48c92548317571c2b214de9f18de2a1c87263a4a74d75c5bd3db8cf32c63c4031808d6fbf9739ba38e2ae55b9c01f29aff821208a3bb575d9db63188d7c3aef23aee75190d519cdfc53152e6633e27a2e453152c6bee8b1643c3de1ad820cc37fba98bf5e38ac8d9b6148f97b8be9abf9518adf5fb2075f0ff26e721660784 5a524fedf00dc69e863655f025e9acf77783a80f39ad5f35d00ac0126714251640c3ac6eb3d83bdda164788526e17eb93469fbfa292947ab01ae659d3c6280359277e060b3ea52f14380e2c64ebe9cc2457a818e9e2a75f8d2dfc093aeedd4f371acab7729440100994b541287ce556fdfcba8a22a089529e92d84dccddbad 7cedd550b244bf7a779288d3cc83c5eacf5b4febe68131a8285454bd302348dbc10c6d55e21c6345124bacbe10f2c3f5c87bf783ac97e14aec056f94ae22640b5272dbfc7e047e36f1f6f04e49628eb42250f4fbf59bd2b3e7e0487c947c8a2649cc7ab00742cfbb9311e62113a763e1f097c699171daef1ebf75e3ea01a3e 5519ebf0001e21d1a46be196ccb8b94a8929f9aacec6edcfd179d97250fe4b551b778af01de5c28c23b18a45c6eaf32390533ac5eca73a85903a6dbf878e2399de6b1b9b5966bdc07b11752e37fa66df0b7575ec024e3dd6062e95409f73068c6e2444d5d115b54827104c9c6e00cdc02d8dc158bc10fdfbcf7ebb71d26ef1 05a67ce876f328aeed0c55835ef52a0889ca194f9a811c0cf330bee371795e25d6e900a5d0aee0bd561b0bf7dd46a7a39ca3aa3652435ee937340fae76166b062182a4632c8c2f05107b16f4906de07c1b225f56886f5eae6eec85cfd455dfd5b923d84712faee2d7eb1a44a615559735422d03c95e8c1c4f271ec2f0ad748 0c44ee1d644a4244cc67d91b1c1a2d4a2303cc7ae4d9dde96af3abc8eb690fe2d0115c78676766513e468d49b3217cb32a53b6bd3b4c8f44c174574a505f3fb67b744fb93a5463912ec5eba7e3c0c7940d0ec64ffd70ab5bc9b30fd938b4d54979244abfe918d5f78d61c4f4e98095c9087d39bc8534b627a158f0471a6858 25177cc0188206a64376cf1103683fe1dcd1966055548e4396b097a6826554b46e49d3fdffdc43513c9d6717dcfb030643c27bc6aedbc6efeca6182e59c9f76ddf74c24512d15a199e8e7e471918899c8e2a89a4b3287c6699788da6f7029c820914e96e1caf8aad254ea3b76bfdd4a562c237e4f4345afb0134eaa8f512b4 2cb7d6f1dd801be8e938703131bbbcb7c10ca12fb5d6efd1422bc13abe9070a491cd0b5b599aaba5eead5cba8a43b7680bb067297c1b44da35b9a68b1bc70c58a0e5756e214f87be1419b8aa820c75bb38c9828ddab14205c598b99c79ac5ddfa631d07353e0b6f21a9104e3d1e05154cb2ee65775f9abeb59e026d115150c b11c4469f6239283f7e4cbc06de8cc942b9ea041805c34d36086ee93018864abf68e6b69a66949526d75ab054fc19fcf7527841e12f7b62d92ae56818fc7e1a62837b33b9b350b8db2b599bcd41c3e513aa7751f9c4e4db9e215b50b831f84abb27e8c64112ee952ebaecaf450b29c41bc4e4e107869b66856d6c4ffc7624e 744a34d47a3d13d339a671ddcbcb1742423a1cf2b2d66b0f2bd8c115b54573b9ef705d5d683ef8856b3af26ed035ca9e50e460c8cf4453ab558b5940c6fade3b3bc7eccf5c35057e6cce69e6fd52bcf7d6ee48501213f266a9da4297edf7fa971fd342b4ec0e15bdf25205b746a5f044482a5390ec635b14e8c63d36d64c96 6f29401768f30853ebf878bed8d7bc2568714b7e489fe03429481644e0f94eef0a5372378a60f8c3bc6b684783df4fb0d97f510d1b43ef0f04d03e02e8b2c0413b00b827b319a0e3436a0a3fa061217625d0bbcaaa0f9cfb73395db8fe305b9b6bd1d342bc89841b84fc14e76d31f3bbfba6346be7533420f29a56ed41b2f2 799149d756916fe2f575dabbda2a493ffc07996d9d8978aacf82df84e31ad1d6d5ec0aa2004aa7e5378b1402fea3666e5231517b4620324c25e008fa0c85531e21e4d275a4ebf1f2c589e869f3eb4196c25c47a4c6668c1d7ae5717f7389ab1f7bc4a6c6059058f7ff1f83668d61a48429d3bd77cbe284fd083eb8ff37ceee 42795a08c7e4f959de9de18eef332655d405f8d9e4f41819e10c522283c95e1437b293d92ae6f9092e51982bfb5fb8f64d585a32fb7ae55e44e8facbb2d5fc59a0c35ca6b7c8aa086fd0cc2f307de69832997212f0b812c21b43f69557afdfceebb12727d33b818cba79430ea967e45b92d647b8cfcd369100963ff1d08857 2983d8cb92a91d8ba5444dd746de45fc736d3c5f976a5265af3df003842b793371635ef55f498d97c3db8a1b681616f7df308d2a18e3452b7669b43ca02d08755813c2e94371e82c2a918be917bcaf3babf119429798510d902efd2ac64fb0316f4ec6ed5296d815b980b914b65d472141a60ddce3d80699ec8b8107a296e9 a195be9ab35827f635115159373f916f5fa3fa0f62c4067b5c2389a51283bdc04a805660a857a450b8696885b152835c0ce585c26f96b905e33f623637824ca8dd01b0e8c3feaee10c7e6d46c2993d5a8ea4cfcf0cd97c3e500ae6b6997d33d8a0a96450493c8d2b49461192d472fc15b1ff2752629fd04cba6d23a27062bd 7df42ba7f529957ff25665cbfb3335f61a00e60f8c261c819742396096f91b8ca6b50bd6489174a1551d7be277da24a982a85d2295b756aac2ba7876f183e3f00b4f53f8fd3f0117d44ca3a1a027f51cd44517899a2b4ae471bd09b03b82c9b9b64ef19e1d05887cd52121fbada29c24213336fbb54cc2ac1b624414eb540c e6102bd6dd82b52ce62ea547d62478b7865c2febc4f4783ba8d504705c5eccfe43fee04f49cc6602e3d71045326bdfa44ed2412b242e4115793934072ce6b36fbd12ef46e0ff96142eca6e57f707760059d5cc7b93a78d9b6ec2c91259995ca847c60e02a7698b4df8bb55d8529e1e345aaad22b23521d720cdbac6557b66c e0e3f9a139fc3237531eef771edc04dbd7779575efc7b6d5e569eb438aac79d3cac32a76073c843024988344ad7b9200c78e04a4e1817383cc0eb15eaae8b60992d62caecee9d51a04c90fb5c0e50ea09e836b3d6f92f5016492a8b14450d65e012d5e25701c3a204f72df59ff1b1919665cb744ff9cc14334579b5d2a2a4a d311c739dc0a3b9bbdb8e29e0ceeccfd63b156999734261131a18227aa4d9190f69e7e74cf9dae95596d691dcff8762e7817101eff0a03dfab9da89936d76335054b9b2e54e30730ac67f6b6c8dd47d2db1719e888f85a1979ccdaf5ebd9484b819bbc87dd983e8211813ec26e8f33bb846876b5a0fb09f6a0a96e893b9124 085cde323272271840c235ff6e411027b7b73ec957428397d8e28ef39e740145ec57ffbc41f3f29c36d534ad02187963af2e69944be7f8ac09fcd848481c4e1208e5d50236e32de0c4f2b0e1b2255995e2d1d139c345b2cf99ea50a2498372788985b883ce35f61499b67dc68589b8dd05ce01cfe85fa1eed553028bf47e2f a36efc6da18dc2aff683da8fb46d4b41ddad477e446cb364a3aac376139814fb6beca17e9006ca7a0e639e314313e65eb48eda5a1fa0c1c2a3a9c951cc7429b9b7c0c84501f349db92ca1ecd3b8d8f784420ab18f5557747e428786ec8b26f5ea5d9f77357fbb7ad468a8f5d617807b616d1d3a5e56ed1dc7d75737e3198fd d0ff43f6f6deb433b824b31172fc1b19a04e9d7775d2fa27df5d0b153ab6f4b059563290edeaae5097a1b1a43f252493af8b468dca77789590b6c60e4afd4a21040faaab9c629b508a340d9c71095632d639d3bb7682c438c4ba07730868e3db29ad74cdeb15029a36c02f24ca41009c16e3e81533387afb3f509cea9da457 a825171becd2526dde3e8875cc7e9b9a347f12654ee7923b2e858791928b69e700b48663f447ba8868b3232b2a9840078a43ddb6406e1f9d6754b8eadc5405462fdd487eaacbb16abbd959c66f83c93dbac0ab44ba08bfddb12bf01c7f992026b13f75bec85c720790aaf43b0623cfacb180af53ff447daf44168020c0ac67 419e20a8b345e23c0ce39fdf4c3a37406b8b31df8b2027b78ec38dc4b622f1f54206e32a31db28a585585c23526cfe862f7a6931c66cf62cbafa61e27e21fb398f3fe6ab25fbeebaa49d78a2723eb07acd09c38d7b528a85e94829a92acea66caadee39ec6b038b4deed794cfc45ac644f28ce17877f840977fbea676af84a fafb81b533092bccb82a13885287f5ce670699081c3b4b87e3e353c1f6d32b00f4a5308cbda4a85664c1c8f2f6d354ec13db2e5d6b1d0a28885cf6c30795d1a126e090344147447fd2ab21abdcad7a6cdc4a1b97a5d90f5542a2bfda0db44edfd195c740678a70d510b456fce402876e3764a3abd52cc5752c05c7900479cd 0967e5706162c5cab7cc32f13c3b555b67511d3624db4163588607955a85143fc64213da1b9b70919cc53ca737862cf80c87b94618e7bc1c96df314d43b796c66921865609be4a026177e545fdb5e3c1478e3d5306572d34e7a289bb1099ca1ded68661aa96a680d8677b62e32943d8bb7dec73aadd2fbcd822f923ede9043 436414383251ebeab9b973c231050487fd9eb28eb535967f7d50edf1c0efc093c40ce0ece2c9cfd0b77651f22ecde3bda6e3a94d745798649c708dd50727f270e5b1365ec1ba1be3bc4a9080e37527579e6309887d6e6ed495443ea9a7d91dc590750ade3a135d36e28721035bd94dfc7c547b01c44d2bca220a4f50a63019 9b7b6bc65748961f745d8d93d094d25798a2ed3fe0bf08def17274d8b08802c6d6422a31bb1b99f212d51db7a0d05ff6eadd7a3fa1bb59d3c5491f449cf271e697962427cc60d1fa55e79bb64abc88ad68d82fc14fce7133a15dea32b45c0fa96e61bcf3e394e140f116d705066bab05c70c2a98d6432d1250a1a649941d02 92fa3c7ef8367bdac8d92bdc1ba8d91c95f4ea46461610770e56f3d7d3562fbccb35e21855142fd6f5da8e0918e412d53d51c7fabdcd21eae9749f0dba1cba266be0600ae99c593bece16d9a2bc024929dc84cd385676bb7e7b0f34a826e53caacca9091f5155e7460a3d4139cc155ed3c8c4856a41a198b17918a94099058 588b02f4eddb515e50e86450bcddce9cec3109e22186e92c02dd15d7c1e41f3b3596ecf642163c71fe885446cd6525dc43569b0c218b4a1549e288a1ccb847f79ff6d4fdb8469d9ac6ebe1f6f8aa32b5a6ea9638c42bdf0e9ebddc8f29f96f1c5407a12304bff65d96241b9d384d8bfa5ff8df7d067bbf90d8083e3e13eb8c e3c19535c2a9a2e4415a27685372054bcb0f00528125ebf5cffdd1b316785815f7f678803ddee69f7c0119e6978927a98fde01fe6d6e5dd315f1816b312de0b96121ab6d43bacbb496b6df8d99923e1dba7d0718e60a1583264e90357ada3978e983906aa9e0dcc25fca1086d5106ded9201b9d3e19f00d5e6ed7743baf095 12068c2a6b91ed91fd4fed83df00810aef1b4d7b8b80d4d328d0a7b7e8e55a51c009b8953c0658be094d66c98f9a7bb192b27c285c186bddf558a31d73c7f3f383631f10981b02f5c1c0433ae4a9b2864368cb6bebf1c12cb22219daa695f63999e81ba0a19be77ab5eb6ee94f41c38731ba8f3bbb35a2d2e7f299c6ff46d3 43428d7b9a9da075f019de2b9d8e37d6f9b337fa2d9ba182d1cc53e832b8bc60ebfe3f2673701699b16c81a4c6ee9b5248437e441d79164e4c99d2453c004b91510a9020ec3f12eaed811fb67ae4c3ae4b9e29970851d91d73e884286622c591665225b83991f9e4b0bdd9d87332c1a2f48c749898556491dd4b3b11ab0b59 8c56e3d586389d64daecd63675e77485e33e89f8cbaa856e3742383fd7a301f237c43f6af9f360938eb3f9376f5cb6e00502d6b9125ce9a21c6ed87640273e91bea63b522e23d3c6e557a69ef65ef0735eefb88d786b87164b303b71d34b9a78242de1605054c8aaa5295b450183f63d852f5192289dca6c55254b063ddadd 4923c1cbb127df60f3029909230a77538919d858b24cd6be486a549e20e627a18d3b926004cd0162e683cbaaeb682ffaf45f60530fbfd1dc228ff8265eb46d728eef891a2dce2eb37e1724a9c41d0f5bf378ab40b7437def988c068f6155b1c98ad1d05f07f61ed94f1daadf2ddcbddde4d2579d9027776d828733dbdf6f52 b52ad8d6ee508c2662113577d320781424c5483d9c8025bbec08752fd22b131da887f9d1e3566552e0ce4234f06982302ca02e425e6df8e44538a071c90a6f850284bf6ae6275f58dacbe5241f90e611f2a51571dec7225b3fb6616b78f84ed448b8dd309e85ee13aae8d7c64857aeaed97affe2e1da461077b1fcad237cc2 0302ca6379ede96e9817a6116f6953f92ab4916fcbe33caeaa5ebd7a6bbc6761c1712679755647f0598daa1726b41cccba179ac2138e712cde448b5e67f0d2c72ffd2b6d631bee0396e6323627e66352290d8ff1e85f29a00f412a16d826a09be2ff8f7c06e4d7ba61ba51c67b0d03baa07529e7a2b991d1c24c31417a3266 52f6508de6c17d3b45c55408bed0946e83632b95a42af2dd4c9d5b63e58154f5f7093fcff7b9f2a1bf0c300828b340f770e523bdc9db94aa7ce54521ec57832e0f199b27cea1716cec165ef2a639c2d0067daf7205204a35da5a4324d74efc53b5c0ee17ce50dc7ef4d3b50e4f4d309a369a6186aefcf3bfc8afba22f76f83 b17bad6ee5ae81bbc246e147a65a14898485df43f48c83d439b34b2b23b6af7e5d28794f25cc8f9faf54d7d9ef395e465260f5cbdb2ad4c9f3186c605bbba5f0cfdf8b99138a6663293a358c39915512cda76ceb45880a9086d02bf3333889c38693e62aeba70a87836699448b6a55ae6d813736584039936b6103a5cd4392 949ef8f4852d3b5baceb81fd7b598d96389208ed1630efd2e973cfde145fb08bc2d83cb7801f21cba988c5e564bb77ed0b7f2ce08f18e59edbd482b02e9a14a86c02ce1fc473ba28b6813be843e309307a3216a04b3d5d99ba0f7528f96b85159cf7c85f53dbfafe9fe9f5dd5029fac48f3687b7540ac30e101a313f0eaa09 4b3163f7a612f229dd12d58a1d8ca3b281f8b1b806a3455979294df6801e1a941bb7c14f381902f39c88d2f93c17eb51cbea2d416e26e9af99b589552004c5267ded0c4dd64a8f827a011794ddfe58bebb0d37077eb333dd840f34afba2811ed5c828d64b7eef00064f0ee507092cf7809066338277a9fe3d38b61fbd9a6e0 afd2fd692cee830f13cce21a41f1dec1c4cc904e14a8968221d463a2ba2aafa3a7a2a8be208d741002d8fc074022cc4237df4fa0cf0e4fec7e407e96dd1ebd2194a1db2857536000d6a2169ecc6300175919966f3f7194b926de9d67cb05b25c8f107c7e536f8c862a8530ac3d36101f957f394661c9b5a4b9d03803136134 9bda9da163effc8f3dace76348961fdc32db2c858270982e1bf2d828d01306dbd35be662a58fd8e13db4d18d0641bb84c778f2f85e3c20cc35129b34fb0837ad0590c073a6f201ca67e7ced31630c1257b270f14b931459a5a57b000752384c94eda5e0565586b6d159e26e04727ba63f92de73d5e7baf6d9db367c5d41984 7777167389c2f5b9597409a11581d5d728c6ac35d81be3a4c43697a06e59da2085f1d12ae2c3c5c5c41bf33373d94637978b639f4507de729cf9579afaa4fff01605d4adca0db3848ded041fa9bca0fe281126005c711c9ed6ff10328854ad65f60aee35aefd2503a457a1658d329ced870907c719252aed451347ecbca138 c6f3309c63786c664096b089bc409d0ddde101a17e424a0dbe03fed41610d763e10389ef90eb4f63efe9fba574ef15608df56545b394539dd8f7b64a7e3d3947e46fe4fe822e3785b2d1c6f4219f8fd001cd24dc83da4dcbbe4f53103fa53f5064d98995b934c5f77dfee71f00d58e0fea3b0b24f5e92f099ff563a0b2c283 2e3081ffca49bffe55021d85582420593dcb19b3bb410564a58b0a8e1a3d37f44aca0fe62534e44b4240e59c432c56daa3222763a63e5273040996f7c41146988713351c60c9da01b51cfd21a4967abd1b54c48aa22a02a931545d5bbe3465e6a9c673b10b6517a6e290a41b448137fea8edc0d880ea0badcd30a66339bba0 dbdb2ed85ef6e4427ecec897c6a4fbcf15b4d830d07b102089e16875b7fc732b0e1be352f9612f2f6ebf85c022cd32656939812e75b6009834bd62d1645d86199965651fe06083bd482d075cb2660f82933fd0fff54dce09310db2af4efda90dbb23ef2bfefba6235339d6b275b7c59a44369c22e3d2531d36e13dccd25035 610e58f770251a28eb69782f978231de41d039169e413158693778d412254f060d99356fa3293792e9f980ad8ec41f095367ae9859f49e45d7ac997c1f554e86f69f0f3b1de14681fe9a5738bee4379b782616f9613ace00cd40e5627de3c9c1edd88e037bb2f36bec76701f630deb8cf306b219de304524ee4df12772a4ae 0450419513e76d03582fa48070da3aeff7f42bfbe07bf2dfc27aa41e1a65e5b3a78a9f2178d71914fb3330f3edddd3c23508d0f4dfa702520a31b355b10c6481c5d910a198006229ffac0f908638cec552c4812302082e110d3a2fdbae4bfb4e90215100bb3aee1a9b9f565855263ec4525bc1c85c6b9ea59884a7133ddf30 17a0ce9899abdb97221c3e4c5cf4ad095a718c670622173d7c8f50ea6074249bda5e9e0a3352a5ea80f2305fac989c8c08642a998b0be5b303ae5945d8aeb9027f71d5109c20d4c9ff45da2c3f7b81ee5f7b957e7a6d46d91b5e7fde35a94cb3abb516ea3cca205389006506b1c2d35b8c85d0f037a53bf392f9eb75593e82 3d87c03e04fec3c7f97ffb6c3d5f15426c7afa2de1f85cd5d27a59881a6fc2c0b7193824e830aa74f570d8cb1db8604fd4cf8bb01cda9a2c5b9602d1ee3b44b4863bf60905b327f7b448a739ead0c34f6d2f01be5361464c4e258e1cd4d86fb4646da04baa26f4c2fd0701986f6b26160fc83d255b852d7afa6f9409213a27 1d5adb46efca6deb92140c4ff36765537d48d4270de75287fd8b4728b34269ba55d99582da3e9dcfabf13a2c3ab3ef472b221d462c7bce73afcd63dcc25bfbcf2f8ce7044cca0a0c780b0835d43c0d1d2636e3a1255415bfe25fd0189dc466d9bd0b70067b5fcfd2f8a100ded7fa3aea04a7e3472932144697b3251c819705 2631180e2e1b4993a433ae2ef1780237ea6b931761abeac9d7534a047d9149f771484c59e94b8bb037ee8bc0de61f7334a874bbfa8c6e407e0dca7871c279ee7d2aba18cd31fa5f45e34be401a2b4df5ad1fbf280edd1c868f1c92ec7f3884aeec3dd5e2b8a6d1ec42f238f4798ecfcbd1af39b0d4a49516848449a7c764eb 5f4405bb49f60d6ff76173e75c27fd84cebc63d2187f29d758718c8167b05cb11faff21d79db6aca0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont setpacking %AI3_EndRider [ 39/quotesingle 96/grave 130/quotesinglbase/florin/quotedblbase/ellipsis /dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft /quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark /scaron/guilsinglright/oe/dotlessi 159/Ydieresis /space 164/currency 166/brokenbar 168/dieresis/copyright/ordfeminine 172/logicalnot/hyphen/registered/macron/ring /plusminus/twosuperior/threesuperior/acute/mu 183/periodcentered/cedilla /onesuperior/ordmasculine 188/onequarter/onehalf/threequarters 192/Agrave /Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute /Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde /Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave /Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute /acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex /edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute /ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex /udieresis/yacute/thorn/ydieresis TE %AI55J_Tsume: None %AI3_BeginEncoding: _Myriad-Roman Myriad-Roman [/_Myriad-Roman/Myriad-Roman 0 0 1 TZ %AI3_EndEncoding AdobeType %AI55J_Tsume: None %AI3_BeginEncoding: _Symbol Symbol [/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /universal /numbersign /existential /percent /ampersand /suchthat /parenleft /parenright /asteriskmath /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /congruent /Alpha /Beta /Chi /Delta /Epsilon /Phi /Gamma /Eta /Iota /theta1 /Kappa /Lambda /Mu /Nu /Omicron /Pi /Theta /Rho /Sigma /Tau /Upsilon /sigma1 /Omega /Xi /Psi /Zeta /bracketleft /therefore /bracketright /perpendicular /underscore /radicalex /alpha /beta /chi /delta /epsilon /phi /gamma /eta /iota /phi1 /kappa /lambda /mu /nu /omicron /pi /theta /rho /sigma /tau /upsilon /omega1 /omega /xi /psi /zeta /braceleft /bar /braceright /similar /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /Euro /Upsilon1 /minute /lessequal /fraction /infinity /florin /club /diamond /heart /spade /arrowboth /arrowleft /arrowup /arrowright /arrowdown /degree /plusminus /second /greaterequal /multiply /proportional /partialdiff /bullet /divide /notequal /equivalence /approxequal /ellipsis /arrowvertex /arrowhorizex /carriagereturn /aleph /Ifraktur /Rfraktur /weierstrass /circlemultiply /circleplus /emptyset /intersection /union /propersuperset /reflexsuperset /notsubset /propersubset /reflexsubset /element /notelement /angle /gradient /registerserif /copyrightserif /trademarkserif /product /radical /dotmath /logicalnot /logicaland /logicalor /arrowdblboth /arrowdblleft /arrowdblup /arrowdblright /arrowdbldown /lozenge /angleleft /registersans /copyrightsans /trademarksans /summation /parenlefttp /parenleftex /parenleftbt /bracketlefttp /bracketleftex /bracketleftbt /bracelefttp /braceleftmid /braceleftbt /braceex /.notdef /angleright /integral /integraltp /integralex /integralbt /parenrighttp /parenrightex /parenrightbt /bracketrighttp /bracketrightex /bracketrightbt /bracerighttp /bracerightmid /bracerightbt /.notdef /_Symbol/Symbol 0 0 0 TZ %AI3_EndEncoding AdobeType %AI55J_Tsume: None %AI3_BeginEncoding: _Times-Italic Times-Italic [/_Times-Italic/Times-Italic 0 0 1 TZ %AI3_EndEncoding AdobeType %AI5_Begin_NonPrinting Np 9 Bn %AI5_BeginGradient: (Black, White Radial) (Black, White Radial) 1 2 Bd [ 0 0 0 < 00000000000000000000000000000000000000000000000101010101010101010101010102020202 02020202020202030303030303040404040404040505050505050606060607070707080808090909 090A0A0A0A0B0B0B0C0C0D0D0D0E0E0F0F0F101011111112121313141515161617171819191A1A1B 1B1C1D1D1E1F202021222323242526272728292A2B2C2D2E2F303132333435363738393A3B3C3D3E 3F404142434445464748494A4C4D4E4F50525354565758595B5C5D5F606263656668696B6C6E7071 737576787A7C7D7F81838587898B8D8F919395979A9C9EA0A3A5A7AAACAFB1B4B7B9BCBFC2C5C7CA D0D6DBE0E4E8ECF0F2F4F6F7F9FBFDFF > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 4 %_Br [ 0 0 0 0 1 1 1 2 50 0 %_Bs 0 0 0 1 0 0 0 2 50 100 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Nova) (Nova) 1 3 Bd [ < 08070707060606050504030303030303030404050506060606070707070707070707070707070706 06060505040403030202020202020304040405050606060606070707070707070707070707060606 06050504040404040404040404050505050606060607070707070707070707070707070606060606 05050505050505050505050505050505060606060606070707070707070707070707070706060606 06060505050505050505050505050505050505050505060606060606060707070707070707070707 07070706060606060606060505050505050404040404040404040404040404040404040505050505 05050506060606060606060606060606060606060606060606060606060606060606060606060606 06060606060606060606060606050505050505050505050505050505050505050504040404040404 04040404040404040404040404040404040404040404040404040404040303030303030303030303 0303030303030303 > < 0505060607070808090A0A0B0C0C0D0E0F0F10111212131415161718191A1A1B1C1D1E1F20212223 24252728292A2B2D2E2F2F30313233343435363738393A3A3A3B3C3D3E3F40414243444545464849 4A4B4C4D4E4F4F50515254555656565758595A5B5C5D5D5E5F6061626363646566676869696A6B6D 6E6F707071727374757576777879797A7B7C7D7E7E7F8081828283848586868788898A8A8B8C8D8D 8E8F909191929394949596979798999A9A9B9C9D9D9E9FA0A0A1A2A4A4A5A6A7A7A8A9A9AAABACAC ADAEAEAFB0B0B1B2B3B3B4B5B5B6B7B7B8B9B9BABBBBBCBDBDBEBFBFC0C1C1C2C3C3C4C5C5C6C6C8 C9C9CACBCBCDCDCECFCFD0D0D1D2D2D4D4D5D6D6D7D7D8D9D9DADADBDBDDDDDEDFDFE0E0E1E1E2E2 E3E3E4E4E4E5E5E6E6E7E7E8E8E9E9EAEAEAEAEBEBEBECECEDEDEDEDEEEEEFEFEFEFEFF0F0F0F0F0 F1F1F1F1F1F2F2F2F2F2F3F3F3F3F3F3F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F5F5F5 F5F5F5F5F5F5F5F5 > 0.9137 0 1 < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E2E1E0DFDEDDDCDBDAD9 D8D7D6D5D4D3D2D1D0CFCFCECDCCCBCAC9C8C7C6C5C4C3C2C2C1C0BFBEBDBCBBBAB9B8B7B7B6B5B4 B3B2B1B0AFAEAEADACABAAA9A8A7A7A6A5A4A3A2A1A0A09F9E9D9C9B9A9A99989796959494939291 908F8E8E8D8C8B8A898988878685858483828180807F7E7D7C7C7B7A797878777675747473727171 706F6E6D6D6C6B6A6A696867676665646463626161605F5E5E5D5C5B5B5A59585857565655545353 525151504F4F4E4D4C4C4B4A4A4948484746464544444342424140403F3E3E3D3C3C3B3A3A393938 373736353534343332323131302F2F2E2E2D2C2C2B2B2A2929282827272626252424232322222121 20201F1E1E1D1D1C1C1B1B1A1A191918181717161616151514141313121211111110100F0F0E0E0E 0D0D0C0C0C0B0B0A0A0A090909080808070707060606050505040404040303030302020202010101 0101010000000000 > 0 4 %_Br < 030404050606070809090A0B0C0D0D0E0F10101112131314151616171819191A1B1C1C1D1E1E1F20 20212223232425252627272829292A2B2B2C2D2D2E2F2F303131323333343535363637383839393A 3A3B3B3C3C3D3E3E3F3F404041414242434344444545464647494A4C4E5051545658595B5E606163 6668696B6D707173747677797A7C7D7F8182848587888A8C8D8F9092949597989A9B9C9E9FA0A2A3 A4A5A7A8A9ABACADAEB0B1B2B3B5B6B7B9BABBBDBEBF > < F5F5F5F4F4F3F3F3F2F2F1F1F1F0F0F0EFEFEFEFEEEEEEEEEDEDEDEDEDEDECECECECECECECECECEC ECECECECEDEDEDEEEEEEEFEFF0F0F0F1F1F2F3F3F4F4F5F5F6F6F7F7F8F8F9F9FAFAFAFAFAF8F8F7 F7F6F6F5F5F4F3F3F2F2F2F1F1F1F0F0EFEFEFEFEEEEEEEEEEEDEDEDEDEDEDEDEDEDECECECECECEC ECECEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E8E8E8E8E8E8E8E8E8E7 E7E7E7E7E7E7E8E8E7E7E7E7E7E7E7E7E7E6E6E6E6E6 > < E9E9E9E9EAEAEAEAEBEBECECECECECEBEAE9E9E7E6E4E4E2E1DFDFDDDBDBD9D7D4D4D2D0CDCDCBC8 C6C6C4C2C0BFBDBBB9B9B7B4B4B2B0ADADABA8A6A5A3A09E9D9B98969593908E8D8B888686848281 7F7D7B7B78757373706E6B6B68656362605D5A5A575452514F4D4D4C4B4949484645454443424241 3F3E3E3D3C3B3B3A383737353434333130302F2E2C2D2B2A29292827262625242222211F1F1D1C1A 1A18171515131210100F0D0C0B0A0807080707070707 > < 00000000010101010101010101020202020202020303030303030404040404040505050505050606 060707070808080909090A0A0B0B0B0C0C0D0D0D0E0E0F0F10101111111212131314141516161718 18191A1A1B1C1C1D1E1F202021222323242526262728292A2A292A282726262524232322201F1F1E 1D1C1C1B191818171716161515151413121211100F0F0E0D0C0C0B0A090908080808070707070606 06060505050404030403030202010101010101010101 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A > < 00000000000101010101010101010202020202020202020303030303030303030404040404040404 04050505050505050505060606060606060606070707070707070707080808080808080808090909 0909090909090A0A0A0A0A0A0A0A0A0A0B0B0B0B0B0B0B0B0B0C0C0C0C0C0C0C0C0C0D0D0D0D0D0D 0D0D0D0E0E0E0E0E0E0E0E0E0F0F0F0F0F0F0F0F0F10101010101010101011111111111111111112 12121212121212121313131313131313131414141414 > < 000101020304040506070708090A0A0B0C0D0D0E0F10101112131314151516171818191A1B1B1C1D 1E1E1F20212122232424252626272829292A2B2C2C2D2E2F2F303132323334353536373838393A3A 3B3C3D3D3E3F40404142434344454646474849494A4B4C4C4D4E4E4F505151525354545556575758 595A5A5B5C5D5D5E5F60606162626364656566676868696A6B6B6C6D6E6E6F707171727373747576 76777879797A7B7C7C7D7E7F7F808182828384858586 > 4 %_Br [ 0.0314 0.0196 0.9137 0 1 1 0 2 38.2022 0 %_Bs 0.0118 0.9608 0.9137 0 1 0 0 2 50 75.2809 %_Bs 0.749 0.902 0.0275 0.0039 0.2902 0.0784 0.5255 2 50 100 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (RGB Rainbow) (RGB Rainbow) 0 6 Bd [ < F4F4F4F3F3F3F3F3F3F3F3F3F3F3F3F2F2F2F2F2F2F1F1F1F1F1F0F0F0F0EFEFEFEEEEEEEDEDEDEC ECECEBEBEAEAE9E9E8E8E7E7E6E6E5E4E3E3E2E1E0DFDEDDDBDAD9D8D6D5D4D3D1D0CFCECCCBCAC8 C7C6C5C3C2C1BFBEBDBBBAB9B7B6B5B3B2B0AFAEACABAAA8A7A6A4A3A1A09E9D9B9A989695939290 8F8D8C8A898786858382817F7E7D7B7A79787675747371706F6E6C6B6A686766646362615F5E5C5B 5A585755545351504E4D4C4A494746454342413F3E3D3B3A393736353332312F2E2D2B2A29272625 242321201F1E1E1D1C1B1A191817171615141413121111100F0F0E0D0D0C0B0B0A0A090908070706 06060505040404030303030202020202 > < EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEF EFEFF0F0F0F0F0F0F0F0F1F1F1F1F1F1F1F2F2F2F2F2F2F3F3F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4 F4F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F7F7F7F7F7F7F8F8F8F8F9F9F9F9F9F9F9F9F9F9F9F8 F8F8F7F7F6F6F6F5F5F5F5F4F4F4F3F3F3F3F2F2F2F2F1F1F1F1F0F0F0F0F0EFEFEFEFEFEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFF0F0F0 F0F0F0F1F1F1F1F1F2F2F2F2F2F2F3F3 > 0 0 < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000001010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010202020202020202 02020202020202020202020202020202020202020202020202020202020202020202020202020202 02020202020202020202020202020202 > 1 4 %_Br < D5D5D6D7D8D9DADBDDDEDFDFDFDFDFDEDEDEDDDDDCDCDCDBDBDBDBDADADADADADBDBDBDCDCDDDEDE DFE0E1E2E3E4E6E8E9E9EAEBEAEAE9E8E8E7E7E6E6E5E5E4E4E3E2E1E0E0DFDFDFDFDFDFE0E0E1E2 E3E5E7E8EBEDEFF1F2F4F5F4F3F1EFEDEBEAE8E7E6E5E4E3E2E2E2E2E2E2E2E3E4E5E7E8EAEBEBEB EBEBEAEAEAEAE9E9E9E9E9E8E8E8E8E8E7E7E7E7E8E8E9E9EAEAEBEBEBEAEAEAEAEAEAEAEAEAEBEB ECEDEEEFF1F3F5F6F7F8F9FBFCFCFCF9F7F6F4F2F1F0EEEEEDECECEBEBEBEBECECEDEDEEEEEFEFEF EFEFEFEFEFF0F0F0F1F1F2F3F3F4F5F6F7F8F9FBFCFDFDFEFFFFFFFFFFFDFCFBFBFAF9F8F8F7F7F6 F6F6F5F5F5F5F4F4F4F4F4F4F4F4F4F4 > < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000101010101020202020303030404040405050505060606060707 0707070707070708090A0B0C0E11131517191B1D1F21232527282A2B2D2E3031323334353637383A 3C3D3F4042444547494A4C4E4F5153555658595B5C5E5F606263646667696A6C6D6F707273757677 797A7B7D7E7F80818384858687898A8C8E9091939597989A9C9D9FA0A2A3A4A6A7A8AAABACAEAFB0 B2B4B5B7B9BABCBDBFC1C2C4C5C7C8CACBCCCECFD1D2D3D5D6D7D8DADBDCDDDEDFE1E2E2E3E4E5E6 E7E7E8E9E9EAEAEBEBEBECECECECECED > 0 0 < 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 1 4 %_Br < ECECECECECECECECECECEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAE9E9E9E9E9E8E8E8E8E8E7E7E7E7 E7E6E6E6E6E5E5E5E5E5E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E2E2E2E2E2E2E2E2E2E2E2E2E2 E2E2E2E2E2E2E2E2E2E2E2E2E2E2E3E3E3E4E4E4E5E5E6E6E7E7E8E8E9EAEAEBEBECEDEEEEEFF0F0 F0F0F0F0F0F1F1F1F1F1F1F1F0EFEEEDEDECEBEAEAE9E8E7E7E6E6E5E4E4E3E3E2E1E1E0E0DFDFDF DEDEDDDDDDDCDCDCDBDBDBDBDBDBDBDBDBDCDCDCDDDDDDDEDEDFDFE0E0E1E1E2E3E3E4E5E6E6E7E8 E9E9E9E9E9E9E9E9E9E9E9E9E8E7E6E6E5E4E3E2E2E1E0E0DFDEDEDDDDDCDCDBDBDADAD9D9D9D8D8 D8D7D7D7D7D6D6D6D6D6D5D5D5D5D5D5 > 0 < FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFDFDFDFDFCFCFCFBFBFBFAFAF9F9F9F8F8F7F7F6F6F5F5F4 F4F3F3F2F1F1F0F0EFEEEDEDECEBEAE9E8E7E5E4E3E2E1E0DFDEDDDCDBDADAD9D8D7D6D5D4D3D2D1 D0CFCDCCCBCAC8C7C6C4C3C1BFBDBBB9B7B4B2B0AEACAAA8A6A4A2A09E9C9A98969492908E8C8A89 87858381807E7C7A7977757372706E6C6B6967666462615F5E5C5A595756545351504E4D4B4A4847 46444341403E3D3B3A3837353432312F2E2C2B29282625242221201E1D1C1A191817151413121110 0E0D0C0B0A0908070605040302010000 > 0 < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101 > 1 < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 4 %_Br < 0808090A0A0B0C0C0D0E0E0F101011121313141516171818191A1B1C1D1E1F1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F6061626364666768696A6B6C6D6E6F707172737474757677 78797A7B7C7D7E7F8081838485868788898A8B8C8E8F909192939495969798999A9B9C9D9E9FA0A1 A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BBBCBDBEC0C1C2C3C4C5C7C8C9CACBCC CDCECFD0D1D2D3D4D5D6D6D7D8D9DADBDBDCDDDEDEDFE0E0E1E2E2E3E3E4E4E5E6E6E6E7E7E8E8E9 E9E9EAEAEAEAEBEBEBEBEBEBECECECEC > < 05050505050505040404040404040404030303030303020202020202010101010000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 > < E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEBEBEBEBEBEBECECECECECEDEDEDEDEEEEEEEEEFEF EFF0F0F0F1F1F1F2F2F2F3F3F3F3F4F4F4F5F5F5F5F6F6F6F7F7F7F7F8F8F8F8F9F9F9F9FAFAFAFA FBFBFBFBFBFBFBFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFD FDFDFDFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF > 0 < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 1 0 4 %_Br < 03030303040404040404040404040404040505050505050505050606060606060606060606060606 06060606060606060606060606060505050505040404040404040404040404050505050606060606 06070707070707070707070606060606050505050505050505050505050505060606060607070707 07070707070707060606060605050505050505050505050505060606060707070707070707070707 07060606060505050404040404040404040505060606060707070707070707070707060606060505 04040403020202020203030404050506060607070707070707070707070707060606060505040403 03030303030304050506060607070708 > < F5F5F4F4F4F4F4F3F3F3F2F2F1F1F0F0EFEFEEEDEDECEBEAEAE9E8E7E6E5E4E4E3E2E1E0DFDEDDDB DAD9D8D7D6D5D4D2D1D0CFCECDCBCAC9C8C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A898887 868584838281807F7E7D7C7B7A797877767574737271706F6E6D6B6A696867666564636261605F5E 5D5C5B5A595857565655545251504F4E4D4C4B4A4948464544434241403F3E3D3C3B3A3A39383736 353434333231302F2E2D2B2A2928272524232221201F1E1D1C1B1A19181716151413121211100F0F 0E0D0C0C0B0A0A090808070706060505 > 0.9137 0 1 < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 0 4 %_Br [ 0.0078 0.9529 0 0 1 0.0078 1 2 50 100 %_Bs 0.9569 0.9294 0 0 0 0 1 2 50 80 %_Bs 0.8353 0 0 0 0.0039 1 1 2 50 60 %_Bs 0.9255 0 1 0 0 1 0 2 50 40 %_Bs 0.0314 0.0196 0.9137 0 1 1 0 2 50 20 %_Bs 0.0118 0.9608 0.9137 0 1 0 0 2 50 0 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Steel Bar II) (Steel Bar II) 0 3 Bd [ 0 0 0 < 00000000000000000000000000000000000000000000000101010101010101010101010102020202 02020202020202030303030303040404040404040505050505050606060607070707080808090909 090A0A0A0A0B0B0B0C0C0D0D0D0E0E0F0F0F101011111112121313141515161617171819191A1A1B 1B1C1D1D1E1F202021222323242526272728292A2B2C2D2E2F303132333435363738393A3B3C3D3E 3F404142434445464748494A4C4D4E4F50525354565758595B5C5D5F606263656668696B6C6E7071 737576787A7C7D7F81838587898B8D8F919395979A9C9EA0A3A5A7AAACAFB1B4B7B9BCBFC2C5C7CA D0D6DBE0E4E8ECF0F2F4F6F7F9FBFDFF > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 4 %_Br 0 0 0 < FFFDFBF9F7F6F4F2F0ECE8E4E0DBD6D0CAC7C5C2BFBCB9B7B4B1AFACAAA7A5A3A09E9C9A97959391 8F8D8B89878583817F7D7C7A7876757371706E6C6B696866656362605F5D5C5B5958575654535250 4F4E4D4C4A494847464544434241403F3E3D3C3B3A393837363534333231302F2E2D2C2B2A292827 272625242323222120201F1E1D1D1C1B1B1A1A191918171716161515141313121211111110100F0F 0F0E0E0D0D0D0C0C0B0B0B0A0A0A0A09090909080808070707070606060605050505050504040404 04040403030303030302020202020202020202020101010101010101010101010100000000000000 00000000000000000000000000000000 > < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 4 %_Br [ 0 0 0 1 0 0 0 2 50 100 %_Bs 0 0 0 0 1 1 1 2 50 40.45 %_Bs 0 0 0 1 0 0 0 2 50 0 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Sunrise) (Sunrise) 0 6 Bd [ < EEEDEDEDECECECECECECECECEDEDEDEDEEEEEEEFEFF0F0F1F1F2F2F2F3F3F4F4F4F5F5F5F6F6F6F7 F7F7F7F7F5F4F2F1F0EFEDEDECEAEAE9E8E7E7E6E6E5E4E4E4E3E3E3E3E3E3E3E3E3E3E3E3E3E3E4 E4E4E4E4E5E5E5E5E5E5E5E5E5E5E5E5E5E5E4E5E5E4E4E4E4E4E4E3E3E3E2E1E1E0E0DFDEDEDDDC DCDBDADAD9D8D7D7D6D5D5D4D3D3D2D2D2D2D2D2D1D1D1D1D1D1D0D1D1D0D1D1D1D1 > < 35343332312F2E2C2B2928262422211F1D1B1917151311100F0E0D0C0B0A09080807060505040303 02010100000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000 > 1 < 131211100F0F0E0D0C0C0B0B0A090908070706050504040303030302020202020101010101010100 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000 > < 00000101010202020303030404040505050606060707070808080909090A0A0A0B0B0B0C0C0C0D0D 0D0E0E0E0F0F0F1010101111111212121313131414141515151616161717171818181919191A1A1A 1B1B1B1C1C1C1D1D1D1E1E1E1F1F1F20202021212122222223232324242425252526262627272728 28282929292A2A2A2B2B2B2C2C2C2D2D2D2E2E2E2F2F2F3030303131313232323333 > < 666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D 8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5 B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDD DEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 0 4 %_Br < 080809090A0A0A0B0C0C0D0D0E0E0F10101112131415161718191A1B1C1D1E1F2021222324252627 2828292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F4041424344454648484A4B4C4D4E4F 505152535455565758595A5A5C5D5E5F5F616163636466666868696B6B6D6D6E6F70717273747576 7778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E 9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C5C5C7 C8C9CACBCDCDCED0D0D2D3D3D5D5D7D7D8D9DADBDCDCDDDEDFE0E0E1E2E3E3E4E4E5E6E6E7E7E8E8 E9E9EAEAEAEBEBEBECECECECEDEDEDEE > < 05050506060606060706070707070708080808080808080808080908090809090909090909090909 090909090909090909080909090909090A0A0A0A0A0A0A0A0A0A0B0A0B0A0B0B0B0B0B0B0C0B0C0B 0C0C0C0C0C0D0D0D0D0D0E0E0E0E0E0F0F0F100F1010101110111211121112131213121313131313 13141314131414141414141514141414151414141515151515161616161617171717171818181918 191A191A191A1B1A1B1A1B1C1B1C1C1C1D1D1D1D1E1E1E1F1E1F201F201F20212021212122212221 2222222221222322222222232222222223222222222322232223242425242627262727282A292A2A 2B2D2C2E2D2F30303131323433353435 > < E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEBEBEBECECEDEDEDEEEEEFEFF0F0F1F2F2F3F3F4F5F5F6F7 F8F9F9FAFAFBFCFCFCFCFCFBFBFAFAF9F9F9F8F8F7F7F7F6F6F6F5F5F5F5F5F4F4F4F4F4F3F3F3F3 F3F3F3F3F3F3F3F3F3F3F4F4F4F4F4F4F5F5F5F5F6F6F6F7F7F8F8F8F9F9F9FAFAFAFAFAFBFBFBFB FBFBFCFCFCFCFDFDFDFDFDFEFEFEFEFEFFFFFFFFFEFEFEFDFDFDFDFDFCFCFCFCFCFCFCFBFBFBFBFC FCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF > < 00000000000000000000000000000000000000000000000000000000000001010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010202020202020202020202020202 02020202020203030303030303030303030303030303030303030303030304040404040404040404 04040404040404040404040504050405050505050505050505050505050505060505050606060606 06070607070707070707070808080808080808080808080909090A090A0A0A0B0B0B0B0B0C0C0C0C 0D0D0D0E0E0E0F0F0F0F101111121213 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFEFDFDFCFBFBFAFAF9F8F8F7F7F6F5F5F4F4F3F2F2F1F1F0EFEFEEEEEDECECEBEBEAE9E9E8E8 E7E6E6E5E5E4E3E3E2E2E1E0E0DFDFDEDDDDDCDCDBDADAD9D9D8D7D7D6D6D5D4D4D3D3D2D1D1D0D0 CFCECECDCDCCCBCBCACAC9C8C8C7C7C6C5C5C4C4C3C2C2C1C1C0BFBFBEBEBDBCBCBBBBBAB9B9B8B8 B7B6B6B5B5B4B3B3B2B2B1B0B0AFAFAEADADACACABAAAAA9A9A8A7A7A6A6A5A4A4A3A3A2A1A1A0A0 9F9E9E9D9D9C9B9B9A9A999898979796959594949392929191908F8F8E8E8D8C8C8B8B8A89898888 878686858584838382828180807F7F7E7D7D7C7C7B7A7A7979787777767675747473737271717070 6F6E6E6D6D6C6B6B6A6A696868676766 > 0 4 %_Br < 07070707070707070606060605050504040404040404040405050606060607070707070707070707 07060606060505040404030202020203030404050506060607070707070707070707070707060606 06050504040303030303030304050506060607070708 > < 64636261605F5E5D5C5B5A595857565655545251504F4E4D4C4B4A4948464544434241403F3E3D3C 3B3A3A393837363534343331302F2E2D2B2A2928272524232221201F1E1D1C1B1A19181716151413 121211100F0F0E0D0C0C0B0A0A090808070706060505 > < F0F0F1F1F1F1F2F2F2F3F3F3F4F4F5F5F5F6F6F6F7F7F8F8F8F7F7F7F6F6F6F6F5F5F5F5F4F4F4F4 F3F3F2F2F2F1F1F1F0F0F0EFEFEFEFEFEFEFEEEEEEEEEEEEEDEDEDEDECECECECECEBEBEBEBEAEAEA E9E9E9E9E8E8E8E8E8E8E8E8E8E8E8E8E8E9E9E9E9E9 > < 01010101010101010100000000000000000000000000000000010101010101010101010101010101 01010101010000000000000000000000000000000000010101010101010101010101010100000000 00000000000000000000000000000000000000000000 > 1 < 999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0 C1C2C3C4C5C6C7C8C9CACBCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9 EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 0 4 %_Br < E4E5E5E6E7E7E8E9EAEAEBECEBEBEBEBEAEAEAE9E9E8E8E7E7E6E5E5E4E3E3E2E1E0DFDFDEDDDCDB DADAD8D7D6D5D4D3D2D1D0CFCFCECDCCCBCBCAC9C8C7C6C5C4C3C2C1C0BFBEBEBDBCBAB9B8B7B6B5 B3B2B1AFAEADACABAAA9A9A7A6A5A4A3A2A19F9E9D9C9B9998979796949392908F8E8D8B8A898887 878584838281807F7E7C7B7A7A79787675747371706F6F6D6C6B696867666563636261605F5D5C5B 5B5A5957565554525151504F4D4C4B4949484746454443424241403F3E3D3D3C3B3A393838383736 3635343434333232313130302F2E2E2E2D2C2C2C2B2A292929282727262625242423232221212120 1F1E1E1E1D1C1B1B1B1A19191818181716151515141313121212111010100F0F0E0E0E0D0D0D0C0B 0B0B0A0A0A0A0909090808080808080700 > < 2323222221212120201F1F1F1F1F1E1E1E1E1E1F1F1F1F1F1F1F1F1F1F2020202020212121212222 22222323232424242525252525252626262626262626262627272727272728282828282829292929 2A2A2A2A2B2B2B2B2C2C2C2C2C2C2D2D2D2D2E2E2E2E2F2F2F2F2F30303030313131313132323232 32333333333434343535353535363636363737373738383838393939393A3A3A3A3A3B3B3B3B3C3C 3C3C3D3D3D3D3E3E3E3E3F3F3F404040404041414242424343434344444545454546464747474849 494A4A4A4B4B4C4D4D4D4E4E4F4F4F50505151515252535353535454555555565657575758585859 595A5A5A5A5B5B5B5C5C5C5C5D5D5D5E5E5E5E5F5F60606060606061616161616162626262626262 6263636363636363636464646464646400 > 0 < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000101010101010202020202030303030303030404040404040505 05050505060606060607070707070808080809090909090A0A0A0A0B0B0B0B0C0C0C0C0D0D0D0D0D 0D0E0E0E0E0E0E0F0F0F0F0F0F0F1010101010111111111111121212121213131313131313141414 14141415151515151515161616161616161717171717171616161616161616161616161515151414 131312121211111010100F0F0E0E0E0E0D0D0C0C0C0C0B0B0B0B0A0A090909090808080807070707 06060606050505050404040404030303030303020202020202020101010101010101010101010101 01010101010101010101010101010101FF > < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 2828292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F40414243444545464748494A4B4C4D 4E4F50515253545556575758595A5B5C5D5E5F60616263646566666768696A6B6C6D6E6F70717273 737475767778797A7B7C7D7E7E7F80818283848586878788898A8B8C8D8E8F909091929394959697 9798999A9B9C9D9E9F9FA0A1A2A3A4A5A5A6A7A8A9AAABACACADAEAFB0B1B1B2B3B4B5B6B7B7B8B9 BABBBCBCBDBEBFC0C1C1C2C3C4C5C5C6C7C8C9C9CACBCCCDCDCECFD0D1D1D2D3D4D5D5D6D7D8D8D9 DADBDCDCDDDEDFDFE0E1E2E2E3E4E4E5E6E7E7E8E9EAEAEBECECEDEEEEEFF0F0F1F2F2F3F4F4F5F6 F6F7F8F8F9F9FAFBFBFCFCFDFDFEFEFFFF > 0.6 < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBABAB9B8B7B6B5B4B3B2 B1B0AFAEADACABAAA9A8A8A7A6A5A4A3A2A1A09F9E9D9C9B9A99999897969594939291908F8E8D8C 8C8B8A89888786858483828181807F7E7D7C7B7A79787877767574737271706F6F6E6D6C6B6A6968 686766656463626160605F5E5D5C5B5A5A59585756555453535251504F4E4E4D4C4B4A4948484746 454443434241403F3E3E3D3C3B3A3A3938373636353433323231302F2E2E2D2C2B2A2A2928272726 25242323222120201F1E1D1D1C1B1B1A19181817161515141313121111100F0F0E0D0D0C0B0B0A09 0908070706060504040303020201010000 > 4 %_Br < EFEFEFEFEFEFEFEFEEEEEDEDECECEBEBEBEBECECEDEEEEF0F1F2F4F6F7F9FCFCFCFBF9F8F7F6F5F3 F1EFEEEDECEBEBEAEAEAEAEAEAEAEAEBEBEBEAEAE9E9E8E8E7E7E7E7E8E8E8E8E8E9E9E9E9E9EAEA EAEAEBEBEBEBEBEAE8E7E5E4E3E3E2E2E2E2E2E2E3E4 > < B9B7B5B4B2B0AFAEACABAAA8A7A6A4A3A2A09F9D9C9A9897959391908E8C8A89878685848381807F 7E7D7B7A797776757372706D6C6A696766646362605F5E5C5B5958565553514F4E4C4A4947454442 403F3D3C3A3837363534333231302E2D2B2A28272523 > 0 0 0 < 333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A 5B5C5D5E5F6061626364656768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F80818283 8485868788898A8B8C8D8E8F90919293949596979899 > 1 4 %_Br [ 0.8196 0 1 0 0.2 1 0 2 50 100 %_Bs 0.9333 0.2078 1 0.0745 0 0.4 0 2 50 57.3034 %_Bs 0.0314 0.0196 0.9137 0 1 1 0 2 50 55.618 %_Bs 0.0275 0.3922 0.9412 0.0039 1 0.6 0 2 50 46.6292 %_Bs 0.8941 0.1373 0 0 0 0.6 1 2 45 28.0899 %_Bs 0.9373 0.7255 0 0 0 0.2 1 2 50 0 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Unnamed gradient 13) (Unnamed gradient 13) 1 2 Bd [ 0 0 0 < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000001010101 01010101010101010101010101010101010000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000FF > 1 < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9 D9D8D7D6D5D4D3D2D1D0CFCFCECDCCCBCAC9C8C7C7C6C5C4C3C2C1C0C0BFBEBDBCBBBABAB9B8B7B6 B5B5B4B3B2B1B0B0AFAEADACACABAAA9A8A7A7A6A5A4A3A3A2A1A0A09F9E9D9C9C9B9A9999989796 9695949393929190908F8E8D8D8C8B8A8A89888887868585848383828180807F7E7E7D7C7C7B7A7A 7978787776767574747372727170706F6E6E6D6C6C6B6A6A69696867676665656464636262616160 5F5F5E5E5D5C5C5B5B5A5A59585857575656555454535352525151504F4F4E4E4D4D4C4C4B4B4A4A 49494848474746454544444343424242414140403F3F3E3E3D3D3C3C3B3B3A3A3939393838373736 3635353534343333323232313130302F2F2F2E2E2D2D2D2C2C2B2B2B2A2A29292928282827272626 2625252524242423232222222121212020201F1F1F1E1E1E1D1D1D1C1C1C1C1B1B1B1A1A1A191919 19181818171717171616161515151514141414131313131212121211111111101010100F0F0F0F0F 0E0E0E0E0D0D0D0D0D0C0C0C0C0C0B0B0B0B0B0A0A0A0A0A0A090909090908080808080808070707 07070706060606060606050505050505050504040404040404040403030303030303030303030202 02020202020202020202010101010101010101010101010101010101010100000000000000000000 000000000000000000000000000000000000 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9 D9D8D7D6D5D4D3D2D1D0CFCFCECDCCCBCAC9C8C7C7C6C5C4C3C2C1C0C0BFBEBDBCBBBABAB9B8B7B6 B5B5B4B3B2B1B0B0AFAEADACACABAAA9A8A7A7A6A5A4A3A3A2A1A0A09F9E9D9C9C9B9A9999989796 9695949393929190908F8E8D8D8C8B8A8A89888887868585848383828180807F7E7E7D7C7C7B7A7A 7978787776767574747372727170706F6E6E6D6C6C6B6A6A69696867676665656464636262616160 5F5F5E5E5D5C5C5B5B5A5A59585857575656555454535352525151504F4F4E4E4D4D4C4C4B4B4A4A 49494848474746454544444343424242414140403F3F3E3E3D3D3C3C3B3B3A3A3939393838373736 3635353534343333323232313130302F2F2F2E2E2D2D2D2C2C2B2B2B2A2A29292928282827272626 2625252524242423232222222121212020201F1F1F1E1E1E1D1D1D1C1C1C1C1B1B1B1A1A1A191919 19181818171717171616161515151514141414131313131212121211111111101010100F0F0F0F0F 0E0E0E0E0D0D0D0D0D0C0C0C0C0C0B0B0B0B0B0A0A0A0A0A0A090909090908080808080808070707 07070706060606060606050505050505050504040404040404040403030303030303030303030202 02020202020202020202010101010101010101010101010101010101010100000000000000000000 000000000000000000000000000000000000 > 4 %_Br [ 0 0 0 0 1 1 1 2 28 0 %_Bs 0.0118 0.9608 0.9137 0 1 0 0 2 50 100 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Unnamed gradient 2) (Unnamed gradient 2) 1 6 Bd [ < 03030303040404040404040404040404040505050505050505050606060606060606060606060606 06060606060606060606060606060505050505040404040404040404040404050505050606060606 06070707070707070707070606060606050505050505050505050505050505060606060607070707 07070707070707060606060605050505050505050505050505060606060707070707070707070707 07060606060505050404040404040404040505060606060707070707070707070707060606060505 04040403020202020203030404050506060607070707070707070707070707060606060505040403 03030303030304050506060607070708 > < F5F5F4F4F4F4F4F3F3F3F2F2F1F1F0F0EFEFEEEDEDECEBEAEAE9E8E7E6E5E4E4E3E2E1E0DFDEDDDB DAD9D8D7D6D5D4D2D1D0CFCECDCBCAC9C8C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A898887 868584838281807F7E7D7C7B7A797877767574737271706F6E6D6B6A696867666564636261605F5E 5D5C5B5A595857565655545251504F4E4D4C4B4A4948464544434241403F3E3D3C3B3A3A39383736 353434333231302F2E2D2B2A2928272524232221201F1E1D1C1B1A19181716151413121211100F0F 0E0D0C0C0B0A0A090808070706060505 > 0.9137 0 1 < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 0 4 %_Br < 0808090A0A0B0C0C0D0E0E0F101011121313141516171818191A1B1C1D1E1F1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F6061626364666768696A6B6C6D6E6F707172737474757677 78797A7B7C7D7E7F8081838485868788898A8B8C8E8F909192939495969798999A9B9C9D9E9FA0A1 A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BBBCBDBEC0C1C2C3C4C5C7C8C9CACBCC CDCECFD0D1D2D3D4D5D6D6D7D8D9DADBDBDCDDDEDEDFE0E0E1E2E2E3E3E4E4E5E6E6E6E7E7E8E8E9 E9E9EAEAEAEAEBEBEBEBEBEBECECECEC > < 05050505050505040404040404040404030303030303020202020202010101010000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 > < E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEBEBEBEBEBEBECECECECECEDEDEDEDEEEEEEEEEFEF EFF0F0F0F1F1F1F2F2F2F3F3F3F3F4F4F4F5F5F5F5F6F6F6F7F7F7F7F8F8F8F8F9F9F9F9FAFAFAFA FBFBFBFBFBFBFBFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFD FDFDFDFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF > 0 < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 1 0 4 %_Br < ECECECECECECECECECECEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAE9E9E9E9E9E8E8E8E8E8E7E7E7E7 E7E6E6E6E6E5E5E5E5E5E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E2E2E2E2E2E2E2E2E2E2E2E2E2 E2E2E2E2E2E2E2E2E2E2E2E2E2E2E3E3E3E4E4E4E5E5E6E6E7E7E8E8E9EAEAEBEBECEDEEEEEFF0F0 F0F0F0F0F0F1F1F1F1F1F1F1F0EFEEEDEDECEBEAEAE9E8E7E7E6E6E5E4E4E3E3E2E1E1E0E0DFDFDF DEDEDDDDDDDCDCDCDBDBDBDBDBDBDBDBDBDCDCDCDDDDDDDEDEDFDFE0E0E1E1E2E3E3E4E5E6E6E7E8 E9E9E9E9E9E9E9E9E9E9E9E9E8E7E6E6E5E4E3E2E2E1E0E0DFDEDEDDDDDCDCDBDBDADAD9D9D9D8D8 D8D7D7D7D7D6D6D6D6D6D5D5D5D5D5D5 > 0 < FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFDFDFDFDFCFCFCFBFBFBFAFAF9F9F9F8F8F7F7F6F6F5F5F4 F4F3F3F2F1F1F0F0EFEEEDEDECEBEAE9E8E7E5E4E3E2E1E0DFDEDDDCDBDADAD9D8D7D6D5D4D3D2D1 D0CFCDCCCBCAC8C7C6C4C3C1BFBDBBB9B7B4B2B0AEACAAA8A6A4A2A09E9C9A98969492908E8C8A89 87858381807E7C7A7977757372706E6C6B6967666462615F5E5C5A595756545351504E4D4B4A4847 46444341403E3D3B3A3837353432312F2E2C2B29282625242221201E1D1C1A191817151413121110 0E0D0C0B0A0908070605040302010000 > 0 < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101 > 1 < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 4 %_Br < D5D5D6D7D8D9DADBDDDEDFDFDFDFDFDEDEDEDDDDDCDCDCDBDBDBDBDADADADADADBDBDBDCDCDDDEDE DFE0E1E2E3E4E6E8E9E9EAEBEAEAE9E8E8E7E7E6E6E5E5E4E4E3E2E1E0E0DFDFDFDFDFDFE0E0E1E2 E3E5E7E8EBEDEFF1F2F4F5F4F3F1EFEDEBEAE8E7E6E5E4E3E2E2E2E2E2E2E2E3E4E5E7E8EAEBEBEB EBEBEAEAEAEAE9E9E9E9E9E8E8E8E8E8E7E7E7E7E8E8E9E9EAEAEBEBEBEAEAEAEAEAEAEAEAEAEBEB ECEDEEEFF1F3F5F6F7F8F9FBFCFCFCF9F7F6F4F2F1F0EEEEEDECECEBEBEBEBECECEDEDEEEEEFEFEF EFEFEFEFEFF0F0F0F1F1F2F3F3F4F5F6F7F8F9FBFCFDFDFEFFFFFFFFFFFDFCFBFBFAF9F8F8F7F7F6 F6F6F5F5F5F5F4F4F4F4F4F4F4F4F4F4 > < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000101010101020202020303030404040405050505060606060707 0707070707070708090A0B0C0E11131517191B1D1F21232527282A2B2D2E3031323334353637383A 3C3D3F4042444547494A4C4E4F5153555658595B5C5E5F606263646667696A6C6D6F707273757677 797A7B7D7E7F80818384858687898A8C8E9091939597989A9C9D9FA0A2A3A4A6A7A8AAABACAEAFB0 B2B4B5B7B9BABCBDBFC1C2C4C5C7C8CACBCCCECFD1D2D3D5D6D7D8DADBDCDDDEDFE1E2E2E3E4E5E6 E7E7E8E9E9EAEAEBEBEBECECECECECED > 0 0 < 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 1 4 %_Br < F4F4F4F3F3F3F3F3F3F3F3F3F3F3F3F2F2F2F2F2F2F1F1F1F1F1F0F0F0F0EFEFEFEEEEEEEDEDEDEC ECECEBEBEAEAE9E9E8E8E7E7E6E6E5E4E3E3E2E1E0DFDEDDDBDAD9D8D6D5D4D3D1D0CFCECCCBCAC8 C7C6C5C3C2C1BFBEBDBBBAB9B7B6B5B3B2B0AFAEACABAAA8A7A6A4A3A1A09E9D9B9A989695939290 8F8D8C8A898786858382817F7E7D7B7A79787675747371706F6E6C6B6A686766646362615F5E5C5B 5A585755545351504E4D4C4A494746454342413F3E3D3B3A393736353332312F2E2D2B2A29272625 242321201F1E1E1D1C1B1A191817171615141413121111100F0F0E0D0D0C0B0B0A0A090908070706 06060505040404030303030202020202 > < EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEF EFEFF0F0F0F0F0F0F0F0F1F1F1F1F1F1F1F2F2F2F2F2F2F3F3F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4 F4F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F7F7F7F7F7F7F8F8F8F8F9F9F9F9F9F9F9F9F9F9F9F8 F8F8F7F7F6F6F6F5F5F5F5F4F4F4F3F3F3F3F2F2F2F2F1F1F1F1F0F0F0F0F0EFEFEFEFEFEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFF0F0F0 F0F0F0F1F1F1F1F1F2F2F2F2F2F2F3F3 > 0 0 < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000001010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010202020202020202 02020202020202020202020202020202020202020202020202020202020202020202020202020202 02020202020202020202020202020202 > 1 4 %_Br [ 0.0118 0.9608 0.9137 0 1 0 0 2 50 0 %_Bs 0.0314 0.0196 0.9137 0 1 1 0 2 50 20 %_Bs 0.9255 0 1 0 0 1 0 2 50 40 %_Bs 0.8353 0 0 0 0.0039 1 1 2 50 60 %_Bs 0.9569 0.9294 0 0 0 0 1 2 50 80 %_Bs 0.0078 0.9529 0 0 1 0.0078 1 2 50 100 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Unnamed gradient 37) (Unnamed gradient 37) 1 2 Bd [ < C4C4C5C4C5C5C5C6C6C6C6C6C7C6C7C7C6C6C6C6C5C5C5C4C4C4C3C3C2C2C2C1C1C0C0BFBFBEBDBD BCBCBBBABAB9B9B8B7B7B5B5B4B2B2B1B1AFAFAEACACABABAAA9A8A7A7A6A6A4A3A3A2A2A1A0A09E 9F9E9E9C9B9B9A9A9998989797959594939392929191908E8E8D8D8C8C8B89898888878785848483 8281817F7E7E7D7C7B7B797977767674737272706E6E6D6C6A6A6968666564626260605E5D5C5A59 575756565555545453525150504F4F4E4E4D4D4C4B4B4A4A49484847464645454444434343424242 424141404040403F3F3F3F3E3E3E3D3D3D3D3C3C3B3B3B3B3A3A3A3A393938383838373736363636 3535353534343333333332323232323131303130302F2F2F2F2E2E2E2D2D2D2D2C2C2C2B2B2A2A2A 2A2A > < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000101010101010101020303 03040505060709090A0B0D0E0E101112121415161618191B1C1C1D1F20202123242426272828292B 2C2C2D2F3030313233333536373738393A3A3B3D3E3E3F4041414243444546474848494A4B4B4C4D 4E4E5051515254555658595B5A5C5D5E5F61626264666767696A6B6C6E6F7071737374767878797B 7B7D7E7F80828383858686888A8A8B8D8D8E909192939595969798999B9B9C9D9E9FA0A0A2A3A4A5 A6A6A8A9A9AAACACADADAFB0B0B1B2B2B4B5B5B6B6B8B9B9BABBBCBDBDBFBFC0C0C2C3C3C4C4C6C6 C7C7 > < 0202020303030404050505060607070808090A0A0B0B0C0D0D0E0E0F101011121313141415161717 18181A1A1B1C1C1E1E1F2021222324252526262728292A2B2C2D2E2F30313233343436373738393A 3B3C3D3E3F40404242434243454546474849494A4B4C4D4D4E4F5050515253545454555556575858 595A5B5B5C5D5E5F5F616160616263636465666666686869696B6A6B6B6C6D6D6E6F707071727372 727475767778797A7C7D7E7D7F808183848586878988898B8C8D8F9091929494959798999A9C9D9F 9FA0A2A3A5A6A8A9A9AAACAEAFB1B2B2B4B5B7B8BABBBBBDBEC0C1C3C4C4C6C7C9CACBCBCDCED0D1 D3D3D4D5D7D8D8DADBDDDEDEDFE1E2E4E3E5E6E7E7E9EAEBEBECEDEEEEEEEFEFF0F0F0F1F1F2F2F2 F2F3 > < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000101010101010102020202020303030304040404050505050606060607070708080909090A 0A0A0B0B0C0C0D0D0E0E0F0F101011121213131415151617181819191A1B1B1C1D1E1E1F20212222 23242424242424242424242424242424242424242424242423242323232323232322222121212120 201F1F1F1F1E1E1D1D1D1D1C1B1B1B1B1A1A19191919181817171717161616161515151514141414 13131313121212121111111110101010100F0F0F0F0E0E0E0E0D0D0D0D0D0D0D0C0C0C0C0C0B0B0B 0B0B > < 33343435353637373838393A3A3B3B3C3D3D3E3E3F40404141424343444445464647474848494A4A 4B4B4C4D4D4E4E4F50505151525353545455555657575858595A5A5B5B5C5C5D5E5E5F5F60616162 626363646565666667686869696A6A6B6C6C6D6D6E6E6F7070717172727374747575767677787879 797A7A7B7C7C7D7D7E7E7F7F80818182828383848585868687878888898A8A8B8B8C8C8D8D8E8F8F 909091919292939394959596969797989899999A9B9B9C9C9D9D9E9E9F9FA0A0A1A2A2A3A3A4A4A5 A5A6A6A7A7A8A8A9A9AAAAABACACADADAEAEAFAFB0B0B1B1B2B2B3B3B4B4B5B5B6B6B7B7B8B8B9B9 BABABBBBBCBCBDBDBEBEBFBFC0C0C0C1C1C2C2C3C3C4C4C5C5C6C6C6C7C7C8C8C9C9C9CACACBCBCB CCCC > < FFFEFDFDFCFBFAF9F9F8F7F6F5F5F4F3F2F1F1F0EFEEEDEDECEBEAE9E9E8E7E6E6E5E4E3E2E2E1E0 DFDEDEDDDCDBDADAD9D8D7D7D6D5D4D3D3D2D1D0CFCFCECDCCCCCBCAC9C8C8C7C6C5C5C4C3C2C1C1 C0BFBEBEBDBCBBBBBAB9B8B7B7B6B5B4B4B3B2B1B1B0AFAEADADACABAAAAA9A8A7A7A6A5A4A4A3A2 A1A1A09F9E9E9D9C9B9B9A999898979695959493929291908F8F8E8D8C8C8B8A8989888786868584 8383828181807F7E7E7D7C7B7B7A79797877767675747373727171706F6E6E6D6C6C6B6A69696867 67666565646362626160605F5E5E5D5C5C5B5A5959585757565555545353525151504F4F4E4D4D4C 4B4B4A494948474746464544444342424140403F3F3E3D3D3C3C3B3A3A3939383837363635353434 3333 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1 B0AFAEADACABAAA9A8A7A7A6A5A4A3A2A1A09F9E9D9C9B9A99989796959493929191908F8E8D8C8B 8A89888786858483828180807F7E7D7C7B7A79787776757473727271706F6E6D6C6B6A6968676666 6564636261605F5E5D5C5B5B5A59585756555453525251504F4E4D4C4B4A49494847464544434241 41403F3E3D3C3B3A3A39383736353434333231302F2E2E2D2C2B2A2928282726252423232221201F 1E1E1D1C1B1A1A1918171616151413121211100F0F0E0D0C0C0B0A09090807060605040403020201 0100 > 4 %_Br [ 0.7686 0 0.0078 0 0.2 1 1 2 46.6292 0.5618 %_Bs 0.1647 0.7804 0.9529 0.0431 0.8 0.2 0 2 50 100 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (White, Black) (White, Black) 0 2 Bd [ 0 0 0 < 00000000000000000000000000000000000000000000000101010101010101010101010102020202 02020202020202030303030303040404040404040505050505050606060607070707080808090909 090A0A0A0A0B0B0B0C0C0D0D0D0E0E0F0F0F101011111112121313141515161617171819191A1A1B 1B1C1D1D1E1F202021222323242526272728292A2B2C2D2E2F303132333435363738393A3B3C3D3E 3F404142434445464748494A4C4D4E4F50525354565758595B5C5D5F606263656668696B6C6E7071 737576787A7C7D7F81838587898B8D8F919395979A9C9EA0A3A5A7AAACAFB1B4B7B9BCBFC2C5C7CA D0D6DBE0E4E8ECF0F2F4F6F7F9FBFDFF > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 4 %_Br [ 0 0 0 1 0 0 0 2 50 100 %_Bs 0 0 0 0 1 1 1 2 50 0 %_Bs BD %AI5_EndGradient %AI5_End_NonPrinting-- %AI5_Begin_NonPrinting Np %AI3_BeginPattern: (Azure Rings) (Azure Rings) 22.5 22.5 58.5 58.5 [ %AI3_Tile (0 O 0 R 0 0 1 Xa 0 0 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1.75 w 4 M []0 d 0 XR 40.5 58.5 m 40.5 48.5586 32.4409 40.5 22.5 40.5 c 12.5591 40.5 4.5 48.5586 4.5 58.5 c 4.5 68.4414 12.5591 76.5 22.5 76.5 c 32.4409 76.5 40.5 68.4414 40.5 58.5 c s 40.5 22.5 m 40.5 12.5586 32.4409 4.5 22.5 4.5 c 12.5591 4.5 4.5 12.5586 4.5 22.5 c 4.5 32.4414 12.5591 40.5 22.5 40.5 c 32.4409 40.5 40.5 32.4414 40.5 22.5 c s 40.5 40.5 m 40.5 30.5586 32.4409 22.5 22.5 22.5 c 12.5591 22.5 4.5 30.5586 4.5 40.5 c 4.5 50.4414 12.5591 58.5 22.5 58.5 c 32.4409 58.5 40.5 50.4414 40.5 40.5 c s 58.5 58.5 m 58.5 48.5586 50.4409 40.5 40.5 40.5 c 30.5591 40.5 22.5 48.5586 22.5 58.5 c 22.5 68.4414 30.5591 76.5 40.5 76.5 c 50.4409 76.5 58.5 68.4414 58.5 58.5 c s 58.5 22.5 m 58.5 12.5586 50.4409 4.5 40.5 4.5 c 30.5591 4.5 22.5 12.5586 22.5 22.5 c 22.5 32.4414 30.5591 40.5 40.5 40.5 c 50.4409 40.5 58.5 32.4414 58.5 22.5 c s 58.5 40.5 m 58.5 30.5586 50.4409 22.5 40.5 22.5 c 30.5591 22.5 22.5 30.5586 22.5 40.5 c 22.5 50.4414 30.5591 58.5 40.5 58.5 c 50.4409 58.5 58.5 50.4414 58.5 40.5 c s 76.5 58.5 m 76.5 48.5586 68.4409 40.5 58.5 40.5 c 48.5591 40.5 40.5 48.5586 40.5 58.5 c 40.5 68.4414 48.5591 76.5 58.5 76.5 c 68.4409 76.5 76.5 68.4414 76.5 58.5 c s 76.5 22.5 m 76.5 12.5586 68.4409 4.5 58.5 4.5 c 48.5591 4.5 40.5 12.5586 40.5 22.5 c 40.5 32.4414 48.5591 40.5 58.5 40.5 c 68.4409 40.5 76.5 32.4414 76.5 22.5 c s 76.5 40.5 m 76.5 30.5586 68.4409 22.5 58.5 22.5 c 48.5591 22.5 40.5 30.5586 40.5 40.5 c 40.5 50.4414 48.5591 58.5 58.5 58.5 c 68.4409 58.5 76.5 50.4414 76.5 40.5 c s %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Blue Tablecloth) (Blue Tablecloth) 0 0 12 12 [ %AI3_Tile (0 O 0 R 0 0 1 Xa 0 0 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 6 6 m 0 6 L 0 12 L 6 12 L 6 6 L f %AI6_EndPatternLayer ) & (0 O 0 R 0.6 0.6 1 Xa 0.6 0.6 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 12 6 m 6 6 L 6 12 L 12 12 L 12 6 L f %AI6_EndPatternLayer ) & (0 O 0 R 1 1 1 Xa 1 1 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 12 0 m 6 0 L 6 6 L 12 6 L 12 0 L f %AI6_EndPatternLayer ) & (0 O 0 R 0.6 0.6 1 Xa 0.6 0.6 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 6 0 m 0 0 L 0 6 L 6 6 L 6 0 L f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Camouflage) (Camouflage) 1 1 73 73 [ %AI3_Tile (0 O 0 R 0.3922 0.6039 0.1451 Xa 0.3922 0.6039 0.1451 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 1 73 m 1 1 L 73 1 L 73 73 L 1 73 L f %AI6_EndPatternLayer ) & (0 O 0 R 0.4039 0.4 0.0745 Xa 0.4039 0.4 0.0745 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 18.5449 73 m 18.5449 1 L 46.7832 1 L 46.7832 73 L 18.5449 73 L f %AI6_EndPatternLayer ) & (0 O 0 R 0.8 0.8 0.1059 Xa 0.8 0.8 0.1059 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 11.9512 1 m 11.9512 4.7129 9.2314 2.8813 9.2314 6.5938 c 9.2314 10.2334 4.25 10.2334 4.25 13.8735 c 4.25 17.4858 10.0313 17.4858 10.0313 21.0991 c 10.0313 24.832 10.208 24.832 10.208 28.5654 c 10.208 32.3071 5.5205 32.3071 5.5205 36.0469 c 5.5205 39.7021 11.8838 39.7021 11.8838 43.356 c 11.8838 47.0566 7.4609 47.0566 7.4609 50.7568 c 7.4609 54.4043 5.7959 54.4043 5.7959 58.0542 c 5.7959 61.7686 4.6631 61.7686 4.6631 65.4805 c 4.6631 69.1636 11.9512 69.3184 11.9512 73 C 27.9268 73 L 27.9268 69.3184 22.0635 69.1636 22.0635 65.4805 c 22.0635 61.7686 28.6631 61.7686 28.6631 58.0542 c 28.6631 54.4043 25.1553 54.4043 25.1553 50.7568 c 25.1553 47.0566 28.8145 47.0566 28.8145 43.356 c 28.8145 39.7021 22.1191 39.7021 22.1191 36.0469 c 22.1191 32.3071 26.3945 32.3071 26.3945 28.5654 c 26.3945 24.832 24.4248 24.832 24.4248 21.0991 c 24.4248 17.4858 20.3838 17.4858 20.3838 13.8735 c 20.3838 10.2334 24.6055 10.2334 24.6055 6.5938 c 24.6055 2.8813 27.9268 4.7129 27.9268 1 C 11.9512 1 L f %AI6_EndPatternLayer ) & (0 O 0 R 0.0784 0.4157 0.1647 Xa 0.0784 0.4157 0.1647 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 41.875 1 m 41.875 4.7134 42.3867 2.8818 42.3867 6.5938 c 42.3867 10.2334 40.5947 10.2334 40.5947 13.8735 c 40.5947 17.4858 41.5742 17.4858 41.5742 21.0991 c 41.5742 24.832 43.6484 24.832 43.6484 28.5659 c 43.6484 32.3076 39.1709 32.3076 39.1709 36.0469 c 39.1709 39.7026 39.7549 39.7026 39.7549 43.356 c 39.7549 47.0566 45.3896 47.0566 45.3896 50.7568 c 45.3896 54.4043 40.1055 54.4043 40.1055 58.0542 c 40.1055 61.7686 40.6289 61.7686 40.6289 65.4805 c 40.6289 69.1636 41.875 69.3184 41.875 73 C 59.0752 73 L 59.0752 69.4219 53.4805 70.1934 53.4805 66.6143 c 53.4805 62.9136 55.8945 62.9136 55.8945 59.2153 c 55.8945 55.502 61.0059 55.502 61.0059 51.7886 c 61.0059 48.1489 60.5635 48.1489 60.5635 44.5103 c 60.5635 40.897 59.9277 40.897 59.9277 37.2842 c 59.9277 33.5508 56.3662 33.5508 56.3662 29.8169 c 56.3662 26.0762 61.0908 26.0762 61.0908 22.3354 c 61.0908 18.6812 52.6025 18.6812 52.6025 15.0264 c 52.6025 11.3262 55.7461 11.3262 55.7461 7.6265 c 55.7461 3.978 59.0752 4.6484 59.0752 1 C 41.875 1 L f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Clown Attack) (Clown Attack) 5.25 11 41.25 47 [ %AI3_Tile (0 O 0 R 0 1 0 Xa 0 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 17.5 18.25 m 17.5 15.2119 15.0376 12.75 12 12.75 c 8.9624 12.75 6.5 15.2119 6.5 18.25 c 6.5 21.2881 8.9624 23.75 12 23.75 c 15.0376 23.75 17.5 21.2881 17.5 18.25 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 0 1 Xa 1 0 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 22.25 34.125 m 22.25 31.2939 19.9556 29 17.125 29 c 14.2944 29 12 31.2939 12 34.125 c 12 36.9561 14.2944 39.25 17.125 39.25 c 19.9556 39.25 22.25 36.9561 22.25 34.125 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 0 0 Xa 1 0 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 30 31.625 m 30 29.4854 28.2646 27.75 26.125 27.75 c 23.9849 27.75 22.25 29.4854 22.25 31.625 c 22.25 33.7646 23.9849 35.5 26.125 35.5 c 28.2646 35.5 30 33.7646 30 31.625 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 1 0 Xa 1 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 23.25 24.5 m 23.25 22.4287 21.5713 20.75 19.5 20.75 c 17.4287 20.75 15.75 22.4287 15.75 24.5 c 15.75 26.5713 17.4287 28.25 19.5 28.25 c 21.5713 28.25 23.25 26.5713 23.25 24.5 c f %AI6_EndPatternLayer ) & (0 O 0 R 0 0 1 Xa 0 0 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 36 22.25 m 36 19.0742 33.4258 16.5 30.25 16.5 c 27.0742 16.5 24.5 19.0742 24.5 22.25 c 24.5 25.4258 27.0742 28 30.25 28 c 33.4258 28 36 25.4258 36 22.25 c f %AI6_EndPatternLayer ) & (0 O 0 R 0.8 0.7922 0.2078 Xa 0.8 0.7922 0.2078 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 24.25 16.5 m 24.25 14.8438 22.9067 13.5 21.25 13.5 c 19.5933 13.5 18.25 14.8438 18.25 16.5 c 18.25 18.1563 19.5933 19.5 21.25 19.5 c 22.9067 19.5 24.25 18.1563 24.25 16.5 c f %AI6_EndPatternLayer ) & (0 O 0 R 0 1 1 Xa 0 1 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 37.25 43.875 m 37.25 39.5264 33.7236 36 29.375 36 c 25.0264 36 21.5 39.5264 21.5 43.875 c 21.5 48.2236 25.0264 51.75 29.375 51.75 c 33.7236 51.75 37.25 48.2236 37.25 43.875 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 0.8 0 Xa 1 0.8 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 38.75 26.625 m 38.75 25.7275 38.0225 25 37.125 25 c 36.2275 25 35.5 25.7275 35.5 26.625 c 35.5 27.5225 36.2275 28.25 37.125 28.25 c 38.0225 28.25 38.75 27.5225 38.75 26.625 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 0.4 0 Xa 1 0.4 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 19.875 42 m 19.875 41.1025 19.1475 40.375 18.25 40.375 c 17.3525 40.375 16.625 41.1025 16.625 42 c 16.625 42.8975 17.3525 43.625 18.25 43.625 c 19.1475 43.625 19.875 42.8975 19.875 42 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 0 0 Xa 1 0 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 12.75 28.125 m 12.75 26.8135 11.6865 25.75 10.375 25.75 c 9.0635 25.75 8 26.8135 8 28.125 c 8 29.4365 9.0635 30.5 10.375 30.5 c 11.6865 30.5 12.75 29.4365 12.75 28.125 c f %AI6_EndPatternLayer ) & (0 O 0 R 0 1 0 Xa 0 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 43.25 33 m 43.25 30.998 41.627 29.375 39.625 29.375 c 37.623 29.375 36 30.998 36 33 c 36 35.002 37.623 36.625 39.625 36.625 c 41.627 36.625 43.25 35.002 43.25 33 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 1 0 Xa 1 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 13.25 43.75 m 13.25 40.9883 11.0117 38.75 8.25 38.75 c 5.4883 38.75 3.25 40.9883 3.25 43.75 c 3.25 46.5117 5.4883 48.75 8.25 48.75 c 11.0117 48.75 13.25 46.5117 13.25 43.75 c f %AI6_EndPatternLayer ) & (0 O 0 R 0.6 0 0.8 Xa 0.6 0 0.8 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 6.5 22.25 m 6.5 20.7314 5.2686 19.5 3.75 19.5 c 2.2314 19.5 1 20.7314 1 22.25 c 1 23.7686 2.2314 25 3.75 25 c 5.2686 25 6.5 23.7686 6.5 22.25 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 1 0.4 Xa 1 1 0.4 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 34.4883 32.75 m 34.4883 31.9277 33.8223 31.2617 33 31.2617 c 32.1777 31.2617 31.5117 31.9277 31.5117 32.75 c 31.5117 33.5723 32.1777 34.2383 33 34.2383 c 33.8223 34.2383 34.4883 33.5723 34.4883 32.75 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 1 0 Xa 1 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 49.25 43.75 m 49.25 40.9883 47.0117 38.75 44.25 38.75 c 41.4883 38.75 39.25 40.9883 39.25 43.75 c 39.25 46.5117 41.4883 48.75 44.25 48.75 c 47.0117 48.75 49.25 46.5117 49.25 43.75 c f %AI6_EndPatternLayer ) & (0 O 0 R 0.6 0 0.8 Xa 0.6 0 0.8 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 42.5 22.25 m 42.5 20.7314 41.2686 19.5 39.75 19.5 c 38.2314 19.5 37 20.7314 37 22.25 c 37 23.7686 38.2314 25 39.75 25 c 41.2686 25 42.5 23.7686 42.5 22.25 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 1 0 Xa 1 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 49.25 7.752 m 49.25 4.9902 47.0117 2.752 44.25 2.752 c 41.4883 2.752 39.25 4.9902 39.25 7.752 c 39.25 10.5137 41.4883 12.752 44.25 12.752 c 47.0117 12.752 49.25 10.5137 49.25 7.752 c f %AI6_EndPatternLayer ) & (0 O 0 R 0 1 1 Xa 0 1 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 37.25 7.875 m 37.25 3.5264 33.7236 0 29.375 0 c 25.0264 0 21.5 3.5264 21.5 7.875 c 21.5 12.2236 25.0264 15.75 29.375 15.75 c 33.7236 15.75 37.25 12.2236 37.25 7.875 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 1 0 Xa 1 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 13.25 7.75 m 13.25 4.9883 11.0117 2.75 8.25 2.75 c 5.4883 2.75 3.25 4.9883 3.25 7.75 c 3.25 10.5117 5.4883 12.75 8.25 12.75 c 11.0117 12.75 13.25 10.5117 13.25 7.75 c f %AI6_EndPatternLayer ) & (0 O 0 R 0 1 0 Xa 0 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 7.25 33 m 7.25 30.998 5.627 29.375 3.625 29.375 c 1.623 29.375 0 30.998 0 33 c 0 35.002 1.623 36.625 3.625 36.625 c 5.627 36.625 7.25 35.002 7.25 33 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 0.6 1 Xa 1 0.6 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 39.6533 16.0381 m 39.6533 15.1064 38.8975 14.3506 37.9658 14.3506 c 37.0342 14.3506 36.2783 15.1064 36.2783 16.0381 c 36.2783 16.9697 37.0342 17.7256 37.9658 17.7256 c 38.8975 17.7256 39.6533 16.9697 39.6533 16.0381 c f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Pyramids) (Pyramids) 1 1 19.5 19.5 [ %AI3_Tile (0 O 0 R 0.8 0.8 0.8 Xa 0.8 0.8 0.8 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 1 19.5 m 10.25 10.25 l 19.5 19.5 l 1 19.5 l f %AI6_EndPatternLayer ) & (0 O 0 R 0.2 0.2 0.2 Xa 0.2 0.2 0.2 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 19.5 1 m 10.25 10.25 l 1 1 l 19.5 1 l f %AI6_EndPatternLayer ) & (0 O 0 R 0.6 0.6 0.6 Xa 0.6 0.6 0.6 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 1 1 m 10.25 10.25 l 1 19.5 l 1 1 l f %AI6_EndPatternLayer ) & (0 O 0 R 0.4 0.4 0.4 Xa 0.4 0.4 0.4 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 19.5 19.5 m 10.25 10.25 l 19.5 1 l 19.5 19.5 l f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Red Stripe) (Red Stripe) 37 19 73 55 [ %AI3_Tile (0 O 0 R 1 0 0 Xa 1 0 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 18 w 4 M []0 d 0 XR 37 37 m 73 37 l S %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI5_End_NonPrinting-- %AI5_BeginPalette 0 0 Pb 0 0 0 Xa ([Registration]) Pc 1 1 1 Xa (White) Pc 0 0 0 Xa (Black) Pc 0.6 0.6 0.6 Xa (Gray) Pc 0.8 0.8 0.8 Xa (Light Gray) Pc 0 1 1 Xa (Bright Blue) Pc 0.6 1 1 Xa (Light Blue) Pc 0.8 1 1 Xa (Pale Blue) Pc 1 0 1 Xa (Violet) Pc 1 0.4 1 Xa (Light Violet) Pc 1 0.8 1 Xa (Pale Violet) Pc 1 1 0 Xa (Yellow) Pc 1 1 0.4 Xa (Light Yellow) Pc 1 1 0.6 Xa (Pale Yellow) Pc 0.6 0.2 0 Xa (Brown) Pc 0.8 0.4 0.2078 Xa (Light Brown) Pc 1 0.6 0.4 Xa (Pale Brown) Pc 0 0 1 Xa (Blue) Pc 0.4 0.4 1 Xa (Faded Blue) Pc 0.8 0.8 1 Xa (Faded Pale Blue) Pc 1 0 0 Xa (Red) Pc 1 0.4 0.4 Xa (Light Red) Pc 1 0.6 0.6 Xa (Mauve) Pc 0 0.6 0 Xa (Forest Green) Pc 0.2 0.8 0.2 Xa (Green) Pc 0.6 1 0.4 Xa (Pale Green) Pc 0 1 0 Xa (Bright Green) Pc 0.4 1 0.4 Xa (Light Bright Green) Pc 0.5922 1 0.6 Xa (Pale Light Green) Pc 0.6 0 0.8 Xa (Purple) Pc 0.6 0.4 0.8 Xa (Periwinkle) Pc 0.8 0.6 0.8 Xa (Lavender) Pc 1 0.6 0 Xa (Orange) Pc 1 0.8 0.2 Xa (Light Orange) Pc 1 0.8 0.6 Xa (Light Pale Orange) Pc Bb 2 (White, Black) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (White, Black) Pc Bb 0 0 0 0 Bh 2 (Black, White Radial) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (Black, White Radial) Pc Bb 2 (Steel Bar II) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (Steel Bar II) Pc Bb 2 (RGB Rainbow) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (RGB Rainbow) Pc Bb 0 0 0 0 Bh 2 (Nova) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (Nova) Pc Bb 2 (Sunrise) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (Sunrise) Pc (Blue Tablecloth) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Blue Tablecloth) Pc (Pyramids) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Pyramids) Pc (Azure Rings) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Azure Rings) Pc (Red Stripe) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Red Stripe) Pc (Clown Attack) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Clown Attack) Pc (Camouflage) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Camouflage) Pc PB %AI5_EndPalette %%EndSetup %AI5_BeginLayer 1 1 1 1 0 0 1 255 79 79 Lb (Layer 2) Ln 0 A u *u 0 O 1 1 1 Xa 0 J 0 j 1 w 4 M []0 d 0 XR 246.897 327.5371 m 230.4131 344.4063 220.0479 367.5449 219.5142 393.1602 C 221.1577 392.3193 222.9009 391.2002 224.0459 390.0693 C 223.1982 392.9492 L 226.1094 392.7715 L 353.7344 309.3779 L 353.709 309.0059 L 353.7178 309.0049 L 341.416 302.9072 327.624 299.4932 313.0381 299.4932 C 287.208 299.4932 263.8262 310.2119 246.897 327.5371 C F 354.6104 309.4785 m 354.7295 309.6641 L 354.7207 309.4707 L 354.6104 309.4785 L F 353.8105 310.5176 m 354.7617 310.4531 L 354.7393 309.9111 L 353.8105 310.5176 L F 293.6792 349.8115 m 299.4194 347.2432 305.751 345.8184 312.4082 345.8164 C 333.2539 345.8232 350.9219 359.7686 357.1465 379.1016 C 357.1016 378.1172 L 357.5469 378.0986 L 357.5059 377.0996 L 357.0566 377.1182 L 357.0215 376.1191 L 357.4648 376.1006 L 357.4238 375.1016 L 356.9756 375.1201 L 356.9307 374.1211 L 357.3828 374.1025 L 357.3418 373.1035 L 356.8945 373.1221 L 356.8496 372.123 L 357.3008 372.1045 L 357.2588 371.1055 L 356.8047 371.124 L 356.7686 370.125 L 357.2178 370.1064 L 357.1768 369.1074 L 356.7236 369.126 L 356.6787 368.1357 L 357.1357 368.1172 L 357.0947 367.1162 L 356.6338 367.1367 L 356.5977 366.1475 L 357.0537 366.126 L 357.0127 365.127 L 356.5527 365.1484 L 356.5078 364.1494 L 356.9717 364.1279 L 356.9307 363.1289 L 356.4629 363.1504 L 356.418 362.1514 L 356.8896 362.1299 L 356.8486 361.1309 L 356.373 361.1523 L 356.3369 360.1533 L 356.8076 360.1318 L 356.7666 359.1328 L 356.292 359.1543 L 356.2471 358.1641 L 356.7256 358.1426 L 356.6846 357.1436 L 356.2021 357.165 L 356.1572 356.166 L 356.6436 356.1445 L 356.6025 355.1543 L 356.1123 355.1758 L 356.0674 354.1768 L 356.5615 354.1543 L 356.5195 353.1553 L 356.0225 353.1777 L 355.9766 352.1875 L 356.4795 352.165 L 356.4385 351.166 L 355.9316 351.1895 L 355.8867 350.1992 L 356.3975 350.1758 L 356.3564 349.1768 L 355.8418 349.2002 L 355.7969 348.2012 L 356.3154 348.1777 L 356.2734 347.1758 L 355.752 347.2021 L 355.6982 346.2031 L 356.2324 346.1787 L 356.1914 345.1865 L 355.6533 345.2129 L 355.6084 344.2139 L 356.1504 344.1895 L 356.1104 343.1973 L 355.5625 343.2236 L 355.5176 342.2246 L 356.0693 342.2002 L 356.0283 341.207 L 355.4639 341.2354 L 355.4189 340.2363 L 355.9873 340.21 L 355.9463 339.2178 L 355.374 339.2461 L 355.3291 338.2471 L 355.9053 338.2188 L 355.8643 337.2275 L 355.2754 337.2568 L 355.2305 336.249 L 355.8223 336.2227 L 355.7822 335.2285 L 355.1758 335.2588 L 355.1309 334.2686 L 355.7412 334.2383 L 355.7002 333.2393 L 355.0771 333.2695 L 355.0322 332.2803 L 355.6592 332.249 L 355.6182 331.2559 L 354.9775 331.29 L 354.9326 330.291 L 355.5771 330.2588 L 355.5361 329.2686 L 354.8789 329.3008 L 354.8252 328.3105 L 355.4951 328.2744 L 355.4551 327.2842 L 354.7715 327.3213 L 354.7256 326.3223 L 355.4141 326.2881 L 355.3721 325.2852 L 354.6719 325.3232 L 354.6182 324.333 L 355.332 324.2949 L 355.291 323.3037 L 354.5645 323.3428 L 354.5098 322.3525 L 355.25 322.3125 L 355.209 321.3281 L 354.4561 321.3721 L 354.4023 320.373 L 355.168 320.332 L 355.1279 319.3457 L 354.3477 319.3916 L 354.2852 318.4023 L 355.0869 318.3555 L 355.0459 317.3643 L 354.2314 317.4121 L 354.1768 316.4219 L 355.0049 316.373 L 354.9648 315.3877 L 354.1143 315.4414 L 354.0508 314.4512 L 354.9238 314.3994 L 354.8838 313.4141 L 353.9971 313.4697 L 353.9336 312.4805 L 354.8428 312.4268 L 354.8018 311.4404 L 353.8711 311.499 L 353.8076 310.5195 L 293.6792 349.8115 L F 228.1274 392.6475 m 265.4482 390.3672 L 266.4888 377.4307 272.4395 365.9277 281.373 357.8535 C 228.1274 392.6475 L F 357.1514 379.1162 m 357.2559 379.4434 357.3594 379.7734 357.458 380.1035 C 357.6299 380.0967 L 357.5879 379.0977 L 357.1514 379.1162 L F 226.4346 393.7539 m 223.8916 395.416 L 224.4512 396.7109 L 224.0767 396.4229 223.6509 396.1421 223.1929 395.8721 C 221.125 397.2236 L 233.0112 396.6401 L 233.0459 396.5938 L 233.0649 396.6079 233.083 396.6216 233.1016 396.6357 C 265.2876 395.0552 L 265.2852 394.8506 265.2842 394.6475 265.2842 394.4434 C 265.2842 393.4121 265.3154 392.3896 265.3765 391.375 C 226.4346 393.7539 L F 223.2573 393.9482 m 223.4883 394.4834 L 224.416 393.877 L 223.2573 393.9482 L F 219.4922 395.2441 m 219.4922 395.8447 219.4976 396.4438 219.5083 397.042 C 219.5435 397.0615 L 222.1963 395.3281 L 221.3252 394.8848 220.3931 394.4873 219.498 394.1602 C 219.4941 394.5215 219.4922 394.8828 219.4922 395.2441 C F 234.334 397.5762 m 236.4956 399.2637 237.7866 400.4966 238.4551 401.4541 C 238.8418 402.021 239.0488 402.5249 238.9678 403.0469 C 238.8779 403.5962 238.437 403.9292 237.9868 404.0908 C 236.6934 404.5439 234.418 404.3457 232.1772 404.1665 C 284.3286 433.4946 L 273.1592 424.9307 265.7939 411.3911 265.3101 396.0552 C 234.334 397.5762 L F 1 D 248.1748 399.7891 m 248.6968 399.7891 L 251.1538 407.7632 L 250.6411 407.7632 L 248.1748 399.7891 L F 242.5952 405.6841 m 241.749 405.0991 241.4341 404.4688 241.3169 403.5962 C 241.146 402.2549 241.3799 401.4448 241.6768 400.9048 C 241.9199 400.5 242.2441 400.2119 242.6758 400.0049 C 243.4502 399.6631 244.0259 399.7891 244.5659 399.9688 C 245.6099 400.3198 245.8711 401.1479 246.0688 401.499 C 246.3481 400.7158 246.5371 400.293 246.8159 400.0229 C 247.0322 399.8159 247.2842 399.7168 247.5991 399.9868 C 247.9229 400.248 248.04 400.7158 248.0488 400.9409 C 248.0669 401.6519 L 247.8599 401.6519 L 247.833 401.499 247.8242 401.1118 247.5811 400.8599 C 247.2119 400.4912 246.915 400.7969 246.7891 400.9048 C 246.5732 401.1392 246.4019 401.4722 246.312 402.0479 C 247.6621 405.855 L 246.627 405.855 L 245.8799 403.7129 L 245.853 403.7129 L 245.7988 404.1812 245.6372 404.667 245.4121 405.0449 C 245.1421 405.5039 244.6919 405.8911 244.1431 405.981 C 244.0386 406 243.9258 406.0088 243.8086 406.0088 C 243.3706 406.0088 242.8794 405.8828 242.5952 405.6841 C F 255.3301 405.6211 m 255.3301 404.6128 254.6821 403.3799 253.5391 402.1289 C 251.73 400.1489 L 251.73 400.0049 L 256.3379 400.0049 L 257.0039 401.6519 L 256.8511 401.7148 L 256.3921 400.959 256.1758 400.9229 255.7168 400.9229 C 252.936 400.9229 L 255.231 403.3169 256.3828 404.6851 256.3828 405.9629 C 256.3828 407.4121 255.519 408.231 254.2861 408.231 C 253.251 408.231 252.1528 407.6548 251.8018 405.8369 C 252.0449 405.7832 L 252.3062 406.4312 252.6572 407.2681 253.7188 407.2681 C 255.0688 407.2681 255.3301 406.188 255.3301 405.6211 C F 0 D 221.5728 398.2031 m 230.0225 402.9546 L 232.4424 397.6689 L 221.5728 398.2031 L F 219.5391 398.3027 m 220.3125 423.5366 230.623 446.2964 246.897 462.9512 C 263.8262 480.2852 287.208 490.9951 313.0381 490.9951 C 313.0381 491.499 L 313.0381 490.9951 L 330.4316 490.9951 346.7129 486.1328 360.666 477.6748 C 360.6484 477.6748 L 360.6465 477.5596 L 229.8682 404.0146 L 229.8296 404.0127 229.7905 404.0112 229.752 404.0098 C 229.7549 403.9502 L 219.6982 398.2949 L 219.5391 398.3027 L F 243.7832 400.2031 m 243.4678 400.2212 243.3149 400.293 243.0542 400.563 C 242.7749 400.8511 242.6582 401.229 242.5952 401.5801 C 242.478 402.2549 242.4331 402.9209 242.5142 403.5869 C 242.5952 404.2168 242.7388 404.7388 243.0269 405.1172 C 243.2881 405.459 243.4951 405.6572 244.188 405.459 C 244.5298 405.3511 244.8452 405.0361 245.0342 404.7212 C 245.3398 404.2168 245.4658 403.2808 245.5469 402.687 C 245.1958 401.6968 L 245.061 401.3188 244.7461 400.7251 244.5029 400.5269 C 244.269 400.3096 244.0195 400.2012 243.8267 400.2012 C 243.8115 400.2012 243.7974 400.2017 243.7832 400.2031 C F 358.6143 404.0811 m 358.6172 404.0811 L 358.6162 404.0698 L 358.6162 404.0747 358.6152 404.0762 358.6143 404.0811 C F 358.4072 405.0898 m 353.7031 426.8174 334.9053 443.062 312.4082 443.0698 C 312.4082 442.5659 L 312.4082 443.0698 L 306.5918 443.0679 301.0234 441.9795 295.8809 439.9917 C 361.0049 476.6152 L 361.6035 476.6045 L 361.5605 475.5654 L 360.6123 475.5869 L 360.585 474.5518 L 361.5186 474.5308 L 361.4756 473.4922 L 360.5576 473.5171 L 360.5313 472.4819 L 361.4326 472.4575 L 361.3906 471.4321 L 360.5039 471.4561 L 360.4766 470.4302 L 361.3486 470.4063 L 361.3066 469.3809 L 360.4502 469.4038 L 360.4229 468.396 L 361.2646 468.3696 L 361.2227 467.3477 L 360.3867 467.3701 L 360.3604 466.3438 L 361.1797 466.3184 L 361.1387 465.3013 L 360.3242 465.3271 L 360.2969 464.3188 L 361.0967 464.2939 L 361.0547 463.2769 L 360.2607 463.3018 L 360.2344 462.3027 L 361.0137 462.2783 L 360.9717 461.2617 L 360.1982 461.2861 L 360.1709 460.2778 L 360.9307 460.2539 L 360.8887 459.2461 L 360.1348 459.27 L 360.1084 458.2622 L 360.8477 458.2388 L 360.8057 457.231 L 360.0723 457.2539 L 360.0361 456.2461 L 360.7646 456.2197 L 360.7227 455.2153 L 360.0088 455.2378 L 359.9727 454.23 L 360.6816 454.2075 L 360.6396 453.1997 L 359.9365 453.2222 L 359.9014 452.2139 L 360.5986 452.1919 L 360.5566 451.1846 L 359.874 451.2061 L 359.8379 450.1982 L 360.5156 450.1768 L 360.4736 449.1748 L 359.8018 449.1992 L 359.7656 448.1821 L 360.4326 448.1582 L 360.3906 447.1592 L 359.7305 447.1831 L 359.6943 446.1748 L 360.3496 446.1514 L 360.3086 445.1528 L 359.667 445.1758 L 359.6309 444.168 L 360.2666 444.145 L 360.2256 443.1465 L 359.5947 443.1689 L 359.5586 442.1611 L 360.1846 442.1387 L 360.1436 441.1396 L 359.5234 441.1621 L 359.4873 440.1538 L 360.1016 440.1348 L 360.0605 439.1357 L 359.4512 439.1548 L 359.415 438.147 L 360.0195 438.125 L 359.9775 437.1172 L 359.3789 437.1392 L 359.3428 436.1401 L 359.9365 436.1187 L 359.8955 435.1196 L 359.3066 435.1411 L 359.2715 434.1328 L 359.8535 434.1118 L 359.8125 433.1133 L 359.2354 433.1338 L 359.1992 432.1348 L 359.7715 432.1143 L 359.7305 431.1064 L 359.1631 431.127 L 359.127 430.1279 L 359.6885 430.1079 L 359.6475 429.1089 L 359.0908 429.1289 L 359.0547 428.1299 L 359.6064 428.1074 L 359.5654 427.1025 L 359.0186 427.1221 L 358.9834 426.1138 L 359.5234 426.0947 L 359.4824 425.0957 L 358.9473 425.1152 L 358.9111 424.1162 L 359.4414 424.0947 L 359.3994 423.0889 L 358.8662 423.1079 L 358.8301 422.1089 L 359.3584 422.0898 L 359.3174 421.0913 L 358.7939 421.1099 L 358.7578 420.1021 L 359.2764 420.0835 L 359.2354 419.0845 L 358.7217 419.103 L 358.6855 418.104 L 359.1934 418.0859 L 359.1523 417.0864 L 358.6406 417.105 L 358.6055 416.106 L 359.1113 416.0879 L 359.0703 415.0869 L 358.5693 415.1069 L 358.5332 414.1079 L 359.0293 414.0879 L 358.9883 413.0825 L 358.4971 413.1001 L 358.4521 412.1011 L 358.9463 412.0811 L 358.9053 411.082 L 358.416 411.1021 L 358.3799 410.0938 L 358.8643 410.0767 L 358.8232 409.0845 L 358.3438 409.104 L 358.2988 408.0962 L 358.7822 408.0786 L 358.7402 407.0796 L 358.2627 407.0972 L 358.2266 406.0981 L 358.6992 406.0786 L 358.6582 405.0796 L 358.4072 405.0898 L F *U *u 0 0 0 Xa 218.5059 393.6475 m 218.8335 393.499 219.1719 393.3359 219.5142 393.1602 C 220.0479 367.5449 230.4131 344.4063 246.897 327.5371 C 263.8262 310.2119 287.208 299.4932 313.0381 299.4932 C 327.624 299.4932 341.416 302.9072 353.7178 309.0049 C 354.6992 308.9346 L 354.6992 308.9336 L 354.6992 308.9346 L 354.7031 308.9336 L 354.9326 308.4844 L 342.3057 302.0938 328.0771 298.4941 313.0381 298.4941 C 313.0381 298.998 L 313.0381 298.4941 L 261.334 298.4941 219.3413 340.9619 218.5059 393.6475 C F 218.4932 395.2441 m 218.4932 448.668 260.811 491.9941 313.0381 491.9941 C 313.0381 490.9951 L 287.208 490.9951 263.8262 480.2852 246.897 462.9512 C 230.623 446.2964 220.3125 423.5366 219.5391 398.3027 C 219.3301 398.313 L 219.3198 398.082 L 218.7539 397.7642 L 219.2402 396.8911 L 219.5083 397.042 L 219.4976 396.4438 219.4922 395.8447 219.4922 395.2441 C 219.4922 394.8828 219.4941 394.5215 219.498 394.1602 C 219.1592 394.0361 218.8257 393.9229 218.5034 393.8203 C 218.4966 394.2949 218.4932 394.7676 218.4932 395.2441 C F 360.666 477.6748 m 346.7129 486.1328 330.4316 490.9951 313.0381 490.9951 C 313.0381 491.9941 L 330.9209 491.9941 347.6523 486.9092 361.9082 478.0801 C 361.6475 477.6572 L 360.666 477.6748 L F 313.0381 491.499 m 313.0381 491.9941 L 313.0381 491.499 L F *U 354.6992 308.9346 m 354.6992 308.9346 L 354.6992 308.9336 L 354.6992 308.9346 L F *u 1 1 1 Xa 354.7207 309.4707 m 354.7295 309.6641 L 354.751 309.6982 L 354.7461 309.6221 354.7402 309.5459 354.7354 309.4697 C 354.7207 309.4707 L F 354.7393 309.9111 m 354.7617 310.4531 L 354.8008 310.4512 L 354.7891 310.2656 354.7764 310.0762 354.7637 309.8945 C 354.7393 309.9111 L F 354.8018 311.4404 m 354.8428 312.4268 L 354.9277 312.4219 L 354.9072 312.0879 354.8857 311.7598 354.8652 311.4365 C 354.8018 311.4404 L F 354.8838 313.4141 m 354.9238 314.3994 L 355.0498 314.3926 L 355.0293 314.0605 355.0098 313.7305 354.9893 313.4072 C 354.8838 313.4141 L F 354.9648 315.3877 m 355.0049 316.373 L 355.168 316.3633 L 355.1484 316.0313 355.1289 315.7021 355.1094 315.3779 C 354.9648 315.3877 L F 355.0459 317.3643 m 355.0869 318.3555 L 355.2832 318.3438 L 355.2637 318.0088 355.2451 317.6816 355.2256 317.3535 C 355.0459 317.3643 L F 355.1279 319.3457 m 355.168 320.332 L 355.3955 320.3193 L 355.377 319.9863 355.3584 319.6602 355.3398 319.334 C 355.1279 319.3457 L F 355.209 321.3281 m 355.25 322.3125 L 355.5049 322.2988 L 355.4863 321.9668 355.4688 321.6406 355.4502 321.3135 C 355.209 321.3281 L F 355.291 323.3037 m 355.332 324.2949 L 355.6123 324.2793 L 355.5947 323.9463 355.5771 323.6172 355.5586 323.2891 C 355.291 323.3037 L F 355.3721 325.2852 m 355.4141 326.2881 L 355.7188 326.2725 L 355.7012 325.9375 355.6826 325.6006 355.665 325.2695 C 355.3721 325.2852 L F 355.4551 327.2842 m 355.4951 328.2744 L 355.8223 328.2568 L 355.8047 327.9258 355.7881 327.5938 355.7705 327.2666 C 355.4551 327.2842 L F 355.5361 329.2686 m 355.5771 330.2588 L 355.9248 330.2412 L 355.9072 329.9102 355.8906 329.5801 355.874 329.252 C 355.5361 329.2686 L F 355.6182 331.2559 m 355.6592 332.249 L 356.0254 332.2305 L 356.0088 331.8955 355.9922 331.5684 355.9746 331.2363 C 355.6182 331.2559 L F 355.7002 333.2393 m 355.7412 334.2383 L 356.125 334.2197 L 356.1084 333.8887 356.0918 333.5488 356.0752 333.2207 C 355.7002 333.2393 L F 355.7822 335.2285 m 355.8223 336.2227 L 356.2227 336.2041 L 356.207 335.874 356.1904 335.5371 356.1738 335.21 C 355.7822 335.2285 L F 355.8643 337.2275 m 355.9053 338.2188 L 356.3203 338.1973 L 356.3037 337.8652 356.2881 337.5371 356.2715 337.208 C 355.8643 337.2275 L F 355.9463 339.2178 m 355.9873 340.21 L 356.416 340.1914 L 356.4004 339.8574 356.3848 339.5273 356.3682 339.1963 C 355.9463 339.2178 L F 356.0283 341.207 m 356.0693 342.2002 L 356.5117 342.1807 L 356.4951 341.8496 356.4795 341.5137 356.4639 341.1855 C 356.0283 341.207 L F 356.1104 343.1973 m 356.1504 344.1895 L 356.6055 344.1689 L 356.5898 343.8379 356.5742 343.5039 356.5586 343.1748 C 356.1104 343.1973 L F 356.1914 345.1865 m 356.2324 346.1787 L 356.6982 346.1582 L 356.6826 345.8262 356.667 345.4932 356.6514 345.1631 C 356.1914 345.1865 L F 356.2734 347.1758 m 356.3154 348.1777 L 356.791 348.1563 L 356.7754 347.8203 356.7598 347.4863 356.7441 347.1523 C 356.2734 347.1758 L F 356.3564 349.1768 m 356.3975 350.1758 L 356.8828 350.1543 L 356.8672 349.8184 356.8525 349.4883 356.8369 349.1553 C 356.3564 349.1768 L F 356.4385 351.166 m 356.4795 352.165 L 356.9736 352.1436 L 356.958 351.8086 356.9434 351.4775 356.9277 351.1445 C 356.4385 351.166 L F 356.5195 353.1553 m 356.5615 354.1543 L 357.0635 354.1318 L 357.0479 353.7939 357.0332 353.4697 357.0176 353.1328 C 356.5195 353.1553 L F 356.6025 355.1543 m 356.6436 356.1445 L 357.1523 356.1211 L 357.1377 355.7891 357.123 355.4619 357.1084 355.1309 C 356.6025 355.1543 L F 356.6846 357.1436 m 356.7256 358.1426 L 357.2412 358.1191 L 357.2266 357.7881 357.2119 357.4502 357.1973 357.1201 C 356.6846 357.1436 L F 356.7666 359.1328 m 356.8076 360.1318 L 357.3291 360.1084 L 357.3145 359.7754 357.2998 359.4414 357.2852 359.1094 C 356.7666 359.1328 L F 356.8486 361.1309 m 356.8896 362.1299 L 357.417 362.1064 L 357.4023 361.7744 357.3877 361.4375 357.373 361.1074 C 356.8486 361.1309 L F 356.9307 363.1289 m 356.9717 364.1279 L 357.5039 364.1045 L 357.4893 363.7705 357.4746 363.4375 357.46 363.1055 C 356.9307 363.1289 L F 357.0127 365.127 m 357.0537 366.126 L 357.5898 366.1025 L 357.5762 365.7715 357.5615 365.4336 357.5469 365.1035 C 357.0127 365.127 L F 357.0947 367.1162 m 357.1357 368.1172 L 357.6758 368.0957 L 357.6611 367.7627 357.6475 367.4238 357.6328 367.0918 C 357.0947 367.1162 L F 357.1768 369.1074 m 357.2178 370.1064 L 357.7607 370.085 L 357.7471 369.7549 357.7324 369.415 357.7178 369.0859 C 357.1768 369.1074 L F 357.2588 371.1055 m 357.3008 372.1045 L 357.8457 372.083 L 357.832 371.751 357.8174 371.4141 357.8037 371.084 C 357.2588 371.1055 L F 357.3418 373.1035 m 357.3828 374.1025 L 357.9297 374.0801 L 357.916 373.748 357.9023 373.4141 357.8877 373.082 C 357.3418 373.1035 L F 357.4238 375.1016 m 357.4648 376.1006 L 358.0137 376.0791 L 358 375.7451 357.9863 375.4121 357.9717 375.0801 C 357.4238 375.1016 L F 357.5059 377.0996 m 357.5469 378.0986 L 358.0977 378.0762 L 358.083 377.7422 358.0693 377.4111 358.0557 377.0771 C 357.5059 377.0996 L F 357.5879 379.0977 m 357.6299 380.0967 L 358.1807 380.0742 L 358.166 379.7393 358.1523 379.4102 358.1387 379.0762 C 357.5879 379.0977 L F 357.7422 381.0928 m 357.833 381.4219 357.9199 381.751 358.0039 382.083 C 358.2627 382.0723 L 358.249 381.7373 358.2354 381.4092 358.2217 381.0732 C 357.7422 381.0928 L F 358.2451 383.0742 m 358.2695 383.1777 358.293 383.2813 358.3164 383.3848 C 358.3125 383.2803 358.3076 383.1768 358.3037 383.0713 C 358.2451 383.0742 L F 358.9648 402.0654 m 359.0645 402.0615 L 359.0576 401.8838 359.0508 401.7036 359.0439 401.5259 C 359.0176 401.707 358.9922 401.8853 358.9648 402.0654 C F 358.8008 403.0728 m 358.7432 403.4063 358.6807 403.7388 358.6162 404.0698 C 358.6172 404.0811 L 359.1426 404.0596 L 359.1299 403.7271 359.1162 403.3936 359.1035 403.0605 C 358.8008 403.0728 L F 358.6582 405.0796 m 358.6992 406.0786 L 359.2207 406.0576 L 359.207 405.7266 359.1943 405.3901 359.1816 405.0586 C 358.6582 405.0796 L F 358.7402 407.0796 m 358.7822 408.0786 L 359.2979 408.0601 L 359.2852 407.7256 359.2725 407.396 359.2588 407.061 C 358.7402 407.0796 L F 358.8232 409.0845 m 358.8643 410.0767 L 359.374 410.0581 L 359.3613 409.7256 359.3486 409.3975 359.3359 409.064 C 358.8232 409.0845 L F 358.9053 411.082 m 358.9463 412.0811 L 359.4512 412.0605 L 359.4385 411.7295 359.4258 411.3936 359.4131 411.0615 C 358.9053 411.082 L F 358.9883 413.0825 m 359.0293 414.0879 L 359.5273 414.0679 L 359.5146 413.73 359.502 413.4028 359.4893 413.0645 C 358.9883 413.0825 L F 359.0703 415.0869 m 359.1113 416.0879 L 359.6035 416.0698 L 359.5908 415.7388 359.5781 415.3989 359.5654 415.0664 C 359.0703 415.0869 L F 359.1523 417.0864 m 359.1934 418.0859 L 359.6787 418.0684 L 359.666 417.7349 359.6533 417.4033 359.6416 417.0693 C 359.1523 417.0864 L F 359.2354 419.0845 m 359.2764 420.0835 L 359.7539 420.0659 L 359.7412 419.7354 359.7285 419.3994 359.7168 419.0674 C 359.2354 419.0845 L F 359.3174 421.0913 m 359.3584 422.0898 L 359.8291 422.0732 L 359.8164 421.7407 359.8037 421.4077 359.791 421.0742 C 359.3174 421.0913 L F 359.3994 423.0889 m 359.4414 424.0947 L 359.9033 424.0757 L 359.8906 423.7422 359.8779 423.4067 359.8662 423.0718 C 359.3994 423.0889 L F 359.4824 425.0957 m 359.5234 426.0947 L 359.9775 426.0781 L 359.9648 425.7437 359.9521 425.415 359.9404 425.0791 C 359.4824 425.0957 L F 359.5654 427.1025 m 359.6064 428.1074 L 360.0508 428.0898 L 360.0391 427.7544 360.0264 427.4229 360.0137 427.0859 C 359.5654 427.1025 L F 359.6475 429.1089 m 359.6885 430.1079 L 360.124 430.0918 L 360.1123 429.7607 360.0996 429.4263 360.0879 429.0933 C 359.6475 429.1089 L F 359.7305 431.1064 m 359.7715 432.1143 L 360.1973 432.0991 L 360.1846 431.7637 360.1729 431.4287 360.1602 431.0908 C 359.7305 431.1064 L F 359.8125 433.1133 m 359.8535 434.1118 L 360.2695 434.0972 L 360.2568 433.7656 360.2451 433.4316 360.2334 433.0981 C 359.8125 433.1133 L F 359.8955 435.1196 m 359.9365 436.1187 L 360.3408 436.104 L 360.3291 435.7734 360.3174 435.438 360.3057 435.105 C 359.8955 435.1196 L F 359.9775 437.1172 m 360.0195 438.125 L 360.4131 438.1108 L 360.4014 437.7739 360.3887 437.4424 360.377 437.103 C 359.9775 437.1172 L F 360.0605 439.1357 m 360.1016 440.1348 L 360.4844 440.1226 L 360.4727 439.791 360.4609 439.458 360.4492 439.1235 C 360.0605 439.1357 L F 360.1436 441.1396 m 360.1846 442.1387 L 360.5547 442.125 L 360.543 441.792 360.5313 441.4624 360.5195 441.126 C 360.1436 441.1396 L F 360.2256 443.1465 m 360.2666 444.145 L 360.625 444.1323 L 360.6133 443.8013 360.6016 443.4673 360.5898 443.1333 C 360.2256 443.1465 L F 360.3086 445.1528 m 360.3496 446.1514 L 360.6943 446.1392 L 360.6826 445.8076 360.6719 445.4746 360.6602 445.1401 C 360.3086 445.1528 L F 360.3906 447.1592 m 360.4326 448.1582 L 360.7637 448.146 L 360.752 447.8149 360.7412 447.4814 360.7295 447.147 C 360.3906 447.1592 L F 360.4736 449.1748 m 360.5156 450.1768 L 360.832 450.1665 L 360.8213 449.8335 360.8096 449.5 360.7988 449.1631 C 360.4736 449.1748 L F 360.5566 451.1846 m 360.5986 452.1919 L 360.9004 452.1826 L 360.8896 451.8481 360.8779 451.5137 360.8672 451.1748 C 360.5566 451.1846 L F 360.6396 453.1997 m 360.6816 454.2075 L 360.9678 454.1987 L 360.957 453.8643 360.9463 453.5298 360.9346 453.1904 C 360.6396 453.1997 L F 360.7227 455.2153 m 360.7646 456.2197 L 361.0352 456.21 L 361.0234 455.877 361.0127 455.5454 361.002 455.2065 C 360.7227 455.2153 L F 360.8057 457.231 m 360.8477 458.2388 L 361.1006 458.2305 L 361.0898 457.8975 361.0791 457.562 361.0684 457.2227 C 360.8057 457.231 L F 360.8887 459.2461 m 360.9307 460.2539 L 361.166 460.2466 L 361.1553 459.9146 361.1445 459.5771 361.1338 459.2383 C 360.8887 459.2461 L F 360.9717 461.2617 m 361.0137 462.2783 L 361.2305 462.2715 L 361.2197 461.938 361.209 461.5962 361.1982 461.2544 C 360.9717 461.2617 L F 361.0547 463.2769 m 361.0967 464.2939 L 361.293 464.2876 L 361.2822 463.9551 361.2725 463.6123 361.2617 463.2705 C 361.0547 463.2769 L F 361.1387 465.3013 m 361.1797 466.3184 L 361.3545 466.3125 L 361.3447 465.9795 361.334 465.6387 361.3242 465.2954 C 361.1387 465.3013 L F 361.2227 467.3477 m 361.2646 468.3696 L 361.416 468.3647 L 361.4063 468.0317 361.3955 467.6885 361.3857 467.3428 C 361.2227 467.3477 L F 361.3066 469.3809 m 361.3486 470.4063 L 361.4736 470.4028 L 361.4648 470.0688 361.4551 469.7271 361.4453 469.377 C 361.3066 469.3809 L F 361.3906 471.4321 m 361.4326 472.4575 L 361.5303 472.4551 L 361.5215 472.1221 361.5117 471.7822 361.502 471.4292 C 361.3906 471.4321 L F 361.4756 473.4922 m 361.5186 474.5308 L 361.582 474.5293 L 361.5742 474.1973 361.5664 473.8511 361.5566 473.4902 C 361.4756 473.4922 L F 361.5605 475.5654 m 361.6035 476.6045 L 361.6279 476.604 L 361.6221 476.2803 361.6143 475.9341 361.6064 475.5645 C 361.5605 475.5654 L F *U *u 0 0 0 Xa 353.709 309.0059 m 353.7344 309.3779 L 354.3027 309.0059 L 354.5713 309.4209 L 354.3027 309.0059 L 354.5732 309.4199 L 354.6104 309.4785 L 355.7344 309.4023 L 355.6982 308.8623 L 353.709 309.0059 L F 353.8105 310.5176 m 353.8076 310.5195 L 353.8711 311.499 L 355.8691 311.373 L 355.8057 310.3828 L 353.8105 310.5176 L F 353.9336 312.4805 m 353.9971 313.4697 L 355.9951 313.3438 L 355.9316 312.3633 L 353.9336 312.4805 L F 354.0508 314.4512 m 354.1143 315.4414 L 356.1123 315.3154 L 356.0488 314.334 L 354.0508 314.4512 L F 354.1768 316.4219 m 354.2314 317.4121 L 356.2285 317.2949 L 356.166 316.3047 L 354.1768 316.4219 L F 354.2852 318.4023 m 354.3477 319.3916 L 356.3369 319.2754 L 356.2832 318.2852 L 354.2852 318.4023 L F 354.4023 320.373 m 354.4561 321.3721 L 356.4541 321.2549 L 356.4004 320.2646 L 354.4023 320.373 L F 354.5098 322.3525 m 354.5645 323.3428 L 356.5615 323.2354 L 356.5078 322.2451 L 354.5098 322.3525 L F 354.6182 324.333 m 354.6719 325.3232 L 356.6699 325.2148 L 356.6162 324.2246 L 354.6182 324.333 L F 354.7256 326.3223 m 354.7715 327.3213 L 356.7686 327.2129 L 356.7236 326.2227 L 354.7256 326.3223 L F 354.8252 328.3105 m 354.8789 329.3008 L 356.877 329.2021 L 356.8232 328.2031 L 354.8252 328.3105 L F 354.9326 330.291 m 354.9775 331.29 L 356.9756 331.1816 L 356.9219 330.1924 L 354.9326 330.291 L F 355.0322 332.2803 m 355.0771 333.2695 L 357.0752 333.1709 L 357.0303 332.1807 L 355.0322 332.2803 L F 355.1309 334.2686 m 355.1758 335.2588 L 357.1738 335.1602 L 357.1289 334.1699 L 355.1309 334.2686 L F 355.2305 336.249 m 355.2754 337.2568 L 357.2734 337.1582 L 357.2275 336.1592 L 355.2305 336.249 L F 355.3291 338.2471 m 355.374 339.2461 L 357.3721 339.1475 L 357.3184 338.1484 L 355.3291 338.2471 L F 355.4189 340.2363 m 355.4639 341.2354 L 357.4619 341.1357 L 357.417 340.1465 L 355.4189 340.2363 L F 355.5176 342.2246 m 355.5625 343.2236 L 357.5605 343.125 L 357.5156 342.1348 L 355.5176 342.2246 L F 355.6084 344.2139 m 355.6533 345.2129 L 357.6514 345.1143 L 357.6064 344.124 L 355.6084 344.2139 L F 355.6982 346.2031 m 355.752 347.2021 L 357.75 347.1025 L 357.6963 346.1133 L 355.6982 346.2031 L F 355.7969 348.2012 m 355.8418 349.2002 L 357.8398 349.1104 L 357.7949 348.1113 L 355.7969 348.2012 L F 355.8867 350.1992 m 355.9316 351.1895 L 357.9297 351.0986 L 357.8848 350.1094 L 355.8867 350.1992 L F 355.9766 352.1875 m 356.0225 353.1777 L 358.0195 353.0879 L 357.9746 352.0977 L 355.9766 352.1875 L F 356.0674 354.1768 m 356.1123 355.1758 L 358.1104 355.0859 L 358.0654 354.0869 L 356.0674 354.1768 L F 356.1572 356.166 m 356.2021 357.165 L 358.2002 357.0752 L 358.1553 356.0762 L 356.1572 356.166 L F 356.2471 358.1641 m 356.292 359.1543 L 358.29 359.0645 L 358.2451 358.0742 L 356.2471 358.1641 L F 356.3369 360.1533 m 356.373 361.1523 L 358.3711 361.0615 L 358.335 360.0625 L 356.3369 360.1533 L F 356.418 362.1514 m 356.4629 363.1504 L 358.4609 363.0596 L 358.416 362.0605 L 356.418 362.1514 L F 356.5078 364.1494 m 356.5527 365.1484 L 358.5508 365.0576 L 358.5059 364.0586 L 356.5078 364.1494 L F 356.5977 366.1475 m 356.6338 367.1367 L 358.6318 367.0469 L 358.5957 366.0566 L 356.5977 366.1475 L F 356.6787 368.1357 m 356.7236 369.126 L 358.7217 369.0449 L 358.6768 368.0547 L 356.6787 368.1357 L F 356.7686 370.125 m 356.8047 371.124 L 358.8027 371.043 L 358.7666 370.0439 L 356.7686 370.125 L F 356.8496 372.123 m 356.8945 373.1221 L 358.8926 373.041 L 358.8477 372.042 L 356.8496 372.123 L F 356.9307 374.1211 m 356.9756 375.1201 L 358.9736 375.0391 L 358.9287 374.04 L 356.9307 374.1211 L F 357.0215 376.1191 m 357.0566 377.1182 L 359.0547 377.0371 L 359.0186 376.0381 L 357.0215 376.1191 L F 357.1016 378.1172 m 357.1465 379.1016 L 357.1475 379.1055 357.1494 379.1113 357.1514 379.1162 C 359.1445 379.0352 L 359.0996 378.0361 L 357.1016 378.1172 L F 357.458 380.1035 m 357.5557 380.4326 357.6504 380.7617 357.7422 381.0928 C 359.2256 381.0332 L 359.1807 380.0342 L 357.458 380.1035 L F 358.0039 382.083 m 358.0879 382.4111 358.168 382.7432 358.2451 383.0742 C 359.3066 383.0313 L 359.2617 382.0322 L 358.0039 382.083 L F 358.4648 384.0654 m 358.5342 384.3945 358.6006 384.7266 358.6631 385.0586 C 359.3877 385.0293 L 359.3428 384.0303 L 358.4648 384.0654 L F 358.8408 386.0518 m 358.8975 386.3877 358.9521 386.7256 359.002 387.0635 C 359.4688 387.0449 L 359.4326 386.0283 L 358.8408 386.0518 L F 359.1377 388.0596 m 359.1797 388.3916 359.2188 388.7207 359.2539 389.0547 C 359.5498 389.043 L 359.5137 388.0439 L 359.1377 388.0596 L F 359.3516 390.0518 m 359.3799 390.3799 359.4043 390.71 359.4268 391.04 C 359.6309 391.0322 L 359.5947 390.042 L 359.3516 390.0518 L F 359.4844 392.0479 m 359.5 392.376 359.5117 392.707 359.5205 393.0381 C 359.7119 393.0303 L 359.6758 392.04 L 359.4844 392.0479 L F 359.5381 394.0371 m 359.5391 394.1729 359.541 394.3066 359.541 394.4434 C 359.541 394.6416 359.54 394.8408 359.5371 395.0386 C 359.793 395.0278 L 359.748 394.0293 L 359.5381 394.0371 L F 359.5146 396.0396 m 359.5049 396.3745 359.4912 396.709 359.4746 397.042 C 359.874 397.0259 L 359.8291 396.0269 L 359.5146 396.0396 L F 359.4131 398.0449 m 359.3896 398.3799 359.3623 398.7134 359.332 399.0459 C 359.9463 399.0239 L 359.9102 398.0249 L 359.4131 398.0449 L F 359.2305 400.0503 m 359.1934 400.3892 359.1523 400.7227 359.1074 401.0591 C 360.0273 401.022 L 359.9912 400.0229 L 359.2305 400.0503 L F 358.9648 402.0654 m 358.9131 402.4014 358.8584 402.7393 358.8008 403.0728 C 360.1084 403.02 L 360.0625 402.021 L 358.9648 402.0654 L F 358.6143 404.0811 m 358.5488 404.4185 358.4795 404.7554 358.4072 405.0898 C 360.1797 405.0181 L 360.1436 404.019 L 358.6143 404.0811 L F 358.2266 406.0981 m 358.2627 407.0972 L 360.2607 407.0249 L 360.2246 406.0171 L 358.2266 406.0981 L F 358.2988 408.0962 m 358.3438 409.104 L 360.3418 409.0229 L 360.2969 408.0239 L 358.2988 408.0962 L F 358.3799 410.0938 m 358.416 411.1021 L 360.4141 411.021 L 360.3779 410.022 L 358.3799 410.0938 L F 358.4521 412.1011 m 358.4971 413.1001 L 360.4951 413.0278 L 360.4502 412.02 L 358.4521 412.1011 L F 358.5332 414.1079 m 358.5693 415.1069 L 360.5674 415.0259 L 360.5313 414.0269 L 358.5332 414.1079 L F 358.6055 416.106 m 358.6406 417.105 L 360.6484 417.0332 L 360.6025 416.0342 L 358.6055 416.106 L F 358.6855 418.104 m 358.7217 419.103 L 360.7197 419.0308 L 360.6836 418.0322 L 358.6855 418.104 L F 358.7578 420.1021 m 358.7939 421.1099 L 360.792 421.0381 L 360.7559 420.0298 L 358.7578 420.1021 L F 358.8301 422.1089 m 358.8662 423.1079 L 360.8643 423.0361 L 360.8281 422.0371 L 358.8301 422.1089 L F 358.9111 424.1162 m 358.9473 425.1152 L 360.9453 425.043 L 360.9092 424.0352 L 358.9111 424.1162 L F 358.9834 426.1138 m 359.0186 427.1221 L 361.0166 427.0498 L 360.9814 426.042 L 358.9834 426.1138 L F 359.0547 428.1299 m 359.0908 429.1289 L 361.0889 429.0571 L 361.0527 428.0488 L 359.0547 428.1299 L F 359.127 430.1279 m 359.1631 431.127 L 361.1611 431.0552 L 361.125 430.0562 L 359.127 430.1279 L F 359.1992 432.1348 m 359.2354 433.1338 L 361.2334 433.062 L 361.1973 432.063 L 359.1992 432.1348 L F 359.2715 434.1328 m 359.3066 435.1411 L 361.3047 435.0688 L 361.2686 434.061 L 359.2715 434.1328 L F 359.3428 436.1401 m 359.3789 437.1392 L 361.377 437.0669 L 361.3408 436.0679 L 359.3428 436.1401 L F 359.415 438.147 m 359.4512 439.1548 L 361.4492 439.0918 L 361.4131 438.0752 L 359.415 438.147 L F 359.4873 440.1538 m 359.5234 441.1621 L 361.5215 441.0898 L 361.4854 440.0908 L 359.4873 440.1538 L F 359.5586 442.1611 m 359.5947 443.1689 L 361.5928 443.0972 L 361.5566 442.0889 L 359.5586 442.1611 L F 359.6309 444.168 m 359.667 445.1758 L 361.665 445.104 L 361.6289 444.0962 L 359.6309 444.168 L F 359.6943 446.1748 m 359.7305 447.1831 L 361.7275 447.1108 L 361.7012 446.103 L 359.6943 446.1748 L F 359.7656 448.1821 m 359.8018 449.1992 L 361.7998 449.127 L 361.7637 448.1099 L 359.7656 448.1821 L F 359.8379 450.1982 m 359.874 451.2061 L 361.8721 451.1431 L 361.8359 450.1348 L 359.8379 450.1982 L F 359.9014 452.2139 m 359.9365 453.2222 L 361.9346 453.1592 L 361.8994 452.1509 L 359.9014 452.2139 L F 359.9727 454.23 m 360.0088 455.2378 L 362.0068 455.1748 L 361.9707 454.167 L 359.9727 454.23 L F 360.0361 456.2461 m 360.0723 457.2539 L 362.0703 457.1909 L 362.0342 456.1738 L 360.0361 456.2461 L F 360.1084 458.2622 m 360.1348 459.27 L 362.1328 459.207 L 362.1064 458.1992 L 360.1084 458.2622 L F 360.1709 460.2778 m 360.1982 461.2861 L 362.1963 461.2231 L 362.1689 460.2148 L 360.1709 460.2778 L F 360.2344 462.3027 m 360.2607 463.3018 L 362.2676 463.2388 L 362.2324 462.2402 L 360.2344 462.3027 L F 360.2969 464.3188 m 360.3242 465.3271 L 362.3223 465.2642 L 362.2949 464.2559 L 360.2969 464.3188 L F 360.3604 466.3438 m 360.3867 467.3701 L 362.3848 467.3159 L 362.3584 466.2808 L 360.3604 466.3438 L F 360.4229 468.396 m 360.4502 469.4038 L 362.4482 469.3501 L 362.4209 468.333 L 360.4229 468.396 L F 360.4766 470.4302 m 360.5039 471.4561 L 362.502 471.4019 L 362.4746 470.376 L 360.4766 470.4302 L F 360.5313 472.4819 m 360.5576 473.5171 L 362.5557 473.4629 L 362.5293 472.4277 L 360.5313 472.4819 L F 360.585 474.5518 m 360.6123 475.5869 L 362.6104 475.542 L 362.583 474.5068 L 360.585 474.5518 L F 361.0049 476.6152 m 361.1611 476.7031 L 360.6748 477.5762 L 360.6465 477.5596 L 360.6484 477.6748 L 362.6465 477.6392 L 362.6279 476.5859 L 361.0049 476.6152 L F *U *u 218.7539 397.7642 m 219.3198 398.082 L 219.3076 397.8135 L 219.0332 397.395 L 219.5435 397.0615 L 219.2402 396.8911 L 218.7539 397.7642 L F 219.6982 398.2949 m 229.7549 403.9502 L 229.7749 403.5063 L 229.7734 403.5063 229.7715 403.5059 229.77 403.5059 C 229.7754 403.4946 L 229.7969 403.0107 L 229.8618 403.0137 229.9268 403.0166 229.9927 403.02 C 230.0225 402.9546 L 221.5728 398.2031 L 219.6982 398.2949 L F 360.6748 477.5762 m 361.1611 476.7031 L 295.8809 439.9917 L 291.7192 438.3828 287.8354 436.1841 284.3286 433.4946 C 232.1772 404.1665 L 231.3887 404.1035 230.6045 404.0435 229.8682 404.0146 C 360.6748 477.5762 L F *U *u 1 1 1 Xa 279.8008 360.7646 m 272.334 368.4658 267.4141 378.7998 266.4551 390.3057 C 287.0859 389.0459 L 289.3218 373.332 299.9136 361.2529 313.0381 361.1973 C 325.292 361.249 335.332 371.7813 338.4336 385.9688 C 354.2285 385.0371 L 353.043 382.2754 L 354.2324 383.1973 355.9385 384.0449 357.5703 384.6748 C 355.7061 375.4375 351.251 367.1865 345.0244 360.7646 C 336.6719 352.1426 325.1426 346.8154 312.4082 346.8154 C 299.6729 346.8154 288.1528 352.1426 279.8008 360.7646 C F 1 D 344.4658 376.5146 m 344.4658 374.9131 345.4375 374.6162 346.2031 374.6162 C 347.4355 374.6162 348.1113 375.5156 348.4082 375.9033 C 348.2188 376.0195 L 347.7959 375.543 347.2471 375.0479 346.5449 375.0479 C 345.8252 375.0479 345.4736 375.5879 345.4736 376.5146 C 345.4736 377.667 346.2842 379.791 347.8047 379.791 C 348.0215 379.791 348.2549 379.7275 348.2549 379.5479 C 348.2549 379.3408 348.0752 379.2686 348.0752 378.9629 C 348.0752 378.6836 348.2549 378.5127 348.543 378.5127 C 348.8398 378.5127 349.1006 378.7285 349.1006 379.0713 C 349.1006 379.4404 348.8037 380.043 347.8232 380.043 C 346.0859 380.043 344.4658 378.207 344.4658 376.5146 C F 270.6929 377.7393 m 270.27 377.7119 270.27 377.2529 270.27 377.2168 C 270.3418 376.668 270.8188 376.5146 271.188 376.5146 C 272.5562 376.5146 273.2129 378.4414 273.5459 379.9082 C 274.3828 383.751 L 275.6611 383.751 L 275.7329 384.1289 L 274.4731 384.1289 L 274.5718 384.7412 274.9229 386.8652 275.8857 386.8652 C 276.0391 386.8652 276.1563 386.8203 276.1563 386.7207 C 276.1563 386.5947 276.0391 386.5947 276.0391 386.3252 C 276.0391 386.1992 276.1108 385.875 276.4888 385.875 C 276.7588 385.875 276.9658 386.1094 276.9658 386.3516 C 276.9658 386.5947 276.7769 387.1348 275.9312 387.1348 C 274.4551 387.1348 273.8701 385.1553 273.564 384.1289 C 272.4839 384.1289 L 272.4028 383.751 L 273.4648 383.751 L 272.4302 378.7109 L 272.3398 378.2246 272.0342 376.7666 271.2778 376.7666 C 271.1431 376.7666 271.062 376.8574 271.062 376.9561 C 271.062 377.0908 271.1611 377.0908 271.1611 377.2891 C 271.1611 377.5869 270.8716 377.7393 270.707 377.7393 C 270.7021 377.7393 270.6973 377.7393 270.6929 377.7393 C F 0 D 353.4395 388.917 m 354.2871 386.0352 L 338.6367 386.959 L 338.9189 388.4131 339.1279 389.9043 339.2598 391.4229 C 358.2178 390.4922 L 358.2725 391.4912 L 339.335 392.4209 L 339.3945 393.3525 339.4258 394.2939 339.4258 395.2441 C 339.417 413.8652 327.8428 429.228 313.0381 429.291 C 313.0381 428.292 L 313.0381 429.291 L 298.2329 429.228 286.6499 413.8652 286.6499 395.2441 C 286.6499 395.1655 286.6509 395.0859 286.6514 395.0073 C 266.3081 396.0063 L 266.7002 408.542 271.7813 419.8506 279.8008 428.1211 C 288.1528 436.7432 299.6729 442.0708 312.4082 442.0708 C 312.4082 442.5659 L 312.4082 442.0708 L 325.1426 442.0708 336.6719 436.7432 345.0244 428.1211 C 353.376 419.5078 358.542 407.6011 358.542 394.4434 C 358.542 391.5352 358.2891 388.6875 357.8057 385.9238 C 356.2109 386.7539 354.5439 387.832 353.4395 388.917 C F 266.3813 391.3135 m 266.3164 392.3477 266.2832 393.3916 266.2832 394.4434 C 266.2832 394.6309 266.2842 394.8184 266.2866 395.0059 C 286.6675 394.0049 L 286.7041 392.6699 286.8008 391.3506 286.9541 390.0566 C 266.3813 391.3135 L F *U *u 0 0 0 Xa 312.4082 345.8164 m 312.4082 345.8164 L F 293.6792 349.8115 m 281.373 357.8535 L 272.4395 365.9277 266.4888 377.4307 265.4482 390.3672 C 266.4551 390.3057 L 267.4141 378.7998 272.334 368.4658 279.8008 360.7646 C 288.1528 352.1426 299.6729 346.8154 312.4082 346.8154 C 325.1426 346.8154 336.6719 352.1426 345.0244 360.7646 C 351.251 367.1865 355.7061 375.4375 357.5703 384.6748 C 357.9414 384.8174 358.3086 384.9492 358.665 385.0684 C 354.4316 362.7061 335.3428 345.8242 312.4082 345.8164 C 312.4082 346.3203 L 312.4082 345.8164 L 305.751 345.8184 299.4194 347.2432 293.6792 349.8115 C F 357.8057 385.9238 m 358.2891 388.6875 358.542 391.5352 358.542 394.4434 C 358.542 407.6011 353.376 419.5078 345.0244 428.1211 C 336.6719 436.7432 325.1426 442.0708 312.4082 442.0708 C 312.4082 443.0698 L 338.4541 443.061 359.541 421.29 359.541 394.4434 C 359.541 391.376 359.2646 388.373 358.7383 385.4629 C 358.4336 385.6055 358.1211 385.7598 357.8057 385.9238 C F 312.4082 442.5659 m 312.4082 443.0698 L 312.4082 442.5659 L F 265.3765 391.375 m 265.3154 392.3896 265.2842 393.4121 265.2842 394.4434 C 265.2842 394.6475 265.2852 394.8506 265.2876 395.0552 C 266.2866 395.0059 L 266.2842 394.8184 266.2832 394.6309 266.2832 394.4434 C 266.2832 393.3916 266.3164 392.3477 266.3813 391.3135 C 265.3765 391.375 L F 265.3101 396.0552 m 266.1338 422.1567 286.894 443.061 312.4082 443.0698 C 312.4082 442.0708 L 299.6729 442.0708 288.1528 436.7432 279.8008 428.1211 C 271.7813 419.8506 266.7002 408.542 266.3081 396.0063 C 265.3101 396.0552 L F *U *u 1 1 1 Xa 295.875 372.4834 m 292.5083 376.8652 290.0972 382.5479 289.124 388.9209 C 311.7295 387.54 L 310.5361 384.7773 L 312.1475 386.0186 314.6846 387.126 316.71 387.7383 C 314.7754 388.5928 312.3896 390.0059 310.9414 391.4277 C 311.7891 388.5391 L 288.9824 389.9326 L 288.8169 391.2324 288.7114 392.5586 288.6689 393.9072 C 337.2646 391.5205 L 337.1309 390.0049 336.916 388.5215 336.627 387.0781 C 321.7646 387.9551 L 322.9473 390.7168 L 321.3447 389.4746 318.8066 388.3682 316.7822 387.7471 C 318.7168 386.8916 321.1113 385.4883 322.5508 384.0664 C 321.7002 386.957 L 336.416 386.0879 L 335.2305 380.8643 333.0605 376.2041 330.2012 372.4834 C 325.7461 366.6963 319.6797 363.2041 313.0381 363.1953 C 306.3872 363.2041 300.3301 366.6963 295.875 372.4834 C F 1 D 300.8882 380.79 m 301.5898 380.79 302.2378 381.0332 302.7148 381.4473 C 303.1919 381.8613 303.5068 382.4639 303.5068 383.1299 C 303.5068 383.7959 303.1919 384.3994 302.7148 384.8125 C 302.2378 385.2266 301.5898 385.4785 300.8882 385.4785 C 300.8882 384.9746 L 300.8882 385.4785 L 300.186 385.4785 299.5469 385.2266 299.0698 384.8125 C 298.5928 384.3994 298.2778 383.7959 298.2778 383.1299 C 298.2778 382.4639 298.5928 381.8613 299.0698 381.4473 C 299.5469 381.0332 300.186 380.79 300.8882 380.79 C 300.8882 380.79 L F 327.0693 380.9521 m 327.7715 380.9521 328.4102 381.1953 328.8867 381.6094 C 329.3643 382.0234 329.6787 382.626 329.6787 383.292 C 329.6787 383.958 329.3643 384.5605 328.8867 384.9746 C 328.4102 385.3887 327.7715 385.6406 327.0693 385.6406 C 327.0693 385.1367 L 327.0693 385.6406 L 326.3672 385.6406 325.7188 385.3887 325.2422 384.9746 C 324.7646 384.5605 324.4502 383.958 324.4502 383.292 C 324.4502 382.626 324.7646 382.0234 325.2422 381.6094 C 325.7188 381.1953 326.3672 380.9521 327.0693 380.9521 C 327.0693 380.9521 L F 0 D 288.6494 394.9092 m 288.6489 395.0205 288.6479 395.1323 288.6479 395.2441 C 288.6479 404.1631 291.4292 412.2178 295.875 418.0049 C 300.3301 423.792 306.3872 427.293 313.0381 427.293 C 313.0381 428.292 L 313.0381 427.293 L 319.6797 427.293 325.7461 423.792 330.2012 418.0049 C 334.6475 412.2178 337.4277 404.1631 337.4277 395.2441 C 337.4277 394.3252 337.3984 393.417 337.3398 392.5186 C 288.6494 394.9092 L F 1 D 321.0303 398.5918 m 322.335 398.646 323.1904 399.8159 323.8291 401.3999 C 324.4502 403.02 324.8193 405.1982 324.8193 407.5918 C 324.8193 409.9951 324.4502 412.1729 323.8291 413.793 C 323.1904 415.377 322.335 416.5469 321.0303 416.6011 C 321.0303 416.0972 L 321.0303 416.6011 L 319.7246 416.5469 318.8701 415.377 318.2402 413.793 C 317.6104 412.1729 317.2412 409.9951 317.2412 407.5918 C 317.2412 405.1982 317.6104 403.02 318.2402 401.3999 C 318.8701 399.8159 319.7246 398.646 321.0303 398.5918 C 321.0303 398.5918 L F 305.0459 398.5918 m 306.3511 398.6372 307.2061 399.8159 307.8359 401.3999 C 308.4658 403.02 308.835 405.1982 308.835 407.5918 C 308.835 409.9951 308.4658 412.1729 307.8359 413.7842 C 307.2061 415.377 306.3511 416.5469 305.0459 416.6011 C 305.0459 416.0972 L 305.0459 416.6011 L 303.7412 416.5469 302.8857 415.377 302.2471 413.7842 C 301.626 412.1729 301.2568 409.9951 301.2568 407.5918 C 301.2568 405.1982 301.626 403.02 302.2471 401.3999 C 302.8857 399.8159 303.7412 398.6372 305.0459 398.5918 C 305.0459 398.5918 L F *U *u 0 D 0 0 0 Xa 287.0859 389.0459 m 289.124 388.9209 L 290.0972 382.5479 292.5083 376.8652 295.875 372.4834 C 300.3301 366.6963 306.3872 363.2041 313.0381 363.1953 C 319.6797 363.2041 325.7461 366.6963 330.2012 372.4834 C 333.0605 376.2041 335.2305 380.8643 336.416 386.0879 C 338.4336 385.9688 L 335.332 371.7813 325.292 361.249 313.0381 361.1973 C 313.0381 362.1963 L 313.0381 361.1973 L 299.9136 361.2529 289.3218 373.332 287.0859 389.0459 C F 336.627 387.0781 m 336.916 388.5215 337.1309 390.0049 337.2646 391.5205 C 339.2598 391.4229 L 339.1279 389.9043 338.9189 388.4131 338.6367 386.959 C 336.627 387.0781 L F 286.9541 390.0566 m 286.8008 391.3506 286.7041 392.6699 286.6675 394.0049 C 288.6689 393.9072 L 288.7114 392.5586 288.8169 391.2324 288.9824 389.9326 C 286.9541 390.0566 L F 337.3398 392.5186 m 337.3984 393.417 337.4277 394.3252 337.4277 395.2441 C 337.4277 404.1631 334.6475 412.2178 330.2012 418.0049 C 325.7461 423.792 319.6797 427.293 313.0381 427.293 C 313.0381 429.291 L 327.8428 429.228 339.417 413.8652 339.4258 395.2441 C 339.4258 394.2939 339.3945 393.3525 339.335 392.4209 C 337.3398 392.5186 L F 313.0381 428.292 m 313.0381 429.291 L 313.0381 428.292 L F 286.6514 395.0073 m 286.6509 395.0859 286.6499 395.1655 286.6499 395.2441 C 286.6499 413.8652 298.2329 429.228 313.0381 429.291 C 313.0381 427.293 L 306.3872 427.293 300.3301 423.792 295.875 418.0049 C 291.4292 412.2178 288.6479 404.1631 288.6479 395.2441 C 288.6479 395.1323 288.6489 395.0205 288.6494 394.9092 C 286.6514 395.0073 L F *U 0.251 0.251 0.251 Xa 321.0303 399.5908 m 320.5166 399.5459 319.7246 400.2749 319.167 401.769 C 318.5996 403.2271 318.2402 405.3062 318.2402 407.5918 C 318.2402 409.8872 318.5996 411.9658 319.167 413.4238 C 319.7246 414.918 320.5166 415.647 321.0303 415.6021 C 321.0303 416.0972 L 321.0303 415.6021 L 321.543 415.647 322.335 414.918 322.8926 413.4238 C 323.46 411.9658 323.8203 409.8872 323.8203 407.5918 C 323.8203 405.3062 323.46 403.2271 322.8926 401.769 C 322.3516 400.3184 321.5889 399.5889 321.0752 399.5889 C 321.0605 399.5889 321.0449 399.5898 321.0303 399.5908 C F *u 1 1 1 Xa 318.2402 401.3999 m 317.6104 403.02 317.2412 405.1982 317.2412 407.5918 C 317.2412 409.9951 317.6104 412.1729 318.2402 413.793 C 318.8701 415.377 319.7246 416.5469 321.0303 416.6011 C 321.0303 416.0972 L 319.2119 416.0972 317.7363 412.29 317.7363 407.5918 C 317.7363 402.9028 319.2119 399.0962 321.0303 399.0962 C 322.8477 399.0962 324.3242 402.9028 324.3242 407.5918 C 324.3242 412.29 322.8477 416.0972 321.0303 416.0972 C 321.0303 416.6011 L 321.0303 416.0972 L 321.0303 416.6011 L 322.335 416.5469 323.1904 415.377 323.8291 413.793 C 324.4502 412.1729 324.8193 409.9951 324.8193 407.5918 C 324.8193 405.1982 324.4502 403.02 323.8291 401.3999 C 323.1904 399.8159 322.335 398.646 321.0303 398.5918 C 321.0303 399.0962 L 321.0303 398.5918 L 319.7246 398.646 318.8701 399.8159 318.2402 401.3999 C F 324.8193 407.5918 m 324.8193 407.5918 L F *U 0.251 0.251 0.251 Xa 317.7363 407.5918 m 317.7363 412.29 319.2119 416.0972 321.0303 416.0972 C 321.0303 415.6021 L 320.5166 415.647 319.7246 414.918 319.167 413.4238 C 318.5996 411.9658 318.2402 409.8872 318.2402 407.5918 C 318.2402 405.3062 318.5996 403.2271 319.167 401.769 C 319.7246 400.2749 320.5166 399.5459 321.0303 399.5908 C 321.543 399.5459 322.335 400.2749 322.8926 401.769 C 323.46 403.2271 323.8203 405.3062 323.8203 407.5918 C 323.8203 409.8872 323.46 411.9658 322.8926 413.4238 C 322.335 414.918 321.543 415.647 321.0303 415.6021 C 321.0303 416.0972 L 322.8477 416.0972 324.3242 412.29 324.3242 407.5918 C 324.3242 402.9028 322.8477 399.0962 321.0303 399.0962 C 319.2119 399.0962 317.7363 402.9028 317.7363 407.5918 C F 305.0459 399.5908 m 304.5332 399.5459 303.7412 400.2749 303.1831 401.7598 C 302.6162 403.2271 302.2559 405.2969 302.2559 407.5918 C 302.2559 409.8872 302.6162 411.9658 303.1831 413.4238 C 303.7412 414.918 304.5332 415.647 305.0459 415.6021 C 305.0459 416.0972 L 305.0459 415.6021 L 305.5591 415.647 306.3511 414.918 306.9092 413.4238 C 307.4756 411.9658 307.8359 409.8872 307.8359 407.5918 C 307.8359 405.2969 307.4756 403.2271 306.9092 401.7598 C 306.3672 400.3184 305.605 399.5889 305.0913 399.5889 C 305.0762 399.5889 305.061 399.5898 305.0459 399.5908 C F *u 1 1 1 Xa 305.0459 398.5918 m 305.0459 398.5918 L F 302.2471 401.3999 m 301.626 403.02 301.2568 405.1982 301.2568 407.5918 C 301.2568 409.9951 301.626 412.1729 302.2471 413.7842 C 302.8857 415.377 303.7412 416.5469 305.0459 416.6011 C 305.0459 416.0972 L 303.228 416.0972 301.752 412.29 301.752 407.5918 C 301.752 402.9028 303.228 399.0962 305.0459 399.0962 C 306.8638 399.0962 308.3311 402.9028 308.3311 407.5918 C 308.3311 412.29 306.8638 416.0972 305.0459 416.0972 C 305.0459 416.6011 L 305.0459 416.0972 L 305.0459 416.6011 L 306.3511 416.5469 307.2061 415.377 307.8359 413.7842 C 308.4658 412.1729 308.835 409.9951 308.835 407.5918 C 308.835 405.1982 308.4658 403.02 307.8359 401.3999 C 307.2061 399.8159 306.3511 398.6372 305.0459 398.5918 C 305.0459 399.0962 L 305.0459 398.5918 L 303.7412 398.6372 302.8857 399.8159 302.2471 401.3999 C F 308.835 407.5918 m 308.835 407.5918 L F *U 0.251 0.251 0.251 Xa 301.752 407.5918 m 301.752 412.29 303.228 416.0972 305.0459 416.0972 C 305.0459 415.6021 L 304.5332 415.647 303.7412 414.918 303.1831 413.4238 C 302.6162 411.9658 302.2559 409.8872 302.2559 407.5918 C 302.2559 405.2969 302.6162 403.2271 303.1831 401.7598 C 303.7412 400.2749 304.5332 399.5459 305.0459 399.5908 C 305.5591 399.5459 306.3511 400.2749 306.9092 401.7598 C 307.4756 403.2271 307.8359 405.2969 307.8359 407.5918 C 307.8359 409.8872 307.4756 411.9658 306.9092 413.4238 C 306.3511 414.918 305.5591 415.647 305.0459 415.6021 C 305.0459 416.0972 L 306.8638 416.0972 308.3311 412.29 308.3311 407.5918 C 308.3311 402.9028 306.8638 399.0962 305.0459 399.0962 C 303.228 399.0962 301.752 402.9028 301.752 407.5918 C F 299.7271 382.2031 m 299.439 382.4551 299.2769 382.7793 299.2769 383.1299 C 299.2769 383.4814 299.439 383.8047 299.7271 384.0566 C 300.0151 384.3086 300.4292 384.4805 300.8882 384.4805 C 300.8882 384.9746 L 300.8882 384.4805 L 301.356 384.4805 301.77 384.3086 302.0581 384.0566 C 302.3462 383.8047 302.5078 383.4814 302.5078 383.1299 C 302.5078 382.7793 302.3462 382.4551 302.0581 382.2031 C 301.77 381.9512 301.356 381.7891 300.8882 381.7891 C 300.4292 381.7891 300.0151 381.9512 299.7271 382.2031 C F 1 1 1 Xa 299.0698 381.4473 m 298.5928 381.8613 298.2778 382.4639 298.2778 383.1299 C 298.2778 383.7959 298.5928 384.3994 299.0698 384.8125 C 299.5469 385.2266 300.186 385.4785 300.8882 385.4785 C 300.8882 384.9746 L 299.7178 384.9746 298.7729 384.1475 298.7729 383.1299 C 298.7729 382.1133 299.7178 381.2852 300.8882 381.2852 C 302.0581 381.2852 303.0029 382.1133 303.0029 383.1299 C 303.0029 384.1475 302.0581 384.9746 300.8882 384.9746 C 300.8882 385.4785 L 300.8882 384.9746 L 300.8882 385.4785 L 301.5898 385.4785 302.2378 385.2266 302.7148 384.8125 C 303.1919 384.3994 303.5068 383.7959 303.5068 383.1299 C 303.5068 382.4639 303.1919 381.8613 302.7148 381.4473 C 302.2378 381.0332 301.5898 380.79 300.8882 380.79 C 300.8882 381.2852 L 300.8882 380.79 L 300.186 380.79 299.5469 381.0332 299.0698 381.4473 C F 0.251 0.251 0.251 Xa 298.7729 383.1299 m 298.7729 384.1475 299.7178 384.9746 300.8882 384.9746 C 300.8882 384.4805 L 300.4292 384.4805 300.0151 384.3086 299.7271 384.0566 C 299.439 383.8047 299.2769 383.4814 299.2769 383.1299 C 299.2769 382.7793 299.439 382.4551 299.7271 382.2031 C 300.0151 381.9512 300.4292 381.7891 300.8882 381.7891 C 301.356 381.7891 301.77 381.9512 302.0581 382.2031 C 302.3462 382.4551 302.5078 382.7793 302.5078 383.1299 C 302.5078 383.4814 302.3462 383.8047 302.0581 384.0566 C 301.77 384.3086 301.356 384.4805 300.8882 384.4805 C 300.8882 384.9746 L 302.0581 384.9746 303.0029 384.1475 303.0029 383.1299 C 303.0029 382.1133 302.0581 381.2852 300.8882 381.2852 C 299.7178 381.2852 298.7729 382.1133 298.7729 383.1299 C F 325.8994 382.3652 m 325.6113 382.6172 325.4492 382.9414 325.4492 383.292 C 325.4492 383.6426 325.6113 383.9668 325.8994 384.2188 C 326.1865 384.4707 326.6006 384.6416 327.0693 384.6416 C 327.0693 385.1367 L 327.0693 384.6416 L 327.5283 384.6416 327.9424 384.4707 328.2305 384.2188 C 328.5273 383.9668 328.6797 383.6426 328.6797 383.292 C 328.6797 382.9414 328.5176 382.6172 328.2305 382.3652 C 327.9424 382.1133 327.5283 381.9512 327.0693 381.9512 C 326.6006 381.9512 326.1865 382.1133 325.8994 382.3652 C F 1 1 1 Xa 325.2422 381.6094 m 324.7646 382.0234 324.4502 382.626 324.4502 383.292 C 324.4502 383.958 324.7646 384.5605 325.2422 384.9746 C 325.7188 385.3887 326.3672 385.6406 327.0693 385.6406 C 327.0693 385.1367 L 325.8994 385.1367 324.9541 384.3086 324.9541 383.292 C 324.9541 382.2754 325.8994 381.4473 327.0693 381.4473 C 328.2393 381.4473 329.1836 382.2754 329.1836 383.292 C 329.1836 384.3086 328.2393 385.1367 327.0693 385.1367 C 327.0693 385.6406 L 327.0693 385.1367 L 327.0693 385.6406 L 327.7715 385.6406 328.4102 385.3887 328.8867 384.9746 C 329.3643 384.5605 329.6787 383.958 329.6787 383.292 C 329.6787 382.626 329.3643 382.0234 328.8867 381.6094 C 328.4102 381.1953 327.7715 380.9521 327.0693 380.9521 C 327.0693 381.4473 L 327.0693 380.9521 L 326.3672 380.9521 325.7188 381.1953 325.2422 381.6094 C F 0.251 0.251 0.251 Xa 324.9541 383.292 m 324.9541 384.3086 325.8994 385.1367 327.0693 385.1367 C 327.0693 384.6416 L 326.6006 384.6416 326.1865 384.4707 325.8994 384.2188 C 325.6113 383.9668 325.4492 383.6426 325.4492 383.292 C 325.4492 382.9414 325.6113 382.6172 325.8994 382.3652 C 326.1865 382.1133 326.6006 381.9512 327.0693 381.9512 C 327.5283 381.9512 327.9424 382.1133 328.2305 382.3652 C 328.5176 382.6172 328.6797 382.9414 328.6797 383.292 C 328.6797 383.6426 328.5273 383.9668 328.2305 384.2188 C 327.9424 384.4707 327.5283 384.6416 327.0693 384.6416 C 327.0693 385.1367 L 328.2393 385.1367 329.1836 384.3086 329.1836 383.292 C 329.1836 382.2754 328.2393 381.4473 327.0693 381.4473 C 325.8994 381.4473 324.9541 382.2754 324.9541 383.292 C F *u 1 1 1 Xa 232.4424 397.6689 m 229.9927 403.02 L 232.8359 403.1602 236.4482 403.6475 237.6357 403.1548 C 237.9331 403.0381 237.9688 402.9482 237.9868 402.876 C 238.0142 402.7949 237.96 402.4888 237.6357 402.021 C 237.0142 401.1138 235.4956 399.6836 232.7876 397.6523 C 232.4424 397.6689 L F 229.77 403.5059 m 229.7715 403.5059 229.7734 403.5063 229.7749 403.5063 C 229.7754 403.4946 L 229.77 403.5059 L F *U *u 0 0 0 Xa 233.0112 396.6401 m 233.1016 396.6357 L 233.083 396.6216 233.0649 396.6079 233.0459 396.5938 C 233.0112 396.6401 L F 232.7876 397.6523 m 235.4956 399.6836 237.0142 401.1138 237.6357 402.021 C 237.96 402.4888 238.0142 402.7949 237.9868 402.876 C 237.9688 402.9482 237.9331 403.0381 237.6357 403.1548 C 236.4209 403.6592 232.668 403.1372 229.7969 403.0107 C 229.752 404.0098 L 232.5962 404.1089 236.2139 404.7119 237.9868 404.0908 C 238.437 403.9292 238.8779 403.5962 238.9678 403.0469 C 239.0488 402.5249 238.8418 402.021 238.4551 401.4541 C 237.7866 400.4966 236.4956 399.2637 234.334 397.5762 C 232.7876 397.6523 L F *U *u 248.1748 399.7891 m 250.6411 407.7632 L 251.1538 407.7632 L 248.6968 399.7891 L 248.1748 399.7891 L F 242.6758 400.0049 m 242.2441 400.2119 241.9199 400.5 241.6768 400.9048 C 241.3799 401.4448 241.146 402.2549 241.3169 403.5962 C 241.4341 404.4688 241.749 405.0991 242.5952 405.6841 C 242.9551 405.936 243.6479 406.0708 244.1431 405.981 C 244.6919 405.8911 245.1421 405.5039 245.4121 405.0449 C 245.6372 404.667 245.7988 404.1812 245.853 403.7129 C 245.8799 403.7129 L 246.627 405.855 L 247.6621 405.855 L 246.312 402.0479 L 246.4019 401.4722 246.5732 401.1392 246.7891 400.9048 C 246.915 400.7969 247.2119 400.4912 247.5811 400.8599 C 247.8242 401.1118 247.833 401.499 247.8599 401.6519 C 248.0669 401.6519 L 248.0488 400.9409 L 248.04 400.7158 247.9229 400.248 247.5991 399.9868 C 247.2842 399.7168 247.0322 399.8159 246.8159 400.0229 C 246.5371 400.293 246.3481 400.7158 246.0688 401.499 C 245.8711 401.1479 245.6099 400.3198 244.5659 399.9688 C 244.2734 399.8716 243.9702 399.79 243.6309 399.79 C 243.3438 399.79 243.0308 399.8481 242.6758 400.0049 C F 1 D 243.0269 405.1172 m 242.7388 404.7388 242.5952 404.2168 242.5142 403.5869 C 242.4331 402.9209 242.478 402.2549 242.5952 401.5801 C 242.6582 401.229 242.7749 400.8511 243.0542 400.563 C 243.3149 400.293 243.4678 400.2212 243.7832 400.2031 C 243.981 400.1851 244.251 400.293 244.5029 400.5269 C 244.7461 400.7251 245.061 401.3188 245.1958 401.6968 C 245.5469 402.687 L 245.4658 403.2808 245.3398 404.2168 245.0342 404.7212 C 244.8452 405.0361 244.5298 405.3511 244.188 405.459 C 243.998 405.5132 243.8447 405.5376 243.7168 405.5376 C 243.3774 405.5376 243.2163 405.3652 243.0269 405.1172 C F 0 D 251.73 400.0049 m 251.73 400.1489 L 253.5391 402.1289 L 254.6821 403.3799 255.3301 404.6128 255.3301 405.6211 C 255.3301 406.188 255.0688 407.2681 253.7188 407.2681 C 252.6572 407.2681 252.3062 406.4312 252.0449 405.7832 C 251.8018 405.8369 L 252.1528 407.6548 253.251 408.231 254.2861 408.231 C 255.519 408.231 256.3828 407.4121 256.3828 405.9629 C 256.3828 404.6851 255.231 403.3169 252.936 400.9229 C 255.7168 400.9229 L 256.1758 400.9229 256.3921 400.959 256.8511 401.7148 C 257.0039 401.6519 L 256.3379 400.0049 L 251.73 400.0049 L F *U *u 354.8428 309.8428 m 354.5732 309.4199 L 354.3027 309.0059 L 354.8428 309.8428 L F 226.1094 392.7715 m 228.1274 392.6475 L 354.8428 309.8428 L 354.3027 309.0059 L 226.1094 392.7715 L F 224.416 393.877 m 223.4883 394.4834 L 223.8916 395.416 L 226.4346 393.7539 L 224.416 393.877 L F 219.0332 397.395 m 219.3076 397.8135 L 219.2852 397.314 L 221.125 397.2236 L 223.1929 395.8721 L 222.8745 395.6846 222.5405 395.5029 222.1963 395.3281 C 219.0332 397.395 L F *U 219.2852 397.314 m 219.3301 398.313 L 358.2725 391.4912 L 358.2178 390.4922 L 219.2852 397.314 L F 223.1982 392.9492 m 223.0469 393.4619 L 223.2573 393.9482 L 311.7891 388.5391 L 311.9404 388.0264 L 311.7295 387.54 L 223.1982 392.9492 L F 311.9404 388.0264 m 310.9414 391.4277 L 312.3896 390.0059 314.7754 388.5928 316.71 387.7383 C 314.6846 387.126 312.1475 386.0186 310.5361 384.7773 C 311.9404 388.0264 L F 218.2769 393.75 m 220.311 394.3711 222.8491 395.478 224.4512 396.7109 C 223.0469 393.4619 L 224.0459 390.0693 L 222.606 391.4912 220.2212 392.8945 218.2769 393.75 C F 270.27 377.2168 m 270.27 377.2529 270.27 377.7119 270.6929 377.7393 C 270.855 377.748 271.1611 377.5947 271.1611 377.2891 C 271.1611 377.0908 271.062 377.0908 271.062 376.9561 C 271.062 376.8574 271.1431 376.7666 271.2778 376.7666 C 272.0342 376.7666 272.3398 378.2246 272.4302 378.7109 C 273.4648 383.751 L 272.4028 383.751 L 272.4839 384.1289 L 273.564 384.1289 L 273.8701 385.1553 274.4551 387.1348 275.9312 387.1348 C 276.7769 387.1348 276.9658 386.5947 276.9658 386.3516 C 276.9658 386.1094 276.7588 385.875 276.4888 385.875 C 276.1108 385.875 276.0391 386.1992 276.0391 386.3252 C 276.0391 386.5947 276.1563 386.5947 276.1563 386.7207 C 276.1563 386.8203 276.0391 386.8652 275.8857 386.8652 C 274.9229 386.8652 274.5718 384.7412 274.4731 384.1289 C 275.7329 384.1289 L 275.6611 383.751 L 274.3828 383.751 L 273.5459 379.9082 L 273.2129 378.4414 272.5562 376.5146 271.188 376.5146 C 270.8188 376.5146 270.3418 376.668 270.27 377.2168 C F *u 0 R 0 0 0 XA 367.5 473.5 m 365.5 395.25 L S 367.5 473.5 m S *U 1 Ap 0 O 0 0 0 Xa 365.3916 391.0264 m 364.7051 393.0332 363.5107 395.5308 362.2178 397.0928 C 365.5137 395.8042 L 368.8721 396.9224 L 367.501 395.4287 366.1797 392.9951 365.3916 391.0264 C 365.3916 391.0264 L f 367.6084 477.7231 m 368.2949 475.7173 369.4893 473.2192 370.7822 471.6572 C 367.4863 472.9458 L 364.1279 471.8276 L 365.499 473.3213 366.8203 475.7549 367.6084 477.7231 C 367.6084 477.7231 L f *u 1 D 382.002 406.1748 m 380.5205 405.626 379.4648 405.6353 378.6611 405.6431 C 377.9043 405.6499 376.2744 405.8643 374.9346 406.3457 C 373.3086 406.9233 372.666 407.5273 372.0713 408.0957 C 371.8896 407.9448 L 373.7295 405.7939 375.5938 404.8618 377.5732 404.8438 C 378.3418 404.8369 380.0938 404.8208 382.0723 405.9634 C 382.002 406.1748 L 382.002 406.1748 L f 375.1729 408.6885 m 375.1826 409.7437 L 380.2129 408.6655 L 380.6914 408.5674 382.1533 408.249 382.1465 407.4985 C 382.1445 407.3579 382.0479 407.2769 381.9521 407.2773 C 381.8203 407.2788 381.8213 407.3843 381.6172 407.3862 C 381.3174 407.3887 381.1582 407.0854 381.1689 406.9214 C 381.1885 406.499 381.6445 406.4946 381.6807 406.4946 C 382.2334 406.5596 382.3936 407.0391 382.3975 407.4023 C 382.4102 408.7744 380.4844 409.4487 379.0225 409.79 C 375.1904 410.6699 L 375.2021 411.9478 L 374.8193 412.0215 L 374.8076 410.7554 L 374.1963 410.8667 372.0762 411.2378 372.085 412.1992 C 372.0859 412.3516 372.1348 412.4683 372.2314 412.4678 C 372.3633 412.4663 372.3623 412.3491 372.626 412.3467 C 372.7578 412.3457 373.083 412.4126 373.0859 412.7881 C 373.0889 413.0576 372.8506 413.271 372.6104 413.2729 C 372.3701 413.2754 371.8291 413.0928 371.8213 412.2485 C 371.8076 410.7715 373.7822 410.167 374.7988 409.8525 C 374.7891 408.7739 L 375.1729 408.6885 L 375.1729 408.6885 L f 376.5518 415.1011 m 376.5283 412.5337 L 377.3203 412.5264 L 377.3438 415.0938 L 379.9834 415.0698 L 379.9902 415.8438 L 377.3506 415.8677 L 377.374 418.4355 L 376.582 418.4429 L 376.5586 415.875 L 373.9189 415.8994 L 373.9121 415.1255 L 376.5518 415.1011 L 376.5518 415.1011 L f 378.7891 423.5229 m 379.2656 423.0967 379.752 422.541 379.7461 421.8374 C 379.7393 421.1221 379.1963 420.7754 378.2725 420.7842 C 377.1201 420.7944 375.0039 421.623 375.0176 423.1475 C 375.0195 423.3584 375.082 423.5923 375.2617 423.5908 C 375.4658 423.5889 375.5361 423.4121 375.8477 423.4092 C 376.124 423.4067 376.2939 423.5811 376.2959 423.874 C 376.2988 424.1675 376.085 424.4272 375.749 424.4302 C 375.377 424.4336 374.7744 424.146 374.7656 423.1611 C 374.75 421.4263 376.5703 419.791 378.2627 419.7759 C 379.8584 419.7612 380.168 420.7314 380.1748 421.4937 C 380.1855 422.7246 379.292 423.4131 378.9111 423.7095 C 378.7891 423.5229 L 378.7891 423.5229 L f 382.2344 424.9336 m 380.8223 426.6816 378.8428 428.0132 376.5742 428.0342 C 375.0146 428.0483 373.4756 427.7461 372.0645 426.915 C 372.1221 426.6914 L 372.7852 426.9902 373.9756 427.249 375.2588 427.2373 C 376.3154 427.2275 377.7529 427.0264 379.2129 426.5322 C 380.7803 425.9902 381.5059 425.3037 382.0527 424.7827 C 382.2344 424.9336 L 382.2344 424.9336 L f 375.0303 434.9663 m 375.0215 434.0283 L 373.7891 434.3682 L 373.6934 434.3926 373.585 434.3701 373.6074 434.2876 C 373.583 434.1821 373.6904 434.1343 373.75 434.0869 C 374.167 433.7549 374.7021 433.187 374.9023 432.7983 C 375.0088 432.5981 375.0898 432.269 375.1973 432.1978 C 375.3887 432.1724 L 375.3965 433.04 L 378.6885 432.1655 L 378.8799 432.1167 379.6104 431.8872 379.79 431.8857 C 380.1504 431.8823 380.2734 432.2095 380.2754 432.4438 C 380.2813 433.0537 379.7568 433.5156 378.8389 434.1221 C 378.7529 433.9707 L 379.1348 433.6738 379.6953 433.2583 379.6924 433.0239 C 379.6914 432.895 379.5947 432.8374 379.4873 432.8384 C 379.3906 432.8506 L 375.4043 433.9194 L 375.4141 434.9043 L 375.0303 434.9663 L 375.0303 434.9663 L f 378.8945 440.1606 m 379.417 439.6279 379.7148 439.3906 379.7139 439.2148 C 379.7129 439.1211 379.6406 439.0513 379.5566 439.0522 C 379.1846 439.0557 375.1025 440.1719 374.958 440.2085 C 374.9219 440.1265 L 374.999 439.4106 L 375.0352 439.375 L 375.5615 439.2529 L 375.5615 439.2295 L 375.2256 439.1978 374.9092 438.8135 374.9053 438.3096 C 374.8906 436.75 377.1182 434.9355 378.8818 434.9194 C 379.2305 434.916 380.2988 434.9414 380.3096 436.1138 C 380.3154 436.8174 379.9609 437.4419 378.5059 438.4287 C 378.5303 438.4517 L 379.2607 438.2573 379.5244 438.1963 379.8008 438.1938 C 380.0039 438.1919 380.3164 438.1895 380.3203 438.6816 C 380.3252 439.1855 379.8975 439.5884 379.0156 440.2998 C 378.8945 440.1606 L 378.8945 440.1606 L f 0 D 378.8672 435.9043 m 377.7871 435.9141 375.1572 436.9937 375.1699 438.3657 C 375.1729 438.7056 375.4033 439.0317 375.9795 439.0264 C 377.1553 439.0156 379.7373 437.8428 379.7256 436.6001 C 379.7227 436.2832 379.5029 435.8984 378.8672 435.9043 C 378.8672 435.9043 L f 1 D 378.8643 445.9766 m 379.4238 445.5376 379.8047 445.2412 379.8027 445.0063 C 379.8027 444.9829 379.7773 444.8193 379.5977 444.8208 C 379.2373 444.8242 376.2822 445.7896 375.7656 445.7939 C 375.2617 445.7988 374.9717 445.5317 374.9668 444.9922 C 374.957 444.019 376.6152 442.9253 377.498 442.3662 C 377.4746 442.3428 L 374.9736 443.1162 L 374.9492 443.0811 L 375.0752 442.4468 375.1895 441.8125 375.3037 441.1787 C 375.4951 441.1768 L 375.501 441.8101 375.6348 441.9258 375.8145 441.9243 C 376.0664 441.9219 378.8672 441.1104 380.2197 440.7344 C 380.2275 441.6138 L 378.6006 442.1099 378.0859 442.2666 377.2627 442.814 C 376.5947 443.2422 375.5693 443.9902 375.5742 444.5527 C 375.5762 444.7759 375.7451 444.8447 375.9609 444.8428 C 376.4414 444.8379 379.3613 443.9434 379.6494 443.9409 C 379.9971 443.9375 380.3574 443.958 380.3623 444.4971 C 380.3682 445.1304 379.8203 445.5459 379.0215 446.1392 C 378.8643 445.9766 L 378.8643 445.9766 L f 382.3896 448.2778 m 380.9082 447.7285 379.8525 447.7383 379.0479 447.7456 C 378.292 447.7524 376.6621 447.9668 375.3223 448.4482 C 373.6953 449.0259 373.0527 449.6299 372.458 450.1982 C 372.2764 450.0474 L 374.1172 447.8965 375.9805 446.9648 377.9609 446.9463 C 378.7285 446.9395 380.4805 446.9233 382.459 448.0659 C 382.3896 448.2778 L 382.3896 448.2778 L f 379.0381 455.7891 m 379.5615 455.2568 379.8594 455.0195 379.8574 454.8438 C 379.8564 454.75 379.7842 454.6802 379.7002 454.6812 C 379.3281 454.6846 375.2461 455.8008 375.1025 455.8374 C 375.0654 455.7554 L 375.1426 455.0396 L 375.1787 455.0039 L 375.7051 454.8818 L 375.7051 454.8584 L 375.3691 454.8262 375.0537 454.4424 375.0488 453.938 C 375.0342 452.3789 377.2617 450.5645 379.0254 450.5483 C 379.374 450.5449 380.4424 450.5703 380.4531 451.7427 C 380.459 452.4463 380.1055 453.0708 378.6504 454.0576 C 378.6748 454.0806 L 379.4043 453.8862 379.668 453.8252 379.9443 453.8228 C 380.1484 453.8208 380.46 453.8179 380.4648 454.3105 C 380.4688 454.8145 380.041 455.2173 379.1592 455.9287 C 379.0381 455.7891 L 379.0381 455.7891 L f 0 D 379.0107 451.5332 m 377.9307 451.543 375.3008 452.6226 375.3135 453.9941 C 375.3164 454.3345 375.5479 454.6606 376.123 454.6553 C 377.2998 454.6445 379.8809 453.4717 379.8691 452.229 C 379.8662 451.9121 379.6465 451.5273 379.0107 451.5332 C 379.0107 451.5332 L f 1 D 372.4043 459.9424 m 380.5713 455.4351 L 380.5791 456.291 L 372.4121 460.7983 L 372.4043 459.9424 L 372.4043 459.9424 L f 378.7676 464.1641 m 379.1973 463.9604 379.5195 463.77 379.5127 462.9961 C 379.4922 460.7686 L 379.4316 460.769 L 377.1484 463.0415 L 375.6738 464.5088 375.1367 464.8071 374.333 464.8145 C 373.4326 464.8228 372.3223 464.1763 372.3115 462.9336 C 372.3086 462.6406 372.3428 461.104 374.209 460.4536 C 374.2949 460.6992 L 373.9961 460.8662 373.1729 461.3193 373.1826 462.3745 C 373.1904 463.2773 373.915 463.8101 374.6592 463.8032 C 375.0557 463.7993 375.751 463.7461 377.5234 462.0884 C 380.1895 459.6016 L 380.3936 459.5996 L 380.4316 463.7617 L 378.8525 464.3623 L 378.7676 464.1641 L 378.7676 464.1641 L f 382.6094 465.6411 m 381.1973 467.3896 379.2168 468.7212 376.9492 468.7422 C 375.3887 468.7563 373.8506 468.4541 372.4385 467.6226 C 372.4961 467.3994 L 373.1592 467.6982 374.3496 467.957 375.6338 467.9448 C 376.6895 467.9351 378.1279 467.7344 379.5879 467.2402 C 381.1543 466.6982 381.8799 466.0112 382.4277 465.4902 C 382.6094 465.6411 L 382.6094 465.6411 L f *U 0 Ap 0 D 321.7002 386.957 m 321.5518 387.459 L 321.7646 387.9551 L 354.2871 386.0352 L 354.4375 385.5244 L 354.2285 385.0371 L 321.7002 386.957 L F 354.4375 385.5244 m 353.4395 388.917 L 354.8789 387.5039 357.2734 386.0996 359.2168 385.2451 C 357.1826 384.624 354.6445 383.5166 353.043 382.2754 C 354.4375 385.5244 L F 316.7822 387.7471 m 318.8066 388.3682 321.3447 389.4746 322.9473 390.7168 C 321.5518 387.459 L 322.5508 384.0664 L 321.1113 385.4883 318.7168 386.8916 316.7822 387.7471 C F 344.4658 376.5146 m 344.4658 378.207 346.0859 380.043 347.8232 380.043 C 348.8037 380.043 349.1006 379.4404 349.1006 379.0713 C 349.1006 378.7285 348.8398 378.5127 348.543 378.5127 C 348.2549 378.5127 348.0752 378.6836 348.0752 378.9629 C 348.0752 379.2686 348.2549 379.3408 348.2549 379.5479 C 348.2549 379.7275 348.0215 379.791 347.8047 379.791 C 346.2842 379.791 345.4736 377.667 345.4736 376.5146 C 345.4736 375.5879 345.8252 375.0479 346.5449 375.0479 C 347.2471 375.0479 347.7959 375.543 348.2188 376.0195 C 348.4082 375.9033 L 348.1113 375.5156 347.4355 374.6162 346.2031 374.6162 C 345.4375 374.6162 344.4658 374.9131 344.4658 376.5146 C F U LB %AI5_EndLayer-- %%PageTrailer gsave annotatepage grestore showpage %%Trailer Adobe_Illustrator_AI5 /terminate get exec Adobe_ColorImage_AI6 /terminate get exec Adobe_pattern_AI5 /terminate get exec AGM_Gradient /terminate get exec Adobe_typography_AI5 /terminate get exec Adobe_cshow /terminate get exec Adobe_level2_AI5 /terminate get exec %%EOF ctsim-6.0.2/doc/mysober.sty0000644000175000017500000001374010667176710014656 0ustar kevinkevin% SOBER.STY van Nico Poppelier % Adapted by Julian Smart for his own % nefarious purposes % -------------------------------------- % Koppen van secties, subsecties, ... % -------------------------------------- % % -------------------------------------- % fontgrootte en regelafstand % (met de notatie X/Y wordt bedoeld % 'letter X op regelafstand Y') % -------------------------------------- % % 10pt 11pt 12pt % \scriptsize 7/ 8 8/ 9.5 8/ 9.5 % \tiny 5/ 6 6/ 7 6/ 7 % \small 9/11 10/12 11/13.6 % \footnotesize 8/ 9.5 9/11 10/12 % \@normalsize 10/12 11/13.6 12/15 % \large 12/14 12/14 14/18 % \Large 14/18 14/18 17/22 % \LARGE 17/22 17/22 20/25 % \huge 20/25 20/25 25/30 % \Huge 25/30 25/30 25/30 % % de syntax van \@startsection is: % \@startsection % {Name}{Level}{Indent}{Before_skip}{After_Skip}{Type_face} % Indent : inspring van kop vanaf linkermarge % Before_skip: wit boven kopje % (< 0 geeft aan dat eerste alinea niet inspringt) % After_skip : wit onder kopje indien >= 0 % horizontaal wit na kopje, % met kopje op de regel indien < 0 % % notatie voor : ()() % % in LaTeX's standaard-stijlen (onafhankelijk van \@ptsize): % % Indent Before_skip After_skip Type_face % section 0 -3.5ex (-1ex)(-0.2ex) 2.3ex(0.2ex) \Large\bf % subsection 0 -3.25ex(-1ex)(-0.2ex) 1.5ex(0.2ex) \large\bf % subsubsection 0 -3.25ex(-1ex)(-0.2ex) 1.5ex(0.2ex) \normalsize\bf % paragraph 0 3.25ex( 1ex)( 0.2ex) -1em()() \normalsize\bf % subparagraph \parindent 3.25ex( 1ex)( 0.2ex) -1em()() \normalsize\bf % % % in een soberder uitvoering (onafhankelijk van \@ptsize): % \def\section{\@startsection{section}{1} %{\z@}{-2.5ex plus -0.5ex minus -0.1ex}{0.5ex plus 0.1ex}{\large\bf}} {\z@}{-2.5ex plus -0.5ex minus -0.1ex}{0.5ex plus 0.1ex}{\large\bf}} \def\subsection{\@startsection{subsection}{2} {\z@}{-2.25ex plus -0.3ex minus -0.2ex}{0.05ex plus 0.05ex}{\normalsize\bf}} \def\subsubsection{\@startsection{subsubsection}{3} {\z@}{-2.25ex plus -0.3ex minus -0.2ex}{0.05ex plus 0.05ex}{\normalsize\sc}} \def\paragraph{\@startsection{paragraph}{4} {\z@}{2ex plus 0.5ex minus 0.1ex}{-0.7em}{\normalsize\it}} \def\subparagraph{\@startsection{subparagraph}{4} {\parindent}{2ex plus 0.5ex minus 0.1ex}{-0.7em}{\normalsize\it}} % % -------------------------------------- % Hoofdstuk-koppen % -------------------------------------- % % LaTeX's book style (standaard documentstijl) definieert % de hoofdstuk-koppen onafhankelijk van \@ptsize % \def\@makechapterhead#1{\vspace*{20pt}% % Next line repaired by Piet van Oostrum - June 14, 1991. %{\parindent 0pt\Large\bf \ifnum\c@secnumdepth>\m@ne\thechapter \fi {\parindent 0pt\LARGE\bf \ifnum\c@secnumdepth>\m@ne\thechapter. \hskip 1em \fi% {\raggedright\LARGE\bf #1}\\\rule[10pt]{\textwidth}{0.3mm}\par\nobreak \vskip25pt} } \def\@makeschapterhead#1{ \vspace*{20pt} { \parindent 0pt \raggedright \LARGE\bf#1\par\nobreak\vskip25pt } } % % -------------------------------------- % List-omgevingen (itemize en enumerate) % -------------------------------------- % % De volgende parameters zijn relevant in een list-omgeving: % % \labelsep : afstand tussen label en item % \labelwidth : breedte van label % \leftmargin : afstand tussen linkermarge en item % \rightmargin : afstand tussen item en rechtermarge % \listparindent: indentatie voor vervolg-alinea's in item % \parsep : verticaal wit tussen vervolg-alinea's in item % \itemsep : verticaal wit tussen opeenvolgende item's % \topsep, % \partopsep : wit boven item 1 = \topsep + \parskip % (geen alinea-overgang boven lijst) % wit boven item 1 = \topsep + \parskip + \partopsep % (alinea-overgang boven lijst) % % zie verder LaTeX-boek 5.7.1 en C.5.3 % -------------------------------------- % % De parameters voor niveau 1 worden gedefinieerd op top-niveau en % \@listi definieert uitsluitend \leftmargin % % size = small (9pt, 10pt, 11pt) \def\@listi{\topsep 0.4ex \parsep 0pt \itemsep \parsep} % \topsep 4pt(2pt)(2pt) 6pt(2pt)(2pt) 9pt(3pt)(5pt) % \parsep 2pt(1pt)(1pt) 3pt(2pt)(1pt) 4.5pt(2pt)(1pt) % % size = footnotesize (8pt, 9pt, 10pt) \def\@listi{\topsep 0.4ex \parsep 0pt \itemsep \parsep} % \topsep 3pt(1pt)(1pt) 4pt(2pt)(2pt) 6pt(2pt)(2pt) % \parsep 2pt(1pt)(1pt) 2pt(1pt)(1pt) 3pt(2pt)(1pt) % % size = normalsize (and bigger) % \parskip 0pt(1pt) 0pt(1pt) 0pt(1pt) % \parindent 15pt 17pt 1.5em % \topsep 8pt(2pt)(4pt) 9pt(3pt)(5pt) 10pt(4pt)(6pt) % \partopsep 2pt(1pt)(1pt) 3pt(1pt)(2pt) 3pt(2pt)(2pt) % \itemsep 4pt(2pt)(1pt) 4.5pt(2pt)(1pt) 5pt(2.5pt)(1pt % \parsep 4pt(2pt)(1pt) 4.5pt(2pt)(1pt) 5pt(2.5pt)(1pt) \topsep 0.4ex \partopsep 0pt \itemsep 0pt \parsep 0pt % % \leftmargini 2.5em \leftmarginii 2.2em \leftmarginiii 1.87em % \leftmarginiv 1.7em \leftmarginv 1.0em \leftmarginvi 1.0em % % \leftmargin\leftmargini % \labelwidth\leftmargini\advance\labelwidth-\labelsep % \labelsep 0.5em % % \def\@listi{\leftmargin\leftmargini} % \def\@listii{\leftmargin\leftmarginii \labelwidth\leftmarginii\advance\labelwidth-\labelsep % \topsep 4pt(2pt)(1pt) 4.5pt(2pt)(1pt) 5pt(2.5pt)(1pt) % \parsep 2pt(1pt)(1pt) 2pt(1pt)(1pt) 2.5pt(1pt)(1pt) \topsep 0pt \parsep 0pt \itemsep \parsep} % \def\@listiii{\leftmargin\leftmarginiii \labelwidth\leftmarginiii\advance\labelwidth-\labelsep % \topsep 2pt(1pt)(1pt) 2pt(1pt)(1pt) 2.5pt(1pt)(1pt) % \partopsep 1pt(0pt)(1pt) 1pt(0pt)(1pt) 1pt(0pt)(1pt) \parsep \z@ \topsep 0pt \partopsep 0pt \itemsep \topsep} % % \def\@listiv{\leftmargin\leftmarginiv % \labelwidth\leftmarginiv\advance\labelwidth-\labelsep} % % \def\@listv{ \leftmargin\leftmarginv % \labelwidth\leftmarginv\advance\labelwidth-\labelsep} % % \def\@listvi{\leftmargin\leftmarginvi % \labelwidth\leftmarginvi\advance\labelwidth-\labelsep} ctsim-6.0.2/doc/ctsim.hpj0000644000175000017500000000116610667176710014256 0ustar kevinkevin; This file is maintained by HCW. Do not modify this file directly. [OPTIONS] COMPRESS=12 Hall Zeck REVISIONS=No LCID=0x409 0x0 0x0 ; English (United States) REPORT=Yes CONTENTS=Introduction TITLE=CTSim - Computed Tomography Simulator CNT=ctsim.cnt COPYRIGHT=Copyright (c) 1983-2001 Kevin Rosenberg, M.D. CITATION=Copyright (c) 1983-2001 Kevin Rosenberg, M.D. HLP=ctsim.hlp [FILES] ctsim.rtf [MAP] #include ..\src\ctsim-map.h [WINDOWS] main="",(653,102,360,600),27904,(r14876671),(r12632256),f3 [CONFIG] CreateButton("Up", "\&Up", "JumpId(`ctsim.hlp', `Contents')") ; Buttons BrowseButtons() [BAGGAGE] ctsim.cnt ctsim-6.0.2/doc/ctsim-install.tex0000644000175000017500000000526112570246522015733 0ustar kevinkevin\chapter{Installation}\label{installation}\index{Installation}% \setheader{{\it CHAPTER \thechapter}}{}{}{\ctsimheadtitle}{}{{\it CHAPTER \thechapter}}% \ctsimfooter% \section{Download}\label{download}\index{Download}% The latest version of \ctsim, both as executable programs and source code, can be downloaded from the official \ctsim\ \urlref{web site}{http://www.ctsim.org}. Additionally, these files are also available from the \ctsim\ \urlref{FTP site}{files://files.kpe.io/ctsim}. \section{Installing Windows Binary} Download the Windows executable file. Simply execute this program to begin the installation program. \ctsim\ will then be accessible from the \texttt{Start} Menu under the \texttt{Programs} submenu. \ctsim\ is compatible with Windows 98, Windows Me, Windows NT 4.0, and Windows 2000. Due to use of the OpenGL and htmlhelp libraries, \ctsim\ is not compatible with the stock Windows 95 system. \section{Installing Linux RPM} Download the \ctsim\ RPM file, then use the \texttt{rpm} manager program as follows:\\ \hspace*{1cm}\texttt{rpm -Uvh} \emph{ctsim-*.rpm}\\ \ctsim\ and \ctsimtext\ will then be installed in the \texttt{/usr/local/bin} directory. The online help file, \texttt{ctsim.hhp}, will be installed in directory \texttt{/usr/local/man}. \section{Build From Sources}\label{build}\index{Source code build} Refer to the INSTALL file included in the source distribution for instructions. \subsection{Optional Libraries} These libraries are optional and not required to build \ctsim\ from source code. However, they add functionality to \ctsim\ and there inclusion is recommended. \begin{itemize} \item \textbf{wxWindows 2.3}\\ Used for the platform-independent graphical interface. The graphical version of \ctsim\ requires this library.\\ \urlref{Web site}{http://www.wxwindows.org} \item \textbf{FFTW3}\\ Used for fast Fourier transformations of projections and images. Without this library \ctsim\ will use slower, traditional Fourier transformations.\\ \urlref{Web site}{http://www.fftw.org} \item \textbf{libpng}\\ Used for PNG file export.\\ \urlref{Web site}{http://www.libpng.org/pub/png/libpng.html} \item \textbf{zlib}\\ Used for PNG file export.\\ \urlref{Web site}{http://www.info-zip.org/pub/infozip/zlib/zlib_docs.html} \item \textbf{readline}\\ Used for \ctsimtext\ interactive shell.\\ \urlref{Web site}{http://www.gnu.org} \item \textbf{dmalloc}\\ Used for debugging memory allocation.\\ \urlref{Web site}{http://www.dmalloc.com} \item \textbf{ctn}\\ DICOM library used to support import/export of DICOM files \urlref{Web site}{http://www.erl.wustl.edu/DICOM/ctn.html} \end{itemize} ctsim-6.0.2/doc/scangeometry.eps0000644000175000017500000122606610667176710015656 0ustar kevinkevin%!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(TM) 7.0 %%AI8_CreatorVersion: 9.0 %%For: (Kevin Rosenberg) ( ) %%Title: (scangeometry.eps) %%CreationDate: 2/16/2001 2:16 PM %%BoundingBox: 181 269 488 505 %%HiResBoundingBox: 181.25 269.6035 487.333 504.5313 %%DocumentProcessColors: Cyan Magenta Yellow Black %%DocumentFonts: Myriad-Roman %%+ Times-Italic %%DocumentSuppliedFonts: Myriad-Roman %%+ Times-Italic %%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0 %%+ procset Adobe_typography_AI5 1.0 1 %%+ procset AGM_Gradient 1.0 0 %%+ procset Adobe_ColorImage_AI6 1.1 0 %%+ procset Adobe_Illustrator_AI5 1.3 0 %%+ procset Adobe_pattern_AI5 1.0 0 %%+ procset Adobe_cshow 2.0 8 %AI5_FileFormat 3.0 %AI3_ColorUsage: Color %AI3_IncludePlacedImages %AI7_ImageSettings: 1 %%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) %%+ Options: 1 16 0 1 0 1 0 0 0 0 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 %%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 () %AI3_TemplateBox: 306.5 395.5 306.5 395.5 %AI3_TileBox: 169 -233 755 533 %AI3_DocumentPreview: Header %AI5_ArtSize: 300 300 %AI5_RulerUnits: 2 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI5_OpenToView: 23 595 1.5 1345 943 18 0 1 11 68 1 0 %AI5_OpenViewLayers: 77 %%PageOrigin:169 -233 %%AI3_PaperRect:-13 779 599 -13 %%AI3_Margin:13 -13 -13 13 %AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 1 %AI7_Thumbnail: 128 100 8 %%BeginData: 7988 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD28FFA87DA87DA87DA87DA8A8A87DA8FD057DFD69FFA8527D7D7D %A8FD11FFFD047DA8FD62FF7D7D7DFD1AFFA87D7DA8FD5CFF527D7DFD20FF %A8527DA8FD56FFA87D7DFD26FFA852A8FD53FF52A8FD2AFF7D7DA8FD4FFF %7D7DFD2EFFA852FD4CFFA87DA8FD31FF7D7DFD49FF52A8FD34FFA87DA8FD %45FFA852FD38FF7D7DFD43FF7D7DFD3AFFA852FD41FF7DA8FD3DFF52FD3F %FF7DA8FD3FFF52FD3DFF527DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA852FD3BFF7DF8F8F827527D527D %527D527D527D527D527D527D527D527D527D527D52522727F827F827F827 %2752527D527D527D527D527D527D527D527D527D527D527D527D527D5227 %52FD39FF7DA852F8F87DFD15FFA87D27F8F852527D7DA87D7D5227F8F827 %A8FD18FF52FF52FD37FF7DFFFF52F85252FD14FF5227F87DA8FD0BFFA87D %F8277DFD16FF7DFFFF7DFD35FF7DA8FFFF527DFF5252FD11FF7DF8277DFD %11FF7DF8F8A8FD14FF52FFFFFF52FD33FF7DA8FFFFFF52FFFFFF5252FD0E %FFA827F87DFD15FF7DF87DFD13FF7DFD04FF52FD31FFA87DFD04FF52FD04 %FF277DFD0CFF7DF827FD18FFA8F827A8FD11FF52FD04FFA87DFD30FF52FD %05FF52FD05FF52A8FD0AFF7DF87DFD1BFF2727A8FD10FF7DFD05FF7DA8FD %2EFF52FD06FF7DFD06FF277DFD08FF7DF87DFD1DFF52F8A8FD0FFF52FD06 %FF7DFD2DFFA8A8FD06FF52FD07FF527DFD06FF7DF87DFD1FFF5227A8FD0E %FF7DFD06FFA87DFD2CFF7DFD07FF52FD08FF277DFD04FFA8F87DFD21FF27 %27A8FD0DFF52FD07FF7DA8FD2AFF7DFD08FF52FD09FF277DFFFFFF2752FD %23FF2752FD0DFF7DFD08FF52FD2AFF7DFD08FF52FD0AFF277DFF2727FD25 %FFF87DFD0CFF52FD08FFA87DFD28FF52FD09FF52FD0BFF2752F8FD26FFA8 %F8A8FD0BFF7DFD09FF7DFD27FFA87DFD09FF52FD0BFFA8F87DFD09FFA852 %527DFD0DFF7D5252FD0AFF5227FD0BFF52FD09FFA87DFD26FF7DFD0AFF52 %FD0BFF522727FD09FF5252277DFD0CFF7D52275252FD0AFF277DFD0AFF7D %FD0AFF7DFD26FF7DFD0AFF7DFD0AFFA8F8A8FF27A8FD06FF7D522752277D %FD0BFF7D27522752A8FD09FF7D27FD0AFF52FD0AFFA87DFD24FF52FD0BFF %52FD0AFF5252FFFFFF27A8FD05FF7D2752275252FD0BFF52522752277DFD %0AFFF87DFD09FF7DFD0BFF7DFD24FF7DFD0BFF52FD0AFFF8A8FD04FF27A8 %FD04FF525227522752A8FD09FF7D522752275252FD0AFF7DF8FD09FF52FD %0BFF7DFD24FF7DFD0BFF52FD09FF5252FD06FF27A8FFFFA8522752525227 %A8FD09FF7D275252522752FD0BFF277DFD08FF7DFD0CFF7DFD22FF52FD0C %FF52FD09FFF87DFD07FFF8A8FF7D2752275227527DFD09FF525227522752 %52FD0BFF5252FD08FF52FD0CFF7DFD22FF7DFD0CFF52FD08FF7DF8FD08FF %A8F8A87D5227522752277DFD09FF7D275227522752A8FD0BFFF8FD08FF7D %FD0CFF7DFD21FFA87DFD0CFF52FD08FF2752FD09FFA8F852275227522752 %7DFD09FF7D522752275227A8FD0BFF277DFD07FF52FD0DFF52FD20FF7DFD %0DFF52FD08FF27A8FD0AFFA8F85252522752527DFD09FF7D525227525252 %A8FD0BFF5252FD07FF7DFD0DFF7DFD20FF7DFD0DFF7DFD07FFA8F8FD0CFF %52F852275227527DFD09FF52522752275227A8FD0BFFA8F8FD07FF52FD0D %FF7DFD20FF7DFD0DFF52FD07FF5252FD0CFFA852F8522752277DFD09FF7D %275227522752FD0DFF277DFD06FF7DFD0DFFA8FD20FFA8FD0DFF52FD07FF %2752FD0CFFA82727F8522752A8FD09FF7D522752275252FD0DFF277DFD06 %FF52FD0DFFA87DFD1EFFA8A8FD0DFF52FD07FFF8A8FD0DFF7D2752F85252 %FD0AFFA827525252277DFD0DFF7D52FD06FF7DFD0EFF7DFD1EFF52FD0EFF %52FD06FFA8F8A8FD0DFF52522727F852FD0BFF52275227527DFD0DFF7D27 %FD06FF52FD0EFF7DFD1EFFA8FD0EFF52FD06FFA8F8FD0EFFA85252275227 %FD0BFF7D52275252FD0EFFA8F8FD06FF7DFD0EFF7DFD1EFF52FD0EFF52FD %06FF7D27FD0FFF7D2752527D27FD0BFF525227A8FD0FFFF8FD06FF52FD0E %FF7DFD1EFFA8FD0EFF52FD06FF7D27FD10FFA87DFFFF7D27FD0BFF7DA8FD %10FFF8A8FD05FF7DFD0EFFA8FD1EFF7DFD0EFF7DFD06FF527DFD15FF7D27 %FD1CFF277DFD05FF52FD0EFFA8FD1EFFA8FD0EFF52FD06FF7D52FD16FF7D %52FD1BFF27A8FD05FF7DFD0EFFA8FD1EFF7DFD0EFF52FD06FF527DFD17FF %7D27FD1AFF277DFD05FF52FD0FFF7DFD1DFFA8FD0EFF52FD06FF7D52FD18 %FFA852FD19FF27A8FD05FF7DFD0FFF7DFD1DFF7DFD0EFF52FD06FF527DFD %19FF7D52FD18FF277DFD05FF52FD0FFF7DFD1DFFA8FD0EFF52FD06FF7D52 %FD1AFF7D52FD17FF27A8FD05FF7DFD0EFFA87DFD1DFF7DFD0EFF52FD06FF %5252FD1BFF5227FD16FFF87DFD05FF52FD0EFFA8FD1EFFA8FD0EFF52FD06 %FF7D27FD1CFF5252FD15FFF8FD06FF7DFD0EFFA8FD1EFF7DFD0EFF7DFD06 %FF7D27FD18FFA827A8FFFF5252FD13FFA8F8FD06FF52FD0EFFA8FD1EFF7D %FD0EFF52FD06FFA8F8FD17FF7D272752A8FFFF527DFD12FFA8F8FD06FF7D %FD0EFF7DFD1EFF7DFD0EFF52FD07FFF8A8FD14FFA827F8527DF8FD04FF52 %7DFD11FF5227FD06FF52FD0EFFA8FD1EFF7DFD0EFF52FD07FF27A8FD14FF %5252FD04A8FD05FF527DFD10FF5252FD06FF7DFD0EFF7DFD1EFF7DFD0EFF %52FD07FF5252FD15FFA8FD04FFA8A8FD04FF527DFD0FFF277DFD06FF52FD %0EFF7DFD1FFF7DFD0DFF52FD07FF7D27FD0AFFA87DA8FD0BFF272727A8FD %05FF527DFFFFFF7D7DA8FD07FFA8F8A8FD06FF7DFD0EFF7DFD1FFF7DFD0D %FF52FD08FFF8FD09FFA852272752FD0AFF7D52FD08FF527DFF27272752A8 %FD06FF7DF8FD07FF52FD0DFF7DA8FD1FFF7DFD0DFF52FD08FF277DFD08FF %7D27522752FD15FF275252275227FD07FF527DFD07FF7DFD0DFFA8FD20FF %7DFD0DFF7DFD08FF5252FD08FF7D52272752FD15FFA8FD042752A8FD06FF %F87DFD07FF52FD0DFF7DFD20FFA8A8FD0CFF52FD08FFA8F8FD09FF7D7D7D %FD18FF2752A8FD07FFA8F8FD08FF7DFD0DFF7DFD21FF7DFD0CFF52FD09FF %2752FD23FFA827A8FD07FF2752FD08FF52FD0CFF7DA8FD21FF7DFD0CFF52 %FD09FF7D27FD25FF52A8FD05FFA8F8A8FD08FF7DFD0CFF7DFD22FFA8A8FD %0BFF52FD0AFFF87DFD24FFA827A8FD04FF5227FD09FF52FD0CFF7DFD23FF %7DFD0BFF52FD0AFF7D27FD25FFA852A8FFFFFFF8A8FD09FF7DFD0BFFA8A8 %FD23FF7DFD0BFF52FD0AFFA8F87DFD25FFA827A8FF2727FD0AFF52FD0BFF %7DFD24FFA8A8FD0AFF52FD0BFF7D27FD27FF277DF8A8FD0AFF7DFD0AFFA8 %7DFD25FF52FD0AFF7DFD0CFF2752FD26FFA8F827FD0BFF52FD0AFF7DFD26 %FFA8A8FD09FF52FD0CFFA8F8A8FD25FF7DF827A8FD0AFF7DFD0AFF7DFD27 %FF7DFD09FF52FD0DFF7DF8FD24FF7DF8A8A827A8FD09FF52FD09FF52FD28 %FFA8A8FD08FF52FD0EFF5227FD22FFA8F87DFFFFA852FD09FF7DFD08FFA8 %7DFD29FF52FD08FF52FD0EFFA82727FD21FFF852FD04FFA827A8FD07FF52 %FD08FF7DFD2BFF7DFD07FF52FD10FF2752FD1FFF2752FD06FFA852FD07FF %7DFD07FFA8A8FD2BFF7DA8FD06FF52FD10FFA82727FD1CFFA8F852FD08FF %A827A8FD05FF52FD07FF52FD2DFF7DFD06FF52FD12FF2727FD1AFFA8F852 %FD0AFFA852FD05FF7DFD06FF7DFD2EFFA87DFD05FF7DFD12FFA852F87DFD %16FFA852F87DFD0CFF7D27A8FFFFFF52FD05FF7D7DFD2FFF7DA8FD04FF52 %FD14FFA8F827A8FD13FF7D2727A8FD0EFF7D27A8FFFF7DFD04FFA87DFD31 %FF52FD04FF52FD16FF27F827A8FD0FFF7DF8F852FD11FF7D27A8A852FD04 %FF52FD33FF52FFFFFF52FD17FFA852F82752A8FD09FFA85227F87DFD14FF %7D522752FFFFFF7DA8FD34FF52FFFF52FD1AFF7D52F8F8F8FD0527F8F827 %527DFD16FFA827F827FFFFA8A8FD36FF52FF52FD1DFFA8A87D7D527DA8A8 %FD1AFF7D52F827FFA87DFD37FFA8FD0452F87D5252527D5252527D525252 %7D5252527D5252527D5252527D5252527D5252527D5252527D5252527D52 %52527D5252527D5252527D5252527D525252275252F8A87DFD3AFF7D7DF8 %52FD3CFF7DF852A87DFD3BFF52F8F827A87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87D7DF8F8F8FD3DFFA82727FD3CFF52 %277DFD40FF52A8FD3AFFA852A8FD42FF7DA8FD38FFA87DFD45FFA87DA8FD %18FF52F8277DFD19FF7DA8FD48FFA87DFD17FF527D52527DFD16FFA852FD %4CFF52A8FD15FF2752F87D52FD14FFA87D7DFD4EFFA87DA8FD13FFF8527D %FF52FD13FF7D7DFD52FF7D7DA8FD10FF5227FFFFA852FD10FFA87D52FD56 %FFA87D7DFD0EFFA87DFD12FFA87D7DFD5BFF527D7DFD1CFF7D7D7DA8FD60 %FF7D7D7DA8FD14FFA8A87D7DA8FD67FF7D52FD047DA87DA8FFFFA8A87DA8 %7DA87D7D7DA8FD73FFFD047DFDCCFFFF %%EndData %%EndComments %%BeginProlog %%BeginResource: procset Adobe_level2_AI5 1.2 0 %%Title: (Adobe Illustrator (R) Version 5.0 Level 2 Emulation) %%Version: 1.2 0 %%CreationDate: (04/10/93) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) userdict /Adobe_level2_AI5 26 dict dup begin put /packedarray where not { userdict begin /packedarray { array astore readonly } bind def /setpacking /pop load def /currentpacking false def end 0 } if pop userdict /defaultpacking currentpacking put true setpacking /initialize { Adobe_level2_AI5 begin } bind def /terminate { currentdict Adobe_level2_AI5 eq { end } if } bind def mark /setcustomcolor where not { /findcmykcustomcolor { (AI8_CMYK_CustomColor) 6 packedarray } bind def /findrgbcustomcolor { (AI8_RGB_CustomColor) 5 packedarray } bind def /setcustomcolor { exch aload pop dup (AI8_CMYK_CustomColor) eq { pop pop 4 { 4 index mul 4 1 roll } repeat 5 -1 roll pop setcmykcolor } { dup (AI8_RGB_CustomColor) eq { pop pop 3 { 1 exch sub 3 index mul 1 exch sub 3 1 roll } repeat 4 -1 roll pop setrgbcolor } { pop 4 { 4 index mul 4 1 roll } repeat 5 -1 roll pop setcmykcolor } ifelse } ifelse } def } if /setAIseparationgray { false setoverprint 0 setgray /setseparationgray where{ pop setseparationgray }{ /setcolorspace where{ pop [/Separation (All) /DeviceCMYK {dup dup dup}] setcolorspace 1 exch sub setcolor }{ setgray }ifelse }ifelse } def /gt38? mark {version cvr cvx exec} stopped {cleartomark true} {38 gt exch pop} ifelse def userdict /deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt put userdict /level2? systemdict /languagelevel known dup { pop systemdict /languagelevel get 2 ge } if put /level2ScreenFreq { begin 60 HalftoneType 1 eq { pop Frequency } if HalftoneType 2 eq { pop GrayFrequency } if HalftoneType 5 eq { pop Default level2ScreenFreq } if end } bind def userdict /currentScreenFreq level2? {currenthalftone level2ScreenFreq} {currentscreen pop pop} ifelse put level2? not { /setcmykcolor where not { /setcmykcolor { exch .11 mul add exch .59 mul add exch .3 mul add 1 exch sub setgray } def } if /currentcmykcolor where not { /currentcmykcolor { 0 0 0 1 currentgray sub } def } if /setoverprint where not { /setoverprint /pop load def } if /selectfont where not { /selectfont { exch findfont exch dup type /arraytype eq { makefont } { scalefont } ifelse setfont } bind def } if /cshow where not { /cshow { [ 0 0 5 -1 roll aload pop ] cvx bind forall } bind def } if } if cleartomark /anyColor? { add add add 0 ne } bind def /testColor { gsave setcmykcolor currentcmykcolor grestore } bind def /testCMYKColorThrough { testColor anyColor? } bind def userdict /composite? 1 0 0 0 testCMYKColorThrough 0 1 0 0 testCMYKColorThrough 0 0 1 0 testCMYKColorThrough 0 0 0 1 testCMYKColorThrough and and and put composite? not { userdict begin gsave /cyan? 1 0 0 0 testCMYKColorThrough def /magenta? 0 1 0 0 testCMYKColorThrough def /yellow? 0 0 1 0 testCMYKColorThrough def /black? 0 0 0 1 testCMYKColorThrough def grestore /isCMYKSep? cyan? magenta? yellow? black? or or or def /customColor? isCMYKSep? not def end } if end defaultpacking setpacking %%EndResource %%BeginResource: procset Adobe_typography_AI5 1.0 1 %%Title: (Typography Operators) %%Version: 1.0 1 %%CreationDate:(6/10/1996) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_typography_AI5 68 dict dup begin put /initialize { begin begin Adobe_typography_AI5 begin Adobe_typography_AI5 { dup xcheck { bind } if pop pop } forall end end end Adobe_typography_AI5 begin } def /terminate { currentdict Adobe_typography_AI5 eq { end } if } def /modifyEncoding { /_tempEncode exch ddef /_pntr 0 ddef { counttomark -1 roll dup type dup /marktype eq { pop pop exit } { /nametype eq { _tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll put } { /_pntr exch ddef } ifelse } ifelse } loop _tempEncode } def /havefont { systemdict /languagelevel known { /Font resourcestatus dup { exch pop exch pop } if } { systemdict /FontDirectory get 1 index known { pop true } { systemdict /fileposition known { dup length 6 add exch Ss 6 250 getinterval cvs pop Ss exch 0 exch getinterval status { pop pop pop pop true } { false } ifelse } { pop false } ifelse } ifelse } ifelse } def /TE { StandardEncoding 256 array copy modifyEncoding /_nativeEncoding exch def } def /subststring { exch 2 index exch search { exch pop exch dup () eq { pop exch concatstring } { 3 -1 roll exch concatstring concatstring } ifelse exch pop true } { pop pop false } ifelse } def /concatstring { 1 index length 1 index length 1 index add string dup 0 5 index putinterval dup 2 index 4 index putinterval 4 1 roll pop pop pop } def % /TZ { dup type /arraytype eq { /_wv exch def } { /_wv 0 def } ifelse /_useNativeEncoding exch def 2 index havefont { 3 index 255 string cvs dup (_Symbol_) eq { pop 2 index findfont } { 1 index 0 eq { dup length 1 sub 1 exch getinterval cvn findfont } { pop 2 index findfont } ifelse } ifelse } { dup 1 eq { 2 index 64 string cvs dup (-90pv-RKSJ-) (-83pv-RKSJ-) subststring { exch pop dup havefont { findfont false } { pop true } ifelse } { pop dup (-90ms-RKSJ-) (-Ext-RKSJ-) subststring { exch pop dup havefont { findfont false } { pop true } ifelse } { pop pop true } ifelse } ifelse { 1 index 1 eq { /Ryumin-Light-Ext-RKSJ-V havefont {/Ryumin-Light-Ext-RKSJ-V} {/Courier} ifelse } { /Ryumin-Light-83pv-RKSJ-H havefont {/Ryumin-Light-83pv-RKSJ-H} {/Courier} ifelse } ifelse findfont [1 0 0.5 1 0 0] makefont } if } { /Courier findfont } ifelse } ifelse _wv type /arraytype eq { _wv makeblendedfont } if dup length 10 add dict begin mark exch { 1 index /FID ne { def } if cleartomark mark } forall pop /FontScript exch def /FontDirection exch def /FontRequest exch def /FontName exch def counttomark 0 eq { 1 _useNativeEncoding eq { /Encoding _nativeEncoding def } if cleartomark } { /Encoding load 256 array copy modifyEncoding /Encoding exch def } ifelse FontName currentdict end definefont pop } def /tr { _ax _ay 3 2 roll } def /trj { _cx _cy _sp _ax _ay 6 5 roll } def /a0 { /Tx { dup currentpoint 3 2 roll tr _psf newpath moveto tr _ctm _pss } ddef /Tj { dup currentpoint 3 2 roll trj _pjsf newpath moveto trj _ctm _pjss } ddef } def /a1 { W B } def /e0 { /Tx { tr _psf } ddef /Tj { trj _pjsf } ddef } def /e1 { W F } def /i0 { /Tx { tr sp } ddef /Tj { trj jsp } ddef } def /i1 { W N } def /o0 { /Tx { tr sw rmoveto } ddef /Tj { trj swj rmoveto } ddef } def /r0 { /Tx { tr _ctm _pss } ddef /Tj { trj _ctm _pjss } ddef } def /r1 { W S } def /To { pop _ctm currentmatrix pop } def /TO { iTe _ctm setmatrix newpath } def /Tp { pop _tm astore pop _ctm setmatrix _tDict begin /W { } def /h { } def } def /TP { end iTm 0 0 moveto } def /Tr { _render 3 le { currentpoint newpath moveto } if dup 8 eq { pop 0 } { dup 9 eq { pop 1 } if } ifelse dup /_render exch ddef _renderStart exch get load exec } def /iTm { _ctm setmatrix _tm concat _shift aload pop _lineorientation 1 eq { exch } if translate _scale aload pop _lineorientation 1 eq _yokoorientation 1 eq or { exch } if scale } def /Tm { _tm astore pop iTm 0 0 moveto } def /Td { _mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto } def /iTe { _render -1 eq { } { _renderEnd _render get dup null ne { load exec } { pop } ifelse } ifelse /_render -1 ddef } def /Ta { pop } def /Tf { 1 index type /nametype eq { dup 0.75 mul 1 index 0.25 mul neg } if /_fontDescent exch ddef /_fontAscent exch ddef /_fontSize exch ddef /_fontRotateAdjust _fontAscent _fontDescent add 2 div neg ddef /_fontHeight _fontSize ddef findfont _fontSize scalefont setfont } def /Tl { pop neg 0 exch _leading astore pop } def /Tt { pop } def /TW { 3 npop } def /Tw { /_cx exch ddef } def /TC { 3 npop } def /Tc { /_ax exch ddef } def /Ts { 0 exch _shift astore pop currentpoint iTm moveto } def /Ti { 3 npop } def /Tz { count 1 eq { 100 } if 100 div exch 100 div exch _scale astore pop iTm } def /TA { pop } def /Tq { pop } def /Tg { pop } def /TG { pop } def /Tv { /_lineorientation exch ddef } def /TV { /_charorientation exch ddef } def /Ty { dup /_yokoorientation exch ddef 1 sub neg Tv } def /TY { pop } def /T~ { Tx } def /Th { pop pop pop pop pop } def /TX { pop } def /Tk { _fontSize mul 1000 div _lineorientation 0 eq { neg 0 } { 0 exch } ifelse rmoveto pop } def /TK { 2 npop } def /T* { _leading aload pop _lineorientation 0 ne { exch } if Td } def /T*- { _leading aload pop _lineorientation 0 ne { exch } if exch neg exch neg Td } def /T- { _ax neg 0 rmoveto _lineorientation 1 eq _charorientation 0 eq and { 1 TV _hyphen Tx 0 TV } { _hyphen Tx } ifelse } def /T+ { } def /TR { _ctm currentmatrix pop _tm astore pop iTm 0 0 moveto } def /TS { currentfont 3 1 roll /_Symbol_ findfont _fontSize scalefont setfont 0 eq { Tx } { Tj } ifelse setfont } def /Xb { pop pop } def /Tb /Xb load def /Xe { pop pop pop pop } def /Te /Xe load def /XB { } def /TB /XB load def currentdict readonly pop end setpacking % /X^ { currentfont 5 1 roll dup havefont { findfont _fontSize scalefont setfont } { pop exch } ifelse 2 index 0 eq { Tx } { Tj } ifelse pop pop setfont } def /T^ /X^ load def %%EndResource %%BeginResource: procset AGM_Gradient_Sep 1.0 0 %%Title: (AGM Gradient Procset) %%Version: 1.0 0 %%CreationDate: (4/26/96) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) userdict /defaultpacking currentpacking put true setpacking userdict /AGM_Gradient_Sep 5 dict dup begin put /AGM_Gradient_Sep_private 100 dict def /initialize{ AGM_Gradient_Sep begin AGM_Gradient_Sep_private begin _compositeJob{ initializeSinglePassSeps }{ initializeMultiPassSeps }ifelse initializeSeps AGM_Gradient_private begin /_fillSD newSpotDict def /_rampSD newSpotDict def /_nCustomColorSD nd end AGM_Gradient_Sep_private { dup xcheck 1 index type /arraytype eq and { bind }if pop pop }forall AGM_Gradient_Sep { dup xcheck 1 index type /arraytype eq and { bind }if pop pop }forall end currentdict readonly pop end }def /terminate{ currentdict AGM_Gradient_Sep eq{ end }if }def AGM_Gradient_Sep_private begin /initializeSeps{ /currentoverprint { _of } def _noImage not _level2PS not and{ /linealFill{ currentoverprint{ 0 0 1 1 rectfill }{ mySave 8 setImageParms _color{ _nCustomColorSD begin cyan magenta yellow black _spotColor{ spot1/tintImage spot1/tintValue get 1 exch sub makeByte8 put spot2/tintImage spot2/tintValue get 1 exch sub makeByte8 put }if end 4{ makeByte8 4 1 roll }repeat true 4 _nCustomColorSD ncolorimage }{ _nCustomColorSD/black get 1 exch sub makeByte8 _nCustomColorSD bwImage }ifelse myRestore }ifelse }def }if /_whiteBytes 1 makeByte8 pt /knockOut{ _noImage _level2PS or currentoverprint or{ gsave false setoverprint 1 setgray 0 0 1 1 rectfill grestore }{ 8 setImageParms _whiteBytes /_image load 5 execImage }ifelse }def /newSpotDict{ 11 dict dup begin /nSpots 2 def /spot1 7 dict def /spot2 7 dict def end }def /initSpotData { begin /name nd /tintImage nd /tintValue nd /spot_C nd /spot_M nd /spot_Y nd /spot_K nd end }def /initSpotDict{ begin /cyanInk nd /magentaInk nd /yellowInk nd /blackInk nd /cyan nd /magenta nd /yellow nd /black nd spot1 initSpotData spot2 initSpotData end }def /copySpotDict{ /_dst xp begin cyanInk magentaInk yellowInk blackInk cyan magenta yellow black spot1 spot2 end _dst begin /spot1 spot1 maxlength dict def /spot2 spot2 maxlength dict def spot2 copy pop spot1 copy pop /black xd /yellow xd /magenta xd /cyan xd /blackInk xd /yellowInk xd /magentaInk xd /cyanInk xd end }def /setCustomColor { 1 index /Black eq{ 6 1 roll 5 npop 1 exch sub setgray }{ 6 1 roll _ccAry1 astore exch dup null eq{ pop 0 }if setcustomcolor }ifelse }def /setCStop{ /_colorStyle exch pt _colorStyle 0 eq{ 0 0 0 4 -1 roll 1 exch sub _spotColor{ /_colorStyle 3 pt /Black 1 index 1 exch sub }if }if _colorStyle 2 eq{ 3 npop }if _rampSD _fillSD copySpotDict _colorStyle 4 eq{ pop 9 2 roll 3 npop 6 -2 roll } if _colorStyle 3 eq _colorStyle 4 eq or{ _fillSD begin /_spot1 spot1 pt /_spot2 spot2 pt end exch dup _spot1/name get eq{ _spot1 _spot2 }{ _spot2 _spot1 }ifelse begin begin /name xd 1 exch sub /tintValue xd 4{ tintValue mul 4 1 roll }repeat _spotColor not{ /tintValue null def }if end /tintValue 0 def end }if _fillSD nsetcustomcolor }def /renderCMYK{ spot1/name get null eq spot2/name get null eq and dup not{ pop spot1 spotConverted }if dup not{ pop spot2 spotConverted }if }def /currentInk{ true _inRipSep{ currentcolorspace 0 get dup /DeviceGray eq 1 index /DeviceCMYK eq or{ pop currentcmykcolor add add add 0 eq{ pop false }if }{ /Separation eq{ currentcolor 0 eq{ pop false }if }if }ifelse }{ currentgray 1 eq{ pop false }if }ifelse }def /currentInkN{ _nCustomColorSD begin /_spot1 spot1 pt /_spot2 spot2 pt renderCMYK end { currentInk }{ gsave _spot1 begin name null ne{ spot_C spot_M spot_Y spot_K name tintValue setCustomColor currentInk }{ false }ifelse end _spot2 begin name null ne{ spot_C spot_M spot_Y spot_K name tintValue setCustomColor currentInk }{ false }ifelse end grestore or } ifelse }def /fill_ /fill load def /fillOvp{ currentoverprint{ _inRipSep{ currentcolorspace 0 get dup /DeviceGray eq 1 index /DeviceCMYK eq or{ pop currentcmykcolor add add add 0 eq{ newpath }if }{ /Separation eq{ currentcolor 0 eq{ newpath }if }if }ifelse }{ currentgray 1 eq{ newpath }if }ifelse }if fill_ }def /fill{ _nCustomColorSD begin /_spot1 spot1 pt /_spot2 spot2 pt renderCMYK end { fillOvp }{ _spot1 begin gsave name null ne{ spot_C spot_M spot_Y spot_K name tintValue setCustomColor }{ 1 setgray }ifelse fillOvp grestore end _spot2 begin name null ne{ gsave true setoverprint spot_C spot_M spot_Y spot_K name tintValue setCustomColor fillOvp grestore }if end newpath }ifelse }def /expandSpot{ _spotColor{ /_len xp _rampSD begin spot1 begin tintImage null ne{ tintImage _len expandOne /tintImage xd }if end spot2 begin tintImage null ne{ tintImage _len expandOne /tintImage xd }if end end }{ pop }ifelse }def /rampImage{ currentoverprint{ rectImage }{ _enabledSmoothShade{ fillRamp }{ _color{ _rampSD begin /cyanInk _cyanData 0 ne def /magentaInk _magentaData 0 ne def /yellowInk _yellowData 0 ne def /blackInk _blackData 0 ne def end _nSamples setImageParms _nSamples expandSpot _cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor true 4 _rampSD ncolorimage }{ _rampSD begin /cyanInk false def /magentaInk false def /yellowInk false def /blackInk true def end _nSamples setImageParms _blackData _rampSD bwImage }ifelse }ifelse }ifelse }def /nsetcustomcolor where{ pop }{ /nsetcustomcolor { /_nCustomColorSD xp _nCustomColorSD begin 4 copy /black xd /yellow xd /magenta xd /cyan xd 4 copy 0 ne /blackInk xd 0 ne /yellowInk xd 0 ne /magentaInk xd 0 ne /cyanInk xd end setcmykcolor }def }ifelse /nsetcustomcolorend where{ pop }{ /nsetcustomcolorend { /_nCustomColorSD null pt }def }ifelse }def /initializeSinglePassSeps{ /_decodeNorm [0 1] pt /_decodeInvert [1 0] pt /spotConverted { begin name null eq{ false }{ tintValue null eq tintImage null eq and{ true }{ _inDistiller{ false }{ false currentpagedevice/SeparationColorNames get{name eq or}forall not }ifelse }ifelse }ifelse end }def /dictImage { 20 dict dup begin /Dict xd /Decode xd /DataSource xd /ImageMatrix xd /BitsPerComponent xd /Height xd /Width xd /ImageType 1 def Dict end /_image load 1 execImage }def /bwImage{ begin gsave currentoverprint{ blackInk{ [/Separation /Black /DeviceGray{}] setcolorspace _decodeInvert dictImage }{ 5 npop }ifelse }{ /DeviceGray setcolorspace _decodeNorm dictImage }ifelse grestore end }def /ncolorimage where{ pop }{ /ncolorimage{ begin renderCMYK{ cyanInk magentaInk and yellowInk and blackInk and not currentoverprint and{ pop pop gsave cyanInk{ 8 copy [/Separation /Cyan /DeviceGray{}] setcolorspace 3 npop _decodeNorm dictImage }if magentaInk{ 8 copy [/Separation /Magenta /DeviceGray{}] setcolorspace 4 -1 roll 3 npop _decodeNorm dictImage }if yellowInk{ 8 copy [/Separation /Yellow /DeviceGray{}] setcolorspace 4 -2 roll 3 npop _decodeNorm dictImage }if blackInk{ 4 -3 roll [/Separation /Black /DeviceGray{}] setcolorspace 3 npop _decodeNorm dictImage }{ 8 npop }ifelse grestore }{ /_colorimage load 10 execImage }ifelse }{ 6 npop gsave spot1 begin name null ne tintImage null ne and{ [/Separation name /DeviceGray{}] setcolorspace 4 copy tintImage name /Black eq{ _decodeNorm }{ _decodeInvert }ifelse dictImage }{ 1 setgray fill }ifelse end spot2 begin true setoverprint name null ne tintImage null ne and{ [/Separation name /DeviceGray{}] setcolorspace tintImage name /Black eq{ _decodeNorm }{ _decodeInvert }ifelse dictImage }{ 4 npop 1 setgray fill }ifelse end grestore }ifelse end }def }ifelse /getRampColorSpace{ /_renderCMYK _rampSD begin renderCMYK end pt _renderCMYK not{ _rampSD begin [/DeviceN [ spot1 begin name null ne tintImage null ne and{ name }if end spot2 begin name null ne tintImage null ne and{ name }if end ] _inDistiller { /DeviceCMYK [ spot1 begin name null ne tintImage null ne and{ spot_C spot_M spot_Y spot_K 1 }{ 0 0 0 0 0 }ifelse end spot2 begin name null ne tintImage null ne and{ spot_C spot_M spot_Y spot_K 2 }{ 0 0 0 0 0 }ifelse end 5 1 roll 6 -2 roll add dup 1 eq { pop 8 /index cvx 1 /exch cvx /sub cvx 9 1 /roll cvx }{ 2 eq { 8 /index cvx 1 /exch cvx /sub cvx 10 1 /roll cvx }if }ifelse 4 1 /roll cvx 5 -2 /roll cvx 8 /index cvx /mul cvx /exch cvx 9 /index cvx /mul cvx /add cvx 7 1 /roll cvx 3 1 /roll cvx 4 -2 /roll cvx 7 /index cvx /mul cvx /exch cvx 8 /index cvx /mul cvx /add cvx 6 1 /roll cvx 2 1 /roll cvx 3 -2 /roll cvx 6 /index cvx /mul cvx /exch cvx 7 /index cvx /mul cvx /add cvx 5 1 /roll cvx 5 /index cvx /mul cvx /exch cvx 6 /index cvx /mul cvx /add cvx 4 1 /roll cvx 6 -2 /roll cvx /pop cvx /pop cvx ] cvx bind }{ /DeviceCMYK {} }ifelse ] setcolorspace end /_nColorSpace currentcolorspace pt }if _nSamples 1 gt{ /_ndx 0 pt [blendColor] cvx exec }if _renderCMYK{ /_C0 [currentcolor] pt /_C0_Space currentcolorspace pt }{ /_C0 [ _nCustomColorSD begin spot1 begin name null ne{ tintValue }if end spot2 begin name null ne{ tintValue }if end end ] pt /_C0_Space _nColorSpace pt }ifelse _nSamples 1 gt{ /_ndx _nSamples 1 sub pt [blendColor] cvx exec }if _renderCMYK{ /_C1 [currentcolor] pt /_C1_Space currentcolorspace pt }{ /_C1 [ _nCustomColorSD begin spot1 begin name null ne{ tintValue }if end spot2 begin name null ne{ tintValue }if end end ] pt /_C1_Space _nColorSpace pt }ifelse /_rampColorSpace _C0_Space pt _spotColor{ nsetcustomcolorend }if }def }def /initializeMultiPassSeps{ /invertXfer{ [ { 1 exch sub }/exec load systemdict /currenttransfer get exec /exec load ] cvx systemdict /settransfer get exec }def /ccThrough{ gsave 1 setCustomColor currentcmykcolor grestore add add add 0 ne }def /spotConverted { begin _isCMYKSep not{ false }{ name null eq{ false }{ tintValue null eq tintImage null eq and{ true }{ spot_C spot_M spot_Y spot_K name ccThrough }ifelse }ifelse }ifelse end }def /spotChannel { _isCMYKSep{ pop false }{ /_spotDict xp _spotDict/name get null eq{ false }{ _spotDict/spot_C get _spotDict/spot_M get _spotDict/spot_Y get _spotDict/spot_K get _spotDict/name get ccThrough }ifelse }ifelse }def /getChannelData { _isCMYKSep dup{ pop renderCMYK }if { _blackPlate{ 4 1 roll 3 npop blackInk }{ _yellowPlate{ 4 2 roll 3 npop yellowInk }{ _magentaPlate{ 4 3 roll 3 npop magentaInk }{ 3 npop cyanInk }ifelse }ifelse }ifelse { true /nonZeroData }{ true /zeroData }ifelse }{ 4 npop spot1/name get null ne spot1 spotChannel and{ spot1/tintImage get dup null ne{ false /nonZeroData }{ pop false /noData }ifelse }{ spot2/name get null ne spot2 spotChannel and{ spot2/tintImage get dup null ne{ false /nonZeroData }{ pop false /noData }ifelse }{ false /noData }ifelse }ifelse }ifelse }def /renderChannelData { /_tmp xp _tmp /nonZeroData ne currentoverprint and{ pop _tmp /zeroData eq{pop}if 4 npop }{ _tmp /nonZeroData eq{ { invertXfer }if systemdict/image get 5 execImage }{ pop _tmp /zeroData eq{pop}if 4 npop knockOut }ifelse }ifelse }def /bwImage{ begin gsave dup dup dup getChannelData exch pop false exch renderChannelData grestore end }def /ncolorimage{ begin pop pop gsave spot2/name get null ne spot2 spotChannel and{ true setoverprint }if getChannelData renderChannelData grestore end }def /getRampColorSpace{ /_renderCMYK _rampSD begin renderCMYK end pt _nSamples 1 gt{ /_ndx 0 pt [blendColor] cvx exec }if _renderCMYK{ /_C0 [currentcolor] pt /_C0_Space currentcolorspace pt }{ /_C0 [ _nCustomColorSD begin 0 spot1 begin name null ne tintValue null ne and spot1 spotChannel and{ pop tintValue }if end spot2 begin name null ne tintValue null ne and spot2 spotChannel and{ pop tintValue }if end 1 exch sub end ] pt /_C0_Space /DeviceGray pt }ifelse _nSamples 1 gt{ /_ndx _nSamples 1 sub pt [blendColor] cvx exec }if _renderCMYK{ /_C1 [currentcolor] pt /_C1_Space currentcolorspace pt }{ /_C1 [ _nCustomColorSD begin 0 spot1 begin name null ne tintValue null ne and spot1 spotChannel and{ pop tintValue }if end spot2 begin name null ne tintValue null ne and spot2 spotChannel and{ pop tintValue }if end 1 exch sub end ] pt /_C1_Space /DeviceGray pt }ifelse /_rampColorSpace _C0_Space pt _spotColor{ nsetcustomcolorend }if }def }def end end defaultpacking setpacking %%EndResource %%BeginResource: procset AGM_Gradient 1.0 0 %%Title: (AGM Gradient Procset) %%Version: 1.0 0 %%CreationDate: (4/26/96) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) userdict /defaultpacking currentpacking put true setpacking userdict /AGM_Gradient 20 dict dup begin put /AGM_Gradient_private 201 dict def /initialize { AGM_Gradient begin AGM_Gradient_private begin initializeVars /bd systemdict/mark get def /ed _level2PS { (>>) }{ (counttomark 2 idiv dup dict begin {def} repeat pop currentdict end) } ifelse cvx def _level2PS{ initializeLev2 }{ initializeLev1 }ifelse queryDevice initializeRectFill initializeShading initializeOps _producingSeps{ AGM_Gradient_Sep/initialize get exec }{ initializeComposite }ifelse _illustrator{ /f{}def /F{}def /s{}def /S{}def /b{}def /B{}def }if /image where{ /image get /_image xd }if /colorimage where{ /colorimage get /_colorimage xd }if AGM_Gradient_private { dup xcheck 1 index type /arraytype eq and { bind }if pop pop }forall AGM_Gradient { dup xcheck 1 index type /arraytype eq and { bind }if pop pop }forall end currentdict readonly pop end }def /initializeAI { pop pop AGM_Gradient/AGM_Gradient_private get /_illustrator true put AGM_Gradient/initialize get exec AGM_Gradient begin }def /unload{ systemdict/languagelevel known{ systemdict/languagelevel get 2 ge{ userdict/AGM_Gradient_Sep 2 copy known{ undef }{ pop pop }ifelse userdict/AGM_Gradient 2 copy known{ undef }{ pop pop }ifelse }if }if }def /terminate{ currentdict AGM_Gradient eq{ end }if }def AGM_Gradient_private begin /initializeVars{ /_d255 256 array def 0 1 255{ _d255 exch dup 255 div put }bind for /_d255- 256 array def 0 1 255{ _d255- exch 1 _d255 2 index get sub put }bind for /_sSave nd /_dUserSpace matrix defaultmatrix def /_bUMatrix matrix def /_imageMatrix matrix def /_saveMatrix matrix def /_xm matrix def /_ccAry1 5 array def /_bbox 4 array pt /_level2PS systemdict/languagelevel known dup{ pop systemdict/languagelevel get 2 ge }if def /_level3PS _level2PS systemdict/shfill known and def currentdict /_illustrator known not{ /_illustrator false def }if }def /initializeOps { AGM_Gradient begin currentdict/Bc known not{ /Bc{ _renderFlag 2 eq _enabledSmoothShade or{ 6 npop }{ pushBSpace _rampIndex 0 eq{ pop pop setCStop }if linealFill popBSpace }ifelse }def }if currentdict/Bg known not{ /Bg{ 10 npop /_gradName xp /_renderFlag xp /_enabledSmoothShade false pt _renderFlag 2 ne{ _illustrator{ _of setoverprint }if /_enabledSmoothShade _level3PS{ _usingSmoothShade _producingSeps not currentoverprint not or and _noImage not and }{ false }ifelse pt _illustrator _eo and _renderFlag 3 eq or{ eoclip }{ clip }ifelse _gradNames _gradName 2 copy known{ get mark exch aload pop /_gradType xp 1 sub dup /_rampIndex xp /_maxRampIndex xp mark exch aload pop 0 0 }if pop pop getRampData }{ mark mark }ifelse }def }if currentdict/Bm known not{ /Bm{ _renderFlag 2 ne{ _gradType 0 eq{ linealRamp }{ radialGrad }ifelse }{ 6 npop }ifelse }def }if currentdict/Bh known not{ /Bh{ 2 npop /_yHi xp /_xHi xp /_radHilite _xHi 0 ne _yHi 0 ne or pt }def }if currentdict/Bn known not{ /Bn{ AGM_Gradient_private begin dict /_gradNames xp end }def }if currentdict/Bd known not{ /Bd{ AGM_Gradient begin AGM_Gradient_private begin /_nColorsBd xp /_gradType xp /_gradName xp }def }if currentdict/BD known not{ /BD{ currentdict/_gradNames known not{ /_gradNames 20 dict def }if ] _nColorsBd _gradType ] _gradName exch /_gradNames xput end end }def }if currentdict/Bb known not{ /Bb{ AGM_Gradient/AGM_Gradient_private get /_illustrator get not{ AGM_Gradient begin }if AGM_Gradient_private begin _producingSeps{ AGM_Gradient_Sep/AGM_Gradient_Sep_private get begin }if mySave }def }if currentdict/BB known not{ /BB{ /_tmp xp cleartomark cleartomark _tmp dup _renderFlag myRestore _producingSeps{ end }if _illustrator dup end not { end }if { 2 ne exch 0 gt and{ 2 eq{ s }{ S }ifelse }{ pop newpath }ifelse }{ pop newpath }ifelse }def }if currentdict/Xm known not{ /Xm{ _xm astore pop }def }if end }def /queryDevice{ /_inDistiller systemdict /currentdistillerparams known def /_inRipSep _level2PS{ currentpagedevice/Separations 2 copy known{ get }{ pop pop false }ifelse }{ false }ifelse _inDistiller or def /_noImage /lv1Fix where{ pop lv1Fix }{ false }ifelse def /_useShells where{ /_useShells get /_usingShells xp }{ /_usingShells false def }ifelse /_useSmoothShade where{ pop }{ /_useSmoothShade false def }ifelse /_forceToCMYK where{ pop }{ /_forceToCMYK false def }ifelse /_cyanPlate 1 0 0 0 testCMYKColorThrough def /_magentaPlate 0 1 0 0 testCMYKColorThrough def /_yellowPlate 0 0 1 0 testCMYKColorThrough def /_blackPlate 0 0 0 1 testCMYKColorThrough def /_compositeJob _cyanPlate _magentaPlate and _yellowPlate and _blackPlate and def /_isCMYKSep _cyanPlate _magentaPlate or _yellowPlate or _blackPlate or def /_compositeSpotDevice where{ pop }{ /_compositeSpotDevice _compositeJob not _inRipSep or{ 1 }{ 0 }ifelse def }ifelse /_producingSeps _compositeSpotDevice 0 ne def /_deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt def /_dpiThreshold where{ pop }{ /_dpiThreshold 600 def }ifelse /_screenFreqThreshold where{ pop }{ /_screenFreqThreshold 150 def }ifelse /_contoneDevice where{ pop }{ /_contoneDevice false def }ifelse /_subSampleOK _deviceDPI _dpiThreshold le currentScreenFreq _screenFreqThreshold le and _contoneDevice not and def }def /initializeRectFill{ /rectfill where dup{ exch pop not _producingSeps or }{ not }ifelse { /rectfill{ gsave newpath 4 2 roll moveto 1 index 0 rlineto 0 1 index rlineto 1 index neg 0 rlineto pop pop closepath fill grestore }def }if }def /initializeLev1{ /currentScreenFreq{ currentscreen pop pop }def /_byte 1 string def /colorimage where{ pop }{ /colorimage{ pop pop /_blackTmp xp /_yellowTmp xp /_magentaTmp xp /_cyanTmp xp /_cnt 0 pt [ _byte dup 0 _cyanTmp /_cnt cvx /get cvx _d255 /exch cvx /get cvx .3 /mul cvx _magentaTmp /_cnt cvx /get cvx _d255 /exch cvx /get cvx .59 /mul cvx _yellowTmp /_cnt cvx /get cvx _d255 /exch cvx /get cvx .11 /mul cvx _blackTmp /_cnt cvx /get cvx _d255 /exch cvx /get cvx /add cvx /add cvx /add cvx 1 /exch cvx /sub cvx /dup cvx 0 /lt cvx{ pop 0 }/if cvx /dup cvx 1 /gt cvx{ pop 1 }/if cvx 255 /mul cvx /cvi cvx 256 /mod cvx /dup cvx 0 /lt cvx{ pop 0 }/if cvx /put cvx /_cnt dup cvx 1 /add cvx /pt cvx ] cvx bind /_image load 5 execImage }def }ifelse }def /initializeLev2{ /level2ScreenFreq{ begin 60 HalftoneType 1 eq{ pop Frequency }if HalftoneType 2 eq{ pop GrayFrequency }if HalftoneType 5 eq{ pop Default level2ScreenFreq }if end }def /currentScreenFreq{ currenthalftone level2ScreenFreq }def }def /initializeShading{ _useSmoothShade _level3PS and{ /_usingSmoothShade true pt initializeLev3_Ops }{ /_usingSmoothShade false pt }ifelse }def /initializeLev3_Ops { /initShFill{ /_index _gradType 0 eq {0}{_maxRampIndex 1 sub} ifelse pt /_rampFuncsArray _maxRampIndex array pt /_boundsArray _maxRampIndex 1 sub array pt /_encodeArray _maxRampIndex 2 mul array pt /_beginCoord _rampPoint pt /_colorSpace null pt /_firstFill _rampIndex _maxRampIndex eq pt /_lastFill false pt }def /linealShFill{ popBSpace _xm aload pop pushBSpace /_size _index 1 add pt _size _maxRampIndex lt { /_rampFuncsArray _rampFuncsArray 0 _size getinterval pt /_boundsArray _boundsArray 0 _size 1 sub getinterval pt /_encodeArray _encodeArray 0 _size 2 mul getinterval pt }if bd /ShadingType 2 /ColorSpace _colorSpace _rgbInCMYK{ /Function [ _cData sampFunc _mData sampFunc _yData sampFunc _kData sampFunc ] }{ /Function bd /FunctionType 3 /Domain [0 1] /Functions _rampFuncsArray /Bounds _boundsArray /Encode _encodeArray ed }ifelse /Extend [_firstFill _lastFill] /Domain [0 1] /Coords [_beginCoord 0 _endCoord 0] ed shfill }def /radialShFill{ /_size _maxRampIndex _index sub pt _size _maxRampIndex lt { /_rampFuncsArray _rampFuncsArray _index _size getinterval pt /_boundsArray _boundsArray _index _size 1 sub getinterval pt /_encodeArray _encodeArray _index 2 mul _size 2 mul getinterval pt }if /_rampLen _beginCoord _endCoord sub pt bd /ShadingType 3 /ColorSpace _colorSpace _rgbInCMYK{ /Function [ _cData sampFunc _mData sampFunc _yData sampFunc _kData sampFunc ] }{ /Function bd /FunctionType 3 /Domain [0 1] /Functions _rampFuncsArray /Bounds _boundsArray /Encode _encodeArray ed }ifelse /Extend [_lastFill _firstFill] /Domain [0 1] /Coords [_xHi _rampLen mul _yHi _rampLen mul _endCoord 0 0 _beginCoord] ed shfill _radHilite{ _xHi _rampLen mul _yHi _rampLen mul translate }if }def % /sampFunc{ /_tmp exch pt bd _tmp length 1 eq { _tmp 0 get /_tmp 2 string pt dup _tmp 0 3 -1 roll put _tmp 1 3 -1 roll put }if /FunctionType 0 /Order 1 /Size [_tmp length] /Domain [0 1] /BitsPerSample 8 /DataSource _tmp /Range [0 1] ed }def /fillRamp{ /_invert _midPoint 0.5 lt pt _rampIndex _maxRampIndex eq { initShFill }if getRampColorSpace _colorSpace null eq{ /_colorSpace _rampColorSpace pt }{ _colorSpace _rampColorSpace ne _rgbInCMYK or{ /_index _index 1 _gradType 0 eq{ sub pt linealShFill }{ add pt radialShFill }ifelse initShFill /_colorSpace _rampColorSpace pt } if }ifelse /_endCoord _endPoint pt /_rgbInCMYK false pt _producingSeps _forceToCMYK or _rgbRamp and { _spotColor{ _renderCMYK }{ _isCMYKSep }ifelse }{ false }ifelse { _compositeJob{ /_rgbInCMYK true pt _cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor dup length string copy /_kData exch pt dup length string copy /_yData exch pt dup length string copy /_mData exch pt dup length string copy /_cData exch pt }{ _rampFuncsArray _index _cyanPlate{_cyanData}if _magentaPlate{_magentaData}if _yellowPlate{_yellowData}if _blackPlate{_blackData}if _nSamples expandOne sampFunc dup begin /Decode [1 0] def end put /_invert false pt }ifelse }{ _rampFuncsArray _index bd /FunctionType 2 /Domain [0 1] /N 0.5 log _invert{1 _midPoint sub}{_midPoint}ifelse log div _gradType 0 eq{ _invert{/C1}{/C0}ifelse _C0 _invert{/C0}{/C1}ifelse _C1 }{ _invert{/C0}{/C1}ifelse _C1 _invert{/C1}{/C0}ifelse _C0 }ifelse ed put }ifelse _rampIndex 1 ne{ _boundsArray _index _gradType 1 eq{1 sub}if _endCoord put } if 0 1 _invert {exch}if _encodeArray _index 2 mul 1 add 3 -1 roll put _encodeArray _index 2 mul 3 -1 roll put _rampIndex 1 eq { /_lastFill true pt _gradType 0 eq{ linealShFill }{ radialShFill }ifelse }if /_index _index 1 _gradType 0 eq{ add pt }{ sub pt }ifelse }def }def /initializeComposite{ /bwImage{ pop /_image load 5 execImage }def /rampImage{ _enabledSmoothShade{ fillRamp }{ _color{ _nSamples setImageParms _rgbRamp _forceToCMYK not and{ _redData _greenData _blueData _nSamples 3 expandColor true 3 null ncolorimage }{ _cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor true 4 null ncolorimage }ifelse }{ _nSamples setImageParms _blackData null bwImage }ifelse }ifelse }def /setCStop{ /_colorStyle exch pt _colorStyle 0 eq{ 1 exch sub 0 0 0 4 -1 roll }if _colorStyle 2 eq{ _forceToCMYK{ 3 npop setcmykcolor }{ setrgbcolor 4 npop }ifelse }if _colorStyle 3 eq{ 1 exch sub /_tmp xp pop 4{ _tmp mul 4 1 roll }repeat }if _colorStyle 4 eq{ _forceToCMYK{ 6 npop setcmykcolor }{ 3 -1 roll pop pop 1 exch sub /_tmp xp 3{ 1 exch sub _tmp mul 1 exch sub 3 1 roll }repeat setrgbcolor 4 npop }ifelse }if _colorStyle 2 ne _colorStyle 4 ne and{ null nsetcustomcolor }if }def /nsetcustomcolor { pop setcmykcolor }def /nsetcustomcolorend { }def /ncolorimage{ pop /_colorimage load 10 execImage }def _noImage not _level2PS not and{ /linealFill{ 8 setImageParms _color{ currentcmykcolor 4{ makeByte8 4 1 roll }repeat true 4 null ncolorimage }{ currentgray makeByte8 null bwImage }ifelse }def }if /getRampColorSpace{ _nSamples 1 gt{ /_ndx 0 pt [blendColor] cvx exec }if /_C0 [currentcolor] pt /_C0_Space currentcolorspace pt _nSamples 1 gt{ /_ndx _nSamples 1 sub pt [blendColor] cvx exec }if /_C1 [currentcolor] pt /_C1_Space currentcolorspace pt /_rampColorSpace _C0_Space pt _spotColor{ nsetcustomcolorend }if }def }def /npop{ {pop}repeat }def /xd{ exch def }def /nd{ null def }def /pt{ AGM_Gradient_private 3 1 roll put }def /xp{ exch pt }def /xput{ dup load dup length exch maxlength eq{ dup dup load dup length 2 mul dict copy def }if load begin def end }def /mySave{ save /_sSave xp }def /myRestore{ _sSave type /savetype eq{ _sSave restore }if }def /gMark{ counttomark 2 add -1 roll }def /execImage{ /_tmp xp { exec }stopped{ $error /errorname get /undefinedresult ne{ stop }{ _tmp npop }ifelse }if }def /pushBSpace{ newpath gsave _bUMatrix astore concat }def /popBSpace{ grestore }def /makeByte8{ /_tmp 0 pt 255 mul cvi 8 string 8{ dup _tmp 3 index put /_tmp _tmp 1 add pt }repeat exch pop }def /setImageParms{ 1 8 2 index 0 0 1 0 0 _imageMatrix astore }def /linealFill{ 0 0 1 1 rectfill }def /testCMYKColorThrough{ gsave setcmykcolor currentcmykcolor grestore add add add 0 ne }def /expandOne { /_tmp xp dup type /stringtype ne{ _tmp string exch dup 0 ne{ 255 mul cvi 0 1 _tmp 1 sub{ 3 copy exch put pop }for }if pop }if }def /expandColor{ /_channels xp /_len xp _channels{ _len expandOne _channels 1 roll }repeat }def /blendColor{ _color{ _rgbRamp _producingSeps not and _forceToCMYK not and{ _redData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _greenData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _blueData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if /setrgbcolor cvx }{ _cyanData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _magentaData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _yellowData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _blackData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _spotColor{ _rampSD begin /_rampSD cvx /begin cvx spot1 begin tintImage dup type /stringtype eq{ /_ndx cvx /get cvx _d255- /exch cvx /get cvx }{ dup null ne{ name type /nametype ne{ 1 exch sub }if }if }ifelse end /spot1 cvx /tintValue 3 -1 /roll cvx /put cvx spot2 begin tintImage dup type /stringtype eq{ /_ndx cvx /get cvx _d255- /exch cvx /get cvx }{ dup null ne{ name type /nametype ne{ 1 exch sub }if }if }ifelse end /spot2 cvx /tintValue 3 -1 /roll cvx /put cvx /end cvx end /_rampSD cvx /nsetcustomcolor cvx }{ /setcmykcolor cvx }ifelse }ifelse }{ _blackData dup type /stringtype eq{ /_ndx cvx /get cvx _d255 /exch cvx /get cvx }if _enabledSmoothShade{ 1 /exch cvx /sub cvx 0 0 0 4 -1 /roll cvx /setcmykcolor cvx }{ /setgray cvx }ifelse }ifelse }def /useRectImage{ _subSampleOK _enabledSmoothShade not and{ { mark 0 1 dtransform atan cvi 90 mod 0 eq 1 0 dtransform atan cvi 90 mod 0 eq } stopped { cleartomark false } { and exch pop } ifelse }{ false }ifelse }def /linealImage{ _noImage{ rectImage }{ _producingSeps{ AGM_Gradient_Sep/AGM_Gradient_Sep_private get /rampImage get exec }{ useRectImage{ rectImage }{ rampImage }ifelse }ifelse }ifelse }def /linealRamp{ pushBSpace _ramp{ linealImage }{ linealFill }ifelse popBSpace /_rampIndex _rampIndex 1 sub pt _rampIndex 0 gt{ getRampData }if }def /radialGrad{ /_usingShells currentoverprint _producingSeps and _usingShells or pt /_firstShell true pt _enabledSmoothShade not{ currentoverprint _producingSeps and{ newpath clippath pathbbox 1 add 4 1 roll 1 add 4 1 roll 1 sub 4 1 roll 1 sub 4 1 roll _bbox astore pop newpath _bbox 0 get _bbox 1 get moveto _bbox 2 get _bbox 1 get lineto _bbox 2 get _bbox 3 get lineto _bbox 0 get _bbox 3 get lineto closepath 6 copy gsave _bUMatrix astore concat 1 0 moveto 0 0 1 0 360 arc closepath eoclip fill popBSpace }{ fill }ifelse }if pushBSpace _radHilite{ _xHi _yHi _bUMatrix idtransform /_yHi xp /_xHi xp _rampPoint 1 lt{ 1 _rampPoint sub dup _xHi mul exch _yHi mul translate }if }if _rampIndex{ radialRamp /_rampIndex _rampIndex 1 sub pt _rampIndex 0 gt{ getRampData }if }repeat popBSpace }def /getNSamples{ 0 exch { dup type /stringtype eq{ length exch pop exit }if pop }forall dup 0 eq{ pop 1 }if }def /getRampData{ /_rampType gMark pt /_color _rampType 0 gt pt /_ccRGB _rampType 5 eq _rampType 6 eq or pt /_rgbRamp _rampType 4 eq _ccRGB or pt /_ccProcess _rampType 2 eq _rampType 3 eq or pt _producingSeps{ _rampSD initSpotDict /_spotColor _ccProcess _ccRGB or pt }{ /_spotColor false pt }ifelse /_ramp true pt 100 div /_rampPoint xp 100 div /_midPoint xp dup /_colorStyle xp _colorStyle 0 eq{ 2 }{ _colorStyle 1 eq{ 5 }{ _colorStyle 2 eq{ 8 }{ _colorStyle 3 eq{ _producingSeps{ _rampSD /spot1 get begin /name 3 index def /spot_K 4 index def /spot_Y 5 index def /spot_M 6 index def /spot_C 7 index def end }if 7 }{ _producingSeps{ _rampSD/spot1 get begin /name 4 index def /spot_K 8 index def /spot_Y 9 index def /spot_M 10 index def /spot_C 11 index def end }if 11 } ifelse }ifelse }ifelse }ifelse /_tmp xp _tmp index 100 div /_endPoint xp _gradType 1 eq{ _tmp 1 add index 100 div /_midPoint xp }if _producingSeps{ _tmp 2 add index /_nextColorStyle xp _nextColorStyle 3 eq{ /_tmp _tmp 4 add pt _tmp index dup _rampSD/spot1 get /name get ne{ _rampSD /spot2 get begin /name xd /spot_K _tmp 2 add index def /spot_Y _tmp 3 add index def /spot_M _tmp 4 add index def /spot_C _tmp 5 add index def end }{ pop }ifelse }if _nextColorStyle 4 eq{ /_tmp _tmp 5 add pt _tmp index dup _rampSD/spot1 get /name get ne{ _rampSD /spot2 get begin /name xd /spot_K _tmp 5 add index def /spot_Y _tmp 6 add index def /spot_M _tmp 7 add index def /spot_C _tmp 8 add index def end }{ pop }ifelse }if }if _rampType 3 eq _rampType 6 eq or{ /_tint2Data gMark pt }if _ccProcess _ccRGB or{ /_tint1Data gMark pt }if _rgbRamp{ /_blueData gMark pt /_greenData gMark pt /_redData gMark pt }if _producingSeps{ _ccProcess _ccRGB or{ _rampType 3 eq _rampType 6 eq or{ _rampSD /spot2 get begin /tintImage _gradType 0 eq{ _tint2Data }{ _tint1Data }ifelse def name null eq{ /name /Black def }if end }if _rampSD /spot1 get begin /tintImage _gradType 0 eq _rampType 2 eq or _rampType 5 eq or{ _tint1Data }{ _tint2Data }ifelse def _rampType 2 eq _rampType 5 eq or{ name null eq{ /name _rampSD/spot2 get /name get def /spot_C _rampSD/spot2 get /spot_C get def /spot_M _rampSD/spot2 get /spot_M get def /spot_Y _rampSD/spot2 get /spot_Y get def /spot_K _rampSD/spot2 get /spot_K get def _rampSD/spot2 get /name null put }if }{ name null eq{ /name /Black def }if }ifelse end }if }if /_blackData gMark pt _rampType 0 gt{ counttomark 4 add -3 roll /_yellowData xp /_magentaData xp /_cyanData xp }if _ramp{ /_nSamples [ _rampType 0 eq {_blackData}if _rampType 1 eq {_cyanData _magentaData _yellowData _blackData}if _rampType 2 eq {_cyanData _magentaData _yellowData _blackData _tint1Data}if _rampType 3 eq {_cyanData _magentaData _yellowData _blackData _tint1Data _tint2Data}if _rampType 4 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData}if _rampType 5 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData _tint1Data}if _rampType 6 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData _tint1Data _tint2Data}if ] getNSamples pt _enabledSmoothShade not {/_ramp _nSamples 1 gt pt} if } if setCStop }def /rectImage{ gsave /_sInc 1 pt /_bInc 1 _nSamples div pt /_nSubSamples _nSamples pt /_optimize false pt _subSampleOK{ /_uRampLen 1 0 dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt pt /_pChange _uRampLen 0 eq{0}{_nSamples _uRampLen div}ifelse pt _pChange .5 gt dup /_optimize xp{ /_nSubSamples _uRampLen 2 div round cvi dup 1 le{pop 2}if pt /_bInc 1 _nSubSamples div pt /_sInc _nSamples 1 sub _nSubSamples 1 sub div pt }if }if 0 _nSubSamples [ /dup cvx _optimize { /round cvx /cvi cvx } if /_ndx /exch cvx /pt cvx blendColor 0 0 _bInc 1 /rectfill cvx _bInc 0 /translate cvx _sInc /add cvx ] cvx bind repeat pop _spotColor{ nsetcustomcolorend }if grestore }def /radialInit{ /_nRadSamples _nSamples dup 0 eq{pop 1}if pt /_sInc -1 pt /_rampLen _rampPoint _endPoint sub pt /_bInc _rampLen _nSamples div neg pt /_optimize false pt _subSampleOK{ /_uRampLen _rampLen 0 dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt 0 _rampLen dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt 2 copy lt{ exch }if pop pt /_pChange _uRampLen 0 eq{ 0 }{ _nSamples _uRampLen div }ifelse pt _pChange .5 gt dup /_optimize xp{ /_nRadSamples _uRampLen 2 div round cvi dup 1 le{pop 2}if pt /_bInc _rampLen _nRadSamples div neg pt /_sInc _nSamples 1 sub _nRadSamples 1 sub div neg pt }if }if _radHilite{ /_xBCInc _xHi _rampLen mul _nRadSamples div pt /_yBCInc _yHi _rampLen mul _nRadSamples div pt }if }def /radialRamp{ _enabledSmoothShade{ fillRamp }{ /_saveMatrix _saveMatrix currentmatrix def radialInit % % true _producingSeps _rgbRamp not and{ _nSamples 1 gt{ pop /_ndx 0 pt [blendColor] cvx exec currentInkN /_ndx _nSamples 1 sub pt [blendColor] cvx exec currentInkN or }if }if { _rampPoint _nSamples 1 sub _nRadSamples [ /dup cvx _optimize{ /round cvx /cvi cvx }if /_ndx /exch cvx /pt cvx _usingShells{ /_firstShell cvx{ /_firstShell false pt }{ 0 0 3 index 360 0 arcn fill }/ifelse cvx }if blendColor _usingShells{ 0 0 3 /index cvx 0 360 /arc cvx }{ 0 0 3 /index cvx 0 360 /arc cvx /fill cvx }ifelse /exch cvx _bInc /add cvx /exch cvx _sInc /add cvx _radHilite{ _xBCInc _yBCInc /translate cvx }if ] cvx bind repeat pop pop }{ _usingShells{ 0 0 _rampPoint 360 0 arcn fill }if }ifelse _saveMatrix setmatrix _radHilite{ _xHi _rampLen mul _yHi _rampLen mul translate }if _usingShells _rampIndex 1 eq and{ fill }if _spotColor{ nsetcustomcolorend }if }ifelse }def end end defaultpacking setpacking %%EndResource %%BeginProcSet: Adobe_ColorImage_AI6 1.2 0 userdict /Adobe_ColorImage_AI6 known not { userdict /Adobe_ColorImage_AI6 50 dict put } if userdict /Adobe_ColorImage_AI6 get begin /initialize { Adobe_ColorImage_AI6 begin Adobe_ColorImage_AI6 { dup type /arraytype eq { dup xcheck { bind } if } if pop pop } forall } def /terminate { end } def currentdict /Adobe_ColorImage_AI6_Vars known not { /Adobe_ColorImage_AI6_Vars 40 dict def } if Adobe_ColorImage_AI6_Vars begin /plateindex -1 def /_newproc null def /_proc1 null def /_proc2 null def /channelcount 0 def /sourcecount 0 def /sourcearray 4 array def /_ptispace null def /_ptiname null def /_pti0 0 def /_pti1 0 def /_ptiproc null def /_ptiscale 0 def /_pticomps 0 def /_ptibuf 0 string def /_gtigray 0 def /_cticmyk null def /_rtirgb null def /XIEnable true def /XIType 0 def /XIEncoding 0 def /XICompression 0 def /XIChannelCount 0 def /XIBitsPerPixel 0 def /XIImageHeight 0 def /XIImageWidth 0 def /XIImageMatrix null def /XIRowBytes 0 def /XIFile null def /XIBuffer1 null def /XIBuffer2 null def /XIDataProc null def /XIVersion 6 def /XIColorSpace /DeviceGray def /XIColorValues 0 def end currentdict /_colorimage known not { /colorimage where { /colorimage get /_colorimage exch def }{ /_colorimage null def } ifelse } if /_image systemdict /image get def /_currenttransfer systemdict /currenttransfer get def /FourEqual { 4 index ne { pop pop pop false }{ 4 index ne { pop pop false }{ 4 index ne { pop false }{ 4 index eq } ifelse } ifelse } ifelse } def /TestPlateIndex { Adobe_ColorImage_AI6_Vars begin /plateindex -1 def /setcmykcolor where { pop gsave 1 0 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub 0 1 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub 0 0 1 0 setcmykcolor systemdict /currentgray get exec 1 exch sub 0 0 0 1 setcmykcolor systemdict /currentgray get exec 1 exch sub grestore 1 0 0 0 FourEqual { /plateindex 0 def }{ 0 1 0 0 FourEqual { /plateindex 1 def }{ 0 0 1 0 FourEqual { /plateindex 2 def }{ 0 0 0 1 FourEqual { /plateindex 3 def }{ 0 0 0 0 FourEqual { /plateindex 5 def } if } ifelse } ifelse } ifelse } ifelse pop pop pop pop } if plateindex end } def /concatprocs { /packedarray where { pop dup type /packedarraytype eq 2 index type /packedarraytype eq or }{ false } ifelse { /_proc2 exch cvlit def /_proc1 exch cvlit def _proc1 aload pop _proc2 aload pop _proc1 length _proc2 length add packedarray cvx }{ /_proc2 exch cvlit def /_proc1 exch cvlit def /_newproc _proc1 length _proc2 length add array def _newproc 0 _proc1 putinterval _newproc _proc1 length _proc2 putinterval _newproc cvx } ifelse } def /clrspaceissepn { type /arraytype eq } def /clrspacegetname { dup clrspaceissepn {dup length 2 sub get}{pop ()} ifelse } def /clrspacegetalt { aload pop pop pop colormake } def /clrspacegetcomps { dup /DeviceGray eq { pop 1 }{ dup /DeviceRGB eq { pop 3 }{ /DeviceCMYK eq { 4 }{ 1 } ifelse } ifelse } ifelse } def /clrspacemarksplate { dup /DeviceGray eq { pop plateindex 3 eq }{ dup /DeviceRGB eq { pop plateindex 5 ne }{ dup /DeviceCMYK eq { pop plateindex 5 ne }{ /findcmykcustomcolor where { pop dup length 2 sub get 0.1 0.1 0.1 0.1 5 -1 roll findcmykcustomcolor 1 setcustomcolor systemdict /currentgray get exec 1 ne }{ pop plateindex 5 ne } ifelse } ifelse } ifelse } ifelse } def /colormake { dup clrspacegetcomps exch 1 index 2 add 1 roll dup 1 eq {pop}{array astore} ifelse exch } def /colorexpand { dup clrspacegetname exch dup clrspaceissepn { clrspacegetalt exch 4 1 roll }{ 1 3 1 roll } ifelse } def /colortint { dup /DeviceGray eq { 3 1 roll 1 exch sub mul 1 exch sub exch }{ dup /DeviceRGB eq { 3 1 roll {1 exch sub 1 index mul 1 exch sub exch} forall pop 3 array astore exch }{ dup /DeviceCMYK eq { 3 1 roll {1 index mul exch} forall pop 4 array astore exch }{ 3 1 roll mul exch } ifelse } ifelse } ifelse } def /colortocmyk { dup /DeviceGray eq { pop 1 exch sub 0 0 0 4 -1 roll 4 array astore }{ dup /DeviceRGB eq { pop aload pop _rgbtocmyk 4 array astore }{ dup /DeviceCMYK eq { pop }{ clrspacegetalt colortint colortocmyk } ifelse } ifelse } ifelse } def /makeimagedict { 7 dict begin /ImageType 1 def /Decode exch def /DataSource exch def /ImageMatrix exch def /BitsPerComponent exch def /Height exch def /Width exch def currentdict end } def /stringinvert { 0 1 2 index length 1 sub { dup 2 index exch get 255 exch sub 2 index 3 1 roll put } for } def /stringknockout { 0 1 2 index length 1 sub { 255 2 index 3 1 roll put } for } def /stringapply { 0 1 4 index length 1 sub { dup 4 index exch get 3 index 3 1 roll 3 index exec } for pop exch pop } def /WalkRGBString { 0 3 index dup length 1 sub 0 3 3 -1 roll { 3 getinterval {} forall 5 index exec 3 index } for 5 {pop} repeat } def /WalkCMYKString { 0 3 index dup length 1 sub 0 4 3 -1 roll { 4 getinterval {} forall 6 index exec 3 index } for 5 { pop } repeat } def /StuffRGBIntoGrayString { .11 mul exch .59 mul add exch .3 mul add cvi 3 copy put pop 1 add } def /StuffCMYKIntoGrayString { exch .11 mul add exch .59 mul add exch .3 mul add dup 255 gt { pop 255 } if 255 exch sub cvi 3 copy put pop 1 add } def /RGBToGrayImageProc { Adobe_ColorImage_AI6_Vars begin sourcearray 0 get exec dup length 3 idiv string dup 3 1 roll /StuffRGBIntoGrayString load exch WalkRGBString end } def /CMYKToGrayImageProc { Adobe_ColorImage_AI6_Vars begin sourcearray 0 get exec dup length 4 idiv string dup 3 1 roll /StuffCMYKIntoGrayString load exch WalkCMYKString end } def /SeparateCMYKImageProc { Adobe_ColorImage_AI6_Vars begin sourcecount 0 ne { sourcearray plateindex get exec }{ sourcearray 0 get exec dup length 4 idiv string 0 2 index plateindex 4 2 index length 1 sub { get 255 exch sub 3 copy put pop 1 add 2 index } for pop pop exch pop } ifelse end } def /ColorImageCompositeEmulator { pop true eq { Adobe_ColorImage_AI6_Vars /sourcecount get 5 add { pop } repeat }{ Adobe_ColorImage_AI6_Vars /channelcount get 1 ne { Adobe_ColorImage_AI6_Vars begin sourcearray 0 3 -1 roll put channelcount 3 eq {/RGBToGrayImageProc}{/CMYKToGrayImageProc} ifelse load end } if image } ifelse } def /colorimage { Adobe_ColorImage_AI6_Vars begin /channelcount 1 index def /sourcecount 2 index 1 eq { channelcount 1 sub } { 0 } ifelse def 4 sourcecount add index end dup 8 eq exch 1 eq or not { /_colorimage load null ne { _colorimage }{ Adobe_ColorImage_AI6_Vars /sourcecount get 7 add { pop } repeat } ifelse }{ dup 3 eq TestPlateIndex dup -1 eq exch 5 eq or or { /_colorimage load null eq { ColorImageCompositeEmulator }{ dup 1 eq { pop pop image }{ Adobe_ColorImage_AI6_Vars /plateindex get 5 eq { gsave 0 _currenttransfer exec 1 _currenttransfer exec eq { 0 _currenttransfer exec 0.5 lt } { 0 _currenttransfer exec 1 _currenttransfer exec gt } ifelse { { pop 0 } } { { pop 1 } } ifelse systemdict /settransfer get exec } if _colorimage Adobe_ColorImage_AI6_Vars /plateindex get 5 eq { grestore } if } ifelse } ifelse }{ dup 1 eq { pop pop image }{ pop pop Adobe_ColorImage_AI6_Vars begin sourcecount -1 0 { exch sourcearray 3 1 roll put } for /SeparateCMYKImageProc load end systemdict /image get exec } ifelse } ifelse } ifelse } def /proctintimage { /_ptispace exch store /_ptiname exch store /_pti1 exch store /_pti0 exch store /_ptiproc exch store /_pticomps _ptispace clrspacegetcomps store /_ptiscale _pti1 _pti0 sub store level2? { _ptiname length 0 gt version cvr 2012 ge and { [/Separation _ptiname _ptispace {_ptiproc}] setcolorspace [_pti0 _pti1] makeimagedict _image }{ [/Indexed _ptispace 255 {255 div _ptiscale mul _pti0 add _ptiproc}] setcolorspace [0 255] makeimagedict _image } ifelse }{ _pticomps 1 eq { { dup { 255 div _ptiscale mul _pti0 add _ptiproc 255 mul cvi put } stringapply } concatprocs _image }{ { dup length _pticomps mul dup _ptibuf length ne {/_ptibuf exch string store}{pop} ifelse _ptibuf { exch _pticomps mul exch 255 div _ptiscale mul _pti0 add _ptiproc _pticomps 2 add -2 roll _pticomps 1 sub -1 0 { 1 index add 2 index exch 5 -1 roll 255 mul cvi put } for pop pop } stringapply } concatprocs false _pticomps /_colorimage load null eq {7 {pop} repeat}{_colorimage} ifelse } ifelse } ifelse } def /graytintimage { /_gtigray 5 -1 roll store {1 _gtigray sub mul 1 exch sub} 4 1 roll /DeviceGray proctintimage } def /cmyktintimage { /_cticmyk 5 -1 roll store {_cticmyk {1 index mul exch} forall pop} 4 1 roll /DeviceCMYK proctintimage } def /rgbtintimage { /_rtirgb 5 -1 roll store {_rtirgb {1 exch sub 1 index mul 1 exch sub exch} forall pop} 4 1 roll /DeviceRGB proctintimage } def /tintimage { TestPlateIndex -1 eq { colorexpand 3 -1 roll 5 -1 roll {0}{0 exch} ifelse 4 2 roll dup /DeviceGray eq { pop graytintimage }{ dup /DeviceRGB eq { pop rgbtintimage }{ pop cmyktintimage } ifelse } ifelse }{ dup clrspacemarksplate { plateindex 5 lt { colortocmyk plateindex get 1 exch sub exch {1 0}{0 1} ifelse () graytintimage }{ pop exch {0}{0 exch} ifelse 0 3 1 roll () graytintimage } ifelse }{ pop pop pop {pop 1} 0 1 () /DeviceGray proctintimage } ifelse } ifelse } def /XINullImage { } def /XIImageMask { XIImageWidth XIImageHeight false [XIImageWidth 0 0 XIImageHeight neg 0 0] /XIDataProc load imagemask } def /XIImageTint { 0 setgray XIImageWidth XIImageHeight XIBitsPerPixel [XIImageWidth 0 0 XIImageHeight neg 0 0] /XIDataProc load XIType 3 eq XIColorValues XIColorSpace tintimage } def /XIImage { 0 setgray XIImageWidth XIImageHeight XIBitsPerPixel [XIImageWidth 0 0 XIImageHeight neg 0 0] /XIDataProc load XIChannelCount 1 eq {image}{false XIChannelCount colorimage} ifelse } def /XG { pop pop } def /XF { 13 {pop} repeat } def /Xh { Adobe_ColorImage_AI6_Vars begin gsave /XIType exch def /XIImageHeight exch def /XIImageWidth exch def /XIImageMatrix exch def 0 0 moveto XIImageMatrix concat XIImageWidth XIImageHeight scale XIType 1 eq { /_lp /null ddef _fc /_lp /imagemask ddef } if /XIVersion 7 def end } def /XH { Adobe_ColorImage_AI6_Vars begin /XIVersion 6 def grestore end } def /XIEnable { Adobe_ColorImage_AI6_Vars /XIEnable 3 -1 roll put } def /XC { Adobe_ColorImage_AI6_Vars begin colormake /XIColorSpace exch def /XIColorValues exch def end } def /XI { Adobe_ColorImage_AI6_Vars begin gsave /XIType exch def cvi dup 256 idiv /XICompression exch store 256 mod /XIEncoding exch store pop pop /XIChannelCount exch def /XIBitsPerPixel exch def /XIImageHeight exch def /XIImageWidth exch def pop pop pop pop /XIImageMatrix exch def XIBitsPerPixel 1 eq { XIImageWidth 8 div ceiling cvi }{ XIImageWidth XIChannelCount mul } ifelse /XIRowBytes exch def XIEncoding 0 ne XIVersion 6 le and { currentfile 128 string readline pop pop } if XICompression 0 eq { /XIBuffer1 XIRowBytes string def XIEncoding 0 eq { {currentfile XIBuffer1 readhexstring pop} }{ {currentfile XIBuffer1 readstring pop} } ifelse }{ /XIBuffer1 256 string def /XIBuffer2 XIRowBytes string def {currentfile XIBuffer1 readline pop (%) anchorsearch {pop} if} /ASCIIHexDecode filter /DCTDecode filter /XIFile exch def {XIFile XIBuffer2 readstring pop} } ifelse /XIDataProc exch def XIVersion 6 le { 0 0 moveto XIImageMatrix concat XIImageWidth XIImageHeight scale XIType 1 eq { /_lp /null ddef _fc /_lp /imagemask ddef } if } if XIEnable { XIType 1 eq { XIImageMask }{ XIType 2 eq XIType 3 eq or { XIImageTint }{ XIImage } ifelse } ifelse }{ XINullImage } ifelse grestore end } def end %%EndProcSet %%BeginResource: procset Adobe_Illustrator_AI5 1.2 0 %%Title: (Adobe Illustrator (R) Version 7.0 Full Prolog) %%Version: 1.2 0 %%CreationDate: (3/7/1994) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_Illustrator_AI5_vars 107 dict dup begin put /_eo false def /_lp /none def /_pf { } def /_ps { } def /_psf { } def /_pss { } def /_pjsf { } def /_pjss { } def /_pola 0 def /_doClip 0 def /cf currentflat def /_lineorientation 0 def /_charorientation 0 def /_yokoorientation 0 def /_tm matrix def /_renderStart [ /e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0 ] def /_renderEnd [ null null null null /i1 /i1 /i1 /i1 ] def /_render -1 def /_shift [0 0] def /_ax 0 def /_ay 0 def /_cx 0 def /_cy 0 def /_leading [ 0 0 ] def /_ctm matrix def /_mtx matrix def /_sp 16#020 def /_hyphen (-) def /_fontSize 0 def /_fontAscent 0 def /_fontDescent 0 def /_fontHeight 0 def /_fontRotateAdjust 0 def /Ss 256 string def Ss 0 (fonts/) putinterval /_cnt 0 def /_scale [1 1] def /_nativeEncoding 0 def /_useNativeEncoding 0 def /_tempEncode 0 def /_pntr 0 def /_tDict 2 dict def /_hfname 100 string def /_hffound false def /Tx { } def /Tj { } def /CRender { } def /_AI3_savepage { } def /_gf null def /_cf 4 array def /_rgbf 3 array def /_if null def /_of false def /_fc { } def /_gs null def /_cs 4 array def /_rgbs 3 array def /_is null def /_os false def /_sc { } def /_pd 1 dict def /_ed 15 dict def /_pm matrix def /_fm null def /_fd null def /_fdd null def /_sm null def /_sd null def /_sdd null def /_i null def /_lobyte 0 def /_hibyte 0 def /_cproc null def /_cscript 0 def /_hvax 0 def /_hvay 0 def /_hvwb 0 def /_hvcx 0 def /_hvcy 0 def /_bitfont null def /_bitlobyte 0 def /_bithibyte 0 def /_bitkey null def /_bitdata null def /_bitindex 0 def /discardSave null def /buffer 256 string def /beginString null def /endString null def /endStringLength null def /layerCnt 1 def /layerCount 1 def /perCent (%) 0 get def /perCentSeen? false def /newBuff null def /newBuffButFirst null def /newBuffLast null def /clipForward? false def end userdict /Adobe_Illustrator_AI5 known not { userdict /Adobe_Illustrator_AI5 95 dict put } if userdict /Adobe_Illustrator_AI5 get begin /initialize { Adobe_Illustrator_AI5 dup begin Adobe_Illustrator_AI5_vars begin discardDict { bind pop pop } forall dup /nc get begin { dup xcheck 1 index type /operatortype ne and { bind } if pop pop } forall end newpath } def /terminate { end end } def /_ null def /ddef { Adobe_Illustrator_AI5_vars 3 1 roll put } def /xput { dup load dup length exch maxlength eq { dup dup load dup length 2 mul dict copy def } if load begin def end } def /npop { { pop } repeat } def /hswj { dup stringwidth 3 2 roll { _hvwb eq { exch _hvcx add exch _hvcy add } if exch _hvax add exch _hvay add } cforall } def /vswj { 0 0 3 -1 roll { dup 255 le _charorientation 1 eq and { dup cstring stringwidth 5 2 roll _hvwb eq { exch _hvcy sub exch _hvcx sub } if exch _hvay sub exch _hvax sub 4 -1 roll sub exch 3 -1 roll sub exch } { _hvwb eq { exch _hvcy sub exch _hvcx sub } if exch _hvay sub exch _hvax sub _fontHeight sub } ifelse } cforall } def /swj { 6 1 roll /_hvay exch ddef /_hvax exch ddef /_hvwb exch ddef /_hvcy exch ddef /_hvcx exch ddef _lineorientation 0 eq { hswj } { vswj } ifelse } def /sw { 0 0 0 6 3 roll swj } def /vjss { 4 1 roll { dup cstring dup length 1 eq _charorientation 1 eq and { -90 rotate currentpoint _fontRotateAdjust add moveto gsave false charpath currentpoint 5 index setmatrix stroke grestore _fontRotateAdjust sub moveto _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto 90 rotate } { currentpoint _fontHeight sub 5 index sub 3 index _sp eq { 9 index sub } if currentpoint exch 4 index stringwidth pop 2 div sub exch _fontAscent sub moveto gsave 2 index false charpath 6 index setmatrix stroke grestore moveto pop pop } ifelse } cforall 6 npop } def /hjss { 4 1 roll { dup cstring gsave false charpath currentpoint 5 index setmatrix stroke grestore moveto _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto } cforall 6 npop } def /jss { _lineorientation 0 eq { hjss } { vjss } ifelse } def /ss { 0 0 0 7 3 roll jss } def /vjsp { 4 1 roll { dup cstring dup length 1 eq _charorientation 1 eq and { -90 rotate currentpoint _fontRotateAdjust add moveto false charpath currentpoint _fontRotateAdjust sub moveto _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto 90 rotate } { currentpoint _fontHeight sub 5 index sub 3 index _sp eq { 9 index sub } if currentpoint exch 4 index stringwidth pop 2 div sub exch _fontAscent sub moveto 2 index false charpath moveto pop pop } ifelse } cforall 6 npop } def /hjsp { 4 1 roll { dup cstring false charpath _sp eq { 5 index 5 index rmoveto } if 2 copy rmoveto } cforall 6 npop } def /jsp { matrix currentmatrix _lineorientation 0 eq {hjsp} {vjsp} ifelse } def /sp { matrix currentmatrix 0 0 0 7 3 roll _lineorientation 0 eq {hjsp} {vjsp} ifelse } def /pl { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform } def /setstrokeadjust where { pop true setstrokeadjust /c { curveto } def /C /c load def /v { currentpoint 6 2 roll curveto } def /V /v load def /y { 2 copy curveto } def /Y /y load def /l { lineto } def /L /l load def /m { moveto } def } { /c { pl curveto } def /C /c load def /v { currentpoint 6 2 roll pl curveto } def /V /v load def /y { pl 2 copy curveto } def /Y /y load def /l { pl lineto } def /L /l load def /m { pl moveto } def } ifelse /d { setdash } def /cf { } def /i { dup 0 eq { pop cf } if setflat } def /j { setlinejoin } def /J { setlinecap } def /M { setmiterlimit } def /w { setlinewidth } def /XR { 0 ne /_eo exch ddef } def /H { } def /h { closepath } def /N { _pola 0 eq { _doClip 1 eq { _eo {eoclip} {clip} ifelse /_doClip 0 ddef } if newpath } { /CRender { N } ddef } ifelse } def /n { N } def /F { _pola 0 eq { _doClip 1 eq { gsave _pf grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _fc /_doClip 0 ddef } { _pf } ifelse } { /CRender { F } ddef } ifelse } def /f { closepath F } def /S { _pola 0 eq { _doClip 1 eq { gsave _ps grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc /_doClip 0 ddef } { _ps } ifelse } { /CRender { S } ddef } ifelse } def /s { closepath S } def /B { _pola 0 eq { _doClip 1 eq gsave F grestore { gsave S grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc /_doClip 0 ddef } { S } ifelse } { /CRender { B } ddef } ifelse } def /b { closepath B } def /W { /_doClip 1 ddef } def /* { count 0 ne { dup type /stringtype eq { pop } if } if newpath } def /u { } def /U { } def /q { _pola 0 eq { gsave } if } def /Q { _pola 0 eq { grestore } if } def /*u { _pola 1 add /_pola exch ddef } def /*U { _pola 1 sub /_pola exch ddef _pola 0 eq { CRender } if } def /D { pop } def /*w { } def /*W { } def /` { /_i save ddef clipForward? { nulldevice } if 6 1 roll 4 npop concat pop userdict begin /showpage { } def 0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit [] 0 setdash /setstrokeadjust where {pop false setstrokeadjust} if newpath 0 setgray false setoverprint } def /~ { end _i restore } def /O { 0 ne /_of exch ddef /_lp /none ddef } def /R { 0 ne /_os exch ddef /_lp /none ddef } def /g { /_gf exch ddef /_fc { _lp /fill ne { _of setoverprint _gf setgray /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /G { /_gs exch ddef /_sc { _lp /stroke ne { _os setoverprint _gs setgray /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /k { _cf astore pop /_fc { _lp /fill ne { _of setoverprint _cf aload pop setcmykcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /K { _cs astore pop /_sc { _lp /stroke ne { _os setoverprint _cs aload pop setcmykcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /Xa { _rgbf astore pop /_fc { _lp /fill ne { _of setoverprint _rgbf aload pop setrgbcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /XA { _rgbs astore pop /_sc { _lp /stroke ne { _os setoverprint _rgbs aload pop setrgbcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /_rgbtocmyk { 3 { 1 exch sub 3 1 roll } repeat 3 copy 1 4 1 roll 3 { 3 index 2 copy gt { exch } if pop 4 1 roll } repeat pop pop pop 4 1 roll 3 { 3 index sub 3 1 roll } repeat 4 -1 roll } def /Xx { exch /_gf exch ddef 0 eq { findcmykcustomcolor } { /findrgbcustomcolor where not { 4 1 roll _rgbtocmyk 5 -1 roll findcmykcustomcolor } { pop findrgbcustomcolor } ifelse } ifelse /_if exch ddef /_fc { _lp /fill ne { _of setoverprint _if _gf 1 exch sub setcustomcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /XX { exch /_gs exch ddef 0 eq { findcmykcustomcolor } { /findrgbcustomcolor where not { 4 1 roll _rgbtocmyk 5 -1 roll findcmykcustomcolor } { pop findrgbcustomcolor } ifelse } ifelse /_is exch ddef /_sc { _lp /stroke ne { _os setoverprint _is _gs 1 exch sub setcustomcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /x { /_gf exch ddef findcmykcustomcolor /_if exch ddef /_fc { _lp /fill ne { _of setoverprint _if _gf 1 exch sub setcustomcolor /_lp /fill ddef } if } ddef /_pf { _fc _eo {eofill} {fill} ifelse } ddef /_psf { _fc hvashow } ddef /_pjsf { _fc hvawidthshow } ddef /_lp /none ddef } def /X { /_gs exch ddef findcmykcustomcolor /_is exch ddef /_sc { _lp /stroke ne { _os setoverprint _is _gs 1 exch sub setcustomcolor /_lp /stroke ddef } if } ddef /_ps { _sc stroke } ddef /_pss { _sc ss } ddef /_pjss { _sc jss } ddef /_lp /none ddef } def /A { pop } def /annotatepage { userdict /annotatepage 2 copy known {get exec} {pop pop} ifelse } def /XT { pop pop } def /discard { save /discardSave exch store discardDict begin /endString exch store gt38? { 2 add } if load stopped pop end discardSave restore } bind def userdict /discardDict 7 dict dup begin put /pre38Initialize { /endStringLength endString length store /newBuff buffer 0 endStringLength getinterval store /newBuffButFirst newBuff 1 endStringLength 1 sub getinterval store /newBuffLast newBuff endStringLength 1 sub 1 getinterval store } def /shiftBuffer { newBuff 0 newBuffButFirst putinterval newBuffLast 0 currentfile read not { stop } if put } def 0 { pre38Initialize mark currentfile newBuff readstring exch pop { { newBuff endString eq { cleartomark stop } if shiftBuffer } loop } { stop } ifelse } def 1 { pre38Initialize /beginString exch store mark currentfile newBuff readstring exch pop { { newBuff beginString eq { /layerCount dup load 1 add store } { newBuff endString eq { /layerCount dup load 1 sub store layerCount 0 eq { cleartomark stop } if } if } ifelse shiftBuffer } loop } if } def 2 { mark { currentfile buffer readline not { stop } if endString eq { cleartomark stop } if } loop } def 3 { /beginString exch store /layerCnt 1 store mark { currentfile buffer readline not { stop } if dup beginString eq { pop /layerCnt dup load 1 add store } { endString eq { layerCnt 1 eq { cleartomark stop } { /layerCnt dup load 1 sub store } ifelse } if } ifelse } loop } def end userdict /clipRenderOff 15 dict dup begin put { /n /N /s /S /f /F /b /B } { { _doClip 1 eq { /_doClip 0 ddef _eo {eoclip} {clip} ifelse } if newpath } def } forall /Tr /pop load def /Bb {} def /BB /pop load def /Bg {12 npop} def /Bm {6 npop} def /Bc /Bm load def /Bh {4 npop} def end /Lb { 4 npop 6 1 roll pop 4 1 roll pop pop pop 0 eq { 0 eq { (%AI5_BeginLayer) 1 (%AI5_EndLayer--) discard } { /clipForward? true def /Tx /pop load def /Tj /pop load def currentdict end clipRenderOff begin begin } ifelse } { 0 eq { save /discardSave exch store } if } ifelse } bind def /LB { discardSave dup null ne { restore } { pop clipForward? { currentdict end end begin /clipForward? false ddef } if } ifelse } bind def /Pb { pop pop 0 (%AI5_EndPalette) discard } bind def /Np { 0 (%AI5_End_NonPrinting--) discard } bind def /Ln /pop load def /Ap /pop load def /Ar { 72 exch div 0 dtransform dup mul exch dup mul add sqrt dup 1 lt { pop 1 } if setflat } def /Mb { q } def /Md { } def /MB { Q } def /nc 4 dict def nc begin /setgray { pop } bind def /setcmykcolor { 4 npop } bind def /setrgbcolor { 3 npop } bind def /setcustomcolor { 2 npop } bind def currentdict readonly pop end end setpacking %%EndResource %%BeginResource: procset Adobe_pattern_AI5 1.1 0 %%Title: (Adobe Illustrator (R) Version 5.0 Pattern Operators) %%Version: 1.1 0 %%CreationDate: (03/26/93) () %%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_Illustrator_AI5 known not { userdict /Adobe_Illustrator_AI5 95 dict put } if userdict /Adobe_Illustrator_AI5 get begin /@ { } def /& { } def /dp { dup null eq { pop _dp 0 ne { 0 1 _dp 1 sub _dl mod { _da exch get 3 get } for _dp 1 sub _dl mod 1 add packedarray _da 0 get aload pop 8 -1 roll 5 -1 roll pop 4 1 roll definepattern pop } if } { _dp 0 ne _dp _dl mod 0 eq and { null dp } if 7 packedarray _da exch _dp _dl mod exch put _dp _dl mod _da 0 get 4 get 2 packedarray /_dp _dp 1 add def } ifelse } def /E { _ed begin dup 0 get type /arraytype ne { 0 { dup 1 add index type /arraytype eq { 1 add } { exit } ifelse } loop array astore } if /_dd exch def /_ury exch def /_urx exch def /_lly exch def /_llx exch def /_n exch def /_y 0 def /_dl 4 def /_dp 0 def /_da _dl array def 0 1 _dd length 1 sub { /_d exch _dd exch get def 0 2 _d length 2 sub { /_x exch def /_c false def /_r _d _x 1 add get cvlit def _r _ ne { _urx _llx sub _ury _lly sub [ 1 0 0 1 0 0 ] [ /save cvx _llx neg _lly neg /translate cvx _c { nc /begin cvx } if _r dup type /stringtype eq { cvx } { { exec } /forall cvx } ifelse _c { /end cvx } if /restore cvx ] cvx /_fn 12 _n length add string def _y _fn cvs pop /_y _y 1 add def _fn 12 _n putinterval _fn _c false dp _d exch _x 1 add exch put } if } for } for null dp _n _dd /_pd end xput } def /fc { _fm dup concatmatrix pop } def /p { /_fm exch ddef 9 -2 roll _pm translate fc 7 -2 roll _pm scale fc 5 -1 roll _pm rotate fc 4 -2 roll exch 0 ne { dup _pm rotate fc 1 -1 _pm scale fc neg _pm rotate fc } { pop } ifelse dup _pm rotate fc exch dup sin exch cos div 1 0 0 1 0 6 2 roll _pm astore fc neg _pm rotate fc _pd exch get /_fdd exch ddef /_pf { save /_doClip 0 ddef 0 1 _fdd length 1 sub { /_fd exch _fdd exch get ddef _fd 0 2 _fd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _fc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _fm patternfill } { pop fill } ifelse grestore pop } for pop } for restore newpath } ddef /_psf { save /_doClip 0 ddef 0 1 _fdd length 1 sub { /_fd exch _fdd exch get ddef _fd 0 2 _fd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _fc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _fm 9 copy 6 npop patternashow } { pop 6 copy 3 npop hvashow } ifelse grestore pop } for pop } for restore sw rmoveto } ddef /_pjsf { save /_doClip 0 ddef 0 1 _fdd length 1 sub { /_fd exch _fdd exch get ddef _fd 0 2 _fd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _fc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _fm 12 copy 6 npop patternawidthshow } { pop 9 copy 3 npop hvawidthshow } ifelse grestore pop } for pop } for restore swj rmoveto } ddef /_lp /none ddef } def /sc { _sm dup concatmatrix pop } def /P { /_sm exch ddef 9 -2 roll _pm translate sc 7 -2 roll _pm scale sc 5 -1 roll _pm rotate sc 4 -2 roll exch 0 ne { dup _pm rotate sc 1 -1 _pm scale sc neg _pm rotate sc } { pop } ifelse dup _pm rotate sc exch dup sin exch cos div 1 0 0 1 0 6 2 roll _pm astore sc neg _pm rotate sc _pd exch get /_sdd exch ddef /_ps { save /_doClip 0 ddef 0 1 _sdd length 1 sub { /_sd exch _sdd exch get ddef _sd 0 2 _sd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _sc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _sm patternstroke } { pop stroke } ifelse grestore pop } for pop } for restore newpath } ddef /_pss { save /_doClip 0 ddef 0 1 _sdd length 1 sub { /_sd exch _sdd exch get ddef _sd 0 2 _sd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _sc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _sm 10 copy 6 npop patternashowstroke } { pop 7 copy 3 npop ss } ifelse grestore pop } for pop } for restore pop sw rmoveto } ddef /_pjss { save /_doClip 0 ddef 0 1 _sdd length 1 sub { /_sd exch _sdd exch get ddef _sd 0 2 _sd length 2 sub { gsave 2 copy get dup _ ne { cvx exec _sc } { pop } ifelse 2 copy 1 add get dup _ ne { aload pop findfont _sm 13 copy 6 npop patternawidthshowstroke } { pop 10 copy 3 npop jss } ifelse grestore pop } for pop } for restore pop swj rmoveto } ddef /_lp /none ddef } def end userdict /Adobe_pattern_AI5 18 dict dup begin put /initialize { /definepattern where { pop pop pop } { begin begin Adobe_pattern_AI5 begin Adobe_pattern_AI5 { dup xcheck { bind } if pop pop } forall mark cachestatus 7 1 roll pop pop pop pop exch pop exch { { 10000 add dup 2 index gt { exit } if dup setcachelimit } loop } stopped cleartomark end end end Adobe_pattern_AI5 begin } ifelse } def /terminate { currentdict Adobe_pattern_AI5 eq { end } if } def errordict /nocurrentpoint { pop stop } put errordict /invalidaccess { pop stop } put /patternencoding 256 array def 0 1 255 { patternencoding exch ( ) 2 copy exch 0 exch put cvn put } for /definepattern { 17 dict begin /uniform exch def /cache exch def /key exch def /procarray exch def /mtx exch matrix invertmatrix def /height exch def /width exch def /ctm matrix currentmatrix def /ptm matrix def /str 32 string def /slice 9 dict def slice /s 1 put slice /q 256 procarray length div sqrt floor cvi put slice /b 0 put /FontBBox [ 0 0 0 0 ] def /FontMatrix mtx matrix copy def /Encoding patternencoding def /FontType 3 def /BuildChar { exch begin /setstrokeadjust where {pop true setstrokeadjust} if slice begin dup q dup mul mod s idiv /i exch def dup q dup mul mod s mod /j exch def q dup mul idiv procarray exch get /xl j width s div mul def /xg j 1 add width s div mul def /yl i height s div mul def /yg i 1 add height s div mul def uniform { 1 1 } { width 0 dtransform dup mul exch dup mul add sqrt dup 1 add exch div 0 height dtransform dup mul exch dup mul add sqrt dup 1 add exch div } ifelse width 0 cache { xl 4 index mul yl 4 index mul xg 6 index mul yg 6 index mul setcachedevice } { setcharwidth } ifelse gsave scale newpath xl yl moveto xg yl lineto xg yg lineto xl yg lineto closepath clip newpath end end exec grestore } def key currentdict definefont end } def /patterncachesize { gsave newpath 0 0 moveto width 0 lineto width height lineto 0 height lineto closepath patternmatrix setmatrix pathbbox exch ceiling 4 -1 roll floor sub 3 1 roll ceiling exch floor sub mul 1 add grestore } def /patterncachelimit { cachestatus 7 1 roll 6 npop 8 mul } def /patternpath { exch dup begin setfont ctm setmatrix concat slice exch /b exch slice /q get dup mul mul put FontMatrix concat uniform { width 0 dtransform round width div exch round width div exch 0 height dtransform round height div exch height div exch 0 0 transform round exch round exch ptm astore setmatrix } { ptm currentmatrix pop } ifelse { currentpoint } stopped not { 2 npop pathbbox true 4 index 3 index eq 4 index 3 index eq and { pop false { { 2 npop } { 3 npop true } { 7 npop true } { pop true } pathforall } stopped { 5 npop true } if } if { height div ceiling height mul 4 1 roll width div ceiling width mul 4 1 roll height div floor height mul 4 1 roll width div floor width mul 4 1 roll 2 index sub height div ceiling cvi exch 3 index sub width div ceiling cvi exch 4 2 roll moveto FontMatrix mtx invertmatrix dup dup 4 get exch 5 get rmoveto ptm ptm concatmatrix pop slice /s patterncachesize patterncachelimit div ceiling sqrt ceiling cvi dup slice /q get gt { pop slice /q get } if put 0 1 slice /s get dup mul 1 sub { slice /b get add gsave 0 1 str length 1 sub { str exch 2 index put } for pop dup { gsave ptm setmatrix 1 index str length idiv { str show } repeat 1 index str length mod str exch 0 exch getinterval show grestore 0 height rmoveto } repeat grestore } for 2 npop } { 4 npop } ifelse } if end } def /patternclip { _eo {eoclip} {clip} ifelse } def /patternstrokepath { strokepath } def /patternmatrix matrix def /patternfill { dup type /dicttype eq { Adobe_pattern_AI5 /patternmatrix get } if gsave patternclip Adobe_pattern_AI5 /patternpath get exec grestore newpath } def /patternstroke { dup type /dicttype eq { Adobe_pattern_AI5 /patternmatrix get } if gsave patternstrokepath true { { { newpath moveto } { lineto } { curveto } { closepath 3 copy Adobe_pattern_AI5 /patternfill get exec } pathforall 3 npop } stopped { 5 npop patternclip Adobe_pattern_AI5 /patternfill get exec } if } { patternclip Adobe_pattern_AI5 /patternfill get exec } ifelse grestore newpath } def /vpatternawidthshow { 6 1 roll /_hvay exch ddef /_hvax exch ddef /_hvwb exch ddef /_hvcy exch ddef /_hvcx exch ddef { dup cstring dup length 1 eq _charorientation 1 eq and { -90 rotate currentpoint _fontRotateAdjust add moveto gsave false charpath currentpoint 5 index 5 index 5 index Adobe_pattern_AI5 /patternfill get exec grestore _fontRotateAdjust sub moveto _hvwb eq { _hvcx _hvcy rmoveto } if _hvax _hvay rmoveto 90 rotate } { currentpoint _fontHeight sub _hvax sub 3 index _hvwb eq { _hvcx sub } if currentpoint exch 4 index stringwidth pop 2 div sub exch _fontAscent sub moveto gsave 2 index false charpath 6 index 6 index 6 index Adobe_pattern_AI5 /patternfill get exec grestore newpath moveto pop pop } ifelse } cforall 3 npop } def /hpatternawidthshow { { dup cstring exch gsave 3 index eq { 5 index 5 index rmoveto } if false charpath currentpoint 9 index 9 index 9 index Adobe_pattern_AI5 /patternfill get exec grestore newpath moveto 2 copy rmoveto } cforall 8 npop } def /patternashow { 0 0 0 6 3 roll patternawidthshow } def /patternawidthshow { 6 index type /dicttype eq { Adobe_pattern_AI5 /patternmatrix get 7 1 roll } if _lineorientation 0 eq { hpatternawidthshow } { vpatternawidthshow } ifelse } def /vpatternawidthshowstroke { 7 1 roll 6 1 roll /_hvay exch ddef /_hvax exch ddef /_hvwb exch ddef /_hvcy exch ddef /_hvcx exch ddef { dup cstring dup length 1 eq _charorientation 1 eq and { -90 rotate currentpoint _fontRotateAdjust add moveto gsave false charpath currentpoint 3 index setmatrix 6 index 6 index 6 index Adobe_pattern_AI5 /patternstroke get exec grestore _fontRotateAdjust sub moveto _hvwb eq { _hvcx _hvcy rmoveto } if _hvax _hvay rmoveto 90 rotate } { currentpoint _fontHeight sub _hvax sub 3 index _hvwb eq { _hvcx sub } if currentpoint exch 4 index stringwidth pop 2 div sub exch _fontAscent sub moveto gsave 2 index false charpath 4 index setmatrix 7 index 7 index 7 index Adobe_pattern_AI5 /patternstroke get exec grestore newpath moveto pop pop } ifelse } cforall 4 npop } def /hpatternawidthshowstroke { 7 1 roll { dup cstring exch gsave 3 index eq { 5 index 5 index rmoveto } if false charpath currentpoint 7 index setmatrix 10 index 10 index 10 index Adobe_pattern_AI5 /patternstroke get exec grestore newpath moveto 2 copy rmoveto } cforall 9 npop } def /patternashowstroke { 0 0 0 7 3 roll patternawidthshowstroke } def /patternawidthshowstroke { 7 index type /dicttype eq { patternmatrix /patternmatrix get 8 1 roll } if _lineorientation 0 eq { hpatternawidthshowstroke } { vpatternawidthshowstroke } ifelse } def end setpacking %%EndResource %%BeginResource: procset Adobe_cshow 2.0 8 %%Title: (Writing System Operators) %%Version: 2.0 8 %%CreationDate: (1/23/89) () %%Copyright: ((C) 1992-1996 Adobe Systems Incorporated All Rights Reserved) currentpacking true setpacking userdict /Adobe_cshow 14 dict dup begin put /initialize { Adobe_cshow begin Adobe_cshow { dup xcheck { bind } if pop pop } forall end Adobe_cshow begin } def /terminate { currentdict Adobe_cshow eq { end } if } def /cforall { /_lobyte 0 ddef /_hibyte 0 ddef /_cproc exch ddef /_cscript currentfont /FontScript known { currentfont /FontScript get } { -1 } ifelse ddef { /_lobyte exch ddef _hibyte 0 eq _cscript 1 eq _lobyte 129 ge _lobyte 159 le and _lobyte 224 ge _lobyte 252 le and or and _cscript 2 eq _lobyte 161 ge _lobyte 254 le and and _cscript 3 eq _lobyte 161 ge _lobyte 254 le and and _cscript 25 eq _lobyte 161 ge _lobyte 254 le and and _cscript -1 eq or or or or and { /_hibyte _lobyte ddef } { _hibyte 256 mul _lobyte add _cproc /_hibyte 0 ddef } ifelse } forall } def /cstring { dup 256 lt { (s) dup 0 4 3 roll put } { dup 256 idiv exch 256 mod (hl) dup dup 0 6 5 roll put 1 4 3 roll put } ifelse } def /clength { 0 exch { 256 lt { 1 } { 2 } ifelse add } cforall } def /hawidthshow { { dup cstring show _hvax _hvay rmoveto _hvwb eq { _hvcx _hvcy rmoveto } if } cforall } def /vawidthshow { { dup 255 le _charorientation 1 eq and { -90 rotate 0 _fontRotateAdjust rmoveto cstring _hvcx _hvcy _hvwb _hvax _hvay 6 -1 roll awidthshow 0 _fontRotateAdjust neg rmoveto 90 rotate } { currentpoint _fontHeight sub exch _hvay sub exch _hvax sub 2 index _hvwb eq { exch _hvcy sub exch _hvcx sub } if 3 2 roll cstring dup stringwidth pop 2 div neg _fontAscent neg rmoveto show moveto } ifelse } cforall } def /hvawidthshow { 6 1 roll /_hvay exch ddef /_hvax exch ddef /_hvwb exch ddef /_hvcy exch ddef /_hvcx exch ddef _lineorientation 0 eq { hawidthshow } { vawidthshow } ifelse } def /hvwidthshow { 0 0 3 -1 roll hvawidthshow } def /hvashow { 0 0 0 6 -3 roll hvawidthshow } def /hvshow { 0 0 0 0 0 6 -1 roll hvawidthshow } def currentdict readonly pop end setpacking %%EndResource %%EndProlog %%BeginSetup userdict /_useSmoothShade true put Adobe_level2_AI5 /initialize get exec Adobe_cshow /initialize get exec Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 Adobe_typography_AI5 /initialize get exec Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 AGM_Gradient /initializeAI get exec Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 Adobe_pattern_AI5 /initialize get exec Adobe_ColorImage_AI6 /initialize get exec Adobe_Illustrator_AI5 /initialize get exec %AI3_BeginRider currentpacking true setpacking %%BeginFont: Myriad-Roman %!PS-AdobeFont-1.0: Myriad-Roman 001.000 %%CreationDate: Mon Jul 25 16:15:04 1994 %%VMusage: 28005 34897 %% Myriad is a trademark of Adobe Systems Incorporated may be registered in %% certain jurisdictions. 11 dict begin /FontInfo 10 dict dup begin /version (001.000) readonly def /Notice (Copyright (c) 1992, 1994 Adobe Systems Incorporated. All Rights Reserved.Myriad is a trademark of Adobe Systems Incorporated may be registered in certain jurisdictions.) readonly def /FullName (Myriad Roman) readonly def /FamilyName (Myriad) readonly def /Weight (Regular) readonly def /isFixedPitch false def /ItalicAngle 0 def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /FontName /Myriad-Roman def /Encoding StandardEncoding def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /UniqueID 41987 def /FontBBox{-46 -250 1126 831}readonly def currentdict end currentfile eexec fcecc98c2aefb25089edad915372f7632807d0d80113c0fbda4614dda7560bffacbeaa4f371815c991f0682cbc45f51895a8e6fc33b63b87db33f2f141b34c80b26ba7d9f30c5d0811a31c14ca6d1250d33478395ee2096ad1b742ed78b95145f606e652e4d2bd83f4cf7d67cdca3268c1d165c3cf471a6094892362712d5e 19b5084335eaca009edef0af8bc976eadf7c336b76887cf63653a555e0538ab47d8bf6a8c45725720630bc185740fdab20647654dd2e6d2db3254e482024a1dd45e865357b140bacb98f0a8066087af1076333e21e51e77d70bad81d05e6b7e6f4d3a88423efbdf6eb3b9d4ca66e9ad97e0bde315f13542863a4a6b71a9c35 60eaea09bb5a75ea3eaf84bfd6a5549a045e20540ac787976353c114cca7c97ce57501589cc846a1320ba2c618644bd7ead0f736873e8d07e7f550df45b51deefee29c13aa19896638a8f580a26665a8d50511d6a0a1d8822fe99e3d82a19244ed668b2d510ea6ef05c17002e01d0a4c4154288c2156ae5fba08cfb2394c78 221f1b67ca0c6dd8bc930eb9cd6d5b77619e5cfb0e19da187d81124f0793bc0eac6aff145fd8deb6b9100aad8798983107b205f36eb8f7c6b46c6149ccda404549845c5177d0b318b4e621f7c02260faf5e4af8463b776c5b12e6fb1d6735ef91f91d9132268c0c67f18915d0807f99694d4ae8c6d9d495b000604d311a9b9 6d2520458341a4efa4fa686e80300f18d6681a99a5c3eaeb4767306554865d708a58419b05c24200c59454847988d50b7abbe83a2756cc5781be5b71c28318750549b21f7ce539909e8425c5c38a4a24cad2cb70396b88777346c838c7c8ae27833df843db788ca8a3f0594707a2e54f427a416d3e07d838039d5edc835b68 ea0aac86f3bd470b37f7ba7c53045a8460d1e7a3175fc90d877ed022ba3f45622569455e31a3d1dc8261541bcd25c8b52845ce4a9dc2e3eedadbcbca781989cf5c51284a4e74b7c0d163c25a608196e89ca4e3444395562311d405ab1707e3dbcba475c61e3774137432519b9e0384112c5da682e59ed4c7e1db1ee381d8fe a4ced481f9823b96b719e51b5f059d26949588d5d33c4149ac36cfcac4ca83210c06b15377d9911bca684f27ab16f18ba374261a00514f0ff70163c0d5c41093cc02725b828f004cd04c5297bfc77d3185475d17569f430472d6d67aed94ebcf0b9808ed4489c233e69eb9139561dd741605b62511aaa09a44fc841851ccd7 80f15c71bdea5386f1bdcc7e30fc4b07b461f21bab5fc313d3424519359f17a4f5f44332ebc0bc269892cb1d91a414817b152a77192c21a0501b586a667f3a5352940ca13f840f5377f30c60b6740ff7fa07964332c76def2b8925245fab5de0ae53a0226fab8218c703a4bbc6733de7a68114d6048f85e7ba1aa4f3b044fa 052182ccc1b98e9a33ee688bcc29d195ee42d78d814b058abcf57d8970241d14c21f66107ae839a4b3a8ba06f6300d6b1199f3c255140776c5e1b9db2cfe374926e90bfa7ed45dc371ea7a3a9715347b17c9cf2ce89fbd64f7a932146cf5f766a702936791071ce8d01c7c36f77c1796da835f45b43ffef471feac9f548c39 ee0d15805da6381d46062e084c3aca65b9abd3aa4636bdee45cb6ae316302385bfe24279f27d9017d98233d0839a17c34c40a140b9ebb38bece8bb0ea78b602573d457bcba967cba9191fc3e689c2204f798b8ce4785d908a20a8b7af26a59da060b181c1375745de477c32b46e059157e1bff21058709f5ed1e8a561505f0 ed7fbe0212099e9dbe1c02412f63eb6274f62db5075d74c2aad39a2305a52c4267fefc948faeb4afa2de78ec35e2cb02f212e5f772ccb07ca14636535ca1330c44afb15689daca6808c32592bab5c1427f87572983d82ca79707177e7d2799df80faeb622efdd1afcfdf20dc7a6c18d0f3ac98e9cabe609d0ddd71ff2cf57d 438e3caf3933449994fa51703c49ccbe30982ad2ac4e09f1e10dc393eca013bab3de6205e7c78ebbdc19f8d30d6087acc505ef874f28f299993aa81f21bdc769e0d238dfc42057eb50fdf73b9a637425fbb2e79876941d51720e5cd95e42ee0d8d0c3c2460272508530ecdb2a086f11fa43560f6dbe830f455b26684f6927c b653a092af8c202f39c31cccd2f0ac5de6d5b03b66e97872e4eae9451a3162514a6a7b4e6f55d1742b3fd1cbcf8b0f75ec005244759bd68e7781459a2519d59b16f9c88d4cd4fb37d6ba5fa740ddfb7dbccf5a6a95f7c4c7d1e62ca9ab6cc08dfd08ca2f1aa9dd44012de2be0b26c222d43eeb3f987a396e498f028ddc3528 dd3d956a9e14e6776c4ca5ae0dbad3227b1dc293df5a68679fcf7463b0f5107469f31f688e241e4058437bcaa3debe0a522a797088521405d8e5ca15c23d77701e441d10b92c5a6e0f731d6073e328f89051625b4f788222062ffcccb5ad208805c17b28e97167510b891b65b6f3583fd60945081fbfe0e78f317947230517 545be57c398e2a60f51c622473fcb3fdd659a5cf4c6d8f2337bc3cd617d3aa6d080d4247a7d78c7b1963ad2ac7e0924e29f5184dd1082e58b0e8218c7b390d07412a2cc18239a8ed7414f9372375ad6d546aa06c9735867665cea3619b0912399adb32995b6dff08ce7ccff0320ed318a5a609259895d00948876707bc9631 c4c5fe755c4c884b09f3f7e6694ad188dd3a7d61d1ebe85c61eb3067c7a12ac3719b1f1f9d099fdb0a6b118fdddb67ed0107415894e427c5f5895f5258dbbb6395504d93f9012d76ecd59ba1f134430c92e944cdac08f57a19341161acd1d7ded4b4aae204bdb10f9fc3684a47a4958f815bb544e6abf7f9bd2afe96e2dd7e eef096bb1654faa5c80fc2c66d09968a1238b9671bc6d96fcdd6aa2a402d0fa9db18650556a2ae8c44550a03d98cfc02730d8cf948f1a84e3a0edf4c209cdadef9d780e408d8d161965249e48856cf33de593276b50e82abe13b81ee3d67bef7eea9562563238d539b3a256dfaa10c4867bb48c67795a15160d54973d84a49 19fb5855b5f11e5e51a64ee190a25b3beb482c07e61b8663c3d79f4b3a2f5b8c749d3603e6eadab1e89fb73c426f12cc026791ac66fd1dd83ad47eaa9a9aa23f304ea10e6862f4fb0d41d676f7a42f5512f3b8098c8b6fe7c50dd0af3222c8b4b00aa57199354998ab52ac54d30d17b24e22306b74744c42b434eaebddbf8d 1d3d3f1504d6caab0446b8ffa56ccecc8ec9976d19d0d9b6a6e0ea7e44c6fdb29f0b50ae017aa453deb992db2ae3087b78beaf7211b00200c65089f5ed726d4251dd284d22fa28e28fbe0f1b064723d3196af84cb1644e39f61fbfbdde02cbf70465789380e1912b7d3cc8118428ed9af4f633790b4d219f09c13c3e8f3f73 9def2f967c7bfeecd25daf9b5a747eb281d2535b31c7dc99e34ee537a478ecc8174c6a3a1ed0c2c74b871493599be9a2ecccee1136fc7eaaa6f30758b607700faa7d19b586fa6aa4dc5a813ac33fc3e28d226b6665dac7de35a014f89a31195a416833e9a13123be1ae1518effefc0523499f54377362bbcf9d91650d6d283 e1bc19a5f2e53e5e1973c406bc3b4878d4a4b8278b878d9bce540ca936d369af2d1c31850d5abd466083845e1479b51d368df23c5243c131db75853e962c66db13f8ffc95affaf6336abce1cd0a699e733aa64b29ebe04915471de4d165e4d85573ec24ff0e09bd7ea8cba8169299eeabfdbdff58bb12460e20b9145b67872 484d911af649e1d39fb9a44aeba926f3a83dd87202020f674613001107a5d1f184b9ed1c1f8eb24a32f41defee4874b4ecf3d9897c00c2a859ba745e11304823f59c0aea5bfa21081b2eafad4c4c94ef891ce7c97f388ff1753e1d53d485e9d5b18e333f9436572eced77d9197c3deee53a26dea76f0a738aa979f4f2a358b 725eb5b2321e717ff9bec75804606fd0489a36852ff5474df878831431a0257d2b6909e5b954afc9a49dab3aca5b02e02e3565e762d240542917fc4cc781bceab43f7c53950ad992e596582bf87ee042f4bc7f9e91ea20ba6561019e184a34c8a5e17d7912edc431fcea320c7066afc23bdb5f64c3606b11b1fe9e810a9c82 2e60bb187be38c7b87b35539048b8a507233a86f6b8b363656eaca0f8de48f3cdfba3616a743c579a7ef6b922d2d282b1c77cbda888177ba7037513b64d21a8a6a09ffc1e3d46769ae279e68799e520a412ff61d952aa3b552159e3814c8f185731c7269bb375c1a1e266dd2f73c7708635c2ed5a52d362c124a76c92410dd 3f00f21fe81977c80051eb8bf67997efcafb1593ca9307301c2ecf27c08b568e404d1d1414dc2220d73c6a352a2624c916ada967c3d189a1b893d41139c948b04d6f808452fcfde55603527e598a6590ed920be0d75cfe65e105bfee9cddaa6fc9934c42f611ae55681be92fc300e7249af0d7f863e2b69ce5bd4ea2ceab04 8dbf1548639ced835beca4cb4da0fd79e7936a451691f23c1859231f2bd61d239a352d33e063142ef8844b777e28eef2f286bdf4ea7326ea3ac9719a4cdb181640727493a2b94b7a9df5cf6844064558c63f27a72892b19812828d32c8c76a52636f16fce7c04a3a38c78abe0179e533746e1e1c8ac3e3bbe106ba78b05e6a 27f6fa044cf6281acfc616fbd096d15b607b86a61644947c5caf286f43223ecd23873e67c555f614759a4ae0bc8b78c136a1b050e79c682e1545e2d3c018b7321e63ab4f61f7173fc172d563a90b072b2fab9bf4d184650c1b6fbb6b14cc43c354fb4dd10fe294f9e7e2d1ad12e49f517775962e6edb08dc6fd08e554d014f 57bd2707948f910e79946e5992a7152893e562c4adef8b17f8e9c642e0cba85fd3998de2336908f3bc7d6f1c7af67020d5398b4356837e256fab4d507221db4772022b13022e02f3c72f91fe55758a990143fb641fc74b8968bd9c66c9829a7ec6898d0216d33aec6ce97e6d408712b81130fced7a2f83078a2a25fb6ccf74 ee3a76ef72a4eb35cda2e35aef2d203fc37d2d5497725c5491fc2029f90f19973512c8ca94e560780075b41f8cd42aa5a2b43261a0008201f4fdbf34b768f0e033692725bd196ab644a5c4680102d5b665b7061097844c1a663bbf1be878a2991c98fecc4b67508d7fe91b50c0aa373b02a19040bf72e6dd84a54dd0385f35 4af7b9288f434a80e79982107b31272e902cdd8d5306da0d306bb9ed2986d3498373442927a5c774769daf503c30616f24001cb17caf8d14d426c9d768b2ced9286ff6b0d1a932056e25aed939e893f4d9dbbbcb5f9817c6d0b0c469f1a9f6e2af3c5046808dc130e18673ae7bb5ee973229bbcd78a193e0360c9d4729bc92 933a65866eaa926fd9d7031ff212f3c770dff6740640dadc6238d1fa2b44e979edf743f2ce2227491776ea376dd1f833d7d4099cc8914e92decda2cb2bc9c82987ddad25097e7db47c4c4237f879085866856c68079bb837c87af84429bee7052a7e4e1a609a235501ea40c921bd5ce7050bbfa2c8cabd184c109d14d9e359 5603efbbd39715fa6959290eddd302be9417190a47c8d1e6d7b05bbe50bdaab53d8164413d28c2f2b684640f5cc8768e564023892b9f573b37ed8b4a49a82de14b097ee47c0edd61a0694820cee6afb2b9b836a06a420833976dbc30f081cb44876ce406261794ba472afa4e42a57784052f19cf1e9d46605044235ee32394 9e6d09c83b087fcd55dcd7245b717f09b5b584fe9fcc06ea9f785b790f5efefc8fe8bdf26e1ace1c05033c4dae7d271738159ed7d8da8145da39d7a73c7b54424c52424a60746a738fd4ff0c4af80ee7976790c7d4af15d1bd9dff8b21e21ea965feeca5c241be2b5b8ef1715596e3a5492ee5f67fba7f2532513ec40dd18b 03656b3f75c5d8515c1d14d385043418ea8d34b54e19e68264ff8c3d3c94bb9e41a47e2689ff90ab1c8eebc4ef16753017766cfaa4b583e48f8f6649eeb4aaaf7ccf549f2bccd421c7ec43d0a3e58f5fcf41da55255c38dcafbab0550fd7bcc7988a49d4efa19e96f83460cf1078dce4574b6feace55e587282addad042a77 7ad11b356ffd95af1cdd79982839a3d9835c78cadde2b7911fa4b9d3d8fef1736cc4e946942f887b023118f9d510c391b54d26728d7a2ecc75fdbc3183671c97d0139691723f07096829c8d3b74e0ca32b5b1ba45d2d429f2b3c1f7408bbadf1109e6aad96a464dc16bdfeefa0b15286ade98d69ba0f664f19c2abf7b5947c 9db71aebb11ffa9d0471db01dfa4849a90ddcb5cdc833984c119a66b5cf4b43b193a4d061a9f8b95cda62837c2c6b54f8de5bdaf9e20bb2c31cae1e23ec3fab581ffcd25915fd2a54b61f5d316a3443a2d417f65f4b9baea2309f1b7d610c5c412048be7e47ef4e48dd21b3b1627e06d530b07f5bb21723b26f51d1a2646c8 834a6f5ec1e736dead4ad042a09bb6c117fad1a3605e77ce6204aab04610a3af8efcf6f015bc26a6a937b0bf790e751a5829112b26122059ccd4972fd902f44b7efd3abf42a8b837aa1c36b6e38ce39bac31d6e187b24809f2f65aea0f98f8bbe1c28d2e27852d80a307c3878a481f0a3c1850d92d7f68fdfaaf22f87b79c8 73cf9b85ff3de77c2d479d996533689c53374262a28a5e2b27d375490ca2ceaa6e5f6c1ad2a4b044591c243dadf5a7f04788cb4138f263710cb535d5d1d3bdcc58a2cc2b978000aabb4d82de04523952b02232b5686034641dab18ef3c9fb8fb72e32361d62679fc0b79b638df933f2683650c9129f349952ffa0339f30bb0 efb733ec3c0592417801dee756fcf0e0cafcbaf192a31ae4bd2c5a450d578364446aaeb6e6dc70d633b4aa814ca0dd22b134eaac110f8e97830c71a7668a6af257b1920e45b49e407e0e4edc260d5efd2e5af984a24a292474ddb97859dd52f0777df04a38fa8162484a0bb509326a2c69557053f667a718e74f6961923b77 d0bf2e78f70c0c054080dc950a656d7f66a191f36b9fdc39d1ca58bbb7775eb6a74dc7cc5aeecad4d5be08ced461a2df18c79e93a79eaa9a30e75c5430c4dcbd3c0df71184dffdc78aa6163611ec6415c3e75919bf9f61d1a48b1c8c1d694236703e7f512cd94b48f05b231de1b00077a2c764b2ded73c07c12c5f4f1e5cca 80cd905364cede8535d12b83677f886644aee1e500deb52302d9eab6b8da7040b0e38cc8691a201b970bef3a61affc8016e345c9295f60cf8496d39021e1c8998b83cc0d5ba59ce7d0d39537dd4aca4d8709f2687ec57e82f8cfbc8ed01efa020d27dc30da72995a7f1ef26aeb85dd1cbe5565d38d407bee29356516615c12 d451f2792018fb7fd733841c6844ac937f0100235c70b4e0cad08b1e0eb2559972df3a06d387cb172876c7c886af2fe8997ec131ec9d5f0054d10a6da33de7cefc93d28625fd0b31c0c51d87a07e3ff150cbed0aa53658e3d5ca68a9dbad920f3fbeb7a669fa44287d41f43e70239748e7b86cd7f56d8747c942e91f031216 9f13b0d6a0b48e156772b09198024c4899334e9bac261eb9d2a12baf043beb9146c0f317684ed59f5102e168c8ebc1457a426f761bbd0ae6732de783d77b1ede35edac6c9c806cdaec4d2d1f2b0e0989c92c63de9406ed690199a3a6c92eaf35328ece2afe2259e98da23976049eeeb8904715e0c30ddc9f83cf9e9330d57c 375a91df767405b685faffd062575fa32d28b488bb21a9e9dd64146c5302385c01b3b32fc557d731a7365d556c229e02dbeee87f16190ee17b1d6610e49ba9ce2da2790646a0f4135fb1c7d4050a58668704ce08a45454f6272d38412e43fbd141a5a2fae3d78267bbef02b79ff6052307c55c0c08e0dfb447be19944306be f250e552d87bdf34b06d7b9f5e15633b1a7c9a1c4ad5ae03d603f596a0f84a65c09c6bffa6284b6eac429799ac6e834ff8b2c749e04049b8c28c81966af8d9f8dc3b872a86754ee4fc2a6dc78b3d7ec8eedf585d54bbf8548314e65465ea1fe463f4788a7d26701b77c35e4f4ecbc8dfd5645313cba4ae9fd8708776104aa9 53c5ced171062cd919bf5430506de264b09359bb0d32c59484f369e05e402c86f9872c35a43aacfdede6619e16c206fc306e65b89f96ce9c591c64936d58ff343922e0650acbe34dce279d3f31dea0e7b467fef530816ca58264eaa8bf46576dc6a4c466d7603d033ff17b8a634ace8d0c12d742d1bceb2423b4802a5d9146 10e5f54c5bf9330950b24668f0727faab92b8da23923caba71b9d519c1df5867ec5696796d5c800cbd7dca45a3ee712087f07cb8320474783a2e8a89ce3bc5dc0fe83ec18c1d75695a0d13688ee8f59c7a6855ba80f4c8faf1051fa9511cdfd5bac786bd7226eef6c10aac0982fdd596934c2acceb044927b1f8b47eb0a730 eaba241abaddaecc1f565084df13ba16f70435a947b40cba85c8ff103d65829575a95b844709ea6c7cefa992e9984179ae4aee2b20ac658e4c45ac5c0d4109c7087545bb7ebd0856ba283e122286dea2f7e7a6de5e1974ca5c3ab3f3b36a3f1065f9fc6dd3c80c419762bcbfde2f2368b6714dc2d972ce96cd0001b5069df7 612f079f06115d0513916db8e31005001f81e7e45c8f9cf7376fb1073280aac3a28374f346c30d069e5e3227169b77be94de1fae88bd533a12fdd8b723ea665ed68eca303f8f7e67c704a4e754d569381322d18b2736999231b5a9146dd6777fa62fb92a61ddbfb8b5fac877de4d7b7a32f65cfee163e31790354ed262e66d f841b21f5af794026d03973d586cc48ec892fda6ed2195ad5994e179d72b63b3615e1c8b37c5b4a35d5b9114848fa9b256e1aee627d3d2555f6f1155fa56d641701e83e9d0a0dea236ebb1cd06ba5df6b3d180e75f3a5d5bab694b50565f8d94096f007cb435e5012d11d50ff06b11e4627c2a68942b8e22afcf1fda80213a 49609d7f37135d7be8dd9c07a5fe279d02d2a4942ec98ba46a6161f9adc3403b77a2dafe021ba37e0a0ad63dcb1aa6ab490b5d7a716c1ec09de7a9d4d06eaad43b64cfb40c8e834a2467d0ec68d441ee0a9a67d0c4ce2f6e1b973a3b8d35e9c9f21a4885fc671cb022360d426146426ce1b48f7013d98a4c4ba74cbc07468b de59944b07a91b3632b275e02b02b83f3d14678960165159c46a9a1919304814c608b4ddd708168181a5c4d6152eadf5fe8aa5a0ba3a4510dee18ebff1c1e2e222082b38378f7242f1a6635cc2e8dc10b6e8266df9da6d2b001990ad0559dc329f0623bc40925e4c075873ffecda33956174b95e5946dfb89d9c13c9791580 8517aba5b443d75a673d23e23aabe3ce8680a444047f106951bfd2a9c609bc4cade57d8d74872f89b31b98d54e2d382f16a56d8fed0583070443f386d564388495d48def25dcde0139cd2103b993ed7f2f0a42ebeef52e4e536fe0e77d4c7d2dd24979b3bc0dfb0c4fd798dbae91cd584f794eacae55b1693f98c24e807f32 82a17271c022e29e45c07f4a9343c6725466269c0b84c8fb7257630404df5fb9462ac1ca783b3c236d2b71aeea329950a0d596bf473d86eda8250258cff33b85a2d5fd39bb9576350f6da89756b9ad50f14a9209de8a4d5ddb1541c6d892a3c71d4769fb8668779a140fb2f7f3b9118304c403a3670c45bca56946ad2314d0 2345f6e8f6441f3d4fa11dcbdeb0cfde771d98b4a3c229c598c3930dce9bdac57de5c92d51e3dbc43ade500a4a4bc7ae95a377ae8789828660d5ce612b0a3fbd04cb47c8256d8c45cd883898719e04ddf66345d752a0d5807c08b69fe5aec2d62a1b03780c55b2d264f84205261e4042530a9d1cd83648b2f0fc092a1f3dd5 16d6d5ef68bf5959b1808646af474ac98eb91f1aa2a27c29b26cbf398b0543d161d6335ead1357f379e9be619f524416069f4fceb98bc9ae2b90b58bc2ae1cb4d783b961e15ae4914db5bce4b3661fb755d29d8be343c716213f9f08dfc1efe3cb5f8b6ead9f54512c9248798af5e963b56cf72fe0dd4cbd1f2875c2709c3b 5fdcb3a32f653a372373113ed1ad4e63e99dc9650a230b76caa23db7681bc2b8968bb436d734f7c52f7dbb5c407d6c78de709d020a7db6f5d87061e463c61dc847519241d3d83064ad3f4e276f6cd3786a66529acad1869f895ae59cd940b46a533fb77bf2fe875e86cf33dc6d153c486d9c3322b7b4e7534071ad001bcaac d3ecdda204ad751101606c2f8a87e0d78439d82e8ced891ff633f7d47fe7c1d36ea903f635c68d3a43a6ec347a5c3a53217ff9854755efb34b9c2c86b8578a4b433a2e44e326f21d697adc5c78fae3ff19b0974c5a18da8f12dab89d9d496c867036b7184c6ff88779eef5a7f6138cc73ff6c17c243c96883233a17a31dca2 e6dbbd5cfae9ebf98c80f81ca4e4ef04e37fadffab35506d9e406f24ac7904e9f8704ec591c5c117b5a2444952301202c43a62d4782672bab9114b3f340503e3b5211fb545ff86dcde7f2b58acfbb9866a40ae1bd6a6b0254c5830c70762da6ab4eb2bb2ccb1ca03392c6d0cd411f2b8827f7e06b9bf43ea2db210f7fe3c37 02e902a1c8b0cdd52e9d170df67a90b642af92c779570a61d203d40dd619095807cac1786696b28c7ab139150c7abac724fcdb6ce755d5e85a6b55798d41b8ae80d073bc484c694e7b6dba32453d515d5807606d460303b065bf316c06ba6ce5d8fc13ad261028620ae820001c9f5288a3d9669dd2b630d789083eefbbccca d7034813255e0658200d73f2e773934e66c52f2dcb56e4a8051bf67e5018fe7743087410c5bc3a55e8af500f10de3c88a43a18f5f7247652df8b028e4f2cd63ca29e638c11cbe5d479d3a907b17d1b88f5b8e89f1471421b74e3740e76a374d5f5a9fd81078d4d8aa385f5c6069bf62feb6e077c039076baae312feeb68b0f e5929ab8547f064a2de9fd89c82be2ca99d83e8f7e344d9fb3b74111ec9c2ca79ef5430dcf3d07fd591f59a84c679b0b0c0f4245770bfc1b94c985d26a208f1f7386868c1d244f6399a859583db75106dce52efb8b0c4d1e6824cf11b13f6b82cce7256d444801484365b00c3076e1f7d0b913616c5db904f66ecfebac4211 dfe3111e1d1826e3f2fa44e3607b839c14ed218810587b6dd483fdbb3395452eb6243acc612b2bf43289ce69e86c650cd5e5a0f96a265c2617b2d2d6ec2759dc4ae6e32c94978932671c1e0d72aaeae835c447912f66a39925da78528b43d567f9ba003bd952e2de86df8660274919c4c1f2ea9c2967d30d8326a838df881d 35adbe41ac3b1680c0fde52c3f1c1e2d6d568f7822baeeb16e1f2b959dc637e0194e7dfb1cacf3018b39d0d2c5e954a58cfd002cdbf390d1bf281df3eaba5fd82b542d6faaf3664a89523a5d0e95d7fdf91a1999822094b0666a6e91be0eb2236a85e6ec4dc8cb561984eeb99e52ad0dafcad0acfccbfd62af62150c749438 8a77e8ef10a09c5c88c511e5e3d25d0f54e53f100c87810f3a9d50bc6a04368e024c896e2ab00ef625c5754801705b9c8abd0e1d2dbe0d5de2e9c3c2281781ce2f2c917f424ed45168e81e639491e952cd670226059fa5e248f9ba9d8d683d9cb975fc09d8a50c89aa00ea7755eac81a11320cf74eae634cf3866dd1b3673c 9a58c91e9e8b94581f7628d2ae0f97485b590b5f3ebd7c268044ba7f8f9b07fe50989081f1ac50e6ba5d02577601bfea699ac59432de6e125001de032169ddbb10854b0f90f55d3b3a85e461c7944c5ffa1a3250f71f3c535cc142cd16c4fc8c9c1de0761f87cb840136719e63b342011d02486b75bf81997f9e7849bebfa8 71370b7414491cc16f38d5d4eaedc34047d3ee80256aea589585f063d056eb62a6849eb56b488d0d646dc22bed4d316bafb5428d5049bf5400a7a1b69c463a80ee16906eff9beabc7bae61a7edcffdaf1a57fe269155f7a7113bdb3cf70a5c8c8509d8bd1e3c5126ed4e1a4853a25939b01a03673a4275571e6db4dfff36ca 6ea232bff15e576bf012b5a946a81e48bbff414a94db7968a1f0d4bf163873c842cfaaf83554775fbd7428d8286d97fc546e899c88a16bbcd93bcb5b78939539b0cafc14b68344e42c70c182804bc63fb0eb6ef54bb5f316d45155e20beaa7fd4684ce238004cdb5d23adc7c2e618667e88fee3c5d7a1fa67deb9fd654ef75 479056d32a7bddefc6332b1d430b862cbb02757ab5d9eb079e053d509eff800232c195e8e3518cf9e2dd4102f59fa55b2686b0d7d39adf9ac37f55bf9882184293c3a216730d26426986ce6633ec5fa6820fb8243dc46fae0deda0580864045aebc5b25a3747c43bb9d8f7374e4ff01593985121efcdc51dad1fad55f8a750 93859cc5b08f83dfd3bb4990011db4712420c2d941dee159227656e5e54ef1d33320554ab70ec8b70f73ff31f84f50ae38fcfbf4a7957290d21d5232a3e230ca7453125cf6f799ab62312a12ed8444e837a854374b33d43904f5cb9f4163d716fcd8fc025200d4388fcc4075b166273ece9bd55699bfbf1dfb9afb47a17797 75e6ed5648874afac0f5199bb65472bbc0492863a4d2df2b9d7b0c91ad8509382f6eb68b236b8127acf3c37b3b3e2119bfb5766591e152d794b3ebd3f295989836ee729141047139efbc409fc46aaecf32bda5692dd28664b0636f89be326b72b1a79dcec126fafea7150b99df8d57006cc11d29982fb55dd7ce5972da22f8 baff4c43f94f0e4616a2929e3849c8425ae6dc950a626d6137da8985f4692f61b5c37a0640b09e841db4f86ac7fd66d5af3a95259125bae1999d9fa5fb21eeac7926a7f6fc9940b19b0f81c8a94e26e8677decc980c4b7f28016a31153b745eec51a8661266d37a09f9c64255649e64090856cdac677a66647a9ebf427dd1d 222c8150a86b8f7d12ec27b5a119ba6ffc942b0f34623875d640e79535ba6fdc5f9e936549e949ab53323ea863afdff2911a91d1bde89ee15da1a752738a7744e9aba6ecf3ac402fecb52e2851eb82bacbb125c2dfa5f2797ed1b15aa6f5bcbc2686c7c7ee3376b9d7645399cd2fa28a4c7b6d68c043b8241e55a75bd99a23 2109044ebe7796199b97309d62c6b677d78d98e982adde52016d1dd3f232d57f0cf66325dbf2f338a27530d01ddb87865a792c827d7ea48b07f7d35a00a236c87f97ec486f7c1b518969d7498009f8a6ac1dcf052c167697aecbc1e35758694df075f85e5d07a08c2a0c3b0785dd39b31faf36b7902eb150d1b4c0f13af878 605995bddc766dbb1776381eebec65924a450b3965110753df533d38a414c1af4e58825cd6bdb803c4dcb49617811fd9274d0ca8b3a10efc1635fa81b8d4ce892f321d7e5eacf5f26e7c07fe8ff9daf3cc7c33e1df1c3f795bd427a977f5bbe6ae6e001852922ff4a30098c38aa7b9b9b0fc5862dbfeae46295a8da3eebd0f 0c372039bdec907bf3407146b485469fa08fc11c2619360cad71d6dede0f8b49fc7bf3fc6a158252a228ce6930cdfc0fc07d18dc4cdc4cfdc7854bac54e0c2949fe16f2736e9005538bdaad95ff396d3969b6d5a2ad0c99ee9a4a6eb5f548e659a766f69b6395852719629cc135a01c30f55002efcff8091a2477f752c3365 771790d5b7ef5a9bdb5c88096f497563166a3969190db41181098e8dde06b54cbc40842aa08a6947071a49c3d02f4655d49b4fb3a3f164858c15cf813f800c0def66135e1d15edd4314f75949db00b28bcb41428a3e1a58e8edefee9d21774c336323bea90826e7bf07fc0478e5f4a6500660b95379474543ff2d482a68276 f38710ee5407ccc3aaa27d21c28ed3f60879e14723060ac34e91568de52d8f34baf046f2bea349471fd3eaa6cd12e377e37bb7fc103058169df4f595f3ca6b15e343f59437770ccc36ec393debf2defb3ac1846eeb9532e862e0acd98b36605bc535b88a5e5e3b6b6e86f95b8ba093c68bab5fe5588f1c3edfc51e55b512e4 a3f1a61b4cb72ae51494802cabbcdc1fcbee06ee21b64c35045d9fed344fa9facc0a539b5148d7dd255771c76f4892f1a398811404730e7dea2717760943c78ab7975a422507b7e2bcbf2de6bd7756d098942a1e4bf2185f74af7febf2e29062f05deb585f0ef1d57bd10a5eef0e56ff2804ede0576269ce93ad23d2c501e0 4e5644847a026dce845c5f38ec0c155b67bb0df4e672706d08b35c8578485809c06526464e1d7575394386c2b77583fd56851ddf67e0ffafba970256907d069bc545863e2e847e9a52ba27fa0c60838b92b11883363d8aa8bdd4be8edef5f1c074d4a6fb068101805b4318a586a9409664a48a49639d1bb19083e77931ff92 bd724a761b5300ba8332b8412248296f3b89045603988c1162fc0d917f614c6ef84112554f8bae7ae6dc9dc73193c0dfe72d77040c1e632686eb8d87071f3bdb3d2c72c97ef1e8874e657bc36f9ac3551ea37a56827bdc66809d5fcee7cf651e4e65ec1889723f803adb69930eb509d788003c63fb158c764db263778f7152 3ce577e8ae531258b5a33886624205fed4f56e3ef9d3c994298edcd2d59a3633aa63f831e99ee4e20dc4735eb17aeae03e31cf9b35ccb512035bbde359a1d123752fad616a095e2fb1a246755c699e073fd33a77d1e391a765639eacb04a27ec5e70523a296c6f9127aab3b380aaee76af3c9c8ca147a00b860fd235839ebf cb9105dacd64668f62247562457053617ec79486ed91fad906f38147f988b84caedeb9c6acbd6575ce2971053b79bec5c7ddc1c0a05e1e42e6ec0e4dbd180cc00e6b6aa8c458a2fb0787542c674580cf4a70b88f30af08005eb3d4ebebefc88e4af65b3cd9fbf680d770b79e150eebd0a41941e3f01535dee3e8244e4a50a0 0b993973be46564bb69f73c229b60e72aa023826515083bb65a70dfbc8f246320c97a9bcf123765499d116ef7281eeacdd55ff71f0831be417925d9656b545d8e56de71b656342f1b3100e9099dfb4394ee7235e9246e81ed09558555ffae7f7a2cc47ecf963e9ad959d2e2c95bcb4c5bebcf3018d505f697cec50acd2cf6c b43e7b60314d35a2c14b025d66b8a68b1de9ec53f72a00ac8e7010dce365eb9bf8705c92f4f8fddf91d56c4bffbf8f342679bc3059df5df6e919e3443f3597f60189c1f9b1a47cf4266b48f6d8b0cbccf9347682ef3d85651b235b2cbff0db7153bfbc2cf59094c5e682a83cac5d58cab9e2f4e9d30c5bd8c92d5f874131b5 1d273a3b6f57c210291bf0294f0f2016b80871381ae47ec95d63bdb757b28a14e3cc9431747879791ab83e7ee5ecd0d226f7b5f42079633b42f31d007ea2fe4728f353530434eae7f5f03f1ea03ff081768a4dfe815783d44a9662322f0fbf2e21b6ab07c6af457848d49e37783bcf4d4ee852d603eb60cf8b520f5f32deaf 8934badd620d40fc52fe047275fc4468571c084f5910e1f5f88b1e1d50d03f7b13b2579a046c0b0d6f03544a81ef4559e15c740854e95fbc1bcf1e6d2696f12f6b7146c82f77e9ae591c9b9252cefa2d6d534cae5e16621698f441e0463e70705b982fffb7fc23d39469a3b213c3479f5f9263f68c36af3c58fba33bb1c0d9 d2c59e3037c787dc2210548ee9749a42af9d34b470f53eca9f4d614b87df34d5bf4cd5e88c19815d7049c12b2c8a1ac3d6d82503218aa54b71550602ddc6aac54c7558c79650d2a15cad3ebc6a2f9d6288f8b63bb3ae1c83c9f24f8a50b15181ea9fd71fd34bb21c11e668c0ac538bf610156268a779f1a750c6d962788900 504d6a88f8d1457c3d23dff4b7c7dc4ffd29b1ad888377539f41bba722fb39427e94a1a53c1c50d63bde4740097cc6f835226dbb52af3f82bc614d2ab4febbf8b138609e8bb957446d75d5cc9132fbcb193172bf20fdf15bd0276dfb957dcdcd495a9ea845122ad8416372632ea58ee4c98c61ee314873a9cbf6a90a6d9fd3 f0b3d951e7818ca95888142b926b49fe6fe30cd86c176155ef7e078259a8b765b9cb9858ba7af634cd66e5a7194468ef8b9bd22de3e83855760fa9d73d29bfae16352cbe2bf4546d0aa5a303d9b621a637d380b556f7d8b671675626f35a4d814ddc8d636cd80ec82d0587b70923b9cd0be206d6498de7ede78a407f66379f c5a1a21ffcc003671d2966f6d88329e2641be547e9f86d36eae5da176532792f2e78733262956950b59025d82550b217e68a7ca0904708495e1f1a8500b85afb12fdb3441e282ff674b11f10b9d95937f6a5216af24c21bb9e3ead9d36910092c9db7c11be221331da36c6435406e6f579945a5a11ae59c67460b17d197e49 c70ac5f20eb8225e50de3b9327c04c94c4a1b0bca1913429df6740d7193a24232289a807d815f1530442f7cf7975c848354128b85ee05b4cdb538268649adb30af9105e58e98bddd4047a3e39032ee1749828ff1811691ae5e83aaa0ee912927dbfcd857366ce53647e67ccd7e6db5a8f02664be0500a8d04072f8e125c615 81dfa16c04fd17bfe43a40042d8fa7d63da86c60302c17a51c7d4585f3f54abe6aee02bf03f8d1b9edc1a3e07f4d1101d6464dbc099b09837e6eefd90a52e36678dfce40f58feabbbd9e5e71747abd6bd9dff1de4a31e1ca6d3768285db207a0e61c635f5bc404ebb89d19c01afa54bee15049035b40d2aabfd9c6e942cd06 559507ecbf5bbfff1a9ab8171f0991f434fc4dcd20b6ca6ebf1cfa6fce43ad5f51b30aa67b88986f3090c636fda5c7555a25f4f30a18c7d310dba00a34fa6dee95e17b97687dce089f929df1e7ed3581c38ad304df967148291783f91904085b4707d56f761a6518c5c7312e55aa34b874e792d8950ac99c760aa08d601724 b1522fe0c72980b05986affd302f757b37e0a176c05b356e8ce0881584595a5710146bf39a92d43ee8f1774e795cadb6823a70e090609f40a6afd3b3c41699b36f0717154b6d90878547ecf0223a17e250fb729d43cd48f0d57b05f6206e618357589c26259e6da00804d9e1d931010bb59b7ecf9337592b79d9a41b21fb85 92659d537e1a38f9b0716b8a53d9a7b7c8591db7e2bc85b47a3fb704d27fe6f369c34c363737332f48d0b3442bbb27dd083799b791145dbdf33490ffd9251ecaa1239ce5376e7d7faf69cc6091685fb4576649cf27743e25e451df78b850e6066d727b015ef813a685e49b0749dea9e07c506ef37a6139500550cd52967d0c 179dc78da3c5e06bc884d93e21d3c7da599f78b779a9ed1a87673216ee02165aa4a0cd8ff637d229a96177affc8b39b73bdd04f953fe354bf97da3edcf922ae8c99fff0b535e79722ed84e1970834834d0f81952fdc90f308402e514e25b67a5bd7d8f89e41a1d2b5e6d50517f98bd2b6051609d21fedced4667a11b331264 8f2d369939775a283118249f3ac136114642b0a3003738570d9e6d820e84b32f41aa07bb689e3a2e9b8b71f5f16e7ff5bfe5d7cef61af8d4e1f66ac8fd4ebb15b81667a6777fd2c65911970f47547eca714e07379c0eebc77f902cf1d7a8fb26d918281f9ffda2e9f3fcf13c4692b856b653fb96d8db4cb0520ab224f650f6 b54df1bf2361a7008d2f9b398426458fc7d554b21cc49a21b679b6814784698bb5c9002a093910389839620bc24c57dccdd8e5673d05c5a9cd91c15690b8b6d0a4ad689ebb091bf16a19a1198a710843b85548e601315ff75737a353dcd3578ea91a9165d9310175a769ea6bf1188f044586a4751340aeb95774eddbfb9271 5cd1e13ac0c25ba33e81834d25b4eba8766364ca2c02d757e2eb93830c57f24fd15aeac44d5e4e01e99ca27eef2883a952f5c52bed754012b3ec587d4db775e6444370ca98376418827a19aae7d113cab6689da95a0e4447bb3496510cec640083bc7884c08750bdadd254e6910ec02fdb3ddf07f0fc8e61e227030c9dd6be c917684bd7f20cf8dcf79ee2c84c4d3affd15559e9e7adc2f3363fdc9840d01ea65dc2c7a1a677a21f723df4d2b63dd8cb1badf58f63c1dd590fab21a0107babe7c06270e247353615b4fb8cbae6f6f4d68d29b8e8ea5eaf6cd0283563bc5da66df1cce125a62f02848cf6fe379f33d11250b30f4ae202abba92519b91b223 851bb68fa5363aa745f76ec3bae67661d21c604014f10db45049781c2f1fcaa906910b973c938c2c799876613444a0264a5f3309288a47b1f2df72e90f519860d78b1c7a021b63936ccb9723ae4172c10264861c2e3e842663fe623457143375cbfd670739f2f01f4e9332e139a78e65036e414e9a0856027b14fa015c3029 14cd58d042240dfc711759fffc0f7e0af71294012247a3f827e494a4ade47cf78de8561158a3318ae38753cd6ecf82777ed916949684f63d0c7d56fb3d5fa891cae1cc2417fbe734954b52d7b1baa1510c943997ca78c8e5bba26a5e6c2ecd5e204647377991f2bad8234cf28f71c30e8b0cb51354b4461a99737cf4122988 25ff9706b1865a997456e22cdc981136d641207d56b7ab203f15a2b48fc6ad499ce3529ff67319b64fc87d5e1ed9ea7f359d0446fb34da085b3fce1749c56498ac103019cf7e06ce15aaf9e9833047a8d06a0b9792a821ea0e6bf23f4cd71072795d9fa50bd3a343f1a01fcf313741ff1ce9e485561a124b60979207d83abc 64e33258b8a4499d1fb2e9fe64cc9d451ea5c9883dbb90d62e1d37c5cdd3fb5c7f3769a3beaa44e81540b4223835ec1513e40f6bca362d8e370766c2c09b3f65bc908b2242a83b532a42d5e2be1b88b1bdf2f2ebba0c6c00b041ece7c628b424b4129e3c7ecf1686fe7df96e8069eba24806d225b487057ca45c51ed184542 157e396ee15896d3218715bff7a7d3c6b7225281fe0731799f85930c52eca4ff4d52033398143df84ac8dbdda872379074d34bdd818043485c97005ef1291e36d6cc0a0247e03e7ea59397ede235f9e5a667661ce2f89391a68937d18dd1248b81c45e4427433d1cef0500636b83c8a82becb3d62a9d750742a91817039387 3cb3a317188a7d875a0ac68b1e3dceedf2c24f34a73b4f8ec0a593414e740aa05f92260fe3936eb0bcf95d2c20b8d186f2740d8d80084b43130483cdfd5e1fd72fff02ade4021e7044fc567ac7484ae84be004137ad4370f68b7015a115c4c74638b147384115429045904b90dce5e0e1126eead8a7e3aa07e88686fa61ff3 46303a9cf00cc7ed566cd9eb55587bca1363faa6d936aec23fb900df32b485943775df0d3dacd78abce4336b85a6a6d3c34a2dfe82c98eebd8cfa48683417b87d87fc6cb7490da544c002eb61d5f8c9394f64a39c33b6fc32c5c68d533569654c3aa7750b76e42dbb58e9315577c1af2eb97b04a060b953f4274d59e2269ff fa486d3fe9fe292e767f2c32c35b69d62e6905ba4511cc4997865d372006d2f47b13e1d00ae9e21881c5c35ac7744ff4b6155f44f683e15ce7e94aa45ed01c0d93fef9b413a3686ba410dd1997a13a8b6acb56f98501be1250743e102936cd53f0b0ca4aac60c8e45b396377cc1ae9d429787a2bb4e58946cd27c44676f7be c6712ca15771851a335bd1907454f1aa48fcb9e144dc108d25a2a0a29da3b6889dc243e58cf4f0effea3bfd9390e9ef435ca0bde273117c7067a4e3139e0bb8a7a42398383e82a9158668d8ae9b0f853d403388533688ede1d4e39323095b62193fee792fba05595f89d5e885fa854421430486d068efd99a3019f903b631f ac37f5939b9cc09e9fb55e8770248a8e171a4927c55c0550c954bf29fdcfe104a4d8c5f4b8cee2c181208492b54a7b8e9d9c1851077ce831a3809c34db39ffaa95e7f268a7d1d8b00a3655a9d8bd0795b6efbd2673e5ffab8bd809cff4ab0cea8a46bd6d378a4d678ad8195dff91bff775dcec4907e115381056342ba78e1f 5ba0b768349e2af84b9df227085f0b0976dedb08cf3fd45c54af2b7fee33eb56e4170c7485ffe29b05b08ff1f5a502c86fe044e05ab61522ecccadbdda74d2e9577b9384f41c933756e6789305929756e8523c13ffdfcc6553718357506f1cb5e0bfa99b95e4afdf622ba483391d96e9ff449b297613b5be941b6e2e10bc00 7ce716000a5f0b848fc8d0da6b3c3943eb1577aed337d6c1bc090ea7af28b703123b338db4ae1bc9ca0c49029bee08ce3f2ab94e225fba22ce399bc15e8951e3c889ac4a77486466fa1e109035e5eb9c0b478d705011653cd7619bb47cd2319ee29a82a4e624d1f95e09c134d78e1d9a2a267653f2aace82066f27172d26bd 9247e2fdb867488d4bdd55bc354ca0ac96e1639b5de0626620aea95739fca1e6739e4c60f8db618b01235562f79aa3b11875d5e6a7edebeca38051670607f11e49fb82a7568bbb280618740dedd55a79fee1036482b326934c0a5e16a1ab4701926467b81485caf16f0a8cb9c6678ed81e8638cbfa410aefbedcd3d18c3d4d c07eb131e6f35cfc86f9d0157a677d0c2d7e3b4abe3a59e07893817b939c734963c3e6abc86003b6383c6c5ac4f2462f87fb69bddac42c0e1f0845d24b1b909fbe03a93a4ea55c923acd4238a6aa20a384d300eb44a4e33c5867c3f82855b2621108419dcfc5845730d99c031e29d2ec3999f24564c9f7fdb687ee7f7469d2 7e8c06d3f5b99f3fba2b431e1b016f7c0777b1d7cb209374e54a1e9ebadb0fe0405335bdf6f0ab285d1b3d6bf53a9fcd2e6748e5f76ca45a49c2ab5dd68edc59cd42f38f28427b01a3a2a3df74a442be1bcf7bcba6af7b539b1d148e6c75b5c35c4d7483c1209a753c510709be09dcddfd3dedc18cb976fa5389cc960211f8 7e2dd57e86fd0158b2a0822d81f32ab0e6be3aba720ad374bfa454577b44cc8c9d96b2d5dfc95fbfb528d7e76a60486d33ff9afa2f16f7b4c09c69377adfb9863b6cb5f75f00fea2648de40dbd89e46a59d50a522e8cf5eaedb1946d4344b00430603ac426817e2b376acd0974b3c37f65230b8b5d9eb500ff8e52610b7c2f b3097e380fe2752ec948b46b323fa0ab178f34bcdb6c471c8cefb5635564d5d7a8d9b869a56ee5e7f97d2e240d94b689204cd44ab2aa067a7a4b09e71bc475d3edce56f03356937ec1ffaa4eda180da13396859c5c85a0f71313ed8d4858ca9394d4df8d2d9b95fb2be76b8a3d08d662aaad760f2730efc2f6782a6234bec7 900b93ef744f05dc53021c01b456ab653cccd32528a76a974a24d93a67de276b0c7a6eadb306a420fb5c14db4a19671b6256e2f1239457c5b9808fcff5ac7ff494f457ee0a04788256a4f079affd0bd880ffcfc98fa12197c9fa128500ad5a416d7888297d5348cad355511b44f9a4ba1f2fda06b8f0e5e53715ca8230f740 b12c9c4ce34deea8dd6e10093dba924d182e27d87e24e85f2da026d332651afda0afc7ef42cfeafa0aac976fa04ea29eeaf4243cde03edfc0bbfb10259ca2005d1ffe7af6b4b9b9f271c805bedb30c9016e8129a013b662240de6a9b3c64305cd8fc2dfa746c5a6a836714f04ad67287b30a21d53d484d44d263ff9d697ede 9d0250ced442ae69c1af297cac6c5a67c24f5659e4ebb64af3297e481ce55a19016d510aa5bdf6fd8f27fb8002683d3d2e0c73a4caa3b9a71c35a1798034126c1760ef65c20ff02b5f971d4c843c327424fc9ed7e714439c17f339a1b7486330b3446f4ddb020714129780f88d0365509c481ca8474fe8552630ef36146556 e1f3ca751363169d50190b0db124e2230b46e42475bddd584435f0fca6aa65533841253a9ee250c378ac22f56e1eedbeaf6788f82ce806bfa2c3208da57be3eec807ffb8e86a1cdd83f95b8812c07ebb36f2fcf3641d9c3f3ad1d7c604ba85891fbd97063dcc52164488e9aaae40821bbddcb6512980d01be2a8197a67e264 dbfc76642eb69909da9c0d32a2a08de62a5fe165be73d5811d0f0172e1c3d95cd1bcf7f006b03bdb011d59f115a1b03e9e510a2be83e0c303e78085c6399f73000340810da2eed9b889c5e7f44fd479cd7a5cba4f1d1a8df20fc31d73d13f88ca5ced625e0b76d70461e39786ac20680790ea9e836c6082eff9b15b6540878 f7ba0dd194cc93818013214156ac9278fba4d25c276d413834e2c077c5ffd45f0367e6099fb76618c276daa565ff8b47d70725dd1d612733b23a244f315a96548281df0df7c1a6141713107fd777f3150d4012eec5f8dd4442f95c6788c3fcad4b1d75c6a46eab03c412d5194b4e90f9a6607a04577824f5495d359761878a b1b0da9fb29884579f2cb4708ea65ca4601c7d8063975caa43e18f9c28f9daf31f92e2536fde729b4a620a786339f9cab5117d38e7d08d035c01a8a652880b776d64e61bc1abeffe61992da6593016aa7e8d9c42c7f126e574048a653d12a9300b0864ad905eb22a86bc81235836882b113b75d44a95b1f6ee0084172ad703 6b7c2b1a5b8d79d1854519692a15705979f3492e2ba0638f6056b134386af0443610871f3bdae7fd150d394c4315e8bbe54578e91172352541fc1bb6b7219d19cc4c17d611c9c7ac1f6f5bc7022debde0f953a235f4d3901a9d800a00cee7d2879d7b8517c0d8e77f5e03918afb64895e67ee07aa92ffb4d0fa06ef55ab615 681ae8983607c1c26aa24e2d32f9cc3cbef9a442010962f13447b5f451ccf6517bda24a53ae49e391df43eb21a55a21736074518cc79b9e67cc0f955274eeb5043beec6eb65bab1a452b28cd0eadc43b5d8f019acf3e458303dd62f4f78f3eaea23012866ca9da905a6441a09a7ccc86707fbdcaa77dee19d0d5db9643dead e7e829e24d1095e07848b4316309a1e0e7e1004135cc5119b19fe6a739407fd6782c36b2b082f150c617dcc453ebfee07e1dfb8dc1105237405f89b41a81f461cf03dfb5d9d13db21757878642c4373b946f052f7c094ada92115c9fcc25a374f42bb1fe7830f1909b78d9abb2461f84280f2ccc6dac98a0c64862b6353e7c e2354ef01fe572059d6ae25af308e20cd36508345411e41aace28e4fa8e02edea172dc99c7a200048a7de4dddef619fd90f4dbf7255b7fe188794e42d7cdb8eea28c0d886a1435ece7e4681adbc8aafd7c4250865c5550c06fbe2db519fa9ae8d4f455df4660c9506e60c6baebdc61bcff8e249a26c495420901e548b7d2fb f978741c3fdb26636120b8bc93677814e55a871a428d81fc6ac23ee71edb85739a92c20a86c84d6fbfeabd86462fb3b249440ea7c0517e230d567eaea7fc73ae495843221ebf44d2ee5ace164c8d09749227d1e09669e4addb6750479ca45dab1fafaa0e961f11a0eae6fdfb8edead318a477c3b480d6e642ca3c3e2927253 6b304d374f66cfb416ff4baf24217d011a5e57638103db4a466baa95ff8aad9650931fd179c3f9c80a1b57b6a080ae49b110a5c1b4733381615a85efb8dac06b2f770572c3d1826ee972f43387694d3ab4ac73231d97ffe98f01bf83ff20aa623ce57ff5a8aa1b4203d6992761bcd10322f9bd8ed075c94ecffe6d10bb1934 05fb314a363280de060657b19a72b9e1869b97b999ceb2dee4aac63485fe96b5b550db2e98c0a1d0511e741a12becfe5d59e968f7833c1eba2ab4f0111d19025ec745dfde1d18803de29f4ca4810b0c68de3d57f174ef5b9f648b507e0e0e1fbe4121f0b7ca4116f037bad6091f9a91cc64c8ee02caad6e4634488e4288c83 f34dc8ddb91a2a1f01a49f4e48de607f8375ec953d5ee22e28c9f3aa8e4f6074254c770bcc2f6739c24d30455bc9dce6f87084af762acfc547b5e56d88f0b97a22c777baaebb6a9eb1c3d42420da473f8dc0ece39b20484125b0d62a27982f9616aa74dfb89ad704689e901d5c84f07c8951b2c4b869dba939e99cec5cdf45 3a97246c6255a8f349f07a669c66c0013b105a0f58ab84e5e014712c7d91425d61a3c15ab358686ffbff9797e020fd43fc6141298910010cae25e8fdd0d574a55f699ec3a4015d9baaeb12df1fbbab16361eb92479dd3dc22810827151eec3174c22a94c8841b94446b74c22fd1932535c7c7e1107d6e1a1bba0ea8155dc41 f6e2c725f98669de5569f33514b6528a61a534d22d7ceb6babb2f824771862299cf6369c2847f88aee2a76417bf51d81ca6a390663501b9215b4861a644efad6e15e3ce4dea623e8bd06c220f372cc7d836beb72bbda20288afce2ed884e9178fd9995e528a38c0293690054f0047c629b5dfe85baf65be877a1ef133e7bd1 1204ac206c8dbccb7d3e55113b24872f9034257cfa15fcc7ece44b821b8c74288c147c37bdf27a595e65f2037416bf9a78a245c93c4c7c8aa9444c20ef3021ad783fe5835889c5fe99c3e1856e58902655571432d49f43bccb0440498d8eb41fc07b9fcdfa44a2fcf5d3327109287f816285140c471308cc4499adc95977a8 71f8fbe0d43e3c1bd9ffea8d68695c1cb83673c7d4710829394d0e0fecd1016f1145ed219f60411cc2bdd628f72f60aaaec58187032dbb6543b3a138d45c5cdc955abb05c1fecfeed4011168a0c93fdb2d454c66a25a81fab137e70ec07787dcc132144c53a15cf0909bf10134ba9205a65545b441f1280239409d3bc95f1b 0251d408e32b36a1d5f146928dce90c91f815d3ff79bf3a6e53726122e8c2b2d30e7092fb07e1a736b51cf13fde2a940154fc9e67568c7dda81c1d49072b4987af38584dee02328ad9476876ac02a1637dbf13fa61596588f25f20c08dc982ce453cf27b40bce8ecbb9a064da740f5c75497ac7e915d0d90904fc4dd614af5 5e66151efeb466b98423ff03fe3a8472c9a6a09965a81c831ca8ed875489a729c2d54b0d496d83cd009f9cc027eb116a865020e2159909a3210c0c6f5c04a5418e53f49ad35fa915e3bf11361e1808b22ab4ad96cb70771e9894f2b2853be3af22df08168e67fddd7abddce1ee95cb7e9e2bd075ecafcc4acb6ca79aacb2de df98ce002babddb84b832197f0e4592c0c24bc97477416885713d49c5e54bd834db02d4977d8287f1e268d765e61c41b64f8f32bd9b961c72963a226d0bcd1f412f35b140bc547de69d7cb48019b9d939d9bee291693a4b1d787b12b4d8607ecb54c1109ba0d3b2579d5a4eb71c43859e996e87f8f62f03a4fdca481e1597d 18d91245aa1102629c3a87268f2c526c5281f8d8a5f1fb4896a55232319791654bea0c5dadfa2cf56b1a9cd344d3225759f778e86c03a19fa1bb9272d99d7e4ce5254d321379f6febb97619eda6493e50a932db686e48a2c08415f1039baa1c62a46b960c078e7ee5e1a928578e491d622abd370d75aeb126e60667b8c2a4e 8f6f079742d805aaac642341612d5a4da0056770b0d241f85bcbe26946363b1d0654fae73e66dd77d19e4c616b3a5b2fff244e6de6ec051bea09444c83b691e3933bf18e606193b242e5f26a53fde3621e5ff648ed9b2e133315fa72bfe9a2145de0911d277ce0ba118f32af9b3e3981da06d88ebfd936d675d35c47f09d69 1f68bdc2b864f41cf16680a60613839d9110fa6d3cad642242577c17f64ec3ccde2f532fe397e6299d0ffc4e4c82c82ed6ac813fc8afdec88302a0fa6c6b9dbd0a5bb5fc129686e8c9d60d3c8c024bfa8a82d0b70f2cb541cf08f3205d991129f26354596f09d84b81af4d11a4311fca55782cc7ab91c43570a9f93f910878 9ed61a3ad1916d48c84241c8b939fa5749f57c13f67e46c2b1f6990deb284f22988ed3ff87f3a4893319b8a1e124b704171602db712c6531b3c7d6e573a9d8825fc78a42acfd014f87302515bcc12b98fea057c668620e4089b85c9efda576f029cce97ba5709191e2a4850235ca0a7f76e6565c375740771bc3556cf654c7 2681550517c0daaa38193efd335baadb8d74945507b1c205af82e3828c0e49636abaddf24554634b268717a20b4a0ee9153fd69243e470cb86f82e327a6b4c10576fba94a720650bec7491e6d8ab927d78eb9724c3bb0e57c2f7635064cefd39be742f14572d15eb3c071db19b21c395666303e86b74f2ba59d314e4b1a78a f52250ae13fd9947c38322ef9eb2545a518bdd6246f3923a03133fadcb08bd3ab2f54f8f65cee6bb23b072f8637e63d075d55fd70c2013bc6c7baae4da712e71fa07ea68b32b58e832e9bc8e3f8cc1d562552fb916f35e8a47d0d8f33acfd33a93e0949a4d8087413f837a672c84b9daa42154fbad948b310559bac30aa416 348091e77490c006ffd37deab8144f53738d4005b73b532a0f9f181b6cbf8844b01f0c86bd2f4281187bb4186c2a4425d9255aaccc99cb9586a9564e11b4be5cdfe521e581b23c02319ea62ff36da19bc72ef3245fb76da03b3f570d8b86187659c05658077b53a7aa4c4b36cbe4ceccb7a45c031e8104cb489b4e2f8e434e e0a7e5088a33b9b95c58fc59e94ffabdf1428db844cfadc0de0c70f87df940694053347db6f55e330a28dbe62ad81c4f134b0be88454ef7fde8b83a50fe0697a6ae22a2008d13126cfb25bcd52bf0f4d66ce2090fcb74227d7747a798b52aabcc30672436430cd296a861db99271792d196740bf3f40ffa32095a68f20d3e2 d6ae11e58d4492914212b71a9fd24a2c43aeaecb2e38811029681691b7d30555d7c2acef4889768d0ae02d2c640567553ad3c8370dc471091278cdb8f4fdf83441a69c885ae7c2df863a23a3c8a8ab3f324a3f6b0413790114ee923ac731335c71075bbec27c9cecb5ed78d50e4445ca13aa222fa5f3f57b1f37ea9558a93b 03c6b217bfc62c6cf642f3473352377865cd47fe599f79062bdbc5a1ce07081b0742ff5a918a3b976e303ea68e60098aba208b6932a7415d833316b42fc552643262e8dacda5cb399796ac53d321b7c1ff5b7d536025924d7912b776e33de08f747ff7d938aad9f7b9c8e222f2dfc36a9935fd9776503d3255704be2f87681 5a1800afb6e0e088a881fdcb8fa06519b31f1882c75bc12edfe8ee10a682ccccabf1b7590f64b8b2364fa2f770ef0a9a3cb22202989bc412c0f0b16ee45b059ce22568d04d191c658aa94417db08e26016ded5da8b13886981ebd6d97b8dd73b878447d1993dae50ab57eec31f5a4aa0ef531a86493372eb77951c9825409f b74ca8b2d93f37549cec4fef92df3f6094b3480ffb4b576c8b0155530645212e265465916017323259d276a4b81ba014439bc3bbc55a2498cfdf411594503bec04237d96333ad872c29dadbc62202c17f6346af9556733a64564deaf61b24d84e657b138c37c3604c5c1da709053f7a75bddac0bc3229a00040e6d1f9ee207 465717e9f33a1b11c095efd75486665ca6e7e1e6b82c06a26586a38ad0bbd4e0f8eea6128281b39665d47325f10d28820fcc900650ee330616538cee7454f1c807574cc9cf6a55ddfc428f9e7c107af7f44f02ed3be9a1047584c927e4a9970c55094afa481b82c8c40e91fe96791699f9128e0ef9da59b1d7dd3c20cc2803 5d5571e3e5dbc0ed14e00f31dcc0d6abc1b19c48926b82a7d61cdc95d29fbbd9b81dce9c518954d1a2c6c518452b6de06e9c65ce5c90baf0493f31022493cd05041e05a7a0f8eb0bafdcb41169cbfa504255cdf2bd13cb167482fed8750189169b951e54a18ef428e9ccdfe2ed0dc7a39dc85e480a9c7f47c3de2744c2a9c0 3dc40a63c62a8aac041036e295cdb1dbdd70a47cf0ce18257a258aba254fe866590bc7ef46f7154df46a8e4117068656e7126d7053506daa3dcd7b66e53bfa99cdfb82fbe5ca1e5ec177fdaf04f25ae27142e2b040afa421474c181c7943643b0976e3805af1a3f47600a2d8912f1ff654c41f826522c07d0e35099b283a65 9fe3241cad8cdcaf551a1f31fd7eb2abb2eaa65f2a15aed783718f86f56966b0b2d21ceb722b8ac38957f38932acf9a19e4ee9a609259eb0f6b9de75c1b29d87790563e79f425091966b936a4428df2aa1c281ecb8401e3f8f3c67f6dc631634832ef74a8c94ad979439b30bc8ec1c99b1e54c99f26d09974b5d92e96be88e ad84918267a050f2c6ff91508f6e045fc9bf267f6464c901c6b2ee48fbe4f7696d26da1fceac4a2e9d6cbb9d7ed7660b4011beb631b80f6b97297a20ee5e52719a3db2732129fd8eacec5b84d94363f4de595556494b89d26e70bc33f5da1031505674602aa5391a649c4220e1b14f2d8312e445a15276a52f1d7f45cdbcb3 c95786779a266651cfba24926fcb2b44b5116273e67aa1c6ed0b4ce53a946e74d4c291ebf7e9d1c1ab84b09126b081978c2b0fb3feda78703cdca556f178febdf0153c6615cabf44ec1400ff8c02370c9ed1086e7b4cebafc2acce977568b8e3ab6c334e55b850e5e35262e9ac4eb201bcc21bafa2e342ae824b79c9728527 315e32a7ebf413af7aaf2d87c73d97f100b06a940a98816ec4c26fd451673caf4abd2dbace36898a853ba4c3acfcc14042676e65d69979aa1543d0965578c64ecfd194ce21fc8314fef29e35d5597a539d4bd67b077e880ebc4d41b072b8462dc63584bb256094eb353e355b346d6313fb265b8f713015642d61c843b1358b fcfebe5a86307bae9b574c71371509fd56ace646d61e0a328a707e3cee1c3e3e9c40c42ac453ef5b692a1c2f24626d0cf130c3a819c54d798dc577ff7956bf27f2b6110af08f0301f44008739ecad974aaa7d68e6883dc7ca3ca0b95ba226d819904cbf79b11ff35831c7258bc605c97582aeccbd2a5e64d6ede5f4d5445d6 e83641b35ddc7cc6778e3ac7eef59b688a3d247306caec81765246ed6106b3ca3feb27e066de66b65e792548a57d9aa20e60f6a6f0de006845f8d75252ed9122728971f33120b49265cbdd1d8b0f42f3e673d99915684038c49e5ce0eda876c2f8f1ded27b035263256f986ad7aa8020f24e25731884e026c4e4c93b385a4f ec7fb1fde9e7dcc5ad30bd18c739bf39f72ec5b2c36a98575bec2105560c733d7e074e0289cfe0b374bd89bc94e3110ec7fa6d117c012319870bbb612ec2c75a838a07a7cf229140d5ad195aec2cd0c980955953bb8009348a5b4c700b123b00156f57257c1d06a7d5d175167aef7095e63dd7da9dfa591dca1c59db066ad3 dd36d2e1162acef1c20cea01052c010e89276c8ddfac9ad719214eb3aea6089edd5b66193a5efbb6eb71ab1d2ff19f1931bcf5f2aa54b7f40da7114b49fff966de7f5b972aa76d02e31aa6d6b36b61157d0150e89d4d4c116ba19bf10bb33e2ef1fbd14009cae33d03248507083dccdf90d4e3dafba0b5b480f74b8fe3a71e 4020707a940b3053bdc7a8db04706dd04029f9180564a829480dfb462619f48bf91b55567896a8dce27e4d324c8e2b4e669cf659c16c0f6b82dc72823d0a4b7e992a8f80ad0386473fc407dfda4e7f18d614369631e8d241aaa48dca013c4368ae87faa94a6fbc4a7e425a53bda770bbce6b524c07a517e9367f611857f6d2 5dc35589ae182d098797f9312ea7874f03c5d19746425aebb87d803182d98a8b43528131aa077596d4e37e091567165cec8192466d21d21c97dca1daa89285afa44fbfec5c8c369e3f6eb4e7538a831964e68e7dd069d4816337a07a5983c954e48a09e8638b060040614e1b9d7f745c74a1b50973e831916789c540af9fc2 55cf152aa8ab85ce2d47502abdc31f3d2efe0ef16a7593a8bf5facaf83cc8dd8f7bb53e73a869e114a352393d3ff15846f1203442ddb1189903b3a0d772de82728cb3dd36cb06a5a7feec342105c3fcae9acb6c39ad706772835370df24e865e52f504701ef0a739952d2704e3e1f3c7e74091c3b3fd4a7330ea94744d4f1e 1aecdf1e733ec1e4efa24ee73121f6b4ee0df14ac0f859e56fca07db9b41e79e9d144c7df44970f0137795e8d5c80fa2e3978bdbdaafe4b4c71973d6e20a60e8211529bb5b96286d8065b65d4ca9124fad2a4b935863b3f886edbd9bf7a57cebd03a3358cd90cf5cb91babfd8757565e9680cb800869674e4c356ce76fa50c aaa6e0dd75a61aed50acc2373609972d065263dfc6b9326c41b967b61e78b8d3442e8d30c50155aa7ca9cd1cb9247f306206ca691b0d5b1b8fdae901fd66a04eb6ceea6b8495f5061e0efbc0017e95623e196b88ebb9b74cb283f006cdd5f6e7687c6cacf1223f09658b2a1b0e1430beee0cd6936a93dc037dbbefdfb2cc1a 2c84036ef6b567d8926e6b524586143a6689266ac7c00cc11830a8d1a2bc3ca74356863bdb535398037b77b82472cdc5e0c4bc80bcedee7fe043aaf1e5ea75615c46dd2a5ca22d3e032f7c0b33523a2d5613f3eba692d641b0a0a33b5cab39cf4ccd8fe72bb4ab6ca71cabb4e13625231f81857ce493fabadb25280f209f75 f1adb15ce277f7cf3e0ccb79293c3871cf1fb2b516a2f87a84bf8aecdf84cae2582076a2af591c19cd604bb2b56e65371bd062db57035de806bc6e864e27d7a27c72e175b9122cc656e8b71bacc85d8e20bba92322a50063ef7f91fb05597a8221ed0d542e42d58d6f8e50de5377ff027da0127bc9661a2ae255fe1a844063 29d44a50c68a0903f4669c4324af974a97de6b60365f992de322fb446da39ea54e3e33660d0ce7f0b31504109f954f11eeb823bb4eb4d893b8c1190a1c9fb9dd71c3f0302dfe9ba1305e52f67afa320459ed0b6f870d7585d53790261dc14e26c26791bd9c99740158cc333c36f4230d12737e8c8a688ef66a51f80962dc0b 5492e2443ac24ba132954aacaedeebd9cc62bff8f8e5e08c14187629f13b6a94568e5d4f2b55463c70f863b407cebafae6ac9566ec05d48ffaddb7a567d5a2816634d1c5f79280de20d78387e23db4303144454e3a437015747b048a170c497e8433dc28361e610e5a2b503cb51f5dbc63a292f16fc267fdedd7925c58d314 dd6705cfa8f1612defe39682c12d47ef0c3d9b5ec686ffa4fbd04742974cb6a9483b5e03cad1f0d140aad97d74e456c75e6642151d167c1a822dcfe56c247e0af1af264aecbc735e218f42d9f817cc1a5394bea937965f7afb1313ad55e1f317c53b535882120a2230d00dade248ae0f7981031bea25dbb72dbe2e8547ee40 02a0c251387c68ecc120adad0f0748e19edc9dbf3a4566ae5e2f38c74f6b731a4a97600534c29aa689e4551421aa5ca24d32abdf485a12df2701fbd1745230271757cea59b63de1ab59113bb574ad553d98955e41c6df5c7e91636eace1e5a0603e10253fcdaaf8ccb8a2e28eeb2ca9c7231f5d1e420110bbb7ac464e131c1 78312efe0a67b81bd80c4d428286eb9a149cd7b9909ff160b057d9ea89528a00206f5228a3dd8581ace94ca99fedbd7b21154e0e7509dcc0e107c0fe2f45b0fefd1ddf56ae11d7f17713c989095a5c046745f4d801f19fe0e248635f8c57b5028096e7f12f5b2f28c38f8d8403828b7cfc9c9da1c8ddc94b99688a050afd26 58870b4fa3dd87eb75fc0f38cb2fc2b949042f1008d1cd2887d9977663064865c6df078abcf76b0faa79aa3657acc916cee0668ba5888f6d497c318a1aa53849eeb939c3696e1b18224b789dbd87495f007bc11b86db8e9bdc4249e1f7c9c40a0de26a580d28aedbda4313fa07b53cdae3d5abe5e580c79c1ed42736dfb824 660a10eb0e9412339624b21bba4ef66196dfcd89bd539fc6e9a660a05b3c73a315fc48f8d68d7de440d8c7a1c8bccc4e09657445b3f5dc43b52763b21354fef400f9bbc0d1bba85802e4ed2baa3d11aead44ddc825c755ac4ccb6a1f1a6f65365f609f5cb3fe0ab0ec9b0428f8aeafed197d05874a80b87e3b0afcdd7bba62 2c4c416c110f8627ea81643efe6181686ae0b70f80cdc5a1cdad97ece8f77b87d52ad6cbee78642fa2c9a6504f2a17cd6861b050a90fde964831d4c43af525bb043d7e78af1deb2fdd442c43cebe9e91c04420b2029dc4541662999e750574d4fd387c88306fb654def8a3eb995729d20e1b730e61f697d5ffa998714251c8 18f5c0aebc7c45475163a859d9541c2282d9ffa97a310cae7fe9b35e635a8a7df366040b480fd578e21f7b2b5d1088b8487c34c028ef3baaba0cdd7c1e7e694b17c5f25b29a2de9d8f29220c9ac477fe369838b3537bb49b1fe9ad1549580bf7799bfb709eada7c3c8614207c28c9c654420c1b16d7f0bd461f61ccfd93402 4c3033fbb6b3dc15f9956f6bac3ab1dc43c7785d42a084d3ea583258ef531202056ee73cc09f137994322bb00085e97fc204224c96b0f5843a171326901e49a94a4e46d00364f177adcc2ea9e5b4760b6ceaa0849a7cb2c232b91f4ef3898ae87a796f62f1a96e31188d12ba2c21089e227594fa35b40bcbb1570321e1657d a8abef8e1ac37cbacf67d719f1605af599dbf37b7d083f45a80063fb9f8ba01ce9a63ef25413ba5fb0454131b586aae594edbefef70242552762989968614b1b50cf8339166dc97ca1fd7e4382c53fab164c0e469ec39704d6dc6f49d18463e944438eda86183311e340062ef76bbc0fde1905f5fc0968e17292ff4d1efcad 1f1d12d5986ed3812214ca855370c635c39edbc0761aeab87f4651a8a28b0965fd5da6d2d45a2e5a517377cc80d81527912f9f4c163d05c1239a3d4389a78b6047f34e2011fa62d61433bc3c5c6b7dc5aaa5c7b3156d396975b372f51ce56ad05a3c55f24a22712eb86aeaf45c1bb268398b3e790869da81cb0017909eb08b 7274550445adb6439ce0898acf8928e681ac0f7a7f94a52ced2ab6f43d526f399a5b3b911d7cd38a66b65bdebaaa16d82de09a532665d8d17b1a1a33c33017e68b4f0dc14d5b7740e634e62212205071ded125590c91a34e81843970b0c444e9adb434e09a20d005b6605087d2a87277dc0e94d319f088748f51525141a681 b129e5aaef51c21af8dbc19cdd19aced661ed7a6c7b9821d9eb4742036d2e69223bde8bf108a1aaebf3eb87d689effeb55dfc86c1bd3a68cf998aaabfc85b54cf4cb78cb673f9bef76034ce010a2b4e845b056ed1aa51354e65ea1321f60ba829b4e9426c2101bf0015f3b85b31d0255d4d6fc2d054b6b4e6bbebb89a25bc9 c510318116ea5e1b8710b42761a18d283eb1a5ab154b034ff30d2b829f552653fa000aead47603a4740e90a54b13734e94dbb6a030823d29c1e68a75c3f361cf9efab4691d65cb4ca6382826e1db005ea774c3ac9b85256d626a7bd1fe8612726b07dc7ceab780192aff9a436d7324952dfc994bd670b2f271d142fc84c8d6 52efa5353518a52817c019ac2cbd31111bb7e560dfea2e81a2e55cc1110278204761073fb0a40bfc89ec3cd9d34b5d59affbc6930b09b8226ffce9a8a93fe28c5ce2bc536953a91b2bf6195460c8677f2bf314a16a7b4311f969ad289ed2c65177193db462719db6680e1cc03c2c3154e60dbdf7db0e270b0154bcace82bbb 2616f8a418d898da0ae875514b7c4327c66c0b6826515f29b972eb52e220429d27e16b9b5ceabe45aff2ef9f645f196886cb989687e951f608e738f1ea6cf2a79e507be7f080485c3668af2c8c3cb8a9d4e0ca896c5ae8a19702d64c71bc4c89a414576b07ae2e38d6a655de7d336b2b1927a156e0850e6594bde58480a07c 0f3c026467cf9b96b873c8bb203002e2b69ba3445fd368780c425360ba831766a37ea41c03f69454823b46e55170aa82c194be95cd4f6f32fd93f3701c5cd730038e8ea9b6a1e563bccb223e9d86751123671c0b92f7fac56d296bf09f5eeef39c32dedd67034fb718034ad4ee1252a80529e5e119b48d5a1dca82e04fa906 d3fe0eec976ba1ecec8992d0c2f9594d790da7b52d71687c3a15c4a325594207bf603e2dc80cf93f71958724ccbc53b3b514b1108d6fe912ad5531dd8a294ba705b1ad011d35cd6a0e80b7d8b345e0795498295b18a622708751e8f961104e7871c5e78f0011d936e6e86dcb8ba738be88c899b81df3feca87c2bec0282e26 242f22fc596b83be010e8799eab36e37674a2d25f507c734801be5fd0166c3605206e5038b95ec649de2cd85e970935cf3822fae2b92de3d88343c9a03e0a775f2760a422e468b7b6e0714a2eea42a675d18eaf42fedd9544742a9f8cc4a9eaf3d77629ef815904799cc0917badc507cb247b808e543524d903c2437050f2f 8d5dae66f994a88e334398d5fd17dd9f9c50f6002b0e52ad911532b9022fb3a83de7359b9b57457fbe91471e2e31685e7bd8ab907cbf527200efd0d55b7745b9feabadbbd037c8e05f5d38196d3abfce6dc605c9f8e9543c9b364af5f0bb4146cfa84af9ea4906515a37d9aecff4305d7fa0d4c82440a01a5eb66abe43cbbd 6ea131c43a16cd0433c39abacee00a58638872d90a349dadc0debc1f64ce060f05956b989b084ea5c42fc7933ccfdce2d538c45df01ddc4d025f450994168f7b00bbcf5fbaa45c396c84e67db0463c0422d830ccddd69fac0434eb4f6f6db9a4fcbe063ca705f3d2ac8b38ab65fb32789313db034852f172f9ee3bbfe0a4ec ff0275b06bf586fea2fc5bbcea05f0777aa8306e5cb7eaf97547430a79c8a74185abc137c7e30cec2f61ffca8c38bd34a20dee0388ef6dfd2d68612c37fe50a3fadbfd1efb17b04ecd5173b37a85ccd63e6e6bc83acdde36b27e8827a54badf3822d9eed4afa49839ee1a49828f9e7d945b4545a85178febab85903940fc65 8bf53669e12735d351a2858c5be4270ef9cfb187161278216e2eb359a0f01ce0326b6152c56f44600e3152c07f00ce0b766ca8192c6e2cef6a9bfba1a6b042de3ee0f793da682d07628baf6f60961336bb4f09e7ae7fb5a37064bfa5e2d9390f78d7976575b82e27510219a0f3a7e0ef06536255b9e9a545f8c6ba2f746426 d6f7f0d43b84abb4a0ecf66edbdef6724bb060bcbcc13124a1dd801768fcacdd51f7d13ac3cf5ebc3965127f4772ae3c296fc955da79143d65290d99d2b8204d5227ade3cde4a2e523c88b93eb089707226777565c7bf63b5cfe1fa261ba54d692f3a9bb4a10e08e6335bc73fe3a4abef58baba568da69911064bc5790251a 618638c4906151100d57e5dd8f05c804c29370822a95903e6feca634e70be1adbc0e0f4bb5cb68b995c0c17433bd9d039b89e202f278a829143fb7fccdb7e9ef900aaf2daec6b25e9edcb1ffefd889ebf80fc69a5e817b45bdc4f5afed089ad32256c50b0de86b1797ebc6108cf3fce226c7866e92dda1b8a1a9b225988f5c e866118085ea4356c3a77fb3e3a9a847039aec345344af70b8fca478a3b79fe3c1ed74210789937232ebceb92e5ae683d7713dd39252ac439b969a2509fa6dd60c57c863bf06488b290a23121fd0900e6821f33bc4c41f23323c711ccce1edfa5116f569dc5fec01cd92c04818ce8a17b912bc4f62d9f72f4c0567c965d7d1 266706031d6d8b3f4b65a8ed125994275219223d5e2289c5dad045df1d912bdf7bcbd2666148f981273eed4fc85d190afec3843451d12900feeed5f42d357cbddc01579eac9fdf9adb6e212547733d3a22d2f65be27038c2c3fb5b2f51a3ea26751d0e12f64b4e6d6a8551d23080a8ff23d23e5cb0857e653a859246812efa 4dbf873f78813f4b5ebec1529768371f919c5b67c6458092590ec328be8bccdc238f103c7e166daa869758b517d9cd869820e0633beba0386b2e33965335740787530458a698a1664bedca0b586afb5482b2f580e7adfd584314144e3adc41b2b08bdff70789c06a87fd49ab7dfd4949c088464f296a8f1f69d60abf17850b 5a254dff8d52c9c4b8860b651e92a5973113f56f1c030ebd02417dc181029099007fba17e649ebcd1e1d044bdfcc279430f56e80eb54f921aea09dc18689beb9f34bf4005490373b98ed62ed66f887ea252160a6b15f91a0652288f55b704203d285ae011c79270bd5d21114334fb466ef469fde9df95a3e11914c69ba2abe a27c2c5e43baae066c5b329dcd72cab79a214af8fdef80a2201082df01a595b21807a6a3342e8ae626c0e4598fec95553be69f8882d7378b3280665efee8e5ef126cccc2eacdb561fc84c491c227bdd2323198f73c8de2ca9068b0f8e4245da4645abb5d3fc748f70542314f06fe52befe20239e5e0eeabdeaeb0fd4299886 1463aab51c77bc0fd59900fac5ce1773e0b71ffd32410a02063a152104b211530e3692a794f794073e75d7b05dc2f78c0ad588aa76064d888b500e950d2f4553f9bf23b0c22ac95771c291140fbb45541f381999a18b0dbc0656f58493098c61007db73a88a35dced73ddc40b636becd3259ee495e8e90f76a40023e5d8c48 dc98a2ae34edfac225855620c93365bb8b10eb2f7943f1016e3099e6ea05474750ef6e6e32b2d49fb82662238f0a33a1f9260215fee59f8a7762f8b395d601e66c0627b4dde3c681e7e1323e1fc72f2a26a068f6a00c07a9862bcb41deb978c09ca94f01ab0449a159620c7987bf9501023955b27089b7f95af916c319ed37 819f4796e917101031aae8a271189cec405c5ec0195da3b965047a69f1d2df83cacd4f320a94b5abd2bb6f2c06f7292b0c43421567587f793e043fdc07231e2ed763642791842a73730e76da849297ac6f5c60ce4be1a4d64a42282cf1e049c80df994d78d488e03ba101e8520715e68a5159cf00427a7ec0d46971d881f68 256e2e9a4addf369a03252b0fdda0c05650279f72349ebbecc1431697f87df7d87d3726a4916609fb3674cfbf8bc59e2af9d855bd5f8d991e53bcbcde373df266e5998fff0064f4abacd91894f0b76e337e416ee7632e88aa7adcc56430a022f85bbd2e802339441aeadd92efd87f160a8f98368fe8b5061f5a4aaaefdfdb3 31bfd109a6d9641be4ed21eaa90561f84f9114d8187af6e0d231254fd4184efcbe11ac4ac0c4f2ef4ebee729356f6819cf9180fe32a4827c201970fa382c93363e11594980747e1323589e0f9fce87048c1c1b659c277f001bcc05525680c6778ebdc2b88658ac7f14a1866b8be9dcb50f2f6c3360b62fb95a1417db555e07 89bb6b213291e6fc13dbc15e1421e8225799cd65afbffb899e8819fba810b6129fcb43b3552cf6f42c1a836a3397d6fbca416896e97ccf3e00f8932b8a19e3245d9f8a19dff4dcd8fe9f8e068a87cae658b7cf4c613ad3e73d818ec217f3e604f0d5499e0eee62153829a6d22ef926606e87dc1a5f8c5449e3f7991bdf6b9c a20fcde4ba519679575586ed701e777b3948b640b0c18aa62c326f0c73517dfc91ba5cc0dc1aa51256d2c9d330e822090b94012a13360ca15567ec72634f29477bf0d9f71162c9a9b138d62e17118eb12c5f7ff3ef464e6dcb0f9709dd6ef1fce7cebe59d7eeb9ecaba1dc08613a6206cb151513b55912d02dbbaeb3310bc8 ff725234dbe12ecbfe5e7680d6fbc60864ee0c07f89224326afe09b33ae142b7072715a120ddf29fdecddaa02d9616bc7962d6a0740ce050076b3461be5f12cb4a9fd2aa18a5ac8b67e9d6d13ff94ce18fce66225621c8f867bb66c741958b9e5b4c1cf7d1efbbd585284ea6e175d50c4e4cda2efe8f88aa6f004daa8e976f 37f1320c55a8679964077e3e800af1ed4333c6cb5b30301cb2812f228b1d196d3d87cf8035bdcf34d0a53ee1d3af0376143a02a762718fc97a777d6bada4877bfc0561d31af67e29ee7b81c15d676925fdca3f2d0c625b07bd4085dbde0b30610b05227d097364fdb30443cc1bc0227a76233871db622155052c294307a792 0fbec7a44784cb5dc6a4ab34a252fa948cb3e242d4bba9a821d0a04a9ef8ef1f5a40a1c623a26db245d9a4506a092b1261e647f553305e24db2358847f752e439ed4c15411c44620e78d01051db8c8d5408ebc2204f75e69ebb5d02ed0e82b0de812b31b882dad2506b6fed15be0c3f97e3b791f4e21eb9f21f873eb8045bc e7352ec5207bc1bddf135d3f1de8d2fe86746566dbf2478faec9c41ab6d47da56798af8a67a213b9495cbbf3d0e309ec288c65ed73c16e6e8506e8067dd991bd4364a0eccaa1612f172a8d361408b8fe9313e2a4271e8f2ac9e9fccf76b71a8f445a3c362995c1b74b62abaa9408c4e7a1985754eed14d1948e7faf378fd05 750d6a616701de0b8bc6606398dd43e174ef7733723aee91bb18f4cda2e8eaecb92f5dfc4b51eab336fe9fc88609a7db57fe87ad076386a7c9e7ec95264192f004d3968779df827d365898a4090fa77584de6b0bb385397b2f3d0aadcb1b055ababba9c57b44f46d1bee53fe9b4aa7942b736a10f0cd996050f721a2c31190 9fc6e5714dbc0ef077ab022c586574087bf9e04ec2de91717e9fec8156ea0cf5a0d42c135d4f3765766018166110e0b977637644b7b5b3ead9e4daac9075d89e5e04d6b7412f287c4f232d50666973f4800dec6c0a3e7929ada06c760a0c032ba7e12016011074220c0b5a8521712e105ab165dfa64e20508aad153a5f3e66 748c2f592bd0ac23405952a6bb5f324d5d3508ee50168d3e42fd5bf68ab658818b94283e16eb124cd29f6a69a6a5f9058b93285a858d54a9e2937ceacc276a1f95ad867d159037f86acff2fb4179f2079a1d53f99cc875379478bb5fba5892eb50d5c516288f8c49735897331235eec56b25211b32b03a58ae893081ac8742 9f0139b15a23793b4d764e985f38d4f9a381e15c845742b1557e5e671697125ebc6ba21f7a141950c1ea22091a3bf12f2142c2375c57768136903a4152eb856c2aee37a20c3c51c4ba923ef61ad50f9a1352d14141faf2e2ce08e472801d0fe34576228bbf84f65bede6b126ee490f30c4641db47fb652fb05c16b8738c1eb 62ebdd7c9a31f7e92a568ab77cd097ac8dc57e97aa6327cfcc0c6792cbc6ada1087f2f0e561de05c9703048ea484338144401aff886af73af6f7133f203cee5c1fa43ea9cd751e5427784ccfa901329ff8e451f0b22669235f9b9ea9fd13ad0b1c57b554068dedda8745b6cc1bafdcdb2deea3827fbe52aa8a360e7859c5e1 899f8439431fe772ba668b3a3b1a99b57310bf0870f86d3b5d8d617ccd085fdfbb530a88d65a978e96f1b54137d4bbfbea1173253dd1d5fffa52b7fbce0882f521f17f4d4a9693c6f033588bb619a3dadfe922b97fe2047e9931447d372bd1bc802b53bdd2ab1b155da7ce01d01a47b490432cefbbe67ffed4078470c7e4dd 7ac8e76d57c5470f010c137f816da5425174cde833909dff07facb63580a034ace2d7ffc08d32c0ded750206dd0444f1f1e769474de065112b4877bfd30867ad9f3fb0d1f3e9cf2fcb25ce6990215d241e0b6d8e64a71f0b5178234afcb03373e09e7e35e71bdaf68551b2e3f900598b57ab6c61b0b1bffd256510864cb71a 4d7a2b742a78d380759bf7069b5f1ff4e34bff04b7ed7c0e023e4776d27c8d7fda75c358261031c68924835b83438e43dc7f5d357b4a719e7ee153438313c45a900e608a37d123de26b4bdaac57dc756d2de11281e723e09607255b080765755811e2040c158f7c664585666f2c87866e56ef03d74aaa183398329d3937162 651686f32cb9047a47edf42d294693ee311872c8ae8722c597673a52d3652ddab08ddf261f0c61b02e7542230a50e589518584173116ee4a3c76bc1a40df112d4eb97caaf7a650221127101328e4155780ee76be090a9fdfdaf29c0cd9ec37555f8cb4ffc61852249ba7ea3b4d251c61c7e8eae9f98866b669516c81d83a7a 391f9d8f34535db519e6e6a61ff5470203e604bd0a8e0c5778ba95875929f4f49b8d2ec26e0c8d030ec93b77e8a25b832f3373ce61a4b43491ee40edf057d4596efb3ad61cc29c1b6980b0e5039146d61934ca28b4dc8313f03dce37736b556c7107a55bd9729695e56939880ddf5004d93cbcdc9f68c95de59e38795adb2a 502fe8247259f82334ca32a2fb3dde620e303c3ead6650478dbb7f4afaab4805db2154600ec0b02fe926c9f42007ac24ced38df61f3889ae41825fb89c30e0eb5ef8b2dda787e6c75991013c5cdbcc10355e8bffeb473116c623ccdf2346afa7c739d0ad42f69ca0b7e68319c130ed981fd6c370e0d6369e6ee97e32752b86 10ae94de09bd96502c4e34e86610ccab2dc2cb527799df784d5643a6ff1aa4d3d9cd0b7798964fa330bbc3351243be6a3b1519211004acbb08f4b41ea396e485ac1de0613ab29174b61ae361c517bed30bd293e42d36853803e3c16766197024bf16d0d8dbd260ee5ba76cbae75890b66d5bb7ff72d1630f059f863c4a0f0c 207683e7eda064e6c8596759595735025ad9b3af08180bb722fa713e428fba0f98d82499cc7c747183f6ae4fb6bcf978bb7574c4a569618571e50dce8ffb78d4603295fbabbcbd02237ef2a213492a6b41ed0a7f9aad38f3825926688f7fe4426c590f5479bd22a451c342a564ab02ef8169f967d1ca87a238ddd6cfd5696c 8f97ae4870ca2d814005fa376e1376bdca52b732391c5b71f51ede618ad9370fdb2a89d95276df695b6db060f2d683aa9b80a40770a1c76cbff7bfc7628c155e0fec88ab4c5ce051c8681190c8e60970230a52c428b1b1043ea5df17d5c10b25a5c6ddd941a023b00a9f61e89a4760cfcb0851eeea9c393d8b7dddfb9efb64 f1118b3fb9d45b610b5ec92449c72a451540f25b407d5162d85bb57dd1864d69bf7dda142767d6397437e950ed071793b63fa5ec834ab66ea827f2801fb7f33a2445587fb17a431b9a89a512db355e4b2f0290f8528112fe52e3f30e8748c2f2125aa2e4d8781f74d173066e1cceb94931d004e11c916f5d60800000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: Times-Italic %!PS-AdobeFont-1.0: Times-Italic 002.000 %%CreationDate: Thu May 1 14:20:19 1997 %%VMusage: 37530 44422 %% The digitally encoded machine readable software for producing the %% Typefaces licensed to you is copyrighted (c) 1985, 1987, 1989, 1990, 1993, %% 1997 Adobe Systems. All Rights Reserved. This software is the property of %% Adobe Systems Incorporated and its licensors, and may not be reproduced, %% used, displayed, modified, disclosed or transferred without the express %% written approval of Adobe. The digitally encoded machine readable %% outline data for producing the Typefaces licensed to you is copyrighted (c) %% 1981, 1997 Linotype-Hell AG and/or its subsidiaries. All Rights Reserved. %% This data is the property of Linotype-Hell AG and/or its subsidiaries and %% may not be reproduced, used, displayed, modified, disclosed or transferred %% without the express written approval of Linotype-Hell AG and/or its %% subsidiaries. %% Times is a trademark of Linotype-Hell AG and/or its subsidiaries. 11 dict begin /FontInfo 10 dict dup begin /version (002.000) readonly def /Notice (Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries.) readonly def /Copyright ( The digitally encoded machine readable software for producing the Typefaces licensed to you is copyrighted (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems. All Rights Reserved. This software is the property of Adobe Systems Incorporated and its licensors, and may not be reproduced, used, displayed, modified, disclosed or transferred without the express written approval of Adobe. The digitally encoded machine readable outline data for producing the Typefaces licensed to you is copyrighted (c) 1981, 1997 Linotype-Hell AG and/or its subsidiaries. All Rights Reserved. This data is the property of Linotype-Hell AG and/or its subsidiaries and may not be reproduced, used, displayed, modified, disclosed or transferred without the express written approval of Linotype-Hell AG and/or its subsidiaries. ) readonly def /FullName (Times Italic) readonly def /FamilyName (Times) readonly def /Weight (Medium) readonly def /isFixedPitch false def /ItalicAngle -15.5 def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /FontName /Times-Italic def /Encoding StandardEncoding def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] def /UniqueID 43148 def /FontBBox{-169 -217 1010 883}readonly def currentdict end currentfile eexec a6b9a629f232c2f7dbf1d3c363ba134897c3ce34dbaa9ec37bab446de4e350515336169bc75297ff1289d5c1290fc38fc78e4318cfd0b8d7f9a7e9f1a776f374e31179ac39a918ba448c0b8b82dd50958f71df52ad394cc70c6a3ee01b0b67a58dd0baa8d0564a0761b74d0c66fb54f4ae2f555a7b619dc94a9ce75c17000e 7d25b43cdad97e1023f0477fd1579f82401e30776bb03081a76d3061379c3afa6c985b9660da504ed8ac4f31ed315db59b3e606dfe9680a793e3612db011e1684d793fd5eebebf167e83b4fa5371a015d677e9a50e8d5d2f227635b21af5310214ae40efaa3134d407587ad5a6634e5f19c1805984142c9bd01bc20f6c29a7 353976a5fd5754898c355df32a493b4f6a3398f9ae8182831f3b18146d370f82fda2dbc50b81f477cb91bf61fd13b4cd1267da3bced4cc13b7d3b3e3add1fee10364829c131e7d24b830ec2f0fc89e5eb3802a37e5817e95d4a7138ca230cbb0cf63ae16476be2a3d40e2b0f567c5fb4922cc7a0877a54439c9ad463880ac5 cc4a388675ee7fc141e0da37ae821ea708aa55f21f836bfd50bacb95368040d6779e41515ab67adb002a88e2ab77cf9ccf1f56a03df21a13a1ce6d0356dad38fd6c4303463b753cedf6d2e9de189e698afe9b8edced2ac1bad1f2161320e4549f6feeef8f856637a10db086da5dc851b107dccf2a6f7825e4f0f921e3b46a1 fef31bc4957c26bc03d01188bb5e0b81ad7b972d1ef27c75544e80eb39a11e41d5e40360e42c564b15dcc7475eb4f945936315d9929c2503ab233189d6cc6519eada430f07edc00ab554dec9afac3d903fd46a3b13836bde0df7bb1f6fdb793dcff76c93a846787623071182324017d7758cd809cd4fc454e9cb77cc595380 1c0bcb170f7fa45300c3ca8aa1582e4fc5b9ef347de4576ff19cb1b66657f2ae18086f088145ff5a5ebb7ddcc1b8c0dca636396389f743ea78a45b6086b8a876d16efbf75cd68b93c6e521743050442ea6328f92e2ebc1b41b0395cc2c4c331194cb847556dad8d9b01001201f5b8203011d049eec892ab294ac1add721de7 f9e5636e40002f56d467ad03e1781d26b5e32b6cb7b57e3a6e9f1e90c8c5bd05e992d7530cde08fc88159a3c423ceee28342d3de57c6ffbab99bea7338b9e4e62da6804b56f52785e152a9fe0bd8ff687702b02e6e31ea190137bd6a3e3cf3953271fe257822d94cd2ce847f2273d5c02ddc41bd53badc09f830dbb0735529 e4901dd854d2709ce3a3d4a303ce353ee479bfedaf0dede1218ea6ccb76bba914bfde56bced74642e36d2c0afa614945dbaf16cb022cb9ed09cb1d5fab258da255bd287bb71ee34427e4e5d04fde93e9e41621cd2a060fa8daf7c205e25ef6e763b3239068055a40be53b11a70755276e4171a7fa5c6940892d9d68cc537f7 7e1b69b90ecd4faaf4bb610e93fbcd13ccab963e41e688524de70c2800f0f558f9d6973812e50702829d88cff7733b15445a218a8089878dd4983d5052d66c935e42d5532de8c160b043607dd2d90508d06f9ccb48a42b5543b62e1243ee3a8d4366b28feb00b2c73e29a912fca0d1e7f614679459508679091d7ceae748dc 30284cc307608f276c3c4abb6f15bd9e213e4794b973a5d73a1c3e4afdc754b6616f852d75b8191bb16daf65d29e71c8d1a4272fcf1193effc1e348dbcbe50075398c472f3efcc04295f97098b7a81b157e8bc7f4ecb0b208f4f0c823fe8a38c7a56394ed09dad376f41202e7d7c987d9bdb9870de195110b77f95a9714e79 2bc98f10e2561848cdf73b26f661bf320c773e46aa9ad2c8e359e3420edbbecc9ad03ffe262a1222965e2fa5a875ba9a5dedf753d937d3ad22fb96306ac8809aca037e24cc8986f75d93912ce89fbd64f7a93709a39c2c4bd94b65663902100a315fec69ddaddc995014ef4cd5635fa1a026cd283391c768e5dc9a972846ae a9991562d0f5a7e9e4ae933cfcf8d50819396e21ea48faf7aad10fd43125dc38a4ecdf24fe77a8a3132c245e7fb3d96d090eab0f4f8a44f2716ff7c53b38a308ceaa5f34af0200eaf231c72439dcf3854f48164f31e145c4fd75fe1a7505c50c4fe6229625bcb3cb6f212e00dad478ca08c3ab38ff8c1299f15b12af7d82aa 72458cd2af5dc0c8d7471f15ccbaf96da0cc39c0b51c6be5a2ccd61da6549d32519c5e4213f2bb8c638a92fbb0736cfa263a932caf4636c62e4b461ba8eb77683cbc2fd387c62cd250e70887417144ae922d8ad5035185c3a6b25cbe0369e60a795d7824db7cb4e572558a17cb11357b6c91d95c727c7d1d91db9f56450208 cab09fd17d34a9111612675d202e136095605b66095104619bc023b5538245f2c637f78ddb1198aaae07180ef9a524c60272499de2e3448657dd5b17db055e4f39da32e800ae3543a93e2cad811274767a240279b566c16b0c212ea6126c2587c900cbf17e8709d868e25a81025f00b52f6b5dcef38356d9c6c171a168595e 935812a0efb5e9f6a457e7ce7e7206c4f1125d280bfef3c5fa2e46f7b2d23744d52ed92162db40b78bf85b3751ecfb97b0356aba62c6010805f2607054e0cc028b2852e920a0207d16d93f833f072778eec2e4553bb7f6e393cbea406a490f8b53a4625c9cfc27b9fd937b6633e352885043e4f830dfd721fef3c5e151d2dd 8d87ccf94732da41c7e59c9c594684c6d24b44600d653b1915dcac06e1faedcfae380ea98d9f0a5b231b69233a4e4ee4e208f288a43e687dcd4f4d9284a4d79148000277ec92912daf0b6f5fa16b324a9cfb5bb659a00a0d09ebd60e71d294d8f9a6f044ccc491a3fdf98c9af8dc0c94b8db830427ddabc7ec2c2a483a2fb2 78bb5ff7b27fdc9280e401923f7d2a6f48c441aee30bd31f0db6fb93e49ff4ea14e49f75ec083e42fea24496dd28c9fafe111c836e2f62193e7a29766fb0c0d5f5212bf5ba597849d734064f44db9e8265271b4392b07375e0b8cccc255e05eb61e89c313517724b33b1b79ce5333b9f21bb9c372e01976b9911470aaf59c6 667eb5ae7fd3780f834108155d21e78ab31c2e883d0c1fb98a62abf0c144c7a0ab62ad28b99b763436c8e5d278bd02f153177da3040e909e25b0166f5c9d6a73c1d8ac9f2599c9c376a744b1fcfa5d32de5ecf30a3c90163b9d50d989a9e38d19bc86c7488aa236d42fa19595faa3e1870413c694fa750f8cfead8fd5de6aa 458c3dad1ee47c3a2bb4deaf35424d8e06d9452cdb73c82d72299d49b30b385a07200f2203ce45bfa033f84ea6e7e6e714a00a1dca211e9f09f6f365763ec4b3921924a784aed68f035042fa27dcf6344542e7323268fb6b678c3d2eff80d466c9c675ae7e95cf3d49736eeee951bc7dde934d051fb6e1cb6f5769e5f9969a 64d59d633fcb9412993af9efc89f7e13c6e2f35be57009772904595b6531e0abfd6e7c7e90390c732f7168c8afe794f6dafccccc7de0273bae11d781a05ef8fac2f904f1a717e2cb2b6acae96b8af623f99084067cec1cad6e06dea70c000fc01d39ba0d98d8d57ee7bb1c189d865b75b467c512526a6dde0e0b3f472a3697 60c80b1eb32c3a8525a728a447bc811df4a3627e9f4d0d44545e961abc809543133e547129a63fce00b18f0d1ee2899514f9e421d1aeb33843ee084c8561f69d00a02e04b0ef833dc280ba7b1def444b4dd589d00970cf561f411e29409901e5125042df042cc7dd92d21dd718cb10253c910b6e2dab43ffcd899ee81144da b0f52a321c12319b8245b01c700203284d68cb91de62be389af59def29d24c563bc305df8dae50f75120c5385aeba8def10bcacc94f1660e4d3916729b353c7eef302a4cc13816aa0bd26e6b38bafb9c39bc0c9811e6a7a8c5fc1582cc96a850e111c791a3afab2eefc1b613603fcff9dca956f1d0fca02247db36646e8f60 b6668b39793f56621d2738933d7299364ad42dd988f488b61e070282f8b05c99f232a2d8850a6af37599ea382ae5c04df20cab9c758aca2bdb1a81ee3dfe9a0ce92924a74c4daa6c8f44a03c2f5ba4652d7abc83fe0bfe4c5815e0fff7b9d09ed1b683205e359d8f367013f487dd30ef1861e48f48fbcc9d9fd642e16f41ff 2fd663fab21d5e44574966722891cb85e9b0d0a357a43fdb5c0e2146ecfde2f773ad5f9dc08bfb98f7761f88641bcd7330e99c605fcf8bfd556536067d543b1ded66a920221c9ebf86fade0e9530d3d2d66c366c167320a8f4e8b290253444b6644367e2ea4d4c50198240e7b2ee1f0ea504f1cf42f71606c6553aad6e4bc2 cb628b04b42402ddba8ba5e8e7f6b3a15e695e9a281e5f0322356e1dc1b253fab021add52eb6c43bb8263708060ba90a953b8659bdf1290d306242ab30a29b58d7c43d4b579534973dff998629c3c7be7f18689752fa1cde08289190c49d355b82da736714ba072082f3a7ebd9524ac4d4e37fbcd7073a0e974f63dc7a31f6 5bdddbdadf51c58a8c03f7e5fa2c397ba8e919d49f72acaa04d5fe473534345bd101459b94976a477a0867510eb71395736fd82dbd2e16e51ae49fc9119cb9218b43b9f7cb382d2ab92157add6a86bb9946706637e2574de75d5a9f53dc0cf92a67d9f0262b48913d940b5b7dad66def3dc136c7ef88570b70ca3d41d0301c 736b54199a351e8137b7d59c6d695ff86ca2369d0702a3b131cd5ef63684d1c689f182f0b2e8e79d32c6e6f8a81fd42819658dd85e560289498c3ed5d4b3d9224f0adf9558660d23cf1c39beb5f63aca618f7f9cd1f50904dabaa31d6d9cc30b7c258675cb4e70427663484d025456f1c74fbd3fd7e35ccb03beac3ac4bfb4 92ea69f77dcb116d13d49ed5cfd3e2fb855cabd23ce9c8239c077a5991296b24d553946bf6dfdd121bac62380e3f55efb9c43216877cf541bcb364c27f792e68b3bbe7ecd6f25f527ceac773703db71a113de1af13c1240e07251a9019c9aa9ebfde2bfc8b28fda478931d825c8319036355d70fa87adedf363905f6f3a68d 91b4ced1bf9e09825205a533af4199d0ad5da448228d170cdd1f6df35f41bc588efc24857cb6da20cb02284dfcf103887ab4cb66311a4f0db54129524a65b7f930ddb4cd33ba87844851918dda631123354b462f6a62f413d16be8c789e570d918daa2b4a6d996c6e882c2e4f4641be64cd2631dd5b709a21cd1f849c52a63 e6b5fd6f620e0da1790f7ccf56394ecfcc83a1e0241ca66bb367a1a7036b2dc6ff7083b48560e6d630dedb07f3ca0327d12c01313b7271f7b619c0d671e6b481a8d662574455d44f3e3ee5ad16278e1bbd6821fee496df23a84d996fdcaef6126d47e4e00757cebf21a5523ea7b9b825192f3bd76627723e2aa55079ba3fc0 77932e6e8aee9eeab93add4bfdc262a5d9fd962c5119487e3978b09e032fe96c0e6d614d145502bf9fd5a0529ec4677f9745a93a475eb42a39c9c7c8e2721df1596c684dd6757747644f0df95351d7fb7a99bae4909645c6da5bc8266d212e1be1d619289b228121b922e1069a188be77ec82b6903f41fedb80b856bddc8d3 447e644151c356813479baffb68d204894de0cf118df39e943cedf8751e998c677ac19048ac5806d5bbdbf5ef1e095d43077df16f990800ac65be3b07c96f17fde9db5c83ba93622909fb3e03251e9aed3b59a6f1a07da7fb37838764288c4b20be767d2dcceaef40bd77b545473f85b60274bb4a25f563e0b747b8f7b478e a802910276c78f7e2020a0a607f4711871d83495b19b45b369d514770d3cc01628ffe7f43e35b0b6b4a8e7bfe53a386556ba3c2499c82e7d266619a9a100d132230dd655bd2eb379e8aab4520f54eca98fd74875027ca90ba451103e26f218a84af8b7f14fd3f58ce7ed5b5eb5cafccb804236bded0d3c77691288de8f2335 ef156364c68c23b90689b518fb7bb9da5dfbee18eeef341dabd74c4040094307f31d2162b48eb7adeebea15ef2f48641efc3df83de80203b5717d99e1679bdcec2bdb4fd0efca25dfe81aadde108e6bf6b8e42d887fd6ec38a9cb92c962360b0906681c01703568f575b1b45cd9ff31670a8e1b61928ef6140f41bce10e832 1f7c217c4122064e0e6b4d64a39fd8bc37f600e7253d7e3479b0d4123af07ed7373bebe19f12a8688058462b87fbc3d8c611d892f911164b53b481acf4af562a11e5a12f414f82489fd138391b8d63b887595e3d8b5758a5f889a5f63aa96c74018ddd25bb6d01f9204e5f97473564f2d8b3ab51f2fd36368d84ef4c04d378 501cdc68b00721f5664aa1d441fe750e175f872727b7996cfd9b804fa1443ee8f07978b074a28cb39effe38ce53c5ac26ef8202918191ecf1668486a268f45c3d19c5d194efb695aecae578c5bd5318b8791873d92ba5a04e4b5cfb7dc7a7488e0275dd2cbf07cf3c5bc658a8056611bf30d2dc0100066e149089163228c2e c1083e331de3de4eef963bde5e8c6f6fb7506e63566fee34a550835da6b72c194bb3943c7ac3d8d83cb228ef8209770e01a35ededba62de9a66c31bec893ff8bc1eeed2eb62322075e87071d27e364f998698b03cf6f673aca20f660147bce5c0f7ca29414c556a93cf4120c8b1396ba0a0f333c178485877e5f4442c9a840 0ed8b6c023724908c4122bd51b506a3b542b0e4158bca16d4ab4944dcacb286cc1c4f048288dedee76dfb6cfd83c3ec0029333f29af1f153c0e692b62adeb3f4f8017c50b87ebccb8732b2e67b589156611076a3c322fb4bd509977ba5a1c724e6b0f03e44a19733cfaf9d6f382c011ffeb6ac14c1324ce16fdd7e2db73f20 474217f8cd6cacb36ffb66baedc093daa664c63cde2346f20b13f39ee53d6c1c07d45ef66ae29af2e45f8e27b497c37d75d03ad6df381879c48397b366c705803e0cadeaaad4bdfa280e92b7635dc1159d7b9715f96ae389637510800d4c8a2199ec1c81c774214b6b3b0cf3056a8587de0fc180ecb020c6c96d366f026f66 4f2cad516facdae32ca43f4609f4789238e34facbecbafc9e6183f82eb2fa5e5b3fc75b51ee2d90efb3d72f6ad6ce79cbdf48c10177638754dab403a13df5e22169db8e19652f5bf7b8b5bdf43d5422d093221fd2b6e2d181b4b33127e9ada085afee0f3c18a63855b307666c0d18a7e64c21dc1c83a5f0e3b2edd2479bdb8 1ab77d726cceccdf7f926bcafce2a8eb8f5ca9b32f370a192a0e043a981437da8adb9cf94b72da24e1630ec6fe8d04a6ec839c504183661736330084cc7b2188a293f2536234d2f10615185218349115d7ca81d2377c0eee17115ba31abb597d1eaeaa55b7f3b4bee147621df098dfd06b20670e1c8d15a064a1af8aa4ac70 2cd6eb52fdc8addf9633f1204ef11a813957e9469cffeb621ac33b42149cca7713c5657bd1147fa1fe7a7ca0013aecf241b019bb3bb5ef44ad898346a0dafe9bbdb5dcb526b40482aa88cc2b6065d7d8ed2a752f63f827398598e67b2a31c24be0186eb4ee8ab5e2051a5712d12a384aa4d27e4c26be290d116a71bc8e5922 27a0c411075fe94c4dc225404f3bc2911a0255fc2daa79ee596cdd48f0f0c340e712d7c25854fe0e87edfa6a4c603f3f77935f24edf4d28f537e4ed87cb1099d8c0937a9ef551134ec7edf3fba6d9e75a52fe2e1ced82957ce44699387dbc2d8bf8ffe9f6af6dd6458669c2b94e9066e8aeb02df9b69742bb8a572f9fbdbe2 78aa1a70605e35ea269ad8115bd56d063ad44926dbf6d776bcf6e11025bd638846861de1c15442f4eda2e7250cad26be98d8677daf1100f50eb9890ee4270d89585b1d76d8c526815bd2bb96c6757f1c16d789f1ca2b67cbb8838897ef038d4cf8d09352243df52f9cc8cbe35a16bafa6a67696b92298a3999d91c8efa3f47 3a4d0d7c87517ec694bdc9d239f09183d34f1a0e65dc89b142e4c62e6fb78cc2745ac3c8b660c4377562bcfc606b422e8c1b792f42d18299a2c98e8744f400140123d249ea7ae1f575bfedd05b7f50aea36a628ffcb7cda2e20a770c676b224deca5ca8983605cbd00971dd79fa5ff635ef3c33cdc3329b511d2292675b924 0a6e17f35c4be46ed74333e111704d2c44480b005ce620e83fec4b1fe6d637d9a6e2323e377d167e19edcb65f8d40c7435c3ed4960624b2cabe1649db2f6f544926f30ecf95fd8168f28d98d6e8930a8484ad1b392019c86daa74f0db4e8e993ab36ad69b03575faf26fc66533aa39183eb324ba30174574351bde5deda9c4 8137965ec9f3f14c54326bfe6467f6c282b6ed5cbc056788d696a3d8e8dcbfd8a0ed9793e18ac5e791641887027007a5a0c73392c9dd1157f88a307c0798d6d4b7346864e6af64429f66992100729c3f2154365acc90eb70a48980610f14d8d536b048f6718bc6c5b704b270a3dd6b0cc290f40e3137cb8bda7a927286c03d 12dc4088b5e36a74a349ec673994ea142aa06770d991acef5efea1338c22daed229aa2fe4f56e786932cea4c39503db16e32dd716c1a27cb0d78be21cf58efecb60099a5edaf3b0609efb52849b3c021ff564fc8e7cba25dd24995e9c164121be15bc4122216f17292e641c8c65551a44d4cee4803ced8605a36205d223e9c 748585e7e0db3c2227a513689d21d3a2861cdbfee4cfb36bf74f31a6bded1f0cf28dfa996f821103a889883389d02cb1112f643e2248db05aaeab02f5b5353b0fd66b65742c2c6cc7a7848171511b86b3f0c71e4a882c055a09077830f9f099b38d156a7afe5eeef4aea65f75ba912618a31bcbe1cc838072c8d0bdb954b5e b845c9aac14a1fc4c6e91bf3298ecc4d66709d91eacd2cda6a11b984887d2bd3c377fa55126dc4955e31e0d894c2668bb22430fa4efa8a0317e182084706fcc7382a9202d4d24905025e8600bef91e71cebf96d0756cfcb80189719f12dda753d648f3e880899ad5bdba7cc775433b40a02b381a0aed6788940c2e931f07e7 1c9a519abba74f600620bb189019ffb25f5ca920f832e1f7493976b10510ab64a8b8e65214879e9f1081c87de0784e40da248699a43bbc32c5e037705608d0af9ffdbb33c73cde820743bae3ba2dfdad6b61d3bb88e0cc72c3fb52ba8c4f0de7d1f2fd32c072bfb217f02188745ca88093b5ace2f81b8e012a50dd3c399107 28d8092fccb81ac1f78f01facd379dddb6327342a3b0ef8889686e02df57875a68deb17bcd08bdbcbcfe5f55999aa2fcae12bb2dedab0675304e8cc2d1d601d775905759c0c5cf9bdd6fd8559daf3a98b62341a0897c4d695e7743ae01a5a00dd1ed7c7df30788f4ca24a0f82aac4b24143909b4ad3bb84a6e8e81032cf3e0 a750dfebb3440e2e65290ad429aae20b38f6f80e5dc479c09b8dd6da5e0b3f525a18f6dd3f90c0394e6b635cb63d98ff480ab56a34ff7a20740c3640d8e07a9c3bc1839fd7a7da78ef5743a7238461042bcc6b1bd395715862bd35cb8c2361235bb4a80a25d5bad2a356d8ad61a7807738d360d07d8a7de628e932fb78f63e 12270b26fba34879a2cecf6b61cb4f3d460a8cd37d9b695dae2d7888052238e2694422a446c533252a416bcce1e3ba8b94568aa7f11f34c2470b9811a0f02c9ea344e4df9b19dffb3e2dbd51411f6386454d40fd1174067c7b33e7ce75acbcc06cad15184cf623f224848575ffb52746dff0f6bce94ed8aaa162eb8020572c b0f955556ff87b56a37c3ab237e52a4936440b588359337c48c92348cf3afa958c0e007f6bfbfcf7bbdb7354a405e5df07a600bbc391074f0e01ecae7dfc4114b05ed33f048d4bb50358395043976f8f8d5526ab7cc7a503d9dfbc4c0a1b352c6ee6a29c30b39e7d5a530643d59a68ad7aae841f95a1a779a9b3e3d9b57b5e 8e826a17be18ee4c4f5bfefa32611ce07e9393b0b1373af60cd30e569e496d07fd86aa790fc94e17a67f9c97e667be5253adc946cc6a2bcd662c7aff5e77432c37e4b4dccb0ac499804758babbdaf34c42570b74d42953224b1036d056118301448046053c847df44cbb17b5abb4c4e94b5a824a320693a37f47b6127b1738 268903e4721b0cfd1d64e90bd77b5f93e8d13cea8f30a9bc3ae9e58468aca69bdb7d1f18e21359762549db5c89046a7d55ac9bf3f90ba1dff2eb9b5931de99ef05d38f3a520fe0d0c800997cca41ad00d3caddbbf6e6240ae3a3f18b5cbd3ff75853d6d15ab56ff23094edc855b8a6e39b1f91ce9d5db388638596c9e4a9b6 8f056731eee5f74b7603038d6e1278abfe08011cdf54fce87119f087537f6e79313d5539a18e4b8e015f36e00d98d135ee1ff992d00d67a81bfd7e3350aec3e8c533f8f6ff10e0bc9eb542a1fa7f8109e7a51c78570a06026754fdc0f8adc65288965d876d929af1a2a1aca0475a655bcb950589759b98209de4bd952f4a31 2a14d5d7ab9a221744ef2102af933b7c40bac7a173ffb23d87385cb223fd39455d6d3b6840bae8b208b1e2a27877199ea5f4db699c50017cda00305c04d87a730c2701da915f1a2804c8e0191f8ed22f8d627bc8bbcdd48b7f26f83bc9564d81d046ecfee8a725e3cbd99d37783b91fd2e68b4ecb27f84e42062eec67d217d c09e50dccefa314db45b3d4d23a18943b085fe9ba70ad17970e0b5d8c326337646b05f9125d7ed3fba3478e43113e1f753e9eae84a927e084de8bcf3a56d06fbc210a0779c33a50ca8f86497fadd17213aacaf785be6c0b7f1254847e44e87921525fa83044824abcafa99839629cf7a5ed7e4c126b01d93529b32b7bd151f fd9aae121f349b81c79f4ff6c382ada0131b1066bf92a02791b39dfb9e3e91822a761e778cc46de07e170f95d6191f3282fee93e57e5f78708e45632a7e162d442f42aeb9f177b6e5d13f4534004a915c10f7921a6db090f6a7525e4d5ea4ce717b88aeb96cd304576d24a193b419792eab95d0e7df08890768787599ff814 17f4066a791db68005c7965759f2ad91fde7385c1811435a23375a61acfb430705b8bcffa56744397e0673ad1f1898faecbbc95cb2f7cf2d8e64a0442276e0737e3af8d448f2a53ed0299c1a45279883bf1ec9fede95de82cd3376554d8464b3f0aae61b6f38e040fcfba03fb3e43fe7b11d2b35bf3f3ca22efd1d29dd9b6a f3d41c5ea2929e502d18347028eea275244b6b1cffa4c17b17d6695e350e81826780a8dfba0201cbe1cf3c1c43dc6387646f6ba421934633fd3955c63cf0c8b7115a5a66e5a03e9c5a5793e033399b70edc30afcf839b2ec263483d3f3d8764f3b2b55179c7dad9339d360e948c68ae2947493f4b0a4e61f04e09fb81b0e77 da90531386bfc57a0507a285f67a23bff25a79725137ab0d3dba371f4cf2448ae1fcb236b23f71564e53342f8688d7f40f3986c2779539456bc23e44395003b8097547e3505abaad403dfb147680609ce540e52929c83ba833c99623de2e0b1aab95e930f4a61cb069d75ccab1ca5a3fa737f89a0b31193b84821a693166b0 f97300e0f5079650dc8f907d799c102b69e716050ab526c0dfc7eecb75e4f866caa3c2232abcfe363ae6b5c2bc92e5ed714508656372e422bac1e1b341e89ba11ad3dcba27fd080aded42be6e8c6a870365d44eac6fe43c103eb63b58cab88d474f4c42e46edbbedf6d4f764cfc865e80cae7360b31e3b75a4f0f369a8e3ca d3a5bfcc93cad8f1916bdf3f259c4a5892b65a83704f8dd6ffcf2e57cbe4cc7f8e95420f07fe24d2a9c46c5a77032ed2fde68dcd66bdbe667dd187a94cabff1f9f10416cd2affb898de59ad102eb2c973de95bab961c2570e5d836d48a2b341de3ddc7d0b0b71d3570b6d81b8bedb8b3d0739449d7c52cfc41cc8cb7fb93a0 1af28525b0a53320e220317b90e499c00cba76b56c61076120c37d6934e7a356b1ebae6810541dc2c630a542193632b6afd64af76ad61650b2bc150c812b153e075422b20b5e3964a71b12be2072728c607505429d5e715893d07e6b9a35771cfbd538f5d44017f4520add4af9f7fd8c17ae5c26270bac6693d81ce2a831cb 380e2f1a0ebf1fea8a58b15399984009138c48bf12cee4c9af3bc911a829303f538a0f52850b2bfbaaf9d72558215b49ac3c1de809ccc50ec3720c90a0c4a0286f118d1f1220b58d791a5582e4b187b0988052b367a4fcb1ba8da53fe734699f908c34323dc6cbcfdb8fc93b6d1a11257fcf87ddd65d3f01c63078ad69dbc7 2490eceef26b2b4a36571e70ab8068a9224dba2bfe3902aff31d7164e9af4cbb7ca830d35e151f6cf72a2e5f144d38bbc8b8377f390e730212143a452adaf9682410c1e9416e6d7d24c048ef65e580491591924807ba88a85ac6064c5ade510ffdbe719ddd38b256ca77a5d892913a16da4a1481f4a4e9d0d61c03e32ff5f3 db0dc8d50ad7ebfb09845d4c6ecd7a677b760d1e499df8b35e6bde600928d0555d56db1a00aa761a7e09ad5809244a52e70fcc1221b057742ea227598a2b320419fee1f8f0ead01061e2e805dd0700c5ffeafd678a8651771910dd7cf8a9a814589ef600815f178ad546017fde5e333d64fa7b3a79e231306d55df09a01c21 fcf83de1b06982bca10da8881bb31378f77054e843f6a6faf686a5dc9084920206002f211a69c1d136e81ad1e4a3348aae77cc3fb23230cd44f8ac0c34b1e861486f0dc8906a153efd9f774acc9533fdaefc238df9bf56c98626ebb8351d75b4e76d510035a60df8b9dcd5f9566991dcc897b0dd3b98541cc19f581ec026de 5bd7b316981eb4fa5c6e0e8555568c768448fef2f66ba7281d8ea05d632ac772c8a42123315a7bd43af7052a534eebd8507801a32386e6aa4cb32f2cccd88f70564d77edd99221251284e6521b1af01dfd8abee459f994fb653e051a5cd35b62bb4c2ca86f9e2bc51444ea8513a5dfaab452f39a41a1fbd4b596174d6920c8 d78f5eee345216a4888260840594a822de5b59f8d61485d359417c5369d5a49fd977b759d431fbc95992607c9fedfed9408603a0a52aaa54bba54f3a5d98996837dd4a01931235dee4b84d92d27154a125a3f529151213af89da7feb9e4f1293774740d74f803541aeff8333dd58613362c57094fe45f727a4cd2943edce7a 697c6b1c89c78f739242d118394f20707cf861bca046a8f86b1b6d00980b90e0d3a9e04319a2f1c34069e2c7efd65000fbd250ec0b25514864c91a7a4b8eb983dc0c246f68c306abe147008877221a877ea7f0e9234329e89b85465b25547461aeca513f35b54d64ccd040fbd316f01db500e3cf7d8ce9f77a490edc67af23 ba88ece1f02e1601cc73d895c11c68e709f276f88660178b7b0b9be402e8ed4401056d0b4b59c5e53a91ccbb53246888b39efc1b2bd4c9b5963979a62b5e34fefb06f11b8bea7f6dd41bd22d40c2e7b176f0c11044ad39b5aa0d6f103102ab7dd4a49b269b93e15333419135dab9ff044650bc214afeb95f897bbc81ca1c07 a2967e6607678affe433aaca13b8a3a3293c8285b7890aadcc8504d88ad1b1d507a416bf68357880ccc2b3b2bfe6aba7c0eede89ffbd383b6b3ef1869f4b80825d21e2bb3ed6e586379d9ba26ef5f61dc226377e72b068416ae28ce608fbe7da8ebf491ec59422699c1877cefbe113856d9291f3ee19fba2ad42d16954d4fb b581f15dd6476f03e92663c41e57538e8e002a2a3e6693aa9a05c49d57765baf324d4569eb7bb664ec0dcd6e8cb109f5e21dbb168aef008eb338d6785e2dea86ea733c485f2cc8e86efbd8173efe88de6b0574a7c7f51fca091258185a0691840e47ea94401e41bd95e41c04bf1188c30548455b53f900fc769f87a5510520 61db98e5d149df129a25573aa8206a483ac63c8e4c8a5e51e59a43474f9adc05bc1e1bdd796dfdc68f340580e87da8e45ada31ae51c67dcfd8e886844b2b25c3f138963121554efa1ad1db48cd8deae6617678f827cb3559a4c5ec736b0055abcea816521a12998da7b66b5c8dd2504cb17df50270a2d989d7b0a81e580cee 8c39c6d5fe296a2b8cd298ec84ec4c9c17c39a3852d55c125a4d8770a3e0ea4668d97578b94f099ee92544ea2138308c388d94938329c7747f40a49b1880e6edcacfcbdf6d27c06741f0f204150058e224360c664fd49392669a5e6adf6714043ac941598ce467feab295ab712a6ec17a5c7100cdb2641fed1eab4784dbcd6 6b383ecdbbe955788731a27dd7da80fd8ce314cf6bdf10ba612ced20e89787ab9c4262ac3e7860d63a2c4d0257c6d51189f6c6851847d0602226fe91d7fadcdf66efe32e8fb9f8e907e7ecaaca3c14b5af665f57fcdc2414e978dd83625098c42e53103c720c96f2eb2233a1ab567563d090fa95b170cfc10804fc21ff068c 2d806c25d142f5422b15f55885761dfb48203117169ae6fabc96ed8284ffe6dd1d0b9fce0363fd03a43004ecf25f7998095ffcbcdb1e83ebbeb305c103d6a4ab57d02c0f9a0ed125d87fbabf6f78880ab96c4dda1779fa45172a9c4528b035435a18684a6bf8fe68738d6650f7cd40233dee61191d97f0f93e0b239cb775f2 7c0256e0eb280728ba50baaf7c50c240f1962172834bfab118c2ae6dfadf3518805dc0f291b299358f3c6bbd771ba74eb228de51237640c0ab5fc066ac74245031256c820816e91af3d618db058b030c4aa6b421b33a4c40a13b0506c67c280bf725373ba45b5ccd76bd0a2b25ab4f05bae6d2052a93d9997f399b5555f87c 73b615d27626c19e2751fa3dc83d297525cb7ab920031cd62f9f046987618de990620485490275957a834315ca92b68c06f6b3e18b84b9766154a2f52f9ff6be208809bbe27b9ef95468cd1ec05763685d4c57c6422c11c1bfe232eeb39f74c320bd282148c34006fecbd68a794f67112ad8eba168edf50e5cc7b5d1bd77c2 773201595b996d77f4e5894402934bd2eb54ff7cb55dc242cb9cead58c0165af15a37c8cd9d3371c9bdfb1dc4411f94905ede644239afdf18b31e45a62bc8aaf47c01f33b90a2b0ee9253a99b9d9648d5ea5f95d79f7e5d7d6eca513082a5caad32896c76795efb5b23152b80cf798d7b2efb75ae8f42867137d2837e5a6c4 d890d4c8a5c1e3e185085ab487212186acd09ecf3d88748223bd158e21e5ff572093cf5435a776caf7501d36f36c95a434bda55bc253b9ecb870dcd891e8fd42adf8c5e17103a040f401708041b07891d90b279f4302df9c9d4bca1b60726737ae5b85bc4a0171548c7dff1669fa4c86d9b96239829ea2e0363b4a02f34df1 c5fc7724273abe2bd0bfc9ca1333002ea38f173d2f82eb3125d441a5b1a10bb97acd1018672e85e96e406a9192c68570635a1e4941d3e167b4fd9ec0423f951e6471c27fc4b2d8df8a1f6dfcd7e75093ea4f121e36a885a3763f4b80af1160012635fa58e59a00b3975941c3dde1b34d524ce5e68ad11b58b46a6f9f1ff219 3303849968fb27677f0332c06c4f5a13522cfa6c99808381cd36caf4da498152eef447ca03d0b02fd071fb0138b950b5ad8c87cbc5ea961f48a9a45f0e55c1159adeda0e788018d7b14ae8c457574f60e61f9b5c20a455951c4ad5aee44b66f384937c9b4001cbf9a9ef60d0d0c43e0f9f0686bb8f951e336745bb03148722 c81593b9859d92d9e34f77bc952e6e4aa2d688687cda330096f7cbe56d64bcb694c25e7f3c7d646710634e68c533e572c9ce3c0991c2969f60c8c3d6d1d1049ac62a60093216a18b108277516b208e79413a74dfaf5dd0ce70fd61650c8bef74d4029234c7c652f9c0c5cebd3edda8a0a9aba4f521803de9c0a632ca1902b7 54e61f19acc6c216cc82a2e12225341dc83ab069f4bf1729dc6df64afdbb2d4f60b2f0a52b03ce289201aca4e1fc60a021b54756b10def2e443e34fd4a269c886687dac6be9fc0d0960d1fbffe1de76735493c89b2f29cf335a71f00119286fd50798f00a39d28e56b89217659d63e92b0548251b5971afffdf087fb5bf370 58d263e6462e488392b08bcb5613c007bbede052b5d39f93fe3263088088578743b905306a49e28df7231f24079d91fef8b0c090bb4efef2f05bd5bcadef3af64db04faf7588cfbbfa4fc5909ef5b4c5de609a0a84c703aa121fbefc33f44375a2ee0534f1c75ff76dab5c95bffc853f0ee109b4d6b3b11c72fa1977e1e165 0b12ecac216a1a61614c2136728b4ed70fa6627ef98e766f23fe00320ee8035bfe0e09594f2c4c816e986ef705bad8d0b578a230f1e33c5e20514038f1ccee985babb1f677ea603467cbe7fd47386fe1677e9ebd3a9f00a683b123a056b21715ebbb938429cad7bb02c8a3ddf91b679ef5135f702a296eeaf210c765e73e70 e9766c37d1e5387cfc8450b4eb86b546f97ffba4dd7638030f71f4bf01f279cfe56e514a8806ca9077655dc7d7d55062b2bf3e3519bd10998d62839b37458ee67fbc105022a26a0098c7eb70e5961d305e9786bb328437b9ba26ef1154302e52661651549c3dd56627354c1d5e7fed1f4f3810b61b620f2e8b21a4794b833a d3c282e0a206b48250a051636be8626dd033606e1fcbae179a8d9f5ba5444c59f5153855873c4933b03466d36ff8b273d5d5902633c6357c045405d6f9c2849513ee118cb292a8af7567b4bf956ce44054e62f75295ef83f46bd3a1c88552cdadb720ef6b51474a501202bed66749e1f0db82e5610df391bd28758ca9911d2 e20ddf4bd1c293a75860e50c596ed05696856bcbc8c198d5af463ea96607aeea101209729030631a441d6a340c7221a80d7c0e2982db4a16f68440375c3b89738ef5b0e7e687a0d3e059fff24a61d7204f71dae933b39292b021f91f77bceab6638e34292d53d7e1418f7043d5db65c0142e7ed8891c13c10c40adac81baf0 af4378a54e55d17c5305a9c7d7dc5bda8c28a9009815620f9bd6a633111a092c88581a27fa340c41990c4dadf312bb8a9e0c5c0c9df100ae709749a24b0f454d336452693c7bcebc04f5430c1abed166db771f767e63b96a2ebe6f23a0b62482835dd69709df3308f5038670175c83352e32812b068efe017c7395fdb2dc3f c8841c4d72f861023d7d497491cae9f6f102c9ccc360b1cfacb86768eff68e4692793c7035d3d0a8283e5b68f46240bae308c049e3b1b029d08ed3022054ff8eac199eedb532191466feee01f9794dc82ae2acabf654c1cd5294ea65835b0e6e411ff027288619774c4d1f9ce3fe473ccd0c90f2b95394d95ca4ec035bc640 a824fc4fbb5abfaf60bb5f00b791c83807e99f681d69978024de8a06f70a2b4e5a14eea4bf8435caa32808a4a532d409ced0983a214bec5ec2a1b49ec5c41de690aa579655b65706687b35a07b900ce8cd623f42ebefa5cad3902745ed58bd6b8a3a71257368bb271530a5f2c4f5a0b8da21a4979881eae1349c8601e381ec 47b317a439af49b518244030f37a54a7fa56c62c1b0d9c8de4c39f9cc647c051ce648313d31f15e9fe4241fcc7d8dc20a36012c37a84f46623077b9d30c3c656f2eca1c8b7a477ff2e40470209a3c071de7b9e84821730d9f9cee3ce08738dffad0e3f3f3a46eb3977e9b2d336695dcf04ef5114a880777cf0c3130b847f9d 1aa9f608a676020455968657e766928a105828524290f34fe2208c31cd6e4caa0e3c075036cc57681b4c5b8625f26591b32d322983963c099375fe4b6f3081443830fd270487f4978fdbd9917313949115db90a7c535b39d925afc2ef0786c75ec148f283bd707667bffc2c5696e7d798c0f1e12574888d17c68defc6c160b 882e1951de1078adc7e15ca59f616fc1f4fab9032760ed90cd84c7bb931494d07e5593978ee2e0eb59b50ec0b04fe694e896a57bf2abd14069b0f7f5d32c3711a3e23af66e3d02531a0b8b24efb310ec815d47c2a0ec269c4dda06a3b3bc0225a242708a7e7e8c4cd18bd046e1c5bea25255953d021bc02e1aa330a6239855 f8bfbab1ee78abe350e3294a075f1b24990b9056632ff2c7694646ce2fc425528f1743baf3f85d8cd0283dfd33bb2ec2ffa0cee4f7d549ce3d7bcd582b28e5c71288563323dd1aa834aaa617e5413fabe3997e294c6dae0e4a5f9f3b0637442dfa1b907d6b0fbd0a950a342495f378253624cc024b2fc96c8527575cbb06aa 64726133522021c1426c11bff8084020d0c533a939c97532d9d3a913fa9055bc554bf084a4fb708614771dec91cf724b8cd1e1208d1af6dfaf0ec7b061d0e1abc09de920462603834015f38c858f97d420edd88cb71677fd6a403c036b56bad3a8b5ad10e9144cb7ac11a50607d75e211376b04486a6ea3db25a3a032e8911 c287f91d14596b73d43aeed0e5849be2e281154e5ec7c8794d587b0f7b994da8df33f2afdf9b3e581f44b8e4051e5bf5af7881c8b124110bead6fc8b28256b9775b8e35174f2247de594ae4015dc35480d2419ea4fd43302a4305f1f351af63712c577421ff4aaf4b91ee104d03efadafb70c1bd73fbd31a8eb5e2edc0ea33 f0bc3c54ad8d6e335a0e7ba311d0e2c72707d73d04549f5ea29b6b26058f5ae1585ab04a87a01b6ecc9036520ac6d1a85cca1168458d0838cc6c485bcf6bc3f7f631879291d3f692a5dc46112fefad575ac80c1848e98aea842b97d893914a731d19ad4e9e0c871c852ffb061b5890ab40431bbc29c814dca5dbde2e572fb3 d20862c6127effae496341cc18571a9315e7b205d172943c2f3e7221c768d9c34ce12c431f8957adf28a62c2b051effddccd029ed82ce9c241aeb23638622c0e5529649015eba08410f42d8f2a77c3d3ee91714b5d9ddf0d9d6e26bb5873e91b42fa0888a2c446c0bd15a80585290a8b1843081b9995f2342ff5e620f6d509 9232f08b75f2349b42a50699379975bdb6166eeafea964b4a023a45761b02ebd3f696ac75eede1d0781bc26ee888649249aa6bd47e38ee52ff8b568ee8291e60dc73ca009dd280bbf4c3068dafd2a5aa84e0f7dc2f882b5a8927f6c3d25778b83fcbda79ddc8facf28b5b5131e7e0a7251e1f1a792167430a99e1d731691cb 31dfea8d3f4b7e72920fc239f97e12b40bfad7a1f25b405e1873339518ffbf587b7489bc54c01ca52b031d8b7f9c0dc9cdc8152c3216bf7c518e0454fb676723509636e1c2332866d87347330513f7d25384b0d1e0749e663d4d32f435fa10d838d26979baca31ec4199c5ca3a43e343ef00d20afbe66e8ca7f0cefb58ab19 42d37053a64df2ca946a0a5dc79bb3c762c9c7ba744c7665b5a4bd877d7256cc7507ed492b8dc2bad29446c3a4261eafaa4dea8b03d1cbbdd556c3515907c90f18cad511a6a01d280b8171aaf8f21ffaa6b60954cc0439ced08f3e22f7575edc8ffd9957010c0953e2b0056289d41af031281d84c3693e3eca86e3086aff45 27a8f6d8639b62974fbd6a8c79edba5cde8e3a6bffa1aa41577c6d9da3c7e6a7d0067e307d859a5a658a7bdff9bc0c4a42490f1d43f87a0b91e690626bab5aef94e49577762b2b315520534dd4ac942f6f484507488381c7c8209b817e594f9080e37527579e6357dfd0bc16d4c7b2f688d4115c2c084ef305d8f5f42f4a72 c28489ef50069564f9f25968631e9dc643a786febaf83bbfa2a0cc997d4801468ed3e677699c93b637d31498283d7c79fbdc85490aff5c8e955ed8dbe53abfcec51f059c9b99d59c7d7c2dd22d88a00e6e5b59990ec3ef1ba0e0f8e6a454c2f272dd79f123c0808339c2f9597dffdd18cc118eb43f38965836a161d9e59c34 f2a11ae2321500b121e0a945e02079a2957b02d9d75f8debddc47dc8d7ad29de804e370969529276ba3a8d034e306e3b9a8969ba8a68801a913aebf55528a5170087a657517216ea9d6f6b968d9b55e6eeab9f201e2f0713d3c85de08b96c3de50faca2a44b24f642e1ccdf1cf6fef79d28afdd4831c4246bbb731fbbf90b1 481f074be75110850f19732972f60b6d5f6ab51c62ab9f74e030683dead495c8528189ecfcf38c0681132847f464837c4043ca44013465b46c21e0e7b6a6f70fca09b6cf44b6fe87eacf92d60bc1b92d54322b5909f661a9465dabe508694e25a74c464691a58ec118b65ed8cf2110f5ec017a29469e2184fa280da19e2d86 04d4535fa385b40151ff1a38d8ac977c761d34bbc89c613e5de31376976fb964ec7df6cd8fb18e2c53b05e5cfc74083d0c4bf3c2715f371a8fcc65ff7ba4daf9bf648ee5df3329bd91637c4174d25033681ccbd9c4882e5c49075c5ad6c72089e75e5e3a6221356003802829e21b04ca060c04812a177ad0e5ec0fbc07452b 837dc5b791d905b00ad96e7c7b48bd03ee91983aa59ce3433a912a0b8735bbaf50f7960f54f54802a345350a0df6717dafb3f8cb60e183208088b334c083958c05c907f29a6109796d1855fb0ac4f16a42eacd23ad06e26f1f19d4fff21f29809a8cfcf6b10b23c314992aa41b396debeee22350293c3661f2d5eabaebe5ae cc0d3feb50e34d6a981c7773504d189869a68a87b71945c49dd483633abf5d96a5bbccb91505ddc815f72651037d66e538bba025067980736a12b3a4d59de18b88ffa0a5e0381f0d987f001089be7d738003b66fe8532b2cd4139f0471ca2282ff41c8972dfeb0eabccb92d957075acc6724dce6f2ac6ea076ef12390d5f3e cbb910a9a7f7ba00590e68bad46f2b2420cbfe0c0a3db3bc668ec79e54fcd950465457f9f4ecd771eca2296507e309c4ef19558ca7782f12f1c991bb8a9b15f981ee2188cee49c34a68e505c7c1a0202d2b5c3733f0e45f2765eaa8bfe9f953bf2a20ba8b2ec4d9227e13d248c81c8cf1399da3a62f95cbf8bea36ccf55a3e cecc0c52170f0ae102cd20a35e38e22084267b96de41e51031b88a8c40f029b77221dd09909cccc1266ee5b2f05306ec1a0b71434a133c3d40de6ab73e6fbbc1e505f094a937c23eef51384d94f29ccc14e1f12637e40d5a2fdf12f201d9e55b2e3ae28cbf193cd0dd15cf6475d56c59c8d23e149df5dbd432467db24ba02e ad3e829a70f499bbf31277765150157f069239889bb8983b45d2306abf6f5fdf45335e363165100585be45a7789aead01aba3c35628f72a91b346554ffe3072f05fea72d43ad253cc4448ba7ec02d4da3661afd54bd49e5b8c2172af61c10e08fd2064a45e3f43e8a31d4b6473b725819e9dcb49dbf229e6b1f6117c82c2f5 6c8988796ea7a8f0454956386577a63832489fc1372c9ae848770211b4e0a6f90d80bbcfbfc0fe8c5e82c415e07c32a08de452c392e12c768dbb4cd3ed3aa4bf8000a248a366d5e067fbcb38a7331e027f6cc37b781ac6914d636d5b7d2451630b0fe5a3c6fac0fbf15f7dbb2f77a7eac6d04a19769c7b8276282f7c931826 a17be59bfaaf5dac88279a04f3e104754359b8edd3efeeaae9dc088512c5e6957f063f6acb85d55430f0e869e68cc809b8ffa6b19930afae2410fe3dd02af8a914d9463dff9ba07425e79c695160e4c365641d97da5ec0519c7c9fcb02a3a4a60336a65dd0a3604fee687be4199a9844aeab72cd6e492b1cf30c0ce813d753 10332c52b6ce10424468ddd06572c82c6424ee65daa62ec2d49758a83e01fe4307a7e84f8b3db123f44569af4f1d6df7b82323a56e568f96e144be65f5974f77dbc5dccf1468b2542908a6d964fe2285e3198b0b6e7aa8fbd7fd1adb3f7e7b9f5ddb69c2cd8a487579162f546f4ac7e9d531edea94cef13b801bd17cf20596 0ff1b3d905efded894d03b18b1e799edecde3aac30681e4c9146eb5d59cd72de470e2d0b7b0af2c2ac0c446d6bf541ce1cb63d2961db8582a931ef4c06d4cd7076391d18827a504ad28bc1fe3f0e4457b0dee2021d3696f1b71e62ea8ecc4f4b4ab04cc6a6c7073ac0d7ba5ce482480343bf3ff6ae63b4123124bf504851a8 58aa67f098388ca962040d0f4d896ff0ebc22a44966fa10e7ed55e9cca83cbc31f9d64f122bac80f52ac93a16a60adf3a9118553a962950fe294bd69093cc28c485cad9513a52a275cddbacafbfbe38cf1d0366e3ad523de33bd22fe47ffd0bd0348fc10e6e9a6d1d51d02761e76c29a97099af558d7dbd919d91cbcf393c9 e4b258201cb08e3bbf8fe891823cb81cb999af7f99dd0ad704aa55920c90af094ab40f8d36b5d3e3e84c7a3ed074d7b32ca8abaf8d8d7c66ba3470fd434eeb0910a9ae55e8302ed7c944be3ad43fcb7e8b0939bc7a278af34f5640860eedb6a7a8714909caae98f627c11685d4a60cf56e304cd15ee1290e258ff5934e4bd6 5aebde771cabd4d268877c3a39a79373c982a944ff1db9515df434269ae69711a94ee61bbc6f9a8dfeaec2c6859c4be67fba85683216ab4a53aa62d8b638001b041b07b786faa84a223ea6bdd3a3d7cd578729bf41647eff45e40c332e49bb9fcbf1abbbf87a7faab6ea942e2e9bf904c5969c7075d4e5124e0b1e5155f783 8f754b580a05657392db64f65c63d743fa39b3a046b5175eecb6e90c5e111664b195f31eac75dda9034f40380a4ead2a7c711101606cc88148b1d9ce8953c3c440ad2d1f63b41f13c0173660e9573b597f809c19915c2575e3708438fb68abe46d5ecddbbd2e87dde05f2f7afce39298effd658c6e70609979471dbdaa41eb c44a836a75c2b7e71db3114f7c6c1c8ca6bf0d333e3487b3d8c9838ffcebeeef7aae32e41b12f9a3e410d469a7862e52a2c796078d0845d90881cf062190b3bdeca3c36c7c02f02d3e7b33bf30143c2d7bc0355be7e848b84fb44db79aafc1e17026f620e1a05fca7bbdc1c516371a29a1ff152b1e0e382f837f4a4e2215ee b992a4c59976aa01468166f8a31040d450f1685b72f9c406cb82cc87feeaca48453a118e20963cc4410f8eda396a323a20399cb34d2601285240de61eccf04129596a829b236f72515e515a0e9d05a8e09b44efd6798b0441024a31ee582f1818ba408476db61a35ebcad5841d92a37821a883cb9edf1b7f3875f44f06d9e6 e25048933af89684b9c7ce577e4a80ecc617dc713550f8acfedd0530ee95abae6658a29365a3506a092bf587501c519fa2e5416fb161c7d4f9e06c5fde5ab5e90460f7addffcf49541002a8a3c7b75e44b6a9d2da9d574f9441604cd3e5d4c8f93b44c167203997d992d7e7f8bdce60e28381f68f43e72be4986fe9acc6130 a67f04d188611b5ba328e85c96b8695ec664ec45d12a8ea8b349b1cab4284eadb2adfb42dead4d233ec3af7e29501c77c814cc97d1085ea6f4c388405873fae70b9bb20455577555c0eeb329c9791a6fcd349e7ef96aeb0e813cbd945dda5547f684d95e4be523a10bbb7f294d4bf3c4087e7f671b62f89b1b931796531f9e bd02423277cf47a1c5dcb65999f5bfda115e04a091a0041432a7aa245858344bd73a01b81529e6d981a5da1e895c7accd96abb6c0a11a0326a0e19b6afc5d1e5c56351ea83a47cbe42e8a580006e1049e388a2c04e1afdf964d36ed0790707d0df13ebcf8cb4a7137f6a5b42570aba0b1015233a6d79ff1bb18266682d9edb fd1c5f0978cb1117ab8e01dfc61175dcc7f572e1577a6e0bb2915943a530890978cda080960027fe0ef6b329e5ab32876eca5f71f912d3a7bc8ebe17b47bccd2df44cfba736831c3015c799d3df76a79a499a929fd28b5750d60c38771607a6e5fd0077a9107289c50eb698679e68e3decffd25d76914e578710f80827423f 76b63d933a50194eccc3c6654822963f8d4afdb824ad6e171a0bd45188d901d09e6c45e6b7a4bedd478b6eb7be7bbd8752a46d29c6802ceece9d08a0393159a7784bf047b2002cf30319be0ee1bfac9cd6897c8f5068bab7d0ac618011e948916a63ca47b21b85e2d8da8c075c01be4543ec35385fc0b9686d4d8b6efd08cb 8b5f5258dff550f97a021ac7216b8449d340db55522eef35abb75dcc489514327a182a1e987a5caea48390ec816a4775906cc3d93a4a762792282b44445d8337e8866a72d749ff2848675be49cfad0d080f55c89355a821a9b68cbbe05c39e871648e8f6d2700308857347d0e0e897a92770295df6e0cb7d0695b356517c99 604597dc6d6309c0d8140fed555de57d1fdd7587c638577ab1ffe187efc32fb3875c001e76ebe96abbff89a8848efd004f489f3515de319c41f209fcb3f17ea0d5ed7582f9c4b9ad1f72e3ebbd5ca2346d213e014c54d03f7b1355be529789ca897822e8259ca101c52f7a0a8063649df85389a88fa74b2c06819a6a2e051a 9f5bad5dddf654cff0db8fae46a34674213fc29a0fe8b684892f4560928ea6e61c1877cb1e74ad3bffffc6e9386e0e1255a83a4382bb418528ee9a27d76233e9a131c40619ea480074b260e4d49c7720b5870639c93a94af73516cd61a66d9907de8232348d8d6afb7f965ee2810d755de854c85cbbface3c03d8c706c7f93 237ef29eff8a168eafb91afe474b54218c72289d9053b3d0a76ae8183c7e7882aeb0ea6f86728e7f15811a92b883923f3cc032f942ca392413275c8a38d2051a6f273cf6833098efbe6ba2cdfaa759c909ca62c57bf44d226b7c4d17e0ffcae7c2be3e65bbd54069b19319f86e9bfdbddfbad2eb023a281171588c5174dd42 cf3e621fafb81f355f296389c9de19ecce620d6a0d1dfc8a3d5342dfd01faf90a098cdeb687cc8abbbb37af0e3f24de7eb9b53714cc02f685ce3fab001714de1edc3fd7c185b0df0b8d41356f751116965d9df979d094d214595c8ff53b472a8b023b67c3a1151c3d52f6b7b2990cb04c85fdcf9407ac7434de4ac2b00731d 8b3c97ce81bfa2cb5de6ff983162face7fbbb4ae5afe0e8ac460de97c9bf1ee4e1eac2bf93d8c3bda89b806a7f8008709730ee4a895b12abdb76d76e8f2caca3cdbaa6b4ea9e73641eb9377c8500ce185b885b76c2aaad1205067b59998bc7cca8c6f6b67488b85e7a881cac110f0de4e4ecefc8ea8bd619e76a57ba862a41 a942cfaf5934e41dcbe37a2524c533d83117533640c73fb941045c3f50c45353a10fce75fb1d0bb800d3f6dcbece51d5e40c7fe5076c4fb38722c947d054d84929c5f2c9aae8b34557b6538c71629bdb1b9c9535399b0ee4dd4db52e7945ce74b3370f5556e82bf673b3d5f64f263cb986925747948eaa0ba1dfdcbde06290 572444aa5226923053c6dc2208eb440c9cead338cf5513a08945689c302978fcf4fc6ccf15736001ce168755184c4d673d4a3b547e3a740ff958e3b8301cbdbbf7049751954fde9448451ca1e1462d3cf1b3f7340f4422c2405657c1e4fd7c7636d4b893eea7119c046c1baf3d1c3b445039e83afa25b34f88fd5d58b2c223 b89e02a713270c4166e9defd15394f605d4eee3cd3e682c24cbfa557f4e43e2cd5414a17e8913ae97b4178744e316f1d589546e49b280c34b5e55122b4cf984a11baa7a20ea7a97c8cae3bbe26f1e1ec1b9cf98ea602ee2658084a1abd67729c6d7cd427fe18b1c58e69eb6599ad5baaf2e60d4f5981f6fc5030e57d13ac26 44544a923ba836d44551fe962fe30baf7208e9275f3c5f6291764adecc1d03b891c9640213b9738c89627baad05559eace7da50b1ddc4cc0c5d67f2b7fa2476161b3bc494a4012dd7d24320ecb4694b40877362a5dcdf49244a0351a5316b2404ea7a0b01bdeef039335023362d5badef4df9de48926732999d47d9cf0529f 7f9b99a7c221182fcbbcf005aa6327003df684765252ca52a8cee4063fc08b1802fcfbc78ba7d5f113d31950258822c9ace597172a5127e9cac20bb130c89e391fc1d9c1c0f4fa3e282a28b3d2730ff031ecfa503f9a4dd66e6463a091aa48027a07385f1e4ecb2d0c80fdd0cda458080379c6ec8684b864d55c0afa7373f1 41490a1a658a09df81e34b1e3bd3d752772d170807a0c000be413a8259cf20584e994a016f15b3041671ef27267643bae59c34a71778e8aa9a60f1bfd86eec0e8546d92fe715cb01fd22182f476d2e93f099c7482a6319a8f2353acb138717191da0b0a7ef8114bfb266cdf5689691f4d7f93e4f1e9335393ad1ae8eb9da09 730e9d12a5fcdac260f6945f47785cc367d81560c5fdcfd1cc41dcdd84480a62cb9a4f6f445540689f972bb06c4069e325d715ee2ce3fbf374802f1496ea120a3468dad441bfe17e247629f9ceab782c8ed9c9a58a5f19cbf36f86e4fe4d287c61aec9c4f6116fd5a6d7b2b099faa9126f6f2ebac45394fb232055088f5b4f 3bc970f70be7a5a7a10a484b4ed217cdebc6cae1b94015bdfc19dc7814d30b3f5075899f93632e5640a59650e354b4ad63ebb0c9a23c118eaad1bb9464829eb1b1d4c411f8daa7b50d88d03cef5ad14082e2d3b0a466a25e6f42ecb99af98da44cee5727ee8b1ac81f793450784a3ee72321cbc212e30ce4533065acb49ae2 cb251b2de6a0ed30f0265f7551fabdc927fe5615cd5499a0cd6f0b8fd251bd807906de4174619b2315df3c51161e7d3a5a9018f87b5d65293753055f65e52c65e99b01b89b04ad613469d1a531fa02078106b4062f8d91ce21d63dfd002c8c4413b0c20540def307e5c3496c1fd890b50d10e8ccb5c0ce7f3c96aead7e3823 6b2950a5b7a7759dcbae61cb141c975524a524019f48b318de9ef53c318c6c4e27881ee7716e20775928c1566e1b56ffafe19385ae98735aad93ee9a4321909ae4956981579cf13d717b21e04fc6a981e30d7a45f18cedf227df86aef69a3a7ad492b05938c9c60b9ef419569e899da62d9035106ea0fea09317830da5af3d cd2a5e797f4ee92e1d6805a42f7890c995fc2bf9b9de33fa08d38d42bc4ec60192c05cb7ee251be2e06ca3db9ef9530f002a6b265fc743cef548eef8059d6e41261e5842133ddc039ef59629a55cb974b9cff274ec1a55704bcdbaa99aace05cfc58567607f5ba9255184079ac409763a9deff5913040ab4103ba1b4251400 6d41cbbf01b78f9d724893c7e98307a41847cb9d3cadc8d111e9c7fd57975863ab3622d525ca297408e38bc48cf951c80aa9d63f9e06b4fa4fc58cff857d7e5f4e9e628e30b25f3baed6f7fdfd0b983c6c7623699934a7804ee716254020afe93d48dec5a227b2e794041ac21f503d4d1a8581e8322918748bc728db1e97fd 5e457667b7a380391bd3dd0b718fc8eb5d883e7f3836017fe74a493a0d3bbbbd6fda8e9657f77796c61f61d9b856f0ef2ce89bfdc61919d69d37f4461e05d85ffe670e8791855e1771afb49a880135c7216fd8aef5a561f0b98942b59f4dc42cd7f650effae8afb30a17ade96d282221faf67dac59ff8b402b990cd71e57f3 637b6299b0f0a99946a5e4b36e062dc6e0f306a24d81af801814e68e4812871af085b12363b4e844eb3654a0ad32b107cf99f92d8f8de656c60adae684e53dcf7fef52b532f4167a990d2a3364a95e7f7d0e38100d06e02392ff8d9f180673a8be2d0b6cfd9bc1c47524579d63f6f06fa01b68648f98e0a9a200c51aeaa60c a496a1c3137ac9a44090434c690e7a973ad8de9d439ce7e00699eff7730206c5556bbb30cd2087bf423a37f9ffddb53f81592d8cdedef06390a55255e12f8194e2afa6f51ab2bc595799cacce3149d5b8608f01cedec0b0cd6c74e703397507496ed4cdeecc76d0bc74b698d1be363f6d9e199ccd8fe9cf5bb68e648d40419 9620aa88bbe3b6667f5fa45e11c2f5ce2bf9b86b57c7f246acc4d78c52f2b4496c5fdadb0e4b73f2f4e9141aa416e3f7cdcfa17cd809c0935a6eb5379641978855efa1ac452a45ee7b9cd27992c66bffb970d33ea2a4e65a81daff6cdaa0237b334326144171bde6c8e12f348dc1f59fb30bb82d081bbd2d36efb44000f909 e67cd2d1ce2bf499da6b8391914d88179d3cb08f44ce3215441c50feeb26b1533931b1c86000db4d34bfeeaaec6e7c36e24fbc61c789e1b07210967951cc51de4005cbaf2b30135a5316be4f1af952018765c1b015038e94825478abe64e479b55e13f40b507069cda9d06eb04cbdac1dd27707adf8310d395b0549ad4eb42 a29855a4ffb796b64a940db6ce4b8f4d560e00d5ef43bd6d4a43414ad30a68252347d6c445faaae70c60e225ad937e401c181500b14f4a641929f2930b3cb13c8c755f64e4aa9e937c7c547302d857ea5f1e3749220c6da931598dc8971e392b0a7406b5d174b1ac4cb74bbd1e2415eb1cc72b6adee85e970b17c3f3c707fb 428445f5e6f7b09dbe3e40bb47e3d9c5f5a2de646b7d01d73e0bcf490ce0f59f5222209453472e7d1ba46302be823e217910d46d8bbd87e4f566fea0f2fe733908301e014a54d1ca7b59261cb23b29a3580f3a3b3c2cca988a75b2cedb1a884f770b7808aaab610b6dbd1c0193c16df20d041befea2ab4d7b3011fa82edc6a d4ac63ada457d40de197de5459fb4099748e9ab3a35c8f81a5aaa749be783c1812a317f64c565ca0186f759b234f7f3cf0aa2eaa480aeadea979a0a0adb3eac0f084b27bf65255e7e839b7e6b57bec728c9d21abc144feb2e3e4bd6dd116629d07fc18d57609582bf7834e3d700625ff808a63a99cd52884f434ae138b81ca 638517c43134c4fcd6b990f00de1feb4ad24827b27abbc6616564eb5b7b1e695592e67ffe53adee116e4b6598331491d57e985e843b3b6b113570b6bfec6af7dd0a958318ad72dc63a0d9d6ea1e6702264d8273f4d3a1071c43fc58b5905ff4db1a2023fad6f4a222db6f10910863af109b707022f96e1b78449a2f46cb26e 423a54cb805686eaa483cc48e1227d9ccdaea355df599b4372956b82a67cf0b9576a0adaf921db52ae57276fec54f9fd2edb25528f4472bf6c700e4038729f80ff7630c7650a898f6b7a448e7ef38c644f942104ff9e13040de3ad6216311eaaabb5ed84f42b8d4dc3fae8a470a1b2656239d510fcff96edd202e4498d94de 10b5d7f5fc8eefbede2e736dcba84ab291005506c706e39d0b75d66651fc2451041ea3c64c4e94039f6a1683ee0d67341c327a1ff88c31340200e3e03010889438ed31cbbc69509570e55c72b84ad41cc49160ac523e821a5d3045598fcf2e3fcea7d0898c27f5f358973b1cdd53ee77f00efeb7b84ef312df3c140dd804e4 645a4ef2ddea29d13e49fcf0ee7a9617f71b034a809475d3d0792af97ef99e58cefad2a5655b9a3ba60c7d7d80508885e80f5f7121ca82f6d7f2f0d98ff1726b3ed671a98762d630f621ca48de7ec601512285cc61cf0b5d1ac1b642d749cbac7d1aaf2928f4fa57c2d095e3b1fb1e4d01866e5f1329116d1bdb3977ae4693 5980b5817afd76531112442d3828469081f38e23bb96be6b173a2a41b445257b1683fd56ac4591822a11c4ba1fffd2d99916801d93958310ef0de2544995b10da3ab82ee2754646ab23c4d230e8ee875d1680556b91fbb4b100bf6d05e06836ca84a7982d4a962dad722fb6ef05019d1f1e5fbb197964338522967669784aa 118164e04cb7e823ec08843be040f007655eabf6510e3c75089bf4bcfb1dfe5a2fad3ef14f435a10df3fe3b697663f7ff2fc6110ef20f6f06889665eb67c376fb29d5b0a9b24ca9fbb9257a03b959b1e7032abd562bb5dad79564531cfe562028b179aa95a815dc15a8497a0ee80ef7808d11597e2599e88fb870ebce549d0 9add22921b8c0990c4c04f72311bf51ceba61c0674d71ccfcd8b782f92eb61ec0af3a82be103bab31acb8393248be431e93daca6ca6c8f5abd3181e7f22ad7bb603fe521d6a1cdf5f847326e50c3c3d40b0c96dd15005b4078ba5d984ce500b3d731581be895e047c379b8f4ea10f7eb61c46c385ea0ddc851f2a912b72b19 d318b76dcec04893709febca6f4a0e709f591052955fbdd02c49e00ed2a01b96c978227f5dd07cf09438ea40f9716e5200e3f1acf64403b16293c4c23ad8bf498071e3fa6d31f04a04381040f69850d660a751ecef31f20cae79616f4674004f33f9386a6d0841bbee8a0af8b8ab376af6ab2ee705a5973b8e7ada5d47bb6a 3cf6b1104e82c60849863e2e847e2e56adc4bf1c872707332cd9d2d562c97bb792752f53461edcc6a4fadb464b06659305d9ff0620888d60609b74c43dde4d21dd19686a6b3cc92b85a063ce6140ceeb9ddfbf1ed5b88b1dc7e08420a98782e444ac7bc85a08fbc8ecc96d5192b6d14dcd0962ca88fb6e7c1d400a1284370b f9082b666de1349ccf1745e4ea793d6bbc39503ee1680b9775c51fe83afcae3c3a4cb7f862b29a4d8cb0b2ffeb6f0c672237eb6eab31e1394d5d8b191bd62217cc2b761e6f6100e5745542e9b2e0796a971541433418f39394390c644d9169c508c454b681eceb68040504920948614fafde8485980b4aad9b37dd84140418 1d1c2a8fb611e611148d18aded8bf62dbea02212cca62961ca2f71d6118129fa7ea6ffc0882aa0dd10273e2e6985e5096f8219e8c204ff1c6b440dd9b64eeffe6982a640454beda3e6087c249308744651aa65dfd07b24f412277fdbc8db267ccbb238fae0290c313d958ea98be1c2c23b226445ac6bbbc31c581d882119ec 5591852239fe03769ca1bc989c421a116f154b6c2cbb8a8baea95a30de70fa1a17e2c1a18221e9860417b9302f17fbd945e4370b125fc9f02af79573e5aff62a564a7ec733e44f6def5fe13e2533c1c8d0e9f12097b0421d3ffae7159950453089259ead88c50f8ff7602521de5a1a38186779bf127ccf7bc7c5a684489ad1 5830cd14914d03fa99e3ecd4cc6bf7e608de4fd35d2e50d2ef40d9d1404d78524bc2a62ba35c746e13a50afef0e52f7828431d56d6dc125bd87d1ba3a4503381236ed360a9f862a5fef5480c85506db099073e1e2bc7ad9695638051efe8e5c78a93348fa4b8e8f5220fb5c636161a8383f51b70745caf1d6c965095eb7b13 c7699d4082089e4b44ef9dc3a22c191f802553c35dae51c4c63032ae0230850fe5fd33ad68e56197001bcf39d4f235ee27db989bdfdf6536b590f9b11395a8524c11b2b4c7660bea430fd5ae566cbbcf0a3314286aefcbb54b835488e488512c2343aaae26e160cd84b4748810727ffa3d7cab9e1c7415b69d2968870b7ac1 19e2983db24b20284af50b5484ae7e6dba2f1a30705b5d629c2e3bb532f8b93fc764a3e84d54bfd4f8aa1ee1882fc655643ff7aa73f347ca9377a0a6f6d88b3a5e9c86bcffe108342dceb6ace0c76297fbf7cd474ffe31c5166829301d65b4761180c8af07db8bc83fa8db6e3ed3149361c218ccbc38fd8422f37733e8bf62 09c783d62c8c2b6a5435f1138fdca30df04eb7d72e9626e431a89c88094cd093c75b6abe18d4e71c5e718464ac49eb92db3d8d3de3d496cb854438138bd96f26a16ae05e7b6e54398f62dbab283e981872f4edd8ba33ceb60d9e57865c1ec8b593d6b5336b97992227314241e7fcdd81e34fc2b433509d1b18e81a71abcaf8 0bc5e4b017265cd82c3acbca4340460160e66f8a1c319347440a6a060697fbad16486d07620f5e009e92c1172c6314dcbc17454b05b32ab392c324b99a946b6f542824fed49d95ddd62772454b881ed3de66d8db723e55099f2ae32bd22756d06b3c6c9d3e2736259e187ba56a884f2084e1c3cf1212450eabb935799d3fcc 5e7ce4f84b880c76a8c401963b80d66bd0e436c0c3f5a36fbefdfe50bc200534f9abb7c29adec48ee54ff1d9ed7bfa0cfc40d5be3ad70741380ed4d77c4d3beee40c27d0912cb91d0b4f4b46ced92c5e53a4e2cedb48ed7f9940084388efd357e7700499c811d4b99a384229d524bda0db5f31a2da390b16175ec3c7239835 b319c51f81dc4308eb022b99513d18a1d66bf0de810dbd8c31e9886f1999db821558198a477ed4f76c980d0d95cbc96b0629a3ed38b9583593d06b08a1e7fcefcd79379bef54bde4e9e8df6adfa2bfa1d5ed54e7543cd5e58ad0540359bd67ff21a517cecd8655177ff0ea09c4cbbb5ed408b382feee6187f3c33fa06d994f 1595c627d8347b0004ae028c7cc9e127cb122e83cb3ca6ae22288c7256a8e77a72ced6b03c4ffb8f292d5925f405f64ede2472dd96142e208eb1f773c05d2d254bb3681321d9962493a1fdda6536e402c6295b274c05af99ab0ba663d0360f96280ea6ef0fba83e8f69d253e8391c0d34163d278bd41627f1c847b24794239 bd4a9223aceaa12b0f3fb46049df74bce9d540342242e98bfd4565a39207b1374f1a277e6b824f1b307c6635618d623bef5dd091d1460c97eb8e4664850268583c235acffff28a3b779bbe36e07725ab551bba51e32b7a2758385c36fc86b6c4a147858f5cd69d364ee8f4cb158bb6dae04c59948c2c37bf5b6cffb842fa65 0f3b9d28b77953c91bb29297e44f7fcb71febe4e0fe7f7df23cb92ab9bf861a6b04423a018d38c2da603ebc27a378fc6c8d6184acd6ee7bd0ba1a1f7a8c889cd3f0892349ec04827b43971cb4232cd64d23fd2c0e53a0c1e74f441e587912f7a65cf3ddfffe7ce7853674f00ca3bae2431d77515ea657af3ff600e8f7fa845 ff3eed6c0bff25384c4385689c662e70b65693f0959a837a5c80866f5ff7adbff14dcee31b9475c16938700138552030cd0b02ba33fc850ae3d7e49c3f16c2d8b11e1ab9387fe8c52e636e69bc861c17b252e3399e40e3f0c5ab055fd3556ff066868f372d2c31532b599604358a22a35a870fbb6501a6e7c359d0181419c5 6123c60686f1b78164a54b8c680265f5b7bcff2282d2e4b7d54fa9c6bef82fba60e88e28e09ea231873d20375411b866f39017584c3d3ec84c9413da030b7a66367a71b8ea1d79de5d091ab9db127c8b5929d021683ab4d95a05ac88f8b0a508379d70dad6beaed8ad016d6956dff90a1413e4bcd42a55d76658d6a3336827 e04157405a25d247cab32e19ae93e54483043392615f6a0cf0d8054c2bf8049d6559e04b324a926751951542722a68ee11de942ea17e1549946b0d0d13697083595f6499a295ca76b8fd3c26873ba1082be163a21d754e0de5825caa71246bf3fcf7b0f056bf33a73964c794c3c3f0178fe18536cc51ff0aa7d6bafac4ed6c 8e520d4f7ed96d558008f82f88e972b1f7d374fc9db6d41d5b4c7927e639e30811c979d68527294f858808e9c7b520ccefe03a29a147155450828a39aa512755fd59cf62f312ddab44e91f210905d41714b5b36a98a23f73e6d0ec32e1ebd358bda6f46efeb53f3fef7fd096284c5fbd1315915b0395cc1d28bf69cc8df7a2 079393cf1761d9b85b0ed46efd63ea7da7b5cb8afee9180682f3f5740e117dfedd94c61d99c40314eb3f3efcbc9eef584c46b2d66a340c4045c42de0885637114c7a28d17d00a4b15cd47a9636a4fd777fd0cd3203d3dcdcb3ac6d5ca56edd39049672d0591390c2470e28d9b8a946ebadd65f47f9b077e99c8816c9f20976 abe19e50889400f0c0e4d089e8b05c97596ec4747a6c302d12f30c7d047277abc4f5b4e9efcc44c7d17ba83e1c4f92aea889494adc0272681e1a3ddec8634a51a09f0ed7349d1ec1c10dc4c7600d3263fe1205c8724b9bfaed0fff85e6f4beed3e93f860b70a13094c8acf49dad5bbb86a433fda139f4e20b1d72f922c5e29 de19f13b5180a0b7edd6775baef8e1510cdfca5f3cacd31dfbf50e9e41abd9c90cf60571eda75350afeabe51a72cacde8b77723c5f6bb88f6a0d94d319f03c625263c94ab494e373d9ac1afb667b545eb03f9dc1b868d5f55cfc559ae7c31e2f10800506d0b664b28a624b126b9773a9b8d629330ed3a046ca94ec1b889ed3 d26cd6dfbfbd94ccd2a91a1f37efb61f5f06ddbc1c021c87297f391a2d8720e08a104b16d398c91f4ee2083a08a378b9c5d0bf1f447fa7d5c36aae44439f91fbb3414b06d22e6cf1c96fbecb5fd3efd23efb4bc8e356103123ca144986e4ca0f59a99e2c477075440ae0de9eea5f836fba6831117bd787341b86fa991185c9 a47281a277c8b04df60439897f67b7f42ab08aa7e8ee931e52dc165fb9b20c1de9fbff7100e30ebe292750a3a84681bab07f03fb5ac13afc1659f15e488c796c715d85aa36a5bacf473a9c02957091c3b01cf45ad5af307a551ae5d34caf531af09a7959f42e8151fd791d93d229243f735b47ae6a0d2bd3a32e979e0d77e6 953967318216bfa573bf0290e65835028967a394e271063d84a389b56ad68a638649d2e6399e5f7a8a0afd3b4502ab36fbf3dfa5ec5e12bcb35d193cdab02c3a5be1333adb3f68737822670ba7d3e99188723111660303038c1defbec34c35ba5dc2d39f637b40a823f19acb1f4cd3531ef90898fa6b7c95148437c97fb3fc 1014edec32ae56f264bdb4a47385756a794d017f5f6a9721f91c7f07bc307b09ae3b7599f443eb82135428485a126ce82d8e814c148cfdc6175e19c92f18864857525b5c392b1f5135ed33d6c0bc3d3a08f466a3f3372a99699804d0a9f9f2cee6287c0257229a2a47339a0be3826cc7a9719762a12669c535b98ab76da8d8 4ffc909c0def3be50d70de61af275f11f53a34e8e68d2eda360e395171225aa26f59d22273be17ec5304a48e3786800c21e4fb8c7dd7ad6338442e146241dfab2da393e78ff830c85732906b9a43df31839e3112f3d07f41c6587f07ae11928f0e10a8b8423a71549a09bf31e65867ade7274b92d7df34c0eeba9dce565d28 f2ece0d58ccd777b45133f16b24f17334117d2d76f1e29a4c28c10423d940c01bd6afb4beb37d66311b785808cefb236bddeb7ac290a23fe13a12430e27bde2895963763bc689b1e7f66441f20b64f23a30d288e35f73bf515a99c1bf2cfc402c4249c468a337db21a39ffd13f94ca3b8a77feec434d23cce5d7287e8dc9b6 5eda1fdd705bc12e21efe88a93af0b8429a8bc20dc4afba8bf21ff75e9e6150cc0964a38bf07918fd13781256875d37e7b62a946ba1c83610319edc2725589ff986de5bb6044b325f43311af056e19cb6e42c3d353f401252cb4c6e8947d1b06921bb744b34079dc15fb4795d3706008629f752a0995f2a51957455351a3f3 d658c6c28cc09cff2b10ba498eef1ab18fcaa42b33dbcc3219acadf0f77e7a60dcef1b81103664079b74eb268772b65f5fb06a51ff7821445afe99a713776c698a9e41126b43e3e09edcc3946d4370acea0685605e01153cccb97060a84dcb4654810bfab85a1a58e3e172d6c5db42fa47502cdda77aea0098fb3894c7b4be 4c6fc4edda4d3b48c53f106616a9f966e5d9d5fdd4d3207aa982be50cb55dd2a3cfa94db55a95fa3ce853f4c03a60b4a6ed849b9e99d02dc9bee016ace463bc48f647aa43d17eaf37eab30776c9be089db0f48e6f67bdd86e787d7004c1c1a55b943bbedd841f34701d977d7229cafd3fcb2dbd874d275de66f74dce69a188 0d438436836ff12e3e6f3fa374ccd9193cf87b1ebd36c7bd9e5a2a7a0407f2a66bce1fd3f88bcc7eaf43bf74e832aaf03d2317b256a8c55a913286ca17147ca17ff54b547d36f8f782981db4a37cf7e837489709aa4894549664cec9455e0c80a47959c611256619dc12eb3afa6697accc30a6a9cea866db86e04fb0f4cfd3 1998990d66348736b780bff28825b2c4791d432feff4a424e231fa2d7803460ae16827fab8c0655b0fabb3e6af5534d617cb7c3aa831b5ca42f3d8a116c1546cfbe5a432f09340865a2ebe7e7395136689cca98264a8e7b52f43c9c75410758d3ab9d596f1d82ab9d41d2e98d1dd97b85263474314740ff8273e5e0f662a02 b275ed1a74c160b2dcf5664f892cfbaea308f50be93e46be711644fd5d7efaadd8206ca3a4d19bf1fed84309662f88bf310bb34c9bda5dabca7d0495aad060093f08ffa810db94836a21e6255dbbbc39671abd878fb5add80c1202ec95c1e4f1ac91ec0f03e1e90168d2715af3f992b8afa9c66ab9cd5f9127fc50c815cf79 4761414e6f8f319ecf9615bd108f8842e9676f8ec4b4e5e55922fe632049f32cccc422a3b76d85dfb2704a8e3a9e8e6cfcd237d2e0e5d37d7faee1ca94421a935896385ab24a479132a41a49e5ec1c2b21dd0b810f070d98da3b6195ce98fdd06828a63df15e981dd9347e7baba830ebb415dace42c1c5f9b8adf060585c71 50e83c5d83f03669a5e1186bb8c39aa1982e456279a70fd44f93558ca7c26c64dfe0678765ada8db36bbee77c1574b387f671c3ae9f644a41c3cfd840dc5860b9859a6fe00da5e9d268407d6b91b2c214c325fe025d6c17bba68989720eb6bb48de0416365e3be5bf15dcd452c175809a30f92f49e2eca95086a76a141c411 aaf2e88d0ab209aecae24d3d018df75ae87cd1334df46ed0c2293b1884348e6134e0fe0613331d9c84498736813888b1c4a1fdc02ff0d0c10e9dd5d119a04a9a993ec845772cb5ab449aab262efcb6ce37700db9136233466e5ad9a5e8742918f7fa2202c9066cd5c52817f63e2c133bf0723616b63713f2d2ddbcdc2334c6 1b17376073c36e75b69553b05d6f7a1ac73193c536160ca665d690411ba1236edee6342b8e6799b957f8b958e4a7e5d2d03c64842d6e594de767dd7d4a22585cde954ccadd79e829a8521bb41710b6ceb5065edb0adfc099863236a2e34700c4eac0c2620c1db815c814ce20ca6ab422f5c1e959cde1fdbc4e0a943d52c9d1 e3e6df53b24a5352b4b5da61553ed0e486f98e4641f9314e368a0fc33b2c6791fb1b17da7c47aaeeeb6e6ae41c304eca860a1434b22a90a6e4240db67bb69181f6549fa53a6b01201edda18c3b1a6024f705325fb9b4713b29ebbc712ba83e6837e719bff8ca649537ac8734d1348104660d8fbf5451f1e183e8105955f1a6 f1da5c8a47c6104c245260d617ae578c646a323096d1ac8f45f2a5f0eb68687038ffb492bf46712297a6ea3c422f6054d4cd80356a5b130b9ea53f7dff3b1e86cb2af6e9b354ae744e28f6015c01a0ac7f65692079387af2aef55a364078dcc6aff821ccde68416d7712a639d43259fc6ad747dd3c212626fb89f9989bc795 ae80571325375fff6cf916c69ba656c54b9d41cc5d9b1ee6f0b6dea2d8c00f9ecb75afcfd440833ccf4f9e35e9de774969af81a13264b413bc15148a4b955865c49771b9ebe6102816c136dfa91317e69b60e772b1adeebea15ef2f486163f1cc7b94827ed9930b2900d57564669e8e5191612dad2b4eae34b6c3afdb02b1b d609eb21e05e8379fa26dae4456148664844327c4d7efe99e4a9fe775c3455f2531c96e70150e2a5767b5dd01850d201c4262f5df212dfc10c3881f509b38533f9eca0f8002e5367adfc35538619760bbc557baf640455d4d6fcca4934d390a4fade569b09a39952326c8ef62d6333f66ca496966024ac805b52c66aecb09e db11240c3b9b1a91b0eb89e71b71375c69d4603a62ef79ecac75e60b16de26f66bbd6eed1ddaf766131f3238d83569dbde77d526be735a280a424157971a743a79198fb44436a1bc5975d136ac15ed2f60b3dea57b05791ae25e643cdecf2fc62af35974c573309949c5745195b7e2e67ba81aa2fbb46cc36b761cdbd766ef b8f6a6200e2d336cac52d2b30f96d09118a06b1119b4782be39bf95f1b8bce462b88ea2917be4c7372236874c5edf1c15b453715f066f0a5933dc74711a5ec406ba38f8c8cdd1cb60187f3e33e57d1661897c1e5890ad9b496051fdc0f3c64cf7108b44a43c7cb5bc6792c2889437d0f1d8b3a7955c5b6bf709a7fa0235669 267c6ff05bb99bbca98029970ee69e99ef64cac31d66944ff22594cf4bdd778861e8afde3a757ab9f799f0f42e2ea55c74d92cd5507e4e5a49c624f5f0f6cdd79fda70af7e7c24f6f673e7df8b88702f5481f31267f6ccd54e2744d29a8920b59343355476867e3c57ae5c3a2a8e7558ee3be01e300363bf2d2fbb12d68d54 73b2718c436d23a09f0420bd61d0a0ba5206ab91832a0c307a7eeaf1f13bb78bd6b15b62e6da1a93e160dd2252cdd70b6d7d42e8994625f7ada31918ebb7433e480f88320dab83876a64039209203d93320b03da8da5843888d86f7e4982cb73067a5f2ae2499d5ba278faeb28e2a60fdaee428bbbcbd0d2b3647a32a78967 486e4ac39e4552c68ec5c8ddf78ff58a6b16f03c24bd6da4a155ec0f9568ac9b85fd0b14d63e2d1f141b299ee2d73dccdcfc8761821309a0ffbe49001a4dd09fe275b8bdd826266c0a2b3d9d687b4526b76c18961581bb89df3548f1cced34848c0b8e990ee7bac79cdde4e4dfc9621e46e70c112c4079043d290d9c08943d 7a05d8378022dfac5856fa36593438e887f2777fa91c6096304d8cd6cc14d38300a2e7efe63e801b8240c60fb599a2f8ed36a090f5339965fd1f602314025398ea549acbfd2d0dc013027e00fd0f9257c96473cb36ed2cef5a4476803ae50875269edc245b8a7bb138707d068d4721278ac89a3e26b226f3db2b7e0d203058 7cac5f7d460f63a71d586dab0f87e279251419f93f4ba97343ab3852054a8ebf3d92dbb0b0b051b5d758bf3c3e330663edaf390bfc0dc8be7d6b9f6cc2e9e25a5da38adbdca2a1780eecf48733d1e1fb49bfc746fe9ffbf1c2e69f4d7e26296f6bcc6c9db726ee29b0d24e3d5e01c9ceadbc370c8092588e525295a110cbc5 b40111c8aee7efe855947f83c6ea3196ddcd2b99c9209e52f83786fdca847a5b5fab76a6c9746d04555d9435b28dbab1396fb06a3ca5de76067e0fabcb410e2e84db713d4259a21358bd5f8963ac0941fa5c1ae5f5ad090af3cf0f17e8e06b483fe3b63149519f59b2d50c9c305407e0b4e55fa4fadc967ee7eebd3c38d2a7 cbc34c566eae21777e825afe698ef3085bcf69bc3db2c9680a65e343d04d891296e8e1d2afd44293199c55bc63655514af44fde2a3017f43ca6ff61331c1ca83d776fdd08a55d8d05741549cc87b7ff3e6b87c2ce19a8ee8abea1a67d98b04662b36c49b3d1e7c1c040117d087cdeee2c25f62d65ac8c57349f48fe7a08e21 9f2c790aad9e4b767d6822fb50ac1ffae69a3844a77eda3eab87f8f81b3b21cb9d889703e142f390e041afaffa6d9ae97c59ea696fd2c9650f282fd5f0e6bf6435f076cf452aa67e5c2e3b0ac0cb4ae92c2a2bd44c86442646386139d16f0ca1205971c029371b5b3439824c356e863edddcf18b0b6c3fb2c1eafc1470d895 06cfac69278d77cb0387d430f525a87bd698ea96b967b029e62065557ec3e0f76b3efb6319ecf33f4d6f967a09a0bdf2a11478539b3e450cb53d58899d76a8315bb19a53c69af37ea4212cd092c6eac21142e3574380df2c27f7601c94c6d32624d60995e5c8004d3d24da9a36750cd078379096bed0ec55d2d91c50390bc4 f8ed990efe82ce026e5084760cb5396c4dde5d25b50187f2050c184a55ac010a75667bd361e3bc9453289b90d77f0fc48b328ade44af26a79aa5fd242cb2ccb095e2aa554028f60327047775d7f2de1e8eaf2b455f33dc8d66ab96697db6065dbc11fe24a0ff0ecd1d968dd3eb753c1068ba4f91747f4c53c66ebbf35a13e3 139ce0f6eba5cf8bd16dd266ac976651f965de2708f82a17ebdf82658ac57e3cfa9b6ca04b06d7e5a3d3483d930c7c7172c8ae1458cd2c324bfbde742799e0457f3f10f005394baa97efe60c688fb6d8bd24fb462b29422f27eb815930598e3a1e491f8db67dc125f113df83d8cf07cc6cc5e30be937523d6f07d98f0b709d 3ebe97ff8000eb7316725034caf648ba92e390a6b831bd59ae8e49726762801f3863a526f729d144fa99fb93211bc1930b8532867706c5ca0f9857a9052d0519870c956ee57bae5ef1891794c6643f05177c6ebb2cf2e8d0ba203144d6771e0d7fbf20911c04348b3a92fb2afe0756a4ed2569e1ccc147b0fffcbbc1922869 25c7b71becf788086914edee5383e7baef74c5eaab1faaedf41b5d51f34b7ca9aed2435f0b007b6035e6b75eaa8d800047edcd08c00f2479e6cda0a8c484d68c18c0b98d0bea519848de347f6cfecc0893d1ba4cecbc271fae1dd91593108994a2ff6b2b97a4789a74178b668a6557e0fd68f3cfeaaf086a7243173a4b90b2 27a8ded16db61013ab37b20f0fa00eda27f0fafe431aa01657103bdbff1847388a4da88e8326eaa79bbf447703d40f2ad30385f26c4c340d1f186032545db93ffc8a24d544cfbfd2dbb85e05ce1dfd99b78aaed9fcb7c762e7b2cd5c017ebad4fe0ff4393433bca499a932c467110bf3c393c06568c29f56ec634f702fd3a5 a7e938f9605e9ebd9cfda6358b26127ba15ab501153193040093ff4f9c92e430b67c9ee442fe74cf2112929bed5a727d28e4d59f7b842694a5fe679d6caaee651986892242f5fdff3d58d59a8f9740bd6577e4c20d503d5e30b7f1beed6b89f3ea32053e25ec2816eb35af725204852cb1bb0d59edf7e0797246f1bc6c0ad6 ebc71ce0e0d19a27fe16b0e16a75954949dd328204732eee295220c0e712e9f0454cd105f169b1e3b1bc10c1bece935dac0fcd98afb6a8d1c87c3a8464b29e7108b64f8059228f2f10dd206dc51d524a5fccf2356e5675347cd8c8cb2aa415becdbb5a22909d14c99f6e6489ecaf049c210abd60b83f1151332b418b57ed46 a4a4cf822172dbff7df1eb097f0ad59efb9fb8480af397099efce740277d8198428be21fce503324d8b1a6ad3ef5043cf9ac34a00a40753453b03816869112fb4295cbfbc758a47666133fdcafdd96f3fb5c2daa31f4eba4215d317c2b375f924b7390bd68c156dbf54ce83493f50ee8aa277ba6ed02880d0ebbb07815b96e e8302e75226b93920e52ab6f242b72810b241c5048082cfce7844c5864649b05c6c2402122b199061dbee27e1dd36563e719d7d3897c8fb89ecbd0fe2ffe4e8d0a1bccc2171b7eb30b19921faf6bf873bf239c98cbe50273f71fcffd9ea3d38b1b960d072f0d8f005fd00accfb45a697bce1cd0d903ee16b5d90c9557e8019 cc33a5478ea54f59869e42f5272932c15e91d38aad908d80b5f3aa1f6411c15c4928f32015eab85b9e0f453241f5e85ab468986d1d529f49f194a9ee3d595f27984cc7d7ec3c2c304581e90aed20f4f099fa972fef65f75dca92f90014045704f728ffab80943a5539a2a8dbbe41e8b129125eb81f0064fce1ebd0e37a33b6 29b111974caf65d12c96b255b63af0767fe939d564ca5e09508903af675696c683f4414c49ea4634aae487937a8b77c0c3610cb810ccadeff9206a2e74ddfe4466c172787ad69bf4ea353147723ab9dfe2fe458e6081c5d442945357b3887a1d61da48ba1db009ca0f98c9b7043822322a482c5cbcd627b8fc36720796a1ca 15395876f9009e2d43df877f9905c0efa126b4926e8d3bdcf0a34e930c1b4bb051da7797fd627b234043d64b3c5741e5a4a396a405f1f0db51c9719be746ed76f95dd921f4e166b5a6b7a98685535f4bab5365882cd54c2a7ed3d6e8f0d8328dde26e6cd6affe97eac17b3f6fdca245cce3dc2571a7f79eb889c339b8bc536 c7d676abd92998d84f6524baca177ba6ee9768aeb5c29536f61281fde6d8c1f381cdb291cd950f13fc59b5a5ac5f21b93e6dcc70f6e42102e2d304aa0b3145dbdb3b061453c6a07ff1333a4b1c997a6f77699393c0784f6340e4b80d0185de76cf5c7fb5a57d9e3d412a0fcad6c7e172c0a88c3acf619478c46c7510b537d1 114c71393ff4f3ac306cdd60a3c59985a658fd40eb12b409b3d9c02dfcc7fb4a820fe7129ad82fa8e9e3e3d2972bae9ca1ee7fa09f6cd4b5dc16d99a12f3e37dfc51338af1020e64720b8692c648ed66bd8c2c97a476b5ad74f6da942c95c662d5666361c1bcbb9952052970253a8ca6586856647c8779fb68be40aa54cce1 1173e5e11b1cb2d788bba809b3fe3c9254717140af47f1c70d06f65a4e410836a85238f8f296aa5a22223151721e65ecbf1b3bbbde39c716bf80936ca80e0967e4ffc8cef3bd6bfc879537ed5fbbd23c37977693d8ff383f36ed5a7395c79bf831784d63f18f08aad9933c5da9f9b20367bce078b2f70ddc949fa90df4a702 01cf4e540286131b53befec008f63442e9a36f18f9ee8fc936f47c1fc0af66dbe306c3c9294f18cfb1ac87489808c8917ccd322ce78862bcb1a9e9d53054740b3390de5448e07189f195989ace1d4439b978d831ac1bddca934cb6b39a2b7d501ea51b05a8bf01512669bc0b8f9f2cb0fbc71058894a1dd054fc2a40e60e2b 7eb9e2ac6bd906b303694a58b9c7b85598ab41d3a2a3bdd92e5f1f006858f96226986afa48c75fce2e31049fdbf66fc94eca52e7f67153c8746318469b3b523d53404b48353458fadd743aa78752e149aca3bbc23e34aecb1061d3968d066896426d4ce3440de3b0dd8e2c07fe7bd07a50586f596a1fa5f7d7b796ec6b6ad9 2321c18820763719d4fa56bbd35f5eaf31bdab3f18441984d4bdd039dbe59474167935435e50baeb2aaa44c168f0f3872d4bcc38afc99a87dd7f2dd58ff7be453b7dfa318983cb420bf235b590439b9f5f52c2c2c84e47b11a0431a014c2f159ed770e9772fc2a307feb95f4636ba0de66958ddcd2b134f540b8578e76d73f 45b9f24b38113ecf15d9cbf0458c90c222609573d2a1a00c38eab5c62a595e0a05a4412c384e6390e926ee16aafa80ee80e03f293eeb6f18866482a2407c3c5ebf7fb7a992d76177efd297ff8bb89fff41bc1c9b064e030a45749b1811795877985162ce316b8a9b320a94d935af83b2dec1a52bd64239b2f9b7cfb8258083 97c1945d3c95390bec313bbe406f6b46cf74a5a384baecfa2b12cec10ae4af8da26c77faf0d9e6ae4de442c4a3ed36751111fd9dca5f38b95c8cb942b7ab1cbdc68d03cd6727f8337b918b57633a8c3c9fdbb96dd6cb3aec86a4cb3e6ffdfab52b03ceaab6a366e486a85e2c96610a960885900989b0647d4f3aa944e8bd0d 69d63daa8a409375d8f752d4094e7ee1d02c2b2422fa7d6911b0ab46b02618f8f8c21e0e6bf6a2d414f4a25d5e23e8aea77eafa69e246436f3c9aafc6b5b341f3f6af922e5deadf8a9f45a3dd6830bdb2eecc299c1ff58582d6fc1693a2517d0a0f204adf2c0dea6d1fab1453ab212971d6696f11261b70082c488b2dc7057 e6f313581b5cad0bf0985d4256cd30a85d172f26c0b1287844f716bb601f18da7ec50dc4bea5d5b3724f634a087a58d656e2550fa0dc709713448233a787610c57d0e77c70ff6a517c669dd38df90d8d25d661ce53638fc227ddbfbb7bfe14090ccbe886ec20920bff3d59323c9b752802cc8e40e0b61047f6e8befaf682e4 9340b007012b2785d456d621cd0947636efd22189b85c20340432d57e20730bba1ea9e24ffcbcf9d33b0cc8fb719cb0ffd2f6da8c8bf0d5b67f1e07c740dc375c0b11a706d453977757805af5b89c0735110628a8f69c7c12f22d499ff3dc7d333a8355f8db4a94e828452a1e4d145b5daa1b0c3e7de56221c7713848f8592 8adec3a4b3b29d499463b669202adbbe73318f0dbe808e99355d2b6e71d43287b3d8c9838ffcebb923978f638255bbcd70d984b964463413144dc59d7a7fc7519260922744ccd93f8176c16c5972483184277d56c42827ebb55e1c198c5b66ddf90c50d8e9e5a30151cc1b5952f8156e4890f4153538817742f8400d7c5e94 222685e440fa64c8be9bbfcf562b8bf3cd350fa2d00a1f996dd197cf2ada35597bf04c6200c085775ecd391ce34f68d39564a319ef8b02fb4f270b88856cf17997792af773ccbbe429bd472d203c3622c922d19a7f5cc3f02d826b472838c733d8db9f3cc4e3ea22ad36e35d7dbf00e9da71a133c0c60ebed4a99bf49af445 25545fa676cf9415c49e3ad5870cc40f74a7e2bb44e0d1941ccbdd4c4b03ac3163383f624d9f4d3a4cecaad34852afc93a67fdeffe29ac348332f0268fc113f80391cff84e924508a660931df301dfa094dd872504d2aa5b7d98a6e84fd4420a65682a440453ebf878bed8d7bc1555fafac512a77f4791dc2bce8c0ccf06e2 bbf93ff51c7946724b47e66768ab813cb5c4bf38ac126a5a39569374ab485e3c46f8e7c03eba4f1ff1203fe7995e8df4b482bde8e2df88adfea0944634121dcfc44ea247dcd53503cdb57b379129a30d57e499fde8a6315632cc917db23dfe741630db2b9e15a8eb1374be91f698ef7e126f8ffbbd8ca859acb172cd35f7f0 2a08f39f5d39417f8bd8a62443465ef186b8545ec6838eccaa956ed276d62b3bb1ae8a44d5a57e429d1f28c2d100f73f17fb97ed0641a19fe5ad131c6f5f4f05e1a5b3a1eb60ba7fe7921cfda00b7eade836bef345fc1ad896ffbbf16da7c3259fd9161c18dcd5db6c38443b48b3dd71dbbf6265a2d112ddb90efa1b1f497c bd4d4b93aa6c9c6b5badc6340799eb1fcfd04b98e495a01e375ea2e842f47dedb5424aad1e188ba1cc50bca92b816b6f666d5bbcd5791b8544098d45c3d648f03a867f705bb50ace4646c058230234fab94585b101d203e88329e89df0217b1f997b1c5f74600dfa3ed7aaed9a087e35bbdc610760c22df91145deed5d9d6a 8278741094b247998d53550dd1580f220a9d55bbb1311fb0d35f8cd98220865f05f4e514a6c3fa0cfcc17af53385840c8ea9ccc45eeeb0d2228068df772433557f9191115c42617b3d3bf47a99a5838e151cab0fedb3f47b27d65cc50c68b6a3ffacca5ccbe7484eac9f90ac1915a2a2d1fe98f234e5891ec4e7f6df4f97c4 9198eb6765f896ed68a453989f29e7d2d771a46d44d4811c82de954218f6ff434e06a851a1b838a6c13de0c5fafa67483d36dacf752354eaa756c30acce76503607a6385465e2a8c1faadcee4959d3060f3fa5881a6c6d73d8f5742f7e637a0d25e334d4ec53315665430642d79a2f96071e62198351a6184734479e4e14d6 6aa935bf6d27a6453c47f00a37fc83cadec53366d6a13efcbd29c25f85540227bbe2f397f0f0bda2dea965755e2bab0bc35a36ce56ec0d06927c5945c23a416b50491ab5661b3e3308692369d605b954ba056abc22c3008f346310a81511140f1d100ea17bebe853c2aad908d50320fde954595ef9d9893ed7e4fb163ca2e5 d6846d026827b8a9bc37a3a1669d0cb9226e63fff2cae3ee0c571abeb147f4230edbbf41772d35cc0e46b80212f45a23db0c63c172bee06e3eea8603033b3949ade75891f44f5543fc646f7fe3b094063cdee7ff9decff8ca1f16adc818abdaff24a6eb0b8bf41d6b8a5848ecfc923d20610efb6f4c57e08f34fe540b4e642 a852df8c9a863af17f68ed3e47b78a59a52d1e1e048cb82db85dff7e1d32685e9b0b4c5085b66df5016446585af3e7bc87f3131995832367c4403a04eaf2b72c26bd676ebfcb3ff78c67bbc562bf6fe5e71f4df7787a5e6c05777fdcf7125a1e848b338aacd97e388344e09a2b5eb1e99efca830f39bc6d453dc590a85e955 eda1d70cf1294af3c4d948db5a4e3de8324888353d8f8e5fc193abcc3725f6e2206fb522cbbe3940b4ea6ce2a803603503d749b5b2d4dde112940af184b35142b5aee8691ca80eb9d375d6c4849218889ffa04b8fcf9d828c42f4fd4cc98cac27d04b9f5b340c47cd2896989d58ac59a2dfd5f1fe0dfe000cb52219d1da308 109553300546d20c3364b17d5f124601e31d5269123af8a37c3be83ca76d110f6cfebd51f331352233241df94d46cbe6e884ad7724b5da987dc82f6f3366b6d2b51d13f98a0b025c2c28e8aae2acede6c78f379206df705d7ba811ae6b9fc93f8a2c7eae596b7e93db1ef774b8855d1e3b5b9abc8d74ad22e0d3b180158d8d 3fd70e04a426c14b4a0c9c354f08f1a280b641cb16f59800948bd6e2ed89a8d1e0c55231b41729437c57589602e7fddc3ef962f7250357b8d8b1df59cd1639a75d14c51506657fc739502eee276c56b5c9012043d38ac17893de11a32fa2f44ae4404710d0006fa76675360f8ca99980bf88ca306664b79a4b2ec8df968fdd 48c92548317571c2b214de9f18de2a1c87263a4a74d75c5bd3db8cf32c63c4031808d6fbf9739ba38e2ae55b9c01f29aff821208a3bb575d9db63188d7c3aef23aee75190d519cdfc53152e6633e27a2e453152c6bee8b1643c3de1ad820cc37fba98bf5e38ac8d9b6148f97b8be9abf9518adf5fb2075f0ff26e721660784 5a524fedf00dc69e863655f025e9acf77783a80f39ad5f35d00ac0126714251640c3ac6eb3d83bdda164788526e17eb93469fbfa292947ab01ae659d3c6280359277e060b3ea52f14380e2c64ebe9cc2457a818e9e2a75f8d2dfc093aeedd4f371acab7729440100994b541287ce556fdfcba8a22a089529e92d84dccddbad 7cedd550b244bf7a779288d3cc83c5eacf5b4febe68131a8285454bd302348dbc10c6d55e21c6345124bacbe10f2c3f5c87bf783ac97e14aec056f94ae22640b5272dbfc7e047e36f1f6f04e49628eb42250f4fbf59bd2b3e7e0487c947c8a2649cc7ab00742cfbb9311e62113a763e1f097c699171daef1ebf75e3ea01a3e 5519ebf0001e21d1a46be196ccb8b94a8929f9aacec6edcfd179d97250fe4b551b778af01de5c28c23b18a45c6eaf32390533ac5eca73a85903a6dbf878e2399de6b1b9b5966bdc07b11752e37fa66df0b7575ec024e3dd6062e95409f73068c6e2444d5d115b54827104c9c6e00cdc02d8dc158bc10fdfbcf7ebb71d26ef1 05a67ce876f328aeed0c55835ef52a0889ca194f9a811c0cf330bee371795e25d6e900a5d0aee0bd561b0bf7dd46a7a39ca3aa3652435ee937340fae76166b062182a4632c8c2f05107b16f4906de07c1b225f56886f5eae6eec85cfd455dfd5b923d84712faee2d7eb1a44a615559735422d03c95e8c1c4f271ec2f0ad748 0c44ee1d644a4244cc67d91b1c1a2d4a2303cc7ae4d9dde96af3abc8eb690fe2d0115c78676766513e468d49b3217cb32a53b6bd3b4c8f44c174574a505f3fb67b744fb93a5463912ec5eba7e3c0c7940d0ec64ffd70ab5bc9b30fd938b4d54979244abfe918d5f78d61c4f4e98095c9087d39bc8534b627a158f0471a6858 25177cc0188206a64376cf1103683fe1dcd1966055548e4396b097a6826554b46e49d3fdffdc43513c9d6717dcfb030643c27bc6aedbc6efeca6182e59c9f76ddf74c24512d15a199e8e7e471918899c8e2a89a4b3287c6699788da6f7029c820914e96e1caf8aad254ea3b76bfdd4a562c237e4f4345afb0134eaa8f512b4 2cb7d6f1dd801be8e938703131bbbcb7c10ca12fb5d6efd1422bc13abe9070a491cd0b5b599aaba5eead5cba8a43b7680bb067297c1b44da35b9a68b1bc70c58a0e5756e214f87be1419b8aa820c75bb38c9828ddab14205c598b99c79ac5ddfa631d07353e0b6f21a9104e3d1e05154cb2ee65775f9abeb59e026d115150c b11c4469f6239283f7e4cbc06de8cc942b9ea041805c34d36086ee93018864abf68e6b69a66949526d75ab054fc19fcf7527841e12f7b62d92ae56818fc7e1a62837b33b9b350b8db2b599bcd41c3e513aa7751f9c4e4db9e215b50b831f84abb27e8c64112ee952ebaecaf450b29c41bc4e4e107869b66856d6c4ffc7624e 744a34d47a3d13d339a671ddcbcb1742423a1cf2b2d66b0f2bd8c115b54573b9ef705d5d683ef8856b3af26ed035ca9e50e460c8cf4453ab558b5940c6fade3b3bc7eccf5c35057e6cce69e6fd52bcf7d6ee48501213f266a9da4297edf7fa971fd342b4ec0e15bdf25205b746a5f044482a5390ec635b14e8c63d36d64c96 6f29401768f30853ebf878bed8d7bc2568714b7e489fe03429481644e0f94eef0a5372378a60f8c3bc6b684783df4fb0d97f510d1b43ef0f04d03e02e8b2c0413b00b827b319a0e3436a0a3fa061217625d0bbcaaa0f9cfb73395db8fe305b9b6bd1d342bc89841b84fc14e76d31f3bbfba6346be7533420f29a56ed41b2f2 799149d756916fe2f575dabbda2a493ffc07996d9d8978aacf82df84e31ad1d6d5ec0aa2004aa7e5378b1402fea3666e5231517b4620324c25e008fa0c85531e21e4d275a4ebf1f2c589e869f3eb4196c25c47a4c6668c1d7ae5717f7389ab1f7bc4a6c6059058f7ff1f83668d61a48429d3bd77cbe284fd083eb8ff37ceee 42795a08c7e4f959de9de18eef332655d405f8d9e4f41819e10c522283c95e1437b293d92ae6f9092e51982bfb5fb8f64d585a32fb7ae55e44e8facbb2d5fc59a0c35ca6b7c8aa086fd0cc2f307de69832997212f0b812c21b43f69557afdfceebb12727d33b818cba79430ea967e45b92d647b8cfcd369100963ff1d08857 2983d8cb92a91d8ba5444dd746de45fc736d3c5f976a5265af3df003842b793371635ef55f498d97c3db8a1b681616f7df308d2a18e3452b7669b43ca02d08755813c2e94371e82c2a918be917bcaf3babf119429798510d902efd2ac64fb0316f4ec6ed5296d815b980b914b65d472141a60ddce3d80699ec8b8107a296e9 a195be9ab35827f635115159373f916f5fa3fa0f62c4067b5c2389a51283bdc04a805660a857a450b8696885b152835c0ce585c26f96b905e33f623637824ca8dd01b0e8c3feaee10c7e6d46c2993d5a8ea4cfcf0cd97c3e500ae6b6997d33d8a0a96450493c8d2b49461192d472fc15b1ff2752629fd04cba6d23a27062bd 7df42ba7f529957ff25665cbfb3335f61a00e60f8c261c819742396096f91b8ca6b50bd6489174a1551d7be277da24a982a85d2295b756aac2ba7876f183e3f00b4f53f8fd3f0117d44ca3a1a027f51cd44517899a2b4ae471bd09b03b82c9b9b64ef19e1d05887cd52121fbada29c24213336fbb54cc2ac1b624414eb540c e6102bd6dd82b52ce62ea547d62478b7865c2febc4f4783ba8d504705c5eccfe43fee04f49cc6602e3d71045326bdfa44ed2412b242e4115793934072ce6b36fbd12ef46e0ff96142eca6e57f707760059d5cc7b93a78d9b6ec2c91259995ca847c60e02a7698b4df8bb55d8529e1e345aaad22b23521d720cdbac6557b66c e0e3f9a139fc3237531eef771edc04dbd7779575efc7b6d5e569eb438aac79d3cac32a76073c843024988344ad7b9200c78e04a4e1817383cc0eb15eaae8b60992d62caecee9d51a04c90fb5c0e50ea09e836b3d6f92f5016492a8b14450d65e012d5e25701c3a204f72df59ff1b1919665cb744ff9cc14334579b5d2a2a4a d311c739dc0a3b9bbdb8e29e0ceeccfd63b156999734261131a18227aa4d9190f69e7e74cf9dae95596d691dcff8762e7817101eff0a03dfab9da89936d76335054b9b2e54e30730ac67f6b6c8dd47d2db1719e888f85a1979ccdaf5ebd9484b819bbc87dd983e8211813ec26e8f33bb846876b5a0fb09f6a0a96e893b9124 085cde323272271840c235ff6e411027b7b73ec957428397d8e28ef39e740145ec57ffbc41f3f29c36d534ad02187963af2e69944be7f8ac09fcd848481c4e1208e5d50236e32de0c4f2b0e1b2255995e2d1d139c345b2cf99ea50a2498372788985b883ce35f61499b67dc68589b8dd05ce01cfe85fa1eed553028bf47e2f a36efc6da18dc2aff683da8fb46d4b41ddad477e446cb364a3aac376139814fb6beca17e9006ca7a0e639e314313e65eb48eda5a1fa0c1c2a3a9c951cc7429b9b7c0c84501f349db92ca1ecd3b8d8f784420ab18f5557747e428786ec8b26f5ea5d9f77357fbb7ad468a8f5d617807b616d1d3a5e56ed1dc7d75737e3198fd d0ff43f6f6deb433b824b31172fc1b19a04e9d7775d2fa27df5d0b153ab6f4b059563290edeaae5097a1b1a43f252493af8b468dca77789590b6c60e4afd4a21040faaab9c629b508a340d9c71095632d639d3bb7682c438c4ba07730868e3db29ad74cdeb15029a36c02f24ca41009c16e3e81533387afb3f509cea9da457 a825171becd2526dde3e8875cc7e9b9a347f12654ee7923b2e858791928b69e700b48663f447ba8868b3232b2a9840078a43ddb6406e1f9d6754b8eadc5405462fdd487eaacbb16abbd959c66f83c93dbac0ab44ba08bfddb12bf01c7f992026b13f75bec85c720790aaf43b0623cfacb180af53ff447daf44168020c0ac67 419e20a8b345e23c0ce39fdf4c3a37406b8b31df8b2027b78ec38dc4b622f1f54206e32a31db28a585585c23526cfe862f7a6931c66cf62cbafa61e27e21fb398f3fe6ab25fbeebaa49d78a2723eb07acd09c38d7b528a85e94829a92acea66caadee39ec6b038b4deed794cfc45ac644f28ce17877f840977fbea676af84a fafb81b533092bccb82a13885287f5ce670699081c3b4b87e3e353c1f6d32b00f4a5308cbda4a85664c1c8f2f6d354ec13db2e5d6b1d0a28885cf6c30795d1a126e090344147447fd2ab21abdcad7a6cdc4a1b97a5d90f5542a2bfda0db44edfd195c740678a70d510b456fce402876e3764a3abd52cc5752c05c7900479cd 0967e5706162c5cab7cc32f13c3b555b67511d3624db4163588607955a85143fc64213da1b9b70919cc53ca737862cf80c87b94618e7bc1c96df314d43b796c66921865609be4a026177e545fdb5e3c1478e3d5306572d34e7a289bb1099ca1ded68661aa96a680d8677b62e32943d8bb7dec73aadd2fbcd822f923ede9043 436414383251ebeab9b973c231050487fd9eb28eb535967f7d50edf1c0efc093c40ce0ece2c9cfd0b77651f22ecde3bda6e3a94d745798649c708dd50727f270e5b1365ec1ba1be3bc4a9080e37527579e6309887d6e6ed495443ea9a7d91dc590750ade3a135d36e28721035bd94dfc7c547b01c44d2bca220a4f50a63019 9b7b6bc65748961f745d8d93d094d25798a2ed3fe0bf08def17274d8b08802c6d6422a31bb1b99f212d51db7a0d05ff6eadd7a3fa1bb59d3c5491f449cf271e697962427cc60d1fa55e79bb64abc88ad68d82fc14fce7133a15dea32b45c0fa96e61bcf3e394e140f116d705066bab05c70c2a98d6432d1250a1a649941d02 92fa3c7ef8367bdac8d92bdc1ba8d91c95f4ea46461610770e56f3d7d3562fbccb35e21855142fd6f5da8e0918e412d53d51c7fabdcd21eae9749f0dba1cba266be0600ae99c593bece16d9a2bc024929dc84cd385676bb7e7b0f34a826e53caacca9091f5155e7460a3d4139cc155ed3c8c4856a41a198b17918a94099058 588b02f4eddb515e50e86450bcddce9cec3109e22186e92c02dd15d7c1e41f3b3596ecf642163c71fe885446cd6525dc43569b0c218b4a1549e288a1ccb847f79ff6d4fdb8469d9ac6ebe1f6f8aa32b5a6ea9638c42bdf0e9ebddc8f29f96f1c5407a12304bff65d96241b9d384d8bfa5ff8df7d067bbf90d8083e3e13eb8c e3c19535c2a9a2e4415a27685372054bcb0f00528125ebf5cffdd1b316785815f7f678803ddee69f7c0119e6978927a98fde01fe6d6e5dd315f1816b312de0b96121ab6d43bacbb496b6df8d99923e1dba7d0718e60a1583264e90357ada3978e983906aa9e0dcc25fca1086d5106ded9201b9d3e19f00d5e6ed7743baf095 12068c2a6b91ed91fd4fed83df00810aef1b4d7b8b80d4d328d0a7b7e8e55a51c009b8953c0658be094d66c98f9a7bb192b27c285c186bddf558a31d73c7f3f383631f10981b02f5c1c0433ae4a9b2864368cb6bebf1c12cb22219daa695f63999e81ba0a19be77ab5eb6ee94f41c38731ba8f3bbb35a2d2e7f299c6ff46d3 43428d7b9a9da075f019de2b9d8e37d6f9b337fa2d9ba182d1cc53e832b8bc60ebfe3f2673701699b16c81a4c6ee9b5248437e441d79164e4c99d2453c004b91510a9020ec3f12eaed811fb67ae4c3ae4b9e29970851d91d73e884286622c591665225b83991f9e4b0bdd9d87332c1a2f48c749898556491dd4b3b11ab0b59 8c56e3d586389d64daecd63675e77485e33e89f8cbaa856e3742383fd7a301f237c43f6af9f360938eb3f9376f5cb6e00502d6b9125ce9a21c6ed87640273e91bea63b522e23d3c6e557a69ef65ef0735eefb88d786b87164b303b71d34b9a78242de1605054c8aaa5295b450183f63d852f5192289dca6c55254b063ddadd 4923c1cbb127df60f3029909230a77538919d858b24cd6be486a549e20e627a18d3b926004cd0162e683cbaaeb682ffaf45f60530fbfd1dc228ff8265eb46d728eef891a2dce2eb37e1724a9c41d0f5bf378ab40b7437def988c068f6155b1c98ad1d05f07f61ed94f1daadf2ddcbddde4d2579d9027776d828733dbdf6f52 b52ad8d6ee508c2662113577d320781424c5483d9c8025bbec08752fd22b131da887f9d1e3566552e0ce4234f06982302ca02e425e6df8e44538a071c90a6f850284bf6ae6275f58dacbe5241f90e611f2a51571dec7225b3fb6616b78f84ed448b8dd309e85ee13aae8d7c64857aeaed97affe2e1da461077b1fcad237cc2 0302ca6379ede96e9817a6116f6953f92ab4916fcbe33caeaa5ebd7a6bbc6761c1712679755647f0598daa1726b41cccba179ac2138e712cde448b5e67f0d2c72ffd2b6d631bee0396e6323627e66352290d8ff1e85f29a00f412a16d826a09be2ff8f7c06e4d7ba61ba51c67b0d03baa07529e7a2b991d1c24c31417a3266 52f6508de6c17d3b45c55408bed0946e83632b95a42af2dd4c9d5b63e58154f5f7093fcff7b9f2a1bf0c300828b340f770e523bdc9db94aa7ce54521ec57832e0f199b27cea1716cec165ef2a639c2d0067daf7205204a35da5a4324d74efc53b5c0ee17ce50dc7ef4d3b50e4f4d309a369a6186aefcf3bfc8afba22f76f83 b17bad6ee5ae81bbc246e147a65a14898485df43f48c83d439b34b2b23b6af7e5d28794f25cc8f9faf54d7d9ef395e465260f5cbdb2ad4c9f3186c605bbba5f0cfdf8b99138a6663293a358c39915512cda76ceb45880a9086d02bf3333889c38693e62aeba70a87836699448b6a55ae6d813736584039936b6103a5cd4392 949ef8f4852d3b5baceb81fd7b598d96389208ed1630efd2e973cfde145fb08bc2d83cb7801f21cba988c5e564bb77ed0b7f2ce08f18e59edbd482b02e9a14a86c02ce1fc473ba28b6813be843e309307a3216a04b3d5d99ba0f7528f96b85159cf7c85f53dbfafe9fe9f5dd5029fac48f3687b7540ac30e101a313f0eaa09 4b3163f7a612f229dd12d58a1d8ca3b281f8b1b806a3455979294df6801e1a941bb7c14f381902f39c88d2f93c17eb51cbea2d416e26e9af99b589552004c5267ded0c4dd64a8f827a011794ddfe58bebb0d37077eb333dd840f34afba2811ed5c828d64b7eef00064f0ee507092cf7809066338277a9fe3d38b61fbd9a6e0 afd2fd692cee830f13cce21a41f1dec1c4cc904e14a8968221d463a2ba2aafa3a7a2a8be208d741002d8fc074022cc4237df4fa0cf0e4fec7e407e96dd1ebd2194a1db2857536000d6a2169ecc6300175919966f3f7194b926de9d67cb05b25c8f107c7e536f8c862a8530ac3d36101f957f394661c9b5a4b9d03803136134 9bda9da163effc8f3dace76348961fdc32db2c858270982e1bf2d828d01306dbd35be662a58fd8e13db4d18d0641bb84c778f2f85e3c20cc35129b34fb0837ad0590c073a6f201ca67e7ced31630c1257b270f14b931459a5a57b000752384c94eda5e0565586b6d159e26e04727ba63f92de73d5e7baf6d9db367c5d41984 7777167389c2f5b9597409a11581d5d728c6ac35d81be3a4c43697a06e59da2085f1d12ae2c3c5c5c41bf33373d94637978b639f4507de729cf9579afaa4fff01605d4adca0db3848ded041fa9bca0fe281126005c711c9ed6ff10328854ad65f60aee35aefd2503a457a1658d329ced870907c719252aed451347ecbca138 c6f3309c63786c664096b089bc409d0ddde101a17e424a0dbe03fed41610d763e10389ef90eb4f63efe9fba574ef15608df56545b394539dd8f7b64a7e3d3947e46fe4fe822e3785b2d1c6f4219f8fd001cd24dc83da4dcbbe4f53103fa53f5064d98995b934c5f77dfee71f00d58e0fea3b0b24f5e92f099ff563a0b2c283 2e3081ffca49bffe55021d85582420593dcb19b3bb410564a58b0a8e1a3d37f44aca0fe62534e44b4240e59c432c56daa3222763a63e5273040996f7c41146988713351c60c9da01b51cfd21a4967abd1b54c48aa22a02a931545d5bbe3465e6a9c673b10b6517a6e290a41b448137fea8edc0d880ea0badcd30a66339bba0 dbdb2ed85ef6e4427ecec897c6a4fbcf15b4d830d07b102089e16875b7fc732b0e1be352f9612f2f6ebf85c022cd32656939812e75b6009834bd62d1645d86199965651fe06083bd482d075cb2660f82933fd0fff54dce09310db2af4efda90dbb23ef2bfefba6235339d6b275b7c59a44369c22e3d2531d36e13dccd25035 610e58f770251a28eb69782f978231de41d039169e413158693778d412254f060d99356fa3293792e9f980ad8ec41f095367ae9859f49e45d7ac997c1f554e86f69f0f3b1de14681fe9a5738bee4379b782616f9613ace00cd40e5627de3c9c1edd88e037bb2f36bec76701f630deb8cf306b219de304524ee4df12772a4ae 0450419513e76d03582fa48070da3aeff7f42bfbe07bf2dfc27aa41e1a65e5b3a78a9f2178d71914fb3330f3edddd3c23508d0f4dfa702520a31b355b10c6481c5d910a198006229ffac0f908638cec552c4812302082e110d3a2fdbae4bfb4e90215100bb3aee1a9b9f565855263ec4525bc1c85c6b9ea59884a7133ddf30 17a0ce9899abdb97221c3e4c5cf4ad095a718c670622173d7c8f50ea6074249bda5e9e0a3352a5ea80f2305fac989c8c08642a998b0be5b303ae5945d8aeb9027f71d5109c20d4c9ff45da2c3f7b81ee5f7b957e7a6d46d91b5e7fde35a94cb3abb516ea3cca205389006506b1c2d35b8c85d0f037a53bf392f9eb75593e82 3d87c03e04fec3c7f97ffb6c3d5f15426c7afa2de1f85cd5d27a59881a6fc2c0b7193824e830aa74f570d8cb1db8604fd4cf8bb01cda9a2c5b9602d1ee3b44b4863bf60905b327f7b448a739ead0c34f6d2f01be5361464c4e258e1cd4d86fb4646da04baa26f4c2fd0701986f6b26160fc83d255b852d7afa6f9409213a27 1d5adb46efca6deb92140c4ff36765537d48d4270de75287fd8b4728b34269ba55d99582da3e9dcfabf13a2c3ab3ef472b221d462c7bce73afcd63dcc25bfbcf2f8ce7044cca0a0c780b0835d43c0d1d2636e3a1255415bfe25fd0189dc466d9bd0b70067b5fcfd2f8a100ded7fa3aea04a7e3472932144697b3251c819705 2631180e2e1b4993a433ae2ef1780237ea6b931761abeac9d7534a047d9149f771484c59e94b8bb037ee8bc0de61f7334a874bbfa8c6e407e0dca7871c279ee7d2aba18cd31fa5f45e34be401a2b4df5ad1fbf280edd1c868f1c92ec7f3884aeec3dd5e2b8a6d1ec42f238f4798ecfcbd1af39b0d4a49516848449a7c764eb 5f4405bb49f60d6ff76173e75c27fd84cebc63d2187f29d758718c8167b05cb11faff21d79db6aca0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont setpacking %AI3_EndRider [ 39/quotesingle 96/grave 130/quotesinglbase/florin/quotedblbase/ellipsis /dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft /quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark /scaron/guilsinglright/oe/dotlessi 159/Ydieresis /space 164/currency 166/brokenbar 168/dieresis/copyright/ordfeminine 172/logicalnot/hyphen/registered/macron/ring /plusminus/twosuperior/threesuperior/acute/mu 183/periodcentered/cedilla /onesuperior/ordmasculine 188/onequarter/onehalf/threequarters 192/Agrave /Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute /Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde /Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave /Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute /acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex /edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute /ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex /udieresis/yacute/thorn/ydieresis TE %AI55J_Tsume: None %AI3_BeginEncoding: _Myriad-Roman Myriad-Roman [/_Myriad-Roman/Myriad-Roman 0 0 1 TZ %AI3_EndEncoding AdobeType %AI55J_Tsume: None %AI3_BeginEncoding: _Times-Italic Times-Italic [/_Times-Italic/Times-Italic 0 0 1 TZ %AI3_EndEncoding AdobeType 7 Bn %AI5_BeginGradient: (Unnamed gradient) (Unnamed gradient) 1 2 Bd [ 0 0 0 0 1 1 1 4 %_Br [ 0 0 0 0 1 1 1 2 50 0 %_Bs 0 0 0 0 1 1 1 2 50 100 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Unnamed gradient 3) (Unnamed gradient 3) 1 2 Bd [ 0 0 0 0 1 1 1 4 %_Br [ 0 0 0 0 1 1 1 2 50 0 %_Bs 0 0 0 0 1 1 1 2 50 100 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Unnamed gradient 4) (Unnamed gradient 4) 1 2 Bd [ 0 0 0 0 1 1 1 4 %_Br [ 0 0 0 0 1 1 1 2 50 0 %_Bs 0 0 0 0 1 1 1 2 50 100 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Unnamed gradient 5) (Unnamed gradient 5) 1 2 Bd [ 0 0 0 0 1 1 1 4 %_Br [ 0 0 0 0 1 1 1 2 50 0 %_Bs 0 0 0 0 1 1 1 2 50 100 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Unnamed gradient 6) (Unnamed gradient 6) 1 2 Bd [ < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 0 %_Br [ 1 0 50 0 %_Bs 0 0 50 100 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Unnamed gradient 7) (Unnamed gradient 7) 1 2 Bd [ 0 0 0 0 1 1 1 4 %_Br [ 0 0 0 0 1 1 1 2 50 0 %_Bs 0 0 0 0 1 1 1 2 50 100 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Unnamed gradient 8) (Unnamed gradient 8) 1 2 Bd [ 0 0 0 0 1 1 1 4 %_Br [ 0 0 0 0 1 1 1 2 50 0 %_Bs 0 0 0 0 1 1 1 2 50 100 %_Bs BD %AI5_EndGradient %AI5_Begin_NonPrinting Np 9 Bn %AI5_BeginGradient: (Black, White Radial) (Black, White Radial) 1 2 Bd [ 0 0 0 < 00000000000000000000000000000000000000000000000101010101010101010101010102020202 02020202020202030303030303040404040404040505050505050606060607070707080808090909 090A0A0A0A0B0B0B0C0C0D0D0D0E0E0F0F0F101011111112121313141515161617171819191A1A1B 1B1C1D1D1E1F202021222323242526272728292A2B2C2D2E2F303132333435363738393A3B3C3D3E 3F404142434445464748494A4C4D4E4F50525354565758595B5C5D5F606263656668696B6C6E7071 737576787A7C7D7F81838587898B8D8F919395979A9C9EA0A3A5A7AAACAFB1B4B7B9BCBFC2C5C7CA D0D6DBE0E4E8ECF0F2F4F6F7F9FBFDFF > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 4 %_Br [ 0 0 0 0 1 1 1 2 50 0 %_Bs 0 0 0 1 0 0 0 2 50 100 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Nova) (Nova) 1 3 Bd [ < 08070707060606050504030303030303030404050506060606070707070707070707070707070706 06060505040403030202020202020304040405050606060606070707070707070707070707060606 06050504040404040404040404050505050606060607070707070707070707070707070606060606 05050505050505050505050505050505060606060606070707070707070707070707070706060606 06060505050505050505050505050505050505050505060606060606060707070707070707070707 07070706060606060606060505050505050404040404040404040404040404040404040505050505 05050506060606060606060606060606060606060606060606060606060606060606060606060606 06060606060606060606060606050505050505050505050505050505050505050504040404040404 04040404040404040404040404040404040404040404040404040404040303030303030303030303 0303030303030303 > < 0505060607070808090A0A0B0C0C0D0E0F0F10111212131415161718191A1A1B1C1D1E1F20212223 24252728292A2B2D2E2F2F30313233343435363738393A3A3A3B3C3D3E3F40414243444545464849 4A4B4C4D4E4F4F50515254555656565758595A5B5C5D5D5E5F6061626363646566676869696A6B6D 6E6F707071727374757576777879797A7B7C7D7E7E7F8081828283848586868788898A8A8B8C8D8D 8E8F909191929394949596979798999A9A9B9C9D9D9E9FA0A0A1A2A4A4A5A6A7A7A8A9A9AAABACAC ADAEAEAFB0B0B1B2B3B3B4B5B5B6B7B7B8B9B9BABBBBBCBDBDBEBFBFC0C1C1C2C3C3C4C5C5C6C6C8 C9C9CACBCBCDCDCECFCFD0D0D1D2D2D4D4D5D6D6D7D7D8D9D9DADADBDBDDDDDEDFDFE0E0E1E1E2E2 E3E3E4E4E4E5E5E6E6E7E7E8E8E9E9EAEAEAEAEBEBEBECECEDEDEDEDEEEEEFEFEFEFEFF0F0F0F0F0 F1F1F1F1F1F2F2F2F2F2F3F3F3F3F3F3F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F5F5F5 F5F5F5F5F5F5F5F5 > 0.9137 0 1 < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E2E1E0DFDEDDDCDBDAD9 D8D7D6D5D4D3D2D1D0CFCFCECDCCCBCAC9C8C7C6C5C4C3C2C2C1C0BFBEBDBCBBBAB9B8B7B7B6B5B4 B3B2B1B0AFAEAEADACABAAA9A8A7A7A6A5A4A3A2A1A0A09F9E9D9C9B9A9A99989796959494939291 908F8E8E8D8C8B8A898988878685858483828180807F7E7D7C7C7B7A797878777675747473727171 706F6E6D6D6C6B6A6A696867676665646463626161605F5E5E5D5C5B5B5A59585857565655545353 525151504F4F4E4D4C4C4B4A4A4948484746464544444342424140403F3E3E3D3C3C3B3A3A393938 373736353534343332323131302F2F2E2E2D2C2C2B2B2A2929282827272626252424232322222121 20201F1E1E1D1D1C1C1B1B1A1A191918181717161616151514141313121211111110100F0F0E0E0E 0D0D0C0C0C0B0B0A0A0A090909080808070707060606050505040404040303030302020202010101 0101010000000000 > 0 4 %_Br < 030404050606070809090A0B0C0D0D0E0F10101112131314151616171819191A1B1C1C1D1E1E1F20 20212223232425252627272829292A2B2B2C2D2D2E2F2F303131323333343535363637383839393A 3A3B3B3C3C3D3E3E3F3F404041414242434344444545464647494A4C4E5051545658595B5E606163 6668696B6D707173747677797A7C7D7F8182848587888A8C8D8F9092949597989A9B9C9E9FA0A2A3 A4A5A7A8A9ABACADAEB0B1B2B3B5B6B7B9BABBBDBEBF > < F5F5F5F4F4F3F3F3F2F2F1F1F1F0F0F0EFEFEFEFEEEEEEEEEDEDEDEDEDEDECECECECECECECECECEC ECECECECEDEDEDEEEEEEEFEFF0F0F0F1F1F2F3F3F4F4F5F5F6F6F7F7F8F8F9F9FAFAFAFAFAF8F8F7 F7F6F6F5F5F4F3F3F2F2F2F1F1F1F0F0EFEFEFEFEEEEEEEEEEEDEDEDEDEDEDEDEDEDECECECECECEC ECECEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E8E8E8E8E8E8E8E8E8E7 E7E7E7E7E7E7E8E8E7E7E7E7E7E7E7E7E7E6E6E6E6E6 > < E9E9E9E9EAEAEAEAEBEBECECECECECEBEAE9E9E7E6E4E4E2E1DFDFDDDBDBD9D7D4D4D2D0CDCDCBC8 C6C6C4C2C0BFBDBBB9B9B7B4B4B2B0ADADABA8A6A5A3A09E9D9B98969593908E8D8B888686848281 7F7D7B7B78757373706E6B6B68656362605D5A5A575452514F4D4D4C4B4949484645454443424241 3F3E3E3D3C3B3B3A383737353434333130302F2E2C2D2B2A29292827262625242222211F1F1D1C1A 1A18171515131210100F0D0C0B0A0807080707070707 > < 00000000010101010101010101020202020202020303030303030404040404040505050505050606 060707070808080909090A0A0B0B0B0C0C0D0D0D0E0E0F0F10101111111212131314141516161718 18191A1A1B1C1C1D1E1F202021222323242526262728292A2A292A282726262524232322201F1F1E 1D1C1C1B191818171716161515151413121211100F0F0E0D0C0C0B0A090908080808070707070606 06060505050404030403030202010101010101010101 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A > < 00000000000101010101010101010202020202020202020303030303030303030404040404040404 04050505050505050505060606060606060606070707070707070707080808080808080808090909 0909090909090A0A0A0A0A0A0A0A0A0A0B0B0B0B0B0B0B0B0B0C0C0C0C0C0C0C0C0C0D0D0D0D0D0D 0D0D0D0E0E0E0E0E0E0E0E0E0F0F0F0F0F0F0F0F0F10101010101010101011111111111111111112 12121212121212121313131313131313131414141414 > < 000101020304040506070708090A0A0B0C0D0D0E0F10101112131314151516171818191A1B1B1C1D 1E1E1F20212122232424252626272829292A2B2C2C2D2E2F2F303132323334353536373838393A3A 3B3C3D3D3E3F40404142434344454646474849494A4B4C4C4D4E4E4F505151525354545556575758 595A5A5B5C5D5D5E5F60606162626364656566676868696A6B6B6C6D6E6E6F707171727373747576 76777879797A7B7C7C7D7E7F7F808182828384858586 > 4 %_Br [ 0.0314 0.0196 0.9137 0 1 1 0 2 38.2022 0 %_Bs 0.0118 0.9608 0.9137 0 1 0 0 2 50 75.2809 %_Bs 0.749 0.902 0.0275 0.0039 0.2902 0.0784 0.5255 2 50 100 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (RGB Rainbow) (RGB Rainbow) 0 6 Bd [ < F4F4F4F3F3F3F3F3F3F3F3F3F3F3F3F2F2F2F2F2F2F1F1F1F1F1F0F0F0F0EFEFEFEEEEEEEDEDEDEC ECECEBEBEAEAE9E9E8E8E7E7E6E6E5E4E3E3E2E1E0DFDEDDDBDAD9D8D6D5D4D3D1D0CFCECCCBCAC8 C7C6C5C3C2C1BFBEBDBBBAB9B7B6B5B3B2B0AFAEACABAAA8A7A6A4A3A1A09E9D9B9A989695939290 8F8D8C8A898786858382817F7E7D7B7A79787675747371706F6E6C6B6A686766646362615F5E5C5B 5A585755545351504E4D4C4A494746454342413F3E3D3B3A393736353332312F2E2D2B2A29272625 242321201F1E1E1D1C1B1A191817171615141413121111100F0F0E0D0D0C0B0B0A0A090908070706 06060505040404030303030202020202 > < EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEF EFEFF0F0F0F0F0F0F0F0F1F1F1F1F1F1F1F2F2F2F2F2F2F3F3F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4 F4F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F7F7F7F7F7F7F8F8F8F8F9F9F9F9F9F9F9F9F9F9F9F8 F8F8F7F7F6F6F6F5F5F5F5F4F4F4F3F3F3F3F2F2F2F2F1F1F1F1F0F0F0F0F0EFEFEFEFEFEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFF0F0F0 F0F0F0F1F1F1F1F1F2F2F2F2F2F2F3F3 > 0 0 < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000001010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010202020202020202 02020202020202020202020202020202020202020202020202020202020202020202020202020202 02020202020202020202020202020202 > 1 4 %_Br < D5D5D6D7D8D9DADBDDDEDFDFDFDFDFDEDEDEDDDDDCDCDCDBDBDBDBDADADADADADBDBDBDCDCDDDEDE DFE0E1E2E3E4E6E8E9E9EAEBEAEAE9E8E8E7E7E6E6E5E5E4E4E3E2E1E0E0DFDFDFDFDFDFE0E0E1E2 E3E5E7E8EBEDEFF1F2F4F5F4F3F1EFEDEBEAE8E7E6E5E4E3E2E2E2E2E2E2E2E3E4E5E7E8EAEBEBEB EBEBEAEAEAEAE9E9E9E9E9E8E8E8E8E8E7E7E7E7E8E8E9E9EAEAEBEBEBEAEAEAEAEAEAEAEAEAEBEB ECEDEEEFF1F3F5F6F7F8F9FBFCFCFCF9F7F6F4F2F1F0EEEEEDECECEBEBEBEBECECEDEDEEEEEFEFEF EFEFEFEFEFF0F0F0F1F1F2F3F3F4F5F6F7F8F9FBFCFDFDFEFFFFFFFFFFFDFCFBFBFAF9F8F8F7F7F6 F6F6F5F5F5F5F4F4F4F4F4F4F4F4F4F4 > < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000101010101020202020303030404040405050505060606060707 0707070707070708090A0B0C0E11131517191B1D1F21232527282A2B2D2E3031323334353637383A 3C3D3F4042444547494A4C4E4F5153555658595B5C5E5F606263646667696A6C6D6F707273757677 797A7B7D7E7F80818384858687898A8C8E9091939597989A9C9D9FA0A2A3A4A6A7A8AAABACAEAFB0 B2B4B5B7B9BABCBDBFC1C2C4C5C7C8CACBCCCECFD1D2D3D5D6D7D8DADBDCDDDEDFE1E2E2E3E4E5E6 E7E7E8E9E9EAEAEBEBEBECECECECECED > 0 0 < 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 1 4 %_Br < ECECECECECECECECECECEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAE9E9E9E9E9E8E8E8E8E8E7E7E7E7 E7E6E6E6E6E5E5E5E5E5E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E2E2E2E2E2E2E2E2E2E2E2E2E2 E2E2E2E2E2E2E2E2E2E2E2E2E2E2E3E3E3E4E4E4E5E5E6E6E7E7E8E8E9EAEAEBEBECEDEEEEEFF0F0 F0F0F0F0F0F1F1F1F1F1F1F1F0EFEEEDEDECEBEAEAE9E8E7E7E6E6E5E4E4E3E3E2E1E1E0E0DFDFDF DEDEDDDDDDDCDCDCDBDBDBDBDBDBDBDBDBDCDCDCDDDDDDDEDEDFDFE0E0E1E1E2E3E3E4E5E6E6E7E8 E9E9E9E9E9E9E9E9E9E9E9E9E8E7E6E6E5E4E3E2E2E1E0E0DFDEDEDDDDDCDCDBDBDADAD9D9D9D8D8 D8D7D7D7D7D6D6D6D6D6D5D5D5D5D5D5 > 0 < FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFDFDFDFDFCFCFCFBFBFBFAFAF9F9F9F8F8F7F7F6F6F5F5F4 F4F3F3F2F1F1F0F0EFEEEDEDECEBEAE9E8E7E5E4E3E2E1E0DFDEDDDCDBDADAD9D8D7D6D5D4D3D2D1 D0CFCDCCCBCAC8C7C6C4C3C1BFBDBBB9B7B4B2B0AEACAAA8A6A4A2A09E9C9A98969492908E8C8A89 87858381807E7C7A7977757372706E6C6B6967666462615F5E5C5A595756545351504E4D4B4A4847 46444341403E3D3B3A3837353432312F2E2C2B29282625242221201E1D1C1A191817151413121110 0E0D0C0B0A0908070605040302010000 > 0 < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101 > 1 < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 4 %_Br < 0808090A0A0B0C0C0D0E0E0F101011121313141516171818191A1B1C1D1E1F1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F6061626364666768696A6B6C6D6E6F707172737474757677 78797A7B7C7D7E7F8081838485868788898A8B8C8E8F909192939495969798999A9B9C9D9E9FA0A1 A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BBBCBDBEC0C1C2C3C4C5C7C8C9CACBCC CDCECFD0D1D2D3D4D5D6D6D7D8D9DADBDBDCDDDEDEDFE0E0E1E2E2E3E3E4E4E5E6E6E6E7E7E8E8E9 E9E9EAEAEAEAEBEBEBEBEBEBECECECEC > < 05050505050505040404040404040404030303030303020202020202010101010000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 > < E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEBEBEBEBEBEBECECECECECEDEDEDEDEEEEEEEEEFEF EFF0F0F0F1F1F1F2F2F2F3F3F3F3F4F4F4F5F5F5F5F6F6F6F7F7F7F7F8F8F8F8F9F9F9F9FAFAFAFA FBFBFBFBFBFBFBFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFD FDFDFDFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF > 0 < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 1 0 4 %_Br < 03030303040404040404040404040404040505050505050505050606060606060606060606060606 06060606060606060606060606060505050505040404040404040404040404050505050606060606 06070707070707070707070606060606050505050505050505050505050505060606060607070707 07070707070707060606060605050505050505050505050505060606060707070707070707070707 07060606060505050404040404040404040505060606060707070707070707070707060606060505 04040403020202020203030404050506060607070707070707070707070707060606060505040403 03030303030304050506060607070708 > < F5F5F4F4F4F4F4F3F3F3F2F2F1F1F0F0EFEFEEEDEDECEBEAEAE9E8E7E6E5E4E4E3E2E1E0DFDEDDDB DAD9D8D7D6D5D4D2D1D0CFCECDCBCAC9C8C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A898887 868584838281807F7E7D7C7B7A797877767574737271706F6E6D6B6A696867666564636261605F5E 5D5C5B5A595857565655545251504F4E4D4C4B4A4948464544434241403F3E3D3C3B3A3A39383736 353434333231302F2E2D2B2A2928272524232221201F1E1D1C1B1A19181716151413121211100F0F 0E0D0C0C0B0A0A090808070706060505 > 0.9137 0 1 < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 0 4 %_Br [ 0.0078 0.9529 0 0 1 0.0078 1 2 50 100 %_Bs 0.9569 0.9294 0 0 0 0 1 2 50 80 %_Bs 0.8353 0 0 0 0.0039 1 1 2 50 60 %_Bs 0.9255 0 1 0 0 1 0 2 50 40 %_Bs 0.0314 0.0196 0.9137 0 1 1 0 2 50 20 %_Bs 0.0118 0.9608 0.9137 0 1 0 0 2 50 0 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Steel Bar II) (Steel Bar II) 0 3 Bd [ 0 0 0 < 00000000000000000000000000000000000000000000000101010101010101010101010102020202 02020202020202030303030303040404040404040505050505050606060607070707080808090909 090A0A0A0A0B0B0B0C0C0D0D0D0E0E0F0F0F101011111112121313141515161617171819191A1A1B 1B1C1D1D1E1F202021222323242526272728292A2B2C2D2E2F303132333435363738393A3B3C3D3E 3F404142434445464748494A4C4D4E4F50525354565758595B5C5D5F606263656668696B6C6E7071 737576787A7C7D7F81838587898B8D8F919395979A9C9EA0A3A5A7AAACAFB1B4B7B9BCBFC2C5C7CA D0D6DBE0E4E8ECF0F2F4F6F7F9FBFDFF > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 4 %_Br 0 0 0 < FFFDFBF9F7F6F4F2F0ECE8E4E0DBD6D0CAC7C5C2BFBCB9B7B4B1AFACAAA7A5A3A09E9C9A97959391 8F8D8B89878583817F7D7C7A7876757371706E6C6B696866656362605F5D5C5B5958575654535250 4F4E4D4C4A494847464544434241403F3E3D3C3B3A393837363534333231302F2E2D2C2B2A292827 272625242323222120201F1E1D1D1C1B1B1A1A191918171716161515141313121211111110100F0F 0F0E0E0D0D0D0C0C0B0B0B0A0A0A0A09090909080808070707070606060605050505050504040404 04040403030303030302020202020202020202020101010101010101010101010100000000000000 00000000000000000000000000000000 > < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 4 %_Br [ 0 0 0 1 0 0 0 2 50 100 %_Bs 0 0 0 0 1 1 1 2 50 40.45 %_Bs 0 0 0 1 0 0 0 2 50 0 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Sunrise) (Sunrise) 0 6 Bd [ < EEEDEDEDECECECECECECECECEDEDEDEDEEEEEEEFEFF0F0F1F1F2F2F2F3F3F4F4F4F5F5F5F6F6F6F7 F7F7F7F7F5F4F2F1F0EFEDEDECEAEAE9E8E7E7E6E6E5E4E4E4E3E3E3E3E3E3E3E3E3E3E3E3E3E3E4 E4E4E4E4E5E5E5E5E5E5E5E5E5E5E5E5E5E5E4E5E5E4E4E4E4E4E4E3E3E3E2E1E1E0E0DFDEDEDDDC DCDBDADAD9D8D7D7D6D5D5D4D3D3D2D2D2D2D2D2D1D1D1D1D1D1D0D1D1D0D1D1D1D1 > < 35343332312F2E2C2B2928262422211F1D1B1917151311100F0E0D0C0B0A09080807060505040303 02010100000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000 > 1 < 131211100F0F0E0D0C0C0B0B0A090908070706050504040303030302020202020101010101010100 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000 > < 00000101010202020303030404040505050606060707070808080909090A0A0A0B0B0B0C0C0C0D0D 0D0E0E0E0F0F0F1010101111111212121313131414141515151616161717171818181919191A1A1A 1B1B1B1C1C1C1D1D1D1E1E1E1F1F1F20202021212122222223232324242425252526262627272728 28282929292A2A2A2B2B2B2C2C2C2D2D2D2E2E2E2F2F2F3030303131313232323333 > < 666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D 8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5 B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDD DEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 0 4 %_Br < 080809090A0A0A0B0C0C0D0D0E0E0F10101112131415161718191A1B1C1D1E1F2021222324252627 2828292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F4041424344454648484A4B4C4D4E4F 505152535455565758595A5A5C5D5E5F5F616163636466666868696B6B6D6D6E6F70717273747576 7778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E 9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C5C5C7 C8C9CACBCDCDCED0D0D2D3D3D5D5D7D7D8D9DADBDCDCDDDEDFE0E0E1E2E3E3E4E4E5E6E6E7E7E8E8 E9E9EAEAEAEBEBEBECECECECEDEDEDEE > < 05050506060606060706070707070708080808080808080808080908090809090909090909090909 090909090909090909080909090909090A0A0A0A0A0A0A0A0A0A0B0A0B0A0B0B0B0B0B0B0C0B0C0B 0C0C0C0C0C0D0D0D0D0D0E0E0E0E0E0F0F0F100F1010101110111211121112131213121313131313 13141314131414141414141514141414151414141515151515161616161617171717171818181918 191A191A191A1B1A1B1A1B1C1B1C1C1C1D1D1D1D1E1E1E1F1E1F201F201F20212021212122212221 2222222221222322222222232222222223222222222322232223242425242627262727282A292A2A 2B2D2C2E2D2F30303131323433353435 > < E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEBEBEBECECEDEDEDEEEEEFEFF0F0F1F2F2F3F3F4F5F5F6F7 F8F9F9FAFAFBFCFCFCFCFCFBFBFAFAF9F9F9F8F8F7F7F7F6F6F6F5F5F5F5F5F4F4F4F4F4F3F3F3F3 F3F3F3F3F3F3F3F3F3F3F4F4F4F4F4F4F5F5F5F5F6F6F6F7F7F8F8F8F9F9F9FAFAFAFAFAFBFBFBFB FBFBFCFCFCFCFDFDFDFDFDFEFEFEFEFEFFFFFFFFFEFEFEFDFDFDFDFDFCFCFCFCFCFCFCFBFBFBFBFC FCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF > < 00000000000000000000000000000000000000000000000000000000000001010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010202020202020202020202020202 02020202020203030303030303030303030303030303030303030303030304040404040404040404 04040404040404040404040504050405050505050505050505050505050505060505050606060606 06070607070707070707070808080808080808080808080909090A090A0A0A0B0B0B0B0B0C0C0C0C 0D0D0D0E0E0E0F0F0F0F101111121213 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFEFDFDFCFBFBFAFAF9F8F8F7F7F6F5F5F4F4F3F2F2F1F1F0EFEFEEEEEDECECEBEBEAE9E9E8E8 E7E6E6E5E5E4E3E3E2E2E1E0E0DFDFDEDDDDDCDCDBDADAD9D9D8D7D7D6D6D5D4D4D3D3D2D1D1D0D0 CFCECECDCDCCCBCBCACAC9C8C8C7C7C6C5C5C4C4C3C2C2C1C1C0BFBFBEBEBDBCBCBBBBBAB9B9B8B8 B7B6B6B5B5B4B3B3B2B2B1B0B0AFAFAEADADACACABAAAAA9A9A8A7A7A6A6A5A4A4A3A3A2A1A1A0A0 9F9E9E9D9D9C9B9B9A9A999898979796959594949392929191908F8F8E8E8D8C8C8B8B8A89898888 878686858584838382828180807F7F7E7D7D7C7C7B7A7A7979787777767675747473737271717070 6F6E6E6D6D6C6B6B6A6A696868676766 > 0 4 %_Br < 07070707070707070606060605050504040404040404040405050606060607070707070707070707 07060606060505040404030202020203030404050506060607070707070707070707070707060606 06050504040303030303030304050506060607070708 > < 64636261605F5E5D5C5B5A595857565655545251504F4E4D4C4B4A4948464544434241403F3E3D3C 3B3A3A393837363534343331302F2E2D2B2A2928272524232221201F1E1D1C1B1A19181716151413 121211100F0F0E0D0C0C0B0A0A090808070706060505 > < F0F0F1F1F1F1F2F2F2F3F3F3F4F4F5F5F5F6F6F6F7F7F8F8F8F7F7F7F6F6F6F6F5F5F5F5F4F4F4F4 F3F3F2F2F2F1F1F1F0F0F0EFEFEFEFEFEFEFEEEEEEEEEEEEEDEDEDEDECECECECECEBEBEBEBEAEAEA E9E9E9E9E8E8E8E8E8E8E8E8E8E8E8E8E8E9E9E9E9E9 > < 01010101010101010100000000000000000000000000000000010101010101010101010101010101 01010101010000000000000000000000000000000000010101010101010101010101010100000000 00000000000000000000000000000000000000000000 > 1 < 999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0 C1C2C3C4C5C6C7C8C9CACBCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9 EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 0 4 %_Br < E4E5E5E6E7E7E8E9EAEAEBECEBEBEBEBEAEAEAE9E9E8E8E7E7E6E5E5E4E3E3E2E1E0DFDFDEDDDCDB DADAD8D7D6D5D4D3D2D1D0CFCFCECDCCCBCBCAC9C8C7C6C5C4C3C2C1C0BFBEBEBDBCBAB9B8B7B6B5 B3B2B1AFAEADACABAAA9A9A7A6A5A4A3A2A19F9E9D9C9B9998979796949392908F8E8D8B8A898887 878584838281807F7E7C7B7A7A79787675747371706F6F6D6C6B696867666563636261605F5D5C5B 5B5A5957565554525151504F4D4C4B4949484746454443424241403F3E3D3D3C3B3A393838383736 3635343434333232313130302F2E2E2E2D2C2C2C2B2A292929282727262625242423232221212120 1F1E1E1E1D1C1B1B1B1A19191818181716151515141313121212111010100F0F0E0E0E0D0D0D0C0B 0B0B0A0A0A0A0909090808080808080700 > < 2323222221212120201F1F1F1F1F1E1E1E1E1E1F1F1F1F1F1F1F1F1F1F2020202020212121212222 22222323232424242525252525252626262626262626262627272727272728282828282829292929 2A2A2A2A2B2B2B2B2C2C2C2C2C2C2D2D2D2D2E2E2E2E2F2F2F2F2F30303030313131313132323232 32333333333434343535353535363636363737373738383838393939393A3A3A3A3A3B3B3B3B3C3C 3C3C3D3D3D3D3E3E3E3E3F3F3F404040404041414242424343434344444545454546464747474849 494A4A4A4B4B4C4D4D4D4E4E4F4F4F50505151515252535353535454555555565657575758585859 595A5A5A5A5B5B5B5C5C5C5C5D5D5D5E5E5E5E5F5F60606060606061616161616162626262626262 6263636363636363636464646464646400 > 0 < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000101010101010202020202030303030303030404040404040505 05050505060606060607070707070808080809090909090A0A0A0A0B0B0B0B0C0C0C0C0D0D0D0D0D 0D0E0E0E0E0E0E0F0F0F0F0F0F0F1010101010111111111111121212121213131313131313141414 14141415151515151515161616161616161717171717171616161616161616161616161515151414 131312121211111010100F0F0E0E0E0E0D0D0C0C0C0C0B0B0B0B0A0A090909090808080807070707 06060606050505050404040404030303030303020202020202020101010101010101010101010101 01010101010101010101010101010101FF > < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 2828292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F40414243444545464748494A4B4C4D 4E4F50515253545556575758595A5B5C5D5E5F60616263646566666768696A6B6C6D6E6F70717273 737475767778797A7B7C7D7E7E7F80818283848586878788898A8B8C8D8E8F909091929394959697 9798999A9B9C9D9E9F9FA0A1A2A3A4A5A5A6A7A8A9AAABACACADAEAFB0B1B1B2B3B4B5B6B7B7B8B9 BABBBCBCBDBEBFC0C1C1C2C3C4C5C5C6C7C8C9C9CACBCCCDCDCECFD0D1D1D2D3D4D5D5D6D7D8D8D9 DADBDCDCDDDEDFDFE0E1E2E2E3E4E4E5E6E7E7E8E9EAEAEBECECEDEEEEEFF0F0F1F2F2F3F4F4F5F6 F6F7F8F8F9F9FAFBFBFCFCFDFDFEFEFFFF > 0.6 < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBABAB9B8B7B6B5B4B3B2 B1B0AFAEADACABAAA9A8A8A7A6A5A4A3A2A1A09F9E9D9C9B9A99999897969594939291908F8E8D8C 8C8B8A89888786858483828181807F7E7D7C7B7A79787877767574737271706F6F6E6D6C6B6A6968 686766656463626160605F5E5D5C5B5A5A59585756555453535251504F4E4E4D4C4B4A4948484746 454443434241403F3E3E3D3C3B3A3A3938373636353433323231302F2E2E2D2C2B2A2A2928272726 25242323222120201F1E1D1D1C1B1B1A19181817161515141313121111100F0F0E0D0D0C0B0B0A09 0908070706060504040303020201010000 > 4 %_Br < EFEFEFEFEFEFEFEFEEEEEDEDECECEBEBEBEBECECEDEEEEF0F1F2F4F6F7F9FCFCFCFBF9F8F7F6F5F3 F1EFEEEDECEBEBEAEAEAEAEAEAEAEAEBEBEBEAEAE9E9E8E8E7E7E7E7E8E8E8E8E8E9E9E9E9E9EAEA EAEAEBEBEBEBEBEAE8E7E5E4E3E3E2E2E2E2E2E2E3E4 > < B9B7B5B4B2B0AFAEACABAAA8A7A6A4A3A2A09F9D9C9A9897959391908E8C8A89878685848381807F 7E7D7B7A797776757372706D6C6A696766646362605F5E5C5B5958565553514F4E4C4A4947454442 403F3D3C3A3837363534333231302E2D2B2A28272523 > 0 0 0 < 333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A 5B5C5D5E5F6061626364656768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F80818283 8485868788898A8B8C8D8E8F90919293949596979899 > 1 4 %_Br [ 0.8196 0 1 0 0.2 1 0 2 50 100 %_Bs 0.9333 0.2078 1 0.0745 0 0.4 0 2 50 57.3034 %_Bs 0.0314 0.0196 0.9137 0 1 1 0 2 50 55.618 %_Bs 0.0275 0.3922 0.9412 0.0039 1 0.6 0 2 50 46.6292 %_Bs 0.8941 0.1373 0 0 0 0.6 1 2 45 28.0899 %_Bs 0.9373 0.7255 0 0 0 0.2 1 2 50 0 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Unnamed gradient 13) (Unnamed gradient 13) 1 2 Bd [ 0 0 0 < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000001010101 01010101010101010101010101010101010000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000FF > 1 < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9 D9D8D7D6D5D4D3D2D1D0CFCFCECDCCCBCAC9C8C7C7C6C5C4C3C2C1C0C0BFBEBDBCBBBABAB9B8B7B6 B5B5B4B3B2B1B0B0AFAEADACACABAAA9A8A7A7A6A5A4A3A3A2A1A0A09F9E9D9C9C9B9A9999989796 9695949393929190908F8E8D8D8C8B8A8A89888887868585848383828180807F7E7E7D7C7C7B7A7A 7978787776767574747372727170706F6E6E6D6C6C6B6A6A69696867676665656464636262616160 5F5F5E5E5D5C5C5B5B5A5A59585857575656555454535352525151504F4F4E4E4D4D4C4C4B4B4A4A 49494848474746454544444343424242414140403F3F3E3E3D3D3C3C3B3B3A3A3939393838373736 3635353534343333323232313130302F2F2F2E2E2D2D2D2C2C2B2B2B2A2A29292928282827272626 2625252524242423232222222121212020201F1F1F1E1E1E1D1D1D1C1C1C1C1B1B1B1A1A1A191919 19181818171717171616161515151514141414131313131212121211111111101010100F0F0F0F0F 0E0E0E0E0D0D0D0D0D0C0C0C0C0C0B0B0B0B0B0A0A0A0A0A0A090909090908080808080808070707 07070706060606060606050505050505050504040404040404040403030303030303030303030202 02020202020202020202010101010101010101010101010101010101010100000000000000000000 000000000000000000000000000000000000 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9 D9D8D7D6D5D4D3D2D1D0CFCFCECDCCCBCAC9C8C7C7C6C5C4C3C2C1C0C0BFBEBDBCBBBABAB9B8B7B6 B5B5B4B3B2B1B0B0AFAEADACACABAAA9A8A7A7A6A5A4A3A3A2A1A0A09F9E9D9C9C9B9A9999989796 9695949393929190908F8E8D8D8C8B8A8A89888887868585848383828180807F7E7E7D7C7C7B7A7A 7978787776767574747372727170706F6E6E6D6C6C6B6A6A69696867676665656464636262616160 5F5F5E5E5D5C5C5B5B5A5A59585857575656555454535352525151504F4F4E4E4D4D4C4C4B4B4A4A 49494848474746454544444343424242414140403F3F3E3E3D3D3C3C3B3B3A3A3939393838373736 3635353534343333323232313130302F2F2F2E2E2D2D2D2C2C2B2B2B2A2A29292928282827272626 2625252524242423232222222121212020201F1F1F1E1E1E1D1D1D1C1C1C1C1B1B1B1A1A1A191919 19181818171717171616161515151514141414131313131212121211111111101010100F0F0F0F0F 0E0E0E0E0D0D0D0D0D0C0C0C0C0C0B0B0B0B0B0A0A0A0A0A0A090909090908080808080808070707 07070706060606060606050505050505050504040404040404040403030303030303030303030202 02020202020202020202010101010101010101010101010101010101010100000000000000000000 000000000000000000000000000000000000 > 4 %_Br [ 0 0 0 0 1 1 1 2 28 0 %_Bs 0.0118 0.9608 0.9137 0 1 0 0 2 50 100 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Unnamed gradient 2) (Unnamed gradient 2) 1 6 Bd [ < 03030303040404040404040404040404040505050505050505050606060606060606060606060606 06060606060606060606060606060505050505040404040404040404040404050505050606060606 06070707070707070707070606060606050505050505050505050505050505060606060607070707 07070707070707060606060605050505050505050505050505060606060707070707070707070707 07060606060505050404040404040404040505060606060707070707070707070707060606060505 04040403020202020203030404050506060607070707070707070707070707060606060505040403 03030303030304050506060607070708 > < F5F5F4F4F4F4F4F3F3F3F2F2F1F1F0F0EFEFEEEDEDECEBEAEAE9E8E7E6E5E4E4E3E2E1E0DFDEDDDB DAD9D8D7D6D5D4D2D1D0CFCECDCBCAC9C8C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A898887 868584838281807F7E7D7C7B7A797877767574737271706F6E6D6B6A696867666564636261605F5E 5D5C5B5A595857565655545251504F4E4D4C4B4A4948464544434241403F3E3D3C3B3A3A39383736 353434333231302F2E2D2B2A2928272524232221201F1E1D1C1B1A19181716151413121211100F0F 0E0D0C0C0B0A0A090808070706060505 > 0.9137 0 1 < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 0 4 %_Br < 0808090A0A0B0C0C0D0E0E0F101011121313141516171818191A1B1C1D1E1F1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F6061626364666768696A6B6C6D6E6F707172737474757677 78797A7B7C7D7E7F8081838485868788898A8B8C8E8F909192939495969798999A9B9C9D9E9FA0A1 A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BBBCBDBEC0C1C2C3C4C5C7C8C9CACBCC CDCECFD0D1D2D3D4D5D6D6D7D8D9DADBDBDCDDDEDEDFE0E0E1E2E2E3E3E4E4E5E6E6E6E7E7E8E8E9 E9E9EAEAEAEAEBEBEBEBEBEBECECECEC > < 05050505050505040404040404040404030303030303020202020202010101010000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 > < E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEBEBEBEBEBEBECECECECECEDEDEDEDEEEEEEEEEFEF EFF0F0F0F1F1F1F2F2F2F3F3F3F3F4F4F4F5F5F5F5F6F6F6F7F7F7F7F8F8F8F8F9F9F9F9FAFAFAFA FBFBFBFBFBFBFBFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFD FDFDFDFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF > 0 < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 1 0 4 %_Br < ECECECECECECECECECECEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAE9E9E9E9E9E8E8E8E8E8E7E7E7E7 E7E6E6E6E6E5E5E5E5E5E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E2E2E2E2E2E2E2E2E2E2E2E2E2 E2E2E2E2E2E2E2E2E2E2E2E2E2E2E3E3E3E4E4E4E5E5E6E6E7E7E8E8E9EAEAEBEBECEDEEEEEFF0F0 F0F0F0F0F0F1F1F1F1F1F1F1F0EFEEEDEDECEBEAEAE9E8E7E7E6E6E5E4E4E3E3E2E1E1E0E0DFDFDF DEDEDDDDDDDCDCDCDBDBDBDBDBDBDBDBDBDCDCDCDDDDDDDEDEDFDFE0E0E1E1E2E3E3E4E5E6E6E7E8 E9E9E9E9E9E9E9E9E9E9E9E9E8E7E6E6E5E4E3E2E2E1E0E0DFDEDEDDDDDCDCDBDBDADAD9D9D9D8D8 D8D7D7D7D7D6D6D6D6D6D5D5D5D5D5D5 > 0 < FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFDFDFDFDFCFCFCFBFBFBFAFAF9F9F9F8F8F7F7F6F6F5F5F4 F4F3F3F2F1F1F0F0EFEEEDEDECEBEAE9E8E7E5E4E3E2E1E0DFDEDDDCDBDADAD9D8D7D6D5D4D3D2D1 D0CFCDCCCBCAC8C7C6C4C3C1BFBDBBB9B7B4B2B0AEACAAA8A6A4A2A09E9C9A98969492908E8C8A89 87858381807E7C7A7977757372706E6C6B6967666462615F5E5C5A595756545351504E4D4B4A4847 46444341403E3D3B3A3837353432312F2E2C2B29282625242221201E1D1C1A191817151413121110 0E0D0C0B0A0908070605040302010000 > 0 < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101 > 1 < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > 4 %_Br < D5D5D6D7D8D9DADBDDDEDFDFDFDFDFDEDEDEDDDDDCDCDCDBDBDBDBDADADADADADBDBDBDCDCDDDEDE DFE0E1E2E3E4E6E8E9E9EAEBEAEAE9E8E8E7E7E6E6E5E5E4E4E3E2E1E0E0DFDFDFDFDFDFE0E0E1E2 E3E5E7E8EBEDEFF1F2F4F5F4F3F1EFEDEBEAE8E7E6E5E4E3E2E2E2E2E2E2E2E3E4E5E7E8EAEBEBEB EBEBEAEAEAEAE9E9E9E9E9E8E8E8E8E8E7E7E7E7E8E8E9E9EAEAEBEBEBEAEAEAEAEAEAEAEAEAEBEB ECEDEEEFF1F3F5F6F7F8F9FBFCFCFCF9F7F6F4F2F1F0EEEEEDECECEBEBEBEBECECEDEDEEEEEFEFEF EFEFEFEFEFF0F0F0F1F1F2F3F3F4F5F6F7F8F9FBFCFDFDFEFFFFFFFFFFFDFCFBFBFAF9F8F8F7F7F6 F6F6F5F5F5F5F4F4F4F4F4F4F4F4F4F4 > < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000101010101020202020303030404040405050505060606060707 0707070707070708090A0B0C0E11131517191B1D1F21232527282A2B2D2E3031323334353637383A 3C3D3F4042444547494A4C4E4F5153555658595B5C5E5F606263646667696A6C6D6F707273757677 797A7B7D7E7F80818384858687898A8C8E9091939597989A9C9D9FA0A2A3A4A6A7A8AAABACAEAFB0 B2B4B5B7B9BABCBDBFC1C2C4C5C7C8CACBCCCECFD1D2D3D5D6D7D8DADBDCDDDEDFE1E2E2E3E4E5E6 E7E7E8E9E9EAEAEBEBEBECECECECECED > 0 0 < 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 1 4 %_Br < F4F4F4F3F3F3F3F3F3F3F3F3F3F3F3F2F2F2F2F2F2F1F1F1F1F1F0F0F0F0EFEFEFEEEEEEEDEDEDEC ECECEBEBEAEAE9E9E8E8E7E7E6E6E5E4E3E3E2E1E0DFDEDDDBDAD9D8D6D5D4D3D1D0CFCECCCBCAC8 C7C6C5C3C2C1BFBEBDBBBAB9B7B6B5B3B2B0AFAEACABAAA8A7A6A4A3A1A09E9D9B9A989695939290 8F8D8C8A898786858382817F7E7D7B7A79787675747371706F6E6C6B6A686766646362615F5E5C5B 5A585755545351504E4D4C4A494746454342413F3E3D3B3A393736353332312F2E2D2B2A29272625 242321201F1E1E1D1C1B1A191817171615141413121111100F0F0E0D0D0C0B0B0A0A090908070706 06060505040404030303030202020202 > < EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEF EFEFF0F0F0F0F0F0F0F0F1F1F1F1F1F1F1F2F2F2F2F2F2F3F3F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4 F4F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F7F7F7F7F7F7F8F8F8F8F9F9F9F9F9F9F9F9F9F9F9F8 F8F8F7F7F6F6F6F5F5F5F5F4F4F4F3F3F3F3F2F2F2F2F1F1F1F1F0F0F0F0F0EFEFEFEFEFEEEEEEEE EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFF0F0F0 F0F0F0F1F1F1F1F1F2F2F2F2F2F2F3F3 > 0 0 < 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627 28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F 505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677 78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7 C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF > < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000001010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101010101010101010101010101010101010202020202020202 02020202020202020202020202020202020202020202020202020202020202020202020202020202 02020202020202020202020202020202 > 1 4 %_Br [ 0.0118 0.9608 0.9137 0 1 0 0 2 50 0 %_Bs 0.0314 0.0196 0.9137 0 1 1 0 2 50 20 %_Bs 0.9255 0 1 0 0 1 0 2 50 40 %_Bs 0.8353 0 0 0 0.0039 1 1 2 50 60 %_Bs 0.9569 0.9294 0 0 0 0 1 2 50 80 %_Bs 0.0078 0.9529 0 0 1 0.0078 1 2 50 100 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (Unnamed gradient 37) (Unnamed gradient 37) 1 2 Bd [ < C4C4C5C4C5C5C5C6C6C6C6C6C7C6C7C7C6C6C6C6C5C5C5C4C4C4C3C3C2C2C2C1C1C0C0BFBFBEBDBD BCBCBBBABAB9B9B8B7B7B5B5B4B2B2B1B1AFAFAEACACABABAAA9A8A7A7A6A6A4A3A3A2A2A1A0A09E 9F9E9E9C9B9B9A9A9998989797959594939392929191908E8E8D8D8C8C8B89898888878785848483 8281817F7E7E7D7C7B7B797977767674737272706E6E6D6C6A6A6968666564626260605E5D5C5A59 575756565555545453525150504F4F4E4E4D4D4C4B4B4A4A49484847464645454444434343424242 424141404040403F3F3F3F3E3E3E3D3D3D3D3C3C3B3B3B3B3A3A3A3A393938383838373736363636 3535353534343333333332323232323131303130302F2F2F2F2E2E2E2D2D2D2D2C2C2C2B2B2A2A2A 2A2A > < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000101010101010101020303 03040505060709090A0B0D0E0E101112121415161618191B1C1C1D1F20202123242426272828292B 2C2C2D2F3030313233333536373738393A3A3B3D3E3E3F4041414243444546474848494A4B4B4C4D 4E4E5051515254555658595B5A5C5D5E5F61626264666767696A6B6C6E6F7071737374767878797B 7B7D7E7F80828383858686888A8A8B8D8D8E909192939595969798999B9B9C9D9E9FA0A0A2A3A4A5 A6A6A8A9A9AAACACADADAFB0B0B1B2B2B4B5B5B6B6B8B9B9BABBBCBDBDBFBFC0C0C2C3C3C4C4C6C6 C7C7 > < 0202020303030404050505060607070808090A0A0B0B0C0D0D0E0E0F101011121313141415161717 18181A1A1B1C1C1E1E1F2021222324252526262728292A2B2C2D2E2F30313233343436373738393A 3B3C3D3E3F40404242434243454546474849494A4B4C4D4D4E4F5050515253545454555556575858 595A5B5B5C5D5E5F5F616160616263636465666666686869696B6A6B6B6C6D6D6E6F707071727372 727475767778797A7C7D7E7D7F808183848586878988898B8C8D8F9091929494959798999A9C9D9F 9FA0A2A3A5A6A8A9A9AAACAEAFB1B2B2B4B5B7B8BABBBBBDBEC0C1C3C4C4C6C7C9CACBCBCDCED0D1 D3D3D4D5D7D8D8DADBDDDEDEDFE1E2E4E3E5E6E7E7E9EAEBEBECEDEEEEEEEFEFF0F0F0F1F1F2F2F2 F2F3 > < 00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000101010101010102020202020303030304040404050505050606060607070708080909090A 0A0A0B0B0C0C0D0D0E0E0F0F101011121213131415151617181819191A1B1B1C1D1E1E1F20212222 23242424242424242424242424242424242424242424242423242323232323232322222121212120 201F1F1F1F1E1E1D1D1D1D1C1B1B1B1B1A1A19191919181817171717161616161515151514141414 13131313121212121111111110101010100F0F0F0F0E0E0E0E0D0D0D0D0D0D0D0C0C0C0C0C0B0B0B 0B0B > < 33343435353637373838393A3A3B3B3C3D3D3E3E3F40404141424343444445464647474848494A4A 4B4B4C4D4D4E4E4F50505151525353545455555657575858595A5A5B5B5C5C5D5E5E5F5F60616162 626363646565666667686869696A6A6B6C6C6D6D6E6E6F7070717172727374747575767677787879 797A7A7B7C7C7D7D7E7E7F7F80818182828383848585868687878888898A8A8B8B8C8C8D8D8E8F8F 909091919292939394959596969797989899999A9B9B9C9C9D9D9E9E9F9FA0A0A1A2A2A3A3A4A4A5 A5A6A6A7A7A8A8A9A9AAAAABACACADADAEAEAFAFB0B0B1B1B2B2B3B3B4B4B5B5B6B6B7B7B8B8B9B9 BABABBBBBCBCBDBDBEBEBFBFC0C0C0C1C1C2C2C3C3C4C4C5C5C6C6C6C7C7C8C8C9C9C9CACACBCBCB CCCC > < FFFEFDFDFCFBFAF9F9F8F7F6F5F5F4F3F2F1F1F0EFEEEDEDECEBEAE9E9E8E7E6E6E5E4E3E2E2E1E0 DFDEDEDDDCDBDADAD9D8D7D7D6D5D4D3D3D2D1D0CFCFCECDCCCCCBCAC9C8C8C7C6C5C5C4C3C2C1C1 C0BFBEBEBDBCBBBBBAB9B8B7B7B6B5B4B4B3B2B1B1B0AFAEADADACABAAAAA9A8A7A7A6A5A4A4A3A2 A1A1A09F9E9E9D9C9B9B9A999898979695959493929291908F8F8E8D8C8C8B8A8989888786868584 8383828181807F7E7E7D7C7B7B7A79797877767675747373727171706F6E6E6D6C6C6B6A69696867 67666565646362626160605F5E5E5D5C5C5B5A5959585757565555545353525151504F4F4E4D4D4C 4B4B4A494948474746464544444342424140403F3F3E3D3D3C3C3B3A3A3939383837363635353434 3333 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1 B0AFAEADACABAAA9A8A7A7A6A5A4A3A2A1A09F9E9D9C9B9A99989796959493929191908F8E8D8C8B 8A89888786858483828180807F7E7D7C7B7A79787776757473727271706F6E6D6C6B6A6968676666 6564636261605F5E5D5C5B5B5A59585756555453525251504F4E4D4C4B4A49494847464544434241 41403F3E3D3C3B3A3A39383736353434333231302F2E2E2D2C2B2A2928282726252423232221201F 1E1E1D1C1B1A1A1918171616151413121211100F0F0E0D0C0C0B0A09090807060605040403020201 0100 > 4 %_Br [ 0.7686 0 0.0078 0 0.2 1 1 2 46.6292 0.5618 %_Bs 0.1647 0.7804 0.9529 0.0431 0.8 0.2 0 2 50 100 %_Bs BD %AI5_EndGradient %AI5_BeginGradient: (White, Black) (White, Black) 0 2 Bd [ 0 0 0 < 00000000000000000000000000000000000000000000000101010101010101010101010102020202 02020202020202030303030303040404040404040505050505050606060607070707080808090909 090A0A0A0A0B0B0B0C0C0D0D0D0E0E0F0F0F101011111112121313141515161617171819191A1A1B 1B1C1D1D1E1F202021222323242526272728292A2B2C2D2E2F303132333435363738393A3B3C3D3E 3F404142434445464748494A4C4D4E4F50525354565758595B5C5D5F606263656668696B6C6E7071 737576787A7C7D7F81838587898B8D8F919395979A9C9EA0A3A5A7AAACAFB1B4B7B9BCBFC2C5C7CA D0D6DBE0E4E8ECF0F2F4F6F7F9FBFDFF > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > < FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8 D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0 AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988 87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160 5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938 37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110 0F0E0D0C0B0A09080706050403020100 > 4 %_Br [ 0 0 0 1 0 0 0 2 50 100 %_Bs 0 0 0 0 1 1 1 2 50 0 %_Bs BD %AI5_EndGradient %AI5_End_NonPrinting-- %AI5_Begin_NonPrinting Np %AI3_BeginPattern: (Azure Rings) (Azure Rings) 22.5 22.5 58.5 58.5 [ %AI3_Tile (0 O 0 R 0 0 1 Xa 0 0 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1.75 w 4 M []0 d 0 XR 40.5 58.5 m 40.5 48.5586 32.4409 40.5 22.5 40.5 c 12.5591 40.5 4.5 48.5586 4.5 58.5 c 4.5 68.4414 12.5591 76.5 22.5 76.5 c 32.4409 76.5 40.5 68.4414 40.5 58.5 c s 40.5 22.5 m 40.5 12.5586 32.4409 4.5 22.5 4.5 c 12.5591 4.5 4.5 12.5586 4.5 22.5 c 4.5 32.4414 12.5591 40.5 22.5 40.5 c 32.4409 40.5 40.5 32.4414 40.5 22.5 c s 40.5 40.5 m 40.5 30.5586 32.4409 22.5 22.5 22.5 c 12.5591 22.5 4.5 30.5586 4.5 40.5 c 4.5 50.4414 12.5591 58.5 22.5 58.5 c 32.4409 58.5 40.5 50.4414 40.5 40.5 c s 58.5 58.5 m 58.5 48.5586 50.4409 40.5 40.5 40.5 c 30.5591 40.5 22.5 48.5586 22.5 58.5 c 22.5 68.4414 30.5591 76.5 40.5 76.5 c 50.4409 76.5 58.5 68.4414 58.5 58.5 c s 58.5 22.5 m 58.5 12.5586 50.4409 4.5 40.5 4.5 c 30.5591 4.5 22.5 12.5586 22.5 22.5 c 22.5 32.4414 30.5591 40.5 40.5 40.5 c 50.4409 40.5 58.5 32.4414 58.5 22.5 c s 58.5 40.5 m 58.5 30.5586 50.4409 22.5 40.5 22.5 c 30.5591 22.5 22.5 30.5586 22.5 40.5 c 22.5 50.4414 30.5591 58.5 40.5 58.5 c 50.4409 58.5 58.5 50.4414 58.5 40.5 c s 76.5 58.5 m 76.5 48.5586 68.4409 40.5 58.5 40.5 c 48.5591 40.5 40.5 48.5586 40.5 58.5 c 40.5 68.4414 48.5591 76.5 58.5 76.5 c 68.4409 76.5 76.5 68.4414 76.5 58.5 c s 76.5 22.5 m 76.5 12.5586 68.4409 4.5 58.5 4.5 c 48.5591 4.5 40.5 12.5586 40.5 22.5 c 40.5 32.4414 48.5591 40.5 58.5 40.5 c 68.4409 40.5 76.5 32.4414 76.5 22.5 c s 76.5 40.5 m 76.5 30.5586 68.4409 22.5 58.5 22.5 c 48.5591 22.5 40.5 30.5586 40.5 40.5 c 40.5 50.4414 48.5591 58.5 58.5 58.5 c 68.4409 58.5 76.5 50.4414 76.5 40.5 c s %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Blue Tablecloth) (Blue Tablecloth) 0 0 12 12 [ %AI3_Tile (0 O 0 R 0 0 1 Xa 0 0 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 6 6 m 0 6 L 0 12 L 6 12 L 6 6 L f %AI6_EndPatternLayer ) & (0 O 0 R 0.6 0.6 1 Xa 0.6 0.6 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 12 6 m 6 6 L 6 12 L 12 12 L 12 6 L f %AI6_EndPatternLayer ) & (0 O 0 R 1 1 1 Xa 1 1 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 12 0 m 6 0 L 6 6 L 12 6 L 12 0 L f %AI6_EndPatternLayer ) & (0 O 0 R 0.6 0.6 1 Xa 0.6 0.6 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 6 0 m 0 0 L 0 6 L 6 6 L 6 0 L f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Camouflage) (Camouflage) 1 1 73 73 [ %AI3_Tile (0 O 0 R 0.3922 0.6039 0.1451 Xa 0.3922 0.6039 0.1451 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 1 73 m 1 1 L 73 1 L 73 73 L 1 73 L f %AI6_EndPatternLayer ) & (0 O 0 R 0.4039 0.4 0.0745 Xa 0.4039 0.4 0.0745 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 18.5449 73 m 18.5449 1 L 46.7832 1 L 46.7832 73 L 18.5449 73 L f %AI6_EndPatternLayer ) & (0 O 0 R 0.8 0.8 0.1059 Xa 0.8 0.8 0.1059 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 11.9512 1 m 11.9512 4.7129 9.2314 2.8813 9.2314 6.5938 c 9.2314 10.2334 4.25 10.2334 4.25 13.8735 c 4.25 17.4858 10.0313 17.4858 10.0313 21.0991 c 10.0313 24.832 10.208 24.832 10.208 28.5654 c 10.208 32.3071 5.5205 32.3071 5.5205 36.0469 c 5.5205 39.7021 11.8838 39.7021 11.8838 43.356 c 11.8838 47.0566 7.4609 47.0566 7.4609 50.7568 c 7.4609 54.4043 5.7959 54.4043 5.7959 58.0542 c 5.7959 61.7686 4.6631 61.7686 4.6631 65.4805 c 4.6631 69.1636 11.9512 69.3184 11.9512 73 C 27.9268 73 L 27.9268 69.3184 22.0635 69.1636 22.0635 65.4805 c 22.0635 61.7686 28.6631 61.7686 28.6631 58.0542 c 28.6631 54.4043 25.1553 54.4043 25.1553 50.7568 c 25.1553 47.0566 28.8145 47.0566 28.8145 43.356 c 28.8145 39.7021 22.1191 39.7021 22.1191 36.0469 c 22.1191 32.3071 26.3945 32.3071 26.3945 28.5654 c 26.3945 24.832 24.4248 24.832 24.4248 21.0991 c 24.4248 17.4858 20.3838 17.4858 20.3838 13.8735 c 20.3838 10.2334 24.6055 10.2334 24.6055 6.5938 c 24.6055 2.8813 27.9268 4.7129 27.9268 1 C 11.9512 1 L f %AI6_EndPatternLayer ) & (0 O 0 R 0.0784 0.4157 0.1647 Xa 0.0784 0.4157 0.1647 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 41.875 1 m 41.875 4.7134 42.3867 2.8818 42.3867 6.5938 c 42.3867 10.2334 40.5947 10.2334 40.5947 13.8735 c 40.5947 17.4858 41.5742 17.4858 41.5742 21.0991 c 41.5742 24.832 43.6484 24.832 43.6484 28.5659 c 43.6484 32.3076 39.1709 32.3076 39.1709 36.0469 c 39.1709 39.7026 39.7549 39.7026 39.7549 43.356 c 39.7549 47.0566 45.3896 47.0566 45.3896 50.7568 c 45.3896 54.4043 40.1055 54.4043 40.1055 58.0542 c 40.1055 61.7686 40.6289 61.7686 40.6289 65.4805 c 40.6289 69.1636 41.875 69.3184 41.875 73 C 59.0752 73 L 59.0752 69.4219 53.4805 70.1934 53.4805 66.6143 c 53.4805 62.9136 55.8945 62.9136 55.8945 59.2153 c 55.8945 55.502 61.0059 55.502 61.0059 51.7886 c 61.0059 48.1489 60.5635 48.1489 60.5635 44.5103 c 60.5635 40.897 59.9277 40.897 59.9277 37.2842 c 59.9277 33.5508 56.3662 33.5508 56.3662 29.8169 c 56.3662 26.0762 61.0908 26.0762 61.0908 22.3354 c 61.0908 18.6812 52.6025 18.6812 52.6025 15.0264 c 52.6025 11.3262 55.7461 11.3262 55.7461 7.6265 c 55.7461 3.978 59.0752 4.6484 59.0752 1 C 41.875 1 L f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Clown Attack) (Clown Attack) 5.25 11 41.25 47 [ %AI3_Tile (0 O 0 R 0 1 0 Xa 0 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 17.5 18.25 m 17.5 15.2119 15.0376 12.75 12 12.75 c 8.9624 12.75 6.5 15.2119 6.5 18.25 c 6.5 21.2881 8.9624 23.75 12 23.75 c 15.0376 23.75 17.5 21.2881 17.5 18.25 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 0 1 Xa 1 0 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 22.25 34.125 m 22.25 31.2939 19.9556 29 17.125 29 c 14.2944 29 12 31.2939 12 34.125 c 12 36.9561 14.2944 39.25 17.125 39.25 c 19.9556 39.25 22.25 36.9561 22.25 34.125 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 0 0 Xa 1 0 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 30 31.625 m 30 29.4854 28.2646 27.75 26.125 27.75 c 23.9849 27.75 22.25 29.4854 22.25 31.625 c 22.25 33.7646 23.9849 35.5 26.125 35.5 c 28.2646 35.5 30 33.7646 30 31.625 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 1 0 Xa 1 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 23.25 24.5 m 23.25 22.4287 21.5713 20.75 19.5 20.75 c 17.4287 20.75 15.75 22.4287 15.75 24.5 c 15.75 26.5713 17.4287 28.25 19.5 28.25 c 21.5713 28.25 23.25 26.5713 23.25 24.5 c f %AI6_EndPatternLayer ) & (0 O 0 R 0 0 1 Xa 0 0 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 36 22.25 m 36 19.0742 33.4258 16.5 30.25 16.5 c 27.0742 16.5 24.5 19.0742 24.5 22.25 c 24.5 25.4258 27.0742 28 30.25 28 c 33.4258 28 36 25.4258 36 22.25 c f %AI6_EndPatternLayer ) & (0 O 0 R 0.8 0.7922 0.2078 Xa 0.8 0.7922 0.2078 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 24.25 16.5 m 24.25 14.8438 22.9067 13.5 21.25 13.5 c 19.5933 13.5 18.25 14.8438 18.25 16.5 c 18.25 18.1563 19.5933 19.5 21.25 19.5 c 22.9067 19.5 24.25 18.1563 24.25 16.5 c f %AI6_EndPatternLayer ) & (0 O 0 R 0 1 1 Xa 0 1 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 37.25 43.875 m 37.25 39.5264 33.7236 36 29.375 36 c 25.0264 36 21.5 39.5264 21.5 43.875 c 21.5 48.2236 25.0264 51.75 29.375 51.75 c 33.7236 51.75 37.25 48.2236 37.25 43.875 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 0.8 0 Xa 1 0.8 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 38.75 26.625 m 38.75 25.7275 38.0225 25 37.125 25 c 36.2275 25 35.5 25.7275 35.5 26.625 c 35.5 27.5225 36.2275 28.25 37.125 28.25 c 38.0225 28.25 38.75 27.5225 38.75 26.625 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 0.4 0 Xa 1 0.4 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 19.875 42 m 19.875 41.1025 19.1475 40.375 18.25 40.375 c 17.3525 40.375 16.625 41.1025 16.625 42 c 16.625 42.8975 17.3525 43.625 18.25 43.625 c 19.1475 43.625 19.875 42.8975 19.875 42 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 0 0 Xa 1 0 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 12.75 28.125 m 12.75 26.8135 11.6865 25.75 10.375 25.75 c 9.0635 25.75 8 26.8135 8 28.125 c 8 29.4365 9.0635 30.5 10.375 30.5 c 11.6865 30.5 12.75 29.4365 12.75 28.125 c f %AI6_EndPatternLayer ) & (0 O 0 R 0 1 0 Xa 0 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 43.25 33 m 43.25 30.998 41.627 29.375 39.625 29.375 c 37.623 29.375 36 30.998 36 33 c 36 35.002 37.623 36.625 39.625 36.625 c 41.627 36.625 43.25 35.002 43.25 33 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 1 0 Xa 1 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 13.25 43.75 m 13.25 40.9883 11.0117 38.75 8.25 38.75 c 5.4883 38.75 3.25 40.9883 3.25 43.75 c 3.25 46.5117 5.4883 48.75 8.25 48.75 c 11.0117 48.75 13.25 46.5117 13.25 43.75 c f %AI6_EndPatternLayer ) & (0 O 0 R 0.6 0 0.8 Xa 0.6 0 0.8 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 6.5 22.25 m 6.5 20.7314 5.2686 19.5 3.75 19.5 c 2.2314 19.5 1 20.7314 1 22.25 c 1 23.7686 2.2314 25 3.75 25 c 5.2686 25 6.5 23.7686 6.5 22.25 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 1 0.4 Xa 1 1 0.4 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 34.4883 32.75 m 34.4883 31.9277 33.8223 31.2617 33 31.2617 c 32.1777 31.2617 31.5117 31.9277 31.5117 32.75 c 31.5117 33.5723 32.1777 34.2383 33 34.2383 c 33.8223 34.2383 34.4883 33.5723 34.4883 32.75 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 1 0 Xa 1 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 49.25 43.75 m 49.25 40.9883 47.0117 38.75 44.25 38.75 c 41.4883 38.75 39.25 40.9883 39.25 43.75 c 39.25 46.5117 41.4883 48.75 44.25 48.75 c 47.0117 48.75 49.25 46.5117 49.25 43.75 c f %AI6_EndPatternLayer ) & (0 O 0 R 0.6 0 0.8 Xa 0.6 0 0.8 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 42.5 22.25 m 42.5 20.7314 41.2686 19.5 39.75 19.5 c 38.2314 19.5 37 20.7314 37 22.25 c 37 23.7686 38.2314 25 39.75 25 c 41.2686 25 42.5 23.7686 42.5 22.25 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 1 0 Xa 1 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 49.25 7.752 m 49.25 4.9902 47.0117 2.752 44.25 2.752 c 41.4883 2.752 39.25 4.9902 39.25 7.752 c 39.25 10.5137 41.4883 12.752 44.25 12.752 c 47.0117 12.752 49.25 10.5137 49.25 7.752 c f %AI6_EndPatternLayer ) & (0 O 0 R 0 1 1 Xa 0 1 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 37.25 7.875 m 37.25 3.5264 33.7236 0 29.375 0 c 25.0264 0 21.5 3.5264 21.5 7.875 c 21.5 12.2236 25.0264 15.75 29.375 15.75 c 33.7236 15.75 37.25 12.2236 37.25 7.875 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 1 0 Xa 1 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 13.25 7.75 m 13.25 4.9883 11.0117 2.75 8.25 2.75 c 5.4883 2.75 3.25 4.9883 3.25 7.75 c 3.25 10.5117 5.4883 12.75 8.25 12.75 c 11.0117 12.75 13.25 10.5117 13.25 7.75 c f %AI6_EndPatternLayer ) & (0 O 0 R 0 1 0 Xa 0 1 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 7.25 33 m 7.25 30.998 5.627 29.375 3.625 29.375 c 1.623 29.375 0 30.998 0 33 c 0 35.002 1.623 36.625 3.625 36.625 c 5.627 36.625 7.25 35.002 7.25 33 c f %AI6_EndPatternLayer ) & (0 O 0 R 1 0.6 1 Xa 1 0.6 1 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 39.6533 16.0381 m 39.6533 15.1064 38.8975 14.3506 37.9658 14.3506 c 37.0342 14.3506 36.2783 15.1064 36.2783 16.0381 c 36.2783 16.9697 37.0342 17.7256 37.9658 17.7256 c 38.8975 17.7256 39.6533 16.9697 39.6533 16.0381 c f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Pyramids) (Pyramids) 1 1 19.5 19.5 [ %AI3_Tile (0 O 0 R 0.8 0.8 0.8 Xa 0.8 0.8 0.8 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 1 19.5 m 10.25 10.25 l 19.5 19.5 l 1 19.5 l f %AI6_EndPatternLayer ) & (0 O 0 R 0.2 0.2 0.2 Xa 0.2 0.2 0.2 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 19.5 1 m 10.25 10.25 l 1 1 l 19.5 1 l f %AI6_EndPatternLayer ) & (0 O 0 R 0.6 0.6 0.6 Xa 0.6 0.6 0.6 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 1 1 m 10.25 10.25 l 1 19.5 l 1 1 l f %AI6_EndPatternLayer ) & (0 O 0 R 0.4 0.4 0.4 Xa 0.4 0.4 0.4 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 1 w 4 M []0 d 0 XR 19.5 19.5 m 10.25 10.25 l 19.5 1 l 19.5 19.5 l f %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI3_BeginPattern: (Red Stripe) (Red Stripe) 37 19 73 55 [ %AI3_Tile (0 O 0 R 1 0 0 Xa 1 0 0 XA ) @ ( %AI6_BeginPatternLayer 0 J 0 j 18 w 4 M []0 d 0 XR 37 37 m 73 37 l S %AI6_EndPatternLayer ) & ] E %AI3_EndPattern %AI5_End_NonPrinting-- %AI5_BeginPalette 0 0 Pb 0 0 0 Xa ([Registration]) Pc 1 1 1 Xa (White) Pc 0 0 0 Xa (Black) Pc 0.6 0.6 0.6 Xa (Gray) Pc 0.8 0.8 0.8 Xa (Light Gray) Pc 0 1 1 Xa (Bright Blue) Pc 0.6 1 1 Xa (Light Blue) Pc 0.8 1 1 Xa (Pale Blue) Pc 1 0 1 Xa (Violet) Pc 1 0.4 1 Xa (Light Violet) Pc 1 0.8 1 Xa (Pale Violet) Pc 1 1 0 Xa (Yellow) Pc 1 1 0.4 Xa (Light Yellow) Pc 1 1 0.6 Xa (Pale Yellow) Pc 0.6 0.2 0 Xa (Brown) Pc 0.8 0.4 0.2078 Xa (Light Brown) Pc 1 0.6 0.4 Xa (Pale Brown) Pc 0 0 1 Xa (Blue) Pc 0.4 0.4 1 Xa (Faded Blue) Pc 0.8 0.8 1 Xa (Faded Pale Blue) Pc 1 0 0 Xa (Red) Pc 1 0.4 0.4 Xa (Light Red) Pc 1 0.6 0.6 Xa (Mauve) Pc 0 0.6 0 Xa (Forest Green) Pc 0.2 0.8 0.2 Xa (Green) Pc 0.6 1 0.4 Xa (Pale Green) Pc 0 1 0 Xa (Bright Green) Pc 0.4 1 0.4 Xa (Light Bright Green) Pc 0.5922 1 0.6 Xa (Pale Light Green) Pc 0.6 0 0.8 Xa (Purple) Pc 0.6 0.4 0.8 Xa (Periwinkle) Pc 0.8 0.6 0.8 Xa (Lavender) Pc 1 0.6 0 Xa (Orange) Pc 1 0.8 0.2 Xa (Light Orange) Pc 1 0.8 0.6 Xa (Light Pale Orange) Pc Bb 2 (White, Black) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (White, Black) Pc Bb 0 0 0 0 Bh 2 (Black, White Radial) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (Black, White Radial) Pc Bb 2 (Steel Bar II) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (Steel Bar II) Pc Bb 2 (RGB Rainbow) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (RGB Rainbow) Pc Bb 0 0 0 0 Bh 2 (Nova) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (Nova) Pc Bb 2 (Sunrise) 0 0 0 1 1 0 0 1 0 0 Bg 0 BB (Sunrise) Pc (Blue Tablecloth) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Blue Tablecloth) Pc (Pyramids) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Pyramids) Pc (Azure Rings) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Azure Rings) Pc (Red Stripe) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Red Stripe) Pc (Clown Attack) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Clown Attack) Pc (Camouflage) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p (Camouflage) Pc PB %AI5_EndPalette %%EndSetup %AI5_BeginLayer 1 1 1 1 0 0 1 255 79 79 Lb (Layer 2) Ln 0 A u *u 0 O 1 1 1 Xa 0 J 0 j 1 w 4 M []0 d 0 XR 222.207 298.582 m 223.8154 297.7295 225.3486 296.751 226.5029 295.7402 C 224.7842 300.4922 L 225.9473 303.7139 L 371.5391 303.7139 L 372.708 300.4922 L 370.9805 295.7402 L 372.0938 296.7119 373.5557 297.6523 375.0957 298.4814 C 354.6035 280.7939 327.9082 270.0986 298.71 270.0986 C 269.457 270.0986 242.7153 280.834 222.207 298.582 C F 181.7461 387.0625 m 181.7461 420.3057 195.6172 450.3125 217.8853 471.6084 C 217.9175 471.5342 217.9492 471.4595 217.9814 471.3838 C 217.8989 471.3838 L 217.8989 470.8892 L 217.8989 304.209 L 218.394 304.209 L 217.8989 304.209 L 217.8989 303.7139 L 218.394 303.7139 L 224.4375 303.7139 L 222.8916 302.708 221.1001 301.791 219.4185 301.0742 C 196.2549 322.4443 181.7461 353.0586 181.7461 387.0625 C F 373.0508 303.7139 m 379.2236 303.7139 L 379.2236 304.209 L 379.7188 304.209 L 379.7188 470.8892 L 379.7188 471.3838 L 379.2236 471.3838 L 379.2236 470.8892 L 379.2236 471.3838 L 218.7583 471.3838 L 218.501 471.4966 218.2495 471.6099 218.0059 471.7236 C 238.9951 491.7402 267.4146 504.0269 298.71 504.0269 C 363.3115 504.0269 415.6738 451.6558 415.6738 387.0625 C 415.6738 353.0703 401.1738 322.4648 378.0244 301.0957 C 376.3564 301.8086 374.585 302.7178 373.0508 303.7139 C F 1 D 379.2236 303.7139 m 379.7188 303.7139 L 379.7188 304.209 L 379.2236 304.209 L 379.2236 303.7139 L F *U 1 Ap 0 D 0 R 0 0 0 XA 415.6777 387.0674 m 415.6777 322.4678 363.3135 270.1035 298.7144 270.1035 C 234.1162 270.1035 181.75 322.4678 181.75 387.0674 C 181.75 451.6641 234.1162 504.0313 298.7144 504.0313 C 363.3135 504.0313 415.6777 451.6641 415.6777 387.0674 C 415.6777 387.0674 L s *u 0 Ap 0 O 0 g 371.6377 304.7129 m 371.4072 304.8916 371.1875 305.0723 370.9805 305.2529 C 371.1758 304.7129 L 226.3081 304.7129 L 226.5029 305.2529 L 226.2959 305.0723 226.0771 304.8916 225.8477 304.7129 C 218.8979 304.7129 L 218.8979 468.9692 L 219.6465 466.7632 220.2271 464.3643 220.3379 462.3838 C 222.3101 466.4492 L 248.7925 439.1919 L 240.2236 425.3545 235.1338 407.9204 235.1338 389.0156 C 235.1338 344.2676 263.646 307.7549 299.2949 307.7012 C 319.084 307.7305 336.6699 318.9941 348.4043 336.666 C 374.458 309.8496 L 370.332 307.9805 L 372.8887 307.7725 376.1152 306.748 378.7197 305.6104 C 378.7197 304.7129 L 371.6377 304.7129 L F 377.1543 314.6133 m 375.1738 310.5479 L 348.9648 337.5244 L 358.0322 351.5635 363.4521 369.5068 363.4561 389.0156 C 363.4473 433.7549 334.9443 470.2681 299.2949 470.3311 C 299.2949 469.3232 L 299.2949 470.3311 L 279.0293 470.2949 261.0684 458.4771 249.3428 440.0674 C 223.0317 467.1494 L 227.1602 469.0078 L 225.3877 469.1572 223.2944 469.6924 221.3091 470.3848 C 378.7197 470.3848 L 378.7197 307.6543 L 377.9111 309.958 377.2715 312.5166 377.1543 314.6133 C Bb 0 0 0 0 Bh 1 (Unnamed gradient) -0.0059 -0.0059 0 81.8879 1 0 0 1 298.8145 -387.5547 Bg 81.8879 0 0 -81.8879 298.8086 387.5488 Bm F 0 BB *U *u 0 0 0 Xa 379.2236 303.7139 m 379.2236 304.209 L 379.7188 304.209 L 379.7188 303.7139 L 379.2236 303.7139 L F 373.0508 303.7139 m 372.5508 304.0391 372.0752 304.373 371.6377 304.7129 C 378.7197 304.7129 L 378.7197 305.6104 L 379.0586 305.4629 379.3867 305.3125 379.7012 305.1631 C 379.3623 305.9297 379.0293 306.7734 378.7197 307.6543 C 378.7197 470.3848 L 221.3091 470.3848 L 220.4248 470.6934 219.5615 471.0332 218.7583 471.3838 C 379.2236 471.3838 L 379.2236 470.8892 L 379.2236 471.3838 L 379.7188 471.3838 L 379.7188 470.8892 L 379.7188 304.209 L 379.2236 304.209 L 379.2236 303.7139 L 373.0508 303.7139 L F 225.9473 303.7139 m 226.3081 304.7129 L 371.1758 304.7129 L 371.5391 303.7139 L 225.9473 303.7139 L F 218.394 303.7139 m 217.8989 303.7139 L 217.8989 304.209 L 218.394 304.209 L 217.8989 304.209 L 217.8989 470.8892 L 217.8989 471.3838 L 217.9814 471.3838 L 218.3003 470.6299 218.6113 469.814 218.8979 468.9692 C 218.8979 304.7129 L 225.8477 304.7129 L 225.4116 304.373 224.937 304.0391 224.4375 303.7139 C 218.394 303.7139 L F *U *u 0 g 255.4199 332.8379 m 244.1431 347.1748 237.1318 367.0469 237.1318 389.0156 C 237.1318 407.3784 242.0342 424.2813 250.2334 437.709 C 270.7905 416.5503 L 271.3081 406.2046 274.5913 398.0967 279.4141 397.8628 C 281.5166 397.9648 283.3257 399.5645 284.7397 402.1934 C 346.9766 338.1348 L 345.7705 336.2959 344.5 334.5283 343.1699 332.8379 C 331.8838 318.4922 316.377 309.6992 299.2949 309.6992 C 282.2041 309.6992 266.7061 318.4922 255.4199 332.8379 C F 1 D 0 g 269.082 354.5908 m 270.6479 354.5908 272.0791 355.1309 273.123 356.0225 C 274.1758 356.9131 274.8418 358.1729 274.8418 359.5771 C 274.8418 360.9717 274.1758 362.2324 273.123 363.123 C 272.0791 364.0137 270.6479 364.5537 269.082 364.5537 C 269.082 364.0586 L 269.082 364.5537 L 267.5068 364.5537 266.085 364.0137 265.0322 363.123 C 263.9878 362.2324 263.313 360.9717 263.313 359.5771 C 263.313 358.1729 263.9878 356.9131 265.0322 356.0225 C 266.085 355.1309 267.5161 354.5908 269.082 354.5908 C 269.082 354.5908 L F 0 g 301.0142 363.1143 m 300.7168 362.9072 300.5278 362.7725 300.375 362.6006 C 300.231 362.4482 300.1138 362.2139 300.4019 361.9443 C 300.645 361.7188 301.437 361.6201 302.2109 361.8184 C 302.1929 361.9707 L 301.5542 361.9082 301.2568 361.8721 301.104 362.0156 C 301.0322 362.0791 301.0229 362.1865 301.1221 362.2949 C 301.2388 362.4121 305.0278 364.707 306.5313 365.6787 C 306.522 365.751 L 306.0718 366.0215 305.6582 366.3184 305.2529 366.624 C 305.1357 366.5068 L 305.5322 366.1201 305.541 366.0391 305.3882 365.8682 C 305.2891 365.7686 305.0732 365.6338 304.8208 365.4814 C 303.4258 364.6084 L 303.3989 364.6084 L 303.5161 364.7969 303.687 365.085 303.2822 365.4717 C 302.4092 366.2822 299.916 366.1016 298.8901 364.9951 C 298.5298 364.6172 298.2329 363.9873 298.8452 363.4287 C 299.2139 363.0869 299.7358 362.8262 301.0142 363.1406 C 301.0142 363.1143 L F 0 g 289.1611 370.5566 m 291.96 367.9473 L 292.1582 368.1543 L 291.7979 368.4775 291.2759 368.9639 291.6899 369.4053 C 291.9419 369.6748 293.7329 370.8271 294.291 371.1777 C 294.4531 370.7188 294.6602 370.3945 295.002 370.0801 C 296.8921 368.3164 301.1938 368.541 303.1738 370.665 C 304.0918 371.6553 304.4341 372.8428 303.2188 373.9766 C 302.0938 375.0215 300.3838 374.751 299.6099 374.5801 C 299.6099 374.6338 L 301.167 375.5605 L 301.356 375.6602 301.3291 375.7412 301.293 375.7773 C 298.8901 377.4512 L 298.71 377.208 L 299.0342 376.9287 L 299.3672 376.6504 299.4751 376.2451 299.2412 376.002 C 298.9712 375.7139 292.833 371.9248 291.0332 370.7373 C 290.5107 370.3945 290.0879 370.1074 289.3589 370.7822 C 289.1611 370.5566 L F 0 D 0 g 331.3936 355.6104 m 332.2236 355.2119 333.1777 354.9873 334.1875 354.9873 C 335.7627 354.9873 337.1846 355.5273 338.2383 356.418 C 339.2822 357.3086 339.957 358.5693 339.957 359.9639 C 339.957 361.3682 339.2822 362.6279 338.2383 363.5186 C 337.1846 364.4102 335.7627 364.9502 334.1875 364.9502 C 334.1875 364.4551 L 334.1875 364.9502 L 332.6221 364.9502 331.1914 364.4102 330.1475 363.5186 C 329.0938 362.6279 328.4277 361.3682 328.4277 359.9639 C 328.4277 359.3955 328.5391 358.8486 328.7412 358.3408 C 285.2139 403.1445 L 287.0088 407.0303 288.0547 412.7153 288.0991 419.0308 C 288.0181 430.5332 284.6162 439.9468 279.4141 440.1899 C 279.4141 439.6948 L 279.4141 440.1899 L 274.2119 439.9468 270.8008 430.5332 270.7202 419.0308 C 270.7222 418.7012 270.7275 418.374 270.7354 418.0474 C 250.7788 438.5889 L 252.2305 440.8975 253.7798 443.0996 255.4199 445.1851 C 266.7061 459.5308 282.2041 468.3242 299.2949 468.3242 C 299.2949 469.3232 L 299.2949 468.3242 L 316.377 468.3242 331.8838 459.5308 343.1699 445.1851 C 354.4473 430.8481 361.458 410.9761 361.458 389.0156 C 361.458 370.04 356.2266 352.6289 347.5342 338.9971 C 331.3936 355.6104 L F 1 D 0 g 319.1758 397.8721 m 324.3779 398.1152 327.7891 407.5381 327.8701 419.0308 C 327.7891 430.5332 324.3779 439.9468 319.1758 440.1992 C 319.1758 439.6948 L 319.1758 440.1992 L 313.9736 439.9468 310.5723 430.5332 310.4912 419.0308 C 310.5723 407.5381 313.9736 398.1152 319.1758 397.8721 C 319.1758 397.8721 L F 0 D 0 g 299.4932 363.4736 m 299.043 363.8877 299.439 364.3105 299.5562 364.4365 C 300.168 365.1025 302.3369 366.0303 303.1563 365.2646 C 303.5068 364.9502 303.2012 364.626 303.0479 364.4551 C 302.4287 363.7891 301.1816 363.2256 300.2861 363.2246 C 299.959 363.2246 299.6787 363.3008 299.4932 363.4736 C F 295.1909 370.3857 m 294.8491 370.71 294.6421 371.1777 294.9751 371.5293 C 295.4702 372.0693 297.7559 373.4189 298.917 373.9766 C 300.1411 374.5713 301.5181 374.4629 302.166 373.8604 C 303.0571 373.0322 302.3281 372.2217 301.9858 371.8525 C 300.9321 370.7246 298.876 369.708 297.1587 369.708 C 296.397 369.708 295.7026 369.9072 295.1909 370.3857 C Bb 0 0 0 0 Bh 1 (Unnamed gradient 3) 0 0 0 81.888 1 0 0 1 298.8145 -387.5547 Bg 81.888 0 0 -81.888 298.8145 387.5547 Bm F 0 BB *U *u 0 0 0 Xa 235.1338 389.0156 m 235.1338 407.9204 240.2236 425.3545 248.7925 439.1919 C 250.2334 437.709 L 242.0342 424.2813 237.1318 407.3784 237.1318 389.0156 C 237.1318 367.0469 244.1431 347.1748 255.4199 332.8379 C 266.7061 318.4922 282.2041 309.6992 299.2949 309.6992 C 316.377 309.6992 331.8838 318.4922 343.1699 332.8379 C 344.5 334.5283 345.7705 336.2959 346.9766 338.1348 C 348.4043 336.666 L 336.6699 318.9941 319.084 307.7305 299.2949 307.7012 C 299.2949 308.7002 L 299.2949 307.7012 L 263.646 307.7549 235.1338 344.2676 235.1338 389.0156 C F 347.5342 338.9971 m 356.2266 352.6289 361.458 370.04 361.458 389.0156 C 361.458 410.9761 354.4473 430.8481 343.1699 445.1851 C 331.8838 459.5308 316.377 468.3242 299.2949 468.3242 C 299.2949 470.3311 L 334.9443 470.2681 363.4473 433.7549 363.4561 389.0156 C 363.4521 369.5068 358.0322 351.5635 348.9648 337.5244 C 347.5342 338.9971 L F 299.2949 469.3232 m 299.2949 470.3311 L 299.2949 469.3232 L F 249.3428 440.0674 m 261.0684 458.4771 279.0293 470.2949 299.2949 470.3311 C 299.2949 468.3242 L 282.2041 468.3242 266.7061 459.5308 255.4199 445.1851 C 253.7798 443.0996 252.2305 440.8975 250.7788 438.5889 C 249.3428 440.0674 L F *U 0.3137 0.3137 0.3137 Xa 319.1758 398.8711 m 317.3037 398.8262 315.2969 400.9229 313.8574 404.604 C 312.3994 408.2671 311.4902 413.3789 311.4902 419.0308 C 311.4902 424.6831 312.3994 429.8042 313.8574 433.458 C 315.2969 437.1479 317.3037 439.2358 319.1758 439.2002 C 319.1758 439.6948 L 319.1758 439.2002 L 321.0479 439.2358 323.0645 437.1479 324.5039 433.458 C 325.9531 429.8042 326.8711 424.6831 326.8711 419.0308 C 326.8711 413.3789 325.9531 408.2671 324.5039 404.604 C 323.0791 400.9619 321.0898 398.8706 319.2354 398.8701 C 319.2148 398.8701 319.1953 398.8706 319.1758 398.8711 C F *u 0 g 310.4912 419.0308 m 310.5723 430.5332 313.9736 439.9468 319.1758 440.1992 C 319.1758 439.6948 L 314.6582 439.6948 310.9951 430.4429 310.9951 419.0308 C 310.9951 407.6191 314.6582 398.3672 319.1758 398.3672 C 323.7031 398.3672 327.3662 407.6191 327.3662 419.0308 C 327.3662 430.4429 323.7031 439.6948 319.1758 439.6948 C 319.1758 440.1992 L 319.1758 439.6948 L 319.1758 440.1992 L 324.3779 439.9468 327.7891 430.5332 327.8701 419.0308 C 327.7891 407.5381 324.3779 398.1152 319.1758 397.8721 C 319.1758 398.3672 L 319.1758 397.8721 L 313.9736 398.1152 310.5723 407.5381 310.4912 419.0308 C F 327.8701 419.0308 m 327.8701 419.0308 L Bb 0 0 0 0 Bh 1 (Unnamed gradient 4) 0 0 0 81.888 1 0 0 1 298.8145 -387.5547 Bg 81.888 0 0 -81.888 298.8145 387.5547 Bm F 0 BB *U 0.3137 0.3137 0.3137 Xa 310.9951 419.0308 m 310.9951 430.4429 314.6582 439.6948 319.1758 439.6948 C 319.1758 439.2002 L 317.3037 439.2358 315.2969 437.1479 313.8574 433.458 C 312.3994 429.8042 311.4902 424.6831 311.4902 419.0308 C 311.4902 413.3789 312.3994 408.2671 313.8574 404.604 C 315.2969 400.9229 317.3037 398.8262 319.1758 398.8711 C 321.0479 398.8262 323.0645 400.9229 324.5039 404.604 C 325.9531 408.2671 326.8711 413.3789 326.8711 419.0308 C 326.8711 424.6831 325.9531 429.8042 324.5039 433.458 C 323.0645 437.1479 321.0479 439.2358 319.1758 439.2002 C 319.1758 439.6948 L 323.7031 439.6948 327.3662 430.4429 327.3662 419.0308 C 327.3662 407.6191 323.7031 398.3672 319.1758 398.3672 C 314.6582 398.3672 310.9951 407.6191 310.9951 419.0308 C F *u 279.4141 398.8711 m 277.542 398.8262 275.5259 400.9141 274.0859 404.604 C 272.9492 407.4707 272.1392 411.2412 271.8477 415.4624 C 283.9995 402.9551 L 282.6699 400.333 281.0278 398.8706 279.4731 398.8701 C 279.4536 398.8701 279.4341 398.8706 279.4141 398.8711 C F 271.7656 416.9868 m 271.7397 417.6592 271.7271 418.3408 271.728 419.0308 C 271.7188 424.6831 272.6372 429.7949 274.0859 433.458 C 275.5259 437.1479 277.542 439.2358 279.4141 439.1909 C 279.4141 439.6948 L 279.4141 439.1909 L 281.2861 439.2358 283.293 437.1479 284.7329 433.458 C 286.1909 429.7949 287.1001 424.6831 287.1001 419.0308 C 287.1001 413.3789 286.1909 408.2578 284.7329 404.604 C 284.6421 404.3716 284.5493 404.1455 284.4541 403.9263 C 271.7656 416.9868 L F *U *u 0 g 279.4141 397.8628 m 279.4141 397.8628 L F 0 g 270.7905 416.5503 m 271.3105 416.0151 L 271.8887 406.0327 275.2935 398.3672 279.4141 398.3672 C 281.2744 398.3672 282.9902 399.9365 284.3647 402.5791 C 284.7397 402.1934 L 283.3257 399.5645 281.5166 397.9648 279.4141 397.8628 C 279.4141 398.3672 L 279.4141 397.8628 L 274.5913 398.0967 271.3081 406.2046 270.7905 416.5503 C F 0 g 284.8286 403.541 m 286.5249 407.3271 287.5952 412.8638 287.5952 419.0308 C 287.5952 430.4429 283.9321 439.6948 279.4141 439.6948 C 279.4141 440.1899 L 279.4141 439.6948 L 279.4141 440.1899 L 284.6162 439.9468 288.0181 430.5332 288.0991 419.0308 C 288.0547 412.7153 287.0088 407.0303 285.2139 403.1445 C 284.8286 403.541 L F 0 g 270.7354 418.0474 m 270.7275 418.374 270.7222 418.7012 270.7202 419.0308 C 270.8008 430.5332 274.2119 439.9468 279.4141 440.1899 C 279.4141 439.6948 L 274.8872 439.6948 271.2241 430.4429 271.2241 419.0308 C 271.2241 418.5234 271.2314 418.0205 271.2456 417.522 C 270.7354 418.0474 L F 288.0991 419.0308 m 288.0991 419.0308 L Bb 0 0 0 0 Bh 1 (Unnamed gradient 5) 0 0 0 81.888 1 0 0 1 298.8145 -387.5547 Bg 81.888 0 0 -81.888 298.8145 387.5547 Bm F 0 BB *U *u 0.3137 0.3137 0.3137 Xa 271.3105 416.0151 m 271.8477 415.4624 L 272.1392 411.2412 272.9492 407.4707 274.0859 404.604 C 275.5259 400.9141 277.542 398.8262 279.4141 398.8711 C 280.9858 398.833 282.6528 400.2993 283.9995 402.9551 C 284.3647 402.5791 L 282.9902 399.9365 281.2744 398.3672 279.4141 398.3672 C 275.2935 398.3672 271.8887 406.0327 271.3105 416.0151 C F 284.4541 403.9263 m 284.5493 404.1455 284.6421 404.3716 284.7329 404.604 C 286.1909 408.2578 287.1001 413.3789 287.1001 419.0308 C 287.1001 424.6831 286.1909 429.7949 284.7329 433.458 C 283.293 437.1479 281.2861 439.2358 279.4141 439.1909 C 279.4141 439.6948 L 283.9321 439.6948 287.5952 430.4429 287.5952 419.0308 C 287.5952 412.8638 286.5249 407.3271 284.8286 403.541 C 284.4541 403.9263 L F 271.2456 417.522 m 271.2314 418.0205 271.2241 418.5234 271.2241 419.0308 C 271.2241 430.4429 274.8872 439.6948 279.4141 439.6948 C 279.4141 439.1909 L 277.542 439.2358 275.5259 437.1479 274.0859 433.458 C 272.6372 429.7949 271.7188 424.6831 271.728 419.0308 C 271.7271 418.3408 271.7397 417.6592 271.7656 416.9868 C 271.2456 417.522 L F *U 0.251 0.251 0.251 Xa 265.6802 356.7871 m 264.8252 357.5156 264.3208 358.4971 264.3208 359.5771 C 264.3208 360.6484 264.8252 361.6289 265.6802 362.3584 C 266.5352 363.0957 267.7412 363.5547 269.082 363.5547 C 269.082 364.0586 L 269.082 363.5547 L 270.4229 363.5547 271.6201 363.0957 272.4751 362.3584 C 273.3389 361.6289 273.8428 360.6484 273.8428 359.5771 C 273.8428 358.4971 273.3389 357.5156 272.4751 356.7871 C 271.6201 356.0488 270.4229 355.5898 269.082 355.5898 C 267.7412 355.5898 266.5352 356.0488 265.6802 356.7871 C F 265.0322 356.0225 m 263.9878 356.9131 263.313 358.1729 263.313 359.5771 C 263.313 360.9717 263.9878 362.2324 265.0322 363.123 C 266.085 364.0137 267.5068 364.5537 269.082 364.5537 C 269.082 364.0586 L 266.1748 364.0586 263.8169 362.043 263.8169 359.5771 C 263.8169 357.0928 266.1748 355.0859 269.082 355.0859 C 271.9888 355.0859 274.3472 357.0928 274.3472 359.5771 C 274.3472 362.043 271.9888 364.0586 269.082 364.0586 C 269.082 364.5537 L 269.082 364.0586 L 269.082 364.5537 L 270.6479 364.5537 272.0791 364.0137 273.123 363.123 C 274.1758 362.2324 274.8418 360.9717 274.8418 359.5771 C 274.8418 358.1729 274.1758 356.9131 273.123 356.0225 C 272.0791 355.1309 270.6479 354.5908 269.082 354.5908 C 269.082 355.0859 L 269.082 354.5908 L 267.5161 354.5908 266.085 355.1309 265.0322 356.0225 C Bb 0 0 0 0 Bh 1 (Unnamed gradient 7) 0 0 0 81.888 1 0 0 1 298.8145 -387.5547 Bg 81.888 0 0 -81.888 298.8145 387.5547 Bm F 0 BB 0.251 0.251 0.251 Xa 263.8169 359.5771 m 263.8169 362.043 266.1748 364.0586 269.082 364.0586 C 269.082 363.5547 L 267.7412 363.5547 266.5352 363.0957 265.6802 362.3584 C 264.8252 361.6289 264.3208 360.6484 264.3208 359.5771 C 264.3208 358.4971 264.8252 357.5156 265.6802 356.7871 C 266.5352 356.0488 267.7412 355.5898 269.082 355.5898 C 270.4229 355.5898 271.6201 356.0488 272.4751 356.7871 C 273.3389 357.5156 273.8428 358.4971 273.8428 359.5771 C 273.8428 360.6484 273.3389 361.6289 272.4751 362.3584 C 271.6201 363.0957 270.4229 363.5547 269.082 363.5547 C 269.082 364.0586 L 271.9888 364.0586 274.3472 362.043 274.3472 359.5771 C 274.3472 357.0928 271.9888 355.0859 269.082 355.0859 C 266.1748 355.0859 263.8169 357.0928 263.8169 359.5771 C F *u 1 Ap 0 0 0 Xa 300.5015 289.0889 m 300.5015 286.8623 298.8169 283.3809 296.5342 283.3809 C 296.0659 283.3809 295.5981 283.5869 295.5981 284.0732 C 295.5981 284.8037 296.3467 287.3486 296.8145 288.5459 C 297.3013 289.8193 298.3867 290.6797 299.2661 290.6797 C 300.4824 290.6797 300.5015 289.5947 300.5015 289.0889 C 300.5015 289.0889 L f 1 D 294.4565 290.7734 m 294.8872 290.792 L 295.3174 290.8105 295.6729 290.5859 295.6729 290.249 C 295.6729 289.8564 293.7642 282.8945 293.2588 280.7988 C 293.1094 280.2002 292.9971 279.6943 292.0049 279.6943 C 292.0049 279.3955 L 295.8413 279.3955 L 295.8413 279.6758 L 295.355 279.6758 294.6436 279.6758 294.6436 280.2744 C 294.6436 280.6494 295.168 282.708 295.3364 283.3438 C 295.7666 283.1191 296.1411 283.0254 296.6089 283.0254 C 299.1914 283.0254 302.1855 286.1318 302.1855 289.0332 C 302.1855 290.3799 301.624 291.4844 299.9585 291.4844 C 298.4238 291.4844 297.3574 290.1182 296.9082 289.4629 C 296.8706 289.501 L 297.376 291.2412 L 297.4507 291.4473 297.376 291.4844 297.3198 291.4844 C 294.4194 291.0723 L 294.4565 290.7734 L 294.4565 290.7734 L f *U 0 D 305.0459 282.1221 m 304.5557 281.4922 304.3457 281.2119 304.0957 281.2119 C 303.9458 281.2119 303.9458 281.3525 303.9458 281.4121 C 303.9458 281.5225 304.0259 281.792 304.0459 281.8818 C 305.5557 287.6719 L 305.5059 287.7227 L 304.9858 287.6025 304.4658 287.5127 303.9458 287.4521 C 303.9458 287.292 L 304.2061 287.3027 304.626 287.3027 304.626 287.042 C 304.626 286.832 303.1758 281.6123 303.1758 281.4023 C 303.1758 281.1221 303.2158 280.7822 303.6558 280.7822 C 304.2759 280.7822 304.666 281.2627 305.1758 282.0322 C 305.0459 282.1221 L 305.0459 282.1221 L f *u 0 Ap 289.1611 370.5566 m 289.3589 370.7822 L 290.0879 370.1074 290.5107 370.3945 291.0332 370.7373 C 292.833 371.9248 298.9712 375.7139 299.2412 376.002 C 299.4751 376.2451 299.3672 376.6504 299.0342 376.9287 C 298.71 377.208 L 298.8901 377.4512 L 301.293 375.7773 L 301.3291 375.7412 301.356 375.6602 301.167 375.5605 C 299.6099 374.6338 L 299.6099 374.5801 L 300.3838 374.751 302.0938 375.0215 303.2188 373.9766 C 304.4341 372.8428 304.0918 371.6553 303.1738 370.665 C 301.1938 368.541 296.8921 368.3164 295.002 370.0801 C 294.6602 370.3945 294.4531 370.7188 294.291 371.1777 C 293.7329 370.8271 291.9419 369.6748 291.6899 369.4053 C 291.2759 368.9639 291.7979 368.4775 292.1582 368.1543 C 291.96 367.9473 L 289.1611 370.5566 L F 1 D 298.917 373.9766 m 297.7559 373.4189 295.4702 372.0693 294.9751 371.5293 C 294.6421 371.1777 294.8491 370.71 295.1909 370.3857 C 296.856 368.8291 300.4648 370.2236 301.9858 371.8525 C 302.3281 372.2217 303.0571 373.0322 302.166 373.8604 C 301.8115 374.1895 301.2397 374.3711 300.5938 374.3711 C 300.0581 374.3711 299.4717 374.2461 298.917 373.9766 C F *U *u 0 D 300.4019 361.9443 m 300.1138 362.2139 300.231 362.4482 300.375 362.6006 C 300.5278 362.7725 300.7168 362.9072 301.0142 363.1143 C 301.0142 363.1406 L 299.7358 362.8262 299.2139 363.0869 298.8452 363.4287 C 298.2329 363.9873 298.5298 364.6172 298.8901 364.9951 C 299.916 366.1016 302.4092 366.2822 303.2822 365.4717 C 303.687 365.085 303.5161 364.7969 303.3989 364.6084 C 303.4258 364.6084 L 304.8208 365.4814 L 305.0732 365.6338 305.2891 365.7686 305.3882 365.8682 C 305.541 366.0391 305.5322 366.1201 305.1357 366.5068 C 305.2529 366.624 L 305.6582 366.3184 306.0718 366.0215 306.522 365.751 C 306.5313 365.6787 L 305.0278 364.707 301.2388 362.4121 301.1221 362.2949 C 301.0229 362.1865 301.0322 362.0791 301.104 362.0156 C 301.2568 361.8721 301.5542 361.9082 302.1929 361.9707 C 302.2109 361.8184 L 301.9219 361.7441 301.6304 361.7119 301.3657 361.7119 C 300.9219 361.7119 300.5542 361.8027 300.4019 361.9443 C F 1 D 299.5562 364.4365 m 299.439 364.3105 299.043 363.8877 299.4932 363.4736 C 300.186 362.8262 302.2021 363.5459 303.0479 364.4551 C 303.2012 364.626 303.5068 364.9502 303.1563 365.2646 C 302.937 365.4697 302.6216 365.5527 302.2656 365.5527 C 301.2886 365.5527 300.0044 364.9248 299.5562 364.4365 C F *U 0 D 0.251 0.251 0.251 Xa 330.7949 357.1738 m 329.9307 357.9121 329.4268 358.8926 329.4268 359.9639 C 329.4268 361.0439 329.9307 362.0254 330.7949 362.7539 C 331.6504 363.4834 332.8564 363.9512 334.1875 363.9512 C 334.1875 364.4551 L 334.1875 363.9512 L 335.5293 363.9512 336.7354 363.4834 337.5898 362.7539 C 338.4453 362.0254 338.958 361.0439 338.958 359.9639 C 338.958 358.8926 338.4453 357.9121 337.5898 357.1738 C 336.7354 356.4453 335.5293 355.9863 334.1875 355.9863 C 332.8564 355.9863 331.6504 356.4453 330.7949 357.1738 C F 331.3936 355.6104 m 328.7412 358.3408 L 328.5391 358.8486 328.4277 359.3955 328.4277 359.9639 C 328.4277 361.3682 329.0938 362.6279 330.1475 363.5186 C 331.1914 364.4102 332.6221 364.9502 334.1875 364.9502 C 334.1875 364.4551 L 331.2813 364.4551 328.9229 362.4395 328.9229 359.9639 C 328.9229 357.4893 331.2813 355.4824 334.1875 355.4824 C 337.0947 355.4824 339.4531 357.4893 339.4531 359.9639 C 339.4531 362.4395 337.0947 364.4551 334.1875 364.4551 C 334.1875 364.9502 L 334.1875 364.4551 L 334.1875 364.9502 L 335.7627 364.9502 337.1846 364.4102 338.2383 363.5186 C 339.2822 362.6279 339.957 361.3682 339.957 359.9639 C 339.957 358.5693 339.2822 357.3086 338.2383 356.418 C 337.1846 355.5273 335.7627 354.9873 334.1875 354.9873 C 334.1875 355.4824 L 334.1875 354.9873 L 333.1777 354.9873 332.2236 355.2119 331.3936 355.6104 C Bb 0 0 0 0 Bh 1 (Unnamed gradient 8) 0 0 0 81.888 1 0 0 1 298.8145 -387.5547 Bg 81.888 0 0 -81.888 298.8145 387.5547 Bm F 0 BB 0.251 0.251 0.251 Xa 328.9229 359.9639 m 328.9229 362.4395 331.2813 364.4551 334.1875 364.4551 C 334.1875 363.9512 L 332.8564 363.9512 331.6504 363.4834 330.7949 362.7539 C 329.9307 362.0254 329.4268 361.0439 329.4268 359.9639 C 329.4268 358.8926 329.9307 357.9121 330.7949 357.1738 C 331.6504 356.4453 332.8564 355.9863 334.1875 355.9863 C 335.5293 355.9863 336.7354 356.4453 337.5898 357.1738 C 338.4453 357.9121 338.958 358.8926 338.958 359.9639 C 338.958 361.0439 338.4453 362.0254 337.5898 362.7539 C 336.7354 363.4834 335.5293 363.9512 334.1875 363.9512 C 334.1875 364.4551 L 337.0947 364.4551 339.4531 362.4395 339.4531 359.9639 C 339.4531 357.4893 337.0947 355.4824 334.1875 355.4824 C 331.2813 355.4824 328.9229 357.4893 328.9229 359.9639 C F *u 1 1 1 Xa 224 300.5 m 373.5 300.5 L F 224 300.5 m F *U 372.708 300.4922 m 370.9805 295.7402 L 372.708 300.4922 L F *u 0 R 0 0 0 XA 224 300.5 m 373.5 300.5 L S 224 300.5 m S *U 0 O 0 0 0 Xa 372.708 300.4922 m 370.9805 305.2529 L 373.167 303.3447 376.6953 301.5449 379.5303 300.4922 C 376.6953 299.4395 373.167 297.6484 370.9805 295.7402 C 372.708 300.4922 L F 217.9619 300.4922 m 220.7969 301.5449 224.3252 303.3447 226.5029 305.2529 C 224.7842 300.4922 L 226.5029 295.7402 L 224.3252 297.6484 220.7969 299.4395 217.9619 300.4922 C F 222.3101 466.4492 m 222.543 466.9292 L 223.0317 467.1494 L 375.1738 310.5479 L 374.9404 310.0684 L 374.458 309.8496 L 222.3101 466.4492 L F 370.332 307.9805 m 374.9404 310.0684 L 377.1543 314.6133 L 377.3164 311.7148 378.4766 307.9346 379.7012 305.1631 C 376.9648 306.4678 373.2207 307.7461 370.332 307.9805 C F 217.791 471.8252 m 220.5269 470.52 224.271 469.251 227.1602 469.0078 C 222.543 466.9292 L 220.3379 462.3838 L 220.1758 465.2729 219.0151 469.0527 217.791 471.8252 C F U LB %AI5_EndLayer-- %%PageTrailer gsave annotatepage grestore showpage %%Trailer Adobe_Illustrator_AI5 /terminate get exec Adobe_ColorImage_AI6 /terminate get exec Adobe_pattern_AI5 /terminate get exec AGM_Gradient /terminate get exec Adobe_typography_AI5 /terminate get exec Adobe_cshow /terminate get exec Adobe_level2_AI5 /terminate get exec %%EOF ctsim-6.0.2/doc/logo.gif0000644000175000017500000000725210667176710014065 0ustar kevinkevinGIF89a––昘11ˆˆóþóØñØ]]ÿÿ£K«Kÿÿ9wwÿÿJèÅf¹jÜÜëëõÈ…õõؤÿþéÿÿ—§§ãã°Ý°iiÔÔýï\\dÒšBB]´]‡‡™ËëËþó Ì³\îîܰËˋˋàöàþýÿÿÇ»»îÒÿÿmªÛªT¨Tïýï³³ÙÙèªHÄÄÁæÁ–•¦½o»ã»ÿÿôœÓœÕïÕùÿùÐíÐåøåuÀu–Жýþý­RñØ++GúúÂxÿÿ'Îõõþzz–S¯Sãº++9öá…È…ÈÈÕïÓ2Þ·š¦Ø¦¹·Ä¡Ö¡Þ²]Åÿøíýããó·àÆééùæ9êúêÍúúÿÙ¬-ÿÿ;GG2A¦AÅèÅ¥>ñð÷ÿÿ ÿÿû÷ä—-Táöþ¬—³[RïÔÚOnùç0ïþ5ÁØQQîÕEäêÿÿßéîçûéÿÿÿÿÿ,––ÿ€‚ƒ„…†‡ˆ‰Š‹<:= ””X:<ŒœžŸ ¡¢ƒŽL.¨LL:¯¯«ª..@£¹º»¼‡:4ÁP.­¯›Ž:@Ä-Á4:½ÒÓÔ‚>&.V/ÜÔÜ/V&ÇÕçèŠ/>g&>é¾PgL>/ñøç&?T=ù‰x|°Ð €G!9ƒd@BN`VYxH1*&¨Ø‰+¢q¤Øã@Ž{#? 8qÊaJ|`rø÷Rš@\Öœö"‡;sñ¸‰¹ ¹Lœ9ˆt—R¦MAõ°b4*¯ž-àYå„¥ÞVi'˜ùš(âD²Ó8Š–†A´Õÿ>Š–”±pÏñb‚ì&}ó¦37ª(:£ÓåDS–Žã;é(Z%ã#@%1Gvž5§;Á%Ç2‹ÎçƒÊÈ>ˆW?ìÑøa'.àȦHù!Ÿz°˜Çn€œCŸóÁÀŽŸçÐý ˜`ü8:ҦѽH#ºwéŠ[§ÖŸ­ßÓCG @Bõñ£,XI¤°õøŸ³w?ÔË1qT~ê×^€Å99‚@®w ‚‡ÈEMt2A„®G…„Ü% „–B‡(®7œxðñÀDv£ pˆ¤h£wá½'›gé‚F‰(pãÑM§£dPÐ(ÔÿŠœHä“Eæ(Ø k%…Ä"P™Å + „"¬ Eü‘…D`¡XÀ#,dá ' |i—+ˆðå$ŒqÅS”LŠ‚…r…tçf~C„‘FDš’f°AÔñáN7¨ÖÉ =b¹èw d`DhùÀ£“î—’L„‚MŒ1*tY± ,ÚD„‘tkù…qÒC¬lxë2DpktÐJû±øðp¢‡t@+'£.ðÀÃN]6l°~Ówd/?u¢C ™ea˜‹ô a{kœXà)#Ü›¯¾øe!Dªîð'ÞrÒYÿ(O‚°Ä ç·k¹"Ю¡ô@ï"&‹Òæ^ˆðDÇn ÃËDJÜIÅŠà Ê}6¶ìÅ#-´Ð,?°(¶‰¤œôÉ¡(šâ ØÀ Â X«À`ã Fè‹ô #€£ñ´¿V€ŒÐÔ @(T#¤ˆ/ÌØr¡È¡¹8! pa0ƒÖ¼ÁäS @A 0 ÀÚ0?·!ÄÈ 7ìÒaC 8‚3DÞ@ßê ` (>ðsç~T°ƒ‡ð¸‹½zat‡\€AÀN`JÜíu‡O¸Ì; ;xЭH¹$\¼õŽ Àÿ `€¢  ï<„ÆóîGlBe/jf‡«Ã D6b @@ v³ì@ …°@¡†G Ä¡(0H@†A”€zBàv…B0{ºà~ú…<ý]P=àPüÌh@‡þÖ¹,Áƒá…÷Ô“…4DmqJàÀæÒÀÔî;(~P€Ûq¨‡?ì˜4@0«ù¡a„ à‡ðŽ”  CŒPšÐ¹PqJë…½‚4€¬@%¸@d˜žô¥‡‹(¼€ p¡, s#@a0j¨çWJÝÔã;¨g-LÏ'È!#ÜQÿ_;p#¹%Š}‡ŸÌOPþýQø),Ó3‚ìÀ’Ò"ÃvpCAXF»Ø!®ÂÆ! ŒÐAÁÞ6Ç>¦^TÏ pB=AS LÓy‡6èÐ@Èçà!*Àƒ-q™ž ¤ñ;3À:d„Cv̖ܬ†­¢#„uE¨˜At(€è`ùq'~p8³@+È`ÇFJA´€”¢ Þs„º …2ù%$?E ÀÔðPN蜱š‚`Ö…ßýL›†0‡ ÑæƒÎÿ¢%Ìò;ú+@ïÀà! ¢h®"dï°ÿBGýüÀÓH*á¡XEOšžÌó9˜ôN¨Ù!LªcØfVÏa8B àÀÖƒõù¡¨05窩Tï3šR}+Ô@„?ÌÐé'‡ „³B§¯ßÙÁjYX"™Ï)¬w@ÖÄÂŒ±¨O:ì%ÙQ¶´Ï;¡cÕ”;P';­JRèЮ­T5jº>G…P Tƒ‚6:MâWKU?¤0=¼åÐOÛØ¦#a °g„¦ùP?”€ê¡ÀÞ̃–b@‰e-o~òÄÝ?x7~È€x!D^ï¸m¶BM¦ZÊÀBgòÅOW;†Úû¢Ã`#ÿ‡úëØ€ ÝšøÀ V}ÜÝâ÷ÁÍÏ 8Ð\蔾þµmãÐ+Rg6ÄéÙ.‰ÿÐ |ø¡µÂ@Z½=¿ú[ â"(ÁÈø™j}Mp”C5í­PŸû߀‰ÅÇŸóâ¶*V_¨µb>îçZ“¦Óó(PÑúaœêéÂoµ{fá6v®ñ1„ Dõ$À•Ñq¨€úì ¥ÐQÜÌçú:Rè)„8àÄïù;…µph-Æì±rk}}°Àt¸Ac64‚ÕSË>'2lÕ ¨àA ;hq7Ê[í`›øe>®ÿ!!ã8†ÐÉ+t 0RËÉC†Ð‚¦…ÔÀ—ݤ†ØV Ãâx ëÖ\‹IÛBz¾3íØ™ìpOcñö¨bí‡D4†P)pj@Ô—£Wo€Œ!Åù™µ*1ÀoïXõÎæÐò½Xdÿ¡lAÇN "¨sTËÅž Äf¿ñ4˜O>ðÝ!‚k™HH'B n-˜í` ƒÐÁÒ†–`©›T ç•È ûÝ%ЭÁ„ D /’/ü4àu¨€µ½£ÍÆBÈí\Ì€C€H íÚ'¿ÃiÜj6ÛHÝ— $h)¾\=ˆ$Ì!ÿ%4=eÞÝçþ¦¢Èpíå ¨ x²Cew:túöîè {çï¹¼9XaTa8‡=vÙrïŠ@Åe@ Pñ± ïÑcJjTýipP!d ~=ŠzÆ—Ø\ÇÏÆÜ·Áb¡Š‡ ¸‘7§%nß !K¹ïÈ;HDiÜþqõ¹@ñ¬,´=$ú±CÆ#ù=¿$\ õóQ!*ÀiAT7h€Œ†" 03ç·hSW|g€†CB)‚ï•n\ÄEµ&lÚ%z#d‹p&NC*¨‚CâÑò€ï?Š@(¡Q$Ð}0èÿ@nîsU‹`!g\ѱFÀƒî6 ãhœp2‡Âô^`JØ1 ×9>¸pAX éqM Ã;H˜ƒÏAhžà•—YÐ6 |Ó’©×YØ9tðw‹ -§Ç ûB°ux#ü"pƒÝVŸ/ù`JêáBPO 0{’ 6`’3e~Ÿ00ìW) Ôè•~P[V!_ø '‰•e‘QA Bic–¦d@*c–µµ’pQkÉ ™”¦¦S)zI Pÿ‘I‰=[(Tò“ ð”éhœ¸4ðhâ WyŽÆ€y€ Œ .Y[½ˆ ,a70˜„ð‘æXK 2@p-À m ƒH‘Ö"†@(óÈæX™Âi:ÐXP"‰°O08F;à#¹œ‰07À˜qe)o˜ùa‰È` h`½9*]  `wä Üðg0—› ›‹Ò˜YK@”ó9 <Щà!09‡"°T¦¦YN3 Ôà\ fpwJð!ÐÚ¡Ú¡k5iwgf°°ò)¡ñà1@_pw0£1ú_@1˜*š°£<Ú£>j;ctsim-6.0.2/doc/divergent.eps0000644000175000017500000054735710667176710015155 0ustar kevinkevin%!PS-Adobe-3.1 EPSF-3.0 %%Title: divergent.eps %%Creator: Adobe Illustrator(R) 9.0 %%AI8_CreatorVersion: 9.0 %AI9_PrintingDataBegin %%For: Kevin Rosenberg %%CreationDate: 2/8/2001 %%CropBox: 0.000000 0.000000 745.919922 333.879395 %%BoundingBox: 0 0 746 334 %%HiResBoundingBox: 0.000000 0.000000 745.919922 333.879395 %%LanguageLevel: 2 %%DocumentData: Clean7Bit %%Pages: 1 %%DocumentNeededResources: font Times-Italic %%DocumentSuppliedResources: procset Adobe_CoolType_Core 1.1 0 %%+ procset Adobe_AGM_Core 2.0 0 %%DocumentFonts: Times-Italic %%DocumentSuppliedFonts: %%PageOrder: Ascend %%DocumentProcessColors: Black %%DocumentCustomColors: %%CMYKCustomColor: %%RGBCustomColor: %AI7_Thumbnail: 128 60 8 %%BeginData: 5928 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD91FFA8A8FFFFFFA8A8A8FD07FFA8FD32FFA8A8FFFFFFA8FD07FF %A8FFFFFFA8A8FD2BFF52FFFD04A87DA87DA8FFA87DFFA8FF7DA8A8A87DA8 %A8A87DFFA8FD27FF7DFF7DA8A8A87DFD09A8FFA87DA8FFFD05A87DA8A8A8 %FD1FFFFD047D527D527D7D7D527D527DFFA8FD047DA87D7D527D7DFF7DFD %26FFFD067D527D527D527D527D527DA8FF7DA8527D7DA8FD047DA8A8A8FD %22FF7DFD17FFA8FD29FF7DFD06FFA8A8FD11FFA8FDACFFA8A8A85227A8FD %3AFFA8A8A87DA85227A8FD34FF7DA87DA8FD3CFFA8A87DA8FD39FFA8A8A8 %FD3EFFA8A8FD3BFFA87DFD3FFFA8A8A8FD3AFFA8A8FD40FFA8FD3CFF7DA8 %FD3FFFA8A8FD3CFFA8FD41FFA8FD3CFFA8FD27FFA8A8FD17FFA8A8FD3CFF %A8FD26FFA8A8527DFD17FFA8FD3CFFA8FD24FFA87DA8FFFFFFA8FD16FFA8 %FD24FF52FD17FFA8FD23FFA8A8FD04FFA8527DFD15FFA8FD23FFA8A852A8 %FD36FFA87DA8A8FFFFFF7DA87DFFFFA8FD36FF7DA8A8FFFFFF277DFD33FF %7DA8A8FFFFFFA8A8A8FD04FF7D7DFD33FFA8A8A8FFFFFF7DA8A8FFA8FD30 %FF7DA8A8FFFFA87DA8A8FFFFFFA8A87DA87DA8FD30FF7DA8A8FFFFA87DA8 %A8FFFFFFA85252FD2CFFA8A8A8FFFFA8A8A8FD04FFA8A8A8FD05FFA8FD2D %FFA8A8A8FFFFA8A8A8FD04FFA8A8A8FD2CFF7DA87DFFA8A87DA8FFFFA8A8 %7DA8A8FD04FFA87DA8277DFD2AFFA8A87DFFA8A87DA8FFFFA8A87DA8A8FD %04FFA8277DFD25FFA8A87DFFA8A87DFFFFA87DA8A8FD04FFA87DFD04A8FF %FFFF7DFD27FFA8A8A8FFA8A8A8FFFFFFA8A87DFD04FFA8A8A87DA8FFFF7D %FD22FFA8A87DFF7DA87DFFA8A87DA8A8FFFFA87DA87DA8A8FD06FFA8277D %FD24FFA8A87DA87DA87DFFA8A87DA8A8FFFFA87DA87DA8A8FD06FF7D7DFD %1EFFFD0BA8FFFFFFFD04A8FD05FFFD07A8FFFFA8FD21FFFD07A8FFA8A8A8 %FFFFFFFD05A8FD05FFFD06A87DA8FD1BFFA8A87D7D7DA87DA87DA8A8A87D %A87DA8A8FFFFA87DA87DA87DA8A8FD08FFA8FFFFA8FD1BFFA8A87DA87DA8 %A8A87DA8A8FF7DA87DA8A8FFFFFF7DA87DA87DA8A8FD07FF7DFFFFFFA8FD %14FFA8A8FD047DA8A87DA8A8A87DA8FFFF7DA8A8A87DA8A8FD06FFA8A8A8 %7DA8A8A87D527DFFFFA87DA8FD08FFA8FD0EFFA87D7DA8A87DA8A8A87DFD %04A8FFA8A87DA8A8A87DFD06FFA87DA8A8A87DA87D52FFFFFFA87DA8FFFF %FFA87DA8FD0AFFA8FD077DA87DA87DA87DA87DA87DFFFFFF7DA87DA87DA8 %7DA87DA8FD09FFA8FFFFA87DA8FD07FFA87DA8FD0AFFA8FD057DA87DA87D %A8A8A87DA87DA87DFFFFFFA8A87DA87DA87DA87DA8FD08FFA8A8FFFFA87D %A8FD0DFFA8FD057DA87D7D7DFD0EA8FD0AFFFD08A8527DFFFFFFA8FD13FF %7D7D7DA87D7DA87D7DFD0EA8FD0AFFFD08A8527DFFFFFF7DFD04FFA8A8A8 %FD04FFA8FD05527D527D527D7DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA8FD09FFA8FFFFA8A8A8FD07FFA87DA8FD04FFA8525252 %7D527D52FD047DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA8FD09FFA8FFFFA87DA8FFFFFFA87DFFFF27F8FD0427FD0452FD0A7DA8 %7DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A87D7DFF %FFA87DFD08FFA87DFFFF52F827F82727FD0452FD0A7DA8A8A87DA8A8A87D %A8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87D7D7DFFFFA87DFD04FFA8 %7DA8FF7D27F8272752527D527D52A87DA87DA87DA87DA87DFD1BFF7DA8FF %FFA87DA8FD07FFA87DA8FF2727F82727FD04527D7DA87DA87DA87DA87DA8 %7DFD1BFF7DA8FFFFA87DA8FFFFFFA87DFD05FFA87D525252FD067DFD1BA8 %FD08FFA8FD0CFFA87DFD05FFA87D525252FD067DFD06A8FFFD14A8FD08FF %A8FD08FFA87DA8FD07FFA87D527D527D7DA8527D7DA87DA8A8A87DA87DA8 %7DA87DA87DFD0AFFA87DA87DA87DA8277DFFFF7D7DA8FD07FFA8A8A8FD07 %FF7D7D527D527D52A87D7D7DA87DA87DA87DA87DA87DA87DA8A8FD0AFFA8 %7DA87DA87DA8277DFFFF7D7DA8FFFFFFA8A8FD0BFFA8A87DA87DA87D7DA8 %A87DA8A8A87DFD04A8FFFFFF7DA8A8A87DA8A8A87DA8FD08FFA8FD0CFFA8 %7DFD0BFF7DA87DA87DA87D7D7DA8A8A87DA8A8A87DA8A8FFFFFFA8A87DA8 %A8A87DA8A8A8FD08FFA8FFFFFFA8FD04FF7DA8A8FD0DFF7DA852A87DA87D %A87DA87DA87DA8FFA87DA87DA87DA8FD07FFA87DA87DA87DA8277DFFFFA8 %7DA8FD07FF7DA8A8FD0DFF7DA87DA87D7D7DA87DA87DA87DA8FFFF7DA87D %A87DA8A8FD05FFA8A87DA87DA87D7D27FFFFFFA87DA8FD16FFA8A87DFD06 %A8FFFFFD05A8FFFFFFFD06A8FD09FFA8FFFFA8A8FD1BFFFD0AA8FFFD04A8 %FD05FFFD06A8FD07FFA8FFFFFFA8A8FD1AFF7DA87DA87DA8A8A87DA8A8FF %A8A87DA87DA8FD04FFA8A87DA87DA87DA87DA8FFFF7DA87DFD1CFFA87DA8 %A8A87DA8A8A87DA8A8FFA8A87DA87DA8FD05FFA87DA87DA87D7D7DFFFFFF %7D7D7DFD1CFF7DA8A8A87DA8FFFF7DA8A8A8FFFFFFA87DA8A8A8FD06FFA8 %527DFD25FFFD07A8FFA8A87DA8FFFFFD04A87DA8FD06FF52A8FD25FF7DA8 %A8A87DA8A8FFA8A87DA8A8FFFFFFA8A87DA87DA8FFFFFFA8FD27FFA87DA8 %A8A87DA8A8FFA8A87DA8A8FFFFFFA8A87DA87DA8A8A8FD29FFA8A8FFFFA8 %A8A8FFFFFFFD04A8FD05FFA8A8527DFD2AFFA8A8A8FFFFA8A8A8FFFFFFA8 %A8A8FD06FF527DFD2BFFA87DA8FFFF7DA87DFFFFFFA8A87DA8A8FD04FFA8 %FD2DFFA87DA8FFFFA8A87DFFFFFFA8A87DA8A8FFA8FD2FFFA8A8A8FFFFA8 %A87DA8FD04FFA8A87D7DA8FD30FFA87DA8FFFFFD04A8FD04FF527DFD32FF %A87DA8FFFFA8A87DA8FD04FF7D7DFD33FFA87DA8FFFFA8A87DA87DA8A8FD %35FFA8A8FD04FFA8A8A8FFFFA8FD36FFA8A8A8FFFFFF7DA8FD38FFA8A87D %A8FFFFFFA8277DFD38FFA8A87D527DFD3CFFA8A87DFFFFFF7DFD3BFF52FD %40FFA8A8277DFDFCFFFD79FFA8FD41FFA8FD3CFF7DFD40FFA87DFD26FF7D %FD14FFA8A8FD2BFF7DFD14FFA8A8FD27FF7DF8A8FD0FFFA87DA8FD2DFF7D %27A8FD0FFFA87DA8FD2BFFFD05A8FD07FFFD05A8FD32FFA87DA8A8FD07FF %A8A87DA8FD32FFA87DA87DA87DA87DA8FD3AFF7DA87DA87DA87DFDFCFFFD %FCFFFD22FFFF %%EndData %%EndComments %%BeginDefaults %%EndDefaults %%BeginProlog %%BeginResource: procset Adobe_AGM_Core 2.0 0 %%Version: 2.0 0 %%Copyright: Copyright (C) 1997-1999 Adobe Systems, Inc. All Rights Reserved. systemdict /setpacking known { currentpacking true setpacking } if userdict /Adobe_AGM_Core 233 dict dup begin put /nd{ null def }bind def /Adobe_AGM_Core_Id /Adobe_AGM_Core_2.0_0 def /AGMCORE_str256 256 string def /AGMCORE_src256 256 string def /AGMCORE_dst64 64 string def /AGMCORE_srcLen nd /AGMCORE_save nd /AGMCORE_graphicsave nd /AGMCORE_imagestring0 nd /AGMCORE_imagestring1 nd /AGMCORE_imagestring2 nd /AGMCORE_imagestring3 nd /AGMCORE_imagestring4 nd /AGMCORE_imagestring5 nd /AGMCORE_c 0 def /AGMCORE_m 0 def /AGMCORE_y 0 def /AGMCORE_k 0 def /AGMCORE_mbuf () def /AGMCORE_ybuf () def /AGMCORE_kbuf () def /AGMCORE_gbuf () def /AGMCORE_bbuf () def /AGMCORE_cmykbuf 4 array def /AGMCORE_screen [currentscreen] cvx def /AGMCORE_tmp 0 def /AGMCORE_arg1 nd /AGMCORE_arg2 nd /AGMCORE_&setgray nd /AGMCORE_&image nd /AGMCORE_&colorimage nd /AGMCORE_&imagemask nd /AGMCORE_&setcolor nd /AGMCORE_&setcolorspace nd /AGMCORE_&&setcolorspace nd /AGMCORE_cyan_plate nd /AGMCORE_magenta_plate nd /AGMCORE_yellow_plate nd /AGMCORE_black_plate nd /AGMCORE_plate_ndx nd /AGMCORE_get_ink_data nd /AGMCORE_is_cmyk_sep nd /AGMCORE_in_rip_sep nd /AGMCORE_host_sep nd /AGMCORE_will_host_sep nd /AGMCORE_avoid_L2_sep_space nd /AGMCORE_composite_job nd /AGMCORE_producing_seps nd /AGMCORE_ccimage_exists nd /AGMCORE_ps_level -1 def /AGMCORE_ps_version -1 def /AGMCORE_environ_ok nd /AGMCORE_CSA_cache 0 dict def /AGMCORE_CSD_cache 0 dict def /AGMCORE_pattern_cache 0 dict def /AGMCORE_currentoverprint false def /AGMCORE_deltaX nd /AGMCORE_deltaY nd /AGMCORE_name nd /AGMCORE_sep_special nd /AGMCORE_ndx nd /AGMCORE_err_strings nd /AGMCORE_cur_err nd /AGMCORE_ovp nd /AGMCORE_CRD_cache where{ pop }{ /AGMCORE_CRD_cache 0 dict def }ifelse /bdf { bind def } bind def /xdf { exch def } def /ldf { load def } def /ddf { put } def /xddf { 3 -1 roll put } def /xpt { exch put } def /bdict { mark } def /edict { counttomark 2 idiv dup dict begin {def} repeat pop currentdict end }def /ps_level /languagelevel where{ pop languagelevel }{ 1 }ifelse def /level2 ps_level 2 ge def /level3 ps_level 3 ge def /ps_version {version cvr} stopped { -1 }if def /ndf { 1 index where{ pop pop pop }{ dup xcheck {bind}if def }ifelse } def /skip_image { has_color ne{ dup 256 idiv {currentfile AGMCORE_str256 readstring pop pop}repeat currentfile AGMCORE_str256 0 4 -1 roll 256 mod getinterval readstring pop pop }{ pop }ifelse } def /addprocs { 2{/exec load}repeat 3 1 roll [ 5 1 roll ] bind cvx } def /colorbuf { 0 1 2 index length 1 sub { dup 2 index exch get 255 exch sub 2 index 3 1 roll put } for } def /makereadonlyarray { /packedarray where {pop packedarray} {array astore readonly} ifelse } def /getspotfunction { AGMCORE_screen exch pop exch pop dup type /dicttype eq { dup /HalftoneType get 1 eq { /SpotFunction get } { dup /HalftoneType get 2 eq { /GraySpotFunction get } { pop {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 sub} {dup mul exch dup mul add 1 exch sub}ifelse}bind } ifelse } ifelse } if } def /clp_npth { clip newpath } def /eoclp_npth { eoclip newpath } def /stkpath_clp_npth { strokepath clip newpath } def /stk_n_clp_npth { gsave stroke grestore clip newpath } def /npth_clp { newpath clip } def /graphic_setup { /AGMCORE_graphicsave save def concat 0 setgray 0 setlinecap 0 setlinejoin 1 setlinewidth [] 0 setdash 10 setmiterlimit newpath false setoverprint false setstrokeadjust userdict begin /showpage {} def mark } def /graphic_cleanup { cleartomark end AGMCORE_graphicsave restore } def /compose_error_msg { grestoreall initgraphics /Helvetica findfont 10 scalefont setfont /AGMCORE_deltaY 100 def /AGMCORE_deltaX 310 def /AGMCORE_arg2 xdf /AGMCORE_arg1 xdf clippath pathbbox newpath pop pop 36 add exch 36 add exch moveto 0 AGMCORE_deltaY rlineto AGMCORE_deltaX 0 rlineto 0 AGMCORE_deltaY neg rlineto AGMCORE_deltaX neg 0 rlineto closepath 0 AGMCORE_&setgray gsave 1 AGMCORE_&setgray fill grestore 1 setlinewidth gsave stroke grestore currentpoint AGMCORE_deltaY 15 sub add exch 8 add exch moveto /AGMCORE_deltaY 12 def /AGMCORE_tmp 0 def AGMCORE_err_strings exch get { dup 32 eq { pop AGMCORE_str256 0 AGMCORE_tmp getinterval dup (.) ne AGMCORE_arg1 0 lt and { pop } { stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt { currentpoint AGMCORE_deltaY sub exch pop clippath pathbbox pop pop pop 44 add exch moveto } if AGMCORE_str256 0 AGMCORE_tmp getinterval show ( ) show } ifelse 0 1 AGMCORE_str256 length 1 sub { AGMCORE_str256 exch 0 put }for /AGMCORE_tmp 0 def } { dup 94 eq { pop AGMCORE_arg1 0 ge { AGMCORE_arg1 AGMCORE_str256 cvs dup /AGMCORE_tmp exch length def AGMCORE_str256 exch 0 exch putinterval AGMCORE_str256 0 AGMCORE_tmp getinterval stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt { currentpoint AGMCORE_deltaY sub exch pop clippath pathbbox pop pop pop 44 add exch moveto } if AGMCORE_str256 0 AGMCORE_tmp getinterval show } { /AGMCORE_arg1 0 def } ifelse 0 1 AGMCORE_str256 length 1 sub { AGMCORE_str256 exch 0 put }for /AGMCORE_tmp 0 def AGMCORE_arg1 0 ne { /AGMCORE_arg1 AGMCORE_arg2 def } if } { AGMCORE_str256 exch AGMCORE_tmp exch put /AGMCORE_tmp AGMCORE_tmp 1 add def }ifelse } ifelse } forall } bdf level2{ /AGMCORE_map_reserved_ink_name { dup type /stringtype eq{ dup /Red eq{ pop (_Red_) }{ dup /Green eq{ pop (_Green_) }{ dup /Blue eq{ pop (_Blue_) }{ dup /Cyan eq{ pop (_Cyan_) }{ dup /Magenta eq{ pop (_Magenta_) }{ dup /Yellow eq{ pop (_Yellow_) }{ dup /Black eq{ pop (_Black_) }{ dup / eq{ pop (Process) }if }ifelse }ifelse }ifelse }ifelse }ifelse }ifelse }ifelse }if }def }if /doc_setup{ Adobe_AGM_Core begin /AGMCORE_will_host_separate xdf /AGMCORE_ps_version xdf /AGMCORE_ps_level xdf errordict /AGM_handleerror known not { errordict /AGM_handleerror errordict /handleerror get put errordict /handleerror { Adobe_AGM_Core begin $error /newerror get AGMCORE_cur_err null ne and { $error /newerror false put AGMCORE_cur_err /AGMCORE_bad_environ eq { /AGMCORE_bad_environ AGMCORE_ps_level AGMCORE_ps_version } { AGMCORE_cur_err 0 0 } ifelse compose_error_msg } if $error /newerror true put end errordict /AGM_handleerror get exec } bind put }if /AGMCORE_environ_ok ps_level AGMCORE_ps_level ge ps_version AGMCORE_ps_version ge and AGMCORE_ps_level -1 eq or def AGMCORE_environ_ok not {/AGMCORE_cur_err /AGMCORE_bad_environ def} if /AGMCORE_&setgray systemdict/setgray get def level2{ /AGMCORE_&setcolor systemdict/setcolor get def /AGMCORE_&setcolorspace systemdict/setcolorspace get def /AGMCORE_&&setcolorspace /setcolorspace ldf }if /AGMCORE_&image systemdict/image get def /AGMCORE_&imagemask systemdict/imagemask get def /colorimage where{ pop /AGMCORE_&colorimage /colorimage ldf }if /AGMCORE_in_rip_sep level2{ currentpagedevice/Separations 2 copy known{ get }{ pop pop false }ifelse }{ false }ifelse def level2 not{ /xput{ dup load dup length exch maxlength eq{ dup dup load dup length dup 0 eq {pop 1} if 2 mul dict copy def }if load begin def end }def }{ /xput{ load 3 1 roll put }def }ifelse /AGMCORE_gstate_known{ where{ /Adobe_AGM_Core_Id known }{ false }ifelse }ndf /AGMCORE_GSTATE AGMCORE_gstate_known not{ /AGMCORE_GSTATE 21 dict def /AGMCORE_tmpmatrix matrix def /AGMCORE_gstack 32 array def /AGMCORE_gstackptr 0 def /AGMCORE_gstacksaveptr 0 def /AGMCORE_gstackframekeys 7 def /AGMCORE_&gsave /gsave ldf /AGMCORE_&grestore /grestore ldf /AGMCORE_&grestoreall /grestoreall ldf /AGMCORE_&save /save ldf /AGMCORE_gdictcopy { begin { def } forall end }def /AGMCORE_gput { AGMCORE_gstack AGMCORE_gstackptr get 3 1 roll put }def /AGMCORE_gget { AGMCORE_gstack AGMCORE_gstackptr get exch get }def /gsave { AGMCORE_&gsave AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gstackptr 1 add dup 32 ge {limitcheck} if Adobe_AGM_Core exch /AGMCORE_gstackptr exch put AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gdictcopy }def /grestore { AGMCORE_&grestore AGMCORE_gstackptr 1 sub dup AGMCORE_gstacksaveptr lt {1 add} if Adobe_AGM_Core exch /AGMCORE_gstackptr exch put }def /grestoreall { AGMCORE_&grestoreall Adobe_AGM_Core /AGMCORE_gstackptr AGMCORE_gstacksaveptr put }def /save { AGMCORE_&save AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gstackptr 1 add dup 32 ge {limitcheck} if Adobe_AGM_Core begin /AGMCORE_gstackptr exch def /AGMCORE_gstacksaveptr AGMCORE_gstackptr def end AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gdictcopy }def 0 1 AGMCORE_gstack length 1 sub { AGMCORE_gstack exch AGMCORE_gstackframekeys dict put } for }if /currentcmykcolor [0 0 0 0] AGMCORE_gput /currentstrokeadjust false AGMCORE_gput /currentcolorspace [/DeviceGray] AGMCORE_gput /sep_tint 0 AGMCORE_gput /sep_colorspace_dict null AGMCORE_gput /indexed_colorspace_dict null AGMCORE_gput /currentcolor_intent () AGMCORE_gput end }def /page_setup { Adobe_AGM_Core begin /setcmykcolor { 4 copy AGMCORE_cmykbuf astore /currentcmykcolor exch AGMCORE_gput 1 sub 4 1 roll 3 { 3 index add neg dup 0 lt { pop 0 } if 3 1 roll } repeat setrgbcolor pop }ndf /AGMCORE_ccimage_exists /customcolorimage where {pop true}{false} ifelse def /currentcmykcolor { /currentcmykcolor AGMCORE_gget aload pop }ndf /setoverprint { pop }ndf /currentoverprint { false }ndf /AGMCORE_deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt def /AGMCORE_cyan_plate 1 0 0 0 test_cmyk_color_plate def /AGMCORE_magenta_plate 0 1 0 0 test_cmyk_color_plate def /AGMCORE_yellow_plate 0 0 1 0 test_cmyk_color_plate def /AGMCORE_black_plate 0 0 0 1 test_cmyk_color_plate def /AGMCORE_plate_ndx AGMCORE_cyan_plate{ 0 }{ AGMCORE_magenta_plate{ 1 }{ AGMCORE_yellow_plate{ 2 }{ AGMCORE_black_plate{ 3 }{ 4 }ifelse }ifelse }ifelse }ifelse def /AGMCORE_composite_job AGMCORE_cyan_plate AGMCORE_magenta_plate and AGMCORE_yellow_plate and AGMCORE_black_plate and def /AGMCORE_producing_seps AGMCORE_composite_job not AGMCORE_in_rip_sep or def /AGMCORE_host_sep AGMCORE_producing_seps AGMCORE_in_rip_sep not and def /AGM_preserve_spots /AGM_preserve_spots where{ pop AGM_preserve_spots }{ systemdict/setdistillerparams known product (Adobe PostScript Parser) ne and AGMCORE_producing_seps or }ifelse def AGMCORE_host_sep AGMCORE_will_host_separate not and { /AGMCORE_cur_err /AGMCORE_color_space_onhost_seps def AGMCORE_color_space_onhost_seps }if /AGMCORE_avoid_L2_sep_space version cvr 2012 lt level2 and AGMCORE_producing_seps not and def /AGMCORE_is_cmyk_sep AGMCORE_cyan_plate AGMCORE_magenta_plate or AGMCORE_yellow_plate or AGMCORE_black_plate or def /AGM_avoid_0_cmyk where{ pop AGM_avoid_0_cmyk }{ AGM_preserve_spots }ifelse { /setcmykcolor[ {4 copy add add add 0 eq currentoverprint and{pop 0.0005}if}/exec cvx /setcmykcolor load dup type/operatortype ne{/exec cvx}if ]cvx def }if AGMCORE_host_sep{ /AGMCORE_get_ink_data AGMCORE_cyan_plate{ {pop pop pop} }{ AGMCORE_magenta_plate{ {4 3 roll pop pop pop} }{ AGMCORE_yellow_plate{ {4 2 roll pop pop pop} }{ {4 1 roll pop pop pop} }ifelse }ifelse }ifelse def }if AGMCORE_in_rip_sep{ /setcustomcolor { exch aload pop dup 7 1 roll inRip_spot_has_ink not { 4 {4 index mul 4 1 roll} repeat /DeviceCMYK setcolorspace 6 -2 roll pop pop }{ Adobe_AGM_Core begin /AGMCORE_k xdf /AGMCORE_y xdf /AGMCORE_m xdf /AGMCORE_c xdf end [/Separation 4 -1 roll /DeviceCMYK {dup AGMCORE_c mul exch dup AGMCORE_m mul exch dup AGMCORE_y mul exch AGMCORE_k mul} ] setcolorspace }ifelse setcolor }ndf /setseparationgray { [/Separation (All) /DeviceGray {}] setcolorspace_opt 1 exch sub setcolor }ndf }{ /setseparationgray { AGMCORE_&setgray }ndf }ifelse /findcmykcustomcolor { 5 makereadonlyarray }ndf /setcustomcolor { exch aload pop pop 4 {4 index mul 4 1 roll} repeat setcmykcolor pop }ndf /has_color /colorimage where{ AGMCORE_producing_seps{ pop true }{ systemdict eq }ifelse }{ false }ifelse def /map_index { 1 index mul exch getinterval {255 div} forall }def level2{ /mo /moveto ldf /ln /lineto ldf /cv /curveto ldf /knockout_unitsq { 1 setgray 0 0 1 1 rectfill }def /level2ScreenFreq{ begin 60 HalftoneType 1 eq{ pop Frequency }if HalftoneType 2 eq{ pop GrayFrequency }if HalftoneType 5 eq{ pop Default level2ScreenFreq }if end }def /currentScreenFreq{ currenthalftone level2ScreenFreq }def /invert_image_samples { Adobe_AGM_Core/AGMCORE_tmp Decode length ddf /Decode [ Decode 1 get Decode 0 get] def }def /knockout_image_samples { Operator/imagemask ne{ /Decode [1 1] def }if }def /get_gstate { AGMCORE_GSTATE begin /AGMCORE_GSTATE_ctm AGMCORE_tmpmatrix currentmatrix def /AGMCORE_GSTATE_clr_spc currentcolorspace def /AGMCORE_GSTATE_clr_indx 0 def /AGMCORE_GSTATE_clr_comps 12 array def mark currentcolor counttomark {AGMCORE_GSTATE_clr_comps AGMCORE_GSTATE_clr_indx 3 -1 roll put /AGMCORE_GSTATE_clr_indx AGMCORE_GSTATE_clr_indx 1 add def} repeat pop /AGMCORE_GSTATE_fnt rootfont def /AGMCORE_GSTATE_lw currentlinewidth def /AGMCORE_GSTATE_lc currentlinecap def /AGMCORE_GSTATE_lj currentlinejoin def /AGMCORE_GSTATE_ml currentmiterlimit def currentdash /AGMCORE_GSTATE_do xdf /AGMCORE_GSTATE_da xdf /AGMCORE_GSTATE_sa currentstrokeadjust def /AGMCORE_GSTATE_clr_rnd currentcolorrendering def /AGMCORE_GSTATE_op currentoverprint def /AGMCORE_GSTATE_bg currentblackgeneration cvlit def /AGMCORE_GSTATE_ucr currentundercolorremoval cvlit def currentcolortransfer cvlit /AGMCORE_GSTATE_gy_xfer xdf cvlit /AGMCORE_GSTATE_b_xfer xdf cvlit /AGMCORE_GSTATE_g_xfer xdf cvlit /AGMCORE_GSTATE_r_xfer xdf /AGMCORE_GSTATE_ht currenthalftone def /AGMCORE_GSTATE_flt currentflat def end }ndf /set_gstate { AGMCORE_GSTATE begin AGMCORE_GSTATE_ctm setmatrix AGMCORE_GSTATE_clr_spc setcolorspace AGMCORE_GSTATE_clr_indx {AGMCORE_GSTATE_clr_comps AGMCORE_GSTATE_clr_indx 1 sub get /AGMCORE_GSTATE_clr_indx AGMCORE_GSTATE_clr_indx 1 sub def} repeat setcolor AGMCORE_GSTATE_fnt setfont AGMCORE_GSTATE_lw setlinewidth AGMCORE_GSTATE_lc setlinecap AGMCORE_GSTATE_lj setlinejoin AGMCORE_GSTATE_ml setmiterlimit AGMCORE_GSTATE_da AGMCORE_GSTATE_do setdash AGMCORE_GSTATE_sa setstrokeadjust AGMCORE_GSTATE_clr_rnd setcolorrendering AGMCORE_GSTATE_op setoverprint AGMCORE_GSTATE_bg cvx setblackgeneration AGMCORE_GSTATE_ucr cvx setundercolorremoval AGMCORE_GSTATE_r_xfer cvx AGMCORE_GSTATE_g_xfer cvx AGMCORE_GSTATE_b_xfer cvx AGMCORE_GSTATE_gy_xfer cvx setcolortransfer AGMCORE_GSTATE_ht /HalftoneType get dup 9 eq exch 100 eq or { currenthalftone /HalftoneType get AGMCORE_GSTATE_ht /HalftoneType get ne { mark AGMCORE_GSTATE_ht {sethalftone} stopped cleartomark } if }{ AGMCORE_GSTATE_ht sethalftone } ifelse AGMCORE_GSTATE_flt setflat end }ndf AGMCORE_producing_seps not{ /setcolorspace where{ /Adobe_AGM_Core_Id known not }{ true }ifelse { /setcolorspace { dup type dup /arraytype eq exch /packedarraytype eq or{ dup 0 get dup /Separation eq{ pop [ exch {} forall ] dup dup 1 get AGMCORE_map_reserved_ink_name 1 exch put }{ /DeviceN eq { [ exch {} forall ] dup dup 1 get [ exch {AGMCORE_map_reserved_ink_name} forall ] 1 exch put }if }ifelse }if AGMCORE_&&setcolorspace }def }if }if }{ /adj { currentstrokeadjust{ transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform }if }def /mo{ adj moveto }def /ln{ adj lineto }def /cv{ 6 2 roll adj 6 2 roll adj 6 2 roll adj curveto }def /knockout_unitsq { 1 setgray 8 8 1 [8 0 0 8 0 0] {} image }def /currentstrokeadjust{ /currentstrokeadjust AGMCORE_gget }def /setstrokeadjust{ /currentstrokeadjust exch AGMCORE_gput }def /currentScreenFreq{ currentscreen pop pop }def /invert_image_samples { {1 exch sub} currenttransfer addprocs settransfer }def /knockout_image_samples { { pop 1 } currenttransfer addprocs settransfer }def /setcolorspace { /currentcolorspace exch AGMCORE_gput } def /currentcolorspace { /currentcolorspace AGMCORE_gget } def /n_color_components { dup type /arraytype eq{ 0 get }if dup /DeviceGray eq{ pop 1 }{ /DeviceCMYK eq{ 4 }{ 3 }ifelse }ifelse } def /setcolor_devicecolor { dup type /arraytype eq{ 0 get }if dup /DeviceGray eq{ pop setgray }{ /DeviceCMYK eq{ setcmykcolor }{ setrgbcolor }ifelse }ifelse }def /setcolor { currentcolorspace 0 get dup /DeviceGray ne{ dup /DeviceCMYK ne{ dup /DeviceRGB ne{ dup /Separation eq{ pop currentcolorspace 3 get exec currentcolorspace 2 get }{ dup /Indexed eq{ pop currentcolorspace 3 get dup type /stringtype eq{ currentcolorspace 1 get n_color_components 3 -1 roll map_index }{ exec }ifelse currentcolorspace 1 get }{ /AGMCORE_cur_err /AGMCORE_invalid_color_space def AGMCORE_invalid_color_space }ifelse }ifelse }if }if }if setcolor_devicecolor } def }ifelse /op /setoverprint ldf /lw /setlinewidth ldf /lc /setlinecap ldf /lj /setlinejoin ldf /ml /setmiterlimit ldf /dsh /setdash ldf /sadj /setstrokeadjust ldf /gry /setgray ldf /rgb /setrgbcolor ldf /cmyk /setcmykcolor ldf /sep /setsepcolor ldf /idx /setindexedcolor ldf /colr /setcolor ldf /csacrd /set_csa_crd ldf /sepcs /setsepcolorspace ldf /idxcs /setindexedcolorspace ldf /cp /closepath ldf /clp /clp_npth ldf /eclp /eoclp_npth ldf /spclp /stkpath_clp_npth ldf /f /fill ldf /ef /eofill ldf /s /stroke ldf /sclp /stk_n_clp_npth ldf /nclp /npth_clp ldf /img /imageormask ldf /sepimg /sep_imageormask ldf /idximg /indexed_imageormask ldf /gset /graphic_setup ldf /gcln /graphic_cleanup ldf currentdict{ dup xcheck 1 index type dup /arraytype eq exch /packedarraytype eq or and { bind }if def }forall }def /page_trailer { end }def /unload{ systemdict/languagelevel known{ systemdict/languagelevel get 2 ge{ userdict/Adobe_AGM_Core 2 copy known{ undef }{ pop pop }ifelse }if }if }def /doc_trailer{ }def systemdict /findcolorrendering known{ /findcolorrendering systemdict /findcolorrendering get def }if systemdict /setcolorrendering known{ /setcolorrendering systemdict /setcolorrendering get def }if /test_cmyk_color_plate { gsave setcmykcolor currentgray 1 ne grestore }def /inRip_spot_has_ink { Adobe_AGM_Core/AGMCORE_name xddf false currentpagedevice/SeparationColorNames get{ AGMCORE_name eq or }forall }def /current_ink { dup length 0 eq{ pop true }{ Adobe_AGM_Core/ink_result false put { dup /ProcessCyan eq{ AGMCORE_cyan_plate ink_result or Adobe_AGM_Core/ink_result xddf }{ dup /ProcessMagenta eq{ AGMCORE_magenta_plate ink_result or Adobe_AGM_Core/ink_result xddf }{ dup /ProcessYellow eq{ AGMCORE_yellow_plate ink_result or Adobe_AGM_Core/ink_result xddf }{ dup /ProcessBlack eq{ AGMCORE_black_plate ink_result or Adobe_AGM_Core/ink_result xddf }{ dup /sep_colorspace_dict AGMCORE_gget dup null eq{ pop false ink_result or Adobe_AGM_Core/ink_result xddf }{ /Name get eq{ 1 setsepcolor currentgray 1 ne ink_result or Adobe_AGM_Core/ink_result xddf }{ false ink_result or Adobe_AGM_Core/ink_result xddf }ifelse }ifelse }ifelse }ifelse }ifelse }ifelse pop } forall ink_result }ifelse }def /map255_to_range { 1 index sub 3 -1 roll 255 div mul add }def /set_csa_crd { /sep_colorspace_dict null AGMCORE_gput begin CSA map_csa setcolorspace_opt set_crd end } def /setsepcolor { /sep_colorspace_dict AGMCORE_gget begin dup /sep_tint exch AGMCORE_gput TintProc end } def /sep_colorspace_proc { Adobe_AGM_Core/AGMCORE_tmp xddf /sep_colorspace_dict AGMCORE_gget begin currentdict/Components known{ Components aload pop TintMethod/Lab eq{ 2 {AGMCORE_tmp mul NComponents 1 roll} repeat LMax sub AGMCORE_tmp mul LMax add NComponents 1 roll }{ TintMethod/Subtractive eq{ NComponents{ AGMCORE_tmp mul NComponents 1 roll }repeat }{ NComponents{ 1 sub AGMCORE_tmp mul 1 add NComponents 1 roll } repeat }ifelse }ifelse }{ ColorLookup AGMCORE_tmp ColorLookup length 1 sub mul round cvi get aload pop }ifelse end } def /sep_colorspace_gray_proc { Adobe_AGM_Core/AGMCORE_tmp xddf /sep_colorspace_dict AGMCORE_gget begin GrayLookup AGMCORE_tmp GrayLookup length 1 sub mul round cvi get end } def /sep_proc_name { dup 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or level2 not and has_color not and{ pop [/DeviceGray] /sep_colorspace_gray_proc }{ /sep_colorspace_proc }ifelse } def /setsepcolorspace { dup /sep_colorspace_dict exch AGMCORE_gput begin /MappedCSA CSA map_csa def Adobe_AGM_Core/AGMCORE_sep_special Name dup () eq exch (All) eq or ddf AGMCORE_avoid_L2_sep_space{ [/Indexed MappedCSA sep_proc_name 255 exch { 255 div } /exec cvx 3 -1 roll [ 4 1 roll load /exec cvx ] cvx ] setcolorspace_opt /TintProc { 255 mul setcolor }bdf }{ MappedCSA 0 get /DeviceCMYK eq currentdict/Components known and AGMCORE_sep_special not and{ /TintProc [ Components aload pop Name findcmykcustomcolor /exch cvx /setcustomcolor cvx ] cvx bdf }{ AGMCORE_host_sep Name (All) eq and{ /TintProc { 1 exch sub setseparationgray }bdf }{ AGMCORE_in_rip_sep MappedCSA 0 get /DeviceCMYK eq and AGMCORE_host_sep or Name () eq and{ /TintProc [ MappedCSA sep_proc_name exch 0 get /DeviceCMYK eq{ cvx /setcmykcolor cvx }{ cvx /setgray cvx }ifelse ] cvx bdf }{ AGMCORE_producing_seps MappedCSA 0 get dup /DeviceCMYK eq exch /DeviceGray eq or and AGMCORE_sep_special not and{ /TintProc [ /dup cvx MappedCSA sep_proc_name cvx exch 0 get /DeviceGray eq{ 1 /exch cvx /sub cvx 0 0 0 4 -1 /roll cvx }if /Name cvx /findcmykcustomcolor cvx /exch cvx AGMCORE_host_sep{ AGMCORE_is_cmyk_sep }{ Name inRip_spot_has_ink not }ifelse { /pop cvx 1 }if /setcustomcolor cvx ] cvx bdf }{ /TintProc /setcolor ldf [/Separation Name MappedCSA sep_proc_name load ] setcolorspace_opt }ifelse }ifelse }ifelse }ifelse }ifelse set_crd 1 setsepcolor end } def /setindexedcolorspace { dup /indexed_colorspace_dict exch AGMCORE_gput begin /MappedCSA CSA map_csa def AGMCORE_host_sep level2 not and{ 0 0 0 0 setcmykcolor }{ [/Indexed MappedCSA level2 not has_color not and{ dup 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or{ pop [/DeviceGray] }if HiVal GrayLookup }{ HiVal currentdict/RangeArray known{ { /indexed_colorspace_dict AGMCORE_gget begin Lookup exch dup HiVal gt{ pop HiVal }if NComponents mul NComponents getinterval {} forall NComponents 1 sub -1 0{ RangeArray exch 2 mul 2 getinterval aload pop map255_to_range NComponents 1 roll }for end } bind }{ Lookup }ifelse }ifelse ] setcolorspace_opt set_crd }ifelse end }def /setindexedcolor { AGMCORE_host_sep{ /indexed_colorspace_dict AGMCORE_gget/Lookup get 4 3 -1 roll map_index setcmykcolor }{ setcolor }ifelse } def /imageormask_sys { begin save mark level2{ currentdict Operator /imagemask eq{ AGMCORE_&imagemask }{ AGMCORE_&image }ifelse }{ Width Height Operator /imagemask eq{ Decode 0 get 1 eq Decode 1 get 0 eq and ImageMatrix /DataSource load AGMCORE_&imagemask }{ BitsPerComponent ImageMatrix /DataSource load AGMCORE_&image }ifelse }ifelse cleartomark restore end }def /overprint_plate { currentoverprint{ 0 get dup /DeviceGray eq{ pop AGMCORE_black_plate not }{ /DeviceCMYK eq{ AGMCORE_is_cmyk_sep not }if }ifelse }{ false }ifelse }def /rdline { currentfile AGMCORE_str256 readline pop } def /rdcmntline { currentfile AGMCORE_str256 readline pop (%) anchorsearch {pop} if } def /filter_cmyk { dup type /filetype ne{ 0 () /SubFileDecode filter }if [ exch { AGMCORE_src256 readstring pop dup length /AGMCORE_srcLen exch def /AGMCORE_ndx 0 def AGMCORE_plate_ndx 4 AGMCORE_srcLen 1 sub{ 1 index exch get AGMCORE_dst64 AGMCORE_ndx 3 -1 roll put /AGMCORE_ndx AGMCORE_ndx 1 add def }for pop AGMCORE_dst64 0 AGMCORE_ndx getinterval } bind /exec cvx ] cvx } def /imageormask { begin SkipImageProc not{ save mark level2 AGMCORE_host_sep not and{ currentdict Operator /imagemask eq{ imagemask }{ AGMCORE_in_rip_sep currentoverprint and currentcolorspace 0 get /DeviceGray eq and{ [/Separation /Black /DeviceGray {}] setcolorspace /Decode [ Decode 1 get Decode 0 get ] def }if image }ifelse }{ Width Height Operator /imagemask eq{ Decode 0 get 1 eq Decode 1 get 0 eq and ImageMatrix /DataSource load AGMCORE_host_sep{ currentgray 1 ne{ currentdict imageormask_sys }{ currentoverprint not{ 1 AGMCORE_&setgray knockout_image_samples currentdict imageormask_sys }{ nulldevice currentdict imageormask_sys }ifelse }ifelse }{ imagemask }ifelse }{ BitsPerComponent ImageMatrix MultipleDataSources{ 0 1 NComponents 1 sub{ DataSource exch get }for }{ /DataSource load }ifelse Operator /colorimage eq{ AGMCORE_host_sep{ MultipleDataSources level2 or NComponents 4 eq and{ MultipleDataSources{ 4 {pop} repeat /DataSource [ DataSource 0 get /exec cvx DataSource 1 get /exec cvx DataSource 2 get /exec cvx DataSource 3 get /exec cvx /AGMCORE_get_ink_data cvx ] cvx def }{ /DataSource /DataSource load filter_cmyk 0 () /SubFileDecode filter def }ifelse /Decode [ Decode 0 get Decode 1 get ] def /MultipleDataSources false def /NComponents 1 def /Operator /image def AGMCORE_is_cmyk_sep{ currentoverprint InksUsed current_ink not and{ nulldevice }{ invert_image_samples }ifelse }{ currentoverprint not{ knockout_image_samples }{ nulldevice }ifelse }ifelse 1 AGMCORE_&setgray currentdict imageormask_sys }{ currentcolortransfer {pop 1} exch addprocs 4 1 roll {pop 1} exch addprocs 4 1 roll {pop 1} exch addprocs 4 1 roll {pop 1} exch addprocs 4 1 roll setcolortransfer MultipleDataSources NComponents AGMCORE_&colorimage }ifelse }{ true NComponents colorimage }ifelse }{ Operator /image eq{ AGMCORE_host_sep{ HostSepColorImage{ invert_image_samples }{ AGMCORE_black_plate not{ currentoverprint not{ knockout_image_samples }{ nulldevice }ifelse }if }ifelse 1 AGMCORE_&setgray currentdict imageormask_sys }{ image }ifelse }{ Operator/knockout eq{ pop pop pop pop pop currentoverprint InksUsed current_ink not and{ }{ currentcolorspace overprint_plate not{ knockout_unitsq }if }ifelse }if }ifelse }ifelse }ifelse }ifelse cleartomark restore }if end }def /tint_image_to_color { begin Width Height BitsPerComponent ImageMatrix /DataSource load end Adobe_AGM_Core begin /AGMCORE_mbuf 0 string def /AGMCORE_ybuf 0 string def /AGMCORE_kbuf 0 string def { colorbuf dup length AGMCORE_mbuf length ne { dup length dup dup /AGMCORE_mbuf exch string def /AGMCORE_ybuf exch string def /AGMCORE_kbuf exch string def } if dup AGMCORE_mbuf copy AGMCORE_ybuf copy AGMCORE_kbuf copy pop } addprocs {AGMCORE_mbuf}{AGMCORE_ybuf}{AGMCORE_kbuf} true 4 colorimage end } def /sep_imageormask_lev1 { begin MappedCSA 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or has_color not and{ { 255 mul round cvi GrayLookup exch get } currenttransfer addprocs settransfer currentdict imageormask }{ /sep_colorspace_dict AGMCORE_gget/Components known{ MappedCSA 0 get /DeviceCMYK eq{ Components aload pop }{ 0 0 0 Components aload pop 1 exch sub }ifelse Adobe_AGM_Core/AGMCORE_k xddf Adobe_AGM_Core/AGMCORE_y xddf Adobe_AGM_Core/AGMCORE_m xddf Adobe_AGM_Core/AGMCORE_c xddf AGMCORE_y 0.0 eq AGMCORE_m 0.0 eq and AGMCORE_c 0.0 eq and{ {AGMCORE_k mul 1 exch sub} currenttransfer addprocs settransfer currentdict imageormask }{ currentcolortransfer {AGMCORE_k mul 1 exch sub} exch addprocs 4 1 roll {AGMCORE_y mul 1 exch sub} exch addprocs 4 1 roll {AGMCORE_m mul 1 exch sub} exch addprocs 4 1 roll {AGMCORE_c mul 1 exch sub} exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }ifelse }{ MappedCSA 0 get /DeviceGray eq { {255 mul round cvi ColorLookup exch get 0 get} currenttransfer addprocs settransfer currentdict imageormask }{ MappedCSA 0 get /DeviceCMYK eq { currentcolortransfer {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }{ currentcolortransfer {pop 1} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 2 get} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 1 get} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 0 get} exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }ifelse }ifelse }ifelse }ifelse end }def /sep_image_lev1_sep { begin /sep_colorspace_dict AGMCORE_gget/Components known{ Components aload pop Adobe_AGM_Core/AGMCORE_k xddf Adobe_AGM_Core/AGMCORE_y xddf Adobe_AGM_Core/AGMCORE_m xddf Adobe_AGM_Core/AGMCORE_c xddf {AGMCORE_c mul 1 exch sub} {AGMCORE_m mul 1 exch sub} {AGMCORE_y mul 1 exch sub} {AGMCORE_k mul 1 exch sub} }{ {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} }ifelse AGMCORE_get_ink_data currenttransfer addprocs settransfer currentdict imageormask_sys end }def /sep_imageormask { /sep_colorspace_dict AGMCORE_gget begin /MappedCSA CSA map_csa def begin SkipImageProc not{ save mark AGMCORE_avoid_L2_sep_space{ /Decode [ Decode 0 get 255 mul Decode 1 get 255 mul ] def }if AGMCORE_ccimage_exists MappedCSA 0 get /DeviceCMYK eq and currentdict/Components known and Name () ne and Name (All) ne and Operator /image eq and AGMCORE_producing_seps not and level2 not and { Width Height BitsPerComponent ImageMatrix [ /DataSource load /exec cvx { 0 1 2 index length 1 sub{ 1 index exch 2 copy get 255 xor put }for } /exec cvx ] cvx bind MappedCSA 0 get /DeviceCMYK eq{ Components aload pop }{ 0 0 0 Components aload pop 1 exch sub }ifelse Name findcmykcustomcolor customcolorimage }{ AGMCORE_producing_seps not{ level2{ AGMCORE_avoid_L2_sep_space not currentcolorspace 0 get /Separation ne and{ [/Separation Name MappedCSA sep_proc_name load ] setcolorspace_opt /sep_tint AGMCORE_gget setcolor }if currentdict imageormask }{ currentdict Operator /imagemask eq{ imageormask }{ sep_imageormask_lev1 }ifelse }ifelse }{ AGMCORE_host_sep{ Operator/knockout eq{ currentoverprint InksUsed current_ink not and{ }{ currentdict/ImageMatrix get concat knockout_unitsq }ifelse }{ currentgray 1 ne{ AGMCORE_is_cmyk_sep Name (All) ne and{ level2{ [ /Separation Name [/DeviceGray] { sep_colorspace_proc AGMCORE_get_ink_data 1 exch sub } bind ] AGMCORE_&setcolorspace /sep_tint AGMCORE_gget AGMCORE_&setcolor currentdict imageormask_sys }{ currentdict Operator /imagemask eq{ imageormask_sys }{ sep_image_lev1_sep }ifelse }ifelse }{ Operator/imagemask ne{ invert_image_samples }if currentdict imageormask_sys }ifelse }{ currentoverprint not Name (All) eq or{ knockout_image_samples }{ nulldevice }ifelse currentdict imageormask_sys }ifelse }ifelse }{ currentcolorspace 0 get /Separation ne{ [/Separation Name MappedCSA sep_proc_name load ] setcolorspace_opt /sep_tint AGMCORE_gget setcolor }if currentoverprint MappedCSA 0 get /DeviceCMYK eq and Name inRip_spot_has_ink not and Name (All) ne and { imageormask_l2_overprint }{ currentdict imageormask }ifelse }ifelse }ifelse }ifelse cleartomark restore }if end end }def /modify_halftone_xfer { currenthalftone dup length dict copy begin currentdict 2 index known{ 1 index load dup length dict copy begin currentdict/TransferFunction known{ /TransferFunction load }{ currenttransfer }ifelse addprocs /TransferFunction xdf currentdict end def currentdict end sethalftone }{ currentdict/TransferFunction known{ /TransferFunction load }{ currenttransfer }ifelse addprocs /TransferFunction xdf currentdict end sethalftone pop }ifelse }def /read_image_file { AGMCORE_imagefile 0 setfileposition dup /DataSource {AGMCORE_imagefile AGMCORE_imbuf readstring pop} put exch load exec }def /write_image_file { { (AGMCORE_imagefile) (w+) file } stopped{ false }{ Adobe_AGM_Core/AGMCORE_imagefile xddf Adobe_AGM_Core/AGMCORE_imbuf Width BitsPerComponent mul 7 add 8 idiv string ddf 1 1 Height { pop DataSource dup type /filetype eq{ AGMCORE_imbuf readstring pop }{ exec } ifelse AGMCORE_imagefile exch writestring }for true }ifelse }def /imageormask_l2_overprint { write_image_file{ currentcmykcolor 0 ne{ [/Separation /Black /DeviceGray {}] setcolorspace gsave /Black [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {4 1 roll pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation /Yellow /DeviceGray {}] setcolorspace gsave /Yellow [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {4 2 roll pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation /Magenta /DeviceGray {}] setcolorspace gsave /Magenta [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {4 3 roll pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation /Cyan /DeviceGray {}] setcolorspace gsave /Cyan [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore } if AGMCORE_imagefile closefile (AGMCORE_imagefile) deletefile }{ currentdict imageormask }ifelse } def /indexed_imageormask { begin save mark currentdict AGMCORE_host_sep{ Operator/knockout eq{ /indexed_colorspace_dict AGMCORE_gget /CSA get map_csa overprint_plate not{ knockout_unitsq }if }{ AGMCORE_is_cmyk_sep{ Operator /imagemask eq{ imageormask_sys }{ level2{ indexed_image_lev2_sep }{ indexed_image_lev1_sep }ifelse }ifelse }{ currentoverprint not{ knockout_image_samples imageormask_sys }{ nulldevice currentdict imageormask_sys }ifelse }ifelse }ifelse }{ level2{ imageormask }{ Operator /imagemask eq{ imageormask }{ indexed_imageormask_lev1 }ifelse }ifelse }ifelse cleartomark restore end }def /indexed_imageormask_lev1 { /indexed_colorspace_dict AGMCORE_gget begin begin currentdict MappedCSA 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or has_color not and{ {HiVal mul round cvi GrayLookup exch get HiVal div} currenttransfer addprocs settransfer imageormask }{ MappedCSA 0 get /DeviceGray eq { {HiVal mul round cvi Lookup exch get HiVal div} currenttransfer addprocs settransfer imageormask }{ MappedCSA 0 get /DeviceCMYK eq { currentcolortransfer {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll setcolortransfer tint_image_to_color }{ currentcolortransfer {pop 1} exch addprocs 4 1 roll {3 mul HiVal mul round cvi 2 add Lookup exch get HiVal div} exch addprocs 4 1 roll {3 mul HiVal mul round cvi 1 add Lookup exch get HiVal div} exch addprocs 4 1 roll {3 mul HiVal mul round cvi Lookup exch get HiVal div} exch addprocs 4 1 roll setcolortransfer tint_image_to_color }ifelse }ifelse }ifelse end end }def /indexed_image_lev1_sep { /indexed_colorspace_dict AGMCORE_gget begin begin {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} AGMCORE_get_ink_data currenttransfer addprocs settransfer currentdict imageormask_sys end end }def /indexed_image_lev2_sep { /indexed_colorspace_dict AGMCORE_gget begin begin currentcolorspace dup 1 /DeviceGray put dup 3 [ currentcolorspace 3 get { exch 4 mul 4 getinterval {} forall AGMCORE_get_ink_data 255 div 1 exch sub } /exec cvx ] cvx put setcolorspace currentdict Operator /imagemask eq{ AGMCORE_&imagemask }{ AGMCORE_&image }ifelse end end }def /add_csa { Adobe_AGM_Core begin /AGMCORE_CSA_cache xput end }def /map_csa { dup type /nametype eq{ Adobe_AGM_Core/AGMCORE_CSA_cache get exch get }if }def /add_csd { Adobe_AGM_Core begin /AGMCORE_CSD_cache xput end }def /get_csd { dup type /nametype eq{ Adobe_AGM_Core/AGMCORE_CSD_cache get exch get }if }def /add_pattern { Adobe_AGM_Core begin /AGMCORE_pattern_cache xput end }def /get_pattern { dup type /nametype eq{ Adobe_AGM_Core/AGMCORE_pattern_cache get exch get }if }def /set_pattern { dup /PatternType get 1 eq{ dup /PaintType get 1 eq{ false op [/DeviceGray] setcolorspace 0 setgray }if }if setpattern }def /setcolorspace_opt { dup currentcolorspace eq{ pop }{ setcolorspace }ifelse }def /updatecolorrendering { currentcolorrendering/Intent known{ currentcolorrendering/Intent get }{ null }ifelse Intent ne{ false Intent AGMCORE_CRD_cache { exch pop begin dup Intent eq{ currentdict setcolorrendering_opt end exch pop true exch exit }if end } forall pop not{ systemdict /findcolorrendering known{ Intent findcolorrendering pop /ColorRendering findresource dup length dict copy setcolorrendering_opt }if }if }if } def /add_crd { AGMCORE_CRD_cache 3 1 roll put }def /set_crd { AGMCORE_host_sep not level2 and{ currentdict/CRD known{ AGMCORE_CRD_cache CRD get dup null ne{ setcolorrendering_opt }{ pop }ifelse }{ currentdict/Intent known{ updatecolorrendering }if }ifelse }if }def /setcolorrendering_opt { dup currentcolorrendering eq{ pop }{ begin /Intent Intent def currentdict end setcolorrendering }ifelse }def /OPIimage { dup type /dicttype ne{ 10 dict begin /DataSource xdf /ImageMatrix xdf /BitsPerComponent xdf /Height xdf /Width xdf /MultipleDataSources false def /NComponents 1 def /ImageType 1 def /Decode [0 1 def] /SkipImageProc {false} def currentdict end }if dup begin /HostSepColorImage false def currentdict/Decode known not{ /Decode [ 0 currentcolorspace 0 get /Indexed eq{ 2 BitsPerComponent exp 1 sub }{ 1 }ifelse ] def }if currentdict/Operator known not{ /Operator /image def }if end /sep_colorspace_dict AGMCORE_gget null eq{ imageormask }{ gsave dup begin invert_image_samples end sep_imageormask grestore }ifelse }def /cpaint_gcomp { AGM_preserve_spots{ gsave nulldevice }if }def /cpaint_gsep { AGM_preserve_spots{ grestore currentoverprint Adobe_AGM_Core/AGMCORE_ovp xddf }{ gsave nulldevice }ifelse }def /cpaint_gend { AGM_preserve_spots{ Adobe_AGM_Core/AGMCORE_ovp get setoverprint }{ grestore }ifelse newpath }def /AGMCORE_ctm_stack bdict /push_ctm { stack length size le{ stack dup length 2 mul array dup /stack exch def copy pop }if stack size 3 -1 roll put /size size 1 add def } /pop_ctm { /size size 1 sub def size 0 lt{ /size 0 def }if stack size get } /stack 1 array /size 0 edict def /save_ctm { matrix currentmatrix AGMCORE_ctm_stack begin push_ctm end }def /restore_ctm { AGMCORE_ctm_stack begin pop_ctm end setmatrix }def /path_rez { dup 0 ne{ AGMCORE_deviceDPI exch div dup 1 lt{ pop 1 }if setflat }{ pop }ifelse }def end systemdict /setpacking known { setpacking } if %%EndResource %%BeginResource: procset Adobe_CoolType_Core 1.1 0 %%Copyright: Copyright 1997-1999 Adobe Systems Incorporated. All Rights Reserved. %%Version: 1.1 0 userdict/Adobe_CoolType_Core 40 dict dup begin put/Level2? systemdict /languagelevel known dup{pop systemdict/languagelevel get 2 ge}if def Level2? not{/currentglobal false def/setglobal/pop load def/gcheck{pop false}bind def /currentpacking false def/setpacking/pop load def}if currentpacking true setpacking/bdf{bind def}bind def/ldf{load def}bind def/doc_setup{ Adobe_CoolType_Core begin/mov/moveto ldf/nfnt/newencodedfont ldf/mfnt/makefont ldf/sfnt/setfont ldf/ufnt/undefinefont ldf/chp/charpath ldf/awsh/awidthshow ldf/wsh/widthshow ldf/ash/ashow ldf/sh/show ldf end userdict /Adobe_CoolType_Data 2 dict dup begin/WidthShowArray 256 array def /GenFauxMMInst{}bind def end put}bind def/doc_trailer{currentdict Adobe_CoolType_Core eq{end}if Adobe_CoolType_Core/unload get exec systemdict /undef known{userdict/Adobe_CoolType_Data undef}if}bind def/page_setup{ Adobe_CoolType_Core begin}bind def/page_trailer{end}bind def/unload{systemdict /languagelevel known{systemdict/languagelevel get 2 ge{userdict /Adobe_CoolType_Core 2 copy known{undef}{pop pop}ifelse}if}if}bind def/ndf{1 index where{pop pop pop}{dup xcheck{bind}if def}ifelse}def/findfont dup systemdict begin userdict begin/globaldict where{/globaldict get begin}if dup where pop exch get/globaldict where{pop end}if end end def/systemfindfont /findfont load def/undefinefont{pop}ndf/copyfont{currentglobal 3 1 roll 1 index gcheck setglobal dup null eq{0}{dup length}ifelse 2 index length add 1 add dict begin exch{1 index/FID eq{pop pop}{def}ifelse}forall dup null eq{pop} {{def}forall}ifelse currentdict end exch setglobal}bdf/newencodedfont{findfont dup length dict begin{1 index/FID ne{def}{pop pop}ifelse}forall/Encoding exch def currentdict end definefont pop}bdf/scff{$SubstituteFont begin dup type /stringtype eq{dup length exch}{null}ifelse/$sname exch def/$slen exch def /$fontname 1 index dup type/stringtype eq{cvn}if def/$used false def end findfont $SubstituteFont begin $used{currentglobal exch dup gcheck setglobal null copyfont begin/FontName $fontname def/currentdistillerparams where{pop}{ /FontInfo currentdict/FontInfo known{FontInfo null copyfont}{2 dict}ifelse dup begin/ItalicAngle $italicangle def/FontMatrix FontMatrix[1 0 ItalicAngle dup sin exch cos div 1 0 0]matrix concatmatrix readonly end 4 2 roll def def} ifelse FontName currentdict end definefont exch setglobal}if/$sname null def /$slen 0 def end}bdf/ConcatStrings{dup 0 exch{length add}forall string exch 0 exch{3 copy putinterval length add}forall pop}bind def/BeginFauxMMFont{1 index findfont pop 2 array astore ConcatStrings 3 1 roll($)exch 3 array astore ConcatStrings exch findfont currentglobal exch dup gcheck setglobal null copyfont/tempfontname exch definefont pop exch 12 dict begin/FontName exch def /FontType 0 def/FMapType 6 def/FontMatrix matrix def/PaintType 0 def}bind def /EndFauxMMFont{currentdict end dup/FontName get exch definefont exch setglobal exch mfnt sfnt}bind def/GenFauxMMInst{Adobe_CoolType_Data/GenFauxMMInst get exec}bind def/DefFauxMMInst{Adobe_CoolType_Data exch/GenFauxMMInst exch bind put}bind def/WSALoop{4 copy 1 index add 1 sub 1 exch{3 copy put pop 1 add}for pop pop 3 2 roll add exch 256 add}bind def/BuildWidthShowArray{currentfont begin FontType 0 eq dup{pop FMapType 6 eq}if{SubsVector dup length 1 sub 1 exch getinterval}{()}ifelse end Adobe_CoolType_Data/WidthShowArray get 0 0 4 3 roll{WSALoop}forall 256 2 index sub WSALoop pop pop pop}bind def/wsa{ Adobe_CoolType_Data/WidthShowArray get}bind def/?set{$SubstituteFont begin /$used false def/$fontname 4 index def end 3 index findfont $SubstituteFont begin $used{false}{dup/FontName known{dup/FontName get $fontname eq 1 index /DistillerFauxFont known not and}{false}ifelse}ifelse exch pop end{exch pop exch pop exch 2 dict dup/Found 3 index put exch findfont exch}{exch exec exch findfont 2 dict dup/Downloaded 6 5 roll put}ifelse dup/FontName 4 index put copyfont definefont pop}bind def/?str1 256 string def/?str2 256 string def /?add{1 index type/integertype eq{exch true 4 2}{false 3 1}ifelse roll 1 index findfont/Downloaded known{exec exch{exch ?str2 cvs exch findfont/Downloaded get 1 dict begin/Downloaded 1 index def ?str1 cvs length ?str1 1 index 1 add 3 index putinterval exch length 1 add 1 index add ?str1 2 index(*)putinterval ?str1 0 2 index getinterval cvn findfont ?str1 3 index(+)putinterval 2 dict dup/FontName ?str1 0 6 index getinterval cvn put dup/Downloaded Downloaded put end copyfont dup/FontName get exch definefont pop pop pop}{pop}ifelse}{pop exch{findfont dup/Found get dup length exch ?str1 cvs pop ?str1 1 index(+) putinterval ?str1 1 index 1 add 4 index ?str2 cvs putinterval ?str1 exch 0 exch 5 4 roll ?str2 cvs length 1 add add getinterval cvn 1 dict exch 1 index exch/FontName exch put copyfont dup/FontName get exch definefont pop}{pop} ifelse}ifelse}bind def/?sh{currentfont/Downloaded known{exch}if pop}bind def /?chp{currentfont/Downloaded known{pop}{false chp}ifelse}bind def/?mv{ currentfont/Downloaded known{moveto pop pop}{pop pop moveto}ifelse}bind def setpacking end userdict/$SubstituteFont 20 dict put 1 dict begin /SubstituteFont dup $error exch 2 copy known{get}{pop pop{pop/Courier}bind} ifelse def/currentdistillerparams where dup{pop pop currentdistillerparams /CannotEmbedFontPolicy 2 copy known{get/Error eq}{pop pop false}ifelse}if not{ countdictstack array dictstack 0 get begin userdict begin $SubstituteFont begin/$str 128 string def/$fontpat 128 string def/$slen 0 def/$sname null def /$match false def/$fontname null def/$used false def/$fontname null def /$italicangle 26.5 def/$findfontByEnum{dup/$fontname exch def $sname null eq{ $str cvs dup length $slen sub $slen getinterval}{pop $sname}ifelse $fontpat dup 0(fonts/*)putinterval exch 7 exch putinterval/$match false def mark{ $fontpat 0 $slen 7 add getinterval{/$match exch def exit}$str filenameforall} stopped cleartomark/$slen 0 def $match false ne{$match(fonts/)anchorsearch pop pop cvn}{/Courier}ifelse}bind def/$ROS 1 dict dup begin/Adobe 4 dict dup begin /Japan1[/Ryumin-Light/HeiseiMin-W3/GothicBBB-Medium/HeiseiKakuGo-W5 /HeiseiMaruGo-W4/Jun101-Light]def/Korea1[/HYSMyeongJo-Medium/HYGoThic-Medium] def/GB1[/STSong-Light/STHeiti-Regular]def/CNS1[/MKai-Medium/MHei-Medium]def end def end def/$cmapname null def/$buildfontname{length $str 1 index(-) putinterval 1 add $str 1 index $cmapname $fontpat cvs putinterval $cmapname length add $str exch 0 exch getinterval cvn}bind def/$findfontByROS{/$fontname exch def $ROS Registry 2 copy known{get Ordering 2 copy known{get}{pop pop[]} ifelse}{pop pop[]}ifelse false exch{dup/CIDFont resourcestatus{pop pop save 1 index/CIDFont findresource dup/WidthsOnly known{dup/WidthsOnly get}{false} ifelse exch pop exch restore{pop}{exch pop true exit}ifelse}{pop}ifelse}forall {$str cvs $buildfontname}{false(*){save exch dup/CIDFont findresource dup /WidthsOnly known{dup/WidthsOnly get not}{true}ifelse exch/CIDSystemInfo get dup/Registry get Registry eq exch/Ordering get Ordering eq and and{exch restore exch pop true exit}{pop restore}ifelse}$str/CIDFont resourceforall{ $buildfontname}{$fontname $findfontByEnum}ifelse}ifelse}bind def end end currentdict/$error known currentdict/languagelevel known and dup{pop $error /SubstituteFont known}if dup{$error}{Adobe_CoolType_Core}ifelse begin{ /SubstituteFont/CMap/Category resourcestatus{pop pop{$SubstituteFont begin /$used true def dup length $slen gt $sname null ne or $slen 0 gt and{$sname null eq{dup $str cvs dup length $slen sub $slen getinterval cvn}{$sname}ifelse dup/CMap resourcestatus{pop pop dup/$cmapname exch def/CMap findresource /CIDSystemInfo get{def}forall $findfontByROS}{pop $findfontByEnum}ifelse}{ //SubstituteFont exec}ifelse/$slen 0 def end}}{{$SubstituteFont begin/$used true def dup length $slen gt $sname null ne or $slen 0 gt and{$findfontByEnum} {//SubstituteFont exec}ifelse end}}ifelse bind readonly def}{/findfont{ $SubstituteFont begin dup systemfindfont dup/FontName known{dup/FontName get 2 index ne}{true}ifelse dup{/$used true def}if{$slen 0 gt $sname null ne 3 index length $slen gt or and{pop dup $findfontByEnum findfont dup maxlength 1 add dict begin{1 index/FID eq{pop pop}{def}ifelse}forall currentdict end definefont}{exch pop}ifelse}{exch pop}ifelse end}bind def}ifelse end end}if end %%EndResource %%EndProlog %%BeginSetup Adobe_AGM_Core/AGMCORE_err_strings 3 dict dup begin /AGMCORE_bad_environ (Environment not satisfactory for this job, which requests at least PostScript Level ^ and at least PostScript version ^. Ensure that the PPD is correct or that the PostScript level requested is supported by this printer. ) def /AGMCORE_color_space_onhost_seps (This job contains colors that will not separate with on-host methods. ) def /AGMCORE_invalid_color_space (This job contains an invalid color space. ) def end put 2 2010 true Adobe_AGM_Core/doc_setup get exec Adobe_CoolType_Core/doc_setup get exec %%EndSetup %%Page: name:1 1 %%EndPageComments %%BeginPageSetup Adobe_AGM_Core/page_setup get exec Adobe_CoolType_Core/page_setup get exec %%EndPageSetup Adobe_AGM_Core/AGMCORE_save save ddf mark /0 [/DeviceGray] add_csa /CSA /0 /1 [/DeviceCMYK] add_csa /CSA /1 /2 [/DeviceRGB] add_csa /CSA /2 cleartomark 800 path_rez 1 -1 scale 0 -333.879 translate gsave [1 0 0 1 0 0 ] concat gsave 0 0 mo 0 333.879 ln 745.92 333.879 ln 745.92 0 ln clp gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 0 334 mo 746 334 ln 746 0 ln 0 0 ln 0 334 ln false op 0 0 0 0 cmyk f grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 195.473 40.5806 mo 195.536 36.8013 ln 186.024 36.7383 ln 193.583 38.6909 ln 185.961 40.4546 ln 195.473 40.5806 ln eclp 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 67.0791 95.3325 mo 97.812 59.3496 142.76 38.6279 190.081 38.6279 cv 191.587 38.6279 193.093 38.6489 194.598 38.6909 cv false op 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 185.961 40.4546 mo 193.583 38.6909 ln 186.024 36.7383 ln 185.961 40.4546 ln false op 0 0 0 1 cmyk ef 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 185.961 40.4546 mo 193.583 38.6909 ln 186.024 36.7383 ln 185.961 40.4546 ln cp 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 123.665 305.833 mo 122.027 309.233 ln 130.656 313.391 ln 124.672 308.415 ln 132.294 309.989 ln 123.665 305.833 ln eclp 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 265.416 293.833 mo 242.26 312.45 213.438 322.6 183.726 322.6 cv 162.844 322.6 142.268 317.584 123.729 307.973 cv false op 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 132.294 309.989 mo 124.672 308.415 ln 130.656 313.391 ln 132.294 309.989 ln false op 0 0 0 1 cmyk ef 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 132.294 309.989 mo 124.672 308.415 ln 130.656 313.391 ln 132.294 309.989 ln cp 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 323.343 81.7764 mo 322.713 79.9492 ln 317.296 81.8394 ln 321.201 81.5244 ln 317.926 83.603 ln 323.343 81.7764 ln eclp 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 38.6909 180.418 mo 322.146 81.209 ln false op 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 317.926 83.603 mo 321.201 81.5244 ln 317.296 81.8394 ln 317.926 83.603 ln false op 0 0 0 1 cmyk ef 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 317.926 83.603 mo 321.201 81.5244 ln 317.296 81.8394 ln 317.926 83.603 ln cp 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 323.28 96.0117 mo 322.776 94.1851 ln 317.233 95.8228 ln 321.138 95.6968 ln 317.737 97.6494 ln 323.28 96.0117 ln eclp 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 38.6909 180.418 mo 322.146 95.3818 ln false op 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 317.737 97.6494 mo 321.138 95.6968 ln 317.233 95.8228 ln 317.737 97.6494 ln false op 0 0 0 1 cmyk ef 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 317.737 97.6494 mo 321.138 95.6968 ln 317.233 95.8228 ln 317.737 97.6494 ln cp 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 323.28 110.185 mo 322.776 108.358 ln 317.233 109.807 ln 321.138 109.807 ln 317.674 111.633 ln 323.28 110.185 ln eclp 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 38.6909 180.418 mo 322.146 109.555 ln false op 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 317.674 111.633 mo 321.138 109.807 ln 317.233 109.807 ln 317.674 111.633 ln false op 0 0 0 1 cmyk ef 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 317.674 111.633 mo 321.138 109.807 ln 317.233 109.807 ln 317.674 111.633 ln cp 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 323.217 124.42 mo 322.839 122.594 ln 317.233 123.728 ln 321.138 123.917 ln 317.611 125.554 ln 323.217 124.42 ln eclp 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 38.6909 180.418 mo 322.146 123.728 ln false op 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 317.611 125.554 mo 321.138 123.917 ln 317.233 123.728 ln 317.611 125.554 ln false op 0 0 0 1 cmyk ef 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 317.611 125.554 mo 321.138 123.917 ln 317.233 123.728 ln 317.611 125.554 ln cp 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 323.217 138.656 mo 322.902 136.767 ln 317.233 137.648 ln 321.138 138.026 ln 317.485 139.475 ln 323.217 138.656 ln eclp 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 38.6909 180.418 mo 322.146 137.9 ln false op 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 317.485 139.475 mo 321.138 138.026 ln 317.233 137.648 ln 317.485 139.475 ln false op 0 0 0 1 cmyk ef 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 317.485 139.475 mo 321.138 138.026 ln 317.233 137.648 ln 317.485 139.475 ln cp 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 323.154 152.892 mo 322.965 151.002 ln 317.233 151.632 ln 321.138 152.199 ln 317.422 153.459 ln 323.154 152.892 ln eclp 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 38.6909 180.418 mo 322.146 152.073 ln false op 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 317.422 153.459 mo 321.138 152.199 ln 317.233 151.632 ln 317.422 153.459 ln false op 0 0 0 1 cmyk ef 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 317.422 153.459 mo 321.138 152.199 ln 317.233 151.632 ln 317.422 153.459 ln cp 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 323.091 167.127 mo 323.028 165.238 ln 317.296 165.553 ln 321.138 166.309 ln 317.359 167.379 ln 323.091 167.127 ln eclp 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 38.6909 180.418 mo 322.146 166.246 ln false op 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 317.359 167.379 mo 321.138 166.309 ln 317.296 165.553 ln 317.359 167.379 ln false op 0 0 0 1 cmyk ef 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 317.359 167.379 mo 321.138 166.309 ln 317.296 165.553 ln 317.359 167.379 ln cp 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 323.091 181.364 mo 323.091 179.473 ln 317.359 179.473 ln 321.138 180.418 ln 317.359 181.364 ln 323.091 181.364 ln eclp 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 38.6909 180.418 mo 322.146 180.418 ln false op 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 317.359 181.364 mo 321.138 180.418 ln 317.359 179.473 ln 317.359 181.364 ln false op 0 0 0 1 cmyk ef 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 317.359 181.364 mo 321.138 180.418 ln 317.359 179.473 ln 317.359 181.364 ln cp 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 323.028 195.536 mo 323.091 193.647 ln 317.359 193.395 ln 321.138 194.528 ln 317.296 195.221 ln 323.028 195.536 ln eclp 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 38.6909 180.418 mo 322.146 194.59 ln false op 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 317.296 195.221 mo 321.138 194.528 ln 317.359 193.395 ln 317.296 195.221 ln false op 0 0 0 1 cmyk ef 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 317.296 195.221 mo 321.138 194.528 ln 317.359 193.395 ln 317.296 195.221 ln cp 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 322.965 209.772 mo 323.154 207.881 ln 317.422 207.315 ln 321.138 208.637 ln 317.233 209.141 ln 322.965 209.772 ln eclp 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 38.6909 180.418 mo 322.146 208.764 ln false op 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 317.233 209.141 mo 321.138 208.637 ln 317.422 207.315 ln 317.233 209.141 ln false op 0 0 0 1 cmyk ef 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 317.233 209.141 mo 321.138 208.637 ln 317.422 207.315 ln 317.233 209.141 ln cp 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 322.902 224.008 mo 323.217 222.118 ln 317.485 221.299 ln 321.138 222.811 ln 317.233 223.125 ln 322.902 224.008 ln eclp 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 38.6909 180.418 mo 322.146 222.936 ln false op 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 317.233 223.125 mo 321.138 222.811 ln 317.485 221.299 ln 317.233 223.125 ln false op 0 0 0 1 cmyk ef 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 317.233 223.125 mo 321.138 222.811 ln 317.485 221.299 ln 317.233 223.125 ln cp 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 322.839 238.18 mo 323.217 236.354 ln 317.611 235.219 ln 321.138 236.92 ln 317.233 237.047 ln 322.839 238.18 ln eclp 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 38.6909 180.418 mo 322.146 237.11 ln false op 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 317.233 237.047 mo 321.138 236.92 ln 317.611 235.219 ln 317.233 237.047 ln false op 0 0 0 1 cmyk ef 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 317.233 237.047 mo 321.138 236.92 ln 317.611 235.219 ln 317.233 237.047 ln cp 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 322.776 252.417 mo 323.28 250.59 ln 317.674 249.141 ln 321.138 251.03 ln 317.233 250.967 ln 322.776 252.417 ln eclp 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 38.6909 180.418 mo 322.146 251.282 ln false op 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 317.233 250.967 mo 321.138 251.03 ln 317.674 249.141 ln 317.233 250.967 ln false op 0 0 0 1 cmyk ef 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 317.233 250.967 mo 321.138 251.03 ln 317.674 249.141 ln 317.233 250.967 ln cp 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 322.776 266.588 mo 323.28 264.762 ln 317.737 263.124 ln 321.138 265.139 ln 317.233 264.952 ln 322.776 266.588 ln eclp 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 38.6909 180.418 mo 322.146 265.456 ln false op 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 317.233 264.952 mo 321.138 265.139 ln 317.737 263.124 ln 317.233 264.952 ln false op 0 0 0 1 cmyk ef 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 317.233 264.952 mo 321.138 265.139 ln 317.737 263.124 ln 317.233 264.952 ln cp 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 322.713 280.825 mo 323.343 278.999 ln 317.926 277.17 ln 321.201 279.313 ln 317.296 278.934 ln 322.713 280.825 ln eclp 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 38.6909 180.418 mo 322.146 279.627 ln false op 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 317.296 278.934 mo 321.201 279.313 ln 317.926 277.17 ln 317.296 278.934 ln false op 0 0 0 1 cmyk ef 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 317.296 278.934 mo 321.201 279.313 ln 317.926 277.17 ln 317.296 278.934 ln cp 0 0 0 1 cmyk s grestore 0.4724 lw 0 lc 0 lj 10 ml [] 0 dsh true sadj 322.146 81.209 mo 322.146 279.627 ln false op 0 0 0 1 cmyk s gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp grestore save_ctm restore_ctm save_ctm %%IncludeResource: font Times-Italic /Times-Italic*1 [ 32{/.notdef}repeat /space 36{/.notdef}repeat /E /.notdef /G 25{/.notdef}repeat /a 3{/.notdef}repeat /e 3{/.notdef}repeat /i 2{/.notdef}repeat /l /m /n /o /.notdef /q /r /.notdef /t /u 3{/.notdef}repeat /y 134{/.notdef}repeat ] /Times-Italic nfnt /Times-Italic*1 findfont [18.897 0 0 -18.897 0 0 ]mfnt sfnt BuildWidthShowArray 95.8916 23.5181 mov 0.000244141 0 wsa 121 get (Equilinear Geometry ) wsh restore_ctm save_ctm %%IncludeResource: font Times-Italic /Times-Italic*2 [ 68{/.notdef}repeat /D 30{/.notdef}repeat /c 15{/.notdef}repeat /s 140{/.notdef}repeat ] /Times-Italic nfnt /Times-Italic*2 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt BuildWidthShowArray 350.492 222.936 mov (D) sh /Times-Italic*1 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt BuildWidthShowArray 350.492 209.293 mov (ete) sh /Times-Italic*2 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt BuildWidthShowArray 350.492 187.259 mov (c) sh /Times-Italic*1 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt BuildWidthShowArray 350.492 178.869 mov (tor) sh /Times-Italic*2 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt BuildWidthShowArray 350.492 156.817 mov (s) sh restore_ctm %%IncludeResource: font Times-Italic /Times-Italic*3 [ 83{/.notdef}repeat /S 172{/.notdef}repeat ] /Times-Italic nfnt /Times-Italic*3 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt BuildWidthShowArray 24.5181 208.764 mov (S) sh /Times-Italic*1 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt BuildWidthShowArray 24.5181 199.316 mov (our) sh /Times-Italic*2 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt BuildWidthShowArray 24.5181 173.068 mov (c) sh /Times-Italic*1 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt BuildWidthShowArray 24.5181 164.678 mov (e ) sh gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 508.219 305.833 mo 506.581 309.233 ln 515.21 313.391 ln 509.227 308.415 ln 516.848 309.989 ln 508.219 305.833 ln eclp 649.97 293.833 mo 626.813 312.45 597.992 322.6 568.279 322.6 cv 547.398 322.6 526.822 317.584 508.283 307.973 cv s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 516.848 309.989 mo 509.227 308.415 ln 515.21 313.391 ln 516.848 309.989 ln 0 0 0 1 cmyk ef 516.848 309.989 mo 509.227 308.415 ln 515.21 313.391 ln 516.848 309.989 ln cp 0 0 0 1 cmyk s grestore 675.479 92.4961 mo 695.675 117.348 706.7 148.395 706.7 180.418 cv 706.7 212.442 695.675 243.489 675.479 268.34 cv s gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 579.901 40.6436 mo 580.216 36.8643 ln 570.705 36.1714 ln 578.138 38.6279 ln 570.453 39.8877 ln 579.901 40.6436 ln eclp 451.635 95.3154 mo 478.306 59.272 520.487 38.0107 565.325 38.0107 cv 569.934 38.0107 574.54 38.2358 579.127 38.6855 cv s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 570.453 39.8877 mo 578.138 38.6279 ln 570.705 36.1714 ln 570.453 39.8877 ln 0 0 0 1 cmyk ef 570.453 39.8877 mo 578.138 38.6279 ln 570.705 36.1714 ln 570.453 39.8877 ln cp 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 707.645 167.127 mo 707.582 165.238 ln 701.85 165.553 ln 705.692 166.309 ln 701.913 167.379 ln 707.645 167.127 ln eclp 423.245 180.418 mo 706.7 166.246 ln s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 701.913 167.379 mo 705.692 166.309 ln 701.85 165.553 ln 701.913 167.379 ln 0 0 0 1 cmyk ef 701.913 167.379 mo 705.692 166.309 ln 701.85 165.553 ln 701.913 167.379 ln cp 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 707.645 181.364 mo 707.645 179.473 ln 701.913 179.473 ln 705.692 180.418 ln 701.913 181.364 ln 707.645 181.364 ln eclp 423.245 180.418 mo 706.7 180.418 ln s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 701.913 181.364 mo 705.692 180.418 ln 701.913 179.473 ln 701.913 181.364 ln 0 0 0 1 cmyk ef 701.913 181.364 mo 705.692 180.418 ln 701.913 179.473 ln 701.913 181.364 ln cp 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 707.582 195.536 mo 707.645 193.647 ln 701.913 193.395 ln 705.692 194.528 ln 701.85 195.221 ln 707.582 195.536 ln eclp 423.245 180.418 mo 706.7 194.59 ln s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 701.85 195.221 mo 705.692 194.528 ln 701.913 193.395 ln 701.85 195.221 ln 0 0 0 1 cmyk ef 701.85 195.221 mo 705.692 194.528 ln 701.913 193.395 ln 701.85 195.221 ln cp 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 676.717 93.1143 mo 676.087 91.2876 ln 670.67 93.1772 ln 674.575 92.8623 ln 671.3 94.9409 ln 676.717 93.1143 ln eclp 423.245 180.418 mo 675.52 92.5474 ln s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 671.3 94.9409 mo 674.575 92.8623 ln 670.67 93.1772 ln 671.3 94.9409 ln 0 0 0 1 cmyk ef 671.3 94.9409 mo 674.575 92.8623 ln 670.67 93.1772 ln 671.3 94.9409 ln cp 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 684.527 103.256 mo 684.023 101.429 ln 678.48 103.067 ln 682.386 102.941 ln 678.984 104.894 ln 684.527 103.256 ln eclp 423.245 180.733 mo 683.394 102.626 ln s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 678.984 104.894 mo 682.386 102.941 ln 678.48 103.067 ln 678.984 104.894 ln 0 0 0 1 cmyk ef 678.984 104.894 mo 682.386 102.941 ln 678.48 103.067 ln 678.984 104.894 ln cp 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 690.826 114.594 mo 690.322 112.767 ln 684.779 114.216 ln 688.685 114.216 ln 685.221 116.042 ln 690.826 114.594 ln eclp 423.56 181.049 mo 689.692 113.964 ln s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 685.221 116.042 mo 688.685 114.216 ln 684.779 114.216 ln 685.221 116.042 ln 0 0 0 1 cmyk ef 685.221 116.042 mo 688.685 114.216 ln 684.779 114.216 ln 685.221 116.042 ln cp 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 696.433 126.625 mo 696.055 124.798 ln 690.448 125.932 ln 694.354 126.121 ln 690.826 127.759 ln 696.433 126.625 ln eclp 423.56 181.049 mo 695.361 125.932 ln s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 690.826 127.759 mo 694.354 126.121 ln 690.448 125.932 ln 690.826 127.759 ln 0 0 0 1 cmyk ef 690.826 127.759 mo 694.354 126.121 ln 690.448 125.932 ln 690.826 127.759 ln cp 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 701.157 139.916 mo 700.842 138.026 ln 695.173 138.908 ln 699.078 139.286 ln 695.425 140.735 ln 701.157 139.916 ln eclp 423.56 181.049 mo 700.086 139.16 ln s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 695.425 140.735 mo 699.078 139.286 ln 695.173 138.908 ln 695.425 140.735 ln 0 0 0 1 cmyk ef 695.425 140.735 mo 699.078 139.286 ln 695.173 138.908 ln 695.425 140.735 ln cp 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 704.243 152.892 mo 704.055 151.002 ln 698.322 151.632 ln 702.228 152.199 ln 698.512 153.522 ln 704.243 152.892 ln eclp 422.93 181.049 mo 703.235 152.073 ln s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 698.512 153.522 mo 702.228 152.199 ln 698.322 151.632 ln 698.512 153.522 ln 0 0 0 1 cmyk ef 698.512 153.522 mo 702.228 152.199 ln 698.322 151.632 ln 698.512 153.522 ln cp 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 704.055 209.458 mo 704.243 207.567 ln 698.512 207 ln 702.228 208.323 ln 698.322 208.889 ln 704.055 209.458 ln eclp 423.56 180.733 mo 703.235 208.45 ln s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 698.322 208.889 mo 702.228 208.323 ln 698.512 207 ln 698.322 208.889 ln 0 0 0 1 cmyk ef 698.322 208.889 mo 702.228 208.323 ln 698.512 207 ln 698.322 208.889 ln cp 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 700.527 222.749 mo 700.842 220.858 ln 695.109 220.04 ln 698.764 221.551 ln 694.857 221.866 ln 700.527 222.749 ln eclp 423.245 180.104 mo 699.771 221.676 ln s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 694.857 221.866 mo 698.764 221.551 ln 695.109 220.04 ln 694.857 221.866 ln 0 0 0 1 cmyk ef 694.857 221.866 mo 698.764 221.551 ln 695.109 220.04 ln 694.857 221.866 ln cp 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 696.055 235.661 mo 696.433 233.834 ln 690.826 232.7 ln 694.354 234.401 ln 690.448 234.59 ln 696.055 235.661 ln eclp 423.245 180.733 mo 695.361 234.59 ln s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 690.448 234.59 mo 694.354 234.401 ln 690.826 232.7 ln 690.448 234.59 ln 0 0 0 1 cmyk ef 690.448 234.59 mo 694.354 234.401 ln 690.826 232.7 ln 690.448 234.59 ln cp 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 690.322 248.006 mo 690.826 246.18 ln 685.221 244.731 ln 688.685 246.622 ln 684.779 246.557 ln 690.322 248.006 ln eclp 423.56 180.104 mo 689.692 246.874 ln s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 684.779 246.557 mo 688.685 246.622 ln 685.221 244.731 ln 684.779 246.557 ln 0 0 0 1 cmyk ef 684.779 246.557 mo 688.685 246.622 ln 685.221 244.731 ln 684.779 246.557 ln cp 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 683.394 259.03 mo 683.897 257.204 ln 678.354 255.565 ln 681.756 257.581 ln 677.851 257.393 ln 683.394 259.03 ln eclp 423.245 180.418 mo 682.764 257.897 ln s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 677.851 257.393 mo 681.756 257.581 ln 678.354 255.565 ln 677.851 257.393 ln 0 0 0 1 cmyk ef 677.851 257.393 mo 681.756 257.581 ln 678.354 255.565 ln 677.851 257.393 ln cp 0 0 0 1 cmyk s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln cp 676.087 269.801 mo 676.717 267.975 ln 671.3 266.147 ln 674.575 268.29 ln 670.67 267.911 ln 676.087 269.801 ln eclp 423.245 181.049 mo 675.52 268.604 ln s grestore gsave 0 0 mo 745.92 0 ln 745.92 333.879 ln 0 333.879 ln 0 0 ln clp 670.67 267.911 mo 674.575 268.29 ln 671.3 266.147 ln 670.67 267.911 ln 0 0 0 1 cmyk ef 670.67 267.911 mo 674.575 268.29 ln 671.3 266.147 ln 670.67 267.911 ln cp 0 0 0 1 cmyk s save_ctm restore_ctm /Times-Italic*2 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt BuildWidthShowArray 735.045 222.936 mov (D) sh /Times-Italic*1 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt BuildWidthShowArray 735.045 209.293 mov (ete) sh /Times-Italic*2 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt BuildWidthShowArray 735.045 187.259 mov (c) sh /Times-Italic*1 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt BuildWidthShowArray 735.045 178.869 mov (tor) sh /Times-Italic*2 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt BuildWidthShowArray 735.045 156.817 mov (s) sh grestore save_ctm restore_ctm save_ctm /Times-Italic*3 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt BuildWidthShowArray 409.072 208.764 mov (S) sh /Times-Italic*1 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt BuildWidthShowArray 409.072 199.316 mov (our) sh /Times-Italic*2 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt BuildWidthShowArray 409.072 173.068 mov (c) sh /Times-Italic*1 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt BuildWidthShowArray 409.072 164.678 mov (e ) sh restore_ctm /Times-Italic*1 findfont [18.897 0 0 -18.897 0 0 ]mfnt sfnt BuildWidthShowArray 480.899 20.5181 mov (Equian) sh %%IncludeResource: font Times-Italic /Times-Italic*4 [ 103{/.notdef}repeat /g 152{/.notdef}repeat ] /Times-Italic nfnt /Times-Italic*4 findfont [18.897 0 0 -18.897 0 0 ]mfnt sfnt BuildWidthShowArray 535.493 20.5181 mov (g) sh /Times-Italic*1 findfont [18.897 0 0 -18.897 0 0 ]mfnt sfnt BuildWidthShowArray 544.941 20.5181 mov (ular Geometry ) sh grestore grestore Adobe_AGM_Core/AGMCORE_save get restore %%PageTrailer Adobe_CoolType_Core/page_trailer get exec Adobe_AGM_Core/page_trailer get exec %%Trailer Adobe_CoolType_Core/doc_trailer get exec Adobe_AGM_Core/doc_trailer get exec %%EOF gsave userdict /annotatepage 2 copy known {get exec}{pop pop} ifelse grestore showpage %AI9_PrintingDataEnd userdict /AI9_read_buffer 256 string put userdict begin /ai9_skip_data { mark { currentfile AI9_read_buffer { readline } stopped { } { not { exit } if (%AI9_PrivateDataEnd) eq { exit } if } ifelse } loop cleartomark } def end userdict /ai9_skip_data get exec %AI9_PrivateDataBegin %!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(R) 9.0 %%AI8_CreatorVersion: 9.0 %%For: (Kevin Rosenberg) ( ) %%Title: (divergent.eps) %%CreationDate: 2/8/2001 1:38 AM %AI9_DataStream %Gb"-6CNCcAOWaFiB)Nh:Mp/!/Blq?VOuKg]<T^VSJT!VQ2V*?;DU@Y;]\cL;3UkfL:88msfhIn*o*T:V3"PcX%Z3Wu'^eCDnHniu`/GrcEA_mZr#oR.=D6KfS+A %qsW5QQA:p>JH&:6]IRQZ5P?+@qj/,.J,O]fT5Up*hnG5]BbrkIpr;-6V*AXo7B!3bLJ/1p5"di_qJtD %Q2!LMh)B7Yr:&^rf/,dP8E'I'?iP6Fk1eX[G@*Q2krJ(:UmsP/aPHXuQa]Do"p-7EKIWtZ)L2_@KS+AEY97OL++\q/1J%C)Uqs;Y5E%bNPo_G*r %G'eH-ihs7=i2t=s?iTW5m2Pjcq"qCe(N0:drd8qe5G,b#^&.?mqmY1\Sj3,?k5*?g=3l>?s5K(8^:X@8]4^#+ls*6>2ZfX:qAn_q %a*6p9e5UA]:Od[$d!*fR?Tl/Qqr>$;Qh5dr?JI]YI0NpTq%FHDFnG0DW %f/GZ?Qr[=YB0QEVL*tlnIJ3*4YM['L8UL"(c*MUY^:CpoGLneBhq^JCq&W("GXeq#2mDYu)\C..GB_Zce*C*6#oM%4laJhAmq>+s %iZJ3@qs-31%0$+`p"c89*MrMb!7fpi]B0o:lh=YRVm#pH %f<(6PRZ?^gB/_jl\,?"QpO:j=L9>FKF"b&R$Z>XS]])@qEspIeMI6.IS%mN/]f$D6Q6u"0k:ci*!WbD$n+kB*r205+Gi#oBIc`l0 %UWN:6_,%fA_ZeN2oO#?4_cu%+?giFKLa7q2kf^rGS(B%iI(fF6MGXbLlJJ0BIsj43AZGZ`s7Zim$7&=BA0KtD5Q>gUe=,7h4Ug>a;H00BdDI %p2V2;3l6#7f*,EGGgRZ/a28YMMCu`1i@8eH2oE%YlMrd1i/[4FXp]GF_fXc4!*Ag7B4'SsIeJ,iu!4S1e8j_ERA1I_S,80+[I^&*5JeNebfQ5GhpNm[nk1':-rT0P0dK?6!D%r+3ObQfW8%4C"Ib?9\2M57pXq %?=$sRr=P]LpfiFfq(b7j!)L,Jl/M9nio9mqG]C7G?d-ku\]>QnH4:\i_HfjuQff1JkNBnW_tj:Z4pTd;]YL#cGruW#*i=?H?61b[ %kJuWQE82Pu@tjGa(hGf6(p,kpLWdTSi>b=:3:,TS.XXlQ,l"6UnF1:F])0\L`Vpjko`/>]mjid2L@:0W$Q^(/RP3i^q&F#/!:r"m %($6s_Cdj^I%l6/pbBa2qG_EW__i2GL@:h=>DhM9e0\976//L#/a)Z\FQsh!BX@=ZOf#7_X:&-POjE"G,6f,`'eQcJk;i\)N*fplO %QnHhkXRQnRH4MN4@HDQ&J-,gk_5/Se!bRr)L)^1hB#'`7G`r,W!oT3!;n*5PJ6b[\Z9;S7N"PP3"9(a)6P&rOq+JNJF260*i9C_1 %>6'!`?uZ0oG(+IuJDo[AlNb6&)>6=Hh2l#W"P=sE+VfOhKREu%%_E+G"nj#$VQ`.UF4aC>,>LA\`$8#>il$Ig,49pQrS\4/(k_e& %mh4Km?bZ\?k53Cf*o?0\C($\!5i7L_=\:QChDf_W3 %pFHA)$elIAA?0qq8[N*7RY5DgW*,W;@J\)I,YWDJR`+DUO<-jTI2Adt_DI/!+A;lcf`MNpJXSuA#6Zd`WQ]Ih@(dB(qAb;@MV!jk %li7/)L$V-8p'dblOF^pBBtbk2E^6].&FDkPG6'H/S,`ikJV7t">TePm5jmTPJFH':!72=^JdP0P\-fHq,HqL<&_P&KBJ$0"G[M^\ %YCW6TljT9)$qt7DXQBd>k8Y>b-##4H=:op!Yb_cpWBb[[C_&')\/qlYF'rDm+Om1Sj++DN1]`MecNIhb!sH%;>lk,HT-LR-OR[lV %?GaRqU&^sA8HkCdP6/ra++ZQT/"NALBFN,X**=c]E71X(Y[%e+2o>1fcN88pi1k7q0F7%?*.KSkEF5I&"\d\P.gMm]=F'teNYbAN %Yka5V"t[Ljj.A!uEZO@q(P5c)(]I\)FZJ[i_M)clDc^%HnGu_.$[PM,7@6<1bq9^YL>D##2&g!6#W6`lXLV-23@3C8E!+, %QK$.U^fcIQUQ?^0cBGG"d'9;T#Wj6q(h(I@4'ge/,**'oW4o:iUS:Il=3EC^6W(5Z-A@^1^m %,8Q803"kb;"XFkG:e4J=M$9_De-LaS'UMp06BR+Y-5;qOE'hsOP'J1.!#Ba_UJaW(QKb=*Jd&-,Zn&%7aPe3Gp8E5 %'o8m\%n]ce,]:F%Lj;a)f9&J)K:"sG0HruLV7_sl*'g>0ZB7D5Cp7V<]FVUGp5d-;Qru13?qUna"1Ge>]qnq:Eao?\YQJJC`"H`m %XGt2&=dV@VV8Y1rAeT!#5t8\lU=/&g@I]Fb*,&3qBn7poD'7kX[.o4)LGBFJaKRhiJf"_r@b;035th=kXP%",M'4!'5ZTQX$]HI] %O(<`9"8QuUeX0GTfXBh %&P4<#lFCSh1D.c'4/.j.Zs>QkGp!/kM(gDVF@8KX*9%IqKWl+U,(Hup8Fg/,!X1hULBJ)Y)j<,/*\1)%,MN0qd1UlU[ep/anj9/q %EI;=l^<_\LBgXec%DL#C]>p-/j4qT04oO!X'sigTAdc\,@hL#-8AZ@20do[S(IkVf%%pesCJ_^3$$>bC&F'U]rbu"e^Zf:rRu0pLXgNP?0D/!Z%dJZG[2r*%;4/d#?28g.J=+L/*^^.SnGUW4%85$rpa2Bll2SN#6?oG^+*^92sZ7&$i7tE%5WjZoR+I7-3@DQgT%t'!+#I+nG9ccgc9>^^u!lDSM9?#;q %8u)o[jsN@mOZ(O(s66cbpA2b/5J@%HRQg*j#%JMYW9DH@9fj1Xc\d'D0Pt9k(&4kDVo"o1A%==VOc9V[BadD_#;Zl)WgJ&ClO_(P %CkJ-F+OLPL"Z$Nu(!%e.'=%7*aF[P!ttq"_%eT&:`snOM$RKHG>:2W'_g?;1*0\7]*3 %9_Mr"B46^Wojgi+buh_;f;l_o:%hUu3&eG//B7RpD0i<;qBcu]L%ip)*n96K5F:C64V%01UY9P;Oo0td8@0&Y`g)=[R&e@eDdIt' %X?ML3PZs4/Na(qSBsG:/=p8:3ks((DCj*;LbUmF$XT_X9TZfSu1DM=u]P&)@V7h+b/_7]F_"*Nn]JpdPdHnfU';rhSe&k:!D8b!l %]Pf@iEj-#UUB>[@#MZI<3OK6qJiKr5rT#kKR7"qG==Tp5X9<;aMl[/S@$B_Bp=#4gVrnW6!POa"7kU:E_q7(L.U,8(!)4&Bf.[HYN?F(N1LF?K$"!t8B,t6N10Bn %)ne8)]<85omK-Kq!;9HD[2je">lmY,iqaA0k6;Sebmmkn1,)MJX4aCZZ5p0Me1B*>@8kCGO@:=F6M?)Va\/EP1+$U+SLJ]I1m>oT %Jlkl`p1e,'@]]jc_i0B(%P]!N0g)]\[T"KX\KjWX.AjJ5e<'?O-R;/00;>[_dN;]#(Nno$oGmu+(,DCK#NKAO&fH?D=5Lk%E'a@YHUu3+u10%d6pr_trrDI7E<9&o9gs`$U;(>\R7!9+JBs.^A@gjLULeJ:EW0mEYmF(MmSYBY21`Ih\ %`r*`TQ'*jB6Rq5e2mS5e&rgILnjGs?:hV1;MNKHaM%"?ab[X%rcod$skQ7[nd[ids85GgJUc5WI`4A5CkmLB*CCES1!]1)SDC1g( %'Le!i/PoL&S:83<2Z.,>`>`k=4(LHPJi[+/MMO8ffFTYGc5b"Nic>E=N@V.%P:7r.J&#!CN0+Kr/a,Kn8@gb(6 %J/="VJ/]Sg(P3A(:6^bLJ/_]0@<"W=ihBY(R\6CLM@m9bA/W9d#E;2+?5qJ.,uuT!Ur>fY %(:lfM+'i"rfX\Pl::[5ISe#Ml@CV>Ul[7_r[M^^]n_V$1n63L9H5,u;k4N:3pJ:__E0$ba^1g^[RMcKQFAn]eQ@)if?1#8=e %Pj`0fgBMX:>^7Nom(k\hb7(S8l06)G@q-V8?Zp?@[YL00AQedh-h,#6G:bdqOcQpgr`lj*`^c]Q.;n9dk]3h.MU6s %r2bb)%!,WmM%==F&Wh(V'Z0(s30\lE7b.3WIlm)!!bU[=3=`?kLhGJorU"-#(boa*YgK*'0VhWA,^/go5Z;@[*upQgN?8pu3djCI %l:4?rIeW:(p25)aI^Aq=D_VrJ\;0LhA!N_-.RB+qJf`I0a,2R33:Ve@4[\P,[^S?`E.P>fn"o_b.Ci@f$>G715\]pKV\QDQDa(D@n4A"PmIEKe*iHMRl-I %ib!KsF%tf3m^uQ=ki1>@"u/``PB3bY;5hVD)t-;]=63d<,"Yh=NED6;s7rM29:.t*<=TcJ9FbPbZ7/k\PVEu[j=g1i^O2)0Eg/GR %=u0krHOL_0DY?F`%P>D7YqV&=Z`"tgAY`o\AJ6MJ['?t`%hQ36$:-k7*`'NH3!?c.4g;;k't:-?-eSJ^nNGr`AO);/E(qZZUF0hRr8S@e36%kQ"L3c3Zp>]j %$tG)ZD^/kBb*Y-ahn %*uU0)aO3<*>Pc6ac8Y=+rECs5M^"9nolG+!1Ec@Td<['Jen$);Sg5VHQdQ,5+&<]**MlVO167X?T=l/:NE"]YW`^+j=9m0f$>u0> %=d>!fU+'q!AZq"?nWOS]\W16+a"*/f6Hc=M(6?"`Vqd0Ngl@BljB0B^rHVfCj6%cDr'HQ7mdk3YTLcq3=mgX>NGuOoA\h=BpS$NW %m;Td^kh7rVmc*=V@[alHM[FC9QU$nm8dG5C&O-@:I%('<.r,P=)6Xk[#OiD$3-R&p?tP>!jQ['m?i7!2dfi"K9$ %@&/HU(F3c:WKd6cYRBuZ0ar''Qh4l`]-Oh?fQO'BmLP@>4A#d0iAa7:HB@e0Zod$ %EmFnJHNEV."mHUhHPpcu)Vmdi:.p-_`qFH2MRU8IGbEc>=r83VL.\r'CVgJ7( %F[Z9C7ZFph/gd]%'4I@io)W4]_h=Bj_T+#17*DJm:?40B]2(@sChp%90=OXnTBmDF-2Tel7]W[gRU(S.*%OF9'e:jtFo-f&)iF?bYSOpC"*]Bb,XMg,oXHtds081fuJKl!=FY8q3%kYJ%kn?uD>BJX-)jWtHLl'h0lBP6VB/0b; %lDHBW>;>^E`2O0H$tFtgV5VTV=)foA1+7Pi,:bms$M6"'@q.<<^89CR'A#,Zks=e0%tHY^5Uq,](K$eqR$LWg/5nkR&c[6 %k74q`fN?\HWchEYD*;e@8pWKgASU$N,/]!ijMMpgSFj^qNDhp]JWFm1X3*jcj)"X4:R'1E/A+P"@PHY %U9KCgLquc_LS3mnNJH\#4B]rGR`'+(adC-c(K4(Ll;6H6b&kn1ZndtL5*18\YB)/#bh&\U>h7*NKuSfKRDA!i\>$\9T#E7h2;ls[ %CGNqJD'+!\lBg)I\#_)Dee12M6/2lgW#'oW9"7h*?eOg9gYHPX.uV1791_`$>@Am0CVk,>!k*F%emVa;CfM^c0#P+]S83R\OOaLb %++N=4MpLnoXMQStF'l:!_Len>IW+/`4cU_D[GQ-CD0Z5lquI1d!(^6CVpRi^>"W""hAR[mP.<&*3LG]4N($t5U4pDh36BT5_[FsOQT,^N)g\N/-`QQtiPf-]R]o]#0c@!qj*0W>MCF.)b %0O+<2cKN2F-=W_#;;7sg#!4-bCrloHo<@l/Pg6S8+-Al=%nQ/:=9_Ss4=+KtcM(:7i#OD;1S85$1%m1@pRie/69Frm%&rE\Ad\Hg %3Ul]XJd&Ign;ueD'%l?JE%:/&Q>DfoqLOAC)+"&<=0Jc6hEKiq+J>85(eqLDVK[E:>3P.L)^"\C1%)]hf,,TVI-gC.8,3ajs-!rO %rLhLJ,6+Z$lA9"q(P;Z9d2tnrZ9D_Brbimu]0;7!Ta$$*W2b@r"&0e4cS;I&j0?8W_7]JThEBDA=674=d-KBZei[k@F%!2pUphGp %.gPa1Qan3hX2jo,"+.YL8em0Pd,#-jMt0Cc[lp=7-O/R&AiW#D;Ul+4(@*]hWaP$f^ATbC=cCDWI,#8*%:YRg7c]$.n$tI:=-X@\ %k-pbC5qU2f>`HX`^W*)(N4Nb9f&M7@`o*r?Ho"3;WTi*iOA`P*[A/;bjiBCXQ#a$>kG"\*ejsZF8OjGd@H6J3Q$(4$R$sN;<3`BW %<&u#c:ogT,+1+UfLeU*m<./5OaWjf2UahF)jcQRu7o`ThAj%6[f2]uFif=VN#.1>OoRPMbWsJPr4j]rBBG8T2Wt[b%VoL9@O&ZN/ %Wt[`u.=B@jIW0J`@r;1bgA6lD>;.;3bFFO=sctYhB*En66FmJkHDXAMMk89fEM1[7kcM.[B0c_h&r3cub>Y %e:LiD^t4k&7Y2Okp,NsiT6\t^HDt9d@`H'!>?=5b44`ni@adc>?=h'hJT[^de+:oqB;S5n+Q^.@(nZGZtDp$)s)ZEH'=N3+/3n;Bho(8;4^HEDXaJN:^c+7Y[/j#cKVg %'+ZR`H#QLo0r?[!@@4b?Fa?+4`sX&=ebHFYXL2t"3;m[=p'bL@T,1U)6Kd7@ %a88L5IY$h&4`2SaIeaWas&Nb]If:4G?hD:Y06e,lhr_;kc\W#=AMZ"S^c"IikR3Zh92]d1WL[@LrfqZ!>*1pH4b=BMsi9Ib+SpMcO%P_r*Bd?Gk`;X3jnR'Fi"rNa_H@1qnacgCX0e_l3m`+'YE9 %Sner:JiHd1=]=c3Z*>2Z>GPfSJ]$'o,c,+IP`MeS6K:DXHDDt@E6;(HC%e3f8C]"OsB"7;A3-<2?:21_Hb(0VV'/IeE0"KI022!j^NU7cprU-M]U#FHiUpV"Yj8$:f.8BXS>Dk32\UKpfuf%=Qr8ZGnO5?m'CbKa;& %TM*U7Ru1e@.eT_M?':MjpF8u5Z8YqgIjU0N+L8CIf.(,0"bH[qM]AsSID0-OX`Oj9OcH,H9Sas$X)q(U=Xf$ml!R],rYKZAX`"Et %9'^n=6&N8!7AT."'YR#GFq?*kMqFsA7ZFg6:*fiRjrNI"@GUiP_)YI[9B_/+*4[26 %KR!n@dpe;b:BcT96rcd!Y=Lsh[$Dq^/Vk1'*%-q4=,Ge<5(B4>a`HH+>&K6UHV]5g'OI#[)\pfmPpZ/:>j(1G]PQA[ku8em^N1hV %b!it#$?Is#3XX2"ZD2e?bB.n+e`Gp[N[QO62,fWOl2nKMnT\Qc %jn)qc$gLtnpHl'[F`*(BgVd061VbKNk%_C[-*C72cV9Ssc0:m=LSH;6XX1)X^UM]o2l+//`54VIBs4Cqod]3+;I3f3oV>P_H.BK1 %4l$k/'6?fh9gel]T&rYN^?kB@MB7kH,H%#c]D^of`\Dk;RVC=+\@Zikq%gZTH=":)bV/i %67e*qVqA'nB2]4P#-%7aAiB$H4nb$#PCNDu`OjlSfH'C_DuLdE-Gr">qtUtl5%n)(g&Feh/TP4Gc"_![;%#* %/;G;2l#?qh4mj`=)Q?d(V7LY]#7u<:cN,HJ.Bc)lpr459H5fsRdNFcBqU!G)0M40$r%jK7b8S\QkrO[nS-*Ib)Kp^YblpcNl8+,N %):W.?KpWj2hg5\^fjjM'd)?)\=Tg4#KLtK0":mbK0-A(4*lA":_Z:fuiXmOZET.QX5(jT!X)kL@QSj%Z*D1j0s1?mdIfJQLX*64' %rUBHYQ(RDMSp^4CTBL3Es7Z?UGOKG,]E6Jqs1dF*\_VZAD;M!tAT)eLT-aJ4Wq%5Ol2)hf>5%qi]79dI8,lrSp\t`M^[C+LT6L>/ %hko4NCA4phino)a0AA($HA/i1HZMhSY/Y,=p(_`Im=!j+J)0^`F;9%Zm]<5??fC6/l0E":F;s0sJXd_X=cChB,9X[aI_29`i&8i? %+jiCd[6JD\GI^%!0(/@oP-mCJNS'daK#m\:nMDQgOQ761Z5D(+6J=WUJLR6j+-AYIDB80#M`Ch %5H=m"+/0:b@4X7sdl?KM2gt,d<s9 %7_K_I5-0er(5..cKc[sM0akl-d3/(\5/;0^*Bgq.1lf,A?[l)]cj-OG/Wc61IN!uYYb3V(h'Z6qlE/gFqg-VnH0JkABn_<12s=FH %o;8m)*6h"ZWkf6]dkO8J7M,EW51Nku_sS@.\%:@3fPT-=60jmWq&%^o,R*m7(UGg>&.Lsul2r$HgbFJO:ZIi>p+iDBQ@N)CZbY1T %)H;>4M`mqUlRSW(oeEm`s7+3bE*D2F_Ip>\n)<^5mHtM:J%E8*\U4;C7qBA-&G%[gs8,d8M]KGEDWmL>;Le)cM1;#e(M9l.grj$- %\(E44MS:NTTDG-qIZm"q);h3C_o"=_#1@U1bH_qTC*B`Yjpg=]kntbUA&K9HoQElY@#"ms6%#[ %+)VZHbT2+2#s17>jjT:m4*\l^5X.(`lEC0OA2a(H!@_sl**7HQ1?r?apl#5ZfHd"S'mf8ji=5a^AgDeL]Gcn__$;kNMN&3T)>TOp %$gGit_g[SbmOscNGu;duV$=]ID(k?RRj#:FnV)u7ibY2!R5nP&@cjca7tA_n*"3MN<(8">nZ4\er-[W]37"5Il@Rjn8HDP@$&X6Q %Ht%Cmoq%Z*:(?GXaK?#85PJ*R$lGYs!Uk+PU9l51o2P3"VE-JmZE$&>Em2kcY %8-2<_\d@Cqr6]k.&,^,CY8FQDeDmt3m5lAKe9sO2[cH9>tc*;"!r;BD\8]E"_i>g_@b8^ %I_`Q"ACQ;4Ma#_BXi5,\l3?`C3"W,kpN?p%TPQCI,Yokkmd2?$Qu$83a0U*H@=RU;pb7;P: %FA[T1A&U6q'2ro6/aoBS^fPqTJO&TMO5Dc;%p[u.Vq*=RYPr %P-\NOq\a'M@p03Br$n,L?q+J4]E`fm8u!(+JjZ]F`KLPMU)\KUgb4'.fZuV=&Gj,B"I5'me?- %`2?/!GH_&CC:A]e:>E"i4YTkS2Bnhb2Y!c`W:ohgh#N#:P-M4YS:!o62l"[(bY^>CK9e;s)DCq5ha=lgS7maG5tqGuL88J?0/WS! %CsG3O,b'R0l]BKp[8Iht:uIm,j+DHo^TapeYEHX8o9:-P9kP4\km:')!ITR?+eC^O/Zf;0*bS0QJBa1+p;*NN3B$G[nIC5m3C`k' %n*Rf3-FPq1\=aPQfVCYA:_l*s&`7P+GnYg@'_:TE9)E1tdpMnA_Ls/WqJC0Z]+u4oE=WJf7W&U?#htTXXgD5cfpuoKp$X_fp8h"d %p0HrM#cn=).F3`jf".a9<?%A5THMEpnR0f7Jg@$AoZ6iQ@,>R5uZ0BuPQrntcJQ]5AH\1/HD,H]i?- %qsA(KhF\n.OZ[?tCHh>RZN3_1D$`#4DF3jn-8'UD<5d.9,AG^]=>st_&:0m2k/Df&7SEK4qpNN4PodWCE.&W'+h-TND!"r$iFu$e^R1om65=G1`4tT'!V%]pKX\WY-[0Dgj;qDLYesanE:1Eb`X^.pS9a8@F(VN9K5GXpZ(E.;-0ZN) %aib0F%A&ZN+l7R55b(1Q:C;"6VHFJF_nW^frWM%JLCMXms*N(-6;JnJgIRZYUFSn(@uuXESfPh^-CqC<>Vf^Q,X=pcZc^;O+aeq&e&f]-Ea %0ahWbYt],#e=[&U2;fXba5p>IY]bpk)Y"/`2@rtO&,da,gSKH2bs%N..M(NW5qs:?G6/(W)@'S?kq*aj %PLg+37`*K[6%04aF@!,tM2_M.ENK8.$^SHH%PV*S9KNh*0k>OSoZCN3pHS_`1O1PF5%F%[hoHp!4Qr*e%^okJkLF`L`("R`NH)XJ %\%km\C-\L]SWIN.BY9pnUmM8si7\:Y1+l)6,ajG+^aQnk2F5j+BDGOHkE1nL9)1_Q#i8rlQO-3>d*!i$mFtMrODC:doq(T"`^T4. %Wf,FCCo;c,4K\!r^$d_$!s,GRT&.au!(RFllHju[B#-j]^ZuI(q;Ehf##XEn5Z@ai_P&!D,AN/F9SI=n;0@+?bY)K;/^imYdI_8E %,Ei[fI`8(pen6hkFe34oo(e-EY[Aa#)I0#(^60Ot"TeO,nC&$#r"&1NsiTr5Zs'_Ce2i\;k6 %-\L[8X<"NsKS.W!SaG+`Y3!p^@!m:Rq#f]dZ4bn]WGPO&0T@jB,U/_?fZHNgK/!i;S#@+XSa.h+?c=-/Kg'8Wq=/9q/@i^?,^cBM %Ijp!@"nZA80c1sRMdGl6l,Bt#@Q8ZP)#B,^43PnsI;!ASG>`nV#$/ItjN01J@edGCCsW81`Ab3HGdpc@ %pHQF'Ieht`L"j#mfi:2A?MhiAG/g^YI9igU\[oK#^Y:SOeD=&sn,0s#46>+kmWf5)H7RJ4DB-`gBm\IZ.182e*6eGfs22qFreVKT)uJBbZQBZ1Z5t_=rHg2R[ij7S"*7\S#uUt_jgC=Ir'Q3qKKDuh8pZkS)7V(09#T&PB!\Ye&R[H %ZrFhYbg"+FJ@ipq9kAJV\lsW]Lu(BEE-cI*`"0S.K&cW<)6SpC#7WumS&3N"^E1I#F>NWB+puQaEX4DiK3-7Yk]39-^jGhC.koK^ %)_@K,ON1[%;`fg.Qi[3L-\$M!msb5)h7rs4PHXu\KU)t2G?h'O/YFbh[X][%1Fsu,_j+UfT$(k71!hHQX8okVU%4.D#FlHYQ2)U(dC)c.&AT%Z_lbaS#+)T3bnq]K^^2kG!6u2ca1[ce*R#Y'_@M9_9@uP$J<+.f %*K=fo!Cot;NRsQY'9\gupJ?Fp`JH[:TJ4Ub2F*Y9*"`Cr2at2k1TaGQ5c3f[O3pH_,QO-T<`*l[@$qoeKKM&pcEiJBArt&S_T(g5 %/NcS2ULkEi@_3fp*'Q/$bb)^(.FJ7`(R\q"TVfIS(j9 %@Unl^LpcHTpS"b:(>pZbV5 %QI7H'?8Bd%X=tG[)FBi^bQVAT%=:KK!7'f(=JB[c5W'GR46dTC$VSPKe=FoNh@;'cc%;GfmcM_Z49P/k>N*33$@-VJIOZT5ifXNb %K0`h2#@DT`%IsQ_TH/MI?3!#njq2m4gNeZbKtOoVe`RNiE=COH]1lO8@^!Z#fNTWnF+q<6;E]ZGV8'@30*$hh0%%.Q(=*3W`Q#(3 %&UfQnm,"Bg^d0r"$hTu/iU$>tThN#"d'l]mE%Lk&JnEurKYGe;9C]+1[p\iB/gL502hbAVLqWkb#iR*+((cl21b[4"AuFI8^+bs0 %.GZfDMg5Jdl!?m;![o`Wjm;1=CD='PItPHh2H\J95[W.qL^aI_(,R%tH%is+b.Z_K/RK3+ped'lb\!?86Z?p9o>@P@H/\A#pgQu>K2cX8E==,Eikh?kjDd'j)&@8b_((V[nE*'3rA %+RZ)16=1R0"AUqNDk/jODa<3;nS0QJ)"`M`P-&Lbh[8sU#TF3Kf!W;O"3H!81fTR(PL,PK\a]H@6f%u#`AS3^MlRl2?Qed\&ZdM$ %7BpFp$cL$Gaa&HI1KcV;GRM\mk-2X*N)0*STg>r&Ksq,uqcjS1.`?cJgB(&sNV%cr/+4VQ6,\IX^':QR!Ag2=Dt*_(QC_M*s.0G3 %q&a.YS'^G#MC5_Og;(Z+!5"5d18`1tn3M/.N)ioLMN0`K\Ir&Lnfe]JN1+mC"]?Pr8*s[b^J_RV(54=#%&6685o$cM/AUJ^gPPD` %L#2>$hE(A3!NM_\9tc_kf4jAr='p>Cgd"AsUsP2LZ3Dl#K,-h7rm!W[=R*?>h.e3PmO2V6/1d&(74m`'0=.f..kV2P/?sRINe[3P %N'QI[Nk5T4*h#s3GtUdqEr6j&3rS,5%jV!Ef,Hn-11,(Tko(1SB6ra@^d-WIN,!4l4/d:W7I:r1pE[YaH^L05im8TD@>Z)$q%6pCq]M(BFF!;f('CO[(9t4=^N2)MarENlU7@II*#0og%Up>i#*\o+3+j".;+!"#hHURB'FCNThTB9Qk %-H&6'Q,(L^#kn6@\F"6\FB9a,P6k2auNZefWOH0+`7%6ju0m70:1a]>Ps< %ee/+QB]l*dm?A_ETl!6)A(;\[FWH#VHPXS4VDAEgk,a3<(=O],MOti#HTt3P'%D5YAWY1#7HLG4+L[4Z+XXIT>u!co1]T4%UcIiY %W"XHHS(NL*fVcht46,"n:%%fo.EmELcU)a7Nu).6g.A">?]AHS(>E),2k%?p:9e\U1[j8=V(9R2bqGj8;Ia$l-i[)8=55^7[,:Zj/'$@A0DlJ'GCq.8/WAG %LG=ue=e-A%%FKX"r#9beOHLfI6'"S_S=g\7Yr[OBc)T?5N;o-NTWM!U]Ohl&bJ:u!*lDFhCjB`":_E?t.5%iHfRZ=dITthh'5,3V %\&:$B!(!EPH%tnV>@Scg1MK;ZjTI>\+g<^8$B>c^V=Dd<7t=ATr6N1:82nIHOtc2'AeYi_A)%0KRWA'`g@1^j^`^JhXTeIRD:rYdPj&UJ^tm;.1V3-!k1_a%8I%%K+-F(pR/!=?jKc/[#`Z6TAR_<+^C;jL2'U@rIZ %WH%`_9W:ESKjfK`As&o=.`-a,MIBC?nB@,b-Qp;XOueLTPQR^5D!?msUO3=BW.G'<"9`NoEuQ]gT1P>#,BZD; %ku9je1AggG],SVU3=*49FQ%k(tI[_T,B9WJ?CK-Y?>Z-J?\@9M&h_KH(CR`^h+a%-%a? %U:[a4_kepjMG&O=G#fd)H40Mk7I\^bh$ %r'dH<`#9[DZc'_?!@J4k6O[RLZ&L_O;:gqN'TAC<[PI;g&331qFk'Ro34[_8[BtWhcg3L-UgJ;fP.e8J"r9%f[;#5R;P.U)ZV3eu %%"cK?N+"^]L--8G1Lgu1U!g5pZWUl?cRm%leF>)gN.['<$U+\nnH*-86f1]j8]VaF`R_^'8GSq%9p@Bn:FT(NW=fr"D!7JeCeF"0Gg;i-Wbk?h %\OcC%4b\9-^.]_6@qt2n),haOPIiqDNkHn.2MIC1YR.fDPj+"VTbN.3$C/OJrVofC3iFlodLHH;P\:I %TNONRH7rD`O2).6ETLp=jJXA9SK"=Xe(hu`@Y8M_/?REH7[&iFML^`[/=*"j9$d8P/,@)M.C!he]EBo:@_r0%S*[>QYZb`JCC_>g %XHm?''TgJ^i_"$g_iq_f$PkI+GZ6d/1kir30LL=:oc%t2d>0sfBjl?`n7"lWV1hamL[-dAZ!dKiB%ReN0c2`bBoB84 %I76!lm;1dD4=4T3A!&=!99B)_JJc,;_ukLYgF,HR@ehr.Z%#\]+H\.:';_h81E$G??p);g,KuQUonFt(cNQ'jjbIRgUt$J4PErJ@p/%S7C>QcLjKGZ0EJK/=OgOm@g90!q71e-d)Ws, %O,-AcNK?-LKkH69;AB4bE9GXNMfd#WMbBNgL*gWEa?CDsNR91u@0fS"dWDWX8.4dDgq+l1,:sS[#Mgt_YZ4oJJ?mj$8-W,.QLVs[ %_JI*#'`HM1V"Img=hiq?/nQVq_Xt=MRJF$i5Cp*=FT8):WYUa6CjKZF6a]Rk",J:c%bsFQM-\J;'(h$cPf^Bb$<\0 %N(Xo2<&'&2)Ir&lPJ*;puui@3[./VANPoc0bB.Gmak?F;j-c2+$QG[p_sHbX][nmTYXhG:=BaQF84% %'$BD"-?eT%,-8Xr(o\sD%WrUDS"\2tR4Pj[a+VIJ$KflD(_Z39Rpm(Y*'(*20%ss-[@XUsN]9;d/r*4fI=dek>/_'_5Z]=i3$I=; %1kl0GV%L4\/tP4g5X6;6CuqT8C$a4/03atM&ahsOl):/'i89mI1EQ_UX*.#6(5Y'Q6q+)^9nm:^%(c75ag*0ogipf!JB=9D*Q0g*fG]YC#p'"_S62=P0fNMDQbNG:fVGHmg %Srn(ro$Z3PS]*[[3B(=GHDHmMDU(ImHkWH>A!j8#WjY`Qp0u::=VajhBVG?7O.lXDKp`:^cGA,Bh1'pkgLlP7m,XrV5;CUZ;2)g%Fj$u.MHIA(GJ%n$g4$!3d2WnX"8?a[lcINA^[Ob&8psYEU2VT=kOa,GK(/)e %74t,g.*6jQW%@p!Q["mNmB>71rsO=Y-C%C3*cc5&h_k(['(`L\9q[J>/?a,Y;Lf;(26OZ7r;Ot0=nMWG^[Rroq5G2P-40[$fem@5 %fhI?kB\l(^M.g;<(%9Z3)-taJ_,Bp[L0f?94#EXk`?mcW1G@:_l6m2KX52\d\@ZsE(MgJ4nJD2[%qJ[X0#GfN,/hX(gsq6)?`cN[ %l3-B)iOX08[cuDL\J"9U>`$*2#XpZJZl4"^!dr^D5d[R*drG&)U`\nk0UiL,+D=*P]+5]:0l42Z08b$B*7SVV7."7S6s0e40UuL' %IeCQ8:ilaRA:gE"hh#9q=,WtP_+b`L:/,%\l8MfE?lU=MkmZVA)F*=C+o,2BDF-.$f_tILYGV)-BL'E.9e:7Z_'Q;)hne2uZ/KJ_ %L#\U`>$c`?C3W@2&W?rtNjXF2TNI"#2.dV\Zt8a_&e(eDb?<42"3>5i#7cuLdXU\N1N*Gs*#mi9%_&r_bQCJ%T-po?+W=>bo>WbR6I\ %B&-gnW^_sDBk@GrEfJ"t"dEO'H97Z@Ta(hIpC>^i#/nZO?)@tt1[rima0EqR0j@bLR2[ef %J-\PYGlQX/5%:KLNR?89SW'7;To;7.a#4"!jJu+&1u. %-s4ZMeS9Xo\nc@\C!enJYQ2RGOcN*[C3>DB/!Q?^AG.U(J+S!e*1+HY4G$oliE1de.Ac8(0iT3A>X\M\S.0d51<.5P\J4]%,g;sT7tK,(%59Nf[2qA6 %EQN?;N!7DJrIPLUaQ;1 %OZ3WR7[pUj1kT:7._:Y-?6_&&AA8;@U`P\KR;koOdK.c.:93W=EP$0ZL$=o?8#0S]=H3CtR5P2.2FrLsf3O!c`JM4j%Atlt!VYGL %$R],&Vsk6W7PQc]+bcU;H(/1Ymc5L3P<47DP9uf!9NgO49dC9DIqfL[1I0N:gY=3E.^O/fZ_[HAS6jA,T;/k\)1Y54eZs25+B7Ti %4Hg1I5)I+Eb"(@Q'R7aP&NG!(!_%oAJ:kdNFs,/K)U0*5*]8k_"Ecro;N@e3Y-3P+cKV0di38uJ+[dD,Q!f-j6fa=c7^3L]QdkmV %j-%'8!G7*PRGqX0?Hek!!_ee'=/-t0(!BP!0-(s(N[&+<0fql&O@Zq`R*cJm`mE[N!_f7kXqH`BUD?9`_hR441BC)Yk`MD+U2a5K %1Nog-6l)0MCjJp&Cj@\rPKf-O1WbL:m3=ZZ[cLMYi7ZG7m@#l5[%bH55?Q@>!#Ac?1CYNDh5[e4B@7W>]75D2\_1lc5!,#E8^k2R %jcRT[!Ek*YHo`jmfdAb7eI:tb(70J<$F'RAR4aY4Ym-ndMF?K>q>+%Z5)(^K0+ZZDA.66jCslDl;sN;,83qh3 %K5n%'Hp/"JR2?Qk[fHO2Nfr:$ZZ?K1LA&S59a)'$f"a)l'UYEum0m(`ea_9m=tQs)h4^=r^m0k^\"po24?A,@_6sHn@356c-e@e!#NeA-)r"]*XT8qKLs^0kLrPPL+fB.Ztb=$JS<@@C.,F4AS/@1;Qrk3T+VC7j>3c1J@rFM %m3WM^+Z5]uk"*,X\-.oQGKmJ.$[rgjD[N>[Osd[T39IhC`@qTqLm-?qe//']Y,I5o*"I1tf<^HC?,,?k'G$a"Nm=+mNi^IU55S]bAr %WhR=CB)?l<]M_##*Ng1MGE]&@J$Ps(;G1.6X1&%R$d?^4pJ^JVp)YDsA75ot&C-9Q@P1HAaRWAqX+I))>%Jr0)c=A:J4#0#]27Hq&NX',)WY)R6uA\a/_+("k^K %k87p9EoDgF`dEZDVTD'Fbh@cm=`M$+("/V(O(9oQe9rmQjHJeYQ97COJ=5"[[Z`tbQ+D)8GT`D%8Y %7Mp]u4N\ZS%QGjGS:_eQ%!$gVZ[Si&)T!Xq4`R%,(*RH,&9OQY#k'1T&*2m!J%6Ute,Ql=\\kS@/j"RQf4_b%7 %o-!;1[^!kVUZ+mcZ,RN?QD4%K-WW[B(03b0R([s&k;!GJOGpHH#7=T]\CMG6=>,]W6E85:Sa70rGbaKLiDPo'EX&7;g7SO&j]1oJ %I\.Sh3b4TUWc?8*(pq)E_r>h*L(g6P0Ich(NMko96>T5B"XK%D4`pF^b:Ok=[Z\S(;gt9rU!(n*6Y %i)a]=T%V)?5jpQQ-[X+/QoKX)J,tR2Zk]#3V$e"uG^J5bQ%Q3)^tEn(i0cG:I[_/6n\huA$r!2iLWg7gq:`lO+(T1-JYc%hd;9*u %6a5K,gaGI5p:I&"(Ka?tOS%XS_PkE7Eb[\_Y#!P6,E)5OR,3uBMi@=;"uKb]34h]1aj!Clg1II[AJ)3M8*mYQL?^0;kU(2:,&'Hd %@L"3e;2pQF9QdTp0n\1?o=:uYM1mkB(^,FqbCVWSTUk#:RB;e?oI=j84scK>7TsE>NUA+;-aFGlO'j62(>`_CC8A[BC#jZ\!i6.? %UD+K'CQl:iV_Go;X^M-s=:mV*E\.O4E%;#1=IXkc5)AHA7C.W2@lat'S6,%l;.hA:[RjD?/^oF\X4=C6I,>T,*9^V:b7,5!=/'V" %JR:"fBSE"AA5KEHN?[[pl"d8r0aX/k)D%RW/B"e=Ps*61^OV#=_pa-Aa/3C3%@:;IUeIHrpuiC/nc?>p@o>oKOp'q%Pa3"3PV`ca %l>/e=S4mG=cF:&_ch)-5#,_d2B"V4QA6sXbK8if;^hpN+QY'F5?sm'OF&DIIYr[q%bM%N!"32'q.JXQM/4WEHg7#+h`C\:T;*9QP %YNr9`BA?3q2/ASo(?T&RaH&R]ERkP;R'm$uo@?"jdmc4FHsTJcN`?._qR#3O$('o*Aq7e+Tgq0=ERkn5fp)7a;0;^',tGG!r#^VK^;@8!g5ms!a5o?^`J8'td?Rcq;,%c?-`A@!Y*jH.*1bT+`Q>-X2Sin+eXue2_H"q/J;Q(MsAu?]G*c\R*qej %f%=tfO[6]!J4:A2n1H^um''j<@lO[q4>R=T\1<9TR)XPQF>4:.DNZbp4-P('%^P'o=+M$[@qHIe-AGoMah5MF71*".s8]1c%nloHlN2fKkdqZ^ntr@.78?Ogo)\G0QH;M?\f:bX*2u6 %<.>PU*Q,"n,q+=0dHMV<'KkJ%U_TUISBEM:[Y[pu/c&YD`Usfq)hWGO*,/W5L6-dcm^GLf,VE&/"A1DD^5W`'Pqq`u`t-I_!65:oGPnde^$_bLVB0TNg30(hH&;c/r_r%A&uG3DWX@<] %8Y^jZ^b#LAi5R:P9+Bp!>a7e$&IegM`Xc'Xfeg\^>tZ1t43`sC3\(Ee^!L9o]6RDd(h%RgqW>*s^P+TaLY`e>*2FaiKO&PkrQ%EL %]8T2"jg=e6Fsho21J/s.&-3XG['jL#TX#n=IAa^+;?7\rpmOVY0#,Y&tVFs:FlZD;MM %nVcP]o$GTUKink)a,j6nNK`P:bBL5U+gjD+VaddCI\#M20h[5m+Cl7-C6@kM``r[BTrq25jUiCEa^s$S %K?/N*,&*?%lI>*R_mqf[,WIZ?X/M_/IDni)^):63NI-W9!(V5?Ca"LOr4+`hmLu&9fJs$]*nb=:En-;EMmkW!O?t=4.r5CD(J`79lp-`i,-h3RPG;!ouNfG3=6et2QNC*3Cgn;SFdX=));8kaXnB# %8\TK:)ri=qo0L?]E>5Lo1hjp[c8eL7Ffmdg-qL$ZT*NY=W-2[AQ^jfnfku6pi>`,neYXmV"6W8bW %E*sZ>&n;ZQKKe?]csSot^cCUKl?(BlR+`J%sg8NAZO3='KSak/TY,?PjD#9HO5 %fr`-u1_c;=PN=M>*m<'?[$0[@5".,-c&KY`2FC@7X69TIC^ZA`;a %R_@AL"s3L`%YTCO9R%O_bQHbIa$+L/)`S4^WUmn`&C-PO%GRPdM'!j&roLBkJA(bi+:D]KR1h,$GC)3O:FE.GVqnS;P4hE9ZQN7/mo" %qgbU\qf(U'];raOWkuFf_[3R>Z5Qo%J&I!P8b-aVVNV$N,=nD4NlAduI[\VqLg'1\8fEgDHHFNZ^r7sUWC;fT'?qY8%:)e1/QM.gX79B %:@8tg!2Osd0'>[`U/ed@[hdWd?itkeKJu<.YA7@ZNm6u6q]VhVs('UGC4:'Oo@%^OMhKg8cV.l2\nGT6(o;&W!-G@0E!!1J>ci@$ %BW/%]MaRWSbZ6<",k.i"PgZaUI0+%(Hj4Ti(7-)BnQoEibiO#ATZ\#]<.@\;;b:#Aq1]&&n9+HU(NhC %[Xp_Y]:^>Z2`cOO:[2di=bG!W[T>B3&kM1O+*@^,I#c)4)S@*XS##I+k2!I"3K63f>HLu5-ioePfQ3I1gXp9C.aF'?8a4#_pe;86(;t$Ec.HMRi+4TFYT?)@90/!PYt#==/3;T$AGAq8>M5ZglBFmq9#WGYJXen'(DC>H%tLhog1b`e8MD.WpZY(:@6RXn_%P[]L,B%-lXk:*Qs4/Y`Aj^#j,a]p<%cDj\9m>m/u4T]^^&2E;+7qa]!q.uBh:@^VmM5:+l*"ZA#=<)]g*,tk)$$:%`)$`Y*[ %LS8[\[$j2Qj)1fXr*92W+&V[Dd^:oB*9[`1Q@Eg@&%b#^/GUN"UCg'[GheMN)D^Y4=W_T&nUZ7a/**S2k22FZ;@/+@f9!\uq@sFXqc9@2g[TA^dXZ2BW>Q#_Ic81h=]b]eaKM!G$K=:V=S)>8H:20BH %Vr2uVA<^OM.qH9U.UbGn'\D<,@oj\PfP5O^Vc@h6J5IjjK3mg1"c)XkHS*j*CrL=%/)kI)_h_'eZj&/]>b1*Y,L?V)goLh0`9!G4 %U=F'lntAWtRVZM9=Q*<*`j\'p^us$LS`p'2eP>Ut2*$&id35]Q%_[%Hj)SJ(iS)9!k`A$Gk[<81L0D]OdD==)mRDt>CE/g@SUd2Y %fSK#^*-$T&,l4se,Y7Xp@^8U9WP0Aj')jZntU@2VAeCFqn(dHA">HAW,IcWa,;Wq^=.MHS:'[-C0E*e)I9R+:,-Bg>X;\W3o< %K0&;h>,G0=eKK!PZ#Bq58*hQ1p9CKs[VH8t+JgRd?pMd;6i8bg")":78k<5-$UeU_;9YCgg3Kd>-K<3X"9NBfArSD0i)Q`[9kG8'c8V,H %Ng-$:#2pMK5)X6&U0G`noG4ntaHBNHopbg\)AYC;t*((fT74F[3;&@)`C-B04#70]?cS,qId"0HZM5W %M\\>S+/PlXrsom=bc:p[WfYgXX@/us+%7J3ZkMq)'VS4@ZN#9GBs5!&[6-/N"WOCt!=gAgJ1J=-HG[!(cX=VEa^>_p2A!\s1"@Mb %Us(X>`t?I/@75d0qRC("#e21s#,#CP;DiWZ2"5?*CM[BOR]Ln$clg"1@$PhKO(@Z6OVtqW5Rh[t[V?J\]3&+I(-3=$3(f,%Ml'EG^Zoj5 %!KJo\k2iIo\63$LLCm4\#qrP]CkislG@hUK#fi0LS>$%m=U_1gfB&e%\@0##(BU_f5AG9MoA,T@Sg$Z;FcbZ;ndP7;mfJu6"Fdb/(YQZ,9)Z:Uh'm=('8INI %LuNOa5/*;BqbF'*j%Cg2?6de*iPSmsS=Y>mCF?Qme!tkpd>%>0X:L7g?Xf59WR"Lii!X@Vn@@;IMURp+kN)c*JKr/%n4<_u\%p_@ %eVW-IDJuWM`A"%:^/tn;4_ji]n")5!<:@`iRl_Udbd.5(%Xu4-_fKNi8ZT=nA+]j)-FuQ4uf,Hf?2"j^=G*d %[_QuI:GIUhb-a3(_9'W\bBf=H^i>UU5l[^niU]fnD"nO0asT!@SR^2@UV_'" %8t8AI5Sc.kfsVY_JRYmJ4^V+:j3L+&`c?U3<-\T3iAe+R.gL,IiL$nt>/I@R-&L4@=r$&Y<8ZJPm_i$462%"t%mO:Yrc7lVcO8HA %kLGm6n'A>H=IYM*YCL2)&",\2heKoKpm7J(VrUj?d#j;@4Y\'@r9!TVj2s8\SO1.=Wc$hf.HKCA.@Y\Le-=^^X]sP+""R1+mh3ao %]A^8%K#K?F/^5);r%H<:nri84:LH3aI4eYHIWunB.)[D6=@90?7AN&fZ0=FtPd>Vhe%lHC[&fE+P$cK9@Xq8T/-nKR7u.jH/SR_B %(6o%ccYUUZPNJs%FQN\G*F\maY+u*6kZdBe=+]r$cYq7diX$oSO2O57,'j"cP;4XJ`q;)h/`%S_Rc+H*O+87/O?o(n?p85fA %@6gJE1N6;\An;K`aN]0&ei&Dc$^gJLRN[l=3gQFrg!kn#,[j.N$<(/&ihKE29];2HR)uTJkh+KG3Bdh2+0/Z+-on_H0JIN-4j40j %7^&IFAdLrmW`if,r)<0>8.:\cr;pbH2s8V`WRKQRfI%4H!%q.C0?#]!qZeVg!8j8-^_N+3RC8R?;?Lh/eJcH %q/arJbDGgESZmk6KU2tkLt:*mbMdDB$s%L!mEA/lb_NaZJS?tJ"a3jo/r$`@UMu=m11;t%A-l0;O;BtuSHQhL):0Y^ZXtIt2bps^ %8A,?,il%P)!t=R2m-c.Y&/@2X5g"cE95JE4aEr;E62+@[m)]l`A+%KnmYo %Lg#&X//Q/_f#]JE!Ep`c^r1>4d7hl(EHji;>82_`iUm&h8`bVQt[SVcE"`<=6N3(f8;R[C&XT>H-5h`3L/k %'*6ao\*hNO$T9W;JX(+X/\mS\&u5au6S-)"/j3_j9&:uk;MGA@ObfbTNLQ=`V+IXXVhK-AWk8Ek`HbnTb!8\+bT??YdmN^k6kj=% %C]IZKR62VQ_2.kQ'im9/QFlnP2L0Bq7 %cNZ#12mc9@Bk?*Gld,lrHp/f=?,HpO+\Aea,<].r&McZcV_IQ/f\aZJ7-rn2!!F!T/Dm7h,QZqlqBN4l;.M,W=s_U)Q^X3ak#(]+ %.2/J44;WSbTYSX7)LVj3h2F@Us+,o!rF0?*.FU0`Qt=i(Qn^@GY0oUrdMU0lq.Sk]O>P>>ARPH64Gd^b\&;`+[E`9K1WD`+H1h.S %$].Ve*%[AKa^t7I\S)R[J][N6]M+eqc;3PG0onbrS1fnA_@5'-b2up!"JV$04bH>ta=FM`%8i%sD(BG/n %Bg#"P`R&?IiAXS.9;ihTa=tXEdST14O8QNK,nN&4R0T4+rt/)K,>NEPPL(I&0JR2dP9_3U@jCD?.;)EoMNLlB-#g.Ro)VV$4dC'WXSL,>MJ2C(0.VebdZ&]Z8p!Hi5eb(>$[D6#?o4I<`=aAd %m?@)BFV$%qa99_kba#.oD> %-=%8F7RbQ.F,>`>L(=R&oSid,kQn7p;j)$)8l+?ja5'[W1>4-t"j?u_,L*h2tUka0teEE^* %jX`:f!&j#eC;pr105RPRplp#+7(-?0=eNPK30i3nNN%Se8)WU44%\D(R[$q^3/XllT$O2$`:^L/o!'lDO(9D/a_7`h=;7?r4QJ7* %\#dRb:24ipTQMdM-l_&*p$!"H4+NlYLuW?-GVA4d2)WsKpb&uRN#E)nUcGHT`?L8_WDQ7l?rp_EfJQl"n'nbA1]q^Jim\3+&U1>M %pWr,N=eC72KnJ'A+R\)#VR>mo77Jk^eUhpI/$V@dKsqqR'54jG.:"a#(g@e;m*s<_1+`OEVc:Yg-]DLFC%_I>i`&c:=;!\BX0IR> %-<"b.!%!RaL,q63(^W.dY[#G5j%$3]Mf9/qlT-S^oS[;1@4fj!^^)R+X`S;Mn+?]`*S-1Xl`fNXRLX+F^hs4RaB)BL?W7DjcZ`$Lcd*(90LKoQ;H9O=#:ODp=#[@+K&1mR?\H5(D7O8@mr4b-Q5Lt %@1YDs+CD)u@23uu2DgdeM2>1J3"Qr%XHGm/5e(A(GDQEQ;bh=?+r4k2o`:S/><.)6Z`uh6R,X:ldEk9nBabW*igMW[fMZ@o)%,Ch %$QK4PRaM"o[7F7%9-lTOaiT5/N@?_:B@S>/I!KeW87^o;(ru/d*PT1U2X+^pG;a@Wh %lsjJT^b!+`?ud;`HAZ\I!te:+2E@eV&XXI?*:mPcY.RM!>?7&r@p8pk/e! %Z;oP^?)#tOlK\=NU="b4@YMkU`SmkJ(34<7nGR>BYAJ1pgMqTps5F)MSh6NI1?C@7#*C/Z)G=U;QNVi68$5e"()f`FOAf)6c1;U) %b+Vi+CgbKT80SV$:E%FMkJ6c[6)*:RR##n<>%Pb(B+elE(/C!e,(4/,Km7He.5QackU"$;2k?3YiMJt`*7$4\jMfVOJ!p`lTYB!6C4O,P7%EB2$2t>4"*(Bsb_g\MibSgIQ8ogp;bP_juZS*]4CD.?'AQ(E87N%H5 %8a)(@#7-(<[c4=V;J,WI&BQ11JZa)-S'r-Ngt2[9,)q1fKGu/WKOX-\iD.C_"Wo%\+Rk1BB"r<4,kB%gpTm,4OdI$/I(M/3(j3asK@0tO#OfjQ0eQ3r6&he:aU8Z+H=BM_TVkp3@RUZAFm78OJ:T`[%o)/Bjq7B_a#6gX%[ %a8n7oJVAHRN,F!%\LC:%"DCE"]m`9i/eXAba&hp%$;FFe;\6$,5C'BGfU?DMCn6s^1@'Q3BOD-?SuYo8dLU`9KR:R5KL#u9^6+3t %QWUG[-;A;D(M2!7BK/8"Us+483WbKpVh%VXit#\.>sP^6(o?://Wk?Ln]#1DligW1d$`C'4Rst:3[VoM=O=)=@&rd)n!TZfG%)Y0 %JAW:L3$&7^Qso`,Z)AP`(4?H&,a]%0b'6Q\L&6YUG#Ul!!WgCO[`RedqlJ4#&+_n9!M+_6V'+$/iE2X%@Tur,/1/bR!t0!m6cErfg-h^W&n"7h'H3j7me,e"ks,XU4gU1ihY/B*"oKUi`!7GhOB&7UO:ZSr+/8RTR %"WAWhJKQiWR0K\q[$qj'pKf'g7RZ<@HP`m&62.@9P:L9P,NCgOf,$iIaXsRp,kL"7c$k[HBP#*/FL%.PA=V)$dFcV2??$&pY#Fp^ %7,7/C-/Ji5)eD^L'9L[6p1n3`[ejlt(k]04#HPTmY"*kd<.tb*_h@laPsJk?NsFHZb)_rXrR9huUZk[S3Yo%sUD[2%1%m>)*FL1GqGfTS\PB5>Perb@Hsqd_=cBo(1Cf\V"TB/5[j/?YhgKp/-n('2@G_k4?*s`4e\$Om6XZ+rlp%1G#D2,&Ep?OX(pJfG*a/ %<"K?t##XJ^KPt2/T/6\9Z:%3ETl)`bFX8eX@nXGf0>1(@a&(M;j3O(AWR+]l9n)UL7,3r/4Ke&p<0iLDL)>ttVJ_!+[!p:*q%^Rp4&V!CE"LY-dB1D9de.VN! %]^bl"(5(&#W\WO-GGk2".[BiEF]]cEZ%Pap3g\QB5pPP37;hQ5)2a93"0Q7l51g!LU,\&L?k8^V8pq6sJAjO3Tp=VjZsBc`MV2XAITd_fYiEGiM/"#BIlP`*H_T3mE.%QY!;X_>A(g&Y;UPmN%#1t]bO %5Vah6G]mjH:N>^T;#NQ9R=a(g.6Cg&a_b#+V9)3*#SHq<$RtV:%2&+A'jR+7Tcsf6sJ;n/T5WFM+Ht%aQAXBu,7sin1L;KCu@-Q>P'rDsd`_i$FC"aUdhr+"Va"&@HCk3uP52'p9*\8/;))Y+Ru3G#VF!J#D(4#1FI]>48oZh15en.o %PH!Ob^=s#oPq'%O!fk(+?$ebXGuI!j^Q2ruh3k:A:'.b@q,8GF#=Gd#04,F:q,26-AC:ss[?AQ$l@IZ]()f$;j.%-)>,0LCk;dL= %9l&jK&ma'p?etl.\,+gc^NS;nlc_HH,C,P$gdCIC3S11sq8[!.khIR'j0*5?4,W6Nk'k;+hi7;n;Th0NmrCb>J)1!K0u5.Ve2onp %-KQFfX^>e=<:7=/`kPKm'7!Qr_<^gCZ&M$I+RVZKd2J1Y0oM;q2KcmEN:OKgG;WnIn^rGLYSuJqAtK4.Ha\/j!t4\BaBFuqaKn/` %]345=F6G_mA1^MkhK5*W&LO[0LhIP4pS%?.8T-Lb`']S"[Gjh;2%._*V(CZO$ngS,+L\\WdtIFCD6FZ9$r_u6aY46/fG&u'@VG2X %`R+P]/;C%*CiG3.:#QfH:R53)<(r.%S"#euE+cA<+\l[EH5%jBoJa7hceNl9Z(B3j3G:%*_/\@V?[`MkOik+bupP3,V#4Sk&!A %/Qc+*M<.#TZO1e'D]rUoYW#bG,XP["Mn/Z52 %8ZV55/SSjXR$P+=&^un$4CVJL0u^MiA;b0D^!:Qu`=R&`9-3NB#D!OuUde[CCncj"'MWT3/rp:KrJ"Lqr=Ms`l[s=b[rjBMSL'ij %aSL.cDjVK8K3H&b%]XN>kEM1N3l7onP$WpQj7/s%5m0mL]#kVbU2T%>5;0fPO]Ji1;`rU2HDls\!9:=+*W[Rl=n]#Y/X/a43kNBA %5hO]rbp!`Tca9P%=>#sXI9[\81@?ZD.GRoci@:1MR8fDAg,Xp&=I164LQ?-LL^;Tr[hcU]D)88-=:j->P@Oe:D\N*^oW,:U6Ii`0 %LFg7a>=?ZVl%[8Zg`pmrdm_:@:dA5FMFqniTPs%BYWA#G[EP"JFrX^8Qan\`D>^HWFd %k8`eYLbh4FADPJ:!kL&r:2D5u\6um'Ycqjh3C5!*]A$Wl'8C+=@Y$UY(:7_BHB@*,/S9'ql86H0N,kl=TQfjJ5#5#%6L-@e]\E(*Y"&n\E120b>TP9lhU>&7!A3HYGU_9:U'%RU_srW&G[(>L'4t;TYM0k3mrT/:#oFjO'B^Cadc`nY!I8@C-(25k6Vob7Z:G5&hH9Y]Oo?k(sn&HAR/Eri8Ys. %SWko]')>)'aE5b55ej1c7udaB5Vl`lYlJ&sTL(*HFSecGYfU^BX6oTH1P6j\J4KU!5E*/VKYk=EfHloVHPLFMF*"u)BI+t&!A&fO9CRfbe^.BllUc.9,1Pia83gcSMi?2MO$;d?h*/KLi:F]f)ZXn2E)JIME> %a''jK)T8H:VPJ3*^M\OGEmknD+L@"nm86?&RSiB_(jWEt\40q6aYsiJE86"*(deiq.2MVs %*Xs+0PgWEua3S:uFB$'.Cnfsg=pe_DDGs1a0rq.-IO&-.\n>6gk6>?'/DEM2FrQ<),[4XtXV5NfOtA@t'+lGA,-=U@9[cUg@[`V< %("9NQLLQ_G1)/3El_0\X@T#lqZ72Z]='&)e&@,c6LHG'@i5AmR8o'O\Z?2dj8\h5R)3%lVduk\4""cR">4M %V6gLd/WAj`I9r'es+3>-DcJs.BKUk;bTO_(C2o/Wrr$.SL#u,,>oEGRfbT!',O1T(&D7hDm6dVSCl9PT7(U>b6:@,mqs>HY,N0iq %R;pUd?>CZWSoHJmd+6RD,NE6A-.,.c]G?t#R>#$OaEp%W>^Vk^hZDQZ*/,m5/O0hC5g-W-_EfGPA7Eio8G".g,1A^< %!hV9V-?:^mi2pYaaLT+I)#Bk@oo4 %/Zq?N&'^`iU"iKSU@!6Le/p]R\@E-H9G70W+]FL.m.Z%a%mt$M.qq2V.dQ#Kp*?8WF(GC1Y@=[k\fO,9rdE4KL!RoNrS;RS, %j7mXnM]\!-#=JYf45M@3XmTLXAjVGn[9YeK4-/=m\4Egr4s"#N_G+hiJ#.;#eF3'!ch$_*5HdAe"UN#5%)b#-G@&p+_\YT1!\]/l %_XCh?>SFKl`=7`q3=[NPB#&n+#;fB)#ib'sF5ahU+)ZU&YDVfN,(f)@r;^'O1_@nf8q*KJM/\6g:F<.>-$Fm-H->a$$TYm%D6O]K %853%hFtt'IpZ*\-d'lj%i$Yk@?k5E&F:s-2Y^V&.Tkc:!5VBjVT*es(7'4;@5pmg4fiIVonP[_'D!)$a?2,T=#UBH+_9>9)K-H2e&:#c %RF^<+#6(V,+B3Z9*=s\`e`T)SGP:mm]q2Mj'-3+gc:ZH*jCPG'7J0GGAdb/Y]]6fgkjhc5kJ';<>a*!HuC %4Mj*I0663o*^bcF5MlU$m:iZKbf8-06]!ne+8XjAe.fg=:gAi>q+3!)M4]H9ReTGujs+i,=0uPB_,"MC#XaqOV5\7p1>dI)D*.Ab,MPN]+EBV=Fg];4r-ip %[`;Kb6e%&=mN:FLkZ/-P`,uX9!tjPh8_c%P+M5-97+6!X>aJ5@ff$ck+]mC+Pl8[:blZna]$+13bUfp+qsmu_8&`KZDY$"N.^gn: %VCijef[q0&'c8>WB[*T@(asPSAl.iXDP5W)RR'/'Z/nnf&,?4E#$nnFJVfBFW\ZOUYsG^_nUSPqpHkC#Qln.0G)-+.2`<$G,fmHS %bn73&_tm4fQmNBL6*r.c+C]t@or/$*)oPsO<.TjrM&?p&U`1L9Lm(7B$kQVIgUGkB*>5uB6%#-pArt[Do&A5O:t[MJ@QX3E3.'1- %)s31(;s'7R"2Lpk@s+/#"I@'f*mNJ[Na`WcF? %HU0)a-4iZ6VA0d%J=(]VB*R&jCZ@kiCKdn`cTJ`?E9/nQWF4gMRq@2m>gH:K]m>"]1&ngfmceE=(s0loJ]Fp4SW^Mim_*AT%[s95 %ji;BP1h%KDS\Is@SD&O_\ak\\J8[%BLOcL#9m;4;8E;I]*!kWEe$GbbPmKE@a@4r %R2>IF`9om;f*'>#&j+K:KdG,6@=])-&73s&QH+P&?K!%V'd.Vb-OU2ha_H=2J<\@;_F%?+.//-QBe3glq$`7Z+N".)NZDZm[=lBu %i]Wkig4L6jC*JGMP'RRk,t;k;.l#\PYJde7#`f][jRlDR)_3dob[pN))Pi;?Objn;j7/Yh$Vk468n]C+O.YVdf4-rK/LZi#O:KR. %>FuA'=3W,XhetG!gi=kq+u]*-&fd(%]lJB!5b=FXF#4o`$4D[gW?$Eu-l9e= %L9b5frBf:iZGK.e/>k\Q>sgAQg^mb(XAdmcX[lCW%WMSSPi`p=ZlufWT/C=<0h^d:H).m4^i9"!IA3p%-C5'nrgf:0Qcb`sk(BZ) %E?W$$AjJC.0FJ6qCmN+S]s;6+K_3<0.kAUaY*fG87-1hF;ftoB=AA+A(!Z+ZU)5:hC+*CH(D0aW+Nh)/f5-]5,eS?=;R?-,el63u %bkl&ZgZ^&43BKWSf2h(Xf,kr4*4h.t76!4H(7`k%P$X[VS,QU6LRD0e.'?0ikQt9rWbedoLne*0q!)jb[T<_7LrWPm@Z/A*]9JGj %[+pfEp2m&I$k%ZLM\jrdEn;:'V&;07n>'tQ9aO=h./:T&h[iVa!#=.CXXdMq(@@P:5[eq@VrS %pA:tkP"KXk943(N(guY$a^UZ=\d62DFM;V-,,.0s_c(?:Xl4Cc*^@9'G$@i$f0Xo(Li6e5'\Pk'WN4f:6:FP]FKMD9?)gV&FV^b: %#_82>,pnRe2(U&gAY)'W+'.C"-ig<>?U=!T*UP=6c?2"oaiZC>jIg>i8Im7iS@#Ge%r_BVOp)tLHY#o!Do#4G;A9hM,)(hsf"hH< %VaO+s_)bnS`QrRu!RN:SEo4:WjtM?3Pr[_q1qmd1-SQf!\iKQ7)bBofR6onq1;J9Q*Y'hg0q/)j6sZ!i>(+Vocc^BUNra?RlFG6g %iWe4UqNLuXV%kV1f"ge/<`n4I`0e)]0OS"*P%1I5oOc14YqL.]'luQ^n0"TH#I-bAk#G1uN*njZ!4V;e"5mjnQL[5;<1ddI6a"eJ %-6.mV_NqE,o1)o^-<-)n/==n<)Zb>%"[#7)[Pr2ACHG+2^\.J!-9$1!,!QiO(,'O(-P#r9pEGa=O+9X+d]fli1D$lq.FV!D&M+E* %Gk6CHOXN6$an^NY@ZV(ob7:UKUl;]4Rf.^1a)]Wh)-:QkV\DhQPZ-ckH`lR?e#Hp[R++ba\&,9DpG9)9!_p=9jX1SWt<$`(#Sbo+:+slOlUU)(u,Uk_Y0qccTIYD$Q^YNiC@$Dn<0=j!+?\a<(;F/R %Gj/XA;p1=d*]G$BC)gWk:$+Qoo(mSAU]]g\bA'VRZteRlocXXp^ui#eA.ccaDiXl.a`s@a[NrjfW*c:b08OH1"QQnpE7_^bO,VqgJP/d=S6X[8ZL<9uD;\+k[bm %_heQ:=W9$4f_pFb;d8S?a8.^E=:;$LdL5s %CdAascJ4k&P$4M!E.oAb77FD[3PEQ6%2] %b%Mh]<^u[o>oCmcW_]t(;0&1E'j!l0KN"FuY)I*5oC@:@5e[sO:,#E1C-.V3D->1Q]AYZ"4)kB(kI1ebSeusu0G);7"t$j>'XQ:$ %6a+7)pr0)WQN8::#d7>jFY=o,@p+ep6C1Qj&5,hZ`f'HqQ\^EHlN%)+^En]H$iqP^.'aBbqCKhu1Ech9Ual.g8WBZR:rMjjZP%e?=q"d[0@AD>3M\EI[A2QAflPg([/!Y[2r@G;C-4:':7eRZKS,`[mF>6Qg88>g"rf,)8PI)4_45/ %FTM7XrU.=`>'!KHrFUQaeDt#dTZ)dUHADZiiAXu)\bd&TOQ$oFq^1G\kWh[t#W+to8M'0MNq@*7Y1/V^Pl*:bra;mCXMKbBKV%@s %:'$?Q>Z`NTSmDW^[+a`(B*@=.pA'N<#T\nOI%!m5c;5hY.jgPKY'm_mhp"-m"GX(EZT::b*dk\dI?#'!7'jYnh\Ql7I*PBZ_g625 %[UG@"5W"/<6X5_iJ+koj$d`dp[q.>98PG`d,#:UKklO]\Hkr%==A>s@drG16:RfBD?Hu9L%qiXO'7$nE[fDCllAM$c,,A-R4Ch%q %H"B_D%+=[%OXbgllK'QgD5qg4B@Ib($U`;c:)K/r_21UgXZ-HcntDLa@1_=520$>%q/d7pLWYr:R8dX`_t"FEEa!1)qiXAqp,P?: %R@#%q9_N,=3t:4K%,`sA`F+m0/#JTg.:7YD;AN=\2/O8FHs#8O_hP1*1=`)X_d`6fmZkP;W.ta5PGr>=3M6Y#G("g7.k#h'Z24^?4%cF"*O=13Yj?f/_!As8GU_3MeW2M'k %EM,s`aiuA6f;5>>!9UIm>O]+,c-'5c1;^2qG>ei/:%Q*aC;]>Mk\Q&dp$ukFE:T-B:q3pWlp0AJ7_4H9le?Ge%/kU19J_S.LeG;0 %5"J'"dnfK624%^I4N.E`54)+%@ng"DRWd4Y)+tL9+BGU$-`[L`\$/HpA'iacgCG?t:0_"ug$btn3ugt'mZ[$.lBI,f;Q@s:\5"ur %CnN=ank'PI!eu0'%QAL4HL\Xk4L5*nl$N*"#8RQPjD,F%mkjk_V`df*Z]ah*dCa(fQ]bKWmC[c.%*K!!kuM%QLjA!:54DO?m-WWGG@rs4MudPX %`ZUX*?qHH^>.)dkeL5+Ogfm>1=J9<:][dWEabX#V*W:*C5E:nlK:#c2hTmQ1&0DY`pS$;EAfps%WXkfWTd;>`WVL[#5'(DQ\S+;b %:g-Pn]EDs*VPa_@7^MJN$)IH7=pD%P84N*N2(R;=gg*r0oPo7,j$5bZl9lO7qaT_@;71QN7hYZ2#toL?<%^0B(KOD1H-qTi[Kf?L0n %Mc[3]$]07'qbmabhaXHp>1p?O'm!Lo+Bb$)NH.g(`%H5:,_n8`@PiPoI7JE9t29.+A;P#]Uhf9$_4Mbmc*FD=N)e0A>4*S^Z'h.NJ8P&<6Qn"]-3P,kIhc.6#EcN<,,Hor6fJ9#H:l+e-me-6(r %rGXqUY]s(LSQ*YDQ'c,YOf5hk>>(!Q-UJ;!XlrMFMF.Jpn<]f'pagp)eG %D$?Z-!,0F]W]<81Ps+hF`0VojK[Ud>_bQ?RZPO %9a/AL,$_9b9Q+oF0`X-M8PuuAld(HljH.sDic#B2=M0<'iN^A]HU'sdPV/V3[H0ao0noe7KC;RS1KT5$=T$f7h4-S:Yhk3Ih<'^? %B;0dcNFDi;Kc\RR76Y$f>ZVJe_6j=)+(gk/Hqn0oSX6[S98c/*33*$<+26 %`@7o1%\a4kSe^oI/LVPbs'(DK9D'qIpqKg1PM2%#R2$V^/>;e7)kb8Hn#_8qJ!]G^G/Uio;.SCEG&YE)@"q;_I+m)I@.r&KsPG-'5O!kUSZQ.h%[]Rp7VC=qd@'*gT@C&+1M2#<"lJT]<.P[ %DQ?sU2oMf7o%(7]0I1ruU(iWiSX/%d=DH8$L_O@1=RTZQIg<,j46o8_)Y=KD4dYY!VTN/=P%\bup'JYJp0[q%;IH6(DPaj^9 %jY`MkBLK[Z$gpT.Cu@uld?6@2h5Ci.'nC,MQXOSOj"TbN=KJ1LYeN-i;UN93Pq8,g<\!MQHD/SMVQcce,u@b>(!j*ei"ZoC*eD`T %o[&5f5=\CKammiQ9h%q>5$a(0^CPnAPl;LN8e9V_l/.9JjRh=i_D>D4X6].BI=\WP,)V.Q*tGf]1R-[rqLSm#g%LilH-f%YfP*GZ %kg1"%bbd&3lc#['KCTpK559;)oVHdV;6O>_??0#_LqgQC0e).06&TLOK?Yh3]] %".gUj#FOm9W`t8d<[!A4'crno,p]7@S)NYF+o#:i_NP\#;^1PO'odUG*gZDZfQMLO-R7cuM(VC?iQ54rZMu%dQ*mhB%EG@X4h3Df %^bP`.+JChKQ?;8;3/G4,#E^r]HL>7RMDJYkO*cea(d_))o%B)>*;l@1\c-/1BsB!80amOlS,fT:I5%VaE2e\`U&HIrZGuRq65c2g %5@9uC<`7D_3]O[n8N`O7qsYEPiXA]m'];ka>6n*#^Is:&a"a&/hCPLE0a5eB7b_"GRJd"kYL"[,BqHuSQ#=dY(acZ %7s>1$QG0l3lY*T,qXVT?6!#ugj`0!-k/6t71r^lJ0OUW4tjQVH+3d33#?bW7WIK]N/.n(]]_O %q$cj_hXP.Bhj6P6'T!AIX$IUr,t4jC3>i59K1T-#gpMsU,gt-&'b+/qPKZ+Tqle``CmG_*?)loDVG@ %A@bZfZ9'h+3_8b&Ha=u=]3M3b?ID#H4f%j],N'`)O8sF6bSJBERXl[V:"ScU'<\T&=\MVV9:@McniX>*p`>64l4nETG7mFD4GYLk %7^efnL3Wc%0[-;7_(\[LH.Mt+9tFpEi"]oT7iX95Yu=u=*X_c9<_p7;e_,9+LTlOXDLJ[#[YL#aL)fcH$lEN7i`FH#3MNGR#JAO(SuV"EJNTO^/=TKi5B3aO$Bf6'QQ*jkQNVt!$J%UCd4?dFmD*i_edGr@8nk#q;'"$U:%BCN&T %iOtXEVuALa$T5q[og!6:[[L4cYZMDbn/%F7RPhjX)]nMjM%3/^UsJdJ3c_p`8f=6gd'WZ+@VF+G+ATsKctU9-Dg%nC0L@tkda*Wh %+WkD1,NL($[YK7+NB'ZZs/`N6FouSZkjJ#OY3QS52,8moNb %lifpO6]q7RlEfL*h,SD+qbh;#3L_Io_GIs>sMo!h)L5tHDT^'/RpDfmj\-?St)"4AYmP6X6V9s?77[;bG %,^rR=D[P0])oIUXJi*o$Ql?%EkZ!9P.t@*KNeLI>&](>nKQInj9^;:qI'C+*,-AGE\dO(:^l]'sG;NN[+Z?[^'A%3JTlb3N;ir3.Fl#DOTKZ>61RqMW'12RR7?F,ZoQ>*k&=iS*@?]#T>W`?VjW@9q`=]HDmK3FYHODa[^U1pb5Nm_2O2.^bM[s=k#!rKC# %-?qnW!6lF6m-r.4Dpm8!h)Y.8Yd.0Qkre#2iW?!FpH&HmC/`V\^'nr4dg5FQ)m&dr7aNGP@@C?;dKn:m*f1#la9!GRNCJ,4*m"PA %mcak!kXVK1BB]OI2ech[O)tF;pp8NCF94Q/Q;C-r5n#XLF,8XGnSpN\#XA5KCnOY@\QG%SsE#QTU$_53U %\\MogET^g@%ee9Ic&&H,g(=u_FbeIT00#%WNG.'e1.E^His>,IHWVL2 %'o@dO([k"1\1T@3FT"S9UhX2Ad;5N6B\n_0le3,S^Qa3"ZP1JYuri`\2k %mXh)Kj3^kGe8,@JnQQPRWK9GEn7FBCbQa>GAoiH3#;e'iN/)X_>/Jm=8j'3KR1><9X&k#).Ah%W]!O5&VcT%/6miQI"Gr0^(sc`t %i$4fGH4R0=NI2hcn&7PL=Nd,;i3:kEmOI_2is&5='6LEdJ]6-A8Og3Oc2ZB6!@a[TaPM2h;Cdf&YM33En:HT_`SLlJW: %YAl]I8hu7DPa<#%c\K;']jmTsUPgjKQ&J!`0+pib:R7PON0bL&WEVb77DYti+LaF:uoeBP#6O%uF'Ghj3pR?:k?G>d7dOYOjMn%C( %NQ]7mN7P4(m9jVQBs3`BjWM:/MU:+!T<@.nkHclcO4,ZcGt-tN %f`#$g2V,b6sV$%aY7[M%HU1H$Ee7ETmoD?A0dU7^:m3`[Z'E>J_EDOeCXAt,K*i?'XVS`n0(j`KT*Q2%1 %T+49S1Q6Hj!/G,=NRl@)Bh%c0c90nP5R.![H:f3*-p>3*c&+G@d"g%b*p>tZQn9qI%Wpf$8KhW%0?>N%8G(gP&8]o8A,s1(daA0Z %6icI5=l"]]6DB0lULotqi)5pq@n:Bl7tb"-4\[*SgjDOOuS\$4EAq*\$V>,o!j"'J)1Cf_&Z4pHSBije2A#hF#gDf/-m!^G\.-SOhKB)9E0J=X[FY>E2j`B.3 %g#)Pqm%oA1?dDFu?mJ-T.@$[LDhh.@eT0A'Kk`356e.WPEY)Fr6'+g>(?.H]5(uHg\IbdKLXCr7ia]N=/5'_Z(K74F3h(Y"s?WR(`0Tn4H@jG]u@jH[t%tfK[bGQ%@irDXTh(6^/Okc=i[M)+cLpUZ&N+>m9>$a]Z0Tu=P %kWO\:I#o=S`:8sUZmsm_NsqahXTKU^26Ns6e2]QFBMH0/JW>*j"!'DN*?A95B@1Uui5ca#=6-rONnhT;bq1krjF.gbjFB/<)I)l; %'5MQdQ=T#QOp0iu*J_)5):Xj$X[2,Ur%YB@3V59.M1h8.S8R5M;TDK1UKn@\Wdb^k:Y8>^k %AJ"amVs5E;#DA$4'?pXOrN(9p\=PR=P;qRblWNi#ICeR'#EUg(4Bg?!ns&E"C!$o6NbIB;Y'==T %srS6Rgnlm!\J&"nMNt4uY38t*a/R"#?rZlo;`OBVsOXUi!V[c*FV$*LoF@`f6 %(7^SK8Mr&Kd.Fhu33;tlb6Zs(=3bm!Zl$_WcC#!'(Q8!]RoWQ;Z/*/9)_m+#2,J(l#!.G7X)TY^%)E1(^nG0PKaP%/?T>+=,]sJ& %GGPB0Ug%Z&'MC6V,/b\7H8dJ?;pX]t9/GOg&HFr(fW<)#1dP.3Dr-B8.5][i@)!7[.T%8)W:6 %QKCM,Zer,3Sdb-\a8X1IfMV.K`\8L]a%_rY[Ye*LH\a%!8;#Q;_14H*8Jqu2Z#B!F!&K^QTtF46AOX&Y(5Ygsi0*ihO%N=r+rq]j %O+TIMKu&+6029\9dX5c"\=<.g5h$,VYPn$MaEADJEs,L]lDgS]@Pu%?9"/E/H-c1`D7&6@[dW+O?=GRFSlop@l[cqY-=N.p+j$"V%GSe?qgeD1ZB`Ye4i.JAk3$;BJC>8 %/$"`;:Q+=%T?r5I@K:[Y4O5E1l@+r$n-OLUN'Jpm,VjbY/(0^r9un)UpPg1IPoJI:=9,@>cU^KdQPO^1+.ZE:a7]R_:IF_RhGeFo %U($Li/bj>5`G^=R9VD9M<:^`+JK,dpOCWJ#.& %.9>'oWREL;%%W_RJUuJ>[Fi!;19@MP+$$K)DSkoFOIe8`b+R^rn\3.L)+_CndOb'ZpV?U,nR`&Pc0"^BlGJIu<[-[;!.QXH=p0EZ %ZaAQ;MUaW">B4gN.u!n&l34nI#G%nZabJ$@/7lK-E8qa^W(,+"ei^"uLr5'Q2sn"_ISqp%=e,*o3=0fV<6PMW7!l>QZ?n$g]_ODYajY\9S>V'DLYBWu %o@p/FGU"uoG:BnH.6&(qp2ZQ&!dV!C&4j19'!8_WoFNV4K_btO=Ws96HECi(l=M4^/4o<+Mu9F\$6!*pe\o._V-Qa@9t>Dg9.)i+bp:0/h6:k3qT-B7<],MN>mLa:B+]aE*nLEY>_n"cERDj_V>pZte6 %79PSdh'HPP\U$(NF5c26[>m0X[P;^>`s/frq7`qF+R4Qj`[_YCeh?>mB0R4bs:b8Xn:*nZ(RR>XMC>W>=-@p&oCFlq+8>QA@)Ct#LL76%9g^qC]-5Poe?`a(+9QF8s\c9An;?T%ZQ04MaLX6JW=rJ?K+>jsl %3O5pHL%F$":+>qLHdR,H--PFE&g&TUm?lgNGmCa^L_C/An%r9%-m5>=h0Y%qYI%Ua+c311RrZCRPhW;fl:ENrZsYA_.c5UF&8YMc %i19Kgs!EN;)Cl.OXm%PUO:+G^u!G)Veke59XP3N_lG9^(s"CU'PfQ'jZh&Y8>kZE8NkR.\MhQn#0Z[;d.5'35#-2mdh[RbN96gUsEIE]('L*[.B %REF!p$>"j8!O;_1.6)G,]Milt_c1o@AW>NGbD9GoA7O=!BT$MAHf7LT1h#6jGIg;ILlPu`b9BqCeW`36aIhtH(n-#*"ilnQ2OY`j %)!tp;fc'DP!)`@j;HVThY'#*N"eaQ=ZGqcY?#F0/Ao-+R3B5ZeAd>dV;]&_$YM@$'a/dkS^Bc*C`X5WeN$e%+n;]Q1,@FZ,P2e4T %bsFA!RADnSX`j%^Z9mCK1L<#bBQ5Y"--/nRrJBNZC]mT8EGe6R%J;0&=:OK.\VP.l=_/kDm&Tl^DB=bh`.O#6ho?.^kuftih'u56 %E);@E(lH4G_h3MAlLSJ!pDs`,7-;-BL(sEZG.TV3Y/&A?/Z)DHeOD9aR0[f]%Us1n;K-'<$%T5ZhD"0f75T-1c;"d=ZZY3N2^kQ' %SGA0(NkNMBESo9O\%8;O&h/\>*nbK/U'DF"\SH&&aDfnj&s5(P5[.P2<32Meqoe]1-uXL25Y&oEWj(Y5&IpQu0iT'2djPm+eE)>4 %$u[b/G:uFJJp0\*n?9+Gmg8'#WB4;FeB&@OfZ2lL?Iia1#KBirT=:hWkt8SD9Q6E-DH1=LG'dO!PVQ0#9N%UE0rdtHTUc?ElZ"<:3&5a-26'F:3ZnC+o`J^nTD7/a'pAd@h(+3ojc+Hc``F-0T>lbX)1kf:;EMjk\S'ShprOmR(*nrbK=mTZ4 %MM0F/N)FsZ="+@YBk,K])k_sXJ`ee@rUdrL!fZ,OG:n@hWoCY'PA\[G?+hkmPR6=$jYIUu@ %0JWJ':l.M/Hnk:,FK6rAJuRT8KIaOdG1=*o.TFlL\s_/`YKH'_u^-q9tGrUK#FQR;s3S]1rX>X14f%&5^o&g;-:fA's< %"MLXnA-l_q`WfEpHAfo]W.*/sYYq8`n%iOS+h[F/"eGnB!GM5$b5iY+9F(Kh9eFgkg:T\Y;Z'T8AKVo/KjI@C*.B'tD`X!$_T"GEqq %nphR_S&"QL+gt?k3/Hr$::f]Z&Rcn2WkRL\[V>fS=J@`8 %e`:o?A[3<'Qs'Y3'RI$4&CJ-g3$jRA_H3UL(5tGXiXY!VP %^+T=c9lNATBb[YPa4Y#/h0"9@3$[ZR^$]q@<(7d],SFhoH#[nle]BGi+;_g7UMG)kj*rKkCj@U96sp2Q./,K*QGOi^,gm@US3OSo#p;_D54+D.,Ra59uSb51$gdWC'E= %RNoR0:@:8D%jJ=3NS7pKB[94$IEn,!9XLZ#H^%'*G5ICleqge6i/dSL069lG^$m.FLMUhQNrd"-o!Oml^#R;L:kG$E4c=^Q.`l3K %_t=W%(=;Vj::T+Di0r.@Ee\68l8uM"uf06%94"C[aZOB1QkmJ?bQ3UX1sVZaReD/E4WZM#)kQjH[?[]dC;9PlrI]``P;Dl %%`W)c;Kg5FNm4o/;>H[V]8IA&;OTmpdc'T=e[nXUDN!WZOSttWPne./3Kfhq'WL/:ggON?'?;AY/E[^j0UH=q=oD717:I]"Z$ZpNM:K#Dc14="Kc %bsAkBi#GY`cU*rq,)5cu-uT8$,a[gMouh_P$V7lq*hQ5BItbd,bo7["9f4F_J`!_ %,#thTXO8F6Rlq:m*#E1BDIQG+,$f@U](7[fTc0.Yl?kDB8XaR`C6Z'+`'T$gfmJ8]T[E.5!Amb//4NhM;f"=oA@T7>[5H3Q0e@/b %%9-%,#W8qe"q:II^lJcI=D;Y/\c+-:=ea_U1Hg`&*"i>K0k05i5pZrhlb-:"9rb1B,*+DKlTN--%SR\PdN %B$feEK-&u">,q^QmTlF^T+Br8<(b.$s5=(m)Gg,HQm?j-X^"0EH$;[&Q7o(mS]9/?<7G^Xk/K\7*T7"SCbuR>NmsR0.p/@+qgFick^a@pmP)d4W[00Ud\nJp'mu#M %VotJ=nq5O(Y)M[(W0]]hC5Rdu=ZnFK:WcQhgs/Wd@1#<\RpdJp=>P8'IZ=;/2hu1KYLk"1Nuk$Efqm'K6C\fV@Wd4+4Vd.*Qa(o@M/At22]&]ejR[5* %/E(I7UmkPI4'^U<+FLX0'gQ?Qen@U,06B)b/WTm^#Gs'RliXPMhNHT/F/RqM@Z5;1O,.?[mH%[;_>Q!_BD\rUQ$Yc%N %]o3G#qS`GlLV5PO'uRBL/I2,7HL#_mk$G+HaBC*nJ7+'TQ8`T#Q`34]gYYY?Kp7V,iEnB-+A %^GcOuKRgUEYC!\ZqX&0hKBCXa\bI+rXI0:Ph=h1?,a`AC1I;,$dj'3hF6*jO*U6^EC`-g[7-2(/9BW0]BB$)D[91pGH%D99\[Z+X %r2_\R#26Eg&Khq+`$&go=ooS8p!%E5cts&I&aoGSAW_\Q]0^Gh.^G[qe54L[bu+t9IOC[[#+aPPF=rR4d!kDPdJ;o77H!7?(iI+^ %c"1\\`&*il?=lY3l$F?fc8%25kD2[;$<3#%Q#QD?9k4@CdTcL@$N@3b6T_?S-KoZ[qB.feVGd7dbsZbk]a]BU?o`4.c2$-H;CjN?g/rX@e$2Qp;j05(!p%OSkrp,I6' %P\Ib+eSgQ\&lD/4Wua"B3W*Rs)oum'aN^YhK.hrC$?SYqF$L?-jQm]bh/$/l(;O3jqE=d=E9C:`ot&0:+[WbcVrl/k!7Qg)[MT#t %ok%\i$fWE8mECIY%ZmT(f*#p-*MsU'L2^mcc4,bO):gFQl@^.B(8V-Hi2YU$A::mSn&10\%PNB?uZ.m %p'dspBA8o^B$Sms7O;pc"hW>\s"<0r[]48Ca5"oiSPp&S.:/VOd8A/%k0@75qU'`jHkqIVXEZ^VV$kHJ/VYJuiWEt7I$]'^(:"r! %+7R8[bbMe_m(*fKEs56.7Grcp4QBlpr:uNtFDYW"WT_kl_;C@A2f>m;t4ffK%c)A<,$X2cDR!G;'9Hgl2G:hVRT(- %&+qq4OaItSfUi:7]\(bbf2rht\2Q:.!Tlq6jbb0b'L/S`=KEA.V"7uj=7E_nULD?oPhbC"?QAXWk8+pD8QMk'UsTW@J %+O6gU8ki6Bm1)6hr"O4fXH([O?/*7_Q/L9iM&a^%oR-Iqk<]0Q'K$s4gLc-+`"9Ds"A6h#2 %(r^7U5u"O*1;WZqCi?:BJZup^/$PBCI4MCR_`!He?a,>18<0%gI[Ek[B`<)[MrF@W3F$r?7Qq^R?;"R/8ksjCR0rfD^OOo=/0H4T %(A3lXT.*@\T.(=W8=YkeE/$%Lq6#&?]sP2F;V]YQSXN:AFTfuQ$rITVgMENj*L!e%WAme#M>E=DUV$[E3Zi5_T6S:4hgnq]QUB,( %aIlCLUs$(hKhNqa!U"\>XVda?*\#L,(r@4rMA9>Hk-lpo)f]HSWYad-H*;"E[#j.\nE$@%&mqso:Cil'>tCGTa:E:V=Q9;rO8?Bk %Diq=e?0`'La&@.qj$@#%m87P9<"r[''e7'n57+<>cf=%p!fG&4o,mOTfe+=^U/>@IPZ9Fih$afBDJr.05+n8,SA[P.!i6R6cEpkXG'Co.hk(T;T65k;OE0 %D'!n(.A-J/AB"*NMo4%R5&e%=[PnKclo*"#CpOA@^rj*9?h@%3\,;`t.X9`dL[,A5GoH;Ef#(g+`gimocVMu5UZFp`*'Ih`Ariqj %&L1>FQOWHJPFg[a6hcepH=,(kFrQ9n;74IHV'5W_NqI'<2[_2P`Vo()ZmWFN"M1)DBL,mCTjXS)-97op_l'+)RuKk!`'JA"Z%//< %&,Q!m&W?8ojK-Y2'.Trr-Z"7%@4S=2B;4)7_c5rf_3Z+]`` %8`*)uZm>1F\]"3qcZ/Of?-suD)i>lk#`^e<[8f:'@eFYTeL6F'T]\FK_SOU%DJi/$;S+5mK,g9P#nK3#IuA!%js[i.?OTQc7c,9B %qhlUoYJ2<:i+A(JA-X`IbJNj^>S.`j/+SpF^d\qqUbe?\'B(_C-TBXn`AEgR;n]gp/8pFan^T[4lk2'GkYrb2@('-+tPIm].L5Z978W1#qJ`=^_H0H]Qh#s.^?6WtXP>ipi]onES=YE?VDleC8 %6!g+C&AmNler?%/W$"8A29621#sS*ff=>s%q.At_Y;`6)bp=s`!$3P;pINrJ;H,ZO"!UVPT50D@RcZsUO[4]jP!.82-;UA'm?M@M %UG6=LPp9&8fX6C@k8d+l@O5AiT^XuoK(37E)U4sQ&c,l>l^%c=NlkH1;*h;H5=oLBPJV$e9mer]5d+M+3Hc:;_.q2(!d=/_airEf %0%<+A>#8D>TQOl4gcM=W$l,3dSK7RA^*5gFM %cY[G7lXq-rl`^jo%IL8-S#6P7%PqWUit`I+m`hjm"35`fU7:nm0oC"c@PRTfGk`NB*`l,)&dUiNG#)HMo7,fhTDC\R->!YNc,WKK %POqDXT3,i`AI1V]FhkCIotuUmQkV>=`M)[+@+(?LXVe;S.Z>E;Gq5tK3>7iJM(E^8AX)qVd>YFD#]pMOctY2W#bSC!:^K.85W2,& %YcpVh!M)-umd:Vqp+pGKp$BsoL%/@sF)n9rAHX-Z>/_:KfbF%3=()UB#-O+PmqZ;P*n1sr %mNN`e@>W80#1:MX=$+>@>E1J$69X_qD4e_B9'dKY0Sjq`UuA\:67bR1`/NmnO`Z6%7ck_8:]!(P)Ut%kGD:r[&:JhZ-%<[[cT;QV %7DhgQl=?&H(Y3+q=Nhf-W(WUTB1CS/&017^=ZepeiPOU3!c])fn?d:P,LVru#SQE9POP[IjJ(>-C`6Z#>Rs>n&j`13*H!2HG%L2N %0+Cc&MFn+C`&?jDfU\<3^J%[4GM8PFAY[hq))/2UnfZH.p,9FgS>8Rc,8a2*f!9f4coON:RHBK)Ri.OJjmYKc,J8oO>[4;@=jOU,<#t21 %5S'E!<7#L@:5OTHL2]/E=mPZ!K@hVBrHfm]f\O["nVhL7e$nM9]rpC8#2j=$ %`/7@:aA`]u22'q.E7B`A#SHW$Cq%U&FQ3ioE%Do`_damP*HXX'0)lhDNYo?c$aiBe>N&6Z\[]%r(F"oV_s?'7;Ij-4e1l6MSE1(P %M072DpQcl7bZaSnYZDZb0@*/dhW!L5]"92e(r0QfC]@iHo-T,2EG=P^iltXJF++Zh^l:'J!YN9Pl%gfoLS_CNSUU!\$c-0L=eQ+`#bK3925u %ccOBJa[R]F_]ms'RSB#[WA8DpN9Jgm\^E6;(M8Jn/4>(,'1*?r'S^$dNjuO[2>)DmC)%7djkNNn'[qNm@%UKcj3XbBdobGq7DN7N %L&h_!lYE`'6S0WW$jUeWDt:34&nuTsEV&s%Z#W!WrnQU>j0#jY1qNrdhf;f*dA&L5pLal1om/KbUZ_cad!jU0&oaN3gJ[SKbs`1`^Wa@8NtQ'\$k>e(-d/D^d[ZImNjNJSWY %e8G!E&@eCSTim#f>%C"Ri.1(7PUtfq+L-ZhN!tWDYi&G`>F2Mug(oHSW0<2Ch^PJnS4!(-PoC2V+=P+@Eb;%X9'(7il_7Ks"aIa& %h9t@a*Jh7`*lKJ`d9+3DAIS!&/'5d]SgAGF("tW9'e7G*1ZsO,-kFW$kA2-K`h%^.L!;sW`c_MP`ch:j?Qp!WZ4dA0K8p\D<5&e6 %,FjA!F'Ol9mS:SVG9pNX-.R)(0+[s]Yq`GfKP$8TG^a=MC":$V/n`qB,=i;;X0X$dk55etU6G:1`quJ7XT>C(\8@/&GcP08KA4iq %,)1[K+OYd].ItJ[UU.sk%;@f>(pN1j5'Goap?=-`o5RWd(TZJY,H>N-A/5Z=De %,;>BRGCLO#O1IBBC$+E],7Or3,,aAD4"+F:TPjLl]R5g2(!/_4)C+bR2O*A=,gRK?;VcF371_D_TrHh[ %Af8:eLSk[Z:g/1c,'p4%GY,3D %4V/oY56OI4rE)ko\AHf:9s,P3G4np=HJYaVC28!N=bAGdM9J?&!cWbAHk:u!r/4=)f+GZLSg$M7rg2`#UEis0VUla0/"$#5q4(.] %kS,/3a9I=sI-LIoV,5c.^LgQn27q$(puCg.prCqQWZ%fB!,9[,""i#96h:+GQL\N;_/ig6?dVe2;9K=jqN%l_\9ECSX7%39U/9H/ %)?d5!j+h#>%q4Zg[bbQ*YEqP"0X4_\+0oHWVA'oOcUW%P?8:%OHk,m!9]B6.Gugg?,AMb; %8$'9O%o*(793@%?[LADa]1*b'\QY>f%pi#(g;TQs#e-(o.h"B,nmjaO4EL*=C\etDWr;)WL+Aa"8NCf)-X:jDn!(DZ:FK#,I<5(D@Rojt3GP@A>=-_XRMbd1PZ %-1o0C#K:\=QISS&Y.h69V[(13gok@0[J8t0-MQ9M@mrPIDHp^?@]5u9_OF^gRVeuMQ>h;W70,=pU%84&\`)/tQ %ibV#EQB_!S52VYjk7W6LLS&GW-c>kbDQ59(%OlcB8M^Vg/k-B!_@#7\i]p8BZ`s&lpV%`QTDnZ0'3pnmJAlG\EE>)Cl)KB7qfIs+ %qPW7EC;E;>Fue`_Yu3LS->J59378^Tg8+S*&>Rgai;]hG*'[p:e4H&'OW]'Z(+_o6?Q/3gAD,/^ %IR)\e.V;cM,.(Xd?A_jeiL6@]Lp4`.8=,76L81`;`'ZpE.o/M"RKoLclAkMtd2dN)*8*Q@7jIV24aKqBZ1Djh2G=4hkOb.GZ0A0; %`+DQa879m068X_(BR<=4*.eI/&$!#5-=]'E+YMP6MX_pMk>*=LqhH6gYNGK!=$@SJQQr+r2sZ:!\=%MRahL`lp0p4pH$fpimHXW" %`VB[:%Sh+[WimI'SI)7O$ %-2tSOZo]ZRGg1Xao)BC>jF4sq#VUM_3Bt8BnB03+TLeK"_q4st/LDnuU!$ANa;b2iR=:h5*d[%h':`!t8_U-tBu[Bk0$bIGJkm@L %Ej-6k71.IHp;/!Vfsi"uTR.E>I_/,1]B#GVNE>DgrRM%u/h.(2-FZ)-SlY7G&1&8F5pT=uhuli^E_c,G&q%,g?``R+HgpiCIE(;s %`VNnCV6e+7ZnUk>3J*>+jX/]pM7SRrLIfA=7s*2H; %(6&sB-]Km4nq+o>eSkKU2d[$QT]<_@6M@]5?d\C/52N*.0*U73rsZ6f5P\X1I''D+jZ07/JI]TGH55 %LoHg>3Le0#,Dn3u8#I9Cd6kKHf>N#>8qq[lYso>YDJO%p1FLT8JA(TZ'u^2BF"V[\5$lA%19dZFp]q,0mEK-iGDdBb3q(HVGJ+Z%eD<,]>j3QUA:'C=fLM:QpAaEXbf&!L:ae3[i'>uJ,=?m4:72"oIs"Wn*lQ;dK+A#\V8:#!hs'F,L@BL&YS%k$I/jKME''H %'g8k>Y&d&AT#SDbZt9'3Q[u\kI50si`lsto1eT>JY/mt0Ld[n*d&eWXOQbpTXP"ZIfFi;,2VJEI!cdh%M]9of:n\Xl@ku9VZkarC %+6-oFS/uDSlWFf.UPn:TF>a)]m`t=$N]PN=^`+=;Sb=ar!%"'h1N)lP]Wh^bE.E)\!q)kOOhLq,kPRpeCjF,nr9uEhqSCj;+j&bc %`j7W(*f*',3H&W/b7)RSs)_+#%.RrZoL-44p+XFS_5s;6@P?ZM2'$hJ#i>16\S84O2tinU7hOt44i+3,*dgn42%Y":A>(lm`s8jn %Y0$RS;um^V7FfS36\!j("YiAY;bu7d\[F6.m?cPHS!WJ*)CON@1Z_#?LTZE4;e4TM\X>&a;/_cr^<$6/TT=g7>b)k/KWV5/5*k!2/=C %G9KgmghnFi-rd?u:seR-8q*aWO^TEGnb6WrT3%i(]#6tcd-p7'g634Y.`2(%sP7:l<(oQnHtC-o,^[1/-lU\W;mV9L2<:a=UP"CKFm+1,Q"8VLZXOqdlJgce'5ISpaHHVHMa^kamX*UGQ' %a=M\j$ca3nSC&*dk;#/Br3_&.iQ:0&;P,)n3>S)TW_E-?hW_Dhgm[IDF>HnQ%X3;DhPqq]SiusLhMJ1]/@uLsZ>RWM-2C[P--2cPrZUj\gAm%oc %H>nG&UN/@a`Gf69jnK9t$W[YjL6h(_iIS='?W.(ne]fu#!>m7$8(V2%l$+PDQk=*9g@P`nU>YNC7jaVj7%V6D!i1OTljE6I88*#t %=X+m1jhb_G#9[@Nq<5p,jQ'n>QjDA`53_h8(:j?c;)L!p3n7r^gr#btA`Wc=h$4A%M5` %F\Zp<.r"7nYEcA!eYY,)gKaeem9=\%]hH9<-fTGGk*+FC&,3%9Ah7N9!ubV=Xcq%#U7],pHqRBH`4``\gku=PLe)/nCT!dCihJq9 %&l;cN`9"HG4e$7#TjK=Rh'>P.8;pE?D'Bt%c]RE49-*C;&17K_C9G>c^lF&XVK1b@U#jYPWaH4AF1j$U((\FQ,qmU!ld/aI$BrrG %aHQD+^j^+3gHdG\kOjL@%FkT"j,jAH'q),/`m-D7Oo??2$hTp9e<>YX&f!3BPh^nt3uWbRcOIfb[`u,2YEMN+X0-N#'^O3uC4-6@ %FHGb>4/.R7q#3PfPc(9h-MBrO!/Q$'3l,,gXJph9m[&thb.'mSoZJ4<@WpAMcP:RgHN]R)X+DnY#]NRD5Ctq6p3g)V>g73so!Fl. %fHYON>=to!jj&Q:m$Llr>;g_C[XV#r]-+DT^rn!No,;&B"e:(*d*;VX?X98kTf]8gIn,M5JV,>jW#C;r*mD-U>/LABS@l5q789AqEgXb[&N/#8#'I43'c\NpchU`-Vp(R/sqS %iB\`EDMBjL$Hm\P2P`=ZP%77@KtoRFIcelL_l[R]U_1U\bbP%Q=nRR)(krr[*[Jo?&Ze=#e_%90hq %ZBR$36!0$6bM],j$k/hrhLFL[lAR?IeJhoBOf,'1=q['jMJF0b*1R9-8tuNtL.hklLKE'0=0[9f.B3.%0"bWRPtI#J+$u&?(AjB+ %FX\iR# %`\]upDU:&>i2,Zn0aHU[2U&5-0*f0[ppmBU!O%X?Y+%e_ZKqF:m#[[[`7^mQa*"q=52Dt23j?(HDst=r_FXCV+i,JN`<*Z>`IaTD %/IUn)Cr6#.kI%pP[ai?iFH:6M!n)+V@l-#jB4ZHJEN=6J@$lLII#rGp9ge%V2lQ;"W'Og5`VR`L]A;,RgbS0qRV3Q"A`p1<=Hq)t %7Ch#f:XenZIXPhH@J[Rf(,fQ9p&2[@9Z.'[6n;_:0Y0XJLi`9rhAfJE*FB %CgLOtc:Vk=ldD\[PRKYs7AqP3+!MCgo]Ku,n-U%pjja>88;YIiT9F>UTGX%7h?=0EOZI9Jpi`I:=]ft8M:`\V+<&;q'JMeV=kd03=!t%Nb;aT,6HSjd9COC&nqfedn;m?F&eek3j>-T)*m@- %WWc=!T\PJf$n"^ZJ>&#+7F0>^!_b>_-#[43nBO`D'U*p:fV219 %1L4;+8=s9j?B#6_Oq)_OrWUt0X7X.D4=A9X###SGKc9ia*9PLM_78@\7:hlbXMc1BdpcK*b#Vh1?U5'R)CioirFmC()agum:oNd( %,?2?g85UupKW8r!Ld#P]DIUpU5fQ@L^lP#>2DH.=2,HIK@gnKEH-W-j %5%V],#*CkM`H$(R0_VL7o!/Z>S3DZ8koa`[9!40Jd-X7@)&*&F?sdWGci*LBGYp_f6EsBIb3L5q(4EXpnaP$lTHEh&%Q292flN6m %67mr\]5.E>V]C,KgZD=?W!-gQ[*rtPgh*5pk9M91Aoj&19"eN8BUlOc5\)!\_pM!ICP,_`i5?B6W3d'FJ:dgJEe--KgVT(U=nA"H %EgOGaN8&rq\Q1AYjD[LTF]r@dU@'W[Wc&!Hl3S=8Jdu#9j]SqroUM4ac!2D[KGms#nQOcDOO\*Pk__mpU>\K:[nXDBCUHWK/#e"*6$H)_m)jU_"b3kI]=D8pjf25>sgoRg^TolKXFUpg:'j[,;Z=c2Fi8B>R#*1@j6FF$WZ,$]RO. %c016gWL'b.^phQ(Dm!(q-J_EN6Y$>igCC5$)6Y,jd2^=0J'Yt%TO00oIC]W$EVfHdaiG>B]k1/5;,\7P.C@AZDBB5A8nccn4W,4Y0gq(7!%gD+jb?_?L?'?9N-R5mD'd0N2d36DG8^5-2KcR\M!$3eG%ndWQX\ %73;c*]i`80iRtdbnf/b/9==)`_)\7DV)e3f5g83oOB91h<5+tdL_WNL0MrRF7C1,W;n,:ma+Dmel6ldT#fVR$pf8;J#$/FWd13X2 %"ZRZnj"b2S7W"^T_:(;Ln)8/?.\+SN^".Y#`JCn_iAJ&82kh4qAg$;hfLP3a3ZqQppATBdH7B.aXoA5,YW9JXGo>\-o;(4L %(74`">>"@m]:ZSK:[_)Wh'tt.?4FY+E5>k8IkBMucO;K.6-u"d>VubUT*@D=!X*(LrV@'(IL[.:AIXLDk^Z$u"Pe,I3.#m[&).=S %k2?p9CUteg14uci/D)mgL*VB5qi]M]I-]$T4:WQYkem9,nq]DckO8@dn1$53M[q>JEu6s%(EI2]I.&) %B/G7?oD)c8`82+C1cs"k[u76Hd_"\HDr\Z_diCA[5HAR[QXO#?D`7 %&>.LcE2p@C&_m.^@aW46NE+)9Nf^RWUfPje#h:207;5s>m?Zm')bi]((Bc5Nb&$LRr$&)qDE`JM4, %A:jClh)gW\k2l?8GqJeV=1)qI,_XS4PA2:5Vr@G:-e<1?WUS;:\+r<"H[-U`1Hb&\nL[L8%:NN1g=t@)@41 %k*Ei]e/HA^cJ'p77)5B$0a'$k.JM3Q_O#M:Q;Yq_BMu7H[qDkkB2^tA?W,2Ub2nh6=WUp0GOLTf9F/j3Q:8"`!T+b]P=]it*T"`n %L$>BG91!Qap*j@jc;7KfOmr:#k)-m %ndDXTHWkA+7hd$n57G69Guid@"!fKD2,.6aQc;q:n`M6A$[/9/T5M^2V$56[8!`uEXG9H.il9O8Qkdq*KP/\Cm\5j*g+q4<.Ein< %]m)BYl]g;AhN5T6%.YlTT(o20]l0rInbgL4anTH&T+0oG-9`rO.XtT, %1-DZ"`>UP,N;1!UmG+;tf=fHl7)QU8:W\A]eH@deBmAJTt1"Z@\Z:->X7?EgiAu$HTP(+Q;"EfBj %gmmVZBhMlk^RhoVk:kE;X3O9MHEaU;!,71:t4)HQU4[k$3p\ %'aW+3!.tm)%KCp)n(Jc%EMX+n*W[>D?NO6)NA0h6diD*o?JhS5`0$ieV$Q*#GVg9n*Qs^>.2gV&'DG!9-TPZ"&)INV<1kEKY(GI?_dqAodWshWFF.9OS2*n-.X&VhQ_0g9Oo]QPT,K&Ke %ol\nZJ.E@_8Cck"A8JAYekX8-\eLoH<1T=dWlFCP``8>7%g5[m[bc3`='"(25-o"2RN]#q6iC&gT27P6Y %*T_hU*<]^n,(3PSH/g5l[X^Z@`Jh_rDLBRP\d2B(K1ft2Q"!WSa$RNTBhFDf.!R4.)\3hPfTa]Z^Gd^fGM7mr*toN,6m2$K"q$r2@ZX-*e'e;JaKaWRl@_B"%SB5AM@,p8ncZV#(NN)eAHt![i"R9q4kXBe9TVCEI9fi8\%k$c.V$dm %^,6gt,fE02i[O1N_>qHhambAJ/)<@^4ZcXa\RE!&R8WokW!;7s?=Bfsa^bbODu1gh8eL=8^i[MdMI7`(Fb-`lP]u*JoC^_acn">! %i&0$A6ainWIGqE"Y1+m>^Tm&3lQu%iUaE8&7AInF)MTLU2.iT7m&4Ce"qH#U!>pb"g''-l-GlS*8^3HZ^U65jkm3!Z/*S?@#1J:i %?3`knlgs3&00M/?6]N&p>1Nl212I"#;)30rBDOaBL)mC_\7@]:@c^@P5#e'QU>lnQ?H.qp+E@j"-;q3`4o$riHF:9!j>\$3geXCs %Ps!l7&1rZs[6E8iMej^W9*6fe9@o&OfP3>KH@sQ;l^uf"foU"_1b'j$fj+\l-pt.9T;7Jb-4s,%Ph0*n?nE92Hj2R.^iVWJTo96: %X?/jib/>]'pZ,=cD92&p"<,,C^oIlHX*g(h2]u/?c4k@(hCk/A;RMol4\/H&[Tt;@qbH[_I&](n$)?u]b>VEE)`0NnZYuZp%YQhQ %'!0j"H:=;^b&.=a%mkAj/B5\M*gXZT".@"OBh1n60ZXjQ\\]7a46q3QBGq(,,f3+T*B@1G^Kg$$Wb'20H%Tl!UBAnTn'F06#s$E^bD4hmC#"lA88Erauh0[RcU:":_Sl&\BWcS*ZX(`I'=3B"IhejJrlP&FZ]X3:*'OpQ!EU/N^YYgj;rjR'JEe:_a6icaK_gY3?OMC%m?9?qmT %YL&*Hk'XSS%9 %&-/d[Of^n3CuSQeItK_-3_!Oi@ZlJbdbQTp?c_O<08pf,"E`?f)V/qcM5A3=!(4=oosb8sP)cmo.@\BI%VM?kLjt:]V^9H'kAskg$90Q)cc-.:D7$t4Bk:67?Nd-R[,7'e2d&*!ElZ(Z8P.3[`Sa7S;*63X\(VGLA>J^]>[d6;%.c7)O0R=pe,kCs&/,7T4VbL`*U!,RL,>^$PPa5hEo43]YcZ1/H5-(/@p*`YMRKCLN,I5f*t5o7F_/oWiZRd'(eTR=mnBNtp1W!$+a`)QLsqgnHYb?<$?I./4K.Z,d,gf$nlj=?WJP8J8]!`1]jUBEGmn %ErfP]CufsdoKe\fj[.C9k5,/N6#dC7.u>qK]:E!>o">k[V(iQ.EF=u_!2G^'bl-XRbYB=cRa)Zh]pTn"dc%0i>:,t1@&"i\n^6]D %FDjZ@?Mo&Tp%<$>JOS2[;'DYpnf)@`RtTB/qu[@X;D\DDg:bY$K=eBg6sVb@C@b2`UFXp1Ln;eA)`e;n6If"sHg#^fB:I)+<)(mrY\K[,*I %8T5]$`6kO>$njo>gjKW#3SNp^&0_k3t&G]%KNDa)*Ql0^`%%L+h3*E09R.b+F1CPn+kS]i0Pd)C>!K.#B11Jck$Rtll %D+N5-!(^J7%,'Wbklp.gQEn<>U#9nZhi!(/h$*WQl^6\h01:@4s,O8mj$]%S$jiM7pGcF]b %TIoVR8HZj]U`LieGXpO,,0D7!nsQFJ=4ZS!2aH3B6,kW-E^-1EWL3fdU>peW %_")O$2%6bV;U\4'Nq,IZ@%eb,>rH,a>L'\"$D&rkXmTLmVXDVUE-ok'6RSA0O&-oaVkI1d\OpU@)!h/cF8Y %U7u0i5=lQ)=6P$]:ZRr*DD8"gdK6Q2NEqTPZS0BJ;#Gpk?6e'qS9OKb[VaPMHThFW5acSu1a/9\Ed?1N$\*]/m4&4HDHck@S`@(;%7(bh4@ %R)c<'(:na=$D]gAek7i3`f4&5]B-\'6O$.T=\d>=XeWnH8B;9%n2].[8$i9\br5sC@"^gA\R9A,rm)( %^e;(ua@OG0.i:Ag7iI-fN>X?';2!4AgJ5%$7\e>V`^rHBgiIel>+O/g_kJLs($03?Wom1.3s!X+-_oAtY]GkY6.rgpgWWkj],`^\ %c!0I_dqPOt+Woq=5UX+OU?bn:;V63O3[b>lYEU0^7+op`2To: %^/Q2Q]'L-0Y3N=Qb[Y@ce'9tc6J(mP2DAVt$1ZG`eB4Ej7$U.K<"rY!bN:sLJQ"Qbjq/SRS5KbhSE`b;oJDlMb'kl9O9:b-Ac$?& %A/A3&N#5@P.qsfk+$;AL7LCCnA7e(R.%CW!+ioXTd/7^W1BPK[5sWDB?tr&LS[*TpR(=633^8!MXVsRmDlP-&o@a="rP6u9Fh\eHm!M;W\6g/1/[UA^a_[* %*b`Y5.I=Bc,TJ'Y"`R63JO+[D!%>Q\ur"9N_ %H8Kj_+mF+&,VP4jbf!CBReHq8E&E0m?7KU?U`XJ"'o!Uugkh&pL84Fs/nm48TH$;=.nF,:mtP<48Xdo4SR-^dA,\RNYSYc.E\sI_ %Tl\)2d##gmW)+7gSVItin*rr#Z=)V@4]Doe`$V[Z=t>\o/WFN]-;G=>g^pqo;EKfPk'i0$1`h>(dhMhpGBIH1<=!]&4CZ:U.L7*4 %'D'0paPC1^7ir$B__u_:!-Yg3dlOUXA%h)2&o#MKo7FCOYN,P9L?NuAb\B+:"g?m-'HW(pN-)'VI1SYQX$GptZA_+K/NG94#19N& %-3gB@!-h7["XYU!i]XBpPV5[ta%PYRQ_&jA=W_17,TYcW0cI+.QmHX9ah7cCLk4#*Qm8QjK+\J\=Lt.F2S,cV#"0*tGr[I[B=l:i %,o.+I,?o/5)+s,$&>s$VJQ;89X]?PF3Wn2B!TnoVER>#l=:X7,1KH^eE$Ru.ABCHp0(e-UPDf\/CPnf0C)7`J)!Hq?%`CXQE<=qG %E57JK%e\Un:F:aTFiq/E+okZEZcM>?FEAM:==g`u!W"$8K)Zd!"Tr8BX:NNn-Obl.Z7t+uf\uOpZ+0,*mb)eQI+]+\\$eIRmOt5s %q?ec5(in!GIF]i@k!4LCC6GU\lpu#N@bpWbjm<;Qku0R'=h/G:3-DZJ9R[UP5>_;#A\c[W4X6T"R>Yhgond(XmZB)_IGA37Lgim; %CBog.JCF[l?0VOFUXZ6c36qIf[O\2\8dIjm)&ri4MO#1l*56'VjKV#,=g/;"=:/=YZGAFhEICYl2CYj2R-,l&'Y&+L1_M=^fab_O*4*61Gf86=C%(X0P(85N8=K0Q=N]ZlMP6P+E8Ed6,oUcp3U8n,gT97,BnJ %4Z>Tb^4:6."bULB1Al&T-o2#=`r?nef'-?Zk!6r)]11U*6c %IAc1d)U=_i?^[LV5[8@='Y;ME<10(UY_@"863OQ[8d:f.)?^Si/"H7UE:=C.lEU$mYc\p%;@"0g8aS==ml%mJ?g#@,HNN!8e.9TB %,(V=Mql1)+DKE4(XlLW!lC='6m:m25P-tJ[LAF"WOpW4cL>BYY0+*?[JeirJ18eqUIT)?*jRoIL^hDRZUf`ll(el6V-IGekjAHr9 %)@b(%ADBukCuqdqam?>RE/?&X7E.`g %6h,C*b?XZ/.pniLJKdP'Q4Id[&Yt%#gD]%K""kZO%mi3/UToH(X\LpsGO-(C(ln>=+sN^t<\po;AR4]nZkTYQoV0(@:;\mCmV330 %1=24Ck%L,o(kJHsW_J_oEJe+b[[;Gb"'q;(F_/RslW@7.G29<_K6iFB0]>QpW-K?1eU$;C4H%o'b)9"l[?g'I(Y&MWE)` %%MH4mT62$@PJ&,^)d88oh)m0s`Ac %2)X7^bq$*nA3ah=+bIu(oBZS^3pU^=lS-3#KYLT%B7.Zr+-1_^MQB-&6pY0rM5?lS;+tJS_^1ak)F)>(R3lk3K3[.BgP?^MnQj$< %39:R)^"gO[@>p"Y!pchA[5*j8TVkE7#>2IG<0iDTo5W3H9[@Kqr36E7LF+(&uP$i60 %kY`hX"KHZ7NVTkbc.Po@%3$lo#TQsi"(Gde<(obNlQ?7Kd-H50H5b6,5Za/?#"&j$#'A^PMdH^VW9.F"Ohoh(=NpY3$Y0U8LuN7n %<.V+rD5d,fQHf\9+S%6BW5[$rm-DnnF2APp5R4&k#5OQh[c6i?Gu,!)mWr*^)s:^jku!hWo/u4GR>l:WflqUL2To.<7,<&`gjbjc7$!qDW[,q:+q %NKL>dA%U?F+DFQGJOG&"Jg>K0#/s1n8P6c-KJph,FlF[ANk'o5^r@L\'Uo-oG3G#CRU?M>MhT6N*P^u.o\s3DN"S(h:`XTcX:iT] %Tr4DKZj&\J9df4pOl(D!1D&ci;"8S:(V-&.k, %&B"Zi8T5jd&/i-_'EJ<4a`J1Z$W>*)(65=Bp)P"GP*OQ,^4r@L$g9Z[R %68d.3^D:hQ(b`9?^kW$o\Wd7J1,G^K;BqX5;e%g!ff;d'>)OYlEXc8[[E,F%+li,+Z%NNEoN%'l;I_TQbES5a9@5OhAE=\Z_"=X@ %]\6O?q=2!MgJk7@V]%4>WZn*iK*YB*Q>8jGe.GQjW4'ubbB+C:&Npu[V+r$BNN7:(bt/*$NNkLl=BZSd;Narcfb./^\8aBd6fARj %[mJ6c-TMq32Ybh1;3(+V[OIj%cRjcbIqp-Y?f&>P:V#OWr\[LFSDdN@e2_1gKA>0 %oMI0;BSTFp"ZKWRn6VgE^u1i>%Cu".TV9G/J[h#tH-,H)`^(FUE)Ts@8?*3Af5Os69-%g4ZI3;2S9?J"oPLaR;B6=sZ).J^J2afM_,?k\M-9 %^'(4HT3ek_JEURD.l/ikcmTZ*J_,GGZ6SFgZLXY2AfqS$`#"%nQ*6MEWL=/eh9_*aRDEX:4sjc3FeE,RIO2(sP!>^m?=:P8q"=S> %LssdcJ*PO^oeM+Z@kX&,'6Tc,2Z^[X`=t6KJH&8>N0E8!Zm.d-QTRg!RRUmDBd%#BUm7F"pRK@HE'0Gc,Q8: %$Ubd68Y(nb,jMoafXjP<,,^GT$b:6s`dNrI"bZ?'1==bQbg0q7@36@cnU/Q/"#$j`nO`+NdF!-fI>.=eWCsr-H %ApUY;0"SZ&A$)gt=fp&46(_OLF'/p6H]sq$nN3;f=A!X1+WVsEt/hoPi$b%,[kHD82A;cuNPd!l(\p7@t;gLlo %fqZTORRACfmOG)Cd]EC>eb:(t05j(`a;H;sjq&u^6Jj00E?g3Mn>7H",)k*()cSK:iuM%,3%6N+FPc`r_p-4@?eIf.n*[!RXr2rCMCt+_EFq&92*tK4DURkNO95hErW7sDtfiYqH;JKA>Pq1W,:?3**j+6bQSoZNL=e3LD_X7/*H20`< %d*Ues%$c9mNSEVREhI`IWo>GU;FCZhIl3t=LIAD)A;*I)B#YV71!,_UR6k3kVXLqQ$+-(N#]@51VZ=]1bHo& %?Yd>KfEdM3;4l)3<\?kn=/lNsEROZY:iTi+n0C;g0<*&*!V`>-a`(K@";$5NY$23"Krq#M1[@afp+cu#k5*FDJ?>='NHlK9Zb %W(e#DT\G\_P`0aZRnL@4=A,(URM:\lO^'Z1M$g9t,>,`7Jg\@=>&2ma<&5K%q-%)([ %:7uYF<2U!%]co?:;.dIu)t3!"Rh30,&(6[o*#h:7t7FG-TS %XaLLPW>_L2V*(A<6kl2bbX#U_$/gaO/D'"7M2d_WgSA;U[]tFD&^-r/MRo3U2EK`X(aV?!<\[CH=sYEf.qdH'Tfp:G=`maIOd$[+ %,2gTRYZH!J]RNcE&P;?;)ur5NOAOdXm&$B84\LogP(-h=c#)YZW:6/b^>[Cb_sG\)faiSgql9J^ %lNc=F++JcdoPequn`n5D]j@d8pV&uZ_o9gZe!>IGc_m]4jl0t)hqe1PbT?,!Fh(SM9Y:Dc^ZD*e44AYML"RP\s7p#6G*LbZn.^59 %JcLo\J%N>NGFm65\4TP9u`pT,]"e"4;o23B>esW%h=K2Nfc<^67-4`?8%2 %c-ghnJs3mO?L6bY+iG'l*Q&;;Z;"#/mZraSm`kp/,f %27r&XSOmCj6eGJ=-VG3W`"JcM3/1u=(9mK*Hk:K5+Mf#tC/)FQ/:N1Am03Si&4^,I %>+#sf_6*>QGR]#(>'locF0^3I"Y>YWL.BH,B*Q'3akD.q4!,)HC9UQnbPdf;!5i1eH613aC@/o)MLGe)Ru`F3&QO,8Llt,fo#SWl %i6C2+gF<4e$B\su9qBLZ0C+.BML(:S&1gZiG"tpjL]^?.Lf7BInQIjgau0BB,-kVq,$^YdfY`Wg`T$`s-4s#YUTSMR0?,+@0S&8&=JK`E#70lK*6I&JcZ,L(gtH4DJl6DYF-$8+"5 %bWrYS5Z_Q(_^)H:+m9&:L^Ha;5iD84)T+sNVL2Is`9WB_(;je0;OChMYm18q9hIN_N4=C7;#oV5\-#$=m81Y)3cl1do,S&R6,E/G %]7u*+*c1KiO@938cUJtY@=',]^[3I=ZSUSY#2BqIcSGYJ-+=GlLoZYj>iDUEqGNK&&D1/G7eO>(PJjO^po:m#)Vc^&#]Mo>d5pT, %X3(6M9!PBSRWn%JL*kGm;5Wj;n;]71maYmnY["A<(a>TRa?aQajmTCjWuKQTi&s)68Vpis<6H4iU+#+sNuBdE7=q9Y4K!&1QJI`> %7!L9&W14+g9&S"9N!u_-n\J'l+ac"BN;hm@p_Q,no>_>rC#3[b %BFS+00Q:Q,$ca\H5bK]\(.5,P=?5_demdY7`,YDep"kS9@.\l=^7LYR[2ehVJ4bac2510k;lYf"/"!.O)F&j,H4QHFetYP0)PAn= %7>U-HXiu](*KU[r*\;`*ptB>YY`4n,V@ZEnpcZH,rd6Aa#!J_<$Q$"S^`oGbGJ51p&ahSW/7eZ8 %psII%+hnWcnj^'DI)uZD=Id/@I`S!8Gb_hSa4%kj8Fcdm/NH[#0&B_aab(VKf@cj*UX&/':\?OA=;(-`*HD[-UBH),?ODgU61Dh6QmQD7qOojWC/BOF`&0,B9@.M,<)?%il]p6c!H=:lP?$ncG$I6VOOq2m?7IX24%G`a\#5)d9\4=gV%\2poPQuFQ %aMcJIC";3O+fnFl>1_p@mX]tm.&'%LR4@[Y+P:OZ039)$Bc%g'\K9nO&CAA#7E@dba20a;UQSA3mX^E+tU0[(uG@5`@H:>F'FDN")9Uh8t5$7VU3VY&hI)@(6*h,p6:9`9-hI8?!>4N?H,Yl&# %"FRj"QJsI/Ust$aG9Z1KLq_sg)H+J"d4^>X:Q.8M'3/E7L9gFaOPqn>QUg7 %aU0/3SCNN+`1Iu"5_d3Ph;NoWnKH^7-TQ'$T*R^18a]l^h$Uk!e98,=a_6:?8Wk3g+D%"Pp&agc7."9mK&##)m4+3;e:.2C,,<-m9FaF7uC>2kQJU %(B?Xn*[lbEbS8D%VBB0HTRu$_HJ&ud%Y;"hYQZjr]=44d%Gi%!fXef1b7.LAiO]?t@&T1dsE\>qS]W&f>V-4VKjA%]0XB1f6obo)Q?I)Zdl!#J2rQKrPYt@a_H/ %<@+S$;)k*rT:@NrUsL+.K'1N8k.n,C8qIAi4u+i!jH@OH6'ad^q=IMrIdh4*$_7]%fW?RXU7@e\iXgaLN37mTMuq=ZQ<>C=4B!^hF=#$>j84SJ+j[.9PN)O08c4j<7jJSU/NF!/$W'JEb+(QXKC>Ah4:J%s]h36D %4TdH5,BN(eM]Kl=N^PMC$e$5#A.W7F*Pf8Me5Cl7K%Sum*MD=-DWsD?;78Qpi`V5_&l]3pBn3ll?jj"**C7oYfTq4GQI!fGNJT'_ %esOHXJh!:HQq]m/X/pV9gsUhRe)`Pj)oji.)oB*P&m4Nr<9m8E`nLr:%$`dg]E.5a8.CV[Df,[S.4cagbO&dnTaD4D!LDbtLu-*W %3#Dtj$,/UW%Y_`,"FEm0Q?pdsWhLGY/JQdf8ZWI2eO^SRNoPjZ(D^:X;We&9G*'mqit?"[ %!"uGuGB'?!d%[%RT5r/*;q4R&KG,PCchR^qtFa*VCRk]11-K(^D]>/\MFPHF+2O.hECshGY#=A!5#/'k[n>$juXg`URc[gWLAXb!?i?q=NNlQ5l^P9B$Z$m+$$ %5R(O\_E3:GZ0Y])LYbor/pi,TB&J[d=dt1s+qoakfAp[J.B)):SHsEH3[.Zg3egNT]-R&5GUb&&ku#iS_4*nQ63mc&>!'dXaD;67 %Qgc$.bUrHBXCY,np %8.#tp33*X*FX^@IftDRQE1m=P#_e2N%Bl3:K64rA1k,ld%FR%U+iEDPE,8GZ&nMFo?A$loI&\kYHd_;F.GZPGO@@8b%%re`SX=LbB1T7;YPqQ#d*5WhK]4)d" %(]tRJ;]N,\+>BJKL8`'5b4FZ%dlb+QJ$QDE_j[0Lr8j#)-^is9J,hG]K+2(G$W4gk2Q#038<3h:/"e^rmt67AUd3Eq?m;Hd/u<[- %THT=$-PV7:f6]DEj%^:'`uNHDc@$6TA(-@m57kaddDSC,&B(7t&4IRrr^9%l11DJ-lYRgb,cc#5YJ/UZaeW?qVB[K`3nQJH#YrBC %I[-n5c\tnn %#`pDZG?gopnM#4$bP#tm't(!Jm0#G#lJ#^riW6#pZVY@@i65#[e-gOV_ZW72/m*NE!P0XsN8j=6Vs0(K[?3R]qI\NkHe5dp=V]lr %+`;CB8AKsX0UF$n)NHsTP,JjPHZ0J``oq6V0hN,[9VG)FBr=Mg3^TKg-\PA5\C&a8Jm0H'e3rIeW+?I=f!%dW^h(JDZlGmMHPPb2 %"DWjqOV\cgiqcA9@jP)9<4+:[.SN?bga-VE.g^RrC4b8UQbT$en"454H]0\lHXN@1*rB*+r@L+@PXMG.;9l%Cr\` %cNC>C+ik_Oa=nMbL1kif*B<2sW821O4!aJe,O!*96^]Db<7I`0.)[qId:7M]bX"R87F@Oa65iise?l>pGud?$J4:Io*"=@_?J&`T %'*nG5#DBr7d&pD$X$IJliu*qmZk:.Z]AR,c!pn&dNLnQ*I(iAA1_'Rh&Eq]Lg`Rud-VqFA"iM>]B`eoG`K!V=l9(eZV.iVIT%('J %Lti0)8"j.HI4oC[W1!R\rt4_0P+0L%GqE7^&hj-WGi^-G@l$4tKb_DI\5M %`^2UnBs."Y6.P#L7\qgF-UXpN[M=r%TJJ$=X7b6TgTK%4.=DaOpH^lG2_IIufT,(pkE<4T:sj5Llkht07Br@QN:*&8#+t<1H`/_SH0(! %j0EXH)!?-(qDKOhH)8RpjPqZPMhd8CV:&MkL3R@VreY1F,4fHCIC16LaV[X*'qinU34q8C4>ATLc*+%XE$=MZF+-F2\e %3Qa8cb?e!J"Y^XSIl^"mN045MgD*W9&A'D(E([7':_"Fb,[1])Uc^WlT?,nNT(ba>/%YDN&V9f=T?^3(A8,.YJ[fobl$*<0J$\n" %T?ccWachq3r9qZZrd/XpcF8uB7qXIjHoLl]r,hpYZ'mg^*A(<9htG52rV"Y:jQ-*tC4?0IplLt/5ka %LmPPuoP2*$4=^duc10Q31/1aVi`3HL?KDA-YBFu6G.9Rp3LN$5S6#$5f0nr;rLT]b]TLeCYtjt5FhIK\EM)@YD69Gm?GM$ifD4aO %^_)A^^92\Qau;$c;t`'os=XD %qHgV8NQJ[(;16bPLIqs"G/sXBJ*qITO*+D'o?)D][RBQ>T,'Z7k;]d`k840/?`)240M%Q!+[sI@MQ^MFAT+_pjc*D[Cm*.n2BQqi %5Q*j"8WZBW57eCL>JiT4@[OZ&n?sRj5G+:LI9(CUJ5j%TOU,r85`$pYB^skkX]>IrI%E1J?5K%oT!B]cQUmI&lD?a4J2_iQlWW^Kf:QmJ59Q]eq=S+c$>D/ak:r %&UsI*_oj;OEgfAiVN?B6CZb[FLF;eAc)2r">nB\ %OsY6t3hn#i^.Us?\,";@@p+:Fr;6@Up+C91357F:XIc+Cal<$b:Rndn1XLua6.a31tVQT$^lZ0qW.V@t3*--r$k<4o.YtCm[/NJ*&Y1<@@E=9N?EdrA,g4HFs-![91YeaVr_J"NtV!](L!Nn%:65 %mFuQn$]47^F_Jk#!cb:VnMT^Ta](Yie^AK]L8Uf4J4!BMVg/';QC_8(8s!&e7i,t/X7O6C"ULsi2p<7dBk:WU8jge#5$k_uXH9\)<6D7[M %p`4(&+^$5\d7n;.j(HA[Iu@?0p&1*$$9niFlJ).!H@E-sU/-3bVloZ>Q#6HX.m.SnJF;N6IWW4^?-h;3#ST-,:t396%gXKa-Mg+) %[7rUH(q0-rg3%OI&c#c7YhG8d&eRghh_9nscL(S!c'?%EUON'q_qEKiNA&)G/XF'8>d_o:J6nd48C_?r3587F`$Z3An`al8P`GNd %ro.I.G_5MX$"'o+'Cb)9K;86frnELsGYS&)dHY3#>4lS%k$ednaM0;"e&-+%DcKf4h2Y7qn&mMu($%<%T9#a/8+ZEORD_8FIs=Wt %bjI]?p?;DB;uC6IG]n`K^]%U9J,`%5\$Q,5r@a4ls)3Alrr.EGJ,^%<)7b.9p`CTL4ro^an_mr+3dZ1#IX[G-i5JL@'2Z/aNu@HC %YFC+#rScUWIk!8D0C\^c/UtP4:,DIOmI=!7ldbOYqY2bJdu,#md<=X+rRSL;4F<.7@G[ %FP<:h0]#[()f?bnpjmbd+#OfHct\$c8U19Ia"RGhC&[dDB6EX`lts(Q^Jg"nFO7qmLP!;2J@);>a`q%P53GF)_:?C.W9,Q^f7(Q7KKC/1_8c9 %pHFKVs7FdZ@LZK!Y9pDNjd4_Wh/M"-oR#<:Z_&l$mF[aQa32(G\p2'fn'gt*H]7#8m!JW$9",<:Sq%&N7j#OE''oH5m)!QeSNT!$ %+!5oS]C<4Th``&jgsqhADdI[Gq+-X/T9eX9`J=#@D7-%NK#FmTdP7^P>l6\mOW#8C.=^^]%3F#d:i>f`,;KjmW4f^H2A3X5*,%&+CtAf=/N?p[Y$T?2,$;nr0#Zen^@l)16eggJIb]0#_h`LPn[5Qb7K!YuP;HbDkC`[>9Cpo)cg7.jOg'WSE9^]KZmaj)]n!,\;A$^7[`Nb6nSnGd=i>aG,34DYqbp[<:)HCLb!Pjne'5'LiBkI]_j^K?;]^jF)>tSIQ).%Lrn'mD*r_KT)H3 %N)/*9ou/M09tTJm_q":8(Y8`DoI5%b-87g3YCqn"JcIc;MqL4rrUZWto=p>V12aFH:fI;K5/(*2X']&^jQjd"/\:ulDgm$-Whg]- %DZ'H"hVQ],0%\\s-$R&4IT2&[Wcj\12CoR4E?M/CXmM>1@!qFJe;H[Q/56USqnO\lTBr]AG&4O8?`XcFh,]'=J*OK;%Zq]3ZXM"r %=9:fEh[R`o`Tfot9WuA6EfE@P?Nf_RJ:/$60*:iE"mhH$iP&QJY=gZ5qe;$dkl5u,o$p>2Zi5'2[+c31pF-5WI,`glT8]7e,E?:; %QXDu8,oA%JT'qjip9T*0m0DPCLmh_JADp%7*IATlbr;]0F+q<`>k%$FgR#P2Y][5Jd95:$S^lqYIrTLTe2DSlEk,YK.* %]4^;:`b#;Y&EWLI0KN*SL8>VoB#Mi`Q`uY\1)BU2s/'LrS:Tk#3.r1n/K("ThU.&52cK.hTL3BkQsbe!$c(?t_pl-Y,]U@7KWrgq>0(@1XF3q_RQB'8U[kL85O@_J5JXSg[U %r7)=m^a*aoilU0/GR4JZriHZP^;m(F_46Jgdgq`M.)8UhT6ueZ4["j9>=7a3O3R?.H"L+dY6/lh%R86\s+E;F5Y1q0)CK&?/i0T%VE+Tc'e[Z %!g[2kLLCfI^GOFj>!KGA#F5M-XF/&04;2GjV9V.]rH8[EPS;JVEVM(eeSoXRk6b2:cmX`=.C<*>gWZRt&\A4eW %Tssqrp"fUeIed//6pekQp=Qi^2QM0,4`!$?jfM6UCWcaDB`=@)&r`\'AC*"3s/ENC=&L-'cWg93[mcbA#(AZ8?G4cIilF4c@>]fd?aUTndkd(SqX^R8Nbg!d$P6.EkX(f*=op%!N_p,i$^GX_k[] %Um,6X(.QfP*m<[0lM+iYp0gKRGkP2^X,S2f'T''3*)e %\t6oJW>mluenKkfFTm,tj*eBt]0-,moVXK&#=?Am%.?CsML%X>S^A[MH>rdcLhINN$d5ZF3ST%eYM'.Go_+F.$f^F2;]=*Z^"d#e %Q$IuGRIs-W2S7:=R9%f8t..>h9-iE(SF*;f=>b%t3RBQ50q"9^BK`IH-#?)dghHd-C/_qYW,;8pP'kMV9`91@J*(-8,n_fKAfH7@&qB4ApAAOK6rj;h2"HpWNBSnbUMs@.AP_;C6q*rV$QS5FL[J %EKM,Gr-nHNEV/2MjP.#iou/!gDg"$fG5:-,Z,WXO(O1;%`auC/RQlN*(\RnC3pt.Se_*a=-]>Gjc!&]WX&7@'5q`_oY,kaj[TLg$?WB*59#;nS+;Kjn[R5)EEKJLd>UBg%[27cD5*2p#UJ4`uiO_/66n9o0Z`iH_JMa)e_p0d?ibIrDlJRgrH]oQai?J";nfdq;!hs?)+[bUb[lVg/3;3H"<^?J;o&jJ?AWZQVrpXd+- %]e*hRAW`X6Uj$HpTo`$6<-+UTd3c%jqJ#EUpP.@l]<`UYb#@qn]mmS?\&klsDfY42Rk-G-hpHa/MpC_e3!=IB')N/ph7iQ]LPMr7 %Sfo<*),%pGEsEN\]P6M$r1FMjoc@7j'E^5JI#n!]?iCItn]c5m-^^eT8'IFT+2u13TAO*jU$KP]J=ZE0EYk:kU@.VYg%\\lTgVJh %Y'G!!3koU([7WE3DM?mG^1m`PG4^m>Dm1k/!PGls_#2QcM=pg("om[G:+AikGi=rMb0@ePF>WVBmX#J?r3D^Om:>2c+7s!o+mk';fpV.1mBFj-JqHk875.<%/E`_M&#YdV$oX:H %.r02j]%@`iQLl?gVrUdMAObOPbWY#/@QmtgpG`m2:L]Z.oB3BhG0;I14TA%qbEpnj>jj:uj1S;>:G68F9?h?YAa1Zj16'7Y\19[()dVYI7Hpd?S]\p6@n9BhW3u2=8fd9d6Jp?_YCa-Kf\Eo>n7".'b>),-aIRcr"K\_e3DuZ4m\-$K>#l)Q0%-sf-ebP0/9>.0?if'06aM;`4AYqd0/uO$?JC6qFF4` %&S=#$d`.ef29(6;UljbnR-2D6BPI).hfZ%PbBpBfQ?-D\MZ22ME\kbZ*NLp"DNd^M6+gp;SH!+;o5K$r<%:ecMYkk]tClJQLpk&ucO4'#j#h'SJ%Jp9)*)(s@ZpEC>>Y^'2UGj%*$E!L$;NNFnt`s:r'$]f6U&'jX! %/u2O8j[IcKbdiAG&)D(=k&ucO4'#j#h'SJ%Jp>atfa^3hQj$`qjCqN'I:HYaf'^F/RlRa>9F$P.kGS2RmYRWi:VdJ:5oOXTk5%J+ %^EGo@cRfspAr;p:em`+=VAT`<](Q-h*AhQCRM%\+U0 %=idnmnT)Zb9W["0&krpURP:K[ft4KGa!%k-m(3._U.u'L*kf`%OHVc39OD[OfOeA8`F\1alU7,p(L@r %ZPuf6SR.)/mWph-+k3oK5<&63ad@7KJ='uq2o;XL\i*uOf7juW^#-#aj5l-(5t51h"Cs31$JYg8J%4N,!FUK;,F,a$;,@ %,",Groac\]TOmXf(Jp\*jYNI:RLGPF*#2%7<[h%BtpB!cJ55trHI6eud %nE9U#86Jm:&(0=]&!rNO'E@I?mnV`0^Oh-8ol"L)ko')/%8;PrCdLqd3bpB@">V %H$Fds:\-,J&Y8aNo2eK[7rB79IpZ+.k9iehN0WQj6dk3`/ru\AaF#lBDK3*iXB0=PGA#8%-[5.,s'FfZI`O`:cSJn0*%W#@kT7r- %#ZUH)0:1qfA\7QY@_Fa+T)gY(Ha(7$gjVM(JCpF$Y^^h>\N4!.V=/M*I-b>cpHN"9;ee&o+R5eUPa!Y_+G@Dt`[6'qjRKjbl^Bg) %O;k![eY"sVI/K9@3Wrnu:.!,#.V*<]d#3FD=`?i]&/pK;#@N0eLoFg3RaT[HGF(m@c*mTQZfU`_R/'Xtc1cV4\*^L7de0h>O@89Q-A_15+nlau!+-fN %R7>eTm+pTS]SQC[jh'^`jUaJCqpsq?98V'gq_8u2[d-Z/5NMguN\fq*(u47,Hb=mPm41=8M94kO,2T,R:mZD)/qpHb[6^O.[Y_EV %I)rqPco!NsS^4p!cP'SSGBL2cH6IW/Z[:!]8%r)kp#5(#Mlr/5[AH %(L2p'\/EW`ElWK"XPD;L9bD<.1n-#sQiiJ+ %RN,n3!7AAAhc@Or6u`PSk[,*pok`"@ZKBklr=j-,VXHSj#/7D*)&]rZUR,5<.)V#l%Wo\\m$PGnU:`M.bH7g"Z"d2F1oB(W.CT$^ %Q1&C"-cu6>)KC=A3Zmsdnk!=/Ij/5OU<>[HU=,6=gUJ>1,V+es8A9]o(P$#L2hCCYj4@P,*.u]\45K9/mia>EMm9tG?Eir>0=NOQ %e=oYiciil.$$*bcVCjAf@)p-SbpN[iTI?i>&[;LnHtrlK0:Z"UDJ?_.&31:[(8)]Nr&/,Ck['A %IB21BjYrkip6^- %Xi"64rG]rVH#o.84-jBhE0G&o7D)dOgdBZ)CJp@I8=OZl:%#Z*rM)u*c&-X-S,09ZLP;$K_RBMJY*P^:I*Do=Em/#3q@-TQRWKXh %B9A]HRcNRjeX0IJW?iJ3DOMiGcpG<781o]DUYLF=GeQ#U5Z*CA^/X5)JgNN/VKe[o+IZtCPhYq;e[A`NIj3#(?Aoc3jc\ConoDck %9J"u[)GLc]Q8!Y@117Q4?pg]"plKF(aiORJ2;Nei_3c@_:WE-rQJtj.7?>IS!t\0KGY0pPF*5K]jPq@QCpK@5loKX.pZ9dR0=S+) %eB1KlBW9Wf,eSmf7n1O[2\$A&aF:A!r[2?[Bl>:T_!Nb1*H_l"/P*\7r@q+CDf4]b\Z_X!@ %ESfiiT(eeCk@jdD%*VjiC:`s)K,GTn*&Pl][4.k.#`0,WIPUSfX&CisD\hXY]\%>^/N5P*cLQ#AH;#mFj;L`)Dj2r6X2,`Na]%PU %(d&ct->)f3f[cY?Xs!d"J,`uI%/]u'l"qas:43B!0=[2H0nt^$Dt?+n[kk)ZcUL*1o8CjF%l,%tnoF&:9Wd(1&krpUPUs/]g'sY= %0X)?4^!7/k4"tiJH9*43NO8o^S3k+GZ8tIH;`A64P(8S;QX#dq=,%.R@RF3N"m.]No#;@s[k>YLRS>?ZM"G.p,=/'i;SG?6\#!GJ %oRC1VVS=CqN07Z,0i_dGSOlleY!U_1]mWE9b*RdYX'E8\aocAlc[th#JVfJ)Zp"!hPGRE>0/$,X4^73tHWph/_:K%oX"#\aI/)Xh %n8e?sCgC-AMHOGgMKjQa4?nJhE_s%1+qN^=$?s$hHaAK?lh/qo>Me]Bm4Aha5HUb)>JGgN;lk&m<.r[S+&leoZ(;XFSGW0)r8lr6 %C4:O3-*(?Yb[3#8o@$VTm,C/-$4=%DjH"15]6JJl1Jm!QI/qIJrV6?5aX*5c5?n)Rh_;[W?EBI5VjYNjj^LAWr6OA!RU3Xq+6@4] %c-ib,O.]t:pWNKGgp5\bnsmi,mWe2EJ,JiK %AI9_PrivateDataEnd ctsim-6.0.2/doc/maphhc.pl0000744000175000017500000000152210667176710014226 0ustar kevinkevin#!/usr/bin/perl -Tw my $mapfile = "../src/ctsim-map.h"; my $hhcfile = "ctsim.hhc"; my $newhhc = "ctsim-new.hhc"; my %map; open (MAP, $mapfile) || print "Unable to open map file $mapfile"; while () { m|^\W*#define\W+IDH_(\w+)\W+(\w+)|; $map{$1} = $2 if ($1 && $2); } close (MAP); open(HHC,$hhcfile) || print "Unable to open existing hhc file $hhcfile"; open(NEWHHC,"> $newhhc") || print "Unable to open new hhc file $newhhc"; while () { $line=$_; if ($line =~ m|(.*)\#IDH_([A-Za-z_]+)(.*)|) { my $varname=$2; print NEWHHC $1 . $3 . "\n"; if ($map{$2}) { print NEWHHC "\n"; } else { print "Warning: unable to find IDH_$varname in $mapfile"; } } else { print NEWHHC $line; } } close(HHC); close(NEWHHC); unlink($hhcfile); rename($newhhc,$hhcfile); exit(0); ctsim-6.0.2/doc/equiangular.ai0000644000175000017500000014700410667176710015266 0ustar kevinkevin%PDF-1.4 %âãÏÓ 1 0 obj << /Type /Catalog /Pages 2 0 R >> endobj 2 0 obj << /Type /Pages /Kids [ 3 0 R ] /Count 1 >> endobj 3 0 obj << /Type /Page /MediaBox [ 206.5 295.5 406.5 495.5 ] /Parent 2 0 R /Rotate 0 /PieceInfo << /Illustrator 6 0 R >> /LastModified (D:20010301000158-06'00') /ArtBox [ -7.38281 48.38428 705.47852 632.34082 ] /Group 107 0 R /Thumb 110 0 R /Contents 112 0 R /Resources << /ExtGState << /R1 4 0 R /R3 30 0 R >> /XObject << /Fm4 27 0 R /Fm8 43 0 R /Fm11 59 0 R /Fm15 75 0 R /Fm18 87 0 R /Fm22 103 0 R >> /Font << /F1 47 0 R /F2 49 0 R >> /ProcSet [ /PDF /Text ] >> >> endobj 4 0 obj << /SA false /OP false /op false /AIS false /ca 1 /CA 1 /BM /Normal /HT /Default >> endobj 5 0 obj << /CreationDate (D:20010301000158-06'00') /Creator (Adobe Illustrator 9.0) /Producer (Adobe PDF library 4.800) /Title (equiangular.ai) >> endobj 6 0 obj << /Private 7 0 R /LastModified (D:20010301000158-06'00') >> endobj 7 0 obj << /CreatorVersion 9 /ContainerVersion 9 /RoundtripVersion 9 /Options 8 0 R /AIMetaData 9 0 R /AIPrivateData1 10 0 R /AIPrivateData2 11 0 R /AIPrivateData3 13 0 R /NumBlock 3 >> endobj 8 0 obj << /OptionSet 1 >> endobj 9 0 obj << /Length 1423 >> stream %!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 9.0 %%AI8_CreatorVersion: 9.0 %%For: (Kevin Rosenberg) ( ) %%Title: (C:\\ctsim\\doc\\equiangular.eps) %%CreationDate: 3/1/2001 12:01 AM %%BoundingBox: -8 48 706 633 %%HiResBoundingBox: -7.3828 48.3843 705.4785 632.3408 %%DocumentProcessColors: Cyan Magenta Yellow Black %%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0 %%+ procset AGM_Gradient 1.0 0 %%+ procset Adobe_ColorImage_AI6 1.3 0 %%+ procset Adobe_Illustrator_AI5 1.3 0 %%+ procset Adobe_pattern_AI5 1.0 0 %%+ procset Adobe_cshow 2.0 8 %%+ procset Adobe_shading_AI8 1.0 0 %AI5_FileFormat 5.0 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) %%+ Options: 1 16 0 1 0 1 0 0 0 0 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 %%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 () %AI3_TemplateBox: 306.5 395.5 306.5 395.5 %AI3_TileBox: 219 -283 805 483 %AI3_DocumentPreview: None %AI5_ArtSize: 200 200 %AI5_RulerUnits: 2 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI9_OpenToView: -197.5 899.5 1 1345 943 26 0 1 11 68 1 0 1 1 1 0 %AI5_OpenViewLayers: 7 %%PageOrigin:219 -283 %%AI3_PaperRect:-13 779 599 -13 %%AI3_Margin:13 -13 -13 13 %AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 0 %%EndComments endstream endobj 10 0 obj << /Length 6721 >> stream %%BoundingBox: -8 48 706 633 %%HiResBoundingBox: -7.3828 48.3843 705.4785 632.3408 %AI7_Thumbnail: 128 108 8 %%BeginData: 6254 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD59FFA8FD7CFF7DA8FF2752FD0CFF7DFD6CFFA87DFFFFFF7DA8FD %0AFF7D7D7DA8FD69FFA8A8A8FD11FF527D52FD68FFA8FD0BFFA8FD08FFA8 %A8FD66FFA8A8A8FD0CFFA8A8FD08FFA852A8FD63FFA8A8FD18FF7D7DFD62 %FFA87DFD1BFFA87DFD3BFFFD0AA8FD1AFFA8A8FD1CFF7D7DA8A8FD34FFA8 %7DA87DA8A8FD0AFFA87DA87DA8A8FD12FFA87DFD17FFA8FD06FFA87D7D7D %FD31FFA87DA8FD16FF7DA8A8FD0DFFA8A8A8FD20FF7DA8FD2FFFA87DA8FD %1CFF7DA8A8FD09FF7DA8FD1CFF7DFD07FF7DFD2CFFA8A8FD22FFA8FD06FF %A8A8FD1FFF7DFD06FF7DFD2AFFA87DFD25FFA8A8A8FFA8A8FD28FFA8FFA8 %A8FD25FFA8A8FD29FFA87DFD2AFF7D7DA852FD24FF7DA8FD28FFA8A8A8FF %7DFD24FFA8FD04FF52A87DFD24FFA8FD29FFA8FD05FFA8A8FD22FFA8FD05 %FF52A8A8FD21FFA8A8FD28FFA8A8FD08FFA8A8FD26FF7D52A8FD20FFA8FD %28FFA8A8FD0BFFA8A8FD21FFA8FD04FFA8A8FD1FFFA8A8FD26FFA87DFD0E %FFA8A8FD20FFA8FD04FF52A87DFD1DFFA8FD26FFA8A8FD12FFA8FD1FFFA8 %FD04FFA8A8A8FD1CFFA8FD26FF7DFD15FFA8FD23FFA87D7DFD1BFFA8FD25 %FFA8A8FD17FFA8FD1FFFA8FFFFFF7D7D7DFD19FFA8A8FD23FF7DA8FD19FF %A8A8FD1EFFA8FD1FFFA8FD23FFA8FD1CFFA8FD1EFFA8FFFFFF7DA87DA8FD %17FFA8FD21FFA8A8A8FD1EFFA8FD22FF7DA87DFD16FFA8FD21FF7DFD22FF %A8FD1DFFA8FFFFA87DA8A87DFD14FFA8FD1FFFA8A8A8FD23FFA8FD1DFFA8 %FFFFFFA87DA8FFA8FD32FFA8FD27FFA8FD1DFFA8FD19FFA8FD1DFFA87DFF %FFA87DA87DA8A8FD20FFA8A8FD20FFA87D7D7DFD12FFA8FD1BFFA8A87DA8 %A8A8FD05FFA8A8A87DA8FD1DFFA8FD1DFFA8FFFFFF7DFD13FF7DFD1AFFA8 %7DA8A8FD0DFFA8A87DFD1BFFA8A8FD1CFF7DFFFFFF527D7DFD10FFA8FD1A %FFA87DFD13FFA8FD1BFFA8FD20FF7D7DFD11FFA8FD18FF7DA8A8FD15FFA8 %A8A8FD18FFA8A8FD20FFA87D7D7DFD0EFFA8FD16FFA87DA8FD19FFA8A8FD %18FFA8FD1CFFA8FD06FFA8FD0DFF7DFD15FFFD04A8FD1CFFA8FD17FF7DFD %1CFFA8FD04FF7DA87DFD0DFFA8FD14FFA8FD0DFFA8FD087DFD0BFFA8FD17 %FFA8FD1BFFA8FD04FFA8FD0FFFA8FD11FFA8A8A8FFFFA8FD0AFF7D7DFD08 %A852A8FD09FFA8A8FD16FFA8FD20FF7DA852A8FD0BFFA8FD11FF7DA8FFFF %FFA8FD0AFF52FD0BA87DA8FD09FFA8FD16FFA8FD21FFA8A87DA8A8FD09FF %A8FD0FFFA87DFD04FFA8A8FD09FF52A87DA8A8A87DA8A8A87DA8A8A87D7D %FD09FFA8FD16FFA8FD1BFFA8FD05FFA8A8FD0BFFA8FD0DFFA8A8FD06FFA8 %FD09FF7DFD0FA87DA8FD08FFA8FD16FFA8FD1BFFA8FD05FF7DA8A8FD09FF %A8FD0DFF7DFD07FFA8FD09FF7D7DA8A8A87D27FD05A852527DA8A8A852FD %09FF7DFD15FF7DFD1BFFA8FD05FF7DFF7DFFA8FD07FFA8FD0BFFA8A8FD08 %FFA8FD09FF7DFD04A8275252FD04A8272752FD04A87DFD08FFA8A8FD14FF %A8FD21FFA87D7DA8FD08FF7DFD09FF7DA8FD0AFFA8FD08FFA87DA87DA852 %272752A8A87D7D272727A8A8A87D7DFD09FFA8FD14FFA8FD1BFF7DFD11FF %A8FD07FFA8A8FD06FFA8FD04FFA8FD09FF7DFD04A87D275227A8A8A85252 %2727FD04A87DA8FD08FFA8FD15FFA8FD1AFFA8FD11FF7DFD05FFA8A8FFFF %A8A87DA87DA852A8FFFFFFA8FD09FF7DFD04A852272752A8A8A87D272727 %FD05A852FD08FFA8A8FD14FFA8FD1AFFA8FD11FFA8FFFFFFA87DA87DA8FF %7DFF52FFA8FFA8FD04FFA8FD08FFA87DFD04A87D275227A8A8A87D272752 %FD06A8FD09FFA8FD14FF7DFD2CFF7DFFA8A8A8FD04FFA87D7D527DA87D52 %A8FFFFFFA8FD08FF7DA87DA8A8A87D2727527DA8A8A8272727A87DA8A8A8 %52FD09FF7DFD14FFA8FD1AFFA8FD11FFA8A8FF7DFD05FFA8FD0AFFA8FD09 %FFFD07A852527DFD04A87D277DFD05A87DFD09FFA8FD14FFA8FD1AFFA8FD %11FF7DFF52277DA87DA852A8A8FD09FF7DFD09FF7DFD15A87DA8FD08FF7D %FD14FFA8FD1AFFA8FD11FFA8FFFF7DFD07FFA8A87DA8A8A87DA8A87D7DFD %04A8FD04FFFD17A87DFD08FFA8FD14FFA8FD2CFF7DFD13FF7DFD04FFA87D %A87DA8527D7D7D527D7D7D527D277D277DA8A87DA8A8A87DA87DA8FD08FF %7DFD14FFA8FD1AFFA8FD11FFA8FD13FFA8FD04FFA8A8FFFFFFFD0AA8277D %27FD0A7DFD05A8FD04FFA8FD14FFA8FD1BFFA8FD10FF7DFD13FFA8A8FFFF %A852A8FFFFFF7DFD15A852FD05FFA8A87DA852A87DA87DA87DA87DA87DA8 %7DFD08FFA8FD1BFFA8FD10FFA8FD14FFA8FFFFFF7DFD05FF7DFD04A87DFD %0AA87D7DA8A8A87DFD09FFA8FD0CFF7DA8A8A87DA8A8A87DA8A8A87DFD04 %A8FD12FFA87DFD10FF7DFD14FFA8FFFF7DA8FD05FF7D7DA8A852277DA8A8 %7DA8A8A87DA8A82727A8A8A87DFD09FFA8FD14FFA8FD08FF7DA87DA87DA8 %7DA87DA87DA87DA87D2752FF5252FD10FFA8FD14FFA8FFA8A8FD06FF7DA8 %A8A87D7DFD0AA87D7DA8A87DFD09FFA8FD0BFF7DFD09FFA8FD17FF52A8FD %13FF7DFD14FFA8A8FFA8FD06FFA87DFD12A87DFD09FFA8FD0AFF7DFD09FF %7DFD2DFFA8FD15FFA8FD09FF7DFD12A87DFD09FFA8FD0AFF7DA8FD08FFA8 %FD2DFFA8A8FD14FF7DFD09FFA87D7DA8A8A87DA8A8A87DA8A8A87DA8A8A8 %52FD09FF7DFD15FF7DFD2EFFA8FD15FFA8FD09FF7DFD0FA852FD0AFFA8FD %15FFA8FD2EFFA8FD15FFA8A8FD09FF52FD0DA852A8FD09FFA8FD15FFA8A8 %FD2EFFA8FD16FFA8FD0AFF7D7DFD0AA852A8FD0AFFA8FD15FFA8FD30FF7D %FD15FFA8A8FD0AFF7D7D7DA87DA8A8A87D7D52FD0BFFA8FD16FFA8FD30FF %A8FD16FFA8FD0CFFA8FD057DA8FD0CFFA8FD17FFA8FD30FFA8FD17FFA8A8 %FD1CFF7DFD17FF7DFD32FFA8FD17FFA8FD1BFFA8FD18FFA8FD32FFA8FD18 %FFA8A8FD17FFA8A8FD18FFA8A8FD33FFA8FD19FFA8A8FD14FFA8A8FD19FF %A8FD34FF7DFD1BFF7DA8FD10FF7DA8FD1AFFA8FD36FFA8FD1CFFA87DA8FD %0AFF7DA8A8FD1CFFA8FD36FFA8FD1EFFA8A87DA87DA87DA87DA8A8FD1EFF %A8A8FD37FFA8FD46FFA8FD38FFA8A8FD44FF7DFD3AFFA8FD43FFA8FD3CFF %7DFD41FFA8A8FD3DFFA8FD40FFA8FD3EFFA8A8FD3EFFA8FD41FFA8FD3CFF %A8FD42FFA8A8FD3AFFA8A8FD44FFA8FD38FFA8FD47FFA8FD36FFA8A8FD48 %FFA8FD34FFA8FD4BFF7DFD31FFA8A8FD4DFFA8FD2FFFA8FD50FFA8A8FD2C %FF7DFD53FFA8A8FD28FFA8A8FD56FF7DA8FD24FF7DA8FD5AFFA8A8FD1FFF %A8A8A8FD5EFF7DA8A8FD19FFA8A87DFD64FF7DA8A8FD13FFA8A87DA8FD69 %FFA8A87DA87DA87DFD05FF7DA87DA87DA87DFD74FFFD05A8FDFCFFFDFCFF %FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDEFFFFF %%EndData endstream endobj 11 0 obj << /Filter [ /FlateDecode ] /Length 12 0 R >> stream H‰ìWmoä¸ þ ÿÁý°@‚6ñØÎ¼¢_&Éd;½Ë ’ɵ{›"ÐØÊŒ°¶åµådg}R²Ç³H»â€EÃŒ-Q$ER$EøÓÍÝÑ4ÑKy÷¼ý½ÎJ)Œ.'£½yšÖ•) up{è{D4á/²¬”Î'ÍÒñü$ŸUîÝêJæKY®½ïVʤëg“‡‡ØT*{xHtüð ¿ÖJä«:å±,ªÃVˆ>,‘øa¯xA8ÁszI$§ºÎ•¯Nõ·‰w4òNFÞ°7ðQD«S·²Ú%G£èð>‰@Ü?>Žú࣓ވØÎu\g277¥ŽeUéT—ÕÄ;ۈܻ+¬ï“LSýâ¦"þÒå¹Ð¹íå¦T"9ºÕ™ÈiùÏÞÝ&[êÔŽ*“ÕÑ܈TÅ]æ+)™ü"`¶®K(?ñ QIcOó1•Ï2 §ó¾‡^Ï Û¥1›B¯JQ¬7Ž®ç?Ð}¼|üXŠDaC^UûmžÁa3]ô:]'Â܆oÂYæ­V¯ÅÕçbyôÚrµ 1je@Þã…J%"7Æë[dd-¸¯`NŸÆŒ>²QwÒH‚‹YÛ§Ýx–áàó­\)6‘ü¯C›<+úNÂ.@ØÄCh{äªsù$êÔØ=½-†æÐ³f]„©˜k€÷³XµˆŽü[ 77çÄZ®AÏ;é{! p~desx{òÍBfEŠÄä´Šzƒã¾ûôÜŽRø–ÉÂ`ì…£ÈõúHÁÈ­oó EC¾L¼+Kw.ÓÒÜ©ïð?RŸ~}[§²¼Ï%Jȸ±ué¥Nd:á€uì©àCêXÅOG±åJJ˜´6\ÇFí.Wuö³ØHJþÀmr]È|¡a5‚ñ¦ŽÆc<áí£¨„ö<‚ÀŒÜ¹4RI hDé8nQ×¥Z©|ÒxɆJôx# YÞÊØLŽT¬áØëA´—0|X¼þ,@½ÎÂRTÒ‚¯Tn±ÉÒâp ª¢Rˆ ?«•,Ý ë~¬J¤õS*¿ùˆ_³Öu%òÄ¿‹E©sU«”e§òÉø×3/8é[Ù„€<#!֦ݒI›‰]ZÖÀ_æ‰¨Ö¾ÌøeTšH”ÈL”¸žýê‡M-³–~¢ÑŽT•ò‚þØÿ„è)aqåùU!bxapâÇuYÊ<Þ`2ð—¥þ‚†Fà"#¿¡÷c]lœÌ2y’™ÊUöaèÃí*i®¿Þk™û%ß`LüLĤÜŠ³ñ D8ëÊ7/ºªá4¥K߬K)Û™ˆk#ý¬Fi|Æ%1"ž¥Å2Qi* å³å€B™¨â:eF#ZüZ‹<4\‹ôÉîᕌCÊaQS»ã´sšSëßiký” ð§3ÿÌ©àϘݟ13¤Ì:ì³–on©æv‹y‡fÞÒÌÌÚ¿â !æÚ2\[†ëõÕéºåËpª"Ýø×UJ1qßto™ï;Ì÷-×'»¸XëÑ"ÑäµÊvcÑØ#:ÜÂn-Z!‚Ý!¤7î–]ZérË Q²åS–JY*ÕÙBµ4îÈí†Ú’ëF'ÝaÐŽ¤åKÔ³"„uFmYk»S½£OÝòlì²aglôþÞbf/²þß.îÎ}=r}™å±¦:4ñ»]ì-íggÕß!µ×ôâ×}–ŠÖÈ´•n±)äïÐÂvÎmýÙ?FB&ò öþôŸŒ¸>Rô~‹S‘QØäêÅCÀ»~^gKú(\åLAÕ1ËK(JT¯(…²‚èó„¤ÕñÚ¬¡ÑêÊÜ]<æ²JôT3UõúÚK¼b4%Tñ¸nZù(‰$’ïï²Ô¶"≺JOªvx?á ¥—âºP)Šþ ­ kív¥:ÎÛ¤:çåL5cº7ˆu“,[ÑǪ,ùæ’u’Ì—¯ÊÚn»÷Ñ~:4ìœÔ±ÙV0:mÜ]´íñ·{±¹‰.ÛPÁ‡S'¸ÜGMgº ±æ§3w–êï2_ÉÆ8'¡µJäÕŽQv¾µÉÎÑ3A}w Í¥kŠîŒã£-ÍþÎ5À´9Swæ-½Ü¡æY¦’îtKÊB¶IÏö5^ Â)¦!Km&ÌÛL–» ÄÖ0žn-ãi×´-yÑ5n—Eî2ØiǾ-õÖ,×ú®-í1üQ½îBe²:š‘ªØëN¸ãî"üÒßÜqÛ¡Â Šªá×+Ø?ðNó.ÅG—qïà4…çþâýc­ŒônéáþÞ«hèz§pßçý½^óÿW<ß_ð&„ 1ܨ';ÐïÀÀÁÐÁˆaL‰ãÞÔÁ)Ãàœa¸ `%ì_ˆ'A0 £` ˜N÷÷‚Óà,8Ì‚ V3Ã0œ„ýp£pNÃÓð,<gáÔ@E'Q?DÃh£³_6=rG¾ ÐØ‹äbì/2°Ùl#—ìc‚/2`ÉßÏSUÝÎpdm¤ÉAS†W;;¬é®®~ß§V—ÝæŠcrs•-~òÎ{|ôÉÏ~ñ«ß|ñ»¯lr .øC sXB[(¡²é)ºbŒs\bŽ[Ü)Fœ\ )¦9­iK%ÕyœÝæ4/sžË\ÙŽ[Â’–uÙ–â¸5¬i]×m­yÌ>§¼ä-×mÚ–¶õí K¦d~Ÿ÷¢MÕ×XS]j®¥Ö·oþ¤=QkÝù}ãÝ•¿Í|"ÖÀgOŒuØë¾ïeßö¼¯ûB®´Ç=ÕíÓ>îC©e/¥l%—µ,eæ›ßŠ/®L”}Øê¶oeÛ¶¼­Û²Í¬/²J¿9V;nC®yÏ…Õç¼²‹™½ÄØ“Ë{£u׺îka¯™/ëÌÎ#û÷Ta⇥.ûR¨L¦>Ë2S§Hµ<5›¨Ü0×y§Šµ\©(k¤²‘úzªBÌ3dy‘Œ·<–éŽü%߇3ê_5cÏ÷©fkÃG"¾bu§œ§]¿&âÇó“ñaÕ§êñ¬"ªP8vý˜ñ“£íúy¼¶w«%ãköô<ܳ ãå󣿗ÜÛ{ƒìŽ×^ÑÚ°Z¡ZÚpZaúí…éH+Fßô=J¯7œ~€iÁi`}Y‘ÀÔŠÔ#é‘ʨa`½6´.ˆªàõ¨€í\줘½ Å9"HsÕÆk‡h…ãzVøÆ¹ð¹g;¿ÇH„̘®‚=lر‹ÊÔ"ÓÆ„‰ ×ØI”d˜Ë‚ɬX͆匧êT3bEl [ŠØS"|lŲp=,¬`a;P/³Ïˆ±Q&,Žmbv,Û#%(¯ ;„ñ1ÆÊÁq(%EÅ2) æ7ì+]H͇1ׂÅâá:OØî„ýzʇgaljMÉbY„$.òÚ1î*“&>bå }XºÃØ%(;6¥dXþŒñ/ûÚ"kð…`…¼j:ô.Æ#¦#Ü%ü+"H1܇vþðõ2:‘†Âχš'XÔÌO°æ·ÀæChÓà³kx£póˆ7€ó€8÷Ó0çí›:gÔvêœ`ç„;7à¹!O‡_;øtôéðÓñ§¤Ô¨CaP!ôDaÈp¨‘!‘A‘a‘‘¡‘ÂQÃ#$C$¤ŽIJAÕH`IpÉ€IÉ I°ÉÀIÐIàIðÉJJ J0Š]‹©+L N P ReUÈEÁJÐJà**` b d9UU{ MUÅ-‚Æ,Š]›¢WVM[Âæ'¼.ÐiCR³Fû9/»7zû£š„™¥¬_gfPÌ 4ǨVÐÍ ÛÁÒìÀ A-A £¶@ˆ-Ê—š9˜=dÊ\îLÂl©MˆQ˜UÌzx+‡'v‘õP‹pUÛãõðÚG7H{,´Ê†B‰qxZKì"£Vb4)æ€1¨!ˆˆˆ ˆ T•‘~‘ýU_¤~R‰y7i7YŸV2ª¨› ‹˜#䇄›x›l«`S•É“WÉq*;SBë‹.—ýUN±]qîÿ¾Iî~’[“Ø.¦òÝÜ\d ¨BØCÞA-Uc[g_ãi•—5Þ¯ò²Ö¶ÆüëÓX.1_‚5ªõÐ÷.{ôÚφu[gnß.OŠÕ!÷b…ˆ½Xã‚Ì‹uNÜW±Õ¬V+–ëÑôÂY‹U'ìÛÓƒ¸*1«d;îµu¦“Dž7\9Óm^$a­ô¢¸ÁŒäŠ‚ l€fâ#A%u@HI‡|z‘Lµ´éqQ¡Œz#‰ä&Ý2«@Î*Œ]GÕ‘C¹¡7!¼‰ ÊŸ¾Hw¡i3IëÓ㬊rBû ý5^bzšî‡± Ú›n)ާgç&šµù[ӳ޷CáéP¶“¶±¯3îÞ€÷^Û¢j›aïªÿ?×ÊìbÐj!ï‡IÜ›ChæÐ¡[BiF°ž `>_w£—™Àmì¼TöМϞ ò*õy> <ÏqGa§£ZZ/¨s:w˜s†Eœ87¼a o¸9ЦƒMǃš4†33†22¬QAÆ0Æ &35tÙÛ]\/}ÿñÎìþëèCãu°¼Ž¤éó%ôÎq9Åú$ò%¶K”[4¬±›wõ1®E¯/F½)çp—ð=Nµ·*ßx'5ÞY?Â;¡ñÎÜxG}uâÑ%Lª÷š`´³©–ÞXgRÖé¤Ó9gUÎÉJ8Â8o:Ût®™UÙWºJ¸èV•rFúΉÜÓ…QfÛ@ßÓ™â™>åŠÒ±Ub”EÒË^¨›ÎNb:ôùªî²Ñùb•UÙhäF8%¤Ðå¤Yf\nNÖá p—!¥¦‰ y%Ìk;kþU&0 à_ø1.ñÅæ±—áe$†—éÅÍ_S͉óÄwoß|õîÕä_5û8Îò©8Ìçúá0¼¤ðõÄŸÓ¿ò ËVʧ†IV4¥ ?'ïMíÍ4Ëj9‰`Ï£æ§oû´çå»3ýöÕúçðnÿÃ7¿|ÿÃO?¾ÿG{'ÿø÷ŸÞ÷÷þðò»o¿É/ß~ÿÓû¿ýü¯ß¿}s÷+»Š/ù= ±BÏkL§îÐô |g´ëðÖa,&ro#ÍDéöaæ!Peæ¡ÖÑŒÃlÃLÃ)Z‰]˜Y˜UˆQŒb­dQe¬ ª5ˆ1˜)¨%4CèvÐÍ [Ù@35äŸK¶ªü›ø‹ô›ðˬšÁ¿FE¯¢Ðµ´YT¦ÐQq«Ã–ÀC`„xOó妓år`CŸ&m’¼!C9ÍŽ† 'Tx>/N_áý³âUûU·æäwqîÝ[Gûç¡7!<‰xés‹åiз6>µá)ïoÜãín×i¬bןþz¨ }k|¬ÜCÕ´'ý¯¨Ù§™§Y§§Ù¦™¦? siø\£œpfhàœ»A6{4s4kc4S4K4C4;434+#¤3ÔÍÍg5@³?3¿ñ0>³=3=³<3¼©›]bjuftjsÍäÌâ" 2£#+ ¹¡*; 1 ZãQœˆKÎêŠ mhѾ°F®æÆ:T* U ÍZP®Œ‚t¬r}GTÍÄKò‚âe€¹ ¾QC‡ÿ´‘5‚Ø j™QÍ‚vVd`ÅŠPÖ„¾.èlÚ ×­Â^#*ìÐã€.'4zA¯3Ú-w±jgŒÚ^oAÒNgiŒ Eè ÐþW^Ÿñ 3Þ=ûÄÿ—F2^ljϊgÔžo¼G{rÞ5 ¶ß¦þE§ÉM'J‹õû}k‹Þ5oÔÆµÖ]Û´zÆ ŽcnUä8Bò «ŽÏÉÈ|AÕ¶÷*Ôï­¼'¹gÍZ¶sØ%’çWpà AËBó±Â¤Ïôõ·g§naÛÅduît!å:J,j3^dh@ÖA,ëµÞ›=YèÙ šü»‡+o^¯üñ*¼‰!ËÍ䌫Í=˜ìÿD2®WÄÀÇ·-b €Œé.nF·cq{KX[ÆÖ*–æ°3™÷þÍ~Ùü¸mkQ| ÿƒ7ÚM¡’"‹‡H”TdeA€ŠY$yÿÿ;÷\’ú°ì§ ’ö­Ó[s-“—¿sŽdì@Ä$Ù‰„‰€5¯ŽÂ™ÝjÈ•ˆ•H••Ê”Š”H””È“ˆ“HS&•¥E”IAŠ-‘¢2$"ÔS€fˆJ ÊE£¡ät”›™B#2ÓAbT`D^T\òÉ^ K½:˜‰4åÛ¥ÆÁøù°ú#:~ßóð/é˜iÞL‰8Ê›Ž”14Ï5²ÒnHü_sz‰™1M(HWÂfSâæ˜gÀœkà49‘¦4tÆ;} ž†Ñ³–sÃø9¦Rµ ¡ cèÌ EÎbÇ8jHkd´B ‘t`(Å=¦`j4š"Ãi8%žv% 6%¢Ž)¤†Smª÷Ȱ:J\…Œ«.Ö†‘uN¡u`lõ)¸®È‹^cН¸Ça†X$I±1Y¯Q–A¶)Qvd5Æjˆ•™Ð_5º:V‰©uš‰­ÁXÁd©á¬¶’zE’‰,—Ê–2»jϪ¹Tèxñ=¢²%. ‘iù¹‹5ÈÐŒY¼7¹í<õæãD>Ùå{—£±²D8Ùˆí­ØR1Ù°Q­ØÊDÕé{˜rÿÕ*o˯îF×-ßÉÚ fXž×ãèj¹Rv©,&Joú¸Ò1Û¨l,Õ‘ É! ³ÂÚ'%7D†)ÅjÙÊÝÖéB]"Y¶%HX–I¦ŠÕ¸•ô —³*ÌE©<(e@¨ »A&*©ÂìE!9dÁ !Ðú{:pG¨Sa…7¬1Â2&’/Ba‹E¸"TSpv™"DžMzÆ.6E9…¡Ä· "óõ(’gµ5Y(Îe$—=+w¹ÐñÊ»WekûiÛŽÝAu=ªåºô—èx{§]m±ã¶Çñ7»Úeݳ˜/ž÷iétÜg×Kû¬öºMacÛÅg1!ÔM)E~CbÔ" ¤áDÉPrlÙ±§Çj…krdn|+j|35'‹ß«J.÷úÕ›÷/»zøÌ9´.È•M0¼R¯æE~ÝñúuÚËc²ò›ø¸6àŠt[÷º~]º¯ÆZ½ñô/ß6›[ºt‰vÀ¼é_wÒóÆËÊ…ÍfÁž¿8u­k®¬«üúÂ*_¸iúìµÒs€K~Ó¿µï§§‡?>}xøøøô%½2<þõñ)¿öûé—w_ÿ> >Þ¾ýõõ«íïhמ†—üßnÎPõÅJ¢‰ŽÍ¦¶"xÉèì…Ú³‚:²'òbOÀ7~SŠM!X„‚B…¡àP€¨H(‹Àª¢1Ã1ã±u !—™‰/©pÌhT0 Š‚D¢àp-Aè@à øµ_è ÞŒ¯ÓtÁ X³@Z˜ÍÀ˜¾À5X1‰ æÀ± ðñ`UÌ"&/cBË=ÆÜcÌ>ÆÜgâ>÷™¸ÏÄs3‘=éÚ``HF Hàp F…ð‚ ÛîбǦZÜÙŒm Ø@ƒ{˜±a=¶Êb›*lPÄætØ–6@±%#¶#`#,6¡ÆÈò÷XzYø–‹>qÁe¹e±e©%%ê"ç%Ö/øEËûüâ"_- œ–¸,².ó@+Òbw´)6-yÎŒò¨JrœivÔöh‚RŠÔ$©åK¢Ì©2%ËRÉ~¡£þ´6hÍa]6}›Çóf2ƒãžgïyv“gï3qŸ‰ûLÜgâ¹™ÈãOÌÆIª>éÿ›“Å/U%ï¿{ýêÍû oŸó_Ê›R|ËT¿»ûÛƒ –¿Þ4¾ú©ú™Ãˆ·û·öýôôðǧŸ¾¤W†Ç¿>>å×~?ýòîOŸ>~~üõõ«ò#š¸ÓðÀïcAW=ÒYokL¥YµŠË* Ûpqey —Ør™¥°Xn-K‹¦Þ]?¡/Þ]Ü»úwC¹`.ÒU²Ý—ˤ—Ò¿—tPÓíÌüBÈÈš˜0`š4+HZXª^Uµú•Á²Ø7š7±nbÜ@³†‘ XÀ¥¦ÛºßìÕ·‹æÜý“ÇófêÇtä Ö\ÄdÆÒòÄäICŠË"™¹ó’?ëWþöWúV¥o¯+¢+¤¾\ݺúwuóêíÕç«ë× Y˜rt™¦JO¾6×GÃjY†eYŽÕ±<+°$ŸôØåYzŠx:kåŠÞ¸6×GË2,Ër¬Žå©Á¢ÂJÜS*r¤*Tf)e–.ŠÞ¸6Ç#¯àKõ=Eº|¢Þ¢§`ÿ õ= _ ¨/ÒÓj‘TÇ<^y¸ÒXé@¥QºÕný3Ã…=z‘Ýê³ÝÂw•yni¸äá9Ø ÇÁxÀnÝ4 ÏÇëW· ÈÕñÀ×ÚØ­QÆC¶„ÃÑR»Íx,†+H›tØqLdPp1,Ú.#3plÖb*ˆZcHQ”q´ i_¡<Ï Ï_Ý^ÙÔPžKE}¢c,5–šJ%®p¨sœŸmy¦¢´™ò\ÊžýdK¹R]©ŒS¬7OJ~åwh]àÊó”Ÿ8W dùÄÙÊ=sMÁïñOm:™r6 q¬Hö81:8£§tLØUäŠS¿dóLpvŽª?›¨Å.ntq¢êAÅ œO ¨\J^ ,R—ª¾Õ–2¥Z-tlʬÊn=0éÓ}èôé~Xè8¬îm,5•Êým¹"n*õ›áhw5Ô…:~ãÇó7Vækõy¡ãÁ«ÿ¤¾²cs¹èú—jo,s^èxð*Í`~^/·ç5:î™}Ü‹½ÜZÌÅfFšÌqk4ÉÖl2‹9›gžƒÈSxzOk[2æÄŒ9”Œ©ùR ¦¿1å>¤>M}†‰¹Çf‚äE(c…ô0RŠi œ  Zá MPÔeí¡°Jë ¸ÊÛ@apÄ'hr„6÷Ðh­vÐlín á`0AÕ#Ô½‡Ê{¨½ƒê¨P\A„;èápð ¾ÁÀ?4À´LèÑÃgxø çaà@ˆDüLp&¥‡Sñ0´ÎY¸—®¹v¸G`j‚ÐG;Àç8žÎǵpB5Æb†ÀðH¼R€cêàœ,T Ü×H^3LÀ‡5Ài…÷ßåÈô|¯‘ÉfR?BD <ÕAt¢¥¾TÔ£‘j% æ¡mŽ˜"àÿÙ¯¶9n#ú.`ÿa^ $@Ü »IvwÞæÖAÇ1”`ÂFZËJ´«@ZÁH¾>§n¼tÏÊ+ÁyÓPÚ²Éê"yêÔ)`ÂJ@)ÿ&-ý|¾”<Ë’Ù±æwãö”ù|à<á' ç甃âeV%3²²‰ŠœkOÐd%XŠG@k¦¤X ¬¤zN¿ØÔÖÂRè¤È"l º_‚0˜ ¬çôí˜ÔÏŠ6› Ž0w„<ÁÞÀ§ â$C$ ‡‚D¢ ‘ð(ˆô”¤19åž›„NÁ'!T0J(œö\Ñ9NpgÅ+!V0 ÔfÜr»„^Æ/#X0L(’Ë„fÁ3!Z0í‰`Pœ²Ï¬»¬À÷ŠpÂ8P~©YÓ”™ÐÚ%bŒ•4Ý4¶XÛUCCÚ­ Vj_˜PÍÒšÐ×V¦\§æp¾ÌΗƒùb(#„)˜9œs0S8—`.¡ü¨@†Dí%˜™Ð%˜%œ% §|Øeg‘tÒú,í†Jb­V-áÒZ©pësð{É/+TNÚŽ¹´±­äêô`Ë6Ë™­ø ó€øø,A´^ýi’‹÷åyku­úKTªàK©UX1 J­z†¨u`UªU¸65•ªÕ©R¥J…JÕ).kˆ#W‹Ö R/$†Ñ¬u©ãå‹°±˜ËÝY‹’22&F%ø*y q@xCOäG “ ’* ‚”Àd%?æV~TâcÎÄ.”nÂCeÇ42¯eG!ë)‹‘‹’rCÅPÌOÂQcÅOÂPÂOóFlÔU n`)°–1•HžKL§œuVrÌBdV#9"‚„˜L¸Œ®íœYí ÌFÜ6e~‹*VYF,Ç¡$LÇZ® X:(ë óÍÊ~ÖÆ"fÔ—ì ó«µsn˶UuƒºDf`‘>|0¼×€=—–.´±jSÕäìJ8GimǪ´µ-ÖrRó¹©[¸Ã~°ÜdÌ-iµMÚfmûÜÚŽœËð—Cí¬MÒHIõ¸@9’ ¯ ô‰Ú`k »2Y5¥`•UòêYÒ ‹ ¬¹O†äCyäÆz(Â"â`¯u\ÿ¾i›fQÁ™ç›|#ߨžo‡îbáÓîù<#ŸÕªÝƒt à3›g LXØÒÑž©‡¨faZé™>"“ÅÄÔp`8sÐ{ó ¡ÍAÍÁŒPFpŸ9„=‡nàp•P98Ž _ÏA}F¤ºÈ‰ï„ºdÁa{ð&¤/¸*ÀDB53!Yî‘6¨vH,¸- H­¥ & ÝÎH»ÔP'$ᅯуmdĈ]#UO­ÒZi­µÚªõV«¸XsA0ˆêʺ‹ëNÓ]Ey‰ö:rõjú«(0Ó`Pa,jH‡©ËZLÔX¸( D“‰*s*ùMì#½«>#…&Té´ëöÅÔZ—¤zX0x„&Ï\$®VÿŽ•þ‰uÛžµšè´Pi4UhØÊ|BµE5êF£™B{XŸ‘:;à€+…†ã‡Bñ{Dk«Òp÷­NC,¥¶ŸgUk `µæ³^C¶l²j Šf3ÕvRÝFªm$M¹õY»U½íI¿!“˜†ËUæªÎ,•&é8Êu¥Öl«MÖs1QtuÕyΊ®T¢æLÉ™Š;©~Ûõˆ•vs¹5Õ¶WÅfzÍÔšo*Ò“R((š›šÔèÑÈЪžº.X.Ô‘V;ZmA® ê™LH-8q`£VW”VªºÖ ÚÔžZ­–u²–֔ʤ4©‘6P;2b{Ū UP*%„>÷ŒÌT&ÏÀ"!±à1B$ „>Ǩ#ÌÚk‚3B!Œð5àòWGFÔÈHB1ŠA{ÅŽ!‡pC˜!ÄZb?˜îq¦~™+V™âbžà,Á¥Í¥<ñ`Žx ?ä쀰¶ü°ÍMn ¼Àô›ß'"“¦Ûyüw]Ïßý.bÀ9šöç«'_=ÿø¬Ã{²3ã´è™'zÜ9ÜÏ67Ž"%TV¿FÞ h;ÓÍ~Ù§ìMŒ]òSõ‚G.Pëýˆ·w`Ξ&O_Î 3û–lMH]ÅÔoù´…ò¶ óð. ´eÞv‚~‡3è§ÎáÂê xÌt» šÓÓ1Oíyj¤N}üHÖ>_ퟟï^þîÝõË×7w÷:r¸yõúÎÆ~»ûÕß~|}ó›ÝáÍõ‹ýúêIÛç38¼ÌU!ö‰õÃÃbR),¶õ¡Ò!d™[—mÙÀ ‹¿-J¹Ëƒª °" d‘?ª`%É ÑŠájÒÕÄk–¯hŸ$^AUQR!$¡###!"¢!"!’ªDAD@g"§D=h‡Hgá  š4sÅ,ØÎjÁíG$¾`þ=²À‚Ôfè›z'Bý€üp` *Ò!«LЈ®Êrè±\ ü_ôÙ竳•6#evõd£Í>®ÌÔe¦É@ä­*Ûj²­"kôØZ‹!ÙÔZ¬UbE‡Õ* LXÑ_¦¾ ½€²u]*Ý%ª+©âb½¥j똕–謠‹X@ÖQÔ++QUë)÷_0ñ_0ñ(LÔº–åŒWY³´—³~ÚÙCA3]zø3: #Ï¿}{÷Ý»×w÷¯ï^}ýu­Ÿê'WO¾ý7?äÙw×÷÷7ïî ­öÿýðîf÷sÞ“²ª»»¾ï¢ü‰“þ!O?\‘·¶Ãgÿïÿ€ßÿÄèO»°ûãîû¿»ÝKž÷ì)=/¦ns—~CÝl¾êò”oڵܽc³OUgÆ4“0îç°+'ølOO}íüfgæùåÜ è¢ºÙ }‚›w<È/á_/غqö2ªEÁìñ4ê¥ fPØ’1™9þÅóìU<Â6mUq'¾7ŸËq—×>g—7ë ­È3³Ãl£røÒþ›³á?¶ªÌnæ?ÅáÁµ—›,kͼ[_øÈ]ësÁI9;{ȹºÊçb|.¸»Í¸³;æeÍæ«ƒq›CÓU+o¸k·l«ÊýlØÛx„×ÛªâcëvÁwí¦³ÛÙëÓ¶Ø–¬.„ÙE7;]BsBì„­*¶>xÈt×ú\àWÖšÅI[µ«œ¼kÝ®P0­Ý.k«Êììv¹v[®Nïšo¨Ù×isnÆ­7-LBxNAˆ½Gø­*³[· B¸k×ÝÎ^oœ6Ÿ3}´wÒRA½ÓÕ)4'ÄNتâ`ësAˆLw­Ï%¼*o¦š@jÚYáµeƒ©BÈ*ÆìmålUñ1»ý׫³fVdcÍ«—Síá͇›Ý_®ÿñææÅ›·÷?Rº]Iþêñïs-ͼ•°ó0lýÓÉ/g?$þé£éôšOe—Ìr2f7U¿ôád·ƒÖÄ+»ÁÍ“˜ëÿ7£X¦VóÂô€ãµÝF+eKÎ,¹•/eu9€Çù—ÊqæƒK+ë©6ùx8¯oß~øáÍõ«BBÕãMþ}.ÈÀ­ü€öíåŸ^OÃ~4  €@¦s™!·ñåz(©|XÉ 3O‰ùìÉömc±¼¤zsqGN’ß“ÝØ3êä‹^äÞ=†h¯A<†0——i__R7NC¿îæ——Õ• ~šè…žÐÍ.Ò{#¾&ýïiT]ðp“p©h7t£‡ós‡š$ìúnšü`=P*! òØå0€„º>®:C7CÖ<42vEMs(x6ýÞwn‘‰˜²ÁÐñIÀ´›Ö=œCŠ!/ 1ÐòàF°a{7ÝÔ¹bô©cs7º×í±YloÝ®5éKllì\Li‡$Ê m‹êPÊÆ 82¢tÝt'½ùÅc ª?±zLið›nÄá¹|¼26wëÎîýÁO!÷—# Œ¼ÿ ?Ö·ùÈ?¥i¶—ûõ;ó ú…Ëhü´~³µ<¨Ûïcçc¶ýúmÐNF&„ì¶_]”ÙeÂ[ï­M¿DTÐô Dâ¦ßà. 4ñú0mº5¶mРqª6ý:„ò Œ$ã¦_©iÛ=kŒ[× * !T¤2÷þì]oÉñ‰ÿ0Fº[OL÷ôñdît‰,È%!„æ¼ذ޵Ökùõ©ÏîžYc0É!lOU×wUWUcµÜF6Jidø§Ç¶æùÌ¥µx¸%Ðf¥³„J±7@,ûÙ¤>ƒµÕŠËí¶”äo'F‘CÐÚE(»9µ8ç ¸Ú÷yEÂbm<º¥…î†×…iEOF MmH6Æ9èâÂö¹Ï+ÒÁ£«ƒN‚=€m‚^–‡–"¡¾b`ÎÂ9 õè´G)‡ÐÃï,ôœÈs¸ƒ)SFš…³ B}0p„B]Ž6áÜ"žÑ,{¾2 J¿É]â[6Îõöã¦9Ù÷´sÖ0 U2‹Ðâ˜øÖåSå\fÌ™Ø~ñ¤«é›ÄÂ-S#ð·lbqA©°ò^dÄÀ0¢”¸ˆ/‰ËÊE»_¤`½`BŲ@N?¾2ÁFè¸ðX'âøƒ—Q%g±âªL¼(á… ·]qIi¨? v~aÔ-Á€Ä+±âï ×+G"+n`YLÞÓ‰-ôV…]Èë:,<òÀ6¡‡†ÉK&1À¤¢‰Qb…ðN¬¬=3†< -ý1.æ¼±{®EË‚ú ÜR44-à œ®E¸–ä[ÌQ†è¦Þ'='2¯†(زe!2B2…×u‹,š¾uç!Í„A…«ØZ{ˆÛ;:šBía©JÐei«Ñô9 Ÿ·}ÄÂè"®-ÕJB{ÚRIQ¨ø´O '_”ªã8‘¼ÌIµÆrKÙe­„‹„³²·r²L2¨¹ú¥Dy³Í) ¨®Åuç->L’, 9Ê‘‰Cê”–¨ÛW‡-ÉR6Û‹D+#[•áAÈäÙ¶Ê}àñJÖO_w‘_´¯¤$ÐgÃ/+vïh>¤6ÐÅ×¼ãO½2°Ž9ÆðµW>r8†Ñã¯ÉŒ©HM‹Rˬ2qä*¾ÊÖÊáÞÁ/YËy‹Ô|Ë‚ Þáôº·@Œ!¬#¯{~IÐ|ó(ˆÀ\h8ï­åœ. Šd@3Hú%Ö ïÄÖÃÖ ·êä¢ãƒ¹T7{¹¥Ë0.ŒEE°ÃY,$Òiø‹  <òI·¨8¤mäVÀèí–{"sQFUd¹|YŸ³-Ê[Û:é£Ô^:q3÷Ñ…/Ó/ñóÀÊðÐÀNÊÕc|¤µ £ÎÕ&€¶×œa2»€²qe—2šÌë-Â]q"k5Uسå÷™<­!ˆy0 &À–çhÝ‚¥›“F¯; 5ÐlpÏdLŸÙzÉ›b„zNFßòä#]|j¥¼‰obfÝPoßa¼ã9%O>†€:ÑË+ؘ¯b¢P t!·7XWÝUaÄ/§ÅÛÂÆ.ÄŽ3)Ò\Ux¢NPb óf#ï3“ªÐf# î{‡é‚”G¹ÕÕà}æ:1fÂWIe †ˆÂ„Í™¾ÈTŒ2F3ËN:ð’xè·ŽŠ×ea¤`h`£Ä7 õl—g=7É…E B˜Ì`êÁeh™DBlEŠÍ"ñ–÷W%ÓA*™²PÇù‚M´é—^‚msª2Êä—Vo-Á6`ÒÊ''Á.LD:=7Ö̯pÙÁ3 Fe´¤EÀDs¨ÚåOl‚ž«‰Ê?ñâ>…êÓ¬P!çc]¨ÞÏ*®M]ªV—æÅšê¢SV_I®êUËñ”u.ùëê:ð¤`–Ä×X)Ù4­Yp¯­‹™ ?KÁ!$¥¨ VeU}FK—Õ CeÛý³‡o;ÉtBì\CKçbþž$Q®æt•Ü*w0 :4B9M-ÙÔ¢E³L¹ç¿bo‹kÛtkku´Ó­••­ÚØâla' ›<-Xœ)#TU1Š­PÞÚÈû‰8ŸÓ!as?/·»+©kjž"¯ÌŠ{™¦È3E *c”™0š™Ô;gz¬Gz¬&z7èóÜÔã¼U¦6ÞVç±™ŒòƒIÞÕƒ>$~ø)Rá“‚ñò®`tˆxól»9ß­6ûÕæí÷ß ž‚TŸ<|ðìê›yŸìö/÷ŸÖãõÃÇÙl?nj~€¸Ÿl¶›GÍñ³árl¾ƒã“‹ýêØϟl/¯¶7›å«5XO,OÞ «MÃ$Œ~DA9šïng{¹.Þít¸^]LxvÛ÷ãÝL–€õó£œ?­ÀífØ}"'øDœj(Ámóþª«êöšâŠ¢Ù·DÉã?›ÇÍÃÍQ%ô*}ÜÚæ1Ÿ»ý­=Ùn–7«ý眹›ýüBgž#Gñûk½m½Í‚ÈWÐyºÝ®›£_¯Ç§ÆÍóåòó1¸Û§“åö÷±9Y.›“ÝnûñÝ8𨙸u4=_ «+(Úóõ 7PZ¾Gs9Ç]í×·Õ„iŽÞì›#¤{3 9 èý°Z×èÌy1àñõÅp¯„Ÿ®ÇÍò~I#–ûg­ÊV‘pgZ€çé¿Ç‹T·$âö.{[úÿìm„“/¶ c›ÿ¹Îñ\ãÀo^ŸïÓPÌ å†RÊ+À7ëý뺣¼\]^­KGùlÕ}Ë¥œÜH)ÆsèNû‰™´2ÁšU-L_Þ¼Î!°Ú±Qç¿Ï;zõ¨®÷»£òúýö ÂìàüâÀ±áN²:,G·ÚŸrº†ž*§÷xpý´>)ÛW?ºŽÎVoß훚·wkj«Ùªž®oÆl[ï‰Þ®Ì–dú³r±©mºÒ’+dGæÁôLXÚ6ÒBOA8 íßV[ÈåŒ0ÐC‰ á™41eÆ`#FèM¶‰¸ú‰13&g<’žcù™a4sÿ×k쪂“ÅaJ*Ï7±jÆ¢ ˆÅ‘qÂ*«¦L–_º‘søÉhø)øÝ«)„‹³Á×WlSO‰LVÊeYŒjÍZ@[=J™ƒhD©¯3Z³¥. ÂDÖæ"“Â/™çL.º¶ãÌ‹"%ýqXÂ+ô–ê2ä¾V•Mf8,°;Ž¿uK‰QÝ®4Ïåk²aU˜j&ÓáMõÌk}4ÂTÝÛ_†›Ù ä¢+ ª†íßîÆk¼§ã˜CÙKµƒù=hò¬v„Ššm@™Ô=ä¶N35aH¶ë²)¦‘4ŒŠ2¨èÈ,œ¨YTncô~¤ÔÒ%kêýìÓ!V{Uîjç7»«u*f¨óÆJB)í¸[}\mÞ¯çµä¸*Z5R/”Þ‰¶Ÿ%ÎôIKÉ–™ÜíLÉç»aóv^€Ò‡"ñJÊid÷g|Ú¿H™ƒµ²¾ð¿ìWioGýn€ÿ¡mXˆ½PZ}p@´×EÖJYØ€#il1Ë <ˆòÛ÷U7ç H†D‹Í"²`YS]U]ýªêu^œÒضн&’'Ñ![Žœ¦å7C©û™†T·[­Z¹²Rq÷.YLoYÒeÅm¯èï4¼qM+ÊËYYöY·˜°““ÆV•[V.¾ëÂxoxM­s‡‘Ý-;=})vÊJí½Ì‡“޴ܽJÖ¦ÖÈ~*®ûåM4»{¹²6ÿ}lú™7-J¦Îï'Å GyvZ|¼˜OpD V{®_YL ;‚Ozãr? mýdà5fßÏf5fw™X]‘ƒÑüS¿ø¼gm}2pÞmøfÍ*¢Ù¦ 'gã%_Mï*Æz ¦¸Â¯×ImVÙÍk7º Wù’ôÝd4Ÿ ?ê×y1»c鞀CYÊòO–—@zÚûR Ó•k‡É×E¿ßû<)Æw½´úùôŽý„[bm~ÃûÚÕ–µû¸ÅNp‘¾æ-­û]*(‡³7Å ³áàê¨Ð%Ž~®\F®œµ 9G'Px# ×ÇëQ1¹e7£þh‚ú˜Õ9ÜKõsßû)_'Ž–t­2*l×U­vª¶cة܊AnÕ[*¨–®Ã鸘”Û{xìݲioQY쨋ËšãbŒsœöó~º1.u´€ÖEY,µÞÍgã9Xe1Å©÷Is:êÏ[‹¤]Yôc lìXÒúmŸ@5bØ?æE¿7»g§å—²ß$ ‡ý¯ã“ó#¡„áéß×åíq¿ÿv4œM(ïWùr~=-gIµ[¦ëKVn6»Mý‚âoÌ‹eØë¡œOFŸzýr‡*hÆÍÝšêQ·—qÏŽŽ/_Ÿœû¦¼Ý–éíSü{NÏôùÕâé7ßüíÙ‚~<Ï¢gô_,ùÇbÞýZúùSZNÏÿòÇ£›G7nÝüºÉ]ó·o© ¿ªÈÏûòš½Ïzƒj|]‚cçkÄaVÄÔ¸Mnq=8\#/ìèl4[}¿2y‡#6úRNÆÄ’XoˆY>¦¸~nø5GBó1†ö°‹¯6øyÕÐøtë¢d£MÝO‹ûrÒy"™\¹ úÈ$色–‚ħ¸@¾HêL¾d§Ã´ipÍ7H[£sD÷&Ltlzg˜/›¯èªyLžÇôõ]sÁÍ¡|(HrQ‰«ûчc’Ô¿îé×÷øö d¿2Ã~d춃wXk¼â6f×Áh6è<évæø3QseudNi.£•ôÊzÁm4žY«¸A2'÷Òf¬ãN ÓH´Ñ<©®cPîwP“<(­’D»(“DIi˜V–›¨-|‹8iÿÉ@tx)#7^* ljȣ´Bqí=s‚¶aT9.¤…°Œpà•Bè)xrÖ%5à©OBǥ¹jå¹ó"f¡á—bB&,¢T\e“O…hØzhpñ©cB€Û‚9e} €M”Ü Dã9³Š™ˆ½JX.e"â„$PÂ’1:‹ c€Pqçd lE) )=!èJh½'¯‚ÐxØ\EíótÔKáþ³“A#kÐày‹ °/Ù‡÷'óN…Ä= ÷;H(û“Àèr £VÕᢌrEÖÙ™ÄÅ˨Q°'ç[Ým¹b(+@ƒè x€—ÑÃÓ•fõA)tA³-Ä$ÚTË0Q¨ÆÕŽBþÜK eY£Ô* ¥£É#ÃP:Â(,Ô¦Iå0W%Äö£Ã€©M D‚U6k %¾ ¬Q«b¯,­m0Mª-…¦Ø¯¿dF¦›ú$Ø£" jô@ª¸ŽŽÊ®~&pRö,ƸÁ¡xSöj©  5`#Õ‰#i‘P´8)¤l$´Ô †i©¡³EOlª6UK–i]-`-¬¶D”R#‡µ$9\ÆÕ¨Õ±×¦*É¿pÊE· endstream endobj 12 0 obj 16864 endobj 13 0 obj << /Filter [ /FlateDecode ] /Length 14 0 R >> stream H‰ìW[oÇ~'°ÿa^Ph9šû%}¢ÒTPáØ‰Å4*¢‚XS´D”"U’rÂþú|gfo”hZŠäÁíÝÅÑ̹|箃ä^6)zï ÁÞ=Áè'Y~_‹ž²š+-,ÓÕá».Í n„0L™Èmi'¹’Vƒb¹R¶HQFp'¢éÓŽG¯]‡UCiµkiQsá ¹ád„âÊÙ l(I`¥W{¬Ñ½aõØBÜ[?‘õÙåEïؼ6ःšÖÄôN\GG/ewŸ—%„Kͽ _/t5ÍÓUÏ”\Ê8 û…åN5ÀBvÉ¥j€QFÏM”¾áÔjq¸×ÉZ bÃ)#ƒ …ÖzµÇjÍNÍ;F_¿O \ d¬RÜEØv·CÄI Ð,2-ó[F˵3º!$û7ÞºÎ!Ø¥½ï²i(•´t¯!"Ã,’¶å¤<(ÂtäÕ”t±Rª¦uô®8=5ï`}`ü>Qä,W*¢Ä),Õû"j©Š‘)§xˆ”nÅ‘•Ê .„´-…òÁÂéUç˜5Ü{;¬ZJ%1]lˆ–[ãBà °XA­ÄšBÅÚcò5«'6 ¥/‘xl´DhVè =rmtÀÅÀ5ÔÑ}:õ¡è¾K_+z¾y)‚ìhŒ‹ïï‹ÞÉøÛíjV^Þ.ïÊ“ŠE4pÙ@³ÑûÄh ÁðôÿDÙĵ¢_>€2<·öŸã³ùöþöâáÝzók¿_/SFŒ†•üËW‰Õ¿Óó_E3ˆïŠÞåiÖÙ²Ñ×­dEÒ$?°ÑYmÔh–n—ôDiÇJß&Úÿh¤lt“ÏŽæ‰:IÏŸ‹^ÿjuÌF¿$XFÿfªöð¾AŒéw™„ìP¹×²½äÁÉ F£@8“Ú FŬâQ[ô©ïÐDÆ¥GuÑÖ!ešºN‹]?[êž…#Ø:ù±OÆÛ»wË9Ó‚ûhlóD.æ¦Ê±Ð½_&ðqR}4—œÎ©ú5@ð"*èf_Õw*ŸÀ÷LàŒBôzÇÜšD ª¤u `3TA«W¢Z`¦ š7&P´þ­Ð˜æÝ…&"ÈEuÄç¨%›b®ÿ—r vèd<šÝM׃óM9ŸM¶ÔC¢{89 $üÊÉr}Õ¿ê¯q@g1¸‚Ŧ60›lfËE¹Ú²¯ˆÖ` 6Z}ÌN.6«Ùâ†õOO‡“ÉÃÝÛ妤ÃÇì¯tôoôèÄ´ÚÉË#-C¢‚#*]± VGMIŽ:p–";ðh4ÚÚFDޝ‹O–êGØH…#(21X ¼ 0~ìJ)j‘Dšnv %±T3^—UÖ&A×EϵÙûæ%)ì=Wžò¨céiñ€Ÿdf¹ A'£õ¾„Â9“BD»%›´È•c"ttpykÆ¥¡ ó|Œ!UK‹>LðÁ.R}´å%ÊÑ$we¤ˆCÅÀ,7X‹˜ò‘=V' Hd îhb0JR¢îi´Z¥† ƒ ­#wÞÓjᨂE'ÎfV=©Dç‚ôÖi\&ôŠÄŸFPb‰Ê"Ñ I­5Rç±^IÛŠìú¹ÝãÀ‡z’:Ëm±rÖ–„ƬY¤¬ ‘£î?ÐꢚZÿôÜâ¹ú€øØ£ñŽ Æûœx4~ÜëT̞ΎM{/Åðñ{Ñ츷X۽ź;4Ö³XÿýÞÙብ/«·.jx80áBŸ°€m+ Æù¤[oÕ!óÚÔùŒÊûÌJKE2©‘*¥BÇÌÛ)ÜœÒ9˜=&$‰7KÄ)÷Rô)GÓ)F yËÑý(lâe¬Ê«&OéSÔ;¡3 XZ§snhÚ( 1V”>ÎÇž*–¢ÙÆ€…ˆR{ÔKú¢·òhª¥àr.)9 –¨>€0^9Ê>JC‰ÃºˆŽé´IܼU‘´³`k¥Ò¢ä„²™ˆèXÜhW²#üß ‹5Ú®u†„>ÖísK'IõVç-ÎvÉ;@ÏVéø¨zþéÍ?Þ›Ï(§{ÝŠ*»ëØ=uï0ôö¼ÿv]xР)*ö: |¼NÛü.Ð_TƒJB>·OžW‰w5wÁ2äµ—öjñFø‡ ÆJ—•Ë‹èž)þº ÈIÖã)‘ŸÓÅH'ªë6溮ó¢;PiÚ³6Wg)”½ ßiE: í«SÄÖðÜŽ¿Y\¿*·ÓÕ`ÂÑwåÍt´*gó) ¸Y—¦¬\,h?™ÞãOìf5]o–«)[ß.& ]j. ¯—ï¦ãóùüa½Y•87†v²™®îf °`7Ó ›þ2ÔG×·å56! ‡Ž}½œ/Wçw‡“îÐÉûrƒ?.È=ûv|¶‚ÔébsˆÑf{¿¼Y•÷·ÛOÙ0!(˜O?LçêãlŽŽ¾yó¢÷«ÿsŽ{ endstream endobj 14 0 obj 1963 endobj 15 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm1 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 493.25391 325.49219 611.21143 623.19507 ] /Length 16 0 R /Resources << /ExtGState << /R1 4 0 R >> >> /Group 17 0 R >> stream 1 1 1 rg 0 i /RelativeColorimetric ri /R1 gs 493.2539 623.1951 m 570.5947 552.7881 610.7168 456.6304 610.7168 343.8013 c 610.7168 334.7676 611.8232 334.3691 611.2114 325.4922 c f endstream endobj 16 0 obj 180 endobj 17 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 18 0 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 19 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm2 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 606.64063 319.47119 616.12793 328.32471 ] /Length 20 0 R /Resources << /ExtGState << /R1 4 0 R >> >> /Group 21 0 R >> stream 1 1 1 rg 0 i /RelativeColorimetric ri /R1 gs 610.7964 319.4712 m 609.9404 322.377 608.3892 326.0156 606.6406 328.3247 c 611.2656 326.2822 l 616.1279 327.6709 l 614.0786 325.6235 612.0425 322.2319 610.7964 319.4712 c h f endstream endobj 20 0 obj 221 endobj 21 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 23 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm3 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 488.79102 617.98828 498.31201 627.25781 ] /Length 24 0 R /Resources << /ExtGState << /R1 4 0 R >> >> /Group 25 0 R >> stream 1 1 1 rg 0 i /RelativeColorimetric ri /R1 gs 488.791 627.2578 m 491.6006 626.1252 495.416 625.0828 498.312 625.0205 c 493.8398 622.6619 l 491.9102 617.9883 l 491.5771 620.8655 490.1821 624.5674 488.791 627.2578 c h f endstream endobj 24 0 obj 218 endobj 25 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 27 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm4 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 488.79102 319.47119 616.12793 627.25781 ] /Length 28 0 R /Resources << /ExtGState << /R1 4 0 R /R2 18 0 R >> /XObject << /Fm1 15 0 R /Fm2 19 0 R /Fm3 23 0 R >> >> /Group 29 0 R >> stream q /RelativeColorimetric ri /R2 gs /Fm1 Do Q q /R2 gs /Fm2 Do Q q /R2 gs /Fm3 Do Q endstream endobj 28 0 obj 82 endobj 29 0 obj << /Type /Group /S /Transparency /I false /K true >> endobj 30 0 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 31 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm5 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 492.9165 325.46191 611.8916 623.56421 ] /Length 32 0 R /Resources << /ExtGState << /R1 4 0 R >> >> /Group 33 0 R >> stream 0 0 0 RG 0 i 1 w 4 M 0 j 0 J [12]0 d /RelativeColorimetric ri /R1 gs 493.2539 623.1951 m 570.5947 552.7881 610.7168 456.6304 610.7168 343.8013 c 610.7168 334.7676 611.8232 334.3691 611.2114 325.4922 c S endstream endobj 32 0 obj 204 endobj 33 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 34 0 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 35 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm6 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 606.64063 319.47119 616.12793 328.32471 ] /Length 36 0 R /Resources << /ExtGState << /R1 4 0 R >> >> /Group 37 0 R >> stream 0 0 0 rg 0 i /RelativeColorimetric ri /R1 gs 610.7964 319.4712 m 609.9404 322.377 608.3892 326.0156 606.6406 328.3247 c 611.2656 326.2822 l 616.1279 327.6709 l 614.0786 325.6235 612.0425 322.2319 610.7964 319.4712 c h f endstream endobj 36 0 obj 221 endobj 37 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 39 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm7 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 488.79102 617.98828 498.31201 627.25781 ] /Length 40 0 R /Resources << /ExtGState << /R1 4 0 R >> >> /Group 41 0 R >> stream 0 0 0 rg 0 i /RelativeColorimetric ri /R1 gs 488.791 627.2578 m 491.6006 626.1252 495.416 625.0828 498.312 625.0205 c 493.8398 622.6619 l 491.9102 617.9883 l 491.5771 620.8655 490.1821 624.5674 488.791 627.2578 c h f endstream endobj 40 0 obj 218 endobj 41 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 43 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm8 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 488.79102 319.47119 616.12793 627.25781 ] /Length 44 0 R /Resources << /ExtGState << /R1 4 0 R /R4 34 0 R >> /XObject << /Fm5 31 0 R /Fm6 35 0 R /Fm7 39 0 R >> >> /Group 45 0 R >> stream q /RelativeColorimetric ri /R4 gs /Fm5 Do Q q /R4 gs /Fm6 Do Q q /R4 gs /Fm7 Do Q endstream endobj 44 0 obj 82 endobj 45 0 obj << /Type /Group /S /Transparency /I false /K true >> endobj 47 0 obj << /Type /Font /Subtype /Type1 /BaseFont /SYTTYX+Symbol /FirstChar 0 /LastChar 255 /FontDescriptor 48 0 R /Widths [ 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 333 713 500 549 833 778 439 333 333 500 549 250 549 250 278 500 500 500 500 500 500 500 500 500 500 278 278 549 549 549 444 549 722 667 722 612 611 763 603 722 333 631 722 686 889 722 722 768 741 556 592 611 690 439 768 645 795 611 333 863 333 658 500 500 631 549 549 494 439 521 411 603 329 603 549 549 576 521 549 549 521 549 603 439 576 713 686 493 686 494 480 200 480 549 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 750 620 247 549 167 713 500 753 753 753 753 1042 987 603 987 603 400 549 411 549 549 713 494 460 549 549 549 549 1000 603 1000 658 823 686 795 987 768 768 823 768 768 713 713 713 713 713 713 713 768 713 790 790 890 823 549 250 713 603 603 1042 987 603 987 603 494 329 790 790 786 713 384 384 384 384 384 384 494 494 494 494 250 329 274 686 686 686 384 384 384 384 384 384 494 494 494 250 ] >> endobj 48 0 obj << /Type /FontDescriptor /FontName /SYTTYX+Symbol /FontBBox [ -180 -293 1090 1010 ] /Flags 6 /CapHeight 672 /Ascent 1010 /Descent -293 /StemV 120 /ItalicAngle 0 /XHeight 771 /FontFile3 116 0 R >> endobj 49 0 obj << /Type /Font /Subtype /Type1 /BaseFont /MPMVYX+Times-Italic /FirstChar 0 /LastChar 255 /Encoding /WinAnsiEncoding /FontDescriptor 50 0 R /Widths [ 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 333 420 500 500 833 778 214 333 333 500 675 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 675 675 675 500 920 611 611 667 722 611 611 722 722 333 444 667 556 833 667 722 611 722 611 500 556 722 611 833 611 556 556 389 278 389 422 500 333 500 500 444 500 444 278 500 500 278 278 444 278 722 500 500 500 500 389 389 278 500 444 667 444 444 389 400 275 400 541 250 250 250 333 500 556 889 500 500 333 1000 500 333 944 250 556 250 250 333 333 556 556 350 500 889 333 980 389 333 667 250 389 556 250 389 500 500 500 500 275 500 333 760 276 500 675 333 760 333 400 675 300 300 333 500 523 250 333 300 310 500 750 750 750 500 611 611 611 611 611 611 889 667 611 611 611 611 333 333 333 333 722 667 722 722 722 722 722 675 722 722 722 722 722 556 611 500 500 500 500 500 500 500 667 444 444 444 444 444 278 278 278 278 500 500 500 500 500 500 500 675 500 500 500 500 500 444 500 444 ] >> endobj 50 0 obj << /Type /FontDescriptor /FontName /MPMVYX+Times-Italic /FontBBox [ -169 -217 1010 883 ] /Flags 32 /CapHeight 653 /Ascent 883 /Descent -217 /StemV 76 /ItalicAngle 0 /XHeight 441 /FontFile3 114 0 R >> endobj 51 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm9 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 5.48828 351.7168 14.33862 361.20459 ] /Length 52 0 R /Resources << /ExtGState << /R1 4 0 R >> >> /Group 53 0 R >> stream 1 g 0 i /RelativeColorimetric ri /R1 gs 5.4883 357.0415 m 8.3933 357.8999 12.0308 359.4541 14.3386 361.2046 c 12.2998 356.5776 l 13.6924 351.7168 l 11.6431 353.7642 8.25 355.7979 5.4883 357.0415 c h f endstream endobj 52 0 obj 202 endobj 53 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 54 0 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 55 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm10 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 216.1709 337.92676 225.021 347.41455 ] /Length 56 0 R /Resources << /ExtGState << /R1 4 0 R >> >> /Group 57 0 R >> stream 1 g 0 i /RelativeColorimetric ri /R1 gs 225.021 342.0898 m 222.1162 341.2314 218.479 339.6772 216.1709 337.9268 c 218.21 342.5537 l 216.8174 347.4146 l 218.8662 345.3672 222.2593 343.3335 225.021 342.0898 c h f endstream endobj 56 0 obj 212 endobj 57 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 59 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm11 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 5.48828 337.92676 225.021 361.20459 ] /Length 60 0 R /Resources << /ExtGState << /R1 4 0 R /R5 54 0 R >> /XObject << /Fm9 51 0 R /Fm10 55 0 R >> >> /Group 61 0 R >> stream q /RelativeColorimetric ri /R5 gs /Fm9 Do Q q /R5 gs /Fm10 Do Q endstream endobj 60 0 obj 64 endobj 61 0 obj << /Type /Group /S /Transparency /I false /K true >> endobj 63 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm12 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 11.47559 342.00098 219.03418 357.13037 ] /Length 64 0 R /Resources << /ExtGState << /R1 4 0 R >> >> /Group 65 0 R >> stream 0 G 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 219 342.5 m 11.5095 356.6313 l S endstream endobj 64 0 obj 96 endobj 65 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 66 0 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 67 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm13 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 5.48828 351.7168 14.33862 361.20459 ] /Length 68 0 R /Resources << /ExtGState << /R1 4 0 R >> >> /Group 69 0 R >> stream 0 g 0 i /RelativeColorimetric ri /R1 gs 5.4883 357.0415 m 8.3933 357.8999 12.0308 359.4541 14.3386 361.2046 c 12.2998 356.5776 l 13.6924 351.7168 l 11.6431 353.7642 8.25 355.7979 5.4883 357.0415 c h f endstream endobj 68 0 obj 202 endobj 69 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 71 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm14 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 216.1709 337.92676 225.021 347.41455 ] /Length 72 0 R /Resources << /ExtGState << /R1 4 0 R >> >> /Group 73 0 R >> stream 0 g 0 i /RelativeColorimetric ri /R1 gs 225.021 342.0898 m 222.1162 341.2314 218.479 339.6772 216.1709 337.9268 c 218.21 342.5537 l 216.8174 347.4146 l 218.8662 345.3672 222.2593 343.3335 225.021 342.0898 c h f endstream endobj 72 0 obj 212 endobj 73 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 75 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm15 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 5.48828 337.92676 225.021 361.20459 ] /Length 76 0 R /Resources << /ExtGState << /R1 4 0 R /R6 66 0 R >> /XObject << /Fm12 63 0 R /Fm13 67 0 R /Fm14 71 0 R >> >> /Group 77 0 R >> stream q /RelativeColorimetric ri /R6 gs /Fm12 Do Q q /R6 gs /Fm13 Do Q q /R6 gs /Fm14 Do Q endstream endobj 76 0 obj 85 endobj 77 0 obj << /Type /Group /S /Transparency /I false /K true >> endobj 79 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm16 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 224.47559 337.60303 233.29297 347.0957 ] /Length 80 0 R /Resources << /ExtGState << /R1 4 0 R >> >> /Group 81 0 R >> stream 1 g 0 i /RelativeColorimetric ri /R1 gs 224.4756 342.8623 m 227.3735 343.7437 230.999 345.3267 233.293 347.0957 c 231.2905 342.4526 l 232.7217 337.603 l 230.6563 339.6338 227.2471 341.6406 224.4756 342.8623 c h f endstream endobj 80 0 obj 214 endobj 81 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 82 0 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 83 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm17 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 589.96094 316.11035 598.77832 325.60254 ] /Length 84 0 R /Resources << /ExtGState << /R1 4 0 R >> >> /Group 85 0 R >> stream 1 g 0 i /RelativeColorimetric ri /R1 gs 598.7783 320.3433 m 595.8804 319.4619 592.2549 317.8789 589.9609 316.1104 c 591.9634 320.7529 l 590.5322 325.6025 l 592.5977 323.5718 596.0068 321.5649 598.7783 320.3433 c h f endstream endobj 84 0 obj 217 endobj 85 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 87 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm18 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 224.47559 316.11035 598.77832 347.0957 ] /Length 88 0 R /Resources << /ExtGState << /R1 4 0 R /R7 82 0 R >> /XObject << /Fm16 79 0 R /Fm17 83 0 R >> >> /Group 89 0 R >> stream q /RelativeColorimetric ri /R7 gs /Fm16 Do Q q /R7 gs /Fm17 Do Q endstream endobj 88 0 obj 65 endobj 89 0 obj << /Type /Group /S /Transparency /I false /K true >> endobj 91 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm19 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 230.47021 320.20654 592.78369 342.99902 ] /Length 92 0 R /Resources << /ExtGState << /R1 4 0 R >> >> /Group 93 0 R >> stream 0 G 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 592.7539 320.7056 m 230.5 342.5 l S endstream endobj 92 0 obj 99 endobj 93 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 94 0 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 95 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm20 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 224.47559 337.60303 233.29297 347.0957 ] /Length 96 0 R /Resources << /ExtGState << /R1 4 0 R >> >> /Group 97 0 R >> stream 0 g 0 i /RelativeColorimetric ri /R1 gs 224.4756 342.8623 m 227.3735 343.7437 230.999 345.3267 233.293 347.0957 c 231.2905 342.4526 l 232.7217 337.603 l 230.6563 339.6338 227.2471 341.6406 224.4756 342.8623 c h f endstream endobj 96 0 obj 214 endobj 97 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 99 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm21 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 589.96094 316.11035 598.77832 325.60254 ] /Length 100 0 R /Resources << /ExtGState << /R1 4 0 R >> >> /Group 101 0 R >> stream 0 g 0 i /RelativeColorimetric ri /R1 gs 598.7783 320.3433 m 595.8804 319.4619 592.2549 317.8789 589.9609 316.1104 c 591.9634 320.7529 l 590.5322 325.6025 l 592.5977 323.5718 596.0068 321.5649 598.7783 320.3433 c h f endstream endobj 100 0 obj 217 endobj 101 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 103 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm22 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 224.47559 316.11035 598.77832 347.0957 ] /Length 104 0 R /Resources << /ExtGState << /R1 4 0 R /R8 94 0 R >> /XObject << /Fm19 91 0 R /Fm20 95 0 R /Fm21 99 0 R >> >> /Group 105 0 R >> stream q /RelativeColorimetric ri /R8 gs /Fm19 Do Q q /R8 gs /Fm20 Do Q q /R8 gs /Fm21 Do Q endstream endobj 104 0 obj 85 endobj 105 0 obj << /Type /Group /S /Transparency /I false /K true >> endobj 107 0 obj << /Type /Group /S /Transparency /I false /K false /CS /DeviceRGB >> endobj 109 0 obj /DeviceRGB endobj 110 0 obj << /Filter /FlateDecode /Length 111 0 R /Height 108 /Width 128 /BitsPerComponent 8 /ColorSpace 109 0 R >> stream H‰ì—¿kMÇÿ’´Ö") ¤+[AAl+­ABŒI@ß@ð’³I"šB4)#HâöGò'ÜûeŸ7ü³»ÏÎÎÌ3·{™OqÜíÞÎ<û}~Î`ø³³³a›p9<<<99Á—±±±GÙ<²¶¶&kÓÕ²C|õ³ÓéàÊÅÅóÈÎÎÎÛ |‘6o„!å ¥æõñO ÃFù2å¸ËôD~¯× nØÈU¡¼e“å Ñññ1⟡lyT“µ§ÌSççç©[r˜áö,Ÿ­su=†ÊÞç°Ï °§0kh ‚ >ëKSW^ÃAÎ"›&kIa/†ò䂦µ9Ÿ¬WŒµJw­&딇Р¤7²‡¢·n›³Aù” iúÄîƒ,‘ ¯7ä&Q½ !çÃ[NyÅîînþâÐës@/ïC1@Aõg(8`s¯¼½½Ó€‹ õâ£dLOOG3cå{„W¹ž ˆl‰‘k4…v»Ýh˜Ú\œ½Êv7'wÄ1åNO^¯÷äÉÄ?¼gwé6ÇÀ7ÙaC´`dA„AÈp}L,›,þ§é» ò ø‘¢;+ºHyû­Ï2 ÊÈwêÂq¶‹ƒó|ÁX_7Œê¿P Š/~a“­Eœ,PøðBð*_üP'Yi Ht;¡?U¡€[Dn¸‡”¶?omÀS@̶oÍ_]ª?¡RÀH.9œ›¬=ÑJ(\€F¤ D°Ù¿ÉÚo$KjeTÄh ÅŸB$]6Iù8ùEȽ‘ªÒa呃l"r[PºòDV^ßWhe•Â*æ}‚_ÎN½ÉþŸSVœq³ ‰5÷ööö÷÷•àÆÈ5„\vˆ†–úÞétœã?¸…P~kkëçÏŸöªRwÐJ.”µPÁ.€D¨»HXó ã·oßóεE"„R@·siiiuuÕa‘€¶a©/_¾ø{“r!`wˆÓè€D@Ø×¢ ú#PêÆÖ (šP Zh?…ú[E=ôïß¿ 4`Ü é¯/«ÎbøŒ`”¡*asv8==]\\\^^^½d~~~eeess³r—&»Àxq5žgðÏ:Ÿ¹¨>+Y*ß ÊCðßEÀà™™™££#æñP.D ¾“ayp³Ç˜OøEúýþ‹/`L¡ø x‡O„ ÒIèŸì»p]{òóyedNMMñÊ+ºÝ®´ œó¡P^Få³öoDM¶î •‘odSˆ‚T!‰ȯIõ‡/A–¯£šlþœÂŒè?~ü@H+m_¾|y÷îÝïß¿ë‚ãâ;w666Ô•ÙÙYÆõâ” RŸL®´Äh²uW€’ºÔ7oÞœœœ|úô©~qbb?~<кIÙã(>ÆØS«þÐ-KˈÐl 3h¼1<ˆ+ªƒ¼yóaïÓÓÓ–ñú;‡eÿ%æçç+-÷|ñ€¸)öööHyÔ[ãV¥…ü଼þ–ó'ƒ@¿ßwÛ½’†ÔÿOŸ>áóÙ³g×®]£²Gàsii *ñ5ÍAÿZ ûPľo¨Çó¸Å¿2#ÿƒËºT|¤ÿ4¢¿þ Eú»ác†ñ, N ´ŒÕrîÝ»GŸŒ›DGÐàú»ÍcõG_Ö§#>þ1m...Þ¸qÍ<‚nkøèùóçFÆéõ°ú;” 3Î2è;N p@Sw?þìY|p|ÈïXVýÊxñ2"ë¯?N'5ýÖééi·ÛÕõ|ÿþ=/ø?êç‡ü-/óK™ûÜÚè k …=´Ò<·íŒÇ!>\`ÜE…QbÞ¿ÿÖ­[8‚1úg¨ŸN§l_=õ<-7@±I+ÅíÛ·áJ<ˆ~‡Ñ:”µ§£Yþî‚Ó¬qìâ㹃 r6•°Ð$û,yøð!ÅÉEFÝÇ=Í@¶bÓóŒü]ˆ6Êk^ÆÜÜœÙkkkù|´<þ–ð+`ªq…”™üm& ŒUÈJ7›câ65éðï‚Ð[ª%¯^½rÞÑßæÈH¿Îææ¦1ñÌÌÌôûý²Õü¦ÒàÈøC]€ù1Žf6âcægμA¬õŸÂ$*Y^^®ìų³³¼øA¤kTðþ&Ù”h‹©½5¯<Ú4 Lٱ܆‘Ô`œðÂúú:ζ+++h¼ò åİTpKäJk¨ m`ð¡ îF@ÑF^ÿAæ‚€Þ X.B¥¹Á #\à“öaS©±ÁO7¡®[Iùà]²ÉÁ¯ˆÒ³RRr–„òDß5R9¢Ñ3i+‚ŸhEœÔ¢™3r3ü°h]DµÎ`†UÑpA»*N{-×iuµ½´Z|¢½.hiÙÏÓÆi£Í xeÁˆ‰O´¥¡æžøôoòDÙG áò4öa U‹šfOð¾MH„†˜1,ðîÃÊzª„W-ìó1½€ÿüùsuª½ äéR@Õ&)Ï@^+‘rnª6–(Å|NCp¢„7¯JF#’óácl J®¶9‰D"‘H$‰D"‘H$‰D"‘HŒÿ 0 à!{ endstream endobj 111 0 obj 2119 endobj 112 0 obj << /Filter /FlateDecode /Length 113 0 R >> stream H‰äWÛnÛF~¾Ã\&Xh8稭xm‚¸–Ð׬L)ìêàRtÓôé÷ûyÊ–å¤{Q0 YâÇ™ÿ|̧»Åý¦Ü6³²¹¿{ó&¿,VåǺZU[v­dd4»É¯î×e=à%·x-¾nÞ¾eÓË,_|)kP˜Wͺd¯ÚG&_ç?Uûê M}_²ü².¯ÊÏýÓ»Ûª)_VÛ¦¼íŸ¦Õfƒ‡e±Þãé|·ÞÕI(e˜VÞæ¬ÕàŸ/×EÓ±ëÏÎëb»¿+êr»øÒcòlzžIFõ*Œþ®þḬ̈~Åç{v}#Ø-Ëò«”«ßË–wµ)›ºZ°ºÂ ÉV{f¼â6f×Áh¶ÉβßX~¥ée~±1lºË~|…ê Xk¹VA2ã7J1¡¸±Ö1«ðÒ;É´•ÜjÀØs-<¥xÐÆ²E¶ÌLÔ'4wÁYP Ò.Ï´ \Gb/y´×%AAËöž ËöåÓZqè•Åðq6°uf‚!!ˆôÜ oó‘G©]ËÐ[04^Cî [ÄyرP‹ì  <éãDaéIØ( A+{˜è¸‘@V+³BratwDgHÚÉ``ŠGIá/˜ŒYzE‡I˜2ÀÊ1ry3p=ÂKX®´ŽìXªNÚk©º@±Zs¯elM£à—M6ËŒ0\’M-ØzÕê2ËàZ®¬‰L8ɵNRÑC3È%ñ–4 –ï,e„+­eJA‹W Yd¸&¢Q#4q;•"ÚÆ%€"'ª@‚ jBæ "™KÍÈ*!‹L9²ÎÁ!-o•£Prž4–Ö î½5mLö™ô¢´†“P„±TÜQ6XIñ bÆRÎdºv°Ž×#r y”ÜÁ~Œ+ÄcIIGa÷ؼdû‚H¼–Š’G9p„É7½748Ô!äö•S‚T_ HT¨¦‚Á†ˆÕE9†ÌäÁ“DÊ@»Fd‘I’Ò’¨ (Yj$”Ä×ÌH8\Ë@È8Ç%^Ü‚0dJX’;:ÖŽjÈY¦ ¬îP4š©ƒÚ.Òu'´)‰ãeEä†òQ·5î¤~óð §IAE»uœ ”e„b ®š)Kü ¤%<ØG>eÛ€À(º¶1é(r@ Q‘~À Nt(ž‰’ш'ÜÈ/!0á Õxj| t¤\W„z÷ T|† Ph¼‡ÿ),3¤¸“!äê@©CÚHaê$WÒÂ6(RH9" ‹†gN¡BDO=QJHÏׄqD ‡²Dˆ&eŒÙ%„ØõB§’à‰Òcíºm¼<Íg™’<Ú ‚¤š¢…¾«I­2˜ˆæ§’ʺít‚ªtRF ÌHT˜zB#00£l0]‘%B2hï‰]BÀnj<5ˆ=V­O÷¦1|,¶ þ‹‘æÈ ©¯Ñd¤é8¶5}KTíЀDÇBüàŒè&Ô* éyu±Ç»X¹ØHÛ‚´Âpº×K4@B÷„ŽUëüÒT†—– »íJP5Øb¨#Š:ºLˆ²ß¤HBšÇ0—Ù¡žö˜NYšZ\< 4"=?º—0Ë­¡‰kvw{v}Ó]:›cw~AVœ/ñ4_пÏô¯Æ"Û³¦sÃïG&˜o²WÅëù¯Ð`Bºw›½Ê xBÕý½ØýÑîzÔøÿ!qE´ÞÍ]n°€iï+öí*ñ¤÷Ð߬ £ÆB6é¿{ÔÂùÊ ÿ ‡ÁLû×¼ú¾ÚT͇¢^U[6±ÑM}_²ü?»úÏØ1 Sl{ -5úèØz{ãîøv8J/¾5!ûÝuΡMµsοGî›<>Ñú ¿P]”Ы‡W‡ÇE÷hÚ!`÷ðý¾{Ôa üó«°§ý©`BrØ^óËå¾lØ„æ ãYþ¾,(¯ÆóºXü—y:‰¨Þ TL$@†DŠC“Åi@%c%vwØr#…§¡ºi„lí|{BÌä÷^L1 (DOF/Y+ÓW½ïH]`“ ÷Of¢AÉC˜¡xè3 ¯$­Š¨¦Á@a0¢9*ïXç°µ!:½scb>£pGúäŽ]Ŧ|vÒú–øÏ¯‡AÞʇSÁÖÝ9(ùÇíeÑ|:QË'ðZCÆ@=dýà *ðþ‰" [QSó@  €²xÄ>‹6ã-®³í3Êx% ô³ì7–_i¶Ú³übƒ;Ýe?>Äl‡=Û$,ˆIš¦„È 9òÿ/eâÉJvœ=Š—â‰Â•_IÒâ©fr,19ù7øÑa1ˆ%±ùv^¦€Þ4Âî”8%; «N‹]Ku#Ø-´§úa0x(Éã_‰tÄR¤)H°\i.÷UOÂâOYø˜YxñØÂÏ ƒ»jìß0ñ|Å µ‹½ÓbìüvšôùŸeùú endstream endobj 113 0 obj 2179 endobj 114 0 obj << /Filter /FlateDecode /Length 115 0 R /Length1 1288 /Subtype /Type1C >> stream H‰,P}Lw¾k{DOä¬ÎïŽeQPÁ*s€S£¢Qt |lâŠ@Še--׃ò©%”vCùÐI-£`B™ls*Š6\LŒQˆ‰:ÝÐ}$[¶Ì¼W,ÙÁöþñäÍ“÷yò¼ŽÉ$Žã‹“ö'}p0cuºÞ¨³D%òZƒ>o–_%¨0! –KZ*,•ÑÏ>Ìž/A›‘ñµãuçÂТá0ÙT(&Ãñ@ß•ëjõúhµZ`2—sú‚#<‘É®‹Û°fcç0~ãÕs3‡±ì¶|S®ŽM+·ð:£…M,Ê3qf§åuùÑ,»Í``SgÝ,lªÎ¢ãJEv.*«·°Z–ç´ù:£–ûˆ5fßÓ™ør³.j·NTmÛÅj‹òך8V/Š-%¹}¾^Ëéu–ÿ þûunÇÄ Âæa!…mÇv`;±]Ø~, +¤"q scâeø˜D#™’.—ºXÒâÓzÁziœÊ” ÐÀBç÷”·Ývd4冰ßR9G]ÚƒÖnFj¯ÜëD+~Gq´h°ÎŠƒy\zíV@ƒ 6BŠ–˜aqÑe¢'½;‚UÆT¢ù¹ˆ¤³ÐÒ”äìC䦦RÿV+¾G8 …»þhÅ ùÏVbB.þ­éœÎMà‚ä™Tx EAE¥9Q…ROÊ!Ò ïÐ=åô—áZZÔïÓ;ámÿj|Z5uu_Ra} bQ$ƒ#ž¨7Òv]sC »¬¡î§1ápSýT¦Ev–•«RÕÖ5·ô¿„_š>eìMÕŸloh¨É&å½ …=9*´ E¡}heQÓú?jàÖhO˜O‰ÊdG ¯¬p_ºüÅàƒ[ôLp›bzÌâûTÿùÞ2Md$2„‹saÇ(C>· Œï{Üs)üõJ‘W™»O•lšúmvÂ’ŽNGSQUW¬ä]Õ^oWGo?7‹"-GËžpwþþþ¡ÏK“GG3†…EÝåî°†ºžCÒ¤ÝE•@ì—ŠdçM÷‹_Á²kÎl…D¢Ô5 uF(4Z+oUÕÔ¶¸ÎÂaËeØÎ8NTI†-Þá¬øîx‹ƒWVÛ¹Zƒb‰®zû@š £-h/Z}À“ø„¡JGÆÜ ¹?[@í‘zžW–¶r_ܹvï2MnByá‘ʺp´rRxû‘ô‚À*¦å13qD^m1"÷ªŽÙ[[™ÓmN·Ò[|¦ú8]ÐèÔ5(5s´_Ac°È^æ>L€Ë›}Âä7Úú`çcÕ™SõµŒ­ÆY¢´5›}Ý•C (ô Ч˜^+'m!ÚƒþzžJá¤@+Äî6 •qCɯ –C",¼kxŒ{©b¸+û+æEòƒÆÁ›0ïh@Æ>›§hX êºCŸ¸:Ùs–rS™ƒ°BA¹­(†8+§2O7Ÿ8Õ®¢Üç/–õ©Æ~öÎü€ÈŸn+¯ûÚºhê³;çRROе‹·îN`ˆj95P먫©5F«;K^ý®ÙÁ«•…•š´•/¯Øi²¼ÃîFŽ3p¬Ež¦þD@u»U;*=g ¸Zgª>òÍ› ƒ_ñ¯îé9© endstream endobj 115 0 obj 1238 endobj 116 0 obj << /Filter /FlateDecode /Length 117 0 R /Length1 750 /Subtype /Type1C >> stream H‰,ILQ‡ßPf¨[YjãB wbÑÄå€$Æ-j„(j -R:C[JJMZ `´`«´@'È(& FƒzКx3.ñ¢q;éŘÿƒ§‰@¼|‡ïð[(”š‚(ŠRUÔTVÖTçW8›ëxnÁlÂ9çRX›‚µ ¼*• 3soç|4Í€“éPŸ94Ëg!š¢eúAÏ zÁ¤Óêt;ËyÁi1o´±[êóØ¢ÒÅ ,YdéKu‹,aË |‘­pZmÆf+{Ð\Ï[Þ¢· …lDZ‹1VÖb´-öyù!BLþÖmÛõBË‘Œ2šòS(mþ R Íh:F)5Ǫbvð')$Àãâ%b%ˆÄŸ?ˆI"‚7Mž$Â1E<Kþ‰1ª=WìT‚ŠN 4ÌÐçÒð·€VÁúÀ;\ØÚ|üªÀ<äh:®ÒG ŽNC6¨†ÚÀü^ +Ê^®Û±õ4ÉoÎùè§ÒøëoÙ&Õ–TnÈ[¯%…¤”öâœùvÙy›{ƒó¦.¶eÝû…ÏEÕ“ê(öc·æ0ÙOw1êIßÏ]GÂ6mLÔöéƒÇ/röòSB•¸¯¤=;lŠ[§\/ÌC3_ƤWÑ1¥ºväP¤qÄ6è’.Ë’,]¿Ó3Ôû|µ“éêèn²Û9®eTìw yâ—A¼^MÈOzÒÛ$œjsµ:l—\=BoǵVÉ:"&|câ3ÿ³`2ø$|ÿVBŠFŸ»Æ.É-‘å¨>´7X£T¹¿ÃûO¼|™1|Æ5.Rì«êÞ}ð&|>ÖñÊŽ©þá°ýYœáx«KÛ¬ë|e”‰MБ‰g?dÌÄéÓ›mnû¯Ûáî3]µ·ÊÁD߀Ô7~:)8¦T9†f‹È™Ì÷¥—ᙕ0«ù'À1.MÊ endstream endobj 117 0 obj 749 endobj xref 0 118 0000000022 65535 f 0000000016 00000 n 0000000069 00000 n 0000000133 00000 n 0000000620 00000 n 0000000729 00000 n 0000000885 00000 n 0000000964 00000 n 0000001168 00000 n 0000001205 00000 n 0000002681 00000 n 0000009456 00000 n 0000026402 00000 n 0000026425 00000 n 0000028470 00000 n 0000028492 00000 n 0000028915 00000 n 0000028936 00000 n 0000029012 00000 n 0000029093 00000 n 0000029557 00000 n 0000029578 00000 n 0000000026 00001 f 0000029654 00000 n 0000030115 00000 n 0000030136 00000 n 0000000038 00001 f 0000030212 00000 n 0000030600 00000 n 0000030620 00000 n 0000030695 00000 n 0000030776 00000 n 0000031221 00000 n 0000031242 00000 n 0000031318 00000 n 0000031399 00000 n 0000031863 00000 n 0000031884 00000 n 0000000042 00001 f 0000031960 00000 n 0000032421 00000 n 0000032442 00000 n 0000000046 00001 f 0000032518 00000 n 0000032906 00000 n 0000032926 00000 n 0000000058 00001 f 0000033001 00000 n 0000034190 00000 n 0000034415 00000 n 0000035635 00000 n 0000035864 00000 n 0000036305 00000 n 0000036326 00000 n 0000036402 00000 n 0000036483 00000 n 0000036936 00000 n 0000036957 00000 n 0000000062 00001 f 0000037033 00000 n 0000037388 00000 n 0000037408 00000 n 0000000070 00001 f 0000037483 00000 n 0000037822 00000 n 0000037842 00000 n 0000037918 00000 n 0000037999 00000 n 0000038441 00000 n 0000038462 00000 n 0000000074 00001 f 0000038538 00000 n 0000038991 00000 n 0000039012 00000 n 0000000078 00001 f 0000039088 00000 n 0000039478 00000 n 0000039498 00000 n 0000000086 00001 f 0000039573 00000 n 0000040030 00000 n 0000040051 00000 n 0000040127 00000 n 0000040208 00000 n 0000040669 00000 n 0000040690 00000 n 0000000090 00001 f 0000040766 00000 n 0000041127 00000 n 0000041147 00000 n 0000000098 00001 f 0000041222 00000 n 0000041565 00000 n 0000041585 00000 n 0000041661 00000 n 0000041742 00000 n 0000042199 00000 n 0000042220 00000 n 0000000102 00001 f 0000042296 00000 n 0000042759 00000 n 0000042781 00000 n 0000000106 00001 f 0000042858 00000 n 0000043255 00000 n 0000043276 00000 n 0000000108 00001 f 0000043352 00000 n 0000000000 00001 f 0000043445 00000 n 0000043474 00000 n 0000045737 00000 n 0000045760 00000 n 0000048019 00000 n 0000048042 00000 n 0000049391 00000 n 0000049414 00000 n 0000050273 00000 n trailer << /Size 118 /Info 5 0 R /Root 1 0 R >> startxref 50295 %%EOF ctsim-6.0.2/doc/divergent.ai0000644000175000017500000032047210667176710014742 0ustar kevinkevin%PDF-1.4 %âãÏÓ 1 0 obj << /Type /Catalog /Pages 2 0 R >> endobj 2 0 obj << /Type /Pages /Kids [ 3 0 R ] /Count 1 >> endobj 3 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 2 0 R /Rotate 0 /PieceInfo << /Illustrator 26 3 R >> /LastModified (D:20010212121952-06'00') /ArtBox [ -66.95996 229.06055 678.95996 562.93994 ] /Group 50 2 R /Thumb 54 2 R /TrimBox [ -69 146 681 646 ] /Contents 56 2 R /Resources << /ExtGState << /R1 25 3 R >> /Font << /F1 48 2 R >> /ProcSet [ /PDF /Text ] >> >> endobj 5 0 obj << /CreationDate (D:20010208005235-06'00') /Creator (Adobe Illustrator 9.0) /Producer (Adobe PDF library 4.800) /Title (divergent.ai) /ModDate (D:20010212121952-06'00') >> endobj 25 3 obj << /SA false /OP false /op false /AIS false /ca 1 /CA 1 /BM /Normal /HT /Default >> endobj 26 3 obj << /Private 27 3 R /LastModified (D:20010212121952-06'00') >> endobj 27 3 obj << /CreatorVersion 9 /ContainerVersion 9 /RoundtripVersion 9 /AIMetaData 34 2 R /AIPrivateData1 35 2 R /AIPrivateData2 36 2 R /AIPrivateData3 38 2 R /AIPrivateData4 40 2 R /AIPrivateData5 42 2 R /AIPrivateData6 44 2 R /AIPrivateData7 46 2 R /NumBlock 7 >> endobj 34 2 obj << /Length 1437 >> stream %!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 9.0 %%AI8_CreatorVersion: 9.0 %%For: (Kevin M Rosenberg) ( ) %%Title: (D:\\ctsim\\doc\\divergent.ai) %%CreationDate: 2/12/2001 12:19 PM %%BoundingBox: -67 229 679 563 %%HiResBoundingBox: -66.96 229.0605 678.96 562.9399 %%DocumentProcessColors: Black %%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0 %%+ procset AGM_Gradient 1.0 0 %%+ procset Adobe_ColorImage_AI6 1.3 0 %%+ procset Adobe_Illustrator_AI5 1.3 0 %%+ procset Adobe_pattern_AI5 1.0 0 %%+ procset Adobe_cshow 2.0 8 %%+ procset Adobe_shading_AI8 1.0 0 %AI5_FileFormat 5.0 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) %%+ Options: 1 16 0 1 0 1 0 0 0 0 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 2 3 4 %%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 () %AI3_TemplateBox: 306.5 395.5 306.5 395.5 %AI3_TileBox: -56 -133 530 633 %AI3_DocumentPreview: None %AI5_ArtSize: 750 500 %AI5_RulerUnits: 2 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI9_OpenToView: -358 859 1 1345 943 26 0 1 11 68 0 0 1 1 1 0 %AI5_OpenViewLayers: 7 %%PageOrigin:-56 -133 %%AI3_PaperRect:-13 779 599 -13 %%AI3_Margin:13 -13 -13 13 %AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 0 %%EndComments endstream endobj 35 2 obj << /Length 6379 >> stream %%BoundingBox: -67 229 679 563 %%HiResBoundingBox: -66.96 229.0605 678.96 562.9399 %AI7_Thumbnail: 128 60 8 %%BeginData: 5928 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD91FFA8A8FFFFFFA8A8A8FD07FFA8FD32FFA8A8FFFFFFA8FD07FF %A8FFFFFFA8A8FD2BFF52FFFD04A87DA87DA8FFA87DFFA8FF7DA8A8A87DA8 %A8A87DFFA8FD27FF7DFF7DA8A8A87DFD09A8FFA87DA8FFFD05A87DA8A8A8 %FD1FFFFD047D527D527D7D7D527D527DFFA8FD047DA87D7D527D7DFF7DFD %26FFFD067D527D527D527D527D527DA8FF7DA8527D7DA8FD047DA8A8A8FD %22FF7DFD17FFA8FD29FF7DFD06FFA8A8FD11FFA8FDACFFA8A8A85227A8FD %3AFFA8A8A87DA85227A8FD34FF7DA87DA8FD3CFFA8A87DA8FD39FFA8A8A8 %FD3EFFA8A8FD3BFFA87DFD3FFFA8A8A8FD3AFFA8A8FD40FFA8FD3CFF7DA8 %FD3FFFA8A8FD3CFFA8FD41FFA8FD3CFFA8FD27FFA8A8FD17FFA8A8FD3CFF %A8FD26FFA8A8527DFD17FFA8FD3CFFA8FD24FFA87DA8FFFFFFA8FD16FFA8 %FD24FF52FD17FFA8FD23FFA8A8FD04FFA8527DFD15FFA8FD23FFA8A852A8 %FD36FFA87DA8A8FFFFFF7DA87DFFFFA8FD36FF7DA8A8FFFFFF277DFD33FF %7DA8A8FFFFFFA8A8A8FD04FF7D7DFD33FFA8A8A8FFFFFF7DA8A8FFA8FD30 %FF7DA8A8FFFFA87DA8A8FFFFFFA8A87DA87DA8FD30FF7DA8A8FFFFA87DA8 %A8FFFFFFA85252FD2CFFA8A8A8FFFFA8A8A8FD04FFA8A8A8FD05FFA8FD2D %FFA8A8A8FFFFA8A8A8FD04FFA8A8A8FD2CFF7DA87DFFA8A87DA8FFFFA8A8 %7DA8A8FD04FFA87DA8277DFD2AFFA8A87DFFA8A87DA8FFFFA8A87DA8A8FD %04FFA8277DFD25FFA8A87DFFA8A87DFFFFA87DA8A8FD04FFA87DFD04A8FF %FFFF7DFD27FFA8A8A8FFA8A8A8FFFFFFA8A87DFD04FFA8A8A87DA8FFFF7D %FD22FFA8A87DFF7DA87DFFA8A87DA8A8FFFFA87DA87DA8A8FD06FFA8277D %FD24FFA8A87DA87DA87DFFA8A87DA8A8FFFFA87DA87DA8A8FD06FF7D7DFD %1EFFFD0BA8FFFFFFFD04A8FD05FFFD07A8FFFFA8FD21FFFD07A8FFA8A8A8 %FFFFFFFD05A8FD05FFFD06A87DA8FD1BFFA8A87D7D7DA87DA87DA8A8A87D %A87DA8A8FFFFA87DA87DA87DA8A8FD08FFA8FFFFA8FD1BFFA8A87DA87DA8 %A8A87DA8A8FF7DA87DA8A8FFFFFF7DA87DA87DA8A8FD07FF7DFFFFFFA8FD %14FFA8A8FD047DA8A87DA8A8A87DA8FFFF7DA8A8A87DA8A8FD06FFA8A8A8 %7DA8A8A87D527DFFFFA87DA8FD08FFA8FD0EFFA87D7DA8A87DA8A8A87DFD %04A8FFA8A87DA8A8A87DFD06FFA87DA8A8A87DA87D52FFFFFFA87DA8FFFF %FFA87DA8FD0AFFA8FD077DA87DA87DA87DA87DA87DFFFFFF7DA87DA87DA8 %7DA87DA8FD09FFA8FFFFA87DA8FD07FFA87DA8FD0AFFA8FD057DA87DA87D %A8A8A87DA87DA87DFFFFFFA8A87DA87DA87DA87DA8FD08FFA8A8FFFFA87D %A8FD0DFFA8FD057DA87D7D7DFD0EA8FD0AFFFD08A8527DFFFFFFA8FD13FF %7D7D7DA87D7DA87D7DFD0EA8FD0AFFFD08A8527DFFFFFF7DFD04FFA8A8A8 %FD04FFA8FD05527D527D527D7DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA8FD09FFA8FFFFA8A8A8FD07FFA87DA8FD04FFA8525252 %7D527D52FD047DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA8FD09FFA8FFFFA87DA8FFFFFFA87DFFFF27F8FD0427FD0452FD0A7DA8 %7DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A87D7DFF %FFA87DFD08FFA87DFFFF52F827F82727FD0452FD0A7DA8A8A87DA8A8A87D %A8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87D7D7DFFFFA87DFD04FFA8 %7DA8FF7D27F8272752527D527D52A87DA87DA87DA87DA87DFD1BFF7DA8FF %FFA87DA8FD07FFA87DA8FF2727F82727FD04527D7DA87DA87DA87DA87DA8 %7DFD1BFF7DA8FFFFA87DA8FFFFFFA87DFD05FFA87D525252FD067DFD1BA8 %FD08FFA8FD0CFFA87DFD05FFA87D525252FD067DFD06A8FFFD14A8FD08FF %A8FD08FFA87DA8FD07FFA87D527D527D7DA8527D7DA87DA8A8A87DA87DA8 %7DA87DA87DFD0AFFA87DA87DA87DA8277DFFFF7D7DA8FD07FFA8A8A8FD07 %FF7D7D527D527D52A87D7D7DA87DA87DA87DA87DA87DA87DA8A8FD0AFFA8 %7DA87DA87DA8277DFFFF7D7DA8FFFFFFA8A8FD0BFFA8A87DA87DA87D7DA8 %A87DA8A8A87DFD04A8FFFFFF7DA8A8A87DA8A8A87DA8FD08FFA8FD0CFFA8 %7DFD0BFF7DA87DA87DA87D7D7DA8A8A87DA8A8A87DA8A8FFFFFFA8A87DA8 %A8A87DA8A8A8FD08FFA8FFFFFFA8FD04FF7DA8A8FD0DFF7DA852A87DA87D %A87DA87DA87DA8FFA87DA87DA87DA8FD07FFA87DA87DA87DA8277DFFFFA8 %7DA8FD07FF7DA8A8FD0DFF7DA87DA87D7D7DA87DA87DA87DA8FFFF7DA87D %A87DA8A8FD05FFA8A87DA87DA87D7D27FFFFFFA87DA8FD16FFA8A87DFD06 %A8FFFFFD05A8FFFFFFFD06A8FD09FFA8FFFFA8A8FD1BFFFD0AA8FFFD04A8 %FD05FFFD06A8FD07FFA8FFFFFFA8A8FD1AFF7DA87DA87DA8A8A87DA8A8FF %A8A87DA87DA8FD04FFA8A87DA87DA87DA87DA8FFFF7DA87DFD1CFFA87DA8 %A8A87DA8A8A87DA8A8FFA8A87DA87DA8FD05FFA87DA87DA87D7D7DFFFFFF %7D7D7DFD1CFF7DA8A8A87DA8FFFF7DA8A8A8FFFFFFA87DA8A8A8FD06FFA8 %527DFD25FFFD07A8FFA8A87DA8FFFFFD04A87DA8FD06FF52A8FD25FF7DA8 %A8A87DA8A8FFA8A87DA8A8FFFFFFA8A87DA87DA8FFFFFFA8FD27FFA87DA8 %A8A87DA8A8FFA8A87DA8A8FFFFFFA8A87DA87DA8A8A8FD29FFA8A8FFFFA8 %A8A8FFFFFFFD04A8FD05FFA8A8527DFD2AFFA8A8A8FFFFA8A8A8FFFFFFA8 %A8A8FD06FF527DFD2BFFA87DA8FFFF7DA87DFFFFFFA8A87DA8A8FD04FFA8 %FD2DFFA87DA8FFFFA8A87DFFFFFFA8A87DA8A8FFA8FD2FFFA8A8A8FFFFA8 %A87DA8FD04FFA8A87D7DA8FD30FFA87DA8FFFFFD04A8FD04FF527DFD32FF %A87DA8FFFFA8A87DA8FD04FF7D7DFD33FFA87DA8FFFFA8A87DA87DA8A8FD %35FFA8A8FD04FFA8A8A8FFFFA8FD36FFA8A8A8FFFFFF7DA8FD38FFA8A87D %A8FFFFFFA8277DFD38FFA8A87D527DFD3CFFA8A87DFFFFFF7DFD3BFF52FD %40FFA8A8277DFDFCFFFD79FFA8FD41FFA8FD3CFF7DFD40FFA87DFD26FF7D %FD14FFA8A8FD2BFF7DFD14FFA8A8FD27FF7DF8A8FD0FFFA87DA8FD2DFF7D %27A8FD0FFFA87DA8FD2BFFFD05A8FD07FFFD05A8FD32FFA87DA8A8FD07FF %A8A87DA8FD32FFA87DA87DA87DA87DA8FD3AFF7DA87DA87DA87DFDFCFFFD %FCFFFD22FFFF %%EndData endstream endobj 36 2 obj << /Filter [ /FlateDecode ] /Length 37 2 R >> stream H‰ìWkoã¸ý ÿý0Àm"‰)Ñ( è9MÛI‚<¶Øî†"3±°²äÕcfÓ_ß#Rrƒ¤ý<¹±c“÷^ÞÇáÕɇ?\Ýœ«ú^²3›}ø5*ëêfAô29/˾íšaéãõ ‘gö œûËQñ'Õ´E]-¦­t°ýøwõµ¨Ègr]·ªºWÍã ùHN†ýÛ¢+4âÅ—/y×›/_VuŽ·â+ÔTÕeÅÉ.x޳úÔr¨EmÛ!]8’\}tº¯VEõÖ¿/È©ð¥’O.ذÿ×âZµ{JâLŠAïÌ6‡²?|炞I&å`×y¿A WM«¶ê²nÚ Ë,ÿu¾ŸÖU‡õÛb£ÚÓó.+‹|¾}¡ÔJ­Þ¥„ ë¾Áa ²Å¡­êLõ—¥úªJº Î9qÎ(ÑþãžN÷´­›l»~õlâìé}ú¼üÔd«êýƒ~tžç›ìQÁ€;¬7CÄxà+ŠÛ¬ëTSí¢:¨”·ëú¡Øöm·ëlh|ø;ð·L‹Ri›¬#üÌ,2“Á]‹ DÖëÞR'u£ºžPbÇõ§pÞ_¬jùøËµz,tz€Þ¿O Ø…q}£¶™Ù€³ÉÇ¡T±zÈú²3g’g-|ìNˆIër;¬´ÚJà g|qŒø»…INá÷YíûOÃgJqÍ9WWñp5 Â&.Ç6 œïÐIë ‡ ުͶÄ}ÓW…ÙâŒ&ùðþüyREÌâ12F8ÃŒûÏ·£@}[‹ºRc÷‚¦»)þƒ.yÜ&ÜžšzÝ—ª¹«ŠáÂP½&Má?×+U.4¬Gó´Ìt+gYé÷Qã6Ã(é†kUöžNþ~óìI Wڹܪê¶þI‡yʸO|.‡~0OºŒPÓ1Ç!Ÿõkò8˜Æ“[ohÅ0wÙEµ˜*dÀÄ–WÙV5×*ïX%Þ0®¤4&…ÏvØ<_±ü©)VÏPö(ñÍ›ÎþÌŸ½äô“DÉp«ÿIµŠêÍРVR ¾Â…(ëÇáëy•—ýJMsé=cé “×¦Ôëf‡Ö§¼6ÃÞ0{u¤½awp½a³7ðÞÐ>4ÿ†Þ=·Jwˆè·ÇG¿1iýÖ×jaU*"……ªU=Û¸ÏZe= VEeVW÷fM•e±m `ÂZeªÿ`ßÊ‹Wú¡T¿[Ào·®û6«VÖMž5ue=öE©}—ꡳ.â¸ÜøàOÆ…Xw»#µêôÅlÝ÷Xí,U­²vm©þÓåJYhÐJm²a«Ý;Ô×ÊZÕ m[‡Këg §AÆ-±Úm–£ µò¾iT•?á‹°î›úW” GøÖ¤oåõöiôÙ¬Ô¦¨Š æµPö"Ïʪî¬õÓv­*«ÑO ®¬M–a¡¬èµª`Ù·V÷­n{­¨«[7Jí¾eyß)kÓcø3K¯­r ^{ËÕª(Ë ž0:wh“µy_êˆ|Øü­ÏØ ×Yù`Î[âHjp˜ƒY7Sß`—}0$`‰!X‰6·m /ÉÌ<ÙÙ­ssÄùLç|§“tkëB7—ÆàÒ\Î .ML—;» ž°Å¶|².ÛrÀÄÝ”Ð1¾›ßí¬~6›·ëºZC¨µVfΦ|²™ufŽÎvN2]ŽLYùTeÌ•ñ®žáJíì £U­bvD±ÓQ(Ge¬z=ÅTÏ êQegº\ ¦½1íÍIý‹xúÍ“Ùît1ž¦åã£ÛÄ<Èøß–·-Ú³g5[êù’Ty=Ì¡YΙì­ýÅz±k½P5ÍÛk¯a“O3énŸ¶;Ð'.ÂêÞé«tá&IXÍ5¦‡þ—ÐÔüOäŸë¢SäËY ævpY³¥p¥g¥=ýþïÿÛóªP#ðH_›‰ûBøLÄ(Þ(¾9•4 !hLš"| Œ¹Œ3Á<æ3ɲˆÅ 8b)Rr\ê2×u¹+\Ïõ]énäÆnâ¦H’rÆ].¸ÇA³xÈ#óISÁBøBŠPD"AÀ<æqÿ¦yy±—ú˜”>÷=_ú¡û)Ò/•ž d$‡<ð‚ ˆ‚4tB7ôBFaшG^¡`"Q27ñ“E£©›ŠÔKe¦qšýEc"MÓß#¬Øó¡!R] 'µ“4I’8‰’0  _^"¯,¡‰“Øq'qGq±Œñ¼=œÌc7f1EÙí(’(Ž¢(Œ‚HF>âˆÒ¢u";LÃ$Œ}ÈÂG."äȉ…¹ºA$AŒ\Cd,™ äï¢ M¶e*£2!ê#¥: TËEÍ(*gû©Ÿ Šj ¢ˆ•¨¯‹*SÔÚöR/AÝ#/D$úà¡ÜsÑ @Ù"‰ˆÑ¯Pèœ/<ô ݤbä)OÐã½Ðqœ Xp¸í¦@F „„À‰^<à†? 8r\›¥,º" ,Ú#p'€?8¤À£MS`3FC`U³ÐËb<;ÔvR <ÖCà^âx¸ 7ƒáŽ8Î0ÐNÜ#”· eÁݸ8×Âþyø‰˜ø‰˜x&\òa6†c{¤>ަ|ø‚ÝP™åÁͰ¬œq[oÀ÷žÝwÛƒe kbH¯°¦‹úk6Ð$ýÞØÄ‹:äÄÐ>¦¸ObQ–C"àñÙñô’¹ßù{Ý£ÞÕ'ûòzÕÛè‘¿!âÑÍ|β~ˆ·ýÃã^Ô³Mr¨"¯Uˆï²Þ÷ø˘õayo-^D ïÉé°°Cß­˜a¾«ÅD¿åH¸ ÙNF’=ÑkWSkC«5©Ö„ÚÐiM¦4™~&ÒšF¿ Ò/©tðL§÷Èô@§A¦1_ŒÀ‘PkJí`@º•B‹!ÖÁH­c Õÿ²_.=rWÝ Ð˜d#°øfà£idë,³0lØ´Q€$@þ~ÎýnU±ØìÉz@2¾†%g8lö­ïœÏô:H°×${fODñÒDó®Å „uChw’î‡ú"ù†\xEÜóvþp!P0¨V0ÁÁÅNk±¶Qòœôv1à2™Ô¬ g<»ZME¼5°Ôƒ§ËÙ·Í ê° „Ýzë>°ñ˜@oØqƒ`K@{­àÇŒ;  ä¡‚L ðìWðJ'.Í7× ÄÂpõ©vkðÛòø`8xSv³Ü„]x³× pïÖ¼€xå”>Þv;˜ïí‘üðO·9΢á¢>öÚÓìUä"ä©ó4—i?`:®ØG›_½™BcñB)üt©y 5HÍø@k^›çÔ&Ê °‹z#¹¹×›;Á¹Sœ³äDÍyý*ŠN©:ÈNTBv Ý9„çPž$=V_“ø$õIò“ô'  $J ”$È5(‰y"rJBäJäRäZäbäj$9Šzä‚äŠd’”4ÉE©S™,™.¹0™2¹4™6¹8™:™<™>¹@™B™D™Fñ® ê’)Ó)*SªE 9I¬L­L®z –)–IV£Tõ—ÙÔ.ÝbXÌMÚµJ½e² Ø$ øJw!@² »4÷èVùåçà°·? K¨_ç0غF  ¦ˆ‚ #,0†…ŽÇ7D88óv‚„c¢& ŽŠQÞ̇g¸Xô¡nú€waÃÀôá7ÂGHÏzL¬ÊJB8ZVËp±V ŒÅ48Áp`(0 vÅ¿E¿Åþ¬À·¨¯ñïíëõÌêèæyŽpomvnUO­"§QìÔ1}/R\¦×VÌzÂ9ýýˆÜ[·±)Líwsr‰=Þ0Cz„iì+¤¥B±÷™î±¸ËË=žïòr¯ñ—»™Ît™ñ2Ü£”F_»LŸ&=û|ÅXÇ}.ñ·ÛOêˆ{C!aohœˆyCgÍy5¬.B­!·%C,Ð7>kCõ¾[¶ 2ª²£"»á\[P/l’Åsà ·@^Ø6“Ö"˜`ÝÙE£ÁHäZ‚U¼–‰oé©AÊåˆÏÖ"“u‹íqRPö:9"9IG@. ÈQÁ˜B1(C,í„Ax„ âO¾Eg“° ³€³hóHKíqT¢j4½Âeê»Òt.cµ÷Ü’ŽYgÇš.µK[ϳ¤·U á:'[‘m¼¯Rwá=g[¯lsíõïòY9.*=-â=Câ ‡.Â!!!a‹ ˜ Œeý:U/‡ÀQ;/O6gΧHÏEy6žÔåy^xëŽd'©Yº_Tç$:'Í)%GŠçÐî1êM–›¬6Il’Ö¸Ô$¡qq™q•q‘á%2®1.1C˜:ªË-žÅù²÷ïßüûí¿žT¯ÅòZI‡ËŒ—Ñ™áŠS1óƒY.³^f;&jŸ¼óì÷s}(áú¢‚褔Ó\¦MS<{ʇï Ñwæ÷øN}gŒ¾c‰ÀûJÆ£[¨•çLpÛY•¥‡ëÔrd:ÉsfyÎ"Ã1ÇI~“Ü&yͨdŸÙ*SâM=l—åö®±¸g {ë¶{Ïfö”#ÊÆîZˆ`7É.·fÝlö`ÐaÏgÑeeó •»Ü(p"R79ò¤Ñ:.'gQ9Ø8K¦•¬©æ µªÎÚäš·ÆhŸø#Lý“÷±§ê)0ÕSýÔŒoxš5ç'þöúÕw?~ð,ÿÖÕCí»új,¿¹Ò7wÕÓн©ùÀËËàOøõÑJû®ª¶;ª‡Îþ¨ûZ¿8Œv·|ÿ&U¡#‚ñáÐh¤V† ‡…£Â@²bÍY²xÊ ` !!!á Á ¡ÀAàˆˆÙ¬ø÷ð·è÷à·®:HÁL¿‚Ôk“tM±‹Z Ò­$[&Êä!ýrU³œ²6¤6éMòP†­èŽ® ’…B÷Å:kñUÞ?i>èŠ/¿öópÅ£Ðì8M¹»ÇF·G'¡{0ýi†bÆ8ÓÃao½>ÅòÔç+žOÜýéªîNWQ«x×ÿº{‚þ;¸Çû'w÷Ô´•þIu|:<NǦC³ÍÀœ¢>o”ugÊ@ç%2âÑáèh40:‰DÇ¡ÃÐQh d3BÇ Cp¿ÁçØsè9òxu‚ÝÀ= u:a.BÎד #92#š+©rc!*´&kZ§‡’#‚:“B+Yt›¸GŽf@cRª#«2k"¹l#ÇvŽo Õ„¸#ãy"ñ„y#ÿvü*† üïÈFîÅžHË…ÔÜÈΨxC¢v$ë@¾Näì‚´o·÷ ¤pCwäò@FOäõBvÛYܵA;Ðê ÚtnÚ°Ù=ÚÏòúˆ+>pÆsíyßwüÖù&¯xW¸âµN|Ò¼ÿŠÚ‰pøëaÊyZ@­_OÿMmrU£ô™óø¯qq ÁÓòöZ\_Ý9¶ÕR7L8ro•räQá:ÄjÃ÷ÙXø»Ö¾UP7°wçkvíQ×ìâÕÊñCd??K|Ð,@I‚¦¬Bc¾ÃA?“î?þlþ©cüŠñ`rwMq í8ÚLÂL+TQÈ’ˆ-:ÖkÆlÐ1þ›»#ï^G>¿6¾†‰Ó9"㊹;È~•ȸŸ6N§¸âpšt7×€·´-`mi 8³¾g c fÍÎf«¯AàZÕݸ2Xª TŽ)‡”!Êex28š˜K”$VVËPÔ€!ƒÐ,íÀÇÑãàqì:tŒZÈ„ƒÍ.Ðfã€1¼8\ÒÉ.ÁŠ3ÁNÄ-?ïøšg»Œo/V¿Æ¿ìyø\1¥ys‹‰ãy3(eZÉs({Ú-1ÿËœ>j暊&rÙ¬sÝÜbáœØs/œ­WNÚ”—Î5ÖÎ1ÏVÕ3عQýÜbbíTBkÕÐ]EtU8‹ƒêh«Bèh; °Jº¨”r±˜¶^Mép^N×\O‡\Pë\Q·XR§XS»TT{îQeu³ºŠOª«},¬µ*ëKë¢Ú:ÆâÚzu¥/zy]c}åc…m½ÄÒ$½Æ®±ÈŽ^eUdë\eÏEÖk¬—XÛ ¯°«ê«W×^…Õjjˆ;qŒ"LŽY.sFê HVdõqº<íÝ4—©Ÿ®øìÿST6ŠËV‘Ùé÷jBsMð>õ¶këMÇ!ˆt$’¥{·£Q(‡"‰Ø½Š³F Û\Å ‰ ñ}´ùþYâ)Ÿg,îÆŸ[º“R“NšQwäèúôyºcL<5>ëë…+&JbéF¶DC²ÌšJOŠŽ„ )Ã<Å‚}”w?¨ç’LYvN2eYJ2Ï1K±À­l¤×DrµdVÅ^¬$ÕHJµ$Tŧ²’L#©Ô’H»·Z)‡:2ÈèFúXö 䎥NÅghy3)kZËe̪|±t±l±d±\±T!S8»½2ÅÅòÄÒd$I,GHeˆ%ˆå‡§‡g‡'GÊsj¼˜15ªo¥­~ Wü=Hпb‚‰¯EP/hÕJßߨ®ïl[ÃÖu0k`'vqa#76s§Tö´a[;¶–-g{'õÕµêÚ &6Q+¸©8Û¨ô°wT?Xàñf~Wœ¥šÕª+ j ³úÂCˆ¡SkÕ5‡›ºCP{hscƒX‹Q-bTXÈ‚DØÕ&jœ¥Å]zuЉÔXÔ+n÷H·±]t±_L±alÞ1ð¥o²–Ñ“F£šÆ¢®q£mTêG¿r¤Ø{ǦæQÅîÑæö1úGaä("D@w¡Ó{nÙrçØso–ô9 »àÛàûàá;‘¶¢Ü‹»ÍøævãåÍxy7mÆì…m»ñ[÷"nÅi'†cØGQîDÚŠ[•:‹JR•B¶¢²$I,õ1Šeê$¤D9íešbêbRø|Ðÿÿ¿ÈÓN<#»óÝ<Ø*e“Ozí–T.ûYñkM§ÕtqzÍgŒ3Å™}Ⱦå4ëÝlæþ{NÃ_üÿïËïãŠþ·ÛÃù¼æþ‘¯÷_ñ\DnzŒ‹ªÀ¨ ÐIý뢯•Êß?+ýÓÿد–¹q$x7਋™Ë@’¢{Ñsà³s0 ¸10°èƒíýÿŒLR”JÕÛÀî¡S=î*U6EFFF0íL?-ÿ’Mo¶ßÓø7Î '½@ 'êY×™uÛ²‹e‚ „x‚ æjÁn0Ð+ph”OôÒ!ñRï ù ¤¿×X„ ¡!FƆ€Qá02†‡*;c˜ŒŒ!"`Ô8‰Ž}…ÏŒ†Sd¤ðW­ÄŠ€52ZÌh#ãEdÀðŒ CÆÊ˜11hô50*=£Fð±2nL }‹5bÐÆŽV‚tZ¢ÇÌð10~t@Z‹ «…1Çp"ëÓQ$9Îjo0Ò ¸# þ á6Pñ‰OŸ[û¿¶¯Øà¬ê¶û웨øúJ‡{°â¾Æù“=Y¥¬€Ši˜o<ÓVé¼Î¡–Ö)κµ°±¯Ó0¡¨» •ü†ŠQËH .ª{í8ªÇÕ zdí(•#鯝RÒŒˆü!͸¡¢P£b¨fœ+Æm½ bˆ^@5D1Žš±)ÆKõ‚Š!³œPÍPÕP݈™?ä¡ “?úºí(÷Èz¬'‘µ* _ªª‹ÐÆ7ý¥ꋽW_š‹ÇïU%·xûæÝÇ—Ý=~#}èåΦw¼SïæM±¬øô}Z+‚YéCü¹¶ÇvO(k=}Ÿ­«ñ^n?ù±Û-éÖ-Z|wR¿îÃEû·å›Ý†=³U­kîl¨byc•nÜ}ö^©9Â%¿ÞûËã翾~úüåáñ»½3>üóå1½÷çå·ßþ}?}½¼ÿûÛ7ûßQ®½ŒŸ•/鿽:CÕ7aC›öCð–Ñ9êHôTì)–%o¤ì‰ðÍ¿ÅbSE¬)„"…*†"‡"ˆ*‰"ŠEȪJcÇ$Y W $FÅ-‰4ÄCª8&iTaYQIA9\D !-…0BEWˆ_ áë z#oÅã´º7AC*Èš‡¤ ³2æ _=„k…`yÄ$BlX€ŽUŸ­ª 3ŽÓC^f“–{Œ¹Ç˜cŒ¹sâΉ;'îœxŽÉ“–$™Ažäp FBD Â±Tp¨+[qŒ=Ða +lÀQyS…šp8Ž¥í1q$3Ž£ÇAxBí°õ²ñ-7}á†ËvËfËVKJÔMN[¬,^:mð‹¶÷ùÍE¾Ú6ض8o²nóH+ÒÛfw´)Þ¶ÿðöÍ»7>¿¥oʇ~äª?œ?|÷ä†íÛ»ÂOþUý›ãŒ‡÷þãòøù¯¯Ÿ>yxünïŒÿ|yLïýyùíÿ~ùöðûÛ7ùŸ(.ãg>7Ú‚®z¦³Þc6è%»Vq[ecn®l¯ã{n³Ç‰íVxZ4õîú†ìÝŽ«wôð·sawÉq߆³Ÿôû’jº•„Œ€l 9IÓ¤ YAÒ†º@Uü’°löæM¬›·¡€YÆÍ‘‚â!.5-ØÞý&ÿ«¸-škCô3×ófêS‘;XsS8ŽÙöLæI{‹Û&¹yð’ÿ¯üë+ó­²§×ÑR_®n]ý»ºyõöêóÕõk˜°g¦„¥ÒÎ×âz5DK8ÂèˆHô„ä“§<¡]Äî¬UWtáZ\¯–p„'Ñ‘3X¦pÏI·4\rEÒgrœÐvëUyžoß¼Ž OÒµ³[³ÐCŽ„äh9»=6ÕÒÚ¤‰M²ôœíB™‘´)=Ä’%ª”!•¢$G›$Ñç×PñúÝýà ÆüÚ0é §Œ9cÉ0),äPyœ^m~8Ú\~mðWÿò!£ËHrŠýf§¤×˜_ÓAZ7qe?¥újY¾Ð[éÒžk²üžÿ«µÎ”Þt”c•äˆî¤£âˆÐ¥³É®J®8%ñK>q‚Ü9ÃpŨÍnnts¢êAÅŠ8‰<©@%Œ€¼×P—ª¾Õg¸ŒVŠí \¿÷ÀÈhëЕ ¶ÇbmsÆ’‘.ým»cÚÁê­p´‡OæS,'¸q¡â/¾ž¯¸³2?zÕ×@Å“w?X±¹ ºþ í+ᮊ'ïÒ ¦×ÓG½FÅ£f?¥Ü›½Ü[ÌÍfN4™óÞhR[“ÉÌæl]Ù»¸g÷vk›3æÂŒ9挩ùR ¦¿ÙrRŒ¦>Çć\‡¶Y0ò&LÆ2ÂHLL‡ÉÙ@T+4Ú‚‰:a²˜°“6`â:LÞö-¾`&O˜ÍftĬ˜Ù³»Á ¯  ¦ú„é>`ÊGLû€©ï0ý¸€ ’±ÀLp\Ö¿àüCù¯ - Fô1ÀgDøçáà@ ‰ ò³À™Lp(œJ„¡ Áý´pÍuÀ!S ýäGøœާƒóñp@-œP Z¬ð3<Ò¯ÔÃ1upNª…Ü×H^+LÀ ‡5Âiõ-Öߨé-ô½F&[©ú&€LƒÈé s¢å|©8fN+™`³-pZ'RÔø-ú9¾z‹<ëšÕ±Ô÷¤í!ëyË9QOVΙ3e4¾ôæd::oÌi™j¡&T4Ó ‹„G`=S0.9:©†ã·µÒ ÍÆ,á–²Kø¥ Ž)ˎ¾Û„oÊ8áÖHÞ ó”{-O-MÅ!# * …‡ÊDᢲQø¨Œ¬¥)ÅcräÎÆMa§òSª–*O&ºŠn1¾ c•³`mæ­0W¹+ì%É`å°°Xy,LV. ›•ÏÂhåt-ƒp&Ì^è»':ðÁ.ËÏ"ÈQ¦’©¬ £/¬éX±¬¡ßjw¢½¯sR¥\ 5U: ú±JÌ95·ói3k;Ÿ7ói+£…¥™Ù陥·fÞZùE ‹Úh3Sе™µµ¡cÞä]ý94ñhäÒȧeöí«¹µk/éaÅ—L¸8q6è9 xvÿ ;ý̾md¯&>­«<š:4¼JÊH[”Qo<š9´ûþŒÜÙ„ ®¶ Ûî0­{—†³ßû4ÌrqjcJêÖz€AÜšÛüÔ°Ù\U<›¹¶¬¾\ÛHšsk7ﶨ{É¿AIÌÃm)ó3KÒ$GZW²æ>m²ŸÃˆ‰£«Sç²9º’:ÅÍ™“3—տŽBåÝš-‰škÕ±™_3·æv‰4+…bâ´Ë¤FF†–zê\°žäHËŽ– 6+À;ub R NAx‰‚QË¥JÚ¨³† ÕMöÔ´Zî“{éž’LJaH´ÚȈm«‚TA©`”Jø™¨$L.À"!±à1B$ „¾†QG˜#´ Ög„2BáËãðW3#*2’0GŒ"BШØ1än3„BKh½ùžÆÜÏ µâ §:Á*ÁÑæL'îjÄ}ØÔcmúp«;m ]àt›?'BIûKsqø×\[þÛ^¾hºìû§ßýøøªéßÔ'a·è·&ôóµÁðÕ]â“ÒU]_~< ÞÑe¼˜kr>òš¶Õ„píÝP=à…7h÷6âéW0gKwŽþ4O¼¶ÞîéúkŠ©Ÿòºåi®Ã¯X’§Wæ×îqC{Á´ÃµÁÕð’Ëí$èš+0¶K[¾4ÐÿÔÛÿðBê6Áø|7þ#ü¸|þø÷_úøË§ÏÿÑo¦O?ÿòÙ¾ûËåOÿüüù§}úxùY¿º8ÿç§§_ó3¦‚ÀjàÞ(elŸ7ìøbS+ð‡¬ñ½ã{Ç÷ŽúQÓï¾Äò?kúaùaüOLÿ­í?ÿ{ÖTÌþ“ù¯ì ± ªpˆHƒ4 lq k8`@¬˜„‚FCÄ ð/U8x #‡„EC‚Ä2m‰c‚Š bà(. 0À­lå$4¡+Á¢…‰ (BHˆ°AA‚¢… ¬NÌ"BÝØu[¬h9Z8víë0È RȰ˜‘8ja„e„$ÛØ:’y”àAÒ±óç8ª$s ¡ 2ma$q ,”p,é[~Y”–CŠ“ ÂQe帲hd¡Ð"5ix9À €s 2e¤xƒ9ÔH°‘òZú gS®Õ #¶hå­æ­¦­ÆªÒVîãœJ…Cu7åO [„ŽíI=/ÐweúeTeèUÞYåUÞYå Y¥£xö«#ÍdŽ«EÈ«ÃÛÙc-Â]ß uæm,†b‰uv}ÁÕ¿5¶§9°¥Ø[ ¤ôg‡p{XVÇc ‡cß:>øõ!8öOÛwŒ'ux÷Vð}M§C}qÇ}ó7{إ62eìœJ§ó>‡^Ò§:késì2lXP­˜]™‰Å–XY“Ùq'³G¡ ±ãNdMbI`M^wÒºV•ÕZRŸ>l’ZU䔥tR‘QQP–OO‘NNœ gg¢É’™U.“ eP‘t*™¥Qd±gIô,‡ !1³ ŠùkUô–;’:¹žÅͳ¨5,g™…LdlPù2á"ÉjXª2‹SbI ,@$= ËMfYP"KH§‚áD X²Ê€Ð¾‘ü†Ã¿¿Gá¯E;0§câ Îb™d˜”/èpZ§pz§˜pš OÆÙ®Ø‡³ö8ó€³Ç‚4L@E:Vl•ZpƵ¦ªf)•WyÃ3øEþî5Ÿ÷Ž_«£a‚±s[ã¡NPÅô$eŸ•È |$¡G"—:¯%v&hõ\QkÐJZ£èoÚÕ|¨|RÇkv…޶nž‡Žò_Ëi}Áßøó|G“‘¿ò¥ oã„#H8”ˆƒ ìDɃ6ê>Å{ÖÎsï;gûNøOsž~ç=çÍ}Æ7óŸþË(ügü":ßó 8¸ÐJÔßñ ñ ……ÿ„ eºw såAû»PxPœøªtR÷ÙwJîqJîh0*(5ÝÔžF Á [E)tŒ*m„$«îPþ¦Ú{…ŽwSAõÚ5¨¬n¢º‘Þ¬ôƤÆN¬ÙÑ›Us'E}[;M‡#Y¾À\,<)™§eæ‰9–|/¶›1p›1°õw)ݦ´Ìi»­ÄÖ`Ïyj'Fš]ÊRýV¡Ôž8¾k»î9_4bdÚJL]«KÏ CÇŽµ¨•ƒ»9:Ù¨{dÆt¶'3lÑ™‘™P™ÃR2,¼:ÐV\Ì «DÕ¤œÊ r@LH©öf"#¦¢"Z@@D?ÔCÄÓà ‰rÓMGTÃ433ÅÁ½¹µ±€V0»=Ó ‘ Q  EZ¢ Ó‘QˆˆÐ‡‡QÇž8Ò†Gciõ+œo²£ûm…Ž¿±Ã·ÐÑôD`á€Ô 'jf4¯RZ•¬Z’ê.§~c)5<“S¥Ôö4§æ—$UX!dÕW'ÕѲ*,uVûk,‰õ4¯–´*YuÕœjRUDM@W–NÇI cçÙéìçÉ7‹û¬ KKý¤,Ò§µìD«Èæ¸UO–Mt¬WÙó e&×µ`›d·µ\«Éñ%ƒáq½ë„¬ü~ÚdUÉÜ{oŽ÷¤Óû5a¡cmšØ%µ)©JgÇÌ6jG=¬ÎW;o9*±6vjëµõÅÊYÎÓ|' o 6Å µšïöOLT>Yz¬•Ø0uf…¾-K«_¢ÏéºÕò\VÐêµ0êèwUm—yðX‡Mà¯ÜåÁ[œEŒ¾:a«–Ÿ¸Š˜ªe–ŠÌP3±˜É3+'#    ÿö)ÜCÌ3ZÄ9|Cl32Ó¬`áaáf—§`â–ȼB¬²2£ŸDp‰0 ñˆ°ˆMvÍ ®š‰žã@¼Áx‰ÙÜ…Œÿa|ƒŽ¿ï<üt4¶àŒ Œ#|™e:õþæûk×ßßõý‰ƒÐÎ÷³ë_6ߟÔùöþ-ð߀êÌ ¥1æ£Ç”tP⊌•"¨,«³4B³LV ï0g-4½A„Y0{3Ô~„ê˜ÇSÙa6[Lh]àf¸ä†aàäÐc–;ÌtËùaÅ ex‰SÄ€у:Φ}…àeN#øbàTÀž’E5rºÈ`—‰ÆÀ#pÊh9g¬œ4fΉҜTà´ÑrÞX9qÌœ9’ÇÁl='OÙÒGæü1r‰šA¼¦UsÈ´%‘þEÖÇiÄLge0T\üj«r[‰à5*€‹ &‡G–Úy“âtc)X{h)°6P¤4H†  N &’És¨\9VN,#GKÏÐ!àL/ÛÀd ™ †‰‚Ä b1x8 œ¾Šœ0A"ìbçÌP 0 9~¿ϬÏÇOoÇ~1Vb®Ø¶ÝV¿«XÕ •N ¸-æîÄÚ'ì0[Ût• ƒyf—^±ƒò $û;ìÚÁ`¼GÕ÷¨ZGÕ¯GÎ>ß‚éüã;¶ûBÇömëùŽGƒñn¹‚†KsM}Ü—æâ𯹴—@pñ÷OþË~¹õFrQø]€þC¿,`ñ€ÝMöÅos58ޱ‰‘Œ`¡XòZÉJvµ0’_ŸS§ªHvöæ—øa‡ÒÌÃK5«xøÕ“çÒw÷šsBbé>u¿Öûu‹IßßYg»”òzùçXÏõÖ.:ÃÕâOA ýÌuØg¨§yw?³& ³ØÛÍÑ»zŸiaÒ;ûÙ~…‘šºÙ-×6ë|¨7ìz˼;\íO¶_§çÇûë¯^]]ßÞÜ?XËîæÅí½·}Ù|öýýýÕÝÍuóšš~üüòâÑf®²»fô@_ q‘éDbrù?æºþYzÒbÇ)“%G˜ ÕdDR’:+)IÇ”¤M*O Q–¤D¸RÉR¦&B˜—LPŽLP„55I‘4eÄ  ‰Š§$+’®™®JÊ"]å…k†) ’ª¤-J¤ž¸ìd:&.ƒ%.°îh‰ËÖM[p¹ö4eA‚{qdÊ"I‹PjN\˜ºHò"Ī Œ¤0šÄh#ü*©Œ$3=I§\›6:N:Òðq[kÙ3åѲµ"Û1YÉÁ,H‰’•È´H_].­¤IüRŽ,+êôI|Á÷ßÍMU^çêÇÂŒÊVJW³Ñ•°Õ±U¶êŒ­²••°Õ‰òÛ’¬¢¸JÈ ™ wä@²r¶ê­œ®„¯ôšòÕš°œ±HYð»@ƒP–p–R–0ÖqæŒÕ2#ùjÌ|åtÕ“® xD4lDl;Yu áªgbK®’³rÌT•*ªÚª’³èLÂ’!T%\µ'WÈUJVÉJØj [º:ˆRˆb¯zª Lg:æHÒûNó§hK̯FR±rñ–yØž9ÙÑøØ ¹gö¦”Œy[9î[cå=3¾%- /«_ßÆË±ö)ÎRÍÌg¶çªÈ¹°3é™áôé[ghä3ÆÑ™¤éç6ó´µ¼&RõŒíÏ+[;];_CAði”mŒ­„}0Æ.„=“±•°¯#ùÚéZ¢à$JlQþ¦.~žÉÒîçÑ(z'- }yAІžÈЦ¬'tıQ‚ ¡-ëª2, Ⱥ³¼ê÷¦Iïžñm´ÙWç œ= ~"üLPÑ0c9Õé¨Î‡Ÿ”óHQ;Í%=›,'{jÊ÷á¥ç]äÕZÁSw¡=Y‘µVö´€€2[áeme°’¬D-8ã½_Æ_ySƒ ÷CÊaQö¹PȰ|×H2 H•¶uW-(_T¾ç½žxË•ÚÃK®øÔ†¢ªýB¨ÔWÕU‰À —*P¥³RlíŽp¥(ZÑ’t䯭HäŸQï(ˆ¨Æ÷ÇžÚq /L?Z¹yŸˆŽè"'ª‰Þ-;Ro˜ ).$P_Zòš J´g ÏMÔQ½{Dw¤¿“ÝA-Ñ£çM¤wQâm$†NY“¶àJ¿—Ž¢OùvR§Åê–©Z¼«@°[Ó¯½ÝY";~o2oWÝ_…›e›äi¸,O­C íñòH: [”=¦ÜžäÁ&lépgF ^Çc nGBèÝ ›0aûÅy‰º(hÖq–0™t<ö0VyƆ‹»èj¤Âv8\a%÷Gh¯¼v°n¦µ£Ñ}$Õãé`o Ï Ñï¹ÛLòI>bÿÈò»@–—e÷dùšæ}š‡—ä@#ùCfy'ù!“¼r|h!Ç+ÅoãGF8 /‘GŽŸÂŠä·dùÉh>‘ç…è%ÚÃpÊT¿ç :“ìA è<ðìDœ"‚–”âI;ðÔ …‰©“ñ¾Ò~o´ßfÚ'ëÛß’&ž¥}eýŽ„ïl¬x¾¦xåw£vêP¿Š$#"! DãÆ£1ƒH*1ã£ñ²Ž•`yß¾ŠÆÎ’ÇÇ~•é%Œ ­EƒÆÎcA#Aò9`1 °ÍÞO9—sϲ×'úì™=Þš·ô´úz2?kF×™–Ëߪ_Å«xjñ«ù´øS}éÙ—ä[Á2¬³ª-B_$uDè%»?åÎÄM‰ÛMoÉ}¾'» åìí¾ v»ìÛ’°5$…¤‰$©6Ê…ÈHŠÍ“ç»W—? m#WFš° aœø¥kZ”®‰Ãf€…hIÈŽdÌ_./ž<ÿˆ!»×²B‹›-ã">æÔÍ24ö->&šBûªU>j˜¬´C.õdûuz~¼¿þêÕÕõíÍýƒµìn^ÜÞ{Û—ÍgûùöáæÍîåÕÿúüòbYç¼»kÝÿûx¶\g¤g¬—óž5ùÕô·dÀsT4ÄŒš'9"ÌL˜©°}„ ™=e6"•ƇžCi%Ô»r(e'å&ËŸ h'òRGV*¹Ó–l¤\¤“fJ³eHÂ=Â;‰ùÐLº9 Ñ€ZzrÌdω¹Nbž³c†Ó2Ï™×±9’ÏŒÌd$‰Ð°Šv‚Â%èX 6´s:î±iTÕÝAOÿGEþ(=Þ!tÑãQãJ‹U‰¡È+-~§¿M‡+ ¾¼¨Tø\ƒÏx¥¿+í…ò"Ê\{kå­u·¨®in¥·®¶®µPZœ-WZÕYUÙd ëÚú)&>Åħ˜øšÁ¡€OúyNBÿL¶jüGů$•å¸Õïá$´<ÿö—ûï^ÝÞ?ÜÞ¿øâ‹šŸê_./¾ý7ëõ·ï®n^Ý­¶ÿ}óê¦yŠ>¯…¬êjÓu›¤oi²7±ôÍ¥XÛòéBóì?jýñýŸhýµ‰ÍŸšþškö{öT~/SÝå*'ýFªyúªÊ.ß,DzzÏiŸ*uÎiÎDDǦìà³­Úä^PÛ͘š_1:_ŽÆ°QMàä¾ÛÄæ†\”ß~䨦¹Õ–X Š>»Im˜0M2>¿±Ÿ/ÅÎ飊ìøÚm.È*'¯mÎ&ŸYl>"÷ÌsŽÊàÇž±7|óQ¥÷Ò`¾ƒû°4¸x¶Œuòƒø ¸°…[–6—¸){çK±E÷5T6— Åæ‡w9ÝǶxøjcÂ٦٨•5¬º—}Tñ‰ _-K³Kl°êžÎfg«ÏŒöÁ>då~sG/žtµ ‹¢>ª¸´¹„‡vK›Kø•±n@1ÒG­‚Uw>,Í®¢`Z›]6ÖG•ÞÙìâš­®3_ÓC‹ç¯Âu:Û7׎¥5K˜ªaŸ!¾[øæ£Jï¥Ù%BXuwg³³ÕgF»ÍY>–>YJAý¤«]XìðQÅÀ¥Í%B´{XÚ\ŽWeÍT H-;«x]ªÁTEÈêŒùjÅ>ªØ˜Íþþòh7-ng»g¿zw/ßÜ4½úÇË›_þòð³\¿ë&½Ï:üýÖ‹W&¸³Û°Ó ”óå¯A¿ÿ¢×ëŸßy½^=v½Â+¾Òàsú:CõÍ~üIÖÙ€Ea¦ó¤“mþû"f³æÃ[¤žwÁRy¦à3…•-etÙ³o(Û›7rXÍ>ÔS~xxì¯î~yóÓË«7U5öøû­A!ÜéÌCÛ8_þÚÚnø—EPÈ e_fà8>B²Ê›5„~f—ô¶Pá²w‹Ê¢•%Å<õR„VÖI£R?dɨKF±eŒÉ]Žóã\³º-‡Í8õݺš/£+Úi’[ÄfIÖ mñ1Ù+­fB 3%NÍ«ÆÍØÂøyƒ&6ÝfšÚÞkd:*(ÖÔâ)û"µéÒªÒo¦±ÏL$-ã&"‰“n ÒY½k7a†Ð)lycÜp'0u˜Ö5ìÃb mí>ŒPËMêB:«›!z½ZÛ¼Cw·xX<Þº{¸u°E¼mÜ„4 ž`[cY…#›´ò¶ˆPˆ= ‘êžU'L;·‹m²‚t9 }{VMؼ·WÛæM‹ ·q_¢Þ·SÌuÄËž2B7aŸÇ×½?î§€T6Ï—ëõš¹Ñì‚3vz}ñh¹Ñ¿K›6¥þ¼^ï 7ú.c’ Gø¼^9ÊÛÜ™°¶m[gõ: r£M7@8b:«/â.7jhâ#vq:«Ö±í~:‡DÕY½>B¹Ñ&BJgõúz›c÷³q¯¶E*Q™»VDµS™E8MÈþÇy•#É‘ÃÀ¯Ì Eð6××'mJ£u±ßßÄIV—dHÎLE€8 ÿ› kU¿å^‡AKE—v YŒâKËÙ‡š4ƒ<­v^À ¶˜UA߯™CÜÚÊî¾%"˜š,P¯³>HI·Õˆ3µ&:Tèï}V0¥úäÐhõIŸ<«òÚ•Õô­U‚iýTòÛ“>›Ò™0”4ד¾AŽ3 #,Ë!F:â´…ji{‚9ã•2ð¯¨êSRìtï©gØ­¸èLJ+ãÊÖÒäÎ{§¡õêBÎÚ_Ä>]<ßI¸:§EÞ™X¼seQZŒt¯|Ù=ÁÄ ]ƒmX4Æ;YF¢8ïÌ‚£«Iz§M XCË™¨¯ÑՃųðF=Ç(gbqè-Þ¸ÀùnX˜º 3§BÐŒÚóƒ(„Þ"ÚÂ+iùáY®Ú2NÞJüÍúýßÿ~|üóóç××7ÙAOCUÌæ"$»ŒºžÏ 0_Ìö•Í“v÷7 ¡Ë|ãä¿¿ÙAG’Ô½/•†Z 'IQüÒH<²ý™V§jœ~õP¨åÀ¯RØ þ0*¦Nè²cWÙ·qH&¾ö°¸0bû5}ÑF=âp©)»[ÆÆ…9£°¢P·È*>cy\µÊÚçÉ•½ìuÄÅ£¶Ùy¨.|H =j7)ˬ0Ù›•§g9‹gý’¹ŒÈ£ºW.¶¬»o ѵ<2=ÐR§-¢ˆ6ßFDÑ]³.ÿ.„¬‡¨ÓÞº˜ƒŒˆN“--…jùí;Ü,6Ф¶­§‡¼Í³£«Ÿî*Å]$[ާ¯Xø*ÍÁ…ѯ—ÔÊb{®]IÃNé×fž ϨšvÕiœD_HJ­©Þ]vq«°Ì"“<ì=ÜD–å† ±žÛ%ª›n¤°óu¯\%~¨t ¤XÒ#ÊC G®s1!T£oc7\Ñåb4M#Ù÷ËøCãaÛá‹?øtE›÷×ÞÐ/qKZkþyÐØuj‘y±®.K•¶yÓŸÞ2XÏŠr´í]Ψ‡Ñ•‡!¸¶Ö•v-ë•K#wȶς©¾³yÆEÆÉçæ ÁO3®{B9†XO·{¼,dÞñ—œ¶„¦0 ç?‘æD¤xih®R Ϡܧ,³Îdo¶>¡ÝÇ ö*£(Àp.ÝÍi±QF9hâ‹°Ó’Ü™õ—ÔqùÐ/-ʶ“b¢JIF]ån¾¸O¿«-.{ÚzÃQ—fnަn¢ä¹@6üŒÌØQµzr²fqÔµÚŒp¨)mó²šâFÚ$/i2+T¶Û”—íDÜnÜTËÿdrè´Fc0§cë+²~a פÉk¯ 'ä€ ïÊ™!6]¥n2R ÔØq`N(“ß/{Ê]ú•¬¼Eîfæ ¨¿ÞijÑ9eO@¥pzÉK¬ÓˆV\J£^Ö½ÊÑ«&È¿ŠW4ï… ÞͤiSêbLJ endstream endobj 37 2 obj 16321 endobj 38 2 obj << /Filter [ /FlateDecode ] /Length 39 2 R >> stream H‰¤—]· †ï œÿ07œ Dê‹ê]bä¢ÅÖ11P†oRÞmàØ0òïûR”f¤™c7vãì93<E‘Hjùùòà«ÖÄyñ _q ~ŧ«sÜ_üRþrùê…[§°à‹JÂW!Ÿ·þ¹åùKFu¦æ¸Ü  ñ æÖ uúX׈kÐA&™æ ZëH{OkTemZØu†]g_ÑD4M¤£ZÛ¤/̺»u_ø·¦ú)m˜½0ëÔ»íÕ­Y]WN’*«n@Ô§ªtDÐ6š&³uaLRm07-¼9¨ªÇk]´ Þí#Å>ÖH‘´ Ô0­¡m‡ælÞBµ‰h-œ$¿ s}ç¤AÛ-¼RÖqýw2·nóû;ïqë"¿ÆÌuuS°a]Úo6¾›Ðï&öùÓ.>ÔP 6A.äÔ¤âØŒ¨NS}9ÂZFèúÔ0hxí ·Ÿç©GÍŽ×À3°öÞ 4"[ff±½Z¸°OÒÇ8}k(ö Üuñî°Ž®-ß& ¶}~ô2Và)zk)š¹š¹þn.¶ç)x&òãL?èbGð{ìhÔL£ê¶r0Ï>*·ÍŠÞâÖ6Ùh¶Ñ²Ï*øœ‚ð¯qæ²z q-Ë wëïÓº®Ï¦ÊFé;ldUѧP¬3uöÒÏ`]ÊDfEŸ;ùùe"«Ä\$xËçûéŽ{è–qήo¯Õï{} ]í ûb&¢i"´Úæ ÇX·ãÚ§m)·jy·¿`l,¯¶ùÕ×:Û^ÌHüÅ6Ém…×õzl[¥6=í¥yf(äy¨ãݰsq.KßrÆF^YSÄJ¤P£¯ ãJN”UŠz,¬>ºJBIQ¶÷– !ð>(­œePÒßÛJ6i–Tò²)A 8+µ÷ž©Ìœ>h߃)9ìisƳËwxüæ¯þÅw÷¯ž¾|÷îöí}|{ûëëû&úËòðéo_Þ½~õû×—ûs¥Új:>Té{õpå‚•?,†Ãó¿!ý°„åïË?þé–WuÜó¬ð7/7]7õ¹k_Ûs¸¯J¾¯k¬$¢u€¸èá#Ç{ýßÿ,Äßn`[×lpí àóÍlÈ›aì›§Ôp’䇯,joíäÛ6>²~–×𑋪‰¡~µî&¥lå®ýµ5>µÀ¸qPªÃ| ªÒ×bº²e°°ý›ø_»ê½Ïcî‡ÛWËïÞ¾þíV©Þ´SY²_âSg*ZmCªªÜ1àf;0÷ƒ1×ø*Éɘé+Yß\%M–—ªÿßµUðXóã§œUðâÉ}}ÿîõý¯5yuÚøËåÁ“ßêob¿}ûöýïÿÚt=|rûaio(6ð¬[`ëûËlëu÷™óeÝÑÁÜÕ7ǫ˅Lts¹€'¡&¯¯ˆlâýEíø^—wË`ÐË:½Ÿó“N[é-PQ-Ú¢ÀÇGB´‰7ÇᲦðoê·] ÷¬ŽC«É³ÖaèhÄÙfȹ<»”åá×ËóŸ.ž]j¨Þ9P*€œ¿,€9ÅÕ{¤˜ËkèXÌ—2Šnv‘d{&^ ?JpMÒ)¨Ž³-Ÿ*U‘êE_½YF¹'/æq!TNŠÕE’~-„ C‰‰ƒ§¤c#blB§7'‹3SMkMAA›ŠÿL)ªq¨£Á³ª¯ʸ„ض©DÓ ÈvÁ™â€ CÑÕÌš‚ÊŸ ´lžî³0 G³‘@‚0‡U´s¨Âì6¡÷©˜PJi–KB?ž¢ޏ¨d3— d'}íSÍplÓ«ŒWœ’Üà¼4?C¤ÄÕMß¹ºm"¤ ³6!¡:T;j,RÁ›œÌψhf;Íp $çÍËT¨{_± lŽAù Òû¸Ÿ8òËÌœä$í<‡‰}¬”ÔLH‘—«þü2ßè~ߊ²ud6ü’ÐÆ}ÍZS’Gj£vô.ÎÔê`&š©…0°—¶£¹Œ3¶08â[á²ó'l!gš°E<£Ù¸Å¤D9Á‹Õ³šáˆe(3»… |fWö<³›Øö:Á›m‘gx5½Ç™Ýˆ‹“ݨ¶‹'taYÊTfvõ¤( »pBÖ“zdWåÉç™]õX®žØ…ÐcÁ»“÷2ëÔQ\®’xd·ËÏìÂmð{8±›\Ow»i[rG7ç„ yäìgt!¤TÊŒ®jÍ=í è¦C?£ {[ÂÜÉ…,!kœÈ…\,Ãìä"ÌØKÞÈÅ"®ä|"–zŸËL.„¹ˆÌèBXJ¢º)#kû;º}aöé€nYÑoûº©Á9±›úc:À‹U±o‚W­a—gx5ä¾Ú0À ?°tðBî‰ã /„ĹÌðBmqÁŸàÕè§^µ!qY®²x¤·ËÏôµœè-=ë ôæ}Í_kq<â›ÙÚ³ _L"3¾îå~Àr4'tÀ·l‰sç» $'|!ö–dv|ÐÔêvÅcRH箋‹¤<ã‹=ùóŒ/„(må„oFÃÄ®ð…ù̇¶Î ±ç½_hˆdyoÇ7g™sÇ1ò©gÿ_؆ Æ¾8-JÄ/ü z\øª<í-‚á«NË9ÏøB¢§¾£…ß\/{y¹ ãß.¿‚¯€G'|á™–ù|e_sÇBϽhøBž8ÏôBÆ)§™^ÕºUý‘^ø›jÙèź=yô F^ÃWPs,Õmøb7ì“ßñ-h÷¢?á «*áŒ/„RBœñÔƒÒûž_,YRÉ3¾¿åJÀ¯œ^5$ñ¡iṯå”\,_®ô»{’0ƒ«ÑöÌpÑàèA=«m‹ã¸ž”à"×]GçaÉŸ… ‰MC§ðÄm“¿ùo¨Ïîï_Þݾú²«)àQ‡¶îZàz uƒÝDhÑë]éfŸxEdï/ä`Î[]_¯¥ˆ NNÃÿ8=εp ðé ŠU~´K«à´Õ®Ì²rf"‚/¹×T/F;d”ƒ5VÜZbs¢l iM×»‚ƒü¦ËûÍ"¯¾U² ÕF·ËÔ„˜–Ö¼´MñA¾)f»ö{ZÊÔ WLïiÇ• xÇgóW'‰/\}Ç9T_š Y¿ºïN–l¾shq4pغ áIÛM»¸„qÛ£Zc÷$ìJì´ëiÒ Oõ¨óí6ƒ‘€\wƒ['É»†Y~Óã «K”¨Ç°&wËw$M†n› µÍó»hSçÅ’Hwníá¶w8&û0iE›–®Ø÷ªVUjù©Öæ&̹%]Š›¿ŽâMoöVÞ½uH&Ä6kÿ†ìÛðWålõöfdÙÝ®H ÀãG!VØjS±TÐì ¢‡ÖƒZßµ|ø ¶Ñmw]„¦môuŽ}Ä'³FÓ¦[¯Ï®;¼Äšä«Ã™¾ÈáCÌ|Š]/—Ü¢ÛºÉ#êFRŸÔ“§Å©z¨æ0 ÍQ¢¿‘~uÇàPÆX&Ç8¥p •,y?¾ÿ—ùj[+¹¢ï†þ‡ó2`‡DS×]UÉ“MòÐ!Áƒ‰!£ØÎă­Eò0Ÿµ/Uuúœnã‚DBR÷Ru}]{í¯©mÏéé]‘{8¬TÚ>˜ˆêAiäf}\Ú¸#J<Ðñ°ñKôpžK*ô‰'½ÁGíâ9Vð¬•i{ÜLƒE¶ÎÖ0i‡$}Xåbì¼eç#7š†mðãÈ‘K¦È ¹ÎˆPÒVo¡ø¼l³9êBšÂkA4Lw®‹¥Xf4 ÿËc°ªØ;8F/]\Œha[$à5ù¬”xî)˜¥sYTûN[td”¼®Pz,ê ŒTŠ5å™¶ŠÙ„Ž›0Z½²»©­ßŸi [kÆÐjíu2–9U‡È/M'—D‰d%‘[Z6¥“ÔγÕÇ2ìaÚkñS}Õ¡{~‰ Ðõ*¢“:¯Eá°º)|<…t8™$g·\ÂW×ÜT™‰‰ÃT­Ñ„ ÉisÙÕ®€;’t'Xೄ7!]š¸ÄÏ)aù¬‡±`xEW[Éf‡}ñyµPNÃãRP0Cëa^êáÌSJDt¥/­’™˜…ëI8o‡Á9©65Ï¥,f•‰f?µ¸<8¯eYú-csq²#”%ÅcÉ"N€¯ë@’„rg ÞJÊJ>¨ºX´å#ZÞ^ƒºâ£ªÃ Fì)ѧy87™l‘`j:€ÔM#D-ŒÃ ‰&›Qd@f–Á:„"¯cy„™÷!áÆè8z36*/»aÀ«Øz‰%y­=Hf¹™ ËsYêç¾HæÒìpŠU¢Ú‹Nr &®†V¢n†;òʤxÐÕf§2 `ôR^ÈkHuÞa0ê,iô‰'¦¤ `# s;Ëûˆd:Ú¬!^²b-—yTÕé*©óZ€yûüÄ/J²ƒ¨–U’íhÕªj'1K=UÅJ ½Z1¼ ¤‹F¦4 !вÎ2Æ:À΢¥‰ŸÐÃÅœB_ò¢Õ^Ú°–åg¶´³#S¦ïú<`‡åéa–¢dûŒ±¾ðZ#!À2íK¸œŒL.[°ñ86ØŒ@YSsˆ ç\Uöðit"ñbå¬KqÙ"a"dB†Ñ$Š$ú$¸€ª+Óä ÏK<èJ3ç¼OQkÁ³°±@`4 £!³ «7vE6¢º£–t®ãј[ Fæ²^¼X ò5šÂ¨Œa--­šâsWY7<à!=Œš(Ò†‘…yƒ=¥eWÌ „šVqFPNVë}cè|[•µÅ£›p3xmÑÂᢂ*q†-4)¶½AµY(’V·”â6+z†°¦$[¨>¯Ò °o wÉç.¼ëåÓl¿`=•¥‘à0 ìB`NÚ¤Ôhº½²4–š( «~8ií4޳ê“&Jó.A¯Ï¬%;\á– 4ªN9€˜L4c`‡Y=ľâE©ØQ¾±VQȨ ¿e Rªi×D  yªªJ^hÅ{˜·&³ú½˜9-çÝÙœ{p™õ‘O£ï9—EÒk¥ÎÉÛbé.O=÷ pãrV¤|f ‡ÿDÖtBv¬ñÖä p¢fR0xU$H˜-NÌæ.v»¹ã•Ü3O}JvØà*8 ÙÔ@ÌB=̹,’”†=+,fð¥xr$ÞD®Ò*‡ÑÅu¢áœ4"-ÙÍü¹Xw6£½ µ¬)€Q2„ú(+ó¢EîkêÙòÊ@‘YNÖS”ÀAôF³*Ò¼xäâ˜HõE)êôNXNAIÌ<뵑†–u~“ŠÂñ†À|ÏŽ¡BúLÆÀQ‚b·e­%^$àºL^rj 1÷ª¦,eJP«zI4òàWmXaúHõo”²,4´w‹êD;kãL¬€N¬V÷A(8¨ÕØPŠ=0I¨(S×ëj…3aE;‹VyÇgÕªa¾Hò1À±{&yt÷è eÂUNÇÅÜ|è娶à}3·« žé"°¡Y'Ũ `©Æ`ëõê[ߘû« (€)ú  V»qkiZóXnÆ3$ |”¨ÏËBL]ÂúÖl/VDƼ:|óüõÍnÞ½¸½ÿÏ¿ÿz}w÷þöæðDÐï¿ÿpsŠ?}ussýéý»Å»g‡'ny~xrp‹_œ|¿þ™Á?áÕÀ~ZÒòçåïÿpË;œyýÒ´êU–8àè¥Òàtv©ƒÇ ˜/QØÇõÇÏ‚ýã7‡û[õƒE§8hÙÄZCÀðެú³¼¾f³_ò/þÞÀ;oüòÃAÛ§%âä`{)}¦÷‚J=Ñú78H8¤‘Ìy±f‚ Ùâý~àÿ<|óæÛç·w¿ÿðöîÃ7×·?/¿EzÞ<ý Ĉ|=[¾ýîîöÃÍ÷ËÓ/ž¿}{ÿéåw×|øÙòk>ú;þÅ¡à:xŒVMüGÞ¸P8.xmþpPN¬‚ ¼ôn½¼Uó*Üëºxa*7œE$4³%û`ôëÙiÈäS‡{ÖØ÷€Âe`?aï,OiÿmE‰üÙ¦ø$ç½:{ÿ#{s`7“ˆã ξ»â8«ýgxÛÕrc~bv•‚9ÜjÚùyêÿY67?²‡_Ûϰm„ä•u?S(]b+ë¾ñ€Ì1ÛÆSÑ6Gh(ŸlQ…Tè¾ÜúÿС™w¬œm˜{(ƨ GÈTî‚_Ìñ&gg/~dw±ù²ŸÎ7ö©yl˜Ì¾~¦pŸ„O›$¤ª«Üñ‚ÉÇsÇ ¥»Å{ëÏó×öx'í-ÞI~eAŠRÈ;›+‚|?zRhÇ á8þùcŸ„U“¥ÀŸëMs¡ÏVØÙ›µò^ÚòôÙòúo›—ÕBñZQ!Ý\9ZØ…VìÐqBH‰!õbŸ¾„¯®¸¹¼Âì×jøê„Õ:æ)wò½ªª›6៚MTîð)†ÙĆ3ÚÙ?áïÍ|PžM´LqY{±šÇË•­.X_r§Þ3(Ó„?ná v#êe•É뺀ƒj£i‰ øêžG ÑÃû =x'àxg0ùu Ïù:x²^¥¾„÷+Žû[¿ÔPç5bƒûúÍ©ˆlB™¶6ø1¸¦±I·Oó MâK]áÇ ~êñî*ŒÇ+Û>ðÕsÿõXùÕý~œW Žó93VvÐA¾u±R1ÏZµý”jXljd‘*جB+mfžoLjxıîíf WtÐEk7Sí7`}kÞ4æ¬ÞAA¼ §`ù/ûÕÖjgRDßç?ìaƇMwWßêq&ú Q„`@D†$ã…œó0Nÿ½«ºªoß·w zðAd`HVz×W×U«D \^wBбoèÖÀ\ð¡YE»ê²†Ë9°5¤²€êWö*DöÇþš¨ÝY0K4z‹ˆâa¡ãˆ¸r²Ç^8«Ðݱ‰Ð,¸+ާÇÄÅrƒŽ  –xG}8sÙ¬Á›ÕQÙAÍãðÀ1ûÚ§¢³‡žj10gUd!íñ{Ãñ8B Úãà[ÓÌXY§ï7pDÐqk·© bÉç{N‰|×§6ǦwÖLj±( (&1$U€J*¤ŽµsS°ˆÊýy;v7, ðeü|ÀtM¥xûR ÔÒ"ÿÚ nÖ'6ºÈ'ûSôˆÈ6`ÆÈ[¢ˆ tT—°Q€_䵈sn%þˆÏîà^‚uðþxÄ!òSêLA”Y?W}L‡âJä9/í‰58ñßÌE‹8ª0i× ï½´˜ÍÙu2”“‚,›lä‡<·ú4+sç_L4$Nå²Ñh1ªzw‡^?¾$Í¿Qª—¸Nêk) ™ÅV½­±œ”ÆáJÕv˜O–œ2,)¨¸BÝdªzõ¹*¯…Ë}Ö´d)n뱚á‘V…屌Kˆe7 °${˜g—£rn!ÞRÑ·¡O‰ÄÊh ¨†ÐAp‹î o\ø±ãD‰\-ûœìkÖa2Éd¹És?Ááä‹WÌZ,dy`å€äS<€zóŽÜtXb·$°óÖHL>Û÷9†4•+Gðr5£Ù¹¦ÐÖEªÌ¡[ aZp5‹»Ð+XW\XãâCÇñáØ ácï…lÌ´Ta¯ïЇ¬+G‚-2|­1‰á - YˆÒzÖ¤ž¬f0ŠùE%°Õ!“DQŽ&Ù@Lrïò†…õ1„–·ÏU]ÇÒ¡–˜Éñôaâ¡Ôîö–WõûÑÀâ›Nè YÈè\—3zTÇf¡O`–J GΘò!äe"f&áb\‚˜pËÇ‘`|W¡¬h`SŒ6ª± 'bé£ÊVN$‚(æüçyꙪ‡äò¸\½c³Ù kQò?¹ôÝmŠ}i*ÿ‚¦ä¦QíÞº{šI¿©Ä, q€A† SR»\o@¢R…4Ÿ¿‡O^,/_~ŘX hË È–T¨+ü8à0^K®œïÃ3EàÊ¢ms† à—rÎÎ=|¸öbIëÂÃØ;“»ð]´+Þ¯W¯¾®Z¬¥>¡7a‘l%­7­ÿ,Ü\yáþøìÌà8 }5pœçíķȦ^»‹›Ç;öÿûÍ/˜ÉÚ¦µŸ:ã5o¸Ü ¬‚( >"2‚*åwüdþ%C|óð“o~Qÿøóç÷ßþðéoþÍw?þøá‡gü› ß~øÓ_žwü«7ÏÏß=}xñék$èòÍëOŸ´ìòßÛüKüé¯Àþ~‰—_]~ÿwy7o«³Ú¶lé$‘”Ò‚ëŸ VxÓuwàÚç¦[Âßžaÿ×R28(»?òÿÞŠãçýZ}ê­årµëwM°‹ÄåÐ$ÛØéíq‘9h-V¥q½¶]ëFÕ—¹ÈÞb0œsÕ过ÕWÛäìbû¾¨â±ömJкÜH x`½€IRF`¹ÇŠ¥][ÒíxÓ›Tà‹ ŒM‰ÃëÞùÜFüŒ5ù¯-³kaôoÒÓ…NMsßi…`òÁ¼ñIçö‰5ËÉÕæÍ¹¨ïŒ†ï,ðÍý§N7¼•»Ù»™ê[5¹W¿[žÕw;èV·ÝlË;=|³áoŽÆÍ”ß­Ï­JžËþú6·|œLÂ}¸fü©¼øL©/À®åßgWq¹OËÓBp¸°¢ŽV=êÁé3ødÂÕêJ‡Ÿ;ªVCtEOVuhýpº†óé+÷ðnçäèÄ¿øé§‡Wþò³/=‹<:0ëeì|î‚iÉš®V|h &o /m4Ñ‘ÆV÷’ÕLª’|[@¸‘(Ù’Ê%DzÍóªWq%Õ|x\®±´­³ÕÏ"Y4†vÁq§Vr0ë£~¼Ä©)WLñ:žU'™Ã¹˜ÙD*ZÁØ.àÈ$Œ?s\@³à:ý­º,ØçBMá¶Ž:"ÌnÔ-jvE¾*‰‹•lad»¾Saa{Î#]CXðÇ3žQ—‹AËYõ"QЉþo E_g…˜’77bìêSŒLPˆ'Wf½PôkÚBaáJ÷+‘7e‡4ƒ«²löÇ+Å…ƒÙ n.¬ðpWNœtˆ+â˜ñtNÉøŸL§ÔNp­<(1žëƒ3-Ö|(2X0lm¢`-tn°(Úþð6_‘*hÈ îÝ»â£ÕE+ô!CØûó€X©z{cª‡ÁL8<½_ÂœŠ¶õ1A®åÀ +¸&8 ß­cŸ«œü”º:Û¹lï%••;CNv:]ñÁ½iPÃÂÒ²ùÊ šé£&ñÖÇuh®¹)p[+À9ø¸ï Æ`Gû¶ZÀmµ-øÜƒ0[T>/Þb”ø´^¥u\9¼E<%‡ÃÒF uÏ~ÎÄ"æOݰbk%æþxÄ–ªë”AU7qDجÌZBT¯]j‡AþRè=¦5 ²NËkm7~o°ŸÝ”–cÃ[ÛFõ6‹31ªp,Ô˜:“š’€PÇ5À;“f#¬¹&¸ åú8 íÚ¾]Íå¿“XU¹üE8Žq lOÁlM“KZ§0X+WKª‡bÍ·”u‚Ö¯ïèÒMݾyx% WtqZÒ6´~ÎyÏ0Ÿ£ß³ŌşNY‰·¤òU›wfm·´mxÏÛ4:Ó,g]íKÚÄטҞ6 ʶÌLÛniNö¬`Jù–ºszÅ­Hþ4ê¸twÒÎ ±¢ÃÎ ¢X©xc,84íeùG¥ÁIb ¸1Þ‚Oz„Ùìø@¤ðôÈØHw“ UʼSy ºÛŽ¼ì¸¨°<ž•œëdÆ“KMUáÜSU:hßh¸l?i°› ÕMÌì.l xÃû¶9Uö½.ßÊ]-"@ÒPS<<–ª–´k €yœZ‹†:A/)ôÍ.bhÁ§r³¦Ä§ÆR]5ûu[2Ëã9Sæ ©/ñ5“s7­¸á]pLÜEw—¦cõ'+°Ëÿ¤¼JZ3;®è^ ÿðm¶¢æaiÇY$($7„ugB­…ã&äßçÜ©¦'9˜¦ÛÒq½[·îtÎUuk’w¶ð”Æ+Ö×Ï‚Xuñæmœ²‚+ÿÔ„ßšÍy¡ªšÑ6N[°•ÿxp%™LQÖ¿Áªìi+8âgby9ŒÒˆµmÌÎqR¢[eÀÚ C3¬ÍkâbÇÖÌæ[ÿŠ÷¥š65´¦p 'îÇÓ¦±¸¸”Ô†ÛÁ©ÜVܯudfMÛUp³·c3u&¿+Ô¸)ÒeŒn¢ÿ•ñ:°»}Ïã9£JP1šì‰ð-ðÙ‹K]Fý 4üT°°\ò ™N˜Nµ ¢Ká¡1°¾C(»71˪ƒÀ$.sR0/‡…4ö f“rnLkÄž³cý!ñDdAê@ ”B[¦âµ9K›”‘H©QHOGõòÏ,ÀËbZ#—]èFÅ5ÚÊ$\½›$SàoøBg”óÁ,T¯lìZT¬Ž‘Œµ.¨ü†¿Í¹&@T½f±hÞGº«J˜øÚØñ -*Ž¨Ç›E6)W؃61 †Ÿ@íê÷eRoR`J£ŒÅªò’uWê!›x€³±³BB¢¦òrºšÄÍã¢ÛhÄwj gÉ —˜†+ƒ—Ô['#ZØÝPy‘PqðpÐ6NpÜeï¹G.Є*:dÐ8V±È®a¼}OLÀg)[ÍRyŠeè +UAÀˆrdÊQ§ÊS&*H$Ë#p׺Îï¤BE34¥ÉüÊŒ ¶Ì…ˆöæœ#5$>“dZ†Ih^ÁÞeç…¼He BÈæÏ c):>X™ ˆÓ ˜j,ÓBÖ½ypÅÇÜ5“)$ÎCÌPW.‰……c„hY½Œ ¼,&ÖYWK˜(D Ù¢¨ÞªÀPg– ‡½O㨋kÀT–©R£$O\¤Ì©šç0L»f‚>6)&C‘‘€8®yp‘•/…ÙÂXCÐ6åpH1&-&Hºà•‰ãj£Â"FbHÝE~K娒ÎóIç*Å|*Ãè¾Pª&­Ó4|•žˆ@@-T02—6ÞÀ€ÿ1oÌQ3’Á¾¥­¢­QùõdŽš‰zÛ˜£R £v6æ Ð9GÍ¥Á×8j¦2se#ŽŠ7™sÔ‚ß*ß6™£Ò„v¡lÌQÁ¶™­ÌQilËЛÌA`ïm#Š—ÖÞF„ûZlEâ!¬ÄAË“ƒ8È]MÝœO”vf2ÅÀçÜNæ €A´´9$´ngŽš‰ûj>™ƒpŒ¬´1%8ÓêÊ´ó|Þ˜ƒË¦Š¬Ì!–7æ¨NJicŽJW¸W樕º§å9* àÔüÉ„÷1É”9ð1À¶M¶ ƒ9jG¤W樽À[™“9JÎwaGñªq¸ “|á `…fÉÉÀÙ²ñFíÝFÛä ¤ÚfãÚ³ÑÔ$ŽÚ‡º›ÄA fz:‰ƒb?ÂF–^ÛF ºÚOâ <û7C©ù7U)ž´ímún™?xXõ9n´AQÈ27Ú ¼û²ÓǶ”6\4NÞiƒð.ËÞ¤ GükêÐh•µmÞઠ¢7oHy™:TÞ Z„ 'o`ìK¹®¼êEs)oT ´C9yƒp16ƒhD²o´ñ 90m i„pÊð<ÿ}ÿáØV -9X˜>Ÿ8-_¼âµ6…Ê[¸Úy|Ãþ£zñ-þã!"¨VÉG¸çÂ+ΡÁêõâ­vþêðZ¹¸6ñ_0I(ÀÓ'(Éóâ× ýúôeÁy˜`ž·Ú‹Ké¡F—¯N¼³‹s'AÒ˜œN@¶¤‹ìÄA3)ÉE ÛuÙ)ª€ˆP²ÇSR>ÎV±µ[ º0 øóç.Ün'A…ž)¨†ç3–Ãk †ÕKtžÎèL×8ž¤ªsïbóO3¹âi¬s´ éŠ3 2SªqU‚C„ÄTöÃ!ÃnvÕ‡aáÀŸ¯xÀFzÛ¯ ­•zø¦ ªóùåð 3{ÏÓŸéKæLYté¬Ðׄ˜“ˆÅ‘ZD®„|ÖáYyd; zò‡Ùœuð þ|â£Î×ëFG¬¾­Ý³>d9<Ÿ¼˜½Äç韵F‰Â[qí¬ÑׄÚþ:RK a?ëêß•rFk¶œ³+8ëàüùÄG¡¯×–X}[ûg}Èrx>y1{‰ÏÓ5>³FßÝ÷ÛW_ßÞÿp÷îþWßþ¶ýõ7/¿ûñË¿ÿñÇ?ýôéÇ—û;F¿ûô÷¾ìøWï^^>|þôñæÛ×÷wîöíýÝ—û/÷BXôçý þ~ú°ÿÜÒí÷·?ÿÅÝ>âÌû?ÉÌçE¬²T&ˆØt–0ê,µ~7W«€^páàËÏRëzK–h«CÞä’á¾ßö…‡Ï›8 0äðòŠ7ðåÞ¿ÝóåþÎß¾ççüv+²þA=Cýê«€“Hœ7&rѶƒŒ¤BÜARÄÁ¬x•]@“·4¼aN¡ˆA©ßÃÖe-Ä’å{1ÏEprÓœ`®ªÀ†áRYðç÷®]ñÌcÙq^5¶SŽ„ê ), ¾- W=‡YB6NŽñ·˜°iÿ¢*žýå·« É·T Ñ)õËáØ«XõMvC‚oËkG~zií8Œ:ñ]o+ÂuÆa¸ÞÖðêmÑÇ+ºÈÖ‡<¿ž ƒ–Ñ“!šs)·+8ÜŸ¸7 æm««Yô¼& ݸ€OÖpCijÐÚ©d±z80¸ïë`zh5Ø º—"È\Öl”WÁ K²é÷C÷Xô®B’é¡JLáhóeGùÜÎè‹Uf7z´Åª|™bXjÀ:!‹­½q J§ù ¸¤aé=ÅO<ƒ‘RS#ÜàìFÁt$ÌCÄ?Ë+E£ YT—³ð€õú¤’ßìg5 £þÁgï-•G`…ì!ÌàDßxÀâ1É5›5žŸ@mµù£3´è¤zzc¶2§~óîþަ4N ó¤·™ ŠqõžãY¼”À@| ²! ùNU¦äwãjàÑsøsKˆâ’I Ðרäî™ Z@ÑÕZÃѶŽÕ,RºÞU¨ˆÔ&—ÄN^# 2}šÒJ(½Ã’ïŽÚJÆ7Lø”ó‚ËeÑ—®—Uéxæ’¾·Äf}CÝR%hÈìƒ>-'nZ#½Œƒ¤zK}ÇpÔVŽ]oË HwÂMð ÿ{Ÿì"—³xpl!ŠÕâRÖE¯g–ÛªÛùiÀ7É›âö”›€M¦ï‚!Õ$~†Ã3”º¦š©Üó°åwÃC©EËè{Be£à0Àe!%u~uˆ™¨këpu¡IÑïþ6Qâ f×dôTh­QO“g˜gÝø>7-„•X¬ÄÔæç-Øç¨Õk6J¹¾bà- ¨Tkí8ŒaPJT³Ê«+VH\¨‰gâþ¼?vöÂBZBÿíÕÖš×uDßúßKÀ†VÙ÷Kûd«}hùJŠ©¡cd'u‰peBþ}×ì™}=çÈr¬bì(KûÌž=3kfMOBljçú2HØ0ó”ºUds}­íÝ–y®´«Qpi&.0”÷Èæ¥ÖÃø‘G.y•%_0ºC½Þo®­û*ÑÇŸ“û±”V]*÷ª“’C‚©á/0 È±çÆ³…Š$´Ãü¬×á݇..öåcµmÞPs³Êø¹á¦÷œÑîÔQ‹Æy Cñ¨ìãöyGx÷ð‡‹6d¥mÇš%MåÜàVÕ×jw/tq—ïI–ùi¯Ô÷ÂäIMÌ}U!{è[ø³â“GG+퀋óý/(šrÙ&@eÊ5ybsá6p•ê]$›vE†k®‹8ÕU‘bnV|c¾øöê"Ÿž<=½þÇÅ7¯.¾}ö—ôæÏ·ïžüôßÿýíÝÝû·ßôùû?ÜÎø“W··ooÞ¿;õ”Xþìâ›Oô‡£N^ÿJ¿ø+~ú°_Nîô·Ó?ÿ¥Nïpæõ‹ÎðYuÒ§ZJ‘¸^úæ^Mœ·VÝâÂï?Û…†[hÆ¢ûŠC´(Å4àçGc1šc:{u€vÐ$?ÏR#ZоHßTùW´_—ÉUzÚ$!¾sßMý£8¡. ØNŠ>¸$äú÷㦪|V ‘xfZ?úô0Ӯ£†žÅ»-5!ÍX`§®ê÷Úëÿi‹7ÝfÆ=¬j{3-m. âsØðD¸¹iÌQ¶ƒÀ±‚×[¦¶Ã‘ÖQ’}TäkÝ$_;N{nò²¡$žÎøµÊ²2öŒy}wA`¨‘,î:±é±¾È»L*VÁ„’ùpÏ%™g=%Í‚QÙ8ƒAçúÍšviX÷³l8–Ê“ ËE6Cˆã‭Ä:Bª[öÚH+䡹)º Ê.ìœõŽË#"¦>Œ³(P6Ù§å°«C#’<–5b›JPˆyï[Î"CѨ÷7‚æPðËáÎy­€Æ…mý>oàbÝÅRÖší–fÅv•*“ …(éÉQ1Hl½«õU¹‹˜ä7`Önh GhH÷² 1Ö½OËŠ×z(°{ [[kÓ¯³®"µs—r£°ŠCÉ‚1¯ öxmØ•‹Pzͤ¿B3õgoýz¤»ŸÕÓÖþƒ%ÔpÕ$¡07Œ/]f–PŸ¥ÒàÚþ%Ô`XøSq ‚¥WL0sWÀ©MxíWæì¦ÆÌEn®SîKå “ܪ“¤vÖ+Møª~n¼àŸ*¬c¬­Uú{j£¬P?´:L àF­g5ï7Ó$ÀahMhod3é8OBrÀúíØž­2Ëá2Ëô<jïÆYv]ûŠW1m_¯«‚`‡ÁG‹qVt› q’$ð•ÔÛª^&¸*ªìàì‰&5áUm¥&±»,ÃUxáF¡ªkšá¨"Mf]8€³†Ì—¡Ì¨Qn‚M6aÚÁYÅv|¼™GØ$މ™™õĤ¤SÛiÆÃøÑk3 tŠ–äkRóºôˆÛ—„ óÐÈ'ðyû®B—9%¨KÍÇiJ$±­D§®KTaѦӴWM`ßÁXÕT­öÍ`R,§-0µ­fXéaGrÛ-‡&,êú ·Ž"*ŠZETÇg±ÄC|5q£¨®g»Bšïá³F*ï [í4áƒxÚ¾ð!âi;…oV|IÑÔôŸEmš´À‘vˆò«pêxSN»râñ•“ù åäÑÄ¢ÎìõÍÃ,m¯QÚ™{ðöðÉj‘JäÖ ’$€(ó掽„á¿éôo0ð2X{úåb×››~k ³7/QZ‰ø Åb1b•\¨¸žuE]@@¿Ò HÓcÉ–VZñó‚G¡ð¹v›Ç°Ãwj²xáó­ cþž/ ñ´ú>|ºµÇô§k•×-¦ŸIÚ”Œµä1ÌÖjªx±yÄG ƒýZ:”ŽÆ–÷Ü,8HŸâXûù®VÎÖ¿Œ^Lmx±u)…ùî—\%É”Q=¿¹ã¤2ãö~ï@ŒìËšo’sf«íùǾmëà4ÀlH÷áPV߯‹à?€¡Òcîƒ ^z£ïÁI¹·A:ÀÉK ÿW6¸Î†/bBiy½þ±©(™dõ) ÈzÎ}ìC½Ú÷­'™ßY™ñ†txýnÇþ·o¾{öñîO®ï>ü|ûö㯧? Ložü^_¢;Æžž¾{y÷ñÃí§'ÏŸ?»¾þtóâç»·tøééwtôôÇë{be6hZ5vô¯ÈÊ}YãPA9·9qÃ&HÉPô%ºiÙ hœcÐWqËu»,—$näõ\ÄJ\O&e¶€ÕMEQÿÊ#¼÷Âì—¢œË¾Á‚æÕ(ÈõXn3ëöa¥ “µ,f¤ÛÊa’ÅZ8=¯%=²9àÙZnopI¦©Yƒ³îÇí^¶~F’ñ†z–®¡¾&u”h(SmlÊM4ÉÐI¶¾;ªÑ¡Î±ç)“7” ÷#fcÕ?à0*ýÖû6|ëøãE¢A3ëö_zàÐè¾$z¯Vö«ê¨×RÝ­ç£âßeÊ.§Ž¸ÇÖ=ZïTåQý®E¾eÃÕ’‚…%›Ô¦’%€†£ ÌÄB;Áä{úÊ/GŒ”¢ØDs%'µÍͼEÁUvQË €)apð Ð5jŸ@–”T(¢lø¹X°´÷‰Ã‰«è9ÈD9‰~BuLʦÄ5ëbôÒå¢)~!y*YiU™ƒ(ØUçÎÚÐá¶rJc, û%1`bp‚ÅDF™xˆ»¦~’Nâ–¤Ÿºw©>Wv#?cH·Æè¸jâ©Àhþ‘®:/0ýÄe¢•áã›PKì=q#¤0L$[˜†cÐ2–,»ŠT u&dt¾R…f”)Tì%¹µÌ¿ÜøK Ρ÷Gm{ºlÌŽqG¥Ì ä QãbO`nSm€u#û`•¨”WÀmu· îZ¸jAÞ;Å@°ë*KcÈ~:JUì\‘‚l9]˜X.´nÒÔh-‡A>¬A RߥàÐ/! LÇø{!ªCœúÁÿjL*„7{ëˆ^OÏÿ¬nu9¦×t´û_£ê0üñÜM œÅ1¤‹0íóœØ‹`‚ãp–¢²ŒK‹(C›tx‰¶b =Kj~ŠÀÄKº$q&%7Â\fvSlR·—ƒÄÄÖ¶¨áòÌ$Újf"ÀFïÊÎŽI'¸ªßÏ}ã¼À ÊV,HDcµâW®í-ßÜB>|™(Ôã2Ï$¼+­½C-a¾®Ý”âbÂÐxÏ5Ü2Õ î2„ê–ÏÜ60Vmp‘»|Px®äKÕISÁ˜‹(ëyÄZÖØÀ”òn3h r2*#”"!©ôTN WJc®ßXÇ2\ZÐ ÙUP†'°n²ÏY^ãô%È_ÿí*G–,·þDÌÚV„&¸„Ý2ÛÕ ÆnS÷Wb! V÷ @"snÓ:v¡wΫ¬Y‹^Q°¶ùª‡Œ%‘¸ ûãžåV=Û±£B T×7³Ô?h$&ß-p«Á«š>%æOU÷ÿfVáU8ô\ïݵ'ƒ*4çVL½Ñšù¾xTD`mp¶Íd Mø‰ЈÅÈ" ëI( XN˜/Æ„ÏJQN]òn)]•4}/ª¤ô7XÁs1ñs+AýÍV/߯tØ^ªrº3VÁÞFì‰Þá»Áˆ×¢-× ”ÆÎJô®Á†áȨž ØõtÐ4©c`ãsÎ V“Ï+šÛî Í!”n ÌØÇ@½ëOÿ%ÓÜj@“Lñ`§÷ŸAúØCfð.}€fÖÿ _TFdl²ëE4?@Rµg‡‹O-4i™1B3”ÞZ€R\nj‡Ðº…€™Ü³Žpq! ¿¤hsàðm½I bh6=0ßÑ”ÜYÁcÅzÄÖCàòÜ7/V; b˜E«ö`tÙxd@…}˜3h¥¹tX¥ [¨ÔŸBg‡‹Û_~FîòtÀŠp€-2§éï}5\–<Ë«U¿B9½ô2ÆÕ¿Oú(E¹¹ø^Ñ=ŠaªÄç5|@e3¯\L‹8pSmZæäĨà0²½ ‘ÁÔ©,퓾е^«™ë•_™WCMÓÞô°çjÃóû,Å|îÔ>¶Dô}~ß~?ô¿GÊg =wÂ4ÙOš¯ß•}ßñ¡MŽ˜vJtq J],r7XËKU§Y ¶ÑlRA“ð€+G°á[,i×Þ‚ ¦Ìž9ÞÍž~¯öÒ§¿ÏÏÀŠˆ£&˜+%TXb`ƒò*Ñ‚B}?AcЋ±·µ¶ ITv4Æ‹X ·¹s‘GP‡ŠqMGnpI|jio–+•êîb÷9xx¤¸v¼æÃMè%`(zYdª›éß”c÷OÔ4»²Íx9ì/ß%ørã/¦ƒ²½Q&f¾×¹~oþ°=*…ŠŒw)d¶—dš HÈŽ2F‚k›ÏhbB™¶=‚Âøãn{.ŸqǤ¶çYÈÊSÞQ0Pkôuº ¥9ú*«r£wØ!‡2ë×°Ó,.–g)°Vë« Äÿ’l2‡ç£M ŒhˆÉ`ÎþïJI»•CÈ’+Å{äYº×Õqé žâÇsÖ_}¨‹Z’ÿ`ƒÓgà)^= W£jÊNW‡˜MXwÆô‚kÁ  +qÆQCéîJ‡ÚR¸öüU:Ö¢ÒÅÎXKo¼dꦴ;Ñù\N¶Qâûkfaî@XÆF×ø2cF‹ÅQ´™½½(Ÿ¡… ĕֻuÂû¨³¥Ê.^_çÛ€ÚøWe¿JÜ \X¬ŠŸûmŠù,:)Gõ÷§èi‰bkWÙh‘ô]Æ‹}8%€‰>ðÃmÑ`²¢„¤0оÐR†îÿýCÀÅŒ+M¡h§¡†VA(ŠÕC Õݼ/ N ˜4vÑóÐ+ãbgð¶Vø]*{"iÓ).'uíPí'7¨Ôí¬Â4ëí{rR¾˜RÄ蟊‘ŒZë§¢À¹c´­Sº×1þªÑ÷ú»×¦þ|å°  *“;SJÒbƒ%2éµ_ìLeÐàÇÒ³1"¨­“–eÄ¥›ƒŸþÞI%ö®¥„"ؙ֔ū|…+ÑÿþùGR£FÚ=½èµCð¢z8\GDkxEÛ9­ØôË $qÏ„SpŽokª,¯#±éãi }Ƅ臜H­Zsg‹öYdÅRÔÈ º¾‡r‹‰«‚žæwEÚC霥 „Á3¼f‰ÑÕT¹¹hµîDwDëŒbE#–Jq+`|ž ãP ¡ßÏ®ƒŽqº Sھ WÉ„‹…pïÕR¿Oг¨Çkõfúÿ,%3¶ŽaO÷ƒÿP™`HÂ¤Ý þþěըbXQ›¦m`Ü…¯*ÖtvÁ®Î“o€Cl1zŸ*ùâ¹Í)fàô!Š vŸÖEŠÑKR?V*{;UcKÈ1¿Zï~>Þ¹¡ §u‚]1ƒ[óiíä$™À'ÇGAXñ<Û²*‘ñ†Ò®A¹ñò:ë^̦ñûÅ žÇº+ï«ê–MäMžß:í6;ùÒXk$ñ$Võ:™´ø‡*8”‚_;:SfЮMþ{ãEÜoB‹Õƒvg`ä"åÁN?hM+cKP(­½å>¿¸–94¡àëx_ÏMĨA!L×~±ø4&NÃw©ÚN›xª†/{î;HÚNý ¶ÃQ‚sîiãÄò×Ü_ßË£(’¼+Áònª—²ßãž=µ4™ž0Õþ‰I–{ ðÙ÷H¼7WûÇ6螥¼Ö”[Rè3vÀ"¦ât⊟Î)™uôOlèȉÏÌû½¥ ^”˜à>¾˜7@¨þN 1—½–ت=·'ºØOÿ¼chMÂņOÓ­…‡ƒÖM ª)µ{âmÑEûür²¬¤ÌÈ”ëUèÙZÖx1Vq5wV»Õ{Ÿ3úaìüS7@¿cÌ ó,@‘My^nÔÂEYTY™Eìµ]3gÂ!ÒbkýYŠ×¶ÄଢóKAB-Vv©µ 0¿šáÔ^}1¬¨§ZµøkLé¦Ó¾À…‘ØîE {zPÚ2RvµZ hÇ©€ˆ zœÓœÞŠC™îIâÔ?fŽFÚ´Rû˦ÓB1:Å á–Igz¡ÓÓ”å£ÏÒZ JP9eá7W46ó!“Ú½?7¡„|Ü"}½Öµ§—•ž:×ޱÚe¤^µBúª±¢ ‹K –ÿÀâ{•åæŽž¥E8ÎBt#1žT@¢7£ bœq¸«±g…ô…ó|Þê!l÷I- šYÕ}Ã1ñÍžÏá{ìsܯÎ}Ô ¸T1õŒ×N\þÿŸì*G¶#‡aùTÍ|—VJŒúŽ'œûÜÔTwö ¿ŸD‘ :jÕóy ŽÏS"Û_Z =yÊ´s%ȃ:7¾MúqR²xN=Õ}]_’0‡†anÁ@üe©ëd>Ý~/žörêzéWGHÍw²nˆDsöªF^Üä}17@˜nž^È¿}U°Eà®ÛÐÚãň¥-IÓæEÄZ)Øs':¼Ì¶¡ò`÷R0´ºu]~äÌ©‹ŽXú]}¾CZ=3 ¡ö®é‡¥‡Ú[·ð@ DÎLAÉÒŠTÀk}–ÌOwVÍÌ-É*Ãኸj(Ro*¿K;í/Ã@£ÝÏX"édÍÖÙTÈŸžjÆ}¾Bv×ò§L&gžWW¨ws¥îa9q’»œ öÉÛÀå ä&g>`Rƒ8ŠÌ 21tG ã@À?q€[ ¯óñö’"åÄæ  ¶ÿˆFru‰øý‚ŰG@gž§Ä¶©"`PcÛ:Š@ÇM¢þ>éÅöY›Œ9ûXÄË*3ù˜Šd:Qf÷Ï_‡lþùÿÿ©¶hM¹Út*I‡þ¸]X=ŽaÝ ÀeÍpƒÇËe¸Fã(h¿eÁå8u˜ÇÈGµ52&'n[#NðÖ‘ÆžqÀLæ¿ÇFcŸ>…Ç3‹´%”9„ìozQñ2M[Ãñ:ìc(o#vДwÂJ»9æ¿—ËF»?å°(éL™Vî{®¦°#ðˆ’å–ôyÖÄždvìÊà6ÛûËn^@®ÚT‹¢VÏïçf¯!™G ?½°ëf\pFÀÚ0£+Ñõª18)Ú9a¬=Ý;–óý‹míò§Žâ rF'ì0&º°Ù‰Q‡#,6”¬…‡)ˆ¾õÔ`ôîÊ‚ÝÆ"èÑÀ"+å’ Û9áÁ›->^{ëTš*·Ê7€­sO!P‘ܬ‚% ©ý«û`»˜Ú9£¶È©·m2&ÕQ›°µ½”Œ™½·ªù‚º´=`Tüt¨œ K¿ÄAÓ±ðûêþ' /ÞÇ‹ýãÕLjL!ˆrK'¾N÷,é2câ‡=‚¹ø.2V]qB ±IµG"j™N2nRñÑoa¬òÝ&{:êAŸæl•~·©Ä´âËÔÓÿR7š€ÎFû(vÃÒVRZÿý>ËØùT]^ˆJè””¥¶ú5ÊípR@0ê(°+¥ bk›KTQãÒ¹ÞŸBʦב Ú}¿¤ÆU]$G«œQÑ5)08µ•“”åP¸%8°qåD¡ùΞ ã•hÁhÔÏ»¦KÎÏ[ùÞ­KÙëHP÷3îíûéø9èûò+ý0³/S¨¿Ò‰F‡d)÷œð(ס§¢Œ¿Œ¼¹ö %]tTÎA#¡½~kϰ‰g¢Q9w¹¥Ä8qÌ|W–è6$žZü¨ÙÁ)±9 ëF¬ú!à^ÍMž®çVô÷ÖÂè:q¶ŒŠÆe]sàÌѶêS+ä·«ŽôÀ*Ö´bWÕØ‹òOœôûÏÐlëîÕÔ•‹í$šníŽCôá „?Cæ¢ìU.ö¼ºUö%9ËTŸï”Q¥•õRÓè®ü襀}íØiŽ^ ÞhÜNTÁr æ…ÁL象ùÈcCóýÙ†¦`š^•8ïÏ='ßkÜì’ž6pJUõDž⚟¼Æ-nT¡Â›WîjÈoÁ„I€Žï}:“´Å™mEQïêö‰¶W1çwºšŽõÎàí‰ÍŸ2G²| ÉTXÝ5²¯¼Û5ßlƒošÁÌ º¤S Í!dšâ=64½ëñ¡)W ]­jKà UIIìTÝ—Ev-ÍA‰ÚŽ.5€ Öé;[õz=½ F´Øm ü8>ðD(¾ DÂÁì¨?òmäöÚ0ð©?ä°7`‰jÕ‹{ÛÅÿó¸°Ã,üz‘0hZovtÊ>•Á§ ù&ð>…øh endstream endobj 39 2 obj 18816 endobj 40 2 obj << /Filter [ /FlateDecode ] /Length 41 2 R >> stream H‰tW»Ž-¹ Ì/pÿaâÜЃ"¥xNê/XÀÙ†þEJ¢úì ê¨%>‹EáJO¡Ñ¾z«ò$Îíë_A~z­_þþõ†[fö³yôb`î¼.HCDÁöt"Y7ÔgŒ– o‰Æ—]:XñšaBYæßç§ –ëh¥¼>mPäÉ­u¨¤æz,3œÉ—ï;(©O,="<fßçþ\¨BüŒ¾Þ_WæöP®üñ~†¯$å66—'¥Ü.¯Ò@PÆx •§—ÜãÑ6ä‘Bìi©œ'HOà ögP"» üP+z˜òS ±ØñX'½•ÍLàeAÀ[zˆç[I³¢NµòŒ’ÆáTfMu#„ÿ¹õ¡:K ñà SÑ´;û“d˜°»åyë@e }}/U·Ðý·¯Ÿ…§Ò&ÎO‘>cÓqߘñx1«ayr+ú+Ëò Ÿ%n† ›oÆsÓxÉxÊ4¬#µB”·]Y”î'giëMš?ÅÜ ìâ<Ì&;5já˜y„ ça~¨ÌB–¦F‰æ~L° †¨'3AeÞ¢AþÙ0u‡Q¯Eï@¤{êl ¼À*Ͱ*(³¬ Bn% ðÈlµˆƒ³Ë †oÌ¿gXSé>Ê(¿eë¾³=Ûþø>ºiÌZж6|–ååÀÌ!Jè(!`™ŠZÊ©X-BÓ2mžáBð™°cŸ‘A–PUË2tœôi„&8õYÍhÍ róJ¨Vâ­Ñëð²AFÍ2À¾Ø0I~ru°ÆE èéIµÏvúïïôõoã…úÔ^g·ÂŽâøëÃ(mGŸ•Jˆ†L¯9á÷ѪCÚrâM¯(æT&e§þ”6{ ÁZ<Ƽ0g¼ò8~…U©g»3•Ò”n ·I6ejyh4Ä"~ì–f(‹q//±®I,ÄWv)?û^1€³†Ìù™KuÐC£æJbKr\óÁ¥¸•°‚dFÁ>Ù˜sFI  ¥–j¿#â–~í0ÉÕ³Sý)LÙŠ‚ñ 0h[ªÎ²ùëJ9Ø„öW}Ìò±>e²!cR!:³pPk ó9ÁF€u #,iÐ9þ³:ü¾åG¯ÿã?¿ýñ¿ß¿²U)L‡°_šúô¯7޾ïY£N c©“ù‡N³r£¦L>儃♠áYP¬©Ÿ™ Æn[ ¤Ž­ãTéKi\î—¾O<ÊhKËhKA1¢×ø×s&v6äF~xY‹´Ê+à‚W±„[QUÖñÑ” Rç¾ÁíE½Ú ~©H³U$Äàê‚%ft虲=FZÃ: MgA€º-“ýµ u$¸´–´ìh&$žæÆjQ^ ’þû^78®ÓMýÏWiŸÖ%l Cs )·mŽAÌW)YNTjâÃXu¶y졪®¡vG .߯ ©:Äz¾K¤öU·'=PS²çhÈ%ðÚÞÅpÓ†Åô†}1·îÅ4šÓhn‹Õ°ÛËVˆAØËBC…£˜äOíÆËp¼9xöBméÚÙ÷B^,![Ì®mSY¢¤šæßW¨·µ„®£¨Z¦®;ÁRƒ+}0gU¡ÛZŒ@f¾œÂ…]üòŸ°ƒ2 ˆG  Ûž…°u u݈¨Xµa]s™©Óþ(º.sN]õJøåëoEDTÂ:õÉ¿Ñr®Í5FÀ¡tg5ÐÀ ™ê =ÆšYO*1Lƒ…àÕŠÐ çðŪ*—KÚê´(#@þ­.tíuRÖ\Ò¾£6|´W£vmÒ,ý¤g”¼º¾µ„¶>ûlOPýPš”sþPM×Ù²”‹¯5ÐYÙÛw«Q_Z"Û¹a{+p¶cª'?ܽvùš‚cþ½rfÅ\/¦ÙÇÑNI×vE¢òÚCølðëú˜æ|én:Ö[ÿúÛÚøsÉTüŠ*­mxŒô¼WŽ6Jm^²èGMUH:;|’j^¢9¤Âygß›˜—0)Tuì‰óãé À ªâühÛŽ‚Ò%_üÁÀ7ÜÎÙu+È‹j¹-=ÊØkÛ"ØèV n­Dz¨{ôœ“m¨C8¤~£ ÞìDüÈc\TÛŸ”9P¡bªÊs LûžØ5\8©c©Ñ}¥2гÓõ>j(IàÆbWʼýÇTdÔ·ÿ€ë(ü>ŠÒ×ÈQ³¬ìù¤¸Tã…=Ì&xÒêY¹À-ø,—yk×à5F~Oi³·Qœèѯ=úc b4Ýw({ÇаÇN`Ñ[£˜W›jÞy½z³´ÐžRd%¬ÉIT¶QC5þïu㺭‚&6ÚR&ÿ¼nùÀ¡¼”¡¹‘Á60 8XhnY‹OÌ浨>Á:9Æ­·ˆuÍ™\\ATpÙRáÐ Àœ[ùàÖÆ©ró ç- N0Ó/> ·> &\„ì=„kÁ±ƒØPׇÞ`²õÅ(H×CGK øjb£\Ê}Åj1 ÀMHP£™êM( ž¼zV.°G>ë%ÜzåXpñI°vóIðêðIˆ@lèÀ¾¹gñ ¢êjFåe¶±¯‹k©}5bß.`)Ц%Ë¡®£»½³”ñ/F9øÚÕ~Þø^ìÎkg –]ëbpãì–Áá³…†àÄ5òl·!â½fwrºŽ¾\?Ê8UzU@©™>@¥Ïwyh0dWºÁH¯òY?ÊA*ó]¹Öï8æßï^ GWÏÚ=·ûSß‘C»™çE»ëû7‡ óï7—„£›t‡¡nkï¯E^8lzuÚoÝ­€¤ùÀ›ê·‹ú5¯^Œ5pÁ«^­¨¬Býeʰöü1&P±Üö üƒ« öTÕŽ±Í$Œ_¤˜MqœQ}÷á™ëÚ´IÊ×¥ÐÝø{ƒNß/¹ KÈëç¥Eþ¾ %à‡PŽ)u¡@:µ)‰o? ³Jªùæ2± |rÄÛÈ#ôŸExøä¨Ç›PŽÔ „rDi( <ÅàC(GB9úf”#¸£ÇN—œ\ uô~8ºõkhÒ³EÜ}VŽÐþ{594q–˜‹QTár¾NN}¼ÈkÝx–¨ûy%©½lÕͬ½ü?KÜåÿÙ÷®£¾BÙKäÍ'gá |rVÓÀ'Œ%pÁrή[Ÿ .:9Ö:9n:9¸ºÁêm¬Žq>Q­U'w>Rª~ðÿlW»ne7 ìøn™1$RÏz[·A¶ H·eþ?×çne{¬#Q9œ¹úO“‡z ƒOîæ>9À‹O6~Û’ß¶dwØ’ÛaKþýø³3&Ùc½¶Xÿ){3ÂJnX–X2]b]0†ÎyhUÆ]+q¹—b¼÷0º^Œ¬37DíÖÊŒlOlþ:…5^—Ë¾ØØ‡Q„P©fßC91º—⊱®=!eËxë<ÀâmÖ;Ú1?G¾í OÐÐÌå™Àû°½tÖ|«uPz¼øž[® ž=]K® ˆŽ™¯S®ßàØlxÉuÝÛ,¹®GY O¹®0%—ÛF?­1â–ëzW›™§\ç‰bk­\Q«/Ëë(Ú¨gÎÙAT‹®œŸ,U뀒Qª@ÔH.¼7Øxm=v(T‡5Nb"[Ñˬ©½ÃPð>«_¹CûâI³H4Ÿ ȵ-<ñ<5í6åQ<TºòŠ 1n Õà\À4›»·AÙîPV9#SÙÔ@¢ °Ëç.-öÏ0.:!y,éÐEœT.LD€Ê3x•7O‰§mûz€§Õ½`ï³s×Õ‘ggûžñ®^?/V‹Eþ|APнä>û¸8©$0ePÒæ¯’ ŸúEv% ݧ‹‘IüVžŠÐÃcí¥áúàd„ˆD{œOˆ¿¯ ొˆÆ}+«çýS¿'ˆ`<û5”¥Fþe‚­ï›?¼&_ëS^Õ+àÇy~À»Zö¦‹<5€¤ŽãbÏ#Ø O»S¾¸Ó®ßú³Içá<2—CqZ»å2‹ç¿{ý‰2äu\9zÛÏÇû!MF mâ<£1ƒ‰¼ …³õaaê0a)já·a9ðmXš*; ¶W­â[)e8ž:Úër,(c¢â²,ÚeÜ/­xÌôp,¹†ùÜŽX¦ÐŠÛ°öV> ‹€F§‡½À­Vx–c×mXv—_ÙÁ~e_k‹ðK¯#[íéWÖ2Š{ E¨5aã9<æLäe»áÇ_ø•„|Ú®¥÷=yÂñºè:Ÿ§(Ü|•M%—óV¢Ä|Ê ¸ ÎÏ¥õiX,ï†E`~éiXNð(î{-? ËÁiXŽh·a9®µ Ë‘³ D 1™‹X†…'ˆC_kùÉtµ¼º9}ð:íŠ`»µÝ®œàiW¼A)ü EžÀèOÅ#¾ç6.R¥oÃSØ«šPFž²¨A© · lÛ°æ§à©T TË+îN5ì‚Ìh€E\P(®ÙŠ÷¤>L_vk“䎚„¦<¹TÂÅ{ŒAò§‘Žy-l2—[½7ìhbTýÛéx°Ü#ª¥!Ÿ]wB¯¤±/ÿ;F/#ÛVX…UI Ÿ½\Ka )ÍœTs£–Fð¡àho5ݪ±¢´kƒWPÌ(Žý•åѽ03”Œ†NmP€4µ5äœ1g1° ó©û­%Š`Y~•)â—êJ/†üˆë×Nã±c‘¢`ªìûµ‘ãpôeo)pÑ8"Œj`-m:¶òó1°(F­s³T•¦¼9T]˜sÂg³Û¶0gS-,`¤±bŪ*v*å%”Gr3Ô¼¬ÆÍ,³vƒIÝð—Á¸ý°ãöx#¥=@#Û»¢~[dÅB)Ó®kȃix]k­‹ü3×Ã[·Ü#ª€ÁÑjo¿0.؆oP†– « J<*sZÍvʯ¨±Lìié½:ÖFµ¨PÕID„ÝG÷›üY6ë ¼ñi§˜Ï(ôhàh% ³«´WÐ’?ØÌÀ¬Çç ìÇJßO#óï¥V󞱂ws‹âVÏ‹¯“Á¦é} ’غï33¡«•†tóMoàÁ6<Â6lq­CJÀÍŽL´1û^ZH¦ñµ”VÌÇž åSÚ[E´Ï;Zé Ém] õ8²I­õ‹9êç’sd`):VïTgÎù~-úRî¼Àãì Ò^{¢~Z¤ËÒ@D Ÿk‡¸=nE^Z°š¡s²«#…¤„&]c… løBtØf£2cªdãìo³»–ø†¼¿íü|=`$A†‡ä‚i³ˆt¸ý£Ö°:ß©‹%Ê–ØWPìÆZ'G"-4‚ù6GJ6¨Ž ïla1†éI¢æˆ÷ëZX2žmx!@Ô”f Z(YÉ×ü鵑RÏ·ñ!xŽ©Xmøq5-e˜=5KíŸIí@ÆÇtF±ÈçT´÷\ãzªOºÖññiLc€q¡kt3dqéùžó,uÌ· ØØ¥Ë0pîæª,)Ûš†ƒ Ôf'è`Ç_©øŒJ¡ýxɼ-‰Êñ›(Ò?{]ÐZ1\ˆH%eGKP!Ú°`Ó×µ²ÓP—ž¥êÊ1-ÒÃq˜©5”yl€'LiBìŠ_ê†üke¼kdNéåÞoÂv@ʼ.Vt˜-Ø‘Â]©Ž½l'ºÉGÙÖ0s3 ˜´v7Üàêœö.;w]ý¸#¸Zw»Ûü¸Ôâƒãþ'uÀÔ`ÊÅ­¥HÿÌa{3j½÷þ¤.¨²O“z›æ`S¶Y:”> ñ¸is7ºŠx㛇t'¿Mˆ}çG ŒÚ)ƱëBœW>Ï»žóž2àr®R¼@a¦`¡<÷4å’=Xɾ˜…ìôE³¿þî׿àv¬õ]ojõ·hówѦ]k•´§¥à­úI£7Šj$Á:Xm„ðš¹ø ”Î2ÕHA÷Tcmt5%Ž'ì?HA‹ÆžÚ[ÒÈÈdbŒÅ˜µ8öë‹X­û†‹µ~Øú¶£&éP°ª{\-/”E@ê¬e§-þÓmÕZË£Œ‹1áÒêRÙiº÷Œnâr—IÑÃ{RàÖÇÍÂ`Ê¡‡ó¸ÀÕk'8²=×Þ²¬'<އúã8>"ÓȯûNõqí£É¹ÌíÝ$‡)ìîbÑsì‡3"͘`‡uC»Ù‡q·!ÿ\fH÷JL€VèÚ²Ïù¹\ë>¾OœTþg»ê‘-=u`>U³‡‰Üb¿Ðé[ã ½·þ@œëhæôå¤îViO¬fŽ <^Ë_ö|GfÒ’¶Ö;Œ X­òžaTpå©<Œ*XÆ;Œ¾`:û‚-­ô=Ï0šÈÃhŽö £ùJíãÖ-ŒÔ¤«gºÃ¨<á$õ÷gå ¶dåîxw&oE°³g&5måOÐ;Ü#؉–ðà_f±%óxžð0bÈ;ú° ¨Âb ™\›Å_¦ bñ®y•—Ë-¡îl³Ciu<BfFã›û\Í­„…À÷ÖßÙCˆÊëŸ&BðéšsL„€êKý€÷\ÓZ)ˆ,NzÔ¦þ©d‚‡ 9²§— úN ߯¯¿e.û㟟?ê¯ÿéV˜Û”*žUÌíïpݤµKè÷¦M· ` >±¦¿Ùø`Š;Ô,Ïa¼.ãUŸ9¿,>›¥«ûª|ã¿òµ£¼—[u=~NÞŒþ:?fHAmßl"ÆV„R_O)`´¬{Ï ="hYÁ{Ç”lîðcHË·ëÞÓÒØ&ñ-j!TêÙ쪛›ÛõÚçG%¼BužïNé™Ï‘RòŒ7}w2IyÎB•Á$T>2s6=Ãn à™vS°wÜM×J:u^ |©eÒR«’vz o±c4-©‘ÊD l_ò+D*Ý{Ÿmû>3Ïo_©GÍ߀Ųצ1Ü[Qí{wºŽ\^HæÏ´P^ruóBD6ÈýGæ3•ÌÆ-%çõ÷ŽRëÚ£mg eÜlš2ÆV“Zuƒ|ãÛC'ttu“\èL•å«¶s½©ê嘧ÝÓ÷»3Gݾ'Œ¾‚Œº+ÛX;LnÝbøÈ¢%—Z€›o#^ðMqÂÙŠçÙ–ÅoÌ7˜¾ÆwÝö^LÌÚç8fßßç:KӻʞçM‚0ÇŒ$œŒ!Ø5Ôïä”ãZeÍ_ÿY‡Gð×_2ÔdA•· ½¿ï8ŽÒŠÐv‚T˜ɘ‡v Ï’·CwÕÛÅÙd†ål6ö9×WÀÅŽé–T kbŸ’Td}–±†ªš Z+}åºìô yíP åˆ ÃÄ£ NúÙÛ~ÚWè={¿+¦¾ßMÀ9S©8×¥g}“ImPŠ~ˆ&~/ Z§äKŠtwö½lê Œ4s¬CfÅÒ\·¨û²“­éwȘ±çó›~a¨Ø²9¨ÕåG»”ö š½ ´¶µX[É*c¤;ÈŸö)øwo_法¶“ч´iYîÎK"—†¦fßãY¦Î²³‹—[.öË줠5™ð$V@Ý fÏŸ¨¾Ö¹”r±º’¡®rp—vYN¯›Û(KçN‡q›öúp¬Õ‘0ÿ^&ÄÝߥ(qÔ¸ï9ô8ÞTÇ0ÉUßø¹ìôº–[Õù èù~rÛæSÍ ƽ°=`­à"}*)€uyWÕd†qp¶mšC20Ð b¶ù3žÏ­ìc:(W àŽ-Öm“­ÞÎØ]¼¹ ¯ÄqÊkÉç¸Ü­}Žª°BÂÿ~*ˆn´xû*ñþ,JÙ‡q»c(¶²‚ +ñê>…ìy:J©ïº’­lÍ:©¸­_w4ºñnµ šÖÌމͲ¤£Œ=»—Ô†yÁal}^ê˜Þ–N ¯ö2Ý´°_£"QëÈÔ¬Ã5ÄsÐ¥`-@×~É“€Çn€§Å–J䯑9€‹‰˜!«'‡«M½00ŒBUãåykI¼˜1J/t€Ž;œ_äâ.V®–nŠÚšLßõ׺ƒHá>ø»Ó5üÏÏÕF¦!»Wwe8õÂC÷wåÝæ®Ã8@–¶f ð‚~¹ä»rum)ó‰Æ … ­aI®¬žêÔV¶`‡ÿ¦2­ ã;TxQßéKàß*ù>p•‚¾{›±y;‹.y ÏekQÀš›aM¦­~1û¼ËY­½KÅx¬ö±ç™bßóÅðQïo°Pžî/d¿‘ð=[¾4 .;¯XuÇö0(n"¿¼Å·Ö€ýÌj¾G@Óm¤ÏçƒûñÁ¢ dC.Q:¬5¬ õ “Ô 6¨º<ÁS7Dç#Ãæf½P³ú—W™u;¸V Ý·ÞÂpšÄ¨BC“ Ô úÙž]œ/¸.-Ç!ÔaÁ³L¶Pº:;.…³ÉOÕ]`0¤Í1«+Õ€J÷û­ ØIH¢UmTAà ¶¡ •X”Ô¿Œ›†“ЉªÎ "˜>¤ ¢ƒÅt¨Ì¶s-¬¸ÚtÛ,k Û¬ý(ÁJªí"?–à‹¶>˜€[çC}+Àd)ó»ƒãûtˆ×­ ÉAý¯Ñ¾tµïÀ‡CnÚñ Ãpà )ØÅ¯s.$q+ÓKË~ú“Š™J+Ø{&I?¸¿)£#WÜ~xÀhœŒ“cšÝï¶¢Ä×Lߟ¾•«Po“$§Øá¿±ÍÎ\!j3Ô;ûNdœ#0×aßCPÈÕ®{¿l†2£JëÁᔑ1ûü_º«É®ú¡;Èn£‚ûbkÌrûў̹ÿ$ÿ´§Jñó È„°At9wAY>WB¦jáûè1l±Klsx(‡b£# 0×8 *gw6X±•¬füw Wr”â÷î‰QÒxo./†ÙOÅÆ£s•pÝÞï§òå92Sùø"höæ²NŠ™DîzÊ2êŽu#¸Ïcº"¯éðó"kV±§[0Ó¯FùýFëYÝztû¨Î›<Õü `÷¯+%OGn[Ùò÷¼+áH¢„ÍÁ²-ÍJQ„ZÈ‚Cë—ÆD0r¬ü„¬–û¯´èÿ§¨%ãé‘Ð`»Ž†|I‡3´Çæ€X›À&€xxñ·dÑöÆ~¿ø:¤Kàhú¹5±øÈÖù%©s5-}\§FGŸu+=ÎÂu¢ìá3»c<‚ðÍr(ê†Øf <.f”Gø,5Þ#p ÁË{ìös§Ž‘„–”0k×QÜbîð6nh‡Ðˆ‡˜. áâmˆúü~q<5Šú3|®Õ/ìB#¯ArÚ:AÒhY9$ µT(  õׯ§%®)Ǿhé4¨= 0&½·-*üÜ~ZØHµ¿µìÓ•ÚwØdÀÊz¾°®1?¸ëͪÎ/&+€bZÁ;6v´°ÜПßùjÔK?䦹|Õ±4°|nHÇy¼dP*›D”KÀL²Üì Ñ‹|Ý.­YòÇ×±& úf  ª=Ùó‚[íÍ>!ÎÉjï¥u›A¤ú&S”ä.Gò¢§ÀsG­C°˜æf]k±9 ÅÐØÉ´ÁN4b›ÜnuêBpr/"Ëqiê¬àôžèª §˜ˆ+/–,Þ¾¯B‡”(hÚ¾ÔÁ9«fh‰_j ÃÒnG"]ÃÆ+“´†dÊ#¾Jªª’:ù@&R„5 6H"ûŽÙQÕ”2¡þ*Ç”Î^T»•µtoò»Ù¤Ò–že’¢S=¿/Yª ºQÖÃMõ¾¶:!{,备âÕ‡«ºÌ\Ÿ÷óz…Ï$?ÕRŽ“.¤`}_8um§¬^ `é^)Æ* ím„!^A½.‰MéG ›–¦“BMzXš±ÓÔ±sH Ý•s ¡P¹çÂÊTóñqì›^Þ@Q,¸”°„fuéKUh0Q9W-) Õ1‹”¶© Ä·[éÚ1™’!ùW}°\Ó‰¬’‹[ªÙrOÜÌA¤© LER¯M¬Ïy«ª[ëxWüõÏ;ÀR~dÜ??ÒÏÿ:X­Ðç;>?qð÷ƒ· I’„R@ójèY¥bíe Œ›–À¡Ô¦L¢B/W]TB~¤¹=t7Þbûƒl C h쮢¹´¡k2“ú¿,9…e¯|Ÿå[…Ä"Ø…o^í>d%^鮯Œ`*˜rrIKÀ©…A¼XåÊHÓö'KwN ¸ö-å»d§Œt…±zIÛý^G^ÏáFoß̤£äqTCwHâx½Llž@­¥‹ °V€4eòÙÜ=2Ø.Fåù-ƒ†w[\wL"›™˜,VA÷ø÷ëxË7]ÿç_?þøó¿?þÈÒ¤ dìGÞø˜N&§ß/ŽiÇý$°IësTL5þ”B‚ÊÖ§h0¥¥45MiÃÒH¥ª]ªA34Ã…dtù þ¬¢ÉJù;‘ªÎ‚ŒbëÏ1C©*ÞKçi%s#°êvÅ{CÅêÉ’´CLî’Üê÷‹c­îyîy E[{×µ&nKd£®™”CIâ-9Y={½eG{È&¿ŒDòBØ_ 3³J¨Ò"X˶±_kÖÃj- \3:Ë€uûñŦ;^_é¿î}¥õúJŸÏ“±ë’@í¤ýÌ©Qñ56ïêz"%:¢ì™Ö@ ^±çzxݹʞ¯ls'1ÎcæçÊ}öQü~ ¬þÄZP>]Hòw?âᦠµ¬+ENÀ©´M%E<˜JÂ!ž£©$ðx]eݧ Ôvðw^_éð¾ÒG«¾Òåsm¥Oûô6*S»Hu•TÂA[Ç»Ê/m§»Þl%áIêm¶’ǦUm¥½­t8-+’ªß/ŽÍ¶KÑ0²¨ì@Cnêy˨Óza%™M¥²d|>²kãiï+­ˆf+]­¯­tïl¥{D³•î¹ÍWFðË«³ô·^géBÎÒ…kÎÒò2¿dðÖÊMŽ;Šûé­=/ÒÇ×uøÂÕZt•Îð¨Q5‹÷°ÉŒ¦þõmsûƒVÖ5^WØòþü:ï#%EQb:Ð {¶ñdÞ` Ó䆿G\Z‹„çÈ2.´‡±òª4۹à ¾gl‘yå¸õ º÷xÀ£¼ž¥H¶þ7µqW]âpÒ³iꢇçTå—Rß â¿sWˆ}~"Ü·š$gÓYn¼½L¤Ò6`¢wZ–ëØóÇúÙ5¤e×Ü Î±Îhö}×1zxî3Ç5¨ P±DZ.‚D£~(…Aã½Ja mí(icˆ¥¡Cتt')(:Ò6â7øX|© P“‚õ*£6DUU7´$0Už£\ê54Õ@ü.b5­àqž…ÜjSËz36Aû;ãï£5ñ¿•öNW·1Ú´oàĘN¥asâ©ûyì@‹­¬£|=-<úåÅyŽžÆKg“w§\Yl4€×””ÖÔ´X«ãÅÞG8ÛÙs+ÅÝK `+Ù… ñi³ºÄlæ­êÝ9v×ådŒ]ŠPKyÙ©áH30YC2ìÖŒñÍdl¤ÆFs,éßs芉:ø« 3ÅO·ýu³Nùóãëj)Ä̬% y(á:Ÿü‚BÉuÆ“uÌÈ#Kÿ` uÔi ½èyVÿýÏNq·œ"‰X¬F"–“#‘›~è~ª*߇¬tÕfªËš‡³Z+E>S=ï‡U«AhÀ¥êc¹¹†}À@#†Oöýâ×À¹Ï™Õs±_è1éR6»iÕ9¦ÔÑÌ««öñ¸÷YŒ\ëG_ßs<-Y޽ß>ÀÏ®X¤Ÿnœ;13-v höúÑ”XY9¶ÅбîgïØè‰;[8{fË‘.È6Èwj3µwº×]'—ÒŸ_¾°“F,îJc¡ø}£,¬qÛz(p9þ¢\ùóõ£Eæ¥:ÓjyÉxÚyEžÇãM}æ~R¿kwg!󶞊¼ÉKýÀó¾7hFåÉù4·-ÈE2!Î×UJÓ"-kk7N–íhöËϰÍi`ó|Aî_ÏêG0ô´ß¦ø8r„Ã#HذYt]”ò‰CªmeUjÞ‘"L…Ý2šZsa²îr„)ÀÈ&K˜°ôMáÁO êXâêZG¦#M˜`v4á’z¸ÌÕéräŠN7y¦ûã˜^àFú: }³%*}iŽp‹û„WK‹^ÇÝ æ?ÜMÀÄtwõsiY$($„!)/Ð,‹ŸS¯~Üoì0 Îô­®î®:uÎ"$¹Ϲ=쑈‡#WöQ1,–Xvky¹²¹Ä¬ÛFËç4±LáFË>n4q€Fs«ˆ-梉-ƒ&¶lMlGJ·S{Sü†b'OöÉ[F‹–¸Ëã&¼H²ñÞfkZ㉠Ýcò€î¼îæ°[»e>"ÓX:•掕õñÄÜyl—õX›ÎcKs9í@åvæ­ÇÃîû™Aä–®bXŠ-;Hãçs£2|ËHíÒ¨¨Ÿ¢1ÅëÕfrHKµ³˜c]hŸòëxí’ w趤ƒËZò ½EÞölaŤŽÙ½‹´8xײö„ºm¶~ô¾ð[œ·¶C¥5éGf_‚~ÐO¹).fDÁ4|q©HQ8…ç4È÷y8Ï-#_lSŽÍ0]¾%(Ie|gŽò« i³^À–’17X&úžX\È"jØê‹©9xËÁ¯ý ‚iä-I4)ʇ$/¦WÒJêÿœq9#-¯Fun’4ŽcLj5 âÏ1”ÍØú`ò­q3‹<²³ÔÁÉ‹Õ=&ð‰úJËÈÒ^Aw•4r1,Fç_ Ãk‚×f¿õê44†?ÜUüyJ+rÀm·9¡êMžàÁU4lÝL”¤Û1H®9Ò(Î ü½=ßkôÅd2]¯&à©ñ(¤œŒ‘sÜt掑oÄå/µVZp·E« X&˜òõj`ß’å=^Oÿ2–NbÜœ ϱÚÔÊJ÷@Ü$b4çêÕ}|îÕ"{uŸ{ð‚׫ Hj¿ü¢q`˜JôÆnSS° ÏÉ|Œ\,;Š\Œ/ÚÐ=y'uVÀrJž ŸjXàHÕ§pÑoJPìÐμ+ëáâÂÍÜpœ C»™¥Ò‰¤.’Áõì|° vi[Xà½ë<×CYxPBÂo"œ&.åÎÿö$•Ðxêû´ Íaqv×Xg¹§‘SðÁËypÙv*šðf0wó2¢¿®sQ_5Ka^œLX Üá†M™ß R³ ÚêТƒZšŽ7ÑT$À{Š6DÑÙÞÉÉšAíX€KuEœs,ÃÈrìÍÃrÁ¯†ÞZãaWm±°®†5ÖRJ Vö4M„*{¦Ÿè'®AìßÇPaÆ «Yáäù}¢A %¯c·‚ÓPÁ&„¥!ܹªÝrÑÏÎ4^çþΞ@¤èé ,ƒ½X#®Éæ<_¹ê €o¢ @GË}³N)fyrt…Ä\`e‡¥¹- J*üC‰`ï:ÄpÅlf„EÓroÏÍÍ©ƒ-î݆4N‘ l¥OþfFFÛ¥÷büÙ®©)ì!H!Ø÷¯n~~6_ØÌZtj±«»c:-ÍäVlûé‘É×(0°‡fòˆ¶R”¼- .$áUÊ Û[sq—·S‹ÎÛ%ù°1Ú€i4<0Õh„ŸûzÙÔàX‘MVeTJðÀ#ëÍfÈåÜÔ›ÍòËzÝ<®ÛÃF‘8½°Ñóꨤ“´–ɶ”d ¼Û )Ûþ`Üf‹SZÃâU9±‹RÒ¸=6BÚu9~Ì{^¥Hùìq jµÀÄÉrãújExs¥¦§/Æ•Ç6,r>cC_,ó@˜Ÿ;q^ÂW÷‡ì¶Ïj‰ºßwië`Öz|5]Ç€ø]²y>È —5ªBmŠnÑš?°L¶˜Ôt1Ñ”êÉòT'4/‹aræDì¬Ð{¤É¡ÉÊ.§Ö|üî*9²+‡a©8IÔzžkgáüsP¨g×Ì¥« ¥Ï'q`kïEØÜÇâ2A®lÊgE©1¼À¹ ©bøTØ|]=¹ó"X›M⦶¹Îë¦f–wƒ6v¡o±‰_að¢uÚ˜3Ây| ¼î®Ã“U‚ñXÌe·‚*¡+ª“?BQÄ}¬~„—¢ÉÂ.\ŒavXÑ;#öø]TNa;d—Z²éZà…)ƒB õƒu²qúL=9{V­¤æ(ñY"GÃÁx›5(9F°ð3q…2‡ÁVÒ¾Ô8)½PBfn9_å^æÆ™¨qÆ =°µY[Aü³º à`¢£ð™Lzm¡š¦Óˆ¥Üñ¨e3=×fcPÂ9X¼x¯u‚âD”3ËãoÀßV«Jà›¡kt8JÍò–½GØìÝa£ñ,¨·r}OÖØ©‚r쮦üýƒbõÊ1ƒ]4_zŒÕØí¶GÉ>nÁ:Ôþ? VR‹‘˜ ŠKmâ'‹ôcqr`äK=ƒ?îGxÇ_&hÅÀzù¤yºßEM’ ø(šÍUt³cÚ«5œã üc¹ãè8Ú××Åñee³µÅJ  ©ëùDèR{ï8 …³µÍ5 j®Á,;Ùø¨Ò~(ÝááÌ­|æ€êCÖË{`ƒêÒÒeº@ s,ñqE7Þ8%[·§ÀÍêÜŠ€BiþB#?”ȳ aUfáp;'’=ÿªÀ.¹%Qä€äîÅFÊêÃ,ØìRXÎ8`LB“p±á¡-Dn[ÓXÏ5ö+„¼w1 Qï.gÅ*÷“&мP﵉"ëR"ñ‹Ãk{Xj*б¥®&ñßó°Ëà2@tÛÉÎüD¸’…µE²~¾jßuàÜV5–GŸƒÒ§úÞÌ;²ší¶ÌNÊ(T_îG¦ƒ|Ùh³>j¸ú4-ÉT‘~„lh=ØN^¸}l’˜X‘sr½övEEþ¼OçÐmKÎzt'ü'â†Ë|¬¨B—å2ÂËg;MޝQ7¢Œ¾‹"ÜÖŠ&k+7 l<«¹q‡ëW©‘rBðyÔc]L– ˆnKG>~­nh% É(É8-$^€Æz¡Õ¬g"_d»^¢¾Ýו8 Õ¾óü½(÷ÂŽj;ÌÀ1´kò¡Ã[ªÕý¿âí³t% i¥Ì8Ö´ûöe<Õ}Sq·û5e 9{ÏJGÊIÜ[帳™‡d9’½^à2eðĪ}¹ëÒëVè €¥ ÷N‹¼U#>ËR¹“hýÀÐûç#^€.]äv‘[3=n´pŸ¸aš¶qö PêÎ<¼b ÷K¼qÆ?`©ÅàwØ8Iá.< “Yr¥Çx$ Ç6CØÍ÷ápg*‡+Z-¨“Þq]ÙNÑ×Êh|ô¢ú½Ó:=á¸M™UOF€·q#¬ûÖ;™Ò·Yà…ÛÌ_ìÕ±ëÛÓ¡á{ÏçBøš`„žÌkXy®Ï¤+š°3¤ Ú²Àš1ð•“?ÂñRiÚRÙÅF«î2Jlk)xïS2Ö¢ûÊåÛ®Sqûg¦*JÙ¿v(æjyÌeWäùZÖ zs ÑåyÕA|ƒqÛJ-×]90îܱëõ& y° Ú–¼²úÊî´Æ1Ú¥/}Ìõ"÷Î%†ÔþÚ«¾'Àñ¾ÍŽ«KvÏeÑ{SíÕê[IEÛ%°Ûà3 æ*f£C$v,Õw¶ƒí\ǰsMã<8–caÿ$žVÊäÉ»úÞ“­r6g‰y3çv[ŠðÂf“\‹™zKY f/Œ,>çQáÏš”ö³Œñ*ßÊdëÜj1B¬__5C.¸N=iÿüq”~þ‰XÏy‘,†‰—ì©wœÕ­¿× ³rÿazª%[,Ò°’;[ˆÇ›:¯õä2ÀÝš²€^qÅFìå«»ñ½ŽUÛÏüæ\¡¿{ ¬ß¶fÁ(-üºûú1Oã{¯[¯ûµ…Œ´¯˜Ùe¨éePBªDï2pl­À¥òð0£Om*”ïu4#ÀÄzó«­SÕ?»"Ó –,¹™=5A›7m›âª6³hh«i‹Ødñ2ˆb@१…ç@̽+½LÀµeJAøí×ï¼€’;Gø&k¹D]ÌeÔ™kö4 8¾0,XÀ[Èñ%G» O6P/®|áe'œÅ —„cQG——7¸ ç†Ä4gèÎËrø­\^ߎÙûµ¢l T4øûn…mÒÌ´Q¦DZ?|sPº.°–ua±Ã/x—*>Õwÿ¼€9\˜…XíþªÐ^8»bY#g\å/I?8‹Éâmk¯Úµ8ßΡw<\Øí¨wýÛám3^ñGK€G1–¡bó,ëx…º0}É =_J/ç»ë¯-±¨?-ÈØb/õçÏaF‰/ô§†Íx‡‚ô2ÄP×–X“€ÞˆC¦HÝ8>ëÖ»LW°Ý”­6t×Δ{K¢;~+‚\®óíŠÌ”,¸ÂØ“àœM;#u&`píPfÒ×§+¹ñ±«‰9OA)~Ý®¢OLÆ{[;««Íƒš=jðµ×g]‚†Å1·Pa ììÝÙõ¹qw$ztŽ¢ª÷rË€OµžËË6Ôç£U©sàï­¨§±`xC=ú¥–6WÌqÕnqêR?7^ õUÌ}eк ì3êŠëƒ¼@µáO+¤|Hš¾É ÅR`á6v®Nä?Â[]Ä· ßÄ;xKÙš Ís?ˆ†™&p•¸2¼ªñ>8æÝŽ·0lžÂG—døpË][9ŸÁ‹M¤b_Z;ª&xH+¦»<=m"ÔºøLS××6ÏnšB¿ºœÏß¿.)¬V'Ü»TF ds°ŸvDó^mâ6k”A-)ŽŽ2$h!Ñ ÚêGRWð*1HíöIñê×/à$LDvNpiðFÖ›ŒbÃAŽ5¾eí#ðÖR6!}ÄáËú)±ÿ%¼Z’cÛmØ ²o ·ôÿŒaï"U™yÿÓ€"@u»íû&®2š‡¢(‡ƒÓžînSµ_sŠõbñÑÅÏÀ8φÏÃø¾ûFgR–šÒpcÌÊÀw¥yÊP!.•Ù#‰·šíµGáÓc¥K™?Ÿýû¬_­Êòxþo¬œ)žt,-v”»†õ¡ƒj „ûupCêEÕÚca³«kŽMd«|N<Î%ËÞZ„öÔ…1 Ô‹ Ñî2ÌÀ*A`ï`û"¿¯1¦GHxXIÛô ±3\­]”= €;é1—µÁæEÖá+†VG¿ gàîÅú® wÌÞñ„»Â;ïé2ÆÙ¯ùîqþÇ›¸Qó}ƒgu“ŒŒ[À¢1¸dLyVDm |´.¬¦ñ‡Ã±AwE0M~°›Äæ÷Æ*sWøÃVÇ H±ÞÖâI%æáx: $˜× a+ªìÓÏp¿Ô£á,ÝÉgÀflyÀ^Ã).Èj.3tïSÖÔKÆ£F%]l^aèénÕ.&¬F|YñØLîÙC\Yœ•MI¹B©„×É¡èã­x¹F•ÜÏæÄ»©¡@7[ÅÕÛýœÒ8vvSš>@âICæ+5føÔv˜Ÿ³™ —£¥`³m÷TÉÀÒf„ÂÇ\ê à·N·j ˜aÌâÆÉÅ70ˆz‘qJJp…njS))ÎS rÁ<Îw^>§GõJ<†ó.'°í¬_X\®°Ò«D*BèÕ믷ןÚTF½ LMm ÁMð0´÷8ä›yþ߿ئe°6žåã+ºŸWG²sêS•ìM­“BH™熭A‹Eð,~÷ÜŒìœLË’“ +Žß·€ÏUòÇ\À;jÇëèK«E½ |4ZŽµÎµ4 × %,H‹Û#bH‹Ê ~ŽÜrÅ:²š 8Öàkl'ôÄÐËy¤…Úà€xŠáÂøÌ!ÄûÙ§ŠãÙZïñ‹Ÿ4²×ä/ÕÚýK wO8»Ì#p0—㨟qq^ÄN6ÝñWÿq²Ÿd8¦£žÅðÙC-û˜20DâSXÕ蚥ÌËlEÀÉ«ýÕéH¾F쑆ö¸’hlÊNZ+ΰùª}¨`'¸²'ÉÈyÚnKsÀ¦Äo!xî?,ýázñ+fe¨èeÇá×VáíÀê“àH)‹kHÊýgŽ-=Xä,E|ä"½Úúpz¤gv/d;W6cE ‘M³û¼†R99ê¯9ˆäX††6éó%Á>¶Z7Hþ‡ðº²ZzÞáͪÓöŽG4fCÂüìFÐ çNËh¢jaÊ> Áp‹ÜŽY³|ü”‡œG0I4†À ÄW.€Úæ‹FÅÆT™ê6ÃÁ%mºï—P1Ð%SñÁ}I=¬äƒÓܰô ÊËüv¢v0±d@:k=)˜:·4Ò|’F¬ôåM¸zé°öÚ/÷*èiñPP¦Û.©£·«è’mà½Há½ûÑÄ‚”ìÌ÷—äïœ:áì¤áPg꼊íÝÏKçU“ #ûÏ «PÓÛåàÁ‡m:Kœ< 샖µ\Õl¢*Á`àÌ00FCÝÏj¯ÂgÖiK‰Ì£å¡åToV¼hðMã=WÚ¹*®Ý¯‡Ü¥V¯2®SŶ³î 6\Þd×AQó­íuU1§æ|+AE;Éì;UÕuȃj#Iã {‘{˜Oºe9÷ÖGíXé87f!³´Úµ( ~+†¸DïÊè/Þ}ñçÕødž.»w³ž2˜`ûþ”k×ßCxbÕ&íb™Ãû‹ˆ²3šBkà©+`Ò Àf®ŒðEpªqÃ*Û]†´k1z¸1Ëu ¹cÔ‚N[Jý6ñû÷@<™w0¡Û!Ì×IÎ f³õ¬Fvº„£}`cÿ¡w’£#’²¯Î%À[ŸOpÒÚ™æÐm¨lwÝKQ¿Æñù2íAI…Ñ씟¢9¢ì±í‡Æ—}nùâ¯n.œxôQÙ1’0]X Úð/^n½õj“”¬!œm·NÕõy¹î`?$‘.pýˆžê¦Â;“ÙLk9˜wWâ±jDE ´e"<à3õOÞUǹŽ_Ùõ7ÝvyHV¥7†¡J,%)†Uùypg¶¥m{᠗ΰžêÉ€CÚpò6œž3îºV÷‘?&ø¥Tút~d£¾„ÏÞE4QÝ„nÀX8/þÍÍË+#i’ÇÈS‡Œ VJõç²ËFºß ØêÌyªM”ø(Nnδ-©±wŸ?ÿ’ƒÙÀCïoKœ‡7QƒìÞ±•àsÉk!’Úá$÷Í:_Ň)À–Õ¦gÅùÔ‰]Ç-Þüqc|ë…©m{+÷äÿ©ï¿ù}LöDe±¦Mš/á­xë‚,Õ°GŽŸvzüâG3Oi’QsMûžPë™ïÀKõu²˜È9­ºš9³‚ÆìµÒŸ…'Þ·ÛÚ£ðV™c;æÆ1¤Ã¨Üá·çù?wØÇI·2€ÝÑ „&¤Pâ&v/ÄÊ@ôéÐí2¦à×À`<î nã"ÝŽb«©Fò±,¸=ÂÊ螈Áyþub¸Âõ8׸ ë`ÆÓ^ÿwitíÍ6&¦Ñ¦êv: ÞÀÕ¶ýêÍê›Ò˜è!Z‹é_½½h“´I1.à¨íCòÙ1Ö tŒv¥€%ö3ïY–c‡ì`/dN th^¼õJ ‚^8ôÕëUl\ðÔµ^¤oÚëÇ7W‘~·-££9Æ„Ì#€Ñžm5yU)WYìtÜ^sqÚ 'f¤ËePcKXÿÔnðëGé  ¬uÒP<3 ÐGr/ÝZçW]Ù/7z:§æn…lE2k:»ÍdC×Ä|‚ÌYú*XYƒO¥ L!ûãóï”Í -b öÎíu ý«ŽG9ªn<Œ¤õB†°A)cÌÇàb†¾þŸ×ÕCiEÑ’í)g`Îs¤ø©¼1cn\sl<¶ÂÝpÛÙ) ½zCh)."·)úCÄ;×ø' ﮲:`×^š Ée”Á,Þêø2*¼zñó=#n·Ü#7÷85½êÚmžy(‹>݆h Vê% siÉ’ÿ¶µ‘ÔÏk‘JÖ endstream endobj 41 2 obj 20555 endobj 42 2 obj << /Filter [ /FlateDecode ] /Length 43 2 R >> stream H‰¬W]‹\Ç}ì¸/É$ã®î®êîäIZç!aM‚ƒ‰„X)ŽZƒ"üïsêëÎìÎHöƒöÜ=·ouõ©S]ˆÆöÛ1e¨ó6yŒÃ˜“¶ë«GÓ¬ŠÏC›4mí<ÌÆ+ÀÂ#@!jÊÚ-̧¾Ïëxë`—Ö”vò}a·—ÞÒËîV›?ã,¼ÖʏÉð¯Êó $óćڗã nN¼¨óˆ‹H®–¥ð¿®ðbðA Ù9¬‚ƒ¿·€OwvÑØlÖÒ”Cá–¶‹×šnw–)a`Œº½§Õ\«o´}ëžË/jÚ™î`rÒªx°~VJöÖP¸ô人N£½¦ˆWMšD•&ŽEicrè°Oi®4‹ðÑì@\ïÓ&š³‰ï†‚ãTghÀ‡@¡ ¨œ¸‹}ãû>jž­—QÃ(Õtö[·Jf 2GÐÌUzfhÅQ¨0GP[gca¤ž‘–RÈÁY–d¤åP…Åñ:W.n‘½x’Q·‡ÛßòBJ: á„ïw\*;>yödty8mOšàüˆ÷ép+eáæMÿ_?¿zt¤n‘î4+ÂÜNøq#Á%™XV삃#?_óÈŒ1W¥iŠW% {°ÿu¤(ÃðšýÙ Ž™žñ.V|±È§˜•1@( i®6f¯ášá+–Ž–K[ l‰Ìíâö»cìb¶7`Ó1Öã‹Þq”™édq€g®¬=}Þ&.¹ÔSV!ü ‹WÁÅtòý}ϲÞUT !Û‘ðe½NÉe­ÅâŒ[­¾V¨ôeÐJ°Y†}aq?èP–WÁs’Њv2œ£r¨ce­ŽÂx_.€u&½J`T­VeçC×Ò˜WÉÅd…Ï\¸=2Ç2º¿AÉœGæLUn;Š:@¤Y‚£õ/z‡Å³…e#×Á,œ¾%u|HêiaŒ ûì™$ÀÑ â‹…óª™†G¡ÜPñË\œyM2¼±cñ´Œ{ ‘d„ÌÉ"­;•áè)F”Ù{ǹ«IqCæ÷ô L­:7ýtÀ[í锎Pó)í¢w±¸V \\ÞêðJ.…µ]få.\Ñ&‘me¬žó™®Ö¼ '8¢ofU:·¼G‚1ν•IÖ¥ÎPFœÔ±¾sÍ~Èã?0³J4½bèXuìÅ4Ñ[ ”yß@GI›y´ÁƒëÄÏìä‚ËěÓQ»a|ÍH1}â[.Q¹øp/ŒUöݦðJLÐí¤~ÍUd»èÁõñžbC½¿Á@s¼§X—rýéÕ«²=¢×ÊŠ«F̺¶Ø3îܲíùüjmŸl/þ~õèÞãWOÿ8_ýáîͳŸþûþøñ퇻«G†>{ûû»ûøãçww¯ß¿}³õ':j>½zôéêÓ<~P€¶bÿ^ü¤ý Oÿö¿­oßmÿøgÙÞ`tñ½Ñ­ÃÛ5ûI£cä-§ðÍ}¸¡£kúÜ<°ò9üÄÌ|-ÛŸá:0ê~3<ÊiÅl‰Ê5ácñÒŸ†a?µ¿x}Ù‰dT¬Râ©3í×/(Mš¢Å¥XJñqØÀYâò¤ímåJÙoJü¦UOÆ<QGÚX2OK\ªV¬­,በÊl% %Š$žlÚu°°å°Ãçâ³³™l¾zõÍÓ¿}wûñÝw¯?ü´ýâxõ™ÙqÏlO¶oþúñû»¶ÇÏž=½½ýôþû?¾ÖµO¶ßèÊßëÿ”p\ž”p¢6”i½wâŒã¹­ï0Iôü9!¼v9c\»ìz|ŸÔ5éÊ–rŒÛÔËŒÎ^”K+[1ѧòÎÃxý%é)LõOÐn jr^<Åí¯Ë­V#üp]'ëÏp¡!ªð1ËÎí¹dö ®¯KBü¬h×©ì• ¥Ø° Ð.¯#~ÒHhƒr0X(µÖVægþ«‘xRubYZ3Ÿ×³C·ÿ(©ÓÛ§IjÙ­3Š÷ÐÀ41$ˆ%›‡lÔdòÙE¯O­4WAøüÖ¥ÍǺh¶º-ãÞø¶Æ+@”î¯ÒŠÏÑ™ØmôWÞª_?ô;×"Øe»¤@«(ÇR`ÕÖ¤köDº ƒ¨˜t@cÛç:„Š'³)ÂŒ*Ê.R _ΕëIQæ—â‚ë³V.ƒ®H±¶ø¦‚îÞ¾@‡@]Aò<]@¢XøTJµädxXùÖ¨I³q,´n2XXâý㜚 µiÅ”°z’ªåA´Ày}¸yÐzæëM†!Êž*¡V?­ÞhlDWkýËBA˜¯<ühpìêÁ¥¶ÑxØÁ®g½ÞÅê}MmIåœZP¾…ÃeÂ])Ü(M¢âTò¦pvækç ¤ª Éí|}G²0—a·.®®‹}2ïžlŒÃbƒËay™^ˆá¥`_pS; Ú,ÖÓ´}Õ¼² S ÜY?ŽŸ;ÖÕíâ)B/?Û?η~ÿE“OJN~ó"¬Y’Q*•{Ô¥µ(ÒÅžŽuI¤E¨#9ì6ªXpmEdUÌÃÕ±5„¨–FÌPÒÅÁ½“À»E”‘P·­'+Ó[”Nlá…î–ÁyàÙõ/•üçÎta—KÞ|ÖsÈ…¬ÀvX˨áà;ÒU¸ô´P­^@w(ˆÙ¹”¨Þt;.^CpÆ{œjåoyŒQkƒEãìx7JÌן®Ñö­•Ëo• ]Ä¿Ϫ‘eÏ|ZØ :º–ÌRþO{µíÊ•ÔÐ÷Hýûe¤ÁLÝ/ð”4<0ê(£ˆHEQ' Aœ3Òá„Ñü=Ëe»ªö¥"à%:½RÛe»ìååÜBnÄB&!tîù)­41Šª º½— xã¶O€ ’yüâ³ùë@´ÅgEÃÑØâù³—[ݳÿ^n•Ò”t¥@x1çØ]l:oÎÀÐX‚è.t ¤ÅM(0Äå_Gó2ľ<?K¢Ä5±i*â\}ùÿRÐ/^¡ ¹*?ÏE;ι»]ðÌéÞ9Ï}Š ¬½ z¨Ô֣ІÙjËQ6|Õ’¯6rã!pŽú34qJ)4¡.‡éæÞ1úEñlÚ^K-íXG“‘¤ùár•ë’oà$DgÐyG=ÇŒ’Ï.ëÄ mÅÔ(…çÕ.kç•”ô3IÉl¢êLp‚£\ÝÈëÑ?ÖÇŠúvTÙ)ѦV‘ðØ™,&¤ÒÛVú)yp¨%¶‚c×Sç/î©¿ž^êòôÙòúO§'¯N_=ÿ}yó»ûw/>þóo|ûøøþáþô¤¡/Þÿðá~?}uÿöîý»%>£®z~zòñôñT þ| @újyý3ýúýØOKX¾[þü³¼;áÿ^6çŠé:ÆVvòöÇì’°øX!ýúrÃ*ðûÓWo¾yþðøÛ×Ç?Þ¿}øyù5b|óÏP þÙòÍ÷îXž¾xñüzýx÷òÇÇ·töÙòK:ùú‡BzI<¢’¿O7‘üÄ%¯‘ Þö~ùé´rˆöCzÇ;  šVŠ_6¸ðÿþV`–13þ§‘ýŠWÕÄDéXK-7oøâÔ¡!i£Ä’¥‹’r2æ–oO·\Xá4ïi!Û%åN3iàXÔ&ûŸJâ—†ø¿è«4÷Õ—ôÄ ó|k’» DËïr¨„cH»km«59óòAµœXÂÌ7qTðNÈ™²x¢yRŸJœÎ§¦d/݇½‹î=IVE 7{È­Ñ™í7ƒ‚¤V‚°*>#ééqº-·Å1’t¼GaÕä¦ÃNÇÎú¹g-†“6=é1E„Æ“ÍïƒÁZ;,D–5ÀAòUgÚó¶`Í¿µ€Ý(0îÓë0%íαM®úVßñµu£§Çù¶¾^m3N2Ël-š3—›úèrõS†ºePzÐd°,%°$u9º~2ORrI §Ø£Èä«¶g}‚õ]K[Š@.b¬íÏ,3+vÚ̇°ˆ2K €6[}Í*‚»Ð-@xŽ1å¬ÓMQÃ,å€5ùsèÚYœ&uáJåŨé¡;Õ¤nSZ;Jø Nv.v×tïÚJ†-Û8ÒÅ—/ÞI(.Ï`±9ìAê³Z¡5›n; Â…À`µÎîÀâ ÖÄ2оêaABY#ÐR ¥ÆÅ„¨Kéu>áX3LT‰ÜóuД†£Í©{lTáœJŒâ§£± :ºÎýÞ•">d›Ërè˜é¥DPE½zAâ©ÑBƒõrÙ‚ƒUÀJ…<@IfAKW+¸ã} MÕ’Ùb¬‚Eëâ§ ,jɵÀ© Û|Ž’"? BÃ+h`®•Hýf´Î Üö‚_O‰ÙŽª,4ó‡ лb”e ††:M8×ðìRR žç@ãÕ‚L2¯ÝëËÎB¬³‹þvÏêÜâe—¡c>éÅ›¤hº\…:4­1pŸ/ºRžsÜñpäu›¢˜€¡­ŽŒ¤³ZˆE cWÔñJÇm[h€»êÅDKrüôñ t.Nv / ÀAú6\‘ é,X_°Ä•°­Nb€v¼ö¸š5ûÃÑü ֔ʰ¥ã€“N]›Å¦–˜9jñÒ´BõŒ ¸U€c¶$‰Ì—Zƒ³â}ʰà)“e9\øà‚¾‚Xñœ·/ l3hœÇk«‘QÕר/„ÁBž,W+O_JÔç`¦•ö°úzCo˜¦ ¸$u‘<ó ÄH4Í2 d£LJ ”I°¦Þ¬8œàÁ3¡•®xúÌ#£¸¯ubÖÓ‚&.®Óm…­‰QÎ\‚0\©ð Ì×ûÐzÐØzüÜá}ÅÍ㟕ÀœËÄFúâ÷5ã-þ®+jBŠÙGõ”ÛÈÉ æc›€êBO§Z–¦dµªU h¿ÅvÚz³ Ð÷!«·ÆÇ‘i¦æ™ñâYSž|8Ųbë4l ßø8›²r²¡ÆîNHN örã|Çs*’9Êt>{#Á˜˜T,NÆ=o{Ë}”“‹í8F/ å V®€“ã¡=c"¼gÌÚÚEQPABgG(„‡&e g™N˜oÍ·¾kã—zœJoKbN£Y%ÜTa3ãùi†Ž…Æ9KÔqîßW+¸3ÌÈ“U’ARRê·e‘ÝÄÿ<ö!ôà |e2¡±­ÕþX/75·&!Ð7fÐg«|!Ô ‡]+"[Ê΂wܨ䃉a¯j!ÑÖ¶=œŒ™¯;ŒbŠÏµ‚…"#¡Ô£³Ì¨„3Ù§ØÅ @h@¡”U´¸6ãÞ3“Áªái 0¸¢9cÉáL©;w ÖoÒ<’S‘©bäkšÓõu§\.Çžõu S:ÌZÕL(A!=~S3UJ Ë”}Žø:ªw„Ëêæyƒ³’2L¯Õ)”ÆÂ Ü¥¸ýû¤1’ßÌ,t~¶cîêÉdÕ@©>ˆ®ÆòYŒr£é#øÐ˜A4ÖAçü†øQ3FÁh|1(y„^#y-¢³% ÔÆÅΧr}¾  óJ£©ªQY˜¯ òX ”ó”0kJ:Fmg˜}ôy‰ ]mfqg/«¤ ébœZ÷–óޱL³eí³€ýÊÌúˆ S¨—ž <Ò PËVj£LäèÞµóÍõ• Dî®u¨¿(°E]'¼ Ì­sã8UÍå†õÛ;l ÉÆg ŠÌ«À $øÊÉ¢B&DÚ’ZƒÔ>¥ÛöÔTy—û7ßUŽ#Y®¯2'hh§d—›øî Üéû»?()åR…‰h½Å5¨ *Ó,$žP 6Û€3°9•ÙñZ¼ λg­Îûfð×É ïÒÃä`äFéÚÖJxï>ßrÿwj;»«YŸüŸ±Ä×Å“ á7uëŸË”žÂõÛSdÖ˜@§ ‰aª‘߯Äï±üXÅ ‰£ïQ&.”_ ;‹©g0 ™‡x¥@…Õà ,pÜçÞÎ|lS’ê ¶Iæ\_§VpòÁ*ŽÉšg}vŽ‚RYš¢mø0Hâáѧ?®ÄáÝÇ>è—b}½!‚Y{'¬ üÀ•Hý‹‡#ÎÊrZ‹ë÷'B¹9ï⇳ÇX2GË›a_?V/’¤'aÜKH¼õ§Öb`Ö1iXŠ“¹L“0¨ ¨c~®‹RK3pn»óÏHöX NP¸ïÈŸ&³(gô6MÈ΂T©^•ý€'£&°Õ´—ëðÜ)‹×Õ%«XtÁÀ>Kœ£ü‰µq4½:ñçœÑž×ß]J»|õx;úì¿4e ÑÚòDš…íoà›@áÊÀ»@œ ,ÀžH°£ýåEx6|¢~'¶_b*Ž`>úHñ¾¥»^6Jça›½JÀ¶üÜóý’{å÷/h&?¢‹»î» ¾6î»fzF0±g…4ne|`[¢ký b¹0Ík]'CÚÖ¶†á;ÿ ì¶?êu:å ä¨ï:[z<¯£Þñ\›OMœPb<¯½‘J|írè ó³¸ÁÏ‹@§çî–}|µÞc¸Î6æ3ØL.Û@¾œ!•=yµ{²‘*˜G6ÊA3A;T/çûÞoø°Ù °§UöTÆv§XÜŸçéA›Õi×\ó·¡Ú·B³^Þùä±_êIÚæz÷n³hŽ®|â‰]·\ç?ðü\ã}ÂÅB¿m5iwv1ÅkxŠA¬øò$.iJÒ¦oÙTQpeg£Cñ6Îb Ðg0°BwžI޵皞x"(CÔ–`íþ†Z'µŸâl+H€5ü¶:*3¥ Þ¹kÏÈœ }÷o…Q-þ†ZY%L˜Z?ÆŠ¦“×üyx8l<»ÅNÙ£Ô¬«¨ƒëÊWˆ>Æó*Ýn YGßÈØ¨]h”I<_ ~ÿV–Çáoc'Aï&¦‚¿ÎýTÅëòª@¿©nGp.2Ì&rjжƎ=³å*AÛ/ô¸j™À_ ùï˜H"|€¸,´½F?èÅB±£`X½wµÃî½çÎæ5S¾ÌãI“/×Ä ø> ÔZó83àZ¤]ñnC³»ècÃ9L™­ fËxlÈ-|…º‡×ÍÌèm•F‡íjõƒ'Nmæ77ìj2"]Á´²û&'M‹ž •øñ’´#r1¹@@–nøþõüù|à,_ÅϽ€ÑyY©Ù›À¡½ÄÎö4þùHìåˆB¥)h×S;Ã_/õÖ­½»±½¡ª{ãáQM0î†cªW…@§·ŒÞ6ÞÑ‚×ðFd·uäu&´$]Ø·àÂ𜙴]™JYª·šó‚mé—¼¼ÌÂ0ºw3auñÍ]´4âCÌbܾül™Ý1k±Hõû·OI€²êäQ*zÇl[Ú-àÐ-àË ºáª×imK¤i8¥œß nƒe„b¦ÉÕÜUŠƒsÞà! &UÑü½»Í¼‚/^ŒœÂXª&60‚tuaî žŽ¦éóªt›¹:ð¦çD±-FÈr m6à}¦8‹b4p;“cÔº½‚}Ô3s»IÇ™Á…·1}OëzU«×À´µïÉXOôdÊ룾Nöù-¨ ‘“}ÜI/Å)…*Ç ý¾Z¿²/rj““Šq6gL©1qQZ¡GZh*àº|>‚ØáìE È;/ 5i'ˆœb¹æ#¦¼}ÿâ™+£Ê°NW°J¡IDFåÜÏúý(`¿š]7Ð +Á=vhÚ@gÝJxi-ûá¼ `«‘QÉd ‚IÊɨlÊxËSbë±sÝÇGÄó`Eµþ>v üÆåÅiŒu­Ð¸I•0ìf‚s«FQ–×ó‚8•Þx²°ñpOšuÚ`¨{U¸NO@&ÊV3ºLÎd­¹·ü!ÎÐFDZ¬è÷Ow1ª` cý¬L*ÑrhT\³üt–ràQöÖ_=÷áþá [/ù%Qà^9-+ÇGg:¸¦ØSØ®xRlŒ‚Àµ+ p|!îßîVSsæ2vR)Øå2í³´óh–ãoxÂ¥qP)d³µœ<~ºoæyÙ‘Äà-r ÃfÂG·¥”lñ}#8ºL T˜ËôÊ=O€ú¸Òbï}†{œ# ‡öÆì³rÔAkшú•™¦JÕ†š¼9 —Y¼ÂW@dfÞòÉß «f?ìëÞð…`O2ß^ÑulÆ+²m=ŽD¢lÕý`+™³‡·e÷LÛ–úëƒûŸòûêL²¼IS\)9ÿNì)™LÚ¹M òæ,‡€™™2¼¢Ÿà´v8*Ûî4ʰlÕ«ªÖiw:ÛÓp–Þy Ì6œõ°-yµBišæDEI ൓ Yf›C ±X]´ªµQ¯ïƒ·VñÌ.6L€—5œ¤•JM\ò_t³ Þ\ä¢5Œ’UœéÂûœšúí_wDÑàÅ®n1…›Ôi†yÇÁÁ².¿Žj ÚǰÝè ˆŒbd&”3`ëcq¸§+âuTgV¥ÂÃ=Ѷ½¡07ÜãRÆ8ÄöǃøpŒõSU••+p>oœW–%ÏÙðšÐWkÇ-ÜJ)±ò@WéħX+(f«­K*Á!•;KÓo¾œaôÌÝbhã3p:k\¤pÕ˜ó:½ñ!¸Æ¸FyaÐ\ðí½¿†<“ž3:nµ¶ixÎâ$úÎçǽ¹'‡·¹º×cÅ\g5¼ ¯n-ꆚ5fÿúË¿n¹ðèÈÈï2xUxR“~-E-‹U±[ë¾2G"Œb"­[–&N&ØHU8¥âg+ï‚õ'¼8à—‘ŠJ4-¥/Ð2œeUàðãV'<~`yüØÁ{Æ`«,°Ùgó3Ö?¶Ÿ-3x¶xSß4ŠhŠødWÝZŸ“ûgöäE«`Â&ÖØ”¤U\¼Ù­Æ4ÃZnÖ¤æÎ˜Þh×éöú„4hîÊ)Ö«·'?~Φ4¯^î9wn<¸K›Ÿ®,Åÿ¶û“)O4çÚ픸Ÿÿ!²m"ö™Ï¯szÇÞk ¡µý ¬F¸±&‚yúPC­Ð­€Óò§!øÂ©—ìà\ÉÇð,.~žKXPfæmc…ÏM]Ž ­y›exçG³¬S?dCòÿ ¯väJrx•9A H[nߢÝû»› $«Þë]CR âÄ pN.ü»ͽ1b{ì­ N¤ÏèÆÀ³X¦uÕéðcdÇ=v§ùê¤Ñ„»/N€Ý'¬þ°*íÓkâÛë¨Eà…:ãä Zƒe‚<#!itoçCºÎ—eW$À¦*¯ŒÄÔä05’¯é±oÀ+¥–ôN)¼œ]Žs¯¨ýŽRâ¤3F•w Î샽#¯3F”çϰ–cìðª^Ov3•xpmëÔå¶½§d޽‰š’Ì£ûx>StK h’°¡Öî`=g@Æ‘–¸«æx­÷þñ½Ž°` n[vÍVXöÒ4“¢Õ­J}´Ã>Hóµ=i8–‡¨ŸK ‚3rP•W~öê‡ÑmÑŠžý˜Ü™Ó¥p™ãn^Ò&;ýÄÅÏDààð—Õ§úµÛM<Ÿ°öE~"T/³wk£ü‹³œæ´ïßh ƒ|:ýÖ¼±ŒDøºXò¤p_'¸."€àÝ–½?¡!µêp°K`œ< «ecM}‹«Ý{ØZ[Ü2±¯ä5(Ì~¯I¾iˆ9 ³…Í6° äy&¾Ö¶†¡|­Ö¹eE&kÛ â}u¾çБu>í±—ŠDÈŒlí ªùç)‹'^Ù¼ —ã,Jh.I5ðœÑV~ca5Ûþu=h`›åjøž/»6Ûè_kœ$ÕäÇ&AUf讕Ìaöñ §‘iF#‡u}¹­&/§Ï˜ÜÏñŽ5»’²÷bm8Ê…}º\j¿(Îé²uF—ˤêܺ|Ä8Õ£ú•¥Ý§6²üM;GQìSàêoG”þ!èkÕ@u tÒoàÝ 7žméì¢c^n8¹3͘kÝc] ¡û«ÉÛ™3 §•ÝôÅNám–Š—†¼“É*<“횟øÛ-NÔº§§É8(•à<äu—²ôW$[A{¿Û~zÛ l¯¤mÚñí1hcQ½Kè2þbúêÝ=|Õ寥xfñ[žÞõøµ·I%uƒ¯/[ÈKì?à Ç2zàÑWŸÂ«Ì˺Ÿ­{ ¸J9V¯²?Jî4/ ÿ¿òäé† 3 aÌ š=ü®30Oz_Û¡Ù5hO·K!Åš¬–ý Ëö÷èðú-_<MèG‘´]FX¸â1*.¿F½D_Á¿A©µÓ¢_Ï}úÈiÏÜÌ·O ¯\ÿç¯Wä#À=å~Šè¤îY‹Ì})è—ž¿Ÿu8O\ݵâùoà˜¶-¥U¸KÎ&Ë‚’Ý&ôÏÖ<qßÜÕ~áÔXÐAü†ÕMYpj¢Mù~GföYìc^ ´q©mÏ0¹,°åþÍ„#¬½Æð3ù=׋.êö|nbjÿfÛ^ŽPóô}ã>}¼ÓÈo–Éx¥óOL¨„)«(:&öY †ùÞîv8ïJ8¿tU³`¶šp ,ߨð„üÏêøê*ðcÊ@›™J/â €P Ã+%ðß—0MlAn¥I=ÆáìÕe0nÑÀÁ¼jÌp3õ‹üÂùf[Ucá˜ÕÏØýü½‰áä˜t¦d„éĹŒyépP½¡ž¯)˸–N´4Z›ÜþGò®—po RrhÖ2C81y{ÆÞ.TmçûóØÊ.ãå•i²äˆ„¶|¹ÐGÍŸ²ßþ âÏ_'ØÓÚgNÀ³Pq­;^íQ"ïx=Ýݰ9±«¦û`ü;ü¨É¸>_ðIæ³$_¾üfûb2ð\Õêaú7&†ú2R®%‚}±|åú!È[ªzôBrEá†S‡Âä™Êî_Þ…í@%§JZï@Jk`#´:‡~šð^Nìp$ñ¶Þšk€µìç²fÚPºöo¶Eu™™![‹òk|ÿœÈwnSY‡Í<’Ô.¹3™à5§k´kJJùÙ'_í$kG óúAÙDð¡øù ógJîîsä¡:Žñ’ ¥ýX| c„!OO¾ übÈzñxN‹Jºš ³þ0rÝo%éê‘™`㥺sHf÷Ös|Ù»ðÔVâ‹qþªŽe• 3+4zü Žp\-ö𮹸ÔpLX’[Cc³úQwiKÎ2öâÛÝ÷÷½é<ðïm¿¯3 X1uA‚ë¸[ ¢·ŽÖèƒ3Z©Ñ™ž‡‡¤´íx…pñNÊL°ç€ÑøÃÁ‚ðhÐD½¥¤XÞ€…ÝŽw¡ŠÊ3²I‰¥¹jÁäfnGmqÚ~Í^=Þ㱕§Îì,óòûŒ¹.ñ~öPª”ë1Iybšõ£¡”c©>_ E™t·©í¨º÷f±™¬uËÚT}ÔQÚCÛ(ƾƒ`Aª¾#€ƒÁGló¯F5f‚Cž­CANQ[Kû¸1YN][§³S˜|P¶ˆØ {DrÖ£áà½í\´– ¢ëwÌÛ`ïjK— 2”6¨M~‚Ý7¸Ÿ`mW†~f½ÛP‹ïµ -˜©\µŸ’ÐÜI®k5Ê8ª/7³;«7ƒÜ ÏñŒY|Õ~«Taî†U+ÕI Þ<ÍTCšÇ¥„=(‘7¬"½z°E¡¬Ï.®3ÜŽ¡ß«äËç­áF{ÛŽüàÒ¶i4{yÅS§&ùŒò]Èsnã5¢P>ÉI±X)ù³Ö0:5ò·ð3;‹Ö +i{®•ÍŒËäm×q|ÍŒå~€‹Ü~€§6L³Œc­j#ª]4ÑÁ1j½$©A/‚½4ÿ|æT.›?4ó0Rƒâœ$&\ãT@¦Ui—°ƒÝKùC[’ô˜öút7ŒEø0öpôGtšÍN†2®Ln"@¥æù-ºÅ9àÆàsÉ÷ùô5ÁÁ5*ÆoªüO·iÈÔc„·pÏí°E³8UÈ•ÞÑe}ÃKu8§Ü)‹&ÈÛ³„ä¨ý(ñèbÞdŠÖ¾Ö *Œ8VÐèü^ZŸçûéÇr:†+°Ó/¾Ÿ*Ä⊵¹_#Y)šEbL™´Ð¨4Æ<°”¨¼µŠ,àšÒ_#¹Èe;bíöã¹.’nüwàm]D€“gÈ *GÉM/ €l|KŠÞ+‡ž‹¸ØR€| ¸ÃQp"¿¼ Lâ¬È¯Ç¶ejµüŲ>ëåqrÚ`ò$#:ÿغ¤Œm‡-Ì¢H›GÿPCñ1 ¬H`ÒZ(ˆ–Qçp[A,–^½½sÚc Î ²ça«é§‚ƒû.1ÅY;ñ.åeÅÑrò0w Êa÷&Ë97|Uøk£øU3ð[-cÈ ìDdðO˜snbö0É iq°^vá¬{Z(}"ÍÕhq—KÔÁ6”ß÷t* é÷ ¸l.aò¾€MqŽ0Ÿ6·â©%,h¥ŠŠÊ!~*ŠÅïÆ ÍhÆ¡¥íòkÚrm7~4Ï0o³¬Ãí…ñïà Öfã•_¬Í2Ëý}&x„ áïÛé 8÷º{(L¹èÓHVÇù¾fî¼›=T Âj?sÒö*»ã ÔûévŽàµ]šËŒ2ÅÏ•³ZCù:=ßJÖTzMHIùsl çNglí^³CeËÚ;n%pð<'Ì”=Ñr¢pÝãó9Ø÷úM¿Ö®ÇÕV0j¹{tôépÆ‹±cÒ¯\xã¥ê1-£g©Vðé•`OÄÔŽ7oï28ž)YþKxµ$Y–£Ê­ä ÊôA k èi[ŒcÿÓá s3Þ³4K«ôâúÄÇáÁM;eŒÃªëCŸCLŸ\¹«»^¼f»*.Tj}Üâkƒ:ÉRk7áê#=%F0Ä9K~ ¬ÑÀ $õ0¬EOÉ[pý3ׄk×°TR¾o"á6û0ãBHp¯ƒþ|¾Ð~¸òÇÿÔýç?ÿ ¹¬sÎÚîç/øÈ¾1-³ÿ?¸ñ|ýÂÿu|©ð(|éqjÁ‰5óÏ_p»SòB;‰þàì(n‘£ê U§åÞH>÷œžÍ½Žx¼÷îvãCËeѸ£È¶±†¢3GRµªRª Üb-ù•x*(A«*Øum¼’qÍ€íÜ¿ApFÕåGD˜Òe– pûÿpÚñý;wyù&WZÿr«æQ`½¥õ…hÅööïGºØZ ‘D¥ØE˜ ¡‰ž•U=|Çê^ÁÅ+¶k¸6{|í:Mû½q®ÓÔìÅsq¹¬«£¾ÓeõíŽ-Ó^mO<ß³U±¨Og7”/SÝž¡Ùäszá­øÙ†÷†‡^’½yZ,.¿j0ª³õ˜ÉaË›ªéØæR£øô;]òU„׿™~Ú:«_0êÌT `qÑX ‰\¿·SÊ EЊïjÒGx*<;@­á]Æ!ފ±Ú?+âöÁ1áxÏrDµâªú"àØÖ´QUÓZ^›ºä䄦̳Âx®ÆqÄ./}ø•e²Ëöûƒ¯”LÎVVÎlǃ­î‚Uã¶8ž­×Æ`ÈìP› 8æ„‹ñ9mˆqtxÆ=†0*ÆãÜŸû骦qÅü¨3…Œ:õh`¹+OB¯¯£•ºgÃÁKÁ3m•þeŽ¿€t<Öf)ñŽh¾Šsbd±÷Ôó(ÖWþ¾¼-?Œ—³ªý t.äb+Ÿ N¸Ê±þú+Çïë¹N¿*Ôtx ?Ÿ8é ¥9C›½ÝxîklƒgؼÁ l99ß…ç8—¥¢££À¸­ Œ­™Í‡uN5n®¤†>åe&hsƒ{#xQ|è*8™Ã5œ î:®Ù–s´’Åáíüd8ÁíNüÎôP~Îf`¦MçV¿\q^…®·/‘‰ßð«?>ùÿ:?æ˜Íúx·ÜÁ*{6ÍîÓA-œî`«bÅ\Ä*ÞR¯ŸÛòã‰1‡aÓ¥zPn†ëªx¬úzé3ˆØÃ•BiHó"<Åeë6Å„Ÿ4À8ÜìÔ¼æ±âÅ¿©xY®akud &“‚Ð\ÆÀâë¾½üsn°Ë\ ûø7&l•‡#I¡_–' œcÊìšV1(+ÃÄ—®¥×+‘IðJðW¤¾G‰j@–L½âðO5c§ÈÑV>r‰°ufÑrÆÂâ§¥ÚÚxrpwƒ´¬£^.$Ã˵tšµ¡÷ÿЪ..³nŸpÚ¾:#••ÀJa€]Ï^€µçC)^·’6|–`°Oø·ôD ‚ÒÀÚKÍfR|úxQ\\íš H„õ €cú¢˜.°zÜ€úðaÎúÁ°; wn¾~pê'­(Wæ‘ZŸWt_ݰ§pmø ¤Ù¸}ƒ›8]=‚«{w½H_Ž}ÿ>uÄÉ>Eµ§ð)ߦpQg¾¯È¯â._Âï5ÅÚh^Õ*>™¦ƒUåWÄðÀ‰Ç§±iPКØ`‘U/†ê_Æ6lMÜ:&â/¬à9âÌ–¼Îõž™+cÓ™QÜ~Ú½ë#¥†îSPê˜qvXÄ&Á¬¸ß-ŠK£dÖþ+^ªåWÞ`Fî’Pñýw£– ã5FÄÒÚº˜*ŸXÞꉤÏÏi:\ÖÁ‰}ƒ(ËôÛÁÀ6¸»Xµ\ìç7ŒæõzHi$±Ì]±†·% ¸&±”uyvˆ¡45hÆRʇ2c®Y+þü Yk–´]Q*3wDmãzŠ–uDÁ‹aa‹Á÷|·ÆC¼ñe[û„¸]x›œ¢PîfÜÆkò-G=ô¹–»&]ųÿùIŒ™O*B9eÍÍÜí.:%X[ÞW<´?‰®ß;YØÁ›Ï\É7±âµÇ;×µ¯"µÐ³]ÍN[F=Mº uɇŒ­–6Xô°|u¢ æ‹3Á./ ¼êÍê´Jé »æj? Zíâ B1T:Íú ¢j› ~oÓ0_¹´ 7P¯1Wý†Ä+~ogÞ·Œb½¶W ,†…ŽEÝnï$*õ¤Rfx0p郭·ak¼g5©1Š‘â×TÞe¬³Fnœk‰(£’ÒE 1 N_ Zï(ÐÔ¦|Z# . ×Ü9˜Î÷‡)ç Ó6 —ÊÞy‡àäÚâ2zž™ªÿ˜ ÷ÚÈÔ›akú‡Ô)*¬Ç|cñzX©”>¿gˆÀk>—´uÙ>[/­¡Eðý.=GÕ³èñòÏ\®$+£È]WuäÕy§¾¥¾¸Â˜*XuýF×i¥Â…¥‡ÔÕ`˜¬¯¶rm7âWÀ§™D°Ê\¯M·W™{±¢IçˆFç˜jÏq¹X›‘á#_bÒ ÃÏ©6|Œ†™ÆT>àÙCJÄU°­K…ªW|ÍÏÙ|Ч¥Öú_#<‹¡¯i%¼[µ{¯ð ' Ãaê>©´æY‚xôŠé)Vj‡X$˜[I™`½Ä¨}û\úoÚ=ÂËK‹@ñÞÛ†v¬ `Òšæ>(8‹‚ßùûä]’ƒ£¤1ù’2ÐwªÑÊÙSlÀÌOFoánIðõæd_•¬Šß–bn9ˆ{ñÛ„ÜdÚÊXßCÁ0nW懻¦ÃS²0Å%,Ûä Î%€"ç÷¸Y …?m£q9.Æœ> ®®Ã3稈ë*÷g¾#9”Ç#ëOŒÒééüÝÕÒ¢×qD÷‚ù³ ØÑ]ý^Z&‹„ AA‘DÄZ8vLþ}N=»ïý&¬™3u««««Nrj¼ÛN[cí«0 .Ƥ*ŠçT‚¸ætŠ'Ãø¯ƒÌ-2Ãcʸ…ã¾Öƒã\’ƒÛÃ5´Ã6¬Ã³Š¦ŠI‘\³y¸%íÛNgnÞhQ^‘Î'žGšÄ¨²Wf®nl¼©Ú1SSí€%e#õºn`g”r€æ¡@P 3^ÝRTt?Ýç—Î'Æv Ü÷ìÌo.ç2¦¯·GÙñâkߨ°ßÐ(f u: ôØ1iºBâzÇn›]a{\4ëB¢àʯ:X6Œ—€Û8`ÃLDÀE‘i W¿h±ìéšuyA#UdƦïY4¥þJdxØ>òíÌ(«ÈÎÁléG~-¤ª\îö ¢Q,Ý£ÛSB<œ±j§YÝskÞ`2ÄVè`Ní(ÐíÁ é°¥ÜçQu æáÁÊ%ÂAj—}yÄu¿\Jtø`Œð&c>ÞT±\k`žV\‹Ö0°äàH¡$H }b2¦ÛÆ„&²¸°î2)¸Ê¡M+‘Xè`PòRpdcDü=iû¥þíÀô—á×’­¤×êvÍ-N “R)üâ¡kjñ(5û¬[€­V^û^ðk/FÓ­ ¤ðf3\t§UCZîÏ~«üÔËÑ>¤¢é<κ–.þ\ÝAUiâ^¶àŽ£ å#äÀ=¡y·#µÇ$²q?n Õ·‚qV xŸáÓ$G¤ÏöPUå_Œ¥Ÿµr\Çí[{ëÇVŠÇîV{iÎ[À¨ÂÝS7Ö ]‘`îÕ·r …žŒjÕŠßÔ7æ¾m«©I&×nÀ(ÇõàØf"Ö…mƒHXk›ÏÃê2Úaå±,\hugöêkùâ¡O{úê[.Ö¼³ŽâàÊ^¿k´ã=Ù%JÙó+½­ë,‷)âg¢['$L×ÙÂ4°øS»´“Ó”d <g„Ñkøài£à¢¿3ÏÃožãÁÔ]¡Áløñ ÁþœÈ¼ÖìùM¦ÈŽúÃ÷ÑÒR¿ ÛÛ2·¹¶pÀŠ@k5-®<1œý¤ïí@Ç 4ŠNgжwÇ€•m‚±=c¶½:¸5éªå¸ƒnk[80Vm^ÅÅĶG×&¼—¼‚èþ~AÆ\P?/žÙc ¶cÈ9—ãf¯x°Wãá¥Pihr'’;í𷘨«ÚŽ^=³F‹ËI9)ØÉíÖé×Ç#lgíÛïÜBŠÏÉâÃYÌwmÙÀѲaèô££>ú÷ 67]šß;Š×ASu<ä#à‚íñh5i:UƒË<JÞë1Î:ØðrÇmL>ÞÎ5¯sVŒ} ¡©¡­|Hu>h l^-Áß ¢ æìŸø ¨óá0›WpæV÷÷ˉz­DgÉd2§¢‚£÷Ã9ÆPd™¹YM÷>àóžÞ§²G6g Ò(GdžÃ_qÌ[¯kO$/ i=×Ú%d•ƒ€«ßnG+úï’›ª‹G<–Œ¡ø`ét¿Å(©=€3ï:ƒcjŽc¡¸ÖÍŽj¾5ÅvýpÕ¦hÊîQ¦d û1ׯ»{.¿6[“‰z%‡†Ýp×ð¢Ã¦aBu³ÚÃMgžÔðïe‡ ŠË]IÝpã=“Ô Bˆ|ØÐR‘Ñt ‡gÔ¦ãÔèu»Íìn‡åÌÎúÆâ¾ÙOÖ<8­·˜V¶áÝCðѶv9Œ =8e;yhµxœ=_Ó¼Ob{áë|opu”ǽ}!Æ×ïQÍ¥ ,ÏíTr§ð(ýAôT͆¹0Œªz“Xgéž m2’ß¶Ò2·½KCB†­‘¹:>k§•ÌkÏqÝm¹»ÿT½†ÇÝ\ƒBæ yjú`åÁ3­yÄf Ùàpl2½²²ðÛ¹¼˜§‹üY†bÙ~眖Ÿ4ò!Aã¼DËcëÕ\¤Zü‘o›†ï #ždÿììSlÌš]Ñ*¢†1­'`©ÕáXjfHüßú÷ô®¸Jc†TÇši9XI À>œa_f+›Ú‹Ã–àmÆNÀ·Ðmì<Î@e¨î¿|O»¦ÏÃîF,?o1òùcº"ˆ3ËêÇ‘1["ñ›ö1GV]8¼bÿ²=ÉËkàÌXá©,ò;æ¹m¸å3^¥'ïÖ–KÒã™MG {Ha$‹¦»äd\›1êö˜)·î g<¥¨®‹-àz©n:”ão ¥a`)ýð0EÁŸ½G‰taŒ×4ÍI_úl]× ©)Ö™ÔÂqoÙ •„ãZ—R)/óI?o`ó¡Ï`%Æ •oÊó™çŽG1–Ò@ægv¢$â{‚Ú¾] ³H$ c¹¸SÙ\x¦á€ô5ÁM­s3 f% /”Á"C!ñT0ÊB\ʬ’n†£¯ã ez‰ÌÒ×-uˆÊ½VµºÞ[§cºš1¨—HnÎÖ™‹Ö0'¦C²é|°‰öꬮvM6–ÅnÌâ'<›ÆgûAñð­U¼0hò‹ÁÙÛ.)Û‹8¶%©Û l©(wÅÎêì¬IïÂé+"ƒ-•3Þk¥[z¶óÌ’tEoúU‹{Ø/‰ «:ÿ[ôӰý´BÒßɤU·ÆZä/·oa=hôö*ä éŸ)ôÃ#€³N º»Ùݵ§ OÀgÉþòˆ·´æ_ýÈ ß?­ç¯¾~~ÿǧ7—õÍoæ_~ýåÓ»þ÷ßÿðá§Ÿ>ÿøåé ï>ÿí_®øWßùòá‡ÏŸžÇ×OoÒó7Oo~~JÏù9ÉïÿËàoñÓ?ýò\Ÿ÷ü§?§çO°yÿD7«ÖËľ‰Ÿzµ[êh ›9þrÉ•úò±±ýü?üðóçÿ¡A`u‚dä$ñ¾Ðð¶´þÌò’’¥çäß2[¾ÿÀ÷ùŽÿÇÿÅ5qíŒkf\ß5Œ¸_ø/QZe¤%¯wkVö"e)Õ^ÞÖ$œ> JÏ÷1Ƨ«d’ ˆ]ɪ]w“¬Ô ˆ ¸Tôö¤d' P‹7@S±—׈P’K#¥ºnð¯§7}‡ 5›¸'+þ¯óoIÓ}¹$ÄK}‰cwØFªj#\|æÌ ywS¿…{íU~cF‘'þéið?y‚éÌ…²k„n…ŽÚéÄA·¢dÇØòYÜjŒ–Y߆b²,èl*äÜÙxW!ɼT%a‡YMH½0õÄüÙ= ²è9”ŸðtE¡-y¦ÎyPÞ«x±6í9&O7õP ÈsÈÊ‘ñ™„[«'`2Uär×Å•ÁÏb˜Nt™By$ ·NŠŠt<çÒ‘×x_ŠÍzÐï‘Ò¾„ ãE$ È“H`IB3žo!^ª ¶^åMwT<öà¾TÀ"*Vª³{Ê~ÔuÉ£*.âÅŠ}4çÐÞ!^[ŠÞ5•é9ÀÁRÌšë3BXîa±€uYÅÄ´ö?Þ«eÕ®ãˆ~þáN6$rwWuWW2²•Q"0xd„ A`É ”€ÿ>«^½Ï}ÙØè"}j×»ÖjqÔ=¹ ònv#xŸUŒI¦ø=Æ?Ê€‚hW¯90™~š­ó[(?ž³ã³x,Îí4£Ô8è‚`£ âÇÜBàŠµ¡ÝfÑô_zaÙ ÷—áûÍõ¯ñ9c*“=Õ±tNø¨móHѨÎs¬ÛI«[õ]™˜º´e…Õ]ØÕ‹[ù©ˆmïzL¥Úc­ó(Zq(# x»†{fc]ˆO{@Šyú1zÙÚxUÐqɵ1ìØi=×}=~¿V8…ÖÖí[ƒ¬ÒÚoæ@ÃôéÌpÍo7@&8{bS}La—lž®æ6ÞÀ's[÷Qs õ]gôÈÜÝÎï†MõÔ< .,i‚¡’çEÆ“Z¶=E!´¶ØKî=å³»±”ìEW`.Á0󲺅C¡÷ré†,ÖNæ]3ËØœ‚.Ï…œ}l±2'‡¼AK€tIX vN*‚h?›sËZSbš1kÈ̓ƒÞÅs>YàçãV;?› ƒl 4ʉÈmbg-(56Ø)SßvH6é<¾…ßæ¥Æ°Û1ŲµÓÊ ÍNvïvN“[4UåÚk{Î:ªØò¸8#ÆH¨W» òeLåùozU'-èI‘`Å)þ@ÑÕöøµ¹HdL <Úè—š3îâZÎÊH¨XÙå#ÓsW€ß¥ ZÞÙ«† ‘<Ó¢ô~ð±ôÏÞ ÕÖÈ”f0ÜYƒìª!–Ãrþ€ö“dHn£6›_j”£#ki=-®r¦Dã‹ÔB7à‹æËOµ" 28w‚<}i.ii‡”í~ú‚žÆA ãg#bÑš¯_üf:¿/:ÿ+ =ò¤K‚¸g&.hõ`;ÉÍ­ô>"Ïá»hü=«Éà‡c6·õ±8õ¶ù/:Ú~‡îr>þØ÷õ½&Þ!üH\$–Àœ¹Á_¿øÃ÷_}ýñÓ_ß½ýôîÇo>þt÷g$úû/ì NÔøòî«×Ÿ>¾ûðï»/¾ùæë·oÿóþŸ?~zco¿¼û£½ü‹ý‰`GvNš…ŽÞæ¨MJíî#‘ñ.TÂ"w{ñÜoïá $Øûq0ÏàK£á/¼ º±ÿCtÚÿ¯!õ77éŽ%ÑÜYX¿Øl.øï`‹Õ¯z+Ïá—™îâ?IÁ7ñ#ÁÔAÃM›½/óü~BÓï¸}|6îÄõU9à¼ßñ”6. rÜÖ'B€…=×äF<ÐbëW4yÃuÞ;ýîÔêÐ'î9]=dCóÍ]%t“ -ùª~î>p޽ÛúM0=ƒ;”"ξ  »ÿ–v¨,1¢_.<ˆàs§ÈYµ IíSÀ—ã~Á¤®é6ÝL°­–É ãܯÊÂåùX¼ò1.Ê(°—Ùû.|þ.ƒ«†ìP§ $h¿Åh‹(ÁYÑô«´9Ì6RÉ‘î£Á½Þ±'{@¸×œÎ‘O·jMž 6Áö¸ÕPêXå~ÊQ …òd~¿ '/.\ ¦Um¾¯Öï™!=„Þ'²²QºÖgO2jˆû}D p§m=÷—F“ΔôE=`'ó o+#|@榒х,"(üv p¤ˆÀG~,…LcPÀ> \\ ºwܶU1¢fæs·ë@l·˜úÙö«ê\E–7Z2¸n±¦U[vc%ˆN¬:͘Ç%´'Ü"W‰€ ½F͹p†J?¯F^нá®]‹šMë† ê™Ã¾F¯ƒÍ´.Þeܘ›Æ@íœàNê-1&<Ž…ËƒÞÎ}ƒÞóFÅ¥›çb¹,´_3ì;®¦nY1$vsåà~#}ÞF5Þ±¥–Âî+ hŸ«[{ä“pÉ£Ù&öÝwñ–_6^µûyD6 öº?wPœ8üœsþy(:Â#7ÃìRÃ0j»HÍsd DãW;Á×BÇÞ• ™eów ­Ö±å²0ršðí’3ôa€«¥c¸I ¡ù²Ññ”,9Ú†iäãEµ½”‰ïžLú篪we¤cá6|H&„¡,Ò¦Œ†÷qð¹§R¦R§zœ÷ÊfhŸ$I¬Ým'îÆw*œ´\³ÜŠåqKˆ·±ªq¨)N:ï*ÞzKcÝ=™ƒÏ½ãveËørÈ%oíº2Ä¡~Q{‹]›½!¾óúð“í9¹V<`š+qâ¶ó-¯q’,+Áµªg™ç…¸ö1‰›L.q;®IçšèFµa'·Ý/›/°%3ß6é” N®—¶ÈÒVÂì»Ç.Øg¯€m“ʯQø<øÖóXvMt»@=kiì<3ÀÁ—få|”$#&½|ÓÁÖÖLJ¾fZXf9C[õX‚‡YÒ«-põ8Ј³.cÓ¦h­h¸_p€Û¬u×[…0çJ x;”±«u_t—ÜÂ(Ú¼Æfþ~Æw³ii´·£Z ô¶òuUý|ƃyÒ5ŒÎV\*šñg:!i7zIw}-™Ôm7òM;7î—©®ÉXrÓ¦/ÔªÔ‡¶kWx‹ }X²,ËÖÑÍi{[´õŠª§£ à©`ÒWŽ.¦P‘à²ÊYsåcÌe=žST-1"|%¸Œqc9ÁYÌ_¬â • }YH2òYDŠG}ké,lÖµs]‘?·®®ìJË„/ JÚ°æ.Ðé[2óu,€?”—·Ãør]\· K­Ú¾ŽÀ—–hØì”Æ@Ñó9ëîÛz¬ÔëlŸgí¬ÅЉ”®Ç“ë~…Ù}Kj\s¬ïtX§1|h›AQLÎü\".Ÿç¬GÚÛ“³‡oŸ4ú3<áî“=Ÿ…Ê/v Å[Ü·{O»ÑÒÓûcÄsÓW)µ(õ&*¿àÁE{²¼záççA—}W·ä“Íû\§›eð©Àgå *¶kQìÙ®DJ¾$ø˜u(V‹·°BÎöp_ îw‹Q˹D3”f°Ý–8èšg˜P‹M>±êcM¤#´9,Ì]bFL‡¼ð_‰õ€LQ A“µ¸’ ( ýd×á¥v.f‚ B.­¸#ú8¹9¾>zÔw[/•Fȼ».Æ\Gb¤‰„1Âåø¶+Ž}#üùª–¶ÖïQç,!ÛzÐ5ç–h¬YË ÆÐ»·8‚_‘8Š—ùãmµ!ÌÖö¶š3Ùüf«LÑŽiYŽßòá=sTso>Yñâ ì¼kêt†¼¶JöÝNRŠ.àIŒ"½3ÍöCÿÂ÷@ Å}÷§³Ž&~?ÆŠeB™g±;xÆžºo©m:‚ky* e˜kŠ4ô„ƒt¸îjÈOÃiÕ‘ßÑR0 ê5Šù¸Hôþº.º2]àb F0W–[z+vU€(JÕÐü”Á© W=a|<}UæÀœÝœípÊWÃxû22w[EºWÚͼá.\¿m*î·Ù-@ÐÈ•`oÕ­½rCœŽcMZ‘¬M=Ãmt˜×ªo¥ØúSˆ†òL’û!IêÄaÛåR2ƒuC'ü,¸=ð½ÿÇzì6Ñ{¤ý_"%¢öz×kÃ)@ P«B%„¢(-%HÙ¢°êßóÆ3ãMÛÀ‰C’Í“w<ÛoÞcî)+“ÙÑaI³£ju¡dPz­­bÁZQ×*ˆèŽÉbkßêe°ØÞ$@¶i ÅæÊð(‹dS*ò xÁËâDýPǵµÅå Cà‚Žš$̃ã£\-«>°ž‘­#Ôh6úþÓ±§cþmþ“Éž\Öéàæ¤Z¦k„ûl@„|÷2!2¥Ø–SÌ`$ùædŒ•}*—”À²ˆ†¢JHüäep Ú’’8, ö>ŸF;*n´Iª€{>ºlƒDèT÷'\t‚EÑ÷c¹vâ Ni¡–t‰× L¶¹\®HºàÇM«v,à Ë:ç´±ï´ÎÉT–.z)cHÚñ¢n%¹¿ î<ŠûI{«*GEœZÊ´ó¯’±XÅ-S…{,ëb¬“Þ °éº£E½Aþ9YZí¬ZJò>Ð^ߪéêl±^m7Ãö®_ïïÍ‹j2]Íìs˜Ñ.„¹9»öÛþÖÌ–ËÅfsØß k;7ÏhäKú*¼×t"qkF´S G=®ÚxÙä‹—íÔàª,ŠL…Q¥»Á5ÓÍ.4ÛžEu½õè±]+û×$«=¬vEÚ„ÂÉV±ùeº¬’™ÍÍÕçGÓÅ›¸zÝ_/÷‡_ß?®‡áfßã B—7·Ûþ!>»ìûõîæÚdØ>¯&Ö,ªÉ¡²Ækj|®î |‹§À~›Æ¼7_¾Zs1Wç£à«ófj^ž‘w‘¨¯%ók' ~¯¯œYü¤¹?à‹îT4–LRþqØxÎY¬i?s¾ÇsBHûÚ'ÉQ_tµ(A᧨ÚòžÿŠ$ãŠ"`áÛ<ŒÀŠW&Ú‰`ô¨Ä½s ¡+Î3ý`(+¬Å endstream endobj 43 2 obj 20077 endobj 44 2 obj << /Filter [ /FlateDecode ] /Length 45 2 R >> stream H‰ìW[oÛ¸~àÿÀ— Ðȼ“jŸâ¤=§»g› i±Å.…j«±vÙåô¤¿þ oå[Ó6NÓÓÂ7ùãp8óq83LXªR&*å)öö•–i‚S¦#Ü€`ŠÀ(Ñ]L&,•ÂÌß{ô¶TÕ'Ű.¦eVÝ '½½Go÷¨QWEy‰ö/ÆÙ,Lòrt–Õã'豕ùu£Ì«›Yš¯ÞFG³ÞÁð[Á¿“T"œh÷#¥T#4?o2ç¡L¸¢Æs%’s†®–p¡…õ\á„ÊT'Lcò$åZE ãN¥‰¤:í k–p*tWm œ†' ¥X¡ŽZ©Üpdžzƒ#áÈåVí*vL¬4p¦cð#¸ žLª¸0?Z²†L¹S±¦ÌO.¥³™$œjš(¡(! “BhÙ•„G-éêŒ@o€g²ÅI¸ Lzµ`–XDÄИIFNµ:W4¡L0rf¸ã\™äf€)*ÓD3jtÀ¶N‹ ¬a=ˆmcM$Icš$„qG¢L°à4yJiW¨¡Jé®Úô&4<(QR¢ŽZð^‚t׆zƒ#áÖ³Vë ]"'ÔÐ&hê‰ä’š®° D‚:A¨WÂ!S]-Ã*¡Œ:ƒYÈ`DHï„ÄŠG`K$%¼+ œ*ÌHWk: <-L` !PG+øóiׄz‚¹±lëW¤u™ƒ†G›=kTƒ½ŽGϬ€dhd2»,IM¹ZÆeBˆ¢!I­ :åΕ‰i6D2ÁDWاËp‘Úô64L8 {Ù¨vR)«cC½ Á±pëZ¤v…Ë%±å¥Ì&D¥¹)2 ™ôÉRK«"Êð­(iÓ'°=ÄéãêïÕ2.| N¥#„*(…' ¥ÔœVØ(áÆè¿_Ù³Ùâ$Ñ’0ÔÕhj–J—–÷ _¾µ5nŠÔ®x¿­g8ÚIÏ ÄmKJS³i©KÆÔ ak¼B^MöcÐåÀ6_5¸Iè‡"êÊ€ÔQÉ!º¼ÚCŸÔÁÍ@Ìûnƒhns;Ô¢Ž_†±ŽÀ†wͰ\VÑ…ò Ñaç´cz£ã @iWD¢LVpÕPmAé÷̵‰ZÆ¢l%šFЦ8B75‡ØÒLO¥dž N5ZËû±‰”×½GG/ôÛgåhP-æcØç:¯JØÞ£ o_NË3ˆ†âðÐãƒü²(ã‘ÞÞË™Ónìl²€ïÓwçú··4š¾Ë‘]ý–•Ùe^¡Ój”WŸDnô8›LŠË*›‹¡}5NúH¢YžO²õ·ˆ °|ßN ØÌ8½Î&Û&8QDcåN×úôöÊ¡Q™ÕN:Ÿ.ÊÑV샳Aôbh·ËJ9]Av0YäèÌÌ=+ÊuâAð_U6Ÿƒx6Ê[1§kUøßY9š™-ŸBå,Gÿɳ÷FÊs¿Aöå´ªÇè¢Îªm/ï²zzU8]Ct–Uu1œäìNK“£:ÓØ TÓk¥œ®FöxœUÃi»që5>_´4ENW,WT 0o×v1¬¦“ :ËËHÎéZ# éwjÃâ&HûúÎΪÈ?æ}_Ÿ’>+L¾ÿ=»Î7ê^âëù$_T‡£üpRÌaÄŸ~Èݳ¿ƒ<²!&St"Þõ_—ev•‡ÃcÚ4ûÜÔ£D¸¹Oh¡c'{™°½†9·ñv?ßÚöŒ,™ªœ©Ðd¹ÈþšK#T1m“³ÝÞ"mG„…<ÄÎÔ¤ˆ†^TcçÌy£ë·ŸšÖ×4/Ú5tÄ=8ó9·„{ë[î=ÙpU1Bj7¶·il‰|Ò·í;dŽ&Z,ÛÒùס„¡Ø9q×Öµ)Ñ[÷2ÿŽ#"Äòk_ý–Bê‚!˜|h‘·Q¼ 2Cn޲ò«NÞ{`Ì7¦Bs‘Ý>8g44úÐÍ’„º[”O`Ä4E4:™„qÌî7ó¬KãÆÙPh¼ã¨‰'ÜGá%\´Àü0Ÿ{¼7_¾'›, ålÙ"Öä"ÝZEviJ¨…˦Èo`Ê¢ÉVéý›ÑÖý`L|Ä©Šƒ&u²ë i;Œe’¨ìØ”åó»„k–tùŽ.]î&óÜïIÝÔìØ(ˆZ—•«¢g=ëˆ =cŸÐ¼£>€ð]mÕV?l“·²U4²šExô,ÚGíƒ,‘ËÜÉØfÜv®ìCd"÷A¶£É¦Ÿaë]Çن˚u§¹ :ç॰o†í‡~-½Û–oo¯n}h¦â¼ͪ»\›.¹ÿÝ›`Œ8FÚðUÍÓ¶å…Yþ|º(GÞwb—5«›Ï®ÝÖý瓬v«ÃÒÒ­ /硃ÙÉÚ2,í=çHïáÚ÷­üþ’S’º1¨-õ 4½½þ¯åôCiÿ¡'æ†V|ü˜UÓèhá,£Ç q4¬‹ë¼éO¯ffÛžÓi>qLQ"'âàW½ÌãõÓ þóùÓn³Ú ›ÃhŽÛ·Ë1Tt—–Zñ}?dÅ \w\ÃpHØofö_õÄsR3Ó2«nÌpo:Ïá ïÏ HøFöÓC£N™…PABWõØ"O‘Õƒžöö`aèÎךQWÓòí>SûgrZyáUûnÄo%Ì>ïíÁEÎ6 LjsƒJµÿ(±W©„š†.0©FoŽ@ºéíßܘ¿ÀÓ߯ †Cþ…ѨcçÆSøò÷è)ïö£Õ7»Þåá;Þ}öƒl>ÛÙæ/óp<-G‹¢ÞDÁöɆODÍ_fFËÖ©a 3 !$µt¦lOcÝÍ6DÖd$—j–³ôà+¯çù³ë¼<¾”¶Á$‡ûY®Û)­ï·õ*ò¦Õ°Õl˜óì¿ùpawƒVÅšº41¥âºË“l>Îç§@ÝçiÅ„hxë8þìÞl< 2ìt›wpFïÓa«¦ñi£‡Phï.=¬´sû„²âíÏ„²5¡TżžÜ<œÿ®’Ðîšà•l¤# 5¿ðýpÛŸô@ü_$éãl^£‹q6š~x8‰úžRÏWTþï°Ï±i%•\E×PE…½›Ð'›o™fîªBßUÝšô-IYŸnŸWyŽN ÃšVõjÒG7gÞ®ŽÍéîB>IΫ!»tJy ^»Œ¬q’u’ÄKvtR'IÁu:Ù:Iæ$SšE½£yím¥,Mg4ñÊS§€h„lœ³j:€«¦pÅtWM7àõ=VÓHˆÕœêró¬M«â}1üY5TÕ|HäsëÅàÙýßÇE?Fƒ l¹[ö05"$*IƒK3m0ØY‘ùêT#vxJî÷ƒÛo}?Û½ƒ}ƒ+ÜßO²ËüÀ3\1¯?£mø ;]øÀšÂ¨5úDS(0¿eSØÕ¹­)ìêÜÖrA,[Ó¦ÿc¿j{Û6’ð÷î?l ä`ßÅ —ï¼C HJâMcAr¯éåzÆR\‰lhRX’Iíýí7»KR¤(É–#9¶%6¥Ýá¼>󬣨®ë¶Y¡á`ÅqLk +lË´m¿Öl¬ðAð©7$ÎHzyàS>µÕùZÂx7³öç8†âòÑ”?¤q†´ct¢*ªf¹ü©kp·ƒé«X–…°¢aç‘aŒïgïGY˜Å?ÃQ ËÑ¡" Õ²YEìÞwËÌį̂‡§]4„jô’/Ç…†Ýöñ> h–dÁÞ ça U:›Ô%Þó™ U˜StN¼ˆŽ#Q?ø‚Õ À`ÔñÉ ¾]ÌÄ5é¢ÇÒ%ת»J3Eá5Uœî›å·ªÚ¡5—*\Ú;Mä­ÞÔ‡qt䓌Œ„¬04”èegÔë÷ó'¾Pøüü|gýšü·Ý ¿×ø÷üù÷YhùÿÏÆñ°íÿÙ˜’ ÃÙ,‚x“å¨ŸÚ ºu·üëÇ“Ó÷óü;ÿ~|«ˆìÆHÆÂ$ Ç'ÏKâÀýbÜ:~âQ4äšP/a1ei»ÂÛ gËKlAËê3ÑË!%Pdœîåéš–ØÒt’^öxÿÅœá.ËÓC­/A”åW{Þ¨»ǹ§¨;HU\K¬ÛU™®ƒªá½Ó$|yzæý>„í¢#SE3˜v¼½)zE@@˜òüA[ÈðÀÔõp'ÃxŠŽ^…é,"Wòëxø(³Xã¿xmÚŒCÚPÚª®òWqÖ¦Ð~ª)܈þn›ÇÞž¶}¸R®¥92ˆ¹ï N¸WKÅ5-—w¹æhÕ{tɬøß4 ñRæÇ7Ör>)¹’íUd/-oF¹âÃL¬àŠr—bš¦eÃÊeâ¥I”g´Ú©”‚;×Ï¢³É$¥º,¹NÍ7W»ÝаÒõ“ÊÌdÂo®uß/£ðò¸(]qÁú=Îfxòµ¨zÆË_w—¿m™Å€³dM@Hìx÷…‡Ð´^ò "ú{‡Â_1Üo²[ÂÉm´ÛÆ ÕõxL†§]TT‰|«+ïj¿î” u»ÛêÁtšª˜;뵇Ê\·šô]ç| –“p‚ÒhÀÐZö‡ä~³>.¯Ý@ôôûä39F'ªbØš&žºj£ÃT ×ÕVt]³ïØ£ŽOfðíb&XîÅ)‹Q›Ÿ2ˆºâx“åtXl¯!¸´qšHú^’^ŸddTÞ ^vC)€^vF½~ß1_Ñqâ …ÏŸÁÏwÎùß~™\÷Âïõ#þ=°þ£<óçßÿg³ðÇνèˆOüß›?à±oºÇgìïžPƒhFŽQ—0ÔïßϤ;4ÁáæUÐØ§>zíOiúpÁ–zºã'EÂGÔKXLYÚ.鯶BÂÙòÒ^в²ÄMôrH ”8#~˜§´à6HÑTÝW ›¶øàp } wA¨û Ö;¤{Š# ¨†.UQE|M„dÄ̃¢•Q}í‚~;š[9iìÜÉMÈî>nžfá hüäÐöÛßÚ¬]ÞÚä09˳(Œ¹—\G{šœM&)ÍЀdÁêY²¨då0ÙÄ2PÓ€—Õ’Ç7ÖŽ6)¹Ò½jiÉÑŒrÅÏHT„bðñZŠi*g.—‰—&QžÑj§R î\ßuvl/[Ÿ¸·¦­ÜÙ0}(9³Ðó¢«`äý7Ùj¬.ëYéelŒJE¼("ûó/”|j{Ò>³Ú©eúnö/H˜ìãjå3eY‰Ò=ƒæ ¿06¾§åÛ›ëIž­‰ËGß}RQ»@9Óµ8u±nËfSŒµCMÛåPû¦ð).,®nëÝÕ8'wep qsѸ—öÖò4€öÍÆÁ.pöÛrÑ‹êJâ³eÀ,±RB@ïÂÊgÊÅÅt]Üôn‡;Ø¡ÀöH ìAq¸Û3³–ëf¶–™%“ ©Þ†Ó ‚¿ìá´{궯¨­{¸ mç‡\ê%,¦,mC|c{5º/hY 츂UFü0O7Ñ6î|_çº^‰»*ê¼–Ž~ŽcðÚGSî3„õct¢*¦ªü©«¦NtG1tÛFX1T¬ï•ÿ»S®³ÛÝ $­¡Lù+–ÌÐ( ~ò¥ðÚæêt74¬L¶ÝšÕö²Y݇yQì7xQ.ç.V+:àö©“+ÉŒŒ›#}FÂMæõ“€ìsúG–3(Êw¸~ªp½ü;\1rúéqGeàøïÇFý†fwAËíàÙÖ[†Îîzô1N,ÝKÃÖ4>° WsÑ ÖM«°‚ëúýM¬§‰ÈaäQö[ŒGáå,šƒq‘áò^Ç?¾òÕ—½¢€2YÃÌç¾{ñ:ö;,f¤bÉäKï“xÀ@ Œ§''Åz—Âèˆf•F ¼EãŽ>áTš1£òÛ±Øúp̓°°1/ó÷è— Ìh}·r”ˆr€9Sì*º µª*šiˆ‡¦›ðP-ˆ‡Uý ¹SF®J1ì8ì`Í5øCå_TŒxÌÿ„” ¨.ë覎êVK«˜8ØrZÙæâ ¢`Iuþ]ëxa“ªêÜU¸"ì¨dxÜ"ªjsS]„"NÅÙ‡ $iá …]«<¨MS4›GÎãÊ&!å4ŒYÒ±!ÉßÂQù•F'ˆå+d²dØ­ò(ØU³jA¤|Ñ…q…”U³ª)¤9D_±e®]ÃäDZ¥oU´ª°tl• yÀ”õe«®#éjEyp]j=›uEø9C ó ââ¥F=£u1×´ø ]amUdEáÏ3/3 w Sf¾xQyô ñß—Tî…U˦h˜Œ´+ƒQe´êÅ!õç%&êÖ’•fÈòÅ•aµ0Õ…°É;Õ²šaãB¨Ö·?‘üse«ÛúDÕHûFSÞ§”V¡tŠjóù¡LžV"Bí´´ëèQtk3S W3ÍʬRY†+´ÃõLž1O °À![È8T¥Qº¿ Wâ—x™?õ—9óJaƺΚ€)‰Iô#gù˨ÐÂáRË÷»/8‹†À¿Ht£â¥25+G¥ê†úý•5×´ O» <Œ=7(iœ]áéûä3¹Q‘‰Èô–VÔÏsƒîœHVtqÎ ëÜò¯y?+ˆ¨Ø+©è;`Š âÌS^_–—MÁg zEÒ€¦ÇbŠÅI/Ãñq…qhû>@—ÀJS’…cˆ·ç%1_+Š "úb!Éc> _ûS©s4fp:ºŸ“‰_è- FÄ‘Cˆä)W: Bã9ý#ƒœú•…Ô'š¡ G`HâCßÈ—M$:R˜ÏxÂZ‰ôCš‰÷/’u¡›ùúÒh;ƒ(‡ÍS–ä³þÿÙ¯ÖÞ¶•#úÝ€þÃ&HÐ$¨é}?š‹N|oà[çiµvц,3±ZQRôÈ­ý¡¿½gH‘¥•ì"PP) `†:œÝ™svw¦÷±Oj¼ê_"c­ñ5ËûhrŠ?Y1èIçK &­ÎàéS¾lu‘®akpD½NF׬‰î°š>ò½rµbì}Üb%h{o{Å’–ýN ]"ÁŘû8©Œcðñ«&?mçƦ®ª¦_1ó³J'ÓwÔoO²´7>jq5>¾8(jNég§M[kx3^tŠìàðôåñ±7Gi»•÷¶àß#z<¼¥çïnüôÓ³‡·ôãQ=¤?~{[ü¸ù³ý°RÐpúÃn~¸ùáæ‡›-tSœšÿù#ÃÏËá,½doãNÖ¹mÑAÍNQw¥%ÈÖeØÁ1ô'8ôYk8¾ì·†W¬Ýïö‡(çP¶Ü×ôSÑmÞÏø•öÔÖH-ýj[9æó1Üi<ƒXi75sct…£Ak˜öÚ7ðعb£Îm9g/pÖƒÖ÷Mºyú§6ŠÃêCÚšZ½ŒT‘¨ÓaIÔ‡tÔïNæ Sô:Å]~Çù éRÐ÷ìý¤ÕíŒoØIúUf•€"ì¿k¡ƒI1ñèçì2½:ìvé÷Æ£?¥7kO'—£tœ›¾H»ÔƳŮ2ÿ@ñϦçÓ°—Cy7ììtÓ;LÏP^/™>§(Úý!•ò¿_*^ØÁ›þ¸þ½Æd¯Ïú_Òဪ$ÖéAÙ ?êŒcªj$l¶É"èUi~ñó|VÆ/”[åsÌ—î'­›tØØLT-=]`r—Æà‡!ôä5cnÍÄSvÒË׌Róh¡f›ÙP×`°{ƒt>…xÑØãì°±7i|n€‡”=àù ýúoÿöÓì5ûÛ?8»jàÛ‡ÆÞ¾µI°ÌX™Ë{ÖùÔ­ )CÂ-7MF ù׳F®ÞR¼êO;oÍMáÉÞ¾1žAÝ šŸ5âhq.@ï=yÊÎϦ)úÜx6¹_rÄ·KŽ`GP â6BIf¤L” š|å ³ÚD(ïh4§69(¹(@¼[©Ô‰Ô¡2äÂäSjota¸è§ŠãÙŸ)GôøP²U% Éã‰vR#K‚³×Sõð^ÓÖ%–»æ‹·*±Á*†%F{OF8è f:1²Xº5‰RÁ™Þº_µ1Dð‰6V0iC°ÀV´¤Á˜À¡sm1ØÌ> 8¬±3J&ñ^ù†‰÷˜]ãÅàj¡èóTh$Ñú]Þ‹Üe+(ŽH!B{Ú¦}!A¼ò8(µ‰°Ê’/Ô‰32Ä Pl Ҝ‰_Xrn ,›@-Œ)-ƒ5˜7¯R6ࢣ¯Úû¸‡°5¦c”a osN r°«^Nq¶†ŒmQ†"àÖi'Ê ˜I/KQxAë·¢ÖÕR¥#£ðÂÉRËÂaR+YZ::µ¥³—›JË5G›Ó2b1Æï¼˜ë9ÎÖ°á-JQÜN1ãfq¦(âfb¦‹Ê/äeŒPJÕµ\‘¡ÈRàú·¶®åÒÏæ´ŒX”7jçµ\Ëq¶†oQŠ"à¶iИ¢î1TªðÎcUT”j» fI%YM̹Tº´´†“¥#U¹RÌuG›ó\€»,æz޳5lDx‹R·SÌå–W®TEЫ’ÙYÜá’î aêbÆð TµÃ  €*ÑVûº˜KG›3ä*Ø]s=ÇÙ6"¼E)Š€Û&f4&xµWERlÂ9­Jˆ„>Ör"è* ÒYö0ÚéYŸ¨-m].ºÙœ”áÁ[ëv]ʵgk¸ˆ°#hÛ:+Ü**P…,M¥cët‰ã²Z©R¦•_hýp&V‰êøVÁs;kýêŽ6¦ä<– w¾\®ç8[ÇÆ2oQŠ"àvŠÙ‹Ä8TÆY ¤«ÆúúRk`™¾RTuËéœÝ˜£Í‰y.–Ýs·õlDÉœ§(n›˜‹CغDs­êb¶hÂÂq ÌhêZ¶>ÑbñÇ”NøªZ®ûÙœ–‹Ò»_-×sœ­cc™·(Epë´L…±2*ÖWR¦ÒVAÜøªƒÈË)­¬7~ /ŠËzF3º0'åy7›Sr“ñ»®äzг5d,³%(n—M4­Ta2%l©düAÉ-””Õ©œw¸J‹ÄjnëR†¥>Ô“¢*c=Mߢ£Íi±p®Â÷¡å2ÇÙ6"¼E)Š€Û&fïè’:q&øº˜¥MŒ7UR¬¡²Câ’ÜÕÅ K.ÂBR$&Ò–b®;Úœ˜É­ââûs™ãl Þ¢EÀ­³ IÐVº³Л²ªzšH”)ּαÏ0ÕøÿSaÛìæh;þÖØ{òóçI§Û饭!{•ö³t<¼aOYóßòÉ߇x;Ç[ŸcŽH#Gû”q”QÂå­$çjmOŽÒqÚ÷‡£ÿiú}-­!•ß%Øk+¦?íO†íôŽØ‹«â[_ˆ%ª6iåò]CåV ÐePÓý‰Ö8x “:$FUžÆú¥µp‡õ< 7§G$ ! pÑËW]¼rN5— UÐÆÀ±Q癨NA}•„æ4p°7\P±¦fÔ¦=ì•73PÓTV’™Aýe £(©d¾Ô`m>pWï˜e ³•dGDå?n슱Ü'&¿cŒ@mž[áNh NMžY¨ÜièuÂ×á¿ÜWK®ã8 ¼JŸÀ’xžÞ¶ï¿¢d%϶’^¤3€½ ‚‚mJ¬â§žÈc»ËO°é ï/AI‹ÆeÙñ%¿ûëݧØÿ]Ù8X_áŒÁœç^$0i·0/©X+mK¨r\¤%¦K€0iÍÎkLåñ :ªÀˆïöq>ªmÁ’Kð” š¶ OqQœ6NÕ§hLÆEÚéœ$Â~I6~"¿ãÀ8[ÁØz€–Êb5QCJRüÁù)÷{BÖzçÊ>¸¾fú,‰)ý3ðJF(£ëçªù—¸Áóq\™ `Lð'¢‰¢‹yn ÔÂD7$Z›™Œ'ã§}Ó¶cœ}V(ðjØíyg…žÍ*Nã*wöBç,¯oø˜07#i^SÎ0XV2?äÜATk4ÐÝUwàHßPÕþÉí›f¾)ç§¹¿œ2÷>¦tþ i^NέcЄ†¶“3ööCËÍÞ·¹šs]”ŽmŸ,Ô×Ösœoª§õ|w5ï³¼¾ácÂÜŒ¤x)5'(ÀbÅU+c¡];H\àVhÁÛÕûµÇP´¥C؇ ’ W“JÉÔͲ"#¾ôä RÇcÞ-–8ß[ÊÇ$¯/Ù˜°6#èŒ]JÅæÑ‡©Å˜².…IC©ßÖÂߌ'kéÒ&[”­6ld,±Æë’´{Ès˜§cN½ô(/*ð‡š!cÒ[«ø”ãõ3Ò¦MÀK –µf,Eª1·  à·J ö¡ÅJØ4âI¤¶.¦øŸ÷ Õ…Ñæ¥zé Û)ÐÇR6÷¾zWO¹Ÿ›ûl^2Ý[ÌÇ,¯/ù˜17%i^KΩÂ$G7ë±âu×ëBJyèQkER];•¾]qÁ(fˆ×ëX¹Ê[¨Rw§@ß36Ä„–üóˆ·•ó)Ëë>&ÌMIš€—’3¶}rÌÅMK%¸’®d“3*—ЩLB}÷^ˆ*·×³IObPÅë±ØÃ€ì}AÎ87aMŽ¥øÍÕ|Lòú†Ž3qSŽfàµÔ\°~ îO0 Š ^;Ø›3v.ßr"´íÀ$ÕM¢†Ù—oݶk> stream H‰ìV[oG~GÚÿ0/H8*ÃÜw&}‚صˆì8±7 U[¡O€j/xYìÐ_ß3;‹cãGjT)Vmy{æ\¾óY(J‚–b ­9âLc.Œò ÁĈÀ³Ðp΃OA¼ú´:vË¥[Ü/EþsÔ‹ t‡(Aç``Å¥ÂLK†¸f˜‘¥.„Æ‚Pñ(îUð!0¨s„FŸœopwØ=<èë'èÂe1ûFh•ÙS’+BÌ W(¹¡Ûvh¥€*N0„èQ8i ðÕÚmŸ'‘þw$R' W‡q*à9¯IÙÖO¥ÑU4ª1S î6ÄgÀ(žUe¸ð†!ÖÔpj¦·D=Žó¯Å, ”åĬ¹ô1†C¦.0QJ¼h5?a9ÝÛ†Æ5ö¨ ü¡Ä y §-N86æ6õ á¡P‚<÷¥R{á@˜ÿPzLàЀ”œ!Hª&`mˆª@)TÍÞnœïw3KF¥O[bMxX&‚¿l-ï’œîmGSß[ÔþPZ&S"f8¦\û×5`¡T@¸D•ðSKæÜ8.kÿ-¦ƒ€Xe¨$ñÜXC è‰mív‚|/SO~•3¼W¥+ݸ<¥yÑBÞ¡8ÝÛŠ¦ž5´ç 4Ä¢ÜK¶ëÒQJc¢a Á„pP´tÏ£Û ½¯vÅ“üã U3[sÚ,aÿ!hõÆÑ"µ«î°Œ“ÅÁ[C›Á§´B])ÖFŸ+×+pDÀ1üEWHéœUÁj|Öî¥|;>M6ËùÕz²*_£¯ûwyfQu¶_'2:«þý­Ze)N‚ÖhàK‘(zó52sÑAI àÓm­Ñ¢:{®€ÄQ4¯°0ð9ó¶QR¡Ój½ Zc[Úi™«#}Ì:°Á.QÜ wWÃ;á‚aJÝW œ…RïmÍES¾}þï݃Þ]åëbjÑáÎùNÑšsA¹~‰$tL0ºo†:'7ëEœÍÖI\ S›§¶,6ÏDú´Ç½~Q/¦å"Ïb8ðÚ%á{HïÒÆ êô‡ Óe^”h¯³ë$·žÙ¨ˆ‰.g«øÖ¢8Ëœ+»„GhVØ E«y~çwèþ@ÿ:ŸØñ0IÖ«²ˆÁn P¯´EºÈÀšÙÙ/vº5]ÍãkHÌô!³7y’ÃÂ¥:d¹ŒKx˜ˆ{z>>- ªÍÊCŽÊÍ2Ÿñr¾y®†©£âAbomÂö»i·O.~ Zÿ0y› endstream endobj 47 2 obj 1077 endobj 48 2 obj << /Type /Font /Subtype /Type1 /BaseFont /NUKPRT+Times-Italic /FirstChar 0 /LastChar 255 /Encoding /WinAnsiEncoding /FontDescriptor 49 2 R /Widths [ 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 333 420 500 500 833 778 214 333 333 500 675 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 675 675 675 500 920 611 611 667 722 611 611 722 722 333 444 667 556 833 667 722 611 722 611 500 556 722 611 833 611 556 556 389 278 389 422 500 333 500 500 444 500 444 278 500 500 278 278 444 278 722 500 500 500 500 389 389 278 500 444 667 444 444 389 400 275 400 541 250 250 250 333 500 556 889 500 500 333 1000 500 333 944 250 556 250 250 333 333 556 556 350 500 889 333 980 389 333 667 250 389 556 250 389 500 500 500 500 275 500 333 760 276 500 675 333 760 333 400 675 300 300 333 500 523 250 333 300 310 500 750 750 750 500 611 611 611 611 611 611 889 667 611 611 611 611 333 333 333 333 722 667 722 722 722 722 722 675 722 722 722 722 722 556 611 500 500 500 500 500 500 500 667 444 444 444 444 444 278 278 278 278 500 500 500 500 500 500 500 675 500 500 500 500 500 444 500 444 ] >> endobj 49 2 obj << /Type /FontDescriptor /FontName /NUKPRT+Times-Italic /FontBBox [ -169 -217 1010 883 ] /Flags 32 /CapHeight 653 /Ascent 883 /Descent -217 /StemV 76 /ItalicAngle 0 /XHeight 441 /FontFile3 58 2 R >> endobj 50 2 obj << /Type /Group /S /Transparency /I false /K false /CS /DeviceRGB >> endobj 53 2 obj /DeviceRGB endobj 54 2 obj << /Filter /FlateDecode /Length 55 2 R /Height 60 /Width 128 /BitsPerComponent 8 /ColorSpace 53 2 R >> stream H‰ìW¿J;M}±±P AñO!ØXÚˆ ¨Ø)¬>Ié¿*‰•Q+‘`iH+%EÀ€U@òÁ<>B¾Ã^¼ÜÌÌN6»fg÷GN±lv7»çœ9sçN·;BÊP«ÕÚí6ÿüþþÆO7›M¿[n¡«ÐŸùö BNä¬(‹`þ  8V*ïïïÉmÜÂb‹è.ÏÐ+p?¢‚Îé(Oˆm×2©‘…³:*mâ€o=È\?<<¤+D˜Tð]≓óós"L> •p_,€ë|ä[ä*~âL¾æã!‹GFIÛCô÷„†QMÌos5—GHê¿Èçósss® †z/²ÙìÔÔT’UüüüH®é„Á××Wù~~‚0Ž®‰„I€ÿ®‰ ¢ä»&)•@S5u´%¨`¦QB§ªðOcÁ¤Ì¸f_\³0ßUf:Îëë럼 Òh¾« Ëíw¹\Žþ¶Qò‚ÚYë¢×½øÍ?;;û“÷ÄF›w@²-ÁÏ»»»è/ø†à"ÇÇÇ©X.™0[D ½œÉœ¥ŠÍÍÍÇÇG—´ü¡æPÊ]±XŒžÿ!U0gEމÚeè„9ê²Dð”J¥æ_QÁ„¥ œ£yHHx$a½Ât{=W2“ÿ%m©‚ sþy,ÜNIX¯0ÏùÖÊÊŠóÉ–LW¡{.ÿ˜Édâç/ ëy0z.¯×µ.(Vö%jÂ¥ ?Ï*bãϬ°i•É7zn1œëÛÛÛ1çǨôŒžË‹~* …B£Ñˆ0¾B'ŸVvÕ»sû@X–§¾ðS]ïmÞü4U€¨’ÿ!Ma4$¬B Y…½®òÊPå¤IªÏÖ¾´ý¬ãéA%á™ {-Ž]EÝ[jÉsê"(BOäí³Ã^äém¥¾Í3ÞŒå‰Ö,"¯tnÆþÓ¾a 2:õ`ù¨BÒæ!ÓÙh Ûnirêþ£#ûO]hc8üêªQ“—;Åúb‹|­Ù¹Ù;üT°œ޽Q…Ñv}#i| ånkk‹ŸñS|óÈ ÷Óâ¢0m…Œ €NÒ2¯y¼àpÛƒ…Ò *˜d£ÑTÅ@Ñâó *ÂIÌ%mc„ÃýF¶Ð3ö-Xh°™­V+´Š®)Zh]¤ÿÃSÁÜd0~<è„û !Odý‰L^2ÄÅÐ*Ðw!™®$ðr¦çG²µ«8É3˜9¸±¢TNÇÿn¯ÉMgëWŽâÏ¿VÑíåL­¾EÉdœóïöJèŠ"É»‹ ‡ùQ ä‡Eq#¤¨@øiwÄ×? ~³­Zrüg(*”êD€Šl6{qqá„a_(„õêD(•JI˜¿~°¨¨V«I ¿&lÜùæ_QE¡Pˆ¹í‰Ù»òEÈIÈú¬âèè(ù±1Bö®t%B®®®\Sˆ Zš“ÐŽ0Âÿ0ômc‘F´Úºf®TDY©U“ݦ+¤WE.—[ZZtÞQc“œÙšv¼é°$A>Ã}¢DïM«B2”HBN‚ÃOEªå#Œ0Âÿþ`‚µVƒ endstream endobj 55 2 obj 1640 endobj 56 2 obj << /Filter /FlateDecode /Length 57 2 R >> stream H‰ÜWÛŽ7ýýC‘E/€a ö8v׈7d ?(²®¶Ø{µÞݬԣò¨ìWó×w럀ì¶÷+5¹]ýº^ýÖ==»Þ-Ž_®7»ÕÛîérÝ4xx·¸¹ÃÓ³Û›Û­zM†È+G1$˜#¬w7‹]ë®[{µ]lî>,¶«Íòc‡!ȧ—Ïf¿Ì.BÐ9(¤³ËY5³Ó¹é¢¬M0 ¤ÛU#G»ÞÏþ£63«äßözF:„ÕZÍæ?¬áú×UÉaݬvÛõRm×xaÕõÚObŠKHðãÈM¹«xhGBz7û7XÞ¬?<ß¼U/^~Ö XxfëH1‘vœ=l,Á‚¶.EYgň炑±ÃÏ@N0¯Éç~™±\ÌùÄ~ÔE)üר¼Qòï‡ï•7ÚG¨å7ezw?ãÿ?Ôë7F½ý4+FÿU>DL”TœÑ‰É*6Ns6NEÖ1çTBv–”%§-Y»–ˆ×#­x´Dª@í‚}K°ïbÜ罜½ú’œµª5êúï®_Í^s’ä‡Z#~{?{úõ—¬ ZqÔ¶Õ3–£;¼“àƒÓ!§žfŸ’ì‹:BXä5S =°vNgèbÄøç¶ÍI{VQÈ}R&‘21lg¡ú'‰‘‡A¨xe-" 8 öÈr–Y§äÒ‚gl{ü`]²)—ÔséläýÀf”åZ 5ñ5ò¥uM É%4%Ÿ¬¶ÁØ&(;2e`X—‹´EM·]gL(˜|É[0o™»u90ìáÔr.Œûø\ú¾Ài+x–»dl Åwt®ÏC„u¡›“„ÔÄ‘Tc“ˆ= '/^Q¢Ž¿d%þ JßÇJQŠÚÚHmÄÁÈ;êÖEiA>H3<êc 1"Fæt^jVº9ÉHÍÜK56Ñž#—)æ Féôi˜æ\–Ü@ŒÇR²NÖY”!Œº˜BŒˆÑ%vç%ÆA¥›“ŒÔ̱TcSˆÿ¡'· Ü˜bB\2‚ù0T£Ëšd&9V#0CÎwëY…ý8êc 5â>5+Ýœd¤fnŒ¥›Nr™K.vfo—Üsãƒ/Œ¤[¨{³uýÆr)ôä´>ú˜BˆÛ¸ÎJÃJ7'©™c©Æ¦P£Í¸Šzk´ñÉ•œ‚6Fâ²V˻㔬moªÇbÄÖè÷WDÈ&kß-{èa -Âwç¤ÅA¡›“|Ô¼pTA“Ñ¡5»,c"q/Ä‹:êC-w2Á\Þ_Ðmtp¶oŸ.§Ö‡ýýeèc)–³?¯‘qXéæ4#sc,ÕØtjLVsÄxØcÒ®CÄzŒõ¹÷äÖuöÆ|L¡ÆCŒç¦Æcæþ‘16Xª±)ÔØöÁµ7Þ Ô0òæaËÄÞçCÒÞ>h¡0mJ£.¦#btþÌ&Æa¥›ÓŒṮTc“ˆQ¦CÇNÛz-ʈç@¤áÔÁe¤,Ðàöâðà (b-æƒ=L!Å+§³’â°ÐÍIB*ÞÆ8ª±/¯DÖÙK¨Û In¾Îcâ'êûb¹g9ouð& ´ˆu–Rää2ÆCÏ£>¦#b4Æå3c_éæ$#5sc,ÕØjLQz8y9§)hNÜçXnB§îšÖçŽuÆæaNÙ¨)Ô(ñ8cÏP}¥›“ŒÔ̱Tc“¨Ñʤ`år¾S£³³ÔÏYk´NÖõö>wku¶†9 »£â¡)Ôˆx':C5ö•nN2R37ÆRM¦FÊ ïOê¢FÊ ÉÅ>Öƒ¬“>ü±)GŒä)Rw£>&P£Äã“÷ç§Æ}¥›“ŒÔ̱TcS¨1²Ä­eêÕ˜jLN¾>þŒÞ Bîï0„[[YöX¹”QòÓxÜÅbDˆhõ|VbVº9EHÍÛI56¦Å¿=‹–Ÿ¬ŽÎž"ì8‚ùËÛõfwµú}÷øñüÅW¯m ËbW{1a̾žpUy3ÿqµÝ­—‹õnqs·ROž¨§—Ï`åúzú¢ýñíí¶Yˆ¹onÖ×›fµÙÁ^ÂÛ³÷‹íþý«õWÊ& 2QÍ¿¹ßÝþsµÝ¬7×Û²åjñÓÁ"]®ïv‹Ír¥\Póg·÷0oÔüÕîöÃêÔnzzÕ•v+JY£rßZqõÐÕRþü&¶jÖ¹/ù¶?«¤¯šÙ£ç_]ý<ÃŒf¥4Wog~iîï‡ëö‘bꀛ‡@µb3´°j=~ ,†ï·í£ÃÄÞª3Ø/ø®}ŽD§,Þ-6ŸÜ°{sÄLJ[JTϯfÏ¡çE#r3êBØ1E¥ìl<\K?)¸ÂtÇÜÅžÌÚxù×3¬V,?¹åöDÝý¥’\x‚3¨Ð•£­çÿ,ImHJòjìíªºJ¥*FU®‡üÎÃÙAþ˜V‰£¶&ÊÅÄã#„¯–£l¹WyŸä+!Ÿ5û2Ûz”†Ð•t|ÆŸ‚aØH‰á€-:ؽûþ=cHÏ>Cî£`†1v\ŽŸ1dCœÚ8‘¼œXÎÆÊÐêÈræ–»ÄÌ‹¥@²Š1Š2+ Ê‘£|AöMt&ŠPW¯9Qåš‹±º×ØØizðLÒ\NÂ(jtIòEcÖ£†(g›T€8¢Êàß粟y–³VÈöÞèÒ^ÂÙ»£ Cõ>gÑáµ%™PÕŠÊp[ÃyŸm"‹ØÙ@öˆ±`1¤PöÚöVÄäe(è–ù 1A½°9êb¯v‡©&D)eˆø¼¼Œ†V‡S±%2ôøâ˜¢+n2e”×1˜Èžá%â(ßcl¢ædlA¢ñøHlhã…nüt ¯ëÔœ*gUõ±`_úÊÐZBòA¹,·\. FdEP€Xç<> æR¤‚áKpW]:8ëºuí­ØãÖkíã %ÜŽ0LÓñ-ãðʼnÙìÝt׌:›ædÖuuF*1‚MÇ8® õŒ·$)Ÿïq¬ÇXŸ{O×`]goÌÇŸdü`vrƪóÇYUìP‰lÆË÷Œ~í >¨cÆ1§P~º!·çá1á!io´˜‹¶œÛµ‹?I8Ì:ŸÃ´„³iNf]Wg¤#Ø'Ü ¼,‡0bMWÅ60K#‘Õ8„ árNٲŒÁnÁ• N&ÆP°ÿ_5½mÜ@ôø?ì1=Dæp†_@ƒ£§*ôRô`¤Ž¡Â› Ž ¤ÿ¾oHJ]-¹Rzѽzæùæ‘Ã7RÍ'¥…øçÕVäR±cœìšjÏÉŒ œÛÌt²Ð@Wš`–`Årc€ãL˜ñè6Ä£âPnz'3.’n’ÓKD»¾àw(cýó!1[sݧùˆãrJ…S­ó€ØÄ¢£C…‚]ÑWa¦Cçœî84¡Øa"·ÃrR8•—zp’‡ã8„5ùŒÌ¸È¹ÍM' ´†ØYXvZ’¬T±³<*rXiÖ‡“›ŠÍNàVƒWÌ8»Sô÷Ñ®ÄÖ’Œ]WìS2ã"é69½D´ØõõæâYàÎÉ´š³ÀRF[ë.^ÉP2Fêò£aè(àc¨Wzv"Š™ ¶;EßžGv©–ËHTBXl–5«ùœÍ¸Àº“^&:؆­œ>,ƆÄÕ°eƒÅx ãNl6³ÙX1‡õgë ì8ÑÔº(Æ’|w޳ ÙÁ¯M"¬è×NÉŒ‹¤ÛäôÑbkôd¥Ê¼™6¾ãdýä7ÁeÇtì&XLš¶d: °L›“ŒE»Sô+úá„Z2 a|îTWkÉælÆÖmrz‰è`W×S‹jÀ†áÅM.ZÀká1©÷ù W+’D1lðÚPÊ&$h¤Ã UanŠïR̉ïOÑ?ßÎRîqÉÕ’‰FxM¹çdÆÒÜôòÐbW—V‘PºmBÄ1T@Áù ÇQ»&æ¤N|®ÈØÎp,J‡yWn-„²uÔ,~Oêÿ¬¹Atºæ¤ó¹´¢Ö3*ãáN^ÚÌ‘¬òí/_vŸ÷ÛÇïû7on?<ì_v߇ßÍðšÌà}„yrÙõƒöÛß_ö»Ïç‡çoÃÛ·ÃÝûwóôi¸ûðîæn‹…ëÏËv~¡ÚÀ0 dùÛ‰ºo^½ÿiû× š k1bûçͫLjHö°!.øxñ•/põëKùÊ1Uà›÷Û›{PÑÏLõóÙRçDT½00]ý,µÑ4M¿ž˜ñùû½&AM ‡YºŒ)+Lè¹ôkK?¶?Ž ¤Û8Jõ¾¬ u¬®íëY²»¹Ö§ÿÿ|úõél°ç ÁšÌõ…ÀŸÛ™ÒRªgÚÿÿ4«øç’œúùW€/!… endstream endobj 57 2 obj 3686 endobj 58 2 obj << /Filter /FlateDecode /Length 59 2 R /Length1 2621 /Subtype /Type1C >> stream H‰TUyTSÙ^ˆÓ1TÞÄ)yú^œv\GÅ9Úíè€ *‹² ²E²&!! Áa“} ›‚0"‹‚ˆ2ÖµuC«¸ØNÓŽö{Ì¥=}a柞{ÎwÞùîû~¿ßwïýÝËÁì0‡ó‘o஽~«$‰bÙjoyd‚$Ú–_ɳˆÃ,¶c({æcêYÈÁíДø“þ'GZœàò‚áEÌwÆ8^×àˆ«ëú5®®®LNQI%±qrÑòè¢užnŸÙ¢û\ô´EO×¹¸a.º‹¶Æ$G‰Eþ*™\œ(y'E'KS’¥‘rqÌ‘hkB‚Èφ&ù‰eb©‚ÍÎIId¢H‘\#NŒ”%í–$%ËU)âÕ^b¶j뗢Ȥ˜µÉR‘„-–¥EÉ$1’H©D,ûàç^ç¾1ŒÃìS¶Ã6bØ6 ûÃv`˜†íÄ0{ÌÏ Á0»d˜=†c)â¤r~´SÛ]´§ìï8¸;äâø >Ëå^sôr<ÉÛÈëñE|†cìd^ujj!ú=t€=q™‚…3 £ùmz‰P™“`È¢Ó¬¯ÚGkѹh Ä΀ø@8ML¾ó7¤¦… »ö ªM¦šoIØÞœ–úÆ£Ëèf˜¬ÄZ[5Xn¥ùPj´Â°*­,Û‘'bz†?³D0›Ç%&5Ž6º8aVN´!ûÿè“ãؤ)×!FdjD‘¥ÒT 44¸ëơƠÉ×Rú› U™²Ótéº —´„<r+àÓ7––Ü&ao‘beÝT€³]«z¡·&ºó•ÎçÀŽ˜&&g‚fV ˆi­ ÏÈÎPƤúto"Q<òGÁHÑCÝ7æ¾kôì©»Ön3¹Ô¢ãy}‹!I¨‰Eے䔹_øˆ'¬3Ûaž Lœz8Ì4ÕÑD|õ#hêöÉÛc½?߀xÛ©‚B¼º¯yªZدh»ÿ­ Idsãfk,dÖþìÀl–w¤¦ -ÍÐxÓ÷¸½Àoœè»Ä#âûÚïÿ0D–WSÒw #©+ÙÉÀë®ßçXn¿8EV–çhÙóªÜ‚ºR„Ƹþñ³ã£=Tq)ΟS,µ)î»wäGt06½‡¤‡•dAFa MÄtþŒÂ~yËWk½5ŒÕv Ä6mAY?k;,K«ðB_' œå?‹ªNßâ1ã=WŸ “ %*šèˆÞŠ 2aRaâéó'Nß8Ëz¸‰YÓÄimOìá.ã#@KYc¸¡eC¾ïa5,opšHxŒxt®B0l>x@´E#npbÏ·ðÁw 4‰ëÁkŒ™oæ´>sµ=C"AÒ‘€#•ýàÁÜýÍ6n†Íömº¯­þ$ZÈÂû¡Å_¶ùM¾¼øhrŒµ¼ú&#\šÏ>yŽÈ ÀcÇžiK‡"|Âä“8…e€âw5)`ú‡×c*‡öyù OKõÐ7·yDGMÙ%°·ÄåmìYÑc<×-­‘ïþšçOç( G Ô¶hUá¹{¿Êå© +*Š*HK±&C—'É>Dކp~WVSP°æç5;çÎéûmµDÖKDmÀk¹DXE‰éX5IÔuô¥w’ãÓ­À¡Ÿ"þ˫‘®r3E4\oÙçWL'ØëÆ3¸„5GŸ—­fk•uáä’ÿ¨Wþ};l>÷ +Ij{[S:{ç·„<€¼÷ú«°Ü:÷—Ð÷¼ø@;§ò“‰”„‰‚‡‚‡†àoh[^jzz‚o„…‚ˆ†‹†Œ…ÕCû§‡{xN|m§Ÿ¿²·Ø¾~’krh\w€†“”Ž‹ŒŽã÷á߀ÀXº÷þ™w¨wµÙ÷=ÙŽVøa÷ _hohx€Š–š˜·‘ŸÚ÷¿Ad uLZAŽWiL-`vˆ ˜Žæ÷ÿˆ¦YY‚Y…}´ž‹np?û__ž|¯åÕ÷÷ÏŽNt9w7y|f¸½¥¥æÊâûbÂTÞø£˜£wø³˜¨šø$Ž—’ŒšĘ`0¦œUµûCepaZrnci~‚{Xy~§mvzzv˜a¶ˆ“÷ ÷¬øf÷ ¯w¥fq€v}]Á–bV<û`Ew÷~ÖP÷G~Šy={ƒ[yù!œû†˜÷’÷ Žüt}™ù*™ûv•÷s‹÷š“ü|Œ « × øˆ÷ù ԇϮ endstream endobj 59 2 obj 2514 endobj xref 0 61 0000000004 65535 f 0000000016 00000 n 0000000069 00000 n 0000000133 00000 n 0000000006 00003 f 0000000524 00000 n 0000000007 00003 f 0000000008 00003 f 0000000009 00003 f 0000000010 00003 f 0000000011 00003 f 0000000012 00003 f 0000000013 00003 f 0000000014 00003 f 0000000015 00003 f 0000000016 00003 f 0000000017 00003 f 0000000018 00003 f 0000000019 00003 f 0000000020 00003 f 0000000021 00003 f 0000000022 00003 f 0000000023 00003 f 0000000024 00003 f 0000000028 00003 f 0000000713 00003 n 0000000823 00003 n 0000000904 00003 n 0000000029 00003 f 0000000030 00003 f 0000000031 00003 f 0000000032 00003 f 0000000033 00003 f 0000000051 00003 f 0000001190 00002 n 0000002681 00002 n 0000009114 00002 n 0000025517 00002 n 0000025540 00002 n 0000044438 00002 n 0000044461 00002 n 0000065098 00002 n 0000065121 00002 n 0000085280 00002 n 0000085303 00002 n 0000094502 00002 n 0000094524 00002 n 0000095683 00002 n 0000095705 00002 n 0000096925 00002 n 0000097153 00002 n 0000000052 00003 f 0000000060 00003 f 0000097245 00002 n 0000097273 00002 n 0000099053 00002 n 0000099075 00002 n 0000102839 00002 n 0000102861 00002 n 0000105484 00002 n 0000000000 00001 f trailer << /Size 61 /Info 5 0 R /Root 1 0 R >> startxref 105506 %%EOF ctsim-6.0.2/doc/ctsim-textui.tex0000644000175000017500000003066110667176710015617 0ustar kevinkevin\chapter{The Command Line Interface}\label{ctsimtext}\index{ctsimtext}\index{Command line interface} \setheader{{\it CHAPTER \thechapter}}{}{}{\ctsimheadtitle}{}{{\it CHAPTER \thechapter}}% \ctsimfooter% \ctsimtext\ is the master shell for all of the command-line tools. The command-line tools can perform most of the functions of the graphical shell. These command-line tools are especially appropriate for use on systems without graphical capability or for batch processing, shell scripting, and parallel processing. \section{Starting ctsimtext} \ctsimtext\ can be invoked via three different methods. \begin{enumerate}\itemsep=3pt \item \ctsimtext\ can executed without any parameters. In that case, \ctsimtext\ offers a command-line to enter the function-names and their parameters. The output of the command is displayed. Further commands may be given to \ctsimtext. The shell is exited by the \texttt{quit} command. \ctsimtext\ uses the \urlref{readline}{http://www.gnu.org} library on UNIX and Linux platforms to provide command history processing. \item \ctsimtext\ can also be called to execute a single command. This is especially useful for batch files containing multiple \ctsimtext\ commands. This is invoked by calling\\ \texttt{ctsimtext function-name parameters...}. \item Using operating systems that support soft or hard linking of files (such as UNIX and Linux), the executable file \ctsimtext\ can be linked to the function names. This is automatically done by the installation program and the \texttt{rpm} manager. Thus, to use \ctsimtext\ with the function name \texttt{pjrec}, the below command can be executed:\\ \hspace*{1.5cm}\texttt{pjrec parameters...} \\ as a shortcut to the equivalent command \\ \hspace*{1.5cm}\texttt{ctsimtext pjrec parameters...} \end{enumerate} \section{Parallel Processing}\label{ctsimtextlam}\index{Parallel processing}\index{MPI}\index{LAM} \ctsimtext\ can distribute it's processing over a cluster. Specifically, \ctsimtext\ supports the \urlref{LAM}{http://www.mpi.nd.edu/lam} version of the MPI environment. On platforms with LAM installed, a parallel version of \ctsimtext\ is created. The name of this program is \texttt{ctsimtext-lam}. The functions that take advantage of the parallel processing are: \begin{itemize}\itemsep=0pt \item \texttt{phm2if} \item \texttt{phm2pj} \item \texttt{pjrec} \end{itemize} This parallel processing version has been tested with excellent results on a 16-CPU \urlref{Beowulf}{http://www.beowulf.org} cluster. \section{if1}\label{if1}\index{if1}% Performs math functions on a single image. The commands works with both real and complex-valued images. \usage \texttt{if1 input-filename output-filename [options...]} \textbf{Options} \begin{twocollist} \twocolitem{\doublehyphen{invert}}{Negate pixel values.} \twocolitem{\doublehyphen{log}}{Take natural logrithm of pixel values.} \twocolitem{\doublehyphen{exp}}{Take natural exponent of pixel values.} \twocolitem{\doublehyphen{sqr}}{Take square of pixel values.} \twocolitem{\doublehyphen{sqrt}}{Take square root of pixel values.} \end{twocollist} \section{if2}\label{if2}\index{if2}% Performs math functions on a two images. The command works with both real and complex-valued images. \usage \texttt{if2 input-filename1 input-filename2 output-filename [options...]} \textbf{Options} \begin{twocollist} \twocolitem{\doublehyphen{add}}{Add the two images.} \twocolitem{\doublehyphen{sub}}{Subtract the two images.} \twocolitem{\doublehyphen{multiply}}{Multiply the two images.} \twocolitem{\doublehyphen{divide}}{Divide the two images.} \twocolitem{\doublehyphen{comp}}{Statistically compare the two images. The standard \helpref{three distance measurements}{conceptimagecompare} are reported.} \twocolitem{\doublehyphen{column-plot n}}{Plot the values of a particular column. The plot file is saved to disk.} \twocolitem{\doublehyphen{row-plot n}}{Plot the values of a particular row. The plot file is saved to disk.} \end{twocollist} \section{ifexport}\label{ifexport}\index{ifexport}% Export an image file to a standard graphics file. \usage \texttt{ifexport input-filename output-filename [options...]} \textbf{Options} \begin{twocollist} \twocolitem{\doublehyphen{format}}{ \begin{itemize}\itemsep=0pt \item \texttt{png} - Portable network graphics format. This is the default output format. \item \texttt{png16} - 16-bit PNG format. \item \texttt{pgm} - Portable graymap format, binary format. \item \texttt{pgmasc} - ASCII PGM format. \end{itemize}} \twocolitem{\doublehyphen{center}}{Set center of intensity window. \begin{itemize}\itemsep=0pt \item \texttt{median} \item \texttt{mode} \item \texttt{mean} \end{itemize}} \twocolitem{\doublehyphen{auto}}{Set half-width of intensity window as a multiple of the standard deviation. \begin{itemize}\itemsep=0pt \item \texttt{full} \item \texttt{std0.1} \item \texttt{std0.5} \item \texttt{std1} \item \texttt{std2} \item \texttt{std3} \end{itemize}} \twocolitem{\doublehyphen{scale}}{Set size of output image. A value of \texttt{1} is default and creates an output image the same size as the input image. A value of \texttt{2} will double the size of the output image.} \twocolitem{\doublehyphen{min}}{Set the minimum intensity value.} \twocolitem{\doublehyphen{max}}{Set the maximum intensity value.} \end{twocollist} \section{ifinfo}\label{ifinfo}\index{ifinfo}% Displays information about an image file. By default, history labels and image statistics are displayed. \usage \texttt{ifinfo input-filename [options...]} \textbf{Options} \begin{twocollist} \twocolitem{\doublehyphen{no-labels}}{Suppress history labels.} \twocolitem{\doublehyphen{no-stats}}{Suppress image statistics.} \end{twocollist} \section{phm2pj}\label{phm2pj}\index{phm2pj}% Simulates collection of X-rays data (projections) around a phantom object. \usage \texttt{phm2pj projection-filename number-detectors number-views [options...]} \textbf{Options} \begin{twocollist} \twocolitem{\doublehyphen{phantom}}{Select a standard phantom. \begin{itemize}\itemsep=0pt \item \texttt{herman} \item \texttt{shepp-logan} \item \texttt{unit-pulse} \end{itemize} } \twocolitem{\doublehyphen{phmfile}}{Reads a user-created phantom file.} \twocolitem{\doublehyphen{geometry}}{Sets the scanner geometry. Valid values are: \begin{itemize}\itemsep=0pt \item \texttt{parallel} \item \texttt{equiangular} \item \texttt{equilinear} \end{itemize} } \twocolitem{\doublehyphen{nray}}{ Number of samples per each detector} \twocolitem{\doublehyphen{rotangle}}{The rotation angle as a fraction of a circle. For parallel geometries use a rotation angle of \texttt{0.5} and for equilinear and equiangular geometries use a rotation angle of \texttt{1}. The default is to use to appropriate rotation angle based on the geometry.} \twocolitem{\doublehyphen{view-ratio}}{Sets the field of view as a ratio of the diameter of the phantom. For normal scanning, the default value of \texttt{1.0} is optimal.} \twocolitem{\doublehyphen{scan-ratio}}{Sets the length of scanning as a ratio of the view diameter. For normal scanning, the default value of \texttt{1.0} is optimal.} \twocolitem{\doublehyphen{focal-length}}{Sets the distance between the radiation source and the center of the object as a ratio of the radius of the object. For parallel geometries, a value of \texttt{1.0} is optimal. For other geometries, this should be at least \texttt{2.0} to avoid artifacts. The default value is \texttt{2}.} \end{twocollist} \section{phm2if}\label{phm2if}\index{phm2if}% Generates a raster image file based on a phantom. \usage \texttt{phm2if phantom-filename image-filename x-image-size y-image-size [options...]} \textbf{Options} \begin{twocollist} \twocolitem{\doublehyphen{nsamples}}{Number of samples in x and y directions per pixel} \twocolitem{\doublehyphen{view-ratio}}{Sets the view ratio. For normal scanning, the default value of \texttt{1.0} is optimal.} \end{twocollist} \section{pj2if}\label{pj2if}\index{pj2if}% Convert a projection file into an image file where each row of the image file contains the projection data from a single view. \usage \texttt{pj2if projection-filename image-filename [options...]} \textbf{Options} \begin{twocollist} \twocolitem{\doublehyphen{dump}}{Print all projection data to the console.} \end{twocollist} \section{pjinfo}\label{pjinfo}\index{pjinfo}% Displays information about a projection file. \usage \texttt{pjinfo projection-filename [options...]} \textbf{Options} \begin{twocollist} \twocolitem{\doublehyphen{binaryheader}}{Dump the binary header to the standard output. This option is only used when manually creating a composite projection file from several different projection files.} \twocolitem{\doublehyphen{binaryview}}{Dump binary view data to the standard output. This option is only used when manually creating a composite projection file from several different projection files.} \twocolitem{\doublehyphen{startview}}{Sets starting view to display. Default is \texttt{0}.} \twocolitem{\doublehyphen{endview}}{Sets ending view to display. Default is the last view.} \twocolitem{\doublehyphen{dump}}{Print all projection data to the console.} \end{twocollist} \section{pjrec}\label{pjrec}\index{pjrec}% Reconstructs the interior of an object from a projection file. \usage \texttt{pjrec projection-filename image-filename image-cols image-rows [options...]} \textbf{Options} \begin{twocollist} \twocolitemruled{\textbf{Parameter}}{\textbf{Options}} \twocolitem{\doublehyphen{filter}}{Selects which filter to apply to each projection. To properly reconstruct an image, this filter should consist of the the absolute value of distance from zero frequency optionally multiplied by a smoothing filter. The optimal filters to use are: \begin{itemize}\itemsep=0pt \item \texttt{abs\_bandlimit} \item \texttt{abs\_cosine} \item \texttt{abs\_hamming} \item \texttt{abs\_hanning} \end{itemize} } \twocolitem{\doublehyphen{filter-parameter}}{Sets the alpha level for Hamming window. This parameter adjusts the smoothing of the Hamming filter and can range from \texttt{0} to \texttt{1}. At a setting of \texttt{1}, the Hamming filter is the same as the bandlimit filter. At a setting of \texttt{0.54}, the Hamming filter is the same as the Hanning window.} \twocolitem{\doublehyphen{filter-method}}{Selects the filtering method. For large numbers of detectors, \texttt{rfftw} is optimal. For smaller numbers of detectors, \texttt{convolution} might be a bit faster. \begin{itemize}\itemsep=0pt \item \texttt{convolution} \item \texttt{fourier} - Uses simple Fourier transform. \item \texttt{fourier-table} - Optimizes Fourier transform by precalculating trigometric functions. \item \texttt{fftw} - Uses complex-valued Fourier transform with the \emph{fftw} library. \item \texttt{rfftw} - Uses optimized real/half-complex Fourier transform. \end{itemize} } \end{twocollist} \begin{twocollist} \twocolitem{\doublehyphen{filter-generation}}{Selects the filter generation. With convolution, \texttt{direct} is the proper method to select. With any of the frequency methods, \texttt{inverse-fourier} is the best method. \begin{itemize}\itemsep=0pt \item \texttt{direct} \item \texttt{inverse-fourier} \end{itemize} } \twocolitem{\doublehyphen{interpolation}}{Interpolation technique during backprojection. \texttt{cubic} has optimal quality when the data is smooth. Smooth data is obtained by taking many projections and/or using a smoothing filter. In the absence of smooth data, \texttt{linear} gives better results and is many times faster than cubic interpolation. \begin{itemize}\itemsep=0pt \item \texttt{nearest} - No interpolation, selects nearest point. \item \texttt{linear} - Uses fast straight line interpolation. \item \texttt{cubic} - Uses cubic interpolating polynomial. \end{itemize} } \twocolitem{\doublehyphen{backprojection}}{Selects the backprojection technique. A setting of \texttt{idiff} is optimal. \begin{itemize}\itemsep=0pt \item \texttt{trig} - Use trigometric functions at each image point. \item \texttt{table} - Use precalculated trigometric tables. \item \texttt{diff} - Use difference method to iterate within image. \item \texttt{idiff} - Use integer iteration technique. \end{itemize} } \twocolitem{\doublehyphen{zeropad}}{Zeropad factor. A setting of \texttt{1} is optimal whereas a zeropad of \texttt{0} performs no zero padding. Settings greater than \texttt{1} perform additional zero padding, but without any significant output difference.} \end{twocollist} ctsim-6.0.2/doc/alphacalc.ai0000644000175000017500000031753010667176710014664 0ustar kevinkevin%PDF-1.4 %âãÏÓ 1 0 obj << /Type /Catalog /Pages 2 0 R >> endobj 2 0 obj << /Type /Pages /Kids [ 3 0 R ] /Count 1 >> endobj 3 0 obj << /Type /Page /MediaBox [ 121 276 491 516 ] /Parent 2 0 R /Rotate 0 /PieceInfo << /Illustrator 6 0 R >> /LastModified (D:20010221125655-06'00') /ArtBox [ 131.7207 279.09473 489.9043 503.46875 ] /Group 62 0 R /Thumb 65 0 R /Contents 67 0 R /Resources << /ExtGState << /R1 4 0 R /R2 21 0 R /R3 27 0 R /R5 45 0 R >> /Font << /F1 25 0 R /F2 28 0 R >> /XObject << /Fm4 42 0 R /Fm8 58 0 R >> /ProcSet [ /PDF /Text ] >> >> endobj 4 0 obj << /SA false /OP false /op false /AIS false /ca 1 /CA 1 /BM /Normal /HT /Default >> endobj 5 0 obj << /CreationDate (D:20010221125655-06'00') /Creator (Adobe Illustrator 9.0) /Producer (Adobe PDF library 4.800) /Title (alphacalc.ai) >> endobj 6 0 obj << /Private 7 0 R /LastModified (D:20010221125655-06'00') >> endobj 7 0 obj << /CreatorVersion 9 /ContainerVersion 9 /RoundtripVersion 9 /Options 8 0 R /AIMetaData 9 0 R /AIPrivateData1 10 0 R /AIPrivateData2 11 0 R /AIPrivateData3 13 0 R /AIPrivateData4 15 0 R /AIPrivateData5 17 0 R /AIPrivateData6 19 0 R /NumBlock 6 >> endobj 8 0 obj << /OptionSet 1 >> endobj 9 0 obj << /Length 1438 >> stream %!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 9.0 %%AI8_CreatorVersion: 9.0 %%For: (Kevin Rosenberg) ( ) %%Title: (C:\\ctsim\\doc\\alphacalc.ai) %%CreationDate: 2/21/2001 12:56 PM %%BoundingBox: 131 279 490 504 %%HiResBoundingBox: 131.7207 279.0947 489.9043 503.4688 %%DocumentProcessColors: Black %%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0 %%+ procset AGM_Gradient 1.0 0 %%+ procset Adobe_ColorImage_AI6 1.3 0 %%+ procset Adobe_Illustrator_AI5 1.3 0 %%+ procset Adobe_pattern_AI5 1.0 0 %%+ procset Adobe_cshow 2.0 8 %%+ procset Adobe_shading_AI8 1.0 0 %AI5_FileFormat 5.0 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) %%+ Options: 1 16 0 1 0 1 0 0 0 0 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 2 3 4 %%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 () %AI3_TemplateBox: 306.5 395.5 306.5 395.5 %AI3_TileBox: 134 -263 720 503 %AI3_DocumentPreview: None %AI5_ArtSize: 370 240 %AI5_RulerUnits: 2 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI9_OpenToView: -49 619 2 1345 943 18 0 1 11 68 1 0 1 1 1 0 %AI5_OpenViewLayers: 7 %%PageOrigin:134 -263 %%AI3_PaperRect:-13 779 599 -13 %%AI3_Margin:13 -13 -13 13 %AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 0 %%EndComments endstream endobj 10 0 obj << /Length 5694 >> stream %%BoundingBox: 131 279 490 504 %%HiResBoundingBox: 131.7207 279.0947 489.9043 503.4688 %AI7_Thumbnail: 128 80 8 %%BeginData: 5272 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD68FFA87DFD7BFFA87D7DFD7BFF7DA8A8FD7AFF7D7DA8FD7AFF7D %A87DFD7AFFA87D7DFD7AFFA8A87DA8FD7AFFA87D7DFD7AFFA87DA8A8A87D %FD07A8FD71FF7D527D7D7DFD09FFA87D7DA87DFD6AFF7D7D2727FD12FF7D %A87DFD64FFA87D5252A87DF827A8FD12FFA87DA8FD5FFFA8A8FD067D52F8 %277DFD15FF7DA8FD5BFF7D7DA8A87DA8FFFFFF7D527D52FD17FFA852FD57 %FFA87DA8FFFF7DA8FD06FF7DFF52FD19FF7DA8FD52FFA87D7DA8FFFFFF52 %A8FD07FF7DFFFF52FD19FFA87DFD4FFF7D7DA8FD05FF7DFD09FFA8A8FF52 %FD1BFF7DFD4BFF7D7D7DFD07FF52A87DA87DA87DA87DA87DA852A8527D7D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D7DA8FD46 %FFA87D7DFD09FF7DA8FD0BFFA8A8FF52FD1AFFA8FF7DFD43FFA87D7DA8FD %0AFF52FF7DFD0CFF7DFF7DA8FD19FF7DFFA87DFD40FFA87DA8FD0CFF7DFF %FFA8FD0CFF7DFFFF52FD0BFFA87D7DFD0BFFA8FFFFA8A8FD3DFF7D7DA8FD %0DFF7DA8FFFF7DFD0DFF7DFF52FD04FFA87DFD05FF52A8A87DFD0AFF7DFF %FFFF7DA8FD39FF7D7DA8FD0FFFA87DFFFFFFA8FD0DFF7DFFFF52FFFFFF52 %A8FD04FF7DA8FFA8A8FD0AFFA8FD04FF7DFD36FF7D7D7DFD12FF7DFD04FF %7DFD0DFFA8A8FF52FFFFA87D7DFFFFA8FF7DFFFF7DFD0BFF7DFD05FF7DFD %32FFA8A87DFD15FFA8FD04FFA8FD0EFF7DFFA8A8FF7DA8A8FFFFA87DA8FF %527DA8FD0AFFA8FD05FFA8FD2FFFA8A87DA8FD16FF7DFD05FF7DFD0EFFA8 %A8FF52FD04FFA8A8A8FD10FF7DFD06FF7DFD2CFFA87DA8FD18FFA8A8FD05 %FFA8FD0FFF7DFF7DA8FFFFFFA87DA8FD10FFA8FD06FF7DFD29FFA87D7DA8 %FD1AFF7DFD06FF7DFD0FFF7DFFFF52FD16FF7DFD07FF7DFD26FF7DA8A8FD %1DFF7DFD06FFA8FD10FF7DFF52FD16FFA8FD07FFA8FD23FF7DA87DFD1FFF %7DFD07FF7DFD10FF7DFFFF52FD15FF7DFD07FFA8A8FD1FFFA87D7DFD22FF %A8FD07FFA8FD10FFA8A8FF52FD15FFA8FD08FF7DFD1CFFA8A87DA8FD1CFF %A8FD07FF7DFD07FF7DFD11FF7DFF7D7DFD14FF7DFD08FF7DFD1AFFA87DA8 %FD06FF7DA87DFD15FFA87DA8FD05FFA8FD08FFA8FD11FFA8A8FF52FD14FF %A8FD08FFA8FD17FFA87DA8A8FFFFA87DA852FF7DFD04A8FD13FFA852A8FD %06FF7DFD08FF7DFD12FF7DFF7DA8FD13FF7DFD09FF7DFD13FFA87DA8A8FD %05FF52FFA852FF7DFFFF7DFD15FF52FFA8FD05FFA8FD08FFA8FD12FF7DFF %FF52FD13FFA8FD09FFA8FD11FFFD047DFD07FF52FF7D7D7DA8FFA8A8FD15 %FF52FFA8FD05FFA8FD08FF7DFD13FF7DFF525227FD11FF7DFD09FF7DFD0E %FFA8A87DFFFFFF7DFD07FF7DA87D7D52FFA85252FD15FF7DFF7DFD05FFA8 %FD08FFA8FD13FF7D2727F87DFD11FFA8FD09FFA8FD0BFFA87D7DFD06FFA8 %FD23FFA87DFF7DA8FD05FFA8FD08FF7DFD13FFA8A827F87DFD11FF7DFD09 %FF7DFD09FFA87DA8FD08FF7DFD23FFA8A8FD08FF7DFD08FFA8FD14FF7DFF %7DA8FD11FFA8FD09FFA8FD07FF52527DA87DA87DA87DA87DA852A87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87D7D7DA87DA87DA87DA852A87DA87DA87DA87D %A87DA87DA87DA87DA87DA87D7DFD14FF7DFD09FF7DFD08FF7D7DA8FD37FF %A8FD08FFA8FD29FFA8FD09FFA8FD0AFFA87D7DA8FD34FFA8FD08FF7DFD29 %FF7DFD09FF7DFD0DFFA87DA8A8FD31FFA8FD08FFA8FD29FFA8FD09FFA8FD %10FF7D7DA8FD2FFFA8FD08FF7DFD29FF7DFD09FF7DFD13FFA87DFD2DFF7D %FD08FFA8FD29FFA8FD09FFA8FD15FFA8A87DA8FD29FFA8FD08FF7DFD29FF %7DFD09FF7DFD18FFA87D7DFD27FFA8A8FD07FFA8FD29FFA8FD08FF7DFD1C %FF7DA87DFD25FF7DFD07FF7DFD29FF7DFD08FF7DFD1FFF7DA8A8FD22FFA8 %FD07FFA8FD29FFA8FD08FF7DFD22FF7D7DA8FD1FFFA8FD07FF7DFD29FF7D %FD07FFA8A8FD24FFA87DA8FD1EFF7DFD06FFA8FD29FFA8FD07FF7DFD28FF %A87D7DFD1BFF7DFD06FF7DFD29FF7DFD07FF7DFD2BFFA87DA8FD19FFA8FD %05FFA8FD29FFA8FD06FF7DFD2EFFA87D7DFD17FF7DFD05FF7DFD29FF7DFD %05FFA87DFD31FF7DA87DFD15FF7DFD04FFA8FD29FFA8FD05FF7DFD35FF7D %7D7DFD12FF7DA8FFFFFF7DFD29FF7DFD04FFA87DFD38FF7D7DA8FD10FF7D %FFFFFFA8FD29FFA8FD04FF7DFD3BFFA87DA8A8FD0DFFA8A8FFFF7DFD29FF %7DFFFFFF7DFD3FFFA87DA8A8FD0BFF7DA8FFA8FD29FFA8FFFF7DA8FD42FF %7D7DA8FD0AFF7DFF7DFD29FF7DFFA87DFD45FFA8A87DFD09FF7DA8FD29FF %A8FF7DFD49FFA87D7DFD07FF52A87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D7DFD4DFF7D %A87DFD05FF7DA8FD26FFA8A8FD51FF7DA87DFFFFFF7DA8FD24FF7DA8FD55 %FF7DA8A8FFA8A8FD22FF7DFD59FFA87D7DA87D7DFD1EFFA87DFD5DFFA87D %A87DA8FD1AFFA87DA8FD60FFA8A87D7D7DFD16FF7D7DFD66FFA8A8527DA8 %FD10FFA87DA8FD6BFFA87D52A87D7D7DA8FD04FF7DA87DA87D7DA8FD70FF %7DA87DFFFD04A87DFD7AFF7D7DA8FD80FF7D7DA8FD7FFFA87DA8A8FD7FFF %A87DA8FD7FFFA87D7DA8FD7FFFA87D7DFD80FFA87D7DFD80FF7DA87DFD80 %FF7D7DA8FD10FFFF %%EndData endstream endobj 11 0 obj << /Filter [ /FlateDecode ] /Length 12 0 R >> stream H‰ì]oã8î½@ÿƒöa€·ã|8¸—¤M{¹Ýi‹6Ý»Ýé¡Pl%ƶ¼²ÜNæ×IÉŽ3Û¢;÷rÀáÊÆ–(’")’¢?üp{6MÕJœ…½>;>úðá\ n”ž0B³E–Օш:¹;eq¯DÓÅøÉþ"t%U1i–.‘÷ä'ñ, v§*Q¬„Þœ²vŠ«Ki2ëç“ÇÇÄT2|LUòøÈ³rËž%=.O[5@î7@xïý¾Ïü`2²ÛH3Su‘Êb3S_&Ì}ŒbÅ}6èG¸þ7y'ªo‰z£ ?BÊ^?ŽF,ǽ¸…Àö¢áxŒŒ*©sQ˜[­QUç*Sºš°YÆ“ÏÝõKUÀßïò•Êpá/l)sQ- ÏdÒ%½"éw3€ªÖ Ä„• L%Œ=—§L<‹,xš.Ìï¬o…Ò˜]©6š—Û£ë3ÿº«OWš§6¤õWåý‹œoÈ]ø:]'V܆o–Ü¡‹V«W‰’j«^XËã×–«-ÇcãVÈ{º”™€̹aƒžE†Ö‚‡ ,˜0~ôDFÝ c@¸˜ô¸»šuϰ'ŸîÄF’y–ÿ:µi0´¢ïEÉíƒ08AW]ˆ5¯3c÷d{*šSfͺ)S×6òÝÏ‚oaÜ"8óñOöÇŽ²Èîs{{{–`ØgÑ–Çàÿa2š”D.E^f‹”Faذ0às?nHá\¶Eì,† RóË­ï³ Š„x™°kUwzSmîåW8¥pÔgAÔê] ýPHLž€p±uüG•ŠlBaíØ/3NGÙ±ŠžŽbÉõFL«¬6T·ÆýfíºÎæ;©î»MnJQ,Õ/¤æY³¡£ËBð] EƒÎŽÇgñ;8„F r#o#u„'q !w£åF“ÆA6–§[^ }'39óÁkPÍq ÇÜ|퉑ôóCÊWZ¦ûHlld|oÜùÅÍÏÙƒt,\øÏ‹ô\åx>ÕXúò!Sœ.Š$«SÑ”¥?S•Þay«H½ÍöjÍzg—·JØ;loV´wø^-pïð|SïÞ¡~­üáÙíŠN"¢.>…±÷{­Œ¨€+,zàõgÔï,¬x%¼5øJ›®,Nd™,+ 1á¥|³Ú½`ÝK¤†Œ^gâ‹ñk¶ª®x‘z÷ תð6µÌHv&ÖÆ»™3?XÙˆy4†„ØšvK"m&viUÖx¢HyµõDN/#³Txp@©È¹†»Ù«¾ÙÔ2+ᥠ:ª’ÌÄÞ¯=,®˜W•</ #/©µE²ƒÉÐ[iõz7…?{ ½—¨rçdêt-rYÈØGn—ÐÁÊxÛ]¹…§éÂÆÔËy‚j[ál¼¢ 8ëÊ3/ªªÁiRiÏlµíŒ'µ^^C =Â¥ Doù–ja·Xth-ÍÜl½kÚÄÜX†ËpÓa¸±:Ý´|9\°²ÌvÞM•aL<4=Xæ‡óCËõ«]\n•†hÐ/j•ÇíÆ¼±‡w¸¹Ýš·B8¹ƒ /iÜ!,»°ÒÅžD‰–OZ*i©dg ÙÒpGa7T–\5:©ƒr$-_*Ÿ%"¬3jËZÛê}ê–gg— 9c× –s{‘ þþ´¬àÎî\ÕáÕ—y‘(¬Cöd›Ú¶·ýäõ R±†þ?úOFT™0n¾$ÏñÀ ù iËÁ»^Qç+üòÚDu¢…– `¥ÀàÍK¤/R”V'[³åˆ†.T®øÒ˜ Òcµ’Õghž·®LÁ+vk U,+ŠŠÄƒ÷W¡•­Eð„Š†O¬3ð^Ãå…/IYIŒ» šÒÚ튔¶ÉTA˹lÆX±‘*Z¶ÁB¡éζoÄWltm žâg$¼gÂàë|+áy!2šÍáþ²bo Å­]sZ](z™-°BâýÄË?ó|•âàc k|Ü€‚Ú B9Ë­Ýín‹–ßË I]r$}h÷¬ï·Ø Á?‘÷¶ÂçoVÀJÃ÷¥0îd@-ÖJ‹ýJsNpÐY¦j=^P)œsbi±5‚{ˆRœ;¬ì Ù:ˆV·’ðçK+­?` •þ켑5ÞÈk B<öÖ¥lˆj7*ç CÞ¨Û:Áoðþ‚¼%yãëÞM‹@÷°Å4>¨d.­õÿýLý_ÍkJd´¾Ëyºs0›4\Ã9¸ä“Å: ³C,ueY½Â0“1ά“gµ&Öl`庹Ì«¸²– +ÊYYÏúN¬òÀZw¡„u_Câ DžCài¸0ñ\ªóÅo>ó¼’_xr³‰ôK oý3ÒGýÔeÜ讕.[è6æHßyúo¢ú± ½™éÑD¯Fz6нŽ.éç~èúB‡gz=Ñ÷‘=Ø Ž1²Gú^R€ÇÉ>bÉÙ], {ϳùr¶Eßuß{â{O|ï‰ï=ñ¢ž˜žÞ¼O¿˜cTý굆''¿ð×Q™÷ÿ˜~mWõõÏúƾ»îòg¹2åêHÖ»ýLòКþòó??ˆ&éOF›‰ÍU@LG\½Å{‰y¤,Ê3âmé,GÓe¼/¨ÕÛx÷õ%úâhuD÷LùÌî0æá®_RþùññnÖ‡'ÔêÑŠ|i…Ü~×÷#~uÕ»~\/]‹Ólñ%÷ô¸ÆGň—w,Ì÷µhú«p›loU²›^OªÖ¦Õ*Õ*Ô¦Ó*Ó¯_©LßDZ5ú$Òg•^n:}'Ó¢ÓÈ4ù²U¨U©{r"*½–‰õRÕ:ª¢×½ öHàŠdÕìH'OdÍE«'¬GBÛ©tbèIår!àqÏíü` P0¨V0Áˆà¢pj‘ÓÆDÈkpâe0àÌjV“OÑSMЏ5°äÁS`8ùز Ë lCêåìÓ6– Äq›ÀŽ ‚=†€òZÁ!Ž އ(YTÉ¢O¿‚Pš× ba¸ž§z°;€ß‰åƒYà8pS2Y&!gym€»ÈÉ ˆ÷ œCH»Ëæ½,ÈŸÜ–ZI‹/D ¬äUZ•®rÑï5ì5^jzA9)FtçÒÎïÞÆ~”xáPøíRó@kšùÖü–Ø|ImªÜ»ª7*7÷zs'8wŠs–œª9¯_UÑ9ª²SUç ;ݹ ÏMyšôÈñµ‰OSŸ&?Mš¡@*@Mš™5"OT†L‡š™™™™™©U=2A2EIjšd¢ä4D–D—L˜D™LšD›LœDDžDŸL D¡D¢D£¸kºÊ”蔕(UÒ„Œ*V¢V"W^KK$kÔTµ—ØTQÝ¢h̬ڵªz%Íd°¨6?ðw!@³ š9ÚÏnÙ>¸ÙÛK¬_g0È£W44ÄŠ‚"AF±@ Ë* ‰eÎ'H&FÅ„€ÂP1ëÃ[xx‚‹¤5ë.Š G¯T|4€xÚ#Ò*+ %à˜h-ÁE"­4)p Á @0 (ÿýû‹¾Dý /ñnÑn±>,Œ¨¡n.aNïnám±­½Ÿª,ž&œQcg¨Ah}Ñâ²½ò¡ÖkÎíß·ÈÝqkÛÂT¾›KìqÃéA¶’wHK E_çÙæx˜åeŽçY^æZç˜îjyXñR󥘣¨•¾w)ߪ­ý>âX·y¦úír¥ Ž¸ö‚ÆHÌ :ö«`5)j¹"žyÖ‚ê¾'º ªÒ³FöȾ– Nt’ÄóÈ—@Nt›ÈÆ$L°zQh0¹’`7@3ñ§‘Ú¤ G|N™<Ô\OQƒÒëŽØ#’t Ȥ9k0¶Pì5C$e‡Þ‚ð‚úð%òØ›$€œD›EZ;=Κ(µ¯Ú^ý¥†»CÓù0vQ{Ë-Õñ°ëì\CÓ¤6íbkyÖô¶«!<ìÉvÈ6î먻7á=g›×l3í]ôÿǵ2\tºZÄû‰3\…CCCB® X˜Ç¯ÓÑË p;v^VvÏœo‘ž‹òdVêò|YxëŽÊNS²´\Tç$:'Í9JŽ*Nœ›Þ0Ǫ7»ÜìjÓĦiIMÓ“Sæ¨"ccvªºlu/.—¾¾óï»ÿºÚ¡ñz°¼IÃ¥æKéžaÄx¨åA¥K­—Ê·ªZc;ï\å¾®‹Ò__At§k¼ÔÔê°ö¶Ê7ß Õw–g|ÇUß™«ïH"p_Íxt ƒ&Â9ÌvVÍÒ›ë ê:Ítšç,ê9I G§ùMs›æ5³&ûBW‰g=‡µœž¾%îéB/g[Gßә‡DŸ²E騢 ÑË$éåI¬›Îú|Qº¬t¾ ²¨õìˆQ É2G=i–3.;'éá ³—D!:µ¦šô(a¬m®ùW9±Ó?úèŸì<öÔ=õT÷4<ó[Vsàß\ñãëWoÞ¿ø‚ô«ŽÞ÷³|ÊwóñÃ~ØuOÁ½xàÇá_x…VʧºAf4'?ºQÞê›a–Ùò$œ]Oš¾íë®—ïNôÛ›åÏîýöùã»_>|üôÓçÔwÒOÿô¹½÷‡§ßýð.=ýðáÓç¿ýü¯ß¿~uú•»òOé£> AÁtPÏk ‡ê÷êNjz¾£Ú5yk2æwˆœ1R!²¤áÃà!ReðPtTp6 £ª•àÂ`a¨Pô»b-»d±Ê  ( EBBÃAƒACÀ0P!  þÙd‹Æ¿…¿D¿¿œUƒ*˜èW¯ê•Uºb=‹Ê)´WÝj²%òà8B‰<ô‡óåª'˸kC;MÚIò¦ ùpv4mPY8¨Âãóâ°kñUÞ¿©^4âo¿Ê¹ñv 9°ãTÇÞ½uôô¸t'¸åO5׊‹¾µãS=<ù}ÄóŽ»ß]ÝÝî:«¸ë¯Ý­ }s¼_¹»UÓžèô¿PçÁÓÐià4l4§˜±êsÞA9ìâÌa Šsj€¬x48ŒEC¢Ñph04 é ¡aÐ 8+ ¿~ŸaÏ gÈ3à v9*ê tй 9Cœ'AfrdA4WRe£!:t k&ÇCÉA]H¡•,Ú"sdköhìHJ9²*Y‘äJ$X&Ç Û·'ÕF„Ø‘qAŽ$^B˜3ùWð«ž4á¿#™#ŠIËDjf²³=*>’¨Žd äk$gÒžÙn÷êIá‘S-WËׂŒNuÝâFð@[k¤àLÎ{20öbr²„ À…WPp­zvëÁ•ÀJP% 2L¤Q(ÁÓ¿Ù/›·m-Šïäð&@»)ôARdñð‰’Š¬³ì"0ƒ"@1‹$ïÿçžKR–=ã4ARÀ¾u:ck®eòòwÎqiʤ²´ˆÒ"I"H£%RÔB†D„z Ð ñQéQáQÙ¡è c4”œŽr#b3ShDf:HŒ ŒÈ‹ŠK>Ùka©Wg3‘¦|;ã±Ô¸3?VDÇï{þ%3-À›)GyÓ‘2†æ¹¦QVÚ ‰ÿkN/13æ  éJØlJÜSà ˜s œF#'Ò”†Î˜b§OÁÓ0zÖrn?Ç@CŠ –!´a D#£hÀYìG iŒ6C$’ ¥¸ÇLFSd8 §±ÄÓ®Ô¦DÔ1…ÔbªÍAÕáVG‰«°ÃqÕ¥ÀÚ0²Î)´Œ­>W£ÑyQÃkLñ÷˜"¬Ñ‹$©16¦ ë5Ê2È6%Ênƒ¬ÆX ±2a#ã«FWÇÀ*1µN3±5+˜,5œÕVR¯H2‘åRÙRfWíY5— /¾GT¶Ä¥!2-?w±š1‹÷&·§Þ|òÈG"¢|ïr4V–‡"±½[*&6ª[™¨:}Sîã±ZåmùÕÝèºå;Y›ÁlËóàz]-WÊ.•ÅD©ñMW:f•¥:²!9$aVXû¤ä‘à†È0¥X-[¹Û:]¨K$#˶$à Ë2É”cB±·2‚^ä2`V…¹ˆ •¥ UaW"ÈäA%"U˜½($"‡,$š@aOîu*ì¡ð&5F8CÆDòEè"l²W„*` ή#S„(¡‰I„# "~(=”JŽÌ-5®2#Q£úYÒêÏÐñß`‚¾{Ç,&:5saXûýÓ5ãêÓÖbê,4«Ã Ì 1™3BE9m1­S‹)Çôæ(‰±ê<LþÀT01ÔÐÙ–ÙÀA{=óÁ=%#@¿+œ¥'Ê0+tL =ó˜C2ƒejðÌ “ÃÄìP3=˜’|Jq•!šUŠðÌX0‚3ÓDÏbà]3E5æŠ)à‘-ê”.lÊ!%ŒQ3üRß$)ÃFžIc`Ö˜6*æ–‰ÃEÜ#(Rî™<ª”=LIa“?ª$F*E]Ñ, 3¥Ssî:åö)çNBúÿn fA§AçA'Bg"OÅz.v“ñÓÍÆõɸ>G“ñ‚¹©ÀlÜ:i*63Ñ-ó€Ù8šˆõL䩘ŠQiŠQÉVee¶’eÉ&qm“±Ì™”X—9«vUͪ2|~ôï¿KÇ<Ìn¿«ƒ©"›´òcR©Ù/¿aµ© ˦r¬.•ORõZ`ß°©¸«ñ ö×l ¯¾ÿl}:êOÓa}[çþ•ç;nƒÈÄe<#€¥õoVymmùÝEÓ˜‚6¦Ÿ–*¦?$Ûoiü ³ÂNO`aP{`Õ¯˜5Àmìâ61@ä`ö´¨ €Ý@Ð+ÌДG ½Ú=ï€zä7@…Y›`"¡Á{Æ©0Œ†áaeGˆÉÀá"¤Æ0HÔpì3H<2Nô'ÏHa!W­Ä ‡{d´!hã…gÀ°Œ CÆÌ˜4‚D H¥eÔh6fÆÈÀZÜ#„Ö1v´<Ài‰#ÃGÏøÑ¥Ò¦2§2”âvAd¾E²ã¬¶# ŹŒä²gå.:^y÷ªlm?mÛ±;¨£®Gµ\—þoï´ë±-vÜö8þfW»¬; cóEÀó>-ŽûìziŸÕ^·)ll»ø,&„º)¥ÈoHŒZ$4œ(JŽ-;öô@ Ò£°cMŽÌoE¯b†Ç~3.Cxj쉡Ì8&Æe^ PCˆ±gÆBŒ—ò‚ÄmÇL(3”Ê _æ‡s(bò[¨ÛŽè¸GÖ{d=ˆ¬+QùS楪:ÂØØ&œ*T}J¯Õ§ædñ{UÉåï^¿zóþeWŸ9‡Ö¹² †Wêռȯ;^¿N{yLV~×\‘®që^ׯK÷ÕX«7žþåÛfsK—.јw#ýëàNzÞxY¹°Ù,Øó§®uÍ•u•__Xå 7MŸ½VzpÉoú·öýôôðǧŸ¾¤W†Ç¿>>å×~?ýòîËããß§áçÓÛ·¿¾~µýíÚÓð ó’ÿûÏͪ¾XI4ѱÙÔV/½P{VBÇ@XöDÞ@ì øFÂoJ±©"k‚PP¨0 ‰E`XU4f8f<@¢n$¤â" ñ%Ž FÁ¢@Q(@N‚Bà¯%=(œ¿àë½À›ñuZ€®â"RkHë³3ÀW¸fË"& bÁ8V>¬ª€CÄàeLh¹Ç˜{ŒÙǘûLÜgâ>÷™xn&²'] Ɉ ƒÁ¨0CPaÛ:öØT‹;›±hp36¬ÇVYlS… ŠØœÛÒ#¶dÄvl„Å&ÔØYþK/ ßrÑ'.¸,·,¶,µ¤D]ä¼ÄºÀâ¥ó¿hyŸ_\ä«eÓ—EÖehEBZìŽ6Ŧ%Ï™QUIŽ3ÍŽÚMCJ‘š$µ|I”9U¦dY*Ù/tÔŸÖ­9¬Ë¦oóxÞLfpÜóì=Ïnòì}&î3qŸ‰ûL<7Ù`ü‰Ù8IÕ'ýs²ø¥ªäýw¯_½yáíásþKySŠo™ê7cw{pÁò×›ÆW?U?sñvÿÖ¾ŸžþøôááããÓ—ôÊðø×ǧüÚï§_ÞýïéÓÇÏ¿¾~U~Dwø½q,èªG:ëm©ô!«VqYea.®,¯á[.³¶Ë­eiÑÔ»ë'ôÅ»‹{Wÿnèá/ÌEºJ¶ûr™ôïRú÷’jº™_Ù@s“L“‚fI KÕ«ªVÿ¢2XûFó&ÖMŒ›(`Ö°`#  ¸Ô´`[÷›ý¯:àcÑœ¢òxÞLý˜Ž\Áš‹˜ÃÌXZž˜Ý ‡Õ½¥¦Rù¡¿-WÄM¥~3íîñ°¦ƒºð@Çoüx¾ãÆÊ|í£>/tjÊdxIæd"M0äxf'Ð$ ‚ú"A‘àH¢gê KTKùÅ+Àmm´B‹!K°¥è|)Âcв–òÝÔWC›àM'˜Ã‰;AžbÏ3ñ8*ŠŒ P0¨(*‹ŠFÁ£"ÒÉPŠÇ¤ä.†MA§âSª”*N[&º†·^±ŠY ¶àV«Øô¿D°bXP¬8$+–ÍŠgA´bÚ Á œ ²Wúî™|4„ Æò«r¦©LdJkWÄ*kzSìX÷Ð_ùiû\t©×BBÍ΄~î2”œZÆùr˜uœ¯‡ùr”1Â2Ìç2Ì2Îû0ï£üРâ¶:Ì$tfgè¡ìÞ²Œ³Z:­¶X;_Y¬³Áª-\¶pfÜÚ2üNõåä€êk±šKMV4£•]îV±°ÅÎÜ7˜˜;æãM†èüë×Y.¾—ã«ÕYõ=’*øR³jVìA{V]aj°ªdÕ\Û’jΩšR5¡J:Å!0CÌL›eÍ =a”,'ˆ;Þ.X„ÍB‰»ÉBÉ ÑŒÇ. ®Œ‡0ôpa?vò’QY¨,$äd?ÒÑ~Tæ#bWJÏÆÃlÇIàgÛ±“õPL‡ZŽÍHy7¾b(òŒ‡rT¬øIJù)ݘš£*ÃÁKµ2S©õh1ã¬ÕLÈ\ŒH2;¢†D˜L¹L ÇNF[ «MÆlÂmCá·`fÅëÏ„å8JÊtô ,°4ë)ó%c¿\q73¶–²òk®µÔv[Un°%It”‹ÃwíðÎ{õ«ªÒ½Ã(aµ&«¹ªÅjµÚrQs¥lY8ÃÖçKO2”ê­¢Õ`•¬ÆR“ÕL-ÿ‰©ÕJed—z nIgíä VØŽˆÄ[™tM@é¬ÒåAWW•š ……ll^¾4ÒK9²è‡:bF+ú¸0[-¬ÕJ8ª©ÊUu88x‚¶÷§êê2œ5*Hï|}§c-8÷îɆ¡c8§Ï‹¼™J§„iùÒFŤ¹VµÕU-±¾Ê<9(âtÁ¿F ¹§äbUýÊ”"kZ¹%–Õˆe6;5zI'rÙ-ëÑôÖ¶·ÞÿöPšË2Uœ9žtÇsŒ<±‘§#g±q·[îgà^  Ú¤;ƒ€W›#…u$,¼ÑÑHêªÙH+-é#,RÃDX9ôŽcÞÙhs¨9Ìe ÷Êvݎ㪣š8œ3ÇqãðµªÐË!u d‚ð-È%6Û7a}ÁUZôH3Är„lÎH;â 6Ã+xHk@tÁ ÛÙ¡ˆðÆct`[E h¼5¤z8:­“×:»­Úo= ƒº®â»˜;³ïÚ—z¯™é5û¯ÝeFS#>ÌœXñbêÆºK¥žL]Yc–?›}È»ù3qhêÑÄ¥‰O[èÛ·ìÖž{M>\pÄ›³AÏ,àéþ:ý…¾m¤WSŸÖUÍ^%-H[’Qoh¹íïŸ?ýðãËwMÿ–> »%ß5q¯Ÿœïîò½!>cRºªëã¿Ñg@Á;¹‹yNÎG®©¬&„çÞ Õüuo#žþ ælåæÎÉŸ¦ñ‰këóoºþ¹ÅÔOyÝõiî÷X’—Wæk÷øAû„=h‡çVÀ#·ç“{žéPnmykÿ©·ÿÅ¥ÛãóÃø·ðãúíË_ýéË/_¿ýÇ>™¾þüË·üÙŸžþðoß~ú××/O?ÛGOÎÿñó§ËùŒé‹"°¸wJåzÇŽ›ZÕ€ße?:~t´ËL¿{‹åÿ®é‡å‡ñ¿0ý·¶ÿdüïYPmÈö_Ìeÿ÷«`  §€4˜£€… r P+¦¡ ±P ±@ƒüK4h@`D`HX-$hLÓ–4(HTP'qŽh£•ÓÐ †n$p÷ÿÛËØJ ìs ”ô—áö°r5œŽýPèøÂ·/‚ãø´cÇxQ÷woµñß×t:õ8;{\¿Ù‹]êè˜Gf‡|N{§ë>§^Ú§:kísî2‰ Ô\dW2£°XC‰U‘Í2;dö,´$v<ˆl–XØ,¯i=«Éj-©Ÿ?IÝUå”RZ„Te”"jJù4ñTéáÄ R8»,š”ÌÅä2™PIg¹PU{J¢§6"„Ä…2¨¸Ë_k¢·RîDêDäzŠ›§¨5”³…B¦26˜|eáÉj(U Å)Q’H¤§¡Ü,˜‘‚)! †S 4,&Jû™ä ÿ"ü&…¿9Ú9ñØCÀ~9¢ÇŒnk³“žâñ¼€çF§mYI^C~þÈ©MLŒ2»’µúRa¯#qüV¬•ÙõÈùª#i+‘ºªKO…¡cG-jõànŽN7ꙑΎd† :Ëd¦T&Dæ°”–@^h«.fÕ¢ê@R Ne9 ¦¤Ô{³©(€†„„VÐOõñ4ÿe¿\_#9®(þ] ÿ¡¿,Ø‹~U?ü­ŸÆÁ1fMÈÂÄb‰’xd“üõ9÷Ü{««G¯Þ¬• ©•´3ÓS]Suƒ3Ëéi7µX mf¢ÅˆÁˆ½ˆ¹ˆµˆ±ÀVP» mELE,E E"­X Œ„6"&"¢¢ö¡æáÖ±7ŽmÃŒ#÷´ú‰çYÎXüºå ÏaFï'*‹j© šõ´–YGË«’V5«nIu—SŸYJ äÔ‡RjygN?$©…UŸœTϪ@ê4­6Ö¸%Ö;óê–V5«®–S½µÖD½®l“@MòoIúy^¸Yé3 ¶–ôN³¶>Ë®immsˆckžl›˜1]eÃê½]§ Û[v™¶kƒ|m¾®“ï:â+¿_m˜\ «Ìœ{Ç{©íó–°0c Mà’aJŸ¤³ãÌ6ØŒvX]•ì¼ç¨ž½±6¬_ ë7”óœgùN^ 6 •–ïöwÐL´=fëÐCÚ™¡ ïÎì燧ÕO`ÑwÛui£â¨m ”:flwcs´^VÁÇZxØÿZá]|«…g‰cÁ¯îp«È/^%NUÒ¥Z:Ô$îgªèJâIâHêGêFâEâDâCâBâAî@ê?›ûlÞ#Î3AZâ9üFÜf Ó¬põuõºËé ÜE¼¥¥¯ˆ«¬tñ“^¢N">¢.â•:H‘ÔDÃ8ÐÞÒø5f§ ŒÿƒÆøfüïÖÃÿÈŒîÌê8ê7-]¦6öwîO©¿¹—û{¡÷“ú—Èý½‘ û—Ы[P :í€ÊèP ª¤F'.Ñ‘±R•ÍjB- èÙ*«A¯Qg%zz޳ ö&tû]¿C=6¨ÊµY¢Bs˜èJ˜@ È ]ÇäР–kÔtÉü°¢f°ÆÈÑ!G4ðšY¢´¯hx3Å¿è˜*ü£’dÑ`L3ÜedÂè˜1SFÉœ±2iL̽¤ T`Ú(™7V&މ™£¯°F8[ÃäQIö@`ô13 L ­eÊRÈj9dŒI¤9Ê"ëÃiÄ¡3 k.Õ=£LF‡6¼Üàb “á‘­vŠ­¸¿…"¬½´LXQT.) ’À0ådbR)©*†Ê•±rd°l-+JG„3Z¼  ¶‚™5dšP(‰KÄâòPqt8«$r0 ‘DØÅΉRP!P&•€ƒçlÏcÄËÁû±¼½>Ž_ǯ ˆTø GC9kÜ• oë¥[†åG4ãÃu?¿\‡q»‘jwSô`¥pEl»=šÝh“ÑÙèïÐíww Ýq…ÕV¬®­ÂïìÒvPïÁ@²ß¹£];Œ—¨úUÓ¨úéãÈ]ç¿ýŒå~`ÆòãŽÇg<Œ·øÈ<¡Ëò³¾Éù§¨Ú,Ï üäY™ùƒ‹¿?=yuþ!׎?qNXL&—÷Mz]áו»I¿XgíËâýâÛu:×½—è \‹oårüêy^Ó¤Ó<|­&4½¬·ìk¿Ô¯évKzð:Û¯¼å††²÷•ëkv!ð!ݰ¸ZæÑÚ_ _‡óåpñÕõ»‹«Ëý2^¾¿:øk_fŸýñpx÷ãåEöÞ^ʪöóÓ“;_æ]Æ ªþ«'GGËŸ6>×÷kŽŠ´X2€ ‚0„(9bÉpQ #ÂHZø¬D’’‘¤M*O Qn¡D¸RÉR‚ £‰æé Ê€"¬©!EbJ‹ AEÈSŠĕ…qET"‹\*´F„ªÄ%R.£LÇàÒXp)u‹—Á‚‹Æ4WžFôÅ–‘EB‹Pj .Œ.^„X5ÀH„Ñ£1FøU¢Œ„™Š$‹*—`SÔŽ“Ž4|tk#ŽÁ†lGg£%s 5c‘>Ê8 ‰IüÉ#¤,³ =ô‘$¾àïgÓ©¶Çm÷Æ×ÂŒÊVJW½Ñ•°ÕR([•ÆV ÙJÈJØj¥ý$«ZÈ \%d…d™IVÎV•±•Ó•ðÕÌSS¾:&,g,RÎ] A(K8K)Kk„Μ± *°&_µ‘¯œ®*ÒU#‚‡¢±FhÛɪ¤,„«ÔÄ@®’ZY"U…„ªÆª¤©@XRBUÂU¹j&W)Y•$+a«†lµÑÕ,N!ŽA¾ªè&X:Sh•¤ýNóSm'˜¯ZR±rñÀ61“-ÆÇNÈÓ›R2æ-¤Üc剉oOËÂËz®÷ñrž)j)eæœ5[ñ'$ä¼±3é™_Ã鹿Ù:C#ÏGG’æ9‘§¨åÑ‘ª{l¯œ¼²µÓµó5²±•°gcì°{2¶¶óuM¾vº¬âĦ‚°;aêíÜ…§å¼G¡i²´Ÿsk= E CŸžÐÆ„¢…¡;2ôÌȺ’ k”tkí m©+IX4,ui¹ê¹yÒÃ3ÞG›UR[-h5xExMÐÑ0ãVIu$õábŽ·Ó,éir«ì©9߇Š?éGaߺ̋ՆÜk¶1q„ŒÞ›µÆF°Që@W6ü6þˆ›š›X¸2æÝ˜â ‘aù[•doßÜ]½`óøÍå+öõÀ.ß&nSrǧ7lî þPíüAp‡PP—ȹ!8¥Ä'Ô)ÚèƒõwŠÍ+ ’Žt ñŠ@þiµwÀAÄ5ô‰Þ1“—VóBš û‰øˆöù`G7ÑÞ2’ÂØa:D\8HN)Èk‚*µuœ†<×ÑoÄq´÷ˆï̤¿ÕzPAô¨Ø‰´v#Yh=iWz_ZÄŸbwRŸ’C«“.Õҵث@°ƒù×d=KlÇûVNæ-“þµq³l“|a.\nO¯ƒ†&<\Ië Ûš1&L9¬òÅ:li³ÊaÖ@¼’e‘ÃÝ1BøÝˆ¯ ›Ðaûåð}QЬXPK˜L.œç ‹•¯ÜcÃ司jM‡-Q\ù„[N ¼W#V×sµ­Ñ}MªÇ·Ãzsò¼ýÄ"É7$ùûG–s²¼Üv"˧4xF yœ’tn$?G–w’o"É+Çç¢r¼Rü`ßReàx0¼(ßåG$?å;£ù@ž¢µçÍ©~bíIö \ܰvjT‘AAÊ_Yi3«N(L–Úï+íWFûE¤}²¾Õø@èXÿJûÊú% ßÙ~Ix>¥xåw£vúPu¤$ב«È5ä rý¨z\;Puãªf ¤M3®Õ˱Z\+¹å¾)ш*„ú@-¹>¦£¤TQª U„êAÕP˜T ¨%jA• yN5›TC<ý³œŸüO½ãyƒ=ã‰vÚ3OZϺ³sÖDWÚ/–å¶³Õs•SÅ·–sµ3ÝÎSÏÒÓ—ä­ÜÖÌT5@úb©-¤¬JÏD§DwÓ.9ÅÎØY/”XY¿Ë­»ÍÖŶ†¤4H’*°FiˆTR½:¯OOÞâµ3iYžågyÞvüO™eV7g VˆWÒ‘|æûÓ“WçOøÈø“Ü¡@'Ä+m—×øÓ‡²—ÖU??œã£!ϰ¾ä.Oú˜ÜiD–z5|ΗÃÅW×ï.®.7öÊxùþêà¯}™}ö§¿\Ý\þ.ÿþ}~z²ÎyÇ Ýÿ÷t¶¾<¿|ûüöòÏk¯ŒѦJÀ߯E7ð°CÜÈž<º ~ØŠ¢Gè—†ë8¾¬ÇÍJ‚•mh´$}¯TÈísó N&Jod¯®ûIžªr|u—q¸ŒK‰‰SŽócSgOG1›Rƒ?¡8Wí…‚«µ;tT¦ÙÔýZ— ¾êüw]:)8Ðìu:LMq ß ÞaâÛZ]`„–‚7ÑP¦Èa—! IŸL-AîD]RLÄK\_fñ‚taïŒmhtã²ÅÂh(0m뉇œ¢(tÚv°ÝÒ$oÓ³±cŒ×)k¦Xt;lÛ;q HkžNXVŒM9?°ƒÜ§Æуñ69ŲˆRˆD ^u/Xa zæE²Œ·‚L·Ëœƒ»`Bð¬„wÈšqxÃ}p.ƒ«Q0êå#]@ ú&øqý0æõ˜O¯²bOðêS„“’±ñd¼mM„sû>—R¸ñAr”a¤âßxIË8™`ëjëÂkAˆpÏh1]x«;ŽÒÄWô±^p­mòðh½ª.¼!ÎC#Ù¦táõ²lcÎó<ã ݨ mKSiÞõ¦êGi½qÎFÖ¿jokqüær,³µDœ´ÝÙY&êN{o@,k.ƒR¸²f™´ÜbZ|o†…3†ðš ÊîÄ["D8’…汮 Rºg°pÔDîå Î÷…×Â!U-*)Þx­`‘Í* QiùÂÛQá> stream H‰œW[oG~G:ÿ¡_"Á£¾_ò‰@Dh-E²°Ã:‹O"Çñï÷«®êÛ/‹ƒ°=]S÷úºª&+k7ç‚Wï¾{ͦ‹ÎÊä-fcU°[Ô6ìÏaÓ6ŠP'šÍÙ¦°%Íhc¡¹­¤¬BÙt Vù-úìûѨˆ×›-'¨WgtúýðÝ»·‡x|ö£{÷âxùúâîîêö(„çW®Bú^=þá㟟êÙÝÝÅûÿ<9šÍhFñtÖ5ëŒ69´Vã v¡‹ËÑ s;n¹ðˆcYWÉ¢Ü ºuah®Šx÷ü!“ƒ§5’Ø£Pâ–«ëWÌ‘‹†‡Å‡jÍ&ºFÉ],7•¼Ô‘â FØÑsº²úÌñ‰-~kÞUnqsn¨÷ï4Þñœâˆäî’©Ѧ~KM¥œÞËíÖMwUéÉ5Dxµ¶J˜WR´¹ xbNHâ Ëv'2T´f#0çì¨\(y’0] Þ1×ÁÄ”EnÒÊÖ3 )1?tú¡³Yd’YÍ©ZÒñp(>Èæ¹Åú»ŠØ×M?b¤Pj°Q"ܳ]ŸõÜ$7K•`º€™—©Ë$)f+ZlOPUoymÌq¤R) ÷ [™ÐJ¤_zI¶í¥ê$ܦD“![[Ï6RÑÆ#Án&_{o8­]¾ÇÞI•ÉVë¬Í‘i×Û°`Úûæb“_¢xP}9ªp>Í@õþ©¸63TQWNÁZfÐ5Q?ižðÚ ËëUôTó·áx,Ÿ€ôu6 [VÌ"¼Z—º=ÀÑI ØlÓ5õ™]6/“o¯}Ø¥zè„Ô¹$‡¶¾çóóR<&¹YÒMz§Úar¢IšY³™U‹åưJŸ*ÿ†½-íÖ¶ukÓmèugÓ²²M[:YØà㲰ɧ«3c„6SLb/šììäÃÇD:ë°½ŸÛFéÔ,3ôùPó>æƒúÌPØŒ1É,‚æDëWgzšGzš&zXúnž›yœë&¤ûàÕm›e”ï&y˜yšæxsl?|]«eÇŒyX}–D2A_#ìŠÀ,kÇV¨+J¤¯@9·]E;úúkLXšSž”´³Xêû¸K,Iu%(„ “%9·NÕ–Tf1°’“˜z2Þ^àñÙîÝ‹ãåë‹»»«Û£ž_}¸> é{õøõ—Û‹›ëË¿ŸçŠjžéøEJ?Q†+.,aã ×ð'<ÿêgåÕÏê×ß´º¬|çoxðK–E×Yû¬Üå¹=«’WÕÆøâ-tù°Ñù?~¸Ä ¾ÍA±Ë>h¹øýquäãÄûqÀ) œ2¾MÇŸ”É ÛúLèÑî,áÍdr¶OBj‚¯d»‰1ñ¸“±ñ5s³_jÂ\ô¤ÒÕaºYî`¾ÿÌAü¿ŒÝ›½‡aîÍÕ¥úåîöú¯+BÝt¢lŠJN…Œ:V!³zRUeÃÙà0÷†1÷µ¸g÷"-«Ï‡ªÿoÄ kr~ùZrÞ½üóøúöúxw}üðô©ÐkÒæ7‡G/ÿªï2¿{~ûéïw]_^}Vr°Afµ‚¯Ÿ«¯÷§“÷4e ;l07õ¤í¦S1L:;!i§l„^ï!±àñ@~¼"óZM]TFì~Ú-:Ù<Ú›7…´ÐŠ‚Ÿºà ž²ç-FÿìD}»ge8e­.¯Z'ÖÙ‰½Ï ÿ~x{(êñuþ¯Ã£·‡Z*”w-Ô7ЦVÀÃæÚܵ›÷ØX8—y& RN|šï!M‚_-%‰x|&‘¦c‰Í§ˆIUrÍ¢«Y-aÜ—9ãÙ`r1ó\1¢é×Ar¶Ðf2“½3‘x38B¢¦/'‹fWYkò¢ `MÅ?&HAÖ˜£^öªxGdŒñ샄L ¬!£ÛyÍŠ=> Y`¶è‰ðioTÏt“ÊS¶}´@1ù-ÓæP‰Iw¢s±01—"žçˆ}<bøPIì$>.Ј9¸º§²ãÓÍn¸%Ià¾Hž¡ Çhkš r§k4´DäJL´„øšPÚ8ŒhàJyÇtÃyFE“å{!ŽsùƒÑ޳lŠiÙ'X˜Ä‰ÁøñY˜÷¶Ý8ãÔŠ9$Iç848ë[Urh¼¹Dq!«îEàûÿÌta—7È[!lb6ä%ž€6 ›´ ÆHž¢6ÐF¯ÃŠZb¶Æ¬¨Ñ[—w°ËeXa ‡}1v…-¡“v;Ø‚ns6 lQÏKî¸ZbÞÖS.fo@-}Y± š÷ÙOëìŠÝh9Ö¼Ñ`-ra^jïaÅnÀ‡Î+tmÚ:ì  Ïb2eÅ.Ý‚]$!ÑM=Å.Ñ£K+v)c©ffÂ.ˆwØÝ8—WðêLP÷"ñ»¾Ç.Ò†¼ûv£nínÂnì&t#àaý¾á‚lr+tA4±”º¤5µ¶3A7ÖººðWæ@.h]c‡\Ð3w˜\”±¤Ž\Ñ%¥rá©s©¬È1•œWè‚XJ4;èÆ„®ÉØÐMØ “‹'Ð-öm·ƒnp.Øhý!ž€V·Û—¼±:­à¥’»êÃ^äÁæ–à ¼ ;cà ^ÍI¯z±n#ØÐ¸&@*Ü%¹di )\‘Fu`ÀFÀ¾Bqôû3ûÁ÷Þ9ˆ5Òx|ËÝÙÙY’q%/®©ðƒ¼ZNíJ^¡Ñxy—‹wöNüÉ^¤Ó&Àƒ½cªÞÁ^ÙßÜôhÃñN_!·gúêáÜû•¾÷¸?è æ$ßè;–pnþâ¹õ}³‹Ì¦/ Úbn}q¦•öt øxïM®ôÅ›¸ˆ\é £m<è+0L”ƾŸèfÌR§îôÅ 5»îmú (\97}Q#nSýú"6µÞè‹nQ6\è‹è ¼‘\Ù Œš´+{õÖ5õOö"ßÙÆÞÁ^|wŠçÁÞŽ“ïÑ·cæ¸Ô-úâ5Ä7}ì^å}UÁ$¼Ò`¥^éÛ1Æô=}ñÉц\éÛ‘716ôíOë4º™†Ç\CSsñùñŽß̹—+qµÚLt#. Ž6ꃸj[݈«åiíF\hÝé:&oQ|ã-Bht3 “…Þþóÿ»¡~~{ûá—Ÿ~ü¶ÕäÑ„†»îH}/ö@@¯7Ýv¥×ý‹ï@þ‹orB8_ôûº–¢6è8t!ÿèžÄC#üXäÓ Š.yô¥µ£ÛÌ•¹* øà!¢ø]æLåîl–¥¸±¢°Ä¥eqCjrýi^pÃ_'>7 ùÈ1²ÉŒ*¶Ë`É”_¼ƒhëâ¾.&ßçžfG)GÀ= ¿÷ñâOÊ d‡ÅsÇš¤Îƒ,w$Åré)$ýkæîÉÊ]‚ÅÑÂáé>(:ÞÔnD5}q¹(q¼Q£ñ= ¯êÞíÚMºðXFÇ6ƒ“ ¹¾['!‰û†+þ:ëŸK¹åYCw׻܃Û&§ÚÊü†ÖuÜ]DfrÍퟑár¹å„Ö-óbžSÍ®*9ôÉfs€"!º¹®|Ýáu¯°wv‡ä žiþ êRc|ïâ‹l¶½9³|·3æ `©õ7I¬d3S±ì/Þ¨ðÐÚ¨ö³Ž^d;ÓöË„`ÚÎ\K'øtW¸MŸn—4>ª‰¼%œò7%ü¨·:ï¥!QÝp“wbhN0³æÄ:O‡“eÈ4 ®ž¨®ÿ—õ¯™4e­ã’˜¤,Ù"·ü~\óöÁ™…¸BuŽlHÉÛXi×§žš•» ‚\-½åòÂýŽÐËW?ŒÃ8‹¯©Ö Z‡s5óźZ¸¦ás…¬ðz˜—~¸ê”2Íæô­Uª ³‰bQ?‰ÇÇahNéÃÃK¥Z&eæÙ¯1·×µ¬Z¿Ul.Év$€¶¤Äaì1ÕÌ pʾl6Ã!€p.ëlÃk­d”'w—Å[¾¨0¢åã°è"Hþ”Ìî7ÈØS8—}¸›lÜ{:€°ÔÃ3ԭÉa›«Oh–fµÁ>„X×±ºÒ¬ûi#'-„ߌ*ÛnHøYÀ¦¡eç,³ÝÜàË«œDý:É*#î– È'« Áþ$LÜ8 ¯Ôfê¨+“ãä«–ä6 g£êJ¥ï;ÏŠg¿éÄ´R Ã<Îê~`&‰æ˜5MêØ¨²º;=Šº¯Xïß/ú)ql9ŠG0{T=Nb–æÖ“N“­Þë♑á hÈ¢­³Š©ˆ³hé¦_#ô°Ä£Ð—ºèÛe¬hÕ~Ö([SuTÉÌÓŸvXý5?¬vÜì¼C1õÙ9Be%VeßÒ…âTTòåç+†˜ uÉÑñ¸Ô]=rYØt±JÑÎ"©F&Âä@¬ˆêJ0âä°(VèK&pAëIvÈdß+:èdÄãr.ì\Èjl"ØCÂÚ²Ù¢î-уd+k»6ŠÏu|sKAV-›äÅŠ“ïÙ4EU 먌r4Å×é"ªoxÀ©ˆ'ÄÚÕ˜—1ÔÓZöP`Ôrä}Ñj ®Ï`Êã uœÅ§‡i„*xic<ÑAKÜi£ad+ð­HEqáð(…ï©8䯯”m¡qr½ù(3ÀA9@í’¯Ó:å4é3b¿P?U­‘ð`8 >¥A95Ahé¾½«56Näj.Ρyv2Ì cÞøõ]µcG•@£ú”ˆÉÔvÂãè`jÁž+c}¹wsÈ` †ßËl¥—GA‚Måéî*uQh‡îaކ͚÷bæŒZgkÉUÕG=C¾÷\6KïLÝ“±±Ì'o?‚çÁàòË»&å«z8ü«§3±Sˆþom„¤ìŽ‹ÅIÕ<ñŒ[;ÞŽêÔo%‡â< ˆÃ°­äbúa­¥XQ žgUÔÌàã%5{ +K»FHšBƹxFF‰›õ÷¸?bF{KÕK€ lÌlkóbEí{™ÕÊ®@¬*gë)(°F™ßÁ"'éâPâ5‘Hý…ˆ¿~‡^® fŸÍÞHHè>¿)¬¢xøL©ÞëÃÀ9“1p ÍA‹;ΪײWà¾,Ùj¶×Éz giS¢î‡QÄý×XQ„?rÿËF{R£á½+îãlŒ3‹>±ïÉ$˜ôò#°rñìîhVz¥jÑD¢Ôl“¯yÌm@µ¿»X8“ƒXíÖa¬qÍËZ׊1K†WJíÒ 9Cè­™ /§‘OÎ1øyµnÆëJ>nð££sH z£íks³¦A™Jvé½€hÕu1(ÛœžUÍãˆx ›™…€¬áЧ5·ȰÚ4ÇÐ4ÕÅÊVÔuV|¸ªL‡üï4¨Q•J;`>öòÛU°º©30q[7ƒbbþC7ï]d§Ãø<ȶ³¦ŠÜ}jÄF“ þve½WG÷r€cÕMBô‡NȸHôÙ+ÑÈÕ†iÕ}m¬÷¼b‰;4 ìÅ8¿ÂHÝÞ­ƒ¯Yã“\ùàvœUk”‡è>q1Vlu-Yw˜aÁóšËrAuÄ ã‘‹C¢3ØTJwËäü~öQk$¨Û\/Æöá êÃ]Šáh!ÌÝì'žÜKŸDN(°/˜ÚM7E! Ù >ÊÊE‚áã­nFÄo@§²u‚ñßå#Ÿc˜½”h†,>ñŠºÒ• jYk ˆPZ”DÕÏÁæDGOs©vx¼Ü~þˆFfêä²£ „çwÛq;XÞò¡m½[¡ãâ+ÛõœŽK6žt0_‰öóm<Ãâ–õ=àÉzÁö%êoCÁžfÅlÌçüî/ýo~ûñû/ÿþ×?þúï¿þôåíà ýþ§¿ÿóíŠÿéóÛد¶Õ¸²#únè8/Öôìû%y²=yÈÐÃbÃ`ٞب{À‘0þû¬Ú»jŸ}nŠPš$„XØ’–OשëªU§ëã»·ƒV»gjx±{v¿SƒTùºúBàwøé#°Ïƒ¾~þE oñÌÕkÖª{_ò€oE/ÅŒ ½rf !¾Dcú¯‚òñÓî~G^ýg0£˜-ëè[ÎH~£ÃçCý;\]“Û¯éújÑ :hôðqWÇ'»@ÅÁõ±úXïÕ”.fÆbôog8HظVÌÑN Í2ÇÅ>ð¿î¾zóÍ‹Owß~¸¹ûðÛéúÓ—á(ϛ翇).†o~¼ûôáôëðüåË77÷Ç׿Ý]ÓÃÃïèÑ?Ò?” ®CÄUGßÊ/ÊDÊ ^fß()¯ ð ½ó¨ Ý@‰£€Š÷*/D匓¨)õäÉ2bþÌAC– žu Pd™b7X Ôü×,ƒ¥-Àó`1GEþÌKˉïÓÌÀ[é‚ËÊ䘠§ÝxÓVLÃ#$?¬bàÛ,Ä€Êò¸ië’XÀù–5/hìÙj $Bñ«™‚‘ÄÀðJ<0¦Ž}AÛ°š\#ƒ Ú«è`•T¨áæ`2ƒÉøØÕ¯ «™>¬÷Þ–; f­ÎÁH¢¸Y§ìùaMœU@hq,9k;-¨=v‹‡mŽœtŒÐXÓÅÛê“CŽÓ‡&£Ù‡¤lœ‚5Í•³n(¿Ê)~PÛ Fq3‘vû<ãxØA òÃF—¦°²ï/`‹@p“Xp¶ b$ɧ¥§DÞÈÔWôNÿ0¢‹Ä F1xÛª•mu¬œ›„9TÆÔ—cw‚>¶7Øî}Œšß-i¡ÿ- 7“ #ÖºHûl¦¢/@D¼Fže3ƒÊ¦®xà—ÕµˆãÜRü¯‚ÓôƒWðÇÈ÷^˜ÂÚëë’v~V\Š<„®½œÍ58 ñ/ ¦G¢M3Ð×®kF\z©3²”S3m²–«s©oD³æ,\£#‹Ÿ}&4™ªn6èõöœ4Y©žâò8a¬¬%Ód[ҼƂ¯4W’K¼Ã´çÄà”É”‚„+TL•ö:¤ ;ækâ2¤ ‚:Ô´*né1ÙñH©B÷0‹qqj`ôü`» BòÖÆú¬‘)¡¸@D%c·Ô=0Á Þ n­Ï^-ëàùmÜa4É–sÆý‡½.,ž0k.ZÎC®üÐjïf`½y[n¦Ø9 Yin¤luà÷ggz0ûœìüa^Nl4(% 7e]$¢Ê`Ä‚%°^Íâ.ÔLÌ«.L®óAp¼ØI!´“^ÌL]¦õíqêÊ¡ L‰ o+LÂA¨h;-8j=nRm¹f0f"ûe£_`½ D&ÞÎüEý³cÐ+—Ä$K—{Ó,ôChi~]ªë˜ú七UyôaÄMLâö–®êöƒQ [è\fôh?˜…"\€*Õ,Žœef!w1f.º.ˆ.cyh Î&ÏÆ•(Ë1è[ÀÖ9U ‘.ʨf.'a­›Í/øOç~¨Çì¤zHvǽV™-„̅ǵHù¹ôfbÏMå8ab(•ï­ÍÓŒú­J\ÀÄ3ôÀ:Å—Ëu"•J¤q˜¿~ }8[^ŰX hÎ ÈÖV¡^áCƒM{šrÝáyS®Œµm–œÊ1.³³…7×Ζ4ÌÖØ™Yô€Ñ^q¹^uõmqÕb-É„®Â$Ù¢ïoZý \\9s<838ŽŒ¬†ìÆóvÄ'‘zmg;‡ ûÿþæ§ œ-´Ek…ñ ‡\5n Ö4†‡L‰ S• ‚ò_˜?gˆ—»¯^ü9½ùÓéíËO÷ÿÛ_®ïîÞ}:áÿ}ùî×§)þüòtº>¾{;h /vÏîw÷»ZvúºúBðwøé#°Ïƒ¾~þE oñÌÕë:«eËF! _)Í(x±Â‹®Û€“ÌXÂo'ØÿJ– Jñ‡þ•Vl—kõ(­¥Bâëwá‹DS<Ë•ÃêØiÝ*‘»½äCÙ ˜Ì"=“˜ W‹f®ÄN‹<ÆN>ù²1qP¸¼›ëçfV$$÷ \ò˜ãǵ)²ƒâÊYÞ…ùÔS¶ž¶øå ùÐeI{÷•t˜Éõ.Ä]€K„†‹lpUÆÁ,-]Æ“S÷Æ‹kZG>h¼ª—ž¥ö—+E©¢ƒIoE?ÞŠŸ%K6KÀ¹è€H—ºÐ”×°«mFƒKÃD¾/JÅËñµ„'PŠ( I Bféeû@Öë µzܶöÿ¶úßj+)ù‚ˆFüýîr—‡çÃÕOÿ «†3±*:Mç’çF–#Äãp˜ñï*«Þï–ŒMi…jTêíç5˜~ùg¬ýÐìQ»*ÖÂ>„Ü6¬ÙÓâg—rmÇ„CC³âƒ$,EG¡p³ÙjÁ:/C±^Ž4¥Å5®®mWº±êË 䀴 ‡ê@ÈçáAÒ‰7y6|±‘}«¨±öyJк¹p“ë„LÚÊ™î±ÈL,×u;ž‘&èÈÃ#–§Dáiéü,G#>–kò_qfûÂÔߨ§£]4Í>¥="[mØíë|ãÅÚçše¯RñfYÔ¦á>qÿ(±æZB6³·šêµšlÕo­Øk]±ÙAkݶږ=¼Úð«£±šòÍú¬UrYöWëÜr;2…1Ûp ø)1<)ð’RÏÀ®ñéìJ.Ë´g‚Ã…åê`Õ£Ù?€LØ[íé𡣪7d÷èÉTê_ì÷&¸°xË.vŽŽøûÝ×÷»gzøö±g‘F†:D;?‹`šàÖ],jS04L0šAËh¢1œm[]SVƒ­ ÀÓ» „ÞzC[å’Ê´ÍCV *áJJaöpÜ»X¶Ì&<ˆdÙ6´Ž;5U!³ÚÕ×—² BÊÅ zƒx›‚‡ª“ØáÙ¬·U4"´ˆ±íÀ–H={IË:W³`)·K)š…¤ê)Êxm6…Ñ~zåòh!DÍ ËÚP^--zGt?0ÿáÛì,†~?–¶“E„„€° „ F²“0š…còïsª«º»ªïŒÁcéÐ_ßêzœsªv9Ü}’Ã!”rÄ àÓl‡»tiT)íÒ#øTw‰Á\’j‡‚–¹Ne Cëi>—ž(7¸Iú°C—ù\h9\Àѱ놉ƒ‹[uKœ]²¯LâCë [²Õg÷TÈ‹„±½æ1>à AáW¼ .7—³ñF #ÿ?À˜|Ûê1{ #¥Y¡9ÅÈD év}Á„;o(üµ‡ “±puÆ•£gƒq?®‘ØØÃ ’âÂqíM^áÒŠ“w%,3>^“iü/ ƒ Ž—ÔnP×Ô”®õÁš–Z9Š  ¦Ml5^[,ж?Ζ¤Ê ¹AÛ½_­N^añ „н¿N¨3U›Ã)åv fÆâé½zîºÁ±iÓ‡aJ«7hP'8ßi‚‘ϵ^~ÊÓY.Sðâ½Ì¶Ò2äŽÀÒ©Æ÷æE Š¥Iùªåê£añôá¶<×V YÞƒOVƒ<£»hÕJFÚ¾u×V¶ÏJ1-F©_ä•ZÇÕã,ÞSK8D ƒ×½*üž eöoß 1]‰=„‚?žx†¨ºI±±'t€ÌÊ®%LµîRY "ìo ³Ç¸fä´žØh»õ{ý– /m›8:`PZ vbØ`Yh)O&'£Žm [&-BX[&úJ}8 í†Þêkóß%HUiG¼xŽëÇ»fS à•­}¥Jë6ºµævkkœ*륾{×>wûîþŽ.ùâ¬Ò¶¼~)Åf ˜/ÉÛ¬Á1Cøó%kÀSì&i€|ãæÝYS I›ÁgÞö¥;mÀJaiWi£XSÎ6mô(Q™6š´1ج° %}KÝ=½VŠþ2êØt;ö$Ë !ÑÁ29‚ÎTl؇†ˆö0‰bÜ$¦@Ãx ßôˆk‹ë‘"†ÈK†!Ý o‚Öbé–Ê[`m;yÙq‰@Þ•Ürb@Åx´©±+Ü:Õ¨Óc´Šf@¥~Ô`)J 06cflF€ >Õ ìTµºNß*Ó)@ih9‡©ª5[o°¬UKàa¹ãuô’Ãáo ¨Ì·s¢kʼnoE1ä¦=ûuuxŶyCž"®3¹gÐxEƒOà 0÷iº§5˜š¿¸X‚]w;-ïám5ÖõÏ݆Xuñ°æƒA­…7¤z0.Ö¤ÉõóGŸ'žúh”}9—uBƒ*b Ëãœ+ÔÊÂײµSFxqÞ®J¢†¶UûnÞ0÷'ÁŸ×û–´µ{Ó;ØÀ ùÒh„÷vž…aMk)âöÕ îu‹Ë`Œ[¥GÖr¨ç¼rî—ãVzŒ tqÁžyzpi3†ux¹—M%ÜÓBxs]ó‘|.ÏÃBgÆ8YcsŸÅ…(éÚœBƒ¦_‹ W<¤lH½šËo¡œùP ÑôÉhеþÔ„µÉó,U5¡¢9MS˜Ö?/­¤+Säõo©êˆ´G ®üM³¬£5bmFÙGžDè´ Ð³°<ƒÞi.,¦ °‡O;~/3¾–j2nH—p§19&ã±Fs‰¨-3fÁíÜ4îuÍk§$,¶«áц‘›í3Ç»BÆ‘*5¦ÿz]ìn¿ôœÑ%ˆÍ ÷±ñ-ˆÙsHSFä^ÐiþV° »ä!8ÌŽ•N¼¢sá¡1 ‡Tv?Íìp&y|¹nHk1O+ç[#'ˆ|ÖÒØƒH,Èð¥Ð–)xmÏÒ&5E¤Ô>QÈOGáúû7o@”ezAPî [×h+ãtõZ&“lƒ¼áÂQ·yCõ¢Æ®EÁê¢d¬uAì7âmÎ5~²ê¥n˜Ö}¤ »*‚‰_OõE¾B‹‚#ëñ63›D+æƒ1™ ƒ´Kc.“øi¦´Ú˜C ./Yv¥ò46öá€P(‡©½œl£ÓâfÊq‘m4âwrAÎ\“Ñb’® ]’h'Ž@xa_dC‹„\—.‡lÓá„À]óž{ šÐ@EHƒ3û ¦Ö*6vÑ!ÚØma~–òìYjO¾ d&=V¥:Rð’f¹Âî4P{2£BDr™uîZŽðއ!T C.(7 €äסØq× !b¼GÍQÒ8WšÉ$4/`ï¼óÂ^¤¢’ò apƒ±¡áÌÄÎéL5–}C–½upe޹K%SH£1Ã]¹Ä1" nÆÓÀ\­(/‹iø€ÃWs†P-4…@ýV†;›•pØû$²¸°2³J\<xà6§yh~¤!€íÚ4ô±q3¡ Sò¨ëàâpzc)Ì35Ó‘nÆ$ÍK¼èB#s\'UÌŒ‘’pQßRGnÉçù$ü…N™…¾ Õ¤aL_(UŠÖ‰ _U‡'H 5 ó’Ñ 0âÙ(GÍ(" »)[ÅX£óë©5“ôf”£Ò£wŒrèœ?…£fPiðÕGÍÔf®á¨xsa0ÊQ þUÇ×¶rTbhŠQŽ å˜›™VŽJ´Í¤·•ƒÀޛʗôžÂ}-sEdáà BÐÂAذ'‡pP¸RºÍOTˆÌVÊϹÊA ƒiiF98µÎ*Gͤ}5ŸÊA8(+å °7}„€6탟rŒ¶©lk–rpƒe£$ḕŒrTú„ Y+G­4=-å¨d€Só§rÞ“‰ràÇ›oA‡rÔŽ!H!j娽 Zf€­-绿(‡£|U#.“+ÝVˆKNÝŽÌ£µ÷Im[7Pê©0F7jÏS¦¶pÔ¾ÜÝÁééÊâF8,½6#tµŸÂAxöV7C«y£È*’OÙ€÷žþNñV}ŽF6( ™ÙÙÈáÝ+#·¥XÙpqj²• Â;/{[6éït‡S6Ð QÆFéÆèšÀ~cé·×t‡¢Ô‹p¸áÔ Ð>·«Ö H$b*—èF9`Ê©„O39‰F&»‘WÄaÈfÖA§ ïðÇÿÞ8¶•BK¦Ï'NËèk¬x­m£ò.÷<¾qÿ£Dñ[üÏÃDP¯RŒ Á=„W‚À9ôë%8Zíü5†7`¹åÚÆEÂ%¡Ϙà$Ï¿ɯÏXþëÓ„ëÇV{ )=Ôèò5ˆ·ñqÏ%¸“!iCœ0à¸IÙCfR⊶˲SÄ‘ d6$®¦¤|œ­|—½uƒºàÀŸ¯ø˜Bó5h\È™€rñ~†:¬±n½dçéÌÎmä“\uîïÿI%5žÖ:Gˬh¸B&`J5*P,8LHLÅÛìµ ”Ö þ|Å6Ò›ý\xh­Ô#6ÅÃ:óÚk~žÎüìØ†eÎTE—ε¸ŒÀœØ,®Ò’!r%ä³Ï¢#æ0äÉ×jp÷Á+øó‰¯>ן[¡cÓÓ£¢ï'«k/ùyºæG÷(Ix+®=jq) èÜ_Wi „#ìgÀÝãw¥‡1š-çãZ î>x>ñÕèúsk$tlz~ôCÔáýduí%?O×üì}wßo_}}{ÿýýÝ»ûß|ó‡öß¿|üö§/ÿùç_>üüó§Ÿ^îïúí§ÿõbñ¯Þ½¼|øüéãÍ·¯ïïÜí›û»/÷_îY°èÏûÿüGüíßÀþ{K·?Ýþöwwûˆ3ïÿÊœ?±BÎR”Œ!RwòY¬ è³ÔBú|^ñx½Ð >øgÄò‹Òª¿’9ÛŸviân¿õeÏ›80ÔðòŠ7põÝîûåþÎßþO{Ùýhuaüiÿ‡÷&TíÆßí$½hµU**RU!´”ŠÝHå¿ï3ž±=>ç=˨dó[{<žg¾o×ùtwæ]xüƒz†ú•[“HfÞ&&2ÑŒ´ƒŒ¤@\!)bg{Ñ<ó¬G°Ë[*¶3#È£PÊ÷° T 1‡Dþž ê9 Ζ4[èœÉ"°±±s!)þnðZeà˖Y ;ÆŠÆ6Ò#¡z]p ÊÝÞªÆÍâ&!‹x'z¿ð‚QLܵßìmw‚- ÊÑ!ÔÝb_3ïj φĜ-ê¶ã}j*e³qb«œ–¸×-¬¹qX`jÑî•Ó|_ì½–dÍ—q~=¡–‘•®!ªs!lN8ÌŸÜv fûT—#ëyy,d£‚×=ᆈk¡µCм««nÃ`¾ÍÃá²d×oP-AlaÝ6m£àÂÏCòýÀèÐÕ'9+;ç¸ÉT—Ù§0´Ø¤à"Ëv1âÂE€ÑŒ->K¿ Þ©è™y¯5qB§ØTÏ rOøÕ–Gt¤Pd“–àÍŒ„9hóÀè<ÔøgxÏØw!‹è2Ý=èzu)äÆ÷ÛMcS{i“é÷M¹•À X›Îñ¶´‹ËSz­±í 4Ñæ^¤†&©T×µµõÔß=¿x@U+yœÛ­¤Þã(÷L«Eà)¹öðoÂk0ì¶S”Is@7ãhpo›ûÁ[JDpq¥´Ù-{&”t9çÍbß§½-žÂU9+Qɨ\ì?28X^ O ‘ÉÕ¤­ÔËT«ë,ôò­±wÐV\¾±… 1*·y›ª–9`™ rßäKÏÊ–Ì~@BFëäj1´¡1Òr9Pâ-ÔéœÎ[ÑW9-rÁsWϽ vá×^÷K°Vkqa_œç]“ Q½›Ü.ÝÆÎ láwΰ†X®¾Šá©IüŒ :pS¨²˜2h>åúËû.Ü¥œdñ8ŒþéWȬlŽ ZXpˆy©_bÆKDû\êj ýjoa%Þ`4…KO†6‘µTyÆs­ßÇ"P½4Å’e~>°+®Žè½Vi¢äã3 ž‚²A¦X+›Å()yÙVúªf‰Ä…l0y¤Þ×ËÎ\P.¤aÁÕù“SB^õ›A¦5O©ZeFø[ûm}Ø´÷¸XåNLÜØÐ½Êš¸`oÍÓ3ÆlãGn¹dU•÷BƒÔUUôú|qÕ׈>þ”ÜÏ-´úPq8Pœ´7$LƒQx„à#ž=j’ЫþÙ?âÓ†/î/öåcjµ£ßPqó&*~5¸ëã‚ë!mî.“zÎc ÅcjÌûëñiá£ÉJÙÎý•à4SëÀ#ª ÷hÕ³ªx¨w`’eq™+í˜,ésW”AcÈ€ômù³å‹EG#­â²ÏÕÁþŸ.Ôåª/,€Z—òÄ×–Ûà¦ô³HíŠîoÝÄ©íŠ}³óÝöͶçõôðÑéÅ?.<¿øæñ_ÊË?ß¾~òþãÿý÷W>¼y{ñ Ñ'o~z{»ò‡Ïoo_ݼy}ræeùã‹/è{þ¼ø•~ñWüô°_Náô·Ó?ÿeN¯±æÅә᫠›I_z(eÊõV7xßâj¿+Ð-üá“UHB=ÕW ¢A)ů6…ÅYöéjÕWû H~l–Ý'F¬}“¾¥ç_Ó~S&w5¦õ´+!¾kßCý#8”PìEŸÂ’ ó{=)”._ÕH!Ï-ãÇìn™U¸Õеx¶¢¡&••%6ê»þ½Vów{>t›ÓsX×önÚBRâSMx"ÜÂ2 Ö,ÓAbØáõ>SÇâLãh<É<*òu°È×ÉiÎ-Q&”ÂÝ¿6UFÒþ™Y´5NCTÐ07Èžã‹ÜË•`'4—¬‹ç[Òö, ØbìàLŠ3L¶ö+XÖ´ ¤f=CÌóƹEžDXm² .Î Ž›<¥Ò§̵Í3Vx‡ä®érÀ˜LT&œY‡GÆ;º~dœWP6@ØÔX6‹Co™ä±Œ•¦(Ä|ŒãÍ2£oôó]Ðp¦9üfñ̹­@ÒÞ‰#ý_íp*¹Ïb¥ZËû¶bÅûÓ:' ‡(™cr߯Ðã«ç.|àJÜÁjƒ* Ã5¤{Ù„œûÜgeÄ5,çY¶¥uè×UW‘ÚÈuJ9-¬²ò‡Vç¸oâ|Š9¥5V‚ÐUÍë1nB)/-ÒÞ‰Ûv ròO «}¾ÙrD_wÒü€7ÃÞoG|‘gÄ:6øã±á¬¤Ø¥¯ ™ìh¦yí½»Ïºƒ.îâ«zÚïo ¥ŽZ$ú†‹­Ê¬jòU*)Óøo”PjcÉÿ›ÎÑ6µ‚rÀ%·V—´ð^¯Ö–Â2×¥‚ǹª`’Y½“ôʪY+ÂßõÏ]t ¿ëØæÜK«Ô÷2ZÙlHý4J¨êàÎl×Zžo–N¤ jZ íýö,6¯ ðqß6Á«7n³¸õ2»vc@ƒîe×½®D“ËnqŠý¸.¨9,çUiÐi>åE’ÀVRo[õ²à®t(²SL«&R,já]m•!±§,ÃQ¸áNÂ!ª kµÔ&N«.TpÕõ2µ¥å&`èÂ!L'\UìäJòVna‹8¦Ì¬¬'%]ÆL£ãÇhÝ*ÐÉ[ò^‹šWÉ0¥¿JÜ9$,P¿ÃH>ÁWâiß…o¶|IÙõ‰ôˆ¯"‰v-ZàH;dù¿­pš|(§³râë+'÷Ê)¢ˆe[Ùê› J޳tÜÆØàîàãâË®M*‘YOI’ÑËC˜¶J„ÿ–Ó ÜÁÁ^4Èäýé—‹³ÖÜÌSKZ­y†Ð*”¿P,-Öȉ‚ëñTÔ­$Ô+‹z¬øVJ;¿Úð,)|Õ«?µÍcðQR¯#¾žŠtL)ãõДáOoïâ˩ӧGœŽ5ÑŸ~âÑ–÷@[+ÍlM·=rà+¤ƒÿÒthÛîs³áHzü”uì×cÜw¹:Øýórc—‹E»¼Ø›TÒzö³ Ž’âZ«^ï<9©Ì¼¿ÄÄ÷È;$F­­§ Jnç«ýú-Ǽ“ý¨àÔÀ|*wq(+ˆo•×Mð`¨ô\g#ƒ•ÑÙ;8I¸òÞIœ¬”ú͆0³á³2¡•¼ÿ˜TŒt²~•^½ÖÙΣíçw/Ò¿«qú„rxýîÌþß¼üöñûß¿½þðöçÛWï=ýnzùðöÕ1×ôèôí³ïßÞþtzøäÉãëë7OþðŠ?:ýž–þ‰þaý@YYŠV÷ý+2…Þ¾qˆ ZG¸a ¤djúմ͉ ºÆ.r;£O—àÉsè@âfO‘‹hB…ãÉ•Ê;`t3YÔ¿‰pϽ°ó¥(ç6oðÉòh”äx ·•u»)¨ÅT+ƒé¶¶˜d±•œÏ‘GŠö<29àÚVN¸=¦ë¯c=&ÜÇéQ¦¾Z’‹Žzn]}M2êè¡¡L­ó¥Þ÷¡I†¦JjtÔ]­FUœcÎ3®îR‚îŸé¨MQñÌÆÞÇý¼]¾Mþõ¼@^ÎH3ÎßôÀ m¾<ô¹X9UG!¸ Õ³ñ|üg3ålN%à¹l=—Ög¢ò(~·A¾Ï†ï6O°É’ÝÓ|ÕÇÿÚM'm›Žû MÇã­\²Y5…|Ø6€=Ñ«•òHï—t>’Îâ´7ÆÓ¤¹é—KO À'Ì®‘OȦz( Ip­ÞÑ»´%È]‚ñÒ»ÅùÿÈ®veÉRèOÄüCÛ±„»×lw¿ í1÷ÿ7õD•woG=R)†c\ªƒ\‘<¯FyQ]Ž[ÅkWµŸ4ÚtPosÕ@´èb§P‰¨=GQtõÓ$*’‡ú{¿ö§wprvbÖ–þñ,ˆ©)^¬@g³FA„°õXWÍú“&ÙeÐ:L`t:ןè¹`#S˜,hë @è5Êëga¿^“ÙégCì»ê¶Ý¨¿ÒM¿Žx2ä?ôªß°þ!á@©£ÅðéG¨M÷^{C¦¤‰Ô¬Óc¬c©¹«ØIÐj²gªâ ÷Ý*:£ªµ àÉH1ÿÖé_%¸nBïÔnºÚXì8k);9˜J\ÞÀ¸ÎTK0fOVµ•Ö§ èjt-„»Ö¼-ÄÃê{ŸögËÒ!«?G5°Å€+A!È“u¢]„i}¤i%ŠÃh?Lh «o€QpàKHƒz1ÿ¾cˆ’Œ÷hOþo›hÀYD¾è˜ ¨¸×[ÖFèô< ý×úàÏ(Ëy{=G¯ÿ;ªŒáç~¥€{(Ž”.Ũ¯7± ÌEðÀ#u£¨¬ÊóÔa›t_ÞmÛ0pž5ÿDàé+XR{fN7Â*¼¼»¤šMeû8¨xhK ×g¦¶-y'<í½»óbÁ¿ö÷/oüþ€ "´ZXˆ2bmá×Úô6j?n!Ý&ŠrÜò™„wÍO.ÄP›˜¯Ÿlªq©’ˆ÷÷wLµdŠl·úrÚÀXmÂÃY^ žù*{ÒÁ”Ôj¡iˆ2á#¶¹ÆVJç¯A•³Ð¡1Bý(2tPq@lÕ1woLÃ’âÃK Zañcx»&ïœUá•§¯B=}½G·i{Ð;çUÖÌ)¯(Hµ¿ê!cIdnkøe¾wù*ÁÚ±½B ë›^èú‰ÉÇ¡¥n5xUÓ§Äü¥êþßc¨ð*#ô\k͵çUhÎ/¬˜îF³ævTx`m°×Íd Mì3 Çadõ$”V–‘0ÿ~>'—rê\¯ÉÕTIË×ý‹¡JJ{]×ñ¼j¡þz¥‹Å÷3]¶ªœ¦ÀbÆ*Ø*‡Môθ8¢%[®¸êp°“È8³ÆF&t ×OÐAݤŽuhœs,€XM>Ïhn{ê¡t)0cõ­¿üs”LõUš¤/w¶{ÿô¨ÁæÕƒ‡ðèã4³þgø”‘±>\/ªÐþBêZq,\¼k¡9(Ó#4Ciµ¸ŠËMí™·0“«ã`VÞ²Pðsµmd7ëMZàCµéùަ\Á+Ö#v/ðçn¼Xí(ˆanLj=Àè2~da}èî3h¥ºtH«°ƒ5Tj‹O¡cáâö—_‡‘;=XEF€52§ ÒŸý4j¹8>ò0u U¿ÛNë^÷–¼ÆV“ï¶é;¬âbý|wXÅLŠç6ƒ©^xܳaôì°Ù¼Ã&ouvØÜ¬>÷j»wX„wÕy‡6-ƒoRM3¢eËðéI©¹­p^0˜à×¶p™£.Äð÷VåÆz’GEü£?´¤j_Üc%°îr{A‹!²|9‰}Aue Ü,ûÆÑ¥=‚C#ñª)‰ƒêNRWp(Øš¬OÅ¡8uâP°Hçgˆd0Ëõî÷,Õ*ÏV?gž¹šå Hy´gè~ïlt™û×ÿþþ‹~üÇL© 6f: Sµð?0ûf :SLÓ@ÝNöUKeç°ÊÇ[Ðc#­Æ Ýáì:ôŠesJMnßwè«ÑæŸãÈáñÅ­ÕzI³Äwä›g|_â Rm#¨} ^=+úD¯U¬,#@çF`Z^$ÕjoxÈïqï}hmÅØÃ‚àOÅL"Ûs´áúÙ1à®,ŸZÚ›…âa…„vûžƒÀ#Åí³ã5¾„^r†Ò‘—Eºn3í›rìý‰šzS¶á—Ãðò]‚/7v~ 4]üíõ21ó}Î¥ðûò‡íQ)R¿G!³½$ÓAB¶—yÜ $˜jFÓ”iÝ#(_xÛžËgÜ Ñµç98”!úz-¢` ÖäëvJÛëêPå&ï°CW§¯a§Yœc=GU¢WA(ˆþ%7†ÉœÑmb`x{DLsöxWJ²zdTv!K®äï‘gé]WÇ¥<Åpqm¯>ÔÀ¢ƒæ£$Á?0púï <Åɳp5ª¦ìtuˆÙ„åqwaL/l ¼pa°g\5z¨ò†'…³¥ú¶·|C<Õ1…´/28ª£S‹½B ÷74ïT;a¼ûFŠ÷YLRnž%&%òn<)åy¬]ðk>CéZ•CmÉ<›y|•‡Žµ(…ô°3ÖR Ò.™º)…%9Ÿ¯Ó£•K|—Y,w ,c£»øÇpÃQ´™½wÑq†&Ð ™ïIÔÉØW“*»ÆüºßÔÆ·³à8Z;*ñ*pa±*~ÞÏÚý9È:)™<þƒ"-kE±Õ«l´HÚ.ã9|8%€‰ÎøáÁ¶h0YQBRh_h)C÷ÿóCÀÅŒ+?û’h'Ö…VA(ŠÙB .¡í]¿‘'HL á]ôã è¾Ø¼µ–ñ]{"iÓq_N'uíPí'7¨Ôí¬Â4ëí{qR¾˜R·OEO˜ˆ>îe®[§4¯cüEÑ÷ú»×¦þ|å° Z‹o¦”V 3JdÒ¨]ìLeÐàÇцeƒÃ©­“–iÄ¥ÆÁOvRŇ}ÇÖRBìLkÊ"*_EáJô¿ÿ•Ô(¤‘6F‹€¢½v»ÀR½[{$“½¢ížZlúeP/Zñ΄KpŽ›5U –בX5xêCë1!Ú!'ÑU­úf‹ö™bÅRt‡Y6èÚÊô¶« ÙŽ†íS5wÈ ¦ƒu¶¹EÖ9÷Ù–¡ûýlÕ4lK2Xl‡+‡~W¤Nç,m Œ98kJW3çêäbÔš‰"Æ:X¬hÄR•·š; Ø_OðÄá@èßÏ®]Ïàt#@Æny…®‘É,½—§~Ÿ@ž¦¯%ÍýÿYª>؆=cüK< F7‡´{Á¯O¼y†µYÚ:äŽsUñ¦ó ŠMžóØ·/FïkÕX¥ÝåÆ;×±X÷b®Æï' Äɬ]>±n’Ãßð”)?sK7¼(1/À<¾|n€Pãb.¹Vgx¢zæ_Å9ý! zFp祿¨ŠÔ8±,ê^Oñ×Ïü$U+¶&¯¥x==18«˜~¨¨Å:ƒpjmgèWÛ$œ*5ctë–xíƒ݈æ.ŒÄJíAYËì’Ôê%`g‚ÈÃp7pv«IgšJ$šc…Áö±ÒúËÕi¡ƒbH‘É4½èééÊ )³´VI f§<ü®B{22iÝû+ …öpcúF­[-Ž(+;u8¯ì}µËHR­BdU.†)àa¼T7ÁðüãÿfË}:z--{ò,D×Ɉ|R ‰NF݈q𼫳'‚}ÊÅy~oµwÛ<©q€A3›»ç1“ŠïcàùsÿŽûÕ‘G ŽË“|€ê¼vöŸhdz`ŽObÓßc4äã!¨àJèJòÜöÛ¤¡‡>,KϤZæk¥ZåhŒ …?ãéDçÇÿ&ðº&K—©Ÿ‚g2 ¤Æ9kÖ(^œ›Åcü6®£`$<½ÿ⨃žÂ]·î¹Ç4C(ÚÍ›{¦`ÏYèð2+Dåbï¡"apu~lÏ჎YýªÔwC«G“ªˆ??,=H0Ü€ÔáÌD!ųâ)à5²|¦é'U s«6ÊÀpgMF’æôk±´Óþ&íº²¤ÖÉþZgRÑ|ä)¨’{WáuçäˆSÆVV³Œ#Ü»±öÌ̪0" ',rÒ b{8©hP·²ò«$À™|`4xq$HG`r`àŸÜ€–âu/¦O®;<ÁÅ`‹ð!HëCÄïØüÁfzô$kÊl›3„ÓÖa=nù§Ò›í‹6˜:{-âË*3yMÅÃt"ÍôÏßrøçÿþùQcÐv‚¶ÁR²ýJ<Žì'0 ‡pF3¼ÁãåžpÍÆq0:Ù€»s× à>¬í‘meá¶Ùs¶Ž5öÈ Vßz1þ‰&:ÿ±/,Ò²PÆp´¿\ü Â4 ×­N¼öX æmº óXiò1þo‡õö^ºÓ¢<ö4µ¢ïy0¬:ÏhAY´¤÷ZsRØ±× n£}®”ðvÔÒJ°OÍ @¬îÿcmæPÃ#ˆ†Lìü>‹àgÁX…ÓÅ Ýê}?íìÐçôŽåÜÁ¥î»xÕ^È G:a‡¡è^p€)³R‡- –%kÙ=ÄïzrÐEÈ,˜m"É6Z)ß@ b;;\¼Å`aàõÚËUi8Ýz½l²å‚{›Ù“° T·Ÿfuö¿©Çh" endstream endobj 14 0 obj 18800 endobj 15 0 obj << /Filter [ /FlateDecode ] /Length 16 0 R >> stream H‰lW»®m)Ì[ºÿ°ã–f ÷„'/¸ÒdÎÿO0kwvT‡Í2~”«ž‘ˆ>£õòôšéóׯ?þÕ[kÀy<ÒÆçgÂ,OIé îéct½…!üåx~2'¿½q« ÛáŠ7ÇZnÙ°^rýü^0+Þ’.~¸—Z ìƒó ä' …ÞŸ\Ûú\\ ”ÔÊÇ!bÁާöÜ× é©Rg ò¤2æçˆœpÙñš ?ƒ*X‘Ë%àžs=°až_`Üru° ¼q´‘ìK¿×­ƒ+ÕuAË~t&ì…iqί ÍuÞ'{*rÚ ÷u/.炎*Ny¾õ­2+p=ª?‰z9˜ÿ­’¨\G‘ÔÂű"§,™²¨§¶*€Ÿñ `×°Ë §„ ¤©™Nà’¢©æö€hœ9J†L"-ËäGŸµbzðôyoÆ|Y€TÄ_ƃ+¤ftb–>ƒ~ËäQ€X®OKö©;°2ÃM?o¼-ÎV0’]%eÁé6î˜0DßWd´ž)cJùcáÒHNxyLÚ×ätc}¹SÆ™{äË™F!ºøRÁÒG}ó¥âÄÖ ›0'˜n¼°M˜EÌá¤_‰UUe¼¾ÂDûœ <ØÙKuÝ௠=³ÞgN+>z½»K »ÇÀÛP«‚¨Û»gñ™Gz½É3XxH“À”1‰ò&L& qmÚÖÔWQïuûж qòJ@™¢£¿3xxbãQ‘•,ßBX O’Þß+Kñ¬C÷›‚T¥]›0‚±.xµK¸}U*¿B@ö\Î<^t¬nŠë]ÀZªrçàš¤‹òœo˜:YRÛ&ïc²0u3„&2%¡Sˆ ¼ ÔÜ|be¯×™mt½@D ñ¿ÖŽW<ŒïptB'ùįU4oµ×îÀ€¡ŸÊi{C¼Ð‹»[0&[wbˆ…¿^Ímšïîè-{*Sº1ä»9€—ös{;¥|5GQmÅ|7ÀEp!„†¼ÔþÕÀC#¬‡µùÞ;†ý^Íá³tŽêÐ¥¼~.{BskÃ?DgBAIü^㌭3ªƒÞ²„öï,sŠAm#ê¬3Ö÷ו¹AÒþú>v¾Dw° ¹”fWÍ(òN@ÂŽ¡<âQ]Õ&íiYŠéT,{×Ôh ©iùÑ]8—T…˜¨l*Õ[>a ^¼©<œßJZ}TS”dëÖR·jne+“j«ºñv‚lÚèâ.öuZyÞ ÑÀ½.mµ•<쟅'j›æ¸O²³DÝ­’+—á†'i;ùËð³ÄÍðÉ(¦ä:7wAd:5(ËíÔ¼ãÒ¥Ò}ÓSWÖ ÿó×àȳXL,»4¡.doœ‡›¼9u%›9ý³£.Bûv¯²^‹Ô û³á:F¿NÓ†Ls«ä–Þ +íc‘5©ÖâÕô€­Pwp΂bÙ,›cþ{8©Vê}”Ñ~+Ö}g{vüñû˜&™½cmøYî¯WÌ2`‰³…„Yf@Å’§xE/‰[LžéBòáxgÀŽcfUBW­È0q}ØCӘ݌ÑÌ 7ï7©£1мÖÂo‹¢O±žäÒ|ŠA·[óý÷WúüÛx¡˜ÿ¾@½-ºŽ¢ê uÝ –.õ+€¹«¨ÞÑb2óõ(,PÄů÷WxPFñh…dóY(ÛÔÔ¡Ž¨’uìšËLÝöGÑ>÷TÐP¯ÿùü£ˆˆJX·~õßh;—æ#àPº³ªàDŸê 3ÆšUO*1Lƒ…𪕡“Nqã U•é’¶º-Hä¿UC×^'ûÚK:wµ‰¯öbÔ®Cšû8åÊk ‡ð­%tôÙw“\«…g­ Dz({õœ“m­¨C8Uß6x³SEâ%‹\T†ØŸ”9P¡bªÊs Lû}e×p᤮¥Vï+•Qœ®ï£‡ÒÙ,¼ Tæý~ø êRÞï\„ø}­/×ÊQs_ØûIñ^Œö2›à)«WåGŒà»]æ­$×âµ$¿·´ÅÛþOwµëX–ÛÀÜÀüC‡v°½ñ¤ÞÔ0àlCÿ¿‹")’º»Á »kt$Š"‹UÍOt¯;ú}|tò;-KǴ͇YbÑ[»0˜µMé݇žzݧ´Ðž³L}°¾'µrƒ2 ÕP øé‚“[#lp´¥þ XwùÀ¡¼ˆ¡ íãÈp XÚqYÊ'|‘1Ô¨8>Ü;ê­6Èæœ B"WU “Q®T0:˜s/|2¨qêŒ|2òV ôÅ`å·«ñ‰ !Š‹×Å]¬»‹i|C!]zcЭ£à¹ t=“õý'ËÞ%ðÄlh¯¬ä{´N)ÏÒõsñ|r{’•m}°®v°`ÄÃTN’[­‰i½÷›À¨×ñ.Ks¥Œð’#Àh¦ …@{Wy•.Àg½¸]P,‚À'.ÚË'îVÆ'.¾  ×åådUÔ ÉËÌcŸŒk©KqÝ+Àž' ¦mü†dGo{çYöF1\½Ú÷‹_cg§™t‘»è®aÞÒ]Ø\¨KŽw¬.‘æn]ÆJÍÞÇY4úrý(à­¶§ΚÛHôù–%cÞJÐ]‘Œô”0ÈÈúQHRY#Çú Ìõ3 ˜|{É-Õžt{îö'3 n3ÏJ·ë×7F‚É÷—KÜÒK:nOc¨€Ñ™‹ÖxÏne`l– íž³Z‹M/Ió1&€wÒoúé]¥èk ÀZ/nWTVië eXWþ¨ØÑïr1)ùƒÐwªRǰ3qãOÄÓäu<ã€ÖÜÊ' |bx´%7[bÇ9[b±9[ò߿͊I¶ÁX_&Öÿ ½+ÂJbX®X'°äÄ:a:çѪwí¥¶¸ã}ªÑ•b¬g檨5­\‘íÍ¿¼°Æ«ârY3ûT!TªÃø{(§ZZ‰KqÅ¢±Þ=!eÛúëuÅÇî1Úµ®íJÝ ¡Û›Àv˜-Ý=Gµ*B7ÙÓä:áYÒuå:è˜ýååz—E`ð•ëosåú9ŠSèåúK¹Íôs¢eF4¹~îÊ3ÓËõºQlc4†;jõ‹óºÚiT€;ç, ªå¬Ü?+U­<JæP-à5R“«yI1£´û¢Fr«¶á}LÝ¡•¾¸qR-EÀÑÎeö4–í°ƒÞ+7 7Ÿë6PéÚU0™ŒÔ¥´©$:cœBìè׆âáîM¨€Vu9HþÂ[bÃÞ‰]^Âtê§›Äʵ (-Ö矻˕'±,ÞeOKÙ/rL /ž÷I;ãð(ž*ýð  1Î`éʹ€ËâÞVÉ|‡v˙ʬRQ >pÉÙ?Æj;²®+]Šˆ£ÊÅ€ÑP¹`©òÁâ)•Ëif_è­n€¥Ïü®·#}¾}}¼·×ýź»˜æÀñå ‚¢Ä¥ ÷=WखÀ”JIÆ_-<~šìZ&ºO‘IüÖ^Eèê±lip}8!b€)Ѻó âŸwH¬ETV¼Y7«þþ€ËŒ„°ºgJ„R5ÿ4Áî÷ã?¼UiµÈZ1˜ôªR\þ|…­ZlÓKž'€tG`O¬’'ß)îäëù¶@AÒëžU™[*†âævËm7Éÿ”ú#eXïýIpeím9ï‡41e€FNç­©L$MHœ}¦¶(C]<‡›aȪÌìì§Š£RÊp<}¯àXPÆ¥4‘eÚö(ãÉ|´àµÓãXrWóiŽX.ªͰ–Vv†…@¦S§@hjÕÁfXÜ®fX,‚àW,XçWìZ&Â-A¯#[ãõ+Hk[M<Ð% Ô°õ «¹‰@1Büø'~%!Ÿü„wiÝ(ÿ¦ŸËžuÃÕ{Ñ{~ݤps4,G6µÜü­H‰É”ó x¬šß¥ý5,¶OÃBp} å5,t%áikëkX\Þ°¸hͰ¸k]Ãâ2à›€Z-ì"®a©Äq^ëúÊtç ]ˆœ“>øòv…0km±+ôvÅá಑ÂoUä Œþ*ð3H‰”>Ob¯ÎByÊ2< ©6Ä*@dT&àͳ٨©” 7Ȭô<Ç«SCi-/7Ž×a’2¹q\Ñrƒ\Ôbª¿jã`©Í0?<è•z€»[;X@Ü ö'~í8¹þØ_ÿÇ×ïÿúñ·ÿý€ïƒ£¢Ú?ö@Câ/ü‰yBO'ð3vÆ_8öë÷S‹œn•Ù†50žJÁcy ÃÝKW»@3`#¤Šk&ý©Ó—Åä>(¹«'¢)InéÂŧŽÁ"O»FE:vX8h.7œhbTýÇéx°<5* ¥AŸ…;¡WÒ²Ëÿâ¯ÑËÈ6V«GIŸ¥\W¥ÂXTš9ÍZZʇ„£½©XèÖ+J;ÕÓ೚`íˆþ^éÑ¥0ŒŽY‡ŒÖ™,§A–}ZƒÎY{7šÑ_¦ì0F*l=¿Ó‘KÍC/ŒüG¯ßgYÏ:ŒÅ"PY ¦^e¿±²޾œ#)N‡A„ÑìmlÁVr>VÑ€Q›upªÚ8¼¹Žº`ç„ÏöämaÎö±°x€•ÖëQ±°S)o-¡¼’˜¡!e50nv3Œ#Ø &Õào†qûÅÇÙx£C{€VæwEý޾ KI¹X]ClÆû]Ë%Øè?sÞzä©Q) Ž>ööûqÁ±dƒ¶N Ñà B …ƒG%Ôœn³ÝÖáWÔX.UÒ2gl¬ÎQ¡ º»¯)36ɳÜ4xõÓYt>£ÐµQ€£•D$ìy¤ý9ù«²xÁî>¿àt+eO< Í¿J­«gõ±‚wóÐôVïÅïÉà Öô²ISöÙ£ « ÍÞÀƒcI„cñâN:ú )k)†ñ÷ÔB4ÃÒrcv{&”O4ÒfuÇh©ƒv÷J¨Ç•YjÝï*™£é—XÌš=€­±S ¼Öœã»œ¢o-¾`ÝÙ[©{¢~ÆXOÔeÉ Ñ‚Â÷ÝA¯Tž[k‘·¡ì‡f˜5ñÕ‘Ârº† Ø’…è0c£¶uÉV³¼um©’þæó/¬lðýÀH >I*3öTéûWÆta%t¾PWe–hKYÂ(®¡Ø™µp]‹Æ3/ˆš:Ù‚J\ò=ÿ”ÚHi£îñAxÖ©ØyøÕÎZŠ1~êJµ¿d& ­ªP ÄbõSíyÇ'ôÔÜ%¬«îSÆõBatWÈâ6sœó•ê¸FA`XЀi ¸í°}T•mOKÀ ”g'èÀâï¥ÉŒJªýê•y&‰åø‹éos’.£1NDt$åDK”VŠÁ„eL_ÑÊBC“z¶tQŽé’ŽÃLíªÌuk"ÁÙ€ ¤5ÎV»U©ê} ,ð¥;˜Ò͵ÀÖ-àÖ×jm7dq¡ðŠØ‰§¿ìktÅêN+TÈlEªGsªp^ÔP÷ê'wó¦€[sjkES@l~ÃÀ==.”š|o¼Á†Ýü0i»4ª­:Æ}·èŒµîzDñ^9.€Üb£±ÂÄîY­:xÛ°o¬; zrU¹y{Ïí¤Y¶…ÚÏ£>Ì:¤ ú2lÏ: änÚŒNwµgÒï¤"]‡ÇŽÃ£MWÇÓ5çêô97jâÚü0t ûHrÃdkâdéù'\@º]J³DJÀéå ¬t›žE†^ë•#0T{½°aÅ®„q¾‹©ðíe»ÑMþ<ʶÇ2·ÉøPÀ¢•p»áOç¼°wY¾õôãµàiÝkìmóäÔáƒä¦,5˜rFqç(¿)Ö^gcB­Ï9?© ªìÛ¤Þ¥9¬)Ûî‰W-ß­òzisU n^õ9(â_^¤»ùÇÛ¶ïàü0”Q;Í8ö8Ätâ™}¼÷;3dÀu7)ò°Š0S°UÚwšr#7VD²f!;Í(yöðfÿG:ë·ÞTjÔß¡Ídî¡Msë”´§…àGõWŒÞ(ª‘›`µÂkSó ´›eé€ ÝÓµÑÕµp¤pªý -Kµ·¤3@ÕÄ6‹1kñì߸ˆUѺ?pÙF­ßŽy×Q“t(XÕ=®–":kEYÓ¶ÃÂz­.¤Öò(ãfLx´ºTvÙ¾{F·qù–Y£–ö]H[§}”„Á”CÓæñ€§×2¸ÈÒu¯l'…éy¨¿µÒóa)h¼.úz}ên§&ç¶ïî&1,±î†=ÇþhšeÇK«#Ú…ÈÝ1ApwòÏe†ÌõžÄ­>Wν¿ÏÖzŸŸ/µR[Mx´–Gö|Ç&Ò‘ºÖ»Œ HVyÏ2*¸òT^F,ý]F_0½}ÁšNúgÍäe4[{–ÑìRýðº†Â4iª™î2*!¬úþ,£sƒ°-Y¹»Þm²·"ØÙ3“š–æ'èîìÄKxðo“Ø’Çq4Ohä;=l*Æ`±„m\›Ä_6Dâ]ñ*‘ëË%¡Þl»C©Ô !»GåþC}&S+!!ð½õwÖ¢òÚ§ˆ|øÌ9"B@Õ€¤~ÀëÁS:+‘‡“>µ¹}N2ÁC†œ±§N0½ÈõëÙËþó¿?ÿ ¯¿ô*ìmJaqûûET7kí2ú½jB­B¨!ÖôW[Ì@Q‡šåÑ×›xA§Ïßf¶ÕÁt!û{mÛêÈ=ˆÉµZ@¥kÒa\)ƒ Ô”ø÷8RUÐ×õQÀ å¤Ò ¯¥…×ÑdP-Óë#@:8—½pŠ€o+[\‰fkÞ=Ü»µ'û «û¬ À©í]YÍxê‡élrdº­Üç€@ÌãPA—±×>ø¢K;ÿ —.ëÔz‰H°B”õ€=}}À™N_¦çrM¶^&N}úœª ŒÙ~Nd%¬{ÆJö¾:0ÉòhÂXBƒÅˆ÷s)²õž6àþ^9‹¬§ôãù ž'Z¯­5<Úõy¢"Ë~¦Ø”é-AÂ^  ´O¹ ¸Éø+- yÁôô£"î•Gåç³Xʶº®Êîý•ÝŽòžpnÑzôœÄŒþ*¿91 ¨þ‰X[a ½šRÀhYמz†X  d=ìP¶½ÃŸa-Sܦ½Ã¦¥5°ž·¸Æ RÍf®îY]®S•𪾻¤0Ÿ"¥äY7núîf’òœUÓ Êð3çÒ³ì&žm7{×ÝäVšS'yåK-“ŽBXÕi§·‹«iI sfñAIAÂö%ï±Â´F? rŸƒsxÍ÷Â.2jüØxmæh 'S1ʆ ‚ëæ`·ÙŸ½‡rBÙö礔RÕíà­‚W;JÚŠj^¥‚‘ M7Ml¡o´€b´cï=(4€Š„⡉ò£1fÜïÅ¿³è4l¢DTž¢Š,B4re× ‡eý„=S¬7ñ:M,¼°hwÙþÆ>ŒÎXyk 2" ×Ü>Ÿ«Q¶4¦,¾'-»ôèb¦‘¥"UÊ\$´€ô¾ò`÷3}ȃA¶Z(ŽiÅ+“Ç[†.+HL·ÕàT…jðž+y€Üí0Gù€@–vŠcþ½#Ñ{C4ýx+$dd»Škü)ɳá-µûŸÌw¤ÎBòY &'ÿûçIRŽ%í`ñm²dV«$Ht£*oèW³gÈdغšÀ3ØñbCyÝGLÆfüV6&s¯õ/3aQéFþëÒÐEËYHϺ¤Nv˜.’n9ÃɶÛUu¯ˆuSúq¤¢ ¸¹*>œê°Ìí¹aTiUµ ‹'z®M«øÒLC%0;žð.£Òµ÷¹¶í³ó\{â5 ÉNUm¸^qíë;_E.’ý3”Hö¢j^ˆÈ¹É|¦’±Ñ¸¥ä¼þþÀQjMûq`µmSmCWÛ‡†¬±d£VÕà¼öí®:š\$>[eù¦zÜ:½óô¢{Ú~"8£Óö;!ôœ¨»²Ý€µCäÒÁÇf-û¨¸çí cÄ ¾)Nø´ây®¢7ÆkD̼ ƵwÝö:&bí3ŽÙ÷7\çhŠ«Ü sÞ$ˆ£HÂÉŒ]]õNN9Ü*k|ýkÁ¯º¤«ÈÂTÞ²ôþ¼ã8¤! Ý„Qaj$cnÚE84K¾ÝE%®‹·Ù˹lì{®WÀ5Ó+¹`v¬ˆ}ÊR‘ôcuj‚h­ ô•Ïu`§ïXÈkÇ´PŽpØx”ÁYÿÆ/{ÛŸözƒ½ÝHSÛï%àœ¡TœŸkRƒƒÃdS뜬ï"‡y¾N‚–À)ÙIÝmú]¶u FÙÖ.»b©>·¸ù±“­á>dL—ØóùM¿0T\YÔêò§}”¶ ªÅ³¶Ö8Kl•Ñ“ÏùeŸ‚÷öc¾[Iñ§±ÛöhÏmäX–Ì\O$±wì¨>F/íÁ rI´·½a4$t)‘£f«N}j[oc“ ›‘25XßÇ‚§\<ŒtŸ1gç\ü°ƒÚdo&^„zïç(ú¼qìmƒmÌkzU‹€Hp[Ô„„s-'’u«‡ç÷á‘aÛmÂàÀ\áÀA»uYþåÎQ–4q ðô46'Q~%á( ʼ"W˜1"´x´*ò0AÖb½'E7m×±>¤MËru^Z¹44WûaºËŽ&Znù°_&­Éþ€X]u)xzþdêkK)«+Yꨰƒ»ÔË:PzÍÔFYºw ØÛ´×»c•zÂü{Ùw{¢ÄQã~çpÒ›S1l@$“Æøqvx]‹W4~`] =ßY·éTS‚ÍV¦h¸XC%°.ïJ£Ú˜‡`ì3Û¶Í!Øø±ÛüŠð¹”çí„ít_¢Í˜gµóÔÃ#H M6mk>Ú b¿X1d‘ÖeþÖ¬æ4~·´ã>V²êž¥v†@”¦Yuz1GÒA8ËXN,“5hH”’uê¿P”ÍÄT_£[0ûîZwsÊîÀvst5KÓúDwY_mhFëÛ‚ñªŠ²D‰£Öjö±”;  ŽÍÖm›­zgì.ÚÜÖ…‚(Íð†ÎµäsøukŸ£*¬ð¿Š?DWÞF¼m•ˆÿ”IÙºqÜtÅ:PleÍõ¶«]ɲúÑÿÐö<„{×,w¿ #ÆksþR@p׫›Å!¤T&¹ ™¼;“Ró:Â,ËØštÒá6~k"tãÝj+@5¥˜¼™eŽ2ö×…]RæXhžrcoK'„—)±‹–î×ÈxUëx)ÎÍgˆ¿9@ýS+ ôÙ/ï$à﵃ àa±=%Þ¯TS“a†WÝ8œÍ|ß0 …ÊÆË|jI´˜1JÚ P·:ä¯êÃ]¤\NdÍÖ úŽ68ÒÐDH„ëàO¥k:øŸŸ?²Y¦&»gÏ»2œjá¦ûû䦮ƒ¨ölÅàýr7ØÏÊAÚ,R ¦\@ o1´†%oeõ”Yw˜»ÛüwMl½¾C…'Õ¾ú-WߪÒ@Ð7^›—ý±Ì%¯a¶¬a`1¬ˆÛ¢ƒÙç$g•r/á1ʳçv±÷ù"ø*Ñ,&y†ì7|r‰—ÔÓŒ+Fžk{g­~hº¾eHƒîgfÓ=ÚÜÆó¹ð¼°v>ÞØ*Ù°§U:]kXAëA'©8dPv%¸ƒ¯dˆú#Ãxv½P±ú—¬pžN>+…î •%8mÄè„ÆL2P/ègcôÌä|ÑóÐrlB|2Ét` ¥«½ÃÂ¥pfõŬsiqÌêJg@®çû© ØIH¢ÕÙ¨¡°4}P™£†$€ú‡qS3b:Ñ©sƒ†š´†(õÅbjrï¶sN]_à(ì²YÖ6»ö£+Omwñcï|Ô© pª?Ô$X^`—2?;8>w‡Èqde€B½:¨íKWû}sÈyv¤¡ÙCœÐB ’èõ IÔ {iÙOO©Ì!›Ò E’ôƒé&H±ŽÝ¸âôîƹÀÕarL±ûV”øŠÍ÷«oå*5µ»ÉV§Øæ¿±ÍŒ\!Ó¦©vö%=Åâ©›}7Aá­fžóf3”YÍõb=(œÔ"fŸCØ º|/wAY>[B¦z×ù¨1L±Mjs´)Ù1Q‚‰èƒèÊÙà™ìØH'gúû¢Wq”æ÷ö .‰ß] ËËÁΧæ@ï¥}”k»9ß»óåZÒSù84»ï2Ö³ˆÜñ¤3„ë¼ó&"p®Ç I=àëEÆX¬ržnÀ8ô8íû‰Ö5º}éŒQ­=§xªþÀl_[J®ŠœgdÛï¾GÂ’D “Ce)JZ•¢ µ"°‡Ò/¤DÀ w¬ú„ª–’ú¯4äÿÝÔÒáiN(°¦U'M¾”ÅÚcj@ªM`@Ú¼ømHh{¢¿_|,ÒI#B=™=À!ÓûW¤ÎÖ´r¸…/3MŽ…ßëtzìEó$·‡Ïlñ™eQžä ±õ‹ò4™•?(Oð^j¾xO@fkÁÍ{7ØÎçìgåÚs Ã@†1Ú- ã•Þ[ï“1‰êÖ…’AJi^EÆâ1°gPË­ 93^i\b3÷—öÀ`a¾’K µö,´_ð  0ºç Ê9AñìUˆ„Íî1ÀÌ û¸„ÚÒ€>3l¾O0‚ƒ—û5ìÚ!gl]X8yc« †[ÆÓ£2Œ¡º2Œ·ÙÒ0ÞzÕw¦éÉjNˆ…#]¨b10/ǨFÂÓ Jèµy+N3wx›Ð´l4@6Óå!lœØÔç÷‹ã©‘Ô_×qT¿0CÆšx ‘ӧ씯 T-u%Fêë?OI\S¾ë‚Ò*Ðó0À”ôÞ²¨ðsó)`œj{1)Ù§0ª”ïà»0Ä€•ñœ°î…à}1 E©äLâB/WTF~¢¹#´7ÞbÆ…l l4vsÑ\ˆ}LfQÿ›%»±,ð‘÷â5|«‘Ø 6ã›W»³Ä-Ýݘ , sN.iØ=1ˆ£Ü©Ÿù©Ò]¯ÜëVî;l¦pÚÂLX½¤ÀßK¿WÎãYLòöÍÀ,:ÊÇ5tƒDŽ÷Á¤æ ÔZš¹€S &¦L>ËC«ÇÓEc@k =¬ÑðnCóŽNTc}“¥*h/ÿ^m}ïò-Ûÿõ¿Ÿ?þúççlE JÆ|Ô‰îTrúóâèv´Ñ/ÉJ_óàbŠ@øÝ "(ÓŸ‚`JK!7d‚”04R©njÆ Í°!kÝ$þÇ‚ß «i2ƒRSþN¢ª³aœ‘lÿ=”ªã­4íV17F`«OW¼7T¬¯,É+4Àâ.Å­~¿8ÆêìkëQ´µ5?ŒÈÜ †ÈD^=21)‹’Ì[êe}íö– åa“|3’È cc$üVf½(  K‹ËZÒÄ|­Ù»µpôÛY^X;o¬ŸukÃí+ãéÑWÆP·¯Œ÷ynª„t wV~Ç©Iò=¶èêZ%Ê·lYÆ]^±åºx=¸Ê–·l +ÑÎÜó³å\óè>¿€F{b-HŸ$ûÝ–xØW†Zö‘b+àT¨Ü¦RÀb~™JÁ!žoS)à p»Ê GÐË!î¹}e úÊ­ûÊpŸm+ãµWm#3µ¹tW))d™:ÑU6xh;ŸõÇV ž,ßÇVÊãœnu[Áh+.ÃJ¤ê÷‹c²ÍR<Œl*3PÅSj^ÁµŸZIE&¹T¶¯Û?}åIⱕ!×ÛV†w¹lexÄc+Ãs_yƒÛXÞ°;˸ëv–!„ËY†p³<÷:~éd Z«Ð9a)ZìW´jòT:H_×à Ñí*œáR£n!îa1Ò1šþ5òK}Æ…VÖõÞ®òü<]çμ#EQîë@7ÌNüÜœ` SׂßK .-™EÂsdk™ÃyÕ Jí‡m€fß+¶È:rÂx‡“pi¨g%’éÿ–2n®K.z6uôðœ®üRjSAü;7׈˜ç+¹³)r6­á¦ÓëˆT™JôAËj[ž×²¶fhÙѧƒÇjÍ6÷8F ÷¹ú¸f¾52–DËÝ Ð×¥ÀÒþøëU ,.”h)+cˆ%ö¦GlÕªSÔi:Ñ6æ7|l>AT¨ÉÁº•±©ªšV¦ ÀµTS=Øp ¤ïbV“eózq«äWõæ]Ítîÿ­ŒßKkâ¿UæNs·1J^7pbJ§V°9iTÈýÌó¢E*c)ßH‹sÛ¼Ø×ÒUxiMáîœ+Ëi à5%§57-RÕqxñwŠo8ŸµkW‰»•;€TrÁãÒ0f ;=rpÑCÝ3ç,EÂ}8Æ.E¨¥¼ìDXRû¿„WK‹^É Ýú?|›ÀL ¦ÞåL“E‚CBÀŒ!„`bçöb2&äßç¨$•T÷¶'ô¦ût]•ªJ::§LVp˜åÖŒñ õdìI…ú˜¿×¡*ÊIŒÐÁ¯+3Ó¹u™¯÷)5Í*=ëÏS‰üyúø£(ÒëÒÙ‚r0™'„ëH×™Dx¼Ì/ÂìEõ=Ð^ÿ€µRVÐ¥ZlÖr‹°ÁÌé®ÎÝCÜ˦½»‚£È9¦Ð¤[f\›ík¥¶Ê…±±9=’¾îƒý^2µYem¨ëõ‹j_5v›Ï@p¸SqžhZLÖþUP#Üð~Ÿ‹PfÌwΫ¤e³J#ù¿  ò¸˜Ç# ·"ZÌxéÌ4Òí'æ¥] ‰8p4B§éqÜh¤R»„tÒ¢\qxÐ’‡£[ÛUŒ(X 'X¾ŽFö¹\ì8Z ·uFk¸°Hk9ÂáÆ$l–Yt]bo·ƒooÛ(Ê*å8OŠ0¶¯ÑÔšã“u›#Lž,arѱ„ K_¼KPÇ[×:’0 |Ò„ fGîPn-³u:/Ù¢Óužéþ³M·Gp-½„µ¾YŽƒ%2íÔÛ±ƒÛICšã9·‡=ZâáÈ•|T Æf·ö‘Í•í%bÝM˜Ï;iÂL¡£ ³Ž&ðn4]E¸˜F.ƒ&\¶FîHérj-ð_çØæÉûͤ-ÃE›©ë}g¼HYÅñÞÆ5­ð„ž0ü´7ë`Û9ë`¹9ëð·§_õŒI„Óˆ…]‚úÅ&¼2š &°µY¼R$l„r•¹£¯F¶¦^Xóg¢z%ÖG{8Q½N0ºø?ÕªUuªš.«¦uY¤ªCä\©¬WÛ«rLÁe夂ÝoÀ×…’-)ò{õ¾Þ«Ð´õf´sËÀpÌ0‹,ùg+MÙj²,Ço˜–ó71vÊEÓ¥ã¬f ôoeàQ‡RT¾…‰RX£<à4˜ܹ!ëRôˆBdd3T>Å%°G¾Rµ È­UZ…51œÚ䥅Š*ñÕôï`ŽL'¾Dp‘Å¡EÆRJ]Ãd~1’Yò=¾ªúäK¦µ†ÊTÂ&._3½‡¡ õ9¤×&wž7è !†Ó¹„^/´Y~lWÞ*‚¥‘\‰èŸt°&$¦Vº°f‰UÜ­C9áRಿîP 4<ÊgÔƒ3KªûBýÙ÷ý½-ÅŸõ˜BÎ6†YýÈVjTžèMm ž4òóŸ`¶ <Ül­FݤÉ)´kº|7k®s-Ci¤ÉW]©ó Oϯ͢Ê5¡™fgl%¿A”H4Áô âÀ4ÒÙ)d}øîİüm·¥°gpÚ¸ºeˆß\ðÓ|8ÜÌ@‘`Î} b¡PËM"ÑX:•¦Çª}¼1u. YÛüp.Msî@õrf×ãÁ;\,®Xâo~¨D÷«ôsËðr>!DÕ ÛP,Ò»{Ô!¼GçRÔ²£)mcBÌp³ybìÓÔö¹.1GÑ-U“;2!‘5í^®ÎƒÄÅ|Áy>®ÎƒÀ~u'Xíó~u>æv>ï<|¶Ûyø#¥óЪp-É׌] Ýšóy¢òå©|cÞF­ï;èa\¿²ïð ÷ 7=©k”ö¼J˜VÆ ¤5«YÜס2®Øü%30—××­ÀŠ·ñ ‚\Çì¥]™‘v‘À |.‚ìMVâ$ð,Ç$ÀÅñ‡„8@wG[»t–ŸL/8¯åÉÞ>ÍÇ7ß>ÞýðôêíÓ/¾ûÍøË¯?øþÇ/ÿþÇÞÿôÓÇ??½Zè÷ÿþÏÏ'þÍÛÏŸßúøá‘¿}zß=½úòôå)<â#¬Ÿwÿ%ø·øí_Àþó(ß=þôçðø€5ïþHéƒpêU• !x‡XƒxÏÁžãz¯á:#Ž˜@>¯œ~O©ÐÏNî=_Õ©ÒaŸ‡i‚÷eX–¼&[{õˆ7~¶ÀŠò Z— uÍÖ2x¦w9ÏÀoèŒOzf¹ä†«˜&Ç^ÌóçsËuê–1÷GE}è)>^La'‡´±”;;9ìâ@û™ñEþooc¥B:W[,0¯î$k³^è%²Û³‡)“f·=Væâ AÞªí uÛeýÃðKœ7²C¥õÕľúw <•Îø2# ¦©‹ëLCÀ§Ðœù>ïgà½e¤‹í̱¦K·%±ŒDÂq½ÀÆBšÀ°§$Ì –‰º'×,„ 9lÓŹ+xÉA¯¼Ì]*`g¼ d¼VîˆÈ¤íX–kº¼¯ '0q—<{!®î˜1֪ΌÕ!;ï,lLðƒàj™1„&`iU¦¥ãC‘%’`U6›Tþ/f ¹UÈXÔ *·&-zÂ{Œã¢»\pNðHm‘a•‹µª€y!𳕇Œ#L+já]34†ª…ÐÖ£,Eª4*“\vsWÇë6Ëë,0U)E†u!ôl ø¼´žËÀ(rûkÎHÅoSñ°dƒk´/0” ŠÈ^^÷Y@'N}>PæÅËh¢w”˜Æ(,2i1WË=µ}ËC î¾A‹xjKØèƒ9Ë(ÄŽ‚Í$s«ÆÞôš ¬ù ¼µ¢baöÔ/¦p”@¨Úß#úØm_Òã¶êïq]KuOXŠ’‰„Ä_¼ý Áô¬-™ó¦(’´8¿Vbÿ§ŒKqyõÜŒpÓJƒà8ç¦VÁ þCÙL×›o…›Iäe9@œ´˜-Ð=ÿKDÐ×PZB–òzª«Ì³TÁbTþÍajMÐÚ¢·Þ”†æÔ§€»Š?ÏCÉ"Üv߃ª^ä œ%@ÇÖ]$@M¼Y5GšU9¾—g¢{ºÂ"K„’/& ©Ñ(Ì% #—ètæŽoÄå›Z«=¨[‰K«.°n0•Ç‹uK’÷x=þÏ4D¸8š1Ë>.P¦Vaº¢&£¹4­îãs­–µ×й/øx1•Ú/¿p¦µ±ûÖ$ÈK’A³.–E©Â}òž´;+`%%MN5%pÌM§ð¥ß˜ þGw•dK’°+f\÷6ïž–±d¢zØTý§G:Àƒ,¹C{¸óî=?PNsãqJ,íEK)\¤ƒ,ªÛi±^ÜZiŸ`àá³+žÛe<¼!á¯+œ¿íîÿïv;aùÖ×¶,‹EÀ`0.À-µ|—ë½-?î‹‹Ÿ Ñ„šÁÜe2ªª+b᫲2qwÃ2ð† 8Üwh‹tÍMµ”Ž·Y*à»U.Q dçaCÈHBcbB.Íá:à~Çqxø”f¼C±*p/…õ†w8‘µåËnòðeÝKÖRjN÷4ÁMD({§ŸªÏríˆçã„0óƒ“àrrþ¾Ù1hM},Ëqq;!Ø.aE9@só®§ê]àLòºÏwתU%Æ  ,+6ë©/@ãž÷”‡®8Q“¸tôÍ·ë”AËÓ«’sÛGû0-A*^DpïXbH±›ƒŒðhú&à'¼/™ÓÛ <¼7—4^Ñ ®1ÉÓÇ“‘1ö¤ô=ȯÕíZ˜Â]*A+…¿/žºü=ø™¾pÑZl.µºÃÝ9ŽE¹U×Ñ4ý›Éß* ¸Ëb„~*O^%ÏcEB^e¼°{-‰»þY0sľ}òÐ[+̲£À6+ ¿ïW> jð¼È”URøôÈl‡\î[`d¶ß?^uû¹ðü¶^‰³‡=uÇ´Øœ µn*ìà­[­Öù}0îâáV/­á𪡜ÜEiü¬=7B1uÛ9þdÏÛ¤þ ÷8KX-0qãÝ€¾«%‡6¶]oki[{/Âæ>— reS>+JýˆiäíÎ]Hç:ÀæëêÉ¿ÁÚl7µ½Èµp^7åÁŠ#èîÿÄ‘ðÆy]+FÐÁ:èýF)ÐÚmƒ~¬\â¾oÞºCYºîl&¡[ýÔ™²V©z !½‹l‡‹‚FÞJmï÷³5òeÓýg˜¼ ¬Ò%Wèog×Ô+Cy»‘ ñå[Ã{{’¢h͑ӎ¤< ³k†Àb¢ÐWm†@Cò÷e5{¿/¬M nüIЭ³™›bá]l±b7àžõ£×’3èÓRŠ:‰j%¶ÆêâÓÍØ²j$/èÑÔ d \ï°E#,*ÎòÉ˦^Á Njµy"Z<˜¦`È[¿ì»5wÆ%KÊ*à¯?Aƒê§•,ó¨uÒyÖ'aY£ªá3~.¤û½n0°:5a«|ÔoCÏôuxøþŽë?Ø`+-³¸?ÊÑúï#9Í#/Û¢ŸºdO‘Úò4”JU{󉢆I7È!Ü‹”Õ‡Y°Ù¥°œq2À˜*„&à:bÃC[ˆÜ¶¦±žkìWyîb¢Þ+\ΊUî'M y¡ÞjEÖ¥Dâ#‡;×ö°ÔT cK\Mâ;¾ça—‡A-d2€è,¶“ù‰p% 'j‹dý|Õ2¾ë<À¹­j,>¥O;ô½™-vd5Û/l™”Q¨¾ÜLùx´Ô×ø^ùc}²Ñf}ÔpõiZ’© #ýÙÐ8z°¼pûØ$1°"çäzíØùó>Eœw@´-8ëÑð—ˆ.óE°¢ ]–ËK,Ÿì49"¼FÜpˆ2ú.Šp[+š¬q¬Ü,°ñ¬æÆ®_¥FÊ ÁçQu1YXB€ º-ùøµ~¸¡•0$£$ã´xë…V³ž‰t|‘uîz‰úv_Wâ80TøÎó÷¢<Ü ;ªí0[ÇÐ"¬É‡o¨V÷ üŠ·ÏV`Е\LP 0¤•2ãXÓzìÛ—ñT÷MÅÝîWÔ”-äì=+)'po•ãÎf’åHözË”Á«öå®K¯[¡3–>4Ü;-"ðVø,KäN¢õCïŸLxºt‘ÛE~lÍô¸ÑÂ}â†iÚÆÙ/@©;óðŠ1Ük,ñÆüH€¥ƒßaã$…»hð0LfÉ•ã‘$Û a7߇é®hµ NjxÇue;E_+£ñÑ‹ê÷LëôL„ã6eV=ÞÆ°î[ìdJßfip€n3q°WÇ:¬oO‡†ï=Ÿ Uàk‚zF0¯aåa¸>“®hÂÎ*hË^kÆÀWNþ„ã¥Ò´-¤²‹V9Ýe”ØÖRð8Þ§ d¬E÷•Ë·]§â öÏLUþ”²íPÌÕò˜+Ê®Èóµ¬Aôæ¢Ëòªƒøã¶•Z®»r`ܹc×ëMò`´-yeõ• Üic´K_ú˜ëEîœK ©ýµW}$N€ã9|›W—ìžË¢ö¦Ú«Õ¶’жK`¶Ág@ÍUÍF‡ HìXªïlÛ¹Ž`çšÆyp,ÇÃþ;H<­”É“wõ½'[ålÎófÎí¶á…Í&¹3#ô–²@Ì^<Y|ӟ5)ígãU¾•ÉÖ¹Õb„X¿¾j†\pzÒþùã(ýü1°žó"Y 1/ÙSï8«[ ®AgåþÁô.TK¶X¤a%w¶6u^ëÉe€»5e½þâŠØËV vã{«¶žù ̹B÷X¿m+Ì‚QZøu÷õcžÆ÷^·^÷k i-^1³ËPÓÊ „T‰ÞeàØZ#JåáaFŸ6ÚT(;Þë*hF€?ˆõæW[;¦ªvE¦,Y:s3{jƒ6oÚ6ÅUmfÑÐVÓ±É<âeÅ ð7áÕ’[Y®ÃVÐ{¨ tÁ_ÙWï. x³ìú(‹Ô¹©tГáõ‘e}( †—ž;lî]¹ i ¸¶–R~ûñ;PpmÆÞÔ[QsiÕrò‘ Ç^ +XÀ[Èñ%7Žv ž Ö@½¸â…—Ø,>ŽEý]ž\zp @Ï ‰Ù¡å8p¯\^ߊÙû)E'Ø0¨hòûÑ W4ã2°Ïb¹‚øáÓƒ2äÀZ}‹~Á;TqÕØãíŒáB/Äh÷W…öÂÙÃ8ónQþ‚™ôƒ³è,z[GÕ¬ÅùvwÇÃÝŽyÇß¹Þ6càh ð,i¨hä<Ë<^¡.L7uHÏÇ¥—ó]ñ×–XÔŸd l1‚—úós,£ÄêSƒ…ÖéCAxibªjKŒI@O‹C¦HÝ8nuë]].ôÝ­6åë`Ƚ$Q¿eA[®óí ,% \˜Ûš5͌ԙ€ÁµS‘ɽ8W±’ó—]MÌ~ Jqw‡’nèŒçmí¬¡2jv«ÁמŸuä. “Ó}…J igíÚÐuóÎHԨ͢¬rÓ€«ÚHåi›ªóÙªÔ9ðÇ‹VTÓ0<‹C5ú4J-m>\aóª)xqêR=7:†ü‹*l_´î{kuÈ ÙõF ^ Úð§R>$ÍØd…ÒS`±mì8\È_Â[]Ä· ßÄ+xKÙvšç^ˆ‚±.p•p»²ñ\8íNÇ[,lžÂG—døØ—omå¼ :fÅž?4v”MðFL;wxzÚ~³PëâÐMC·mžÝ\rü Cüêr>¿ª¤0CØ6X¥ZÔBæ0ûÑŽ(Þ«M<ý7Ê ‚Gg™´è»MÕ£ ©+ø•¤‚vû¤ø õë¸IËŽc´# >c‘õ"£Øpm»z{xk) „{ÄáËÆ)1-Àå©{¶‹¥Úïµäz±™tñ30Î3‹y˜ßÏØè¼@ÚVS:ÎáጂY™øé<^*Tȷ·+â­á{íU8ÀÅôX©l+ò÷³¿ïú5ºN^Ë¿så,™RÛZì(wÝ ïÃÕ@pyÕ|∀…e̦{x"wÏ™rh >8Y{vËÅé¨yvÔÐHéˆZ÷ƒm¨RžRNß…/¾Yz ɸ‘“K§ÏSÉŸh®ácÏèr?Á÷ÃÉó(lý¹$¼ô’ìbƳcmc*s˜Cùâ.XÆUV'¸CMLŸ1e5÷§yµ ÏiƳR[¤ý'¸°Ä=žÆÝ«U~Bs¾±†¨Å×| <ƒ¡Ì¦j¹°ù…=´ÆÄ&rT>ן×ÖÉ9FºöÖ> Ô[Ñ2ÌÁ.Aàyð}‘ß÷Ó–RvQÄÄ#-HìX¨µÇeçÌ…à)Jæö 8¢È&låКè žQ¬/áŠðÄìµ7<ÞÍgȘ`¿»Çý9‰C#ö Þ5]2Òl›‡Á t bÊ ô" o[ à6¦ °šì'‡ã€žò`¹ü¼àt‰ÍïU–—ûæ+C`¤ƒØ{ó¦–óÆq¤‡(IÖý¸päUΙw¸?ô«á<Ü%fÀályÁÙÓ(Èjn+uï›ÞÔ[‡­g%=Ø2>áXöôôjv§ fEl‡Á½{h€»Š³ª+I!W(•šŠ8rÅÇ ªäy7'¾M º9*®9žÏ¹Q ŒvŠxpºÒŒé/B8¾Ë`„omçñ{7rাíÞ*1,mN(LæVOêô¸£‚lµ8\B|ƒ¨—¢@×X˜®6bkq] P6€àqæyÇœ¶•x®g9ÁÙÉúÅ…-äÊ;­J¤Â…Ù£þ†s{ÿ7 \ÖØ,˜É#HÞÐ ¬(|o)5€_6ˆÞ.!aáî¦ì–®÷daæß&1ð6Œ=¨™ ðÔs4ÖÒñ®wqŽÃ%l øX­j¬«P|†å–. ÒM†W)"7³,ìZŽøò$h .;Þ-Âv§À-‡!,t|ÈŸŠZ?ªáá6;/„„“bÂñMƒù»âpcw¬Qõ*BD äu¨©Qewf+9nc)¢Ñ–¡¶…à&x:zòÍ-ÿï/¶i3Ö¦!-?>²ûùt»Î·>UyἫuR) qnø´Yïà{ËÃÉ.È´mIºâøýâð}JýñOxgGíxÓ0€>´ZôGÛЭÝéXëÜ(«q=‘P‚´¹=‡²i¡íäàˆ-W¬+«i‚ƒ`? ~öíº^èºS`»IÚ¨ d*,„ðUSˆÏ»OµÀ«·Þë;/&4röâ/ÝÛýC ÷Üpw™Wâ`®ÀQ?öà|ˆßìºÿÁ?ÛÏ›ø$Ã1•Ç×LµcÊÁ‰fKX×èZ­­‡=ØŠ€KTûg£VüìA²G1íq­ð°+;iA®8æóUûPÃNð¨$';üåmglÍŸß¹]x~²ô-ôâGÎÊTÑ ÊŽÃoìÆ×ÕA+¥Š{JÊósÙ‘l2–¢¾r‘V}}x™f†gÍ(d¿OöÃò@" šæÌõ0…rq ~7Ô?Ç ƒãU˜ڥχ»µniü/á}WµôzV„/vT¾×p<¢17`7‚^¸oÚN] SI†\äNΚÛà/Y¨Õ’I†ñ0ŽÉ‘X¹jSXŸ4*6¦ÎP•"Ѧûõ ºd*r°à܇ÔÃ.18Ý K¿¡¼BÁŸ ê K¤³÷›‚éë(@VÖ›4b¥ïhªÄÕC‡ï°ÏùöQ³l^ ÊŒ³[êèËSôÈaoœ}J²áÂ9ê ™¡Ò†s¹üÞgLÖèèTp|D 0¢Fè¡áE®ˆhÛ\= îýX #;nKöNÐ%ß¿¾âý}¥0¤wÕåûVêi„î´:Ë"xgl€½ÅàEfÊ;pÜ »Ë¢™ýèi¬ŒÙê$¸Ç`ìOË8ä"C±›5†öܺŒ­óÅ­ŒÏo{½Ït·µUî7RùtP 'r…,f5¹£{g'07ð™M·}½Šw¢:G]o'ý—eßÊ:8§ØPÝøÕçO³~tM\ÿÙ öC8¾ÝúyåùYÉ®ËfÐÀvžýûÕò/YYY êõXÞç µ$«Fô|Ȧñ­á(MÄ¨Šº®ÏÖ›K8Þ"ð6ƒÕ• £`#1eÖá–óÎŽ0lfâ.@¼FœæsÒÁáË*Û½ÖX÷䂊þ›=ËÒlU5ÑùöSÕÚr¾º çºËmõÔmŠPÐ\Uý7¨F‰Plž+ü>›ÞW;šX’“Ñâàþü]K7Üô%êLg©Ø¾ÚùÔyÝ¥‚Õød•jú„¼¸ù¦C°å݈£Ài<ÙÛ£š]Bt…Â"˜ \YæhèçÝ@Ÿ]øªºm+ÕFýF-MþVù‹?<|–ü*§vùuæc¡Néƒ=»÷¥b;Uoîh²Ç@SóíuÕ1§Ö|»@EÉœ§tÕuʃî#Iã {QXXoºe÷öW\i¸F¡²´áÚµ) þQ ùˆ9Ð_æ}ó 7kLY„ËÁݬT¦l¦rŸþ½ o¬:¤]XC8 ·.mûó që¾Aƒ>¤Nh}ÏžòpáÎbáµ6hËUx¬šÁH±Ldü¦þ±ÕtÜöñÓ¶ÿfXW„,½rèbb­E9ÌÖ©¨{‚ËØ–±íe¯Î°žêÉ€ÃÚpò18w͸ëïa#_ |£Š­ìa4Пðá.¡IJxÝ„±p^ø¿0·Wî!ÒnC‡ô A%šz€ã4²3Fú¾° Ã6ßEN endstream endobj 16 0 obj 20423 endobj 17 0 obj << /Filter [ /FlateDecode ] /Length 18 0 R >> stream H‰¬WÑŽ\· }7°ÿp_ØE3‘DJ”Ú'{Ó‡´HaÄAQÆÚM]`7Àv"ßC‘ÔÙ;/aÏõ¹ºE‘‡‡µçC".ÛõÕ³¯¥·q¨Ìcëµ§ÃÈ9o–ÄÍÁ*ŽåR jYæ÷ÿºÊÛ·ÓŒð¡äÖí5T¶;ÃéÐDÄpØÈÛMàÒóÄó¡Ô63’ë(¾¸Hvsɶ2%¸z;ÖØ®ûBJÉ]èT¶‹nM¯Sx-)ÕÏÉ8¼øäNSîNc¹[Ë¢œðS37º‹½É\æ›r`®´oPÊ0¸ê™ «ÃBU¥ì »+ˆQþÌîÍñmèÁ‚}%ñ¹ œKíöYÓP߬õpÃp)EŽðS;q0µ”¤Ø›Liì; 6¼Bá`NÕ@&©–áZ?Pä– „qbéPoÑÀ=ƒDwòÐŒCÏäôkGM¾Y•Dî@jÍ]å:öïG÷tã”Ù¿ïœýâs¦ðªIŽ£ŠÐ‘È‚™¤-oK)æ° ÌÙÃ^óƒÒìdt@öµ ·JZ‰_Š!µð¶‰Órª+weloñ:·£êÀ5ÏÛ~ ¶è ÆÌ2°Ò»¯•(¼¾Î€j}E8¥Ej冽xÕ“ÒÝÈ~Ô*o—<[†yd?Jâð¬J÷¼‡d[Ôp•ö‘NMZ8 Ù/hR“AÄ‹ˆ¥×#¸­ZÞÖGZ‡ƒÖÜlùí>ôæU]Ú¨k1W7Û9"Ó„ÜÙ Œ^8x%ÊyFT£ŒGÆè‘ýòåд*×Ðã`M¯ÉîÁkz<‘§Â8º›š%2$Å ¸õ`kísw»³õÌ$O)Å"œ6Äí#MÅœµÆW­±h}jâ­b飳áMj$äÌv%‡‰ŽH¸Ùxè‰W§]1EÃ8 ‚txŸ¹¦{*ñVG¢RÈAböŽ˜AôÑd™g‘mu"í?ÑÍ™rs#c7RYj•Dü™{èÑòëÅ}kε°ÀɃ7†'ÐÙáNn«öE¯p½Å}.a©wË;`½úa*;,äÖkdxÓ–ÑJ-±”Sñ¬ Ê>Ûþäbªà“-´ d÷¸5Hì >š© °‡')3(¦Å@Íë0àxáø>º+\IÂRj‘D}7@£89°R_<ŒwÕlŽ›b)räBJÙÏFÜN}P©–_9n·EtŠøâ‘ÇpKœâIOr qt=}½·àcÖà¬ÍÁ²·U$>ûòB?32¤)cMG!n¡B¦V c¸~MUüP)ç%j'·ª„CÍï¢8{hÑzž×£ÝXt6+WÅØ)O¹1›Õ¢<à5 ðú¾jà ÓŠ3=ƒltô}·ËÞϬm¹EýW[80›x‘eTN´î”|Ï ÅrƒÕzǹ«bBåsøUt õC`Žl½># º!Ö’›.&Í\XC¼]/‘?(¢âk1œ†§ís®wß$WŠ˜-~$eŠá£QÅ8;Í€)êð SOÙÁ,ìZ½)g/çz ­<5¦È„Ðåd*í¢w¾¸ÄLYš¥·:<"¸…±]‡™¹‡¯iû+\C_à'CÃN ´%˜Ù„Èâ¡?1„Ÿ†lóPH£4™O\ó¿ u¦fSrI³[29<Áž|xÒö6be[“„_ŸìY¡çüÖQS–ôЧÑ,U'YOZÂSFRF+ ˆI’xšj×ÀTg Ïs˜.>;ÛL›¯Þ~óòáñÛ·¾÷ðËö$ÇÛç¨LÆœI/¶oþþøðñþ§íù«W/oo?Ý}ÿóã;]ûbû½®ü£þ£Çð¤Ï™D#­s'~qü ¶õ”ÇÏQÀ ·³ˆëqÇO€K¶ tÔX£¥1Æ4õcÜÎKKd¢O.òίñúK©§p.Çx€sPP‹óâ)nÛØ*á§–qâ\õG,ÑEšf¸ô´b{ž2‹áÏóëR"~6iÇqÚk4 liŠe€sxµÛ©ˆˆÍQzÚ Ì íl+ý³þ›ñˆU± e… Íg|vàù7Gè”cÿO{ÕõØqÑwK÷?ÌK$;‚¤«¿žì D‹@Ž FYÖ:#v#›(ÿžS_=³wæ®mŠdí=é©®ª®:u*w)©![§‘wc Ô!ª4‹Ã"©XHµ ¯O)$GÀóéÖÅÃGzånULã:ø¦T†RP|?—–}ŽÉT¤‚×AéÉc”Tò’1êr+ù¹öu~¶†ÙuCéSª#¸:ÈC2ï=ŽOKAÆ]ÆgM®‡}ÐŽ¥ºûhËÌú1QC ʼnôc€†X”Ü2Ø4f3òa‹XEeî)lÁJœY­Ûª)P¦²¨P(Ýæ}Ž4ç˜UÍG+æÊûçˆ.ár_cÌÀ‘Šf‡5yÔ†¬4"Ë ]’þe)Ätï"ý9oQ×þNë /˜ërTÂ(+ÛJé ÁnJ7AˆV)¤1M]‡@(h3sHöÌ`Ñ¢EJæË¾rµéËü¸!\W¸0s <°"ÙÙ Œ :ëøB:*ªËÒ>wÐ(ò|\J1¸2Ü„¾ùÕj¹‡,¤, YUçÇ>5–ÔÄ*adO*ÓCe‚]óz~¹¥uçëµ?ƒÑWBŒ-o4"ÑÙZ~¸Pð… ¥ipE«Ö˜ Äà) fŽõj«Î5¶UcqÕú®Å\&ìJæFHÕ'’…]ÌWš/4W]KhnÍ—¤oMtqh²u•¨u1•yÖf+?ËŸ=…oxôØnòä¡õ 3ÇWô•“ªagU|• Ÿ+–Åå0 «—ÎýÕ·V0©RÒä'%aî¥K6^ƒ¬]䯕—jMöÔÖœ f‘*ò¸ƒ–â°dEèá(ƒµy¹¼v¼UY{‹¨[¼[ =uˆ6=)(e¯náWÍR®üÙÐJ+ "°M}¨Ù]Âæž †/Zp -±ª˜UfGEÞv¥½`.f}D¬ÖG…WÀI&° &ê[îu®¡+…¢FZI.É3ÉöˆË¤”ÝÞ³Oåh¤ ©^nùåo}ÈI*‹j%¯h¨Æë©*¶¤/Q¹–ši¨š«‚s’À»Aä/ÁnËLættQ¬ØÌ ¾Íç̳«O-ùK1ÜräÍEÏQ.$›a© I=Ž|[»Ö²[ˆÂ¨;¢O.NTN|] ÊVpMÄ=×Ê=Œ£‡QVÒØ…w͉ùòÃé-ß°¨ºULÍþ›Ù¹XÅx٢Ϣ¥¡#Ð1T2W$¥IÈÒˆÙ,4BW3?]J£hÄìÛ pÛ€€ ·=žY°Ìã—žm_e¦-=kŽÇ–Ο½Üšžý÷r«wQÐ œãÅÖJVw±ø`¼8³°Ó]žÈ‹›Q`.Ë¿æe.|y~”D™kŠh*æ\}ýÿ¥ /_  µ*?ÎE;ι½\ðÊé)Ƥ}Š LÞ=Ô‡ô(´a#¯âNEPÃ7^òƒŠ6×8 ?³ˆSNaÈc9L1÷ŽÑ¯oAöZné¨:šÔlÍ—‡]W“X€“ÙçM3J¾Åæ/ËŠ‘¹QºÎ«]Ö®îIÉÐ9)y ΢šLp‚£\]ÈëÑ?ÖÇ?D};ªœ”HU*ÇÐìÂJÙ*]¶Ò‡äÁ¡–8»žºúìžúÛéÅi,Ÿ,/ÿtzôâôÅÓßöW¿¹{óì݇ýý¯ß¿ÿþÝÝ鑠ϾÿáíÝ}üñ‹»»×·ß¿YÊ§GNN=àÏw X_-/æ_ßâ¯ûiÉËï–¿ü5,oNøÏʦÎã±Õ¢½ýŠcNIØSÇ}}Á*ð»Ó¯¾~úîý7ooÞ¿ýñîõ»Ÿ—_!ÆWñ,•ž,_÷þÝÛ»–ÇÏž=½¹ùpûüÇ÷¯ùì“å|ò×ü‡ôœyÄ%ÿœn&ù™K^"'ÞNiùétÏ!Þùo=€¤¿>Ã=€^ øw—#VÄ`Ìò©‘ýRWÕªDé8ºˆ–‹7|vêмQbÉòEɹ‹Ë·§K.ÜÃyÞóB¶KÊ%œ$fÒŠcQÛØ(‰Ÿâÿ¢¯ê¶¯>§Ÿ •ç¥InÏ ^îÒ”C=CÞ]÷mI±3¿g\ËцÅ!Ì’ˆ£ŽwBΜÅ+Ï“¡ø¦Äù|%ÃxŸ>ìí\ûÞSmUôЉ[¢QÒ‘Ùù±ô,µ¹ø,¬§×‹ÐmMÇÂ0ê… 4jÜ6psìÊ?OªÅp’rð“ SÄh¼R30§TÌD´Z(*k€ƒä‡n¼çƒÝ4ÿ¹ìFYñ¢_‡)I;ÇÎ’pã/@þ6ˆOÖ™ž˜d}a|P73N6ËhtÏYl¢>Æ6Ò&CÓ2(={2T–2Ø«»\â<Ù6jÕ ×2£Ûä4³~?ê{tYŠ@±`¬ío*3v!f˜CTDÌM%@jd`ÍE0ð˜§ÏuLEŠ~cènX¥0‘?‡®]™Ó¬.bº‰ºuMºÁ©ÖU«bGÉÁÙÎõÃ=]9EYɰ±5*kº øªá=E Å•ìÔòäþ¸r 9K³ù¶£ \È Š´{ ´Z€X3Ë(úᇠÉ}9ŒÀK•š¢î}ÖùÇšŠK,àI¯ƒ¦ 0hNßc‹ çÚGQl-~>ZDÐñuÔýûØ»ùШõåÐ1/ÖT¬DPE³zAâUè aÀz¹œƒ„ÁjààB^AKfGK2<꾊¨Z6Û9ؽÎ!~ÆjAE-»–5|[jÅ@Vä‡Axx ¬µR¸ß‚×9ãEÛÞðkÇkU¶ã*Ëb`Ô°¦ØÉ@[fbh¸ÓŒkmo±V·t É-Ø$sðfú@©ï,4#À19»ûï8ùÌ¡É-Év>–ª_|–OWP‡A÷¥î+ã­5ãÈ^ËX™À ̲:2Ø1’®ÜBéf»¢W>N²Ð#™ I²`ÉúøcÙØ º€é mÄnAóY°¾aU+ ¬Nf€w´4¶ž´íð¹â6Ž@ñ¬ÏÊ`k}ÃF¦žöµÅ%þ©+FËFŠ-÷•‡Úh5–ŠL@wa¦3®’JS¶:Ü*tZŽb»YµõÙ‚ÀßçæÞ†TÖG[³%Øå¢Š7(ùÖã.õFÓ6…'X|loë'.÷JÜ\›Å†{y»Òo¿ÿÅKÌÉWpÍ~ü;š»°5º~1ußUIš–KA“õñXí×þa¾úðçx—Äžn5’W­*®l’`7>Â>—ëN¹s³–'> ášÜ¸Üí"È£ö $´jãð0l0¡Ïxmu·wõüë«‘ÄL-è°œ3¡9ô 曫Y,M€>X^AÞs:¯Å­Sœ§[µ Šj2l†êPö-ÔÏÁ ¼tyÿ÷dJŒï°ŠÖb>糯ÅùdÏ® HjmäÕ8>gòÙ˜bå?³9ƒÆ9XJ}ü¨™ä ¤ºŽ>,(N×ïÇ–êc´/WŠAÖ.ÇNHµ]Ál2®€¸z÷5šcÂ|HìK8]ÖVÓuvFédÚ .©¸öš-îX˺[^m&OãGªX]}F4è¸èpÍ™5‰UF:úiÚãÇóUˆu׫¨?!œQ×LjʅùnÜתyþ ýç¶éf3Ù‰"«Npš’{r‚²8‘i¢WÒn[àÌûNíËn9•™æAÅ,ÁvpÖ.§2å(^‹ÏAƒëÝ»Ö@×ûaðãÔ†Oént0j£ˆ§¶µÑ»å[–o°ÛÙ8Ídò?} ?oO¶„;|›ŸË˜žƒç8¶—Ȭ±1€N#ÝX#¿_‰ßãø±Ž; B޹Gš`ø ýJ¸YŒ=CC“`Þ)`aõhL,p¼çÑÎ|lS%Õ l+!˜s}wN­àæC”Skžõ58 ŽÊÖ:††‘(Üeºs%„÷ûš ´  ×—‘Ì*BX7@Ä'‘Æ!OGÈŽå&´)ÖïO†rs½³Ξ㑹Z> {üؽ(Iƒy/AñÖïZ‹Yפa)$s™FaÐA`Çü\%¤¶fà¼vçïžÌÙB0„àà½3~·1å(s¦i}Ñ„ÌåùÄ­[.ùçz~îq™ñ`Ü6›´7eã5<Å"V|yJ4UÒ¦'oÙVQpegc@âmœå ïÜe]a ôÂpžM.:sO¼((}8¨7,Á*îC­“ÜOqŽÀêþZí••R‹%ï¼µwdÎÇÙó[at‹ûPË¢Ö&LíÓŠ¿G¶Ó ®õóôtØzv‹œ²g©ÙTÑו¯}ÍçÕºb™`n ÐØè]p”I<_~‰ÿ«–çÑßú.#S¡¿ÎíªâuyW`ÞT7Ï#85Ì6ÆéA»wvËÕ‚v_¨¸r™Àß ùï˜HEø%pYhw~ ÅB±£`X½oµ£9 ÜwÏ1œÃk¦|™GI£/×Ä¢øs¨æ~v*Àµ¨vÆ» ÍÞb4Ž G˜4[A­–ðØ[þê…†‡ÏÍÌìm–Æ€ínuÁ“§6óGv7H’®`Ú Ùc7M‹”žUñó­0hGÔbr‚€*ÝG!3 Ü&)ðýëø«|àl_ÅÏ»€1yÙ©™OС³Äd%õ__{;¢Qi ÆõÔÉð×[½‰7ènoèjiîÕã8Æz•ÔyfK—¶qÁ^Ý‘½&¨ëLhtaÜ'þ€çÌ4 íÎT•¥ú¨9lK®àÍ3O ÒÔë¾Í»‹> ¦hiÄû0‹ñúrÙ2Å1±(ûÿž”dÕIQ2zûl[Ú#`×+àá D›Îpåë´¶%ªí©»R9+4€<º VŠ'WsW)ÎyƒG9©Òˆæþî1ó¾E1j k©ÙÀ ÒÓ5–¹xºš¦ï«"¶suáM¯‰bWŒåZÚ.Àe¦E3¸ƒÉ5jÓ^Aéõì\1Šà8+¸ðµÞ§ïáióBŸjõZ˜vö½ë…žŒy}ÁãTŸ/Ñ‚¾ãToRÅKñ GI¡K†c…q_M®ê‹šZÅè¤bÜÍÙArL<”V𑜠¸ŸÏPìpö¦Gä‰7І´+ˆšb»¦s||ÿ™«¢J·IWpJaHDEå,ŽgOýv XůfÏu ÈJp¯šÖ1Y7Ó^ZË.œwÃl5** T0r**3^ûò’Ø|ì<÷Õ‰pVT›ï}À¿a\^ÜÆ8× ›d Ý^&87kTmy¹ŠS‘FaÐÂFaIuµ¡¡îsVá:½Y(›=̘29SkÍÒNòûp ­G¦‡5=Àîñ'£ Æ2ÖÏÊ$Óè-GÅ3Ë¥ó(îe_ø%YºÇ‡‹Ú¤ä·BAxDZ¸k[9Þëp ƒ®©ö’¶+Ÿ$½ qíJ(_ˆû‚Á·»EÕÔ\s黨”q™váy´ã4Ûñ_¸¼à®¥qQ)d»µœ:~yoæyÙ‘†Á›ä†Ë„N·­”ìðýPp"t™@ª 0—é{\û¸Êbß}†{ž£»ÎÆì»²×Nk1ˆäªLc¥jCM>Yxá' *3oúäþ††U³ û¹×ýà(iÌ/D×fx‘íêqœ `«;É\ëQàð¶ìùYiÛ²ƒGŽR÷ç¬Åï0ì*÷J]åêŶîP†ZÅswŸ¯jW‚ðµ5¢i0>ç^úCeð!›¦:AÞ2ë «tÿ'¼ê‘¤KqàU¾Lv¹u€u7Ú¹¿»J xU=ítgë ý+…±FÎXâD’d=¯vfqñý-¥„)Z¥ˆ /×0¢5´:“ýð`ù–þØO^?ÿùoä-ÂpPг_Ž˜enÞšÚÝOP3ôz7¬ Þßßû{Ï*Ù¹ÞtJŸ¶%É+3Ïh¥Ù š®Ô ’³XÓ]µ¢§^u«Ùs6M +ÕGa^ þ¶[$î9í¶+§u¡d•ìW§__ÂÕ÷1™xú¹R0jþS±—@F! ¨ášd©›} ŒÊêÀÝ;ú‚Ó\é alkÒ¨†i§)[ëP»ÊÙ\Y,x×k`¶å¬Âvä Ó4Î)Å%N ªU¦`£s6£ «jít|z‰Ø+Sp¶e"x™Ý•ÔBP¢…kXöï‹^v¡7>ÔʪÎxá)§¦þø×M²hðÄ×°Ö—4h†ùÄÁ2¸v²ƒIÆG·ÛèHÂJE!3S6”k«iá–ŽŒS'׬LÂ-Á¶u¡ 6<â\zߊ»]+Ž‡â­£§èRVVŽÄÜÛ8qáKðF±„披`é–3¡Ìךô Â*pšîza(`?8õ±ž3ùÅÉÏ%ÌaA¯õTLÅØK¥yÈ”lEбã£ý¹e%AÛ‰G6ÂÅ8óŠÂ©¼:gÔ•_QXU·?@^*Xg9¾çCAÔfýkƒ¤ªüDmºnb¯d ³1T³4²[gÑWÛú2y9½Çd<‡;VíJŒÞóµ¥à(öér¡~PœÝeëŒØ.— Õ¹ööãDÕGõ#Kѧ:²ìM=G¥4Ч‚³½)¸Dé@[« ²9¨ ‘~G‹n8ñ¬K'Цx9ádÎTe®Ýuu%¸î¯&‡3Õg”œVzgÀ=Un³T¬4ÄÕ˜,HŠPÃјt×¼üsÙn~¢RLO•Ãq¡8P"ç!®»”[wpE‚e+pï‡bÝOO»\]Ž…ÇB³ ².ËòÒGg÷\øªËÀ[±ÌÊoyZ×˯½N(¡/¶€—脃n[Àè÷¾úHmÖ½Bö”àÜʶz•ýV²q£ynøÿ•OW¼!“",sf»ëÌÞSÝ4›œöt½\X¬ÊrqÐn@·,¾—§oùÂq¨:„~¸‰ëa„‚Áƒâò×èÅ%‰àŸ`#*Û4ï×}Ÿ^9í›ùtâÖðÈõß¿^‘W€{Ê}ÑNÝ]‹Ì})臞ßÏ?ÆWw­xþã¸L[ „šÒ*\KÎ&Ë€ì’]'ô+4 Ü67)Á/˜‹hƒ_1 ÊzÁ©²‹VÆû]2°Or°y(àŠiĺQ ÜÃä°@—û7¶0wòá§ò1׋.êv?7erÿfÛ^Ž@ó´}cÞ½^ôi¤ŽWËôd<Òùã*I”U]&ö^I ³½Ýõ 0Þ•äüâUÍM±c« —`‘åëž$ÿ“ _=vL)¨3ÓÀÖK3° ¡Ø†UŠãïÀ››ÖtA.¥ =Êá6lÕ¥°Ü¢Ž °ªQÃÕÔ/ò Ç›uU†cZT?c÷ú½‰ÅÉ1áLɦç2æ¡Ã@¶†º_c8—åZÚAâRam–àþù—ä/ɽ¹5´’]3—é ɋ{º@\÷÷û±•]ÄË*SeÁ¯„Ö|¸ÐåOÙoñõë»­-âÌxnPLñªW‰<ãu»°:UÓm0þ_5é×çÞɼKòáËí+“ç*“…éŸlˈ±–öÅòë n)²è¿\ƒä ÂUNƒg*Ø¢¥ð,•Œ*1”VÁ>†k5}›p /'"©Ù Kg‡frJ<—9Æҹ³Í«KÍÈÙZ”_ãû³#ß±MÛ:l"ð’¤jpÉ}쎄N9£SbÈÏ>ñjYpT7¯lA/Å÷ƒÈŸ>Ør?p›#—j?bš5íÛâ]à ¹=Ùø2ð‹!ëÅí9¬°¥£ ü0»ðËÈus<•¤¨+3ÎÆ ™s’Ìn'¬åLðeïÂS]‰/Êù‰ Ë܆ƒÆ¬TPéñËla¿Zô5^sñÖ°MX’¡Á…e³ÚQwhmr,˰Ûî&ß÷ÊsÃï0 ßÓtVLMP ÀuÜ-¥·¶Öè#Z©Â‚6-—d«á–0ð4 àb* Pf€TŒ (? ,rn œ ·”äË[à†n—÷„3QdKsÕ‚ÊÍ\·Úb$´þ5;Y¼³ŒÇZnÙXæÄ÷Yæzó÷³í,µrÈÊ«GLØ z¤åÌ[ÃÆ{\ÔšJ×GÌë@ïrM‡ m0l`üÙ»o`Þ Õ#ÃÆ ßYï:Ôü{¦ f*Gí§Ô`î×ÕEÙ–ŠÙœå“A \EŸáYfñQû• BÜ€™ jœ$¯–f¨ÎãP‚lž7YE|ô`ýáe“dWŽBá­x’Æ5Íô´ÂcïÚ’î}™ÝQQåÏz\„ø9d¢¬U,3¯B½K£ëÎÛÂuå}|;çG mëF³ó+Fè:RÚg”OëÂ;S¯…ô).Š­Å6¦Ï\CëÔ|¿ÅOïd•‹¿ÔÞcek„ç(tÛµ\¯žñܸÄí<¹a–Ûx)VQkQõ’‰Ç¹N†½ö²ü•|RáËç˱˜Er¡8+‰–\Up€Â‚j«×a‡ÝSùÃB”dÈãð×»»±H‡³G£?¢S­wF(sËŒIÄBó»è²k2à!ÀÏÝëÓ·œZCÐ~‹Äßtë†ñôhá5¯ç~Ø ÍÓ]*ÆHï(Þmß8‹c*Ôã,Š€Ö©åÉ!ýhÍ£‹~CqTús@Ò"âA£Çï[íóü~ú2‚7à Øê—¿ŸÚ‚åk}-pÆQj-Û”náTcÜ83ob‡Ü®.ýmÄó-ˆ÷E¬œ ~ü-À[+7ÿJ^×F\ü… …q¤Üô”ŒÂ7È%d¼Kyx.áf°–„ñ%0h‡càD~x; ŒÛ†×Ƕgj¹üg}Êuãâ²Á·1èú°voH„i‡)IQ¶ Gý„ö6 Æ-Y«5 dɨk¸m ŒH–.^ÞTvÛÔ¹aÔ<|5ûaàðqï%f˜´ï_^ -O€Ôã`;êÞÎFŸ>*ükƒ}«ø?á€Ùäf"^ðOº–}n¢÷D Š'Ò‚¹°^~a‘”=@-”Þ‘æ*4GPÜ|uX‡Æï{9…çi~7𶵄÷l†)Ãúܨ܆§rzP¹žŒÊÌ ~2*’·3-£"µì+(e dX ©7?–gº·ƒÉkq{±øóQ…oÉtå7ÞR›|ÿžB@Ÿ}ßò{ÍzlmŒV³·ÀFŸŽ _ÌS~ÇŽWÄcÊ­g™Vèé°—`jË›—7O$Î)NroÝѰUÆa.V‚‡>‹ž½ºr‡»ž¼vvRl¨•e\âkAt²-‚QM±õU¬--ä:[}3ˆk5 Z•Ž…9kò¡{œ¿ÇáÚ50,”57ßÃY5Ýî>ìp©`¡V}¾Ðz¸òËÿ¡õÏþM¹‘Œ>ge÷÷Þvݘ–™Üÿ7;_?Øÿ:¾Px”¾H.…H8µbþû ·=%`ŸQNŠÿ$É­zTÝÃiŽÕrM$ïû€Ã£¹ÆQÇB¼÷ªöž‡Ù^fý€ë»l¬ êÌž£[µB)‡mµ’üÚ|+(RŒW0®°œû' œÖUiúÒƒ†X[té2 \þ?œv¾~ç.OŸä€¡õ/·h/V[¨¨?i Ô:s{ùË‘.6Öš¬U3Sl#ÜR=3‹üúÎ9òpö™Ó5]’_»VS¹'εšÚyõX\.c4ôÌïí2Z=ßwÛa'›‡ï÷dªa Šòél‡òaŠÉñ뙈f?«×iÞàgއž’=,KO—_9˜ÙÉ’=ÙnÈ{§b´íN)5Šw¿S%8+Åõxœî‡Ò™rá0@c‡¢ËÆRHõú½­r¡ 8/ ÞJ¾«IË`=¯á)‘Ã)DÛ1¼…ŽÉÀ¿g*Äåƒ3íùžåˆjp¨¾¼pÎ+ÚÌ*‰ŠaÞÛ&†œž«Áò 8<&çá\b§§~øµÓd¥íŸ×´x¦ìà,eå–mùqÈ´‡yö|6¡Æ´°£SypðègÏ¡ ÆÒið´{ ía¢=>àúܬWæôÚ®;?²ÁކŒ:ùh°Ü™§©×çÑ@L]½áðRâ™–JCíXÇ(–’_\ƒæks­¹N´¬Ç=xžÉú*߇·Å§ÇËYÖþM:fÄb)Ÿ}9í¤çô×·6~Ï4|«ÀÑæwøûÉ+ÆH*Í‘BØÎÛŽçpmc J½À òîà+ñœ×â²TÑ:Jæ9j[šÙ|˜g%Áav%ÕðxuofenX¸†Å›.àè=]‹•p¥Ðqͦœ[ˆR²{x9?-œË­Jü³ÃS÷ç¬î°¡oÉårÀÁm÷ ü z+õ¸–…Û\„ 'z¬†ïùs¦ÙÏ%ã»òúï'ï³ÔëíKFâ'~Õǧýÿ‘‡êëÏhƒ= “‹ýép‡¤«7 ñ‰é‰#™zгà"\8BÏ-ùñd½çAÆP="ÝŒcT<~¥^ú¼DÎaª©4”ýƒq=p]º œCø¬cÌÅ Pª8¼ú1xño‚—é–$Õ‘ÁèL€¡¹ÌBÇ=â~âÓË?§áà EÇü°°6€ÒÂè-·˜*Z>¡Ö~<·ˆu –]Ó‚…²2¦>t ¡+ÛÀ+À_zÉ RhÀ®;ôàá4£ÔŒÑR>{Ék£g‡#å´!`õÕg­=9\Uç°Î ©Ñå¶ðrm;ÝQÐë/ÕEÓ厉â࣬BV+¥¬½IöCÓRÒÆGI ö ÿVÔ4P8¬J¡]LàÃÛ ¸ºÚ5"VkµlÃEÀíB‡GÁmÁ ˆ'Æ  ˱cáŽÍ×Ï ŽõmVakDZ²Œëv_ûvMó|Mךï@`ÕÚí.ÃÛµ&y9êi`Í®—Ñ—c~îŒhqºF…öÔ~Ò—!ñ8ó•œ"¾à._Í„ïk`ÜØ³â³×á ¿ò^{û;3UÆžÄízŠÝ,©eÂ+–°<#Þó]  ùÆ×Y’ô6²_¯5Ñ¡”y \Ü{ל@#:o/ÎCƒ×L”»×áïŠ| Þ-©>ô9Òª»®ÅC~}Àª ³çWˆÐ¾eÍmYl/:)HLÁeæCû“`ü¦ØÙ‰v÷3SõI N’ïLsmE€H´ôle³›-N‘Îк՛Y¶\Z°`±|U¢ ‹Þ/ ÑlóІG^¬nVB)†`Ûɱ€lW· 5›ŠÔA¯KÊLã÷Ö ÷奄¸Alc®8ä†Íâ®ñ{[óZòØeÀ„øÀ"q°Ôã@Ûü"`¨'$HéA‹… 6¥ Kã=³ ‡#kþºÒŒwi󌑛w*yƒºo¥)¥ 1N[¿, ß#AGJPë^áÓl‰Dglsga:ßo¦œGåQcSY3/`ÓX¹–¸Üd¯™Ðy¸–.f3Ro KÓ/žR§@X·ñfùX¬ ¥Ïï;bpÚÏ¥<ÿËvÕcYÒ«°ͱñ/ñ—ö.:~ûOŸlvUu6£öUa B\gŸM«¡~ßE€u‘y§SÍ>H4n³.Còò¼ÀSߣ8®=ópÍdÅøõ®C¥2Å"u5¡ãÕ4ƶÔþºðif^"ÌåÌùšt{”YêM:›—ÈèìœåÚãc=Ý&Ó3|ì‹+ 3üTµf2rf®é{:‹[ Q€¢—rW\çW›OñHxý†5ÌE¹J x·k·^éÓƒhu02Ñ`à´m/wx‹úkõNÉ’ÜÑâ¬O­m%zvÁÚm}î&® (ɧËqqùs$ú°Lg½™P2”µ ËtÖ¡¹ö—M³@= 󰇥Mg3˜è鿇s«Å@¸ÍBP7,-ê­œVñç ¶£©n^î)­¢åÁÞz9¿ï³8Nÿ¶Îrªì×u.•‹2~Þbij´°¢8¿`‹¡œVi8q5 ,I‰O-ˆ¸úÚÖàÞc`mvƒd¾gÃ71Ü/¬JlŒYÏœÅ@bá,<û®ª~ 8ŠÖX iíj$æ¬Ä+öØ7Ò2:þº{3 æê-þ nB4¡V”E3‘ÝëÆÙqÓC€³8éÄŒåL̓ÎÂÃJ—·ÀFºÇ _¢ùÖ·Z¼ZÎý>ü¯™Å·ÇûÇÂ)ÀjÞ•$áܯ/Juç.©^uRæn`ís^á=+MoßñÄ—±$È1¢6– r¼oݳãYStF×ú¡tÌÌC0\°UžüLŠÚoNþ̳¦9)Ë¥¯Ué•Í#%CwrM|øÑñÒ €ICŒ(«º| ‡ä’£ÊrÕeø~æ6¼ª¸ø%‘/2¹Áÿ>Ä£ö|ˆPö2=àZL©Pó}8q+™ê9V©â1œYR0ŒI†V’KíKîcàÿu÷HW+àE¯ m˜4bCd8f1œ àoü>xu]ÉÀ–âpµ!µ@›©‹v4·=i Ìü†ÐŠx¸)À×®17öVÙáø×PŒ)Gs¿pÎv€´›½nçL¬lQXX—+óÍBƒxŽ(Ìa¶/‘ìê t‰àç÷ÜYÜRÿžõÆí¾Étêôa0wí‘8[æ½®ræàדScy¤aýŸKé´tº¥î¶û,UûiLC‹1©Šá9•î·rºÄ ±õ×ßsFF<¦ŒûPwÕq.ÉÁÃð íbÀ†u1›éX’#1)’{Ö+¯¤ýwÒéʽ6Z”W¤óàiÍ#‚´¸Íöî™kÛÚT‡œ˜¥™wÀ’2ŠÇ‘zÕX ¥\  ÅàaíLQ±ýô|¿ÄpÎøbl—À}?̦ü¤œJúëøw¼øµolØodž„;=vLšnЦ>±s³Ëal¯‹f[H Ôü'AÀ{Ãø ¸ &FŠ:#Ó4 O^´Xötͪ^ÐH•ð0ýý2M©ÿ¶üºÅR-†ît;ܾ̑"›|\kå2t§:7ó1t,F2 Yü‹e½ÁÏ—G´ëuž…EõÇùÝ-?ÞGx[±/¯µU£îšQ¸Z/9:]&¨…Üóˆî]ß _ð¬ÙxB”û~³¥_mø³ªi¹Ÿ7ÂtÎ-¦„y8cÕ.³:skÞ`{ˆ­ÐÁœÚU ‡Á é:+¹Ï«ê ÌÃݗ‚Ô%úóŇt¿\Jrq,Lð&c~ï&æXž50O—Š‚m$G '!¶hØ •î4㺻¤È@-'„6Y"±Ðá@ÉjàÈTDü=Yû“þC@ÿEü@áJ PÇ0ZÇœ &¥Iøƒ¡[jñ(5ûØ-À´•¿~¿ñg£ÙÖp¤`€²ß¾“ÕÔiñ쯺Á¿z¹ÚGÌ4ÝŸY·ÒÅŸ«T³&Îúi œ…v\ T$_!î™Í»i¬=&Äûs©~=§ÁbÀû Ÿ&¡8Ûú†j.ÿqx÷³UŽû˜b}»ÁÞúµ•â±;k/Íù Uxzê¥zá+Ž{õiNáÐ’QY­øŸqcîs[EH…"™Ü»“×1g"ìB€Ü`Êkí(âý±ª”å<”á«;8³W_ˆ>ùôÕ·\¬yg!ÅAÍ^¿:Úu‰žx‰RÎüJÿªÞEð¡ÙE|ð,òê„„é:ûU˜‹?µ@~0¹Lí sqE½Çš6ª|xgžožãsÔ)CÐpløç;‚ós²ÖìùMtdWýá÷ÑÖÒ~?Û›’6×ËX­&]•·Î~Ë÷!°Æq‚”ˆÐôr{qÚ`pvo ð3<Û«ƒÇ“j-×l[;Æaa•ó*.¶@l{òlÂ÷aY%o º¿?FÐc®l ¨Æ‹gö¤é7†œs¹nö_m^ U†%w"¹“·kÜb¢®j»bøq|ô<îÙX\n—“]üœÞ¼>qvÖ~xÏàÞ¢xðœÈBîÚ2ÁÑ21túÕQ¿þ{›U ÍïµÖA‚©:ÁòpÁöxµš2]ª¡e$ïõç Þrp4àçsLÿ¦ÎçœÝ‡}nA³ƒûÓ¦‡Rç÷ƒT`²2¡ß DAÌ·ØïÃÅg@ŸqV<Á™[=¿WjÕ$ŸoíÉDpMEGï‰1—ÍŠÜh³½ø|§aíSÙ#›³Ne”+2OñŸ/Žyëuí‰\ HÒÏçZ{„lvpõÛh·ÿ{ä¦Úâ†%c>–uzßb”Ô>à̧Î@,Íq,Ϻ9QÍtlÏŸ®ÖÍÔ=ÊTØð8?¦¼;óÖòg³µ=QŸâаž^lØ4L¨Î³Óz¸ÙÌ£@ ÿýÞ!Câr7Q'NÝ£¥n0BâÃFÔLF³ ®¨ÍÆ)å_;¯ 3;í`Îø­ß6÷ÍþµÁæÁ×z‹iÅ ï‚¶“°ÇǤȇ`;ë˜ØÉ“ ÚâqÎ|.ó=‰ùÂÏùÞ@u”Ç».±?:hn…ü×Àò<¤;wÒ?¦§Z6HAŒªú²XwéÞ m2’ß¶Š’¶÷ÝP—ÑÃÁÖ¯ÈÜŸ5Œ“&²ö×='O÷ß®—xÜÍý8$dΰ§ôë(fÑyÅF‡L8ˆiÓër~;··ót“"Ëp,‡wÎÉü¤‘/ ßK¢[¯¤Hµø#¿6 ßA2F¼ìý³¨Oá xyvCë65 ³z–ZŽ¥Æƒ²ã?ÿ}†¼nÖxAæcͤVÙŽ`®°WžÝ›ÚÃÌð6c'X·°mìþ@e˜ïü^NM-<ÞM–ý|Å ¦çßtEgޫߊlÉ8‰ÿY¯Èª‡?Îÿ¦ýòøR¬`**~Ç<ÑKHþÂëîÉ÷é@K‹%éû͈¦£Çr+£én9nM¸0é|Ì”[wÐ3žRÔG·Åp‡¼T?:Lã_ ¤A°”~1Ìíà€ÏÞ£Dº°…×4IÒÕž­ÛzAPša}‰Z÷–I¼¥$ˆkUR%+9`éç l>ôFiáC¶”o¦óyÍb¨É@^#Žç¶“ˆß Üöëj˜EÛ¢,,'Ý[€Šgú ‚å Ÿ n¶øX›™Y`6ÁðB‰ iM˜ ­R^.éupt½®P¦—È,]_9hCtßëÿ¼WÛŠ]Ç}8ÿ°_ ¹««¯É“FÉCŒ‚ƒ„c…ÄDRÍ”‘þÞ«n½Ï™ ÆÎ`„5£åÞÕÕuYµj¯ë}ëÔØ®~XFÔó\"ïÌ™gw#-= Éfó]ÁªÚ«‰ºÚk²Š,ŽÃ"~–e×ør¾ç•øZØA/ºüp´º—”ïEâÛ\%iÛ Îf6î>*vQgÇ5]8bE°&>ö÷´Ò=<»·,’t®ÞâHý,öŽ×@. ³ÿw[êÃðÛ°ýÔ[”¤Ÿ-’I³å~5ÖÌ‘¹ýÞƒNowRÑùBúÓѺ¼ÉÀE§-º»q~ÑÝqm •ËðÁt„?¿×4Ç~jGoøæ0·G·WßÎN~ýâéŸÇë?]½=ÿøéÿùëÅõõ»W‡3EÏß}÷þêôÍÕÕÅå»·[|8KÛÓÃÙ§CÚhKúçÕg¿ÂoÿöãV¶¿lÿøgÚÞâÌ«êÝ(V/û&~kÅ_™QGSÙ,ðç7ð,J}ÆØØí܇Ù¹Âý_Ã5è¬NŒ²‘$Ù*~`Kk›ÈSHJ‘žCþEròÕ…¼ç…ü%Ö3ñlÂ3 ÏÄw#îGÉ`•%ʪ,[ÉÛÛª—½J šIKµñ“’”Ó£$‘¾ô0>LY ç$kçZ!£f@‚ËDoKFv *µØá ¨&ö’áæJrš§¹ì‡o½àÃáì_|8Q³Iz²àx]þ•,ŒÐ—Sã—åÿ¥‚>‘À‰9l#Å´>ˆ$ ç07ìKPH«­è¿„QÔÇ-uùALçæòRv5£[!‚Wí´,NW6²lÆ,®e†¬¯Ý0]l6qî¬2Ž‹’$COSIØafURg¡ÞŸÂ<[=‡òSž.(´©ij㽂ŒÕáé2ÝÌBagוƒð™º[J '`:U”r·Å•!iqB'¶L¡<’º[ ÅD:Ò9mäUÙWºa£ì{„´M¥BàȈqR ¬A¨Îóu‰—b‚íMTyµÉî’à“ èZDì¥:ZÄ€÷< ®™z1\Å‹{¯Žn½“ema{kâ1ÀÅZÌï3¤?/ 1UºaN¾D¶ËÑz¯dUíy• A¢š‡à¤Ã[÷É[šH]y[P5u}Xoˆ¹È‡ 3,L°!«$ABkɆºR^Í<^{-$+“}ö·4 !“¦æX¯:š¥ò“-P:<+áŽ:ëPŒVJÅäB£ ìã’lÁíR†z»ô¢ìî=še8Ld“Ï×™«·•aëŒl™EC ¤³žÜ&}) Uuޤ`¨hU«Ê•ŽM]mË„ÕÈÔ³Yþ‰ta­ztå”Ã⵪£¸Ù ´ àlËê™´µW!®`õ€'>Òð«bÔ)ã @ŹÖF³ƒÓÈé>e²ï[3§PÚs(k°dzÒQLsuZý¹â·`Y8ɱ:•ަ@ÀaÌCS<ãe\é­˜H[1wë3™FŒÑµ.`Ì¡ú.KW×éC è4ZOB¡²ÆIÆ‘ aOUQxZjES®5¥½Æ e)ä ,ð¾0TŸ¬j!ÛeHôhºº!ŠÁÉeDÏ0gG•;!/Ú¶ ÌZl½AI@tu³ÀiÔ²¢|Vk]–gt‰ìŒ~xÚº£ 1}à€À©kÌ«( Lb?œ‚ƒñYeÛ0Xh ±w„³5’í¹@ ¦¨{ˆŒ²©l‡`—\õ!·gáß|R£Ùe˜‚le´H‰$#›HÆ© Q‹¢b,«%Ûn Ú®5†*X'[u¦(—ÌJÆÜ-=?Ä ŸSE ê¥û’ ‡»JüŒ ¢ªåðKq‘Y”t´È¯)Ψ‹­©*ãΡÊvr®€¾s d9Í:¸÷î²Ê+µ´-õÚ“§ äÌnÍ%kZ#ëÖ`äÐT? üº+$µ‚V«I'5ÒAˆš[AMwÝrj·<ÚœloÀâËç ,ÅÔ¦“tOK” ZuQDžÚ@`ÑgÙÞ’­4_~µœ»œÿ…‚qš­›p÷HìP#S;®Í%õÚ"÷á#dü‰UWð¢ÃÑ›C긫Õ²ÉþŸU´|‡êR=~Û˸/u­[~8Þ»‘À‡Îá/_¼þòéÇë?¾sýþû«‹Ÿ·ß#ЯÉŒ¨üxûòåõÇ÷WßmÎÏŸ¾yóéòÅ÷×röñö;9ùùË.GRq™…Šâ¨tŠ mÒ–ð÷6dB^š·¯÷}{‚C’€?ÆíÇ܃·i¿ã)ó‘ýViÿÿ9uÑÉÞ3­b I¦sèÌF¼ÃÏoÀö|/+÷á»™+uñë[«à…Ý ¢À”:d¸ìf—û +—´nBBm $¹ÈÀR†Ÿ„+1‰“,Õ纾o†pÕ9.AÏúç*\Ÿ…ªû÷ÕFÀ6³ƒÅfëO€…ßWä"y„æôÚ‘Økµ÷º¿ºc‰ûmˆ`N =Ó‘I«K¨1¬bÞÁ¬e%"£,°”4 d‘ žDHø¡8` C;g¿Ì™T ©ØJÀDZqC¨"[UçHûÀ²µÜ*L‹í[äxOlQ(IÓB˜ÅÓ­ Ùåæ *1òT­{ï¶{Â-Ö-V¯}Þ‹?’¾î…ܰ÷š³˜XÅ¡šfÌÌä1¤–)v¦¡rApêy3ЙFÀIÅÁœUÔK`dñXv(­ù†}O “®®‰¥kQŸö}bš]àPÇQÔÉ3†ÀŽ18-¤‡-TÑ£) ÚUc÷NÝ“,žŒ)Èúš! ÒØþngË“TZpÉ ì£ö6N þâ}ý¹$*B_.†‹®‚qd '‘€X‡¥¥•Üf{œà©q¸àQDzâÁ3¾[ÈN„²øR÷쇶äŽa&A†úÉÄËH2×L(›ÂÙ7öš…ËvgÐ>«Z•Ž‚[ðÜ= ›…;SØ_SÆrð¾'ÖÉþÊÄqØç•ôÐXAêF»CFÜ‘…B8Ïp!×pËÈãXQUy7]œgÝâ½q–sÛîŒÁCs|W&¿@ÉÁI^ʵùóÔ‰JɸÖk£+çQÖ‘oåYKP<`®Íq.iøÙÒò ro¶5[J=²`ó@.ë6ÓÍe€ºÍAÂ4¡8¸kÛñ$Iò k½úÙÔ‰œµÄI!27J¨4â°q@ª–&40W¿rŠáuác®Ã}DG§œ‹–òð1z©FÌsøÀ=»Ã\5Á©1·j)3AˆÆ€Û-‰Ã®] <¨D'´úèCÚG> stream H‰ÄWmoÉ þnÀÿa¾°z=Ãyo?ÙI¯½ö. âK/EQмë K†,_þú’CÎή¬(mq¾Â°µ~Äá>|†CrŒqV%SçƒóêùñÑYLIw:œ Ó1€B -\Й@Ýs$lhR®ëcD‹TlM§Mdc2q^–» 9rçrbÖz5/ëƒï‚1.Kñ‰ÅŸÅ§äô¾ƒhsÖ>ËZÿE^‹ìòº˜³€5"o:\dÐ8ôÊìí²"š|g3ª‚ †”˜š$!w`¼¸5Å`ø%PBM,/t>òz€PâÛá¿}´ÙÖõ¨…Ñžq;Ð]vÑŠÎe *il¨ ­"˜„*nƒ)Æ¡KÉŠØ!çâÖøÎ;ÃÄX) ×PpÞ²ƒÔáËd»£Ñ•BÒI<à¦Ô=$¾`%¸lœcm!rbpâ²sŒYo}£cbØØTÒ1—ŒºZœ¢ÜA|fŒ°®«ësÂtæh“‹À ÷¼ ]³0Wª‡IS‰é¨Ùƒë’5®¶¦‚!Úú.p©z°]¨Ì¢æP¤ †‘‹..{ÑÑ.óÙ2žP)Å 5Y^¦!3ü>ë jÅ00Ðx’’ ½[—Ä¢uê Á‚õõ0hÜÞÄñ®¼ Á¨!Te8Aô†s·>ãÞ B0‚G­«q4¬-‘Ñ©‚a¨x@›—¥ò`úTD1pœ:a1„êiØk»ßç—Þ¿—ìÞ°ök€'KžìºÔ>ÐC9{¥ rIÑž)Ðë\7’p/°K|r VRœ@9¤A8ò*B§³ceK(dí«kK6ê8È€‚ºª‡ˆÕ„ƒâO¤ÍŒYHF°Ä…•À4M'€qdÓt©Å)Û"W9æÈ S+8¯ñ€9,1Dc2ƒ6X+ 6F^¥é 2†\;^ª[‰5Ð 8Z÷oÕØj×aS1¶L-—²sHr*,ºâšKvØ]ª`1eÁb„ ºG@×À(%40ZÄïïÇG??{~±Ù¾XÌ·‹õj¶ù¬~|ôìý‰î|N1„Su~µÝ,VÕÉååÅ|þpûf½‘í©úYþþ uÏ•ÎJ/°Øˆn+l鬄KÆ#è² š£€Öù RÑ*ªt ©5ÙAÝì¡Ìú.cûl-Gˆ‡èeÿ\Öµ‡!†š¼ÅüW”éíqV'§êÝ;Ï.¾Mïÿ¸º¾Ü<Üß¼žm·ýf…+½ì?.VSüäíj5»í¯U•à§ÇGZ]=ke”V€¿ï>ø|ú±OÊ©ïÕ?þ©Õ5Ú¼{ÃC›ãy‰7+Pó²Œ|7EB ¾–.Ëö@¼nulÔŽûþ¡3•V¶ Ë‡ÁgŽÈbFVüÌ|ÇïŒkGðÈQ_4 “ Ô§TgK›#ÿËeÏF‰ X$7õPþ¯/š·H"ö¨Ì½³¹¨ßT1BB#ÛPsú(ÈC‰v9ʰ«›Ù]¹ìW׸ó7ß¾;ùëm~ø|×OQ—íÁ2£.6¼CX¯qà@ãGÙ,¨aø ½"â4!•i,âqÃñ±nÏ€c·ÂSÈ*aï <£ ^IWé²Kq¶­’ @3ÆQGÊ4uÛÀÊAv®á4¸ððÔ܆È_O8TP8 „GÆ£›ÛÇ:”D1u¤<› RvÞˆ˜±Qiš±í &U:.ËXÐ4Î\·»86˜³é°ÉË©‡ˆmh„ JzϳZ³,“¶1SŸ#Pˆ’ 7Ü\&n‘ŸÚTD TG–£ šÏÇ T öLFgI;GU™e,×/üˆ8UqÞ´¥å:¾5ÜîÀXái$9+Ê€cB½!ð4€gP{#pÐÑe€©1ßyÒÔí ƒŽGI"ßš[Œ>ÐÌ2áPAá0·Èš×G"L…Ä l{ éÐ.â° B¢;o@œ8¬T·»pĶȃd´µ‚ÑüÊsp´MH0nj\ª°5S¯#ˆŽ Æ; ö^M¼š#ùFÑ(TP(TºcÛ×Èë®ƒŽ¥:Šj@ã4ë(Êz,öUF;Œ¢‡t?èØð€£L„ZŠBJ,CÊ<ÌFºžjƒå¶;1¦ää 7r;…àdÅ Ï­·¨NöÞL9TP8 „ÇÆ-´‘ÛG:-e: ­Ĉ› ݨ|â K²F¼‘Ò˜–žŽÚâ¯Üˆnwq/9`\¹jâDS%Å';IAN3¦fãyºßý_Þ,j6Üà´ÏSäÈ#õ¬˜w^/ ¼¾q·€FnEhf¸x’™ o ^L]êJ1>¾ô<™ë¨$ù¡úYœrp›o\Æl<•À,¥ÃRÈuuŽf´†Ó`ÎË´a’+µ{ ¥(ëkµN#pÐ=ÙrMÇz!ФºsÉ{Ƭ õž…bâæà»HU»a0  ¤eB ÍbïX»g8œÀDdXžC°"ƒ¤öêþœ2åÀMÃúþåzõ³a‹ qv&x¹Œ¿9>zy7¾¼^>àßW~îç[¼\\¯?ôr7ù~¶š}ì7êÕæºßœ~íKÅß>Ÿ-—‹›ÙÝÍb.¦?¬×ËsÔÝV}³œmÕùÓS…ÌOÊ£iÅ«_fËC تéØ9ûÚ¿þsç8¨ÜmÙ—z³~X]  ,ñº[M¯æe»Šûª¶—ˇ^½.wÁÅjŸy5üÓfvæ³ë¾™±¯ÇÆž­®ïhËï¿âò®Wßõ³ŸÈJ´ÿ‚íËõf{£®¶³Í!WfÛõí‚}Íñ~»Ù.æË~ ÅîÕŠjÔd™}_lÖŸöZ±¯ÁöùÍl3_·Ûïñ›‡&ÓÈ‚}í4¸¿9ìíj¾Y/—êu¿Ù±¯=ÖX~×%->Wk9¬ûxný¿úsɯ¯Y¿ATïœýÒÑ÷Ž^ß,û‡ÍÙu¶\Üã{:9ýX1¦gÿ êÈã ¡J1ÉxŒ:»ZÍnûkåððИV~§~Ôyþ¥ûDB'|*—‰2kȇ­Gøß³mgd‡jdª8dñT>éÒˆ]ÌâØÄÜË-²LDÚËã™fªÝ˜„³hÒÌPëÆ4á4úÒð’x 3üÀô+‚ û¦½ˆW‚¢ŠOý•±ñÍyß±r ÙRÔòG~ÎþÐįͮ•Da÷²ÿT£2¦è[~Λ„ÀÉP)Ÿ¤Â-‹ŸBÌZ›GUyGU¶—ˆ>QÅá3»=p0 }œfM|‹’f8¡AÁèdë´ým+Ͼ2NÁÖF#«!Ÿô¹ª?ž³ŸðÃJí‘hþ÷=ù£ÚÎvÙFˆ3½°2OI¥öÂ]*áÿ@åa¨VüÛÓh}¿’qˆã¤©GSÆøÁÏÞÀ[zw?ð»„Î’DoÈt»×8›ï ‚«õÙ‰ëQšù–Ó×| îòz˜¬yS¾çñ÷{¶Y(rÇK{Âà;®ß$±ï£MlGW®Ø.“Ï,G®b‘´O~ýsÛÞÀ¢–‡ ¾l¤Û²ÐO\S‘œ Õ7­~i@‡u±¹dÏûÿáñœÎ'™ˆr\!ô¶[¶”?/’Ú|$= é¾"©Ò"$Ý%$ž¶Ÿ˜5† ™ÚOˆ õªòΧoÛ †Áƒ‘uÙMsÚv–çäÎH,óþ†¬ÂiTwVåô>º±W*ôÎüt躯ˆî` ¤Ã1r½ü°H®3ĈhÑ‹©†kˆåÞÝ¡0h~l©þòàó©ƒýbÔ%Õá–í¬Œ35‹÷'±”Ù1òÒ¨ãé]ÅÎ±Õ j ¦bQ5C#S•Ø›5*_dS"Ñ4jH¦´Exm„}=…÷å=q¾Ü˜ó[WhQ† 54™¹ ¬'|¼Íu÷eÔ%–Š!¶Á1е§@í2[E xšhäãù¦2AµÔSPMðß&ý³­ÔÚ—Êï×”‚¶@©”Ðbï¶=8²UªóÅÞ¡i‘éqðM«™N² ¾Ÿâ¼&¤·õq¥ä†£Qxóg3BWdG¼<b¯¿Ö²aמâèYPs$¸U€Äx‘ZDè“üo/ýÙÓ„x =@Q .d7íêAÏ#*ÿ3ä9 VLMÑsm¨.©¬7¥ƒ Ø<%Ìl«BoÃTË5é)R·'!Æà˜0¬ Œ‹ ›Ÿ­FÞeÕðKz¡$£p,:N%%?xÍÙsƒ°l%LV.É”øJI•òƒe2岕2_iJ‚ªÃL®ÅÉ]%Ù "Kù™D¸)“,€07+÷¯N‹W§ƒ…«“ÁâÕéàõ+%jc5g¯š›÷¾„îĪf«ªf›*ȦõÂQ‡t~wÜ¿–G\Î=2é˜+IÖ”n³¬ÆŠÌ£¡Fm0Kþn¿Ý¸»¿‘ˆtƒMq7±xª ýý#ç†?Áìéx`ËHaŽÝC UQY“.ˬ#…Ë2ëH¡¢J‚¨êr +4 A7M³È  †¡j%¬°¸§x÷{Xaîî­`…­àS'ÈQtuàS>µÕúšÂ¸å°ZûÉ÷IpÙ`"ÛÅ~ ¤.8QÒLú”%ÒÛ‘ê+hš  A㙕awS‡÷#,ÔäŸbŠfÈ$"QÓŸYD4 ïÍ2³3êᩆ$GÁM7‘ÐlïCƒØÙ»âº³™G 0š” ¿j ÈÚÃ,ðîÃÑéo ü¾ÿºxï®e‘}Ãø ‡n»câ§Ñ(ð€ûU»õí`„ÁJƒ ôq#liZ@î¬<ÄV¤Tǘ zCŒHQº7jRbKÕ‰k9 ùO(æÌ!¶Âyä€$ÖK¥|aµæÅ yõX÷Bˆ‚©‰ìe= Óê2( ļª„½ÓóÑ·!™~ :ªf¤Úyˆàí}ÖK B6cê?’ÜÔ0y9TIן‚αÍߨ¥d…(±·w@›`hÎûCrŸ,Ó–ÂrXNÿ\£.8E—$ö”E)ª ˜¦  Ë’¾[`¿¸ìÛhFÞ¾ÎËýzú HŠOCbuÁMÊé0›®!Â0½ã4àô=%½6ŠÑeÚô,—o½þåàìÌPñ8°™ÀŸ^“Ÿû}r7p–;ôÝѾ¯íÅûõÐýàuoúìýwò×/Ôì¤<¥A¼{A "Q!p ,‚³³ÝTºC:¯„ø6¶Á{{Š£ö‚-åtßF0Á }FÅ^š;+í)•!®‚Þ#â!²Ýy´A nI”MÖj(PÕÙƒj,hà3zBí‚X7H÷ƒ™A™ª 2û3I„Ä(EJ­BæUÐ|:š›)©4®ä&dwwÅî\`ÿÅ¡íÓwmZ“]/&çóØs}ª%•Q¬&ç“I„cpb§º–¬ ©,&›ÜŒ¨©Cê¤ÀщÚÒÆwVÞCN‹Z”r4%±cä¥!)|4–|ñÚÓa4Šoãl&JÔ¹{híØ^¶^q×/¦…l¬˜¾”¼‡îhäÝ6€‘»OµYÃbʺLl ›åä&7ŽÂ:‰jÙÚ®åeíw&pöi¹h `Q¬$>[Ì3!ˆÈ]¹Æá³hLëÒà¡ wo¡8Ø!Àv°g`­âpë3³‚êfVËÌ‚I †Ø¿ºSÇ#q{HÚŽ²í±µƒnh«8?¤’À }FEˆ_š®F÷)•À3X ‘íΣ L´žoãvÎ¥¸+Ë¡±ÔùäûDkL©Ø”»àHTQRèSUɆ Èº  ˆPJÎåÿ­)•iY@R½ ¹ËÃ`.d7E‡ç&«Ý½$¡ÒÙz¡VëeµúŒØ°3ò|{yÉÈ›óº Åÿ³_e½m#IøÝ€þC'È`íEL³^›Ár®õ¬âh,íăl`PmqB‘ZN¬‡ýí[ÕÍ£)Q‘<É;AlˆG±Ž¯«ª«ªëq`æ§ï+1EI–þ´ÝÒ—~xŸ~ýM”ìqð1/RHÊÁ÷rý­–ë/Pÿ‡w©¿gÙQYŽ*Çáÿ[­F½#ËßS-¿L=ûâ[šÎ·GÿŒ‹;€Äcذ„ÇšJ„]ªÛŸjõ›myRî¼gÉ´XqþÌÏ¡5þpuRðpНán~z§¶eÁ”wr ‡ „øi>IütF¦I”¤PRœôïÅz£¦—ý˜'rD•¼ÌÝÎË4 ;Yu ;™5 t+_ÉÀ4†¦Œlé§A<½‹áŒdáªÒd’“Sˆ˜â\úKˆc.ŠÈG¿—<Ü®‹À/¹^ù²€ª•µ•ä„•%Q¡ Q«%ô*€ÜØ!¢ƒ~aRÅ1äçÂÂüŽ ‚[¨Zµì÷ý³¡1ÅÙóÅ$˜õ£èEçÙ?ƒ»O2ŠIä’õ4§7ÅÜ,vûâoÔ›%ìM(Ã4¹£`+LYÓùëÉi¨òžœôGOÏÎ\ëY0Mfüúþáåá ¯Y=øñÇ¿>\áË#Ezˆ?sµR/«Ì}sü¸ø£(Ž÷?øòÝÌw3ßÍ|7ó'4£ªæÿŽeøI5ü¼ &äõ2UûÁC¢+FèÓ$ÅQþñÆðBNΓ¼ý½Õyã„$·AºÄ)‰„1ôòÅ2ɼ«á×3 (–дãº->é°ó¤ãׯ­€$uè£ûÀ¿ ÒÞ%´>‚áÕñ…ñ„Y¼XHL`f”Ü„‘A,× £æ³µ™­á9ÁS#4tXðCû;j ^õLÒGÃ}ÀãBî§Hz³>Rré#å¢"W§ÄË>Rê·;|û ž~Ú"È+òöIf=ø²Âö azŒpÌu(YèDa.³Ü4<.lÂMÇà– .7„£Sàìɹm˜”9 ‘yŽaqP[«j(•E¬‰B˜†#*&Yþ7Ò<Ÿ'q@p-ã~ år Uý*¯¿€Wq=—0·\ž*ø`ÿic™¡uð òËj}ãPJû*lÐÇ '㹤ýXÜoï8’Ô©¼~€áFÃñGé ñû ‡PŽm ýû˜ž øÐÇPÈ9ìrôÊáŒ|J ÃÐCG¡h3¥[¹= qëáÉ'QÀüáx0ÛY†Å8ËП\)~ÈZ‚‡ÿN[ïã2ZÉØÎ&†¥ RŠ¢ïÊÑñÙt :¼þ®Ž~Ï‚;¡S؉¦ y11`“ãå'êLsžV(ìXËò`ª3-€.g %Íq±¶™Ðfp»#…['JQ´¡¶ #÷d¯±—Ãé¨×Ž u=† Ƀá„;÷‹J»x\î8ÅTÑ©îÇ0Ç ¢'¢¿#‘·G÷ë¦ð}†.é åsÈuϰlaÉPut|ĪQLw'·èTØç±x;¶ªþ®]Ž÷&5¸í²ÿ±_-; Ã@ðŽÄ?äÒ#!~ı€JU©$¸W¦µÒJiR9æÑ¿g6¦¨¢iàÆ…ëzìY{w½³±DNpM§¡B³ˆ-Pd¢ÒhŒŠF™2 0•].¯ÞHðî¼Bën Å3J2ŽO$ïH„É¢`¥ÌËVÉ^É™éè¯PÁ°0¥MGªs$ú±o Ò"ÏS.9˜ ™ìóz¸³À7#GÌÐn„­±qg™" ªÔÐdDR'‡e7š<ãQJ]†Ææª ö'QØ2Š ð" d×ü Is,¸>,K•ÁmŽ}ë\¦Ë>£ÇÈoò²¯ãÉq+ÿm0÷b£ŒÏûÖ?ëÒê‰/ ÿž(­„KÖ£1¿ n©Á‡™H)Ó,|{g}ë'ä`´×™ÙuTóq½œÙó0Œléž¼]WM lí«Kl]7Á·ÅRRz׆ƻ¤]5od¡M_®–ͳ›O«ê¥ Þ7Crœß¬k‘”.$îÝ-öÐve—ëºLÁnšªñÓ è€TCÈ­ X¬x'w󉫫ÃÐAa·mJo·«ÝOwXÐS *÷ê*~ú˜Ñh|{~ö1ܱØä endstream endobj 20 0 obj 8571 endobj 21 0 obj << /Type /ExtGState /ca 0 /CA 0 /BM /Normal /AIS false >> endobj 25 0 obj << /Type /Font /Subtype /Type1 /BaseFont /OTMRTY+Times-Italic /FirstChar 0 /LastChar 255 /Encoding /WinAnsiEncoding /FontDescriptor 26 0 R /Widths [ 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 333 420 500 500 833 778 214 333 333 500 675 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 675 675 675 500 920 611 611 667 722 611 611 722 722 333 444 667 556 833 667 722 611 722 611 500 556 722 611 833 611 556 556 389 278 389 422 500 333 500 500 444 500 444 278 500 500 278 278 444 278 722 500 500 500 500 389 389 278 500 444 667 444 444 389 400 275 400 541 250 250 250 333 500 556 889 500 500 333 1000 500 333 944 250 556 250 250 333 333 556 556 350 500 889 333 980 389 333 667 250 389 556 250 389 500 500 500 500 275 500 333 760 276 500 675 333 760 333 400 675 300 300 333 500 523 250 333 300 310 500 750 750 750 500 611 611 611 611 611 611 889 667 611 611 611 611 333 333 333 333 722 667 722 722 722 722 722 675 722 722 722 722 722 556 611 500 500 500 500 500 500 500 667 444 444 444 444 444 278 278 278 278 500 500 500 500 500 500 500 675 500 500 500 500 500 444 500 444 ] >> endobj 26 0 obj << /Type /FontDescriptor /FontName /OTMRTY+Times-Italic /FontBBox [ -169 -217 1010 883 ] /Flags 32 /CapHeight 653 /Ascent 883 /Descent -217 /StemV 76 /ItalicAngle 0 /XHeight 441 /FontFile3 71 0 R >> endobj 27 0 obj << /Type /ExtGState /ca 0.98999 /CA 0.98999 /BM /Normal /AIS false >> endobj 28 0 obj << /Type /Font /Subtype /Type1 /BaseFont /YZUSTY+Symbol /FirstChar 0 /LastChar 255 /FontDescriptor 29 0 R /Widths [ 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 333 713 500 549 833 778 439 333 333 500 549 250 549 250 278 500 500 500 500 500 500 500 500 500 500 278 278 549 549 549 444 549 722 667 722 612 611 763 603 722 333 631 722 686 889 722 722 768 741 556 592 611 690 439 768 645 795 611 333 863 333 658 500 500 631 549 549 494 439 521 411 603 329 603 549 549 576 521 549 549 521 549 603 439 576 713 686 493 686 494 480 200 480 549 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 750 620 247 549 167 713 500 753 753 753 753 1042 987 603 987 603 400 549 411 549 549 713 494 460 549 549 549 549 1000 603 1000 658 823 686 795 987 768 768 823 768 768 713 713 713 713 713 713 713 768 713 790 790 890 823 549 250 713 603 603 1042 987 603 987 603 494 329 790 790 786 713 384 384 384 384 384 384 494 494 494 494 250 329 274 686 686 686 384 384 384 384 384 384 494 494 494 250 ] >> endobj 29 0 obj << /Type /FontDescriptor /FontName /YZUSTY+Symbol /FontBBox [ -180 -293 1090 1010 ] /Flags 6 /CapHeight 672 /Ascent 1010 /Descent -293 /StemV 120 /ItalicAngle 0 /XHeight 771 /FontFile3 69 0 R >> endobj 30 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm1 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 357.63574 401.36816 386.93457 469.17627 ] /Length 31 0 R /Resources << /ExtGState << /R1 4 0 R >> >> /Group 32 0 R >> stream 0 0 0 rg 0 i /RelativeColorimetric ri /R1 gs 357.6357 469.1763 m 386.9346 401.3682 l f endstream endobj 31 0 obj 88 endobj 32 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 33 0 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 34 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm2 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 381.57324 395.82813 390.30273 405.56006 ] /Length 35 0 R /Resources << /ExtGState << /R1 4 0 R >> >> /Group 36 0 R >> stream 0 0 0 rg 0 i /RelativeColorimetric ri /R1 gs 389.3281 395.8281 m 387.2344 398.0166 384.1865 400.5381 381.5732 401.7881 c 386.6201 402.0952 l 390.3027 405.5601 l 389.4219 402.8003 389.1689 398.8525 389.3281 395.8281 c h f endstream endobj 35 0 obj 222 endobj 36 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 38 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm3 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 354.26758 464.98438 362.99707 474.71631 ] /Length 39 0 R /Resources << /ExtGState << /R1 4 0 R >> >> /Group 40 0 R >> stream 0 0 0 rg 0 i /RelativeColorimetric ri /R1 gs 355.2422 474.7163 m 357.3359 472.5273 360.3838 470.0063 362.9971 468.7563 c 357.9502 468.4492 l 354.2676 464.9844 l 355.1484 467.7441 355.4014 471.6919 355.2422 474.7163 c h f endstream endobj 39 0 obj 222 endobj 40 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 42 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm4 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 354.26758 395.82813 390.30273 474.71631 ] /Length 43 0 R /Resources << /ExtGState << /R1 4 0 R /R4 33 0 R >> /XObject << /Fm1 30 0 R /Fm2 34 0 R /Fm3 38 0 R >> >> /Group 44 0 R >> stream q /RelativeColorimetric ri /R4 gs /Fm1 Do Q q /R4 gs /Fm2 Do Q q /R4 gs /Fm3 Do Q endstream endobj 43 0 obj 82 endobj 44 0 obj << /Type /Group /S /Transparency /I false /K true >> endobj 45 0 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 46 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm5 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 357.17676 401.16992 387.39355 469.37451 ] /Length 47 0 R /Resources << /ExtGState << /R1 4 0 R >> >> /Group 48 0 R >> stream 0 G 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 357.6357 469.1763 m 386.9346 401.3682 l S endstream endobj 47 0 obj 105 endobj 48 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 49 0 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 50 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm6 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 381.57324 395.82813 390.30273 405.56006 ] /Length 51 0 R /Resources << /ExtGState << /R1 4 0 R >> >> /Group 52 0 R >> stream 0 g 0 i /RelativeColorimetric ri /R1 gs 389.3281 395.8281 m 387.2344 398.0166 384.1865 400.5381 381.5732 401.7881 c 386.6201 402.0952 l 390.3027 405.5601 l 389.4219 402.8003 389.1689 398.8525 389.3281 395.8281 c h f endstream endobj 51 0 obj 217 endobj 52 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 54 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm7 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 354.26758 464.98438 362.99707 474.71631 ] /Length 55 0 R /Resources << /ExtGState << /R1 4 0 R >> >> /Group 56 0 R >> stream 0 g 0 i /RelativeColorimetric ri /R1 gs 355.2422 474.7163 m 357.3359 472.5273 360.3838 470.0063 362.9971 468.7563 c 357.9502 468.4492 l 354.2676 464.9844 l 355.1484 467.7441 355.4014 471.6919 355.2422 474.7163 c h f endstream endobj 55 0 obj 217 endobj 56 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 58 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm8 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 354.26758 395.82813 390.30273 474.71631 ] /Length 59 0 R /Resources << /ExtGState << /R1 4 0 R /R6 49 0 R >> /XObject << /Fm5 46 0 R /Fm6 50 0 R /Fm7 54 0 R >> >> /Group 60 0 R >> stream q /RelativeColorimetric ri /R6 gs /Fm5 Do Q q /R6 gs /Fm6 Do Q q /R6 gs /Fm7 Do Q endstream endobj 59 0 obj 82 endobj 60 0 obj << /Type /Group /S /Transparency /I false /K true >> endobj 62 0 obj << /Type /Group /S /Transparency /I false /K false /CS /DeviceRGB >> endobj 64 0 obj /DeviceRGB endobj 65 0 obj << /Filter /FlateDecode /Length 66 0 R /Height 80 /Width 128 /BitsPerComponent 8 /ColorSpace 64 0 R >> stream H‰ì—?NÃ0Æ+q ÎÀ¹ê @,0 HÀb(ªRÅCa)RG†JeEB=‚À̧<ÕŠü/Žc'n’ßP¥Mj;ŸßûÞ3c-¹ùûûǸ¨z-Íb:Žª^H³øþþF´Cv\T½–A>Óï÷???«^K³/¨z!Í‚ûL[XË„÷3­Ï” ÉÞúLÉ Îf³µ”ÓôµÍïÀgžžžö÷÷‡Ã!‰lè'q‹ži qq àÑÑÑæææúúºÃß©@Ðvø^Z‡\__Cù½½½ù|ŽN¾Ó鬮®þüü¸ È$¯Ë¬d >s{{{||Œ¯´Ðmm EÆG:`ð6d¸K` íé6¿w»ÝÑhTP|Ma¨ Íú~nR5y8.¶··=NÝä¢À}&„†˜Ä“ø„ùûJ‚vß】£;®âwÁs°/«~SÀfêz`èÆñî½^ošÅùù9>ONNƒAæÃy©ëð®Og,~6><]œ¹¼§ÍŽeø¶Bt>#ComYÉ«QœOJhvŠÃVÂxÍÃГ²ÞR>¬M |||àùËËËßß_ó“|vê lVÜgì]oͳÃRÞˆ ]ÐÛÛÛËË‹ð0”ÿúú‚ø¸È\‰rUñcï3òÓŸ¥þLÓˆîîî"ÚÓa;°),Ùá–Œ0ûRt¤¹|FFxG{ýåFþ’@_ó, ~ºE»`F˜]ˆ¨Ž«np 9öú³ExF,‘šûÄÇ5wä®óÆ?MU;Ê}F×FæBŽ®\úëѯ¹Ø (ÿI ô9øYNý™¦呟wIÊÙ«M/>£DWyõÏÕˆf¢›½üðë3J”©”W]#ê†nö2ÏÞ}F7‹2¡òêÏ4¨ºÙ„¡Ïá|F‰nô—Qg ³² ,>¨ÏPû'ÿîQ–jDûý¾Ãßmf÷nd2Ê©U¦“K þp8”>†tvÓŸ7¢-È0;nyqŒCÊóÑèÌH=bŠA|êŸ3,èÔ£ÁKnú³…? þ‘n#dÎî¼60ŸÏÉÞeŸJ,é™é‚‡=6BiöâSÞs˜¹Í%4¢éã€=æÙ,ˆ·‘³ÙìõõUùÌÖÖKÔFÀóc >‹?AúËþ"þÓ(¶ Ûí: â1þ¹Ïð_túCsRÉ»³³Ã’ˆE.zÎù3•þ!âŸ%ÙWVV:Ž[!.ÿ°Ïèô•ØÄ/ÇØ¢ÝØØ¤¿á.÷Ã1¡Lý¡¹öœ@ú³Eˆ:Wa7ýÏÎΦF...&“‰ù™Ò¸¹¹ÑÝ‚tEF×ÿîÚT^Ó¬@hÜôç„>Ìú¢®úsT…½Ù¼³¤ú;ôÿã®+ Bˆþß ¾â_ ¶±¤úãH Ä2úbØãÚª-†w‰Vÿ@^UÐÍØ4ý‰ò æRþÞLý9¨ äK¡ 6Z9EœúëVŽ „2âÔ_—­%®@(ÇŒP2ç²—¢Zƒß¡|¯õ¯0øeüùÕbÓ?†àW‚¥’/)ø¯°±éUð+)X „ŒJäxµë±§Hè÷ûü:*ýÓ [ žäéþx‹p½w ä*x˜'ýùzjíB¦°o1èåãìyŠ@&‘ ¾¿L&%.JúË-YÍ@tQPúR¯×ÃL+âþþ¾Þâ§Ñ5®nMTqji;™Pã*›zá—ògŒ ¡@M•Ðb Ôûn¹ö¤ .‚†%oŽáç…|éññ1Ä.òmØgBb0À%¼ÔÇÌ6¸E F§§§wwwéÀÛ­jJ½A‡WWWÏÏÏØj]„–•úyÞYµ²‡ }‚@v¤OR­½”ˆªNm-áÑRéDÕki4éÑRmˆÔò¥¶@TK[ "¡-1P°@ü 0>hr endstream endobj 66 0 obj 1513 endobj 67 0 obj << /Filter /FlateDecode /Length 68 0 R >> stream H‰ÄVËnÛFý‚ù‡Y: çÉáA€Ê²5âZD6† EÉ (É¥¨8î×÷\Фži‚¦hAH˜9Ãû¾÷ £ñ*ß,Še3)šÍóÛ·Ñ]6/>Ôå¼\òe,¿Ô±áÑý¦*ê¿TZáÀÇüñÝ;>¾cÑoÙkQC:-›ªàí–«7ÑÇr]~ÒÔ›‚Gwuñ¥,^ºÝõ´l²ýÃrÙÓn7. lfYµÆîjU­jþ ¥Ö–NxìœqplVeÍÖ\÷nZgËõsVËüµÃàäh|ŧ§ž3Éé¹E ä…[~ à3~¿ò‡GɧœE÷4—_ŠÖv¹(šºÌy]â@ñùšÛ8+ƒæ&¡¯ø‚í0ëD¢æÖHŒ¹‘^'±HŒ°~É™1±Jû¦ƒÎ@é i‡ôör6`ÖJámàƒ"ëƒ@®ÔÎÜ€älpjÀÇ{E§Ñå쉼nƒ·JØD¡F‰ÄêÁm„QÁì°j‡Yg…‘p¬bƒì9lOö‰Í†\ÿ'æ&LCÞ&é.Cˆagˆu‰wHM"¼Vš|@r YÒÂjOº©<„`’ž;iÈI›ˆà¨DȬLøñþ•X:HÆÿìÇdÈu¦´ˆ½PArÄ`¶^ŠØHÛÚ9~ï0œŸR3Ù¯N[1ê\¼iÕœŠ¤ñG`ánfJ‹¯ î6|5¶‚ùòÈ´5ȳR ÄècQ7ežU‡ìÝÍg|t»]ܬêEFú~©Êù’øº:.½zÊêá|RþYp,h›ô/¤Ù§ü¦YËu“-󂛘¨re’G“fõ¼›m…FiÇz ¿è†x0a—æô÷B5g½z¯_Ÿ˜.ØÅúMúùœ§Ê}$<ú0›­‹†_b  ZhëDÚ¦®[›$ÞaAÝ<ȈôOI¿Ž›² þ sšjˆ9îÍÉÎPw´k²”^}+0«¡w¼ÛµŽwk+µˆ]¢õiÒw²kúº-öß4¦QC‚¡ ÙNœûæù^w ÐçÊxjмýkeÔžª§|›f2Hê«£d(ŒšŒ5EÆ7 Ý™4†Raæœ ¸Œ¤ƒNâx…ñ÷ ñ€ÁѰbœ¢[Т ±†X Î6¡%ºØºO¿3³* HALÜp%ÿSi?î= £˜èFoçìlEN½ ”emEúeDª‚Þª sÔ¾9öM·êðyD×#nƒ¢áb먧×ɈýÁ£{·taùxÅ~?€’-´ãî6GàAZ ¢µhÓ6äïÙ™ƒIëÙ_ ãv{2 endstream endobj 68 0 obj 990 endobj 69 0 obj << /Filter /FlateDecode /Length 70 0 R /Length1 407 /Subtype /Type1C >> stream H‰bd`ab`dd䋌 ‰Ô®ÌMÊω¨ýaø!ËøCŽé‡óq–ß¿wþºö«õ»·Àw?þï‚3~È 1°02²ñfä%æd$êX8çTe¦g”(h$k*ZZ˜ê€Hs0i "- À¤¹‚cJ~RªBpeqIjn±‚g^r~QA~QbIjŠž‚cNŽؘb…¢ÔâÔ¢2  Ôy Œ‰ Œí LŒŒ,'¾÷ñýä®\›s釿††r¡-ŸÄÏ^#<çGûjQïßn¬lÂkÚ6Õn®X]²1uuÌäÄI 9eÎQáN5¿Yæ{,›Ÿ¹¼xCÕÙ¼=ÓvÎz²bá…9+8„c{ÍÎX\2·jaó²…ËNÝÔ3¯÷˜D%[g]WvYYNNáÒÆ)ój—7ïþÎþý¢Äï´ßïD…×ÔgD•W•V”4UõôÖM,]X¼¸quÛŠÆÃí‡'št`ú¶%«.Ÿ;çXÕŠ¦e…³ 9–&N³ÉÁW1ï§é¬ß±3Øžs=à0T6©y endstream endobj 70 0 obj 409 endobj 71 0 obj << /Filter /FlateDecode /Length 72 0 R /Length1 951 /Subtype /Type1C >> stream H‰,}luÇïÚ][œÜFÓÓ»›uFqâ˜Îe“¬0]µãE°´Ç(¶kw½µ{¡l³]Ëè`/Ý–uëØ CÅ.ˆ0 Äùɦ$1"Æ¿Mžë~5±­>|òä›çûÍó<8–#Ãp_»ÇXm0î+2Ú¼{£^4Ûm–Œ^(јô,.='“¹´.‡y´ÿðÓ2ôr¬W”LåÁ•5ó+´ËÁqU|î–N÷j±N§Ûæt5 ¶ºc"÷²¥Û\¶uˆ K³,˰L—eI–¥\•Õy„çjšÝ"ïpsúz‹Sp9³È[‹9®Ênç ™47gàݼàI«ÙM9››3s¢`¶ò³ðç<Êí²Õ;Åf¿ñ>íªÚÁ™ë­›œgK›ÝGÜ6«Í,Øx÷ÿÿší±táX>FaÛ±X5fÄTéß`rŒÀžÇ¼xÞÿ${Ÿ#9²ü¬'YéÅß•Lrø>Y¬I‘ÿTK ‰LVd8!_Â%Ù#¹ô°šº–V—žF†^ÁH@>äO_¿¯ý±æI€Ö…î=f"@LG¯,>¦—oì©>Ú‹8TÈ¢£H$Z”·á‚Ñ l†ÕSjÀ—n$.ŒR1êà𢆊yQ 1ª õõ Fi*öÙ—Mé…?§gEäïßioÅ&êܽó{ ½é÷§gcãÀ>5ãvv´¤=oì]à{ÓÎV@n‘^{¼õ@Í­Oæ Ù<–,ˆ¡à0´õ+`âlJìQú¢ÉW¢È3î° F"©Ý«âO%r¥Sk!©ùW€¢U“š endstream endobj 72 0 obj 936 endobj xref 0 73 0000000022 65535 f 0000000016 00000 n 0000000069 00000 n 0000000133 00000 n 0000000578 00000 n 0000000687 00000 n 0000000841 00000 n 0000000920 00000 n 0000001196 00000 n 0000001233 00000 n 0000002724 00000 n 0000008472 00000 n 0000024824 00000 n 0000024847 00000 n 0000043729 00000 n 0000043752 00000 n 0000064257 00000 n 0000064280 00000 n 0000084245 00000 n 0000084268 00000 n 0000092921 00000 n 0000092943 00000 n 0000000023 00001 f 0000000024 00001 f 0000000037 00001 f 0000093024 00000 n 0000094244 00000 n 0000094472 00000 n 0000094565 00000 n 0000095754 00000 n 0000095978 00000 n 0000096309 00000 n 0000096329 00000 n 0000096405 00000 n 0000096486 00000 n 0000096951 00000 n 0000096972 00000 n 0000000041 00001 f 0000097048 00000 n 0000097513 00000 n 0000097534 00000 n 0000000053 00001 f 0000097610 00000 n 0000097998 00000 n 0000098018 00000 n 0000098093 00000 n 0000098174 00000 n 0000098522 00000 n 0000098543 00000 n 0000098619 00000 n 0000098700 00000 n 0000099160 00000 n 0000099181 00000 n 0000000057 00001 f 0000099257 00000 n 0000099717 00000 n 0000099738 00000 n 0000000061 00001 f 0000099814 00000 n 0000100202 00000 n 0000100222 00000 n 0000000063 00001 f 0000100297 00000 n 0000000000 00001 f 0000100389 00000 n 0000100417 00000 n 0000102070 00000 n 0000102092 00000 n 0000103160 00000 n 0000103181 00000 n 0000103698 00000 n 0000103719 00000 n 0000104763 00000 n trailer << /Size 73 /Info 5 0 R /Root 1 0 R >> startxref 104784 %%EOF ctsim-6.0.2/doc/make-help0000744000175000017500000000053211235407051014202 0ustar kevinkevinrm -f ctsim.rtf ctsim.cnt tex2rtf ctsim.tex ctsim.rtf -winhelp hcw /c /m /e ctsim.hpj mv CTSIM.HLP ctsim.hlp cp ctsim.hlp ctsim.cnt ../../msvc/ctsim/ rm -f ctsim*.html ctsim.hhp ctsim.hhc ctsim.hhk tex2rtf ctsim.tex ctsim.html -html zip ctsim.zip *.html *.gif ctsim.hhp ctsim.hhc ctsim.hhk mv ctsim.zip ctsim.htb cp ctsim.htb ../../msvc/ctsim ctsim-6.0.2/doc/ctsimfig3.fig0000644000175000017500000000521010667176710015005 0ustar kevinkevin#FIG 3.2 Portrait Center Inches Letter 100.00 Single -2 1200 2 6 60 0 4950 6300 5 1 0 1 0 7 50 0 -1 0.000 0 1 1 0 2532.660 1963.843 1797 1297 1610 1597 1542 1897 0 0 1.00 60.00 120.00 5 1 0 1 0 7 55 0 -1 4.000 0 0 0 0 1805.728 2587.000 1972 2497 1972 2677 1882 2760 5 1 2 1 0 7 50 0 -1 3.000 0 0 0 0 2391.068 1912.477 1795 1305 3242 1897 1787 2512 6 2720 585 4272 1005 6 3125 615 3358 960 4 0 0 50 0 31 20 0.0000 4 225 90 3125 840 l\001 4 0 0 50 0 31 14 0.0000 4 150 135 3223 915 p\001 -6 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 2720 697 2810 697 2847 862 2885 592 3110 585 4 0 0 50 0 31 20 0.0000 4 225 195 2892 847 2\001 4 0 0 50 0 31 20 0.0000 4 300 825 3365 877 /2 = f\001 4 0 0 50 0 31 14 0.0000 4 150 60 4212 1005 l\001 -6 6 2975 2797 4249 3202 6 3380 2827 3613 3172 4 0 0 50 0 31 20 0.0000 4 225 90 3380 3052 l\001 4 0 0 50 0 31 14 0.0000 4 150 135 3478 3127 p\001 -6 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 2975 2909 3065 2909 3102 3074 3140 2804 3365 2797 4 0 0 50 0 31 20 0.0000 4 225 195 3147 3059 2\001 4 0 0 50 0 31 20 0.0000 4 300 480 3620 3089 = f\001 4 0 0 50 0 31 14 0.0000 4 105 120 4129 3202 v\001 -6 6 2850 1315 3255 2515 6 3022 1840 3255 2185 4 0 0 50 0 31 20 0.0000 4 225 90 3022 2065 l\001 4 0 0 50 0 31 14 0.0000 4 150 135 3120 2140 p\001 -6 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 1 2 0 0 1.00 60.00 120.00 0 0 1.00 60.00 120.00 2880 1315 2880 2515 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 4 2895 1750 2985 1855 2930 1840 3030 1965 -6 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 4 1947 1462 2345 990 2277 1162 2577 802 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 2982 1312 1805 2497 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 4 2135 2182 2720 2700 2540 2625 2877 2925 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 1790 1305 2397 1905 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 4 1665 2000 1205 2470 1370 2365 1060 2670 2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2 2405 1899 3258 1894 2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2 3255 0 3255 6292 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 1535 1908 2388 1903 2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2 1545 1905 3240 6277 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 4800 3975 4800 6300 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2 0 0 1.00 90.00 180.00 4800 2400 4800 225 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 4650 6300 4950 6300 2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 1790 1305 2990 1305 2990 2505 1790 2505 1790 1305 2 1 2 1 0 7 55 0 -1 3.000 0 0 -1 0 0 2 1545 1905 2325 0 4 0 0 50 0 28 14 1.5708 4 195 75 1734 2001 {\001 4 0 0 55 0 32 14 0.0000 4 105 135 2047 2767 a\001 4 0 0 50 0 31 14 0.0000 4 150 1605 60 2812 dFocalPastPhm\001 4 0 0 50 0 31 14 1.5708 4 150 960 4875 3675 detectors\001 4 0 0 50 0 31 14 0.0000 4 105 690 755 1975 source\001 -6 ctsim-6.0.2/doc/psbox.tex0000644000175000017500000004174510667176710014320 0ustar kevinkevin% % %%%%%%% %%%%% %%%%%% %%%%% % % % % % % % % % % % % % % % % % % % % % % % %%%%%%% %%%%% %%%%%% % % % % % % % % % % % % % % % % % % % % % % % %%%%%% %%%%%% %%%%% % % % % By Jean Orloff % % Comments & suggestions by e-mail: ORLOFF@surya11.cern.ch % No modification of this file allowed if not e-sent to me. % % A simple way to measure the size of encapsulated postscript figures % from inside TeX, and to use it for automatically formatting texts % with inserted figures. Works both under Plain TeX-based macros % (Phyzzx, Harvmac, Psizzl, ...) and LaTeX environment. % Provides exactly the same result on any PostScript printer provided % the single instruction \psfor... is changed to fit the needs of the % particular dvi->ps translator used. % History: % 1.31: adds \psforDVIALW(?) % 1.30: adds \splitfile & \joinfiles for multi-file management % 1.24: fix error handling & add \psonlyboxes % 1.23: adds \putsp@ce for OzTeX fix % 1.22: makes \drawingBox \global for use in Phyzzx % 1.21: accepts %%BoundingBox: (atend) % 1.20: tries to add \psfordvitps for the TeXPS package. % 1.10: adds \psforoztex, error handling... %2345678 1 2345678 2 2345678 3 2345678 4 2345678 5 2345678 6 2345678 7 23456789 % \def\temp{1.31} \let\tempp=\relax \expandafter\ifx\csname psboxversion\endcsname\relax \message{version: \temp} \else \ifdim\temp cm>\psboxversion cm \message{version: \temp} \else \message{psbox(\psboxversion) is already loaded: I won't load psbox(\temp)!} \let\temp=\psboxversion \let\tempp=\endinput \fi \fi \tempp \let\psboxversion=\temp \catcode`\@=11 % Every macro likes a little privacy... % % Some common defs % \def\execute#1{#1}% NOT stupid: cs in #1 are then identified BEFORE execution \def\psm@keother#1{\catcode`#112\relax}% borrowed from latex \def\executeinspecs#1{% \execute{\begingroup\let\do\psm@keother\dospecials\catcode`\^^M=9#1\endgroup}} % %Trying to tame the variety of \special commands for Postscript: the % universal internal command \PSspeci@l##1##2 takes ##1 to be the % filename and ##2 to be the integer scale factor*1000 (as for usual % TeX \scale commands) % \def\psfortextures{% For TeXtures on the Macintosh %----------------- \def\PSspeci@l##1##2{% \special{illustration ##1\space scaled ##2}% }} % \def\psfordvitops{% For the DVItoPS converter on IBM mainframes %---------------- \def\PSspeci@l##1##2{% \special{dvitops: import ##1\space \the\drawingwd \the\drawinght}% }} % \def\psfordvips{% For DVIPS converter on VAX, UNIX and PC's %-------------- \def\PSspeci@l##1##2{% % \special{/@scaleunit 1000 def}% never read dox without trying! \d@my=0.1bp \d@mx=\drawingwd \divide\d@mx by\d@my% \special{PSfile=##1\space llx=\psllx\space lly=\pslly\space% urx=\psurx\space ury=\psury\space rwi=\number\d@mx}% }} % \def\psforoztex{% For the OzTeX shareware on the Macintosh %-------------- \def\PSspeci@l##1##2{% \special{##1 \space ##2 1000 div dup scale \putsp@ce{\number-\psllx} \putsp@ce{\number-\pslly} translate }% }} \def\putsp@ce#1{#1 } % \def\psfordvitps{% From the UNIX TeXPS package, vers.>3.12 %--------------- % Convert a dimension into the number \psn@sp (in scaled points) \def\psdimt@n@sp##1{\d@mx=##1\relax\edef\psn@sp{\number\d@mx}} \def\PSspeci@l##1##2{% % psfig.psr contains the def of "startTexFig": if you can locate it % and include the correct pathname, it should work \special{dvitps: Include0 "psfig.psr"}% contains def of "startTexFig" \psdimt@n@sp{\drawingwd} \special{dvitps: Literal "\psn@sp\space"} \psdimt@n@sp{\drawinght} \special{dvitps: Literal "\psn@sp\space"} \psdimt@n@sp{\psllx bp} \special{dvitps: Literal "\psn@sp\space"} \psdimt@n@sp{\pslly bp} \special{dvitps: Literal "\psn@sp\space"} \psdimt@n@sp{\psurx bp} \special{dvitps: Literal "\psn@sp\space"} \psdimt@n@sp{\psury bp} \special{dvitps: Literal "\psn@sp\space startTexFig\space"} \special{dvitps: Include1 "##1"} \special{dvitps: Literal "endTexFig\space"} }} \def\psforDVIALW{% Try for dvialw, a UNIX public domain %--------------- \def\PSspeci@l##1##2{ \special{language "PS" literal "##2 1000 div dup scale" include "##1"}}} \def\psonlyboxes{% Draft-like behaviour if none of the others works %--------------- \def\PSspeci@l##1##2{% \at(0cm;0cm){\boxit{\vbox to\drawinght {\vss \hbox to\drawingwd{\at(0cm;0cm){\hbox{(##1)}}\hss} }}} }% } % \def\psloc@lerr#1{% \let\savedPSspeci@l=\PSspeci@l% \def\PSspeci@l##1##2{% \at(0cm;0cm){\boxit{\vbox to\drawinght {\vss \hbox to\drawingwd{\at(0cm;0cm){\hbox{(##1) #1}}\hss} }}} \let\PSspeci@l=\savedPSspeci@l% restore normal output for other figs! }% } % %\def\psfor... add your own! % % \ReadPSize{PSfilename} reads the dimensions of a PostScript drawing % and stores it in \drawinght(wd) \newread\pst@mpin \newdimen\drawinght\newdimen\drawingwd \newdimen\psxoffset\newdimen\psyoffset \newbox\drawingBox \newif\ifNotB@undingBox \newhelp\PShelp{Proceed: you'll have a 5cm square blank box instead of your graphics (Jean Orloff).} \def\@mpty{} \def\s@tsize#1 #2 #3 #4\@ndsize{ \def\psllx{#1}\def\pslly{#2}% \def\psurx{#3}\def\psury{#4}% needed by a crazyness of dvips! \ifx\psurx\@mpty\NotB@undingBoxtrue% this is not a valid one! \else \drawinght=#4bp\advance\drawinght by-#2bp \drawingwd=#3bp\advance\drawingwd by-#1bp % !Units related by crazy factors as bp/pt=72.27/72 should be BANNED! \fi } \def\sc@nline#1:#2\@ndline{\edef\p@rameter{#1}\edef\v@lue{#2}} \def\g@bblefirstblank#1#2:{\ifx#1 \else#1\fi#2} \def\psm@keother#1{\catcode`#112\relax}% borrowed from latex \def\execute#1{#1}% Seems stupid, but cs are identified BEFORE execution {\catcode`\%=12 \xdef\B@undingBox{%%BoundingBox} } %% is not a true comment in PostScript, even if % is! \def\ReadPSize#1{ \edef\PSfilename{#1} \openin\pst@mpin=#1\relax \ifeof\pst@mpin \errhelp=\PShelp \errmessage{I haven't found your postscript file (\PSfilename)} \psloc@lerr{was not found} \s@tsize 0 0 142 142\@ndsize \closein\pst@mpin \else \immediate\write\psbj@inaux{#1,} \loop \executeinspecs{\catcode`\ =10\global\read\pst@mpin to\n@xtline} \ifeof\pst@mpin \errhelp=\PShelp \errmessage{(\PSfilename) is not an Encapsulated PostScript File: I could not find any \B@undingBox: line.} \edef\v@lue{0 0 142 142:} \psloc@lerr{is not an EPSFile} \NotB@undingBoxfalse \else \expandafter\sc@nline\n@xtline:\@ndline \ifx\p@rameter\B@undingBox\NotB@undingBoxfalse \edef\t@mp{% \expandafter\g@bblefirstblank\v@lue\space\space\space} \expandafter\s@tsize\t@mp\@ndsize \else\NotB@undingBoxtrue \fi \fi \ifNotB@undingBox\repeat \closein\pst@mpin \fi \message{#1} } % % \psboxto(xdim;ydim){psfilename}: you specify the dimensions and % TeX uniformly scales to fit the largest one. If xdim=0pt, the % scale is fully determined by ydim and vice versa. % Notice: psboxes are a real vboxes; couldn't take hbox otherwise all % indentation and all cr's would be interpreted as spaces (hugh!). % \newcount\xscale \newcount\yscale \newdimen\pscm\pscm=1cm \newdimen\d@mx \newdimen\d@my \let\ps@nnotation=\relax \def\psboxto(#1;#2)#3{\vbox{ \ReadPSize{#3} \divide\drawingwd by 1000 \divide\drawinght by 1000 \d@mx=#1 \ifdim\d@mx=0pt\xscale=1000 \else \xscale=\d@mx \divide \xscale by \drawingwd\fi \d@my=#2 \ifdim\d@my=0pt\yscale=1000 \else \yscale=\d@my \divide \yscale by \drawinght\fi \ifnum\yscale=1000 \else\ifnum\xscale=1000\xscale=\yscale \else\ifnum\yscale<\xscale\xscale=\yscale\fi \fi \fi \divide \psxoffset by 1000\multiply\psxoffset by \xscale \divide \psyoffset by 1000\multiply\psyoffset by \xscale \global\divide\pscm by 1000 \global\multiply\pscm by\xscale \multiply\drawingwd by\xscale \multiply\drawinght by\xscale \ifdim\d@mx=0pt\d@mx=\drawingwd\fi \ifdim\d@my=0pt\d@my=\drawinght\fi \message{scaled \the\xscale} \hbox to\d@mx{\hss\vbox to\d@my{\vss \global\setbox\drawingBox=\hbox to 0pt{\kern\psxoffset\vbox to 0pt{ \kern-\psyoffset \PSspeci@l{\PSfilename}{\the\xscale} \vss}\hss\ps@nnotation} \global\ht\drawingBox=\the\drawinght \global\wd\drawingBox=\the\drawingwd \baselineskip=0pt \copy\drawingBox \vss}\hss} \global\psxoffset=0pt \global\psyoffset=0pt% These are local to one figure \global\pscm=1cm \global\drawingwd=\drawingwd \global\drawinght=\drawinght }} % % \psboxscaled{scalefactor*1000}{PSfilename} allows to bypass the % rounding errors of TeX integer divisions for situations where the % TeX box should fit the original BoundingBox with a precision better % than 1/1000. % \def\psboxscaled#1#2{\vbox{ \ReadPSize{#2} \xscale=#1 \message{scaled \the\xscale} \divide\drawingwd by 1000\multiply\drawingwd by\xscale \divide\drawinght by 1000\multiply\drawinght by\xscale \divide \psxoffset by 1000\multiply\psxoffset by \xscale \divide \psyoffset by 1000\multiply\psyoffset by \xscale \global\divide\pscm by 1000 \global\multiply\pscm by\xscale \global\setbox\drawingBox=\hbox to 0pt{\kern\psxoffset\vbox to 0pt{ \kern-\psyoffset \PSspeci@l{\PSfilename}{\the\xscale} \vss}\hss\ps@nnotation} \global\ht\drawingBox=\the\drawinght \global\wd\drawingBox=\the\drawingwd \baselineskip=0pt \copy\drawingBox \global\psxoffset=0pt \global\psyoffset=0pt% These are local to one figure \global\pscm=1cm \global\drawingwd=\drawingwd \global\drawinght=\drawinght }} % % \psbox{PSfilename} makes a TeX box having the minimal size to % enclose the picture \def\psbox#1{\psboxscaled{1000}{#1}} % % % \joinfiles file1, file2, ...n \into joinedfilename . % makes one file out of many % \splitfile joinedfilename % the opposite % %\def\execute#1{#1}% NOT stupid: cs in #1 are then identified BEFORE execution %\def\psm@keother#1{\catcode`#112\relax}% borrowed from latex %\def\executeinspecs#1{% %\execute{\begingroup\let\do\psm@keother\dospecials\catcode`\^^M=9#1\endgroup}} %\newread\pst@mpin \newif\ifn@teof\n@teoftrue \newif\ifc@ntrolline \newif\ifmatch \newread\j@insplitin \newwrite\j@insplitout \newwrite\psbj@inaux \immediate\openout\psbj@inaux=psbjoin.aux \immediate\write\psbj@inaux{\string\joinfiles} \immediate\write\psbj@inaux{\jobname,} % % We redefine input to keep track of the various files inputted % \immediate\let\oldinput=\input \def\input#1 { \immediate\write\psbj@inaux{#1,} \oldinput #1 } \def\empty{} \def\setmatchif#1\contains#2{ \def\match##1#2##2\endmatch{ \def\tmp{##2} \ifx\empty\tmp \matchfalse \else \matchtrue \fi} \match#1#2\endmatch} \def\warnopenout#1#2{ \setmatchif{TrashMe,psbjoin.aux,psbjoin.all}\contains{#2} \ifmatch \else \immediate\openin\pst@mpin=#2 \ifeof\pst@mpin \else \errhelp{If the content of this file is so precious to you, abort (ie press x or e) and rename it before retrying.} \errmessage{I'm just about to replace your file named #2} \fi \immediate\closein\pst@mpin \fi \message{#2} \immediate\openout#1=#2} % No comments allowed below: % will have an unusual catcode { \catcode`\%=12 \gdef\splitfile#1 { \immediate\openin\j@insplitin=#1 \message{Splitting file #1 into:} \warnopenout\j@insplitout{TrashMe} \loop \ifeof \j@insplitin\immediate\closein\j@insplitin\n@teoffalse \else \n@teoftrue \executeinspecs{\global\read\j@insplitin to\spl@tinline\expandafter \ch@ckbeginnewfile\spl@tinline%Beginning-Of-File-Named:%\endcheck} \ifc@ntrolline \else \toks0=\expandafter{\spl@tinline} \immediate\write\j@insplitout{\the\toks0} \fi \fi \ifn@teof\repeat \immediate\closeout\j@insplitout} \gdef\ch@ckbeginnewfile#1%Beginning-Of-File-Named:#2%#3\endcheck{ \def\t@mp{#1} \ifx\empty\t@mp \def\t@mp{#3} \ifx\empty\t@mp \global\c@ntrollinefalse \else \immediate\closeout\j@insplitout \warnopenout\j@insplitout{#2} \global\c@ntrollinetrue \fi \else \global\c@ntrollinefalse \fi} \gdef\joinfiles#1\into#2 { \message{Joining following files into} \warnopenout\j@insplitout{#2} \message{:} { \edef\w@##1{\immediate\write\j@insplitout{##1}} \w@{% This text was produced with psbox's \string\joinfiles.} \w@{% To decompose and tex it:} \w@{%-save this with a filename CONTAINING ONLY LETTERS, and no extensions} \w@{% (say, JOINTFIL), in some uncrowded directory;} \w@{%-make sure you can \string\input\space psbox.tex (version>=1.3);} \w@{%-tex JOINTFIL using Plain, or LaTeX, or whatever is needed by} \w@{% the first part in the joining (after splitting JOINTFIL into} \w@{% it's constituents, TeX will try to process it as it stands).} \w@{\string\input\space psbox.tex} \w@{\string\splitfile{\string\jobname}} } \tre@tfilelist#1, \endtre@t \immediate\closeout\j@insplitout} \gdef\tre@tfilelist#1, #2\endtre@t{ \def\t@mp{#1} \ifx\empty\t@mp \else \llj@in{#1} \tre@tfilelist#2, \endtre@t \fi} \gdef\llj@in#1{ \immediate\openin\j@insplitin=#1 \ifeof\j@insplitin \errmessage{I couldn't find file #1.} \else \message{#1} \toks0={%Beginning-Of-File-Named:#1} \immediate\write\j@insplitout{\the\toks0} \executeinspecs{\global\read\j@insplitin to\oldj@ininline} \loop \ifeof\j@insplitin\immediate\closein\j@insplitin\n@teoffalse \else\n@teoftrue \executeinspecs{\global\read\j@insplitin to\j@ininline} \toks0=\expandafter{\oldj@ininline} \let\oldj@ininline=\j@ininline \immediate\write\j@insplitout{\the\toks0} \fi \ifn@teof \repeat \immediate\closein\j@insplitin \fi} } % To be put at the end of a file, for making an tar-like file containing % everything it used. \def\autojoin{ \immediate\write\psbj@inaux{\string\into\space psbjoin.all} \immediate\closeout\psbj@inaux \input psbjoin.aux } % % Annotations & Captions etc... % % % \centinsert{anybox} is just a centered \midinsert, but is included as % people barely use the original inserts from TeX. % \def\centinsert#1{\midinsert\line{\hss#1\hss}\endinsert} \def\psannotate#1#2{\def\ps@nnotation{#2\global\let\ps@nnotation=\relax}#1} \def\pscaption#1#2{\vbox{ \setbox\drawingBox=#1 \copy\drawingBox \vskip\baselineskip \vbox{\hsize=\wd\drawingBox\setbox0=\hbox{#2} \ifdim\wd0>\hsize \noindent\unhbox0\tolerance=5000 \else\centerline{\box0} \fi }}} % for compatibility with older versions \def\psfig#1#2#3{\pscaption{\psannotate{#1}{#2}}{#3}} \def\psfigurebox#1#2#3{\pscaption{\psannotate{\psbox{#1}}{#2}}{#3}} % % \at(#1;#2)#3 puts #3 at #1-higher and #2-right of the current % position without moving it (to be used in annotations). \def\at(#1;#2)#3{\setbox0=\hbox{#3}\ht0=0pt\dp0=0pt \rlap{\kern#1\vbox to0pt{\kern-#2\box0\vss}}} % % \gridfill(ht;wd) makes a 1cm*1cm grid of ht by wd whose lower-left % corner is the current point \newdimen\gridht \newdimen\gridwd \def\gridfill(#1;#2){ \setbox0=\hbox to 1\pscm {\vrule height1\pscm width.4pt\leaders\hrule\hfill} \gridht=#1 \divide\gridht by \ht0 \multiply\gridht by \ht0 \gridwd=#2 \divide\gridwd by \wd0 \multiply\gridwd by \wd0 \advance \gridwd by \wd0 \vbox to \gridht{\leaders\hbox to\gridwd{\leaders\box0\hfill}\vfill}} % % Useful to measure where to put annotations \def\fillinggrid{\at(0cm;0cm){\vbox{ \gridfill(\drawinght;\drawingwd)}}} % % \textleftof\anybox: Sample text\endtext % inserts "Sample text" on the left of \anybox ie \vbox, \psbox. % \textrightof is the symmetric (not documented, too uggly) % Welcome any suggestion about clean wraparound macros from % TeXhackers reading this % \def\textleftof#1:{ \setbox1=#1 \setbox0=\vbox\bgroup \advance\hsize by -\wd1 \advance\hsize by -2em} \def\textrightof#1:{ \setbox0=#1 \setbox1=\vbox\bgroup \advance\hsize by -\wd0 \advance\hsize by -2em} \def\endtext{ \egroup \hbox to \hsize{\valign{\vfil##\vfil\cr% \box0\cr% \noalign{\hss}\box1\cr}}} % % \frameit{\thick}{\skip}{\anybox} % draws with thickness \thick a box around \anybox, leaving \skip of % blank around it. eg \frameit{0.5pt}{1pt}{\hbox{hello}} % \boxit{\anybox} is a shortcut. \def\frameit#1#2#3{\hbox{\vrule width#1\vbox{ \hrule height#1\vskip#2\hbox{\hskip#2\vbox{#3}\hskip#2}% \vskip#2\hrule height#1}\vrule width#1}} \def\boxit#1{\frameit{0.4pt}{0pt}{#1}} % % \catcode`\@=12 % cs containing @ are unreachable % % CUSTOMIZE YOUR DEFAULT DRIVER: % Uncomment the line corresponding to your TeX system: %\psfortextures% For TeXtures on the Macintosh %\psforoztex % For OzTeX shareware on the Macintosh %\psfordvitops % For the DVItoPS converter for TeX on IBM mainframes \psfordvips % For DVIPS converter on VAX and UNIX %\psfordvitps % For dvitps from TeXPS package under UNIX %\psforDVIALW % For DVIALW, UNIX public domain %\psonlyboxes % Blank Boxes (when all else fails). ctsim-6.0.2/doc/verbatim.sty0000644000175000017500000001652510667176710015013 0ustar kevinkevin%% %% This is file `verbatim.sty' generated %% on <1991/9/3> with the docstrip utility (v1.1l test). %% %% The original source file was `verbatim.doc'. %% %% %% Copyright (C) 1989,1990,1991 by Rainer Schoepf. All rights reserved. %% %% IMPORTANT NOTICE: %% %% You are not allowed to change this file. You may however copy this file %% to a different name and then change this copy. %% %% You are allowed to distribute this file under the condition that it is %% distributed together with all files mentioned in readme.mz4. If you %% receive only some of these files from someone, complain! %% %% You are NOT ALLOWED to distribute this file alone. You are NOT ALLOWED %% to take money for the distribution or use of this file (or a changed %% version) except for some nominal charge for copying etc. %% %% Error Reports in case of UNCHANGED versions to %% %% Rainer Schoepf %% Konrad-Zuse-Zentrum fuer Informationstechnik Berlin %% Heilbronner Str. 10 %% W-1000 Berlin 31 %% Federal Republic of Germany %% Internet: %% \def\fileversion{v1.4f} \def\filedate{91/08/05} \def\docdate{91/08/05} %% \CheckSum{439} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z %% Digits \0\1\2\3\4\5\6\7\8\9 %% Exclamation \! Double quote \" Hash (number) \# %% Dollar \$ Percent \% Ampersand \& %% Acute accent \' Left paren \( Right paren \) %% Asterisk \* Plus \+ Comma \, %% Minus \- Point \. Solidus \/ %% Colon \: Semicolon \; Less than \< %% Equals \= Greater than \> Question mark \? %% Commercial at \@ Left bracket \[ Backslash \\ %% Right bracket \] Circumflex \^ Underscore \_ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% %% Style-option `verbatim' to use with LaTeX v2.09 %% Copyright (C) 1989, 1990, 1991 by Rainer Sch\"opf, all rights reserved. \@ifundefined{verbatim@@@}{}{\endinput} \typeout{Style-Option: `verbatim' \fileversion \space <\filedate> (RmS)} \typeout{English Documentation \@spaces \@spaces \space <\docdate> (RmS)} \def\addto@hook#1#2{#1\expandafter{\the#1#2}} \newtoks\every@verbatim \every@verbatim={} \def\@makeother#1{\catcode`#112\relax} \begingroup \catcode`\ =\active% \gdef\@vobeyspaces{\catcode`\ \active\let \@xobeysp}% \endgroup \def\@xobeysp{\leavevmode\penalty\@M\ } \newtoks\verbatim@line \def\verbatim@startline{\verbatim@line{}} \def\verbatim@addtoline#1{% \verbatim@line\expandafter{\the\verbatim@line#1}} \def\verbatim@processline{\the\verbatim@line\par} \def\verbatim@finish{\ifcat$\the\verbatim@line$\else \verbatim@processline\fi} \begingroup \catcode`\`=\active \gdef\verbatim@font{\tt \catcode96\active \def`{\leavevmode\kern\z@\char96 }} \endgroup \def\@verbatim{\the\every@verbatim \trivlist \item[]% \leftskip\@totalleftmargin\rightskip\z@ \parindent\z@\parfillskip\@flushglue\parskip\z@ \@@par \def\par{\leavevmode\null\@@par\penalty\interlinepenalty}% \obeylines \verbatim@font \let\do\@makeother \dospecials} \def\verbatim{\@verbatim \frenchspacing\@vobeyspaces\verbatim@start} \@namedef{verbatim*}{\@verbatim\verbatim@start} \let\endverbatim=\endtrivlist \expandafter\let\csname endverbatim*\endcsname =\endtrivlist \def\comment{\@bsphack \let\do\@makeother\dospecials\catcode`\^^M\active \let\verbatim@startline\relax \let\verbatim@addtoline\@gobble \let\verbatim@processline\relax \let\verbatim@finish\relax \verbatim@} \let\endcomment=\@esphack \@ifundefined{vrb@catcodes}% {\def\vrb@catcodes{% \catcode`\!12\catcode`\[12\catcode`\]12}}{} \begingroup \vrb@catcodes \lccode`\!=`\\ \lccode`\[=`\{ \lccode`\]=`\} \catcode`\~=\active \lccode`\~=`\^^M \lccode`\C=`\C \lowercase{% \gdef\verbatim@start#1{% \verbatim@startline \if\noexpand#1\noexpand~% \let\next\verbatim@ \else \def\next{\verbatim@#1}\fi \next}% \gdef\verbatim@#1~{\verbatim@@#1!end\@nil}% \gdef\verbatim@@#1!end{% \verbatim@addtoline{#1}% \futurelet\next\verbatim@@@}% \gdef\verbatim@@@#1\@nil{% \ifx\next\@nil \verbatim@processline \verbatim@startline \let\next\verbatim@ \else \def\@tempa##1!end\@nil{\toks@{##1}}% \@tempa#1\@nil \@temptokena{!end}% \edef\next{\noexpand\verbatim@test\the\toks@\noexpand~}% \fi \next}% \gdef\verbatim@test#1{% \let\next\verbatim@test \if\noexpand#1\noexpand~% \expandafter\verbatim@addtoline \expandafter{\the\@temptokena}% \verbatim@processline \verbatim@startline \let\next\verbatim@ \else \if\noexpand#1 \@temptokena\expandafter{\the\@temptokena#1}% \else \if\noexpand#1\noexpand[% \let\@tempc\@empty \let\next\verbatim@testend \else \expandafter\verbatim@addtoline \expandafter{\the\@temptokena}% \def\next{\verbatim@#1}% \fi\fi\fi \next}% \gdef\verbatim@testend#1{% \if\noexpand#1\noexpand~% \expandafter\verbatim@addtoline \expandafter{\the\@temptokena[}% \expandafter\verbatim@addtoline \expandafter{\@tempc}% \verbatim@processline \verbatim@startline \let\next\verbatim@ \else\if\noexpand#1\noexpand]% \let\next\verbatim@@testend \else\if\noexpand#1\noexpand!% \expandafter\verbatim@addtoline \expandafter{\the\@temptokena[}% \expandafter\verbatim@addtoline \expandafter{\@tempc}% \def\next{\verbatim@!}% \else \expandafter\def\expandafter\@tempc\expandafter {\@tempc#1}\fi\fi\fi \next}% \gdef\verbatim@@testend{% \ifx\@tempc\@currenvir \verbatim@finish \edef\next{\noexpand\end{\@currenvir}% \noexpand\verbatim@rescan{\@currenvir}}% \else \expandafter\verbatim@addtoline \expandafter{\the\@temptokena[}% \expandafter\verbatim@addtoline \expandafter{\@tempc]}% \let\next\verbatim@ \fi \next}% \gdef\verbatim@rescan#1#2~{\if\noexpand~\noexpand#2~\else \@warning{Characters dropped after `\string\end{#1}'}\fi}} \endgroup \def\verbatiminput{\begingroup \@ifstar\sverbatim@input\verbatim@input} \def\sverbatim@input#1{\@verbatim \@input{#1}\endtrivlist\endgroup\@doendpe} \def\verbatim@input#1{\@verbatim \frenchspacing \@vobeyspaces \@input{#1}\endtrivlist\endgroup\@doendpe} \begingroup \lccode`\~=`\^^M \lowercase{% \gdef\verb{\begingroup \verbatim@font \catcode`\^^M\active \def~{\endgroup\@latexerr{\string\verb\space command ended by end of line.}\@ehc}% \let\do\@makeother \dospecials \@ifstar\@sverb{\@vobeyspaces \frenchspacing \@sverb}}} \endgroup \def\@sverb#1{% \catcode`#1\active \lccode`\~`#1% \lowercase{\let~\endgroup}% \leavevmode\null} \endinput %% %% End of file `verbatim.sty'. ctsim-6.0.2/doc/ctsim-sgp.tex0000644000175000017500000001236110667176710015063 0ustar kevinkevin\chapter{Simple Graphics Package}\label{sgp}\index{Simple Graphics Package} \setheader{{\it Appendix \thechapter}}{}{}{\ctsimheadtitle}{}{{\it Appendix \thechapter}}% \ctsimfooter% Simple Graphics Package was created in 1980 by Kevin Rosenberg and is modelled after the hypothetical graphics library described by Foley and van Dam\cite{FOLEY82}. It is designed to be platform-independent. \section{Transformation Sequence} \latexonly{ \parbox{11cm}{ \centerline{Master coordinate (MC) level} \centerline{$\downarrow$} \centerline{Apply \emph{Current transformation matrix}} \centerline{$\downarrow$} \centerline{World coordinate (WC) level} \centerline{$\downarrow$} \centerline{Clipping against Window} \centerline{$\downarrow$} \centerline{Convert to Normalized device coordinates (NDC)} \centerline{$\downarrow$} \centerline{Clipping against Viewport} \centerline{$\downarrow$} \centerline{Convert to Physical device coordinates (PDC)} }} \latexignore{ \centerline{Master coordinate (MC) level} \centerline{Apply \emph{Current transformation matrix}} \centerline{World coordinate (WC) level} \centerline{Clipping against Window} \centerline{Convert to Normalized device coordinates (NDC)} \centerline{Clipping against Viewport} \centerline{Convert to Physical device coordinates (PDC)} } \section{Functions}% \subsection{Master coordinate functions} \begin{twocollist} \twocolitem{\texttt{setWindow(xmin,ymin,xmax,ymax)}}{Set window for world coordinates} \twocolitem{\texttt{moveAbs(x,y)}}{Move graphics cursor to absolute position} \twocolitem{\texttt{moveRel(dx,dy)}}{Move graphics cursor relative to current position} \twocolitem{\texttt{pointAbs(x,y)}}{Draw point at current position} \twocolitem{\texttt{pointRel(dx,dy)}}{Draw point relative to current position} \twocolitem{\texttt{lineAbs(x,y)}}{Draw line from current position to absolute position} \twocolitem{\texttt{lineRel(dx,dy)}}{Draw line from current position to position relative to current position} \twocolitem{\texttt{markerAbs(x,y)}}{Draw marker at current position} \twocolitem{\texttt{markerRel(dx,dy)}}{Draw marker relative to current position} \twocolitem{\texttt{polylineAbs(x[],y[],n)}}{Draw a series of lines to absolute position} \twocolitem{\texttt{polylineRel(dx[],dy[],n)}}{Draw series of lines relative to current position} \twocolitem{\texttt{drawString(str)}}{Draw text string at current positon} \twocolitem{\texttt{drawCircle(r)}}{Draw circle at current positon} \twocolitem{\texttt{drawArc(r,start,stop)}}{Draw arc with center at current positon} \twocolitem{\texttt{drawRect(xmin,ymin,xmax,ymax)}}{Draw rectangle} \end{twocollist} \subsection{Normalized coordinate functions}% \begin{twocollist} \twocolitem{\texttt{Viewport(xmin,ymin,xmax,ymax)}}{Viewport for window in NDC} \twocolitem{\texttt{stylus(x,y,beam)}}{Draw a line from current position if beam = 1, otherwise move stylus to new position} \twocolitem{\texttt{markerNDC(xndc,yndc)}}{Draw marker at NDC position} \end{twocollist} \subsection{Master coordinate to World coordinate transformations}% These transformation functions operate on the \emph{Current transformation matrix} (CTM). \begin{twocollist} \twocolitem{\texttt{clearCTM()}}{Sets the CTM to an identity matrix} \twocolitem{\texttt{preTranslate(x,y)}}{Apply translation to CTM} \twocolitem{\texttt{postTranslate(x,y)}}{Apply translation to CTM} \twocolitem{\texttt{preScale(x,y)}}{Apply scale to CTM} \twocolitem{\texttt{postScale(x,y)}}{Apply scale to CTM} \twocolitem{\texttt{preRotate(angle)}}{Apply rotation to CTM} \twocolitem{\texttt{postRotate(angle)}}{Apply rotation to CTM} \twocolitem{\texttt{preShear(x,y)}}{Apply shear to CTM} \twocolitem{\texttt{postShear(x,y)}}{Apply shear to CTM} \end{twocollist} \subsection{Coordinate transformation functions}% \begin{twocollist} \twocolitem{\texttt{transformMCtoNDC(\&x,\&y)}}{Convert from master coordinates to NDC} \twocolitem{\texttt{transformNDCtoMC(\&x,\&y)}}{Convert from NDC to master coordinates} \end{twocollist} \subsection{State functions} \begin{twocollist} \twocolitem{\texttt{eraseWindow()}}{Clears the screen} \twocolitem{\texttt{setColor(color)}}{Set current pen color} \twocolitem{\texttt{setLinestyle(style)}}{Set current pen style} \twocolitem{\texttt{setLinewidth(width)}}{Set current pen width} \twocolitem{\texttt{setTextColor(foreground, background)}}{Set text colors} \twocolitem{\texttt{setMarker(type,color)}}{Set marker attibutes} \twocolitem{\texttt{setRasterOp(rasterOp)}}{Set raster operator} \end{twocollist} \section{Coordinate Mapping} \subsection{Dimensions} Window (World Coordinates): $X_{wmin}, X_{wmax}, Y_{wmin}, Y_{wmax}$ \\ Viewport (Normalized Device Coordinates): $X_{vmin}, X_{vmax}, Y_{vmin}, Y_{vmax}$\\ Physical (Physicial Device Coordinates): $X_{pmax}, Y_{pmax}$\\ \subsection{Formulas} To convert from Master coordinates to World coordinates: \\ \centerline{Apply \emph{current transformation matrix}} To convert from WC to NDC:\\ \begin{equation} X_{ndc} = X_{vmin} + (X_{vmax} - X_{vmin}) (X_{wc} - X_{wmin}) / (X_{wmax} - X_{wmin}) \end{equation} \begin{equation} Y_{ndc} = Y_{vmin} + (Y_{vmax} - Y_{vmin}) (Y_{wc} - Y_{wmin}) / (Y_{wmax} - Y_{wmin}) \end{equation} To convert from NDC to PDC: \begin{equation} X_{pdc} = X_{ndc} X_{pmax} \end{equation} \begin{equation} Y_{pdc} = X_{ndc} Y_{pmax} \end{equation} ctsim-6.0.2/doc/ctsimfig4.fig0000644000175000017500000000576710667176710015027 0ustar kevinkevin#FIG 3.2 Portrait Center Inches Letter 100.00 Single -2 1200 2 6 1677 3240 6690 7035 6 1677 3240 6690 7035 5 1 0 1 4 7 50 0 -1 3.000 0 1 0 0 3797.050 4965.138 2977 3952 2640 4365 2505 5137 5 1 2 1 4 7 50 0 -1 3.000 0 0 0 0 4205.741 5134.375 5130 3712 5902 5145 5085 6585 5 1 0 1 -1 7 50 0 -1 0.000 0 0 0 0 3670.500 5782.500 3845 5745 3845 5820 3820 5880 6 4775 6037 6049 6442 6 5180 6067 5413 6412 4 0 0 50 0 31 20 0.0000 4 225 90 5180 6292 l\001 4 0 0 50 0 31 14 0.0000 4 150 135 5278 6367 p\001 -6 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 4775 6149 4865 6149 4902 6314 4940 6044 5165 6037 4 0 0 50 0 31 20 0.0000 4 225 195 4947 6299 2\001 4 0 0 50 0 31 20 0.0000 4 300 480 5420 6329 = f\001 4 0 0 50 0 31 14 0.0000 4 105 120 5929 6442 v\001 -6 6 4650 4555 5055 5755 6 4822 5080 5055 5425 4 0 0 50 0 31 20 0.0000 4 225 90 4822 5305 l\001 4 0 0 50 0 31 14 0.0000 4 150 135 4920 5380 p\001 -6 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 1 2 0 0 1.00 60.00 120.00 0 0 1.00 60.00 120.00 4680 4555 4680 5755 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 4 4695 4990 4785 5095 4730 5080 4830 5205 -6 6 3952 3338 4987 3720 6 4357 3375 4590 3720 4 0 0 50 0 31 20 0.0000 4 225 90 4357 3600 l\001 4 0 0 50 0 31 14 0.0000 4 150 135 4455 3675 p\001 -6 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 3952 3457 4042 3457 4079 3622 4117 3352 4342 3345 4 0 0 50 0 31 20 0.0000 4 225 195 4124 3607 2\001 4 0 0 50 0 31 20 0.0000 4 300 300 4627 3578 =f\001 4 0 0 50 0 31 14 0.0000 4 150 60 4927 3720 l\001 -6 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 4782 4552 3605 5737 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 4 3935 5422 4520 5940 4340 5865 4677 6165 2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2 4205 5139 5058 5134 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2 0 0 1.00 90.00 180.00 6600 4485 6600 3270 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 3335 5148 4188 5143 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 2487 5148 3340 5143 2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2 5902 3240 5902 7035 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 3590 4545 4197 5145 2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 3590 4545 4790 4545 4790 5745 3590 5745 3590 4545 2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2 5053 5139 5906 5134 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 2986 3949 3593 4549 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 4 3269 4207 3667 3735 3599 3907 3899 3547 2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 4 2490 5205 2512 5302 3547 5302 3570 5167 2 1 0 1 0 7 50 0 -1 3.000 0 0 -1 0 0 4 2962 5310 2835 5625 2932 5520 2745 5917 2 1 0 1 4 7 50 0 -1 3.000 0 0 -1 0 0 4 4200 5400 4605 5872 4545 5685 4777 6022 2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 3 2497 5152 5902 7035 5895 7035 2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2 2497 5122 5895 3285 2 1 2 1 4 7 50 0 -1 3.000 0 0 -1 0 0 3 4194 4294 4200 5137 4189 5986 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2 0 0 1.00 90.00 180.00 6615 7035 6615 6165 4 0 0 50 0 31 14 0.0000 4 150 1605 1860 6052 dFocalPastPhm\001 4 0 0 50 0 31 14 0.0000 4 105 690 1677 5216 source\001 4 0 0 50 0 31 14 1.5708 4 150 960 6690 5835 detectors\001 4 0 0 55 0 32 14 0.0000 4 105 135 3892 5907 a\001 -6 -6 ctsim-6.0.2/doc/scangeometry.ai0000644000175000017500000034236210667176710015455 0ustar kevinkevin%PDF-1.4 %âãÏÓ 1 0 obj << /Type /Catalog /Pages 2 0 R >> endobj 2 0 obj << /Type /Pages /Kids [ 3 0 R ] /Count 1 >> endobj 3 0 obj << /Type /Page /MediaBox [ 156 246 456 546 ] /Parent 2 0 R /Rotate 0 /PieceInfo << /Illustrator 30 1 R >> /LastModified (D:20010216141549-06'00') /ArtBox [ 181.25 269.60352 487.33301 504.53125 ] /Group 201 0 R /Thumb 204 0 R /TrimBox [ 156 246 456 546 ] /Contents 206 0 R /Resources << /ExtGState << /R1 29 1 R /R2 103 1 R /R4 144 0 R >> /Pattern << /P1 107 1 R /P2 162 0 R >> /Font << /F1 126 0 R >> /XObject << /Fm4 141 0 R /Fm8 157 0 R /Fm12 181 0 R /Fm16 197 0 R >> /ProcSet [ /PDF /Text ] >> >> endobj 5 0 obj << /CreationDate (D:20010215174020-06'00') /Creator (Adobe Illustrator 9.0) /Producer (Adobe PDF library 4.800) /Title (scangeometry.ai) /ModDate (D:20010216141549-06'00') >> endobj 29 1 obj << /SA false /OP false /op false /AIS false /ca 1 /CA 1 /BM /Normal /HT /Default >> endobj 30 1 obj << /Private 31 1 R /LastModified (D:20010216141549-06'00') >> endobj 31 1 obj << /CreatorVersion 9 /ContainerVersion 9 /RoundtripVersion 9 /AIMetaData 32 1 R /AIPrivateData1 35 1 R /AIPrivateData2 43 1 R /AIPrivateData3 59 1 R /AIPrivateData4 67 1 R /AIPrivateData5 83 1 R /AIPrivateData6 91 1 R /NumBlock 6 >> endobj 32 1 obj << /Length 1456 >> stream %!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 9.0 %%AI8_CreatorVersion: 9.0 %%For: (Kevin Rosenberg) ( ) %%Title: (C:\\ctsim\\doc\\scangeometry.ai) %%CreationDate: 2/16/2001 2:15 PM %%BoundingBox: 181 269 488 505 %%HiResBoundingBox: 181.25 269.6035 487.333 504.5313 %%DocumentProcessColors: Cyan Magenta Yellow Black %%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0 %%+ procset AGM_Gradient 1.0 0 %%+ procset Adobe_ColorImage_AI6 1.3 0 %%+ procset Adobe_Illustrator_AI5 1.3 0 %%+ procset Adobe_pattern_AI5 1.0 0 %%+ procset Adobe_cshow 2.0 8 %%+ procset Adobe_shading_AI8 1.0 0 %AI5_FileFormat 5.0 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) %%+ Options: 1 16 0 1 0 1 0 0 0 0 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 2 3 4 %%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 () %AI3_TemplateBox: 306.5 395.5 306.5 395.5 %AI3_TileBox: 169 -233 755 533 %AI3_DocumentPreview: None %AI5_ArtSize: 300 300 %AI5_RulerUnits: 2 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI9_OpenToView: 23 595 2 1345 943 18 0 1 11 68 1 0 1 1 1 0 %AI5_OpenViewLayers: 7 %%PageOrigin:169 -233 %%AI3_PaperRect:-13 779 599 -13 %%AI3_Margin:13 -13 -13 13 %AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 0 %%EndComments endstream endobj 35 1 obj << /Length 7978 >> stream %%BoundingBox: 181 269 488 505 %%HiResBoundingBox: 181.25 269.6035 487.333 504.5313 %AI7_Thumbnail: 128 100 8 %%BeginData: 7450 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD29FF7DA87DA8A8A87DA8A8A87DFD06A8FD6AFF7DA87D7DA8FD11 %FF7D7D7DA8A8FD62FF7DA87DFD1AFFA87DA8A8FD5CFF7DA87DFD20FFA87D %A8A8FD57FFA87DFD26FFA87DFD54FF7DA8FD2AFF7D7DA8FD4FFFA87DFD2E %FFA87DFD4CFFA87DA8FD31FF7DA8FD49FF7DA8FD34FFA87DFD47FF52FD38 %FF7DA8FD43FFA87DFD3AFFA87DFD41FF7DA8FD3DFF52FD3FFF7DA8FD3FFF %7DFD3DFF7DA8FD41FF52FD3BFF7D5227527D7DA8A8A87DA8A8A87DA8A8A8 %7DA8A8A87DA8A8A87DA8A8A87DA8FD087DA8A87DA8A8A87DA8A8A87DA8A8 %A87DA8A8A87DA8A8A87DA8A8A87DA8A87D7DFD39FF7DA87DF8277DFD17FF %7D7D7DA8FD06FFA8A87D7DA8FD19FF7DFF52FD37FF7DFFFFA8F87DA8FD15 %FFA87DFD0FFF7DA8FD17FFA8FFFF7DFD35FF7DA8FFFFA87DFF7DA8FD12FF %7D7DFD12FFA87D7DFD15FF7DFFFFFF7DFD33FFA8A8FFFFFFA8FFFFFF7DA8 %FD0FFFA87DFD17FF7DFD14FFA8FD04FF7DFD32FF7DFD04FFA8FD04FF7DA8 %FD0DFF7DA8FD19FF7DA8FD12FF7DFD04FFA87DFD30FF7DFD05FFA8FD05FF %7DFD0CFF7DFD1CFFA8A8FD11FFA8FD05FF7DFD2FFF7DFD06FFA8FD06FF7D %A8FD08FFA87DFD1EFFA87DFD10FF7DFD06FF7DFD2DFFA8A8FD06FF7DFD07 %FF7DA8FD06FFA87DFD21FF7DFD0FFFA8FD06FFA8A8FD2CFF7DFD07FFA8FD %08FF7DA8FD05FF7DFD22FFA87DFD0EFF7DFD07FF7DFD2BFFA8FD08FFA8FD %09FF7DA8FFFFFF7DFD24FFA8FD0EFFA8FD08FF7DFD2AFF7DFD08FFA8FD0A %FF7DA8FFA8A8FD25FF7DFD0DFF7DFD08FFA8A8FD28FF7DFD09FFA8FD0BFF %7DFF7DFD27FF7DFD0CFFA8FD09FF7DFD27FFA87DFD09FFA8FD0CFF52FD0B %FF27527DFD0DFF7D5252FD0AFFA87DFD0BFF7DFD09FFA8A8FD26FFA8FD0A %FFA8FD0BFFA8A87DFD09FF52522752FD0CFFA852275252FD0AFFA8FD0BFF %A8FD0AFF7DFD26FF7DFD0AFFA8FD0BFF7DFFFF52FD07FF7D522752277DFD %0BFF5227522752A8FD09FFA87DFD0AFF7DFD0AFFA8A8FD24FF7DFD0BFF7D %FD0AFFA8A8FFFFFF7DFD06FF522752275252FD0BFF27522752277DFD0AFF %7DFD0AFFA8FD0BFF7DFD24FF7DFD0BFFA8FD0AFF7DFD05FF52FD05FF2752 %27522752A8FD09FF7D522752275252FD0BFF7DFD09FF7DFD0BFF7DFD24FF %7DFD0BFFA8FD09FFA8A8FD06FF7DFFFFFFA8522752525227A8FD09FF7D27 %5252522752FD0BFFA8FD09FFA8FD0CFF7DFD22FF7DFD0CFFA8FD09FF7DFD %08FF7DFFFFA82752275227527DFD09FF52522752275227FD0BFFA8A8FD08 %FF7DFD0CFF7DFD22FFA8FD0CFFA8FD09FF7DFD09FF7DFF7D522752275227 %A8FD09FF7D275227522752A8FD0BFF7DFD08FFA8FD0CFF7DFD22FF7DFD0C %FFA8FD08FFA8A8FD0AFF527D2752275227527DFD09FF52522752275227A8 %FD0BFF7DFD08FF7DFD0DFF7DFD20FF7DFD0DFFA8FD08FF7DFD0CFFFD0452 %275252A8FD09FF7D525227525252A8FD0CFFA8FD07FFA8FD0DFFA8FD20FF %7DFD0DFFA8FD08FF7DFD0CFF7D2752275227527DFD09FF52522752275227 %A8FD0CFF7DFD07FF7DFD0DFF7DFD20FFA8FD0DFF7DFD07FFA8A8FD0CFFA8 %522752275227A8FD09FF7D275227522752FD0DFFA8FD07FFA8FD0DFFA8FD %20FFA8FD0DFFA8FD07FFA8FD0EFF275227522752A8FD09FF7D5227522752 %27FD0DFF7DFD07FF7DFD0DFFA8A8FD1FFFA8FD0DFFA8FD07FF7DFD0EFF52 %2752525227FD0AFFA827525252277DFD0EFFA8FD06FFA8FD0EFF7DFD1EFF %7DFD0EFFA8FD07FF7DFD0EFF525227522752FD0BFF52275227527DFD0EFF %7DFD06FF7DFD0EFFA8FD1EFFA8FD0EFFA8FD07FFA8FD0FFF2752275252FD %0BFF7D52275252FD0FFFA8FD06FFA8FD0EFF7DFD1EFF7DFD0EFFA8FD07FF %A8FD0FFF7D275252FF7DFD0BFF275227A8FD0FFFA8FD06FF7DFD0EFF7DFD %1EFFA8FD0EFFA8FD07FFA8FD10FFA87DFFFFA87DFD0BFF7DA8FD10FFA8FD %06FFA8FD0EFFA8FD1EFF7DFD0EFFA8FD07FFA8FD15FFA87DFD1CFFA8FD06 %FF7DFD0EFFA8FD1EFFA8FD0EFF7DFD06FFA8A8FD16FFA87DFD1BFF7DFD06 %FFA8FD0EFFA8FD1EFF7DFD0EFFA8FD06FF7DFD18FFA87DFD1AFFA8FD06FF %7DFD0FFFA8FD1DFFA8FD0EFFA8FD06FFA8FD1AFF7DFD19FFA8FD06FFA8FD %0FFFA8FD1DFF7DFD0EFFA8FD06FF7DFD1AFFA87DFD18FF7DFD06FF7DFD0F %FF7DFD1DFFA8FD0EFFA8FD07FFA8FD1AFFA87DFD17FFA8FD06FFA8FD0EFF %A8A8FD1DFF7DFD0EFFA8FD07FFA8FD1BFFA87DFD16FFA8FD06FF7DFD0EFF %A8FD1EFFA8FD0EFFA8FD07FFA8FD1CFFA8A8FD15FFA8FD06FFA8FD0EFFA8 %FD1EFF7DFD0EFFA8FD07FFA8FD19FF52A8FFFF7DA8FD14FFA8FD06FF7DFD %0EFFA8FD1EFF7DFD0EFF7DFD07FF7DFD17FF7D527D7D7DFFFFA8A8FD13FF %7DFD06FFA8FD0EFF7DFD1EFF7DFD0EFFA8FD07FF7DFD15FFA85252FFA852 %A8FFFFFF7DA8FD12FF7DFD06FF7DFD0EFFA8FD1EFFA8FD0EFFA8FD07FF7D %FD15FFA8A8FFA87DFD06FFA8A8FD10FFA8A8FD06FFA8FD0EFF7DFD1EFF7D %FD0EFFA8FD07FFA8A8FD20FFA8A8FD0FFF7DFD07FF7DFD0EFFA8FD1FFF7D %FD0DFFA8FD08FFA8FD0AFFA8A8A8FD0BFF7DA87DFD06FFA8A8FFFFFF7D7D %A8FD08FFA8FD07FFA8FD0EFF7DFD1FFF7DFD0DFFA8FD08FF7DFD09FFA827 %272752FD0AFF7D7DFD08FFA8A8FFFD0427A8FD07FF7DFD07FF7DFD0DFF7D %FD20FF7DFD0DFFA8FD08FFA8FD09FFA827522752FD15FFA87D52275227FD %07FFA8FD08FFA8FD0DFFA8FD20FF7DFD0DFFA8FD08FFA8A8FD08FF7D2727 %2752FD16FF7D27272752A8FD06FF7DFD08FF7DFD0DFF7DFD20FFA8A8FD0C %FF7DFD09FF7DFD09FFA87D7DFD18FF7D7DA8FD08FF7DFD08FFA8FD0DFFA8 %FD21FF7DFD0CFFA8FD09FFA8A8FD24FF7DA8FD07FF7DFD09FF7DFD0CFF7D %A8FD21FFA8FD0CFFA8FD0AFFA8FD25FF7DFD07FFA8FD09FFA8FD0CFF7DFD %22FFA8A8FD0BFFA8FD0AFF7DFD26FF7DA8FD04FFA87DFD09FF7DFD0CFF7D %FD23FF7DFD0BFFA8FD0BFF7DFD26FF7DFD04FF7DFD0AFFA8FD0BFFA8FD24 %FFA8FD0BFFA8FD0BFF7DFD27FF7DA8FFA8A8FD0AFF7DFD0BFF7DFD25FFA8 %FD0AFFA8FD0CFF7DFD27FF7DFF7DFD0BFFA8FD0AFFA8A8FD25FF7DFD0AFF %A8FD0CFF7DA8FD27FF52A8FD0BFF7DFD0AFF7DFD27FFA8FD09FF7DFD0DFF %7DFD27FF7D7DFD0BFFA8FD0AFF7DFD27FF7DFD09FFA8FD0EFF7DFD25FF52 %FFA87DFD0AFF7DFD09FF7DFD29FFA8FD08FFA8FD0EFFA8A8FD23FF7DFD04 %FF7DFD09FFA8FD08FFA8A8FD29FF7DFD08FFA8FD0FFF7DA8FD21FF7DA8FD %04FFA87DFD08FF7DFD08FF7DFD2BFF7DFD07FFA8FD10FFA8A8FD1FFF7DA8 %FD06FFA87DFD07FFA8FD07FFA8A8FD2BFFA8A8FD06FFA8FD11FF7DA8FD1D %FF7DA8FD08FFA87DFD06FF7DFD07FF7DFD2DFF7DFD06FFA8FD12FFA87DFD %1BFF7DA8FD0BFF7DFD05FFA8FD06FF7DFD2EFFA87DFD05FFA8FD13FFA87D %FD18FFA852FD0DFFA87DFD04FF7DFD05FF7DA8FD2FFFA8A8FD04FF7DFD15 %FF7DA8FD15FF7DA8FD10FF7DFFFFFFA8FD04FFA87DFD31FF7DFD04FFA8FD %16FFA87D7DFD11FF7D7DA8FD11FFA87DFFA87DFD04FF7DFD33FF7DFFFFFF %A8FD19FF7DA8A8FD0BFFA8A87DFD15FFA8A8277DFFFFFF7DFD35FF52FFFF %A8FD1BFFA87DA87DA87DA87D7D7DA87DA8FD17FFA827F852FFFFA8A8FD36 %FF7DFFA8FD3FFF7D52F827FFA8A8FD38FF52A87DA827A87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D527DA852A8A8FD3A %FF7D7DF852FD3CFF7D2752A8A8FD3BFF7DF8F827A87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87D7DF8F852FD3EFF5227FD %3CFF5252A8FD40FF52A8FD3AFFA87DA8FD42FFA8A8FD38FFA87DFD45FFA8 %7DA8FD18FFA852A8A8FD19FF7DA8FD48FFA87DFD17FFA852FF7DFD17FFA8 %7DFD4CFF7DA8FD15FF7DA8A8A87DFD14FFA87DA8FD4EFFA87DA8FD13FF52 %A8A8FFA8FD13FF7DA8FD52FFA87DA8FD11FF7DFFFFFF7DFD10FFA87D7DFD %56FFA87D7DFD0EFFA852FD12FFA87DA8FD5BFF7DA87DFD1CFF7D7DA8A8FD %60FF7DA87DA8FD14FFA8A87DA8FD68FFA87DA87D7D7DA87DA8FFFFA8A87D %A87DA87DA87DFD74FFA8A87DA8FDCCFFFF %%EndData endstream endobj 43 1 obj << /Filter [ /FlateDecode ] /Length 47 1 R >> stream H‰ìWmoܸþÀÿAý AkK$EJ4Š¢^rn›Øpì+Ò¤X(³+D+íé%¹í¯ïCrw½öÙð]?ÇãµµÃyãÌ3Cê埮ޟ&uÿYŸ²³À;yñòe:èrê‡sϲ½‹¶Çi0¬Wׯ=y¡ä"^ìÖÃØôÝù~©0º¯þ¡¿5wݺû¬‡åkï•÷Ú¬Þ4S«±žžúTMc³þô©î«OŸÆªì–º_ëiØž•ÍëC$0•T¨O„Oƒ€xôœpïê­QýÜÕM·Tý¯ç‰±&¤ƱÇnÖj®õøPèŒr#w&Æ!1Æ žqF˜ÑÊúj^ënºúJcÚ·ý0ž{é¶ì¼·å+¥÷A·mÿÝSmY}=Ö)ún‚ìÛíДõéu¿.;³ügï¦Yëñôb*Û¦:Vx§u­ëÿS »ëçAž{;êÉ•mÑêoº¥‹ä‚{د8c÷e¦í¦_åfµÝÉy ÷æíâÍPÖ ÚõGíØü\¬‘ØcËAiçð ÁM9MzèQ=*T+äŸb9~ly\•¦æ°lÀÞ¢hZ ˆ®ËÉãgŽÉÜnGìU6Ï–-ì¦Þëi‚%¤ØÆqýFã\K¯>^ëec·ÈþçµëáL¿×›Ò-À0zeR•é/åÜNΧw'…Çéµç¶u¹1œÑj 8"»#â(>0ötJÌïØoŸÌ3õ˜:?WW™ñA€¼]"¿Q»£W6H“Á½Þ´èSÛc,gÜc’›¿wÏ{QTÀµ"zõ”¢÷"Î=ÎØný®û0Cô÷sï]ßé]õ’azßüWùìØ×s«‡Û®1-D-OºÄ¿íkÝž[XïÔ‹¶´¥<Ú•ý»“¸)‡¥žL[µódÇZ|ðòn^ÿ³Üj3 ÈÎÉåFw7ýÏ6LŠ!"MÎCêdÈ\YPâ‰xW7C{{FÙ¨îF¦W@ÜåÐ,›î|Ÿ%¶¸*7z¸ÖÕt~J´HÂ$ÈAà-‚7zÌ0퇰’ß M}äˆz±ûc÷~}äþ³Û"†nìvèÏ»:íצ<£¿À|‡vhû¥ùzÑUí\ëýTú=Cé•§fÔÓjެg¼<5ÁžQ{r =£÷è|{FçÁ¸{Fú±égjwW*[9 bÞœ¼øxò‚Iÿ—¹Ÿô­V{RøÈú7 G ŸËQû_«¦sÜú³ãá0l6cLøu¹\êa÷ë~Õ hè/­þÕ~§U?eWûï«rè;97­µÝê/“™{$äζaÀž}FC¬¦ƒK+ºÿâ–>ÏàN¾îêr\ùzmÿMM[kªõºpLûã§N¹×~Ýã^2ŽG¸ô?=vÒÞTeÛõ“¿ÚnVºó{^@±ö×eeÂBZQTAsýé{?ÎHZÓþ´´>|+«yÒþzÆŒa¾åÕo­UºnÚ¶„% ΃Z—c5·6¢86‹¿Ìåó¸*Û/ÎÇŽ9zDR?±0€©ÄyLŽª™¸ü&‡Ý'f~’ûé.?·ê~n•a%?RÏzN깸8’¹8ÈäÓÊgÂÌ¥S¸t —G —.¦ËƒÞçk³i·þåØLÜî7të”o”oZÜâͪ€ëB¨~é—ûý”GÚ¥s]Œ”6¥ö«}:´S×κ¾S†)}ÐkœT㤚#ÍAF#sØ;ñ~S¤ÐïDzuó­1 —ŒÙ©ÎÎÓ|/žù ³uË“MÆvÏ>yq“»ƒŒÿ}q3âÈ>:©ÙÂΗ¼«z3‡Î½ÅñÍöÁ5÷£oÕ¿'ê蛟X«a{›nÒÝl7úDq|›~pµFÇ ÿžèxªÛíÖïþÂëÎmוk]{ËýÉ$pA|Œkïdª¶3ù¯'/Š¢È‹¬H U$…,â"*DÁ‹°`-HäEžçYžæ*Or™Çy”‹œçaÎrš“<ÈŠ,ϲ,ÍT–d2ÃÑ‘E™Èxf,£É‚´Hó4KÓT¥I*Ó8R‘ò4LYJS’ªP¹ÊTª”J”T±Š”P\…Š)ªˆÂÁ’IždIš¨$Id'Q"ž„ KhB’@2—™L¥’‰”2–‘’ËP2I%‘A\ÄyœÅi¬â$–1bŒ£XÄ<cÓ˜ÄATDy”Ei¤¢$’QE‘ˆxF,¢‰Qˆ\d"J$BŠXDB.BÁD F^ðœg<åŠ'¸¤Å<â‚srÆ)'x÷+Â<ÌÂ4TaÊ0£P„< CÒ„+XÎ2–2Å&bdŒ³ïޝ-hN3šRE*iL#*(§!e”RBRœd$%Š$Dâ-4"‚pF(!1(g€‚*@Òl;B `< æú7y/j°ð0W7n€ Î{ànq`¨ÑÚ/Ð;¬±Œ„Êv`œ÷P=†ï}t…6ÙSéî òi€«¶¬¾þÅûת™´w vÙ„?Æ>†x°ÿÖƒ?öCž$êé=bGÞ#~DbGÑŽbKÒ,JÔÆ‘²”‚2K9¨0dƒp?(<êËPe€ õ¨z„Úö@ABª¨€ 4"ÐQØ0 ðH9À% L)`+Æ „O À€= F," 3B1’Y-à–¿8Ž€g \§@xØ$îCt@„N艽Q`ÓÃÑ;1ºH¡Ÿr$×môGÇÅè¾}X 'ú3B·*tníà} Ës$‡¡ÿ#Lƒ4)0#BÌ ‰ R`¢pÌ—S(ÀRHYˆ™•"i3M`ºILº¬(,ÖÌ¿óïáüû‰˜ø‰ÿ±_6=rWÝ Ð˜dc°øÍ ~4l²p–Y dÚÈ@$?çÝWU,6{4Ɇe |‚Fêé®.ß»÷Üÿ÷ÄK=ÑœT=U‘߃ÐãÄL™øÉ^öŸõ#–zðë×pUAMþéßï “ô“Õšýucƒn®× ú-ÞCÌ#dyT=+ëøJg8j/ë=¿¢~«Óz÷õN=»Z\±{¡úWì®X³¸ë×Tÿòú¬x·ëâ ¥zt"ÏP—ïú~ÅÏ®x×ëµgqÚ-+¾æžWó¨XñòŠ‹y>‹„ßSn‡í[„ì„×­ÐÚ±ZP- vœL¿}#˜>@Z}é3JÏNßÁ´á40¾ÌH`j!u@ [¤²W9XÏ­7DÕð:°× {fOHñÒ#Hó®Æ ˆuƒhw‚îÇ ôEðsàrÏí ü-ÀBXÁˆ)à*ØÃŠM°"v±“Z,mÔ˜zô¶æ2a23V³b9Ƴ+Õ¬ˆ[Özìi`9{ÛŒeázX؆…Ý€zË>c㘰8n³cƒØKb€v­Ø!Œ1î<8 FÉ¡b™ æÙ¯ØV:±4oÆ\7,Wž Øný¶ž…Ü”m–MØÂ›]7Œ{·ä…‰¬œÐ‡¥7»ÇŽÍ÷vdXþˆñO·9Ö¢â Á/»öT{• ¸¹ê\Í¥ÚWTgŊݹÔùÕ·ShL^…_5°¨`ͧÀæ9´‰pƒÙE¼ÜÜãÍàÜ!Îr"æ¼}A§D`'¢N;îÀs O‚‹¯ |ú$øIø“%Jä”@= 9% r$r(r,r0r4EyçÚïëz(ázA4)e5—jSgï§|ðÎyg~wºÈ;cäSî+¶PKΚളJKÖ©Å:‰tçÌâœE„cŒ“ø&±MâšQÊ>ÓU†Ä›rØ.Ê ô]crOö–m;úžÎ4XèSF”ŽÝÕÁ6I/·FÝtö`¦CŸÏr—•Î7«ÜÅF‰hDH݀戓F˸L΢p°1K†•¨©æ†ZE ÷ÚÄšµÆ´OüSÿäyì©z TõT?5ã·œfÍ¿ùÄ_Þ¾ùæ‡W`ù§Va´wõÕX¾¹Ò›»êiè¾­yàåò¯ü„¯VÚ»ªÚvTý¨{­Ž/£í–'ÑùçQóâÛ>ïóöÝ ýöÍü§î‡ÛÇ÷ßýãÝû?~üW|eùñï>¦×þðô»ï¿[ž¾÷áãß~úÏïß¾9ý—»êŸ–÷zfmž×ª‹ ¹ªš–ÀW¢]‚·c}6‘³DÉ’ìÃÍàÊÍCÖÃmÃM£Z™]¸Y¸U˜Q„ŒXs†,N+Øe f n ²„hÉ’$+p#pˆ& @þ²YòïâoÒïÂoYu‚~¡×&èšbµ„[ ¶ :"”ÁC(òåªd9elHiÒ“ä [‘ *<΋uÆâ+¼Q½jÅO_û¹Xñ4…wœªìÝ££ÛÇ¥IèTª¡¨1Öô°è[O1<õyÅóÄÝOWu7]E¬â®?ÿº;Aÿöxrw§¦ž¨ô'¨Û§›§[§§Û¦›f› sŠø¼e£¬38"8/É £=º9º5š1º)º%º!ºººšÒ2B·A7ÁQèöçæ²ñ¹í¹é¹å¹áÕÉìö(«s£“ÍE“s‹ëQ™ÍU¹ÑZ£5-ŠÓã’#€:£B+Zt›Ø#£ÀØ•êЪÍšP®Ûбñ ¨ZwhÜ O(Þ0oèß_Ô°Áÿ;´‘=‚Øj¹ šÚ¹#oPÔeÐ× ]€öqÛa¯€ 7èq‡.hô„^/h·Íâ®ÎêVS0¨ÓÙ±a³z´?Ëõ+>`Æsìyéÿk}•+ÞEV¼Æ‰/ª—WTO„ƒ÷hCÎSªýr¹úoJ“«¥×œËÿ¿ÆÆEOÍÛ«q½uç˜VKÜ0àȹUÈ‘K„uÕ†÷Ù,|Á®¶o%Ô Þ»óš­=jÍ.®V–‘}~ø€€M…ƼÃAŸIûŸÍŸ:ÊWŒƒÉîšb m­&ÙL+#©"%[4Ök¶ÙÂBK3ˆòßܼ¼F>_¯AbÈÁt˜’qµ¹;“ýU$ã:">m¬.V `ÅáT‡Ñݰ¸{°¶[Û±´;³¼gF†=01Kvfaf`µÌkq­Ên»2³2«2£r›r“2‹2ƒ2{2s2kJÆä¶t˜ÒaIfH+­eVÔ`CfB³ hÇ|ÜzÜxÜvd:dŒZ–3ÈnÌlvÙ̀ŸÁ˜½¸¹¤É.%3AOÄ.?÷øšk»Œ¯OVÙyø¬˜Ô½¹EÅq½¤2­à9”]í–¨ÿ¥N1sMArجsÜÜbàœèsœ­GNÒ”‡Î5ÆÎ1ÏVÑ3ØÜ(~n1€N1‚v ¡µbè® º*ŠNÌâ 8Ú*2ÚŽX$]JÙc ¦­GS2œ‡Ó5ÇÓ!Ô:GÔ-†Ô)ÆÔ.Õž=*¬nWÁáIqµµVdÝch][Ç\[®äE¯kŒ¯ì1FØÖC,IÒcìƒìèQVA¶ÎQöd=Æzˆµžð»*¾ztíX-¦†ØgÀ(Ää¨åRgKý„%K²úX]®ö®šKÕÏ+>û;Ie#¹l%™¾÷@ƒ$šk2ïSn»¦Þ4i ÒH$ J{·Ñ(ˆ¡H vbG­Ã6G±¢B¼6ïŸö(Nù\c±?·´“NªQƒ;2º^}®î¨d&®?ëõ‰F%°t"["!™fM%'EF‚†¤a®bÁåÝ£óƒzNɤeg%ã€LË’’¹Ž™Š¶²¡^ÊÕ¢Y}±¢T#*Õ¢POeE™FT©E‘*zo5%’uh)Ð õ1íÐSŠghz3IkZÓiÌ*}1u1m1e1]1UAS˜Ý^šbŠbzbj2¢$¦#¨ˆ4ÄÄôÃÕõÕ#éÆY5>©Q5ª¯%­~ +þ è_1™‰·EP.h•JÞßè®wº­¡ë:(#”‘9/vÌøÇqã:3®sãˆÏà…°Üx)/ŒN´+À#F䜈¬˜SP©RP‰Q% [YbHÌã£ËØI 9š3Ôª Q|þÑ¿Oü¿LŒœ¸vûXEmRÄc¥Ò°Ÿ"~EÔ††pO´†`è ½Ú7l0î0`Θxõó›8û{˜¨?͇xÛäþÊãöÄm™¹Œ«@`pŒþUÖ×òÈï/†þŽ-húùçú;‹ýŽÁ¿‚txÒ3´p„ öÕyõÙr[Avq™àÆ !!È=„9@ =„º`W0ôš!å#$½‡´H¼‡Ô7ü Ò_€k3"ÂC@iµÁÃ*XFÅò°@e'˜ÉÀ P"<¬¦a‘(‘Ø(ñÄ:ÑÜ+…ƒ]ÕR+<®‘Õb‚¡ ¬ñbT, kÆÈ¢ÑIÕ€U:VŠecaÝY8º×£õ¬µè´T‰å£gýh­€ÔVA+!Cª!~WD–ëU$&Îb0¢QœÛH„;ƒ¿ L¼òéUÛÚþµíÄöGS°žgßÄÄ—OÚÍØ‚·3Žïìê”|&F3_ <>§uÒñœÝ,“=ëÚÊÆvJˆfBQoTò+*F)–@5œiª[íØ«ÇÕ z$íÈ•#êÆ[©Æ«4#à ¾J3.(†èTc¯ªÇŠqY/¨¢P QŒ½f¬Šñ\½ bˆ·ƒªªª!ñ‡<3ù­+ë–Òq¯¬÷ÊzPY3SùSøRm86®êNPžì½òT~/ 9ýÓûw>?ïìá;yè|'gV]Ã3õlžò‰×ÏÓYÌŠâÏÕΰs|>ëúyv]•száö/?n6—té¾72¿ìüI÷OK'V›»}²M-K®¬/B~bOÜ ½y®Ì’?ôÝçùéáo_¾>>ý°w†Ç¿¾>Å÷~?ýòéÇããN×o§}ÿnû;ÆÕ§áAùÿû׋;Tyfš˜Xm°5ÁKAgoÔè˜ØQ,{JÞ@Ùá›(~³Õ¦‚"XRE U EEUE!‹U•Æ(ŽQ“@/HXÅ%‰4ÄMª8FiTaYQIA9œE !5…0@Eˆ_ ák!zoÁíÔº7BC Èšƒ¤õ³2Ö@¾:×Ár¨ h„X0+ >ZU@fJLy™LZî5æ^cö5æÎ‰;'sâ'b&ÍH2 ÉÑ€@‚Ýcb‡êpe c‡Øà<°Êá1x@#N‹ÇRw0F<’ £Ãƒpx%€,¥—…¯¹è3\–[[–ZZ¢.r\b]`ÉÒqŸµ¼·ýj]`[â´ÈºÌ£Hg‹Ý2¦8[òØå(Rs\v4öhƒ¬Ej“T„Ô(c«´f™`ñ õ§< U‡¸ú6Çí0…ãÞgï}vÓgsâΉ;'nq"Œ?Á“ <éÿ«“Ã/E!ŸzÿîÃç ßã7åC?jŠß·ûîÁ ë·7ƒ¯þUý›Ã„ûîóüôðÇ·/_Ÿ~Ø;Ãã__Ÿâ{¿Ÿ~ùôß§o_¿?þúþ]úCüixà}c[0UOLÖ[L=dÕ .«,lÅÅ•åm¸ÄŽË,ÀãÄr+#šfwý }Êî’Þ5¿7Ìð—pagÉ㾌Æþ]¡ß—vP2í,¼!ttí l ˜6í ÒV”Šì_ ËßÞ$ºIpó „5,Øé (âR2‚mÓoÌ¿š€kТ:D?sÜSÏD®`ÉEŒå@8fË3Z&í¬"¬‹ÔdÌ]–ü§ÞòÛOÌü­°»×ÑÒ\®i]ó»¦yÍöšó5õk °'¶„¹Ð¯Ãõ¨ˆšhGx¢%ÑÒOz<å ÝEÜ¥êŠ^¸×£&žh‰@îèÄ=Ýx #tå‰Î,PÍÒEÑ ×á8â >ÇQ_â§h—ÏpÔ—ø)´ÿŽú?…>ÃQŸå§Åj©BÇH¯H.£•ʨôÒ¸õs ÏèYq«q ÷*|®¸ä¤žÈq@Ä­ä6=Þ¿{A®Ò·µ‰[“ÐC ÉQÓÛ =ÖÀ R›{ÒDˆ‚M²tôv¡Ì@ÚäbN•ËJQ”£U’öèÒë ˜xþîöÌþCz­õ…‰c”0'˜fr¨<ޝ:½ ´¶&½V¸³Ÿ\‚Oh¢œb½¹SâkH¯q'­«¸r?ÅöÕ*²|aoÅC÷\•ä÷ø§Úv¦ì͆r¬’°;)Ę8`ŽØ¥“É®J®$%ÉK.r‚Ü9Bƨ5®itM¢šA%Š8‰<©@E €¼×Дª¹Õ%4 µë4Ü6S ƒ]‡^Io×C`â]Û”0'ÄC[Ï7°y íî“éó.˜øÆÇ퉛(óÚ£<&¼û3xåÄê2˜úWÔ/DsL ¨F*A‹?!# ÈJS‹ää jÈ}‰æµ LHX’VWã‘»<5½†¾—èd U„ˆºƒøDM)èGÝJ,ÀÛ<=Ð* 8+ Ö¿`Õ¯aá+×ʳ,Is}Ú×ô‰Òx²ÐC&zÊ`|é,É´L6ΘS³;”BM ¨0hb. À$f&o\j˜¤*Ú/nikašŒYÂ-e—ðK&S–U´ï‚¢>Û„oÊ8ᮑ¼æ)÷j6žR6MF(T •‰ÂEe£ðQYʦ”ŒIËŒ›ÂNå§0T9*,UžVlt n6¾ c•³`mâ­0W¹+ì%É`å°°Xy,LV. ›•ÏÂhåt)ƒr&Ìž™»G&ðÞ.Ë*È^¦¢©¬ £Ë¢é81Ÿ¡ßª7¢½s0%¿ jœ´ôý”zjÚ·›Y·óñf>ÜÊØÂ²™¹Óf–í¼næu+?k##¢Vº™)躙u;ë†i p—i;k¤ST)ÚÕYÄÚ¬<Âù}„³àV¥Í_ª¿ìP~L†1a00Œfq5\Dа)ΜW„˜ áãUhÿí—E.ÞWÉ[Ë»ê[4Uè¥vÕªè!kWj ¨ªtÕZë7M5öTm©ÚP¥â!°CŒl‹uí ž4ê¬'H:^T„Ã\ª»•’3'Z «”™yÀ8Éb 5L$…Cï8æ6‡šÃŒQÆp/aÇÑí8®:ª‰Ã9sW_Ë¡ ½|"¤.!L¾Œ\²b³xÖ\Õ¡E43@,GÈæŒ´#Î`ÅÑ8¼‚‡´D\¹MÝ *C„W£Ûz(b€Dã­!ÕÃÑi¼ÖÙmÕ~ëè¸è¹`Ôum¾‹¹³ø®Ýy©÷š™^‹ÿÚXñ`pa45âÃ̉m^LÝXwi Ô“©+kÌò³y7&M=š¸4ñi™¾}-ní¹×ô°âËŒ &\œ˜ zfO÷ßÐégú¶‘^M}ZWy4shx•”‘¶$£Þx´âÐîû3qg6¸rhØ~84l»Ã´]ÎþèÓ0Ë»SS2·Ö êÖÜæ× v€ÍæÚ¨Ý³×–Í·‰kÉâÜÚÍ»-æÞFñoP’âá¶”yÊ™{Ò'Z·gÍcÚ¤ŸÃˆ©£«Sç²9º=uª›+N®¸¸lþmÜÝh TÞ­Ù’hqm£9¶â׊[s‡DšB±á@Q:dÒB… Kê©sÁz‘#Kv,Ù`¹¼#¨,HÝq âÀKì-¹b¯=mÔYC‡ê&{ZZÝïÓ{åž=™ì…!-¤ ÔF"¶5¬*R¥ŠQA¨às$2P)˜\€EAâŽCb„((T *þ} Q'˜´)Ög‚2A˜àËãðW3‰$ÌQ$ ;9‚ÁŒ FÐZ_|OSÜÏ µâ¤—:A•`´¹Ò‰»qG6uÀX}¸U‡ƒ6ˆ.ðÝŽÍ¿ 'BIû§æÉá¿æ¹åßö)à‹¦‘ËþúþÝ?>¾jú§ôIØ-ù­‰ƒüüÜà xuW® ñ“ÒU]_~> ÞÉe\Ìsr>rMÛjBxîÝP=à…7X÷6âéÏ`ÎV.îœüiŸ¸¶¾ÜÓõÏ=(¦~ʗݨOp~Å’¼¼2_»Ç íö žX}/¹¼œ„\ó L‡íÒ–—ùŸzû^(Ý&ŸÆ¿„—OþüëO~ùøé_öÍôñç_>•ïþðô»¿}úôÓ?>~xúÙ¾zrþ÷ïß]~ÍgLÕÀ½RÊØ>¯ØñŦV5࿲ƷŽoß:ÚÇL¿ûËÿYÓËãaúomÿÉøß³þ ÚP쿘ÿÊþï VÀ"@N1i°D [È4”@ VLCAc¡@cø—*h<ЀÀˆÀ°XHИ ¦-1&hP¨ NâÑJ+§¡A Ý$:HxÐøP„D %FH(!ak„+‘¡Bnìº-V´ŒŽ®}݆D %f$F 1Œ°Œðb­£˜G b!?ã¨EÌ"AdÚÂHb J(a,é[¾Š.ÈJËâ4¨0ª¬Œ+‹E -Z“…—‘œk‘(£Å f¨Ñ`£å­ìA®|Šr­¥0b‹UÞjÞjÚj¬*m5JÀÑ1nÁi¯pªî¦üea‹Ð±½¨Ï ô]™~U•ôÆ*o¬òÆ*o¬òЬÒI<ûUƒ‘e2Çjòêðvõ£ÅX‡D‹p×7Cy›C±Ä:»¾àêßÛËØJ ìK ”ôWáö°J5œŽýPèøàׇà8>íØ1^Ô}àÝ[m<Á÷K:z‹=®ßìa—º:–‘ÙÇ¡œÓÞéºÏ©—ö©ÎZûœ» ›Ä j)²+™QX¬¡ÄªÈ™2{Ú ;D¶H¬l‘׃´„Õdµ–Ô÷ï6IÝUå”Rº ©Ê(EÔ”òiâ©Ò)‰¤pvE4)™Ùä2™PIg™)*‹=%ÑSBb¦ ªîòךè-”;‘:¹žâæ)j å,SÈTÆ“¯"\"Y ¥*Sœ%)P€DzÊM¦ÀŒ”H éL0œ ¥!› (í’ßpø'á7á(ü-ÑÌéˆÇŽvpçˆ3º-Í NvxŠÇóžñü„uLXOƺV€Ùaë P´ÆúÞc‚àf¼Õ ˆ:¼¥ÇÛˆvÄ$ìÄ„=ÉØ›vØ+= Ø»ˆLØÉ ;š±³x3,Þa¯=v<`ç#Î á,&œI†IYñ‚§åqj§qŠ §9ÁðdœíŠMp8k38{¬(H@ÃTd cÅV9 Å5è‰ÀQž&à*_+ÔÓo¸ À_ð8—øÄ±åˆõÀm~#pœ€ç ¸ÎÀ÷ Uv@¼ò& b&bÂddLÈŠƒs˜É ˜ ¬“”0QŒkÆ|­Ðz‡y󘺀鋘„iœ`3¦s…+p˜V© ˜ßˆ9N˜ç “1ãX#`‚t`l ,w‚õÆÃa×uU„ì**ð  …¢£†Æ ß<ƒã1<®Àñh0/…†㋸Cð¸E ‹ …†‚CàáI쑞0 *ïß1cVSU³V•/ò†Wð«üÝ—|Þ:~«ŽÄÎm§º@éI«|V!+ð‘†\輕ڙ`Õ³¢Õ`•¬F-Ðßt¨ùTù¢Î× þþÙºy:ê¿–ËúŠ:¾òçó‹Œü‘—.ÜÆ Gp(èDŃ6æ>Õ{ÖÎóè;g}'ügqžþà=çÍ}ÆWóŸþë(ügü*:ßó 8¸Ð*Ôßñ ñ ……ÿ„ ¥=:йò ý‹](<(N|5:™ûŒôš{œQ…;ŒŠöšnêH#;Á [E-tŒ&m‚¤RÝ©üMµ÷ ïþf‚ê­k0YÝDu#½Ùè¤F'Öè­Ts'E{Ÿ²v™'²®|¹X8)™Ó2sbÎ¥ß뇶`3n3eýÃ]J/SºÏi»­¤¬¡<äÔ&&F™]ÉZýVa¯#q|+Ö*ìzä|Õˆ‘´•H]Õ¥'Âб£µzp7G§uÌHgG2à 2S*"sXJ%WÚj€‹d5€¨:TƒS™ANˆ©)5ÀÞ,dD*  !!¡$ôA=B< ÎP('‘n:¡ÒÌLŠ‚zrjb­`v{ÒŠŠPŠŠDZ¡ iDHD(D DéCÉ£PÇ‘8Ò†GSÒê768ßeG÷Û c‡ï¡cÑ……Z”ªJÕºTýÿ—#½~ÐùÛÏØ-fì~Ýöö×€ñ†l  S6óøÑöcšïÐtM’tþúòâÉÓwé»{É9!1tŸ‡º_ëýºÅ¤oדּÎ]Jy½üs¬çzca‚jñ§ †~æ:ì3ÔÓ<ÞϬIÃ,övsô®ÞgZ˜ôh?Û¯0rCS7»åzÏ:ê {‡Þ2ï©ýÉöóôôxýÙ‹«ëÛ›ûWvgwóìöÞï}Ú|ôÍýýÕÝÍuóÌn5ýøñåŃ·¹ÊîšÑ}ÆE–‰mÈmä{Ì×ú{dëI‹ ” ,B”a2TT‹aH-HF謔$K’4©<)DYŠáJ%K)LXša^^°@9²@ÖÔ"EÊ”@ !O)V¤\9²\•’EºÊ i†% Šª”-J¤^¸ìd:.ƒ.°îh…ËÖ -[\ {Z² `A^Y²HÑ"”š –.R¼±j#%Œ1ZÆ¿J)#ÅLO’EÃ)—Â¦Ž“Ž4|dkm{–<Ú¶Öd;&k#9˜ %Q²Yé«Ë­•2‰ï!åÈv°¦Nß‘¤ÑÀüÿ»ÉTåu®Þx,̨l¥t5] [[e«ÎØj [ Y [(¿-É* Y«„¬P™pG$+g«ÞØÊéJøê@¯)_­ Ë‹”¿ 4e g)e cígÎX-#0’¯ÆÌWNW=éj€GDÃFĶ“Uǰ®p&¶ä*9+ÇLU©¢ª]¡*9‹ÎT ,9BUÂU{rÕ\¥dÕ‘¬„­²U¡«ƒ(…(ùª§šÀtV¡cŽ$ÍwZ?EóXb}5’Š•‹·¬Ãö¬ÉŽÆÇNÈ=«7¥dÌÛÊqß+ïYñ-iYxYýú&^޵Oq–jf<³=ß©"çÂΤg>†Ós¤o¡QÏGg’¦ŸÛÌÓNÔòšHÕ3¶W<¯lítí| Á§Q¶1¶öÁ»öLÆVÂv¾Žäk§k‰‚“(±EAZø_˜ºø]xZü½š&K»ŸG£èP´0ôåeL(Zz"CX²žHÐÇF z4‚v†¶ª«ª°(X ëÎêªß›&=>ã›h³¯ÎA9 züDø™ ¢aÆr6ªÓQ?!)ב¢vZKz5YNöÔ”ïÝ[ÏwÝäÕZÃSw¡=Y“µÖö´€€6[c²¶6XKÖ¢6œñÞš/㯼©Á‚…û!í°hûÜ(dØGþ×H2 H•¶uW-(_T¾g^OÌòc¥öð’+>µ¡¨ƒêC¿Ð*õÁB5BU"pCà¥J'T)Ƭ[Ë®E+Z’Žd ÑŠDþ5w@AD5¶È{jǼt2ýh% 2ŸˆŽhN‘ÕDsËŽÆ 3¡Ä…‚êKK^T‰–qòÜD½ÅÑÜ#ºs ý,µDž™HsQb6C§¬I[p¥ç¥£èSÎNªSâ´Xe©‘ªÅ\‚Ýš~í-g‰ìxÞ dÞ®Ê_…›e›äi¸,O­C íñòH: [´=¦ÜžäÁ&lépgF ^Çc nGBèÝ ›0aûÅy‰º(hÖq–0™t<ö0VyƆ‹»èj¤Âv8\a%÷Gh¯¼v°n¦µ£Ñ}$Õãé`o Ï Ñï¹ÛLòI>bÿÈò»@–—e÷dùšæ}š‡—ä@#ùCfy'ù!“¼r|h!Ç+ÅoãGF8 /‘GŽŸÂŠä·dùÉh>‘ç…è%ÚÃpÊT¿gIö txv"N‘AKÊ?ñ¤xê„ÂÄÔÉx_i¿7Úo3í“õíŒoIϿҾ²~GÂw¶?V<_S¼ò»Q;u¨_E’Ç‘G‘ÇGÇFÇ"‡qãQƒ˜A$•˜ñˆÑxYG‹ÇJ°ºo_ňFãgÉãc¿ªô’FFŽ †Ö¢Acg‰± ‘ õœÆ@°ÐØfï§\˹çÙëý öÌoÍÛzZ}=™Ÿµ¢ëÌÇG«åŠoÕ¯âU<µøÕ|Zü©¾ôêKê­`ÖUÕ¡/’:"ô’åOəȔÈnš%÷93N– %ö–ï‚e·ƒe±-‰[CRHZH’*`£$DFRlž<ݽ¸¼ø÷6’2šÐ„MãÄ/]Ó¢uM6,Ä„êHÆ|}yñäé{ Ù½”ZdBܧñ1§n–¡±oñ1qpÀÐØW­ò^Ãd¥j©'ÛÏÓÓãýõg/®®ooî_ÙÝͳÛ{¿÷ióÑß~¼}uó‡f÷üêû}|y±¼æ¼»kÝÿ{¶\W¤g¬—ëž5ùÕô·dÀsT4ÄŒZ'9"ÌL˜©°}€ Y=e6"•Ƈ^Ci%Ôc5”²“r“ÕOP´y©#+•ÚiK6R.ÒŠI+¥Ù*$ááÄzh&Ý…h@-=9f²ŠçÄZ'±ÎÙ±ÂiY玬kŽØ©gFV2RÇDhØ E;Aáô¬† €Ú9÷Ø´* „‚êî À§ßP‘ßKwÝôø}Ô¸ÒbUb(òJ‹Uâ7ép¥Á—• Ÿkð¹¯ôw¥½P^D™ko­¼µîÕ5Í­ôÖÕÖµJ‹³åJ«:«*›La][?Äć˜øbâm1Q3˜ ðI?ÏIèáŸÉVÿ¨ø•äb9nõã[8 wž~ñÓý—/nï_ÝÞ?û䓚Ÿê_./¾ø7ëõ·/¯^½ºyq´Úþ÷õ‹›æ+ôy)dU_6]·Iú/MöO,}})Ö¶|ºÐ|ûµþøþOÜý¹‰ÍŸ›ïþšköûö+ù½Lu—/9éŸä2O_]²ËŸ–cyyÏi¿RêœÓ œ‰ˆŽMÙÁo·j“{Aml7cj~Æè|9ÃˈËNî»MŒanx“‹òÛ÷œ—inõN¬EŸÝäj˜0M2>¿±Ÿ/Å;œÓGÙñ¥Û\6—œ¼¶9›|f±Ýô¹g6˜sT?ôü‹½á?Uz/ æ¿bp–Ï–±n@~¶pËÃÒæ7eï|)ÞÑ} •ÍeB±¹Äá]ŽC÷1‡-¾Ú˜p¶i6je /ÝË>ªø¿Ä†¯Æ;K³KlðÒ=ÍÎVŸíƒ}ÈÊ!üæŽ^<éj;D#|T1pis í–6—ð+cÝ€b¤Z«î|Xš]EÁ´6»l¬*½³ÙÅ4[]g¾¦‡Ï_…ët¶o®Kk–:0UÂ>%B|5Þá?Uz/Í.ÂKww6;[}f´Ûœåcé“¥ÔOºÚ…ÅÑU \Ú\"D»‡¥ÍåxUÖLµ€Ô²³Š×¥LU„¬Î˜¯V<࣊Ùìo.–i‘-Ï>œzwÏ_ß4½úÇó›ïŸÿôêGI¿ë[šÏ:üýÒÄ+ÜY6ì4r¾ü5è·à_4½þåÑôzõPz…W|¥Áçôu†ê›ýøƒ¬³‹Â„MæI'Û |û"f³æÃ¤žwÁRy¦à3…•-etÙw³o(Û›7rXÍ>ÔS¾{xì¯î~zýÃó«g7Õjìñ÷KƒB&¸Ó/˜‡¶q¾üµµÝð/‹ @˾ÌÀq|„d•7kýÌ.éM¡Âeï+”E+KŠyê ”­¬“:F¥~È’Q—ŒbË“»ç5ƹ,f×¶P6ãÔwë˼x]™ÐN“,Ø2 6sH²nhÓˆÉÞ­Ü5Z˜)qjØeÜŒ-ŒŸ7¨abÓm¦©íý ’‚JGÅnµxʾ‡Hmº´ºè7ÓØg&’;ã&¢ˆ“nÒÙu×n ¡SØò›qÃÀÔaZ_a†ó¹Ùîõܤ.¤³Ëa"„CÓ«Ý›7cèàî‹Ç[_Çnl¿7nB†O0HÖX^BƒQMÚFù½ˆPˆ= Qêž]N˜ vÿã¼Ê‘$¹aàWúEð6rõ ŘÚÙu&b¿¯ÄIVSrÆ™éD‘ $º]"kx4™.[Ëé€λý*›W ÷å±Îi”ÀàËŸ2€tÔMØçüqìëÑŸnqòßÿ™Aû%¡!{_*†Z4' QîüÒ¸Øyd?Äû㚊IÚ¶©…B¥¿Ja3*ðËöP6uúC‡;ʾõm×fâÇj7:BL¿vE´ÁG,ÎåJ~-“@ãĈœ µ[¡œ‘1>axœ¥ÈZëÉ•}ØëBØfëQ@uèäE t©¤"³Âö>¬Üo–’ܬÝò/åqÔëå›-k~7@d-t¤Tãn /"Mån=¼ ïÎQ¦b¯»¨ÑšºX‚ˆˆNÛ›ëªå·Ï@r²HØ@ÛµlÝoÈÓ<_t¶ý†‹¥8‹dÊñðes_¡Ñ™µóˆq W&Ûs/&u[¥_«ÝTd†ÊµX§~}±S¸¦zíâT™E¶s³w»&¢,40ÄrnQT'Ýaããnà¸BüPiâH±¤…—».‰çÛ¨FŸÆ*O¸¢Ë·Ñ0d-Üã-–‡mÛ]üÁ§#Úx¾öº¾x‰SÒXÂðÏ cÖ)Yúż› UšæUzÊ`<Ë*Ñ´÷}†Â†Ñ*Ñ_±q.­óZ\Ö#§znÛ·Ùº]xdtõµˆ[—bœ¥|. ¼r7cÞÈ>ÄxÒ9Ýãe!ýŽ¿¤kí` ƒhÜÿ‰4&²‹‡†ê*xqÞ¿ érº­ endstream endobj 47 1 obj 16169 endobj 59 1 obj << /Filter [ /FlateDecode ] /Length 63 1 R >> stream H‰¤—MGÇïHÏwèK$r Uïvå–D9ìj– "´H«B0IXÁl4¡|ûý»\¯ÝϲEÌL—»ÊvÙ¿*»ÓíNq󴻸Þó©üÎxõêòà«?_¾zavcˆ7³Ûœ,þdO~3›!µ…òäѯ1n«“½f²jóxÕ\UOtmwrΗ·`±Úó5vf}¥‚Zº|e03{IRNõLG£Øˆ{I*YÖMZu‡eœö(Êê²0t†¡³YT‘]Ú£ZݤÏÎÉîBÔ¼™=•ß\÷˜äp{² ÍNš¸; "¬Ë”úª dFؾÀVMêëæ°HÔÉ®jq=@E=†Åh<ü™3åÀq?`©¥ WI½/C ¶ë©ê" n IÂ=ì\»$Iš·[’yí½Õ°öõmìFÞšÈï‘\±®*6,¦}ÔùÍ…ö¾¹ØÖ/»øPC>€Z¸@3¨!Hű™Q]–ú|„5Ïе¥aÒ<ñÚ ××ëÒ£æ?Ç+nàXWƒ‘Í+³ØÞ€!l‹äq'£Šb[àš®éžièªùº`òíó³G°à–ìá&”›«ÆÐ•÷b}^’§"?¯ô“Þ)w(Qœh+í¬ÙΪ«å6a]}T®›e½æ­n²PÒÙÜg|—‚’ŽÉ´B`ê-ƒ»[ÞCn÷>»<ÓèªÊ>–¦«-±±V´ÒŒÚL©H½hkg'?¿LбJ¬EÂõû|œî8R·Ík†¾QJÜG}°CŸ ›1Ùe¡=hýdM§¹¤ÓTÑãRÐOõÜÎåÜ´E¦^Óê±]Jù©’ǹÓTÇ›cçâJ[]{Ì4ÈC›±ýŸñl+}MÑ+ €\Ûº€®ÐrŠÜÇ­W1_Ÿ„¦™xRÒÆÕRïÇ«0§L[W‚D¸8YªãvSµ&U'=¨’Þz0ž]~Àã·ñ/~¸{ýäåû÷·÷wUðÝí/oîªè›íá“?î_¾{óú÷¯/Æs¡Zk:~‰ÒáÂ…6þÐþÏÿ‚ôã¶¿mÿø§Ù^—yÏŸjá¯Q®ºnj;OÃúÜ‹Ý2K°.ËáCG?êÿøÑ7|›ƒÕ®ú`êÀï·«#o§¹oN©âÄÉOˆÅ ×úLì»=Y›ÉälŸYÔÄPþÔî&%ÒrWªO˜÷1¹̧ *})¦»Ó,ôŸyÿ+bW£÷yÌ=½}½ýôþþÍo·BÝ4’lóF~‹_Lª¨µz©¢²?bÂ͘;1÷T™ûÔÜ·WIãíã¥èÃÿwÕ Kp~úTp¢^<þ÷Ý“û7wïßÜýòèQ•— Ío.ÿVÞ±¾ûîþÃï¿v]ß~ÜêÅ‘5|ýpY}½> Þ#bÐÍÌ»22n7”­Šn"ðĶÊËÂ+"]xw?~óf›zY&¢÷3~Ñ©æq½›E‹´(ˆñÑ…uáÍq:ï)ü›ƒú¾ ôžeÂqjqyÕ:M8û ùÏ—g—¼=üz{þ÷˃g—’*¤wMÔŸJ £/K ¥¸{kîº=t,KžE7CĤ£iáÑ´ð“©”%ŸI²Õ‘#©yJ¨T™K}‰"d„ro=kÄÙ¢rе.B˜pé—B1;h³¬âàm’¹Œ1V¡‘/'³QWU+…ª £MÅ?GEÔÑ`²z•ƒeœC¬[ˆ6GÕÀ¸í‚QÅ Y¬˜=‘>ìÖ#ÝV1`bÕG„v–ΡÉt¡÷)«s®žsB?ž¢LŽøP!u¸drô¥OUDZM/2·ã”PU€óRã œ’+a²ˆ)»‘&‚‹¤ % ÒqتA3¼Ê­Æ%§ç¢:®éÖx²Í¶E_°°¤Aù \'û\;qÖo+s’á44xZV8¶¹œSu!E·]%ðÕ!ó­Øå â–…­#³Ñ".ém6´&’Gj£tô&®ÔÊdgíJ-„Áy>a 9šË¸b ‡C¶nÅD2þ„-äŽÙ.Ø"Ÿ‘3wn1W"Ÿà…uâlWx#ròÊ.d!°;³‹OçÝÊnrº×ÞdÑùx†W®÷¸²ñácxE7J§mâ ]x–Èæ•]9)ÂÂÂ.‚@rRìŠÐÍ;úmB7U8v®þ˜ðÂ*öíOðŠ7ÎÐ ¯¤Ü&xÇ-†¼{ëâ /„ÖQ^á…Úl‚?Á+Ùa—VxŇäòv•Å#½M~¦á,àDon·ÞD/ ›_Kq<âKNÛ³_™l™W|!å~Âr4'ö€oîçà»°‰OøBìõ’ø"¡©Öí‚/æ¤Î]Œ3'ZñÅž| Zñ…¥-Ÿð%4LÎä¾pß¹CÛ€`†Øî½ _hˆVï½/£7çÀ9ò©Ýþ¾ð I|qZ„†_Äå¸ñy-‚â+A#¢_Côö„/ä(@aÅ—ÊÇmWa<âÛäWðeÐ`ì _D¦Þ|¾‹‡{ À'_PNÄÁ"ŽúÑÊ8m¥+Ó[™Àƒºˆä3µšêYi‡ÌRÐÆÊÕ–BJ–´!-×õ÷MÁA~ÓäíË‚v_«€Õ$•F_—© ƒuv«Í;@ëŠò®Øé`ûN+S­³Éª÷´ãï… DÇ“ÆÎKØgWbç(”Xjüi±;yÒcgÐâHâ°u- “´5›úár"Åuâ~'aW¬§]N“|ðü‡ùj[‘ë:¢ï‚þ‡ób ‘÷ý’j¯cÏÚ˜vŽ›i°ÈÖÙVÚ)’>¬r1Þ²¯sÅȽ¬†íðãÌ‘K¦Èkqƒ¡¤­ÞBõyÙgsÖ…4…ׂè˜î¬‹¥Xf4J)ü“Ç `Uqîའtq1¢…m‘€×Åg¥„ŧ`–Î¥¨öƒöèÌhñº@éQÔKP)Ö•g6Ø&f+tÜ…Ñê•ý|¤=4oA¬Com|ÕÉXf&š‘_›N–DÅJ"÷´ìJ'©«2ì~Úkñ«újS÷ü ëUD'u^‹ÂauS.2øx èp8²’œÝr¾¹æú ÊLLœ¦j&lHNÛ˜e׆~;ÁŸ%¼ éÒÄ%>§†åVcÀð«® öš Ì4û,â+rµPNÃãRP0Cëa^êáÌ)%":ŠÒ—VÉ$f!ÅD= çí08'µ®æ¹”Å ¡2Ñì§6—‡çZ–¥ß26';@YRì0ö˜,âxðº,2ÃA€P.ól·’²„’ª.VmùDbDËÛáÊE0¨+>ª:\Áˆ=%ú´Î]&[,°G5@Hê®*=Ìà ‰.›Q¤N(fÊ`B‘ëXžaæ>$Ü¡7c£ò²¼‹}$°P"¯µÉ,7èò\·…z;É\»N±I4@{ÑINäÃĵÃÐJe˜áÁŽ\™ºúÁìêT†Œ^Ê y ©­wŒ:Ký‰)©Ø †¹å~ "Ž6k ¬XÏu=ªêt“ÔõZ€yÿüÄ75ÙATË&Év4ŽjU³“˜¥¾4Åj £Z1¼+¤‹F¦v @Ae%F`gÑÒ…O èájN¡/¹èDµ×>­¥üÌ–¶Bv$eú¡ÏvX~MSnˆ’w£¾ðZ#!ÍÀ’ö%\HNF&—=Ø9Χ 6#PÖ¥; Dƒs®){ø4;±p±rÖεºl‘0‘² !ÏÃÎhE} \Pš««ÉAž—8èj7ç¼OQkÁSØX °?…•)³+Õ› gE6£º+=é\Ç£1·FrÙ(^¬ùMaTbXGkO›¦¸*"ë†<¤ª‡QUÚ0R˜§i1ØSZvÃÀ@¨i÷iDÉÉj}l,¶³xtŽ ƒ·-l.*X¡×°….Å– 7JëФ„Ã=¥¸ņž!l„éÉj'§Ï›4ìÁÈ.¹ÒÉ»Q>Ýö ê©,‡aàh$è”æd€Ð&µEÓíÒXj¢‚®Æá¤µÓgÕ']”0æ]‚^_³–lì°Â-hTr1™ÊÓ8LÅê!Ž/JÅÎò­‰BF•`ø-{°¤–ΚTÂ`ž¦ª’‹BÙðæ­É¬q/fNÏùìlÎ#¸d}äÓè{Ë"éµR×ÉÛb.¯zîAàÆå¢H¹¥†Ã_"5U >š|^J7)¼*$Ì'²¹‹Ãnv¼’{æÔ/ÉãÜ$‡![ƒˆY¨‡™Ë*II`ø8²B1ƒŠ'WÄ›È*mrmPÝ àÎI#Ò“ÝÌïÅvf3Ú»–ž50J†0@¥se^Œ£È}K#[^(’åd=E ÌÑDot«"-ŒÀÅÓ çD ÔµªÐ;a9%1ëY¯„0ô¬ó;˜TŽ0ò=C…Œ™Œ¢( ŠÝv–ZK¼HàºL^rj 1ª¦,eJ”Þô0’häÁw}ZaúHõo”²Ú»Uu¢µq&V@'6«û Ôjl(Õ˜‚$T”©uµÁIXÑÎ"dž5î8ól/­i˜ƒ¯’| pìžIAŽîq¤L¸É鼘͇^>3Õ¼ïævÓ42=C64ë¤D,Õl£^}Û¹¿©€˜¢ bµ›‡±ÆMkž+‚Ç,éš)Ê¥a²ÑK3¥8•†‡=ÞÛà³u=¼K~sƒí-µ 7Êz­/Ò4HSòJ½' Zu^Œ’-Zž™â±›½)Š˜Ìá ׊J D˜2M14MV²’už­:\IÓFÿk(Tk«Á|QÓ/s”`VQ' ‹eÞŒ«¢?¸Ùhï": Âç¬ØÖ¨‘‘›Nm€Øèl2AßÎHÀê­÷rošÔXV‘`ý¡‡"^«õÈ+‚hä,Ã4s_ëÓ?o•Àm8 äEß~šášøÍÁW¤ñ€UŸã¦¶í,5®”JÔ×ËB¬º„úÖì\¬ˆŒyyøêÙ_Ûë¿\¿}þéóÿó«››wŸ®}þîû÷×§øã—××Wß½]¼{rxä–g‡GŸnñ‹“ŸW?üÞýì§%-_þõ[ÞâÌ«¦UŸf‰^D/Õ§³K<îÀ@¾Da·_¿ޝ_>hÕ70=ŠNqв‰/½#`øÄÅëƒþ.¯®hö þÇŸé ¼óðÆ/?´}z*L¶—ŠÑgz/¸©tÑ3­ÿa‡ƒ„CšÉ\ï)ÔL!{|Üü߇¯^ýìÓÍŸß¿¹yÿãõÕ§Ÿ—? =¯ÿbDþ=Y¾þöæÓûëï—ÇÏŸ?{óæóÇ?Þ\ñð“åw<úGþÇPpH~cH-!ŸÙÜ„àÇÑ“B;ÞŽãoÈçIØ4Y üÞhš;jñb…]¼ùA+ïå¡/Ÿ,¯þ¹{{_-ï©…•RD77F »Ð&€:®Ò_cH£æ·ïÂ7W\ß¼Jöë-|qˆN—Z›ó”?ƒ|Ÿ6ÕMH„ðOÍ&*wúÃÚĆ“ƒk9³…¿}0óAy"@6Ñ2Ųöbõÿد–;’#ºô?Üaf—|Ff,gd/lÚØ„Ƙ¡Gòu/ÆÓÿ½OdD>ªêV[ÈÆ ÒQÞ¨xž8!ëƒåÊÁל/¹ÓŠÜ”iŸöp»õ¶ÆÉäuà`†Êc5-™8Á;¯–¢/ŸƒôÅ7ä;ƒȯ#@²çëàÉzM5¼„w÷G«/Ôy¸à>ÚeáTDr£L;üX\Ó٤קŅ!ñ¥.øýßAr»6Æ?Åñ'ù˜Œ|ùîÇ×ÊÈ7ÏÇu^[ztϱøAW‚|ëb¥bŸqµû”j¸ØÖÈMªà² \øfÙcÅ ¼@âØcWÈn3†‰ºhãæcªÝÎ7ö¶ ±gÕ@Hñ×°‹ˆËÛîA:ö ÃX#ƒ >4«è`Wi¸L ¬!—T¿È«Ù>ö×۳уF÷`Q<,tWÎöØ g5Ú£;VSŒ hܧÃãÈÅrƒŽ  1,ñŽú0qÙ>Xƒ7ª‹e j‡ŽÙÔ>•œ=ô±)8«" ißŽÇ bÐßš ae¾ßÀAÇ=b¬ÝBŠm‹H>ßëpJ,àCŸZJMï¬!SQ P6˜Äã¨TR‰êX;7K¨LП·cwƒ¾ŒŸ8^s)Þ¾TBli‘m 7k ‰.ò™Ãö)úDd0ò–¨ÈºX—°Q€_ÑkçÜJü ŸÝ‚Û¬ƒ×ðû=‘ŸsgЉõsÕ§¼+®DN´´WЬÁyˆÿÞ`.YÄTbÝY»nX˜xï¥Å,!d×} ('Y6ÙÈOôÜê[ЬÌk|1Ñ9—ˆF‹QÕà ½~zMš§T/qeœ0±¯¥0d[õ¶Æ(+Õšªí0Ÿ-18eXRPq…ºÉTõê©*œŒ¯…Ë=iZHŠÛz¬ƒf@x¤Uay,ãRÙšX²=¤Ùåh ¢6âm,ú6ô)‘¸@ DÕ:nÑ=°Á~êxŒ™\-{Êö5ë0™äh¹¡¹ŸàpöÅ+f-•hy`å€Ñç´õæ¹é°ÄnI`ç­‘8z²ïs +h„+׸œÀËÕŒ’sÌ¡­‹*TI¡[ˆÂqÁÕ,îB¯`5^]@paM‹LJS/„O½Și©Â¶¾+HWŽZdøZc •¸€f!IëY“úh5ƒ±P̯Xò[]2Éqç/êÏÉÀìˆIî]žÃ°°>†Ðòö¹ªëXú#Ôr):ž>L<”Ú}ÀÞòªa?X|Ó 4 „Îu´{LèQ?˜…"<€$•:Žœq¤]ÈËDÌLÂÅ´1á6–÷#Áx7®BYÉÀ<Ž)Ù¨¦2hHœH¥*[9‘ˆÓn~Áž×¡žÙ©zH.ËÕ;6 ÄVx\‹’ÿÉ¥·)öµ©ü3N˜BM£Ú½uzšI¿©Ä, ±ƒA† Sr»\o@¢R…4î÷Ÿ?篖—Ï¿bÌ,´edU¨+|?à0^K®œÏá™"peѶ9BpŽK9fç ®½ZÒºð0¶ÆÎä®|íŠ÷ëÕ«o‡«k©OèMX$[ÉëMë_„›+¯Ü/Î Ž£ÐW§yÞN|ÙÔk§¸Ù¹?±ÿßo~ÙÀí mZû±3^ãð†»Á š!ØòèS!"#¨ò€AP~Çæ_3Äww?ûö—õO¿xúởÿþ—ß~ÿÓO~|¿ ú݇?ÿõi‹õîééûÇ?\|þ º|{÷æùîùNË.ÿ½ÿ§À¿ÂŸþì—tùõåt—ðæýïtVÛ–-$²RZp}àsÁ oºî®}nº%üí ö#%〃²û#ÿï­8~Þ¯ÕÇÞZŽª]·¸k‚]$ŽBóŒ•Ãt켕àe/ej»Ã&Ñ3ÕØ¨qu×ÌJì²ÈKYäSn‡„k»Y_1³]BZßÀ¥ ‰9îC“sÿþh§ž‹zÚâß]nä#—¥ìÝ·½Ãë]ˆ»—ˆ=†‹,%•±M0÷–nãi)(×»kÞ;h²ÓK/Jû÷+ʦƒEo•õž¡VÏ­ý¿­þ·Úª—ü@Dÿx÷îŽ/_}}yÿûÿ„Ué•Xæ¹åyå„lîwü{“UŸïŽŒ-ié 5¸ºÚç[°üåß±öK³' œT¬Ñ•ˆÇ† WYü&â*k;VÞ$a+: …›-ª…˜rˆmìôö¸È´«Ò¸^Û®u£êKªÁÆr · Uˆþ{xP}µMÎÁ.6±ï‹(kߦ­Ë¤€Ö ™ŒÊ,÷X1¡´kKºoz“ƒ |±á‘hSâðºw>÷£?cMþ[ËìZý›ôt‰‡¦9÷´‡BpôÁ¼ñYçö™5ËÙÕæÍ±¨FÃ' |ãþc'ˆaÞJÈiön¦úVMÎêw«Ø·ºâ´ƒnuÛͶ<éá› s4n¦ü´>·*y,ûÛÛÜòi2Eçp%ü©¼)ð‘R_]Ë—³«¸Ü§åq!8\XIG«õàü>™pµºÒáKGÕj(^Ñ“UZ?œ¯¾r†w;G'þñî›ç»7þòóÏ=‹<:tˆ;Ÿ»`Úà16]¬øÐ04 o /m4Ñ)Ž­î%«Udù¶€p#ÇlcU.9–mN ¨\Å•Ti÷¸\Si[ f« žD²âÚÇZUÈÁ¬Oú9ðçb ¤\Q0Ä;|è8©N2‡©˜ÙU4"´‚±]À‘H¿{Œ¤±g5 –J°•bX¨NOQÃŒzÁç˜]âiŠ7…ca{Ì>Ùãˆv>øÐÛaâÍ–‚.µ #¥l=‚O±K fJK;Zæð8Q_ •S§4 ®Óßúء˂}.Ô`ëØa¡ã Br£nI³+òUI\|¨¼`##Ûõíœ ‹Ø@Ûcã1„¿?℺\ ZΪ‰‚NôcòuVˆcöæFJ½B}Š‘‰ÒäÕ@‡Y/ýZˆm!‹°p¥û•£7e‡qWeÙl'¬vf'¸qa…‡»râä]\ ÇŒÇ$DÿC ƒã!µ\ëJJÇúàLK•vE †M›(XK<¶Xm¿{KW¤Êïr‚Ûî]ñÑê¢ú¡€ ìýq‚@@¬T½yœR®»ÁÌ8<½_ÂœŠ¶õ1Õ²ã†\œ…ïV‚±ÏU¦?å®Î¶\¶Àƒ÷²ÊÊ-CN¶tºâƒ{ó †…¥eó•4 ÒGMâ­ëÐ\sS,àf­çàÓvy4»¸ÝV ¸Ym >÷ Ì•ÏËÆ„·%>¬WiWvoO¡°[ÚH´îqÃÏ™XäÀá©Vl­ÄBÃï÷xÆRu2bÕMœÐ6+³–Õk—Úa!cè=¦5 ²NËkm7~o°ŸÝ”—cÃ[Û&õ6‹31ªp,Ô”;“š’€PÇ5À[&%#¬¹&¸ åú8 íÚ¾]Í心XUTwþ"Ç»¸¶MÁlM“KZ§0X+WK®»bÍ·”u‚ÖoOt駦nßݽ…+º8/iZŸˆ¶Yæ)ùmÖ ˜±øó!kÀSäMÒùªÍ;³¶€›´mðž·it¦ ‘®ö%mâkÊy›6 ê_”WK‹^ÇÝÌø6Û‹¡ß¥g‘0!! ,!ˆ‘òb4 Ç"äßçÔ£»«ûÎ8a,ú«[]]uÎ)U™U6necØ«vÀ:”ô-]t×ôRZ)ú˨cÓíØ“v^‰;ƒ#èBÅÛ@àÐq?L⟄‰pc<ƒ/zDØâúA¤È!Ê’±‘î‚Ak±ôÊ[m;yÕqIÀ^/¹äd ãѦ&®péT£NqW´ 4êG –¡”cÛÌÌžÂ&À>Ô ìTÝu¾U†3&€ÊÐr:Ó«Ö¼{ €e®ZƈÓÏà—³Æ |9' «N|y,Ê!7ëÙר«È˜Ãk(–Íòq[É5ƒ›WÜða8æ>L÷°¦SóK°+ên‡å]#¼¬±Åºý¹¢Ëp«.Öœt·ð©Œ‹5ipýøÑç§Î²‚xY',h2Þa½c…šU`p.[«d„ç÷U‰@¼áþ;ȯöëaìOŠ? n÷-m k÷[ï`k'äK£ÞÛy†5Í¥HÚׂ¶×w\ƒ£jÌâr¨ç¼rî—ÃüVvŒ tqÁšyºpi#‡yxº—E%;¸¦…ðæºå#ý\‡•ÎŒq°Æâ¾W¢¤°=8+„{–~w\¹šëòFêuû·þÊ™¥ MŸ6M± ÕŸšð¯6x^¤ª&¼h›¦Ì꟧VRÈeý›ªÊ™öhÁY¿a–Ía´F¬mSv®“ µv¦g°Ã;ÌÅŽÙXÃg¿Å§Çᯥš67dŸp'žÇÓæ±¸¹TÔ¦ÛÁåÜ,îm°ÃÛÕps¶k³|&ß+Ô¸9RC£›é…^'»Û÷LÏ=P‚šÑÜOŒoAÎ^RŠ˜2"÷‚ÖHLø[Á>ÂvÉCp„5œ(z+4D—>ÂEc`‡Rv?Ì,»“¤Ì¾œÒÜC@ÌÃʹÉÖ¨ 2çÄúCâ=ˆÄ‚Ü(…¶LÅk r–6©!"¥v¾D!?•ë;ì߈€,Ëð‚ \N ›×h+“rõZ“,ƒ¼áÊQ·¡zUc×¢buR2Öº öù6çš\UõúŽ L‹è>JÐ]UÁį‡ú¢^¡EÅQõx•MªcÁ˜ †¿AÚ5žË¤~XA€)Í6–¨ËKÖ]©‡<Ì’$êaj/§Ûè°¸™j\tøÈYÞ„[LË•¡Kš­“Â/ì‹n¨¼Hh€8u 8d›'$÷Ü#7hB% ÎèƒX„BD«ÄØE‡lcß&àg)ž¥ö”! é‰*U.AÀHr„劸Ó@í)Œ Ée¼#p׺r„w2 ¡bšrAi²¿²bD¬‘BÄxó›ã=jH|6&yi!“м‚½ËÎ {‘Š)BÈ#æ c)JìÌÄÎéL5–!ëÞŠwpe޹ëK¦øb†»rIr(DÒŒ¦A¸ÚPnû€ì«¥ ,” ¢…Æ¢¨ßªÀpgã%ö>­£.®¬,¬R£<ž¤+7¶Ì™^Ñ¥³Cw\ŒÀœÄ,Χ%CäJÈgžUG¶Ã'„µàêƒWðçŸ}n?7'Âæf§Ç^Ä^W6a/õyºÖÇö(Ix+®=ºãú`$ cOK a?ûî¿+å8ŒÑl9a-¸úàüùÄg£ÛÏÍ‘°¹Ùù±1‡×•MØK}ž®õY=úî¾ß¾úúöþ‡û»w÷¿úö·í¯¿yùøÝ_þý?~øé§O?¾Üß1úݧ¿ÿóeÇ¿z÷òòáó§7ß¾¾¿s·oïï¾Ü¹Á¢?ïÿKðïð·ûÏ-Ý~ûó_Üí#μÿ“p>/b…œ¥*™@¤îä³DÐg©…ô3øñx èürùYiµ_ÉRmMÈ»4ðÇß¿õ…ÉçMœ Þðr‹7póÝ¿ÝóåþÎß¾çëüu–(²þÁ=Ãýê­€“Iœ7&JÑͱƒ¤FÜArÄÁ±x•]Àao‰üÀœBD©¿G­ËZˆ=$Ëï Ÿ‹áä¡9Á\UƒÀ!¤bðç‰÷®]ÉÌcÙq^=¶S„ë )PïðV=‡ÙB6­NŽñQg,xxÿ¢.žóå»k É7jØè”úåpìU¢ú&»!aÁ7sÛù>½´vFŸø®_+¢uÆeœ¸ÞlyõkqŽ1(Vt‘­yýz^FO†ˆçR:¾®àLá~x0?¶ºšÅÏëca ø4nš¸y^;•,QC†ô}L­†qƒî¥ 2·5åUpÃ’ìCúû C¡{,ú­B‘é¡JM‘hóÅ€³‰|nçaôEÈj³›3ÚbU½L1˜“%Ö>¸­Óü4Ï`fOñÇÏP¤Ô48§Q° å!á_í•¢ÀqYt—åêõ H-7?`¿ºiõ¾¸qßR™+,`a'úÆ‹Ë$××x¾m´uðrhQ¦zzƒ[YS¿ywG,˜<™m–‚24ŽfÏ1/%ð  ¾¯!àȺLÅîæ§GÏåÎ#A šK˜ ¯±)ÈÓ³@€¦«µ‡ãØ:lX ÿá½ ØÐ*ûýÑ^Ùn/ZTRlL ¥#;©K¤€+òß÷™ÙÝÙsÞ#˱‹±£ü´gwvçë™:§sÄVôUN‹ÜAàîê¹7Á.üZÃë~ –Àj-.ì‹ó¼k2!Ê Wc“Û…¢Ûع-ì7á kˆ…aáê«\MâglÐyÄ3…*‹)ƒ¦+W?,þ]¸K9ÉâqýÓ¯YÙ´°àóR¿*ÄŒ—ˆö¹ÔÔ&úÕÞÂJ¼Áh —ž m"1j©òŒ æZ3¾E¡zi,Š%Êü|`W\ÿÑ#z­ÒDÉÇg<eƒL±V6‹Q Rò²­ôU͉ Ù`òH½?®—¹ ž†W§&§„¼ê7ƒ„MkžRµÊŒð·öÛú,°iïq±Ê˜¸±¡¿B(kâ‚!¼u6Ï—1f»?rË%«ªø RWUÑëóÅuT_#úøSr?·ÐêCÅáüAqÒ|H˜ þ£ð#ž=j’ЫþÙ?âÓ†..öåcjµ£ßPqó&*~5¸ëã‚ë!mÏ]&õ(œÇŠÇÔ˜÷×;âÓÂ.F“•²»—ðh¦ÖGTîѪg/TñPïÁ$Ëâ2WÚ{1YÒs_”AcÈ€ômù³å‹EG#­â²ÏÕÁþŸ.Ôåª/,€Z—òÄ×–Ûà¦ô³Hí w_7qj»"Eßì|·}³íåE==z|zõ‹o^^|ûä/åõŸoß>ýðñ¿ÿþû›»»wn/¾iôé»ßß®üÑËÛÛ77ïÞžœyLYþäâ›ô‡_þ¼ú•~ñWüô°_Náô·Ó?ÿeNo±æÕó™á« ›I_z(eÊõV7xßâj¿+Ð-üþ“UHB=ÕW ¢A)ů6…ÅY~ÓÕª®öA‘üØ,{HŒX ú&}KÏ¿¦ý¦LîjLëiWB|×.¾‡úGp(¡. Ø/Š>… $æ÷zR(]¾ª‘B$ž[ÆÙ=Ü2«p«¡kñlECM*+KlÔ³þ½VóŸö|è6§ç°®íÝ2´…¤Ä§šðD¸…e¬Y¦ƒÄ±Ãë}¦ŽÅ™ÆÑx’yTäë„a‘¯“Óœ[¢L(…»3~mªŒ ¤ý3³hkœ&†©" an=#ƹ—+-À:Оd]<}IÛ³€^`sÄØÁ™g˜líW°¬iHÍz†˜çs‹<‰°Údž8o,8Blò”JŸ"0×¶—´‚z»¦Ëc2Q™pfm ~tý È8¯ l€°©±l‡Þ42Éc#4*MQˆù‡Ï2£ˆ×èç» áLs(øÍâ™ r[.¤ý#Žô|µÃ©ä>‹•j-ïÛŠïkL뜀¢d:Çä$oC¯ž»xWâVTéOCº—MȹÏ}VF¼QCÁrž%l[Z‡~]u©\§”ÓÂ*«÷ÐÂê÷MœO1§¡ÆJºªy=ÆM(å¥EÚ{q»ÑNANþIaµoÃ7[N‚ãëNšð¦ÃcØ¿Û_dÁ±Ž þxl8+)6Bé+h&ûši^{ÿÜgŸƒ.îã«zÚïÿ` ¥ŽZ$ú†‹­Ê¬jòU*)Óøo”PjcÉÿ›ÎÑ6µ‚rÀ%·V—´ð^¯Ö–Â2×¥‚ǹª`’Y½“ôʪY+ÂÏúç.:…êØæÜK«Ô÷2ZÙlHý4J¨êàÎl×Zžo–N¤ jZ íýö,6¯ ðqß6Á«7n³¸õ2»vc@ƒîe×½®D“ËnqŠý¸.¨=XΫҠÓ|Ê‹$­¤Þ¶êeÁ]éPd§˜VM¤ XÔ»Ú*CbOY†£pÄCTÖ4j©!MœV]¨àª!ëej=JËM$ÀÐ…C˜N¸ªØÉ•ä­ÜÂqL™YYO,JºŒ™F/ÆÑºU Ók‰¿5¯’aJ•¸sHX öÃH>ÁWÔ(?.P!‰íåuú¸D–}9-sÕç ¦°ÕÑÔw“`1,—)°Œ©FŒt±Ä-yÌ–ªK¥º>¨­ZDe‘B[5ù*–¸‰ŸAZ#ñ#îá¾v*¤uñ9¾j¤vŸ´×N WâiLj§}¾ÙòE$e×'Ò#¾Š$~´3hÑGÚ!Ëÿm…ÓäC9•__9¹/PNE,ÛÊVßlPrœ¥ã6Æw_vmR‰ÌzN’ˆ<aØJ(þ[N¯p{Ñ “÷§_.ÎZs3O-iµæB«PþB±x´X#G$ ®'SQ·P¯,dè±â[)íüjó¤ðU¯þÔ6qÀwF H¼Žøz*Ò1¥xŒ×CSÆ{z{_NozÄéXíxÓO8mñÚZ‰hfÛhê¼íy”_!ü—¦C«øÈØvŸ› GÒ㧬c¿ã¾ËÕÁ»¼X,ÚåÅÞ¤’Ö³_\p”×ZõzçÉIeæý%&~@Þ!1jl-h=PBp»·Ú¯ßrÌ;Ù N ̧r‡²‚øVyÝÿ†JÏu62X½‡“„ )ï逓•Ò@ÿ¯Ùf6|V&´’7㓊‘NÖ¯2P‚×kíà<šÑ~~÷"ý»§O(‡ÐïÎìÿíëïž|¸ûÓûë»÷?ß¾ùðëéx¦×~o/QsMOß½¸ûðþöÇÓ£§OŸ\_¼yþóÝZüøô;ZúGú‡ßë{ÊÊêP´úÛÑ¿"SÈ÷mŒCÕ:úÄ [X %SÓ—¨¦mNlÐ…À0vqÛ}ºOžC7óxŠ\D*O®TÞ£›É¢þMÄsðÜ {0_Šrnóï,FIŽÇp[Y·«‘‚ZLµ2˜‘nk‹I[Éùy¤hî‘É×¶rúÀÍ™®{ ÆzL¸;ŽÓ£L |+´$ ô*¸}êk’QGކ2µÎ—úPG“ M•Ô註Zª8Çœg\Ý¥Ýo¦£6EÅw0ûìçíòmò¯÷ ôÊiæÃù›¤ÍGŸ‹•óQu‚ÛP=ÏGÁ6SÎæÔQžËÖsi}&*âwäûlx¶qÁ&Kv®ùªÎÿÚM'm›Žû MÇÃW.Ù¬šŽB>lÀžhÕJy$À“ÎGÒYœöÆxúOà‘47ýré)¤ø„Ù5ò ÙôBï¥! ®Õ;òk@[‚Ü%/!½[œŒcœÇ‘^ÖUæ-â)«ü¥Í¾0¤ÓX5X[íd#P­µ~YŠ sÛ-‘!·@_ϧüä VÆôZ7ׂèIN½+hñ-QðB˜zZVwi‹m‡Aë›J¦w‰œób†1ÛfHHš–@ÈÚ4ÔKøxrf´—9ÐÏC®òY±!2ÌÑuˆô••HŸ45ÙйÖÚ⺥y Ðñk‚¹ÜÒN˜|O_ÅÍRÌ*«õʰ¯zoѲ¶mlp®5ÿdàé$+XR{f-O7ÒJC¼»¨ÙžÊö±P;ñЖ®k¦¶mõNxÚ{wçÅ‚ ~îï_ÞøõdHzìeÄÚ#.ÙôÆmž°ðÓE9N\“p¯õÉ…µ}ýdSÍK£D¼¿vºCÕÒã/¢Ö§ Èj§ÁÎòTpÝx¯²•[Qk–šŽ,Wf—ØîX)s| \Ž CCB})d?¨P€†]Te² ’â쥯 cƒ!žÀî–WgÕxeõUh¦¯·t›×± ½:¯¶f-zMÀÚæë2–Là.ì";Æ=ËG ôÆŽJ º¿™¥ÞøA#¡|#¼Àí¯kú´˜?ÕÝÿ›YWáðs½w÷ž ªÐ7¿°b:­˜ï‹¤"kC€³m&mbžX±XŒWd? §‘…æß‹1á³R”S—¼[JW'M_çË€+)ý V.&~n%¨¿ÙêÅâû•ÛKÕN×ÀBcìmĞ辌Èm»f 4vpV¢/på6Œ‰ŒêÙ€Ý?ÁM³:6Ð8çìb5û¼¢¹íÒBéÖÀŒ} Ô»þôÏQ2ÍG x’)ìôþ30èQ“=dáÒ'xfýÏðEeÄ‹Mv¿¨FƒæCªcÅÙáâS ÍAZ6¡Jo-@)n7µChÝB€&7ÇÁ¬c\ÜÈÂÁ/éš¾­7iA ÍÔúަ”àÎ +Ö#¶/ð°ç¾y±ÚQba¬Úg€Ñeã±ãÃô˜A+Í­3À*e8ØÂ¥&°¸ .nùqÜåÏQ„lñr: ý½¯†Ë’¿òjÕ¯PNE/½ŒquÁï“>JGQnn¾WtbP•ø¼ÆÜPÙÌ+jçîb®MËœœF¶·!2˜šç…£Ñò®§%S¹}s´§×óµfºV$ ч&°”>ž•x–ËH˜cñ”¥}ÒºÖk5sÞAíWæÄÕPÓ´7=ì¹Úð÷}–BŸ;µ-}Ÿ_Çw„ßýo Aù,¡çNP“Ò|ý®ìûʇb49bÚO¢jÄ-(u±ÈÝ`-/UU³¶i6« ð€+G°á[,i×Þ‚¦Ìž9ÞÍž~¯öÒ§ç€çg ‡"â¨&Å lF V‡Øà¼J´ Pß)h z1ö¶Ööô•1À"ÖÂmîÆÜDäÔ¡f\3L'¼ý¯\­«RÞ®~Ç»®ÂâT¶Á’\)½lš ¡jžªäæÖÇXf_ yZ3FÓÝø¨åâ|øØwÀuÖpõ»í´îunÉcl3ûn“Î3Æ÷vNS¬bN§i(yÀ;À$XO¥³Ö7­ç)SxèA)€VÇ-L?žkݹìfàá­%õöVlãâ¡Ô",çτږNpw¸”;™¯Ö¶Ôg%*¼L~·,8UŒ;Þó j|íô8/´Ki”oen,R CF_ïRC¯ï « {e>3¬âdý|gXÅÌŠç6ƒ©^˜ïÚØô̰9€<æhï ›®ufؔܚ¬¹öh»gX¤gµy†¶ìß.,U= GËvõ¬©¹­p^0˜àçÞá2Gäð×våÆz–GM¼0χ–Ôí“G¬6Ý.c.è!"âÃIÌ ê+Kà¶³O“úc8t`12ü0«Ú™”8Ø¡é$u ‡‚½“|:Åë$~‡‚…æxD$ƒÙ®?ð¼kkkôÈ[Îñ©yZx–# îè~Ïlë0÷¯ÿýùGýñÛJC0™™(Lõ¿?àá“bèL2Ow»†Zj;Ù*›@‹·¡ÇDÚŒ¾ÃÙ•õ1¢&·ï'ü÷„ùç8v˜ß¥8µY«Ôíá'Þ{¬ø¾0òÀ¤ÚDBpû^]KzE¯UŒƒ8@çF`Z^$Õjï¸È¯yŸsoл„ìa@ð«B“ªÍ9ÚpóÌ—ÄUK{³Ô¸X©TwûœƒÄã‰ûgÇë{øzÉJ‡^™:Íôoʱû'jš]Ùf¼ö€—ï|¹qŽ—@ÓÁÙÞ(3ßë\ ¿7Ø•BEÆ»6ÛK2)dG™å†ñÀµÍGš˜P¦mKP ¾Ä¸ÛÖå#wL:ö< YbÊ»# n¾NW£4GCeunôŠÞPfý;}ÅÅò,Öj}„‚ð/»Áfsx>ÞÄÀˆö˜˜ æ×à])i×c£rÙr¥x=K÷º>.åà)~¤k´þúCM,:h=Nüƒ NÿÁS¼ú+\ªOvº:Ìl²Ü]ê…©a/\$¬ÄGñ WÞq¥¶4ŸöÄ'ÄS‹kXûB<¢:fí1WPóMÍ«j'wÞHù>ƒIz›gˆIy'žôäYÖ.øÈZ†(Ý]éP[ ׃¿ÊCe-J!]ìÈZÊAš%S7¥¥Ø‰Îçrz´ßßaÃËØè¾Là˜Ñbq-ÁfïY”hA¸ÒzW¢Nxu¶TÛÅëë|¨ï`ÁqUvVâVàÂbUüÜhSÌgáP¥ÕóOÑ1(Ò"ÅÖ®³Ñ"黌»8'EøáÁ¶i0[QÂRh_h)Ã÷ÿþ€aàBãÊ_S(Úiè@« Åêa…êŽnÞL‚(”‚Æ.z>†~e\ìok…ߥ²I›nL p9©k‡ªi?oƒJíÑÎjL³о''å‹)EŒþé(ɨµ~: œ;FÛ>¥{ã¯}¯¿{mêÏ׫ªâ0ù`NIZl°¢d@&½ö‹U ~,í6Fµ}žeqéæà§¿÷£’‹ýÄÔRÂì—Ö'‹¬|…;ÑÿþùGr£°FÚ=Š^ôÚ!Ì¢~8¦ˆÖðжsZ1õË $qÏ„SpŽok®,¯’Ø4yCŸ¡ýé¨Ö|²Eû,²b):È ]ߢ\Ábâ® 'ý®xöp:giaðŒY³„t5u®F.@­û¡» QÄ:£Xш¥RÜŠÅ ØŸd$üûÙuМnx…)m_ᆫdÂÅB¸÷êÇ©ßôlê‘­ÞÌÿŸ¥dƒ­cØÓçÁ(ƒL0$1¤Ý þþěըbXQ›>Û€ÜÅ\U¬éì‚]'O¾±Åè}ªä‹çN¡ÓEì®ÖÅ£—¤~¬TövªÆ–°B¿Zï~>Þ¹¡ §u‚]¡Á­¹šF;9I&ðyã‹£ ¬xžmYÈxC€Oiw@¹ñò:ë^ÌÔøMA@‘Á“¬»òfU·l"ïèù­Ón³ó^kG<«~ÌZüCJÁ¯)3ЮMþ{ãE|Þ„;«íÎÀÈMʃ.~КVÆ– PZ{Ë}~q/s6hBÁב_ÏMĨA!¨k¿X|§á»TÇNS<õ×­ûÀN’¶S?"Âv8Jpέ6NLð)Íýõ½<Š!É»\!z);÷ì©¥Éô„©ãŸ˜e¹×€Ï¾%ñÞ\Ç?6¡{–òZ[(¶¤Ðgì€EÌũ⊟Îé1ëèŸØPɉÏÌû½¥^”˜à>¾˜7@¨ž§†˜Ë^Kì‰jÏí‰.öÓ?ï-£IL±1§iFkáá u“‚:”Ú=‘[tÑ>¿œWÖ¤Ìx)÷«ð³µ¬ñb¬æjî6¬ãVï1ø$˜Ñc¿?uãô;„dFXгE6åyUø Q”E••YIJíž9‘[ëÏRdCØgÕ/ µXÙ §Öv6€~5 ©½úâÿ“]åȲä8ÌCA+%Ùãö-¾ÝæÜ@ÔRé½ÀË’(.ˆUÔË ¯š<ÛSº©80 [½ ôLJGf¥ gk85< ^†³›ÓW :ÓPï ú£9Ú\h¯/u¾L&šÑ)4_™TÓ“ì™n ,—"¤¥”LJP;eáwÒ‚ùPIÞÿ¡Ð>.,@ïuíÅîm¥·vãu€­Ír©fãCí:3?†)àe|TSÁ°úãïÕ–Ûvô|šÖà]ˆ®‘™R …F]ˆ±ó|«±'¯‚}°¤qÜmÜT¸À`˜ÕÝóšAÅ·5pÿ{ýïË=®ê\§:¦úŠñÚ.€Û¢^=ê:>¦D·¿k5dò”s%t%šu.ë5i˜Ç.—Åcë©T×ñ|)Ú9Ò£CãO]÷éþ{x™ƒ­ËÒŠ w²êH”sæÈÞ¼¸7šGùÅm\CÃT÷ôÚü“«‚/zw]šÕ/Ð@, hMš /"¶JÁž³Ñáe¦‹ÊÁÞ¥"`pu©¶üè™Ýµ*$ú™©ï †’·&!ÔZ-ý°ô AëÔ>0R‡33äiE*à5¢}†ê'Uqs+ºÊÀpGFªÅèWc){üU ,ÚydIt’-[{S_|ê-¨5÷|…ìŽÁ'õ%ìùSܧ6÷X×fm‹l ·Œ'ptt°{0Û’ƒñ÷Øh|ò¯OáñÜ"M ¥wAûÓôÁ.J,S7ÝjÄsóÁ¼EAgÞ+M>"Æßëe­¼Ÿ®°(×™ªVô=O]»#ðˆ”EKzžÕ±'¹{2¸ôòûeu/ WMÉÛ¨Äêü¾ÏÅŠ{$1ð…ðn‚ކQ0W6L«ÖèvUkëb´}B³Ó;¦ý“þ±|íâS["ƒl鄆¢[æÌvHŽ$˜\”Ìi5g{ë®A«•Ì‚ÝÆ#¨1ÀJ+éŠÛ>áàÅ מ¦JÝèÖú `©«^!HÒÜŒ„¥ ˜ýT«{°™œíÐ9-—È©–é4¦Õ1ë°µ5¥ ÍžÓØ|€]Jž ˜$ž–³b$õkÒ‰…ßo^õ?q€°xß‹ÚZdÂòQÀU®{z†N© À™øÛ±Vâ.ÒFqB ²¹jDäÔÙdxŽUÔ>Kût”93£„c~U¾\äìsDGo7ix«/±*–×;&7v&ê gø©¾cª1øòši˜½@öF{˜»a*ãbZþ~îelj./H%xJË’KþšŠvøb@tÔf`2¥ ±ÍCª¨qª+¿Ÿ‚Ò”Ÿ#W,hïýšvi›TmuÒ´¥¢ZR`prI;)ƒ `p¹àÀÚ“ƒúoöm?‰VLZþ8óuÉþyIß»m)û9­ûуkù~Ú¾G6ù¾¼ÁJŸŽ`–àe’ÔŸtbÛn²+÷ë£P+ Š.üåÍ{×~I‡¼‚ºî ö‘`š¿µ_°‰[Ñ£Q×-ÿt¹)…œsß•À%¶ ©§V?êv0J\'aÝd(8G¡IÃÓíÜŒùžV['ö–‘1¸ËÖ8sŒ­ùÔ ú­Æ£XÆš–üª|v`eþŽ“þùÅ{p¶‚yÖì캒ï$œî㎠Côá Ÿ¡º¨{•‡‹½‡„—§Ñ¾&g8ë¯7e’eÜ|ii¤+ß|©`3všÍ—Ši¯50½„ù`›0/tÛÐûÈmCïûoz{lèõª«güýÿ`Pfev endstream endobj 63 1 obj 18796 endobj 67 1 obj << /Filter [ /FlateDecode ] /Length 68 1 R >> stream H‰tW;Î47Ì üw˜ØÀ6ô )1¶Ã/ÝØÌáÞ‹%Q=ÞlP£–ø(Éν<ÄýóׯßþÕ$§§7âO_°aåQª4±ªÌ¤G¹ûÁÒ¯ äÑF2ñL~¸?ÚµM0õjXÉOJÚ6¿/õI¥÷û(?¹¤×¥=¥§þe@ч¾¬­ùa•v¹UëÓ(l~¸·Nœý­.y€ô$mãûŒÉòxÖ^&.IÈRž`i_`²hž Üj^g×­éò2!=©åz|p{›>--Ü/`œHï4gÿ˜ßÃÆ\t™òx ewö‡[1(ýiÅrÐÚ§då =šÍ6pÉž/žùnü€åÂqNp±}~Þ8˜ÐŠ~âkòÒôv |ª‡Ó‡ªðГ»­ýRº°Öº³ƒ4Í7;:eOf*"“Áý79€W~ó`’Ì/Pž^ë9s¹É0wá— Œ¸Pû"ð@„åïLì¯E¯¥sÔŠ.åõ¹î ÍÌÝ*§B!IýYå\¼ï S¶€þMô`.1ÈmD]uúz]™ù¡\åëý _©•ÛXˆ\JƒEÇ«¤Šê;©<½ä²"ËeÈž¥¥…`¥‡qÁ$†R¢ykF­;LùA)7;ÜñX'§|þ¼,8C d¼•,+æC®KÒ©,–j&„¿Ü€ `y„‡Â°"šóN°¸éôvs·*˜ÙhÖà-¡Ñ#}àgá©0ÍÊ/mÔwܧÙU‚»–'×ÁØfÿJ[žá³$<ñ¡(Âxa™r4ÔÄt¸×âºEyÛeM¥u?9¨=ä®±?%Ò' #Òi“èNY¨#p@àã8,véJ³æìg­Sº b>M,PÓ[`C6LÝaðÕäÏ"&$Í ¬'Vè3-c¨MŠC<2¹–æà¨Ã2Ãðù÷k*ÝGô[¶î;ùÙöÇ÷QM:¸me|–ÛË+€YBf` Ä¢ZBÀfd ÅšS™\ÒBÃ2+áBðYtäêØGd%°jY†Šk}61$8õÁf”f†¸9fE¨ U_íÎàß<±–üäª`ŒaÄÛmí£œþó+}þœºPŸÚë¨VØQ ¿qeÅ2AíÍ;™´áµ$ü¯\§0¤í!†ˆ-¯Ö»gÛKè@ÌÞ‹–B1/ÌS ¿ÂªÔ½¦RØÁÖ'!á6µ-™Fí´´²&ÀÕ‹¡b2zëšš7΃óì‘?ûÞÙbg ™ë3æ@=4fn3 Àr*\óÆeø¤°4;Œ>¯eLiè=ôà‚j©öû0">ÓofƒÕÌNõ§Ðe«®i'¡Ñrª®²ùs¥j A{‹ƒ>³µ 5t*Dg\ƒÄLŸ1fÅÂ’”ÎñŸUá÷-?výïÿþõÛïÿýõ[ž,%ˆ©bÒš—¦„:ýû£î{¶¨ä¸Õ¡|ˆƒÏV„VS†žJÂÁæ™ µ nJ,õ#„Â"ÃÔ­:ˆ¨¥›eœlŽB Rr,cô †¤RýÎÔÐüô`ˆW5‹ìÒ4ʺþl«è륬ƒ‚n3eàÀ6ŒV]q 8LD$ü^ >ãv­â–©N)ƒ-ÈÓ±,Ï ,ñizazš¼…ù̆ÒGÓ—@‰CÊ' T2JíV(€>q…š8ùV†Á5ÖÀ!ôg͸°½‘4o- Wb D¢_ï£Úr ï»±cY£uƒ{µ7­€¸”Y°Ò½“YLˤæÙó,UnhÜ 9Û"–|ó’¡(¢íÚ49³—}ÜI9ïá.œÄ–ßW–¼ºÖý>&Þ\ºÞ¶Œ:=_;)cmñIãr¿ôÝxâQAY~âNj`›Bí¤†£cçOÜIèÖî4‚‘¼ÈnÝ;i4!î¤ÁÞ½“¿ÎNbpÕ@Á£kõÔ >ê'.¥\0Ý–¡þ×VÊX1dfᬥžâöµ4‚q- ¸u7èÞ¸öi]"sAÓƒ”Û6Ú úk+¹‚TâæÍØæìé±¶˜&â;:q1 ‘<‹iù^LCz®Å4äò,¦!ëg1`XLoØÓxë^L£ q1ærdÃrl/[!a/ Ž¢C?µ /Ãqvðì…VÒµ‹ï…²T¢íavm›¦%Õ|0ÿ¾bz[Kè: >Ð2uÝ •R©ôeÀèU…nkÑEär vÉËÂ*0 %l€2÷,$@fÕP·ˆÊdÖ53­ÛŸ‰®·Ñ§Â\€é•ðÏ燈8 [×'ÿÆè\ÙgŒ€cÒl ʼn6¦'Ôkd=Ùˆ1§c¨¼Z:áT_|1Uår¶Ö-ŠÈ¿µ…Ž_'ÛêKVwÄê­½Ni·"Í­ŸôhÉ« »Ê=KXé‹÷&½t‚êׄQ“rÎ_Û:[Öäâk æ¬ìåƒûä¨ _F‘íœÎ½¸ÌcLOÒüpwîò56Çü{ÓÌþ:о^æÌ®gvJ¶6ˆO„*çÂ7¿­iô‡n¶¶ÎýóÜøk©ø,­¬ã„yÞ™c…RÙ)‹z´DQÅH7¤š×ÐÒ༳ïÅÌ©Ì[ Uk{ÍõñÔ`HUq}œÛŽ­·|écƒ>Þ0Ÿ³ëVˆÕr[ylº-8ÖòØè·V¢<ÔÝzÎI^-ê™ß Á[׬zIlR– …†ÙTžƒdÎïI|† '­-1ÝWš¢¸:]ïƒCét7» ¦ÌÛìA¥i}û¸j‘÷QP_¯–c ä¶°û“á­N]ØÍl€'­ž• ìÑ‚oºŒ[‹^wš ùÝ¥§½L±£G¿vë1ˆUÀ¶ïPöŠ!À¢¶´L0¯2µ¼Ëz|ÕA-”g+m%Œuh•mÔÁÀ†‚ÿuã¶­B†6ÚR†ÿxÝò…cò2…6z¤c#ƒmPÀæ`¡±e-=™Žˆ¬E%è ÖIÕ{Þ"±5g\pp…P]r"e GNæÌåKOÄ §¶[O$ïÁà$€‘L¼ô$Üzô$˜p J°÷JpŒƒc+± ®¯yC¬ÉÖ—¢ ] ÝRÀWù7L,ªåÒ‰F(‚8Yù÷(R^GûÓg wÚ*#Ô¿ è{v8Æv mi’{Õºµê;€ÁWy•¾bµà¤ (€QLõO^=+Ø£ß| ·A9\z¬Ýz¼:z"Ës`ßÚ³ôQõiÆÆË<Û¾-®¥öUˆ}»€}t¤ÀŠ–fmÝå[Ñx)ÊÁ×®öóÆ÷bw^;`°ìZƒg· Ÿ-4'n¬!g» èœÝÉéÖúrý¢pªôbÀV3}&ŸozX0ÚfºÁH/zÃY¿è •.ùæ‡EŽûÇüû]Káèª9@»æv}Ú;íÄ.fày Ä®ú¾ÛÍÇüû­%áèpçQ¨Û€#gÁÚ£{Ç«#‘WŽš^G]vÇ[D·F[0Ò|µ àlóÛ%ý–Wç@#.xñ%Ü fê/@ÃÚóW›c…÷ î˜SþŠÁU»«ZÅÌÍ$´_¤XæÄqZõ]‡§¯[ѦV>×ð?º«]G×Ûöü[&…$R×Úíiƒ¸ ¤s™÷Ïð"‘ú×)vwŽ>‰¢Èá ºÿ>A§‚ß>䂘&×Ï-òà—P„p«ÔM„éÔU¿÷€Ì¢Âõå²i’ø$ÄÛ“Èz‰OBŸ„z| %¤f"”¥©@0Š)ÁA(!‹¡„†~%wb”¸XtIäài¨ÐûiéÕ¯©IÃE¼–#µÿµ&AabF…;ê³Rõñ!¯³c˜¨÷x%¥Ä*άÜ?LÜsÿð{ÏR7†‰P®‰|ù$ gâ“°¦‰O˜Kàg¬=»ŸDD´‰NâZA'‘§ ¬Õ÷éçÑZ¬Ü|¥Ä¾ðéC|’À‡OmIÂÖÄqÉ–DlÉ–üç—_'c’m0ÖWˆõ?eoFXÅ ËëR¥G¬ ÆÐ9Z•q×NÜÞ¥ïó]/FÖ™{DmheF¶76ÿʯŠËU_lìÃ(B¨Ô„Ù÷PNLÞ¥¸"Xïž²m}ë¼Àâc÷7Úµ¬úÚÞ ¡]ÛgÇa±t÷úªuPz¼ùž!ׯž®+×DÇì¯,×_pE_¹® {›+×õ(Ka–ë Sq¹mô£Ñ#†\×»ÚÌÌr7ŠmŒfpG­~Y^WÓF¸k­¢ZtåþÁRµþ(¥ZÀk”æÆuy1£´ûˆ©cƒÀû˜g‡F}Yã&rp4½,À^ÆŠ–2(à½jóp«^·J×fÇ|2J—ʦž茡…ØÑ¯ ÅcÝ[PÏrü…·Ç†½‹¹¼‚éÔµ›ĪÜôk矻û•'±/Þ´§Dû¹N£…O¼nM»€CyO•®¼"ÁBŒHýp.`ÚÃÝÛ¢jwh·œ‘©jj Ð¡°Ççn£$ûg7¼®tè"N*æD€Ê3x•O….§…}M`¶ºì}–w½™CÈí›ã½½ž/ÖÓÅNH¾ (è] rßs=œÔ ˜òPRðW«„Ç/ó!»V…îËÊÈ$~kŸŠÐÇŠ¥áúÁÉìm:Ÿÿ¼Àc%­÷þ´nVóýÓ|'ˆ`¼ç3”¥žüË»ß5~x+jL¾Ö ¦¼ªWÀ®|þ£ZbÓKž@QÇñ°g ö§Ý©>Üi×ó³Içå<{d.1†â¶v«m7ÏÿôúeÈ÷þ"¸êém?ï‡4e€F´‰ë>y˜È›P8[¦–C]ü5, ÃÐTY2,(ØÙµŠ_¥Táxú_cA5—e§íQÆÓøðÑj€×.Ž¥öc>ñ«t´bÀÞÊɰhtšè†ZMp–´k–ˆàñ+lò+q­á‘G¯#[ãÓ¯ ­m5÷@—4Pk6ÂÖçð¸ð1`"(áB„ÿ¯äÓžð.åòoçsß“7,ß‹Þóy‹Â­¯aQÙÔjË·%æS.'@౸~.ퟆEÀöݰÌŸ†E@ú4,L%ðÂ3Öò§aIdÃ’¢ Ã’®u KÊ@nhLæ"®aá âÐ׺~E2ÝíŸ.DÎE|e»"X´¶Û• f»’pðm¤ðçQäŒþ©xDÀÏ:ÖCJ¢ômx {uÊÈSõá5(µáV"ƒ€·mlfƒ Ñ#7Ĭô:ǧN ¥µ²ÜP¯c$rC]Ñß䆸¨eTÕ†b¥Íg~d0+õîií0q'Ø_ø5urÿüeýý_¿ÿë—¿ý÷ø>H1)ªMø±áOü¨zº€Ÿ±3þ±_¿ÿ[‚XâtÙgÖüi xªtÕò †»S?vAf4À&.è(®=š÷¤>L_uPûä®^„¦<¹ÔÂÅçƒäO»#ûY8d.þn8ÑĨúo§ãÁêí­¦b¡[5V”vamðŠYͱ¦¢¿³<ºf‚Ñ1KÉhédÑH[[CÎY{7š1OÓw£Ð –uàw™"~©©ôbÈçú}ÒúX‡±HÑ:`éìûUÏáèË9ÊÁEãˆ0º½í ØÊÏÇÀ¢ó0j“‡¥ª åÍ¥êœ>ÛÓ¶…9Ûjañ«¬ƒ(VU±°S¥îSBu7CÃËj`Üì˜E0°LjÀ? Æí—;à”ö­jïŠú}“ •JQ×Ûð~×Z 6ùÏÚ_ o=êÛ9cºZiH7zŽåŽe‹»èhR;2Q`ö½´Lãg)ݘӞåÓÆ·šh3Þo´ÒA›Ç½êqU“Z÷;s4ó’ˆùd`k:VßTg®õ}-úÖÞ|Àtv€+Ïž¨Ÿ1ÖGÒe%p¢…ï»Ã¹}Üúy‡ýÐ “‹])$%4é+\`ˢÂÚ>ÃP%W›èZâòþ¶ó/|ØàçŒ$Èð°“¼â@0cÏ"nÿhÌVAç;u±±D[‡%‚âŠÝX+s$ÒBë0_p¤iƒ*m€|W ‹1„HO5G¬ ¸\×Â’ñlà ¢¦4[ÐBÅJ¾×^;)mðþ6>¯g*v~ÜMKfOÍRûËgÒHÈØâ3QB,ržŠ€bÏ;>¡§æ¦g§OÏ4x.ôŒn†,n³¾sž¥Žù=Ú° CÁ¡w¶UeIÙö²d 6;A§æ3ªíÇWæ…$úPŽ¿‰"ýuNÑc4Ã…ˆTRN´5¢€«˜¾®•†¦ô,uWŽå’ŽÃLíG™Ÿ ð„¥ì$Á®ø¥ä_+ã=ë sÚlï~¶RæÛábE—Ù‚ˆîJud¾ÑîV‰óïû=,/cŸ‹ÚìPÞÐ@Ƙ‰ Üj¬#ÀÛ½ú£”¾Æ7s<ëYK¶« RÕ#zXàK=˜ÒMD`v ¸õµFÛ Y\ê¹Ue_&7ý;FW¬î´RKµXñÔ£9U8/jª;ùÊMsÆpkNm­(c ç7 ÜÓó ÔÌàØáà 1ìæ‹«¶K“¡ÚÈ1î»ÎX+6Ð%Šwâ³ä®ì7#ÒÁÛ†}cÝYГ‹dç!ì=·“fÙ–j_ ¼ø°èðTÈЗa{Ò4»i³z»«=“x¯*Òuxì³x´éêxºæ|@>w‡ƒƒš˜š/†.a)PB˜L`}81=œ+à¹]J³dJÀéå ¬t›žE†^ë•#0T;lX±-œ{±"¾½l7ºÉGÙöcæv5>°h%D7¼àíœö.Ë»Þ~ŒžÖ`£ÍÓ¥.¤ûgꀩÁ”3Š»K‘þ]íu6®¨õ9ç'uA•ý0©4›‚´ížèpQùш×K›‹0¸yѳPÄ¿<¼¤»ùÛÙ„Ø÷áü(£všqì½×›Ï|wÀ{¿3C\­ÝC:ïD˜)بܪ+"Ù³¾hõ×Àxýi­ïzySC S—6S¸—6íZ·¤8-ߪŸD0z£¨Fl‚ÕÖ^»6Ö³,ý$€ {º±6ºš Ÿ'œ?HA‹ÆžÚ[òlW»¶])̽–ÿÁñw!^‚¸'t:_бÃþÿ)½@œÛ‘}ê²A ©ªä dP5³ ÆjÐZûû³*^÷.Ó¨õÀÉw5K‡‚Ußãnù8 ©Z+Κ¶-þÓmu µ–GwcÂãÕ¥²ËöÙ3º ˆË§Ì°ìa߸õpšGIL94Mxz-ƒ‹,]wË~R˜Ž‡û[+‘‚Æë¢_ïÆÇµS“·¾ïì&oXbÜ= !~®ù¡I#ÊK£#ÚÈ1Ap» ùç¢!¼Þ•P€Ùë³%ïýu¦Ö{4ÌéÇ’Š‚jÝ]ÑtqªÓf0;t´ÈMC•Vu눰xq¢ç:[uà.ÝD*Ý{Ÿmû>3ÏoO­GÍ߀ŲSÕî­Zí{÷v¹¼ÌŸi¡¼ä(êæ…ˆlû—Ìg*™Î럥ֵ'FÛÎʸÚ<4eŒ%“Zuƒ|ãÛC't4¹I.íL•å‹ê¹ÞTõrÌÓ‹îéû]ŠÇ™ƒ¶ï £¯ £îÊöÖ“K[ _³h›K-ÀÍ·ƒŒ/ø¦8álÅólËâ7æL ßãÆ»î {/&fíó ³ïïs¥é]eO„ó&A˜cFNÆìêwrÊq­²æ¯­ƒÃ#øk…/j² Ê[†Þ?ƒwÇiEh;A*ÌdÌC»H Ï’·CwQ‰íâìf†ål6ö9×WÀÅŽé–­@;Ö Ä>mR‘ô,c U5A´V&úÊuØé»&äµC-”#&2xÓßøËÞöÓ¾BïAØû]4õýnΙJÅù¸.58é L&µÑRôCìpã÷’ %pJ¾¤Hwgß˦NÁÀH3Ç:dV,Õu«u_v²5ýÓ!ö|~Ó/ [Vµºüh—Òþ±Aµ·ÖÖk©YeŒtçAüeŸ‚÷öe>[Éâ§>b÷í¯ÍÛ Ø± -Ñ\O$±wvVW…9J0¸\ïmç_ _`N$Á¨Ùªª GmëmLd)ªÑô| X`qÊUЦÎ3vYæÕv‡6Û›‰†O½÷³}Þ[Ìm³™ÌkzÕ‹€H°[Ô„<çZN$îVó×á‘iÓmÂp^qƒvë²üËž³,#hj5ÀÑllNâ|JÆQ”ÝŠÜa†DhñhUd1AÖb½+Å7m÷±½}H›–åî¼ô rièVí{<ËÔYvvñrËÅ~™]˜-hMæ<‰ÕP·‚€Ùó'ª¯u.¥\¬®d¨£ÒÜ¥^ÖÓëæ6ÊÒ¹SÀaܦ½>«4æßË„¸û»%Ž÷=§“Ç›J`ãØ&™ôýŸËN¯k¹ÍoØ@Ï÷“ë6Ÿjn@0î…í‰8ÀÕô©¤Öå]iT“yÆÁqضiÉÀ<Ð^³Í_ñ|nåÛvÂvºÇ_¢Íñ0Ïhç©GÑ]³FÖÀWžÑú¶@^ÕQ–(qÔZíóÁ>¦ƒrµîØbÝ6ÙêíŒÝś۸PðJ÷G ¼–|ŽûÁÝÚç¨ +$ü¯â§‚(àÚ¶o_%ÞŸE)û0Žcw¬ÅVV!µ #^ݧ=OçC)õ]WÒ¢ƒ­Y'·õëŽ&B7Þ­¶TS«Ù;±Y–t”±gã’Ú0/8 µ/à émé‚ð¨—馅ý„lD­#S“†kˆç K?À2j€®ý’'ÿŽÜO‹-•È_mæ.&b†¬ž&›~¿00ŒB‘ñò¼µ$^Ì%‚: ÐŽ;œ_ÍÅ]¬•nŠÚšLßõ׺ƒHá>ø»Ó5üÏÏd#ÓÝÉß]N½ðÐý]y·¹+Á04K[µxA¿Ü ò]¹º6‹”‚ùDc †Ö°$WVO4u€Äìðß­L+èø^Ôwúø7j¾\¥ ï^gl^ÏÇ¢K^ÃsÙZ°&ÂÀjX•i«_Ì>ïrV­ïR1«~ìy¦Ø÷|1|­÷7X(O÷²ßHøž5_—W,Ú±= Šƒ»5¿¼@‹o'¬û™d¾G@Óm¤ÏçƒûñÁ¢ dC.Q:¬5¬ õ “Ô 6ˆÜ žà[7Dç#Ãæf½Pµú—W™´\+…îk¯a8MbT¡¡IêýlHÏ.ÎLKËquXðÅ,Ó‚-”®ÎKáìæ‹§ê.0Òê˜Õ•jµûýVì$$Ѫ6ª ðëЄŠJ¬–Ô¿Œ›†“ЉªÎ "˜>¤ ¢ƒÅt fÛ™ k®úº«ɲúŠè;´-£‚ûb·Ìr犯͹ÿ$6à—¼úY|$‰Ì¡²™Ö ¶'÷#KO-w ñ#ï|ÕÍ #p³?ä$HpR™ßß§Cè¸&e€ÒfUÿÚ§®ÖæáûìHC—‡¸¡…l¤×§/$R+CKK~jJiÉ”f°5O’zp‹IÖq WÜ~ 5N­Ãè˜"÷»­Hñ™ï¡oé*5õØä«Rl×ߨf{® iÓY;ë’éÈÂ8‡*`¬Ã¾‡ ðV;ïÙ eVs ¬…“ºÇäsD—ãRp”å³%dªÎGaŠ‚d›ÃM94…@I€¹†ªœÞùŠ­tsÆ¿½’£¿wVŒ’Æ» ty¹ØýTh\:W Ûíýž8•/mÉLåãDÐì¹Ë²+f¹ëIfȨ;æDà¶ÇtI^Óáö"k«Ü§[0ÓFù~#ÕF·.Ý>*Ûs“§šŸìþu¤¤Uä¾#[~Ï3L%L–¥(iVŠ"Ôˆ@J¿4&‚‘pÇÊOÈj)±ÿJ‹þ?E-]ž Ö¹ê¨éÀ—´8C{lˆµ lh€›¿%  moôá÷‹/#]GãˆPÏ­‰=À![û—¤ÎÑ´t¸„O3Ž„?ëVzœ…óD·‡ÏìŽñ™Å(ò†Øf É€Ta ƒ ’È>3" »1ªšR&Á_ÅLéìEµ[YKç÷&¿+‘M méZ&)Š1Uû¾dÉ.èFY;Õó:Øê„¬YÊIÅ£[ué¹> öçñ žI~ª¥v]HÁ,ú>pêZNY½À"Ò½RŒU@šÛÜC¼‚z]›Rh6MM'…št±c§®cç ~ Ý•s ¡¹gÃÊTóq8æM/o È@– Ü•0„fu×—¬Pc"s.[’,ªcImSˆ³[éZ1™.C î_õÁrMY%·T³åž¸˜+‚HS˜Š¤^!"šX{«ªS˼+~gýyXÊŒûïôó/£ƒÕ ßqüÄÂßÞ&$IJ4¾Wƒ@Ï*ýk/Kø`œ‹a¥6ez¹ê ò#Íí¡£¸ñÛ/„`ƒdAcwÍ¥ “™ÔÿaÉ), |峨†o‹`¾yµû‘x¤»3‚)aÊÉ%-§&ñb”+#Í;?YºóÕ€kÝÒ}—Ì”‘Ž0#V/i;ðoÓïuäõ,nôö]ÀL:JG5t‡D Ž×ÁÄæ ÔZº¸€[ &¢L>˃«GÓ…c@k =¿¥Ñðn‹óŽNd#}“Å*è,ÿ¶¶Ž»|ÓöþçÇþïÇYŠ”ŒùÈÝÉäôûÅÑíh£Ÿ6)}ÎƒŠ©Ÿ’HAÙú ¦´”¦&°‰ m©Tµ‹B5Hc†f8´n"ÿ#ÁŸ…U4™@©3'RÕY°‘‘lý=”ªâ½tîV27B`«NW¼7T¬®,I+ÔÁä.É­~¿8Æêž¶‡ô)ÚÚ»Öš¸ ‘¼jddRŒ’Ä[òeuíñ–å!“ü0É aa$üff ”P¥E°–mc¾Ö¬‹ÕZ¸ft–ë÷ãƒÍ»Î6<¾ÒŸî}¥õøJŸçÆ® @Hwr'åw%_có®®'R¢#ZÀži ´à{®ÆëÎUö|d›[‰v3?[n›GñüXý‰µ }:äw7ñp® µ¬#EVÀ©´M%E<˜JÂ!ž£©$Ð<®2‚îè j9ø=¯ôx_é£U_éîsl¥¿¶Õ62S»Hu•”ÂASÇ»Ê/m§³þÚJ“äûÚJzœÛ­j+=èm¥ÃiX‘Tý~qL¶]І‘EE`²pSÍ3XF·Vb‘ÙT*Ëmàãvm<á}åMⵕ.×ÇVºw ¶Ò=ⵕ¯Œà1–Vgéw=ÎÒ…œ¥ ÷:Ë{¯ë—n¼µrã–¢Å~z«FOŃôñu¾pµ]e‡345ªfâ#]£©_#¿mn¿Â ÒºÆ á [ÞŸ§óÜÙ1RR%^ºaÏ6ž›7È4¹àÏÒ—–Ä"á9²´ ÍaŒ¼*ÅöC6@3ƒï[d9n¼Cƒî=д€×³ÉÖSwÕ%'=›¦zxNU~)õÍ þ»jDÌs‹pŸl’œM6Üxz]‘JÓ€‰ÞiYÎcÏ;,ë6kHË®¹œcYkö}Æ1jxnëãšGÔÈX"-A¢‡Q?” öÇ_¯RäB[3¥ e ±4´é[•ê$u›Ž´øÍ>Ÿ@*Ô¤`=ʨ QUÕ5- L€¶”S½† ˆßE¬æ <ìYÈ­6¸¬7ctѹÿX›ÖÄ+Í®nb´iÝÀ‰1JÁæÄ5R!÷óØ[Y¦|=-<úáÅiK­ð’Máî”+Ëm à5%¥55-–ƪãòbOŠ#œïZÛ•âî%†°•ìBÐx‰4„YÝÅnÏßz¨gæÜ¥H¸§Ë8Ð¥µ”—–Ô9“5\†ÝÚe¼F½©±QËõÏ:TE‹ÄüÕ…™âÑm[Z˜]{Öß§ùËôñW¼P¤ïÒ=’q°Œ™'„t”w&žŸùEØ}Q{Þ×°U oʪåÎZ‰€ ; f —;÷ qw­;í] Bs,ih·ì̇´R[Õ&Ø:LÅ^ùÿ„—,cw]›:¿~3íë±!nó—m 8Ü©:O4-&ëüWÐvøÀø}3¡¬˜ïW+l³Ú ùÏÐxD.\M‡ãÐ[S-vyáì²ÊG7æ¥]©8p4B·™y}ÐH§vI%Òª\qxÐ’‡³[;MŒÜ"Üxœ{¹þ8­„l}ˆŒA£5=,2ÆC+åpëûI®¯{…VYdRË8ÙE¥Œ$¿_ùóðu´‚‹bfÖ‰„<”p¿ü‚BÉuÆ•uÌÈ#Kÿ` uÔià}Q{Vþg¥¸]/X‘Dn¬—Dë‡êG¢ªòÍ啎ÚAOuópVk%ä3U{?\Qµ„\ª>–ëk¸Ñ 4rqódß/~ œ;îZ=[ð…î"×Dº+_»y³c¦Ô%ñšW—mó¸çYŒ\ëG]ßs<%Y޹ß>ÀϪX¤ŸN؞虫4{ý¨ ºXY9–ÅŠ ±Î±§mtÅé-¬µÞºHäÛȧkëÚÓÝ댓C éç‡/îÊK,nËËBñüKY.ØËmë¡ÀåøWˆr=äÏÛö«¥E¯ãˆîóî&`bºúÝK{È"A!!`,!ˆHyfáX„üûœzõã~#‡Yht¦ouuwÕ©sNæå{æÑr'àaP?y×ì™ð‘ú·‚ØbF6oý–@Ô7¹S?p3‚(ÞÎìŽdg™œóm”r·hÉ®±{vÖšÑ܆yÄë˜æÜ°Ôî u÷ómô#~Ú·7Mñøäˆ _ÁÂFÌâFÐEZ}8ðZõ¶E@YÅD㤈¥Âæ5.µ¶qÄ’u“#–Á´g°`Õªû˜šZ°hæo‰jI¬õzm¢ZNЛù?Õ ºUÝT5_V‰rY¬ªi®\ÖÒ6ÁªSp­\°ó ôºP²9 E}¯Öä½2O‹^n`B;×äŽ9F¶Å ÿ¤`á‰`[ •åø Óa¥ üÍŒSötù8ÒŒÿ¬  <îPŽª·0B 2ÊNƒy¡’/E8ÄÖÁ6Cås\éݰÚ(Å@m­|ÐzÀ(,QáX‡.Í\TQ¯¦5z)œ¸ˆàl‹C%ÅbŒÍÃ$}1–Yö=¾*þä"Ó$/d€¡(U†0‰k¯™^¦¾P…ÚèVž&C4EÆ5;ÐIõïˤ¡ÓÌ@#²Õ¸šæ€½Á¶¨«W gß®|·&Ÿçšd°ÝÀÎ|…Ãñ\ B/7ÚÌŸê·2ÁA¨¢\$— ýÖÄ€ÄÔŠ7ÖÌTÌ ­uÈ"Å3\ Zö÷½# „Çã‘gDùôrpfŽe^è~vÀm~¿–â¿å˜B ŽÚû6²,úQ­?T/:Ñ«Û@<)éóŸ`Zìp]k=ê$MM¡>°æ–ïdM9—ÊEšzi+uô1áù½Y\¹F4ÓhŠ Qêu@ä æW@Ó°[gÇü IîÄ ~ƒÁ:ÛÒXH38- CW° óïÛ~š _æ I°Í} b¡Póƒ< xXªæÃÜ}ž^Rß›û@G%Ã)Î¥ÜU¯M÷Áõ>Ýcô€î¼îæ°[»e>ˆi,žJsÇÊúxbî<¶€Ëz¬Íç±¥¹œÇv r;óÖãaw¸X\±ÅŸüP˜î¯»ôsÛðÚ|B × ÓPé=zÔ!¼G¡s)jÙQ¶1!Fx°i`ìóÔÞs1zö‰Î*q;2#¤šv®wçÁâb¼â<ïwçÁ`»;,ëóvw{Ìé<övç±g;Ç~¤xÚµ®¥)ù.ãÁÈ·¶ùŽ4PùöT{c1^{)×î;øa¶~Uß±ƒ»ïØpA¹hÓ³ºFi»„I§²ÚdÖì]2%ɬVq_ºË¸¼æ/›!^ \'4o³+v£åzWlFêMBƒð¹I¶7ÉÈ&!€'8KBŽ?$ÄnGØaZkEgí“éç%žìû§q}õõõ7ß?ýâÛßô¿üúåÃw?~þ÷?þðþ§Ÿ>þøòôFÐï>þýŸ/'þÕ÷//ï?}üp¥¯ŸÞ„ëÛ§7ŸŸ>?…‹® ?ïþËðoñÛ¿€ýçÊ×ï®?ý9\°æÝ9}°N-UYÕ.ï@%˜÷ìì‰ä ¿„ûŒ8by‘œ~Ï©ðÏLî½~_Ü©vÖaŸ‡©†7±f‘× jk ´aQxãçØQT‚i¹0Xd¶¾’Á3¿Ëy¶~Cg|ò3ƒÈ-7\Ű0‰Zv0ŸÏ-•á[Rj—FE}ø¥H׫)Ìä6–jgG0Ǻ8Ð~R\Èÿ­ãµK*Ü¡CÚBÀ$ÜXÖ&¿Ð[ämφQLì˜Ýë±’òZÖžP·ÍÖÞ~‹óÖv( ´&ýÈì› tÆcnŠ‹Q0_\Fì&Ná9 ò}žÎÀsKâ‹mʱ¦Ë·%©ŒïLÂ$ï°ªf0ë…l1sƒeÈ÷Äâ’,‚q¡†­¾85o9ø•ç1K쌴쀗¢ý½³°êË›T8ƒQó(ò앸¾cÂX+>s0V»í¼©°Þ1Á/ÁÕ6)„j`®Å¦¥âÝQ%’aÅ6\þ¯fà¹ÈXÔ *·D/zÆ[íŠã¢›]pMpUH€±¢ÅZ\À¼øy•‡#L+náY3”BñB¨ò(s¶*%g2€b7guô ·Á8‰×0ÉÙ†ufô¼ØóòzΣ”ìöeÎXůÃñ 2DAí†F.–E.Æmèž¼“:+`9FOO5,0¥êS¸è7%(vh gÞ•õð´p37'èÐnf©t"©‹d°ƒE=;¬ÂƒÝGÚÀ¸pï:ÏõP”𛧉K¹ó¿=J%4žú>-C³G@cX\€Ý5VãYîiä|@ðr\¶Š&¼Ìݼ ò×ub.ê«f)Ì‹“ k;\À°é ó[ÁÔl‚¶:´è –¦ãi*à=’ Q4d¶Å ïdŒdMÈ v,@È¥º"ˆÎ9–a‹GˆÉr‰ìÍÃrÁ¯†ÞZãaWm±°®†5ÖRŠ Vö4M„*{¦ò× v„ïc¨0ã…Õ,€pòü>¦‘,@Œ^Çn9OC›–†pç¨vËuŸ œi¼Îý=Jäé ,ƒ½X¥A+@´9ÏW®º`Å›hÐÑr߬SŠYžL®˜ ¬ì°4—dKƒ’ ¿ÇP¢Ø»1\1›ƒaÑ´\À[Çsss*Å`‹{·!Sd[©ÆÓƒ¿™‘ÑöF齿Û55…=)û>ðÕÍïÁÏæ ›Y‹nCºº;¦ÓÒLnQÞML¾F=4‹ÙJQò¶,¸„W)+loÍÅ]ÞL-:o—<äÃÙ€iixàTÉ?÷õ <² ¨Á±"›¬Ê¨”àGÖ›Í˹;¨7›å—õºy\·‡%‘8½°Ñóê¨I''h-§ÿÑ]%Gvå0,• Aµž}í,œŠõìš¹tu¡ôù$.  ÂŽÑÞºeÐjßã.nõÒ¯ÊÉ]T6ÀÏÚs#S·ãOæø¼Mê¯pC°„Õ7ÞÍ#DÕÆåÍwµð8û1î-6±bÁùލX÷…?/|q â7¾ÙÍïjɶò=Ö{GÏS³c \¿kÜçÇØ¸®QÕ <ö‰0xUqØxØÂt9ÑŒ©ËúMª»4ÃääF<îØè»ZrhcÛõ¶–ö@°µ÷"lîcq™ W6å³¢Ô˜FÞàÜ…T1|ªl¾®žÜù¥Öf“¸©íE®…óº)Vl¼A÷pÿ'Ž„7ÎëZ1‚ÖAï7êLÖ†l„ð‹`å÷}óÖÊÒug3‰Ýêì§Δm´JÕ qè]d;\4ªðVj{¿Ÿ­‘/›î?Ãäa•.¹Bx;»¦^ÚÈÛTˆ/çØÞÛû”EkŽœvD åa˜]3…–¸j3z¿/«Ùû}amjpãÝ:›¹).ÐáÁ+&pÓîY?Šp-9ãD:#½wTaVxƒ±?¿/}q¿LšèÔ©Ž;ÅR/Çš÷†ÉÌæzó*PÿàG[õ..: ’ªpÿgÑ–÷Žú€¢êѰEçXúfkî·‹€×ìƒ>-¥¨“¨Vbk¬.>ÝŒ-«Fò‚M J¦Àõ[4¢â,Ÿ¼lêEÐÜðç¤V›'¢Åƒij†¼õËî°[sga\²¤¬þú0 yZÉ2Z'g}r–5ª>ãçBºßës«S¶Ê7@ñ6ôL_‡‡ïï¸þƒÝ¶Ò2‹û¡­ÿ>’Ó<ò²-ú©KAöd©-OC©T°7ŸÈÓùN#L žâr —r Ã+W„™åÝ ]hÅ[lEâW¼h6¦ÀŒp_¯»ëðd•`<sÙ-¤à„JèŠê$ÆßPqc«á¥h²° c˜VôΈƒ=~•SØÙ¥–lºx¡EÊ PƒGý`lœ>SOΞU+©¹J|–ÈÁp0Þf JŽ,üL\¡‡ Áa°•´/µNJ/”P…[ÎW¹W‡¹q&j‚qB¬CmÖVÿ¬.8˜è(|&“^[¨¦é4b)·ƒFiž®ÀwQS ¤Â>ŠfsÝì˜ö*G ç¸ÿXî8:Žöõuq|YÙì_m1€(hêz>ºTÇÞ;ÎBá,EmsM‚šk0ËN6>ª´Jwx8s+Ÿ9 …úõòdØ º´t™.PÃK|\'AÑ7NÉÖíép³:·" Pš¿ÐHã%òlƒGX•Y8܎ÉdϿ갋E®CÉGÔ0)à9„{±‘²ú0 6»–3NS…Ф\Glxh ‘ÛÖ4Ösý !ïÃ]ÌBÔ{…ËY±Êý¤ 4/Ô»Cm¢Èº”H|ÄâpçÚ–š tlià€«I|Ç÷<ìò0¨…LÅv²3?®dáDm‘¬Ÿ¯ZÆw8·UåÑç ôi‡¾7³Åެfû…-³“2 ÕÀÀ—û‘é –úßÂ+_`¬O6Ú¬®>MK2d¤![G¶“n›$fVäœ\¯ý…]Q‘?ïSÄy4@ÛR³Ý ÿ‰¸á2_+ªÐe¹Œ°ÄòÁN“#ÂkÁ ‡(£ï¢·µ¢ÉÇÊÍÏjnÜáúUj¤œ|õX“…%¢ÛÒ‘_ë‡Z C2J2N ‰ ±^h5ë™HÇYç®—¨o÷u%ŽCõ‡ï</Êý°£Ú³p -š|èðV€ju¿À¯xûl]ÉÅÅCZ)3Ž5­Ç¾}OußTÜí~EMÙBÎÞ³Ò‘rR÷V9îlfà!YŽd¯¸L<±j_îºôº:`éCýÓ"oՈϲAî$Z?0ôþùÈ„ K¹]äÇÖL-Ü'n˜¦mœý”º3¯ýÆoœñÁXj1ø6NR¸ €Ãd–\éÀ1I±Ívó}8Ü™ÊáŠV ꤆w\W¶Sôµ2½¨~ïÁ´NÏD8nSfÕ“àmÜë¾5ÀN¦ôm–xá6ó{u¬ÃúöthøÞó¹P¾&¡góV†ë3éŠ&ì ©‚¶ì°f |åäp¼Tš¶…TöÃc±Ñ*G »ŒÛZ ÇûTŒµè¾rù¶ëTÄþ™©ÊŸRö¯йZs`EÙy¾–5ˆÞCt9B^uß`ܶRËuWŒ;wìz`½É‚Bl‚¶%¯¬¾²;­qŒvéKs½ÈýÀs‰!µ¿öª/‚Ä p<‡o³ãê’ÝsY4ÀÞT{µ:ÀVRÑv ,À6ø ¨¹Ê£Ùè‰Kõí`;×1ì\Ó8ŽåB`؉§•2yò®¾÷d«œÍYbÞ̹ݖ"¼°Ù$×bf„ÞRˆÙ‹#‹ÏyTø³&¥ý,c¼Ê·2Ù:·ZŒë×ÁWÍ ®SOÚ?¥Ÿ"Ös^$‹!Fâe {êguë/Á5è¬Ü˜Þ…jIÀ‹4¬äÎâ1À¦Îk=¹ p·¦, ×_\±{9À*Án|¯cÕ¶À3?9Wèïë·m…Y0J ¿î¾~ÌÓøÞëÖë~m!#­Å+fvjºCY”*Ñ»Œ[+pD©<<ÌèÓF›ŠeÇ{]Íð±ÞüjkÇTõÏ®Èô‚%KgnfOM`ÐæMÛ¦¸ªÃ,ÚjÚ"6™G¼ ¢Xxéiá9sïJ/$pm™R~ûçw^@É#|“µ\¢.æ2êL‡5{_ ,à-äø’Ž£Ý†'¨W¾ð²ÎâK±¨£¿Ë‹Ë\ÐsCbš3tçe¹üV.¯oÇìýZÑ ¶ *ü}·B‹6iæÚ(S "-ˆ>9(]X˺°Øá¼KŸê»^À.ÌB¬vUh/œ]±¬‘3®‹òŒ¤œÅdñ¶µWíZœoçÐ;.ìvTÈ»þÎí𶙯ø£%À£ËP1Èy–u¼B]˜¾dž/¥—ó]õ×–XÔŸd l1ƒ—úóç0£ÄúSC„f¼CAzb¨kK¬I@oÄ!S¤nŸuë]¦+ØnÊVºkgʽ%Ñ¿A.×ùvÅ fJ\aìIpΦ‘:0¸v(3ék€ÓЕ܇øØÕÄœ§ ¿nWÑ'&ã½­ÕÕæAÍ5øÚ볎® AÃâ˜[¨Œ0Pvöîìúܸ;=:GQÕ{¹eÀ§ZOåeêóѪÔ9ðw‹VÔÓX0< ‹¡}ƒRK+æ¸j ·8u©Ÿ/†ú‹*æ¾2hÝöuÈ ÅõA ^ Úð§R>$Mßd…b)°@ƒp;W'òá­.âÛ…o⋼¥lÍ…æ¹DÃL¸J\^Õxÿ^%É•%7ì¾C]À91‡uy©[8Â;Ýk0 ðý/•º7Š~>&“Î; o±°9x ]’ác \¾µ•ó2 èØD(¶ýÒØQ6ÁC1íÜáéqhûÅB­‹O@7 ݶyvsÉñ' ñ«Ëùüþ©’ atbÛ`•jQ™ÃìG;¢x¯6ñ ÷Þ(ƒZRµb´èû4Õ£ ©+ø•¤‚vû¤ø õë¸I–Ç&84¸Å"ëEF±á Ûwõö"ðÖR6!÷ˆÃ—SbΗ§îÙ.–j¿×’ëÅfÒÅÏÀ8ÏfÌÃüÞb£ói[Mé8‡‡3 feâ§óx©P!Ü:rfo ßk¯Â.¦ÇJ5·"?û÷]¿F×Ékù¿¹r–LéÜZì(wÝ ïÃÕ@pyÕ|∀…e̦{Ø»ˆ§¥¨D#NÖžÝrqº0jž5´R:¢Öý`ª”§Ô†Ówá‹o–>„‹dÜÈÉ¥ÓçËTÉŸh®ácoÒå~‚çQØús#Hxé%'ØÅ&ÏŽµe` Sæ0#‡òÅ]˜q TYàf˜>Ãd5÷'»Ú€†ÍæäY©­¤ý\Xâ OãîÕ*?¡¹ _€XCÔâËÏ`(ÖT­– ›_ØCk6‘£ò¹þ¸¶NÚéÚK4ú€Ro!D-d˜ƒ]‚Àóàû"¿ï9¦gJXØE;´ ±3C­=(;- €§(™Û[€àˆ"3ØÊ¡eè— lQ¬ÂaÃì/x(¼›Ï1Á~#vû?r‡Fì¼Ë\2Òl›‡Á t bÊ ô" o[ às˜ °šæ_ŽØäÁrùyAs‰ÍïUÖ$.÷§¯ Ab6öæM-çãH P’¬ûqáÈ«cw¸?ô«á<Ü%fÀályAëid5·•º÷Åoê­Ã³g%=Øš|™ÙÓæÕ.&ìNÌ,Šx÷î¡î*Ϊ®$„\¡TBvj*zàÈ7¨’ínN|› tsT\6žÏ¹Q Œóñ ¹ÒŒé/B8¾Ë`„omçñ{7rাíÞ*™XÚœP˜Ì­žþÔéqG3ÌÕâp ñ ¢^d\Š\cÁ\m*ij!Äu)@!؂Ǚçszö¨Ä{p=Ë Îë¶+ì´*‘ ¬Gý çöþ' \ÖØ,˜É#H~¢XQø~¦Ô~Ù z»„<„…»›²[b¸Þ“…™™ÄÀÛ˜ìAÍL€§ž£±–>ˆw½‹s$L\ÂÖ€¡‘ժƺ 5ÀgX®1ÓDºÉð*Eä6gö-G|y4ƒF×<Þ-Âv§À-‡!,t|È7E­Õð‚p³Î !ᤘp|SÅ Fþ®8ÜØkA½ŠQyjjTÙµl%ÇçXŠht£ƒe¨m!¸ ^†Ž‡|sËÿûÛ´MÖæDZ~}f÷óévµ—>UyἫuR)àäÜð5h³^%ÀÏ–‡“]iÛ2’tÅñûÍáû”úë?!àµãÙÄúÔjÑ>‡níNÇZçFY뉄¤Íí>”M m'¿Gl¹b]YM ûIðÝ·ëz¡ëNí&i£6&8 S1Cø_5…¸Ý}ª^½õ>~°óÁdƒFÎ^ü¥{»Šážî.ó‘8˜+pÔÏ|p>ÄovÝÿàïöóf'>ÉpLG¥Åñe©–cL9˜"qÎ%¬kt­ÖÖÃlEÀ%ªýÝè, ¾{ìQ¦ö¸VxØ•´ WœéóUûPÃNð¨$';üåmglÍŸ?¹]xþbéÏЋŸ9+SE7(;¿±_V_g)UÜØSRž¿Ö<ÒƒMÀRÀW.Òª¯O Ó€ex–E!ûm|²–iÐ4ÇÖc`*”‹ñ§¡þƒ ŽWajh—>Ÿìó¨uKƒäÿÞwUK¯gEøfGÕé{ Ç#s `qv#è…û¦í4ѵ0Õ˜„`¸ÁEîä¬Ù± þ–…Zg2ɘ< 3åH¬\µ)¬7Š©3Ôc¥‡H´é~„ˆ.™Š,8÷)õ°K N7ÃÒo(¯Pð'ˆ:ÀÂ’éìý¢`ú: Ð,ëE±Òw4Uâê!„ÃwØçüû¨+›—‚2ãì–:úö=rÌÎ>%Ùpáu…ÌŒPiù\~ï3Làlttª 8>"Q#ôÐð"WD´í ®ž÷~,‘ŸKöNÐ%ß_ñú¾RÒ»êò}+õ4BwÚ ƒe¼36ÀÞbð"³@å8n…Ý5£™ýèi¬ kÕî1ûÓr¹ÈPì6C{n]ÆÖùæVÆçËÛ>^gºÛÚ*÷©|:¨…¹B³šÜѽ³˜øÌ¦Û¾^Å;Q£®—“¿ÿɲˆoe4ª¿ûü6ëG×ÄõŸ`?…ã+Ñ­™t¾—¶^ࢵ³¬©×P3øîz¶¼~÷ã÷Û´%5zsJ}ñrÖôÒrÛ¯óuÔ7óÀ…W_•# Ó…Õ°  ÿÆÊSoÖ}’2ÐÁBÀYÐþêÒCŸ7Û´+ø‘ ‰tƒëgö”¹ 7s¸Ö °Sà±jDE ôe"-à3õO=]×…Žß5ô7Íš,¯ÒLJ©Jl­È‡Ý'ùqOðT¶¥o{iÀšÑ¬§JpHNÞáƒ3bÆ]×ë2ò×üV*¶‚ÙÃh OáËLD“%a.tÆÂùà_̼ey:I“ÒãeÀ¶1æ¥Qà«8Y¸µòl+ƒuxlýúÓýo1Xl0•_â½…„`÷Σ _ûJ^w‘Ô#Õë|·¦GU›Þç·n4]·yð‰7Æïn½1µooÍøÎ+”?…ï³Ä][]ëÇiÍ£ÖüÝŒÒÕíߟ Ú-=ÀƵÍuÞ‰PùÃÊ¥)]©—üëû/vß“§¨mÀòIó)|´h]Ѐ‡ú#ÏÃÀo;}ü`GsKe‘Qk/繡÷;ß·3êF±sF5sg Ì)Ù륿o¼¼ï¯õynŠ{u¬\¢§Cí ¦Û ðÑ3ÂÖFº\Áj^#ë±L„uaeÔ0¤Ï¿Ö± ]!½ËŽI7a"¸Ú·Ä.N3¶Á™˜V›vÀéUð¯fñ£7³'¤1Q§ZKè§Þ^µ^“d´Wp4Ìi>;ÆZ¡ŽÅñÕ-,ÅϼC§;°É\Ã%]7/Þf%€ oúƒê÷Vl$øºk³H ô÷HìK± endstream endobj 68 1 obj 20489 endobj 83 1 obj << /Filter [ /FlateDecode ] /Length 87 1 R >> stream H‰¬W]‹Ç}옃’ëîªîêîäIZç!A&ÁÁD"!ÖŽ£€Ö Hÿûœúš¹»÷Z~1Bº£3=ÕÕ§¾NÏQN³Ë6ûX'é¥m¿X_2Îrb"[#kk}»½yâx³;¾–ÔíåŽÏ¶o\%Œ¬Ea¤^ÖSisÆÊ6)-×SåIá›J ­,×j5ÀÑðh`Ã|û×MÙ¾2C}žŠH ×E¶÷ SZšøwslö8Lç­68¬c»×—Ù²¥Ò)—¶BG)µm×¶7çj:7pŒj§Ä>ãð8õé»–~œéI©C£‡/T30À…fœZ~oAvWÊhr‘ÌæyàE·êüìL#¯Ái¶f¤Ú qæB)5ÎÆMú þr§_8¢+ÉX¼êZ6ÊS<âñAH; ¢|Ý{ š¯>®º<{¥#ñ[,'žœø…™—º‹¾™ÈQs 5Yi0 9¾–%¼àˆ}Ä¡J­#ÀÚº¯sÖ @á vžxV #ŒNîAO]Ý©VPÖnažzhû÷]‰wL+ÎÁ&Ü>û¾Œ°ÛJã´Ðew‹ç/x «N´ú¶3‚ÍôÇà@<Î| k&Æîƒäê¤yàc‘A YíœVÁÁ=JÀ§;;£zS69@*ì  t¢å±x­évg™Æ å õ§«<è"'¼ ´2#bK&ñ` ü¤šì­`V–ò\³ 7ʨ}QÒ$ši‘‡cÕ´á†ÛpqÐ,Ò³q}Hs˜`gS¼í(kghÀ‡H9€Rƒ ræ.öï[Ô¼ž¡ £•ÒÙGlÝ×üš;¡ûF a&ZÜ(½GP¹y@kËHgïB"”%i9‘øÄì'ô×\ÌQ½x’á£ê|û‡Q^(I'£yW{¿ãBÝqôè–Œ.§íY'8?ð6f̈~dÞòÿ7ßÞ<9¨[Õ!Ì|Æ;.ÉIJƠ`‹¡ˆåçkÜÈ#`ñ¬4"-ãì’„=Úÿ6J´Ãðš6BÙ1Ó³¾'+¾XÕ§˜µ1@h i­6fK1aøŠ¥1µ1¶DævuûݱîÉloÀBOǺ~_´Æ>ºO‡cq€ÍFº­¤–¾g—PÀ%—zÉ*¤ú*@O^W¯gß?ô,û¡c`2뛊/jö;à5¹$*'²ÉN¾VªKA€2êJ­Â>³¸…t˻ॠI(aœ 稜h¬ìuÀÑXoË ëU[$°J©ÖFÙùеu„ $¹"t¥^ /\¸;˜ë2B)¡e΃9Ë*·M Ê,ÁÁí³Þañä°lä:8ƒ%èìÅIÝ#’:®ÚcCÈì,à˜ñÅ ÑÍx”šê ~‹³®¡´«v,ž6ÂõHYEåd“ÖÊptD)Vkì>;.]MŠ•ßÒ/0•’ 8ˤÄa`Ð ¹–Ã4¹4 a ñv»ÈüAQ¬å‘ÌdÛ¾ôàöðmÔÎÉÙÞY;ÅŠ«QŸÃ‚Çè}ņe–`-´ºhÏÞ›’ZÙ4¦ƒÈ„Ôåì*íªw±˜(n$žÞêðJ.…µ]=Ež¯•”ñh¸eåje/àË3 s‹þdã'Á’MçÐüMÓÅ#Åï—‰ã2m’a:ŒHéFÜ&.}Û½&´'Y‡£¥×`Šg&c7B€A+Ññc [6¾¹Ë7Åk‹ÎÅ4ó{¹avÖVÑ‹K葉‹hº‚"©!iÖê»!Àm&>ýb¨àtÝ!ûåF ‡”\R2ê—î®ðÙ³v®èȱ2VK}¦ë£…±OáGÌÍìJ—–÷Htȹ±2ÉÞÝ [hFV@ ¤RÇúÖ)çaüÈÌ~(Ñò ѱhì 5Ñ8´÷}•’¦ytÀƒëÄ/ìì6^$ÞœKm†|ÍXC}âÛ^¢ öâàÞIöÝfâ•PÐ|Ö¿æ*²]õàö¸§˜¨÷74Ç=Ŧ”çïA¯^5Pí=.+®¡um±WÜ¥eÛóÛ›µ=}¶½úûÍ“_<ÿÓ|óÇûï^|øôßÿõíÇ߸¿ybè‹ïxwÿúíýýÛ÷ß·µg*5Ÿß<ùtóé¦<~P nÅþ¼úIÿ÷g<ýØÿ¶¶}½ýãŸeûÒýÕ7v"D—†ëî' É[Îá—aÆD×òyùÈÊÏágfîákÙþ×0Ñ/ðS¡áÑN ÚÙ„Èâ¥? 1„A¶¿z{݉H(¤Q±N‰§Öë~ýB&tKMÑæR¬¥¸6p–¸<éx[¹Rö›„ß´îÙ¡ç"ê¨@“%³ãi‰§ª5kkKxªHÊ% -š$žLí:XºÕ°ÃuñÅÙ,m¾xóåó¿zw÷ñÝ÷o?ü´ýÉñæ)*³ážÉ϶/ÿöñûû¶§/^<¿»ûôþ›?¾ÕµÏ¶ßêÊ?è?J8.OJx­<”i½wâŒãµ­ï $ZþœNM.×ã.»žÕOêXš²¥ã6õ:£sÀ«æRêÖLô)DÞeo?—z W:Ç´€‚ZœWOq÷ër«Ý?ÖŵëÏðDC4ÃÇ,;·—)³wøËüº–ˆ?›´ë<í• ¥˜Xh—WN#~ÒHè€r ,”Z+óg3üW#ñ¬'ªbYÚ:4Ÿ÷³S³¿5©ÓÛ¦¥Ô²[g4ï¡ÀhB$ˆ›ŠÃnÔìÕµ‹^Ÿ¸°ƒ« |~ëÒác]´ZÝ€¶q|™û ÐJ÷×ÔŠÏ1™ºeðÐ<è&=uŒV×£zÉX²=èC•ü~í›¶9ý†2w©ŽÃɪy¤ð>Ïq—´È*6î>¶=ì£í˜`ðV·°_=ïÌþ1ˆRªãµúÇífѸUpø™ là# ±ŽÚÜs¬Ä‹•YÏ[qÊ ´© eƼoT÷Åš«yŠd½.J ׿q†¥}8¨±xá¢fA`eÔ¬Ôî—ö§ Ó}šôWÞȯúç"Ød»–ÖQŽV`ÝÖR×ìYê2„¨Xê€FÞuR‹³)ÂŒ.Ú=Ikør™¹^ôWÓüzA\qÝá®Ëà…+R¬-.Á4¡›/Ð!È® už. P,|šJTR™Ö¾5jÂ&÷À7SÈ`a‰ÏKj‚TÖ •°Z’ªíA´Á¼>Þ4œÒâàÄPŠ1×nêÒ{·× ù÷YI³çœ½?h‹Áø,ÏÖHii z8tÁÚ¼\ž /Ô×ÞÜÕ-ÞÍy9dˆd65 ØË^ÜÂ/J½\ù³&•–AD2/`Û×&f7 {*>KuÀ1´Äªb\™ìyÛíís!É#b}Ô>ʼ2]0yßR¥±†"¬è²)9š$O¾o¸ Aö²Ûzö©PîuÀË-¿ü­m 2Id‘·ú€†*¼žŠb‹òĵTTCQ"Ç$wÍ{{ v»ÏdNG•ÅŠM½àÛìq.<;~jÉ_‹iç–=o®zŽrñ`,•ÖS„#ßÚ®”]2 ¡óê„h“‹•"_—ð£\éâž Žkå{ £„`aä•46á81_¾?<òË7,*›l• SD2„?#;W«/›¥óY´äNè´5‘Ì„¤”roĤ ¡ãÈOí¥‰QÔB²í¸n@À;·}¼° ™Ç/9[¾JL[rV5-™?[¹5<ûïåV­]I@'p ”KÉIÜÅ`ƒñê L%˜îÒ @^Ü”S^þ³7/SÞáË]ð£$Ê\“»¦b®ÁÕ§ÿ/}ù)Uùq.ÚpÎíõ‚N!DéSl`ýMÐCµõ…6,Þª¸z‰Â‰á+ùæ³4—8 ?S§œB—Ú²›eî £Ÿ /®ïµÜÒAt4¡¤Í—›^G±[€“Éæ3J¾„b/õ#q£T™W›¬ϤdtèœIJž1ÁETƒ vR°—«+yÝ{ƒýÇÚãøQ߆*%zê ƒ+z!ù¤•Þ·ÒɃ]-q)86=uüìžúûáÅ¡-Ÿ,/8î-M­áM|fÖÓëEè¶ÒÇÌ0È… Ô(L‡œŽíó(Z '}rv2bŠ(“/ ¦IÀä½_-d‘5ÀAòMÞó.ÁªšÿÒv£$xtÁ®Ã”ôÇ.’pc/àím__7FzBìë ãÍW5ƒá¤³Ì·j9 ¥«O€¡´8ehX¥'K†ÈR+™Ë9Œ“e2@H SQuò5?²~‚õÝj_Š@!c¬(í/"3vÖÍ0‡ˆˆ˜ŠH €¾xc+&‚‡4,@x®c*ø`7ºj†EÊëòg×µ£:Íê"Ô&‹Q×C·¦I'Ü­Z;JúÎvN;v·t¥úJ†­ø¼¦ Н1h(®(`õ%mAî£YH©7›m;Â…$`óÁoÀ_-@¬©e}³ÃФºìF`¥ÀJMŠ Q×:ê|±f¸l x”ë )D šÓöØl™jË‚­ÅÏGst|¯ö}¨U}(¾Ôe×1+Ö>k‰ ŠFõ‚Ä©ÓB‡õr¹=«‚ y5™-ݼâAö€>wUËf«óV«sˆŸ¶ZQË®%IßKVùn^EK­dî7guÎx–¶Wüd8‘°WYêæ ` Õ+¨Ë @ sšq©-à%™…(s ‹fA'™7ÃëÆBQlƒ³«ýƒÏ Üu—ác‘ì⋤XºBƒ:t½1p_¬¶R1^JQ<ÈìuŸ¢‰ LÁÔWG+FÒÑ,䪆±+Úxåã¾/4ÀC‹j¢'¹cQûø !Ov, ÀAú6BÕ ù,X_1’ÊØW'5À;^\Í»íá Ìh~Q]-í8à¬SÏÍbS#a€V¼<­P=kÒ*À1[H#³&Á¥^Á¼‚xŸºZˆÎÕɲnN}ÉÞG%Q<Ç˶Yh=×6#k9´Ø²½<kJe²Ü¼>}­Ùžs ¯´»Õ7ÚzÃuM@à"x‘Aˆ‘èºe@äsPLK ” )Øh4+§ xŠBhu(€±ÈȨá+烚¼ ©…€‹ÛtÛÉ`ïrV‡‹” 7.<“ðõ6´4¶ž8wøXq G x’ge°”:±‘‚±Æ-EÍxèŠV’’b‰Ùücå!6 ÅbîÐ\é ë…^¤)[mf:.{±Ý¬ÚúbAàïS1o]Ìk´™ºg.ªg]yÊaª†ÃÎÓpaøºÀÇY*ÆÉŽ{8¡uÌ8+ØÓ•ó/T5s.Õé|‰Nƒq™L,NÆ£l[Ëc”³Ëý8F/ å Q®€)ÈО1Þ3æ}¢(™ á³k(Œ§.e™ÎXìÍw~×…_æ1Õі̜βʸkÊf.ÊÓL«­ç™c2RË)®~ Ci|‚*Óáµ\^Tñ« Bñ³Z²Ûö"¡e,N=hžå93®E€ %˜6`lÍš(Õ`Îeeç-ŸEÿIwæžg2 ”†°ñIõ¶o\„0ø¥ëTóµìŒsňcn(W†£)×ò„Ÿ[‹o¶Å€%kÙAÏM×Ö4ä.ÀBM•b k´Ðû,––a˪Mp"‰|,sî(‹0¸#E*«J”'üdøz>·f–»Ú0™á•\S ö¬À+ Yª )+[!;€-ù9=Ç­k]kp¬Á.Á‹²EŠ‘9%Ì’•-ÒULzYÉà¬3rÔˆƒz«¿2ªx3MI† åI*Î`ö³…AwŽ’ºÖ%¼‚Áh;X[o‚˜Â cçê*v„çKÖ®´„Cß/º‰É"y¶Jk|«eÊÚœ]Û˜Èf@ÍÃd å¶¹,RÒí¡ï0»1ܬѹ,×A?§8/šZeœÕ¤‚$z‚½6³í|,ú$-¯x GgÎy’ .µS"a•oM¦ .P·52ùe7ˆñxð¸M}`Ñ=«-)Oõj07[¼|•‡ÞbšRw|¼Hóš4˜ÊBkp°Ñœžlïl;å¯|WI®\9¼JÀÐD ëÜæz[ð¶|ÿmÅ ¥¾ñ#Ö Qƒ/`^}CôÔ‚ ËÙ5RM¯ ¿9ÍbjôÆò rŸÓ~-nâ\ݪmP¤¥Ë0ªCÙ§P? /ðÒåý{ì“)Ñ¿Ã2X‹þœÏ6Èîß £Zü µ,²Ž0ajý+þ=˜Nƒ¸æÏÓÃaãÙ->pÊ¥f]E\W¾Bô5žWéŠ-d‚¾1 c£v¡Q&ñ|%øuüXYž‡¿õ"&¦‚¿ÎýTÅëòª@¿©nGp.2Ì6Æ©AÛ{fËU‚¶_èqÕ2¿òß1‘Dø)pYh{~ ÅB±£`X½wµÃî½çÎæ5S¾ÌãI“/×Ä ø}¨µæ~f*ÀµH» ã݆fwÑdžs˜2[AÍ–ðØ[þú u¯›™ÑÛ*ÛÕêOœÚÌnØÕd Eº‚i+d÷M04N4š!=*ñó-1hGäbr€,ÝK!# Ü:)ðýëøëùÀY¾ŠŸ{£ó²R³7C{‰•ÔÿùJìåˆB¥)h×S;Ã/õ&ÖÞÀÝØÞPÕÒx¸WŒ»á˜êU!Pçé-]ÚÆ-xuoDv› ¯3¡5Ò…ýv\øž3Ó€¶+S)KõVs^°-}8ÁÛË<,S¯{7¬.¾YÐEK#Þ‡YŒÛ—Ÿ-S³‹DQ¿ÿöï) ÐAV‡§õ ½ªÕk`ÚÚ÷b¬'z2åõÕ“}>D êbŒ“}ÜI/Å)…*Žú}5¹²/rj““Šq6gL©1qQZ¡GZh*àº|>ƒØáìE È;o 5i'ˆœb¹æ#æøøþÍ3WF•n®`•B“ˆŒÊYÏúý(`¿š]×Ñ +Á=vhZGgÝJxi-ûá¼ `«‘QÉd ‚i”“QÙ”9ðÚ—§ÄÖc纯ˆçÁŠjý½ïø'ŒË‹ÓëZ¡q“*¡ÛÍçV ¢,¯çq*Òx²°ñ°¤MŒ:m0Ô½Î*\§' e«‡]&g²Ö,í¿gh="=¬èv÷¸U0†±~V&•Fo94*®Y~:rà^öÖ_’¥»8èÁ&%¿% Ü;ŽÅ]ËÊñ^‡3 :¸¦ØKØ®xRlô‚Àµ+ p|!îßîVSsæÒwR)(ã2íÂóhçÑ,Ç¿áò‚;Kã RÈfk9yürßÌó²# ƒ·È5 › ÝV”R²Å÷ƒàxè2R`.Ó+÷<êãJ‹½÷îqŽ$ìÚ³ÏÊ^;­E#’+3M•ª 5ys\fñ _‘™yË'o0¬šý°¯{ÝN€’Æüx…èØŒWdÛz'ˆD'تûÁV2g=oËžŸ™¶-;xÄ(u¿ÎJüvÃÎrÏÔU®ZlëveÐRÐ(ž»¿ùÊv_K#Šísî¡?ô >dÑTÀ[f^áð*Ý@¶µêŠU¡1CHVŒç]ÎC{\|?)Ë@ZÙE©Ž‹áá 3 ðæÖ\ÉêJöãûméûËûïÿFÜ —½ëåòY⥩Õýj„~ï•àùý¾ÿN¯ÂÌõ¢Sùt,Iž™yE)-),ºÒBJ®bE÷’+ºê5·úê=wÑD£Øj{KÌPÒ§ˆ{ïvç)·uA²Söë£_Üÿ’ßWgË›4Å•‚‘óŸÄž™‰À¨Âmr oÎr˜™ é0ºWô œÖG…bÛF–­zUÕZ'íNg{ÎrÀ;¯Ù†³¶%¯V(MÓœ¨¨Q‚x4ËL`³BlV­j­×ëûà­uxf6L€—Õ¤•JM\ò_t³ Þ\ÆEk%« 8Ó…÷95õ·-ˆ¢Á‹-\Ýb 7©Ó 󎃃e]~íÕ&´n»Ñ„ÅÈ,L(gÀÖÇ0â°¤+âµWgV¥ÂÃ’hÛÞP˜îñQz?ÄݶǃøpôõSU••+pw™7Î+˯ÙðžÐWkÇ-ÜJ)±ò@×!Äç°VPÌV[ Ö¨û¨ÜYš~óp†.™»EׯgàtVé\¤pUŸó:½ñ!Áp põòÆ ¹àÛ z= y&?½&¾½ŽZ^¨1Nª5X&È3’F÷v>¤ë|Y¦qElªòÊ(@LMS3!ùšû¼R aIï”ÂËÙå8÷ŠÚO,' ˜é0ª¼[pfìy1¢<†µc‡W•ðzú»›©ŒÀƒk[§.·íµ8%sìM Ô”d ÜÀó™r k\E“„ µvë92Ž´Ä%X5Çk½÷ïu„Kp+زk¶zÀ²—¦)˜<À­žhUê£öAš®íIñŒ8Dý\Jœ‘ƒª¼ò³W?Œn‹VôìÇäΜ.-€Ë×pÛð’Þ0Ùé'.~&‡¿Ôx¨>Õ¯Ýnâù„µ‡,ò¡z™½[å_œå4§}ÿF|äÓ™è·æe$Â×À’'…;ø:Áuï¶ìý ©U‡ƒ]ãäY-kê[ÔXíÞÃÖÚâ–‰}%¯1@aö{MòMCÌh˜-4h–°…` Ï3ñµ¶5 åkµÎ-+2éXÛNðˆï«ó=‡Ž¬ói½T$Bfdk}T |È?OY$è8ñÊæU¸gQB»pIª·àŒ¶ò «Ùö'¨ëAÛ,WÃ÷|)صÙFÿZã$©&?6 ª2CwÕ¨d³9L39¬óèÈmý0y9}Æä~Žw¬Ù•”½kËÀQ.ìÓåRûEqN—­3â¸\&UçÖå#Æ©¶Õ¯,í>µ‘åoÚ9ŠÒ`ŸW8¢ôA_«ª;h “~‡ìn¸ñlKg ÌðrÃÉiÆ\{èëJÝ_MÞδ˜Q8­ìΠ/vªo³T¼4 äÕ˜}ä´gnæÛ‰§†W®ÿûëùpO¹Ÿ":©{–À"s_ ú¥ç÷ó¯牫»V<ÿ Ó–¡¥´ `É™ÃdBPC²Û„þ³5FÜ7w5‚_85tпauSÖœš†hS¾ß‘‚}Öû˜—mœFjÅÁ3L. l¹3ák¯1üL~Åõ¢ƒ‹º=Ÿ›˜ƒÚ¿Ùv„—#Ô<}ßx€OF/Æ42Ç[€eF2^éü*¡GÊ*ŠŽ‰}D‚a¾·»λÎ/]Õ,Ä­&\‚Ë7*KòåËÛ“çªVÓ¿11Ô—‘r-ì‹å+×AÞRÕ£ÿ'4 Wn8u(Lži ìþEá]ØTrª¤õ¤´ö1B«sè§ áåÄG¿aëÝ¡¹XË~.k¦ ¥kÿf[T—™‘²µ(¿Æ÷ï‰|ç6•uØìÀ#IÍá’û8#œ ^sºF»¦¤”Ÿ}òÕN²p´0¯”MŠŸ2ö ä~á>Gªãˆ? ZÚŧ0FòôäàËÀ/†¬çd° ¤« â0{à#×ÍñV’N ™ 6^ª;‡dv?a=gÀ—½ Om%¾ç¯êXV:³2A£ÇBÁŽ«Å^Ó5ŸŽ KrkalV?ê.­‚cÉY&À^|»»àþ¾7þÙ†ñû:ÀS!!¸Ž»*zëh]>8£•-éyxHJÛn§QïT€ Ìkq?,¸MÔ[JŠå XØíÈqª¨<!›”Xš«LnævÔ'¡í?³WwÆxlå©3;Ë<‚ü>c®K¼Ÿ}g”*åzÌAR€˜fýh(%ÂXªÏ×FQ&Ýmêcûªî½YlÇF&kݲ6Uu”öÐ6бï Xªïà`ðۼǫQàgëPSÔÖÒ>nL–S×Öéì&Tãƒ-"v‘œõh8xo;­e‚èúó6Ø»ÚÒeƒ ¥ j“Ÿ F÷ .À'XÛ•a焟Yï6Ôâ{­B f*Wí§$4w’ëZ2ŽêËÅìÎêÍ 7ès£|FòœÛx(”OrRl#VJþ¬5ŒNü-üÌ΢õÂßJÚÁžkes„ã2yÛu\_3ãA¹à"·à© Ó,ãÅX«ÚˆjMtpŒZ/IjЋ`/Í?ÏœÊeó‡fÞfCªqPœ“Ä„kœ*ÈÔ *ív°{)h`K’Ó^Ÿî†±ÆŽþˆN³ÙÉPÆ•ÉM¨Ô<¿E·8'Ü|.ù>Ÿ¾&8¸FÅøM•¿t›†L=Fx 7ÀñÜ[¤!<‹S€\émPöØ7¼T‡sʲh‚L°0KHŽÚ.æM¦híkͪˆcÎï¥õy¾Ÿ~Œ §c¸;ýâû©B,®X›kñ5‘•¢Y$Æ”I JcÌK‰Ê[«ØÁ"®)ý5â‘‹\¶#ÖN`?ž à"éÆoë"œôê8¿oä…+w³*¬ˆ“ÊäWÙ¨P *ØO·ûÈÞøb®eŠ®7k-È÷éù&ÙSé5!{¡Ï±µL;±•½¦‡JÂ[Ú®%ppÏfJN4*n\ûÌñùì¹~Ëï½ëqµUŒZß½C &|1vLùMÕo¼Ò,§U0z6õ„>”Ùű©Ç›µw$†“[ÖчAKOã°jxèsˆáÙÙ”;ܵâU[!¿P¹¶åà_Ä$KŒnò«qJô`ˆs–í2ð°zu†É“ƒ¾fÞ‚ò{Ér×®…¡©ä ᆵs†ÛÃö€ö7êüëó…öÕ_ö‡öŸÿür#sNÛîï7xϾQ-#uü\y¾~àÿ:¾{¾´8 QpS›ùï7¸Þ)ñvšøW€«yqÏyT݃fûi¹7’Í}€Ë²¹×ÑX‡Áß{wûãC;Šð¸£È¶Ñ†b‰™3SµB)Quî©-ù•x*¨é­ °am¼’qÍ€íÜ?ApF“ØÑƒÈݧtY…Üþ?œ6|ÿÎ\Ûä]ë_nQÚ[è¨?AP˜%ö°µ;ÒE×Zo2Ϩ½“!4ѳ²ÈÂ7¼zÝ”!±]õÕâk×iÚîs¦j?-—ËX #ê;]ƨ¯wl™vÒ=qð|ÏJìÄPO§7”-SlŽ_ÏŠ@6Ç9½Îð~v€â­úCKsÉ^--–.¿j0ª³¶˜ÉaÍ›ªbl ©Qlú.y€ÂäáÕu¦ZGÚ;­LEw,.-¡9¯ßë)çÊ FÐÀ{‰wUiéØˆð <›ƒ¨ámöC¼…ûf¨¿%âöÁ°9â=ËÕÀ¡ú"àØÚ´QUÍ;¦Ö¼6±äæ Ì‹ÜxI ã8bÅJßýÊ2ÙeûçÃ,V)™œ­¬ŒY+í‚…q•ÏÖh§12;\WuÜç„‚2üshˆýèTðŒ}Œ9œ|<>Àý¹¯Êܯ˜Õ ¦.£N=*XîÊ›¡×åh G¥îÙpðRü™¶Jƒsõo@>£YJ|q/š¯Ä'Ç9ѳX{ð<ŠõÕ†?/oÍÏð—ÓªýèÏÅV>Ü4õ×·?¯gZvUÀ´[ ?qÆ ¥¹B«½Þxîklƒm¬ê`µS°æä¾ Ïp.&K'FGqã*àì[3«rNWSRÇy™Mos…[e÷¢ØÐ¸Æ×ü$¸K踦[μ•4kç'à nwâŸLççtfÚ0·Ú岃.‚{ÎM¼¸ £>®Eãv“0N0݉á§áÇ{þ\iúóùÝuý÷Røzû™ø ¿úã“ÿÔá´ógõU-¡oú·ƒHsϦÕlcˆÂiV!V”ÁD,ðV=õøÜ–OlŒ0¬Xª‡ÀËMq¬ŠgÁ¯ÐKŸAÄ&¥1«}ÐÃ>·n^]ø)ÈKŒÃ `ãfà5û&ð"¦a©…:RÐ'@×\Ê0‡Ç×l{Ùç¦ûpƒm.ù`ØÀ?Á°Fwãî[åáCG œ<.Ë…Ÿc`6M Ì••bÓ–®‚¥Ñ•È$x%ø+Rߢ‚&4à˜™zàî4cãÈÑV>Žacf»#åŒ!ÀÓNKØêx2pw, R§Ë…dx¹–N4ôþ¨ê2Ãåb`«CV:VÊp°áìuZ>pÚJZñU‚A?a߉¥:k+”Í|Ùx>Míª ží5îöe‹ÂÁtaÀ#ÇõÀqOà>¬E Û±ÃpçæëçÇFÒNpe¹¶uE÷•Ñõö®u»€±ŽÛ7¸‰ÓµÞ"8A°w׋ôåØŸŸ'#FÜÜã„öœã”o…Äs¸À™¯ÀÉó Üä«Rؽ¬öjU ñ9xH_ÃçÑ?Uƒ:­*€ –)t1E|ëDìn«âÖ°9í…ž#NmÙê÷Ì’Œ 3£˜ýÒ{×F …î8©/ýìЈU;3p»[€ÏÊÉŒþ+VÂÐò’7˜’›$¾?cnP!7–Þ#–ZwÇ,èb¦qb9x¥I[;ŸKuø”ƒó° –e·ƒ‚µ‡q3±ª¹ØÏ¯¯ëõ<¥AÄsíŠU¼®(Ù8Œ)‰g‘˳CìJA_JùPj<(kÅžÿƒ!+@VI[‰RY¹#¨öë)rXR‚Ÿ8ÂÂÖ‡¿ç»56xâ/[jË}żÞg¢­È!¸p-ìì¹hxõÂ뚎sÊÝŒÛø»&OáPs$ñCŸ£¬†i`Æ*^í×È3À˜ù :RÖÜÌMï¢S‚TÉñ&ñÐö$X¿!v²°ƒ7Ÿ™Ø61pjñÎ$û*ˆB Ïv5métšT\ë² 37ÖZÚ`ÁaùêDc\ >ôòòGÖ¬FÛ\) ×µÃ€jŸÆ09†JãE¯ m6ý÷: ó÷4J½pq™âhG0$æ±úïõÌëû-¬Q}¥`inXø8Pàv}' «'HYáA÷ƒ &m†­ñžÕc/FŽ_3‰¿K—³Fn|P‰8£š!¥ 1 nöq1 Þ½@WHP^î“ô€Ú¿æÎÁt¾ßU9/7­‹ýRÙ;ÏÁ>ýäÚâ2Zž™ÐaÌe´ÚÈÔ›akú‡Ô)Ö}½±xVÒç÷ÑqÊçšU.ÛçcãÒê(‚?ï"À9 Ï¢ÇËï%¦$’Qä®#ŒÍìAä‹ñfº6Ý^eæ…D“®%2‡wŽªöüØ(÷«+2|äKLÏðsªu#‡a¥1—Ï0xµ1DV¹P¨zà²>gó)žšZ¿ã¿zxC©%¼[µ[¯ŒNtžîY•dðmÛ_êð8–õVŽN¡ZB¹ÄÑOéµ’ ƒb`í¶>±Õ˜ (ɧʉáòíJŒeYÎy³0ÉPÖ¶,Ë9‡–Þ/›FAwz¡ƒž€#%m9—ÁBO÷0¦ÎÍ@¨Íæ`-~aI“hå¢ÅOl¦¥5¿¼º«§¢E놣v~?V Üõ›Úú!ÄÞ¯jWÚE™?ïy4u—QœŸ`Ï¥\´4‚˜M+µå'憸ÄÙÖ¡Þƒk@¯ ‹ ˜îQpÆ%†øÈAÇæ\íÄ>€-’Žâ·ªDP½{)½ÕœØw%^qä½QTèÄëîË0™98:ÍñtnahL‡z/š…ì^SàRm\-Hvü+gbB0d57Wy v¡{½øKô¸ú¶BËW#·ñW¾&Õ¸[ÞŠûÓ®N’ÊýúbåPîµðU'm­yáòXërïYirëŽ'®ÂÒA_#bkÙAßï¨NR²3†ðítÅìyH†ƒW\•'?ˇÚþ_º«¥E¯ãˆîæ?|›€µÝÕï¥%¼°ùB‚@D‚QF"±±fáØù÷9Õõè¾÷Ž1X3gêž®î®>uªùñœGÒcCË¥ò¨t:Í%% ºîÄô>àGÛI7†áb¤²:Øj“d9ÊZ®ƒ ßÝaæ€çA&~è ºLNðí…¸åñÊšº%œ“(j¾6#.)ªz6.µEÜš1Sp†Ö•¡¤`R{’{oø=Ï7R‡”‚6à‰æ-ÅQ3LrØÀ'ÿÞyoIÀ<8K“bPz*Ó¶b¶'°Àôk %‘¥<íaksmN•ŽŸ›¢w95÷Œko¨v³æéœKS«´|‘Ô žÍ ³‰…­,’u]R°µõ½Î, —P¯±öp«M2Uuz1ˆ»¶Ìì%ê¾¶r?žÁ“NöáQ ë“Ò.Çi>Tu·ì±ªÚGcêZŒN•!¹p;8•Ó$žã¿>¹˜kfŠ{—1 â:Æ…8¦`àb8¦¶1`ÂÚ˜Åt°äwŠ`žu;‡Ó¡½]ÇiÊÍ-ÊËsáû‘‚jqŠí=W&6žT­œ©ˆwÀÒ’åj'0A3RÚ@eH0MƒGÕ#J2Ÿ®õ“7çˆ}ºnóaåWÊ>”@ýõbœ3žmæjI#áN›‚–;:MhR¯Üu²‹nl·FHñE‡ç„qw¸´ VLM(r÷“VÃpäÅ‹v\=+hi°ú{6M¡¾.¶¶xÚ+ÊH†Îã\vÌ™ýp³ûŠ(>ð\p¥¤ÍЭêœÌËÐi1*ó²ÉVL|÷+:¶xµ(ZT/ÄÏ×r·w„»%Y™ÇÖáïh¯™Wk%§NWƒI¹ûݽ¾|Á±fý Qîtô–º=Ç…”EË-^@<=îVuŠInžv5SÏÆ\Š=°ÙÄTh` e+ÐÅ`…´ÅR¬}«:c³dç&œ ”C‰Þ¯x£j› 6ÆwÒúuo$ŽåXãc×â4š‚¥[p'A2hÈ“*Ý &<"Í ã.K‘€#­J×ñ)[TEÄ߃<ÿ$Ò¿Ô)~Ì éH p´&´£/sJè”"á†*G‹KÉѶ ¯Ø(é¥ï'~<ÅA+2udƒä P6ŧïÔjÃhqí§ºÁO5mχÄ4íˬJéâÏÙ²Xc½< ÄB;¶”(n);n'Ažš½vc®Þ‰´Aœ—k8êÓ!84-ÜO³nâŠ3­ÏbÈâòÁó=Kå˜Iòn'XKݦR\vÕÚ ½ŸF®7uR=÷áV}#w臑µZñ›p£ïë´Š”’Šd0oÄÚ«QÓWP'X€tÅJYЏ/–‡Ê;¡é«Ø£U_‰†Úõê³M ØX±—…ãHŽhõ;ZÙ6Qƒn"¥Õ¿Âë<ö"vxÑÌ"^x$:½„€îÚëV˜ &»j3€º`0™š'àÌÉ¡ÕìÜmtáí±o¼±·K¨Qº !¬ÙòÁúœHYs´ó êȶúÃ÷þ0"¬¥|ߦ·¡´1'`G µWÞ ìu—ïE Œá ªD¸¦3¨Ó‹Ñ:ƒáh°sš`¬ÁÏhlÍ.O:rÚö ÓÚ2ŒeíW¾11íÑñžƒ‰K^@¼þzhAô¾2]˜3 ~4_\³å@e\sˆ1¦mg/0è­Íàf¥©Éávn×]€ÕwÑQW¹l9Ü o5¶½F&æ››å$`%‹;¯µGÄö\ïjÜSƒæ‡2)w.QÁV¢bxéÛ‹z²ï!l:,5<~{Q<*²p“÷„¦Çí© HݤZfP°·îíœá)Kîg\Û´âíuýØgg°uÃ)h8—=¤Ü¯ ª+«žƒë7ƒ(ˆ~ûœ¬ä~YL{Åì±äõý0¡#Ðe­Ù™ä®(`«u#Pb4E¶Y~6£ÈܼŸç©h™õž»€ÔÒ–™ƒâ÷+Ž~kumÉH—åJ9¤,vp¶Ý­l§ÿ;œM–ÁÃ/ CF¼±u:P.`«Î@LÅp ǺYYõ×êØŽŸÎò(Ѝ»—)éƒG|ëcáÕ˜§–[™õ(³áªàIšMA‡ªÛå éy*P;Ÿ3¤K\¬"ꊫ.0Bd͆†˜Œ" ÝLQ‹´S•ÿQu Ô£Ñ6=3]ëÉ› ù~£­Öôñ`µZ¼[é„wNÁZÛ:°Ãb”èB0µwì`‡@£øå¬þ œú¹ë û{ÕfBlçbØüÅ >~:(f…ìk`±/Òyv·T/¦'Ëi(…zdTГÅÚKwwHx&-Øn3 ¥­u>¨Íè!°Ô-3sÇÀ{vã4‚²ÖèÛ]‘ëõï®Wqß›ùqHHïnOÕ?Ì-]˜iô-7uÈ ;±ÚôÌÎÂvgö`ìfòWfŽeñöÞõ|B‹›õõ Ë­f¥9Ù%Ÿ& ›A"Z<Íù³6¨OÒ0{vAó45ŒI= %7ÃBÑ@âËxkßGÈ»àb ¨‡a`¦éhÖf ;ñ¡±sR»¬ç¼tŸ x2íËé`(5ñý‡ïiÕã±éÞˆíç)=¿—Ÿ#òŒsôãÌXÆõ ñ›¼cÎ,›qx!þ¾˜æÍKâ¬XΔÙc_D N.ùŒçù&ÏÑŽ¦âCÒuMϦâ5½È©HšM5ËɸRçbfŒ"V(ž‚f†Bâ® ¢B\Êì’N­Žm ©[‰ôTÇé JûYëzM3ÝUƒ¹EÝýpcÔ—9h4%©Ôg0,›ô÷ –é½*»«U“…m±³ùqfõøßÈ/¾ä¤ ˜Õ~1ØkY%¥sç6¼$eD,%Ñî­ØÙí5i¯°ÛˆÈ` iÏ÷Xéz<‹A™Ù’[É®~äd ëÅσt†‘Mÿ›˜­™C×Õ0ý” Áé·.2aäíîýa ²›[»Ð7¨òö¢mâ ë·.ôå¬ÀÙ§¹Üâ]îöÚÀU:ðžâ†ß¯x £oø‘g®ðþqܾyuûð·Ç‡ÃúöûþãwÏŸÞüúûþý׿ýöù×çLJ‰¾ùü¯Ÿžø7?~ùüéÖ^=>„Û·¿?†[¼…ù߇ÿ1ø~úØ×[¾ýùö÷„Û'Ä|x7³ëYê¥cÞÄO5ë. u4¦š~?áÄN}XÛX<„o<ÏXÿ/H þ£,#O$ç…‚0¥ÕÛSXJ¶ž‹ùá#ïçÿÿómbÛÛŒØ&¾+hq_ù QRe$%/{+ZöÓгTkzÃÔôžP’¸¾ÿÎ`|:R¤¹!²W-$Š4".1½5ˆØMpJ‹@³—ŒP’C2¥¼‚/;øåñáŸøp f¿ÉŒ ëü[c„¿óüˆÿ2Þ ÓaÉâ°ñ#ÈÐuùBÌZóüeæØñO ÿ‰J§täή^ëÿy¯¶U=úy‡}SH 8£ÑÌhÔ^%îU)jä*C‹!vÀ¸…¼}—NóýûäÄ䳘_ŸKÒDðáÎêæôäv†iíâ9ÎjaÈú)ù±»‰{ÍÎiëxød¨` •„F§u¶Ñ+¹ˆ±ø©,À³Ós ŸÏ颩—iYbî Tlî,ǶícxŠŸ„Ÿ¹»cÔræ[Õ@£{ž`†•% Ø8‰c ôhîîØ Jˆt”ScåM»W$°½0â÷HéR…ÀQOò䨓0sÎÏ#^F¶7Åò7*Š-Và{ ''U÷ªðUðšIFà.^’ì2ܽÓílስñ®àÃNæÈMöÊ߆œ:Ý Ê’èÛ!n9:ñZõÀꬣ©L€H;ì˜iÁ:|InFØòBúÉ»jT“x`²=J‘´,¨ Ø’UV k-–º'RÞÍnj²“)~ö2  Jê5&ÓW³1¿ÅåËs¾1K‡ÀâÜ.ƒÑJm„\Œ`° ~ i×=çö€n×wݺzj.  .,iB¡²çEÆ“6=]E!´¶†—Ü9彉»1”¤’+°À×Á0s³º…C¡÷òÓ Y¬™~xûþ?w_~ûí7oÞü÷Ý¿~úøÚÞ~u÷g{ùWûÀŒ¤‘2 ŒÞæ¨uJ mò–Èx*a‘ö»¿ñÜoïá$˜ûq0ÏàKƒðÞ:ߨÿ1˜öûoHýͤ³»Gƒ1$š3 ã“ø‚ÿñ†¸XtÕûXy¿Ì¼wÿùè|_0QJ2Ün³w…ç2'—µnCAc $ûP€cì| Wj7;"f>îóü~ÂÓ÷¸}z6îÂõe9àºßñjÑë-ã1ö$dPõéìùt«Vçi¨ðgl[5¥öUîç9*q¡<™€?.鋀˨ó*šï‹ú”Ò#è½#+u×zïIF-8âþ˜QìiÏôÂdÒéZL»˜O°;­LdŒŽÑ4@6¹E„„ß.ဎ1´sÏå!Ó$ Í×(¸È·mTôàÑÌ|îv­[Ç­Át¦ýªz—Æ‘å J†Â.Ö´jî¯ÁĪӌîq\âö„[ìW" œ^½ú\F†I?/"/ܽá®]k$4›ÖéL™CZjáàfÚ. 'éwæ¤1Pi$Ø»‹zKŒÇÂåµ³ßpï9Q±éæÙX~‰FÚ¯vC©[V ‰Ý£rpŸHŸ—¨¦;¶ÔPØt©Æí³st+E>[=šmÒ¾û>ÞŽm¬šý£G6pìu¿ïpqbñì;èÏ#ÀÜ ?5 ã¶)@nž#q4îÇj§ øZÜq†·ÅåBfÙüÝÇB«€µo¹,ô„vø’dÄ÷a€«¥cØI¡ù²ññ’,5h3¸çãÅ5½tð¸{2響ªÎÊHG/Ámx—LÈÀe‘Î ÎhÆ>>âTÎôO&®Ç¹¯¬‡öI’ÄØÝ¶ân, âÂYË…>Ë­·‚x›ªê—ê2à¬ó®â­·Ü×Ý“9øÜ3~aV¶ü€‡òFו!võJ-fmrC|æQ÷•ôœ£F<`ž+qmçÛ±úI²¬×*ÎŽ1o,Ä>°Iìt`z Ä$lÕÑkÂOm»_4+^`Kf¾mBœ ÎQ/m¥Œ„I»Ç,H“*`kÂûäò«QŸßzË®Žn¨g,õk8ôÒ¬œ÷ò¥§Ã¬—rl´>>Кia™å mÕc fiH¯¶ÀÕã@ã‘uð36mŠÖHÁ ÷ Œ6kÜQ«æ\iog‚ÒwqQ÷e@wÀ.Œ¢Í«Ýxæïg|7I{D£½íE1ÈÛÊ×UõðæIW79[q©< ã'˜²\Ò]_K%uËÆqCç6è2 ÅšŒõ\n:CÀÐB­êúÐv5㊯u ƒ‡e!˲lݬ¶7e@UT”ŽB€çƒ¤°¸²=°1…K,—U.Èš+£/ëñœš j#2®—Þo,'8Kù‹U<Á®r#¡/ ) ^"‹Hq¯o-…ÍÚv~WäÏÕ•]i™0è¥Î)Öܺ|Ke¾Žè§“òò¶›^®ë¶R£–ÖñøÒ:öpIc èùŠu÷]=V¦ZÛâsÐì½±÷@f?GñäÚ_avŸÇ’7®9F;Ö£i ïÚfˆDsd~®#.>ÏY5Ž6(´7'gß>iô<áî“=Ÿ…Ê/f Ç[ì·{O»ÑÒÃýÞc9Žî«”CZÔõ&*¿àÁE{²¼¸ðiâ<`Ù÷õø1%Ÿ$ïsL7ËÐSÏÊ®XҒس]‰”|Éð1ëÞQ¬;na6Ä9ǘôÜ+öÖ@-çNd( c@í¶Ä!×<õ˜ä£>æÐDÚG„6c"‡…¹ë˜»ØC^ø¯ÄxÀ樅€d-¶$$JŸÂ‚@ƒìК=¼4ÐÖÅLÃAœK+öCG"÷ˆ¯wŠúnãRÝ™W`ׯ˜ëœ˜0iGÂèár|Û/Ž8úzøó;®FXÚZ¿GA\³ÄÙF!פŸ]¢1f-'hCg 0vq¿&"qý!.óÇiµÿÏwÝÚƒ°‰žD'!‹tî¿C ˜œ+õ¶¿VB€€1XÌ–gY=Õ¼[üLËŽ'²\wíêžgvq»Ýˆâój æÝu9£Y@£Ò’Ûu÷Fp¤Úà ½ÍŽ+ÿ&ÂÏ@Å|Ï£OMÜŸs™(–æyǼm¯#YÊc°&Ïc[™³î¢SûD‚zµæj­Ÿëê!ïUR0 é5[ùä’˜õ±õx¨Jº`­B`.~÷Ò.x-ªñ)ý‡áïTw¢¹8ôtî*ŒÐãôõ˜–‚ìcl{Á\_3O2 w…F‘îE›™ÚÅú>dSk?·ÜhBF.‚CºZ'jåC8]ÇdK‹,×ÁpE¯òZ[û-.[?µ4´g›ÚI:)<8Ôz“™vža膀k¥í»÷„”åcònXv‘­½®w¶El“:EÀZÎóQôƒút3¾× äšV )63S  gϹò øÁ38ªŸ°0*·r·¼×e4èkÁ™åÓÆdƦU!`õôZŒAó»ïÿ}ö»Í½ÿÕÙ¯a}Ï:çL>gä>Y°½—„X”"O¹˜`NHZ¸[ ÷êœÄJÙŸÛ¤Þ ,¬Ò$þQ~@[tápÃÂaÕ¬Fy7j§•p­ÒÅaY´°[÷œbN}Ðo;È+ÄAœ¡ºDÛh‘m¦k\I·ô5`O¯c 5Ìö=Ø–*AƒOI4úMã:=ñ¼¿2¶¿Å€·"¹¿ú°J«œ –k'iç)b‘Æ¥(H°=Þ„mÐÎÏÖ— endstream endobj 87 1 obj 19978 endobj 91 1 obj << /Filter [ /FlateDecode ] /Length 99 1 R >> stream H‰ìWkoÛ¸ýÀÿ_ Ø@#“_j?Å}ìíî¶ ’›‹Å"P-5Qב En6÷×ßáK¤lÇmÚ¸Û½7ˆÉGÃáÌáðp$f‰”4CŠË,I™”èÙ`o_*ÌB±Ð¸J”$iP$”`fAÊy†þ=Øû0xt6>hÚçÕ´­æuÞÜ 'ƒ½GgCœðLI!Fh|Ò6U}ކ“ÉÁtº¼<ž·¹¶¡ÇÚò©þgf% “ÄMbŽ.=.R¢Ž1EdY*-H$„nÁ”qr–º|W*u!©1æ £Äåƒ%ö`Æw M™÷À!yjq–¹80béSI*œÛµ,¦÷HÓ»A††#túÛÊí£ƒWêìE]LšåÕÅQÞ¶eSÃNÊóªîãÃwu_–20røh°‡ÑÁ`o9Àˆ Œ(|Oo4ø3Ü}ì1ôýþFØœj”¦P ·XÒÏR‹üÚG„€–9Ø ÛÙqõ€ ƒ…žûþ%˜Àúã$Ø\,¼¢Èµ•½·ñÆsJ‘¤™àkÁ‘DbbQd ÎLmÀÌð[B eÒþœšQ°7D&ƒ… 3x0¿ýDÓ‰$àâî¹ðÇ3yÌŽ E¶!¡àt-Ém…6‰*ìä"_”“YY°ò¯ž»þr«ÍÛ›EÙ/Dl–‡`¸6v…2K£ìEáV( »èµÒ‹„Ij¶)l7 ÛôrW°/·,ᄊLïH|)ì©Ë˜’–Šª¬o¬RØè\õÝÐÇàV.à$¡KÔs+¤}Ü‹Áƒ.†.àÈ8J9¸]çÁ¬ ‰¥®s™¦)\8ãÄ‘I%ãú¢DÚ‘©•ÎÊ2VÔ“ð,aBؘI˜ёœàmÎÜØ6äy]å ãѨ£c*ˆ×òè˜å öžÆ$Ó¦›&™V‘ËU\@+#©—"¡”¥AeÌ!"0ÀŽÈ”§¼o¬‹Ó*\ä6] “NýZvnŒsÒÁƒ.†.àØ8¤¹]ãÁpéºÝ¢A”pâÂ!î–Ï43´J"5ß’’PžÌ6´Æ£pþ^®âÜÕaTXB¨$žR¸K#°£”ºŒõaGxç1úífvlœ$Êu‘‘G}fÉlezºéC¬‘qH(r»–ý¶žá`'=ˆ]–ŒfÌ4uFŒ©ÝÜœy®¯Ó’Ä;õK¡Ëe¾ìp×fb RK%)´ºÚ£-àz æ]·A3Úg‰.QËoбŠÀŽw•š×¤ØXúw åWNqn±” ÿž¤²‡O¤V{ ¢è–†Ôtˆ"Xllk74‡=XÒ Ï„HAŒ*´‘÷gºR¶¼ipž½™×GP -Äþ¾ÃÍHüd°÷f¿Í–ðÿðýÇrÚÂÛÉA1_ºw“×yŸ— :lв}î!²OŸå³YuÞä‹‹jêLßÎç³1hÑ¢—³¼Eã-¦#‘Í‚õˆÃOùlÛkJ½iìÜúÚ<‚~¹shT­õ…Žç˺ؚ€±OÖ›žLÍr+ëËÛNfË™wÁªÞdî jò«+0Ï‹2˜Y_ëÆÿÊëb¡—üê3.%úµÌ?h+Çý-¶oæM{NÚ¼Ùæñdù>oç—•õ5…÷Û¦­¦³² Äî°ÖÕ–>‡Íüz£•õÕÙ>»È›é<,Üf/—¦ÈÂúŠíª ®.¶{;™6óÙ •udg}m°ù›²¸ñÖn³nг©Êÿ”cW_Ÿ³>†(´Þÿ–*oõ½Â×ËY¹lö‹rV]Á<‰Ûý ý½¿Y¯­½Š×Aãwu_–b°yt›f¾€ëó(áö«ß'€Ð±Ày™0½†û³iãíÞ=Ú°GVB•6Th²ld®ú¥N±Ú&»y‹4æîvÛP“ zQ…m2;HÀëF??Õ­¯n^”m舽±á3fwÑîÙðª¢!‰änb2¶B>›ö”£«öpÿÜß¾€/¡Ø&qßÑItѽ)¯ývD„~Íß8PHm1ø÷ âáPÅ» Óks¤Ê+¬Z{—_‡ Í!Tv¸±É(hô¡›% µoQNÀˆ-hŠh´3IÊpú}•g“ŒëdýAãG]=á1òÜV ÜÁ%uÚã²ùú5¹-"œ­F”†€l¥›¨È.Cñgáj(âoeÙ©UFöýÃç¾&ÞâTÆEã·:” ÙuÑ„c•$*z1%D:}ðš%¬¾ÃÖ¥ëÕÝ)Ï÷Ý©·5;¦ ¢ÖemÇÊèžE÷*"ƒD÷Ø šKÔ¾¯¥Úš‡iòÖ–ŠFQ§Ýóp«\‘%b5ƒ{ÙÛâÛεuˆB¤ñ:ˆ°1:5½C¬÷]g·¼¬™tº—A›üAcÉÍ'ÅæK¿•ÞmÓ‡·W;?4S1®?zÖ]ÎMWR‡ßöC0F #eø¦æiÛô\O<_օ˘iõìú»ëô¹Iÿå,oíì0µ°³Bã˘ï`v2·ðS»ÌR:{ødæóEyÍ.Éì38[NÚh{ã_êùum~¡':öz^ …ŒÃãƒi[}*»çãgóË…^³—ÕL·™OlSÕÈšXxdÏCgóxó0hž§~fØ$¿ª¦½1ÍüÏrû j~Ìg¬ý<¯ y77& ûÄ%£{®]uË~z ‘î×þõ3Ü}ì–ë5úýŒŠ<ƒ±Úî´ÐÓ”ÐS4ØCÃh†‘Žà)21 §ðp¬{ðé=›×ŲjoËlû`ôgè\¡A$z°k®Nó» -WHèü ” Ô?¾»*_|*ëâ¸ší©º©(lGQæÅÕÈ5!Ûaÿy’W (l»Àªô%>\õ3~[µ³Mugß«ºECmw–›w måá6¯f1 "6>.AÚ‡WÓüNu0™• ŠwZK3$,æ—®Z´ZÁÃÖe1/þ*§K=¹}h\lVD(ÿqÔä+gû?¡o/>¼³â»/í¼§J¸ÉMì;#\ê ¼ Á%řҒʕËß)Êÿ(úÒºù‘s¸«ÖŠ­}ÐÚ­}ÐڭݱÖÒL>hí´ö§¨¼~=ó?#¯w–ÊÉ{c4¹ÐÕ5|W×°© tÞäEUÖ-#äjÙ“s=t2ùõö{ÍÛs8(æïKtPè iæ×e^\ QÃþó$¯ mG³åyUƒUéEn¸êgü¶jg›$@ ñ+X¹¡¶;Ëõ“‡Û¼šý—ýjímÛÈ¢eR ¹[Óóàs- Ú‰k´ˆ9Ýd“Í#q,²¡I¤œµ?ô·ïÌðaJ¤Ë%êaAs^œ{çÞsÎ-u~š>£üžâ!Ý™ô^–NÌèä@':i1´9þ—Ã[B´öàí:–/¡»] ŽÁ•Gà¸AŸƒ4«‰VŠ7T/ÞP½xCð Þ€aÀö É¨·§>H¹‘r PA*’ "o ÒDc˜*™i6 ÉÝÖr¤Å¤Ý.¹· ´;H«YX ¬ª©–løE*ÄÒEƒµéßÚu0òöÚðd µ½‡…;‡³i=Õ'#—ÕB*˜_A+ç–NZQ y,+ò.'¡~^H¥Yß&îùÑ M(–Ä ¢›:o, Ë'Œt±¿‚‰%ZæšÄz#غ‰Û'{rù¤±Ë+7B¯ UV/–t—¬e¸S¤¹¤Ó}à%_PEŸ9àŒÆ.‹ÛCPëÌVˆ)O‡f9þ |=¿)„A¿% l²†Ù(ì<P*Öe! D^œø÷íÁ‘•JOÞ莪J‡÷ƒOt4_éd(”ëšHœ6`qœ‹›´›âП$¬)„½å+’龈ùÝÇn½èöœ‹· „šÁ­$©ƒÌÜ# -ÿm¯üÙÓ„Ø >¥q®\ê„ßÚÔk‚ž0ÿê +–®¥2ÔÀš¬MEg6›„™U1ô*\5ÍI›tJ=ܾg\a…QRÝòè|äÞc>üòZ(É8B7…S¬–;ïRD6a©ÕÍDÙÌ©=q:k¸ÜY·'©›IÒ™V4û:q’KA*Áå‘ls‹ð,@¨4‚殩wV.:+GçÕ£‹Î»52ŽZcœ³WÅÍ›À #ïÆX³U¬Ù&Y–/ì¸Î×KØOÀöù•§¯=¶ÄT¢${$–Ùvc$ób¨ÑÌÒÃ}·î¾Íõ\w÷ÆK ^ ÞøtÄŽ2禈ÏçÒ5|ãÍéÀ–‰Â’4úŽ(Ô úDQ8½ç"Q8½ç"Q¨jXšAjT¡e*†eYUU¨šH1MM¯Q…Õ5Õ³G–ÎÞ UØ =õ– ozê §Vʯ9ŒÛ®äÚ?‚€—Fu<$c¨@¬[¢%˜×vœ}]×R02·Œ†ZïGXhÙj*ªn*Ô-‹ˆ&á½YeölEÝ?·AŸGã üv”íÐlïAGaâî9÷s¨(n »L\¢=çl…ÞÓφ¾ŒŸXô®ºó§ë±,“®O£¸¦¬:îã„ú¾÷ÀÓ~[_U•&-(ªP~ÞQ˜VüMœŽ:Mè•\+ê¥ ÀI÷êôâÂÔÎØ0t䆯_ñ¿ô‡ÿ¹x8õ~&ñü÷¿~6Ë]^bÿå0èWí¿2€¾7û܃›z”g-á¢?ÏÿüíøüÝ£~Ï¿>>=É#û†ñ=šD^˜xC~OƒA4÷³~ë:á€¾Ø œ†QÀ¢¸aSà õÆõ!6³ËüÓÀIŸQdBîMâ)±"vJ­<ùÏ%æØå¶£Iì‚÷<Ök¥~â|Ë« Êæ?“÷ˆ  béP6ˆE˜Î§A¨p÷>‹ OÎ/öùð?@Gƒ`ÌÙΧo¿ç½Ì!|1÷ÇÓ"u€pLya¤Œ@çÌ‹Ç>½O—Àí¼Å’þE ¯M=\[‹®­È:ÙäÅ\x…Æ®^áRòwÕ:öéj´âèCI¹PnL".Aoâ8Rî_i©Xšn‰,Ç– ¡zŠÌBÿ\Ô*?1°Pó¥+窽BìÅyõ æ=¯Èd*¡0)`qœ'lÚMqèOVŒ›rs–æ¢Ë››˜%€Ëm·¦œzœoöÔsM?.Žވʵlû­ïÝe¡+ ¬?ƒd¼„%/EÕKþÄ4±C×2‚ÓÓ Ë$€\Ñ ðî ÷yÒÂo çSÏÙ;~¹? dW„“«H·¥ÊŸvúç6È¢$}«•Ö°ðŸ=‹l{U9Ø@¦AEk,×Úª\WzéMßù>@­+ÜÆü½Ú CK÷°?"wcyœ—¶+sú]xGÀ1TTcÙh€cUSTËÂ)„`c½ÀÞ»ê:tÌŸ®ÇRå^ŸG¨Šâóˆ{]17õrX/Â(?ã(Lå{.zšÐ«¼.8±½t8é^^\˜Ú†ŽÜðõ+þ÷ƒùþonN½ŸIG<»ú'å•óøü_#ò~sù¼Ÿºò?ñóö¯_„/ä›ÖHxjƒx·C ‚Œp86ÀÅÅz˜î‡Ê+“ÃðÆ±¸=‚`E9ÝuÂÒFpF‹âjHO +ÔׇöÌ.sC\'}FyˆGÔñ&ñ)¸ R0$–,5T¤òSX¬èà#}B­CX7(÷SºA*‘€ª@éK—Ô)@Ä‚„Spî>®&tàædna¤Ú¸‘ˈÝ}ÜIœxCÐcÁÎ¡íæ«6½Éª-%“ËIâ{°RìQe“Ë››˜% Gw>—Ìn2—L–9'¨‘+ª†àÄÀBjKWÎ=ÉI-Î5šš÷8 õsBȈOÄRÀâ”ûPÞMqèOVŒ›rsžËËÀËÊ÷édZ‰ÁÆÈt'PòjyƒßF®?y´Jò X—=iÄ·‰»4*eþb€ò»ÿѯUKªsæU·ß÷ísÃ(Íã¢çŽEIŽ©y4ºÓ=¢`œzŽó·O÷‡“d_žI}딢Y\r*š¥ !j!b¤É¦¨ I 7Ij…OY°XÄ ÜÄÂB“[©sTY¹`aek«–ÝÚ¯,ºMàìfµh `Î>+Ì‹M(ßw¦çŽE[Q˜.Jƒç‚Þw‰â`‡;Ø!À¶$ÀZ¥áž®Ì*¦”ÙBeÞ$ Ïð«7r}þMÚ#ÒÖ”m/ˆ­5TC+Åù¾Ø œ†QÀ¢¸ ñSÃóÑ}f—¹ÀŽ X¨ãMâ%\´ŠšoérÎä¸ íŠXêüÜjŒ„,H"Gà*Īh Ô pLLE%†¢B„³÷¦¿öHìiÛ@Òb¦W~…cpåR'üV½ðÒàüëžÚaîe®6ê¸ú‚û°3ðgzÊÀŸ¤¼‹`!}Í—¥=ᘧ)}L½eøz' û=û_2‰xPþ~€ë]…ëà_§wÑ[ω28Ê'>ŸKõŒŸƒ–«Á³•§('ært‹ü$Šj`,Kµ°ŽÑyR,DÈúk79óy{ xE(´[åm±‹½Ýã#.š-Ž8‚4Õ’ ¿H…Xºh°6ýû‘î%5‰Q{…³Ÿy?øÉ—2Ò^y·cÿi3&ÍF|Ò`z1êd1ÖãÙ“Lóu÷º~8Ý(‘Lje—&º®ß…A/â ¼`t|œõÛŒ—X=ê³$aé¡zƒÙÃu>÷ù¬8‰¨ðÊ—#9ôñA8af 7¬³·óÁõV- ¥28‰d£ Ѱ%óNæ%ÆDã Ôuƒ7zñ•ëÎ#zŸ/C¦)ÒaK !“7_¹J* ¼Ö$åS§§ŠäDÛŸ°âl¦*'*0[ÁORÌÿ½2=;„D˜¥)òÅá÷©%⨖tBæ§l_ÒÌDYz>QQ§2³“(…¸ôLr•9u˜™E©Ò‘â-BýŸýªím9Âß è?l‚;Ô*š»ÜåËåP@Š/©¯Nì³u×C@I´Å†&UŠtÎúÐßÞ™]îr)É'YA ‰ óe8¯ÏÎÌÎDïRä—$ËŠO­ µX v_³‚_–W+"Ú€Qý·‘ò-¯ºB,ô}'Pk©ÞM}·±ê0“X%T¬Y Å T~nÊ…ŒX“¨‹!ªöjÚ +a‘6F¹½¢¶X$|4IoM’5‰ß®¼ZIG¸B­|cH³¾Ž§0GoÈ.*ÃoËZM%°ž` éHaVÔÔâ%NŽ:ÅdÞú*Ó¸J_j³`²…¨ÀJåJ–ñ€6BVݾë{ãPä^ÛdÖ(ÿ‹2Y`&‰2l²ÜÕƒ^<¦;‚Å­|@²{4ÕÚ]©Ž@Ä„0®Ð6‰š†aqúZu DÔB­ ²IKø‘Sw9‡¬æûÙº¤§æ•¨]n¿Yt%V—óÌ€Š+$8e-§$iÞ¤L?¥ùÇl5—<•®vR”®‰¦•)nÖ–b<£¦ÛQ{%ÏË8¿]MÀ¦R¶éCfUø+rºIcülca  –0Úðt 'R¹‘fËi[þ¦#ç ³Ö²rÆ•_ˆä%—pγ­Š7ÊX^^UI’‘a\’Óӭʺ̖–Ë7CPžæcl[”tx‰ô]qoU¤˜ìXê¼LÉö04ÊÊÖHFñ8K&YQÍúYõ÷«¥è72ß$$U]<”ñ]:]즣å–ƒe]ÂÁÄ´£|G@ª€î³n™Î“Ý4ØüRÁ+Øûr2¨*“³ÛTt%”’ø®¨o²øvG/l~Tp1lI3.¶¤=[öÞÍ›AT~Ó£èLŠÁ—,].ã²èë¢À½„œÄ‹Y²èË],¯âÅ]:é›G.êéZ—ì•SQ¥À{<.r¤5IL.²8Jž8AéÓ[¥ójRwö Ÿ‹¹}‘¿B×ȰsH‘zJ/©q”ü^ÁšNUW–R“j2“ ^ŰI]Íâ)Ô2v;#²"¥û%¦!<hE™Þ¨8`cXTÒþê°®Ú>¯oD;üp‘ÕðñMYÔóÓü¦Àlœc@,®fDž 'šz%J¨gé½&:q:ïoQù*ή2žÏ¨aY/fd‡Z£~ÃwcêÙ]ÌB$p@ÌÏsҺ݆aÕ$¬dv1b˜7€Ÿ¥üj"=ܤºûɨ_—hí<–'Må“ú.É«“¸‚­ñÛÇš€‡S|M'xp‹ËEð…€)ïøA ‰Ëj\Äå”LЬ(¡=”8éíÄz«¦—ݘÇrD•¼‚q>ÎË,¶²Ú>le¶| ò5 Ìb¨`ÊXÌã2É'`1’EºÔš\r<„Sœóxë¸Hïê,FÜÏ®Ë$n¸Îëj^CW‚΃ÚRrBZYm QÑz›@nl±~aRå1ä§:ÎÒêœ%÷е ÊíƒÓ‹vÄ/~¸'ÓA–½.òjñ·äᙯêñ"©$ë0‘§7ÅÜûû%úߪw·×]¹(‹›4K¶°Â”5™­±S•÷äxpõêô4'ɤ˜&òë3ø}ƒ—çK¼þiùìûïÿü|‰/ß(Òsüw—Kõ²\„ï_<.ï›g(Ž÷ÿòå«™¯f¾šùjæÿÐŒêšÿþ ¶á—zøyŸŒÉù¼JïôöuG uŠ:RŒ°kLŠGù£µá…¿+ªî÷ÎΛ¤¸OÊ9NI$Ía/¿›‹´Ú´á› <¨ç°içf[|¹ÁÎËvŒ_·¾’ÔaîgñCRö(¡æ†× "Æ&¼¤žaf”Ü„öÉY.c†QódefkyŽñÔ:D|ï`ûë·.~è¸d€†àO»ð DÒ9^\s$¤ä:FÊ¥&ëSâõ)æíß~„§íáä-ùõ7—L{ð d9ŽñÂÀqý€“;›È˜Ãý $žï9…Ñ®C]|ˆB' œ·8{2;”ú¬%Ò:héwm „Ôñ}N‰Q"\î¸`µµe( f\2Dã¶QµŽ!t„Öc®ãá¸Ë=ÏqaèÃÞ š2ã¾ÃŸ/ŠÎ…‡Œ¯{uO¯‡‚Ù "‡1 b‚6FC‡»”·Ä3‹È¦0¢>øF¢->·©0œa¦þœçES˜jãiŠ%á÷­\iÂ)àÃP¾¾hžàrµ.Bð€ Á÷p84Iöf5¯þg/z?K¬¯§½ŸöÉõ{9Žo²Óó&,²mÎRò¹«$ï؃º@¦ü¨{ªRU…:Œ@æs*oÔ àæR· äÞÊMUp'‡|¨õF çû‘¡qîøÄ<,<õ\¨ l1HLa†j £Ï(a±y¾>­ª–¢ Ê*nˆX^€Å®Uq?r<ŠÖ¢¡`IjÇ Qûn4­8Qy¶CcäSï‹ÄÓz÷ÆØ€‡E}""P$ûb¢û¢þ]ŽAàêrl Qðꌫâ㮇ož…xS…iß°=€1ŠÛ'™]†èŽÏBæ2=ôLåpÓû-—šZ¾Ël6׉"ßRdÚœ”ÓD¼¨@kâ^¤–Ä4lÜj¹ŒãFÓZ|\|Æô%b£öî(µ^‚›±ÉOÂ÷D%÷ĽÝ!»)Ÿ]‚ æçFe„Ë™¬%ÊøŒˆ¡çD^$Œ s0دUãÒlÔ‡-ø-6 ÛzhiÒmOŠ54 ÃÖoô <~­9CA9íUËf<7ªÖܽ¿Lpv*ÂÐØä'‚¢ûÁƒ‚û„Þî Q· ýÕ*ŒN£¼©FA±à°MÀ°*ºWY‚à®ÇC\DŽ"ÙÏ,b;W¡Ephò„pÜŽ 6o7¼¥È! ¦‚ è°yNÈà¸Öªj)E)¨‰°ó»‚BèFÌ®ï Ë¢¦4 ª3lÆy£j-Æ'Tá—ŠÏn…¸ ùiøàHº'B(º'FªŠ÷B©;”2…‹KFEï€6™Å"væ¼# {+|—'ÈÑ}ï`t!ŸJ}¢ì¦cŒàAÀóO½ƒã£ô.Y¼8­â,8âFtê;‚Á&ÿBú‘ÑMïžý ôÉhž¸ þGKi«B¥ÒLC¿®28âÇo²‡ùìª/ªïHûü®È‚C×gRÕ/òúw<•!qÜ;¸ª ½j-3´È0 ¿ÑQŽR)«“œ=ˆGF3Iû°r¸ß*ÞQ&©yýÔ;8œ÷Éèw Óèã:,. Ð#/,¾#€SD)0(4[_4Z³Ž¦Ã”ð~ ±ŽÎ1ÒãAY¤“*-ò¸| ß!íð…ë¸ò×'ÇWU™æ·äp8L&õÝeQÅÈÜ'GÈú/ G%ˆë0 Pç‡Ø²ÕUÒX$ÔlçBÑÓrfÏ<ÑP¼‡Ó§*áAaò½ñÜwóó`çʼn : X 9š8<â°6Ë¡ñ0€îòö«¦§m ˆÞ+ñ|É¡‡¸ûé]I JUè92d"9väÚüû¾YmqUí¡ˆKÏÎÌμ}3Cëkªd/¡Cb °†j¢½ÓЙê%?¿¬´BZyUBö[Sà"¥5<¶ï± ¬W«Cï íÞîëßÿ–——­~ûY „¯Ë |cfh}{cnÈë²Ó4¹ïE‘-Ý칇øc)é0Qµ¯¥«ËmµÈfãoå2£™6"ß<ÆÒó «™ÅSIO-7WÏ2qÁñjÇy£??ï ô~¦ð 6?êÁ{§G£º–Z„* ú…&JN›á§èDŠá\YØ3,N­­iÛ¨‡FĆÙÞz§%™¡ò:oL2K½£s(µFž埱à˜%à¼T[†y©>'1o ,‚–Ö¶蜛>„;Ÿ‘ؤ¢´Óꮓ×ZÞXwëÎa—™'Aù@ÛwŽ«‡Ã”¾Ç¡º]Ö{9ÿz9_²4„¥%ís4ýÒMÔRêÝ¿»š¡×«ÄÔv&·ýç †HÑñU4¯²Ù›(ùÐA•ɼ%²1ÆÆZYy}²$JÀw?ÒzŒžíÃ2ˆáÚ§ç™û:áõûµðUp˜¦AJUò•aÄâ@7˜éŒ§†ÚKbedâ1à3€€õÑ[/ð(öWqª0„JŽ 7&<¢Ñ0FBLаm„’'(#¦i#<¨-š˜/, *ú±Z‡t“*)¬\V`òlÀ®±'AH?0î>…‘)îžÚX„#ñFpöXxØÍ=¬o ´›»)´4iñô!·’Žã©ƒuŽ“¼oPÓSØ í3ØáJ2Ø{ÿq_Äi;oüIyƒG_¸¥ŒŽÏõô¤˜]d[WÇŒ¾fswSe‹ÜaXš¯³GeEA;[á˜Ì­7eå¢õ}ùƒ$t¨;p<+oÝô<ÏÖ›*ƒÞ¢OW-LDs·‰ÜOwת®ïAŒÅjvHís™—Õùî ™ i®² >~Ï.§g-ÚlW%h{u¿ýÝî(C ¹{t¹8lf4:¹:=úðK€¯©y endstream endobj 99 1 obj 9006 endobj 103 1 obj << /Type /ExtGState /ca 0 /CA 0 /BM /Normal /AIS false >> endobj 107 1 obj << /Type /Pattern /PatternType 2 /Shading 109 1 R /Matrix [ 1 0 0 1 0 0 ] >> endobj 109 1 obj << /ShadingType 3 /ColorSpace /DeviceGray /Coords [ 298.81445 387.55469 0 298.81445 387.55469 81.88805 ] /Extend [ true true ] /Function 117 0 R >> endobj 117 0 obj << /FunctionType 3 /Domain [ 0 1 ] /Encode 118 0 R /Functions 119 0 R /Bounds 120 0 R >> endobj 118 0 obj [ 1 0 ] endobj 119 0 obj [ 121 0 R ] endobj 120 0 obj [ ] endobj 121 0 obj << /FunctionType 2 /Domain [ 0 1 ] /N 1 /C0 [ 0 ] /C1 [ 1 ] >> endobj 126 0 obj << /Type /Font /Subtype /Type1 /BaseFont /PRNWTW+Times-Italic /FirstChar 0 /LastChar 255 /Encoding /WinAnsiEncoding /FontDescriptor 127 0 R /Widths [ 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 333 420 500 500 833 778 214 333 333 500 675 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 675 675 675 500 920 611 611 667 722 611 611 722 722 333 444 667 556 833 667 722 611 722 611 500 556 722 611 833 611 556 556 389 278 389 422 500 333 500 500 444 500 444 278 500 500 278 278 444 278 722 500 500 500 500 389 389 278 500 444 667 444 444 389 400 275 400 541 250 250 250 333 500 556 889 500 500 333 1000 500 333 944 250 556 250 250 333 333 556 556 350 500 889 333 980 389 333 667 250 389 556 250 389 500 500 500 500 275 500 333 760 276 500 675 333 760 333 400 675 300 300 333 500 523 250 333 300 310 500 750 750 750 500 611 611 611 611 611 611 889 667 611 611 611 611 333 333 333 333 722 667 722 722 722 722 722 675 722 722 722 722 722 556 611 500 500 500 500 500 500 500 667 444 444 444 444 444 278 278 278 278 500 500 500 500 500 500 500 675 500 500 500 500 500 444 500 444 ] >> endobj 127 0 obj << /Type /FontDescriptor /FontName /PRNWTW+Times-Italic /FontBBox [ -169 -217 1010 883 ] /Flags 32 /CapHeight 653 /Ascent 883 /Descent -217 /StemV 76 /ItalicAngle 0 /XHeight 441 /FontFile3 208 0 R >> endobj 129 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm1 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 224 300.5 373.5 300.5 ] /Length 130 0 R /Resources << /ExtGState << /R1 29 1 R >> >> /Group 131 0 R >> stream 1 1 1 rg 0 i /RelativeColorimetric ri /R1 gs 224 300.5 m 373.5 300.5 l f endstream endobj 130 0 obj 74 endobj 131 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 132 0 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 133 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm2 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 370.98828 295.74512 379.53516 305.25488 ] /Length 134 0 R /Resources << /ExtGState << /R1 29 1 R >> >> /Group 135 0 R >> stream 1 1 1 rg 0 i /RelativeColorimetric ri /R1 gs 379.5352 300.5 m 376.6953 299.4463 373.1719 297.6484 370.9883 295.7451 c 372.708 300.5 l 370.9883 305.2549 l 373.1719 303.3516 376.6953 301.5527 379.5352 300.5 c h f endstream endobj 134 0 obj 212 endobj 135 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 137 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm3 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 217.96484 295.74512 226.51172 305.25488 ] /Length 138 0 R /Resources << /ExtGState << /R1 29 1 R >> >> /Group 139 0 R >> stream 1 1 1 rg 0 i /RelativeColorimetric ri /R1 gs 217.9648 300.5 m 220.8047 301.5537 224.3281 303.3516 226.5117 305.2549 c 224.792 300.5 l 226.5117 295.7451 l 224.3281 297.6484 220.8047 299.4463 217.9648 300.5 c h f endstream endobj 138 0 obj 212 endobj 139 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 141 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm4 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 217.96484 295.74512 379.53516 305.25488 ] /Length 142 0 R /Resources << /ExtGState << /R1 29 1 R /R3 132 0 R >> /XObject << /Fm1 129 0 R /Fm2 133 0 R /Fm3 137 0 R >> >> /Group 143 0 R >> stream q /RelativeColorimetric ri /R3 gs /Fm1 Do Q q /R3 gs /Fm2 Do Q q /R3 gs /Fm3 Do Q endstream endobj 142 0 obj 82 endobj 143 0 obj << /Type /Group /S /Transparency /I false /K true >> endobj 144 0 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 145 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm5 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 224 300 373.5 301 ] /Length 146 0 R /Resources << /ExtGState << /R1 29 1 R >> >> /Group 147 0 R >> stream 0 0 0 RG 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 224 300.5 m 373.5 300.5 l S endstream endobj 146 0 obj 96 endobj 147 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 148 0 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 149 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm6 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 370.98828 295.74512 379.53516 305.25488 ] /Length 150 0 R /Resources << /ExtGState << /R1 29 1 R >> >> /Group 151 0 R >> stream 0 0 0 rg 0 i /RelativeColorimetric ri /R1 gs 379.5352 300.5 m 376.6953 299.4463 373.1719 297.6484 370.9883 295.7451 c 372.708 300.5 l 370.9883 305.2549 l 373.1719 303.3516 376.6953 301.5527 379.5352 300.5 c h f endstream endobj 150 0 obj 212 endobj 151 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 153 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm7 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 217.96484 295.74512 226.51172 305.25488 ] /Length 154 0 R /Resources << /ExtGState << /R1 29 1 R >> >> /Group 155 0 R >> stream 0 0 0 rg 0 i /RelativeColorimetric ri /R1 gs 217.9648 300.5 m 220.8047 301.5537 224.3281 303.3516 226.5117 305.2549 c 224.792 300.5 l 226.5117 295.7451 l 224.3281 297.6484 220.8047 299.4463 217.9648 300.5 c h f endstream endobj 154 0 obj 212 endobj 155 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 157 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm8 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 217.96484 295.74512 379.53516 305.25488 ] /Length 158 0 R /Resources << /ExtGState << /R1 29 1 R /R5 148 0 R >> /XObject << /Fm5 145 0 R /Fm6 149 0 R /Fm7 153 0 R >> >> /Group 159 0 R >> stream q /RelativeColorimetric ri /R5 gs /Fm5 Do Q q /R5 gs /Fm6 Do Q q /R5 gs /Fm7 Do Q endstream endobj 158 0 obj 82 endobj 159 0 obj << /Type /Group /S /Transparency /I false /K true >> endobj 162 0 obj << /Type /Pattern /PatternType 2 /Shading 163 0 R /Matrix [ 1 0 0 1 0 0 ] >> endobj 163 0 obj << /ShadingType 3 /ColorSpace /DeviceGray /Coords [ 222 467.5 0 222 467.5 0 ] /Extend [ true true ] /Function 164 0 R >> endobj 164 0 obj << /FunctionType 3 /Domain [ 0 1 ] /Encode 165 0 R /Functions 166 0 R /Bounds 167 0 R >> endobj 165 0 obj [ 1 0 ] endobj 166 0 obj [ 168 0 R ] endobj 167 0 obj [ ] endobj 168 0 obj << /FunctionType 2 /Domain [ 0 1 ] /N 1 /C0 [ 0 ] /C1 [ 1 ] >> endobj 169 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm9 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 222 309.5 375.5 467.5 ] /Length 170 0 R /Resources << /ExtGState << /R1 29 1 R >> >> /Group 171 0 R >> stream 1 1 1 rg 0 i /RelativeColorimetric ri /R1 gs 222 467.5 m 375.5 309.5 l f endstream endobj 170 0 obj 74 endobj 171 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 172 0 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 173 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm10 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 370.33984 305.1709 379.70508 314.61523 ] /Length 174 0 R /Resources << /ExtGState << /R1 29 1 R >> >> /Group 175 0 R >> stream 1 1 1 rg 0 i /RelativeColorimetric ri /R1 gs 379.7051 305.1709 m 376.9707 306.4736 373.2266 307.748 370.3398 307.9883 c 374.9482 310.0684 l 377.1602 314.6152 l 377.3164 311.7227 378.4824 307.9424 379.7051 305.1709 c h f endstream endobj 174 0 obj 221 endobj 175 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 177 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm11 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 217.79443 462.38525 227.16064 471.82861 ] /Length 178 0 R /Resources << /ExtGState << /R1 29 1 R >> >> /Group 179 0 R >> stream 1 1 1 rg 0 i /RelativeColorimetric ri /R1 gs 217.7944 471.8286 m 220.5293 470.5259 224.2739 469.252 227.1606 469.0117 c 222.5518 466.9321 l 220.3398 462.3853 l 220.1836 465.2778 219.0181 469.0581 217.7944 471.8286 c h f endstream endobj 178 0 obj 221 endobj 179 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 181 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm12 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 217.79443 305.1709 379.70508 471.82861 ] /Length 182 0 R /Resources << /ExtGState << /R1 29 1 R /R6 172 0 R >> /XObject << /Fm9 169 0 R /Fm10 173 0 R /Fm11 177 0 R >> >> /Group 183 0 R >> stream q /RelativeColorimetric ri /R6 gs /Fm9 Do Q q /R6 gs /Fm10 Do Q q /R6 gs /Fm11 Do Q endstream endobj 182 0 obj 84 endobj 183 0 obj << /Type /Group /S /Transparency /I false /K true >> endobj 185 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm13 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 221.6416 309.15137 375.8584 467.84863 ] /Length 186 0 R /Resources << /ExtGState << /R1 29 1 R >> >> /Group 187 0 R >> stream 0 0 0 RG 0 i 1 w 4 M 0 j 0 J []0 d /RelativeColorimetric ri /R1 gs 222 467.5 m 375.5 309.5 l S endstream endobj 186 0 obj 96 endobj 187 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 188 0 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 189 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm14 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 370.33984 305.1709 379.70508 314.61523 ] /Length 190 0 R /Resources << /ExtGState << /R1 29 1 R >> >> /Group 191 0 R >> stream 0 0 0 rg 0 i /RelativeColorimetric ri /R1 gs 379.7051 305.1709 m 376.9707 306.4736 373.2266 307.748 370.3398 307.9883 c 374.9482 310.0684 l 377.1602 314.6152 l 377.3164 311.7227 378.4824 307.9424 379.7051 305.1709 c h f endstream endobj 190 0 obj 221 endobj 191 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 193 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm15 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 217.79443 462.38525 227.16064 471.82861 ] /Length 194 0 R /Resources << /ExtGState << /R1 29 1 R >> >> /Group 195 0 R >> stream 0 0 0 rg 0 i /RelativeColorimetric ri /R1 gs 217.7944 471.8286 m 220.5293 470.5259 224.2739 469.252 227.1606 469.0117 c 222.5518 466.9321 l 220.3398 462.3853 l 220.1836 465.2778 219.0181 469.0581 217.7944 471.8286 c h f endstream endobj 194 0 obj 221 endobj 195 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 197 0 obj << /Type /XObject /Subtype /Form /FormType 1 /Name /Fm16 /Matrix [ 1 0 0 1 0 0 ] /BBox [ 217.79443 305.1709 379.70508 471.82861 ] /Length 198 0 R /Resources << /ExtGState << /R1 29 1 R /R7 188 0 R >> /XObject << /Fm13 185 0 R /Fm14 189 0 R /Fm15 193 0 R >> >> /Group 199 0 R >> stream q /RelativeColorimetric ri /R7 gs /Fm13 Do Q q /R7 gs /Fm14 Do Q q /R7 gs /Fm15 Do Q endstream endobj 198 0 obj 85 endobj 199 0 obj << /Type /Group /S /Transparency /I false /K true >> endobj 201 0 obj << /Type /Group /S /Transparency /I false /K false /CS /DeviceRGB >> endobj 203 0 obj /DeviceRGB endobj 204 0 obj << /Filter /FlateDecode /Length 205 0 R /Height 100 /Width 128 /BitsPerComponent 8 /ColorSpace 203 0 R >> stream H‰ìW=kTMÞÊÚ_ Á·°q-"òZÓª(ÜBAXÓ­i„ ° q-"²E-,´X¤Ž²•Øh¡ý}öaÞ{ïœ9w>îÌÍæ)–››¹3ÏyÎçE|ýúu:Îçóñx@Ÿ ±$Å&róÑtèŸs”»ówLV —¢‘ÜR)ïFÆós=ÝržˆJ:ë´¦Ðy  œfŸ1L7„|êM*<ªÄJUº‘ ‚×pS× ô!ˆ9oÕĬ’”¸ ÞÈ£ÝjQÕ„GV –Omð.ˆ}åDrØ¿Ö|ŒªehJR“ b‹¯NiZÀk 1YÝ>L¢1ôj]ÐZD5-D&Cr¨BÌX·GÉ-ÛÒh$f I> 1¬é©\à|AðÜãŒ!ø—Ïdë ÞIyÄ‹Å"U +oHªF åù**lO÷ïßçãðÛ·oÿ.ññãG!·W¯^õûý{÷îýýû—Y&ì¡üšTØÚÂ$¬è.à üÊ÷—ÀÃÏŸ?­{ÂMý ~±$õ$…ÔºIpX™KôWÉkrÁ›7oúvvv¬{Þ¹sGÿéÃ,–Œ£VCÚïÌØ£Ð”v­ PCt1‘üžP»ÿ ñŸXm62뚀dœCÚ–\€âÓ¯€çýýýÒzxÐJÕ¿‘µY‚¬—àÖ¶tUõç»0 Tõ+U>z%ú 5 áAYé/O4†6ÆN~`À)pA·ôo§É`hK¦˜óðáÃÖôÇq&ÂòëUWônòúõë›7o¶£aŽŠ¬ô—“1­d"­„/_¾¬¯¯—\à ¿°I=“Â?þå$é2UrÌÕ–a½²$,-7Xû¦“FI õJ.À¥ŒY”)é?…g™Ôk$iÔÔhó úC=’‘\`½ÌÂ;%ýùûš„[>ú7bâŸÎªR.xôè‘õ“½øðù"áÄê Ì Aâ¿ÐôDð£DX9à¶KU«i𛸭rüö— HF²Ú £4=(óøO¥ ¸áÔëßh‚bÉþõ'ªþþóO@z1\àÏÑbèx1‰­ÁA8ÇKÜô/B»À¿þ8¬´síâéÐþ1ƒ 9žþþõŸyïƒP.8õóOÓMä€ üw^ýÃvÌõõõ_¿~©=‹[æóçx<–/Žÿ›››“Éd{{ÏôÒÓþñébHÈ$þ¡9ÄÇóññ1”þ…Ÿ 2ÿ ý7ˆþ{” ~¸ z„ƒ ð Æ³êû¬âó•|qí{“™aáà“tùè_4!ì´’üñãÇ»wï$N–ØÝÝU]X?Eí€ ÇKà¡)«|êOÑÄ¿ÎúC´NðìÙ3þ(¯ÿêAØ š_¹r…6ăÉþú7ªnhADé?¬Uëé,@ß°6­˜ª(×?vñitC–2µe6›)­666šñ«Ã‹/®_¿®âÿÏŸ?Õ5Ìh•þ¼t:xÚüUâÓ§OT®kµrƤ½½=ôÓ†ŒtYé_ˆoaŒ1Q@.«gk]PkH>â†`ðiLJo‘ž@zª ¯UT Á›vZ•ÕÆ0€ ’lR §ÒçYU¥ˆ 2˜!t½€"æœD'ªó%ô%Ÿyèip0&/@ɼAµ ‹=˹àÒ¥K/_¾T/åu,Txĸ˜&„¹ú“Þ‡š qÖÕ«W{½Þ`0 77Õ¿Ò^ ý$º}ûöÚÚÚ… Н‡þ ¨ÝØØ˜wwïÞÍfxxðàA‡Ä' BçÏŸ¿víZj:.yÿãÇß¾}Û-ñ »»»àú‰,NË.@Ûí-±¹¹™ZKG, Ÿ‹/¦&âÔŸË—/þü95_<þ¼sù‹ú935å@:çyg¬E·Ø A9àü|||¼½½=™LðjO„òËV9†d§Î/ÙðT†}csïÛæ«ÃÃÃüâÙg+deØÜÌ0£µÉ[[[(>Ïð‚Û&¡‚¡£€á¸Zº™ýÕ³CüÃõP§;}Ê ¤Ï{{ç²?]becžÁô1福Ÿ2(­¥>rQ};“ÝJCÕ,ªwCXõR-ó÷Ýxà–¤dOÍå +ÿ+Cÿ¡ endstream endobj 205 0 obj 2169 endobj 206 0 obj << /Filter /FlateDecode /Length 207 0 R >> stream H‰äWÉnÜ8üýÉÁ÷Œc'À F˳]ý°i¶ýuÓ?Ü¿zU^V«æC×®Ú-û$]d'JkvS^=¬›.á'Ò: Çn^¿fg—Eù¾úÑtX½hûuÃ^>™|Y~l÷íg }÷аò²k¾¶Í·ñëü¶í«ù`»í›Ûñë¬Ýlð±¬Ö{|½Ù­wû¤„R†iå]`ÎZmaØr]õƒºq¶ûûªk¶õƒ‘§go Éè¯[‚ÑßÕ;¼´@¾1Ã.|ÁÿŸìÓ`·¬(¯Hn¿6Ýí¦é»¶f]‹ÉV{f¤åÎ{Ïtð\8oئ˜0¥¸q>0í4׆*/¸ô÷Ò˜ © ¥ —Ò© “Aro'9é;骋1VrçŒdY†† èœ4e¤.²=Ë6gI=«‹»â´ÐJpMA7Zsᵂǧc,T”GfŸ¹1VcxY žú¾é¶¬Þ#Å’íë-"¨(‚ÚG®y[”„—›BÉÀfÂÖf¥–×>…ÍÖÞÁÁÞ¥¤ý?*¯ Á}0š?£ä¹CZ-ª#D.¤s°"CÆpg1[S>´h4 ‰â@\U¤'•ã G¾ìl–v\jÊ^’4!IU܈Q.µ§ºL’Œ‹\ki'}Aý$«2– Ï‚9WY÷œÂ~Ëùxv ÚÀ¶óìøÚ@[Ã:IûóñFÁȘðÜ)Ä@ix°·%˜,:qF`›„ÃN¨ù,Áct39HÊhY´€á´> 2:AÍê2‚u£MÓ¤luôÈ·¡(äP æxvþ_§m ÐhµýaØPg°ƒÉ >hu´£[¨=…ö3}BPÐÞ ;aúl–D“ 3A HÚhÕ‘Å},‹!¯\ ~R–,K&M³²ÙYÒ#ç†Üi†¾SPV²ùïápŠÚµ pÂFn}¤}0Ã<‚‹g°¶–‹h Hk&„º"º›÷G³4 çþ$iBF}´.aèaÂJx’%¡= 'ìL_B†PVåYÙò,é‘Çõð,ÝG+¸Üÿ.šï=hôE¶ùüph¢j£K,Jt”›òcÓõm]­9ny¹Z²Ó‹áåí®ÛT$ïu»Úˇ¬‘±¿¹«º<~ÝþÓ€c]Ô¬ü°\ ùùàÒ‚Eõy’÷ÐïÎÚ}_më®A€pÁÊë~w¿‡.&~8–wù–Høb pQÓÏ7úéX‘Ô<ßg~k®ÐŽÙbS¼¸¹øò¤b²ÌUúÈÊ÷MuÛnWL‚ÜFgGgä`Z(î®3*«ÃÑ@Ö¤á|Qœ#ç‡`>‘Ð:"Ђ» ØÉð1íp”hoy@¦#_¿Ÿì”`9ÌRC?8Ɖ$4KVQñ ,*Óƒ”H°üÿÈA‘.'Ž##J÷ aÇêÇÍEtÜþ+”O¶>Jg8¶DôÊÓÉŸÏM„¹ZûáfD[Ù?òÂH1!ÄÊÐʃ—³Y* KcÈ’&dÔFGxˆ³GÒ“$¢ƒÖÊ™¾„¾dÕ4k°{’sìÙQ¯{^nÿ¢ÇÁniZJe¯·L*©¿Yye†Þ²1ìlWüu…:¾‰ªùMT)P<ç¹=\Yg÷ÅùÀõ‘PмGŠÀ7ÙôS€®oÃ; endstream endobj 207 0 obj 1295 endobj 208 0 obj << /Filter /FlateDecode /Length 209 0 R /Length1 710 /Subtype /Type1C >> stream H‰,mHSqÆïÖÖV–æÖ6Û®„Ì·©…-HÒ“TrJÙÕÝòâæ÷Þm-µY›ÓµMKMÚœS‡¥…XNÒ é "+Ab~ ŒˆèSð¿ú߇¶ÕùðãpàyÎyáq‡³ÿœºJS«Éª% 8SÎ`z¢1>Ïde›ÆarYùöOþµ®~ž€†mç¶€B)àAêü–R„ð8áôÂs¥² W©Tž"VЏÒÄ ‡3Ñ|Õ±£Ùq%¨ŠS¥L°0Á"´DG6àh•fp–·4’”‘¤0×å¢h‰^ªãn4ªÆiœ2Ǧ‰KQ‚F1”¡0nÀ¨f”¼ŒV-$c5â9g𘪤 ÅZty$…11mj  QNÿ7ø5Ñ#±:T"Õ‰Ÿ <$ˆüâ´Þd¶çú²v‰M ‹‹Èÿ TF~± ÍJªÜoß=à-ºë¸/ª³âÇ`ù‹äfa,²ö~ÿ0ØË‡A©Ây›/6i;µ­SxMðêV¿“‘v8(;)¿ ].þx·c¦F“`1< ³4cå ±ùÅëà®)¼.¾½©›a¤æjnfeñSXž v†Ù?ÃãÑÓuñ*¸ R$uf’’µ»}w†¦¼ƒ ñ,Èb#ñÅ«›æ¦¦KØ&˜ôÌ»[Í0#4KÉ>báýÜÒúKy,'Äü ,ÈJÃn‹è$HŸõÿ¦ø7›>J`R>¬‚É549÷¤M|ž|ûlQ¶â©6*`dSòðCž Í*5gD…FÈ“7Û»Œçemó Zq÷ôè}À|¤°…F2 GÀq·fxW R—6Ñ —wꨯÛÛ#oÀ<?Ù:²•€Î{ÀÖ¿ŒõF™>A‡oë°šïÚ-þh»g×ôîHÒ_–º0ì endstream endobj 209 0 obj 700 endobj xref 0 210 0000000004 65535 f 0000000016 00000 n 0000000069 00000 n 0000000133 00000 n 0000000006 00001 f 0000000663 00000 n 0000000007 00001 f 0000000008 00001 f 0000000009 00001 f 0000000010 00001 f 0000000011 00001 f 0000000012 00001 f 0000000013 00001 f 0000000014 00001 f 0000000015 00001 f 0000000016 00001 f 0000000017 00001 f 0000000018 00001 f 0000000019 00001 f 0000000020 00001 f 0000000021 00001 f 0000000022 00001 f 0000000023 00001 f 0000000024 00001 f 0000000025 00001 f 0000000026 00001 f 0000000027 00001 f 0000000028 00001 f 0000000033 00001 f 0000000855 00001 n 0000000965 00001 n 0000001046 00001 n 0000001308 00001 n 0000000034 00001 f 0000000036 00001 f 0000002818 00001 n 0000000037 00001 f 0000000038 00001 f 0000000039 00001 f 0000000040 00001 f 0000000041 00001 f 0000000042 00001 f 0000000044 00001 f 0000010850 00001 n 0000000045 00001 f 0000000046 00001 f 0000000048 00001 f 0000027101 00001 n 0000000049 00001 f 0000000050 00001 f 0000000051 00001 f 0000000052 00001 f 0000000053 00001 f 0000000054 00001 f 0000000055 00001 f 0000000056 00001 f 0000000057 00001 f 0000000058 00001 f 0000000060 00001 f 0000027124 00001 n 0000000061 00001 f 0000000062 00001 f 0000000064 00001 f 0000046002 00001 n 0000000065 00001 f 0000000066 00001 f 0000000069 00001 f 0000046025 00001 n 0000066596 00001 n 0000000070 00001 f 0000000071 00001 f 0000000072 00001 f 0000000073 00001 f 0000000074 00001 f 0000000075 00001 f 0000000076 00001 f 0000000077 00001 f 0000000078 00001 f 0000000079 00001 f 0000000080 00001 f 0000000081 00001 f 0000000082 00001 f 0000000084 00001 f 0000066619 00001 n 0000000085 00001 f 0000000086 00001 f 0000000088 00001 f 0000086679 00001 n 0000000089 00001 f 0000000090 00001 f 0000000092 00001 f 0000086702 00001 n 0000000093 00001 f 0000000094 00001 f 0000000095 00001 f 0000000096 00001 f 0000000097 00001 f 0000000098 00001 f 0000000100 00001 f 0000095790 00001 n 0000000101 00001 f 0000000102 00001 f 0000000104 00001 f 0000095812 00001 n 0000000105 00001 f 0000000106 00001 f 0000000108 00001 f 0000095894 00001 n 0000000110 00001 f 0000095994 00001 n 0000000111 00001 f 0000000112 00001 f 0000000113 00001 f 0000000114 00001 f 0000000115 00001 f 0000000116 00001 f 0000000122 00001 f 0000096166 00000 n 0000096279 00000 n 0000096306 00000 n 0000096337 00000 n 0000096360 00000 n 0000000123 00001 f 0000000124 00001 f 0000000125 00001 f 0000000128 00001 f 0000096447 00000 n 0000097669 00000 n 0000000136 00001 f 0000097899 00000 n 0000098202 00000 n 0000098223 00000 n 0000098300 00000 n 0000098382 00000 n 0000098841 00000 n 0000098863 00000 n 0000000140 00001 f 0000098940 00000 n 0000099399 00000 n 0000099421 00000 n 0000000152 00001 f 0000099498 00000 n 0000099894 00000 n 0000099915 00000 n 0000099991 00000 n 0000100073 00000 n 0000100394 00000 n 0000100415 00000 n 0000100492 00000 n 0000100574 00000 n 0000101033 00000 n 0000101055 00000 n 0000000156 00001 f 0000101132 00000 n 0000101591 00000 n 0000101613 00000 n 0000000160 00001 f 0000101690 00000 n 0000102086 00000 n 0000102107 00000 n 0000000161 00001 f 0000000176 00001 f 0000102183 00000 n 0000102283 00000 n 0000102428 00000 n 0000102541 00000 n 0000102568 00000 n 0000102599 00000 n 0000102622 00000 n 0000102709 00000 n 0000103012 00000 n 0000103033 00000 n 0000103110 00000 n 0000103192 00000 n 0000103660 00000 n 0000103682 00000 n 0000000180 00001 f 0000103759 00000 n 0000104228 00000 n 0000104250 00000 n 0000000184 00001 f 0000104327 00000 n 0000104727 00000 n 0000104748 00000 n 0000000192 00001 f 0000104824 00000 n 0000105166 00000 n 0000105187 00000 n 0000105264 00000 n 0000105346 00000 n 0000105814 00000 n 0000105836 00000 n 0000000196 00001 f 0000105913 00000 n 0000106382 00000 n 0000106404 00000 n 0000000200 00001 f 0000106481 00000 n 0000106883 00000 n 0000106904 00000 n 0000000202 00001 f 0000106980 00000 n 0000000000 00001 f 0000107073 00000 n 0000107102 00000 n 0000109415 00000 n 0000109438 00000 n 0000110813 00000 n 0000110836 00000 n 0000111646 00000 n trailer << /Size 210 /Info 5 0 R /Root 1 0 R >> startxref 111668 %%EOF ctsim-6.0.2/doc/alphacalc.gif0000644000175000017500000001071710667176710015035 0ustar kevinkevinGIF89agáÕ)???¿¿¿ððð ```   àààÐÐÐ000pppPPP@@@°°°ÀÀÀ€€€ïïï___ßßߟŸŸ///ÏÏÏOOO¯¯¯oooBBB‘‘‘±±±RRR¡¡¡ÿÿÿÿÿÿ!ù),gáÿÀ”pH,ȤrÉl:ŸÐ¨tJ­Z¯ÔËíz¿à°xL.›S€18»ßð¸|N7'„‚Qïûÿ€‚U  ƒ‹ŒŽaj –—˜™  m𢣤¥`…ˆŠ¦¬­®¯E’k•°µ¶· ¡¸¿ÀÁo |ÂÊËÌW ´ÍÕÖ×Gºž½ØÝÞÌ ÆÈßåæ¶Ï‡Óçìí¥ ÜîõöŽáÆÉ÷ýþ}éˆð¯ A8iäÑ;Ȱ¡—;yö9œH1‹!«*jܨ$!ƒCŠÂ)Ïž‘(5¢Â˜²åDY]ÊñMû \Ó*p˜Ðº·o¿.ÀæÅ¶¶ñ(ðpo¸¡ïßÐ?<ð¸õ&ùRU¥ úp†çÑ÷¶@¯ëè‰ôI€¬¿e«VOŸ5óЧwœœ‚©¼'–_¸ÐA}f&@ä·ŸcéA Uð5¨†Bv½—ÿà‡€-HÀΤ…:ŠP@€l`Aæ`¦A æø×‚PS¢H”B `À…ä¶—ð&tŽTv ÌöãDÉ&Ä @x(L ! TX^eTXå›R€[:TÈ!‰ÁŠgZv% ÌÇœ„j@ÕùL>¦f”½a ™xXè›R. ¨=5bD ÐgfúUØ¥„ZŒmŠÍJyဘÐM!p·¢ 'éª5Ϩ±€Á|ÐU0£_ÊêJ¨ ß¯¸hCœ„JæoL’Ù­³pN°ê´ÔºÂÔ1Z‘ÿËÒ—æ_ï‚ g´Z®)· ËĸYߟ~,ï›ôzo+ÚÌC®@€,‚’þñÀor¯g’DPàpŽ¥ö2ÅT2IgÆo N¢QÁ¨õÙz¦Ì$¿É¤(;’œÂTÄ“A@-ôÐD4V ´ÑL7íôÓPG­A8çÈÆév A^uíõ×`suxÅÙa§­öÚl·í5eRm5@`oËpœñöÕwÍ Â‚h:wAv!A“ Â)0_`¸Ž‚kvñágDxR|Ü8œ÷eääûÅ$Ƙ{q"K_Dð1 Ÿ¿92 ìMÿz‚•óõäÝ©OáQ£]¬ëoìUÒÜ×À|ûo¹óUpÖ½?ÑéÂV  Ž}_e³ÌV°|}ÍóåÔGo¬¼wÁÀ;Úç·}¾í÷¾…ÏWU›¿ï$À‹!Áwí»ÔßÐt 7!Or…²_™0@"ý©kžrƒë¦;÷9}‰Ü®È¦ \`~¸»Œ>Ì‹p@ ÀK…Ž/££’ì2Ô€”ÃL P¾Œå«gXŸe´';öÌ‚ ªP X€@»J‡™®wÖ âš4D$0WH¢à_&  tàH«y’÷¼Ç—zA ŒXfµBÿï  CÄ7q¯/`£e2p¬,‘5‡é“­IEÌp€‡9ƒ‹@èØ!^¦UbÒ_fÂÁÙ…//[ÍÙ°gªCæp5VÌØÎ´Ø×u²‚Î V.Sš÷ìÑBè™0ÀEÓAÀ_9Š£_GÉ:a+TÐ –a0ê%p:0±9o¦©°©€T§ÿKã2ßôB`˜À‰"#û²#– i×\g0#…ºôô§žƒÈ£¥.9Î*ꈀqÓ@& Ž…rB'6á¤M¿€=t‹æî(ˆ¸3˜üâÌ^ç·î䪆†ÉáØDvV©¡~ ÀÉŽ³:»i ŒÿíçöHÉ—ö웚7QƒJܧƒvš“úF5NâDayvQ^š&Aý’ d 9ªñ7ÀÆ^TDÛg#[Sü5¦K›`Óµé/ ©eh5Ã[’ ¥R¥èHÐÇŠ¦ö&£Žãiö¦„ÑC†+“Ã+³®(F™‹­mX¥þòVÌ ­ª4L,t,Ô–Lp*?)fSç Ö2ƒ±ÀÄz×è¨%¨8F E‘G1FV^3ìÓdé—Å:´! –4€ØŠÈ4DÇõ£\KËÛÀø>ø8A ±%jb`õ,à'$"F—ó\,  Š¸1€Ÿ˜å'R•/};3 Fš¼í4 *jK— ë€â3`›ØHÀJè|êB¾†N b_ŠÎü6‚>} ú>¡.'[מ@µÖZO ·D<­„UÓÇã…b®]œ ZCbºÈ)/  ³!Åì„|ýPôP@…O˜jœ·]¨L‹Î®œNgÁÿ”˜`éG6ÑPš+F` F8;Í"(êØé艹c¹ÖîÌXo-îò©²Iàó^°_>¤Òd$ZB€Á,qv³ŽÈ Ø®Î-wä-‰£šMPÿ†!$ Âà‰Ä áÒ(‚õ¢»ˆ“$Ø‚&ôo&Ïm¸V€IrœÀÑÄù2P˜èKsôÔi×ê9&Ô‘[?A–ž=ÝË|Z\Iš¾Q䊟aÄJøØ‹Pz$#€èZç”|!ÉÖ¨­èK^û„ª”âƒÑRl÷à}dpOM½‡“à(jp` ˆqSø ÿÃfVÀzFÐyÇoôóOr‚ѧwÒô'næ˜ab =’ŠWógA‘%€zÔpvã׬6fø'™¦ü‚ÿ÷!>GQ&âW=0Oq€°p)@tDP à„:xîõj5TB80»W„aðeQ0Âgéõ2…ø `UÖ\dže´’u=Gx\€Vãw'†¹f³Öƒ„re×…òò…vH·¦ \!Ðè_þ&ß³{[wŽÆ#ðz6‘è_ wgU j]0nñ‰îÅ\¢¸wSpv2‹´X‹¶x‹¸˜‹º¸‹¼Ø‹ÿ¾ø‹ÀŒÂ˜‹K–y°(ÂE ‡ÃŠ&rÇHwÂ:Ì͘hDÈfXpú‡×AÅȃըl’—ˆW@`×ò+Wxs‚ŽÙD„äˆ&§(é8uìÈsuè{‹+?2áA{õH(»^np‚ûabXø¯Xˆ8ñÀ3èaêˆ I )ñhúvy;»·h|U‘‘É‘NX%!!¢QdY’º÷!Àe$XŠæ09VôAŠŒàMkà†à¸“1‰ €\W ²•H’F)‚ôqp7nD“‘ý¸ŽQ×}¢`“(a\PÙ•‡˜ ÿ(I àæU–fé,—g¬(¤ÞHoy–õ¡cÇ ÖAÑvV”y —#X•°i¡…—…©+¶ -•’åFö†y)¨ t‰•Öp—s·™¹—} y“̰q[iš¨¢h$x ™èƒöš°™@õ‘A‰ ÑèRí0l¯t[¹ÙŽâa+¬ Úˆ¢y ÖUšÅÉPS‰˜å`ŽåÖ  {­Û°˜ÀR›Ö°VÃùTÜÙ›%—ÆgØÀƒ9ZçI%>ÖÔyËÉ1ÌpÕG˜ñÉ“¾½yž· 6ÆýB7–šq‘¿°þgž:ŠÿáÁe’¾ pÛ¡p3Ôœí@µÐ†ØBº¡ÐA%¸ú .©™%*ß…<–É j ω_\©¡ßÕï[ùø™‚p™ ¡/ £Ðnr•¦PïéP9¡Ï%´!–¢ ¤8Z¤àã2ÊR}§/˜ÐG¤X ¾E='¤qàJ:¦ÌÓ[ú â¡gÐûF¢nú¦d•¢èA¥Œ°VD ;Oz xõPtª• N2¥“XŠW €[šù”Lð™§zš ”÷²šÀ¦bj©¬ÑPÄt8Š U© Ú •J©“¨u Ba K©ÚÚ´CÉ©â€.tà:ÿ0èE*L#¤¦®tq°û)¨³J«—!.=É \ Tæ«/Gp¦ô›ÂúЇNÔZ¢ T0·j5÷y¨K0ANš¬ªÁê@ȱ ×ùlÒô­: „žîjÏ:.óô ¥×ħùŠì  `DÿJ¨ðRŸ; ê à= ÛŸ¹SäÓ°^°¢Õ±Ÿ•c±ãбú Õð3êªXv±"+ê°'ë62;³4[³6»6p²-kxÀ’±HQ´B;´D[´D«³;ëë ò )‹´I‹G$ë¥M`=Α²€1À²Q+iúÖƒCX7 ²ÿ]ksêÆ¨cz3g+~š‹³nz}“ù¶~”Kðì’¬@3Š·£1¼“-¢b©ª¢æ*¸d¶úº@·ýy}¥Æ¸ †§GPž¹©µ€k¹£àªC0 ¹j1lº¦ ©™ë"ñi‡­ªëœê(;¢QIF°f;»PªCR$Mº“WÒÛ껨*Â5…9-ˆ¼Âš* ]y‡‚¯Ðû Öyk„øWRØ›½µŒtÜQäaá+¾¾y¸’{;ßľç f%À¶òÂ0¢½k¿¶@`fA“¿…2þ M)Àÿ \ìÆPt@;˜#„q ÇëÀÕ° ° hpü{TàlñÊÁ¡9 ðÐuñ3YÁü«ÀYAˆ1kÁÂ)1 Ãç&ø‘4 /dev/null latex $(pkg) makeindex $(pkg) > /dev/null latex $(pkg) .PHONY: htmlhelp htmlhelp: ../docs/$(pkg).htb ../docs/$(pkg).htb: $(docs) rm -f $(pkg)*.html $(pkg).hh[pck] $(pkg).zip cp $(pkg)-tex2rtf.bib $(pkg).bib tex2rtf $(pkg).tex $(pkg).html -html > /dev/null ./maphhc.pl zip -q $(pkg).zip *.html *.gif $(pkg).hh[pck] mv $(pkg).zip $(pkg).htb mv $(pkg).htb ../docs .PHONY: html html: ../docs/html.tar.gz ../docs/html.tar.gz: $(docs) rm -f $(pkg)*.html cp $(pkg)-tex2rtf.bib $(pkg).bib tex2rtf $(pkg).tex $(pkg).html -html > /dev/null rm -rf html mkdir html cp *.gif html mv $(pkg)*.html html GZIP='-9' tar czf html.tar.gz html mv html.tar.gz ../docs rm -r html #.PHONY: winhelp #winhelp: $(docs) # rm -f $(pkg).rtf $(pkg).cnt # cp $(pkg)-tex2rtf.bib $(pkg).bib # tex2rtf $(pkg).tex $(pkg).rtf -winhelp # ./maphhc.pl # hcw /c /m /e $(pkg).hpj # mv $(PKG).HLP $(pkg).hlp # cp $(pkg).hlp $(pkg).cnt ../docs/$(pkg)/ ctsim-6.0.2/doc/mytitle.sty0000644000175000017500000000154610667176710014666 0ustar kevinkevin% mytitle.sty \def\maketitle{\begin{titlepage} \let\footnotesize\small \let\footnoterule\relax \setcounter{page}{0} %\null %\vfil \vspace*{2cm}\begin{flushleft} {\huge \sf\@title\\\rule{\textwidth}{0.5mm}} \vskip 3em {\large \lineskip .75em {\sf \Large \@author}} \vskip 3em {\large\sf Manual Version \manvernum\\\mandate\par} \end{flushleft} \par \@thanks \vfill {\sf\small\begin{flushright}% kevin@rosenberg.net\\ \vspace{0.3cm} Heart Hospital of New Mexico\\ 504 Elm Street N.E.\\ Albuquerque, New Mexico 87108\\ \end{flushright}} \null \end{titlepage} \setcounter{footnote}{0} \let\thanks\relax \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\maketitle\relax} \def\abstractname{Abstract} % <---------- \def\abstract{\titlepage \null\vfil \begin{center} {\bf \abstractname} % <---------- % {\bf Abstract} \end{center}} \def\endabstract{\par\vfil\null\endtitlepage} ctsim-6.0.2/cgi-bin/0000755000175000017500000000000013254524615013167 5ustar kevinkevinctsim-6.0.2/cgi-bin/Makefile.am0000644000175000017500000000010110667176710015217 0ustar kevinkevincgibin_SCRIPTS=@cgiprograms@ EXTRA_SCRIPTS=ctsim.cgi ctsim.conf ctsim-6.0.2/cgi-bin/ctsim.cgi.in0000644000175000017500000002721113254271456015404 0ustar kevinkevin#!/usr/bin/perl # @configure_input@ use strict; use CGI; use File::Basename; use Fcntl ':flock'; require './ctsim.conf'; my $opt_d = 0; $ENV{'PATH'} = "$::bindir:$::lamrundir:/bin"; my $fromhost = $ENV{'REMOTE_HOST'}; my $gmt_start = time(); my $gmt_end; my $execution_time; my %in; CGI::ReadParse(\%in); # Incoming variables # Phantom_Name, Phantom_Nx, Phantom_Ny, Phantom_NSample # PJ_NDet, PJ_NRot, PJ_NRay, PJ_RotAngle, # IR_Nx, IR_Ny, IR_Filter, IR_Filter_Param my $error = ""; if ($::single_process_only > 0) { my @processes = `/bin/ps -A`; my $running = 0; foreach my $p (@processes) { if ($p =~ m/ctsimtext/) { $error .= "Another online simulation is currently running.
You may wait a moment and then click your browser's Refresh button to resubmit your simulation
"; last; } } } my $Phantom_Name = FilterMetaChars($in{'Phantom_Name'}); my $Phantom_Nx = FilterToNumber($in{'Phantom_Nx'}); my $Phantom_Ny = FilterToNumber($in{'Phantom_Ny'}); my $Phantom_ViewRatio = FilterToNumber($in{'Phantom_ViewRatio'}); my $Phantom_NSample = FilterToNumber($in{'Phantom_NSample'}); $error .= "Phantom name must not be blank
" if ($Phantom_Name eq ""); $error .= "Phantom Size must be between 5 and 512
" if ($Phantom_Nx < 5 || $Phantom_Nx > 512 || $Phantom_Ny < 5 || $Phantom_Ny > 512); $error .= "Phantom NSample must be between 1 and 5
" if ($Phantom_NSample < 1 || $Phantom_NSample > 5); $error .= "View Ratio must be between 0 and 100
" if ($Phantom_ViewRatio <= 0 || $Phantom_ViewRatio > 100); my $PJ_Geometry = FilterMetaChars($in{'PJ_Geometry'}); my $PJ_NDet = FilterToNumber($in{'PJ_NDet'}); my $PJ_NRot = FilterToNumber($in{'PJ_NRot'}); my $PJ_FocalLength = FilterToNumber($in{'PJ_FocalLength'}); my $PJ_NRay = FilterToNumber($in{'PJ_NRay'}); my $PJ_RotAngle = FilterToNumber($in{'PJ_RotAngle'}); my $PJ_ScanRatio = FilterToNumber($in{'PJ_ScanRatio'}); $error .= "Projection NDet must be between 5 and 1000
" if ($PJ_NDet < 5 || $PJ_NDet > 1000); $error .= "Projection NRot must be between 5 and 1000
" if ($PJ_NRot < 5 || $PJ_NRot > 1000); $error .= "Projection NRay must be between 1 and 5
" if ($PJ_NRay < 1 || $PJ_NRay > 5); $error .= "Projection RotAngle must be between 0.1 and 2
" if ($PJ_RotAngle < 0.1 || $PJ_RotAngle > 2); $error .= "Focal length must be between 1.01 and 10" if ($PJ_FocalLength <= 1 || $PJ_FocalLength > 10); $error .= "Scan Ratio must be between 0 and 10
" if ($PJ_ScanRatio <= 0 || $PJ_ScanRatio > 10); #my $IR_Nx = FilterToNumber($in{'IR_Nx'}); #my $IR_Ny = FilterToNumber($in{'IR_Ny'}); my $IR_Nx = $Phantom_Nx; my $IR_Ny = $Phantom_Ny; my $IR_FilterMethod = FilterMetaChars($in{'IR_FilterMethod'}); my $IR_Zeropad = FilterToNumber($in{'IR_Zeropad'}); my $IR_Filter = FilterMetaChars($in{'IR_Filter'}); my $IR_Filter_Param = FilterToNumber($in{'IR_Filter_Param'}); my $IR_Interp = FilterMetaChars($in{'IR_Interp'}); my $IR_Backproj = FilterMetaChars($in{'IR_Backproj'}); my $Disp_Min = "auto"; my $Disp_Max = "auto"; $Disp_Min = FilterToNumber($in{'Disp_Min'}) if ($in{'Disp_Min'} ne "auto" && $in{'Disp_Min'} ne ""); $Disp_Max = FilterToNumber($in{'Disp_Max'}) if ($in{'Disp_Max'} ne "auto" && $in{'Disp_Max'} ne ""); if ($Disp_Min ne 'auto' && ! ($Disp_Min =~ /^[\d\.\-]+$/)) { $error .= "Display Minimum must be 'auto' or numeric (received $Disp_Min)
"; } if ($Disp_Max ne 'auto' && ! ($Disp_Max =~ /^[\d\.\-]+$/)) { $error .= "Display Maximum must be 'auto' or numeric (received $Disp_Max)
"; } my $MPI_Str = FilterMetaChars($in{'MPI'}); my $MPI = 0; $MPI = 1 if ($MPI_Str eq "yes" && $::mpi_enable ne ""); $error .= "IR Nx and Ny must be between 5 and 1024
" if ($IR_Nx < 5 || $IR_Nx > 1024 || $IR_Ny < 5 || $IR_Ny > 1024); $error .= "IR Filter Parameter must be between 0 and 1
" if ($IR_Filter_Param < 0 || $IR_Filter_Param > 1); my $tmpid = $$; my $auto_window_img = "std0.1"; my $auto_window_diff = "std1"; my $auto_window_pj = "full"; my $logfile = "$::jobdir/ctsim.log"; my $result_fname = "$::datadir/result-$tmpid.html"; my $phantom_fname = "$::datadir/phantom-$tmpid.if"; my $pj_fname = "$::datadir/pj-$tmpid.pj"; my $ir_fname = "$::datadir/ir-$tmpid.if"; my $pj_if_fname = "$::datadir/pj-$tmpid.if"; my $sub_fname = "$::datadir/sub-$tmpid.if"; my $phantom_png = "$::datadir/phantom-$tmpid.png"; my $ir_png = "$::datadir/ir-$tmpid.png"; my $pj_png = "$::datadir/pj-$tmpid.png"; my $sub_png = "$::datadir/sub-$tmpid.png"; my $result_url = "$::url_datadir/result-$tmpid.html"; my $phantom_png_url = "$::url_datadir/phantom-$tmpid.png"; my $ir_png_url = "$::url_datadir/ir-$tmpid.png"; my $pj_png_url = "$::url_datadir/pj-$tmpid.png"; my $sub_png_url = "$::url_datadir/sub-$tmpid.png"; my $pjrec_ver = "$::bindir/ctsimtext pjrec"; my $phm2pj_ver = "$::bindir/ctsimtext phm2pj"; my $phm2if_ver = "$::bindir/ctsimtext phm2if"; my $diff_ver = "$::bindir/ctsimtext if2"; $pjrec_ver = "/opt/lam/bin/mpirun N N $::lamrundir/pjrec-lam" if $MPI; $phm2pj_ver = "/opt/lam/bin/mpirun N N $::lamrundir/phm2pj-lam" if $MPI; $phm2if_ver = "/opt/lam/bin/mpirun N N $::lamrundir/phm2if-lam" if $MPI; my $gp_cmd = "$phm2if_ver $phantom_fname $Phantom_Nx $Phantom_Ny --phantom $Phantom_Name --nsample $Phantom_NSample --view-ratio $Phantom_ViewRatio"; my $pj_cmd = "$phm2pj_ver $pj_fname $PJ_NDet $PJ_NRot --phantom $Phantom_Name --nray $PJ_NRay --rotangle $PJ_RotAngle --geometry $PJ_Geometry --focal-length $PJ_FocalLength --view-ratio $Phantom_ViewRatio --scan-ratio $PJ_ScanRatio"; my $pj_if_cmd = "$::bindir/pj2if $pj_fname $pj_if_fname"; my $pjrec_cmd = "$pjrec_ver $pj_fname $ir_fname $IR_Nx $IR_Ny --filter $IR_Filter --filter-param $IR_Filter_Param --interp $IR_Interp --backproj $IR_Backproj --filter-method $IR_FilterMethod --zeropad $IR_Zeropad"; my $sub_cmd = "$diff_ver $phantom_fname $ir_fname $sub_fname --sub"; my $diff_cmd = "$diff_ver $phantom_fname $ir_fname --comp"; my $window_options = "--auto $auto_window_img"; if ($Disp_Min ne 'auto') { $window_options .= " --min $Disp_Min"; } if ($Disp_Max ne 'auto') { $window_options .= " --max $Disp_Max"; } my $png1_cmd = "$::bindir/ifexport $phantom_fname $phantom_png $window_options --stats --format png --center mode"; my $png2_cmd = "$::bindir/ifexport $ir_fname $ir_png $window_options --stats --format png --center mode"; my $png3_cmd = "$::bindir/ifexport $pj_if_fname $pj_png --auto $auto_window_pj --stats --format png --center mode"; my $png4_cmd = "$::bindir/ifexport $sub_fname $sub_png --auto $auto_window_diff --stats --format png --center mode"; my $title = "CTSim Results"; my $out = head(); $out .= " $title \n"; $out .= "\n"; $out .= "

$title


\n"; if ($opt_d) { $out .= "

Commands

\n"; $out .= "$gp_cmd
\n$pj_cmd
\n$pj_if_cmd
\n$pjrec_cmd
\n$diff_cmd
\n$png1_cmd
\n$png2_cmd
\n" . "$png3_cmd
\n$png4_cmd
\n"; } my $cmdout = ""; if ($error ne "") { $out .= "The following errors were present in your request.
\n"; $out .= "Please correct them and try submitting your request again.

\n"; $out .= "$error"; } else { my $gp_out; my $pj_out; my $pj_if_out; my $pjrec_out; my $sub_out; my $diff_out; my $png_gp_out; my $png_pjrec_out; my $png_pj_out; my $png_sub_out; $gp_out = `$gp_cmd`; if (-s $phantom_fname) { $pj_out .= `$pj_cmd`; $png_gp_out .= `$png1_cmd`; if (-s $pj_fname) { $pj_if_out .= `$pj_if_cmd`; $png_pj_out .= `$png3_cmd`; $pjrec_out .= `$pjrec_cmd`; if (-s $ir_fname) { $png_pjrec_out .= `$png2_cmd`; $sub_out .= `$sub_cmd`; $diff_out .= `$diff_cmd`; $png_sub_out .= `$png4_cmd`; } } } # Delete image files and projection files unlink($phantom_fname); unlink($ir_fname); unlink($pj_fname); unlink($pj_if_fname); unlink($sub_fname); $cmdout = "$gp_cmd\n $gp_out $pj_cmd\n $pj_out $pj_if_cmd\n $pj_if_out $pjrec_cmd\n $pjrec_out $diff_cmd\n $diff_out $png1_cmd\n $png_gp_out $png2_cmd\n $png_pjrec_out $png3_cmd\n $png_pj_out $png4_cmd\n $png_sub_out"; if (open(LOGFILE,">> $logfile")) { flock(LOGFILE,LOCK_EX); seek(LOGFILE, 0, 2); print LOGFILE "Client Address: $ENV{'REMOTE_ADDR'}\n"; print LOGFILE "Job $tmpid\n"; print LOGFILE $cmdout; print LOGFILE "----------------------------------------------------\n"; flock(LOGFILE,LOCK_UN); close(LOGFILE); } $gmt_end = time(); $execution_time = $gmt_end - $gmt_start; if ($opt_d) { $out .= "

Command Output

$cmdout
\n"; } my $png_gp_out_html = $png_gp_out; my $png_pjrec_out_html = $png_pjrec_out; my $png_pj_out_html = $png_pj_out; my $png_sub_out_html = $png_sub_out; $png_gp_out_html =~ s/\n/
/gms; $png_pjrec_out_html =~ s/\n/
/gms; $png_pj_out_html =~ s/\n/
/gms; $png_sub_out_html =~ s/\n/
/gms; $out .= "\n"; $out .= "\n"; $out .= "\n"; $out .= "\n"; $out .= "\n"; $out .= "\n"; $out .= "
Phantom ImageReconstructed Image

$png_gp_out

$png_pjrec_out
Projection SinogramReconstruction Error

$png_pj_out

$sub_out
$png_sub_out
"; $out .= "

Error Measurements
"; $out .= "$diff_out"; $out .= "

Execution time: $execution_time seconds\n"; } $out .= "


\n"; $out .= "Specify another
simulation.
"; $out .= "Return to CTSim's home.
\n"; $out .= " "; $out .= "\n"; if (open(OUTFILE,"> $result_fname")) { flock(OUTFILE,LOCK_EX); print OUTFILE $out; flock(OUTFILE,LOCK_UN); close OUTFILE; print "Location: $result_url\n\n"; } else { print "Content-type: text/plain\n\n"; print "The simulator was unable to create an result file.\n"; } if (open(JOBFILES,"> $::jobdir/$tmpid")) { flock(JOBFILES,LOCK_EX); print JOBFILES "execution_time=$execution_time\n"; print JOBFILES "Phantom_Name=$Phantom_Name\n"; print JOBFILES "Phantom_Nx=$Phantom_Nx\n"; print JOBFILES "Phantom_Ny=$Phantom_Nx\n"; print JOBFILES "Phantom_NSample=$Phantom_NSample\n"; print JOBFILES "PJ_NDet=$PJ_NDet\n"; print JOBFILES "PJ_NRot=$PJ_NRot\n"; print JOBFILES "PJ_NRay=$PJ_NRay\n"; print JOBFILES "PJ_RotAngle=$PJ_RotAngle\n"; print JOBFILES "IR_Nx=$IR_Nx\n"; print JOBFILES "IR_Ny=$IR_Ny\n"; print JOBFILES "IR_Interp=$IR_Interp\n"; print JOBFILES "IR_Filter=$IR_Filter\n"; print JOBFILES "IR_Filter_Param=$IR_Filter_Param\n"; print JOBFILES "IR_Backproj=$IR_Backproj\n"; print JOBFILES "Disp_Min=$Disp_Min\n"; print JOBFILES "Disp_Max=$Disp_Max\n"; print JOBFILES "MPI=$MPI\n"; print JOBFILES "Files=$result_fname,$phantom_fname,$pj_fname,$ir_fname,$phantom_png,$ir_png,$pj_if_fname,$pj_png\n" if ($error eq ""); printf JOBFILES "cmdout=$cmdout\n"; flock(JOBFILES,LOCK_UN); close JOBFILES; } exit; sub internal_error { my $out = head(); $out .= "

Internal error

Please notify webmaster\@med-info.com "; print $out; exit; } sub head { # "Content: text/html\n\n"; } sub FilterMetaChars { my $var = pop(@_); $var =~ /^([-\w]+)$/; $1; } sub FilterToNumber { my $var = pop(@_); $var =~ /^(\-*\d*\.*\d*)$/; $1; } ctsim-6.0.2/cgi-bin/Makefile.in0000644000175000017500000003651013254406202015230 0ustar kevinkevin# 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 = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = cgi-bin ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/scripts/ax_check_compile_flag.m4 \ $(top_srcdir)/scripts/ax_ext.m4 \ $(top_srcdir)/scripts/ax_gcc_x86_avx_xgetbv.m4 \ $(top_srcdir)/scripts/ax_gcc_x86_cpuid.m4 \ $(top_srcdir)/scripts/ax_openmp.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = ctsim.cgi ctsim.conf CONFIG_CLEAN_VPATH_FILES = 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; }; \ } am__installdirs = "$(DESTDIR)$(cgibindir)" SCRIPTS = $(cgibin_SCRIPTS) 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 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/ctsim.cgi.in \ $(srcdir)/ctsim.conf.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPUEXT_FLAGS = @CPUEXT_FLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ 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@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIMD_FLAGS = @SIMD_FLAGS@ STRIP = @STRIP@ VERSION = @VERSION@ XMKMF = @XMKMF@ X_BASIC_LIBS = @X_BASIC_LIBS@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ X_TOOLKIT_LIBS = @X_TOOLKIT_LIBS@ 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 = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ cgibindir = @cgibindir@ cgibinurl = @cgibinurl@ cgiprograms = @cgiprograms@ ctlibs = @ctlibs@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldata = @htmldata@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lamdefs = @lamdefs@ lamdir = @lamdir@ lamprograms = @lamprograms@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mpienable = @mpienable@ my_includes = @my_includes@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ webdatadir = @webdatadir@ webdataurl = @webdataurl@ webenabled = @webenabled@ wx_cppflags = @wx_cppflags@ wxcflags = @wxcflags@ wxconfig = @wxconfig@ wxlibs = @wxlibs@ cgibin_SCRIPTS = @cgiprograms@ EXTRA_SCRIPTS = ctsim.cgi ctsim.conf all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu cgi-bin/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu cgi-bin/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): ctsim.cgi: $(top_builddir)/config.status $(srcdir)/ctsim.cgi.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ ctsim.conf: $(top_builddir)/config.status $(srcdir)/ctsim.conf.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-cgibinSCRIPTS: $(cgibin_SCRIPTS) @$(NORMAL_INSTALL) @list='$(cgibin_SCRIPTS)'; test -n "$(cgibindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(cgibindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(cgibindir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | 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; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$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_SCRIPT) $$files '$(DESTDIR)$(cgibindir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(cgibindir)$$dir" || exit $$?; \ } \ ; done uninstall-cgibinSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(cgibin_SCRIPTS)'; test -n "$(cgibindir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ dir='$(DESTDIR)$(cgibindir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @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 check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(cgibindir)"; 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: clean-generic: 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) 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-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-cgibinSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: 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 Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-cgibinSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-cgibinSCRIPTS \ 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-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am \ uninstall-cgibinSCRIPTS .PRECIOUS: Makefile # 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: ctsim-6.0.2/cgi-bin/ctsim.conf.in0000644000175000017500000000035113254271456015563 0ustar kevinkevin# @configure_input@ $::bindir = "@prefix@/bin"; $::lamrundir = "@prefix@/bin"; $::jobdir = "@webdatadir@"; $::datadir = "@webdatadir@"; $::url_datadir = "@webdataurl@"; $::mpi_enable = "@mpienable@"; $::single_process_only = 1; 1; ctsim-6.0.2/images/0000755000175000017500000000000010667176710013130 5ustar kevinkevinctsim-6.0.2/images/logo32.bmp0000644000175000017500000000607010667176710014740 0ustar kevinkevinBM8 6(   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúüúõøñÐîçqÖÕNÓÑK××K××TÕÕrÔÔ›ÕÕÎÛÛùððÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùüùíöíèóèøùòwúøüüÿÿÿÿÿÿÿÿüüòòåå3ÈÈ“ÍÍïèèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýþýî÷îéôéöûöÿÿÿþÿÿ6ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññ*ÌÌ¥ÏÏÿõõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùüùêõêõúõÿÿÿÿÿÿÿÿÿÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿééSÇÇåããÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùýùìöìûýûÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùù-ÏÏÙßßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùüùî÷îüþüÿÿÿÿÿÿÿÿÿÿÿÿüÿÿ6ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþ.ÒÒéççÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþêõêúýúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúTÍÍÿõõÿÿÿÿÿÿÿÿÿÿÿÿð÷ðôúôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‘ÿÿÿÿÿÿÿÿùüùüùüùüþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïï—ÐÐÿþþÿÿÿÿÿÿúüúìöìÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿBÿÿþþñøèôêôëõìõëõéôî÷ýþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÞÝäçåÿÿÿÿÿÿï÷ïøûøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ×ÿÿüýëõï÷ûýÿÿÿÿÿÿÿÿýþòùëõùüÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ö‡ÕÓÿýýûýûéôéþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûýìõúüÿÿÿÿååÙÙÙÙââüüÿÿüýìöøüÿÿÿÿÿÿÿÿÿÿÿÿÿÿ)ÕÕ÷òòôùôð÷ðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿKíöúüÿÿÿÿØØÛÛììììããÒÒýýÿÿüýìöýþÿÿÿÿÿÿÿÿÿÿÿÿïïÆßßî÷îûüûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæöúï÷ÿÿÿÿããÞÞÿÿÛÛÚÚÿÿÛÛÑÑÿÿÿÿóùð÷ÿÿÿÿÿÿÿÿÿÿÿÿ÷÷ŽÛÛî÷îúüúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþ–êôùýÿÿúúÑÑüüööââûûþþöö§§ööÿÿýþêõüþÿÿÿÿÿÿÿÿÿÿþþ\Ø×êõêýþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúüKíöÿÿÿÿôôÚÚþþååååààââÿÿ´´ààÿÿÿÿíöúüÿÿÿÿÿÿÿÿÿÿÿÿ:ÖÕçôçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæúüíöÿÿÿÿééääññ÷÷ââÌÌääóóððÓÓÿÿÿÿíöúüÿÿÿÿÿÿÿÿÿÿÿÿ7××çôçÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ›úüíöÿÿÿÿèèääððüüÄĸ¸ííîîññ××ÿÿÿÿíöúüÿÿÿÿÿÿÿÿÿÿÿÿ6××éõéþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿNúüíöÿÿÿÿôôÝÝïïÙÙÙÙïïÉÉïïææççÿÿÿÿíöúüÿÿÿÿÿÿÿÿÿÿÿÿ?××î÷îúüúÿÿÿÿÿÿÿÿÿÿÿÿèÿÿþþêõúýÿÿúúÖÖîîÒÒööúúååþþÕÕööÿÿýþëõüýÿÿÿÿÿÿÿÿÿÿþþbØØí÷íûýûÿÿÿÿÿÿÿÿÿÿÿÿ¦ÿÿÿÿõúð÷ÿÿÿÿääßßÿÿããââûûççÚÚÿÿÿÿôúî÷ÿÿÿÿÿÿÿÿÿÿÿÿõõÛÛóùóñøñÿÿÿÿÿÿÿÿÿÿÿÿ^ÿÿÿÿþþìöûýÿÿÿÿÝÝÛÛõõööââ××ýýÿÿýþìöüýÿÿÿÿÿÿÿÿÿÿÿÿ óòÄßÞûýûéôéþþþÿÿÿÿÿÿéÿÿÿÿÿÿÿÿúýìõûýÿÿþýääÚÚÚÚááúúÿÿýþíö÷ûÿÿÿÿÿÿ%ÿÿRÿÿ€ÿÿ¬ÿÿÈôêøú÷ÿÿÿîöîùüùÿÿÿÿÿÿ¨ÿÿÿÿÿÿÿÿÿÿûýêõñùýþÿÿÿÿÿÿÿÿÿÿôùëõ÷û@ÿÿmÿÿÿÿÕÿÿöÿÿÿÿÿÿÿÿÿýûòõëþÿþÿÿÿúüúíöíÿÿÿÿÿÿ[ÿÿÿÿÿÿÿÿÿÿÿÿýþî÷éôêõìö ìö,êôYéôˆìõ½üýëÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñøñöúöÿÿÿÿÿÿÿÿÿîöîûúõëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿQýþ…ùü²ùüàùüøùüÿüþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúýúêôêþþþÿÿÿÿÿÿÿÿÿýþýøõëžÿüÿÿÿÿÿÿ9ÿÿoÿÿ ÿÿÍÿÿñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿýìöìùüùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüøõ”ìåˆþý¹ÿÿåÿÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþðøðõúõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿûøõþöîÿýüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþð÷ðôúôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷û÷ëõë÷û÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúýúíöíôúôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûýûìöìëõëùüùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûýûî÷îëõëùüùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõúõêõêèôèöúöúüúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúüú÷û÷éôééôéóùóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷û÷î÷îëõëçóçæóææóæçóçæóæçóçêõêìöì÷ú÷þÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿctsim-6.0.2/images/logo48.bmp0000644000175000017500000001547010667176710014753 0ustar kevinkevinBM86(00  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúùüçèë«ÆÆƒÁÁ_ÀÀC¿¿-ÃÃ-ÄÄ-ÄÄ.ÃÃG¼¼hÄĉ°ÄÄÛÜÜúííÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõõúÝÝîçÞîŒäïìíïïþþÿÿÿÿÿÿÿÿÿÿÿÿûûîîêê ÍÍ2ººx¨¨ÝÖÖÿûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññøááðááðïï÷ÿÿÿgÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿêê¿¿iµµÐÎÎÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùùüããñÝÝîõõúÿÿÿÿÿÿ÷ÿÿ!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõõ ¾¾~­­ñååÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîî÷ââñóóùÿÿÿÿÿÿÿÿÿÿÿÿÎÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿêê/´´ÀÉÉÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿééõååòýýþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ™ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾¾ª»»ÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿééôííöÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿkÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎΘººÿýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿêêõììöÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿ9ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÒÒ”¸¸ÿùùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿééôííöÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿâÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÖÖ¡¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïï÷ååóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿµÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇÇÊÑÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúýââðýýþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþ8¼¼÷ììÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿççóòòøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿAÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿì솼¼ÿýýÿÿÿÿÿÿÿÿÿÿÿÿóóùßßðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÊÊàÝÝÿÿÿÿÿÿÿÿÿÿÿÿããñööûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ²ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷tÄÄÿüüÿÿÿÿÿÿùùüââñþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÌÌêääÿÿÿÿÿÿããòîî÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿQÿÿéôàïãñãñãñçõÛéÁÏ«¹ª¸¼Ê×åèöãñãñãñàîæóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿì쉹¹ÿþþúúýÞÞïüüýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõÿÿÿÿßïî÷÷û÷ûùþÖÚµ¹ÎÒæêæêÒÖ·»ËÐùý÷û÷ûîöÞîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþ7ÄÄüóó÷÷ûääòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½ÿÿÿÿãñøüÿÿÿÿå仺öõÿÿùøøøÿÿûúÁÀßßÿÿÿÿøüãñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚÚÙÞÞççôôôúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿãñ÷ûÿÿøø¼¼÷÷ÿÿññ««°°üüÿÿûû¥¥óóÿÿ÷ûãñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïï«ÉÉääòøøûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿNÿÿÿÿãñ÷ûÿÿËËÙÙÿÿÿÿûûööüüÿÿÿÿÿÿ³³±±ÿÿ÷ûãñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòò„ÉÉææò÷÷ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóÿÿÿÿÿÿãñøüùùµµøøÿÿõõÑÑÛÛüüøøÿÿÿÿÖÖ‘‘óóúþãñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýý_ÆÆÝÝîüüýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿËÿÿÿÿÿÿãñùýîíÊÊÿÿþþÖÖõõææççÕÕêêÿÿôôÜÜûÿãñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿBÄÄ××ëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿšÿÿÿÿÿÿãñûÿÝÜÚÚÿÿììääÿÿÍͶ¶øøÑÑúúÿÿÆÆÏÏýÿãñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-ÄÄ××ëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_ÿÿÿÿÿÿãñûÿÜÛÛÛÿÿÖÖóóÿÿÍÍ··ùùããêêÿÿóóÇÇýÿãñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-ÄÄ××ëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöÿÿ!ÿÿÿÿÿÿãñûÿÛÚÝÝúúààÿÿúú¥¥··ããùùÕÕÿÿëëËËýÿãñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,ÄÄ××ëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇÿÿÿÿÿÿÿÿãñúþàߨØüüââÿÿÇÇÁÁÓÓ©©åå××ÿÿÝÝÚÙûÿãñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ4ÄÄÞÞïûûýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ•ÿÿÿÿÿÿÿÿãñùýóòÆÆùùÛÛíí··ÿÿÿÿÕÕ¼¼ááÿÿÓÓäãúþãñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿGÃÃææòööûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿhÿÿÿÿÿÿÿÿãñøüýý»»óóßßÄÄÑÑÿÿÿÿããççÿÿùù¼¼ùùøüãñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýþ\ÇÊääòøøûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿÿ2ÿÿÿÿÿÿÿÿãñ÷ûÿÿÜÜÍÍÿÿûûØØééììÏÏúúÿÿÖÖÑÑÿÿ÷ûãñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÿÿ÷ûÕãðêêõññøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿâÿÿ ÿÿÿÿÿÿÿÿãñ÷ûÿÿýýÀÀççÿÿøøÐÐÎÎóóÿÿïï»»ùùÿÿ÷ûãñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿBÿÿ“ÿÿçÿÿÿÿÿÿ÷ûèåó÷÷ûääñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ³ÿÿÿÿÿÿÿÿÿÿãñøüÿÿÿÿóòÉÈÜÛÿÿÿÿÿÿÿÿááÈÇííÿÿÿÿøüãñÿÿÿÿÿÿÿÿÿÿÿÿ4ÿÿ—ÿÿÙÿÿþÿÿÿÿÿÿÿÿÿÿÿééôòòøûûýÜÜîûûýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ}ÿÿÿÿÿÿÿÿÿÿàïï÷÷û÷ûøüæê¿ÃÅÉÑÕÑÕÈ̼Àßãùý÷û÷ûï÷ßïÿÿÿÿÿÿ2ÿÿÿÿÆÿÿúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿààïùùüÿÿÿèèôëëõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿÿ7ÿÿÿÿÿÿÿÿÿÿìöáïãñãñãñåôäòÓá¾Ì¼ÊÏÝãñæôãñãñãñáïéô(ÿÿƒÿÿÏÿÿúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññøààðÿÿÿÿÿÿûûýââðýýþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿâÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ'ÿÿqÿÿºÿÿòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿããñ÷÷ûÿÿÿÿÿÿÿÿÿääñõõúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ­ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_ÿÿ®ÿÿôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿööûããñÿÿÿÿÿÿÿÿÿÿÿÿõõûÜÜîþþÿÿÿÿÿÿÿÿÿÿÿÿÿ{ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ]ÿÿªÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßßïòòùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿêêôïï÷ÿÿÿÿÿÿÿÿÿÿÿÿMÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿNÿÿ—ÿÿÛÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôôúååòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüýââðûûýÿÿÿÿÿÿôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿHÿÿÿÿßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýþââñùùüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóóùããñþþÿÿÿÿºÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿCÿÿ‡ÿÿÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿååóïï÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿììöìëõÿÿÿÿÿÿÿÿÿÿÿÿÿ.ÿÿsÿÿÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿííöééôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîìöêêö:ÿÿÿÿ2ÿÿ|ÿÿÁÿÿøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿììöêêõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿØßè_Üã¹þÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿííöééôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüûôçðíâðýúýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýþååòééõþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòòøááðîî÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððøááðïï÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûýççóÛÛíóóùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôôúÞÞïææóúúüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôôúááðßßïééôúúýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüþììõááðââñòòùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúüååòÛÛíááðïï÷ööûööúþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿööúööûòòùââðÜÜíââñ÷÷ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýþ÷÷ûèèôããñââñÜÜíÕÕê××ë××ëÕÕêÚÚìââñääñææóööúüüýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿctsim-6.0.2/images/logo-full-size.psd0000644000175000017500000020413310667176710016513 0ustar kevinkevin8BPSggf8BIMí ResolutionHH8BIM FX Global Lighting Anglex8BIMFX Global Altitude8BIMó Print Flags 8BIM Copyright Flag8BIM'Japanese Print Flags 8BIMõColor Halftone SettingsH/fflff/ff¡™š2Z5-8BIMøColor Transfer Settingspÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè8BIM Layer State8BIM Layer Groups8BIMGuides@@8BIM URL overrides8BIMSlicesugg screenshotgg8BIMICC Untagged Flag8BIMLayer ID Generator Base8BIM New Windows Thumbnail¹ppP“ÿØÿàJFIFHHÿîAdobed€ÿÛ„            ÿÀpp"ÿÝÿÄ?   3!1AQa"q2‘¡±B#$RÁb34r‚ÑC%’Sðáñcs5¢²ƒ&D“TdE£t6ÒUâeò³„ÃÓuãóF'”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö7GWgw‡—§·Ç×ç÷5!1AQaq"2‘¡±B#ÁRÑð3$bár‚’CScs4ñ%¢²ƒ&5ÂÒD“T£dEU6teâò³„ÃÓuãóF”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö'7GWgw‡—§·ÇÿÚ ?õT’I%)BËk¨÷D˜hîOî±£ÜçUBË^]éP³óœíZÏ ÀFçÁ§«•¸¼“e¤C­|;¶èÖ·ù Bû"û1õ2m[M1î·Sÿ4ÃÿWgöŒwúK¬yø† ÿ­ÒFI*UwÕ0ñ˜Ý¡›¼ì&ÇŸi{Ó¿í-Ù¶{°–;û/¯kÚŒ’T;*‡d¶»l¬ÄnÞ|¿ŸõRß—\ïcnlèkö¸êXí®ÿ·ëhé%J®Ú#ªú­ÇK›Í2'èï­ÐöqùȈvÑ]°Lµíú67G ðwý÷è(2ËñUñ®•Ú4þK›ù–Õÿàiyªû§I$‘KÿÐõU[3Ö¶·ccZhºÆ˜½¡®5ô»-­ÎÿF×µËuºÃ$4“‚…–´¹ãô¶Ïï¯fÖÛìCÁ+Èô†Í€jf ™îLî܊ܺ2ßû2Y¶ÓàíBã§ñˆr™²a”Æ_nF–#ôzñC‚~¦ÈǼÛ[¸pø)¬Ä7f Ÿé°¹öýz‘ðT±\óYe’l¨–8žñô_§úFmz2Ÿ?Î`5<À8¸áþ$ý+L#ÔØÌgç4†¨udÐÜÓC]îÈa¹Œ>5ì®ïüùOþ€©çzudtüÇèqò«h?ød;§ÿŸ–ůðïŽóY9œXsðÎ$1ñpðÏŠ~˜ü¾ŸúŒSÅ$iZ¿ÿÒôì7‡Ôç7Vѯ•iÿ©G@ÃcYSšÝ©iûì{ÿH£ 6,¬ý­Í¢¹÷8ºÀÞûCKïì¾ÆžµU¥Xõ1®¹¯s7F»\×;lþîêØ²þ;Ëû¼”äËëG÷k†ó}L¸MOÌc1ÎÉ£­ÝC^çYVÂEŽôjm~ÝßÍ?í&úêÿ·ÿÂ-•ÓÚs:–0Ðzâö6ôn­Ž{·?éïËf_Ðýø/ð[ˆÔfzáÃÇý°Pç¸áŒ~¯ˆÀꪬW“Kv°¾‚7RA°7sñ-;ª®Ë)c*¿/óЙùåÙ¯£Å´ƒ:ë,ý3½®ªšXÚÝ]÷Üû?Y®ŸCÒFɲªz~WM˱ÌýÙCÜæ‡Y[šZÏEÎö¾ê·z~ŸóVYüúv`Üìúëuxm{ûœG¾°Öþ­P­ûÛï­´ÚÛ*ô¾Éú)â@šâ#’]pÿÝO×ýô%êä2¼L‚÷ÖjÊ ng'Ö{pý7·ó«·í,ýÏ眭h,^»–÷çtî”Ê]`ÈɪÛ^%»[K[˜óìvÛpLÏô˺¥´¡É1ã½åÅ!þÏôçû‰”‡76ïw±Ì­Á‘æÆ=Óü¶¶¿ûmW¯Ôveäéµµ±§¾ï{ß?Ù²¥aG=þ‘ÿ¢“û•>¯[_ÓoÝ?£ÖÆžêœÛêÿÁ+j¸©õ‹_M¿tûÚ+hI}„SSµeRò—÷œ;ûªïÆËå>OÿÓôêIº&[c`ëµÍôýãúôØŽ|×mW"};4ÖF×f݈èÊAÌÇûN3ékˆ–8€v½§}Oƒû–5®FI)DJ&2$ Hð+¢èäQpº¦Ølý&žZ9ŽþSU¥]ØÙ5uZëM5fS[KÞú¹®ª¶Ÿ}¸¶þ—ý'¡öšéý5•­ ºl§!ÖÓ®è6WûÂ9gÑÙoþ«ÿ„®4ßUÀšÝ%¦Þí?ºöþk—åÇ._>H~Ü¥ŽcÃåÿÑ$ÛÜXØ£²ûlÆmÝ=µd—Áau…Œ-?žÛª«'óàÔ¨· cú™Ì¯ÆÉ°Wa²¶ùÞµ•c~oÒý­gH¬9ξîž^\çŒrÍ…Îw¨û= šò1ýG;vûW¿ÔLÞŽ×ÀÎÊ¿¨3Y®óX¬êé)ŧ›vÿ±鵊¾a¿i{Õû¿æQ«_¦cý³©_Ö\?@é¯ÁŤW]ùNmŽØÖä}ž¿²úlgêߦÿµkZËUn±æÑ%5¶ÕSwXàÑÀžç÷Z?9ßÉCc,¹âÛ†Ö·Zª<ƒûö/÷ùˆNFgˆéêÇh…À2ÇcÙ\Ùü儽úÌù³ÿßÑ¢¤’Œ›6¥*yÁ—dàa¸nõò˜ó`cNx±ßºß[š÷þýµ«Š¿Jåõ|œÖË™„ϱVéöïqnFvØúC ­ß™u7Ô´¾ ËœÜö-=8½/úŸÉÿŽð1ä5ã£ÿÔõ;Û+uoú/®‚Aƒ§-CÇ{È5ÚfÚŒ8ñ¸~m‘ü¿ú´d+kqp²³7LJùÿÉ~gþ‡Št©(Ukml‰ÃË]û®SE-lÆûZþà£v57A±¾á!¯µâD{,f׳û+RÖo­Íñ|Vzã¿ã‹›Žhè3Æì~þ?D¿æûmŒ2ô×d‹ƒHfCÛ¼5Â{nö±ÎoöÒm9Fü‡nqcZÑ?Ék›c›þ{ÑÒX¼GÃì‹-¢§šNæ‚ç‘Ç’ç‘áê?s¶ÿ!$$Iµ)$²riÅ¥×Þí¬l s‹œvW]u³sí¶×»ÓªªÛê[gèë÷¥™‚I4Ü” êY–cÖÊqC_Ÿ–ïK·Ii°Þ¥»=ßfÇ`õò]þ‰žÏÒúk[§`×…V%n/ôǾÇFç½ÄÙuöm†ú—ÜçÝgü#Õ.ÓòE¶u> 6åÞ6SF‡ìôHwÙ÷5Ïg¯sšÛsl«Øû=MV%­eÜüáßsÁëþ-K/õ?wø¥ýv¶IñÿÿÕõT’I%"¶§¹ÂʲÑHæþåùû?süúÞÌÉnñU£Ò´èÖ»‡Gú'þþ|ÿƒFQ{cKÐæžZá#ñB»"»2T/nÛ\t `f?Öf+šïì§gXÇ{¶·6y×-£OåYŒÆ.OýÎí÷lßøVOûÖÇ{µ¼’¦oë¼3¦?Yý6UµÓP‰ÑÞ“²òÿöMHt.§™´õ<óUP7âàM wm³9ÅÙŽoþû¹ËüžÊGþöSÃÿÇõŸóVœ±oÉOUc2nÎêÙj#Ù"Xü»èðéþU¿¤³þÓÕ}Ÿ£VºwEµ™C©u;FFh ©¿Ìc6½¸»ƒ_mÏk½;sný-ŸàkÄ¢Û1Ö†>† ǪK‹+hh.?JÇÇÓ±ÿŸc½ïG]/ÃþËòu!úÜÕ®YôÿeòôØgËÀvRI$´–?ÿÙ8BIM!Version compatibility infoUAdobe PhotoshopAdobe Photoshop 6.0’|’hgg : : :8BIMnormÿ)ð(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Background8BIMluni Background8BIMlnsrbgnd8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMfxrpfgÿÿ 2& &8BIMnormÿ(è(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿLayer 18BIMluniLayer 18BIMlnsrlayr8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMfxrpÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿ  "&&&&&&&&&%$$$$%%*..,,,,,,,,,,,.43.00.4:877576529>659:6222222265411.2255346773*//*//&'"&'"'"&%%!'.+- ""!"$$$&&&&&&"  ÿÿšÿÿÕÿñ½ÿšÿÿàÿöñÿöÈÿšÿÿèÿùÛÿùÐÿšÿÿîÿûËÿûÖÿšÿÿóÿü¿ÿüÛÿšÿÿøÿüµÿüàÿšÿÿüÿý«ÿýäÿšÿÿÿÿþ£ÿþçÿšÿ‚ÿÿÿþêÿšÿ…ÿþÿ˜ÿþíÿšÿˆÿþýÿ•ÿþðÿšÿ‹ÿþúÿ’ÿþóÿšÿÿÿ÷ÿÿÿõÿšÿÿÿõÿÿÿ÷ÿšÿ’ÿþóÿ‹ÿþúÿšÿ”ÿÿðÿˆÿÿüÿšÿ–ÿÿîÿ†ÿÿþÿšÿ™ÿþìÿ„ÿþšÿ›ÿÿéÿÿÿœÿÿÿçÿÿÿÿÿžÿŸÿÿåÿÿýÿÿ ÿ¡ÿÿãÿÿûÿÿ¢ÿ£ÿÿáÿÿùÿÿ¤ÿ¥ÿÿßÿÿ÷ÿÿ¦ÿ¦ÿÝÿÿõÿ§ÿ¨ÿÿÜÿÿôÿÿ©ÿªÿÿÚÿÿòÿÿ«ÿ«ÿØÿÿðÿ¬ÿ­ÿÿ×ÿÿïÿÿ®ÿ®ÿÕÿÿíÿ¯ÿ°ÿÿÔÿÿìÿÿ±ÿ²ÿÿÒÿÿêÿÿ³ÿ³ÿÐÿÿèÿ´ÿµÿÿÏÿÿçÿÿ¶ÿ¶ÿÍÿÿåÿ·ÿ·ÿÌÿÿäÿ¸ÿ¹ÿÿËÿÿãÿÿºÿºÿÉÿÿáÿ»ÿ»ÿÈÿÿàÿ¼ÿ½ÿÿÇÿÿßÿÿ¾ÿ¾ÿÅÿÿÝÿ¿ÿ¿ÿÄÿÿÜÿÀÿÀÿÃÿÿÛÿÁÿÁÿÂÿÿÚÿÂÿÂÿÁÿÿÙÿÃÿÃÿÀÿÿØÿÄÿÄÿ¿ÿÿ×ÿÅÿÅÿ¾ÿÿÖÿÆÿÆÿ½ÿÿÕÿÇÿÇÿ¼ÿÿÔÿÈÿÈÿ»ÿÿÓÿÉÿÉÿºÿÿÒÿÊÿÊÿ¹ÿÿÑÿËÿËÿ¸ÿÿÐÿÌÿÌÿ·ÿÿÏÿÍÿÍÿ¶ÿÿÎÿÎÿÎÿµÿÿÍÿÏÿÒÿý´ÿÿÌÿÐÿÒÿþ³ÿÿËÿÑÿÒÿþ³ÿÿÊÿÒÿÒÿ±ÿÿÉÿÓÿÓÿ°ÿÿÈÿÔÿÔÿ¯ÿÿÇÿÕÿÕÿ®ÿÿÆÿÖÿÖÿ­ÿÿÅÿ×ÿ×ÿ¬ÿÿÅÿ×ÿ×ÿ¬ÿÿÄÿØÿØÿ«ÿÿÃÿÙÿÙÿªÿÿÂÿÚÿÚÿ©ÿÿÂÿÚÿÚÿ©ÿÿÁÿÛÿÛÿ¨ÿÿÀÿÜÿÜÿ§ÿÿ¿ÿÝÿÝÿ¦ÿÿ¿ÿÝÿÝÿ¦ÿÿ¾ÿÞÿÞÿ¥ÿÿ½ÿßÿßÿ¤ÿÿ¼ÿàÿßÿ¤ÿÿ¼ÿàÿàÿ£ÿÿ»ÿáÿàÿ£ÿÿ»ÿáÿáÿ¢ÿÿºÿâÿâÿ¡ÿÿ¹ÿãÿâÿ¡ÿÿ¹ÿãÿãÿ ÿÿ¸ÿäÿäÿŸÿÿ·ÿåÿäÿŸÿÿ·ÿåÿåÿžÿÿ¶ÿæÿåÿžÿÿ¶ÿæÿæÿÿÑÿù€¹ÿµÿçÿçÿœÿÙÿù€ùÿù€Áÿµÿçÿçÿœÿàÿú€éÿú€Èÿ´ÿèÿèÿ›ÿåÿü€Ûÿü€Íÿ´ÿèÿèÿ›ÿèÿþ€Ñÿþ€Ðÿ³ÿéÿéÿšÿêÿÿ€Ëÿÿ€Òÿ³ÿéÿéÿšÿíÿþ€Çÿþ€Õÿ²ÿêÿêÿ™ÿïÿÿ€Áÿÿ€×ÿ²ÿêÿêÿ™ÿñÿÿ€½ÿÿ€Ùÿ±ÿëÿëÿ˜ÿôÿþ€¹ÿþ€Üÿ±ÿëÿëÿ˜ÿöÿÿ€³ÿÿ€Þÿ°ÿìÿìÿ—ÿøÿÿ€¯ÿÿ€àÿ°ÿìÿìÿ—ÿúÿÿ€«ÿÿ€âÿ¯ÿíÿíÿ–ÿüÿÿ€§ÿÿ€äÿ¯ÿíÿíÿ–ÿýÿ€£ÿ€åÿ®ÿîÿíÿ–ÿÿÿÿ€¡ÿÿ€çÿ®ÿîÿîÿ•ÿÿ€ÿ€èÿ­ÿïÿîÿ•ÿ€›ÿ€éÿ­ÿïÿïÿ–ÿÿ€™ÿÿ€ëÿ¬ÿðÿïÿ—ÿ€ÿÿ—ÿ€ìÿ¬ÿðÿðÿ—ÿ€þÿ–ÿ€íÿ«ÿñÿðÿ˜ÿ€ýÿ•ÿ€îÿ«ÿñÿðÿ™ÿ€üÿ”ÿ€ïÿ«ÿñÿñÿšÿÿ€ûÿ“ÿÿ€ñÿªÿòÿñÿ›ÿ€ùÿ‘ÿ€òÿªÿòÿòÿ›ÿ€øÿÿ€óÿ©ÿóÿòÿœÿ€÷ÿÿ€ôÿ©ÿóÿóÿœÿ€öÿÔÿóÉÿ€õÿ¨ÿôÿóÿÿ€õÿØÿýóÿýÌÿ€öÿ¨ÿôÿóÿžÿ€ôÿÛÿþëÿþÏÿ€öÿ¨ÿôÿôÿÿ€ôÿÝÿÿåÿÿÐÿ€÷ÿ§ÿõÿôÿžÿ€óÿßÿÿöÿ÷öÿÿÑÿ€øÿ§ÿõÿôÿŸÿ€òÿàÿùÿü÷ÿüùÿÑÿ€ùÿ§ÿõÿõÿŸÿ€ñÿãÿþûÿþíÿþûÿþÓÿ€úÿ¦ÿöÿõÿ ÿ€ðÿäÿÿûÿÿçÿÿûÿÿÓÿ€ûÿ§ÿÿöÿõÿ¡ÿ€ïÿåÿûÿÿãÿÿûÿÔÿ€ûÿ¦ÿÿ÷ÿöÿ ÿ€ïÿæÿÿýÿÿßÿÿýÿÿÔÿ€üÿ¦ÿÿ÷ÿöÿ¡ÿ€îÿçÿýÿþÝÿþýÿÔÿ€ýÿ¦ÿÿ÷ÿöÿ¢ÿ€íÿèÿýÿÿÙÿÿýÿÔÿ€þÿ¥ÿÿøÿ÷ÿ¢ÿ€ìÿéÿýÿÕÿýÿÔÿ€ÿÿ¥ÿÿøÿ÷ÿ¢ÿ€ìÿêÿýÿÓÿýÿÕÿ€ÿÿ¥ÿÿøÿ÷ÿ£ÿ€ëÿëÿýÿÑÿýÿÕÿ€ÿ¥ÿÿøÿøÿ£ÿ€êÿìÿþÿÿÏÿÿþÿÕÿ€¤ÿÿùÿøÿ£ÿ€êÿíÿÿþÿÍÿþÿÿÖÿ€¤ÿÿùÿøÿ¤ÿ€éÿîÿýÿËÿýÿÖÿ€¥ÿÿùÿøÿ¤ÿ€éÿîÿÿÿÉÿÿÿÿÖÿ€¥ÿÿùÿùÿ¤ÿ€èÿïÿþÿÇÿþÿ×ÿÿ€¥ÿÿúÿùÿ¤ÿ€èÿðÿþÿÅÿþÿØÿÿ€¥ÿÿúÿùÿ¥ÿ€çÿðÿÿÿæÿûæÿÿÿÿØÿÿÿ€¦ÿÿúÿùÿ¥ÿ€çÿñÿþÿèÿýýÿýèÿþÿÙÿÿÿ€¦ÿÿúÿùÿ¦ÿ€æÿòÿÿÿéÿþ÷ÿþéÿÿÿÚÿþÿ€¦ÿÿûÿúÿ¥ÿ€æÿòÿÿÿéÿÿóÿÿéÿÿÿÚÿþÿ€¦ÿÿûÿúÿ¥ÿ€æÿóÿÿÿéÿÿñÿÿéÿÿÿÛÿþÿ€¦ÿÿûÿúÿ¦ÿ€åÿóÿÿÿêÿÿïÿÿêÿÿÿÛÿýÿ€§ÿÿûÿúÿ¦ÿ€åÿôÿÿÿéÿíÿéÿÿÿÜÿýÿ€§ÿÿûÿúÿ§ÿ€äÿôÿÿÿêÿëÿêÿÿÿÜÿüÿ€§ÿÿüÿûÿ¦ÿ€äÿõÿÿÿêÿÿëÿÿêÿÿÿÝÿüÿ€§ÿÿüÿûÿ§ÿ€ãÿõÿÿÿêÿéÿêÿÿÿÝÿûÿ€¨ÿÿüÿûÿ§ÿ€ãÿöÿÿÿéÿéÿéÿÿÿÞÿûÿ€¨ÿÿüÿûÿ§ÿ€ãÿöÿÿÿêÿçÿêÿÿÿÞÿûÿ€¨ÿÿüÿûÿ¨ÿ€âÿ÷ÿÿÿéÿçÿéÿÿßÿúÿ€¨ÿÿýÿûÿ¨ÿ€âÿ÷ÿÿÿéÿçÿéÿÿÿßÿúÿ€¨ÿÿýÿüÿ¨ÿ€áÿ÷ÿÿòÿüüÿçÿèÿÿßÿúÿ€¨ÿÿýÿüÿ¨ÿ€áÿøÿÿÿôÿþþÿÿþÿÿçÿÿéÿÿÿàÿùÿ€©ÿÿýÿüÿ¨ÿ€áÿøÿÿÿôÿúÿÿÿåÿéÿÿÿàÿùÿ€©ÿÿýÿüÿ©ÿ€àÿøÿÿôÿøÿþåÿèÿÿàÿøÿ€©ÿÿþÿüÿ©ÿ€àÿùÿÿÿôÿ÷ÿÿåÿèÿÿÿáÿøÿ€©ÿÿþÿüÿ©ÿ€àÿùÿÿÿõÿÿöÿÿçÿÿèÿÿÿáÿøÿ€©ÿÿþÿüÿ©ÿ€àÿùÿÿôÿôÿçÿæÿÿáÿøÿ€©ÿÿþÿüÿ©ÿ€àÿúÿÿÿôÿôÿÿèÿþÿûïÿÿÿâÿøÿ€©ÿÿþÿýÿ©ÿ€ßÿúÿÿÿôÿôÿÿéÿÿÿýÿÿðÿÿÿâÿ÷ÿ€ªÿÿþÿýÿ©ÿ€ßÿúÿÿóÿôÿÿêÿÿûÿïÿÿâÿ÷ÿ€ªÿÿþÿýÿ©ÿ€ßÿúÿÿôÿÿóÿÿëÿÿúÿïÿÿâÿ÷ÿ€©ÿÿÿÿýÿ©ÿ€ßÿúÿÿôÿòÿÿìÿÿùÿÿðÿÿâÿ÷ÿ€©ÿÿÿÿýÿ©ÿ€ßÿúÿÿôÿòÿÿÿíÿþ÷ÿðÿÿâÿ÷ÿ€©ÿÿÿÿýÿ©ÿ€ßÿûÿÿÿôÿñÿÿÿîÿþ÷ÿðÿÿÿãÿ÷ÿ€©ÿÿÿÿýÿ©ÿ€ßÿûÿÿóÿðÿÿïÿÿöÿïÿÿãÿ÷ÿ€©ÿÿÿÿýÿªÿ€Þÿûÿÿòÿñÿÿÿñÿþõÿïÿÿãÿ÷ÿ€©ÿÿÿÿýÿªÿ€Þÿûÿÿòÿðÿþòÿýõÿïÿÿãÿöÿ€ªÿÿÿÿýÿªÿ€Þÿûÿÿòÿïÿþþÿûýÿÿÿôÿïÿÿãÿöÿ€ªÿÿÿÿýÿªÿ€Þÿûÿÿòÿîÿþÿÿýÿÿÿþÿÿôÿïÿÿãÿöÿ€ªÿÿÿÿþÿ©ÿ€Þÿûÿÿòÿíÿüýÿýþÿôÿÿïÿÿãÿöÿ€ªÿÿÿÿþÿ©ÿ€Þÿüÿÿñÿìÿÿùüÿôÿíÿÿäÿöÿ€ªÿÿÿÿþÿ©ÿ€Þÿüÿÿñÿìÿÿÿýÿüÿóÿíÿÿäÿöÿ€ªÿÿÿÿþÿ©ÿ€Þÿüÿÿñÿÿíÿÿÿÿÿüÿóÿíÿÿäÿöÿ€ªÿÿÿÿþÿªÿ€Ýÿüÿÿðÿìÿÿÿýûÿóÿíÿÿäÿõÿ€«ÿÿÿÿþÿªÿ€Ýÿüÿÿðÿìÿöÿòÿíÿÿäÿõÿ€«ÿÿÿÿþÿªÿ€Ýÿüÿÿðÿìÿÿ÷ÿóÿìÿÿäÿõÿ€«ÿÿÿÿþÿªÿ€Ýÿüÿÿðÿëÿ÷ÿóÿìÿÿäÿõÿ€«ÿÿÿÿþÿªÿ€Ýÿüÿÿïÿìÿøÿÿóÿìÿÿäÿõÿ€«ÿÿÿÿþÿªÿ€Ýÿüÿÿïÿìÿøÿóÿÿìÿÿäÿõÿ€«ÿÿÿÿþÿªÿ€Ýÿüÿÿïÿìÿÿùÿóÿëÿÿäÿõÿ€«ÿÿÿÿþÿªÿ€Ýÿüÿÿîÿìÿüýÿóÿëÿÿäÿöÿ€ªÿÿÿÿþÿ©ÿ€Þÿüÿÿîÿìÿÿÿÿÿÿÿÿôÿÿëÿÿäÿöÿ€ªÿÿÿÿþÿ©ÿ€Þÿüÿÿîÿìÿýÿÿÿóÿêÿÿäÿöÿ€ªÿÿÿÿþÿ©ÿ€Þÿüÿÿîÿÿîÿÿüÿÿóÿêÿÿäÿöÿ€ªÿÿÿÿþÿ©ÿ€Þÿûÿÿíÿîÿþþÿÿÿôÿÿêÿÿãÿöÿ€ªÿÿÿÿýÿªÿ€Þÿûÿÿíÿÿîÿÿþÿÿÿôÿéÿÿãÿöÿ€ªÿÿÿÿýÿªÿ€Þÿûÿÿìÿîÿûÿÿõÿÿéÿÿãÿöÿ€ªÿÿÿÿýÿªÿ€Þÿûÿÿíÿíÿûÿõÿéÿÿãÿöÿ€ªÿÿÿÿýÿªÿ€Þÿûÿÿìÿîÿûÿöÿÿéÿÿãÿ÷ÿ€©ÿÿÿÿýÿ©ÿ€ßÿûÿÿìÿîÿûÿ÷ÿÿëÿÿÿÿãÿ÷ÿ€©ÿÿÿÿýÿ©ÿ€ßÿûÿÿëÿïÿûÿ÷ÿëÿþÿÿãÿ÷ÿ€©ÿÿÿÿýÿ©ÿ€ßÿúÿÿëÿïÿûÿøÿÿëÿÿÿâÿ÷ÿ€©ÿÿÿÿýÿ©ÿ€ßÿúÿÿêÿðÿûÿøÿëÿÿÿÿâÿ÷ÿ€©ÿÿÿÿýÿ©ÿ€ßÿúÿÿëÿÿñÿûÿùÿêÿÿÿÿâÿ÷ÿ€©ÿÿÿÿýÿ©ÿ€ßÿúÿÿêÿñÿúÿûÿÿëÿÿÿÿÿÿâÿ÷ÿ€©ÿÿÿÿýÿ©ÿ€ßÿúÿÿêÿÿòÿúÿÿþÿÿéÿþÿÿÿâÿ÷ÿ€©ÿÿÿÿüÿ©ÿ€àÿúÿÿéÿÿôÿÿùÿüéÿÿþÿÿÿâÿøÿ€©ÿþÿÿüÿ©ÿ€àÿùÿÿèÿÿõÿÛÿþÿýáÿøÿ€©ÿþÿÿüÿ©ÿ€àÿùÿÿèÿõÿÛÿþÿÿÿáÿøÿ€©ÿÿþÿüÿ©ÿ€àÿùÿÿçÿöÿÜÿÿþÿÿÿáÿøÿ€©ÿÿþÿüÿ©ÿ€àÿøÿÿæÿÿùÿÛÿýÿþàÿøÿ€©ÿÿþÿüÿ¨ÿ€áÿøÿÿæÿÿûÿÿÛÿþÿÿÿàÿùÿ€¨ÿÿþÿüÿ¨ÿ€áÿøÿÿåÿþþÿÿÛÿÿþÿÿÿàÿùÿ€¨ÿÿþÿüÿ¨ÿ€áÿ÷ÿþäÿüÚÿýÿþßÿúÿ€¨ÿÿýÿûÿ¨ÿ€âÿ÷ÿÿ¸ÿþÿÿÿßÿúÿ€¨ÿÿýÿûÿ¨ÿ€âÿ÷ÿþ¹ÿÿþÿýßÿúÿ€¨ÿÿýÿûÿ§ÿ€ãÿöÿÿºÿýÿÿÞÿûÿ€§ÿÿýÿûÿ§ÿ€ãÿöÿÿºÿþÿÿÿÞÿûÿ€§ÿÿýÿûÿ§ÿ€ãÿõÿÿºÿþÿþÝÿûÿ€¨ÿÿüÿûÿ¦ÿ€äÿõÿÿ¼ÿÿÿÿÿÿÝÿüÿ€§ÿÿüÿúÿ§ÿ€äÿôÿÿ¼ÿþÿþÜÿüÿ€§ÿÿüÿúÿ¦ÿ€åÿôÿÿ½ÿþÿÿÜÿýÿ€¦ÿÿüÿúÿ¦ÿ€åÿóÿÿ¾ÿÿÿÿÛÿýÿ€¦ÿÿüÿúÿ¥ÿ€æÿóÿÿ¾ÿÿÿÛÿþÿ€¦ÿÿûÿúÿ¥ÿ€æÿòÿÿ¾ÿÿþÚÿþÿ€¦ÿÿûÿùÿ¦ÿ€æÿòÿþ¿ÿüÚÿþÿ€¦ÿÿûÿùÿ¥ÿ€çÿñÿÿéÿòçÿÿÿÙÿÿÿ€¥ÿÿûÿùÿ¥ÿ€çÿðÿÿéÿüÿÿÿÿÿÿÿæÿÿØÿÿÿ€¦ÿÿúÿùÿ¤ÿ€èÿðÿÿëÿþÿöèÿÿÿØÿÿ€¥ÿÿúÿùÿ¤ÿ€èÿïÿÿéÿþþÿÿÿÿÿçÿÿ×ÿÿ€¥ÿÿúÿøÿ¤ÿ€éÿîÿÿÅÿÿÖÿ€¤ÿÿúÿøÿ¤ÿ€éÿîÿÿÇÿÿÿÖÿ€¥ÿÿùÿøÿ£ÿ€êÿíÿþÇÿþÖÿ€¤ÿÿùÿøÿ£ÿ€êÿìÿÿËÿÿÿÕÿ€¤ÿÿùÿ÷ÿ£ÿ€ëÿëÿÿËÿÿÕÿ€ÿ¤ÿÿùÿ÷ÿ¢ÿ€ìÿêÿÿÍÿÿÕÿ€ÿÿ¥ÿÿøÿ÷ÿ¢ÿ€ìÿéÿÿÑÿÿÿÔÿ€ÿÿ¥ÿÿøÿöÿ¢ÿ€íÿèÿÿÓÿÿÿÔÿ€þÿ¥ÿÿøÿöÿ¡ÿ€îÿçÿÿÿÕÿÿÿÔÿ€ýÿ¦ÿÿ÷ÿöÿ ÿ€ïÿæÿý×ÿýÔÿ€üÿ¦ÿÿ÷ÿõÿ¡ÿ€ïÿåÿÿÿÛÿÿÿÿÔÿ€ûÿ¦ÿÿ÷ÿõÿ ÿ€ðÿäÿÿÿÿÝÿÿÿÓÿ€ûÿ§ÿÿöÿõÿŸÿ€ñÿãÿþÿáÿÿÿþÓÿ€úÿ§ÿÿöÿôÿŸÿ€òÿàÿÿÿåÿÿÿÿÑÿ€ùÿ§ÿÿöÿôÿžÿ€óÿßÿÿÿÿþëÿþÿÿÿÑÿ€øÿ¨ÿÿõÿôÿÿ€ôÿÝÿÿþÿþñÿþþÿÿÐÿ€÷ÿ¨ÿÿõÿóÿžÿ€ôÿÛÿþþÿñþÿþÏÿ€öÿ¨ÿÿõÿóÿÿ€õÿØÿýóÿýÌÿ€öÿ©ÿÿôÿóÿœÿ€öÿÔÿóÉÿ€õÿ©ÿÿôÿòÿœÿ€÷ÿÿ€ôÿ©ÿÿôÿòÿ›ÿ€øÿÿ€óÿªÿÿóÿñÿ›ÿÿ€úÿ’ÿÿ€òÿªÿÿóÿñÿ™ÿ€ûÿ“ÿ€ðÿªÿÿóÿðÿ™ÿ€üÿ”ÿ€ïÿ«ÿÿòÿðÿ˜ÿ€ýÿ•ÿ€îÿ«ÿÿòÿðÿ—ÿ€þÿ–ÿ€íÿ«ÿÿòÿïÿ—ÿÿ€ÿ˜ÿÿ€ìÿ¬ÿÿñÿïÿ•ÿ€™ÿ€êÿ¬ÿÿñÿîÿ•ÿ€›ÿ€éÿ­ÿÿðÿîÿ•ÿÿ€ÿ€èÿ­ÿÿðÿíÿ–ÿÿÿÿ€¡ÿÿ€çÿ®ÿÿïÿíÿ–ÿýÿ€£ÿ€åÿ®ÿÿïÿíÿ–ÿüÿÿ€§ÿÿ€äÿ¯ÿþïÿìÿ—ÿúÿÿ€«ÿÿ€âÿ¯ÿÿîÿìÿ—ÿøÿÿ€¯ÿÿ€àÿ°ÿþîÿëÿ˜ÿöÿÿ€³ÿÿ€Þÿ°ÿÿíÿëÿ˜ÿôÿþ€¹ÿþ€Üÿ±ÿþíÿêÿ™ÿñÿÿ€½ÿÿ€Ùÿ±ÿÿìÿêÿ™ÿïÿÿ€Áÿÿ€×ÿ²ÿþìÿéÿšÿíÿþ€Çÿþ€Õÿ²ÿÿëÿéÿšÿêÿþ€Íÿþ€Òÿ³ÿþëÿèÿ›ÿçÿÿ€Ñÿÿ€Ïÿ³ÿÿêÿèÿ›ÿåÿü€Ûÿü€Íÿ´ÿþêÿçÿœÿàÿù€ëÿù€Èÿ´ÿÿéÿçÿœÿØÿú€úÿù€ÀÿµÿÿèÿæÿÿÑÿú€¸ÿ¶ÿþèÿåÿžÿÿ¶ÿÿçÿåÿžÿÿ·ÿÿæÿäÿŸÿÿ·ÿÿæÿäÿŸÿÿ¸ÿÿåÿãÿ ÿÿ¹ÿþåÿâÿ¡ÿÿ¹ÿÿäÿâÿ¡ÿÿºÿÿãÿáÿ¢ÿÿ»ÿþãÿàÿ£ÿÿ»ÿÿâÿàÿ£ÿÿ¼ÿÿáÿßÿ¤ÿÿ½ÿþáÿßÿ¤ÿÿ¾ÿþàÿÞÿ¥ÿÿ¾ÿÿßÿÝÿ¦ÿÿ¿ÿÿÞÿÝÿ¦ÿÿÀÿþÞÿÜÿ§ÿÿÀÿÿÝÿÛÿ¨ÿÿÁÿÿÜÿÚÿ©ÿÿÂÿþÜÿÚÿ©ÿÿÃÿþÛÿÙÿªÿÿÃÿÿÚÿØÿ«ÿÿÄÿÿÙÿ×ÿ¬ÿÿÅÿþÙÿ×ÿ¬ÿÿÆÿþØÿÖÿ­ÿÿÆÿÿ×ÿÕÿ®ÿÿÇÿÿÖÿÔÿ¯ÿÿÈÿþÖÿÓÿ°ÿÿÉÿþÕÿÒÿ±ÿÿÉÿÿÔÿÑÿ²ÿÿÊÿÿÓÿÐÿ³ÿÿËÿþÓÿÏÿ´ÿÿÌÿþÒÿÎÿµÿÿÍÿþÑÿÍÿ¶ÿÿÎÿþÐÿÌÿ·ÿÿÏÿþÏÿËÿ¸ÿÿÐÿþÎÿÊÿ¹ÿÿÑÿþÍÿÉÿºÿÿÒÿþÌÿÈÿ»ÿÿÓÿþËÿÇÿ¼ÿÿÔÿþÊÿÆÿ½ÿÿÕÿþÉÿÅÿ¾ÿÿÖÿþÈÿÄÿ¿ÿÿ×ÿþÇÿÃÿÀÿÿÙÿýÆÿÂÿÁÿÿÚÿýÅÿÁÿÂÿÿÛÿþÃÿÀÿÃÿÿÜÿþÂÿ¿ÿÄÿÿÝÿþÁÿ¾ÿÿÆÿÿßÿýÀÿ¼ÿÇÿÿàÿý¿ÿ»ÿÈÿÿáÿþ½ÿºÿÿÊÿÿãÿý¼ÿ¸ÿËÿÿäÿý»ÿ·ÿÌÿÿæÿý¹ÿ¶ÿÿÎÿÿçÿý¸ÿ´ÿÏÿÿéÿý¶ÿ³ÿÐÿÿêÿýµÿ²ÿÿÒÿÿìÿý³ÿ°ÿÿÔÿÿíÿý²ÿ®ÿÕÿÿïÿý°ÿ­ÿÿ×ÿÿñÿü¯ÿ«ÿØÿÿòÿý­ÿªÿÿÚÿÿôÿý«ÿ¨ÿÿÜÿÿöÿüªÿ¦ÿÿÞÿÿøÿü¨ÿ¤ÿÿàÿÿùÿý¦ÿ¢ÿÿâÿÿûÿý¤ÿ ÿÿäÿÿýÿü£ÿžÿÿæÿÿÿÿü¡ÿœÿÿèÿÿüŸÿšÿÿêÿƒÿÿþÿ˜ÿÿìÿ…ÿý›ÿ–ÿÿîÿ‡ÿüÿšÿ”ÿÿðÿ‰ÿüþÿšÿ’ÿþóÿŒÿûüÿšÿÿÿõÿÿúúÿšÿÿÿ÷ÿ‘ÿû÷ÿšÿ‹ÿþúÿ”ÿûôÿšÿˆÿþýÿ—ÿúòÿšÿ…ÿþÿ›ÿùïÿšÿ‚ÿÿ¡ÿøìÿšÿÿÿÿþ§ÿùèÿšÿÿüÿý¯ÿùäÿšÿÿøÿü¹ÿ÷áÿšÿÿóÿúÅÿöÝÿšÿÿòÿöÏÿöØÿšÿÿíÿôÞÿóÓÿšÿÿèÿÍÎÿšÿÿãÿÚÆÿšÿÿÿšÿÿÿšÿÿÿšÿ  "&&&&&&&&&%$$$$%%*..,,,,,,,,,,,.43.00.4:877576529>659:6222222265411.2255346775,//*//&'"&'"'"&%%!'.+- ""!"$$$&&&&&&"  ÿÿšÿÿÕÿñ€½ÿšÿÿàÿö€ñÿö€Èÿšÿÿèÿù€Ûÿù€Ðÿšÿÿîÿû€Ëÿû€Öÿšÿÿóÿü€¿ÿü€Ûÿšÿÿøÿü€µÿü€àÿšÿÿüÿý€«ÿý€äÿšÿÿÿÿþ€£ÿþ€çÿšÿ‚ÿ€ÿ€ÿþ€êÿšÿ…ÿþ€ÿ˜ÿþ€íÿšÿˆÿþ€ýÿ•ÿþ€ðÿšÿ‹ÿþ€úÿ’ÿþ€óÿšÿÿÿ€÷ÿÿÿ€õÿšÿÿÿ€õÿÿÿ€÷ÿšÿ’ÿþ€óÿ‹ÿþ€úÿšÿ”ÿÿ€ðÿˆÿÿ€üÿšÿ–ÿÿ€îÿ†ÿÿ€þÿšÿ™ÿþ€ìÿ„ÿþ€šÿ›ÿÿ€éÿÿÿ€œÿÿÿ€çÿÿÿÿÿ€žÿŸÿÿ€åÿÿýÿÿ€ ÿ¡ÿÿ€ãÿÿûÿÿ€¢ÿ£ÿÿ€áÿÿùÿÿ€¤ÿ¥ÿÿ€ßÿÿ÷ÿÿ€¦ÿ¦ÿ€Ýÿÿõÿ€§ÿ¨ÿÿ€Üÿÿôÿÿ€©ÿªÿÿ€Úÿÿòÿÿ€«ÿ«ÿ€Øÿÿðÿ€¬ÿ­ÿÿ€×ÿÿïÿÿ€®ÿ®ÿ€Õÿÿíÿ€¯ÿ°ÿÿ€Ôÿÿìÿÿ€±ÿ²ÿÿ€Òÿÿêÿÿ€³ÿ³ÿ€Ðÿÿèÿ€´ÿµÿÿ€Ïÿÿçÿÿ€¶ÿ¶ÿ€Íÿÿåÿ€·ÿ·ÿ€Ìÿÿäÿ€¸ÿ¹ÿÿ€Ëÿÿãÿÿ€ºÿºÿ€Éÿÿáÿ€»ÿ»ÿ€Èÿÿàÿ€¼ÿ½ÿÿ€Çÿÿßÿÿ€¾ÿ¾ÿ€ÅÿÿÝÿ€¿ÿ¿ÿ€ÄÿÿÜÿ€ÀÿÀÿ€ÃÿÿÛÿ€ÁÿÁÿ€ÂÿÿÚÿ€ÂÿÂÿ€ÁÿÿÙÿ€ÃÿÃÿ€ÀÿÿØÿ€ÄÿÄÿ€¿ÿÿ×ÿ€ÅÿÅÿ€¾ÿÿÖÿ€ÆÿÆÿ€½ÿÿÕÿ€ÇÿÇÿ€¼ÿÿÔÿ€ÈÿÈÿ€»ÿÿÓÿ€ÉÿÉÿ€ºÿÿÒÿ€ÊÿÊÿ€¹ÿÿÑÿ€ËÿËÿ€¸ÿÿÐÿ€ÌÿÌÿ€·ÿÿÏÿ€ÍÿÍÿ€¶ÿÿÎÿ€ÎÿÎÿ€µÿÿÍÿ€ÏÿÒÿþ€´ÿÿÌÿ€ÐÿÒÿþ³ÿÿËÿ€ÑÿÒÿþ³ÿÿÊÿ€ÒÿÒÿ€±ÿÿÉÿ€ÓÿÓÿ€°ÿÿÈÿ€ÔÿÔÿ€¯ÿÿÇÿ€ÕÿÕÿ€®ÿÿÆÿ€ÖÿÖÿ€­ÿÿÅÿ€×ÿ×ÿ€¬ÿÿÅÿ€×ÿ×ÿ€¬ÿÿÄÿ€ØÿØÿ€«ÿÿÃÿ€ÙÿÙÿ€ªÿÿÂÿ€ÚÿÚÿ€©ÿÿÂÿ€ÚÿÚÿ€©ÿÿÁÿ€ÛÿÛÿ€¨ÿÿÀÿ€ÜÿÜÿ€§ÿÿ¿ÿ€ÝÿÝÿ€¦ÿÿ¿ÿ€ÝÿÝÿ€¦ÿÿ¾ÿ€ÞÿÞÿ€¥ÿÿ½ÿ€ßÿßÿ€¤ÿÿ¼ÿ€àÿßÿ€¤ÿÿ¼ÿ€àÿàÿ€£ÿÿ»ÿ€áÿàÿ€£ÿÿ»ÿ€áÿáÿ€¢ÿÿºÿ€âÿâÿ€¡ÿÿ¹ÿ€ãÿâÿ€¡ÿÿ¹ÿ€ãÿãÿ€ ÿÿ¸ÿ€äÿäÿ€Ÿÿÿ·ÿ€åÿäÿ€Ÿÿÿ·ÿ€åÿåÿ€žÿÿ¶ÿ€æÿåÿ€žÿÿ¶ÿ€æÿæÿ€ÿÑÿù¹ÿµÿ€çÿçÿ€œÿÙÿùùÿùÁÿµÿ€çÿçÿ€œÿàÿúéÿúÈÿ´ÿ€èÿèÿ€›ÿåÿüÛÿüÍÿ´ÿ€èÿèÿ€›ÿèÿþÑÿþÐÿ³ÿ€éÿéÿ€šÿêÿÿËÿÿÒÿ³ÿ€éÿéÿ€šÿíÿþÇÿþÕÿ²ÿ€êÿêÿ€™ÿïÿÿÁÿÿ×ÿ²ÿ€êÿêÿ€™ÿñÿÿ½ÿÿÙÿ±ÿ€ëÿëÿ€˜ÿôÿþ¹ÿþÜÿ±ÿ€ëÿëÿ€˜ÿöÿÿ³ÿÿÞÿ°ÿ€ìÿìÿ€—ÿøÿÿ¯ÿÿàÿ°ÿ€ìÿìÿ€—ÿúÿÿ«ÿÿâÿ¯ÿ€íÿíÿ€–ÿüÿÿ§ÿÿäÿ¯ÿ€íÿíÿ€–ÿýÿ£ÿåÿ®ÿ€îÿíÿ€–ÿÿÿÿ¡ÿÿçÿ®ÿ€îÿîÿ€•ÿÿÿèÿ­ÿ€ïÿîÿ€•ÿ›ÿéÿ­ÿ€ïÿïÿ€–ÿÿ™ÿÿëÿ¬ÿ€ðÿïÿ€—ÿÿÿ—ÿìÿ¬ÿ€ðÿðÿ€—ÿþÿ–ÿíÿ«ÿ€ñÿðÿ€˜ÿýÿ•ÿîÿ«ÿ€ñÿðÿ€™ÿüÿ”ÿïÿ«ÿ€ñÿñÿ€šÿÿûÿ“ÿÿñÿªÿ€òÿñÿ€›ÿùÿ‘ÿòÿªÿ€òÿòÿ€›ÿøÿÿóÿ©ÿ€óÿòÿ€œÿ÷ÿÿôÿ©ÿ€óÿóÿ€œÿöÿÔÿóÉÿõÿ¨ÿ€ôÿóÿ€ÿõÿØÿýóÿýÌÿöÿ¨ÿ€ôÿóÿ€žÿôÿÛÿþëÿþÏÿöÿ¨ÿ€ôÿôÿ€ÿôÿÝÿÿåÿÿÐÿ÷ÿ§ÿ€õÿôÿ€žÿóÿßÿÿöÿ÷öÿÿÑÿøÿ§ÿ€õÿôÿ€Ÿÿòÿàÿùÿü÷ÿüùÿÑÿùÿ§ÿ€õÿõÿ€ŸÿñÿãÿþûÿþíÿþûÿþÓÿúÿ¦ÿ€öÿõÿ€ ÿðÿäÿÿûÿÿçÿÿûÿÿÓÿûÿ§ÿÿöÿõÿ€¡ÿïÿåÿûÿÿãÿÿûÿÔÿûÿ¦ÿÿ÷ÿöÿ€ ÿïÿæÿÿýÿÿßÿÿýÿÿÔÿüÿ¦ÿÿ÷ÿöÿ€¡ÿîÿçÿýÿþÝÿþýÿÔÿýÿ¦ÿÿ÷ÿöÿ€¢ÿíÿèÿýÿÿÙÿÿýÿÔÿþÿ¥ÿÿøÿ÷ÿ€¢ÿìÿéÿýÿÕÿýÿÔÿÿÿ¥ÿÿøÿ÷ÿ€¢ÿìÿêÿýÿÓÿýÿÕÿÿÿ¥ÿÿøÿ÷ÿ€£ÿëÿëÿýÿÑÿýÿÕÿÿ¥ÿÿøÿøÿ€£ÿêÿìÿþÿÿÏÿÿþÿÕÿ¤ÿÿùÿøÿ€£ÿêÿíÿÿþÿÍÿþÿÿÖÿ¤ÿÿùÿøÿ€¤ÿéÿîÿýÿËÿýÿÖÿ¥ÿÿùÿøÿ€¤ÿéÿîÿÿÿÉÿÿÿÿÖÿ¥ÿÿùÿùÿ€¤ÿèÿïÿþÿÇÿþÿ×ÿÿ¥ÿÿúÿùÿ€¤ÿèÿðÿþÿÅÿþÿØÿÿ¥ÿÿúÿùÿ€¥ÿçÿðÿÿÿæÿûæÿÿÿÿØÿÿÿ¦ÿÿúÿùÿ€¥ÿçÿñÿþÿèÿýýÿýèÿþÿÙÿÿÿ¦ÿÿúÿùÿ€¦ÿæÿòÿÿÿéÿþ÷ÿþéÿÿÿÚÿþÿ¦ÿÿûÿúÿ€¥ÿæÿòÿÿÿéÿÿóÿÿéÿÿÿÚÿþÿ¦ÿÿûÿúÿ€¥ÿæÿóÿÿÿéÿÿñÿÿéÿÿÿÛÿþÿ¦ÿÿûÿúÿ€¦ÿåÿóÿÿÿêÿÿïÿÿêÿÿÿÛÿýÿ§ÿÿûÿúÿ€¦ÿåÿôÿÿÿéÿíÿéÿÿÿÜÿýÿ§ÿÿûÿúÿ€§ÿäÿôÿÿÿêÿëÿêÿÿÿÜÿüÿ§ÿÿüÿûÿ€¦ÿäÿõÿÿÿêÿÿëÿÿêÿÿÿÝÿüÿ§ÿÿüÿûÿ€§ÿãÿõÿÿÿêÿéÿêÿÿÿÝÿûÿ¨ÿÿüÿûÿ€§ÿãÿöÿÿÿéÿéÿéÿÿÿÞÿûÿ¨ÿÿüÿûÿ€§ÿãÿöÿÿÿêÿçÿêÿÿÿÞÿûÿ¨ÿÿüÿûÿ€¨ÿâÿ÷ÿÿÿéÿçÿéÿÿßÿúÿ¨ÿÿýÿûÿ€¨ÿâÿ÷ÿÿÿéÿçÿéÿÿÿßÿúÿ¨ÿÿýÿüÿ€¨ÿáÿ÷ÿÿòÿüüÿçÿèÿÿßÿúÿ¨ÿÿýÿüÿ€¨ÿáÿøÿÿÿôÿþþÿÿþÿÿçÿÿéÿÿÿàÿùÿ©ÿÿýÿüÿ€¨ÿáÿøÿÿÿôÿúÿÿÿåÿéÿÿÿàÿùÿ©ÿÿýÿüÿ€©ÿàÿøÿÿôÿøÿþåÿèÿÿàÿøÿ©ÿÿþÿüÿ€©ÿàÿùÿÿÿôÿ÷ÿÿåÿèÿÿÿáÿøÿ©ÿÿþÿüÿ€©ÿàÿùÿÿÿõÿÿöÿÿçÿÿèÿÿÿáÿøÿ©ÿÿþÿüÿ€©ÿàÿùÿÿôÿôÿçÿæÿÿáÿøÿ©ÿÿþÿüÿ€©ÿàÿúÿÿÿôÿôÿÿèÿþÿûïÿÿÿâÿøÿ©ÿÿþÿýÿ€©ÿßÿúÿÿÿôÿôÿÿéÿÿÿýÿÿðÿÿÿâÿ÷ÿªÿÿþÿýÿ€©ÿßÿúÿÿóÿôÿÿêÿÿûÿïÿÿâÿ÷ÿªÿÿþÿýÿ€©ÿßÿúÿÿôÿÿóÿÿëÿÿúÿïÿÿâÿ÷ÿ©ÿÿÿÿýÿ€©ÿßÿúÿÿôÿòÿÿìÿÿùÿÿðÿÿâÿ÷ÿ©ÿÿÿÿýÿ€©ÿßÿúÿÿôÿòÿÿÿíÿþ÷ÿðÿÿâÿ÷ÿ©ÿÿÿÿýÿ€©ÿßÿûÿÿÿôÿñÿÿÿîÿþ÷ÿðÿÿÿãÿ÷ÿ©ÿÿÿÿýÿ€©ÿßÿûÿÿóÿðÿÿïÿÿöÿïÿÿãÿ÷ÿ©ÿÿÿÿýÿ€ªÿÞÿûÿÿòÿñÿÿÿñÿþõÿïÿÿãÿ÷ÿ©ÿÿÿÿýÿ€ªÿÞÿûÿÿòÿðÿþòÿýõÿïÿÿãÿöÿªÿÿÿÿýÿ€ªÿÞÿûÿÿòÿïÿþþÿûýÿÿÿôÿïÿÿãÿöÿªÿÿÿÿýÿ€ªÿÞÿûÿÿòÿîÿþÿÿýÿÿÿþÿÿôÿïÿÿãÿöÿªÿÿÿÿþÿ€©ÿÞÿûÿÿòÿíÿüýÿýþÿôÿÿïÿÿãÿöÿªÿÿÿÿþÿ€©ÿÞÿüÿÿñÿìÿÿùüÿôÿíÿÿäÿöÿªÿÿÿÿþÿ€©ÿÞÿüÿÿñÿìÿÿÿýÿüÿóÿíÿÿäÿöÿªÿÿÿÿþÿ€©ÿÞÿüÿÿñÿÿíÿÿÿÿÿüÿóÿíÿÿäÿöÿªÿÿÿÿþÿ€ªÿÝÿüÿÿðÿìÿÿÿýûÿóÿíÿÿäÿõÿ«ÿÿÿÿþÿ€ªÿÝÿüÿÿðÿìÿöÿòÿíÿÿäÿõÿ«ÿÿÿÿþÿ€ªÿÝÿüÿÿðÿìÿÿ÷ÿóÿìÿÿäÿõÿ«ÿÿÿÿþÿ€ªÿÝÿüÿÿðÿëÿ÷ÿóÿìÿÿäÿõÿ«ÿÿÿÿþÿ€ªÿÝÿüÿÿïÿìÿøÿÿóÿìÿÿäÿõÿ«ÿÿÿÿþÿ€ªÿÝÿüÿÿïÿìÿøÿóÿÿìÿÿäÿõÿ«ÿÿÿÿþÿ€ªÿÝÿüÿÿïÿìÿÿùÿóÿëÿÿäÿõÿ«ÿÿÿÿþÿ€ªÿÝÿüÿÿîÿìÿüýÿóÿëÿÿäÿöÿªÿÿÿÿþÿ€©ÿÞÿüÿÿîÿìÿÿÿÿÿÿÿÿôÿÿëÿÿäÿöÿªÿÿÿÿþÿ€©ÿÞÿüÿÿîÿìÿýÿÿÿóÿêÿÿäÿöÿªÿÿÿÿþÿ€©ÿÞÿüÿÿîÿÿîÿÿüÿÿóÿêÿÿäÿöÿªÿÿÿÿþÿ€©ÿÞÿûÿÿíÿîÿþþÿÿÿôÿÿêÿÿãÿöÿªÿÿÿÿýÿ€ªÿÞÿûÿÿíÿÿîÿÿþÿÿÿôÿéÿÿãÿöÿªÿÿÿÿýÿ€ªÿÞÿûÿÿìÿîÿûÿÿõÿÿéÿÿãÿöÿªÿÿÿÿýÿ€ªÿÞÿûÿÿíÿíÿûÿõÿéÿÿãÿöÿªÿÿÿÿýÿ€ªÿÞÿûÿÿìÿîÿûÿöÿÿéÿÿãÿ÷ÿ©ÿÿÿÿýÿ€©ÿßÿûÿÿìÿîÿûÿ÷ÿÿëÿÿÿÿãÿ÷ÿ©ÿÿÿÿýÿ€©ÿßÿûÿÿëÿïÿûÿ÷ÿëÿþÿÿãÿ÷ÿ©ÿÿÿÿýÿ€©ÿßÿúÿÿëÿïÿûÿøÿÿëÿÿÿâÿ÷ÿ©ÿÿÿÿýÿ€©ÿßÿúÿÿêÿðÿûÿøÿëÿÿÿÿâÿ÷ÿ©ÿÿÿÿýÿ€©ÿßÿúÿÿëÿÿñÿûÿùÿêÿÿÿÿâÿ÷ÿ©ÿÿÿÿýÿ€©ÿßÿúÿÿêÿñÿúÿûÿÿëÿÿÿÿÿÿâÿ÷ÿ©ÿÿÿÿýÿ€©ÿßÿúÿÿêÿÿòÿúÿÿþÿÿéÿþÿÿÿâÿ÷ÿ©ÿÿÿÿüÿ€©ÿàÿúÿÿéÿÿôÿÿùÿüéÿÿþÿÿÿâÿøÿ©ÿ€ÿÿüÿ€©ÿàÿùÿÿèÿÿõÿÛÿþÿýáÿøÿ©ÿ€ÿÿüÿ€©ÿàÿùÿÿèÿõÿÛÿþÿÿÿáÿøÿ©ÿÿþÿüÿ€©ÿàÿùÿÿçÿöÿÜÿÿþÿÿÿáÿøÿ©ÿÿþÿüÿ€©ÿàÿøÿÿæÿÿùÿÛÿýÿþàÿøÿ©ÿÿþÿüÿ€¨ÿáÿøÿÿæÿÿûÿÿÛÿþÿÿÿàÿùÿ¨ÿÿþÿüÿ€¨ÿáÿøÿÿåÿþþÿÿÛÿÿþÿÿÿàÿùÿ¨ÿÿþÿüÿ€¨ÿáÿ÷ÿþäÿüÚÿýÿþßÿúÿ¨ÿÿýÿûÿ€¨ÿâÿ÷ÿÿ¸ÿþÿÿÿßÿúÿ¨ÿÿýÿûÿ€¨ÿâÿ÷ÿþ¹ÿÿþÿýßÿúÿ¨ÿÿýÿûÿ€§ÿãÿöÿÿºÿýÿÿÞÿûÿ§ÿÿýÿûÿ€§ÿãÿöÿÿºÿþÿÿÿÞÿûÿ§ÿÿýÿûÿ€§ÿãÿõÿÿºÿþÿþÝÿûÿ¨ÿÿüÿûÿ€¦ÿäÿõÿÿ¼ÿÿÿÿÿÿÝÿüÿ§ÿÿüÿúÿ€§ÿäÿôÿÿ¼ÿþÿþÜÿüÿ§ÿÿüÿúÿ€¦ÿåÿôÿÿ½ÿþÿÿÜÿýÿ¦ÿÿüÿúÿ€¦ÿåÿóÿÿ¾ÿÿÿÿÛÿýÿ¦ÿÿüÿúÿ€¥ÿæÿóÿÿ¾ÿÿÿÛÿþÿ¦ÿÿûÿúÿ€¥ÿæÿòÿÿ¾ÿÿþÚÿþÿ¦ÿÿûÿùÿ€¦ÿæÿòÿþ¿ÿüÚÿþÿ¦ÿÿûÿùÿ€¥ÿçÿñÿÿéÿòçÿÿÿÙÿÿÿ¥ÿÿûÿùÿ€¥ÿçÿðÿÿéÿüÿÿÿÿÿÿÿæÿÿØÿÿÿ¦ÿÿúÿùÿ€¤ÿèÿðÿÿëÿþÿöèÿÿÿØÿÿ¥ÿÿúÿùÿ€¤ÿèÿïÿÿéÿþþÿÿÿÿÿçÿÿ×ÿÿ¥ÿÿúÿøÿ€¤ÿéÿîÿÿÅÿÿÖÿ¤ÿÿúÿøÿ€¤ÿéÿîÿÿÇÿÿÿÖÿ¥ÿÿùÿøÿ€£ÿêÿíÿþÇÿþÖÿ¤ÿÿùÿøÿ€£ÿêÿìÿÿËÿÿÿÕÿ¤ÿÿùÿ÷ÿ€£ÿëÿëÿÿËÿÿÕÿÿ¤ÿÿùÿ÷ÿ€¢ÿìÿêÿÿÍÿÿÕÿÿÿ¥ÿÿøÿ÷ÿ€¢ÿìÿéÿÿÑÿÿÿÔÿÿÿ¥ÿÿøÿöÿ€¢ÿíÿèÿÿÓÿÿÿÔÿþÿ¥ÿÿøÿöÿ€¡ÿîÿçÿÿÿÕÿÿÿÔÿýÿ¦ÿÿ÷ÿöÿ€ ÿïÿæÿý×ÿýÔÿüÿ¦ÿÿ÷ÿõÿ€¡ÿïÿåÿÿÿÛÿÿÿÿÔÿûÿ¦ÿÿ÷ÿõÿ€ ÿðÿäÿÿÿÿÝÿÿÿÓÿûÿ§ÿÿöÿõÿ€ŸÿñÿãÿþÿáÿÿÿþÓÿúÿ§ÿÿöÿôÿ€ŸÿòÿàÿÿÿåÿÿÿÿÑÿùÿ§ÿÿöÿôÿ€žÿóÿßÿÿÿÿþëÿþÿÿÿÑÿøÿ¨ÿÿõÿôÿ€ÿôÿÝÿÿþÿþñÿþþÿÿÐÿ÷ÿ¨ÿÿõÿóÿ€žÿôÿÛÿþþÿñþÿþÏÿöÿ¨ÿÿõÿóÿ€ÿõÿØÿýóÿýÌÿöÿ©ÿÿôÿóÿ€œÿöÿÔÿóÉÿõÿ©ÿÿôÿòÿ€œÿ÷ÿÿôÿ©ÿÿôÿòÿ€›ÿøÿÿóÿªÿÿóÿñÿ€›ÿÿúÿ’ÿÿòÿªÿÿóÿñÿ€™ÿûÿ“ÿðÿªÿÿóÿðÿ€™ÿüÿ”ÿïÿ«ÿÿòÿðÿ€˜ÿýÿ•ÿîÿ«ÿÿòÿðÿ€—ÿþÿ–ÿíÿ«ÿÿòÿïÿ€—ÿÿÿ˜ÿÿìÿ¬ÿÿñÿïÿ€•ÿ™ÿêÿ¬ÿÿñÿîÿ€•ÿ›ÿéÿ­ÿÿðÿîÿ€•ÿÿÿèÿ­ÿÿðÿíÿ€–ÿÿÿÿ¡ÿÿçÿ®ÿÿïÿíÿ€–ÿýÿ£ÿåÿ®ÿÿïÿíÿ€–ÿüÿÿ§ÿÿäÿ¯ÿ€ïÿìÿ€—ÿúÿÿ«ÿÿâÿ¯ÿÿîÿìÿ€—ÿøÿÿ¯ÿÿàÿ°ÿ€îÿëÿ€˜ÿöÿÿ³ÿÿÞÿ°ÿÿíÿëÿ€˜ÿôÿþ¹ÿþÜÿ±ÿ€íÿêÿ€™ÿñÿÿ½ÿÿÙÿ±ÿÿìÿêÿ€™ÿïÿÿÁÿÿ×ÿ²ÿ€ìÿéÿ€šÿíÿþÇÿþÕÿ²ÿÿëÿéÿ€šÿêÿþÍÿþÒÿ³ÿ€ëÿèÿ€›ÿçÿÿÑÿÿÏÿ³ÿÿêÿèÿ€›ÿåÿüÛÿüÍÿ´ÿþêÿçÿ€œÿàÿùëÿùÈÿ´ÿÿéÿçÿ€œÿØÿúúÿùÀÿµÿÿèÿæÿ€ÿÑÿú¸ÿ¶ÿþèÿåÿ€žÿÿ¶ÿÿçÿåÿ€žÿÿ·ÿÿæÿäÿ€Ÿÿÿ·ÿÿæÿäÿ€Ÿÿÿ¸ÿÿåÿãÿ€ ÿÿ¹ÿþåÿâÿ€¡ÿÿ¹ÿÿäÿâÿ€¡ÿÿºÿÿãÿáÿ€¢ÿÿ»ÿþãÿàÿ€£ÿÿ»ÿÿâÿàÿ€£ÿÿ¼ÿÿáÿßÿ€¤ÿÿ½ÿþáÿßÿ€¤ÿÿ¾ÿþàÿÞÿ€¥ÿÿ¾ÿÿßÿÝÿ€¦ÿÿ¿ÿÿÞÿÝÿ€¦ÿÿÀÿþÞÿÜÿ€§ÿÿÀÿÿÝÿÛÿ€¨ÿÿÁÿÿÜÿÚÿ€©ÿÿÂÿþÜÿÚÿ€©ÿÿÃÿþÛÿÙÿ€ªÿÿÃÿÿÚÿØÿ€«ÿÿÄÿÿÙÿ×ÿ€¬ÿÿÅÿþÙÿ×ÿ€¬ÿÿÆÿþØÿÖÿ€­ÿÿÆÿÿ×ÿÕÿ€®ÿÿÇÿÿÖÿÔÿ€¯ÿÿÈÿþÖÿÓÿ€°ÿÿÉÿþÕÿÒÿ€±ÿÿÉÿÿÔÿÑÿ€²ÿÿÊÿÿÓÿÐÿ€³ÿÿËÿþÓÿÏÿ€´ÿÿÌÿþÒÿÎÿ€µÿÿÍÿþÑÿÍÿ€¶ÿÿÎÿþÐÿÌÿ€·ÿÿÏÿþÏÿËÿ€¸ÿÿÐÿþÎÿÊÿ€¹ÿÿÑÿþÍÿÉÿ€ºÿÿÒÿþÌÿÈÿ€»ÿÿÓÿþËÿÇÿ€¼ÿÿÔÿþÊÿÆÿ€½ÿÿÕÿþÉÿÅÿ€¾ÿÿÖÿþÈÿÄÿ€¿ÿÿ×ÿþÇÿÃÿ€ÀÿÿÙÿýÆÿÂÿ€ÁÿÿÚÿýÅÿÁÿ€ÂÿÿÛÿþÃÿÀÿ€ÃÿÿÜÿþÂÿ¿ÿ€ÄÿÿÝÿþÁÿ¾ÿÿ€ÆÿÿßÿýÀÿ¼ÿ€Çÿÿàÿý¿ÿ»ÿ€Èÿÿáÿþ½ÿºÿÿ€Êÿÿãÿý¼ÿ¸ÿ€Ëÿÿäÿý»ÿ·ÿ€Ìÿÿæÿý¹ÿ¶ÿÿ€Îÿÿçÿý¸ÿ´ÿ€Ïÿÿéÿý¶ÿ³ÿ€Ðÿÿêÿýµÿ²ÿÿ€Òÿÿìÿý³ÿ°ÿÿ€Ôÿÿíÿý²ÿ®ÿ€Õÿÿïÿý°ÿ­ÿÿ€×ÿÿñÿü¯ÿ«ÿ€Øÿÿòÿý­ÿªÿÿ€Úÿÿôÿý«ÿ¨ÿÿ€Üÿÿöÿüªÿ¦ÿÿ€Þÿÿøÿü¨ÿ¤ÿÿ€àÿÿùÿý¦ÿ¢ÿÿ€âÿÿûÿý¤ÿ ÿÿ€äÿÿýÿü£ÿžÿÿ€æÿÿÿÿü¡ÿœÿÿ€èÿÿüŸÿšÿÿ€êÿƒÿÿþÿ˜ÿÿ€ìÿ…ÿý›ÿ–ÿÿ€îÿ‡ÿüÿšÿ”ÿÿ€ðÿ‰ÿüþÿšÿ’ÿþ€óÿŒÿûüÿšÿÿÿ€õÿÿúúÿšÿÿÿ€÷ÿ‘ÿû÷ÿšÿ‹ÿþ€úÿ”ÿûôÿšÿˆÿþ€ýÿ—ÿúòÿšÿ…ÿþ€ÿ›ÿùïÿšÿ‚ÿ€ÿ€¡ÿøìÿšÿÿÿÿþ€§ÿùèÿšÿÿüÿý€¯ÿùäÿšÿÿøÿü€¹ÿ÷áÿšÿÿóÿ€ûÅÿöÝÿšÿÿòÿöÏÿöØÿšÿÿíÿöÿ€ÞÿóÓÿšÿÿèÿÍÎÿšÿÿãÿÚÆÿšÿÿÿšÿÿÿšÿÿÿšÿ    ÿÿšÿÿÕÿñ½ÿšÿÿàÿöñÿöÈÿšÿÿèÿùÛÿùÐÿšÿÿîÿûËÿûÖÿšÿÿóÿü¿ÿüÛÿšÿÿøÿüµÿüàÿšÿÿüÿý«ÿýäÿšÿÿÿÿþ£ÿþçÿšÿ‚ÿÿÿþêÿšÿ…ÿþÿ˜ÿþíÿšÿˆÿþýÿ•ÿþðÿšÿ‹ÿþúÿ’ÿþóÿšÿÿÿ÷ÿÿÿõÿšÿÿÿõÿÿÿ÷ÿšÿ’ÿþóÿ‹ÿþúÿšÿ”ÿÿðÿˆÿÿüÿšÿ–ÿÿîÿ†ÿÿþÿšÿ™ÿþìÿ„ÿþšÿ›ÿÿéÿÿÿœÿÿÿçÿÿÿÿÿžÿŸÿÿåÿÿýÿÿ ÿ¡ÿÿãÿÿûÿÿ¢ÿ£ÿÿáÿÿùÿÿ¤ÿ¥ÿÿßÿÿ÷ÿÿ¦ÿ¦ÿÝÿÿõÿ§ÿ¨ÿÿÜÿÿôÿÿ©ÿªÿÿÚÿÿòÿÿ«ÿ«ÿØÿÿðÿ¬ÿ­ÿÿ×ÿÿïÿÿ®ÿ®ÿÕÿÿíÿ¯ÿ°ÿÿÔÿÿìÿÿ±ÿ²ÿÿÒÿÿêÿÿ³ÿ³ÿÐÿÿèÿ´ÿµÿÿÏÿÿçÿÿ¶ÿ¶ÿÍÿÿåÿ·ÿ·ÿÌÿÿäÿ¸ÿ¹ÿÿËÿÿãÿÿºÿºÿÉÿÿáÿ»ÿ»ÿÈÿÿàÿ¼ÿ½ÿÿÇÿÿßÿÿ¾ÿ¾ÿÅÿÿÝÿ¿ÿ¿ÿÄÿÿÜÿÀÿÀÿÃÿÿÛÿÁÿÁÿÂÿÿÚÿÂÿÂÿÁÿÿÙÿÃÿÃÿÀÿÿØÿÄÿÄÿ¿ÿÿ×ÿÅÿÅÿ¾ÿÿÖÿÆÿÆÿ½ÿÿÕÿÇÿÇÿ¼ÿÿÔÿÈÿÈÿ»ÿÿÓÿÉÿÉÿºÿÿÒÿÊÿÊÿ¹ÿÿÑÿËÿËÿ¸ÿÿÐÿÌÿÌÿ·ÿÿÏÿÍÿÍÿ¶ÿÿÎÿÎÿÎÿµÿÿÍÿÏÿÒÿý´ÿÿÌÿÐÿÒÿý´ÿÿËÿÑÿÒÿø¹ÿÿÊÿÒÿÒÿÿö½ÿÿÉÿÓÿÓÿÿÿñÂÿÿÈÿÔÿÔÿþÿìÇÿÿÇÿÕÿÕÿüÿéËÿÿÆÿÖÿÖÿûÿäÐÿÿÅÿ×ÿ×ÿúÿßÕÿÿÅÿ×ÿ×ÿùÿÜÙÿÿÄÿØÿØÿøÿ×ÞÿÿÃÿÙÿÙÿ÷ÿÒãÿÿÂÿÚÿÚÿõÿÏçÿÿÂÿÚÿÚÿõÿÊìÿÿÁÿÛÿÛÿôÿÅñÿÿÀÿÜÿÜÿòÿÂõÿÿ¿ÿÝÿÝÿñÿ½úÿÿ¿ÿÝÿÝÿñÿ¸ÿÿÿ¾ÿÞÿÞÿïÿ·ÿƒÿ½ÿßÿßÿîÿ·úˆÿ¼ÿàÿßÿîÿ·õÿ¼ÿàÿàÿìÿ¸ñ‘ÿ»ÿáÿàÿìÿ¸ì–ÿ»ÿáÿáÿëÿ¸ç›ÿºÿâÿâÿéÿ¹ãŸÿ¹ÿãÿâÿéÿ¹Þ¤ÿ¹ÿãÿãÿèÿ¹Ù©ÿ¸ÿäÿäÿçÿ¹Õ­ÿ·ÿåÿäÿæÿºÐ²ÿ·ÿåÿåÿåÿºË·ÿ¶ÿæÿåÿåÿºÇ»ÿ¶ÿæÿæÿãÿ»ÂÀÿµÿçÿçÿâÿ»½Åÿµÿçÿçÿâÿ»¹Éÿ´ÿèÿèÿàÿ¼´Îÿ´ÿèÿèÿàÿ¼¯Óÿ³ÿéÿéÿßÿ¼«×ÿ³ÿéÿéÿÞÿ½¦Üÿ²ÿêÿêÿÝÿ½¡áÿ²ÿêÿêÿÝÿ½åÿ±ÿëÿëÿÛÿ¾˜êÿ±ÿëÿëÿÛÿ¾“ïÿ°ÿìÿìÿÚÿ¾óÿ°ÿìÿìÿÙÿ¿Šøÿ¯ÿíÿíÿØÿ¿…ýÿ¯ÿíÿíÿØÿ¿®ÿîÿíÿ×ÿÀü³ÿîÿîÿÖÿÀ÷·ÿïÿîÿÖÿÀó»ÿïÿïÿÔÿÁî¿ÿðÿïÿÔÿÁéÄÿðÿðÿÓÿÁåÇÿñÿðÿÒÿÂàÌÿñÿðÿÒÿÂÛÑÿñÿñÿÑÿÂ×ÔÿòÿñÿÐÿÃÒÙÿòÿòÿÏÿÃÍÝÿóÿòÿÏÿÃÉáÿóÿóÿÍÿÄÄåÿôÿóÿÍÿÄ¿êÿôÿóÿÍÿÄ»îÿôÿôÿËÿŶòÿõÿôÿËÿű÷ÿõÿôÿËÿÅ­ûÿõÿõÿÉÿƨÿÿöÿõÿÉÿÆ¥öÿõÿÉÿƤ÷ÿöÿÇÿǤ÷ÿöÿÇÿǤ÷ÿöÿÇÿÇ£øÿ÷ÿÅÿÈ£øÿ÷ÿÅÿÈ£øÿ÷ÿÅÿÈ£øÿøÿÃÿÉ¢ùÿøÿÃÿÉ¢ùÿøÿÃÿÉ¢ùÿøÿÃÿÉ¢ùÿùÿÁÿÊ¡úÿùÿÁÿÊ¡úÿùÿÁÿÊ¡úÿùÿÀÿË¡úÿùÿÀÿË ûÿúÿ¿ÿË ûÿúÿ¾ÿÌ ûÿúÿ¾ÿÌ ûÿúÿ¾ÿÌ ûÿúÿ½ÿÍŸüÿûÿ¼ÿÍŸüÿûÿ¼ÿÍŸüÿûÿ»ÿΟüÿûÿ»ÿΟüÿûÿ»ÿΞýÿûÿºÿÏžýÿüÿ¹ÿÏžýÿüÿ¹ÿÏžýÿüÿ¸ÿОýÿüÿ¸ÿÐþÿüÿ¸ÿÐþÿüÿ·ÿÑþÿüÿ·ÿÑþÿüÿ·ÿÑþÿýÿµÿÒþÿýÿµÿÒþÿýÿµÿÒœÿÿýÿ´ÿÓœÿÿýÿ´ÿÓœÿÿýÿ´ÿÓœÿÿýÿ³ÿÔœÿÿýÿ³ÿÔœÿÿýÿ³ÿÔœÿÿýÿ²ÿÕœÿÿýÿ²ÿÕœÿÿþÿ±ÿÕœÿÿþÿ°ÿÖœÿÿþÿ°ÿÖœÿÿþÿ°ÿÖœÿÿþÿ¯ÿלÿÿþÿ¯ÿלÿÿþÿ¯ÿלÿÿþÿ®ÿØœÿÿþÿ®ÿØœÿÿþÿ®ÿØœÿÿþÿ­ÿÙœÿÿþÿ­ÿÙœÿÿþÿ­ÿÙœÿÿþÿ­ÿÙœÿÿþÿ¬ÿÚœÿÿþÿ¬ÿÚœÿÿýÿ­ÿÚœÿÿýÿ¬ÿÛœÿÿýÿ¬ÿÛœÿÿýÿ¬ÿÛœÿÿýÿ«ÿÜœÿÿýÿ«ÿÜœÿÿýÿ«ÿÜœÿÿýÿªÿÝœÿÿýÿªÿÝœÿÿýÿªÿÝœÿÿýÿ©ÿÞœÿÿüÿªÿÞœÿÿüÿªÿÞœÿÿüÿ©ÿßþÿüÿ©ÿßþÿüÿ©ÿßþÿüÿ¨ÿàþÿüÿ¨ÿàþÿüÿ¨ÿàžýÿûÿ¨ÿážýÿûÿ¨ÿážýÿûÿ¨ÿážýÿûÿ§ÿâžýÿûÿ§ÿâŸüÿûÿ§ÿâŸüÿúÿ§ÿãŸüÿúÿ§ÿãŸüÿúÿ§ÿãŸüÿúÿ¦ÿä ûÿúÿ¦ÿä ûÿùÿ§ÿä ûÿùÿ¦ÿå ûÿùÿ¦ÿå¡úÿùÿ¦ÿå¡úÿùÿ¥ÿæ¡úÿøÿ¦ÿæ¡úÿøÿ¦ÿæ¢ùÿøÿ¥ÿç¢ùÿøÿ¥ÿç¢ùÿ÷ÿ¦ÿç¢ùÿ÷ÿ¥ÿè£øÿ÷ÿ¥ÿè£øÿöÿ¦ÿè£øÿöÿ¦ÿè¤÷ÿöÿ¥ÿé¤÷ÿõÿ¦ÿé¤÷ÿõÿ¦ÿé¥öÿõÿ¥ÿê¥öÿôÿ¦ÿê¥öÿôÿ¦ÿê¦õÿôÿ¥ÿë¦õÿóÿ¦ÿë¦õÿóÿ¦ÿë§ôÿóÿ¥ÿì§ôÿòÿ¦ÿì§ôÿòÿ¦ÿì¨óÿñÿ¦ÿí¨óÿñÿ¦ÿí¨óÿðÿ§ÿí©òÿðÿ¦ÿî©òÿðÿ¦ÿî©òÿïÿ§ÿîªñÿïÿ¦ÿïªñÿîÿ§ÿï«ðÿîÿ§ÿï«ðÿíÿ§ÿð¬ïÿíÿ§ÿð¬ïÿíÿ§ÿð¬ïÿìÿ§ÿñ­îÿìÿ§ÿñ­îÿëÿ¨ÿñ®íÿëÿ§ÿò®íÿêÿ¨ÿò¯ìÿêÿ¨ÿò¯ìÿéÿ¨ÿó°ëÿéÿ¨ÿó°ëÿèÿ©ÿó±êÿèÿ¨ÿô±êÿçÿ©ÿô²éÿçÿ©ÿô³èÿæÿ©ÿõ³èÿåÿªÿõ´çÿåÿªÿõµæÿäÿªÿöµæÿäÿªÿö¶åÿãÿ«ÿö¶åÿâÿ«ÿ÷·äÿâÿ«ÿ÷¸ãÿáÿ¬ÿ÷¸ãÿàÿ¬ÿø¹âÿàÿ¬ÿøºáÿßÿ­ÿøºáÿßÿ­ÿø»àÿÞÿ­ÿù¼ßÿÝÿ®ÿù½ÞÿÝÿ®ÿù½ÞÿÜÿ®ÿú¾ÝÿÛÿ¯ÿú¿ÜÿÚÿ°ÿú¿ÜÿÚÿ¯ÿûÀÛÿÙÿ°ÿûÁÚÿØÿ±ÿûÂÙÿ×ÿ±ÿüÂÙÿ×ÿ±ÿüÃØÿÖÿ²ÿüÄ×ÿÕÿ²ÿýÅÖÿÔÿ³ÿýÅÖÿÓÿ´ÿýÆÕÿÒÿ´ÿþÇÔÿÑÿµÿþÈÓÿÐÿ¶ÿþÈÓÿÏÿ¶ÿÿÉÒÿÎÿ·ÿÿÊÑÿÍÿ¸ÿÿËÐÿÌÿ¸ÿÌÏÿËÿ¹ÿÍÎÿÊÿºÿÎÍÿÉÿºÿÏÌÿÈÿ»ÿÐËÿÇÿ¼ÿÑÊÿÆÿ½ÿÿ‚ÒÉÿÅÿ¾ÿÿ‚ÓÈÿÄÿ¿ÿÿ‚ÔÇÿÃÿÀÿÿÿƒÕÆÿÂÿÁÿÿÿƒÖÅÿÁÿÂÿÿÿƒØÃÿÀÿÃÿþÿ„ÙÂÿ¿ÿÄÿþÿ„ÚÁÿ¾ÿÿÆÿþÿ„ÛÀÿ¼ÿÇÿýÿ…Ü¿ÿ»ÿÈÿýÿ…Þ½ÿºÿÿÊÿýÿ…ß¼ÿ¸ÿËÿüÿ†à»ÿ·ÿÌÿüÿ†â¹ÿ¶ÿÿÎÿüÿ†ã¸ÿ´ÿÏÿûÿ‡å¶ÿ³ÿÐÿûÿ‡æµÿ²ÿÿÒÿûÿ‡è³ÿ°ÿÿÔÿúÿˆé²ÿ®ÿÕÿúÿˆë°ÿ­ÿÿ×ÿúÿˆì¯ÿ«ÿØÿúÿˆî­ÿªÿÿÚÿùÿ‰ð«ÿ¨ÿÿÜÿùÿ‰ñªÿ¦ÿÿÞÿùÿ‰ó¨ÿ¤ÿÿàÿøÿŠõ¦ÿ¢ÿÿâÿøÿŠ÷¤ÿ ÿÿäÿøÿŠø£ÿžÿÿæÿ÷ÿ‹ú¡ÿœÿÿèÿ÷ÿ‹üŸÿšÿÿêÿ÷ÿ‹þÿ˜ÿÿìÿöÿŒ›ÿ–ÿÿîÿöÿÿšÿ”ÿÿðÿöÿþÿšÿ’ÿþóÿõÿ’üÿšÿÿÿõÿõÿ”úÿšÿÿÿ÷ÿõÿ—÷ÿšÿ‹ÿþúÿôÿ›ôÿšÿˆÿþýÿôÿòÿšÿ…ÿþÿôÿ ïÿšÿ‚ÿÿõÿ¤ìÿšÿÿÿÿþøÿ¨èÿšÿÿüÿýüÿ¬äÿšÿÿøÿüÿ°áÿšÿÿóÿ³Ýÿšÿÿòÿ¹ØÿšÿÿíÿÃÓÿšÿÿèÿÍÎÿšÿÿãÿÚÆÿšÿÿÿšÿÿÿšÿÿÿšÿ8BIMPatt  "&&&&&&&&&%$$$$%%*..,,,,,,,,,,,.43.00.4:877576529>659:6222222265411.2255346773*//*//&'"&'"'"&%%!'.+- ""!"$$$&&&&&&"    "&&&&&&&&&%$$$$%%*..,,,,,,,,,,,.43.00.4:877576529>659:6222222265411.2255346775,//*//&'"&'"'"&%%!'.+- ""!"$$$&&&&&&"      ÿÿšÿÿÕÿñ½ÿšÿÿàÿöñÿöÈÿšÿÿèÿùÛÿùÐÿšÿÿîÿûËÿûÖÿšÿÿóÿü¿ÿüÛÿšÿÿøÿüµÿüàÿšÿÿüÿý«ÿýäÿšÿÿÿÿþ£ÿþçÿšÿ‚ÿÿÿþêÿšÿ…ÿþÿ˜ÿþíÿšÿˆÿþýÿ•ÿþðÿšÿ‹ÿþúÿ’ÿþóÿšÿÿÿ÷ÿÿÿõÿšÿÿÿõÿÿÿ÷ÿšÿ’ÿþóÿ‹ÿþúÿšÿ”ÿÿðÿˆÿÿüÿšÿ–ÿÿîÿ†ÿÿþÿšÿ™ÿþìÿ„ÿþšÿ›ÿÿéÿÿÿœÿÿÿçÿÿÿÿÿžÿŸÿÿåÿÿýÿÿ ÿ¡ÿÿãÿÿûÿÿ¢ÿ£ÿÿáÿÿùÿÿ¤ÿ¥ÿÿßÿÿ÷ÿÿ¦ÿ¦ÿÝÿÿõÿ§ÿ¨ÿÿÜÿÿôÿÿ©ÿªÿÿÚÿÿòÿÿ«ÿ«ÿØÿÿðÿ¬ÿ­ÿÿ×ÿÿïÿÿ®ÿ®ÿÕÿÿíÿ¯ÿ°ÿÿÔÿÿìÿÿ±ÿ²ÿÿÒÿÿêÿÿ³ÿ³ÿÐÿÿèÿ´ÿµÿÿÏÿÿçÿÿ¶ÿ¶ÿÍÿÿåÿ·ÿ·ÿÌÿÿäÿ¸ÿ¹ÿÿËÿÿãÿÿºÿºÿÉÿÿáÿ»ÿ»ÿÈÿÿàÿ¼ÿ½ÿÿÇÿÿßÿÿ¾ÿ¾ÿÅÿÿÝÿ¿ÿ¿ÿÄÿÿÜÿÀÿÀÿÃÿÿÛÿÁÿÁÿÂÿÿÚÿÂÿÂÿÁÿÿÙÿÃÿÃÿÀÿÿØÿÄÿÄÿ¿ÿÿ×ÿÅÿÅÿ¾ÿÿÖÿÆÿÆÿ½ÿÿÕÿÇÿÇÿ¼ÿÿÔÿÈÿÈÿ»ÿÿÓÿÉÿÉÿºÿÿÒÿÊÿÊÿ¹ÿÿÑÿËÿËÿ¸ÿÿÐÿÌÿÌÿ·ÿÿÏÿÍÿÍÿ¶ÿÿÎÿÎÿÎÿµÿÿÍÿÏÿÒÿý´ÿÿÌÿÐÿÒÿþ³ÿÿËÿÑÿÒÿþ³ÿÿÊÿÒÿÒÿ±ÿÿÉÿÓÿÓÿ°ÿÿÈÿÔÿÔÿ¯ÿÿÇÿÕÿÕÿ®ÿÿÆÿÖÿÖÿ­ÿÿÅÿ×ÿ×ÿ¬ÿÿÅÿ×ÿ×ÿ¬ÿÿÄÿØÿØÿ«ÿÿÃÿÙÿÙÿªÿÿÂÿÚÿÚÿ©ÿÿÂÿÚÿÚÿ©ÿÿÁÿÛÿÛÿ¨ÿÿÀÿÜÿÜÿ§ÿÿ¿ÿÝÿÝÿ¦ÿÿ¿ÿÝÿÝÿ¦ÿÿ¾ÿÞÿÞÿ¥ÿÿ½ÿßÿßÿ¤ÿÿ¼ÿàÿßÿ¤ÿÿ¼ÿàÿàÿ£ÿÿ»ÿáÿàÿ£ÿÿ»ÿáÿáÿ¢ÿÿºÿâÿâÿ¡ÿÿ¹ÿãÿâÿ¡ÿÿ¹ÿãÿãÿ ÿÿ¸ÿäÿäÿŸÿÿ·ÿåÿäÿŸÿÿ·ÿåÿåÿžÿÿ¶ÿæÿåÿžÿÿ¶ÿæÿæÿÿÑÿù€¹ÿµÿçÿçÿœÿÙÿù€ùÿù€Áÿµÿçÿçÿœÿàÿú€éÿú€Èÿ´ÿèÿèÿ›ÿåÿü€Ûÿü€Íÿ´ÿèÿèÿ›ÿèÿþ€Ñÿþ€Ðÿ³ÿéÿéÿšÿêÿÿ€Ëÿÿ€Òÿ³ÿéÿéÿšÿíÿþ€Çÿþ€Õÿ²ÿêÿêÿ™ÿïÿÿ€Áÿÿ€×ÿ²ÿêÿêÿ™ÿñÿÿ€½ÿÿ€Ùÿ±ÿëÿëÿ˜ÿôÿþ€¹ÿþ€Üÿ±ÿëÿëÿ˜ÿöÿÿ€³ÿÿ€Þÿ°ÿìÿìÿ—ÿøÿÿ€¯ÿÿ€àÿ°ÿìÿìÿ—ÿúÿÿ€«ÿÿ€âÿ¯ÿíÿíÿ–ÿüÿÿ€§ÿÿ€äÿ¯ÿíÿíÿ–ÿýÿ€£ÿ€åÿ®ÿîÿíÿ–ÿÿÿÿ€¡ÿÿ€çÿ®ÿîÿîÿ•ÿÿ€ÿ€èÿ­ÿïÿîÿ•ÿ€›ÿ€éÿ­ÿïÿïÿ–ÿÿ€™ÿÿ€ëÿ¬ÿðÿïÿ—ÿ€ÿÿ—ÿ€ìÿ¬ÿðÿðÿ—ÿ€þÿ–ÿ€íÿ«ÿñÿðÿ˜ÿ€ýÿ•ÿ€îÿ«ÿñÿðÿ™ÿ€üÿ”ÿ€ïÿ«ÿñÿñÿšÿÿ€ûÿ“ÿÿ€ñÿªÿòÿñÿ›ÿ€ùÿ‘ÿ€òÿªÿòÿòÿ›ÿ€øÿÿ€óÿ©ÿóÿòÿœÿ€÷ÿÿ€ôÿ©ÿóÿóÿœÿ€öÿÔÿóÉÿ€õÿ¨ÿôÿóÿÿ€õÿØÿýóÿýÌÿ€öÿ¨ÿôÿóÿžÿ€ôÿÛÿþëÿþÏÿ€öÿ¨ÿôÿôÿÿ€ôÿÝÿÿåÿÿÐÿ€÷ÿ§ÿõÿôÿžÿ€óÿßÿÿöÿ÷öÿÿÑÿ€øÿ§ÿõÿôÿŸÿ€òÿàÿùÿü÷ÿüùÿÑÿ€ùÿ§ÿõÿõÿŸÿ€ñÿãÿþûÿþíÿþûÿþÓÿ€úÿ¦ÿöÿõÿ ÿ€ðÿäÿÿûÿÿçÿÿûÿÿÓÿ€ûÿ§ÿÿöÿõÿ¡ÿ€ïÿåÿûÿÿãÿÿûÿÔÿ€ûÿ¦ÿÿ÷ÿöÿ ÿ€ïÿæÿÿýÿÿßÿÿýÿÿÔÿ€üÿ¦ÿÿ÷ÿöÿ¡ÿ€îÿçÿýÿþÝÿþýÿÔÿ€ýÿ¦ÿÿ÷ÿöÿ¢ÿ€íÿèÿýÿÿÙÿÿýÿÔÿ€þÿ¥ÿÿøÿ÷ÿ¢ÿ€ìÿéÿýÿÕÿýÿÔÿ€ÿÿ¥ÿÿøÿ÷ÿ¢ÿ€ìÿêÿýÿÓÿýÿÕÿ€ÿÿ¥ÿÿøÿ÷ÿ£ÿ€ëÿëÿýÿÑÿýÿÕÿ€ÿ¥ÿÿøÿøÿ£ÿ€êÿìÿþÿÿÏÿÿþÿÕÿ€¤ÿÿùÿøÿ£ÿ€êÿíÿÿþÿÍÿþÿÿÖÿ€¤ÿÿùÿøÿ¤ÿ€éÿîÿýÿËÿýÿÖÿ€¥ÿÿùÿøÿ¤ÿ€éÿîÿÿÿÉÿÿÿÿÖÿ€¥ÿÿùÿùÿ¤ÿ€èÿïÿþÿÇÿþÿ×ÿÿ€¥ÿÿúÿùÿ¤ÿ€èÿðÿþÿÅÿþÿØÿÿ€¥ÿÿúÿùÿ¥ÿ€çÿðÿÿÿæÿûæÿÿÿÿØÿÿÿ€¦ÿÿúÿùÿ¥ÿ€çÿñÿþÿèÿýýÿýèÿþÿÙÿÿÿ€¦ÿÿúÿùÿ¦ÿ€æÿòÿÿÿéÿþ÷ÿþéÿÿÿÚÿþÿ€¦ÿÿûÿúÿ¥ÿ€æÿòÿÿÿéÿÿóÿÿéÿÿÿÚÿþÿ€¦ÿÿûÿúÿ¥ÿ€æÿóÿÿÿéÿÿñÿÿéÿÿÿÛÿþÿ€¦ÿÿûÿúÿ¦ÿ€åÿóÿÿÿêÿÿïÿÿêÿÿÿÛÿýÿ€§ÿÿûÿúÿ¦ÿ€åÿôÿÿÿéÿíÿéÿÿÿÜÿýÿ€§ÿÿûÿúÿ§ÿ€äÿôÿÿÿêÿëÿêÿÿÿÜÿüÿ€§ÿÿüÿûÿ¦ÿ€äÿõÿÿÿêÿÿëÿÿêÿÿÿÝÿüÿ€§ÿÿüÿûÿ§ÿ€ãÿõÿÿÿêÿéÿêÿÿÿÝÿûÿ€¨ÿÿüÿûÿ§ÿ€ãÿöÿÿÿéÿéÿéÿÿÿÞÿûÿ€¨ÿÿüÿûÿ§ÿ€ãÿöÿÿÿêÿçÿêÿÿÿÞÿûÿ€¨ÿÿüÿûÿ¨ÿ€âÿ÷ÿÿÿéÿçÿéÿÿßÿúÿ€¨ÿÿýÿûÿ¨ÿ€âÿ÷ÿÿÿéÿçÿéÿÿÿßÿúÿ€¨ÿÿýÿüÿ¨ÿ€áÿ÷ÿÿòÿüüÿçÿèÿÿßÿúÿ€¨ÿÿýÿüÿ¨ÿ€áÿøÿÿÿôÿþþÿÿþÿÿçÿÿéÿÿÿàÿùÿ€©ÿÿýÿüÿ¨ÿ€áÿøÿÿÿôÿúÿÿÿåÿéÿÿÿàÿùÿ€©ÿÿýÿüÿ©ÿ€àÿøÿÿôÿøÿþåÿèÿÿàÿøÿ€©ÿÿþÿüÿ©ÿ€àÿùÿÿÿôÿ÷ÿÿåÿèÿÿÿáÿøÿ€©ÿÿþÿüÿ©ÿ€àÿùÿÿÿõÿÿöÿÿçÿÿèÿÿÿáÿøÿ€©ÿÿþÿüÿ©ÿ€àÿùÿÿôÿôÿçÿæÿÿáÿøÿ€©ÿÿþÿüÿ©ÿ€àÿúÿÿÿôÿôÿÿèÿþÿûïÿÿÿâÿøÿ€©ÿÿþÿýÿ©ÿ€ßÿúÿÿÿôÿôÿÿéÿÿÿýÿÿðÿÿÿâÿ÷ÿ€ªÿÿþÿýÿ©ÿ€ßÿúÿÿóÿôÿÿêÿÿûÿïÿÿâÿ÷ÿ€ªÿÿþÿýÿ©ÿ€ßÿúÿÿôÿÿóÿÿëÿÿúÿïÿÿâÿ÷ÿ€©ÿÿÿÿýÿ©ÿ€ßÿúÿÿôÿòÿÿìÿÿùÿÿðÿÿâÿ÷ÿ€©ÿÿÿÿýÿ©ÿ€ßÿúÿÿôÿòÿÿÿíÿþ÷ÿðÿÿâÿ÷ÿ€©ÿÿÿÿýÿ©ÿ€ßÿûÿÿÿôÿñÿÿÿîÿþ÷ÿðÿÿÿãÿ÷ÿ€©ÿÿÿÿýÿ©ÿ€ßÿûÿÿóÿðÿÿïÿÿöÿïÿÿãÿ÷ÿ€©ÿÿÿÿýÿªÿ€Þÿûÿÿòÿñÿÿÿñÿþõÿïÿÿãÿ÷ÿ€©ÿÿÿÿýÿªÿ€Þÿûÿÿòÿðÿþòÿýõÿïÿÿãÿöÿ€ªÿÿÿÿýÿªÿ€Þÿûÿÿòÿïÿþþÿûýÿÿÿôÿïÿÿãÿöÿ€ªÿÿÿÿýÿªÿ€Þÿûÿÿòÿîÿþÿÿýÿÿÿþÿÿôÿïÿÿãÿöÿ€ªÿÿÿÿþÿ©ÿ€Þÿûÿÿòÿíÿüýÿýþÿôÿÿïÿÿãÿöÿ€ªÿÿÿÿþÿ©ÿ€Þÿüÿÿñÿìÿÿùüÿôÿíÿÿäÿöÿ€ªÿÿÿÿþÿ©ÿ€Þÿüÿÿñÿìÿÿÿýÿüÿóÿíÿÿäÿöÿ€ªÿÿÿÿþÿ©ÿ€Þÿüÿÿñÿÿíÿÿÿÿÿüÿóÿíÿÿäÿöÿ€ªÿÿÿÿþÿªÿ€Ýÿüÿÿðÿìÿÿÿýûÿóÿíÿÿäÿõÿ€«ÿÿÿÿþÿªÿ€Ýÿüÿÿðÿìÿöÿòÿíÿÿäÿõÿ€«ÿÿÿÿþÿªÿ€Ýÿüÿÿðÿìÿÿ÷ÿóÿìÿÿäÿõÿ€«ÿÿÿÿþÿªÿ€Ýÿüÿÿðÿëÿ÷ÿóÿìÿÿäÿõÿ€«ÿÿÿÿþÿªÿ€Ýÿüÿÿïÿìÿøÿÿóÿìÿÿäÿõÿ€«ÿÿÿÿþÿªÿ€Ýÿüÿÿïÿìÿøÿóÿÿìÿÿäÿõÿ€«ÿÿÿÿþÿªÿ€Ýÿüÿÿïÿìÿÿùÿóÿëÿÿäÿõÿ€«ÿÿÿÿþÿªÿ€Ýÿüÿÿîÿìÿüýÿóÿëÿÿäÿöÿ€ªÿÿÿÿþÿ©ÿ€Þÿüÿÿîÿìÿÿÿÿÿÿÿÿôÿÿëÿÿäÿöÿ€ªÿÿÿÿþÿ©ÿ€Þÿüÿÿîÿìÿýÿÿÿóÿêÿÿäÿöÿ€ªÿÿÿÿþÿ©ÿ€Þÿüÿÿîÿÿîÿÿüÿÿóÿêÿÿäÿöÿ€ªÿÿÿÿþÿ©ÿ€Þÿûÿÿíÿîÿþþÿÿÿôÿÿêÿÿãÿöÿ€ªÿÿÿÿýÿªÿ€Þÿûÿÿíÿÿîÿÿþÿÿÿôÿéÿÿãÿöÿ€ªÿÿÿÿýÿªÿ€Þÿûÿÿìÿîÿûÿÿõÿÿéÿÿãÿöÿ€ªÿÿÿÿýÿªÿ€Þÿûÿÿíÿíÿûÿõÿéÿÿãÿöÿ€ªÿÿÿÿýÿªÿ€Þÿûÿÿìÿîÿûÿöÿÿéÿÿãÿ÷ÿ€©ÿÿÿÿýÿ©ÿ€ßÿûÿÿìÿîÿûÿ÷ÿÿëÿÿÿÿãÿ÷ÿ€©ÿÿÿÿýÿ©ÿ€ßÿûÿÿëÿïÿûÿ÷ÿëÿþÿÿãÿ÷ÿ€©ÿÿÿÿýÿ©ÿ€ßÿúÿÿëÿïÿûÿøÿÿëÿÿÿâÿ÷ÿ€©ÿÿÿÿýÿ©ÿ€ßÿúÿÿêÿðÿûÿøÿëÿÿÿÿâÿ÷ÿ€©ÿÿÿÿýÿ©ÿ€ßÿúÿÿëÿÿñÿûÿùÿêÿÿÿÿâÿ÷ÿ€©ÿÿÿÿýÿ©ÿ€ßÿúÿÿêÿñÿúÿûÿÿëÿÿÿÿÿÿâÿ÷ÿ€©ÿÿÿÿýÿ©ÿ€ßÿúÿÿêÿÿòÿúÿÿþÿÿéÿþÿÿÿâÿ÷ÿ€©ÿÿÿÿüÿ©ÿ€àÿúÿÿéÿÿôÿÿùÿüéÿÿþÿÿÿâÿøÿ€©ÿþÿÿüÿ©ÿ€àÿùÿÿèÿÿõÿÛÿþÿýáÿøÿ€©ÿþÿÿüÿ©ÿ€àÿùÿÿèÿõÿÛÿþÿÿÿáÿøÿ€©ÿÿþÿüÿ©ÿ€àÿùÿÿçÿöÿÜÿÿþÿÿÿáÿøÿ€©ÿÿþÿüÿ©ÿ€àÿøÿÿæÿÿùÿÛÿýÿþàÿøÿ€©ÿÿþÿüÿ¨ÿ€áÿøÿÿæÿÿûÿÿÛÿþÿÿÿàÿùÿ€¨ÿÿþÿüÿ¨ÿ€áÿøÿÿåÿþþÿÿÛÿÿþÿÿÿàÿùÿ€¨ÿÿþÿüÿ¨ÿ€áÿ÷ÿþäÿüÚÿýÿþßÿúÿ€¨ÿÿýÿûÿ¨ÿ€âÿ÷ÿÿ¸ÿþÿÿÿßÿúÿ€¨ÿÿýÿûÿ¨ÿ€âÿ÷ÿþ¹ÿÿþÿýßÿúÿ€¨ÿÿýÿûÿ§ÿ€ãÿöÿÿºÿýÿÿÞÿûÿ€§ÿÿýÿûÿ§ÿ€ãÿöÿÿºÿþÿÿÿÞÿûÿ€§ÿÿýÿûÿ§ÿ€ãÿõÿÿºÿþÿþÝÿûÿ€¨ÿÿüÿûÿ¦ÿ€äÿõÿÿ¼ÿÿÿÿÿÿÝÿüÿ€§ÿÿüÿúÿ§ÿ€äÿôÿÿ¼ÿþÿþÜÿüÿ€§ÿÿüÿúÿ¦ÿ€åÿôÿÿ½ÿþÿÿÜÿýÿ€¦ÿÿüÿúÿ¦ÿ€åÿóÿÿ¾ÿÿÿÿÛÿýÿ€¦ÿÿüÿúÿ¥ÿ€æÿóÿÿ¾ÿÿÿÛÿþÿ€¦ÿÿûÿúÿ¥ÿ€æÿòÿÿ¾ÿÿþÚÿþÿ€¦ÿÿûÿùÿ¦ÿ€æÿòÿþ¿ÿüÚÿþÿ€¦ÿÿûÿùÿ¥ÿ€çÿñÿÿéÿòçÿÿÿÙÿÿÿ€¥ÿÿûÿùÿ¥ÿ€çÿðÿÿéÿüÿÿÿÿÿÿÿæÿÿØÿÿÿ€¦ÿÿúÿùÿ¤ÿ€èÿðÿÿëÿþÿöèÿÿÿØÿÿ€¥ÿÿúÿùÿ¤ÿ€èÿïÿÿéÿþþÿÿÿÿÿçÿÿ×ÿÿ€¥ÿÿúÿøÿ¤ÿ€éÿîÿÿÅÿÿÖÿ€¤ÿÿúÿøÿ¤ÿ€éÿîÿÿÇÿÿÿÖÿ€¥ÿÿùÿøÿ£ÿ€êÿíÿþÇÿþÖÿ€¤ÿÿùÿøÿ£ÿ€êÿìÿÿËÿÿÿÕÿ€¤ÿÿùÿ÷ÿ£ÿ€ëÿëÿÿËÿÿÕÿ€ÿ¤ÿÿùÿ÷ÿ¢ÿ€ìÿêÿÿÍÿÿÕÿ€ÿÿ¥ÿÿøÿ÷ÿ¢ÿ€ìÿéÿÿÑÿÿÿÔÿ€ÿÿ¥ÿÿøÿöÿ¢ÿ€íÿèÿÿÓÿÿÿÔÿ€þÿ¥ÿÿøÿöÿ¡ÿ€îÿçÿÿÿÕÿÿÿÔÿ€ýÿ¦ÿÿ÷ÿöÿ ÿ€ïÿæÿý×ÿýÔÿ€üÿ¦ÿÿ÷ÿõÿ¡ÿ€ïÿåÿÿÿÛÿÿÿÿÔÿ€ûÿ¦ÿÿ÷ÿõÿ ÿ€ðÿäÿÿÿÿÝÿÿÿÓÿ€ûÿ§ÿÿöÿõÿŸÿ€ñÿãÿþÿáÿÿÿþÓÿ€úÿ§ÿÿöÿôÿŸÿ€òÿàÿÿÿåÿÿÿÿÑÿ€ùÿ§ÿÿöÿôÿžÿ€óÿßÿÿÿÿþëÿþÿÿÿÑÿ€øÿ¨ÿÿõÿôÿÿ€ôÿÝÿÿþÿþñÿþþÿÿÐÿ€÷ÿ¨ÿÿõÿóÿžÿ€ôÿÛÿþþÿñþÿþÏÿ€öÿ¨ÿÿõÿóÿÿ€õÿØÿýóÿýÌÿ€öÿ©ÿÿôÿóÿœÿ€öÿÔÿóÉÿ€õÿ©ÿÿôÿòÿœÿ€÷ÿÿ€ôÿ©ÿÿôÿòÿ›ÿ€øÿÿ€óÿªÿÿóÿñÿ›ÿÿ€úÿ’ÿÿ€òÿªÿÿóÿñÿ™ÿ€ûÿ“ÿ€ðÿªÿÿóÿðÿ™ÿ€üÿ”ÿ€ïÿ«ÿÿòÿðÿ˜ÿ€ýÿ•ÿ€îÿ«ÿÿòÿðÿ—ÿ€þÿ–ÿ€íÿ«ÿÿòÿïÿ—ÿÿ€ÿ˜ÿÿ€ìÿ¬ÿÿñÿïÿ•ÿ€™ÿ€êÿ¬ÿÿñÿîÿ•ÿ€›ÿ€éÿ­ÿÿðÿîÿ•ÿÿ€ÿ€èÿ­ÿÿðÿíÿ–ÿÿÿÿ€¡ÿÿ€çÿ®ÿÿïÿíÿ–ÿýÿ€£ÿ€åÿ®ÿÿïÿíÿ–ÿüÿÿ€§ÿÿ€äÿ¯ÿþïÿìÿ—ÿúÿÿ€«ÿÿ€âÿ¯ÿÿîÿìÿ—ÿøÿÿ€¯ÿÿ€àÿ°ÿþîÿëÿ˜ÿöÿÿ€³ÿÿ€Þÿ°ÿÿíÿëÿ˜ÿôÿþ€¹ÿþ€Üÿ±ÿþíÿêÿ™ÿñÿÿ€½ÿÿ€Ùÿ±ÿÿìÿêÿ™ÿïÿÿ€Áÿÿ€×ÿ²ÿþìÿéÿšÿíÿþ€Çÿþ€Õÿ²ÿÿëÿéÿšÿêÿþ€Íÿþ€Òÿ³ÿþëÿèÿ›ÿçÿÿ€Ñÿÿ€Ïÿ³ÿÿêÿèÿ›ÿåÿü€Ûÿü€Íÿ´ÿþêÿçÿœÿàÿù€ëÿù€Èÿ´ÿÿéÿçÿœÿØÿú€úÿù€ÀÿµÿÿèÿæÿÿÑÿú€¸ÿ¶ÿþèÿåÿžÿÿ¶ÿÿçÿåÿžÿÿ·ÿÿæÿäÿŸÿÿ·ÿÿæÿäÿŸÿÿ¸ÿÿåÿãÿ ÿÿ¹ÿþåÿâÿ¡ÿÿ¹ÿÿäÿâÿ¡ÿÿºÿÿãÿáÿ¢ÿÿ»ÿþãÿàÿ£ÿÿ»ÿÿâÿàÿ£ÿÿ¼ÿÿáÿßÿ¤ÿÿ½ÿþáÿßÿ¤ÿÿ¾ÿþàÿÞÿ¥ÿÿ¾ÿÿßÿÝÿ¦ÿÿ¿ÿÿÞÿÝÿ¦ÿÿÀÿþÞÿÜÿ§ÿÿÀÿÿÝÿÛÿ¨ÿÿÁÿÿÜÿÚÿ©ÿÿÂÿþÜÿÚÿ©ÿÿÃÿþÛÿÙÿªÿÿÃÿÿÚÿØÿ«ÿÿÄÿÿÙÿ×ÿ¬ÿÿÅÿþÙÿ×ÿ¬ÿÿÆÿþØÿÖÿ­ÿÿÆÿÿ×ÿÕÿ®ÿÿÇÿÿÖÿÔÿ¯ÿÿÈÿþÖÿÓÿ°ÿÿÉÿþÕÿÒÿ±ÿÿÉÿÿÔÿÑÿ²ÿÿÊÿÿÓÿÐÿ³ÿÿËÿþÓÿÏÿ´ÿÿÌÿþÒÿÎÿµÿÿÍÿþÑÿÍÿ¶ÿÿÎÿþÐÿÌÿ·ÿÿÏÿþÏÿËÿ¸ÿÿÐÿþÎÿÊÿ¹ÿÿÑÿþÍÿÉÿºÿÿÒÿþÌÿÈÿ»ÿÿÓÿþËÿÇÿ¼ÿÿÔÿþÊÿÆÿ½ÿÿÕÿþÉÿÅÿ¾ÿÿÖÿþÈÿÄÿ¿ÿÿ×ÿþÇÿÃÿÀÿÿÙÿýÆÿÂÿÁÿÿÚÿýÅÿÁÿÂÿÿÛÿþÃÿÀÿÃÿÿÜÿþÂÿ¿ÿÄÿÿÝÿþÁÿ¾ÿÿÆÿÿßÿýÀÿ¼ÿÇÿÿàÿý¿ÿ»ÿÈÿÿáÿþ½ÿºÿÿÊÿÿãÿý¼ÿ¸ÿËÿÿäÿý»ÿ·ÿÌÿÿæÿý¹ÿ¶ÿÿÎÿÿçÿý¸ÿ´ÿÏÿÿéÿý¶ÿ³ÿÐÿÿêÿýµÿ²ÿÿÒÿÿìÿý³ÿ°ÿÿÔÿÿíÿý²ÿ®ÿÕÿÿïÿý°ÿ­ÿÿ×ÿÿñÿü¯ÿ«ÿØÿÿòÿý­ÿªÿÿÚÿÿôÿý«ÿ¨ÿÿÜÿÿöÿüªÿ¦ÿÿÞÿÿøÿü¨ÿ¤ÿÿàÿÿùÿý¦ÿ¢ÿÿâÿÿûÿý¤ÿ ÿÿäÿÿýÿü£ÿžÿÿæÿÿÿÿü¡ÿœÿÿèÿÿüŸÿšÿÿêÿƒÿÿþÿ˜ÿÿìÿ…ÿý›ÿ–ÿÿîÿ‡ÿüÿšÿ”ÿÿðÿ‰ÿüþÿšÿ’ÿþóÿŒÿûüÿšÿÿÿõÿÿúúÿšÿÿÿ÷ÿ‘ÿû÷ÿšÿ‹ÿþúÿ”ÿûôÿšÿˆÿþýÿ—ÿúòÿšÿ…ÿþÿ›ÿùïÿšÿ‚ÿÿ¡ÿøìÿšÿÿÿÿþ§ÿùèÿšÿÿüÿý¯ÿùäÿšÿÿøÿü¹ÿ÷áÿšÿÿóÿúÅÿöÝÿšÿÿòÿöÏÿöØÿšÿÿíÿôÞÿóÓÿšÿÿèÿÍÎÿšÿÿãÿÚÆÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÕÿñ€½ÿšÿÿàÿö€ñÿö€Èÿšÿÿèÿù€Ûÿù€Ðÿšÿÿîÿû€Ëÿû€Öÿšÿÿóÿü€¿ÿü€Ûÿšÿÿøÿü€µÿü€àÿšÿÿüÿý€«ÿý€äÿšÿÿÿÿþ€£ÿþ€çÿšÿ‚ÿ€ÿ€ÿþ€êÿšÿ…ÿþ€ÿ˜ÿþ€íÿšÿˆÿþ€ýÿ•ÿþ€ðÿšÿ‹ÿþ€úÿ’ÿþ€óÿšÿÿÿ€÷ÿÿÿ€õÿšÿÿÿ€õÿÿÿ€÷ÿšÿ’ÿþ€óÿ‹ÿþ€úÿšÿ”ÿÿ€ðÿˆÿÿ€üÿšÿ–ÿÿ€îÿ†ÿÿ€þÿšÿ™ÿþ€ìÿ„ÿþ€šÿ›ÿÿ€éÿÿÿ€œÿÿÿ€çÿÿÿÿÿ€žÿŸÿÿ€åÿÿýÿÿ€ ÿ¡ÿÿ€ãÿÿûÿÿ€¢ÿ£ÿÿ€áÿÿùÿÿ€¤ÿ¥ÿÿ€ßÿÿ÷ÿÿ€¦ÿ¦ÿ€Ýÿÿõÿ€§ÿ¨ÿÿ€Üÿÿôÿÿ€©ÿªÿÿ€Úÿÿòÿÿ€«ÿ«ÿ€Øÿÿðÿ€¬ÿ­ÿÿ€×ÿÿïÿÿ€®ÿ®ÿ€Õÿÿíÿ€¯ÿ°ÿÿ€Ôÿÿìÿÿ€±ÿ²ÿÿ€Òÿÿêÿÿ€³ÿ³ÿ€Ðÿÿèÿ€´ÿµÿÿ€Ïÿÿçÿÿ€¶ÿ¶ÿ€Íÿÿåÿ€·ÿ·ÿ€Ìÿÿäÿ€¸ÿ¹ÿÿ€Ëÿÿãÿÿ€ºÿºÿ€Éÿÿáÿ€»ÿ»ÿ€Èÿÿàÿ€¼ÿ½ÿÿ€Çÿÿßÿÿ€¾ÿ¾ÿ€ÅÿÿÝÿ€¿ÿ¿ÿ€ÄÿÿÜÿ€ÀÿÀÿ€ÃÿÿÛÿ€ÁÿÁÿ€ÂÿÿÚÿ€ÂÿÂÿ€ÁÿÿÙÿ€ÃÿÃÿ€ÀÿÿØÿ€ÄÿÄÿ€¿ÿÿ×ÿ€ÅÿÅÿ€¾ÿÿÖÿ€ÆÿÆÿ€½ÿÿÕÿ€ÇÿÇÿ€¼ÿÿÔÿ€ÈÿÈÿ€»ÿÿÓÿ€ÉÿÉÿ€ºÿÿÒÿ€ÊÿÊÿ€¹ÿÿÑÿ€ËÿËÿ€¸ÿÿÐÿ€ÌÿÌÿ€·ÿÿÏÿ€ÍÿÍÿ€¶ÿÿÎÿ€ÎÿÎÿ€µÿÿÍÿ€ÏÿÒÿþ€´ÿÿÌÿ€ÐÿÒÿþ³ÿÿËÿ€ÑÿÒÿþ³ÿÿÊÿ€ÒÿÒÿ€±ÿÿÉÿ€ÓÿÓÿ€°ÿÿÈÿ€ÔÿÔÿ€¯ÿÿÇÿ€ÕÿÕÿ€®ÿÿÆÿ€ÖÿÖÿ€­ÿÿÅÿ€×ÿ×ÿ€¬ÿÿÅÿ€×ÿ×ÿ€¬ÿÿÄÿ€ØÿØÿ€«ÿÿÃÿ€ÙÿÙÿ€ªÿÿÂÿ€ÚÿÚÿ€©ÿÿÂÿ€ÚÿÚÿ€©ÿÿÁÿ€ÛÿÛÿ€¨ÿÿÀÿ€ÜÿÜÿ€§ÿÿ¿ÿ€ÝÿÝÿ€¦ÿÿ¿ÿ€ÝÿÝÿ€¦ÿÿ¾ÿ€ÞÿÞÿ€¥ÿÿ½ÿ€ßÿßÿ€¤ÿÿ¼ÿ€àÿßÿ€¤ÿÿ¼ÿ€àÿàÿ€£ÿÿ»ÿ€áÿàÿ€£ÿÿ»ÿ€áÿáÿ€¢ÿÿºÿ€âÿâÿ€¡ÿÿ¹ÿ€ãÿâÿ€¡ÿÿ¹ÿ€ãÿãÿ€ ÿÿ¸ÿ€äÿäÿ€Ÿÿÿ·ÿ€åÿäÿ€Ÿÿÿ·ÿ€åÿåÿ€žÿÿ¶ÿ€æÿåÿ€žÿÿ¶ÿ€æÿæÿ€ÿÑÿù¹ÿµÿ€çÿçÿ€œÿÙÿùùÿùÁÿµÿ€çÿçÿ€œÿàÿúéÿúÈÿ´ÿ€èÿèÿ€›ÿåÿüÛÿüÍÿ´ÿ€èÿèÿ€›ÿèÿþÑÿþÐÿ³ÿ€éÿéÿ€šÿêÿÿËÿÿÒÿ³ÿ€éÿéÿ€šÿíÿþÇÿþÕÿ²ÿ€êÿêÿ€™ÿïÿÿÁÿÿ×ÿ²ÿ€êÿêÿ€™ÿñÿÿ½ÿÿÙÿ±ÿ€ëÿëÿ€˜ÿôÿþ¹ÿþÜÿ±ÿ€ëÿëÿ€˜ÿöÿÿ³ÿÿÞÿ°ÿ€ìÿìÿ€—ÿøÿÿ¯ÿÿàÿ°ÿ€ìÿìÿ€—ÿúÿÿ«ÿÿâÿ¯ÿ€íÿíÿ€–ÿüÿÿ§ÿÿäÿ¯ÿ€íÿíÿ€–ÿýÿ£ÿåÿ®ÿ€îÿíÿ€–ÿÿÿÿ¡ÿÿçÿ®ÿ€îÿîÿ€•ÿÿÿèÿ­ÿ€ïÿîÿ€•ÿ›ÿéÿ­ÿ€ïÿïÿ€–ÿÿ™ÿÿëÿ¬ÿ€ðÿïÿ€—ÿÿÿ—ÿìÿ¬ÿ€ðÿðÿ€—ÿþÿ–ÿíÿ«ÿ€ñÿðÿ€˜ÿýÿ•ÿîÿ«ÿ€ñÿðÿ€™ÿüÿ”ÿïÿ«ÿ€ñÿñÿ€šÿÿûÿ“ÿÿñÿªÿ€òÿñÿ€›ÿùÿ‘ÿòÿªÿ€òÿòÿ€›ÿøÿÿóÿ©ÿ€óÿòÿ€œÿ÷ÿÿôÿ©ÿ€óÿóÿ€œÿöÿÔÿóÉÿõÿ¨ÿ€ôÿóÿ€ÿõÿØÿýóÿýÌÿöÿ¨ÿ€ôÿóÿ€žÿôÿÛÿþëÿþÏÿöÿ¨ÿ€ôÿôÿ€ÿôÿÝÿÿåÿÿÐÿ÷ÿ§ÿ€õÿôÿ€žÿóÿßÿÿöÿ÷öÿÿÑÿøÿ§ÿ€õÿôÿ€Ÿÿòÿàÿùÿü÷ÿüùÿÑÿùÿ§ÿ€õÿõÿ€ŸÿñÿãÿþûÿþíÿþûÿþÓÿúÿ¦ÿ€öÿõÿ€ ÿðÿäÿÿûÿÿçÿÿûÿÿÓÿûÿ§ÿÿöÿõÿ€¡ÿïÿåÿûÿÿãÿÿûÿÔÿûÿ¦ÿÿ÷ÿöÿ€ ÿïÿæÿÿýÿÿßÿÿýÿÿÔÿüÿ¦ÿÿ÷ÿöÿ€¡ÿîÿçÿýÿþÝÿþýÿÔÿýÿ¦ÿÿ÷ÿöÿ€¢ÿíÿèÿýÿÿÙÿÿýÿÔÿþÿ¥ÿÿøÿ÷ÿ€¢ÿìÿéÿýÿÕÿýÿÔÿÿÿ¥ÿÿøÿ÷ÿ€¢ÿìÿêÿýÿÓÿýÿÕÿÿÿ¥ÿÿøÿ÷ÿ€£ÿëÿëÿýÿÑÿýÿÕÿÿ¥ÿÿøÿøÿ€£ÿêÿìÿþÿÿÏÿÿþÿÕÿ¤ÿÿùÿøÿ€£ÿêÿíÿÿþÿÍÿþÿÿÖÿ¤ÿÿùÿøÿ€¤ÿéÿîÿýÿËÿýÿÖÿ¥ÿÿùÿøÿ€¤ÿéÿîÿÿÿÉÿÿÿÿÖÿ¥ÿÿùÿùÿ€¤ÿèÿïÿþÿÇÿþÿ×ÿÿ¥ÿÿúÿùÿ€¤ÿèÿðÿþÿÅÿþÿØÿÿ¥ÿÿúÿùÿ€¥ÿçÿðÿÿÿæÿûæÿÿÿÿØÿÿÿ¦ÿÿúÿùÿ€¥ÿçÿñÿþÿèÿýýÿýèÿþÿÙÿÿÿ¦ÿÿúÿùÿ€¦ÿæÿòÿÿÿéÿþ÷ÿþéÿÿÿÚÿþÿ¦ÿÿûÿúÿ€¥ÿæÿòÿÿÿéÿÿóÿÿéÿÿÿÚÿþÿ¦ÿÿûÿúÿ€¥ÿæÿóÿÿÿéÿÿñÿÿéÿÿÿÛÿþÿ¦ÿÿûÿúÿ€¦ÿåÿóÿÿÿêÿÿïÿÿêÿÿÿÛÿýÿ§ÿÿûÿúÿ€¦ÿåÿôÿÿÿéÿíÿéÿÿÿÜÿýÿ§ÿÿûÿúÿ€§ÿäÿôÿÿÿêÿëÿêÿÿÿÜÿüÿ§ÿÿüÿûÿ€¦ÿäÿõÿÿÿêÿÿëÿÿêÿÿÿÝÿüÿ§ÿÿüÿûÿ€§ÿãÿõÿÿÿêÿéÿêÿÿÿÝÿûÿ¨ÿÿüÿûÿ€§ÿãÿöÿÿÿéÿéÿéÿÿÿÞÿûÿ¨ÿÿüÿûÿ€§ÿãÿöÿÿÿêÿçÿêÿÿÿÞÿûÿ¨ÿÿüÿûÿ€¨ÿâÿ÷ÿÿÿéÿçÿéÿÿßÿúÿ¨ÿÿýÿûÿ€¨ÿâÿ÷ÿÿÿéÿçÿéÿÿÿßÿúÿ¨ÿÿýÿüÿ€¨ÿáÿ÷ÿÿòÿüüÿçÿèÿÿßÿúÿ¨ÿÿýÿüÿ€¨ÿáÿøÿÿÿôÿþþÿÿþÿÿçÿÿéÿÿÿàÿùÿ©ÿÿýÿüÿ€¨ÿáÿøÿÿÿôÿúÿÿÿåÿéÿÿÿàÿùÿ©ÿÿýÿüÿ€©ÿàÿøÿÿôÿøÿþåÿèÿÿàÿøÿ©ÿÿþÿüÿ€©ÿàÿùÿÿÿôÿ÷ÿÿåÿèÿÿÿáÿøÿ©ÿÿþÿüÿ€©ÿàÿùÿÿÿõÿÿöÿÿçÿÿèÿÿÿáÿøÿ©ÿÿþÿüÿ€©ÿàÿùÿÿôÿôÿçÿæÿÿáÿøÿ©ÿÿþÿüÿ€©ÿàÿúÿÿÿôÿôÿÿèÿþÿûïÿÿÿâÿøÿ©ÿÿþÿýÿ€©ÿßÿúÿÿÿôÿôÿÿéÿÿÿýÿÿðÿÿÿâÿ÷ÿªÿÿþÿýÿ€©ÿßÿúÿÿóÿôÿÿêÿÿûÿïÿÿâÿ÷ÿªÿÿþÿýÿ€©ÿßÿúÿÿôÿÿóÿÿëÿÿúÿïÿÿâÿ÷ÿ©ÿÿÿÿýÿ€©ÿßÿúÿÿôÿòÿÿìÿÿùÿÿðÿÿâÿ÷ÿ©ÿÿÿÿýÿ€©ÿßÿúÿÿôÿòÿÿÿíÿþ÷ÿðÿÿâÿ÷ÿ©ÿÿÿÿýÿ€©ÿßÿûÿÿÿôÿñÿÿÿîÿþ÷ÿðÿÿÿãÿ÷ÿ©ÿÿÿÿýÿ€©ÿßÿûÿÿóÿðÿÿïÿÿöÿïÿÿãÿ÷ÿ©ÿÿÿÿýÿ€ªÿÞÿûÿÿòÿñÿÿÿñÿþõÿïÿÿãÿ÷ÿ©ÿÿÿÿýÿ€ªÿÞÿûÿÿòÿðÿþòÿýõÿïÿÿãÿöÿªÿÿÿÿýÿ€ªÿÞÿûÿÿòÿïÿþþÿûýÿÿÿôÿïÿÿãÿöÿªÿÿÿÿýÿ€ªÿÞÿûÿÿòÿîÿþÿÿýÿÿÿþÿÿôÿïÿÿãÿöÿªÿÿÿÿþÿ€©ÿÞÿûÿÿòÿíÿüýÿýþÿôÿÿïÿÿãÿöÿªÿÿÿÿþÿ€©ÿÞÿüÿÿñÿìÿÿùüÿôÿíÿÿäÿöÿªÿÿÿÿþÿ€©ÿÞÿüÿÿñÿìÿÿÿýÿüÿóÿíÿÿäÿöÿªÿÿÿÿþÿ€©ÿÞÿüÿÿñÿÿíÿÿÿÿÿüÿóÿíÿÿäÿöÿªÿÿÿÿþÿ€ªÿÝÿüÿÿðÿìÿÿÿýûÿóÿíÿÿäÿõÿ«ÿÿÿÿþÿ€ªÿÝÿüÿÿðÿìÿöÿòÿíÿÿäÿõÿ«ÿÿÿÿþÿ€ªÿÝÿüÿÿðÿìÿÿ÷ÿóÿìÿÿäÿõÿ«ÿÿÿÿþÿ€ªÿÝÿüÿÿðÿëÿ÷ÿóÿìÿÿäÿõÿ«ÿÿÿÿþÿ€ªÿÝÿüÿÿïÿìÿøÿÿóÿìÿÿäÿõÿ«ÿÿÿÿþÿ€ªÿÝÿüÿÿïÿìÿøÿóÿÿìÿÿäÿõÿ«ÿÿÿÿþÿ€ªÿÝÿüÿÿïÿìÿÿùÿóÿëÿÿäÿõÿ«ÿÿÿÿþÿ€ªÿÝÿüÿÿîÿìÿüýÿóÿëÿÿäÿöÿªÿÿÿÿþÿ€©ÿÞÿüÿÿîÿìÿÿÿÿÿÿÿÿôÿÿëÿÿäÿöÿªÿÿÿÿþÿ€©ÿÞÿüÿÿîÿìÿýÿÿÿóÿêÿÿäÿöÿªÿÿÿÿþÿ€©ÿÞÿüÿÿîÿÿîÿÿüÿÿóÿêÿÿäÿöÿªÿÿÿÿþÿ€©ÿÞÿûÿÿíÿîÿþþÿÿÿôÿÿêÿÿãÿöÿªÿÿÿÿýÿ€ªÿÞÿûÿÿíÿÿîÿÿþÿÿÿôÿéÿÿãÿöÿªÿÿÿÿýÿ€ªÿÞÿûÿÿìÿîÿûÿÿõÿÿéÿÿãÿöÿªÿÿÿÿýÿ€ªÿÞÿûÿÿíÿíÿûÿõÿéÿÿãÿöÿªÿÿÿÿýÿ€ªÿÞÿûÿÿìÿîÿûÿöÿÿéÿÿãÿ÷ÿ©ÿÿÿÿýÿ€©ÿßÿûÿÿìÿîÿûÿ÷ÿÿëÿÿÿÿãÿ÷ÿ©ÿÿÿÿýÿ€©ÿßÿûÿÿëÿïÿûÿ÷ÿëÿþÿÿãÿ÷ÿ©ÿÿÿÿýÿ€©ÿßÿúÿÿëÿïÿûÿøÿÿëÿÿÿâÿ÷ÿ©ÿÿÿÿýÿ€©ÿßÿúÿÿêÿðÿûÿøÿëÿÿÿÿâÿ÷ÿ©ÿÿÿÿýÿ€©ÿßÿúÿÿëÿÿñÿûÿùÿêÿÿÿÿâÿ÷ÿ©ÿÿÿÿýÿ€©ÿßÿúÿÿêÿñÿúÿûÿÿëÿÿÿÿÿÿâÿ÷ÿ©ÿÿÿÿýÿ€©ÿßÿúÿÿêÿÿòÿúÿÿþÿÿéÿþÿÿÿâÿ÷ÿ©ÿÿÿÿüÿ€©ÿàÿúÿÿéÿÿôÿÿùÿüéÿÿþÿÿÿâÿøÿ©ÿ€ÿÿüÿ€©ÿàÿùÿÿèÿÿõÿÛÿþÿýáÿøÿ©ÿ€ÿÿüÿ€©ÿàÿùÿÿèÿõÿÛÿþÿÿÿáÿøÿ©ÿÿþÿüÿ€©ÿàÿùÿÿçÿöÿÜÿÿþÿÿÿáÿøÿ©ÿÿþÿüÿ€©ÿàÿøÿÿæÿÿùÿÛÿýÿþàÿøÿ©ÿÿþÿüÿ€¨ÿáÿøÿÿæÿÿûÿÿÛÿþÿÿÿàÿùÿ¨ÿÿþÿüÿ€¨ÿáÿøÿÿåÿþþÿÿÛÿÿþÿÿÿàÿùÿ¨ÿÿþÿüÿ€¨ÿáÿ÷ÿþäÿüÚÿýÿþßÿúÿ¨ÿÿýÿûÿ€¨ÿâÿ÷ÿÿ¸ÿþÿÿÿßÿúÿ¨ÿÿýÿûÿ€¨ÿâÿ÷ÿþ¹ÿÿþÿýßÿúÿ¨ÿÿýÿûÿ€§ÿãÿöÿÿºÿýÿÿÞÿûÿ§ÿÿýÿûÿ€§ÿãÿöÿÿºÿþÿÿÿÞÿûÿ§ÿÿýÿûÿ€§ÿãÿõÿÿºÿþÿþÝÿûÿ¨ÿÿüÿûÿ€¦ÿäÿõÿÿ¼ÿÿÿÿÿÿÝÿüÿ§ÿÿüÿúÿ€§ÿäÿôÿÿ¼ÿþÿþÜÿüÿ§ÿÿüÿúÿ€¦ÿåÿôÿÿ½ÿþÿÿÜÿýÿ¦ÿÿüÿúÿ€¦ÿåÿóÿÿ¾ÿÿÿÿÛÿýÿ¦ÿÿüÿúÿ€¥ÿæÿóÿÿ¾ÿÿÿÛÿþÿ¦ÿÿûÿúÿ€¥ÿæÿòÿÿ¾ÿÿþÚÿþÿ¦ÿÿûÿùÿ€¦ÿæÿòÿþ¿ÿüÚÿþÿ¦ÿÿûÿùÿ€¥ÿçÿñÿÿéÿòçÿÿÿÙÿÿÿ¥ÿÿûÿùÿ€¥ÿçÿðÿÿéÿüÿÿÿÿÿÿÿæÿÿØÿÿÿ¦ÿÿúÿùÿ€¤ÿèÿðÿÿëÿþÿöèÿÿÿØÿÿ¥ÿÿúÿùÿ€¤ÿèÿïÿÿéÿþþÿÿÿÿÿçÿÿ×ÿÿ¥ÿÿúÿøÿ€¤ÿéÿîÿÿÅÿÿÖÿ¤ÿÿúÿøÿ€¤ÿéÿîÿÿÇÿÿÿÖÿ¥ÿÿùÿøÿ€£ÿêÿíÿþÇÿþÖÿ¤ÿÿùÿøÿ€£ÿêÿìÿÿËÿÿÿÕÿ¤ÿÿùÿ÷ÿ€£ÿëÿëÿÿËÿÿÕÿÿ¤ÿÿùÿ÷ÿ€¢ÿìÿêÿÿÍÿÿÕÿÿÿ¥ÿÿøÿ÷ÿ€¢ÿìÿéÿÿÑÿÿÿÔÿÿÿ¥ÿÿøÿöÿ€¢ÿíÿèÿÿÓÿÿÿÔÿþÿ¥ÿÿøÿöÿ€¡ÿîÿçÿÿÿÕÿÿÿÔÿýÿ¦ÿÿ÷ÿöÿ€ ÿïÿæÿý×ÿýÔÿüÿ¦ÿÿ÷ÿõÿ€¡ÿïÿåÿÿÿÛÿÿÿÿÔÿûÿ¦ÿÿ÷ÿõÿ€ ÿðÿäÿÿÿÿÝÿÿÿÓÿûÿ§ÿÿöÿõÿ€ŸÿñÿãÿþÿáÿÿÿþÓÿúÿ§ÿÿöÿôÿ€ŸÿòÿàÿÿÿåÿÿÿÿÑÿùÿ§ÿÿöÿôÿ€žÿóÿßÿÿÿÿþëÿþÿÿÿÑÿøÿ¨ÿÿõÿôÿ€ÿôÿÝÿÿþÿþñÿþþÿÿÐÿ÷ÿ¨ÿÿõÿóÿ€žÿôÿÛÿþþÿñþÿþÏÿöÿ¨ÿÿõÿóÿ€ÿõÿØÿýóÿýÌÿöÿ©ÿÿôÿóÿ€œÿöÿÔÿóÉÿõÿ©ÿÿôÿòÿ€œÿ÷ÿÿôÿ©ÿÿôÿòÿ€›ÿøÿÿóÿªÿÿóÿñÿ€›ÿÿúÿ’ÿÿòÿªÿÿóÿñÿ€™ÿûÿ“ÿðÿªÿÿóÿðÿ€™ÿüÿ”ÿïÿ«ÿÿòÿðÿ€˜ÿýÿ•ÿîÿ«ÿÿòÿðÿ€—ÿþÿ–ÿíÿ«ÿÿòÿïÿ€—ÿÿÿ˜ÿÿìÿ¬ÿÿñÿïÿ€•ÿ™ÿêÿ¬ÿÿñÿîÿ€•ÿ›ÿéÿ­ÿÿðÿîÿ€•ÿÿÿèÿ­ÿÿðÿíÿ€–ÿÿÿÿ¡ÿÿçÿ®ÿÿïÿíÿ€–ÿýÿ£ÿåÿ®ÿÿïÿíÿ€–ÿüÿÿ§ÿÿäÿ¯ÿ€ïÿìÿ€—ÿúÿÿ«ÿÿâÿ¯ÿÿîÿìÿ€—ÿøÿÿ¯ÿÿàÿ°ÿ€îÿëÿ€˜ÿöÿÿ³ÿÿÞÿ°ÿÿíÿëÿ€˜ÿôÿþ¹ÿþÜÿ±ÿ€íÿêÿ€™ÿñÿÿ½ÿÿÙÿ±ÿÿìÿêÿ€™ÿïÿÿÁÿÿ×ÿ²ÿ€ìÿéÿ€šÿíÿþÇÿþÕÿ²ÿÿëÿéÿ€šÿêÿþÍÿþÒÿ³ÿ€ëÿèÿ€›ÿçÿÿÑÿÿÏÿ³ÿÿêÿèÿ€›ÿåÿüÛÿüÍÿ´ÿþêÿçÿ€œÿàÿùëÿùÈÿ´ÿÿéÿçÿ€œÿØÿúúÿùÀÿµÿÿèÿæÿ€ÿÑÿú¸ÿ¶ÿþèÿåÿ€žÿÿ¶ÿÿçÿåÿ€žÿÿ·ÿÿæÿäÿ€Ÿÿÿ·ÿÿæÿäÿ€Ÿÿÿ¸ÿÿåÿãÿ€ ÿÿ¹ÿþåÿâÿ€¡ÿÿ¹ÿÿäÿâÿ€¡ÿÿºÿÿãÿáÿ€¢ÿÿ»ÿþãÿàÿ€£ÿÿ»ÿÿâÿàÿ€£ÿÿ¼ÿÿáÿßÿ€¤ÿÿ½ÿþáÿßÿ€¤ÿÿ¾ÿþàÿÞÿ€¥ÿÿ¾ÿÿßÿÝÿ€¦ÿÿ¿ÿÿÞÿÝÿ€¦ÿÿÀÿþÞÿÜÿ€§ÿÿÀÿÿÝÿÛÿ€¨ÿÿÁÿÿÜÿÚÿ€©ÿÿÂÿþÜÿÚÿ€©ÿÿÃÿþÛÿÙÿ€ªÿÿÃÿÿÚÿØÿ€«ÿÿÄÿÿÙÿ×ÿ€¬ÿÿÅÿþÙÿ×ÿ€¬ÿÿÆÿþØÿÖÿ€­ÿÿÆÿÿ×ÿÕÿ€®ÿÿÇÿÿÖÿÔÿ€¯ÿÿÈÿþÖÿÓÿ€°ÿÿÉÿþÕÿÒÿ€±ÿÿÉÿÿÔÿÑÿ€²ÿÿÊÿÿÓÿÐÿ€³ÿÿËÿþÓÿÏÿ€´ÿÿÌÿþÒÿÎÿ€µÿÿÍÿþÑÿÍÿ€¶ÿÿÎÿþÐÿÌÿ€·ÿÿÏÿþÏÿËÿ€¸ÿÿÐÿþÎÿÊÿ€¹ÿÿÑÿþÍÿÉÿ€ºÿÿÒÿþÌÿÈÿ€»ÿÿÓÿþËÿÇÿ€¼ÿÿÔÿþÊÿÆÿ€½ÿÿÕÿþÉÿÅÿ€¾ÿÿÖÿþÈÿÄÿ€¿ÿÿ×ÿþÇÿÃÿ€ÀÿÿÙÿýÆÿÂÿ€ÁÿÿÚÿýÅÿÁÿ€ÂÿÿÛÿþÃÿÀÿ€ÃÿÿÜÿþÂÿ¿ÿ€ÄÿÿÝÿþÁÿ¾ÿÿ€ÆÿÿßÿýÀÿ¼ÿ€Çÿÿàÿý¿ÿ»ÿ€Èÿÿáÿþ½ÿºÿÿ€Êÿÿãÿý¼ÿ¸ÿ€Ëÿÿäÿý»ÿ·ÿ€Ìÿÿæÿý¹ÿ¶ÿÿ€Îÿÿçÿý¸ÿ´ÿ€Ïÿÿéÿý¶ÿ³ÿ€Ðÿÿêÿýµÿ²ÿÿ€Òÿÿìÿý³ÿ°ÿÿ€Ôÿÿíÿý²ÿ®ÿ€Õÿÿïÿý°ÿ­ÿÿ€×ÿÿñÿü¯ÿ«ÿ€Øÿÿòÿý­ÿªÿÿ€Úÿÿôÿý«ÿ¨ÿÿ€Üÿÿöÿüªÿ¦ÿÿ€Þÿÿøÿü¨ÿ¤ÿÿ€àÿÿùÿý¦ÿ¢ÿÿ€âÿÿûÿý¤ÿ ÿÿ€äÿÿýÿü£ÿžÿÿ€æÿÿÿÿü¡ÿœÿÿ€èÿÿüŸÿšÿÿ€êÿƒÿÿþÿ˜ÿÿ€ìÿ…ÿý›ÿ–ÿÿ€îÿ‡ÿüÿšÿ”ÿÿ€ðÿ‰ÿüþÿšÿ’ÿþ€óÿŒÿûüÿšÿÿÿ€õÿÿúúÿšÿÿÿ€÷ÿ‘ÿû÷ÿšÿ‹ÿþ€úÿ”ÿûôÿšÿˆÿþ€ýÿ—ÿúòÿšÿ…ÿþ€ÿ›ÿùïÿšÿ‚ÿ€ÿ€¡ÿøìÿšÿÿÿÿþ€§ÿùèÿšÿÿüÿý€¯ÿùäÿšÿÿøÿü€¹ÿ÷áÿšÿÿóÿ€ûÅÿöÝÿšÿÿòÿöÏÿöØÿšÿÿíÿöÿ€ÞÿóÓÿšÿÿèÿÍÎÿšÿÿãÿÚÆÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿÿÕÿñ½ÿšÿÿàÿöñÿöÈÿšÿÿèÿùÛÿùÐÿšÿÿîÿûËÿûÖÿšÿÿóÿü¿ÿüÛÿšÿÿøÿüµÿüàÿšÿÿüÿý«ÿýäÿšÿÿÿÿþ£ÿþçÿšÿ‚ÿÿÿþêÿšÿ…ÿþÿ˜ÿþíÿšÿˆÿþýÿ•ÿþðÿšÿ‹ÿþúÿ’ÿþóÿšÿÿÿ÷ÿÿÿõÿšÿÿÿõÿÿÿ÷ÿšÿ’ÿþóÿ‹ÿþúÿšÿ”ÿÿðÿˆÿÿüÿšÿ–ÿÿîÿ†ÿÿþÿšÿ™ÿþìÿ„ÿþšÿ›ÿÿéÿÿÿœÿÿÿçÿÿÿÿÿžÿŸÿÿåÿÿýÿÿ ÿ¡ÿÿãÿÿûÿÿ¢ÿ£ÿÿáÿÿùÿÿ¤ÿ¥ÿÿßÿÿ÷ÿÿ¦ÿ¦ÿÝÿÿõÿ§ÿ¨ÿÿÜÿÿôÿÿ©ÿªÿÿÚÿÿòÿÿ«ÿ«ÿØÿÿðÿ¬ÿ­ÿÿ×ÿÿïÿÿ®ÿ®ÿÕÿÿíÿ¯ÿ°ÿÿÔÿÿìÿÿ±ÿ²ÿÿÒÿÿêÿÿ³ÿ³ÿÐÿÿèÿ´ÿµÿÿÏÿÿçÿÿ¶ÿ¶ÿÍÿÿåÿ·ÿ·ÿÌÿÿäÿ¸ÿ¹ÿÿËÿÿãÿÿºÿºÿÉÿÿáÿ»ÿ»ÿÈÿÿàÿ¼ÿ½ÿÿÇÿÿßÿÿ¾ÿ¾ÿÅÿÿÝÿ¿ÿ¿ÿÄÿÿÜÿÀÿÀÿÃÿÿÛÿÁÿÁÿÂÿÿÚÿÂÿÂÿÁÿÿÙÿÃÿÃÿÀÿÿØÿÄÿÄÿ¿ÿÿ×ÿÅÿÅÿ¾ÿÿÖÿÆÿÆÿ½ÿÿÕÿÇÿÇÿ¼ÿÿÔÿÈÿÈÿ»ÿÿÓÿÉÿÉÿºÿÿÒÿÊÿÊÿ¹ÿÿÑÿËÿËÿ¸ÿÿÐÿÌÿÌÿ·ÿÿÏÿÍÿÍÿ¶ÿÿÎÿÎÿÎÿµÿÿÍÿÏÿÒÿý´ÿÿÌÿÐÿÒÿý´ÿÿËÿÑÿÒÿø¹ÿÿÊÿÒÿÒÿÿö½ÿÿÉÿÓÿÓÿÿÿñÂÿÿÈÿÔÿÔÿþÿìÇÿÿÇÿÕÿÕÿüÿéËÿÿÆÿÖÿÖÿûÿäÐÿÿÅÿ×ÿ×ÿúÿßÕÿÿÅÿ×ÿ×ÿùÿÜÙÿÿÄÿØÿØÿøÿ×ÞÿÿÃÿÙÿÙÿ÷ÿÒãÿÿÂÿÚÿÚÿõÿÏçÿÿÂÿÚÿÚÿõÿÊìÿÿÁÿÛÿÛÿôÿÅñÿÿÀÿÜÿÜÿòÿÂõÿÿ¿ÿÝÿÝÿñÿ½úÿÿ¿ÿÝÿÝÿñÿ¸ÿÿÿ¾ÿÞÿÞÿïÿ·ÿƒÿ½ÿßÿßÿîÿ·úˆÿ¼ÿàÿßÿîÿ·õÿ¼ÿàÿàÿìÿ¸ñ‘ÿ»ÿáÿàÿìÿ¸ì–ÿ»ÿáÿáÿëÿ¸ç›ÿºÿâÿâÿéÿ¹ãŸÿ¹ÿãÿâÿéÿ¹Þ¤ÿ¹ÿãÿãÿèÿ¹Ù©ÿ¸ÿäÿäÿçÿ¹Õ­ÿ·ÿåÿäÿæÿºÐ²ÿ·ÿåÿåÿåÿºË·ÿ¶ÿæÿåÿåÿºÇ»ÿ¶ÿæÿæÿãÿ»ÂÀÿµÿçÿçÿâÿ»½Åÿµÿçÿçÿâÿ»¹Éÿ´ÿèÿèÿàÿ¼´Îÿ´ÿèÿèÿàÿ¼¯Óÿ³ÿéÿéÿßÿ¼«×ÿ³ÿéÿéÿÞÿ½¦Üÿ²ÿêÿêÿÝÿ½¡áÿ²ÿêÿêÿÝÿ½åÿ±ÿëÿëÿÛÿ¾˜êÿ±ÿëÿëÿÛÿ¾“ïÿ°ÿìÿìÿÚÿ¾óÿ°ÿìÿìÿÙÿ¿Šøÿ¯ÿíÿíÿØÿ¿…ýÿ¯ÿíÿíÿØÿ¿®ÿîÿíÿ×ÿÀü³ÿîÿîÿÖÿÀ÷·ÿïÿîÿÖÿÀó»ÿïÿïÿÔÿÁî¿ÿðÿïÿÔÿÁéÄÿðÿðÿÓÿÁåÇÿñÿðÿÒÿÂàÌÿñÿðÿÒÿÂÛÑÿñÿñÿÑÿÂ×ÔÿòÿñÿÐÿÃÒÙÿòÿòÿÏÿÃÍÝÿóÿòÿÏÿÃÉáÿóÿóÿÍÿÄÄåÿôÿóÿÍÿÄ¿êÿôÿóÿÍÿÄ»îÿôÿôÿËÿŶòÿõÿôÿËÿű÷ÿõÿôÿËÿÅ­ûÿõÿõÿÉÿƨÿÿöÿõÿÉÿÆ¥öÿõÿÉÿƤ÷ÿöÿÇÿǤ÷ÿöÿÇÿǤ÷ÿöÿÇÿÇ£øÿ÷ÿÅÿÈ£øÿ÷ÿÅÿÈ£øÿ÷ÿÅÿÈ£øÿøÿÃÿÉ¢ùÿøÿÃÿÉ¢ùÿøÿÃÿÉ¢ùÿøÿÃÿÉ¢ùÿùÿÁÿÊ¡úÿùÿÁÿÊ¡úÿùÿÁÿÊ¡úÿùÿÀÿË¡úÿùÿÀÿË ûÿúÿ¿ÿË ûÿúÿ¾ÿÌ ûÿúÿ¾ÿÌ ûÿúÿ¾ÿÌ ûÿúÿ½ÿÍŸüÿûÿ¼ÿÍŸüÿûÿ¼ÿÍŸüÿûÿ»ÿΟüÿûÿ»ÿΟüÿûÿ»ÿΞýÿûÿºÿÏžýÿüÿ¹ÿÏžýÿüÿ¹ÿÏžýÿüÿ¸ÿОýÿüÿ¸ÿÐþÿüÿ¸ÿÐþÿüÿ·ÿÑþÿüÿ·ÿÑþÿüÿ·ÿÑþÿýÿµÿÒþÿýÿµÿÒþÿýÿµÿÒœÿÿýÿ´ÿÓœÿÿýÿ´ÿÓœÿÿýÿ´ÿÓœÿÿýÿ³ÿÔœÿÿýÿ³ÿÔœÿÿýÿ³ÿÔœÿÿýÿ²ÿÕœÿÿýÿ²ÿÕœÿÿþÿ±ÿÕœÿÿþÿ°ÿÖœÿÿþÿ°ÿÖœÿÿþÿ°ÿÖœÿÿþÿ¯ÿלÿÿþÿ¯ÿלÿÿþÿ¯ÿלÿÿþÿ®ÿØœÿÿþÿ®ÿØœÿÿþÿ®ÿØœÿÿþÿ­ÿÙœÿÿþÿ­ÿÙœÿÿþÿ­ÿÙœÿÿþÿ­ÿÙœÿÿþÿ¬ÿÚœÿÿþÿ¬ÿÚœÿÿýÿ­ÿÚœÿÿýÿ¬ÿÛœÿÿýÿ¬ÿÛœÿÿýÿ¬ÿÛœÿÿýÿ«ÿÜœÿÿýÿ«ÿÜœÿÿýÿ«ÿÜœÿÿýÿªÿÝœÿÿýÿªÿÝœÿÿýÿªÿÝœÿÿýÿ©ÿÞœÿÿüÿªÿÞœÿÿüÿªÿÞœÿÿüÿ©ÿßþÿüÿ©ÿßþÿüÿ©ÿßþÿüÿ¨ÿàþÿüÿ¨ÿàþÿüÿ¨ÿàžýÿûÿ¨ÿážýÿûÿ¨ÿážýÿûÿ¨ÿážýÿûÿ§ÿâžýÿûÿ§ÿâŸüÿûÿ§ÿâŸüÿúÿ§ÿãŸüÿúÿ§ÿãŸüÿúÿ§ÿãŸüÿúÿ¦ÿä ûÿúÿ¦ÿä ûÿùÿ§ÿä ûÿùÿ¦ÿå ûÿùÿ¦ÿå¡úÿùÿ¦ÿå¡úÿùÿ¥ÿæ¡úÿøÿ¦ÿæ¡úÿøÿ¦ÿæ¢ùÿøÿ¥ÿç¢ùÿøÿ¥ÿç¢ùÿ÷ÿ¦ÿç¢ùÿ÷ÿ¥ÿè£øÿ÷ÿ¥ÿè£øÿöÿ¦ÿè£øÿöÿ¦ÿè¤÷ÿöÿ¥ÿé¤÷ÿõÿ¦ÿé¤÷ÿõÿ¦ÿé¥öÿõÿ¥ÿê¥öÿôÿ¦ÿê¥öÿôÿ¦ÿê¦õÿôÿ¥ÿë¦õÿóÿ¦ÿë¦õÿóÿ¦ÿë§ôÿóÿ¥ÿì§ôÿòÿ¦ÿì§ôÿòÿ¦ÿì¨óÿñÿ¦ÿí¨óÿñÿ¦ÿí¨óÿðÿ§ÿí©òÿðÿ¦ÿî©òÿðÿ¦ÿî©òÿïÿ§ÿîªñÿïÿ¦ÿïªñÿîÿ§ÿï«ðÿîÿ§ÿï«ðÿíÿ§ÿð¬ïÿíÿ§ÿð¬ïÿíÿ§ÿð¬ïÿìÿ§ÿñ­îÿìÿ§ÿñ­îÿëÿ¨ÿñ®íÿëÿ§ÿò®íÿêÿ¨ÿò¯ìÿêÿ¨ÿò¯ìÿéÿ¨ÿó°ëÿéÿ¨ÿó°ëÿèÿ©ÿó±êÿèÿ¨ÿô±êÿçÿ©ÿô²éÿçÿ©ÿô³èÿæÿ©ÿõ³èÿåÿªÿõ´çÿåÿªÿõµæÿäÿªÿöµæÿäÿªÿö¶åÿãÿ«ÿö¶åÿâÿ«ÿ÷·äÿâÿ«ÿ÷¸ãÿáÿ¬ÿ÷¸ãÿàÿ¬ÿø¹âÿàÿ¬ÿøºáÿßÿ­ÿøºáÿßÿ­ÿø»àÿÞÿ­ÿù¼ßÿÝÿ®ÿù½ÞÿÝÿ®ÿù½ÞÿÜÿ®ÿú¾ÝÿÛÿ¯ÿú¿ÜÿÚÿ°ÿú¿ÜÿÚÿ¯ÿûÀÛÿÙÿ°ÿûÁÚÿØÿ±ÿûÂÙÿ×ÿ±ÿüÂÙÿ×ÿ±ÿüÃØÿÖÿ²ÿüÄ×ÿÕÿ²ÿýÅÖÿÔÿ³ÿýÅÖÿÓÿ´ÿýÆÕÿÒÿ´ÿþÇÔÿÑÿµÿþÈÓÿÐÿ¶ÿþÈÓÿÏÿ¶ÿÿÉÒÿÎÿ·ÿÿÊÑÿÍÿ¸ÿÿËÐÿÌÿ¸ÿÌÏÿËÿ¹ÿÍÎÿÊÿºÿÎÍÿÉÿºÿÏÌÿÈÿ»ÿÐËÿÇÿ¼ÿÑÊÿÆÿ½ÿÿ‚ÒÉÿÅÿ¾ÿÿ‚ÓÈÿÄÿ¿ÿÿ‚ÔÇÿÃÿÀÿÿÿƒÕÆÿÂÿÁÿÿÿƒÖÅÿÁÿÂÿÿÿƒØÃÿÀÿÃÿþÿ„ÙÂÿ¿ÿÄÿþÿ„ÚÁÿ¾ÿÿÆÿþÿ„ÛÀÿ¼ÿÇÿýÿ…Ü¿ÿ»ÿÈÿýÿ…Þ½ÿºÿÿÊÿýÿ…ß¼ÿ¸ÿËÿüÿ†à»ÿ·ÿÌÿüÿ†â¹ÿ¶ÿÿÎÿüÿ†ã¸ÿ´ÿÏÿûÿ‡å¶ÿ³ÿÐÿûÿ‡æµÿ²ÿÿÒÿûÿ‡è³ÿ°ÿÿÔÿúÿˆé²ÿ®ÿÕÿúÿˆë°ÿ­ÿÿ×ÿúÿˆì¯ÿ«ÿØÿúÿˆî­ÿªÿÿÚÿùÿ‰ð«ÿ¨ÿÿÜÿùÿ‰ñªÿ¦ÿÿÞÿùÿ‰ó¨ÿ¤ÿÿàÿøÿŠõ¦ÿ¢ÿÿâÿøÿŠ÷¤ÿ ÿÿäÿøÿŠø£ÿžÿÿæÿ÷ÿ‹ú¡ÿœÿÿèÿ÷ÿ‹üŸÿšÿÿêÿ÷ÿ‹þÿ˜ÿÿìÿöÿŒ›ÿ–ÿÿîÿöÿÿšÿ”ÿÿðÿöÿþÿšÿ’ÿþóÿõÿ’üÿšÿÿÿõÿõÿ”úÿšÿÿÿ÷ÿõÿ—÷ÿšÿ‹ÿþúÿôÿ›ôÿšÿˆÿþýÿôÿòÿšÿ…ÿþÿôÿ ïÿšÿ‚ÿÿõÿ¤ìÿšÿÿÿÿþøÿ¨èÿšÿÿüÿýüÿ¬äÿšÿÿøÿüÿ°áÿšÿÿóÿ³Ýÿšÿÿòÿ¹ØÿšÿÿíÿÃÓÿšÿÿèÿÍÎÿšÿÿãÿÚÆÿšÿÿÿšÿÿÿšÿÿÿšÿÿÿšÿctsim-6.0.2/images/SplashScreen.psd0000644000175000017500000072715210667176710016250 0ustar kevinkevin8BPSôôB8BIMí ResolutionHH8BIMîAlpha Channel Names Transparency8BIMAlpha Channel Unicode Names Transparency8BIMïAlpha Channel Settingsÿÿd8BIMAlpha Channel Identifiers8BIM FX Global Lighting Anglex8BIMFX Global Altitude8BIMó Print Flags 8BIM Copyright Flag8BIM'Japanese Print Flags 8BIMõColor Halftone SettingsH/fflff/ff¡™š2Z5-8BIMøColor Transfer Settingspÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè8BIM Layer State8BIM Layer Groups 8BIMGuides@@8BIM URL overrides8BIMSlicesyôô SplashScreenôô8BIMICC Untagged Flag8BIMLayer ID Generator Base 8BIM New Windows ThumbnailWppP“;ÿØÿàJFIFHHÿîAdobed€ÿÛ„            ÿÀpp"ÿÝÿÄ?   3!1AQa"q2‘¡±B#$RÁb34r‚ÑC%’Sðáñcs5¢²ƒ&D“TdE£t6ÒUâeò³„ÃÓuãóF'”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö7GWgw‡—§·Ç×ç÷5!1AQaq"2‘¡±B#ÁRÑð3$bár‚’CScs4ñ%¢²ƒ&5ÂÒD“T£dEU6teâò³„ÃÓuãóF”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö'7GWgw‡—§·ÇÿÚ ?î:—Uêu†t.k¯ UöŒ¼»[½µVNÆ6ºZæz—½ß¾ï¡ÿÃ$}hÂéÙWdg⟲ÍÍÈîÜê™[ßmvS굌³ÔÙ³Ór~¡Ðº£zÑë=*ª.º¡NMY sØàß ñ±Íví§Ô:/TÌú¹oK~klÍÈþ{)í!¤ú¯c*c½•ìýþEêõozðëéþ« Šüœ¦TßÒog­Ú?Ò-´1VŸbÓEiö84·(4:6;@hk_]ì–º+«Û²¶ûÖý6¿Õôèúýˆl¢×Ö÷WÐ(š‹¶1ïk%ÞÆ¼3}?Eï·#ôßÍÙéúߥõVó©©Ïß¶ûÃCð.jˆõ«:ŸV³ßóÛ÷8ßõý"oáûÕ¾ßr~ÈÞ¸æÞ¤-nc:;[76¦—|XaŽfᶆ½­ýgû6zž¯«ú;’vUy;Òñl¡­«Ó:@-o½ž¥‡è½:é£n'ó>Ÿú/En5Í{CšdêHðxŸù©öûÈž¿£ÿzóçç3^‹@²Çï·uŒµ»eŒumÝé;ô”·ÚÏæ*¦ÿÒ)ÕWPm£#ö6;ns÷-hsK™[¬}Öìw«·'ÖÞö7ø_KÕú{©%íŽçìý꽡Üýÿ½ÿÑõT’I%,ç5­.q†$ž ¡¶ÖÚl¸na;¨`¥­€ßÒ{ŸêY»{ÿÁì­þŸ§þÃÙµµD´ ïùÑí;Ýÿ[QËd×»»Š¥ñ)g‡)—'/. ˜‡¹´eq‡óƒ×ýDÂŒ€;l»rª<Ë~?ìSVô7ÚíÛ*n÷÷ßë»þú¹ì?ñ—šdÇ'ˆ¼rÿ½ÿšÏ샱!×Idþ²"/s#€íÏQ—å°Òú“Æö?í¯IháÿŒ¼¬‡ëa£èÆý­vVªìþ ð¯¹ÀäË_xÈ(×ù,æÿ½þq¯’|F†ÁI$’ØcÿÕôçæáÖ÷×eõ±õëçZ£ùú;ÿ1!›ˆlô…Ìõ4»„’íÛZ?•ú7¬ž¥CìͲzC2Ø÷PÑ^H—9Ï~³õWìÙµŸá¿ã”wÖö¼t6Òlim%Žo­•W ÷9Ù6?èý]0ÌÞß„˜ŽCu]{OþõØgQÀ®Y‘S¾Ê'#kÁôÀÝ>¬Ñÿ7gÓJ¾£kZúòj{_«H{Lκkä±öäm.ýŠÒreÛlÙ½¶6ç[eÕìú>ÿw©úÓªõã:Æÿ7k¨Æàǽ¥¡Á†Áú ÏOßcj«gîz~¿§èURg·á?àvZiÿ6÷®å™2ÂÀr*/s¶Öæ¼n!Îö¹§Û»Ò³úû_—S« «&‹‹ý­{As‰ØÏ}{¿?ÛüÊÆe%• ýŒ®–ïÜl'Úkþ€©ö¿¦Êýþ“ôÞõ¥v#lÃÅôGzu¶»Åm´ÒöØCèŸkm}TÿŸêÒÊþÌ›#ÅF@ A½ø*÷%½ òŸýêaÔomîÄ·õªÛ½õU~;¡±.|]~=û?JÊ+S¯'?%³‰‚ç RÛim`ŽZ÷QfUÍsâÜ\:rØr³pÙN[žö¿¹†»Ò¯ôžÝ첚ªþBµ‹…‹ˆǬVÁ&`¹û¸ûŸºÇî³é½fø¿ÈñqpK‡~9èßó›6CÚøÞ{:wU¹Ž5âîú#»ÞÁüœŒ¯ÑXïë`«˜3®ôM¶Áº÷ÖØGÑu×;Þý¿˜ßæêúzu«i-_“å¹`}ŒQÇz>sç9zÐdNæØ>ê«1cÚÂDÄ $7¿òœÕ“Œu°‰¤9æŸ_)Û2:hµµ½áŽuàm¬öÿ†ÜÍŸŸ¿þ- ÔµíkÓCm îk‰ ltµ­}M³é¶Ë-ßý¦§¶a†4,êvXåÿvé}§X>£¶2 ‚à öOïmjfeã?fÛZ}G°N® o†ÿcßýEJ†ØçTN¥Xs\Fø-!µ±®ôš6?Óú,ßô=$:Im˜íN ÏѸ’òÇAÞæþô~›=›Ýé³Ùé×ÿiÒ´û1×}ïcþ·õŸÿÙ8BIM!Version compatibility infoUAdobe PhotoshopAdobe Photoshop 6.08BIM Plug-in resource block‚mopt€Xÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ8BIM¡Plug-in resource block¤msetnullHTMLBackgroundSettingsObjcnullBackgroundColorGreenlongÿBackgroundColorBluelongÿBackgroundImagePathTEXTUseImageAsBackgroundboolBackgroundColorStatelongBackgroundColorRedlongÿVersionlong HTMLSettingsObjcnullTagCaselongFileSavingSettingsObjcnullIncludeCopyrightboolSliceFileNameComponentsVlLslonglonglong longlonglongSavingFileNameComponentsVlLs longlonglonglonglonglonglonglonglongNameCompatibilityObjcnullNameCompatWindowsbool NameCompatMacboolNameCompatUNIXboolImageSubfolderNameTEXTimagesDuplicateFileNameBehaviorlongCopyBackgroundboolUseImageSubfolderboolImageMapLocationlong TDWidthHeightlong ImageMapTypelongGoLiveCompatibleboolSpacersEmptyCellslongIncludeCommentsboolSpacersHorizontallong StylesFormatlongQuoteAllAttributesboolSpacersVerticallongUseCSSbool AttributeCaselong LineEndingslongIndentlongÿÿÿÿxdÿúbEȬÿÿ þ(·(ËÞ8BIMnormÿ(è(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿLayer 28BIMluniLayer 28BIMlnsrlayr8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMfxrpÿÿÿ–Pÿÿÿ£ÿÿ6668BIMnorm‚(Dà(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿCTCTSim8BIMlfx2LnullScl UntF#Prc@YmasterFXSwitchbool8BIMlrFXŒ8BIMcmnS8BIMdsdw3x8BIMmul ¿8BIMisdw3x8BIMmul ¿8BIMoglw*ÿÿÿÿ¾½8BIMscrn¿ÿÿÿÿ¾½8BIMiglw+ÿÿÿÿ¾½8BIMscrn¿ÿÿÿÿ¾½8BIMbevlNx8BIMscrn8BIMmul ÿÿÿÿÿÿ¿¿ÿÿÿÿÿÿ8BIMsofi"8BIMnormÿÿÿÿÿ8BIMTyShAü?ð?ð@uÀW€2TxLrTxt TEXTCTCTSimTxtCObjcnullHrzndoubVrtcdoub textGriddingenum textGriddingNoneOrntenumOrntHrznAntAenumAnntAnSm EngineDatatdta@ << /EngineDict << /Editor << /Text (þÿCTCTSim ) >> /ParagraphRun << /DefaultRunData << /ParagraphSheet << /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ 0.80000 1.0 1.33000 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.20000 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> /RunArray [ << /ParagraphSheet << /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ 0.80000 1.0 1.33000 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.20000 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> ] /RunLengthArray [ 8 ] /IsJoinable 1 >> /StyleRun << /DefaultRunData << /StyleSheet << /StyleSheetData << /AutoKerning true /FontSize 18.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /Tracking 0 /HorizontalScale 1.0 /VerticalScale 1.0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /YUnderline 1 /Strikethrough false /Ligatures true /OldStyleFigures false /ProportionalNumbers true /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /WariChuLineCount 1 /WariChuScale 1.0 /WariChuWidowPercentage 25 /WariChuOrphanPercentage 25 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst false /Font 0 >> >> >> /RunArray [ << /StyleSheet << /StyleSheetData << /AutoKerning true /FontSize 18.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /Tracking 0 /HorizontalScale 1.0 /VerticalScale 1.0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /YUnderline 1 /Strikethrough false /Ligatures true /OldStyleFigures false /ProportionalNumbers true /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /WariChuLineCount 1 /WariChuScale 1.0 /WariChuWidowPercentage 25 /WariChuOrphanPercentage 25 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst false /Font 0 >> >> >> ] /RunLengthArray [ 8 ] /IsJoinable 2 >> /GridInfo << /GridIsOn false /ShowGrid false /GridSize 0.0 /GridLeading 0.0 /GridColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /GridLeadingFillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /AlignLineHeightToGridFlags false >> /AntiAlias 3 /UseFractionalGlyphWidths true /Rendered << /Version 1 /Shapes << /WritingDirection 0 /Children [ << /ShapeType 0 /Procession 0 /Lines << /WritingDirection 0 /Children [ << /Procession 0 /LineTop -14.87988 /Leading 21.60000 /WordStarts [ 0 8 ] /CharacterCount 8 /Segments << /WritingDirection 0 /Children [ << /Range [ 0.0 30000.0 ] /Words << /WritingDirection 0 /Children [ << /Type 0 /Base << /CharacterCount 8 /Advance 69.28418 /TrailingAdvance 6.02930 /Leading 21.60000 /TrailingCharacterCount 1 /StyleRunAlignment 2 /Language 0 /IsBrokenWord 0 /BreakType 0 /StartHang 0.0 /EndHang 0.0 /MojiKumiFirst 0.0 /MojiKumiMiddle 0.0 /MojiKumiEnd 0.0 /Strikes << /WritingDirection 0 /Children [ << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ 0.0 0.0 ] /GlyphMaps [ 38 55 38 55 54 76 80 3 ] /LigatureMaps [ ] /Flags 68 /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ 69.28418 0.0 ] >> ] >> >> >> ] >> >> ] >> >> ] >> /Cookie << /Photoshop << /ShapeType 0 /PointBase [ 0.0 0.0 ] /Base << /ShapeType 0 /TransformPoint0 [ 1.0 0.0 ] /TransformPoint1 [ 0.0 1.0 ] /TransformPoint2 [ 0.0 0.0 ] >> >> >> >> ] >> >> >> /ResourceDict << /KinsokuSet [ << /Name (þÿPhotoshopKinsokuHard) /NoStart (þÿ!\),.:;?]}¢    0!! 0000 0 0 0000A0C0E0G0I0c0ƒ0…0‡0Ž0›0œ00ž0¡0£0¥0§0©0Ã0ã0å0ç0î0õ0ö0û0ü0ý0þÿÿÿ ÿ ÿÿÿÿÿ=ÿ]) /NoEnd (þÿ\([{£§  00 0 0000ÿÿÿÿ ÿ;ÿ[ÿå) /Keep (þÿ  %) /Hanging (þÿ,.00) >> << /Name (þÿPhotoshopKinsokuSoft) /NoStart (þÿ  0000 0 0 00000ž0û0ý0þÿÿ ÿ ÿÿÿÿÿ=ÿ]) /NoEnd (þÿ  00 0 000ÿÿ;ÿ[) /Keep (þÿ  %) /Hanging (þÿ,.00) >> ] /MojiKumiSet [ << /InternalName (þÿPhotoshop6MojiKumiSet1) >> << /InternalName (þÿPhotoshop6MojiKumiSet2) >> << /InternalName (þÿPhotoshop6MojiKumiSet3) >> << /InternalName (þÿPhotoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (þÿDefault) /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ 0.80000 1.0 1.33000 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.20000 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (þÿNormal) /StyleSheetData << /FontSize 18.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 27.0 /Tracking 0 /HorizontalScale 1.0 /VerticalScale 1.0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /YUnderline 1 /Strikethrough false /Ligatures true /OldStyleFigures false /ProportionalNumbers true /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /WariChuLineCount 1 /WariChuScale 1.0 /WariChuWidowPercentage 25 /WariChuOrphanPercentage 25 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /Font 1 >> >> << /StyleSheetData << >> >> ] /FontSet [ << /Name (þÿInformalRoman-Regular) /Script 0 /FontType 1 /Synthetic 0 /FontMetrics << /FontSize 1.0 /SpaceGlyphWidth 0.33496 /Ascent 0.82666 /Descent 0.25000 /CapHeight 0.67499 /DistanceToBaseline 0.82666 /UnderlinePosition 0.14893 /UnderlineThickness 0.04980 /HCJKProporitional false /VProporitional false >> >> << /Name (þÿTimesNewRomanPSMT) /Script 0 /FontType 1 /Synthetic 0 /FontMetrics << /FontSize 1.0 /SpaceGlyphWidth 0.25000 /Ascent 1.00684 /Descent 0.30664 /CapHeight 0.67799 /DistanceToBaseline 1.00684 /UnderlinePosition 0.10889 /UnderlineThickness 0.04883 /HCJKProporitional false /VProporitional false >> >> ] /SuperscriptSize 0.58300 /SuperscriptPosition 0.33300 /SubscriptSize 0.58300 /SubscriptPosition 0.33300 /SmallCapSize 0.70000 >> >> warp warpStyleenum warpStylewarpNone warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrzn8BIMluniCTCTSim8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMfxrpÈ ï ÿÿš:::8BIMnormÿ(C|(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿKevin M. Rosenberg, M.D. kevin8BIMTyShBD?ð?ð@"@}`2TxLrTxt TEXT-Kevin M. Rosenberg, M.D. kevin@rosenberg.netTxtCObjcnullHrzndoubVrtcdoub textGriddingenum textGriddingNoneOrntenumOrntHrznAntAenumAnntAnSm EngineDatatdta@ << /EngineDict << /Editor << /Text (þÿKevin M. Rosenberg, M.D. kevin@rosenberg.net ) >> /ParagraphRun << /DefaultRunData << /ParagraphSheet << /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ 0.80000 1.0 1.33000 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.20000 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> /RunArray [ << /ParagraphSheet << /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ 0.80000 1.0 1.33000 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.20000 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> << /ParagraphSheet << /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ 0.80000 1.0 1.33000 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.20000 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> ] /RunLengthArray [ 25 20 ] /IsJoinable 1 >> /StyleRun << /DefaultRunData << /StyleSheet << /StyleSheetData << /AutoKerning true /FontSize 18.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /Tracking 0 /HorizontalScale 1.0 /VerticalScale 1.0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /YUnderline 1 /Strikethrough false /Ligatures true /OldStyleFigures false /ProportionalNumbers true /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /WariChuLineCount 1 /WariChuScale 1.0 /WariChuWidowPercentage 25 /WariChuOrphanPercentage 25 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst false /Font 0 >> >> >> /RunArray [ << /StyleSheet << /StyleSheetData << /AutoKerning true /FontSize 18.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /Tracking 0 /HorizontalScale 1.0 /VerticalScale 1.0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /YUnderline 1 /Strikethrough false /Ligatures true /OldStyleFigures false /ProportionalNumbers true /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /WariChuLineCount 1 /WariChuScale 1.0 /WariChuWidowPercentage 25 /WariChuOrphanPercentage 25 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst false /Font 0 >> >> >> ] /RunLengthArray [ 45 ] /IsJoinable 2 >> /GridInfo << /GridIsOn false /ShowGrid false /GridSize 0.0 /GridLeading 0.0 /GridColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /GridLeadingFillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /AlignLineHeightToGridFlags false >> /AntiAlias 3 /UseFractionalGlyphWidths true /Rendered << /Version 1 /Shapes << /WritingDirection 0 /Children [ << /ShapeType 0 /Procession 0 /Lines << /WritingDirection 0 /Children [ << /Procession 0 /LineTop -18.00879 /Leading 21.60000 /WordStarts [ 0 6 9 20 22 25 ] /CharacterCount 25 /Segments << /WritingDirection 0 /Children [ << /Range [ 0.0 30000.0 ] /Words << /WritingDirection 0 /Children [ << /Type 0 /Base << /CharacterCount 6 /Advance 62.65723 /TrailingAdvance 6.15234 /Leading 21.60000 /TrailingCharacterCount 1 /StyleRunAlignment 2 /Language 0 /IsBrokenWord 0 /BreakType 0 /StartHang 0.0 /EndHang 0.0 /MojiKumiFirst 0.0 /MojiKumiMiddle 0.0 /MojiKumiEnd 0.0 /Strikes << /WritingDirection 0 /Children [ << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ 0.0 0.0 ] /GlyphMaps [ 46 72 89 76 81 3 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ 62.65723 0.0 ] >> ] >> >> >> << /Type 0 /Base << /CharacterCount 3 /Advance 29.71582 /TrailingAdvance 6.15234 /Leading 21.60000 /TrailingCharacterCount 1 /StyleRunAlignment 2 /Language 0 /IsBrokenWord 0 /BreakType 0 /StartHang 0.0 /EndHang 0.0 /MojiKumiFirst 0.0 /MojiKumiMiddle 0.0 /MojiKumiEnd 0.0 /Strikes << /WritingDirection 0 /Children [ << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ 62.65723 0.0 ] /GlyphMaps [ 48 17 3 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ 92.37305 0.0 ] >> ] >> >> >> << /Type 0 /Base << /CharacterCount 11 /Advance 120.62109 /TrailingAdvance 6.15234 /Leading 21.60000 /TrailingCharacterCount 1 /StyleRunAlignment 2 /Language 0 /IsBrokenWord 0 /BreakType 0 /StartHang 0.0 /EndHang 0.0 /MojiKumiFirst 0.0 /MojiKumiMiddle 0.0 /MojiKumiEnd 0.0 /Strikes << /WritingDirection 0 /Children [ << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ 92.37305 0.0 ] /GlyphMaps [ 53 82 86 72 81 69 72 85 74 15 3 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ 212.99414 0.0 ] >> ] >> >> >> << /Type 0 /Base << /CharacterCount 2 /Advance 23.56348 /TrailingAdvance 0.0 /Leading 21.60000 /TrailingCharacterCount 0 /StyleRunAlignment 2 /Language 0 /IsBrokenWord 0 /BreakType 0 /StartHang 0.0 /EndHang 0.0 /MojiKumiFirst 0.0 /MojiKumiMiddle 0.0 /MojiKumiEnd 0.0 /Strikes << /WritingDirection 0 /Children [ << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ 212.99414 0.0 ] /GlyphMaps [ 48 17 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ 236.55762 0.0 ] >> ] >> >> >> << /Type 0 /Base << /CharacterCount 3 /Advance 27.59766 /TrailingAdvance 6.15234 /Leading 21.60000 /TrailingCharacterCount 1 /StyleRunAlignment 2 /Language 0 /IsBrokenWord 0 /BreakType 0 /StartHang 0.0 /EndHang 0.0 /MojiKumiFirst 0.0 /MojiKumiMiddle 0.0 /MojiKumiEnd 0.0 /Strikes << /WritingDirection 0 /Children [ << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ 236.55762 0.0 ] /GlyphMaps [ 39 17 3 ] /LigatureMaps [ ] /Flags 68 /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ 264.15527 0.0 ] >> ] >> >> >> ] >> >> ] >> >> << /Procession 0 /LineTop 3.59121 /Leading 21.60000 /RomanBaseline 21.60000 /WordStarts [ 0 16 20 ] /CharacterCount 20 /Segments << /WritingDirection 0 /Children [ << /Range [ 0.0 30000.0 ] /Words << /WritingDirection 0 /Children [ << /Type 0 /Base << /CharacterCount 16 /Advance 181.38867 /TrailingAdvance 0.0 /Leading 21.60000 /TrailingCharacterCount 0 /StyleRunAlignment 2 /Language 0 /IsBrokenWord 0 /BreakType 0 /StartHang 0.0 /EndHang 0.0 /MojiKumiFirst 0.0 /MojiKumiMiddle 0.0 /MojiKumiEnd 0.0 /Strikes << /WritingDirection 0 /Children [ << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ 0.0 21.60000 ] /GlyphMaps [ 78 72 89 76 81 35 85 82 86 72 81 69 72 85 74 17 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ 181.38867 21.60000 ] >> ] >> >> >> << /Type 0 /Base << /CharacterCount 4 /Advance 39.12891 /TrailingAdvance 6.15234 /Leading 21.60000 /TrailingCharacterCount 1 /StyleRunAlignment 2 /Language 0 /IsBrokenWord 0 /BreakType 0 /StartHang 0.0 /EndHang 0.0 /MojiKumiFirst 0.0 /MojiKumiMiddle 0.0 /MojiKumiEnd 0.0 /Strikes << /WritingDirection 0 /Children [ << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ 181.38867 21.60000 ] /GlyphMaps [ 81 72 87 3 ] /LigatureMaps [ ] /Flags 68 /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ 220.51758 21.60000 ] >> ] >> >> >> ] >> >> ] >> >> ] >> /Cookie << /Photoshop << /ShapeType 0 /PointBase [ 0.0 0.0 ] /Base << /ShapeType 0 /TransformPoint0 [ 1.0 0.0 ] /TransformPoint1 [ 0.0 1.0 ] /TransformPoint2 [ 0.0 0.0 ] >> >> >> >> ] >> >> >> /ResourceDict << /KinsokuSet [ << /Name (þÿPhotoshopKinsokuHard) /NoStart (þÿ!\),.:;?]}¢    0!! 0000 0 0 0000A0C0E0G0I0c0ƒ0…0‡0Ž0›0œ00ž0¡0£0¥0§0©0Ã0ã0å0ç0î0õ0ö0û0ü0ý0þÿÿÿ ÿ ÿÿÿÿÿ=ÿ]) /NoEnd (þÿ\([{£§  00 0 0000ÿÿÿÿ ÿ;ÿ[ÿå) /Keep (þÿ  %) /Hanging (þÿ,.00) >> << /Name (þÿPhotoshopKinsokuSoft) /NoStart (þÿ  0000 0 0 00000ž0û0ý0þÿÿ ÿ ÿÿÿÿÿ=ÿ]) /NoEnd (þÿ  00 0 000ÿÿ;ÿ[) /Keep (þÿ  %) /Hanging (þÿ,.00) >> ] /MojiKumiSet [ << /InternalName (þÿPhotoshop6MojiKumiSet1) >> << /InternalName (þÿPhotoshop6MojiKumiSet2) >> << /InternalName (þÿPhotoshop6MojiKumiSet3) >> << /InternalName (þÿPhotoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (þÿDefault) /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ 0.80000 1.0 1.33000 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.20000 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (þÿNormal) /StyleSheetData << /FontSize 18.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 27.0 /Tracking 0 /HorizontalScale 1.0 /VerticalScale 1.0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /YUnderline 1 /Strikethrough false /Ligatures true /OldStyleFigures false /ProportionalNumbers true /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /WariChuLineCount 1 /WariChuScale 1.0 /WariChuWidowPercentage 25 /WariChuOrphanPercentage 25 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /Font 1 >> >> << /StyleSheetData << >> >> ] /FontSet [ << /Name (þÿVerdana-Bold) /Script 0 /FontType 1 /Synthetic 0 /FontMetrics << /FontSize 1.0 /SpaceGlyphWidth 0.34180 /Ascent 1.00049 /Descent 0.20752 /CapHeight 0.74199 /DistanceToBaseline 1.00049 /UnderlinePosition 0.06787 /UnderlineThickness 0.10303 /HCJKProporitional false /VProporitional false >> >> << /Name (þÿTimesNewRomanPSMT) /Script 0 /FontType 1 /Synthetic 0 /FontMetrics << /FontSize 1.0 /SpaceGlyphWidth 0.25000 /Ascent 1.00684 /Descent 0.30664 /CapHeight 0.67799 /DistanceToBaseline 1.00684 /UnderlinePosition 0.10889 /UnderlineThickness 0.04883 /HCJKProporitional false /VProporitional false >> >> ] /SuperscriptSize 0.58300 /SuperscriptPosition 0.33300 /SubscriptSize 0.58300 /SubscriptPosition 0.33300 /SmallCapSize 0.70000 >> >> warp warpStyleenum warpStylewarpNone warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrzn8BIMluni@Kevin M. Rosenberg, M.D. kevin8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMfxrpÀ2À* 7Öÿÿ „8BIMnormÿ(Bð(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿCTSim 8BIMTyShAü?ð?ð@[À@K2TxLrTxt TEXTCTSim TxtCObjcnullHrzndoubVrtcdoub textGriddingenum textGriddingNoneOrntenumOrntHrznAntAenumAnntAnSm EngineDatatdta@ << /EngineDict << /Editor << /Text (þÿCTSim ) >> /ParagraphRun << /DefaultRunData << /ParagraphSheet << /Properties << /Justification 2 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ 0.80000 1.0 1.33000 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.20000 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> /RunArray [ << /ParagraphSheet << /Properties << /Justification 2 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ 0.80000 1.0 1.33000 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.20000 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> << /ParagraphSheet << /Properties << /Justification 2 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ 0.80000 1.0 1.33000 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.20000 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> ] /RunLengthArray [ 6 2 ] /IsJoinable 1 >> /StyleRun << /DefaultRunData << /StyleSheet << /StyleSheetData << /AutoKerning true /FontSize 60.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /Tracking 0 /HorizontalScale 1.0 /VerticalScale 1.0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /YUnderline 1 /Strikethrough false /Ligatures true /OldStyleFigures false /ProportionalNumbers true /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /WariChuLineCount 1 /WariChuScale 1.0 /WariChuWidowPercentage 25 /WariChuOrphanPercentage 25 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst false /Font 0 >> >> >> /RunArray [ << /StyleSheet << /StyleSheetData << /AutoKerning true /FontSize 60.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /Tracking 0 /HorizontalScale 1.0 /VerticalScale 1.0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /YUnderline 1 /Strikethrough false /Ligatures true /OldStyleFigures false /ProportionalNumbers true /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /WariChuLineCount 1 /WariChuScale 1.0 /WariChuWidowPercentage 25 /WariChuOrphanPercentage 25 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst false /Font 0 >> >> >> << /StyleSheet << /StyleSheetData << /AutoKerning true /FontSize 60.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /Tracking 0 /HorizontalScale 1.0 /VerticalScale 1.0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /YUnderline 1 /Strikethrough false /Ligatures true /OldStyleFigures false /ProportionalNumbers true /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /WariChuLineCount 1 /WariChuScale 1.0 /WariChuWidowPercentage 25 /WariChuOrphanPercentage 25 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst false /Kerning 0 /Font 0 >> >> >> << /StyleSheet << /StyleSheetData << /AutoKerning true /FontSize 30.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /Tracking 0 /HorizontalScale 1.0 /VerticalScale 1.0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /YUnderline 1 /Strikethrough false /Ligatures true /OldStyleFigures false /ProportionalNumbers true /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /WariChuLineCount 1 /WariChuScale 1.0 /WariChuWidowPercentage 25 /WariChuOrphanPercentage 25 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst false /Font 0 >> >> >> ] /RunLengthArray [ 5 1 2 ] /IsJoinable 2 >> /GridInfo << /GridIsOn false /ShowGrid false /GridSize 0.0 /GridLeading 0.0 /GridColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /GridLeadingFillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /AlignLineHeightToGridFlags false >> /AntiAlias 3 /UseFractionalGlyphWidths true /Rendered << /Version 1 /Shapes << /WritingDirection 0 /Children [ << /ShapeType 0 /Procession 0 /Lines << /WritingDirection 0 /Children [ << /Procession 0 /LineTop -60.02930 /Leading 72.0 /WordStarts [ 0 6 ] /CharacterCount 6 /Segments << /WritingDirection 0 /Children [ << /Range [ 0.0 30000.0 ] /Words << /WritingDirection 0 /Children [ << /Type 0 /Base << /CharacterCount 6 /Advance 125.97656 /TrailingAdvance 20.50781 /Leading 72.0 /TrailingCharacterCount 1 /StyleRunAlignment 2 /Language 0 /IsBrokenWord 0 /BreakType 0 /StartHang 0.0 /EndHang 0.0 /MojiKumiFirst 0.0 /MojiKumiMiddle 0.0 /MojiKumiEnd 0.0 /Strikes << /WritingDirection 0 /Children [ << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 60.0 60.0 ] /FontSize 60.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ -105.46875 0.0 ] /GlyphMaps [ 38 55 54 76 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ 41.98242 0.0 ] >> << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 60.0 60.0 ] /FontSize 60.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ 41.98242 0.0 ] /GlyphMaps [ 80 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ 105.46875 0.0 ] >> << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 60.0 60.0 ] /FontSize 60.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ 105.46875 0.0 ] /GlyphMaps [ 3 ] /LigatureMaps [ ] /Flags 68 /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ 125.97656 0.0 ] >> ] >> >> >> ] >> >> ] >> >> << /Procession 0 /LineTop 5.98535 /Leading 36.0 /RomanBaseline 36.0 /WordStarts [ 0 2 ] /CharacterCount 2 /Segments << /WritingDirection 0 /Children [ << /Range [ 0.0 30000.0 ] /Words << /WritingDirection 0 /Children [ << /Type 0 /Base << /CharacterCount 2 /Advance 20.50781 /TrailingAdvance 20.50781 /Leading 36.0 /TrailingCharacterCount 2 /StyleRunAlignment 2 /Language 0 /IsBrokenWord 0 /BreakType 0 /StartHang 0.0 /EndHang 0.0 /MojiKumiFirst 0.0 /MojiKumiMiddle 0.0 /MojiKumiEnd 0.0 /Strikes << /WritingDirection 0 /Children [ << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 30.0 30.0 ] /FontSize 30.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ 0.0 36.0 ] /GlyphMaps [ 3 3 ] /LigatureMaps [ ] /Flags 68 /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ 20.50781 36.0 ] >> ] >> >> >> ] >> >> ] >> >> ] >> /Cookie << /Photoshop << /ShapeType 0 /PointBase [ 0.0 0.0 ] /Base << /ShapeType 0 /TransformPoint0 [ 1.0 0.0 ] /TransformPoint1 [ 0.0 1.0 ] /TransformPoint2 [ 0.0 0.0 ] >> >> >> >> ] >> >> >> /ResourceDict << /KinsokuSet [ << /Name (þÿPhotoshopKinsokuHard) /NoStart (þÿ!\),.:;?]}¢    0!! 0000 0 0 0000A0C0E0G0I0c0ƒ0…0‡0Ž0›0œ00ž0¡0£0¥0§0©0Ã0ã0å0ç0î0õ0ö0û0ü0ý0þÿÿÿ ÿ ÿÿÿÿÿ=ÿ]) /NoEnd (þÿ\([{£§  00 0 0000ÿÿÿÿ ÿ;ÿ[ÿå) /Keep (þÿ  %) /Hanging (þÿ,.00) >> << /Name (þÿPhotoshopKinsokuSoft) /NoStart (þÿ  0000 0 0 00000ž0û0ý0þÿÿ ÿ ÿÿÿÿÿ=ÿ]) /NoEnd (þÿ  00 0 000ÿÿ;ÿ[) /Keep (þÿ  %) /Hanging (þÿ,.00) >> ] /MojiKumiSet [ << /InternalName (þÿPhotoshop6MojiKumiSet1) >> << /InternalName (þÿPhotoshop6MojiKumiSet2) >> << /InternalName (þÿPhotoshop6MojiKumiSet3) >> << /InternalName (þÿPhotoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (þÿDefault) /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ 0.80000 1.0 1.33000 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.20000 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (þÿNormal) /StyleSheetData << /FontSize 18.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 27.0 /Tracking 0 /HorizontalScale 1.0 /VerticalScale 1.0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /YUnderline 1 /Strikethrough false /Ligatures true /OldStyleFigures false /ProportionalNumbers true /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /WariChuLineCount 1 /WariChuScale 1.0 /WariChuWidowPercentage 25 /WariChuOrphanPercentage 25 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /Font 1 >> >> << /StyleSheetData << >> >> ] /FontSet [ << /Name (þÿVerdana-BoldItalic) /Script 0 /FontType 1 /Synthetic 0 /FontMetrics << /FontSize 1.0 /SpaceGlyphWidth 0.34180 /Ascent 1.00049 /Descent 0.20752 /CapHeight 0.74199 /DistanceToBaseline 1.00049 /UnderlinePosition 0.06787 /UnderlineThickness 0.10303 /HCJKProporitional false /VProporitional false >> >> << /Name (þÿTimesNewRomanPSMT) /Script 0 /FontType 1 /Synthetic 0 /FontMetrics << /FontSize 1.0 /SpaceGlyphWidth 0.25000 /Ascent 1.00684 /Descent 0.30664 /CapHeight 0.67799 /DistanceToBaseline 1.00684 /UnderlinePosition 0.10889 /UnderlineThickness 0.04883 /HCJKProporitional false /VProporitional false >> >> ] /SuperscriptSize 0.58300 /SuperscriptPosition 0.33300 /SubscriptSize 0.58300 /SubscriptPosition 0.33300 /SmallCapSize 0.70000 >> >> warp warpStyleenum warpStylewarpNone warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrzn8BIMluniCTSim 8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMfxrp@K€@">ÔeôÿÿË:::8BIMnormÿ(C€(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿThe Open-Source Computed Tomo8BIMTyShBH?ð?ð@0@S2TxLrTxt TEXT/The Open-Source Computed Tomography SimulatorTxtCObjcnullHrzndoubVrtcdoub textGriddingenum textGriddingNoneOrntenumOrntHrznAntAenumAnntAnSm EngineDatatdta@ << /EngineDict << /Editor << /Text (þÿThe Open-Source Computed Tomography Simulator ) >> /ParagraphRun << /DefaultRunData << /ParagraphSheet << /Properties << /Justification 1 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ 0.80000 1.0 1.33000 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.20000 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> /RunArray [ << /ParagraphSheet << /Properties << /Justification 1 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ 0.80000 1.0 1.33000 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.20000 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> << /ParagraphSheet << /Properties << /Justification 1 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ 0.80000 1.0 1.33000 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.20000 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> ] /RunLengthArray [ 26 21 ] /IsJoinable 1 >> /StyleRun << /DefaultRunData << /StyleSheet << /StyleSheetData << /AutoKerning true /FontSize 18.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /Tracking 0 /HorizontalScale 1.0 /VerticalScale 1.0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /YUnderline 1 /Strikethrough false /Ligatures true /OldStyleFigures false /ProportionalNumbers true /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /WariChuLineCount 1 /WariChuScale 1.0 /WariChuWidowPercentage 25 /WariChuOrphanPercentage 25 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst false /Font 0 >> >> >> /RunArray [ << /StyleSheet << /StyleSheetData << /AutoKerning true /FontSize 18.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /Tracking 0 /HorizontalScale 1.0 /VerticalScale 1.0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /YUnderline 1 /Strikethrough false /Ligatures true /OldStyleFigures false /ProportionalNumbers true /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /WariChuLineCount 1 /WariChuScale 1.0 /WariChuWidowPercentage 25 /WariChuOrphanPercentage 25 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst false /Font 0 >> >> >> ] /RunLengthArray [ 47 ] /IsJoinable 2 >> /GridInfo << /GridIsOn false /ShowGrid false /GridSize 0.0 /GridLeading 0.0 /GridColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /GridLeadingFillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /AlignLineHeightToGridFlags false >> /AntiAlias 3 /UseFractionalGlyphWidths true /Rendered << /Version 1 /Shapes << /WritingDirection 0 /Children [ << /ShapeType 0 /Procession 0 /Lines << /WritingDirection 0 /Children [ << /Procession 0 /LineTop -18.00879 /Leading 21.60000 /WordStarts [ 0 4 9 16 26 ] /CharacterCount 26 /Segments << /WritingDirection 0 /Children [ << /Range [ 0.0 30000.0 ] /Words << /WritingDirection 0 /Children [ << /Type 0 /Base << /CharacterCount 4 /Advance -245.61035 /TrailingAdvance 6.15234 /Leading 21.60000 /TrailingCharacterCount 1 /StyleRunAlignment 2 /Language 0 /IsBrokenWord 0 /BreakType 0 /StartHang 0.0 /EndHang 0.0 /MojiKumiFirst 0.0 /MojiKumiMiddle 0.0 /MojiKumiEnd 0.0 /Strikes << /WritingDirection 0 /Children [ << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ -288.80859 0.0 ] /GlyphMaps [ 55 75 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ -263.71582 0.0 ] >> << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ -263.71582 0.0 ] /GlyphMaps [ 72 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ -251.76270 0.0 ] >> << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ -251.76270 0.0 ] /GlyphMaps [ 3 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ -245.61035 0.0 ] >> ] >> >> >> << /Type 0 /Base << /CharacterCount 5 /Advance -184.30664 /TrailingAdvance 0.0 /Leading 21.60000 /TrailingCharacterCount 0 /StyleRunAlignment 2 /Language 0 /IsBrokenWord 0 /BreakType 0 /StartHang 0.0 /EndHang 0.0 /MojiKumiFirst 0.0 /MojiKumiMiddle 0.0 /MojiKumiEnd 0.0 /Strikes << /WritingDirection 0 /Children [ << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ -245.61035 0.0 ] /GlyphMaps [ 50 83 72 81 16 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ -184.30664 0.0 ] >> ] >> >> >> << /Type 0 /Base << /CharacterCount 7 /Advance -108.71191 /TrailingAdvance 6.15234 /Leading 21.60000 /TrailingCharacterCount 1 /StyleRunAlignment 2 /Language 0 /IsBrokenWord 0 /BreakType 0 /StartHang 0.0 /EndHang 0.0 /MojiKumiFirst 0.0 /MojiKumiMiddle 0.0 /MojiKumiEnd 0.0 /Strikes << /WritingDirection 0 /Children [ << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ -184.30664 0.0 ] /GlyphMaps [ 54 82 88 85 70 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ -126.81738 0.0 ] >> << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ -126.81738 0.0 ] /GlyphMaps [ 72 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ -114.86426 0.0 ] >> << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ -114.86426 0.0 ] /GlyphMaps [ 3 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ -108.71191 0.0 ] >> ] >> >> >> << /Type 0 /Base << /CharacterCount 10 /Advance 6.15234 /TrailingAdvance 12.30469 /Leading 21.60000 /TrailingCharacterCount 2 /StyleRunAlignment 2 /Language 0 /IsBrokenWord 0 /BreakType 0 /StartHang 0.0 /EndHang 0.0 /MojiKumiFirst 0.0 /MojiKumiMiddle 0.0 /MojiKumiEnd 0.0 /Strikes << /WritingDirection 0 /Children [ << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ -108.71191 0.0 ] /GlyphMaps [ 38 82 80 83 88 87 72 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ -18.73828 0.0 ] >> << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ -18.73828 0.0 ] /GlyphMaps [ 71 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ -6.15234 0.0 ] >> << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ -6.15234 0.0 ] /GlyphMaps [ 3 3 ] /LigatureMaps [ ] /Flags 68 /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ 6.15234 0.0 ] >> ] >> >> >> ] >> >> ] >> >> << /Procession 0 /LineTop 3.59121 /Leading 21.60000 /RomanBaseline 21.60000 /WordStarts [ 0 11 21 ] /CharacterCount 21 /Segments << /WritingDirection 0 /Children [ << /Range [ 0.0 30000.0 ] /Words << /WritingDirection 0 /Children [ << /Type 0 /Base << /CharacterCount 11 /Advance -98.47168 /TrailingAdvance 6.15234 /Leading 21.60000 /TrailingCharacterCount 1 /StyleRunAlignment 2 /Language 0 /IsBrokenWord 0 /BreakType 0 /StartHang 0.0 /EndHang 0.0 /MojiKumiFirst 0.0 /MojiKumiMiddle 0.0 /MojiKumiEnd 0.0 /Strikes << /WritingDirection 0 /Children [ << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ -231.30078 21.60000 ] /GlyphMaps [ 55 82 80 82 74 85 68 83 75 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ -116.33984 21.60000 ] >> << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ -116.33984 21.60000 ] /GlyphMaps [ 92 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ -104.62402 21.60000 ] >> << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ -104.62402 21.60000 ] /GlyphMaps [ 3 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ -98.47168 21.60000 ] >> ] >> >> >> << /Type 0 /Base << /CharacterCount 10 /Advance 6.15332 /TrailingAdvance 6.15234 /Leading 21.60000 /TrailingCharacterCount 1 /StyleRunAlignment 2 /Language 0 /IsBrokenWord 0 /BreakType 0 /StartHang 0.0 /EndHang 0.0 /MojiKumiFirst 0.0 /MojiKumiMiddle 0.0 /MojiKumiEnd 0.0 /Strikes << /WritingDirection 0 /Children [ << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ -98.47168 21.60000 ] /GlyphMaps [ 54 76 80 88 79 68 87 82 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ -8.94629 21.60000 ] >> << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ -8.94629 21.60000 ] /GlyphMaps [ 85 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ 0.00098 21.60000 ] >> << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ 0.00098 21.60000 ] /GlyphMaps [ 3 ] /LigatureMaps [ ] /Flags 68 /FillColor << /Type 1 /Values [ 1.0 0.04706 0.51764 0.07059 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ 6.15332 21.60000 ] >> ] >> >> >> ] >> >> ] >> >> ] >> /Cookie << /Photoshop << /ShapeType 0 /PointBase [ 0.0 0.0 ] /Base << /ShapeType 0 /TransformPoint0 [ 1.0 0.0 ] /TransformPoint1 [ 0.0 1.0 ] /TransformPoint2 [ 0.0 0.0 ] >> >> >> >> ] >> >> >> /ResourceDict << /KinsokuSet [ << /Name (þÿPhotoshopKinsokuHard) /NoStart (þÿ!\),.:;?]}¢    0!! 0000 0 0 0000A0C0E0G0I0c0ƒ0…0‡0Ž0›0œ00ž0¡0£0¥0§0©0Ã0ã0å0ç0î0õ0ö0û0ü0ý0þÿÿÿ ÿ ÿÿÿÿÿ=ÿ]) /NoEnd (þÿ\([{£§  00 0 0000ÿÿÿÿ ÿ;ÿ[ÿå) /Keep (þÿ  %) /Hanging (þÿ,.00) >> << /Name (þÿPhotoshopKinsokuSoft) /NoStart (þÿ  0000 0 0 00000ž0û0ý0þÿÿ ÿ ÿÿÿÿÿ=ÿ]) /NoEnd (þÿ  00 0 000ÿÿ;ÿ[) /Keep (þÿ  %) /Hanging (þÿ,.00) >> ] /MojiKumiSet [ << /InternalName (þÿPhotoshop6MojiKumiSet1) >> << /InternalName (þÿPhotoshop6MojiKumiSet2) >> << /InternalName (þÿPhotoshop6MojiKumiSet3) >> << /InternalName (þÿPhotoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (þÿDefault) /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ 0.80000 1.0 1.33000 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.20000 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (þÿNormal) /StyleSheetData << /FontSize 18.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 27.0 /Tracking 0 /HorizontalScale 1.0 /VerticalScale 1.0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /YUnderline 1 /Strikethrough false /Ligatures true /OldStyleFigures false /ProportionalNumbers true /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /WariChuLineCount 1 /WariChuScale 1.0 /WariChuWidowPercentage 25 /WariChuOrphanPercentage 25 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /Font 1 >> >> << /StyleSheetData << >> >> ] /FontSet [ << /Name (þÿVerdana-BoldItalic) /Script 0 /FontType 1 /Synthetic 0 /FontMetrics << /FontSize 1.0 /SpaceGlyphWidth 0.34180 /Ascent 1.00049 /Descent 0.20752 /CapHeight 0.74199 /DistanceToBaseline 1.00049 /UnderlinePosition 0.06787 /UnderlineThickness 0.10303 /HCJKProporitional false /VProporitional false >> >> << /Name (þÿTimesNewRomanPSMT) /Script 0 /FontType 1 /Synthetic 0 /FontMetrics << /FontSize 1.0 /SpaceGlyphWidth 0.25000 /Ascent 1.00684 /Descent 0.30664 /CapHeight 0.67799 /DistanceToBaseline 1.00684 /UnderlinePosition 0.10889 /UnderlineThickness 0.04883 /HCJKProporitional false /VProporitional false >> >> ] /SuperscriptSize 0.58300 /SuperscriptPosition 0.33300 /SubscriptSize 0.58300 /SubscriptPosition 0.33300 /SmallCapSize 0.70000 >> >> warp warpStyleenum warpStylewarpNone warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrzn8BIMluni@The Open-Source Computed Tomo8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMfxrp@i @AÈgïíÿÿ ììì8BIMnormÿ(CT(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿVersion 3.0.4 www.ctsim.org8BIMTyShB$?ð?ð@~Ð@}`2TxLrTxt TEXTVersion 3.0.4 www.ctsim.orgTxtCObjcnullHrzndoubVrtcdoub textGriddingenum textGriddingNoneOrntenumOrntHrznAntAenumAnntAnSm EngineDatatdta@ << /EngineDict << /Editor << /Text (þÿVersion 3.0.4 www.ctsim.org ) >> /ParagraphRun << /DefaultRunData << /ParagraphSheet << /Properties << /Justification 1 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ 0.80000 1.0 1.33000 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.20000 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> /RunArray [ << /ParagraphSheet << /Properties << /Justification 1 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ 0.80000 1.0 1.33000 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.20000 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> << /ParagraphSheet << /Properties << /Justification 1 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ 0.80000 1.0 1.33000 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.20000 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> ] /RunLengthArray [ 14 14 ] /IsJoinable 1 >> /StyleRun << /DefaultRunData << /StyleSheet << /StyleSheetData << /AutoKerning true /FontSize 18.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /Tracking 0 /HorizontalScale 1.0 /VerticalScale 1.0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /YUnderline 1 /Strikethrough false /Ligatures true /OldStyleFigures false /ProportionalNumbers true /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /WariChuLineCount 1 /WariChuScale 1.0 /WariChuWidowPercentage 25 /WariChuOrphanPercentage 25 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.92548 0.06668 0.18823 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst false /Font 0 >> >> >> /RunArray [ << /StyleSheet << /StyleSheetData << /AutoKerning true /FontSize 18.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /Tracking 0 /HorizontalScale 1.0 /VerticalScale 1.0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /YUnderline 1 /Strikethrough false /Ligatures true /OldStyleFigures false /ProportionalNumbers true /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /WariChuLineCount 1 /WariChuScale 1.0 /WariChuWidowPercentage 25 /WariChuOrphanPercentage 25 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.92548 0.06668 0.18823 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst false /Font 0 >> >> >> ] /RunLengthArray [ 28 ] /IsJoinable 2 >> /GridInfo << /GridIsOn false /ShowGrid false /GridSize 0.0 /GridLeading 0.0 /GridColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /GridLeadingFillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /AlignLineHeightToGridFlags false >> /AntiAlias 3 /UseFractionalGlyphWidths true /Rendered << /Version 1 /Shapes << /WritingDirection 0 /Children [ << /ShapeType 0 /Procession 0 /Lines << /WritingDirection 0 /Children [ << /Procession 0 /LineTop -18.00879 /Leading 21.60000 /WordStarts [ 0 8 10 12 14 ] /CharacterCount 14 /Segments << /WritingDirection 0 /Children [ << /Range [ 0.0 30000.0 ] /Words << /WritingDirection 0 /Children [ << /Type 0 /Base << /CharacterCount 8 /Advance -47.42578 /TrailingAdvance 6.32813 /Leading 21.60000 /TrailingCharacterCount 1 /StyleRunAlignment 2 /Language 0 /IsBrokenWord 0 /BreakType 0 /StartHang 0.0 /EndHang 0.0 /MojiKumiFirst 0.0 /MojiKumiMiddle 0.0 /MojiKumiEnd 0.0 /Strikes << /WritingDirection 0 /Children [ << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ -120.21680 0.0 ] /GlyphMaps [ 57 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.92548 0.06668 0.18823 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ -107.91211 0.0 ] >> << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ -108.79102 0.0 ] /GlyphMaps [ 72 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.92548 0.06668 0.18823 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ -98.06836 0.0 ] >> << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ -98.06836 0.0 ] /GlyphMaps [ 85 86 76 82 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.92548 0.06668 0.18823 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ -65.14453 0.0 ] >> << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ -65.14453 0.0 ] /GlyphMaps [ 81 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.92548 0.06668 0.18823 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ -53.75391 0.0 ] >> << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ -53.75391 0.0 ] /GlyphMaps [ 3 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.92548 0.06668 0.18823 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ -47.42578 0.0 ] >> ] >> >> >> << /Type 0 /Base << /CharacterCount 2 /Advance -29.43457 /TrailingAdvance 0.0 /Leading 21.60000 /TrailingCharacterCount 0 /StyleRunAlignment 2 /Language 0 /IsBrokenWord 0 /BreakType 0 /StartHang 0.0 /EndHang 0.0 /MojiKumiFirst 0.0 /MojiKumiMiddle 0.0 /MojiKumiEnd 0.0 /Strikes << /WritingDirection 0 /Children [ << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ -47.42578 0.0 ] /GlyphMaps [ 22 17 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.92548 0.06668 0.18823 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ -29.43457 0.0 ] >> ] >> >> >> << /Type 0 /Base << /CharacterCount 2 /Advance -11.44336 /TrailingAdvance 0.0 /Leading 21.60000 /TrailingCharacterCount 0 /StyleRunAlignment 2 /Language 0 /IsBrokenWord 0 /BreakType 0 /StartHang 0.0 /EndHang 0.0 /MojiKumiFirst 0.0 /MojiKumiMiddle 0.0 /MojiKumiEnd 0.0 /Strikes << /WritingDirection 0 /Children [ << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ -29.43457 0.0 ] /GlyphMaps [ 19 17 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.92548 0.06668 0.18823 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ -11.44336 0.0 ] >> ] >> >> >> << /Type 0 /Base << /CharacterCount 2 /Advance 6.32813 /TrailingAdvance 6.32813 /Leading 21.60000 /TrailingCharacterCount 1 /StyleRunAlignment 2 /Language 0 /IsBrokenWord 0 /BreakType 0 /StartHang 0.0 /EndHang 0.0 /MojiKumiFirst 0.0 /MojiKumiMiddle 0.0 /MojiKumiEnd 0.0 /Strikes << /WritingDirection 0 /Children [ << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ -11.44336 0.0 ] /GlyphMaps [ 23 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.92548 0.06668 0.18823 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ 0.0 0.0 ] >> << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ 0.0 0.0 ] /GlyphMaps [ 3 ] /LigatureMaps [ ] /Flags 68 /FillColor << /Type 1 /Values [ 1.0 0.92548 0.06668 0.18823 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ 6.32813 0.0 ] >> ] >> >> >> ] >> >> ] >> >> << /Procession 0 /LineTop 3.59121 /Leading 21.60000 /RomanBaseline 21.60000 /WordStarts [ 0 4 10 14 ] /CharacterCount 14 /Segments << /WritingDirection 0 /Children [ << /Range [ 0.0 30000.0 ] /Words << /WritingDirection 0 /Children [ << /Type 0 /Base << /CharacterCount 4 /Advance -84.66504 /TrailingAdvance 0.0 /Leading 21.60000 /TrailingCharacterCount 0 /StyleRunAlignment 2 /Language 0 /IsBrokenWord 0 /BreakType 0 /StartHang 0.0 /EndHang 0.0 /MojiKumiFirst 0.0 /MojiKumiMiddle 0.0 /MojiKumiEnd 0.0 /Strikes << /WritingDirection 0 /Children [ << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ -134.78906 21.60000 ] /GlyphMaps [ 90 90 90 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.92548 0.06668 0.18823 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ -90.59766 21.60000 ] >> << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ -91.21289 21.60000 ] /GlyphMaps [ 17 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.92548 0.06668 0.18823 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ -84.66504 21.60000 ] >> ] >> >> >> << /Type 0 /Base << /CharacterCount 6 /Advance -29.82129 /TrailingAdvance 0.0 /Leading 21.60000 /TrailingCharacterCount 0 /StyleRunAlignment 2 /Language 0 /IsBrokenWord 0 /BreakType 0 /StartHang 0.0 /EndHang 0.0 /MojiKumiFirst 0.0 /MojiKumiMiddle 0.0 /MojiKumiEnd 0.0 /Strikes << /WritingDirection 0 /Children [ << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ -84.66504 21.60000 ] /GlyphMaps [ 70 87 86 76 80 17 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.92548 0.06668 0.18823 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ -29.82129 21.60000 ] >> ] >> >> >> << /Type 0 /Base << /CharacterCount 4 /Advance 6.32813 /TrailingAdvance 6.32813 /Leading 21.60000 /TrailingCharacterCount 1 /StyleRunAlignment 2 /Language 0 /IsBrokenWord 0 /BreakType 0 /StartHang 0.0 /EndHang 0.0 /MojiKumiFirst 0.0 /MojiKumiMiddle 0.0 /MojiKumiEnd 0.0 /Strikes << /WritingDirection 0 /Children [ << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ -29.82129 21.60000 ] /GlyphMaps [ 82 85 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.92548 0.06668 0.18823 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ -11.21484 21.60000 ] >> << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ -11.21484 21.60000 ] /GlyphMaps [ 74 ] /LigatureMaps [ ] /Flags 4 /FillColor << /Type 1 /Values [ 1.0 0.92548 0.06668 0.18823 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ 0.0 21.60000 ] >> << /Font 0 /Direction 0 /GlyphDirection 0 /Scale [ 18.0 18.0 ] /FontSize 18.0 /Tracking 0.0 /AntiAlias 3 /Kerning 0.0 /Origin [ 0.0 21.60000 ] /GlyphMaps [ 3 ] /LigatureMaps [ ] /Flags 68 /FillColor << /Type 1 /Values [ 1.0 0.92548 0.06668 0.18823 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /OriginEnd [ 6.32813 21.60000 ] >> ] >> >> >> ] >> >> ] >> >> ] >> /Cookie << /Photoshop << /ShapeType 0 /PointBase [ 0.0 0.0 ] /Base << /ShapeType 0 /TransformPoint0 [ 1.0 0.0 ] /TransformPoint1 [ 0.0 1.0 ] /TransformPoint2 [ 0.0 0.0 ] >> >> >> >> ] >> >> >> /ResourceDict << /KinsokuSet [ << /Name (þÿPhotoshopKinsokuHard) /NoStart (þÿ!\),.:;?]}¢    0!! 0000 0 0 0000A0C0E0G0I0c0ƒ0…0‡0Ž0›0œ00ž0¡0£0¥0§0©0Ã0ã0å0ç0î0õ0ö0û0ü0ý0þÿÿÿ ÿ ÿÿÿÿÿ=ÿ]) /NoEnd (þÿ\([{£§  00 0 0000ÿÿÿÿ ÿ;ÿ[ÿå) /Keep (þÿ  %) /Hanging (þÿ,.00) >> << /Name (þÿPhotoshopKinsokuSoft) /NoStart (þÿ  0000 0 0 00000ž0û0ý0þÿÿ ÿ ÿÿÿÿÿ=ÿ]) /NoEnd (þÿ  00 0 000ÿÿ;ÿ[) /Keep (þÿ  %) /Hanging (þÿ,.00) >> ] /MojiKumiSet [ << /InternalName (þÿPhotoshop6MojiKumiSet1) >> << /InternalName (þÿPhotoshop6MojiKumiSet2) >> << /InternalName (þÿPhotoshop6MojiKumiSet3) >> << /InternalName (þÿPhotoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (þÿDefault) /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ 0.80000 1.0 1.33000 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.20000 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (þÿNormal) /StyleSheetData << /FontSize 18.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 27.0 /Tracking 0 /HorizontalScale 1.0 /VerticalScale 1.0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /YUnderline 1 /Strikethrough false /Ligatures true /OldStyleFigures false /ProportionalNumbers true /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /WariChuLineCount 1 /WariChuScale 1.0 /WariChuWidowPercentage 25 /WariChuOrphanPercentage 25 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /Font 1 >> >> << /StyleSheetData << >> >> ] /FontSet [ << /Name (þÿVerdana) /Script 0 /FontType 1 /Synthetic 0 /FontMetrics << /FontSize 1.0 /SpaceGlyphWidth 0.35156 /Ascent 1.00049 /Descent 0.20654 /CapHeight 0.74199 /DistanceToBaseline 1.00049 /UnderlinePosition 0.08789 /UnderlineThickness 0.05859 /HCJKProporitional false /VProporitional false >> >> << /Name (þÿTimesNewRomanPSMT) /Script 0 /FontType 1 /Synthetic 0 /FontMetrics << /FontSize 1.0 /SpaceGlyphWidth 0.25000 /Ascent 1.00684 /Descent 0.30664 /CapHeight 0.67799 /DistanceToBaseline 1.00684 /UnderlinePosition 0.10889 /UnderlineThickness 0.04883 /HCJKProporitional false /VProporitional false >> >> ] /SuperscriptSize 0.58300 /SuperscriptPosition 0.33300 /SubscriptSize 0.58300 /SubscriptPosition 0.33300 /SmallCapSize 0.70000 >> >> warp warpStyleenum warpStylewarpNone warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrzn8BIMluni<Version 3.0.4 www.ctsim.org8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMfxrp@zÀÀ&ÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿ  $((((((((((((((((,00,..........06502206<:99798749?87:;7222422266522/3366457793,11,11()$()$)$(''# )/.0$& &$$&&& (((((($ ÿÆÿÿÕÿÿÕÿò‚ÿÕÿÿàÿöòÿÿöÿÕÿÿèÿùçÿõÿù•ÿÕÿÿîÿûßÿíÿû›ÿÕÿÿóÿüÙÿçÿü ÿÕÿÿøÿüÔÿâÿü¥ÿÕÿÿüÿýÏÿÝÿý©ÿÕÿÿÿÿþËÿÙÿþ¬ÿÕÿ‚ÿÿÈÿÖÿþ¯ÿÕÿ…ÿþÿÆÿÓÿþ²ÿÕÿˆÿþýÿÆÿÐÿþµÿÕÿ‹ÿþúÿÆÿÍÿþ¸ÿÕÿÿÿ÷ÿÆÿÊÿÿºÿÕÿÿÿõÿÆÿÈÿÿ¼ÿÕÿ’ÿþóÿÆÿÆÿþ¿ÿÕÿ”ÿÿðÿÆÿÃÿÿÁÿÕÿ–ÿÿîÿÆÿÁÿÿÃÿÕÿ™ÿþìÿÆÿ¿ÿþÆÿÕÿ›ÿÿéÿÆÿ¼ÿÿÈÿÕÿÿÿçÿÆÿºÿÿÊÿÕÿŸÿÿåÿÆÿ¸ÿÿÌÿÕÿ¡ÿÿãÿÆÿ¶ÿÿÎÿÕÿ£ÿÿáÿÆÿ´ÿÿÐÿÕÿ¥ÿÿßÿÆÿ²ÿÿÒÿÕÿ¦ÿÝÿÆÿ°ÿÓÿÕÿ¨ÿÿÜÿÆÿ¯ÿÿÕÿÕÿªÿÿÚÿÆÿ­ÿÿ×ÿÕÿ«ÿØÿÆÿ«ÿØÿÕÿ­ÿÿ×ÿÆÿªÿÿÚÿÕÿ®ÿÕÿÆÿ¨ÿÛÿÕÿ°ÿÿÔÿÆÿ§ÿÿÝÿÕÿ²ÿÿÒÿÆÿ¥ÿÿßÿÕÿ³ÿÐÿÆÿ£ÿàÿÕÿµÿÿÏÿÆÿ¢ÿÿâÿÕÿ¶ÿÍÿÆÿ ÿãÿÕÿ·ÿÌÿÆÿŸÿäÿÕÿ¹ÿÿËÿÆÿžÿÿæÿÕÿºÿÉÿÆÿœÿçÿÕÿ»ÿÈÿÆÿ›ÿèÿÕÿ½ÿÿÇÿÆÿšÿÿêÿÕÿ¾ÿÅÿÆÿ˜ÿëÿÕÿ¿ÿÄÿÆÿ—ÿìÿÕÿÀÿÃÿÆÿ–ÿíÿÕÿÁÿÂÿÆÿ•ÿîÿÕÿÂÿÁÿÆÿ”ÿïÿÕÿÃÿÀÿÆÿ“ÿðÿÕÿÄÿ¿ÿÆÿ’ÿñÿÕÿÅÿ¾ÿÆÿ‘ÿòÿÕÿÆÿ½ÿÆÿÿóÿÕÿÇÿ¼ÿÆÿÿôÿÕÿÈÿ»ÿÆÿŽÿõÿÕÿÉÿºÿÆÿÿöÿÕÿÊÿ¹ÿÆÿŒÿ÷ÿÕÿËÿ¸ÿÆÿ‹ÿøÿÕÿÌÿ·ÿÆÿŠÿùÿÕÿÍÿ¶ÿÆÿ‰ÿúÿÕÿÎÿµÿÆÿˆÿûÿÕÿÒÿý´ÿÆÿ‡ÿüÿÕÿÒÿþ³ÿÆÿ†ÿýÿÕÿÒÿþ³ÿÆÿ…ÿþÿÕÿÒÿ±ÿÆÿ„ÿÿÿÕÿÓÿ°ÿÆÿƒÿÿÕÿÔÿ¯ÿÆÿ‚ÿÕÿÕÿ®ÿÆÿÿÖÿÖÿ­ÿÆÿÿÿ×ÿ×ÿ¬ÿÆÿÿÿ×ÿ×ÿ¬ÿÆÿÿÿÿØÿØÿ«ÿÆÿÿþÿÙÿÙÿªÿÆÿÿýÿÚÿÚÿ©ÿÆÿÿýÿÚÿÚÿ©ÿÆÿÿüÿÛÿÛÿ¨ÿÆÿÿûÿÜÿÜÿ§ÿÆÿÿúÿÝÿÝÿ¦ÿÆÿÿúÿÝÿÝÿ¦ÿÆÿÿùÿÞÿÞÿ¥ÿÆÿÿøÿßÿßÿ¤ÿÆÿÿ÷ÿàÿßÿ¤ÿÆÿÿ÷ÿàÿàÿ£ÿÆÿÿöÿáÿàÿ£ÿÆÿÿöÿáÿáÿ¢ÿÆÿÿõÿâÿâÿ¡ÿÆÿÿôÿãÿâÿ¡ÿÆÿÿôÿãÿãÿ ÿÆÿÿóÿäÿäÿŸÿÆÿÿòÿåÿäÿŸÿÆÿÿòÿåÿåÿžÿÆÿÿñÿæÿåÿžÿÆÿÿñÿæÿæÿÿÑÿù€þÿÿðÿçÿçÿœÿÙÿù€ùÿþ€ü€†ÿðÿçÿçÿœÿàÿú€îÿüÿú€ÿïÿèÿèÿ›ÿåÿü€çÿõÿü€’ÿïÿèÿèÿ›ÿèÿþ€âÿðÿþ€•ÿîÿéÿéÿšÿêÿÿ€ßÿíÿÿ€—ÿîÿéÿéÿšÿíÿþ€Ýÿëÿþ€šÿíÿêÿêÿ™ÿïÿÿ€Úÿèÿÿ€œÿíÿêÿêÿ™ÿñÿÿ€Øÿæÿÿ€žÿìÿëÿëÿ˜ÿôÿþ€Öÿäÿþ€¡ÿìÿëÿëÿ˜ÿöÿÿ€Óÿáÿÿ€£ÿëÿìÿìÿ—ÿøÿÿ€Ñÿßÿÿ€¥ÿëÿìÿìÿ—ÿúÿÿ€ÏÿÝÿÿ€§ÿêÿíÿíÿ–ÿüÿÿ€ÍÿÛÿÿ€©ÿêÿíÿíÿ–ÿýÿ€ËÿÙÿ€ªÿéÿîÿíÿ–ÿÿÿÿ€ÊÿØÿÿ€¬ÿéÿîÿîÿ•ÿÿ€ÈÿÖÿ€­ÿèÿïÿîÿ•ÿ€ÇÿÕÿ€®ÿèÿïÿïÿ–ÿÿ€ÆÿÔÿÿ€°ÿçÿðÿïÿ—ÿ€ÿÿÆÿÒÿ€±ÿçÿðÿðÿ—ÿ€þÿÆÿÑÿ€²ÿæÿñÿðÿ˜ÿ€ýÿÆÿÐÿ€³ÿæÿñÿðÿ™ÿ€üÿÆÿÏÿ€´ÿæÿñÿñÿšÿÿ€ûÿÆÿÎÿÿ€¶ÿåÿòÿñÿ›ÿ€ùÿÆÿÌÿ€·ÿåÿòÿòÿ›ÿ€øÿÆÿËÿ€¸ÿäÿóÿòÿœÿ€÷ÿÆÿÊÿ€¹ÿäÿóÿóÿœÿ€öÿÔÿóÉÿ€ºÿãÿôÿóÿÿ€õÿØÿýóÿýÌÿ€»ÿãÿôÿóÿžÿ€ôÿÛÿþïÿýÿþÏÿ€»ÿãÿôÿôÿÿ€ôÿÝÿÿìÿúÿÿÐÿ€¼ÿâÿõÿôÿžÿ€óÿßÿÿöÿ÷ÿÿøÿÿÑÿ€½ÿâÿõÿôÿŸÿ€òÿàÿùÿü÷ÿÿþùÿÑÿ€¾ÿâÿõÿõÿŸÿ€ñÿãÿþûÿþðÿþÿþûÿþÓÿ€¿ÿáÿöÿõÿ ÿ€ðÿäÿÿûÿÿíÿûÿÿûÿÿÓÿ€Àÿâÿÿöÿõÿ¡ÿ€ïÿåÿûÿÿëÿùÿÿûÿÔÿ€Àÿáÿÿ÷ÿöÿ ÿ€ïÿæÿÿýÿÿéÿ÷ÿÿýÿÿÔÿ€Áÿáÿÿ÷ÿöÿ¡ÿ€îÿçÿýÿþèÿöÿþýÿÔÿ€Âÿáÿÿ÷ÿöÿ¢ÿ€íÿèÿýÿÿæÿôÿÿýÿÔÿ€Ãÿàÿÿøÿ÷ÿ¢ÿ€ìÿéÿýÿäÿòÿýÿÔÿ€Äÿàÿÿøÿ÷ÿ¢ÿ€ìÿêÿýÿãÿñÿýÿÕÿ€Äÿàÿÿøÿ÷ÿ£ÿ€ëÿëÿýÿâÿðÿýÿÕÿ€Åÿàÿÿøÿøÿ£ÿ€êÿìÿþÿÿáÿïÿÿþÿÕÿ€Æÿßÿÿùÿøÿ£ÿ€êÿíÿÿþÿàÿîÿþÿÿÖÿ€Æÿßÿÿùÿøÿ¤ÿ€éÿîÿýÿßÿíÿýÿÖÿ€Çÿßÿÿùÿøÿ¤ÿ€éÿîÿÿÿÞÿìÿÿÿÿÖÿ€Çÿßÿÿùÿùÿ¤ÿ€èÿïÿþÿÝÿëÿþÿÖÿ€ÈÿÞÿÿúÿùÿ¤ÿ€èÿðÿþÿÜÿêÿþÿ×ÿ€ÈÿÞÿÿúÿùÿ¥ÿ€çÿðÿÿÿæÿûýÿêÿÿÿÿÖÿ€ÉÿÞÿÿúÿùÿ¥ÿ€çÿñÿþÿèÿýýÿýÿéÿþÿ×ÿ€ÉÿÞÿÿúÿùÿ¦ÿ€æÿòÿÿÿéÿþ÷ÿÿéÿÿÿ×ÿ€ÊÿÝÿÿûÿúÿ¥ÿ€æÿòÿÿÿéÿÿóÿÿéÿÿÿ×ÿ€ÊÿÝÿÿûÿúÿ¥ÿ€æÿóÿÿÿéÿÿòÿÿéÿÿÿØÿ€ÊÿÝÿÿûÿúÿ¦ÿ€åÿóÿÿÿêÿÿñÿÿÿÿêÿÿÿ×ÿ€ËÿÝÿÿûÿúÿ¦ÿ€åÿôÿÿÿéÿðÿþÿéÿÿÿØÿ€ËÿÝÿÿûÿúÿ§ÿ€äÿôÿÿÿêÿïÿýÿêÿÿÿ×ÿ€ÌÿÜÿÿüÿûÿ¦ÿ€äÿõÿÿÿêÿÿïÿýÿÿêÿÿÿØÿ€ÌÿÜÿÿüÿûÿ§ÿ€ãÿõÿÿÿêÿîÿüÿêÿÿÿ×ÿ€ÍÿÜÿÿüÿûÿ§ÿ€ãÿöÿÿÿéÿîÿüÿéÿÿÿØÿ€ÍÿÜÿÿüÿûÿ§ÿ€ãÿöÿÿÿêÿíÿûÿêÿÿÿØÿ€ÍÿÜÿÿüÿûÿ¨ÿ€âÿ÷ÿÿÿéÿíÿûÿéÿÿØÿ€ÎÿÛÿÿýÿûÿ¨ÿ€âÿ÷ÿÿÿéÿíÿûÿéÿÿÿØÿ€ÎÿÛÿÿýÿüÿ¨ÿ€áÿ÷ÿÿòÿüüÿíÿûÿèÿÿØÿ€ÎÿÛÿÿýÿüÿ¨ÿ€áÿøÿÿÿôÿþþÿÿþÿÿíÿûÿÿéÿÿÿØÿ€ÏÿÛÿÿýÿüÿ¨ÿ€áÿøÿÿÿôÿúÿÿÿìÿúÿéÿÿÿØÿ€ÏÿÛÿÿýÿüÿ©ÿ€àÿøÿÿôÿøÿþìÿúÿèÿÿ×ÿ€ÐÿÚÿÿþÿüÿ©ÿ€àÿùÿÿÿôÿ÷ÿÿìÿúÿèÿÿÿØÿ€ÐÿÚÿÿþÿüÿ©ÿ€àÿùÿÿÿõÿÿöÿÿíÿûÿÿèÿÿÿØÿ€ÐÿÚÿÿþÿüÿ©ÿ€àÿùÿÿôÿôÿíÿûÿæÿÿØÿ€ÐÿÚÿÿþÿüÿ©ÿ€àÿúÿÿÿôÿôÿÿîÿûÿþÿûïÿÿÿÙÿ€ÐÿÚÿÿþÿýÿ©ÿ€ßÿúÿÿÿôÿôÿÿïÿûÿÿÿýÿÿðÿÿÿØÿ€ÑÿÚÿÿþÿýÿ©ÿ€ßÿúÿÿóÿôÿÿðÿûÿÿûÿïÿÿØÿ€ÑÿÚÿÿþÿýÿ©ÿ€ßÿúÿÿôÿÿóÿÿðÿüÿÿúÿïÿÿØÿ€ÑÿÙÿÿÿÿýÿ©ÿ€ßÿúÿÿôÿòÿÿñÿüÿÿùÿÿðÿÿØÿ€ÑÿÙÿÿÿÿýÿ©ÿ€ßÿúÿÿôÿòÿÿÿñÿýÿþ÷ÿðÿÿØÿ€ÑÿÙÿÿÿÿýÿ©ÿ€ßÿûÿÿÿôÿñÿÿÿòÿýÿþ÷ÿðÿÿÿÙÿ€ÑÿÙÿÿÿÿýÿ©ÿ€ßÿûÿÿóÿðÿÿòÿþÿÿöÿïÿÿÙÿ€ÑÿÙÿÿÿÿýÿªÿ€ÞÿûÿÿòÿñÿÿÿóÿÿÿþõÿïÿÿÙÿ€ÑÿÙÿÿÿÿýÿªÿ€ÞÿûÿÿòÿðÿþóÿÿýõÿïÿÿØÿ€ÒÿÙÿÿÿÿýÿªÿ€ÞÿûÿÿòÿïÿþþÿûýÿÿÿôÿïÿÿØÿ€ÒÿÙÿÿÿÿýÿªÿ€ÞÿûÿÿòÿîÿþÿÿýÿÿÿÿÿôÿïÿÿØÿ€ÒÿÙÿÿÿÿþÿ©ÿ€ÞÿûÿÿòÿíÿüýÿýÿÿÿôÿÿïÿÿØÿ€ÒÿÙÿÿÿÿþÿ©ÿ€ÞÿüÿÿñÿìÿÿùþÿÿÿôÿíÿÿÙÿ€ÒÿÙÿÿÿÿþÿ©ÿ€ÞÿüÿÿñÿìÿÿÿýÿýÿÿóÿíÿÿÙÿ€ÒÿÙÿÿÿÿþÿ©ÿ€ÞÿüÿÿñÿÿíÿÿÿÿÿýÿÿóÿíÿÿÙÿ€ÒÿÙÿÿÿÿþÿªÿ€ÝÿüÿÿðÿìÿÿÿýüÿÿóÿíÿÿØÿ€ÓÿÙÿÿÿÿþÿªÿ€ÝÿüÿÿðÿìÿöÿòÿíÿÿØÿ€ÓÿÙÿÿÿÿþÿªÿ€Ýÿüÿÿðÿìÿÿ÷ÿóÿìÿÿØÿ€ÓÿÙÿÿÿÿþÿªÿ€Ýÿüÿÿðÿëÿ÷ÿóÿìÿÿØÿ€ÓÿÙÿÿÿÿþÿªÿ€ÝÿüÿÿïÿìÿøÿóÿìÿÿØÿ€ÓÿÙÿÿÿÿþÿªÿ€ÝÿüÿÿïÿìÿøÿóÿÿìÿÿØÿ€ÓÿÙÿÿÿÿþÿªÿ€ÝÿüÿÿïÿìÿÿùÿóÿëÿÿØÿ€ÓÿÙÿÿÿÿþÿªÿ€ÝÿüÿÿîÿìÿüýÿóÿëÿÿÙÿ€ÒÿÙÿÿÿÿþÿ©ÿ€ÞÿüÿÿîÿìÿÿÿÿÿÿÿÿôÿÿëÿÿÙÿ€ÒÿÙÿÿÿÿþÿ©ÿ€ÞÿüÿÿîÿìÿýÿÿÿÿôÿêÿÿÙÿ€ÒÿÙÿÿÿÿþÿ©ÿ€ÞÿüÿÿîÿÿîÿÿüÿÿÿôÿêÿÿÙÿ€ÒÿÙÿÿÿÿþÿ©ÿ€ÞÿûÿÿíÿîÿþþÿÿÿÿõÿÿêÿÿØÿ€ÒÿÙÿÿÿÿýÿªÿ€ÞÿûÿÿíÿÿîÿÿþÿÿÿÿõÿéÿÿØÿ€ÒÿÙÿÿÿÿýÿªÿ€ÞÿûÿÿìÿîÿûÿÿÿöÿÿéÿÿØÿ€ÒÿÙÿÿÿÿýÿªÿ€ÞÿûÿÿíÿíÿûÿÿöÿéÿÿØÿ€ÒÿÙÿÿÿÿýÿªÿ€Þÿûÿÿìÿîÿûÿÿ÷ÿÿéÿÿÙÿ€ÑÿÙÿÿÿÿýÿ©ÿ€ßÿûÿÿìÿîÿûÿÿøÿÿëÿÿÿÿÙÿ€ÑÿÙÿÿÿÿýÿ©ÿ€ßÿûÿÿëÿïÿûÿÿøÿëÿþÿÿÙÿ€ÑÿÙÿÿÿÿýÿ©ÿ€ßÿúÿÿëÿïÿûÿÿùÿÿëÿÿÿØÿ€ÑÿÙÿÿÿÿýÿ©ÿ€ßÿúÿÿêÿðÿûÿÿùÿëÿÿÿÿØÿ€ÑÿÙÿÿÿÿýÿ©ÿ€ßÿúÿÿëÿÿñÿûÿÿúÿêÿÿÿÿØÿ€ÑÿÙÿÿÿÿýÿ©ÿ€ßÿúÿÿêÿñÿúÿûÿÿëÿÿÿÿÿÿØÿ€ÑÿÙÿÿÿÿýÿ©ÿ€ßÿúÿÿêÿÿòÿúÿþÿÿéÿþÿÿÿØÿ€ÑÿÙÿÿÿÿüÿ©ÿ€àÿúÿÿéÿÿôÿÿùÿüéÿÿþÿÿÿÙÿ€ÐÿÚÿþÿÿüÿ©ÿ€àÿùÿÿèÿÿõÿøÿäÿþÿýØÿ€ÐÿÚÿþÿÿüÿ©ÿ€àÿùÿÿèÿõÿøÿäÿþÿÿÿØÿ€ÐÿÚÿÿþÿüÿ©ÿ€àÿùÿÿçÿöÿøÿåÿÿþÿÿÿØÿ€ÐÿÚÿÿþÿüÿ©ÿ€àÿøÿÿæÿÿùÿ÷ÿåÿýÿþ×ÿ€ÐÿÚÿÿþÿüÿ¨ÿ€áÿøÿÿæÿÿûÿÿ÷ÿåÿþÿÿÿØÿ€ÏÿÚÿÿþÿüÿ¨ÿ€áÿøÿÿåÿþþÿÿöÿæÿÿþÿÿÿØÿ€ÏÿÚÿÿþÿüÿ¨ÿ€áÿ÷ÿþäÿüõÿæÿýÿþØÿ€ÎÿÛÿÿýÿûÿ¨ÿ€âÿ÷ÿÿÓÿæÿþÿÿÿØÿ€ÎÿÛÿÿýÿûÿ¨ÿ€âÿ÷ÿþÓÿçÿÿþÿýØÿ€ÎÿÛÿÿýÿûÿ§ÿ€ãÿöÿÿÔÿçÿýÿÿØÿ€ÍÿÛÿÿýÿûÿ§ÿ€ãÿöÿÿÔÿçÿþÿÿÿØÿ€ÍÿÛÿÿýÿûÿ§ÿ€ãÿõÿÿÔÿçÿþÿþ×ÿ€ÍÿÜÿÿüÿûÿ¦ÿ€äÿõÿÿÕÿèÿÿÿÿÿÿØÿ€ÌÿÜÿÿüÿúÿ§ÿ€äÿôÿÿÕÿèÿþÿþ×ÿ€ÌÿÜÿÿüÿúÿ¦ÿ€åÿôÿÿÖÿèÿþÿÿØÿ€ËÿÜÿÿüÿúÿ¦ÿ€åÿóÿÿ×ÿèÿÿÿÿ×ÿ€ËÿÜÿÿüÿúÿ¥ÿ€æÿóÿÿ×ÿèÿÿÿØÿ€ÊÿÝÿÿûÿúÿ¥ÿ€æÿòÿÿ×ÿèÿÿþ×ÿ€ÊÿÝÿÿûÿùÿ¦ÿ€æÿòÿþØÿèÿü×ÿ€ÊÿÝÿÿûÿùÿ¥ÿ€çÿñÿÿéÿòÿèÿÿÿ×ÿ€ÉÿÝÿÿûÿùÿ¥ÿ€çÿðÿÿéÿüÿÿÿÿÿÿÿÿçÿÿÖÿ€ÉÿÞÿÿúÿùÿ¤ÿ€èÿðÿÿëÿþÿöÿéÿÿÿ×ÿ€ÈÿÞÿÿúÿùÿ¤ÿ€èÿïÿÿéÿþþÿÿÿÿÿÿÿéÿÿÖÿ€ÈÿÞÿÿúÿøÿ¤ÿ€éÿîÿÿÜÿêÿÿÖÿ€ÇÿÞÿÿúÿøÿ¤ÿ€éÿîÿÿÝÿëÿÿÿÖÿ€Çÿßÿÿùÿøÿ£ÿ€êÿíÿþÝÿëÿþÖÿ€Æÿßÿÿùÿøÿ£ÿ€êÿìÿÿßÿíÿÿÿÕÿ€Æÿßÿÿùÿ÷ÿ£ÿ€ëÿëÿÿßÿíÿÿÕÿ€Åÿßÿÿùÿ÷ÿ¢ÿ€ìÿêÿÿàÿîÿÿÕÿ€Äÿàÿÿøÿ÷ÿ¢ÿ€ìÿéÿÿâÿðÿÿÿÔÿ€Äÿàÿÿøÿöÿ¢ÿ€íÿèÿÿãÿñÿÿÿÔÿ€Ãÿàÿÿøÿöÿ¡ÿ€îÿçÿÿÿäÿòÿÿÿÔÿ€Âÿáÿÿ÷ÿöÿ ÿ€ïÿæÿýåÿóÿýÔÿ€Áÿáÿÿ÷ÿõÿ¡ÿ€ïÿåÿÿÿçÿõÿÿÿÿÔÿ€Àÿáÿÿ÷ÿõÿ ÿ€ðÿäÿÿÿÿèÿöÿÿÿÓÿ€ÀÿâÿÿöÿõÿŸÿ€ñÿãÿþÿêÿøÿÿÿþÓÿ€¿ÿâÿÿöÿôÿŸÿ€òÿàÿÿÿìÿúÿÿÿÿÑÿ€¾ÿâÿÿöÿôÿžÿ€óÿßÿÿÿÿþïÿýÿþÿÿÿÑÿ€½ÿãÿÿõÿôÿÿ€ôÿÝÿÿþÿþòÿÿþþÿÿÐÿ€¼ÿãÿÿõÿóÿžÿ€ôÿÛÿþþÿòþÿþÏÿ€»ÿãÿÿõÿóÿÿ€õÿØÿýóÿýÌÿ€»ÿäÿÿôÿóÿœÿ€öÿÔÿóÉÿ€ºÿäÿÿôÿòÿœÿ€÷ÿÆÿÊÿ€¹ÿäÿÿôÿòÿ›ÿ€øÿÆÿËÿ€¸ÿåÿÿóÿñÿ›ÿÿ€úÿÆÿÍÿÿ€·ÿåÿÿóÿñÿ™ÿ€ûÿÆÿÎÿ€µÿåÿÿóÿðÿ™ÿ€üÿÆÿÏÿ€´ÿæÿÿòÿðÿ˜ÿ€ýÿÆÿÐÿ€³ÿæÿÿòÿðÿ—ÿ€þÿÆÿÑÿ€²ÿæÿÿòÿïÿ—ÿÿ€ÿÆÿÓÿÿ€±ÿçÿÿñÿïÿ•ÿ€ÆÿÔÿ€¯ÿçÿÿñÿîÿ•ÿ€ÇÿÕÿ€®ÿèÿÿðÿîÿ•ÿÿ€ÈÿÖÿ€­ÿèÿÿðÿíÿ–ÿÿÿÿ€ÊÿØÿÿ€¬ÿéÿÿïÿíÿ–ÿýÿ€ËÿÙÿ€ªÿéÿÿïÿíÿ–ÿüÿÿ€ÍÿÛÿÿ€©ÿêÿþïÿìÿ—ÿúÿÿ€ÏÿÝÿÿ€§ÿêÿÿîÿìÿ—ÿøÿÿ€Ñÿßÿÿ€¥ÿëÿþîÿëÿ˜ÿöÿÿ€Óÿáÿÿ€£ÿëÿÿíÿëÿ˜ÿôÿþ€Öÿäÿþ€¡ÿìÿþíÿêÿ™ÿñÿÿ€Øÿæÿÿ€žÿìÿÿìÿêÿ™ÿïÿÿ€Úÿèÿÿ€œÿíÿþìÿéÿšÿíÿþ€Ýÿëÿþ€šÿíÿÿëÿéÿšÿêÿþ€àÿîÿþ€—ÿîÿþëÿèÿ›ÿçÿÿ€âÿðÿÿ€”ÿîÿÿêÿèÿ›ÿåÿü€çÿõÿü€’ÿïÿþêÿçÿœÿàÿù€ïÿýÿù€ÿïÿÿéÿçÿœÿØÿú€úÿý€ý€…ÿðÿÿèÿæÿÿÑÿú€ýÿÿñÿþèÿåÿžÿÆÿÿñÿÿçÿåÿžÿÆÿÿòÿÿæÿäÿŸÿÆÿÿòÿÿæÿäÿŸÿÆÿÿóÿÿåÿãÿ ÿÆÿÿôÿþåÿâÿ¡ÿÆÿÿôÿÿäÿâÿ¡ÿÆÿÿõÿÿãÿáÿ¢ÿÆÿÿöÿþãÿàÿ£ÿÆÿÿöÿÿâÿàÿ£ÿÆÿÿ÷ÿÿáÿßÿ¤ÿÆÿÿøÿþáÿßÿ¤ÿÆÿÿùÿþàÿÞÿ¥ÿÆÿÿùÿÿßÿÝÿ¦ÿÆÿÿúÿÿÞÿÝÿ¦ÿÆÿÿûÿþÞÿÜÿ§ÿÆÿÿûÿÿÝÿÛÿ¨ÿÆÿÿüÿÿÜÿÚÿ©ÿÆÿÿýÿþÜÿÚÿ©ÿÆÿÿþÿþÛÿÙÿªÿÆÿÿþÿÿÚÿØÿ«ÿÆÿÿÿÿÿÙÿ×ÿ¬ÿÆÿÿÿþÙÿ×ÿ¬ÿÆÿÿþØÿÖÿ­ÿÆÿÿÿ×ÿÕÿ®ÿÆÿ‚ÿÖÿÔÿ¯ÿÆÿƒÿÿÖÿÓÿ°ÿÆÿ„ÿþÕÿÒÿ±ÿÆÿ„ÿÿÿÕÿÑÿ²ÿÆÿ…ÿÿÿÿÕÿÐÿ³ÿÆÿ†ÿþÿÿÕÿÏÿ´ÿÆÿ‡ÿþþÿÕÿÎÿµÿÆÿˆÿþýÿÕÿÍÿ¶ÿÆÿ‰ÿþüÿÕÿÌÿ·ÿÆÿŠÿþûÿÕÿËÿ¸ÿÆÿ‹ÿþúÿÕÿÊÿ¹ÿÆÿŒÿþùÿÕÿÉÿºÿÆÿÿþøÿÕÿÈÿ»ÿÆÿŽÿþ÷ÿÕÿÇÿ¼ÿÆÿÿþöÿÕÿÆÿ½ÿÆÿÿþõÿÕÿÅÿ¾ÿÆÿ‘ÿþôÿÕÿÄÿ¿ÿÆÿ’ÿþóÿÕÿÃÿÀÿÆÿ”ÿýòÿÕÿÂÿÁÿÆÿ•ÿýñÿÕÿÁÿÂÿÆÿ–ÿþïÿÕÿÀÿÃÿÆÿ—ÿþîÿÕÿ¿ÿÄÿÆÿ˜ÿþíÿÕÿ¾ÿÿÆÿÆÿšÿýìÿÕÿ¼ÿÇÿÆÿ›ÿýëÿÕÿ»ÿÈÿÆÿœÿþéÿÕÿºÿÿÊÿÆÿžÿýèÿÕÿ¸ÿËÿÆÿŸÿýçÿÕÿ·ÿÌÿÆÿ¡ÿýåÿÕÿ¶ÿÿÎÿÆÿ¢ÿýäÿÕÿ´ÿÏÿÆÿ¤ÿýâÿÕÿ³ÿÐÿÆÿ¥ÿýáÿÕÿ²ÿÿÒÿÆÿ§ÿýßÿÕÿ°ÿÿÔÿÆÿ¨ÿýÞÿÕÿ®ÿÕÿÆÿªÿýÜÿÕÿ­ÿÿ×ÿÆÿ¬ÿüÛÿÕÿ«ÿØÿÆÿ­ÿýÙÿÕÿªÿÿÚÿÆÿ¯ÿý×ÿÕÿ¨ÿÿÜÿÆÿ±ÿüÖÿÕÿ¦ÿÿÞÿÆÿ³ÿüÔÿÕÿ¤ÿÿàÿÆÿ´ÿýÒÿÕÿ¢ÿÿâÿÆÿ¶ÿýÐÿÕÿ ÿÿäÿÆÿ¸ÿüÏÿÕÿžÿÿæÿÆÿºÿüÍÿÕÿœÿÿèÿÆÿ¼ÿüËÿÕÿšÿÿêÿÆÿ¾ÿüÉÿÕÿ˜ÿÿìÿÆÿÀÿüÇÿÕÿ–ÿÿîÿÆÿÂÿüÅÿÕÿ”ÿÿðÿÆÿÄÿüÃÿÕÿ’ÿþóÿÆÿÇÿûÁÿÕÿÿÿõÿÆÿÊÿú¿ÿÕÿÿÿ÷ÿÆÿÌÿû¼ÿÕÿ‹ÿþúÿÆÿÏÿû¹ÿÕÿˆÿþýÿÆÿÒÿú·ÿÕÿ…ÿþÿÆÿÖÿù´ÿÕÿ‚ÿÿÈÿÚÿø±ÿÕÿÿÿÿþËÿÝÿù­ÿÕÿÿüÿýÏÿáÿù©ÿÕÿÿøÿüÔÿæÿ÷¦ÿÕÿÿóÿúÛÿëÿö¢ÿÕÿÿòÿöàÿðÿöÿÕÿÿíÿôçÿøÿó˜ÿÕÿÿèÿßï“ÿÕÿÿãÿä÷‹ÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿ  $((((((((((((((((,00,..........06502206<:99798749?87:;7222422266522/3366457795.11,11()$()$)$(''# )/.0$& &$$&&& (((((($ ÿÆÿÿÕÿÿÕÿò€€‚ÿÕÿÿàÿö€òÿÿö€ÿÕÿÿèÿù€çÿõÿù€•ÿÕÿÿîÿû€ßÿíÿû€›ÿÕÿÿóÿü€Ùÿçÿü€ ÿÕÿÿøÿü€Ôÿâÿü€¥ÿÕÿÿüÿý€ÏÿÝÿý€©ÿÕÿÿÿÿþ€ËÿÙÿþ€¬ÿÕÿ‚ÿ€ÿ€ÈÿÖÿþ€¯ÿÕÿ…ÿþ€ÿÆÿÓÿþ€²ÿÕÿˆÿþ€ýÿÆÿÐÿþ€µÿÕÿ‹ÿþ€úÿÆÿÍÿþ€¸ÿÕÿÿÿ€÷ÿÆÿÊÿÿ€ºÿÕÿÿÿ€õÿÆÿÈÿÿ€¼ÿÕÿ’ÿþ€óÿÆÿÆÿþ€¿ÿÕÿ”ÿÿ€ðÿÆÿÃÿÿ€ÁÿÕÿ–ÿÿ€îÿÆÿÁÿÿ€ÃÿÕÿ™ÿþ€ìÿÆÿ¿ÿþ€ÆÿÕÿ›ÿÿ€éÿÆÿ¼ÿÿ€ÈÿÕÿÿÿ€çÿÆÿºÿÿ€ÊÿÕÿŸÿÿ€åÿÆÿ¸ÿÿ€ÌÿÕÿ¡ÿÿ€ãÿÆÿ¶ÿÿ€ÎÿÕÿ£ÿÿ€áÿÆÿ´ÿÿ€ÐÿÕÿ¥ÿÿ€ßÿÆÿ²ÿÿ€ÒÿÕÿ¦ÿ€ÝÿÆÿ°ÿ€ÓÿÕÿ¨ÿÿ€ÜÿÆÿ¯ÿÿ€ÕÿÕÿªÿÿ€ÚÿÆÿ­ÿÿ€×ÿÕÿ«ÿ€ØÿÆÿ«ÿ€ØÿÕÿ­ÿÿ€×ÿÆÿªÿÿ€ÚÿÕÿ®ÿ€ÕÿÆÿ¨ÿ€ÛÿÕÿ°ÿÿ€ÔÿÆÿ§ÿÿ€ÝÿÕÿ²ÿÿ€ÒÿÆÿ¥ÿÿ€ßÿÕÿ³ÿ€ÐÿÆÿ£ÿ€àÿÕÿµÿÿ€ÏÿÆÿ¢ÿÿ€âÿÕÿ¶ÿ€ÍÿÆÿ ÿ€ãÿÕÿ·ÿ€ÌÿÆÿŸÿ€äÿÕÿ¹ÿÿ€ËÿÆÿžÿÿ€æÿÕÿºÿ€ÉÿÆÿœÿ€çÿÕÿ»ÿ€ÈÿÆÿ›ÿ€èÿÕÿ½ÿÿ€ÇÿÆÿšÿÿ€êÿÕÿ¾ÿ€ÅÿÆÿ˜ÿ€ëÿÕÿ¿ÿ€ÄÿÆÿ—ÿ€ìÿÕÿÀÿ€ÃÿÆÿ–ÿ€íÿÕÿÁÿ€ÂÿÆÿ•ÿ€îÿÕÿÂÿ€ÁÿÆÿ”ÿ€ïÿÕÿÃÿ€ÀÿÆÿ“ÿ€ðÿÕÿÄÿ€¿ÿÆÿ’ÿ€ñÿÕÿÅÿ€¾ÿÆÿ‘ÿ€òÿÕÿÆÿ€½ÿÆÿÿ€óÿÕÿÇÿ€¼ÿÆÿÿ€ôÿÕÿÈÿ€»ÿÆÿŽÿ€õÿÕÿÉÿ€ºÿÆÿÿ€öÿÕÿÊÿ€¹ÿÆÿŒÿ€÷ÿÕÿËÿ€¸ÿÆÿ‹ÿ€øÿÕÿÌÿ€·ÿÆÿŠÿ€ùÿÕÿÍÿ€¶ÿÆÿ‰ÿ€úÿÕÿÎÿ€µÿÆÿˆÿ€ûÿÕÿÒÿþ€´ÿÆÿ‡ÿ€üÿÕÿÒÿþ³ÿÆÿ†ÿ€ýÿÕÿÒÿþ³ÿÆÿ…ÿ€þÿÕÿÒÿ€±ÿÆÿ„ÿ€ÿÿÕÿÓÿ€°ÿÆÿƒÿ€ÿÕÿÔÿ€¯ÿÆÿ‚ÿ€ÕÿÕÿ€®ÿÆÿÿ€ÖÿÖÿ€­ÿÆÿÿÿ€×ÿ×ÿ€¬ÿÆÿÿÿ€×ÿ×ÿ€¬ÿÆÿÿÿÿ€ØÿØÿ€«ÿÆÿÿþÿ€ÙÿÙÿ€ªÿÆÿÿýÿ€ÚÿÚÿ€©ÿÆÿÿýÿ€ÚÿÚÿ€©ÿÆÿÿüÿ€ÛÿÛÿ€¨ÿÆÿÿûÿ€ÜÿÜÿ€§ÿÆÿÿúÿ€ÝÿÝÿ€¦ÿÆÿÿúÿ€ÝÿÝÿ€¦ÿÆÿÿùÿ€ÞÿÞÿ€¥ÿÆÿÿøÿ€ßÿßÿ€¤ÿÆÿÿ÷ÿ€àÿßÿ€¤ÿÆÿÿ÷ÿ€àÿàÿ€£ÿÆÿÿöÿ€áÿàÿ€£ÿÆÿÿöÿ€áÿáÿ€¢ÿÆÿÿõÿ€âÿâÿ€¡ÿÆÿÿôÿ€ãÿâÿ€¡ÿÆÿÿôÿ€ãÿãÿ€ ÿÆÿÿóÿ€äÿäÿ€ŸÿÆÿÿòÿ€åÿäÿ€ŸÿÆÿÿòÿ€åÿåÿ€žÿÆÿÿñÿ€æÿåÿ€žÿÆÿÿñÿ€æÿæÿ€ÿÑÿùþÿÿðÿ€çÿçÿ€œÿÙÿùùÿþü†ÿðÿ€çÿçÿ€œÿàÿúîÿüÿúÿïÿ€èÿèÿ€›ÿåÿüçÿõÿü’ÿïÿ€èÿèÿ€›ÿèÿþâÿðÿþ•ÿîÿ€éÿéÿ€šÿêÿÿßÿíÿÿ—ÿîÿ€éÿéÿ€šÿíÿþÝÿëÿþšÿíÿ€êÿêÿ€™ÿïÿÿÚÿèÿÿœÿíÿ€êÿêÿ€™ÿñÿÿØÿæÿÿžÿìÿ€ëÿëÿ€˜ÿôÿþÖÿäÿþ¡ÿìÿ€ëÿëÿ€˜ÿöÿÿÓÿáÿÿ£ÿëÿ€ìÿìÿ€—ÿøÿÿÑÿßÿÿ¥ÿëÿ€ìÿìÿ€—ÿúÿÿÏÿÝÿÿ§ÿêÿ€íÿíÿ€–ÿüÿÿÍÿÛÿÿ©ÿêÿ€íÿíÿ€–ÿýÿËÿÙÿªÿéÿ€îÿíÿ€–ÿÿÿÿÊÿØÿÿ¬ÿéÿ€îÿîÿ€•ÿÿÈÿÖÿ­ÿèÿ€ïÿîÿ€•ÿÇÿÕÿ®ÿèÿ€ïÿïÿ€–ÿÿÆÿÔÿÿ°ÿçÿ€ðÿïÿ€—ÿÿÿÆÿÒÿ±ÿçÿ€ðÿðÿ€—ÿþÿÆÿÑÿ²ÿæÿ€ñÿðÿ€˜ÿýÿÆÿÐÿ³ÿæÿ€ñÿðÿ€™ÿüÿÆÿÏÿ´ÿæÿ€ñÿñÿ€šÿÿûÿÆÿÎÿÿ¶ÿåÿ€òÿñÿ€›ÿùÿÆÿÌÿ·ÿåÿ€òÿòÿ€›ÿøÿÆÿËÿ¸ÿäÿ€óÿòÿ€œÿ÷ÿÆÿÊÿ¹ÿäÿ€óÿóÿ€œÿöÿÔÿóÉÿºÿãÿ€ôÿóÿ€ÿõÿØÿýóÿýÌÿ»ÿãÿ€ôÿóÿ€žÿôÿÛÿþïÿýÿþÏÿ»ÿãÿ€ôÿôÿ€ÿôÿÝÿÿìÿúÿÿÐÿ¼ÿâÿ€õÿôÿ€žÿóÿßÿÿöÿ÷ÿÿøÿÿÑÿ½ÿâÿ€õÿôÿ€Ÿÿòÿàÿùÿü÷ÿÿþùÿÑÿ¾ÿâÿ€õÿõÿ€ŸÿñÿãÿþûÿþðÿþÿþûÿþÓÿ¿ÿáÿ€öÿõÿ€ ÿðÿäÿÿûÿÿíÿûÿÿûÿÿÓÿÀÿâÿÿöÿõÿ€¡ÿïÿåÿûÿÿëÿùÿÿûÿÔÿÀÿáÿÿ÷ÿöÿ€ ÿïÿæÿÿýÿÿéÿ÷ÿÿýÿÿÔÿÁÿáÿÿ÷ÿöÿ€¡ÿîÿçÿýÿþèÿöÿþýÿÔÿÂÿáÿÿ÷ÿöÿ€¢ÿíÿèÿýÿÿæÿôÿÿýÿÔÿÃÿàÿÿøÿ÷ÿ€¢ÿìÿéÿýÿäÿòÿýÿÔÿÄÿàÿÿøÿ÷ÿ€¢ÿìÿêÿýÿãÿñÿýÿÕÿÄÿàÿÿøÿ÷ÿ€£ÿëÿëÿýÿâÿðÿýÿÕÿÅÿàÿÿøÿøÿ€£ÿêÿìÿþÿÿáÿïÿÿþÿÕÿÆÿßÿÿùÿøÿ€£ÿêÿíÿÿþÿàÿîÿþÿÿÖÿÆÿßÿÿùÿøÿ€¤ÿéÿîÿýÿßÿíÿýÿÖÿÇÿßÿÿùÿøÿ€¤ÿéÿîÿÿÿÞÿìÿÿÿÿÖÿÇÿßÿÿùÿùÿ€¤ÿèÿïÿþÿÝÿëÿþÿÖÿÈÿÞÿÿúÿùÿ€¤ÿèÿðÿþÿÜÿêÿþÿ×ÿÈÿÞÿÿúÿùÿ€¥ÿçÿðÿÿÿæÿûýÿêÿÿÿÿÖÿÉÿÞÿÿúÿùÿ€¥ÿçÿñÿþÿèÿýýÿýÿéÿþÿ×ÿÉÿÞÿÿúÿùÿ€¦ÿæÿòÿÿÿéÿþ÷ÿÿéÿÿÿ×ÿÊÿÝÿÿûÿúÿ€¥ÿæÿòÿÿÿéÿÿóÿÿéÿÿÿ×ÿÊÿÝÿÿûÿúÿ€¥ÿæÿóÿÿÿéÿÿòÿÿéÿÿÿØÿÊÿÝÿÿûÿúÿ€¦ÿåÿóÿÿÿêÿÿñÿÿÿÿêÿÿÿ×ÿËÿÝÿÿûÿúÿ€¦ÿåÿôÿÿÿéÿðÿþÿéÿÿÿØÿËÿÝÿÿûÿúÿ€§ÿäÿôÿÿÿêÿïÿýÿêÿÿÿ×ÿÌÿÜÿÿüÿûÿ€¦ÿäÿõÿÿÿêÿÿïÿýÿÿêÿÿÿØÿÌÿÜÿÿüÿûÿ€§ÿãÿõÿÿÿêÿîÿüÿêÿÿÿ×ÿÍÿÜÿÿüÿûÿ€§ÿãÿöÿÿÿéÿîÿüÿéÿÿÿØÿÍÿÜÿÿüÿûÿ€§ÿãÿöÿÿÿêÿíÿûÿêÿÿÿØÿÍÿÜÿÿüÿûÿ€¨ÿâÿ÷ÿÿÿéÿíÿûÿéÿÿØÿÎÿÛÿÿýÿûÿ€¨ÿâÿ÷ÿÿÿéÿíÿûÿéÿÿÿØÿÎÿÛÿÿýÿüÿ€¨ÿáÿ÷ÿÿòÿüüÿíÿûÿèÿÿØÿÎÿÛÿÿýÿüÿ€¨ÿáÿøÿÿÿôÿþþÿÿþÿÿíÿûÿÿéÿÿÿØÿÏÿÛÿÿýÿüÿ€¨ÿáÿøÿÿÿôÿúÿÿÿìÿúÿéÿÿÿØÿÏÿÛÿÿýÿüÿ€©ÿàÿøÿÿôÿøÿþìÿúÿèÿÿ×ÿÐÿÚÿÿþÿüÿ€©ÿàÿùÿÿÿôÿ÷ÿÿìÿúÿèÿÿÿØÿÐÿÚÿÿþÿüÿ€©ÿàÿùÿÿÿõÿÿöÿÿíÿûÿÿèÿÿÿØÿÐÿÚÿÿþÿüÿ€©ÿàÿùÿÿôÿôÿíÿûÿæÿÿØÿÐÿÚÿÿþÿüÿ€©ÿàÿúÿÿÿôÿôÿÿîÿûÿþÿûïÿÿÿÙÿÐÿÚÿÿþÿýÿ€©ÿßÿúÿÿÿôÿôÿÿïÿûÿÿÿýÿÿðÿÿÿØÿÑÿÚÿÿþÿýÿ€©ÿßÿúÿÿóÿôÿÿðÿûÿÿûÿïÿÿØÿÑÿÚÿÿþÿýÿ€©ÿßÿúÿÿôÿÿóÿÿðÿüÿÿúÿïÿÿØÿÑÿÙÿÿÿÿýÿ€©ÿßÿúÿÿôÿòÿÿñÿüÿÿùÿÿðÿÿØÿÑÿÙÿÿÿÿýÿ€©ÿßÿúÿÿôÿòÿÿÿñÿýÿþ÷ÿðÿÿØÿÑÿÙÿÿÿÿýÿ€©ÿßÿûÿÿÿôÿñÿÿÿòÿýÿþ÷ÿðÿÿÿÙÿÑÿÙÿÿÿÿýÿ€©ÿßÿûÿÿóÿðÿÿòÿþÿÿöÿïÿÿÙÿÑÿÙÿÿÿÿýÿ€ªÿÞÿûÿÿòÿñÿÿÿóÿÿÿþõÿïÿÿÙÿÑÿÙÿÿÿÿýÿ€ªÿÞÿûÿÿòÿðÿþóÿÿýõÿïÿÿØÿÒÿÙÿÿÿÿýÿ€ªÿÞÿûÿÿòÿïÿþþÿûýÿÿÿôÿïÿÿØÿÒÿÙÿÿÿÿýÿ€ªÿÞÿûÿÿòÿîÿþÿÿýÿÿÿÿÿôÿïÿÿØÿÒÿÙÿÿÿÿþÿ€©ÿÞÿûÿÿòÿíÿüýÿýÿÿÿôÿÿïÿÿØÿÒÿÙÿÿÿÿþÿ€©ÿÞÿüÿÿñÿìÿÿùþÿÿÿôÿíÿÿÙÿÒÿÙÿÿÿÿþÿ€©ÿÞÿüÿÿñÿìÿÿÿýÿýÿÿóÿíÿÿÙÿÒÿÙÿÿÿÿþÿ€©ÿÞÿüÿÿñÿÿíÿÿÿÿÿýÿÿóÿíÿÿÙÿÒÿÙÿÿÿÿþÿ€ªÿÝÿüÿÿðÿìÿÿÿýüÿÿóÿíÿÿØÿÓÿÙÿÿÿÿþÿ€ªÿÝÿüÿÿðÿìÿöÿòÿíÿÿØÿÓÿÙÿÿÿÿþÿ€ªÿÝÿüÿÿðÿìÿÿ÷ÿóÿìÿÿØÿÓÿÙÿÿÿÿþÿ€ªÿÝÿüÿÿðÿëÿ÷ÿóÿìÿÿØÿÓÿÙÿÿÿÿþÿ€ªÿÝÿüÿÿïÿìÿøÿóÿìÿÿØÿÓÿÙÿÿÿÿþÿ€ªÿÝÿüÿÿïÿìÿøÿóÿÿìÿÿØÿÓÿÙÿÿÿÿþÿ€ªÿÝÿüÿÿïÿìÿÿùÿóÿëÿÿØÿÓÿÙÿÿÿÿþÿ€ªÿÝÿüÿÿîÿìÿüýÿóÿëÿÿÙÿÒÿÙÿÿÿÿþÿ€©ÿÞÿüÿÿîÿìÿÿÿÿÿÿÿÿôÿÿëÿÿÙÿÒÿÙÿÿÿÿþÿ€©ÿÞÿüÿÿîÿìÿýÿÿÿÿôÿêÿÿÙÿÒÿÙÿÿÿÿþÿ€©ÿÞÿüÿÿîÿÿîÿÿüÿÿÿôÿêÿÿÙÿÒÿÙÿÿÿÿþÿ€©ÿÞÿûÿÿíÿîÿþþÿÿÿÿõÿÿêÿÿØÿÒÿÙÿÿÿÿýÿ€ªÿÞÿûÿÿíÿÿîÿÿþÿÿÿÿõÿéÿÿØÿÒÿÙÿÿÿÿýÿ€ªÿÞÿûÿÿìÿîÿûÿÿÿöÿÿéÿÿØÿÒÿÙÿÿÿÿýÿ€ªÿÞÿûÿÿíÿíÿûÿÿöÿéÿÿØÿÒÿÙÿÿÿÿýÿ€ªÿÞÿûÿÿìÿîÿûÿÿ÷ÿÿéÿÿÙÿÑÿÙÿÿÿÿýÿ€©ÿßÿûÿÿìÿîÿûÿÿøÿÿëÿÿÿÿÙÿÑÿÙÿÿÿÿýÿ€©ÿßÿûÿÿëÿïÿûÿÿøÿëÿþÿÿÙÿÑÿÙÿÿÿÿýÿ€©ÿßÿúÿÿëÿïÿûÿÿùÿÿëÿÿÿØÿÑÿÙÿÿÿÿýÿ€©ÿßÿúÿÿêÿðÿûÿÿùÿëÿÿÿÿØÿÑÿÙÿÿÿÿýÿ€©ÿßÿúÿÿëÿÿñÿûÿÿúÿêÿÿÿÿØÿÑÿÙÿÿÿÿýÿ€©ÿßÿúÿÿêÿñÿúÿûÿÿëÿÿÿÿÿÿØÿÑÿÙÿÿÿÿýÿ€©ÿßÿúÿÿêÿÿòÿúÿþÿÿéÿþÿÿÿØÿÑÿÙÿÿÿÿüÿ€©ÿàÿúÿÿéÿÿôÿÿùÿüéÿÿþÿÿÿÙÿÐÿÚÿ€ÿÿüÿ€©ÿàÿùÿÿèÿÿõÿøÿäÿþÿýØÿÐÿÚÿ€ÿÿüÿ€©ÿàÿùÿÿèÿõÿøÿäÿþÿÿÿØÿÐÿÚÿÿþÿüÿ€©ÿàÿùÿÿçÿöÿøÿåÿÿþÿÿÿØÿÐÿÚÿÿþÿüÿ€©ÿàÿøÿÿæÿÿùÿ÷ÿåÿýÿþ×ÿÐÿÚÿÿþÿüÿ€¨ÿáÿøÿÿæÿÿûÿÿ÷ÿåÿþÿÿÿØÿÏÿÚÿÿþÿüÿ€¨ÿáÿøÿÿåÿþþÿÿöÿæÿÿþÿÿÿØÿÏÿÚÿÿþÿüÿ€¨ÿáÿ÷ÿþäÿüõÿæÿýÿþØÿÎÿÛÿÿýÿûÿ€¨ÿâÿ÷ÿÿÓÿæÿþÿÿÿØÿÎÿÛÿÿýÿûÿ€¨ÿâÿ÷ÿþÓÿçÿÿþÿýØÿÎÿÛÿÿýÿûÿ€§ÿãÿöÿÿÔÿçÿýÿÿØÿÍÿÛÿÿýÿûÿ€§ÿãÿöÿÿÔÿçÿþÿÿÿØÿÍÿÛÿÿýÿûÿ€§ÿãÿõÿÿÔÿçÿþÿþ×ÿÍÿÜÿÿüÿûÿ€¦ÿäÿõÿÿÕÿèÿÿÿÿÿÿØÿÌÿÜÿÿüÿúÿ€§ÿäÿôÿÿÕÿèÿþÿþ×ÿÌÿÜÿÿüÿúÿ€¦ÿåÿôÿÿÖÿèÿþÿÿØÿËÿÜÿÿüÿúÿ€¦ÿåÿóÿÿ×ÿèÿÿÿÿ×ÿËÿÜÿÿüÿúÿ€¥ÿæÿóÿÿ×ÿèÿÿÿØÿÊÿÝÿÿûÿúÿ€¥ÿæÿòÿÿ×ÿèÿÿþ×ÿÊÿÝÿÿûÿùÿ€¦ÿæÿòÿþØÿèÿü×ÿÊÿÝÿÿûÿùÿ€¥ÿçÿñÿÿéÿòÿèÿÿÿ×ÿÉÿÝÿÿûÿùÿ€¥ÿçÿðÿÿéÿüÿÿÿÿÿÿÿÿçÿÿÖÿÉÿÞÿÿúÿùÿ€¤ÿèÿðÿÿëÿþÿöÿéÿÿÿ×ÿÈÿÞÿÿúÿùÿ€¤ÿèÿïÿÿéÿþþÿÿÿÿÿÿÿéÿÿÖÿÈÿÞÿÿúÿøÿ€¤ÿéÿîÿÿÜÿêÿÿÖÿÇÿÞÿÿúÿøÿ€¤ÿéÿîÿÿÝÿëÿÿÿÖÿÇÿßÿÿùÿøÿ€£ÿêÿíÿþÝÿëÿþÖÿÆÿßÿÿùÿøÿ€£ÿêÿìÿÿßÿíÿÿÿÕÿÆÿßÿÿùÿ÷ÿ€£ÿëÿëÿÿßÿíÿÿÕÿÅÿßÿÿùÿ÷ÿ€¢ÿìÿêÿÿàÿîÿÿÕÿÄÿàÿÿøÿ÷ÿ€¢ÿìÿéÿÿâÿðÿÿÿÔÿÄÿàÿÿøÿöÿ€¢ÿíÿèÿÿãÿñÿÿÿÔÿÃÿàÿÿøÿöÿ€¡ÿîÿçÿÿÿäÿòÿÿÿÔÿÂÿáÿÿ÷ÿöÿ€ ÿïÿæÿýåÿóÿýÔÿÁÿáÿÿ÷ÿõÿ€¡ÿïÿåÿÿÿçÿõÿÿÿÿÔÿÀÿáÿÿ÷ÿõÿ€ ÿðÿäÿÿÿÿèÿöÿÿÿÓÿÀÿâÿÿöÿõÿ€ŸÿñÿãÿþÿêÿøÿÿÿþÓÿ¿ÿâÿÿöÿôÿ€ŸÿòÿàÿÿÿìÿúÿÿÿÿÑÿ¾ÿâÿÿöÿôÿ€žÿóÿßÿÿÿÿþïÿýÿþÿÿÿÑÿ½ÿãÿÿõÿôÿ€ÿôÿÝÿÿþÿþòÿÿþþÿÿÐÿ¼ÿãÿÿõÿóÿ€žÿôÿÛÿþþÿòþÿþÏÿ»ÿãÿÿõÿóÿ€ÿõÿØÿýóÿýÌÿ»ÿäÿÿôÿóÿ€œÿöÿÔÿóÉÿºÿäÿÿôÿòÿ€œÿ÷ÿÆÿÊÿ¹ÿäÿÿôÿòÿ€›ÿøÿÆÿËÿ¸ÿåÿÿóÿñÿ€›ÿÿúÿÆÿÍÿÿ·ÿåÿÿóÿñÿ€™ÿûÿÆÿÎÿµÿåÿÿóÿðÿ€™ÿüÿÆÿÏÿ´ÿæÿÿòÿðÿ€˜ÿýÿÆÿÐÿ³ÿæÿÿòÿðÿ€—ÿþÿÆÿÑÿ²ÿæÿÿòÿïÿ€—ÿÿÿÆÿÓÿÿ±ÿçÿÿñÿïÿ€•ÿÆÿÔÿ¯ÿçÿÿñÿîÿ€•ÿÇÿÕÿ®ÿèÿÿðÿîÿ€•ÿÿÈÿÖÿ­ÿèÿÿðÿíÿ€–ÿÿÿÿÊÿØÿÿ¬ÿéÿÿïÿíÿ€–ÿýÿËÿÙÿªÿéÿÿïÿíÿ€–ÿüÿÿÍÿÛÿÿ©ÿêÿ€ïÿìÿ€—ÿúÿÿÏÿÝÿÿ§ÿêÿÿîÿìÿ€—ÿøÿÿÑÿßÿÿ¥ÿëÿ€îÿëÿ€˜ÿöÿÿÓÿáÿÿ£ÿëÿÿíÿëÿ€˜ÿôÿþÖÿäÿþ¡ÿìÿ€íÿêÿ€™ÿñÿÿØÿæÿÿžÿìÿÿìÿêÿ€™ÿïÿÿÚÿèÿÿœÿíÿ€ìÿéÿ€šÿíÿþÝÿëÿþšÿíÿÿëÿéÿ€šÿêÿþàÿîÿþ—ÿîÿ€ëÿèÿ€›ÿçÿÿâÿðÿÿ”ÿîÿÿêÿèÿ€›ÿåÿüçÿõÿü’ÿïÿþêÿçÿ€œÿàÿùïÿýÿùÿïÿÿéÿçÿ€œÿØÿúúÿýý…ÿðÿÿèÿæÿ€ÿÑÿúýÿÿñÿþèÿåÿ€žÿÆÿÿñÿÿçÿåÿ€žÿÆÿÿòÿÿæÿäÿ€ŸÿÆÿÿòÿÿæÿäÿ€ŸÿÆÿÿóÿÿåÿãÿ€ ÿÆÿÿôÿþåÿâÿ€¡ÿÆÿÿôÿÿäÿâÿ€¡ÿÆÿÿõÿÿãÿáÿ€¢ÿÆÿÿöÿþãÿàÿ€£ÿÆÿÿöÿÿâÿàÿ€£ÿÆÿÿ÷ÿÿáÿßÿ€¤ÿÆÿÿøÿþáÿßÿ€¤ÿÆÿÿùÿþàÿÞÿ€¥ÿÆÿÿùÿÿßÿÝÿ€¦ÿÆÿÿúÿÿÞÿÝÿ€¦ÿÆÿÿûÿþÞÿÜÿ€§ÿÆÿÿûÿÿÝÿÛÿ€¨ÿÆÿÿüÿÿÜÿÚÿ€©ÿÆÿÿýÿþÜÿÚÿ€©ÿÆÿÿþÿþÛÿÙÿ€ªÿÆÿÿþÿÿÚÿØÿ€«ÿÆÿÿÿÿÿÙÿ×ÿ€¬ÿÆÿÿÿþÙÿ×ÿ€¬ÿÆÿÿþØÿÖÿ€­ÿÆÿÿÿ×ÿÕÿ€®ÿÆÿ‚ÿÖÿÔÿ€¯ÿÆÿƒÿÿÖÿÓÿ€°ÿÆÿ„ÿþÕÿÒÿ€±ÿÆÿ„ÿÿÿÕÿÑÿ€²ÿÆÿ…ÿÿÿÿÕÿÐÿ€³ÿÆÿ†ÿþÿÿÕÿÏÿ€´ÿÆÿ‡ÿþþÿÕÿÎÿ€µÿÆÿˆÿþýÿÕÿÍÿ€¶ÿÆÿ‰ÿþüÿÕÿÌÿ€·ÿÆÿŠÿþûÿÕÿËÿ€¸ÿÆÿ‹ÿþúÿÕÿÊÿ€¹ÿÆÿŒÿþùÿÕÿÉÿ€ºÿÆÿÿþøÿÕÿÈÿ€»ÿÆÿŽÿþ÷ÿÕÿÇÿ€¼ÿÆÿÿþöÿÕÿÆÿ€½ÿÆÿÿþõÿÕÿÅÿ€¾ÿÆÿ‘ÿþôÿÕÿÄÿ€¿ÿÆÿ’ÿþóÿÕÿÃÿ€ÀÿÆÿ”ÿýòÿÕÿÂÿ€ÁÿÆÿ•ÿýñÿÕÿÁÿ€ÂÿÆÿ–ÿþïÿÕÿÀÿ€ÃÿÆÿ—ÿþîÿÕÿ¿ÿ€ÄÿÆÿ˜ÿþíÿÕÿ¾ÿÿ€ÆÿÆÿšÿýìÿÕÿ¼ÿ€ÇÿÆÿ›ÿýëÿÕÿ»ÿ€ÈÿÆÿœÿþéÿÕÿºÿÿ€ÊÿÆÿžÿýèÿÕÿ¸ÿ€ËÿÆÿŸÿýçÿÕÿ·ÿ€ÌÿÆÿ¡ÿýåÿÕÿ¶ÿÿ€ÎÿÆÿ¢ÿýäÿÕÿ´ÿ€ÏÿÆÿ¤ÿýâÿÕÿ³ÿ€ÐÿÆÿ¥ÿýáÿÕÿ²ÿÿ€ÒÿÆÿ§ÿýßÿÕÿ°ÿÿ€ÔÿÆÿ¨ÿýÞÿÕÿ®ÿ€ÕÿÆÿªÿýÜÿÕÿ­ÿÿ€×ÿÆÿ¬ÿüÛÿÕÿ«ÿ€ØÿÆÿ­ÿýÙÿÕÿªÿÿ€ÚÿÆÿ¯ÿý×ÿÕÿ¨ÿÿ€ÜÿÆÿ±ÿüÖÿÕÿ¦ÿÿ€ÞÿÆÿ³ÿüÔÿÕÿ¤ÿÿ€àÿÆÿ´ÿýÒÿÕÿ¢ÿÿ€âÿÆÿ¶ÿýÐÿÕÿ ÿÿ€äÿÆÿ¸ÿüÏÿÕÿžÿÿ€æÿÆÿºÿüÍÿÕÿœÿÿ€èÿÆÿ¼ÿüËÿÕÿšÿÿ€êÿÆÿ¾ÿüÉÿÕÿ˜ÿÿ€ìÿÆÿÀÿüÇÿÕÿ–ÿÿ€îÿÆÿÂÿüÅÿÕÿ”ÿÿ€ðÿÆÿÄÿüÃÿÕÿ’ÿþ€óÿÆÿÇÿûÁÿÕÿÿÿ€õÿÆÿÊÿú¿ÿÕÿÿÿ€÷ÿÆÿÌÿû¼ÿÕÿ‹ÿþ€úÿÆÿÏÿû¹ÿÕÿˆÿþ€ýÿÆÿÒÿú·ÿÕÿ…ÿþ€ÿÆÿÖÿù´ÿÕÿ‚ÿ€ÿ€ÈÿÚÿø±ÿÕÿÿÿÿþ€ËÿÝÿù­ÿÕÿÿüÿý€Ïÿáÿù©ÿÕÿÿøÿü€Ôÿæÿ÷¦ÿÕÿÿóÿ€ûÛÿëÿö¢ÿÕÿÿòÿöàÿðÿöÿÕÿÿíÿöÿ€çÿøÿó˜ÿÕÿÿèÿßï“ÿÕÿÿãÿä÷‹ÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿ  ÿÆÿÿÕÿÿÕÿò‚ÿÕÿÿàÿöòÿÿöÿÕÿÿèÿùçÿõÿù•ÿÕÿÿîÿûßÿíÿû›ÿÕÿÿóÿüÙÿçÿü ÿÕÿÿøÿüÔÿâÿü¥ÿÕÿÿüÿýÏÿÝÿý©ÿÕÿÿÿÿþËÿÙÿþ¬ÿÕÿ‚ÿÿÈÿÖÿþ¯ÿÕÿ…ÿþÿÆÿÓÿþ²ÿÕÿˆÿþýÿÆÿÐÿþµÿÕÿ‹ÿþúÿÆÿÍÿþ¸ÿÕÿÿÿ÷ÿÆÿÊÿÿºÿÕÿÿÿõÿÆÿÈÿÿ¼ÿÕÿ’ÿþóÿÆÿÆÿþ¿ÿÕÿ”ÿÿðÿÆÿÃÿÿÁÿÕÿ–ÿÿîÿÆÿÁÿÿÃÿÕÿ™ÿþìÿÆÿ¿ÿþÆÿÕÿ›ÿÿéÿÆÿ¼ÿÿÈÿÕÿÿÿçÿÆÿºÿÿÊÿÕÿŸÿÿåÿÆÿ¸ÿÿÌÿÕÿ¡ÿÿãÿÆÿ¶ÿÿÎÿÕÿ£ÿÿáÿÆÿ´ÿÿÐÿÕÿ¥ÿÿßÿÆÿ²ÿÿÒÿÕÿ¦ÿÝÿÆÿ°ÿÓÿÕÿ¨ÿÿÜÿÆÿ¯ÿÿÕÿÕÿªÿÿÚÿÆÿ­ÿÿ×ÿÕÿ«ÿØÿÆÿ«ÿØÿÕÿ­ÿÿ×ÿÆÿªÿÿÚÿÕÿ®ÿÕÿÆÿ¨ÿÛÿÕÿ°ÿÿÔÿÆÿ§ÿÿÝÿÕÿ²ÿÿÒÿÆÿ¥ÿÿßÿÕÿ³ÿÐÿÆÿ£ÿàÿÕÿµÿÿÏÿÆÿ¢ÿÿâÿÕÿ¶ÿÍÿÆÿ ÿãÿÕÿ·ÿÌÿÆÿŸÿäÿÕÿ¹ÿÿËÿÆÿžÿÿæÿÕÿºÿÉÿÆÿœÿçÿÕÿ»ÿÈÿÆÿ›ÿèÿÕÿ½ÿÿÇÿÆÿšÿÿêÿÕÿ¾ÿÅÿÆÿ˜ÿëÿÕÿ¿ÿÄÿÆÿ—ÿìÿÕÿÀÿÃÿÆÿ–ÿíÿÕÿÁÿÂÿÆÿ•ÿîÿÕÿÂÿÁÿÆÿ”ÿïÿÕÿÃÿÀÿÆÿ“ÿðÿÕÿÄÿ¿ÿÆÿ’ÿñÿÕÿÅÿ¾ÿÆÿ‘ÿòÿÕÿÆÿ½ÿÆÿÿóÿÕÿÇÿ¼ÿÆÿÿôÿÕÿÈÿ»ÿÆÿŽÿõÿÕÿÉÿºÿÆÿÿöÿÕÿÊÿ¹ÿÆÿŒÿ÷ÿÕÿËÿ¸ÿÆÿ‹ÿøÿÕÿÌÿ·ÿÆÿŠÿùÿÕÿÍÿ¶ÿÆÿ‰ÿúÿÕÿÎÿµÿÆÿˆÿûÿÕÿÒÿý´ÿÆÿ‡ÿüÿÕÿÒÿý´ÿÆÿ†ÿýÿÕÿÒÿø¹ÿÆÿ…ÿþÿÕÿÒÿÿö½ÿÆÿ„ÿÿÿÕÿÓÿÿÿñÂÿÆÿƒÿÿÕÿÔÿþÿìÇÿÆÿ‚ÿÕÿÕÿüÿéËÿÆÿÿÖÿÖÿûÿäÐÿÆÿÿÿ×ÿ×ÿúÿßÕÿÆÿÿÿ×ÿ×ÿùÿÜÙÿÆÿÿÿÿØÿØÿøÿ×ÞÿÆÿÿþÿÙÿÙÿ÷ÿÒãÿÆÿÿýÿÚÿÚÿõÿÏçÿÆÿÿýÿÚÿÚÿõÿÊìÿÆÿÿüÿÛÿÛÿôÿÅñÿÆÿÿûÿÜÿÜÿòÿÂõÿÆÿÿúÿÝÿÝÿñÿ½úÿÆÿÿúÿÝÿÝÿñÿ¸ÿÿÆÿÿùÿÞÿÞÿïÿ·ÿÈÿÿøÿßÿßÿîÿ·úÍÿÿ÷ÿàÿßÿîÿ·õÒÿÿ÷ÿàÿàÿìÿ¸ñÖÿÿöÿáÿàÿìÿ¸ìÛÿÿöÿáÿáÿëÿ¸çàÿÿõÿâÿâÿéÿ¹ãäÿÿôÿãÿâÿéÿ¹Þéÿÿôÿãÿãÿèÿ¹Ùîÿÿóÿäÿäÿçÿ¹ÕòÿÿòÿåÿäÿæÿºÐ÷ÿÿòÿåÿåÿåÿºËüÿÿñÿæÿåÿåÿºÇÿÿñÿæÿæÿãÿ»Æý…ÿðÿçÿçÿâÿ»ÆøŠÿðÿçÿçÿâÿ»ÆôŽÿïÿèÿèÿàÿ¼Æï“ÿïÿèÿèÿàÿ¼Æê˜ÿîÿéÿéÿßÿ¼ÆæœÿîÿéÿéÿÞÿ½Æá¡ÿíÿêÿêÿÝÿ½ÆÜ¦ÿíÿêÿêÿÝÿ½ÆØªÿìÿëÿëÿÛÿ¾ÆÓ¯ÿìÿëÿëÿÛÿ¾ÆÎ´ÿëÿìÿìÿÚÿ¾ÆÊ¸ÿëÿìÿìÿÙÿ¿ÆÅ½ÿêÿíÿíÿØÿ¿ÆÀÂÿêÿíÿíÿØÿ¿Æ¼Æÿéÿîÿíÿ×ÿÀÆ·ËÿéÿîÿîÿÖÿÀƲÐÿèÿïÿîÿÖÿÀÆ®ÔÿèÿïÿïÿÔÿÁÆ©ÙÿçÿðÿïÿÔÿÁƤÞÿçÿðÿðÿÓÿÁÆ âÿæÿñÿðÿÒÿÂÆ›çÿæÿñÿðÿÒÿÂÆ–ìÿæÿñÿñÿÑÿÂÆ’ðÿåÿòÿñÿÐÿÃÆõÿåÿòÿòÿÏÿÃÆˆúÿäÿóÿòÿÏÿÃÆ„þÿäÿóÿóÿÍÿÄÆÿåÿôÿóÿÍÿÄÆúêÿôÿóÿÍÿÄÆöîÿôÿôÿËÿÅÆñòÿõÿôÿËÿÅÆì÷ÿõÿôÿËÿÅÆèûÿõÿõÿÉÿÆÆãÿÿöÿõÿÉÿÆÆàöÿõÿÉÿÆÆß÷ÿöÿÇÿÇÆß÷ÿöÿÇÿÇÆß÷ÿöÿÇÿÇÆÞøÿ÷ÿÅÿÈÆÞøÿ÷ÿÅÿÈÆÞøÿ÷ÿÅÿÈÆÞøÿøÿÃÿÉÆÝùÿøÿÃÿÉÆÝùÿøÿÃÿÉÆÝùÿøÿÃÿÉÆÝùÿùÿÁÿÊÆÜúÿùÿÁÿÊÆÜúÿùÿÁÿÊÆÜúÿùÿÀÿËÆÜúÿùÿÀÿËÆÛûÿúÿ¿ÿËÆÛûÿúÿ¾ÿÌÆÛûÿúÿ¾ÿÌÆÛûÿúÿ¾ÿÌÆÛûÿúÿ½ÿÍÆÚüÿûÿ¼ÿÍÆÚüÿûÿ¼ÿÍÆÚüÿûÿ»ÿÎÆÚüÿûÿ»ÿÎÆÚüÿûÿ»ÿÎÆÙýÿûÿºÿÏÆÙýÿüÿ¹ÿÏÆÙýÿüÿ¹ÿÏÆÙýÿüÿ¸ÿÐÆÙýÿüÿ¸ÿÐÆØþÿüÿ¸ÿÐÆØþÿüÿ·ÿÑÆØþÿüÿ·ÿÑÆØþÿüÿ·ÿÑÆØþÿýÿµÿÒÆØþÿýÿµÿÒÆØþÿýÿµÿÒÆ×ÿÿýÿ´ÿÓÆ×ÿÿýÿ´ÿÓÆ×ÿÿýÿ´ÿÓÆ×ÿÿýÿ³ÿÔÆ×ÿÿýÿ³ÿÔÆ×ÿÿýÿ³ÿÔÆ×ÿÿýÿ²ÿÕÆ×ÿÿýÿ²ÿÕÆ×ÿÿþÿ±ÿÕÆ×ÿÿþÿ°ÿÖÆ×ÿÿþÿ°ÿÖÆ×ÿÿþÿ°ÿÖÆ×ÿÿþÿ¯ÿׯ×ÿÿþÿ¯ÿׯ×ÿÿþÿ¯ÿׯ×ÿÿþÿ®ÿØÆ×ÿÿþÿ®ÿØÆ×ÿÿþÿ®ÿØÆ×ÿÿþÿ­ÿÙÆ×ÿÿþÿ­ÿÙÆ×ÿÿþÿ­ÿÙÆ×ÿÿþÿ­ÿÙÆ×ÿÿþÿ¬ÿÚÆ×ÿÿþÿ¬ÿÚÆ×ÿÿýÿ­ÿÚÆ×ÿÿýÿ¬ÿÛÆ×ÿÿýÿ¬ÿÛÆ×ÿÿýÿ¬ÿÛÆ×ÿÿýÿ«ÿÜÆ×ÿÿýÿ«ÿÜÆ×ÿÿýÿ«ÿÜÆ×ÿÿýÿªÿÝÆ×ÿÿýÿªÿÝÆ×ÿÿýÿªÿÝÆ×ÿÿýÿ©ÿÞÆ×ÿÿüÿªÿÞÆ×ÿÿüÿªÿÞÆ×ÿÿüÿ©ÿ߯Øþÿüÿ©ÿ߯Øþÿüÿ©ÿ߯Øþÿüÿ¨ÿàÆØþÿüÿ¨ÿàÆØþÿüÿ¨ÿàÆÙýÿûÿ¨ÿáÆÙýÿûÿ¨ÿáÆÙýÿûÿ¨ÿáÆÙýÿûÿ§ÿâÆÙýÿûÿ§ÿâÆÚüÿûÿ§ÿâÆÚüÿúÿ§ÿãÆÚüÿúÿ§ÿãÆÚüÿúÿ§ÿãÆÚüÿúÿ¦ÿäÆÛûÿúÿ¦ÿäÆÛûÿùÿ§ÿäÆÛûÿùÿ¦ÿåÆÛûÿùÿ¦ÿåÆÜúÿùÿ¦ÿåÆÜúÿùÿ¥ÿæÆÜúÿøÿ¦ÿæÆÜúÿøÿ¦ÿæÆÝùÿøÿ¥ÿçÆÝùÿøÿ¥ÿçÆÝùÿ÷ÿ¦ÿçÆÝùÿ÷ÿ¥ÿèÆÞøÿ÷ÿ¥ÿèÆÞøÿöÿ¦ÿèÆÞøÿöÿ¦ÿèÆß÷ÿöÿ¥ÿéÆß÷ÿõÿ¦ÿéÆß÷ÿõÿ¦ÿéÆàöÿõÿ¥ÿêÆàöÿôÿ¦ÿêÆàöÿôÿ¦ÿêÆáõÿôÿ¥ÿëÆáõÿóÿ¦ÿëÆáõÿóÿ¦ÿëÆâôÿóÿ¥ÿìÆâôÿòÿ¦ÿìÆâôÿòÿ¦ÿìÆãóÿñÿ¦ÿíÆãóÿñÿ¦ÿíÆãóÿðÿ§ÿíÆäòÿðÿ¦ÿîÆäòÿðÿ¦ÿîÆäòÿïÿ§ÿîÆåñÿïÿ¦ÿïÆåñÿîÿ§ÿïÆæðÿîÿ§ÿïÆæðÿíÿ§ÿðÆçïÿíÿ§ÿðÆçïÿíÿ§ÿðÆçïÿìÿ§ÿñÆèîÿìÿ§ÿñÆèîÿëÿ¨ÿñÆéíÿëÿ§ÿòÆéíÿêÿ¨ÿòÆêìÿêÿ¨ÿòÆêìÿéÿ¨ÿóÆëëÿéÿ¨ÿóÆëëÿèÿ©ÿóÆìêÿèÿ¨ÿôÆìêÿçÿ©ÿôÆíéÿçÿ©ÿôÆîèÿæÿ©ÿõÆîèÿåÿªÿõÆïçÿåÿªÿõÆðæÿäÿªÿöÆðæÿäÿªÿöÆñåÿãÿ«ÿöÆñåÿâÿ«ÿ÷Æòäÿâÿ«ÿ÷Æóãÿáÿ¬ÿ÷Æóãÿàÿ¬ÿøÆôâÿàÿ¬ÿøÆõáÿßÿ­ÿøÆõáÿßÿ­ÿøÆöàÿÞÿ­ÿùÆ÷ßÿÝÿ®ÿùÆøÞÿÝÿ®ÿùÆøÞÿÜÿ®ÿúÆùÝÿÛÿ¯ÿúÆúÜÿÚÿ°ÿúÆúÜÿÚÿ¯ÿûÆûÛÿÙÿ°ÿûÆüÚÿØÿ±ÿûÆýÙÿ×ÿ±ÿüÆýÙÿ×ÿ±ÿüÆþØÿÖÿ²ÿüÆÿ×ÿÕÿ²ÿýÆÖÿÔÿ³ÿýÆÖÿÓÿ´ÿýÆÕÿÒÿ´ÿþÆ‚ÿÕÿÑÿµÿþƃÿÿÕÿÐÿ¶ÿþƃÿÿÕÿÏÿ¶ÿÿÆ„þÿÕÿÎÿ·ÿÿÆ…ýÿÕÿÍÿ¸ÿÿƆüÿÕÿÌÿ¸ÿƇûÿÕÿËÿ¹ÿƈúÿÕÿÊÿºÿƉùÿÕÿÉÿºÿÆŠøÿÕÿÈÿ»ÿÆ‹÷ÿÕÿÇÿ¼ÿÆŒöÿÕÿÆÿ½ÿÿÇõÿÕÿÅÿ¾ÿÿÇŽôÿÕÿÄÿ¿ÿÿÇóÿÕÿÃÿÀÿÿÿÈòÿÕÿÂÿÁÿÿÿÈ‘ñÿÕÿÁÿÂÿÿÿÈ“ïÿÕÿÀÿÃÿþÿÉ”îÿÕÿ¿ÿÄÿþÿÉ•íÿÕÿ¾ÿÿÆÿþÿÉ–ìÿÕÿ¼ÿÇÿýÿÊ—ëÿÕÿ»ÿÈÿýÿÊ™éÿÕÿºÿÿÊÿýÿÊšèÿÕÿ¸ÿËÿüÿË›çÿÕÿ·ÿÌÿüÿËåÿÕÿ¶ÿÿÎÿüÿËžäÿÕÿ´ÿÏÿûÿÌ âÿÕÿ³ÿÐÿûÿÌ¡áÿÕÿ²ÿÿÒÿûÿÌ£ßÿÕÿ°ÿÿÔÿúÿͤÞÿÕÿ®ÿÕÿúÿͦÜÿÕÿ­ÿÿ×ÿúÿͧÛÿÕÿ«ÿØÿúÿÍ©ÙÿÕÿªÿÿÚÿùÿΫ×ÿÕÿ¨ÿÿÜÿùÿάÖÿÕÿ¦ÿÿÞÿùÿήÔÿÕÿ¤ÿÿàÿøÿϰÒÿÕÿ¢ÿÿâÿøÿϲÐÿÕÿ ÿÿäÿøÿϳÏÿÕÿžÿÿæÿ÷ÿеÍÿÕÿœÿÿèÿ÷ÿзËÿÕÿšÿÿêÿ÷ÿйÉÿÕÿ˜ÿÿìÿöÿÑ»ÇÿÕÿ–ÿÿîÿöÿѽÅÿÕÿ”ÿÿðÿöÿÑ¿ÃÿÕÿ’ÿþóÿõÿÒÁÁÿÕÿÿÿõÿõÿÒÿÿÕÿÿÿ÷ÿõÿÒÆ¼ÿÕÿ‹ÿþúÿôÿÓɹÿÕÿˆÿþýÿôÿÓË·ÿÕÿ…ÿþÿôÿÓδÿÕÿ‚ÿÿõÿÔѱÿÕÿÿÿÿþøÿÔÕ­ÿÕÿÿüÿýüÿÔÙ©ÿÕÿÿøÿüÿÕܦÿÕÿÿóÿÔà¢ÿÕÿÿòÿÕåÿÕÿÿíÿÚê˜ÿÕÿÿèÿßï“ÿÕÿÿãÿä÷‹ÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿÿÆÿÿÕÿ!.55.*-+58=<ö` 0@üúP ü@`û0Pôú@¿ŸÏ`¯Ÿ¿ïþ`Ÿ¿ŸP0Ï`¿ŸÏ¿0þÿ¯óü/@¯`Ÿ`@0ï ``¯P¯P0pÏ` `@p0÷ýŸpP`ÏP¿pþÿ@ 0ß ŸpŸýþ¯P÷þÿŸýÿ0Ÿþ0Ï`ý 0Ï`þ0pßýòÿÿŸ÷@ßþÏ`÷¯ûÏŸý 0¿@0 üPß÷ß@ý¯÷ ïúÏŸ0P¯0¿Ïÿ p¿pß`÷p¯ý ÿ ÷¯pøßp@ßïpÿŸ 0ÿPïüÿþï ý¯ü ý@ßû`ý`¿ß@Ÿp¯`¿¿ý0ŸþŸü¿ý`ý¿`ü`@ý`pp¯@¿ßß@pïüߟ þ¯¿ ¯Pý ÿþ ÿ@þ0¿0ïÏ ¿¿ ß pÿ`Ï￟ ý@p@ý0ïß¿ý``@ý`Ïß¿Ÿ`p` pP 0Ÿp0 p0ÿ0ú ÷0ú úPè             „„„„„„„„„„„„„ÂÂÂÂÂÂÂÂÂÂÂÂÂPKPÆ·ÔİÃÖáºÐ=",.Á½³ÒĦ¹ÇÉ«¾Ûþ¿0«ç0þ¿©÷@þÿ@þþÿ`èþÿ@ìþÿŸý@ýÿñúÿߟ èç@þÿÊ@þÿßýïþÿ@ø¿ûÿ¿pø@þÿ@`þÿçþ¿0ìýÿ þŸýÿñøÿï éç@þÿÊ@ýÿ`þ`ýÿ@ø¿ùÿïPù@þÿ@0ïÿÿŸÍýÿ üÿñþÿ¿¿þÿŸéç@þÿÊ@ýÿ¿þßýÿ@ø¿ÿÿ߯ÿÿÿÿ@ú@þÿ@ÏÿÿÏû `¿ÿÿï¯@Ÿ¿¿pþþ¿þ¿ 0¿¿`PÏÿï÷ýÿßüÿñþÿþÏÿÿ¿ý@¯ïÿÿ¿`ü`¿þÿÏŸ0þ ŸßÿÿÏþþ¿0ßÿß`þ@þÿ ŸïÿÏ0ýÏÿÿߟ þ¿¿` ¿`PÏÿÿ¯¿¿ò@üÿ @üÿ@ø¿ÿÿ¿þ0ïÿÿßú@þÿ@¯ÿÿßýÏúÿPÿÿßþ`ÿÿ¿þÿ@¿ÿÿïüÿø ÿÿïÿÿ`ßÿïþÿñþÿþÏÿÿ¯þ`úÿŸþÏúÿÿ`úÿÏþþÿïüÿ@@þÿïýÿï 0ïûÿ ï ¿ÿÿ¿ïÿÿ`ùÿ¿ò@þÿïÿŸŸÿïþÿ@ø¿ÿÿ¿ý`þÿ0û@þÿ¿ÿÿï0ü ÿÿÏP@¯ÿÿß þÿP¯ÿÿ`þÿ @¿ÿÿïŸïÿÿßø ÿÿ¿Ïÿ¿`ÿÿþÿñþÿŸ@@¯þÿP þÿ@`ïÿÿ``ÿÿß`@@ß ïÿÿ@`ïÿÿ`þÿßþÿŸ@þÿÏŸþÿŸÏÿÿ¯@PÏÿÿŸ¿þÿß¿¿ïÿÿÏP@¯ÿÿ¿ò@þÿÿï0ÿÿþÿ@ø¿ÿÿ¿ýþÿû@ûÿï üþÿ þÿ 0¿ÿÿŸÿÿïþþÿ @¿ÿÿ`þÿø ÿÿ¿`ÿÿßÿŸþÿñøÿþÿÿÏþ ÿÿÏÿÿï`0þ ÿÿŸþÿÿ¯þÿ @Ÿÿÿ¿@þÿþÿÿß@ÿÿßþ Pÿÿï¿ÿÿý `ÿÿïÿÿ¿ò@þÿ ÿÿßÿß@þÿ@ø¿ÿÿ¿üþÿû@úÿÏý@÷ÿ @`ÿÿïpÿÿŸþþÿ @¿ÿÿ@þÿøÿÿ¿ïþÿ0þÿñùÿpý¿ÿÿþ@þÿ0ûÿÏp¿øÿ¿þÿ @ÿÿ¿@þÿþ@þÿ÷ÿÿ¿ÿÿýÿÿ¿þÿÿ¿ò@þÿ¯þÿp@þÿ@ø¿ÿÿ¿ýþÿpû@þÿp¿þÿþ@þÿú¿ 0ïÿÿPÏÿÿ0þþÿ @¿ÿÿ@þÿø ÿÿ¿ÿÿÏþÿñþÿŸpþÿïþ¿ÿÿþ@þÿÿPßûÿ¿ÿÿßû¿þÿ @ÿÿ¿@þÿþ@þÿÿÿïú¿ÿ¿ÿÿýÿÿ¿þÿÿ¿ò@þÿPþÿ@þÿ@ø¿ÿÿ¿ý`þÿ0û@þÿ@ïþÿP þÿ øÿÿ¿ÿÿÏýþÿ @¿ÿÿ@þÿø ÿÿ¿ ÿÿ`þÿþ`@øþÿþÿ¿þŸÿÿ¯þ `ÿÿß 0`ßþÿŸÿÿŸøþÿ @ÿÿ¿@þÿþpÿÿÏ`ÿÿßø¿ÿÿýPþÿ0ÿÿ¿þ`Pù@þÿÿßÿŸ@þÿ@@`þ¿ÿÿ¿þ0ïÿÿÏþþ @þÿ@@þÿ ï0¿ÿÿÏP pßþ üÿ`ýþÿ @¿ÿÿ@þÿøÿÿ¿ûþÿþ¿ÿÿøþÿÏþÿ@þÿ@ ßÿÿß` `ÿÿï@þÿ PŸþÿ @ÿÿ¿@þÿ@ïÿÿïÿÿ¯00¯¿ÿÿýïþÿ¿ßþÿ¿þþÿ@ù@þÿû@þÿ@ÿÿ¿þ¿ÿÿ߯ÿÿÿï0þþÿ@@þÿ@þÿÏ0ïùÿýÏþÿïýþÿ @¿ÿÿ@þÿøÿÿ¿ûþÿþ¿ÿÿøþÿ ïþÿPŸúÿÏùÿÿŸùÿþÿ @ÿÿ¿@ùÿß`ùÿ¿¿ÿÿü`üÿ ïÿÿ¿@ÿÿ¿ø@þÿû@þÿ@ÿÿ¿þ¿ùÿï@ýþÿ@@þÿ@þ¿þÿŸ ŸüÿïŸý`þÿŸüþÿ @¿ÿÿ@þÿøÿÿ¿ûþÿþ¿ÿÿøþÿþPþÿï0ïýÿŸ@ÏüÿßPþ`ßüÿÏ@þÿ @ÿÿ¿@þÿ¿þÿ¿0ý@¿üÿßp¿ÿÿû@Ÿ¿¯`ÿÿ¿ÿÿPø@þÿû@þÿ@ÿÿ¿þ¿üÿï¿püþÿ@ï0@@ ©0@@ùþ@ þüþ@ë @ øþ@ô þ ßÿÿÏÿßÖ÷Åÿß¿¿ýÿ ÿÿ`Ö÷ÅûÿßPPÿßÕ÷Å@pþ@ý @ Õ÷‹÷‹÷‹÷ @@0á0@@ ©0@@ ÷ÿÿ¿á¿ÿÿî þ¿ ÿÿÿ÷ÿÿ¿á¿ÿÿð ÿÿÏ¿ÏÿÿÅ¿ÿÿ·þÿ@Þ÷ÿÿ¿á0@@ ñÏÿ¯ þÿÏÆ¿ÿÿ·þÿ@Þ÷ÿÿ¿þþ@0ý@p0þ0@@0ý0@@ 0@@ @@000ü ¯ÿ`p@``ÿþ @@0@0þP` û `p@û@p0ý @@000þ ¿ÿÿPp û `Pþþ@ÿ0@þ p`þ@øþ@ÿ``û0p@þ@þÿp@@à÷ÿÿ¿pÿÿï0Pßüÿ¿pÿÿïýïÿÿ0¿ÿÿÿÿϯýÿ`þ@ÿ¯0ïýÿ¿¯ÿ ÿÿ¿`ïÿ¿`ïüÿþŸûÿïþPßüÿ¿ÿÿϯýÿ`¿ÿÿ¯ßþÿï0þŸüÿï`@þÿ0ßÿÿ`ýÿïþÿ@øþÿïþÿÏþ0¿üÿß0@úÿà÷ÿÿ¿0þÿP@þÿÏ¿þÿŸþÿ`PÿÿÏ¿ÿÿùÿïþŸÿ0ïÿŸ@ÿ¿Pÿpûÿ¿PþÿÏ¿þÿŸþÿÿ¿ßÿÿ@þÿÏ¿þÿŸùÿï¿ùÿßþ¿ÿÿï¿ßþÿ @úÿ@þÿï¿Ïþÿ@øøÿpïÿÿß¿ïÿÿß@úÿà÷ÿÿ¿ïÿÿpþßÿÿp@þÿ¯ÿÿ¯Ÿÿÿ`¿ÿÿÿÿß0pþÿ#@ßßPÿï@ÿ¿ÿ¯ÿÿßp@@Pßÿÿ@þÿ þÿPþ 0Ÿßÿÿp@þÿÿÿß0pþÿ@¿ÿÿ¯ pþÿ@`ÿÿß¿ÿÿ@þÿ @@`¯ÿÿÏþÿ@øþÿßÿÿ¿Ÿÿÿ¯ïÿÿPþÿ@Þ÷ÿÿ¿ÏÿÿŸþ þÿýþÿ@Pþÿÿïÿÿ¿ÿÿÿÿ¿þþÿ@ÿ¿ÿ¿@ÿ¿ÿ¿ÿÿ¿ý0þÿ þßÿÿpßþÿ¿p þÿýþÿ@ÿÿ¿þþÿ@¿ÿÿþßÿÿŸÿÿ¿þ¿ÿÿ¿@þÿüþÿPþþÿ@øþÿ @ÿÿ¿ßÿÿŸþßÿÿþÿ@Þ÷ûÿþ@÷ÿ @ßÿÿ``ÿÿŸþ ¿ÿÿÿÿ¿þþÿ@ÿ¿ÿ¿@ÿ¿ÿ¿ÿÿ¿ý@þÿý¿ÿÿ`úÿŸ@÷ÿ@ÿÿ¿þþÿ@¿ÿÿþ¿ÿÿ¿øÿ¿@þÿüþÿ@þþÿ@øþÿ@ÿÿ¿÷ÿþÿ@Þ÷þÿþÿ@@þÿú@ ÿÿ¯¯ÿÿ@þ ¿ÿÿÿÿ¿þþÿ@ÏïPÿï@ÿ¿@ÿÿÿ¿ý@þÿþ¿ÿÿ ¿üÿ`@þÿú@ÿÿ¿þþÿ@¿ÿÿþÏÿÿp¿ÿÿŸû@0@þÿüïÿÿ`þþÿ@øþÿ@ÿÿ¿þÿpû@ þÿ@Þ÷ÿÿÏÿÿßïÿÿpü`þ üÿßý ¿ÿÿÿÿ¿þþÿ@Ÿÿ0ïÿ¿ßÿÏ@ŸÿPÿÿ¿üïÿÿ` þÿ0Ÿ þ 0ßÿÿïÿÿpü`ÿÿ¿þþÿ@¿ÿÿ0þÿ0pÿÿßý @@þÿü¯ÿÿï`@þÿ@ÿÿ¿þþÿ @ÿÿ¿¯ÿÿ¯ü@ þÿPÞ÷ ÿÿ¿ßÿÿ¯þÿÏŸïÿý¯ýÿpý ¿ÿÿÿÿ¿þþÿ @0ÿ¿0ïÿÿÏýÿßþÿÿ¿üÿÿïßÿÿ¿ÿÿ¿ïÿÿ@þÿ ÏŸïÿÿÿ¿þþÿ@¿ÿÿÏïÿÿ¿ïÿÿïŸÏÿ@þÿü@øÿ@ÿÿ¿þþÿ @ÿÿ¿@þÿßßÿ@ïÿÿ߯à÷ÿÿ¿@þÿPùÿý`ýÿý ¿ÿÿÿÿ¿þþÿ@þÿŸ@0ý@ þÿÿ¿ûŸûÿÏùÿþùÿÿÿÿ¿þþÿ@¿úÿï þ0ßúÿ@þÿû`ïþÿþÿ@ÿÿ¿þþÿ@ÿÿ¿þ`ïúÿ@üÿà÷@`þ`pþ ¯¿¿Ÿp üþ`ü `@@`þþ þ ¿ÿ¿P@Pû@`ú@¿¿Ÿ`ý pŸþ¿ ü ¯¿¿Ÿp @`þþ `Pp¿¿pû`þ¿P þùÿ@ þÿ0@`þþ @`ýpŸ¿¿¯0ý`¯¿¿à÷Çïüÿ¿ÃÞ¯@@`Ïÿÿß·÷Å@þP0ÃÞùÿP·÷Þ¯Ïþÿߟ ¶÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ ‹ ÷ „‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„„‹„÷„‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷‹÷ '/*'&$&#2:0CMKB70,+<<=818887633;B?JLLT<===@BB%ú`÷@Çì Pü¿Ÿp@¾ @Púÿ@0ôúß÷ÿ@ÇïPŸßóÿߟ`ùÜ¿¯öP¿òÿ߯@ùû öÿÇò ïìÿŸ@ûßÜÿ¯ø@¯éÿ¿p ýû`÷ÿÏÆô Ÿçÿ¿@þÛÿú@ßäÿþû÷ÿÆõïåÿŸþPÛÿ@ü¯âÿþûÏ÷ÿ`Æ÷ Ïãÿ`þÛÿü0ßáÿPþüöÿ Æø@ïâÿ þÏÜÿ¿ý0ïàÿþü@÷ÿßÅù`áÿßýÛÿþïàÿßýü@÷`Åú`òÿß¿ý¿ï÷ÿŸþ@ÛÿPþ¿ôÿ￟ýŸ¿ïöÿ¯ý´û0ôÿï ù0ïúÿ`þ@ôß÷ÿ¿ô@õÿŸ0÷ `¯ùÿpý´üïõÿŸõ ¯ûÿ ðöÿPñ¯÷ÿï0òpßüÿ@ý´ü¿õÿ`ñ`ïþÿßð0öÿ òöÿ@îïþÿü×@¯¿¿¯0ô `þ¿Ÿp üýpöÿï0ï0ïÿÿŸðp÷ÿßñ@÷ÿßì Ïÿ¿üý`÷¿÷÷¿þïùÿ¿0ø`¿øÿ¿0þþïöÿ`í0ïÿ`ð¯÷ÿŸñp÷ÿ¿êpPüý¯øÿßø0÷ÿppïöÿï`û`ßôÿ`þŸöÿë0 ðß÷ÿpñ÷ÿßãýïøÿŸøp÷ÿÿ0Ïóÿï0þ0¿òÿï0ÿ öÿß× öÿ0ñöÿpäþ0÷ÿ`ø¯øÿïðÿ¿ïÿ¿ÿöÿ@×`÷ÿïðpõÿ¯ æþp÷ÿ øïäÿPÏíÿ ÿï÷ÿ¿ÖŸ÷ÿ¿ð@óÿ¯`éþŸøÿßø ÍÿPPöÿ`ÖÏ÷ÿïïñÿ¯p ìþßøÿŸø`ÍÿŸ÷ÿïÖöÿ@ïîÿߟPïÿ ÷ÿpøŸôÿÏ¿ñÿߟŸßõÿï÷ÿ¯ÖPöÿîïìÿïŸPòÿ`÷ÿ0øßöÿŸ0ü0ôÿ¿PûŸöÿ0öÿpÖ÷ÿ¿í0ïêÿß`õÿŸøÿïø ÷ÿ¿ ù¯÷ÿÏ@ùöÿ``öÿ@Ö¿÷ÿì0ïéÿß`öÿßøÿ¯ø`÷ÿ@ø÷ÿ`÷öÿ@öÿÕöÿPë ¿èÿ¯ø÷ÿpø÷ÿ÷÷ÿ ÷öÿ¿÷ÿïÖ@öÿé@¿éÿÏùP÷ÿ0øÏøÿ¿÷¯øÿßö÷ÿ¿¿÷ÿ¿Öp÷ÿßæ@Ÿïëÿ¯ù÷ÿø÷ÿ÷ÏøÿŸ÷@÷ÿöÿ¿Ö¯÷ÿŸãPŸïíÿ@úÏøÿ¿øP÷ÿPø÷ÿ`÷÷ÿ@öÿ¿Öï÷ÿ`à0Ïðÿ¯ú÷ÿø÷ÿø@÷ÿ0÷¯÷ÿöÿ¿×0öÿ0Ý`¿òÿúP÷ÿ@øÏøÿÏ÷øÿïöïøÿÏöÿÏ×`÷ÿïÙ ôÿ0û÷ÿ÷÷ÿ÷¿øÿ¯÷0÷ÿõÿן÷ÿ¯×0ïöÿ@û¿øÿ¿ø@÷ÿ`÷÷ÿp÷p÷ÿPßöÿ ë0 ðß÷ÿpÖ@öÿ@û÷ÿø÷ÿ ø@÷ÿ0÷¯÷ÿ¿öÿpìŸÿPñöÿ@ð¯éöÿ@ü@÷ÿPø¿øÿß÷pøÿïößøÿÏþöÿßî0ÏÿÿñPöÿïÿÿß0êöÿû÷ÿø÷ÿŸ÷¯øÿ¿÷ ÷ÿŸþ`õÿpñþÿÏð÷ÿ¿ð@ýÿíP÷ÿÏû¿øÿÏø@÷ÿ`÷ïøÿ÷`÷ÿ`þôÿ`ó`ßýÿðÏ÷ÿðpüÿïðß÷ÿûÿøÿø÷ÿ ø0÷ÿ@÷Ÿ÷ÿ þ¯ôÿø ßûÿ`ðöÿPðŸúÿïŸ0ó@Ïöÿ ü0ÿøÿPø¯øÿï÷p÷ÿößøÿßý@òÿ¯ý@Ïøÿ ñ@öÿðß÷ÿï¯@@ü0@ÏõÿŸûpÿøÿøïøÿ¯÷¯øÿ¿÷ ÷ÿŸýÿ¿âÿßð÷ÿÏðÝÿïû¯ÿùÿßø0÷ÿp÷ßøÿ÷`÷ÿ`ýÿ ïãÿŸð¿÷ÿðPÞÿï0úïÿùÿŸøp÷ÿ0ø ÷ÿP÷Ÿ÷ÿ0ýþPãÿ`ðï÷ÿ`ðßÿï0ú0ÿÿùÿ`ø¯øÿï÷`÷ÿ÷ßøÿïüý`äÿ ñ0öÿ ð¿àÿÏ0ùpÿÿùÿ øïøÿ¿÷ŸøÿÏ÷ ÷ÿ¯üü0ßèÿß`ðp÷ÿßïßâÿïøŸÿÿúÿßø ÷ÿ÷ßøÿ÷`÷ÿpüûëÿŸ@îŸ÷ÿ¯î@ŸïçÿïößÿÿúÿŸø`÷ÿ@ø ÷ÿP÷Ÿ÷ÿ0üùßñÿ¯pìß÷ÿpë@¿íÿïŸPô þÿúÿpøŸ÷ÿ÷`÷ÿ ÷ßøÿïûö0p¿Ïûÿ¿¯@Â@p¿¿ÏúÿÏ¿¯P0í´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ ´ „´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„„´„´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´'>7MöÆõããç¸èl-08È˹ßÖËÕÚкË󯿿 çü0@@Éþ@0Æóþ@©¿¿Pû÷ÿß ÿÿïæÿ Ÿïýÿ¿@Î@¯ûÿÏ`Éö@¯üÿÏ`Æ@@êßÿÿ0û¿÷ÿ¯`ÿÿ¯æpøÿ`Ð`øÿÉøŸùÿÏÆ¿ÿÿ`ë ÿÿïúýþÿ¯þ@Ÿÿÿpæþÿ¿`@ïÿÿïÒ þÿ¿P@@ßÿ`Éø¯þÿŸP@pßÿÆþÿ ë`ÿÿ¯úþ þÿ0üßÿÿ@ßÿß`ü`¿ÿÿï¯@ø@þÿŸý`þÿ ``¿¿``Ïÿïü`¿ÿÿï¯@þ ¿¿¯ ŸïÿÏ0öþÿû0þ@¯ïÿÿ¿`ýp¿¿`þ¯¿¿ ¿¿P ¿P Ïÿÿߟ þ`¿ÿÿï¯@ùþÿ`üŸ`þ`¿ÿÿï¯@ý¿¿P`Ïÿß` Ÿïÿ¯þ`¿¿``Ïÿïþþ¿þP¿¿Ïþÿÿ¿¯þ`¿ÿÿï¯@üÏÿÿ¯¿ÿÿpúþ`ÿÿïü þÿïüÿ 0Ïúÿ@ù¿ÿÿÏüþÿ¿ùÿ`0Ïúÿ@`ÿÿïüÿßöþÿŸ ùŸúÿþ Ïÿÿ@ ÿÿïþßÿÿ¿þÿ@úÿP0Ïúÿ@úïÿÿøÏúÿPþßÿÿïüÿüÿŸþ¿ùÿ`Pÿÿ¿þŸÿÿpßûÿ¯0Ïúÿ@Ïùÿ0úþŸÿÿ¯ü`þÿ¯¿þÿ @ÏÿÿpŸÿÿŸú ÿÿÿ`ûþÿþÿŸ@Pïÿÿ¯ÏÿÿpŸÿÿŸŸÿÿïŸßþÿö üÿÏ ýÿÿï`@¯þÿþÿþ`ÿÿ¯ úÿÿÿï@P¿ÿÏÿÿpŸÿÿŸú`þÿ ø ÏÿÿÏPPÏÿÿÏ þÿϯþÿïŸïÿÿ¿þþÿ Ÿ@Pïÿÿ¯ÿÿþ#ßÿÿ0@Ïÿÿ@@ ÏÿÿpŸÿÿŸ¯ÿÿï`@ÿÿïùþßÿÿpüŸÿÿp þÿ pÿÿþ@ÿÿ¿ú`ÿÿÿ ü þÿP@ÿÿÏþÿÿ¿pÿÿþ@ÿÿ¿ßÿÿ0Pÿÿßûÿ Pïûÿ þÿ@þÿ@Pÿÿ¿þŸÿÿp`ÿÿÏp@@P þÿ@ý`pÿÿþ@ÿÿ¿úÿÿßø`ÿÿïPþÿÿ`ÿÿ¯þþÿ 0ÿÿŸ@ÿÿÏþÿÿ¿Ïÿÿ@ ÿÿïþþÿ þpÿÿþ@ÿÿ¿@ÿÿï0`ÿÿ¯ùÿ þÿ0ü ßÿÿ0@ÿÿßÏøÿ¯úÿÿÿû`þÿ ÿÿþÿÿ¯Ïøÿ¯ ÿÿïþÿÿŸ¿üÿßü`¯ïýÿÿÿÏýþÿ@ÿÿpþ ßÿÿ0Ÿÿÿpýÿÿ¯úÏøÿ¯ú¿ÿÿ¿ø¿ÿÿþ@þÿÿ Ÿÿÿp0ÿÿïþ ¯ÿÿ`ÿÿþÿÿ¯ÿÿïþ `ÿÿ¯@ÿÿßýÏøÿ¯¯ÿÿþŸÿÿpùÿ`ÿÿïü ÿÿïþpÿÿŸþÿú¿Púÿÿÿû ßÿÿ¿¿ÿÿPþ¯ÿÿpþÿú¿P`ÿÿ¯þ¯ÿÿ`û`ù `ïÿÿ¿¿ÿÿþ0þÿ Ïÿÿ@ ÿÿïþßÿÿ0ý¿ÿÿúþÿú¿Pú¿ÿÿ¿øþÿ@þpÿÿÏßÿÿ0`ÿÿ¯þ ïÿÿ ¿ÿÿPþ¯ÿÿpPÿÿ¿þ ŸÿÿpÿÿŸýþÿú¿PïÿÿPþßÿÿ0ùÿŸÿÿ¯ü`ÿÿ¯þ¯ÿÿ`þÿó`ÿÿÿ`ýŸþÿ@þÿ0þÿ þÿùŸÿÿpþïÿÿ ÷¯pûÏÿÿ¯¿ÿÿþŸÿÿ¯þÿþ `ÿÿ¯ ÿÿïü¿ÿÿýÿþÿúúŸþÿ ý ¯ þÿ@þßÿÿp ÿÿïþ Ÿÿÿp0ÿÿßþþÿ0þÿ ÿÿþ ßÿÿ0¿ÿÿ`ýþÿùþÿ@ ÿÿïøÿßÿÿpüŸÿÿpþïÿÿ ÏÿÿÏ0@ùïÿÿï@`¿þÿ%@ÿÿß@ßÿÿÏÿÿÏ0@ßÿÿ00ÿÿßößÿß@@PŸþÿ`Ÿÿÿß pþÿ0@þÿ p@pßÿÿp`ÿÿ¯üÿÿï@`ïÏÿÿÏ0@ú`þÿß`@PŸïßßÿÿ¯Ÿÿÿß`ÿÿ¯þ"ßÿÿ0pÿÿŸ@ÿÿß@ßÿÿ¿ÿÿÏ@PŸÿÿïþþÿPý ÏÿÿÏ0@þÿŸ ÿÿ¯ø þÿ0ü ßÿÿ00ÿÿßþ@ùÿ`ø`øÿpþùÿÏ@ùÿ` ÿÿïþpÿÿŸ÷ ÷ÿŸ0ùÿ`0øÿ0Ÿÿÿpü ïûÿÏ@ùÿ`ù¿ùÿŸpúÿ ï0Ÿÿÿp ÿÿïþ¯ÿÿ`ùÿϯùÿ¯þïÿÿï¿ß @ùÿ`¯ùÿpø`ÿÿïü ÿÿïþpÿÿŸý@Ïüÿ¯ ÷@¿üÿŸ0ý¿ÿÿ¿ýÿý@Ïüÿ¯ `ÿÿ¯þ¯ÿÿ`÷ÏûÿÏ`ýPßýÿ¿@ýŸþÿ¿`ÿÿïþßÿÿ0û0¿ýÿß`þ@Ïüÿ¯ øïýÿß þïýÿŸ þ ßÿÿ0`ÿÿ¯þ ïÿÿ ¿ÿÿ¿ýÿþ 0ïÿÿï¯ÿÿpþ`ýÿßþ@Ïüÿ ¯ Ïÿÿïßÿÿ0øæ@@0ôÿ@@0úþÿÿÿ@ø@@0äý@ø @@ú @ í@@0ú@@0ýö0@@ ù0@@èþÿÿÿ@ùÿ@÷þ@û@@0úÿ@òÕõ@ÿÿÏ‘Ï@ÿÿÏÃÕõÿÿ‘ÏÿÿÃÕõ`0‘Ï`0ÃÕÕÕÕŒ @@ úáþ@ßþ@×Õóö@¦¿ÿÿPúìPþ¿Ÿ0þ`þÿà@ÿÿÏ×Õô0öÿ@¦þÿúî0ßùÿpÿÿßßÿÿó þÿéÕô`öÿ§@ÿÿÏùï ïþÿÿ¿Ïþÿ@0@@0ß¿ÿÿPó`ÿÿ¿éÕðÿÿÏúP` üþ@ p0þP`û@p0úPP@@0þþ@ÿ0@ @þp0üþ@ p@ýÿÿPp þ0@@ ýþ@ ûŸÿÿß þ ÿþþ@þ0@@`Pþ0p ý0@@þþ@þþÿ@pþ@ý@¯ÿÿŸ@@ þ `Pý@@0@0Õð¿ÿÿûïüÿþ@ÿÿߟýÿÿPßþÿÏýPßüÿ¿þ0Ïýÿïÿÿ¯@ÿÿÏ`ßÿÏ úÿŸþ þÿŸýÿþ¿ÿÿŸßþÿï ŸÿÿŸþpÿÿï û¿ÿÿßü @ÿÿßþþÿïþÿ0¿þÿï þïÿÿ @ÿÿÏ@ÿÿÏþßûÿÏ@úÿPŸüÿï`þÿÿŸïÿÕðþÿPüŸþÿ¿ßþÿ`òÿ@`þÿÿÏþÿŸ ïþÿ¿ßþÿpûÿŸPÿï¿¿ïþÿ0`þÿß¿ïþÿøÿ ÿÿ¿ïÿÿpúŸþÿß@ûÿÿŸ@òÿ0ÿÿßþÿÿÿÿÿÿ¿¿ßþÿp`Ïþÿþ¿ÿÏÿÿï¿ïþÿ ¿ûÿ`Õñ@þÿý`ÿÿï0¿ÿÿ¯¿ÿÿ ¯ÿÿßP0þÿ@ þÿ`ÿÿï¿ÿÿÏïÿÿ0¿þÿÏ¿Ï`@0þþÿ @Ÿÿÿ0þÿ@@ÿÿßP ïÿÿ PÿÿߟÿÿÏù ïüÿïþ ¿ÿÿ`ÿÿ¿0pþÿ `ßÿÿpÿÿŸþ ¿ÿÿP¿ÿÿP Pý Ïÿÿ`ÿÿ¿ý ŸÿÿÏïÿÿpýÿÿ¿ß ÕñÿÿÏüßÿÿþÿÿ¿þÿ ÿÿþÿÿŸÿÿ¿þ@þÿ þÿ 0ÿÿïþþÿû `¯¿þÿþßÿÿ0þþÿ@ÿÿþïÿÿ@0þÿ@þÿ0øïüÿÏþÿ ¿ÿÿPPÿÿÏþ Ïÿÿ@¯ÿÿ`þþÿþÿþPŸ¿ïÿÿ@Ÿÿÿþ þÿ@þ¿ÿÿ@ÿÿÏüÕñ¿ÿÿý þÿ þÿÿ¯@ÿÿÏþ¿ÿÿPPÿÿ¿ßÿÿ`þPÿÿï`ÿÿÏþ pÿÿ¯@ÿÿÏü0¿úÿ¿ ÿÿïþþÿ¿ÿÿPþÿþþÿÏÿÿô@ïþÿp@ÿÿßþþÿ ÿÿþÿþïÿÿ@ÿÿÏ@ÿÿÏŸùÿþßÿÿ@þ`ÿÿßýÏÿÿpÿÿüÕñþÿPý@þÿýßÿÿ`ÿÿþþÿÿÿþÿ@þŸÿÿŸÿÿ¿þ ŸÿÿpÿÿýïÿÿŸ@Ÿÿÿ`ÿÿ¯þ`ÿÿÏþÿPÿÿ¿þÏÿÿŸÿÿÏø`ûþÿ ÿÿŸ@ÿÿÏþ¿ÿÿPPÿÿ¿0ÿÿßþÿÿÿÿ¿ÿÿ¿P `ÿÿ¿ þÿýÿÿ¿þ þÿ ¿ÿÿPüÕò@þÿý@þÿ pÿÿï¿ÿÿP@ÿÿÏþÏÿÿ@þÿ`0þÿ@ÿÿï0Pßÿÿ@¿ÿÿPýpÿÿÏþßÿÿ@Ÿÿÿp ïÿÿ`@ÿÿÏþÿÿþ¿üÿ@øÿ¿PýPþÿ P¿ÿÿ`ÿÿþþÿÿÿpÿÿÏÏÿÿP¿ÿÿP0þÿ Ÿÿÿ`ÿÿ¿ýÿÿßþ¯ÿÿ¿þÿüÕòÿÿÏûïÿÿߟþÿPþÿ ÿÿþÿþ ¯ÿÿïïÿÿ0øÿþþÿýÿÿïPP¯þÿþßÿÿ¿ïÿÿ¿ÿÿþÏÿÿ@þýÿø@þÿï¿¿ßþÿÏþÿ ¿ÿÿP@ÿÿÏþÏÿÿ@þÿÏ¿ýÿþÿ@þÿp@þÿ @ÿÿïP@`0þÿ ¿¿ÿÿï @ÿÿÏûÕò¿ÿÿûPûÿï`@ÿÿÏþ ¿ÿÿPPÿÿ¿þ ïûÿýþÿ ߯ÿÿ¯@ÿÿÏü0üÿÏÿÿ¿ ùÿ ¿¿ÿÿPþÿý`þÿßø`øÿ¿@ÿÿßþþÿ ÿÿþÿþ@üÿ ¿ÿÿÏ@ÿÿÏþïýÿÏþÿþ@üÿûÿß0ÿÿûÕòþ0ú ¿¿¯pþ@Pþþ@@ýp¯¿¿ û @@¿ÿÿ`@Pû@¯¿Ÿ @@`ÿÿ¯`¯¿Ÿ`ýþ `ýpþÿ@ö `þ¿¯0þ @` pþ `0 `ýP¯¿ @P@Pþ Ÿ¿¯@ `ýP¯¿¿Ÿ þ@¿¿Ÿ`ý`0ûÕ½Ÿ@@P¯ÿÿßéŸÿÿpê ïÿÿ’Õ½úÿï0éßÿÿ0ê¿ÿÿï’Õ¾ ¿ïþÿ¿é ÿÿïêpþÿP‘Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„Õ„„„ÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕÕ/2.^ac[XTPfhc$ tt~trqnk}xp  §@@0òÿ@ ñûóÏÿûPÿå@ÿâ@ÏýÿßPö`ïþÿ¿óÏÿ@ópÿ`ûŸÿ0å0¿`âï@@pïÿ ø@ÿÏP@ÿ¿ó¯ÿÿ@ó ÿ¿üïßÂ0ý`ÿø¯ÿ þŸÿ0õŸï¯ÿ@ò¯ÿ ý`ÿpþPÏÿÿ¯@þ0¿` ¿ Ÿïÿï¯P0¿`þŸïÿïŸþ`¿0ßÿß`ñPÿpøÿ¿ý@ÿöpï0ÿ@ò`ÿpý8¯ÿ ÿ@PÏÿ@@ÿ¿ïÿÿ¿ ï߿@ÿÏÿŸŸÿÏÿïßïÿ@ó ÏÏù ÿüÿŸ÷`ÿ`ÿ@òïÏþÿ¿0ÿþÿ¯@ÿÿ pÿPý @@ÿÿpþpÿÿþ@ÿŸõ¿ÏïŸø@ÿüÿ¿ø0ÿ`ÿ@ñ Ÿÿ0pÿ`ÿý¿ÿ@ÿýpÿú@ÿÏïüïÏÿ@ýÿ¿õÿ¿ïßPø@ÿüÿ¿ù0ïŸÿ@ñ PÿÏÿ¿ùÿÿ@ÿýïÿï¯0þ@ÿÿ¿ü¿ÿÿ@ýÿ¿òŸÿPù@ÿüÿ¿ù¿Ïþ@@Ÿÿp@ðÿß ÿŸþ¿ÿú@ÿ@ÿüp¿ïÿÿŸ@ÿÿ¿ü¿ÿÿ@ýÿ¿òÿ¯ù ÿýÿŸù¿ýÿüÿ@ðÿ0ÿPþŸÿ0ù@ÿø 0Ïÿ0@ÿßßüÿßÿÿ@ýÿ¿ñÿ¿øÿ¿ý@ÿù0ý@@Ÿÿp@ð0ÿŸßïý`ÿ¯ü0@ÿý0ý ÿ@@ÿŸÿ@þ@ÿŸÿ@ýÿ¿ø@üpÿþ` þ¯ÿ þŸÿ0þ` úÿ@ïÏïÿü Ïÿ¿P@`¿¿@ÿýï@@pïß@ÿ ïïp@`ïï ÿ@ýÿ¿øÿÏp@@ÿïþ¿ÿ@þ@ÿÏP@ÿ¿ý¿ÿ@úÿ@ïpÿÿ0üýÿßp@ÿý@Ïýÿ¿0@ÿþ0ßþÿß0þÿ@ýÿ¿øŸïýÿ¿ ý¿ÿ@ý`ïþÿ¿ý¿ÿ@úÿ@ãÿ@ ô@@ õ0@0è @@òÿ@ ñûûûûûûûû´`ÐûÅÿ@óÿ¿ÐûÅÿ@ó@0Ðû@0ý@ þ @@ þ@þ0@ @þ @ý@0÷PP Ÿÿp@@ `@ý@0@ P`P õ`0ý@ @0þ0P @Ïÿþ@ÿŸþ¿ÿÿ¿þÿ`þÿÏPÿþ¿ÿ @ÿù0Ïýÿï0üÿ`ïýÿïþÿ¿@ÿ¯ßþÿß0¿ýÿ@÷0ïýÿŸþ @ÿÿÿ¿Ÿÿÿýÿ@ÿ@ÿïþïÏÏÿþÏÿ¯0ÿÿ¿ÿÿppÿPúßïpP¿@ Ÿÿp@@ ÿÏ0P¿þÿ¿@ÿÿÿÿ¯ @ÿ¿øïï@Ÿÿ@ÿÿïÿŸ 0¿ÿ@*@ÿpߟÿP ÿÿ0 ÿŸÿ`ÿP¿ï`ï¯ÏŸÿú`ÿpüÿ@þ@ÿùÿ¿@ÿþÿ¿ýÏÿøpÿ`ýßï@ÿ¿ýïßÿÿ@ÿ¯0ÿ ߟPÿ@@ÿppß ÿ`ÿþ ÿ0¯Ÿ`ÿ Ï¿ù¯ÿ úÿ@þïï@ûÿ¿@ÿýÿ¿ý¿ÿø¯ÿýÿ0@ÿý0ÿÿÿ@ ¿ßÏïÿý ÿŸÏϯ¿¿þ @ÿ`ÿPÿpÿù¿ÿùÿ@ýPßþÿÏPþÿ¿@ÿýÿ¿ý¿ÿø¿ÿüÿ@@ÿý@ÿÿÿ@ pÿ ßp0ÿP¿¿ý ¯ß ÿ0pÿÿý ïŸ`ï¯Ï@ÿ@ù¿ÿùÿ@û0`Ÿïÿ@ÿ¿@ÿýÿ¿ý¿ÿø¿ÿüÿ@@ÿý@ÿÿÿ@ 0ÿÿ ߟÿý pÿß ÿŸÿ@ý ¯ß¯Ÿ`ÿŸÿøÿPúÿ@ø Pÿÿ¿@ÿýÿ¿ý¿ÿøÿPýÏÿ@ÿüÿßÿÿ@ÿïÿÏþïÿ0ý0ÿÿþÏïïü pÿÿPÿï¯ýÿÿþ ÿß @pÿþ@Ÿ þ pÿ`ÿ¿@ÿýÿ¿ý¿ÿýÿÿþ ÿÏ`ÿŸ@ÿüÿ¯@PŸÿÿ@ÿ¯ÿpþ0ÿïûïÿ0þpÿ¯ü0ÿïý¯ÿpýÿÿý`ÿÿ¿¿ÿÿ@ïÿ¿¿@ÿÿÏ¿ßÿÏþÿ¿@ÿýÿ¿ý¿ÿýÿÿý `ÿÿ¿ÏÿÏ@ÿü¯ÿÿÿ¿Ÿÿ@ÿ@ ý`û`ý @û`ý@ ýÿü ¿¿0þ 0Ÿ¿¯@0¿¿¯`ý` @ý`ý`ýÿü@Ÿ¿¿pþ @ú @ ÿ0ßï…@ÏŸßÿ`…0¿ÿÿÿ¿Pþìûììûììûììûììûììûììûììûììûììûììûììûììûììûììûììûììûììûììûììûììûììûììûììûììûììûììûììûììûììûììûììûììûììûììûììûììûììûììûìûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûû0û00û00û00û00û00û00û00û00û00û00û00û00û00û00û00û00û00û00û00û00û00û00û00û00û00û00û00û00û00û00û00û00û00û00û00û00û00û00û08BIMPatt+2.+*(*'6>3FOOG<622CCE@6?>??>;;CJGQQQX@@@ADFF))B;QøÈ÷ååé»ën/2:ÊÍ»áØÍ×ÜÒ¼Í! ) $((((((((((((((((,00,..........06502206<:99798749?87:;7222422266522/3366457793,11,11()$()$)$(''# )/.0$& &$$&&& (((((($ !€~}%7 +I%6_,<>834H7(3G$/#"+2.+*(*'6>3FOOG<622CCE@6?>??>;;CJGQQQX@@@ADFF))B;QøÈ÷ååé»ën/2:ÊÍ»áØÍ×ÜÒ¼Í! ) $((((((((((((((((,00,..........06502206<:99798749?87:;7222422266522/3366457795.11,11()$()$)$(''# )/.0$& &$$&&& (((((($ !€~}%7 +I%6_,<>834H7(3G$/#"+2.+*(*'6>3FOOG<622CCE@6?>??>;;CJGQQQX@@@ADFF))B;QøÈ÷ååé»ën/2:ÊÍ»áØÍ×ÜÒ¼Í! ) !€~}%7 +I%6_,<>834H7(3G$/#"+2.+*(*'6>3FOOG<622CCE@6?>??>;;CJGQQQX@@@ADFF))B;QøÈ÷ååé»ën/2:ÊÍ»áØÍ×ÜÒ¼Í !€~}%7 +I%6_,<>834H7(3G$/#"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÿ¤÷†Âÿÿÿãÿ᳆wüIg†”Âð¾ÿá³ú†ÿÂÑýÿñÿ*÷ Âÿÿÿæÿ³g*ó *g¤ðùÿ†ÜIXöÿð³wIò *X†Âóÿáö ðÿÿÿéÿáwì gÂûÿ*Ü XøÿÂXë ÿ I”á÷ÿ¤÷ :œÿÿÿëÿágç IÂþÿðÛ †úÿÂ*é ü †øÿw÷ wœÿÿÿìÿ†å gþÿ³Û ÂüÿðXç ü †øÿ:÷ ¤œÿÿÿîÿá:ã ¤þÿwÛ üÿÑ*æ ü ³ùÿðö áœÿÿÿïÿÂâ áþÿ:Ü IýÿÑå ü ðùÿÂ÷ *›ÿÿÿðÿ¤á *ýÿÛ wþÿðä ý *øÿÂ÷†¤›ÿÿÿñÿ¤ò *Iý†I÷ gþÿÂÛ ³þÿIô Igý†gIú ý X†ÿÿÿòÿÑô wáùÿÑwú ¤þÿÂô†*÷ Iô†ðÿÿÂõ gÑ÷ÿá¤Xý ý ”†ÿÿÿóÿðõ gðõÿáXû áðÿö ³ñÿX÷ Ñòÿð”* ý †ÿÿÿóÿIõ ¤ñÿ¤þ *ðÿÑö áòÿðö Âîÿ†þ Òÿ†XIIX†Ñôÿá¤wþIg”áÒÿÿÿôÿ”ö ÑïÿÑ gðÿ”÷ *ñÿÂ÷ *ìÿá: Iøÿ¤÷I÷ÿ÷I†þÿð†ù IÑøÿ¤Iø IÑÔÿÿÿõÿðö ¤íÿÑ ¤ðÿX÷ gñÿ”÷ Iìÿÿÿ”³øÿXø *øÿÑ÷ ”ÿÿ”ö ¤ûÿ¤*ô ¤Õÿÿÿõÿgö wëÿцáðÿ*÷ ”ñÿ†÷ *ìÿôÿø gøÿ”÷ ÿÑ:ó ÑþÿÑIò ÑÖÿÿÿöÿáö *×ÿáö Ññÿ†ö ”íÿõÿÑ÷ ¤øÿXø †ð Iÿÿ†ï IÖÿÿÿöÿwö Â×ÿ¤÷ ðÿ”õ Xáïÿõÿ”÷ áøÿä ³:í á×ÿÿÿöÿ÷ IÖÿg÷ IðÿÂó X¤ðòÿõÿgø *øÿáÍ ³×ÿÿÿ÷ÿ³ö ¤Öÿ:÷ †ïÿñ X”áõÿõÿ*ø gøÿ¤Í †×ÿÿÿ÷ÿg÷ Öÿðö Âïÿ†î *g³øÿöÿá÷ ”øÿgô :w††Iñ *g††g*õ †×ÿÿÿ÷ÿ÷ XÖÿ³ö îÿðì g³ûÿöÿ¤÷ Ñøÿ*ö gÑüÿÑô I³ûÿgö †×ÿÿÿøÿÑö ”Öÿ†÷ IíÿÑê *¤ðþÿöÿgø øÿá÷ IáùÿX÷ :Âùÿðö ¤×ÿÿÿøÿ¤ö ÂÖÿI÷ wìÿÑé *¤ÿÿöÿ*ø Xøÿ¤÷ Âøÿ†÷ ¤÷ÿö Â×ÿÿÿøÿwö Õÿö ³ëÿáIè Xð÷ÿð÷ ”øÿw÷ ÷ÿ†÷ á÷ÿö ÖÿÿÿøÿI÷ ÖÿÂö ðéÿÂIé :ðøÿ³÷ Ñøÿ:ø I÷ÿXø *öÿ÷ IÖÿÿÿøÿI÷ IÖÿ”÷ *æÿÂgë Xøÿw÷ øÿð÷ w÷ÿ:ø g÷ÿÂ÷ †Öÿÿÿøÿö IÖÿX÷ gãÿ³gî  Âùÿ:ø Iøÿ³÷ ³øÿð÷ ¤÷ÿ†÷ ÂÖÿÿÿøÿö IÖÿ÷ ¤àÿц:ñ  Xúÿð÷ †øÿw÷ ðøÿÂ÷ Ñ÷ÿX÷ ðÖÿÿÿøÿö I×ÿÑö ÑÝÿð¤Iô ÿ úÿ³÷ Âøÿ:ø :÷ÿ†ø öÿø :Õÿÿÿøÿö :×ÿ¤÷ Ùÿáwö ÿ Ñûÿ†÷ ÷ÿ÷ w÷ÿIø X÷ÿÑ÷ wÕÿÿÿøÿõ ×ÿg÷ X×ÿÑø ÿ ÂûÿIø IøÿÂ÷ ¤÷ÿ÷ ”÷ÿ”÷ ³Õÿÿÿøÿ*ö áëÿÑáðÿ*÷ ”ÖÿÂø ÿ Âûÿ÷ †øÿ†÷ áøÿÂ÷ Ñ÷ÿX÷ ðÕÿÿÿøÿIö ”ìÿg ³ñÿðö ÂðÿwXðéÿø ÿ ÂüÿÂ÷ ³øÿIø *÷ÿ”ø öÿ*ø :Ôÿÿÿøÿwö *îÿÑ: ðñÿ³ö ïÿÿ *Ñêÿø ÿ ûÿ†÷ ðøÿ÷ g÷ÿXø I÷ÿá÷ gÔÿÿÿøÿ¤õ ”ñÿð†þ :ðÿw÷ IðÿÂý †ðíÿ³ø  :ûÿIø :øÿÂ÷ ¤÷ÿø †÷ÿ¤÷ ¤Ôÿÿÿøÿðô ¤óÿ¤*ý wðÿ:÷ †ðÿ”ü †ððÿð*ø  wûÿ÷ wøÿ†÷ áøÿÑ÷ Â÷ÿg÷ áÔÿÿÿ÷ÿXô wðøÿá†*û ¤ðÿö ³ðÿgú gÑóÿÂ:÷  áüÿÑ÷ ³øÿXø ÷ÿ”÷ öÿ*ø *Óÿÿÿ÷ÿÂò X†ý†w:ø áñÿÂö ððÿ*÷ X†ÂÂüÿц:õ gûÿ”÷ ðøÿø X÷ÿXø I÷ÿá÷ gÓÿÿÿöÿIâ *ðÿ†÷ :ðÿðÝ ðûÿXø *øÿÑ÷ ”÷ÿ*ø †÷ÿ¤÷ ¤Óÿÿÿöÿáã gðÿI÷ wðÿ³Þ Ñúÿø gøÿ”÷ Ñøÿá÷ ³÷ÿg÷ ÑÓÿÿÿõÿ³ã ¤ðÿ÷ ¤ðÿ†ß ÑÿûÿÑ÷ ¤øÿXø ÷ÿ¤÷ ð÷ÿ*ø Òÿÿÿôÿ¤ä áñÿÑö áðÿIà :Ñÿÿûÿ”÷ áøÿø I÷ÿgø :÷ÿá÷ XÒÿÿÿóÿÑ*è *¤ðÿ”÷ *ïÿ*â †ðþÿûÿgø *øÿá÷ †÷ÿ*ø w÷ÿ¤÷ ”Òÿÿÿòÿð†ë gÂîÿg÷ XîÿÂgç †ðüÿûÿ*ø gøÿ¤÷ Âøÿá÷ ³÷ÿg÷ ÑÒÿÿÿðÿð†*ñ X”ðìÿ*÷ ”ëÿÂwIí g³ùÿüÿá÷ ”øÿg÷ ÷ÿ¤÷ á÷ÿ*ø ÑÿÿÿíÿÑ”wI:û IX†ÂÂÿ”†II:ú :IX†³ÑöÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿXIIáçÿüÿÑÂÂðÉÿþÂÑÆÿóÿþÂð©ÿ†II³ûÿÿ­ÿw÷ *ÿá æÿÿÿágý IÂÎÿÂXû :¤ÉÿöÿÂXü :¤Æÿ††Âêÿ* Ñûÿÿ­ÿI÷ Xÿ¤ Xæÿÿ”ø ¤Ðÿ¤ø wÉÿøÿðgù :ÆÿI ¤ëÿá úÿÿ­ÿý†þ Xþ†Âÿg ”æÿ†þ I¤Â† ðÒÿáþ I³ÂÂw* ¤ÉÿøÿXþ g³Â”* wÆÿþ áëÿ¤ Xúÿÿªÿáþ Ñüÿ* †* *¤üÿ¤I XÂøÿÂþ gýÿ¤þ ¤ÿÿ¤II¤¤: †üÿ¤I XÂþÿ áIIXág :Ñöÿ†þ ûÿ†ÑþÿÂX I¤ýÿ”II¤þÿXIIáÿÿ†II³áwI³ÿÿáw: *gáþÿ¤I XÂÿùÿ†þ ¤üÿg¤þÿ¤I XÂýÿ†II³¤: *¤ÿág Xðþÿ¤II¤¤: †þÿðþIþÿ³II†ÿ†:þ ÿIXþÿ¤I XÂüÿ†: XI ”úÿÿªÿ¤ üÿáþ ü áÿÿÑ:ú ÂùÿIÿ :üÿðþ †ÿÿIù ¤ÿÿÑ:ú Âÿÿ¤ ü *öÿ†þ gáùÿgú wþÿ : Âÿÿá þÿ* Iþ Âÿ†ú ³ÿÑ:ú Âúÿð wøÿð:ú ³þÿ* ü wü gþÿIù ¤ÿÿ³ Iþÿg ”ÿ*û XÿÑ:ú Âÿÿð:ù Ñúÿÿªÿg Xüÿ¤þ X†Iþ Âÿð: ”ððg gúÿá ÿ ¤ûÿþ †ÿÿþ g³ Xÿð: ”ððg gÿÿg g†*þ öÿáü :wáýÿw ¤ÂXþ ðÿðþ þÿ¤ Xÿÿáú ÿ† †Â³I ðð: ”ððg gúÿ¤þ áøÿ : :³³: :ÿÿáþ :†Xþ g† Iþÿþ g³ Xÿÿw †þÿ#* ÑÿÂ: †ÂÂáð: ”ððg gÿÿX ¤Âw ùÿÿªÿ* ”üÿg ”ÿÿáþ áÿ” †þÿ Iúÿ¤ ÿ áüÿáþ ³ÿ :þÿ† Iÿ” †þÿ Iÿÿ* Ñÿÿ³ *ÿÿ†û áÿÿ³û wÿÿáþ Âÿÿðþ Âÿ³ Iþÿg ”ÿÿ¤ :”³áþ Âýÿ¤ÿ” †þÿ Iúÿw *øÿ¤ ðÿÿ³þ ÿÿ¤ Xþÿþ Ñÿÿ† gÿÿ :þÿ† Iÿÿ: Âÿÿá þÿþ áþÿ” †þÿ Iÿ Ñÿÿ¤ Xùÿÿ«ÿáþ Ñüÿ * Ñÿÿ *ÿÿ:ø Xúÿ† ÿ ûÿ¤þ áÿ† wþÿ† Xÿ:ø Xÿá þÿ† gÿÿIü *üÿ¤Xý †ÿ† :ýÿþ Âÿw ”þÿ * Ñÿÿg ”ýÿ† Xúÿ:ø XúÿI IøÿI wþÿÂþ ÿÿ g ”ÿÿÑ þÿ X ¤ÿÿ† wþÿ† Xÿð þÿ ¤ Xÿÿ *ýÿ:ø XÿX wþÿg ”ùÿÿ«ÿ¤ üÿá þÿ” gÿÿþ úI³úÿ† ÿ ûÿ * IÿÿI ³þÿX ”ÿþ úI³ÿ¤ XþÿX ¤ÿÿû†¤ùÿ ¤ IÿI †þÿÑþ ðÿ: Âÿÿá þÿ* ÑýÿI †úÿþ úI³úÿI Iøÿþ Âþÿ” :ÿÿ* Ñÿÿ¤ Xþÿ  áÿÿI ³þÿX ”ÿ³ Iþÿ g ”ÿÿ† gýÿþ úI³ÿ ³þÿ* Ñùÿÿ«ÿg Xüÿ¤ XþÿX ¤ÿÿþ ðóÿ¤ ÿ ¤ýÿgþ Âÿÿþ ðÿÿÑþ áÿþ ðùÿg ”þÿ á÷ÿX”ûÿ: XÿI †þÿg Xÿðþ þÿ ¤ Xÿÿá üÿI wýÿÿðÿþ ðúÿúÿgþ áýÿáXáÿþ Âþÿ* ”ÿá þÿ g ”ÿÿÑ *þÿþ ðÿÿÑþ áÿw †þÿ * ÑÿÿI ¤ýÿþ ðùÿþ Âÿÿá øÿÿ«ÿ* ”üÿg ”þÿ áÿÿ: :ÑÿÿÂwwùÿðÿ †Â¤Iþ %†ÿÿ *ðÿÂ* wÿÿ: :ÑÿÿÂwwÿÿ* ÑÿÿÑ *öÿ* *w³gþ ¤ÿg *áÿ”þ ÑÿÂþ ””* ”ÿÿ¤ Xüÿw Âÿð¤ðÿ: :ÑÿÿÂwwÿúÿ¤þ *¤Â³g*ÿÿ* Xððg *ðÿ¤ Xþÿ"* Ñÿÿ” gÿÿ *ðÿÂ* wÿÿI :³g þÿþ ³ýÿ : :ÑÿÿÂwwÿÿþ gÿáw Xøÿÿ¬ÿáþ Ñüÿ * ÑÿÿÑ *þÿÂù ¤øÿ¤ø ”þÿ†ù :ðÿÿÂù ¤ÿá þÿ” g÷ÿá÷ gÿÿÑù ¤ÿÿÑø Ñÿÿg ”üÿáû :ÿÿÂù ¤ÿùÿIù gÿÿ”ú Ñÿÿg ”ÿÿá þÿX ¤ÿÿ†ù :ðÿÿXù Xþÿ I*áÿÂù ¤ÿÿXù ”øÿÿ¬ÿ¤ üÿá þÿ” gýÿÂ:ü Xá÷ÿÂIü gÑýÿI Iý wðýÿÂ:ü Xáÿ¤ XþÿX ¤÷ÿð†:û :¤ýÿ³*ý IÂýÿgþ I¤ þÿ* ÑûÿÑIý *¤þÿÂ:ü Xáÿøÿ†ý *†áþÿ†ý gáþÿ * Ñÿÿ¤ Xþÿ  áÿÿI Iý wðþÿ Ñ †X ”þÿ¤ý *þÿÂ:ü Xáÿÿð: †* Ñøÿÿ’ÿðÂÂÑôÿÿÿðÂÂÑúÿþ ÿðÿÂøÿðÂÂÑäÿýÂøÿáÂÂðúÿáÂáíÿðÂÂÑúÿðÂÂÑýÿöÿÑÂÂáùÿÑÂÂèÿþ ÿðÿÂùÿÿÂ÷ÿðþÂûÿðÂÂÑúÿÿÂòÿÿÿõÿ :‘ÿÏÿ :Ãÿÿÿõÿ† w‘ÿÏÿ† wÃÿÿÿõÿ¤††Ñ‘ÿÏÿ¤††ÑÃÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŒÿáÂÂáúÿáÿðþÂðßÿþÂ×ÿÿÿóÿö†Â¦ÿI ³úÿìÿ³wþIg†Ñþÿ¤þ ðàÿ :×ÿÿÿôÿÑö ¦ÿþ ðúÿîÿÑ*ù ”ÿÿw *ßÿ† wóÿáþ éÿÿÿôÿ¤ö ð§ÿ :ùÿïÿáþ ÿI:þ ÂÿÿÑÂÂÑßÿI ³óÿ¤ Iéÿÿÿðÿ† :úÿ𳆆¤áüÿþÂÿᔆÑþÿ³†¤ðûÿ††”Ñúÿ³††³ðÂÂÑþÿþÂÿÿÑÂÿÿáÂþ†”ÑüÿþÂÿᔆÂýÿ† wÿ³†”áþÿÑÂÂáýÿþÂáûÿg *áþÿᆠþÿþÂþÿÑÂÂð𤆳þÿц”áýÿÑÂÂðþÿþÂþÿþ ðÿÿð”þ†ÂýÿÂX gÂÂáþÿᤆ†³ðýÿðÂÂÑÿÿÂÑÿÿðÿI wûÿ†ü wþÿ *gý ÿ³*þ :ýÿ³*ü IðþÿÑ:ý  Xÿÿ :¤* :ÿáú gþÿáþ gý wþÿI g*þ áÿÿg gþÿ” áûÿI *ðüÿáÿÿ *þÿþ wþ wÑIþ áþÿ áÿÿ :ÿÿ :þÿ*û :ðÿÂú ³ÿðgü ¤þÿ† g† wÿÿðÿþ ³üÿgþ I*þ ¤ÿÿ†ò Âÿÿ¤þ ÿ:þ gÿÿáþ I*þ ”ÿÿ†û gÿ³ IIþ Ñÿÿ¤þ *Iþ ðÿÿø †ÿÿ † Iÿÿð ”úÿgþ *wÂûÿ† gÿÿÂò †ÿÿÑ *þÿ† wÿÿ† wÿÿð II*þ ”ÿ¤:þ þIÿð: Iþ áÿÿIû ¤ÿÿñÿÂþ ðýÿ¤ ÑÿÿI XÿÿI wáÿX *³ÿÑþ Âÿáþ ¤ÿÿ† ÿÿI :ðÿÿ ÑÿÿIþ :I:¤ÿÂÑþÿðþ Âÿÿg wÿÿÑþ Âÿ *³ÿá †ÿÿ ³ *ÿÿg :ùÿáü †ðþÿ I ¤ÿÿ† IÑÿ”þ ¤ðð* †ÿÿ” gþÿ I ³ÿÿI ³ÿÿá³ýÿ : †ÿÿ¤ Iýÿ g :ðÿð ”ÿÿý ÿI*áÿÿñÿ† :üÿ* †þÿ† Iÿÿþ ðÿÿw wÿÿðþ ÿÿg IþÿÂþ ÿáþ áÿÿÑ þÿþ ðûÿᤆXIþ þÿ* Ñþÿþ Âÿ† wþÿ ÂÿÿÑþ ÿÂþ Ñøÿðwü :ðÿÿþ áÿÿI ³ÿÿ³ :þÿ : ÂÿÿX ¤þÿþ ðÿÿþ ðþÿð³†gI Âÿÿg †þÿáþ ÂþÿI †ÿ :üÿÿÿñÿI wýÿáþ áþÿw Xÿ :þÿI ³ÿÿ³ Iÿÿ* ¤þÿ³ ÿ¤ :þÿ ” Xÿÿ :üÿÑIú Iÿÿá þÿðþ ðÿI ³ÿÿðþ þÿÿþ ð: †ôÿÂwþ ”ÿ *þÿþ ðÿÿ† wÿÿðþ þÿ ðÿÿ :ÿÿ :ÿÿðgù þÿ* Âþÿ¤ *ýÿ: ”ÿ† wüÿÿÿñÿþ ³ýÿÂþ ýÿ* ¤ÿ† wþÿþ ðÿÿw †ÿÿþ Âþÿg gÿ† Iþÿ g ”ÿÿ† wýÿð gÂðg †ÿÿ¤ Xþÿ¤ :ÿÿþ ðÿÿ³ Iþÿÿ: g :øÿ¤ûÿðþ †ÿ† gÿÿ :þÿI ³ÿÿ³ IÿÿÑ *þÿ† wÿÿ† wÿÿI I³á¤ Iÿÿáþ ýÿ† Iþÿáþ áÿI ³üÿÿÿòÿÂþ ðýÿÂþ áÿÿ” ðÿI ³ÿÿ :þÿ: Âÿÿþ ¤ÿÿÑþ Âÿ† Ñÿ³* ÂÿÿI ³ýÿ” :þÿ* Âÿÿg ”ÿÿá ¤ÿ :þÿw †þÿÿIü Âøÿ I³ýÿ³þ ³ÿI ¤ÿÿ† wþÿþ ðÿÿw †ÿÿ” :ÿÿð: ³ÿÿI ³ÿÑþ ðÿÿg †ÿÿ¤ Iýÿ† *þÿX Iÿÿþ ðüÿÿÿòÿ† :ûÿ *†gþ ³ÿÿþ ðÿÿ† wÿÿðþ þÿ X ww wÿÿÑø þÿþ ðýÿ† ³³Xþ þÿ* I†w Iÿÿ† wþÿ: Âþÿÿ†ý wøÿÂþ II*þ :ÿÿþ áÿÿI ³ÿÿ :þÿ: Âÿÿ†þ :Iý ðÿÿþ ðÿÂþ ”Âwþ Âÿÿ† ³Â¤ÿÑþ I†I áÿ :ûÿÿÿòÿI wûÿ³û ¤ÿÿ :þÿ I ³ÿÿ³ Iþÿáû wýÿ†þ *X Xÿÿ :üÿÑü : Iÿÿáù IðÿÿI ³ÿÿðþ ýÿÿ¤þ *ðøÿ¤ø Iðÿ *þÿþ ðÿÿ† wÿÿðþ þÿÂü I :ÿÿ :þÿý :þ þÿÂü †ÿÿwû *Ñÿÿ† wûÿÿÿòÿþ†Ñúÿá†IIX”ðþÿ††³þÿþ†ðÿÿ††Âýÿð”XII†áûÿ ðÂÂÿI ¤ÿÿ††³ûÿÂXIgᆆÂÿÿ¤ X¤XIg¤ýÿþ†ðÿÿᆆ¤ýÿÿ”þ Âöÿá¤wþIX†Ñþÿ ††¤ÿÿᆆ”þÿ ¤††Ñÿÿᆆ¤ýÿ³XIwᆆ³ÿÿ††³þÿágIXÂᆆ¤ýÿ³XIIgáþÿÂwIIg¤ýÿ¤††Ñûÿÿÿ½ÿg†Â³X *éÿg ”êÿá w’ÿÿÿò¾ÿú Ñéÿ* ÑêÿI ð’ÿÿ›ÿöòÿÿöÊÿáIþ I†ðéÿá êÿ”þ ³‘ÿÿ£ÿùçÿõÿù•ÿÿÿ©ÿûßÿíÿû›ÿÿÿ®ÿüÙÿçÿü ÿÿÿ³ÿüÔÿâÿü¥ÿÿÿ·ÿýÏÿÝÿý©ÿÿÿºÿþËÿÙÿþ¬ÿÿÿ½ÿþÈÿÖÿþ¯ÿÿÿÀÿþÅÿÓÿþ²ÿÿÿÃÿþÂÿÐÿþµÿÿÿÆÿþ¿ÿÍÿþ¸ÿÿÿÈÿÿ¼ÿÊÿÿºÿÿÿÊÿÿºÿÈÿÿ¼ÿÿÿÍÿþ¸ÿÆÿþ¿ÿÿÿÏÿÿµÿÃÿÿÁÿÿÿÑÿÿ³ÿÁÿÿÃÿÿÿÔÿþ±ÿ¿ÿþÆÿÿÿÖÿÿ®ÿ¼ÿÿÈÿÿÿØÿÿ¬ÿºÿÿÊÿÿÿÚÿÿªÿ¸ÿÿÌÿÿÿÜÿÿ¨ÿ¶ÿÿÎÿÿÿÞÿÿ¦ÿ´ÿÿÐÿÿÿàÿÿ¤ÿ²ÿÿÒÿÿÿáÿ¢ÿ°ÿÓÿÿÿãÿÿ¡ÿ¯ÿÿÕÿÿÿåÿÿŸÿ­ÿÿ×ÿÿÿæÿÿ«ÿØÿÿÿèÿÿœÿªÿÿÚÿÿÿéÿšÿ¨ÿÛÿÿÿëÿÿ™ÿ§ÿÿÝÿÿÿíÿÿ—ÿ¥ÿÿßÿÿÿîÿ•ÿ£ÿàÿÿÿðÿÿ”ÿ¢ÿÿâÿÿÿñÿ’ÿ ÿãÿÿÿòÿ‘ÿŸÿäÿÿÿôÿÿÿžÿÿæÿÿÿõÿŽÿœÿçÿÿÿöÿÿ›ÿèÿÿÿøÿÿŒÿšÿÿêÿÿÿùÿŠÿ˜ÿëÿÿÿúÿ‰ÿ—ÿìÿÿÿûÿˆÿ–ÿíÿÿÿüÿ‡ÿ•ÿîÿÿÿýÿ†ÿ”ÿïÿÿÿþÿ…ÿ“ÿðÿÿÿÿÿ„ÿ’ÿñÿÿÿÿƒÿ‘ÿòÿÿÿ‚ÿÿóÿÿ‚ÿÿÿôÿÿƒÿÿÿŽÿõÿÿ„ÿÿÿÿÿöÿÿ…ÿþÿÿŒÿ÷ÿÿ†ÿýÿÿ‹ÿøÿÿ‡ÿüÿÿŠÿùÿÿˆÿûÿÿ‰ÿúÿÿ‰ÿúÿÿˆÿûÿÿÿýùÿÿ‡ÿüÿÿÿþøÿÿ†ÿýÿÿÿþøÿÿ…ÿþÿÿÿöÿÿ„ÿÿÿÿŽÿõÿÿƒÿÿÿÿôÿÿ‚ÿÿÿóÿÿÿŽÿ‘ÿòÿÿÿÿÿ’ÿñÿÿÿÿÿ’ÿñÿÿÿÿÿÿ“ÿðÿÿÿþÿ‘ÿ”ÿïÿÿÿýÿ’ÿ•ÿîÿÿÿýÿ’ÿ•ÿîÿÿÿüÿ“ÿ–ÿíÿÿÿûÿ”ÿ—ÿìÿÿÿúÿ•ÿ˜ÿëÿÿÿúÿ•ÿ˜ÿëÿÿÿùÿ–ÿ™ÿêÿÿÿøÿ—ÿšÿéÿÿÿ÷ÿ˜ÿšÿéÿÿÿ÷ÿ˜ÿ›ÿèÿÿÿöÿ™ÿ›ÿèÿÿÿöÿ™ÿœÿçÿÿÿõÿšÿÿæÿÿÿôÿ›ÿÿæÿÿÿôÿ›ÿžÿåÿÿÿóÿœÿŸÿäÿÿÿòÿÿŸÿäÿÿÿòÿÿ ÿãÿÿÿñÿžÿ ÿãÿÿÿñÿžÿ¡ÿâÿŒÿù€þÿÿðÿŸÿ¢ÿáÿ”ÿù€ùÿþ€ü€†ÿðÿŸÿ¢ÿáÿ›ÿú€îÿüÿú€ÿïÿ ÿ£ÿàÿ ÿü€çÿõÿü€’ÿïÿ ÿ£ÿàÿ£ÿþ€âÿðÿþ€•ÿîÿ¡ÿ¤ÿßÿ¥ÿÿ€ßÿíÿÿ€—ÿîÿ¡ÿ¤ÿßÿ¨ÿþ€Ýÿëÿþ€šÿíÿ¢ÿ¥ÿÞÿªÿÿ€Úÿèÿÿ€œÿíÿ¢ÿ¥ÿÞÿ¬ÿÿ€Øÿæÿÿ€žÿìÿ£ÿ¦ÿÝÿ¯ÿþ€Öÿäÿþ€¡ÿìÿ£ÿ¦ÿÝÿ±ÿÿ€Óÿáÿÿ€£ÿëÿ¤ÿ§ÿÜÿ³ÿÿ€Ñÿßÿÿ€¥ÿëÿ¤ÿ§ÿÜÿµÿÿ€ÏÿÝÿÿ€§ÿêÿ¥ÿ¨ÿÛÿ·ÿÿ€ÍÿÛÿÿ€©ÿêÿ¥ÿ¨ÿÛÿ¸ÿ€ËÿÙÿ€ªÿéÿ¦ÿ¨ÿÛÿºÿÿ€ÊÿØÿÿ€¬ÿéÿ¦ÿ©ÿÚÿ»ÿ€ÈÿÖÿ€­ÿèÿ§ÿ©ÿÚÿ¼ÿ€ÇÿÕÿ€®ÿèÿ§ÿªÿÙÿ¾ÿÿ€ÆÿÔÿÿ€°ÿçÿ¨ÿªÿÙÿ¿ÿ€ÄÿÒÿ€±ÿçÿ¨ÿ«ÿØÿÀÿ€ÃÿÑÿ€²ÿæÿ©ÿ«ÿØÿÁÿ€ÂÿÐÿ€³ÿæÿ©ÿ«ÿØÿÂÿ€ÁÿÏÿ€´ÿæÿ©ÿ¬ÿ×ÿÄÿÿ€ÀÿÎÿÿ€¶ÿåÿªÿ¬ÿ×ÿÅÿ€¾ÿÌÿ€·ÿåÿªÿ­ÿÖÿÆÿ€½ÿËÿ€¸ÿäÿ«ÿ­ÿÖÿÇÿ€¼ÿÊÿ€¹ÿäÿ«ÿ®ÿÕÿÈÿ€ÉÿóÉÿ€ºÿãÿ¬ÿ®ÿÕÿÉÿ€ÌÿýóÿýÌÿ€»ÿãÿ¬ÿ®ÿÕÿÊÿ€ÎÿþïÿýÿþÏÿ€»ÿãÿ¬ÿ¯ÿÔÿÊÿ€ÐÿÿìÿúÿÿÐÿ€¼ÿâÿ­ÿ¯ÿÔÿËÿ€Ñÿÿöÿ÷ÿÿøÿÿÑÿ€½ÿâÿ­ÿ¯ÿÔÿÌÿ€Ñÿùÿü÷ÿÿþùÿÑÿ€¾ÿâÿ­ÿ°ÿÓÿÍÿ€ÓÿþûÿþðÿþÿþûÿþÓÿ€¿ÿáÿ®ÿ°ÿÓÿÎÿ€ÓÿÿûÿÿíÿûÿÿûÿÿÓÿ€Àÿâÿÿ®ÿ°ÿÓÿÏÿ€ÓÿûÿÿëÿùÿÿûÿÔÿ€Àÿáÿÿ¯ÿ±ÿÒÿÏÿ€Ôÿÿýÿÿéÿ÷ÿÿýÿÿÔÿ€Áÿáÿÿ¯ÿ±ÿÒÿÐÿ€ÔÿýÿþèÿöÿþýÿÔÿ€Âÿáÿÿ¯ÿ±ÿÒÿÑÿ€ÔÿýÿÿæÿôÿÿýÿÔÿ€Ãÿàÿÿ°ÿ²ÿÑÿÒÿ€ÔÿýÿäÿòÿýÿÔÿ€Äÿàÿÿ°ÿ²ÿÑÿÒÿ€ÕÿýÿãÿñÿýÿÕÿ€Äÿàÿÿ°ÿ²ÿÑÿÓÿ€ÕÿýÿâÿðÿýÿÕÿ€Åÿàÿÿ°ÿ³ÿÐÿÔÿ€ÕÿþÿÿáÿïÿÿþÿÕÿ€Æÿßÿÿ±ÿ³ÿÐÿÔÿ€ÖÿÿþÿàÿîÿþÿÿÖÿ€Æÿßÿÿ±ÿ³ÿÐÿÕÿ€ÖÿýÿßÿíÿýÿÖÿ€Çÿßÿÿ±ÿ³ÿÐÿÕÿ€ÖÿÿÿÞÿìÿÿÿÿÖÿ€Çÿßÿÿ±ÿ´ÿÏÿÖÿ€ÖÿþÿÝÿëÿþÿÖÿ€ÈÿÞÿÿ²ÿ´ÿÏÿÖÿ€×ÿþÿÜÿêÿþÿ×ÿ€ÈÿÞÿÿ²ÿ´ÿÏÿ×ÿ€ÖÿÿÿæÿûýÿêÿÿÿÿÖÿ€ÉÿÞÿÿ²ÿ´ÿÏÿ×ÿ€×ÿþÿèÿýýÿýÿéÿþÿ×ÿ€ÉÿÞÿÿ²ÿ´ÿÏÿØÿ€×ÿÿÿéÿþ÷ÿÿéÿÿÿ×ÿ€ÊÿÝÿÿ³ÿµÿÎÿØÿ€×ÿÿÿéÿÿóÿÿéÿÿÿ×ÿ€ÊÿÝÿÿ³ÿµÿÎÿØÿ€ØÿÿÿéÿÿòÿÿéÿÿÿØÿ€ÊÿÝÿÿ³ÿµÿÎÿÙÿ€×ÿÿÿêÿÿñÿÿÿÿêÿÿÿ×ÿ€ËÿÝÿÿ³ÿµÿÎÿÙÿ€ØÿÿÿéÿðÿþÿéÿÿÿØÿ€ËÿÝÿÿ³ÿµÿÎÿÚÿ€×ÿÿÿêÿïÿýÿêÿÿÿ×ÿ€ÌÿÜÿÿ´ÿ¶ÿÍÿÚÿ€ØÿÿÿêÿÿïÿýÿÿêÿÿÿØÿ€ÌÿÜÿÿ´ÿ¶ÿÍÿÛÿ€×ÿÿÿêÿîÿüÿêÿÿÿ×ÿ€ÍÿÜÿÿ´ÿ¶ÿÍÿÛÿ€ØÿÿÿéÿîÿüÿéÿÿÿØÿ€ÍÿÜÿÿ´ÿ¶ÿÍÿÛÿ€ØÿÿÿêÿíÿûÿêÿÿÿØÿ€ÍÿÜÿÿ´ÿ¶ÿÍÿÜÿ€ØÿÿÿéÿíÿûÿéÿÿØÿ€ÎÿÛÿÿµÿ¶ÿÍÿÜÿ€ØÿÿÿéÿíÿûÿéÿÿÿØÿ€ÎÿÛÿÿµÿ·ÿÌÿÝÿ€×ÿÿòÿüüÿíÿûÿèÿÿØÿ€ÎÿÛÿÿµÿ·ÿÌÿÝÿ€ØÿÿÿôÿþþÿÿþÿÿíÿûÿÿéÿÿÿØÿ€ÏÿÛÿÿµÿ·ÿÌÿÝÿ€ØÿÿÿôÿúÿÿÿìÿúÿéÿÿÿØÿ€ÏÿÛÿÿµÿ·ÿÌÿÞÿ€×ÿÿôÿøÿþìÿúÿèÿÿ×ÿ€ÐÿÚÿÿ¶ÿ·ÿÌÿÞÿ€Øÿÿÿôÿ÷ÿÿìÿúÿèÿÿÿØÿ€ÐÿÚÿÿ¶ÿ·ÿÌÿÞÿ€ØÿÿÿõÿÿöÿÿíÿûÿÿèÿÿÿØÿ€ÐÿÚÿÿ¶ÿ·ÿÌÿÞÿ€ØÿÿôÿôÿíÿûÿæÿÿØÿ€ÐÿÚÿÿ¶ÿ·ÿÌÿÞÿ€ÙÿÿÿôÿôÿÿîÿûÿþÿûïÿÿÿÙÿ€ÐÿÚÿÿ¶ÿ¸ÿËÿßÿ€ØÿÿÿôÿôÿÿïÿûÿÿÿýÿÿðÿÿÿØÿ€ÑÿÚÿÿ¶ÿ¸ÿËÿßÿ€ØÿÿóÿôÿÿðÿûÿÿûÿïÿÿØÿ€ÑÿÚÿÿ¶ÿ¸ÿËÿßÿ€ØÿÿôÿÿóÿÿðÿüÿÿúÿïÿÿØÿ€ÑÿÙÿÿ·ÿ¸ÿËÿßÿ€ØÿÿôÿòÿÿñÿüÿÿùÿÿðÿÿØÿ€ÑÿÙÿÿ·ÿ¸ÿËÿßÿ€Øÿÿôÿòÿÿÿñÿýÿþ÷ÿðÿÿØÿ€ÑÿÙÿÿ·ÿ¸ÿËÿßÿ€Ùÿÿÿôÿñÿÿÿòÿýÿþ÷ÿðÿÿÿÙÿ€ÑÿÙÿÿ·ÿ¸ÿËÿßÿ€ÙÿÿóÿðÿÿòÿþÿÿöÿïÿÿÙÿ€ÑÿÙÿÿ·ÿ¸ÿËÿàÿ€ØÿÿòÿñÿÿÿóÿÿÿþõÿïÿÿÙÿ€ÑÿÙÿÿ·ÿ¸ÿËÿàÿ€ØÿÿòÿðÿþóÿÿýõÿïÿÿØÿ€ÒÿÙÿÿ·ÿ¸ÿËÿàÿ€ØÿÿòÿïÿþþÿûýÿÿÿôÿïÿÿØÿ€ÒÿÙÿÿ·ÿ¸ÿËÿàÿ€ØÿÿòÿîÿþÿÿýÿÿÿÿÿôÿïÿÿØÿ€ÒÿÙÿÿ·ÿ¹ÿÊÿàÿ€ØÿÿòÿíÿüýÿýÿÿÿôÿÿïÿÿØÿ€ÒÿÙÿÿ·ÿ¹ÿÊÿàÿ€ÙÿÿñÿìÿÿùþÿÿÿôÿíÿÿÙÿ€ÒÿÙÿÿ·ÿ¹ÿÊÿàÿ€ÙÿÿñÿìÿÿÿýÿýÿÿóÿíÿÿÙÿ€ÒÿÙÿÿ·ÿ¹ÿÊÿàÿ€ÙÿÿñÿÿíÿÿÿÿÿýÿÿóÿíÿÿÙÿ€ÒÿÙÿÿ·ÿ¹ÿÊÿáÿ€ØÿÿðÿìÿÿÿýüÿÿóÿíÿÿØÿ€ÓÿÙÿÿ·ÿ¹ÿÊÿáÿ€ØÿÿðÿìÿöÿòÿíÿÿØÿ€ÓÿÙÿÿ·ÿ¹ÿÊÿáÿ€Øÿÿðÿìÿÿ÷ÿóÿìÿÿØÿ€ÓÿÙÿÿ·ÿ¹ÿÊÿáÿ€Øÿÿðÿëÿ÷ÿóÿìÿÿØÿ€ÓÿÙÿÿ·ÿ¹ÿÊÿáÿ€ØÿÿïÿìÿøÿóÿìÿÿØÿ€ÓÿÙÿÿ·ÿ¹ÿÊÿáÿ€ØÿÿïÿìÿøÿóÿÿìÿÿØÿ€ÓÿÙÿÿ·ÿ¹ÿÊÿáÿ€ØÿÿïÿìÿÿùÿóÿëÿÿØÿ€ÓÿÙÿÿ·ÿ¹ÿÊÿáÿ€ØÿÿîÿìÿüýÿóÿëÿÿÙÿ€ÒÿÙÿÿ·ÿ¹ÿÊÿàÿ€ÙÿÿîÿìÿÿÿÿÿÿÿÿôÿÿëÿÿÙÿ€ÒÿÙÿÿ·ÿ¹ÿÊÿàÿ€ÙÿÿîÿìÿýÿÿÿÿôÿêÿÿÙÿ€ÒÿÙÿÿ·ÿ¹ÿÊÿàÿ€ÙÿÿîÿÿîÿÿüÿÿÿôÿêÿÿÙÿ€ÒÿÙÿÿ·ÿ¹ÿÊÿàÿ€ØÿÿíÿîÿþþÿÿÿÿõÿÿêÿÿØÿ€ÒÿÙÿÿ·ÿ¸ÿËÿàÿ€ØÿÿíÿÿîÿÿþÿÿÿÿõÿéÿÿØÿ€ÒÿÙÿÿ·ÿ¸ÿËÿàÿ€ØÿÿìÿîÿûÿÿÿöÿÿéÿÿØÿ€ÒÿÙÿÿ·ÿ¸ÿËÿàÿ€ØÿÿíÿíÿûÿÿöÿéÿÿØÿ€ÒÿÙÿÿ·ÿ¸ÿËÿàÿ€Øÿÿìÿîÿûÿÿ÷ÿÿéÿÿÙÿ€ÑÿÙÿÿ·ÿ¸ÿËÿßÿ€ÙÿÿìÿîÿûÿÿøÿÿëÿÿÿÿÙÿ€ÑÿÙÿÿ·ÿ¸ÿËÿßÿ€ÙÿÿëÿïÿûÿÿøÿëÿþÿÿÙÿ€ÑÿÙÿÿ·ÿ¸ÿËÿßÿ€ØÿÿëÿïÿûÿÿùÿÿëÿÿÿØÿ€ÑÿÙÿÿ·ÿ¸ÿËÿßÿ€ØÿÿêÿðÿûÿÿùÿëÿÿÿÿØÿ€ÑÿÙÿÿ·ÿ¸ÿËÿßÿ€ØÿÿëÿÿñÿûÿÿúÿêÿÿÿÿØÿ€ÑÿÙÿÿ·ÿ¸ÿËÿßÿ€ØÿÿêÿñÿúÿûÿÿëÿÿÿÿÿÿØÿ€ÑÿÙÿÿ·ÿ¸ÿËÿßÿ€ØÿÿêÿÿòÿúÿþÿÿéÿþÿÿÿØÿ€ÑÿÙÿÿ·ÿ·ÿÌÿÞÿ€ÙÿÿéÿÿôÿÿùÿüéÿÿþÿÿÿÙÿ€ÐÿÚÿþ·ÿ·ÿÌÿÞÿ€ØÿÿèÿÿõÿøÿäÿþÿýØÿ€ÐÿÚÿþ·ÿ·ÿÌÿÞÿ€ØÿÿèÿõÿøÿäÿþÿÿÿØÿ€ÐÿÚÿÿ¶ÿ·ÿÌÿÞÿ€ØÿÿçÿöÿøÿåÿÿþÿÿÿØÿ€ÐÿÚÿÿ¶ÿ·ÿÌÿÞÿ€×ÿÿæÿÿùÿ÷ÿåÿýÿþ×ÿ€ÐÿÚÿÿ¶ÿ·ÿÌÿÝÿ€Øÿÿæÿÿûÿÿ÷ÿåÿþÿÿÿØÿ€ÏÿÚÿÿ¶ÿ·ÿÌÿÝÿ€ØÿÿåÿþþÿÿöÿæÿÿþÿÿÿØÿ€ÏÿÚÿÿ¶ÿ·ÿÌÿÝÿ€×ÿþäÿüõÿæÿýÿþØÿ€ÎÿÛÿÿµÿ¶ÿÍÿÜÿ€ØÿÿÓÿæÿþÿÿÿØÿ€ÎÿÛÿÿµÿ¶ÿÍÿÜÿ€ØÿþÓÿçÿÿþÿýØÿ€ÎÿÛÿÿµÿ¶ÿÍÿÛÿ€ØÿÿÔÿçÿýÿÿØÿ€ÍÿÛÿÿµÿ¶ÿÍÿÛÿ€ØÿÿÔÿçÿþÿÿÿØÿ€ÍÿÛÿÿµÿ¶ÿÍÿÛÿ€×ÿÿÔÿçÿþÿþ×ÿ€ÍÿÜÿÿ´ÿ¶ÿÍÿÚÿ€ØÿÿÕÿèÿÿÿÿÿÿØÿ€ÌÿÜÿÿ´ÿµÿÎÿÚÿ€×ÿÿÕÿèÿþÿþ×ÿ€ÌÿÜÿÿ´ÿµÿÎÿÙÿ€ØÿÿÖÿèÿþÿÿØÿ€ËÿÜÿÿ´ÿµÿÎÿÙÿ€×ÿÿ×ÿèÿÿÿÿ×ÿ€ËÿÜÿÿ´ÿµÿÎÿØÿ€Øÿÿ×ÿèÿÿÿØÿ€ÊÿÝÿÿ³ÿµÿÎÿØÿ€×ÿÿ×ÿèÿÿþ×ÿ€ÊÿÝÿÿ³ÿ´ÿÏÿØÿ€×ÿþØÿèÿü×ÿ€ÊÿÝÿÿ³ÿ´ÿÏÿ×ÿ€×ÿÿéÿòÿèÿÿÿ×ÿ€ÉÿÝÿÿ³ÿ´ÿÏÿ×ÿ€ÖÿÿéÿüÿÿÿÿÿÿÿÿçÿÿÖÿ€ÉÿÞÿÿ²ÿ´ÿÏÿÖÿ€×ÿÿëÿþÿöÿéÿÿÿ×ÿ€ÈÿÞÿÿ²ÿ´ÿÏÿÖÿ€ÖÿÿéÿþþÿÿÿÿÿÿÿéÿÿÖÿ€ÈÿÞÿÿ²ÿ³ÿÐÿÕÿ€ÖÿÿÜÿêÿÿÖÿ€ÇÿÞÿÿ²ÿ³ÿÐÿÕÿ€ÖÿÿÝÿëÿÿÿÖÿ€Çÿßÿÿ±ÿ³ÿÐÿÔÿ€ÖÿþÝÿëÿþÖÿ€Æÿßÿÿ±ÿ³ÿÐÿÔÿ€ÕÿÿßÿíÿÿÿÕÿ€Æÿßÿÿ±ÿ²ÿÑÿÓÿ€ÕÿÿßÿíÿÿÕÿ€Åÿßÿÿ±ÿ²ÿÑÿÒÿ€ÕÿÿàÿîÿÿÕÿ€Äÿàÿÿ°ÿ²ÿÑÿÒÿ€ÔÿÿâÿðÿÿÿÔÿ€Äÿàÿÿ°ÿ±ÿÒÿÑÿ€ÔÿÿãÿñÿÿÿÔÿ€Ãÿàÿÿ°ÿ±ÿÒÿÐÿ€ÔÿÿÿäÿòÿÿÿÔÿ€Âÿáÿÿ¯ÿ±ÿÒÿÏÿ€ÔÿýåÿóÿýÔÿ€Áÿáÿÿ¯ÿ°ÿÓÿÏÿ€ÓÿÿÿçÿõÿÿÿÿÔÿ€Àÿáÿÿ¯ÿ°ÿÓÿÎÿ€ÓÿÿÿÿèÿöÿÿÿÓÿ€Àÿâÿÿ®ÿ°ÿÓÿÍÿ€ÓÿþÿêÿøÿÿÿþÓÿ€¿ÿâÿÿ®ÿ¯ÿÔÿÌÿ€ÑÿÿÿìÿúÿÿÿÿÑÿ€¾ÿâÿÿ®ÿ¯ÿÔÿËÿ€ÑÿÿÿÿþïÿýÿþÿÿÿÑÿ€½ÿãÿÿ­ÿ¯ÿÔÿÊÿ€ÐÿÿþÿþòÿÿþþÿÿÐÿ€¼ÿãÿÿ­ÿ®ÿÕÿÊÿ€ÎÿþþÿòþÿþÏÿ€»ÿãÿÿ­ÿ®ÿÕÿÉÿ€ÌÿýóÿýÌÿ€»ÿäÿÿ¬ÿ®ÿÕÿÈÿ€ÉÿóÉÿ€ºÿäÿÿ¬ÿ­ÿÖÿÇÿ€¼ÿÊÿ€¹ÿäÿÿ¬ÿ­ÿÖÿÆÿ€½ÿËÿ€¸ÿåÿÿ«ÿ¬ÿ×ÿÅÿÿ€¿ÿÍÿÿ€·ÿåÿÿ«ÿ¬ÿ×ÿÃÿ€ÀÿÎÿ€µÿåÿÿ«ÿ«ÿØÿÂÿ€ÁÿÏÿ€´ÿæÿÿªÿ«ÿØÿÁÿ€ÂÿÐÿ€³ÿæÿÿªÿ«ÿØÿÀÿ€ÃÿÑÿ€²ÿæÿÿªÿªÿÙÿ¿ÿÿ€ÅÿÓÿÿ€±ÿçÿÿ©ÿªÿÙÿ½ÿ€ÆÿÔÿ€¯ÿçÿÿ©ÿ©ÿÚÿ¼ÿ€ÇÿÕÿ€®ÿèÿÿ¨ÿ©ÿÚÿ»ÿ€ÈÿÖÿ€­ÿèÿÿ¨ÿ¨ÿÛÿºÿÿ€ÊÿØÿÿ€¬ÿéÿÿ§ÿ¨ÿÛÿ¸ÿ€ËÿÙÿ€ªÿéÿÿ§ÿ¨ÿÛÿ·ÿÿ€ÍÿÛÿÿ€©ÿêÿþ§ÿ§ÿÜÿµÿÿ€ÏÿÝÿÿ€§ÿêÿÿ¦ÿ§ÿÜÿ³ÿÿ€Ñÿßÿÿ€¥ÿëÿþ¦ÿ¦ÿÝÿ±ÿÿ€Óÿáÿÿ€£ÿëÿÿ¥ÿ¦ÿÝÿ¯ÿþ€Öÿäÿþ€¡ÿìÿþ¥ÿ¥ÿÞÿ¬ÿÿ€Øÿæÿÿ€žÿìÿÿ¤ÿ¥ÿÞÿªÿÿ€Úÿèÿÿ€œÿíÿþ¤ÿ¤ÿßÿ¨ÿþ€Ýÿëÿþ€šÿíÿÿ£ÿ¤ÿßÿ¥ÿþ€àÿîÿþ€—ÿîÿþ£ÿ£ÿàÿ¢ÿÿ€âÿðÿÿ€”ÿîÿÿ¢ÿ£ÿàÿ ÿü€çÿõÿü€’ÿïÿþ¢ÿ¢ÿáÿ›ÿù€ïÿýÿù€ÿïÿÿ¡ÿ¢ÿáÿ“ÿú€úÿý€ý€…ÿðÿÿ ÿ¡ÿâÿŒÿú€ýÿÿñÿþ ÿ ÿãÿÿÿñÿÿŸÿ ÿãÿÿÿòÿÿžÿŸÿäÿÿÿòÿÿžÿŸÿäÿÿÿóÿÿÿžÿåÿÿÿôÿþÿÿæÿÿÿôÿÿœÿÿæÿÿÿõÿÿ›ÿœÿçÿÿÿöÿþ›ÿ›ÿèÿÿÿöÿÿšÿ›ÿèÿÿÿ÷ÿÿ™ÿšÿéÿÿÿøÿþ™ÿšÿéÿÿÿùÿþ˜ÿ™ÿêÿÿÿùÿÿ—ÿ˜ÿëÿÿÿúÿÿ–ÿ˜ÿëÿÿÿûÿþ–ÿ—ÿìÿÿÿûÿÿ•ÿ–ÿíÿÿÿüÿÿ”ÿ•ÿîÿÿÿýÿþ”ÿ•ÿîÿÿÿþÿþ“ÿ”ÿïÿÿÿþÿÿ’ÿ“ÿðÿÿÿÿÿÿ‘ÿ’ÿñÿÿÿÿþ‘ÿ’ÿñÿÿÿþÿ‘ÿòÿÿÿÿÿÿóÿÿ‚ÿŽÿÿôÿÿƒÿÿŽÿŽÿõÿÿ„ÿþÿÿöÿÿ„ÿÿÿÿŒÿ÷ÿÿ…ÿÿÿÿÿ‹ÿøÿÿ†ÿþÿÿÿŠÿùÿÿ‡ÿþþÿÿ‰ÿúÿÿˆÿþýÿÿˆÿûÿÿ‰ÿþüÿÿ‡ÿüÿÿŠÿþûÿÿ†ÿýÿÿ‹ÿþúÿÿ…ÿþÿÿŒÿþùÿÿ„ÿÿÿÿÿþøÿÿƒÿÿÿŽÿþ÷ÿÿ‚ÿÿÿþöÿÿÿ‚ÿÿþõÿÿÿÿƒÿ‘ÿþôÿÿÿÿÿ„ÿ’ÿþóÿÿÿþÿ…ÿ”ÿýòÿÿÿýÿ†ÿ•ÿýñÿÿÿüÿ‡ÿ–ÿþïÿÿÿûÿˆÿ—ÿþîÿÿÿúÿ‰ÿ˜ÿþíÿÿÿùÿÿ‹ÿšÿýìÿÿÿ÷ÿŒÿ›ÿýëÿÿÿöÿÿœÿþéÿÿÿõÿÿÿžÿýèÿÿÿóÿÿŸÿýçÿÿÿòÿ‘ÿ¡ÿýåÿÿÿñÿÿ“ÿ¢ÿýäÿÿÿïÿ”ÿ¤ÿýâÿÿÿîÿ•ÿ¥ÿýáÿÿÿíÿÿ—ÿ§ÿýßÿÿÿëÿÿ™ÿ¨ÿýÞÿÿÿéÿšÿªÿýÜÿÿÿèÿÿœÿ¬ÿüÛÿÿÿæÿÿ­ÿýÙÿÿÿåÿÿŸÿ¯ÿý×ÿÿÿãÿÿ¡ÿ±ÿüÖÿÿÿáÿÿ£ÿ³ÿüÔÿÿÿßÿÿ¥ÿ´ÿýÒÿÿÿÝÿÿ§ÿ¶ÿýÐÿÿÿÛÿÿ©ÿ¸ÿüÏÿÿÿÙÿÿ«ÿºÿüÍÿÿÿ×ÿÿ­ÿ¼ÿüËÿÿÿÕÿÿ¯ÿ¾ÿüÉÿÿÿÓÿÿ±ÿÀÿüÇÿÿÿÑÿÿ³ÿÂÿüÅÿÿÿÏÿÿµÿÄÿüÃÿÿÿÍÿþ¸ÿÇÿûÁÿÿÿÊÿÿºÿÊÿú¿ÿÿÿÈÿÿ¼ÿÌÿû¼ÿÿÿÆÿþ¿ÿÏÿû¹ÿÿÿÃÿþÂÿÒÿú·ÿÿÿÀÿþÅÿÖÿù´ÿÿÿ½ÿþÈÿÚÿø±ÿÿÿºÿþËÿÝÿù­ÿÿÿ·ÿýÏÿáÿù©ÿÿÿ³ÿüÔÿæÿ÷¦ÿÿÿ®ÿúÛÿëÿö¢ÿÿÿ­ÿöàÿðÿöÿÿÿ¨ÿôçÿøÿó˜ÿÿÿ£ÿßï“ÿÿÿžÿä÷‹ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÑÿþIѵÿÝÿÑþI©ÿÿÀÿþúúûòÿÿúýäÿ÷ÿÂþ Âþÿwþ ¤èÿþ Âìÿ†þ gýÿÂý ñÿú *gáòÿÝÿÂþ ÊÿÂþ *ýÿðþ ÂøÿIû I”ðÿðìþûÿùìôåÿúìöâÿúðýìîùöÿøíþìñþóÿþðìúøÿ÷ÿÂþ Âÿÿ¤þ †çÿþIÑìÿ†ý áþÿgý ñÿø áóÿÝÿÂþ ÊÿÂý ¤þÿ¤ý ÂøÿIù ³Žÿ÷ìøûÿóìûåÿûñøâÿöíôúú÷íìýøÿúìðùúöìñóÿòììúøÿ÷ÿÂþ ÂÿÑ gÍÿ†ý †ÿÿáü ñÿþ I††Iþ góÿÝÿÂþ ÊÿÂý Iþÿ*ý ÂøÿI *††X ÿ ÂÿýìñüÿþíîÂÿûþýÿøìöøÿòìýþÿóìûõÿóíòìúøÿ÷ÿÂþ Âð: :ûÿ ¤I XÂÿÿgII”þÿðþIðÿþI ÑÿÿwII¤³: w÷ÿ†ý *ÿÿ†ü ñÿþ †þÿ: IýÿÂX I¤þÿÿÿ¤Iþ :gÑþÿág* :†ðþÿþIц* *¤þÿÂþ ág :Ñýÿð†: *gáþÿwII¤áwI¤ÿÿ³: XwIIwòÿÂü áÿÂü ÂøÿI IþÿÑÿ *Žÿòìýýÿøì÷þÿùðììòúþÿûñøýôñôÿýóíìíòùÿÿûñøþÿþóíìíóþþÿøñûöîìîøñÿùì÷øÿìñýÿúìööÿ÷íûöìúøÿ÷ÿÂþ ÂX *ðýÿð:ú ³ÿ† *þÿ¤ Iÿÿþ ÂÿÿI ü †øÿ †  ¤ÿ* þ ñÿþ †þÿ: Xþÿ¤ú gÿÿÿ:ú †ÿÿ¤ú :þÿþ ü ÂÿÿÂþ ý áÿÿÑû áÿÿI I †ÿ¤ù IòÿÂþ  gÿg þ ÂøÿI Iýÿ¤þ Ñÿøì÷ýÿòìýÿÿ3ôìôúùðìúÿÿúìñíììñýííóöóîñÿÿúìöÿÿþðìóöóìðþÿÿöìíîôöíìúóÿýððþùÿýìôüÿìó÷ÿøìøÿöìúøÿ÷ÿÂþ I Ñüÿ w :³ÂX *ÿáþ ³ÿÿX ¤ÿÿþ ÂÿÿI g† *øÿ † I: I¤ wþ ñÿþ gÂÂXþ ³ÿÿáþ †Â¤ ¤ÿ¤ *¤ÂÂw*†ÿá †Â¤ ¤ÿÿþ *wwþ gÿÿÂþ :†gþ gÿÿ: X³: gÿÿIþ *II†ð :³ÂX IòÿÂþ w Ñ wþ ÂøÿI Iýÿðþ †ÿþíðþÿþìñÿÿûìöþÿþìòÿÿúììöþÿý÷ìùýÿ úÿÿúìöÿÿöì÷þÿ÷ìöÿÿöìôþÿúìóõÿñðíóþøÿúìöüÿìñøÿûìøÿÿöìúøÿ÷ÿÂû áüÿþ áÿÿðþ ÑÿI gÿð þÿþ ÂÿÿI †ÿÿ¤þ øÿ † I¤ * g†þ ñÿø wþÿw :þÿw :ÿ† ¤Ñþÿáÿ† gþÿw Xÿÿþ Âÿÿg IÿÿÂþ þÿw *ÿ *þÿ ³ ÿÿI †ýÿ ¤ ðÿÿ† IòÿÂþ á * *Âþ ÂøÿI Iüÿþ †Žÿóìûÿÿ÷ìøÿÿôìþýÿñìÿÿúìöýÿ÷ìôúÿúìöÿÿðíüÿíðÿÿöìúýÿìñõÿÿñíîùøÿúìöüÿìñùÿûíóþÿöìúøÿ÷ÿÂú :ýÿÂ÷ Âÿ¤ ÿ” gþÿþ ÂÿÿI †ÿÿÂþ øÿ† Iÿþ цþ ñÿù ”ýÿI †þÿÂþ ÿÑû :”ÿÿIø Iÿÿþ Âÿÿ† IÿÿÂþ þÿÂþ ÿ†÷ ÿÿI †ýÿ† Iþÿ† IòÿÂþ ÿXþ ”Âþ ÂøÿI Iýÿðþ ”Žÿùìôÿÿðìþÿÿñùìÿÿúìöýÿþíìíòöûþÿúìöÿÿìñüÿñìÿÿöìúýÿìñòÿóìùùÿúìöüÿìñùÿñðýúóì÷úþúÿ÷ÿÂþ ”Iþ wþÿÂþ úI Ñÿÿ ³: Ñþÿþ ÂÿÿI †ÿÿÂþ øÿ † Iÿw :ÿ†þ ñÿþ g”þ ðþÿI †þÿÂþ ÿÿ³*û wÿI *ûIwÿÿþ Âÿÿ† IÿÿÂþ þÿÂþ ÿ† úIÿÿI †ýÿ† Iþÿ† IòÿÂþ ÿ³þ ðÂþ ÂøÿI Iýÿ¤þ Ñÿÿîÿýìóÿÿÿñìúúÿÿúìöüÿþ÷ñíììóÿÿúìöÿÿìñüÿñìÿÿöìúýÿìñòÿþìòùÿýìöýÿþìóùÿñøìúúÿ÷ÿÂþ Âðþ ³ÿÿáþ áøÿw I :ýÿþ ÂÿÿI †ÿÿÂþ øÿ † Iÿá ¤ÿ†þ þÿ¤††Âøÿþ †ÿwþ Iþÿg Xþÿ¤ *ÿáÿÿѤw*þ ÿg gøÿþ Âÿÿ† IÿÿÂþ þÿ” :ÿ¤ *øÿI †ýÿ³þ Ñÿÿw Iþÿ¤††³ùÿÂþ ÿÿ* gÿÂþ Âÿÿ††¤þÿI IþÿÑÿ :þÿþ†á“ÿôìûöìùÿÿÿóìûùÿúìöøÿ ûðìûÿúìöÿÿîîüÿÿîÿÿöìúýÿìññÿìñøÿìñýÿúìöùÿûüúóì÷úþúÿ÷ÿÂþ ÂÿÂþ ÑÿÿI :³ÿÿá”*þÿáü ¤ýÿþ ÂÿÿI †ÿÿÂþ øÿ† Iûÿ†þ þÿI †øÿþ †ÿÿ:þ wÿÿÂþ Âÿá* †ÿ †*¤áÿÿ¤ ÿÂþ †áÿÿ³g†ÿÿþ Âÿÿ† IÿÿÂþ ðÿ †ÿð XÑÿÿÑwXÿÿI †ýÿðþ I*þ Iþÿþ ÂùÿÂþ ûÿÂþ Âÿÿ† IþÿI *††X  Ñþÿþ “ÿûìóîíþÿÿøìòüÿûÿÿúìöýÿûþýÿ öìúÿúìöÿÿóìúþÿúìóÿÿöìúýÿìñøÿúüÿ÷ìôþÿøöýþÿòìýþÿóìûþÿøöýùÿöìúøÿ÷ÿÂþ Âÿÿ†þ :ðÿÑù ýÿ:þ ðýÿþ ÂÿÿI †ÿÿÂþ øÿ† Iûÿ†þ þÿI †øÿþ †ÿÿáþ ³ÿÿgú :ðÿ†ù †ÿÿgù †ÿÿþ Âÿÿ† IÿÿÂù *ðÿÿ¤ù IÿÿI †üÿ¤ü  Iÿÿ IøÿÂþ ûÿÂþ Âÿÿ† IþÿIù Âýÿþ Â’ÿðíìôþÿÿÿ ðìñùúøññÿÿúìöýÿöíôúú÷íîÿÿúìöÿÿýíí÷úøííýÿÿöìúýÿìñøÿìð÷úúôìíþþÿñìúþÿúìðùúöìñýÿñìúùÿöìúøÿ÷ÿÂþ ÂþÿIþ gÿÿágü gýÿ¤þ güÿþ ÂÿÿI †ÿÿÂþ øÿ† Iûÿ†þ þÿI †øÿþ †þÿ³þ Ñÿÿ†ý gðÿÿÂ:ü *³ýÿ¤*ü :Âÿÿþ Âÿÿ† IÿÿÂþ Iþ IÑýÿÂIü *”ÿÿI †ûÿÂgIX¤† Iÿÿ† ³øÿÂþ ûÿÂþ Âÿÿ† IþÿIü I”ðüÿþ Â’ÿ÷ììûþÿÿÿþôýìî÷ÿÿúìöýÿúðýìñûÿÿúìöþÿûîþìîûþÿöìúýÿìñøÿóíýìñýýÿñìúýÿøíþìñþýÿñìúùÿöìúøÿåÿÑÂÂá©ÿÑÂÂüÿþÿþÂáùÿðþÂëÿáÂáøÿþÂðôÿáðþÿ ð* wÿÿ: *Öÿÿüÿÿúýôÿþúúýõÿûúûèÿýúúþòÿÿúýäÿÿ»ÿ† *IIý áÿð ¤Öÿÿÿÿ»ÿ†û *³ÿÿ³ *Õÿÿÿÿ»ÿð”þ†ÂýÿáÂáÕÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿáÂÂÑáÿÑÂÂá³ÿöÿÑÂÂáÿÿÿ÷ÿ† IáÿI †îÿá†þI†áÍÿöÿI †ÿÿÍÿöøÃÿ÷ÿ† IáÿI †ðÿ ðw :I: wðÏÿöÿI †·ÿþ ÂÞÿÿÞÿöìúóÿìñÃÿ÷ÿ† IáÿÑÂÂáñÿð: Xáþÿð† :ðÐÿöÿI †·ÿþ ÂÞÿÿÞÿöìúóÿúûÃÿ÷ÿ† IþÿþÂÑýÿ††”ÑþÿÑÂÂÑýÿÑÂÂáÿÑÂÂáÿÿáÂÂÑÿц†Ñüÿ X ¤ÿð”†Â†¤¤ wþÿáÂÂÑÿÿÂÑþÿ𳆆¤áûÿᤆ†”Âûÿ††”ÑýÿáÂÂÑÿц†ÑýÿI †ÿ³†”áûÿᤆ†³ðþÿðþÂÿÿÑÂþÿᔆ¤ðþÂðøÿþÂÿ𤆤ðûÿÑ”††ÂþÿðÂþ ”ÂÂàÿšÿúûýÿúýþÿýúþþúýþÿþúþÿÿÿûúÿýúþþÿýúýÿúû÷ÿùööùÿÿýóì÷úúýÿÿþøööúýÿúûÿÿþúýÿùöøþÿÿùööýõÿþøööûýÿþúýÿþúûþÿûööùýúþùÿ÷ÿ† Iÿÿ” Ñÿÿ³*ü Iðÿ” ýÿ ÑÿI †ÿÿ† :Xý ¤þÿ XÿÑý IÿX áÿÿ† I¤ Iÿÿ¤ü wþÿðgû þÿ³*ü Iðÿÿ†  :Xý ¤þÿI X*þ Ñþÿðgü ¤ÿÿÂþ Ñ* ÿÿ¤ý þ Âøÿþ wþ :ðþÿÑIü *ÑÿÂú àÿšÿðìþÿúìóþÿñìþþìñþÿöìøÿÿÿìðÿùìöþÿñìýÿÿúìôùÿûðýìíûöüìöÿøíýìíþÿìñÿÿúìòîþìîûñýìú÷ÿûíýìóþÿ úìöôììñÿÿóûìúùÿ÷ÿ† IÿÑþ ³ÿÿÂþ :Iþ gÿðþ ¤ÿÿ³ :ÿÿI †ÿÿ†ù þÿg Ñÿ gÂw Iÿ³ ”ÿÿ†û Iÿ³þ :Iþ wÿÿgþ ÿI* ÿÿÂþ :Iþ gÿÿ† ú þÿIù *þÿI I*þ áÿÂú ÿÂþ I:þ Âøÿø ”ÿÿð *I *ÿÂú àÿšÿôìúÿÿôìíþÿíðÿÿðìþÿðìòÿÿûìôÿþìñÿÿþìì÷ÿÿ÷ìùúÿþîí÷ÿÿùñúýóì÷úúýþìðûÿþùñþÿìñÿÿúììöþÿöììòýÿúìñøÿþííúÿþóìöÿÿúììíôööÿöìóýÿûñìúùÿ÷ÿ† Ið ”þÿ* ”ÿÿÂþ ðÿX Xÿÿg ¤ÿÿI †ÿÿ† *Ñÿ”þ #Âÿÿ**ÿ³ ÿÿ Iÿð Xÿÿ† *”³ÿ* †ÿÿÂþ áÿþ ³þÿ Ñgÿÿ* ”ÿÿÂþ ðÿ†  *Ñÿ”þ ÂÿÿI Xáÿ”þ Âÿ¤ *ðÿÿI wÿÂþ †Â¤ÿX :ðÿÿþ Âøÿþ †ðð* Iÿÿg Xÿÿð ³ÿÿþ ÂÞÿšÿúì÷ÿÿîóìùÿýìôÿÿöìûÿýìóìþÿøìùÿÿñíÿÿøíòðÿÿóìþúÿøì÷üÿþÿöìúþÿúìôùÿìñÿÿúìöþÿþìñýÿðìøÿ÷ìøýÿîíÿÿúìñþýÿíîýÿöìúùÿ÷ÿ† I: gþÿáþ ý†þ Âÿ³þ ÿð ðÿÿI †ÿÿ† Iþÿþ Âÿÿ Iÿ† Iÿÿ Iÿÿ Iÿÿ† IýÿÑþ áþÿ* ”ÿ*þ Iw”áÿÿáþ ý†þ Âÿ†  Iþÿþ ÂÿÿI †þÿ* †ÿg Iþ†I IÿÂþ üÿþ ³þÿþ Âøÿþ Âÿÿ† Iÿÿ* gþ†* †ÿÿþ ÂÞÿ™ÿìòÿûìýîóÿùìúÿÿúì÷ÿ÷îýìøÿôìþÿ öìûÿòóøìýÿðñùÿòìýúÿöìúþÿþííôúûÿìñÿÿúìöýÿìñýÿñìøÿòìþýÿôìûÿúìöýÿûìôýÿöìúùÿ÷ÿ†û wþÿÂ÷ Âÿÿ* ¤¤ gþÿ I †ÿÿ† Iþÿþ Âÿÿ Iÿ† Iÿÿ Iÿÿ Iÿÿ† IýÿÂþ ýÿI †ÿ¤ú gÿÂ÷ Âÿ†  Iþÿþ ÂÿÿI †þÿI †ÿIø IÿÂþ üÿþ Âþÿþ Âøÿþ Âÿÿ† Iÿÿ÷ †ÿÿþ ÂÞÿ™ÿ ñîÿôðÿôíÿöìýÿìóÿðôÿðòÿÿñþÿ úìøþìùþì÷ÿìöùÿñìùÿöìúýÿùîþìðùþÿìñÿÿúìöýÿìñýÿñìøÿñìüÿöìúÿúìöýÿúìöýÿöìúùÿ÷ÿ†þ wþ ÂÿÿÂþ ú ðÿÿ† XX Âþÿ I †ÿÿ† Iþÿþ Âÿÿ:ÿ³ ðÿ Iÿ wÿÿ† IýÿÂþ ðþÿI †ÿÿáwIü ¤Âþ úÂðÿ†  Iþÿþ ÂÿÿI †þÿ: ”ÿI gûÂÑÿÂþ üÿ ¤þÿþ Âøÿþ Âÿÿ† Iÿÿþ ”ûÂáÿÿþ ÂÞÿ™ÿ ÷ìýî÷ÿûìùññýÿòîýìûÿ÷ìþìöýÿ íóøíÿÿòðúìúùÿñìùÿöìúûÿûøóíìúÿÿìñÿÿúìöýÿìñýÿñìøÿñìüÿöìúÿúìöýÿúìôýÿöìúùÿ÷ÿ† :ÿw *ðÿÿ ”üÿ¤þÿáü *ýÿ I †ÿÿ† Iþÿþ Âÿÿg Ñð I†* :Âg ³ÿÿ† Iüÿ ¤ÿÿáþ Ñÿgáþÿ Ñ* †ÿ ”üÿ¤ÿÿ†  Iþÿþ ÂÿÿI †ÿÿÑþ Ñÿ” *ðýÿáÂÿÂþ üÿX ¤Âwþ Âÿÿ† Iþÿþ Âÿÿ† IÿÿX XüÿÂáÿÿþ ³Þÿ™ÿ ûìôìýÿÿîóìöýÿ÷ìôîÿÿýìóìúýÿ òîòóÿÿøìóìøÿöìùúÿöìúøÿ ùìöÿÿìñÿÿúìöýÿìñýÿñìøÿöìùýÿðìÿÿúìöüÿìîýÿôìúùÿ÷ÿ † Iÿð* Xÿÿ†þ :††g ýÿXý ”ýÿ I †ÿÿ† Iþÿþ ÂÿÿÑ IÿÑ :ý *þÿ† Iüÿ† w†* Iÿÿ I††w Âÿ†þ :††g ÿÿ†  Iþÿþ ÂÿÿI :†w Iÿÿð g††: †ÿÂþ üÿÂø Âÿÿ† Iþÿþ Âÿÿ† IÿÿÂþ *w†w* Âÿÿ *†Xàÿ˜ÿíìðþÿôíìûýÿûììôþÿðííüÿ ÷ììùÿÿþìíòýÿÿìþÿ ýìîýÿÿþöúÿ÷ìöþÿúóýþÿ ÷ìøÿÿìñÿÿúìöýÿìñýÿñìýÿÿìþÿ ýìðþÿÿøìóÿÿúìöüÿôìòúùóììúùÿ÷ÿ† IÿÿÂþ ³ÿÿwù ýÿ¤ý ðýÿ I †ÿÿ† Iþÿþ Âþÿw gÿðÂÑÿýÂáþÿ† Iûÿgû :ðÿÿù †þÿwù ÿÿ†  Iþÿþ ÂÿÿIú áþÿÑ*ú †ÿÂþ ûÿ¤þ wþ Âÿÿ† Iþÿþ Âÿÿ† Iþÿ¤ú Âÿÿwü àÿ˜ÿòì÷þÿûìíûÿíìûþÿ÷ìòüÿûìíýÿòì÷ýÿÿìýÿøììññììúÿþíìññöúììðñîìðþÿìñÿÿúìöýÿìñýÿñìýÿÿìýÿ øììñðìðþÿÿúìöüÿþòþìñóìúùÿ÷ÿ††¤þÿ¤††”þÿá†XIIg”áüÿþ†¤üÿ ¤††Âÿÿ††¤þÿþ†áþÿ ðI I³ðÿÿ³ûÿ††¤úÿÂwIIg¤ýÿá”gþI†áüÿ á†XIIg”áÿÿ††¤þÿþ† áÿÿ¤††³”II”ðûÿ¤wþI†³ÿÿáþ†ùÿÿÂðáþ Ñÿÿ††¤þÿþ†áÿÿ††¤ýÿð”gIIX†Ñýÿ¤XIIwàÿ˜ÿúöýýÿöøûÿøöýÿýöúûÿöøýÿúöýýÿÿöüÿýôññôûþÿ ûóñòúÿûöññòøýÿöøÿÿýöúýÿöøýÿøöýÿÿöüÿúóññ÷þþÿýöúúÿýúýÿöìûùÿ½ÿ†ü IÍÿÔÿX†Â¤: *·ÿÿ™ÿþîíøÿ»ÿÂþ†³ÑÍÿÔÿù ³·ÿÿžÿúðóööîìøøÿÿÔÿX:þ *gá¶ÿÿžÿûñþìñù÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÿÑ÷ÂàÿÿÿãÿðØÂºü£²ÂÉà÷¾ÿðàØúÂÿàèýÿñÿ“÷„àÿÿÿæÿز“ó„“²Ñ÷ùÿÂÜ£«öÿ÷غ£ò„“«Âàóÿðö„÷ÿÿÿéÿðºŒì„²àûÿ“Ü„«øÿà«ë„ÿ„£Éð÷ÿÑ÷„›œÿÿÿëÿð²ç„£àþÿ÷Û„Âúÿà“é„ü„Âøÿº÷„ºœÿÿÿìÿŒ儲þÿØÛ„àüÿ÷«ç„ü„Âøÿ›÷„Ñœÿÿÿîÿð›ã„ÑþÿºÛ„üÿè“æ„ü„Øùÿ÷ö„ðœÿÿÿïÿàŒâ„ðþÿ›Ü„£ýÿèŒå„ü„÷ùÿà÷„“›ÿÿÿðÿÑá„“ýÿÛ„ºþÿ÷Œä„ý„“øÿà÷ÂÑ›ÿÿÿñÿÑò„“£ý£Œ÷„²þÿàÛ„Øþÿ£ô„Œ£²ý²£Œú„ý„«†ÿÿÿòÿèô„Œºðùÿ躌ú„Ñþÿàô“÷„£ôÂ÷ÿÿàõ„²è÷ÿðÑ«ý„ý„Ɇÿÿÿóÿ÷Œõ„²÷õÿð«û„ððÿö„Øñÿ«÷„Œèòÿ÷É“„ý„à†ÿÿÿóÿ£õ„ÑñÿÑŒþ„“ðÿèö„ðòÿ÷ö„àîÿÂŒþ„Òÿà«££«ÂèôÿðѺþ£²ÉðÒÿÿÿôÿÉö„Œèïÿ茄„²ðÿÉ÷„“ñÿà÷„“ìÿ𛄣øÿÑ÷£÷ÿ÷£Âþÿ÷ÂŒù„£èøÿÑ£ø„£èÔÿÿÿõÿ÷Œö„Ñíÿ茄Ñðÿ«÷„²ñÿÉ÷„£ìÿÿÿÉØøÿ«ø„“øÿè÷„ÉÿÿÉŒö„ŒÑûÿÑ“ô„ÑÕÿÿÿõÿ²ö„ºëÿèÂððÿ“÷„ÉñÿÂ÷„“ìÿôÿŒø„²øÿÉ÷„ÿè›ó„Œèþÿè£ò„ŒèÖÿÿÿöÿðö„“×ÿðö„èñÿÂö„Éíÿõÿè÷„Ñøÿ«ø„ŒÂð„£ÿÿÂï„£Öÿÿÿöÿºö„à×ÿÑ÷„ŒðÿÉõ„«ðïÿõÿÉ÷„ðøÿŒä„Ø›í„ð×ÿÿÿöÿŒ÷„£Öÿ²÷„£ðÿàó„«Ñ÷òÿõÿ²ø„“øÿðÍ„Ø×ÿÿÿ÷ÿØö„ÑÖÿ›÷„ÂïÿŒñ„«Éðõÿõÿ“ø„²øÿÑÍ„Â×ÿÿÿ÷ÿ²÷„ŒÖÿ÷ö„àïÿÂî„“²Øøÿöÿð÷„Éøÿ²ô„›ºÂ£ñ„“²Â²“õ„Â×ÿÿÿ÷ÿŒ÷„«ÖÿØö„îÿ÷Œì„Œ²ØûÿöÿÑ÷„èøÿ“ö„²èüÿèô„£Øûÿ²ö„Â×ÿÿÿøÿèö„ÉÖÿÂ÷„£íÿèŒê„“Ñ÷þÿöÿ²ø„Œøÿð÷„£ðùÿ«÷„›àùÿ÷ö„Ñ×ÿÿÿøÿÑö„àÖÿ£÷„ºìÿèŒé„“Ñÿÿöÿ“ø„«øÿÑ÷„àøÿÂ÷„Ñ÷ÿö„à×ÿÿÿøÿºö„Õÿö„Øëÿð£è„«÷÷ÿ÷÷„Éøÿº÷„÷ÿÂ÷„ð÷ÿö„Öÿÿÿøÿ£÷„ŒÖÿàö„÷éÿà£é„›÷øÿØ÷„èøÿ›ø„£÷ÿ«ø„“öÿ÷„£Öÿÿÿøÿ£÷„£ÖÿÉ÷„“æÿಌ넫øÿº÷„øÿ÷÷„º÷ÿ›ø„²÷ÿà÷„ÂÖÿÿÿøÿö„£Öÿ«÷„²ãÿزŒî„„àùÿ›ø„£øÿØ÷„Øøÿ÷÷„Ñ÷ÿÂ÷„àÖÿÿÿøÿö„£ÖÿŒ÷„Ñàÿè›ñ„„«úÿ÷÷„Âøÿº÷„÷øÿà÷„è÷ÿ«÷„÷Öÿÿÿøÿö„£×ÿèö„èÝÿ÷Ñ£ô„ÿ„úÿØ÷„àøÿ›ø„›÷ÿÂø„ŒöÿŒø„›Õÿÿÿøÿö„›×ÿÑ÷„ŒÙÿðºö„ÿ„èûÿÂ÷„÷ÿ÷„º÷ÿ£ø„«÷ÿè÷„ºÕÿÿÿøÿõ„×ÿ²÷„«×ÿèŒø„ÿ„àûÿ£ø„£øÿà÷„Ñ÷ÿ÷„É÷ÿÉ÷„ØÕÿÿÿøÿ“ö„ðëÿèððÿ“÷„ÉÖÿàø„ÿ„àûÿ÷„ÂøÿÂ÷„ðøÿà÷„è÷ÿ«÷„÷Õÿÿÿøÿ£ö„Éìÿ²„Øñÿ÷ö„àðÿº«÷éÿø„ÿ„àüÿà÷„Øøÿ£ø„“÷ÿÉø„Œöÿ“ø„›Ôÿÿÿøÿºö„“îÿ蛄„÷ñÿØö„ïÿÿ„“èêÿø„ÿ„ûÿÂ÷„÷øÿ÷„²÷ÿ«ø„£÷ÿð÷„²ÔÿÿÿøÿÑõ„Éñÿ÷Âþ„›ðÿº÷„£ðÿàý„Â÷íÿØø„„›ûÿ£ø„›øÿà÷„Ñ÷ÿŒø„Â÷ÿÑ÷„ÑÔÿÿÿøÿ÷ô„ÑóÿÑ“ý„ºðÿ›÷„ÂðÿÉü„ŒÂ÷ðÿ÷“ø„„ºûÿ÷„ºøÿÂ÷„ðøÿè÷„à÷ÿ²÷„ðÔÿÿÿ÷ÿ«ô„º÷øÿð“û„Ñðÿö„Øðÿ²ú„Œ²èóÿà›÷„„ðüÿè÷„Øøÿ«ø„Œ÷ÿÉ÷„öÿ“ø„“Óÿÿÿ÷ÿàò„«Âýປø„ðñÿàö„÷ðÿ“÷„Œ«Âààüÿèà›õ„²ûÿÉ÷„÷øÿŒø„«÷ÿ«ø„£÷ÿð÷„²Óÿÿÿöÿ£â„“ðÿÂ÷„›ðÿ÷Ý„Œ÷ûÿ«ø„“øÿè÷„É÷ÿ“ø„Â÷ÿÑ÷„ÑÓÿÿÿöÿðŒã„²ðÿ£÷„ºðÿØÞ„ŒèúÿŒø„²øÿÉ÷„èøÿð÷„Ø÷ÿ²÷„èÓÿÿÿõÿØã„ÑðÿŒ÷„ÑðÿÂß„Œèÿûÿè÷„Ñøÿ«ø„Œ÷ÿÑ÷„÷÷ÿ“ø„ŒÒÿÿÿôÿÑä„ðñÿèö„ððÿ£à„›èÿÿûÿÉ÷„ðøÿŒø„£÷ÿ²ø„›÷ÿð÷„«Òÿÿÿóÿè“è„“ÑðÿÉ÷„“ïÿ“ℌÂ÷þÿûÿ²ø„“øÿð÷„Â÷ÿ“ø„º÷ÿÑ÷„ÉÒÿÿÿòÿ÷Â넲àîÿ²÷„«îÿಌ焌Â÷üÿûÿ“ø„²øÿÑ÷„àøÿð÷„Ø÷ÿ²÷„èÒÿÿÿðÿ÷“ñ„«É÷ìÿ“÷„Éëÿຣ턌²Øùÿüÿð÷„Éøÿ²÷„÷ÿÑ÷„ð÷ÿ“ø„ŒÑÿÿÿíÿèɺ£›û„£«ÂàÂÿàÉ££›ú„›£«ÂØèöÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿ«££ðçÿüÿèàà÷ÉÿþàèÆÿóÿþà÷©ÿ££Øûÿÿ­ÿº÷„“ÿð„„Œæÿÿÿð²Œý„£àÎÿà«û„›ÑÉÿöÿà«ü„›ÑÆÿàÂÂàêÿ“„„èûÿÿ­ÿ£÷„«ÿÑ„„«æÿÿÉø„ÑÐÿÑø„ºÉÿøÿ÷²ù„›Æÿ£„„Ñëÿð„„Œúÿÿ­ÿýÂþ„«þÂàÿ²„„ÉæÿÂþ„£ÑàÂŒ„„Œ÷Òÿðþ„£Øàຓ„ÑÉÿøÿ«þ„²ØàÉ“„ºÆÿþ„ðëÿÑ„„«úÿÿªÿðþ„èüÿ“„„à“„“ÑüÿÑ£„„Œ«àøÿàþ„²ýÿÑþ„ ÑÿÿÑ££ÑÑ›„ŒÂüÿÑ£„„Œ«àþÿ 𣣫𲌄›èöÿÂþ„ûÿÂèþÿૌ„„£ÑýÿÉ££Ñþÿ«££ðÿÿ££Øðº£Øÿÿ𺛄„“²ðþÿÑ£„„Œ«àÿùÿÂþ„Ñüÿ²ÑþÿÑ£„„Œ«àýÿ££ØÑ›„“Ñÿ𲌄«÷þÿÑ££ÑÑ›„ŒÂþÿ÷þ£þÿØ££Âÿ›þ„ÿ£«þÿÑ£„„Œ«àüÿ›„„«£„„ÉúÿÿªÿÑ„„Œüÿðþ„Œü„ðÿÿè›ú„àùÿ£ÿ„›üÿ÷þ„Âÿÿ£ù„Ñÿÿè›ú„àÿÿÑ„„Œü„“öÿÂþ„²ðùÿ²ú„ºþÿ ›„„àÿÿð„„Œþÿ“„„£þ„àÿÂú„Øÿè›ú„àúÿ÷Œ„„ºøÿ÷›ú„Øþÿ“„„Œü„ºü„²þÿ£ù„ÑÿÿØ„„£þÿ²„„Éÿ“û„«ÿè›ú„àÿÿ÷›ù„èúÿÿªÿ²„„«üÿÑþ„«Â£þ„ àÿ÷›„„É÷÷²„„²úÿð„ÿ„Ñûÿþ„Âÿÿþ„²àØŒ„„«ÿ÷›„„É÷÷²„„²ÿÿ²„„Œ²Â“þ„öÿðü„›ºðýÿº„„ŒÑà«þ„÷ÿ÷þ„þÿÑ„„«ÿÿðú„ÿ„„ŒÂàØ£„÷÷›„„É÷÷²„„²úÿÑþ„ðøÿ ›„„›ØØ›„„›ÿÿðþ„›Â«þ„Œ²ÂŒ„„£þÿþ„ ²àØŒ„„«ÿÿº„„Âþÿ#“„„èÿà›„„Âààð÷›„„É÷÷²„„²ÿÿ«„„ŒÑຄ„Œùÿÿªÿ“„„Éüÿ²„„Éÿÿðþ„ðÿÉ„„Âþÿà„„£úÿÑ„ÿ„ðüÿðþ„Øÿà„„›þÿ„„£ÿÉ„„Âþÿà„„£ÿÿ“„„èÿÿØ„„“ÿÿÂû„ðÿÿØŒû„ºÿÿðþ„àÿÿ÷þ„àÿØ„„£þÿ²„„ÉÿÿÑ„„›ÉààØðþ„àýÿÑÿÉ„„Âþÿà„„£úÿº„„“øÿÑ„„Œ÷ÿÿØþ„ÿÿÑ„„«þÿþ„ èÿÿ„„²ÿÿà„„›þÿ„„£ÿÿ›„„àÿÿð„„Œþÿþ„ðþÿÉ„„Âþÿà„„£ÿà„„ŒèÿÿÑ„„«ùÿÿ«ÿðþ„èüÿ “„„èÿÿà„„“ÿÿ›ø„«úÿ„ÿ„ûÿÑþ„ðÿ„„ºþÿ„„«ÿ›ø„«ÿð„„Œþÿ„„²ÿÿ£ü„“üÿÑ«Œý„Âÿ„„›ýÿþ„àÿº„„Éþÿ “„„èÿÿ²„„Éýÿ„„«úÿ›ø„«úÿ£„„£øÿ£„„ºþÿàþ„ÿÿ ²„„Éÿÿè„„Œþÿ «„„Ñÿÿ„„ºþÿ„„«ÿ÷„„Œþÿ Ñ„„«ÿÿà„„“ýÿ›ø„«ÿ«„„ºþÿ²„„Éùÿÿ«ÿÑ„„Œüÿð„„ŒþÿÉ„„²ÿÿþ„ú£Øúÿ„ÿ„ûÿ “„„£ÿÿ£„„Øþÿ«„„Éÿþ„ú£ØÿÑ„„«þÿ«„„ÑÿÿûÂÑùÿ ÑŒ„„£ÿ£„„Âþÿèþ„ ÷ÿ›„„àÿÿð„„Œþÿ“„„èýÿ£„„Âúÿþ„ú£Øúÿ£„„£øÿþ„àþÿÉ„„›ÿÿ“„„èÿÿÑ„„«þÿ Œ„„ðÿÿ£„„Øþÿ«„„ÉÿØ„„£þÿ ²„„Éÿÿ„„²ýÿþ„ú£ØÿŒ„„Øþÿ“„„èùÿÿ«ÿ²„„«üÿÑ„„«þÿ«„„Ñÿÿþ„÷óÿÑ„ÿ„Ñýÿ²þ„àÿÿþ„÷ÿÿèþ„ðÿþ„÷ùÿ²„„ÉþÿŒ„„ð÷ÿ«Éûÿ›„„«ÿ£„„Âþÿ²„„«ÿ÷þ„þÿ Ñ„„«ÿÿð„„Œüÿ£„„ºýÿÿ÷ÿþ„÷úÿúÿ²þ„ðýÿð«ðÿþ„àþÿ“„„Éÿð„„Œþÿ ²„„Éÿÿè„„“þÿþ„÷ÿÿèþ„ðÿº„„Âþÿ “„„èÿÿ£„„Ñýÿþ„÷ùÿþ„àÿÿð„„Œøÿÿ«ÿ“„„Éüÿ²„„ÉþÿŒ„„ðÿÿ›„„›èÿÿ຺ùÿ÷Œÿ„ŒÂàÑ£þ„%Âÿÿà„„“÷ÿà“„„ºÿÿ›„„›èÿÿ຺ÿÿ“„„èÿÿè„„“öÿ“„“ºààØ²þ„Ñÿ²„„“ðÿÉþ„èÿàþ„ ÉàÉ“„„ÉÿÿÑ„„«üÿº„„Œàÿ÷ÑŒ÷ÿ›„„›èÿÿ຺ÿúÿÑþ„“ÑàØ²Œ“ÿÿ“„„«÷÷²„„“÷ÿÑ„„«þÿ"“„„èÿÿÉ„„²ÿÿà„„“÷ÿà“„„ºÿÿ£„„›àز„„Œþÿþ„Øýÿ ›„„›èÿÿ຺ÿÿþ„²ÿ𺄄«øÿÿ¬ÿðþ„èüÿ “„„èÿÿè„„“þÿàù„ÑøÿÑø„ÉþÿÂù„›÷ÿÿàù„Ñÿð„„ŒþÿÉ„„²÷ÿð÷„²ÿÿèù„Ñÿÿèø„èÿÿ²„„ÉüÿðŒû„›ÿÿàù„Ñÿùÿ£ù„²ÿÿÉú„ Œèÿÿ²„„Éÿÿð„„Œþÿ«„„ÑÿÿÂù„›÷ÿÿ«ù„«þÿŒ„„Œ£“ðÿàù„Ñÿÿ«ù„Éøÿÿ¬ÿÑ„„Œüÿð„„ŒþÿÉ„„²ýÿà›ü„«ð÷ÿà£ü„²èýÿ£„„£ý„º÷ýÿà›ü„«ðÿÑ„„«þÿ«„„Ñ÷ÿ÷›û„›ÑýÿØ“ý„£àýÿ²þ„£Ñ„„Œþÿ“„„èûÿè£ý„“Ñþÿà›ü„«ðÿøÿÂŒý„“ÂðþÿÂŒý„²ðþÿ “„„èÿÿÑ„„«þÿ Œ„„ðÿÿ£„„£ý„º÷þÿ 茄„ŒÂ«„„ÉþÿÑý„“þÿà›ü„ «ðÿÿ÷›„„ŒÂ“„„èøÿÿ’ÿ÷ààèôÿÿÿ÷ààèúÿþ„ÿ÷ÿàøÿ÷ààèäÿýàøÿðàà÷úÿðàðíÿ÷ààèúÿ÷ààèýÿöÿèààðùÿèààèÿþ„ÿ÷ÿàùÿÿà÷ÿ÷þàûÿ÷ààèúÿÿàòÿÿÿõÿà„„›‘ÿÏÿà„„›Ãÿÿÿõÿ„„º‘ÿÏÿ„„ºÃÿÿÿõÿÑÂÂè‘ÿÏÿÑÂÂèÃÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŒÿðààðúÿáÿ÷þà÷ßÿþà×ÿÿÿóÿöÂà¦ÿ£„„Øúÿìÿغþ£²ÂèþÿÑþ„÷àÿà„„›×ÿÿÿôÿèö„à¦ÿþ„÷úÿîÿè“ù„Éÿÿº„„“ßÿ„„ºóÿðþ„éÿÿÿôÿÑö„÷§ÿà„„›ùÿïÿðŒþ„ÿ£›þ„àÿÿèààèßÿ£„„ØóÿÑ„„£éÿÿÿðÿ„„›úÿ÷ØÂÂÑðüÿþàÿðÉÂèþÿØÂÑ÷ûÿàÂÂÉèúÿØÂÂØ÷ààèþÿþàÿÿèàÿÿðàþÂÉèüÿþàÿðÉÂàýÿ„„ºÿØÂÉðþÿèààðýÿþàðûÿ²„„“ðþÿð„þÿþàþÿèàà÷÷ÑÂØþÿèÂÉðýÿèàà÷þÿþàþÿþ„÷ÿÿ÷àÉþÂàýÿà«„„²ààðþÿðÑÂÂØ÷ýÿ÷ààèÿÿàèÿÿðÿ£„„ºûÿÂŒü„ºþÿà„„“²ý„ÿØ“þ„›ýÿØ“ü„£÷þÿè›ý„Œ„„«ÿÿà„„›Ñ“„›ÿðú„²þÿðþ„²ý„ºþÿ£„„²“þ„Œðÿÿ²„„²þÿÉ„„Œðûÿ£„„“÷üÿðÿÿà„„“þÿþ„ºŒþ„ºè£þ„ŒðþÿŒ„„ðÿÿà„„›ÿÿà„„›þÿ“û„›÷ÿàú„Øÿ÷²ü„ŒÑþÿ„„²ÂŒ„ºÿÿðÿþ„Øüÿ²þ„£“þ„ÑÿÿÂò„àÿÿÑþ„ÿ›þ„²ÿÿðŒþ„£“þ„ÉÿÿÂû„²ÿØ„Œ££Œþ„èÿÿÑþ„“£Œþ„÷ÿÿø„Âÿÿ „„£ÿÿ÷Œ„„Éúÿ²þ„“ºàûÿ„„²ÿÿàò„Âÿÿè„„“þÿ„„ºÿÿ„„ºÿÿ÷„„££“þ„ÉÿÑ›þ„þ£ÿ÷›„„Œ£Œþ„ðÿÿ£û„Ñÿÿñÿàþ„÷ýÿÑ„„Œèÿÿ£„„«ÿÿ£„„ºðÿ«„„“Øÿèþ„àÿðþ„Ñÿÿ„„Œÿÿ£„„›÷ÿÿŒ„„èÿÿ£þ„›£›Ñÿàèþÿ÷þ„ àÿÿ²„„ºÿÿèþ„àÿà„„“ØÿðŒ„„Âÿÿ Ø„„“ÿÿ²„„›ùÿðŒü„ŒÂ÷þÿ £„„Ñÿÿ„„£èÿÉþ„ Ñ÷÷“„„ÂÿÿÉ„„²þÿ £„„Øÿÿ£„„ØÿÿðØýÿ ›„„ÂÿÿÑ„„£ýÿ ²„„›÷ÿ÷Œ„„Éÿÿý„ÿ£“ðÿÿñÿ„„›üÿ“„„Âþÿ„„£ÿÿþ„ ÷ÿÿº„„ºÿÿ÷þ„ÿÿ²„„£þÿàþ„ÿðþ„ðÿÿè„„Œþÿþ„÷ûÿðÑ«£þ„þÿ“„„èþÿþ„àÿ„„ºþÿŒ„„àÿÿèþ„ÿàþ„èøÿ÷ºŒü„›÷ÿÿþ„ ðÿÿ£„„ØÿÿØ„„›þÿ ›„„àÿÿ«„„Ñþÿþ„÷ÿÿþ„÷þÿ÷ØÂ²£Œ„„àÿÿ²„„Âþÿðþ„àþÿ£„„Âÿà„„›üÿÿÿñÿ£„„ºýÿðþ„ðþÿº„„«ÿà„„›þÿ£„„ØÿÿØ„„£ÿÿ“„„ÑþÿØ„„ŒÿÑ„„›þÿ É„„«ÿÿà„„›üÿè£ú„£ÿÿð„„Œþÿ÷þ„÷ÿ£„„Øÿÿ÷þ„þÿÿþ„÷›„„Âôÿຌþ„Éÿà„„“þÿþ„ ÷ÿÿ„„ºÿÿ÷þ„þÿŒ„„÷ÿÿà„„›ÿÿà„„›ÿÿ÷²ù„þÿ“„„àþÿÑ„„“ýÿ›„„Éÿ„„ºüÿÿÿñÿþ„Øýÿàþ„ýÿ“„„Ñÿ„„ºþÿþ„÷ÿÿº„„Âÿÿþ„àþÿ²„„²ÿ„„£þÿ ²„„Éÿÿ„„ºýÿ÷Œ„„²à÷²„„ÂÿÿÑ„„«þÿÑ„„›ÿÿþ„÷ÿÿØ„„£þÿÿ›„„²„„›øÿÑûÿ÷þ„ Âÿ„„²ÿÿà„„›þÿ£„„ØÿÿØ„„£ÿÿè„„“þÿ„„ºÿÿ„„ºÿÿ£„„£ØðÑ„„£ÿÿðþ„ýÿ„„£þÿðþ„ðÿ£„„Øüÿÿÿòÿàþ„÷ýÿàþ„ðÿÿÉ„„Œ÷ÿ£„„Øÿÿà„„›þÿ›„„àÿÿþ„Ñÿÿèþ„àÿ„„ŒèÿØ“„„àÿÿ£„„ØýÿÉ„„›þÿ“„„àÿÿ²„„ÉÿÿðŒ„„Ñÿà„„›þÿº„„Âþÿÿ£ü„àøÿ„£ØýÿØþ„ Øÿ£„„Ñÿÿ„„ºþÿþ„÷ÿÿº„„ÂÿÿÉ„„›ÿÿ÷›„„Øÿÿ£„„Øÿèþ„ ÷ÿÿ²„„ÂÿÿÑ„„£ýÿ„„“þÿ«„„£ÿÿþ„÷üÿÿÿòÿ„„›ûÿŒ„„“²þ„Øÿÿþ„ ÷ÿÿ„„ºÿÿ÷þ„þÿ «„„ŒººŒ„„ºÿÿèø„þÿþ„÷ýÿ„„ŒØØ«þ„þÿ“„„£ÂºŒ„„£ÿÿ„„ºþÿ›„„àþÿÿÂý„ºøÿàþ„Œ££“þ„›ÿÿþ„ ðÿÿ£„„Øÿÿà„„›þÿ›„„àÿÿÂþ„›£ý„÷ÿÿþ„÷ÿàþ„Éàºþ„ àÿÿ„„ŒØàÑÿèþ„ £Â£„„Œðÿà„„›ûÿÿÿòÿ£„„ºûÿØû„ŒÑÿÿà„„›þÿ £„„ØÿÿØ„„£þÿðŒû„ºýÿÂþ„ “«„„«ÿÿà„„›üÿèü„›„„£ÿÿðù„ £÷ÿÿ£„„Øÿÿ÷þ„ýÿÿÑþ„“÷øÿÑø„£÷ÿà„„“þÿþ„ ÷ÿÿ„„ºÿÿ÷þ„þÿàü„ £„„›ÿÿà„„›þÿŒý„›þ„þÿàü„Âÿÿºû„“èÿÿ„„ºûÿÿÿòÿþÂèúÿ𣣫É÷þÿàÂÂØþÿþÂ÷ÿÿàÂÂàýÿ÷É«££Âðûÿ ÷ààÿ£„„ÑÿÿàÂÂØûÿà«£²ðàÂÂàÿÿÑ„„«Ñ«£²ÑýÿþÂ÷ÿÿðÂÂÑýÿÿÉþ„àöÿðѺþ£«Âèþÿ àÂÂÑÿÿðÂÂÉþÿ ÑÂÂèÿÿðÂÂÑýÿØ«£ºðàÂÂØÿÿàÂÂØþÿ𲣫àðÂÂÑýÿØ«££²ðþÿຣ£²ÑýÿÑÂÂèûÿÿÿ½ÿ²ÂààØ«„„“éÿ²„„ÉêÿðŒ„„º’ÿÿÿò€€¾ÿú„Œèéÿ“„„èêÿ£„„Œ÷’ÿÿ›ÿö€òÿÿö€Êÿð£Œþ„£Â÷éÿð„„ŒêÿÉþ„Ø‘ÿÿ£ÿù€çÿõÿù€•ÿÿÿ©ÿû€ßÿíÿû€›ÿÿÿ®ÿü€Ùÿçÿü€ ÿÿÿ³ÿü€Ôÿâÿü€¥ÿÿÿ·ÿý€ÏÿÝÿý€©ÿÿÿºÿþ€ËÿÙÿþ€¬ÿÿÿ½ÿþ€ÈÿÖÿþ€¯ÿÿÿÀÿþ€ÅÿÓÿþ€²ÿÿÿÃÿþ€ÂÿÐÿþ€µÿÿÿÆÿþ€¿ÿÍÿþ€¸ÿÿÿÈÿÿ€¼ÿÊÿÿ€ºÿÿÿÊÿÿ€ºÿÈÿÿ€¼ÿÿÿÍÿþ€¸ÿÆÿþ€¿ÿÿÿÏÿÿ€µÿÃÿÿ€ÁÿÿÿÑÿÿ€³ÿÁÿÿ€ÃÿÿÿÔÿþ€±ÿ¿ÿþ€ÆÿÿÿÖÿÿ€®ÿ¼ÿÿ€ÈÿÿÿØÿÿ€¬ÿºÿÿ€ÊÿÿÿÚÿÿ€ªÿ¸ÿÿ€ÌÿÿÿÜÿÿ€¨ÿ¶ÿÿ€ÎÿÿÿÞÿÿ€¦ÿ´ÿÿ€Ðÿÿÿàÿÿ€¤ÿ²ÿÿ€Òÿÿÿáÿ€¢ÿ°ÿ€Óÿÿÿãÿÿ€¡ÿ¯ÿÿ€Õÿÿÿåÿÿ€Ÿÿ­ÿÿ€×ÿÿÿæÿ€ÿ«ÿ€Øÿÿÿèÿÿ€œÿªÿÿ€Úÿÿÿéÿ€šÿ¨ÿ€Ûÿÿÿëÿÿ€™ÿ§ÿÿ€Ýÿÿÿíÿÿ€—ÿ¥ÿÿ€ßÿÿÿîÿ€•ÿ£ÿ€àÿÿÿðÿÿ€”ÿ¢ÿÿ€âÿÿÿñÿ€’ÿ ÿ€ãÿÿÿòÿ€‘ÿŸÿ€äÿÿÿôÿÿ€ÿžÿÿ€æÿÿÿõÿ€Žÿœÿ€çÿÿÿöÿ€ÿ›ÿ€èÿÿÿøÿÿ€Œÿšÿÿ€êÿÿÿùÿ€Šÿ˜ÿ€ëÿÿÿúÿ€‰ÿ—ÿ€ìÿÿÿûÿ€ˆÿ–ÿ€íÿÿÿüÿ€‡ÿ•ÿ€îÿÿÿýÿ€†ÿ”ÿ€ïÿÿÿþÿ€…ÿ“ÿ€ðÿÿÿÿÿ€„ÿ’ÿ€ñÿÿÿÿ€ƒÿ‘ÿ€òÿÿÿ€‚ÿÿ€óÿÿ‚ÿ€ÿÿ€ôÿÿƒÿ€ÿÿŽÿ€õÿÿ„ÿ€ÿÿÿÿ€öÿÿ…ÿ€þÿÿŒÿ€÷ÿÿ†ÿ€ýÿÿ‹ÿ€øÿÿ‡ÿ€üÿÿŠÿ€ùÿÿˆÿ€ûÿÿ‰ÿ€úÿÿ‰ÿ€úÿÿˆÿ€ûÿÿÿþ€ùÿÿ‡ÿ€üÿÿÿþøÿÿ†ÿ€ýÿÿÿþøÿÿ…ÿ€þÿÿÿ€öÿÿ„ÿ€ÿÿÿŽÿ€õÿÿƒÿ€ÿÿÿ€ôÿÿ‚ÿ€ÿÿ€óÿÿÿ€Žÿ‘ÿ€òÿÿÿÿ€ÿ’ÿ€ñÿÿÿÿ€ÿ’ÿ€ñÿÿÿÿÿ€ÿ“ÿ€ðÿÿÿþÿ€‘ÿ”ÿ€ïÿÿÿýÿ€’ÿ•ÿ€îÿÿÿýÿ€’ÿ•ÿ€îÿÿÿüÿ€“ÿ–ÿ€íÿÿÿûÿ€”ÿ—ÿ€ìÿÿÿúÿ€•ÿ˜ÿ€ëÿÿÿúÿ€•ÿ˜ÿ€ëÿÿÿùÿ€–ÿ™ÿ€êÿÿÿøÿ€—ÿšÿ€éÿÿÿ÷ÿ€˜ÿšÿ€éÿÿÿ÷ÿ€˜ÿ›ÿ€èÿÿÿöÿ€™ÿ›ÿ€èÿÿÿöÿ€™ÿœÿ€çÿÿÿõÿ€šÿÿ€æÿÿÿôÿ€›ÿÿ€æÿÿÿôÿ€›ÿžÿ€åÿÿÿóÿ€œÿŸÿ€äÿÿÿòÿ€ÿŸÿ€äÿÿÿòÿ€ÿ ÿ€ãÿÿÿñÿ€žÿ ÿ€ãÿÿÿñÿ€žÿ¡ÿ€âÿŒÿùþÿÿðÿ€Ÿÿ¢ÿ€áÿ”ÿùùÿþü†ÿðÿ€Ÿÿ¢ÿ€áÿ›ÿúîÿüÿúÿïÿ€ ÿ£ÿ€àÿ ÿüçÿõÿü’ÿïÿ€ ÿ£ÿ€àÿ£ÿþâÿðÿþ•ÿîÿ€¡ÿ¤ÿ€ßÿ¥ÿÿßÿíÿÿ—ÿîÿ€¡ÿ¤ÿ€ßÿ¨ÿþÝÿëÿþšÿíÿ€¢ÿ¥ÿ€ÞÿªÿÿÚÿèÿÿœÿíÿ€¢ÿ¥ÿ€Þÿ¬ÿÿØÿæÿÿžÿìÿ€£ÿ¦ÿ€Ýÿ¯ÿþÖÿäÿþ¡ÿìÿ€£ÿ¦ÿ€Ýÿ±ÿÿÓÿáÿÿ£ÿëÿ€¤ÿ§ÿ€Üÿ³ÿÿÑÿßÿÿ¥ÿëÿ€¤ÿ§ÿ€ÜÿµÿÿÏÿÝÿÿ§ÿêÿ€¥ÿ¨ÿ€Ûÿ·ÿÿÍÿÛÿÿ©ÿêÿ€¥ÿ¨ÿ€Ûÿ¸ÿËÿÙÿªÿéÿ€¦ÿ¨ÿ€ÛÿºÿÿÊÿØÿÿ¬ÿéÿ€¦ÿ©ÿ€Úÿ»ÿÈÿÖÿ­ÿèÿ€§ÿ©ÿ€Úÿ¼ÿÇÿÕÿ®ÿèÿ€§ÿªÿ€Ùÿ¾ÿÿÆÿÔÿÿ°ÿçÿ€¨ÿªÿ€Ùÿ¿ÿÄÿÒÿ±ÿçÿ€¨ÿ«ÿ€ØÿÀÿÃÿÑÿ²ÿæÿ€©ÿ«ÿ€ØÿÁÿÂÿÐÿ³ÿæÿ€©ÿ«ÿ€ØÿÂÿÁÿÏÿ´ÿæÿ€©ÿ¬ÿ€×ÿÄÿÿÀÿÎÿÿ¶ÿåÿ€ªÿ¬ÿ€×ÿÅÿ¾ÿÌÿ·ÿåÿ€ªÿ­ÿ€ÖÿÆÿ½ÿËÿ¸ÿäÿ€«ÿ­ÿ€ÖÿÇÿ¼ÿÊÿ¹ÿäÿ€«ÿ®ÿ€ÕÿÈÿÉÿóÉÿºÿãÿ€¬ÿ®ÿ€ÕÿÉÿÌÿýóÿýÌÿ»ÿãÿ€¬ÿ®ÿ€ÕÿÊÿÎÿþïÿýÿþÏÿ»ÿãÿ€¬ÿ¯ÿ€ÔÿÊÿÐÿÿìÿúÿÿÐÿ¼ÿâÿ€­ÿ¯ÿ€ÔÿËÿÑÿÿöÿ÷ÿÿøÿÿÑÿ½ÿâÿ€­ÿ¯ÿ€ÔÿÌÿÑÿùÿü÷ÿÿþùÿÑÿ¾ÿâÿ€­ÿ°ÿ€ÓÿÍÿÓÿþûÿþðÿþÿþûÿþÓÿ¿ÿáÿ€®ÿ°ÿ€ÓÿÎÿÓÿÿûÿÿíÿûÿÿûÿÿÓÿÀÿâÿÿ®ÿ°ÿ€ÓÿÏÿÓÿûÿÿëÿùÿÿûÿÔÿÀÿáÿÿ¯ÿ±ÿ€ÒÿÏÿÔÿÿýÿÿéÿ÷ÿÿýÿÿÔÿÁÿáÿÿ¯ÿ±ÿ€ÒÿÐÿÔÿýÿþèÿöÿþýÿÔÿÂÿáÿÿ¯ÿ±ÿ€ÒÿÑÿÔÿýÿÿæÿôÿÿýÿÔÿÃÿàÿÿ°ÿ²ÿ€ÑÿÒÿÔÿýÿäÿòÿýÿÔÿÄÿàÿÿ°ÿ²ÿ€ÑÿÒÿÕÿýÿãÿñÿýÿÕÿÄÿàÿÿ°ÿ²ÿ€ÑÿÓÿÕÿýÿâÿðÿýÿÕÿÅÿàÿÿ°ÿ³ÿ€ÐÿÔÿÕÿþÿÿáÿïÿÿþÿÕÿÆÿßÿÿ±ÿ³ÿ€ÐÿÔÿÖÿÿþÿàÿîÿþÿÿÖÿÆÿßÿÿ±ÿ³ÿ€ÐÿÕÿÖÿýÿßÿíÿýÿÖÿÇÿßÿÿ±ÿ³ÿ€ÐÿÕÿÖÿÿÿÞÿìÿÿÿÿÖÿÇÿßÿÿ±ÿ´ÿ€ÏÿÖÿÖÿþÿÝÿëÿþÿÖÿÈÿÞÿÿ²ÿ´ÿ€ÏÿÖÿ×ÿþÿÜÿêÿþÿ×ÿÈÿÞÿÿ²ÿ´ÿ€Ïÿ×ÿÖÿÿÿæÿûýÿêÿÿÿÿÖÿÉÿÞÿÿ²ÿ´ÿ€Ïÿ×ÿ×ÿþÿèÿýýÿýÿéÿþÿ×ÿÉÿÞÿÿ²ÿ´ÿ€ÏÿØÿ×ÿÿÿéÿþ÷ÿÿéÿÿÿ×ÿÊÿÝÿÿ³ÿµÿ€ÎÿØÿ×ÿÿÿéÿÿóÿÿéÿÿÿ×ÿÊÿÝÿÿ³ÿµÿ€ÎÿØÿØÿÿÿéÿÿòÿÿéÿÿÿØÿÊÿÝÿÿ³ÿµÿ€ÎÿÙÿ×ÿÿÿêÿÿñÿÿÿÿêÿÿÿ×ÿËÿÝÿÿ³ÿµÿ€ÎÿÙÿØÿÿÿéÿðÿþÿéÿÿÿØÿËÿÝÿÿ³ÿµÿ€ÎÿÚÿ×ÿÿÿêÿïÿýÿêÿÿÿ×ÿÌÿÜÿÿ´ÿ¶ÿ€ÍÿÚÿØÿÿÿêÿÿïÿýÿÿêÿÿÿØÿÌÿÜÿÿ´ÿ¶ÿ€ÍÿÛÿ×ÿÿÿêÿîÿüÿêÿÿÿ×ÿÍÿÜÿÿ´ÿ¶ÿ€ÍÿÛÿØÿÿÿéÿîÿüÿéÿÿÿØÿÍÿÜÿÿ´ÿ¶ÿ€ÍÿÛÿØÿÿÿêÿíÿûÿêÿÿÿØÿÍÿÜÿÿ´ÿ¶ÿ€ÍÿÜÿØÿÿÿéÿíÿûÿéÿÿØÿÎÿÛÿÿµÿ¶ÿ€ÍÿÜÿØÿÿÿéÿíÿûÿéÿÿÿØÿÎÿÛÿÿµÿ·ÿ€ÌÿÝÿ×ÿÿòÿüüÿíÿûÿèÿÿØÿÎÿÛÿÿµÿ·ÿ€ÌÿÝÿØÿÿÿôÿþþÿÿþÿÿíÿûÿÿéÿÿÿØÿÏÿÛÿÿµÿ·ÿ€ÌÿÝÿØÿÿÿôÿúÿÿÿìÿúÿéÿÿÿØÿÏÿÛÿÿµÿ·ÿ€ÌÿÞÿ×ÿÿôÿøÿþìÿúÿèÿÿ×ÿÐÿÚÿÿ¶ÿ·ÿ€ÌÿÞÿØÿÿÿôÿ÷ÿÿìÿúÿèÿÿÿØÿÐÿÚÿÿ¶ÿ·ÿ€ÌÿÞÿØÿÿÿõÿÿöÿÿíÿûÿÿèÿÿÿØÿÐÿÚÿÿ¶ÿ·ÿ€ÌÿÞÿØÿÿôÿôÿíÿûÿæÿÿØÿÐÿÚÿÿ¶ÿ·ÿ€ÌÿÞÿÙÿÿÿôÿôÿÿîÿûÿþÿûïÿÿÿÙÿÐÿÚÿÿ¶ÿ¸ÿ€ËÿßÿØÿÿÿôÿôÿÿïÿûÿÿÿýÿÿðÿÿÿØÿÑÿÚÿÿ¶ÿ¸ÿ€ËÿßÿØÿÿóÿôÿÿðÿûÿÿûÿïÿÿØÿÑÿÚÿÿ¶ÿ¸ÿ€ËÿßÿØÿÿôÿÿóÿÿðÿüÿÿúÿïÿÿØÿÑÿÙÿÿ·ÿ¸ÿ€ËÿßÿØÿÿôÿòÿÿñÿüÿÿùÿÿðÿÿØÿÑÿÙÿÿ·ÿ¸ÿ€ËÿßÿØÿÿôÿòÿÿÿñÿýÿþ÷ÿðÿÿØÿÑÿÙÿÿ·ÿ¸ÿ€ËÿßÿÙÿÿÿôÿñÿÿÿòÿýÿþ÷ÿðÿÿÿÙÿÑÿÙÿÿ·ÿ¸ÿ€ËÿßÿÙÿÿóÿðÿÿòÿþÿÿöÿïÿÿÙÿÑÿÙÿÿ·ÿ¸ÿ€ËÿàÿØÿÿòÿñÿÿÿóÿÿÿþõÿïÿÿÙÿÑÿÙÿÿ·ÿ¸ÿ€ËÿàÿØÿÿòÿðÿþóÿÿýõÿïÿÿØÿÒÿÙÿÿ·ÿ¸ÿ€ËÿàÿØÿÿòÿïÿþþÿûýÿÿÿôÿïÿÿØÿÒÿÙÿÿ·ÿ¸ÿ€ËÿàÿØÿÿòÿîÿþÿÿýÿÿÿÿÿôÿïÿÿØÿÒÿÙÿÿ·ÿ¹ÿ€ÊÿàÿØÿÿòÿíÿüýÿýÿÿÿôÿÿïÿÿØÿÒÿÙÿÿ·ÿ¹ÿ€ÊÿàÿÙÿÿñÿìÿÿùþÿÿÿôÿíÿÿÙÿÒÿÙÿÿ·ÿ¹ÿ€ÊÿàÿÙÿÿñÿìÿÿÿýÿýÿÿóÿíÿÿÙÿÒÿÙÿÿ·ÿ¹ÿ€ÊÿàÿÙÿÿñÿÿíÿÿÿÿÿýÿÿóÿíÿÿÙÿÒÿÙÿÿ·ÿ¹ÿ€ÊÿáÿØÿÿðÿìÿÿÿýüÿÿóÿíÿÿØÿÓÿÙÿÿ·ÿ¹ÿ€ÊÿáÿØÿÿðÿìÿöÿòÿíÿÿØÿÓÿÙÿÿ·ÿ¹ÿ€ÊÿáÿØÿÿðÿìÿÿ÷ÿóÿìÿÿØÿÓÿÙÿÿ·ÿ¹ÿ€ÊÿáÿØÿÿðÿëÿ÷ÿóÿìÿÿØÿÓÿÙÿÿ·ÿ¹ÿ€ÊÿáÿØÿÿïÿìÿøÿóÿìÿÿØÿÓÿÙÿÿ·ÿ¹ÿ€ÊÿáÿØÿÿïÿìÿøÿóÿÿìÿÿØÿÓÿÙÿÿ·ÿ¹ÿ€ÊÿáÿØÿÿïÿìÿÿùÿóÿëÿÿØÿÓÿÙÿÿ·ÿ¹ÿ€ÊÿáÿØÿÿîÿìÿüýÿóÿëÿÿÙÿÒÿÙÿÿ·ÿ¹ÿ€ÊÿàÿÙÿÿîÿìÿÿÿÿÿÿÿÿôÿÿëÿÿÙÿÒÿÙÿÿ·ÿ¹ÿ€ÊÿàÿÙÿÿîÿìÿýÿÿÿÿôÿêÿÿÙÿÒÿÙÿÿ·ÿ¹ÿ€ÊÿàÿÙÿÿîÿÿîÿÿüÿÿÿôÿêÿÿÙÿÒÿÙÿÿ·ÿ¹ÿ€ÊÿàÿØÿÿíÿîÿþþÿÿÿÿõÿÿêÿÿØÿÒÿÙÿÿ·ÿ¸ÿ€ËÿàÿØÿÿíÿÿîÿÿþÿÿÿÿõÿéÿÿØÿÒÿÙÿÿ·ÿ¸ÿ€ËÿàÿØÿÿìÿîÿûÿÿÿöÿÿéÿÿØÿÒÿÙÿÿ·ÿ¸ÿ€ËÿàÿØÿÿíÿíÿûÿÿöÿéÿÿØÿÒÿÙÿÿ·ÿ¸ÿ€ËÿàÿØÿÿìÿîÿûÿÿ÷ÿÿéÿÿÙÿÑÿÙÿÿ·ÿ¸ÿ€ËÿßÿÙÿÿìÿîÿûÿÿøÿÿëÿÿÿÿÙÿÑÿÙÿÿ·ÿ¸ÿ€ËÿßÿÙÿÿëÿïÿûÿÿøÿëÿþÿÿÙÿÑÿÙÿÿ·ÿ¸ÿ€ËÿßÿØÿÿëÿïÿûÿÿùÿÿëÿÿÿØÿÑÿÙÿÿ·ÿ¸ÿ€ËÿßÿØÿÿêÿðÿûÿÿùÿëÿÿÿÿØÿÑÿÙÿÿ·ÿ¸ÿ€ËÿßÿØÿÿëÿÿñÿûÿÿúÿêÿÿÿÿØÿÑÿÙÿÿ·ÿ¸ÿ€ËÿßÿØÿÿêÿñÿúÿûÿÿëÿÿÿÿÿÿØÿÑÿÙÿÿ·ÿ¸ÿ€ËÿßÿØÿÿêÿÿòÿúÿþÿÿéÿþÿÿÿØÿÑÿÙÿÿ·ÿ·ÿ€ÌÿÞÿÙÿÿéÿÿôÿÿùÿüéÿÿþÿÿÿÙÿÐÿÚÿ€·ÿ·ÿ€ÌÿÞÿØÿÿèÿÿõÿøÿäÿþÿýØÿÐÿÚÿ€·ÿ·ÿ€ÌÿÞÿØÿÿèÿõÿøÿäÿþÿÿÿØÿÐÿÚÿÿ¶ÿ·ÿ€ÌÿÞÿØÿÿçÿöÿøÿåÿÿþÿÿÿØÿÐÿÚÿÿ¶ÿ·ÿ€ÌÿÞÿ×ÿÿæÿÿùÿ÷ÿåÿýÿþ×ÿÐÿÚÿÿ¶ÿ·ÿ€ÌÿÝÿØÿÿæÿÿûÿÿ÷ÿåÿþÿÿÿØÿÏÿÚÿÿ¶ÿ·ÿ€ÌÿÝÿØÿÿåÿþþÿÿöÿæÿÿþÿÿÿØÿÏÿÚÿÿ¶ÿ·ÿ€ÌÿÝÿ×ÿþäÿüõÿæÿýÿþØÿÎÿÛÿÿµÿ¶ÿ€ÍÿÜÿØÿÿÓÿæÿþÿÿÿØÿÎÿÛÿÿµÿ¶ÿ€ÍÿÜÿØÿþÓÿçÿÿþÿýØÿÎÿÛÿÿµÿ¶ÿ€ÍÿÛÿØÿÿÔÿçÿýÿÿØÿÍÿÛÿÿµÿ¶ÿ€ÍÿÛÿØÿÿÔÿçÿþÿÿÿØÿÍÿÛÿÿµÿ¶ÿ€ÍÿÛÿ×ÿÿÔÿçÿþÿþ×ÿÍÿÜÿÿ´ÿ¶ÿ€ÍÿÚÿØÿÿÕÿèÿÿÿÿÿÿØÿÌÿÜÿÿ´ÿµÿ€ÎÿÚÿ×ÿÿÕÿèÿþÿþ×ÿÌÿÜÿÿ´ÿµÿ€ÎÿÙÿØÿÿÖÿèÿþÿÿØÿËÿÜÿÿ´ÿµÿ€ÎÿÙÿ×ÿÿ×ÿèÿÿÿÿ×ÿËÿÜÿÿ´ÿµÿ€ÎÿØÿØÿÿ×ÿèÿÿÿØÿÊÿÝÿÿ³ÿµÿ€ÎÿØÿ×ÿÿ×ÿèÿÿþ×ÿÊÿÝÿÿ³ÿ´ÿ€ÏÿØÿ×ÿþØÿèÿü×ÿÊÿÝÿÿ³ÿ´ÿ€Ïÿ×ÿ×ÿÿéÿòÿèÿÿÿ×ÿÉÿÝÿÿ³ÿ´ÿ€Ïÿ×ÿÖÿÿéÿüÿÿÿÿÿÿÿÿçÿÿÖÿÉÿÞÿÿ²ÿ´ÿ€ÏÿÖÿ×ÿÿëÿþÿöÿéÿÿÿ×ÿÈÿÞÿÿ²ÿ´ÿ€ÏÿÖÿÖÿÿéÿþþÿÿÿÿÿÿÿéÿÿÖÿÈÿÞÿÿ²ÿ³ÿ€ÐÿÕÿÖÿÿÜÿêÿÿÖÿÇÿÞÿÿ²ÿ³ÿ€ÐÿÕÿÖÿÿÝÿëÿÿÿÖÿÇÿßÿÿ±ÿ³ÿ€ÐÿÔÿÖÿþÝÿëÿþÖÿÆÿßÿÿ±ÿ³ÿ€ÐÿÔÿÕÿÿßÿíÿÿÿÕÿÆÿßÿÿ±ÿ²ÿ€ÑÿÓÿÕÿÿßÿíÿÿÕÿÅÿßÿÿ±ÿ²ÿ€ÑÿÒÿÕÿÿàÿîÿÿÕÿÄÿàÿÿ°ÿ²ÿ€ÑÿÒÿÔÿÿâÿðÿÿÿÔÿÄÿàÿÿ°ÿ±ÿ€ÒÿÑÿÔÿÿãÿñÿÿÿÔÿÃÿàÿÿ°ÿ±ÿ€ÒÿÐÿÔÿÿÿäÿòÿÿÿÔÿÂÿáÿÿ¯ÿ±ÿ€ÒÿÏÿÔÿýåÿóÿýÔÿÁÿáÿÿ¯ÿ°ÿ€ÓÿÏÿÓÿÿÿçÿõÿÿÿÿÔÿÀÿáÿÿ¯ÿ°ÿ€ÓÿÎÿÓÿÿÿÿèÿöÿÿÿÓÿÀÿâÿÿ®ÿ°ÿ€ÓÿÍÿÓÿþÿêÿøÿÿÿþÓÿ¿ÿâÿÿ®ÿ¯ÿ€ÔÿÌÿÑÿÿÿìÿúÿÿÿÿÑÿ¾ÿâÿÿ®ÿ¯ÿ€ÔÿËÿÑÿÿÿÿþïÿýÿþÿÿÿÑÿ½ÿãÿÿ­ÿ¯ÿ€ÔÿÊÿÐÿÿþÿþòÿÿþþÿÿÐÿ¼ÿãÿÿ­ÿ®ÿ€ÕÿÊÿÎÿþþÿòþÿþÏÿ»ÿãÿÿ­ÿ®ÿ€ÕÿÉÿÌÿýóÿýÌÿ»ÿäÿÿ¬ÿ®ÿ€ÕÿÈÿÉÿóÉÿºÿäÿÿ¬ÿ­ÿ€ÖÿÇÿ¼ÿÊÿ¹ÿäÿÿ¬ÿ­ÿ€ÖÿÆÿ½ÿËÿ¸ÿåÿÿ«ÿ¬ÿ€×ÿÅÿÿ¿ÿÍÿÿ·ÿåÿÿ«ÿ¬ÿ€×ÿÃÿÀÿÎÿµÿåÿÿ«ÿ«ÿ€ØÿÂÿÁÿÏÿ´ÿæÿÿªÿ«ÿ€ØÿÁÿÂÿÐÿ³ÿæÿÿªÿ«ÿ€ØÿÀÿÃÿÑÿ²ÿæÿÿªÿªÿ€Ùÿ¿ÿÿÅÿÓÿÿ±ÿçÿÿ©ÿªÿ€Ùÿ½ÿÆÿÔÿ¯ÿçÿÿ©ÿ©ÿ€Úÿ¼ÿÇÿÕÿ®ÿèÿÿ¨ÿ©ÿ€Úÿ»ÿÈÿÖÿ­ÿèÿÿ¨ÿ¨ÿ€ÛÿºÿÿÊÿØÿÿ¬ÿéÿÿ§ÿ¨ÿ€Ûÿ¸ÿËÿÙÿªÿéÿÿ§ÿ¨ÿ€Ûÿ·ÿÿÍÿÛÿÿ©ÿêÿ€§ÿ§ÿ€ÜÿµÿÿÏÿÝÿÿ§ÿêÿÿ¦ÿ§ÿ€Üÿ³ÿÿÑÿßÿÿ¥ÿëÿ€¦ÿ¦ÿ€Ýÿ±ÿÿÓÿáÿÿ£ÿëÿÿ¥ÿ¦ÿ€Ýÿ¯ÿþÖÿäÿþ¡ÿìÿ€¥ÿ¥ÿ€Þÿ¬ÿÿØÿæÿÿžÿìÿÿ¤ÿ¥ÿ€ÞÿªÿÿÚÿèÿÿœÿíÿ€¤ÿ¤ÿ€ßÿ¨ÿþÝÿëÿþšÿíÿÿ£ÿ¤ÿ€ßÿ¥ÿþàÿîÿþ—ÿîÿ€£ÿ£ÿ€àÿ¢ÿÿâÿðÿÿ”ÿîÿÿ¢ÿ£ÿ€àÿ ÿüçÿõÿü’ÿïÿþ¢ÿ¢ÿ€áÿ›ÿùïÿýÿùÿïÿÿ¡ÿ¢ÿ€áÿ“ÿúúÿýý…ÿðÿÿ ÿ¡ÿ€âÿŒÿúýÿÿñÿþ ÿ ÿ€ãÿÿÿñÿÿŸÿ ÿ€ãÿÿÿòÿÿžÿŸÿ€äÿÿÿòÿÿžÿŸÿ€äÿÿÿóÿÿÿžÿ€åÿÿÿôÿþÿÿ€æÿÿÿôÿÿœÿÿ€æÿÿÿõÿÿ›ÿœÿ€çÿÿÿöÿþ›ÿ›ÿ€èÿÿÿöÿÿšÿ›ÿ€èÿÿÿ÷ÿÿ™ÿšÿ€éÿÿÿøÿþ™ÿšÿ€éÿÿÿùÿþ˜ÿ™ÿ€êÿÿÿùÿÿ—ÿ˜ÿ€ëÿÿÿúÿÿ–ÿ˜ÿ€ëÿÿÿûÿþ–ÿ—ÿ€ìÿÿÿûÿÿ•ÿ–ÿ€íÿÿÿüÿÿ”ÿ•ÿ€îÿÿÿýÿþ”ÿ•ÿ€îÿÿÿþÿþ“ÿ”ÿ€ïÿÿÿþÿÿ’ÿ“ÿ€ðÿÿÿÿÿÿ‘ÿ’ÿ€ñÿÿÿÿþ‘ÿ’ÿ€ñÿÿÿþÿ‘ÿ€òÿÿÿÿÿÿ€óÿÿ‚ÿŽÿÿ€ôÿÿƒÿÿŽÿŽÿ€õÿÿ„ÿþÿÿ€öÿÿ„ÿÿÿÿŒÿ€÷ÿÿ…ÿÿÿÿÿ‹ÿ€øÿÿ†ÿþÿÿÿŠÿ€ùÿÿ‡ÿþþÿÿ‰ÿ€úÿÿˆÿþýÿÿˆÿ€ûÿÿ‰ÿþüÿÿ‡ÿ€üÿÿŠÿþûÿÿ†ÿ€ýÿÿ‹ÿþúÿÿ…ÿ€þÿÿŒÿþùÿÿ„ÿ€ÿÿÿÿþøÿÿƒÿ€ÿÿŽÿþ÷ÿÿ‚ÿ€ÿÿþöÿÿÿ€‚ÿÿþõÿÿÿÿ€ƒÿ‘ÿþôÿÿÿÿÿ€„ÿ’ÿþóÿÿÿþÿ€…ÿ”ÿýòÿÿÿýÿ€†ÿ•ÿýñÿÿÿüÿ€‡ÿ–ÿþïÿÿÿûÿ€ˆÿ—ÿþîÿÿÿúÿ€‰ÿ˜ÿþíÿÿÿùÿÿ€‹ÿšÿýìÿÿÿ÷ÿ€Œÿ›ÿýëÿÿÿöÿ€ÿœÿþéÿÿÿõÿÿ€ÿžÿýèÿÿÿóÿ€ÿŸÿýçÿÿÿòÿ€‘ÿ¡ÿýåÿÿÿñÿÿ€“ÿ¢ÿýäÿÿÿïÿ€”ÿ¤ÿýâÿÿÿîÿ€•ÿ¥ÿýáÿÿÿíÿÿ€—ÿ§ÿýßÿÿÿëÿÿ€™ÿ¨ÿýÞÿÿÿéÿ€šÿªÿýÜÿÿÿèÿÿ€œÿ¬ÿüÛÿÿÿæÿ€ÿ­ÿýÙÿÿÿåÿÿ€Ÿÿ¯ÿý×ÿÿÿãÿÿ€¡ÿ±ÿüÖÿÿÿáÿÿ€£ÿ³ÿüÔÿÿÿßÿÿ€¥ÿ´ÿýÒÿÿÿÝÿÿ€§ÿ¶ÿýÐÿÿÿÛÿÿ€©ÿ¸ÿüÏÿÿÿÙÿÿ€«ÿºÿüÍÿÿÿ×ÿÿ€­ÿ¼ÿüËÿÿÿÕÿÿ€¯ÿ¾ÿüÉÿÿÿÓÿÿ€±ÿÀÿüÇÿÿÿÑÿÿ€³ÿÂÿüÅÿÿÿÏÿÿ€µÿÄÿüÃÿÿÿÍÿþ€¸ÿÇÿûÁÿÿÿÊÿÿ€ºÿÊÿú¿ÿÿÿÈÿÿ€¼ÿÌÿû¼ÿÿÿÆÿþ€¿ÿÏÿû¹ÿÿÿÃÿþ€ÂÿÒÿú·ÿÿÿÀÿþ€ÅÿÖÿù´ÿÿÿ½ÿþ€ÈÿÚÿø±ÿÿÿºÿþ€ËÿÝÿù­ÿÿÿ·ÿý€Ïÿáÿù©ÿÿÿ³ÿü€Ôÿæÿ÷¦ÿÿÿ®ÿ€ûÛÿëÿö¢ÿÿÿ­ÿöàÿðÿöÿÿÿ¨ÿöÿ€çÿøÿó˜ÿÿÿ£ÿßï“ÿÿÿžÿä÷‹ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÑÿþ£èµÿÝÿèþ£©ÿÿÀÿðÃÃÒòÿÿÃáäÿ÷ÿàþ„àþÿºþ„Ñèÿþ„àìÿÂþ„²ýÿàý„ñÿú„“²ðòÿÝÿàþ„Êÿàþ„“ýÿ÷Œþ„àøÿ£û„£É÷ÿ>ðûÿ´zåÿÈâÿÃ>ý/´öÿ¥ þMðóÿð>Ãøÿ÷ÿàþ„àÿÿÑþ„Âçÿþ£èìÿÂý„ðþÿ²ý„ñÿø„ŒðóÿÝÿàþ„Êÿàý„ÑþÿÑý„àøÿ£ù„ŒØŽÿ–¥ûÿkÒåÿÒM¥âÿˆ zÃÖ áøÿÃ>´ÃˆMóÿ\Ãøÿ÷ÿàþ„àÿ茄„²ÍÿÂý„Âÿÿðü„ñÿþ„£Â£þ„²óÿÝÿàþ„Êÿàý„£þÿ“ý„àøÿ£„„“«„„ÿ„àÿáMüÿð /ÂÿÒðýÿ¥ˆøÿ\áþÿkÒõÿk \Ãøÿ÷ÿàþ„à÷›„„›ûÿ Ñ£„„Œ«àÿÿ²££Éþÿ÷þ£÷ÿþ£ èÿÿº££ÑØ›„Œº÷ÿÂý„“ÿÿÂü„ñÿþ„Âþÿ›„„£ýÿૌ„„£ÑþÿÿÿÑ£þ„›²èþÿ𲓄„›Â÷þÿþ£è“„“Ñþÿàþ„𲌄›èýÿ÷›„„“²ðþÿº££Ñðº£ÑÿÿØ›„„«º££ºòÿàü„ðÿàü„àøÿ£„„£þÿèŒÿ„“Žÿ\áýÿ¥–þÿ´>\ÃþÿÒM¥ázMzÿák  \´ÿÿÒM¥þÿðk  kðþÿ¥MÒˆ//¥ñÿ´–øÿMýÿÈöÿ– ÒˆÃøÿ÷ÿàþ„à«„„“÷ýÿ÷›ú„Øÿ„„“þÿÑ„„£ÿÿþ„àÿÿ£„„Œü„Âøÿ „„Œ„„Ñÿ“„Œþ„ñÿþ„Âþÿ›„„«þÿÑú„²ÿÿÿ›ú„ÂÿÿÑú„›þÿþ„Œü„àÿÿàþ„Œý„ŒðÿÿèŒû„ Œðÿÿ£„„£Œ„„ÂÿÑù„£òÿàþ„Œ„²ÿ²„Œþ„àøÿ£„„£ýÿÑþ„èÿ¥–ýÿ\áÿÿ3zzô>ÃÿÿÃM Má kˆk/MÿÿÈÿÿð>kˆk>ðÿÿˆ /zˆ Ãóÿá>>ðùÿázüÿk÷ÿ¥¥ÿˆÃøÿ÷ÿàþ„£„„Œèüÿ º„„›Øà«„„“ÿðþ„Øÿÿ«„„Ñÿÿþ„ àÿÿ£„„Œ²ÂŒ„„“øÿ „„£›„£Ñ„„ºþ„ñÿþ„²àà«þ„Øÿÿðþ„ÂàÑŒ„„ÑÿÑ„„“ÑàຓÂÿðŒ„„ÂàÑŒ„„Ñÿÿþ„“ººþ„²ÿÿàþ„›Â²þ„²ÿÿ›„„«àØ›„„²ÿÿ£þ„“££Â÷Œ„„›Øà«„„£òÿàþ„º„Œè„„ºþ„àøÿ£„„£ýÿ÷þ„Âÿð >þÿðMÿÿÒˆþÿð\ÿÿÈðÿá–´ýÿ ÃÿÿÈÿÿˆ–þÿ–ˆÿÿˆzþÿÃkõÿM> kðøÿÈüÿMøÿÒ¥ÿÿˆÃøÿ÷ÿàû„Œðüÿþ„ðÿÿ÷þ„ èÿ£„„²ÿ÷„„Œþÿþ„ àÿÿ£„„ÂÿÿÑþ„øÿ „„£Ñ„„“„²Âþ„ñÿø„ºþÿº„„›þÿº„„›ÿ„„ŒÑèþÿðÿ„„²þÿº„„«ÿÿþ„ àÿÿ²„„£ÿÿàþ„þÿº„„“ÿà„„“þÿ Ø„„Œÿÿ£„„Âýÿ Ñ„„Œ÷ÿÿ„„£òÿàþ„ð„„“„“àþ„àøÿ£„„£üÿþ„ÂŽÿkÒÿÿ–¥ÿÿzðýÿMÿÿÈýÿ–zúÿÈÿÿ> üÿ >ÿÿˆÃýÿMõÿÿM /´øÿÈüÿMùÿÒ kþÿˆÃøÿ÷ÿàú„›ýÿà÷„ àÿÑ„„ŒÿÉ„„²þÿþ„ àÿÿ£„„Âÿÿàþ„øÿ„„£ÿŒþ„èÂþ„ñÿù„Éýÿ£„„Âþÿàþ„ÿèû„›Éÿÿ£ø„£ÿÿþ„ àÿÿ„„£ÿÿàþ„þÿàþ„ÿÂ÷„ÿÿ£„„Âýÿ„„£þÿ„„£òÿàþ„ÿ«þ„Éàþ„àøÿ£„„£ýÿ÷þ„ÉŽÿ´zÿÿ>ðÿÿMùÿÿÈýÿð  \ˆÒþÿÈÿÿMüÿMÿÿˆÃýÿMòÿk´ùÿÈüÿMùÿM>ýÃk–Ãðúÿ÷ÿàþ„É£þ„ºþÿàþ„ú£ èÿÿŒ„„Ø›„„èþÿþ„ àÿÿ£„„Âÿÿàþ„øÿ „„£ÿº„„›ÿÂþ„ñÿþ„²Éþ„Œ÷þÿ£„„Âþÿàþ„ÿÿØ“û„ºÿ£„„“û£ºÿÿþ„ àÿÿ„„£ÿÿàþ„þÿàþ„ÿ„„Œú£ÿÿ£„„Âýÿ„„£þÿ„„£òÿàþ„ÿØþ„÷àþ„àøÿ£„„£ýÿÑþ„èÿÿ/ÿákÿÿÿMúÃÿÿÈüÿð–M kÿÿÈÿÿMüÿMÿÿˆÃýÿMòÿð\ùÿáˆýÿðkùÿMøÃúÿ÷ÿàþ„à÷Œþ„Øÿÿðþ„ðøÿº„„£„„›ýÿþ„ àÿÿ£„„Âÿÿàþ„øÿ „„£ÿð„„ÑÿÂþ„þÿÑÂÂàøÿþ„Âÿºþ„£þÿ²„„«þÿÑ„„“ÿðÿÿèѺ“þ„ÿ²„„²øÿþ„ àÿÿ„„£ÿÿàþ„þÿÉ„„›ÿÑ„„“øÿ£„„ÂýÿØþ„èÿÿº„„£þÿÑÂÂØùÿàþ„ÿÿ“„²ÿàþ„àÿÿàÂÂÑþÿ£„„£þÿèŒÿ„›þÿþÂð“ÿzÒˆ´ÿÿÿkÒùÿÈøÿ Ò>ÒÿÈÿÿ//üÿÿ/ÿÿˆÃýÿMñÿMøÿMýÿÈùÿÒüÃk–Ãðúÿ÷ÿàþ„àÿàþ„ Œèÿÿ£„„›ØÿÿðÉ“þÿðü„Ñýÿþ„ àÿÿ£„„Âÿÿàþ„øÿ„„£ûÿÂþ„þÿ£„„Âøÿþ„Âÿÿ›þ„ºÿÿàþ„àÿð“„„Âÿ “ÑðÿÿÑ„„Œÿàþ„ÂðÿÿزÂÿÿþ„ àÿÿ„„£ÿÿàþ„÷ÿàŒ„„Âÿ÷Œ„„«èÿÿ身ÿÿ£„„Âýÿ÷Œþ„£“þ„£þÿþ„àùÿàþ„ûÿàþ„àÿÿ„„£þÿ£„„“«„„„Œèþÿþ„à“ÿÒk/ þÿÿ¥\üÿÒÿÿÈýÿÒðýÿ ˆÃÿÈÿÿkÃþÿÃkÿÿˆÃýÿMøÿÃüÿ–zþÿ¥ˆáþÿ\áþÿkÒþÿ¥ˆáùÿˆÃøÿ÷ÿàþ„àÿÿÂþ„›÷ÿèŒù„ýÿ›þ„Œ÷ýÿþ„ àÿÿ£„„Âÿÿàþ„øÿ„„£ûÿÂþ„þÿ£„„Âøÿþ„ÂÿÿðŒþ„Øÿÿ²ú„›÷ÿÂù„Âÿÿ²ù„Âÿÿþ„ àÿÿ„„£ÿÿàù„“÷ÿÿÑù„£ÿÿ£„„ÂüÿÑü„ Œ„„£ÿÿà„„£øÿàþ„ûÿàþ„àÿÿ„„£þÿ£ù„Œàýÿþ„à’ÿ> zþÿÿÿ >M´Ã¥MMÿÿÈýÿˆ zÃÖ /ÿÿÈÿÿá –Ã¥ áÿÿˆÃýÿMøÿ>–ÃÃz ðþÿMÃþÿÃ>´ÃˆMýÿMÃùÿˆÃøÿ÷ÿàþ„àþÿ£þ„²ÿÿð²ü„Œ²ýÿÑþ„²üÿþ„ àÿÿ£„„Âÿÿàþ„øÿ„„£ûÿÂþ„þÿ£„„Âøÿþ„ÂþÿØþ„ŒèÿÿÂŒý„²÷ÿÿà›ü„“ØýÿÑ“ü„›àÿÿþ„ àÿÿ„„£ÿÿàþ„£þ„£èýÿà£ü„“Éÿÿ£„„Âûÿಣ«Ñ„„£ÿÿ„„Øøÿàþ„ûÿàþ„àÿÿ„„£þÿ£ü„Œ£É÷üÿþ„à’ÿ–Òþÿÿÿðzý/–ÿÿÈýÿÃ>ýMÒÿÿÈþÿÒ/þ/ÒþÿˆÃýÿMøÿk ýMáýÿMÃýÿ¥ þMðýÿMÃùÿˆÃøÿåÿèààð©ÿèààüÿþÿþàðùÿ÷þàëÿðàðøÿþà÷ôÿð÷þÿ ÷“„„ºÿÿ›„“ÖÿÿüÿÿÃáôÿðÃÃáõÿÒÃÒèÿáÃÃðòÿÿÃáäÿÿ»ÿ„“££ý„ðÿ÷„„ÑÖÿÿÿÿ»ÿÂû„“ØÿÿØ„“Õÿÿÿÿ»ÿ÷àÉþÂàýÿðàðÕÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿðààèáÿèààð³ÿöÿèààðÿÿÿ÷ÿ„„£áÿ£„„ÂîÿðÂþ£ÂðÍÿöÿ£„„ÂÿÿÍÿˆ¥Ãÿ÷ÿ„„£áÿ£„„Âðÿ ÷º„„›£›„„º÷Ïÿöÿ£„„·ÿþ„àÞÿÿÞÿˆÃóÿMÃÿ÷ÿ„„£áÿèààðñÿ÷›„«ðþÿ÷„›÷Ðÿöÿ£„„·ÿþ„àÞÿÿÞÿˆÃóÿÃÒÃÿ÷ÿ„„£þÿþàèýÿàÂÂÉèþÿèààèýÿèààðÿèààðÿÿðààèÿèÂÂèüÿ «„Ñÿ÷ÉÂàÂÑÑ„ºþÿðààèÿÿàèþÿ÷ØÂÂÑðûÿðÑÂÂÉàûÿàÂÂÉèýÿðààèÿèÂÂèýÿ£„„ÂÿØÂÉðûÿðÑÂÂØ÷þÿ÷þàÿÿèàþÿðÉÂÑ÷þà÷øÿþàÿ÷ÑÂÑ÷ûÿèÉÂÂàþÿ÷àþ„ÉàààÿšÿÃÒýÿÃáþÿáÃððÃáþÿðÃðÿÿÿÒÃÿáÃðþÿáÃýÿÃÒ÷ÿ´ˆˆ´ÿÿák–ÃÃáÿÿ𥈈ÃýÿÃÒÿÿðÃáÿ´ˆ¥ðÿÿ´ˆˆáõÿ𥈈ÒýÿðÃáÿðÃÒþÿÒˆˆ´áÃðùÿ÷ÿ„„£ÿÿÉ„„ŒèÿÿØ“ü„£÷ÿÉ„„ŒýÿŒ„„èÿ£„„Âÿÿ„„›«ý„Ñþÿà„«ÿèŒý„£ÿ«„ðÿÿ„„£ÑŒ„£ÿÿÑŒü„ºþÿ÷²û„ŒþÿØ“ü„£÷ÿÿ„„›«ý„Ñþÿ£„„«“þ„Œèþÿ÷²ü„ŒÑÿÿàþ„è“„„ÿÿÑý„Œþ„àøÿþ„ºŒþ„›÷þÿè£ü„“èÿàú„àÿšÿ>þÿÃkþÿMððMþÿˆ¥ÿÿÿ>ÿ´ˆþÿMáÿÿÃzùÿÒ>ý Òˆüˆÿ¥ ý þÿMÿÿÃ\/þ/ÒMýÃ÷ÿÒ ýkþÿ ÈzMÿÿkûÃùÿ÷ÿ„„£ÿèþ„Øÿÿàþ„›£þ„²ÿ÷þ„ÑÿÿØ„„›ÿÿ£„„ÂÿÿÂù„Œþÿ²„èÿŒ„²àº„£ÿØ„ÉÿÿÂû„£ÿØþ„›£þ„ºÿÿ²þ„ÿ£“„„ÿÿàþ„›£þ„²ÿÿ„ú„Œþÿ£ù„“þÿ£„„Œ£“þ„ðÿàú„ÿàþ„Œ£›þ„àøÿø„Éÿÿ÷Œ„„“£Œ„„“ÿàú„àÿšÿzÃÿÿz þÿ >ÿÿ>þÿ>\ÿÿÒzÿðMÿÿð–ÿÿ–´úÿð/ –ÿÿ´MÃák–ÃÃáð>Òÿð´MþÿMÿÿÈðÿˆ\áÿÃMøÿð Ãÿðkˆÿÿà zˆˆÿˆkáÿÒMÃùÿ÷ÿ„„£÷Œ„„Éþÿ“„„Éÿÿàþ„÷ÿ«„„«ÿÿ²„„Ñÿÿ£„„Âÿÿ„„“èÿÉþ„#àÿÿ““ÿØ„Œÿÿà„£ÿ÷„«ÿÿ„„“ÉààØÿ“„„Âÿÿàþ„ðÿþ„Øþÿ è²ÿÿ“„„Éÿÿàþ„÷ÿ„„“èÿÉþ„ àÿÿ£„„«ðÿÉþ„àÿÑ„„“÷ÿÿ£„„ºÿàþ„ ÂààÑÿ«„„›÷ÿÿþ„àøÿþ„Â÷÷“„„£ÿÿ²„„«ÿÿ÷Œ„„Øÿÿþ„àÞÿšÿÖÿÿ/k´ÿázÿÿˆÒÿákðÿ¥´ÿÿM ÿÿ¥ \>ÿÿkðúÿ¥–üÿðÿˆÃþÿÃzùÿMÿÿÈþÿðMýÿ>øÿ–¥ýÿ/ ÿÿÃMðýÿ /ýÿˆÃùÿ÷ÿ„„£›„„²þÿðþ„ýÂþ„àÿØþ„ÿ÷Œ„„÷ÿÿ£„„Âÿÿ„„£þÿþ„àÿÿ„£ÿ„£ÿÿà„£ÿÿ„£ÿÿ„„£ýÿèþ„ðþÿ“„„Éÿ“þ„£ºÉðÿÿðþ„ýÂþ„àÿ„„£þÿþ„àÿÿ£„„Âþÿ“„„Âÿ²„„£þ£„„£ÿàþ„üÿþ„Øþÿþ„àøÿþ„ àÿÿ„„£ÿÿ“„„²þ“„„Âÿÿþ„àÞÿ™ÿ\ÿÒá/kÿ´ÃÿÿÖÿ–/á¥ÿzþÿ ˆÒÿ\k¥áÿ>Mùÿ\áúÿˆÃþÿð zÃûÿMÿÿÈýÿMýÿMøÿ\ðýÿzÒÿÈýÿÒzýÿˆÃùÿ÷ÿÂû„ºþÿà÷„ àÿÿ“„„ÑÑ„„²þÿ £„„Âÿÿ„„£þÿþ„àÿÿ„£ÿ„£ÿÿà„£ÿÿ„£ÿÿ„„£ýÿàþ„ýÿ£„„ÂÿÑú„²ÿà÷„àÿ„„£þÿþ„àÿÿ£„„Âþÿ£„„Âÿ£ø„£ÿàþ„üÿþ„àþÿþ„àøÿþ„àÿÿ„„£ÿÿ÷„Âÿÿþ„àÞÿ™ÿ M/ÿz>ÿz ÿˆýÿkÿ>zÿ>\ÿÿMþÿ Ã¥ð´ð–ÿˆùÿMùÿˆÃýÿ´/þ>´þÿMÿÿÈýÿMýÿMøÿMüÿˆÃÿÈýÿÈýÿˆÃùÿ÷ÿÂþ„ºþ„àÿÿàþ„úà ÷ÿÿ„„««„„àþÿ £„„Âÿÿ„„£þÿþ„àÿÿ›ŒÿØ„Œ÷ÿà„£ÿà„ºÿÿ„„£ýÿàþ„÷þÿ£„„Âÿÿðº£ü„Ñàþ„úà÷ÿ„„£þÿþ„àÿÿ£„„Âþÿ›„„Éÿ£„„²ûàèÿàþ„üÿŒ„„Ñþÿþ„àøÿþ„àÿÿ„„£ÿÿþ„Éûàðÿÿþ„àÞÿ™ÿ –á/–ÿÒ´MMýÿ\/áÒÿ–ðˆýÿ k¥ ÿÿ\>ÃÃùÿMùÿˆÃûÿÒ¥k ÃÿÿMÿÿÈýÿMýÿMøÿMüÿˆÃÿÈýÿÃzýÿˆÃùÿ÷ÿ„„›ÿº„„“÷ÿÿŒ„„ÉüÿÑþÿðü„“ýÿ £„„Âÿÿ„„£þÿþ„àÿÿ²„è÷Œ„£Â“„›à²„Øÿÿ„„£üÿŒ„„Ñÿÿðþ„èÿ²ðþÿ è“„„ÂÿŒ„„ÉüÿÑÿÿ„„£þÿþ„ àÿÿ£„„Âÿÿèþ„èÿÉ„„“÷ýÿðàÿàþ„üÿ«„„ŒÑàºþ„àÿÿ„„£þÿþ„ àÿÿ„„£ÿÿ«„„«üÿàðÿÿþ„ØÞÿ™ÿ Òzáÿÿ/kˆýÿ–z/ÿÿákÃýÿ \/\kÿÿ¥køÿˆ´úÿˆÃøÿ ´ˆÿÿMÿÿÈýÿMýÿMøÿˆ´ýÿ>ÿÿÈüÿ/ýÿzÃùÿ÷ÿ „„£ÿ÷“„„«ÿÿÂþ„›Â²Œ„ýÿ«ý„Éýÿ £„„Âÿÿ„„£þÿþ„ àÿÿè„£ÿ茄„›ý„“þÿ„„£üÿ„„ŒºÂ“„„£ÿÿ„„£ÂºŒ„„àÿÂþ„ ›Â²Œ„ÿÿ„„£þÿþ„àÿÿ£„„›ÂºŒ„„£ÿÿ÷Œ„„Œ²Â›„Âÿàþ„üÿàø„àÿÿ„„£þÿþ„ àÿÿ„„£ÿÿàþ„“ºÂº“„àÿÿŒ„„“«àÿ˜ÿ >þÿz ÒýÿÒzþÿ> üÿ –´ÿÿð \ýÿÿþÿ á/áÿÿðˆÃÿ–ˆþÿÃkáþÿ –¥ÿÿMÿÿÈýÿMýÿMýÿÿþÿ á>ðÿÿ¥kÿÿÈüÿz\ôkÃùÿ÷ÿ„„£ÿÿàþ„Øÿÿºù„ýÿÑý„÷ýÿ £„„Âÿÿ„„£þÿþ„àþÿº„²ÿ÷àèÿýàðþÿ„„£ûÿ²û„›÷ÿÿù„Âþÿºù„ÿÿ„„£þÿþ„àÿÿ£ú„Œðþÿè“ú„Âÿàþ„ûÿÑŒþ„ºþ„àÿÿ„„£þÿþ„àÿÿ„„£þÿÑŒú„àÿÿºü„àÿ˜ÿ\–þÿÒ ûÿ Òþÿ–\üÿÒ ýÿ\–ýÿÿýÿ¥MMÃÿð MMˆÃ>M/>þÿMÿÿÈýÿMýÿMýÿÿýÿ ¥M>>ðÿÿÈüÿð\þMkÃùÿ÷ÿàÂÂÑþÿÑÂÂÉþÿð«££²ÉðüÿþÂÑüÿ ÑÂÂàÿÿàÂÂÑþÿþÂðþÿ ÷£„£Ø÷ÿÿàØûÿàÂÂÑúÿຣ£²Ñýÿðɲþ£Âðüÿ ð«££²ÉðÿÿàÂÂÑþÿþ ðÿÿÑÂÂØÉ££É÷ûÿѺþ£ÂØÿÿðþÂùÿÿà÷ðþ„èÿÿàÂÂÑþÿþÂðÿÿàÂÂÑýÿ÷ɲ££«ÂèýÿÑ«££ºàÿ˜ÿÈáýÿˆ¥ûÿ¥ˆýÿáˆÃûÿˆ¥ýÿÈáýÿÿˆüÿázMMzÒþÿ ÒkM\ÃÿÒˆMM\¥ýÿˆ¥ÿÿáˆÃýÿˆ¥ýÿ¥ˆýÿÿˆüÿÃkMM–ðþÿáˆÃúÿáÃáÿˆÒùÿ½ÿÂŒü„£ÍÿÔÿ«ÂààÑ›„„“·ÿÿ™ÿð/ øÿ»ÿàþÂØèÍÿÔÿù„Ø·ÿÿžÿÃ>kˆˆ/¥øÿÿÔÿ«›þ„“²ð¶ÿÿžÿÒMþM´÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÿ¦÷‰ÄÿÿÿãÿᵉzüMk‰—Äð¾ÿáĵú‰ÿÄÒýÿñÿ0÷Äÿÿÿæÿµk0ó0k¦ðùÿ‰ÜM\öÿðµzMò0\‰Äóÿáöðÿÿÿéÿáz!ìkÄûÿ0Ü\øÿÄ\ëÿM—á÷ÿ¦÷?œÿÿÿëÿákçMÄþÿðÛ‰úÿÄ0éü‰øÿz÷zœÿÿÿìÿ‰!åkþÿµÛÄüÿð\çü‰øÿ?÷¦œÿÿÿîÿá?ã¦þÿzÛüÿÒ0æüµùÿðöáœÿÿÿïÿÄ!âáþÿ?ÜMýÿÒ!åüðùÿÄ÷0›ÿÿÿðÿ¦á0ýÿÛzþÿð!äý0øÿÄ÷‰¦›ÿÿÿñÿ¦ò0Mý‰M!÷kþÿÄÛµþÿMô!Mký‰kM!úý\†ÿÿÿòÿÒô!záùÿÒz!ú¦þÿÄô‰0÷Mô‰ðÿÿÄõkÒ÷ÿá¦\ýý—†ÿÿÿóÿð!õkðõÿá\ûáðÿöµñÿ\÷!Òòÿð—0ýĆÿÿÿóÿMõ¦ñÿ¦!þ0ðÿÒöáòÿðöÄîÿ‰!þÒÿĉ\MM\‰Òôÿá¦zþMk—áÒÿÿÿôÿ—ö!ÒïÿÒ!kðÿ—÷0ñÿÄ÷0ìÿá?Møÿ¦÷M÷ÿ÷M‰þÿð‰!ùMÒøÿ¦MøMÒÔÿÿÿõÿð!ö¦íÿÒ!¦ðÿ\÷kñÿ—÷Mìÿÿÿ—µøÿ\ø0øÿÒ÷—ÿÿ—!ö!¦ûÿ¦0ô¦ÕÿÿÿõÿközëÿÒ‰áðÿ0÷—ñÿ‰÷0ìÿôÿ!økøÿ—÷ÿÒ?ó!ÒþÿÒMò!ÒÖÿÿÿöÿáö0×ÿáöÒñÿ‰ö—íÿõÿÒ÷¦øÿ\ø!‰ðMÿÿ‰ïMÖÿÿÿöÿzöÄ×ÿ¦÷!ðÿ—õ\áïÿõÿ—÷áøÿ!äµ?íá×ÿÿÿöÿ!÷MÖÿk÷MðÿÄó\¦ðòÿõÿkø0øÿá͵×ÿÿÿ÷ÿµö¦Öÿ?÷‰ïÿ!ñ\—áõÿõÿ0økøÿ¦Í‰×ÿÿÿ÷ÿk÷!ÖÿðöÄïÿ‰î0kµøÿöÿá÷—øÿkô?z‰‰Mñ0k‰‰k0õ‰×ÿÿÿ÷ÿ!÷\Öÿµöîÿð!ì!kµûÿöÿ¦÷Òøÿ0ökÒüÿÒôMµûÿkö‰×ÿÿÿøÿÒö—Öÿ‰÷MíÿÒ!ê0¦ðþÿöÿkø!øÿá÷Máùÿ\÷?Äùÿðö¦×ÿÿÿøÿ¦öÄÖÿM÷zìÿÒ!é0¦ÿÿöÿ0ø\øÿ¦÷Äøÿ‰÷¦÷ÿöÄ×ÿÿÿøÿzöÕÿöµëÿáMè\ð÷ÿð÷—øÿz÷÷ÿ‰÷á÷ÿöÖÿÿÿøÿM÷!ÖÿÄöðéÿÄMé?ðøÿµ÷Òøÿ?øM÷ÿ\ø0öÿ÷MÖÿÿÿøÿM÷MÖÿ—÷0æÿÄk!ë\øÿz÷øÿð÷z÷ÿ?øk÷ÿÄ÷‰ÖÿÿÿøÿöMÖÿ\÷kãÿµk!îÄùÿ?øMøÿµ÷µøÿð÷¦÷ÿ‰÷ÄÖÿÿÿøÿöMÖÿ!÷¦àÿÒ‰?ñ\úÿð÷‰øÿz÷ðøÿÄ÷Ò÷ÿ\÷ðÖÿÿÿøÿöM×ÿÒöÒÝÿð¦Môÿúÿµ÷Äøÿ?ø?÷ÿ‰ø!öÿ!ø?Õÿÿÿøÿö?×ÿ¦÷!ÙÿázöÿÒûÿ‰÷÷ÿ÷z÷ÿMø\÷ÿÒ÷zÕÿÿÿøÿõ×ÿk÷\×ÿÒ!øÿÄûÿMøMøÿÄ÷¦÷ÿ÷—÷ÿ—÷µÕÿÿÿøÿ0öáëÿÒáðÿ0÷—ÖÿÄøÿÄûÿ÷‰øÿ‰÷áøÿÄ÷Ò÷ÿ\÷ðÕÿÿÿøÿMö—ìÿkµñÿðöÄðÿz\ðéÿøÿÄüÿÄ÷µøÿMø0÷ÿ—ø!öÿ0ø?Ôÿÿÿøÿzö0îÿÒ?ðñÿµöïÿÿ0Òêÿøÿûÿ‰÷ðøÿ÷k÷ÿ\øM÷ÿá÷kÔÿÿÿøÿ¦õ—ñÿð‰þ?ðÿz÷MðÿÄý‰ðíÿµø?ûÿMø?øÿÄ÷¦÷ÿ!ø‰÷ÿ¦÷¦Ôÿÿÿøÿðô¦óÿ¦0ýzðÿ?÷‰ðÿ—ü!‰ððÿð0øzûÿ÷zøÿ‰÷áøÿÒ÷Ä÷ÿk÷áÔÿÿÿ÷ÿ\ôzðøÿá‰0û¦ðÿöµðÿkú!kÒóÿÄ?÷áüÿÒ÷µøÿ\ø!÷ÿ—÷öÿ0ø0Óÿÿÿ÷ÿÄò\‰ýĉz?øáñÿÄöððÿ0÷!\‰ÄÄüÿÒĉ?õkûÿ—÷ðøÿ!ø\÷ÿ\øM÷ÿá÷kÓÿÿÿöÿMâ0ðÿ‰÷?ðÿðÝ!ðûÿ\ø0øÿÒ÷—÷ÿ0ø‰÷ÿ¦÷¦Óÿÿÿöÿá!ãkðÿM÷zðÿµÞ!Òúÿ!økøÿ—÷Òøÿá÷µ÷ÿk÷ÒÓÿÿÿõÿµã¦ðÿ!÷¦ðÿ‰ß!ÒÿûÿÒ÷¦øÿ\ø!÷ÿ¦÷ð÷ÿ0ø!Òÿÿÿôÿ¦äáñÿÒöáðÿMà?Òÿÿûÿ—÷áøÿ!øM÷ÿkø?÷ÿá÷\ÒÿÿÿóÿÒ0è0¦ðÿ—÷0ïÿ0â!‰ðþÿûÿkø0øÿá÷‰÷ÿ0øz÷ÿ¦÷—Òÿÿÿòÿð‰ëkÄîÿk÷\îÿÄk!ç!‰ðüÿûÿ0økøÿ¦÷Äøÿá÷µ÷ÿk÷ÒÒÿÿÿðÿð‰0ñ\—ðìÿ0÷—ëÿÄzMí!kµùÿüÿá÷—øÿk÷÷ÿ¦÷á÷ÿ0ø!ÑÿÿÿíÿÒ—zM?ûM\‰ÄÂÿÄ—‰MM?ú?M\‰µÒöÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŸÿ\MMáçÿüÿÒÄÄðÉÿþÄÒÆÿóÿþÄð©ÿ‰MMµûÿÿ­ÿz÷0ÿá!æÿÿÿák!ýMÄÎÿÄ\û?¦ÉÿöÿÄ\ü?¦Æÿĉ‰Äêÿ0Òûÿÿ­ÿM÷\ÿ¦\æÿÿ—ø¦Ðÿ¦øzÉÿøÿðkù?ÆÿM¦ëÿá!úÿÿ­ÿý‰þ\þ‰Äÿk—æÿ‰þM¦Ä‰!!ðÒÿáþMµÄÄz0¦Éÿøÿ\þkµÄ—0zÆÿþáëÿ¦\úÿÿªÿáþÒüÿ0ĉ00¦üÿ¦M!\ÄøÿÄþkýÿ¦þ ¦ÿÿ¦MM¦¦?!‰üÿ¦M!\Äþÿ áMM\ák!?Òöÿ‰þûÿ‰ÒþÿÄ\!M¦ýÿ—MM¦þÿ\MMáÿÿ‰MMµázMµÿÿáz?0káþÿ¦M!\Äÿùÿ‰þ¦üÿk¦þÿ¦M!\Äýÿ‰MMµ¦?0¦ÿák!\ðþÿ¦MM¦¦?!‰þÿðþMþÿµMM‰ÿ‰?þÿM\þÿ¦M!\Äüÿ‰?\M—úÿÿªÿ¦!üÿáþ!üáÿÿÒ?úÄùÿMÿ?üÿðþ‰ÿÿMù¦ÿÿÒ?úÄÿÿ¦!ü0öÿ‰þkáùÿkúzþÿ ?Äÿÿá!þÿ0MþÄÿ‰úµÿÒ?úÄúÿð!zøÿð?úµþÿ0!üzükþÿMù¦ÿÿµMþÿk—ÿ0û\ÿÒ?úÄÿÿð?ùÒúÿÿªÿk\üÿ¦þ\‰Mþ Äÿð?—ððkkúÿáÿ¦ûÿþ‰ÿÿþkĵ!\ÿð?—ððkkÿÿk!k‰0þöÿáü?záýÿz!¦Ä\þðÿðþþÿ¦\ÿÿáúÿ‰!‰ÄµMðð?—ððkkúÿ¦þáøÿ ??µµ??ÿÿáþ?‰\þ!k‰!Mþÿþ kĵ!\ÿÿz‰þÿ#0ÒÿÄ?‰ÄÄáð?—ððkkÿÿ\!¦Äz!ùÿÿªÿ0—üÿk—ÿÿáþáÿ—‰þÿÄMúÿ¦ÿáüÿáþµÿÄ?þÿ‰Mÿ—‰þÿÄMÿÿ0Òÿÿµ0ÿÿ‰ûáÿÿµ!ûzÿÿáþÄÿÿðþÄÿµMþÿk—ÿÿ¦?—ÄĵáþÄýÿ¦ÿ—‰þÿÄMúÿz0øÿ¦!ðÿÿµþÿÿ¦\þÿþ Òÿÿ‰kÿÿÄ?þÿ‰Mÿÿ?Äÿÿá!þÿþáþÿ—‰þÿÄMÿÄ!Òÿÿ¦\ùÿÿ«ÿáþÒüÿ 0ÒÿÿÄ0ÿÿ?ø\úÿ‰ÿûÿ¦þáÿ‰zþÿ‰\ÿ?ø\ÿá!þÿ‰kÿÿMü0üÿ¦\!ý‰ÿ‰?ýÿþÄÿz—þÿ 0Òÿÿk—ýÿ‰\úÿ?ø\úÿMMøÿMzþÿÄþÿÿ k—ÿÿÒ!þÿ \¦ÿÿ‰zþÿ‰\ÿð!þÿ ¦\ÿÿÄ0ýÿ?ø\ÿ\zþÿk—ùÿÿ«ÿ¦!üÿá!þÿ—kÿÿþúMµúÿ‰ÿûÿ 0MÿÿMµþÿ\—ÿþúMµÿ¦\þÿ\¦ÿÿû‰¦ùÿ ¦!MÿM‰þÿÒþ ðÿ?Äÿÿá!þÿ0ÒýÿM‰úÿþúMµúÿMMøÿþÄþÿ—?ÿÿ0Òÿÿ¦\þÿ !áÿÿMµþÿ\—ÿµMþÿ k—ÿÿ‰kýÿþúMµÿ!µþÿ0Òùÿÿ«ÿk\üÿ¦\þÿ\¦ÿÿþðóÿ¦ÿ¦ýÿkþÄÿÿþðÿÿÒþáÿþðùÿk—þÿ!á÷ÿ\—ûÿ?\ÿM‰þÿk\ÿðþþÿ ¦\ÿÿá!üÿMzýÿÿðÿþðúÿúÿkþáýÿá\áÿþÄþÿ0—ÿá!þÿ k—ÿÿÒ0þÿþðÿÿÒþáÿz‰þÿ 0ÒÿÿM¦ýÿþðùÿþÄÿÿá!øÿÿ«ÿ0—üÿk—þÿ!áÿÿ??ÒÿÿÄzzùÿð!ÿ!‰Ä¦Mþ%‰ÿÿÄ0ðÿÄ0zÿÿ??ÒÿÿÄzzÿÿ0ÒÿÿÒ0öÿ00zÄĵkþ¦ÿk0áÿ—þÒÿÄþ —Ä—0—ÿÿ¦\üÿz!Äÿð¦!ðÿ??ÒÿÿÄzzÿúÿ¦þ0¦Äµk!0ÿÿ0\ððk0ðÿ¦\þÿ"0Òÿÿ—kÿÿÄ0ðÿÄ0zÿÿM?ĵk!þÿþµýÿ ??ÒÿÿÄzzÿÿþkÿáz\øÿÿ¬ÿáþÒüÿ 0ÒÿÿÒ0þÿÄù¦øÿ¦ø—þÿ‰ù?ðÿÿÄù¦ÿá!þÿ—k÷ÿá÷kÿÿÒù¦ÿÿÒøÒÿÿk—üÿá!û?ÿÿÄù¦ÿùÿMùkÿÿ—ú !Òÿÿk—ÿÿá!þÿ\¦ÿÿ‰ù?ðÿÿ\ù\þÿ!!M0áÿÄù¦ÿÿ\ù—øÿÿ¬ÿ¦!üÿá!þÿ—kýÿÄ?ü\á÷ÿÄMükÒýÿMMýzðýÿÄ?ü\áÿ¦\þÿ\¦÷ÿð‰?û?¦ýÿµ0ýMÄýÿkþM¦!þÿ0ÒûÿÒMý0¦þÿÄ?ü\áÿøÿ‰!ý0‰áþÿ‰!ýkáþÿ 0Òÿÿ¦\þÿ !áÿÿMMýzðþÿ Ò!!‰\—þÿ¦ý0þÿÄ?ü \áÿÿð?!‰0Òøÿÿ’ÿðÄÄÒôÿÿÿðÄÄÒúÿþÿðÿÄøÿðÄÄÒäÿýÄøÿáÄÄðúÿáÄáíÿðÄÄÒúÿðÄÄÒýÿöÿÒÄÄáùÿÒÄÄèÿþÿðÿÄùÿÿÄ÷ÿðþÄûÿðÄÄÒúÿÿÄòÿÿÿõÿÄ?‘ÿÏÿÄ?Ãÿÿÿõÿ‰z‘ÿÏÿ‰zÃÿÿÿõÿ¦‰‰Ò‘ÿÏÿ¦‰‰ÒÃÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŒÿáÄÄáúÿáÿðþÄðßÿþÄ×ÿÿÿóÿö‰Ä¦ÿMµúÿìÿµzþMk‰Òþÿ¦þðàÿÄ?×ÿÿÿôÿÒöĦÿþðúÿîÿÒ0ù—ÿÿz0ßÿ‰zóÿáþéÿÿÿôÿ¦öð§ÿÄ?ùÿïÿá!þÿM?þÄÿÿÒÄÄÒßÿMµóÿ¦Méÿÿÿðÿ‰?úÿ𵉉¦áüÿþÄÿá—‰Òþÿµ‰¦ðûÿĉ‰—Òúÿµ‰‰µðÄÄÒþÿþÄÿÿÒÄÿÿáÄþ‰—ÒüÿþÄÿá—‰Äýÿ‰zÿµ‰—áþÿÒÄÄáýÿþÄáûÿk0áþÿá‰þÿþÄþÿÒÄÄð𦉵þÿÒ‰—áýÿÒÄÄðþÿþÄþÿþðÿÿðÄ—þ‰ÄýÿÄ\kÄÄáþÿᦉ‰µðýÿðÄÄÒÿÿÄÒÿÿðÿMzûÿ‰!üzþÿÄ0kýÿµ0þ?ýÿµ0üMðþÿÒ?ý!\ÿÿÄ?¦0?ÿáúkþÿáþkýzþÿMk0þ!áÿÿkkþÿ—!áûÿM0ðüÿáÿÿÄ0þÿþz!þzÒMþ!áþÿ!áÿÿÄ?ÿÿÄ?þÿ0û?ðÿÄúµÿðkü!¦þÿ‰k‰!zÿÿðÿþµüÿkþM0þ¦ÿÿ‰òÄÿÿ¦þÿ?þkÿÿá!þM0þ—ÿÿ‰ûkÿµ!MM!þÒÿÿ¦þ0M!þðÿÿø‰ÿÿ ‰Mÿÿð!—úÿkþ0zÄûÿ‰kÿÿÄò‰ÿÿÒ0þÿ‰zÿÿ‰zÿÿðMM0þ—ÿ¦?þþMÿð?!M!þáÿÿMû¦ÿÿñÿÄþðýÿ¦!ÒÿÿM\ÿÿMzáÿ\0µÿÒþÄÿáþ¦ÿÿ‰!ÿÿM?ðÿÿ!ÒÿÿMþ?M?¦ÿÄÒþÿðþ ÄÿÿkzÿÿÒþÄÿÄ0µÿá!‰ÿÿ µ0ÿÿk?ùÿá!ü!‰ðþÿ M¦ÿÿ‰MÒÿ—þ ¦ðð0‰ÿÿ—kþÿ MµÿÿMµÿÿáµýÿ ?‰ÿÿ¦Mýÿ k?ðÿð!—ÿÿýÿM0áÿÿñÿ‰?üÿ0‰þÿ‰Mÿÿþ ðÿÿzzÿÿðþÿÿkMþÿÄþÿáþáÿÿÒ!þÿþðûÿᦉ\Mþþÿ0ÒþÿþÄÿ‰zþÿ!ÄÿÿÒþÿÄþÒøÿðz!ü?ðÿÿþ áÿÿMµÿÿµ?þÿ ?Äÿÿ\¦þÿþðÿÿþðþÿðµ‰kM!Äÿÿk‰þÿáþÄþÿM‰ÿÄ?üÿÿÿñÿMzýÿáþáþÿz\ÿÄ?þÿMµÿÿµMÿÿ0¦þÿµ!ÿ¦?þÿ —\ÿÿÄ?üÿÒMúMÿÿá!þÿðþðÿMµÿÿðþþÿÿþð?‰ôÿÄz!þ—ÿÄ0þÿþ ðÿÿ‰zÿÿðþþÿ!ðÿÿÄ?ÿÿÄ?ÿÿðkùþÿ0Äþÿ¦0ýÿ?—ÿ‰züÿÿÿñÿþµýÿÄþýÿ0¦ÿ‰zþÿþðÿÿz‰ÿÿþÄþÿkkÿ‰Mþÿ k—ÿÿ‰zýÿð!kÄðk‰ÿÿ¦\þÿ¦?ÿÿþðÿÿµMþÿÿ?k?øÿ¦ûÿðþ ‰ÿ‰kÿÿÄ?þÿMµÿÿµMÿÿÒ0þÿ‰zÿÿ‰zÿÿMMµá¦Mÿÿáþýÿ‰MþÿáþáÿMµüÿÿÿòÿÄþðýÿÄþáÿÿ—!ðÿMµÿÿÄ?þÿ?Äÿÿþ¦ÿÿÒþÄÿ‰!Òÿµ0ÄÿÿMµýÿ—?þÿ0Äÿÿk—ÿÿá!¦ÿÄ?þÿz‰þÿÿMüÄøÿMµýÿµþ µÿM¦ÿÿ‰zþÿþðÿÿz‰ÿÿ—?ÿÿð?µÿÿMµÿÒþ ðÿÿk‰ÿÿ¦Mýÿ‰0þÿ\Mÿÿþðüÿÿÿòÿ‰?ûÿ!0‰kþµÿÿþ ðÿÿ‰zÿÿðþþÿ \!zz!zÿÿÒøþÿþðýÿ‰!µµ\þþÿ0M‰z!Mÿÿ‰zþÿ?Äþÿÿ‰ýzøÿÄþ!MM0þ?ÿÿþ áÿÿMµÿÿÄ?þÿ?Äÿÿ‰þ?MýðÿÿþðÿÄþ—Äzþ Äÿÿ‰!µÄ¦ÿÒþ M‰M!áÿÄ?ûÿÿÿòÿMzûÿµû!¦ÿÿÄ?þÿ MµÿÿµMþÿá!ûzýÿ‰þ 0\\ÿÿÄ?üÿÒü?Mÿÿáù MðÿÿMµÿÿðþýÿÿ¦þ0ðøÿ¦øMðÿÄ0þÿþ ðÿÿ‰zÿÿðþþÿÄü M?ÿÿÄ?þÿ!ý?þþÿÄü‰ÿÿzû0Òÿÿ‰zûÿÿÿòÿþ‰Òúÿá‰MM\—ðþÿĉ‰µþÿþ‰ðÿÿĉ‰Äýÿð—\MM‰áûÿ ðÄÄÿM¦ÿÿĉ‰µûÿÄ\Mkáĉ‰Äÿÿ¦\¦\Mk¦ýÿþ‰ðÿÿ቉¦ýÿÿ—þÄöÿá¦zþM\‰Òþÿ ĉ‰¦ÿÿ቉—þÿ ¦‰‰Òÿÿ቉¦ýÿµ\Mzáĉ‰µÿÿĉ‰µþÿákM\Ä቉¦ýÿµ\MMkáþÿÄzMMk¦ýÿ¦‰‰Òûÿÿÿ½ÿk‰Äĵ\0éÿk—êÿá!z’ÿÿÿò¾ÿú!Òéÿ0ÒêÿM!ð’ÿÿ›ÿöòÿÿöÊÿáM!þM‰ðéÿá!êÿ—þµ‘ÿÿ£ÿùçÿõÿù•ÿÿÿ©ÿûßÿíÿû›ÿÿÿ®ÿüÙÿçÿü ÿÿÿ³ÿüÔÿâÿü¥ÿÿÿ·ÿýÏÿÝÿý©ÿÿÿºÿþËÿÙÿþ¬ÿÿÿ½ÿþÈÿÖÿþ¯ÿÿÿÀÿþÅÿÓÿþ²ÿÿÿÃÿþÂÿÐÿþµÿÿÿÆÿþ¿ÿÍÿþ¸ÿÿÿÈÿÿ¼ÿÊÿÿºÿÿÿÊÿÿºÿÈÿÿ¼ÿÿÿÍÿþ¸ÿÆÿþ¿ÿÿÿÏÿÿµÿÃÿÿÁÿÿÿÑÿÿ³ÿÁÿÿÃÿÿÿÔÿþ±ÿ¿ÿþÆÿÿÿÖÿÿ®ÿ¼ÿÿÈÿÿÿØÿÿ¬ÿºÿÿÊÿÿÿÚÿÿªÿ¸ÿÿÌÿÿÿÜÿÿ¨ÿ¶ÿÿÎÿÿÿÞÿÿ¦ÿ´ÿÿÐÿÿÿàÿÿ¤ÿ²ÿÿÒÿÿÿáÿ¢ÿ°ÿÓÿÿÿãÿÿ¡ÿ¯ÿÿÕÿÿÿåÿÿŸÿ­ÿÿ×ÿÿÿæÿÿ«ÿØÿÿÿèÿÿœÿªÿÿÚÿÿÿéÿšÿ¨ÿÛÿÿÿëÿÿ™ÿ§ÿÿÝÿÿÿíÿÿ—ÿ¥ÿÿßÿÿÿîÿ•ÿ£ÿàÿÿÿðÿÿ”ÿ¢ÿÿâÿÿÿñÿ’ÿ ÿãÿÿÿòÿ‘ÿŸÿäÿÿÿôÿÿÿžÿÿæÿÿÿõÿŽÿœÿçÿÿÿöÿÿ›ÿèÿÿÿøÿÿŒÿšÿÿêÿÿÿùÿŠÿ˜ÿëÿÿÿúÿ‰ÿ—ÿìÿÿÿûÿˆÿ–ÿíÿÿÿüÿ‡ÿ•ÿîÿÿÿýÿ†ÿ”ÿïÿÿÿþÿ…ÿ“ÿðÿÿÿÿÿ„ÿ’ÿñÿÿÿÿƒÿ‘ÿòÿÿÿ‚ÿÿóÿÿ‚ÿÿÿôÿÿƒÿÿÿŽÿõÿÿ„ÿÿÿÿÿöÿÿ…ÿþÿÿŒÿ÷ÿÿ†ÿýÿÿ‹ÿøÿÿ‡ÿüÿÿŠÿùÿÿˆÿûÿÿ‰ÿúÿÿ‰ÿúÿÿˆÿûÿÿÿýùÿÿ‡ÿüÿÿÿýùÿÿ†ÿýÿÿÿøþÿÿ…ÿþÿÿÿÿ÷‚ÿ„ÿÿÿÿŽÿÿÿ÷û‡ÿƒÿÿÿÿþÿ÷öŒÿ‚ÿÿÿüÿøòÿÿŽÿ‘ÿûÿøí•ÿÿÿÿ’ÿúÿøèšÿÿÿÿ’ÿùÿùäžÿÿÿÿÿ“ÿøÿùߣÿÿþÿ‘ÿ”ÿ÷ÿùÚ¨ÿÿýÿ’ÿ•ÿõÿúÖ¬ÿÿýÿ’ÿ•ÿõÿúѱÿÿüÿ“ÿ–ÿôÿú̶ÿÿûÿ”ÿ—ÿòÿûȺÿÿúÿ•ÿ˜ÿñÿûÿÿÿúÿ•ÿ˜ÿñÿû¾Äÿÿùÿ–ÿ™ÿïÿüºÈÿÿøÿ—ÿšÿîÿüµÍÿÿ÷ÿ˜ÿšÿîÿü°Òÿÿ÷ÿ˜ÿ›ÿìÿý¬Öÿÿöÿ™ÿ›ÿìÿý§Ûÿÿöÿ™ÿœÿëÿý¢àÿÿõÿšÿÿéÿþžäÿÿôÿ›ÿÿéÿþ™éÿÿôÿ›ÿžÿèÿþ”îÿÿóÿœÿŸÿçÿþòÿÿòÿÿŸÿæÿÿ‹÷ÿÿòÿÿ ÿåÿÿ†üÿÿñÿžÿ ÿåÿÿ‚ÿÿñÿžÿ¡ÿãÿý…ÿðÿŸÿ¢ÿâÿøŠÿðÿŸÿ¢ÿâÿôŽÿïÿ ÿ£ÿàÿï“ÿïÿ ÿ£ÿàÿê˜ÿîÿ¡ÿ¤ÿßÿæœÿîÿ¡ÿ¤ÿßÿÿ‚á¡ÿíÿ¢ÿ¥ÿÞÿÿ‚ܦÿíÿ¢ÿ¥ÿÞÿÿ‚تÿìÿ£ÿ¦ÿÝÿÿÿƒÓ¯ÿìÿ£ÿ¦ÿÝÿÿÿƒÎ´ÿëÿ¤ÿ§ÿÜÿÿÿƒÊ¸ÿëÿ¤ÿ§ÿÜÿþÿ„Žÿêÿ¥ÿ¨ÿÛÿþÿ„ÀÂÿêÿ¥ÿ¨ÿÛÿþÿ„¼Æÿéÿ¦ÿ¨ÿÛÿýÿ…·Ëÿéÿ¦ÿ©ÿÚÿýÿ…²Ðÿèÿ§ÿ©ÿÚÿýÿ…®Ôÿèÿ§ÿªÿÙÿüÿ†©Ùÿçÿ¨ÿªÿÙÿüÿ†¤Þÿçÿ¨ÿ«ÿØÿüÿ† âÿæÿ©ÿ«ÿØÿûÿ‡›çÿæÿ©ÿ«ÿØÿûÿ‡–ìÿæÿ©ÿ¬ÿ×ÿûÿ‡’ðÿåÿªÿ¬ÿ×ÿúÿˆõÿåÿªÿ­ÿÖÿúÿˆˆúÿäÿ«ÿ­ÿÖÿúÿˆ„þÿäÿ«ÿ®ÿÕÿùÿ‰ÿåÿ¬ÿ®ÿÕÿùÿ‰úêÿ¬ÿ®ÿÕÿùÿ‰öîÿ¬ÿ¯ÿÔÿøÿŠñòÿ­ÿ¯ÿÔÿøÿŠì÷ÿ­ÿ¯ÿÔÿøÿŠèûÿ­ÿ°ÿÓÿ÷ÿ‹ãÿÿ®ÿ°ÿÓÿ÷ÿ‹à®ÿ°ÿÓÿ÷ÿ‹ß¯ÿ±ÿÒÿöÿŒß¯ÿ±ÿÒÿöÿŒß¯ÿ±ÿÒÿöÿŒÞ°ÿ²ÿÑÿõÿÞ°ÿ²ÿÑÿõÿÞ°ÿ²ÿÑÿõÿÞ°ÿ³ÿÐÿôÿŽÝ±ÿ³ÿÐÿôÿŽÝ±ÿ³ÿÐÿôÿŽÝ±ÿ³ÿÐÿôÿŽÝ±ÿ´ÿÏÿóÿܲÿ´ÿÏÿóÿܲÿ´ÿÏÿóÿܲÿ´ÿÏÿòÿܲÿ´ÿÏÿòÿÛ³ÿµÿÎÿòÿÛ³ÿµÿÎÿñÿ‘Û³ÿµÿÎÿñÿ‘Û³ÿµÿÎÿñÿ‘Û³ÿµÿÎÿðÿ’Ú´ÿ¶ÿÍÿðÿ’Ú´ÿ¶ÿÍÿðÿ’Ú´ÿ¶ÿÍÿïÿ“Ú´ÿ¶ÿÍÿïÿ“Ú´ÿ¶ÿÍÿïÿ“Ùµÿ¶ÿÍÿîÿ”Ùµÿ·ÿÌÿîÿ”Ùµÿ·ÿÌÿîÿ”Ùµÿ·ÿÌÿíÿ•Ùµÿ·ÿÌÿíÿ•ضÿ·ÿÌÿíÿ•ضÿ·ÿÌÿìÿ–ضÿ·ÿÌÿìÿ–ضÿ·ÿÌÿìÿ–ضÿ¸ÿËÿëÿ—ضÿ¸ÿËÿëÿ—ضÿ¸ÿËÿëÿ—×·ÿ¸ÿËÿêÿ˜×·ÿ¸ÿËÿêÿ˜×·ÿ¸ÿËÿêÿ˜×·ÿ¸ÿËÿéÿ™×·ÿ¸ÿËÿéÿ™×·ÿ¸ÿËÿéÿ™×·ÿ¸ÿËÿèÿš×·ÿ¸ÿËÿèÿš×·ÿ¹ÿÊÿèÿš×·ÿ¹ÿÊÿçÿ›×·ÿ¹ÿÊÿçÿ›×·ÿ¹ÿÊÿçÿ›×·ÿ¹ÿÊÿæÿœ×·ÿ¹ÿÊÿæÿœ×·ÿ¹ÿÊÿæÿœ×·ÿ¹ÿÊÿåÿ×·ÿ¹ÿÊÿåÿ×·ÿ¹ÿÊÿåÿ×·ÿ¹ÿÊÿäÿž×·ÿ¹ÿÊÿäÿž×·ÿ¹ÿÊÿäÿž×·ÿ¹ÿÊÿäÿž×·ÿ¹ÿÊÿãÿŸ×·ÿ¹ÿÊÿãÿŸ×·ÿ¸ÿËÿãÿŸ×·ÿ¸ÿËÿâÿ ×·ÿ¸ÿËÿâÿ ×·ÿ¸ÿËÿâÿ ×·ÿ¸ÿËÿáÿ¡×·ÿ¸ÿËÿáÿ¡×·ÿ¸ÿËÿáÿ¡×·ÿ¸ÿËÿàÿ¢×·ÿ¸ÿËÿàÿ¢×·ÿ¸ÿËÿàÿ¢×·ÿ¸ÿËÿßÿ£×·ÿ·ÿÌÿßÿ£×·ÿ·ÿÌÿßÿ£×·ÿ·ÿÌÿÞÿ¤Ø¶ÿ·ÿÌÿÞÿ¤Ø¶ÿ·ÿÌÿÞÿ¤Ø¶ÿ·ÿÌÿÝÿ¥Ø¶ÿ·ÿÌÿÝÿ¥Ø¶ÿ·ÿÌÿÝÿ¥Ùµÿ¶ÿÍÿÜÿ¦Ùµÿ¶ÿÍÿÜÿ¦Ùµÿ¶ÿÍÿÜÿ¦Ùµÿ¶ÿÍÿÛÿ§Ùµÿ¶ÿÍÿÛÿ§Ú´ÿ¶ÿÍÿÛÿ§Ú´ÿµÿÎÿÚÿ¨Ú´ÿµÿÎÿÚÿ¨Ú´ÿµÿÎÿÚÿ¨Ú´ÿµÿÎÿÙÿ©Û³ÿµÿÎÿÙÿ©Û³ÿ´ÿÏÿÙÿ©Û³ÿ´ÿÏÿØÿªÛ³ÿ´ÿÏÿØÿªÜ²ÿ´ÿÏÿØÿªÜ²ÿ´ÿÏÿ×ÿ«Ü²ÿ³ÿÐÿ×ÿ«Ü²ÿ³ÿÐÿ×ÿ«Ý±ÿ³ÿÐÿÖÿ¬Ý±ÿ³ÿÐÿÖÿ¬Ý±ÿ²ÿÑÿÖÿ¬Ý±ÿ²ÿÑÿÕÿ­Þ°ÿ²ÿÑÿÕÿ­Þ°ÿ±ÿÒÿÕÿ­Þ°ÿ±ÿÒÿÕÿ­ß¯ÿ±ÿÒÿÔÿ®ß¯ÿ°ÿÓÿÔÿ®ß¯ÿ°ÿÓÿÔÿ®à®ÿ°ÿÓÿÓÿ¯à®ÿ¯ÿÔÿÓÿ¯à®ÿ¯ÿÔÿÓÿ¯á­ÿ¯ÿÔÿÒÿ°á­ÿ®ÿÕÿÒÿ°á­ÿ®ÿÕÿÒÿ°â¬ÿ®ÿÕÿÑÿ±â¬ÿ­ÿÖÿÑÿ±â¬ÿ­ÿÖÿÑÿ±ã«ÿ¬ÿ×ÿÐÿ²ã«ÿ¬ÿ×ÿÐÿ²ã«ÿ«ÿØÿÐÿ²äªÿ«ÿØÿÏÿ³äªÿ«ÿØÿÏÿ³äªÿªÿÙÿÏÿ³å©ÿªÿÙÿÎÿ´å©ÿ©ÿÚÿÎÿ´æ¨ÿ©ÿÚÿÎÿ´æ¨ÿ¨ÿÛÿÍÿµç§ÿ¨ÿÛÿÍÿµç§ÿ¨ÿÛÿÍÿµç§ÿ§ÿÜÿÌÿ¶è¦ÿ§ÿÜÿÌÿ¶è¦ÿ¦ÿÝÿÌÿ¶é¥ÿ¦ÿÝÿËÿ·é¥ÿ¥ÿÞÿËÿ·ê¤ÿ¥ÿÞÿËÿ·ê¤ÿ¤ÿßÿÊÿ¸ë£ÿ¤ÿßÿÊÿ¸ë£ÿ£ÿàÿÊÿ¸ì¢ÿ£ÿàÿÉÿ¹ì¢ÿ¢ÿáÿÉÿ¹í¡ÿ¢ÿáÿÉÿ¹î ÿ¡ÿâÿÈÿºî ÿ ÿãÿÈÿºïŸÿ ÿãÿÈÿºðžÿŸÿäÿÇÿ»ðžÿŸÿäÿÇÿ»ñÿžÿåÿÇÿ»ñÿÿæÿÆÿ¼òœÿÿæÿÆÿ¼ó›ÿœÿçÿÆÿ¼ó›ÿ›ÿèÿÅÿ½ôšÿ›ÿèÿÅÿ½õ™ÿšÿéÿÅÿ½õ™ÿšÿéÿÅÿ½ö˜ÿ™ÿêÿÄÿ¾÷—ÿ˜ÿëÿÄÿ¾ø–ÿ˜ÿëÿÄÿ¾ø–ÿ—ÿìÿÃÿ¿ù•ÿ–ÿíÿÃÿ¿ú”ÿ•ÿîÿÃÿ¿ú”ÿ•ÿîÿÂÿÀû“ÿ”ÿïÿÂÿÀü’ÿ“ÿðÿÂÿÀý‘ÿ’ÿñÿÁÿÁý‘ÿ’ÿñÿÁÿÁþÿ‘ÿòÿÁÿÁÿÿÿóÿÀÿÂŽÿÿôÿÀÿÂŽÿŽÿõÿÀÿÂÿÿöÿ¿ÿÂÿÿŒÿ÷ÿ¿ÿÃÿÿÿ‹ÿøÿ¿ÿÃÿÿÿŠÿùÿ¾ÿÄ„þÿÿ‰ÿúÿ¾ÿÄ…ýÿÿˆÿûÿ¾ÿĆüÿÿ‡ÿüÿ½ÿŇûÿÿ†ÿýÿ½ÿňúÿÿ…ÿþÿ½ÿʼnùÿÿ„ÿÿÿ¼ÿÆŠøÿÿƒÿÿ¼ÿÆ‹÷ÿÿ‚ÿ¼ÿÆŒöÿÿÿ¼ÿÇõÿÿÿÿ½ÿÇŽôÿÿÿÿÿ¾ÿÇóÿÿÿþÿ¾ÿÈòÿÿÿýÿ¿ÿÈ‘ñÿÿÿüÿÀÿÈ“ïÿÿÿûÿÀÿÉ”îÿÿÿúÿÁÿÉ•íÿÿÿùÿÿÃÿÉ–ìÿÿÿ÷ÿÃÿÊ—ëÿÿÿöÿÄÿÊ™éÿÿÿõÿÿÆÿÊšèÿÿÿóÿÆÿË›çÿÿÿòÿÇÿËåÿÿÿñÿÿÉÿËžäÿÿÿïÿÉÿÌ âÿÿÿîÿÊÿÌ¡áÿÿÿíÿÿÌÿÌ£ßÿÿÿëÿÿÍÿͤÞÿÿÿéÿÎÿͦÜÿÿÿèÿÿÐÿͧÛÿÿÿæÿÑÿÍ©ÙÿÿÿåÿÿÒÿΫ×ÿÿÿãÿÿÔÿάÖÿÿÿáÿÿÖÿήÔÿÿÿßÿÿ×ÿϰÒÿÿÿÝÿÿÙÿϲÐÿÿÿÛÿÿÛÿϳÏÿÿÿÙÿÿÜÿеÍÿÿÿ×ÿÿÞÿзËÿÿÿÕÿÿàÿйÉÿÿÿÓÿÿáÿÑ»ÇÿÿÿÑÿÿãÿѽÅÿÿÿÏÿÿåÿÑ¿ÃÿÿÿÍÿþçÿÒÁÁÿÿÿÊÿÿéÿÒÿÿÿÿÈÿÿëÿÒÆ¼ÿÿÿÆÿþíÿÓɹÿÿÿÃÿþðÿÓË·ÿÿÿÀÿþóÿÓδÿÿÿ½ÿþõÿÔѱÿÿÿºÿþøÿÔÕ­ÿÿÿ·ÿýüÿÔÙ©ÿÿÿ³ÿüÿÕܦÿÿÿ®ÿÔà¢ÿÿÿ­ÿÕåÿÿÿ¨ÿÚê˜ÿÿÿ£ÿßï“ÿÿÿžÿä÷‹ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÑÿþMÒµÿÝÿÒþM©ÿÿÀÿòËËØòÿÿËåäÿ÷ÿÄþÄþÿzþ¦èÿþÄìÿ‰þkýÿÄýñÿú0káòÿÝÿÄþÊÿÄþ0ýÿð!þÄøÿMûM—ðÿW0òûÿ¾0‹åÿË0˜âÿËWý0J¾öÿ±=þ0dòóÿòW0Ëøÿ÷ÿÄþÄÿÿ¦þ‰çÿþMÒìÿ‰ýáþÿkýñÿø!áóÿÝÿÄþÊÿÄý¦þÿ¦ýÄøÿMù!µŽÿ¤0±ûÿ~0ØåÿØd±âÿ˜=‹Ëˤ=0åøÿË0W¾Ë˜0dóÿq00Ëøÿ÷ÿÄþÄÿÒ!kÍÿ‰ý‰ÿÿáüñÿþM‰‰MþkóÿÝÿÄþÊÿÄýMþÿ0ýÄøÿM0‰‰\ÿÄÿå0düÿò=JÂÿØòýÿ±0˜øÿq0åþÿ~0Øõÿ~=q0Ëøÿ÷ÿÄþÄð??ûÿ ¦M!\ÄÿÿkMM—þÿðþMðÿþM ÒÿÿzMM¦µ?!z÷ÿ‰ý0ÿÿ‰üñÿþ‰þÿ?MýÿÄ\!M¦þÿÿÿ¦Mþ?kÒþÿák0?‰ðþÿþMÒ‰00¦þÿÄþák!?Òýÿð‰?0káþÿzMM¦ázM¦ÿÿµ?\zMMzòÿÄüáÿÄüÄøÿMMþÿÒ!ÿ0Žÿq0åýÿ±0¤þÿ¾W00qËþÿØd±å‹d‹ÿå~=0=q¾ÿÿØd±þÿò~=0=~òþÿ±dؘJ0J±ñÿ¾0¤øÿ0dýÿË0˜öÿ¤=ؘ0Ëøÿ÷ÿÄþÄ\0ðýÿð?úµÿ‰0þÿ¦MÿÿþÄÿÿM!ü‰øÿ ‰!¦ÿ0!þñÿþ‰þÿ?\þÿ¦úkÿÿÿ?ú‰ÿÿ¦ú?þÿþ!üÄÿÿÄþ!ý!áÿÿÒ!û !áÿÿMM!‰ÿ¦ùMòÿÄþ!kÿk!þÄøÿMMýÿ¦þÒÿ±0¤ýÿq0åÿÿ3‹0‹Ë¾W0ËÿÿË0d=00då==~˜~JdÿÿË0˜ÿÿòW0~˜~0Wòÿÿ˜0=J‹˜=0ËóÿåWWòùÿå0‹üÿ0~÷ÿ±0±ÿ˜0Ëøÿ÷ÿÄþM!Òüÿ z?µÄ\0ÿáþµÿÿ\¦ÿÿþ ÄÿÿM!k‰!0øÿ ‰M?M¦zþñÿþkÄÄ\þµÿÿáþ‰Ä¦!¦ÿ¦0¦ÄÄz0‰ÿá!‰Ä¦!¦ÿÿþ0zzþkÿÿÄþ?‰kþkÿÿ?\ĵ?kÿÿMþ0MM‰ð!?µÄ\MòÿÄþz!ÒzþÄøÿMMýÿðþ‰ÿò=Wþÿò0dÿÿØ0˜þÿò0qÿÿË00˜òÿå¤0¾ýÿ ËÿÿË0˜ÿÿ˜0¤þÿ¤0˜ÿÿ˜0‹þÿË0~õÿdW=~òøÿË0˜üÿ0døÿØ0±ÿÿ˜0Ëøÿ÷ÿÄû!áüÿþáÿÿðþ ÒÿMkÿð!þÿþ ÄÿÿM‰ÿÿ¦þøÿ ‰M¦0k‰þñÿøzþÿz?þÿz?ÿ‰!¦Òþÿáÿ‰kþÿz\ÿÿþ ÄÿÿkMÿÿÄþþÿz0ÿÄ0þÿ µ!ÿÿM‰ýÿ ¦!ðÿÿ‰MòÿÄþá00ÄþÄøÿMMüÿþ‰Žÿ~0Øÿÿ¤0±ÿÿ‹0òýÿd0ÿÿË0˜ýÿ¤0‹úÿË0˜ÿÿW=üÿ=Wÿÿ˜0Ëýÿ0dõÿÿd=J¾øÿË0˜üÿ0dùÿØ=~þÿ˜0Ëøÿ÷ÿÄú?ýÿÄ÷ Äÿ¦!ÿ—kþÿþ ÄÿÿM‰ÿÿÄþøÿ‰Mÿ!þÒ‰þñÿù—ýÿM‰þÿÄþÿÒû?—ÿÿMøMÿÿþ Äÿÿ‰MÿÿÄþþÿÄþÿ‰÷ÿÿM‰ýÿ‰Mþÿ‰MòÿÄþÿ\þ—ÄþÄøÿMMýÿðþ—Žÿ¾0‹ÿÿW0òÿÿdù0ÿÿË0˜ýÿò=0=q˜ØþÿË0˜ÿÿ0düÿd0ÿÿ˜0Ëýÿ0dòÿ~0¾ùÿË0˜üÿ0dùÿdWýË~0¤Ëòúÿ÷ÿÄþ—MþzþÿÄþúM Òÿÿ!µ?Òþÿþ ÄÿÿM‰ÿÿÄþøÿ ‰Mÿz?ÿ‰þñÿþk—þ!ðþÿM‰þÿÄþÿÿµ0ûzÿM0ûMzÿÿþ Äÿÿ‰MÿÿÄþþÿÄþÿ‰!úMÿÿM‰ýÿ‰Mþÿ‰MòÿÄþÿµþðÄþÄøÿMMýÿ¦þÒÿÿJÿå0~ÿÿÿd0úËÿÿË0˜üÿò¤d=00~ÿÿË0˜ÿÿ0düÿd0ÿÿ˜0Ëýÿ0dòÿò0qùÿå0˜ýÿò0~ùÿdø0Ëúÿ÷ÿÄþÄð!þµÿÿáþáøÿzM?ýÿþ ÄÿÿM‰ÿÿÄþøÿ ‰Mÿá¦ÿ‰þþÿ¦‰‰Äøÿþ‰ÿzþMþÿk\þÿ¦0ÿáÿÿÒ¦z0þÿkkøÿþ Äÿÿ‰MÿÿÄþþÿ—?ÿ¦0øÿM‰ýÿµþÒÿÿzMþÿ¦‰‰µùÿÄþÿÿ0kÿÄþÄÿÿĉ‰¦þÿMMþÿÒ!ÿ?þÿþ‰á“ÿ‹0ؘ0¾ÿÿÿ~0ØùÿË0˜øÿ ØW0ØÿË0˜ÿÿJJüÿÿJÿÿ˜0Ëýÿ0dñÿ0døÿ0dýÿË0˜ùÿØüË~0¤Ëòúÿ÷ÿÄþÄÿÄþ !ÒÿÿM?µÿÿá—0þÿáü¦ýÿþ ÄÿÿM‰ÿÿÄþøÿ‰Mûÿ‰þþÿM‰øÿþ‰ÿÿ?þzÿÿÄþÄÿá0‰ÿ ‰0¦áÿÿ¦!ÿÄþ‰áÿÿµk‰ÿÿþ Äÿÿ‰MÿÿÄþðÿÄ!‰ÿð!\ÒÿÿÒz\ÿÿM‰ýÿð!þM0þMþÿþÄùÿÄþûÿÄþÄÿÿ‰MþÿM0‰‰\!ÒþÿþÄ“ÿØ0~J=þÿÿ±0qüÿØÿÿË0˜ýÿØòýÿ ˜0ËÿË0˜ÿÿ~0ËþÿË0~ÿÿ˜0Ëýÿ0døÿËüÿ¤0‹þÿ±˜åþÿq0åþÿ~0Øþÿ±˜åùÿ˜0Ëøÿ÷ÿÄþÄÿÿ‰þ?ðÿÒ!ùýÿ?þ!ðýÿþ ÄÿÿM‰ÿÿÄþøÿ‰Mûÿ‰þþÿM‰øÿþ‰ÿÿá!þµÿÿkú?ðÿ‰ù‰ÿÿkù‰ÿÿþ Äÿÿ‰MÿÿÄù0ðÿÿ¦ùMÿÿM‰üÿ¦ü !MÿÿÄMøÿÄþûÿÄþÄÿÿ‰MþÿMù!ÄýÿþÄ’ÿW=0‹þÿÿÿ W0d¾Ë±ddÿÿË0˜ýÿ˜=‹Ëˤ=JÿÿË0˜ÿÿå==¤Ë±==åÿÿ˜0Ëýÿ0døÿ0W¤ËË‹0=òþÿd0ËþÿË0W¾Ë˜0dýÿd0Ëùÿ˜0Ëøÿ÷ÿÄþÄþÿMþkÿÿákü!kýÿ¦þküÿþ ÄÿÿM‰ÿÿÄþøÿ‰Mûÿ‰þþÿM‰øÿþ‰þÿµþ!Òÿÿ‰!ýkðÿÿÄ?ü0µýÿ¦0ü?Äÿÿþ Äÿÿ‰MÿÿÄþMþMÒýÿÄMü0—ÿÿM‰ûÿÄkM\¦‰Mÿÿ‰µøÿÄþûÿÄþÄÿÿ‰MþÿMü!M—ðüÿþÄ’ÿ¤00Øþÿÿÿò‹ý0J¤ÿÿË0˜ýÿËWý0dØÿÿË0˜þÿØJþ0JØþÿ˜0Ëýÿ0døÿ~=ý0dåýÿd0Ëýÿ±=þ0dòýÿd0Ëùÿ˜0ËøÿåÿÒÄÄá©ÿÒÄÄüÿþÿþÄáùÿðþÄëÿáÄáøÿþÄðôÿáðþÿ ð0zÿÿ?0ÖÿÿüÿÿËåôÿòËËåõÿØËØèÿåËËòòÿÿËåäÿÿ»ÿ‰0MMýáÿð¦Öÿÿÿÿ»ÿ‰û0µÿÿµ0Õÿÿÿÿ»ÿðÄ—þ‰ÄýÿáÄáÕÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿáÄÄÒáÿÒÄÄá³ÿöÿÒÄÄáÿÿÿ÷ÿ‰MáÿM‰îÿá‰þM‰áÍÿöÿM‰ÿÿÍÿ˜±Ãÿ÷ÿ‰MáÿM‰ðÿ ðz?M?zðÏÿöÿM‰·ÿþÄÞÿÿÞÿ˜0Ëóÿ0dÃÿ÷ÿ‰MáÿÒÄÄáñÿð?\áþÿð‰?ðÐÿöÿM‰·ÿþÄÞÿÿÞÿ˜0ËóÿËØÃÿ÷ÿ‰MþÿþÄÒýÿĉ‰—ÒþÿÒÄÄÒýÿÒÄÄáÿÒÄÄáÿÿáÄÄÒÿÒ‰‰Òüÿ \¦ÿð—‰Ä‰¦¦zþÿáÄÄÒÿÿÄÒþÿ𵉉¦áûÿᦉ‰—Äûÿĉ‰—ÒýÿáÄÄÒÿÒ‰‰ÒýÿM‰ÿµ‰—áûÿᦉ‰µðþÿðþÄÿÿÒÄþÿá—‰¦ðþÄðøÿþÄÿ𦉦ðûÿÒ—‰‰ÄþÿðÄþ—ÄÄàÿšÿËØýÿËåþÿåËòòËåþÿòËòÿÿÿØËÿåËòþÿåËýÿËØ÷ÿ¾˜˜¾ÿÿå~0¤ËËåÿÿò±˜˜ËýÿËØÿÿòËåÿ¾˜±òÿÿ¾˜˜åõÿò±˜˜ØýÿòËåÿòËØþÿؘ˜¾åËòùÿ÷ÿ‰Mÿÿ—!Òÿÿµ0üMðÿ—!ýÿ!ÒÿM‰ÿÿ‰?\ý¦þÿÄ\ÿÒ!ýMÿ\áÿÿ‰M¦!Mÿÿ¦!üzþÿðkû!þÿµ0üMðÿÿ‰?\ý¦þÿM\0þ!Òþÿðkü!¦ÿÿÄþÒ0ÿÿ¦ý!þÄøÿþz!þ?ðþÿÒMü0ÒÿÄúàÿšÿW0þÿË0~þÿd0òò0dþÿ˜0±ÿÿÿ0Wÿ¾0˜þÿd0åÿÿË0‹ùÿØWý0=ؘü0˜ÿ±=ý0=þÿ0dÿÿË0qJþ0JØdý0Ë÷ÿØ=ý0~þÿ Ë0˜‹00dÿÿ~û0Ëùÿ÷ÿ‰MÿÒþµÿÿÄþ?Mþkÿðþ¦ÿÿµ?ÿÿM‰ÿÿ‰ù!þÿkÒÿ!kÄzMÿµ—ÿÿ‰ûMÿµþ?MþzÿÿkþÿM0ÿÿÄþ?Mþkÿÿ‰ú!þÿMù0þÿM!M0þáÿÄúÿÄþ!M?þÄøÿø—ÿÿð!0M!0ÿÄúàÿšÿ‹0Ëÿÿ‹0=þÿ=WÿÿW0þÿW0qÿÿØ0‹ÿò0dÿÿò00¤ÿÿ¤0¾úÿòJ=¤ÿÿ¾dËå~0¤ËËåò0WØÿò¾dþÿ0dÿÿË00˜òÿ˜00qåÿË0døÿò==Ëÿò~0˜ÿÿË00=‹˜˜ÿ˜0~åÿØd0Ëùÿ÷ÿ‰Mð!—þÿ0—ÿÿÄþðÿ\\ÿÿk¦ÿÿM‰ÿÿ‰0Òÿ—þ#Äÿÿ00ÿµ!ÿÿÄMÿð\ÿÿ‰0—Äĵÿ0‰ÿÿÄþáÿþµþÿ Òkÿÿ0—ÿÿÄþðÿ‰0Òÿ—þ ÄÿÿM\áÿ—þÄÿ¦0ðÿÿMzÿÄþ ‰ÄĦÿ\?ðÿÿþÄøÿþ‰ðð0Mÿÿk\ÿÿð!µÿÿþÄÞÿšÿË0¤ÿÿJ~0¾ÿå0‹ÿÿ˜0Øÿå0~0òÿ±0¾ÿÿd=ÿÿ±=qWÿÿ~0òúÿ±0¤üÿòÿ˜0ËþÿË0‹ùÿ0dÿÿË0˜þÿò0dýÿW0øÿ¤0±ýÿJ=ÿÿË0dòýÿ=Jýÿ˜0Ëùÿ÷ÿ‰M?kþÿáþý‰þÄÿµþÿð!ðÿÿM‰ÿÿ‰MþÿþÄÿÿMÿ‰MÿÿÄMÿÿMÿÿ‰MýÿÒþáþÿ0—ÿ0þMz—áÿÿáþý‰þÄÿ‰MþÿþÄÿÿM‰þÿ0‰ÿkMþ‰MMÿÄþüÿþµþÿþÄøÿþ Äÿÿ‰Mÿÿ0kþ‰0‰ÿÿþÄÞÿ™ÿ0qÿØ0åJ~ÿ¾0ËÿÿË0¤ÿ¤Jå0±ÿ‹0þÿ ˜0Øÿq~±0åÿWdùÿq0åúÿ˜0Ëþÿò==‹Ëûÿ0dÿÿË0˜ýÿ0dýÿd0øÿq0òýÿ‹0ØÿË0˜ýÿØ0‹ýÿ˜0Ëùÿ÷ÿ‰ûzþÿÄ÷ Äÿÿ0¦¦kþÿ M‰ÿÿ‰MþÿþÄÿÿMÿ‰MÿÿÄMÿÿMÿÿ‰MýÿÄþýÿM‰ÿ¦úkÿÄ÷Äÿ‰MþÿþÄÿÿM‰þÿM‰ÿMøMÿÄþüÿþÄþÿþÄøÿþÄÿÿ‰Mÿÿ÷‰ÿÿþÄÞÿ™ÿ dJÿ‹Wÿ‹=ÿ˜0ýÿ0~ÿW‹ÿWqÿÿdþÿ Ë0±ò0¾ò0¤ÿ0˜ùÿd0ùÿ˜0Ëýÿ¾Jþ0W¾þÿ0dÿÿË0˜ýÿ0dýÿd0øÿd0üÿ˜0ËÿË0˜ýÿË0˜ýÿ˜0Ëùÿ÷ÿ‰þzþÄÿÿÄþúÄ ðÿÿ‰\\Äþÿ M‰ÿÿ‰MþÿþÄÿÿ?!ÿµ!ðÿÄMÿÄzÿÿ‰MýÿÄþðþÿM‰ÿÿázMü¦ÄþúÄðÿ‰MþÿþÄÿÿM‰þÿ?—ÿMkûÄÒÿÄþüÿ!¦þÿþÄøÿþÄÿÿ‰Mÿÿþ—ûÄáÿÿþÄÞÿ™ÿ ¤0åJ¤ÿØ0¾ddýÿqJå0Øÿ¤0ò0˜ýÿ =~±=ÿÿqWË0Ëùÿd0ùÿ˜0Ëûÿر~=0Ëÿÿ0dÿÿË0˜ýÿ0dýÿd0øÿd0üÿ˜0ËÿË0˜ýÿË0‹ýÿ˜0Ëùÿ÷ÿ‰?ÿz0ðÿÿ!—üÿ¦þÿáü0ýÿ M‰ÿÿ‰MþÿþÄÿÿkÒð!M‰0?Äkµÿÿ‰Müÿ!¦ÿÿáþÒÿkáþÿ Ò0‰ÿ!—üÿ¦ÿÿ‰Mþÿþ ÄÿÿM‰ÿÿÒþÒÿ—0ðýÿáÄÿÄþüÿ\!¦ÄzþÄÿÿ‰Mþÿþ Äÿÿ‰Mÿÿ\\üÿÄáÿÿþµÞÿ™ÿ Ø0‹0åÿÿJ~0˜ýÿ¤0‹Jÿÿå0~0Ëýÿ qJq~ÿÿ±0~0øÿ˜0¾úÿ˜0Ëøÿ ¾0˜ÿÿ0dÿÿË0˜ýÿ0dýÿd0øÿ˜0¾ýÿW0ÿÿË0˜üÿ0Jýÿ‹0Ëùÿ÷ÿ ‰Mÿð0\ÿÿ‰þ?‰‰k!ýÿ\ý—ýÿ M‰ÿÿ‰Mþÿþ ÄÿÿÒMÿÒ!?ý0þÿ‰Müÿ‰!z‰0MÿÿM‰‰z!Äÿ‰þ ?‰‰k!ÿÿ‰MþÿþÄÿÿM?‰z!Mÿÿð!!k‰‰?‰ÿÄþüÿÄøÄÿÿ‰Mþÿþ Äÿÿ‰MÿÿÄþ0z‰z0Äÿÿ!0‰\àÿ˜ÿ=0Wþÿ‹=0ØýÿØ00‹þÿW==üÿ ¤00¾ÿÿò0=qýÿÿ0þÿ å0Jåÿÿò˜Ëÿ¤0˜þÿË~åþÿ ¤0±ÿÿ0dÿÿË0˜ýÿ0dýÿd0ýÿÿ0þÿ å0Wòÿÿ±0~ÿÿË0˜üÿ‹0q˾~00Ëùÿ÷ÿ‰MÿÿÄþµÿÿzùýÿ¦ýðýÿ M‰ÿÿ‰MþÿþÄþÿzkÿðÄÒÿýÄáþÿ‰Mûÿkû?ðÿÿù‰þÿzùÿÿ‰MþÿþÄÿÿMú!áþÿÒ0ú‰ÿÄþûÿ¦!þzþÄÿÿ‰MþÿþÄÿÿ‰Mþÿ¦!úÄÿÿzüàÿ˜ÿq0¤þÿØ0=ûÿ=0Øþÿ¤0qüÿØ0=ýÿq0¤ýÿÿ0ýÿ±00dd00Ëÿò=0dd˜Ë00WdJ0Wþÿ0dÿÿË0˜ýÿ0dýÿd0ýÿÿ0ýÿ ±00dW0WòÿÿË0˜üÿòqþ0d~0Ëùÿ÷ÿĉ‰¦þÿ¦‰‰—þÿá‰\MMk—áüÿþ‰¦üÿ ¦‰‰Äÿÿĉ‰¦þÿþ‰áþÿ ðMMµðÿÿĵûÿĉ‰¦úÿÄzMMk¦ýÿá—kþM‰áüÿ á‰\MMk—áÿÿĉ‰¦þÿþ‰ áÿÿ¦‰‰µ—MM—ðûÿ¦zþM‰µÿÿáþ‰ùÿÿÄðáþÒÿÿĉ‰¦þÿþ‰áÿÿĉ‰¦ýÿð—kMM\‰Òýÿ¦\MMzàÿ˜ÿ˘åýÿ˜±ûÿ±˜ýÿå˜Ëûÿ˜±ýÿ˘åýÿÿ˜üÿå‹dd‹Øþÿ Ø~dqËÿؘddq±ýÿ˜±ÿÿå˜Ëýÿ˜±ýÿ±˜ýÿÿ˜üÿË~dd¤òþÿå˜ËúÿåËåÿ˜0Øùÿ½ÿ‰!üMÍÿÔÿ\‰ÄĦ?0·ÿÿ™ÿòJ=øÿ»ÿÄþ‰µÒÍÿÔÿùµ·ÿÿžÿËW~˜˜J0±øÿÿÔÿ\?þ0ká¶ÿÿžÿØdþ0d¾÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñ`÷@ã Pü¿Ÿp@¾ @Púÿ@0ýñß÷ÿ@æPŸßóÿߟ`ùÜ¿¯öP¿òÿ߯@ó öÿé ïìÿŸ@ûßÜÿ¯ø@¯ëÿÿÿ¿p ÷`÷ÿÏœë Ÿçÿ¿@þÛÿú@ßéÿüÿø÷ÿœìïåÿŸþPÛÿ@ü¯çÿüÿøÏ÷ÿ`œî Ïãÿ`þÛÿü0ßæÿüÿPùöÿ œï@ïâÿ þÏÜÿ¿ý0ïåÿüÿù@÷ÿß›ð`áÿßýÛÿþïäÿýÿßø@÷`›ñ`òÿß¿ý¿ï÷ÿŸþ@ÛÿPþ¿ôÿ￟ýŸ¿ïúÿýÿ¯†ò0ôÿï ù0ïúÿ`þ@ôß÷ÿ¿ô@õÿŸ0÷ `¯ýÿýÿp†óïõÿŸõ ¯ûÿ ðöÿPñ¯÷ÿï0òpßÿýÿ@†ó¿õÿ`ñ`ïþÿßð0öÿ òöÿ@îïþÿÒ@¯¿¿¯0ô `þ¿Ÿp Òôpöÿï0ï0ïÿÿŸðp÷ÿßñ@÷ÿßì Ïÿ¿ø`÷¿÷÷¿þïùÿ¿0ø`¿øÿ¿0Ôõïöÿ`í0ïÿ`ð¯÷ÿŸñp÷ÿ¿ìÿpPø¯øÿßø0÷ÿppïöÿï`û`ßôÿ`ÕõŸöÿë0 ðß÷ÿpñ÷ÿßìôïøÿŸøp÷ÿÿ0Ïóÿï0þ0¿òÿï0Öö öÿß× öÿ0ñöÿpíõ0÷ÿ`ø¯øÿïðÿ¿ïÿ¿Öööÿ@×`÷ÿïðpõÿ¯ ïõp÷ÿ øïäÿPÏíÿ ×öï÷ÿ¿ÖŸ÷ÿ¿ð@óÿ¯`òõŸøÿßø ÍÿP×÷Pöÿ`ÖÏ÷ÿïïñÿ¯p õõßøÿŸø`Íÿ×÷Ÿ÷ÿïÖöÿ@ïîÿߟPøö ÷ÿpøŸôÿÏ¿ñÿߟŸßõÿ×÷ï÷ÿ¯ÖPöÿîïìÿïŸPûö`÷ÿ0øßöÿŸ0ü0ôÿ¿PûŸöÿ×ø0öÿpÖ÷ÿ¿í0ïêÿß`þöŸøÿïø ÷ÿ¿ ù¯÷ÿÏ@ùöÿ`×ø`öÿ@Ö¿÷ÿì0ïéÿß`ößøÿ¯ø`÷ÿ@ø÷ÿ`÷öÿ@×øöÿÕöÿPë ¿èÿ¯÷÷ÿpø÷ÿ÷÷ÿ ÷öÿÖø¿÷ÿïÖ@öÿé@¿éÿÏøP÷ÿ0øÏøÿ¿÷¯øÿßö÷ÿ¿Öø¿÷ÿ¿Öp÷ÿßæ@Ÿïëÿ¯ø÷ÿø÷ÿ÷ÏøÿŸ÷@÷ÿÖøöÿ¿Ö¯÷ÿŸãPŸïîÿÿ@ùÏøÿ¿øP÷ÿPø÷ÿ`÷÷ÿ@Öøöÿ¿Öï÷ÿ`à0Ïñÿÿ¯ú÷ÿø÷ÿø@÷ÿ0÷¯÷ÿÖøöÿ¿×0öÿ0Ý`¿ôÿÿÿúP÷ÿ@øÏøÿÏ÷øÿïöïøÿÏÕøöÿÏ×`÷ÿïÙ öÿÿÿ0û÷ÿ÷÷ÿ÷¿øÿ¯÷0÷ÿÕøõÿן÷ÿ¯×0ïøÿÿÿ@û¿øÿ¿ø@÷ÿ`÷÷ÿp÷p÷ÿPÕøßöÿ ë0 ðß÷ÿpÖ@øÿÿÿ@û÷ÿø÷ÿ ø@÷ÿ0÷¯÷ÿÕø¿öÿpìŸÿPñöÿ@ð¯éøÿÿÿ@ü@÷ÿPø¿øÿß÷pøÿïößøÿÏÔøöÿßî0ÏÿÿñPöÿïÿÿß0êøÿÿÿû÷ÿø÷ÿŸ÷¯øÿ¿÷ ÷ÿŸÔø`õÿpñþÿÏð÷ÿ¿ð@ýÿíPøÿÿÏû¿øÿÏø@÷ÿ`÷ïøÿ÷`÷ÿ`Ôøôÿ`ó`ßýÿðÏ÷ÿðpüÿïðßøÿÿû÷ÿø÷ÿ ø0÷ÿ@÷Ÿ÷ÿ Ô÷¯ôÿø ßûÿ`ðöÿPðŸúÿïŸ0ó@Ï÷ÿÿ ü0÷ÿPø¯øÿï÷p÷ÿößøÿßÓ÷@òÿ¯ý@Ïøÿ ñ@öÿðß÷ÿï¯@@ü0@ÏõÿŸûp÷ÿøïøÿ¯÷¯øÿ¿÷ ÷ÿŸÓö¿âÿßð÷ÿÏðÝÿïû¯øÿßø0÷ÿp÷ßøÿ÷`÷ÿ`Óö ïãÿŸð¿÷ÿðPÞÿï0úïøÿŸøp÷ÿ0ø ÷ÿP÷Ÿ÷ÿ0ÓõPãÿ`ðï÷ÿ`ðßÿï0û0÷ÿ`ø¯øÿï÷`÷ÿ÷ßøÿïÒô`äÿ ñ0öÿ ð¿àÿÏ0ûp÷ÿ øïøÿ¿÷ŸøÿÏ÷ ÷ÿ¯Òó0ßèÿß`ðp÷ÿßïßâÿïþûŸøÿßø ÷ÿ÷ßøÿ÷`÷ÿpÒòëÿŸ@îŸ÷ÿ¯î@ŸïçÿïüûßøÿŸø`÷ÿ@ø ÷ÿP÷Ÿ÷ÿ0Òðßñÿ¯pìß÷ÿpë@¿íÿïŸPùü ÷ÿpøŸ÷ÿ÷`÷ÿ ÷ßøÿïÑí0p¿Ïûÿ¿¯@Â@p¿¿ÏúÿÏ¿¯P0öŸ¯¿¿ çü0@@Éþ@0Æóþ@©¿¿Pû­÷ÿß ÿÿïæÿ Ÿïýÿ¿@Î@¯ûÿÏ`Éö@¯üÿÏ`Æ@@êßÿÿ0û­¿÷ÿ¯`ÿÿ¯æpøÿ`Ð`øÿÉøŸùÿÏÆ¿ÿÿ`ë ÿÿïú­ýþÿ¯þ@Ÿÿÿpæþÿ¿`@ïÿÿïÒ þÿ¿P@@ßÿ`Éø¯þÿŸP@pßÿÆþÿ ë`ÿÿ¯úª þÿ0üßÿÿ@ßÿß`ü`¿ÿÿï¯@ø@þÿŸý`þÿ ``¿¿``Ïÿïü`¿ÿÿï¯@þ ¿¿¯ ŸïÿÏ0öþÿû0þ@¯ïÿÿ¿`ýp¿¿`þ¯¿¿ ¿¿P ¿P Ïÿÿߟ þ`¿ÿÿï¯@ùþÿ`üŸ`þ`¿ÿÿï¯@ý¿¿P`Ïÿß` Ÿïÿ¯þ`¿¿``Ïÿïþþ¿þP¿¿Ïþÿÿ¿¯þ`¿ÿÿï¯@üÏÿÿ¯¿ÿÿpúª`ÿÿïü þÿïüÿ 0Ïúÿ@ù¿ÿÿÏüþÿ¿ùÿ`0Ïúÿ@`ÿÿïüÿßöþÿŸ ùŸúÿþ Ïÿÿ@ ÿÿïþßÿÿ¿þÿ@úÿP0Ïúÿ@úïÿÿøÏúÿPþßÿÿïüÿüÿŸþ¿ùÿ`Pÿÿ¿þŸÿÿpßûÿ¯0Ïúÿ@Ïùÿ0úªŸÿÿ¯ü`þÿ¯¿þÿ @ÏÿÿpŸÿÿŸú ÿÿÿ`ûþÿþÿŸ@Pïÿÿ¯ÏÿÿpŸÿÿŸŸÿÿïŸßþÿö üÿÏ ýÿÿï`@¯þÿþÿþ`ÿÿ¯ úÿÿÿï@P¿ÿÏÿÿpŸÿÿŸú`þÿ ø ÏÿÿÏPPÏÿÿÏ þÿϯþÿïŸïÿÿ¿þþÿ Ÿ@Pïÿÿ¯ÿÿþ#ßÿÿ0@Ïÿÿ@@ ÏÿÿpŸÿÿŸ¯ÿÿï`@ÿÿïùªßÿÿpüŸÿÿp þÿ pÿÿþ@ÿÿ¿ú`ÿÿÿ ü þÿP@ÿÿÏþÿÿ¿pÿÿþ@ÿÿ¿ßÿÿ0Pÿÿßûÿ Pïûÿ þÿ@þÿ@Pÿÿ¿þŸÿÿp`ÿÿÏp@@P þÿ@ý`pÿÿþ@ÿÿ¿úÿÿßø`ÿÿïPþÿÿ`ÿÿ¯þþÿ 0ÿÿŸ@ÿÿÏþÿÿ¿Ïÿÿ@ ÿÿïþþÿ þpÿÿþ@ÿÿ¿@ÿÿï0`ÿÿ¯ù« þÿ0ü ßÿÿ0@ÿÿßÏøÿ¯úÿÿÿû`þÿ ÿÿþÿÿ¯Ïøÿ¯ ÿÿïþÿÿŸ¿üÿßü`¯ïýÿÿÿÏýþÿ@ÿÿpþ ßÿÿ0Ÿÿÿpýÿÿ¯úÏøÿ¯ú¿ÿÿ¿ø¿ÿÿþ@þÿÿ Ÿÿÿp0ÿÿïþ ¯ÿÿ`ÿÿþÿÿ¯ÿÿïþ `ÿÿ¯@ÿÿßýÏøÿ¯¯ÿÿþŸÿÿpù«`ÿÿïü ÿÿïþpÿÿŸþÿú¿Púÿÿÿû ßÿÿ¿¿ÿÿPþ¯ÿÿpþÿú¿P`ÿÿ¯þ¯ÿÿ`û`ù `ïÿÿ¿¿ÿÿþ0þÿ Ïÿÿ@ ÿÿïþßÿÿ0ý¿ÿÿúþÿú¿Pú¿ÿÿ¿øþÿ@þpÿÿÏßÿÿ0`ÿÿ¯þ ïÿÿ ¿ÿÿPþ¯ÿÿpPÿÿ¿þ ŸÿÿpÿÿŸýþÿú¿PïÿÿPþßÿÿ0ù«Ÿÿÿ¯ü`ÿÿ¯þ¯ÿÿ`þÿó`ÿÿÿ`ýŸþÿ@þÿ0þÿ þÿùŸÿÿpþïÿÿ ÷¯pûÏÿÿ¯¿ÿÿþŸÿÿ¯þÿþ `ÿÿ¯ ÿÿïü¿ÿÿýÿþÿúúŸþÿ ý ¯ þÿ@þßÿÿp ÿÿïþ Ÿÿÿp0ÿÿßþþÿ0þÿ ÿÿþ ßÿÿ0¿ÿÿ`ýþÿùþÿ@ ÿÿïø«ßÿÿpüŸÿÿpþïÿÿ ÏÿÿÏ0@ùïÿÿï@`¿þÿ%@ÿÿß@ßÿÿÏÿÿÏ0@ßÿÿ00ÿÿßößÿß@@PŸþÿ`Ÿÿÿß pþÿ0@þÿ p@pßÿÿp`ÿÿ¯üÿÿï@`ïÏÿÿÏ0@ú`þÿß`@PŸïßßÿÿ¯Ÿÿÿß`ÿÿ¯þ"ßÿÿ0pÿÿŸ@ÿÿß@ßÿÿ¿ÿÿÏ@PŸÿÿïþþÿPý ÏÿÿÏ0@þÿŸ ÿÿ¯ø¬ þÿ0ü ßÿÿ00ÿÿßþ@ùÿ`ø`øÿpþùÿÏ@ùÿ` ÿÿïþpÿÿŸ÷ ÷ÿŸ0ùÿ`0øÿ0Ÿÿÿpü ïûÿÏ@ùÿ`ù¿ùÿŸpúÿ ï0Ÿÿÿp ÿÿïþ¯ÿÿ`ùÿϯùÿ¯þïÿÿï¿ß @ùÿ`¯ùÿpø¬`ÿÿïü ÿÿïþpÿÿŸý@Ïüÿ¯ ÷@¿üÿŸ0ý¿ÿÿ¿ýÿý@Ïüÿ¯ `ÿÿ¯þ¯ÿÿ`÷ÏûÿÏ`ýPßýÿ¿@ýŸþÿ¿`ÿÿïþßÿÿ0û0¿ýÿß`þ@Ïüÿ¯ øïýÿß þïýÿŸ þ ßÿÿ0`ÿÿ¯þ ïÿÿ ¿ÿÿ¿ýÿþ 0ïÿÿï¯ÿÿpþ`ýÿßþ@Ïüÿ ¯ Ïÿÿïßÿÿ0ø’@@0ôÿ@@0úþÿÿÿ@ø@@0äý@ø @@ú @ í@@0ú@@0ýö0@@ ù0@@èþÿÿÿ@ùÿ@÷þ@û@@0úÿ@òõ@ÿÿÏ‘Ï@ÿÿÏÃõÿÿ‘ÏÿÿÃõ`0‘Ï`0ÃŒ @@ úáþ@ßþ@×óö@¦¿ÿÿPúìPþ¿Ÿ0þ`þÿà@ÿÿÏ×ô0öÿ@¦þÿúî0ßùÿpÿÿßßÿÿó þÿéô`öÿ§@ÿÿÏùï ïþÿÿ¿Ïþÿ@0@@0ß¿ÿÿPó`ÿÿ¿éðÿÿÏúP` üþ@ p0þP`û@p0úPP@@0þþ@ÿ0@ @þp0üþ@ p@ýÿÿPp þ0@@ ýþ@ ûŸÿÿß þ ÿþþ@þ0@@`Pþ0p ý0@@þþ@þþÿ@pþ@ý@¯ÿÿŸ@@ þ `Pý@@0@0ð¿ÿÿûïüÿþ@ÿÿߟýÿÿPßþÿÏýPßüÿ¿þ0Ïýÿïÿÿ¯@ÿÿÏ`ßÿÏ úÿŸþ þÿŸýÿþ¿ÿÿŸßþÿï ŸÿÿŸþpÿÿï û¿ÿÿßü @ÿÿßþþÿïþÿ0¿þÿï þïÿÿ @ÿÿÏ@ÿÿÏþßûÿÏ@úÿPŸüÿï`þÿÿŸïÿðþÿPüŸþÿ¿ßþÿ`òÿ@`þÿÿÏþÿŸ ïþÿ¿ßþÿpûÿŸPÿï¿¿ïþÿ0`þÿß¿ïþÿøÿ ÿÿ¿ïÿÿpúŸþÿß@ûÿÿŸ@òÿ0ÿÿßþÿÿÿÿÿÿ¿¿ßþÿp`Ïþÿþ¿ÿÏÿÿï¿ïþÿ ¿ûÿ`ñ@þÿý`ÿÿï0¿ÿÿ¯¿ÿÿ ¯ÿÿßP0þÿ@ þÿ`ÿÿï¿ÿÿÏïÿÿ0¿þÿÏ¿Ï`@0þþÿ @Ÿÿÿ0þÿ@@ÿÿßP ïÿÿ PÿÿߟÿÿÏù ïüÿïþ ¿ÿÿ`ÿÿ¿0pþÿ `ßÿÿpÿÿŸþ ¿ÿÿP¿ÿÿP Pý Ïÿÿ`ÿÿ¿ý ŸÿÿÏïÿÿpýÿÿ¿ß ñÿÿÏüßÿÿþÿÿ¿þÿ ÿÿþÿÿŸÿÿ¿þ@þÿ þÿ 0ÿÿïþþÿû `¯¿þÿþßÿÿ0þþÿ@ÿÿþïÿÿ@0þÿ@þÿ0øïüÿÏþÿ ¿ÿÿPPÿÿÏþ Ïÿÿ@¯ÿÿ`þþÿþÿþPŸ¿ïÿÿ@Ÿÿÿþ þÿ@þ¿ÿÿ@ÿÿÏüñ¿ÿÿý þÿ þÿÿ¯@ÿÿÏþ¿ÿÿPPÿÿ¿ßÿÿ`þPÿÿï`ÿÿÏþ pÿÿ¯@ÿÿÏü0¿úÿ¿ ÿÿïþþÿ¿ÿÿPþÿþþÿÏÿÿô@ïþÿp@ÿÿßþþÿ ÿÿþÿþïÿÿ@ÿÿÏ@ÿÿÏŸùÿþßÿÿ@þ`ÿÿßýÏÿÿpÿÿüñþÿPý@þÿýßÿÿ`ÿÿþþÿÿÿþÿ@þŸÿÿŸÿÿ¿þ ŸÿÿpÿÿýïÿÿŸ@Ÿÿÿ`ÿÿ¯þ`ÿÿÏþÿPÿÿ¿þÏÿÿŸÿÿÏø`ûþÿ ÿÿŸ@ÿÿÏþ¿ÿÿPPÿÿ¿0ÿÿßþÿÿÿÿ¿ÿÿ¿P `ÿÿ¿ þÿýÿÿ¿þ þÿ ¿ÿÿPüò@þÿý@þÿ pÿÿï¿ÿÿP@ÿÿÏþÏÿÿ@þÿ`0þÿ@ÿÿï0Pßÿÿ@¿ÿÿPýpÿÿÏþßÿÿ@Ÿÿÿp ïÿÿ`@ÿÿÏþÿÿþ¿üÿ@øÿ¿PýPþÿ P¿ÿÿ`ÿÿþþÿÿÿpÿÿÏÏÿÿP¿ÿÿP0þÿ Ÿÿÿ`ÿÿ¿ýÿÿßþ¯ÿÿ¿þÿüòÿÿÏûïÿÿߟþÿPþÿ ÿÿþÿþ ¯ÿÿïïÿÿ0øÿþþÿýÿÿïPP¯þÿþßÿÿ¿ïÿÿ¿ÿÿþÏÿÿ@þýÿø@þÿï¿¿ßþÿÏþÿ ¿ÿÿP@ÿÿÏþÏÿÿ@þÿÏ¿ýÿþÿ@þÿp@þÿ @ÿÿïP@`0þÿ ¿¿ÿÿï @ÿÿÏûò¿ÿÿûPûÿï`@ÿÿÏþ ¿ÿÿPPÿÿ¿þ ïûÿýþÿ ߯ÿÿ¯@ÿÿÏü0üÿÏÿÿ¿ ùÿ ¿¿ÿÿPþÿý`þÿßø`øÿ¿@ÿÿßþþÿ ÿÿþÿþ@üÿ ¿ÿÿÏ@ÿÿÏþïýÿÏþÿþ@üÿûÿß0ÿÿûòþ0ú ¿¿¯pþ@Pþþ@@ýp¯¿¿ û @@¿ÿÿ`@Pû@¯¿Ÿ @@`ÿÿ¯`¯¿Ÿ`ýþ `ýpþÿ@ö `þ¿¯0þ @` pþ `0 `ýP¯¿ @P@Pþ Ÿ¿¯@ `ýP¯¿¿Ÿ þ@¿¿Ÿ`ý`0û¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹¼ÆÿÿÿÕÿ¹Ñþ¿0µÝ0þ¿©À@@0òÿ@ ä÷@þÿ@þþÿ`èþÿ@ìþÿŸý@ýÿñúÿߟ òÝ@þÿÊ@þÿßýïþÿ@ø¿ûÿ¿pÏÿûPÿå@ÿâ@ÏýÿßPö`ïþÿ¿óÏÿ@ø÷@þÿ@`þÿçþ¿0ìýÿ þŸýÿñøÿï óÝ@þÿÊ@ýÿ`þ`ýÿ@ø¿ùÿïPŽpÿ`ûŸÿ0å0¿`âï@@pïÿ ø@ÿÏP@ÿ¿ó¯ÿÿ@ø÷@þÿ@0ïÿÿŸÍýÿ üÿñþÿ¿¿þÿŸóÝ@þÿÊ@ýÿ¿þßýÿ@ø¿ÿÿ߯ÿÿÿÿ@ ÿ¿üïßÂ0ý`ÿø¯ÿ þŸÿ0õŸï¯ÿ@ø÷@þÿ@ÏÿÿÏû `¿ÿÿï¯@Ÿ¿¿pþþ¿þ¿ 0¿¿`PÏÿï÷ýÿßüÿñþÿþÏÿÿ¿ý@¯ïÿÿ¿`þÿ`¿þÿÏŸ0þ ŸßÿÿÏþþ¿0ßÿß`þ@þÿ ŸïÿÏ0ýÏÿÿߟ þ¿¿` ¿`PÏÿÿ¯¿¿ò@üÿ @üÿ@ø¿ÿÿ¿þ0ïÿÿߎ¯ÿ ý`ÿpþPÏÿÿ¯@þ0¿` ¿ Ÿïÿï¯P0¿`þŸïÿïŸþ`¿0ßÿß`ñPÿpøÿ¿ý@ÿöpï0ÿ@ø÷@þÿ@¯ÿÿßýÏúÿPÿÿßþ`ÿÿ¿þÿ@¿ÿÿïüÿø ÿÿïÿÿ`ßÿïþÿñþÿþÏÿÿ¯þ`úÿŸÏúÿ`úÿÏþþÿïüÿ@@þÿïýÿï 0ïûÿ ï ¿ÿÿ¿ïÿÿ`ùÿ¿ò@þÿïÿŸŸÿïþÿ@ø¿ÿÿ¿ý`þÿ0`ÿpý¯ÿ ÿ3ÿ@PÏÿ@@ÿ¿ïÿÿ¿ ï߿@ÿÏÿŸŸÿÏÿïßïÿ@ó ÏÏù ÿüÿŸ÷`ÿ`ÿ@ø÷@þÿ¿ÿÿï0ü ÿÿÏP@¯ÿÿß þÿP¯ÿÿ`þÿ @¿ÿÿïŸïÿÿßø ÿÿ¿Ïÿ¿`ÿÿþÿñþÿŸ@@¯þÿP þÿ@`ïÿÿ``ÿÿß`@@ß ïÿÿ@`ïÿÿ`þÿßþÿŸ@þÿÏŸþÿŸÏÿÿ¯@PÏÿÿŸ¿þÿß¿¿ïÿÿÏP@¯ÿÿ¿ò@þÿÿï0ÿÿþÿ@ø¿ÿÿ¿ýþÿïÏþÿ¿0ÿþÿ¯@ÿÿ pÿPý @@ÿÿpþpÿÿþ@ÿŸõ¿ÏïŸø@ÿüÿ¿ø0ÿ`ÿ@ø÷@ûÿï üþÿ þÿ 0¿ÿÿŸÿÿïþþÿ @¿ÿÿ`þÿø ÿÿ¿`ÿÿßÿŸþÿñøÿþÿÿÏþÿÿÏÿÿï`0þ ÿÿŸþÿÿ¯þÿ @Ÿÿÿ¿@þÿþÿÿß@ÿÿßþ Pÿÿï¿ÿÿý `ÿÿïÿÿ¿ò@þÿ ÿÿßÿß@þÿ@ø¿ÿÿ¿üþÿŽŸÿ0pÿ`ÿý¿ÿ@ÿýpÿú@ÿÏïüïÏÿ@ýÿ¿õÿ¿ïßPø@ÿüÿ¿ù0ïŸþÿ@ø÷@úÿÏý@÷ÿ @`ÿÿïpÿÿŸþþÿ @¿ÿÿ@þÿøÿÿ¿ïþÿ0þÿñùÿpý¿ÿÿþ@þÿ0ûÿÏp¿øÿ¿þÿ @ÿÿ¿@þÿþ@þÿ÷ÿÿ¿ÿÿýÿÿ¿þÿÿ¿ò@þÿ¯þÿp@þÿ@ø¿ÿÿ¿ýþÿpŽPÿÏÿ¿ùÿÿ@ÿýïÿï¯0þ@ÿÿ¿ü¿ÿÿ@ýÿ¿òŸÿPù@ÿüÿ¿ù¿Ïý@Ÿÿp@ú÷@þÿp¿þÿþ@þÿú¿ 0ïÿÿPÏÿÿ0þþÿ @¿ÿÿ@þÿø ÿÿ¿ÿÿÏþÿñþÿŸpþÿïþ¿ÿÿþ@þÿPßûÿ¿ÿÿßû¿þÿ @ÿÿ¿@þÿþ@þÿÿÿïú¿ÿ¿ÿÿýÿÿ¿þÿÿ¿ò@þÿPþÿ@þÿ@ø¿ÿÿ¿ý`þÿ0ÿß ÿŸ¿ÿú@ÿ@ÿüp¿ïÿÿŸ@ÿÿ¿ü¿ÿÿ@ýÿ¿òÿ¯ù ÿýÿŸù¿øÿ@ú÷@þÿ@ïþÿP þÿ øÿÿ¿ÿÿÏýþÿ @¿ÿÿ@þÿø ÿÿ¿ ÿÿ`þÿþ`@øþÿþÿ¿þŸÿÿ¯þ`ÿÿß 0`ßþÿŸÿÿŸøþÿ @ÿÿ¿@þÿþpÿÿÏ`ÿÿßø¿ÿÿýPþÿ0ÿÿ¿þ`Pù@þÿÿßÿŸ@þÿ@@`þ¿ÿÿ¿þ0ïÿÿÏþþ “ÿ0ÿPŸÿ0ù@ÿø 0Ïÿ0@ÿßßüÿßÿÿ@ýÿ¿ñÿ¿øÿ¿ý@ÿù0ü@Ÿÿp@ú÷@þÿ@@þÿ ï0¿ÿÿÏP pßþ üÿ`ýþÿ @¿ÿÿ@þÿøÿÿ¿ûþÿþ¿ÿÿøþÿÏþÿ@þÿ@ ßÿÿ ß` `ÿÿï@þÿ PŸþÿ @ÿÿ¿@þÿ@ïÿÿïÿÿ¯00¯¿ÿÿýïþÿ¿ßþÿ¿þþÿ@ù@þÿû@þÿ@ÿÿ¿þ¿ÿÿ߯ÿÿÿï0þþÿ@“0ÿŸßïþ`ÿ¯ü0@ÿý0ý ÿ@@ÿŸÿ@þ@ÿŸÿ@ýÿ¿ø@üpÿþ` þ¯ÿ þŸÿ0þ` ùÿ@ø÷@þÿ@þÿÏ0ïùÿýÏþÿïýþÿ @¿ÿÿ@þÿøÿÿ¿ûþÿþ¿ÿÿøþÿ ïþÿPŸúÿÏùÿŸùÿþÿ @ÿÿ¿@ùÿß`ùÿ¿¿ÿÿü`üÿ ïÿÿ¿@ÿÿ¿ø@þÿû@þÿ@ÿÿ¿þ¿ùÿï@ýþÿ@’Ïïÿþÿ Ïÿ¿P@`¿¿@ÿýï@@pïß@ÿ ïïp@`ïï ÿ@ýÿ¿øÿÏp@@ÿïþ¿ÿ@þ@ÿÏP@ÿ¿ý¿ÿ@ùÿ@ø÷@þÿ@þ¿þÿŸ ŸüÿïŸý`þÿŸüþÿ @¿ÿÿ@þÿøÿÿ¿ûþÿþ¿ÿÿøþÿþPþÿï0ïýÿŸ@ÏüÿßPý`ßüÿÏ@þÿ @ÿÿ¿@þÿ¿þÿ¿0ý@¿üÿßp¿ÿÿû@Ÿ¿¯`ÿÿ¿ÿÿPø@þÿû@þÿ@ÿÿ¿þ¿üÿï¿püþÿ@’pÿÿ0þÿýÿßp@ÿý@Ïýÿ¿0@ÿþ0ßþÿß0þÿ@ýÿ¿øŸïýÿ¿ ý¿ÿ@ý`ïþÿ¿ý¿ÿ@ùÿ@øå0@@ ©0@@üþþ@ ùþ@ë @ øþ@ô þ ßÿÿÏÿßÖüÿ@ ô@@ õ0@0è @@òÿ@ ä»ÿß¿¿ýÿ ÿÿ`Ö»ûÿßPPÿßÕ»@pþ@ý @ Õ÷ @@0á0@@ ³ö0@@ ÷ÿÿ¿á¿ÿÿî þ¿ Íö¿ÿÿÍ`Ã÷ÿÿ¿á¿ÿÿð ÿÿÏ¿ÏÿÿÏö¿ÿÿ·þÿ@ÞÞÿ@óÿ¿Ã÷ÿÿ¿á0@@ ñÏÿ¯ þÿÏÐö¿ÿÿ·þÿ@ÞÞÿ@ó@0Ã÷ÿÿ¿þþ@0ý@p0þ0@@0ý0@@ 0@@ @@000ü ¯ÿ`p@``ÿþ @@0@0þP` û `p@û@p0ý @@000ý¿ÿÿPp û `Pþþ@ÿ0@þ p`þ@øþ@ÿ``û0p@þ@þÿp@@àš@0ý@ þ @@ þ@0@ @þ @ý@0÷PP Ÿÿp@@ `@ý@0@ P`P õ`0ý@ @0þ0P @ù÷ÿÿ¿pÿÿï0Pßüÿ¿pÿÿïýïÿÿ0¿ÿÿÿÿϯýÿ`þ@ÿ¯0ïýÿ¿¯ÿ ÿÿ¿`ïÿ¿`ïüÿþŸûÿïþPßüÿ¿ÿÿϯýÿ`þ¿ÿÿ¯ßþÿï0þŸüÿï`@þÿ0ßÿÿ`ýÿïþÿ@øþÿïþÿÏþ0¿üÿß0@úÿàšÏÿþ@ÿŸþ¿ÿÿ¿þÿ`ÿÏPÿþ¿ÿ @ÿù0Ïýÿï0üÿ`ïýÿïþÿ¿@ÿ¯ßþÿß0¿ýÿ@÷0ïýÿŸþ @ÿÿÿ¿Ÿûÿ@ù÷ÿÿ¿0þÿP@þÿÏ¿þÿŸþÿ`PÿÿÏ¿ÿÿùÿïþŸÿ0ïÿŸ@ÿ¿Pÿpûÿ¿PþÿÏ¿þÿŸþÿÿ¿ßÿÿ@þÿÏ¿þÿŸÿúÿïþ¿ùÿßþ¿ÿÿï¿ßþÿ @úÿ@þÿï¿Ïþÿ@øøÿpïÿÿß¿ïÿÿß@úÿàšÿ@ÿïþïÏÏÿþÏÿ¯0ÿÿ¿ÿÿppÿPúßïpP¿@ Ÿÿp@@ ÿÏ0P¿þÿ¿@ÿÿÿÿ¯ @ÿ¿øïï@Ÿÿ@ÿÿïÿŸ 0¿ÿ@ù÷ÿÿ¿ïÿÿpþßÿÿp@þÿ¯ÿÿ¯Ÿÿÿ`¿ÿÿÿÿß0pþÿ#@ßßPÿï@ÿ¿ÿ¯ÿÿßp@@Pßÿÿ@þÿ þÿPþ 0Ÿßÿÿp@þÿÿÿß0pþÿ @¿ÿÿ¯ pþÿ@`ÿÿß¿ÿÿ@þÿ @@`¯ÿÿÏþÿ@øþÿßÿÿ¿Ÿÿÿ¯ïÿÿPþÿ@Þš@ÿpߟÿP ÿÿ0 ÿŸÿ`ÿP¿ï`ï¯ÏŸÿú`ÿpüÿ@þ@ÿùÿ¿@ÿþÿ¿ýÏÿøpÿ`ýßï@ÿ¿ýïßýÿ@ù÷ÿÿ¿ÏÿÿŸþ þÿýþÿ@Pþÿÿïÿÿ¿ÿÿÿÿ¿þþÿ@ÿ¿ÿ¿@ÿ¿ÿ¿ÿÿ¿ý0þÿ þßÿÿpßþÿ¿p þÿýþÿ@ÿÿ¿þþÿ@¿ÿÿþßÿÿŸÿÿ¿þ¿ÿÿ¿@þÿüþÿPþþÿ@øþÿ @ÿÿ¿ßÿÿŸþßÿÿþÿ@Þ™ÿ¯0ÿ ߟPÿ@@ÿppß ÿ`ÿþ ÿ0¯Ÿ`ÿ Ï¿ù¯ÿ úÿ@þïï@ûÿ¿@ÿýÿ¿ý¿ÿø¯ÿýÿ0@ÿý0ÿýÿ@ù÷ûÿþ@÷ÿ @ßÿÿ``ÿÿŸþ ¿ÿÿÿÿ¿þþÿ@ÿ¿ÿ¿@ÿ¿ÿ¿ÿÿ¿ý@þÿý¿ÿÿ`úÿŸ@÷ÿ@ÿÿ¿þþÿ@¿ÿÿþ¿ÿÿ¿øÿ¿@þÿüþÿ@þþÿ@øþÿ@ÿÿ¿÷ÿþÿ@Þ™ ¿ßÏïÿýÿŸÏϯÿ¿þ @ÿ`ÿPÿpÿù¿ÿùÿ@ýPßþÿÏPþÿ¿@ÿýÿ¿ý¿ÿø¿ÿüÿ@@ÿý@ÿýÿ@ù÷þÿþÿ@@þÿú@ ÿÿ¯¯ÿÿ@þ ¿ÿÿÿÿ¿þþÿ@ÏïPÿï@ÿ¿@ÿÿÿ¿ý@þÿþ¿ÿÿ ¿üÿ`@þÿú@ÿÿ¿þþÿ@¿ÿÿþÏÿÿp¿ÿÿŸû@0@þÿüïÿÿ`þþÿ@øþÿ@ÿÿ¿þÿpû@ þÿ@Þ™ pÿ ßp0ÿP¿¿ý¯ß ÿ0pÿÿý ïŸ`ï¯Ï@ÿ@ù¿ÿùÿ@û0`Ÿïÿ@ÿ¿@ÿýÿ¿ý¿ÿø¿ÿüÿ@@ÿý@ÿýÿ@ù÷ÿÿÏÿÿßïÿÿpü`þ üÿßý ¿ÿÿÿÿ¿þþÿ@Ÿÿ0ïÿ¿ßÿÏ@ŸÿPÿÿ¿üïÿÿ` þÿ0Ÿ þ 0ßÿÿïÿÿpü`ÿÿ¿þþÿ @¿ÿÿ0þÿ0pÿÿßý @@þÿü¯ÿÿï`@þÿ@ÿÿ¿þþÿ @ÿÿ¿¯ÿÿ¯ü@ þÿPÞ™ 0ÿÿ ߟÿýpÿß ÿŸÿ@ý ¯ß¯Ÿ`ÿŸÿøÿPúÿ@ø Pÿÿ¿@ÿýÿ¿ý¿ÿøÿPýÏÿ@ÿüÿßýÿ@ù÷ ÿÿ¿ßÿÿ¯þÿÏŸïÿý¯ýÿpý ¿ÿÿÿÿ¿þþÿ @0ÿ¿0ïÿÿÏýÿßþÿÿ¿üÿÿïßÿÿ¿ÿÿ¿ïÿÿ@þÿ ÏŸïÿÿÿ¿þþÿ@¿ÿÿÏïÿÿ¿ïÿÿïŸÏÿ@þÿü@øÿ@ÿÿ¿þþÿ @ÿÿ¿@þÿßßÿ@ïÿÿ߯à˜ïÿÏþïÿ0ý0ÿÿþÏïïü pÿÿPÿï¯ýÿÿþ ÿß @pÿþ@Ÿ þ pÿ`ÿ¿@ÿýÿ¿ý¿ÿýÿÿþ ÿÏ`ÿŸ@ÿüÿ¯@PŸÿÿ@ù÷ÿÿ¿@þÿPùÿý`ýÿý ¿ÿÿÿÿ¿þþÿ@þÿŸ@0ý@ þÿÿ¿ûŸûÿÏùÿþùÿÿÿÿ¿þþÿ@¿úÿï þ0ßúÿ@þÿû`ïþÿþÿ@ÿÿ¿þþÿ@ÿÿ¿þ`ïúÿ@üÿà˜¯ÿpþ0ÿïûïÿ0þpÿ¯ü0ÿïý¯ÿpýÿÿý`ÿÿ¿¿ÿÿ@ïÿ¿¿@ÿÿÏ¿ßÿÏþÿ¿@ÿýÿ¿ý¿ÿýÿÿý `ÿÿ¿ÏÿÏ@ÿü¯þÿ¿Ÿÿ@ù÷@`þ`pþ ¯¿¿Ÿp üþ`ü `@@`þþ þ ¿ÿ¿P@Pû@`ú@¿¿Ÿ`ý pŸþ¿ ü ¯¿¿Ÿp @`þþ `Pp¿¿pû`þ¿P þùÿ@ þÿ0@`þþ @`ýpŸ¿¿¯0ý`¯¿¿à˜@ ý`û`ý @û`ý@ ýÿü ¿¿0þ 0Ÿ¿¯@0¿¿¯`ý` @ý`ý`ýÿü@Ÿ¿¿pþ @ú @ ÿ0ù½ïüÿ¿ÍÔ¯@@`Ïÿÿß·™ßïø»@þP0ÍÔùÿP·ž@ÏŸßÿ`øÔ¯Ïþÿߟ ¶ž0¿þÿ¿P÷ctsim-6.0.2/images/logo16.bmp0000644000175000017500000000147010667176710014741 0ustar kevinkevinBM86(  ÿÿÿÿÿÿÿÿÿþÿþùûøøùõzñî.éè/éêLçç…ææ×ííÿýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüþüõùõùû÷íþýÿÿÿÿÿÿÿÿüüíí~ââøõõÿÿÿÿÿÿÿÿÿýþýöúöýýýÿÿÿ«ÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúUååù÷÷ÿÿÿþÿþõúõýýýÿÿÿÿÿÿ\ÿÿýþüþüþýþÿÿÿÿÿÿûû|ææÿüüùüùøûøÿÿÿÿÿÿîÿÿùûõúñ÷ðöõûøûÿÿÿÿÿÿòñÖðïöúöýþýÿÿÿÿÿÿ°ùüùüôôéééèóóúýùûÿÿÿÿýýëëõùõÿÿÿÿÿÿÿýþiõûüûêêëëóóÙØø÷öûýþÿÿÿÿAëëõùõÿÿÿÿÿÿôüý ÷ûøøééååââääíí÷üüýÿÿÿÿ#ëêõùõÿÿÿÿÿÿ·üý÷ûùøããââÚÚëëóó÷üüýÿÿÿÿ%ëëõùõÿÿÿÿÿÿiýþöûýýããììññååüûöûýþÿÿÿÿ<êêõùõÿþþôÿÿ!ÿÿùüùüöõêéééôôúüøûÿÿ&ÿÿRþþ«óðøüøÿûøµÿÿÿÿÿÿøûôúñ÷ñöDõúu÷û¦ÿÿ×ÿÿöÿÿþüùÿüøþÿþýúôhýü ÿÿ/ÿÿ`ÿÿ‘ýþÂüþìüþÿýþÿÿÿÿÿÿÿÿÿÿþý÷úõþþþÿÿÿúýû¿÷ôÛþýúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþöúöüþüÿÿÿÿÿÿÿÿÿÿþüûùõûûøÿÿþÿÿÿÿÿÿÿÿÿÿÿÿþÿþùüùõùõûýûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþ÷û÷ôùôóùóôùôóùóòøòóøó÷û÷ýþýÿÿÿÿÿÿÿÿÿctsim-6.0.2/benchmarks/0000755000175000017500000000000010667176710014000 5ustar kevinkevinctsim-6.0.2/benchmarks/composite-test0000744000175000017500000000040110667176710016676 0ustar kevinkevin#!/bin/bash DIR= TIME=/usr/bin/time ${DIR}ctsimtext phm2if /dev/null 768 768 --phantom herman --nsample 3 ${DIR}ctsimtext phm2pj ~/t.pj 900 900 --phantom herman --geometry parallel --nray 2 ${DIR}ctsimtext pjrec ~/t.pj ~/t.if 768 768 rm ~/t.pj rm ~/t.if ctsim-6.0.2/benchmarks/results0000644000175000017500000000042210667176710015422 0ustar kevinkevinComposite Test ============== Pentium 4 2.8GHz: 19.6s (i386) 19.6s (Pentium) 0% 18.7s (Pentium 3) 5% 14.3s (Pentium 4) 28% Athlon MP 1800+ 23.7s (i386) 21.0s (Athlon) 11% 21.0s (Athlon-MP) 11% Opteron 250: 10.4s (x86_64) ctsim-6.0.2/TODO0000644000175000017500000000000110667176710012342 0ustar kevinkevin ctsim-6.0.2/config.h.in0000644000175000017500000002075613254360510013704 0ustar kevinkevin/* config.h.in. Generated from configure.ac by autoheader. */ /* Define if building universal (internal helper macro) */ #undef AC_APPLE_UNIVERSAL_BUILD /* turn on debugging */ #undef DEBUG /* Define to 1 to support Advanced Bit Manipulation */ #undef HAVE_ABM /* Define to 1 to support Multi-Precision Add-Carry Instruction Extensions */ #undef HAVE_ADX /* Define to 1 to support Advanced Encryption Standard New Instruction Set (AES-NI) */ #undef HAVE_AES /* Support Altivec instructions */ #undef HAVE_ALTIVEC /* Define to 1 if you have the header file. */ #undef HAVE_ASSERT_H /* Define to 1 to support Advanced Vector Extensions */ #undef HAVE_AVX /* Define to 1 to support Advanced Vector Extensions 2 */ #undef HAVE_AVX2 /* Define to 1 to support AVX-512 Byte and Word Instructions */ #undef HAVE_AVX512_BW /* Define to 1 to support AVX-512 Conflict Detection Instructions */ #undef HAVE_AVX512_CD /* Define to 1 to support AVX-512 Doubleword and Quadword Instructions */ #undef HAVE_AVX512_DQ /* Define to 1 to support AVX-512 Exponential & Reciprocal Instructions */ #undef HAVE_AVX512_ER /* Define to 1 to support AVX-512 Foundation Extensions */ #undef HAVE_AVX512_F /* Define to 1 to support AVX-512 Integer Fused Multiply Add Instructions */ #undef HAVE_AVX512_IFMA /* Define to 1 to support AVX-512 Conflict Prefetch Instructions */ #undef HAVE_AVX512_PF /* Define to 1 to support AVX-512 Vector Byte Manipulation Instructions */ #undef HAVE_AVX512_VBMI /* Define to 1 to support AVX-512 Vector Length Extensions */ #undef HAVE_AVX512_VL /* Define to 1 if you have the `basename' function. */ #undef HAVE_BASENAME /* Define to 1 to support Bit Manipulation Instruction Set 1 */ #undef HAVE_BMI1 /* Define to 1 to support Bit Manipulation Instruction Set 2 */ #undef HAVE_BMI2 /* ctn dicom library */ #undef HAVE_CTN_DICOM /* Define to 1 if you have the header file. */ #undef HAVE_CTYPE_H /* dmalloc library */ #undef HAVE_DMALLOC /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ #undef HAVE_DOPRNT /* efence library */ #undef HAVE_EFENCE /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H /* FFTW library */ #undef HAVE_FFTW /* Define to 1 to support Fused Multiply-Add Extensions 3 */ #undef HAVE_FMA3 /* Define to 1 to support Fused Multiply-Add Extensions 4 */ #undef HAVE_FMA4 /* Define to 1 if you have the `getenv' function. */ #undef HAVE_GETENV /* Define to 1 if you have the header file. */ #undef HAVE_GETOPT_H /* getopt_long library */ #undef HAVE_GETOPT_LONG /* Define to 1 if you have the `gettimeofday' function. */ #undef HAVE_GETTIMEOFDAY /* Define to 1 if you have the `htonl' function. */ #undef HAVE_HTONL /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the `m' library (-lm). */ #undef HAVE_LIBM /* Define to 1 if you have the header file. */ #undef HAVE_MATH_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 to support Multimedia Extensions */ #undef HAVE_MMX /* Define to 1 to support Memory Protection Extensions */ #undef HAVE_MPX /* Define to 1 if you have the header file. */ #undef HAVE_NETINET_IN_H /* Define if OpenMP is enabled */ #undef HAVE_OPENMP /* PNG library */ #undef HAVE_PNG /* Define to 1 to support Prefetch Vector Data Into Caches WT1 */ #undef HAVE_PREFETCHWT1 /* Define to 1 to support Digital Random Number Generator */ #undef HAVE_RDRND /* Readline library */ #undef HAVE_READLINE /* Define to 1 if you have the header file. */ #undef HAVE_READLINE_H /* Define to 1 if you have the header file. */ #undef HAVE_READLINE_READLINE_H /* Define to 1 if you have the `setjmp' function. */ #undef HAVE_SETJMP /* Define to 1 if you have the header file. */ #undef HAVE_SETJMP_H /* Define to 1 if you have the `setpriority' function. */ #undef HAVE_SETPRIORITY /* use sgp library */ #undef HAVE_SGP /* Define to 1 to support Secure Hash Algorithm Extension */ #undef HAVE_SHA /* Define to 1 if you have the `snprintf' function. */ #undef HAVE_SNPRINTF /* Define to 1 to support Streaming SIMD Extensions */ #undef HAVE_SSE /* Define to 1 to support Streaming SIMD Extensions */ #undef HAVE_SSE2 /* Define to 1 to support Streaming SIMD Extensions 3 */ #undef HAVE_SSE3 /* Define to 1 to support Streaming SIMD Extensions 4.1 */ #undef HAVE_SSE4_1 /* Define to 1 to support Streaming SIMD Extensions 4.2 */ #undef HAVE_SSE4_2 /* Define to 1 to support AMD Streaming SIMD Extensions 4a */ #undef HAVE_SSE4a /* Define to 1 to support Supplemental Streaming SIMD Extensions 3 */ #undef HAVE_SSSE3 /* sstream header */ #undef HAVE_SSTREAM /* Define to 1 if you have the header file. */ #undef HAVE_STDARG_H /* Define to 1 if you have the header file. */ #undef HAVE_STDDEF_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDIO_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strtod' function. */ #undef HAVE_STRTOD /* Define to 1 if you have the `strtol' function. */ #undef HAVE_STRTOL /* Define to 1 if you have the header file. */ #undef HAVE_SYS_FCNTL_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_RESOURCE_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the `time' function. */ #undef HAVE_TIME /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if you have the `usleep' function. */ #undef HAVE_USLEEP /* Define to 1 if you have the `vprintf' function. */ #undef HAVE_VPRINTF /* Define to 1 if you have the `vsnprintf' function. */ #undef HAVE_VSNPRINTF /* Define to 1 if you have the `vsprintf' function. */ #undef HAVE_VSPRINTF /* Support VSX instructions */ #undef HAVE_VSX /* have wxthreads library */ #undef HAVE_WXTHREADS /* wxwindows library */ #undef HAVE_WXWINDOWS /* X11 system */ #undef HAVE_X11 /* Define to 1 to support eXtended Operations Extensions */ #undef HAVE_XOP /* no debugging */ #undef NDEBUG /* 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 `double', as computed by sizeof. */ #undef SIZEOF_DOUBLE /* The size of `float', as computed by sizeof. */ #undef SIZEOF_FLOAT /* 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 `short', as computed by sizeof. */ #undef SIZEOF_SHORT /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Define to 1 if your declares `struct tm'. */ #undef TM_IN_SYS_TIME /* Version number of package */ #undef VERSION /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ #if defined AC_APPLE_UNIVERSAL_BUILD # if defined __BIG_ENDIAN__ # define WORDS_BIGENDIAN 1 # endif #else # ifndef WORDS_BIGENDIAN # undef WORDS_BIGENDIAN # endif #endif /* Define to 1 if the X Window System is missing or not being used. */ #undef X_DISPLAY_MISSING /* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define to `__inline__' or `__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ #ifndef __cplusplus #undef inline #endif /* Define to `long int' if does not define. */ #undef off_t /* Define to `unsigned int' if does not define. */ #undef size_t ctsim-6.0.2/html/0000755000175000017500000000000013254524615012623 5ustar kevinkevinctsim-6.0.2/html/Makefile.am0000644000175000017500000000004710667176710014664 0ustar kevinkevinif USE_HTML html_DATA=@htmldata@ endif ctsim-6.0.2/html/Makefile.in0000644000175000017500000003464313254406202014671 0ustar kevinkevin# 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 = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = html ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/scripts/ax_check_compile_flag.m4 \ $(top_srcdir)/scripts/ax_ext.m4 \ $(top_srcdir)/scripts/ax_gcc_x86_avx_xgetbv.m4 \ $(top_srcdir)/scripts/ax_gcc_x86_cpuid.m4 \ $(top_srcdir)/scripts/ax_openmp.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = simulate.html CONFIG_CLEAN_VPATH_FILES = 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 = SOURCES = DIST_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; }; \ } am__installdirs = "$(DESTDIR)$(htmldir)" DATA = $(html_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/simulate.html.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPUEXT_FLAGS = @CPUEXT_FLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ 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@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIMD_FLAGS = @SIMD_FLAGS@ STRIP = @STRIP@ VERSION = @VERSION@ XMKMF = @XMKMF@ X_BASIC_LIBS = @X_BASIC_LIBS@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ X_TOOLKIT_LIBS = @X_TOOLKIT_LIBS@ 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 = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ cgibindir = @cgibindir@ cgibinurl = @cgibinurl@ cgiprograms = @cgiprograms@ ctlibs = @ctlibs@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldata = @htmldata@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lamdefs = @lamdefs@ lamdir = @lamdir@ lamprograms = @lamprograms@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mpienable = @mpienable@ my_includes = @my_includes@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ webdatadir = @webdatadir@ webdataurl = @webdataurl@ webenabled = @webenabled@ wx_cppflags = @wx_cppflags@ wxcflags = @wxcflags@ wxconfig = @wxconfig@ wxlibs = @wxlibs@ @USE_HTML_TRUE@html_DATA = @htmldata@ all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu html/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu html/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): simulate.html: $(top_builddir)/config.status $(srcdir)/simulate.html.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-htmlDATA: $(html_DATA) @$(NORMAL_INSTALL) @list='$(html_DATA)'; test -n "$(htmldir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \ $(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \ done uninstall-htmlDATA: @$(NORMAL_UNINSTALL) @list='$(html_DATA)'; test -n "$(htmldir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(htmldir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @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 check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(htmldir)"; 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: clean-generic: 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) 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-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-htmlDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: 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 Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-htmlDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-htmlDATA \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am \ uninstall-htmlDATA .PRECIOUS: Makefile # 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: ctsim-6.0.2/html/simulate.html.in0000644000175000017500000001117013254271532015736 0ustar kevinkevin CTSim's Online Computed Tomography Simulator

CTSim's Online Computed Tomography Simulator

Reasonable defaults have been filled into this form. For detailed explanations of the parameters on this form, please visit CTSim's online manual.

Select Image and Size

Phantom Name:
G.T. Herman
Shepp-Logan
Unit Pulse

Image Size:
Width:
Height:

View Ratio:

Number of Samples
per pixel:

Display Window:
Minimum:
Maximum:

Simulate X-Ray acquistion

Geometry:
Parallel
Equiangular
Equilinear

Number of Detectors:

Number of Rotations:

Focal Length:

Scan Ratio:

Number of Rays
(samples) per detector:

Rotation Angle
as a fraction of a cricle:

Image Reconstruction

Filter Method:
Convolution
Fourier
Fourier Table
FFT

Zeropad (applies to
Fourier & FFT):

Interpolation:
Nearest Neighbor
Linear
Cubic

Filter:
Bandlimit
Cosine
Hamming
Hanning
Sinc
Shepp-Logan

Hamming alpha factor (0.0-1.0):

Backprojection Method:
Trig
Trig Table
Difference
Difference (integer math)


After clicking the Simulate button, it will take a few seconds to a few minutes for your results to appear depending upon the simulation parameters that you have chosen.

ctsim-6.0.2/bootstrap.sh0000755000175000017500000000010313254263124014220 0ustar kevinkevinrm -f config.cache aclocal.m4 aclocal autoconf autoheader automake ctsim-6.0.2/man/0000755000175000017500000000000013254524615012432 5ustar kevinkevinctsim-6.0.2/man/pj2if.10000644000175000017500000000173410667176710013537 0ustar kevinkevin.\" -*- NROFF -*- .\" .TH "PJ2IF" "1" "" "Kevin Rosenberg" "Engineering" .SH "NAME" pj2if \- convert a projecttion file into an image (IF) file .SH "SYNOPSIS" .B pj2if in\-proj\-file out\-if\-file [OPTIONS] .SH "DESCRIPTION " \fIpj2if\fP converts \fIin\-proj\-file\fP, a file of projection data, into image (IF) file \fIout\-if\-file\fP, which can be further processed for viewing with \fIif2img\fP. .SH "OPTIONS" .TP .B \-\-verbose Verbose mode .TP .B \-\-dump Dump all scan data .TP .B \-\-version Print version .TP .B \-\-help Print a terse help message .SH "AUTHORS" Kevin Rosenberg, M.D. .SH "HISTORY" CTSim was begun in 1983 using MS\-DOS and an EGA display adapter. In 1999 it was ported to GNU/Linux and later ported to Microsoft Windows. .SH "SEE ALSO" .BR ctsim (1) .BR ctsimtext (1) .BR if1 (1) .BR if2 (1) .BR ifinfo (1) .BR linogram (1) .BR phm2helix (1) .BR phm2if (1) .BR phm2pj (1) .BR pjHinterp (1) .BR pjinfo (1) .BR pjrec (1) ctsim-6.0.2/man/linogram.10000644000175000017500000000152611234666551014332 0ustar kevinkevin.\" -*- NROFF -*- .\" .TH "linogram" "1" "" "Kevin Rosenberg" "Engineering" .SH "NAME" linogram \- Linogram gribddisplay for CTSIM .SH "SYNOPSIS" .B linogram [OPTIONS] .SH "DESCRIPTION" \fIlinogram\fP displays the grid used in linogram\-based scanning for the CTSim package. .SH "OPTIONS" \fIlinogram\fP accepts the following options .TP 12 .B \-\-version Display version .TP 12 .B \-\-help Print a terse help message .SH "AUTHORS" Kevin Rosenberg, M.D. .SH "HISTORY" CTSim was begun in 1983 using MS\-DOS and an EGA display adapter. In 1999 it was ported to GNU/Linux and later ported to Microsoft Windows. .SH "SEE ALSO" .BR ctsim (1) .BR ctsimtext (1) .BR if1 (1) .BR if2 (1) .BR ifinfo (1) .BR ifexport (1) .BR phm2helix (1) .BR phm2if (1) .BR phm2pj (1) .BR pj2if (1) .BR pjHinterp (1) .BR pjinfo (1) .BR pjrec (1) ctsim-6.0.2/man/ctsimtext.10000644000175000017500000000161011234667742014543 0ustar kevinkevin.\" -*- NROFF -*- .\" .TH "ctsimtext" "1" "" "Kevin Rosenberg" "Engineering" .SH "NAME" ctsimtext \- A Text\-Based Computed Tomography Simulator .SH "SYNOPSIS" .B ctsimtext [processing\-command processing\-options]] .SH "DESCRIPTION" \fIctsimtext\fP is a text user interface to the various components of the CTSim package. The home for CTSim is http://www.ctsim.org. .SH "OPTIONS" \fIctsimtext\fP accepts the following options .TP 12 .B \-\-version Display version .TP 12 .B \-\-help Print a terse help message .SH "AUTHORS" Kevin Rosenberg, M.D. .SH "HISTORY" CTSim was begun in 1983 using MS\-DOS and an EGA display adapter. In 1999 it was ported to GNU/Linux and later ported to Microsoft Windows. .SH "SEE ALSO" ctsim (1), if1 (1), if2 (1), ifexport (1), ifinfo (1), linogram (1), phm2helix (1), phm2if (1), phm2pj (1), pj2if (1), pjHinterp (1), pjinfo (1), pjrec (1) ctsim-6.0.2/man/Makefile.am0000644000175000017500000000024511243325266014464 0ustar kevinkevinman_MANS=pjrec.1 phm2pj.1 phm2if.1 ifexport.1 ifinfo.1 if1.1 if2.1 pjinfo.1 pj2if.1 ctsim.1 ctsimtext.1 phm2helix.1 pjHinterp.1 linogram.1 EXTRA_DIST = $(man_MANS) ctsim-6.0.2/man/phm2pj.10000644000175000017500000000445610667176710013731 0ustar kevinkevin.\" -*- NROFF -*- .\" .TH "phm2pj" "1" "" "Kevin Rosenberg" "Engineering" .SH "NAME" phm2pj \- calculate projections through a phantom object. .SH "SYNOPSIS" .B phm2pj outfile ndet nview [\-\-phantom phantom\-name] [\-\-phmfile filename] [OPTIONS] .SH "DESCRIPTION " \fIphm2pj\fP calculates projections through a phantom object, either a predefined \-\-phantom or a \-\-phmfile. .SH "OPTIONS" .TP 16 .B \-\-outfile Name of output file for projections .TP 16 .B \-\-ndet Number of detectors .TP 16 .B \-\-nview Number of rotated views .TP 16 .B \-\-phantom Predefined phantom to use for projection: can be one of .RS .TP 16 .B herman Herman head phantom .TP 16 .B herman\-b Herman head phantom (Bordered) .TP 16 .B shepp\-logan Shepp\-Logan head phantom .TP 16 .B shepp\-logan\-b Shepp\-Logan head phantom (Bordered) .TP 16 .B unitpulse Unit pulse phantom .RE .TP 16 .B \-\-phmfile \fIname\fP Get Phantom from phantom file .TP 16 .B \-\-desc Description of raysum .TP 16 .B \-\-nray Number of rays per detector (default = 1) .TP 16 .B \-\-rotangle Degrees to rotate view through (multiple of PI) (default = 1) .TP 16 .B \-\-geometry Geometry of scanning .RS .TP 16 .B parallel Parallel scan beams (default) .TP 16 .B equilinear Equilinear divergent scan beams .TP 16 .B equiangular Equiangular divergent scan beams .RE .TP 16 .B \-\-focal\-length Focal length ratio (ratio to radius of phantom) (default = 1) .TP 16 .B \-\-field\-of\-view Field of view (ratio to diameter of phantom square) (default = 1) .TP 16 .B \-\-trace Trace level to use, one of: .RS .TP .B none No tracing (default) .TP 16 .B console Trace text level .RE .TP 16 .B \-\-verbose Verbose mode .TP 16 .B \-\-debug Debug mode .TP 16 .B \-\-version Print version .TP 16 .B \-\-help Print a terse help message .SH "AUTHORS" Kevin Rosenberg, M.D. .SH "HISTORY" CTSim was begun in 1983 using MS\-DOS and an EGA display adapter. In 1999 it was ported to GNU/Linux and later ported to Microsoft Windows. .SH "SEE ALSO" .BR ctsim (1) .BR ctsimtext (1) .BR if1 (1) .BR if2 (1) .BR ifinfo (1) .BR linogram (1) .BR phm2helix (1) .BR phm2if (1) .BR pj2if (1) .BR pjHinterp (1) .BR pjinfo (1) .BR pjrec (1) ctsim-6.0.2/man/phm2helix.10000644000175000017500000000436510667176710014430 0ustar kevinkevin.\" -*- NROFF -*- .\" .TH "phm2helix" "1" "" "Kevin Rosenberg and Ian Kay" "Engineering" .SH "NAME" phm2helix \- calculate projections through a time varying phantom object. .SH "SYNOPSIS" .B phm2helix outfile ndet nview phmprog [OPTIONS] .SH "DESCRIPTION " \fIphm2pj\fP calculates projections through a time varying phantom object. .SH "OPTIONS" .TP 16 .B \-\-outfile Name of output file for projections .TP 16 .B \-\-ndet Number of detectors .TP 16 .B \-\-nview Number of rotated views .TP 16 .B \-\-phmfile Temporary phantom file name .RS .TP 16 .B herman Herman head phantom .TP 16 .B herman\-b Herman head phantom (Bordered) .TP 16 .B shepp\-logan Shepp\-Logan head phantom .TP 16 .B shepp\-logan\-b Shepp\-Logan head phantom (Bordered) .TP 16 .B unitpulse Unit pulse phantom .RE .TP 16 .B \-\-phmfile \fIname\fP Get Phantom from phantom file .TP 16 .B \-\-desc Description of raysum .TP 16 .B \-\-nray Number of rays per detector (default = 1) .TP 16 .B \-\-rotangle Degrees to rotate view through (multiple of PI) (default = 1) .TP 16 .B \-\-geometry Geometry of scanning .RS .TP 16 .B parallel Parallel scan beams (default) .TP 16 .B equilinear Equilinear divergent scan beams .TP 16 .B equiangular Equiangular divergent scan beams .RE .TP 16 .B \-\-focal\-length Focal length ratio (ratio to radius of phantom) (default = 1) .TP 16 .B \-\-field\-of\-view Field of view (ratio to diameter of phantom square) (default = 1) .TP 16 .B \-\-trace Trace level to use, one of: .RS .TP .B none No tracing (default) .TP 16 .B console Trace text level .RE .TP 16 .B \-\-verbose Verbose mode .TP 16 .B \-\-debug Debug mode .TP 16 .B \-\-version Print version .TP 16 .B \-\-help Print a terse help message .SH "AUTHORS" Ian Kay, Ph.D. Kevin Rosenberg, M.D. .SH "HISTORY" CTSim was begun in 1983 using MS\-DOS and an EGA display adapter. In 1999 it was ported to GNU/Linux and later ported to Microsoft Windows. .SH "SEE ALSO" .BR ctsim (1) .BR ctsimtext (1) .BR if1 (1) .BR if2 (1) .BR ifexport (1) .BR ifinfo (1) .BR linogram (1) .BR phm2if (1) .BR phm2pj (1) .BR pj2if (1) .BR pjHinterp (1) .BR pjinfo (1) .BR pjrec (1) ctsim-6.0.2/man/ctsim.10000644000175000017500000000152310667176710013640 0ustar kevinkevin.\" -*- nroff -*- .\" .\" Author: Kevin Rosenberg .\" .\" $Id: ctsim.1,v 1.4 2002/05/03 10:45:52 kevin Exp $ .Dd May 2, 2002 .Dt ctsim 1 .Os .Sh NAME .Nm ctsim .Nd A Graphical Computed Tomography Simulator .Sh SYNOPSIS .Nm ctsim files-to-open... [OPTIONS] .Sh DESCRIPTION .Pp .Nm is a graphical user interface to the various components of the CTSim package. The home for CTSim is http://www.ctsim.org. .Sh OPTIONS .Bl -tag -width Ds .It Fl Fl version Display version .It Fl Fl help Print a terse help message .El .Sh AUTHORS Kevin Rosenberg, M.D. .Sh HISTORY CTSim was begun in 1983 using MS-DOS and an EGA display adapter. In 1999 it was ported to GNU/Linux and later ported to Microsoft Windows. .Sh SEE ALSO ifinfo (1), if1 (1), if2 (1), ifexport (1), phm2pj (1), phm2if (1), pj2if (1), pjinfo (1), pjrec (1) ctsim-6.0.2/man/Makefile.in0000644000175000017500000003642313254406203014477 0ustar kevinkevin# 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 = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = man ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/scripts/ax_check_compile_flag.m4 \ $(top_srcdir)/scripts/ax_ext.m4 \ $(top_srcdir)/scripts/ax_gcc_x86_avx_xgetbv.m4 \ $(top_srcdir)/scripts/ax_gcc_x86_cpuid.m4 \ $(top_srcdir)/scripts/ax_openmp.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = 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 = SOURCES = DIST_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 am__installdirs = "$(DESTDIR)$(man1dir)" NROFF = nroff MANS = $(man_MANS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPUEXT_FLAGS = @CPUEXT_FLAGS@ CXX = @CXX@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ 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@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SIMD_FLAGS = @SIMD_FLAGS@ STRIP = @STRIP@ VERSION = @VERSION@ XMKMF = @XMKMF@ X_BASIC_LIBS = @X_BASIC_LIBS@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ X_TOOLKIT_LIBS = @X_TOOLKIT_LIBS@ 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 = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ cgibindir = @cgibindir@ cgibinurl = @cgibinurl@ cgiprograms = @cgiprograms@ ctlibs = @ctlibs@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldata = @htmldata@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ lamdefs = @lamdefs@ lamdir = @lamdir@ lamprograms = @lamprograms@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ mpienable = @mpienable@ my_includes = @my_includes@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ webdatadir = @webdatadir@ webdataurl = @webdataurl@ webenabled = @webenabled@ wx_cppflags = @wx_cppflags@ wxcflags = @wxcflags@ wxconfig = @wxconfig@ wxlibs = @wxlibs@ man_MANS = pjrec.1 phm2pj.1 phm2if.1 ifexport.1 ifinfo.1 if1.1 if2.1 pjinfo.1 pj2if.1 ctsim.1 ctsimtext.1 phm2helix.1 pjHinterp.1 linogram.1 EXTRA_DIST = $(man_MANS) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu man/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu man/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): 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) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @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 check-am: all-am check: check-am all-am: Makefile $(MANS) installdirs: for dir in "$(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: clean-generic: 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) 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-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic 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-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 Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-man uninstall-man: uninstall-man1 .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am 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-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am uninstall-man \ uninstall-man1 .PRECIOUS: Makefile # 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: ctsim-6.0.2/man/ctsim.texi0000644000175000017500000000316310667176710014453 0ustar kevinkevininput texinfo @c -*-texinfo-*- @c %**start of header @setfilename ctsim.info @settitle CTSim Manual @c %**end of header @setchapternewpage odd @ifinfo Reference Manual for CTSim Copyright (c) 2000 Kevin Rosenberg @end ifinfo @titlepage @sp 10 @comment The title is printed in a large font. @center @titlefont{CTSim Manual} @c The following two commands start the copyright page. @page @vskip 0pt plus 1filll Copyright @copyright{} 2000 Kevin Rosenberg @end titlepage @node Top, Computed Tomography Overview, (dir), (dir) @comment node-name, next, previous, up @menu * Computed Tomography Overview:: The first chapter * Algorithms:: Algorithms used by this program * Concept Index:: This index has two entries. @end menu @node Computed Tomography Overview, Algorithms, Top, Top @comment node-name, next, previous, up @chapter Computed Tomography Overview @cindex Overview @section Overview Computed Tomography is a process to reconstruction internal images of an object by taking projection data through that object. @cindex Another sample index entry Here is a numbered list. @enumerate @item This is the first item. @item This is the second item. @end enumerate The @code{makeinfo} and @code{texinfo-format-buffer} commands transform a Texinfo file such as this into an Info file; and @TeX{} typesets it for a printed manual. @node Algorithms , Concept Index , Computed Tomography Overview , Top @section Theory This is great. @node Concept Index, , Algorithms , Top @comment node-name, next, previous, up @unnumbered Concept Index @printindex cp @contents @bye ctsim-6.0.2/man/ifexport.10000644000175000017500000000264611235302546014356 0ustar kevinkevin.\" -*- nroff -*- .\" .\" ifexport.1 .\" .\" Author: Kevin Rosenberg .\" .\" $Id: ifexport.1,v 1.5 2002/05/03 10:28:17 kevin Exp $ .Dd April 19, 2000 .Dt IFEXPORT 1 .Os .Sh NAME .Nm ifexport .Nd IF (Image File) to Image .Sh SYNOPSIS .Nm ifexport iffile outfile [OPTIONS] .Sh DESCRIPTION .Pp .Nm converts an 2D IF file to a viewable image file. .Pp The options are as follows: .Bl -tag -width Ds .It Fl Fl format Ar format-name Choose output image format .It Fl Fl center Ar center-mode Choose center of window (default is mode) .It Fl Fl auto Ar auto-mode Set automatic window mode (default is full) .It Fl Fl scaling Ar multiple Set scaling factor for output image (default is 1) .It Fl Fl min Ar minimum Set minimum intensity of window (overrides \-\-auto) .It Fl Fl max Ar maximum Set maximum intensity of window (overrides \-\-auto) .It Fl Fl stats Print image statistics .It Fl Fl labels Print IF labels .It Fl Fl debug Set debug mode .It Fl Fl verbose Set verbose mode .It Fl Fl version Print version .It Fl Fl help Print terse help summary .El .Sh AUTHORS Kevin Rosenberg, M.D. .Sh HISTORY CTSim was begun in 1983 using MS-DOS and an EGA display adapter. In 1999 it was ported to GNU/Linux and later ported to Microsoft Windows. .Sh SEE ALSO ctsim (1), ctsimtext (1), if1 (1), if2 (1), ifinfo (1), linogram (1), phm2helix (1), phm2if (1), phm2pj (1), pj2if (1), pjHinterp (1), pjinfo (1), pjrec (1) ctsim-6.0.2/man/pjrec.10000644000175000017500000000604410667176710013627 0ustar kevinkevin.\" -*- NROFF -*- .\" .TH "pjrec" "1" "" "Kevin Rosenberg" "Engineering" .SH "NAME" pjrec \- reconstruction from projections .SH "SYNOPSIS" .B pjrec projection\-file image\-file nx\-image ny\-image [OPTIONS] .SH "DESCRIPTION" \fIpjrec\fP takes projection data from \fIraysum\-file\P and produces an (IF) image file \fIimage\-file\fP, of size \fInx\-image\fP by \fIny\-image\fP pixels, containing the reconstructed image. .SH "OPTIONS" \fIpjrec\fP accepts the following options, which control the reconstruction algorithm: .TP 12 .B \-\-interp Interpolation method during backprojection .RS .TP .B nearest Nearest neighbor interpolation .TP .B linear Linear interpolation .RE .TP 12 .B \-\-preinterpolate Preinterpolation factor (default = 1). Used only with frequency\-based filtering .TP 12 .B \-\-filter Filter name .RS .TP 15 .B abs_bandlimit Abs * Bandlimiting (default) .TP 15 .B abs_sinc Abs * Sinc .TP 15 .B abs_cosine Abs * Cosine .TP 15 .B abs_hamming Abs * Hamming .TP 15 .B shepp Shepp\-Logan .TP 15 .B bandlimit Bandlimiting .TP 15 .B sinc Sinc .TP 15 .B cosine Cosine .TP 15 .B triangle Triangle .TP 15 .B hamming Hamming .RE .TP 12 .B \-\-filter\-method Filter method before backprojections .RS .TP 15 .B convolution Spatial filtering (default) .TP 15 .B fourier Frequency filtering with discete fourier .TP 15 .B fourier_table Frequency filtering with table lookup fourier .TP 15 .B fft Fast Fourier Transform .RE .TP 12 .B \-\-zeropad n Set zeropad level (default = 0). set n to number of powers to two to pad .TP 12 .B \-\-filter\-generation Filter Generation mode .RS .TP 12 .B direct Use direct filter in spatial or frequency domain (default) .TP 12 .B inverse_fourier Use inverse fourier transform of inverse filter .RE .TP 12 .B \-\-backproj Backprojection Method .RS .TP .B trig Trigometric functions at every point .TP .B table Trigometric functions with precalculated table .TP .B diff Difference method .TP .B diff2 Optimized difference method (default) .TP .B idiff2 Optimized difference method with integer math .TP .B idiff3 Highly\-optimized difference method with integer math .RE .TP 12 .B \-\-filter\-param Alpha level for Hamming filter .TP 12 .B \-\-trace Set tracing to level: .RS .TP 12 .B none No tracing (default) .TP 12 .B console Text level tracing .RE .TP 12 .B \-\-verbose Turn on verbose mode .TP 12 .B \-\-debug Turn on debug mode .TP 12 .B \-\-version Print version .TP 12 .B \-\-help Print a terse help message .SH "AUTHORS" Kevin Rosenberg, M.D. .SH "HISTORY" CTSim was begun in 1983 using MS\-DOS and an EGA display adapter. In 1999 it was ported to GNU/Linux and later ported to Microsoft Windows. .SH "SEE ALSO" .BR ctsim (1) .BR ctsimtext (1) .BR if1 (1) .BR if2 (1) .BR ifinfo (1) .BR linogram (1) .BR phm2helix (1) .BR phm2if (1) .BR phm2pj (1) .BR pj2if (1) .BR pjHinterp (1) .BR pjinfo (1) ctsim-6.0.2/man/ifinfo.10000644000175000017500000000200610667176710013770 0ustar kevinkevin.\" -*- nroff -*- .\" .\" Author: Kevin Rosenberg .\" .\" $Id: ifinfo.1,v 1.4 2002/05/03 10:28:17 kevin Exp $ .Dd April 19, 2000 .Dt IFINFO 1 .Os .Sh NAME .Nm ifinfo .Nd Print IF (Image File) Information .Sh SYNOPSIS .Nm ifinfo iffile [OPTIONS] .Sh DESCRIPTION .Pp .Nm prints information about an IF file .Pp The options are as follows: .Bl -tag -width Ds .It Fl Fl labels Print history labels (default) .It Fl Fl stats Print image statistics (default) .It Fl Fl no-labels Do not print history labels .It Fl Fl no-stats Do not print image statistics .It Fl Fl debug Set debug mode .It Fl Fl verbose Set verbose mode .It Fl Fl version Print version .It Fl Fl help Print terse help summary .El .Sh AUTHORS Kevin Rosenberg, M.D. .Sh HISTORY CTSim was begun in 1983 using MS-DOS and an EGA display adapter. In 1999 it was ported to GNU/Linux and later ported to Microsoft Windows. .Sh SEE ALSO ctsim (1), if1 (1), if2 (1), ifexport (1), phm2pj (1), phm2if (1), pj2if (1), pjinfo (1), pjrec (1) ctsim-6.0.2/man/pjHinterp.10000644000175000017500000000224211244054213014444 0ustar kevinkevin.\" -*- NROFF -*- .\" .TH "pjHinterp" "1" "" "Kevin Rosenberg and Ian Kay" "Engineering" .SH "NAME" pjHinterp \- interpolate helical data in projection space. .SH "SYNOPSIS" .B pjHinterp projfile interpfile [OPTIONS] .SH "DESCRIPTION " \fIpjHinterp\fP interpolates the helical data in projfile and writes the results in interpfile. .SH "OPTIONS" .TP 16 .B \-\-field\-of\-view Field of view (ratio to diameter of phantom square) (default = 1) .TP 16 .B \-\-trace Trace level to use, one of: .RS .TP .B none No tracing (default) .TP 16 .B console Trace text level .RE .TP 16 .B \-\-verbose Verbose mode .TP 16 .B \-\-debug Debug mode .TP 16 .B \-\-version Print version .TP 16 .B \-\-help Print a terse help message .SH "AUTHORS" Ian Kay, Ph.D. Kevin Rosenberg, M.D. .SH "HISTORY" CTSim was begun in 1983 using MS\-DOS and an EGA display adapter. In 1999 it was ported to GNU/Linux and later ported to Microsoft Windows. .SH "SEE ALSO" .BR ctsim (1) .BR ctsimtext (1) .BR if1 (1) .BR if2 (1) .BR ifinfo (1) .BR linogram (1) .BR phm2helix (1) .BR phm2if (1) .BR phm2pj (1) .BR pj2if (1) .BR pjinfo (1) .BR pjrec (1) ctsim-6.0.2/man/if2.10000644000175000017500000000215710667176710013205 0ustar kevinkevin.\" -*- NROFF -*- .\" .TH "if2" "1" "" "Kevin Rosenberg" "Engineering" .SH "NAME" if2 \- binary operations between two image (IF) files. .SH "SYNOPSIS" .B if2 infile1 infile2 outfile [OPTIONS] .SH "DESCRIPTION " \fIif2\fP performs binary functions on two input IF image files. .SH "OPTIONS" \fIif2\fP accepts the following options: .TP 16 .B \-\-add Add infile1 and infile2. .TP 16 .B \-\-sub Subtract infile2 from infile1. .TP 16 .B \-\-mul Multiply images. .TP 16 .B \-\-comp Compare images. .TP 16 .B \-\-column\-plot \fIn\fP Plot column. .TP 16 .B \-\-row\-plot \fIn\fP Plot row. .TP 16 .B \-\-verbose Verbose mode. .TP 16 .B \-\-version Print version. .TP 16 .B \-\-help Print terse help summary .SH "AUTHORS" Kevin Rosenberg, M.D. .SH "HISTORY" CTSim was begun in 1983 using MS\-DOS and an EGA display adapter. In 1999 it was ported to GNU/Linux and later ported to Microsoft Windows. .SH "SEE ALSO" .BR ctsim (1) .BR ctsimtext (1) .BR if1 (1) .BR ifexport (1) .BR ifinfo (1) .BR linogram (1) .BR phm2helix (1) .BR phm2if (1) .BR phm2pj (1) .BR pj2if (1) .BR pjHinterp (1) .BR pjinfo (1) .BR pjrec (1) ctsim-6.0.2/man/if1.10000644000175000017500000000216610667176710013204 0ustar kevinkevin.\" -*- NROFF -*- .\" .\" if1.1 .\" .\" Author: Kevin Rosenberg .\" .\" $Id: if1.1,v 1.5 2002/05/03 10:45:52 kevin Exp $ .\" .TH "if1" "1" "" "Kevin M. Rosenberg" "Engineering" .SH "NAME" if1 \- Single IF (Image File) Transformation .SH "SYNOPSIS" .B if1 iffile outfile [OPTIONS] .SH "DESCRIPTION " \fIif1\fP transforms a single IF file. .SH "OPTIONS" \fIif1\fP accepts the following options: .TP 16 .B \-\-invert Inverts (negates) the image. .TP 16 .B \-\-log Natural logrithm of image. .TP 16 .B \-\-exp Natural exponential of image. .TP 16 .B \-\-debug Set debug mode. .TP 16 .B \-\-verbose Set verbose mode. .TP 16 .B \-\-version Print version. .TP 16 .B \-\-help Print terse help summary. .SH "AUTHORS" Kevin Rosenberg, M.D. .SH "HISTORY" CTSim was begun in 1983 using MS\-DOS and an EGA display adapter. In 1999 it was ported to GNU/Linux and later ported to Microsoft Windows. .SH "SEE ALSO" .BR ctsim (1) .BR ctsimtext (1) .BR if2 (1) .BR ifexport (1) .BR ifinfo (1) .BR linogram (1) .BR phm2helix (1) .BR phm2if (1) .BR phm2pj (1) .BR pj2if (1) .BR pjHinterp (1) .BR pjinfo (1) .BR pjrec (1) ctsim-6.0.2/man/phm2if.10000644000175000017500000000325211234667021013676 0ustar kevinkevin.\" -*- nroff -*- .\" .\" phm2if.1 .\" .\" Author: Kevin Rosenberg .\" .\" $Id: phm2if.1,v 1.5 2002/05/03 10:28:17 kevin Exp $ .\" .Dd April 19, 2000 .Dt PHM2IF 1 .Os .Sh NAME .Nm phm2if .Nd Generate Phantom (generate phantom for computed tomography simulator) .Sh SYNOPSIS .Nm phm2if outfile nx ny [--phantom phantom-name] [--picfile filename] [OPTIONS] .Sh DESCRIPTION .Nm generates phantom images for comparisons to reconstructions for CTsim. .Pp .Nm is configured to use a variety of options for phantom generation. .Pp The options are as follows: .Bl -tag -width Ds .It Fl Fl phantom Ar predefined-phantom-name Selects a predefined phantom name .It Fl Fl picfile Ar picfile Reads a picture file that defines a phantom .It Fl Fl filter Ar filter-name Generate a phantom image from a filter .It Fl Fl filter-param Ar x Set alpha level for Hamming filter .It Fl Fl filter-bw Ar bw Filter bandwidth (default is 1) .It Fl Fl filter-domain Ar domain Set domain to "spatial" or "freq" .It Fl Fl nsample Ar n Use n samples per X & Y direction for each pixel .It Fl Fl trace Ar level Set trace level (default is none) .It Fl Fl desc Ar description Save description in image file .It Fl Fl verbose Turn on verbose mode .It Fl Fl debug Turn on debug mode .It Fl Fl version Print version .It Fl Fl help Print terse help summary .El .Sh AUTHORS Kevin Rosenberg, M.D. .Sh HISTORY CTSim was begun in 1983 using MS-DOS and an EGA display adapter. In 1999 it was ported to GNU/Linux and later ported to Microsoft Windows. .Sh SEE ALSO ctsim (1), ctsimtext (1), if1 (1), if2 (1), ifinfo (1), linogram (1), phm2helix (1), phm2pj (1), pj2if (1), pjHinterp (1), pjinfo (1), pjrec (1) ctsim-6.0.2/man/pjinfo.10000644000175000017500000000141610667176710014007 0ustar kevinkevin.\" -*- NROFF -*- .\" .TH "pjinfo" "1" "" "Kevin Rosenberg" "Engineering" .SH "NAME" pjinfo \- projection file information .SH "SYNOPSIS" .B pjinfo proj\-file [OPTIONS] .SH "DESCRIPTION" Displays information about a projection file. .SH "OPTIONS" .TP .B \-\-dump Dump all scan data .TP .B \-\-version Print version .TP .B \-\-help Print a terse help message .SH "AUTHORS" Kevin Rosenberg, M.D. .SH "HISTORY" CTSim was begun in 1983 using MS\-DOS and an EGA display adapter. In 1999 it was ported to GNU/Linux and later ported to Microsoft Windows. .SH "SEE ALSO" .BR ctsim (1) .BR ctsimtext (1) .BR if1 (1) .BR if2 (1) .BR ifinfo (1) .BR linogram (1) .BR phm2helix (1) .BR phm2if (1) .BR phm2pj (1) .BR pj2if (1) .BR pjHinterp (1) .BR pjrec (1) ctsim-6.0.2/rpm/0000755000175000017500000000000010667176710012461 5ustar kevinkevinctsim-6.0.2/rpm/ctsim.spec0000644000175000017500000000231510667176710014455 0ustar kevinkevin# Version of CTSim %define version 3.5.0 Summary: CTSim - Open-Source Computed Tomography Simulator Name: ctsim Version: %{version} Release: 1 Packager: Kevin Rosenberg Source: ftp.ctsim.org:/pub/ctsim/ctsim-%{version}.tar.gz Copyright: GPL Group: Applications/Scientific %description CTSim is a Computed Tomography Simulator. %prep %setup %build CFLAGS="$RPM_OPT_FLAGS" \ ./configure --prefix=/usr --enable-static --without-lam make %install strip src/ctsim strip tools/ctsimtext install -s -m 755 -o 0 -g 0 src/ctsim /usr/bin/ctsim install -s -m 755 -o 0 -g 0 tools/ctsimtext /usr/bin/ctsimtext install -m 755 -o 0 -g 0 tools/sample-ctsim.sh /usr/bin/sample-ctsim.sh mkdir -p /usr/share/ctsim install -m 755 -o 0 -g 0 doc/ctsim.htb /usr/share/ctsim/ctsim.htb ln -sf ctsimtext /usr/bin/if1 ln -sf ctsimtext /usr/bin/if2 ln -sf ctsimtext /usr/bin/ifexport ln -sf ctsimtext /usr/bin/ifinfo ln -sf ctsimtext /usr/bin/phm2if ln -sf ctsimtext /usr/bin/phm2pj ln -sf ctsimtext /usr/bin/pj2if ln -sf ctsimtext /usr/bin/pjinfo ln -sf ctsimtext /usr/bin/pjrec %files %doc NEWS README COPYING ChangeLog INSTALL /usr/bin/ctsim /usr/bin/ctsimtext /usr/share/ctsim/ctsim.htb /usr/share/ctsim/sample-ctsim.sh ctsim-6.0.2/README0000644000175000017500000000567010667176710012553 0ustar kevinkevinOVERVIEW ======== CTSim simulates the process of collecting tomographic X-ray data of phantom objects. These X-ray data through the objects are called projections. CTSim reconstructs the original phantom image from the projections using a variety of algorithms. CTSim is open-source and is covered by the GNU Public License (GPL). Please enjoy CTSim. I'd like to hear any feedback Kevin M. Rosenberg, M.D. kevin@rosenberg.net HISTORY ======= CTSim development began in 1983 while I was in medical school. It was written using Lattice C and MS-DOS. I used 8086 assembly language to code convolution and backprojection routes and also to write graphics directly to an IBM EGA video adapter. In 1999, I ported CTsim to GNU/Linux. In April 2000, the source code for CTSim was published on the Internet. In June 2000, entire code for revised and converted to C++. WHERE ===== The official home for CTsim is http://www.ctsim.org. FEATURES ======== Several standard phantom objects are built-in. Other phantoms can be loaded from ASCII files. CTsim uses cross-platform compatible file formats for projection data and image data. THE PROGRAMS ============ ctsim - a graphical user interface for most functions. This programs has all of the functionality of the command line tools except for image comparison functions. phm2if - generates an image file of a phantom object phm2pj - Simulates the collection of CT data, or projections, of a phantom object pjrec - Performs an CT reconstruction, also known as image reconstruction from projections. Reads a projection file and writes a SDF file. pj2if - Converts projection data to a raw sinugram image pjinfo - Show information on a projection file ifexport - Converts an image file to a variety of 8-bit and 16-bit image formats if1 - Performs operations on a single image file if2 - Performs operations on two image files, such as comparisons ifinfo - Show statistics and history labels of image files TYPICAL USAGE ============= Graphical User Interface ------------------------ Use ctsim. Command Line Interface ---------------------- When evaluating CT simulation, in general, these steps are followed: Create a phantom image and viewable image file phm2if ... ifexport ... Simulate CT data collection and create a viewable image of raw projections phm2pj ... pj2if ... ifexport ... Perform CT reconstruction and create viewable image file pjrec ... ifexport ... Display image information and comparative statistics ifinfo ... There is a sample shell script installed called 'sample-ctsim.sh' in the tools direction that performs the above commands. These functions can be invoked via a web interface with a CGI program as described in the INSTALL file. COPYRIGHT ========= This program is written by Kevin M. Rosenberg, M.D. It is covered by the GNU General Public License (GPL) which allows copying and modifying this code with restrictions. See the file COPYING for complete details.